1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-13 07:19:57 +00:00

Assembler for TT2500.

The assembler is written in Maclisp.  The main entry point is ZAP
which expects a symbol with a value cell pointing to the source code.
This commit is contained in:
Lars Brinkhoff 2021-01-14 11:55:35 +01:00
parent 47fb5ba074
commit 4af63f786b
4 changed files with 461 additions and 1 deletions

View File

@ -29,7 +29,7 @@ SRC = syseng sysen1 sysen2 sysen3 sysnet kshack dragon channa \
moon teach ken lmio1 llogo a2deh chsgtv clib sys3 lmio turnip \
mits_s rab stan_k bs cstacy kp dcp2 -pics- victor imlac rjl mb bh \
lars drnil radia gjd maint bolio cent shrdlu vis cbf digest prs jsf \
decus bsg muds54 hello rrs
decus bsg muds54 hello rrs 2500
DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \
chprog sail draw wl pc tj6 share _glpr_ _xgpr_ inquir mudman system \
xfont maxout ucode moon acount alan channa fonts games graphs humor \

View File

@ -837,6 +837,15 @@ respond "?" "1700\r"
expect ":KILL"
respond "*" ":link sys1; ts llogo, llogo; ts llogo\r"
# 2500 assembler
respond "*" ":complr\r"
respond "_" "\007"
respond "*" "(load 'ioc)"
respond_load "(maklap)"
respond "_" "2500;zap\r"
respond "_" "\032"
type ":kill\r"
# TEACH;TS XLISP
respond "*" ":complr\r"

View File

@ -2,6 +2,7 @@
11logo/system.327 197204202249.37
11logo/tyi.152 197204202303.30
11logo/zend.67 197204182114.19
2500/zap.1 197702191722.49
acount/-read-.-this- 197803240506.02
acount/turist.policy 198710200503.52
agb/c.dis 197606210311.16

450
src/2500/zap.1 Normal file
View File

