File LAPM

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

/
/MERCK DISC MONITOR, MODIFIED TO PROVIDE
/SUPPORT FOR LAP-6 ASSEMBLER.
/
/W.S.STEWART, MERCK AND CO.,INC., 10/9/70
/
/
/SOME COMBINED MICROINSTRUCTIONS
/
	CDF=6201	/CHANGE TO DF 0
	CLC=7240	/LOAD AC WITH 7777
	SP1=7324	/SET TO PLUS 1
	SP2=7326	/SET TO PLUS 2
	SM1=7240	/SET TO MINUS 1
	SM2=7344	/SET TO MINUS 2
	SM3=7346	/SET TO MINUS 3
/
/SOME LINC IOTS
/
	ICON=6141	/COND LINC AS RE AC
	ILES=6145	/LS TO AC
	ICS1=6151	/LINC CONSOLE (1) TO AC
	ICS2=6153	/LINC CONSOLE (2) TO AC
	IMBS=6155	/LINC MB SEL TO AC
	INTS=6147	/LINC INTERRUPT STATUS TO AC
	IBAC=6143	/LINC B TO AC
	IAAC=6171	/LINC A TO B & AC
	ISSP=6165	/CLEAR L-S, LP TO LB, AC TO P
	IACB=6161	/AC TO B
	IACS=6163	/AC TO B & S
	IACA=6167	/AC TO B & A
	IACF=6175	/AC TO INDICATORS, 0 TO B
	IZSA=6173	/0 TO B, Z/2 TO AC
/
/OTHER IOTS
/
	CLON=6132	/CLOCK ON
	CLOF=6134	/CLOCK OFF
	CLSF=6131	/CLOCK SKIP ON FLAG
	LSD=6661	/LPT SKIP DONE FLAG
	LCF=6652	/LPT CLEAR FLAGS
	LPR=6664	/PRINT LINE
	LLB=6654	/LOAD CHARACTER
	K2SF=6401	
	K2RB=6406
	T2SF=6411
	T2XF=6412
	T2LS=6416
	CCLR=6544	/CLEAR COULTER FLAG
/
/OVERLAY ADDRESSES
/
	SUBM=1400
	TIOM=2000
	CONM=2400
	TAPEM=3000
	SWAPA=1400
/
/JOBS TABLE
/
	HW=1		/JOB HALTED PDP IN WAIT
	DW=2		/DISC OPERATION
	TW=3		/PRINTER ONE OPERATION
	KW=4		/KBD STRUCK
	LW=5		/LINE PRINTER OPERATION
	TPW=6		/TAPE OPERATION
	T2W=7		/PRINTER 2 OPERATION
/
/START OF PROGRAM
/
/						SEGMENT 1
/						-----------------

