0100 ; DISASSEMBLY OF COMPILED›0110 ; ACTION! SCREEN-FILL›0120 ; BENCHMARK (LISTING 7)›0130 ; -----------------------›0140 ;›0150 ; DEFINE ADDRESS CONSTANTS›0160 ; ------------------------›0170 RTCLOK = 20›0180 SAVMSCL = 88›0190 SAVMSCH = 89›0200 ;›0210 ; GLOBAL VARIABLE STORAGE›0220 ; -----------------------›0230 *= ORIGIN›0240 I *= *+1 ; reserve 1 byte for›0250 J *= *+1 ; each BYTE variable,›0260 TIME *= *+1›0270 SCREEN *= *+2 ; 2 bytes for CARDs›0280 ;›0290 ; PROC BENCH()›0300 ; ------------›0310 JMP START›0320 ;›0330 ; If our procedure used local variables,›0340 ; they would have been stored here.›0350 ; That's why the above JMP is included.›0360 ;›0370 ; GRAPHICS(24)›0380 ; ------------›0390 START›0400 LDA #24›0410 JSR GRAPHICS›0420 ;›0430 ; RTCLOK=0›0440 ; --------›0450 LDY #0›0460 STY RTCLOK›0470 ;›0480 ; SCREEN=SAVMSCL+256*SAVMSCH›0490 ; --------------------------›0500 LDA #0›0510 STA TEMP1+1›0520 LDA SAVMSCH ; move SAVMSCH into›0530 STA TEMP1 ; TEMP1›0540 LDA # >256 ; msb of multiplier›0550 TAX ›0560 LDA # <256 ; lsb›0570 JSR MULTIPLY›0580 STA TEMP4›0590 TXA ; save (256*SAVMSCH)›0600 STA TEMP4+1 ; into TEMP4›0610 ;›0620 CLC ›0630 LDA SAVMSCL ; add SAVMSCL to›0640 ADC TEMP4 ; (256*SAVMSCH) and›0650 STA SCREEN ; store in SCREEN›0660 LDA #0›0670 ADC TEMP4+1›0680 STA SCREEN+1›0690 ;›0700 ; FOR I=0 TO 31 DO›0710 ; ----------------›0720 LDY #0›0730 STY I ; init I-loop›0740 ILOOP›0750 LDA #31›0760 CMP I ; reached limit yet?›0770 BCS JINIT ; no - do another J-loop›0780 JMP GETIME ; else get timing›0790 ;›0800 ; FOR J=0 TO 239 DO›0810 ; -----------------›0820 JINIT›0830 LDY #0›0840 STY J ; init J-loop›0850 JLOOP›0860 LDA #239›0870 CMP J ; reached limit yet?›0880 BCS DOPOKE ; no - poke another byte›0890 JMP ADD240 ; else update screen›0900 ;›0910 ; POKE(SCREEN+J,255)›0920 ; ------------------›0930 DOPOKE›0940 CLC ›0950 LDA SCREEN ; add SCREEN to›0960 ADC J ; J, and›0970 STA TEMP2 ; save in TEMP2›0980 LDA SCREEN+1›0990 ADC #0›1000 STA TEMP2+1›1010 ;›1020 LDY #255›1030 LDX TEMP2+1›1040 LDA TEMP2 ; poke (SCREEN+J) with›1050 JSR POKE ; a 255›1060 ;›1070 ; OD (for J loop)›1080 ; ---------------›1090 INC J›1100 JMP JLOOP›1110 ;›1120 ; SCREEN==+240›1130 ; ------------›1140 ADD240›1150 CLC ›1160 LDA SCREEN ; add SCREEN and›1170 ADC #240 ; 240; store result›1180 STA SCREEN ; in SCREEN›1190 LDA SCREEN+1›1200 ADC #0›1210 STA SCREEN+1›1220 ;›1230 ; OD (for I loop)›1240 ; ---------------›1250 INC I›1260 JMP ILOOP›1270 ;›1280 ; TIME=RTCLOK›1290 ; -----------›1300 GETIME›1310 LDA RTCLOK›1320 STA TIME›1330 ;›1340 ; GRAPHICS(0)›1350 ; -----------›1360 LDA #0›1370 JSR GRAPHICS›1380 ;›1390 ; PRINTF("%E %U JIFFIES",TIME)›1400 ; ----------------------------›1410 JMP OVER ; skip over in-line string›1420 STRING›1430 .BYTE 13 ; length of string›1440 .BYTE "%E %U JIFFIES"›1450 OVER›1460 LDA #0 ; msb of TIME›1470 STA TEMP3 ; into TEMP3›1480 LDY TIME ; lsb into Y›1490 LDX # >STRING ; msb of string addr›1500 LDA #