File RESORC.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/12 OS/8 RESOURCES PROGRAM
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1974 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.
/
/
/
/
/
/
/
/
/
/

/ 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="D /FIXES SINCE FIELD TEST RELEASE: /1. 'INPUT ERROR' MESSAGE NO LONGER GARBLED /2. '%NON SYSTEM DEVICE' NEVER PRINTS HANDLERS
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
NOFLST, 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
INPTR, 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
PRINT, 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
TYPE, 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
TYPEV, 0 JMS PRINT TEXT /RESORC V2 / *.-2 RESVERSION&77+6200 *.+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 PAGE
CLOSEO, 0 /CLOSE OUTPUT FILE TAD (232 /PUT ^Z IN BUFFER JMS PUTO TAD (-600 DCA KNT /SEND 600 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
DEFALT, 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
TRY09, 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
PUTO, 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
PUTPT1, 0 PUTPT2, 0 PUTKNT, 0 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 DLST, -1750 /1000 -144 /100 -12 /10 -1 /1 0 /END
TMP, GETD77, 0 TAD (7707 DCA MASK TAD (-6701 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
NAME, 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
/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
CMFLG, 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 COMB, 0 /TEMP TAD LFT TAD RT SMA TAD (4000 JMP I COMB PRDASH, 0 JMS PRINT TEXT /------/ JMS CRLF JMS CRLF JMP I PRDASH
RTL6, 0 RTL RTL RTL JMP I RTL6 PAGE
DEVFUL, 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
OINIT, 0 TAD (-200 DCA PUTKNT TAD (2400 DCA PUTPT1 TAD (2401 DCA PUTPT2 TAD (X1 DCA PUTJMP JMP I OINIT
READI, 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
PRFREE, 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
DIRECT, 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
DKNT, 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
XPRINT, 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
PRINFO, 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
/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. LIST1, TEXT /DTMTLTTDCSRKRF/ PAGE
KIND, 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 (-400 /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
/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
QTD8E, 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
/FIGURE OUT KIND OF TA8E BY DEVICE CODE FOUND IN 67N1 INSTRUCTION / N KIND / 0 TA8A / 1 TA8B /... / 6 TA8G / 7 TA8H PAGE
/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
/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
LNK, 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
MONVER, 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
LIST2, 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 0 LIST3,/ DEVICE NULL DEVICE TEST DEVICE LIST 0 /INTERESTING NOTE: 'BAT', 'FOO2' AND 'RKC6' ALL HASH OUT TO 6601
/DTN /DKN GOTIT, TAD FAST SZA CLA JMS PUTSP TAD (LFT JMS PUTNAM TAD FAST SZA CLA JMS PUTSP JMP NAMLV
TABASE, 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 PAGE
/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
/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
DVALID, 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
UNIT, 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
HNDLRS, 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
PAGE
HEADING,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
SETPTS, 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
CODE, 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
SIZE, 0 JMS GETTYP CIA CLL JMS DPRINT JMS PUTSP ISZ PTYP /POINT TO KIND SUBROUTINE JMP I SIZE PAGE
MODE, 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
ET, 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
SLTM, 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
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;QLPTR /4 DEVICE RK8 ;1520;QRK8 /5 DEVICE RF08;6000;PLAT1 /6 DEVICE RF08;4000;PLAT2 /7 DEVICE RF08;2000;PLAT3 /10 DEVICE RF08;0001;PLAT4 /11 DEVICE DF32;7601;PLAT1 /12 DEVICE DF32;7401;PLAT2 /13 DEVICE DF32;7201;PLAT3 /14 DEVICE DF32;7001;PLAT4 /15 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 ZBLOCK 4 /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 TYPTBL+400-. PAGE
FIELD 1 *2000 $



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search