10 REM Disassembly test program 2
   20 REM By J.G.Harston
   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%)