1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-14 07:40:05 +00:00

Add 8748 disassembler.

This commit is contained in:
Eric Swenson 2018-10-05 09:13:23 -07:00 committed by Lars Brinkhoff
parent 1a93253a07
commit 4658014923
2 changed files with 170 additions and 0 deletions

View File

@ -1131,6 +1131,11 @@ respond "_" "lmio1;as8748\r"
respond "_" "\032"
type ":kill\r"
respond "*" ":complr\r"
respond "_" "moon;8478sa\r"
respond "_" "\032"
type ":kill\r"
respond "*" ":lisp\r"
respond "Alloc?" "n"
respond "*" "(load '((lmio1) as8748))"

165
src/moon/8478sa.7 Normal file
View File

@ -0,0 +1,165 @@
;Format is (number string format) or ((first-number last-number) string format)
;Formats are NIL, R, @R, IM, IO, IOIM, RIM, @RIM, JMP, RJMP, LJMP, PD
;Another string can be at the end of the list.
(SETQ 8748TBL '(
((150 157) "ADD A,R" R)
((140 141) "ADD A,@R" @R)
(003 "ADD A,#" IM)
((170 177) "ADDC A,R" R)
((160 161) "ADDC A,@R" @R)
(023 "ADDC A,#" IM)
((130 137) "ANL A,R" R)
((120 121) "ANL A,@R" @R)
(123 "ANL A,#" IM)
((230 232) "ANL " IOIM)
((234 237) "ANLD P" PD ",A")
((110 117) "ORL A,R" R)
((100 101) "ORL A,@R" @R)
(103 "ORL A,#" IM)
((210 212) "ORL " IOIM)
((214 217) "ORLD P" PD ",A")
((330 337) "XRL A,R" R)
((320 321) "XRL A,@R" @R)
(323 "XRL A,#" IM)
(027 "INC A")
((030 037) "INC R" R)
((020 021) "INC @R" @R)
(007 "DEC A")
((310 317) "DEC R" R)
(047 "CLR A")
(227 "CLR C")
(205 "CLR F0")
(245 "CLR F1")
(067 "CPL A")
(247 "CPL C")
(225 "CPL F0")
(265 "CPL F1")
(127 "DEC-ADJ A")
(107 "SWAP A")
(347 "ROT-LEFT A")
(367 "ROT-LEFT-CARRY A")
(167 "ROT-RIGHT A")
(147 "ROT-RIGHT-CARRY A")
(010 "INS A,BUS")
(011 "IN A,P1")
(012 "IN A,P2")
(002 "OUTL BUS,A")
(071 "OUTL P1,A")
(072 "OUTL P2,A")
((350 357) "DJNZ R" RJMP)
(004 "JMP " LJMP)
(044 "JMP " LJMP)
(104 "JMP " LJMP)
(144 "JMP " LJMP)
(204 "JMP " LJMP)
(244 "JMP " LJMP)
(304 "JMP " LJMP)
(344 "JMP " LJMP)
(024 "CALL " LJMP)
(064 "CALL " LJMP)
(124 "CALL " LJMP)
(164 "CALL " LJMP)
(224 "CALL " LJMP)
(264 "CALL " LJMP)
(324 "CALL " LJMP)
(364 "CALL " LJMP)
(203 "RET")
(223 "RETR")
(000 "NOP")
(263 "JMPP @A")
(022 "JB0 " JMP)
(062 "JB1 " JMP)
(122 "JB2 " JMP)
(162 "JB3 " JMP)
(222 "JB4 " JMP)
(262 "JB5 " JMP)
(322 "JB6 " JMP)
(362 "JB7 " JMP)
(366 "JC " JMP)
(346 "JNC " JMP)
(266 "JF0 " JMP)
(166 "JF1 " JMP)
(206 "JNI " JMP)
;(206 "JOBF " JMP)
(326 "JNIBF " JMP)
(306 "JZ " JMP)
(226 "JNZ " JMP)
(066 "JT0 " JMP)
(046 "JNT0 " JMP)
(126 "JT1 " JMP)
(106 "JNT1 " JMP)
(026 "JTF " JMP)
((370 377) "MOV A,R" R)
((360 361) "MOV A,@R" @R)
(043 "MOV A,#" IM)
((250 257) "MOV R" R ",A")
((240 241) "MOV @R" @R ",A")
((270 277) "MOV R" RIM)
((260 261) "MOV @R" @RIM)
((050 057) "XCH A,R" R)
((040 041) "XCH A,@R" @R)
((060 061) "XCHD A,@R" @R)
(243 "MOVP A,@A")
(343 "MOVP3 A,@A")
(102 "MOV A,T")
(142 "MOV T,A")
(307 "MOV A,PSW")
(327 "MOV PSW,A")
((014 017) "MOVD A,P" PD)
((074 077) "MOVD P" PD ",A")
((200 201) "MOVX A,@R" @R)
((220 221) "MOVX @R" @R ",A")
(125 "STRT T")
(105 "STRT CNT")
(145 "STOP TCNT")
(045 "EN TCNT I")
(065 "DIS TCNT I")
(005 "EN I")
(025 "DIS I")
(165 "EN T0 CLK")
(345 "SEL MB0")
(365 "SEL MB1")
(305 "SEL RB0")
(325 "SEL RB1")
))
(DECLARE (SPECIAL 8748TBL 8748AR))
(DEFUN FROB ()
(OR (BOUNDP '8748AR) (SETQ 8748AR (MAKE-ARRAY NIL 'ART-Q 400)))
(FILLARRAY 8748AR '(NIL))
(DOLIST (X 8748TBL)
(COND ((ATOM (CAR X)) (FROB1 (CAR X) X))
(T (DO I (CAAR X) (1+ I) (> I (CADAR X))
(FROB1 I X)))))
(DOTIMES (I 400)
(OR (AREF 8748AR I)
(PRINT (LIST 'UNOCCUPIED I)))))
(DEFUN FROB1 (VAL X)
(AND (AREF 8748AR VAL) (PRINT (LIST 'CONFLICT (AREF 8748AR VAL) X)))
(ASET X 8748AR VAL))
(DEFUN DISAR (AR FIRST LAST &AUX INST DAT DELTA)
(DO ((PC FIRST (1+ PC)))
((>= PC LAST))
(FORMAT T "~%~3O " PC)
(SETQ INST (AREF AR PC))
(SETQ DAT (AREF 8748AR INST))
(COND ((NULL DAT) (PRIN1 INST))
(T (PRINC (CADR DAT))
(SETQ DELTA (AND (NOT (ATOM (CAR DAT))) (- INST (CAAR DAT))))
(SELECTQ (CADDR DAT)
((R @R IO) (PRIN1 DELTA))
(IM (PRIN1 (AREF AR (SETQ PC (1+ PC)))))
((RIM @RIM) (FORMAT T "~O,#~O" DELTA (AREF AR (SETQ PC (1+ PC)))))
(IOIM (FORMAT T "~[BUS~;P1~;P2~],#~O" DELTA (AREF AR (SETQ PC (1+ PC)))))
(PD (PRIN1 (+ DELTA 4)))
(JMP (PRIN1 (+ (LOGAND 7400 (1+ PC)) (AREF AR (SETQ PC (1+ PC))))))
(RJMP (FORMAT T "~O,~O" DELTA (+ (LOGAND 7400 (1+ PC))
(AREF AR (SETQ PC (1+ PC))))))
(LJMP (PRIN1 (+ (LSH (LDB 0503 INST) 8) (AREF AR (SETQ PC (1+ PC))))))
(NIL )
(OTHERWISE (FORMAT T "BARF? - ~S" DAT)))
(AND (CADDDR DAT) (PRINC (CADDDR DAT)))))))