@ -0,0 +1,450 @@
;ZAP
;SYMBOLS IN ZAP:
; A SYMBOL IN ZAP HAS AS ITS VALUE A PROGRAM&
; THE PROGRAM IS EVALUATED BY RECURSIVE CALLS TO ZAP-EVAL.
; IF THE ARGUMENT TO ZAP-EVAL IS NUMERIC, IT IS RETURNED AS THE VALUE.
; IF NIL, THIS SPECIFIES THE NULL VALUE.
; IF A SYMBOL, ITS VALUE IS RUN AS A PROGRAM AND RETURNED.
; IF A LIST, CAR OF THE LISP IS THE FUNCTION AND THE REST OF THE LIST
; ARGUMENTS, LISP STYLE. UNLESS OTHERWISE NOTED BELOW, ALL FUNCTIONS
; EVALUATE THEIR ARGS (LISP STYLE) AND ACTUALLY DO SOMETHING ONLY
; AFTER THE EVALUATION OF THEIR ARGUMENTS HAS FINISHED.
; IF THE PROGRAM IS STORED AS THE ZAP-MACRO PROPERTY OF THE SYMBOL, IT IS EXPECTED
; TO RETURN A LIST A VALUES TO BE STORED IN SUCCESSIVE MEMORY LOCATIONS.
(SETQ FILE-LIST-FLAG T) ;CREATE A FILE OF EACH LISTING
(SETQ SIM-FLAG T) ;FOR USE WITH SIMULATOR
(SETQ FREQ-FLAG NIL) ;FREQUENCY OF EACH INSRTUCTION PRINTED
(SETQ ZAP-FLAG NIL) ;FOR ROM LOADER
(SETQ ERCHECK-FLAG T) ;ENABLE WARNINGS OF SYMBOL OVERLAPS
(SETQ PO-FLAG T) ;ENABLE LISTING ON PASS 2
(DECLARE (EXPR-HASH T))
(SSTATUS TERPRI T)
;(VALRET '/:TCTYP/ WIDTH/ 500000/./ PADCR/=0/
;:VP/
;)
;(SETQ LINEL 1176) ;LISAP DOES LIKE ANY MORE
(SETQ DEFUN T)
(DEFUN LOGAND (X Y) (BOOLE 1 X Y))
(DECLARE (SPECIAL ZAP-SYMTAB I-MEM-LOC PO-FLAG ERCHECK-FLAG
TEML TEMLR READER PASS1 SYM-LIST
FILE-LIST-FLAG ZAP-FLAG I-MEM-NAME LAST-SYM LOADER-L CLIST SIM-FLAG FREQ-FLAG
WD CURRENT-WORD )
(*FEXPR ZAP LC LR)
(MAPEX T)
(FIXSW T))
(DEFUN ZAP FEXPR (NAME)
(PROG (I-MEM-LOC I-MEM-NAME START-ADR
LAST-SYM T-ZAP-1 U-PROG )
(COND (FILE-LIST-FLAG (UWRITE)(IOC R)))
(SETQ I-MEM-NAME (CAR NAME))
(SETQ U-PROG (EVAL I-MEM-NAME))
(SETQ START-ADR (COND ((CADR NAME))(0)))
(SETQ I-MEM-LOC START-ADR)
(SETQ ZAP-SYMTAB NIL)
(SETQ T-ZAP-1 U-PROG)
L1 (COND ((NULL T-ZAP-1) (GO L2)))
(ZAP-PASS1 (CAR T-ZAP-1))
(SETQ T-ZAP-1 (CDR T-ZAP-1))
(GO L1)
L2 (SETQ I-MEM-LOC START-ADR)
(SET I-MEM-NAME NIL)
(SETQ T-ZAP-1 U-PROG)
L3 (COND ((NULL T-ZAP-1) (GO L4)))
(ZAP-PASS2 (CAR T-ZAP-1))
(SETQ T-ZAP-1 (CDR T-ZAP-1))
(GO L3)
L4 (COND (FILE-LIST-FLAG (APPLY 'UFILE (LIST I-MEM-NAME 'LIST))(IOC T)))
(COND (ZAP-FLAG (ZAPPER START-ADR (EVAL I-MEM-NAME))))
(COND (SIM-FLAG (FILLARRAY 'IM (EVAL I-MEM-NAME))))
(COND (FREQ-FLAG (FREQS)))
(PRINT '(ALL DID))
(BREAK 'FINISH 'T)
(RETURN T)))
(DEFUN ZAP-PASS1 (WD)
(PROG (CURRENT-WORD)
(SETQ PASS1 T)
(SETQ CURRENT-WORD WD) ;FOR DEBUGGING
(COND ((ATOM WD)
(SETQ LAST-SYM WD)
(SETQ ZAP-SYMTAB
(CONS (CONS WD I-MEM-LOC)
ZAP-SYMTAB)))
((GET (CAR WD) 'ZAP-MACRO) ;CHECK FOR ZAP-MACRO PROP
(SETQ I-MEM-LOC
(+ (LENGTH (EVAL (GET (CAR WD) 'ZAP-MACRO))) I-MEM-LOC)))
((EQ (CAR WD) 'START )(OR SIM-FLAG (SETQ I-MEM-LOC (CADR WD))))
((EQ (CAR WD) '&) NIL )
((EQ (CAR WD) 'ZAP-MACRO )
(PUTPROP (CADR WD) (CADDR WD) 'ZAP-MACRO) )
((EQ (CAR WD) 'CALL)
(ZAP-DEFSYM (CADR WD)
(CADDR WD)))
(T (GO W1)) )
X (RETURN NIL)
W1 (SETQ I-MEM-LOC (1+ I-MEM-LOC))
(RETURN NIL)))
(DEFUN ZAP-DEFSYM (VAL SYM)
(PROG (TM)
(COND ((SETQ TM (SYM-EVAL SYM))
(COND ((NOT (EQUAL VAL TM))
(PRINT (LIST SYM TM 'MULT-DEFINED-SYM ))
(BREAK 'LOOSE 'T))))
(T (SETQ ZAP-SYMTAB
(CONS (CONS SYM VAL)
ZAP-SYMTAB))) )
(RETURN NIL)))
(DEFUN SYM-EVAL (SYM)
(PROG (TM)
(COND ((SETQ TM (GET SYM 'ZAP-SYM))
(COND ((NULL (GET SYM 'USE))(PUTPROP SYM 1 'USE))
(T (PUTPROP SYM (1+ (GET SYM 'USE) ) 'USE)))
(RETURN TM)))
(SETQ TM ZAP-SYMTAB)
L (COND ((NULL TM) (RETURN NIL))
((EQ (CAAR TM) SYM)
(RETURN (CDAR TM))))
(SETQ TM (CDR TM))
(GO L)))
;##
(DEFUN ZAP-PASS2 (WD)
(PROG NIL
(SETQ PASS1 NIL)
(COND ((ATOM WD)
(SETQ LAST-SYM WD)
(COND ((NOT (EQUAL
(SYM-EVAL WD)
I-MEM-LOC))
(PRINT '(MY SYMBOLS ARE DIFFERENT FROM PASS1))(BREAK 'LOOSE2 'T))))
((EQ (CAR WD) 'ZAP-MACRO ))
((EQ (CAR WD) 'CALL )(TYO 11)(PRINT WD))
((EQ (CAR WD) 'START )(OR SIM-FLAG (SETQ I-MEM-LOC (CADR WD))))
((EQ (CAR WD) '&)(TYO 11)(PRINT WD))
((GET (CAR WD) 'ZAP-MACRO)
(LOAD-ZAP-MACRO (EVAL (GET (CAR WD) 'ZAP-MACRO ))))
(T (LOAD-MEM-WITH WD)))
X (RETURN NIL)))
(DEFUN LOAD-ZAP-MACRO (LL)
(COND ((NULL LL) NIL)
(T (LOAD-MEM-WITH (CAR LL))(LOAD-ZAP-MACRO (CDR LL)) ) ))
(DEFUN LOAD-MEM-WITH (WD)
(PROG (V)
(SETQ V (WORD-EVAL WD))
(COND ((< V -177776)(PRINT '(THIS LOOKS TOO SMALL)))
((> V 177777)(PRINT '(THIS LOOKS TOO BIG)))
((> V 777777)(PRINT '(THIS REALLY LOOKS TOO BIG)))
((> V 7777777) (PRINT '(THIS HAS GOTTA BE TOO BIG)))
((< 0 V)(SETQ V (LOGAND V 177777))))
(COND (PO-FLAG
(TYO 15)
(TYO 11)
(COND ((= I-MEM-LOC (SYM-EVAL LAST-SYM))
(PRINC LAST-SYM)
(COND ((< (LENGTH (EXPLODE LAST-SYM)) 8)(TYO 11))))
((TYO 11)))
(TYO 11)
(PRINC I-MEM-LOC)
(TYO 11)
(PRINC V)
(TYO 11)
(PRINC WD)
))
(SET I-MEM-NAME (APPEND (EVAL I-MEM-NAME) (LIST V)))
(SETQ I-MEM-LOC (1+ I-MEM-LOC))
(RETURN NIL)))
(DEFUN WORD-EVAL (WD)
(PROG (COMBINED-VALUE FIELD-VALUE CURRENT-WORD ERCHECK-VALUE)
(SETQ COMBINED-VALUE 0) ;CAUTION& COMBINED-VALUE CAN BE A BIGNUM
(SETQ ERCHECK-VALUE 0) ;IF NO FIELD OVERLAP THIS SHOULD BE SAME
(SETQ CURRENT-WORD WD) ;SO CAN SEE IT WHEN STUFF COMPILED
L (COND ((AND ERCHECK-FLAG
(NULL WD)
(NOT (EQUAL COMBINED-VALUE ERCHECK-VALUE)))
(PRINT (LIST '(BYTE OVERLAP WARNING ONLY) CURRENT-WORD ))
(RETURN COMBINED-VALUE))
((OR (EQ (CAR WD) '&) (NULL WD)) (RETURN COMBINED-VALUE))
((NUMBERP (CAR WD))
(SETQ FIELD-VALUE (CAR WD)))
((ATOM (CAR WD))
(SETQ FIELD-VALUE (ZAP-SYM-RUN (CAR WD)))) )
(SETQ COMBINED-VALUE (PLUS COMBINED-VALUE FIELD-VALUE))
(SETQ ERCHECK-VALUE (BOOLE 7 ERCHECK-VALUE FIELD-VALUE))
(SETQ WD (CDR WD))
(GO L)
))
(DEFUN ZAP-SYM-RUN (SYM)
(PROG (TEM)
(COND ( PASS1 (RETURN 0))
((NULL (SETQ TEM (SYM-EVAL SYM)))
(PRINT (APPEND '(I AM SORRY BUT I CAN NOT FIND ) (LIST SYM )))
(RETURN 0))
(T (RETURN (ZAP-EVAL TEM))))))
(DEFUN ZAP-EVAL (EXP) ;EXP A SYMBOL "PROGRAM".RETURNS A NUMBERIC VALUE OR NIL
(COND ((NULL EXP) 0)
((NUMBERP EXP) EXP)
((ATOM EXP) (ZAP-SYM-RUN EXP))
(T (EVAL EXP))) )
; FUNCTIONS TO LOAD 2500 MEMORY
(DEFUN JMP (N)(PROG (CLIST)
(ZOUT 320116)
(ZOUT 0)
(ZOUT (+ N 50000))
(ZOUT (- (+ N 320116)))
(SETQ CLIST (REVERSE CLIST))
PLOOP (COND ((NULL CLIST)(RETURN 'FINI)))
(COND ((= (CAR CLIST) 177) (TYO 77))
((TYO (CAR CLIST))))
(SETQ CLIST (CDR CLIST))
(GO PLOOP)))
(DEFUN LOAD (TYP ADR L)
(PROG (CLIST CHECK-SUM CNT FONT)
BLOCK (TERPRI)
(SETQ CNT (LENGTH L))
(SETQ FONT (> ADR 167777))
(COND ((< CNT 1)(RETURN 'FINI))
((> CNT 100)(SETQ CNT 100)))
(COND (FONT (SETQ CNT (* 2 CNT))))
(ZOUT 320116) ; FLAG
(ZOUT TYP)
(ZOUT ADR)
(ZOUT CNT)
(SETQ CHECK-SUM (+ TYP ADR CNT))
LOOP (ZOUT (CAR L))
(SETQ CHECK-SUM (+ CHECK-SUM (CAR L)))
(SETQ L (CDR L))
(SETQ CNT (1- CNT))
(COND (FONT (SETQ CNT (1- CNT))))
(COND ((> CNT 0)(GO LOOP)))
(SETQ ADR (+ ADR 100))
(COND (FONT (SETQ ADR (+ ADR 100))))
(ZOUT (- CHECK-SUM))
(SETQ CLIST (REVERSE CLIST))
PLOOP (COND ((NULL CLIST)(GO BLOCK)))
(COND ((= (CAR CLIST) 177) (TYO 77))
((TYO (CAR CLIST))))
(SETQ CLIST (CDR CLIST))
(GO PLOOP)))
(DEFUN ZOUT (NUM)
(PROG NIL
(SETQ NUM (LOGAND 777777 NUM))
(SETQ CLIST (CONS (+ 100 (LOGAND 77 (LSH NUM -14))) CLIST ))
(SETQ CLIST (CONS (+ 100 (LOGAND 77 (LSH NUM -6))) CLIST ))
(SETQ CLIST (CONS (+ 100 (LOGAND 77 NUM)) CLIST ))
(RETURN T)))
(DEFUN ZAPPER (START L)
(PROG (CTR CLIST FOO)
(SETQ FOO (SETQ CTR (LENGTH L)))
LOOP (COND ((NULL L) (GO DONE)))
(RAM-OUT (CAR L)) ;DATA
(SETQ L (CDR L))
(GO LOOP)
DONE (RAM-OUT CTR) ;BLOCK LENGTH
(RAM-OUT (PLUS START CTR)) ;START ADR
(RAM-OUT 147577) ;START WORD
(SET I-MEM-NAME ( IMPLODE CLIST))))
(DEFUN RAM-OUT (NUM)
(PROG NIL
(SETQ NUM (LOGAND 177777 NUM))
(SETQ CLIST (CONS (ASCII (+ 100 (LOGAND 17 NUM))) CLIST))
(SETQ CLIST (CONS (ASCII (+ 100 (LOGAND 17 (LSH NUM -4)))) CLIST ))
(SETQ CLIST (CONS (ASCII (+ 100 (LOGAND 17 (LSH NUM -10)))) CLIST ))
(SETQ CLIST (CONS (ASCII (+ 100 (LOGAND 17 (LSH NUM -14)))) CLIST))
(RETURN T) ))
(DEFUN TRIG-TABLE NIL
(PROG (A OUT)
(SETQ A 181.)
LOOP (SETQ OUT (CONS (FIX (TIMES 177777 (SIN (TIMES .01745329 A)))) OUT))
(SETQ A (1- A))
(COND ((> A -1)(GO LOOP))(T (RETURN OUT))) ))
;-- INITIAL SYMS
(DEFUN OPER-TYPE (CODE TYPE)
(PROG (A B )
(SETQ A (LIST CODE (LSH (ZAP-EVAL (CADR WD)) 6 )))
(COND ((NULL A)(PRINT (APPEND '(NOT ENOUGH ARGS IN) WD)))
((= TYPE 1)(SETQ WD (CDR WD))(RETURN (WORD-EVAL A)))) ;INC TYP
(SETQ B (ZAP-EVAL (CADDR WD)))
(COND ((= TYPE 3))
((> B 17)(PRINT '(B ADDRESS TOO BIG FOR AN OPER)))
((< B 0)(SETQ B (LOGAND B 17))))
(COND ((NULL B)(PRINT (APPEND '(NOT ENOUGH WORDS IN) WD)))
((> TYPE 1)(SETQ WD (CDDR WD))(RETURN (WORD-EVAL (CONS B A))))
)))
(DEFPROP PUT (COND ((< (ZAP-EVAL (CADDR WD)) 10)(PRINT '(USE GET INSTEAD)) 0 )
(T (OPER-TYPE 076000 3)) ) ZAP-SYM )
(DEFUN BRANCH-TYPE (CODE)
(PROG2 ()
(WORD-EVAL (LIST CODE (LOGAND 3777(1- (- (ZAP-EVAL(CADR WD)) I-MEM-LOC )))))
(SETQ WD NIL)))
(DEFUN DIS-TYPE ()
(PROG2 ()
(PLUS 72000 (COND ((EQ (CADR WD) 'BUS) 0)
((EQ (CADR WD) 'FLAGS) 400)
((EQ (CADR WD) 'INTS) 1000)
((EQ (CADR WD) 'STARS) 1400)
(T (PRINT (CONS (CADR WD)'(UNKNOWN))) 0 ))
(LSH (- 17 (CADDR WD)) 4))
(SETQ WD NIL)))
(DEFPROP + (PROG2 ()
(+ (ZAP-EVAL (CADR WD))(WORD-EVAL (CDDR WD)))
(SETQ WD NIL)) ZAP-SYM)
(DEFPROP * (PROG2 ()
(* (ZAP-EVAL (CADR WD))(WORD-EVAL (CDDR WD)))
(SETQ WD NIL)) ZAP-SYM)
(DEFPROP - (PROG2 ()
(COND ((NULL (CDDR WD))(- (ZAP-EVAL (CADR WD))))
(T (- (ZAP-EVAL (CADR WD))(WORD-EVAL (CDDR WD)))))
(SETQ WD NIL)) ZAP-SYM)
;
(DEFPROP DIS (DIS-TYPE) ZAP-SYM)
(DEFPROP ADD (OPER-TYPE 004060 2) ZAP-SYM )
(DEFPROP SUB (OPER-TYPE 006000 2) ZAP-SYM )
(DEFPROP INC (OPER-TYPE 006040 1) ZAP-SYM )
(DEFPROP DEC (OPER-TYPE 004020 1) ZAP-SYM )
(DEFPROP XADD (OPER-TYPE 004040 2) ZAP-SYM )
(DEFPROP AND (OPER-TYPE 000040 2) ZAP-SYM )
(DEFPROP IOR (OPER-TYPE 002000 2) ZAP-SYM )
(DEFPROP XOR (OPER-TYPE 002020 2) ZAP-SYM )
(DEFPROP NOR (OPER-TYPE 000060 2) ZAP-SYM )
(DEFPROP ANDN (OPER-TYPE 000020 2) ZAP-SYM )
(DEFPROP ARS (OPER-TYPE 006060 2) ZAP-SYM )
(DEFPROP ROT (OPER-TYPE 004000 2) ZAP-SYM )
(DEFPROP MROT (OPER-TYPE 002040 2) ZAP-SYM )
(DEFPROP ADDI (OPER-TYPE 005060 2) ZAP-SYM )
(DEFPROP SUBI (OPER-TYPE 007000 2) ZAP-SYM )
(DEFPROP INCI (OPER-TYPE 007040 1) ZAP-SYM )
(DEFPROP DECI (OPER-TYPE 005020 1) ZAP-SYM )
(DEFPROP XADDI (OPER-TYPE 005040 2) ZAP-SYM )
(DEFPROP ANDI (OPER-TYPE 001040 2) ZAP-SYM )
(DEFPROP IORI (OPER-TYPE 003000 2) ZAP-SYM )
(DEFPROP XORI (OPER-TYPE 003020 2) ZAP-SYM )
(DEFPROP NORI (OPER-TYPE 001060 2) ZAP-SYM )
(DEFPROP ANDNI (OPER-TYPE 001020 2) ZAP-SYM )
(DEFPROP ARSI (OPER-TYPE 007060 2) ZAP-SYM )
(DEFPROP ROTI (OPER-TYPE 005000 2) ZAP-SYM )
(DEFPROP MROTI (OPER-TYPE 003040 2) ZAP-SYM )
(DEFPROP LOD (OPER-TYPE 001000 1) ZAP-SYM )
(DEFPROP CMP (OPER-TYPE 016000 2) ZAP-SYM )
(DEFPROP CMPI 017000 ZAP-SYM )
(DEFPROP T 10000 ZAP-SYM)
(DEFPROP IFC 30000 ZAP-SYM)
(DEFPROP GET (OPER-TYPE 074000 3) ZAP-SYM )
(DEFPROP READ (OPER-TYPE 020000 2) ZAP-SYM )
(DEFPROP WRITE (OPER-TYPE 024000 2) ZAP-SYM )
(DEFPROP CREAD (OPER-TYPE 021000 2) ZAP-SYM )
(DEFPROP CWRITE (OPER-TYPE 025000 2) ZAP-SYM )
(DEFPROP READI (OPER-TYPE 022040 2) ZAP-SYM )
(DEFPROP WRITEI (OPER-TYPE 026040 2) ZAP-SYM )
(DEFPROP CREADI (OPER-TYPE 023040 2) ZAP-SYM )
(DEFPROP CWRITEI (OPER-TYPE 027040 2) ZAP-SYM )
(DEFPROP READD (OPER-TYPE 020020 2) ZAP-SYM )
(DEFPROP WRITED (OPER-TYPE 024020 2) ZAP-SYM )
(DEFPROP CREADD (OPER-TYPE 021020 2) ZAP-SYM )
(DEFPROP CWRITED (OPER-TYPE 025020 2) ZAP-SYM )
(DEFPROP JUMP 050000 ZAP-SYM )
(DEFPROP PUSHJ 040000 ZAP-SYM )
(DEFPROP POPJ 076016 ZAP-SYM )
(DEFPROP POPJI 076716 ZAP-SYM)
(DEFPROP BEQ (BRANCH-TYPE 134000 ) ZAP-SYM )
(DEFPROP BNE (BRANCH-TYPE 130000 ) ZAP-SYM )
(DEFPROP BPL (BRANCH-TYPE 124000 ) ZAP-SYM )
(DEFPROP BMI (BRANCH-TYPE 120000 ) ZAP-SYM )
(DEFPROP BCC (BRANCH-TYPE 100000 ) ZAP-SYM )
(DEFPROP BCS (BRANCH-TYPE 104000 ) ZAP-SYM )
(DEFPROP BVS (BRANCH-TYPE 110000 ) ZAP-SYM )
(DEFPROP BVC (BRANCH-TYPE 114000 ) ZAP-SYM )
(DEFPROP BIS (BRANCH-TYPE 150000 ) ZAP-SYM )
(DEFPROP BIC (BRANCH-TYPE 154000 ) ZAP-SYM )
(DEFPROP BFS (BRANCH-TYPE 170000 ) ZAP-SYM )
(DEFPROP BFC (BRANCH-TYPE 174000 ) ZAP-SYM )
(DEFPROP BXCI (BRANCH-TYPE 160000 ) ZAP-SYM )
(DEFPROP BXSI (BRANCH-TYPE 164000 ) ZAP-SYM )
(DEFPROP NOP (OPER-TYPE 10000 1) ZAP-SYM)
(DEFPROP ERROR (+ I-MEM-LOC 050000 ) ZAP-SYM )
(DEFPROP XR 23 ZAP-SYM)
(DEFPROP ER (AND (PRINT '(USE XR NOT ER)) 13) ZAP-SYM)
(DEFPROP MAGIC 76014 ZAP-SYM)
(DEFPROP XCOR 21 ZAP-SYM)
(DEFPROP YCOR 20 ZAP-SYM)
(DEFPROP UART 24 ZAP-SYM)
(DEFPROP DSR 25 ZAP-SYM)
(DEFPROP KEY 26 ZAP-SYM)
(DEFPROP SCROLL 22 ZAP-SYM)
(DEFPROP CHARTV (OPER-TYPE 76015 1) ZAP-SYM)
(NULL (SETQ SYM-LIST '(
DIS ADD SUB INC DEC XADD AND IOR
XOR NOR ANDN ARS ROT MROT ADDI SUBI
INCI DECI XADDI ANDI IORI XORI NORI ANDNI
ARSI ROTI MROTI LOD CMP CMPI T IFC
GET READ WRITE CREAD CWRITE READI WRITEI CREADI
CWRITEI READD WRITED CREADD CWRITED JUMP PUSHJ POPJ
POPJI BEQ BNE BPL BMI BCS BCC BVS
BVC BIS BIC BFS BFC BXSI BXCI NOP
ERROR XR ER MAGIC TEXT XCOR YCOR CLEARCLOCK
UART DSR KEY PUT
)))
(DEFUN FREQ (N) (COND ((GET N 'USE)(PRINT (LIST N (GET N 'USE))))))
(DEFUN FREQS () (PROG2 (MAPCAR 'FREQ SYM-LIST) T ) )
(PRINT '(NOT FOR DEBUGGING HARDWARE))