--- /dev/null
+/8 OS8 SET (PAL8/MACREL VERSION)
+
+/
+/S.R.
+/
+/
+/ S E T
+/
+/
+/
+/
+/
+/
+/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
+/AND SHOULD NOT BE CONSTRUED 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) 1977 BY DIGITAL EQUIPMENT CORPORATION.
+/
+/
+/
+/
+\f/ EDIT HISTORY:
+
+/ 19-MAR-77 S.R. REMOVED FROM CAMP V4
+/ 19-MAR-77 S.R. FIXED BUG WITH SET MTA FILES
+/ 19-MAR-77 S.R. FIXED BUG WITH SET CDR
+/ 19-MAR-77 S.R. FIXED BUG WITH = OPTION
+/ 19-MAR-77 S.R. CONVERTED TO MACREL CODE
+/ 01-APR-77 S.R. TTY PAUSE
+/ 01-APR-77 S.R. TTY HEIGHT
+/ 01-APR-77 S.R. TTY SCOPE
+/ 17-APR-77 S.R. REWROTE TTY PAGE
+/ 17-APR-77 S.R. DEV: DVCODE
+/ 17-APR-77 S.R. FINISHED TTY SCOPE
+/ 27-APR-77 S.R. TTY COL
+/ 27-APR-77 S.R. SYS OPTIONS (INIT, OS8, OS78)
+/ 03-MAY-77 S.R. LA8A, LA78
+/ 03-MAY-77 S.R. INIT OS78 FIXES TERMINATE
+/ 03-MAY-77 S.R. BASIC FIXES
+/ 29-JUN-77 S.R. TTY ARROW (NOT FOR PS/8)
+/ 29-JUN-77 S.R. TTY ESC (NOT FOR PS/8)
+/ 29-JUN-77 S.R. DEV BLK LOC (NOT FOR PS/8)
+
+/ MUST SKIP LOCS 1000-1777
+
+ LINBUF=1000
+
+ AUXBUF=6600
+
+ IFDEF EDF <MACREL=1>
+ IFNDEF EDF <MACREL=0>
+
+ IFNZRO MACREL < .XSECT XSET
+ >
+ IFZERO MACREL < *10 >
+
+XR1, 0
+XR2, 0
+XR3, 0
+
+ IFNZRO MACREL < .ZSECT ZSET
+ >
+ IFZERO MACREL < *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
+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
+RR, 0
+NUCODE, 0
+SCOP, 0 /NON-0 IF TTY IS SCOPE
+NUM2, 0
+
+/0000-0777 /SET
+/1000-1377 /OS/8 LINE BUFFER
+/1400-1777 /PS/8 LINE BUFFER
+/2000-6577 /SET
+/6600-7177 /AUXILIARY I/O BUFFER
+/7000-7177 /I/O BUFFER FOR TECO CCB
+/7200-7577 /OS/8 HANDLER
+/7600-7777 /OS/8
+
+ SCPBIT=7726 /BIT 4
+\f IFNZRO MACREL < .ASECT ASET
+ >
+ *200
+
+START, SKP
+ JMP CHN
+ TAD ("#
+ JMS I [TYPE
+ JMS BIT
+ JMS I [READ /READ A LINE INTO OS/8 LINE BUFFER
+CHN, TAD [LINBUF /CHAIN ENTRY ADDRESS
+ DCA LINPTR /INITIALIZE POINTER TO LINE BUFFER
+ JMS BIT
+ 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
+ -2305;SET /SE
+ -2605;VERSION /VE
+ -1005;HELP /HE
+ 0
+ SNA CLA
+ JMP I [GOAWAY
+ JMP I [SYNTAX /NONE OF THESE
+
+BIT, 0
+ CDF 10
+ TAD I (SCPBIT
+ CDF 0
+ AND [200
+ DCA SCOP /NOTE WHETHER TTY IS SCOPE V3D
+ JMP I BIT
+\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
+\fHELP, JMS I [PRINT
+ TEXT /SET DEV: [NO] ATTRIB [N]/
+ JMS I [PRINT
+ TEXT /VERSION/
+ JMS I [PRINT
+ TEXT /HELP/
+ JMP I [START
+ 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 SET V1B\
+ 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
+\fSYSOS8, 0
+ TAD NO /REVERSE MEANING OF 'NO'
+ SNA CLA
+ IAC
+ DCA NO
+ JMS SYS78
+ JMP I SYSOS8
+
+SYS78, 0
+ TAD [7771
+ JMS I [SET200
+ JMS I [7607
+ 200
+ AUXBUF
+ 0
+ JMP I [SYSERR
+ TAD (AUXBUF+371
+ JMS I [SET200
+ JMS I [7607
+ 4200
+ AUXBUF
+ 0
+ JMP I [SYSERR
+ JMS I [7607 /THERE'S A 2ND COPY
+ 200 /IN BLOCK 11 LOCATION 56
+ AUXBUF
+ 11
+ JMP I [SYSERR
+ TAD (AUXBUF+56
+ JMS I [SET200
+ JMS I [7607
+ 4200
+ AUXBUF
+ 11
+ JMP I [SYSERR
+ JMS I (FIXCCL
+ JMP I SYS78
+\fSYSINI, 0
+ JMS I [GETC
+ SNA CLA
+ JMP DEFINI /ASSUME @INIT
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX /SET SYS NO INIT CMD
+ JMS I [BACKC
+ TAD LINPTR
+ DCA SAVLP
+ TAD (-6 /ALLOW A MAXIMUM OF 5 CHARS
+ DCA SAVKN
+SAVLUP, JMS I [GETC
+ SNA CLA
+ JMP DEFDO
+ ISZ SAVKN
+ JMP SAVLUP
+ JMS I [PRINT
+ TEXT /? INITIAL COMMAND TOO BIG/
+ JMP I [GOAWAY
+
+SAVKN, 0
+SAVLP, 0
+
+DEFINI, TAD (INIMSG
+ DCA SAVLP
+DEFDO, JMS I [7607
+ 200
+ AUXBUF
+ 0
+ JMP I [SYSERR
+ TAD NO
+ SZA CLA
+ TAD (400-1077
+ TAD (1077
+ DCA I (AUXBUF+77
+ JMS I [7607
+ 4200
+ AUXBUF
+ 0
+ JMP I [SYSERR
+ TAD NO
+ SZA CLA
+ JMP I SYSINI
+ JMS I [7607
+ 200
+ AUXBUF
+ 11
+ JMP I [SYSERR
+ STA
+ TAD SAVLP
+ DCA XR2
+ TAD (AUXBUF-1
+ DCA XR3
+ TAD (-5
+ DCA SAVKN
+MOVL, TAD I XR2
+ DCA I XR3
+ ISZ SAVKN
+ JMP MOVL
+ JMS I [7607
+ 4200
+ AUXBUF
+ 11
+ JMP I [SYSERR
+ JMP I SYSINI
+
+INIMSG, "@;"I;"N;"I;"T;0
+ PAGE
+\f *1400
+
+/THIS WON'T ALWAYS WORK UNDER PS/8:
+
+TTGGO, JMP I TTGAG
+TTGAG, 0
+ JMS I [TTST1
+ JMS I [PRINT
+TEXT /A FUNNY THING HAPPENED TO ME ON THE WAY TO THE COMPUTER ROOM./
+ JMS I [PRINT
+TEXT /A PANHANDLER CAME UP TO ME AND SAID,/
+ JMS I [PRINT
+TEXT /"CAN YOU SPARE ME $25,000 FOR A CUP OF COFFEE?"/
+ JMS I [PRINT
+TEXT /"WHY SO MUCH?", I ASKED IN AMAZEMENT./
+ JMS I [PRINT
+TEXT /"THINGS HAVE BECOME SO AUTOMATED", HE REPLIED,/
+ JMS I [PRINT
+TEXT /"THAT THE ONLY WAY I CAN ORDER IT/
+ JMS I [PRINT
+TEXT /IS WITH A COMPUTER ORDER FORM"./
+ JMP I (TTGGO
+\fTTESC, 0 /V3D
+ JMS I (OLDTST
+ JMS I [SRCH
+ 200;200;44
+ JMP I [REASEM
+ TAD (-4
+ DCA TEMP /SEE SOURCE OF KL8E
+ TAD NO
+ SZA CLA
+ TAD (7640-CLA /YES
+ TAD (CLA /NO
+ DCA I TEMP
+ JMP I TTESC
+
+TTAROW, 0 /V3D
+ JMS I (OLDTST
+ JMS I [SRCH
+ 200;200;7740
+ JMP I [REASEM
+ IAC
+ DCA TEMP
+ TAD I TEMP
+ RAL
+KSPA, SPA CLA
+ JMP I [REASEM
+ ISZ TEMP
+ ISZ TEMP
+ TAD TEMP
+ TAD (3
+ DCA TEMP2
+ TAD NO
+ SNA CLA
+ JMP YESARO /YES
+ TAD KSPA /NO
+NOAROW, DCA I TEMP
+ JMP I TTAROW
+YESARO, TAD I TEMP2
+ JMP NOAROW
+\fGENBLK, 0 /V3D
+ JMS I (GENCMN
+ TAD NUM2
+ DCA BLOK /GET BLOCK NUMBER
+ TAD (LOC
+ JMS I [KEYSRCH
+ JMP I [SYNTAX
+ JMS I (GENCMN /GET LOCATION
+ TAD [-400
+ CLL
+ TAD NUM2
+ SZL CLA
+ JMP I [NUMBIG
+ TAD NUM2
+ TAD PAUXBUF
+ DCA NUM2
+ JMS I ENTRY /READ BLOCK
+ 200
+PAUXBUF,AUXBUF
+BLOK, 0
+ JMP I [SYSERR
+ TAD TEMP
+ SNA CLA
+ JMS I (ODT
+ JMS I [ONUM
+ DCA NUM
+ CLA IAC
+ DCA DEVNUM /FAKE OUT - PREVENTS RE-WRITING USED HANDLER
+ TAD FLG
+ SZA CLA
+ JMP I GENBLK
+ JMS I [GETC
+ SZA CLA
+ JMP I [SYNTAX
+ TAD NUM
+ DCA I NUM2 /SET NEW VALUE
+ TAD BLOK
+ DCA BLOK2
+ JMS I ENTRY
+ 4200
+ AUXBUF
+TEMP2,
+BLOK2, 0
+ JMP I [SYSERR
+ JMP I GENBLK
+ 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
+
+BADKBM, CDF 0
+ JMS I [PRINT
+ TEXT /? OLD VERSION OF KBM/
+ JMP I [GOAWAY
+\f LLS=6666
+ DBTD=6574
+ LSF=6661
+ DBST=6570
+
+LP78, 0
+ TAD (CMA-NOP
+ JMS LP8A
+ JMP I LP78
+
+LP8A, 0
+ TAD (NOP /AC MAY BE NON-0
+ DCA LPKOD
+ JMS I (LPTST1
+ TAD VNO
+ TAD (-2
+ SNA CLA
+ JMP I (OLDERR
+ JMS I [SRCH
+ 0;200;7700
+ JMP I (OLDERR
+ TAD (3
+ DCA TEMP
+ TAD I TEMP
+ AND [7000
+ TAD [-7000
+ SZA CLA /NOP OR CMA
+ JMP I (OLDERR
+ TAD LPKOD
+ DCA I TEMP
+ ISZ TEMP
+ TAD I TEMP
+ AND [7000
+ TAD (-6000
+ SZA CLA
+ JMP I (OLDERR
+ TAD LPKOD
+ AND [70
+ SZA CLA
+ TAD (DBTD-LLS
+ TAD (LLS
+ DCA I TEMP
+ ISZ TEMP
+ TAD LPKOD
+ DCA I TEMP
+ JMS I [SRCH
+ 100;100;6203
+ JMP I (OLDERR
+ TAD (2
+ DCA TEMP
+ TAD LPKOD
+ AND [70
+ SZA CLA
+ TAD (DBST-LSF
+ TAD (LSF
+ DCA I TEMP
+ JMP I LP8A
+
+LPKOD, 0
+ 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 I [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
+ -223;GT /IGNORE ^S
+ 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 I [TYPE /ECHO IT
+ TAD TEMP /INSERT IN BUFFER
+ DCA I LINPTR
+ ISZ LINPTR /BUMP POINTER
+ JMP GT /NEXT
+
+CTRLU, TAD ["^
+ JMS I [TYPE
+ TAD ("U
+ JMS I [TYPE /ECHO "^U" <CR><LF>
+ JMS I [CRLF
+RDA, TAD ("#
+ JMS I [TYPE
+ JMP RD1
+\f BS=10
+
+RUBOUT, TAD LINPTR
+ TAD [-LINBUF
+ SNA
+ JMP BOL /AT BEGIN OF LINE
+ TAD [LINBUF-1
+ DCA LINPTR /MOVE POINTER BACK ONE
+ TAD SCOP
+ SZA CLA
+ TAD (BS-"\
+ TAD ["\
+ JMS I [TYPE /ECHO "\"
+RUB3, TAD SCOP
+ SNA CLA
+ JMP .+3
+ TAD [40
+ SKP
+ TAD I LINPTR
+ JMS I [TYPE /ECHO RUBBED-OUT CHARACTER
+ TAD SCOP
+ SNA CLA
+ JMP GT2
+ TAD [BS
+ JMS I [TYPE
+GT2, JMS I [GET
+ JMS I [BRANCH
+ -377;RUB2
+ -216;GT2 /IGNORE ^O
+ -203;CTRLC /^C
+ 0
+ DCA TEMP /A NEW CHAR
+ TAD SCOP
+ SZA CLA
+ JMP .+3
+ TAD ["\
+ JMS I [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
+\fBOL2, TAD SCOP
+ SZA CLA
+ JMP BOL
+ TAD ["\
+ JMS I [TYPE
+BOL, JMS I [CRLF
+ JMP RDA
+
+ESCAPE, TAD ["$ /ECHO ESCAPE AS DOLLAR SIGN
+ JMS I [TYPE
+ ISZ ESCBIT /NOTE ESCAPE
+CR, DCA I LINPTR /INSERT 0 AT END
+ JMS I [CRLF
+ JMP I READ /RETURN, WE GOT LINE
+\fLF, 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 /FINISHED, GET SOME MORE CHARS
+ JMS I [TYPE /ECHO CURRENT CHARS
+ JMP LFLP
+ PAGE
+\f/GET A DECIMAL NUMBER, RETURN IT IN AC
+
+NUMBER, 0
+ DCA NUM
+ CLA IAC
+ DCA FLG
+ JMS I [BACKC
+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 /POINT 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
+\fOLDTST, 0 /V3D
+ JMS I (ASRTST
+ TAD VNO
+ JMS I [BRANCH
+ -1;OLDERR
+ -2;OLDERR
+ -3;OLDERR
+ -4;OLDERR
+ -5;TSTOK
+ ZBLOCK 4
+ 0
+ JMP I [NEWERR
+TSTOK, JMP I OLDTST
+\fTTPAUS, 0
+ JMS OLDTST
+ JMS I [SRCH
+ 200;100;15
+ JMP I [REASEM
+ TAD (-3
+ DCA TEMP /SEE SOURCE OF KL8E FOR EXPLANATION
+ TAD NO
+ SNA CLA
+ TAD (7650-7610 /YES
+ TAD (7610 /NO
+ DCA I TEMP
+ DCA NUM
+ JMS I [GETC
+ SNA CLA
+ JMP NOPA /NO PAUSE VALUE
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX /SET TTY NO PAUSE N
+ JMS I [NUMBER
+ SNA
+ JMP BADPAUS
+ DCA NUM
+ TAD NUM /SCALE CORRECTLY
+ CLL RAL
+ TAD NUM
+ CLL RTL
+ DCA NUM
+ TAD FLG
+ SZA CLA
+ JMP BADPAUS /NO DIGITS
+ TAD NUM
+ AND [6000
+ SZA CLA
+ JMP BADPAUS
+ JMS I [SRCH
+ 300;77;7600
+ JMP I [REASEM
+ TAD (5
+ DCA TEMP
+ TAD NUM
+ CIA
+ DCA I TEMP
+NOPA, JMS I (BASLUK
+ JMP I TTPAUS
+ TAD NUM
+ CIA
+ DCA I (AUXBUF+1
+ JMS I (BASWRI
+ JMP I TTPAUS
+\fBADPAUS,JMS I [PRINT
+ TEXT /? BAD VALUE FOR PAUSE DURATION/
+ 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
+\fTTCOL, 0
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX /SET TTY NO COL
+ JMS I [GETC
+ SNA CLA
+ JMP BADCOL /NO COL SPECIFIED
+ JMS I [NUMBER
+ SNA
+ JMP BADCOL
+ DCA NUM
+ TAD FLG
+ SZA CLA
+ JMP I [SYNTAX
+ TAD NUM
+ AND [7770
+ SZA CLA
+ JMP BADCOL
+ TAD (CCLNAM /READ IN CCL.SV
+ JMS I [LOOKUP
+ JMP CCLNF /CCL NOT FOUND
+ TAD (2 /WANT 2ND BLOCK IN CCL
+ DCA ARG2 /CCL LOCATIONS 12400-12777
+ JMS I (7607
+ 200 /READ IN 2 PAGES
+ AUXBUF
+ARG2, 0
+ JMP I [SYSERR
+ TAD ARG2
+ DCA ARG3
+ TAD I (AUXBUF /GET PTR TO DIRECT COL WORD
+ SPA
+ JMP OLDCCL
+ TAD (AUXBUF-2400 /RELOCATE
+ DCA ARG2
+ TAD NUM
+ DCA I ARG2
+ JMS I (7607
+ 4200
+ AUXBUF
+ARG3, 0
+ JMP I [SYSERR
+ JMP I TTCOL
+\fBADCOL, JMS I [PRINT
+ TEXT /? BAD COLUMN COUNT/
+ JMP I [GOAWAY
+
+OLDCCL, CLA
+ JMS I [PRINT
+ TEXT /? WRONG VERSION OF CCL/
+ JMP I [GOAWAY
+\fTYPE, 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
+
+CCLNAM, FILENAME CCL.SV
+
+CCLNF, JMS I [PRINT
+ TEXT /? CCL.SV NOT FOUND/
+ JMP I [GOAWAY
+\f CCLBLK=67
+
+FIXCCL, 0
+ JMS I [7607
+ 200
+ AUXBUF
+ CCLBLK
+ JMP I [SYSERR
+ TAD I (AUXBUF
+ TAD (-"G
+ SPA CLA
+ JMP I (OLDCCL
+ TAD (CCLTBL
+ JMS I (FIXUP
+ JMS I [7607
+ 4200
+ AUXBUF
+ CCLBLK
+ JMP I [SYSERR
+ JMP I FIXCCL
+ PAGE
+\fESC, "E;"S;"C;4000+"A;4000+"P;4000+"E;0
+
+TTHGHT, 0
+ JMS I (OLDTST
+ JMS I [GETC
+ SNA CLA
+ JMP I (BADHIT /NO HEIGHT
+ TAD NO
+ SZA CLA
+ JMP I [SYNTAX /SET TTY NO HEIGHT
+ JMS I [NUMBER
+ SNA
+ JMP I (BADHIT
+ DCA NUM
+ TAD FLG
+ SZA CLA
+ JMP I (BADHIT /NO DIGITS
+ JMS I [SRCH
+ 300;77;7600
+ JMP I [REASEM
+ TAD (3
+ DCA TEMP
+ TAD NUM
+ CIA
+ DCA I TEMP
+ TAD I TEMP
+ ISZ TEMP
+ DCA I TEMP
+ JMS I (BASLUK
+ JMP I TTHGHT
+ TAD NUM
+ CIA
+ DCA I (AUXBUF
+ JMS I (BASWRI
+ JMP I TTHGHT
+\f/ LOC YES NO
+KBMTBL, AUXBUF+313; 0210; 1070
+ AUXBUF+314; 1313; 2020
+ AUXBUF+316; 1324; 7240
+ AUXBUF+317; 4423; 3020
+ AUXBUF+322; 1313; 1440
+ AUXBUF+224; 7555; 7403
+ AUXBUF+225; 1207; 1302
+ AUXBUF+226; 7557; 7402
+ AUXBUF+227; 1207; 1302
+ 0
+
+CDTBL, AUXBUF+135; 0210; 1102
+ AUXBUF+136; 1335; 2024
+ AUXBUF+140; 1346; 7240
+ AUXBUF+141; 4466; 3024
+ AUXBUF+144; 1335; 1420
+ AUXBUF+33; 7555; 7403
+ AUXBUF+34; 5207; 5321
+ AUXBUF+35; 7557; 7402
+ AUXBUF+36; 5207; 5321
+ 0
+
+CCLTBL, AUXBUF+4; 0024; 0002
+ AUXBUF+5; 0522; 0143
+ AUXBUF+6; 5551; 5363
+ AUXBUF+7; 5600; 6000
+ 0
+
+AROW, "A;"R;"R;"O;"W;0
+ PAGE
+\f/ SCOPE BIT ON DISK:
+/ BLOCK 0 REL 126 BIT 4
+
+/ SCOPE BIT IN MEMORY:
+/ LOC 17726 BIT 4
+
+TTSCOP, 0
+/THE FOLLOWING CODE WOULD BE ADDED IF WE WANT TO
+/ALLOW CHANGING KL8E SCOPE PATTERNS
+/ JMS I (ASRTST
+/ TAD VNO
+/ JMS I [BRANCH
+/ -1;OLDERR
+/ -2;OLDERR
+/ -3;OLDERR
+/ -4;OLDERR
+/ -5;TTSCOK
+/ ZBLOCK 2
+/ 0
+/ JMP I [NEWERR
+TTSCOK, JMS I (7607
+ 200
+ AUXBUF /READ 2 PAGES INTO AUXILIARY BUFFER
+ 11
+ JMP I [SYSERR
+ TAD (KBMTBL
+ JMS FIXUP
+ JMS I (7607
+ 4200
+ AUXBUF
+ 11
+ JMP I [SYSERR
+ JMS I (7607
+ 200
+ AUXBUF /READ BLOCK 53 (CD)
+ 53
+ JMP I [SYSERR
+ TAD (CDTBL
+ JMS FIXUP
+ JMS I (7607
+ 4200
+ AUXBUF
+ 53
+ JMP I [SYSERR
+ TAD NO /SET SCOPE BIT
+ SNA CLA
+ IAC
+ DCA SCOP
+ CDF 10
+ TAD (SCPBIT
+ JMS SET200
+ CDF 0
+ JMS I (7607
+ 200
+ AUXBUF
+ 0
+ JMP I [SYSERR
+ TAD (AUXBUF+126
+ JMS SET200
+ JMS I (7607
+ 4200
+ AUXBUF
+ 0
+ JMP I [SYSERR
+/ JMS I [SRCH
+/ 366;11;7770
+/ JMP I [REASEM
+/ CLA
+/ JMS I [SRCH
+/ 0;200;"\
+/ JMP I [OLDERR
+/ IAC
+/ DCA TEMP
+/ TAD NO
+/ SNA CLA
+/ TAD (1336-1367
+/ TAD (1367
+/ DCA I TEMP
+ JMP I TTSCOP
+\fSET200, 0 /DF IS SPECIALLY SET
+ DCA HLTPTR
+ TAD I HLTPTR
+ AND (7577
+ DCA TEMP
+ TAD TEMP
+ TAD (-HLT
+ SZA CLA
+ JMP I (BADKBM
+ TAD NO
+ SNA CLA
+ TAD [200
+ TAD TEMP
+ DCA I HLTPTR
+ JMP I SET200
+HLTPTR, 0
+
+FIXUP, 0
+ DCA FIXPTR
+FIXLUP, TAD I FIXPTR
+ SNA
+ JMP I FIXUP
+ DCA FIXLOC
+ ISZ FIXPTR
+ TAD NO
+ SZA CLA
+ ISZ FIXPTR
+ TAD I FIXPTR
+ DCA I FIXLOC
+ TAD NO
+ SNA CLA
+ ISZ FIXPTR
+ ISZ FIXPTR
+ JMP FIXLUP
+
+FIXPTR, 0
+FIXLOC, 0
+\fBASNAM, FILENAME BASIC.SV
+
+BASLUK, 0
+ TAD (BASNAM
+ JMS I (LOOKUP
+ JMP I BASLUK
+ ISZ BASLUK
+ TAD (7
+ DCA BASBLK
+ JMS I [7607
+ 200
+ AUXBUF
+BASBLK, 0
+ JMP I [SYSERR
+ TAD BASBLK
+ DCA BASB2
+ TAD I (AUXBUF+2
+ SNA CLA
+ JMP I BASLUK
+ JMP I (OLDBAS
+
+BASWRI, 0
+ JMS I [7607
+ 4200
+ AUXBUF
+BASB2, 0
+ JMP I [SYSERR
+ JMP I BASWRI
+ PAGE
+\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
+\fNOTIMPL,JMS I [PRINT
+ TEXT /% OPERATION NOT YET IMPLEMENTED/
+ JMP I [GOAWAY
+\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
+
+BADHIT, JMS I [PRINT
+ TEXT /? BAD HEIGHT SPECIFIED/
+ JMP I [GOAWAY
+
+TTALT, 0
+ JMS I [TTST1
+ JMP I [NOTIMPL
+ JMP I TTALT
+ PAGE
+\fCOLN, STA
+ JMS I [SPACE /IGNORE OPTIONAL SPACES
+ JMS I [GETC
+ SNA
+ JMP I [SYNTAX
+ TAD (-"-
+ SNA CLA
+ JMP HYPH
+ JMS I [BACKC
+ STA
+ TAD DEVNUM
+ SNA CLA
+ JMP SYSDV
+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
+\fFNDTYP, 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
+ STA
+ TAD DEVNUM
+ SZA CLA
+ JMS I (HREAD /READ HANDLER
+ JMS I PTR /CALL ROUTINE
+ STA
+ TAD DEVNUM
+ SZA CLA
+ JMS I (HWRITE /REWRITE HANDLER
+ JMP I [GOAWAY
+
+SYSDV, ISZ AUXFLG
+ TAD (SYSAUX
+ JMP INTO /V3D ALLOW SET SYS:
+\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
+\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
+\fLPTTBL, WIDTH;LPWDTH
+ LC;LPLC
+ LV8E;LPLV
+ LA8A; LP8A
+ LA78; LP78
+ ZBLOCK 4
+ 0
+
+MTATBL, PARITY;MTAPAR
+ DENSITY;MTADEN
+ FILES;MTAFIL
+ ZBLOCK 4
+ 0
+\fAUX, LOC;GENLOC
+ FILES;GENFIL
+ READO;GENREA
+ VERS;GENVER
+ DVCO;GENDVC /V3D
+ BLK;GENBLK /V3D
+ ZBLOCK 6
+ 0
+\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
+PAUS, "P;"A;"U;"S;"E;0
+HGHT, "H;"E;"I;"G;"H;"T;0
+SCOPP, "S;"C;"O;"P;"E;0
+SYSAUX, INIT; SYSINI
+ OS8; SYSOS8
+ OS78; SYS78
+ ZBLOCK 10
+ 0
+DVCO, "D;"V;"C;4000+"O;4000+"D;4000+"E;0
+COL, "C;"O;"L;4000+"U;4000+"M;4000+"N;0
+LA8A, "L;"A;"8;"A;0
+LA78, "L;"A;"7;"8;0
+INIT, "I;"N;"I;"T;0
+OS8, "O;"S;"8;0
+OS78, "O;"S;"7;"8;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
+ -3;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
+
+TTECHO, 0
+ JMS I [TTST1
+ TAD NO
+ SZA CLA
+ TAD (SKP CLA-SZA
+ TAD (SZA
+ DCA I (7200+120
+ JMP I TTECHO
+\fTTPAGE, 0
+ JMS I (OLDTST
+ JMS I [SRCH /V3D NEW ROUTINE
+ 215;100;7450
+ JMP I [REASEM
+ TAD (3 /POINT TO 'SZA CLA'
+ DCA TEMP
+ TAD NO
+ SNA CLA
+ TAD (SZA CLA-CLA /YES
+ TAD (CLA /NO
+ DCA I TEMP
+ 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
+\fSETAB, TAD TEMP
+ TAD (-12
+ DCA T4
+ TAD I T4
+ DCA I T2
+ TAD (SKP CLA
+ DCA I T3
+ JMP I TTTAB
+
+BADWID, JMS I [PRINT
+ TEXT /? ILLEGAL WIDTH/
+ JMP I [GOAWAY
+
+BLK, "B;"L;"O;"C;"K;0
+ 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
+\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
+ PAUS;TTPAUS /V3D
+ HGHT;TTHGHT /V3D
+ SCOPP;TTSCOP /V3D
+ COL;TTCOL /V3D
+ ESC;TTESC /V3D
+ AROW;TTAROW /V3D
+ ZBLOCK 10
+ 0
+ PAGE
+\fTTFLAG, 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
+ -5;TTOK /V3D
+ ZBLOCK 4
+ 0
+ JMP I [NEWERR
+TTOK, JMP I TTST1
+\fOPTEQ, 0
+ JMS I [GETC
+ TAD (-"=
+ SZA CLA
+ JMP I OPTEQ
+ STA /V3D
+ JMS I [SPACE
+ JMP I OPTEQ
+ PAGE
+\fOPRIN, 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
+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
+\fGENCMN, 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 I GENCMN
+ TAD (-"=
+ SZA
+ TAD ("=-",
+ SZA CLA
+ JMP I [SYNTAX
+ JMP I GENCMN
+\fGENLOC, 0
+ JMS GENCMN
+ 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
+ JMS 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, 0
+ 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 I ODT
+
+OLDBAS, JMS I [PRINT
+ TEXT /? OLD BASIC/
+ JMP I [GOAWAY
+ 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
+ CIA /V3D
+ IAC /V3D
+ 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
+\fGET, 0
+ KSF
+ JMP .-1
+ KRB
+ AND [177
+ TAD [200 /FORCE TO 8-BIT
+ JMP I GET
+ PAGE
+\f/FIXED FOR V3D:
+LIST1, 104;105;106
+ 114;115;116
+ 124;125;126;127
+ 134;135;136
+ 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
+ JMS LOOKUP
+ JMP I TECO /NOT THERE
+ 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
+\fLOOKUP, 0
+ DCA ARG1 /PTR TO FILENAME IN AC
+ CLA IAC /LOOKUP ON SYS
+ CIF 10
+ JMS I USR
+ 2
+ARG1, 0 /STARTING BLOCK
+ 0
+ JMP I LOOKUP /NOT FOUND
+ TAD ARG1
+ ISZ LOOKUP
+ JMP I LOOKUP /RETURN 2 WITH BLOCK # IN AC
+\fGENDVC, 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
+ TAD NUCODE
+ TAD (-30
+ SPA CLA
+ JMP I [NUMBIG
+ TAD NUCODE
+ CLL RTL
+ RAL
+ DCA NUCODE
+ TAD (7200
+ DCA RR
+DVLUP, JMS I (GETIOT
+ JMP I GENDVC
+ TAD (-30
+ SPA CLA
+ JMP DVLUP
+ TAD I RR
+ AND (7007
+ TAD NUCODE
+ DCA I RR
+ JMP DVLUP
+\fCDRTBL, CODE;CDCODE
+ ZBLOCK 4
+ 0
+ PAGE
+
+/7000-7177 BUFFER FOR TECO CCB
+/7200-7577 BUFFER FOR HANDLER
+\f FIELD 0
+ *200
+ $