/DEVICE DEPENDENT CODE FOR OS/8 MONITOR /THESE ARE CONDITIONAL PARAMETERS. SEE INTRODUCTORY COMMENTS. IFNDEF DIRECT /"DON'T REWRITE DIRECTORY" FLAG IFNDEF NOHSPT /"NO HIGH-SPEED PAPER TAPE" FLAG IFNDEF LIST IFNDEF RF08 IFNDEF LP08 IFNDEF LINCTAPE IFNDEF LINCSYS IFNDEF RK8 IFNDEF DF32 IFNDEF RK01 IFNDEF ROM IFNZRO ROM < TD8E=1 TD8ESYS=1 > IFNDEF TD8E IFNDEF TD8ESYS IFNDEF DECTAPE < IFZERO DF32+RF08+RK8+LINCSYS+TD8ESYS IFNZRO DF32+RF08+RK8+LINCSYS+TD8ESYS > IFNZRO DECTAPE < /CAN'T ALLOW TD8E AND DECTAPE!! IFNZRO TD8ESYS+TD8E < REASMB, BAD PARAMETERS >> SBLOCK=7776 /RANDOM DEFINITIONS FROM MAIN ASSEMBLY MFREE=70 /FIRST FREE BLOCK ON THE SYSTEMS DEVICE /(FIELD 1) SOFSET=7747 /NOT REALLY NECESSARY! FIELD 1 /LAST INITIAL DIRECTORY LOCATION. CHANGE IF NECESSARY. /THESE CONDITIONALS PUT IN DIRECTORY LENGTHS. *1413 IFNZRO DECTAPE+LINCSYS+TD8ESYS IFNZRO RF08 <6000^RF08+MFREE+6 /IF RF08> IFNZRO RK8 IFNZRO DF32 <7600^DF32+MFREE+6 /IF DF32> AASDNAME=564 /DEPENDS ON PS8 ASSEMBLY *AASDNAME /SYSTEM DEVICE NAME TABLE /THE ENTRIES ARE THE TWO WORD SUM OF THE SIXBIT FOR THE SYSTEM /DEVICES, WITH THE HIGH ORDER BIT FORCED ON /CHANGES IN SDNAME MUST BE ACCOMPANIED BY CHANGES IN /SDVHND. KEEP CORRESPONDENCE ONE TO ONE. SDNAME, 4631 /SYS 5723 /DSK 5524 /TTY 4020 /LPT 4604 /DTA0 4605 /DTA1 4606 /DTA2 4607 /DTA3 4610 /DTA4 4611 /DTA5 4612 /DTA6 4613 /DTA7 4024 /PTP 4224 /PTR 6504 /CDR IFNZRO TD8ESYS+TD8E < *572 /ZERO OUT DECTAPE NAMES ZBLOCK 6> AASDVHND=766 /DEPENDS ON PS8 ASSEMBLY *AASDVHND /SYSTEM HANDLER TABLE /CONTENTS: /BIT 0 - ON IF THE HANDLER IS A TWO-PAGE HANDLER /BITS 1-4 - OFFSET FROM "DVHORG-1" OF RECORD CONTAINING HANDLER /BITS 5-11 - ENTRY POINT OF HANDLER RELATIVE TO LOADING ADDRESS /EACH DEVICE HANDLER HAS AN ENTRY IN SDVHND. THE EQUATION /USED IN EACH ENTRY IS: OFFSET *200+ENTRY POINT-ASSEMBLY POINT /THE OFFSET IS BITS 1-4. /FOR A TWO PAGE HANDLER, ADD 4000. SDVHND, 0 /SYSTEM HANDLER HAD BETTER BE RESIDENT /OR PAGE 17600 IS PROBABLY BLOWN IFNZRO TD8ESYS <0> /BOTH SYS,DSK RESIDENT IFZERO TD8ESYS < IFZERO LINCSYS+DECTAPE-2 <5^200+DTA1-5000 /FOR MULTIPLE DECTAPE SYSTEMS,DTA1=DSK> IFNZRO LINCSYS+DECTAPE-2 <0 /OTHERS,DSK=SYS> > 2^200+TTY-7000 4^200+LPT-6200 5^200+DTA0-5000 5^200+DTA1-5000 5^200+DTA2-5000 5^200+DTA3-5000 5^200+DTA4-5000 5^200+DTA5-5000 5^200+DTA6-5000 5^200+DTA7-5000 1^200+PTP-6400 1^200+PTR-6400 3^200+CDR-5600+4000 /TWO PAGE HANDLER IFNZRO TD8ESYS <*772 ZBLOCK 10> /WIPE OUT TRACES OF DECTAPE IFNZRO TD8E <*772 5^200+DTA0-5000+4000 /2 PAGE HANDLER 5^200+DTA1-5000+4000 > IFNZRO TD8ESYS IFNZRO DECTAPE IFNZRO LINCSYS IFNZRO RF08 IFNZRO RK8 IFNZRO DF32 IFNZRO TD8E IFZERO TD8E FIELD 0 /NOTE:RBFLAG MUST BE AT LOC. 20 OF MAIN ASSEMBLY!!!! IFNZRO DIRECT <*20; 1 /DON'T REWRITE DIRECTORY OR ABSLDR> /DEVICE CONTROL BLOCK TABLE - ONE WORD PER DEVICE /BIT 0 - 1 IF FILE STRUCTURED DEVICE /BIT 1 - 1 IF READ ONLY DEVICE /BIT 2 - 1 IF WRITE ONLY DEVICE /BITS 3-8 - THE DEVICE TYPE /0 TELETYPE /1 HIGH SPEED READER /2 HIGH SPEED PUNCH /3 CARD READER (CR8/I) /4 LINE PRINTER /5 RK8 DISK /6 RF08 DISK(ONE PLATTER) /7 RF08 DISK(TWO PLATTERS) /10 RF08 DISK(THREE PLATTERS) /11 RF08 DISK(FOUR PLATTERS) /12 DF32 DISK(ONE PLATTER) /13 DF32 DISK(TWO PLATTERS) /14 DF32 DISK(THREE PLATTERS) /15 DF32 DISK(FOUR PLATTERS) /16 DECTAPE /17 LINCTAPE(PDP12 ONLY - FORMATTED 128 WDS/BLOCK) /20 IBM-COMPATIBLE MAGNETIC TAPE(TYPE 57A) /21 TD8E DECTAPE /22-77 TO BE ASSIGNED /BITS 9-11 - FLAG FOR WHETHER AN OUTPUT FILE IS CURRENTLY OPEN *7560 DCB, SYSD;SYSD;0;1040;DTADCB;DTADCB;DTADCB;DTADCB DTADCB;DTADCB;DTADCB;DTADCB;1020;2010;2030 /THIS HORRENDOUS CODE INSERTS THE RK8 HANDLERS. IFNZRO RK01 < IFZERO RK01-1 < *7573 4050 FIELD 1 *1001 6^200+RKA0-4600 *577 6373 /RKA0 > IFZERO RK01-2 < *7572 4050 4050 /RK8 DEVICE TYPE FIELD 1 *1000 6^200+RKA1-4600 6^200+RKA0-4600 *576 6374 6373 /RKA0 AND RKA1 > IFZERO RK01-3 < *7571 4050 4050 4050 FIELD 1 *777 6^200+RKA2-4600 6^200+RKA1-4600 6^200+RKA0-4600 *575 6375 6374 6373 /RKA0,RKA1, AND RKA2 > IFZERO RK01-4 < *7570 4050 4050 4050 4050 FIELD 1 *776 6^200+RKA3-4600 6^200+RKA2-4600 6^200+RKA1-4600 6^200+RKA0-4600 *574 6376 6375 6374 6373 /RKA0,RKA1,RKA2,RKA3 >> FIELD 0 IFNZRO TD8E <*7453;0;0;> /DTA0,1 NONRES. IFNZRO TD8ESYS < *7447 7607 /SYS ENTRY AT 7607 IFZERO TD8ESYS-2 <*7450;SDTA1> *7453 7607 /MAKE DTA0 AND DTA1 RESIDENT SDTA1 > *6777 /THIS IS SETUP FOR CD AT BUILD TIME 0 IFNZRO TD8ESYS <*6777;66> IFNZRO ROM <*6777;0> IFNZRO RK8 > IFZERO DECTAPE+LINCSYS-2 <*7450;0 /USE TAPE 1 AS DSK> IFNZRO DECTAPE+LINCSYS <*7453;7607 /DTA0 IS RESIDENT> /THE MAJOR FUNCTION OF CONFIG FOLLOWS: WRITE THE DEVICE /HANDLER RECORDS.NOTE THAT LOC. 0 CONTAINS 7607, OR THE SYSTEM /DEVICE HANDLER ENTRY POINT. /SYSTEM GENERATION STARTS AT LOC. 4000 AND CONTINUES THROUGH /THIS CODE. *4200 WRDEVH, 0 /SUBR TO WRITE OUT DEVICE HANDLER RECORDS WRITE=JMS I 0 DVHORG=16 WRITE; 4301; 5600;DVHORG+2; JMP BERR /CDR AND LPT HANDLERS WRITE; 4100; 7000;DVHORG+1; JMP BERR /TTY HANDLER WRITE; 4200; 5000;DVHORG+4; JMP BERR /DTA HANDLERS WRITE; 4100; 6400;DVHORG+0; JMP BERR /PTR & PTP HANDLERS IFZERO ROM < IFNZRO TD8ESYS < WRITE /WRITE OUT TD8E BOOTSTRAP 4120 7400 /WE PUT IT IN 47200 0 JMP BERR WRITE;4221;7400;66;JMP BERR /FIELD 1&2 RES. WRITE;4100;7400;66;JMP BERR >> IFNZRO RK01 < WRITE /WRITE OUT RK8 HANDLERS 4100 4600 DVHORG+5 JMP BERR > ISZ WRDEVH BERR, JMP I WRDEVH IFZERO RK01+LIST IFNZRO RK01 < DLDC=6732 DCLS=6742 DRDS=6741 DSKD=6745 DSKE=6747 DCLA=6751 DLWC=6753 DLCA=6755 DLDR=6733 *4600 RLOC, 0 RREC, 0 R76, 76 RDLDR, DLDR RKANO, 0 RKAISZ, ISZ RKANO RBLKCT, 0 RERRCT, 0 R177, 177 R40, 40 RM3, -3 R400, 400 R7400, 7400 RKA, 0 RZERO, 0 R34, 34 ZBLOCK 4620-. RKA0, ISZ RKANO RKA1, ISZ RKANO RKA2, ISZ RKANO RKA3, ISZ RKANO R7600, 7600 TAD RM3 DCA RERRCT TAD RKANO CMA TAD RKATAD DCA RFUNCT CLA CLL CML RTR TAD RFUNCT DCA RKADCA RDF TAD RCDIF DCA REXIT RFUNCT, HLT DCA RKA TAD RKAISZ RKADCA, HLT TAD I RKA DCA RFUNCT ISZ RKA CLA CMA TAD I RKA DCA RLOC ISZ RKA TAD I RKA DCA RREC TAD RFUNCT CLL RAL AND R7600 DCA RBLKCT RTL TAD RDLDR DCA RINST RLOOP, TAD RLOC DLCA TAD RBLKCT RKATAD, TAD R7600 SZA CLA TAD R7600 TAD R7600 DLWC TAD RFUNCT CMA RAR AND R34 TAD RKANO CMA RAL AND R76 DLDC DCLS TAD RREC RINST, HLT DSKD SKP CLA JMP RCTLC DSKE JMP .-4 RERROR, ISZ RERRCT JMP .+4 DCA RKANO CLA CLL CML RAR JMP RETRN+1 DRDS AND R40 ISZ RZERO JMP .-1 SNA CLA JMP RLOOP DCLA DSKD JMP .-1 JMP RLOOP RNEXT, DSKE SKP JMP RERROR ISZ RREC TAD RLOC TAD R400 DCA RLOC TAD RBLKCT CLL CML TAD R7400 SZL SNA JMP .+3 DCA RBLKCT JMP RLOOP CLA DCA RKANO RETRN, ISZ RKA ISZ RKA REXIT, HLT JMP I RKA RCTLC, KRS AND R177 TAD RM3 SNA CLA KSF JMP RNEXT RCDIF, CIF CDF 0 JMP I R7600 > IFZERO RK01+LIST *5600 RCSF=6631 RCRA=6632 RCSP=6671 RCSE=6672 CDR, 0 CDR770, 7700 CDRTMP, 0 JMP CDRSET TAD CDRCIF DCA CDRXIT TAD CDRCCF-1 DCA CDRXIT-1 TAD I CDR AND CDR070 TAD CDRCCF DCA CDRTM2 TAD I CDR ISZ CDR SPA JMP CDRERR AND CDR770 CIA DCA CDRWC TAD I CDR DCA CDRCA ISZ CDR CDRCCF, CDF DCA I CDRIN2 TAD CDRTM2 DCA I CDRIN3 CDRLP, JMS I CDRIN4 DCA I CDRCA JMS I CDRIN4 DCA CDRTMP JMS I CDRIN4 RTL RTL DCA CDRTM2 TAD CDRTM2 AND CDR740 TAD I CDRCA DCA I CDRCA ISZ CDRCA CDR740, 7400 TAD CDRTM2 RTL RTL AND CDR7400 TAD CDRTMP DCA I CDRCA ISZ CDRCA CDR070, 70 ISZ CDRWC JMP CDRLP ISZ CDR ISZ CDR CDRXIT, HLT JMP I CDR CDRERR, CLL CLA CML RAR JMP CDRXIT-2 CDRCA, 0 CDRWC, 0 CDRTM2, 0 CDRCIF, CIF CDF 0 CDRIN2, CDRJMP-CDRLOC CDRIN3, CDRCDF-CDRLOC CDRIN4, CDRGCH-CDRLOC CDRTBL, 0021;2223;2425;2627;3031;3203;4007;3502 2017;6364;6566;6770;7172;7514;0577;3637 1552;5354;5556;5760;6162;0104;1211;3374 0641;4243;4445;4647;5051;7316;3410;1376 CDRBUF=. CDRSET, RDF TAD CDRCCF DCA CDRSE1 CDF JMS . CDRLOC, TAD CDRSE2 TAD CDRLOC-1 DCA CDRSE3 TAD I CDRSE3 TAD CDRLOC-1 DCA I CDRSE3 ISZ CDRLOC ISZ CDRSE4 JMP CDRLOC TAD CDRSET DCA CDR+3 CDRSE1, HLT JMP CDR+3 CDRSE3, 0 CDRSE4, -6 CDRSE2, CDRIN2-CDRLOC CDRIN3-CDRLOC CDRIN4-CDRLOC CDRIN5-CDRLOC CDRABF-CDRLOC CDRTAD-CDRLOC *CDRBUF+50 CDRGCH, 0 CDF CDRJMP, 0 ISZ CDRCNT JMP CDRGET CDRGE4, ISZ CDRCT2 JMP CDRCLF CLL CLA CMA RTL DCA CDRCT2 TAD CDRABF DCA CDRPT CDRGE0, KSF JMP CDRGE7 KRS AND CDR177 TAD CDRM03 SNA JMP I CDR760 TAD CDRM27 SZA CLA JMP CDRGE7 KCC CDRGEZ, CLA CMA DCA CDRCNT CLA CMA DCA CDRCT2 TAD CDRMOD DCA CDRJMP TAD CDROPR DCA I CDRIN5 TAD CDR232 CDRCDF, HLT JMP I CDRGCH CDRGE7, RCSE JMP CDRGE0 DCA CDRSW CDRGE1, RCSP JMP CDRGE2 CDRGE3, TAD I CDRPT SZA JMP CDRGE5 CLA CMA TAD CDRPT DCA CDRPT ISZ CDRCNT ISZ CDRCNT JMP CDRGE3 JMP CDRGE4 CDRGE5, AND CDR077 SNA CLA ISZ CDRCNT TAD I CDRPT TAD CDRM77 SNA CLA CDROPR, CLL CLA IAC TAD CDRCNT SNA CLA JMP CDRGEZ CDRGE6, TAD CDR077 DCA CDRSW CDRGET, ISZ CDRSW TAD CDRSW JMS CDRGE8 TAD CDR240 CDRMOD, JMP CDRCDF CDRGE8, 0 CLL RAR TAD CDRTAD DCA CDRTM3 TAD I CDRTM3 SZL JMP .+4 RTR RTR RTR AND CDR077 JMP I CDRGE8 CDRGE2, RCSF JMP CDRGE1 CLA CMA TAD CDRCNT DCA CDRCNT RCRA JMS CDRGE8 ISZ CDRSW JMP CDRGE9 TAD I CDRPT DCA I CDRPT JMP CDRGE1 CDRGE9, CLL RTL RTL RTL ISZ CDRPT DCA I CDRPT CLA CMA JMP CDRGE1-1 CDRCLF, CLA CMA DCA CDRCNT TAD CDRCT2 CLL CMA RTL TAD CDRCT2 TAD CDR213 JMP CDRCDF CDR760, 7600 CDRM03, -3 CDRM27, -27 CDRCNT, -1 CDRCT2, -1 CDRPT, 0 CDRSW, 0 CDRTM3, 0 CDR240, 240 CDR213, 213 CDR232, 232 CDR177, 177 CDR077, 77 CDRM77, -7700 CDRABF, CDRBUF-1-CDRLOC CDRTAD, CDRTBL-CDRLOC CDRIN5, CDRXIT-1-CDRLOC IFNZRO LP08 > IFZERO LP08 < *6200 LSE=6651 LCF=6652 LLB=6654 LSD=6661 LCB=6662 LPR=6664 LPT, 0 LP7700, 7700 LPT11, 11 RDF TAD LPTCIF DCA LPTXIT TAD I LPT AND LPT70 TAD LP6201 DCA LPTCDF CLA CLL CML RAR TAD I LPT AND LP7700 CMA DCA LPTWC ISZ LPT TAD I LPT DCA LPTCA ISZ LPT TAD I LPT ISZ LPT SNL JMP LPTERR SZA CLA JMP LPTCDF LCB JMS LPWAIT TAD LPT214 JMS LPTPCH LPTCDF, HLT JMP LPT7 LPTLP, TAD I LPTCA JMS LPTPCH TAD I LPTCA AND LP7400 DCA LPTTMP ISZ LPTCA LP7400, 7400 TAD I LPTCA JMS LPTPCH TAD I LPTCA AND LP7400 CLL RTR RTR TAD LPTTMP RTR RTR JMS LPTPCH ISZ LPTCA LPT7, 7 ISZ LPTWC JMP LPTLP LPTRTN, ISZ LPT LPTXIT, HLT JMP I LPT LPTWC, 0 LPTCA, 0 LPTPCH, 0 AND LPT177 SZA TAD LPM140 SMA JMP LPFLSH TAD LPT106 SNA JMP LPTCTZ TAD LPT13 CLL TAD LPT6 SZL SNA JMP LPTCTL TAD LPT11 LLB JMP LPTKSF LPWAIT, -1 LSD JMP .-1 LCF ISZ LPLPTR JMP I LPWAIT CLA IAC LPTCTL, SNA JMP LPTTAB TAD LPTTAD DCA LPTXXX TAD LP7607 DCA LPLPTR LPTXXX, HLT SNA JMP .+3 LPR LPTKSF, JMS LPWAIT KRS LPFLSH, TAD LPM203 SNA CLA KSF JMP I LPTPCH LPTCIF, CDF CIF 0 JMP I .+1 7600 LPTCTZ, TAD LPT214 JMS LPTPCH JMP LPTRTN LPT6, 6 LPTTAB, TAD LPT40 LLB JMS LPWAIT TAD LPLPTR AND LPT7 LPM140, SZA CLA JMP LPTTAB JMP LPTKSF+1 LPTERR, CLA CLL CML RAR JMP LPTXIT LPTTAD, TAD . LPT70, 70 LPT13, 13 LPT177, 177 0 LPT40, 40 LPM203, -203 LPT106, 106 LPT214, 214 LP7607, 7607 LP6201, CDF 0 LPTTMP, 0 LPLPTR, 0 > IFNZRO LP08 > IFZERO LP08+LIST IFNZRO LP08 < *6200 LSF=6661 LSR=6663 LLS=6666 LPT, 0 CLL CML CLA RAR TAD I LPT LPT215, AND LP7700 CMA DCA LPTWC LPT214, RDF TAD LPTCIF DCA LPTXIT TAD I LPT AND LPT70 TAD LPCDF0 DCA LPTCDF LP7700, 7700 ISZ LPT TAD I LPT DCA LPTCA ISZ LPT TAD I LPT LPTCDF, HLT ISZ LPT SNL JMP LPTERR SNA CLA TAD LPT214 JMP LPTKLG LPTLP, TAD I LPTCA JMS LPTPCH TAD I LPTCA AND LP7400 DCA LPTCDF ISZ LPTCA LP7400, 7400 TAD I LPTCA JMS LPTPCH TAD I LPTCA AND LP7400 CLL RTR LPTLF, RTR TAD LPTCDF RTR RTR ISZ LPTCA LPTKLG, JMS LPTPCH LPT177, 177 ISZ LPTWC JMP LPTLP LPRTRN, ISZ LPT LPTXIT, HLT JMP I LPT LPTWC, 0 LPTCA, 0 LPTPCH, 0 AND LPT177 CIA CLL CML TAD LPT175 SZL SNA JMP LPFLSH TAD LPM143 SNA JMP LPTCTZ TAD LPTM15 CLL CML CMA TAD LPT7 SNL SZA JMP LPTCTL TAD LPT7 JMS LPWAIT LPTJMP, JMP LPJTAB-2 LPTCTZ, TAD LPT214 JMS LPTPCH JMP LPRTRN LPWAIT, 0 LLS LP7600, 7600 TAD LP7600 KRS TAD LPT175 SNA CLA KSF JMP .+3 LPTCIF, CDF CIF 0 JMP I LP7600 LSF JMP LP7600 LSR JMP LPWISZ LPTERR, CLA CLL CML RAR JMP LPTXIT LPWISZ, ISZ LPLPTR JMP I LPWAIT LPLF, CLA CLL CMA RAL LPTFF, TAD LPT214 DCA LPLPTR TAD LPLPTR JMS LPWAIT TAD LPM120 DCA LPLPTR LPTCTL, TAD LPTJMP DCA .+1 LPTXXX, HLT LPTTAB, TAD LPM140 JMS LPWAIT TAD LPLPTR AND LPT7 SNA CLA JMP I LPTPCH LPT7, 7 LPJTAB, JMP LPTTAB JMP LPLF JMP LPTVTB JMP LPTFF LPFLSH, LPM120, -120 LPT70, 70 JMP I LPTPCH LPTM15, -15 LPT175, 175 LPM143, -143 LPCDF0, CDF 0 LPLPTR, 0 LPTVTB, TAD LPTM15 DCA LPLPTR TAD LPTLF JMS LPWAIT JMP .-2 LPM140, -140 > IFZERO LP08+LIST