File QUAD8I.

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

/FOCAL-8 QUAD (FAMILY OF 8 WITH DC02)
/DEC-08-LQDCA-A-LA

/COPYRIGHT 1969,1971  DIGITAL EQUIPMENT CORPORATION
/	MAYNARD, MASSACHUSETTS 01754

/ASSEMBLY INSTRUCTIONS:
/.R PAL8
/*QUAD8I,QUAD8I_QUAD8I,FOCAL8,FLOAT

/ASSEMBLY MAY YIELD UO ERRORS ON PASS 1
/THESE MAY BE IGNORED

/FOR USE WITH PT08, CHANGE DVCE=0 TO DVCE=1


/.SAVE F4UB!0-1677,2000,3000,3500-3600,5200-5500 /.SAVE F4UA!0-13377,14600-17577; /FOR QUAD: USER=0 /FOR PENT: USER=1 /FOR PTO8: DVCE=1 /FOR DCO2: DVCE=0 USER=0 DVCE=0 MQA=7501 RMF=6244 CDF1=6211 CIF1=6212 MTON=6117 MINT=6115 MTLS=6126 /MNEMONIC, OCTAL, NL4000=7330 NL2000=7332 NL3777=7350 NL5777=7352 NL7776=7344 NL7775=7346 NL1=7301 NL2=7326 CDF=6201 CIF=6202 KSF1=6401 TSF1=6411 KSF2=6421 TSF2=6431 KSF3=6441 TSF3=6451 KSF4=6461 TSF4=6471
/PAGE ZERO FIELD 0 *1 JMP I .+1 INTRPM RESTART, POWRUP NOP /DDTJR *10 XR10, 0 XR11, 0 XR12, 0 XR13, 0 *20 T=0 ACTIONQ=JMS I. XACTION ONDECK=JMS I. XDECK OFFDECK=JMS I . UNDECK CNTRM, 0 /GENERAL PURPOSE REGISTERS TEMPM, 0 CHARM, 0 TEMPT, 0 TEMPX, 0 PNTR, 0 CNTRT, 0 SAC, 0 SLK, 0 HOLD, 0 ACTIVE, 01 DECK, 0 /ON DECK USER NUMBER,0=NONE USERNO, 0 NEWU, 01 MDECK, PCM-IOTX-1 CODET, CTABS-1 /CHARACTER TABLES IFZERO USER <AUSERS, 7000> IFNZRO USER <AUSERS, 7400> C2, 0 MC3, 0 P77M, 77 P1000, 1000 P7000, 7000 P6777, 6777 P7757, 7757 EP7, 7 P10, 10
P17M, 17 M11M, -11 P20, 20 M20M, -20 M40M, -40 P4, 4 /(=KRB) M2M, -2 M6M, -6 P37, 37 P14, 14 MCRM, -215 M200, -200 C200M, 200 UPAR, 336 MZERO, 10-M100 /! DTABLE, USERTS-1 BDUMP, XTDUMP ALISTP, LISTL-1 IFZERO USER </FOR QUAD NOUSRS, -4 BEND=4617 > IFNZRO USER </FOR PENT NOUSRS, -5 BEND=4420 > TEXTPM, IOBUF-1 /START OF USER TEXT TEXTC, IOBUF-BEND /(IOBUF-3577)-FOR DEBUGGING** CONTN, CONTIN MLISTP, -LISTL DLISTP, LISTP-1 PTLS, 14 PTCF, 10 /USER DATA BLOCK "ON DECK" PCM, 0 OBUFO, 0 /OUTPUT OBUFI, 0 OBUF0, 0 IBUFO, 0 /INPUT IBUFI, 0 DECKP, 0 /STATUS BITS IOTX, 0 /(6XX2)
P70, 70 PCDF, CDF PCIF, CIF PINIT POWRUP, JMS I .-1 TAD DECKP AND P70 TAD PCIF DCA .+7 TAD DECKP RTL CLL RAL AND P70 TAD PCDF DCA .+2 HLT /INST FIELD HLT TAD SLK RAR CLL TAD SAC ION JMP I PCM ///// HOLDO, 0 /USED BY BMOVE WITH INTS ON. HOLDI, 0 EP, 0 /USED TO SELECT USER BIT PATTERN EBASE, DCB-1 /DCO2 TABLE BASE
/INTERRUPT ROUTINE *177 INITL /(XRSTART JMP I .-1 /STARTING ADDRESS INTRPM, DCA SAC /SAVE AC AND LINK RAL DCA SLK 6102 /SPL /SKIP IF POWER FAIL JMP OTHER RIB DCA DECKP TAD 0 DCA PCM TAD .+3 /PREPARE POWER RESTART DCA 0 HLT /HALT FOR POWER FAIL FLAG JMP I RESTART /RESTART OTHER, IAC DCA USERNO /INITIALIZE NO.TO ONE IFNZRO DVCE </PT08 KSF /TEST USER 1 SKP JMS I KEY TSF SKP JMS I TTY ISZ USERNO KSF1 /TEST USER 2 SKP JMS I KEY TSF1 SKP JMS I TTY ISZ USERNO KSF2 SKP JMS I KEY TSF2 SKP JMS I TTY ISZ USERNO KSF3 SKP JMS I KEY TSF3 SKP JMS I TTY
IFNZRO USER </FOR PENT ISZ USERNO KSF4 SKP JMS I KEY TSF4 SKP JMS I TTY >> IFZERO DVCE </FOR DCO2 KSF SKP JMS I KEY TSF SKP JMS I TTY 6125 /(MINS) JMP RESTORE TAD NOUSRS DCA C1 CLA STL RAR DCA C2 ICY1, ISZ C1 SKP JMP ICY2 /DONE ISZ USERNO /INTERUPT CYCLE ONE TAD C2 6117 /(MTON) CLL RAR DCA C2 6111 /(MKSF) SKP JMS I KEY 6121 /(MTSF) SKP JMS I TTY JMP ICY1 C1, 0 ///// ICY2, TAD AUSERS /SET ACTIVE INPUTS MTON CMA MINT > CLA SKP /SMP JMP PARITY 6622 /DFSE OR DFSC JMP RESTORE HLT /PROCESS DISK FLAGS JMP INTRPM+4
TELSW1, BASES+6 TELSW2, BASES+16 TELSW3, BASES+26 TELSW4, BASES+36 TELSW5, BASES+46 PARITY, RMF HLT RESTORE,RMF TAD SLK RAR CLL TAD SAC ION JMP I 0 //// PINIT, 0 DCA I TELSW1 DCA I TELSW2 DCA I TELSW3 DCA I TELSW4 DCA I TELSW5 TAD AUSERS MTON IAC MINT CLA JMP I PINIT ///// XRSTART, JMS PINIT JMP I .+1 EXCHE-1 ///// KEY, XKEY TTY, XTTY
/CONTROL CODES TYPED RECOVR /RESTART ADDRESS CNTRLC, TAD .-1 JMS I BDUMP NL2 AND DECKP DCA DECKP /RESET ALL OTHER FLAGS CNTRLX, TAD UPAR /AND PRINT UPARROW ACTIONQ /TEST AND PRINT JMP SETW TAD CHARM /CHANGE CONTROL CODE TO A PRINTABLE ONE. TAD P100 ACTIONQ /OUTPUT PRINTED CODE JMP SETW /TOO FULL?! JMP I .+1 KEYX ///// SETW, TAD PCM JMS I BDUMP JMP CNTRLX P100, 100 SILENT, TAD P7757 AND DECKP TAD P20 JMP CNTRLX-1 TTYPE, TAD P7757 AND DECKP JMP CNTRLX-1 ///
/CONTROL TABLE IGNORE /L.T. CTABS=. ECHO /^A-HOME CNTRLX /^B CNTRLC /C-END OF MESSAGE CNTRLX /D CNTRLX /E CNTRLX /F ECHO /G - BELL CNTRLX /H CNTRLX /I NOECHO /J - LF. CNTRLX /K NOECHO /L -FF. GOCR /M -C.R. CNTRLX /N - CNTRLX /0 CNTRLX /P CNTRLX /Q SILENT /R-TAPE CNTRLX /S- (7000) - FOR DEBUGGING TTYPE /T-NOT TAPE CNTRLX /U CNTRLX /V CNTRLX /W -E.O.MEDIA ECHO /X-ERASE CNTRLX /Y CNTRLX /Z IGNORE /[ IGNORE /\ IGNORE /] ECHO /UPAR - GOCR /LEPTAR=GORO
/KEYBOARD PROCESSOR XKEY, 0 ONDECK /PUT THIS USER ON DECK TAD IOTX TAD P4 DCA .+1 HLT /EXECUTE THIS USER'S READIN CODE AND MP177 /IGNORE PARITY SNA JMP I XKEY /IGNORE BLANKS TAD MC200 DCA CHARM /SAVE CHARACTER TAD CHARM TAD MRO SNA CLA JMP SING TAD CHARM /TEST CODE AND P140 SZA CLA JMP ECHO /REGULAR CHARACTERS TAD CHARM /BRANCH ON CONTROL CHARACTER CODES. AND P37 TAD CODET /ADD BASE ADDRESS OF CHARMACTER TABLE DCA TEMPM TAD I TEMPM /GET CONTENTS OF TABLE, DCA TEMPM JMP I TEMPM /AND BRANCH, ///// MRO, -377 MP177, 177 MC200, 200 IGNORE=. KEYX, OFFDECK JMP I XKEY
/ACKNOWLEDGE INPUT FROM "XKEY" GOCR, NL5777 /CLEAR INPUT WAIT AND DECKP DCA DECKP ECHO, TAD P20 AND DECKP /THIS USER IN SILENT STATE? SZA CLA JMP NOECHO /YES, EXIT TAD I IBUFI /WILL THIS CHARM BE ACCEPTED? SNA CLA ACTIONQ /YES NOP /NO, OR LOW SPEED OUTPUT HAS FULL BUFFER NOECHO, IAC /SINGLE CHARACTER MODE? AND DECKP SNA CLA JMP EOUT SING, NL5777 /YES, CLEAR INPUT WAIT FLAG AND DECKP /AND CONTROL CODES DCA DECKP
/SAVE INPUT EOUT, TAD IBUFI /IS INPUT BUFFER NEARLY FULL? CIA TAD IBUFO SPA SNA TAD P20 /FORM CORRECTED LENGTH TAD MX SMA CLA JMP .+4 /NO, NL5777 /YES, CLEAR INPUT WAIT AND DECKP DCA DECKP TAD I IBUFI /TOTALLY FULL? SZA CLA JMP KELP TAD CHARM /NO, SAVE AND COUNT DCA I IBUFI TAD IBUFI IAC AND P17M TAD P20 TAD OBUF0 DCA IBUFI JMP KEYX ///// KELP, TAD C2 CLL RAL CMA AND AUSERS DCA AUSERS JMP KEYX ///// P140, 140 MX, -10 /TUNE THE BUFFER FULL TEST HERE BELLX, 207-100 IFZERO DVCE <NDC02=. IFNZRO USER <400+7000> IFZERO USER <7000> >
/CALLED BY BUFFER OVERFLOW /AND CONTROL-C XTDUMP, 0 DCA PCM TAD M40M /SETUP INIT COUNT DCA CNTRM CMA TAD OBUF0 DCA XR11 /INIT I/O BUFFERS, DCA I XR11 ISZ CNTRM JMP .-2 TAD OBUF0 /INIT TTY POINTERS. DCA OBUFO TAD OBUF0 DCA OBUFI TAD OBUF0 TAD P20 DCA IBUFI TAD IBUFI DCA IBUFO TAD USERNO CIA TAD ACTIVE SZA CLA JMP I XTDUMP RIB TAD M11M SZA CLA JMP I XTDUMP TAD PCM DCA 0 DCA SAC JMP I XTDUMP /////
*600 /PLACE A USER DATA BLOCK IN AVAILABLE STATUS - "ONDECK" / / /USERNO IS SET. XDECK, 0 TAD DECK /ALREADY ON? CIA TAD USERNO SNA CLA JMP I XDECK /YES, RETURN JMS XCOM TAD I XR10 /MOVE DATA BLOCK IN. DCA I XR11 ISZ CNTRM JMP .-3 TAD USERNO /SAVE NEW USER NUMBER DCA DECK JMP I XDECK ///// BASEB, PCM-1 BASEX, BASES-BETA-1 /DATA TO FORM ADDRESS OF USER DATA AREA. ///// XCOM, 0 /COMPUTE DATA BLOCK ADDRESSES. TAD USERNO / COMPUTE BASE ADDRESS CLL RTL RAL TAD BASEX /COMPUTE DATA BASE DCA XR10 /SAVE HOME ADDRESS TAD MDECK /SETUP SWAP DCA CNTRM TAD BASEB /SETUP DECK ADDRESS DCA XR11 JMP I XCOM /RETURN WITH XR'S SET. ///// UNDECK, 0 JMS XCOM TAD I XR11 DCA I XR10 ISZ CNTRM JMP .-3 DCA DECK JMP I UNDECK //////
/THIS ROUTINE OUTPUTS A CHARMACTER TO THE BUFFER. - "ACTIONQ" /IT MUST BE USED WITH INTERRUPT OFF, BUT /IT MAY BE USED BY EITHER MAIN OR POLLING ROUTINES. /CALLING SEQUENCE: DATA IS IN "CHAR" / ACTIONQ / 1 /BUFFERS FILLED BY THIS ITEM / 2 /BUFFER OK XACTION, 0 SNA TAD CHARM DCA XTTY TAD OBUFI IAC AND P17M TAD OBUF0 DCA TEMPM TAD I OBUFI /ANY MORE ROOM? TAD I TEMPM SNA CLA ISZ XACTION /AT LEAST ONE WILL BE LEFT TAD I OBUFI SZA CLA JMP I XACTION /NO MORE LEFT NL2 AND DECKP /IN PROGRESS? SZA CLA JMP ACTING /YES TAD IOTX TAD PTLS /(TLS=6X16) DCA .+2 TAD XTTY /NO, HLT /TYPE THE CHARMACTER. NL7775 AND DECKP TAD P2M DCA DECKP /SET IN-PROGRESS FLAG, JMP I XACTION /RETURN ///// ACTING, TAD XTTY /YES, SEND DATA DCA I OBUFI TAD TEMPM /SET POINTERS DCA OBUFI JMP I XACTION P2M, 2
/PROCESS TTY FLAGS XTTY, 0 /TELETYPE OUTPUT INTERRUPT ONDECK /PUT THIS ONE ON DECK NL7775 AND DECKP DCA DECKP /TURN OFF THE IN-PROGRESS FLAG. TAD IOTX /LOAD TLS CODE TAD PTLS /(TLS=6X16) DCA XTTX TAD I OBUFO /ANY MORE OUTPUT? SNA JMP TEXIT /DONE XTTX, HLT /TYPE NEXT. NL7775 AND DECKP TAD P2M DCA DECKP /CLEAR AC AND TURN ON THE FLAG. DCA I OBUFO /ZERO OUT THE DATA AREA TAD OBUFO /MOVE THE OUTPUT POINTER IAC AND P17M TAD OBUF0 DCA OBUFO XXTTY, OFFDECK JMP I XTTY ///// TEXIT, TAD IOTX TAD PTCF /(TCF=6X12) DCA .+1 /CLEAR FLAG HLT TAD DECKP /CLEAR OUTPUT WAIT BIT AND P6777 DCA DECKP JMP XXTTY ///// EXRED3, CLA CMA TAD ACTIVE SNA JMP I EXRED4 /CONSOLE USER TAD EBASE DCA EP TAD I EP CMA AND AUSERS TAD I EP MTON DCA AUSERS /RESTORE THIS ONE JMP I EXRED4 EXRED4, EXRED DCB,4000 2000 1000 0400
*1000 /THESE ARE CALLED VIA THE USER CALLS TO EXEC. EXPRNT, DCA CHARM TAD ACTIVE /SETUP CURRENT USER DCA USERNO /INTERRUPT IS OFF HERE. ONDECK IFZERO DVCE < CMA TAD ACTIVE SNA JMP .+6 TAD EBASE DCA EP TAD I EP MTON CLA > ACTIONQ JMP EXPRN /GO INTO OUTPUT WAIT OFFDECK IFZERO DVCE < TAD AUSERS MTON CLA > EXGO, CIF1 CDF1 ION /INTERRUPT ON, AND RETURN JMP I .+1 RESUME XPRNTI, EXPRIN ///// EXRED2, EXRED3 EXRD, TAD ACTIVE DCA USERNO ONDECK TAD I IBUFO SNA IFZERO DVCE < JMP I EXRED2 /STOP INTS> IFNZRO DVCE < JMP EXRED /INPUT WAIT> DCA HOLD /SAVE DATA DCA I IBUFO TAD IBUFO /MOVE POINTER IAC AND P17M TAD P20 TAD OBUF0 DCA IBUFO OFFDECK CDF1 ISZ I XPRNTI TAD HOLD JMP EXGO /////
EXCHCK, TAD ACTIVE DCA USERNO ISZ CHKCNT JMP EXGO TAD CHKCON DCA CHKCNT ONDECK NL7776 /CLEAR SINGLE CHARACTER MODE AND DECKP DCA DECKP JMP XPR2 CHKCON, -4 /TUNE HERE!! CHKCNT, -4 /SET WAIT FLAGS EXRED, NL5777 AND DECKP /SET INPUT WAIT TAD P1000 /2000 SET JMP XPR ///// EXPRN, TAD P6777 /SET OUTPUT WAIT AND DECKP XPR, TAD P1000 DCA DECKP XPR2, CDF1 /NO REPEAT FOR CHECKPOINT TAD I XPRNTI CDF DCA PCM /SAVE ACTIVE PROGRAM COUNTER OFFDECK /JOB QUEUE ION /ENABLE THE INTERRUPTS ! EXCHE, TAD NEXTU /EVERY PUSHJ=NEW USER ? TAD P10 /LOOK AT NEXT USER'S "DECKP" DCA NEXTU /UPDATE USER SCAN ISZ NEWU TAD NEWU TAD NOUSRS SPA SNA CLA JMP .+5 IAC DCA NEWU TAD NEXT0 DCA NEXTU TAD I NEXTU AND P7000 SZA CLA JMP EXCHE-1 /IDLE LOOP
/RUN NEXT USER IOF TAD NEWU /FIND TEXT BUFFER TAD DTABLE DCA TEMPT TAD I TEMPT SNA JMP CONTIN DCA PNTR CDF1 /CHECK FOR TRACE TAD I TRC1 TAD I TRC2 CDF SZA CLA JMP I EXSWP /GO TO ANOTHER USER ONLY IF ACTIVE IS IN INPUT WAIT WITH TRACE ON. TAD ACTIVE RTL CLL RAL TAD ACTVP DCA TEMPX NL2000 AND I TEMPX SNA CLA JMP EXCHE-1 JMP I EXSWP EXSWP, EXGON ACTVP, BASES-2 NEXTU, BASES+6 NEXT0, BASES+6 ///// CONTIN, TAD NEXTU TAD M6M DCA PNTR TAD I PNTR DCA PNTR TAD NEWU /FIND TEXT BUFFER ADDRESS 7421 /SHOW THE USER NUMBER IN THE MQ CLA CDF1 CIF1 /RESUME THE ACTIVE PROGRAM. ION JMP I PNTR ///// TRC1, DEBGSW TRC2, DMPSW /////
/NON-REENTRANT ADDRESSES IN FOCAL LISTP=. OUT TGO SCOUNT FCOUNT XPRNT OUTA FLOUTP PRNT OUTDG CHIN /INPUT INPUT FLINTP DECONV DECON EXREAD EXPRIN DECP REMAIN DNUMBR /TABLE CONTAINS ADDRESS OF USER TESTS. LISTL=.-LISTP //ALPHA=LISTL+M100-10+BEND-IOBUF ALPHA=LISTL+101-10+BEND-3120 USERTS, 0000 /#1 TEXTA /#2 TEXTA+ALPHA /#3 TEXTA+ALPHA+ALPHA /#4 IFNZRO USER <TEXTA+ALPHA+ALPHA+ALPHA> / #5 /ACTIVE USER # CONTAINS ZERO
/EXCHANGE DATA AREAS /(NEW) PNTR /(ACTIVE (TEMPT) 0 EXGON, TAD ACTIVE TAD DTABLE /(USERTS-1) DCA TEMPM TAD PNTR /ACTIVE USER GOES INTO NEW USERS AREA DCA I TEMPM DCA I TEMPT ION /(IOF) - FOR DEBUGGING TAD DLISTP /SETUP MISCELLANY TABLE DCA XR12 /FIRST N ITEMS = #1 TAD MLISTP /DECIMAL DCA CNTRT TAD NEWU DCA ACTIVE MOVE15, TAD I XR12 /TRANSFER JMS BMOVE JMP MOVE15 TAD MZERO /PAGE ZERO IN PART= #2 DCA CNTRT /COULD BE AS SMALL AS 120 WORDS CMA DCA TEMPX TAD EP7 /START AT TEN JMP .+2 MOVE20, TAD TEMPT IAC JMS BMOVE JMP MOVE20 ISZ TEMPX JMP .+5 TAD TEXTC /REMAINDER (3100-4600) = #3 DCA CNTRT TAD TEXTPM /(3100) JMP MOVE20+1 IOF JMP I CONTN /////
/MOVE A BLOCK OF DATA BMOVE, 0 DCA TEMPT TAD I PNTR /PICKUP NEW DATA DCA HOLDI /INPUT CDF1 TAD I TEMPT DCA HOLDO /OUTPUT TAD HOLDI DCA I TEMPT CDF TAD HOLDO DCA I PNTR ISZ PNTR ISZ CNTRT JMP I BMOVE ISZ BMOVE JMP I BMOVE
/ STORAGE BEGINS AT 1340 AND GOES TO 7777 BUFRS=1340 /40 PER USER BASES=BUFRS+240 /(240) /BASE DATA LISTS FOR EACH USER. BETA=10 *BASES 200 /USER #1 (CONSOLE CTY) BUFRS BUFRS BUFRS BUFRS+20 BUFRS+20 0 6032 200 /USER #2 BUFRS+40 BUFRS+40 BUFRS+40 BUFRS+60 BUFRS+60 0 IFNZRO DVCE <6402> IFZERO DVCE <6112> 200 /USER #3 BUFRS+100 BUFRS+100 BUFRS+100 BUFRS+120 BUFRS+120 0 IFNZRO DVCE <6422> IFZERO DVCE <6112>
*BASES+BETA+BETA+BETA 200 /USER #4 BUFRS+140 BUFRS+140 BUFRS+140 BUFRS+160 BUFRS+160 0 IFNZRO DVCE <6442> IFZERO DVCE <6112> IFNZRO USER < 200 /USER #5 BUFRS+200 BUFRS+200 BUFRS+200 BUFRS+220 BUFRS+220 0 IFNZRO DVCE <6462> IFZERO DVCE <6112> > TEXTA=. //DUMLN2=TEXTA+LISTL+M100-10+FRST-IOBUF DUMLN2=TEXTA+LISTL+101-10+3206-3120 *DUMLN2 /#2 0 0000 TEXT "C-FOCAL,1969" *.-1 7715
*3000 /INITIALIZE ROUTINE XRSTART INITL, TAD .-1 DCA 177 TAD DTABLE IAC /START WITH #2 DCA XR10 IAC /MAKE COPIES OF PAGE ZERO TAD NOUSRS DCA TEMPX INITL4, TAD MZERO DCA CNTRT TAD EP7 DCA XR11 TAD ALISTP /MOVE PAST BASE DATA TAD I XR10 DCA XR12 CDF1 /COPY PAGE ZERO DATA TAD I XR11 /BEGIN WITH LOC#1 CDF DCA I XR12 ISZ CNTRT JMP .-5 ISZ TEMPX JMP INITL4 IAC /SET #1 TO ACTIVE STATUS DCA ACTIVE IAC DCA NEWU TAD M240M DCA CNTRT TAD BUFRSP DCA XR10 DCA I XR10 ISZ CNTRT JMP .-2 JMP I .+1 XRSTART BUFRSP, BUFRS-1 M240M, -240
*DUMLN2+ALPHA /#3 0 0000 TEXT "C-FOCAL,1969" *.-1 7715 *DUMLN2+ALPHA+ALPHA /#4 0 0000 TEXT "C-FOCAL,1969" *.-1 7715 TEXTA+ALPHA+ALPHA+ALPHA /LAST OF 4! IFNZRO USER < *DUMLN2+ALPHA+ALPHA+ALPHA /#5 0 0000 TEXT "C-FOCAL,1969" *.-1 7715 TEXTA+ALPHA+ALPHA+ALPHA+ALPHA /LAST OF 5! >
////////////////////////////////////////////// FIELD 1 /USER'S FIELD /MODIFY AND ASK=SINGLE CHARACTER INPUT MODE *BOTTOM BEND *COMGO+6 /ASK EXASK *.+4 /MODIFY EXMOD *PC1+4 JMP I START-2 /PATCH IN PROC *START-2 EXCHEC RECOVR+1 *OUTDEV EXPRIN /XI33 EXREAD /XOUTL *COMGO+10 /LIB ERROR5 *COMGO+16 /* 177 *CHIN+3 TAD CHAR TAD MCR JMS I .+2 JMP I CHIN ECCR
*2600 /NEW I/O INSTRUCTIONS EXPRIN, 0 IOF CDF CIF JMP I .+1 EXPRNT //// EXREAD, 0 CLA CMA /INPUT MAY BE RE-CALLED TAD .-2 DCA EXPRIN IOF CDF CIF JMP I .+1 EXRD //// EXCHEC, TAD T2U /EVERY INSTRUCTION=CHECK POINT DCA EXPRIN IOF CDF CIF JMP I .+1 EXCHCK //// RESUME, JMP I EXPRIN T2U, .+1 TAD CHAR /RESTART AFTER CHECKPOINT JMP I .+1 PC1+5 //// ECCR, 0 SZA CLA JMP I ECCR TAD CLF JMS EXPRIN JMP I ECCR
/SET TO SINGLE CHARACTER FOR MODIFY SINGLE, 0 IOF /PROTECT AGAINST CONTROL-C AT THIS MOMENT CDF TAD I XA RTL CLL RAL TAD XB /FIND DECKP OF ACTIVE USER DCA T2 NL7776 AND I T2 /SET SINGLE CHARACTER MODE IAC DCA I T2 CDF1 ION JMP I SINGLE XB, BASES-2 XA, ACTIVE EXMOD, JMS SINGLE JMP I .+1 MODIFY EXASK, JMS SINGLE JMP I .+1 ASK //// FX, JMS I INTEGER CIA DCA SINGLE /NO. OF BITS PUSHJ EVAL-1 JMS I INTEGER SKP FX2, TAD LORD CLL RAR DCA LORD TAD HORD RAL DCA HORD ISZ SINGLE JMP FX2 TAD P13 DCA EXP DCA LORD DCA OVER2 JMP I EFUN3I *FNTABF+5 /REPLACE FADC() FX *FNTABL+5 330
*ERR2+3 JMP RECOVR+1 *RECOVR+2 JMP RECOVX *RECOVX+1 NOP *SADR IOBUF-1 NOPUNC FIELD 0 XLIST



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