--- /dev/null
+/11 OS8 CAMP
+
+/
+/S.R.
+/
+/
+/CASSETTE & MAGTAPE POSITIONER (CAMP)
+/
+/
+/
+/
+/
+/
+/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE VITHOUT NOTICE
+/AND SHOULD NOT BE CONTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
+/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
+/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
+/
+/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
+/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
+/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
+/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
+/
+/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
+/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
+/DIGITAL.
+/
+/
+/ COPYRIGHT (C) 1973,1975,1977 BY DIGITAL EQUIPMENT CORPORATION.
+/
+/
+/
+/
+\f
+/ MUST SKIP LOCS 1000-1377
+
+ LINBUF=1000
+
+ XR1=11
+ XR2=12
+ XR3=13
+
+ *20
+
+TEMP, 0
+T, 0
+T2, 0
+LINPTR, 0
+T3, 0
+FLAG, 0
+SPKNT, 0
+DEVTYP, 0 /DEVICE TYPE (BITS 6-11)
+ENTRY, 0 /HANDLER ENTRY POINT
+NUM, 0
+TYP, 0 /0 MEANS 'F', 1 MEANS 'R'
+T4, 0
+DEVNUM, 0
+DCW, 0 /DEVICE CONTROL WORD
+DCWPTR, 0
+USR, 200 /POINTS TO USR ENTRY POINT
+ESCBIT, 0 /1 MEANS USER TYPED ALTMODE
+CNT, 0
+CTOFLG, 0 /-1 MEANS SAW ^O
+COUNT, 0
+PTR, 0
+DHIT, 0 /DEVICE HANDLER INFO TABLE - 1
+DHI, 0 /DEVICE HANDLER INFO
+DBLK, 0 /DEVICE HANDLER BLOCK
+VNOPTR, 0 /PTS TO VERSION # IN HANDLER
+VNO, 0 /CURRENT HANDLER VERSION NUMBER
+SAVPTR, 0
+NO, 0 /1 MEANS 'NO'
+FLG, 1 /1 MEANS SAW NO DIGITS
+P, 0
+RR, 0
+NUCODE, 0
+
+/ MAGTAPE SPECIAL CODES
+
+ REWKOD=1
+ SKFKOD=3 /SKIP FORWARD FILE
+ UNLKOD=4
+ EOFKOD=5
+ SKPKOD=2 /FORWARD RECORD
+ BAKKOD=SKPKOD+4000
+ BKFKOD=SKFKOD+4000
+
+ DTLA=6766
+
+/0000-0777 /CAMP
+/1000-1377 /OS/8 LINE BUFFER
+/1400-1777 /PS/8 LINE BUFFER
+/2000- /CAMP
+/7000-7177 /I/O BUFFER
+/7200-7577 /OS/8 HANDLER
+/7600-7777 /OS/8
+
+ DLDC=6746
+ DLAG=6743
+ PAGE
+\f *200
+
+START, SKP
+ JMP CHN
+ TAD ("#
+ JMS I [TYPE
+ JMS I [READ /READ A LINE INTO OS/8 LINE BUFFER
+CHN, TAD [LINBUF /CHAIN ENTRY ADDRESS
+ DCA LINPTR /INITIALIZE POINTER TO LINE BUFFER
+ STA
+ JMS I [SPACE /IGNORE LEADING SPACES
+ JMS GETTWO /GET TWO CHARS
+ DCA TEMP
+ JMS I [SCAN /SCAN PAST EXTRA LETTERS OR DIGITS
+ TAD TEMP
+ JMS I [BRANCH /GO TO APPROPRIATE ROUTINE
+ -2313;SKIP /SK
+ -0517;EOF /EO
+ -0201;BACK /BA
+ -2205;REWIND /RE
+ -2516;UNLOAD /UN
+ -2605;VERSION /VE
+ -1005;HELP /HE
+ -2664;V4 /V4
+ -2305;SYNTAX /SE
+ SETLOC=.-1
+ 0
+ SNA CLA
+ JMP I [GOAWAY
+ JMP I [SYNTAX /NONE OF THESE
+
+/V1 FEATURES:
+/FIXES SINCE FIELD TEST RELEASE:
+
+/1. ADDED CASSETTE SUPPORT
+/2. FIXED BUG RE IMMEDIATE ALTMOD
+/3. CHANGED SPECIAL CODES TO AGREE WITH NEW MAGTAPE HANDLER
+/4. IGNORE NULLS ON INPUT
+/5. ALLOW UNLOADING AN RK8E
+
+/CHANGES MADE TO V3:
+
+/1. SET COMMAND IMPLEMENTED
+
+/MAINTENANCE RELEASE CHANGES:
+
+/1. TOOK OUT 'SET' SINCE WE DON'T WANT TO SUPPORT IT
+/ UNTIL OS/8 V4
+/2. FIXED BUG RE AT EOF AND BOF MESSAGES
+/3. CHANGED CAMP TO USE NEW TM8E HANDLER
+/ NOTE: CAMP WILL NOT WORK PROPERLY WITH
+/ TM8E HANDLERS PRIOR TO VERSION F
+/4. PROPERLY FIND EOT EVEN IF WE'RE JUST
+/ BEFORE A FILE MARK.
+/5. GIVE AT BOT OR EOT MESSAGE IF SEE REFLECTIVE SPOT
+/6. CHANGED VERSION NUMBER TO V4
+/7. ENSURE THAT USER CAN'T PASS OVER EOD
+
+/V3D CHANGES:
+
+/1. FIXED BUG WITH UNLOADING RKS
+\f/ GETTWO
+
+/GET TWO LETTERS OR DIGITS FROM INPUT LINE, PACK IN SIXBIT
+/ADVANCE PAST THEM. SUBSTITUTE NULL IF NOT FOUND.
+
+GETTWO, 0
+ JMS GETSIX
+ CLL RTL
+ RTL
+ RTL
+ DCA T2
+ JMS GETSIX
+ TAD T2 /COMBINE
+ JMP I GETTWO
+
+GETSIX, 0 /GET A SIXBIT LETTER OR DIGIT (OR NULL)
+ JMS ALPHA /IS IT ALPHANUMERIC?
+ JMP NOTALPH /NO
+ AND [77 /YES
+ JMP I GETSIX /TRUNCATE TO SIXBIT
+NOTALPH,CLA
+ JMS BACKC
+ JMP I GETSIX /RETURN NULL
+
+GETC, 0 /GET A CHARACTER, ADVANCE POINTER
+ TAD I LINPTR
+ AND [177 /ALWAYS RETURN 8-BIT
+ SZA
+ TAD [200 /WITH HIGH ORDER BIT ON
+ ISZ LINPTR /ADVANCE SCAN
+ JMP I GETC /RETURN
+
+BACKC, 0 /MOVE SCAN POINTER BACK ONE
+ STA
+ TAD LINPTR
+ DCA LINPTR
+ JMP I BACKC /RETURN
+\f/RETURN 1 NOT OF TYPE DESIRED
+/RETURN 2 DESIRED TYPE
+/IN BOTH CASES, CHAR IS LEFT IN AC
+
+ALPHA, 0 /LOOK FOR ALPHANUMERIC
+ JMS I [GETC
+ JMS LETTER /IS IT A LETTER?
+ JMP TRYDIG /NO, TRY DIGIT
+ JMP GOTAL /YES
+TRYDIG, JMS DIGIT /IS IT A DIGIT?
+ JMP I ALPHA /NO, AINT LETTER OR DIGIT
+GOTAL, ISZ ALPHA /YES, EITHER LETTER OR DIGIT
+ JMP I ALPHA /RETURN WITH IT IN AC
+
+LETTER, 0 /LOOK FOR LETTER
+ TAD (-"A
+ CLL
+ TAD ("A-"Z-1
+ SNL
+ ISZ LETTER
+ TAD ("Z+1 /RESTORE CHAR
+ JMP I LETTER
+
+DIGIT, 0 /LOOK FOR DIGIT
+ TAD (-"0
+ CLL
+ TAD ("0-"9-1 /(DECIMAL)
+ SNL
+ ISZ DIGIT
+ TAD ("9+1 /RESTORE DIGIT TO CHARACTER FORM
+ JMP I DIGIT /AND RETURN WITH IT IN AC
+ PAGE
+\fSYNTAX, CLA
+ JMS PRINT
+ TEXT /? SYNTAX ERROR/
+GOAWAY, TAD ESCBIT
+ SZA CLA
+ JMP I [7605 /LINE ENDED WITH ESCAPE
+ TAD I [READ /WAS 'READ' EVER CALLED?
+ SZA CLA
+ JMP I [START /YES, GET A NEW LINE
+ JMP I [7605 /NO, WE MUST'VE BEEN CHAINED TO, RECALL KBM
+
+PRINT, 0
+ TAD I PRINT
+ RTR
+ RTR
+ RTR
+ JMS PRIN
+ TAD I PRINT
+ JMS PRIN
+ ISZ PRINT
+ JMP PRINT+1
+LV, JMS I [CRLF
+ ISZ PRINT
+ JMP I PRINT
+
+PRIN, 0
+ AND [77
+ SNA
+ JMP LV
+ TAD [240
+ AND [77
+ TAD [240
+ DCA T3
+ TAD [200
+ KRS
+ TAD (-203
+ SNA
+ JMP CTRLC
+ TAD (203-217 /^O
+ SNA CLA
+ JMS CTRLO
+ TAD T3
+ JMS I [TYPE
+ JMP I PRIN
+\fCTRLC, TAD ["^
+ JMS I [TYPE
+ TAD ("C
+ JMS I [TYPE /ECHO "^C"
+ JMS I [DELAYY
+ JMP I [7600 /THEN GO AWAY
+CTRLO, 0
+ KCC /CLEAR OUT ^O
+ TAD ["^
+ JMS I [TYPE
+ TAD ("O
+ JMS I [TYPE
+ JMS I [CRLF
+ STA
+ DCA CTOFLG /STOP ECHOING
+ JMP I CTRLO
+
+VERSION,JMS PRINT
+ TEXT \OS/8 CAMP V5A\
+ JMP I [START
+NUMBIG, JMS PRINT
+ TEXT /? NUMBER TOO BIG/
+ JMP I [GOAWAY
+\fNONEX, JMS PRINT
+ TEXT /? CAN'T - DEVICE DOESN'T EXIST/
+ JMP I [GOAWAY
+
+SYSERR, JMS PRINT
+ TEXT \? I/O ERROR ON SYS:\
+ JMP I [GOAWAY
+ PAGE
+\fHELP, JMS I [PRINT
+ TEXT /BACKSPACE DEV: N FILES/
+ JMS I [PRINT
+ TEXT /BACKSPACE DEV: N RECORDS/
+ JMS I [PRINT
+ TEXT /EOF DEV:/
+H2, JMP H1 / JMS I [PRINT
+ TEXT /SET DEV: [NO] ATTRIB [N]/
+H1, JMS I [PRINT
+ TEXT /SKIP DEV: N FILES/
+ JMS I [PRINT
+ TEXT /SKIP DEV: N RECORDS/
+ JMS I [PRINT
+ TEXT /SKIP DEV: EOD/
+\f JMS I [PRINT
+ TEXT /REWIND DEV:/
+ JMS I [PRINT
+ TEXT /UNLOAD DEV:/
+ JMS I [PRINT
+ TEXT /VERSION/
+ JMS I [PRINT
+ TEXT /HELP/
+ JMP I [START
+\fBADEV, CLA
+ JMS I [PRINT
+ TEXT /? CAN'T FOR THIS DEVICE/
+ JMP I [GOAWAY
+
+V4, TAD (SET
+ DCA I (SETLOC
+ TAD H1
+ DCA H2
+ JMP I [START
+ PAGE
+\f *2000
+
+/ORIGIN PAST OS/8 LINE BUFFER AT 1000.
+/SKIP PAST PS/8 LINE BUFFER (AT 1400) JUST IN CASE
+/PS/8 USERS WISH TO PATCH THIS PROGRAM
+
+/SCAN PAST EXTRA LETTERS OR DIGITS
+
+SCAN, 0
+ JMS I [ALPHA
+ JMP NOPE
+ CLA
+ JMP SCAN+1
+NOPE, CLA
+ JMS I [BACKC
+ JMP I SCAN
+
+/SCAN PAST SPACES; GIVE ERROR IF NO SPACES FOUND UNLESS AC=-1
+
+SPACE, 0
+ DCA FLAG /SET AC=-1 TO PREVENT ERROR ON NO SPACES FOUND
+ DCA SPKNT /INITIALIZE SPACE COUNTER
+ SKP /JUMP INTO LOOP
+GOTSP, ISZ SPKNT
+ JMS I [GETC /GET NEXT CHAR
+ TAD (-240
+ SNA CLA /IS IT A SPACE?
+ JMP GOTSP /YES, COUNT IT
+ JMS I [BACKC /NO, PUT IT BACK
+ ISZ FLAG /CHECK FLAG
+ SKP /USER DIDN'T SPECIFY FLAG
+ JMP I SPACE /-0 MEANT DON'T CHECK IF FOUND SPACE
+ TAD SPKNT /HOW MANY SPACES DID WE FIND?
+ SZA CLA
+ JMP I SPACE /SOME. OK
+ JMP I [SYNTAX /NONE. TSK. TSK.
+\fBRANCH, 0
+ DCA T
+BR2, TAD I BRANCH
+ ISZ BRANCH
+ SNA
+ JMP NOTFND
+ TAD T
+ SNA CLA
+ JMP FOUND
+ ISZ BRANCH
+ JMP BR2
+
+FOUND, TAD I BRANCH
+ DCA T
+ JMP I T /FOUND ITEM IN COLUMN 1, JUMP TO ADDRESS IN COL 2
+
+NOTFND, TAD T
+ JMP I BRANCH /IF NOT FOUND IN COL 1, RETURN WITH AC INTACT
+CHECKR, 0
+ TAD DCW
+ RAL
+ SMA CLA
+ JMP I CHECKR
+RONLY, JMS I [PRINT
+ TEXT /? CAN'T - DEVICE IS READ-ONLY/
+ JMP I [GOAWAY
+\fCHECKW, 0
+ TAD DCW
+ RTL
+ SMA CLA
+ JMP I CHECKW
+WONLY, JMS I [PRINT
+ TEXT /? CAN'T - DEVICE IS WRITE-ONLY/
+ JMP I [GOAWAY
+\fONUM, 0
+ DCA NUM
+ CLA IAC
+ DCA FLG
+ONM1, JMS I [GETC
+ TAD (-"0-10 /CONVERT TO DIGIT
+ CLL
+ TAD (10
+ SNL
+ JMP OEON
+ DCA T4
+ DCA FLG
+ TAD NUM
+ AND [7000
+ SZA CLA
+ JMP I [NUMBIG
+ TAD NUM
+ CLL RTL
+ RAL
+ TAD T4
+ DCA NUM
+ JMP ONM1
+OEON, CLA
+ JMS I [BACKC
+ TAD NUM
+ JMP I ONUM
+ PAGE
+\f/READ A LINE INTO OS/8 LINE BUFFER
+
+READ, 0
+ DCA CTOFLG /ALLOW ECHOING
+RD1, TAD [LINBUF
+ DCA LINPTR
+ DCA ESCBIT
+GT, JMS GET
+LOOK, JMS I [BRANCH
+ -377;RUBOUT
+ -217;GT /^O
+ -203;CTRLC /^C
+ -212;LF /LINE FEED
+ -215;CR /CARRIAGE RETURN
+ -375;ESCAPE /ALTMODE
+ -376;ESCAPE /ALTMODE (2ND FLAVOR)
+ -233;ESCAPE /ESCAPE
+ -225;CTRLU /^U
+ -200;GT /IGNORE NULLS
+ 0
+ DCA TEMP /NONE OF THESE
+ TAD LINPTR
+ TAD (-LINBUF-377
+ SNA CLA /AT END OF LINE BUFFER?
+ JMP GT /YES, DON'T ACCEPT CHAR
+ TAD TEMP /NO, RETRIEVE CHAR
+ JMS TYPE /ECHO IT
+ TAD TEMP /INSERT IN BUFFER
+ DCA I LINPTR
+ ISZ LINPTR /BUMP POINTER
+ JMP GT /NEXT
+
+CTRLU, TAD ["^
+ JMS TYPE
+ TAD ("U
+ JMS TYPE /ECHO "^U" <CR><LF>
+ JMS I [CRLF
+ JMP RD1
+\fRUBOUT, TAD LINPTR
+ TAD [-LINBUF
+ SNA
+ JMP BOL /AT BEGIN OF LINE
+ TAD [LINBUF-1
+ DCA LINPTR /MOVE POINTER BACK ONE
+ TAD ["\
+ JMS TYPE /ECHO "\"
+RUB3, TAD I LINPTR
+ JMS TYPE /ECHO RUBBED-OUT CHARACTER
+GT2, JMS GET
+ JMS I [BRANCH
+ -377;RUB2
+ -216;GT2 /IGNORE ^O
+ -203;CTRLC /^C
+ 0
+ DCA TEMP /A NEW CHAR
+ TAD ["\
+ JMS TYPE /ENCLOSE RUBBED-OUT CHARS IN \'S
+ TAD TEMP
+ JMP LOOK
+
+RUB2, TAD LINPTR
+ TAD [-LINBUF
+ SNA
+ JMP BOL2
+ TAD [LINBUF-1
+ DCA LINPTR
+ JMP RUB3
+
+BOL2, TAD ["\
+ JMS TYPE
+BOL, JMS I [CRLF
+ JMP RD1
+
+ESCAPE, TAD ("$ /ECHO ESCAPE AS DOLLAR SIGN
+ JMS TYPE
+ ISZ ESCBIT /NOTE ESCAPE
+CR, DCA I LINPTR /INSERT 0 AT END
+ JMS I [CRLF
+ JMP I READ /RETURN, WE GOT LINE
+\fGET, 0
+ KSF
+ JMP .-1
+ KRB
+ AND [177
+ TAD [200 /FORCE TO 8-BIT
+ JMP I GET
+
+TYPE, 0
+ DCA TYPEM
+ JMS I [DELAYY
+ DCA .-1 /DELAY FIRST TIME THRU TO LET THINGS QUIET DOWN
+ TAD CTOFLG
+ SZA CLA
+ JMP I TYPE /NO ECHOING
+ TAD TYPEM
+ TLS
+ TSF
+ JMP .-1
+ CLA
+ JMP I TYPE
+
+TYPEM, 0
+
+LF, DCA I LINPTR /TEMPORARILY INSERT A 0 SENTINEL
+ TAD [LINBUF-1
+ DCA XR1
+ JMS I [CRLF
+ TAD ["#
+ JMS I [TYPE
+LFLP, TAD I XR1
+ SNA
+ JMP I [GT /FINHSHED, GET SOME MORE CHARS
+ JMS I [TYPE /ECHO CURRENT CHARS
+ JMP LFLP
+ PAGE
+\fEOF, JMS I [SPACE /SPAN OVER SPACES
+ JMS I [GETDEV /GET DEVICE
+ JMS I [CHECKR
+ TAD DEVTYP
+ JMS I [BRANCH
+ -20;MAGEOF
+ -27;CASEOF
+ ZBLOCK 2
+ 0
+ JMP I [BADEV
+
+SKIP, JMS I [SPACE
+ JMS I [GETDEV
+ JMS I [CHECKW
+ JMS GETNUM
+ TAD DEVTYP
+ JMS I [BRANCH
+ -20;MAGSKP
+ -27;CASSKP
+ 0
+ JMP I [BADEV
+
+REWIND, JMS I [SPACE
+ JMS I [GETDEV
+ JMS I [CHECKW
+ TAD DEVTYP
+ JMS I [BRANCH
+ -20;MAGREW
+ -27;CASREW
+ -16;TCREW
+/ -17;LTREW
+ ZBLOCK 4 /PATCH SPACE
+ 0
+ TAD DCW
+ SMA CLA
+ JMP I [BADEV /NOT FILE STRUCTURED
+ CLA IAC /READ BLOCK 0 TO REWIND
+ DCA I [BLK
+ TAD (100
+ JMS I [GO
+ JMP I [GOAWAY
+\fUNLOAD, JMS I [SPACE
+ JMS I [GETDEV
+ JMS I [CHECKW
+ TAD DEVTYP
+ JMS I [BRANCH
+ -20;MAGUNL
+/ -27;CASUNL
+ -16;TCUNL
+ -21;TDUNL
+/ -17;LTUNL
+ -23;RKEUNL
+ ZBLOCK 2
+ 0
+ JMP I [BADEV
+
+BACK, JMS I [SPACE
+ JMS I [GETDEV
+ JMS I [CHECKW
+ JMS GETNUM
+ TAD TYP
+ SPA CLA
+ JMP I [SYNTAX /CAN'T BACKSPACE TO EOD
+ TAD DEVTYP
+ JMS I [BRANCH
+ -20;MAGBAK
+ -27;CASBAK
+ 0
+ JMP I [BADEV
+\fGETNUM, 0 /PARSE OFF :NNNN [F ! R] OR EOD
+ CLA IAC
+ DCA NUM
+ DCA TYP
+ JMS I [GETC
+ SNA
+ JMP I GETNUM /EOL
+ TAD (-":
+ SZA CLA
+ JMP I [SYNTAX
+ STA
+ JMS I [SPACE /OPTIONAL SPACES
+ TAD I LINPTR
+ SNA
+ JMP I GETNUM /EOL
+ TAD (-"E
+ SNA CLA
+ JMP EO
+ JMS I [NUMBER
+ DCA NUM
+ STA
+ JMS I [SPACE /MORE OPTIONAL SPACES
+ DCA TYP
+ JMS I [GETC
+ SNA
+ JMP I GETNUM /NO F OR R. F ASSUMED
+ TAD (-"F
+ SNA
+ JMP R /0 MEANS 'F'
+ TAD ("F-"R
+ SZA CLA
+ JMP I [SYNTAX
+ CLA IAC /1 MEANS 'R'
+R, DCA TYP
+ JMP I GETNUM
+EO, STA /-1 MEANS 'E'
+ JMP R
+ PAGE
+\f/GET A DECIMAL NUMBER, RETURN IT IN AC
+
+NUMBER, 0
+ DCA NUM
+ CLA IAC
+ DCA FLG
+NM1, JMS I [GETC
+ JMS I [DIGIT
+ JMP EON
+ TAD (-"0 /CONVERT TO DIGIT
+ DCA T4
+ DCA FLG /NOTE PASSAGE OF A DIGIT
+ TAD NUM
+ AND [7000
+ SZA CLA
+ JMP I [NUMBIG
+ TAD NUM
+ CLL RTL
+ TAD NUM
+ CLL RAL
+ TAD T4
+ SZL
+ JMP I [NUMBIG
+ DCA NUM
+ JMP NM1
+
+EON, CLA
+ JMS I [BACKC
+ TAD FLG
+ SZA
+ DCA NUM /IF NO DIGITS, RETURN A 1
+ TAD NUM
+ JMP I NUMBER
+\f/ GETDEV
+
+/PARSES OFF A DEVICE NAME (1-4 CHARS)
+/DETERMINES IF IT EXISTS
+/LOADS HANDLER INTO 7200-7577 IF NOT ALREADY IN CORE
+/SETS ENTRY POINT ADDRESS AT 'ENTRY'
+/SETS DEVICE NUMBER AT 'DEVNUM'
+/SETS DEVICE CONTROL WORD AT 'DCW'
+/SETS 'DEVTYP'
+
+GETDEV, 0
+ JMS I [GETTWO
+ DCA WD1
+ JMS I [GETTWO
+ DCA WD2
+ TAD WD1
+ TAD WD2
+ DCA WD1 /COMBINE TWO WORDS INTO 1 (IN WD1)
+ TAD WD2
+ SNA CLA
+ JMP INQ
+ TAD WD1 /OS/8 KLUDGE FOR UNIQUENESS
+ CLL RAL
+ STL RAR /FORCE BIT 0 ON IF 2ND WORD WAS NON-ZERO
+ DCA WD1
+INQ, DCA WD2
+ CIF 10
+ JMS I USR
+ 12 /INQUIRE
+WD1, 0 /DEVICE NAME
+WD2, 0 /GETS DEVICE NUMBER
+WD3, 0 /GETS ENTRY POINT
+ JMP I [NONEX /DEVICE DOESN'T EXIST
+ TAD WD3
+ SZA /IS HANDLER ALREADY IN CORE?
+ JMP INCORE /YES
+ TAD WD1
+ DCA DW1
+ TAD (7201 /ALLOW TWO PAGE HANDLER IN 7200
+ DCA DW3
+ DCA DW2
+ CIF 10
+ JMS I USR
+ 1 /FETCH
+DW1, 0 /DEVICE NAME
+DW2, 0 /GETS DEVICE NUMBER
+DW3, 0 /GETS ENTRY POINT
+ JMP I [NONEX /DOESN'T EXIST
+ TAD DW2
+ DCA DEVNUM
+ TAD DW3
+ DCA ENTRY
+ JMP GETYP
+\fINCORE, DCA ENTRY
+ TAD WD2
+ DCA DEVNUM
+GETYP, TAD DEVNUM
+ TAD (7757
+ DCA DCWPTR /POILT INTO DEVICE CONTROL WGRD TABLE
+ CDF 10
+ TAD I DCWPTR /GET DCW
+ DCA DCW
+ TAD DCW
+ RTR
+ RAR
+ AND [77
+ DCA DEVTYP
+ STA
+ TAD I (37 /GET ADDRESS OF DHIT
+ DCA DHIT
+ TAD DHIT
+ TAD DEVNUM
+ DCA DHI
+ TAD I DHI
+ CDF 0
+ DCA DHI
+ TAD DHI
+ RTL
+ RTL
+ RTL
+ AND (17
+ SZA
+ TAD (15
+ DCA DBLK
+ JMP I GETDEV
+
+DELAYY, 0
+ TAD (-10
+ DCA OUTER
+ ISZ ZER
+ JMP .-1
+ ISZ OUTER
+ JMP .-3
+ JMP I DELAYY
+ZER, 0
+OUTER, -10
+ PAGE
+\fLOADPT, TAD I (FUNCT
+ TAD (-REWKOD
+ SNA CLA
+ JMP I [GOAWAY /LOAD POINT ON A REWIND IS NOT AN ERROR
+READBT, JMS I [PRINT
+ TEXT /? CAN'T - AT BOT OR EOT/
+ JMP I [GOAWAY
+\fREADEOF,JMS I [PRINT
+ TEXT /% CAN'T - AT EOF/
+ JMP I [GOAWAY
+
+READBOF,JMS I [PRINT
+ TEXT /% CAN'T - AT BOF/
+ JMP I [GOAWAY
+
+\fCASSKP, DCA I (DIR
+ TAD TYP
+ SNA CLA
+ JMP CSKPF
+ JMP I (NOTIMPL
+
+CGO, 0
+ DCA CFUNCT
+ JMS I ENTRY
+CFUNCT, 0
+CBUFR, 7000
+CBLK, -1
+ SKP
+ JMP I CGO
+ DCA TEMP
+ TAD TEMP
+ SMA CLA
+ JMP I (END /SOFT ERROR
+ JMS I [PRINT
+ TEXT \? CAN'T - I/O ERROR\
+ JMP I [GOAWAY
+
+CASEOF, JMS CGO
+ JMP I [GOAWAY
+
+CASREW, TAD (REWKOD
+ JMS CGO
+ JMP I [GOAWAY
+\fCSKPF, TAD NUM
+ SNA
+ IAC
+ CIA
+ DCA COUNT
+ TAD (SKFKOD
+ JMS CGO
+ ISZ COUNT
+ JMP .-3
+ JMP I [GOAWAY
+
+CASBAK, CLA IAC
+ DCA I (DIR
+ TAD TYP
+ SZA CLA
+ JMP CBAKBLK
+ TAD NUM
+ CMA
+ DCA COUNT
+ TAD (BKFKOD
+ JMS CGO
+ ISZ COUNT
+ JMP .-3
+ JMP I [GOAWAY
+
+CBAKBLK,TAD NUM
+ SNA
+ IAC
+ CIA
+ DCA COUNT
+ TAD (BAKKOD
+ JMS CGO
+ ISZ COUNT
+ JMP .-3
+ JMP I [GOAWAY
+ PAGE
+\fTCREW, JMS TCR
+ JMP I [GOAWAY
+
+TCUNL, JMS TCR
+ TAD ENTRY
+ IAC
+ RTR
+ RTR
+ AND [7000
+ DTLA /SELECT ANOTHER UNIT
+ JMP I [GOAWAY
+
+TCR, 0
+ TAD ENTRY
+ TAD (-7607
+ SZA CLA /SYSTEM TC08 DECTAPE MUST BE UNIT 0
+ TAD ENTRY
+ RTR
+ RTR
+ AND [7000 /ISOLATE UNIT # IN BITS 0-2
+ TAD (600 /GO REVERSE
+ DTLA
+ JMP I TCR
+\fTDUNL, TAD (-7607
+ SZA CLA
+ TAD ENTRY
+ DCA TEMP
+ TAD TEMP
+ RTR
+ RAR
+ CLA RAR
+ DCA UNIT
+ TAD TEMP
+ AND [3
+ CIA
+ TAD [77 /GET DEV CODE
+ CLL RTL
+ RAL
+ TAD (6004 /BUILD 'SDLC'
+ DCA BSDLC
+ TAD UNIT
+ TAD (3000 /GO, REVERSE
+BSDLC, HLT
+ CLA
+ JMP I [GOAWAY
+UNIT, 0
+\fTTCODE, 0
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX
+ JMS I [ONUM
+ SNA
+ JMP I [SYNTAX
+ DCA NUCODE
+ TAD NUCODE
+ AND [7700
+ SZA CLA
+ JMP I [NUMBIG
+ JMS I [TTST1
+ TAD (7200
+ DCA RR
+ JMS GETIOT
+ JMP I [OLDERR
+ CIA
+ DCA T2
+TTLP, JMS GETIOT
+ JMP I [OLDERR
+ CIA
+ DCA T3
+ TAD T3
+ CIA
+ TAD T2
+ SNA
+ JMP TTLP
+ SMA CLA
+ JMP .+3
+ TAD T3
+ DCA T2 /T2 CONTAINS NEG OF SMALLER IOT
+ TAD (7200
+ DCA RR
+TTLP2, JMS GETIOT
+ JMP I TTCODE
+ TAD T2
+ SZA CLA
+ CLA IAC
+ TAD NUCODE
+ CLL RTL
+ RAL
+ DCA T3
+ TAD I RR
+ AND (7007
+ TAD T3
+ DCA I RR
+ JMP TTLP2
+\fGETIOT, 0
+ ISZ RR
+ TAD RR
+ TAD (-7600
+ SNA CLA
+ JMP I GETIOT
+ TAD I RR
+ AND [7000
+ TAD [-6000
+ SZA CLA
+ JMP GETIOT+1
+ TAD I RR
+ RTR
+ RAR
+ AND [77
+ TAD (-20
+ CLL RAR
+ SNA
+ JMP GETIOT+1
+ RAL
+ TAD (20
+ ISZ GETIOT
+ JMP I GETIOT
+ PAGE
+\fMAGSKP, DCA DIR
+ TAD TYP
+ SNA
+ JMP SKPF
+ SPA CLA
+ JMP SKPEOD
+ TAD NUM
+ SNA
+ CLA IAC
+ CIA
+ DCA WC
+ TAD (SKPKOD
+ JMS GO
+ JMP I [GOAWAY
+
+MAGEOF, TAD (EOFKOD
+ JMS GO
+ JMP I [GOAWAY
+
+SKPF, TAD NUM
+ SNA
+ JMP SKP0
+ CIA
+ DCA WC
+ JMS I (FUDGE /DON'T LET GUY TRICK US INTO GOING PAST EOD
+ TAD (SKFKOD
+ JMS GO
+ JMP I [GOAWAY
+
+SKPEOD, JMS I (FUDGE /DON'T LET GUY TRICK US INTO GOING PAST EOD
+ JMS I ENTRY
+ SKFKOD
+ 0
+ 0 /SKIP 4096 FILES
+ SMA
+ SKP CLA
+ JMP CHKBOT
+ JMP I [GOAWAY
+
+MAGBAK, CLA IAC
+ DCA DIR
+ TAD TYP
+ SNA CLA
+ JMP BAKF
+ TAD NUM
+ SNA
+ CLA IAC
+ CIA
+ DCA WC
+ TAD (BAKKOD
+ JMS GO
+ JMP I [GOAWAY
+\fBAKF, TAD NUM
+ CMA
+ DCA WC2
+ JMS I ENTRY
+ BKFKOD
+ 0
+WC2, -1 /
+ SMA
+ SKP CLA
+ JMP CHKBOT
+ TAD (SKPKOD /SKIP 1 RECORD FORWARD
+ JMP SKY
+
+CHKBOT, DCA TEMP
+ TAD TEMP
+ AND (1000
+ SNA CLA
+ JMP IOE
+ JMP I (READBT
+\fMAGUNL, TAD (UNLKOD
+ JMS GO
+ JMP I [GOAWAY
+
+MAGREW, TAD (REWKOD
+ JMS GO
+ JMP I [GOAWAY
+
+GO, 0
+ DCA FUNCT
+ JMS I ENTRY
+FUNCT, 0
+BUFR, 7000
+WC,
+BLK, -1
+ SKP /I/O ERROR
+ JMP I GO
+ DCA TEMP
+ TAD TEMP
+ SMA CLA
+ JMP END /SOFT ERROR
+ TAD TEMP
+ AND (1000
+ SZA CLA
+ JMP I [LOADPT
+IOE, TAD TEMP
+ JMP I [IOERR
+
+DIR, 0 /0- FORWARD ; 1- BACKWARDS
+
+END, TAD TYP
+ SNA CLA
+ JMP I (EODERR /V3C NEW HANDLER CALL
+ TAD DIR /SAW FILE MARK
+ SNA CLA /V3C
+ JMP I [READEOF /AT END OF FILE
+ JMP I [READBOF /AT BEGIN OF FILE
+\fSKP0, JMS I ENTRY
+ SKFKOD
+ 0 /IRRELEVANT
+ -1 /ADVANCE 1 FILE
+ SMA
+ SKP CLA
+ JMP I [IOERR /HARD ERROR
+ TAD (BAKKOD
+SKY, DCA SKX /V3C
+ JMS I ENTRY
+SKX, BAKKOD
+ 0 /IRREL
+ -1 /BACK OVER FILE MARK
+ SMA
+ SKP CLA
+ JMP I [IOERR
+ JMP I [GOAWAY
+ PAGE
+\fIOERR, AND (3777
+ CLL RAL
+ DCA TEMP
+ JMS I [PRINT
+ TEXT \? CAN'T - I/O ERROR\
+ TAD (-13 /11 BITS TO LOOK AT
+ DCA CNT
+ TAD (JLIST
+ DCA JM
+IOLUP, TAD TEMP
+ RAL
+ DCA TEMP
+ SZL
+ JMP I JM
+IOCONT, ISZ JM
+ ISZ CNT
+ JMP IOLUP
+ JMP I [GOAWAY
+
+JM, 0
+
+JLIST, JMP BIT1
+ JMP BIT2
+ JMP BIT3
+ JMP BIT4
+ JMP BIT5
+ JMP BIT6
+ JMP BIT7
+ JMP BIT8
+ JMP I (BIT9
+ JMP I (BIT10
+ JMP I (BIT11
+\fBIT1, JMS I [PRINT
+ TEXT /(REWINDING)/
+ JMP IOCONT
+BIT2, JMS I [PRINT
+ TEXT /(BOT)/
+ JMP IOCONT
+BIT3, JMS I [PRINT
+ TEXT /(SELECT ERROR)/
+ JMP IOCONT
+BIT4, JMS I [PRINT
+ TEXT /(PARITY ERROR)/
+ JMP IOCONT
+BIT5, JMS I [PRINT
+ TEXT /(EOF)/
+ JMP IOCONT
+\fBIT6, JMS I [PRINT
+ TEXT /(RECORD LENGTH INCORRECT)/
+ JMP IOCONT
+BIT7, JMS I [PRINT
+ TEXT /(TIMING ERROR)/
+ JMP IOCONT
+BIT8, JMS I [PRINT
+ TEXT /(EOT)/
+ JMP IOCONT
+\fRKEUNL, CLL
+ TAD ENTRY
+ TAD (200
+ SNL CLA
+ TAD ENTRY
+ AND (6 /ISOLATE UNIT
+ TAD (2000 /WRITE PROTECT DISK
+ DLDC /LOAD COMMAND REGISTER
+ DLAG
+ JMP I [GOAWAY
+ PAGE
+\fBIT9, JMS I [PRINT
+ TEXT /(WRITE LOCK-OUT)/
+ JMP I (IOCONT
+BIT10, JMS I [PRINT
+ TEXT /(READ COMPARE ERROR)/
+ JMP I (IOCONT
+BIT11, JMS I [PRINT
+ TEXT /(ILLEGAL FUNCTION)/
+ JMP I (IOCONT
+\fNOTIMPL,JMS I [PRINT
+ TEXT /% OPERATION NOT YET IMPLEMENTED/
+ JMP I [GOAWAY
+EODERR, JMS I [PRINT
+ TEXT /? CAN'T - AT EOD/
+ JMP I [GOAWAY
+\f/THIS ROUTINE PREVENTS US FROM GOING PAST EOD WHEN
+/SKIPPING FORWARD FILES.
+/IT DOES THIS BY THE FOLLOWING ALGORITHM:
+/FIRST WE BACKSPACE A RECORD.
+/IF WE SAW DATA, THEN OK, WE RETURN TO THE USER;
+/THIS WILL NOT AFFECT HIS SKIP FILE COUNT.
+/IF WE SAW A FILE MARK, THEN WE SKIP FORWARD
+/BACK OVER THAT FILE, IGNORING THE FILE MARK ERROR.
+/IF WE SAW BOT, THEN, OK NO ERROR.
+
+FUDGE, 0
+ JMS I ENTRY /V3C ALL NEW
+ BAKKOD
+TM, 0
+ -1
+ SKP
+ JMP I FUDGE
+ SPA
+ JMS BER
+ SZA CLA
+ JMS FRWD
+ JMP I FUDGE
+
+/IF ERROR WAS BOT, OK
+
+BER, 0
+ DCA TM
+ TAD TM
+ AND (1000
+ SZA CLA
+ JMP I BER /BOT OK, NO FRWD
+ TAD TM
+ JMP I [IOERR
+
+FRWD, 0
+ JMS I ENTRY
+ SKPKOD
+ 0
+ -1
+ SMA
+ SKP CLA
+ JMP I [IOERR
+ JMP I FRWD
+ PAGE
+\fSET, JMS I [SPACE
+ DCA VNO /V3C
+ JMS I [GETDEV
+ JMS I [GETC
+ JMS I [BRANCH
+ -":;COLN
+ -" ;COLN
+ -"-;HYPH
+ 0
+ JMP I [SYNTAX /NO : OR BLANK AFTER NAME
+COLN, STA
+ JMS I [SPACE /IGNORE OPTIONAL SPACES
+ JMS I [GETC
+ SNA
+ JMP I [SYNTAX
+ TAD (-"-
+ SNA CLA
+ JMP HYPH
+ JMS I [BACKC
+COLN2, DCA NAM1
+ DCA NAM2
+ TAD (MAIN-1 /LOOK FOR DEVICE TYPE IN MAIN TABLE
+MNLUP, DCA XR1
+ TAD I XR1
+ SMA SZA
+ JMP NOTYP /NOT FOUND
+ TAD DEVTYP
+ SNA CLA
+ JMP FNDTYP
+ TAD XR1
+ TAD (3 /POINT TO NEXT ENTRY
+ JMP MNLUP
+FNDTYP, TAD I XR1 /GET GENERIC NAME
+ DCA NAM1
+ TAD I XR1
+ DCA NAM2
+ DCA AUXFLG
+ TAD I XR1 /GET PTR TO DEVICE TABLE
+INTO, DCA PTR
+ DCA NO
+ TAD LINPTR
+ DCA SAVPTR /SAVE SCAN POINTER
+ JMS I [GETTWO
+ TAD (-1617
+ SNA CLA /ARE NEXT TWO CHARS 'NO'?
+ JMS SAWNO /YES
+ TAD SAVPTR /NO
+ DCA LINPTR /RESTORE PTR
+SCNLUP, TAD I PTR
+ SNA /GET NEXT KEYWORD POINTER
+ JMP NOKEY
+ ISZ PTR /POINT TO PTR TO ROUTINE
+ JMS I [KEYSRCH
+ JMP NOF /NOT FOUND
+ TAD I PTR /FOUND
+ DCA PTR /GET PTR TO ROUTINE
+ JMS I (HREAD /READ HANDLER
+ JMS I PTR /CALL ROUTINE
+ JMS I (HWRITE /REWRITE HANDLER
+ JMP I [GOAWAY
+\fHYPH, JMS I [ALPHA
+ JMP I [BADV
+ DCA VNO
+ TAD VNO
+ SNA
+ JMP I [BADV
+ AND [17
+ DCA VNO
+ JMS I [SPACE /IGNORE SPACE
+ JMP COLN2
+\fNOKEY, TAD AUXFLG
+ SNA CLA
+ JMP NOO
+ JMS I [PRINT
+ TEXT \? UNKNOWN ATTRIBUTE FOR DEVICE \
+ *.-1
+NAM1, 0
+NAM2, 0
+ 0
+ JMP I [GOAWAY
+
+SAWNO, 0
+ ISZ NO
+ STA
+ JMS I [SPACE
+ TAD LINPTR
+ DCA SAVPTR
+ JMP I SAWNO
+
+NOTYP, CLA
+ ISZ AUXFLG
+ TAD (AUX /SEARCH AUXILIARY TABLE
+ JMP INTO
+\fNOF, ISZ PTR
+ TAD SAVPTR
+ DCA LINPTR
+ JMP SCNLUP
+
+AUXFLG, 0
+
+NOO, ISZ AUXFLG
+ TAD (AUX
+ DCA PTR
+ JMP SCNLUP
+ PAGE
+\fHREAD, 0
+ TAD DBLK
+ SNA
+ JMP RESERR
+ DCA BLOCK
+ JMS I (7607
+ 200 /READ 2 PAGES
+L7200, 7200 /INTO 7200-7577
+BLOCK, 0 /FROM THIS BLOCK ON SYSTEM DEVICE
+ JMP I [SYSERR
+ TAD DHI
+ AND (177 /GET RELATIVE ENTRY PT
+ TAD L7200
+ DCA ENTRY
+ TAD VNO
+ SZA CLA /V3C
+ JMP I HREAD /VNO ALREADY SET BY - COMMAND
+ TAD ENTRY
+VLOOP, DCA VNOPTR
+ TAD I VNOPTR
+ CLL
+ TAD (-33
+ SZL CLA
+ JMP BACKV
+ TAD I VNOPTR
+ SNA
+ JMP OLDERR
+ DCA VNO
+ JMP I HREAD
+BACKV, STA
+ TAD VNOPTR
+ JMP VLOOP
+
+RESERR, JMS I [PRINT
+ TEXT /? CAN'T - DEVICE IS RESIDENT/
+ JMP I [GOAWAY
+\fOLDERR, CLA
+ JMS I [PRINT
+ TEXT /? CAN'T - OBSOLETE HANDLER/
+ JMP I [GOAWAY
+
+HWRITE, 0
+ TAD BLOCK
+ DCA BLKTWO
+ JMS I (7607
+ 4200
+ 7200
+BLKTWO, 0
+ JMP I [SYSERR
+ JMP I HWRITE
+\fNEWERR, CLA
+ JMS I [PRINT
+ TEXT /? CAN'T - UNKNOWN VERSION OF THIS HANDLER/
+ JMP I [GOAWAY
+ PAGE
+\fMAIN, -0; DEVICE TTY; TTYTBL
+ -1; DEVICE PTR; PTRTBL
+ -2; DEVICE PTP; PTPTBL
+ -3; DEVICE CDR; CDRTBL
+ -4; DEVICE LPT; LPTTBL
+ -20; DEVICE MTA; MTATBL
+ 1
+ ZBLOCK 20
+/TABLE ENDS WITH A POSITIVE NON-ZERO NUMBER
+\fCDRTBL, CODE;CDCODE
+ ZBLOCK 4
+ 0
+
+LPTTBL, WIDTH;LPWDTH
+ LC;LPLC
+ LV8E;LPLV
+ ZBLOCK 4
+ 0
+
+MTATBL, PARITY;MTAPAR
+ DENSITY;MTADEN
+ FILES;MTAFIL
+ ZBLOCK 4
+ 0
+\fTTYTBL, WIDTH;TTWIDTH
+ CODE;TTCODE
+ ALT;TTALT
+ ECHO;TTECHO
+ LC;TTLC
+ PAYGE;TTPAGE
+ TAB;TTTAB
+ FILL;TTFILL
+ FLAGG;TTFLAG
+ CTRL;TTCTRL
+ GAG;TTGAG
+ DELAY;TTDELAY
+ ZBLOCK 10
+ 0
+
+AUX, LOC;GENLOC
+ FILES;GENFIL
+ READO;GENREA
+ VERS;GENVER
+ ZBLOCK 10
+ 0
+ PAGE
+\fWIDTH, "W;"I;"D;"T;"H;0
+LC, "L;"C;0
+LV8E, "L;"V;4000+"8;4000+"E;0
+CODE, "C;"O;"D;"E;0
+ALT, "A;"L;"T;4000+"M;4000+"O;4000+"D;4000+"E;0
+ECHO, "E;"C;"H;"O;0
+PAYGE, "P;"A;"G;"E;0
+TAB, "T;"A;"B;0
+LOC, "L;"O;"C;4000+"A;4000+"T;4000+"I;4000+"O;4000+"N;0
+FILES, "F;"I;"L;"E;4000+"S;0
+READO, "R;"E;"A;"D;4000+"O;4000+"N;4000+"L;4000+"Y;0
+VERS, "V;"E;"R;4000+"S;4000+"I;4000+"O;4000+"N;0
+PARITY, "P;"A;"R;4000+"I;4000+"T;4000+"Y;0
+DENSITY,"D;"E;"N;4000+"S;4000+"I;4000+"T;4000+"Y;0
+FILL, "F;"I;"L;"L;0
+FLAGG, "F;"L;"A;"G;0
+CTRL, "C;"T;"R;"L;0
+EVEN, "E;4000+"V;4000+"E;4000+"N;0
+ODD, "O;4000+"D;4000+"D;0
+DELAY, "D;"E;"L;"A;"Y;0
+GAG, "G;"A;"G;0
+ PAGE
+\fLPWDTH, 0
+ JMS I (GETWID
+ JMS LPTST1
+ TAD NUM
+ CMA
+ DCA I (7200
+ JMP I LPWDTH
+
+LPTST1, 0
+ TAD I (7201
+ SPA CLA
+ JMP L645
+ TAD VNO
+ JMS I [BRANCH
+ -1;OLDERR
+ -2;LPTOK
+ ZBLOCK 4
+ 0
+ JMP I [NEWERR
+LPTOK, JMP I LPTST1
+
+L645, JMS I [PRINT
+ TEXT /? CAN'T AFFECT ANNALEX LPT/
+ JMP I [GOAWAY
+\fASRTST, 0
+ TAD DHI
+ SPA CLA
+ JMP I ASRTST
+ JMS I [PRINT
+ TEXT /? CAN'T - NOT KL8E HANDLER/
+ JMP I [GOAWAY
+\fGENVER, 0
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX
+ JMS I [ALPHA
+ JMP BADV
+ DCA NUM
+ TAD NUM
+ AND (40
+ SZA CLA
+ JMP BADV
+ TAD NUM
+ AND (37
+ DCA I VNOPTR
+ JMP I GENVER
+
+GENREA, 0
+ CDF 10
+ TAD I DCWPTR
+ CLL RTL
+ CLL RAL
+ TAD NO
+ RAR
+ CML RAR
+ RAR
+ DCA I DCWPTR
+ CDF 0
+ JMP I GENREA
+
+GENFIL, 0
+ CDF 10
+ TAD I DCWPTR
+ CLL RAL
+ CLL RAL /ZERO LINK
+ TAD NO
+ RAR
+ CML RAR
+ DCA I DCWPTR
+ CDF 0
+ JMP I GENFIL
+\fBADV, CLA
+ JMS I [PRINT
+ TEXT /? BAD VERSION LETTER/
+ JMP I [GOAWAY
+
+CRLF, 0
+ TAD [215
+ JMS I (TYPE
+ TAD [212
+ JMS I (TYPE
+ JMP I CRLF
+ PAGE
+\fLPLV, 0
+ JMS I (LPTST1
+ TAD NO
+ CLL RTL
+ RTL
+ TAD (4
+ DCA I (7201
+ JMP I LPLV
+
+LPLC, 0
+ JMS I (LPTST1
+ TAD NO
+ CLL RTL
+ RTL
+ RAL
+ CIA
+ DCA I (7202
+ JMP I LPLC
+
+TTALT, 0
+ JMS I [TTST1
+ JMP I [NOTIMPL
+ JMP I TTALT
+
+TTECHO, 0
+ JMS I [TTST1
+ TAD NO
+ SZA CLA
+ TAD (SKP CLA-SZA
+ TAD (SZA
+ DCA I (7200+120
+ JMP I TTECHO
+
+TTPAGE, 0
+ JMS I (ASRTST
+ TAD VNO
+ JMS I [BRANCH
+ -1;OLDERR
+ -2;OLDERR
+ -3;OLDERR
+ -4;PAGOK
+ ZBLOCK 2
+ 0
+ JMP I [NEWERR
+\fPAGOK, TAD I (7200+216
+ TAD (-SNA
+ SZA CLA
+ JMP I [REASEM
+ TAD NO
+ SNA CLA
+ TAD (SZA CLA-CLA
+ TAD (CLA
+ DCA I (7200+216
+ JMP I TTPAGE
+\fTTTAB, 0
+ JMS I [TTST1
+ JMS I [GETC
+ SNA
+ JMP TTEO
+ TAD (-"/
+ SNA CLA
+ JMS I [GETC
+ TAD (-"N
+ SZA CLA
+ JMP I [SYNTAX
+ JMP NOTEC
+TTEO, TAD NO
+ SNA CLA
+ TAD (5000
+ TAD L200
+ JMS I (TECO
+NOTEC, JMS I [SRCH
+L200, 200;100;7
+ JMP I [REASEM
+ DCA TEMP
+ STA CLL RAL /-2
+ TAD TEMP
+ DCA T2
+ TAD TEMP
+ TAD (3
+ DCA T3
+ TAD NO
+ SNA CLA
+ JMP SETAB
+ TAD TEMP
+ TAD (-4
+ DCA T4
+ TAD T4
+ AND (77
+ TAD (1200 /TAD TTY240
+ DCA I T2
+ TAD (SZA CLA
+ DCA I T3
+ JMP I TTTAB
+SETAB, TAD TEMP
+ TAD (-12
+ DCA T4
+ TAD I T4
+ DCA I T2
+ TAD (SKP CLA
+ DCA I T3
+ JMP I TTTAB
+ PAGE
+\fTTFILL, 0
+ JMS I [TTST1
+ JMS I [SRCH
+ 200;100;1377
+ JMP I [REASEM
+ TAD (-1
+ DCA TEMP
+ TAD NO
+ CLL RAL
+ TAD (2
+ TAD TEMP
+ DCA T2
+ TAD I T2
+ DCA I TEMP
+ JMP I TTFILL
+
+REASEM, JMS I [PRINT
+ TEXT /? CAN'T - MUST REASSEMBLE KL8E SOURCE/
+ JMP I [GOAWAY
+
+TTDELAY,0
+ JMS I [TTST1
+ JMP I [NOTIMPL
+ JMP I TTDELAY
+\f/ENTER WITH PTR TO POSSIBLE KEYWORD IN AC
+
+KEYSRCH,0
+ DCA KPTR
+KL, TAD I KPTR
+ ISZ KPTR
+ SNA
+ JMP GOTKEY
+ CIA
+ DCA TEMP
+ JMS I [ALPHA /IS IT ALPHANUMERIC?
+ JMP EOK /NO
+ TAD TEMP /COMPARE
+ CLL RAL /LOW ORDER 11 BITS
+ SNA CLA
+ JMP KL /MATCHED, KEEP LOOKING
+ JMP I KEYSRCH /DIDN'T MATCH
+EOK, JMS I [BACKC
+ TAD TEMP
+ CIA /INPUT STREAM RAN OUT OR HIT SPACE
+ SPA CLA
+ JMP GOTKEY /SPACE OR EOL MATCH FLAGGED CHARACTER
+ JMP I KEYSRCH
+
+KPTR, 0
+
+GOTKEY, JMS I [SCAN
+ STA /SKIP EXTRA STUFF
+ JMS I [SPACE
+ ISZ KEYSRCH /TAKE GOOD RETURN 2
+ JMP I KEYSRCH
+
+PTRTBL, ZBLOCK 4
+ 0
+
+PTPTBL, ZBLOCK 4
+ 0
+ PAGE
+\fTTGAG, 0
+ JMS TTST1
+ JMP I [NOTIMPL
+ JMP I TTGAG
+
+TTFLAG, 0
+ JMS TTST1
+ JMS I [SRCH
+ 200;200;247
+ JMP I [REASEM
+ TAD (-2
+ DCA TEMP
+ TAD NO
+ SNA CLA
+ TAD (SZA CLA-CLA
+ TAD (CLA
+ DCA I TEMP
+ JMP I TTFLAG
+
+TTLC, 0
+ JMS TTST1
+ JMS I [SRCH
+ 200;200;377
+ JMP I [REASEM
+ TAD (5
+ DCA TEMP
+ TAD I TEMP
+ CLL
+ TAD [200
+ SNL CLA
+ JMP I [REASEM
+ TAD NO
+ SNA CLA
+ TAD [40 /SNA CLA
+ TAD (7610 /SKP CLA
+ DCA I TEMP
+ JMP I TTLC
+
+TTCTRL, 0
+ JMS TTST1
+ JMP I [NOTIMPL
+ JMP I TTCTRL
+\fTTWIDTH,0
+ JMS GETWID
+ JMS TTST1
+ TAD NUM
+ AND [7
+ SZA CLA
+ JMP I [BADWID
+ TAD NUM
+ TAD [-200
+ SNA CLA
+ JMP I [BADWID
+ JMS I [SRCH
+ 200;200;7600
+ JMP I [REASEM
+ IAC
+ DCA TEMP
+ TAD I TEMP
+ AND [177
+ TAD (177+7200
+ DCA T2
+ TAD TEMP
+ IAC
+ DCA T3
+ TAD NUM
+ CIA
+ DCA I T3
+ TAD I T3
+ DCA I T2
+ JMP I TTWIDTH
+\fGETWID, 0
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX
+ JMS OPTEQ
+ JMS I [NUMBER
+ SNA
+ JMP I (BADWID
+ DCA NUM
+ TAD FLG
+ SZA CLA
+ JMP I [SYNTAX /NO DIGITS
+ TAD NUM
+ AND [7400
+ SZA CLA
+ JMP I [NUMBIG
+ JMP I GETWID
+
+TTST1, 0
+ JMS I (ASRTST
+ TAD VNO
+ JMS I [BRANCH
+ -1;OLDERR
+ -2;OLDERR
+ -3;TTOK
+ -4;TTOK /V3C
+ ZBLOCK 4
+ 0
+ JMP I [NEWERR
+TTOK, JMP I TTST1
+\fOPTEQ, 0
+ JMS I [GETC
+ TAD (-"=
+ SZA CLA
+ JMP NOE
+ JMS I [SPACE
+ JMP I OPTEQ
+NOE, JMS I [BACKC
+ JMP I OPTEQ
+ PAGE
+\fBADWID, JMS I [PRINT
+ TEXT /? ILLEGAL WIDTH/
+ JMP I [GOAWAY
+
+OPRIN, 0
+ DCA N3
+ TAD (-4
+ DCA OKNT
+OPLP, TAD N3
+ JMS DGP
+ TAD N3
+ RTL
+ RAL
+ DCA N3
+ ISZ OKNT
+ JMP OPLP
+ JMP I OPRIN
+
+DGP, 0
+ RTL
+ RTL
+ AND [7
+ TAD [60
+ JMS I [TYPE
+ JMP I DGP
+
+OKNT, 0
+N3, 0
+NUM2, 0
+GTEM, 0
+\fSRCH, 0
+ TAD I SRCH
+ ISZ SRCH
+ TAD (7200-1
+ DCA XR1
+ TAD I SRCH
+ ISZ SRCH
+ CIA
+ DCA CNT
+ TAD I SRCH
+ CIA
+ DCA TEMP
+ ISZ SRCH
+SRLUP, TAD I XR1
+ TAD TEMP
+ SNA CLA
+ JMP SRFND
+ ISZ CNT
+ JMP SRLUP
+ JMP I SRCH
+SRFND, ISZ SRCH
+ TAD XR1
+ JMP I SRCH
+\fGENLOC, 0
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX
+ JMS I [ONUM
+ DCA NUM2
+ TAD FLG
+ SZA CLA
+ JMP I [SYNTAX
+ JMS I [GETC
+ DCA TEMP
+ TAD TEMP
+ SNA
+ JMP ENOL
+ TAD (-"=
+ SZA CLA
+ JMP I [SYNTAX
+ENOL, TAD DHI
+ SPA CLA
+ TAD (-200
+ TAD (-200
+ CLL
+ TAD NUM2
+ SZL CLA
+ JMP I [NUMBIG
+ TAD NUM2
+ TAD (7200 /BASE OF HANDLER
+ DCA NUM2
+ TAD TEMP
+ SNA CLA
+ JMP ODT
+GETNEW, JMS I [ONUM
+ DCA NUM
+ TAD FLG
+ SZA CLA
+ JMP I GENLOC
+ JMS I [GETC
+ SZA CLA
+ JMP I [SYNTAX
+ TAD NUM
+ DCA I NUM2
+ JMP I GENLOC
+\fODT, TAD I NUM2
+ JMS OPRIN
+ TAD ("/
+ JMS I [TYPE
+ TAD I [READ
+ DCA GTEM /SAVE CHAIN STATUS
+ JMS I [READ
+ TAD [LINBUF
+ DCA LINPTR
+ TAD GTEM
+ DCA I [READ
+ JMP GETNEW
+ PAGE
+\fMTAPAR, 0
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX
+ JMS MTST1
+ TAD LINPTR
+ DCA SAVPTR
+ TAD (EVEN
+ JMS I [KEYSRCH
+ SKP
+ JMP SETE
+ TAD SAVPTR
+ DCA LINPTR
+ TAD (ODD
+ JMS I [KEYSRCH
+ JMP I [SYNTAX
+ TAD (400
+SETE, TAD (2
+ DCA I (7200
+ JMP I MTAPAR
+
+MTST1, 0
+ TAD VNO
+ JMS I [BRANCH
+ -1;OLDERR
+ -2;OLDERR
+ -3;OLDERR
+ -4;MTOK
+ -5;MTOK
+ -6;MTOK
+ ZBLOCK 4
+ 0
+ JMP I [NEWERR
+MTOK, JMP I MTST1
+
+MTADEN, 0
+ JMS MTST1
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX
+ JMP I [NOTIMP
+ JMP I MTADEN
+\fMTAFIL, 0
+ JMS MTST1
+ TAD NO
+ DCA I (7201
+ JMP I MTAFIL
+
+BADCOD, JMS I [PRINT
+ TEXT /? UNKNOWN CARD CODE/
+ JMP I [GOAWAY
+
+/SUPPOSED TO WORK ON ALL VERSIONS
+
+CDCODE, 0
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX
+ JMS I (OPTEQ
+ JMS I [NUMBER
+ TAD (-32 /026
+ SNA
+ JMP C026
+ TAD (32-35 /029
+ SZA CLA
+ JMP BADCOD
+ JMS CHANGE
+ LIST1;LIST2
+ JMP I CDCODE
+C026, JMS CHANGE
+ LIST1;LIST3
+ JMP I CDCODE
+\fCHANGE, 0
+ TAD I CHANGE
+ DCA P1
+ ISZ CHANGE
+ TAD I CHANGE
+ DCA P2
+ ISZ CHANGE
+CHLUP, TAD I P1
+ SNA
+ JMP I CHANGE
+ TAD (7200 /BASE OF HANDLER
+ DCA P3
+ TAD I P2
+ DCA I P3
+ ISZ P1
+ ISZ P2
+ JMP CHLUP
+
+P1, 0
+P2, 0
+P3, 0
+ PAGE
+\fLIST1, 304;305;306
+ 314;315;316
+ 324;325;326;327
+ 334;335;336
+ 0
+
+LIST2, 3203;4007;3502
+ 7514;0577;3637
+ 0104;1211;3374;0641
+ 7316;3410;1376
+
+LIST3, 7735;4076;0774
+ 3314;1002;0305
+ 3204;1273;3606;1341
+ 3716;1175;3401
+\fTECNAM, FILENAME TECO.SV
+
+TECO, 0
+ DCA SA
+ TAD (TECNAM
+ DCA ARG1
+ CLA IAC /LOOKUP ON SYS
+ CIF 10
+ JMS I USR
+ 2
+ARG1, TECNAM /STARTING BLOCK
+ 0
+ JMP I TECO /NOT FOUND
+ TAD ARG1
+ DCA BLKN
+ JMS I (7607
+ 100 /READ 1 PAGE FROM TECO
+ 7000 /BUFFER
+BLKN, 0
+ JMP I [SYSERR
+ TAD BLKN
+ DCA BLKN2
+ TAD SA
+ DCA I (7002 /REL LOC 2 IS S.A.
+ JMS I (7607
+ 4100
+ 7000
+BLKN2, 0
+ JMP I [SYSERR
+ JMP I TECO
+
+SA, 0
+ PAGE
+
+/7000-7177 BUFFER FOR TECO CCB
+/7200-7577 BUFFER FOR HANDLER
+\f FIELD 0
+ *200
+ $