--- /dev/null
+/14 OS/8 RESOURCES PROGRAM
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/COPYRIGHT (C) 1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/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.
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/
+\f
+
+/ S.R.
+
+/SAVE INFO:
+
+/ .R ABSLDR
+/ *RESORC$
+/ .SAVE SYS RESORC;12000=6003
+
+/CORE MAP:
+
+/0000-1777 C.D.
+/2000-2377 DEVICE NAME AND LENGTH TABLE
+/2400-2777 OUTPUT BUFFER (DOESN'T OVERLAP BETA REGISTER)
+/3000-3377 INPUT HANDLER
+/3400-3777 OUTPUT HANDLER
+/4000-7377 INPUT DIRECTORY
+/4000-7577 INPUT HANDLERS (LOSE 2ND HALF OF LAST ONE)
+
+/FIELD 1
+
+/10000-11777 USR
+/11400-11777 INPUT KBM
+/12000-15577 PROGRAM
+/15600-16177 INPUT BLOCK 0
+/16200-17577 INPUT USR
+
+ INPBL0=5600
+ INPKBM=1400
+ INPUSR=6200
+ INPHND=4000
+
+ FAST=20
+ DIG=21
+ EXTEN=22
+
+ DEVNUM=23 /DEVICE NUMBER OF HANDLER
+ CNT=24
+ PDNT=25 /PTS TO DEVICE NAME TABLE
+ TEMP=26
+ PUDNT=27 /PTS TO USER DEVICE NAME TABLE
+ PDHIT=30 /PTS TO DEVICE HANDLER INFO TABLE
+ PDCWT=31 /PTS TO DEVICE CONTROL WORD TABLE
+ PTYP=32
+ LFT=33
+ RT=LFT+1
+ DVNO=35
+ BLOC=36
+ PDHRT=37 /POINTS TO DEVICE HANDLER RESIDENCY TABLE
+ UN=6
+ X0=10
+ XR1=11
+
+ RESVERSION="A
+
+/FIXES SINCE FIELD TEST RELEASE:
+
+/1. 'INPUT ERROR' MESSAGE NO LONGER GARBLED
+/2. '%NON SYSTEM DEVICE' NEVER PRINTS HANDLERS
+
+/FIXES FOR MAINTENANCE RELEASE (V3C):
+
+/3. INCORPORATED PATCH SEQ NO 1 ALLOWS DISTINGUISHING BETWEEN
+/ HIGH AND LOW SPEED PTR'S AND ADDITIONAL CASSETTES
+/ [DSN FEB 1975]
+
+/4. FIXED LENGTHS OF DF32'S AND RF08'S [SUPERSEDES PATCH SEQ #2
+/ DSN APR 1975]
+
+/5. CHANGED VERSION NUMBER TO V3, UPDATED COPYRIGHT
+/6. ADDED DUMP, LST, AND RX-- TO INTERNAL NAME TABLES
+
+/7. ADDED DETAILS ABOUT DUMP AND FLOPPIES TO TABLES
+
+/V3D CHANGES:
+
+/8. ADDED NAMES SLU AND LQP TO TABLES
+/9. CAN DISTINGUISH LQP KIND OF LPTR
+/10. FIXED BUG ABOUT DUMPING BUFFER FULL OF NULLS
+/11. REMOVED LITTLE-USED 'OUT', 'DEV' FROM NAME TABLES
+\f FIELD 1
+
+ *2000
+
+START, SKP
+ JMP NOCD /CHAIN ENTRY POINT
+/ JMS I (7700 /WE ASSUME THE USR IS IN CORE
+/ 10 /DON'T HAVE TO LOCK USR IN CORE IF JSW SET RIGHT
+CD, JMS I (200
+ 5 /COMMAND DECODE
+ 2331 /DEFAULT INPUT EXTENSION = 'SY'
+NOCD, DCA CTRLO
+ JMS OPENO /OPEN OUTPUT FILE
+ DCA FILENO
+ TAD (7617
+ DCA INPTR /POINT TO FIRST INPUT FILE
+ TAD I (7644
+ AND (4 / V OPTION?
+ SZA CLA
+ JMS TYPEV /OUTPUT VERSION #
+ JMS SETSW
+ DCA FLAG
+ TAD I (7617
+ SNA CLA
+ JMS SPCASE /NO FIRST ARG MEANS USE SYS: IN SPECIAL SENSE
+ JMP INL2
+INLOOP, TAD I INPTR /GET INPUT FILE # AND LENGTH
+ SNA CLA
+ JMP FINI /NO MORE INPUT
+ JMS PRDASH
+INL2, TAD I INPTR
+ AND (17
+ DCA DVNO /GET 4-BIT DEVICE #
+ ISZ FILENO
+ TAD I INPTR
+ AND (7760 /GET NEGATIVE OF FILE LENGTH
+ DCA FILEN
+ ISZ INPTR
+ TAD I INPTR /GET STARTING BLOCK OF FILE
+ DCA SBLOCK
+ ISZ INPTR
+ TAD DVNO
+ JMS GETDCW
+ SMA CLA
+ JMP NOFLST /DEVICE IS NOT FILE STRUCTURED
+ JMS OPENI /GET INPUT HANDLER
+ JMS DIRECT /ASCERTAIN DIRECTORY INFO
+ JMS HNDLRS /ASCERTAIN HANDLERS
+ TAD EXTEN
+ SZA CLA
+ JMS CNTSLT
+ JMS MONVER /ASCERTAIN MONITOR VERSION #
+NEXT, JMS CRLF
+ DCA FLAG
+ JMP INLOOP
+\fNOFLST, JMS PRINT
+ TEXT /%DEV IS NOT FILE STRUCTURED/
+ JMP NEXT
+
+FINI, JMS CLOSEO /CLOSE OUTPUT FILE
+FINIS, TAD I (7642
+ SMA CLA
+ JMP CD /COMMAND LINE ENDED WITH CR
+ CIF CDF 0 /COMMAND LINE ENDED WITH ALTMODE
+ JMP I (7605 /GO BACK TO MONITOR
+
+/CURRENT PIP /Y FILES ARE 50 (DEC) = 62 (OCTAL) BLOCKS LONG
+
+GETDCW, 0
+ AND (17
+ TAD (7757 /GET PTR INTO DEVICE CONTROL WORD TABLE
+ DCA DCW
+ TAD I DCW /GET D.C.W.
+ DCA DCW /SAVE (WHY?)
+ TAD DCW
+ JMP I GETDCW
+
+SETSW, 0
+ DCA FAST
+ DCA EXTEN
+ CLA IAC
+ AND I (7643
+ SNA CLA
+ JMP NOTF
+ ISZ FAST
+ JMP I SETSW
+NOTF, TAD I (7643
+ AND (200
+ SNA CLA
+ JMP I SETSW
+ ISZ EXTEN
+ ISZ FAST
+ JMP I SETSW
+
+/FAST GT 0 IF /L OR /E SWITCH SET
+/EXTEN=1 IF /E SWITCH SET AND /L NOT SET
+\fINPTR, 0 /POINTS TO INPUT FILE LIST
+FILEN, 0 /INPUT FILE LENGTH (NEG IN BITS 0-7)
+DCW, 0 /INPUT DEVICE CONTROL WORD
+FILENO, 0 /INPUT FILE NUMBER IN INPUT LIST
+SBLOCK, 0 /STARTING BLOCK # OF INPUT FILE
+FLAG, 0 /NON-ZERO MEANS SPECIAL CASE OF NO FIRST ARG
+
+SPCASE, 0
+ ISZ FLAG /NOTE SPECIAL CASE
+ CLA IAC
+ DCA I (7617 /FORCE FIRST INPUT TO BE SYS:
+ JMP I SPCASE
+ PAGE
+\fPRINT, 0
+ TAD I PRINT
+ DCA PRT
+ ISZ PRINT
+ TAD PRT
+ JMS RTR6
+ JMS PR
+ JMP I PRINT
+ TAD PRT
+ JMS PR
+ JMP I PRINT
+ JMP PRINT+1
+PRT, 0
+RTR6, 0
+TTY212, RTR
+ RTR
+ RTR
+ JMP I RTR6
+
+PR, 0
+ AND (77
+ SNA
+ JMP I PR
+ TAD (240
+ AND (77
+ TAD (240
+ JMS PUTO
+ ISZ PR
+ JMP I PR
+
+TPRINT, 0 /PRINT TO TELETYPE
+ CLA
+ TAD I TPRINT
+ DCA PRT
+ ISZ TPRINT
+ TAD PRT
+ JMS RTR6
+ JMS TPUT
+ TAD PRT
+ JMS TPUT
+ JMP TPRINT+1
+
+TPUT, 0
+ AND (77
+ SNA
+ JMP PUTCR
+ TAD (240
+ AND (77
+ TAD (240
+ JMS TYPE
+ JMP I TPUT
+
+PUTCR, JMS TCRLF
+ JMP I TPRINT
+\fTYPE, 0
+ DCA TYTEM
+ TAD CTRLO
+ SZA CLA
+ JMP I TYPE /DON'T TYPE IF CONTROL/O FLAG SET
+ KSF
+ SKP
+ JMS LOOKC
+ TAD TYTEM
+ JMS TYPE2
+ JMP I TYPE
+
+TYTEM, 0
+CTRLO, 0 /NON-ZERO MEANS CTRLO/O WAS STRUCK
+
+TYPE2, 0
+ TLS
+ TSF
+ JMP .-1
+ CLA
+ JMP I TYPE2
+
+LOOKC, 0
+ KRB
+ AND (177
+ TAD (-17
+ SNA /IS IT ^O?
+ JMP CTROLO /YES
+ TAD (17-3 /NO
+ SZA CLA /IS IT ^C?
+ JMP I LOOKC /NO
+ CIF CDF 0 /YES
+ JMP I (7605
+CTROLO, TAD ("^
+ JMS TYPE2
+ TAD ("O
+ JMS TYPE2
+ ISZ CTRLO
+ TAD (215
+ JMS TYPE2
+ TAD TTY212
+ JMS TYPE2
+ JMP I TYPE
+\fTYPEV, 0
+ JMS PRINT
+ TEXT /RESORC V4 /
+ *.-2
+ RESVERSION&77+6300
+ *.+1
+ JMS CRLF
+ JMP I TYPEV
+
+CRLF, 0
+ TAD (215
+ JMS PUTO
+ TAD TTY212
+ JMS PUTO
+ JMP I CRLF
+
+TCRLF, 0
+ TAD (215
+ JMS TYPE
+ TAD (212
+ JMS TYPE
+ JMP I TCRLF
+
+DLST, -1750 /1000
+ -144 /100
+ -12 /10
+ -1 /1
+ 0 /END
+ PAGE
+\fCLOSEO, 0 /CLOSE OUTPUT FILE
+ TAD (232 /PUT ^Z IN BUFFER
+ JMS PUTO
+ TAD (-577 /V3D
+ DCA KNT /SEND 577 NULLS TO OUTPUT BUFFER
+ JMS PUTO /THIS GUARANTEES TO PURGE IT
+ ISZ KNT
+ JMP .-2
+ TAD I (7600
+ JMS I (200
+ 4 /CLOSE
+L7601, 7601 /POINTER TO OUTPUT FILE NAME
+OUTLEN, 0 /LENGTH OF OUTPUT FILE
+ HLT /SYSTEM ERROR, CANNOT OCCUR
+ JMP I CLOSEO
+OPENO, 0
+ JMS OINIT
+ DCA OUTLEN
+ TAD (3401
+ DCA OENTRY
+ TAD I (7600
+ SNA CLA
+ JMP DEFALT
+ TAD I (7600
+ JMS GETDCW
+ RAL
+ SPA CLA
+ JMP NOWR /READ ONLY
+ TAD I (7600
+ JMS I (200
+ 1 /FETCH DEVICE HANDLER (POSSIBLY 2-PAGE)
+OENTRY, 3401 /INTO PAGE 3400
+ HLT /SYSTEM ERROR CANNOT OCCUR
+O2, TAD L7601
+ DCA SBLKO
+ TAD I L7601
+ SNA
+ TAD (2205 /RE
+ DCA I L7601 /DEFAULT OUTPUT NAME IS RE
+ DCA OLEN
+ TAD I (7604
+ SNA
+ TAD (1423 /LS
+ DCA I (7604 / .LS IS DEFAULT OUTPUT EXTENSION
+ TAD I (7600
+ JMS I (200
+ 3 /ENTER OUTPUT FILE
+SBLKO, 7601 /POINTS TO OUTPUT FILE NAME
+OLEN, 0 /COMPLEMENT OF ACTUAL OUTPUT FILE LENGTH
+ JMP DEVFUL /OUTPUT DEVICE FULL
+ TAD SBLKO
+ DCA OBLOCK
+ TAD OLEN
+ SZA
+ TAD (-1
+ DCA OLEN
+ JMP I OPENO
+
+KNT, 0
+\fDEFALT, TAD (3100 /SET TTY: AS DEFAULT OUTPUT DEVICE
+ DCA DVN
+ TAD (3401
+ DCA OENT
+ JMS I (200
+ 1 /FETCH HANDLER BY NAME
+ 2424 /TT
+DVN, 3100 /DEVICE TTY:
+OENT, 3401 /INTO 3400
+ JMP NOTTY /NO TTY: ON SYS:
+ TAD OENT
+ DCA OENTRY
+ TAD DVN
+ DCA I (7600
+ JMP O2
+
+OUTERR, JMS TPRINT
+ TEXT /?OUTPUT ERROR/
+ JMS CRLF
+ JMP FINIS
+\fTRY09, 0
+ TAD (60
+ CIA
+ TAD NAM
+ DCA DIG
+ TAD DIG
+ CLL
+ TAD (-10 /TRY DIGITS 0-7
+ SZL CLA
+ JMP I TRY09
+ TAD DIG
+ TAD (60
+ TAD RT
+ DCA RT
+ JMP GOTIT
+
+PUTSP, 0
+ TAD (40
+ JMS PUTO
+ JMP I PUTSP
+ PAGE
+\fPUTO, 0
+ AND (377
+ CDF 0
+ JMP I PUTJMP
+PUTJMP, X1
+X1, DCA I PUTPT1
+ TAD (X2
+ DCA PUTJMP
+PUTLV, CDF 10
+ JMP I PUTO /RETURN
+
+X2, DCA I PUTPT2
+ TAD (X3
+ DCA PUTJMP
+ JMP PUTLV
+
+X3, DCA TMP
+ TAD TMP
+ CLL RTL
+ RTL
+ AND (7400
+ TAD I PUTPT1
+ DCA I PUTPT1
+ TAD TMP
+ CLL RTR
+ RTR
+ RAR
+ AND (7400
+ TAD I PUTPT2
+ DCA I PUTPT2
+ ISZ PUTPT1
+ ISZ PUTPT1
+ ISZ PUTPT2
+ ISZ PUTPT2
+ TAD (X1
+ DCA PUTJMP
+ ISZ PUTKNT
+ JMP PUTLV
+ CDF 10 /BUFFER FILLED
+ ISZ OLEN
+ SKP
+ JMP DEVFUL /CAN'T WRITE ANYMORE
+ CIF 0
+ TAD OENTRY
+ DCA OENTR /GET ON SAME PAGE
+ JMS I OENTR
+ 4200 /WRITE 1 BLOCK
+ 2400 /FIELD 0, LOC 2400
+OBLOCK, 0 /OUTPUT BLOCK #
+ JMP OUTERR
+ ISZ OUTLEN
+ ISZ OBLOCK /POINT TO NEXT BLOCK
+ JMS OINIT
+ JMP I PUTO /RETURN
+\fPUTPT1, 0
+PUTPT2, 0
+PUTKNT, 0
+
+ZLQP, IAC /23
+PLAT4, IAC /22
+PLAT3, IAC /21
+PLAT2, IAC /20
+PLAT1, IAC /17
+ZXTRA, IAC /16
+ZKL8E, IAC /15
+ZRK8E, IAC /14
+ZRK8, IAC /13
+ZASR, IAC /12
+ZTA8, IAC /11
+ZTD8, IAC /10
+ZL645, IAC /7
+ZLPSV, IAC /6
+ZLV8E, IAC /5
+Z026, IAC /4
+Z029, IAC /3
+ZLSPT, IAC /2
+ZPT8E, IAC /1
+NOKIND, CLL RAL
+/PRINTS NAME FROM TABLE, ENTER WITH ENTRY # IN AC
+PRNAM, TAD (TABASE
+ JMS PUTNAM
+ JMS UNIT
+ JMP KINDRET
+\fTMP,
+GETD77, 0
+ TAD (7707
+ DCA MASK
+ TAD (-6704 /V3C
+ JMS SRCH
+ RTR
+ RAR
+ AND (7
+ JMP I GETD77
+
+QTTY, TAD I PDHIT
+ SMA CLA /1 OR 2 PAGE?
+ JMP ZASR /1 PAGE
+ JMP ZKL8E /2 PAGE
+
+QRK8E, TAD I PDHIT
+ AND (7
+ CLL RAR
+ DCA UN
+ JMP ZRK8E
+
+OENTR,
+TSTUN, 0
+ TAD I PDHIT
+ AND (7
+ DCA UN
+ JMP I TSTUN
+
+
+QRK8, JMS TSTUN
+ JMP ZRK8
+ PAGE
+\fNAME, 0
+ DCA NAM
+ TAD FAST
+ SZA CLA
+ JMP TRY1
+ STA
+ TAD DEVNUM
+ SNA CLA
+ JMP TRY1
+ TAD (",
+ JMS PUTO
+TRY1, TAD (LIST1
+ DCA NM1
+LP1, TAD I NM1
+ SNA
+ JMP TRY2
+ DCA LFT
+ ISZ NM1 /TRY A-B
+ TAD (-2 /CHANGE TO -4 TO TRY A-D
+ DCA TEMP
+ DCA RT
+LP1X, TAD RT
+ TAD (100
+ DCA RT
+ JMS COMB
+ JMS TRY09
+ ISZ TEMP
+ JMP LP1X
+ JMP LP1
+
+NAM, 0 /SPECIFIED NAME
+NM1, 0
+
+TRY2, TAD (LIST2
+ DCA NM1
+LP2, TAD I NM1
+ SNA
+ JMP TRY3
+ DCA LFT
+ ISZ NM1
+ TAD I NM1
+ ISZ NM1
+ DCA RT
+ JMS COMB
+ DCA TEMP
+ TAD TEMP
+ CIA
+ TAD NAM
+ SNA CLA
+ JMP GOTIT
+ TAD TEMP
+ JMS TRY09
+ JMP LP2
+\f/TRY0 SHOULD BE SPECIAL CASE TESTS
+
+TRY3, TAD NAM
+ JMS RTR6
+ AND (37
+ SNA
+ JMP TRY4
+ JMS SETIFA
+ CLL RAR
+ JMS RTR6
+ DCA LFT
+ TAD NAM
+ AND (77
+ JMS SETIFA
+ TAD LFT
+ DCA LFT
+ DCA RT
+ JMP GOTIT
+
+SETIFA, 0
+ SNA
+ JMP I SETIFA
+ TAD (-33
+ SPA
+ JMP LETR
+ TAD (33-60
+ CLL
+ TAD (-12
+ SZL
+ JMP NODI
+ TAD (12+60-33
+LETR, TAD (33
+ JMP I SETIFA
+NODI, CLA
+TRY4, TAD NAM
+ JMS NNAME
+NAMLV, JMP I NAME
+\fCMFLG, 0
+
+/COMB, 0
+/ TAD RT
+/ SZA CLA
+/ STA
+/ DCA CMFLG
+/ TAD LFT
+/ TAD RT
+/ ISZ CMFLG
+/ JMP I COMB
+/ CLL RAL
+/ STL RAR
+/ JMP I COMB /TURN ON BIT 0 OF 1 WORD NAME
+
+LIST1, TEXT /DTMTLTTDCSRKRFRX/
+/ ZBLOCK 1 /PATCH SPACE
+
+PRDASH, 0
+ JMS PRINT
+ TEXT /------/
+ JMS CRLF
+ JMS CRLF
+ JMP I PRDASH
+\fRTL6, 0
+ RTL
+ RTL
+ RTL
+ JMP I RTL6
+ PAGE
+\fDEVFUL, JMS TPRINT
+ TEXT /?OUTPUT DEV FULL/
+ JMP FINIS
+
+NOWR, JMS TPRINT
+ TEXT /?OUTPUT DEV IS READ-ONLY/
+ JMP FINIS
+NOTTY, JMS TPRINT
+ TEXT /?TTY DOES NOT EXIST/
+ JMP FINIS
+\fOINIT, 0
+ TAD (-200
+ DCA PUTKNT
+ TAD (2400
+ DCA PUTPT1
+ TAD (2401
+ DCA PUTPT2
+ TAD (X1
+ DCA PUTJMP
+ JMP I OINIT
+\fREADI, 0
+ TAD I READI
+ DCA ARG1
+ ISZ READI
+ TAD I READI
+ DCA ARG2
+ ISZ READI
+ TAD I READI
+ DCA ARG3
+ ISZ READI
+ CIF 0
+ JMS I IENTRY
+ARG1, 0
+ARG2, 0
+ARG3, 0
+ JMP INERR
+ JMP I READI /REURN
+
+INERR, JMS TPRINT
+ TEXT /?INPUT ERROR/
+ JMP FINIS
+
+OPENI, 0 /FECTH INPUT HANDLER
+ TAD (3001 /INTO PAGES 3000, 3200
+ DCA IENTRY
+ TAD DVNO
+ JMS I (200
+ 1 /FETCH HANDLER
+IENTRY, 3001
+ HLT /SYSTEM ERROR, CAN'T OCCUR
+ JMP I OPENI
+\fPRFREE, 0
+ JMS PRINT
+ TEXT /FREE DEVICE SLOTS: /
+ TAD FREEDV
+ JMS XPRINT
+ JMS PRINT
+ TEXT /, FREE BLOCK SLOTS: /
+ TAD SLKNT
+ JMS XPRINT
+ JMP I PRFREE
+ PAGE
+\fDIRECT, 0
+ TAD SBLOCK
+ SZA CLA
+ JMP I DIRECT /NO DIRECTORY INFO FOR FILES
+ JMS READI
+ 1400 /READ 6 BLOCKS
+ 4000 /INTO 04000
+ 1 /FROM BLOCK 1
+ JMS DVALID /CHECK IF VALID DIRECTORY
+ TAD FAST
+ SNA CLA
+ JMP I DIRECT /NO DIRECT IN FAST MODE
+ JMS CRLF
+ DCA USED
+ DCA UNUSED
+ DCA NFILES
+ DCA NMTS
+ DCA NSEGS
+ STL CLA RAR /4000
+DIRLUP, DCA DIRPTR
+ ISZ NSEGS
+ JMS GETDIR
+ DCA NENTRY /- NO. OF ENTRIES IN SEGMENT
+ JMS GETDIR
+ DCA STBLK /STARTING BLOCK # OF FIRST FILE IN SEGMENT
+ JMS GETDIR
+ DCA LINK /LINK TO NEXT SEGMENT
+ JMS GETDIR
+ CLA /IGNORE FLAG WORD TO TENTATIVE FILE
+ JMS GETDIR
+ DCA AIW /# OF ADDITIONAL INFO WORDS
+ TAD NENTRY
+ DCA DKNT
+SEGLUP, JMS GETDIR
+ SNA CLA
+ JMP EMPTY /AN EMPTY ENTRY
+ TAD AIW
+ CIA
+ TAD (3
+ TAD DIRPTR
+ DCA DIRPTR /POINT TO FILE LENGTH
+ JMS GETDIR /GET NEG OF NUMBER OF BLOCKS IN FILE
+ SNA
+ JMP NEXTF /A TENTATIVE FILE, IGNORE
+ CIA
+ TAD USED
+ DCA USED
+ ISZ NFILES
+ JMP NEXTF
+EMPTY, JMS GETDIR
+ CIA
+ TAD UNUSED
+ DCA UNUSED
+ ISZ NMTS
+NEXTF, ISZ DKNT /ANY MORE ENTRIES IN THIS SEGMENT?
+ JMP SEGLUP /YES
+ TAD LINK
+ SNA CLA
+ JMP GOTINFO
+ TAD NSEGS
+ CMA
+ TAD LINK /ASSUME LINKS ARE IN ORDER
+ SZA CLA
+ JMP BADDIR
+ STA /GO TO NEXT SEGMENT
+ TAD DIRPTR
+ AND (7400
+ TAD (400
+ JMP DIRLUP
+\fDKNT, 0
+USED, 0 /NO. OF BLOCKS USED
+UNUSED, 0 /# OF UNUSED BLOCKS ON DEVICE
+NFILES, 0 /# OF FILES
+NMTS, 0 /# OF EMPTIES
+NSEGS, 0 /# OF DIRECTORY SEGMENTS USED
+GOTINFO,JMS PRINFO
+LVDIR, JMS CRLF
+ JMS CRLF
+ JMP I DIRECT
+
+NENTRY, 0 /- # OF ENTRIES IN SEGMENT
+STBLK, 0 /STARTING BLOCK # OF FIRST FILE IN SEGMENT
+LINK, 0 /LINK TO NEXT SEGMENT
+AIW, 0 /# OF ADDITIOANAL INFORMATION WORDS
+
+GETDIR, 0
+ CDF 0
+ TAD I DIRPTR
+ CDF 10
+ ISZ DIRPTR
+ JMP I GETDIR
+
+DIRPTR, 0
+\fXPRINT, 0
+ SNA
+ JMP NONEPR
+ JMS OPRINT
+ JMP I XPRINT
+
+NONEPR, JMS PRINT
+ TEXT /NONE/
+ JMP I XPRINT
+
+SLOTAB, ZBLOCK 10 /KEEPS TRACK OF USED SLOTS
+
+GETTYP, 0
+ CDF 0
+ TAD I PTYP
+ CDF 10
+ JMP I GETTYP
+
+QTC08,
+QLINC, JMS TSTUN
+ JMP NOKIND
+ PAGE
+\fPRINFO, 0
+ TAD EXTEN
+ SNA CLA
+ JMP NOFLS /JUST # OF FREE BLOCKS UNLESS /E
+ TAD NFILES
+ SNA
+ JMP NOFLS
+ STL
+ JMS DPRINT
+ JMS PRINT
+ TEXT / FILES IN /
+ TAD USED
+ STL
+ JMS DPRINT
+ JMS PRINT
+ TEXT / BLOCKS/
+ STA
+ TAD NSEGS
+ SNA CLA
+ JMP ONESEG
+ JMS PRINT
+ TEXT / USING /
+ TAD NSEGS
+ STL
+ JMS DPRINT
+ JMS PRINT
+ TEXT / SEGMENTS/
+ONESEG, JMS CRLF
+NOFLS, TAD UNUSED
+ STL
+ JMS DPRINT
+ JMS PRINT
+ TEXT / FREE BLOCKS/
+ TAD EXTEN
+ SNA CLA
+ JMP I PRINFO
+ TAD NMTS
+ CLL RAR
+ SNA CLA
+ JMP MT1
+ JMS PRINT
+ TEXT / (/
+ TAD NMTS
+ STL
+ JMS DPRINT
+ JMS PRINT
+ TEXT / EMPTIES)/
+MT1, CLA IAC
+ TAD AIW
+ SZA CLA
+ JMS PRAIW
+ JMP I PRINFO
+
+PRAIW, 0
+ JMS CRLF
+ TAD AIW
+ CIA
+ STL
+ JMS DPRINT
+ JMS PRINT
+ TEXT / EXTRA INFO WDS/
+ JMP I PRAIW
+\f/HNDGET GETS VALUE IN HANDLER FROM REL LOC IN AC
+
+HNDGET, 0
+ TAD BLOC
+ DCA TEMP
+ CDF 0
+ TAD I TEMP
+ CDF 10
+ JMP I HNDGET
+
+PUTNAM, 0
+ DCA PUTNMT
+ TAD I PUTNMT
+ JMS PUTPAK
+ ISZ PUTNMT
+ TAD I PUTNMT
+ JMS PUTPAK
+ JMP I PUTNAM
+PUTNMT, 0
+/THIS PRINTS A 4 CHAR NAME, ARG IN AC.
+
+COMB, 0 /TEMP
+ TAD LFT
+ TAD RT
+ SMA
+ TAD (4000
+ JMP I COMB
+ PAGE
+\fKIND, 0
+ JMS PUTSP
+ TAD BLOC
+ SNA CLA
+ JMP NOKIND
+ JMS GETTYP
+ SNA
+ JMP NOKIND
+ DCA TEMP
+ JMP I TEMP /BRANCH TO APPROPRIATE SUBROUTINE
+KINDRET,JMP I KIND
+
+/KIND SUBROUTINES
+/ENTER WITH BLOC POINTING TO HANDLER BLOCK IN CORE
+
+/SRCH SEARCHES THE HANDLER FOR THE NEGATIVE
+/OF THE NON-ZERO VALUE IN THE AC.
+/MASKED BY MASK.
+/IF FOUND, RETURN IS MADE WITH VALUE(WITHOUT MASK) IN AC
+/IF NOT FOUND, AC IS 0 UPON RETURN
+
+SRCH, 0
+ DCA LOOK4
+ STA
+ TAD BLOC
+ DCA XR1
+ TAD (-230 /V3C MUST SEARCH 2 PAGES; TROUBLE IF TA8E IS IN LAST SLOT
+ DCA SRCHCNT
+SRCHLP, CDF 0
+ TAD I XR1
+ CDF 10
+ DCA TEMP
+ TAD TEMP
+ AND MASK
+ TAD LOOK4
+ SNA CLA
+ JMP SRCHGOT
+ ISZ SRCHCNT
+ JMP SRCHLP
+ JMP I SRCH
+
+SRCHGOT,TAD TEMP
+ JMP I SRCH
+
+SRCHCNT,-400
+LOOK4, 0
+/ **** NOTE: ALL HANDLERS SHOULD BE PADDED OUT TO FILL PAGE
+/ WITH ZEROES
+/BUILD SHOULD WRITE ZEROES IN 2ND PAGE OF ONE PAGE HANDLER
+\f/SPECIAL PURPOSE ROUTINES
+
+QPTP,
+QPTR, STA
+ DCA MASK
+ TAD (-6021
+ JMS SRCH
+ SZA CLA
+ JMP ZPT8E
+ JMP ZLSPT
+
+/FOR TYPE PTR
+/ IF HANDLER CONTAINS A 6021 IT IS A PT8E
+/ OTHERWISE IT IS A LSPT
+
+QCR8E, TAD (104
+ JMS HNDGET
+ TAD (-3203
+ SNA
+ JMP Z029
+ TAD (3203-7735
+ SNA CLA
+ JMP Z026
+ JMP NOKIND
+
+/FOR TYPE CR8E
+/ IF REL LOC 104 IS A 3203 IT IN 029 KIND
+/ IF REL LOC 104 IS A 7735 IT IS AN 026 KIND
+/ OTHERWISE IT IS AN UNKNOWN KIND
+
+QLPTR, STA
+ DCA MASK
+ TAD (-6652 /SEARCH FOR A 6652
+ JMS SRCH
+ SZA CLA
+ JMP ZL645 /FOUND IT
+ CLA IAC /LOOK AT REL LOC 1
+ JMS HNDGET
+ TAD (-4
+ SNA
+ JMP ZLV8E
+ TAD (4-14
+ SNA CLA
+ JMP ZLPSV
+ JMP NOKIND
+
+/IF HANDLER CONTAINS A 6652 IT'S AN L645
+/OTHERWISE, DEPENDS ON REL LOC 1
+/ IF REL LOC 1 IS A 14, IT'S A LPSV
+/ IF REL LOC 1 IS A 4, IT'S A LV8E
+/ OTHERWISE IT'S UNKNOWN (POSSIBLY OLD LP08 OR LS8E KIND)
+
+MASK, 0
+\fQTD8E, JMS GETD77
+ CIA
+ TAD (10
+ DCA TEMP
+ TAD KTD8+1
+ AND (7700
+ TAD TEMP
+ DCA KTD8+1
+ TAD I PDHIT
+ RTR
+ RAR
+ STA
+ TAD TEMP
+ CML RAL /TIMES 2 + LINK
+ DCA UN
+ JMP ZTD8
+
+/FIGURE OUT KIND OF TD8E BY DEVICE CODE FOUND IN 67N1 INSTRUCTION
+/ N TYPE
+/ 7 TD8A
+/ 6 TD8B
+/..
+/ 1 TD8G
+/ 0 TD8H
+
+QTA8E, JMS GETD77
+ IAC
+ DCA TEMP
+ TAD KTA8+1
+ AND (7700
+ TAD TEMP
+ DCA KTA8+1
+ STA
+ TAD I PDHIT
+ AND (177
+ SNA CLA
+ CLA IAC
+ DCA UN
+ STA
+ TAD TEMP
+ CLL RAL
+ TAD UN
+ DCA UN
+ JMP ZTA8
+\f/FIGURE OUT KIND OF TA8E BY DEVICE CODE FOUND IN 67N1 INSTRUCTION
+
+/ N KIND
+/ 0 TA8A
+/ 1 TA8B
+/...
+/ 6 TA8G
+/ 7 TA8H
+ PAGE
+\f/DECIMAL PRINT
+/LINK OFF MEANS PRINT LEADING SPACES
+/LINK ON MEANS DON'T PRINT LEADING SPACES OR ZEROS
+
+DPRINT, 0
+ DCA DTM
+ RAR
+ DCA LNK
+ DCA ZFLG
+ TAD (DLST
+ DCA PLST
+DPL2, DCA DYG
+DPLUP, TAD I PLST
+ SNA
+ JMP I DPRINT
+ CLL
+ TAD DTM
+ SNL
+ JMP NEGG
+ ISZ DYG
+ DCA DTM
+ JMP DPLUP
+
+NEGG, CLA
+ TAD DYG
+ TAD ZFLG
+ SNA
+ JMP PRBLNK
+ TAD (60
+ JMS PUTO
+ STL CLA RAR /4000
+ DCA ZFLG
+ISZZ, ISZ PLST
+ JMP DPL2
+
+PRBLNK, TAD LNK
+ CLL RAL
+ TAD L40
+ SNL
+ JMS PUTO
+ CLA
+ JMP ISZZ
+DYG, 0
+PLST, 0
+ZFLG, 0 /4000 MEANS PASSED LEADING ZEROES
+\f/PRINTS A 2-DIGIT OCTAL NUMBER WITH LEADING 0'S
+
+OPRINT, 0
+ DCA OTEM
+ TAD OTEM
+ RTR
+ RAR
+ JMS OPRI
+ TAD OTEM
+ JMS OPRI
+ JMP I OPRINT
+
+OPRI, 0
+ AND (7
+ TAD (260
+ JMS PUTO
+ JMP I OPRI
+
+PRINT4, 0
+ DCA DTM
+ TAD DTM
+ JMS RTR6
+ JMS OPRINT
+ TAD DTM
+ JMS OPRINT
+ JMP I PRINT4
+
+DTM, 0
+
+PUTPAK, 0
+ DCA DTM
+ TAD DTM
+ JMS RTR6
+ JMS PR
+ JMS BLNKIT
+ TAD DTM
+ JMS PR
+ JMS BLNKIT
+ JMP I PUTPAK
+
+BLNKIT, 0
+ TAD FAST
+ SZA CLA
+ TAD L40
+ JMS PR
+L40, 40 /CAN'T HURT TO CALL PR WITH A 0
+ JMP I BLNKIT
+\fLNK,
+VERSN, 0
+ JMS PUTSP
+ TAD BLOC
+ SNA CLA
+ JMP SYSV /TEMP (ENTRY PT IS IN FIELD 1 7600
+ TAD I PDHIT
+ AND (177
+ TAD BLOC
+GOVR, DCA DTM
+ JMS GETV
+ CLL IAC
+ TAD (-34
+ SZL CLA
+ JMP NOOOP
+ JMS GETV
+PUTVR, SZA
+ TAD L40
+ TAD L40
+ JMS PUTO
+ JMP I VERSN
+
+OTEM,
+GETV, 0
+ CDF 0
+ TAD I DTM
+ CDF 10
+ JMP I GETV
+
+NOOOP, STA
+ TAD DTM /SCAN BACKWARDS FOR HANDLER VERSION # (LT 33)
+ JMP GOVR
+
+SYSV, TAD I PDHRT
+ AND (177
+ TAD (INPBL0+200
+ DCA DTM
+ TAD I DTM
+ CLL
+ TAD (-34
+ SNL CLA
+ TAD I DTM /PRINT BAD VERSION # AS SPACE
+ JMP PUTVR
+ PAGE
+\fMONVER, 0
+ TAD FAST
+ SNA CLA
+ JMP I MONVER
+ TAD I (1400
+ TAD (-7607
+ SNA
+ JMP NOTV3
+ TAD (7607+60
+ DCA TEMPX
+ TAD I (1400+31
+ DCA TMPTWO
+OS8, TAD ("O
+ JMS PUTO
+MONV2, JMS PRINT
+ TEXT \S/8 V\
+ TAD TEMPX
+ JMS PUTO
+ TAD TMPTWO
+ JMS PUTO
+ JMS CRLF
+ JMP I MONVER
+
+TMPTWO, 0
+TEMPX, 0
+
+NOTV3, TAD (40
+ DCA TMPTWO
+/CHECK FOR PS/8 AND COS
+ JMP OS8
+\fLIST2, DEVICE LPT
+ DEVICE TTY
+ DEVICE PTR
+ DEVICE PTP
+ DEVICE CDR
+ DEVICE SYS
+ DEVICE DSK
+ DEVICE CDP
+/ DEVICE DEV
+/ DEVICE OUT
+/ DEVICE INP
+ DEVICE BAT
+ DEVICE NULL /SHOULD BE IN NEXT TABLE
+ DEVICE LST /V3C
+ DEVICE DUMP
+ DEVICE SLU
+ DEVICE LQP
+ ZBLOCK 10 /PATCH SPACE
+ 0
+
+/LIST3, DEVICE NULL
+/ DEVICE TEST
+/ DEVICE LIST
+/ DEVICE DUMP /V3C
+/ ZBLOCK 2 /PATCH SPACE
+/ 0
+
+/INTERESTING NOTE: 'BAT', 'FOO2' AND 'RKC6' ALL HASH OUT TO 6601
+/** WANT TO CHANGE AIW PRINTER TO SAY 'NO' ADDITIONAL INFO WORDS
+/IF THERE ARE NONE.
+\f/DTN
+/DKN
+GOTIT, TAD FAST
+ SZA CLA
+ JMS PUTSP
+ TAD (LFT
+ JMS PUTNAM
+ TAD FAST
+ SZA CLA
+ JMS PUTSP
+ JMP NAMLV
+\fTABASE, 4040;4040 /0
+ DEVICE PT8E /1
+ DEVICE KS33 /2
+ DEVICE 029 /3
+ DEVICE 026 /4
+ DEVICE LV8E /5
+ DEVICE LPSV /6
+ DEVICE L645 /7
+KTD8, DEVICE TD8 /10
+KTA8, DEVICE TA8 /11
+ DEVICE AS33 /12
+ DEVICE RK01 /13
+ DEVICE RK05 /14
+ DEVICE KL8E /15
+ DEVICE XTRA /16
+ TEXT / =1/ /17
+ TEXT / =2/ /20
+ TEXT / =3/ /21
+ TEXT / =4/ /22
+ DEVICE LQP /23
+ PAGE
+\f/FORMAT OF SYSTEM HEAD FILE
+
+/REL BLK CONTENTS ABS BLK ON DEV
+
+/0 BOOTSTRAP & PAGE 0'S 0
+/1-4 KEYBOARD MONITOR 7-12
+/5-7 USR 13-15
+/10-17 DEVICE HANDLERS 16-25
+/20 ENTER 26
+/21-42 SCRATCH BLOCKS 27-50
+/43-45 COMMAND DECODER 51-53
+/46-47 SAVE,DATE 54-55
+/50 ERROR OVERLAY 56
+/51 CHAIN OVERLAY 57
+/52-55 ODT 60-63
+/56 RESERVED FOR EXPN 64
+/57 CCL SCRATCH 65
+/60 12K TD8E HANDLER 66
+/61 CCL OVERLAY 67
+\f/DIR DID NOT GET IN CORE ON /F?
+
+DEV, DCA BLCK0
+ TAD (66
+ DCA BLCK66
+ TAD (7
+ DCA KBM
+ TAD (13
+ DCA USRBLK
+ CDF 0
+ TAD I (4001 /GET STARTING BLOCK # OF FILES
+ CDF 10
+ TAD (-7
+ SNA CLA
+ JMP NONSYS /FILES START AT BLOCK 7 OF DEVICE
+ TAD (16
+/CHECK TO SEE THAT DEVICE HAS SYSTEM ON IT
+ JMP RD
+
+NONSYS, JMS PRINT
+ TEXT /%NON SYSTEM DEVICE/
+ JMP NEXT
+
+BADFIL, JMS PRINT
+ TEXT /%NOT A SYSTEM HEAD/
+ JMP NEXT
+
+BADMON, JMS PRINT
+ TEXT /%BAD MONITOR/
+ JMP NEXT
+\fDVALID, 0
+ STL CLA RAR /4000
+ DCA DIRPTR
+ JMS GETDIR
+ CLL
+ TAD (200
+ SNL CLA
+ JMP BADDIR
+ JMS GETDIR
+ SNA
+ JMP BADDIR
+ TAD (-400 /REMEMBER COS
+ SMA CLA
+ JMP BADDIR
+ JMS GETDIR
+ CLA /LINKS THOROUGHLY CHECKED ELSEWHERE
+ JMS GETDIR
+ SNA
+ JMP OKDIR
+ TAD (-1400
+ CLL
+ TAD (-1000
+ SZL CLA
+ JMP BADDIR
+OKDIR, JMS GETDIR
+ SPA SNA CLA
+ JMP I DVALID
+BADDIR, JMS PRINT
+ TEXT \?BAD DIRECTORY\
+ JMP LVDIR
+\fUNIT, 0
+ JMS PUTSP
+ TAD BLOC
+ SNA CLA
+ JMP TSTSUN
+ TAD UN
+ SPA
+ TAD (40+1-60
+ZOUN, TAD (60
+ JMS PUTO
+ JMP I UNIT
+
+TSTSUN, TAD I PDHRT
+ TAD (-7607
+ SZA CLA
+ CLA IAC /ASSUME CORESIDENT HANDLERS ARE UNIT 1
+ JMP ZOUN /ELSE, NO UNIT
+ PAGE
+\fHNDLRS, 0
+ TAD SBLOCK
+ SNA /IS IT A FILE?
+ JMP DEV /NO
+ DCA BLCK0 /YES
+ TAD BLCK0
+ TAD (60
+ DCA BLCK66
+ TAD FILEN
+ TAD (-6340
+ SZA CLA
+ JMP BADFIL /FILE DOESN'T HAVE LENGTH 50 (DECIMAL)
+ TAD BLCK0
+ IAC
+ DCA KBM
+ TAD BLCK0
+ TAD (5
+ DCA USRBLK
+ TAD BLCK0
+ TAD (10
+RD, DCA HNDBLK
+ JMS READI /READ IN BLOCK 0
+ 210 /2 PAGES
+ INPBL0
+FREEDV, /# OF FREE DEVICE NUMBERS
+BLCK0, 0
+ TAD I (INPBL0+212 /** DEPENDS ON TD8E HANDLER
+ TAD (-3
+ SZA CLA /IS IT 12K TD8E?
+ JMP NOTD8E /NO
+ JMS READI /YES
+ 110 /1 PAGE
+ INPBL0
+BLCK66, 66
+NOTD8E, TAD I (INPBL0+200
+ TAD (-4207
+ SZA CLA
+ JMP BADMON /BAD MONITOR ON DEVICE
+ DCA 7 /DELETE CURRENT USR DIRECTORY SEGMENT
+ /SINCE KBM READS OVER IT
+ JMS READI /READ IN KEYBOARD MONITOR
+ 211 /ONLY FIRST 2 PAGES
+ INPKBM
+KBM, 7
+ JMS READI /READ IN USR
+ 611 /6 PAGES
+ INPUSR
+USRBLK, 13
+ JMS READI /READ IN ALL HANDLERS (EXCEPT 2ND PAGE OF LAST ONE)
+ 1700 /17 PAGES
+ INPHND
+HNDBLK, 16
+ TAD (-17
+ DCA CNT
+ DCA FREEDV
+ JMS ZEROSL
+ DCA DEVNUM
+ JMS SETPTS
+ JMS HEADING
+LOOP, ISZ DEVNUM /PT TO NEXT HANDLER
+ TAD I PDNT /LOOK AT DEVICE NAME
+ SNA CLA
+ JMP NOXXT
+ TAD EXTEN
+ SNA CLA
+ JMP NONUM
+ TAD DEVNUM
+ JMS OPRINT
+NONUM, TAD I PDNT
+ JMS NAME /PRINT NAME
+ TAD FAST
+ SNA CLA
+ JMP NEXXT
+ JMS TIPE /PRINT TYPE
+ TAD EXTEN
+ SNA CLA
+ JMP PUSER
+ JMS MODE /PRINT MODE
+ JMS SIZE /PRINT SIZE
+ JMS BLOCK /PRINT BLOCK # OF LOC OF HANDLER
+ STA
+ DCA UN
+ JMS KIND /PRINT KIND
+ JMS VERSN /PRINT HANDLER VERSION #
+ JMS ENTRY
+PUSER, TAD I PUDNT
+ SNA CLA
+ JMP EOL
+ TAD I PUDNT
+ JMS NAME /PRINT USER NAME
+EOL, JMS CRLF
+NEXXT, ISZ PDNT
+ ISZ PUDNT
+ ISZ PDHIT
+ ISZ PDCWT
+ ISZ PDHRT
+ ISZ CNT
+ JMP LOOP
+ JMS CRLF
+ JMP I HNDLRS
+
+NOXXT, ISZ FREEDV
+ JMP NEXXT
+\f PAGE
+\fHEADING,0
+ TAD FAST
+ SNA CLA
+ JMP I HEADING
+ TAD EXTEN
+ SNA CLA
+ JMP REGLR
+ JMS PRINT
+ TEXT /# NAME TYPE MODE SIZ BLK KIND U V ENT USER/
+ JMP HDLV
+REGLR, JMS PRINT
+ TEXT / NAME TYPE USER/
+HDLV, JMS CRLF
+ JMP I HEADING
+\fSETPTS, 0
+ TAD I (INPUSR+36
+ TAD (INPUSR
+ DCA PDNT
+ TAD FLAG
+ SZA CLA
+ TAD (7741-141-INPBL0
+ TAD (INPBL0+141
+ DCA PUDNT
+/CHANGE FOR FLAG?
+ TAD I (INPUSR+37
+ TAD (INPUSR
+ DCA PDHIT
+/FLAG?
+ TAD (INPBL0+160
+ DCA PDCWT
+ TAD (INPBL0+47
+ DCA PDHRT /DEVICE HANDLER RESIDENCY TABLE
+ JMP I SETPTS
+\fCODE, 0 /DEVICE CODE
+
+NNAME, 0
+ DCA TIPE
+ TAD ("(
+ JMS PUTO
+ TAD TIPE
+ JMS PRINT4
+ TAD (")
+ JMS PUTO
+ JMP I NNAME
+
+TIPE, 0
+ TAD I PDCWT
+ RTR
+ RAR
+ AND (77
+ DCA CODE
+ TAD CODE
+ CLL RTL
+ TAD (TYPTBL
+ DCA PTYP
+ JMS GETTYP
+ ISZ PTYP
+ SNA
+ JMP UNKN
+ JMS PUTPAK
+ JMS GETTYP
+ JMS PUTPAK
+ ISZ PTYP /POINT TO SIZE
+ JMP I TIPE
+UNKN, JMS PUTSP
+ TAD CODE
+ JMS OPRINT
+ JMS PUTSP
+ ISZ PTYP
+ JMP I TIPE
+\fSIZE, 0
+ JMS GETTYP
+ CIA
+ CLL
+ JMS DPRINT
+ JMS PUTSP
+ ISZ PTYP /POINT TO KIND SUBROUTINE
+ JMP I SIZE
+
+QLPTRX, TAD I PDHIT
+ SMA CLA /1 OR 2 PAGE?
+ JMP QLPTR /1 PG
+ JMP ZLQP /2 PG
+ PAGE
+\fMODE, 0
+ JMS PUTSP
+ TAD (-4
+ DCA MKNT
+ TAD I PDCWT
+ RTL
+ RAL
+ JMS MSET
+ "R
+ TAD I PDCWT
+ RTL
+ JMS MSET
+ "W
+ TAD I PDCWT
+ RAL
+ CML
+ JMS MSET
+ "F
+ JMS PUTSP
+ ISZ MKNT
+ JMP .-3
+ JMP I MODE
+
+MSET, 0
+ CLA
+ TAD I MSET
+ DCA MCHAR
+ ISZ MSET
+ SZL
+ JMP I MSET
+ ISZ MKNT
+ TAD MCHAR
+ JMS PUTO
+ JMP I MSET
+
+MKNT, 0
+\fET,
+BLOCK, 0
+ TAD I PDHIT
+ JMS RTL6
+ AND (17
+ SNA
+ JMP SYS
+ DCA SLTM
+ STA
+ TAD SLTM
+ CLL RTR
+ RTR
+ RAR
+ TAD (INPHND
+ DCA BLOC
+ TAD SLTM
+ TAD (15
+ JMS OPRINT
+ TAD I PDHIT
+ SMA CLA
+ TAD (40-"+
+ TAD ("+
+ JMS PUTO /"+" MEANS 2 PAGE HANDLER
+ TAD SLTM
+ TAD (SLOTAB-1
+ DCA SLTM
+ ISZ I SLTM
+ JMP I BLOCK
+SYS, JMS PRINT
+ TEXT /SYS/
+ DCA BLOC /0 MEANS RESIDENT WITH SYS:
+ JMP I BLOCK
+
+MCHAR,
+ENTRY, 0
+ JMS PUTSP
+ TAD BLOC
+ SNA CLA
+ JMP SYSENT
+ TAD I PDHIT
+EN2, DCA ET
+ TAD ET
+ JMS RTR6
+ AND (1
+ SZA
+ TAD (20
+ TAD (40
+ JMS PUTO
+ TAD ET
+ JMS OPRINT
+ JMP I ENTRY
+
+SYSENT, TAD I PDHRT
+ JMP EN2
+\fSLTM, 0
+
+SLKNT,
+ZEROSL, 0
+ TAD (-10
+ DCA SLTM
+ TAD (SLOTAB-1
+ DCA X0
+ DCA I X0
+ ISZ SLTM
+ JMP .-2
+ JMP I ZEROSL
+
+CNTSLT, 0
+ TAD (-10
+ DCA SLTM
+ DCA SLKNT
+ TAD (SLOTAB-1
+ DCA X0
+CNSLP, TAD I X0
+ SNA CLA
+ ISZ SLKNT
+ ISZ SLTM
+ JMP CNSLP
+ JMS PRFREE
+ JMS CRLF
+ JMP I CNTSLT
+ PAGE
+\f FIELD 0
+
+ *2000
+
+/ DEVICE LENGTH TABLE
+
+/FORMAT OF THIS TABLE:
+
+/1,2 DEVICE GENERALIZED NAME (CORR TO TYPE)
+/3 NEG OF LENGTH
+/4 ADDRESS OF SUBR IN FIELD 1 FOR SPECIALIZATION
+
+TYPTBL, DEVICE TTY ;0000;QTTY /0
+ DEVICE PTR ;0000;QPTR /1
+ DEVICE PTP ;0000;QPTP /2
+ DEVICE CR8E;0000;QCR8E /3
+ DEVICE LPTR;0000;QLPTRX /4 V3D
+ DEVICE RK8 ;1520;QRK8 /5
+ DEVICE RF08;6001;PLAT1 /6 V3C
+ DEVICE RF08;4002;PLAT2 /7
+ DEVICE RF08;2003;PLAT3 /10
+ DEVICE RF08;0004;PLAT4 /11 RF'S NOW ONLY HAVE LOGICALLY 1777 BLOCKS
+ DEVICE DF32;7601;PLAT1 /12
+ DEVICE DF32;7402;PLAT2 /13 V3C
+ DEVICE DF32;7203;PLAT3 /14
+ DEVICE DF32;7004;PLAT4 /15 DF'S HAVE 177 BLOCKS
+ DEVICE TC08;6437;QTC08 /16
+ DEVICE LINC;6437;QLINC /17
+ DEVICE TM8E;0000;0 /20
+ DEVICE TD8E;6437;QTD8E /21
+ DEVICE BAT ;0000;0 /22
+ DEVICE RK8E;1520;QRK8E /23
+ DEVICE NULL;0000;0 /24
+ DEVICE RX8E;7022;0 /25
+ ZBLOCK 4 /26
+ DEVICE TA8E;0000;QTA8E /27
+ DEVICE VR12;0000;0 /30
+ ZBLOCK 4 /31
+ ZBLOCK 4 /32
+ ZBLOCK 4 /33
+ ZBLOCK 4 /34
+ ZBLOCK 4 /35
+ DEVICE DUMP;0000;0 /36
+ ZBLOCK 4 /37
+ ZBLOCK TYPTBL+400-.
+ PAGE
+\f FIELD 1
+ *2000
+ $