1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-28 09:27:41 +00:00
Files
PDP-10.its/src/draw/com.505
2018-05-05 19:19:09 +02:00

1562 lines
26 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
;<DRAW>COM.FAI.132, 15-NOV-75 18:03:32, EDIT BY HELLIWELL
VERSION(COM,11)
GLOBAL DFLT0,DFLTM
STRT: MOVE P,[IOWD PDLEN,PDL]
RESET
III,< MOVE T,[14,,1]
SETUUO T, ;Request to run on CPU 0 only
>;III
DEC,< PUSHJ P,DECGO
VB10,< SETZ
SETUWP ;SET THE HIGH SEG. WRITABLE
JFCL
>;VB10
>;DEC
SETZM ZLOWBEGIN
MOVE T,[XWD ZLOWBEGIN,ZLOWBEGIN+1]
BLT T,ZLOWEND ;SEE THE CODE WE SAVE!
DEC,< PUSHJ P,CLTIME > ;INITIALIZE TIME CELLS
LAY,< JSR LINIT ;INIT LAYOUT STUFF>
STRTL: SETZM ZEROBEGIN
MOVE T,[ZEROBEGIN,,ZEROBEGIN+1]
BLT T,ZEROEND
MOVE P,[IOWD PDLEN,PDL]
MOVE T,[XWD -MPDLEN,MACPDL-1]
MOVEM T,MACPNT
MPC,< MOVEI T,FSTBOD
MOVEM T,BODPNT ;INITIALIZE STANDARD DIP DEFS
>;MPC
SETOM DSKEND ;ALWAYS STARTS WITH EOF
LAY,<
MD,< OUTSTR[ASCIZ/LAYOUT, D SIDE!
/]
>;MD
MPC,< OUTSTR[ASCIZ/LAYOUT, PC SIDE!
/]
>;MPC
>;LAY
PUSHJ P,BLKINI ;INITIALIZE BLOCK FREE STORAGE
;*** SET DEFAULTS, SETUP DISPLAY ***
PUSHJ P,ALLDEF
PUSHJ P,DCLAIM
DEC,< PUSHJ P,LOGINI >
PUSHJ P,NREADY
JRST MAIN
;SETUP DEFAULTS
ALLDEF:
ROUTE,<
MPC,< MOVEI T,3
MOVEM T,RCODE ;INITIALIZE ROUTE CODE
FOR I IN (CNR,FED,BAK,SID)
< MOVEI T,CAT(%,I)
MOVEM T,CAT(.,I)
>
>;MPC
>;ROUTE
DEC,<
MD,< PUSHJ P,SETOUT >
PUSHJ P,SETCLC ;DEFAULT TO CLOCATE & OUTSIDE
PUSHJ P,CLRLC ;AND NO LOWER CASE!
PUSHJ P,CLBOOP ;AND NO BOOPING.
GT,< SETOM OPTFLG > ;SET FOR OPTIMIZED DISPLAY ROUTINES
>;DEC
RSTDEF: PUSHJ P,CLRNOM ;INITIALIZE BOARD TYPE
MD,< PUSHJ P,CLRWW >
MOVEI T,DBLARR
MOVEM T,EOLCHR ;END OF LINE FOR TEXT
WAG,< MOVE T,[STRTWR] ;FIRST WIRE FILENAME -1
MOVEM T,LASTWR
>;WAG
MD,< DATE T,
HRLZM T,DRWDAT
MSTIME T,
IDIVI T,=1000*=60 ;TO MINUTES
HRRM T,DRWDAT
MOVSI T,EXTFIL
MOVEM T,DRWEXT ;INIT EXTENSION AND CHECKSUM
SETZB T,DRWNAM
NODEC,< DSKPPN T, >
DEC,< GETPPN T, >
MOVEM T,DRWPPN
>;MD
MOVEI T,DFSCL
MOVEM T,NSCALE
MD,< MOVEI T,8*2 ;STUB IS 8 STEPS
MOVEM T,STBSIZ
>;MD
MPC,< MOVSI SID,FRONT ;START ON FRONT SIDE
MOVEI T,=10 ;50 MIL STEPS TO START WITH
MOVEM T,STPSIZ
>;MPC
MOVEI T,BODM
MOVEM T,MODE
PUSHJ P,CLRBRT
MOVE 0,[DFLT0]
MOVE M,[DFLTM]
PUSHJ P,CLCBRT
JRST HOME ;CENTER SCREEN
;MAIN COMMAND LOOP
MLOP: XCT T ;XCT THE DISPATCH
TRNN INMOV ;ARE WE MOVING SOMETHING?
JRST MAIN0
PUSHJ P,@MDISP ;YES, MOVE IT
MOVE TT,CLOSES
MOVE T,MODE
CAIE T,PNTM
CAIN T,TXTM
MOVEM TT,MOVED
JRST MAIN
MAIN0: SKIPE A,MOVED
PUSHJ P,STOPM ;STOP MOVING - CHECK FOR OVERLAPPING POINTS
SETZM MOVED
MAIN: MOVEM 0,SAVER0 ;SAVE REGISTERS IN CASE OF REENTER
MOVEM M,SAVERM
NODEC,<
NOIII,<
SKIPE AUTOSM ;AUTO-SAVING?
SOSE AUTOSN ;YES, TIME TO SAVE?
CAIA
PUSHJ P,ESAVE ;DO ESAVE
>;NOIII
>;NODEC
SKIPE AUTOWM
SOSE AUTOWN
CAIA
PUSHJ P,EWRITE
LAY,< SKIPN C,ODISP ;IS OTHER PROG TRYING TO TELL US SOMETHING?>
PUSHJ P,GETCHM ;GET THE NEXT CHARACTER (IN C)
III,< CAIN C,40
PUSHJ P,LHYRST
>;III
LAY,< SETZM ODISP ;ONLY ONCE!>
TLNN M,DSKACT!MACACT ;DON'T UPDATE CURSOR?
SKIPN ISDPY
JRST NOCURS
TRNN M,CURSOR ;ARE WE CURSING?
JRST NOCURS
PUSH P,C
PUSHJ P,GETPOS ;UPDATE POSITION FROM DISPLAY PROG
TRNE INMOV ;MAY HAVE TO FIX MOVING
PUSHJ P,@MDISP
POP P,C
NOCURS: LDB A,[POINT 2,C,28] ;GET CONTROL BITS
MOVEI B,1
LSH B,(A) ;BITS TO TEST FOR CTRL KEYS
ANDI C,177 ;CLEAR EXTRA BITS
SKIPN T,DTAB(C) ;PICK UP TABLE ENTRY. ZERO?
JRST ERRET ;YES, ILLEGAL CHR.
MOVEI D,1
LSH D,@MODE ;GET A BIT TO TEST FOR LEGAL IN THIS MODE
CAIA
AOBJN T,.+1
TDNN D,(T) ;DO BITS MATCH?
JRST .-2
JRA T,MLOP ;YES, MATCH, PICK UP DISPATCH INSTR.
ERRET: PUSHJ P,PERRET
JRST MAIN
FUCKUP:
OUTSTR[ASCIZ/Boy, have I screwed up! Get a wizard!!
CALLED FROM /]
PUSH P,T
PUSH P,TT
HRLO TT,-2(P) ;GET PC
FCKLOP: SETZ T,
LSHC T,3
ADDI T,60
OUTCHR T
TRNE TT,777777
JRST FCKLOP
OUTSTR[ASCIZ/
/]
POP P,TT
POP P,T
NODEC,< POP P,.JBOPC ;POP RETURN INTO .JBOPC
SKIPN .JBDDT
HALT @.JBOPC
PUSH P,.JBDDT
POPJ P,
>;NODEC
DEC,< JRST TODDT >
;0-9 SPC + - 
.1DNUM:
ANYALT
-1
.2DNUM: PUSHJ P,ALTNUM
JRST ERRET
SKEY,<
.1D1: 1PNTM!1TXTM
ANYALT
-1
.2D1: PUSHJ P,LINUP
PUSHJ P,ALTNUM
JRST ERRET
.1D2: 1PNTM!1TXTM
ANYALT
-1
.2D2: PUSHJ P,LINDWN
PUSHJ P,ALTNUM
JRST ERRET
.1D3: 1PNTM!1TXTM
ANYALT
-1
.2D3: PUSHJ P,LINLFT
PUSHJ P,ALTNUM
JRST ERRET
.1D4: 1PNTM!1TXTM
ANYALT
-1
.2D4: PUSHJ P,LINRT
PUSHJ P,ALTNUM
JRST ERRET
.1D5: 1BODM
ANYALT
-1
.2D5: MODISP C1,ASSET
PUSHJ P,ALTNUM
JRST ERRET
.2D6: PUSHJ P,ALTNUM
PUSHJ P,MOVLF1
.2D7: PUSHJ P,ALTNUM
PUSHJ P,MOVRT1
.2D8: PUSHJ P,ALTNUM
PUSHJ P,MOVUP1
.2D9: PUSHJ P,ALTNUM
PUSHJ P,MOVDN1
>;SKEY
.1DSPC:
MD,< 1EDTIM ; SPACE>
MD,< 1PNTM!1TXTM ;POINT MODE>
1SETM ;SET MODE
MD,< 1EDTGM ;GETTING BODY MODE>
ANYALT
-1
.2DSPC:
MD,< PUSHJ P,EDSPC>
MD,< PUSHJ P,PNSPC>
PUSHJ P,SSPACE
MD,< PUSHJ P,GETYES ;PLANT BODY>
PUSHJ P,FORWRD
PUSHJ P,CLRMOV ;STOP MOVING
SKEY,<
.1DCX:
MD,< 1EDTIM >
ANYALT
-1
.2DCX:
MD,< PUSHJ P,EDSPC >
PUSHJ P,FORWRD
JRST ERRET
>;SKEY
.1DPLS:
MD,< 1EDTIM ;+ (EDIT INSERT MODE)>
1PNTM!1TXTM ;+ IN POINT MODE
1SETM ;+ IN SET MODE
ANYALT
-1
.2DPLS:
MD,< PUSHJ P,EDPLUS>
PUSHJ P,PPLUS
PUSHJ P,SPLUS
PUSHJ P,ALTPLS
JRST ERRET
.1DMNS:
MD,< 1EDTIM ;->
1PNTM!1TXTM ;POINT MODE
1SETM ;SET MODE
ANYALT
-1
.2DMNS:
MD,< PUSHJ P,EDMINS>
PUSHJ P,PNMNS
PUSHJ P,STMNS ;END BOX
PUSHJ P,ALTMNS ;- IN ALTER MODE
JRST ERRET
MD,<
.1DNOT: 1PNTM!1TXTM
-1
.2DNOT: PUSHJ P,PNOT
JRST ERRET
>;MD
;A-D
.1DA: 1PNTM!1TXTM
MD,< 1EDTTM
1BTXTM
>;MD
-1
.2DA: XCT (A)[JRST ERRET
PUSHJ P,PATT
PUSHJ P,LATT
PUSHJ P,ALTER]
MD,< MODISP C3,EALTER
MODISP C3,BTALTR
>;MD
JRST ERRET
.1DB: MD,<1BTXTM!>1SETM!1BODM
1PNTM!1TXTM
1LINM
-1
.2DB: MODISP C3,TOP3B
XCT (A)[JRST ERRET
MD,< PUSHJ P,BREAKH
PUSHJ P,BREAKV
>;MD
MPC,< JRST ERRET
JRST ERRET
>;MPC
PUSHJ P,TOP3B]
XCT (A)[JRST ERRET
MD,< PUSHJ P,BENDL1
PUSHJ P,BENDL2>
MPC,< PUSHJ P,BENDL
JRST ERRET>
PUSHJ P,TOP3B]
JRST ERRET
.1DC: ANYALT ;SNARF OFF EDIT ALTER MODE HERE
MD,<ALLEDM!1BTXTM!>1SETM!1BODM!1PNTM!1TXTM!1LINM
-1
.2DC: PUSHJ P,ALTC
XCT(A)[JRST ERRET
PUSHJ P,CCENTR ;CURSOR TO CENTER OF PIC
PUSHJ P,PCENTR ;PIC CENTER TO CURSOR POS.
PUSHJ P,HOME] ;BOTH BACK TO ZERO.
JRST ERRET
.1DD:
MD,< 1EDTIM ;D IN EDIT INSERT
1EDTM ;D IN EDIT MODE
1EDTPM ;CTRL 1 IN EDIT PIN MODE
>;MD
1BODM ;CTRL 1 OR 2 IN BODY MODE
1PNTM!1TXTM ;CTRL 1 IN POINT MODE
1SETM ;CTRL 1 IN SET MODE
1LINM ;CTRL 1 IN LINE MODE
ANYALT
MD,< 1EDTTM
1BTXTM
>;MD
-1
.2DD:
MD,< PUSHJ P,EDDEL ;D IN EDIT INSERT
PUSHJ P,EDDELE ;D IN EDIT MODE
MODISP C1,EDPDEL
>;MD
XCT (A)[JRST ERRET ;D IN BODY MODE
PUSHJ P,BODDEL
PUSHJ P,C2BDEL
JRST ERRET]
XCT (A)[JRST ERRET ;Delete in Point mode
PUSHJ P,PNTDEL
PUSHJ P,PN2DEL
JRST ERRET]
XCT (A)[JRST ERRET ;Set mode
PUSHJ P,SETDEL
PUSHJ P,SETKIL
PUSHJ P,DCOMPL]
XCT (A)[JRST ERRET ;Line mode
PUSHJ P,LINDEL ;DELETE LINE
MPC,< PUSHJ P,LINDL2 ;DELETE WIRE >
MD,< JRST ERRET >
JRST ERRET]
PUSHJ P,DELETE ;ALTER MODE DELETE
MD,< XCT (A)[JRST ERRET
PUSHJ P,EDTDEL
PUSHJ P,EDNPRP
JRST ERRET]
XCT (A)[JRST ERRET
PUSHJ P,BTXDEL
PUSHJ P,BTNPRP
JRST ERRET]
>;MD
JRST ERRET
MD,<
.1DE: ALLEDM ;<CTRL 1>E IN EDITOR
1SETM!1PNTM!1TXTM!1LINM ;CTRL 12 E IN TOP MODES
1BODM
1BTXTM
ANYALT
-1
.2DE: MODISP C1,EDITE
MODISP C3,ENTEDC
XCT (A)[JRST ERRET
PUSHJ P,ENTEPN
JRST ERRET
PUSHJ P,ENTEDC]
XCT (A)[JRST ERRET
PUSHJ P,ENTBTB
JRST ERRET
PUSHJ P,ENTEDC]
PUSHJ P,ELINE
JRST ERRET
>;MD
;E-K
MPC,<
.1DE: ANYALT
ROUTE,< 1PNTM!1TXTM>
-1
.2DE: PUSHJ P,ELINE
ROUTE,< XCT (A)[JRST ERRET
PUSHJ P,RSET1
PUSHJ P,RSET2
PUSHJ P,DOROUTE]
>;ROUTE
JRST ERRET
>;MPC
MD,<
.1DF: ANYALT
1PNTM!1TXTM
1BODM
1SETM
1EDTPM
1EDTTM
1BTXTM
-1
.2DF: PUSHJ P,ALTFND ;FIND A SUBSTRING
XCT(A)[ JRST ERRET ;points
PUSHJ P,FNEXTP
PUSHJ P,FNPLOC
PUSHJ P,FNPTXT]
XCT(A)[ JRST ERRET ;bodies
PUSHJ P,FNEXTB
PUSHJ P,FNBLOC
PUSHJ P,FNBNAM]
XCT(A)[ JRST ERRET ;sets
PUSHJ P,STBFND ;(Not in yet)
PUSHJ P,STTFND ;(Not in yet)
JRST ERRET]
XCT(A)[ JRST ERRET ;edit pin
PUSHJ P,FIXONE
JRST ERRET
PUSHJ P,PALL]
XCT (A)[JRST ERRET ;edit text
PUSHJ P,FNEXLT
PUSHJ P,FNLPRP
PUSHJ P,FNLTXT]
XCT (A)[JRST ERRET ;edit body text
PUSHJ P,FNEXBT
PUSHJ P,FNBPRP
PUSHJ P,FNBTXT]
JRST ERRET
.1DG: ALLEDM ;CTRL1 G IN EDIT INSERT AND EDIT MODE
1PNTM!1TXTM
-1
.2DG: MODISP C1,BODGET ;GET A BODY IN THE EDITOR.
MODISP C1,BJUMP
JRST ERRET
>;MD
MPC,<
.1DF: 1PNTM!1TXTM
ANYALT
1BODM
1SETM
-1
.2DF: XCT(A)[JRST ERRET
PUSHJ P,FEED
PUSHJ P,PLANE
PUSHJ P,NPFEED]
PUSHJ P,ALTFND
XCT(A)[ JRST ERRET
PUSHJ P,FNEXTB
PUSHJ P,FNBLOC
PUSHJ P,FNBNAM]
MODISP C1,STBFND
JRST ERRET
.1DG: 1BODM
1PNTM!1TXTM
-1
.2DG: XCT (A)[JRST ERRET
PUSHJ P,REPONE
PUSHJ P,REPSOME
PUSHJ P,REPALL]
MODISP C1,BJUMP
JRST ERRET
>;MPC
.1DH: -1 ;VARIABLE COMMANDS IN ALL MODES
.2DH: XCT (A)[JRST ERRET
PUSHJ P,VARNXT
PUSHJ P,VARDEF
PUSHJ P,VARTYP]
.1DI:
MD,< 1EDTM
ALLEDM ;<CTRL 1>I IN EDIT MODE AND EDIT TEXT MODE
1SETM!1PNTM!1TXTM!1BODM!1LINM!1BTXTM
>;MD
MPC,< 1SETM!1PNTM!1TXTM!1BODM!1LINM>
ANYALT
-1
.2DI:
MD,< XCT(A)[ JRST ERRET
PUSHJ P,EDINS
PUSHJ P,EDINS2
JRST ERRET]
MODISP C1,EDINS
>;MD
MODISP C2,DREAD
PUSHJ P,INSERT ;*I IN ALTER MODE
JRST ERRET
.1DJ: 1PNTM!1TXTM
MPC,< 1LINM >
1SETM
-1
.2DJ: PUSHJ P,PJUMP
MPC,< XCT (A)[JRST ERRET
PUSHJ P,LJUMP1 ;JUST THIS SEGMENT
PUSHJ P,LJUMP2 ;WHOLE LINE
JRST ERRET]
>;MPC
MODISP C1,SETJMP
JRST ERRET
.1DK: 1PNTM!1TXTM ;POINT MODE <CTRL 1>
MD,< 1BTXTM
1EDTTM ;ANY CTRL IN EDIT TEXT MODE
>;MD
1SETM ;2K IN SET MODE
ANYALT
-1
.2DK: MODISP C1,PTKILL
MD,< XCT (A)[JRST ERRET
PUSHJ P,BTXKIL
PUSHJ P,BTXUKL
JRST ERRET]
XCT (A)[JRST ERRET
PUSHJ P,EDTKIL
PUSHJ P,BTXUKL
JRST ERRET]
>;MD
MODISP C2,STKILT
PUSHJ P,KILL
JRST ERRET
;L-Q
.1DL: MD,<1BTXTM!>1SETM!1PNTM!1TXTM!1BODM!1LINM
ANYALT
-1
.2DL: XCT (A)[JRST ERRET
MD,< PUSHJ P,TTYPE
PUSHJ P,LTYPE>
MPC,< JRST ERRET
JRST ERRET>
PUSHJ P,TOP3L]
PUSHJ P,SLINE
JRST ERRET
.1DM: MD,<1EDTM!1EDTTM!1EDTPM!1BTXTM!>1SETM!1BODM!1PNTM!1TXTM
-1
.2DM: XCT (A)[JRST ERRET
PUSHJ P,PBMOV
PUSHJ P,TXTMOV
PUSHJ P,PGRAB]
JRST ERRET
.1DN:
MD,< 1EDTPM
1PNTM!1TXTM>
1BODM
MD,< 1EDTM >
ANYALT
-1
.2DN:
MD,< XCT (A)[JRST ERRET
PUSHJ P,PNUMS
PUSHJ P,SETORI
PUSHJ P,XYPOFF]
XCT (A)[JRST ERRET
PUSHJ P,SETCPN
PUSHJ P,PMOVEL ;MOVE LOC
JRST ERRET]
>;MD
XCT (A)[JRST ERRET
PUSHJ P,BNUMS
MD,< PUSHJ P,BMOVEL ;MOVE LOC>
MPC,< JRST ERRET >
MD,< PUSHJ P,SETSEC >
MPC,< JRST ERRET > ]
MD,< MODISP C2,EMOVEL >
PUSHJ P,ALTN
JRST ERRET
.1DO: 1BODM
MD,< 1PNTM!1TXTM
1EDTGM
>;MD
MPC,< 1SETM>
-1
.2DO: XCT (A)[JRST ERRET
PUSHJ P,BROT
MD,< PUSHJ P,STUBB >
MPC,< JRST ERRET >
JRST ERRET]
MD,< XCT (A)[JRST ERRET
PUSHJ P,STUB
PUSHJ P,STUBCC
PUSHJ P,STUBCW]
MODISP C1,GETSPC
>;MD
MPC,< MODISP C1,SROT>
JRST ERRET
.1DP:
MD,< 1EDTPM
ALLEDM ;P IN EDIT MODE
>;MD
MD,<1BTXTM!>1LINM
1BODM ;P IN BODY MODE
1PNTM!1TXTM
1SETM ;CTRL1 P IN SET MODE
-1
.2DP:
MD,< XCT (A)[JRST ERRET
PUSHJ P,EDITP
DEC,< PUSHJ P,SETPOL >
NODEC,< JRST ERRET >
JFCL ] ;ALREADY IN PIN MODE, NOOP
XCT (A)[JRST ERRET
PUSHJ P,EDITP
JRST ERRET
PUSHJ P,EDPENT]
>;MD
MODISP C3,TOP3P
XCT (A)[JRST ERRET
PUSHJ P,BODPLC
MPC,< JRST ERRET >
MD,< PUSHJ P,BPINS >
PUSHJ P,TOP3P]
XCT (A)[JRST ERRET
PUSHJ P,PNTPLC
JRST ERRET
PUSHJ P,TOP3P]
XCT (A)[JRST ERRET
JRST ERRET
PUSHJ P,SETCOP ;COPY SET THEN MOVE
PUSHJ P,TOP3P] ;GO TO POINT MODE
JRST ERRET
.1DQ: 1PNTM!1TXTM ;Z IN POINT MODE
MD,<
STANFO,<
1EDTTM ;CTRL1 Z IN EDIT TEXT MODE
1BTXTM
>;STANFO
1BODM
1EDTM
>;MD
-1
.2DQ:
NOSTANFO,<
MD,< XCT (A)[JRST ERRET
JRST ERRET
PUSHJ P,UNOFFC
PUSHJ P,CONOFF]
>;MD
MPC,< JRST ERRET >
>;NOSTANFO
STANFO,<
XCT (A)[JRST ERRET
PUSHJ P,PNTQ
MD,< PUSHJ P,UNOFFC
PUSHJ P,CONOFF >
MPC,< JRST ERRET
JRST ERRET >]
MD,< MODISP C1,TPNTQ
MODISP C1,BTPNTQ
>;MD
>;STANFO
MD,< XCT (A)[JRST ERRET
JRST ERRET
PUSHJ P,BLOOFF
PUSHJ P,BLCOFF]
MODISP C2,ELCCLR
>;MD
JRST ERRET
;R-V
MD,<
.1DR: 1EDTIM ;R IN EDIT INSERT
1EDTM ; " " MODE
1BODM
ANYALT
-1
.2DR: PUSHJ P,EDCHNG
PUSHJ P,EDCHNE
XCT (A)[JRST ERRET
PUSHJ P,REPONE
PUSHJ P,REPSOME
PUSHJ P,REPALL]
PUSHJ P,REPLAC
JRST ERRET
>;MD
MPC,<
.1DR: 1PNTM!1TXTM!1LINM!1SETM!1BODM
ANYALT
-1
.2DR: XCT (A)[JRST ERRET
PUSHJ P,[TRZ INLIN!INMOV
SWITCH
TRO MCHG!NEEDCL
POPJ P,]
PUSHJ P,[TRZE BTHSDS
TRO MCHG
POPJ P,]
PUSHJ P,[TRON BTHSDS
TRO MCHG
POPJ P,]]
PUSHJ P,REPLAC
JRST ERRET
>;MPC
.1DS: MD,<1BTXTM!>1TXTM!1PNTM!1SETM!1LINM
1BODM
ANYALT
-1
.2DS: MODISP C3,TOP3S ;GO TO SET MODE
XCT (A)[JRST ERRET
PUSHJ P,PSWAPA
MD,< PUSHJ P,PSWAPB >
MPC,< JRST ERRET >
PUSHJ P,TOP3S]
PUSHJ P,SEARCH
JRST ERRET
.1DT:
MD,< 1BTXTM
ALLEDM ;CTRL 1 IN EDIT
1BODM
>;MD
1LINM!1SETM!1BODM
1PNTM!1TXTM ; " " IN POINT MODE
-1
.2DT:
MD,< XCT (A)[JRST ERRET
PUSHJ P,BTXPLC
JRST ERRET
PUSHJ P,TOP3T]
XCT (A)[JRST ERRET
PUSHJ P,EDTXT
PUSHJ P,EDTENT
PUSHJ P,EDTENT]
XCT (A)[JRST ERRET
PUSHJ P,BTXPLB
NIL,< PUSHJ P,TRANSPOSE > ;PACKAGE STUFF SUPERCEDES L/R BITS
JRST ERRET
PUSHJ P,TOP3T]
>;MD
MODISP C3,TOP3T
XCT (A)[JRST ERRET
PUSHJ P,PNTTXT
MPC,< JRST ERRET >
MD,< PUSHJ P,PNTTX2 >
PUSHJ P,TOP3T]
JRST ERRET
.1DU:
MPC,< 1PNTM!1TXTM >
ANYALT
-1
.2DU:
MPC,< XCT(A)[JRST ERRET
PUSHJ P,UNFEED
PUSHJ P,UNPLAN
JRST ERRET]
>;MPC
PUSHJ P,ALTU
JRST ERRET
.1DV:
-1
.2DV:
LAY,<
MD,< MODISP C3,GETPC >
MPC,< MODISP C3,GETD >
>;LAY
NOLAY,< JRST ERRET >
;W-Z
.1DW: MD,<1BTXTM!>1SETM!1BODM!1PNTM!1TXTM!1LINM
-1
.2DW: XCT(A)[JRST ERRET
PUSHJ P,DWRITE
PUSHJ P,WIRE
PUSHJ P,PLOT]
JRST ERRET
.1DX: -1
.2DX: PUSHJ P,DOOX
.1DY:
MD,< ALLEDM
1BTXTM
1BODM
>;MD
-1
.2DY:
MD,< XCT (A)[JRST ERRET
PUSHJ P,EDTPRP
PUSHJ P,EDCPRP
JRST ERRET]
XCT (A)[JRST ERRET
PUSHJ P,BTXPRP
PUSHJ P,BTCPRP
JFCL] ;STAY IN BTXTM
XCT (A)[JRST ERRET
PUSHJ P,BTXPRB
PUSHJ P,BTCPRB
PUSHJ P,ENTBTM]
>;MD
JRST ERRET
.1DZ: ANYALT
1PNTM!1TXTM ;CTRL1 Z IN POINT MODE
MD,< 1EDTTM ;CTRL1 Z IN EDIT TEXT MODE
1BTXTM
>;MD
-1
.2DZ: PUSHJ P,ALTZAP ;ZAP STRING
STANFO,<XCT (A)[JRST ERRET
PUSHJ P,PNTZ
MD,< PUSHJ P,UNOFFT
PUSHJ P,PUTOFF >
MPC,< JRST ERRET
JRST ERRET >]
>;STANFO
NOSTANFO,<
MPC,< JRST ERRET >
MD,< XCT (A)[JRST ERRET
JRST ERRET
PUSHJ P,UNOFFT
PUSHJ P,PUTOFF ]
>;MD
>;NOSTANFO
MD,< XCT (A)[JRST ERRET
STANFO,<PUSHJ P,TPNTZ>
NOSTANFO,<JRST ERRET>
JRST ERRET
PUSHJ P,EDTTZ]
XCT (A)[JRST ERRET
STANFO,<PUSHJ P,BTPNTZ >
NOSTANFO,<JRST ERRET>
JRST ERRET
PUSHJ P,BTXTZ]
>;MD
JRST ERRET
;ALT BS . | & # 
.1DALT:
MD,< 1EDTIM!1EDTTM!1EDTPM ;ALTMODE IN EDIT INSERT
1BTXTM
>;MD
1SETM
1PNTM!1TXTM ;POINT MODE
MD,< 1EDTGM ;BODY GETTING MODE>
1ALTM
1MALTM
MD,< 1EDTAM
1BTALTM
>;MD
-1
.2DALT:
MD,< PUSHJ P,EDALT
PUSHJ P,CLRMOV
>;MD
PUSHJ P,SETALT
PUSHJ P,PNALT
MD,< PUSHJ P,GETALT >
PUSHJ P,ALTALT
PUSHJ P,MALTALT
MD,< PUSHJ P,ELTALT
PUSHJ P,BTXALT
>;MD
JRST ERRET
.1DBS:
MD,< 1EDTIM ;BS>
ANYALT
-1
.2DBS:
MD,< PUSHJ P,EDBS>
PUSHJ P,BAKWRD
JRST ERRET
.1DPER:
1PNTM!1TXTM
-1
.2DPER:
XCT(A) [
LAY,< PUSHJ P,PLAIN. >
NOLAY,< JRST ERRET >
PUSHJ P,CTRL.
PUSHJ P,META.
ROUTE,<
MPC,< PUSHJ P,CTMT. >
MD,<
LAY,< PUSHJ P,CTMT. >
NOLAY,< PRINTX WHAT ARE YOU DOING WITH MD, ROUTE, AND NOLAY?>
>;MD
>;ROUTE
NOROUTE,<JRST ERRET >
]
JRST ERRET
.1DVBR:
MPC,< 1PNTM!1TXTM >
-1
.2DVBR:
MPC,< PUSHJ P,PLFEED > ;**| IN POINT MODE
JRST ERRET
.1DAMP: 1PNTM!1TXTM
1BODM
1SETM
-1
.2DAMP: XCT (A)[JRST ERRET ;& POINT MODE
PUSHJ P,APPPNT
PUSHJ P,ASSETP
PUSHJ P,CLRCUR]
XCT (A)[JRST ERRET ;& BODY MODE
PUSHJ P,APPBOD
PUSHJ P,ASSETB
PUSHJ P,CLRCUR]
XCT (A)[JRST ERRET ;& SET MODE
PUSHJ P,APPSET
PUSHJ P,SETSET
PUSHJ P,CLRCUR]
MODISP C3,CLRCUR ;CLEAR CURRENT SET ONLY ()
.1DSHRP:1PNTM!1TXTM
1BODM
1SETM
ANYALT
-1
.2DSHRP:XCT (A)[JRST ERRET
PUSHJ P,XPNT
PUSHJ P,XPNTA
JRST ERRET]
XCT (A)[JRST ERRET
PUSHJ P,XBOD
PUSHJ P,XBODA
JRST ERRET]
XCT (A)[JRST ERRET
PUSHJ P,XSET
PUSHJ P,XSETA
JRST ERRET]
PUSHJ P,SPALTN
JRST ERRET
.1DBAR: ; IS SAME AS 
.1DEQV: 1BODM
-1
.2DBAR:
.2DEQV: MODISP C1,ASSET
JRST ERRET
;" ?     \ = ^Z ^K
.1DDBQ: 1PNTM!1TXTM
1BODM
MD,< 1EDTM
1EDTPM
1EDTTM!1BTXTM
>;MD
-1
.2DDBQ: XCT (A)[JRST ERRET ;POINT,TEXT MODES
PUSHJ P,STOTXT
PUSHJ P,STOCLC
JRST ERRET]
XCT (A)[JRST ERRET ;BODY MODE
PUSHJ P,STONAM
PUSHJ P,STOBLC
PUSHJ P,STODIP]
MD,< XCT (A)[JRST ERRET ;BODY EDIT MODE
PUSHJ P,STFLNM
JRST ERRET
PUSHJ P,STFLDP]
MODISP C2,STOBPN ;BODY EDIT PIN MODE
XCT (A)[JRST ERRET ;BODY TEXT MODE
PUSHJ P,STOBTX
PUSHJ P,STOBTP
JRST ERRET]
>;MD
JRST ERRET
.1DQUES:
MPC,<SHORT,< -1-ANYALT >>
UML,<
MD,< -1-ANYALT-ALLEDM >
>;UML
-1
.2DQUES:
MPC,<SHORT,< MODISP C0,SHWERR ;SHOW A SHORTING ERROR>>
UML,<
MD,< MODISP C0,SHWERR ;SHOW A SINGLE UNNAMED PIN ERROR>
>;UML
JRST ERRET
NOSKEY,<
.1DLBC: 1PNTM!1TXTM
-1
.2DLBC: PUSHJ P,LINLFT
JRST ERRET
.1DRBC: 1PNTM!1TXTM
-1
.2DRBC: PUSHJ P,LINRT
JRST ERRET
.1DUBC: 1PNTM!1TXTM
-1
.2DUBC: PUSHJ P,LINUP
JRST ERRET
.1DDBC: 1PNTM!1TXTM
-1
.2DDBC: PUSHJ P,LINDWN
JRST ERRET
>;NOSKEY
.1DBSL: MD,<1EDTAM!1BTALTM!>1ALTM ;BACK SLASH
-1
.2DBSL: PUSHJ P,SETSIZ ;SET CHAR SIZE IN ALTER MODE
PUSHJ P,MOVDN1 ;CURSOR MOVE DOWN SMALL
.1DEQU:
MD,< 1EDTIM >
1PNTM!1TXTM ;POINT MODE
1SETM ;SET MODE
-1
.2DEQU:
MD,< PUSHJ P,EDMINS>
PUSHJ P,PNMNS
PUSHJ P,STMNS ;END BOX
JRST ERRET
.1DDCR: ANYALT
-1
.2DDCR: PUSHJ P,SLINE
JRST ERRET
.1DUCR: ANYALT
-1
.2DUCR: PUSHJ P,MSLINE
JRST ERRET
SUBTTL Command dispatch table
DTAB: 0
XWD [PUSHJ P,MAKDWN],[-1] ;
FOR I_2,7<0 ;,,,,,
>
SKEY,< XWD .2DBS,.1DBS > ;^H BACKSPACE
NOSKEY,< 0 > ;LAMBDA
0 ;TAB
NOIII,< XWD [JFCL],[-1] > ;LF IS NOOP
III,< XWD [PUSHJ P,LHYRST],[-1] > ; LF refreshes Leahy's memory
SKEY,< XWD .2DDCR,.1DDCR > ;^K (CURSOR UP)
NOSKEY,< 0 > ;VERTICAL TAB
FOR I_14,""-1<0 ;FF AND CR
>
XWD [PUSHJ P,MOVDN2],[-1] ; CURSOR DOWN LARGE
XWD [PUSHJ P,MOVUP2],[-1] ; CURSOR UP LARGE
NOSKEY,< XWD .2DUBC,.1DUBC ; 20
XWD .2DDBC,.1DDBC ; 21
XWD .2DLBC,.1DLBC ; 22
XWD .2DRBC,.1DRBC ; 23
>;NOSKEY
SKEY,< 0 ;20
0 ;21
0 ;22
0 ;23
>;SKEY
0 ; 24
0 ; 25
0 ; 26
XWD .2DBAR,.1DBAR ; 27
NOSKEY,< 0 > ;_ 30
SKEY,< XWD .2DCX,.1DCX > ;^X
XWD [PUSHJ P,MAKRIT],[-1] ;
SKEY,< XWD .2DUCR,.1DUCR > ;^Z (UP CURSOR)
NOSKEY,< 0 > ; TILDE 32
0 ;33 
0 ;
0 ;
NOSKEY,<XWD .2DEQV,.1DEQV > ;36 
SKEY,< 0 >
0
XWD .2DSPC,.1DSPC ; SPACE
0 ;EXCLAMATION MARK
XWD .2DDBQ,.1DDBQ ;DOUBLE QUOTE
XWD .2DSHRP,.1DSHRP ;#
0 ;$
NOSKEY,< 0 ;%
XWD .2DAMP,.1DAMP ;&
0 ;'
XWD [PUSHJ P,MOVLF1],[-1] ;CURSOR LEFT SMALL
XWD [PUSHJ P,MOVRT1],[-1] ;CURSOR RIGHT SMALL
>;NOSKEY
SKEY,< XWD .2DAMP,.1DAMP ;%
XWD [PUSHJ P,MOVLF2],[-1] ;& CURSOR LEFT LARGE
XWD [PUSHJ P,MOVRT2],[-1] ;' CURSOR RIGHT LARGE
XWD [PUSHJ P,MOVUP2],[-1] ;( CURSOR UP LARGE
XWD [PUSHJ P,MOVDN2],[-1] ;) CURSOR DOWN LARGE
>;SKEY
XWD [PUSHJ P,MAKSML],[-1] ;* SHRINK PIC
XWD .2DPLS,.1DPLS ;+ (EDIT INSERT MODE)
0 ;,
XWD .2DMNS,.1DMNS ;-
XWD .2DPER,.1DPER ;period
XWD [PUSHJ P,MOVUP1],[-1] ;slash - CURSOR UP SMALL
NOIII,< XWD .2DNUM,.1DNUM > ;0
III,< XWD .2DPLS,.1DPLS > ;make "0" same as "+"
FOR @$ I E <12345>
<
SKEY,< XWD .2D$I,.1D$I >
NOSKEY,< XWD .2DNUM,.1DNUM >
>
FOR @$ I E <6789>
<
SKEY,< XWD .2D$I,.1DNUM >
NOSKEY,< XWD .2DNUM,.1DNUM >
>
0 ;:::
XWD [PUSHJ P,ITSEM],[-1] ;;;;;;;;
NOSKEY,< 0
XWD .2DEQU,.1DEQU ;=
0
>;NOSKEY
SKEY,< XWD [PUSHJ P,MAKLFT],[-1] ;WINDOW LEFT
XWD .2DEQU,.1DEQU ;=
XWD [PUSHJ P,MAKRIT],[-1] ;WINDOW RIGHT
>;SKEY
XWD .2DQUES,.1DQUES ;?
XWD [PUSHJ P,DSKIN],[-1] ;@
FOR @$ I E <ABCDEFGHIJKLMNOPQRSTUVWXYZ>
< XWD .2D$I,.1D$I
>
XWD [PUSHJ P,MOVLF2],[-1] ;CURSOR LEFT LARGE
XWD .2DBSL,.1DBSL ;CURSOR DOWN SMALL (SET CHAR SIZE IN ALTER MODE)
NOSKEY,< XWD [PUSHJ P,MOVRT2],[-1] >;CURSOR RIGHT LARGE
SKEY,< XWD [PUSHJ P,MAKDWN],[-1] >;WINDOW DOWN
XWD [PUSHJ P,MAKUP],[-1] ;^
XWD [PUSHJ P,MAKLFT],[-1] ;_
0 ;140 `
FOR @$ I E <ABCDEFGHIJKLMNOPQRSTUVWXYZ>
< XWD .2D$I,.1D$I
>
FOR I_"Z"+41,173<0
>
0
0
0
XWD .2DBS,.1DBS ;BS
0
MD,<
ORG DTAB+NOT
XWD .2DNOT,.1DNOT ;
>
ORG DTAB+BIGCHR
XWD [PUSHJ P,MAKBIG],[-1] ;
ORG DTAB+VRTBAR
XWD .2DVBR,.1DVBR ;|
ORG DTAB+ALTMOD
XWD .2DALT,.1DALT ;ALTMODE
ORG DTAB+201
DOOX: TLNN M,DSKACT!MACACT
OUTSTR [ASCIZ /
WELL?/]
SETZ G,
MOVEI H,G
GETCM1: PUSHJ P,GETCOM
JUMPE T,GETCM2
GETFS(TT)
MOVEM T,1(TT)
HRRM TT,(H)
HRLZM 0,(TT)
MOVE H,TT
GETCM2: CAIN C,","
JRST GETCM1
CAIE C,12
JRST ERRX
JUMPE G,CPOPJ
GETCM3: PUSH P,G
MOVE T,1(G)
HLRZ TT,(G)
TRZ TFLG
TRNE TT,TFLG
TRO TFLG
PUSHJ P,SRVCOM
POP P,A
HRRZ G,(A)
FSTRET A
JUMPN G,GETCM3
POPJ P,
SRVCOM: JUMPE T,CPOPJ
TLNE M,DSKACT!MACACT
JRST NSRVPN
TRNE TFLG
OUTCHR["-"]
PUSH P,T
MOVE TT,T
PUSHJ P,SIXPNT ;PRINT COMMAND WE ARE SERVICING
POP P,T
NSRVPN: MOVSI TTT,770000
SETZ TT, ;CLEAR MASK
TDNE T,TTT
TDO TT,TTT
LSH TTT,-6
JUMPN TTT,.-3
SETZ A, ;NO PARTIAL MATCH FOUND YET!
MOVSI D,-TABLEN ;MAKE AOBJN POINTER
XLOP: CAMN T,XTAB(D)
JRST EXACT
MOVE TTT,TT
AND TTT,XTAB(D)
CAMN TTT,T
JRST [ JUMPN A,XAMBIG ;TOO MANY MATCHES?
MOVE A,D
JRST .+1]
AOBJN D,XLOP
JUMPE A,PERRET ;ANY MATCH?
MOVE D,A ;YES, CALL IT
TLNE M,DSKACT!MACACT
JRST EXACT
ANDCA TT,XTAB(D)
LSH TT,6
TLNN TT,770000
JRST .-2
PUSHJ P,SIXPNT
EXACT: TRNN TFLG ;IS THIS A NOT
SKIPA A,XDIS(D) ;NO
MOVS A,XDIS(D) ;YES
TRNN A,-1 ;ANY DISPATCH FOR THIS FLAVOR?
JRST PERRET
TLNN M,DSKACT!MACACT
OUTSTR[ASCIZ/
/]
JRST (A) ;YES
XAMBIG: TLNN M,DSKACT!MACACT
OUTSTR[ASCIZ/ IS AMBIGUOUS!
/]
POPJ P,
ERRX: SKIPE B,G
PUSHJ P,PUTFS
JRST INNERR
GETCOM: PUSHJ P,GETLIN
TRO TFLG ;ASSUME NOT
CAIN C,"-"
JRST GETWRD
TRZ TFLG ;NOT NOT
SETZ T,
MOVE A,[POINT 6,T]
JRST ISCHRX
PNTCOM: MOVSI A,-TABLEN
MOVEI TTT,8
TVOFF
PNTCM1: MOVE TT,XTAB(A)
PUSHJ P,SIXPNT
HLRZ TT,XDIS(A)
SKIPE TT
OUTCHR["-"]
SOJLE TTT,[OUTSTR[ASCIZ/
/]
MOVEI TTT,8
JRST PNTCM2]
OUTCHR[11]
PNTCM2: AOBJN A,PNTCM1
OUTSTR[ASCIZ/
/]
TVON
POPJ P,
SUBTTL Extended Commands
DEFINE XARGS
<
XMAC HELP,PNTCOM
XMAC START,STRT
XMAC EXIT,DOEXIT
MD,< XMAC SOCKET,STSOC,CLRSOC >
MD,< XMAC DIPFIL,SETDIP,CLRDPF >
XMAC BOOP,STBOOP,CLBOOP
XMAC INIT,STINIT,CLINIT
XMAC FDIP,FNBDIP
XMAC EXACT,EXACTS,EXACTC
XMAC LOWER,SETLC,CLRLC
XMAC IMACRO,IMACRO
XMAC WMACRO,WMACRO,WMACRS
XMAC AMACRO,MALTER
XMAC SMACRO,SAVMAC,UNSAVM
XMAC QUIT,MQUIT
XMAC SPACES,SETSPC,CLRSPC
XMAC CENTER,SETCNT,CLRCNT
DEC,< XMAC TIME,STTIME,CLTIME >
NOIII,<NODEC,< XMAC AUTOSAVE,SETSM,CLRSM >>
XMAC AUTOWRITE,SETWM,CLRWM
NOIII,<NODEC,< XMAC ESAVE,ESAVE >>
XMAC EWRITE,EWRITE
XMAC ELIST,EWLIST
XMAC EPLOT,EWPLOT
XMAC ENAME,CENAME,ZENAME
MD,< XMAC MAKEWD,MAKWIR >
MPC,< XMAC MAKWPC,MAKWIR >
XMAC SAVE,SAVEME
LAY,< XMAC RESAVE,RSAVEM >
XMAC SETWRT,SWRITE
XMAC WRTSET,SWRITE
XMAC DPY,SETDPY,CLRDPY
GT,< XMAC OPTIMIZE,SETOPT,CLROPT
DLX,< XMAC DL10,SETDLX,CLRDLX >
>;GT
XMAC MACRO,LMACRO
XMAC RMACRO,RENMAC
XMAC DMACRO,DELMAC,DELMCS
XMAC PMACRO,PMACRO
XMAC CLEAR,XCLEAR
XMAC CURSOR,CURSON,CURSOFF
XMAC DDT,GETDDT
XMAC BRIGHT,ITBRT,CLRBRT
XMAC CURBRT,ITCBRT,CLCBRT
XMAC MOVE,MOVREL
XMAC SCALE,ITSCAL
MD,< XMAC STUB,ITSTUB >
XMAC SIZE,ITSIZE
XMAC XOFF,SETXOF
XMAC YOFF,SETYOF
XMAC TEXT,SETTXT,CLRTXT
XMAC WINDOW,SETWIN,CLRWIN
XMAC LWINDOW,SETLWN,CLRLWN
XMAC DELNUL,DELNUL
XMAC DANGLE,DANGLE
DEC,<
MD,< XMAC CHKPOL,POLCHK
XMAC POLCHK,POLCHK
>;MD
>;DEC
XMAC DELSET,SBLAST
XMAC SETCEN,CENALL
XMAC COUNT,DOCNT
XMAC DSKIN,DSKIN
XMAC DSKINH,DSKINH
XMAC IFLUSH,IFLUSH
XMAC DSKOUT,PUTDSK
XMAC CLOSE,DSKCLR
XMAC NEWID,NEWID
XMAC PINS,SETPNS,CLRPNS
XMAC LOCS,STBLCS,CLBLCS
XMAC CLOCS,STCLCS,CLCLCS
XMAC CPINS,STCLCS,CLCLCS
XMAC LINES,STLINS,CLLINS
XMAC LOCATE,SETLCA,CLRLCA
XMAC CLOCATE,SETCLC,CLRCLC
XMAC SETLOC,SETLOC,SETLZ
XMAC FLASH,LOKSIG,XFLASH
IFN LAYSW!UMLSW,<XMAC ERROR,SETERR,CLRERR>
XMAC IDENTS,SIDENT,CIDENT
XMAC LIBPPN,STLPPN,CLLPPN
MD,< XMAC BOARD,GETBRD,CLRWW >
XMAC NOMENCLATURE,GETNOM,CLRNOM
XMAC AVAILABLE,AVAIL
UML,< XMAC IWIRES,READW,RELWIR
XMAC LSIGNALS,LSTSIG
XMAC NFLASH,LOOKN
>;UML
MD,< XMAC LPROPS,LPROPS
XMAC IDEFS,DREADT
XMAC RDEFS,DREADR
XMAC IERRORS,IERRS,RELWIR
XMAC FIXEM,FIXEM0
XMAC PTEXT,STPTXT,CLPTXT
XMAC BTEXT,STBTXT,CLBTXT
XMAC TMOVE,LOCTM
XMAC LMOVE,LOCLM
XMAC TERMRULE,STTRUL,CLTRUL
XMAC SETPINS,BPINSA,PINZ
XMAC SLICE,DOSLICE
XMAC TSLICE,TYPSLC,CLTSLC
XMAC DELLIB,DELLIB
XMAC LOCLIB,DELLBS
XMAC GETLIB,DOLIB
XMAC TYPLIB,LIBOUT
XMAC LIBTYP,LIBOUT
XMAC MODLIB,STMLIB,CLMLIB
XMAC MAPLIB,SETMAP,CLRMAP
XMAC LIBMAP,SETMAP,CLRMAP
XMAC GETBOD,RDBODY
XMAC RENAME,BODREN
XMAC TYPDEL,TYPDEL
XMAC DELTYP,TYPDEL
XMAC DIAMONDS,SETDMD,CLRDMD
XMAC PBOX,BOXSIZ
XMAC SHOWBOX,SHWBOX,NSHOBX
XMAC PICCEN,PICCEN
XMAC DEFPINS,SETIDS,CLRIDS
XMAC RPINID,SETRID,CLRRID
XMAC UNHIDE,STUNHI,CLUNHI
XMAC HIDE,CLUNHI,STUNHI
XMAC FIXALL,FIXALL
XMAC OUTSIDE,SETOUT,CLROUT
XMAC TITLE,STITLE,CTITLE
XMAC SITE,SITE,CSITE
XMAC AUTHOR,AUTHOR,CAUTHOR
XMAC REVISION,REVISE,CREVISE
XMAC MODULE,MODULE,CMODULE
XMAC VARIABLE,VARIABLE,CVARIABLE
XMAC PREFIX,PREFIX,CPREFIX
XMAC NUMBER,SETNUM,CLRNUM
XMAC PROJECT,PROJECT,CPROJECT
XMAC PAGE,PAGEOF,CPAGEOF
DEC,< XMAC SHEET,PAGEOF,CPAGEOF >
XMAC DCODE,DCODE,CDCODE
DEC,< XMAC DRAWN,SETDRN,CLRDRN
XMAC ENGINEER,SETENG,CLRENG
XMAC NEXTHI,SETNXT,CLRNXT
>;DEC
XMAC LTITLE,LTITLE
NIL,< XMAC TRANSPOSE,TRANALL > ;PACKAGE STUFF DOES AWAY WITH THIS
XMAC OFFALL,OFFALL
XMAC OFFRIGHT,OFFRHT,NOFRHT
XMAC OFFLOC,OFFLOC
XMAC DISLOC,SETDLC,CLRDLC
XMAC CHANGE,SIGCHG
XMAC ICHANGE,ISIGCH
XMAC ICPINS,ICPNCH
XMAC UNDERLINE,UNDRLN,NUNDRL
XMAC CBOX,SETCBX,CLRCBX
XMAC IPINS,INPINS
DEC,< XMAC IUML,INUML >
XMAC CEXCHANGE,UREST
XMAC MUNG,STRAIGHTEN
XMAC FSIGNAL,FNPSIG
XMAC FLNAME,FNLNAM
XMAC FLDIP,FNLDIP
XMAC FLNEXT,FNEXTL
XMAC FLPIN,FNLPN0
XMAC FLPNEXT,FNEXBP
XMAC RSPINI,RSPINI
XMAC INDIP,INDIP
XMAC APACK,APACK
>;MD
MPC,< XMAC WSIG,SIGPLT
XMAC IPAD,DREADT
XMAC IROUTE,DREADR
XMAC SETDIP,SETDIP
XMAC COMPONENT,STCOMP
XMAC SOLDER,STSOLD
XMAC CHANGE,CPADS
XMAC FEEDTHROUGH,STFEED,CLFEED
XMAC FINGER,STFING,CLFING
XMAC CDISP,STCARD,CLCARD
XMAC CARD,DOCARD
XMAC FTXT,FNPTXT
XMAC FCPIN,FNPLOC
XMAC FIND,FNEXTP
XMAC INNER,INNER
XMAC PPLOT,PPLOT
XMAC FLIP,STFLIP
XMAC MUNG,MUNG
XMAC UML,DOUML
XMAC DIPS,STDIPS,CLDIPS
XMAC STEP,SETSTP
XMAC VCC,SETPWR
XMAC GND,SETGND
XMAC POSITION,POSIT
SHORT,< XMAC SHORT,DOSHORT,CSHORT
XMAC PADDIAMETER,SETDIA
XMAC WIDTH,SETWID
XMAC SEPARATION,SETSEP
XMAC HOLE,SETHOL
XMAC CONNECTOR,SETCPN
>;SHORT
UML,<
WAG,<
XMAC WROUTE,WROUTE
>;WAG
>;UML
ROUTE,<
XMAC ROUTE,SETRTE
XMAC RDISP,SETRDS,CLRRDS
XMAC RCODE,SETRCD
XMAC CNR,SETCNR
XMAC FED,SETFED
XMAC BAK,SETBAK
XMAC SID,SETSID
>;ROUTE
>;MPC
STAN,< XMAC XTHICK,SETTHK,CLRTHK >
>;XARGS
DEFINE XMAC(A,B,C)
< <SIXBIT/A/>
>
XTAB: XARGS
DEFINE XMAC(A,B,C)
< C,,B
>
XDIS: XARGS
TABLEN__.-XDIS
PURGE XARGS
;EXIT ROUTINE
DOEXIT: EXIT 1,
POPJ P,