1 '8085 Disassembler for M-100 2 '(C) 1984 G. K. Berkheiser/Ergo Software, Inc. 3 'commercial rights reserved 4 'init the system 5 CLEAR512,HIMEM: GOSUB1000 6 INPUT "Starting address -->";ZS:INPUT" Ending address -->";ZE 7 CLS:PRINT#1,"ADDR-DATA-EQUIVALENT OP":Z=ZS 8 'get opcode to use 10 B=PEEK(Z):OP$=STR$(Z)+" "+STR$(B)+" " 11 BH=(BAND192)/64:'group code 12 BM=(BAND56)/8:'condition, reg, or misc 13 BL=(BAND7):'reg, op type 14 ONBH+1GOSUB100,200,300,400 50 'now ship the line of data 51 PRINT#1,OP$ 52 Z=Z+1:IFZ>ZETHEN60ELSE10 60 CLOSE#1:END 100 'group 0nn 101 ONBL+1GOTO102,111,115,130,140,150,160,170 102 '0n0 subgroup 105 IFB=0THENOP$=OP$+"NOP":RETURN 106 IFB=32THENOP$=OP$+"RIM":RETURN 108 IFB=64THENOP$=OP$+"SIM":RETURN 109 'bad opcode 110 OP$=OP$+"???":RETURN 111 '0n1 subgroup 112 IFBMMOD2=0THENOP$=OP$+"LXI ":GOSUB180:GOTO510 113 OP$=OP$+"DAD ":BM=BM-1:GOSUB180:RETURN 115 '0n2 subgroup 116 'test for direct or indirect 117 IFBM>3THEN121 118 IFBMMOD2=0THENOP$=OP$+"STAX "ELSEOP$=OP$+"LDAX " 119 IFBM<2THENOP$=OP$+"B"ELSEOP$=OP$+"D" 120 RETURN 121 IFBM=4THENOP$=OP$+"SHLD ":GOTO510 122 IFBM=5THENOP$=OP$+"LHLD ":GOTO510 123 IFBM=6THENOP$=OP$+"STA ":GOTO510 124 OP$=OP$+"LDA ":GOTO510 130 '0n3 subgroup 131 IFBMMOD2=0THENOP$=OP$+"INX ":GOSUB180:RETURN 132 OP$=OP$+"DCX ":BM=BM-1:GOSUB180:RETURN 140 '0n4 subgroup 141 OP$=OP$+"INR "+R$(BM+1):RETURN 150 '0n5 subgroup 151 OP$=OP$+"DCR "+R$(BM+1):RETURN 160 '0n6 subgroup 161 OP$=OP$+"MVI "+R$(BM+1):GOTO502 170 '0n7 subgroup 171 OP$=OP$+W7$(BM+1):RETURN 180 'subroutine to get a register pair 181 T$=R$(BM+1):IFT$="M"THENT$="SP" 182 OP$=OP$+T$:RETURN 200 '1nn group 201 IFB=118THENOP$=OP$+"HLT":RETURN 202 OP$=OP$+"MOV "+R$(BM+1)+","+R$(BL+1):RETURN 300 '2nn group 301 IFB>127ANDB<136THENOP$=OP$+"ADD ":GOTO310 302 IFB>135ANDB<144THENOP$=OP$+"ADC ":GOTO310 303 IFB>143ANDB<152THENOP$=OP$+"SUB ":GOTO310 304 IFB>151ANDB<160THENOP$=OP$+"SBB ":GOTO310 305 IFB>159ANDB<168THENOP$=OP$+"ANA ":GOTO310 306 IFB>167ANDB<176THENOP$=OP$+"XRA ":GOTO310 307 IFB>175ANDB<184THENOP$=OP$+"ORA ":GOTO310 308 IFB>183ANDB<192THENOP$=OP$+"CMP " 310 OP$=OP$+R$(BL+1):RETURN 400 '3nn group 401 ONBL+1GOTO 402,420,403,430,404,410,407,406 402 OP$=OP$+"R":GOTO405 403 OP$=OP$+"J":GOTO405 404 OP$=OP$+"C" 405 OP$=OP$+CC$(BM+1):IFBL=0THENRETURNELSE510 406 OP$=OP$+"RST "+STR$(BM):RETURN 407 OP$=OP$+M6$(BM+1)+" ":GOTO502 410 IFBM=1THENOP$=OP$+"CALL ":GOTO510 413 IFBMMOD2<>0THEN417 414 OP$=OP$+"PUSH " 415 T$=R$(BM+1):IFT$="M"THENT$="PSW" 416 OP$=OP$+T$:RETURN 417 OP$=OP$+"???":RETURN 420 IFBMMOD2=0THENOP$=OP$+"POP ":GOTO415 422 IFBM=1THENOP$=OP$+"RET":RETURN 423 IFBM=5THENOP$=OP$+"PCHL":RETURN 424 IFBM=7THENOP$=OP$+"SPHL":RETURN 425 GOTO417 430 ONBM+1GOTO432,417,433,434,435,436,437,438 432 OP$=OP$+"JMP ":GOTO510 433 OP$=OP$+"OUT ":GOTO502 434 OP$=OP$+"IN ":GOTO502 435 OP$=OP$+"XTHL":RETURN 436 OP$=OP$+"XCHG":RETURN 437 OP$=OP$+"DI":RETURN 438 OP$=OP$+"EI":RETURN 500 'direct data/addr conversions 502 'single byte 505 Z=Z+1:D=PEEK(Z):OP$=OP$+STR$(D):RETURN 510 'double byte 512 Z=Z+1:D=PEEK(Z):Z=Z+1:E=PEEK(Z) 514 F=(E*256)+D:OP$=OP$+STR$(F):RETURN 1000 'INITIALIZE DATA 1001 CLS:PRINT"(C) 1984 Ergo Software, Inc." 1002 PRINT"Commercial rights reserved" 1003 DEFSTRA:DEFINTB,D,E,I:DEFSNGF,Z 1010 DIMM6$(8),W7$(8),R$(8),CC$(8) 1012 FORI=1TO8:READW7$(I):NEXTI 1013 FORI=1TO8:READR$(I):NEXTI 1014 FORI=1TO8:READCC$(I):NEXTI 1015 FORI=1TO8:READM6$(I):NEXTI 1020 'get output device 1021 INPUT"List to Screen or Printer (S/P)";A 1022 IFA="S"ORA="s"THENOPEN"LCD:"FOROUTPUTAS1ELSEOPEN"LPT:"FOROUTPUTAS1 1024 RETURN 1035 'W7$ FOR 0n7 1040 DATA"RLC","RRC","RAL","RAR","DAA","CMA","STC","CMC" 1041 'R FOR REGISTERS 1042 DATA"B","C","D","E","H","L","M","A" 1043 'CC FOR CONDITION CODES 1044 DATA"NZ ","Z ","NC ","C ","PO ","PE ","P ","M " 1058 'M6$ for 3n6 1059 DATA"ADI ","ACI ","SUI ","SBI ","ANI ","XRI ","ORI ","CPI " 2000 'DONE 2001 END