10 REM--------------------------------------------------------------- 21 REM UNIT TEST FOR KERNAL API: 32 REM MEMORY_FILL 43 REM MEMORY_COPY 54 REM MEMORY_CRC 65 REM MEMORY_DECOMPRESS 76 REM--------------------------------------------------------------- 87 REM (C)2019 Michael Steil, License: 2-clause BSD 9 1010 REM INITIALIZE $8000-$8FFF WITH 0 1120 POKE2,$00:POKE3,$80:POKE4,$00:POKE5,$10:POKE780,0:SYS$FEE4 12 13100 REM *** 1: FILL $8001-$8100 (FULL PAGE) 14110 POKE2,$01:POKE3,$80:POKE4,$00:POKE5,$01:POKE780,1:SYS$FEE4 15120 FORI=$8001TO$8100:IFPEEK(I)<>1THENPRINT"FAIL 1A AT";I:END 16130 NEXT 17140 IFPEEK($8000)ORPEEK($8101)THENPRINT"FAIL 1B":END 18 19200 REM *** 2: FILL $81F0-$827F (PARTIAL PAGE) 20210 POKE2,$F0:POKE3,$81:POKE4,$90:POKE5,$00:POKE780,2:SYS$FEE4 21220 FORI=$81F0TO$827F:IFPEEK(I)<>2THENPRINT"FAIL 2A AT";I:END 22230 NEXT 23240 IFPEEK($81EF)ORPEEK($8280)THENPRINT"FAIL 2B":END 24 25300 REM *** 3: FILL $82F0-$840F (FULL AND PARTIAL PAGE) 26310 POKE2,$F0:POKE3,$82:POKE4,$20:POKE5,$01:POKE780,3:SYS$FEE4 27320 FORI=$82F0TO$840F:IFPEEK(I)<>3THENPRINT"FAIL 3A AT";I:END 28330 NEXT 29340 IFPEEK($82EF)ORPEEK($8410)THENPRINT"FAIL 3B":END 30 31400 REM *** CRC16 OF $8500-$85D9 32410 FORI=0TO217:READA:POKE$8500+I,A:NEXT : REM UNCOMPRESSED DATA 33420 POKE2,$00:POKE3,$85:POKE4,$DA:POKE5,$00:SYS$FEEA 34430 IFPEEK(6)<>$BBORPEEK(7)<>$E1THENPRINT"FAIL 4":END 35 36500 REM *** 5: DECOMPRESS $8600-$86B3 TO $8700 37510 FORI=0TO179:READA:POKE$8600+I,A:NEXT : REM COMPRESSED DATA 38520 POKE2,$00:POKE3,$86:POKE4,0:POKE5,$87:SYS$FEED 39530 FORI=0TO217:IFPEEK($8500+I)<>PEEK($8700+I)THENPRINT"FAIL 5":END 40540 NEXT 41 42600 REM *** 6: COPY NON-OVERLAPPING 43605 REM REFERENCE DATA 44610 POKE2,$00:POKE3,$C0:POKE4,$00:POKE5,$90:POKE6,$00:POKE7,$08:SYS$FEE7 45615 REM COPY 46620 POKE2,$C0:POKE3,$90:POKE4,$00:POKE5,$98:POKE6,$10:POKE7,$01:SYS$FEE7 47630 FORI=0TO$10F:IFPEEK($90C0+I)<>PEEK($9800+I)THENPRINT"FAIL 6 AT";I:END 48640 NEXT 49 50700 REM *** 7: COPY OVERLAPPING (UP) 51705 REM REFERENCE DATA 52710 POKE2,$00:POKE3,$C0:POKE4,$00:POKE5,$90:POKE6,$00:POKE7,$08:SYS$FEE7 53715 REM COPY OF REFERENCE DATA 54720 POKE2,$00:POKE3,$90:POKE4,$00:POKE5,$98:POKE6,$00:POKE7,$07:SYS$FEE7 55725 REM OVERLAPPING COPY 56730 POKE2,$C0:POKE3,$98:POKE4,$B0:POKE5,$98:POKE6,$40:POKE7,$01:SYS$FEE7 57740 FORI=0TO$13F:IFPEEK($90C0+I)<>PEEK($98B0+I)THENPRINT"FAIL 7 AT";I:END 58750 NEXT 59 60700 REM *** 7: COPY OVERLAPPING (DOWN) 61705 REM REFERENCE DATA 62710 POKE2,$00:POKE3,$C0:POKE4,$00:POKE5,$90:POKE6,$00:POKE7,$08:SYS$FEE7 63715 REM COPY OF REFERENCE DATA 64720 POKE2,$00:POKE3,$90:POKE4,$00:POKE5,$98:POKE6,$00:POKE7,$07:SYS$FEE7 65725 REM OVERLAPPING COPY 66730 POKE2,$B0:POKE3,$98:POKE4,$C0:POKE5,$98:POKE6,$40:POKE7,$01:SYS$FEE7 67740 FORI=0TO$13F:IFPEEK($90B0+I)<>PEEK($98C0+I)THENPRINT"FAIL 8 AT";I:END 68750 NEXT 69 70800 PRINT"PASS" 71 7210000 REM UNCOMPRESSED DATA 7310010 DATA$54,$68,$65,$20,$43,$6F,$6D,$6D,$6F,$64,$6F,$72,$65,$20,$36,$34 7410020 DATA$2C,$20,$61,$6C,$73,$6F,$20,$6B,$6E,$6F,$77,$6E,$20,$61,$73,$20 7510030 DATA$74,$68,$65,$20,$43,$36,$34,$20,$6F,$72,$20,$74,$68,$65,$20,$43 7610040 DATA$42,$4D,$20,$36,$34,$2C,$20,$69,$73,$20,$61,$6E,$20,$38,$2D,$62 7710050 DATA$69,$74,$20,$68,$6F,$6D,$65,$20,$63,$6F,$6D,$70,$75,$74,$65,$72 7810060 DATA$20,$69,$6E,$74,$72,$6F,$64,$75,$63,$65,$64,$20,$69,$6E,$20,$4A 7910070 DATA$61,$6E,$75,$61,$72,$79,$20,$31,$39,$38,$32,$20,$62,$79,$20,$43 8010080 DATA$6F,$6D,$6D,$6F,$64,$6F,$72,$65,$20,$49,$6E,$74,$65,$72,$6E,$61 8110090 DATA$74,$69,$6F,$6E,$61,$6C,$20,$28,$66,$69,$72,$73,$74,$20,$73,$68 8210100 DATA$6F,$77,$6E,$20,$61,$74,$20,$74,$68,$65,$20,$43,$6F,$6E,$73,$75 8310110 DATA$6D,$65,$72,$20,$45,$6C,$65,$63,$74,$72,$6F,$6E,$69,$63,$73,$20 8410120 DATA$53,$68,$6F,$77,$2C,$20,$69,$6E,$20,$4C,$61,$73,$20,$56,$65,$67 8510130 DATA$61,$73,$2C,$20,$4A,$61,$6E,$75,$61,$72,$79,$20,$37,$E2,$80,$93 8610140 DATA$31,$30,$2C,$20,$31,$39,$38,$32,$29,$2E 87 8811000 REM COMPRESSED DATA 8911010 DATA$38,$9B,$54,$68,$65,$20,$43,$6F,$6D,$6D,$6F,$64,$6F,$72,$18,$BA 9011020 DATA$36,$34,$2C,$20,$61,$6C,$73,$6F,$20,$6B,$6E,$6F,$77,$6E,$3A,$00 9111030 DATA$73,$20,$74,$00,$41,$28,$20,$04,$A1,$53,$42,$4D,$DB,$10,$69,$73 9211040 DATA$20,$06,$58,$38,$2D,$62,$69,$74,$20,$68,$6F,$6D,$BC,$E8,$63,$19 9311050 DATA$DA,$70,$75,$74,$65,$72,$20,$69,$6E,$74,$72,$6F,$64,$75,$63,$65 9411060 DATA$64,$5F,$D2,$20,$4A,$61,$6E,$75,$61,$72,$79,$20,$31,$39,$38,$32 9511070 DATA$20,$62,$79,$95,$51,$49,$6E,$D2,$58,$B3,$6E,$61,$74,$69,$6F,$6E 9611080 DATA$61,$6C,$20,$28,$66,$69,$72,$73,$B5,$53,$73,$68,$89,$EC,$74,$20 9711090 DATA$59,$01,$73,$75,$6D,$AD,$59,$45,$6C,$65,$63,$AB,$59,$30,$6E,$69 9811100 DATA$63,$73,$20,$53,$DE,$4A,$2C,$A6,$49,$4C,$63,$38,$56,$65,$67,$D0 9911110 DATA$4F,$2C,$9B,$5B,$40,$37,$E2,$80,$93,$31,$30,$2C,$93,$5F,$29,$2E 10011120 DATA$0A,$00,$F0,$E8 101 102RUN 103