Amstrad CPC’ ler 8 bit olan Z80 mikroişlemcisi ile çalışmaktadır. Z80 nin keni içinde donanımsal çarpma işlemi yapan birime sahip değildir. Z80 8 biraz zorlarsak 16 bit toplama çıkarma 8 bit sağa sola kaydırma işlemleri yapabilmektedir. Tüm çarpma bölme algoritması yazılımsal olarak gerçekleştirilmektedir. Amstradların kendi ROM’ undaki ve Locomotif basic’ in kullandığı çarpa işlemininde sınırları vardır. Belli büyüklükte sayıların çarpımını artık tam sayı olarak değilde üstel olarak vermektedir. Amstrad ile çok büyük sayıların çarpımı yapacak BASiC dilinde yazılmış bir program buldum ve az bir düzenlmeyle Amtradlarda çalışır hale getirdim.
Aşağıda BASiC programı gerçek bir Amtsrad’ da veya herhangi bir Amstrad emülatörde deneyebilirsiniz.
100 REM DEFDBL A-H 110 REM 120 DIM A(1,31),B(63):H=100000000 130 CLS: 131 FOR I=0 TO 1:M=N:INPUT"* ";P$ 132 L=LEN(P$):N= INT(L/8):A(I,N)=VAL(LEFT$(P$,(L MOD 8))) 140 FOR J=1 TO N:A(I,J-1)=VAL(MID$(P$,L-8*J+1,8)): NEXT J:NEXT I 150 FOR I=0 TO M:E=A(0,I):FOR J=I TO I+N:F=B(J)+E* A(1,J-I) 160 G=INT(F/H):B(J+1)=B(J+1)+G:B(J)=F-G*H:NEXT J:NEXT I 180 PRINT:PRINT:L=M+N+(G=0):PRINT USING"**######";B(L+1);:FOR I=0 TO L 200 PRINT SPC(-((I MOD 9)<8));RIGHT$(STR$(B(L-I)+H ),8);:NEXT I:END

