|
| 1 | +10 ' MEMCOPY TEST - SEQUENTIAL NUMBERS |
| 2 | +20 ' Pre-allocate all variables |
| 3 | +30 MEMCOPY=0: SRC%=0: DST%=0: CNT%=0 |
| 4 | +40 N%=0: I%=0: OK%=0 |
| 5 | +50 ' |
| 6 | +60 DIM BIG%(49) |
| 7 | +70 DIM SML%(9) |
| 8 | +80 DIM MC%(19) |
| 9 | +90 ' |
| 10 | +100 ' Install ASM memcopy from DATA |
| 11 | +110 DEF SEG |
| 12 | +120 RESTORE 1000 |
| 13 | +130 FOR I% = 0 TO 36 |
| 14 | +140 READ B%: POKE VARPTR(MC%(0)) + I%, B% |
| 15 | +150 NEXT |
| 16 | +160 MEMCOPY = VARPTR(MC%(0)) |
| 17 | +170 ' |
| 18 | +180 ' Fill BIG% with 0 to 49 |
| 19 | +190 FOR I% = 0 TO 49: BIG%(I%) = I%: NEXT |
| 20 | +200 ' |
| 21 | +210 ' Copy 5 chunks of 10 integers each |
| 22 | +220 CNT% = 20 |
| 23 | +230 FOR N% = 0 TO 4 |
| 24 | +240 SRC% = VARPTR(BIG%(0)) + N% * 20 |
| 25 | +250 DST% = VARPTR(SML%(0)) |
| 26 | +260 CALL MEMCOPY(SRC%, DST%, CNT%) |
| 27 | +270 PRINT "Chunk";N%;": "; |
| 28 | +280 OK% = -1 |
| 29 | +290 FOR I% = 0 TO 9 |
| 30 | +300 PRINT SML%(I%); |
| 31 | +310 IF SML%(I%) <> N% * 10 + I% THEN OK% = 0 |
| 32 | +320 NEXT |
| 33 | +330 IF OK% THEN PRINT " OK" ELSE PRINT " FAIL" |
| 34 | +340 NEXT |
| 35 | +350 END |
| 36 | +1000 DATA &H55,&H8B,&HEC,&H56,&H57,&H8B,&H5E,&H0A,&H8B,&H37 |
| 37 | +1010 DATA &H8B,&H5E,&H08,&H8B,&H3F,&H8B,&H5E,&H06,&H8B,&H0F |
| 38 | +1020 DATA &H1E,&H07,&HFC,&HD1,&HE9,&HF3,&HA5,&H13,&HC9,&HF3 |
| 39 | +1030 DATA &HA4,&H5F,&H5E,&H5D,&HCA,&H06,&H00 |
0 commit comments