10 CLEAR 3000
20 WIDTH "COM0:",255
30 DEFINT A-E,Z
40 DIM A$(255),B$(15),C$(111):DIM A%(255)
50 FORZ=0TO255:READ A$(Z):NEXT
60 FORZ=0TO255:READ A%(Z):NEXT
99 '
100 D0$=CHR$(27)+"L0"+CHR$(0)+""
105 D1$=CHR$(27)+"L"+CHR$(12)+CHR$(0)+STRING$(6,8)+">>"+CHR$(28)+CHR$(28)+CHR$(8)+CHR$(8)
110 D2$=CHR$(27)+"L"+CHR$(12)+CHR$(0)+CHR$(8)+CHR$(8)+CHR$(28)+CHR$(28)+">>"+STRING$(6,8)
115 D3$=CHR$(27)+"L"+CHR$(6)+CHR$(0)+" `` "+CHR$(0)
120 D4$=CHR$(27)+"L"+CHR$(6)+CHR$(0)+CHR$(4)+CHR$(6)+""+CHR$(6)+CHR$(4)+CHR$(0)
125 D5$=CHR$(27)+"L"+CHR$(12)+CHR$(0)+"|DDDDD__NNDD"
130 D6$=CHR$(27)+"L"+CHR$(12)+CHR$(0)+"$.?$$$$$$"+CHR$(252)+"t$"
135 D7$=CHR$(27)+"L"+CHR$(6)+CHR$(0)+CHR$(0)+CHR$(0)+CHR$(24)+CHR$(24)+CHR$(0)+CHR$(0)
140 D8$=CHR$(27)+"L"+CHR$(6)+CHR$(0)+CHR$(28)+CHR$(34)+"*"+CHR$(34)+CHR$(28)+CHR$(0)
145 D9$=CHR$(27)+"L"+CHR$(6)+CHR$(0)+CHR$(28)+"*>*"+CHR$(28)+CHR$(0)
150 E$=CHR$(27)+"L"+CHR$(6)+CHR$(0)+"%RzR%"+CHR$(0)
200 C$(0)="":C$(1)="No Operation":C$(2)="":C$(3)=""
202 C$(4)="0"+D1$+D0$+D0$+D1$+"C":C$(5)="C"+D2$+D0$+D0$+D2$+"0":C$(6)="CCR"+D2$+"A":C$(7)="A"+D2$+"CCR"
204 C$(8)="IX"+D2$+"IX+1":C$(9)="IX"+D2$+"IX-1":C$(10)="V"+D2$+"0":C$(11)="V"+D2$+"1"
206 C$(12)="C"+D2$+"0":C$(13)="C"+D2$+"1":C$(14)="I"+D2$+"0":C$(15)="I"+D2$+"1"
208 C$(16)="A"+D2$+"A-B":C$(17)="A-B":C$(18)="":C$(19)=""
210 C$(20)="":C$(21)="":C$(22)="B"+D2$+"A":C$(23)="A"+D2$+"B"
212 C$(24)="A:B"+D6$+"IX":C$(25)="Decimal Adjust Accumulator A":C$(26)="Sleep":C$(27)="A"+D2$+"A+B"
214 C$(28)="":C$(29)="":C$(30)="":C$(31)=""
216 C$(32)="":C$(33)="":C$(34)="C"+D8$+"Z=0":C$(35)="C"+D8$+"Z=1"
218 C$(36)="C=0":C$(37)="C=1":C$(38)="Z=0":C$(39)="Z=1"
220 C$(40)="V=0":C$(41)="V=1":C$(42)="N=0":C$(43)="N=1"
222 C$(44)="N"+D9$+"V=0":C$(45)="N"+D9$+"V=1":C$(46)="Z"+D8$+"(N"+D9$+"V)=0":C$(47)="Z"+D8$+"(N"+D9$+"V)=1"
224 C$(48)="IX"+D2$+"SP+1":C$(49)="SP"+D2$+"SP+1":C$(50)="SP"+D2$+"SP+1;"+D3$+"A":C$(51)="SP"+D2$+"SP+1;"+D3$+"B"
226 C$(52)="SP"+D2$+"SP-1":C$(53)="SP"+D2$+"IX-1":C$(54)=D4$+"A;SP"+D2$+"SP-1":C$(55)=D4$+"B;SP"+D2$+"SP-1"
228 C$(56)="SP"+D2$+"SP-2;"+D3$+"IX":C$(57)="Return from Subroutine":C$(58)="IX"+D2$+"IX+B":C$(59)="Return from Interrupt"
230 C$(60)=D4$+"IX;SP"+D2$+"SP-2":C$(61)="A:B"+D2$+"A*B":C$(62)="Wait for Interrupt":C$(63)="Software Interrupt"
232 C$(64)="M"+D2$+"00-M":C$(65)="M"+D2$+"IM"+D7$+"M":C$(66)="M"+D2$+"IM"+D8$+"M":C$(67)="M"+D2$+"FF-M"
234 C$(68)="0"+D1$+D0$+D1$+"C":C$(69)="M"+D2$+"IM"+D9$+"M":C$(70)="C"+D1$+D0$+D1$+"C":C$(71)=D5$+D0$+D1$+"C"
236 C$(72)="C"+D2$+D0$+D2$+"0":C$(73)="C"+D2$+D0$+D2$+"C":C$(74)="M"+D2$+"M-1":C$(75)="IM"+D7$+"M"
238 C$(76)="M"+D2$+"M+1":C$(77)="M-00":C$(78)="Jump"+D1$+"address":C$(79)="M"+D2$+"00"
240 C$(80)="A"+D2$+"A-M":C$(81)="A-M":C$(82)="A"+D2$+"A-M-C":C$(83)="A:B"+D2$+"A:B-M:M+1"
242 C$(84)="A"+D2$+"A"+D7$+"M":C$(85)="A"+D7$+"M":C$(86)="A"+D2$+"M":C$(87)="M"+D2$+"A"
244 C$(88)="A"+D2$+"A"+D9$+"M":C$(89)="A"+D2$+"A+M+C":C$(90)="A"+D2$+"A"+D8$+"M":C$(91)="A"+D2$+"A+M"
246 C$(92)="IX-M:M+1":C$(93)="Jump to Subroutine"+D1$+"address":C$(94)="SP"+D2$+"M:M+1":C$(95)="M:M+1"+D2$+"SP"
248 C$(96)="B"+D2$+"B-M":C$(97)="B-M":C$(98)="B"+D2$+"B-M-C":C$(99)="A:B"+D2$+"A:B+M:M+1"
250 C$(100)="B"+D2$+"B"+D7$+"M":C$(101)="B"+D7$+"M":C$(102)="B"+D2$+"M":C$(103)="M"+D2$+"B"
252 C$(104)="B"+D2$+"B"+D9$+"M":C$(105)="B"+D2$+"B+M+C":C$(106)="B"+D2$+"B"+D8$+"M":C$(107)="B"+D2$+"B+M"
254 C$(108)="A:B"+D2$+"M:M+1":C$(109)="M:M+1"+D2$+"A:B":C$(110)="IX"+D2$+"M:M+1":C$(111)="M:M+1"+D2$+"IX"
260 B$(0)="INHER":B$(1)="INHER":B$(2)="REL":B$(3)="INHER"
270 B$(4)="INHER":B$(5)="INHER":B$(6)="INDEX":B$(7)="EXTEND"
280 B$(8)="IMMED":B$(9)="DIRECT":B$(10)="INDEX":B$(11)="EXTEND"
290 B$(12)="IMMED":B$(13)="DIRECT":B$(14)="INDEX":B$(15)="EXTEND"
300 DATA @,NOP,@,@,LSRD,ASLD,TAP,TPA,INX,DEX,CLV,SEV,CLC,SEC,CLI,SEI,SBA,CBA,@,@,@,@,TAB,TBA,XGDX,DAA,SLP,ABA,@,@,@,@
305 DATA BRA,BRN,BHI,BLS,BCC,BCS,BNE,BEQ,BVC,BVS,BPL,BMI,BGE,BLT,BGT,BLE,TSX,INS,PULA,PULB,DES,TXS,PSHA,PSHB,PULX,RTS,ABX,RTI,PSHX,MUL,WAI,SWI
310 DATA NEGA,@,@,COMA,LSRA,@,RORA,ASRA,ASLA,ROLA,DECA,@,INCA,TSTA,T,CLRA,NEGB,@,@,COMB,LSRB,@,RORB,ASRB,ASLB,ROLB,DECB,@,INCB,TSTB,T,CLRB
315 DATA NEG,AIM,OIM,COM,LSR,EIM,ROR,ASR,ASL,ROL,DEC,TIM,INC,TST,JMP,CLR,NEG,AIM,OIM,COM,LSR,EIM,ROR,ASR,ASL,ROL,DEC,TIM,INC,TST,JMP,CLR
320 DATA SUBA,CMPA,SBCA,SUBD,ANDA,BITA,LDAA,@,EORA,ADCA,ORAA,ADDA,CPX,BSR,LDS,@,SUBA,CMPA,SBCA,SUBD,ANDA,BITA,LDAA,STAA,EORA,ADCA,ORAA,ADDA,CPX,JSR,LDS,STS
325 DATA SUBA,CMPA,SBCA,SUBD,ANDA,BITA,LDAA,STAA,EORA,ADCA,ORAA,ADDA,CPX,JSR,LDS,STS,SUBA,CMPA,SBCA,SUBD,ANDA,BITA,LDAA,STAA,EORA,ADCA,ORAA,ADDA,CPX,JSR,LDS,STS
330 DATA SUBB,CMPB,SBCB,ADDD,ANDB,BITB,LDAB,@,EORB,ADCB,ORAB,ADDB,LDD,@,LDX,@,SUBB,CMPB,SBCB,ADDD,ANDB,BITB,LDAB,STAB,EORB,ADCB,ORAB,ADDB,LDD,STD,LDX,STX
335 DATA SUBB,CMPB,SBCB,ADDD,ANDB,BITB,LDAB,STAB,EORB,ADCB,ORAB,ADDB,LDD,STD,LDX,STX,SUBB,CMPB,SBCB,ADDD,ANDB,BITB,LDAB,STAB,EORB,ADCB,ORAB,ADDB,LDD,STD,LDX,STX
340 DATA 0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0
345 DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
350 DATA 1,0,0,1,1,0,1,1,1,1,1,0,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,0,1,1,0,1
355 DATA 2,3,3,2,2,3,2,2,2,2,2,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
360 DATA 2,2,2,3,2,2,2,0,2,2,2,2,3,2,3,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
365 DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
370 DATA 2,2,2,3,2,2,2,0,2,2,2,2,3,0,3,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
375 DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
391 REM
392 REM
393 REM
394 REM
395 REM
396 REM
397 REM
398 REM
400 OPEN"O",#1,"COM0:"
410 PRINT#1,CHR$(27)+"N"+CHR$(5)+CHR$(15)
420 PRINT#1,CHR$(10)+CHR$(11)+CHR$(12)+CHR$(13);
430 CLS:INPUT" ADDRESS";E:INPUT" ADDRESS";ESTOP
440 PRINT"CONTINUE?(RETURN)":PRINT"ABORT?(SPACE BAR)";
450 FSTOP$=INPUT$(1):IF FSTOP$<>CHR$(13)THEN430
500 F=PEEK(E)
510 B=F\16:IFF=141THENB=2
520 IFF<16THENF$="0"+HEX$(F)ELSEF$=HEX$(F)
530 IFF<64THENC=F ELSEC=48+16*(F\64)+(F MOD16)
540 PRINT#1,"$";HEX$(E);":";TAB(8);F$;
550 ONA%(F)+1GOSUB600,700,800,900
560 IFE>ESTOP THEN1000
570 GOTO500
600 PRINT#1,TAB(18);E$;E$;E$;" Error: Undefined Op Code ";E$;E$;E$;
601 PRINT#1,CHR$(13);TAB(80);
602 Z=F:GOSUB950
603 PRINT#1,CHR$(13)
610 E=E+1:RETURN
700 PRINT#1,TAB(18);A$(F);TAB(24);B$(B);TAB(32);C$(C);
701 PRINT#1,CHR$(13);TAB(80);
702 Z=F:GOSUB950
703 PRINT#1,CHR$(13)
710 E=E+1:RETURN
800 G=PEEK(E+1):IFG<16THENG$="0"+HEX$(G)ELSEG$=HEX$(G)
810 PRINT#1,TAB(12);G$;TAB(18);A$(F);TAB(24);B$(B);
820 IFB$(B)="REL"THEN850
830 PRINT#1,TAB(32);C$(C);
831 PRINT#1,CHR$(13);TAB(80);
832 Z=F:GOSUB950
833 Z=G:GOSUB950
834 PRINT#1,CHR$(13)
840 E=E+2:RETURN
850 H=E+CINT(G-256*(G\128)+2)
855 IFH>&H8000 ANDH<&H7FFF THENH$=HEX$(H)ELSEH$=""
860 IFF=141THEN875
865 PRINT#1,TAB(32);"Branch"+D1$+" $"+H$+" if "+C$(C);
866 PRINT#1,CHR$(13);TAB(80);
867 Z=F:GOSUB950
868 Z=G:GOSUB950
869 PRINT#1,CHR$(13)
870 E=E+2:RETURN
875 PRINT#1,TAB(32)+"Branch to Suroutine"+D1$+" $"+H$;
876 PRINT#1,CHR$(13);TAB(80);
877 Z=F:GOSUB950
878 Z=G:GOSUB950
879 PRINT#1,CHR$(13)
880 E=E+2:RETURN
900 G=PEEK(E+1):IFG<16THENG$="0"+HEX$(G)ELSEG$=HEX$(G)
910 H=PEEK(E+2):IFH<16THENH$="0"+HEX$(H)ELSEH$=HEX$(H)
920 PRINT#1,TAB(12);G$;H$;TAB(18);A$(F);TAB(24);B$(B);TAB(32);C$(C);
930 IFF=126ORF=189THENPRINT#1," $"+G$+H$;
931 PRINT#1,CHR$(13);TAB(80);
932 Z=F:GOSUB950
933 Z=G:GOSUB950
934 Z=H:GOSUB950
935 PRINT#1,CHR$(13)
940 E=E+3:RETURN
950 IFZ>32ANDZ<127THENPRINT#1,CHR$(Z);ELSEPRINT#1,E$;
960 RETURN
1000 CLOSE#1:CLS
1010 PRINT"CONTINUE?(RETURN)"
1020 PRINT"ABORT?(SPACE BAR)"
1030 FSTOP$=INPUT$(1):IFFSTOP$<>CHR$(32)THEN400
1040 END
