10
20
30 DIM ctrl% 31,data% 3:X%=ctrl%:Y%=X% DIV 256
40 tot=0
50 PROC_L
60 PRINT"Number of instructions: ";tot
70 END
80 DEFPROC_L:A%=190
90 INPUT"Intersperce index regs? "I$:IF LEFT$(I$,1)<>"Y" I$="N" ELSE I$="Y"
100 ADDR=&8000
110 FOR A=0 TO 255
120 !data%=&12345600+A:PROC_P
130 IF I$="Y" !data%=&123400DD+A*256:PROC_P:!data%=&123400FD+A*256:PROC_P
140 NEXT A
150 FOR A=0 TO 255
160 !data%=&123400CB+A*256:PROC_P
170 IF I$="Y" !data%=&0034CBDD:data%?3=A:PROC_P:!data%=&0034CBFD:data%?3=A:PROC_P
180 NEXT A
190 FOR A=0 TO 255
200 !data%=&123400ED+A*256:PROC_P
210 NEXT A
220 IF I$="Y" ENDPROC
230 FOR A=0 TO 255
240 !data%=&123400DD+A*256:PROC_P
250 !data%=&123400FD+A*256:PROC_P
260 NEXT
270 FOR A=0 TO 255
280 !data%=&0034CBDD:data%?3=A:PROC_P:!data%=&0034CBFD:data%?3=A:PROC_P
290 NEXT A
300 ENDPROC
310 DEFPROC_P
320 !X%=&502010:X%!4=ADDR:X%!8=!data%
330 CALL &FFF1:IF(X%?2AND128):ENDPROC
340 PRINT;~ADDR;" ";:FORz%=0TOX%?3-1
350 PRINT" ";FNh0(data%?z%,2);
360 NEXT
370 PRINTTAB(19);$(X%+4)
380 IF(X%?2AND64):PRINT
390 ADDR=ADDR+X%?3:tot=tot+1
400 ENDPROC
410 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%)