File CONFGC.

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



	/CONFIG FOR DSK, TD8E,
	/LA30, VTO1   18.5.72
/	PS/8 SYSTEM CONFIGURATOR	CONFIG.002

/28 OCTOBER 1970		R.L./E.F.
/COPYRIGHT 1970			DIGITAL EQUIPMENT CORP.
/				MAYNARD,MASS.

/ABSTRACT---
/CONFIG IS THE SYSTEM CONFIGURATOR FOR PS/8.CONFIG
/CONTAINS CONDITIONAL ASSEMBLY PARAMETERS WHICH DEFINE
/MONITOR TABLES AND DEVICE HANDLERS.ANY CHANGES TO DEVICE
/HANDLERS MUST BE MADE IN CONFIG.

/ PS/8 SYSTEM CONFIGURATOR /I) DETAILS OF CONDITIONAL ASSEMBLY / CONFIG USES PARAMETERS WHICH MAY BE SPECIFIED AT /ASSEMBLY TIME.THESE PARAMETERS ARE USED IN CONSTRUCTING /CORE RESIDENT TABLES,AND ALSO IN DETERMINING WHICH DEVICES /ARE IN THE SYSTEM.SPECIFICALLY,WHICH DEVICE WILL BE THE /SYSTEM DEVICE. /PARAMETERS: /A) DIRECT / IFNDEF DIRECT <DIRECT=0> /THIS SWITCH CONTROLS THE WRITING OF THE DIRECTORY AND ABSLDR /FILES ON THE SPECIFIED SYSTEM DEVICE. IF DIRECT IS DEFINED /NON-ZERO, THOSE RECORDS CONTAINING THE DIRECTORY /AND THE ABSOLUTE LOADER ARE NOT REWRITTEN WHEN A NEW SYSTEM /IS GENERATED. A NEW SYSTEM CAN BE BUILT WITHOUT DESTROYING /PREVIOUSLY LOADED FILES. /B) SYSTEM DEVICE PARAMETERS /DEFINING ONE OF THESE AT ASSEMBLY TIME SPECIFIES WHICH DEVICE /IS TO BE USED AS THE SYSTEM DEVICE. INTERNAL TABLES ARE ASSEMBLED /TO REFLECT THIS DEVICE. / DECTAPE / IFNDEF DECTAPE <DECTAPE=0> / DEFINING DECTAPE WILL DESIGNATE DTA0 AS SYS: / NOTE:IF DECTAPE=1, DEVICE DSK: WILL BE DTA0: / IF DECTAPE =2, DEVICE DSK: WILL BE DTA1: / RF08 / IFNDEF RF08 <RF08=0> / DEFINING RF08=N, WHERE N IS AN INTEGER FROM 1 TO 4 / WILL CAUSE AN N DISK RF08 TO BE THE SYSTEM DEVICE. / LINCSYS / IFNDEF LINCSYS <LINCSYS=0> / FOR PDP-12 USERS. IF LINCSYS IS SPECIFIED, LINCTAPE UNIT / 0 WILL BE THE SYSTEM DEVICE. / NOTE:IF LINCSYS=1, DEVICE DSK: IS TAPE UNIT 0(DTA0:) / IF LINCSYS=2, DEVICE DSK: IS TAPE UNIT 1 (DTA1:) / RK08 / IFNDEF RK08 <RK08=0> / DEFINING RK08 WILL SPECIFY A SINGLE RK8 UNIT AS / THE SYSTEM DEVICE. / DF32 / IFNDEF DF32 <DF32=0> / DEFINING DF32=N, WHERE N IS AN INTEGER FROM 1 TO 4 / WILL CAUSE AN ASSEMBLY FOR AN N DF32 DISK SYSTEM. /IF NO SYSTEM DEVICE PARAMETERS ARE SPECIFIED, THE ASSEMBLY /RESULTING WILL BE A ONE DECTAPE SYSTEM;I.E. THE SAME AS /AN ASSEMBLY IN WHICH DECTAPE WAS SET=1.
/C) DEVICE HANDLER PARAMETERS /CERTAIN I/O HANDLERS ARE ALSO SPECIFIED BY ASSEMBLY TIME /SWITCHES. / LINE PRINTER /PS/8 SUPPLIES TWO LINE PRINTER HANDLERS: ONE FOR THE /OLDER TYPE---- AND ONE FOR THE LP08. / IFNDEF LP08 <LP08=1> /THE DEFAULT LINE PRINTER HANDLER WILL BE THE LP08. / LINCTAPE /FOR PDP-12 USERS, PS/8 CAN RUN WITH LINCTAPE INSTEAD OF /DECTAPE, BOTH AS I/O HANDLER AND AS SYSTEM DEVICE. /NOTE:CONFIG'S TABLES ARE SET UP SUCH THAT LINCTAPES /ARE STILL REFERRED TO AS DTAN: WHEN REFERENCED. TO CHANGE /THIS THE DEVICE NAME TABLE WILL HAVE TO BE ALTERED. SEE /THAT TABLE FOR THE PROPER FORMAT. /PLEASE NOTE: SPECIFYING MORE THAN ONE SYSTEM DEVICE /PARAMETER OR SPECIFYING BOTH DECTAPE AND LINCTAPE WILL /CAUSE ASSEMBLY ERRORS. / HIGH SPEED PAPER TAPE /IF THE USER DOES NOT HAVE HIGH SPEED I/O, A PARAMETER /IS PROVIDED WHICH USES THE TTY AS A SIMULATED HIGH SPEED /I/O UNIT. REFERENCES TO PTP AND PTR WILL USE THE /TTY IN THE SAME WAY THAT PTP AND PTR WOULD BE USED. / IFNDEF NOHSPT <NOHSPT=0> /THE DEFAULT ASSEMBLY ASSUMES THE USER HAS HIGH SPEED I/O. /II) REFERENCES TO THE MAIN PS/8 ASSEMBLY /CERTAIN LOCATIONS FROM THE MAIN ASSEMBLY OF PS/8 MUST BE /USED IN CONFIG. IF THESE LOCATIONS CHANGE FROM THEIR CURRENT /VALUE, THESE CHANGES MUST BE MADE IN CONFIG, OR UNPREDICTABLE /RESULTS WILL OCCUR. / MFREE=FIRST RECORD OF FILE STORAGE ON SYS: / IT IS CURRENTLY SET TO 70 (OCTAL) / SDNAME=SYSTEM DEVICE NAME TABLE / CURRENTLY AT 564 / SET AASDNAME=SDNAME IN CONFIG / SDVHND=SYSTEM DEVICE HANDLER TABLE / CURRENTLY SET TO 767 / SET AASDVHND=SDVHND /LOCATION 20 IN FIELD 0 IS THE DIRECT PARAMETER. CONFIG /EXPECTS LOCATION 20 TO HAVE THE TAG RBFLAG. RBFLAG SHOULD /BE AT LOCATION 20. /CONFIG EXPECTS THE INITIAL PS/8 DIRECTORY (ABSLDR.SV) /TO TERMINATE AT LOCATION 1413 IN FIELD 1. THIS LOCATION IS /OVERLAID WITH THE NUMBER OF BLOCKS REMAINING ON THE /SPECIFIED SYSTEM DEVICE. IF THE INITIAL DIRECTORY IS /ALTERED, CONFIG SHOULD BE ALTERED TO CORRESPOND WITH THE /NEW DIRECTORY.
/III) TABLES IN PS/8 SET UP BY CONFIG /CERTAIN MONITOR TABLES ARE ASSEMBLED WITH CONFIG. /CONDITIONAL PARAMETERS ARE USED TO CORRECTLY ASSEMBLE THESE /TABLES. / SDNAME /SDNAME SPECIFIES THE STANDARD NAMES FOR THE PS/8 DEVICES. / SDVHND /SDVHND CONTAINS INFORMATION ABOUT THE HANDLERS, SUCH AS /WHERE THEY WILL BE FOUND ON THE SYSTEM DEVICE /AND THE RELATIVE LOCATION OF THEIR ENTRY POINTS. SEE THE /TABLE FOR DETAILED FORMAT. /NOTE: THE ENTRIES IN THESE TABLES MUST BE KEPT IN THE /SAME RELATIVE POSITIONS. /SDVHND USES THE ADDRESSES IN CONFIG WHICH ARE THE ACTUAL /ASSEMBLY POINTS OF THE HANDLERS. IF THE ASSEMBLY POINTS /SHOULD CHANGE, THIS CHANGE MUST BE REFLECTED IN SDVHND. /IV) THE SUPPLIED DEVICE HANDLERS. /CONFIG CONTAINS THE DEVICE HANDLERS WHICH ARE CURRENTLY /SUPPORTED. SEE THE INDIVIDUAL HANDLERS FOR RESTRICTIONS AND /DETAILS. /V) SYSTEM DEVICE HANDLER MAP /CONFIG WRITES DEVICE HANDLER RECORDS ONTO THE SYSTEM /DEVICE. THE FOLLOWING IS THE HANDLER "MAP": / RECORD NO. HANDLER RESIDENT / / 20,21 CDR,LPT (CARD READER,LINE PRINTER) / 16 PTR,PTP (HI SPEED READER/PUNCH) / 17 TTY (TELETYPE) / 22 DTAN: (8 DECTAPE HANDLERS) /ANY DEVICE HANDLERS SUPPLIED BY DEC IN THE FUTURE WILL /BE PLACED IN FIELD 0 OF CONFIG. FOR THIS REASON WE SUGGEST /THAT ANY USER WRITTEN HANDLER BE EDITED INTO FIELD 1. /THE AVAILABLE LOCATIONS IN FIELD 1 ARE: / / 4000 THRU 7500
/DEVICE DEPENDENT CODE FOR PS/8 MONITOR /THESE ARE CONDITIONAL PARAMETERS. SEE INTRODUCTORY COMMENTS. RK8=1 NOHSPT=1 IFNDEF DIRECT <DIRECT=0> /"DON'T REWRITE DIRECTORY" FLAG IFNDEF NOHSPT <NOHSPT=0> /"NO HIGH-SPEED PAPER TAPE" FLAG IFNDEF RF08 <RF08=0> IFNDEF LP08 <LP08=1> IFNDEF LINCTAPE <LINCTAPE=0> IFNDEF LINCSYS <LINCSYS=0> IFNDEF RK8 <RK8=0> IFNDEF DF32 <DF32=0> IFNDEF DECTAPE < IFZERO DF32+RF08+RK8+LINCSYS <DECTAPE=1> IFNZRO DF32+RF08+RK8+LINCSYS <DECTAPE=0> > 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 <MFREE+5-1341 /IF DECTAPE> IFNZRO RF08 <6000^RF08+MFREE+6 /IF RF08> IFNZRO RK8 <MFREE+5-6260 /IF 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 7546 /DSYS 5524 /TTY 5723 /DSK 4604 /DTA0 4605 /DTA1 4606 /DTA2 4607 /DTA3 4420 /TP0 4520 /TP1 7325 /DCWR 6731 /DISP 4024 /PTP 4224 /PTR 7241 /NULL 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 IFZERO LINCSYS+DECTAPE-2 <5^200+DTA1-7200 /FOR MULTIPLE DECTAPE SYSTEMS,DTA1=DSK> IFNZRO LINCSYS+DECTAPE-2 <0 /OTHERS,DSK=SYS> 2^200+TTY-7000 4^200+7607-7600 5^200+DTA0-4000+4000 5^200+DTA1-4000+4000 5^200+DTA2-4000+4000 5^200+DTA3-4000+4000 3^200+DTA0Q-5600 3^200+DTA1Q-5600 7^200+DCWR-5000 6^200+DPL-4400+4000 1^200+PTP-6400 1^200+PTR-6400 3^200+NULL-5600 IFNZRO DECTAPE <SYSD=4160> IFNZRO LINCSYS <SYSD=4170> IFNZRO RF08 <SYSD=RF08^10+4050> IFNZRO RK8 <SYSD=4050> IFNZRO DF32 <SYSD=DF32^10+4110> DTADCB=LINCTAPE^10+4160 /4160 OR 4170 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-77 TO BE ASSIGNED /21 DECWRITER DCWR /22 DISPLAY DISP /23 NULL /BITS 9-11 - FLAG FOR WHETHER AN OUTPUT FILE IS CURRENTLY OPEN *7560 DCB, SYSD;SYSD;0;4050;DTADCB;DTADCB;DTADCB;DTADCB DTADCB;DTADCB;0210;1220;1020;2010;0230 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; 4201; 5600;DVHORG+2; JMP BERR /NULL,TP0,TP1 WRITE; 4100; 7000;DVHORG+1; JMP BERR /TTY HANDLER WRITE; 4210; 4000;DVHORG+4; JMP BERR /DTA HANDLERS WRITE; 4100; 6400;DVHORG+0; JMP BERR /PTR & PTP HANDLERS WRITE; 4210; 4400;DVHORG+5; JMP BERR /DISP WRITE; 4110; 5000;DVHORG+6; JMP BERR /DCWR WRITE; 4201; 7600;DVHORG+3; JMP BERR /DSK ISZ WRDEVH BERR, JMP I WRDEVH
*7000 /TELETYPE HANDLER - NOT VERY INTELLEGENT. /ONLY RECOGNIZES ^Z AND ^C ON INPUT /AND ^C AND ^O ON OUTPUT /OH WELL, WHAT CAN YOU EXPECT IN ONE PAGE. / THE LOGIC IS VERY SIMILIAR TO THE PTR AND PTP HANDLERS. TTY360, 360 /MUST BE FIRST LOC ON PAGE! TTY, 0 TT7600, 7600 RDF TAD TTYCIF DCA TTYXIT /SAVE RETURN FIELD TAD I TTY AND TT70 TAD TTCDF DCA TTYCDF /DATA FIELD OF BUFFER TAD I TTY AND TT7700 CLL RAL /READ/WRITE IN LINK, PAGE COUNT IN AC 0-4 SZA /PROTECT LINK CIA /WHILE COMPLEMENTING AC DCA TTYWC ISZ TTY TAD I TTY DCA TTYCA /SAVE BUFFER ADDRESS ISZ TTY ISZ TTY TTYLP, SNL CLA JMP TTYGLP /ZER LINK MEANS READ JMS TTYTST /TEST FOR ^C TAD TTYM14 /-203-14=-217 =-"^O" SNA CLA JMP TTYCTO TAD I TTYCA /CHARACTER 1 IS LOW ORDER 8 BITS OF WORD 1 JMS TTYPCH AND TT7400 DCA TTYGCH ISZ TTYCA TT7400, 7400 TAD I TTYCA /CHARACTER 2 IS LOW ORDER 8 BITS OF WORD 2 JMS TTYPCH AND TT7400 CLL RTR RTR TAD TTYGCH RTR RTR /CHARACTER 3 IS HIGH ORDER 4 BITS OF WORDS 1 AND 2 JMS TTYPCH /WILL SET LINK ON! /AC IS NON-ZERO HERE BUT WE DON'T CARE TTLOOP, ISZ TTYCA TT70, 70 ISZ TTYWC ISZ TTYWC JMP TTYLP TTYRTN, TAD TTYCDF CLL CIA SNL CLA ISZ TTY /SKIP PAST ERROR RETURN TTYXIT, HLT /RESTORE CALLING FIELDS RAL JMP I TTY TTYPCH, 0 TAD TTM232 SNA JMP TTYRTN TAD TTY232 JMS TTPRNT JMP I TTYPCH TTYTST, 0 TTYCDF, 0 TAD TTY200 KRS /TEST FOR ^C WITH FLAG UP TAD TTM203 KSF CLA IAC SZA /YES..BACK TO MONITOR JMP I TTYTST TTYCIF, CDF CIF 0 JMP I TT7600 TTPRNT, 0 TLS TSF JMP .-1 JMP I TTPRNT TTYCA, 0 TTYWC, 0 TTCDF, CDF 0 /FOLLOWING CODE READS TTY AND PACKS IN BUFFER. TTYGLP, JMS TTYGCH DCA I TTYCA JMS TTYGCH DCA TTYPCH JMS TTYGCH RTL RTL DCA TTYGCH TAD TTYGCH AND TT7400 TAD I TTYCA DCA I TTYCA TAD TTYGCH TTY200, AND TTY360 CLL RTL RTL TAD TTYPCH ISZ TTYCA DCA I TTYCA JMP TTLOOP TTYGCH, 0 TAD TTYCDF TT7700, SMA CLA JMP I TTYGCH ISZ TTYTST JMP TTYKSF TAD TTY212 JMP TTECHO TTYKSF, KSF JMP .-1 JMS TTYTST TAD TTM27 SNA /IS IT A ^Z? DCA TTYCDF /YES - SET END-OF-FILE FLAG TAD TTY14 DCA TTYTST /TTYTST=-1 IF CARRIAGE RETURN KRB TTECHO, JMS TTPRNT /ECHO THE INPUT CHARACTER JMP I TTYGCH TTY232, 232 /THIS CAN BE OPTOMIZED OUT! TTY212, 212 TTY14, 14 TTM203, -203 TTM27, -27 TTYM14, -14 TTM232, -232 TTYCTO, 6032 JMP TTYRTN
IFZERO 1 < / " 1 " HAS REPLACED THE WORD / "LINCTAPE" TO PREVENT ASSEMBLY / SINCE TD8E HAS ITS OWN HANDLERS *7200 /DECTAPE HANDLERS(PAGE RELOCATABLE) FOR PS/8 MONITOR D177, 177 DM3, -3 DBLOCK, 0 DBLKCT, 0 DLOC, 0 WC, 7754 CA, 7755 DERRCT, 0 DTA0, ISZ DTANO DTA1, ISZ DTANO DTA2, ISZ DTANO DTA3, ISZ DTANO DTA4, ISZ DTANO DTA5, ISZ DTANO DTA6, ISZ DTANO DTA7, ISZ DTANO D400, 400 CLA CLL CMA RTL DCA DERRCT /SET TO REPEAT THREE TIMES IN CASE OF ERROR TAD DTANO CMA TAD DTATAD /GENERATE "TAD DTAN" WHERE DTAN IS THE ONE THAT DCA DTANO /WAS CALLED. CLA CLL CML RTR TAD DTANO /ALSO GENERATE "DCA DTAN" SO WE CAN RESTORE IT DCA DTADCA RDF TAD DCDIF0 DCA DSTOP /STORE CALLING FIELD FOR RETURNING DTANO, 0 /GET CALLING ADDRESS DCA DTA /SAVE IT TAD DTAISZ DTADCA, 0 /RESTORE ENTRY POINT DFUN=DTADCA DTAISZ, ISZ DTANO /BUMP DTANO FOR VARIOUS GROOVY REASONS /WHICH WILL BE APPARENT LATER TAD I DTA DCA DFUN /STORE AWAY FUNCTION WORD FOR FUTURE USE ISZ DTA DT7140, CLL CMA /THE "CLL" IS ONLY NECESSARY TO FORM THE 7140 TAD I DTA DCA DLOC /BUFFER ADDRESS -1 ISZ DTA TAD I DTA CLL RAL /MULTIPLY BY 2 FOR 256-WORD SIMULATED RECORDS DCA DBLOCK /DECTAPE BLOCK # ISZ DTA DTATRY, TAD WC DCDIF0, CDF CIF 0 DCA I CA TAD DFUN RAR CLA CML /COMPLEMENT OF BIT 11 OF DFUN NOW IN THE LINK TAD DTANO /DTANO = "TAD DTAN+1" RTR RTR /THESE TWO ROTATES FORM THE FLLOWING NUMBER /IN THE AC: YYYF00101000, WHERE YYY =DTAN+1 /AND F IS THE COMPLEMENT OF DFUN(11) TAD DT7140 /THE MAGIC STEP - THIS SIMULTANEOUSLY BUMPS DOWN /THE RECORD NUMBER IN AC(0-2) AND TRANSFORMS /THE REST OF THE AC TO F10001000 WHICH IS A /SEARCH IN DIRECTION F(F=1 MEANS BACKWARDS) WITH /THE MOTION BIT ON. DTCA DTXA DTLB /SET DECTAPE FIELD TO 0 FOR SEARCHING JMP DC+3 /JUMP INTO THE BLOCK SEARCH ROUTINE DERR, RTL /DECTAPE STATUS REGISTER B IS USUALLY IN THE AC HERE RAL D7600, 7600 /GET THE "END OF TAPE" FLAG INTO THE LINK AND CLEAR THE AC TAD D200 /GET MOTION BIT DC, SZL /AND, IF LINK IS ON DTATAD, TAD D400 /REVERSE DIRECTION OF MOTION DTXA KRS D200, AND D177 TAD DM3 SNA CLA KSF /CHECK FOR ^C TYPED JMP DTAWT TAD D7600 DCA DTA /FAKE DTA SO WE GO TO LOC 7600 IN FIELD 0 JMP DSTOP+1 /AFTER STOPPING THE TAPE DTAWT, DTSF DTRB JMP .-1 /WAIT FOR SEARCH TO COMPLETE SPA /HAS AN ERROR OCCURED? JMP DERR /DO SOMETHING APPROPRIATE DTRA RTL CMA RTL SNL CLA /WAS MOTIOZ OF TAPE FORWARDS? CML RTL /NO, SO ONLY SUCCEED IF WE ARE 2 BLOCKS IN FRONT /OF TARGET BLOCK TAD I WC CMA TAD DBLOCK CMA /AFTER THIS OPERATION WE HAVE THE FOLLOWING 4 POSSIBILITIES /1)AC=0, L=1 /SEARCH COMPLETE /2)AC=0, L=0 /RIGHT PLACE ON TAPE,WRONG DIRECTION /3)AC .GT. 0, L=0 /WEVE PASSED THE CORRECT BLOCK /4)AC .GT. 0, L=1 /WE HAVENT REACHED THE CORRECT BLOCK YET SZA CLA JMP DC SNL JMP DC+1 TAD DLOC DCA I CA /SET THE CURRENT ADDRESS REGISTER TO THE BUFFER -1 TAD DFUN DTLB /SET FIELD TO BUFFER FIELD TAD DFUN CLL RAL AND D7600 DCA DBLKCT /GET UNCOMPLEMENTED WORD COUNT INTO DBLKCT RAL IAC CLL CML RTL RTL /FORM A 50 IF L=1, A 30 IF L=0 DL, DTXA /XOR IN 50(WRITE) OR 30(READ) OR 0(CONTINUE PREVIOUS OP) TAD D7600 DCA I WC /READ/WRITE 128 WORDS FROM/INTO EACH BLOCK DTSF DTRB JMP .-1 CLL CML /SET ERROR FLAG ON INITIALLY SPA CLA JMP DERR2 /TRANSMISSION ERROR - TRY AGAIN TAD DBLKCT TAD D7600 SNA /BUMP WORD COUNT BY -128 AND SEE IF 0 /ALSO REVERSE LINK. JMP DOVER /YES - DONE DCA DBLKCT /RESTORE BUMPED WORD COUNT JMP DL /AND LOOP DERR2, ISZ DERRCT /ERROR CODE(LINK) IS 1 JMP DTATRY /TRY AGAIN JMP DSTOP /3 ERRORS - ITS CURTAINS FOR YOU,CHARLEY DOVER, ISZ DTA /SKIP ERROR RETURN DSTOP, HLT /RESTORE CALLING FIELD TAD D200 /STOP THE TAPE DTXA DCA DTANO /INITIALIZE DTANO FOR THE NEXT CALL RAR /GET ERROR CODE FROM LINK INTO AC0 JMP I DTA /AND EXIT DTA, 0 >
IFNZRO LINCTAPE < *7200 /LINCTAPE HANDLER FOR PS/8 - CRUDE VERSION (WRITE OPERATION CHECKS /AFTER EACH BLOCK) /ALL 8 HANDLERS ARE IN THIS PAGE - SEE DECTAPE HANDLER FOR /DUMB COMMENT /PDP-12 OPCODES NEEDED LINC= 6141 PDP= 0002 CLR= 0011 AXO= 0001 TMA= 0023 TAC= 0003 LTA4, 4 LTA7, 7 LTA20, 20 LTA70, 70 LTA702, 702 LT3700, 3700 LT4000, 4000 LT7700, 7700 DTA0, ISZ LTANO DTA1, ISZ LTANO DTA2, ISZ LTANO DTA3, ISZ LTANO DTA4, ISZ LTANO DTA5, ISZ LTANO DTA6, ISZ LTANO DTA7, ISZ LTANO LTA200, 200 TAD LTANO CMA TAD LTATAD DCA LTANO CLA CLL CML RTR TAD LTANO DCA LTADCA RDF TAD LCDIF0 DCA LTAXIT LTANO, 0 DCA LTA TAD LTAISZ LTADCA, 0 TAD I LTA DCA LTARG1 ISZ LTA TAD I LTA DCA LTARG2 ISZ LTA TAD I LTA CLL RAL /MOVE ARGUMENTS TO WORK AREA DCA LTARG3 ISZ LTA ISZ LTA TAD LTARG1 /GET CORE FIELD AND LTA70 CLL RTL RTL /MOVE TO BITS 0-2. CONTROLLER RTL /WANTS THEM THERE SLTARG3, DCA LTATMP TAC TAD LTANO /GET UNIT NO. AND LTA7 CLL RAR TAD LTATMP TAD LTA20 /SET BIT 7 ON. EXTENDED ADD. MODE LINC AXO /SEND DATA TO CONTROLLER PDP LT7600, 7600 DCA LTANO /RESET UNIT NO. TAD LTARG1 AND LT4000 /WATCH THE LINK! RTL RTL TAD LTA702 /ADD TAPE INST; STORE IT DCA LTINST LTALP, KRS AND LTA177 TAD LTAM3 SNA CLA KSF /TEST FOR ^C JMP LTAGO LCDIF0, CDF CIF 0 JMP I LT7600 LTAGO, TAD LTARG2 /CORE ADDRESS TO CONTROLLER LINC TMA CLR LTINST, 0 /TAPE INSTRUCTION HERE LTARG3, 0 /BLOCK NO. HERE PDP CMA /OPERATION DONE. AC HAS CHECKSUM SNA CLA /7777=GOOD CHECKSUM JMP LTNERR TAD LTINST AND LTA4 SNA CLA /WAS IT A WRITE OPERATION? JMP LTALP /NO..RETRY IT LTNERR, TAD LTARG1 AND LT3700 TAD LT7700 SNA /ALL DONE? JMP LTAXIT DCA LTARG1 /NO.. SAVE COUNT TAD LTARG2 LTATAD, TAD LTA200 DCA LTARG2 ISZ LTARG3 JMP LTALP LTAXIT, HLT JMP I LTA LTAISZ, ISZ LTANO LTARG1, 0 LTARG2, 0 LTATMP, 0 LTA177, 177 LTAM3, -3 LTA, 0 >
*6400 /THIS IS THE REAL HIGH SPEED HANDLER. /HIGH SPEED PAPER TAPE HANDLER FOR BLEEP MONITOR /PACKS 3 CHARACTERS IN 2 WORDS ON INPUT, UNPACKS ON OUTPUT /PAGE RELOCATABLE IFZERO NOHSPT < PTP, 0 CLA CLL CML /SET LINK ON TO INDICATE PUNCH JMS PSETUP /DO COMMON CRAP PTPLP, TAD I PTPCA JMS PTPPCH /FIRST CHAR IN LOW ORDER 8 BITS OF WORD 1 DCA PTR ISZ PTPCA PT7700, 7700 TAD I PTPCA JMS PTPPCH /SECOND CHAR IN LOW ORDER 8 BITS OF WORD 2 CLL RTR RTR TAD PTR RTR RTR /THIRD CHARACTER NOW IN AC JMS PTPPCH PTPEND, ISZ PTPCA PT70, 70 /JUST IN CASE WERE PUNCHING PG 7600 KEEP THIS LITERAL HERE KSF JMP PTPISZ /KEYBOARD FLAG OFF - DON'T WORRY ABOUT ^C PTPKRS, KRS AND PTP177 TAD PTPM3 SZA CLA /IS THERE A ^C IN THE TTY BUFFER? JMP PTPISZ /NO PTPCIF, CDF CIF 0 JMP I .+1 7600 PSETUP, 0 RDF /GET FIELD OF CALLING PROGRAM TAD PTPCIF DCA PTPXIT /SET UP RETURN SEQUENCE TAD I PTP AND PT70 TAD PCDF DCA PTPCDF RAR /GET LINK(1=PTP,0=PTR) TAD I PTP /GET FUNCTION WORD ISZ PTP SPA /CHECK CORRECT MODE JMP PTPERR /SIGNAL "UNRECOVERABLE DEVICE ERROR" AND PT7700 CMA /SET UP -(WORD COUNT)/2-1 DCA PTPWC TAD I PTP /SET UP STARTING ADDRESS ISZ PTP DCA PTPCA TAD I PTP PTPCDF, 0 /SET DATA FIELD TO ACCESS BUFFER PTPEOF=PTPCDF SNA CLA SZL JMP PTPISZ TAD PTP336 /INPUT INITIALIZATION - TYPE "^" AND WAIT TLS KSF JMP .-1 JMS PTRGCH /INITIALIZE THE PTR BUFFER CHAR 6032 /CLEAR AC AND KEYBOARD FLAG JMP PTPKRS /CHECK FOR ^C PTPISZ, ISZ PTPWC JMP I PSETUP /LOOP FOR BUFFER SIZE (128 WORDS) PTPRTN, TAD PTPEOF SZA CLA /DID WE RUN OUT OF TAPE? ISZ PTP ISZ PTP PTPXIT, HLT /EXIT CDF GOES HERE JMP I PTP PTPPCH, 0 PLS /NOTICE THE GLORIOUS LACK OF OVERLAP PSF JMP .-1 AND PT7400 JMP I PTPPCH PTPCA, 0 PTR, 0 /CORRECT ENTRY IN MAIN ASSEMBLY IF THIS IS MOVED! CLA CLL TAD PTR DCA PTP JMS PSETUP /SET UP ADDRESS, COUNT, FIELDS PTRLP, JMS PTRGCH /READ FIRST CHARACTER OF 3 DCA I PTPCA JMS PTRGCH DCA PTPPCH JMS PTRGCH RTL RTL AND PT7400 TAD I PTPCA DCA I PTPCA /HIGH ORDER 4 BITS INTO WORD 1 TAD PTR /GET THE CHAR FROM THE PTR BUFFER RTR RTR RAR /PUT THE LOW ORDER BITS INTO AC 0-3 AND PT7400 TAD PTPPCH ISZ PTPCA PT7400, 7400 DCA I PTPCA /LOW ORDER 4 BITS INTO WORD 2 JMP PTPEND PTRGCH, 0 TAD PTPEOF SNA CLA JMP I PTRGCH RFC DCA PTPEOF PTTIME, ISZ PTPEOF /THIS LOOP OVERFLOWS IN APPROX. 100 MS ON A PDP-8, JMP PGCHLP /72 MS ON A PDP-8/E DCA PTPTMP /IF IT DOES, IT MEANS WE HAVE RUN OUT OF TAPE TAD PTP232 /ZERO THE GARBAGE CHARACTER AT THE END OF THE TAPE AND SEND JMP I PTRGCH /AN END-OF-FILE CHARACTER (^Z) PGCHLP, TAD PTPTMP DCA PTR PTP232, 232 PTP336, 336 /FALL THROUGH CONSTANTS TO STALL FOR TIME PTP177, 177 RSF JMP PTTIME /READER NOT READY - CHECK TIMING RRB /READER READY - READ CHAR DCA PTPTMP /BUFFER READER BY ONE CHARACTER TO ELIMINATE TAD PTR /GARBAGE CHARACTER AT END OF TAPE JMP I PTRGCH /AND RETURN PTPERR, CLA CLL CML RAR /SIGNAL A "PERMANENT I/O ERROR" ON THE DEVICE JMP PTPXIT-2 PCDF, CDF 0 PTPTMP, 0 PTPWC, 0 PTPM3, -3 >
/THIS IS THE PTP,PTR HANDLER FOR PEOPLE WITH /NO HIGH SPEED I/O. IFNZRO NOHSPT < PTP, 0 CLA CLL CML /SET LINK ON TO INDICATE PUNCH JMS PSETUP /DO COMMON CRAP PTPLP, KSF JMP PTPCNT /KEYBOARD FLAG OFF - DON'T WORRY ABOUT ^C KRS AND PTP177 TAD PTPM3 SZA CLA /IS THERE A ^C IN THE TTY BUFFER? JMP PTPCNT /NO PTPCIF, CDF CIF 0 JMP I PT7600 PTPCNT, TAD I PTPCA JMS PTPPCH /FIRST CHAR IN LOW ORDER 8 BITS OF WORD 1 DCA PTR ISZ PTPCA PT7700, 7700 TAD I PTPCA JMS PTPPCH /SECOND CHAR IN LOW ORDER 8 BITS OF WORD 2 CLL RTR RTR TAD PTR RTR RTR /THIRD CHARACTER NOW IN AC JMS PTPPCH PTPEND, ISZ PTPCA PT70, 70 /JUST IN CASE WERE PUNCHING PG 7600 KEEP THIS LITERAL HERE JMP PTPISZ PSETUP, 0 RDF /GET FIELD OF CALLING PROGRAM TAD PTPCIF DCA PTPXIT /SET UP RETURN SEQUENCE TAD I PTP AND PT70 TAD PCDF DCA PTPCDF RAR /GET LINK(1=PTP,0=PTR) TAD I PTP /GET FUNCTION WORD ISZ PTP SPA /CHECK CORRECT MODE JMP PTPERR /SIGNAL "UNRECOVERABLE DEVICE ERROR" AND PT7700 CMA /SET UP -(WORD COUNT)/2-1 DCA PTPWC TAD I PTP /SET UP STARTING ADDRESS ISZ PTP DCA PTPCA TAD I PTP PTPCDF, 0 /SET DATA FIELD TO ACCESS BUFFER PTPEOF=PTPCDF SNA CLA SZL JMP PTPISZ TAD PTP336 /INPUT INITIALIZATION - TYPE "^" AND WAIT TLS KSF JMP .-1 PT7600, 7600 PTPISZ, ISZ PTPWC JMP I PSETUP /LOOP FOR BUFFER SIZE (128 WORDS) PTPRTN, TAD PTPEOF SZA CLA /DID WE RUN OUT OF TAPE? ISZ PTP ISZ PTP PTPXIT, HLT /EXIT CDF GOES HERE JMP I PTP PTPPCH, 0 TLS TSF /NOTICE THE GLORIOUS LACK OF OVERLAP JMP .-1 AND PT7400 JMP I PTPPCH PTPCA, 0 PTR, 0 /CORRECT ENTRY IN MAIN ASSEMBLY IF THIS IS MOVED! CLA CLL TAD PTR DCA PTP JMS PSETUP /SET UP ADDRESS, COUNT, FIELDS PTRLP, JMS PTRGCH /READ FIRST CHARACTER OF 3 DCA I PTPCA JMS PTRGCH DCA PTPPCH JMS PTRGCH DCA PTR TAD PTR RTL RTL AND PT7400 TAD I PTPCA DCA I PTPCA /HIGH ORDER 4 BITS INTO WORD 1 TAD PTR /GET THE CHAR FROM THE PTR BUFFER RTL RTL AND PT7400 TAD PTPPCH ISZ PTPCA PT7400, 7400 DCA I PTPCA /LOW ORDER 4 BITS INTO WORD 2 JMP PTPEND PTRGCH, 0 TAD PTPEOF SNA CLA JMP I PTRGCH CLA CLL CMA RTL /-3 DCA PTPEOF DCA PTR PTTIME, ISZ PTR /TIMEOUT LOOP FOR LOW SPEED READER JMP PTP232 ISZ PTPEOF /TIMES OUT IN 132 MS(PDP 8/E) OR 205 MS(PDP 8) JMP PTP232 TAD PTP232 JMP I PTRGCH /OVERFLOWED - PTPEOF IS NOW 0, RETURN ^Z PTP232, 232 /WASTE SOME TIME PTP177, 177 KSF JMP PTTIME /READER NOT READY - CONTINUE TIMEOUT KRB JMP I PTRGCH /RETURN WITH CHARACTER PTPERR, CLA CLL CML RAR /SIGNAL A "PERMANENT I/O ERROR" ON THE DEVICE JMP PTPXIT-2 PCDF, CDF 0 PTP336, 336 PTPWC, 0 PTPM3, -3 *6522 /PATCH TO CORRECT PRO AS IN SOFTWARE PERF. SUMMARY RTL /VOL2,12 PAGE PS/8 CONFIG 4 RTL DCA PTR TAD PTR /END OF PATCH >
/THE NOPUNC AND ENPUNC PSEUDO OPS ARE USED TO /'FAKE OUT' THE ASSEMBLER. THE CODE ASSEMBLES AS IF THE /ORIGIN WERE AT 7607, BUT WHEN IT IS LOADED, THAT CODE GETS /LOADED INTO 6607! THIS MEANS THAT ONE CAN BULID A DISK /VERSION OF PS/8 WHILE RUNN ING UNDER A DECTAPE VERSION, AS /THE SYSTEM HANDLERS ARE NOT OVERLAPPED. /IN EACH SYSTEM HANDLER THE CODE / IFNZRO .-7700 <NZERR> /APPEARS. THIS WILL CAUSE AN ASSEMBLY ERROR IF THINGS ARE /SHUFFLED AROUND. THE SKP;HLT FOLLOWING ARE TO PREVENT /MISTAKENLY DOING A JMS I (7700 WITH IF=0. /THIS MISTAKE COULD DESTROY A SYSTEM. *6607 /SYSTEM HANDLER IN FIELD 0 NOPUNCH *7607 ENPUNCH IFNZRO RF08+DF32 < SHNDLR, 0 CLA CLL CMA RTL /-3 DCA SYSCNT /# TRYS ON ERROR TAD I SHNDLR RAL CLA RTL TAD S6603 DCA SFUN /EITHER A READ OR WRITE TAD I SHNDLR AND S70 DCA SFIELD /GET FIELD OF BUFFER TAD I SHNDLR RAL AND S7600 CIA DCA SWC /SET UP WORD COUNT CLA CMA ISZ SHNDLR TAD I SHNDLR DCA SCA /BUFFER ADDRESS-1 ISZ SHNDLR IFNZRO DF32 <TAD I SHNDLR /NOTE----SOFSET IS ZERO CURRENTLY TAD SOFSET RTL AND S3700> TAD SFIELD 6615 /LOAD DISK EXTENDED MEMORY S7600, 7600 IFNZRO RF08 <TAD I SHNDLR TAD SOFSET RTR RTR AND S377 6643 /LOAD HIGH ORDER> TAD I SHNDLR TAD SOFSET RTR RTR RAR AND S7400 SFUN, HLT /BECOMES DISK IOT.(READ OR WRITE) RDF TAD SCIF DCA SFIELD IFNZRO DF32 <6622> IFNZRO RF08 <6623> JMP .-1 ISZ SHNDLR 6621 /SKIP ON ERROR IFNZRO RF08 <SKP /SENSE OF SKIP IS REVERSED> JMP SYSER ISZ SHNDLR SFIELD, HLT /RETURN TO PROPER FIELD 6601 /CLEAR TROUBLESOME FLAG JMP I SHNDLR SYSER, CLA CLL CML RAR /4000 ISZ SYSCNT /TRY AGAIN? SKP CLA JMP SFIELD /WHY BOTHER CLA CLL CMA RTL TAD SHNDLR DCA SHNDLR /RESET PARAMETERS AND TRY AGAIN IFNZRO RF08 <IFNZRO .-7700 <NZERR>; SKP; HLT> JMP SHNDLR+3 SCIF, CIF 0 SYSCNT, 0 IFNZRO DF32 <IFNZRO .-7700 <NZERR>; SKP; HLT> S6603, 6603 S70, 70 S7400, 7400 IFNZRO DF32 <S3700, 3700> IFNZRO RF08 <S377, 377> SCA=7751 SWC=7750 >
IFNZRO DECTAPE < SHNDLR, 0 CLA CLL CMA RTL DCA SYSCNT /3 TRIES ON ERROR RDF TAD SCIF DCA SFIELD /RETURN FIELD SETUP TAD I SHNDLR DCA SFUN ISZ SHNDLR CLA CMA TAD I SHNDLR DCA SLOC /BUFFER ADDRESS-1 ISZ SHNDLR STRY, TAD S410 /SETUP DTA0 TO DO SEARCH REVERSE DTCA DTXA /BUT MOTION BIT IS NOT ON DTLB CLA CMA CLL RAL DCA SCA /7776=SBLOCK FROM PS/8 ASSEMBLY TAD SFUN RTR RTR SERR, RTL RAL /LAST 4 INST. PUT MOTION BIT IN LINK /IF THIS BIT WAS SET IN THE CALLING /SEQUENCE, SEARCH STARTS FORWARD. S7600, 7600 TAD S200 SC, SZL TAD S400 DTXA /ZAP MOTION BIT ON DTSF DTRB JMP .-1 SPA /CHECK FOR ANY ERRORS JMP SERR DTRA /NO ERRORS RTL CMA RTL /COMPLEMENT OF DIRECTION TO LINK /IF LINK ON, SEARCHING FORWARD. SNL CLA CML RTL TAD SBLOCK /SEARCH FOR ONE RECORD BEFORE THE /REQUIRED ONE. THEN REVERSE DIRECTION CMA TAD I SHNDLR TAD I SHNDLR /X+X=2*X; RECORDS TO BLOCKS TAD SOFSET TAD SOFSET /ALSO DOUBLE OFFSET CMA SZA CLA /IS IT PROPER RECORD? JMP SC SNL /YES..IF LINK IS ON,WAS FWD SRCH JMP SC+1 /REVERSE..REVERSE TAPE MOTION /AND SEARCH FORWARD TAD SLOC DCA SCA TAD SFUN DTLB /SET UP FIELD TAD SFUN CLL RAL AND S7600 DCA SBLKCT /BLOCK COUNT RAL /FUNCTION TO BIT 11 IFNZRO .-7700 <NZERR> SKP HLT /TO PROTECT AGAINST BAD PROGRAMMERS IAC CLL CML RTL RTL /FORMS EITHER READ OR WRITE SL, DTXA TAD S7600 DCA SWC /TRANSFER 200 (8) DTSF DTRB JMP .-1 CLL CML /IN CASE OF FATAL ERROR SPA CLA JMP SERR2 TAD SBLKCT TAD S7600 SNA /ALL DONE? JMP SOVER /YES DCA SBLKCT JMP SL SERR2, ISZ SYSCNT /TRY AGAIN? JMP STRY SKP /DON'T BOTHER SOVER, ISZ SHNDLR ISZ SHNDLR TAD S200 /STOP THE TAPE DTXA RAR /GIVE FATAL RETURN SFIELD, HLT JMP I SHNDLR SCIF, CIF 0 S400, 400 S200, 200 S410, 410 SBLKCT=7777 SYSCNT=7750 SFUN=7751 SLOC=7752 SWC=7754 SCA=7755 >
IFNZRO RK8 < DCLA=6751 DLDR=6733 DLDC=6732 DRDS=6741 DRWC=6752 DCLS=6742 DSKC=6745 DLWC=6753 DSKE=6747 DLCA=6755 SHNDLR, 0 CLA CLL CMA RTL DCA SYSCNT /NO. ERROR TRIES TAD I SHNDLR DCA SFUN /FUNCTION WORD ISZ SHNDLR CLA CMA TAD I SHNDLR DCA SLOC /BUFFER ADDRESS-1 ISZ SHNDLR STRY, TAD I SHNDLR DCA SREC TAD SFUN RAL AND S7600 DCA SBLKCT /WORD COUNT RTL TAD SDLDR DCA SINST /SINST=6733 (READ) OR 6735 WRITE SLOOP, TAD SLOC DLCA /LOAD CURRENT ADDRESS TAD SBLKCT TAD S7600 /FULL OR HALF RECORD READ? SZA CLA TAD S7600 /FULL..2 PAGES TAD S7600 /HALF..1 PAGE DLWC /WORD COUNT DCLS /CLEAR ALL FLAGS TAD SFUN AND S70 DLDC /LOAD DATA FIELD OF BUFFER TAD SREC SAVE, SINST, 0 /READ OR WRITE IOT DSKC JMP .-1 SNEXT, DSKE /DONE..IS ERROR FLAG UP? JMP NOERR SERROR, ISZ SYSCNT JMP SLOOP /TRY AGAIN CLA CLL CML RAR /DON'T BOTHER..YOU LOSE JMP SRTRN+1 NOERR, ISZ SREC /NO..BUMP RECORD NO. S70, 70 DRCA DCA SLOC TAD S7600 CLL RAL TAD SBLKCT SZL SNA /WORD COUNT EXHAUSTED? JMP .+3 /YES DCA SBLKCT JMP SLOOP S7600, 7600 SRTRN, ISZ SHNDLR ISZ SHNDLR JMS FELDSR JMP I SHNDLR KRBSR, 0 CLA RAL DCA LINK RDF TAD SCIF DCA RETFLD ROUND, INS1, KSF JMP .-1 INS5, KRS TAD S7600 CIF 10 SNA CLA JMP 7705 TAD LINK CLL RAR INS2, KRB RETFLD, 0 JMP I KRBSR SYSCNT, FELDSR, 0 DCA SAVE RDF TAD SCIF DCA RTFLD2 SCIF, CIF CDF 0 TAD I FELDSR DCA .+3 TAD SAVE SBLKCT, RTFLD2, 0 SLOC, 0 SREC, 0 LINK, EAEMOD, 0 MQSAV, 0 HLT HLT HLT HLT NOPUNCH *.+3 SDLDR, DLDR SFUN, KSFSR, 0 INS6, KSF SKP ISZ KSFSR JMS FELDSR JMP I KSFSR ENPUNCH >
IFNZRO LINCSYS < SHNDLR, 0 S7600, 7600 RDF TAD SCIF DCA SXIT TAD I SHNDLR DCA SFUN /FUNCTION ISZ SHNDLR TAD I SHNDLR DCA SADR /BUFFER ADDRESS ISZ SHNDLR TAD I SHNDLR TAD SOFSET /SOFSET=0 CLL RAL DCA SBLOK /BLOCK NO. ISZ SHNDLR CLL CML RAR AND SFUN RTL RTL TAD S702 /GET FUNCTION;CREATE READ OR WRITE DCA SINST /READ OR WRITE INSTRUCTION. TAD SFUN AND S70 /FIELD BITS TO AC 0-2 RTL IAC RTL /SET EXTENDED ADDRESS RTL LINC=6141 PDP=2 AXO=1 /SEND TO CONTROLLER TMA=23 LINC AXO PDP CLA TAD SFUN RAL AND S7600 DCA SFUN SLOOP, CLA CLL CMA RTL DCA SERRCT /NO. ERROR TRIES STRY, TAD SADR LINC TMA /CORE ADDRESS TO CONTROL SINST, 0 /READ OR WRITE SBLOK, 0 /BLOCK NO. HERE PDP CMA /CHECKSUM HERE. 7777=GOOD SZA CLA JMP SERR SOK, ISZ SBLOK TAD SADR /BUMP UP BLOCK AND CORE ADDRESS TAD S200 /PARAMETERS DCA SADR TAD SFUN TAD S7600 SNA /ALL DONE? JMP SDONE /YES DCA SFUN JMP SLOOP SERR, TAD SINST IFNZRO .-7700 <NZERR> SKP HLT RTR;RTR SPA CLA /WAS IT READ? JMP SOK /NO..WRITE. CONTINUE ISZ SERRCT /READ..RETRY IT? JMP STRY CLA CLL CML RAR /DON'T BOTHER SKP SDONE, ISZ SHNDLR SXIT, 0 JMP I SHNDLR SFUN, 0 SADR, 0 SERRCT, 0 S702, 702 S200, 200 S70, 70 SCIF, CDF CIF 0 >
/MONITOR BOOTSTRAP AND GENERATOR IFNZRO RF08+DF32 < *7400 NOPUNC *6604 ENPUNC NOP /FOR "SWAP" B6653, 6653 B7647, 7647 B7577, 7577 B200, 200 B7605, 7605 B7751, 7751 ZBLOCK 6622-. TAD I B6653 CDF 10 DCA I B7647 CDF 0 ISZ B6653 ISZ B7647 JMP .-6 /MOVE FIELD 1 RESIDENT UP IFNZRO RF08 <6643> 6615 7600 TAD B7577 DCA I B7751 TAD B200 6603 /NOW READ IN FIELD 0 RESIDENT FROM RECORD 1/2 IFNZRO RF08 <6623> IFNZRO DF32 <6622> JMP .-1 6621 IFNZRO RF08 <SKP> HLT /ERROR READING SYSTEM IN JMP I B7605 /BOOTSTRAP FOR DISK MONITOR IS AS FOLLOWS: / LOCATION CONTENTS / 7750 7600 / 7751 6603 / 7752 6622 / 7753 5352 / 7754 5752 >
IFNZRO DECTAPE < *7400 /DECTAPE BOOTSTRAP - LOADS INTO 7600 NOPUNCH *7600 ENPUNCH TAD B600 /THIS CODE ONLY EXECUTED ON DMS-TYPE BOOTSTRAP DTCA DTXA /ALL IT DOES IS SIMULATE THE OTHER TYPE OF BOOTSTRAP DTSF JMP .-1 DCA BOOTX DCA BOOTX+1 /FUDGE TO MAKE USE OF SOME COMMON CODE TAD B620 JMP BOOT3 /START READING OVER OURSELVES WITH RECORD 0 AGAIN ZBLOCK 7611-. BM7642, -7642 /MUST BE BEFORE 7617 BOOT1, TAD 7755 TAD BM7642 SNA CLA /WATCH THE PROGRESS OF THE READ JMP BOOT2 /WHEN IT GETS PAST 7643, SWITCH TO FIELD 1 NOP /LOADS OVER DTSF IN 7616 JMP BOOT1 /LOADS OVER JMP .-1 IN 7617 - STARTS BOOTSTRAP BOOT2, TAD B10 DTLB /ZAP A 10 INTO STATUS REG B TO LOAD INTO FIELD 1 DTSF /FROM HERE ON - LOAD THE FIELD 1 RESIDENT INTO FIELD 1 JMP .-1 BOOT3, DTXA /CONTINUE READING NEXT RECORD(ALSO SEE CODE AT 7600) DTLB /INTO FIELD 0 TAD B7577 DCA 7755 /PAGE 7600 DCA 7754 BOOTX, CDF CIF 10 JMP 7643 /JUMP INTO WAIT LOOP IN FIELD 1 JMP BOOT1 /DISK MONITOR FUDGE - JUMP INTO WAITING LOOP B7577, 7577 B10, 10 B600, 600 B620, 620 ZBLOCK 7643-. DTSF /THIS IS LOADED INTO FIELD 1 WITH MONITOR RESIDENT JMP .-1 /IT IS IN THE CD OUTPUT AREA AND SO WILL BE ZAPPED CDF CIF 0 /BY THE KEYBOARD MONITOR JMP 7605 /OK, FIELD 0 RESIDENT READ IN, START UP MONITOR /BOOTSTRAP FOR DECTAPE MONITOR IS THE SAME AS FOR THE /DEC LIBRARY SYSTEM, RL MONITOR AND POLY BASIC - OR JUST /READ RECORD 0 INTO 7600 AND TRANSFER TO 7600 A LA DISK /MONITOR SYSTEM ON DECTAPE >
IFNZRO RK8 < *7400 NOPUNC *1 ENPUNC BOOT, TAD I BOOTX1 DCA I BOOTX2 TAD I BOOTX3 CDF 10 DCA I BOOTX4 CDF 0 TAD BOOTX2 SZA CLA JMP BOOT JMP I B7605 BOOTX1, 200 BOOTX2, 7577 BOOTX3, 47 BOOTX4, 7646 ZBLOCK 27-. B7605, 7605 DSKC /MUST LOAD OVER LOC. 30 JMP .-1 /MUST LOAD OVER 31 JMP BOOT /THE BOOTSTRAP FOR THE RK8 IS AS FOLLOWS: / LOCATION CONTENTS / 30 6733 / 31 5031 /LOAD ADDRESS 30 AND START >
IFNZRO RK8 < *7400 NOPUNC *1 ENPUNC BOOT, TAD I BOOTX1 DCA I BOOTX2 TAD I BOOTX3 CDF 10 DCA I BOOTX4 CDF 0 TAD BOOTX2 SZA CLA JMP BOOT JMP I B7605 BOOTX1, 200 BOOTX2, 7577 BOOTX3, 47 BOOTX4, 7646 ZBLOCK 27-. B7605, 7605 DSKC /MUST LOAD OVER LOC. 30 JMP .-1 /MUST LOAD OVER 31 JMP BOOT /THE BOOTSTRAP FOR THE RK8 IS AS FOLLOWS: / LOCATION CONTENTS / 30 6733 / 31 5031 /LOAD ADDRESS 30 AND START > IFNZRO LINCSYS < *7416 /ACTUALLY LOADS INTO 4016 B4047, 4047 B7647, 7647 1020;20;4 /IO PRESET 1020;20;AXO /LOAD SOME LINCTAPE FLAGS 1020;7600;TMA /LOAD MEMORY ADDRESS 720;1 /READ RECORD 1 PDP /BACK TO PDP-8 MODE CLA TAD I B4047 CDF 10 DCA I B7647 CDF 00 ISZ B4047 ISZ B7647 JMP .-6 JMP I .+1 7605 /THE BOOTSTRAP FOR A LINCTAPE SYSTEM IS AS FOLLOWS: /LEFT SWITCHES=700,RIGHT SWITCHES=0 /I-O PRESET IN LINC MODE AND PRESS "D0". TAPE WILL MOVE /WHEN TAPE STOPS PRESS "START 20". > FIELD 1 *5000 /DECWRITER HANDLER - NOT VERY INTELLEGENT. /ONLY RECOGNIZES ^Z AND ^C ON INPUT /AND ^C AND ^O ON OUTPUT /OH WELL, WHAT CAN YOU EXPECT IN ONE PAGE. / THE LOGIC IS VERY SIMILIAR TO THE PTR AND PTP HANDLERS. DWY360, 360 /MUST BE FIRST LOC ON PAGE! DCWR, 0 DW7600, 7600 RDF TAD DWYCIF DCA DWYXIT /SAVE RETURN FIELD TAD I DCWR AND DW70 TAD DWCDF DCA DWYCDF /DATA FIELD OF BUFFER TAD I DCWR AND DW7700 CLL RAL /READ/WRITE IN LINK, PAGE COUNT IN AC 0-4 SZA /PROTECT LINK CIA /WHILE COMPLEMENTING AC DCA DWYWC ISZ DCWR TAD I DCWR DCA DWYCA /SAVE BUFFER ADDRESS ISZ DCWR ISZ DCWR DWYLP, SNL CLA JMP DWYGLP /ZER LINK MEANS READ JMS DWYTST /TEST FOR ^C TAD DWYM14 /-203-14=-217 =-"^O" SNA CLA JMP DWYCTO TAD I DWYCA /CHARACTER 1 IS LOW ORDER 8 BITS OF WORD 1 JMS DWYPCH AND DW7400 DCA DWYGCH ISZ DWYCA DW7400, 7400 TAD I DWYCA /CHARACTER 2 IS LOW ORDER 8 BITS OF WORD 2 JMS DWYPCH AND DW7400 CLL RTR RTR TAD DWYGCH RTR RTR /CHARACTER 3 IS HIGH ORDER 4 BITS OF WORDS 1 AND 2 JMS DWYPCH /WILL SET LINK ON! /AC IS NON-ZERO HERE BUT WE DON'T CARE DWLOOP, ISZ DWYCA DW70, 70 ISZ DWYWC ISZ DWYWC JMP DWYLP DWYRTN, TAD DWYCDF CLL CIA SNL CLA ISZ DCWR /SKIP PAST ERROR RETURN DWYXIT, HLT /RESTORE CALLING FIELDS RAL JMP I DCWR DWYPCH, 0 TAD DWM232 SNA JMP DWYRTN TAD DWY232 JMS DWPRNT JMP I DWYPCH DWYTST, 0 DWYCDF, 0 TAD DWY200 RDRS /TEST FOR ^C WITH FLAG UP TAD DWM203 RDSF CLA IAC SZA /YES..BACK TO MONITOR JMP I DWYTST DWYCIF, CDF CIF 0 JMP I DW7600 DWPRNT, 0 WTLS WTSF JMP .-1 JMP I DWPRNT DWYCA, 0 DWYWC, 0 DWCDF, CDF 0 /FOLLOWING CODE READS DECWRITER AND PACKS IN BUFFER. DWYGLP, JMS DWYGCH DCA I DWYCA JMS DWYGCH DCA DWYPCH JMS DWYGCH RTL RTL DCA DWYGCH TAD DWYGCH AND DW7400 TAD I DWYCA DCA I DWYCA TAD DWYGCH DWY200, AND DWY360 CLL RTL RTL TAD DWYPCH ISZ DWYCA DCA I DWYCA JMP DWLOOP DWYGCH, 0 TAD DWYCDF DW7700, SMA CLA JMP I DWYGCH ISZ DWYTST JMP DWYKSF TAD DWY212 JMP DWECHO DWYKSF, RDSF JMP .-1 JMS DWYTST TAD DWM27 SNA /IS IT A ^Z? DCA DWYCDF /YES - SET END-OF-FILE FLAG TAD DWY14 DCA DWYTST /DWYTST=-1 IF CARRIAGE RETURN RDRB DWECHO, JMS DWPRNT /ECHO THE INPUT CHARACTER JMP I DWYGCH DWY232, 232 /THIS CAN BE OPTIMIZED OUT! DWY212, 212 DWY14, 14 DWM203, -203 DWM27, -27 DWYM14, -14 DWM232, -232 DWYCTO, RDCC JMP DWYRTN
LOCATE=4400 /PS/8 HANDLER FOR KV8/I COMPUTER DISPLAY. /USES TWO PAGES OF CORE AND DISPLAYS THE COMPLETE /ASCII CHARACTER SET.(SORRY THAT BACK ARROW,% AND /SQUARE BRACKETS ARE BAD). /WRITTEN BY FLOOR ANTHONI, BIOMEDICAL LABS OF THE /NATIONAL RESEARCH ORGANISATION, TNO, RYSWYK, /HOLLAND. *LOCATE /THIS PAGE CONSISTS OF A NORMAL PS8 HANDLER ENTRY DPL, 0 /ENTRY POINT JMP DISP+1 /BECOMES 0 AFTER THE FIRST TIME RDF /PICK UP THE RETURN FIELD. TAD DPLCIF /+6203 DCA DPLXIT /CREATE RETURN TAD I DPL /FIELD OF BUFFER AND C70 TAD DPLCDF+5 /+6201 DCA DPLCDF CLA CLL CML RAR /AC=4000 TAD I DPL /CHECK FOR READ OR WRITE ISZ DPL SPA SNA /READ IS BAD, NUMB OF PAGES JMP DPLERR /MUST BE >0 AND C7700 /NO. OF PAGES TO WRITE CIA DCA DPLWC /WORDCOUNT =DOUBLE PAGES TAD I DPL /GET BUFFER ADDRESS ISZ DPL /FOR CORRECT RETURN DCA DPLCA /AND USE AS ADDRESS POINTER
/HERE COMES THE PROGRAM MAIN FRAME:UNPACK THE CHARS /FROM THE BUFFER AND DISPLAY THEM. DPLGET, JMS GETBUF /PICK UP A CHAR JMS I DISP /DISPLAY TAD DPLTEM /LEFT 4 M.S.BITS AND C7400 DCA DPLTM JMS GETBUF /NEXT CHARACTER JMS I DISP TAD DPLTEM /4 L.S.BITS AND C7400 CLL RTR RTR TAD DPLTM /+4 M.S.BITS RTR RTR JMS I DISP /AND DISPLAY ISZ DPLWC /WORDCOUNT OVERFLOW? JMP DPLGET /NOT YET DPLERR, ISZ DPL /IN CASE OF ERROR AC<0=HARD ERR. ISZ DPL DPLXIT, HLT /CDF CIF TO RETURN FIELD JMP I DPL /IN THE FOLLOWING LOCATIONS A ONCE ONLY CODE FIXES /THE INDIRECT ADDRESSES USED IN THIS PROGRAM. /FOR RELOCATABILITY. DISP, DPLDIS-DPLTEM-1 /BECOMES POINTER TO DPLDIS DPLTEM, JMS . DPLTM, TAD DISP DPLCA, TAD DPLTEM DPLWC, DCA DISP DCA DPL+1 /CLEAR THE JUMP JMS I DISP /WAIT FOR ERASE THE FIRST TIME GETBUF, JMP DPL+2 /GET A WORD FROM BUF SUBROUTINE DPLCDF, HLT /POINTS TO FIELD OF BUF TAD I DPLCA ISZ DPLCA DCA DPLTEM TAD DPLTEM CDF 0 /HANDLERS ALWAYS IN FIELD 0 KSF /KEY STOPS OUTPUT JMP I GETBUF CLA /LEAVE INTERPRETATION TO THE PROGRAM JMP DPLERR /NORMAL RETURN C70, 70 DPLCIF, CDF CIF 0
/HERE COMES THE LIST WITH DISPLAYWORDS /ONE FOR EACH CHARACTER. THE TWO LS.BITS CODE FOR /THE MASK TO TAKE. LISTC=. 0000 /SPACE 2403 /! 0123 /" 5071 /# 5355 /$ 6145 /% 3171 /& 0023 /' 0110 /( 0204 /) 0374 /* 5001 /+ 6003 /, 1001 /- 2003 /. 0300 // C7700, 7700 /0,ALSO USEFUL CONSTANT 6011 /1 1731 /2 1715 /3 3405 /4 3215 /5 1375 /6 2300 /7 1775 /8 1755 /9 2203 /: 4203 /; 0700 /< 1011 /= 0414 /> 1563 /? 3771 /@ 3625 /A 3175 /B 0371 /C 7602 /D 1371 /E 1361 /F 1762 /G 1465 /H 4311 /I 7202 /J 4060 /K 0071 /L 5104 /M
5014 /N C7400, 7400 /O,ALSO USEFUL CONSTANT 1761 /P 7410 /Q 3436 /R 1355 /S 4301 /T 0475 /U 4300 /V 5210 /W 0314 /X 0304 /Y 2700 /Z 0161 /[ 0014 /BACKSLASH 0605 /] 1467 /^ 0170 /BACK ARROW /THIS IS THE ACTUAL DISPLAY ROUTINE WHICH CHECKS FOR /SPECIAL CHARACTERS, IGNORES NOTHING FOR HONEST DISPLAY /(CONTROL CHARS WILL BE VISUALISED), CREATES AN INTEN- /SIFY WORD AND SEARCHES THE MASKS. IT THEN HAPPENS /TO DISPLAY THE CHARACTER. *LOCATE+200 DPLDIS, 0 /ENTER WITH CHAR IN AC, 8 BIT JMP SAVE1 /FIRST TIME ONLY CODE,BECOMES AND 377 SNA /IGNORE BLANKS JMP I DPLDIS TAD M215 SNA /CR? JMP CR /YES IAC /CTRL FORM? SNA JMP FORM /YES IAC /LINEFEED? IAC /AC CONTAINS 6 BIT CODE +30 SNA JMP I DPLDIS /YES,IGNORE LF TAD BASE1 /CREATE POINTER DCA SAVE1 /SAVE1 POINTS TO DISPLWORD OF THIS TAD I SAVE1 /CHAR. PICK IT UP AND C3 /MASK 2 BIT MASK CODE RTL CLL /MULTIPLY BY 8 RAL TAD BASE2 /CREATE POINTER TO MASKWORD DCA DPL2+4 /POINTS TO MASKWORD TAD I SAVE1 /MAKE 1 BLANK START VECTOR BIT CLL RAR DPL6, DCA SAVE1 /SAVE CONTAINS 11 INTENSIFY BITS AND /ONE GARBAGE BIT
DPL1, TAD M13 /COUNTS 5 AND A HALF MASK WORDS DCA COUNT DPL2, TAD COUNT /WHICH HALF? RAR CLL /ODD=RIGHT;EVEN=LEFT SNL CLA JMP DPL4 /LEFT HALF TAD MASK0 /INDEXED INSTRUCTION ISZ .-1 DPL3, DCA SAVE2 /CONTAINS Y1,X1,Y0,X0 TAD C6064 /INIT VOUTROUTINE DCA VOUT1 TAD SAVE2 /GET DELTA-X AND C7 TAD X JMS VOUT /LOAD X TAD SAVE2 /GET DELTA-Y RAR RTR AND C7 TAD Y JMS VOUT /LOAD Y TAD SAVE1 /GET THE INTENSIFYWORD CLL RAL /SEPARATE NEXT BIT DCA SAVE1 RAL /AC=0 OR 1 (1=INTENS.BIT) TAD C400 /SHORT VECTOR CODE JMS VOUT /DO THE VECTOR ISZ COUNT /ALL ELEVEN VECTORS DONE? JMP DPL2 /NOT YET TAD C7 /YES, MOVE X RIGHT ONE POSITION DPL7, TAD X DCA X JMP I DPLDIS /RETURN DPL4, TAD SAVE2 /FOR LEFT HALF RTR RTR RTR JMP DPL3
/ONCE ONLY CODE FOR RELOCATABILITY SAVE1, TAD DPLDIS SAVE2, TAD BASE1 COUNT, DCA BASE1 X, TAD C377 Y, DCA DPLDIS+1 VOUT, JMP FORM2 /LOAD X,LOAD Y, DO VECTOR VOUT1, 6066 /INDEXED INSTR. SET TO FIRST ISZ .-1 /TIME ENTRY CLA 6071 /WAIT FOR READY FLAG JMP .-1 6072 /CLEAR HARDWARE FLAG IN CASE /OF AN EXIT FROM EDIT JMP I VOUT /SPECIAL CHARACTERS HANDLER CR, TAD Y /PAGE OVERFLOW? TAD TOP /SYMMETRIC PAGE SMA CLA JMP CR2 /NO FORM, 6071 /WAIT FOR FLAG JMP .+2 JMP FORM2+2 KSF /ANY CHARACTER TYPED,STOPS OUTPUT JMP .-4 JMP CR2 FORM2, CLA CLL CML IAC RTL /AC=6=ERASE CODE JMS VOUT /ERASE TAD TOP2 /MOVE Y TO TOP DCA Y CR2, TAD LEFT /MOVE X TO LEFT DCA X TAD M13 /MOVE Y 1 LINE DOWN TAD Y DCA Y JMP DPL6 /DO A DUMMY SPACE BY CLEARING THE /INTENSIFY WORD AND DOING A WILD SET /OF MASKS.
MASK0, 6000 TOP, 0464 3200 3064 3204 0060 M215, -215 BASE1, LISTC-DPLWC-31 /WILL POINT TO LISTC-26 MASK1, 6202 3430 6264 3060 C400, 0400 /ALSO USEFUL CONST. 0034 M13, -13 C7, 7 MASK2, 3402 C6064, 6064 0200 3404 3032 C3, 0003 BASE2, TAD MASK0 LEFT, -400 MASK3, 0213 2202 4242 6264 4440 0062 TOP2, 566 *LOCATE+377 C377, 377 /TRICK
/DECTAPE DEVICE HANDLER SDSS=6771 SDST=6772 SDSQ=6773 SDLC=6774 SDLD=6775 SDRC=6776 SDRD=6777 *4000 CM200, 7600 /CLA AND CONST JMS I PAG0AD DCA SWITCH JMP SWITCH BUFF, 0 PGCT, 0 DATREG, 0 C1000, 1000 DTA0, 0 CLL CLA JMP DTA1X UNIT, 0 DTA1, 0 CLA CLL CML TAD DTA1 DCA DTA0 DTA1X, RAR DCA UNIT RDF TAD C6203 DCA LEAVE TAD I DTA0 DCA DATREG TAD DATREG CLL RAL MNWCNT, AND CM200 DCA PGCT TAD DATREG C374, AND DTC70 TAD C6203 DCA WCOUNT ISZ DTA0 TAD I DTA0 DCA BUFF ISZ DTA0 TAD I DTA0 CLL RAL DCA DTA1 ISZ DTA0 C6203, CDF CIF SWITCH, JMP DOT CLA CLL CMA RTL DCA RELOC TAD UNIT DCA I UNITP JMS I UNITP-1 JMP .-1 TAD DATREG CLL RAR JMP GO SDST SZA CLA JMP TRY3 TAD PGCT TAD CM200 SNA JMP EXIT DCA PGCT ISZ DTA1 TAD BUFF TAD MNWCNT DCA BUFF CLL CML GO, CLA CML RTR TAD C1000 TAD UNIT SDLC JMS I CRDQUD JMS I CRDQUD M20, CLA SZA SNL SMA SRCH, SDSS JMP SRCH SDRC CLL RTL AND C374 TAD M110 SNA JMP ENDZ TAD M20 SZA CLA JMP SRCH SDRD SZL TAD DTC3 CMA TAD DTA1 CMA SNA JMP FOUND M110, CLA SNA SZL JMP SRCH ENDZ, SDRC CLL RTL SZL CLA JMP GO TRY3, ISZ RELOC JMP GO CLL CLA JMP FATAL EXIT, ISZ DTA0 CLL CML FATAL, TAD UNIT SDLC CLA CML RAR DTA2, DTA3, DTA4, DTA5, DTA6, DTA7, LEAVE, HLT JMP I DTA0 DOT, JMS DOT RELOC, TAD CRDQUD SPA JMP CM200 TAD DOT DCA CRDQUD ISZ .-1 ISZ RELOC JMP RELOC CRDQUD, 131 PAG0AD, 166 204 UNITP, 172 FOUND, SZL CLA JMP GO TAD DATREG CLL RAL CLA DTC70, 70 DTC3, 3 TAD BUFF WCOUNT, HLT
PAGE2, CIF DCA XBUF RAR DCA XUNIT TAD C7600 DCA WORDS REVGRD, SDSS JMP REVGRD SDRC AND K77 TAD CM32 SZA CLA JMP REVGRD TAD XUNIT K7700, SMA CLA JMP READ DTWRIT, SDRC AND C300 CLL SZA CLA JMP I CFATAL JMS RDQUAD C7600, 7600 /CLA AND CONST TAD C1400 TAD XUNITA SDLC CMA CLA JMS WRQUAD CMA CLA DCA CHKSUM WRLP, TAD I XBUF JMS WRQUAD ISZ XBUF K77, 77 ISZ WORDS JMP WRLP JMS WRQUAD JMS GETCHK JMS WRQUAD JMS WRQUAD JMP I CRWCOM READ, JMS RDQUAD JMS RDQUAD JMS RDQUAD AND K77 TAD K7700 DCA CHKSUM RDLP, JMS RDQUAD JMS EQUFUN DCA I XBUF ISZ XBUF C300, 300 ISZ WORDS JMP RDLP JMS RDQUAD JMS EQUFUN JMS RDQUAD AND K7700 JMS EQUFUN JMS GETCHK JMP I CRWCOM WRQUAD, 0 JMS EQUFUN SDSQ JMP .-1 SDLD CLA JMP I WRQUAD RDQUAD, 0 SDSQ JMP .-1 SDRD JMP I RDQUAD EQUFUN, 0 CMA DCA EQUTMP TAD EQUTMP AND CHKSUM CIA CLL RAL TAD EQUTMP TAD CHKSUM DCA CHKSUM TAD EQUTMP CMA JMP I EQUFUN GETCHK, 0 CLA TAD CHKSUM CLL CMA RTL RTL RTL JMS EQUFUN CLL CLA CML TAD CHKSUM AND K7700 JMP I GETCHK XUNIT, 0 CHKSUM, TAD CFATAL WORDS, SNA EQUTMP, JMP I XUNIT XUNITA, TAD XUNIT DCA CFATAL ISZ .-1 ISZ CHKSUM JMP CHKSUM CFATAL, 135 CRWCOM, 60 XBUF, 0 CM32, 7746 C1400, 1400 FATALA, 0 TAD XUNITA SDLC SDRC AND C100 SNA CLA ISZ FATALA KSF JMP I FATALA KRB TAD C100+1 SZA CLA JMP I FATALA JMP I C7600 C100, 100 7575 0
FIELD 0 *5600 UNITXQ, NULL, 0 JMP NULLDO BLOCKZ, BLOCKQ XBUFFA, 0 TRYCNQ, 0 PGCTQ, 0 XFUNCQ, 0 C6203Q, 6203 DTA0Q, 0 CLL CLA JMP DTA1XQ N3700Q, 3700 DTA1Q, 0 CLA CLL CML TAD DTA1Q DCA DTA0Q DTA1XQ, RAR DCA UNITXQ CLL CLA CMA RTL DCA TRYCNQ RDF TAD C6203Q DCA LEAVEQ TAD I DTA0Q DCA XFUNCQ ISZ DTA0Q TAD I DTA0Q DCA XBUFFA ISZ DTA0Q TAD I DTA0Q CLL RAL CDF 0 DCA I BLOCKZ ISZ DTA0Q TAD XFUNCQ AND N3700Q BSW CMA CLL IAC DCA PGCTQ GOREVQ, SDRC CMA RTL GOQ, CLA RTR C1000Q, TAD C1000Q TAD UNITXQ SDLC CLA KSF JMP TPCONT KRS TAD MDT203 SZA CLA JMP TPCONT TAD UNITXQ SDLC JMP I N7600Q TPCONT, CLA CLL CML RAR TAD XFUNCQ CDF CIF 20 AND C70Q TAD C6201Q DCA I C7640Q /XFIELD TAD XBUFFQ DCA I N7600Q /XBUFF RAL TAD UNITXQ C6201Q, CDF 0 JMS I PAGE2Z JMP RWCOMQ TRY3Q, ISZ TRYCNQ JMP GOREVQ CLA CLL CML JMP FATALQ RWCOMQ, SDST C7640Q, SZA CLA JMP TRY3Q TAD C200Q TAD XBUFFA DCA XBUFFA ISZ I BLOCKZ GOAQ, ISZ PGCTQ JMP GOQ EXITQ, ISZ DTA0Q CLL N7600Q, 7600 FATALQ, TAD UNITXQ SDLC CLA RAR LEAVEQ, HLT JMP I DTA0Q C70Q, 70 C200Q, 200 PAGE2Z, PAGE2Q MDT203, -203 NULLDO, CLA RDF TAD C6203Q DCA NULOUT TAD I NULL DCA NULFNC ISZ NULL TAD I NULL DCA NULADD ISZ NULL TAD NULFNC SPA JMP NULOUT AND C70Q TAD C6201Q DCA .+1 HLT TAD NULFNC AND N3700Q CLL RAL CIA DCA NULCNT NULLOP, DCA I NULADD ISZ NULADD ISZ NULCNT JMP NULLOP NULOUT, HLT CLA CLL ISZ NULL ISZ NULL JMP I NULL NULFNC, 0 NULADD, 0 NULCNT, 0 NOPUNCH *7740 BLOCKQ, 0 ENPUNCH
FIELD 2 *7600 XBUFFQ, 0 UNITQ, WRQUAQ, 0 JMS EQUFUQ SDSQ JMP .-1 SDLD CLA JMP I WRQUAQ PAGE2Q, 0 DCA UNITQ JMS RDQUAQ JMS RDQUAQ M20Q, -20 SRCHQ, SDSS JMP SRCHQ ENDZ2Q, SDRC CLL RTL AND C374Q TAD M110Q SNA JMP ENDZQ TAD M20Q SZA CLA JMP SRCHQ SDRD SZL TAD C3Q CMA TAD I C7740Q CMA CML SZA JMP NTFUNQ FOUNDQ, WORDSQ, XFIELQ, HLT SNL CLA JMP RGOQ REVGRQ, SDSS JMP REVGRQ SDRC C300Q, AND K77Q TAD CM32Q SZA CLA JMP REVGRQ TAD C7600Q DCA WORDSQ TAD UNITQ CLL RTR K7700Q, SMA CLA JMP READQ WRITEQ, SDRC AND C300Q C7740Q, SZA SMA CLA /SMA FOR CONSTQ JMP TRYREQ JMS RDQUAQ C7600Q, 7600 TAD C1600Q TAD UNITQ SDLC CMA CLA JMS WRQUAQ CMA CLA DCA CHKSUQ C1600Q, WRLPQ, TAD I XBUFFQ JMS WRQUAQ ISZ XBUFFQ K77Q, 77 ISZ WORDSQ JMP WRLPQ JMS WRQUAQ JMS GETCHQ JMS WRQUAQ JMS WRQUAQ JMP WRRETQ NTFUNQ, M110Q, CLA SNA SZL JMP RGOQ JMP SRCHQ ENDZQ, SNL CLA RGOQ, ISZ PAGE2Q TRYREQ, ISZ PAGE2Q WRRETQ, CDF CIF 0 JMP I PAGE2Q GETCHQ, 0 TAD CHKSUQ CMA BSW CLL JMS EQUFUQ CLL CLA TAD CHKSUQ AND K7700Q JMP I GETCHQ EQUTMQ, RDQUAQ, 0 SDSQ JMP .-1 SDRD JMP I RDQUAQ EQUFUQ, 0 DCA EQUTMQ TAD EQUTMQ C374Q, AND CHKSUQ CIA CLL RAL TAD EQUTMQ TAD CHKSUQ CMA DCA CHKSUQ TAD EQUTMQ JMP I EQUFUQ READQ, JMS RDQUAQ JMS RDQUAQ JMS RDQUAQ AND K77Q TAD K7700Q DCA CHKSUQ RDLPQ, JMS RDQUAQ JMS EQUFUQ DCA I XBUFFQ ISZ XBUFFQ C3Q, 3 ISZ WORDSQ JMP RDLPQ JMS RDQUAQ JMS EQUFUQ RDLP2Q, JMS RDQUAQ AND K7700Q JMS EQUFUQ CLA SKP CHKSUQ, 0 JMS GETCHQ JMP WRRETQ CM32Q, -32 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$



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