*1 JMP I .+1 /START OF INTERRUPT CHAIN INT DFSC /THIS ROUTINE IS USED JMP .-1 /ONLY DURING LOAD JMP .+3 INIT 4103 DFSE JMP I 7 DCMA JMP I 6 TEMP=3 TEMP2=4 SV20=5 SV21=6 MEM=7 TEMP10=10 TEMP11=11 TEMP12=12 MEMT=13 CADR=13 / /CONSTANTS / *14 C7, 7 C10, 10 C12, 12 C20, 20 C70, 70 / /POINTER AND FLAG AREA / LNCA, 0 /LINC AC CONTENTS LNCP, 0 /LINC P COUNTER CONTENTS LINS, 0 /LINC B REGISTER CONTENTS JOBS, 0 /WHAT TYPE OF JOB WAS RUNNING JOBPC, 0 /RETURN ADDRESS FROM JOBS INAC, 0 /PDP-8 AC CONTENTS INL, 0 /PDP-8 LINK CONTENTS INTSAV, 0 /LINC INTERRUPT REGISTER CONTENTS MEMB, 0 /LINC MEMORY BANK SETTINGS / SEGMENT 2 / -------------------
LNCZ, 0 /LINC Z REGISTER CONTENTS FFIM, 0 /LINC INTERRUPT FLIP FLOP SETTINGS SLNCP, 0 /SAVE LINC P FLAG - 7777 IF SET DADRM, 17 /NUMBER OF DISC TRACKS HANDLED LF, 0 /LINE FEED FLAG ICHR, BUFFER /BUFFER INPUT POINTER CASE, 0 TFLG, 0 /TELEPRINTER ONE FLAG T2FLG, 0 /TELEPRINTER TWO FLAG TTACT, 0 /INDICATES WHICH TTY IS ACTIVE CEXT, 0 /CORE EXTENSION WORD DEXT, 0 /DISC EXTENSION WORD DADR, 0 /DISK ADDRESS TIFLG, 0 /TAPE INTERRUPT FLAG - 7777 INT. RFLG, 0 /READER FLAG PFLG, 0 /PRINTER FLAG WCGF, 0 LNCODE, 0 /TTY INPUT CONVERTED TO LINC CODE ACONT, 0 /AREA CONTENTS (MODULE NUMBER) IMOD, 0 /INPUT MODE, 0=LINC ELSE ASCII OMOD, 0 /OUTPUT MODE, 0=TTY ELSE LPT IOMOD, 0 /I/O MODE INDICATOR ODEV, 0 /OUTPUT DEVICE 1-6 IDEV, 0 /INPUT DEVICE 1-6 SW1, 0 /SWITCH REGISTER ONE CONTENTS SW2, 0 /SWITCH REGISTER TWO CONTENTS DOSWT, 0 /DO SWITCH FLAG LFLG, 0 LCNT, 0 CFLG, BUFFER /TTY BUFFER OUTPUT POINTER SBN, 0 /SAVE QN BN WORD FOR DISK, TAPE / SEGMENT 3 / ----------------
BN, 0 /BLOCK # QN, 0 /QUARTER # QCT, 0 /QUARTER COUNT MTPINS, 0 /MAG TAPE INSTRUCTION FORFLG, 0 /FOREGROUND ACTIVE FLAG INEXT, 0 / /NORMAL RETURN FROM AN INTERRUPT / RET, CLA CLL TAD INTSAV /WAS LINC INTERRUPTED? AND C10 SNA CLA JMP RSB /NO, START PDP-8 / /SET LINC AC AND GO / GO, TAD LNCA /GET LINC AC CONTENTS IACA /RESTORE CLA DCA JOBS /PUT 0 IN JOBS TAD LNCP /GET LINC P CONTENTS ISSP /RESTORE GO1, CLA TAD C12 ICON /START LINC ION /AND ENABLE INTERRUPTS / /CONTROL IS TRANSFERRED TO LINC AT THIS POINT. A HALT /WILL TRANSFER CONTROL BACK TO PDP-8 AT THE NEXT /INSTRUCTION. / CLA CLL /RETURN HERE ON LINC HALT IOF /DISABLE INTERRUPTS SAVE /LINC REGISTER CONTENTS HALT, SP1 DCA JOBS /ONE TO JOBS JMS I .+2 /WAIT FOR LINC INTERRUPT JMP GO WAIT / /RESTART PDP-8 AFTER INTERRUPT / RSB, TAD INL /RESTORE LINK RAL TAD INAC /RESTORE AC ION /ENABLE ITERRUPT JMP I 0 /CONTINUE / /LINC CONTROL SUBROUTINE / ICA=JMS . ICAE, 0 /SUBROUTINE ENTRANCE CLA TAD I ICAE /GET ARGUMENT ICON /ISSUE COMMAND CLA ISZ ICAE /SKIP ARGUMENT JMP I ICAE /AND CONTINUE / /STORE INTO LINC MEMORY / STORE=JMS . 0 /SUBROUTINE ENTRANCE SETFLD /SET PDP-8 FIELD DCA I MEMT /STORE WORD CCDF, CDF ISZ MEM /INDEX LINC MEMORY LOCATION JMP I .-5 /CONTINUE / /FETCH A WORD FROM LINC MEMORY / FETCH=JMS . 0 /SUBROUTINE ENTRANCE DCA MEM /DEPOSIT LINC ADDRESS SETFLD /SET PDP-8 FIELD TAD I MEMT /GET WORD CDF JMP I .-5 /CONTINUE / /SAVE LINC REGISTER CONTENTS / SAVE=JMS . SVLNC, 0 /SUBROUTINE ENTRANCE IBAC /GET LINC B REGISTER DCA LINS /SAVE IT IAAC /GET LINC AC DCA LNCA /SAVE IT ISSP /GET LINC P REGISTER IBAC ISSP DCA LNCP /SAVE IT JMP I SVLNC /CONTINUE / /SKIP IF I BIT NOT SET IN LINC INSTRUCTION / SKWB=JMS . 0 /SUBROUTINE ENTRANCE TAD LINS /GET INSTRUCTION AND C20 /LOOK AT I BIT SNA CLA /IS IT SET ISZ .-4 /NO, SKIP JMP I .-5 /CONTINUE IN EITHER CASE / /SET THE PDP-8 FIELD FOR ACCESSING LINC MEMORY / SETFLD=JMS I . STFLD / /END OF PAGE ZERO / / SEGMENT 4 / ------------------
*200 / /INITIALIZE THE MONITOR / INIT, DCA ACONT /CLEAR CURRENT MODULE CONTENTS JMP INITM /GO TO INITIALIZATION ROUTINE / /START OF INTERRUPT CHAIN - SAVE PDP-8 REGISTERS / INT, DCA INAC /SAVE PDP-8 AC RAR DCA INL /SAVE PDP-8 LINK ICS1 /GET SWITCH REGISTER ONE SMA CLA /IS STOP SWITCH PRESSED JMP STOP /YES, GO TO STOP SWITCH ROUTINE / /NOTE: TO DISABLE LINC SWITCHES, THE ABOVE INSTRUCTION / MUST BE REPLACED WITH A NOP. / INTS /GET LINC INTERRUPT STATUS DCA INTSAV /AND SAVE ICA /CLEAR LINC INTERRUPTS 7 / /CHECK ALL LINC INTERRUPTS / TAD INTSAV /GET INTERRUPT STATUS SPA CLA /IS IT TAPE INTERRUPT JMP TAPEI /YES ICS1 /GET SWITCH REGISTER ONE DCA SW1 /AND SAVE ICS2 /GET SWITCH REGISTER TWO DCA SW2 /AND SAVE IMBS /GET MEMORY BANK POSITION DCA MEMB /AND SAVE TAD INTSAV /GET INTERRUPT STATUS AND C10 /CHECK FOR RUN INTERRUPT FF SZA CLA /WAS IT SET SAVE /SAVE ALL LINC REGISTERS / /CHECK IF OPR, EXEC OR MTP INSTRUCTION / TAD INTSAV /GET INTERRUPT STATUS RTL SMA /WAS IT EXEC CLASS INTERRUPT? JMP INT3 /NO RTL /YES RTL SPA CLA /WAS IT OPERATE JMP OPRIN /YES SNL /WAS IT EXEC? JMP RET /YES, IGNORE TOGGLE, JMP BYPASS /MUST BE MAG TAPE / /CHECK IF IT IS CONSOLE INTERRUPT / INT3, RTR AND (2600 SZA /ANY OF 3 CONSOLE INTERRUPTS JMP CONSOL /YES / /NOTE: THE ABOVE INSTRUCTION SHOULD BE REPLACED WITH A / JMP RET INSTRUCTION TO DISABLE LINC SWITCHES. / JMP K1SER /CONTINUE INTERRUPT CHAIN / /SEE IF WE WILL HONOR TAPE INTERRUPT / TAPEI, TAD ACONT /GET SWAP AREA CONTENTS TAD CTAPEM /IS TAPE MODULE IN MEMORY? SNA CLA JMP I TAPE /YES JMP RET /NO - WE WILL NOT PROCESS TAPE, INIT /SET RET ADDR BY TP WAIT PRG. / /IT IS OPERATE INSTRUCTION - DECODE / OPRIN, TAD LINS /GET THE INSTRUCTION AND (17 /LOOK AT LAST FOUR BITS TAD (JMP I OPRTAB DCA .+1 0 /JMP I OPRTAB + XX GOES HERE OPRTAB, RET /OPR 00 - UNASSIGNED RET /OPR 01 - UNASSIGNED RET /OPR 02 - UNASSIGNED RET /OPR 03 - UNASSIGNED RET /OPR 04 - UNASSIGNED KREL /OPR 05 - RELEASE TTY SELECTION RET /OPR 06 - UNASSIGNED STIO /OPR 07 - SET I/O MODE PATCH /OPR 10 - DISC OPERATION SET01 /OPR 11 - SET UP FOR DISC INTERPRET SET02 /OPR 12 - REVOKE DISC INTERPRET RET /OPR 13 - UNASSIGNED CTYP /OPR 14 - TYPE COMMAND CTIO /OPR 15 - KEYBOARD READ COMMAND RSW /OPR 16 - READ RIGHT SWITCHES LSW /OPR 17 - READ LEFT SWITCHES / SEGMENT 5 / --------------------
/ /READ CONSOLE SWITCHES / LSW, ILES /READ LEFT SWITCHES JMP DOGOA /CONTINUE RSW, LAS /READ RIGHT SWITCHES DOGOA, DCA LNCA /PUT IN LINC AC / /CHECK DO SWITCH THINGS WHENEVER WE RETURN CONTROL TO LINC / DOGO, TAD DOSWT /GET DO SWITCH INDICATOR SPA CLA /IS IT SET JMP DOGOB /NO TAD (400 /YES, SET UP FOR INSTR BY INSTR JMP CONSOL /AND JUMP TO CONSOLE MODULE DOGOB, TAD INTSAV /WAS INST X INST FLOP SET AND (400 SZA JMP CONSOL /YES JMP GO /NO, START LINC / /SEE IF TAPE INSTRUCTION SHOULD REFERENCE DISC / DSCTST, JMS GETP1 /GET SECOND WORD OF INSTR TAD LINS AND C10 /IS IT SECOND TAPE SZA CLA JMP GOTAPE /YES, IGNORE TAD SBN AND (777 /GET BLOCK NUMBER TAD (-425 /SEE IF 425 OR LESS SMA SZA JMP GOTAPE /NO, FORGET TAD (425-300/SEE IF 300 OR MORE SPA JMP GOTAPE /NO, FORGET JMP PART2 /YES, IT IS WITHIN RANGE / /STOP SWITCH WAS PRESSED / STOP, SAVE /SAVE LINC REGISTERS JMP STOPM /AND CALL OVERLAY / /CALL TAPE MODULE / BYPASS, JMS GETP1 GOTAPE, JMS MCALL CTAPEM, TAPEM / /SET UP FOR DISC SIMULATION / SET01, TAD (JMP DSCTST JMP .+2 / /REVOKE DISC SIMULATION / SET02, TAD (JMP BYPASS DCA TOGGLE JMP DOGO / /END OF PAGE ONE / / SEGMENT 6 / ---------------------
*400 / /CONTINUE INTERRUPT CHAIN - CHECK KEYBOARD ONE / K1SER, KSF JMP K2SER /NO KRB JMS KSER 1 / /CHECK KEYBOARD NUMBER TWO / K2SER, K2SF JMP TSER /NOPE! K2RB JMS KSER 2 KSER, 0 DCA TEMP2 TAD TEMP2 TAD (-201 /CTRL-A ABSOLUTE CONTROL SNA CLA JMP KINIT TAD TTACT /ANY TTY ACTIVE FOR I/P? SNA JMP KINIT /NO, MAKE THIS ONE CMA IAC TAD I KSER /IS THIS FROM ACTIVE TTY? SZA CLA JMP RET /NO - FLUSH THE CHARACTER! KSER1, TAD ICHR /GET POINTER TAD (-1160 /SEE IF WE HAVE ROOM SNA CLA JMP RET /NO ROOM IN BUFFER, INGORE TAD TEMP2 /GET CHAR DCA I ICHR /PUT IN BUFFER ISZ ICHR TAD FFIM AND (7757 TAD C20 IACF DCA FFIM /KST SET JMS UNWAIT KW / /CHECK PRINTER NUMBER ONE / TSER, TSF JMP T2SER /NOPE TCF JMS TLF /NOP TO ELIMINATE ECHO TLS /CLC TO ELIMINATE ECHO DCA TFLG JMS UNWAIT TW / /CHECK PRINTER NUMBER TWO / T2SER, T2SF JMP SSER /NOPE T2XF JMS TLF /NOP TO ELIMINATE ECHO T2LS /CLC TO ELIMINATE ECHO DCA T2FLG JMS UNWAIT T2W TLF, 0 TAD I TLF DCA TLF1 ISZ TLF TAD LF SNA JMP TLF2 TLF1, 0 CLA DCA LF JMP RET TLF2, CLC JMP I TLF / SEGMENT 7 / ------------------
/ /CHECK CLOCK FLAG / SSER, CLSF JMP RET /NO, IGNORE CLOF /TURN IT OFF JMP RET /AND EXIT / /PART TWO OF TAPE-DISC SIMULATOR / PART2, TAD C20 /START WITH DISC BLOCK 20 DCA LNCA /HOLDS BLK NBR ON DISC INSTRS TAD LINS /GET INSTR AND C7 /LOOK IF IT IS MTB OR CHK TAD (-3 /IS IT MTB SNA JMP .+4 /YES, IGNORE TAD (-4 SZA CLA /IS IT CHK JMP .+4 /NO CLC DCA LNCA /7777 TO LINC AC JMP DOGO /AND GO TAD LINS /SEE IF WE SHOULD STOP TAPE AND C20 /LOOK AT I BIT SNA CLA /IS IT SET ICON /NO, STOP TAPE TAD LINS /SET UP I BIT IF WRITE RTL DCA LINS TAD LINS /SEE IF GROUP READ OR WRITE AND (4 SZA CLA JMP DSC /SET UP, CONTINUE TAD SBN /NOT GROUP - SET UP RTL RTL AND C7 DCA SBN /SBN NOW SET UP FOR RIGHT Q AND BLK JMP DSC /GO DO DISC OPERATION / /GET P+1 FOR DISC / PATCH, JMS GETP1 JMP DSC / /TIMER FOR TAPE SEARCHES / TIMER, IAC SZA JMP .-2 ISZ TPWC JMP TIMER IOF SM2 TAD LNCP DCA LNCP JMP GO TPWC, 0 / /END OF PAGE TWO / / SEGMENT 8 / ---------------------
*600 / /SET PDP-8 DATA FIELD TO PERMIT ACCESS TO THE LINC /WORD WHOSE LINC ADDRESS IS IN "MEM". / STFLD, 0 DCA TEMP /SAVE AC TAD MEM /GET LINC ADDRESS CLL RAL /SEE IF WE ARE UMB OR LMB CLL RAL DCA MEMT /SAVE TAD MEMB /GET CURRENT MEMORY BANKS SNL /LINC=1 IF QN >3 JMP .+4 /WE ARE USING LMB RTR /ROTATE FOUR RIGHT RTR SKP RAL DCA STF1 /SAVE RESULT TAD STF1 /SEE IF WE ARE IN UPPER RTR /HALF OF CORE BANK AND (1 /MASK THIS BIT TAD MEMT /ADD IN PREVIOUS ADDRESS RTR /RESTORE CORRECT POSITION TAD (-1 /MUST BE ADDR -1 FOR AUTOINDEX REG DCA MEMT /PUT IN AUTOINDEX REG TAD STF1 /GET BANK INDICATOR AND C70 /MASK ALL BELOW BANK 4 TAD CCDF /ADD CDF INSTR DCA STF1 /RESULT IS CDF X TAD TEMP /RESTORE ACCUMULATOR STF1, 0 /DO CDF JMP I STFLD /EXIT / /CALL A NON-RESIDENT MONITOR OVERLAY MODULE /IF IT IS NOT ALREADY IN CORE. / MCALL, 0 /SUBROUTINE ENTRANCE DCA TEMP /SAVE AC TEST, TAD ACONT /CURRENT MODULE NBR (NEG) TAD I MCALL /MODULE NBR SNA CLA /IF = THEN GO THERE JMP MCALX TAD (SWAPA-1/1377 DCA CADR /1377 TO CADR DCA DEXT /CLEAR DEXT DCA CEXT /CLEAR CEXT TAD I MCALL /TAKE MODULE # DCA DADR /PUT IT IN DADR JMS DREAD /GO GET MODULE TAD SWAPA /TAKE MODULE # NEG. DCA ACONT /PUT IT IN ACONT JMP TEST /CHECK FOR GOOD READ MCALX, TAD TEMP JMP SWAPA+1 /LOC 1 IN TRANSIENT AREA / /GET THE CONTENTS OF LINC P+1 / GETP1, 0 TAD LNCP /GET P COUNTER ISZ LNCP /NOW INCREMENT COUNT FETCH /THE WORD DCA SBN /PUT IN LOCATION "SBN" JMP I GETP1 /EXIT / SEGMENT 9 / -------------------
/ /RESTORE LINC LOCATIONS 20 AND 21 /IF DO SWITCH HAS BEEN USED. / RS20, 0 TAD DOSWT /GET DO SWITCH FLAG SZA CLA /IS IT SET JMP I RS20 /NO, EXIT RS20I, 0 /BECOMES CDF TAD SV20 /HOLDS PREVIOUS CONTENTS OF 20 DCA I RS20F /RESTORES 20 & 21 INTO PROPER BANKS ISZ RS20F TAD SV21 /HOLDS PREVIOUS CONTENTS OF 21 DCA I RS20F CDF ISZ DOSWT /INSURE ONLY 1 RESTORE JMP I RS20 /EXIT RS20F, 0 / /SET MEMORY FOR QUARTER NUMBER IN "QN" / STMEM, 0 TAD QN /GET QUARTER NUMBER RTR /MAKE PARTIAL PDP-8 ADDRESS RTR RAR AND (3400 /CLEAR EXTRANEOUS BITS DCA MEM /SAVE RESULT SETFLD /MAKE PDP-8 ADDRESS AND CDF CDF /RESTORE CDF 0 TAD STF1 /GET NEW CDF JMP I STMEM /EXIT / /PUT PROGRAM INTO WAIT STATUS / WAIT, 0 TAD WAIT /GET RETURN P COUNTER WAITL, DCA JOBPC /SET UP TO RETURN ION /WAIT FOR SOMETHING TO HAPPEN TAD JOBS /PUT JOB IN AC JMP . /WAIT FOR INTERRUPT / /SEE IF THE INTERRUPT SHOULD TAKE US /OUT OF WAIT STATUS. / UNWAIT, 0 CLA TAD I UNWAIT /GET UNWAIT ARGUMENT CMA IAC TAD JOBS /COMPARE IT WITH CURRENT JOB SZA CLA /IS IT THE SAME JMP RET /NO, IGNORE DCA JOBS /YES, CLEAR JOBS JMP I JOBPC /AND GO TO JOB EXIT / /MODULE CALLERS. THESE FURNISH THE CORRECT /INPUT TO THE MCALL ROUTINE FOR THE APPROPRIATE MODULE. / CONSOL, JMS MCALL /CALL CONSOLE MODULE CONM CTYP, SP1 /CALL TYPE CTIO, JMS MCALL /CALL TTY MODULE TIOM CCRET, IAC /CONTROL C RETURN CONC, IAC /CONTROL C KREL, IAC /KEYBOARD RELEASE KINIT, IAC /KEYBOARD SELECT STIO, IAC /SETUP I-O MODE STOPM, IAC /STOP SWITCH PRESSED INITM, JMS MCALL /INITIALIZE, CALL SETUP MODULE SUBM / /SET UP FOR A GROUP TRANSFER / SETG, 0 TAD SBN /GET SECOND INSTR WORD RTL RTL AND C7 /GET QUARTER COUNT CMA DCA QCT /ONES COMP TO QCT TAD SBN /GET WORD AGAIN AND C7 /GET STARTING QUARTER NBR DCA QN /PUT IN QN JMP I SETG /AND EXIT / /END OF PAGE THREE / / SEGMENT 10 / ---------------------
*1000 / /EXECUTE ONE INSTRUCTION IN LINC MODE / XCT1, 0 TAD C20 /WE WILL USE LOC 20 OF THIS BANK DCA MEM /TO STORE INSTR TO BE EXECUTED TAD I XCT1 /GET INSTR ISZ XCT1 STORE /PUT IN LOC 20 TAD C20 /SET LINC P TO 20 ISSP JMS XCT /EXECUTE THE INSTRUCTION JMP I XCT1 /CONTINUE / /EXECUTE ONE INSTRUCTION PER LINC P REGISTER / XCT, 0 CLA TAD (400 IACF /SET THE INST X INST FLOP TAD C12 ICON /START THE LINC - IT STOPS AFTER ONE ICA /INSTR BECAUSE OF INST X INST FLOP 7 /CLEAR ALL INTERRUPTS TAD FFIM /GET PREVIOUS FLOP CONDITIONS IACF /AND RESTORE THEM CLA IMBS /GET NEW MEMORY BANK SETTINGS DCA MEMB /SAVE THEM JMP I XCT /CONTINUE BUFFER, 0 /START OF TTY BUFFER AREA / /END OF PAGE FOUR / / SEGMENT 11 / -------------------
*1200 / /DISC READ ENTRANCE. / DREAD, 0 JMS DISC DMAR JMS CROCK /HANDLE LAST PAGE C1377, 1377 7377 JMP I DREAD / /DISC WRITE ENTRANCE. / DWRITE, 0 JMS CROCK 7377 1377 JMS DISC DMAW JMP I DWRITE / /DISC READING AND WRITING SUBROUTINE. HANDLES EITHER A /DF32 OR A RF08 DISC. / DISC, 0 TAD I DISC DCA DIC1 ISZ DISC DISC1, TAD I L7750 DCA TEMP10 TAD I L7751 DCA TEMP11 TAD CADR /GET CORE ADDR TAD (-7377 /TEST FOR PAGE SZA /CONTAINING 7750, 7751 TAD (7377-1377 /& CHANGE CADR TO 1377 TAD C1377 DCA I L7751 TAD C7400 DCA I L7750 CLC CLL /TEST FOR DF32 OR RF08 DEAL /CLEARS AC IF RF08 RAL /INDICATOR IN AC 0 & L DCA TEMP12 TAD DEXT SNL 6643 /RF08, LOAD DISK EXT CLL RTL /IF DF32 DEXT IN AC - IF RF08 AC=0 RTL RTL TAD CEXT DEAL CLA TAD CEXT /TEST CORE EXT BITS SNA CLA JMP .+3 /FIELD 0 CUR 7751 OK TAD CADR /NOT 0, USE ORIG CADR DCA I L7751 TAD DADR DIC1, 0 /BECOMES RD OR WRT COMMAND DFSC JMP .-1 /TRY AGAIN TAD TEMP10 DCA I L7750 TAD TEMP11 DCA I L7751 TAD TEMP12 DFSE /SKP IF ERROR RFO8, NO ERROR DF32 CMA /SET AC - IF RF08 AND NO ERROR SMA CLA /SKIP IF NO ERRORS (AC-) JMP DISC1 /ERRORS, TRY AGAIN DCEA /CLEAR EXTENDED ADDR REGS DCMA /CLEAR MAR AND FLAGS JMP I DISC /RETURN FROM SUBROUTINE / SEGMENT 12 / ------------------
/ /HANDLE THE READ OR WRITE IF WE ARE TRYING TO GET /TO OR FROM Q3 BANK 3 OF LINC MEMORY. CAN'T GO DIRECT /AS OUR CONTROL WORDS (7750 & 7751) ARE THERE. / CROCK, 0 TAD I CROCK DCA 10 ISZ CROCK TAD I CROCK DCA 11 ISZ CROCK TAD CEXT TAD CADR TAD (-7377 SZA CLA JMP I CROCK DCA ACONT /USES TRANSIENT AREA FOR BFFR TAD C7400 DCA 12 TAD I 10 DCA I 11 ISZ 12 JMP .-3 JMP I CROCK / /AN OPERATE 10 INSTRUCTION WAS ISSUED. SEE IF WE /ARE READING OR WRITING AND SET UP. / DSC, TAD DREADF DCA DMODE SKWB ISZ DMODE /FIX FOR A WRITE JMS SETG /SET FOR GRP RD OR WRT JMS RS20 DOBLK, TAD LNCA RTR RTR DCA DEXT TAD DEXT RAR AND C7400 DCA DADR TAD DEXT AND DADRM /DISK SYSTEM SIZE DCA DEXT JMS STMEM AND C70 DCA CEXT /CORE EXTENSION DMODE, JMP . ISZ LNCA ISZ QN ISZ QCT JMP DOBLK CLC JMP DOGOA DREADF, JMS I .+1 DREAD DWRITE L7750, 7750 L7751, 7751 C7400, 7400 / /END OF PAGE FIVE AND END OF RESIDENT MONITOR / / SEGMENT 13 / -----------------



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