*20 ///EXEC38DF /PDP-12 EXEC /RK8E & DF32 DISK VERSION (NOT FOR RK08) /BANK 0 AT BLOCKS 110-113 /BANK 3 AT BLOCKS 14-17 /NO API /NO COMMAND EXEC / /DISK (DF32 & RK8E) /DUAL RK8E /LPT (LP12) /DATAPHONE (IOT 40-41) /SWITCH READER /SWITCH PASSER /COPYRIGHT 1972 /MODIFIED 1973,1974,1975 /1976 TO INCLUDE DATAPHONE /AND DUAL RK8E /N. DAVID CULVER EJECT /DEFINITIONS IOB=500 RMF=6244 DJR=6 ESF=4 SFA=24 STD=416 TWC=417 PDP8=2 LINC=6141 AXO=1 XOA=21 TAC=3 TMA=23 CIF=6202 CDF=6201 ION=6001 IOF=6002 RIB=6234 RDF=6214 RIF=6224 SPL=6602 RFC=6014 EJECT /ASSIGNMENTS USRSIZ=10 IOSIZ=5 / PLO=1 CLK=2 DSK=3 TP0=4 HSP=12 KB0=13 HSR=21 LPT=24 PLT=25 DS1=26 BPLT=30 EJECT /INTERRUPT PROCESSOR / SEGMNT 0 *1 / LINC STC SAVAC C2000, ADD 0 STC SAVPC ADD C1000 JMP PROINT-1 ONE, 1 / *15 2\USR4 / *20 MONITO IFIND, LDA I 10 STC .+2 IOB TEM4, 0 /CLEAR FLAGS ETC. STC TEM5 LDA I 10 STC .+4 LDA I TEM5, 0 /AC LIF 3 JMP /SERVICE ROUTINE / USER, 4 PSTATE, 0 EJECT /LINC MODE INTERRUPT / *41 LNCINT, STC SAVAC LDA C40, 40 BSE I JMP STC SAVPC JMP INTSAV / /SCAN THE DEVICE FLAG TABLE OPR6=JMP . /CAUSED BY INTERRUPT /OR ISSUANCE OF OPR6 BY /IDLE JOB PROINT, SET I 10 2\DEVTAB-1 / NXTDEV, LDA I 10 AZE I RETURN STC .+2 IOB TEM3, 0 CSKP, SKP JMP IFIND XSK I 10 XSK I 10 JMP NXTDEV EJECT /COMMON INTERRUPT STRIPPER / INTSAV, LDF 3 SET 10 0 SET 14 15 ROL I 14 FLO I ADD C2000 ADD USER STA I 14 QAC ROL 1 QLZ ADD ONE STA I 14 CLR /RIB DOES NOT JAM IOB RIB SETFLD BSE I SUMB, LDF STC GOB LDA 14 ADD SUMB STC GOBU LDA I SAVPC, 0 STA I 14 / GOB, LDF LDA 2000 LDF 3 STA I 14 /0 LOC / LDA I SAVAC, 0 STA I 14 LIF 0 JMP 10 EJECT SLEEP=JMP . / COM STA 15 JMP 0 / M1, 7777 EJECT /TRAP PROCESSOR / *141 IOB IOF STC SAVAC C1000, LDA 140 PDP PMODE TAD M1 /PRESERVE FLO LINC LMODE BSE I JMP STC SAVPC JMP INTSAV JMP SNSTST /CHK SNS & RLSW FETCH STA I TRPINS, 0 ROR I 6 SHD I 0500 DOOPR SHD I 0700 DOFP DOEXC EJECT /740 CALL FLOATING POINT DOFP=JMP . / LDA 15 ADA I C4, 4 STC 14 LDA I FPUSE, 0 AZE I JMP OKFP LDA I MONE, -1 ADM I 14 TRYCLK / OKFP, LDA I 14 ADD MONE STC FLOPC ADD GOB STA FLOUMB BCL I 40 STC FRMB / LDF 1 LDA I FLOUMB, 0 STA 2020 LDA I GOBU, 0 STA 2022 STC FPUSE LDA I 14 LDA I 14 STA 2024 LDA I FLOPC, 0 LIF 1 IOB ION JMP 25 EJECT /RETURN FROM F.P. / IOB IOF STC WAKPC STC FPUSE QAC ROL 1 QLZ ADD ONE FRMB, LIF DJR IOB ION WAKPC, JMP EJECT /THE ROUTINE TO FIND /A STARTABLE USER /AND START HIM / NEXT=JMP . / LDF 3 SLMB, LIF 0 JMP .+1 /SET SAVFLD N0, LDA I USRSIZ ADM NXPT SAE I 2\USEBOT JMP N1 LDA I 2\USETAB STC NXPT ADD TWO AWAKE / N1, LDA NXPT, 2\USETAB-USRSIZ APO JMP N0 AZE I JMP N0 SET 15 NXPT LDA I 15 BCL I 7700 STC USER SET 15 NXPT EJECT RETURN=JMP . / LDF 3 SET 14 15 CLR FLOSET, STC 16 LDA I 14 ROL I 1 ADD FLOSET ROL 2 SCR 14 STC 16 /MODE LDA I 14 SCR 14 /MQ LDA I 14 BSE I LIF STA GO2 STA GO8 BSE I LDF STC GOA LDA I 14 BSE I LDF STC GO1 LDA I 14 STC GPC LDA I 14 GOA, LDF STA 2000 /0 LOC LDF 3 / LDA I 14 /AC GO1, LDF XSK 16 SKP JMP GO8 GO2, LIF C6, DJR IOB ION GPC, 0 GO8, LIF 2 PMODE ION JMP I GPC LMODE EJECT SETFLD=JMP . / ROL 2 SCR 5 BCL I 7740 STA SET0 STA I 14 QAC SCR 6 STA I 14 LDA I SET0, 0 JMP 0 EJECT DOOPR=JMP . / LZE DOREXC /540 SCR 7 BCL I 7760 ADD JLOC STC .+1 TEM, 0 JLOC, JMP TRPTAB-1 / / /OPR TRAP TABLE / TRPTAB, OPR1 OPR2 OPR3 OPR4 OPR5 OPR6 OPR7 OPR10 OPR11 OPR12 OPR13 JMP OPR14 /LSW JMP OPR15 /RSW EJECT /FETCH, A ROUTINE TO /GET AN ARGUEMENT FROM A TRAPPED INSTRUCTION / FETCH=JMP . LDF 3 SET 10 15 XSK I 10 XSK I 10 LDA I 10 ADD SUMB STC FUMB XSK I 10 LDA I 10 STC IT ADD ONE ADM 10 FUMB, LDF LDA IT, 0 LDF 3 JMP 0 EJECT SETUSE=JMP . / LDF 3 SET I 17 2\USETAB-USRSIZ+1 JMP 0 / SRCH=JMP . / SET 13 0 LDA I USRSIZ-1 ADM 17 SAE I 2\USEBOT SKP JMP 13 XSK I 13 SET 16 17 LDA I 17 JMP 13 EJECT /TIME SLICER / TRYCLK=JMP . / LIF 0 TC, LDA I TWO, 2 AWAKE / TSNX, LDA TWO SLEEP NEXT / /SWITCH READER SNSTST, CLR SNS I 0 ADD ONE STC SNS0 SNS I 1 ADD ONE STC SNS1 SNS I 2 ADD ONE STC SNS2 SNS I 3 ADD ONE STC SNS3 SNS I 4 ADD ONE STC SNS4 SNS I 5 ADD ONE STC SNS5 LSW STC LSW0 RSW STC RSW0 JMP 0 EJECT /SWITCH PASSER DOEXC=JMP . JMP SET10 AZE FETCH RETURN DOREXC=JMP . JMP SET10 AZE I FETCH RETURN / SET10, SCR 7 BCL I 7770 ADA I SNS0 STC 10 LDA 10 JMP 0 / OPR15, ADD ONE /RSW OPR14, ADD C6 /LSW JMP SET10+1 STA 14 RETURN / SNS0, 0 SNS1, 0 SNS2, 0 SNS3, 0 SNS4, 0 SNS5, 0 LSW0, 0 RSW0, 0 EJECT /AWAKEN A SLEEPING USER /ENTER WITH CONDITION IN AC /WILL AWAKEN FIRST FOUND / AWAKE=JMP . / STC NDEV ADD 0 STC AX SETUSE / NAWK, SRCH JMP RAX LDA 16 CAPOI, APO I JMP NAWK / COM SHD 4\NDEV SKP JMP NAWK STA 16 RAX, CLR DJR IOB RMF AX, JMP . NDEV, 0 EJECT /USER SLEEP REQUEST / OPR1=JMP . / FETCH STH 4\PSTATE /CONDITION FETCH STC TEM /NEW PC /CHECK FOR LPT LPTCHK /NOW FIND SPACE /FOR NEW INCARNATION SETUSE FSP, SRCH RETURN /NO ROOM LDA 16 AZE JMP FSP FOUND, SET 17 15 LDH 4\PSTATE COM /SLEEP STA 16 LDA I 17 STA I 16 /MODE LDA I 17 STA I 16 /MQ LDA I 17 STA I 16 /LMB LDA I 17 STA I 16 /UMP LDA TEM BSE I JMP STA I 16 FETCH RETURN EJECT /LPT-TTY SWITCH CHECK LPTCHK=JMP . / LDH 4\PSTATE SAE I LPT JMP 0 LDA 2\DOTTY STH 4\PSTATE JMP 0 EJECT /NICE GUY OPR / OPR7=JMP . / TRYCLK / /DISABLE CURRENT USER / OPR5=JMP . / STA 15 NEXT / /WAKE UP SOMEBODY / OPR10=JMP . / FETCH AWAKE RETURN EJECT /I\0 CALL HANDLER / OPR11=JMP . / FETCH STC PSTATE FETCH STC COUNTX FETCH STC FIELDX FETCH STC POINTX /CHECK FOR LPT LPTCHK / /CHECK DEVICE STATUS CDS, SET I 14 2\IOCHN PQT, LDA 14 AZE I RETURN /NO SUCH DEVICE SHD 4\PSTATE JMP GSET LDA I 7 ADM 14 JMP PQT /CHECK ACTIVITY GSET, LDA I 14 STC IOACT LDA I 14 AZE TRYCLK /BUSY /SET UP CHANNEL ADD PSTATE STA 14 LDA I COUNTX, 0 STA I 14 LDA I FIELDX, 0 STA I 14 LDA I POINTX, 0 BSE I 2000 STA I 14 STA I 14 / FETCH /ACTIVATE DEVICE LIF 3 IOACT, JMP EJECT /PLOTTER IOT HANDLER / PLOTX=1632 POX=3770 POY=3771 PNX=3772 PNY=3773 / OPR4=JMP . / TESTI JMP .+11 FETCH LDF 2 STA PNX FETCH LDF 2 STA PNY FETCH APO JMP PRESET SAE I PENFLG, 0 SKP JMP PLINE STA PENFLG JMP PLTXM / PLINE, CLR LIF 2 JMP PLOTX / PRET, LDA I 25 LIF 0 AWAKE RETURN / PLTXM, STC PTEM ADD 0 STC PLTXEX ADD PTEM ADA I 2\PLTTAB STC 17 LDA 17 STC STP LDA I 17 STC NDP LDA I PTEM, 0 SAE I 11 JMP STP-1 LDA I NOP STC TPLT / IOB STP, 0 RETURN IOB NDP, 0 RETURN EJECT /PLOTTER INTERRUPT DISPATCH /FROM BANK 3 / PLTGO=JMP . / TPLT, JMP PLTXEX LDA I JMP PLTXEX STC TPLT JMP NDP-1 PLTXEX, JMP / PRESET, LDF 2 LDA PNX STA POX LDA PNY STA POY RETURN EJECT /SET THE CLOCK / CLLR=6132 CLAB=6133 CLEN=6134 CLSA=6135 / K1, 0 K2, 4100 K3, 300 K4, 0 K5, 100 / OPR3=JMP . / FETCH STC K4 /RATE FETCH STC K1 /PRESET JMP CSET RETURN / CSET, LDA 0 STC CLRET PDP PMODE CLLR / CLEAR CLOCK TAD K1 CIA CLAB /SET PRESET CLA TAD K2 CLLR /SET MODE TO OVF CLA TAD K3 CLEN /FORCE OVF CLSA CLA TAD K4 CLLR /SET FOR REAL CLA TAD K5 CLEN CLA CLL LINC LMODE CLRET, JMP / EJECT /RELEASE DEVICE REQUESTS AND /SLEEP CONDITIONS FOR /THE USER / /CALL /OPR 2 /DEVICE 0=ALL / OPR2=JMP . / FETCH STC TEM5 / /CHECK FOR FP TURN OFF ADD TEM5 AZE I JMP .+4 SAE I 2 JMP .+3 CLR STC FPUSE / SETUSE UR, SRCH JMP DR SHD 4\USER SKP JMP UR /CURRENT USER /CHECK FOR DEVICE LDA TEM5 AZE I JMP URWIP LDH I 16 SAE TEM5 JMP UR / URWIP, CLR STA 16 JMP UR / DR, LDA I 2 STA 15 SET I 17 2\IOCHN JMP AR1 / AR, LDA I 5 ADD 17 STC 17 AR1, LDA 17 AZE I RETURN XSK I 17 XSK I 17 SHD 4\TEM5 JMP IWIP LDH 4\TEM5 AZE I JMP IWIP JMP AR / IWIP, CLR STA 17 KP6000, JMP 0 EJECT /IDLE JOB / IDLE=JMP . / IOB 6 /SCAN DEVICES QAC ADD ONE SCR 13 IOB 7 JMP .-5 / /TEST I BIT TESTI=JMP . SET 17 0 STC TTEM ADD TRPINS ROR I 5 LZE XSK I 17 LDA I TTEM, 0 JMP 17 EJECT /VERY SIMPLE /CONTROL C HANDLER / / /LOAD THE USER / MON0, LDA I 20 ESF CLR AXO LDA I 1 STC HIDSK LDA I 4000 STC LODSK LDA I LDF 3 STC GOBU LDA I 4014 JMP RDISK LDA I 5015 JMP RDISK LDA I 7017 JMP RDISK REBOOT, LDA I LDF 4 STC GOBU LDA I 4020 JMP RDISK LDA I 5021 JMP RDISK LDA I 6022 JMP RDISK LDA I 7023 JMP RDISK / LDF 3 LDA I TEN, 10 AXO /TURN ON CLOCK /AND TRAP LDA I 1000 ESF LDA I 5100 STC K4 LDA I 144 STC K1 JMP CSET /ENABLE MUX INTERRUPT LDA I 1 IOB 6450 /START A JOB NEXT EJECT /START DIAL / DIAL0, CLR KP1, AXO LDA I C20, 20 ESF LDF 2 LDA I 701 STA 2016 LDA I 7300 STA 2017 LDF 3 LIF 2 JMP 16 EJECT /DISK ROUTINES /OPR12 OPR I 12 OPR12=JMP . FETCH TESTI /CHECK I BIT JMP .+3 /I NOT SET, READ JMP WDISK /I SET, WRITE RETURN JMP RDISK RETURN /WRITE DISK WDISK, SET 17 0 STC MEMLOC LDA I 4000 JMP RDISK+3 /READ DISK RDISK, SET 17 0 STC MEMLOC JMP DISKD JMP 17 / /RK8E CODE DSKP=6741 DCLR=6742 DLAG=6743 DLCA=6744 DRST=6745 DLDC=6746 DMAN=6747 /DF32 CODE DCMA=6601 DMAR=6603 DMAW=6605 DCEA=6611 DEAL=6615 DFSE=6621 DFSC=6622 EJECT *1400 DISKD, SET 16 0 ADA I /DEFAULT SYSTEM HIDSK, 1 /START BN, 14000. STA I DSKCOM, 0 ROL I 1 LDA I DMAR /6603 LZE ADD KZ2 /MAKE DMAW (6605) STC D32COM SETUP, LDA I MEMLOC, 0 /QN\BN CALL SCR 13 /IF OR DF? APO JMP .+3 ADD GOB /IF CALL SKP ADD GOBU /DF CALL SCR 2 /DF IN AC BCL I 7770 ROL 3 STC CEXT /EX MEM BITS (DLDC) QAC /GET CORE ADDR ROL 1 BCL I 377 STC CORLOC /CORE ADDR (8E OR DF32) CLR /0 TO MQ ADD MEMLOC BCL I 7000 STA I BLKNM, 0 /FOR DLAG, 8E SCR 4 /PROPAGATES SIGN BITS ROL 6 ADD CEXT STC DDEAL /DEAL DF32 QAC ROL 1 STC D32ADR /SET UP 3X ERROR RETRY KZ2, PDP PMODE CLA CLL CMA RTL /AC=-3 DCA DUNTRY /CHECK TO SEE WHICH DISK IS UP /DF 32 IS DEFAULT /FIRST CHECK EXISTENCE OF 8E CLA CMA /AC=-1 DRST /8E STATUS RTL /BIT2 TO BIT0 SPA JMP DF32 /NO 8E,ASSUME DF32 /8E EXISTS, BUT IS IT ON? RTL /BIT4 TO BIT0 SMA JMP RK8E /8E IS ON /ROUTINE TO RUN DF32 DF32, CLA CMA /AC=-1 TAD CORLOC /CORE ADDR DCA I P7751 /CA TAD CM400 DCA I P7750 /WC(-400) TAD DDEAL DEAL CLA TAD D32ADR /DISK ADDR D32COM, 0 /DMAR OR DMAW DFSC /DISK DONE? JMP .-1 DFSE /ERRORS? JMP BAD32 /YES, RETRY /OK, LEAVE CRET, DCEA DCMA LINC 6016 /LJMP 16 P7750, 7750 P7751, 7751 CM400, -400 DDEAL, 0 DUNTRY, 0 D32ADR, 0 CEXT, 0 CORLOC, 0 K1002, 1002 LODSK, 4000 /DEFAULT LO ORDER / RK8E SYSTEM START BN. /ROUTINE TO RETRY DF32 3X BAD32, ISZ DUNTRY /-3 CNTR JMP DF32 HLT /ERROR HALT /ROUTINE TO RUN RK8E /FIRST MAKE SURE DISK IS READY RK8E, DCLR /CLR STATUS DRST /WAIT TIL CLR SZA CLA JMP .-2 TAD CEXT TAD DSKCOM DLDC /LOAD COMMAND REG TAD CORLOC DLCA /CORE ADDR TAD BLKNM TAD LODSK /4000 FOR PARTITION 0 DLAG /LOAD DISK ADDR & GO DSKP /DISK DONE? JMP .-1 DRST /STAUS TO AC CLL RAL /CLR SUCCESS BIT SNA /OTHER ERRORS JMP CRET /OK, LEAVE /8E ERROR ROUTINE /FIRST CHECK FOR SEEK FAILED OR CYLINDER /ADDRESS ERROR. MUST RECAL FOR THESE BAD8E, AND K1002 /NOTE AC RAL SNA CLA JMP TRY3 /OTHER ERROR /RECAL AND RETRY 3X DCLR /CLR STATUS STL RTL /AC=2 DCLR /RECAL DSKP /WAIT FOR DONE JMP .-1 TRY3, ISZ DUNTRY JMP RK8E LMODE 7402 /PHLT /END DISK READ WRITE HANDLER. /PRESET DISK NUMBER /12(10) DATA PARTITIONS & 1 SYSTEM PARTITION ON DISK 0 /12(10) DATA PARTITIONS AND AN /INACESSABLE SYSTEM PARTITION /ON DISK 1 /DATA PARTITIONS ARE 512(10) BN LONG. /0 = SYSTEM = 14000 - 14177 (MAX 14537) /1 = DATA = 00000 - 00777 /2 = DATA = 01000 - 01777 /3 = DATA = 02000 - 02777 /4 = DATA = 03000 - 03777 /5 = DATA = 04000 - 04777 /6 = DATA = 05000 - 05777 /7 = DATA = 06000 - 06777 /10 = DATA = 07000 - 07777 /11 = DATA = 10000 - 10777 /12 = DATA = 11000 - 11777 /13 = DATA = 12000 - 12777 /14 = DATA = 13000 - 13777 / SECOND DISK /15 = DATA = 00000 - 00777 /16 = DATA = 01000 - 01777 /17 = DATA = 02000 - 02777 /20 = DATA = 03000 - 03777 /21 = DATA = 04000 - 04777 /22 = DATA = 05000 - 05777 /23 = DATA = 06000 - 06777 /24 = DATA = 07000 - 07777 /25 = DATA = 10000 - 10777 /26 = DATA = 11000 - 11777 /27 = DATA = 12000 - 12777 /30 = DATA = 13000 - 13777 /PARTITION HANDLER. OPR13=JMP . FETCH CLR STC HIDSK JMP FUMB /REGET WITH 0 LINK AZE I JMP SYSTEM STA I PARTM, 0 ADA I -14 /SECOND DISK? APO JMP WPAR STC PARTM LDA I 2 STC HIDSK / WPAR, LDA PARTM ADD MONE APO /HANDLE -0 COM ROL I 11 LDSK, STC LODSK /LO 12 BITS ROL I 1 /LINK TO BIT0 ADD HIDSK STC HIDSK /HI 1 BIT RETURN /PARTITION 0 (SYSTEM) HANDLER. SYSTEM, ADD KP6000 ROL I 1 /4000 + 1 IN LINK AADSK, JMP LDSK /END OF DISK ROUTINES. EJECT /BANK 3 RETURNS *1760 DIAL=JMP . JMP DIAL0 MONITO=JMP . JMP MON0 / *1767 TYPFLG, 0 /PLOTTER RETURNS *1770 STC PTEM ADD 0 STC .+4 JMP PLTXM+1 LIF 2 DJR JMP *1777 JMP PRET EJECT /// BANK3 ROUTINES SEGMNT 3 *20 /TTY,DATAPHONE /INPUT ACTIVATOR /EFFECTIVE NOP KBDACT=JMP . DFIACT=JMP . MX0ACT=JMP . MX1ACT=JMP . MX2ACT=JMP . MX3ACT=JMP . JMP RET3 MUXDON=JMP . IOB 6457 JMP RET3 / / /TELETYPE INTERRUPT HERE INTTY=JMP . BCL I 7600 STC TCHR COM STC MUXDEV /TTYFLG /CHECK IF CONSOLE JMP CONTST /NOT COMMAND CHAR /CHECK IF CONSOLE ALREADY LDA I CONNUM, 0 AZE I CONIN /IS CONSOLE JMP RET3 / EJECT /CONSOLE COMMAND TEST CONTST, SET 13 0 LDA TCHR SAE I 24 /CTRL T JMP QTCON /BECOME CONSOLE LDA I MUXDEV, 0 APO I JMP .+3 CLR SKP ADD C1 NOCON, STC CONNUM JMP RET3 / /ABANDON CONSOLE QTCON, SAE I 30 JMP 13 CLR JMP NOCON / EJECT /CONSOLE INPUT /HANDLER CONIN=JMP . LDA I TCHR, 0 LIF 0 SAE I 3 SKP MONITO SAE I 4 SKP DIAL LIF 3 SAE I 14 SKP JMP SETLPT SAE I 13 JMP .+2 JMP CLRLPT / /CHECK FOR ACTIVITY /GET CHANNEL IOGET 13 LDA 17 /POINTS TO DEVBUF AZE I JMP RET3 /NO ACTIVITY /HANDLE CHARACTER LDA TCHR SAE I 177 JMP NORMIN /RUBOUT / LDA C10, 10 SAE 16 /POINTS TO BUFPTR SKP JMP RET3 LDA I -1 ADD 10 STC 10 /BACK UP POINTER LDA I 134 STC TCHR TYPE JMP KBNXT / NORMIN, LDA TLP0+2 AZE JMP Q1 /TTY BUSY, QUEUE ECHO TYPE /ECHO IF TTY NOT BUSY INCON / Q2, STH 10 SAE I 45 JMP INFIN ADD M2 STH I 10 /LF QUECHR /AUTO ECHO LF JMP INFIN / Q1, INCON QUECHR JMP Q2 / INFIN, FINTST JMP KBNXT /INPUT FINISHED CLR STA 17 LDA I 13 JMP DEVDON /SET UP FOR NEXT CHAR KBNXT, LDH I 10 LDA I IOCNT, 0 STA I 4 XSK I 4 XSK I 4 LDA 10 STA I 4 JMP RET3 EJECT / INCON=JMP . LDA TCHR SAE I 15 SKP ADD C30 /CR = 45 SAE I 12 SKP ADD C31 /LF = 43 JMP 0 EJECT /TELETYPE OUTPUT OUTTTY=JMP . STC CONBSY /CLEAR FLAG / PRTCHR, LDA I CONBSY, 0 AZE JMP RET3 ADD CURBUF SAE ENDBUF JMP NXTOUT / LDA I 4\TLPBUF-1 STA CURBUF STC ENDBUF STC TLP0+2 LDA I 4 JMP DEVDON / NXTOUT, SET 1 CURBUF LDH I 1 OUTCON TYPE LDA 1 STC CURBUF JMP RET3 / EJECT TYPE=JMP . SET 13 0 LDA I 1 STC CONBSY / LDA TCHR IOB 6046 JMP 13 EJECT /DATAPHONE INPUT /DOUBLE BUFFERED UNTIL IOCLR / /EACH BUFFER IS 100 (OCTAL) /WORDS, 200 (OCTAL) CHARS INDATF=JMP . STC TCHR /CHECK FOR ACTIVE /GET CHANNEL IOGET 14 LDA 17 AZE I JMP RET3 /STORE CHARACTER INCON STH 10 SHD I 4500 /CR TERMINATOR JMP DIFIN SHD I 0000 /ANOTHER TERMINATOR JMP DIFIN FINTST JMP KBNXT /DATAPHONE INPUT FINISHED DIFIN, LDF 3 LDA 16 /BUFFER START BCO I 100 STA 16 STA I 16 /SWITCH TO NEXT BUFFER LDA I -200 STA I 4 /RESET COUNT LDA I 14 JMP DEVDON EJECT /DATAPHONE OUTPUT HANDLERS / /INTERRUPT HERE OUDATF=JMP . /ACTIVATE THE OUTPUT SEQUENCE /BUFFER MODE ONLY DFOACT=JMP . /CHECK FOR ACTIVITY IOGET 5 LDA 17 AZE I JMP RET3 FINTST SKP JMP DATADN /BUFFER IS ACTIVE / BFMOD, LDH 10 OUTCON IOB 6416 JMP KBNXT /TRANSMISSION DONE DATADN, CLR STA 17 LDA I 5 JMP DEVDON / EJECT /QUE OUTPUT CHARACTER / QUECHR=JMP . / SET 1 ENDBUF STH I 1 LDA 1 STC ENDBUF LDH 1 JMP 0 EJECT /ACTIVATE TELETYPE BUFFER TLPACT=JMP . IOGET 4 / LDH TLP0+2 SAE I 77 JMP BMOD /IMMEDIATE MODE IMOD, LDA 10 BCL I 7600 STA TCHR SAE I 14 SKP ADD M2 SAE I 15 SKP ADD C30 SAE I 12 SKP ADD C31 QUECHR FINTST JMP IMOD JMP PRTCHR /BUFFER MODE BMOD, LDH 10 SKP LDH I 10 QUECHR OUTCON FINTST JMP BMOD+2 JMP PRTCHR EJECT /ACTIVATE LINEPRINTER BUFFER LPTACT=JMP . IOGET 24 / LDH LPT0+2 SAE I 77 JMP BLMOD /IMMEDIATE MODE ILMOD, LDA 10 LPTCHR FINTST NOP JMP FINLPT /BUFFER MODE BLMOD, LDH 10 SKP LDH I 10 OUTCON LPTCHR FINTST JMP BLMOD+2 / FINLPT, CLR STA 17 STC LCHR LDA I LPT JMP DEVDON EJECT /SEND TO LINEPRINTER / LPTCHR=JMP . / SET 7 0 BCL I 7600 STA I LCHR, 0 SAE I 14 SKP JMP FORM SAE I 15 SKP JMP 7 /IGNORE CR SAE I 12 SKP JMP LINE IOB 6654 JMP 7 / FORM, LDA I 17 JMP DOLPT LINE, LDA I 10 / DOLPT, IOB 6652 IOB 6664 JMP RET3 / /LPT INTERRUPT HERE LPTDON=JMP . SRO I 5252 JMP .+4 IOB 6662 JMP RET3 ADD LCHR AZE JMP 7 JMP RET3 / /LPT-TTY SWITCH SETLPT, LDA I /CTRL L LPT /24 JMP .+3 CLRLPT, LDA I /CTRL K TP0 /4 STC DOTTY JMP RET3 /IF NON ZERO THEN SEND TO TTY EJECT /HALF WORD CHARACTER CONVERSION / OUTCON=JMP . SET 5 0 SAE I 45 JMP .+3 ADD M30 JMP RN SAE I 43 JMP SPNOT ADD M31 JMP RN / SPNOT, ADD CC40 BCL I 7700 ADD CC40 RN, STA TCHR JMP 5 EJECT /SET UP I\O IOGET=JMP . SET 15 0 LDF 3 LDA 15 /GET ARGUMENT XSK I 15 /LOOK FOR BUFFER STC BNU SET I 4 IOCHN / NXIO, LDA 4 /DEVICE NUMBER AZE I /TABLE TERMINATOR JMP RET3 SAE I BNU, 0 SKP JMP OKIO LDA I 7 ADM 4 JMP NXIO / OKIO, XSK I 4 /ACTIVATOR XSK I 4 /BUSY FLAG SET 17 /17 POINTS TO FLAG 4 LDA 4 ADA I 3 STC 16 /16 POINTS TO BUF START / LDA I 4 /COUNT,COMPARE WORD STC IOCNT LDA I 4 /FIELD BCL I 7700 BSE I LDF STC IOFLD LDA I 4 /BUF START LDA I 4 /CURRENT CHAR STC 10 /POINTER SET 4 17 /RESET 4 IOFLD, LDF JMP 15 / /TEST FOR I\0 FINISHED FINTST=JMP . SET 3 0 LDA IOCNT APO JMP CTX BCL I 7600 SAE TCHR JMP 3 XSK I 3 JMP 3 / CTX, ADD C1 AZE I XSK I 3 STC IOCNT JMP 3 EJECT /DISPLAY GOES TO SLEEP HERE / DSWAIT, IOB 1 0026 DISPLY JMP .-3 IOB 5 / DSLEP, IOB 7 / /DISPLAY AWAKENS HERE / DISPLY=JMP . / LDA DIS0+2 AZE I JMP DSWAIT LDH 4\DIS0+4 BSE I LDF SCR 12 ADD DIS0+6 LIF 2 JMP 21 /BUFFERED DISPLAY INTERRUPT / DISACT=JMP . / LDA I DS1 DEVDON, LIF 0 AWAKE RET3, LIF 0 RETURN EJECT /PLOTTER QUITS HERE / / PSLEP, IOB 10 BPLT /WAKE UP USER /PUT SELF TO SLEEP IOB 1 BPLT .+3 JMP .-3 IOB 5 / /BUFFERED PLOTTER AWAKENS HERE / PLOT=JMP . / LDH 4\PLT0+4 BSE I LDF SCR 13 ADD PLT0+6 LIF 2 JMP 20 / /REAL PLOTTER INTERRUPT / PLTDON=JMP . / LIF 0 PLTGO / /BUFFERED PLOTTER INTERRUPT / PLTACT=JMP . / LDA I BPLT JMP DEVDON / /CLOCK INTERRUPT / DOCLK=JMP . / JMP RET3 A, 0 / EJECT /FILE TAPE DIRECTORY *1000 0 EJECT *1400 /VARIOUS BUFFERS / DEVTAB, 6131 6135 DOCLK 6041 6042 OUTTTY 6031 6036 INTTY 6661 6652 LPTDON 6501 6502 PLTDON 6401 6406 INDATF 6411 6412 OUDATF / 0 / / PLTTAB, 6504 6524 6513 6515 6523 6511 6521 6512 6514 6521 6514 / DOTTY, 4 / CURBUF, 4\TLPBUF-1 ENDBUF, 4\TLPBUF-1 TLPBUF, *.+50 EJECT /USER SAVE TABLE / /PRIORITY,DEVICE NEGATIVE IF SLEEPING /LINK,FLO,MODE\USER /SAVMQ /SAVLMB /SAVUMB /SAVPC /0 LOC /SAVAC / / /USER1 IDLE / USETAB, 0302 0001 0 0 0 IDLE 0 0 / /USER 2, PLOTTER HANDLER / 7647 0002 0 3 3 PLOT 0 0 / /USER 3, DISPLAY / 7551 0003 0 3 3 DISPLY 0 0 / /USER 4, APPLICATIONS PROGRAM / USR4, 0202 0004 0 4 4 JMP 20 0 0 / /OPEN SLOTS / 0 *.+USRSIZ-1 0 *.+USRSIZ-1 0 *.+USRSIZ-1 0 *.+USRSIZ-1 0 *.+USRSIZ-1 0 *.+USRSIZ-1 0 *.+USRSIZ-1 0 *.+USRSIZ-1 USEBOT, EJECT /I\O CHANNEL DEFINITION BUFFER /7 LOCATIONS PER SLOT / /DEVICE NUMBER /ACTIVATOR PGM /BUSY FLAG /COUNT OR COMPARE WORD /UNUSED\FIELD /POINTER,START /POINTER,CURRENT / IOCHN, DIS0, 26 DISACT *.+5 KBD0, 13 KBDACT *.+5 TLP0, 4 TLPACT *.+5 LPT0, 24 LPTACT *.+5 PLT0, 30 PLTACT *.+5 DATI0, 14 DFIACT *.+5 DATO0, 5 DFOACT *.+5 0 /TERMINATOR EJECT /DISK BOOTSTRAP *1740 6622 5343 5345 6741 5340 6141 LIF 0 JMP REBOOT /DISK DATA BREAK *1750 7750 7751 / 0 /UNUSED 5340 /BOOT CALL / /CONSTANTS C30, 30 C31, 31 M30, -30 M31, -31 CC40, 40 C1, 1 C2, 2 M2, -2 M3, -3 M4, -4 / *1776 JMP PSLEP /RETURN FROM PLOTTING JMP DSLEP /RETURN FROM DISPLAYING / / / / ///EXEC38DF /NOV 76 (NDC)