From: Richard Cornwell Date: Sun, 3 Dec 2017 01:25:58 +0000 (-0500) Subject: Fixed typos. X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/commitdiff_plain/d693caac75dd25e668e43e85c29205bfc8dea06e?hp=cda2ba6d27526e5ef6f27f7b3391cfb55055bf2e Fixed typos. --- diff --git a/src/cdrsr6.mac b/src/cdrsr6.mac new file mode 100644 index 0000000..68b70ce --- /dev/null +++ b/src/cdrsr6.mac @@ -0,0 +1,327 @@ +TITLE CDRSR6 - CARD READER SERVICE FOR PDP-6 CARD READER +SUBTTL /TH TS3.17 18 OCT 67 V001 +XP VCDRS6,001 + ;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP + + ;PARAMETERS + + ;HARDWARE + + CRDONE=10 + CRBUSY=20 + CRBIN=40 + CRALL=100 + CRMISS=200 + CREOC=400 + CREOFF=1000 + CRERR=2000 + CRNRED=4000 + + CRCONO=CRBUSY+CRBIN+CRALL + CDR=114 + + COD029=5252 ;029 CONTROL CARD IS 12-0-2-4-6-8! + + ;IOS + + CRMFST=40000 ;LH + CRMIMG=100000 ;LH + CRMBIN=200000 ;LH + CRM029=100 ;RH + + MINHNG=^D15 ;NO. OF TIMES TO OBEY HUNG CODE BEFORE REALLY BECOMING HUNG + +CDRHNG: CONSO CDR,CRERR ;POWER OFF OR OTHER SUCH CATASTOPHE? + TLNN IO,IOFST ;NO - CARD JAMMED? + JRST CDRINI ;YES - PRINT HUNG MSG. + AOS (PDP) ;NEVER ERROR RETURN + CONSZ CDR,CRMISS ;FEEDCHECK? + CONSZ CDR,CRNRED ;YES - READER READY? + SOSA TAC,LOPCNT ;NO - PICK UP HUNG LOOP COUNTER + JRST CDRSTR ;YES - GIVE ANOTHER CONO + JUMPGE TAC,STOIOS ;COUNT NOT EXPIRED - LEAVE ACTIVE + SOS (PDP) ;EXPIRED - PRINT HUNG MSG. + +CDRINI: CONO CDR,0 ;CLEAR HARDWARE + HLLZS CDRCON ;CLEAR CONSO BITS + POPJ PDP,0 ;RETURN + + INTERNAL FTCHECK,FTMONP + +IFN FTCHECK+FTMONP,< +EXTERNAL CDRDDB,CRDIS,CRTEM,CDRCON,LOPCNT +> +IFE FTCHECK+FTMONP,< +;CDR DEVICE DATA BLOCK + INTERN CDRDDB +CDRDDB: +CDRDAT: SIXBIT /CDR/ + XWD 2*HUNGST,34 ;BUFFER LONG ENOUGH FOR BINARY CARDS + 0 + EXP CDRDSP + XWD DVCDR+DVIN,14403 + 0 + 0 + XWD PROG,0 + 0 + 0 +CRDIS: JRST . +CRTEM: 0 ;TEMP FOR PARTIAL WORDS +CDRCON: 0 ;CONSO FLAGS +LOPCNT: 0 +> + +ENTRY CDRSR6 +EXTERN CPOPJ1,ILLOUT,PIOMOD,SETACT,SETBYT,CDRCHN,PIOFF,PION,HNGSTP +INTERN CDRDSP + +;CDR SERVICE DISPATCH TABLE (SHORT) + + JRST CDRINI ;INITILIZATION + JRST CDRHNG ;HUNG DEVICE IS CHECKED +CDRSR6: +CDRDSP: JRST CDRINI ;RELEASE - CLEAR DEVICE + POPJ PDP,0 ;CLOSE - NOTHING SPECIAL + JRST ILLOUT ;OUTPUT WON'T WORK + ;INPUT IS OK + TLZN IOS,IOBEG ;BEGINNING OF FILE? (NO MORE). + CONSO CDR,CREOFF ;BUTTON PUSHED? + TLZA IOS,CRMBIN+CRMIMG ;CLEAR TRASH + JRST CREOF ;END OF FILE PUSHED WHILE IOACT WAS 0 +CDRIN1: CONO CDR,0 ;CLEAR ANY SPURIOUS FLAGS + CONSO CDR,CRERR!CRMISS!CRNRED ;POWER OFF,LEFT OVER FEED-CHECK OR NOT READY + JRST .+3 ;NO - OK + PUSHJ PDP,HNGSTP ;YES - PRINT REMINDER & HALT JOB + JRST CDRIN1 ;GO TRY AGAIN WHEN USER TYPES 'CONT' + TLO IOS,IOFST+CRMFST ;NEW OPERATION + LDB TAC,PIOMOD ;SPEED UP TESTING OF MODE + CAIN TAC,B ;.. + TLO IOS,CRMBIN ;BINARY MODE + CAIN TAC,I + TLO IOS,CRMIMG ;IMAGE MODE + PUSHJ PDP,SETBYT ;LH(TAC):=700+PROG OR 4400+PROG + MOVEM TAC,DEVPTR(DEVDAT) ;SAVE BYTE SIZE +CDRSTR: MOVEI TAC,MINHNG ;HERE TO RESTART CDR ON FEED-CHECK + MOVEM TAC,LOPCNT ;RESET HUNG LOOP COUNTER + PUSHJ PDP,SETACT + MOVE TAC,[XWD CRDONE,CRCONO] + CONO PI,PIOFF + CONO CDR,CDRCHN(TAC) ;START CDR + HLRM TAC,CDRCON ;AND LOOK FOR IT + CONO PI,PION + POPJ PDP,0 ;RETURN TO UUOCON + + +INTERN CDRINT +EXTERN CDRSAV,IOSET,SETIOD,STOIOS,CDRCHN + +CDRINT: CONSO CDR,@CDRCON + JRST CDRINT + JSR CDRSAV + MOVEI DEVDAT,CDRDDB + MOVE IOS,DEVIOS(DEVDAT) + PUSHJ PDP,IOSET + CONSZ CDR,CRMISS + TRO IOS,IODERR ;DEVICE ERROR + CONSO CDR,CRERR+CREOFF+CREOC + JRST CRDATA ;JUST A DATA INTERRUPT + CONSZ CDR,CRERR ;HARDWARE LOSS? + JRST CDRERR ;YES + JRST CDREOC ;NO. MUST BE END OF CARD +CREOF: TLOA IOS,IOEND ;MARK END,SKIP TO CROFF +CDRERR: TRO IOS,IODERR ;CDR DEVICE ERROR HERE +CROFF: PUSHJ PDP,CDRINI ;STOP THE DEVICE + TRZ IOS,IOACT +CRLST1: MOVEI TAC,MINHNG + MOVEM TAC,LOPCNT ;RESET HNG. LOOP CNT. + TLO IOS,IOFST+CRMFST + TLZE IOS,IOW ;JOB WAITING FOR CDR? + PUSHJ PDP,SETIOD ;YES. WAKE IT UP +CREXIT: MOVEM ITEM,DEVCTR(DEVDAT) + JRST STOIOS + +CRCONT: MOVEI TAC,CDRCHN ;PI CHANNEL + CONO CDR,CRCONO(TAC) ;MAKE IT GO AGAIN + TLO IOS,CRMFST ;FIRST COLUMN, BUT NOT FIRST IN BUFFER + JRST CREXIT ;AND RETURN + + + +CRDATA: DATAI CDR,DAT + TLZN IOS,CRMFST ;COLUMN 1? + XCT CRDIS ;NO. SUBROUTINE HAS BEEN SET UP + TRNE IOS,IODERR ;POSSIBLE FEED CHECK? + CONSO CDR,CRNRED ;YES - READER READY? + JRST .+4 ;YES - GENUINE DATA ERROR + TLO IOS,CRMFST ;RESET 1ST COL. FLG. + TRZ IOS,IODERR ;CLEAR ERROR INDICATION + JRST STOIOS ;AND LET HUNG LOGIC SORT THINGS OUT + TLNE IOS,CRMIMG ;IMAGE MODE? + JRST CRFSTI ;YES, DON'T CHECK FOR EOF CARD + TRC DAT,7400 + TRCN DAT,7400 ;12,11,0 AND 1 PUNCH? + JRST CREOF1 ;YES. AN EOF CARD. + TLNE IOS,CRMBIN + JRST CRFSTB ;BINARY CARD FIRST COLUMN + MOVEI TAC,CRASCI ;HERE ON ASCII FIRST COLUMN + HRRM TAC,CRDIS ;FOR SUCCEEDING COLUMN INTERRUPTS + CAIE DAT,COD029 ;029 CONTROL CARD? + JRST CRASCI ;NO. PROCESS THE CARD. + TDO IOS, [XWD IOBEG,CRM029] ;FLAG FOR EOC AND TRANSLATOR + JRST CRIGNOR ;FLUSH REST OF THIS CARD + +CRASCI: MOVEI TAC,0 ;CLEAR TAC + CAIN DAT,5000 + MOVEI DAT,4202 ;12-0 => 12-8-2 + CAIN DAT,3000 + MOVEI DAT,2202 ;11-0 => 11-8-2 + LDB TAC1,[XWD 110300,DAT] ;12,11,0 ROWS TO TAC1 + TRNE DAT,3 ;8 ZONE? + TRC TAC1,7 ;YES, PERMUTE TAC1 + TRNE DAT,74 ;4 BIT? + TRO TAC1,10 ;YES + TRNE DAT,314 ;2 BIT? + TRO TAC,2 ;YES + TRNE DAT,525 ;1 BIT? + TRO TAC,1 ;YES + TRNN IOS,CRM029 ;HAS 029 CODE BEEN IMPLIED? + TRO TAC1,20 ;NO. MOVE UP TO 026 CODE TABLE + LDB DAT,CRCV2(TAC) ;GET THE ASCII CHARACTER + PUSHJ PDP,CRSTOD ;STORE IT + JRST CREXIT ;AND RETURN + +CRCV2: POINT 7,CRCNV(TAC1),6 + POINT 7,CRCNV(TAC1),13 + POINT 7,CRCNV(TAC1),20 + POINT 7,CRCNV(TAC1),27 + + +EXTERN CDRCHN + +CRFSTI: LSH DAT,30 + MOVEM DAT,CRTEM ;SAVE AS LEFT 12 BITS + JSP TAC,CREXI1 ;GET ANOTHER COLUMN + LSH DAT,14 + IORM DAT,CRTEM ;THROW IN MIDDLE 12 BITS + JSP TAC,CREXI1 ;ANOTHER COLUMN + IORB DAT,CRTEM ;RIGHT 12. SAVE IN CRTEM FOR DEBUG +CRBIN2: PUSHJ PDP,CRSTOD ;ENTRY HERE FROM BIN CARDS + MOVEI TAC,CRFSTI ;ANOTHER 3 COLUMNS COME NEXT +CREXI1: HRRM TAC,CRDIS ;WHERE TO GO FOR NEXT COLUMN + JRST CREXIT ;RETURN FROM INTERRUPT + +CDREOC: CONSO CDR,CREOFF + TLNE IOS,IOEND ;END OF FILE? + JRST CREOF ;YES. SHUT OFF CDR + TLNN IOS,CRMIMG+CRMBIN ;IMAGE OR BIN? + JRST CRENDA ;ASCII + TLNN IOS,CRMIMG ;IMAGE? + JRST CRENDB ;BINARY. + MOVE DAT,CRTEM ;HERE ON EOC AND IMAGE + PUSHJ PDP,CRSTOD ;STORE LAST 2 COLUMNS IN BUFFER +CRENDB: PUSHJ PDP,CRADV1 ;ADVANCE BUFFER +CRENDC: MOVEI TAC,CDRCHN ;PI CHANNEL + CONO CDR,CRCONO(TAC) ;GO FOR NEXT CARD + JRST CRLST1 ;SET UP FOR NEXT CARD,DISMISS INTERRUPT, + ;ALSO WAKE UP JOB IF IN IOW + +CRFSTB: MOVEI TAC,-5(DAT) + TRNE TAC,17 ;ROWS 6-9=5? + TRO IOS,IOIMPM ;NO. NOT A BIN CARD + LSH DAT,-4 ;GET COLUMNS 1-5 + JUMPE DAT,CRIGNOR ;IGNORE BINARY CARDS WITH 0 WORD COUNT + MOVEM DAT,CRTEM ;SAVE AS WORD COUNT + JSP TAC,CREXI1 ;GET COLUMN 2 + HRL DAT,CRTEM ;(COUNT)CKSUM + MOVSS DAT ;(CKSUM)COUNT + JRST CRBIN2 ;STORE DAT AND GET REST OF CARD + + +EXTERN STOSQD,STODAT,ADVBFF + +CRENDA: TLZE IOS,IOBEG ;WAS THIS A 029 CONTROL CARD? + JRST CRCONT ;YES. NO CRLF. + MOVEI DAT,15 ;CARRIAGE RETURN + PUSHJ PDP,CRSTOD ;STORE + MOVEI DAT,12 ;LINE FEED + PUSHJ PDP,CRSTOD ;STORE + LDB TAC1,PIOMOD ;GET MODE + CAIN TAC1,AL ;ASCII LINE? + JRST CRENDC ;YES -WORD COUNT WILL HAVE BEEN COMPUTED & BUFFERS ADVANCED + CAIL ITEM,^D82 ;ROOM FOR ANOTHER CARD + CRLF? + JRST CRCONT ;YES. DO SO + PUSHJ PDP,STOSQD ;NO. STORE WORD COUNT + JRST CROFF ;CAN'T RETURN HERE, BUT ... + JRST CRENDB ;PROCEED TO ANOTHER BUFFER + +CREOF1: TLO IOS,IOEND ;HERE ON EOF CARD. MARK FOR EOC +CRIGNOR: JSP TAC,CREXI1 ;GET MORE COLUMNS + JRST .-1 ;AND IGNORE THEM. + +CRSTOD: PUSHJ PDP,STODAT ;STORE DAT IN BUFFER + JRST CRPOFF ;ADDRESS CHECK,IOBKTL,IODTER (CKSUM) + JRST CRADV ;BUFFER FULL OR BUFFER DONE + POPJ PDP,0 ;SIMPLE OK STORED RETURN + +CRADV: TLNE IOS,CRMBIN ;BINARY? + JRST CRIGNOR ;WAIT FOR END OF CARD +CRADV1: TLNE IOS,IOFST ;VIRGIN BUFFER? + POPJ PDP,0 ;YES. KEEP THIS ONE + PUSHJ PDP,ADVBFF ;ADVANCE TO ANOTHER BUFFER + SKIPA ;NO BUFFER AVAILABLE + POPJ PDP,0 ;OK. RETURN +CRPOFF: POP PDP,TAC + JRST CROFF + + +;CODE CONVERSION FOR THE 029 KEYPUNCH + +;THE FOLLOWING EQUIVALENCES ARE ARTIFICIALLY DEFINED + +;029 KEYTOP ;ASCII 35 ;ASCII 37 +;CENT [ [ +;0-8-2 ] ] +;VERT BAR ^ HAT = L.C. VERT BAR +;UNDERBAR _ UNDERBAR +;NEGATION \ TILDE = L.C. NEGATION + + ;CHARACTERS ;ZONE/DIGITS +CRCNV: ASCII / 123/ ;N/N-3 + ASCII .0/ST. ;0/N-3 + ASCII /-JKL/ ;11/N-3 + ASCII /HI[./ ;12,8/N-3 + ASCII /&ABC/ ;12/N-3 + ASCII /QR!$/ ;11,8/N-3 + ASCII /YZ],/ ;0,8/N-3 + ASCII /89:#/ ;8/N-3 + ASCII /4567/ ;N/4-7 + ASCII /UVWX/ ;0/4-7 + ASCII /MNOP/ ;11/4-7 + ASCII /<(+^/ ;12,8/4-7 + ASCII /DEFG/ ;12/4-7 + ASCII /*);\/ ;11,8/4-7 + ASCII /%_>?/ ;0,8/4-7 + ASCII /@'="/ ;8/4-7 + +;CODE FOR THE 026 KEYPUNCH A LA H HYMAN + + ASCII / 123/ ;N/N-3 + ASCII .0/ST. ;0/N-3 + ASCII /-JKL/ ;11/N-3 + ASCII /HI?./ ;12,8/N-3 + ASCII /+ABC/ ;12/N-3 + ASCII /QR:$/ ;11,8/N-3 + ASCII /YZ;,/ ;0,8/N-3 + ASCII /89_=/ ;8/N-3 + ASCII /4567/ ;N/4-7 + ASCII /UVWX/ ;0/4-7 + ASCII /MNOP/ ;11/4-7 + ASCII /)]&/ ;11,8/4-7 + ASCII /("#%/ ;0,8/4-7 + ASCII /@^'\/ ;8/4-7 + + + END + \ No newline at end of file diff --git a/src/cdrsrx.mac b/src/cdrsrx.mac new file mode 100644 index 0000000..76b2c5e Binary files /dev/null and b/src/cdrsrx.mac differ diff --git a/src/clkcss.mac b/src/clkcss.mac index 1412f7f..963ddd4 100644 --- a/src/clkcss.mac +++ b/src/clkcss.mac @@ -31,8 +31,7 @@ NXTINI: MOVSI TAC,-NQUEUE ;NO. OF QUEUES POPJ PDP, ;MAY CHOOSE TO SET REQUEST TO MORE ;NEG. VALUE IF MORE THEN ON JOB CAN ;USE DEVICE AT ONCE - -INTERNAL NXTJOB + INTERNAL NXTJOB INTERNAL FTTRPSET,FTDISK EXTERNAL JOB,TIMEF,JBTSTS,JOBMAX,JOBN,PJBSTS,CPOPJ,CHKSHF ENTRY XCKCSS @@ -75,8 +74,7 @@ NXT5: CAIL ITEM,JOBN ;GREATER THEN HIGHEST JOB NO.? JRST NXT8 ;YES, IT IS RUNABLE AND IS IN THIS QUEUE NXT6: SOJLE C,NXT3 ;NO IT IS NOT, SCANNED ALL JOBS YET? AOJA ITEM,NXT5 ;NO, LOOK AT NEXT JOB - -;HERE IF NO JOBS FOUND TO RUN(Q=-1) + ;HERE IF NO JOBS FOUND TO RUN(Q=-1) NXT7: MOVEI C,JOBN ;SCAN ALL JOBS INCLUDING POSSIBLY NULL JOB MOVE ITEM,JOB ;STARTING WITH LAST JOB TO RUN @@ -106,8 +104,8 @@ IFN FTTRPSET,< MOVE T,QUANTS(Q) ;SET QUANTUM RUNNING TIME FOR QUEUE HRRM T,JBTSTS(ITEM) ;WHICH JOB HAS JUST LEFT POPJ PDP, ;RETURN - -INTERNAL FTCHECK,FTMONP + + INTERNAL FTCHECK,FTMONP IFN FTCHECK+FTMONP,< EXTERNAL JOBP,AVALTB,REQTAB,QUANTS @@ -151,10 +149,9 @@ DEFINE X(A) A'Q=LOC LOC=LOC+1 > - + CODES - -IFE FTCHECK+FTMONP,< + IFE FTCHECK+FTMONP,< ;LAST JOB SCHEDULED FOR EACH QUEUE JOBP: REPEAT NQUEUE,< EXP 1> @@ -171,13 +168,14 @@ DEFINE X(A,B) INTERNAL REQTAB REQTAB: QUEUES - -;QUANTUM RUNNING TIME FOR EACH QUEUE IN JIFFIES(CLOCK TICKS) + + ;QUANTUM RUNNING TIME FOR EACH QUEUE IN JIFFIES(CLOCK TICKS) DEFINE X(A,B) < A'QUNT: EXP 2 INTERNAL A'QUNT > + QUANTS: QUEUES > END, diff --git a/src/clock1.mac b/src/clock1.mac index eff0f89..7c7bcdf 100644 --- a/src/clock1.mac +++ b/src/clock1.mac @@ -11,6 +11,7 @@ CLOCK1: ;FOR SCHEDULING JOBS AND ERROR HANDLING THAT THE USER ;IS NOT ENABLED TO HANDLE HIMSELF + EXTERNAL TIME,TIMEF,CLKFLG,REQCLK,APRCHL,APRPC,UPTIME EXTERNAL JOBDAT,JOBTPC,JOBCNI,JOBAPR,APRERR,SCHEDF @@ -20,6 +21,7 @@ EXTERNAL RELEA9,CRSHWD,CRASHX INTERNAL FTTTYSER ;THIS ROUTINE MAY BE ASSEMBLED TO WORD EITHER ; THE OLD SCNSER OR THE NEW TTYSER. + INTERNAL FTCHECK,FTMONP IFN FTCHECK+FTMONP,< @@ -36,8 +38,7 @@ DAMESS: ASCIZ /-JAN-/ CLOCK: POINT 36,CIPWTM,35 ;BYTE POINTER TO CLOCK REQ QUEUE > - - INTERN APRINT + INTERN APRINT APRINT: JRST APRPAR ;ALWAYS CHECK APR AND PI DEVICES JRST . ;CHECK OTHER DEVICES @@ -76,8 +77,7 @@ APRER1: CONO APR,1000+APRCHN ;NOW CLEAR CLOCK FLAG TLNE TAC,USRMOD ;IS PC FROM USER MODE? JRST APRER4 ;YES, GO TRAP TO HIM JRST APRER2 ;NO. GO CHECK IN CASE ALSO A SERIOUS ERROR - -;OTHER APR INTERRUPTS BESIDES CLOCK + ;OTHER APR INTERRUPTS BESIDES CLOCK APRER: EXCH TAC,APRCHL ;SAVE TAC, GET PC TLNE TAC,USRMOD ;IS PC IN USER MODE? @@ -103,8 +103,7 @@ APRER3: TLZ TAC,440000 ;CLEAR FOV (PC CHANGE ON PDP-6) AND AR OVF FLAGS CONO APR,430110+APRCHN ;CLEAR ALL ERROR FLAGS WHICH CAN CAUSE INTERRUPTS ; EXCEPT CLOCK FLAG(ELSE LOSE TIME OF DAY) JEN @APRCHL ;DISMISS INTERRUPT - -APRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE? + APRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE? JRST APRER3 ;NO. IGNORE EXEC OVERFLOW (MUST BE FOV OR AROVF MOVEM TAC,APRPC ;STORE ERROR PC FOR CLK CHANNEL CONI APR,APRERR ;STORE ERROR FLAGS @@ -123,8 +122,7 @@ IFN FTHALT,< > JRST APRER3 ;NO,MUST BE UUO LEVEL(OR USER MODE AND ; MEMORY DROPPED OUT) - -SUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK) + SUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK) ;THIS ROUTINE RUNS ON THE LOWEST PRIORITY PI CHANNEL AND AT UUO LEVEL ;TO CAUSE AN INTERRUPT ON CLK CHANNEL: @@ -241,9 +239,8 @@ CLKERR: SKIPN 17,JOBDAT ;CURRENT JOB DATA AREA, IS THERE ONE? SKIPE TAC,APRERR ;IT THIS AN ERROR INTERRUPT? PUSHJ PDP,APRILM ;YES, GO PROCESS ERROR, APRILM WILL CLEAR APRERR ; FLAG IMMEDIATELY - -EXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD -EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JDB,PMONTB + EXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD +EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JOB,PMONTB RSCHED: SKIPN TIMEF ;HAS CLOCK GONE OFF SINCE LAST CALL? JRST CIP6 ;NO, JUST RESCHEDULE @@ -286,8 +283,7 @@ CIP3: SETZB IOS,TIME ;YES, RESET TIME OF DAY LDB TAC,PMONTB CAMGE TAC,TAC1 ;END OF MONTH? JRST CIP3 ;YES. - -;PROCESS TIMING REQUESTS STORED IN QUEUE + ;PROCESS TIMING REQUESTS STORED IN QUEUE CIP2: HRRZ STOR,CLOCK ;GET END OF LIST CIP4: CAIN STOR,CIPWTM1 ;END YET? @@ -318,8 +314,7 @@ CIP6: PUSHJ PDP,NXTJOB ;CALL SCHEDULER SETZM SCHEDF ;CLEAR FORCED SCHEDULING FLAG CAMN ITEM,JOB ;IS NEXT JOB SAME AS LAST ONE? JRST CIP8 ;YES, JUST RESTORE ACS AND DISMISS - -;DIFFERENT JOB. SAVE SOFTWARE STATE(HARDWARE ALREADY SAVED) + ;DIFFERENT JOB. SAVE SOFTWARE STATE(HARDWARE ALREADY SAVED) EXTERNAL JOB,JOBDAT,JOBPRT,USRPRT,USRHCU,JOBJDA @@ -336,8 +331,7 @@ EXTERNAL JOB,JOBDAT,JOBPRT,USRPRT,USRHCU,JOBJDA ; CHANNEL LOCATIONS (JOBJDA+1..,JOBJDA+17), ADD JA,T1 ;RELOCATE TO USER AREA BLT T,JOBJDA(JA) ; STOP WITH USER CHANNEL 0-1+C(USRHCU) - -;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE + ;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE INTERNAL NULJOB,NULADR EXTERNAL JOB,JBTDAT,JOBDAT,USRPRT,JOBPRT @@ -391,7 +385,6 @@ IFN FTCHECK, SETZB 0,NULERR ;CLEAR AC 0 USED FOR USUAL MONITORING - ; CLEAR FLAG SAYING ERROR IN NULL JOB ; OF NULL TIME INTERVAL ; LOC JOBDAT (LOCATION OF NULL JOB DATA AREA) TO 0 @@ -402,8 +395,7 @@ IFN FTCHECK, ;CALL: MOVEI TAC,ADR. OF MESSAGE ; PUSHJ PDP,PHOLD @@ -574,10 +563,8 @@ ESTOP1: MOVSI TAC,JERR ;SSET ERROR BIT IN JOB STATUS WORD MOVSI TAC,637163 ;FIND SYS DDB PUSHJ PDP,DEVSRC ;SYSTEM ERROR IF NOT FOUND JSP DAT,ERROR - PUSHJ PDP,RELEA9 ;YES, RELEASE SYSTEM TAPE WITHOUT WAITING - -;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED + ;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED ;CALL: ; MOVE ITEM, JOB NUMBER ; PUSHJ PDP, STOP1 @@ -618,8 +605,7 @@ IFN FTSWAP,< JRST STOP2 ;NO SETOM SCHEDF ;YES, FORCE RESCHEDULING EVEN IF JOB IN EXEC MODE JRST STOP2 ;YES, MAKE CLK RESCHEDULE ANOTHER JOB - -;ROUTINE TO REQUE JOB WHICH HAS HAD A COMMAND TYPED + ;ROUTINE TO REQUE JOB WHICH HAS HAD A COMMAND TYPED ;WHICH NEEDS CORE AND THE CORE IMAGE IS ON THE DISK. ;OR IS IN CORE AND HAS ACTIVE DEVICES. ;CALLED FROM COMMAND DECODER @@ -638,7 +624,6 @@ INTERNAL FTSWAP IFN FTSWAP,< TLNN TAC,CMWB PUSHJ PDP,REQUE - > POPJ PDP, @@ -648,12 +633,11 @@ INTERNAL FTSWAP IFN FTSWAP, - -;ROUTINE TO SETUP MONITOR JOB TO RUN LATER AT UUO LEVEL + ;ROUTINE TO SETUP MONITOR JOB TO RUN LATER AT UUO LEVEL ;CALLED BY COMMANDS WHICH MAY OR MAY NOT NEED TO ;RUN MONITOR JOB DEPENDING ON WHETHER JOB HAS CORE(KJOB,IJOB) ;TTY WILL REMAIN IN MONITOR MODE @@ -690,8 +674,7 @@ IFN JDAT-PROG,< PUSH PDP,TAC1 ;SAVE STOP ADDRESS JRST (TAC) ;RETURN AND DO MONITOR JOB ; WITH TT DDB,OUTPUT BYTE POINTER, AND JOB NO. - -;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN + ;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN ;WITH SPECIFIED STARTING ADDRESS INCLUDING PC FLAGS ;CALLED ONLY WHEN JOB IN CORE AND AFTER JOB HAS BEEN ;SAFELY STOPPED IN ONE OF 3 STATES: @@ -794,7 +777,7 @@ SETSLP: MOVSI TAC,CLKR ;FLAG THAT A CLOCK REQUEST HAS BEEN PUT IN INTERNAL WAKE -EXTERNAL PJSTS,RNQ,SLPQ +EXTERNAL PJBSTS,RNQ,SLPQ WAKE: MOVEI TAC1,RNQ ;RUN QUEUE CODE MOVE ITEM,TAC ;JOB NO. @@ -807,8 +790,7 @@ WAKE: MOVEI TAC1,RNQ ;RUN QUEUE CODE ; (CONTROL C, START CAN GET JOB OUT SLEEP) JRST SETR2 > - -;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE + ;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE ;JOB NEVER GETS ONE DEVICE AND WAITS FOR SECOND, SINCE TYPING ;CONTROL C WOULD NEVER FINISH WITH FIRST DEVICE ;CALL PUSHJ PDP,GETDCXX @@ -836,8 +818,7 @@ GETWT: PUSHJ PDP,DVWAT1 ;NOT AVAIL., GO WAIT FOR IT SOSL DCREQ ;NO, REDUCE DATA CONTROL REQUEST SETOM DCAVAL ;SET AVAIL., SOME OTHER JOB WAITING FOR IT JRST GETWT ;TRY AGAIN - -;ROUTINE TO WAIT FOR A SHARABLE DEVICE + ;ROUTINE TO WAIT FOR A SHARABLE DEVICE ;CALLED AT UUO LEVEL ONLY BY DEVICE SERVICE ROUTINES ;CALL: AOSLE XXREQ ;ADD 1 TO SHARABLE DEVICE REQUEST COUNT ; ;IS DEVICE AVAILABLE? @@ -869,8 +850,7 @@ SETSTT: MOVE AC3,JOB ;CURRENT JOB NO. PJBS1: POINT JWSIZ,JBTSTS(AC3),JWPOS ;BYTE POINTER TO JOB STATUS ; WORD WAIT QUEUE CODE - -;ROUTINE TO SET JOB TO RUN AFTER IT HAS BEEN STOPPED + ;ROUTINE TO SET JOB TO RUN AFTER IT HAS BEEN STOPPED ;BECAUSE IT HAD TO WAIT FOR IO TO COMPLETE FOR SOME DEVICE ;EACH SERVICE ROUTINE WILL AT INTERRUPT LEVEL ;CHECK EACH TIME IT FINISHED A TASK(RUNFFERFUL) @@ -903,7 +883,6 @@ SETIO1: LDB TAC,PJOBN INTERNAL FTSWAP IFN FTSWAP,< EXTERN QJOB,JBTSTS - MOVSI QJOB,JBTSTS MOVSI TAC1,JRQ ;SET JOB TO BE REQUEUED AT NEXT CLOCK TICK TDNN TAC1,JBTSTS(TAC) ;IS REQUE BIT ALREADY ON? AOS QJOB ;NO, INCREMENT COUNT ONCE FOR EACH JOB @@ -911,8 +890,7 @@ IFN FTSWAP,< > NULTST: SKIPE JOB ;IS NULL JOB RUNNING? POPJ PDP, ;NO LET OTHER JOB RUN TILL SCHEDULER IS TRAPPED TO - -;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE + ;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE ;CALLED AT ANY LEVEL ;CALL: PUSHJ PDP,STOP2 ; RETURN IMMEDIATELY EXCEPT IF AT UUO LEVEL @@ -927,8 +905,7 @@ STOP2: CONO PI,PIOFF ;PREVENT CLOCK INTERRUPT DURING STOP2 CODE CONO PI,PICLK ;TURN PI BACK ON AND REQUESST INTERRUPT TO ; CLK PI CHANNEL(LOWEST PRIORITY CHANNEL) POPJ PDP, ;INTERRUPT IMMEDIATELY IF AT UUO LEVEL - -;ROUTINE TO WAIT TILL DEVICE CATCHES UP WITH USER AND BECOMES INCTIVE + ;ROUTINE TO WAIT TILL DEVICE CATCHES UP WITH USER AND BECOMES INCTIVE ,CALLING SEQUENCE , PUSHJ PDP, WAIT1 , EXIT ALWAYS RETURN HERE @@ -950,8 +927,7 @@ WAIT1: MOVE IOS,DEVIOS(DEVDAT) POPJ PDP, ;RETURN PUSHJ PDP,WSYNC ;WAIT JRST WAIT1 - -;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE + ;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE ;IE UNTIL CURRENT BUFFER ACTIVITY IS COMPLETE ;CALLED ONLY FROM UUO LEVEL ;CALL: MOVE DEVDAT,ADR. OF DEVICE DATA BLOCK diff --git a/src/cmb50.ccl b/src/cmb50.ccl new file mode 100644 index 0000000..5ff6a72 --- /dev/null +++ b/src/cmb50.ccl @@ -0,0 +1,8 @@ +A.RLX_CDRSR6.REL,CDRSRX.REL,CLKCSS.REL,CLOCK1.REL,COMCON.REL,CORE1.REL +B.RLX_DCSINT.REL,DIS340.REL,DIST30.REL,DLSINT.REL,DPDINT.REL,DSKINT.REL +C.RLX_DSKSER.REL,DTASRN.REL,DTCSRN.REL,ERRCON.REL,JOBDAT.REL,LPTSER.REL +D.RLX_MTASRX.REL,MTCSR6.REL,NULSEG.REL,SEGCON.REL,PLTSER.REL,PTPSER.REL +E.RLX_PTRSER.REL,PTYSRF.REL,PTYSRH.REL,SCHEDB.REL,SCNSRF.REL,UUOCON.REL +F.RLX_PATCH.REL,SYSINI.REL,SYSMAK.REL,EDDT.REL,ONCEB.REL +SYS50.REL/B_A.RLX,B.RLX,C.RLX,D.RLX,E.RLX,F.RLX +DSK:/D_*.RLX diff --git a/src/cmb50n.ccl b/src/cmb50n.ccl new file mode 100644 index 0000000..3b51e94 --- /dev/null +++ b/src/cmb50n.ccl @@ -0,0 +1,8 @@ +A.RLX_CDRSR6.REL,CDRSRX.REL,CLKCSS.REL,CLOCK1.REL,COMCON.REL,CORE1.REL +B.RLX_DCSINT.REL,DIS340.REL,DIST30.REL,DLSINT.REL,DPDINT.REL,DSKINT.REL +C.RLX_DSKSER.REL,DTASRN.REL,DTCSRN.REL,ERRCON.REL,JOBDAT.REL,LPTSER.REL +D.RLX_MTASRX.REL,MTCSR6.REL,NULSEG.REL,PLTSER.REL,PTPSER.REL +E.RLX_PTRSER.REL,PTYSRF.REL,PTYSRH.REL,SCHEDB.REL,SCNSRF.REL,UUOCON.REL +F.RLX_PATCH.REL,SYSINI.REL,SYSMAK.REL,EDDT.REL,ONCEB.REL +SYS50.REL/B_A.RLX,B.RLX,C.RLX,D.RLX,E.RLX,F.RLX +DSK:/D_*.RLX diff --git a/src/comcon.mac b/src/comcon.mac index 050b588..464d953 100644 --- a/src/comcon.mac +++ b/src/comcon.mac @@ -37,8 +37,7 @@ COMCON: ;IF A COMMAND FUNCTION CANNOT DO THIS, IT MUST JUST SET ;THE JOB TO RUNABLE STATUS AND RETURN IMMEDIATELY ;OR DELAY THE COMMAND FOR LATER EXECUTION - -INTERNAL COMMAND + INTERNAL COMMAND INTERNAL FTLOGIN,FTSWAP,FTTIME EXTERNAL COMCNT,TTYCOM,JBTSTS,JOBMAX,JBTDAT,JBTADR,JOBHCU EXTERNAL CONFIG,HIGHJB @@ -79,8 +78,7 @@ COMLP: MOVE T2,COMTAB(T) ;GET NEXT ENTRY FROM COMMAND TABLE COMNEQ: AOBJN T,COMLP ;NO, KEEP LOOKING CAIN T4,1 ;DID ONE AND ONLY ONE COMMAND MATCH? MOVE T,T3 ;YES, GET ITS INDEX - -COMFND: MOVE TAC1,DISP(T) ;GET DISPATCH TABLE ENTRY, + COMFND: MOVE TAC1,DISP(T) ;GET DISPATCH TABLE ENTRY, PUSH PDP,TAC1 ;SAVE RH(DISPATCH ADR,+BITS) MOVE T,JBTSTS(ITEM) ;JOB STATUS WORD FOR THIS JOB IFN FTLOGIN,< @@ -120,8 +118,7 @@ IFN FTKCT,< > CAMLE ITEM,HIGHJB ;HIGHEST JOB NUMBER ASSIGNED? MOVEM ITEM,HIGHJB ;YES,SAVE IT FOR SCHEDULER SCAN OF JOBS - -CHKRUN: TLNE T,RUN ;RUN BIT ON IN JOB STATUS? + CHKRUN: TLNE T,RUN ;RUN BIT ON IN JOB STATUS? TLNN TAC1,NORUN ;YES, DOES THIS COMMAND REQUIRE A JOB? JRST CHKACT ;NO JSP TAC,COMER ;YES. @@ -150,6 +147,7 @@ IFN FTSWAP,< TLNN TAC1,INCOR ;IS THIS TRUE? CHKDLY: HRRI TAC1,DLYCM1 ;NO, JUST DELAY COMMAND UNTIL SWAP OUT OR IN IS FINISHED JRST COMDIS ;AND DISPATCH TO DELAY COMMAND +> CHKCO2: TLNE TAC1,NOACT ;CAN COMMAND BE PERFORMED WITH ACTIVE DEVICES? PUSHJ PDP,RUNCHK ;NO, RETURN IF JOB STOPPED AND NO ACTIVE DEVICES CHKCO1: TLNE TAC1,NOCORE ;DOES THIS COMMAND NEED CORE? @@ -158,8 +156,7 @@ CHKCO1: TLNE TAC1,NOCORE ;DOES THIS COMMAND NEED CORE? JSP TAC,COMER ;NO, PRINT "NO CORE ASSIGNED" ASCIZ /NO CORE ASSIGNED / - -CHKXPN: TLNN TAC1,PLSXPN ;DOES THIS COMMAND NEED CORE TO BE EXPANDED? + CHKXPN: TLNN TAC1,PLSXPN ;DOES THIS COMMAND NEED CORE TO BE EXPANDED? JRST COMGO ;NO HLRE IOS,JOBHCU(JDAT) ;YES, IS CORE STILL COMPRESSED(SAVE DID NOT GO ; TO COMPLETION) @@ -189,8 +186,7 @@ COMGO: MOVSI IOS,CMWRQ COMDIS: MOVEI IOS,0 ;CLEAR IOS FOR SETTING DISPATCH ADDRESSES PUSHJ PDP,(TAC1) ;DISPATCH TO COMMAND SETUP ROUTINE. - -;RETURN FROM COMMAND SETUP ROUTINE + ;RETURN FROM COMMAND SETUP ROUTINE COMRET: POP PDP,T1 ;RESTORE COMMAND FLAGS POP PDP,DEVDAT ;RESTORE TTY DDB ADDRESS. @@ -230,8 +226,7 @@ IFE FTLOGIN, < PUSHJ PDP,PRSPC PUSHJ PDP,DAYTM1 > - -PCRLF: TLNE T1,ERRFLG ;DID AN ERROR OCCUR? + PCRLF: TLNE T1,ERRFLG ;DID AN ERROR OCCUR? PUSHJ PDP,PRQM ;YES. APPEND ? TLNN T1,NOCRLF ;SUPRESS CRLF? PUSHJ PDP,CRLF ;NO @@ -266,8 +261,7 @@ SKPBR1: PUSHJ PDP,GETCHR JUMPN TEM,SKPBR2 ;LOOK FURTHER FOR BREAK JRST TPOPJ ;UNLESS NO MORE CHARS > - -;TABLE OF CONSOLE COMMANDS + ;TABLE OF CONSOLE COMMANDS INTERNAL FTATTACH,FTTIME,FTTALK,FTEXAMINE,FTLOGIN,FTREASSIGN INTERNAL FTFINISH,FTCCL @@ -309,8 +303,7 @@ NOMESS=10 ;NO COMMAND RESPONSE EVER, DO NOT CALL TTYSTR ;T TAKEN ABOVE BY 'PLSXPN' BIT ERRFLG=1 ;COMMAND ERROR - -DEFINE NAMES< + DEFINE NAMES< C START,START,NOPER!TTYRNU!INCORE!NOACT!NORUN C HALT,STOP,NOCORE!NOJOBN!NOLOGIN!NOINCK!CMWRQ C KJOB,KJOB,NOCORE!NOJOBN!NOINCK!NOLOGIN!NOACT!NORUN!NOPER!NOCRLF!NOMESS!NOTRAN @@ -382,23 +375,20 @@ IFN FTCCL,< C CTEST,CCLRUN,NOCORE!NOPER!TTYRNU!NOCRLF!INCORE!NOACT!NORUN > > - -;GENERATE TABLE OF SIXBIT COMMAND NAMES + ;GENERATE TABLE OF SIXBIT COMMAND NAMES DEFINE C(A,B,D) < > COMTAB: NAMES DISPL=.-COMTAB ;LENGTH OF TABLE - -;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS + ;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS DEFINE C(A,B,D) < Z B (D) > DISP: NAMES - -;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE + ;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE ;WITH FOLLOWING AC'S SET: ;TAC= BYTE POINTER TO COMMAND STRING(SPACE OR CR AFTER COMMAND NAME) ;ITEM = JOB NUMBER @@ -442,8 +432,7 @@ IFN FT2REL,< MOVEI TAC,0 ;RETURN BOTH PHYSICAL AND LOGICAL CORE SOS (PDP) ;NEGATE SKIP RETURN WHICH CORE1 WILL DO JRST CORE1 ;GO DO IT AND RETURN TO CALLER - -; "PJOB" PRINT JOB NUMBER OF JOB TTY IS ATTACHED TO + ; "PJOB" PRINT JOB NUMBER OF JOB TTY IS ATTACHED TO INTERNAL PJOB,DECLF @@ -478,7 +467,7 @@ IFE FTSWAP+FTLOGIN,< JUMPE PROG,DLYCM1 ;DELAY COMMAND IF CORE ASSIGNED ON DISK JSP TAC1,MONJOB ;YES, SCHEDULE MONITOR JOB(PC IN EXEC MODE) ;RETURN HERE AT UUO LEVEL WHEN SCHEDULED -JOBKL: MOVEI TAC1,ESTOP ;PUT ESTOP ON END OF PDL + JOBKL: MOVEI TAC1,ESTOP ;PUT ESTOP ON END OF PDL JSP TAC,MONSTR ;GO SETUP ACS AND PD LIST PUSHJ PDP,JOB1 ;FLUSH CORE AFTER RELEASING DEVICES JOBKA: @@ -497,8 +486,7 @@ CERR: JRST ERRMES JOBKB: SETZM -1(PDP) ;CLEAR NOJOBN SO COMRET WILL PRINT ERROR MSG. JRST ATT4 ;"NOT A JOB" - -; "START L" OR "START" - START AT LOC, L OR STARTING ADDRESS + ; "START L" OR "START" - START AT LOC, L OR STARTING ADDRESS INTERNAL FT2REL EXTERNAL JOBSA @@ -528,8 +516,7 @@ SNOARG: SKIPA TAC1,JOBSA(JDAT) ;NO. ARG SPECIFIED, USE START ADR SUPPLIED ; BY PROGRAM END STATEMENT AND STORED BY LINKING LOADER ; SKIP INTO REENTER, START WITH PC IN USER MODE > - -;"REENTER" - REENTER USER PROGRAM + ;"REENTER" - REENTER USER PROGRAM EXTERNAL JOBREN @@ -592,8 +579,7 @@ CONT: MOVSI TAC1,JERR ASCIZ /CAN'T CONTINUE / - -; "CORE #" - ASSIGNS #*1024 WORDS OF CORE TO JOB + ; "CORE #" - ASSIGNS #*1024 WORDS OF CORE TO JOB ; "CORE" WITH NO ARG. WILL PRINT NO OF FREE BLOCKS LEFT ; WITHOUT AFFECTING CURRENT ASSIGNMENT OF CORE ; JOB NOT IN MIDDLE OF SWAPPING @@ -625,8 +611,7 @@ COR1: JUMPN PROG,COR0 ;GO RELEASE ALL DEVICES IF HE HAS CORE IN MEMORY YET JRST DLYCM ;AND DELAY COMMAND TILL CORE IS IN MEMORY ; DLYCM WILL SWAP IT IN. > - -COR2: IFN FTTTYSERM,< + COR2: IFN FTTTYSERM,< MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB ADR > PUSHJ PDP,INLMES ;PRINT ? FOR PATCH @@ -665,8 +650,7 @@ VIR. CORE LEFT =/ MOVE TAC,VIRTAL ;PRINT AMOUNT OF FREE SWAP SAPCE LEFT JRST RADX10 ;IN DECIMAL > - -; "SSAVE FILENAM.EXT [PROJ,PROG] CORE" + ; "SSAVE FILENAM.EXT [PROJ,PROG] CORE" ;WORKS LIKE SAVE, EXCEPT THAT HIGH SEG IS SAVED AS SHARABLE(EXT=SHR) ;INSTEAD OF NON-SHARABLE(EXT=HGH) @@ -703,8 +687,7 @@ LOGREF: MOVEM TAC,PRJPRG(ITEM) ;PRJ,PRG NRS. IN REFLAG SETZM REFLAG ;ONLY ONCE POPJ PDP, > - -;"HELP" -HELP COMMAND + ;"HELP" -HELP COMMAND INTERNAL FTLOGIN @@ -744,8 +727,7 @@ ALOGN1: PUSHJ PDP,TTYATT ;MAKE SURE TTY IS ATTACHED IN CASE JFCL > POPJ PDP, - -INTERN FTCCL + INTERN FTCCL IFN FTCCL,< @@ -784,8 +766,7 @@ CLOG2: SKIPE TAC,REFLAG ;REFLAG SET NON-ZERO FOR AUTOMATIC LOGIN? MOVE TAC,[SIXBIT /LOGIN/] ;CUSP NAME JRST ARCOM ;RUN IT > - -; "R CUSTNAME CORE" - DOES "RUN SYS:CUSPNAME" + ; "R CUSTNAME CORE" - DOES "RUN SYS:CUSPNAME" RCOM: MOVEI TAC,0 ;NO FILE NAME, TTY WILL SUPPLY IT JRST ARCOM1 @@ -812,14 +793,13 @@ IFE FTSWAP,< IFN FTSWAP,< JRST DLYCM ;NO. DELAY COMMAND UNTIL IN CORE > - -; "ASSIGN DEV:NAME" - ASSIGN DEVICE TO JOB AND GIVE IT LOGICAL NAME + ; "ASSIGN DEV:NAME" - ASSIGN DEVICE TO JOB AND GIVE IT LOGICAL NAME EXTERNAL DEVLST,PJOBN,SYSTAP ASSIGN: PUSHJ PDP, CTEXT1 ;GET FIRST ARGUMENT JUMPE TAC1, NOTENF ;NO ARGUEMNT TYPED IF 0 -IFN FTLOGIN, - -;ALREADY ASSIGNED TO ANOTHER JOB + ;ALREADY ASSIGNED TO ANOTHER JOB ASSER1: IFE FTTTYSER,< PDP PDP, TAC @@ -903,8 +881,7 @@ IFN FTTTYSER,< > ASSMS2: ASCIZ /ALREADY ASSIGNED TO JOB / - -;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME + ;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME ASSFIN: SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME IFE FTTTYSER,< POP PDP,TAC ;RESTORE INPUT BYTE POINTER @@ -969,8 +946,7 @@ DEAER2: MOVE TAC1,DEVNAM(DEVDAT) ;PRINT PHYSICAL DEVICE NAME ASCIZ / WASN'T ASSIGNED / - -INTERNAL FTREASSIGN + INTERNAL FTREASSIGN IFE FTREASSIGN,< REASSI=UUOERR > @@ -1048,8 +1024,7 @@ REASS1: EXCH ITEM,(PDP) ;NEW JOB NO. IN ITEM REASS4: HRRZ DSER,DEVSER(DEVDAT) HRRZM DEVDAT,JOBFDV(JDAT) MOVE UCHN,USRHCU - -REASS2: MOVE DEVDAT,USRJDA(UCHN) ;GET XWD UUO BITS,DDB ADDRESS + REASS2: MOVE DEVDAT,USRJDA(UCHN) ;GET XWD UUO BITS,DDB ADDRESS HRRZ TAC,JOBFDV(JDAT) ;GET ADDR. OF DDB SAVED BY COMMAND PUSH PDP,UCHN ;SAVE USER CHANNEL CAIN TAC,(DEVDAT) ;IS CHOSEN DEVICE ON THHS CHANNEL? @@ -1088,8 +1063,7 @@ REASE7: MOVE TAC1,DEVNAM(DEVDAT) ASCIZ / CAN'T BE REASSIGNED / > - -INTERNAL FTATTACH + INTERNAL FTATTACH IFN FTATTACH,< ;"ATTACH DEVNAME" -ATTACHES A PREVIOUSLY PARTITIONED DEVICE @@ -1190,8 +1164,7 @@ ATT6: POP PDP,DEVDAT ASCIZ /WASN'T DET / > - -INTERNAL FTATTACH + INTERNAL FTATTACH IFN FTATTACH,< ;"DETACH" - DETACH CONSOLE FROM JOB @@ -1234,8 +1207,7 @@ DETACH: PUSHJ PDP,CTEXT1 ;GET ARGUMENT HRRM TAC1,TTYTAB(TAC) ;SO THAT SCNSER CHECKS FOR THIS POP PDP,DEVDAT ;RESTORE TTY DDB POPJ PDP, ;SUCCESSFUL RETURN - -TEMP1: POP PDP,DEVDAT ;RESTORE TTY DDB + TEMP1: POP PDP,DEVDAT ;RESTORE TTY DDB JRST DEAER1 ;PRINT ERROR MSG. AND RETURN TEMP2: IFE FTTTYSER,< POP PDP,DEVDAT ;RESTORE TTY DDB @@ -1247,10 +1219,8 @@ IFN FTTTYSER,< LOGER1: JSP TAC,ERRMES ASCIZ /CAN'T DET DEV / - >> ;CLOSE BOTH FTLOGIN AND FTATTACH CONDITIONALS. - -;"DAYTIME" - PRINT TIME OF DAY + ;"DAYTIME" - PRINT TIME OF DAY EXTERNAL TIME,THSDAT,MONTAB,JIFMIN @@ -1287,8 +1257,7 @@ DAYTM1: MOVE TAC,THSDAT ;PRINT TODAY'S DATE PUSHJ PDP,PRSPC MOVE TAC,TIME ;PRINT TIME OF DAY JRST PRTIM1 - -INTERNAL FTTIME + INTERNAL FTTIME IFN FTTIME,< ;"TIME (JOB NO.)" - PRINT TOTAL AND INCREMENTAL RUNNING TIME FOR A JOB ;FOLLOWED BY KILO-CORE TICKS @@ -1329,8 +1298,8 @@ RUN2: PUSHJ PDP,INLMES ;PRINT ASCIZ /UP / MOVE TAC,UPTIME JRST PRTIME ;AND RETURN - -RUN1: + + RUN1: IFE FTLOGIN,< MOVEI TAC,0 ;GET SET TO CLEAR INCREMENTAL RUN TIME > @@ -1356,8 +1325,7 @@ IFE FTKCT,< JRST PRTIME ;PRINT IT AND RETURN > > - -;ROUTINE TO LET TTY TALK TO ANY OTHER RING OF TTYS + ;ROUTINE TO LET TTY TALK TO ANY OTHER RING OF TTYS ; "TALK TTYN" ; TTYN NEED NEVER HAVE BEEN TYPED ON BEFORE @@ -1387,8 +1355,7 @@ TALK1: MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB ASCIZ /BUSY / > - -INTERNAL FTEXAMINE + INTERNAL FTEXAMINE IFN FTEXAMINE,< @@ -1464,8 +1431,9 @@ DCOM1: PUSHJ PDP,DEAT ;CHECK FOR AC REFERENCE HRLI TAC1,PROG ;SET FOR RELOCATION MOVEM IOS,@TAC1 POPJ PDP, - -DEAT: TLZ TAC1,-1 ;CLEAR LH IN CASE THIS IS A SUCCESSIVE E WITH NO ARG + + + DEAT: TLZ TAC1,-1 ;CLEAR LH IN CASE THIS IS A SUCCESSIVE E WITH NO ARG HRRM TAC1,JOBEXM(JDAT) ;STORE FOR NEXT TIME, DO NOT TOUCH LH(D OR E LAST) ; YES, WAS JOB STOPPED IN USER MODE? CAIL TAC1,20 ;IS IT AN AC? @@ -1484,10 +1452,8 @@ IFN FT2REL,< ECOMA: JSP TAC,ERRMES ;OUT OF BOUNDS ASCIZ /OUT OF BOUNDS / - > - -IFN FTLOGIN,< + IFN FTLOGIN,< ;"SCHEDULE OCTN" - SETS RH OF STATES TO OCTN, IF TYPED FROM ; THE OPERATOR CONSOLE (C(DEVOPR)), OTHERWISE ILLEGAL ;"SCHEDULE" WITH NO ARGUMENTS TYPES OUT RH OF STATES, LEGAL FOR ALL. @@ -1525,8 +1491,7 @@ IFN FTTTYSER,< ;COMMAND NOT IN COMMAND DICECTORY NOCOM: JRST COMERR ;NO, APPEND ? TO WHAT HE TYPED IN - -IFN FTFINISH,< + IFN FTFINISH,< ; "FINISH DEVICE" - CLOSES,RELEASE AND DESASSIGNS DEVICE ;JOB MUST HAVE CORE @@ -1558,8 +1523,7 @@ FDV1: HRRZ DEVDAT,USRJDA(UCHN) ;GET NEXT DEVICE JFCL ;IGNORE IF NOT ASSIGNED BY CONSOLE JRST ESTOP ;STOP JOB SO HE CANNOT CONTINUE > - -IFN FTTIME,< + IFN FTTIME,< ;"RESOURCES" - PRINT OUT AVAILABLE DEVICES AND FREE BLOCKS ON THE DISK EXTERNAL DEVLST @@ -1608,8 +1572,7 @@ LOP02: HLRZ T,DEVSER(T) ;GET NEXT DEVICE IN CHAIN JUMPN T,LOP01 ;IS THERE ONE? JRST CRLF ;NO. DONE, PRINT CR. LF AND THEN POPJ > - -EXTERNAL CPOPJ,STUSER + EXTERNAL CPOPJ,STUSER ;ROUTINE TO CHECK FOR ACTIVE DEVICES ;NEVER GET HERE DURING SWAP IN OU OUT ;SINCE COMMAND TABLE SHOULD AHVE NOTRAN BIT ON @@ -1670,8 +1633,7 @@ STOPC: HLRZ DEVDAT,DEVSER(DEVDAT) JRST STOPD JRST CPOPJ1 ;OK TO STOP > - -SUBTTL COMCSS - COMMON COMMAND SUBROUTINES + SUBTTL COMCSS - COMMON COMMAND SUBROUTINES ;ROUTINE TO RETURN NEXT ALPHANUMERIC STRING ; IN COMMAND LINE (SIXBIT) @@ -1698,7 +1660,7 @@ IFE FTTTYSER,< CTEX0: ILDB TEM,TAC > IFN FTTTYSER,< -EXTERN TAKR,GETCHAR +EXTERN TAKR,GETCHR LDB TEM,TAKR(DAT) ;GET LAST CHAR. JRST CTEX1 CTEX0: PUSHJ PDP,GETCHR ;ROUTINE IN SCNSER TO PICK UP CHAR. @@ -1709,8 +1671,7 @@ CTEX1: PUSHJ PDP, CTEX ;IS IT ALPHANUMERIC TLNE T,770000 ;SIX CHARS YET? IDPB TEM,T ;NO. BUILD WORD JRST CTEX0 ;LOOP FOR MORE - -;SCAN FOR ALPHANUMERIC CHAR IN TEM + ;SCAN FOR ALPHANUMERIC CHAR IN TEM CTEX: CAILE TEM,"Z"+40 ;GREATER THAN LC Z? JRST CTEXA ;YES. NOT SIXBIT. CAIL TEM,"A"+40 ;LOWER CASE LETTER? @@ -1735,8 +1696,7 @@ CTXCNC: MOVSI TAC1,(SIXBIT /HAL/) ;MAKE PHONY HALT COMMAND MOVSI TEM,12 ;WITH LF FOR TERMINATION JRST TPOPJ ;AND RETURN UP A LEVEL > - -;ROUTINE TO IGNORE LEADING SPACES, TABS, AND NULLS + ;ROUTINE TO IGNORE LEADING SPACES, TABS, AND NULLS ;ALSO CLEARS TAC1 ;DOES NOT RETURN IF PREVIOUS CHAR. OR NEXT NON-SPACING ;CHAR, IS CR(IE POPS SUBROUTINE LEVEL UP 1 ON RETURN) @@ -1780,8 +1740,7 @@ SKIPS3: CAIN TEM,3 ;^C? MOVEI TEM,12 ;FOR BREAK CONSISTENCY JRST TPOPJ ;RETURN ONE LEVEL UP > - -;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT + ;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT ;CALLED FROM OCTIN, RETURNS TO SECOND LEVEL ON PDL ;CALL: MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING ; PUSHJ PDP, COMERA @@ -1823,8 +1782,7 @@ IFE FTTTYSER,< DPB T,DAT > TDZA ITEM,ITEM ;CLEAR JOB NO. AND SKIP INTO CRLF ROUT. - -;ROUTINE TO PRINT A COMMAND ERROR MESSAGE + ;ROUTINE TO PRINT A COMMAND ERROR MESSAGE ;SAME CALL AS CONMES INTERNAL ERRMES @@ -1869,8 +1827,7 @@ IFE FTTTYSER,< IDPB TEM,DAT > JRST CON0 ;KEEP GOING - -;ROUTINE TO PRINT INLINE ASCIZ MESSAGE + ;ROUTINE TO PRINT INLINE ASCIZ MESSAGE ;CALL: PUSHJ PDP,INLMES ; ASCIZ /THE MESSAGE/ ;RETURN TO NEXT LOC AFTER MESSAGE @@ -1900,6 +1857,7 @@ IFE FTTTYSER,< PRSPC: MOVEI TAC,[ASCIZ / /] JRST CONMES + ;ROUTINE TO PRINT "TOO FEW ARGUMENTS" ;CALL: MOVE DAT,BYTE POINTER ; PUSHJ PDP,NOTENF @@ -1969,7 +1927,7 @@ DEA1: CAIE DEVDAT,@(PDP) ;IS THIS DEVICE NOT TO BE DEASSIGNED? POP PDP,DEVDAT ;RESTORE TTY DDB ADDRESS POPJ PDP, -;ROUTINE TO REA CONSOLE AND CONVERT ANY RADIX NUMBER +;ROUTINE TO READ CONSOLE AND CONVERT ANY RADIX NUMBER ; CALL: MOVE TAC1, DESIRED RADIX ; MOVE TAC, BYTE POINTER TO FIRST CHARACTER ; PUSHJ PDP, ANYRIN @@ -2014,8 +1972,7 @@ OCT0: CAIGE TEM,175 ;ALTMODES(175 OR 176)? IFE FTTTYSER,< ILDB TEM,TAC ;NEXT CHAR> IFN FTTTYSER,< PUSHJ PDP,GETCHR> ;NEXT CHAR JRST OCT0 - -INTERNAL FTLOGIN + INTERNAL FTLOGIN IFN FTLOGIN,< ;GET PROJECT-PROGRAMMER NUMBERS ;CALL: MOVE TAC,INPUT BYTE POINTER @@ -2067,8 +2024,7 @@ IFE FTTTYSER, ;YES, SKIP IT IFN FTTTYSER, ;YES, SKIP IT SO FINAL ] IS OPTIONAL POPJ PDP, ;RETURN RO CALL > - -;ROUTINE TO PRINT TIME AS HOURS,MINUTES,SECONDS, AND HUNDRETHS + ;ROUTINE TO PRINT TIME AS HOURS,MINUTES,SECONDS, AND HUNDRETHS ;FORMAT IS HHMM:SS.HH ;CALL: MOVE TAC,TIME IN JIFFIES(60THS,50THS OR MILLISECONDS) ; MOVE DAT,OUTPUT TEXT BYTE POINTER @@ -2108,8 +2064,7 @@ PR1: POP PDP,TAC ;RESTORE SECONDS(IN JIFFIES) CAIL TAC1,JIFSC2 ;ROUND IF GREATER THEN HALF AOS TAC JRST PRT2LF ;PRINT - -PRTIM1: IDIVI TAC,JIFMIN ; + PRTIM1: IDIVI TAC,JIFMIN ; IDIVI TAC,^D60 ;HOURS,MINUTES IN TAC,TAC1 PUSHJ PDP,PRT2 PUSHJ PDP,INLMES ;PRINT "HH:" @@ -2122,8 +2077,7 @@ PRT2: MOVEI TEM,"0" CAIGE TAC,^D10 XCT CONOUT ;PUT LEADING 0 IF LESS THEN 10 JRST RADX10 ;PRINT REST OF NUMBER - -;ROUTINE TO PRINT SIZE OF LOGICAL SEGMENT (LOW OR HIGH) + ;ROUTINE TO PRINT SIZE OF LOGICAL SEGMENT (LOW OR HIGH) ;CALL: MOVE ITEM, HIGH OR LOW SEG NUMBER ; PUSHJ PDP,PRT SEG ; RETURN @@ -2154,8 +2108,7 @@ IFN FTSWAP,< JUMPE TAC1,CPOPJ ;IS IT IN CORE? LSH TAC1,-12 ;YES, CONVERT TO #K-1 AOJA TAC1,CPOPJ ;ADD 1 AND RETURN NUMBER OF K - -;ROUTINE TO ASSIGN A MINIMAL CORE AREA(140 WORDS) + ;ROUTINE TO ASSIGN A MINIMAL CORE AREA(140 WORDS) ;CALLED FROM CORE,KJOB, AND RUN COMMANDS ;THIS ROUTINE PRESERVES INPUT BYTE POINTER IN TAC ;CALL: PUSHJ PDP,GETMIN @@ -2189,8 +2142,7 @@ IFN FTTTYSER,< IFE FTTTYSER,< JRST TPOPJ ;RESTORE TAC AND RETURN > - -;ROUTINE TO GET 1 WORD FORM USER ARE WHICH CAN BE IN LOW OR HIGH SEG + ;ROUTINE TO GET 1 WORD FORM USER ARE WHICH CAN BE IN LOW OR HIGH SEG ;CALL: MOVE PROG,[XWD PROT,RELOC FOR LOW SEG] ; MOVE ITEM,JOB NUMBER ; HRLI UUO,PROG ;FOR RELOCATION @@ -2215,8 +2167,7 @@ IFE FT2REL,< > MOVE TAC,@UUO ;YES, GET IT FROM LOW SEG JRST CPOPJ1 ;AND SKIP RETURN - -SUBTTL SAVGET - SAVE,GET,R,RUN COMMANDS AND RUN,GETSEG UUOS + SUBTTL SAVGET - SAVE,GET,R,RUN COMMANDS AND RUN,GETSEG UUOS ;SAVGET LOWER CORE LOCATIONS USED FOR UUOS TO MONITOR ;USED IN SAVGET IN APRSER AND SAVGET IN SEGCON @@ -2248,8 +2199,7 @@ SUBTTL SAVGET - SAVE,GET,R,RUN COMMANDS AND RUN,GETSEG UUOS XP SGALOW,17 ;LH=EXT WHICH USER TYPED FOR SAVE OR GET COMMAND ; OR .SAV IF HE DIDN'T TYPE AN ARG WITH LEADING PERIOD ; RH=0 - -;ROUTINE TO SCAN COMMAND STRING ARGUMENTS FOR SAVE,GET,RUN AND R + ;ROUTINE TO SCAN COMMAND STRING ARGUMENTS FOR SAVE,GET,RUN AND R ;COMAMNDS AND STORE THEM IN JOB DATA AREA WHICH MUST BE IN CORE ;WHEN SGSET IS CALLED FROM COMMAND DECODER ;CALL: MOVE TAC,INPUT BYTE POINTER @@ -2298,8 +2248,7 @@ SGSET1: MOVEM TAC1,SGANEW(PROG) ;STORE FOR RUN AND SAVE ; GUARRANTEE LH OF PC WORD IS 0, SINCE IT WILL ; BE ADDED TO STARTING ADDRESS(IF RUN COM) JRST MSTART ;START JOB WITH PC IN MONITOR MODE - -;ROUTINE TO PICKUP ARGUMENTS FOR RUN AND GETSET UUOS + ;ROUTINE TO PICKUP ARGUMENTS FOR RUN AND GETSET UUOS ;THIS ROUTINE DOES SAME THING AS SGSET, EXCEPT THAT ARGUMENTS ARE ;OBTAINED FROM USER UUO ARGUMENTS INSTEAD OF FROM CONSOLE COMMAND ;THE USERS ARG ARE MOVED TO USER ACS(SGA...), THEREBY CLOBBERING HIS AC$S @@ -2312,7 +2261,7 @@ SGSET1: MOVEM TAC1,SGANEW(PROG) ;STORE FOR RUN AND SAVE ; RETURN INTERN GETARG - EXTERN JBTPROG,JOBCORE,PUUOAC + EXTERN JBTPRG,JOBCOR,PUUOAC GETARG: HRR UUO,TAC ;MOVE ADR. OF ARG LIST TO UUO EXCH TAC,(PDP) ;AND PUT ON PD LIST @@ -2342,8 +2291,7 @@ IFN FT2REL,< ; IGNORE LH JRST SG2A ;GO SET UP LOWER CORE AND RETURN ; DO NOT DO A RESET - -;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE + ;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE ;THIS JOB RUNS IN EXEC MODE AND CALLS IO ROUTINES USING REGULAR UUOS ;NO ATTEMPT IS MADE TO SAVE STATUS OF IO DEVICES, JOBDP, OR AC'S ;IN FACT THE ONLY USEFUL THING WHICH MAY BE DONE WITH A JOB AREA @@ -2378,8 +2326,7 @@ SAVJB1: OPEN 0,SGAMOD ;RE INIT DEVICE, SO UGETF WILL SET FIRST FREE JRST SAVERR ;DIRECTORY FULL OR PROTECTION FAILURE MOVE TAC,JOB41(JDAT) ;SAVE USER UUO HANDLING JSR MOVEM TAC,JOBS41(JDAT) ;IN UPPER PART OF JOB DATA AREA - - MOVE TAC,JOBDDT(JDAT) ;SAVE DDT STARTING ADDRESS HIGHER UP IN JOB DATA AREA + MOVE TAC,JOBDDT(JDAT) ;SAVE DDT STARTING ADDRESS HIGHER UP IN JOB DATA AREA MOVEM TAC,JOBSDD(JDAT) ;SO COMPRESS ALWAYS MOVES CODE DOWN HRROS USRHCU ;FLAG THAT SAVE GET IS UNDER WAY ; SO THAT JOBHRL WILL NOT BE MODIFIED BY SETHGH RUOTINE @@ -2421,8 +2368,7 @@ CMPTHR: HRLI TEM,254000 ;SET A JRST C(JOBSA) ; CORE ON START ,ODT,SAVE, REENTER,SSAVE IN CASE ; THIS SAE IO DOES NOT GO TO COMPLETION. (CONTROL C ; OR DEVICE FULL, SO THAT CORE DOES NOT GET EXPANDED - - PUSHJ PDP,SGDOA ;DO OUTPUT,RELEASE,FIND TTY + PUSHJ PDP,SGDOA ;DO OUTPUT,RELEASE,FIND TTY OUTPUT 0,SGALEN ;OUTPUT UUO EXECUTED BY SGDO ; RETURN HERE ONLY IF NO ERRORS SAVFIN: PUSHJ PDP,SGREL ;RELEASE DEVICE AND FIND TTY @@ -2464,8 +2410,7 @@ RUNJOB: JSP TAC1,SG1 ;SETUP ACS, SETUP LOWER CORE(SGALEN,SGADMP) ; PUT TAC1 AS FIRST ITEM ON PD LIST(JOBPN1) ; LH USED BY SGRELE ON ERROR TO SEE IF FROM USER ; AND LH ADDED TO START PC(JOBSA) BY URUN - -;RUN UUO + ;RUN UUO ;CALL: MOVE AC,[XWD N,D] ; CALL AC,[SIXBIT /RUN/] ; ERROR RETURN ;UNLESS LH=HALT(PRINT CONSOLE MESS, IF YES) @@ -2511,8 +2456,7 @@ IFN FT2REL,< HRLI TAC1,USRMOD ;SET USER MODE BIT IN PC PUSH PDP,TAC1 ;PUT ON PD LIST JRST USRXIT ;AND GO TO RETURN TO USER AS IF FROM UUO - -;UUO TO GET JUST HIGH SEG AND RETURN TO USER + ;UUO TO GET JUST HIGH SEG AND RETURN TO USER ;CALL IS THE SAME AS FOR RUN UUO EXCEPT THAT OK RETURN IS SKIP RETURN ;IF ERROR RETURN HAS HALT IN LH, STANDARD CONSOLE MESSAGE IS PRINTED AND JOB STOPPED @@ -2526,8 +2470,7 @@ IFN FT2REL,< UGTERR: MOVEI TAC,ILUERR ;ILLEGAL UUO ERROR CORE PUSHJ PDP,SGRELE ;SEE IF USER WANTS ERROR JRST UUOERR ;NO, PRINT ILLEGAL UUO - -;ROUTINE TO SETUP ACS, RESET IO, AND SETUP LOWER CORE LOCATIONS + ;ROUTINE TO SETUP ACS, RESET IO, AND SETUP LOWER CORE LOCATIONS ;FOR SAVE AND GET(SGALEN SET IO IOWD OR PP IF DTA OR DSK) ;SGADMP SET TO IOWD FOR THIS SIZE CORE ;CALL: JSP TAC1,SG1 @@ -2568,8 +2511,7 @@ IFN FT2REL,< > JRST SGERRA ;NOT AVAILABLE ;DEVICE INITED(OR FOUND) - -;COMMON EXIT FROM SAVHGH AND GETHGH ROUTINES(HIGH SEG SAVE AND GET) + ;COMMON EXIT FROM SAVHGH AND GETHGH ROUTINES(HIGH SEG SAVE AND GET) ;SO THAT SGA... LOCATIONS ARE RESTOREED TO ORIGINAL VALUES FOR LOW SEG SG3: MOVE TAC,JOBFF(JDAT) ;FIRST FREE LOC IN JOB(SET FROM LH OF @@ -2617,8 +2559,7 @@ SGERR1: MOVEI TAC,NSDERR ;ERROR CODE IN CASE RUN UUO(NO SUCH DEVICE) ; OR FIND TTY AND PRINT ?CRLF JSP TAC,PHOLD ;START TTY AND STOP JOB ASCIZ /NO SUCH DEVICE/ - -;ROUTINE TO GET FILE FROM DEVICE(LOW AND/OR HIGH) + ;ROUTINE TO GET FILE FROM DEVICE(LOW AND/OR HIGH) ;CALL: ACS JDAT,PROG,PDP,DEVDAT SETUP ; MOVE ITEM,JOB NUMBER ; IFN FTDISK, @@ -2672,25 +2613,7 @@ LOWFIN: HRRZ TAC,JOBCOR(JDAT) ;CORE ARG FROM PREVIOUS SAVE(THIS MONITOR ; USER TO USE TO RESET CORE TO INITIAL SETTING WHEN ; PROGRAM IS RESTARTED ; FALL INTO SGREL -;ROUTINE TO RELEASE DEVICE AND FIND TTY -INTERN SGREL - -SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY? - JRST SGREL2 ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH - PUSH PDP,T4 ;NO, - MOVE TAC1,DEVMOD(DEVDAT) - TLNE TAC1,DVMTA ;MAGTAPE? - TLNN DEVDAT,INPB ;YES, WAS AN INPUT DONE? - JRST SGREL1 ;NO - CLOSE 0,CLSOUT ;YES, CLOSE MTA INPUT - STATO 0,IOTEND+IODEND ;AT END OF APTE? - MTAPE 0,16 ;NO SKIP TO EOF -SGREL1: RELEASE 0, ;NO RELEASE DEVICE - POP PDP,T4 -SGREL2: - JRST TTYFNU ;FIND TTY FOR CURRENT USER - -;ROUTINE TO EXECUTE DUMP MODE COMMAND LIST SETUP IN SGALEN(R) + ;ROUTINE TO EXECUTE DUMP MODE COMMAND LIST SETUP IN SGALEN(R) ;AND CHECK FOR ERRORS. USED ONLY TO READ LOW FILE. ;CALL: PUSHJ P,SGDO ; INPUT 0,SGALEN OR OUTPUT 0,SGALEN @@ -2730,8 +2653,24 @@ SGIOCK: MOVE T4,DEVIOS(DEVDAT) ;IO STATUS WORD FOR THIS DEVICE ; OF FIND TTY AND PRINT ?CRLF JSP TAC,PHOLD ;START TTY AND STOP JOB ASCIZ /TRANSMISSION ERROR/ - -;ROUTINE TO EXPAND CORE AFTER A SAVE(LOW SEG ONLY) +;ROUTINE TO RELEASE DEVICE AND FIND TTY +INTERN SGREL + +SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY? + JRST SGREL2 ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH + PUSH PDP,T4 ;NO, + MOVE TAC1,DEVMOD(DEVDAT) + TLNE TAC1,DVMTA ;MAGTAPE? + TLNN DEVDAT,INPB ;YES, WAS AN INPUT DONE? + JRST SGREL1 ;NO + CLOSE 0,CLSOUT ;YES, CLOSE MTA INPUT + STATO 0,IOTEND+IODEND ;AT END OF APTE? + MTAPE 0,16 ;NO SKIP TO EOF +SGREL1: RELEASE 0, ;NO RELEASE DEVICE + POP PDP,T4 +SGREL2: + JRST TTYFNU ;FIND TTY FOR CURRENT USER + ;ROUTINE TO EXPAND CORE AFTER A SAVE(LOW SEG ONLY) ;CALL: MOVE DEVDAT,DEVICE ADR. ; MOVE PROG,JOBADR. ; MOVE ITEM,JOB NUMBER @@ -2771,8 +2710,7 @@ EXPAND: HLRE AC3,SGALEN(PROG) ;-LENGTH OF FILE JRST EXPND1 EXPZ: MOVSI TAC,-2 HLLM TAC,JOBSV(PROG) - -;COME HERE TO DO THE ACTUAL EXPANSION OF A FILE + ;COME HERE TO DO THE ACTUAL EXPANSION OF A FILE EXPND1: MOVE TAC,[XWD PROG,JOBSV] ;IT WAS READ INTO JOBSV MOVE TAC,@TAC ;FIRST IOWD EXPLP1: HRRZ AC1,TAC1 ;ADDRESS OF IOWD @@ -2791,7 +2729,6 @@ EXPLP1: HRRZ AC1,TAC1 ;ADDRESS OF IOWD HRRZ TAC,@TAC ;TOP REAL LOCATION NEEDED TRO TAC,1777 ;MAKE IT NK-1 - HLRZ TAC1,PROG ;PRESENT SIZ OF LOW SEG CAMG TAC,TAC1 ;IS THERE ENOUGH? JRST EXPCOR ;YES. @@ -2825,8 +2762,7 @@ EXPLP3: SOS AC1 MOVEM AC2,JOBDDT(JDAT) ;SET USER DDT STR ADR JRST SGDO2 ;AND SETUP USRDDT IN MONITOR PROTECTED ; FROM THIS USER - -;THIS ROUTINE WILL DELETE ALL DATA FROM A COMPRESSED FILE + ;THIS ROUTINE WILL DELETE ALL DATA FROM A COMPRESSED FILE ;WHICH IS BELOW JOBSOD (PROBABLY WRITTEN BY TENDUMP) TOOLOW: HLRE AC2,@TAC ;WORDCOUNT OF OFFENDING IOWD @@ -2851,8 +2787,7 @@ IOWBLT: MOVSI TAC,@TAC ;YES, KEEP THE ENTIRE IOWD DATA SUBI AC3,(TAC) ;AC3 POINTS TO TOP OF DATA READ IN-(N) BLT TAC1,@AC3 ;MOVE ONLY GOOD DATA DOWN JRST EXPND1 ;GO EXPAND THE GOOD DATA - -SGDO1: MOVEI TAC,JOBDDT(PROG) ;MOVE EVERYTHING DOWN )MUST BE NON-COMPRESSED DSK FILE + SGDO1: MOVEI TAC,JOBDDT(PROG) ;MOVE EVERYTHING DOWN )MUST BE NON-COMPRESSED DSK FILE HRLI TAC,JOBSVD(TAC) ;OR CONVERT SAVE FILE SKIPGE JOBSV(JDAT) ;IS THIS CONVERT FILE(FIRST WORD IS IOWD)? HRLI TAC,JOBSDP(TAC) ;YES, ALSO SKIP OVER IOWD @@ -2863,8 +2798,7 @@ SGDOER: POP PDP,TAC SETZM JOBHCU(JDAT) ;CLEAR LH AND SET HIGHEST USER CHAN, IN ; USE TO 0(WHERE IT SHOULD BE ANYWAY) POPJ PDP, ;ERROR RETURN OR OK RETURN - -;ROUTINE TO CHECK USER SUPPLIED CORE ARG AND CHECK TO SEE IF 0 + ;ROUTINE TO CHECK USER SUPPLIED CORE ARG AND CHECK TO SEE IF 0 ;OR GREATER THAN OR EQUAL TO IOWD USED TO SAVE OR GET FILE ;CALL: HLRE TAC1,-NO. OF WORDS IN FILE ; PUSHJ PDP,CKIOWD @@ -2908,6 +2842,7 @@ NOROOM: MOVEI TAC,NECERR ;ERROR CODE IN CASE THIS IS RUN UUO(NOT ENOUGH CORE) JSP TAC,PHOLD ;START TTY ADN STOP JOB ASCIZ /K OF CORE NEEDED/ + ;ROUTINE TO ASSIGN CORE FOR LOW AND HIGH SEG ;CALL: MOVE PROG,LOW SEG RELOCATION ; HRR TAC,HIGHEST LOC DESIRED @@ -2921,8 +2856,7 @@ GETCOR: HRRZM TAC,SGACOR(PROG) ;SOTRE CORE ARG FOR CORE UUO IN USER AC CALLI SGACOR,11 ;DO CORE UUO JRST NOROOM ;NOT AVAILABLE, PRINT ERROR AND AMOUNT TRYING FOR JRST TPOPJ ;OK, REMOVE TAC FROM PD LIST AND RETURN - -;ROUTINE TO PRINT NOT A SAVE FILE IF WRONG FORMAT FILE DETECTED + ;ROUTINE TO PRINT NOT A SAVE FILE IF WRONG FORMAT FILE DETECTED INTERN GETERR @@ -2948,8 +2882,7 @@ NOFILE: MOVEI TAC,FNFERR ;ERROR CODE IN CASE THIS IS RUN UUO(FILE NOT FOUND PUSHJ PDP,PRNAME JSP TAC,PHOLD ;START TTY AND STOP JOB ASCIZ / NOT FOUND/ - -;ROUTINE TO RELEASE DEVICE ON AN ERROR AND CHECK TO SEE + ;ROUTINE TO RELEASE DEVICE ON AN ERROR AND CHECK TO SEE ;IF THIS IS A MONITOR COMMAND OR USER UUO ;IF USER UUO, GIVE ERROR RETURN TO USER UNLESS THERE IS A HALT ;IN LH OF EROR RETURN WORD, IN WHICH CASE FIND TTY, PRINT ?CRLF @@ -2991,4 +2924,3 @@ SGRLE1: PUSHJ PDP,SGREL ;RELEASE DEVICE AND FIND TTY ASCIZ /? / COMEND: END ;END OF COMCON - diff --git a/src/common.mac b/src/common.mac index a458ba8..5f3ef5c 100644 --- a/src/common.mac +++ b/src/common.mac @@ -1,4 +1,3 @@ - TITLE COMMON - MONITOR COMMON DATA AREA AND CONFIGURATION DEFINITION - V437 SUBTTL PART 3 COMMON.MAC - T. HASTINGS/RCC TS 03 JUN 69 XP VCOMMN,437 @@ -382,6 +381,7 @@ JBTADR: BLOCK JOBN+SEGN ;JOB AND HIGH SEG CORE ASSIGNMENT JBTAD1==JBTADR+1 ;ADDRESS OF JOB 1 (USED BY SYSMAK) JBTDAT==JBTADR ;RH==ADDRESS OF JOB DATA AREA ;SAME AS JBTADR (JDAT==PROG) + INTERN JBTSGN JBTSGN: IFG SEGN, < BLOCK JOBN ;RH=SEGMENT NUMBER OF HIGH SEGMENT THIS JOB ; IS USING IN CORE OR ON DISK @@ -920,7 +920,7 @@ K4SWAP: 0 ;(1)K OF DISK WORDS SET ASIDE FOR SWAPPING ; ASSIGNED AT ONCE ONLY REFRESH TIME PROT: EXP ICPROT ;(2) IN-CORE PROTECT TIME PARAMETER TO BE - ; MULTIPLIED BY OF CORE IN JOB. + ; MULTIPLIED BY (K-1) OF CORE IN JOB. PROT0: EXP ICPRT1 ;(3) IN-CORE PROTECT TIME PARAMETER TO ; BE ADDED TO ABOVE RESULT. @@ -1198,7 +1198,7 @@ IFE PDP10N, < ;FOR PDP-6 OPCODES 1-37 JRST UUOSYS ;YES MOVEM TAC,40(17) ;STORE UUO IN USER'S 40 HRRZ TAC,41(17) ;PICK UP ADR OF USER'S JSR - JUMPE TAC,UUOSY2 ;IF ADDRESS=0,ILLEGAL USER UUO****UWA PATCH + JUMPE TAC,UUOSYS ;IF ADDRESS=0,ILLEGAL USER UUO****UWA PATCH HLL TAC,UUO0 ;USER PD FLAGS (RESTORED ON RETURN) MOVEI 17,(TAC) ;17 NOW HAS REL.ADR+1 OF USER JSR CAML 17,USRREL ;IS EFFECTIVE ADDRESS IN BOUNDS ? @@ -1213,7 +1213,7 @@ IFE PDP10N, < ;FOR PDP-6 OPCODES 1-37 JRST 2,@UUO0 ;RETURN TO USER (RESTORING FLAGS) UUOSY0: MOVE 17,JOBADR ;SETUP 17 FOR LOW SEGMENT RELOCATION -UUOSY2: EXCH TAC,FORTY ;RESTORE USERS AC(TAC) AND USER'S UUO (FORTY) +UUOSYS: EXCH TAC,FORTY ;RESTORE USERS AC(TAC) AND USER'S UUO (FORTY) > JRST UUOUSR ;GO SAVE USER'S ACS IN REL. LOCATION 0-17 ; AND DISPATCH ON UUO diff --git a/src/con40.ccl b/src/con40.ccl new file mode 100644 index 0000000..31ef141 --- /dev/null +++ b/src/con40.ccl @@ -0,0 +1,35 @@ +CDRSR6,CDRSR6/C_S,CDRSR6 +CDRSRX,CDRSRX/C_S,CDRSRX +CLOCK1,CLOCK1/C_S,FT40N,CLOCK1 +CLKCSS,CLKCSS/C_S,FT40N,CLKCSS +COMCON,COMCON/C_S,FT40N,COMCON +COMMON,COMMON/C_S,CONF40,COMMON +CORE1,CORE1/C_S,FT40N,CORE1 +DIS340,DIS340/C_S,DISSER +DIST30,DIST30/C_S,DIST30,DISSER +DCSINT,DCSINT/C_S,DCSINT +DLSINT,DLSINT/C_S,DLSINT +DPDINT,DPDINT/C_S,DPDINT +DSKINT,DSKINT/C_S,DSKINT +DSKSER,DSKSER/C_S,FT40N,DSKSER +DTCSRN,DTCSRN/C_S,FT40N,DTCSRN +DTASRN,DTASRN/C_S,FT40N,DTASRN +EDDT,EDDT/C_EDDT +ERRCON,ERRCON/C_S,ERRCON +JOBDAT,JOBDAT/C_JOBDAT +LPTSER,LPTSER/C_S,LPTSER +MTCSR6,MTCSR6/C_S,MTCSR6 +MTASRX,MTASRX/C_S,MTASRX +NULSEG,NULSEG/C_S,FT40N,NULSEG +SEGCON,NULSEG/C_S,FT40N,SEGCON +PLTSER,PLTSER/C_S,PLTSER +PTRSER,PTRSER/C_S,PTRSER +PTPSER,PTPSER/C_S,PTPSER +PTYSRF,PTYSRF/C_S,PTYSRF +PTYSRH,PTYSRH/C_S,PTYSRH +PATCH,PATCH/C_PATCH +SYSINI,SYSINI/C_S,FT40N,SYSINI +SYSMAK,SYSMAK/C_S,SYSMAK +ONCEB,ONCEB/C_S,FT40N,ONCEB +SCNSRF,SCNSRF/C_S,FT40N,SCNSRF +UUOCON,UUOCON/C_S,FT40N,UUOCON diff --git a/src/con50n.ccl b/src/con50n.ccl new file mode 100644 index 0000000..cbb8581 --- /dev/null +++ b/src/con50n.ccl @@ -0,0 +1,36 @@ +CDRSR6,CDRSR6/C_S,CDRSR6 +CDRSRX,CDRSRX/C_S,CDRSRX +CLOCK1,CLOCK1/C_S,FT50SB,CLOCK1 +CLKCSS,CLKCSS/C_S,FT50SB,CLKCSS +COMCON,COMCON/C_S,FT50SB,COMCON +COMMON,COMMON/C_S,CON50N,COMMON +CORE1,CORE1/C_S,FT50SB,CORE1 +DIS340,DIS340/C_S,DISSER +DIST30,DIST30/C_S,DIST30,DISSER +DCSINT,DCSINT/C_S,DCSINT +DLSINT,DLSINT/C_S,DLSINT +DPDINT,DPDINT/C_S,DPDINT +DSKINT,DSKINT/C_S,DSKINT +DSKSER,DSKSER/C_S,FT50SB,DSKSER +DTCSRN,DTCSRN/C_S,FT50SB,DTCSRN +DTASRN,DTASRN/C_S,FT50SB,DTASRN +EDDT,EDDT/C_EDDT +ERRCON,ERRCON/C_S,ERRCON +JOBDAT,JOBDAT/C_JOBDAT +LPTSER,LPTSER/C_S,LPTSER +MTCSR6,MTCSR6/C_S,MTCSR6 +MTASRX,MTASRX/C_S,MTASRX +NULSEG,NULSEG/C_S,FT50SB,NULSEG +SEGCON,SEGCON/C_S,FT50SB,SEGCON +PLTSER,PLTSER/C_S,PLTSER +PTRSER,PTRSER/C_S,PTRSER +PTPSER,PTPSER/C_S,PTPSER +PTYSRF,PTYSRF/C_S,PTYSRF +PTYSRH,PTYSRH/C_S,PTYSRH +PATCH,PATCH/C_PATCH +SYSINI,SYSINI/C_S,FT50SB,SYSINI +SYSMAK,SYSMAK/C_S,SYSMAK +ONCEB,ONCEB/C_S,FT50SB,ONCEB +SCNSRF,SCNSRF/C_S,FT50SB,SCNSRF +SCHEDB,SCHEDB/C_S,FT50SB,SCHEDB +UUOCON,UUOCON/C_S,FT50SB,UUOCON diff --git a/src/con50n.mac b/src/con50n.mac new file mode 100644 index 0000000..6f2bd9d --- /dev/null +++ b/src/con50n.mac @@ -0,0 +1,227 @@ +SUBTTL CONFIG - CONFIGURATION DEFINITION FILE OUTPUT BY MONGEN DIALOG + + +;ANSWER THE FOLLOWING QUESTIONS WITH Y OR N OR A DECIMAL NUMBER + +;SHORT DIALOG?[N = LONGER QUESTIONS] +;Y + + +;10/30 SYSTEM TO BE BUILT?[N = 10/40 OR 10/50 SYSTEM] +;N + + +;10/40 SYSTEM TO BE BUILT?[N = ASSUME 10/50 SYSTEM] +;N + +XP SYS40N,0 +XP SYS50N,1 +XP DSKN,1 +XP LOGINN,1 + +;RD10 (BURROUGHS) DISK?[ONE DISK TYPE FOR FILES, +;SAME TYPE FOR SWAPPING OR ONE OTHER TYPE FOR SWAPPING] +;Y + +XP RD10N,1 + +;RD10 FOR SWAPPING?[N = CAN SWAP ON SOME OTHER TYPE] +;Y + +XP RDSWPN,1 + +;RP10 (MEMOREX) DISK PACKS? +;N + +XP RP10N,0 +XP RPSWPN,0 + +;RA10 (BRYANT) DISK? +;N + +XP RA10N,0 +XP RASWPN,0 + +;DPD (DATA PRODUCTS) DISK? +;N + +XP DPDN,0 +XP DPSWPN,0 + +;HOMW MANY JOBS?[ATTACHED AND DETACHED, COUNTING NULL JOB] +;28 +XP JOBN,34 + +;MAX SIZE OF CORE (IN K) FOR ANY SINGLE USER? +;0 MEANS ALL OF CORE +;0 +XP COREN,0 + +;PDP-10 PROCESSORE?[N = PDP-6] +;Y + +XP PDP10N,1 + +;2 RELOCATION REG, SOFTWARE?[Y = MUST HAVE KT10A, +;N = JUST 1 RELOC. REG.] +;Y + +XP KT10AN,0 + + +;HOW MANY MORE SEGMENTS THAN JOBS?[0 UNLESS YOU +;ANTICIPATE A LOT OF DORMANT SEGMENTS] +;0 +XP SEGN,0 + +;LOAD EXEC DDT?[N = ONLY IF LOADER HAS RUN OUT OF CORE BEFORE] +;Y + +XP DDTN,1 + +;LOAD LOCAL SYMBOLS?[N = ONLY IF LOADER HAS RUN OUT OF ROOM BEFORE] +;Y + + +;LOAD USER DDT?[BOTH CAN BE LOADED TOGETHER, +;USE USER DDT FOR PATCHING UNDER TIME SHARING] +;Y + +XP UDDTN,1 + +;NAME OF THIS SYSTEM (24 CHARS OR LESS)? +DEFINE SYSNAM +< ASCIZ \4S47 DEC PDP-10 #2\> + +;WHAT IS THE SERIAL NUMBER OF YOUR ARITHMETIC PROCESSOR? +;2 +XP APRSN,2 + + +;NAME OF SYSTEM DEVICE?[DTA0 USUAL FOR 10/40 SYSTEM, +;DSK USUAL FOR 10/50 SYSTEM] +DEFINE SYSDEV +< SIXBIT "DSK"> +DEFINE SYSDAT +< ASCIZ /6-3-69/> + +;DATA LINE SCANNER(DC10)?[N = WILL ASK FOR 680 OR 630] +;Y + +XP DLSN,1 +XP CCIN,0 +XP DCSN,0 + +;HIGHEST (OCTAL) LINE NUMBER?[USUALLY 7,17,27, ETC. FOR DC-10 OR 630 +;10, 20, 30 ETC. FOR 680 (TO ALLOW FOR PDP-8 CTY)] +;27 +XP HGHLIN,27 + +;FULL DUPLEX TTY SOFTWARE?[N = OLD HALF DUPLEX SOFTWARE] +;Y + +XP FULLN,1 +XP TABSN,0 + +;COMMON.MAC ALREADY EDITED FOR YOUR TTY CONFIGURATION? +;[N = WILL ALLOW YOU TO DEFINE NOW] +;Y + +XP EDITN,1 + +;PT READER? +;Y + +PTRN=1 ;NOT GLOBAL BECAUSE OF DSKSER USE + +;PT PUNCH? +;Y + +XP PTPN,1 + +;PLOTTER? +;Y + +XP PLTN,1 + +;HOW MANY LINE PRINTERS? +;1 +XP LPTN,1 + +;CARD READER? +;Y + + +;CR10?[Y = CR10A TOO, N IF PDP-6 CARD READER] +;Y + +XP CDRN,1 +XP CR10N,1 + +;CARD PUNCH +;N + +XP CDPN,0 + +;DISPLAY? +;N + +XP DISN,0 +XP PENN,0 +XP T340N,0 + +;HOW MANY DECTAPES? +;8 + +;TD10 DECTAPE CONTROL?[N = PDP-6 DECTAPE] +;Y +XP DTAN,10 +XP DTCN,0 + +;HOW MANY MAGTAPES? +;3 + +;TM-10A CONTROL?[N = WILL ASK TM-10B, THEN PDP-6 MAGTAPES] +;Y + +XP MTAN,3 +XP MTBN,0 +XP MTCN,0 + +;HOW MANY PSEUDO-TTY'S?[EACH CONCURRENT BATCH NEEDS ONE] +;2 +XP PTYN,2 +;TYPE "SYMBOL,VALUE" (VALUE IN DECIMAL)[FOR ANY SYMBOLS +;TO BE DEFINED. TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.] +RADIX 10 + +RADIX 8 +;TYPE "DEVICE-MNEMONIC,CHANNEL"FOR SPECIAL DEVICES +;[WITH NEITHER CHANNEL SAVE ROUTINE NOR DEVICE DATA BLOCK. +;"DEVICE" MUST BE 5 CHARCATERS OR LESS, +;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.] +DEFINE SPCINT +< +>;TYPE "DEVICE-MNEMNIC,CHANNEL,NO.-OF-DEVICES" +;[FOR SPECIAL DEVICE WITH CHANNEL SAVE ROUTINES AND DEVICE DATA BLOCKS +;"DEVICE" MUST BE 5 CHARS. OR LESS. +;TYPE EXTRA CARRIAGE RETUERN WHEN THROUGH.] +DEFINE SPCSAV +< +>;MONGEN FINISHED +;NEXT YOU MUST ASSEMBLE COMMON WITH MACRO +;THEN LOAD IT AND REST OF MONITOR WITH LOADER +;AND FINALLY SAVE IT WITH MONITOR COMMAND SAVE + +;[TO ASSEMBLE COMMON, TYPE +;R MACRO +;DSK:COMMON,LPT:_DSK:S,CONFIG,COMMON +;TO LOAD NEW MONITOR, TYPE +;R LOADER +;/S +;DSK:COMMON,DSK:SYS50/L +;LPT:_/W/D/A/M/P/G +;TO SAVE MONITOR, TYPE +;SAVE DSK MONITOR +;] +; ;END OF CONFIGURATION DEFINITION diff --git a/src/con5sd.ccl b/src/con5sd.ccl new file mode 100644 index 0000000..87bd718 --- /dev/null +++ b/src/con5sd.ccl @@ -0,0 +1,36 @@ +CDRSR6,CDRSR6/C_S,CDRSR6/N +CDRSRX,CDRSRX/C_S,CDRSRX/N +CLOCK1,CLOCK1/C_S,FT50SD,CLOCK1/N +CLKCSS,CLKCSS/C_S,FT50SD,CLKCSS/N +COMCON,COMCON/C_S,FT50SD,COMCON/N +COMMON,COMMON/C_S,CONFIG,COMMON/N +CORE1,CORE1/C_S,FT50SD,CORE1/N +DIS340,DIS340/C_S,DISSER/N +DIST30,DIST30/C_S,DIST30,DISSER/N +DCSINT,DCSINT/C_S,DCSINT/N +DLSINT,DLSINT/C_S,DLSINT/N +DPDINT,DPDINT/C_S,DPDINT/N +DSKINT,DSKINT/C_S,DSKINT/N +DSKSER,DSKSER/C_S,FT50SD,DSKSER/N +DTCSRN,DTCSRN/C_S,FT50SD,DTCSRN/N +DTASRN,DTASRN/C_S,FT50SD,DTASRN/N +EDDT,EDDT/C_EDDT/N +ERRCON,ERRCON/C_S,ERRCON/N +JOBDAT,JOBDAT/C_JOBDAT/N +LPTSER,LPTSER/C_S,LPTSER/N +MTCSR6,MTCSR6/C_S,MTCSR6/N +MTASRX,MTASRX/C_S,MTASRX/N +NULSEG,NULSEG/C_S,FT50SD,NULSEG/N +SEGCON,SEGCON/C_S,FT50SD,SEGCON/N +PLTSER,PLTSER/C_S,PLTSER/N +PTRSER,PTRSER/C_S,PTRSER/N +PTPSER,PTPSER/C_S,PTPSER/N +PTYSRF,PTYSRF/C_S,PTYSRF/N +PTYSRH,PTYSRH/C_S,PTYSRH/N +PATCH,PATCH/C_PATCH/N +SYSINI,SYSINI/C_S,SYSINI +SYSMAK,SYSMAK/C_S,SYSMAK/N +ONCEB,ONCEB/C_S,FT50SD,ONCEB/N +SCNSRF,SCNSRF/C_S,FT50SD,SCNSRF/N +SCHEDB,SCHEDB/C_S,FT50SD,SCHEDB/N +UUOCON,UUOCON/C_S,FT50SD,UUOCON/N diff --git a/src/conall.ccl b/src/conall.ccl index af2c7d9..7dd70dc 100644 --- a/src/conall.ccl +++ b/src/conall.ccl @@ -1,31 +1,36 @@ -CLOCK1,CLOCK1/C_S,FT40N,CLOCK1/N -CLKCSS,CLKCSS/C_S,FT50SB,CLKCSS/N -COMCON,COMCON/C_S,FT50SB,COMCON/N -COMMON,COMMON/C_S,CONFIG,COMMON/N -CORE1,CORE1/C_S,FT50SB,CORE1/N -DIS340,DIS340/C_S,DISSER/N -DIS34,DIS30/C_S,DIST30,DISSER/N -DCSINT,DCSINT/C_S,DCSINT/N -DLSINT,DLSINT/C_S,DLSINT/N -DPDINT,DPDINT/C_S,DPDINT/N -DSKINT,DSKINT/C_S,DSKINT/N -DSKSER,DSKSER/C_S,FT50SB,DSKSER/N -DTCSRN,DTCSRN/C_S,FT50SB,DTCSRN/N -DTASRN,DTASRN/C_S,FT50SB,DTASRN/N -EDDT,EDDT/C_EDDT/N -ERRCON,ERRCON/C_S,ERRCON/N -JOBDAT,JOBDAT/C_JOBDAT/N -LPTSER,LPTSER/C_S,LPTSER/N -MTCSR6,MTCSR6/C_S,MTCSR6/N -MTASRX,MTASRX/C_S,MTASRX/N -NULSEG,NULSEG/C_S,FT50SB,NULSEG/N -PLTSER,PLTSER/C_S,PLTSER/N -PTRSER,PTRSER/C_S,PTRSER/N -PTPSER,PTPSER/C_S,PTPSER/N -PTYSRF,PTYSRF/C_S,PTYSRF/N -PTYSRH,PTYSRH/C_S,PTYSRH/N -PATCH,PATCH/C_PATCH/N -ONCEB,ONCEB/C_S,FT50SB,ONCEB/N -SCNSRF,SCNSRF/C_S,FT50SB,SCNSRF/N -SCHEDB,SCHEDB/C_S,FT50SB,SCHEDB/N -UUOCON,UUOCON/C_S,FT50SB,UUOCON/N +CDRSR6,CDRSR6/C_S,CDRSR6 +CDRSRX,CDRSRX/C_S,CDRSRX +CLOCK1,CLOCK1/C_S,FT50SB,CLOCK1 +CLKCSS,CLKCSS/C_S,FT50SB,CLKCSS +COMCON,COMCON/C_S,FT50SB,COMCON +COMMON,COMMON/C_S,CONFIG,COMMON +CORE1,CORE1/C_S,FT50SB,CORE1 +DIS340,DIS340/C_S,DISSER +DIST30,DIST30/C_S,DIST30,DISSER +DCSINT,DCSINT/C_S,DCSINT +DLSINT,DLSINT/C_S,DLSINT +DPDINT,DPDINT/C_S,DPDINT +DSKINT,DSKINT/C_S,DSKINT +DSKSER,DSKSER/C_S,FT50SB,DSKSER +DTCSRN,DTCSRN/C_S,FT50SB,DTCSRN +DTASRN,DTASRN/C_S,FT50SB,DTASRN +EDDT,EDDT/C_EDDT +ERRCON,ERRCON/C_S,ERRCON +JOBDAT,JOBDAT/C_JOBDAT +LPTSER,LPTSER/C_S,LPTSER +MTCSR6,MTCSR6/C_S,MTCSR6 +MTASRX,MTASRX/C_S,MTASRX +NULSEG,NULSEG/C_S,FT50SB,NULSEG +SEGCON,SEGCON/C_S,FT50SB,SEGCON +PLTSER,PLTSER/C_S,PLTSER +PTRSER,PTRSER/C_S,PTRSER +PTPSER,PTPSER/C_S,PTPSER +PTYSRF,PTYSRF/C_S,PTYSRF +PTYSRH,PTYSRH/C_S,PTYSRH +PATCH,PATCH/C_PATCH +SYSINI,SYSINI/C_S,FT50SB,SYSINI +SYSMAK,SYSMAK/C_S,SYSMAK +ONCEB,ONCEB/C_S,FT50SB,ONCEB +SCNSRF,SCNSRF/C_S,FT50SB,SCNSRF +SCHEDB,SCHEDB/C_S,FT50SB,SCHEDB +UUOCON,UUOCON/C_S,FT50SB,UUOCON diff --git a/src/conf40.mac b/src/conf40.mac new file mode 100644 index 0000000..bca8fe9 --- /dev/null +++ b/src/conf40.mac @@ -0,0 +1,227 @@ +SUBTTL CONFIG - CONFIGURATION DEFINITION FILE OUTPUT BY MONGEN DIALOG + + +;ANSWER THE FOLLOWING QUESTIONS WITH Y OR N OR A DECIMAL NUMBER + +;SHORT DIALOG?[N = LONGER QUESTIONS] +;Y + + +;10/30 SYSTEM TO BE BUILT?[N = 10/40 OR 10/50 SYSTEM] +;N + + +;10/40 SYSTEM TO BE BUILT?[N = ASSUME 10/50 SYSTEM] +;Y + +XP SYS40N,1 +XP SYS50N,0 +XP DSKN,1 +XP LOGINN,1 + +;RD10 (BURROUGHS) DISK?[ONE DISK TYPE FOR FILES, +;SAME TYPE FOR SWAPPING OR ONE OTHER TYPE FOR SWAPPING] +;Y + +XP RD10N,1 + +;RD10 FOR SWAPPING?[N = CAN SWAP ON SOME OTHER TYPE] +;Y + +XP RDSWPN,1 + +;RP10 (MEMOREX) DISK PACKS? +;N + +XP RP10N,0 +XP RPSWPN,0 + +;RA10 (BRYANT) DISK? +;N + +XP RA10N,0 +XP RASWPN,0 + +;DPD (DATA PRODUCTS) DISK? +;N + +XP DPDN,0 +XP DPSWPN,0 + +;HOMW MANY JOBS?[ATTACHED AND DETACHED, COUNTING NULL JOB] +;28 +XP JOBN,34 + +;MAX SIZE OF CORE (IN K) FOR ANY SINGLE USER? +;0 MEANS ALL OF CORE +;0 +XP COREN,0 + +;PDP-10 PROCESSORE?[N = PDP-6] +;Y + +XP PDP10N,0 + +;2 RELOCATION REG, SOFTWARE?[Y = MUST HAVE KT10A, +;N = JUST 1 RELOC. REG.] +;Y + +XP KT10AN,0 + + +;HOW MANY MORE SEGMENTS THAN JOBS?[0 UNLESS YOU +;ANTICIPATE A LOT OF DORMANT SEGMENTS] +;0 +XP SEGN,0 + +;LOAD EXEC DDT?[N = ONLY IF LOADER HAS RUN OUT OF CORE BEFORE] +;Y + +XP DDTN,1 + +;LOAD LOCAL SYMBOLS?[N = ONLY IF LOADER HAS RUN OUT OF ROOM BEFORE] +;Y + + +;LOAD USER DDT?[BOTH CAN BE LOADED TOGETHER, +;USE USER DDT FOR PATCHING UNDER TIME SHARING] +;Y + +XP UDDTN,1 + +;NAME OF THIS SYSTEM (24 CHARS OR LESS)? +DEFINE SYSNAM +< ASCIZ \4S47 DEC PDP-10 #2\> + +;WHAT IS THE SERIAL NUMBER OF YOUR ARITHMETIC PROCESSOR? +;2 +XP APRSN,2 + + +;NAME OF SYSTEM DEVICE?[DTA0 USUAL FOR 10/40 SYSTEM, +;DSK USUAL FOR 10/50 SYSTEM] +DEFINE SYSDEV +< SIXBIT "DSK"> +DEFINE SYSDAT +< ASCIZ /6-3-69/> + +;DATA LINE SCANNER(DC10)?[N = WILL ASK FOR 680 OR 630] +;Y + +XP DLSN,1 +XP CCIN,0 +XP DCSN,0 + +;HIGHEST (OCTAL) LINE NUMBER?[USUALLY 7,17,27, ETC. FOR DC-10 OR 630 +;10, 20, 30 ETC. FOR 680 (TO ALLOW FOR PDP-8 CTY)] +;27 +XP HGHLIN,27 + +;FULL DUPLEX TTY SOFTWARE?[N = OLD HALF DUPLEX SOFTWARE] +;Y + +XP FULLN,1 +XP TABSN,0 + +;COMMON.MAC ALREADY EDITED FOR YOUR TTY CONFIGURATION? +;[N = WILL ALLOW YOU TO DEFINE NOW] +;Y + +XP EDITN,1 + +;PT READER? +;Y + +PTRN=1 ;NOT GLOBAL BECAUSE OF DSKSER USE + +;PT PUNCH? +;Y + +XP PTPN,1 + +;PLOTTER? +;Y + +XP PLTN,1 + +;HOW MANY LINE PRINTERS? +;1 +XP LPTN,1 + +;CARD READER? +;Y + + +;CR10?[Y = CR10A TOO, N IF PDP-6 CARD READER] +;Y + +XP CDRN,1 +XP CR10N,1 + +;CARD PUNCH +;N + +XP CDPN,0 + +;DISPLAY? +;N + +XP DISN,0 +XP PENN,0 +XP T340N,0 + +;HOW MANY DECTAPES? +;8 + +;TD10 DECTAPE CONTROL?[N = PDP-6 DECTAPE] +;Y +XP DTAN,10 +XP DTCN,0 + +;HOW MANY MAGTAPES? +;3 + +;TM-10A CONTROL?[N = WILL ASK TM-10B, THEN PDP-6 MAGTAPES] +;Y + +XP MTAN,3 +XP MTBN,0 +XP MTCN,1 + +;HOW MANY PSEUDO-TTY'S?[EACH CONCURRENT BATCH NEEDS ONE] +;2 +XP PTYN,2 +;TYPE "SYMBOL,VALUE" (VALUE IN DECIMAL)[FOR ANY SYMBOLS +;TO BE DEFINED. TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.] +RADIX 10 + +RADIX 8 +;TYPE "DEVICE-MNEMONIC,CHANNEL"FOR SPECIAL DEVICES +;[WITH NEITHER CHANNEL SAVE ROUTINE NOR DEVICE DATA BLOCK. +;"DEVICE" MUST BE 5 CHARCATERS OR LESS, +;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.] +DEFINE SPCINT +< +>;TYPE "DEVICE-MNEMNIC,CHANNEL,NO.-OF-DEVICES" +;[FOR SPECIAL DEVICE WITH CHANNEL SAVE ROUTINES AND DEVICE DATA BLOCKS +;"DEVICE" MUST BE 5 CHARS. OR LESS. +;TYPE EXTRA CARRIAGE RETUERN WHEN THROUGH.] +DEFINE SPCSAV +< +>;MONGEN FINISHED +;NEXT YOU MUST ASSEMBLE COMMON WITH MACRO +;THEN LOAD IT AND REST OF MONITOR WITH LOADER +;AND FINALLY SAVE IT WITH MONITOR COMMAND SAVE + +;[TO ASSEMBLE COMMON, TYPE +;R MACRO +;DSK:COMMON,LPT:_DSK:S,CONFIG,COMMON +;TO LOAD NEW MONITOR, TYPE +;R LOADER +;/S +;DSK:COMMON,DSK:SYS50/L +;LPT:_/W/D/A/M/P/G +;TO SAVE MONITOR, TYPE +;SAVE DSK MONITOR +;] +; ;END OF CONFIGURATION DEFINITION diff --git a/src/config.mac b/src/config.mac index f742e73..73311b2 100644 Binary files a/src/config.mac and b/src/config.mac differ diff --git a/src/core1.mac b/src/core1.mac index 1b96cdb..c369d22 100644 --- a/src/core1.mac +++ b/src/core1.mac @@ -92,7 +92,8 @@ IFN FTSWAP,< LSH TAC,-12 > JRST STOTAC ;STORE IN USER AC AND RETURN TO USER - ;ROUTINE TO CHECK JOBS TO SEE IF ANY JOB CAN BE SHUFFLED + +;ROUTINE TO CHECK JOBS TO SEE IF ANY JOB CAN BE SHUFFLED ;IT IS CALLED EVERY 60TH OF A SECOND BY CLOCK ROUTINE ;PROVIDING CURRENT JOB IS IN USER MODE OR JUST ENTERING ;IO WAIT OR SHARABLE DEVICE WIAT OR RETURNING ON UUO CALLS @@ -115,7 +116,7 @@ IFN FTSWAP,< ;THE NSHF BIT IN JOBSTS WHOULD BE SET FOR JOBS USING DISPLAYS ;SINCE DISSER CONTINUALLY REFERENCES USER AREA EVEN THOUGH ;IOAC1 IS OFF. - + ;THIS VERSION OF THE CORE SHUFFLER WORKS AS FOLLOWS: ;EVERY CLOCK TICK FOR WHICH ALL JOBS ARE SHUFFABLE(NOT COUNTING ACTIVE ;IO DEVICES). THE JOB IMMEDIATELY ABOVE THE LOWEST HOLE @@ -172,8 +173,7 @@ IFN FTSWAP,< MOVSI TAC,SHF ;SET SHF WAIT BIT IN JOB STATUS WORD IORM TAC,JBTSTS(ITEM) ;SO JOB WILL NOT BE RUN POPJ PDP, ;AND IO WILL STOP SOON - -;ROUTINE TO TEST FOR ANY ACTIVE DEVICES + ;ROUTINE TO TEST FOR ANY ACTIVE DEVICES ;CALL: MOVE ITEM,JOB NUMBER OR HIGH SEG NUMBER ; MOVE JDAT,ADDRESS OF JOB DATA AREA @@ -219,8 +219,7 @@ ANY2: SOJGE T1,ANY ;NO, KEEP LOOKING TDNN AC3,DEVMOD(DEVDAT) ;NOT FINISHED, IS DEVICE TTY? POPJ PDP, ;NO, ERROR RETURN, CANNOT ASSIGN CORE JRST ANY2 ;YES, KEEP LOOKING FOR AN ACTIVE DEVICE - -;ROUTINE TO TEST TO SEE IF JOB OR HIGH SEG CAN BE SWAPPED + ;ROUTINE TO TEST TO SEE IF JOB OR HIGH SEG CAN BE SWAPPED ; OR WHETHER IT SHOULD BE ALLOWED TO CONITNUE RUNNING ; UNTIL A MORE FAVORABLE ITME ;CALL: MOVE ITEM,HIGH RO LOW SEG NUMBER @@ -243,8 +242,7 @@ IFE FT2REL,< JRST CPOPJ1 ;NO, GIVE OK RETURN > > - -;ROUTINE TO FLUSH PHYSICAL CORE ASSIGNED IN MEMORY + ;ROUTINE TO FLUSH PHYSICAL CORE ASSIGNED IN MEMORY ;NOTE: THIS ROUTINE DIFERS SIGNIFICANTLY FROM CORE0 AND CORE1 IN THAT ;IT IS ONLY A PHYSICAL REMOVAL OF CORE(VIRTAL IS NOT AFFECTED) ;SEE COMMENTS FOR CORE1 @@ -261,6 +259,7 @@ SCORE1: SOS(PDP) ;CORE1 WILL ALWAYS SKIP RETURN ; AND FLUSH PHYSICAL CORE(LOGICAL CORE UNEFFECTED) + ;CORE0 IS CALLED BY THE CORE MONITOR COMMAND AND THE CORE SHUFFLER ;AND RUN COMMAND @@ -305,8 +304,7 @@ EXTERNAL JOBPR1,CPOPJ1,JOBPRT,USRPC,CORMAX ;THE CORE ROUTINES DO NOT ALTER THE HIGH SEG IN CORE COUT. IT IS UP TO THE CALLER ;(IN SEGCOR) TO CALL THE CORE ROUTINES ONLY IF IN CORE COUNT IS 0 ;AND END OF SWAPIN OF LOW SEG AND HIGH SEG IS ALREADY IN CORE FOR OTHER USER - -CORE0: + CORE0: IFE FTSWAP,< JUMPE PROG,CORGET ;IS JOB WITHOUT CORE IN MEMORY? > @@ -351,7 +349,7 @@ IFN FTTRPSET,< PUSHJ PDP,ANYACT ;NO,ANY ACTIVE DEVICE? POPJ PDP, ;YES, CANNOT ASSIGN CORE ; NO, FALL INTO CORE1 -;ROUTINE TO TRY TO ASSIGN CORE IN CORE + ;ROUTINE TO TRY TO ASSIGN CORE IN CORE ;LOW OR HIGH SEG MUST NOT BE SWAPPED OUT(CALLER'S RESPONSIBILITY) ;AND MUST NOT HAVE ANY ACTIVE DEVICES(IT MAY HAVE 0 CORE IN CORE THOUGH) ;IN OTHER WORDS HIGH OR LOW SEG MAY OR MAY NOT HAVE VIRTUAL CORE @@ -399,7 +397,7 @@ CORE1A: NOSCHEDULE ;PREVENT JOB SCHEDULING HLRZ BLK,PROG ;HIGHEST LEGAL REL. ADR. MOVEI T,0 ;CLEAR FOR CORSTG CALL PUSHJ PDP,CORSTG ;RETURN OLD CORE TO FREE STORAGE -;CORGET IS CALLED BY SWAPPER WHEN JOB IS ON DISC AND IS + ;CORGET IS CALLED BY SWAPPER WHEN JOB IS ON DISC AND IS ;WANTED IN CORE. CORGET: SETZB LOC,PROG ;SET NEW ASSIGNMENT TO 0 AND DIST. MOVED @@ -434,7 +432,7 @@ IFE FTSWAP,< ;OLD, CLEAR OUT INCREASED SO SECURITY WILL ; BE MAINTAINED. TAC1 IS SIZE-1 OF OLD ; ASSIGNMENT. -1 OF NO OLD ASSIGNMENT -;HERE WHEN FREE CORE TABLE DOES NOT HAVE ENOUGH ROOM FOR REQUEST + ;HERE WHEN FREE CORE TABLE DOES NOT HAVE ENOUGH ROOM FOR REQUEST BAKOLD: IFN FTSWAP,< @@ -455,8 +453,7 @@ IFE FTSWAP,< > BKOLD1: HLRZ TAC,JBTADR(ITEM) ;GIVE BACK OLD CORE. JRST CORGET - -;MOVE OLD CORE TO NEW AREA + ;MOVE OLD CORE TO NEW AREA MOVCOR: CAIN LOC,(BLK) ;IS NEW CORE IN SAME PLACE AS OLD? JRST CLRCOR ;YES, DO NOT MOVE IT,CLEAR IF INCREASE @@ -464,8 +461,8 @@ MOVCOR: CAIN LOC,(BLK) ;IS NEW CORE IN SAME PLACE AS OLD? CAILE TAC1,(TAC) ;IS OLD CORE LESS THEN NEW? HRRZ TAC1,TAC ;NO, MOVE THE SHORTENED NEW CORE IFN FTTIME,< - EXTERNAL SHRWRD - ADDM TAC1,SHRWRD ;INCREMENT TOTAL NO. WORDS SHUFFLED + EXTERNAL SHFWRD + ADDM TAC1,SHFWRD ;INCREMENT TOTAL NO. WORDS SHUFFLED > ADD TAC1,LOC ;ADD IN NEW RELOC. MOVE AC1,LOC ;DEST.=NEW RELOC. @@ -488,6 +485,7 @@ IFN FTTIME,< SETZM -1(TAC1) ;CLEAR FIRST WORD HRLI TAC1,-1(TAC1) ;SET LH TO FIRST ADR. TO CLEAR BLT TAC1,(TAC) ;CLEAR THE INCREASE PORTION + ;IF THE SHUFFLED JOB IS IN EXEC MODE, ITS DUMP ACS ;(PDP,PROG,JDAT SAVED IN JOB DATA AREA) MUST BE ;ALTERED BY DISTANCE CODE WAS MOVED @@ -576,8 +574,7 @@ IFN FTSWAP,< SUBI LOC,2000(BLK) ;YES, SET LOC TO FIRST BLOCK IN HOLD SOJA BLK,CPOPJ1 ;SET BLK TO HIGHEST REL. LOC. ; AND RETURN - -;ROUTINE TO SET AND CLEAR CORE USE TABLE + ;ROUTINE TO SET AND CLEAR CORE USE TABLE ;CALL: MOVEI T,1 ;TO SET TABLE MOVEI T,0 ;TO CLEAR TABLE ; MOVE BLK,HIGHEST REL. LOC. IN USER AREA diff --git a/src/crfall.ccl b/src/crfall.ccl index ffb9188..78feb56 100644 --- a/src/crfall.ccl +++ b/src/crfall.ccl @@ -1,10 +1,12 @@ +CDRSR6=CDRSR6 +CDRSRX=CDRSRX CLOCK1=CLOCK1 CLKCSS=CLKCSS COMCON=COMCON COMMON=COMMON CORE1=CORE1 DIS340=DIS340 -DIS34=DIS30 +DIST30=DIST30 DCSINT=DCSINT DLSINT=DLSINT DPDINT=DPDINT @@ -19,12 +21,15 @@ LPTSER=LPTSER MTCSR6=MTCSR6 MTASRX=MTASRX NULSEG=NULSEG +SEGCON=SEGCON PLTSER=PLTSER PTRSER=PTRSER PTPSER=PTPSER PTYSRF=PTYSRF PTYSRH=PTYSRH PATCH=PATCH +SYSINI=SYSINI +SYSMAK=SYSMAK ONCEB=ONCEB SCNSRF=SCNSRF SCHEDB=SCHEDB diff --git a/src/disser.mac b/src/disser.mac index b2237ad..70bde24 100644 --- a/src/disser.mac +++ b/src/disser.mac @@ -158,7 +158,7 @@ DISSTP: MOVE ITEM,JOB ;CLEAR NSHF SO JOB CAN BE SHUFFLED ANDCAM TAC,JBTSTS(ITEM) DISIN1: SETOM PENLOC - MOVSI TAC,DISWAT+DISUUO ;IGNORE FURTHER TRAPS + MOVSI TAC,DISWAT+DISUUI ;IGNORE FURTHER TRAPS HRRI TAC,IOACT ;INDICATED DEVICE INACTIVE ANDCAM TAC,DISIOS ;INTO DEVICE DATA BLOCK DISOFF: CONO DIS,OFFDIS ;REMOVE THE DISPLAY'S CHANNE; ASSIGNMENTS @@ -357,7 +357,7 @@ CLOKRT: XWD CLOK,2 ;CONTROL FOR CLOCK QUEUE: 2 JIFFIES CLOK: MOVSI IOS,DISCKR ;INDICATE CLOCK REQUEST SERVICED ANDCAB IOS,DISIOS ;... - TLDE IOS,DISUUI + TLOE IOS,DISUUI MOVSI IOS,DISTAR ;ASK DISPLAY TO RESTART IORB IOS,DISIOS ;... TLNN IOS,DISWAT ;HAS DISPLAY FINISHED? diff --git a/src/dpdint.mac b/src/dpdint.mac index d20703c..21d7ec7 100644 Binary files a/src/dpdint.mac and b/src/dpdint.mac differ diff --git a/src/dskint.mac b/src/dskint.mac index 6a55479..2b3f239 100644 --- a/src/dskint.mac +++ b/src/dskint.mac @@ -290,3 +290,4 @@ DFORDR: 0 ;ITS CORRESPONDING PHYSICAL DISK ADDRESS. > DSKEND: END + \ No newline at end of file diff --git a/src/dskser.mac b/src/dskser.mac index 6b6d9d2..30fe5b8 100644 --- a/src/dskser.mac +++ b/src/dskser.mac @@ -54,7 +54,7 @@ SATXWD: XWD -NUMSAT,67 ;BLOCKS GO AT THESE ABSOLUTE ADDRESSES ; UNLESS USER SPECIFIES OTHERWISE DURING "ONCE". > IFE FTRC10, < -MDFBLK: 13000 ;THIS BLOCK CONTAINS RETRIEVAL INFO, OF MFD +MFDBLK: 13000 ;THIS BLOCK CONTAINS RETRIEVAL INFO, OF MFD SATXWD: XWD -NUMSAT,13001 ;LH=NUMBER OF SAT BLOCKS. ;RH=FIRST SAT BLOCK NUMBER. >> @@ -159,7 +159,7 @@ RUNUSR: BLOCK 1 ;LH=DEVDAT OF USER JOB RUNNING USRCNT: BLOCK 1 ;COUNT OF WAITING USER JOBS DFBUSY: 0 ;-1 IF DISK CONTROL IN USE, 0 IF FREE FAT: 0 ;POINTER TO FIRST ACCESS TABLE ENTRY -DKSMOT: 0 ;COUNT OF VARIOUS CHECKSUM ERRORS +CKSMCT: 0 ;COUNT OF VARIOUS CHECKSUM ERRORS REFLAG: 0 ;CONTAINS A PPN TO ALLOW LOGIN AFTER REFRESH UXFERS: 0 ;TOTAL USER TRANSFER ATTEMPTED ECOUNT: 0 ;TOTAL HARDWARE ERRORS ON USER TRANSFERS @@ -174,7 +174,7 @@ SATTMP: BLOCK 1 ; ROUTINE TO AVOID PUSH-DOWN LIST OVERFLOW. IFN FTRA10, < EXTERNAL MFDBLK,SATXWD,NUMBLK,SATENT,SENTSZ,SATTOP > -IFE FTRA10,< +IFE FTRA10, < INTERNAL SATENT IFN FTRC10, < @@ -186,7 +186,7 @@ IFE FTRC10, < ;ONE SAT BLOCK ON THE DATA PRODUCTS 270 DISK. > XP SENTSZ,3 ;SIZE OF EACH SATENT ENTRY -IFN FTREC10, < +IFN FTRC10, < DSKXDB=0 ;ON PDP-10 DISK FILE STORAGE BEGINS IN LOGICAL ; BLOCK NO. 0, > @@ -203,12 +203,12 @@ SATENT: REPEAT NUMSAT,< ; IN SAT BLOCK DSKXDB=DSKXDB+NUMBLK> - XP SATTOP,SATENT*SENTSZ*NUMSAT-SENTSZ + XP SATTOP,SATENT+SENTSZ*NUMSAT-SENTSZ >;END OF FTRA100 CONDITIONAL SAT: BLOCK 200 ;CURRENT SAT BLOCK - XP SAATM2,SAT-2 ;LOWEST ABS, ADR-1 ALLOWED IN CHANNEL COMMAND + XP SATM2,SAT-2 ;LOWEST ABS, ADR-1 ALLOWED IN CHANNEL COMMAND ; LIST - USED TO KEEP FROM WIPING OUT MONITOR. SATBK2: XWD -200,SAT @@ -282,7 +282,7 @@ MONBUF: BLOCK 200 ;MONITOR BUFFER, USED TO READ RETRIEVAL POINTERS, ETC. NOTINU=0 ;NO SUCH FILE NOTINM=1 ;NO SUCH USER -PHOTF=2 ;PROTECTION FAILURE +PROTF=2 ;PROTECTION FAILURE NORITE=3 ;MORE THAN 1 WRITE TO A FILE RENFAL=4 ;TRIED TO RENAME FILE TO EXISTING NAME OR ENTER ; A NULL FILE NAMES @@ -571,7 +571,7 @@ DFLUK3: AOS TBITS(TAC) ;INCREMENT RCOUNT TLZE IOS,PRCHG ;PROTECTION CHANGE FAILURE? JRST DFLUK7 ;YES. ERROR RETURN MOVSI DAT,200000 ;READ PROTECTION BIT - PUSH J PDP,PROTEK ;READ PROTECTED? + PUSHJ PDP,PROTEK ;READ PROTECTED? JRST DFERR3 ;NAME WRONG JRST DFLUK7 ;PROTECTION FAILURE @@ -954,16 +954,16 @@ PROTKY: MOVE ITEM,JOB TLNE AC1,-1 ;NO, SAME PROJECT? ROT DAT,-3 ;NO, ROTATE TO UNIVERAL FIELD -PROT1: TLZ DAT,60000 ;DO NOT TEST OWNER READ OR PROTECT PROTECTION +PROT1: TLZ DAT,60000 ;DO NOT TEST OWNER READ OR PROTECT PROTECTION TDNN DAT,2(TAC) - JRST CPOPJ1 ;PROTECTION O.K. + JRST CPOPJ1 ;PROTECTION O.K. MOVE AC1,PRJPRG(ITEM) - CAMN AC1,DUMPPP ;EQUAL TO DUMPPER PROJECT - ;PROGRAMMER NUMBER? - AOS(PDP) ;YES, ALL FILES AVAILABLE + CAMN AC1,DUMPPP ;EQUAL TO DUMPPER PROJECT + ;PROGRAMMER NUMBER? + AOS(PDP) ;YES, ALL FILES AVAILABLE POPJ PDP, -;CLOSE UUO + CLOSE UUO ;CLOSE AN OUTPUT FILE EXTERNAL PIOMOD,WAIT1,OUT @@ -1381,7 +1381,7 @@ WUFD1: PUSHJ PDP,MQOUT ;WRITE UFD BLOCK JRST WUFD3 ;WRITE ERROR MOVE TAC,DEVOAD(DEVDAT) TLO IOS,NMP ;SET NMP - MOVEM IOS,DEVIOS(DEVDAT) ;SO DFO4A WON'T READ POINTERS + MOVEM IOS,DEVIOS(DEVDAT) ;SO WON'T READ POINTERS TLN TAC,PNTDIF ;WERE POINTERS CHANGED? PUSHJ PDP,DFO4A ;YES, WRITE THEM OUT. SOSL AUREQ ;RELEASE UFD RESOURCE @@ -1511,7 +1511,7 @@ DFDO1A: PUSHJ PDP,SATGET ;AQUIRE A NON-FULL SAT BLOCK MOVMS ITEM ADDI ITEM,BLKSIZ-1 ;MAKE E.G. 129 WORDS USE 2 DISK BLOCK ASH ITEM,-BLKP2 ;NUMBER OF BLOCK REQUIRED FOR THIS WRITE -DFDO2A: HRRZ AC1,SATPTR +DFD02A: HRRZ AC1,SATPTR MOVE AC2,SATBK2 DFDO1B: PUSHJ PDP,GETBIT ;ASK FOR C(ITEM BITS) JRST DFDO6 ;NOT AVAILABLE @@ -2016,7 +2016,7 @@ DFIN4: MOVEI AC2,PTR1(DEVDAT) ;RESET DEVACC MOVE TAC,DEVBLK(DEVDAT) ;RESET DEVBKO MOVEM TAC,DEVBKO(DEVDAT) ;BLOCK # WORD INDEX OF A CURRENT RETRIEVAL PACKET GTPTR1: PUSHJ PDP,SET000 ;SET TAC1 TO FIRST WORD OF RIB - MOVE IOS,DEVIOS(DEVDAT) + MOVE IOS,DEVIOS(DEVDAT) HRRZ AC3,DEVBLK(DEVDAT) ;WORD INDEX OF RETRIEVAL POINTER PACKET ADD AC3,TAC1 ;AC3 POINTS TO NEXT POINTER WITHIN RIB ADDI TAC1,BLKSIZ-2 ;TAC1 POINTS TO WORD 127 @@ -2109,7 +2109,7 @@ DFOUT1: HRRZ DAT,DEVACC(DEVDAT) ;*GET POINTER LOC ORM TAC1,DEVOAD(DEVDAT) MOVEM TAC,@DAT> -DFOT3A: CAIE DAT,PRTN(DEVDAT) ;*LIST FULL? +DFOT3A: CAIE DAT,PTRN(DEVDAT) ;*LIST FULL? JRST QOUT ;*NO, WRITE AND LEAVE ;OUTPUT UUO CONTINUED. @@ -2503,7 +2503,7 @@ SUBTTL "FREE" CORE ALLOCATION INTERNAL CLRDDB CLRDDB: MOVEI TAC,DSKDDB ;POINT TO PROTOTYPE DDB -CLRDB1: MOVE TAC1,TAC ;COPY LINK TO TAC1 +CLDDB1: MOVE TAC1,TAC ;COPY LINK TO TAC1 HLRZ TAC,DEVSER(TAC1) ;GET LINK TO NEXT DDB JUMPE TAC,CPOPJ ;0 MEANS END CAIE TAC,(DEVDAT) ;OWNED BY CURRENT USER? @@ -2584,7 +2584,7 @@ SETBF5: HRLI TAC1,NBLKSZ SETBF6: AOSE MQREQ PUSHJ PDP,MQWAIT - TLO IUOS,UBFU ;BUFFER IN MONITOR CORE + TLO IOS,UBFU ;BUFFER IN MONITOR CORE MOVEI TAC1, MONBUF ;TAC1 POINTS TO MONITOR BUFFER JRST SETBF5 @@ -2644,7 +2644,7 @@ GETZ2: AOBJP TAC,CPOPJ CAMN DAT,(TAC) JRST GETZ2 -GETZ3: TONE TAC1,(TAC) +GETZ3: TDNE TAC1,(TAC) JRST GETZ1 JRST CPOPJ @@ -2900,7 +2900,7 @@ EXTERNAL MQTOP,MQUEUE DFINT: IFN FTSWAP,< - EXTERNAL SQREQ,SERA,SOGO,SWPINT + EXTERNAL SQREQ,SERA,SQGO,SWPINT MOVE TAC,SERA ;*WAS THAT A SWAPPING JOB? TLNE TAC,200000 ;* JRST SWPINT ;*YES @@ -2979,7 +2979,7 @@ DFINT3: HRRM IOS,DSKCNT(DEVDAT) ;SAVE ANY ERRORS DFINT4: MOVEM IOS,DEVIOS(DEVDAT) ;CLEAR IOACT DINT4A: IFN FTSWAP,< SKIPE SQREQ ;SWAPPING JOB WAITING? - JRST SOGO ;YES,START IT + JRST SQGO ;YES,START IT > INTERNAL DINT4B @@ -3015,7 +3015,7 @@ DFINT6: ANDCAM TAC,DEVOAD(DEVDAT) ;CLEAR OUTPUT WAIT BIT IN DDB JRST USRGO ;START UP A USER READ - + DFINT7: ANDCAM TAC,DEVIAD(DEVDAT) ;CLEAR INPUT WAIT BIT IN DDB USRGO: MOVSM DEVDAT,RUNUSR ;SAVE DEVDAT FOR USE AT DFINT @@ -3235,7 +3235,7 @@ WLERA: HLR TAC,DSKCNT(DEVDAT) ;PICK UP BLOCK NUMBER. ;SET WRITE-LOCK INDICATION IN A SAT ENTRY. ;ENTER WITH A BLOCK NUMBER IN TAC. -SETWL: MOVEI TAC1,SETENT ;* +SETWL: MOVEI TAC1,SATENT ;* JRST .+2 ;* SETWL1: ADDI TAC1,SENTSZ ;* HLRZ ITEM,@TAC1 ;*IS THE BLOCK IN THIS SAT ENTRY? @@ -3248,3 +3248,4 @@ SETWL1: ADDI TAC1,SENTSZ ;* DSKSR: END + diff --git a/src/dtasrn.mac b/src/dtasrn.mac index 2f8d0bd..c0530cc 100644 --- a/src/dtasrn.mac +++ b/src/dtasrn.mac @@ -81,11 +81,11 @@ DTADDB: SIXBIT /DTA0/ DTADIR: BLOCK 200 -DTADDS=.-DTADDR +DTADDS=.-DTADDB JRST DTAINI JRST HUNGTP ;HUNG DEVICE -DTADSP JRST UREL +DTADSP: JRST UREL JRST UCLS JRST UOUT JRST UIN @@ -103,7 +103,7 @@ DTADSP JRST UREL HRRZ TAC1,UUO ;MTAPE - GET OPERATION CAIE TAC1,1 ;REWIND OR CAIN TAC1,11 ;REWIND UNLOAD ARE LEGAL - SOJA TAC1,MTA0 + SOJA TAC1,MTAP0 POPJ PDP, ;OTHERS ARE NO-OPS ;INITIALIZE DTC @@ -208,7 +208,7 @@ NMLOOK: SKIPN TAC1,@UUO ;GET NAME MOVEM TAC1,DEVFIL(DEVDAT) ;STORE FOR RENAME AND SUPERSEDING ; SHARED SEGMENTS CAMN TAC1,(TAC) ;TEST FOR MATCH - AOJA UUOI,NMFOUN ;FOUND NAME, CHECK EXTENSION + AOJA UUO,NMFOUN ;FOUND NAME, CHECK EXTENSION AOBJN TAC,.-2 ;TRY NEXT NAME POPJ PDP, ;NOT FOUND NMFOUN: HLLZ TAC1,@UUO ;PICK UP USER'S EXTENSION @@ -296,7 +296,7 @@ DLETE: MOVEI TAC1,0 ;SET TO DELETE BLOCKS ENTR: TRNE IOS,UDSD ;NON STANDARD? JRST CPOPJ1 ;YES. RETURN PUSHJ PDP,DSERCH ;NO. LOOK FOR MATCH - JRST NEWNT ;THIS IS A NEW ENTRY + JRST NEWENT ;THIS IS A NEW ENTRY ENTR2: MOVE TAC1,@UUO ;PICK UP 2ND WORD (EXTENSSION) AOS UUO ;POINT TO WORD 3 HRR TAC1,@UUO ;ADD DATE @@ -317,7 +317,7 @@ ENTRA: SUBI UUO,2 ;NO. POINT TO NAME HRLM TAC,OBLK(DEVDAT) ;SAVE INDEX IN DDB PUSHJ PDP,DLETE ;DELETE ALL BLOCKS BELONGING TO FILE - AOJE AC3,FNTRD ;FIND FIRST FREE BLOCK ON TAPE IF THIS + AOJE AC3,ENTRD ;FIND FIRST FREE BLOCK ON TAPE IF THIS ;IS A SAVE FILE (UGETF DONE) MOVEI BLK,DIRBLK ;NO. GET 1ST BLOCK CLOSE TO TLO IOS,RVERSE ;DIRECTORY. GOING IN REVERSE @@ -342,7 +342,7 @@ MARKDR: PUSHJ PDP,DRPTR ;SET POINTER TO BLOCK IN DIR ;;SET POINTER TO CORRECT DIRECTORY ENTRY DRPTR: SUBI BLK,1 ;SET FOR ILDB OR IDPB IDIVI BLK,7 ;COMPUTE WORD, POSITION - ADD BLK,OLOC(DEVDAT) ;GET CORRECT ADDRESS + ADD BLK,DLOC(DEVDAT) ;GET CORRECT ADDRESS HRLI BLK,440500 ;MAKE IT A BYTE POINTER JUMPE DAT,CPOPJ ;CORRECT FOR POSITION IN WORD IBP BLK @@ -451,7 +451,7 @@ UCLS: TLZE IOS,NOLINK ;IS LAST BLOCK NOT LINKED? JRST OUT ;GO TO WRITE RECORD ;HERE TO CLOSE A DUMP MODE FILE -CLSDMP: TLO IOS,DMPOCLS+IO+DMPMOD ;SET SWITCHES +CLSDMP: TLO IOS,DMPCLS+IO+DMPMOD ;SET SWITCHES PUSHJ PDP,GETDT ;GET CONTROL SETZM BUF ;ENSURE ZERO LINK,WORDCOUNT SETZM BUF+1 ;MAKE SURE 0, SO CAN GET WITH 3 SERIES MON. @@ -589,7 +589,7 @@ UOUT: TLO IOS,IO HRRZ BLK,OBLK(DEVDAT) CAIN BLK,DIRBLKK ;CHECK IF WRITING DIRECTORY JRST COR2HM ;YES, WRITE CORE IMAGE - JUMPE BLK,FAKAV ;DONT WRITE IF NO BLOCK GIVEN + JUMPE BLK,FAKADV ;DONT WRITE IF NO BLOCK GIVEN PUSHJ PDP,BLKCHK ;CHECK FOR LEGAL BLOCK UOUT2: TLNN IOS,DMPMOD ;ALREADY HAVE CONTROL IF DUMP-MODE @@ -655,7 +655,7 @@ DMPSET: PUSHJ PDP,GETDT ;GET CONTROL JRST DMPTS1 ;YES. RETURN IFN CPBIT, < TRNE IOS,UDSD ;NO. NON-STD MODE? - SOJA DAT,TDUSER ;YES. GO ELSEWHERE + SOJA DAT,TOUSER ;YES. GO ELSEWHERE > DMPST2: SOS UUO ;NO. SAVE START OF LIST (-1) MOVEM UUO,DMPLST(DEVDAT) @@ -666,7 +666,7 @@ DMPTS1: POP PDP,TAC IFN CPBIT, < ;HERE TO START DUMP-MODE INTO USER AREA DIRECTLY -TOUSRF: JUMPE AC2,NOBLK0 ;CANT READ BLK 0 IN NON-STD DUMP MODE +TOUSER: JUMPE AC2,NOBLK0 ;CANT READ BLK 0 IN NON-STD DUMP MODE ASH DAT,-7 ;NUMBER OF WRDS IN LIST /200 AOS DAT MOVEM DAT,BLKCNT ;SAVE TO UPDATE POSITION @@ -696,7 +696,7 @@ DMPFIL: MOVSI TAC1,-177 > DMPFLB: PUSHJ PDP,NXTCOM ;GET NEXT COMMAND JRST DMPOTH ;END OF LIST -DMPLFA: MOVE TEM,(TAC) ;GET NEXT WORD +DMPFLA: MOVE TEM,(TAC) ;GET NEXT WORD MOVEM TEM,BUF+1(TAC1) ;INTO BUFFER AOBJP TAC1,DMPOVR ;BUFFER FULL IF GOES AOBJN TAC,.-3 ;GET NEXT WORD FROM COMMAND @@ -734,7 +734,7 @@ NXTCOM: SKIPN DMPLST(DEVDAT) ;END OF COMMANDS? NXTCM1: HRRM TAC,DMPLST(DEVDAT) ;STORE GO-TO ADDRESS MOVE TAC,@TAC ;GET COMMAND JUMPE TAC,NXTCM2 ;END OF LIST - JUMPG TAX,NXTCM1 ;GO-TO WORD + JUMPG TAC,NXTCM1 ;GO-TO WORD ADDI TAC,(PROG) ;REAL COMMAND - ADD RELOCATION AOJA TAC,CPOPJ1 ;AND RETURN ;END OF DUMP-MODE LIST @@ -782,7 +782,7 @@ IOGO2: CONO DTC,DTBOTH(TAC1) ;START READ OR WRITE ;HERE IF TAPE IS GOING IN REVERSE WHEN BLOCK NUMBER FOUND IORVRS: ADDI TAC,176 ;START AT TOP OF BUFFER MOVE TEM,[JSR RVERS] - JRST TOGO ;COMPILCATED STUFF FOR EACH WORD + JRST IOGO ;COMPILCATED STUFF FOR EACH WORD ;HERE FOR AY DATA WORD WITH TAPE IN REVERSE RVERS: 0 @@ -894,7 +894,7 @@ SRCHA: CONSZ DTC,100000 ;IF TAPE IS IN REVERSE JRST SRCHXT ;AND GO AWAY MOVMS TAC CAILE TAC,MINDIS ;WORTH WHILE TO DISCONNECT TAPE? - JRST BEKON ;YES. GO DISCONNECT + JRST REKON ;YES. GO DISCONNECT SKIPLE DISCON ;NO. IS THERE A DISCON. TAPE ;WHICH HAS TIMED OUT? CAIG TAC,2 ;YES. WILL THIS SEARCH TAKE LONG? @@ -906,18 +906,18 @@ SRCHXT: MOVE TAC,TEMP ;RESTORE TAC SETZM ALMSWT JEN @SRCH ;AND DISMISS THE INTERRUPT ;HERE IF AN ILLEGAL BLOCK WAS READ FROM THE TAPE -SRCHR: AOS TAC,ERRCNT ;BUMP ERROR COUNT - CAIG TAC,DTTRV ;TRIED ENOUGH? +SRCHB: AOS TAC,ERRCNT ;BUMP ERROR COUNT + CAIG TAC,DTTRY ;TRIED ENOUGH? JRST SRCHXT ;NO. READ ANOTHER BLOCK NUMBER SETOM BLOCK ;YES. BLOCK = -1 AS AN ERROR SWITCH - CONO DTA,770001 ;FUNCTION STOP + CONO DTS,770001 ;FUNCTION STOP JRST SRCHXT ;GO AWAY IFN CPBIT, < SRCHC: CONSZ DTC,100000 ;GOING FORWARD? TLCA TAC,400000 ;NO. SWITCH TURN AROUND TEST. ENSURE FORWARD JUMPE TAC,FOUND ;GO IF FOUND FORWARD - SKIPI TAC ;TURN AROUND?> + SKIPL TAC ;TURN AROUND? CONO DTC,DTTURN ;YES JRST SRCHXT ;READ ANOTHER BLOCK NUMBER > @@ -1011,7 +1011,7 @@ SWPBAK: MOVE IOS,DEVIOS(DEVDAT) SETM MONB2 ;CLEAR JOB NO, FROM MON BUFFER TLNN IOS,IOFST ;WAS JOB SWAPPED OUT WHEN DATA FINISHED? POPJ PDP, ;NO. TRANSFER COMPLETED - MOVE TAC,JBTSTS(ITEM) ;YES, WAS IO ABORTED?> + MOVE TAC,JBTSTS(ITEM) ;YES, WAS IO ABORTED? TRNN TAC,ALBORT JRST FAKINT ;NO. NOW TRANSFER DATA, ADVANCE BUFFERS JRST THRUTP ;YES. FORGET REST OF OPERATION @@ -1083,7 +1083,7 @@ FOUND: MOVEM TAC1,FNDTMP ;SAVE THOSE ACS THAT WILL BE USED MOVEM TEM,RVERS EXCH DEVDAT,USEWRD EXCH IOS,DEVIOS(DEVDAT) - ECHO PDP,FNDPDP + EXCH PDP,FNDPDP PUSHJ PDP,@DISPAD(DEVDAT) ;GO TO DISPATCH LOCATION EXCH PDP,FNDPDP ;RESTORE ACS EXCH IOS,DEVIOS(DEVDAT) @@ -1169,7 +1169,7 @@ DTAIN2: TLNE IOS,DMPMOD ;DUMP MODE? HRRM BLK,IBLK(DEVDAT) ;DAVE IN DDB TRNE IOS,IODTER+IODERR+IOIMPM JRST THRUIN - PUSHJ PDP,ADVBUFF ;GET NEXT BUFFER + PUSHJ PDP,ADVBFF ;GET NEXT BUFFER JRST THRUIN ;EMPTY BUF NOT AVAILABLE SKIPLE DISCON ;TAPE TIMED OUT? @@ -1193,7 +1193,7 @@ THRUTP: SKIPLE TAC,DISCON ;TAPE TIMED OUT? THRUTD: SOSL DTREQ ;BUMP COUNT DOWN SETOM DTAVAL ;TELL SCHEDULER THRUTA: CONO DTC,10000 ;DESELECT CONTROL - TLZ IOS,DMPMOD+NOBUF+DMPCLS+PEWBIT+RUNBIT + TLZ IOS,DMPMOD+NOBUF+DMPCLS+REWBIT+RUNBIT SETZM USEWRD ;INDICATE CONTROL NOW FREE JRST CLRACT ;RESET IOACT AND RETURN @@ -1266,9 +1266,9 @@ SVDMTH: SKIPLE DISCON ;HAS A TAPE TIMED OUT SUB TAC1,ONEONE ;SET UP TAC1 WITH COUNT > TLNN IOS,IO - JRST SVOMIN ;INPUT FILE + JRST SVDMIN ;INPUT FILE HRRZ BLK,OBLK(DEVDAT) ;OUTPUT FILE, NEXT BLOCK - JUMPF BLK,DMPTHA ;LAST BLOCK + JUMPE BLK,DMPTHA ;LAST BLOCK IFE CPBIT, < TRNE IOS,UDSD ;IF NON-STD MODE AOSA OBLK(DEVDAT) ;WRITE CONSECUTIVE BLOCKS @@ -1329,7 +1329,7 @@ DMIFLB: MOVE TEM,BUF+1(TAC1) ;NEXT DATA WORD JUMPE BLK,DMPEOF ;IF EOF - LIGHT BIT RDNXT: CAIG BLK,TOPBLK ;BLOCK LEGAL? JRST READBC ;GO READ BLOCK NUMBER - TROA IOS,IOBLKT ;LIGHT ERROR BIT + TROA IOS,IOBKTL ;LIGHT ERROR BIT ;EOF BEFORE ALL DATA IS IN - DUMP MODE DMPEOF: TRO IOS,IODEND ;LIGHT EOF BIT @@ -1349,7 +1349,7 @@ ERRS: AOS TAC,ERRCNT ;BUMP COUNT > ERRS1: CONSO DTS,40000 ;IF ILLEGAL OP - DONT RETRY CAILE TAC,DTTRY ;ENOUGH REREADS? - JRST PERMET ;YES. PERMANENT ERROR + JRST PERMER ;YES. PERMANENT ERROR JRST FNDBL2 ;NO. TRY AGAIN ;PERMANENT ERROR @@ -1363,7 +1363,7 @@ DERR: TRO IOS,IODERR ;MISSED DATA TRO IOS,IOIMPM ;ILLEGAL OP TLNE IOS,DMPMOD ;DUMP MODE? JRST DMPTHR ;YES. NOT THROUGH YET - TLNN IOS,IO+RDDIR+SINGL + TLNN IOS,IO+RWDIR+SINGL JRST DTAIN2 REWDUN: TLZE IOS,IOW PUSHJ PDP,SETIOD ;NO. TAKE OUT OF IO WAIT @@ -1371,9 +1371,9 @@ REWDUN: TLZE IOS,IOW JRST THRUTP ;NO. RETURN TO USER PUSHJ PDP,THRUTP ;YES. STOP TAPE MOVSI TAC,DVDIRIN ;CLEAR DIRECTORY IN CORE BIT - ANDCAM TAC,DEVMOND(DEVDAT) + ANDCAM TAC,DEVMOD(DEVDAT) BDDIR: LDB ITEM,PJOBN ;NUMBER OF OFFENDING JOB - JRST RADDIR ;GO PRINT ERROR MESSAGE + JRST BADDIR ;GO PRINT ERROR MESSAGE INTERN DTABUF BFPNTR: IOWD 200,BUF+1 ONEONE: XWD 1,1 @@ -1395,7 +1395,7 @@ BLKCNT: 0 SVPNTR: 0 USPNTR: 0 -DIRCNT: 0 +DIRCTN: 0 > ;THIS IS THE MONITOR BUFFER DTABUF: diff --git a/src/dtcsrn.mac b/src/dtcsrn.mac index d8286ce..8d0970e 100644 --- a/src/dtcsrn.mac +++ b/src/dtcsrn.mac @@ -1,11 +1,11 @@ TITLE DTCSRN - NEW FORMAT DECTAPE SERVICE FOR 551 (PDP-6) SUBTTL DTA551 A.WACHS/TW/RCC 01 JUN 69 V012 - XP VDTASR,012 ;GLOBAL VERSION NUMBER FOIR LOADER STORAGE MAP. + XP VDTASR,012 ;GLOBAL VERSION NUMBER FOR LOADER STORAGE MAP. ENTRY DTCSRN ;ENTRY POINT FOR SELECTIVE LOAD BY BUILD DTCSRN: EXTERNAL TPOPJ,TPOPJ1,DTCCHL,DCOUT,DCIN,DCON,DCOFF -EXTERNAL STOIOS,STOTAC,SETACT,CLRACT,OUT,DTASAV,PIOMOD +EXTERNAL STOIOS,STOTAC,SETACT,CLRACT,OUT,DTCSAV,PIOMOD EXTERNAL DTAVAL,DTREQ,SETIOD,THSDAT,PUNIT,GETDCDT EXTERNAL ADVBFE,ADVBFF,ADRERR,WAIT1,CPOPJ,CPOPJ1,BADDIR @@ -74,7 +74,7 @@ DTCDDS=.-DTCDDB JRST DTCINI JRST THRUTP ;HUNG DEVICE -DTADSP JRST UREL +DTCDSP: JRST UREL JRST UCLS JRST UOUT JRST UIN @@ -125,10 +125,10 @@ STOWD4: IMUL TAC1,[-177] ;-NUMBER OF WORDS IF ALL BLOCKS FULL TLO IOS,SINGL ;JUST READ 1 RECORD MOVEI BLK,DIRBLK ;NO, FIND FIRST MENTION OF BLOCK PUSHJ PDP,LSTFRE+1 ;NEAR DIRECTORY - JUMPN BLK,LOOKE ;FOUND IF BLK NOT =0 + JUMPN BLK,.+3 ;FOUND IF BLK NOT =0 LOOKD: PUSHJ PDP,BLKSRC ;FIND FIRST MENTION IN DIRECTORY JRST BDDIR ;NOT THERE - ERROR -LOOKE: PUSHJ PDP,RDBLUK ;GO READ IT + PUSHJ PDP,READBF ;GO READ IT PUSHJ PDP,WAIT1 ;WAIT TILL IT'S IN HRLM AC1,IBLK(DEVDAT) ;SAVE INDEX ON INPUT FILE FOR LATER ;TEST ON ENTER - WONT ALLOW ENTER @@ -189,7 +189,7 @@ NMLOOK: SKIPN TAC1,@UUO ;GET NAME MOVEM TAC1,DEVFIL(DEVDAT) ;STORE FOR RENAME AND SUPERSEDING ; SHARED SEGMENTS CAMN TAC1,(TAC) ;TEST FOR MATCH - AOJA UUOI,NMFOUN ;FOUND NAME, CHECK EXTENSION + AOJA UUO,NMFOUN ;FOUND NAME, CHECK EXTENSION AOBJN TAC,.-2 ;TRY NEXT NAME POPJ PDP, ;NOT FOUND NMFOUN: HLLZ TAC1,@UUO ;PICK UP USER'S EXTENSION @@ -277,7 +277,7 @@ DLETE: MOVEI TAC1,0 ;SET TO DELETE BLOCKS ENTR: TRNE IOS,UDSD ;NON STANDARD? JRST CPOPJ1 ;YES. RETURN PUSHJ PDP,DSERCH ;NO. LOOK FOR MATCH - JRST NEWNT ;THIS IS A NEW ENTRY + JRST NEWENT ;THIS IS A NEW ENTRY ENTR2: MOVE TAC1,@UUO ;PICK UP 2ND WORD (EXTENSSION) AOS UUO ;POINT TO WORD 3 HRR TAC1,@UUO ;ADD DATE @@ -298,7 +298,7 @@ ENTRA: SUBI UUO,2 ;NO. POINT TO NAME HRLM TAC,OBLK(DEVDAT) ;SAVE INDEX IN DDB PUSHJ PDP,DLETE ;DELETE ALL BLOCKS BELONGING TO FILE - AOJE AC3,FNTRD ;FIND FIRST FREE BLOCK ON TAPE IF THIS + AOJE AC3,ENTRD ;FIND FIRST FREE BLOCK ON TAPE IF THIS ;IS A SAVE FILE (UGETF DONE) MOVEI BLK,DIRBLK ;NO. GET 1ST BLOCK CLOSE TO TLO IOS,RVERSE ;DIRECTORY. GOING IN REVERSE @@ -323,7 +323,7 @@ MARKDR: PUSHJ PDP,DRPTR ;SET POINTER TO BLOCK IN DIR ;;SET POINTER TO CORRECT DIRECTORY ENTRY DRPTR: SUBI BLK,1 ;SET FOR ILDB OR IDPB IDIVI BLK,7 ;COMPUTE WORD, POSITION - ADD BLK,OLOC(DEVDAT) ;GET CORRECT ADDRESS + ADD BLK,DLOC(DEVDAT) ;GET CORRECT ADDRESS HRLI BLK,440500 ;MAKE IT A BYTE POINTER JUMPE DAT,CPOPJ ;CORRECT FOR POSITION IN WORD IBP BLK @@ -456,7 +456,7 @@ GETDT: PUSHJ PDP,GETDCDT ;GET DATA CONTROL. DECTAPE CONTROL JRST SETACT ;LIGHT IOACT AND RETURN ;HERE TO CLOSE A DUMP MODE FILE -CLSDMP: TLO IOS,DMPOCLS+IO+DMPMOD ;SET SWITCHES +CLSDMP: TLO IOS,CLSDMP ;SET SWITCHES PUSHJ PDP,GETDT ;GET CONTROL SETZM BUF ;ENSURE LINK, WORDCOUNT=0 JRST OUFULL ;GO WRITE THE BLOCK @@ -529,7 +529,7 @@ UOUT: TLO IOS,IO HRRZ BLK,OBLK(DEVDAT) CAIN BLK,DIRBLKK ;CHECK IF WRITING DIRECTORY JRST COR2HM ;YES, WRITE CORE IMAGE - JUMPE BLK,FAKAV ;DONT WRITE IF NO BLOCK GIVEN + JUMPE BLK,FAKADV ;DONT WRITE IF NO BLOCK GIVEN PUSHJ PDP,BLKCHK ;CHECK FOR LEGAL BLOCK UOUT2: TLNN IOS,DMPMOD ;ALREADY HAVE CONTROL IF DUMP-MODE @@ -594,7 +594,7 @@ DMPSET: TLO IOS,DMPMOD ;LIGHT BIT JRST DMPTS1 ;YES. RETURN IFN CPBIT, < TRNE IOS,UDSD ;NO. NON-STD MODE? - SOJA DAT,TDUSER ;YES. GO ELSEWHERE + SOJA DAT,TOUSER ;YES. GO ELSEWHERE > DMPST2: SOS UUO ;NO. SAVE START OF LIST (-1) MOVEM UUO,DMPLST(DEVDAT) @@ -605,7 +605,7 @@ DMPTS1: POP PDP,TAC IFN CPBIT, < ;HERE TO START DUMP-MODE INTO USER AREA DIRECTLY -TOUSRF: JUMPE AC2,NOBLK0 ;CANT READ BLK 0 IN NON-STD DUMP MODE +TOUSER: JUMPE AC2,NOBLK0 ;CANT READ BLK 0 IN NON-STD DUMP MODE ASH DAT,-7 ;NUMBER OF WRDS IN LIST /200 AOS DAT MOVEM DAT,BLKCNT ;SAVE TO UPDATE POSITION @@ -631,7 +631,7 @@ DMPFIL: MOVSI TAC1,-177 > DMPFLB: PUSHJ PDP,NXTCOM ;GET NEXT COMMAND JRST DMPOTH ;END OF LIST -DMPLFA: MOVE TEM,(TAC) ;GET NEXT WORD +DMPFLA: MOVE TEM,(TAC) ;GET NEXT WORD MOVEM TEM,BUF+1(TAC1) ;INTO BUFFER AOBJP TAC1,DMPOVR ;BUFFER FULL IF GOES AOBJN TAC,.-3 ;GET NEXT WORD FROM COMMAND @@ -670,7 +670,7 @@ NXTCOM: SKIPN DMPLST(DEVDAT) ;END OF COMMANDS? NXTCM1: HRRM TAC,DMPLST(DEVDAT) ;STORE GO-TO ADDRESS MOVE TAC,@TAC ;GET COMMAND JUMPE TAC,NXTCM2 ;END OF LIST - JUMPG TAX,NXTCM1 ;GO-TO WORD + JUMPG TAC,NXTCM1 ;GO-TO WORD ADDI TAC,(PROG) ;REAL COMMAND - ADD RELOCATION AOJA TAC,CPOPJ1 ;AND RETURN ;END OF DUMP-MODE LIST @@ -826,7 +826,7 @@ FND1: MOVEM TAC,DCLOC CONO DTC,360000(TAC) ;START DATA FLOW JRST SRCHXT ;AND LEAVE -IORVS: MOVEI TAC,10000 ;SET IO FOR REVERSE +IORVRS: MOVEI TAC,10000 ;SET IO FOR REVERSE ORM TAC,COMAND MOVEI TAC,177 ADDM TAC,PNTR ;READ FROM TOP OF BUFFER DOWN @@ -847,7 +847,7 @@ DTCIN1: CONO DC,0 ;NO. TURN OFF DATA CONTROL CONSZ DTS,1 ;JOB DONE LIT? CONSZ DTS,116 ;AND NO ERORS? JRST ERRS ;NO. ERROR - SKIPF ERRFLG ;DATA MISSED? + SKIPE ERRFLG ;DATA MISSED? JRST ERRS ;YES. TOO BAD ;DATA WAS READ IN OR WRITTEN OUT FINE @@ -881,7 +881,7 @@ DTCIN2: TLNE IOS,DMPMOD ;DUMP MODE? HRRM BLK,IBLK(DEVDAT) ;SAVE IN DDB TRNE IOS,IODTER+IODERR+IOIMPM ;WAS THERE AN INPUT ERROR? JRST THRUIN ;YES. DONT ADVANCE BUFFERS - PUSHJ PDP,ADVBUFF ;GET NEXT BUFFER + PUSHJ PDP,ADVBFF ;GET NEXT BUFFER JRST THRUIN ;EMPTY BUF NOT AVAILABLE SKIPE BLK ;EXIT IF EOF OR BLOCK TOO LARGE @@ -913,7 +913,7 @@ THRUTD: PUSHJ PDP,THRUTA ;GIVE UP DATA CONTROL SOSL DTREQ ;GIVE UP DECTAPE CONTROL SETOM DTAVAL CONO DC,0 ;SHUT OFF DATA CONTROL - CONO PI,DOFF ;AN TURN OF ITS PI CHANNEL + CONO PI,DCOFF ;AN TURN OF ITS PI CHANNEL CONO DTC,0 ;SHUT DOWN DATA CONTROL HLLZS DTCINT POPJ PDP, ;AND LEAVE @@ -932,6 +932,15 @@ OUTHRU: PUSHJ PDP,ADVBFE ;GET NEXT BUFFER JRST FILBUF ;NO. GO WRITE NEXT BLOCK JRST THRUTP ;YES. GIVE UP TAPE +;TURN TAPE AROUND AFTER END-ZONE INTERUPT +TURN: MOVEM TAC,TEMPA ;SAVE TAC + MOVE TAC,UNIT ;UNIT AND CHANNEL + CONSO DTC,10000 ;IN REVERSE? + TRO TAC,10000 ;NO. NO WILL BE + CONO DTC,322200(TAC);READ BLOCK NOS IN OPPOSITE DIRECTION + MOVE TAC,TEMPA ;RESTORE TAC + JEN @DTCCHL ;AND EXIT THE INTERRUPT + TIMINT: CONSO DTS,20 ;TIME FLAG INTERRUPT ON? JRST SPRIUS ;NO. THIS IS A SPURIOUS INTERRUPT EXCH TAC,TIMREQ ;ANOTHER TAPE CAN NOT BE @@ -970,9 +979,9 @@ SVDMTH: IFN CPBIT, < SUB TAC1,ONEONE ;SET UP TAC1 WITH COUNT > TLNN IOS,IO - JRST SVOMIN ;INPUT FILE + JRST SVDMIN ;INPUT FILE HRRZ BLK,OBLK(DEVDAT) ;OUTPUT FILE, NEXT BLOCK - JUMPF BLK,DMPTHA ;LAST BLOCK + JUMPE BLK,DMPTHA ;LAST BLOCK IFE CPBIT, < TRNE IOS,UDSD ;IF NON-STD MODE AOSA OBLK(DEVDAT) ;WRITE CONSECUTIVE BLOCKS @@ -1028,7 +1037,7 @@ DMIFLB: MOVE TEM,BUF+1(TAC1) ;NEXT DATA WORD JUMPE BLK,DMPEOF ;IF EOF - LIGHT BIT RDNXT: CAIG BLK,TOPBLK ;BLOCK LEGAL? JRST READBC ;GO READ BLOCK NUMBER - TROA IOS,IOBLKT ;LIGHT ERROR BIT + TROA IOS,IOBKTL ;LIGHT ERROR BIT ;EOF BEFORE ALL DATA IS IN - DUMP MODE DMPEOF: TRO IOS,IODEND ;LIGHT EOF BIT @@ -1070,11 +1079,10 @@ NOBLK0: TRO IOS,IOIMPM ;ILLEGAL OP JRST THRUTP ;NO. RETURN TO USER PUSHJ PDP,THRUTP ;YES. STOP TAPE MOVSI TAC,DVDIRIN ;CLEAR DIRECTORY IN CORE BIT - ANDCAM TAC,DEVMOND(DEVDAT) + ANDCAM TAC,DEVMOD(DEVDAT) BDDIR: LDB ITEM,PJOBN ;NUMBER OF OFFENDING JOB - JRST RADDIR ;GO PRINT ERROR MESSAGE - INTERN DTABUF -BFPNTR: IOWD 200,BUF+1 + JRST BADDIR ;GO PRINT ERROR MESSAGE + BFPNTR: IOWD 200,BUF+1 ONEONE: XWD 1,1 USEWRD: 0 USEPRG: 0 @@ -1093,8 +1101,9 @@ BLKCNT: 0 SVPNTR: 0 USPNTR: 0 ADRPRG: 0 -DIRCNT: 0 +DIRCTN: 0 > BUF: BLOCK 200 DTAEND: END + \ No newline at end of file diff --git a/src/eddt.mac b/src/eddt.mac index 068ab5b..f8973aa 100644 --- a/src/eddt.mac +++ b/src/eddt.mac @@ -21,6 +21,7 @@ BIT 35 =0: ASSEMBLE USER MODE DDT BIT 34 =0: DO NOT ASSEMBLE THE PAPER TAPE FEATURE INTO DDT =1: ASSEMBLE THE PAPER TAPE FEATURES BUT ONLY IF ASSEMBLING AN EXECUTIVE MODE DDT + BIT 33 =0; FOR USER MODE DDT ONLY- ASSEMBLE USING THE "TTCALL" UUO FOR TELETYPE IO =1; FOR USER MODE DDT ONLY- ASSEMBLE USING THE @@ -48,6 +49,15 @@ EXAMPLES OF "EDDT" DEFINTIONS: WITH PAPER TAPE FEATURES, AND WHOSE STARTING ADDRESS IS LOCATION 4000. + + + + + + + + + EXAMPLE OF A MACRO ASSEMBLY COMMAND: .^C @@ -74,7 +84,6 @@ BY DEFINING "EDDT": A DIFFERENT WAY WHERE THE EXAMPLE DEFINED "EDDT=0". > ;END OF REPEAT 0 - IFNDEF EDDT, @@ -109,16 +118,14 @@ JOBDDT=74 RELOC 0 > - IFN EDDT&,B53> HEADER \DDTVER^ ;THE HEADER MACRO CONSTRUCTS THE TITLE AND VERSION # - -IFN EDDT&10,< CM=2 ;DEFINE SOFTWARE CHANS. + IFN EDDT&10,< CM=2 ;DEFINE SOFTWARE CHANS. DP=3 > - ;DEFINE ACCUMULATORS +;DEFINE ACCUMULATORS F=0 ;FLAGS P=1 ;PUSH DOWN @@ -163,7 +170,7 @@ SAF=2000 ; > TYPED FPF=20000 ; . TYPED IN FEF=400000 ; E FLAG -MLF=200 ;*FLAG +MLF=200 ;*FLAG DVF=40000 ;DIVIDE FLAG ;PID IS 20 IF SYM TAB POINTER IS INDIRECT JOBSYM @@ -202,7 +209,7 @@ OPDEF DDTINT [Z 0,] ;ADDRESS FLAG FOR INTERNAL REGISTERS RADIX 10 NBP=8 ;NUMBER OF BREAKPOINTS -DEFINE DBPNT (Z.) +DEFINE DBPNT (Z.)> ZZ=0 REPEAT NBP,> RADIX 8 @@ -265,7 +272,7 @@ DDT: JSR SAVE MOVE W1,PRGM ; SAME PLACE. OR THEY DO NOT BOTH START ON XOR W1,W ; AN EVEN (OR BOTH ON ODD) LOCATION. OR TRNE W1,1 ; PRGM .GE.0, THEN RE-INIT PRGM. - JRST DDT2 ;EVEN-ODD PROBLEM + JRST DDT0 ;EVEN-ODD PROBLEM SKIPN T ;POINTERS DON'T END TOGETHER SKIPL PRGM ;IF PRGM .GE. 0, THEN RE-INIT DDT0: MOVEM W,PRGM ;PRGM=C(JOBSYM) @@ -420,7 +427,7 @@ L2: PUSHJ P,TIN ;PICK UP CHARACTER JRST .+2 JRST LET L21: MOVE R,T - CAILF T,137 ;DISPATCH TABLE HAS ENTRIES ONLY .LE. 137 + CAILE T,137 ;DISPATCH TABLE HAS ENTRIES ONLY .LE. 137 JRST ERR IDIVI R,3 ;REMAINDER GIVES COLUMN, QUOTIENT GIVES ROW LDB W,BDISP(R+1) ;GET 12 BIT ADDRESS FROM DISPATCH TABLE @@ -632,8 +639,9 @@ POW2: LSH W2,-1 MOVEI T,45 ;RADIX 50 PERIOD JRST LE2 -QUAN: SKIPA T,LWT ;LAST QUANTITY TYPED -PILOC: MOVEI T, SAVPI +PILOC: MOVEI T,SAVPI ;ADR SETUP FOR $I +QUANIN: TLOA T,(DDTINT) ;MARK FOR ADR INTERNAL TO DDT +QUAN: MOVE T, LWT ;PICK UP LAST QUANTITY TYPED QUAN1: MOVEM T,SYL QUAN2: TLO F,SF+QF ;WRD,SYL STARTED TLZ F,CF+CCF @@ -1763,9 +1771,7 @@ TEXT2: MOVEI T,0 ;7 BIT ASCII TEXT OUTPUT SUBROUTINE PUSHJ P,TOUT JUMPN W1,TEXT2 POPJ P, - KILC: XWD -NSYMS,LOW - -WRD: 0 + WRD: 0 WRD2: 0 PRNC: 0 @@ -2402,7 +2408,7 @@ REDEF % IFE Z-"/", IF2, Z==0> - IFE Z-"^", + IFE Z-"^", Z==0> IFE **,-1000, >> DEFINE .TRA < @@ -2570,7 +2576,7 @@ DEFINE .TXT (A) < IFNB , >> DEFINE .END (A) < -IFNB . > +IFNB , > OUTP 40> DEFINE OUTP (A)< @@ -2584,28 +2590,28 @@ CLOC==CLOC+1 > > TBL: ;OPDECODER BYTE TABLE -BINRY= 0 -CLOC= 0 ;SET BYTE LOCATION COUNTER TO 0 -BINC= ^D36 ;INIT BYTES/WORD COUNTER +BINRY== 0 +CLOC== 0 ;SET BYTE LOCATION COUNTER TO 0 +BINC== ^D36 ;INIT BYTES/WORD COUNTER BYT9 < -.DIS 63,.TRA UUO,.TRA FLO,.TRA HAK,.TRA ACCP,.TRA BOOLF +.DIS 63,.TRA UUO,.TRA FLO,.TRA HAK,.TRA ACCP,.TRA BOOLE .TXT H,.TRA HWT,.TXT T,.TRA ACBM ;IO INSTRUCTIONS -.DIS 21,.TRA BD,.TXT CON,.DIS 11,.TRA IO,.TXT S,.DIS 01,.TRA Z,. TRA O +.DIS 21,.TRA BD,.TXT CON,.DIS 11,.TRA OI,.TXT S,.DIS 01,.TRA Z,.TRA O .ADR BD,.DIS 01,.TXT BLK,.TRA IO,.TXT DATA,.ADR IO,.DIS 11,.TRA I,.TRA O .ADR OI,.DIS 01,.TRA O,.TRA I ;UUOS -.ADR UUOI,.DIS 51,.END,.TXT,.DIS 32,.TRA U40,.TRA U50,.TRA U60 - .DIS 21,.TRA U703,.DIS 11.,TRA USET,.DIS 01 +.ADR UUO,.DIS 51,.END,.TXT,.DIS 32,.TRA U40,.TRA U50,.TRA U60 + .DIS 21,.TRA U703,.DIS 11.,.TRA USET,.DIS 01 .TXT LOOKU,.TRA P,.TXT ENTE,.TRA R,.ADR USET,.TXT USET,.DIS 01,.TRA I,.TRA O .ADR U40,.DIS 03,.TRA CAL,.TXT INI,.TRA T,.END,.END,.END,.END,.END,.TXT CALL,.TRA I .ADR U60,.DIS 21,.TRA U603,.DIS 01,.TXT IN,.TRA BPUT,.TXT OUT - .ADR BPUT,M.,DIS 11,.TXT BU,.ADR F,.END F,.TXT,.TXT U,.TRA T + .ADR BPUT,.DIS 11,.TXT BU,.ADR F,.END F,.TXT,.TXT PU,.TRA T .ADR U603,.DIS 01,.TRA U6062,.TXT STAT,.DIS 11,.ADR O,.END O,.TXT,.ADR Z,.END Z,.TXT .ADR U6062,.DIS 11,.TXT S,.TRA U62,.TXT G,.ADR U62,.TXT ETST,.TRA S @@ -2615,7 +2621,7 @@ BYT9 < .TRA A,.TXT MP,.TRA A,.TXT DV,.ADR A .DIS 21,.TRA LMB,.TXT R,.TRA IMB,.ADR LMB,.DIS 02,.END,.TXT .ADR L,.END L,.TXT,.ADR M,.END M,.TXT -.ADR B,.FND B,.TXT,.ADR BYTE,.DIS 32,.END,.END,.END,.TXT +.ADR B,.END B,.TXT,.ADR BYTE,.DIS 32,.END,.END,.END,.TXT .DIS 03,.TXT UF,.TRA PA,.TXT DF,.TRA N .TXT FS,.TRA C,.TXT IB,.ADR P,.END P,.TXT,.TXT I,.TRA LD .ADR LD,.TXT LD,.TRA B,.TXT I,.TRA DP,.ADR DP,.TXT DP,.TRA B @@ -2626,17 +2632,17 @@ BYT9 < .TRA SH,.TRA H1,.TRA JP .DIS 21,.TXT ADD,.TRA IMB,.TXT SU,.ADR BIMB,.TXT B,.ADR IMB,.DIS 02,.END,.TXT .ADR I,.END I,.TXT,.TRA M,.TRA B,.ADR MO,.DIS 22 -,ADR E1MS,.TXT E,.TRA IMS,.TXT S,.TRA IMS,.TXT N,.TRA IMS,.TXT M +.ADR EIMS,.TXT E,.TRA IMS,.TXT S,.TRA IMS,.TXT N,.TRA IMS,.TXT M .ADR IMS,.DIS 02,.END,.TXT,.TRA I,.TRA M,.ADR S,.END S,.TXT .ADR ML,.DIS 21,.TXT I,.TRA ML1,.ADR ML1,.TXT MUL,.TRA IMB .ADR DV,.DIS 21,.TXT I,.TRA DV1 .ADR DV1,.TXT DI,.ADR DV2,.TXT V,.TRA IMB,.ADR H1,.DIS 03,.TXT EXC,.TRA S3,.TXT BL - .ADR T,.END T,.TXT,.TRA AO,.ADR AO,.TT AOBJ + .ADR T,.END T,.TXT,.TRA AO,.ADR AO,.TXT AOBJ .TRA AOB,.TXT JRS,.TRA T,.TXT JFC,.TRA L,.TXT XC,.TRA T,.END .ADR AOB,.DIS 01,.TRA P,.TRA N .ADR JP,.DIS 03,.TRA PU,.ADR PU,.TXT PUSH,.TRA PUS,.TRA PO .ADR PO,.TXT POP,.TRA POP,.TXT JS,.ADR R,.END R,.TXT -.TXT JS,.TRA P,.TXT JS,.ADR PA,.END, A,.TXT,.TXT JR,.TRA PA +.TXT JS,.TRA P,.TXT JS,.ADR PA,.END A,.TXT,.TXT JR,.TRA PA .ADR PUS,.DIS 01,.ADR J,.END J,.END,.TXT,.ADR POP .DIS 01,.END,.TXT,.TRA J,.ADR SH,.DIS 02,.TXT A,.TRA S2,.TXT ROT,.TRA S1,.TXT L .ADR S2,.TXT S,.ADR S3,.TXT H,.TRA S1,.TXT JFF,.TRA O @@ -2653,27 +2659,27 @@ BYT9 < ;HALF WORDS -.ADR HWT,.DIS 51,.TRA HW1,.DIS 21,.TXT 3,.TRA HW2,.TXT L,.ADR HW2,.TXT R,.TRA HW3 +.ADR HWT,.DIS 51,.TRA HW1,.DIS 21,.TXT R,.TRA HW2,.TXT L,.ADR HW2,.TXT R,.TRA HW3 .ADR HW1,.DIS 21,.TXT L,.TRA HW4,.TXT R,.ADR HW4,.TXT L - .ADR HW3,.DIS 32,.TRA IMS,.TXT Z,.TRA IMS,.TXT D,.TRA IMS,.TRA EIMS + .ADR HW3,.DIS 32,.TRA IMS,.TXT Z,.TRA IMS,.TXT O,.TRA IMS,.TRA EIMS ;TEST INSTRUCTIONS .ADR ACBM,.DIS 31,.TRA AC1,.DIS 01,.TXT D,.TRA AC2,.TXT S,.TRA AC2 .ADR AC1,.DIS 01,.TXT R,.TRA AC2,.TXT L -.ADR AC2,.DIS 42,.TXT N,.TRA EAN,.TXT Z,.TRA EAN,TXT C,.TRA EAN,.TXT O +.ADR AC2,.DIS 42,.TXT N,.TRA EAN,.TXT Z,.TRA EAN,.TXT C,.TRA EAN,.TXT O .ADR EAN,.DIS 12,.END,.TXT,.TRA E,.TRA PA,.TRA N ;BOOLEAN -.ADR BOOLE,.DIS 24,.TRA ST,.ADR AN,.TXT ANBD,.TRA B2,.TRA AN,.TRA ST,.TRA AN,.TRA ST +.ADR BOOLE,.DIS 24,.TRA ST,.ADR AN,.TXT AND,.TRA B2,.TRA AN,.TRA ST,.TRA AN,.TRA ST .TXT X,.ADR OR,.TXT OR,.TRA B2,.TXT I,.TRA OR,.TRA AN,.TXT EQ .TRA DV2,.TRA ST,.TRA OR,.TRA ST,.TRA OR,.TRA OR .ADR ST,.TXT SET,.ADR B2,.DIS 24,.TXT Z,.TRA IMB,.TRA IMB .ADR CA,.TXT C,.TRA TA,.ADR TM,.TXT M,.TRA IMB -.ADR DM,.TXT C,.TRA TM,.ADR TA,.TXT A,.TRA IMB,.TRA IMBA,.TRA IMB - .ADR CP,.TXT C,.TRA BIMB,.TRA IMB,.TRA CA -.TRA CA,.TRA CM,.TRA CM,.TRA CB,.TXT 0,.TRA IMB +.ADR CM,.TXT C,.TRA TM,.ADR TA,.TXT A,.TRA IMB,.TRA IMB,.TRA IMB + .ADR CB,.TXT C,.TRA BIMB,.TRA IMB,.TRA CA +.TRA CA,.TRA CM,.TRA CM,.TRA CB,.TXT O,.TRA IMB ;MORE UUO'S @@ -2687,7 +2693,7 @@ BYT9 < IF1,< BLOCK /4> -IF2,< IFN BINC-^D36,< +BINARY>> +IF2,< IFN BINC-^D36,< +BINRY>> IFNDEF CLOC., IFN CLOC.-CLOC, diff --git a/src/errcon.mac b/src/errcon.mac index 057ec28..84abe72 100644 --- a/src/errcon.mac +++ b/src/errcon.mac @@ -21,7 +21,8 @@ ERRCON: ; RETURN TO RESCHEDULE NEW USER INTERNAL APRILM -EXTERNAL USRREL,CONMES,HOLD,INLMES,JOBN,PJOBN,PRQM +EXTERNAL USRREL,APRPC +EXTERNAL APRERR,CONMES,HOLD,INLMES,JOBN,PJOB,PRQM EXTERNAL STOP1,TTYFUW,USRXIT,UUO0,WSCHED APRILM: SETZM APRERR ;CLEAR FLAG IMMEDIATELY,IN CASE OTHER ERRORS OCCUR @@ -55,7 +56,7 @@ APRPDL: TRNN TAC,POV ;PUSHDOWN OVERFLOW? JSP DAT,UERROR ;NO, MUST BE HARDWARE PROBLEM JSP TAC,ERRPTU ;YES ASCIZ /PDL OV/ -ASPSC: MOVE TAC1,APRPO ;PRINT APR PC +APRSCD: MOVE TAC1,APRPC ;PRINT APR PC JRST PCPNT ;AS: ; 1)"AT USER LOC XXX" OR ; 2)"AT EXEC LOC XXX; EXEC CALLED FROM @@ -151,7 +152,7 @@ IFN FTHALT,< HALT .+1 ;YES, HALT SO DUMP CAN BE TAKEN ; CONTINUE WILL PRINT MESSAGE > - SOSJ TAC1,PCPNT ;AND PRINT, PRINT USER UUO PC IF DIFF. + SOJA TAC1,PCPNT ;AND PRINT, PRINT USER UUO PC IF DIFF. ;ILLEGAL INSTRUCTION @@ -223,14 +224,14 @@ INTERNAL HNGSTP HNGSTP: PUSH PDP,ITEM PUSH PDP,IOS PUSH PDP,DEVDAT ;SAVE DEV'S IOS WORD & DDB - PUSHJ PDP,TTYFUN ;FIND JOB'S TTY & WAIT UNTIL I/O IS FINISHED + PUSHJ PDP,TTYFUW ;FIND JOB'S TTY & WAIT UNTIL I/O IS FINISHED PUSHJ PDP,PRQM ;PRINT QUESTION MARK FOR BATCH PUSHJ PDP,ERNAM ;PRINT "DEVICE XXX" PUSHJ PDP,INLMES ;AND MSG. ASCIZ /OK? ^C - -./ PUSHJ PDP,TTYSTC ;START UP TTY IN COMMAND MODE +./ + PUSHJ PDP,TTYSTC ;START UP TTY IN COMMAND MODE POP PDP,DEVDAT ;BRING BACK DEV DDB & IOS WORD POP PDP,IOS PUSHJ PDP,STOP1 ;STOP JOB & @@ -256,7 +257,7 @@ IFN FTTTYSER, ERRPTU: SKIPA ITEM,JOB ;BLAME CURRENT JOB IS NOT 0. ERRDEV: LDB ITEM,PJOBN ;JOB NO, FROM DEVICE DATA BLOCK -ERRPNT: SKIPM ITEM ;ERROR IN NULL JOB? +ERRPNT: SKIPN ITEM ;ERROR IN NULL JOB? SETOM NULERR ;YES, SET FLAG FOR ERROR IN NULL JOB ; SO STATE OF NULL JOB WILL BE REESTABLISHED ; WHEN IS IT RUN AGAIN(SEE CLOCK1) @@ -436,3 +437,4 @@ IFE FTTTYSER,< ERREND: END + \ No newline at end of file diff --git a/src/ft40db.mac b/src/ft40db.mac new file mode 100644 index 0000000..d724593 --- /dev/null +++ b/src/ft40db.mac @@ -0,0 +1,34 @@ +;THIS SUB-PROGRAM ASSEMBLED WITH CONFIGURATION DEPENDENT FEATURE SWITCHES - FT40DB.MAC(V003) + XLIST +; TH/RC TS3.19 24 SEP 68 V002 +;CONFIGURATION DEPENDENT FEATURE SWITCHES FOR CONDITIONAL ASSEMBLY +;-1 MEANS INCLUDE THE ASSOCIATED FEATURE, 0 MEANS ELIMINATE IT + +FTSWAP=0 ;SWAPPING SYSTEM + ;IF FTSWAP=-1, THEN FTDISK MUST BE -1 + +FTDISK=-1 ;DISK SYSTEM(MAY OR MAY NOT HAVE SWAPPING) + ;IF FTDISK=-1, THEN FTLOGIN MUST BE -1 + ;IF FTSWAP=-1, THEN FTDISK MUST BE -1 + +FTLOGIN=-1 ;LOGIN-LOGOUT COMMAND AND UUOS + ;FTDISK=-1 IMPLIES FTLOGIN=-1 + +FTCCL=-1 ;CONCISE COMMAND LANGUAGE COMMANDS + ;USED IN APRSER + ;SHOULD BE 0 IN NON-DISK SYSTEMS + ;SHOULD BE -1 IN DISK SYSTEMS, WHEN IMPLEMENTED + + +FTRC10=-1 ;NEW PDP-10 DISK(MODEL RC-10) INSTEAD OF DATA PRODUCTS DISK + +FTKCT=0 ;ACCUMULATE CORE*RUNNING TIME FOR CHARGING FOR EACH USER + +FTPRV=0 ;PRIVILEGE BITS FOR EACH USER + +FTGETTAB=0 ;GETTAB UUO - RETURN CONTENTS OF MONITOR JOBTABLES + +;LAST PAGE SHOULD BE WRITTEN WITH 'HP' TECO COMMAND SO FORM-FEED IS +;NOT APPENDED AFTER LIST CAUSING EXTRA BLANK PAGE IN MONITOR LISTING + + LIST diff --git a/src/ft40dd.mac b/src/ft40dd.mac new file mode 100644 index 0000000..d0e6f10 --- /dev/null +++ b/src/ft40dd.mac @@ -0,0 +1,33 @@ +;THIS SUB-PROGRAM ASSEMBLED WITH CONFIGURATION DEPENDENT FEATURE SWITCHES - FT40DD.MAC(V003) + XLIST +; TH/RC TS3.19 27 SEP 68 V002 +;CONFIGURATION DEPENDENT FEATURE SWITCHES FOR CONDITIONAL ASSEMBLY +;-1 MEANS INCLUDE THE ASSOCIATED FEATURE, 0 MEANS ELIMINATE IT + +FTSWAP=0 ;SWAPPING SYSTEM + ;IF FTSWAP=-1, THEN FTDISK MUST BE -1 + +FTDISK=-1 ;DISK SYSTEM(MAY OR MAY NOT HAVE SWAPPING) + ;IF FTDISK=-1, THEN FTLOGIN MUST BE -1 + ;IF FTSWAP=-1, THEN FTDISK MUST BE -1 + +FTLOGIN=-1 ;LOGIN-LOGOUT COMMAND AND UUOS + ;FTDISK=-1 IMPLIES FTLOGIN=-1 + +FTCCL=-1 ;CONCISE COMMAND LANGUAGE COMMANDS + ;USED IN APRSER + ;SHOULD BE 0 IN NON-DISK SYSTEMS + ;SHOULD BE -1 IN DISK SYSTEMS, WHEN IMPLEMENTED + +FTRC10=0 ;NEW PDP-10 DISK(MODEL RC-10) INSTEAD OF DATA PRODUCTS DISK + +FTKCT=0 ;ACCUMULATE CORE*RUNNING TIME FOR CHARGING FOR EACH USER + +FTPRV=0 ;PRIVILEGE BITS FOR EACH USER + +FTGETTAB=0 ;GETTAB UUO - RETURN CONTENTS OF MONITOR JOBTABLES + +;LAST PAGE SHOULD BE WRITTEN WITH 'HP' TECO COMMAND SO FORM-FEED IS +;NOT APPENDED AFTER LIST CAUSING EXTRA BLANK PAGE IN MONITOR LISTING + + LIST diff --git a/src/ft40n.mac b/src/ft40n.mac index bb6982b..1f5c9bf 100644 --- a/src/ft40n.mac +++ b/src/ft40n.mac @@ -1,4 +1,4 @@ -;THIS SUB-PROGRAM ASSEMBLED WITH CONFIGURATION DEPENDENT FEATURE SWITCHES - FT40N.MAC(V002) +;THIS SUB-PROGRAM ASSEMBLED WITH CONFIGURATION DEPENDENT FEATURE SWITCHES - FT40N.MAC(V003) XLIST ; TH/RC TS3.19 27 SEP 68 V002 ;CONFIGURATION DEPENDENT FEATURE SWITCHES FOR CONDITIONAL ASSEMBLY diff --git a/src/ft50sb.mac b/src/ft50sb.mac index 8e6aca4..12a1242 100644 --- a/src/ft50sb.mac +++ b/src/ft50sb.mac @@ -31,3 +31,4 @@ FTGETTAB=-1 ;GETTAB UUO - RETURN CONTENTS OF MONITOR JOBTABLES ;NOT APPENDED AFTER LIST CAUSING EXTRA BLANK PAGE IN MONITOR LISTING LIST + diff --git a/src/ft50sd.mac b/src/ft50sd.mac new file mode 100644 index 0000000..f036bfc --- /dev/null +++ b/src/ft50sd.mac @@ -0,0 +1,33 @@ +;THIS SUB-PROGRAM ASSEMBLED WITH CONFIGURATION DEPENDENT FEATURE SWITCHES - FT50SD.MAC(V003) + XLIST +; TH/RC TS3.19 27 SEP 68 V002 +;CONFIGURATION DEPENDENT FEATURE SWITCHES FOR CONDITIONAL ASSEMBLY +;-1 MEANS INCLUDE THE ASSOCIATED FEATURE, 0 MEANS ELIMINATE IT + +FTSWAP=-1 ;SWAPPING SYSTEM + ;IF FTSWAP=-1, THEN FTDISK MUST BE -1 + +FTDISK=-1 ;DISK SYSTEM(MAY OR MAY NOT HAVE SWAPPING) + ;IF FTDISK=-1, THEN FTLOGIN MUST BE -1 + ;IF FTSWAP=-1, THEN FTDISK MUST BE -1 + +FTLOGIN=-1 ;LOGIN-LOGOUT COMMAND AND UUOS + ;FTDISK=-1 IMPLIES FTLOGIN=-1 + +FTCCL=-1 ;CONCISE COMMAND LANGUAGE COMMANDS + ;USED IN APRSER + ;SHOULD BE 0 IN NON-DISK SYSTEMS + ;SHOULD BE -1 IN DISK SYSTEMS, WHEN IMPLEMENTED + +FTRC10=0 ;DATA PRODUCTS DISK + +FTKCT=-1 ;ACCUMULATE CORE*RUNNING TIME FOR CHARGING FOR EACH USER + +FTPRV=-1 ;PRIVILEGE BITS FOR EACH USER + +FTGETTAB=-1 ;GETTAB UUO - RETURN CONTENTS OF MONITOR JOBTABLES + +;LAST PAGE SHOULD BE WRITTEN WITH 'HP' TECO COMMAND SO FORM-FEED IS +;NOT APPENDED AFTER LIST CAUSING EXTRA BLANK PAGE IN MONITOR LISTING + + LIST diff --git a/src/jobdat.mac b/src/jobdat.mac index 2d8dc0e..f8835ec 100644 Binary files a/src/jobdat.mac and b/src/jobdat.mac differ diff --git a/src/k.mac b/src/k.mac index e64cbbf..eee56b7 100644 Binary files a/src/k.mac and b/src/k.mac differ diff --git a/src/lptser.mac b/src/lptser.mac index 05dade0..f5c3273 100644 --- a/src/lptser.mac +++ b/src/lptser.mac @@ -16,7 +16,7 @@ SUBTTL T. W. MCMANUS /TNM TS 20 MAY 69 ;THE FOLLOWING EXTERNAL SYMBOLS ARE DEFINED IN UUCON: - EXTERNAL ADVBFE, IDSET, OUT, SETACT, STOIOS + EXTERNAL ADVBFE, IOSET, OUT, SETACT, STOIOS ;THE FOLLOWING SYMBOLS ARE REFERENCED OUTSIDE OF LPTSER: @@ -168,7 +168,7 @@ LPTWCK: TLZE IOS,IOW ;IS JOB WAITING FOR I/O COMPLETION? LPTEX2: JRST STOIOS ;SAVE IOS, RESET HUNG DEVICE COUNT ; AND DISMISS INTERRUPT -LTPOFF: TLNN IOS,LPTEND ;SKIP IF CLOSE HAS BEEN DONE +LPTOFF: TLNN IOS,LPTEND ;SKIP IF CLOSE HAS BEEN DONE JRST LPTOF1 ; GO TURN PRINTER OFF UNTIL NEXT OUTPUT TLON IOS,LPTSYN ;HAS FINAL CRFF BEEN OUTPUT? JRST LPTBG2 ; NO, SO GO DO IT @@ -195,13 +195,13 @@ LPTER1: MOVEM TAC,LPTSV2(DEVDAT) ;SAVE TAC IN DDB XCT LPTDTO(DEVDAT) JRST LPTER4 -LPTER4: XCT LPTECH(DEVDAT) ;SKIP IF ERROR INTERRUPT NOT ASSIGNED +LPTER2: XCT LPTECH(DEVDAT) ;SKIP IF ERROR INTERRUPT NOT ASSIGNED JRST LPTER5 ; ERROR CONDITION DETECTED MOVE TAC,LPTCH(DEVDAT) ;GET INTERRUPT CHANNEL ASSIGNMENTS ANDI TAC,LPTDCM ;MASK OUT ERROR CHANNEL IORI TAC,LPTBSY ;SET THE BUSY FLAG XCT LPTCNO(DEVDAT) ;SEND IT OUT TO THE LPT - MOVEI TAC,LPTRLOV+LPTERR+LPTDON ;ENABLE FOR ALL INTERRUPTS + MOVEI TAC,LPTLOV+LPTERR+LPTDON ;ENABLE FOR ALL INTERRUPTS LPTER3: HRRM TAC,LPTCON(DEVDAT) ;SAVE SKIP CHAIN MASK FLAGS LPTER4: MOVE TAC,LPTSV2(DEVDAT) ;RESTORE SAVED ACCUMULATOR JRST LPTEX1(DEVDAT) ; AND GO DISMISS INTERRUPT @@ -227,4 +227,5 @@ LPTSET: MOVEI TAC,@DEVOAD(DEVDAT) ;GET ABS. ADDR. OF CURRENT BUFFER - \ No newline at end of file + + \ No newline at end of file diff --git a/src/macro.opr b/src/macro.opr new file mode 100644 index 0000000..f4006e9 Binary files /dev/null and b/src/macro.opr differ diff --git a/src/macro.v46 b/src/macro.v46 index 0ade69b..b6be933 100644 --- a/src/macro.v46 +++ b/src/macro.v46 @@ -7776,3 +7776,4 @@ IFN PURESW,>>> + CODES=CODES!<1B<^D35-^O'A>>>> MTAPES <0,1,11,7,17,3,6,13,16,10> ;DEFINE WHICH CODES ARE LEGAL @@ -78,7 +78,7 @@ DEFINE MTAPE (A) ;MARCO TO DEFINE LEGAL MTAPE UUO EFFECTIVE ADDRESSES. MTAPE: PUSHJ PDP,MTCHK2 ;CHECK IF MAG TAPE CONTROL AVAIL. MTAPE2: TDZ IOS,[XWD IODT!IOSEOF,IOACT] TRNN T,SLICE ;SET SLICE LEVEL THIS UUO? - JRST NOSFT ;NO + JRST NOSET ;NO TLZ IOS,IOSLIC ;YES, CLEAR LEVEL TRNE T,SLEVEL ;SET TO 1? TLO IOS,IOSLIC ;YES @@ -89,7 +89,7 @@ NOSET: JRST MTLEOT CAIE T,1400 ;WRITE EOF CAIN T,5400 ;OR WRITE BLANK TAPE? - JRST CHKLOC ;YES, CHECK WRITE-LOCK + JRST CHKLOK ;YES, CHECK WRITE-LOCK CONSO 224,4000 ;AT LOAD POINT? JRST MTGO0 ;NO CAIE T,3400 ;YES, BACKSPACE RECORD? @@ -114,7 +114,7 @@ MTGO1: LDB TAC1,PUNIT ;UNIT TRO TAC,100000 ;YES, SET COMMAND. HRRM DEVDAT,MTDEV ;COMMAND, DVDB HRLM TAC,MTDEV -MTGO3: MOVEI TAC1,MTPOUN +MTGO3: MOVEI TAC1,MTPDUN HRRM TAC1,MTIDSP SETZM MTEOFF ;CLEAR EOF FLAG TLNN IOS,IODT ;IS THIS A DATA TRANSFER OPERATION @@ -129,7 +129,7 @@ MTGO2: SETZM MISSED ;CLEAR DATA MISSED FLAG JRST STOIOS ;STORE HUNG COUNT, EXIT ;READ -MTIN: PUSHJ PDP,MTCHECK ;IS SYSTEM AVAILABLE?> +MTIN: PUSHJ PDP,MTCHEK ;IS SYSTEM AVAILABLE?> TLZ IOS,IO ;READING. MTIN1: SETCM TAC,@DEVIAD(DEVDAT) ;-SIZE-1 HRRI TAC,@DEVIAD(DEVDAT) ;BUFFER ADDRESS,PROG INCLUDED @@ -149,14 +149,14 @@ MTCHEK: PUSHJ PDP,GETDCMT ;GET DATA AND MAG TAPE CONTROLS MTCHK2: AOSE MTREQ PUSHJ PDP,MTWAIT MOVE IOS,DEVIOS(DEVDAT) - TLZ IOS,IO ;CLEAR IUO INDICATION SO "REWCK" WILL WORK + TLZ IOS,IO ;CLEAR IO INDICATION SO "REWCK" WILL WORK PUSHJ PDP,MTCHK4 ;CHECK STATUS JRST MTCHK2 ;GET MT AGAIN MTCHK4: TLO IOS,HASMT ;THIS JOB NOW HAS MTC TLZE IOS,IOBEG ;FIRST OPERATION AFTER INIT OR SETSTS - TLZ IOS,IUOSLIC ;YES, SET SLICE LEVEL TO 0. + TLZ IOS,IOSLIC ;YES, SET SLICE LEVEL TO 0. TLZ IOS,IOREW ;CLEAR MAG TAPE REWINDING PUSHJ PDP,REWCK ;CHECK IF REWINDING? JRST TPOPJ ;NO - STATUS OK @@ -197,7 +197,7 @@ MTHUNG: DETDC: TLZN IOS,IODT ;DOES JOB HAVE DATA CONTROL? JRST STOIOS ;NO- EXIT CONO DC,0 - CONO PD,DCOFF + CONO DC,DCOFF SOSL DCREQ ;ANYONE ELSE WAITING FOR IT? SETOM DCAVAL ;YES- FLAG AS JUST BECOME AVAILABLE JRST STOIOS ;AND EXIT @@ -254,7 +254,7 @@ MTINDC: MOVEM TAC,MTDCCN ;BLKO POINTER HRRI TAC1,DCWRD CONO PI,DCOFF ;TURN DC PI CHANNEL OFF MOVEM TAC1,DCLOC ;BLK COMMAND - MOVE TAC1,JSR MTDCND] + MOVE TAC1,[JSR MTDCND] MOVEM TAC1,DCLOC1 TRO IOS,IOACT ;SET IOACT MOVSI TAC, ERF ;ENABLE FOR EOR IF EOR FLAG NOT ON. @@ -282,7 +282,7 @@ MWLEOT: MOVEI T,3 ;WRITE EOF JRST MTAPE MTCINI: PUSHJ PDP,RELCON - SETOM MRTEWN ;SET CLOCK REQUEST COUNT TO -1 + SETOM MTREWN ;SET CLOCK REQUEST COUNT TO -1 JRST MTNIO1 @@ -299,7 +299,7 @@ MTCINT: CONSO 224,@MTCCON JRST . JSR MTCSAV ;SAVE AC'S HRRZ DEVDAT,MTDEV ;DVDB - LDB PROG,PJOBM; JOB NUMBER + LDB PROG,PJOBN; JOB NUMBER MOVE PROG,JBTADR(PROG) MOVE IOS, DEVIOS(DEVDAT) CONSO 224,TCF ;TAPE CONTROL FREE @@ -314,11 +314,11 @@ MTPDUN: TLNN IOS,IODT JRST DMPDUN ;DUMP TLNE IOS,IO JRST MTNOTI ;WRITING - SKIPF MTEOFF ;NOT EOF? + SKIPE MTEOFF ;NOT EOF? JRST MTEOF MOVEI TAC,@DEVIAD(DEVDAT) ;BUFFER ADDRESS MOVN TAC1,MTDCCN ;WD CNT-1 - AOBJ TAC1, .+1 ;WD CNT + AOBJN TAC1, .+1 ;WD CNT HLLZS TAC1 ;CLR RT HALF ADD TAC1,DCWRD ;ADD CURRENT COUNT=NO, OF WDS HLRM TAC1,1(TAC) ;STORE AT WORD COUNT @@ -335,20 +335,20 @@ MTEOF: TLO IOS,IOEND SETZM MTEOFF ;CLEAR EOF FLAG ;AND FALL INTO MTEND1 - MTEND1: PUSHJ PDP,DETDO ;DETACH DC (IF ASSIGNED) + MTEND1: PUSHJ PDP,DETDC ;DETACH DC (IF ASSIGNED) PUSHJ PDP,ETCHK ;CHECK FOR END OF TAPE (FOR DUMP MODE OUT) PUSHJ PDP,CLRACT CONSO 224,TCF ;TAPE CONTROL FREE? - JRST MTION ;NO. WAIT FOR IT. + JRST MTIGN ;NO. WAIT FOR IT. MTFIN: MTNIO: TLZE IOS,IOW ;CLEAR WAIT PUSHJ PDP,SETIOD - PUSHJ PDP,DETMOC ;DETACH MTC (IF HASMT SET) AND DC (IF IODT) + PUSHJ PDP,DETMDC ;DETACH MTC (IF HASMT SET) AND DC (IF IODT) PUSHJ PDP,ETCHK ;CHECK FOR END OF TAPE PUSHJ PDP,CLRACT ;RESTORE BITS,CLEAR IOACT ;AND FALL INTO MTNIO1 - MTIO1: MOVN TAC,MTREDO ;REPEAT COUNTER + MTNIO1: MOVN TAC,MTREDO ;REPEAT COUNTER HRREM TAC,MTERCN SKIPGE MTREWN ;IS ANY OTHER UNIT REWINDING AND ;A SECOND COMMAND HELD UP? @@ -380,7 +380,7 @@ REW1: AOS MTREWN ;INCREMENT COUNT OF REW WAIT UNITS REW2: HLRZ DEVDAT,DEVSER(DEVDAT) ;DEVDAT TO NEXT DDB JUMPE DEVDAT,REW3 ;LAST ONE? HRLZ DAT,DEVNAM(DEVDAT) ;NO,GET LH OF NAME - CAIN DAT,(SIZBIT /MTA/) ;STILL A MAGTAPE? + CAIN DAT,(SIXBIT /MTA/) ;STILL A MAGTAPE? JRST REWLP ;YES, CONTINUE REW3: POP PDP,DEVDAT POPJ PDP, ;YES, DISMISS INTERRUPT OF RETURN TO MTC OK @@ -441,7 +441,7 @@ MTNIO2: HLRZ TAC,MTDEV ;COMMAND JRST MTIGN1 ;NO. WAIT FOR IT. CONSZ DC,1000 ;DATA MISSED SETOM MISSED ;YES - CONSO DC,1600000 ;ANY CHARS. LEFT? + CONSO DC,160000 ;ANY CHARS. LEFT? JRST MTEOR1 ;NO MOVE T,DCWRD ;GET IOWD TLNN IOS,IO ;O/P @@ -479,7 +479,7 @@ MTEOR2: SOS MTIDSP ;POINT TO ERROR ROUTINE CONSZ MTS1,400000 ;ILLEGAL OP? TRO T,1000 ;YES, COUNT IN QUARTER 3 CONSO MTS1,100 - SKIPF MISSFD ;DATA MISSED? + SKIPE MISSED ;DATA MISSED? TRO T,1 ;YES, COUNT IN QUARTER 4 ADDM T,MTECNT(DEVDAT);ADD TO ERROR COUNTS FOR THIS DRIVE JRST MTECON ;CHECK EOF @@ -507,7 +507,7 @@ MTERR2: CONSO 224,400100 ;SET IODERR IF ILLEG OR MISSED CHAR FLAGS JRST MTPDUN MTBSP: MOVE TAC,MTDCCN ;POINTER - MOVEM TAC,DOWRD ;RESET POINTER WORD + MOVEM TAC,DCWRD ;RESET POINTER WORD HLRZ TAC,MTDEV ;COMMAND CONSO 224,XNC ;WAIT FOR XNC JRST .-1 ;SHOULD ADD A COUNT(RUNAWAY TAPE TURNED OFF) @@ -531,7 +531,7 @@ MTDC=2 ;MAG TAPE DATA CONTROL DEVICE NO. TCF=1 ;TAPE CONTROL FREE ERF=4 ;END OF RECORD FLAG LPE=20 ;LONG. PARITY ERROR -CRE=10 ;CHAR. PARITY ERROR +CPE=10 ;CHAR. PARITY ERROR SEL=2 ;UNIT TO COMMAND BUFFER IOSEOF=4000 ;SPACING ONE RECORD FORWARD FOUND EOF IOTEND=2000 ;EOT INDICATION @@ -579,7 +579,7 @@ MTIDSP: JRST MTPDUN > ;LOGICAL EBND OF TAPE LOOP MTLEOT: MOVEI T,7 ;BACKSPACE - PUSHJ PDP,MTAPC2 + PUSHJ PDP,MTAPE2 PUSHJ PDP,MTCHK2 ;CALL INTERLOCK, PICKUP IOS ;AFTER PREVIOS TASK FINISHED. MTEOT2: MOVEI T,16 ;SAVE ONE FILE @@ -602,12 +602,12 @@ MTDPO1: PUSHJ PDP,MTCHEK ;IS SYSTEM AVAILABLE PUSHJ PDP,SAVCHK MOVE TAC1, @MTOUT2 ;BLKO AND DATA CONTROL COMMAND MOVEI T,1000 ;WRITING COMMAND -MTDMP1: HTLI TAC, PROG ;ACTUAL ADDRESS OF COMMAND LIST - MOVEM TAC, MTDUMP ;COMMAND POINTER +MTDMP1: HRLI TAC, PROG ;ACTUAL ADDRESS OF COMMAND LIST + MOVEM TAC, MTCMDP ;COMMAND POINTER SKIPN TAC,@TAC ;COMMAND WORD JRST MTEND1 JUMPG TAC, MTDMP1 ;CHANGE COMMAND SEQUENCE - HLREM TAC, SVCNT ;SAVE COUNTER + HLREM TAC, SVCNTR ;SAVE COUNTER HRRZS TAC ;GET ADDRESS ALONE CAMGE TAC,AC1 JRST MTDMP2 @@ -640,7 +640,7 @@ SAVCHK: MOVEI AC1,JOBPFI MTDMPI: PUSH PDP,UUO MTDPI1: TRNE IOS,IODEND JRST TPOPJ - PUSHJ PDP,MTCHECK + PUSHJ PDP,MTCHEK TLZ IOS,IO ;READING PUSHJ PDP,SAVCHK MOVE TAC1,@MTIN2 ;BLKI AND DATA CONTROL COMMAND @@ -652,3 +652,4 @@ MTDMP2: PUSHJ PDP,MTEND1 END + \ No newline at end of file diff --git a/src/nulseg.mac b/src/nulseg.mac index adbdfa3..f9f30f7 100644 Binary files a/src/nulseg.mac and b/src/nulseg.mac differ diff --git a/src/onceb.mac b/src/onceb.mac index 9fa9d75..0ad5215 100644 --- a/src/onceb.mac +++ b/src/onceb.mac @@ -24,9 +24,12 @@ INTERNAL FTRC10 ;THIS SINGLE SOURCE FILE MAY BE ASSEMBLED FOR EITHER ; 2. USUAL SHROT ONCE ONLY CODE(ONCE) - CTY FOR DATE AND TIME ; 3. OPTIONAL ONCE ONLY CODE - CTY DIALOG TO CHANGE MONITOR ; OR REFRESH DISK(ALT-MODE INSTEAD OF CR AFTER TIME) + + ;INITIALIZE PRIORITY CHANNELS AND SETUP INTERRUPT SERVICE ROUTINE CHAIN + T=TAC ;DEFINE ACCUMULATOR T ;LINK TO SERVICE ROUTINES @@ -40,10 +43,8 @@ LINKSR: 0 ;CALLED WITH JSR FROM SYSINI IFN FT2REL,< JSP TSTREG ;GO TEST IF TWO RELOC REGISTERS EXIST > - ;HIGHEST LOC. IN JOB AREA PROTECTED FROM IO - -;MOVE SYMBOL TABLE UP IN MEMORY + ;MOVE SYMBOL TABLE UP IN MEMORY ;EXEC MUST BE LOADED IN 15K OR LESS IF GOING INTO 16K MACHINE ;FIRST FIND THE FIRST LOCATION OF NON-EXISTENT MEMORY @@ -77,8 +78,7 @@ IFN FT2REL,< STO1: MOVEM TAC1,.(TAC) SUB TAC,[XWD 1,1] JUMPGE TAC,.-3 - - EXTERN DEVLST,INTNUM,INTTAB + EXTERN DEVLST,INTNUM,INTTAB ;SETUP LOCATIONS 40 THRU 61 JRSTI1: MOVE TAC,[XWD LOC40,40] ;SET UP LOWER CORE PI LOCATIONS @@ -114,7 +114,7 @@ IFN FTDISK,< EXTERN NULPDL,DSKINI MOVEI PDP,NULPDL - PUSHJ PDP,DSKINT ;INITIALIZE THE DISK + PUSHJ PDP,DSKINI ;INITIALIZE THE DISK ; AFTER SETTING UP CHANNEL LOC ; BUT BEFORE OVERWRITTING ONCE WITH DDB'S > @@ -126,9 +126,8 @@ IFN FTDISK,< ;MULTIPLE DEVICE DATA BLOCKS ARE CREATED ;AS SPECIFIED BY SYSSIZ AND MAY ERASE PART ;OF ONCE ONLY CODE -JRST1: JRST @LINKSR ;YES,RETURN - -EXTERN UUO0,ERROR,UUO2,LINKDR,DEVLST +JRSTI: JRST @LINKSR ;YES,RETURN + EXTERN UUO0,ERROR,UUO2,LINKDB,DEVLST EXTERN CH1,CH2,CH3,CH4,CH5,CH6,CH7 LOC40: 0 ;UUO PC @@ -151,8 +150,7 @@ UUOTRP: JSR UUO0 ;TO UUO HANDLER 0 ;LOC 60/61 TRAPPED TO FOR UNIMPLEMENTED OP CODES ON PDP-10 ;OP CODE 100 IS USED TO DISMISS USER MODE INTERRUPTS(SEE TRPSET UUO) JSR UUO2 ;GO SEE IF OP CODE 100 OR SOME OTHER ONE - -IFN FT2REL,< + IFN FT2REL,< ;SET LOC TWOREG TO -1 IF MACHINE HAS TWO RELOC REG,0 IF ONLY ONE RELOC REG EXTERN TWOREG,SEGN,SEGPTR,AND2RG,JOBN @@ -191,8 +189,7 @@ TSTAPR: 0 ;PLACE TO SIDE JSR PC CONO PI,10000 ;CLEAR PI SYSTEM JRST @TSTREG > - -;ROUTINE TO FIND THE EXEC DDT SYMBOL TABLE POINTER AND MOVE IT TO THE PLACE + ;ROUTINE TO FIND THE EXEC DDT SYMBOL TABLE POINTER AND MOVE IT TO THE PLACE ;WHERE EXEC DDT EXPECTS IT(DDTSYM=36) ;THE MONITOR CAN BE LOADED IN ANY OF 3 WAYS(IN ORDER OF PERFERNCE): ; 1. UNDER TIME SHARING WITH REGULAR LOADER AND COMMON @@ -205,11 +202,11 @@ TSTAPR: 0 ;PLACE TO SIDE JSR PC ; 2. JUNK JUNK(NON-NEG) S.T.PTR ; 3. S.T.PTR S.T.PTR JUNK -;CALL: JSP MOVSTP +;CALL: JSP MOVSTR ; RETURN WITH AC UUO SET TO SYMBOL TABLE POINTER ;CALLED FROM MANDATORY ONCE ONLY CODE AND 141 START CODE(WHICHEVER OCCURS FIRST) - INTERN MOVTP + INTERN MOVSTR EXTERN T30SYM,JOBSYM,DDTSYM,DDTX,SYSDDT MOVSTR: 0 ;JSR HERE FROM MANDATORY ONCE ONLY CODE AND @@ -238,9 +235,11 @@ SETUUO: MOVE UUO,DDTSYM ;RETURN THE CORRECT(MAYBEUPDATED IF INTERN PATSYM EXTERN DDTX -PATSYM: JSR MOVSTP ;MOVE DDT SYMBOL TABLE POINTER SO EXEC DDT WILL +PATSYM: JSR MOVSTR ;MOVE DDT SYMBOL TABLE POINTER SO EXEC DDT WILL ; FIND IT AND PATCH 141 TO GO DIRECTLY TO EXEC DDT JRST DDTX ;AND GO DIRECTLY TO EXEC DDT + +;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE IFN FTRC10, < ENTRY RCXWNZ ;THIS SYMBOL IS SOLELY TO PERMIT THE SYSTEM @@ -289,12 +288,10 @@ PATSIZ: MOVEI TAC,PATCH ;SET SIZE OF SYSTEM TO BEGINING OF PATCH MOVEI TAC,TSEXEC PUSHJ PDP,CONMES PUSHJ PDP,OPOUT - - -;ASK FOR TODAY'S DATE AND CONVERT + ;ASK FOR TODAY'S DATE AND CONVERT ;DATE STORED AS ((Y-64)*12.+M-1)*31.+D-1 -EXTERNAL THSDAT,JUFMIN,SKIPS +EXTERNAL THSDAT,JIFMIN,SKIPS PUSHJ PDP,DATLOP JRST .-1 @@ -333,18 +330,16 @@ DATLOP: SETZM THSDAT SUBI TAC1,^D64 ;YEAR ZERO IMULI TAC1,^D12*^D31 ADDM TAC1,THSDAT - - -;GET TIME OF DAY + ;GET TIME OF DAY EXTERNAL TIME - POP PDP,TC + POP PDP,TAC PUSHJ PDP,TIMLOP JRST .-1 TIMLOP: SETZM TIME MOVEI TAC,TIMEM - PUSHJ PDP,IOCONM + PUSHJ PDP,ICONM PUSHJ PDP,OPOUT PUSHJ PDP,GETLIN JRST TIMLOP ;JUST A CR @@ -353,7 +348,7 @@ TIMLOP: SETZM TIME JRST TIMLOP ;NO ARGUMENT JRST TIMLOP ;ILLEGAL CHARACTER MOVE TAC,TAC1 - IDIVI TYAC,^D100 ;TAC=HRS.TAC1=MINS + IDIVI TAC,^D100 ;TAC=HRS.TAC1=MINS SKIPL TAC ;HRS NEGATIVE? CAILE TAC,^D23 ;OR .G. 23? @@ -368,12 +363,10 @@ TIMLOP: SETZM TIME JUMPGE ITEM,QUICK ;SKIP NEXT PART OF DIALOGUE UNLESS THE LAST ITEM ; TYPED IN (NAMELY TIME OF DAT) WAS TERMINATED BY ; AN "ALT MODE". (ACCUMULATOR "ITEM" IS SET UP - ; IUN THE "GETLIN" SUBROUTINE CALLED ABOVE.) - + ; IN THE "GETLIN" SUBROUTINE CALLED ABOVE.) + ;PRINT IO CONFIGURATION -;PRINT IO CONFIGURATION - -EXTERNAL DEVLST,TCONLN,INLMES,PRENAME,INTTB1,INTTAB +EXTERNAL DEVLST,TCONLN,INLMES,PRNAME,INTTB1,INTTAB EXTERNAL OCTPNT IFN FT2REL,< @@ -390,10 +383,10 @@ IFN FT2REL,< PUSHJ PDP,OPOUT > MOVEI TAC,IOCONF - PUSHJ PDP,IOCNM + PUSHJ PDP,ICONM HLRZ AC1,DEVLST JUMPN AC1,ALRLNK ;DEVICE DATA BLOCK ALREADY LINKED? - MOVESI PROG,INTNUM ;NO, NOT LOADED BY BULD,-NO. OF DEVICES*2 + MOVSI PROG,INTNUM ;NO, NOT LOADED BY BULD,-NO. OF DEVICES*2 CONFLP: SKIPN AC1,INTTB1(PROG) ;INT LOC HAVE DEV DATA BLOCK? JRST NODDB ;NO, GO GET NEXT DEVICE DATA BLOCK LDB UUO,[POINT 8,INTTAB(PROG),8] ;YES. NO. OF DEV DATA BLKS @@ -401,7 +394,7 @@ CONFLP: SKIPN AC1,INTTB1(PROG) ;INT LOC HAVE DEV DATA BLOCK? PUSHJ PDP,RADX10 ;IN DECIMAL PUSHJ PDP,INLMES ;PRINT 1 SPACE ASCIZ / / - HLLZ TAC1,DEVNAME(AC) ;DEVICE NAME + HLLZ TAC1,DEVNAM(AC1) ;DEVICE NAME PUSHJ PDP,PRNAME ;PRINT IT SOJLE UUO,SINGLE ;IS THIS JUST A SIGNLE DEVICE? PUSHJ PDP,INLMES ;NO, APPEND 'S TO DEVICE NAME @@ -442,7 +435,7 @@ ONCE7A: PUSHJ PDP,OPOUT ASCIZ / (OCTAL) TTY SCANNER LINES / PUSHJ PDP,OPOUT - + ;ASK FOR OPERATORS CONSOLE TO BE SPECIFIED EXTERNAL INLMES,DEVOPR,CTEXT,DEVPHY @@ -457,10 +450,10 @@ ONCEOP: MOVEI TAC,OPRM CAMN TAC,[SIXBIT /CTY/] ;CTY? JRST .+3 ;YES. JUST STORE IT. PUSHJ PDP,DEVPHY - JRST ONCEP ;PHYSICAL NAME NOT FOUND + JRST ONCEOP ;PHYSICAL NAME NOT FOUND MOVEM TAC,DEVOPR ;SET FOR SYSTEM ;DEVICE "OPR" WILL BE SAME AS THIS - + ;ASK IF SYSMAK IS WANTED EXTERN MAKEND,SYSSIZ @@ -488,8 +481,7 @@ EXTERNAL CNTDB ONCE3: PUSHJ PDP,SYSSIZ ;SAVE CURRENT VALUE JSP TAC,CNTDB ;UPDATE SYSSIZ BY SPACE USED ; FOR DEVICE DATA BLOCKS FOR DSK,DTA,MTA,TTY,PTY) - -;PRINT OCTAL SIZE OF MONITOR + ;PRINT OCTAL SIZE OF MONITOR MOVEI TAC,EXECIS PUSHJ PDP,ICONM @@ -538,10 +530,8 @@ IFN FTCHECK,< > JRST @ONCE ;***EXIT FROM THE "ONCE-ONLY CODE"*** - - -IFN FTNDISK,< -EXTERNAL OCTIN,MFDBLK,SATXWD,NUMPLK,SYSPP,REFLAG + IFN FTDISK,< +EXTERNAL OCTIN,MFDBLK,SATXWD,NUMBLK,SYSPP,REFLAG ;REFRESH DIALOGUE @@ -565,7 +555,7 @@ REF2: ;YES IFN FTTTYSER, PUSHJ PDP,OCTIN JRST REF2 - JRET REF2 + JRST REF2 IFE FTRC10, < PUSH PDP,TAC1 ;IS IT A MULTIPLE OF NUMBLK? MOVEI TAC,(TAC1) @@ -576,7 +566,7 @@ IFE FTRC10, < HRRZM TAC1,MFDBLK AOS TAC1 HRRM TAC1,SATXWD -REF3: + REF3: INTERNAL FTSWAP IFN FTSWAP,> + + PUSHJ PDP,REFRES ;REFRESH. JRST REF5 ;ERROR @@ -611,7 +603,7 @@ REF3A: PUSHJ PDP,OPOUT POPJ PDP, -IFE FTRC10, < + IFE FTRC10, < REF4: POP PDP,TAC1 MOVEI TAC,REF5M PUSHJ PDP,ICONM @@ -622,20 +614,21 @@ REF4: POP PDP,TAC1 REF5: PUSH PDP,TAC ;ERROR. ON COMMING HERE, TAC HAS LOGICAL BLOCK ; NUMBER WHICH COULD NOT BE WRITTEN MOVEI TAC,REF7M - PUSHJ PDP,IOCONM + PUSHJ PDP,ICONM POP PDP,TAC PUSHJ PDP,OCTPNT PUSHJ PDP,CRLF PUSHJ PDP,OPOUT JRST REF6 ;GO BACK TO TRY AGAIN., + REF1M: ASCIZ /DO YOU WANT TO REFRESH THE DISK ? (Y OR CR) / REF2M: ASCIZ /ARE YOU SURE(Y OR CR)? / REF3M: ASCIZ /DO YOU WANT TO CHANGE THE LOCATION OF THE MFD(Y OR CR)? / -REF4M: ASCIZ /TYPE THE LOGICAL DISK ADDRESS OF THE MFT RETREIVAL INFORMATION + REF4M: ASCIZ /TYPE THE LOGICAL DISK ADDRESS OF THE MFT RETREIVAL INFORMATION / IFE FTRC10, < REF5M: ASCIZ /MUST BE A MULTIPLE OF NUMBLK. @@ -651,8 +644,7 @@ REF9M: ASCIZ /HOW MANY (DECIMAL) 1K DISK BLOCKS ARE TO BE ALLOCATED FOR SWAPPING / > > ;THIS CLOSES AN FTDISK CONDITIONAL SERVAL PAGES BACK. - -;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE + ;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE ;CALL: PUSHJ PDP,GETLIN ; JUST A CR TYPED IN ; A LINE TYPED IN,TAC SEYT AS BYTE POINTER @@ -662,7 +654,7 @@ LINE=TAC1 ;TTY LINE NO. (ALSO SAME AS SCNSER) IFN FTTTYSER, -EXTNERAL CPOPJ +EXTERNAL CPOPJ1 GETLIN: IFE FTTTYSER, IFN FTTTYSER,< PUSHJ PDP,SETBFI> @@ -712,8 +704,7 @@ DELET1: MOVEI CHREC,15 GETLN1: SETOM ITEM ;MECHANISM USED TO BY-PASS PART OF DIALOGUE MOVEI CHREC,15 ;WHEN ALTMODEIS TYPED. JRST GET2 - -;ROUTINE TO TYPE A LINE ON OPERATOR CONSOLE + ;ROUTINE TO TYPE A LINE ON OPERATOR CONSOLE ;ECHO CHECK STOPS LINE AND RETURNS ;CALL: DAT SET TO END OF MESSAGE @@ -722,12 +713,12 @@ IFN FTTTYSER, OPOUT: IFE FTTTYSER, IFN FTTTYSER, CONO TTY,1000 ;CLEAR INPUT -OPOUT1: IFE FTTYSER,< +OPOUT1: IFE FTTTYSER,< CAMN TAC,DAT POPJ PDP,> CONSZ TTY,40 JRST OPOUT2 ;ECHO CHECK - MEXTC + NEXTC IFN FTTTYSER,< JUMPE CHREC,CPOPJ> PUSHJ PDP,TYO JRST OPOUT1 @@ -737,7 +728,7 @@ OPOUT2: MOVEI CHREC,15 MOVEI CHREC,12 PUSHJ PDP,TYO CONO TTY,1000 ;CLEAR INPUT - + ;WAIT TILL OUTPUT BUSY OFF BEFORE TYPING OUT CHAR. EXTERNAL TCONLN,TYPL @@ -773,9 +764,8 @@ APRCHK: CONSO APR,1000 ;IS CLOCK FLAG ON? CONO APR,1000 ;YES, CLEAR CLOCK FLAG AOS TIME ;INCREMENT TIME POPJ PDP, - -ICONM: PUSH PDP,TAC - SETTTYO ;INITIALIZE LINE BUFFER + ICONM: PUSH PDP,TAC + SETTYO ;INITIALIZE LINE BUFFER POP PDP,TAC JRST CONMES ;OUTPUT MESSAGE @@ -784,7 +774,7 @@ OTSET: MOVEI DEVDAT,SCNDDB MOVSI TEM,120 ;TTYCHR HRRI TEM,TIBF(DEVDAT) MOVEM TEM,TTIBUF(DEVDAT) ;INIT INPUT POINTER - HRRI TEM,TDBF(DEVDAT) ;AND OUTPUT POINTER + HRRI TEM,TOBF(DEVDAT) ;AND OUTPUT POINTER MOVEM TEM,TTOBUF(DEVDAT) JRST TSETBF ;NOW CLEAR THE BUFFERS > @@ -798,7 +788,7 @@ YESNO: PUSHJ PDP,ICONM ;FIRST OUTPUT THE QUESTION CAIN CHREC,"Y" ;WAS IT A Y? AOS 0(PDP) ;YES, SKIP POPJ PDP, ;NO. MAYBE IT WAS "N", SO DONT SKIP - + ;CONSTANTS AND PUSH DOWN LIST ONCEPN=20 @@ -824,7 +814,7 @@ IO CONFIGURATION OPRM: ASCIZ / TYPE NAME OF OPR CONSOLE. / -SYSM: ASCIZ / + SYSM: ASCIZ / DO YOU WANT SYSMAK (TYPE Y IF YES, CR IF NO)? / SYSDM: ASCIZ / @@ -839,9 +829,7 @@ DESMES: ASCIZ /TYPE DESIRED MAX,(DEC), CR IF OK AS IS / CRLFMS: ASCIZ / / - - -;INITIALIZE SAT SEARCH ENTRIES + ;INITIALIZE SAT SEARCH ENTRIES ;THIS "DFWUNS" ROUTINE IS CALLED BY MANDATORY ONCE ONLY CODE(LINKSR) ; AFTER ALL MULTIPLE DEVICE DATA BLOCKS HAVE BEEN GENERATED IN CORE @@ -850,7 +838,7 @@ CRLFMS: ASCIZ / ; PERFORMED, DFWUNS IS CALLED AFTER REFRES SINCE SYSINI CALLS LINKSR AFTER ONCE. INTERNAL FTDISK -IFN FTDISK, +IFN FTDISK,< INTERNAL DFWUNS EXTERNAL SAT05,JSAT06,SATENT,SATPTR,SATBK2,SATXWD,SATPTR @@ -865,7 +853,7 @@ IFN FTRC10, < PUSHJ PDP,CAPCTY ;DETERMINE CURRENT SYSTEM CAPACITY (HOW MANY DISKS). CAMN TAC,LBHIGH ;HAS CAPACITY CHANGED SINCE LAST REFRESH ? JRST DFWNZ1 ;NO, EVERYTHING APPPEARS TO BE OKAY. - SETTTYO ;YES, PRINT WARNING MESSAGE... + SETTYO ;YES, PRINT WARNING MESSAGE... PUSHJ PDP,INLMES ASCIZ /DISK CAPACITY HAS CHANGED SINCE LAST REFRESHING. EITHER RESTORE PREVIOUS DISK CONFIGURATION OR REFRESH. @@ -875,7 +863,7 @@ EITHER RESTORE PREVIOUS DISK CONFIGURATION OR REFRESH. JRST DFWUNS ;NOW TRY AGAIN. DFWNZ1: > - MOVEI TAC,SETENT + MOVEI TAC,SATENT MOVEM TAC,SATPTR MOVEI PROG,0 MOVEI DEVDAT,DSKDDB @@ -897,9 +885,9 @@ SETS2: PUSH PDP,TAC MOVE TAC,SATBK2 MOVEM TAC,2(DAT) MOVSI TAC1,400000 - MOVEM TAC1,1(DSAT) + MOVEM TAC1,1(DAT) MOVEI DAT,0 -SETS3: MOVE AC1,(TAC) ;COUNT ONE-BITS + SETS3: MOVE AC1,(TAC) ;COUNT ONE-BITS AOJN AC1,SETS3A ;IS THE WORD = -1? ADDI DAT,44 ;YES JRST SETS5 @@ -917,7 +905,7 @@ IFE FTRC10, < ;BITS HAVE BEEN COUNTED, CHECK FOR WRITE-LOCK CAIL DAT,NUMBIT ;BLOCK FULL? JRST SETS8 - PUSHJ PDP,DEGETF ;NO. GET A FREE BLOCK + PUSHJ PDP,DFGETF ;NO. GET A FREE BLOCK PUSHJ PDP,SETS7 ;WRITE PUSHJ PDP,SETFRE ;FREE THE BLOCK @@ -940,6 +928,8 @@ SETS5X: CAIL TAC,SATTOP HRRM TAC1,(TAC) ; TABLE TO SHOW ALL NON-EXISTENT DISKS AS JRST SETS5X ; BOTH WRITE-LOCKED AND FULL. > + SETS6: POP PDP,TAC ;ERROR, TRY AGAIN + JRST SETS2 IFE FTRC10, < @@ -973,8 +963,7 @@ SETS9: BLOCK 204 > ;CLOSE THE IFE FTRC10 > ;CLOSES AN IFN FTDISK A COUPLE PAGES BACK. - -IFN FTDISK,< + IFN FTDISK,< ;DISK REFRESHING ROUTINES --- @@ -988,12 +977,11 @@ REFRESH: MOVEI PROG,0 ;SETUP IO MOVEI DEVDAT,DSKDDB PUSH PDP,SETSAT MOVE TAC,RPOPJ - MOVEM TAC,SETSET + MOVEM TAC,SETSAT PUSHJ PDP,DSKINI POP PDP,SETSAT MOVEI TAC,DSKCHN LSH TAC,1 - ADDI TAC,40 MOVE TAC1,[JSR DSKCHL] MOVEM TAC1,(TAC) @@ -1120,7 +1108,7 @@ REFER1: POP PDP,TAC1 REFER: POP PDP,WSYNC RPOPJ: POPJ PDP, -DEFINE ZEROS (A), LIST> @@ -1131,7 +1119,7 @@ DEFINE ONES (A),,,45,1,0,4,20 ;MFD RETREIVAL INFO SATBL1: XWD 777776,0 ;THIS SAT BLOCK CONTAINSS - ZERSO 5400/44-1 ;ALLOCATION FOR MFD AND SAT BLOCKS + ZEROES 5400/44-1 ;ALLOCATION FOR MFD AND SAT BLOCKS XWD 001777,-1 ONES 200+SATBL1-. @@ -1150,25 +1138,24 @@ MFD1: XWD 1,1 ;MFD XWD 654644,0 SIXBIT /*SAT*/ XWD 637163,17 ;RELOCATED - ZEROS 174 + ZEROES 174 -NULBLK: ZEROS 5400/44-1 ;NULL SAT BLOCK +NULBLK: ZEROES 5400/44-1 ;NULL SAT BLOCK XWD 001777,-1 ONES 200+NULBLK-. > ;END OF THE REFRESHER FOR THE OLD PDP-6 DISK. - - + IFN FTRC10, < ;DISK REFRESHER FOR THE NEW PDP-10 MODEL RC-10 (BURROUGHS) DISK-- EXTERNAL CPOPJ1,THSDAT,TIME EXTERNAL MFDBLK,SATXWD,NUMSAT,NUMBLK,SATTOP,SENTSZ - EXTERNAL DISKUP,DFREF,DFWRT,DSKFDG,CHKSUM,RCXCCW,RCXFIN + EXTERNAL DISKUP,DFRED,DFWRT,DSKFDG,CHKSUM,RCXCCW,RCXFIN EXTERNAL K4SWAP IFN FTSWAP,< - EXTNERAL MAXSWP,MXK2SWP,BLKSPK + EXTERNAL MAXSWP,MXK2SWP,BLKSPK > EXTERNAL LBHIGH INTERNAL STATBK @@ -1196,7 +1183,7 @@ DTOP=1B18 ;SET INDICATES DATA TRANSFER IN PROGRESS. SRCHE=1B19 ;SEARCH ERROR (DISK TIMING TRACK PROBLEMS!!) DDE=1B20 ;DISK DESIGNATION ERROR TSE=1B21 ;TRACK SELECT ERROR (OR EXCEEDS SYSTEM CAPACITY) - MRDY=1B22 ;DISK NOT READY (OR NON-EXISTENT DISK REFERENCED) + NRDY=1B22 ;DISK NOT READY (OR NON-EXISTENT DISK REFERENCED) PSF=1B23 ;POWER SUPPLY FAILURE DPAR=1B24 ;DISK PARITY ERROR CHDPAR=1B25 ;CHANNEL DATA PARITY ERROR @@ -1206,17 +1193,15 @@ DTOP=1B18 ;SET INDICATES DATA TRANSFER IN PROGRESS. OVR=1B29 ;OVERRUN, I.E., MEMORY DIDN'T RESPOND QUICKLY ENOUGH ;BIT 30 CHANNEL CONTROL WORD WRITTEN IN MEMORY (THIS BIT IS ;TURNED ON ON ALMOST ALL TERMINATIONS.) -BUSYRT=1B31 ;BUSY (SYNCHRONIZER PERFORMING A COMMAND SEQUENCE) +BUSYBT=1B31 ;BUSY (SYNCHRONIZER PERFORMING A COMMAND SEQUENCE) DONEFLG=1B32 ;DONE -- THIS ACTUALLY CAUSES THE INTERRUPT. ;BITS 33 - 35 PI CHANNEL SELECTION BITS. ;COMBINATIONS OF ERRO BITS GROUPED BY TYPE -- DATERR=DPAR!CHDPAR ;DATA ERRORS. DEVERR=SRCHE!PSF!CHCPAR!OVR ;DEVICE ERRORS. -SETERR=DDE!TSE!NRDY!NXMEM ;SOFTWARE-PREVENTABLE ERRORS. - - -;CONO FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER +SETERR=DDE!TSE!NRDY!WRPE!NXMEM ;SOFTWARE-PREVENTABLE ERRORS. + ;CONO FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER ;BITS 00 - 17 UNUSED ;BITS 18 - 19 SELECT DISK FOR SECTOR COUNTER READ-OUT A(SEE DATAI BITS 28-35) @@ -1248,7 +1233,7 @@ WRBIT=1B16 ;SET MEANS WRITE ON DISK, RESET MEANS READ FROM DISK ;BITS 27 - 34 ;CORRESPONDING BITS OF INITIAL CHANNEL CONTROL ADDRESS, HENCE, ; THIS ADDRESS MUST BE EVEN AND IN THE FIRST 1K OF CORE MEMORY! ;BIT 35 ;WRITE EVEN PARITY DATA INTO MEMORY (DIAGNOSTICS ONLY!) - + REFRESH: PUSHJ PDP,DISKUP ;BE SURE THE DISK IS UP AND READY. @@ -1284,8 +1269,9 @@ RFRSHE: MOVEI TAC,RFSHME POP PDP,TAC ; DIALOGUE TO AK THE PARAMETER SPECIFICATION JRST REF6 ; QUESTIONS AGAIN. -RFSHME: ACSIZ /PARAMETER SPECIFICATION ERROR. TRY AGAIN. +RFSHME: ASCIZ /PARAMETER SPECIFICATION ERROR. TRY AGAIN. / + RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. JRST REFERR ; AN ERROR ON THIS WRITE IS BAD TROUBLE !! @@ -1296,7 +1282,7 @@ RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. MOVE TAC,[XWD 1,1] ;THE FIRST ENTRY IN THE MFD IS FOR MOVEM TAC,WNZBUF ; THE MFD ITSELF. MOVE TAC,[SIXBIT/UFD/] - HRR TC,MFDBLK ;POINTER TO MFD RETRIEVAL INFORMATION + HRR TAC,MFDBLK ;POINTER TO MFD RETRIEVAL INFORMATION MOVEM TAC,WNZBUF+1 MOVE TAC,[SIXBIT/*SAT*/] ;THE ONLY OTHER ENTRY INITIALLY IN THE MOVEM TAC,WNZBUF+2 ; MFD IS FOR THE FILE NAMED *SAT*.SYS WHICH @@ -1304,7 +1290,7 @@ RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. HRRZ TAC,MFDBLK ; ANYONE WHO WANTS TO LOOK AT THEM. SUBI TAC,-1(TAC1) ;COMPUTE POINTER TO THE RETRIEVAL INFORMATION HLL TAC,[SIXBIT/SYS/] ; FOR THE *SAT*.SYS FILE. - MOVEM TAC,WNZBYUF+3 + MOVEM TAC,WNZBUF+3 HRRZS TAC ADDI TAC,1 ;COMPUTE LOGICAL BLOCK NUMBER OF THE MFD. PUSHJ PDP,WNZWR ;WRITE THE MFD OUT ONTO THE DISK. @@ -1315,6 +1301,7 @@ RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. PUSHJ PDP,CHKSUM HRRZM TAC1,CHKSAV ;SAVE CHECKSUM TO GO INTO RETRIEVAL INFORMATION. + ;NEXT WRITE MFD RETRIEVAL INFORMATION BLOCK ONTO THE DISK PUSHJ PDP,WNZCLR ;CLEAR OUTPUT BUFFER @@ -1324,7 +1311,7 @@ RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. HLL TAC,[SIXBIT /UFD/] MOVEM TAC,WNZBUF+1 ;FILE EXTENSION, DATE HRLZI TAC,045000 ;PROTECTION (ANY PROJECT 1 USER MAY WRITE IN MFD) - PUSHJ PDP,MDTMDT ;FILL IN TIME, DATE, AND MODE + PUSHJ PDP,MDTMOT ;FILL IN TIME, DATE, AND MODE MOVEM TAC,WNZBUF+2 MOVE TAC,[XWD -200,1] ;NEGATIVE WORD COUNT AND PROGRAMMER NUMBER MOVEM TAC,WNZBUF+3 ;GO INTO WORD 4 OF RETRIEVAL INFO @@ -1337,7 +1324,7 @@ RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. MOVEM TAC,WNZBUF+177 ; MUST CONTAIN ITS OWN BLOCK NUMBER. PUSHJ PDP,WNZWR ;WRITE MFD RETRIEVAL INFOMRATION ONTO THE DISK JRST REFERR ;ERROR - + ;NEXT CREATE THE NECESSARY SAT BLOCKS ON THE DISK PUSH PDP,SATXWD ;SATXWD CONTROLS THE OUTER LOOP @@ -1357,7 +1344,7 @@ IFN FTSWAP,< MOVEI TAC,0 PUSHJ PDP,SETWNZ JRST REFST7 ;HAVING SET ALL BITS, NO FURTHER TESTING IS NEEDED, -> + REFST2: MOVN TAC,TAC1 ADDI TAC1,NUMBLK SUB TAC1,LOWSWP ;IS ANY OF SWAPPING AREA WITHIN THIS SAT BLOCK? @@ -1376,7 +1363,7 @@ RFST3A: HRRZI TAC,STATBK SUB TAC,TAC1 MOVEI TAC1,1 ;YES, MARK IT UNAVAILABLE, PUSHJ PDP,SETWNZ - + REFST4: MOVE TAC,SATXWD ;SET UP TO LOOP THRU LOGICAL BLOCK NUMBERS FOR MFD. SUB TAC,[XWD 3,1] ; MFD RETRVL INFO. SAT BLOCKS, AND SAT RETRVL INFO. @@ -1412,7 +1399,7 @@ REFST7: MOVE TAC,[XWD -200,WNZBUF] MOVE TAC,SATPTR ; BACK TO DO NEXT SAT BLOCK. ADDI TAC,SENTSZ JRST REFST1 - + ;FINALLY, WRITE OUT THE RETRIEVAL INFORMATION FOR THE FILE *SAT*.SYS REFSRF: PUSHJ PDP,WNZCLR ;CLEAR THE BUFFER @@ -1422,13 +1409,14 @@ REFSRF: PUSHJ PDP,WNZCLR ;CLEAR THE BUFFER HLL TAC,[SIXBIT /SYS/] MOVEM TAC,WNZBUF+1 ;STORE EXTENSION AND DATE HRLZI TAC,555000 ;PROTECTION CODE (UNTOUCHABLE FILE ! ) - PUSHJ PDP.MDTMDT ;FILL IN TIME, DATE AND MODE + PUSHJ PDP,MDTMOT ;FILL IN TIME, DATE AND MOTE MOVEM TAC,WNZBUF+2 HLLZ TAC,SATXWD ;COMPUTE NEGATIVE WORD COUNT LSH TAC,7 HRRI TAC,1 ;PROGRAMMER NUMBER=1 MOVEM TAC,WNZBUF+3 + MOVEI TAC,SATENT ;PREPARE TO STORE POINTERS TO ALL THE SAT BLOCKS. MOVE TAC1,SATXWD MOVEI AC2,0 @@ -1451,12 +1439,13 @@ REFSRL: HRRZ AC1,TAC1 ;GET LOGICAL BLOCK NUMBER OF SAT BLOCK. PUSHJ PDP,WNZWR ;WRITE THE *SAT*.SYS RETRVL INFO ONTO THE DISK. JRST REFERR ;ERROR - JRST CPOPJ1 ;***EXIT FROM PDP-10 DISK REFRESHER.***......... + JRST CPOPJ1 ;***EXIT FROM PDP-10 DISK REFRESHER.***......... + ;ROUTINE TO WRITE THE FIXED BLOCK OF VITAL STATISTICS ONTO THE DISK. -WRSTAT: PUSHJ PDPWNZCLR ;CLEAR THE OUTPUT BUFFER +WRSTAT: PUSHJ PDP,WNZCLR ;CLEAR THE OUTPUT BUFFER MOVE TAC,[XWD -WRSTSZ,0] WRSTA1: MOVE TAC1,@WRSTA9(TAC) ;STORE KEY QUANTITIES IN THE OUTPUT BUFFER MOVEM TAC1,WNZBUF(TAC) @@ -1479,6 +1468,7 @@ WRSTA2: MOVEI TAC,WRSTM1 WRSTM1: ASCIZ /CANNOT WRITE VITAL STATISTICS BLOCK ON DISK. HELP!! / + ;TABLE OF POINTERS TO THE VITAL STATISTICS THAT ARE STORED IN "STATBK" ON THE DISK. WRSTA9: XWD ,MFDBLK ;LOGICAL BLOCK NUMBER OF MFD RETRIEVAL INFORMATION @@ -1496,7 +1486,7 @@ IFE FTSWAP,< ; NON-SWAPPING SYSTEM > WRSTSZ=.-WRSTA9 - + ;ROUTINE TO READ IN THE FIXED BLOCK OF "VITAL STATISTICS" FROM ; THE DISK AND DISTRUBUTE THEM TO THE APPROPRIATE CORE LOCATIONS. @@ -1508,13 +1498,14 @@ RDSTAT: MOVEI TAC,STATBK JRST RDSTA2 ;ERROR, STATISTICS BLOCK APPARENTLY WAS CLOBBERED. MOVE TAC,[XWD -WRSTSZ,0] ;STORE AWAY THESE IMPORTANT PARAMETERS -RDSTA1; MOVE TAC1,WNZBUF(TAC) ; UNDER CONTROL OF A TABLE IN THE "WRSTAT" +RDSTA1: MOVE TAC1,WNZBUF(TAC) ; UNDER CONTROL OF A TABLE IN THE "WRSTAT" MOVEM TAC1,@WRSTA9(TAC) ; ROUTINE WHICH WRITES OUT THE VITAL AOBJN TAC,RDSTA1 ; STATISTICS BLOCK ONTO THE DISK. POPJ PDP, ;***SUBROUTINE EXIT***........ -RDSTA2: MOVEI TAC,RDTM1 + +RDSTA2: MOVEI TAC,RDSTM1 ;PRINT ERROR MESSAGE IF THE VITAL PUSHJ PDP,ICONM ; STATISTICS BLOCK CANNOT BE READ PUSHJ PDP,OPOUT @@ -1523,7 +1514,7 @@ RDSTA2: MOVEI TAC,RDTM1 RDSTM1: ASCIZ /VITAL DISK STATISTICS LOST, SUGGEST REFRESHING! / - + ;ROUTINE TO DETERMINE THE CURRENT SYSTEM'S DISK CAPACITY. I.E., THE NUMBER OF ; DISKS ATTACHED TO THE RC-10 DISK SYNCHRONIZER TODAY. @@ -1537,7 +1528,7 @@ CAPCTY: MOVEI TAC,NUMSAT ; CHECK IN "DSKINT" WILL NOT FAIL SPURIOUSLY. MOVEI TAC,3 -CPCT1; PUSH PDP,TAC +CPCT1: PUSH PDP,TAC PUSHJ PDP,WNZRD ;ATTEMPT TO READ FIRST BLOK OF EACH SUCCESSIVE DISK., JRST CPCT3 ;ERROR POP PDP,TAC @@ -1549,6 +1540,7 @@ CPCT2: SUBI TAC,1 POP PDP,LBHIGH ;RESTORE PREVIOUSLY EXISTING VALUE OF THE HIGHEST ; LEGAL LOGICAL DISK BLOCK NUMBER. POPJ PDP, ;***SUBROUTINE EXIT***....... +i CPCT3: POP PDP,TAC CONSZ DSK,NRDY ;NON-EXISTENT DISK? @@ -1556,14 +1548,13 @@ CPCT3: POP PDP,TAC ; HOWEVER, DISK 0 MUST ALWAYS BE PRESENT. MOVEI TAC,CPCTM1 ;NO, SOME OTHER TYPE OF READ ERROR. - PUSHJ PDP,IOCONM + PUSHJ PDP,ICONM PUSHJ PDP,OPOUT ;PRINT ERROR MESSAGE POP PDP,LBHIGH JRST CAPCTY ;TRY AGAIN -CPCTM1: ACSIZ /DISK READ ERROR DURING CAPACITY SEARCH INITIALIZATION +CPCTM1: ASCIZ /DISK READ ERROR DURING CAPACITY SEARCH INITIALIZATION / - - + ;ROUTINE TO ASSURE THAT THE STATUS OF THE WRITE-LOCK SWITCHES ON THE ; DISK MAINTENANCE PANEL IS SUCH THAT THEY ARE PROTECTING "LESS THAN 0000". @@ -1571,7 +1562,7 @@ CPCTM1: ACSIZ /DISK READ ERROR DURING CAPACITY SEARCH INITIALIZATION WRITLK: CONI DSK,TAC TLNN TAC,13777 ;BOUNDARY ZERO AND MAINTENANCE-SEGMENT OFF ? - TLNN TAC,B53 ;YES, IS ROTARY SWITCH SET + TLNN TAC,B53 ;YES, IS ROTARY SWITCH SET ; TO EITHER X UNDER OR OVER(AS OPPOSED ; TO UNDER OR X OVER) JRST WRLK8 ;NO. GO PRINT ERROR MESSAGE AND LOOP. @@ -1589,6 +1580,7 @@ WRITLK: CONI DSK,TAC JRST WRLK2 ;ERROR POPJ PDP, ;***GOOD EXIT FROM WRITLK SUBROUTINE***......... + WRLK2: MOVEI TAC,WRLKM1 CONSZ DSK,WRPE ;WRITE-PROTECTION ERROR ? ;YES, PROTECT SWITCH ERRONEOUSLY SET ON "LESS THAN @@ -1605,7 +1597,7 @@ WRLKM2: ASCIZ /"MAINTENANCE SEGMENT" SWITCH MUST BE OFF. AND DIS WRITE PROTECTION SWITCHES MUST BE SET TO 0000 AND "LESS THAN", FIX THEM ! ! / - + ;DISK READING ROUTINE FOR USE ONLY DURING ONCE-ONLY CODE. ; AVOIDS USING THE MONITOR OUFUFS AND INTERRUPT STRUCTURE. @@ -1628,33 +1620,38 @@ WNZRDC: POP PDP,DSKFDG ;RESTORE THE MOLESTED INSTRUCTION IN DSKINT. CONSZ DSK,DATERR!DEVERR!SETERR ;ANY ERRORS ? JRST WNZRDX ;YES, GIVE ERROR RETURN. MOVE TAC1,RCXCCW ;NO, BUT CHECK THAT THE FINAL VALUE OF THE - CAMN TAC1,RCXFIX ; CHANNEL CONTROL WORD WAS AS EXCPECTED ALSO. + CAMN TAC1,RCXFIN ; CHANNEL CONTROL WORD WAS AS EXCPECTED ALSO. AOS (PDP) ;***GOOD RETURN***........ WNZRDX: POPJ PDP, ;ERROR RETURN, + + + + + ;DISK WRITING ROUTINE FOR USE ONLY DURING ONCE-ONLY CODE. ; AVOIDS USING THE MONITOR QUEUES AND INTERRUPT STRUCTURE. ;ON ENTRY TO THIS SUBROUTINE, TAC CONTAINS THE LOGICAL BLOCK NUMBER OF THE DISK ; BLOCK WHICH IS TO BE WRITTEN ONTO THE DISK FROM THE ONCE-ONLY DISK BUFFER AREA. -WNZWR: CONO DSK,DATERR!DEVERR!SETERR!RESCIG ;CLEAR THE DISK SYNCHRONIZER. +WNZWR: CONO DSK,DATERR!DEVERR!SETERR!RESETB ;CLEAR THE DISK SYNCHRONIZER. CONSZ DSK,BUSYBT!DONEFLG JRST WNZWR ;DON'T PROCEED UNLESS THAE CLEAR WORKED. MOVEM TAC,LBSAVE ;SAVE LOGICAL BLOCK NUMBER IN CASE AN ERROR RETURN ; MUST BE TAKEN FROM THE "REFRESH" SUBROUTINE. - PUSH POP,DSKFDG ;SAVE THIS ISNTRUCTION FROM "DSKINT". + PUSH PDP,DSKFDG ;SAVE THIS ISNTRUCTION FROM "DSKINT". MOVE TAC1,[HRRZI TAC,0] ;NOW TAMPER WITH THAT SAVED LOCATION SO MOVEM TAC1,DSKFDG ; THAT DSKINT WILL NOT ENABLE ANY INTERRUPT CHANNEL. - MOVE TAC1,[XWD -200,WNZPUT-1] + MOVE TAC1,[XWD -200,WNZBUF-1] PUSHJ PDP,DFWRT ;CALL DEVICE-DEPENDENT ROUTINE IN "DSKINT" DIRECTLY. JRST WNZRDC ;THE REMAINDER OF THE WRITE ROUTINE IS IDENTICAL ; TO THE READ ROUTINE -;SUBROUTINE TO WATCH FOR THE DONE FLAG TO COME ON AND TIME OUT IF + ;SUBROUTINE TO WATCH FOR THE DONE FLAG TO COME ON AND TIME OUT IF ; IT DOESN'T COME UP SOON ENOUGH (SAY 5 SEC OR SO). WNZWAT: MOVE TAC,[^D1000000] ;AT MOST ONE MILLION TIMES THRU THE CONSZ-SOJG LOOP @@ -1670,6 +1667,7 @@ WNZWTL: CONSZ DSK,DONEFLG ;DONE FLAG ON YET ? WATMSG: ASCIZ /DISK HUNG. / + ;SUBROUTINE TO SET SPECIFIED BITS IN A SAT BLOCK WHILE FORMING IT IN WNZBUF ;ENTRY CONDITIONS -- C(TAC) = FIRST BIT NUMBER TO SET (NUMBERED BEGINNING AT 0) @@ -1687,16 +1685,17 @@ STWNZ1: ORM AC2,WNZBUF(TAC) STWNZ2: SOJN AC1,STWNZ1 POPJ PDP, ;SUBROUTINE EXIT........... + ;SUBROUTINE TO CLEAR THE ONCE-ONLY OUTPUT BUFFER, WNZBUF WNZCLR: SETZM WNZBUF MOVE TAC,[XWD WNZBUF,WNZBUF+1] BLT TAC,WNZBUF+177 POPJ PDP, ;SUBROUTINE EXIT........... - + ;SUBROUTINE TO MASK THE TIME, DATE, AND DATA MODE (=14 FOR BINARY MODE0 INTO ACCUMU- ; LATOR TAC IN THE FORMAT USED IN WORD 3 OF A DISK RETRIEVAL INFORMATION BLOCK. -MDTMDT: PUSH PDP,TAC +MDTMOT: PUSH PDP,TAC MOVE TAC,TIME ;GET TIME IN JIFFIES. IDIVI TAC,JIFMIN ;CONVERT TO MINUTES LSH TAC,^D12 @@ -1729,8 +1728,7 @@ LOWSWP: 0 ;LOWEST LOGICAL BLOCK FOR SWAPPING > ;END OF REFRESH PROCEDURE FOR THE RD10 DISK. > ;CLOSE AN EVEN EARLIER FTDISK CONDITIONAL. - -INTERNAL FTCHECK + INTERNAL FTCHECK IFN FTCHEC,< EXTERNAL CHKREG,CHKEND,CHECK,MONPTR,MONSUM @@ -1746,4 +1744,3 @@ CK: MOVEI TAC,CHKBEG > ONCEND: END - diff --git a/src/pltser.mac b/src/pltser.mac index 8af014f..f7b68b1 100644 --- a/src/pltser.mac +++ b/src/pltser.mac @@ -21,7 +21,7 @@ PLTADR: XWD PROG,0 PLTCTR: 0 ;OUTPUT BYTE COUNTER EXTERNAL OUT,SETACT,PLTCHN,PLTCHL,IOSET,ADVBFE,ADRERR,CPOPJ1 -EXTERNAL SETIOD,STOIOS,CLRACT,IULLINP,PLTSAV,IADRCK +EXTERNAL SETIOD,STOIOS,CLRACT,ILLINP,PLTSAV,IADRCK INTERN PLTDDB,PLTINT,PLTDSP ;DISPATCH TABLE @@ -79,14 +79,14 @@ PLT1: JSR PLTSAV ;SAVE AC'S. SET UP PUSH DOWN POINTER PUSHJ PDP,PLTSET ;SETUP BYTE POINTER AND COUNTER JRST PLTOFF ;ADDRESS ERROR RET FROM PLTSET PLT2: TLZE IOS,IOW - PUSHJ PDP,SETIUOD ;LET JOB START AGAIN + PUSHJ PDP,SETIOD ;LET JOB START AGAIN JRST STOIOS ;EVENTUALLY DISMISS INTERRUPT. IF ADVBFE ;FOUND MORE DATA (IT SKIPPED), ANOTHER ;INTERRUPT WILL IMMEDIATELY OCCUR BUT ;IT WILL BE HANDLED WITHOUT GOING TO PLT1 PLTOFF: CONO PLT,0 ;SHUT DOWN PLOTTER - HLLSZ PLTINT ;REMOVE PLOTTER FROM CHAIN + HLLZS PLTINT ;REMOVE PLOTTER FROM CHAIN PUSHJ PDP,CLRACT TLZE IOS,PLTUP ;HAS THE "CLOSE" BEEN DONE? DATAO PLT,[40] ;YES, LIFT PEN diff --git a/src/ptpser.mac b/src/ptpser.mac index 9eca6b3..8a26d74 100644 Binary files a/src/ptpser.mac and b/src/ptpser.mac differ diff --git a/src/ptrser.mac b/src/ptrser.mac index fd8b81e..0e26375 100644 Binary files a/src/ptrser.mac and b/src/ptrser.mac differ diff --git a/src/ptysrf.mac b/src/ptysrf.mac index 176ef20..22deebc 100644 Binary files a/src/ptysrf.mac and b/src/ptysrf.mac differ diff --git a/src/ptysrh.mac b/src/ptysrh.mac index 1e2b1e5..a98f4a9 100644 --- a/src/ptysrh.mac +++ b/src/ptysrh.mac @@ -52,10 +52,10 @@ PTYDDB: SIXBIT /PTY0/ Z XP PTYCSV,.-ZZ Z - XP PTYDDS,.-ZZ + XP PTYSAC,.-ZZ BLOCK 13 XP PTYBND,PTYSAC+12 - XP PTYDM1,PTYBND-1 + XP PTYBM1,PTYBND-1 XP PTYDDS,.-ZZ ;SIZE OF PTY DDB PTYSA2: BLT SCNHAC,0 @@ -106,9 +106,8 @@ PTYREL: LDB LINE,[POINT 6,DEVCHR(DDB),23] ;SET IN THE OF IOS) -EXTERNAL TCONLN,TTYTIBTPYTAB,PTYTAB,SETIOD -EXTERNAL ADVBFF,RUNIT,RECIN3,PUTCHI -EXTERNAL TTIBUF,SPCHEK,DDBSRC,LINTAB,CNCTST,TIFCTR,INBFUL +EXTERNAL TCOMLN,TTYTAB,TCOMM,TPYTAB,PTYTAB,ITMCNT,SETIOD +EXTERNAL ADVBFE,PUNIT PTYOUT: LDB LINE,PUNIT JSR PTYSAV @@ -172,7 +171,7 @@ PTYOU4: CAIE CHREC,"^" MOVEM IOS,DEVIOS(DDB) ;SAVE TTY STATE TRO PIOS,IOPTRE ;LET USER KNOW -PTYOU3: JRS PTYRET ;RESTORE ACS +PTYOU3: JSR PTYRET ;RESTORE ACS EXCH IOS,PIOS PTYOU8: TLZE IOS,IOW PUSHJ PDP,SETIOD ;START PTY JOB @@ -189,7 +188,7 @@ PTYOU5: TRZ IOS,IOACT+IOPTW ;CONSIDER OUTPUT COMPLETED TLO IOS,IOFST MOVEM IOS,DEVIOS(DDB) POPJ PDP, - EXTERNAL TCONLN,TTYTAB,SETIOD,ADVBFF,STOSQD,ADRERR + EXTERNAL TCONLN,TTYTAB,SETIOD,STODAT,ADVBFF,STOSQD,ADRERR PTYIN: LDB LINE,[POINT 6,DEVCHR(DDB),23] ADDI LINE,TCONLN @@ -213,7 +212,7 @@ PTYIN1: PUSH PDP,LINE JUMPE CHREC,PTYIN5+1 ;NO ;YES,SAVE LINE NO. PTYIN4: TLNN PIOS,IO+SP ;IS TTY DONE? - JRST PTYI38 ;YES. THATS ALL + JRST PTYI3B ;YES. THATS ALL MOVE DAT,CHREC PUSHJ PDP,STODAT ;STORE CHARACTER JRST ADRERR @@ -258,9 +257,9 @@ PTYIN8: MOVEM IOS, DEVIOS(DDB) IFE FTCHECK+FTMONP,< PTYSAV: 0 > -PTYSA0: MOVEM SCHHAC,PTYBDN(DDB) ;SAVE HIGH AC +PTYSA0: MOVEM SCNHAC,PTYBND(DDB) ;SAVE HIGH AC HRRZ SCNHAC,DDB - ADDI SCHNHAC,PTYBM1 + ADDI SCNHAC,PTYBM1 HRRM SCNHAC,PTYSA2 SUBI SCNHAC,SCNHAC-1 XCT PTYSA2 ;DO BLT SCNHAC @@ -352,6 +351,7 @@ PTYSET: MOVE PDDB,LINE IORB PIOS,DEVIOS(PDDB) TRNE PIOS,IOPTW ;IS LINKED TTY JOB IN INPUT WAIT? PUSHJ PDP,PTWAKE ;YES, WAKE UP CONTROL JOB - JSRT ACRET + JRST ACRET END + \ No newline at end of file diff --git a/src/s.mac b/src/s.mac index 617380c..022d733 100644 --- a/src/s.mac +++ b/src/s.mac @@ -130,6 +130,10 @@ INTERNAL A XP DEVBUF,6 ;C(LH)=REL. ADR. OF 3 WORD OUTPUT BUFFER HEADER ; C(RH)=REL. ADR. OF 3 WORD INPUT BUFFER HEADER XP DEVIAD,7 ;C(LH)=PROG IN INDEX FIELD + ;BITS 1 AND 2 USED TO KEEP COUNT OF NO. OF USER CHANNELS + + ; INITED ON THIS DEVICE(DECTAPE ONLY) + ; IADPTR-COMMON BYTE POINTER TO 2 BIT COUNT XP DEVADR,DEVIAD ; C(RH)=REL. INPUT BUFFER ADD. SERVICE ROUT. IS FILLING XP DEVOAD,10 ;C(LH)=PROG IN INDEX FIELD @@ -141,7 +145,7 @@ INTERNAL A XP DEVEXT,12 ;LH=EXTENSION, RH=UNUSED XP DEVPPN,13 ;PROJECT PROGRAMMER NO. (DISK ONLY) ; OTHER DEVICES NEED NOT HAVE THIS LOCATION IN THEM. - ; I/0 STATUS WORD ASSIGNMENTS + ; I/O STATUS WORD ASSIGNMENTS ;DATA MODES: BITS 32-35(BYTE POINTER=PIOMOD) XP A,0 ;ASCII XP AL,1 ;ASCII LINE @@ -526,4 +530,3 @@ DEFINE CODES ASUPPRESS ;ELIMINATE ALL SYMBOLS NOT REFERENCED LATER ; FROM THE SYMBOL TABLE LISTING LIST - diff --git a/src/schedb.mac b/src/schedb.mac index b33d156..16c0de7 100644 --- a/src/schedb.mac +++ b/src/schedb.mac @@ -75,7 +75,7 @@ NXTJB1: SKIPN J,JOB ;CURRENT JOB NO., IS IT NULL JOB? HLRZ SW,JBTSTS(J) ;GET JOB STATUS BITS AND CODES TRZ SW,RUNMSK+CMWB ;MASK OUT DO NOT CARE BITS CAIE SW,RUNABLE ;IS CURRENT JOB RUNABLE? - JRST CKJR3 ;NO. REQUEU CURRENT JOB + JRST CKJB3 ;NO. REQUEU CURRENT JOB SKIPN TIMEF ;NO. IS THIS A TIME INTERRUPT? JRST CKJB1 ;NO. @@ -85,10 +85,10 @@ NXTJB1: SKIPN J,JOB ;CURRENT JOB NO., IS IT NULL JOB? MOVEI DAT,QTIME ;YES---REQUEUE AND RESET QUANT. TIME MOVE TAC,JOBQUE PUSHJ PDP,QXFER - CKJB1: SKIPG QJ,QJDB ;SET QJ NON ZERO IF ANY REQUEUING TO DO + CKJB1: SKIPG QJ,QJOB ;SET QJ NON ZERO IF ANY REQUEUING TO DO JRST CKJB5 ;NO REQUEUEING NECESSARY MOVEI J,JOBMAX ;START WITH HIGHEST JOB NUMBER ASSIGNED -CKJB2: MOVSI SW,JBQ ;JOB NEEDS REQUEUEING BIT +CKJB2: MOVSI SW,JRQ ;JOB NEEDS REQUEUEING BIT TDNN SW,JBTSTS(J) ;THIS JOB? SOJG J,.-1 ;NO, KEEP LOOKING JUMPLE J,CKJB5 ;YES,LOOKED AT ALL JOBS? @@ -100,12 +100,12 @@ CKJB3: MOVE SW,JBTSTS(J) ;JOB STATUS WORD TLNN SW,CMWB ;IS JOB IN COMMAND WAIT? JRST CKJB9 ;NO. TLNE SW,SWP+JXPN ;YES, IS JOB ON DISK, OR TRYING TO EXPAND? - JRST CK,JB4A ;YES. PUT JOB IN COMMAND WAIT Q + JRST CKJB4A ;YES. PUT JOB IN COMMAND WAIT Q CKJB9: JUMPGE SW,CKJB4 ;NO,WAIT STATUS CODE DETERMINES NEW Q LDB SW,PJBSTS ;YES, GET QUEUE CODE. CAIN SW,WSQ ;*** EXPERIMENTAL *** JRST CKJB10 ;*** EXPERIMENTAL *** - CAIN SW,TIOWD ;CURRENT JOB GOING INTO TTY IO WAIT? + CAIN SW,TIOWQ ;CURRENT JOB GOING INTO TTY IO WAIT? HRROS JBTSWP(J) ;YES, SET IN CORE PROTECT TIME TO -1, ; SO HE CAN BE SWAPPED IMMEDIATELY IF SOMEONE ; ELSE WANTS TO BE SWAPPED IN @@ -211,11 +211,11 @@ INTERNAL QXFER,QSCAN,FTSWAP,FTDISK ;PUT ALL JOBS IN NULL QUEUE(JOB NO. NOT ASSIGNED) ;CALLED ON RESTART AT LOC 143 -INTERNAL QINT +INTERNAL QINI EXTERNAL CPOPJ,JOBMAX,MXQUE,JBTQ EXTERNAL JBTQP1 ;EQUALS JBTQ+1 -EXTERNAL JBTCM1 ;EQUALS JBTQ-1 -EXTERNAL JBTOMN ;EQUALS JBTQ-NULQ +EXTERNAL JBTQM1 ;EQUALS JBTQ-1 +EXTERNAL JBTQMN ;EQUALS JBTQ-NULQ QINI: MOVNI TAC,MXQUE ;MAKE ALL QUEUE HEADERS POINT TO THEMSELVES HRL TAC,TAC ;BACKWARD POINTERS TOO @@ -326,7 +326,7 @@ TT=DAT ;POINTER TO TRANSFER TABLE J=ITEM ;JOB NO. Q=PROG ;DEST-Q AND QUANT. TIME ON RETURN T1=TAC1 ;TEMP -T2=TAC ;TEMP AND SOURCE-Q ON CALL TO B,EQLINE +T2=TAC ;TEMP AND SOURCE-Q ON CALL TO B,EQLINK EXTERNAL ERROR @@ -380,7 +380,7 @@ QX3: POPJ PDP, BQFIX=QFIX EQFIX=QFIX+1B0 BQLINK=QLINK -EQLINK=QLINE+1B0 +EQLINK=QLINK+1B0 BQJSIZ=QJSIZ EQJSIZ=QJSIZ+1B0 ,SCANS THE QS RETURNING THE NUMBERS OF THE JOBS IN THE QS. @@ -461,7 +461,7 @@ IFE FTCHECK+FTMONP,< DEFINE X(A,B) @@ -483,6 +483,15 @@ A'Q=LOC LOC=LOC+1 > CODES + +XP MXCODE,LOC-1 ;MAX, JOB STATE DONE +PQ1=LOC +LOC=LOC+1 +PQ2=LOC +LOC=LOC+1 +PQ3=LOC +LOC=LOC+1 +CMQ=LOC ;COMMAND DELAY QUEUE ;CORRESPONDENCE TABLE BETWEEN JOB STATUS CODES AND QUEUE TRANSFER TABLES ;USED BY SCHEDULER ;RUNCSS SETS JOB STATUS WORD TO NEW STATE CODE. @@ -496,6 +505,7 @@ DEFINE X(A,B) INTERNAL QBITS QBITS: QUEUES + CODES IFN FTCHECK+FTMONP,< DEFINE X(A,B),< EXTERNAL A'RFQ @@ -583,7 +593,7 @@ QRNW: PTTAB EQJSIZ,QSTAB,QQSTAB ;JUST RUNABLE JOBS QWSW: TTAB BQFIX,PQ1,QQTTY ;IO WAIT SAT.(EXCEPT TTY) ;ENTER FRONT OF PROCESSOR QS AND GET QUANT, TIME ;ACCORDING TO JOB SIZE -QTSW: TTAB BQFIX,PQ,QQTTY ;TTY IO WAIT SATISFIED(ENTER FRONT OF PQ1) +QTSW: TTAB BQFIX,PQ1,QQTTY ;TTY IO WAIT SATISFIED(ENTER FRONT OF PQ11) QIOWW: TTAB EQFIX,IOWQ,-1 ;IOW(EXDEPT TTY) HELD IN IOWQ QTIOWW: TTAB EQFIX,TIOWQ,-1 ;TTY IOW HELD IN TIOWQ @@ -600,14 +610,14 @@ QSLPW: TTAB EQFIX,SLPQ,-1 ;SLEEP UUO QQSD=-1 -QMSQ: TTAB BQFIX,PQ1,QQSD ;START MON. Q(DISK) AT PQ1 +QMQS: TTAB BQFIX,PQ1,QQSD ;START MON. Q(DISK) AT PQ1 QDAS: TTAB BQFIX,PQ1,QQSD ;DEV. ALLOC.(DISK)... QDCS: TTAB BQFIX,PQ1,QQSD ;DATA CONTROL... QSTS: TTAB BQFIX,PQ1,QQSD ;SYST TAPE QDTS: TTAB BQFIX,PQ1,QQSD ;DEC TAPE QMTS: TTAB BQFIX,PQ1,QQSD ;MAG TAPE QAUS: TTAB BQFIX,PQ1,QQSD ;ALTER UFD -QTIME PTTAB EQLINK,QTTAB,QQSTAB ;MOVE JOB TO LOWER Q +QTIME: PTTAB EQLINK,QTTAB,QQSTAB ;MOVE JOB TO LOWER Q ;WHEN QUANT. TIME EXCEEDED AND RESET QUANT. TIME ,ENTER PROCESSOR QS ACCORDING TO JOB SIZE QSTAB: XWD 4,-PQ1 ;PQ1 IF SIZE .LE. 4K @@ -620,6 +630,12 @@ QQTAB: XWD -PQ1,-PQ2 XWD -PQ3,-PQ2 ;BACK TO PQ2 TO COMPETE WITH IOWS JOBS Z +,PUT JOB DOWN A Q IF EXCEEDS QUANT. TIME +QTTAB: XWD -PQ1,-PQ2 + XWD -PQ2,-PQ3 + XWD -PQ3,-PQ2 ;BACK TO PQ2 TO COMPETE WITH IOWS JOBS + Z + ,QUANTUM TABLES QQSD=6 ;TENTH SEC. INITIAL QUANT. FOR SHAR. DEV. WAITERS @@ -637,7 +653,7 @@ QQSTAB: EXP ^D30 ;PQ1: ONE HALF SECOND IFN FTSWAP,< INTERNAL ISCAN,QSCAN ISCAN: ;SCAN FOR INPUT - XWD -CWM,QFOR ;MONITOR COMMAND WHICH NEEDS CORE IMAGE IN CORE + XWD -CMQ,QFOR ;MONITOR COMMAND WHICH NEEDS CORE IMAGE IN CORE XWD -MQQ,QFOR1 ;LOOK FOR 1ST JOBS IN SHAR. DEV QUEUES XWD -DAQ,QFOR1 XWD -AUQ,QFOR1 @@ -652,7 +668,7 @@ SSCAN: XWD -PQ1,QFOR ;SCAN PROCESSOR AS SCHEDULER DOES Z Z ;FINAL ZERO TO FLAG END -QSCAN: ;SCAN FOR OUTPUT +OSCAN: ;SCAN FOR OUTPUT XWD -STOPQ,QFOR ;UNRUNABLE JOBS FIRST XWD -SLPQ,QFOR XWD -DTQ,QBAK1 ;ANY SHAR. DEV.WAITERS MORE THAN 1 DEEP @@ -729,7 +745,7 @@ T2=TAC J=ITEM ,ALL DEVICE DEPENDENT CODE MARKED WITH A "*" - SWAP: SKIPE SHWAT ;IS CORE SHUFFLER WAITING FOR IO TO STOP + SWAP: SKIPE SHFWAT ;IS CORE SHUFFLER WAITING FOR IO TO STOP ; FOR SOME JOB? PUSHJ PDP,CHKSHF ;YES, CALL CORE SHUFFLER TO SEE IF ; IO STOPPED YET @@ -886,7 +902,7 @@ SCNOUT: SKIPG XJOB ;ANY JOBS WAITING TO EXPAND? ; FOR ONE TO SWAP OUT MOVE J,HIGHJB ;YES, START WITH HIGHEST JOB NUMBER ASSIGNED MOVSI T,JXPN ;SETUP JOB EXPANDED BIT - TDDN T,JBTSTS(J) ;IS THIS JOB EXPANDING? + TDNN T,JBTSTS(J) ;IS THIS JOB EXPANDING? SOJG J,.-1 ;NO, KEEP LOOKING IFN FTRCHK,< JUMPG J,SCNOK ;CLEAR XJOB SO MESSAGE WILL PRINT @@ -917,7 +933,7 @@ SCNJOB: MOVE T,CORTAL ;INITIALIZE FREE CORE COUNTER ; (DISPLAY, REAL TIME)? JRST (TAC1) ;YES,CONTINUE SCAN TO FIND ANOTHER HLRZ T,JBTADR(J) ;PICK UP SIZE OF JOB - JUMPE T,(TAC1) ` ;CONTINUE SCAN IF NOT IN CORE (HIGH SEG ALREADY SWAPPED + JUMPE T,(TAC1) ;CONTINUE SCAN IF NOT IN CORE (HIGH SEG ALREADY SWAPPED) ; OUT FOR THIS USER IF NO LOW SEG) ASH T,-12 ;CONVERT TO 1K BLOCKS ADDI T,1 @@ -981,12 +997,12 @@ IFN JDAT-PROG,< INTERNAL FTTRACK -SWAPD: +SWAPO: IFN FTTRACK, SETZM FORCE ;CLEAR FORCE FLAG - HLRZ T,JBTADTR(J) ;COMPUTE CORE IMAGE + HLRZ T,JBTADR(J) ;COMPUTE CORE IMAGE JUMPE T,SWP1 ;DONT OUTPUT IF 0 CORE(IMGOUT ALREADY SET TO 0 ; WHEN CORE WAS RETURNED @@ -1016,7 +1032,7 @@ NOFIT: SETZM FIT ;FORGET ABOUT FITTING IN A JOB ON DISK ;COME HERE WHEN THE AMOUNT OF SPACE NEEDED ON THE DISK ;IS NOT AVAILABLE IN ONE CONTIGUOUS BLOCK - EXTERN GETFOR + EXTERN GETFCR FULL: HRLM DAT,AC3 ;SAVE DAT (LARGEST AVAILABLE HOLE) PUSHJ PDP,FULCOR ;GET 4 FREE CORE LOCS @@ -1059,8 +1075,8 @@ FULSET: PUSHJ PDP,BMPAC3 ;STEP TO NEXT (LAST) TABLE LOCATION JRST OUTP2 ;GO START OUTPUT ;HERE TO GET 4 LOCS OF FREE CORE -FULCOR: PUSH PDP,ITEM ;GETFOR USES ITEM - PUSHJ PDP,GETFOR ;GET 4 CELLS +FULCOR: PUSH PDP,ITEM ;GETFCR USES ITEM + PUSHJ PDP,GETFCR ;GET 4 CELLS JRST IPOPJ ;RETORE ITEM AND RETURN ;STEP AC3 TO NEXT LOC OF TABLE BEING BUILT @@ -1148,7 +1164,7 @@ CHGSWP: LDB TAC1,IMGIN ;SIZE WHEN SEG NEXT SWAPPED IN INTERN ZERSWP -ZERSWPL TDZA TAC,TAC ;REQUEST O SPACE ON DISK AND ALWAYS SKIP +ZERSWP: TDZA TAC,TAC ;REQUEST O SPACE ON DISK AND ALWAYS SKIP CHG1: ADDM TAC1,VIRTAL ;INCREASE SIZE OF VIRTUAL CORE AVAILABLE IN SYSTEM ; AND THEN RETURN ALL OF DISK SPACE(CHGSWP) MOVSI TAC1,SWP!SHF ;CLEAR SWAPPED OUT BIT IN JOB OR SEG @@ -1266,7 +1282,7 @@ SQGO: MOVEI TAC1,ERATRY SQGO1: SETZM SQLEN ;ZERO AMOUNT TRANSFERRED SO FAR MOVE TAC1,SQREQ ;*PUT IOWD INTO TAC1 MOVSI TAC,200000 ;*SET "SWAPPER I/O GOING" FLAG ON - ORB TAC,SETA ;* + ORB TAC,SERA ;* TRZN TAC,FRGSEG ;*FRAGMENTED? JRST SQGO2 ;*NO, READ IN ENTIRE (OR PART) OF SEG @@ -1328,7 +1344,7 @@ DINT8A: HRRZM IOS,SERA SETZM SQREQ JRST DINT4B -SWPER1; MOVSI TAC,100 +SWPER1: MOVSI TAC,100 ADDM TAC,CKSMCT TRO IOS,IODTER SWPERR: MOVM TAC, FINISH ;*RESET SERA IN CASE OF FRAGMENTED JOB @@ -1406,7 +1422,7 @@ SWPINI: MOVE TAC,XSAT2 MOVEM TAC,XSAT5 MOVE TAC,XSAT8 MOVEM TAC,XSAT6 - POPJ PDPD, + POPJ PDP, IFN FTCHECK+FTMONP,< EXTERNAL SQREQ,SERA,SERACT,XSAT1,XSAT2,XSAT3,XSAT4,XSAT5,XSAT6,XSAT7 @@ -1426,7 +1442,7 @@ ESQREQ: Z ;COPY OF SQREQ, IN CASE OF SERA: Z ;SIGN IS 1 IF A READ ; C(RH)=BLOCK NUMBER BEFORE READING. ; ERROR BITS AFTER READING. -SELACT: 0 ;COUNT FOR ERRORS +SERACT: 0 ;COUNT FOR ERRORS SQLEN: 0 ;AMOUNT TRANSFERRED SO FAR - FRAG SEG XSAT1: EXP XSAT3-1 ;POINTER USED BY GETBIT,CLRBIT @@ -1448,11 +1464,11 @@ XSAT5: BLOCK W2+1 XSAT6: BLOCK 1 REPEAT 1,< IFE E1, - IFN E1,> IFE E2, IFN E2, >> @@ -1528,7 +1544,7 @@ GXSAT: PUSH PDP,ITEM ;THIS ROUTINE SAVES AND RESTORES ACCUMULATOR "ITEM". FXSAT: TRZN TAC,FRGSEG ;FRAGMENTED? JRST FXSAT1 ;NO. DO IN REGULAR WAY -FRAGRK: HRRZ AC3,TAC ;YES. LOC OF TABLE IN AC3 +FRAGBK: HRRZ AC3,TAC ;YES. LOC OF TABLE IN AC3 FRGBK1: HRRZ TAC,(AC3) ;LOC OF NEXT DISK ADDRESS HLRE DAT,(AC3) ;NUMBER OF K JUMPLE DAT,FRGBK2 ;GIVE UP FREE CORE IF NOT REAL ADDRESS @@ -1590,7 +1606,7 @@ EXTERNAL LBHIGH,BLKSPK,MAX2SWP,SWPENT,SWPTAB,MAXSWP IFE FTCHECK+FTMONP,< ;DATA ASSOCIATED WITH THE SWPSER LOGIC FOR THE NEW PDP-10 DISK --- - INTERN MXK2SWP,CONVMD,BLKSPK,SWAPTAB,MAXSWP + INTERN MXK2SWP,CONVMD,BLKSPK,SWPTAB,MAXSWP EXTERN K4SWAP ;THE ABOVE ARE REFERENCED OR INITIALIZED BY THE "ONCE" ROUTINE. @@ -1610,7 +1626,7 @@ MXK2SWP=^D1000 ;MASIMUM NUMBER OF 1K DISK BLOCKS WHICH MIGHT BE ALLOCATED ; FOR SWAPPING (UPPER BOUND ON THE VALUE OF K4SWAP WHICH ; MAY BE REQUESTED AT DISK REFRESH TIME). (ONE MILLION WORDS ; FOR SWAPPING SEEMS LIKE A NON-RESTRICTIVE ARBITRARY LIMIT.) -SWPSIZ=MXK2SWP/.^D36+1 ;SIZE OF SWPTAB ALLOCATION TABLE. +SWPSIZ=MXK2SWP/^D36+1 ;SIZE OF SWPTAB ALLOCATION TABLE. SWPENT: XWD -SWPSIZ,SWPTAB ;THREE WORD POINTER TABLE XWD 400000,0 ; REQUIRED BY THE "GETBIT" AND @@ -1626,8 +1642,9 @@ ESQREQ: Z ;COPY OF SQREQ, IN CASE OF SWAP ERROR IN FRAGMENTED JOB SERA: Z ;SIGN IS 1 IF A READ ; C(RH)=BLOCK NUMBER BEFORE READING. ; ERROR BITS AFTER READING. -SELACT: 0 ;COUNT FOR ERRORS +SERACT: 0 ;COUNT FOR ERRORS SQLEN: 0 ;AMOUNT TRANSFERRED SO FAR FOR FRAGMENTED JOB > > ;END OF SWPSER LOGIC FOR THE NEW PDP-10 DISK. SCHEND: END + diff --git a/src/scnsrf.mac b/src/scnsrf.mac index 14d7517..37d1861 100644 --- a/src/scnsrf.mac +++ b/src/scnsrf.mac @@ -73,9 +73,9 @@ SCNSRF: ;WHEN OUTPUT FINISHES IOSUPR=200 ;SUPPRESS ALL OUTPUT ;TILL NEXT INPUT OR INIT (^O). - TRMON=400 ;TTY IS IN MONITOR + TPMON=400 ;TTY IS IN MONITOR ;COMMAND MODE. - DDTM=1000 ;DDT MODE + DDTM=1000 ;DDT MDDE TTYDTC=2000 ;TTY DDB IS DETACHED FROM LINE SYNC=20000 ;BREAK CHARACTER SEEN ;SIGNAL TO INCREMENT SYNC COUNT @@ -142,7 +142,7 @@ XON=2 ;^Q TYPED, PAPER TAPE INPUT FULTWX=4 ;SELF ECHOING FULL DUPLEX T35=10 ;MODEL 35 T37=20 ;MODEL 37 -ROBTPB=40 ;RUBOUT TYPED LAST (ECHO \ BEFORE NEXT CHAR.) +ROBTPD=40 ;RUBOUT TYPED LAST (ECHO \ BEFORE NEXT CHAR.) LINRDY=100 ;LINE TYPED IN BY USER (TISYNC .G.0) ; NOT ACTUALLY IN LINTAB. BUT RETURNED BY ; GETLIN IN TTCALL @@ -151,7 +151,7 @@ LINRDY=100 ;LINE TYPED IN BY USER (TISYNC .G.0) ;(BY MONITOR, TYPE-IN COMMANDS, OR PROGRAM) LGLSET=T37+T35+FULTWX+XON ;THESE CAN BE SET OR ZEROED BY PROGRAM -KILMSK=ROBTPB+TLKRNG+XON ;CLEARED AT TTYKIL +KILMSK=ROBTPD+TLKRNG+XON ;CLEARED AT TTYKIL ;DECLARE THESE AS INTERNS TO GET THEM IN THE MAP ;AND TO CHECK AGAINST S IN COMMON @@ -213,7 +213,7 @@ TOIP=400000 ;SIGN OF TTYPTR(DDB) - TYPE-OUT IN PROGRESS ; DATA BLOCKS. ; 4)SETS TTYUSE#1 IN ALL TTY DDBS IN THE TRANSLATOR TABLE. -EXTERNAL SCNSCH,MLTTYL,MTTYLN,TTYTAB,SCNINI +EXTERNAL SCNCHN,MLTTYL,MTTYLN,TTYTAB,SCNINI TTYINI: MOVEI TAC,SCNCHN CONO TTY,1200(TAC) ;CLEAR CTY, ASSIGN CHANNEL @@ -240,7 +240,7 @@ SCN1: MOVSI DAT,TTYUSE ;TTY DDB IN USE BIT SCN2: MOVSI TAC,TTYUSE SKIPE DDB,TTYTAB(TAC1) IORM TAC,DEVMOD(DDB) - HRRZ TA,TAC1 ;SET UP PERMANENT LINTAB BITS + HRRZ TAC,TAC1 ;SET UP PERMANENT LINTAB BITS CAIGE TAC,TCONLN ;ORDINARY TTY LINE? JRST SCN3 ;YES CAIE TAC,TCONLN ;CTY LINE? @@ -285,7 +285,7 @@ SETBF0: MOVE TAC,BUF(DAT) PUTCHI: SOSGE FCTR(DAT) ;ANY FREE SPACES LEFT? JRST PUTCI0 ;NO -PUTCI2: SOSLE PTCR(DAT) ;LAST BYTE IN BUFFER FILLED? +PUTCI2: SOSLE PCTR(DAT) ;LAST BYTE IN BUFFER FILLED? JRST PUTCI1 ;NO, GO AHEAD PUSH PDP,TAC MOVE TAC,BUF(DAT) ;GET ADR AND SIZE OF BUFFER @@ -351,7 +351,7 @@ PUTCHO: SOSGE TOFCTR(DDB) ;RETURN IMMEDIATELY IF NO ROOM HLRZM TAC,TOPCTR(DDB) ;INITIAL COUNTER HRLI TAC,440700 ;MAKE A BYTE POINTER MOVEM TAC,TOPUTR(DDB) ;INITIAL POINTER -PUTCO1: IDBP CHREC,TOPUTR(DDB) ;PUT CHARACTER INTO BUFFER +PUTCO1: IDPB CHREC,TOPUTR(DDB) ;PUT CHARACTER INTO BUFFER CONO PI,PION ;GET PI BACK ON POPJ PDP, ;ROUTINE TO CHECK IF A CHARACTER IS SPECIAL(ASCII 0-37, 175-177) @@ -379,7 +379,7 @@ SPACTN=40000 ;SPECIAL ACTION TO BE TAKEN SPOUT=100000 ;SPECIAL HANDLING ON UUO OUTPUT BREAKB=20000 ;BREAK CHARACTER SPHPOS=10000 ;CHARACTER AFFECTS HORIZONTAL POSITION -ECSBRK=4000 ;BREAK CHARACTER IN FCS(100) MODE +FCSBRK=4000 ;BREAK CHARACTER IN FCS(100) MODE ECHSUP=2000 ;SUPRESS ECHO OF CHAR ITSELF SPCTAB: XWD ECHSUP,0 ;NULL @@ -401,7 +401,7 @@ SPCTAB: XWD ECHSUP,0 ;NULL XWD SPACTN+ECHSUP,CONTP ;^P T35 SW XWD SPACTN+ECHSUP,CONTQ ;^Q XON (PAPERTAPE) XWD ECHSUP,0 ;^R TAPE PUNCH OFF - XWD SPACN+ECHSUP,CONTS ;^S XOFF + XWD SPACTN+ECHSUP,CONTS ;^S XOFF XWD ECHSUP,0 ;^T TAPE PUNCH OFF XWD SPACTN,CONTU ;^U DELETE LINE XWD ECHSUP,0 ;^V @@ -456,11 +456,11 @@ DDTIW: MOVE IOS,[XWD TTYIOW,IOACT] XFRIN: PUSHJ PDP,GETCHR ;TRANSFER INTO USER'S AREA JUMPE CHREC,XFRIN2 PUSHJ PDP,SPCHEK - JRST XFIN1 + JRST XFRIN1 TLNE TAC,FCSBRK+BREAKB SOS TISYNC(DDB) XFRIN1: CAIN CHREC,3 ;PRESTORED CONTROL C? - JRST DDONC ;YES, GO INTO MONITOR MODE + JRST DDTCNC ;YES, GO INTO MONITOR MODE IDPB CHREC,AC2 SOJG AC1,XFRIN ;LOOP TILL DONE XFRIN2: MOVEI CHREC,0 ;TERMINATE STRING @@ -575,16 +575,16 @@ OUTC1C: CAIN TAC,14 ;FF? MOVNI HPOS,10 ;YES. 8 LF'S CAIN TAC,13 ;VT? MOVNI HPOS,4 ;YES. 4 LF'S -OUTC1B: PUSHJ PDP,PUTCH0 ;OUTPUT THE PHONEY CHAR +OUTC1B: PUSHJ PDP,PUTCHO ;OUTPUT THE PHONEY CHAR ADDI HPOS,1 ;COUNT THE OUTPUTS TRNE HPOS,7 ;ENOUGH? JRST OUTC1B ;NO. MORE. JRST OUTCH3 ;NO MORE. OUTC1A: ;HERE ON OUTPUT OF SLOW CHARS TO SMART TTY - PUSHJ PDP,PUTCH0 ;SENT THE REAL CHAR + PUSHJ PDP,PUTCHO ;SENT THE REAL CHAR MOVE TAC,CHREC ;COPY THE CHARACTER - MOVEI CHREC,IOLECH ;A DELAY CHARACTER + MOVEI CHREC,IDLECH ;A DELAY CHARACTER SUBI HPOS,2 ;TWO SHLUFF CHARACTERS JRST OUTC1C ;GO OUTPUT THE SLUFFS. ;COUNT WILL BE MODIFIED ON VT,FF @@ -763,7 +763,7 @@ IFN FTHDPX,< TTYIN1: SKIPG TISYNC(DDB) PUSHJ PDP,TWSYNC PUSHJ PDP,MONUSR -TENDIN: MOVE IOS,[XWD TTYIOW+DDTM+IOSUPR,ECHOF+MERTP+IGNOR+IOACT] +TENDIN: MOVE IOS,[XWD TTYIOW+DDTM+IOSUPR,ECHOF+MERTPO+IGNOR+IOACT] T0POPJ: ANDCAB IOS,DEVIOS(DDB) POPJ PDP, ;ROUTINE TO MOVE A LINE OR STRING FROM TTY INPUT BUFFER TO USER'S INPUT BUFFER @@ -786,7 +786,7 @@ MONUS1: PUSHJ PDP,GETCHR ;GET A CHAR, FROM IT PUSHJ PDP,SPCHEK ;SPECIAL CHARACTER? JRST MONUS2 ;NO - TLNE TAC,FCSBRK+BREAKP ;A BREAK CHARACTER? + TLNE TAC,FCSBRK+BREAKB ;A BREAK CHARACTER? SOSA TISYNC(DDB) ;SOME BREAK, COUNT IT DOWN MONUS2: SOJG AC2,MONUS1 ;NO, USER BUFFER FULL? CAIN CHREC,3 ;STORED CONTROL C? @@ -821,7 +821,7 @@ MONUS5: MOVSI IOS,IOFST MONUS7: MOVE IOS,[XWD TTYIOW,IOACT] IORB IOS,DEVIOS(DDB) ;PUT JOB BACK IN IOWAIT - PUSHJ PDP,MONU6 + PUSHJ PDP,MONUS6 JRST TTYIN ;RESTART INPUT UUO MONUS8: TLNN IOS,IOEND ;ROOM FOR ANOTHER BUFFER, ^Z SEEN? @@ -853,11 +853,11 @@ UTYPET: JUMPL LINE,PTYPE ;START PTY EXCHANGE IF PTY LINE MOVSI TAC,TOIP CONO PI,PIOFF ;PREVENT TIMING GLITCH TDNN TAC,TTYPTR(DDB) ;IS TYPE-OUT ALREADY ON? - JRST UTYPE1 + JRST UTYPT1 CONO PI,PION POPJ PDP,0 -UTYP1: IORM TAC,TTYPTR(DDB) ;START TYPEOUT +UTYPT1: IORM TAC,TTYPTR(DDB) ;START TYPTEOUT JRST XMTIN1 ;ROUTINE TO MOVE USER OUTPUT BUFFER TO MON. OUTPUT BUFFER ;CALLED ONLY AT UUO LEVEL,BY OUTPUT UUO @@ -918,7 +918,7 @@ TTUUOT: EXP INCHRW ;(0)INPUT CHAR. WAIT TILL TYPED EXP INCHSL ;(5)INPUT CHAR, SKIP. LINE MODE EXP GETLIN ;(6)GET LINE CHARACTERISTICS WORD EXP SETLIN ;(7)SET BITS IN LH LINTAB - EXP TRESOU ;(10)BACK UP POINTER TO COMMAND + EXP TRESCU ;(10)BACK UP POINTER TO COMMAND EXP SETBFI ;(11)CLEAR INPUT BUFFER EXP SETBF2 ;(12)CLEAR OUTPUT BUFFER EXP SKPINC ;(13)SKIP IF CHAR TO INPUT @@ -975,7 +975,7 @@ EXTERNAL TTPLEN,GETWDU INCHRW: PUSHJ PDP,INCHRS ;GET ACHAR IF ONE IS THERE JRST .+2 ;NONE THERE POPJ PDP, ;CHAR, PICKED UP AND STORED - MOVE IOS,[XWD TTYIOW+ODTM,IOACT][ ;SETUP FOR IOWAIT + MOVE IOS,[XWD TTYIOW+DDTM,IOACT] ;SETUP FOR IOWAIT IORB IOS,DEVIOS(DDB) ;SPECIFICALLY FOR INPUT WAIT PUSHJ PDP,TWSYNC ;WAIT FOR CHAR. TO BE TYPED JRST INCHRW ;GO GET IT @@ -1140,7 +1140,7 @@ INTERNAL TTYDET EXTERNAL PUNIT,TTYTAB TTYDET: MOVSI TAC,TTYATC - TDNN TAC,DEVMOND(DDB) ;IS THIS DDB WORTH KEEPING? + TDNN TAC,DEVMOD(DDB) ;IS THIS DDB WORTH KEEPING? JRST TTYDT1 ;NO. GO JUNK IT MOVSI IOS,TTYDTC ;YES. MARK IT DETACHED @@ -1191,7 +1191,7 @@ TBYTEP: PUSH PDP,TAC1 ;SAVE LINE ADDI TAC,TTYCHR IDIVI TAC,5 ADD TAC,TTIBUF(DDB) - HLL TAC,TLWBYT(TAC1) + HLL TAC,TLHBYT(TAC1) POP PDP,TAC1 ;RESTORE LINE POPJ PDP,0 ;ROUTINE TO FIND TTY FOR A JOB @@ -1318,7 +1318,7 @@ TTYF1: MOVSI TAC,576062 ;LOOK FOR DEVICE "OPR" SKIPA TAC,DEVOPR ;NOT FOUND. JRST TTYF9 JUMPN TAC,TTYF3 ;WAS OPR SPECIFIED IN ONCE ONLY CODE? - MOVEI DDR,TTYLST ;NO + MOVEI DDB,TTYLST ;NO SKIPE DEVNAM(DDB) ;HAS A TTY BEEN TYPED ON? JRST TTYF9 MOVEI LINE,TCONLN ;NO USE CTY. @@ -1372,7 +1372,7 @@ TTSTR1: MOVSI TAC,IO+TPMON MOVE IOS,DEVIOS(DDB) ;GET CORRECT IOS SKIPLE TISYNC(DDB) ;HAS USER TYPED AHEAD? PUSHJ PDP,COMSET ;YES, WAKE UP COMMAND DECODER(IF IN MON. MODE) - JRST UTYRET ;GO TYPE FIRST CHAR. + JRST UTYPET ;GO TYPE FIRST CHAR. ;ROUTINE TO ADD TTY TO TALK RING ;CALL: ADR. OF DDB TO BE ADDED TO RING AT -3(PDP) ; MOVE TAC,SIXBIT /TTYN/ @@ -1405,7 +1405,7 @@ TTYTK1: CONO PI,SCNOFF LDB LINE,PUNIT ;LINE NUMBER IS RING. MOVSI TAC,TLKRNG LDB CHREC,PTALK - TDDN TAC,LINTAB(LINE) + TDNN TAC,LINTAB(LINE) HRRZ CHREC,LINE IORM TAC,LINTAB(LINE) EXCH DDB,-3(PDP) ;GET DDB OF TALKER @@ -1437,7 +1437,7 @@ TTYUSR: MOVSI IOS,USRB ;SET BIT TO SWITCH TTY TO USER MODE INTERNAL CTYINT EXTERNAL SCNSAV,SCNCHN,TCONLN -CTYINI: CONSO TTY,50 ;TTI OR TTO FLAG? +CTYINT: CONSO TTY,50 ;TTI OR TTO FLAG? JRST CTYINT ;NO JSR SCNSAV ;YES, SAVE AC'S MOVEI LINE,TCONLN ;LOAD LINE WITH PROPER @@ -1461,7 +1461,7 @@ EXTERNAL COMCNT RECINT: INUS2: ;TAG FOR INTERRUPT SERVICE -INJEXT: ;ANOTHER TAG, NOT USED, BUT WANTED BY LOSING DLSINT +INJEST: ;ANOTHER TAG, NOT USED, BUT WANTED BY LOSING DLSINT TRNN CHREC,177 ;IGNORE NULLS POPJ PDP,0 ;DISMISS INTERRUPT @@ -1505,7 +1505,7 @@ RECIN4: TLNE IOS,SYNC MOVE TAC,TIPCTR(DDB) ;UPDATE COUNTER FOR ^U DPB TAC,PLSTLC TLZN IOS,TTYIOW ;IN TELETYPE INPUT WAIT? - JRST TTYTST ;NO, GO ECHO + JRST TYPTST ;NO, GO ECHO PUSHJ PDP,STTIOD ;YES, SET IO DONE(OUT OF TTY IOW) MOVSI IOS,IOW+TTYIOW ANDCAB IOS,DEVIOS(DDB) ;CLEAR WAIT BITS @@ -1589,7 +1589,7 @@ COMSET: TLNN IOS,TPMON ;MONITOR MODE? POPJ PDP, INTERNAL XMTINT,PTYGET -XMTINT: HLL LINE,LINETAB(LINE) ;GET LINE CHAR. +XMTINT: HLL LINE,LINTAB(LINE) ;GET LIN CHAR. HRRZ DDB,TTYTAB(LINE) ;GET DDB ADDRESS JUMPE DDB,CPOPJ ;IF NONE, X BEING TYPED MOVE IOS,DEVIOS(DDB) ;GET IO STATUS @@ -1600,13 +1600,13 @@ PTYGET: ;CALL HERE TO SKIP ABOVE OVERHEAD SKIPL TTYPTR(DDB) ;WAS TYPE-OUT IN PROGRESS? POPJ PDP, ;IGNORE XMT DURING ECHO CK XMTIN1: MOVEI DAT,TTOBUF(DDB) ;SPECIFY TTO BUFFER -XMTI1A CONO PI,PIOFF ;KEEP TOIP AND PUTR/TAKR EQUAL +XMTI1A: CONO PI,PIOFF ;KEEP TOIP AND PUTR/TAKR EQUAL HLRZ TAC,BUF(DAT) ;IS OUTPUT BUFFER EMPTY? CAMLE TAC,FCTR(DAT) ;I.E. FREE COUNT AT MAX? JRST XMTIN2 ;NO, TYPING STILL IN PROGRESS TRNE IOS,MERTPO ;MONITOR ERROR MESSAGE? - CAIE DAT,TIOBUF(DDB) ;OUTPUT BUFFER? + CAIE DAT,TTOBUF(DDB) ;OUTPUT BUFFER? JRST XMTIN4 ;NO, MUST REALLY BE DONE MOVEI DAT,TTIBUF(DDB) ;YES. NOW EMPTY OUT TTI BUFFER JRST XMTI1A @@ -1675,7 +1675,7 @@ TYPE: JUMPE CHREC,CPOPJ ;IS TYPING STILL TO BE IN PROGRESS? TTEDIT: PUSHJ PDP,ADJHP ;ADJUST HP AND CHECK SPECIAL JRST TIPACK ;NOT SPECIAL MOVSI IOS,0 - TLNE TAC,BBREAK+FCSBRK ;BREAK CHAR? + TLNE TAC,BREAKB+FCSBRK ;BREAK CHAR? TLO IOS,SYNC ;BREAK CHAR, SET SYNC IORB IOS,DEVIOS(DDB) ;SET SYNC JUMPL TAC,0(TAC) ;DISPATCH IF SPACTN SET @@ -1687,8 +1687,8 @@ TTIPUT: TLZE LINE,ROBTPD ;HAVE WE BEEN DELETING? PUSHJ PDP,BSECHO ;YES. OUTPUT A BACKSLASH TTIPT1: PUSHJ PDP,PUTCHI ;PUT CHAR IN INPUT BUFFER JRST INBFUL ;IT DIDNT FIT - LTNN TAC,ECHSUP ;SHOULD THIS CHAR BE ECHOED? -DUPLEX: TLNE LINE,FULTWX,HLFDPX ;IS THIS LINE ECHOING ITSELF? + TLNN TAC,ECHSUP ;SHOULD THIS CHAR BE ECHOED? +DUPLEX: TLNE LINE,FULTWX+HLFDPX ;IS THIS LINE ECHOING ITSELF? POPJ PDP,0 ;JUST RETURN WITHOUT ECHO DUPLX1: PUSH PDP,TAC ;SAVE TAC OVER PUTCHO TLNN IOS,TPMON ;SHOULD ECHO IF IN MONITOR MODE @@ -1696,7 +1696,7 @@ DUPLX1: PUSH PDP,TAC ;SAVE TAC OVER PUTCHO PUSHJ PDP,PUTCHO ;SO ECHO IT. JRST TPOPJ ;RESTORE TAC AND RETURN -INTERNAL INBFUB ;FOR THE PTY +INTERNAL INBFUL ;FOR THE PTY INBFUL: MOVSI IOS,SYNC ;DONT COUNT SYNC COUNT ANDCAB IOS,DEVIOS(DDB) ; SINCE CHAR NOT STORED @@ -1785,7 +1785,7 @@ SIMFF1: PUSHJ PDP,DUPLX1 ;OUTPUT ECHO OF LF OR IDL CONTI: TLNN LINE,T35 TLO TAC,ECHSUP ;DONT OUTPUT TAB TO 33 PUSHJ PDP,TTIPUT ;PUT IN BUFFER AND MAYBE ECHO - TLEN LINE,XON+DISLIN ;IF PAPER TAPE,DISMISS + TLNE LINE,XON+DISLIN ;IF PAPER TAPE,DISMISS POPJ PDP,0 ; SO AS NOT TO OVERFILL OUTBUF ;ALSO, DISPLAY DOESNT WANT FILLER HRRI TAC,1 ;TWO IDLES @@ -2070,7 +2070,7 @@ SCNIN0: ADDI LINE,20 TLNE LINE,CTYLIN ;IS THIS CONSOLE TTY? MOVEM TAC,DEVNAM(DEVDAT);YES, SET NAME TO CTY. TLNE LINE,PTYLIN ;IS THIS A PTY? - PUSHJ PDP,PTMNND ;YES. SET IT INTO MONITOR MODE + PUSHJ PDP,PTMNMD ;YES. SET IT INTO MONITOR MODE JRST CPOPJ1 ;SUCCESSFUL RETURN. SCNEND: END diff --git a/src/segcon.mac b/src/segcon.mac new file mode 100644 index 0000000..271ac1b Binary files /dev/null and b/src/segcon.mac differ diff --git a/src/sysini.mac b/src/sysini.mac new file mode 100644 index 0000000..6c899ed Binary files /dev/null and b/src/sysini.mac differ diff --git a/src/sysmak.mac b/src/sysmak.mac new file mode 100644 index 0000000..b945c4f Binary files /dev/null and b/src/sysmak.mac differ diff --git a/src/tendmp.doc b/src/tendmp.doc new file mode 100644 index 0000000..02c5efd Binary files /dev/null and b/src/tendmp.doc differ diff --git a/src/tendmp.mac b/src/tendmp.mac new file mode 100644 index 0000000..e317210 --- /dev/null +++ b/src/tendmp.mac @@ -0,0 +1,469 @@ +TITLE TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 + IFNDEF REL, ;0 PAPER TAPE, 1 RELOCATABLE BINARY + IFNDEF MAGT, ;0 DTAPE, 1 MTAPE + IFN MAGT,< +; MAGTAPE UTILITY ROUTINE - COURTSEY DATALINE SYSTEMS J HANCOCK + > + IFNDEF MODE, ;0 IS TD10, 1 IS 551/136 + IFNDEF CORE, ;NUMBER OF 8K MEMORY BLOCKS + + IFE MODE, + IFN MODE, + +IFE REL,< +IFE MAGT, +IFN MAGT,> + UTC=210 + UTS=214 + DC=200 + DTC=320 + DTS=324 + +F=0 ;MUST BE 0. USED BY JRA'S +A=2 ;MISC TEMP. HOLDS 136 CONO INDEX IN UWAIT +B=1 ;TEMP. HOLDS BLOCK # COMPUTATION IN SEARCH +C=3 ;HOLDS BITS FOR DECTAPE CONO DURING I/O +D=4 ;HOLDS POINTERS FOR AOBJN'S THROUGH CORE +E=5 ;HOLDS COUNT OF WORDS IN CURRENT DT BLOCK +P=6 ;PC FOR JSP'S +CKS=7 ;HAD BEEN CHECKSUM IN MACDMP +FILN=10 ;NUMBER OF FILE IN DIRECTORY, 1 TO 26 OCTAL +BLKNO=11 ;BLOCK NUMBER SEARCHED FOR ON TAPE +WRITE=12 ;MULTI-STATE FLAG FOR DEFINING I/O OPERATION + ;1=D 0=K -1=ELSE +PNTR=13 ;POINTER TO BYTE TABLE IN DIRECTORY +CH=14 ;HOLDS 6BIT CHARACTER OF COMMAND, OR -1 +Q=15 ;ANOTHER JSP AC +G=16 ;RARELY USED VERY TEMP +CT=17 ;COUNT OF WORDS TO DUMP + +COMPTR=BEGR+377 ;COMMAND POINTER, IF SUPPLIED + LOZAD=BEGR-203 ;WHEN CORE IS CLEARED, IT + ;IS FROM 40 THRU LOZAD + LOW=20 ;FIRST LOCATION CONSIDERED FOR DUMPING + HIGH=BEGR-203 ;LAST LOCATION CONSIDERED FOR DUMPING + ;ZEROED AT BEG THESE DAYS + FOOF=BEGR-202 ;NEEDED FOR ZERO CORE SEARCH, ZEROED AT BEG1 +TAB=BEGR-201 ;FILE DIRECTORY +LINK=BEGR-1 ;0-17=LINK, 18-27=FBN, 29-35=WC +IFE REL,*20000>> + IFN MAGT,*20000> + IOWD LAST-BEGR+1,BEGR>> + ;INITIAL ENTRY IS AT BEGR, UNLESS A COMMAND POINTER IS +;SUPPLIED IN COMPTR. IN THAT CASE, ENTRY IS AT BEGR+1 + +BEGR: SETZM COMPTR ;CLEAR ANY JUNK IN COMMAND POINTER + CONO 635550 ;I/O RESET, ETC. +BEG: JSP P,CRR ;TYPE A CR-LF + MOVEI D,SPNT-2 ;PREPARE TO REMOVE AOBJN POINTERS +BEG1: SETZB A,FOOF ;CLEAR A TO PUT IN CORE, CLEAR + ;FOOF FOR THE NEXT ZERO CORE SEARCH + EXCH A,2(D) ;REMOVE HEADER LIST + AOBJN A,. ;COUNT THROUGH TO NEXT HEADER + MOVEI D,-1(A) ;ACCOUNT FOR OVERSHOOT IN AOBJN + JUMPN D,BEG1 ;IF WE DIDNT AOBJN A 0, GO FOR NEXT HDR + MOVE PNTR,[XWD 500,TAB-1] ;5 BIT BYTES IN DIRECTORY + SETZB CH,F +CRCH: SETOI WRITE,215 ;USED FOR CARRET TYPEOUT +TYI: SETZB C,HIGH ;HOPEFULLY HIGH IS TEMPORARY + SETZB B,E ;NAME INITIALIZING + TLOA B,400000 ;NULL NAME IS "@. " +SPACE: MOVEI E,C-1 ;EXTENSION INTO C + HRLI E,20600 ;FAKE OUT END TEST OF BYTE PTR +;STOP TAPE DRIVE +IFN MODE, +IFE MODE, +NEXT: ILDB A,@BEGR ;GIVES A 0 UNLESS COMMAND POINTER SUPPLIED + ;RH OF NEXT IS USED AS A CONSTANT +BELL: SETOI FILN,207 ;INITIALIZATION FOR SEARCH + SETZB BLKNO,CT ; " + SETZM LINK + JUMPN A,RCH ;JUMP IF COMMAND READ FROM CORE + CONSO TTY,40 ;TYPEIN FLAG? + JRST .-1 ;NO,WAIT + DATAI TTY,A ;GET TYPED IN CHARACTER + JSP P,TYO ;ECHO IT (WITH PARITY) +RCH: ANDI A,177 ;STRIP OFF PARITY + CAIN A,177 ;RUBOUT? + JRST BEGR ;YES. RESTART TENDMP + CAIE A,33 ;NEW ALTMODE? + CAIL A,175 ;OR 175 OR 176 ALTMODES? + JRST ALTTST ;YES, SOME ALTMODE. + CAIL A,140 ;LOWER CASE CHARACTER? + TRZ A,40 ;YES. CHANGE TO UPPER CASE + SUBI A,40 ;CONVERT TO SIXBIT + JUMPL A,CARRET ;ANY CONTROL CHARACTER + JUMPE A,SPACE ;CHAR WAS 40 +NEXT1: TLNE E,770000 ;NO MORE THAN SIX CHARS + IDPB A,E ;GOES INTO AC1 = B + JRST NEXT ;GET ANOTHER CHARACTER + + +;HERE ON JUMP BLOCK DURING LOADS, OR NUMBER>7 ALT +JBLK: +;STOP TAPE DRIVE +IFN MODE, +IFE MODE, + HRRM D,SADR ;SAVE STARTING ADDRESS + JUMPN CH,BEG ;IF NOT LOADGO COMMAND +SADR: JRST BEG ;CURRENT S.A. +LOADS: ;HERE TO LOAD TAPE TO CORE + MOVEI D,LOZAD+1 ;FIRST LOC NOT TO ZERO + SETZM 40 ;A "FEATURE" + MOVE C,[XWD 40,41] ;PREPARE TO CLEAR CORE. + TRNN CH,3 ;SKIP ON M,N NOT ON L,T,@ + BLT C,-1(D) ;ZERO CORE +LOAD: JSP Q,LODUMP ;START READING FILE. LODUMP PROCESSES + ;ONE HEADER AND ITS DATA + JRST LOAD ;IF OK, GET NEXT BLOCK.(IF NONE, + ;LODUMP RETURNS TO JBLK.) +DELE: SKIPN E,WRITE ;SKIP IF NOT IN THE K PHASE OF A D COMMAND. + ;OR A K COMMAND + ;ALSO, SET E =0, SO SEARCH HAPPENS IN RBLK +CLS1: AOJA WRITE,CLSTP ; 0 TO 1. GO DUMP OUT DIRECTORY. +ERR: SKIPA P,NEXT ;SET TO RETURN TO BEGR +CRR: SKIPA A,CRCH ;LIKE HRROI A,215 AND SKIPA + SKIPA A,BELL ;GET A BELL CHARACTER +TYO: SKIPN COMPTR ;DONT TYO IF NO TYI, UNLESS ERR + DATAO TTY,A ;TYPE OUT + CONSZ TTY,20 ;WAIT FOR TTY TO FINISH + JRST .-1 ;NOT YET + CAIE A,215 ;IF CR TYPED IN, + JUMPGE A,(P) ;OR SIGN BIT OF CHAR ON,(SEE CRR) + MOVEI A,12 ;APPEND A LINEFEED + JRST TYO ;GO TYPE LF + + ALTTST: TLNN B,4040 ;IF ALPHA CHARACTERS, DONT GET CH + LDB CH,E ;LAST CH BEFORE ALT, -40 + JUMPN CH,ALTMD ;IF CH NOT NULL, GOT PROCESS ALTMODE +CARRET: MOVSI FILN,-26 ;FILE NAME SPECIFIED. FIRST THING TO + ;DO IS LOOK IT UP IN DIRECTORY +LUP: SKIPN TAB+123(FILN) ;SEARCH FOR FREE FILE + SKIPE BLKNO,TAB+151(FILN) ;CHECK BOTH WORDS + TDZA BLKNO,BLKNO ;ENSURE CLEAR BLOCK NUMBER + HRRM FILN,FREE ;SAVE NUMBER OF A FREE FILE + HLLZ G,TAB+151(FILN) ;ONLY CHECK LEFT OF 2ND WD + CAMN B,TAB+123(FILN) ;SEARCH FOR TYPED-IN FILE + CAME C,G ;BOTH WORDS + AOBJN FILN,LUP ;NOT THIS ONE. KEEP LOOKING + JUMPL FILN,BEG69 ;IF FILE FOUND, JUMP + JUMPLE WRITE,ERR ;IF NOT FOUND, BETTER BE DUMP +FREE: MOVEI FILN,. ;DUMP & NOT FOUND, MAKE ENTRY WHERE FREE + ;(ADDRESS MODIFIED ABOVE) + SKIPE TAB+123(FILN) ;MAKE SURE HOLE AVAILABLE + JRST ERR ;NO FREE SLOTS + +BEG69: MOVEI FILN,1(FILN) ;FILN IS FILE #+1; CLR LH + JUMPL WRITE,LOADS ;ALL LOAD INSTRUCTIONS +IFE MAGT,< + SKIPN WRITE ;DELETE? (K COMMAND) + SETZB B,C ;YES, KILL FILE + MOVEM B,TAB+122(FILN) ;CLEAR IF DELE, ENTER IF NEW DUMP + HLLZM C,TAB+150(FILN) ;BOTH WORDS + ;FALL INTO DUMP ROUTINE + ;WHICH IS A NO-OP FOR K + + +;DUMP WRITES OUT CORE ONTO TAPE + +;DUMP THRU DUMP2-1 SETS UP POINTERS TO NON-ZERO CORE AREAS. THESE +;AOBJN POINTERS ARE CALLED "HEADERS", AND PRECEDE THE DATA WHEN +;THE TAPE IS WRITTEN. +;THE FIRST HEADER IS KEPT IN SPNT. SUCCESIVE HEADERS GO INTO THE FIRST +;ZERO WORD FOLLOWING THE BLOCK CORRESPONDING TO THE PREVIOUS HEADER. +;AFTER THE LAST NON-ZERO BLOCK IS (BY DEFINITION) A ZERO, WHICH +;TERMINATES THE HEADER LIST. THIS WORD MAY BE LOCATION FOOF (37176) IF +;CORE WAS FILLED UP TO THE BASE OF TENDMP. + +DUMP: ;HERE ON D,K. (BLKN)=0, FILN SET UP + MOVN A,[XWD HIGH-LOW-1,-LOW+1] ;COUNTER TO EXAMINE + ;CORE FOR BLOCKS OF 0 + MOVEI CKS,SPNT-1 ;FIRST HEADER GOES INTO SPNT +DMP1: SKIPN 1(A) ;FIND SOME NON-ZERO CORE + AOBJN A,.-1 ;ZERO. KEEP LOOKING. + MOVEM A,D ;SAVE ADR + SKIPN 1(A) ;FIND SOME ZERO CORE + SKIPE 2(A) ;DON'T MAKE NEW BLOCK FOR 1 ZERO + AOBJN A,.-2 ;NON-ZERO. KEEP LOOKING + SUB D,A ;GET -COUNT IN BOTH HALVES OF D + SUBI CT,-1(D) ;COUNT N WORDS DATA, 1 HDR + ADDI D,(A) ;GET F.A.-1 IN RH OF D + MOVEM D,1(CKS) ;SAVE HEADER + JUMPGE D,.+2 ;ON DATA GROUPS, + MOVE CKS,A ;GET THE HEADER + ;F.A.+W.C. IS ADR OF NEXT HEADER + ;I.E., FIRST 0 AFTER NON-ZERO BLOCK + JUMPL A,DMP1 ;LOOP IF MORE CORE + LSH CKS,2 ;SHIFT CORE SIZ FOR DIR + SKIPLE WRITE ;IF DUMPING, SET JOBREL + HRRM CKS,TAB+150(FILN) ;PUT IN DIR +DMP2: MOVEI D,SPNT-1 ;SET UP TO FOLLOW THE HEADERS. + MOVEI CT,1(CT) ;CLR LH, COUNT JBLK +DMP3: MOVE D,1(D) ;GET HEADER + JUMPGE D,THRU ;IF NULL HEADER FOUND + MOVEI Q,DMP3 ;Q:= DMP3 AS A RETURN AFTER AOBJN + > + +IFN MAGT,< + JRST ERR ;HOW DID WE GET HERE? DLS*** +;DUMP WRITES OUT CORE ONTO MAGNETIC TAPE +;DUMP WRITES OUT A CORE IMAGE ON MAGNETIC TAPE WITHOUT +;ZERO COMPRESSION. THE RECORDS ARE 200(OCTAL) WORDS IN LENGTH +;AND BEGIN WITH WORD ZERO. BEFORE STARTING THE TAPE IS REWOUND. +;IT ASSUMES MTA0, AT LEAST FOR NOW. + + MTC= 340 + MTS= 344 +DUMP: CONO MTC,1000 ;REWIND + CONSO MTS,300000 ;WAIT FOR BOT OR REWINDING + JRST .-1 + CONSO MTS,40 ;TRANSPORT READY? + JRST .-1 + SETZ A, +DUMP1: HRLI A,-200 ;WORDS PER BLOCK + CONO MTC,64100 ;START WRITE OPERATION +DUMP2: CONSO MTS,1 ;TD10 READY FOR DATA? + JRST .-1 + DATAO MTC,(A) ;SEND OUT DATA + AOBJN A,DUMP2 ;POINT TO NEXT WORD AND LOOP + CONO MTS,1 ;STOP THE DRIVE + CONSO MTS,100 ;WAIT TILL STOPPED + JRST .-1 + CONSZ MTS,464610 ;ANY ERRORS? + JRST ERR ;YES, GO RING BELL + AOSE [-CORE*20000/200+2] ;ALL CORE DUMPED? + JRST DUMP1 ;NO + CONO MTC,65100 ;WRITE END OF FILE + CONSO MTS,100 ;DONE? + JRST .-1 + CONO MTC,65100 + CONSO MTS,100 + JRST .-1 + JRST BEGR ;ALL DONE + > + + +LODUMP: JSP P,UWAIT + JFCL D ;IN/OUTPUT HEADER + JUMPGE D,JBLK ;IF JRST BLOCK READ. CANT HAPPEN ON WRITE +DMP5: JSP P,UWAIT + JFCL 1(D) ;IN/OUTPUT DATA WORD + AOBJN D,DMP5 ;COUNT DOWN THE HEADER + JRST (Q) ;END OF HEADER. TO DMP3 OR LOAD+1 +;WRITE: 1=D 0=K -1=ELSE + +THRU: JSP P,UWAIT ;WRITE OUT JRST BLOCK + JFCL SADR ;FROM LOC SADR +IFE MODE,< AOJL E,UWAIT1 ;FILL OUT BLOCK, TO GET CKSM OUT> + TRZA WRITE,-1 ;THEN SET WRITE TO 0, AND GO CLOBBER + ;ANY FURTHER BLOCKS WITH THIS FILN +UWAIT: AOJL E,UWAIT1 ;RETURN ADDR = (P) DATA ADDR = @(P) + ;E IS -WD COUNT IN BLOCK OR POSITIVE + ;BYTE POINTER FIRST TIME THRU + HLRZ BLKNO,LINK ;SET TO FOLLOW LINK +MNLUP0: JUMPGE WRITE,MNLUP ;WRITING OR DELETING + JUMPN BLKNO,RBLK +MNLUP: AOSA BLKNO ;NEXT BLOCK IN THE DIRECTORY +MNLUP1: DPB B,PNTR ;FOR DELETE, 0 FILE NAME AND NUMBER + ILDB A,PNTR ;SEARCH FILE DIR + CAIN A,37 + JRST DELE ;END OF TAB MARKER, DELE GOES TO + ;CLSTP ON A "D" TO DUMP DIRECTORY + TLO A,-1(WRITE) ;0 ON D, -1 ON K OR K PHASE OF D + CAIE FILN,(A) ;IS THIS BLOCK ASSIGNED TO CURRENT FILE? + JUMPN A,MNLUP ;OR MAYBE FREE? JUMP IF IN USE BY + ;ANOTHER FILE. + DPB FILN,PNTR ;SMASH AWAY WRITE BLOCK ON D OR K. BUT + ;SEE MNLUP1 ON K. + JUMPE WRITE,MNLUP1 ;K COMMAND + SKIPN C,LINK ;HAS LINK BEEN SET UP? + DPB BLKNO,[XWD 101200,LINK] ;NO. PUT BLOCK IN AS FIRST BLK NO + HRLM BLKNO,LINK ;PUT BLOCK IN AS LINK + JUMPE C,MNLUP0 ;JUMP IF THIS IS THE FIRST PASS THRU DIRECTORY + HLRZ BLKNO,C ;GET LINKED BLOCK CHOSEN BEFORE + MOVEI C,177 ;PUT IN A WORD COUNT FOR PIP + IORM C,LINK ;AND PUT ALL THAT INTO LINK WORD + SUBI CT,177 ;DECREMENT WORDS LEFT TO GO + + +;RBLK SEARCHES FOR THE BLOCK IN BLKNO, ENTERS IT GOING FORWARD, +;AND THEN READS INTO CORE, DUMPS CORE, OR COMPARES CORE AS +;DETERMINED BY CONTENTS OF WRITE. + +RBLK: HRRO C,TAPENO ;CURRENT TAPE NO. + ;SET LH TO PREPARE FOR JUMPN IN DELE +IFE MODE,< + TRO B,-1 ;ENSURE GOING FORWARD WHEN FIRST SEARCH + CONSO DTC,300000 ;IS A DIRECTION ASSERTED? + TRO C,210000 ;NO. GO FORWARD +RB1: TRNN B,400001 ;DECIDE WHETHER TO TURN AROUND + TRO C,300000 ;TURN AROUND +RBG: CONO DTC,20200(C) ;ISSUE THE COMMAND TO TD10. + ;200=SEARCH, 300=READ, 700=WRITE. +UWAIT1: CONSZ DTS,672700 ;ANY ERRORS? + JRST ERR ;YES. GO DING AND THEN TYI + CONSO DTS,1 ;DATA READY? + JRST .-3 ;NO. GO WAIT SOME MORE + JUMPL E,INOUT(WRITE) ;IF IN MIDST OF A DT BLOCK, DISPATCH + DATAI DTC,B ;NO. SEARCHING. GET BLOCK NO. + TRZ C,310000 ;CLOBBER DIRECTION BITS IN CONO + SUBI B,(BLKNO) ;COMPARE WITH DESIRED BLOCK + CONSZ DTC,100000 ;COMPLEMENT DECISION IF GOING REVERSE + TRC B,-2 ;BIT 35 IS FOR TURNAROUND SPACE. +> + +IFN MODE,< + SETOB A,B ;GO FORWARD, SET DC FOR SEARCH + CONSZ UTS,40 ;IS CHECKSUM BEING WRITTEN? + JRST .-1 ;WAIT +RB1: TRNN B,400001 ;DECIDE WHETHER TO TURN AROUND + TRCA C,10000 ;CHANGE DIRECTION AND DELAY + CONSO UTC,200000 ;UNIT SELECTED? + TRO C,2000 ;INVOKE STARTUP DELAY +RBG: CONO UTC,220200(C) ;COMMAND TO THE 551. + ;200=SEARCH, 300=READ, 700=WRITE. + CONO DC,4011(A) ;COMMAND TO THE 136. +UWAIT1: CONSZ UTS,6 ;ANY ERRORS? + JRST ERR ;YES. GO DING AND THEN TYI + CONSO DC,1000 ;DATA READY? + JRST .-3 ;NO. WAIT SOME MORE + JUMPL E,INOUT(WRITE) ;IF IN MIDST OF A DT BLOCK, DISPATCH + DATAI DC,B ;NO. SEARCHING. GET BLOCK NUMBER + TRZ C,2000 ;DONT DELAY ANY MORE + SUBI B,(BLKNO) ;COMPARE WITH DESIRED BLOCK + TRNE C,10000 ;COMPLEMENT IF GOING REVERSE + TRC B,-2 ;BIT 35 IS FOR TURNAROUND SPACE. +> + JUMPN B,RB1 ;JUMP IF NOT GOING FORWARD INTO (BLKNO) + MOVNI E,200 ;WORDS PER BLOCK + MOVEM P,F ;SAVE RETURN IN AC0 + TRO C,100 ;READ COMMAND, MAYBE + JUMPLE WRITE,RB2 ;JUMP IF READ + TRO C,400 ;CHANGE TO WRITE COMMAND +IFN MODE, + JUMPG CT,.+3 + HRRZS LINK ;IF LAST BLK, KILL LINK + DPB E,PNTR ;AND THE DIR BYTE _ 0 +RB2: CAIE BLKNO,^D100 ;IF NOT DIRECTORY BLOCK + MOVEI P,.+2 ;SETUP NEW RETURN + JRST RBG + AOJ E,LINK ;IN/OUTPUT LINK + JRA P,UWAIT1 ;RESTORE CALLER ADR + ;AND PROCESS DATA WORDS + +IFE MODE,< + DATAI DTC,@(P) ;READ COMMANDS. GET WORD TO CORE +INOUT: JRST UWAIT2 ;INOUT-1 TO INOUT +1 ARE DISPATCHED TO. + DATAO DTC,@(P) ;OUTPUT TO TAPE +UWAIT2: AOJN E,UWAIT3 ;WAS THAT THE LAST WORD IN THE DT BLOCK? + CONO DTS,1 ;YES. GIVE FUNCTION STOP TO TD10 + CONSO DTS,100000 ;AND WAIT FOR CHECKSUM TO BE DONE + JRST .-1 ;NOT YET. WAIT +UWAIT3: SOJA E,0(P) ;DONE. COMPENSATE FOR THE AOJN ABOVE, AND + ;RETURN TO CALLER OF UWAIT OR RBLK +> + +IFN MODE,< + DATAI DC,@(P) ;READ COMMANDS. GET WORD TO CORE +INOUT: JRST UWAIT2 ;INOUT-1 THRU INOUT+1 ARE DISPATCHED TO. + DATAO DC,@(P) ;OUTPUT TO TAPE +UWAIT2: JRST 0(P) ;RETURN TO CALLER OF UWAIT OR RBLK. +> + +ALTMD: MOVEI A,"$" + JSP P,TYO ;ALTMODE IS PRINTED AS "$" + +IFE MAGT,< + CAIE CH,"K"-40 ;FOR K, WRITE := 0 + CAIN CH,"D"-40 ;FOR D, WRITE :=1 + AOJLE WRITE,.-1 ;COUNT (WRITE) + > + +IFN MAGT,< + CAIN CH,"D"-40 ;FOR D, WRITE :=1 + AOJLE WRITE,.-1 ;COUNT (WRITE) + JUMPG WRITE,DUMP ;D MEANS GO DUMP ON MAG TAPE + > + + CAIN CH,"G"-40 ;GO TO PROGRAM? + JRST @SADR ;YES. JUMP OUT + CAIN CH,"F"-40 ;FILE DIR PRINT? + JRST FDIR ;YES. PRINT FILE DIR OF THIS TAPE + CAIN CH,"Z"-40 ;ZERO DIRECTORY? + JRST ZDIR ;DISPATCH + CAILE CH,27 ;SKIP IF OCTAL NUMBER + JRST TYI ;NO. GO PROCESS FILE NAME + LSH B,3 ;CONVERT SIXBIT TO OCTAL + LSHC F,3 ;F+1=B + JUMPN B,.-2 ;MAY BE MORE THAN 1 DIGIT (START ADR) + CAILE F,7 ;SKIP IF ONE DIGIT + JRA D,JBLK ;D:=SADR. DISPATCH TO JBLK WHICH SAVES SADR. +OPNTP: ;SHIFT UNIT NUMBER LEFT FOR CONO +IFE MODE, +IFN MODE, + HRRM F,TAPENO ;SAVE IN CORE +CLSTP: MOVEI BLKNO,^D100 ;BLK NO OF FILE DIR + SETZI PNTR,0 ;DONT CLOBBER DIRECTORY BYTE + JSP P,RBLK ;MOVE TO BLOCK 100 + JFCL TAB+200(E) ;READ OR WRITE DIR TAB AS DETERMINED BY WRITE + AOJL E,UWAIT1 ;COUNT THE 200 WORDS + JRST BEG ;GO ASK FOR NEXT COMMAND + +ZDIR: MOVE A,[XWD FOOF,TAB] ;FOOF IS CLEAR + BLT A,TAB+176 ;CLEAR DIRECTORY, EXCEPT LAST WORD FOR ID + MOVSI A,(36B4+36B9) ;RESERVE BLOCKS 1 & 2 + MOVEM A,TAB ;IN DIRECTORY + MOVSI A,(36B9) + MOVEM A,TAB+16 ;BLK 100 (DIR) IS RESERVED TOO + HRLOI A,7 ;AND BLOCKS >1100 ARE EOT + MOVEM A,TAB+122 ;END OF BYTE TAB + AOJA WRITE,CLS1 ;SET WRITE TO OUTPUT + ;AND DUMP BLK 100. + FDIR: MOVNI FILN,26 ;26 FILES (OCTAL) +FD2: JSP P,CRR ;CR-LF +FD3: SKIPN C,TAB+123+26(FILN) ;FIRST WORD OF NAME. IS IT BLANK? + AOJA C,FD1 ;YES. SET C=1 AND LOOP + JSP G,SIXBP ;PRINT FIRST WORD AND A SPACE + HLLZ C,TAB+151+26(FILN) ;SECOND WORD OF FILE NAME + JSP G,SIXBP ;PRINT AND CLEAR C +FD1: AOJL FILN,FD2(C) ;CAN JUMP TO FD2 OR FD3. COUNT FILES. + JRST BEG ;ALL FILES PRINTED OR BLANK. RETURN. + +SIXBP: MOVEI B,7 ;SIXBP PRINTS C(C) IN 6BIT + ;AND ADDS A TRAILING SPACE + ;AND LEAVES (C)=0 + +TAPENO: ;USE ADR AS TEMP FOR CURRENT UNIT +SIXBP1: SETZI A,.-. ;CLEAR A + LSHC A,6 + ADDI A,40 ;SIXBIT TO ASCII + JSP P,TYO ;TYPE OUT CHARACTER + SOJG B,SIXBP1 ;LOOP IF MORE CHARACTERS + JRST 0(G) ;RETURN + +SPNT: 0 ;POINTER TO HEADERS IN CORE. + + LIT + + +IFN MAGT,< +SLOP: MOVE .+3 + MOVEM COMPTR + JRST BEGR+1 + XWD 440700,.+1 + BYTE (7) "0",33,177 +LAST: JRST SLOP + > +IFE MAGT,< + SLOP=COMPTR-17-. ;THIS MANY WORDS BEFORE RESERVED AREA + ;FOR COMMAND STRINGS. +;!!!!! NOTE: ABOVE PARAMETER MUST COME OUT POSITIVE IN +; ORDER TO MEET THE DOCUMENTATION OF RESERVED COMMAND STRING AREA. +; +; THIS MEANS ANY CODE ADDED MUST BE COMPENSATED FOR BY +; A CORRESPONDING TIGHTENING SOMEWHERE. GOOD LUCK. +; TENDMP IS VERY TIGHT ALREADY. + > + + END BEGR + \ No newline at end of file