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:
parent
1a93253a07
commit
4658014923
@ -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
165
src/moon/8478sa.7
Normal 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)))))))
|
||||
Loading…
x
Reference in New Issue
Block a user