--- /dev/null
+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
+
+\fINTERNAL 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
+>
+\f
+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
+
+\f
+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
+
+\f
+
+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
+
+\f
+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
+
+\f
+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
+
+\f
+;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 /)]<!/ ;12,8/4-7
+ ASCII /DEFG/ ;12/4-7
+ ASCII /*[>&/ ;11,8/4-7
+ ASCII /("#%/ ;0,8/4-7
+ ASCII /@^'\/ ;8/4-7
+
+
+ END
+\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\ No newline at end of file
POPJ PDP, ;MAY CHOOSE TO SET REQUEST TO MORE\r
;NEG. VALUE IF MORE THEN ON JOB CAN\r
;USE DEVICE AT ONCE\r
-\f\r
-INTERNAL NXTJOB\r
+\fINTERNAL NXTJOB\r
INTERNAL FTTRPSET,FTDISK\r
EXTERNAL JOB,TIMEF,JBTSTS,JOBMAX,JOBN,PJBSTS,CPOPJ,CHKSHF\r
ENTRY XCKCSS\r
JRST NXT8 ;YES, IT IS RUNABLE AND IS IN THIS QUEUE\r
NXT6: SOJLE C,NXT3 ;NO IT IS NOT, SCANNED ALL JOBS YET?\r
AOJA ITEM,NXT5 ;NO, LOOK AT NEXT JOB\r
-\f\r
-;HERE IF NO JOBS FOUND TO RUN(Q=-1)\r
+\f;HERE IF NO JOBS FOUND TO RUN(Q=-1)\r
\r
NXT7: MOVEI C,JOBN ;SCAN ALL JOBS INCLUDING POSSIBLY NULL JOB\r
MOVE ITEM,JOB ;STARTING WITH LAST JOB TO RUN\r
MOVE T,QUANTS(Q) ;SET QUANTUM RUNNING TIME FOR QUEUE\r
HRRM T,JBTSTS(ITEM) ;WHICH JOB HAS JUST LEFT\r
POPJ PDP, ;RETURN\r
-\f\r
-INTERNAL FTCHECK,FTMONP\r
+\r
+\fINTERNAL FTCHECK,FTMONP\r
\r
IFN FTCHECK+FTMONP,<\r
EXTERNAL JOBP,AVALTB,REQTAB,QUANTS\r
A'Q=LOC\r
LOC=LOC+1\r
>\r
-\f\r
+\r
CODES\r
-\f\r
-IFE FTCHECK+FTMONP,<\r
+\fIFE FTCHECK+FTMONP,<\r
;LAST JOB SCHEDULED FOR EACH QUEUE\r
\r
JOBP: REPEAT NQUEUE,< EXP 1>\r
INTERNAL REQTAB\r
\r
REQTAB: QUEUES\r
-\f\r
-;QUANTUM RUNNING TIME FOR EACH QUEUE IN JIFFIES(CLOCK TICKS)\r
+\r
+\f;QUANTUM RUNNING TIME FOR EACH QUEUE IN JIFFIES(CLOCK TICKS)\r
\r
DEFINE X(A,B)\r
< A'QUNT: EXP 2\r
INTERNAL A'QUNT\r
>\r
+\r
QUANTS: QUEUES\r
>\r
END,\r
;FOR SCHEDULING JOBS AND ERROR HANDLING THAT THE USER\r
;IS NOT ENABLED TO HANDLE HIMSELF\r
\r
+\r
EXTERNAL TIME,TIMEF,CLKFLG,REQCLK,APRCHL,APRPC,UPTIME\r
EXTERNAL JOBDAT,JOBTPC,JOBCNI,JOBAPR,APRERR,SCHEDF\r
\r
INTERNAL FTTTYSER ;THIS ROUTINE MAY BE ASSEMBLED TO WORD EITHER\r
; THE OLD SCNSER OR THE NEW TTYSER.\r
\r
+\r
INTERNAL FTCHECK,FTMONP\r
\r
IFN FTCHECK+FTMONP,<\r
\r
CLOCK: POINT 36,CIPWTM,35 ;BYTE POINTER TO CLOCK REQ QUEUE\r
>\r
-\f\r
- INTERN APRINT\r
+\f INTERN APRINT\r
\r
APRINT: JRST APRPAR ;ALWAYS CHECK APR AND PI DEVICES\r
JRST . ;CHECK OTHER DEVICES\r
TLNE TAC,USRMOD ;IS PC FROM USER MODE?\r
JRST APRER4 ;YES, GO TRAP TO HIM\r
JRST APRER2 ;NO. GO CHECK IN CASE ALSO A SERIOUS ERROR\r
-\f\r
-;OTHER APR INTERRUPTS BESIDES CLOCK\r
+\f;OTHER APR INTERRUPTS BESIDES CLOCK\r
\r
APRER: EXCH TAC,APRCHL ;SAVE TAC, GET PC\r
TLNE TAC,USRMOD ;IS PC IN USER MODE?\r
CONO APR,430110+APRCHN ;CLEAR ALL ERROR FLAGS WHICH CAN CAUSE INTERRUPTS\r
; EXCEPT CLOCK FLAG(ELSE LOSE TIME OF DAY)\r
JEN @APRCHL ;DISMISS INTERRUPT\r
-\f\r
-APRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE?\r
+\fAPRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE?\r
JRST APRER3 ;NO. IGNORE EXEC OVERFLOW (MUST BE FOV OR AROVF\r
MOVEM TAC,APRPC ;STORE ERROR PC FOR CLK CHANNEL\r
CONI APR,APRERR ;STORE ERROR FLAGS\r
>\r
JRST APRER3 ;NO,MUST BE UUO LEVEL(OR USER MODE AND\r
; MEMORY DROPPED OUT)\r
-\f\r
-SUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK)\r
+\fSUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK)\r
\r
;THIS ROUTINE RUNS ON THE LOWEST PRIORITY PI CHANNEL AND AT UUO LEVEL\r
;TO CAUSE AN INTERRUPT ON CLK CHANNEL:\r
SKIPE TAC,APRERR ;IT THIS AN ERROR INTERRUPT?\r
PUSHJ PDP,APRILM ;YES, GO PROCESS ERROR, APRILM WILL CLEAR APRERR\r
; FLAG IMMEDIATELY\r
-\f\r
-EXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD\r
-EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JDB,PMONTB\r
+\fEXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD\r
+EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JOB,PMONTB\r
\r
RSCHED: SKIPN TIMEF ;HAS CLOCK GONE OFF SINCE LAST CALL?\r
JRST CIP6 ;NO, JUST RESCHEDULE\r
LDB TAC,PMONTB\r
CAMGE TAC,TAC1 ;END OF MONTH?\r
JRST CIP3 ;YES.\r
-\f\r
-;PROCESS TIMING REQUESTS STORED IN QUEUE\r
+\f;PROCESS TIMING REQUESTS STORED IN QUEUE\r
\r
CIP2: HRRZ STOR,CLOCK ;GET END OF LIST\r
CIP4: CAIN STOR,CIPWTM1 ;END YET?\r
SETZM SCHEDF ;CLEAR FORCED SCHEDULING FLAG\r
CAMN ITEM,JOB ;IS NEXT JOB SAME AS LAST ONE?\r
JRST CIP8 ;YES, JUST RESTORE ACS AND DISMISS\r
-\f\r
-;DIFFERENT JOB. SAVE SOFTWARE STATE(HARDWARE ALREADY SAVED)\r
+\f;DIFFERENT JOB. SAVE SOFTWARE STATE(HARDWARE ALREADY SAVED)\r
\r
EXTERNAL JOB,JOBDAT,JOBPRT,USRPRT,USRHCU,JOBJDA\r
\r
; CHANNEL LOCATIONS (JOBJDA+1..,JOBJDA+17),\r
ADD JA,T1 ;RELOCATE TO USER AREA\r
BLT T,JOBJDA(JA) ; STOP WITH USER CHANNEL 0-1+C(USRHCU)\r
-\f\r
-;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE\r
+\f;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE\r
\r
INTERNAL NULJOB,NULADR\r
EXTERNAL JOB,JBTDAT,JOBDAT,USRPRT,JOBPRT\r
HALT .+1\r
>\r
SETZB 0,NULERR ;CLEAR AC 0 USED FOR USUAL MONITORING\r
-\f\r
; CLEAR FLAG SAYING ERROR IN NULL JOB\r
; OF NULL TIME INTERVAL\r
; LOC JOBDAT (LOCATION OF NULL JOB DATA AREA) TO 0\r
; CATCH THEM NEXT CLK INTERRUPT\r
MOVE 1,[AOJA 0,1] ;INSTR. TO AC1\r
JRST 11,1 ;DISMISS IF INTERUPT IN PROGRESS.\r
-\f\r
-;ROUTINE TO SET HARDWARE AND SOFTWARE RELOCATION INFORMATION FOR CURRENT USER\r
+\f;ROUTINE TO SET HARDWARE AND SOFTWARE RELOCATION INFORMATION FOR CURRENT USER\r
;CALLED FROM:\r
; CLOCK ROUTINE WHEN NEW USER IS DIRRERENT FROM OLD USER\r
; CORE ROUTINE WHEN CORE REASSIGNED FOR CURRENT USER\r
; OPTION DOES NOT COME WITH PANEL LIGHTS\r
; SO NOT STORE 0 FOR NULL JOB SO CAN SEE\r
; LAST JOB TO RUN IN LOC 33\r
-\f\r
-SETHRD: DATAO APR,PROG ;SET APR HARDWARE FOR RELOCATION AND PROTECTION\r
+\fSETHRD: DATAO APR,PROG ;SET APR HARDWARE FOR RELOCATION AND PROTECTION\r
; FOR LOW(AND HIGH SEGS)\r
SKIPN PROG,JOBADR ;RESTORE PROG TO XWD PROT,RELOC FOR JUST LOW SEG\r
; (IS THERE ONE)?\r
; FOV(PDP-10 ONLY) AND AR OVF SEPARATELY\r
CONO PI,PION ;ENABLE PI'S AGAIN\r
POPJ PDP,\r
-\f\r
-SUBTTL RUNCSS - RUN CONTROL(STATRING AND STOPPING OF JOBS)\r
+\fSUBTTL RUNCSS - RUN CONTROL(STATRING AND STOPPING OF JOBS)\r
\r
;RUN CONTROL IS A COLLECTION OF ROUTINES WHICH\r
;SET AND CLEAR BITS IN THE JOB STATUS WORDS OF\r
SOJG TAC,-1 ;NO,KEEP LOOKING,FINISHED(TRUE IF THIS THE ONLY JOB\r
MOVEM TAC,HIGHJB ;YES,STORE NEW HIGHEST JOB NUMBER ASSIGNED\r
JRST ESTOP ;GO SET ERROR BIT\r
-\f\r
-;ROUTINE TO STOP JOB, SET ERROR BIT AND PRINT MESSAGE\r
+\f;ROUTINE TO STOP JOB, SET ERROR BIT AND PRINT MESSAGE\r
;THEM ADD ^TC<CRLF><CRLF><PERIOD>\r
;CALL: MOVEI TAC,ADR. OF MESSAGE\r
; PUSHJ PDP,PHOLD\r
MOVSI TAC,637163 ;FIND SYS DDB\r
PUSHJ PDP,DEVSRC ;SYSTEM ERROR IF NOT FOUND\r
JSP DAT,ERROR\r
-\r
PUSHJ PDP,RELEA9 ;YES, RELEASE SYSTEM TAPE WITHOUT WAITING\r
-\f\r
-;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED\r
+\f;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED\r
;CALL:\r
; MOVE ITEM, JOB NUMBER\r
; PUSHJ PDP, STOP1\r
JRST STOP2 ;NO\r
SETOM SCHEDF ;YES, FORCE RESCHEDULING EVEN IF JOB IN EXEC MODE\r
JRST STOP2 ;YES, MAKE CLK RESCHEDULE ANOTHER JOB\r
-\f\r
-;ROUTINE TO REQUE JOB WHICH HAS HAD A COMMAND TYPED\r
+\f;ROUTINE TO REQUE JOB WHICH HAS HAD A COMMAND TYPED\r
;WHICH NEEDS CORE AND THE CORE IMAGE IS ON THE DISK.\r
;OR IS IN CORE AND HAS ACTIVE DEVICES.\r
;CALLED FROM COMMAND DECODER\r
IFN FTSWAP,<\r
TLNN TAC,CMWB\r
PUSHJ PDP,REQUE\r
-\r
>\r
POPJ PDP,\r
\r
IFN FTSWAP,<INTERNAL NOCORQ\r
EXTERNAL NULQ\r
\r
-NOCORQ: MOVEI TAC,NUL1 ;NO JOB NO. OR NO CORE QUEUE\r
+NOCORQ: MOVEI TAC,NULQ ;NO JOB NO. OR NO CORE QUEUE\r
DPB TAC,PJBSTS\r
JRST REQUE\r
>\r
-\f\r
-;ROUTINE TO SETUP MONITOR JOB TO RUN LATER AT UUO LEVEL\r
+\f;ROUTINE TO SETUP MONITOR JOB TO RUN LATER AT UUO LEVEL\r
;CALLED BY COMMANDS WHICH MAY OR MAY NOT NEED TO\r
;RUN MONITOR JOB DEPENDING ON WHETHER JOB HAS CORE(KJOB,IJOB)\r
;TTY WILL REMAIN IN MONITOR MODE\r
PUSH PDP,TAC1 ;SAVE STOP ADDRESS\r
JRST (TAC) ;RETURN AND DO MONITOR JOB\r
; WITH TT DDB,OUTPUT BYTE POINTER, AND JOB NO.\r
-\f\r
-;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN\r
+\f;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN\r
;WITH SPECIFIED STARTING ADDRESS INCLUDING PC FLAGS\r
;CALLED ONLY WHEN JOB IN CORE AND AFTER JOB HAS BEEN\r
;SAFELY STOPPED IN ONE OF 3 STATES:\r
\r
INTERNAL WAKE\r
\r
-EXTERNAL PJSTS,RNQ,SLPQ\r
+EXTERNAL PJBSTS,RNQ,SLPQ\r
\r
WAKE: MOVEI TAC1,RNQ ;RUN QUEUE CODE\r
MOVE ITEM,TAC ;JOB NO.\r
; (CONTROL C, START CAN GET JOB OUT SLEEP)\r
JRST SETR2\r
>\r
-\f\r
-;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE\r
+\f;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE\r
;JOB NEVER GETS ONE DEVICE AND WAITS FOR SECOND, SINCE TYPING\r
;CONTROL C WOULD NEVER FINISH WITH FIRST DEVICE\r
;CALL PUSHJ PDP,GETDCXX\r
SOSL DCREQ ;NO, REDUCE DATA CONTROL REQUEST\r
SETOM DCAVAL ;SET AVAIL., SOME OTHER JOB WAITING FOR IT\r
JRST GETWT ;TRY AGAIN\r
-\f\r
-;ROUTINE TO WAIT FOR A SHARABLE DEVICE\r
+\f;ROUTINE TO WAIT FOR A SHARABLE DEVICE\r
;CALLED AT UUO LEVEL ONLY BY DEVICE SERVICE ROUTINES\r
;CALL: AOSLE XXREQ ;ADD 1 TO SHARABLE DEVICE REQUEST COUNT\r
; ;IS DEVICE AVAILABLE?\r
\r
PJBS1: POINT JWSIZ,JBTSTS(AC3),JWPOS ;BYTE POINTER TO JOB STATUS\r
; WORD WAIT QUEUE CODE\r
-\f\r
-;ROUTINE TO SET JOB TO RUN AFTER IT HAS BEEN STOPPED\r
+\f;ROUTINE TO SET JOB TO RUN AFTER IT HAS BEEN STOPPED\r
;BECAUSE IT HAD TO WAIT FOR IO TO COMPLETE FOR SOME DEVICE\r
;EACH SERVICE ROUTINE WILL AT INTERRUPT LEVEL\r
;CHECK EACH TIME IT FINISHED A TASK(RUNFFERFUL)\r
INTERNAL FTSWAP\r
IFN FTSWAP,<\r
EXTERN QJOB,JBTSTS\r
- MOVSI QJOB,JBTSTS\r
MOVSI TAC1,JRQ ;SET JOB TO BE REQUEUED AT NEXT CLOCK TICK\r
TDNN TAC1,JBTSTS(TAC) ;IS REQUE BIT ALREADY ON?\r
AOS QJOB ;NO, INCREMENT COUNT ONCE FOR EACH JOB\r
>\r
NULTST: SKIPE JOB ;IS NULL JOB RUNNING?\r
POPJ PDP, ;NO LET OTHER JOB RUN TILL SCHEDULER IS TRAPPED TO\r
-\f\r
-;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE\r
+\f;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE\r
;CALLED AT ANY LEVEL\r
;CALL: PUSHJ PDP,STOP2\r
; RETURN IMMEDIATELY EXCEPT IF AT UUO LEVEL\r
CONO PI,PICLK ;TURN PI BACK ON AND REQUESST INTERRUPT TO\r
; CLK PI CHANNEL(LOWEST PRIORITY CHANNEL)\r
POPJ PDP, ;INTERRUPT IMMEDIATELY IF AT UUO LEVEL\r
-\f\r
-;ROUTINE TO WAIT TILL DEVICE CATCHES UP WITH USER AND BECOMES INCTIVE\r
+\f;ROUTINE TO WAIT TILL DEVICE CATCHES UP WITH USER AND BECOMES INCTIVE\r
,CALLING SEQUENCE\r
, PUSHJ PDP, WAIT1\r
, EXIT ALWAYS RETURN HERE\r
POPJ PDP, ;RETURN\r
PUSHJ PDP,WSYNC ;WAIT\r
JRST WAIT1\r
-\f\r
-;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE\r
+\f;WSYNC IS CALLED TO WAIT UNTIL SETIOD IS CALLED BY INTERRUPT SERVICE ROUTINE\r
;IE UNTIL CURRENT BUFFER ACTIVITY IS COMPLETE\r
;CALLED ONLY FROM UUO LEVEL\r
;CALL: MOVE DEVDAT,ADR. OF DEVICE DATA BLOCK\r
--- /dev/null
+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
--- /dev/null
+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
;IF A COMMAND FUNCTION CANNOT DO THIS, IT MUST JUST SET\r
;THE JOB TO RUNABLE STATUS AND RETURN IMMEDIATELY\r
;OR DELAY THE COMMAND FOR LATER EXECUTION\r
-\f\r
-INTERNAL COMMAND\r
+\fINTERNAL COMMAND\r
INTERNAL FTLOGIN,FTSWAP,FTTIME\r
EXTERNAL COMCNT,TTYCOM,JBTSTS,JOBMAX,JBTDAT,JBTADR,JOBHCU\r
EXTERNAL CONFIG,HIGHJB\r
COMNEQ: AOBJN T,COMLP ;NO, KEEP LOOKING\r
CAIN T4,1 ;DID ONE AND ONLY ONE COMMAND MATCH?\r
MOVE T,T3 ;YES, GET ITS INDEX\r
-\f\r
-COMFND: MOVE TAC1,DISP(T) ;GET DISPATCH TABLE ENTRY,\r
+\fCOMFND: MOVE TAC1,DISP(T) ;GET DISPATCH TABLE ENTRY,\r
PUSH PDP,TAC1 ;SAVE RH(DISPATCH ADR,+BITS)\r
MOVE T,JBTSTS(ITEM) ;JOB STATUS WORD FOR THIS JOB\r
IFN FTLOGIN,<\r
>\r
CAMLE ITEM,HIGHJB ;HIGHEST JOB NUMBER ASSIGNED?\r
MOVEM ITEM,HIGHJB ;YES,SAVE IT FOR SCHEDULER SCAN OF JOBS\r
-\f\r
-CHKRUN: TLNE T,RUN ;RUN BIT ON IN JOB STATUS?\r
+\fCHKRUN: TLNE T,RUN ;RUN BIT ON IN JOB STATUS?\r
TLNN TAC1,NORUN ;YES, DOES THIS COMMAND REQUIRE A JOB?\r
JRST CHKACT ;NO\r
JSP TAC,COMER ;YES.\r
TLNN TAC1,INCOR ;IS THIS TRUE?\r
CHKDLY: HRRI TAC1,DLYCM1 ;NO, JUST DELAY COMMAND UNTIL SWAP OUT OR IN IS FINISHED\r
JRST COMDIS ;AND DISPATCH TO DELAY COMMAND\r
+>\r
CHKCO2: TLNE TAC1,NOACT ;CAN COMMAND BE PERFORMED WITH ACTIVE DEVICES?\r
PUSHJ PDP,RUNCHK ;NO, RETURN IF JOB STOPPED AND NO ACTIVE DEVICES\r
CHKCO1: TLNE TAC1,NOCORE ;DOES THIS COMMAND NEED CORE?\r
JSP TAC,COMER ;NO, PRINT "NO CORE ASSIGNED"\r
ASCIZ /NO CORE ASSIGNED\r
/\r
-\f\r
-CHKXPN: TLNN TAC1,PLSXPN ;DOES THIS COMMAND NEED CORE TO BE EXPANDED?\r
+\fCHKXPN: TLNN TAC1,PLSXPN ;DOES THIS COMMAND NEED CORE TO BE EXPANDED?\r
JRST COMGO ;NO\r
HLRE IOS,JOBHCU(JDAT) ;YES, IS CORE STILL COMPRESSED(SAVE DID NOT GO\r
; TO COMPLETION)\r
\r
COMDIS: MOVEI IOS,0 ;CLEAR IOS FOR SETTING DISPATCH ADDRESSES\r
PUSHJ PDP,(TAC1) ;DISPATCH TO COMMAND SETUP ROUTINE.\r
-\f\r
-;RETURN FROM COMMAND SETUP ROUTINE\r
+\f;RETURN FROM COMMAND SETUP ROUTINE\r
\r
COMRET: POP PDP,T1 ;RESTORE COMMAND FLAGS\r
POP PDP,DEVDAT ;RESTORE TTY DDB ADDRESS.\r
PUSHJ PDP,PRSPC\r
PUSHJ PDP,DAYTM1\r
>\r
-\f\r
-PCRLF: TLNE T1,ERRFLG ;DID AN ERROR OCCUR?\r
+\fPCRLF: TLNE T1,ERRFLG ;DID AN ERROR OCCUR?\r
PUSHJ PDP,PRQM ;YES. APPEND ?\r
TLNN T1,NOCRLF ;SUPRESS CRLF?\r
PUSHJ PDP,CRLF ;NO\r
JUMPN TEM,SKPBR2 ;LOOK FURTHER FOR BREAK\r
JRST TPOPJ ;UNLESS NO MORE CHARS\r
>\r
-\f\r
-;TABLE OF CONSOLE COMMANDS\r
+\f;TABLE OF CONSOLE COMMANDS\r
\r
INTERNAL FTATTACH,FTTIME,FTTALK,FTEXAMINE,FTLOGIN,FTREASSIGN\r
INTERNAL FTFINISH,FTCCL\r
;T TAKEN ABOVE BY 'PLSXPN' BIT\r
\r
ERRFLG=1 ;COMMAND ERROR\r
-\f\r
-DEFINE NAMES<\r
+\fDEFINE NAMES<\r
C START,START,NOPER!TTYRNU!INCORE!NOACT!NORUN\r
C HALT,STOP,NOCORE!NOJOBN!NOLOGIN!NOINCK!CMWRQ\r
C KJOB,KJOB,NOCORE!NOJOBN!NOINCK!NOLOGIN!NOACT!NORUN!NOPER!NOCRLF!NOMESS!NOTRAN\r
C CTEST,CCLRUN,NOCORE!NOPER!TTYRNU!NOCRLF!INCORE!NOACT!NORUN\r
>\r
>\r
-\f\r
-;GENERATE TABLE OF SIXBIT COMMAND NAMES\r
+\f;GENERATE TABLE OF SIXBIT COMMAND NAMES\r
\r
DEFINE C(A,B,D) <\r
<SIXBIT /A/>\r
>\r
COMTAB: NAMES\r
DISPL=.-COMTAB ;LENGTH OF TABLE\r
-\f\r
-;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS\r
+\f;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS\r
\r
DEFINE C(A,B,D) <\r
Z B (D)\r
>\r
DISP: NAMES\r
-\f\r
-;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE\r
+\f;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE\r
;WITH FOLLOWING AC'S SET:\r
;TAC= BYTE POINTER TO COMMAND STRING(SPACE OR CR AFTER COMMAND NAME)\r
;ITEM = JOB NUMBER\r
MOVEI TAC,0 ;RETURN BOTH PHYSICAL AND LOGICAL CORE\r
SOS (PDP) ;NEGATE SKIP RETURN WHICH CORE1 WILL DO\r
JRST CORE1 ;GO DO IT AND RETURN TO CALLER\r
-\f\r
-; "PJOB" PRINT JOB NUMBER OF JOB TTY IS ATTACHED TO\r
+\f; "PJOB" PRINT JOB NUMBER OF JOB TTY IS ATTACHED TO\r
\r
INTERNAL PJOB,DECLF\r
\r
JUMPE PROG,DLYCM1 ;DELAY COMMAND IF CORE ASSIGNED ON DISK\r
JSP TAC1,MONJOB ;YES, SCHEDULE MONITOR JOB(PC IN EXEC MODE)\r
;RETURN HERE AT UUO LEVEL WHEN SCHEDULED\r
-JOBKL: MOVEI TAC1,ESTOP ;PUT ESTOP ON END OF PDL\r
+\fJOBKL: MOVEI TAC1,ESTOP ;PUT ESTOP ON END OF PDL\r
JSP TAC,MONSTR ;GO SETUP ACS AND PD LIST\r
PUSHJ PDP,JOB1 ;FLUSH CORE AFTER RELEASING DEVICES\r
JOBKA:\r
\r
JOBKB: SETZM -1(PDP) ;CLEAR NOJOBN SO COMRET WILL PRINT ERROR MSG.\r
JRST ATT4 ;"NOT A JOB"\r
-\f\r
-; "START L" OR "START" - START AT LOC, L OR STARTING ADDRESS\r
+\f; "START L" OR "START" - START AT LOC, L OR STARTING ADDRESS\r
INTERNAL FT2REL\r
EXTERNAL JOBSA\r
\r
; BY PROGRAM END STATEMENT AND STORED BY LINKING LOADER\r
; SKIP INTO REENTER, START WITH PC IN USER MODE\r
>\r
-\f\r
-;"REENTER" - REENTER USER PROGRAM\r
+\f;"REENTER" - REENTER USER PROGRAM\r
\r
EXTERNAL JOBREN\r
\r
\r
ASCIZ /CAN'T CONTINUE\r
/\r
-\f\r
-; "CORE #" - ASSIGNS #*1024 WORDS OF CORE TO JOB\r
+\f; "CORE #" - ASSIGNS #*1024 WORDS OF CORE TO JOB\r
; "CORE" WITH NO ARG. WILL PRINT NO OF FREE BLOCKS LEFT\r
; WITHOUT AFFECTING CURRENT ASSIGNMENT OF CORE\r
; JOB NOT IN MIDDLE OF SWAPPING\r
JRST DLYCM ;AND DELAY COMMAND TILL CORE IS IN MEMORY\r
; DLYCM WILL SWAP IT IN.\r
>\r
-\f\r
-COR2: IFN FTTTYSERM,<\r
+\fCOR2: IFN FTTTYSERM,<\r
MOVE DEVDAT,-2(PDP) ;RESTORE TTY DDB ADR\r
>\r
PUSHJ PDP,INLMES ;PRINT ? FOR PATCH\r
MOVE TAC,VIRTAL ;PRINT AMOUNT OF FREE SWAP SAPCE LEFT\r
JRST RADX10 ;IN DECIMAL\r
>\r
-\f\r
-; "SSAVE FILENAM.EXT [PROJ,PROG] CORE"\r
+\f; "SSAVE FILENAM.EXT [PROJ,PROG] CORE"\r
;WORKS LIKE SAVE, EXCEPT THAT HIGH SEG IS SAVED AS SHARABLE(EXT=SHR)\r
;INSTEAD OF NON-SHARABLE(EXT=HGH)\r
\r
SETZM REFLAG ;ONLY ONCE\r
POPJ PDP,\r
>\r
-\f\r
-;"HELP" -HELP COMMAND\r
+\f;"HELP" -HELP COMMAND\r
\r
INTERNAL FTLOGIN\r
\r
JFCL\r
>\r
POPJ PDP,\r
-\f\r
-INTERN FTCCL\r
+\fINTERN FTCCL\r
\r
IFN FTCCL,<\r
\r
MOVE TAC,[SIXBIT /LOGIN/] ;CUSP NAME\r
JRST ARCOM ;RUN IT\r
>\r
-\f\r
-; "R CUSTNAME CORE" - DOES "RUN SYS:CUSPNAME"\r
+\f; "R CUSTNAME CORE" - DOES "RUN SYS:CUSPNAME"\r
\r
RCOM: MOVEI TAC,0 ;NO FILE NAME, TTY WILL SUPPLY IT\r
JRST ARCOM1\r
IFN FTSWAP,<\r
JRST DLYCM ;NO. DELAY COMMAND UNTIL IN CORE\r
>\r
-\f\r
-; "ASSIGN DEV:NAME" - ASSIGN DEVICE TO JOB AND GIVE IT LOGICAL NAME\r
+\f; "ASSIGN DEV:NAME" - ASSIGN DEVICE TO JOB AND GIVE IT LOGICAL NAME\r
\r
EXTERNAL DEVLST,PJOBN,SYSTAP\r
\r
ASSIGN: PUSHJ PDP, CTEXT1 ;GET FIRST ARGUMENT\r
JUMPE TAC1, NOTENF ;NO ARGUEMNT TYPED IF 0\r
-IFN FTLOGIN,<EXTERN PRJPROG\r
+IFN FTLOGIN,<EXTERN PRJPRG\r
CAME TAC,[SIXBIT .SYS.]\r
JRST ASSG6\r
HLRZ T1,PRJPRG(ITEM)\r
ASSG5: PUSHJ PDP,ASSASG ;NO, TRY TO ASSGIN DEVICE\r
JRST ASSER1 ;ALREADY ASSIGNED TO ANOTHER JOB\r
JRST ASSFIN ;ASSIGNED\r
-\f\r
-;SYSTEM TAPE OR NOT MATCH OF ARG AND PHYSICAL NAME.\r
+\f;SYSTEM TAPE OR NOT MATCH OF ARG AND PHYSICAL NAME.\r
\r
ASSG1: CAMN TAC,SYSTAP ;IS THIS SYSTEM TAPE?\r
JRST ASSG2 ;YES\r
MOVEM TAC1,SYSTAP\r
POPJ PDP,\r
>\r
-\f\r
-;ALREADY ASSIGNED TO ANOTHER JOB\r
+\f;ALREADY ASSIGNED TO ANOTHER JOB\r
ASSER1:\r
IFE FTTTYSER,<\r
PDP PDP, TAC\r
>\r
\r
ASSMS2: ASCIZ /ALREADY ASSIGNED TO JOB /\r
-\f\r
-;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME\r
+\f;DEVICE ASSIGNED, GIVE IT A LOGICAL NAME\r
ASSFIN: SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME\r
IFE FTTTYSER,<\r
POP PDP,TAC ;RESTORE INPUT BYTE POINTER\r
\r
ASCIZ / WASN'T ASSIGNED\r
/\r
-\f\r
-INTERNAL FTREASSIGN\r
+\fINTERNAL FTREASSIGN\r
IFE FTREASSIGN,<\r
REASSI=UUOERR\r
>\r
REASS4: HRRZ DSER,DEVSER(DEVDAT)\r
HRRZM DEVDAT,JOBFDV(JDAT)\r
MOVE UCHN,USRHCU\r
-\f\r
-REASS2: MOVE DEVDAT,USRJDA(UCHN) ;GET XWD UUO BITS,DDB ADDRESS\r
+\fREASS2: MOVE DEVDAT,USRJDA(UCHN) ;GET XWD UUO BITS,DDB ADDRESS\r
HRRZ TAC,JOBFDV(JDAT) ;GET ADDR. OF DDB SAVED BY COMMAND\r
PUSH PDP,UCHN ;SAVE USER CHANNEL\r
CAIN TAC,(DEVDAT) ;IS CHOSEN DEVICE ON THHS CHANNEL?\r
ASCIZ / CAN'T BE REASSIGNED\r
/\r
>\r
-\f\r
-INTERNAL FTATTACH\r
+\fINTERNAL FTATTACH\r
IFN FTATTACH,<\r
\r
;"ATTACH DEVNAME" -ATTACHES A PREVIOUSLY PARTITIONED DEVICE\r
ASCIZ /WASN'T DET\r
/\r
>\r
-\f\r
-INTERNAL FTATTACH\r
+\fINTERNAL FTATTACH\r
IFN FTATTACH,<\r
\r
;"DETACH" - DETACH CONSOLE FROM JOB\r
HRRM TAC1,TTYTAB(TAC) ;SO THAT SCNSER CHECKS FOR THIS\r
POP PDP,DEVDAT ;RESTORE TTY DDB\r
POPJ PDP, ;SUCCESSFUL RETURN\r
-\f\r
-TEMP1: POP PDP,DEVDAT ;RESTORE TTY DDB\r
+\fTEMP1: POP PDP,DEVDAT ;RESTORE TTY DDB\r
JRST DEAER1 ;PRINT ERROR MSG. AND RETURN\r
TEMP2:\r
IFE FTTTYSER,< POP PDP,DEVDAT ;RESTORE TTY DDB\r
LOGER1: JSP TAC,ERRMES\r
ASCIZ /CAN'T DET DEV\r
/\r
-\r
>> ;CLOSE BOTH FTLOGIN AND FTATTACH CONDITIONALS.\r
-\r
-;"DAYTIME" - PRINT TIME OF DAY\r
+\f;"DAYTIME" - PRINT TIME OF DAY\r
\r
EXTERNAL TIME,THSDAT,MONTAB,JIFMIN\r
\r
PUSHJ PDP,PRSPC\r
MOVE TAC,TIME ;PRINT TIME OF DAY\r
JRST PRTIM1\r
-\f\r
-INTERNAL FTTIME\r
+\fINTERNAL FTTIME\r
IFN FTTIME,<\r
;"TIME (JOB NO.)" - PRINT TOTAL AND INCREMENTAL RUNNING TIME FOR A JOB\r
;FOLLOWED BY KILO-CORE TICKS\r
ASCIZ /UP /\r
MOVE TAC,UPTIME\r
JRST PRTIME ;AND RETURN\r
-\f\r
-RUN1:\r
+\r
+\fRUN1:\r
IFE FTLOGIN,<\r
MOVEI TAC,0 ;GET SET TO CLEAR INCREMENTAL RUN TIME\r
>\r
JRST PRTIME ;PRINT IT AND RETURN\r
>\r
>\r
-\f\r
-;ROUTINE TO LET TTY TALK TO ANY OTHER RING OF TTYS\r
+\f;ROUTINE TO LET TTY TALK TO ANY OTHER RING OF TTYS\r
; "TALK TTYN"\r
; TTYN NEED NEVER HAVE BEEN TYPED ON BEFORE\r
\r
ASCIZ /BUSY\r
/\r
>\r
-\f\r
-INTERNAL FTEXAMINE\r
+\fINTERNAL FTEXAMINE\r
\r
IFN FTEXAMINE,<\r
\r
HRLI TAC1,PROG ;SET FOR RELOCATION\r
MOVEM IOS,@TAC1 \r
POPJ PDP,\r
-\f\r
-DEAT: TLZ TAC1,-1 ;CLEAR LH IN CASE THIS IS A SUCCESSIVE E WITH NO ARG\r
+\r
+\r
+\fDEAT: TLZ TAC1,-1 ;CLEAR LH IN CASE THIS IS A SUCCESSIVE E WITH NO ARG\r
HRRM TAC1,JOBEXM(JDAT) ;STORE FOR NEXT TIME, DO NOT TOUCH LH(D OR E LAST)\r
; YES, WAS JOB STOPPED IN USER MODE?\r
CAIL TAC1,20 ;IS IT AN AC?\r
ECOMA: JSP TAC,ERRMES ;OUT OF BOUNDS\r
ASCIZ /OUT OF BOUNDS\r
/\r
-\r
>\r
-\f\r
-IFN FTLOGIN,<\r
+\fIFN FTLOGIN,<\r
;"SCHEDULE OCTN" - SETS RH OF STATES TO OCTN, IF TYPED FROM\r
; THE OPERATOR CONSOLE (C(DEVOPR)), OTHERWISE ILLEGAL\r
;"SCHEDULE" WITH NO ARGUMENTS TYPES OUT RH OF STATES, LEGAL FOR ALL.\r
;COMMAND NOT IN COMMAND DICECTORY\r
\r
NOCOM: JRST COMERR ;NO, APPEND ? TO WHAT HE TYPED IN\r
-\f\r
-IFN FTFINISH,<\r
+\fIFN FTFINISH,<\r
; "FINISH DEVICE" - CLOSES,RELEASE AND DESASSIGNS DEVICE\r
;JOB MUST HAVE CORE\r
\r
JFCL ;IGNORE IF NOT ASSIGNED BY CONSOLE\r
JRST ESTOP ;STOP JOB SO HE CANNOT CONTINUE\r
>\r
-\f\r
-IFN FTTIME,<\r
+\fIFN FTTIME,<\r
;"RESOURCES" - PRINT OUT AVAILABLE DEVICES AND FREE BLOCKS ON THE DISK\r
\r
EXTERNAL DEVLST\r
JUMPN T,LOP01 ;IS THERE ONE?\r
JRST CRLF ;NO. DONE, PRINT CR. LF AND THEN POPJ\r
>\r
-\f\r
-EXTERNAL CPOPJ,STUSER\r
+\fEXTERNAL CPOPJ,STUSER\r
;ROUTINE TO CHECK FOR ACTIVE DEVICES\r
;NEVER GET HERE DURING SWAP IN OU OUT\r
;SINCE COMMAND TABLE SHOULD AHVE NOTRAN BIT ON\r
JRST STOPD\r
JRST CPOPJ1 ;OK TO STOP\r
>\r
-\f\r
-SUBTTL COMCSS - COMMON COMMAND SUBROUTINES\r
+\fSUBTTL COMCSS - COMMON COMMAND SUBROUTINES\r
\r
;ROUTINE TO RETURN NEXT ALPHANUMERIC STRING\r
; IN COMMAND LINE (SIXBIT)\r
CTEX0: ILDB TEM,TAC\r
>\r
IFN FTTTYSER,<\r
-EXTERN TAKR,GETCHAR\r
+EXTERN TAKR,GETCHR\r
LDB TEM,TAKR(DAT) ;GET LAST CHAR.\r
JRST CTEX1\r
CTEX0: PUSHJ PDP,GETCHR ;ROUTINE IN SCNSER TO PICK UP CHAR.\r
TLNE T,770000 ;SIX CHARS YET?\r
IDPB TEM,T ;NO. BUILD WORD \r
JRST CTEX0 ;LOOP FOR MORE\r
-\f\r
-;SCAN FOR ALPHANUMERIC CHAR IN TEM\r
+\f;SCAN FOR ALPHANUMERIC CHAR IN TEM\r
CTEX: CAILE TEM,"Z"+40 ;GREATER THAN LC Z?\r
JRST CTEXA ;YES. NOT SIXBIT.\r
CAIL TEM,"A"+40 ;LOWER CASE LETTER?\r
MOVSI TEM,12 ;WITH LF FOR TERMINATION\r
JRST TPOPJ ;AND RETURN UP A LEVEL\r
>\r
-\f\r
-;ROUTINE TO IGNORE LEADING SPACES, TABS, AND NULLS\r
+\f;ROUTINE TO IGNORE LEADING SPACES, TABS, AND NULLS\r
;ALSO CLEARS TAC1\r
;DOES NOT RETURN IF PREVIOUS CHAR. OR NEXT NON-SPACING\r
;CHAR, IS CR(IE POPS SUBROUTINE LEVEL UP 1 ON RETURN)\r
MOVEI TEM,12 ;FOR BREAK CONSISTENCY\r
JRST TPOPJ ;RETURN ONE LEVEL UP\r
>\r
-\f\r
-;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT\r
+\f;ROUTINE TO APPEND A "?" TO INPUT STRING AND SET AS OUTPUT\r
;CALLED FROM OCTIN, RETURNS TO SECOND LEVEL ON PDL\r
;CALL: MOVE TAC, BYTE POINTER TO LAST CHAR. IN INPUT STRING\r
; PUSHJ PDP, COMERA\r
DPB T,DAT\r
>\r
TDZA ITEM,ITEM ;CLEAR JOB NO. AND SKIP INTO CRLF ROUT.\r
-\f\r
-;ROUTINE TO PRINT A COMMAND ERROR MESSAGE\r
+\f;ROUTINE TO PRINT A COMMAND ERROR MESSAGE\r
;SAME CALL AS CONMES\r
\r
INTERNAL ERRMES\r
IDPB TEM,DAT\r
>\r
JRST CON0 ;KEEP GOING\r
-\f\r
-;ROUTINE TO PRINT INLINE ASCIZ MESSAGE\r
+\f;ROUTINE TO PRINT INLINE ASCIZ MESSAGE\r
;CALL: PUSHJ PDP,INLMES\r
; ASCIZ /THE MESSAGE/\r
;RETURN TO NEXT LOC AFTER MESSAGE\r
PRSPC: MOVEI TAC,[ASCIZ / /]\r
JRST CONMES\r
\f\r
+\r
;ROUTINE TO PRINT "TOO FEW ARGUMENTS"\r
;CALL: MOVE DAT,BYTE POINTER\r
; PUSHJ PDP,NOTENF\r
POP PDP,DEVDAT ;RESTORE TTY DDB ADDRESS\r
POPJ PDP,\r
\f\r
-;ROUTINE TO REA CONSOLE AND CONVERT ANY RADIX NUMBER\r
+;ROUTINE TO READ CONSOLE AND CONVERT ANY RADIX NUMBER\r
; CALL: MOVE TAC1, DESIRED RADIX\r
; MOVE TAC, BYTE POINTER TO FIRST CHARACTER\r
; PUSHJ PDP, ANYRIN\r
IFE FTTTYSER,< ILDB TEM,TAC ;NEXT CHAR>\r
IFN FTTTYSER,< PUSHJ PDP,GETCHR> ;NEXT CHAR\r
JRST OCT0\r
-\f\r
-INTERNAL FTLOGIN\r
+\fINTERNAL FTLOGIN\r
IFN FTLOGIN,<\r
;GET PROJECT-PROGRAMMER NUMBERS\r
;CALL: MOVE TAC,INPUT BYTE POINTER\r
IFN FTTTYSER,<PUSHJ PDP,GETCHR> ;YES, SKIP IT SO FINAL ] IS OPTIONAL\r
POPJ PDP, ;RETURN RO CALL\r
>\r
-\f\r
-;ROUTINE TO PRINT TIME AS HOURS,MINUTES,SECONDS, AND HUNDRETHS\r
+\f;ROUTINE TO PRINT TIME AS HOURS,MINUTES,SECONDS, AND HUNDRETHS\r
;FORMAT IS HHMM:SS.HH\r
;CALL: MOVE TAC,TIME IN JIFFIES(60THS,50THS OR MILLISECONDS)\r
; MOVE DAT,OUTPUT TEXT BYTE POINTER\r
CAIL TAC1,JIFSC2 ;ROUND IF GREATER THEN HALF\r
AOS TAC\r
JRST PRT2LF ;PRINT\r
-\f\r
-PRTIM1: IDIVI TAC,JIFMIN ;\r
+\fPRTIM1: IDIVI TAC,JIFMIN ;\r
IDIVI TAC,^D60 ;HOURS,MINUTES IN TAC,TAC1\r
PUSHJ PDP,PRT2\r
PUSHJ PDP,INLMES ;PRINT "HH:"\r
CAIGE TAC,^D10\r
XCT CONOUT ;PUT LEADING 0 IF LESS THEN 10\r
JRST RADX10 ;PRINT REST OF NUMBER\r
-\f\r
-;ROUTINE TO PRINT SIZE OF LOGICAL SEGMENT (LOW OR HIGH)\r
+\f;ROUTINE TO PRINT SIZE OF LOGICAL SEGMENT (LOW OR HIGH)\r
;CALL: MOVE ITEM, HIGH OR LOW SEG NUMBER\r
; PUSHJ PDP,PRT SEG\r
; RETURN\r
JUMPE TAC1,CPOPJ ;IS IT IN CORE?\r
LSH TAC1,-12 ;YES, CONVERT TO #K-1\r
AOJA TAC1,CPOPJ ;ADD 1 AND RETURN NUMBER OF K\r
-\f\r
-;ROUTINE TO ASSIGN A MINIMAL CORE AREA(140 WORDS)\r
+\f;ROUTINE TO ASSIGN A MINIMAL CORE AREA(140 WORDS)\r
;CALLED FROM CORE,KJOB, AND RUN COMMANDS\r
;THIS ROUTINE PRESERVES INPUT BYTE POINTER IN TAC\r
;CALL: PUSHJ PDP,GETMIN\r
IFE FTTTYSER,<\r
JRST TPOPJ ;RESTORE TAC AND RETURN\r
>\r
-\f\r
-;ROUTINE TO GET 1 WORD FORM USER ARE WHICH CAN BE IN LOW OR HIGH SEG\r
+\f;ROUTINE TO GET 1 WORD FORM USER ARE WHICH CAN BE IN LOW OR HIGH SEG\r
;CALL: MOVE PROG,[XWD PROT,RELOC FOR LOW SEG]\r
; MOVE ITEM,JOB NUMBER\r
; HRLI UUO,PROG ;FOR RELOCATION\r
>\r
MOVE TAC,@UUO ;YES, GET IT FROM LOW SEG\r
JRST CPOPJ1 ;AND SKIP RETURN\r
-\f\r
-SUBTTL SAVGET - SAVE,GET,R,RUN COMMANDS AND RUN,GETSEG UUOS\r
+\fSUBTTL SAVGET - SAVE,GET,R,RUN COMMANDS AND RUN,GETSEG UUOS\r
\r
;SAVGET LOWER CORE LOCATIONS USED FOR UUOS TO MONITOR\r
;USED IN SAVGET IN APRSER AND SAVGET IN SEGCON\r
XP SGALOW,17 ;LH=EXT WHICH USER TYPED FOR SAVE OR GET COMMAND\r
; OR .SAV IF HE DIDN'T TYPE AN ARG WITH LEADING PERIOD\r
; RH=0\r
-\f\r
-;ROUTINE TO SCAN COMMAND STRING ARGUMENTS FOR SAVE,GET,RUN AND R\r
+\f;ROUTINE TO SCAN COMMAND STRING ARGUMENTS FOR SAVE,GET,RUN AND R\r
;COMAMNDS AND STORE THEM IN JOB DATA AREA WHICH MUST BE IN CORE\r
;WHEN SGSET IS CALLED FROM COMMAND DECODER\r
;CALL: MOVE TAC,INPUT BYTE POINTER\r
; GUARRANTEE LH OF PC WORD IS 0, SINCE IT WILL\r
; BE ADDED TO STARTING ADDRESS(IF RUN COM)\r
JRST MSTART ;START JOB WITH PC IN MONITOR MODE\r
-\f\r
-;ROUTINE TO PICKUP ARGUMENTS FOR RUN AND GETSET UUOS\r
+\f;ROUTINE TO PICKUP ARGUMENTS FOR RUN AND GETSET UUOS\r
;THIS ROUTINE DOES SAME THING AS SGSET, EXCEPT THAT ARGUMENTS ARE\r
;OBTAINED FROM USER UUO ARGUMENTS INSTEAD OF FROM CONSOLE COMMAND\r
;THE USERS ARG ARE MOVED TO USER ACS(SGA...), THEREBY CLOBBERING HIS AC$S\r
; RETURN\r
\r
INTERN GETARG\r
- EXTERN JBTPROG,JOBCORE,PUUOAC\r
+ EXTERN JBTPRG,JOBCOR,PUUOAC\r
\r
GETARG: HRR UUO,TAC ;MOVE ADR. OF ARG LIST TO UUO\r
EXCH TAC,(PDP) ;AND PUT ON PD LIST\r
; IGNORE LH\r
JRST SG2A ;GO SET UP LOWER CORE AND RETURN\r
; DO NOT DO A RESET\r
-\f\r
-;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE\r
+\f;THIS JOB SAVES A JOB AREA ON RETRIEVABLE STORAGE\r
;THIS JOB RUNS IN EXEC MODE AND CALLS IO ROUTINES USING REGULAR UUOS\r
;NO ATTEMPT IS MADE TO SAVE STATUS OF IO DEVICES, JOBDP, OR AC'S\r
;IN FACT THE ONLY USEFUL THING WHICH MAY BE DONE WITH A JOB AREA\r
JRST SAVERR ;DIRECTORY FULL OR PROTECTION FAILURE\r
MOVE TAC,JOB41(JDAT) ;SAVE USER UUO HANDLING JSR\r
MOVEM TAC,JOBS41(JDAT) ;IN UPPER PART OF JOB DATA AREA\r
-\f\r
- MOVE TAC,JOBDDT(JDAT) ;SAVE DDT STARTING ADDRESS HIGHER UP IN JOB DATA AREA\r
+\f MOVE TAC,JOBDDT(JDAT) ;SAVE DDT STARTING ADDRESS HIGHER UP IN JOB DATA AREA\r
MOVEM TAC,JOBSDD(JDAT) ;SO COMPRESS ALWAYS MOVES CODE DOWN\r
HRROS USRHCU ;FLAG THAT SAVE GET IS UNDER WAY\r
; SO THAT JOBHRL WILL NOT BE MODIFIED BY SETHGH RUOTINE\r
; CORE ON START ,ODT,SAVE, REENTER,SSAVE IN CASE\r
; THIS SAE IO DOES NOT GO TO COMPLETION. (CONTROL C\r
; OR DEVICE FULL, SO THAT CORE DOES NOT GET EXPANDED\r
-\f\r
- PUSHJ PDP,SGDOA ;DO OUTPUT,RELEASE,FIND TTY\r
+\f PUSHJ PDP,SGDOA ;DO OUTPUT,RELEASE,FIND TTY\r
OUTPUT 0,SGALEN ;OUTPUT UUO EXECUTED BY SGDO\r
; RETURN HERE ONLY IF NO ERRORS\r
SAVFIN: PUSHJ PDP,SGREL ;RELEASE DEVICE AND FIND TTY\r
; PUT TAC1 AS FIRST ITEM ON PD LIST(JOBPN1)\r
; LH USED BY SGRELE ON ERROR TO SEE IF FROM USER\r
; AND LH ADDED TO START PC(JOBSA) BY URUN\r
-\f\r
-;RUN UUO\r
+\f;RUN UUO\r
;CALL: MOVE AC,[XWD N,D]\r
; CALL AC,[SIXBIT /RUN/]\r
; ERROR RETURN ;UNLESS LH=HALT(PRINT CONSOLE MESS, IF YES)\r
HRLI TAC1,USRMOD ;SET USER MODE BIT IN PC\r
PUSH PDP,TAC1 ;PUT ON PD LIST\r
JRST USRXIT ;AND GO TO RETURN TO USER AS IF FROM UUO\r
-\f\r
-;UUO TO GET JUST HIGH SEG AND RETURN TO USER\r
+\f;UUO TO GET JUST HIGH SEG AND RETURN TO USER\r
;CALL IS THE SAME AS FOR RUN UUO EXCEPT THAT OK RETURN IS SKIP RETURN\r
;IF ERROR RETURN HAS HALT IN LH, STANDARD CONSOLE MESSAGE IS PRINTED AND JOB STOPPED\r
\r
UGTERR: MOVEI TAC,ILUERR ;ILLEGAL UUO ERROR CORE\r
PUSHJ PDP,SGRELE ;SEE IF USER WANTS ERROR\r
JRST UUOERR ;NO, PRINT ILLEGAL UUO\r
-\f\r
-;ROUTINE TO SETUP ACS, RESET IO, AND SETUP LOWER CORE LOCATIONS\r
+\f;ROUTINE TO SETUP ACS, RESET IO, AND SETUP LOWER CORE LOCATIONS\r
;FOR SAVE AND GET(SGALEN SET IO IOWD OR PP IF DTA OR DSK)\r
;SGADMP SET TO IOWD FOR THIS SIZE CORE\r
;CALL: JSP TAC1,SG1\r
>\r
JRST SGERRA ;NOT AVAILABLE\r
;DEVICE INITED(OR FOUND)\r
-\f\r
-;COMMON EXIT FROM SAVHGH AND GETHGH ROUTINES(HIGH SEG SAVE AND GET)\r
+\f;COMMON EXIT FROM SAVHGH AND GETHGH ROUTINES(HIGH SEG SAVE AND GET)\r
;SO THAT SGA... LOCATIONS ARE RESTOREED TO ORIGINAL VALUES FOR LOW SEG\r
\r
SG3: MOVE TAC,JOBFF(JDAT) ;FIRST FREE LOC IN JOB(SET FROM LH OF\r
; OR FIND TTY AND PRINT ?CRLF\r
JSP TAC,PHOLD ;START TTY AND STOP JOB\r
ASCIZ /NO SUCH DEVICE/\r
-\f\r
-;ROUTINE TO GET FILE FROM DEVICE(LOW AND/OR HIGH)\r
+\f;ROUTINE TO GET FILE FROM DEVICE(LOW AND/OR HIGH)\r
;CALL: ACS JDAT,PROG,PDP,DEVDAT SETUP\r
; MOVE ITEM,JOB NUMBER\r
; IFN FTDISK,<MOVE TAC1,DEVMOD(DEVDAT) ;DEVICE CHAR.>\r
; USER TO USE TO RESET CORE TO INITIAL SETTING WHEN\r
; PROGRAM IS RESTARTED\r
; FALL INTO SGREL\r
-;ROUTINE TO RELEASE DEVICE AND FIND TTY\r
-INTERN SGREL\r
-\r
-SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY?\r
- JRST SGREL2 ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH\r
- PUSH PDP,T4 ;NO,\r
- MOVE TAC1,DEVMOD(DEVDAT)\r
- TLNE TAC1,DVMTA ;MAGTAPE?\r
- TLNN DEVDAT,INPB ;YES, WAS AN INPUT DONE?\r
- JRST SGREL1 ;NO\r
- CLOSE 0,CLSOUT ;YES, CLOSE MTA INPUT\r
- STATO 0,IOTEND+IODEND ;AT END OF APTE?\r
- MTAPE 0,16 ;NO SKIP TO EOF\r
-SGREL1: RELEASE 0, ;NO RELEASE DEVICE\r
- POP PDP,T4\r
-SGREL2:\r
- JRST TTYFNU ;FIND TTY FOR CURRENT USER\r
-\f\r
-;ROUTINE TO EXECUTE DUMP MODE COMMAND LIST SETUP IN SGALEN(R)\r
+\f;ROUTINE TO EXECUTE DUMP MODE COMMAND LIST SETUP IN SGALEN(R)\r
;AND CHECK FOR ERRORS. USED ONLY TO READ LOW FILE.\r
;CALL: PUSHJ P,SGDO\r
; INPUT 0,SGALEN OR OUTPUT 0,SGALEN\r
; OF FIND TTY AND PRINT ?CRLF\r
JSP TAC,PHOLD ;START TTY AND STOP JOB\r
ASCIZ /TRANSMISSION ERROR/\r
-\f\r
-;ROUTINE TO EXPAND CORE AFTER A SAVE(LOW SEG ONLY)\r
+;ROUTINE TO RELEASE DEVICE AND FIND TTY\r
+INTERN SGREL\r
+\r
+SGREL: SKIPN DEVDAT,USRJDA ;HAS CHANNEL BEEN RELEASED ALREADY?\r
+ JRST SGREL2 ;YES, FIND TTY AND WAIT FOR OUTPUT TO FINISH\r
+ PUSH PDP,T4 ;NO,\r
+ MOVE TAC1,DEVMOD(DEVDAT)\r
+ TLNE TAC1,DVMTA ;MAGTAPE?\r
+ TLNN DEVDAT,INPB ;YES, WAS AN INPUT DONE?\r
+ JRST SGREL1 ;NO\r
+ CLOSE 0,CLSOUT ;YES, CLOSE MTA INPUT\r
+ STATO 0,IOTEND+IODEND ;AT END OF APTE?\r
+ MTAPE 0,16 ;NO SKIP TO EOF\r
+SGREL1: RELEASE 0, ;NO RELEASE DEVICE\r
+ POP PDP,T4\r
+SGREL2:\r
+ JRST TTYFNU ;FIND TTY FOR CURRENT USER\r
+\f;ROUTINE TO EXPAND CORE AFTER A SAVE(LOW SEG ONLY)\r
;CALL: MOVE DEVDAT,DEVICE ADR.\r
; MOVE PROG,JOBADR.\r
; MOVE ITEM,JOB NUMBER\r
JRST EXPND1\r
EXPZ: MOVSI TAC,-2\r
HLLM TAC,JOBSV(PROG)\r
-\f\r
-;COME HERE TO DO THE ACTUAL EXPANSION OF A FILE\r
+\f;COME HERE TO DO THE ACTUAL EXPANSION OF A FILE\r
EXPND1: MOVE TAC,[XWD PROG,JOBSV] ;IT WAS READ INTO JOBSV\r
MOVE TAC,@TAC ;FIRST IOWD\r
EXPLP1: HRRZ AC1,TAC1 ;ADDRESS OF IOWD\r
HRRZ TAC,@TAC ;TOP REAL LOCATION NEEDED\r
\r
TRO TAC,1777 ;MAKE IT NK-1\r
-\r
HLRZ TAC1,PROG ;PRESENT SIZ OF LOW SEG\r
CAMG TAC,TAC1 ;IS THERE ENOUGH?\r
JRST EXPCOR ;YES.\r
MOVEM AC2,JOBDDT(JDAT) ;SET USER DDT STR ADR\r
JRST SGDO2 ;AND SETUP USRDDT IN MONITOR PROTECTED\r
; FROM THIS USER\r
-\f\r
-;THIS ROUTINE WILL DELETE ALL DATA FROM A COMPRESSED FILE\r
+\f;THIS ROUTINE WILL DELETE ALL DATA FROM A COMPRESSED FILE\r
;WHICH IS BELOW JOBSOD (PROBABLY WRITTEN BY TENDUMP)\r
\r
TOOLOW: HLRE AC2,@TAC ;WORDCOUNT OF OFFENDING IOWD\r
SUBI AC3,(TAC) ;AC3 POINTS TO TOP OF DATA READ IN-(N)\r
BLT TAC1,@AC3 ;MOVE ONLY GOOD DATA DOWN\r
JRST EXPND1 ;GO EXPAND THE GOOD DATA\r
-\f\r
-SGDO1: MOVEI TAC,JOBDDT(PROG) ;MOVE EVERYTHING DOWN )MUST BE NON-COMPRESSED DSK FILE\r
+\fSGDO1: MOVEI TAC,JOBDDT(PROG) ;MOVE EVERYTHING DOWN )MUST BE NON-COMPRESSED DSK FILE\r
HRLI TAC,JOBSVD(TAC) ;OR CONVERT SAVE FILE\r
SKIPGE JOBSV(JDAT) ;IS THIS CONVERT FILE(FIRST WORD IS IOWD)?\r
HRLI TAC,JOBSDP(TAC) ;YES, ALSO SKIP OVER IOWD\r
SETZM JOBHCU(JDAT) ;CLEAR LH AND SET HIGHEST USER CHAN, IN\r
; USE TO 0(WHERE IT SHOULD BE ANYWAY)\r
POPJ PDP, ;ERROR RETURN OR OK RETURN\r
-\f\r
-;ROUTINE TO CHECK USER SUPPLIED CORE ARG AND CHECK TO SEE IF 0\r
+\f;ROUTINE TO CHECK USER SUPPLIED CORE ARG AND CHECK TO SEE IF 0\r
;OR GREATER THAN OR EQUAL TO IOWD USED TO SAVE OR GET FILE\r
;CALL: HLRE TAC1,-NO. OF WORDS IN FILE\r
; PUSHJ PDP,CKIOWD\r
JSP TAC,PHOLD ;START TTY ADN STOP JOB\r
ASCIZ /K OF CORE NEEDED/\r
\f\r
+\r
;ROUTINE TO ASSIGN CORE FOR LOW AND HIGH SEG\r
;CALL: MOVE PROG,LOW SEG RELOCATION\r
; HRR TAC,HIGHEST LOC DESIRED\r
CALLI SGACOR,11 ;DO CORE UUO\r
JRST NOROOM ;NOT AVAILABLE, PRINT ERROR AND AMOUNT TRYING FOR\r
JRST TPOPJ ;OK, REMOVE TAC FROM PD LIST AND RETURN\r
-\f\r
-;ROUTINE TO PRINT NOT A SAVE FILE IF WRONG FORMAT FILE DETECTED\r
+\f;ROUTINE TO PRINT NOT A SAVE FILE IF WRONG FORMAT FILE DETECTED\r
\r
INTERN GETERR\r
\r
PUSHJ PDP,PRNAME\r
JSP TAC,PHOLD ;START TTY AND STOP JOB\r
ASCIZ / NOT FOUND/\r
-\f\r
-;ROUTINE TO RELEASE DEVICE ON AN ERROR AND CHECK TO SEE\r
+\f;ROUTINE TO RELEASE DEVICE ON AN ERROR AND CHECK TO SEE\r
;IF THIS IS A MONITOR COMMAND OR USER UUO\r
;IF USER UUO, GIVE ERROR RETURN TO USER UNLESS THERE IS A HALT\r
;IN LH OF EROR RETURN WORD, IN WHICH CASE FIND TTY, PRINT ?CRLF\r
ASCIZ /?\r
/\r
COMEND: END ;END OF COMCON\r
-\r
-\f\r
TITLE COMMON - MONITOR COMMON DATA AREA AND CONFIGURATION DEFINITION - V437\r
SUBTTL PART 3 COMMON.MAC - T. HASTINGS/RCC TS 03 JUN 69\r
XP VCOMMN,437\r
JBTAD1==JBTADR+1 ;ADDRESS OF JOB 1 (USED BY SYSMAK)\r
JBTDAT==JBTADR ;RH==ADDRESS OF JOB DATA AREA\r
;SAME AS JBTADR (JDAT==PROG)\r
+ INTERN JBTSGN\r
JBTSGN: IFG SEGN, <\r
BLOCK JOBN ;RH=SEGMENT NUMBER OF HIGH SEGMENT THIS JOB\r
; IS USING IN CORE OR ON DISK\r
; ASSIGNED AT ONCE ONLY REFRESH TIME\r
\r
PROT: EXP ICPROT ;(2) IN-CORE PROTECT TIME PARAMETER TO BE\r
- ; MULTIPLIED BY <K-1> OF CORE IN JOB.\r
+ ; MULTIPLIED BY (K-1) OF CORE IN JOB.\r
PROT0: EXP ICPRT1 ;(3) IN-CORE PROTECT TIME PARAMETER TO \r
; BE ADDED TO ABOVE RESULT.\r
\r
JRST UUOSYS ;YES\r
MOVEM TAC,40(17) ;STORE UUO IN USER'S 40\r
HRRZ TAC,41(17) ;PICK UP ADR OF USER'S JSR\r
- JUMPE TAC,UUOSY2 ;IF ADDRESS=0,ILLEGAL USER UUO****UWA PATCH\r
+ JUMPE TAC,UUOSYS ;IF ADDRESS=0,ILLEGAL USER UUO****UWA PATCH\r
HLL TAC,UUO0 ;USER PD FLAGS (RESTORED ON RETURN)\r
MOVEI 17,(TAC) ;17 NOW HAS REL.ADR+1 OF USER JSR\r
CAML 17,USRREL ;IS EFFECTIVE ADDRESS IN BOUNDS ?\r
JRST 2,@UUO0 ;RETURN TO USER (RESTORING FLAGS)\r
\r
UUOSY0: MOVE 17,JOBADR ;SETUP 17 FOR LOW SEGMENT RELOCATION\r
-UUOSY2: EXCH TAC,FORTY ;RESTORE USERS AC(TAC) AND USER'S UUO (FORTY)\r
+UUOSYS: EXCH TAC,FORTY ;RESTORE USERS AC(TAC) AND USER'S UUO (FORTY)\r
> \r
JRST UUOUSR ;GO SAVE USER'S ACS IN REL. LOCATION 0-17\r
; AND DISPATCH ON UUO\r
--- /dev/null
+CDRSR6,CDRSR6/C_S,CDRSR6\r
+CDRSRX,CDRSRX/C_S,CDRSRX\r
+CLOCK1,CLOCK1/C_S,FT40N,CLOCK1\r
+CLKCSS,CLKCSS/C_S,FT40N,CLKCSS\r
+COMCON,COMCON/C_S,FT40N,COMCON\r
+COMMON,COMMON/C_S,CONF40,COMMON\r
+CORE1,CORE1/C_S,FT40N,CORE1\r
+DIS340,DIS340/C_S,DISSER\r
+DIST30,DIST30/C_S,DIST30,DISSER\r
+DCSINT,DCSINT/C_S,DCSINT\r
+DLSINT,DLSINT/C_S,DLSINT\r
+DPDINT,DPDINT/C_S,DPDINT\r
+DSKINT,DSKINT/C_S,DSKINT\r
+DSKSER,DSKSER/C_S,FT40N,DSKSER\r
+DTCSRN,DTCSRN/C_S,FT40N,DTCSRN\r
+DTASRN,DTASRN/C_S,FT40N,DTASRN\r
+EDDT,EDDT/C_EDDT\r
+ERRCON,ERRCON/C_S,ERRCON\r
+JOBDAT,JOBDAT/C_JOBDAT\r
+LPTSER,LPTSER/C_S,LPTSER\r
+MTCSR6,MTCSR6/C_S,MTCSR6\r
+MTASRX,MTASRX/C_S,MTASRX\r
+NULSEG,NULSEG/C_S,FT40N,NULSEG\r
+SEGCON,NULSEG/C_S,FT40N,SEGCON\r
+PLTSER,PLTSER/C_S,PLTSER\r
+PTRSER,PTRSER/C_S,PTRSER\r
+PTPSER,PTPSER/C_S,PTPSER\r
+PTYSRF,PTYSRF/C_S,PTYSRF\r
+PTYSRH,PTYSRH/C_S,PTYSRH\r
+PATCH,PATCH/C_PATCH\r
+SYSINI,SYSINI/C_S,FT40N,SYSINI\r
+SYSMAK,SYSMAK/C_S,SYSMAK\r
+ONCEB,ONCEB/C_S,FT40N,ONCEB\r
+SCNSRF,SCNSRF/C_S,FT40N,SCNSRF\r
+UUOCON,UUOCON/C_S,FT40N,UUOCON\r
--- /dev/null
+CDRSR6,CDRSR6/C_S,CDRSR6\r
+CDRSRX,CDRSRX/C_S,CDRSRX\r
+CLOCK1,CLOCK1/C_S,FT50SB,CLOCK1\r
+CLKCSS,CLKCSS/C_S,FT50SB,CLKCSS\r
+COMCON,COMCON/C_S,FT50SB,COMCON\r
+COMMON,COMMON/C_S,CON50N,COMMON\r
+CORE1,CORE1/C_S,FT50SB,CORE1\r
+DIS340,DIS340/C_S,DISSER\r
+DIST30,DIST30/C_S,DIST30,DISSER\r
+DCSINT,DCSINT/C_S,DCSINT\r
+DLSINT,DLSINT/C_S,DLSINT\r
+DPDINT,DPDINT/C_S,DPDINT\r
+DSKINT,DSKINT/C_S,DSKINT\r
+DSKSER,DSKSER/C_S,FT50SB,DSKSER\r
+DTCSRN,DTCSRN/C_S,FT50SB,DTCSRN\r
+DTASRN,DTASRN/C_S,FT50SB,DTASRN\r
+EDDT,EDDT/C_EDDT\r
+ERRCON,ERRCON/C_S,ERRCON\r
+JOBDAT,JOBDAT/C_JOBDAT\r
+LPTSER,LPTSER/C_S,LPTSER\r
+MTCSR6,MTCSR6/C_S,MTCSR6\r
+MTASRX,MTASRX/C_S,MTASRX\r
+NULSEG,NULSEG/C_S,FT50SB,NULSEG\r
+SEGCON,SEGCON/C_S,FT50SB,SEGCON\r
+PLTSER,PLTSER/C_S,PLTSER\r
+PTRSER,PTRSER/C_S,PTRSER\r
+PTPSER,PTPSER/C_S,PTPSER\r
+PTYSRF,PTYSRF/C_S,PTYSRF\r
+PTYSRH,PTYSRH/C_S,PTYSRH\r
+PATCH,PATCH/C_PATCH\r
+SYSINI,SYSINI/C_S,FT50SB,SYSINI\r
+SYSMAK,SYSMAK/C_S,SYSMAK\r
+ONCEB,ONCEB/C_S,FT50SB,ONCEB\r
+SCNSRF,SCNSRF/C_S,FT50SB,SCNSRF\r
+SCHEDB,SCHEDB/C_S,FT50SB,SCHEDB\r
+UUOCON,UUOCON/C_S,FT50SB,UUOCON\r
--- /dev/null
+SUBTTL CONFIG - CONFIGURATION DEFINITION FILE OUTPUT BY MONGEN DIALOG\r
+\r
+\r
+;ANSWER THE FOLLOWING QUESTIONS WITH Y OR N OR A DECIMAL NUMBER\r
+\r
+;SHORT DIALOG?[N = LONGER QUESTIONS]\r
+;Y\r
+\r
+\r
+;10/30 SYSTEM TO BE BUILT?[N = 10/40 OR 10/50 SYSTEM]\r
+;N\r
+\r
+\r
+;10/40 SYSTEM TO BE BUILT?[N = ASSUME 10/50 SYSTEM]\r
+;N\r
+\r
+XP SYS40N,0\r
+XP SYS50N,1\r
+XP DSKN,1\r
+XP LOGINN,1\r
+\r
+;RD10 (BURROUGHS) DISK?[ONE DISK TYPE FOR FILES,\r
+;SAME TYPE FOR SWAPPING OR ONE OTHER TYPE FOR SWAPPING]\r
+;Y\r
+\r
+XP RD10N,1\r
+\r
+;RD10 FOR SWAPPING?[N = CAN SWAP ON SOME OTHER TYPE]\r
+;Y\r
+\r
+XP RDSWPN,1\r
+\r
+;RP10 (MEMOREX) DISK PACKS?\r
+;N\r
+\r
+XP RP10N,0\r
+XP RPSWPN,0\r
+\r
+;RA10 (BRYANT) DISK?\r
+;N\r
+\r
+XP RA10N,0\r
+XP RASWPN,0\r
+\r
+;DPD (DATA PRODUCTS) DISK?\r
+;N\r
+\r
+XP DPDN,0\r
+XP DPSWPN,0\r
+\r
+;HOMW MANY JOBS?[ATTACHED AND DETACHED, COUNTING NULL JOB]\r
+;28\r
+XP JOBN,34\r
+\r
+;MAX SIZE OF CORE (IN K) FOR ANY SINGLE USER?\r
+;0 MEANS ALL OF CORE\r
+;0\r
+XP COREN,0\r
+\r
+;PDP-10 PROCESSORE?[N = PDP-6]\r
+;Y\r
+\r
+XP PDP10N,1\r
+\r
+;2 RELOCATION REG, SOFTWARE?[Y = MUST HAVE KT10A,\r
+;N = JUST 1 RELOC. REG.]\r
+;Y\r
+\r
+XP KT10AN,0\r
+\r
+\r
+;HOW MANY MORE SEGMENTS THAN JOBS?[0 UNLESS YOU\r
+;ANTICIPATE A LOT OF DORMANT SEGMENTS]\r
+;0\r
+XP SEGN,0\r
+\r
+;LOAD EXEC DDT?[N = ONLY IF LOADER HAS RUN OUT OF CORE BEFORE]\r
+;Y\r
+\r
+XP DDTN,1\r
+\r
+;LOAD LOCAL SYMBOLS?[N = ONLY IF LOADER HAS RUN OUT OF ROOM BEFORE]\r
+;Y\r
+\r
+\r
+;LOAD USER DDT?[BOTH CAN BE LOADED TOGETHER,\r
+;USE USER DDT FOR PATCHING UNDER TIME SHARING]\r
+;Y\r
+\r
+XP UDDTN,1\r
+\r
+;NAME OF THIS SYSTEM (24 CHARS OR LESS)?\r
+DEFINE SYSNAM\r
+< ASCIZ \4S47 DEC PDP-10 #2\>\r
+\r
+;WHAT IS THE SERIAL NUMBER OF YOUR ARITHMETIC PROCESSOR?\r
+;2\r
+XP APRSN,2\r
+\r
+\r
+;NAME OF SYSTEM DEVICE?[DTA0 USUAL FOR 10/40 SYSTEM,\r
+;DSK USUAL FOR 10/50 SYSTEM]\r
+DEFINE SYSDEV\r
+< SIXBIT "DSK">\r
+DEFINE SYSDAT\r
+< ASCIZ /6-3-69/>\r
+\r
+;DATA LINE SCANNER(DC10)?[N = WILL ASK FOR 680 OR 630]\r
+;Y\r
+\r
+XP DLSN,1\r
+XP CCIN,0\r
+XP DCSN,0\r
+\r
+;HIGHEST (OCTAL) LINE NUMBER?[USUALLY 7,17,27, ETC. FOR DC-10 OR 630\r
+;10, 20, 30 ETC. FOR 680 (TO ALLOW FOR PDP-8 CTY)]\r
+;27\r
+XP HGHLIN,27\r
+\r
+;FULL DUPLEX TTY SOFTWARE?[N = OLD HALF DUPLEX SOFTWARE]\r
+;Y\r
+\r
+XP FULLN,1\r
+XP TABSN,0\r
+\r
+;COMMON.MAC ALREADY EDITED FOR YOUR TTY CONFIGURATION?\r
+;[N = WILL ALLOW YOU TO DEFINE NOW]\r
+;Y\r
+\r
+XP EDITN,1\r
+\r
+;PT READER?\r
+;Y\r
+\r
+PTRN=1 ;NOT GLOBAL BECAUSE OF DSKSER USE\r
+\r
+;PT PUNCH?\r
+;Y\r
+\r
+XP PTPN,1\r
+\r
+;PLOTTER?\r
+;Y\r
+\r
+XP PLTN,1\r
+\r
+;HOW MANY LINE PRINTERS?\r
+;1\r
+XP LPTN,1\r
+\r
+;CARD READER?\r
+;Y\r
+\r
+\r
+;CR10?[Y = CR10A TOO, N IF PDP-6 CARD READER]\r
+;Y\r
+\r
+XP CDRN,1\r
+XP CR10N,1\r
+\r
+;CARD PUNCH\r
+;N\r
+\r
+XP CDPN,0\r
+\r
+;DISPLAY?\r
+;N\r
+\r
+XP DISN,0\r
+XP PENN,0\r
+XP T340N,0\r
+\r
+;HOW MANY DECTAPES?\r
+;8\r
+\r
+;TD10 DECTAPE CONTROL?[N = PDP-6 DECTAPE]\r
+;Y\r
+XP DTAN,10\r
+XP DTCN,0\r
+\r
+;HOW MANY MAGTAPES?\r
+;3\r
+\r
+;TM-10A CONTROL?[N = WILL ASK TM-10B, THEN PDP-6 MAGTAPES]\r
+;Y\r
+\r
+XP MTAN,3\r
+XP MTBN,0\r
+XP MTCN,0\r
+\r
+;HOW MANY PSEUDO-TTY'S?[EACH CONCURRENT BATCH NEEDS ONE]\r
+;2\r
+XP PTYN,2\r
+;TYPE "SYMBOL,VALUE" (VALUE IN DECIMAL)[FOR ANY SYMBOLS\r
+;TO BE DEFINED. TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]\r
+RADIX 10\r
+\r
+RADIX 8\r
+;TYPE "DEVICE-MNEMONIC,CHANNEL"FOR SPECIAL DEVICES\r
+;[WITH NEITHER CHANNEL SAVE ROUTINE NOR DEVICE DATA BLOCK.\r
+;"DEVICE" MUST BE 5 CHARCATERS OR LESS,\r
+;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]\r
+DEFINE SPCINT\r
+<\r
+>;TYPE "DEVICE-MNEMNIC,CHANNEL,NO.-OF-DEVICES"\r
+;[FOR SPECIAL DEVICE WITH CHANNEL SAVE ROUTINES AND DEVICE DATA BLOCKS\r
+;"DEVICE" MUST BE 5 CHARS. OR LESS.\r
+;TYPE EXTRA CARRIAGE RETUERN WHEN THROUGH.]\r
+DEFINE SPCSAV\r
+<\r
+>;MONGEN FINISHED\r
+;NEXT YOU MUST ASSEMBLE COMMON WITH MACRO\r
+;THEN LOAD IT AND REST OF MONITOR WITH LOADER\r
+;AND FINALLY SAVE IT WITH MONITOR COMMAND SAVE\r
+\r
+;[TO ASSEMBLE COMMON, TYPE\r
+;R MACRO\r
+;DSK:COMMON,LPT:_DSK:S,CONFIG,COMMON\r
+;TO LOAD NEW MONITOR, TYPE\r
+;R LOADER\r
+;/S\r
+;DSK:COMMON,DSK:SYS50/L\r
+;LPT:_/W/D/A/M/P/G\r
+;TO SAVE MONITOR, TYPE\r
+;SAVE DSK MONITOR\r
+;]\r
+; ;END OF CONFIGURATION DEFINITION\r
--- /dev/null
+CDRSR6,CDRSR6/C_S,CDRSR6/N\r
+CDRSRX,CDRSRX/C_S,CDRSRX/N\r
+CLOCK1,CLOCK1/C_S,FT50SD,CLOCK1/N\r
+CLKCSS,CLKCSS/C_S,FT50SD,CLKCSS/N\r
+COMCON,COMCON/C_S,FT50SD,COMCON/N\r
+COMMON,COMMON/C_S,CONFIG,COMMON/N\r
+CORE1,CORE1/C_S,FT50SD,CORE1/N\r
+DIS340,DIS340/C_S,DISSER/N\r
+DIST30,DIST30/C_S,DIST30,DISSER/N\r
+DCSINT,DCSINT/C_S,DCSINT/N\r
+DLSINT,DLSINT/C_S,DLSINT/N\r
+DPDINT,DPDINT/C_S,DPDINT/N\r
+DSKINT,DSKINT/C_S,DSKINT/N\r
+DSKSER,DSKSER/C_S,FT50SD,DSKSER/N\r
+DTCSRN,DTCSRN/C_S,FT50SD,DTCSRN/N\r
+DTASRN,DTASRN/C_S,FT50SD,DTASRN/N\r
+EDDT,EDDT/C_EDDT/N\r
+ERRCON,ERRCON/C_S,ERRCON/N\r
+JOBDAT,JOBDAT/C_JOBDAT/N\r
+LPTSER,LPTSER/C_S,LPTSER/N\r
+MTCSR6,MTCSR6/C_S,MTCSR6/N\r
+MTASRX,MTASRX/C_S,MTASRX/N\r
+NULSEG,NULSEG/C_S,FT50SD,NULSEG/N\r
+SEGCON,SEGCON/C_S,FT50SD,SEGCON/N\r
+PLTSER,PLTSER/C_S,PLTSER/N\r
+PTRSER,PTRSER/C_S,PTRSER/N\r
+PTPSER,PTPSER/C_S,PTPSER/N\r
+PTYSRF,PTYSRF/C_S,PTYSRF/N\r
+PTYSRH,PTYSRH/C_S,PTYSRH/N\r
+PATCH,PATCH/C_PATCH/N\r
+SYSINI,SYSINI/C_S,SYSINI\r
+SYSMAK,SYSMAK/C_S,SYSMAK/N\r
+ONCEB,ONCEB/C_S,FT50SD,ONCEB/N\r
+SCNSRF,SCNSRF/C_S,FT50SD,SCNSRF/N\r
+SCHEDB,SCHEDB/C_S,FT50SD,SCHEDB/N\r
+UUOCON,UUOCON/C_S,FT50SD,UUOCON/N\r
-CLOCK1,CLOCK1/C_S,FT40N,CLOCK1/N\r
-CLKCSS,CLKCSS/C_S,FT50SB,CLKCSS/N\r
-COMCON,COMCON/C_S,FT50SB,COMCON/N\r
-COMMON,COMMON/C_S,CONFIG,COMMON/N\r
-CORE1,CORE1/C_S,FT50SB,CORE1/N\r
-DIS340,DIS340/C_S,DISSER/N\r
-DIS34,DIS30/C_S,DIST30,DISSER/N\r
-DCSINT,DCSINT/C_S,DCSINT/N\r
-DLSINT,DLSINT/C_S,DLSINT/N\r
-DPDINT,DPDINT/C_S,DPDINT/N\r
-DSKINT,DSKINT/C_S,DSKINT/N\r
-DSKSER,DSKSER/C_S,FT50SB,DSKSER/N\r
-DTCSRN,DTCSRN/C_S,FT50SB,DTCSRN/N\r
-DTASRN,DTASRN/C_S,FT50SB,DTASRN/N\r
-EDDT,EDDT/C_EDDT/N\r
-ERRCON,ERRCON/C_S,ERRCON/N\r
-JOBDAT,JOBDAT/C_JOBDAT/N\r
-LPTSER,LPTSER/C_S,LPTSER/N\r
-MTCSR6,MTCSR6/C_S,MTCSR6/N\r
-MTASRX,MTASRX/C_S,MTASRX/N\r
-NULSEG,NULSEG/C_S,FT50SB,NULSEG/N\r
-PLTSER,PLTSER/C_S,PLTSER/N\r
-PTRSER,PTRSER/C_S,PTRSER/N\r
-PTPSER,PTPSER/C_S,PTPSER/N\r
-PTYSRF,PTYSRF/C_S,PTYSRF/N\r
-PTYSRH,PTYSRH/C_S,PTYSRH/N\r
-PATCH,PATCH/C_PATCH/N\r
-ONCEB,ONCEB/C_S,FT50SB,ONCEB/N\r
-SCNSRF,SCNSRF/C_S,FT50SB,SCNSRF/N\r
-SCHEDB,SCHEDB/C_S,FT50SB,SCHEDB/N\r
-UUOCON,UUOCON/C_S,FT50SB,UUOCON/N\r
+CDRSR6,CDRSR6/C_S,CDRSR6\r
+CDRSRX,CDRSRX/C_S,CDRSRX\r
+CLOCK1,CLOCK1/C_S,FT50SB,CLOCK1\r
+CLKCSS,CLKCSS/C_S,FT50SB,CLKCSS\r
+COMCON,COMCON/C_S,FT50SB,COMCON\r
+COMMON,COMMON/C_S,CONFIG,COMMON\r
+CORE1,CORE1/C_S,FT50SB,CORE1\r
+DIS340,DIS340/C_S,DISSER\r
+DIST30,DIST30/C_S,DIST30,DISSER\r
+DCSINT,DCSINT/C_S,DCSINT\r
+DLSINT,DLSINT/C_S,DLSINT\r
+DPDINT,DPDINT/C_S,DPDINT\r
+DSKINT,DSKINT/C_S,DSKINT\r
+DSKSER,DSKSER/C_S,FT50SB,DSKSER\r
+DTCSRN,DTCSRN/C_S,FT50SB,DTCSRN\r
+DTASRN,DTASRN/C_S,FT50SB,DTASRN\r
+EDDT,EDDT/C_EDDT\r
+ERRCON,ERRCON/C_S,ERRCON\r
+JOBDAT,JOBDAT/C_JOBDAT\r
+LPTSER,LPTSER/C_S,LPTSER\r
+MTCSR6,MTCSR6/C_S,MTCSR6\r
+MTASRX,MTASRX/C_S,MTASRX\r
+NULSEG,NULSEG/C_S,FT50SB,NULSEG\r
+SEGCON,SEGCON/C_S,FT50SB,SEGCON\r
+PLTSER,PLTSER/C_S,PLTSER\r
+PTRSER,PTRSER/C_S,PTRSER\r
+PTPSER,PTPSER/C_S,PTPSER\r
+PTYSRF,PTYSRF/C_S,PTYSRF\r
+PTYSRH,PTYSRH/C_S,PTYSRH\r
+PATCH,PATCH/C_PATCH\r
+SYSINI,SYSINI/C_S,FT50SB,SYSINI\r
+SYSMAK,SYSMAK/C_S,SYSMAK\r
+ONCEB,ONCEB/C_S,FT50SB,ONCEB\r
+SCNSRF,SCNSRF/C_S,FT50SB,SCNSRF\r
+SCHEDB,SCHEDB/C_S,FT50SB,SCHEDB\r
+UUOCON,UUOCON/C_S,FT50SB,UUOCON\r
--- /dev/null
+SUBTTL CONFIG - CONFIGURATION DEFINITION FILE OUTPUT BY MONGEN DIALOG\r
+\r
+\r
+;ANSWER THE FOLLOWING QUESTIONS WITH Y OR N OR A DECIMAL NUMBER\r
+\r
+;SHORT DIALOG?[N = LONGER QUESTIONS]\r
+;Y\r
+\r
+\r
+;10/30 SYSTEM TO BE BUILT?[N = 10/40 OR 10/50 SYSTEM]\r
+;N\r
+\r
+\r
+;10/40 SYSTEM TO BE BUILT?[N = ASSUME 10/50 SYSTEM]\r
+;Y\r
+\r
+XP SYS40N,1\r
+XP SYS50N,0\r
+XP DSKN,1\r
+XP LOGINN,1\r
+\r
+;RD10 (BURROUGHS) DISK?[ONE DISK TYPE FOR FILES,\r
+;SAME TYPE FOR SWAPPING OR ONE OTHER TYPE FOR SWAPPING]\r
+;Y\r
+\r
+XP RD10N,1\r
+\r
+;RD10 FOR SWAPPING?[N = CAN SWAP ON SOME OTHER TYPE]\r
+;Y\r
+\r
+XP RDSWPN,1\r
+\r
+;RP10 (MEMOREX) DISK PACKS?\r
+;N\r
+\r
+XP RP10N,0\r
+XP RPSWPN,0\r
+\r
+;RA10 (BRYANT) DISK?\r
+;N\r
+\r
+XP RA10N,0\r
+XP RASWPN,0\r
+\r
+;DPD (DATA PRODUCTS) DISK?\r
+;N\r
+\r
+XP DPDN,0\r
+XP DPSWPN,0\r
+\r
+;HOMW MANY JOBS?[ATTACHED AND DETACHED, COUNTING NULL JOB]\r
+;28\r
+XP JOBN,34\r
+\r
+;MAX SIZE OF CORE (IN K) FOR ANY SINGLE USER?\r
+;0 MEANS ALL OF CORE\r
+;0\r
+XP COREN,0\r
+\r
+;PDP-10 PROCESSORE?[N = PDP-6]\r
+;Y\r
+\r
+XP PDP10N,0\r
+\r
+;2 RELOCATION REG, SOFTWARE?[Y = MUST HAVE KT10A,\r
+;N = JUST 1 RELOC. REG.]\r
+;Y\r
+\r
+XP KT10AN,0\r
+\r
+\r
+;HOW MANY MORE SEGMENTS THAN JOBS?[0 UNLESS YOU\r
+;ANTICIPATE A LOT OF DORMANT SEGMENTS]\r
+;0\r
+XP SEGN,0\r
+\r
+;LOAD EXEC DDT?[N = ONLY IF LOADER HAS RUN OUT OF CORE BEFORE]\r
+;Y\r
+\r
+XP DDTN,1\r
+\r
+;LOAD LOCAL SYMBOLS?[N = ONLY IF LOADER HAS RUN OUT OF ROOM BEFORE]\r
+;Y\r
+\r
+\r
+;LOAD USER DDT?[BOTH CAN BE LOADED TOGETHER,\r
+;USE USER DDT FOR PATCHING UNDER TIME SHARING]\r
+;Y\r
+\r
+XP UDDTN,1\r
+\r
+;NAME OF THIS SYSTEM (24 CHARS OR LESS)?\r
+DEFINE SYSNAM\r
+< ASCIZ \4S47 DEC PDP-10 #2\>\r
+\r
+;WHAT IS THE SERIAL NUMBER OF YOUR ARITHMETIC PROCESSOR?\r
+;2\r
+XP APRSN,2\r
+\r
+\r
+;NAME OF SYSTEM DEVICE?[DTA0 USUAL FOR 10/40 SYSTEM,\r
+;DSK USUAL FOR 10/50 SYSTEM]\r
+DEFINE SYSDEV\r
+< SIXBIT "DSK">\r
+DEFINE SYSDAT\r
+< ASCIZ /6-3-69/>\r
+\r
+;DATA LINE SCANNER(DC10)?[N = WILL ASK FOR 680 OR 630]\r
+;Y\r
+\r
+XP DLSN,1\r
+XP CCIN,0\r
+XP DCSN,0\r
+\r
+;HIGHEST (OCTAL) LINE NUMBER?[USUALLY 7,17,27, ETC. FOR DC-10 OR 630\r
+;10, 20, 30 ETC. FOR 680 (TO ALLOW FOR PDP-8 CTY)]\r
+;27\r
+XP HGHLIN,27\r
+\r
+;FULL DUPLEX TTY SOFTWARE?[N = OLD HALF DUPLEX SOFTWARE]\r
+;Y\r
+\r
+XP FULLN,1\r
+XP TABSN,0\r
+\r
+;COMMON.MAC ALREADY EDITED FOR YOUR TTY CONFIGURATION?\r
+;[N = WILL ALLOW YOU TO DEFINE NOW]\r
+;Y\r
+\r
+XP EDITN,1\r
+\r
+;PT READER?\r
+;Y\r
+\r
+PTRN=1 ;NOT GLOBAL BECAUSE OF DSKSER USE\r
+\r
+;PT PUNCH?\r
+;Y\r
+\r
+XP PTPN,1\r
+\r
+;PLOTTER?\r
+;Y\r
+\r
+XP PLTN,1\r
+\r
+;HOW MANY LINE PRINTERS?\r
+;1\r
+XP LPTN,1\r
+\r
+;CARD READER?\r
+;Y\r
+\r
+\r
+;CR10?[Y = CR10A TOO, N IF PDP-6 CARD READER]\r
+;Y\r
+\r
+XP CDRN,1\r
+XP CR10N,1\r
+\r
+;CARD PUNCH\r
+;N\r
+\r
+XP CDPN,0\r
+\r
+;DISPLAY?\r
+;N\r
+\r
+XP DISN,0\r
+XP PENN,0\r
+XP T340N,0\r
+\r
+;HOW MANY DECTAPES?\r
+;8\r
+\r
+;TD10 DECTAPE CONTROL?[N = PDP-6 DECTAPE]\r
+;Y\r
+XP DTAN,10\r
+XP DTCN,0\r
+\r
+;HOW MANY MAGTAPES?\r
+;3\r
+\r
+;TM-10A CONTROL?[N = WILL ASK TM-10B, THEN PDP-6 MAGTAPES]\r
+;Y\r
+\r
+XP MTAN,3\r
+XP MTBN,0\r
+XP MTCN,1\r
+\r
+;HOW MANY PSEUDO-TTY'S?[EACH CONCURRENT BATCH NEEDS ONE]\r
+;2\r
+XP PTYN,2\r
+;TYPE "SYMBOL,VALUE" (VALUE IN DECIMAL)[FOR ANY SYMBOLS\r
+;TO BE DEFINED. TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]\r
+RADIX 10\r
+\r
+RADIX 8\r
+;TYPE "DEVICE-MNEMONIC,CHANNEL"FOR SPECIAL DEVICES\r
+;[WITH NEITHER CHANNEL SAVE ROUTINE NOR DEVICE DATA BLOCK.\r
+;"DEVICE" MUST BE 5 CHARCATERS OR LESS,\r
+;TYPE EXTRA CARRIAGE RETURN WHEN THROUGH.]\r
+DEFINE SPCINT\r
+<\r
+>;TYPE "DEVICE-MNEMNIC,CHANNEL,NO.-OF-DEVICES"\r
+;[FOR SPECIAL DEVICE WITH CHANNEL SAVE ROUTINES AND DEVICE DATA BLOCKS\r
+;"DEVICE" MUST BE 5 CHARS. OR LESS.\r
+;TYPE EXTRA CARRIAGE RETUERN WHEN THROUGH.]\r
+DEFINE SPCSAV\r
+<\r
+>;MONGEN FINISHED\r
+;NEXT YOU MUST ASSEMBLE COMMON WITH MACRO\r
+;THEN LOAD IT AND REST OF MONITOR WITH LOADER\r
+;AND FINALLY SAVE IT WITH MONITOR COMMAND SAVE\r
+\r
+;[TO ASSEMBLE COMMON, TYPE\r
+;R MACRO\r
+;DSK:COMMON,LPT:_DSK:S,CONFIG,COMMON\r
+;TO LOAD NEW MONITOR, TYPE\r
+;R LOADER\r
+;/S\r
+;DSK:COMMON,DSK:SYS50/L\r
+;LPT:_/W/D/A/M/P/G\r
+;TO SAVE MONITOR, TYPE\r
+;SAVE DSK MONITOR\r
+;]\r
+; ;END OF CONFIGURATION DEFINITION\r
LSH TAC,-12\r
>\r
JRST STOTAC ;STORE IN USER AC AND RETURN TO USER\r
-\f;ROUTINE TO CHECK JOBS TO SEE IF ANY JOB CAN BE SHUFFLED\r
+\f\r
+;ROUTINE TO CHECK JOBS TO SEE IF ANY JOB CAN BE SHUFFLED\r
;IT IS CALLED EVERY 60TH OF A SECOND BY CLOCK ROUTINE\r
;PROVIDING CURRENT JOB IS IN USER MODE OR JUST ENTERING\r
;IO WAIT OR SHARABLE DEVICE WIAT OR RETURNING ON UUO CALLS\r
;THE NSHF BIT IN JOBSTS WHOULD BE SET FOR JOBS USING DISPLAYS\r
;SINCE DISSER CONTINUALLY REFERENCES USER AREA EVEN THOUGH\r
;IOAC1 IS OFF.\r
-\r
+\f\r
;THIS VERSION OF THE CORE SHUFFLER WORKS AS FOLLOWS:\r
;EVERY CLOCK TICK FOR WHICH ALL JOBS ARE SHUFFABLE(NOT COUNTING ACTIVE\r
;IO DEVICES). THE JOB IMMEDIATELY ABOVE THE LOWEST HOLE\r
MOVSI TAC,SHF ;SET SHF WAIT BIT IN JOB STATUS WORD\r
IORM TAC,JBTSTS(ITEM) ;SO JOB WILL NOT BE RUN\r
POPJ PDP, ;AND IO WILL STOP SOON\r
-\f\r
-;ROUTINE TO TEST FOR ANY ACTIVE DEVICES\r
+\f;ROUTINE TO TEST FOR ANY ACTIVE DEVICES\r
\r
;CALL: MOVE ITEM,JOB NUMBER OR HIGH SEG NUMBER\r
; MOVE JDAT,ADDRESS OF JOB DATA AREA\r
TDNN AC3,DEVMOD(DEVDAT) ;NOT FINISHED, IS DEVICE TTY?\r
POPJ PDP, ;NO, ERROR RETURN, CANNOT ASSIGN CORE\r
JRST ANY2 ;YES, KEEP LOOKING FOR AN ACTIVE DEVICE\r
-\f\r
-;ROUTINE TO TEST TO SEE IF JOB OR HIGH SEG CAN BE SWAPPED\r
+\f;ROUTINE TO TEST TO SEE IF JOB OR HIGH SEG CAN BE SWAPPED\r
; OR WHETHER IT SHOULD BE ALLOWED TO CONITNUE RUNNING\r
; UNTIL A MORE FAVORABLE ITME\r
;CALL: MOVE ITEM,HIGH RO LOW SEG NUMBER\r
JRST CPOPJ1 ;NO, GIVE OK RETURN\r
>\r
>\r
-\f\r
-;ROUTINE TO FLUSH PHYSICAL CORE ASSIGNED IN MEMORY\r
+\f;ROUTINE TO FLUSH PHYSICAL CORE ASSIGNED IN MEMORY\r
;NOTE: THIS ROUTINE DIFERS SIGNIFICANTLY FROM CORE0 AND CORE1 IN THAT\r
;IT IS ONLY A PHYSICAL REMOVAL OF CORE(VIRTAL IS NOT AFFECTED)\r
;SEE COMMENTS FOR CORE1\r
; AND FLUSH PHYSICAL CORE(LOGICAL CORE UNEFFECTED)\r
\r
\r
+\r
;CORE0 IS CALLED BY THE CORE MONITOR COMMAND AND THE CORE SHUFFLER\r
\r
;AND RUN COMMAND\r
;THE CORE ROUTINES DO NOT ALTER THE HIGH SEG IN CORE COUT. IT IS UP TO THE CALLER\r
;(IN SEGCOR) TO CALL THE CORE ROUTINES ONLY IF IN CORE COUNT IS 0\r
;AND END OF SWAPIN OF LOW SEG AND HIGH SEG IS ALREADY IN CORE FOR OTHER USER\r
-\f\r
-CORE0:\r
+\fCORE0:\r
IFE FTSWAP,<\r
JUMPE PROG,CORGET ;IS JOB WITHOUT CORE IN MEMORY?\r
>\r
PUSHJ PDP,ANYACT ;NO,ANY ACTIVE DEVICE?\r
POPJ PDP, ;YES, CANNOT ASSIGN CORE\r
; NO, FALL INTO CORE1\r
-;ROUTINE TO TRY TO ASSIGN CORE IN CORE\r
+\f;ROUTINE TO TRY TO ASSIGN CORE IN CORE\r
;LOW OR HIGH SEG MUST NOT BE SWAPPED OUT(CALLER'S RESPONSIBILITY)\r
;AND MUST NOT HAVE ANY ACTIVE DEVICES(IT MAY HAVE 0 CORE IN CORE THOUGH)\r
;IN OTHER WORDS HIGH OR LOW SEG MAY OR MAY NOT HAVE VIRTUAL CORE\r
HLRZ BLK,PROG ;HIGHEST LEGAL REL. ADR.\r
MOVEI T,0 ;CLEAR FOR CORSTG CALL\r
PUSHJ PDP,CORSTG ;RETURN OLD CORE TO FREE STORAGE\r
-;CORGET IS CALLED BY SWAPPER WHEN JOB IS ON DISC AND IS\r
+\f;CORGET IS CALLED BY SWAPPER WHEN JOB IS ON DISC AND IS\r
;WANTED IN CORE.\r
\r
CORGET: SETZB LOC,PROG ;SET NEW ASSIGNMENT TO 0 AND DIST. MOVED\r
;OLD, CLEAR OUT INCREASED SO SECURITY WILL\r
; BE MAINTAINED. TAC1 IS SIZE-1 OF OLD\r
; ASSIGNMENT. -1 OF NO OLD ASSIGNMENT\r
-;HERE WHEN FREE CORE TABLE DOES NOT HAVE ENOUGH ROOM FOR REQUEST\r
+\f;HERE WHEN FREE CORE TABLE DOES NOT HAVE ENOUGH ROOM FOR REQUEST\r
\r
BAKOLD:\r
IFN FTSWAP,<\r
>\r
BKOLD1: HLRZ TAC,JBTADR(ITEM) ;GIVE BACK OLD CORE.\r
JRST CORGET\r
-\f\r
-;MOVE OLD CORE TO NEW AREA\r
+\f;MOVE OLD CORE TO NEW AREA\r
\r
MOVCOR: CAIN LOC,(BLK) ;IS NEW CORE IN SAME PLACE AS OLD?\r
JRST CLRCOR ;YES, DO NOT MOVE IT,CLEAR IF INCREASE\r
CAILE TAC1,(TAC) ;IS OLD CORE LESS THEN NEW?\r
HRRZ TAC1,TAC ;NO, MOVE THE SHORTENED NEW CORE\r
IFN FTTIME,<\r
- EXTERNAL SHRWRD\r
- ADDM TAC1,SHRWRD ;INCREMENT TOTAL NO. WORDS SHUFFLED\r
+ EXTERNAL SHFWRD\r
+ ADDM TAC1,SHFWRD ;INCREMENT TOTAL NO. WORDS SHUFFLED\r
>\r
ADD TAC1,LOC ;ADD IN NEW RELOC.\r
MOVE AC1,LOC ;DEST.=NEW RELOC.\r
SETZM -1(TAC1) ;CLEAR FIRST WORD\r
HRLI TAC1,-1(TAC1) ;SET LH TO FIRST ADR. TO CLEAR\r
BLT TAC1,(TAC) ;CLEAR THE INCREASE PORTION\r
+\f\r
;IF THE SHUFFLED JOB IS IN EXEC MODE, ITS DUMP ACS\r
;(PDP,PROG,JDAT SAVED IN JOB DATA AREA) MUST BE\r
;ALTERED BY DISTANCE CODE WAS MOVED\r
SUBI LOC,2000(BLK) ;YES, SET LOC TO FIRST BLOCK IN HOLD\r
SOJA BLK,CPOPJ1 ;SET BLK TO HIGHEST REL. LOC.\r
; AND RETURN\r
-\f\r
-;ROUTINE TO SET AND CLEAR CORE USE TABLE\r
+\f;ROUTINE TO SET AND CLEAR CORE USE TABLE\r
;CALL: MOVEI T,1 ;TO SET TABLE\r
MOVEI T,0 ;TO CLEAR TABLE\r
; MOVE BLK,HIGHEST REL. LOC. IN USER AREA\r
+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
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
ANDCAM TAC,JBTSTS(ITEM)\r
\r
DISIN1: SETOM PENLOC\r
- MOVSI TAC,DISWAT+DISUUO ;IGNORE FURTHER TRAPS\r
+ MOVSI TAC,DISWAT+DISUUI ;IGNORE FURTHER TRAPS\r
HRRI TAC,IOACT ;INDICATED DEVICE INACTIVE\r
ANDCAM TAC,DISIOS ;INTO DEVICE DATA BLOCK\r
DISOFF: CONO DIS,OFFDIS ;REMOVE THE DISPLAY'S CHANNE; ASSIGNMENTS\r
\r
CLOK: MOVSI IOS,DISCKR ;INDICATE CLOCK REQUEST SERVICED\r
ANDCAB IOS,DISIOS ;...\r
- TLDE IOS,DISUUI\r
+ TLOE IOS,DISUUI\r
MOVSI IOS,DISTAR ;ASK DISPLAY TO RESTART\r
IORB IOS,DISIOS ;...\r
TLNN IOS,DISWAT ;HAS DISPLAY FINISHED?\r
\r
>\r
DSKEND: END\r
+\0\0\0\0
\ No newline at end of file
; UNLESS USER SPECIFIES OTHERWISE DURING "ONCE".\r
>\r
IFE FTRC10, <\r
-MDFBLK: 13000 ;THIS BLOCK CONTAINS RETRIEVAL INFO, OF MFD\r
+MFDBLK: 13000 ;THIS BLOCK CONTAINS RETRIEVAL INFO, OF MFD\r
SATXWD: XWD -NUMSAT,13001 ;LH=NUMBER OF SAT BLOCKS.\r
;RH=FIRST SAT BLOCK NUMBER.\r
>>\r
USRCNT: BLOCK 1 ;COUNT OF WAITING USER JOBS\r
DFBUSY: 0 ;-1 IF DISK CONTROL IN USE, 0 IF FREE\r
FAT: 0 ;POINTER TO FIRST ACCESS TABLE ENTRY\r
-DKSMOT: 0 ;COUNT OF VARIOUS CHECKSUM ERRORS\r
+CKSMCT: 0 ;COUNT OF VARIOUS CHECKSUM ERRORS\r
REFLAG: 0 ;CONTAINS A PPN TO ALLOW LOGIN AFTER REFRESH\r
UXFERS: 0 ;TOTAL USER TRANSFER ATTEMPTED\r
ECOUNT: 0 ;TOTAL HARDWARE ERRORS ON USER TRANSFERS\r
IFN FTRA10, <\r
EXTERNAL MFDBLK,SATXWD,NUMBLK,SATENT,SENTSZ,SATTOP\r
>\r
-IFE FTRA10,<\r
+IFE FTRA10, <\r
INTERNAL SATENT\r
\r
IFN FTRC10, <\r
;ONE SAT BLOCK ON THE DATA PRODUCTS 270 DISK.\r
>\r
XP SENTSZ,3 ;SIZE OF EACH SATENT ENTRY\r
-IFN FTREC10, <\r
+IFN FTRC10, <\r
DSKXDB=0 ;ON PDP-10 DISK FILE STORAGE BEGINS IN LOGICAL\r
; BLOCK NO. 0,\r
>\r
; IN SAT BLOCK\r
DSKXDB=DSKXDB+NUMBLK>\r
\r
- XP SATTOP,SATENT*SENTSZ*NUMSAT-SENTSZ\r
+ XP SATTOP,SATENT+SENTSZ*NUMSAT-SENTSZ\r
>;END OF FTRA100 CONDITIONAL\r
\r
SAT: BLOCK 200 ;CURRENT SAT BLOCK\r
\r
- XP SAATM2,SAT-2 ;LOWEST ABS, ADR-1 ALLOWED IN CHANNEL COMMAND\r
+ XP SATM2,SAT-2 ;LOWEST ABS, ADR-1 ALLOWED IN CHANNEL COMMAND\r
; LIST - USED TO KEEP FROM WIPING OUT MONITOR.\r
SATBK2: XWD -200,SAT\r
\f\r
\r
NOTINU=0 ;NO SUCH FILE\r
NOTINM=1 ;NO SUCH USER\r
-PHOTF=2 ;PROTECTION FAILURE\r
+PROTF=2 ;PROTECTION FAILURE\r
NORITE=3 ;MORE THAN 1 WRITE TO A FILE\r
RENFAL=4 ;TRIED TO RENAME FILE TO EXISTING NAME OR ENTER\r
; A NULL FILE NAMES\r
TLZE IOS,PRCHG ;PROTECTION CHANGE FAILURE?\r
JRST DFLUK7 ;YES. ERROR RETURN\r
MOVSI DAT,200000 ;READ PROTECTION BIT\r
- PUSH J PDP,PROTEK ;READ PROTECTED?\r
+ PUSHJ PDP,PROTEK ;READ PROTECTED?\r
JRST DFERR3 ;NAME WRONG\r
JRST DFLUK7 ;PROTECTION FAILURE\r
\r
TLNE AC1,-1 ;NO, SAME PROJECT?\r
ROT DAT,-3 ;NO, ROTATE TO UNIVERAL FIELD\r
\r
-PROT1: TLZ DAT,60000 ;DO NOT TEST OWNER READ OR PROTECT PROTECTION\r
+PROT1: TLZ DAT,60000 ;DO NOT TEST OWNER READ OR PROTECT PROTECTION\r
TDNN DAT,2(TAC)\r
- JRST CPOPJ1 ;PROTECTION O.K.\r
+ JRST CPOPJ1 ;PROTECTION O.K.\r
MOVE AC1,PRJPRG(ITEM)\r
- CAMN AC1,DUMPPP ;EQUAL TO DUMPPER PROJECT\r
- ;PROGRAMMER NUMBER?\r
- AOS(PDP) ;YES, ALL FILES AVAILABLE\r
+ CAMN AC1,DUMPPP ;EQUAL TO DUMPPER PROJECT\r
+ ;PROGRAMMER NUMBER?\r
+ AOS(PDP) ;YES, ALL FILES AVAILABLE\r
POPJ PDP,\r
\f\r
-;CLOSE UUO\r
+ CLOSE UUO\r
;CLOSE AN OUTPUT FILE\r
\r
EXTERNAL PIOMOD,WAIT1,OUT\r
JRST WUFD3 ;WRITE ERROR\r
MOVE TAC,DEVOAD(DEVDAT)\r
TLO IOS,NMP ;SET NMP\r
- MOVEM IOS,DEVIOS(DEVDAT) ;SO DFO4A WON'T READ POINTERS\r
+ MOVEM IOS,DEVIOS(DEVDAT) ;SO WON'T READ POINTERS\r
TLN TAC,PNTDIF ;WERE POINTERS CHANGED?\r
PUSHJ PDP,DFO4A ;YES, WRITE THEM OUT.\r
SOSL AUREQ ;RELEASE UFD RESOURCE\r
MOVMS ITEM\r
ADDI ITEM,BLKSIZ-1 ;MAKE E.G. 129 WORDS USE 2 DISK BLOCK\r
ASH ITEM,-BLKP2 ;NUMBER OF BLOCK REQUIRED FOR THIS WRITE\r
-DFDO2A: HRRZ AC1,SATPTR\r
+DFD02A: HRRZ AC1,SATPTR\r
MOVE AC2,SATBK2\r
DFDO1B: PUSHJ PDP,GETBIT ;ASK FOR C(ITEM BITS)\r
JRST DFDO6 ;NOT AVAILABLE\r
MOVE TAC,DEVBLK(DEVDAT) ;RESET DEVBKO\r
MOVEM TAC,DEVBKO(DEVDAT) ;BLOCK # WORD INDEX OF A CURRENT RETRIEVAL PACKET\r
GTPTR1: PUSHJ PDP,SET000 ;SET TAC1 TO FIRST WORD OF RIB\r
- MOVE IOS,DEVIOS(DEVDAT) \r
+\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f MOVE IOS,DEVIOS(DEVDAT) \r
HRRZ AC3,DEVBLK(DEVDAT) ;WORD INDEX OF RETRIEVAL POINTER PACKET\r
ADD AC3,TAC1 ;AC3 POINTS TO NEXT POINTER WITHIN RIB\r
ADDI TAC1,BLKSIZ-2 ;TAC1 POINTS TO WORD 127\r
ORM TAC1,DEVOAD(DEVDAT)\r
MOVEM TAC,@DAT>\r
\r
-DFOT3A: CAIE DAT,PRTN(DEVDAT) ;*LIST FULL?\r
+DFOT3A: CAIE DAT,PTRN(DEVDAT) ;*LIST FULL?\r
JRST QOUT ;*NO, WRITE AND LEAVE\r
\r
;OUTPUT UUO CONTINUED.\r
INTERNAL CLRDDB\r
\r
CLRDDB: MOVEI TAC,DSKDDB ;POINT TO PROTOTYPE DDB\r
-CLRDB1: MOVE TAC1,TAC ;COPY LINK TO TAC1\r
+CLDDB1: MOVE TAC1,TAC ;COPY LINK TO TAC1\r
HLRZ TAC,DEVSER(TAC1) ;GET LINK TO NEXT DDB\r
JUMPE TAC,CPOPJ ;0 MEANS END\r
CAIE TAC,(DEVDAT) ;OWNED BY CURRENT USER?\r
\r
SETBF6: AOSE MQREQ\r
PUSHJ PDP,MQWAIT\r
- TLO IUOS,UBFU ;BUFFER IN MONITOR CORE\r
+ TLO IOS,UBFU ;BUFFER IN MONITOR CORE\r
MOVEI TAC1, MONBUF ;TAC1 POINTS TO MONITOR BUFFER\r
JRST SETBF5\r
\r
CAMN DAT,(TAC)\r
JRST GETZ2\r
\r
-GETZ3: TONE TAC1,(TAC)\r
+GETZ3: TDNE TAC1,(TAC)\r
JRST GETZ1\r
JRST CPOPJ\r
\r
\r
DFINT:\r
IFN FTSWAP,<\r
- EXTERNAL SQREQ,SERA,SOGO,SWPINT\r
+ EXTERNAL SQREQ,SERA,SQGO,SWPINT\r
MOVE TAC,SERA ;*WAS THAT A SWAPPING JOB?\r
TLNE TAC,200000 ;*\r
JRST SWPINT ;*YES\r
DFINT4: MOVEM IOS,DEVIOS(DEVDAT) ;CLEAR IOACT\r
DINT4A: IFN FTSWAP,<\r
SKIPE SQREQ ;SWAPPING JOB WAITING?\r
- JRST SOGO ;YES,START IT\r
+ JRST SQGO ;YES,START IT\r
>\r
INTERNAL DINT4B\r
\r
JRST USRGO\r
\r
;START UP A USER READ\r
-\r
+\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\r
DFINT7: ANDCAM TAC,DEVIAD(DEVDAT) ;CLEAR INPUT WAIT BIT IN DDB\r
\r
USRGO: MOVSM DEVDAT,RUNUSR ;SAVE DEVDAT FOR USE AT DFINT\r
;SET WRITE-LOCK INDICATION IN A SAT ENTRY.\r
;ENTER WITH A BLOCK NUMBER IN TAC.\r
\r
-SETWL: MOVEI TAC1,SETENT ;*\r
+SETWL: MOVEI TAC1,SATENT ;*\r
JRST .+2 ;*\r
SETWL1: ADDI TAC1,SENTSZ ;*\r
HLRZ ITEM,@TAC1 ;*IS THE BLOCK IN THIS SAT ENTRY?\r
\r
DSKSR: END\r
\f\r
+\0\r
\r
\r
DTADIR: BLOCK 200\r
-DTADDS=.-DTADDR\r
+DTADDS=.-DTADDB\r
\r
JRST DTAINI\r
JRST HUNGTP ;HUNG DEVICE\r
-DTADSP JRST UREL\r
+DTADSP: JRST UREL\r
JRST UCLS\r
JRST UOUT\r
JRST UIN\r
\f HRRZ TAC1,UUO ;MTAPE - GET OPERATION\r
CAIE TAC1,1 ;REWIND OR\r
CAIN TAC1,11 ;REWIND UNLOAD ARE LEGAL\r
- SOJA TAC1,MTA0\r
+ SOJA TAC1,MTAP0\r
POPJ PDP, ;OTHERS ARE NO-OPS\r
\r
;INITIALIZE DTC\r
MOVEM TAC1,DEVFIL(DEVDAT) ;STORE FOR RENAME AND SUPERSEDING\r
; SHARED SEGMENTS\r
CAMN TAC1,(TAC) ;TEST FOR MATCH\r
- AOJA UUOI,NMFOUN ;FOUND NAME, CHECK EXTENSION\r
+ AOJA UUO,NMFOUN ;FOUND NAME, CHECK EXTENSION\r
AOBJN TAC,.-2 ;TRY NEXT NAME\r
POPJ PDP, ;NOT FOUND\r
NMFOUN: HLLZ TAC1,@UUO ;PICK UP USER'S EXTENSION\r
ENTR: TRNE IOS,UDSD ;NON STANDARD?\r
JRST CPOPJ1 ;YES. RETURN\r
PUSHJ PDP,DSERCH ;NO. LOOK FOR MATCH\r
- JRST NEWNT ;THIS IS A NEW ENTRY\r
+ JRST NEWENT ;THIS IS A NEW ENTRY\r
ENTR2: MOVE TAC1,@UUO ;PICK UP 2ND WORD (EXTENSSION)\r
AOS UUO ;POINT TO WORD 3\r
HRR TAC1,@UUO ;ADD DATE\r
HRLM TAC,OBLK(DEVDAT) ;SAVE INDEX IN DDB\r
\r
PUSHJ PDP,DLETE ;DELETE ALL BLOCKS BELONGING TO FILE\r
- AOJE AC3,FNTRD ;FIND FIRST FREE BLOCK ON TAPE IF THIS\r
+ AOJE AC3,ENTRD ;FIND FIRST FREE BLOCK ON TAPE IF THIS\r
;IS A SAVE FILE (UGETF DONE)\r
MOVEI BLK,DIRBLK ;NO. GET 1ST BLOCK CLOSE TO\r
TLO IOS,RVERSE ;DIRECTORY. GOING IN REVERSE\r
;;SET POINTER TO CORRECT DIRECTORY ENTRY\r
DRPTR: SUBI BLK,1 ;SET FOR ILDB OR IDPB\r
IDIVI BLK,7 ;COMPUTE WORD, POSITION\r
- ADD BLK,OLOC(DEVDAT) ;GET CORRECT ADDRESS\r
+ ADD BLK,DLOC(DEVDAT) ;GET CORRECT ADDRESS\r
HRLI BLK,440500 ;MAKE IT A BYTE POINTER\r
JUMPE DAT,CPOPJ ;CORRECT FOR POSITION IN WORD\r
IBP BLK\r
JRST OUT ;GO TO WRITE RECORD\r
\r
;HERE TO CLOSE A DUMP MODE FILE\r
-CLSDMP: TLO IOS,DMPOCLS+IO+DMPMOD ;SET SWITCHES\r
+CLSDMP: TLO IOS,DMPCLS+IO+DMPMOD ;SET SWITCHES\r
PUSHJ PDP,GETDT ;GET CONTROL\r
SETZM BUF ;ENSURE ZERO LINK,WORDCOUNT\r
SETZM BUF+1 ;MAKE SURE 0, SO CAN GET WITH 3 SERIES MON.\r
HRRZ BLK,OBLK(DEVDAT)\r
CAIN BLK,DIRBLKK ;CHECK IF WRITING DIRECTORY\r
JRST COR2HM ;YES, WRITE CORE IMAGE\r
- JUMPE BLK,FAKAV ;DONT WRITE IF NO BLOCK GIVEN\r
+ JUMPE BLK,FAKADV ;DONT WRITE IF NO BLOCK GIVEN\r
\r
PUSHJ PDP,BLKCHK ;CHECK FOR LEGAL BLOCK\r
UOUT2: TLNN IOS,DMPMOD ;ALREADY HAVE CONTROL IF DUMP-MODE\r
JRST DMPTS1 ;YES. RETURN\r
IFN CPBIT, <\r
TRNE IOS,UDSD ;NO. NON-STD MODE?\r
- SOJA DAT,TDUSER ;YES. GO ELSEWHERE\r
+ SOJA DAT,TOUSER ;YES. GO ELSEWHERE\r
>\r
DMPST2: SOS UUO ;NO. SAVE START OF LIST (-1)\r
MOVEM UUO,DMPLST(DEVDAT)\r
\r
IFN CPBIT, <\r
;HERE TO START DUMP-MODE INTO USER AREA DIRECTLY\r
-TOUSRF: JUMPE AC2,NOBLK0 ;CANT READ BLK 0 IN NON-STD DUMP MODE\r
+TOUSER: JUMPE AC2,NOBLK0 ;CANT READ BLK 0 IN NON-STD DUMP MODE\r
ASH DAT,-7 ;NUMBER OF WRDS IN LIST /200\r
AOS DAT\r
MOVEM DAT,BLKCNT ;SAVE TO UPDATE POSITION\r
>\r
DMPFLB: PUSHJ PDP,NXTCOM ;GET NEXT COMMAND\r
JRST DMPOTH ;END OF LIST\r
-DMPLFA: MOVE TEM,(TAC) ;GET NEXT WORD\r
+DMPFLA: MOVE TEM,(TAC) ;GET NEXT WORD\r
MOVEM TEM,BUF+1(TAC1) ;INTO BUFFER\r
AOBJP TAC1,DMPOVR ;BUFFER FULL IF GOES\r
AOBJN TAC,.-3 ;GET NEXT WORD FROM COMMAND\r
NXTCM1: HRRM TAC,DMPLST(DEVDAT) ;STORE GO-TO ADDRESS\r
MOVE TAC,@TAC ;GET COMMAND\r
JUMPE TAC,NXTCM2 ;END OF LIST\r
- JUMPG TAX,NXTCM1 ;GO-TO WORD\r
+ JUMPG TAC,NXTCM1 ;GO-TO WORD\r
ADDI TAC,(PROG) ;REAL COMMAND - ADD RELOCATION\r
AOJA TAC,CPOPJ1 ;AND RETURN\r
\f;END OF DUMP-MODE LIST\r
\f;HERE IF TAPE IS GOING IN REVERSE WHEN BLOCK NUMBER FOUND\r
IORVRS: ADDI TAC,176 ;START AT TOP OF BUFFER\r
MOVE TEM,[JSR RVERS]\r
- JRST TOGO ;COMPILCATED STUFF FOR EACH WORD\r
+ JRST IOGO ;COMPILCATED STUFF FOR EACH WORD\r
\r
;HERE FOR AY DATA WORD WITH TAPE IN REVERSE\r
RVERS: 0\r
JRST SRCHXT ;AND GO AWAY\r
MOVMS TAC\r
CAILE TAC,MINDIS ;WORTH WHILE TO DISCONNECT TAPE?\r
- JRST BEKON ;YES. GO DISCONNECT\r
+ JRST REKON ;YES. GO DISCONNECT\r
SKIPLE DISCON ;NO. IS THERE A DISCON. TAPE\r
;WHICH HAS TIMED OUT?\r
CAIG TAC,2 ;YES. WILL THIS SEARCH TAKE LONG?\r
SETZM ALMSWT\r
JEN @SRCH ;AND DISMISS THE INTERRUPT\r
\f;HERE IF AN ILLEGAL BLOCK WAS READ FROM THE TAPE\r
-SRCHR: AOS TAC,ERRCNT ;BUMP ERROR COUNT\r
- CAIG TAC,DTTRV ;TRIED ENOUGH?\r
+SRCHB: AOS TAC,ERRCNT ;BUMP ERROR COUNT\r
+ CAIG TAC,DTTRY ;TRIED ENOUGH?\r
JRST SRCHXT ;NO. READ ANOTHER BLOCK NUMBER\r
SETOM BLOCK ;YES. BLOCK = -1 AS AN ERROR SWITCH\r
- CONO DTA,770001 ;FUNCTION STOP\r
+ CONO DTS,770001 ;FUNCTION STOP\r
JRST SRCHXT ;GO AWAY\r
\r
IFN CPBIT, <\r
SRCHC: CONSZ DTC,100000 ;GOING FORWARD?\r
TLCA TAC,400000 ;NO. SWITCH TURN AROUND TEST. ENSURE FORWARD\r
JUMPE TAC,FOUND ;GO IF FOUND FORWARD\r
- SKIPI TAC ;TURN AROUND?>\r
+ SKIPL TAC ;TURN AROUND?\r
CONO DTC,DTTURN ;YES\r
JRST SRCHXT ;READ ANOTHER BLOCK NUMBER\r
>\r
SETM MONB2 ;CLEAR JOB NO, FROM MON BUFFER\r
TLNN IOS,IOFST ;WAS JOB SWAPPED OUT WHEN DATA FINISHED?\r
POPJ PDP, ;NO. TRANSFER COMPLETED\r
- MOVE TAC,JBTSTS(ITEM) ;YES, WAS IO ABORTED?>\r
+ MOVE TAC,JBTSTS(ITEM) ;YES, WAS IO ABORTED?\r
TRNN TAC,ALBORT\r
JRST FAKINT ;NO. NOW TRANSFER DATA, ADVANCE BUFFERS\r
JRST THRUTP ;YES. FORGET REST OF OPERATION\r
MOVEM TEM,RVERS\r
EXCH DEVDAT,USEWRD\r
EXCH IOS,DEVIOS(DEVDAT)\r
- ECHO PDP,FNDPDP\r
+ EXCH PDP,FNDPDP\r
PUSHJ PDP,@DISPAD(DEVDAT) ;GO TO DISPATCH LOCATION\r
EXCH PDP,FNDPDP ;RESTORE ACS\r
EXCH IOS,DEVIOS(DEVDAT)\r
HRRM BLK,IBLK(DEVDAT) ;DAVE IN DDB\r
TRNE IOS,IODTER+IODERR+IOIMPM\r
JRST THRUIN\r
- PUSHJ PDP,ADVBUFF ;GET NEXT BUFFER\r
+ PUSHJ PDP,ADVBFF ;GET NEXT BUFFER\r
JRST THRUIN ;EMPTY BUF NOT AVAILABLE\r
\r
SKIPLE DISCON ;TAPE TIMED OUT?\r
THRUTD: SOSL DTREQ ;BUMP COUNT DOWN\r
SETOM DTAVAL ;TELL SCHEDULER\r
THRUTA: CONO DTC,10000 ;DESELECT CONTROL\r
- TLZ IOS,DMPMOD+NOBUF+DMPCLS+PEWBIT+RUNBIT\r
+ TLZ IOS,DMPMOD+NOBUF+DMPCLS+REWBIT+RUNBIT\r
SETZM USEWRD ;INDICATE CONTROL NOW FREE\r
JRST CLRACT ;RESET IOACT AND RETURN\r
\r
SUB TAC1,ONEONE ;SET UP TAC1 WITH COUNT\r
>\r
TLNN IOS,IO\r
- JRST SVOMIN ;INPUT FILE\r
+ JRST SVDMIN ;INPUT FILE\r
HRRZ BLK,OBLK(DEVDAT) ;OUTPUT FILE, NEXT BLOCK\r
- JUMPF BLK,DMPTHA ;LAST BLOCK\r
+ JUMPE BLK,DMPTHA ;LAST BLOCK\r
IFE CPBIT, <\r
TRNE IOS,UDSD ;IF NON-STD MODE\r
AOSA OBLK(DEVDAT) ;WRITE CONSECUTIVE BLOCKS\r
JUMPE BLK,DMPEOF ;IF EOF - LIGHT BIT\r
RDNXT: CAIG BLK,TOPBLK ;BLOCK LEGAL?\r
JRST READBC ;GO READ BLOCK NUMBER\r
- TROA IOS,IOBLKT ;LIGHT ERROR BIT\r
+ TROA IOS,IOBKTL ;LIGHT ERROR BIT\r
\r
;EOF BEFORE ALL DATA IS IN - DUMP MODE\r
DMPEOF: TRO IOS,IODEND ;LIGHT EOF BIT\r
>\r
ERRS1: CONSO DTS,40000 ;IF ILLEGAL OP - DONT RETRY\r
CAILE TAC,DTTRY ;ENOUGH REREADS?\r
- JRST PERMET ;YES. PERMANENT ERROR\r
+ JRST PERMER ;YES. PERMANENT ERROR\r
JRST FNDBL2 ;NO. TRY AGAIN\r
\r
;PERMANENT ERROR\r
TRO IOS,IOIMPM ;ILLEGAL OP\r
TLNE IOS,DMPMOD ;DUMP MODE?\r
JRST DMPTHR ;YES. NOT THROUGH YET\r
- TLNN IOS,IO+RDDIR+SINGL\r
+ TLNN IOS,IO+RWDIR+SINGL\r
JRST DTAIN2\r
REWDUN: TLZE IOS,IOW\r
PUSHJ PDP,SETIOD ;NO. TAKE OUT OF IO WAIT\r
JRST THRUTP ;NO. RETURN TO USER\r
PUSHJ PDP,THRUTP ;YES. STOP TAPE\r
MOVSI TAC,DVDIRIN ;CLEAR DIRECTORY IN CORE BIT\r
- ANDCAM TAC,DEVMOND(DEVDAT)\r
+ ANDCAM TAC,DEVMOD(DEVDAT)\r
BDDIR: LDB ITEM,PJOBN ;NUMBER OF OFFENDING JOB\r
- JRST RADDIR ;GO PRINT ERROR MESSAGE\r
+ JRST BADDIR ;GO PRINT ERROR MESSAGE\r
\f INTERN DTABUF\r
BFPNTR: IOWD 200,BUF+1\r
ONEONE: XWD 1,1\r
SVPNTR: 0\r
\r
USPNTR: 0\r
-DIRCNT: 0\r
+DIRCTN: 0\r
>\r
;THIS IS THE MONITOR BUFFER\r
DTABUF:\r
TITLE DTCSRN - NEW FORMAT DECTAPE SERVICE FOR 551 (PDP-6)\r
SUBTTL DTA551 A.WACHS/TW/RCC 01 JUN 69 V012\r
- XP VDTASR,012 ;GLOBAL VERSION NUMBER FOIR LOADER STORAGE MAP.\r
+ XP VDTASR,012 ;GLOBAL VERSION NUMBER FOR LOADER STORAGE MAP.\r
\r
ENTRY DTCSRN ;ENTRY POINT FOR SELECTIVE LOAD BY BUILD\r
DTCSRN:\r
EXTERNAL TPOPJ,TPOPJ1,DTCCHL,DCOUT,DCIN,DCON,DCOFF\r
-EXTERNAL STOIOS,STOTAC,SETACT,CLRACT,OUT,DTASAV,PIOMOD\r
+EXTERNAL STOIOS,STOTAC,SETACT,CLRACT,OUT,DTCSAV,PIOMOD\r
\r
EXTERNAL DTAVAL,DTREQ,SETIOD,THSDAT,PUNIT,GETDCDT\r
EXTERNAL ADVBFE,ADVBFF,ADRERR,WAIT1,CPOPJ,CPOPJ1,BADDIR\r
\r
JRST DTCINI\r
JRST THRUTP ;HUNG DEVICE\r
-DTADSP JRST UREL\r
+DTCDSP: JRST UREL\r
JRST UCLS\r
JRST UOUT\r
JRST UIN\r
TLO IOS,SINGL ;JUST READ 1 RECORD\r
MOVEI BLK,DIRBLK ;NO, FIND FIRST MENTION OF BLOCK\r
PUSHJ PDP,LSTFRE+1 ;NEAR DIRECTORY\r
- JUMPN BLK,LOOKE ;FOUND IF BLK NOT =0\r
+ JUMPN BLK,.+3 ;FOUND IF BLK NOT =0\r
LOOKD: PUSHJ PDP,BLKSRC ;FIND FIRST MENTION IN DIRECTORY\r
JRST BDDIR ;NOT THERE - ERROR\r
-LOOKE: PUSHJ PDP,RDBLUK ;GO READ IT\r
+ PUSHJ PDP,READBF ;GO READ IT\r
PUSHJ PDP,WAIT1 ;WAIT TILL IT'S IN\r
HRLM AC1,IBLK(DEVDAT) ;SAVE INDEX ON INPUT FILE FOR LATER\r
;TEST ON ENTER - WONT ALLOW ENTER\r
MOVEM TAC1,DEVFIL(DEVDAT) ;STORE FOR RENAME AND SUPERSEDING\r
; SHARED SEGMENTS\r
CAMN TAC1,(TAC) ;TEST FOR MATCH\r
- AOJA UUOI,NMFOUN ;FOUND NAME, CHECK EXTENSION\r
+ AOJA UUO,NMFOUN ;FOUND NAME, CHECK EXTENSION\r
AOBJN TAC,.-2 ;TRY NEXT NAME\r
POPJ PDP, ;NOT FOUND\r
NMFOUN: HLLZ TAC1,@UUO ;PICK UP USER'S EXTENSION\r
ENTR: TRNE IOS,UDSD ;NON STANDARD?\r
JRST CPOPJ1 ;YES. RETURN\r
PUSHJ PDP,DSERCH ;NO. LOOK FOR MATCH\r
- JRST NEWNT ;THIS IS A NEW ENTRY\r
+ JRST NEWENT ;THIS IS A NEW ENTRY\r
ENTR2: MOVE TAC1,@UUO ;PICK UP 2ND WORD (EXTENSSION)\r
AOS UUO ;POINT TO WORD 3\r
HRR TAC1,@UUO ;ADD DATE\r
HRLM TAC,OBLK(DEVDAT) ;SAVE INDEX IN DDB\r
\r
PUSHJ PDP,DLETE ;DELETE ALL BLOCKS BELONGING TO FILE\r
- AOJE AC3,FNTRD ;FIND FIRST FREE BLOCK ON TAPE IF THIS\r
+ AOJE AC3,ENTRD ;FIND FIRST FREE BLOCK ON TAPE IF THIS\r
;IS A SAVE FILE (UGETF DONE)\r
MOVEI BLK,DIRBLK ;NO. GET 1ST BLOCK CLOSE TO\r
TLO IOS,RVERSE ;DIRECTORY. GOING IN REVERSE\r
;;SET POINTER TO CORRECT DIRECTORY ENTRY\r
DRPTR: SUBI BLK,1 ;SET FOR ILDB OR IDPB\r
IDIVI BLK,7 ;COMPUTE WORD, POSITION\r
- ADD BLK,OLOC(DEVDAT) ;GET CORRECT ADDRESS\r
+ ADD BLK,DLOC(DEVDAT) ;GET CORRECT ADDRESS\r
HRLI BLK,440500 ;MAKE IT A BYTE POINTER\r
JUMPE DAT,CPOPJ ;CORRECT FOR POSITION IN WORD\r
IBP BLK\r
JRST SETACT ;LIGHT IOACT AND RETURN\r
\r
;HERE TO CLOSE A DUMP MODE FILE\r
-CLSDMP: TLO IOS,DMPOCLS+IO+DMPMOD ;SET SWITCHES\r
+CLSDMP: TLO IOS,CLSDMP ;SET SWITCHES\r
PUSHJ PDP,GETDT ;GET CONTROL\r
SETZM BUF ;ENSURE LINK, WORDCOUNT=0\r
JRST OUFULL ;GO WRITE THE BLOCK\r
HRRZ BLK,OBLK(DEVDAT)\r
CAIN BLK,DIRBLKK ;CHECK IF WRITING DIRECTORY\r
JRST COR2HM ;YES, WRITE CORE IMAGE\r
- JUMPE BLK,FAKAV ;DONT WRITE IF NO BLOCK GIVEN\r
+ JUMPE BLK,FAKADV ;DONT WRITE IF NO BLOCK GIVEN\r
PUSHJ PDP,BLKCHK ;CHECK FOR LEGAL BLOCK\r
UOUT2: TLNN IOS,DMPMOD ;ALREADY HAVE CONTROL IF DUMP-MODE\r
\r
JRST DMPTS1 ;YES. RETURN\r
IFN CPBIT, <\r
TRNE IOS,UDSD ;NO. NON-STD MODE?\r
- SOJA DAT,TDUSER ;YES. GO ELSEWHERE\r
+ SOJA DAT,TOUSER ;YES. GO ELSEWHERE\r
>\r
DMPST2: SOS UUO ;NO. SAVE START OF LIST (-1)\r
MOVEM UUO,DMPLST(DEVDAT)\r
\r
IFN CPBIT, <\r
;HERE TO START DUMP-MODE INTO USER AREA DIRECTLY\r
-TOUSRF: JUMPE AC2,NOBLK0 ;CANT READ BLK 0 IN NON-STD DUMP MODE\r
+TOUSER: JUMPE AC2,NOBLK0 ;CANT READ BLK 0 IN NON-STD DUMP MODE\r
ASH DAT,-7 ;NUMBER OF WRDS IN LIST /200\r
AOS DAT\r
MOVEM DAT,BLKCNT ;SAVE TO UPDATE POSITION\r
>\r
DMPFLB: PUSHJ PDP,NXTCOM ;GET NEXT COMMAND\r
JRST DMPOTH ;END OF LIST\r
-DMPLFA: MOVE TEM,(TAC) ;GET NEXT WORD\r
+DMPFLA: MOVE TEM,(TAC) ;GET NEXT WORD\r
MOVEM TEM,BUF+1(TAC1) ;INTO BUFFER\r
AOBJP TAC1,DMPOVR ;BUFFER FULL IF GOES\r
AOBJN TAC,.-3 ;GET NEXT WORD FROM COMMAND\r
NXTCM1: HRRM TAC,DMPLST(DEVDAT) ;STORE GO-TO ADDRESS\r
MOVE TAC,@TAC ;GET COMMAND\r
JUMPE TAC,NXTCM2 ;END OF LIST\r
- JUMPG TAX,NXTCM1 ;GO-TO WORD\r
+ JUMPG TAC,NXTCM1 ;GO-TO WORD\r
ADDI TAC,(PROG) ;REAL COMMAND - ADD RELOCATION\r
AOJA TAC,CPOPJ1 ;AND RETURN\r
;END OF DUMP-MODE LIST\r
CONO DTC,360000(TAC) ;START DATA FLOW\r
JRST SRCHXT ;AND LEAVE\r
\r
-IORVS: MOVEI TAC,10000 ;SET IO FOR REVERSE\r
+IORVRS: MOVEI TAC,10000 ;SET IO FOR REVERSE\r
ORM TAC,COMAND\r
MOVEI TAC,177\r
ADDM TAC,PNTR ;READ FROM TOP OF BUFFER DOWN\r
CONSZ DTS,1 ;JOB DONE LIT?\r
CONSZ DTS,116 ;AND NO ERORS?\r
JRST ERRS ;NO. ERROR\r
- SKIPF ERRFLG ;DATA MISSED?\r
+ SKIPE ERRFLG ;DATA MISSED?\r
JRST ERRS ;YES. TOO BAD\r
\r
;DATA WAS READ IN OR WRITTEN OUT FINE\r
HRRM BLK,IBLK(DEVDAT) ;SAVE IN DDB\r
TRNE IOS,IODTER+IODERR+IOIMPM ;WAS THERE AN INPUT ERROR?\r
JRST THRUIN ;YES. DONT ADVANCE BUFFERS\r
- PUSHJ PDP,ADVBUFF ;GET NEXT BUFFER\r
+ PUSHJ PDP,ADVBFF ;GET NEXT BUFFER\r
JRST THRUIN ;EMPTY BUF NOT AVAILABLE\r
\r
SKIPE BLK ;EXIT IF EOF OR BLOCK TOO LARGE\r
SOSL DTREQ ;GIVE UP DECTAPE CONTROL\r
SETOM DTAVAL \r
CONO DC,0 ;SHUT OFF DATA CONTROL\r
- CONO PI,DOFF ;AN TURN OF ITS PI CHANNEL\r
+ CONO PI,DCOFF ;AN TURN OF ITS PI CHANNEL\r
CONO DTC,0 ;SHUT DOWN DATA CONTROL\r
HLLZS DTCINT\r
POPJ PDP, ;AND LEAVE\r
JRST FILBUF ;NO. GO WRITE NEXT BLOCK\r
JRST THRUTP ;YES. GIVE UP TAPE\r
\r
+;TURN TAPE AROUND AFTER END-ZONE INTERUPT\r
+TURN: MOVEM TAC,TEMPA ;SAVE TAC\r
+ MOVE TAC,UNIT ;UNIT AND CHANNEL\r
+ CONSO DTC,10000 ;IN REVERSE?\r
+ TRO TAC,10000 ;NO. NO WILL BE\r
+ CONO DTC,322200(TAC);READ BLOCK NOS IN OPPOSITE DIRECTION\r
+ MOVE TAC,TEMPA ;RESTORE TAC\r
+ JEN @DTCCHL ;AND EXIT THE INTERRUPT\r
+\r
TIMINT: CONSO DTS,20 ;TIME FLAG INTERRUPT ON?\r
JRST SPRIUS ;NO. THIS IS A SPURIOUS INTERRUPT\r
EXCH TAC,TIMREQ ;ANOTHER TAPE CAN NOT BE\r
SUB TAC1,ONEONE ;SET UP TAC1 WITH COUNT\r
>\r
TLNN IOS,IO\r
- JRST SVOMIN ;INPUT FILE\r
+ JRST SVDMIN ;INPUT FILE\r
HRRZ BLK,OBLK(DEVDAT) ;OUTPUT FILE, NEXT BLOCK\r
- JUMPF BLK,DMPTHA ;LAST BLOCK\r
+ JUMPE BLK,DMPTHA ;LAST BLOCK\r
IFE CPBIT, <\r
TRNE IOS,UDSD ;IF NON-STD MODE\r
AOSA OBLK(DEVDAT) ;WRITE CONSECUTIVE BLOCKS\r
JUMPE BLK,DMPEOF ;IF EOF - LIGHT BIT\r
RDNXT: CAIG BLK,TOPBLK ;BLOCK LEGAL?\r
JRST READBC ;GO READ BLOCK NUMBER\r
- TROA IOS,IOBLKT ;LIGHT ERROR BIT\r
+ TROA IOS,IOBKTL ;LIGHT ERROR BIT\r
\r
;EOF BEFORE ALL DATA IS IN - DUMP MODE\r
DMPEOF: TRO IOS,IODEND ;LIGHT EOF BIT\r
JRST THRUTP ;NO. RETURN TO USER\r
PUSHJ PDP,THRUTP ;YES. STOP TAPE\r
MOVSI TAC,DVDIRIN ;CLEAR DIRECTORY IN CORE BIT\r
- ANDCAM TAC,DEVMOND(DEVDAT)\r
+ ANDCAM TAC,DEVMOD(DEVDAT)\r
BDDIR: LDB ITEM,PJOBN ;NUMBER OF OFFENDING JOB\r
- JRST RADDIR ;GO PRINT ERROR MESSAGE\r
-\f INTERN DTABUF\r
-BFPNTR: IOWD 200,BUF+1\r
+ JRST BADDIR ;GO PRINT ERROR MESSAGE\r
+\fBFPNTR: IOWD 200,BUF+1\r
ONEONE: XWD 1,1\r
USEWRD: 0\r
USEPRG: 0\r
SVPNTR: 0\r
USPNTR: 0\r
ADRPRG: 0\r
-DIRCNT: 0\r
+DIRCTN: 0\r
>\r
BUF: BLOCK 200\r
DTAEND: END\r
\f\r
+\0\0\0\0
\ No newline at end of file
BIT 34 =0: DO NOT ASSEMBLE THE PAPER TAPE FEATURE INTO DDT\r
=1: ASSEMBLE THE PAPER TAPE FEATURES BUT ONLY IF\r
ASSEMBLING AN EXECUTIVE MODE DDT\r
+\r
BIT 33 =0; FOR USER MODE DDT ONLY- ASSEMBLE USING THE\r
"TTCALL" UUO FOR TELETYPE IO\r
=1; FOR USER MODE DDT ONLY- ASSEMBLE USING THE\r
WITH PAPER TAPE FEATURES, AND WHOSE STARTING\r
ADDRESS IS LOCATION 4000.\r
\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
EXAMPLE OF A MACRO ASSEMBLY COMMAND:\r
\r
.^C\r
DEFINED "EDDT=0".\r
\r
> ;END OF REPEAT 0\r
-\r
\f\r
IFNDEF EDDT,<EDDT=0>\r
\r
RELOC 0\r
>\r
\r
-\r
IFN EDDT&<XWD -1,0>,<LOC <EDDT>B53>\r
\r
HEADER \DDTVER^\r
;THE HEADER MACRO CONSTRUCTS THE TITLE AND VERSION #\r
-\r
-IFN EDDT&10,< CM=2 ;DEFINE SOFTWARE CHANS.\r
+\fIFN EDDT&10,< CM=2 ;DEFINE SOFTWARE CHANS.\r
DP=3\r
>\r
-\f;DEFINE ACCUMULATORS\r
+;DEFINE ACCUMULATORS\r
\r
F=0 ;FLAGS\r
P=1 ;PUSH DOWN\r
FPF=20000 ; . TYPED IN\r
FEF=400000 ; E FLAG\r
\r
-MLF=200 ;*FLAG\r
+MLF=200 ;*FLAG\r
DVF=40000 ;DIVIDE FLAG\r
\r
;PID IS 20 IF SYM TAB POINTER IS INDIRECT JOBSYM\r
\r
RADIX 10\r
NBP=8 ;NUMBER OF BREAKPOINTS\r
-DEFINE DBPNT (Z.)<XP $'Z.'B,B1ADR+3*Z.-3>\r
+DEFINE DBPNT (Z.)<XP $'Z.'B,<DDTINT B1ADR+3*Z.-3>>\r
ZZ=0\r
REPEAT NBP,<DBPNT \<ZZ=ZZ+1>>\r
RADIX 8\r
MOVE W1,PRGM ; SAME PLACE. OR THEY DO NOT BOTH START ON\r
XOR W1,W ; AN EVEN (OR BOTH ON ODD) LOCATION. OR\r
TRNE W1,1 ; PRGM .GE.0, THEN RE-INIT PRGM.\r
- JRST DDT2 ;EVEN-ODD PROBLEM\r
+ JRST DDT0 ;EVEN-ODD PROBLEM\r
SKIPN T ;POINTERS DON'T END TOGETHER\r
SKIPL PRGM ;IF PRGM .GE. 0, THEN RE-INIT\r
DDT0: MOVEM W,PRGM ;PRGM=C(JOBSYM)\r
JRST .+2\r
JRST LET\r
L21: MOVE R,T\r
- CAILF T,137 ;DISPATCH TABLE HAS ENTRIES ONLY .LE. 137\r
+ CAILE T,137 ;DISPATCH TABLE HAS ENTRIES ONLY .LE. 137\r
JRST ERR\r
IDIVI R,3 ;REMAINDER GIVES COLUMN, QUOTIENT GIVES ROW\r
LDB W,BDISP(R+1) ;GET 12 BIT ADDRESS FROM DISPATCH TABLE\r
MOVEI T,45 ;RADIX 50 PERIOD\r
JRST LE2\r
\r
-QUAN: SKIPA T,LWT ;LAST QUANTITY TYPED\r
-PILOC: MOVEI T, SAVPI\r
+PILOC: MOVEI T,SAVPI ;ADR SETUP FOR $I\r
+QUANIN: TLOA T,(DDTINT) ;MARK FOR ADR INTERNAL TO DDT\r
+QUAN: MOVE T, LWT ;PICK UP LAST QUANTITY TYPED\r
QUAN1: MOVEM T,SYL\r
QUAN2: TLO F,SF+QF ;WRD,SYL STARTED\r
TLZ F,CF+CCF\r
PUSHJ P,TOUT\r
JUMPN W1,TEXT2\r
POPJ P,\r
-\fKILC: XWD -NSYMS,LOW\r
-\r
-WRD: 0\r
+\fWRD: 0\r
WRD2: 0\r
PRNC: 0\r
\r
IFE Z-"/",<IF1 <OUTP 1>\r
IF2,<INFO OUTP,+73-FIR.>\r
Z==0>\r
- IFE Z-"^",<OUTP <ZZ&70/2+ZZ&7-1>\r
+ IFE Z-"^",<OUTP <ZZ&74/2+ZZ&7-1>\r
Z==0>\r
IFE <Z-",">*<Z-".">*<Z-40>,<IFN ZZZ,<\r
REPEAT 5,<ZZ==ZZZ&77\r
DEFINE .ADR (A) <\r
%'A== CLOC\r
FIR.== CLOC\r
-DEFINE .ADR (A) <\r
-%'A== CLOC\r
+DEFINE .ADR (B) <\r
+%'B== CLOC\r
IFGE <LASTB==CLOC+73-FIR.>-1000, <PRINTX OPTABLE TO LONG>>>\r
\r
DEFINE .TRA <\r
IFNB <A>, <IRPC A,<OUTP "A"-40>>>\r
\r
DEFINE .END (A) <\r
-IFNB <A>. <IRPC A,<OUTP "A"-40>>\r
+IFNB <A>, <IRPC A,<OUTP "A"-40>>\r
OUTP 40>\r
\r
DEFINE OUTP (A)<\r
>\r
\fTBL: ;OPDECODER BYTE TABLE\r
\r
-BINRY= 0\r
-CLOC= 0 ;SET BYTE LOCATION COUNTER TO 0\r
-BINC= ^D36 ;INIT BYTES/WORD COUNTER\r
+BINRY== 0\r
+CLOC== 0 ;SET BYTE LOCATION COUNTER TO 0\r
+BINC== ^D36 ;INIT BYTES/WORD COUNTER\r
\r
BYT9 <\r
\r
-.DIS 63,.TRA UUO,.TRA FLO,.TRA HAK,.TRA ACCP,.TRA BOOLF\r
+.DIS 63,.TRA UUO,.TRA FLO,.TRA HAK,.TRA ACCP,.TRA BOOLE\r
.TXT H,.TRA HWT,.TXT T,.TRA ACBM\r
\r
;IO INSTRUCTIONS\r
\r
-.DIS 21,.TRA BD,.TXT CON,.DIS 11,.TRA IO,.TXT S,.DIS 01,.TRA Z,. TRA O\r
+.DIS 21,.TRA BD,.TXT CON,.DIS 11,.TRA OI,.TXT S,.DIS 01,.TRA Z,.TRA O\r
.ADR BD,.DIS 01,.TXT BLK,.TRA IO,.TXT DATA,.ADR IO,.DIS 11,.TRA I,.TRA O\r
.ADR OI,.DIS 01,.TRA O,.TRA I\r
;UUOS\r
\r
-.ADR UUOI,.DIS 51,.END,.TXT,.DIS 32,.TRA U40,.TRA U50,.TRA U60\r
- .DIS 21,.TRA U703,.DIS 11.,TRA USET,.DIS 01\r
+.ADR UUO,.DIS 51,.END,.TXT,.DIS 32,.TRA U40,.TRA U50,.TRA U60\r
+ .DIS 21,.TRA U703,.DIS 11.,.TRA USET,.DIS 01\r
.TXT LOOKU,.TRA P,.TXT ENTE,.TRA R,.ADR USET,.TXT USET,.DIS 01,.TRA I,.TRA O\r
.ADR U40,.DIS 03,.TRA CAL,.TXT INI,.TRA T,.END,.END,.END,.END,.END,.TXT CALL,.TRA I\r
.ADR U60,.DIS 21,.TRA U603,.DIS 01,.TXT IN,.TRA BPUT,.TXT OUT\r
- .ADR BPUT,M.,DIS 11,.TXT BU,.ADR F,.END F,.TXT,.TXT U,.TRA T\r
+ .ADR BPUT,.DIS 11,.TXT BU,.ADR F,.END F,.TXT,.TXT PU,.TRA T\r
.ADR U603,.DIS 01,.TRA U6062,.TXT STAT,.DIS 11,.ADR O,.END O,.TXT,.ADR Z,.END Z,.TXT\r
.ADR U6062,.DIS 11,.TXT S,.TRA U62,.TXT G,.ADR U62,.TXT ETST,.TRA S\r
\r
.TRA A,.TXT MP,.TRA A,.TXT DV,.ADR A\r
.DIS 21,.TRA LMB,.TXT R,.TRA IMB,.ADR LMB,.DIS 02,.END,.TXT\r
.ADR L,.END L,.TXT,.ADR M,.END M,.TXT\r
-.ADR B,.FND B,.TXT,.ADR BYTE,.DIS 32,.END,.END,.END,.TXT\r
+.ADR B,.END B,.TXT,.ADR BYTE,.DIS 32,.END,.END,.END,.TXT\r
.DIS 03,.TXT UF,.TRA PA,.TXT DF,.TRA N\r
.TXT FS,.TRA C,.TXT IB,.ADR P,.END P,.TXT,.TXT I,.TRA LD\r
.ADR LD,.TXT LD,.TRA B,.TXT I,.TRA DP,.ADR DP,.TXT DP,.TRA B\r
.TRA SH,.TRA H1,.TRA JP\r
.DIS 21,.TXT ADD,.TRA IMB,.TXT SU,.ADR BIMB,.TXT B,.ADR IMB,.DIS 02,.END,.TXT\r
.ADR I,.END I,.TXT,.TRA M,.TRA B,.ADR MO,.DIS 22\r
-,ADR E1MS,.TXT E,.TRA IMS,.TXT S,.TRA IMS,.TXT N,.TRA IMS,.TXT M\r
+.ADR EIMS,.TXT E,.TRA IMS,.TXT S,.TRA IMS,.TXT N,.TRA IMS,.TXT M\r
.ADR IMS,.DIS 02,.END,.TXT,.TRA I,.TRA M,.ADR S,.END S,.TXT\r
.ADR ML,.DIS 21,.TXT I,.TRA ML1,.ADR ML1,.TXT MUL,.TRA IMB\r
.ADR DV,.DIS 21,.TXT I,.TRA DV1\r
.ADR DV1,.TXT DI,.ADR DV2,.TXT V,.TRA IMB,.ADR H1,.DIS 03,.TXT EXC,.TRA S3,.TXT BL\r
- .ADR T,.END T,.TXT,.TRA AO,.ADR AO,.TT AOBJ\r
+ .ADR T,.END T,.TXT,.TRA AO,.ADR AO,.TXT AOBJ\r
.TRA AOB,.TXT JRS,.TRA T,.TXT JFC,.TRA L,.TXT XC,.TRA T,.END\r
.ADR AOB,.DIS 01,.TRA P,.TRA N\r
.ADR JP,.DIS 03,.TRA PU,.ADR PU,.TXT PUSH,.TRA PUS,.TRA PO\r
.ADR PO,.TXT POP,.TRA POP,.TXT JS,.ADR R,.END R,.TXT\r
-.TXT JS,.TRA P,.TXT JS,.ADR PA,.END, A,.TXT,.TXT JR,.TRA PA\r
+.TXT JS,.TRA P,.TXT JS,.ADR PA,.END A,.TXT,.TXT JR,.TRA PA\r
.ADR PUS,.DIS 01,.ADR J,.END J,.END,.TXT,.ADR POP\r
.DIS 01,.END,.TXT,.TRA J,.ADR SH,.DIS 02,.TXT A,.TRA S2,.TXT ROT,.TRA S1,.TXT L\r
.ADR S2,.TXT S,.ADR S3,.TXT H,.TRA S1,.TXT JFF,.TRA O\r
\r
;HALF WORDS\r
\r
-.ADR HWT,.DIS 51,.TRA HW1,.DIS 21,.TXT 3,.TRA HW2,.TXT L,.ADR HW2,.TXT R,.TRA HW3\r
+.ADR HWT,.DIS 51,.TRA HW1,.DIS 21,.TXT R,.TRA HW2,.TXT L,.ADR HW2,.TXT R,.TRA HW3\r
.ADR HW1,.DIS 21,.TXT L,.TRA HW4,.TXT R,.ADR HW4,.TXT L\r
- .ADR HW3,.DIS 32,.TRA IMS,.TXT Z,.TRA IMS,.TXT D,.TRA IMS,.TRA EIMS\r
+ .ADR HW3,.DIS 32,.TRA IMS,.TXT Z,.TRA IMS,.TXT O,.TRA IMS,.TRA EIMS\r
\r
;TEST INSTRUCTIONS\r
\r
.ADR ACBM,.DIS 31,.TRA AC1,.DIS 01,.TXT D,.TRA AC2,.TXT S,.TRA AC2\r
.ADR AC1,.DIS 01,.TXT R,.TRA AC2,.TXT L\r
-.ADR AC2,.DIS 42,.TXT N,.TRA EAN,.TXT Z,.TRA EAN,TXT C,.TRA EAN,.TXT O\r
+.ADR AC2,.DIS 42,.TXT N,.TRA EAN,.TXT Z,.TRA EAN,.TXT C,.TRA EAN,.TXT O\r
.ADR EAN,.DIS 12,.END,.TXT,.TRA E,.TRA PA,.TRA N\r
\r
;BOOLEAN\r
\r
-.ADR BOOLE,.DIS 24,.TRA ST,.ADR AN,.TXT ANBD,.TRA B2,.TRA AN,.TRA ST,.TRA AN,.TRA ST\r
+.ADR BOOLE,.DIS 24,.TRA ST,.ADR AN,.TXT AND,.TRA B2,.TRA AN,.TRA ST,.TRA AN,.TRA ST\r
.TXT X,.ADR OR,.TXT OR,.TRA B2,.TXT I,.TRA OR,.TRA AN,.TXT EQ\r
.TRA DV2,.TRA ST,.TRA OR,.TRA ST,.TRA OR,.TRA OR\r
.ADR ST,.TXT SET,.ADR B2,.DIS 24,.TXT Z,.TRA IMB,.TRA IMB\r
.ADR CA,.TXT C,.TRA TA,.ADR TM,.TXT M,.TRA IMB\r
-.ADR DM,.TXT C,.TRA TM,.ADR TA,.TXT A,.TRA IMB,.TRA IMBA,.TRA IMB\r
- .ADR CP,.TXT C,.TRA BIMB,.TRA IMB,.TRA CA\r
-.TRA CA,.TRA CM,.TRA CM,.TRA CB,.TXT 0,.TRA IMB\r
+.ADR CM,.TXT C,.TRA TM,.ADR TA,.TXT A,.TRA IMB,.TRA IMB,.TRA IMB\r
+ .ADR CB,.TXT C,.TRA BIMB,.TRA IMB,.TRA CA\r
+.TRA CA,.TRA CM,.TRA CM,.TRA CB,.TXT O,.TRA IMB\r
\r
;MORE UUO'S\r
\r
\r
IF1,< BLOCK <CLOC+3>/4>\r
\r
-IF2,< IFN BINC-^D36,< +BINARY>>\r
+IF2,< IFN BINC-^D36,< +BINRY>>\r
\r
IFNDEF CLOC.,<CLOC.==CLOC>\r
IFN CLOC.-CLOC,<PRINTX PHASE ERROR IN OPTABLE>\r
; RETURN TO RESCHEDULE NEW USER\r
\r
INTERNAL APRILM\r
-EXTERNAL USRREL,CONMES,HOLD,INLMES,JOBN,PJOBN,PRQM\r
+EXTERNAL USRREL,APRPC\r
+EXTERNAL APRERR,CONMES,HOLD,INLMES,JOBN,PJOB,PRQM\r
EXTERNAL STOP1,TTYFUW,USRXIT,UUO0,WSCHED\r
\r
APRILM: SETZM APRERR ;CLEAR FLAG IMMEDIATELY,IN CASE OTHER ERRORS OCCUR\r
JSP DAT,UERROR ;NO, MUST BE HARDWARE PROBLEM\r
JSP TAC,ERRPTU ;YES\r
ASCIZ /PDL OV/\r
-ASPSC: MOVE TAC1,APRPO ;PRINT APR PC\r
+APRSCD: MOVE TAC1,APRPC ;PRINT APR PC\r
JRST PCPNT ;AS:\r
; 1)"AT USER LOC XXX" OR\r
; 2)"AT EXEC LOC XXX; EXEC CALLED FROM \r
HALT .+1 ;YES, HALT SO DUMP CAN BE TAKEN\r
; CONTINUE WILL PRINT MESSAGE\r
>\r
- SOSJ TAC1,PCPNT ;AND PRINT, PRINT USER UUO PC IF DIFF.\r
+ SOJA TAC1,PCPNT ;AND PRINT, PRINT USER UUO PC IF DIFF.\r
\r
;ILLEGAL INSTRUCTION\r
\r
HNGSTP: PUSH PDP,ITEM\r
PUSH PDP,IOS\r
PUSH PDP,DEVDAT ;SAVE DEV'S IOS WORD & DDB\r
- PUSHJ PDP,TTYFUN ;FIND JOB'S TTY & WAIT UNTIL I/O IS FINISHED\r
+ PUSHJ PDP,TTYFUW ;FIND JOB'S TTY & WAIT UNTIL I/O IS FINISHED\r
PUSHJ PDP,PRQM ;PRINT QUESTION MARK FOR BATCH\r
PUSHJ PDP,ERNAM ;PRINT "DEVICE XXX"\r
PUSHJ PDP,INLMES ;AND MSG.\r
ASCIZ /OK?\r
^C\r
-\r
-./ PUSHJ PDP,TTYSTC ;START UP TTY IN COMMAND MODE\r
+./\r
+ PUSHJ PDP,TTYSTC ;START UP TTY IN COMMAND MODE\r
POP PDP,DEVDAT ;BRING BACK DEV DDB & IOS WORD\r
POP PDP,IOS\r
PUSHJ PDP,STOP1 ;STOP JOB &\r
\r
ERRPTU: SKIPA ITEM,JOB ;BLAME CURRENT JOB IS NOT 0.\r
ERRDEV: LDB ITEM,PJOBN ;JOB NO, FROM DEVICE DATA BLOCK\r
-ERRPNT: SKIPM ITEM ;ERROR IN NULL JOB?\r
+ERRPNT: SKIPN ITEM ;ERROR IN NULL JOB?\r
SETOM NULERR ;YES, SET FLAG FOR ERROR IN NULL JOB\r
; SO STATE OF NULL JOB WILL BE REESTABLISHED\r
; WHEN IS IT RUN AGAIN(SEE CLOCK1)\r
\r
ERREND: END\r
\f\r
+\0
\ No newline at end of file
--- /dev/null
+;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
--- /dev/null
+;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
-;THIS SUB-PROGRAM ASSEMBLED WITH CONFIGURATION DEPENDENT FEATURE SWITCHES - FT40N.MAC(V002)\r
+;THIS SUB-PROGRAM ASSEMBLED WITH CONFIGURATION DEPENDENT FEATURE SWITCHES - FT40N.MAC(V003)\r
XLIST\r
; TH/RC TS3.19 27 SEP 68 V002\r
;CONFIGURATION DEPENDENT FEATURE SWITCHES FOR CONDITIONAL ASSEMBLY\r
;NOT APPENDED AFTER LIST CAUSING EXTRA BLANK PAGE IN MONITOR LISTING\r
\r
LIST\r
+\f\r
--- /dev/null
+;THIS SUB-PROGRAM ASSEMBLED WITH CONFIGURATION DEPENDENT FEATURE SWITCHES - FT50SD.MAC(V003)\r
+ XLIST\r
+; TH/RC TS3.19 27 SEP 68 V002\r
+;CONFIGURATION DEPENDENT FEATURE SWITCHES FOR CONDITIONAL ASSEMBLY\r
+;-1 MEANS INCLUDE THE ASSOCIATED FEATURE, 0 MEANS ELIMINATE IT\r
+\r
+FTSWAP=-1 ;SWAPPING SYSTEM\r
+ ;IF FTSWAP=-1, THEN FTDISK MUST BE -1\r
+\r
+FTDISK=-1 ;DISK SYSTEM(MAY OR MAY NOT HAVE SWAPPING)\r
+ ;IF FTDISK=-1, THEN FTLOGIN MUST BE -1\r
+ ;IF FTSWAP=-1, THEN FTDISK MUST BE -1\r
+\r
+FTLOGIN=-1 ;LOGIN-LOGOUT COMMAND AND UUOS\r
+ ;FTDISK=-1 IMPLIES FTLOGIN=-1\r
+\r
+FTCCL=-1 ;CONCISE COMMAND LANGUAGE COMMANDS\r
+ ;USED IN APRSER\r
+ ;SHOULD BE 0 IN NON-DISK SYSTEMS\r
+ ;SHOULD BE -1 IN DISK SYSTEMS, WHEN IMPLEMENTED\r
+\r
+FTRC10=0 ;DATA PRODUCTS DISK\r
+\r
+FTKCT=-1 ;ACCUMULATE CORE*RUNNING TIME FOR CHARGING FOR EACH USER\r
+\r
+FTPRV=-1 ;PRIVILEGE BITS FOR EACH USER\r
+\r
+FTGETTAB=-1 ;GETTAB UUO - RETURN CONTENTS OF MONITOR JOBTABLES\r
+\r
+;LAST PAGE SHOULD BE WRITTEN WITH 'HP' TECO COMMAND SO FORM-FEED IS\r
+;NOT APPENDED AFTER LIST CAUSING EXTRA BLANK PAGE IN MONITOR LISTING\r
+\r
+ LIST\r
\r
;THE FOLLOWING EXTERNAL SYMBOLS ARE DEFINED IN UUCON:\r
\r
- EXTERNAL ADVBFE, IDSET, OUT, SETACT, STOIOS\r
+ EXTERNAL ADVBFE, IOSET, OUT, SETACT, STOIOS\r
\r
;THE FOLLOWING SYMBOLS ARE REFERENCED OUTSIDE OF LPTSER:\r
\r
LPTEX2: JRST STOIOS ;SAVE IOS, RESET HUNG DEVICE COUNT\r
; AND DISMISS INTERRUPT\r
\r
-LTPOFF: TLNN IOS,LPTEND ;SKIP IF CLOSE HAS BEEN DONE\r
+LPTOFF: TLNN IOS,LPTEND ;SKIP IF CLOSE HAS BEEN DONE\r
JRST LPTOF1 ; GO TURN PRINTER OFF UNTIL NEXT OUTPUT\r
TLON IOS,LPTSYN ;HAS FINAL CRFF BEEN OUTPUT?\r
JRST LPTBG2 ; NO, SO GO DO IT\r
XCT LPTDTO(DEVDAT)\r
JRST LPTER4\r
\r
-LPTER4: XCT LPTECH(DEVDAT) ;SKIP IF ERROR INTERRUPT NOT ASSIGNED\r
+LPTER2: XCT LPTECH(DEVDAT) ;SKIP IF ERROR INTERRUPT NOT ASSIGNED\r
JRST LPTER5 ; ERROR CONDITION DETECTED\r
MOVE TAC,LPTCH(DEVDAT) ;GET INTERRUPT CHANNEL ASSIGNMENTS\r
ANDI TAC,LPTDCM ;MASK OUT ERROR CHANNEL\r
IORI TAC,LPTBSY ;SET THE BUSY FLAG\r
XCT LPTCNO(DEVDAT) ;SEND IT OUT TO THE LPT\r
- MOVEI TAC,LPTRLOV+LPTERR+LPTDON ;ENABLE FOR ALL INTERRUPTS\r
+ MOVEI TAC,LPTLOV+LPTERR+LPTDON ;ENABLE FOR ALL INTERRUPTS\r
LPTER3: HRRM TAC,LPTCON(DEVDAT) ;SAVE SKIP CHAIN MASK FLAGS\r
LPTER4: MOVE TAC,LPTSV2(DEVDAT) ;RESTORE SAVED ACCUMULATOR\r
JRST LPTEX1(DEVDAT) ; AND GO DISMISS INTERRUPT\r
\r
\r
\r
-
\ No newline at end of file
+ \r
+\0\0\0\0
\ No newline at end of file
\r
END BEG\r
\f\r
+\0\0\0\0
\ No newline at end of file
\f END MONGEN\r
\r
\f\r
+\0\0\0
\ No newline at end of file
JRST CPOPJ1 ;RENAME\r
POPJ PDP, ;CLOSE INPUT\r
POPJ PDP, ;UTPCLR\r
- JRST MTAP0T\r
+ JRST MTAP0\r
\r
MTC=340\r
MTS=344\r
;MTBOTH=10*MTACHN+MTDCHN\r
;MTALOC=40 + 2*MTDCHN\r
;MTLOC1=MTALOC+1\r
- INTERN MTAINI,MTADDS,MTADDB\r
+ INTERN MTAINT,MTADDS,MTADDB\r
EXTERN ADVBFE,ADVBFF,MTFLAG,MTBOTH,SETACT,CLRACT,WSYNC\r
EXTERN STDENS,SETIOD,MTREQ,MTAVAL,CLOCK,MTALOC,MTLOC1,OUT\r
EXTERN CPOPJ,CPOPJ1,PIOMOD,PUNIT,MTWAIT,JIFSC2,COMCHK\r
0\r
XWD PROG,0\r
XWD PROG,0\r
- XP MTADDS,.-MTADB ;SIZE OF DDB (FOR BUILD)\r
+ XP MTADDS,.-MTADDB ;SIZE OF DDB (FOR BUILD)\r
\f;INITIALIZE\r
MTAINI: SETOM NMTREW ;RESET FLAGS\r
SETOM UNIT\r
JRST THRUTP ;NO. GIVE UP CONTROL\r
SOS NMTREW ;YES. DECREASE COUNT OF TAPES IN REW\r
AOS MTREQ ;THRUTP WILL SOS THIS BACK\r
- JRST THRUPT ;TURN OFF TM10\r
+ JRST THRUTP ;TURN OFF TM10\r
\f;CONNECT CONTROL TO A TRANSPORT\r
CONECT: MOVEI TAC,440102 ;SET UP INTERRUPT CONDITIONS\r
HRRM TAC,MTAINT\r
POPJ PDP, ;NO. COME BACK LATER\r
MTCLK2: SETOM NMTREW ;COUNT NO. OF TAPES REWINDING\r
MOVEM DEVDAT,SAVDEV\r
- MOVEI DEVDAT,MTADDR ;START AT MTA0\r
+ MOVEI DEVDAT,MTADDB ;START AT MTA0\r
AOS MTREQ ;MAKE SURE NO OTHER MTA REQUESTS ARE HONORED NOW\r
REWCHK: MOVE IOS,DEVIOS(DEVDAT)\r
JUMPGE IOS,REWCK2 ;TAPE NOT REWINDING\r
;SKIP TO LOGICAL EOT\r
LEOT: CONSZ MTS,100000 ;TAPE AT BOT?\r
JRST LEOT2 ;YES, DONT BACKSPACE\r
- PUSHJ PDP,MTAG0 ;BACKSPACE RECORD\r
+ PUSHJ PDP,MTAGO ;BACKSPACE RECORD\r
PUSHJ PDP,EOTWT ;WAIT FOR IT\r
LEOT2: MOVEI UUO,16 ;SKIP A FILE\r
PUSHJ PDP,MTAP2\r
PUSHJ PDP,MTAP\r
PUSHJ PDP,EOTWT ;WAIT FOR IT\r
MOVE IOS,DEVIOS(DEVDAT)\r
- TRNN IOS,IODENT ;END OF FILE SEEN?\r
+ TRNN IOS,IODEND ;END OF FILE SEEN?\r
JRST LEOT2 ;NO. SKIP TO NEXT FILE\r
MOVEI UUO,7 ;YES. BACKSPACE RECORD\r
\r
MTOUT2: TRO TP,4000 ;FUNCTION = WRITE\r
MOVSI TAC1,(BLKO MTC,) ;SETUP BLKO\r
MTDTGO: MOVEM TAC,PNTR ;SAVE BLKI/BLKO POINTER\r
- MOVEM TAC,SVNPTR \r
+ MOVEM TAC,SVPNTR \r
HRRI TAC1,PNTR ;BLKI/BLKO PNTR\r
MOVEM TAC1,MTALOC ;INTO INTERRUPT LOC\r
HRLM TP,USEWRD ;SAVE COMMAND\r
MTDEND: 0\r
CONO MTS,1 ;GIVE A FUNCTION STOP\r
JEN @MTDEND ;AND EXIT\r
-\fDATENO: CONSZ MTS,20600 ;RECORD OK?\r
+\fDATEND: CONSZ MTS,20600 ;RECORD OK?\r
JRST RETRY ;PARITY, DATA LATE OR BAD TAPE\r
DATND2: TLNE IOS,DMPMOD ;DUMP MODE?\r
- JRST CMPEND ;YES\r
+ JRST DMPEND ;YES\r
TLNN IOS,IO ;READING?\r
JRST INPTND ;YES, FINISH INPUT\r
-ADVOUT: PUHSJ PDP,ADVBFE ;WRITING, ADVANCE BUFFERS\r
+ADVOUT: PUSHJ PDP,ADVBFE ;WRITING, ADVANCE BUFFERS\r
;END OF TAPE?\r
JRST THRUTP ;YES, DONT WRITE ANY MORE\r
NXTREC: TLZE IOS,IOW ;IN IO WAIT?\r
- PUSHJ PDP,GETIOD ;RESTART JOB\r
+ PUSHJ PDP,SETIOD ;RESTART JOB\r
SOSG QUANTM ;COUNT DOWN PROTECT TIME\r
SKIPG MTREQ ;ANYONE ELSE WANT CONTROL?\r
CONSZ MTS,4000 ;NO. KEEP GOING UNLESS EOT\r
ADDI TAC,(PROG) ;ADD RELOCATION FACTOR\r
TLNE IOS,IO ;WRITING?\r
JRST MTOUT2 ;YES. GO WRITE RECORD\r
- TRMN IOS,1\r
+ TRNN IOS,1\r
TRO TP,10000 ;OR - READ ACROSS RECORD BOUNDARIES\r
JRST MTIN2 ;GO READ RECORD(S)\r
\r
POPJ PDP, ;NO, GO WRITE\r
ADD TAC,[XWD MTSIZ,MTSIZ] ;YES.\r
MOVEM TAC,REMNDR ;IOWD TO USE FOR NEXT RECORD\r
- SUBI TAC,MTSIZE ;ADDRESS FOR THIS IOWD\r
+ SUBI TAC,MTSIZ ;ADDRESS FOR THIS IOWD\r
HRLI TAC,MMTSIZ ;WRITE -MTSIZE WORD RECORDS\r
POPJ PDP, ;RETURN THE IOWD\r
REMNDR: 0\r
JRST THRUTP ;AND GIVE UP CONTROL\r
\r
;TRY AGAIN ON PARITY ERROR OR BAD TAPE\r
-RETRY: TRNN IOS,ONRCK ;WANT TO STOP ON ERROR?\r
+RETRY: TRNN IOS,IONRCK ;WANT TO STOP ON ERROR?\r
AOSL TAC,ERCNT ;OR TRIED ENOUGH?\r
JRST PERMER ;YES. PERMANENT ERROR\r
RETRY1: MOVEI TAC,2 ;SET RETRY SWITCH\r
SVPNTR: 0\r
MTAEND: END\r
\f\r
+\0\0\r
POPJ PDP, ;UTPCLR\r
;MTAPE UUO (FALL INTO THIS CODE WHICH FOLLOWS)\r
\r
-DEFINE MTAPE (A) ;MARCO TO DEFINE LEGAL MTAPE UUO EFFECTIVE ADDRESSES.\r
+DEFINE MTAPES (A) ;MARCO TO DEFINE LEGAL MTAPES UUO EFFECTIVE ADDRESSES.\r
< CODES=0\r
IRP A, <\r
- CODES=CODES!<1B<^D35-^0'A>>>>\r
+ CODES=CODES!<1B<^D35-^O'A>>>>\r
\r
MTAPES <0,1,11,7,17,3,6,13,16,10> ;DEFINE WHICH CODES ARE LEGAL\r
\r
\fMTAPE: PUSHJ PDP,MTCHK2 ;CHECK IF MAG TAPE CONTROL AVAIL.\r
MTAPE2: TDZ IOS,[XWD IODT!IOSEOF,IOACT]\r
TRNN T,SLICE ;SET SLICE LEVEL THIS UUO?\r
- JRST NOSFT ;NO\r
+ JRST NOSET ;NO\r
TLZ IOS,IOSLIC ;YES, CLEAR LEVEL\r
TRNE T,SLEVEL ;SET TO 1?\r
TLO IOS,IOSLIC ;YES\r
JRST MTLEOT\r
CAIE T,1400 ;WRITE EOF\r
CAIN T,5400 ;OR WRITE BLANK TAPE?\r
- JRST CHKLOC ;YES, CHECK WRITE-LOCK\r
+ JRST CHKLOK ;YES, CHECK WRITE-LOCK\r
CONSO 224,4000 ;AT LOAD POINT?\r
JRST MTGO0 ;NO\r
CAIE T,3400 ;YES, BACKSPACE RECORD?\r
TRO TAC,100000 ;YES, SET COMMAND.\r
HRRM DEVDAT,MTDEV ;COMMAND, DVDB\r
HRLM TAC,MTDEV\r
-MTGO3: MOVEI TAC1,MTPOUN\r
+MTGO3: MOVEI TAC1,MTPDUN\r
HRRM TAC1,MTIDSP\r
SETZM MTEOFF ;CLEAR EOF FLAG\r
TLNN IOS,IODT ;IS THIS A DATA TRANSFER OPERATION\r
JRST STOIOS ;STORE HUNG COUNT, EXIT\r
\r
;READ\r
-MTIN: PUSHJ PDP,MTCHECK ;IS SYSTEM AVAILABLE?>\r
+MTIN: PUSHJ PDP,MTCHEK ;IS SYSTEM AVAILABLE?>\r
TLZ IOS,IO ;READING.\r
MTIN1: SETCM TAC,@DEVIAD(DEVDAT) ;-SIZE-1\r
HRRI TAC,@DEVIAD(DEVDAT) ;BUFFER ADDRESS,PROG INCLUDED\r
MTCHK2: AOSE MTREQ\r
PUSHJ PDP,MTWAIT\r
MOVE IOS,DEVIOS(DEVDAT)\r
- TLZ IOS,IO ;CLEAR IUO INDICATION SO "REWCK" WILL WORK\r
+ TLZ IOS,IO ;CLEAR IO INDICATION SO "REWCK" WILL WORK\r
PUSHJ PDP,MTCHK4 ;CHECK STATUS\r
JRST MTCHK2 ;GET MT AGAIN\r
\r
MTCHK4: TLO IOS,HASMT ;THIS JOB NOW HAS MTC\r
TLZE IOS,IOBEG ;FIRST OPERATION AFTER INIT OR SETSTS\r
\r
- TLZ IOS,IUOSLIC ;YES, SET SLICE LEVEL TO 0.\r
+ TLZ IOS,IOSLIC ;YES, SET SLICE LEVEL TO 0.\r
TLZ IOS,IOREW ;CLEAR MAG TAPE REWINDING\r
PUSHJ PDP,REWCK ;CHECK IF REWINDING?\r
JRST TPOPJ ;NO - STATUS OK\r
DETDC: TLZN IOS,IODT ;DOES JOB HAVE DATA CONTROL?\r
JRST STOIOS ;NO- EXIT\r
CONO DC,0\r
- CONO PD,DCOFF\r
+ CONO DC,DCOFF\r
SOSL DCREQ ;ANYONE ELSE WAITING FOR IT?\r
SETOM DCAVAL ;YES- FLAG AS JUST BECOME AVAILABLE\r
JRST STOIOS ;AND EXIT\r
HRRI TAC1,DCWRD\r
CONO PI,DCOFF ;TURN DC PI CHANNEL OFF\r
MOVEM TAC1,DCLOC ;BLK COMMAND\r
- MOVE TAC1,JSR MTDCND]\r
+ MOVE TAC1,[JSR MTDCND]\r
MOVEM TAC1,DCLOC1\r
TRO IOS,IOACT ;SET IOACT\r
MOVSI TAC, ERF ;ENABLE FOR EOR IF EOR FLAG NOT ON.\r
JRST MTAPE\r
\r
MTCINI: PUSHJ PDP,RELCON\r
- SETOM MRTEWN ;SET CLOCK REQUEST COUNT TO -1\r
+ SETOM MTREWN ;SET CLOCK REQUEST COUNT TO -1\r
JRST MTNIO1\r
\r
\r
JRST .\r
JSR MTCSAV ;SAVE AC'S\r
HRRZ DEVDAT,MTDEV ;DVDB\r
- LDB PROG,PJOBM; JOB NUMBER\r
+ LDB PROG,PJOBN; JOB NUMBER\r
MOVE PROG,JBTADR(PROG)\r
MOVE IOS, DEVIOS(DEVDAT)\r
CONSO 224,TCF ;TAPE CONTROL FREE\r
JRST DMPDUN ;DUMP\r
TLNE IOS,IO\r
JRST MTNOTI ;WRITING\r
- SKIPF MTEOFF ;NOT EOF?\r
+ SKIPE MTEOFF ;NOT EOF?\r
JRST MTEOF\r
MOVEI TAC,@DEVIAD(DEVDAT) ;BUFFER ADDRESS\r
MOVN TAC1,MTDCCN ;WD CNT-1\r
- AOBJ TAC1, .+1 ;WD CNT\r
+ AOBJN TAC1, .+1 ;WD CNT\r
HLLZS TAC1 ;CLR RT HALF\r
ADD TAC1,DCWRD ;ADD CURRENT COUNT=NO, OF WDS\r
HLRM TAC1,1(TAC) ;STORE AT WORD COUNT\r
SETZM MTEOFF ;CLEAR EOF FLAG\r
\r
;AND FALL INTO MTEND1\r
-\fMTEND1: PUSHJ PDP,DETDO ;DETACH DC (IF ASSIGNED)\r
+\fMTEND1: PUSHJ PDP,DETDC ;DETACH DC (IF ASSIGNED)\r
PUSHJ PDP,ETCHK ;CHECK FOR END OF TAPE (FOR DUMP MODE OUT)\r
PUSHJ PDP,CLRACT\r
CONSO 224,TCF ;TAPE CONTROL FREE?\r
- JRST MTION ;NO. WAIT FOR IT.\r
+ JRST MTIGN ;NO. WAIT FOR IT.\r
MTFIN:\r
MTNIO: TLZE IOS,IOW ;CLEAR WAIT\r
PUSHJ PDP,SETIOD\r
- PUSHJ PDP,DETMOC ;DETACH MTC (IF HASMT SET) AND DC (IF IODT)\r
+ PUSHJ PDP,DETMDC ;DETACH MTC (IF HASMT SET) AND DC (IF IODT)\r
PUSHJ PDP,ETCHK ;CHECK FOR END OF TAPE\r
PUSHJ PDP,CLRACT ;RESTORE BITS,CLEAR IOACT\r
\r
;AND FALL INTO MTNIO1\r
-\fMTIO1: MOVN TAC,MTREDO ;REPEAT COUNTER\r
+\fMTNIO1: MOVN TAC,MTREDO ;REPEAT COUNTER\r
HRREM TAC,MTERCN\r
SKIPGE MTREWN ;IS ANY OTHER UNIT REWINDING AND\r
;A SECOND COMMAND HELD UP?\r
REW2: HLRZ DEVDAT,DEVSER(DEVDAT) ;DEVDAT TO NEXT DDB\r
JUMPE DEVDAT,REW3 ;LAST ONE?\r
HRLZ DAT,DEVNAM(DEVDAT) ;NO,GET LH OF NAME\r
- CAIN DAT,(SIZBIT /MTA/) ;STILL A MAGTAPE?\r
+ CAIN DAT,(SIXBIT /MTA/) ;STILL A MAGTAPE?\r
JRST REWLP ;YES, CONTINUE\r
REW3: POP PDP,DEVDAT\r
POPJ PDP, ;YES, DISMISS INTERRUPT OF RETURN TO MTC OK\r
JRST MTIGN1 ;NO. WAIT FOR IT.\r
CONSZ DC,1000 ;DATA MISSED\r
SETOM MISSED ;YES\r
- CONSO DC,1600000 ;ANY CHARS. LEFT?\r
+ CONSO DC,160000 ;ANY CHARS. LEFT?\r
JRST MTEOR1 ;NO\r
MOVE T,DCWRD ;GET IOWD\r
TLNN IOS,IO ;O/P\r
CONSZ MTS1,400000 ;ILLEGAL OP?\r
TRO T,1000 ;YES, COUNT IN QUARTER 3\r
CONSO MTS1,100\r
- SKIPF MISSFD ;DATA MISSED?\r
+ SKIPE MISSED ;DATA MISSED?\r
TRO T,1 ;YES, COUNT IN QUARTER 4\r
ADDM T,MTECNT(DEVDAT);ADD TO ERROR COUNTS FOR THIS DRIVE\r
JRST MTECON ;CHECK EOF\r
JRST MTPDUN\r
\r
MTBSP: MOVE TAC,MTDCCN ;POINTER\r
- MOVEM TAC,DOWRD ;RESET POINTER WORD\r
+ MOVEM TAC,DCWRD ;RESET POINTER WORD\r
HLRZ TAC,MTDEV ;COMMAND\r
CONSO 224,XNC ;WAIT FOR XNC\r
JRST .-1 ;SHOULD ADD A COUNT(RUNAWAY TAPE TURNED OFF)\r
TCF=1 ;TAPE CONTROL FREE\r
ERF=4 ;END OF RECORD FLAG\r
LPE=20 ;LONG. PARITY ERROR\r
-CRE=10 ;CHAR. PARITY ERROR\r
+CPE=10 ;CHAR. PARITY ERROR\r
SEL=2 ;UNIT TO COMMAND BUFFER\r
IOSEOF=4000 ;SPACING ONE RECORD FORWARD FOUND EOF\r
IOTEND=2000 ;EOT INDICATION\r
>\r
\f;LOGICAL EBND OF TAPE LOOP\r
MTLEOT: MOVEI T,7 ;BACKSPACE\r
- PUSHJ PDP,MTAPC2\r
+ PUSHJ PDP,MTAPE2\r
PUSHJ PDP,MTCHK2 ;CALL INTERLOCK, PICKUP IOS\r
;AFTER PREVIOS TASK FINISHED.\r
MTEOT2: MOVEI T,16 ;SAVE ONE FILE\r
PUSHJ PDP,SAVCHK\r
MOVE TAC1, @MTOUT2 ;BLKO AND DATA CONTROL COMMAND\r
MOVEI T,1000 ;WRITING COMMAND\r
-MTDMP1: HTLI TAC, PROG ;ACTUAL ADDRESS OF COMMAND LIST\r
- MOVEM TAC, MTDUMP ;COMMAND POINTER\r
+MTDMP1: HRLI TAC, PROG ;ACTUAL ADDRESS OF COMMAND LIST\r
+ MOVEM TAC, MTCMDP ;COMMAND POINTER\r
SKIPN TAC,@TAC ;COMMAND WORD\r
JRST MTEND1\r
JUMPG TAC, MTDMP1 ;CHANGE COMMAND SEQUENCE\r
- HLREM TAC, SVCNT ;SAVE COUNTER\r
+ HLREM TAC, SVCNTR ;SAVE COUNTER\r
HRRZS TAC ;GET ADDRESS ALONE\r
CAMGE TAC,AC1\r
JRST MTDMP2\r
MTDMPI: PUSH PDP,UUO\r
MTDPI1: TRNE IOS,IODEND\r
JRST TPOPJ\r
- PUSHJ PDP,MTCHECK\r
+ PUSHJ PDP,MTCHEK\r
TLZ IOS,IO ;READING\r
PUSHJ PDP,SAVCHK\r
MOVE TAC1,@MTIN2 ;BLKI AND DATA CONTROL COMMAND\r
\r
END\r
\f\r
+\0
\ No newline at end of file
; 2. USUAL SHROT ONCE ONLY CODE(ONCE) - CTY FOR DATE AND TIME\r
; 3. OPTIONAL ONCE ONLY CODE - CTY DIALOG TO CHANGE MONITOR\r
; OR REFRESH DISK(ALT-MODE INSTEAD OF CR AFTER TIME)\r
+\f\r
+\r
\r
;INITIALIZE PRIORITY CHANNELS AND SETUP INTERRUPT SERVICE ROUTINE CHAIN\r
\r
+\r
T=TAC ;DEFINE ACCUMULATOR T\r
\r
;LINK TO SERVICE ROUTINES\r
IFN FT2REL,<\r
JSP TSTREG ;GO TEST IF TWO RELOC REGISTERS EXIST\r
>\r
-\r
;HIGHEST LOC. IN JOB AREA PROTECTED FROM IO\r
-\r
-;MOVE SYMBOL TABLE UP IN MEMORY\r
+\f;MOVE SYMBOL TABLE UP IN MEMORY\r
;EXEC MUST BE LOADED IN 15K OR LESS IF GOING INTO 16K MACHINE\r
;FIRST FIND THE FIRST LOCATION OF NON-EXISTENT MEMORY\r
\r
STO1: MOVEM TAC1,.(TAC)\r
SUB TAC,[XWD 1,1]\r
JUMPGE TAC,.-3\r
-\r
- EXTERN DEVLST,INTNUM,INTTAB\r
+\f EXTERN DEVLST,INTNUM,INTTAB\r
;SETUP LOCATIONS 40 THRU 61\r
\r
JRSTI1: MOVE TAC,[XWD LOC40,40] ;SET UP LOWER CORE PI LOCATIONS\r
EXTERN NULPDL,DSKINI\r
\r
MOVEI PDP,NULPDL\r
- PUSHJ PDP,DSKINT ;INITIALIZE THE DISK\r
+ PUSHJ PDP,DSKINI ;INITIALIZE THE DISK\r
; AFTER SETTING UP CHANNEL LOC\r
; BUT BEFORE OVERWRITTING ONCE WITH DDB'S\r
>\r
;MULTIPLE DEVICE DATA BLOCKS ARE CREATED\r
;AS SPECIFIED BY SYSSIZ AND MAY ERASE PART\r
;OF ONCE ONLY CODE\r
-JRST1: JRST @LINKSR ;YES,RETURN\r
-\r
-EXTERN UUO0,ERROR,UUO2,LINKDR,DEVLST\r
+JRSTI: JRST @LINKSR ;YES,RETURN\r
+\fEXTERN UUO0,ERROR,UUO2,LINKDB,DEVLST\r
EXTERN CH1,CH2,CH3,CH4,CH5,CH6,CH7\r
\r
LOC40: 0 ;UUO PC\r
0 ;LOC 60/61 TRAPPED TO FOR UNIMPLEMENTED OP CODES ON PDP-10\r
;OP CODE 100 IS USED TO DISMISS USER MODE INTERRUPTS(SEE TRPSET UUO)\r
JSR UUO2 ;GO SEE IF OP CODE 100 OR SOME OTHER ONE\r
-\r
-IFN FT2REL,<\r
+\fIFN FT2REL,<\r
;SET LOC TWOREG TO -1 IF MACHINE HAS TWO RELOC REG,0 IF ONLY ONE RELOC REG\r
EXTERN TWOREG,SEGN,SEGPTR,AND2RG,JOBN\r
\r
CONO PI,10000 ;CLEAR PI SYSTEM\r
JRST @TSTREG\r
>\r
-\r
-;ROUTINE TO FIND THE EXEC DDT SYMBOL TABLE POINTER AND MOVE IT TO THE PLACE\r
+\f;ROUTINE TO FIND THE EXEC DDT SYMBOL TABLE POINTER AND MOVE IT TO THE PLACE\r
;WHERE EXEC DDT EXPECTS IT(DDTSYM=36)\r
;THE MONITOR CAN BE LOADED IN ANY OF 3 WAYS(IN ORDER OF PERFERNCE):\r
; 1. UNDER TIME SHARING WITH REGULAR LOADER AND COMMON\r
; 2. JUNK JUNK(NON-NEG) S.T.PTR\r
; 3. S.T.PTR S.T.PTR JUNK\r
\r
-;CALL: JSP MOVSTP\r
+;CALL: JSP MOVSTR\r
; RETURN WITH AC UUO SET TO SYMBOL TABLE POINTER\r
;CALLED FROM MANDATORY ONCE ONLY CODE AND 141 START CODE(WHICHEVER OCCURS FIRST)\r
\r
- INTERN MOVTP\r
+ INTERN MOVSTR\r
EXTERN T30SYM,JOBSYM,DDTSYM,DDTX,SYSDDT\r
\r
MOVSTR: 0 ;JSR HERE FROM MANDATORY ONCE ONLY CODE AND\r
INTERN PATSYM\r
EXTERN DDTX\r
\r
-PATSYM: JSR MOVSTP ;MOVE DDT SYMBOL TABLE POINTER SO EXEC DDT WILL\r
+PATSYM: JSR MOVSTR ;MOVE DDT SYMBOL TABLE POINTER SO EXEC DDT WILL\r
; FIND IT AND PATCH 141 TO GO DIRECTLY TO EXEC DDT\r
JRST DDTX ;AND GO DIRECTLY TO EXEC DDT\r
+\f\r
+;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE\r
\r
IFN FTRC10, <\r
ENTRY RCXWNZ ;THIS SYMBOL IS SOLELY TO PERMIT THE SYSTEM\r
MOVEI TAC,TSEXEC\r
PUSHJ PDP,CONMES\r
PUSHJ PDP,OPOUT\r
-\r
-\r
-;ASK FOR TODAY'S DATE AND CONVERT \r
+\f;ASK FOR TODAY'S DATE AND CONVERT \r
;DATE STORED AS ((Y-64)*12.+M-1)*31.+D-1\r
\r
-EXTERNAL THSDAT,JUFMIN,SKIPS\r
+EXTERNAL THSDAT,JIFMIN,SKIPS\r
\r
PUSHJ PDP,DATLOP\r
JRST .-1\r
SUBI TAC1,^D64 ;YEAR ZERO\r
IMULI TAC1,^D12*^D31\r
ADDM TAC1,THSDAT\r
-\r
-\r
-;GET TIME OF DAY\r
+\f;GET TIME OF DAY\r
\r
EXTERNAL TIME\r
\r
- POP PDP,TC\r
+ POP PDP,TAC\r
PUSHJ PDP,TIMLOP\r
JRST .-1\r
TIMLOP: SETZM TIME\r
MOVEI TAC,TIMEM\r
- PUSHJ PDP,IOCONM\r
+ PUSHJ PDP,ICONM\r
PUSHJ PDP,OPOUT\r
PUSHJ PDP,GETLIN\r
JRST TIMLOP ;JUST A CR\r
JRST TIMLOP ;NO ARGUMENT\r
JRST TIMLOP ;ILLEGAL CHARACTER\r
MOVE TAC,TAC1\r
- IDIVI TYAC,^D100 ;TAC=HRS.TAC1=MINS\r
+ IDIVI TAC,^D100 ;TAC=HRS.TAC1=MINS\r
\r
SKIPL TAC ;HRS NEGATIVE?\r
CAILE TAC,^D23 ;OR .G. 23?\r
JUMPGE ITEM,QUICK ;SKIP NEXT PART OF DIALOGUE UNLESS THE LAST ITEM\r
; TYPED IN (NAMELY TIME OF DAT) WAS TERMINATED BY\r
; AN "ALT MODE". (ACCUMULATOR "ITEM" IS SET UP\r
- ; IUN THE "GETLIN" SUBROUTINE CALLED ABOVE.)\r
-\r
+ ; IN THE "GETLIN" SUBROUTINE CALLED ABOVE.)\r
+\f;PRINT IO CONFIGURATION\r
\r
-;PRINT IO CONFIGURATION\r
-\r
-EXTERNAL DEVLST,TCONLN,INLMES,PRENAME,INTTB1,INTTAB\r
+EXTERNAL DEVLST,TCONLN,INLMES,PRNAME,INTTB1,INTTAB\r
EXTERNAL OCTPNT\r
\r
IFN FT2REL,<\r
PUSHJ PDP,OPOUT\r
>\r
MOVEI TAC,IOCONF\r
- PUSHJ PDP,IOCNM\r
+ PUSHJ PDP,ICONM\r
HLRZ AC1,DEVLST\r
JUMPN AC1,ALRLNK ;DEVICE DATA BLOCK ALREADY LINKED?\r
- MOVESI PROG,INTNUM ;NO, NOT LOADED BY BULD,-NO. OF DEVICES*2\r
+ MOVSI PROG,INTNUM ;NO, NOT LOADED BY BULD,-NO. OF DEVICES*2\r
CONFLP: SKIPN AC1,INTTB1(PROG) ;INT LOC HAVE DEV DATA BLOCK?\r
JRST NODDB ;NO, GO GET NEXT DEVICE DATA BLOCK\r
LDB UUO,[POINT 8,INTTAB(PROG),8] ;YES. NO. OF DEV DATA BLKS\r
PUSHJ PDP,RADX10 ;IN DECIMAL\r
PUSHJ PDP,INLMES ;PRINT 1 SPACE\r
ASCIZ / /\r
- HLLZ TAC1,DEVNAME(AC) ;DEVICE NAME\r
+ HLLZ TAC1,DEVNAM(AC1) ;DEVICE NAME\r
PUSHJ PDP,PRNAME ;PRINT IT\r
SOJLE UUO,SINGLE ;IS THIS JUST A SIGNLE DEVICE?\r
PUSHJ PDP,INLMES ;NO, APPEND 'S TO DEVICE NAME\r
ASCIZ / (OCTAL) TTY SCANNER LINES\r
/\r
PUSHJ PDP,OPOUT\r
-\r
+\f\r
;ASK FOR OPERATORS CONSOLE TO BE SPECIFIED\r
\r
EXTERNAL INLMES,DEVOPR,CTEXT,DEVPHY\r
CAMN TAC,[SIXBIT /CTY/] ;CTY?\r
JRST .+3 ;YES. JUST STORE IT.\r
PUSHJ PDP,DEVPHY\r
- JRST ONCEP ;PHYSICAL NAME NOT FOUND\r
+ JRST ONCEOP ;PHYSICAL NAME NOT FOUND\r
MOVEM TAC,DEVOPR ;SET FOR SYSTEM\r
;DEVICE "OPR" WILL BE SAME AS THIS\r
-\r
+\f\r
;ASK IF SYSMAK IS WANTED\r
\r
EXTERN MAKEND,SYSSIZ\r
ONCE3: PUSHJ PDP,SYSSIZ ;SAVE CURRENT VALUE\r
JSP TAC,CNTDB ;UPDATE SYSSIZ BY SPACE USED\r
; FOR DEVICE DATA BLOCKS FOR DSK,DTA,MTA,TTY,PTY)\r
-\r
-;PRINT OCTAL SIZE OF MONITOR\r
+\f;PRINT OCTAL SIZE OF MONITOR\r
\r
MOVEI TAC,EXECIS\r
PUSHJ PDP,ICONM\r
>\r
\r
JRST @ONCE ;***EXIT FROM THE "ONCE-ONLY CODE"***\r
-\r
-\r
-IFN FTNDISK,<\r
-EXTERNAL OCTIN,MFDBLK,SATXWD,NUMPLK,SYSPP,REFLAG\r
+\fIFN FTDISK,<\r
+EXTERNAL OCTIN,MFDBLK,SATXWD,NUMBLK,SYSPP,REFLAG\r
\r
;REFRESH DIALOGUE\r
\r
IFN FTTTYSER,<PUSHJ PDP,SKIPS>\r
PUSHJ PDP,OCTIN\r
JRST REF2\r
- JRET REF2\r
+ JRST REF2\r
IFE FTRC10, <\r
PUSH PDP,TAC1 ;IS IT A MULTIPLE OF NUMBLK?\r
MOVEI TAC,(TAC1)\r
HRRZM TAC1,MFDBLK\r
AOS TAC1\r
HRRM TAC1,SATXWD\r
-REF3:\r
+\fREF3:\r
INTERNAL FTSWAP\r
IFN FTSWAP,<IFN FTRC10, <\r
MOVEI TAC,REF9M ;HOW MANY 1K BLOCKS ON THE ISK FOR SWAPPING ?\r
REF3A:\r
>>\r
\r
+\r
+\r
PUSHJ PDP,REFRES ;REFRESH.\r
JRST REF5 ;ERROR\r
\r
PUSHJ PDP,OPOUT\r
POPJ PDP,\r
\r
-IFE FTRC10, <\r
+\fIFE FTRC10, <\r
REF4: POP PDP,TAC1\r
MOVEI TAC,REF5M\r
PUSHJ PDP,ICONM\r
REF5: PUSH PDP,TAC ;ERROR. ON COMMING HERE, TAC HAS LOGICAL BLOCK\r
; NUMBER WHICH COULD NOT BE WRITTEN\r
MOVEI TAC,REF7M\r
- PUSHJ PDP,IOCONM\r
+ PUSHJ PDP,ICONM\r
POP PDP,TAC\r
PUSHJ PDP,OCTPNT\r
PUSHJ PDP,CRLF\r
PUSHJ PDP,OPOUT\r
JRST REF6 ;GO BACK TO TRY AGAIN.,\r
\r
+\r
REF1M: ASCIZ /DO YOU WANT TO REFRESH THE DISK ? (Y OR CR)\r
/\r
REF2M: ASCIZ /ARE YOU SURE(Y OR CR)?\r
/\r
REF3M: ASCIZ /DO YOU WANT TO CHANGE THE LOCATION OF THE MFD(Y OR CR)?\r
/\r
-REF4M: ASCIZ /TYPE THE LOGICAL DISK ADDRESS OF THE MFT RETREIVAL INFORMATION\r
+\fREF4M: ASCIZ /TYPE THE LOGICAL DISK ADDRESS OF THE MFT RETREIVAL INFORMATION\r
/\r
IFE FTRC10, <\r
REF5M: ASCIZ /MUST BE A MULTIPLE OF NUMBLK.\r
/\r
>\r
> ;THIS CLOSES AN FTDISK CONDITIONAL SERVAL PAGES BACK.\r
-\r
-;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE\r
+\f;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE\r
;CALL: PUSHJ PDP,GETLIN\r
; JUST A CR TYPED IN\r
; A LINE TYPED IN,TAC SEYT AS BYTE POINTER\r
\r
IFN FTTTYSER,<EXTERN TSETBF,SETBFI,SCNDDB,DCPUTR,PUTCHI>\r
\r
-EXTNERAL CPOPJ\r
+EXTERNAL CPOPJ1\r
\r
GETLIN: IFE FTTTYSER,<MOVE TAC,LINEP>\r
IFN FTTTYSER,< PUSHJ PDP,SETBFI>\r
GETLN1: SETOM ITEM ;MECHANISM USED TO BY-PASS PART OF DIALOGUE\r
MOVEI CHREC,15 ;WHEN ALTMODEIS TYPED.\r
JRST GET2\r
-\r
-;ROUTINE TO TYPE A LINE ON OPERATOR CONSOLE\r
+\f;ROUTINE TO TYPE A LINE ON OPERATOR CONSOLE\r
;ECHO CHECK STOPS LINE AND RETURNS\r
;CALL: DAT SET TO END OF MESSAGE\r
\r
OPOUT: IFE FTTTYSER,<MOVE TAC,LINEP>\r
IFN FTTTYSER,<MOVEI DAT,TTOBUF(DEVDAT)>\r
CONO TTY,1000 ;CLEAR INPUT\r
-OPOUT1: IFE FTTYSER,<\r
+OPOUT1: IFE FTTTYSER,<\r
CAMN TAC,DAT\r
POPJ PDP,>\r
CONSZ TTY,40\r
JRST OPOUT2 ;ECHO CHECK\r
- MEXTC\r
+ NEXTC\r
IFN FTTTYSER,< JUMPE CHREC,CPOPJ>\r
PUSHJ PDP,TYO\r
JRST OPOUT1\r
MOVEI CHREC,12\r
PUSHJ PDP,TYO\r
CONO TTY,1000 ;CLEAR INPUT\r
-\r
+\f\r
;WAIT TILL OUTPUT BUSY OFF BEFORE TYPING OUT CHAR.\r
\r
EXTERNAL TCONLN,TYPL\r
CONO APR,1000 ;YES, CLEAR CLOCK FLAG\r
AOS TIME ;INCREMENT TIME\r
POPJ PDP,\r
-\r
-ICONM: PUSH PDP,TAC\r
- SETTTYO ;INITIALIZE LINE BUFFER\r
+\fICONM: PUSH PDP,TAC\r
+ SETTYO ;INITIALIZE LINE BUFFER\r
POP PDP,TAC\r
JRST CONMES ;OUTPUT MESSAGE\r
\r
MOVSI TEM,120 ;TTYCHR\r
HRRI TEM,TIBF(DEVDAT)\r
MOVEM TEM,TTIBUF(DEVDAT) ;INIT INPUT POINTER\r
- HRRI TEM,TDBF(DEVDAT) ;AND OUTPUT POINTER\r
+ HRRI TEM,TOBF(DEVDAT) ;AND OUTPUT POINTER\r
MOVEM TEM,TTOBUF(DEVDAT)\r
JRST TSETBF ;NOW CLEAR THE BUFFERS\r
>\r
CAIN CHREC,"Y" ;WAS IT A Y?\r
AOS 0(PDP) ;YES, SKIP\r
POPJ PDP, ;NO. MAYBE IT WAS "N", SO DONT SKIP\r
-\r
+\f\r
;CONSTANTS AND PUSH DOWN LIST\r
\r
ONCEPN=20\r
OPRM: ASCIZ /\r
TYPE NAME OF OPR CONSOLE.\r
/\r
-SYSM: ASCIZ /\r
+\fSYSM: ASCIZ /\r
DO YOU WANT SYSMAK (TYPE Y IF YES, CR IF NO)?\r
/\r
SYSDM: ASCIZ /\r
/\r
CRLFMS: ASCIZ /\r
/\r
-\r
-\r
-;INITIALIZE SAT SEARCH ENTRIES\r
+\f;INITIALIZE SAT SEARCH ENTRIES\r
\r
;THIS "DFWUNS" ROUTINE IS CALLED BY MANDATORY ONCE ONLY CODE(LINKSR)\r
; AFTER ALL MULTIPLE DEVICE DATA BLOCKS HAVE BEEN GENERATED IN CORE\r
; PERFORMED, DFWUNS IS CALLED AFTER REFRES SINCE SYSINI CALLS LINKSR AFTER ONCE.\r
\r
INTERNAL FTDISK\r
-IFN FTDISK,\r
+IFN FTDISK,<\r
\r
INTERNAL DFWUNS\r
EXTERNAL SAT05,JSAT06,SATENT,SATPTR,SATBK2,SATXWD,SATPTR\r
PUSHJ PDP,CAPCTY ;DETERMINE CURRENT SYSTEM CAPACITY (HOW MANY DISKS).\r
CAMN TAC,LBHIGH ;HAS CAPACITY CHANGED SINCE LAST REFRESH ?\r
JRST DFWNZ1 ;NO, EVERYTHING APPPEARS TO BE OKAY.\r
- SETTTYO ;YES, PRINT WARNING MESSAGE...\r
+ SETTYO ;YES, PRINT WARNING MESSAGE...\r
PUSHJ PDP,INLMES\r
ASCIZ /DISK CAPACITY HAS CHANGED SINCE LAST REFRESHING.\r
EITHER RESTORE PREVIOUS DISK CONFIGURATION OR REFRESH.\r
JRST DFWUNS ;NOW TRY AGAIN.\r
DFWNZ1:\r
>\r
- MOVEI TAC,SETENT\r
+ MOVEI TAC,SATENT\r
MOVEM TAC,SATPTR\r
MOVEI PROG,0\r
MOVEI DEVDAT,DSKDDB\r
MOVE TAC,SATBK2\r
MOVEM TAC,2(DAT)\r
MOVSI TAC1,400000\r
- MOVEM TAC1,1(DSAT)\r
+ MOVEM TAC1,1(DAT)\r
MOVEI DAT,0\r
-SETS3: MOVE AC1,(TAC) ;COUNT ONE-BITS\r
+\fSETS3: MOVE AC1,(TAC) ;COUNT ONE-BITS\r
AOJN AC1,SETS3A ;IS THE WORD = -1?\r
ADDI DAT,44 ;YES\r
JRST SETS5\r
;BITS HAVE BEEN COUNTED, CHECK FOR WRITE-LOCK\r
CAIL DAT,NUMBIT ;BLOCK FULL?\r
JRST SETS8\r
- PUSHJ PDP,DEGETF ;NO. GET A FREE BLOCK\r
+ PUSHJ PDP,DFGETF ;NO. GET A FREE BLOCK\r
\r
PUSHJ PDP,SETS7 ;WRITE\r
PUSHJ PDP,SETFRE ;FREE THE BLOCK\r
HRRM TAC1,(TAC) ; TABLE TO SHOW ALL NON-EXISTENT DISKS AS\r
JRST SETS5X ; BOTH WRITE-LOCKED AND FULL.\r
>\r
+\fSETS6: POP PDP,TAC ;ERROR, TRY AGAIN\r
+ JRST SETS2\r
\r
IFE FTRC10, <\r
\r
\r
> ;CLOSE THE IFE FTRC10\r
> ;CLOSES AN IFN FTDISK A COUPLE PAGES BACK.\r
-\r
-IFN FTDISK,<\r
+\fIFN FTDISK,<\r
\r
;DISK REFRESHING ROUTINES ---\r
\r
MOVEI DEVDAT,DSKDDB\r
PUSH PDP,SETSAT\r
MOVE TAC,RPOPJ\r
- MOVEM TAC,SETSET\r
+ MOVEM TAC,SETSAT\r
PUSHJ PDP,DSKINI\r
POP PDP,SETSAT\r
MOVEI TAC,DSKCHN\r
LSH TAC,1\r
-\r
ADDI TAC,40\r
MOVE TAC1,[JSR DSKCHL]\r
MOVEM TAC1,(TAC)\r
REFER: POP PDP,WSYNC\r
RPOPJ: POPJ PDP,\r
\r
-DEFINE ZEROS (A),<XLIST\r
+DEFINE ZEROES (A),<XLIST\r
REPEAT A,<0>\r
LIST>\r
\r
DEFINE BLOCKR (NAME,EXT,PROT,PROGX,B,F,Z),<\r
NAME\r
EXT\r
- EXP PROT*1B8+14812\r
+ EXP PROT*1B8+14B12\r
XWD 1,PROGX\r
EXP Z\r
ZEROES 172\r
MFDRET: BLOCKR <XWD 1,1>,<SIXBIT /UFD/>,45,1,0,4,20 ;MFD RETREIVAL INFO\r
\r
SATBL1: XWD 777776,0 ;THIS SAT BLOCK CONTAINSS\r
- ZERSO 5400/44-1 ;ALLOCATION FOR MFD AND SAT BLOCKS\r
+ ZEROES 5400/44-1 ;ALLOCATION FOR MFD AND SAT BLOCKS\r
XWD 001777,-1\r
ONES 200+SATBL1-.\r
\r
XWD 654644,0\r
SIXBIT /*SAT*/\r
XWD 637163,17 ;RELOCATED\r
- ZEROS 174\r
+ ZEROES 174\r
\r
-NULBLK: ZEROS 5400/44-1 ;NULL SAT BLOCK\r
+NULBLK: ZEROES 5400/44-1 ;NULL SAT BLOCK\r
XWD 001777,-1\r
ONES 200+NULBLK-.\r
\r
> ;END OF THE REFRESHER FOR THE OLD PDP-6 DISK.\r
-\r
-\r
+\f\r
IFN FTRC10, <\r
\r
;DISK REFRESHER FOR THE NEW PDP-10 MODEL RC-10 (BURROUGHS) DISK--\r
\r
EXTERNAL CPOPJ1,THSDAT,TIME\r
EXTERNAL MFDBLK,SATXWD,NUMSAT,NUMBLK,SATTOP,SENTSZ\r
- EXTERNAL DISKUP,DFREF,DFWRT,DSKFDG,CHKSUM,RCXCCW,RCXFIN\r
+ EXTERNAL DISKUP,DFRED,DFWRT,DSKFDG,CHKSUM,RCXCCW,RCXFIN\r
EXTERNAL K4SWAP\r
IFN FTSWAP,<\r
- EXTNERAL MAXSWP,MXK2SWP,BLKSPK\r
+ EXTERNAL MAXSWP,MXK2SWP,BLKSPK\r
>\r
EXTERNAL LBHIGH\r
INTERNAL STATBK\r
SRCHE=1B19 ;SEARCH ERROR (DISK TIMING TRACK PROBLEMS!!)\r
DDE=1B20 ;DISK DESIGNATION ERROR\r
TSE=1B21 ;TRACK SELECT ERROR (OR EXCEEDS SYSTEM CAPACITY)\r
- MRDY=1B22 ;DISK NOT READY (OR NON-EXISTENT DISK REFERENCED)\r
+ NRDY=1B22 ;DISK NOT READY (OR NON-EXISTENT DISK REFERENCED)\r
PSF=1B23 ;POWER SUPPLY FAILURE\r
DPAR=1B24 ;DISK PARITY ERROR\r
CHDPAR=1B25 ;CHANNEL DATA PARITY ERROR\r
OVR=1B29 ;OVERRUN, I.E., MEMORY DIDN'T RESPOND QUICKLY ENOUGH\r
;BIT 30 CHANNEL CONTROL WORD WRITTEN IN MEMORY (THIS BIT IS\r
;TURNED ON ON ALMOST ALL TERMINATIONS.)\r
-BUSYRT=1B31 ;BUSY (SYNCHRONIZER PERFORMING A COMMAND SEQUENCE)\r
+BUSYBT=1B31 ;BUSY (SYNCHRONIZER PERFORMING A COMMAND SEQUENCE)\r
DONEFLG=1B32 ;DONE -- THIS ACTUALLY CAUSES THE INTERRUPT.\r
;BITS 33 - 35 PI CHANNEL SELECTION BITS.\r
\r
;COMBINATIONS OF ERRO BITS GROUPED BY TYPE --\r
DATERR=DPAR!CHDPAR ;DATA ERRORS.\r
DEVERR=SRCHE!PSF!CHCPAR!OVR ;DEVICE ERRORS.\r
-SETERR=DDE!TSE!NRDY!NXMEM ;SOFTWARE-PREVENTABLE ERRORS.\r
-\r
-\r
-;CONO FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER\r
+SETERR=DDE!TSE!NRDY!WRPE!NXMEM ;SOFTWARE-PREVENTABLE ERRORS.\r
+\f;CONO FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER\r
\r
;BITS 00 - 17 UNUSED\r
;BITS 18 - 19 SELECT DISK FOR SECTOR COUNTER READ-OUT A(SEE DATAI BITS 28-35)\r
;BITS 27 - 34 ;CORRESPONDING BITS OF INITIAL CHANNEL CONTROL ADDRESS, HENCE,\r
; THIS ADDRESS MUST BE EVEN AND IN THE FIRST 1K OF CORE MEMORY!\r
;BIT 35 ;WRITE EVEN PARITY DATA INTO MEMORY (DIAGNOSTICS ONLY!)\r
-\r
+\f\r
\r
REFRESH:\r
PUSHJ PDP,DISKUP ;BE SURE THE DISK IS UP AND READY.\r
POP PDP,TAC ; DIALOGUE TO AK THE PARAMETER SPECIFICATION\r
JRST REF6 ; QUESTIONS AGAIN.\r
\r
-RFSHME: ACSIZ /PARAMETER SPECIFICATION ERROR. TRY AGAIN.\r
+RFSHME: ASCIZ /PARAMETER SPECIFICATION ERROR. TRY AGAIN.\r
/\r
+\f\r
\r
RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK.\r
JRST REFERR ; AN ERROR ON THIS WRITE IS BAD TROUBLE !!\r
MOVE TAC,[XWD 1,1] ;THE FIRST ENTRY IN THE MFD IS FOR\r
MOVEM TAC,WNZBUF ; THE MFD ITSELF.\r
MOVE TAC,[SIXBIT/UFD/]\r
- HRR TC,MFDBLK ;POINTER TO MFD RETRIEVAL INFORMATION\r
+ HRR TAC,MFDBLK ;POINTER TO MFD RETRIEVAL INFORMATION\r
MOVEM TAC,WNZBUF+1\r
MOVE TAC,[SIXBIT/*SAT*/] ;THE ONLY OTHER ENTRY INITIALLY IN THE\r
MOVEM TAC,WNZBUF+2 ; MFD IS FOR THE FILE NAMED *SAT*.SYS WHICH\r
HRRZ TAC,MFDBLK ; ANYONE WHO WANTS TO LOOK AT THEM.\r
SUBI TAC,-1(TAC1) ;COMPUTE POINTER TO THE RETRIEVAL INFORMATION\r
HLL TAC,[SIXBIT/SYS/] ; FOR THE *SAT*.SYS FILE.\r
- MOVEM TAC,WNZBYUF+3\r
+ MOVEM TAC,WNZBUF+3\r
HRRZS TAC\r
ADDI TAC,1 ;COMPUTE LOGICAL BLOCK NUMBER OF THE MFD.\r
PUSHJ PDP,WNZWR ;WRITE THE MFD OUT ONTO THE DISK.\r
PUSHJ PDP,CHKSUM\r
HRRZM TAC1,CHKSAV ;SAVE CHECKSUM TO GO INTO RETRIEVAL INFORMATION.\r
\r
+\r
;NEXT WRITE MFD RETRIEVAL INFORMATION BLOCK ONTO THE DISK\r
\r
PUSHJ PDP,WNZCLR ;CLEAR OUTPUT BUFFER\r
HLL TAC,[SIXBIT /UFD/]\r
MOVEM TAC,WNZBUF+1 ;FILE EXTENSION, DATE\r
HRLZI TAC,045000 ;PROTECTION (ANY PROJECT 1 USER MAY WRITE IN MFD)\r
- PUSHJ PDP,MDTMDT ;FILL IN TIME, DATE, AND MODE\r
+ PUSHJ PDP,MDTMOT ;FILL IN TIME, DATE, AND MODE\r
MOVEM TAC,WNZBUF+2\r
MOVE TAC,[XWD -200,1] ;NEGATIVE WORD COUNT AND PROGRAMMER NUMBER\r
MOVEM TAC,WNZBUF+3 ;GO INTO WORD 4 OF RETRIEVAL INFO\r
MOVEM TAC,WNZBUF+177 ; MUST CONTAIN ITS OWN BLOCK NUMBER.\r
PUSHJ PDP,WNZWR ;WRITE MFD RETRIEVAL INFOMRATION ONTO THE DISK\r
JRST REFERR ;ERROR\r
-\r
+\f\r
;NEXT CREATE THE NECESSARY SAT BLOCKS ON THE DISK\r
\r
PUSH PDP,SATXWD ;SATXWD CONTROLS THE OUTER LOOP\r
MOVEI TAC,0\r
PUSHJ PDP,SETWNZ\r
JRST REFST7 ;HAVING SET ALL BITS, NO FURTHER TESTING IS NEEDED,\r
->\r
+\r
REFST2: MOVN TAC,TAC1\r
ADDI TAC1,NUMBLK\r
SUB TAC1,LOWSWP ;IS ANY OF SWAPPING AREA WITHIN THIS SAT BLOCK?\r
SUB TAC,TAC1\r
MOVEI TAC1,1 ;YES, MARK IT UNAVAILABLE,\r
PUSHJ PDP,SETWNZ\r
-\r
+\f\r
REFST4: MOVE TAC,SATXWD ;SET UP TO LOOP THRU LOGICAL BLOCK NUMBERS FOR MFD.\r
SUB TAC,[XWD 3,1] ; MFD RETRVL INFO. SAT BLOCKS, AND SAT RETRVL INFO.\r
\r
MOVE TAC,SATPTR ; BACK TO DO NEXT SAT BLOCK.\r
ADDI TAC,SENTSZ\r
JRST REFST1\r
-\r
+\f\r
;FINALLY, WRITE OUT THE RETRIEVAL INFORMATION FOR THE FILE *SAT*.SYS\r
\r
REFSRF: PUSHJ PDP,WNZCLR ;CLEAR THE BUFFER\r
HLL TAC,[SIXBIT /SYS/]\r
MOVEM TAC,WNZBUF+1 ;STORE EXTENSION AND DATE\r
HRLZI TAC,555000 ;PROTECTION CODE (UNTOUCHABLE FILE ! )\r
- PUSHJ PDP.MDTMDT ;FILL IN TIME, DATE AND MODE\r
+ PUSHJ PDP,MDTMOT ;FILL IN TIME, DATE AND MOTE\r
MOVEM TAC,WNZBUF+2\r
HLLZ TAC,SATXWD ;COMPUTE NEGATIVE WORD COUNT\r
LSH TAC,7\r
HRRI TAC,1 ;PROGRAMMER NUMBER=1\r
MOVEM TAC,WNZBUF+3\r
\r
+\r
MOVEI TAC,SATENT ;PREPARE TO STORE POINTERS TO ALL THE SAT BLOCKS.\r
MOVE TAC1,SATXWD\r
MOVEI AC2,0\r
PUSHJ PDP,WNZWR ;WRITE THE *SAT*.SYS RETRVL INFO ONTO THE DISK.\r
JRST REFERR ;ERROR\r
\r
- JRST CPOPJ1 ;***EXIT FROM PDP-10 DISK REFRESHER.***.........\r
\r
\r
+ JRST CPOPJ1 ;***EXIT FROM PDP-10 DISK REFRESHER.***.........\r
+\f\r
;ROUTINE TO WRITE THE FIXED BLOCK OF VITAL STATISTICS ONTO THE DISK.\r
\r
-WRSTAT: PUSHJ PDPWNZCLR ;CLEAR THE OUTPUT BUFFER\r
+WRSTAT: PUSHJ PDP,WNZCLR ;CLEAR THE OUTPUT BUFFER\r
MOVE TAC,[XWD -WRSTSZ,0]\r
WRSTA1: MOVE TAC1,@WRSTA9(TAC) ;STORE KEY QUANTITIES IN THE OUTPUT BUFFER\r
MOVEM TAC1,WNZBUF(TAC)\r
WRSTM1: ASCIZ /CANNOT WRITE VITAL STATISTICS BLOCK ON DISK. HELP!!\r
/\r
\r
+\r
;TABLE OF POINTERS TO THE VITAL STATISTICS THAT ARE STORED IN "STATBK" ON THE DISK.\r
\r
WRSTA9: XWD ,MFDBLK ;LOGICAL BLOCK NUMBER OF MFD RETRIEVAL INFORMATION\r
; NON-SWAPPING SYSTEM\r
>\r
WRSTSZ=.-WRSTA9\r
-\r
+\f\r
;ROUTINE TO READ IN THE FIXED BLOCK OF "VITAL STATISTICS" FROM\r
; THE DISK AND DISTRUBUTE THEM TO THE APPROPRIATE CORE LOCATIONS.\r
\r
JRST RDSTA2 ;ERROR, STATISTICS BLOCK APPARENTLY WAS CLOBBERED.\r
\r
MOVE TAC,[XWD -WRSTSZ,0] ;STORE AWAY THESE IMPORTANT PARAMETERS\r
-RDSTA1; MOVE TAC1,WNZBUF(TAC) ; UNDER CONTROL OF A TABLE IN THE "WRSTAT"\r
+RDSTA1: MOVE TAC1,WNZBUF(TAC) ; UNDER CONTROL OF A TABLE IN THE "WRSTAT"\r
MOVEM TAC1,@WRSTA9(TAC) ; ROUTINE WHICH WRITES OUT THE VITAL\r
AOBJN TAC,RDSTA1 ; STATISTICS BLOCK ONTO THE DISK.\r
\r
POPJ PDP, ;***SUBROUTINE EXIT***........\r
\r
-RDSTA2: MOVEI TAC,RDTM1\r
+\r
+RDSTA2: MOVEI TAC,RDSTM1\r
;PRINT ERROR MESSAGE IF THE VITAL\r
PUSHJ PDP,ICONM ; STATISTICS BLOCK CANNOT BE READ\r
PUSHJ PDP,OPOUT\r
\r
RDSTM1: ASCIZ /VITAL DISK STATISTICS LOST, SUGGEST REFRESHING!\r
/\r
-\r
+\f\r
;ROUTINE TO DETERMINE THE CURRENT SYSTEM'S DISK CAPACITY. I.E., THE NUMBER OF\r
; DISKS ATTACHED TO THE RC-10 DISK SYNCHRONIZER TODAY.\r
\r
; CHECK IN "DSKINT" WILL NOT FAIL SPURIOUSLY.\r
\r
MOVEI TAC,3\r
-CPCT1; PUSH PDP,TAC\r
+CPCT1: PUSH PDP,TAC\r
PUSHJ PDP,WNZRD ;ATTEMPT TO READ FIRST BLOK OF EACH SUCCESSIVE DISK.,\r
JRST CPCT3 ;ERROR\r
POP PDP,TAC\r
POP PDP,LBHIGH ;RESTORE PREVIOUSLY EXISTING VALUE OF THE HIGHEST\r
; LEGAL LOGICAL DISK BLOCK NUMBER.\r
POPJ PDP, ;***SUBROUTINE EXIT***.......\r
+i\r
\r
CPCT3: POP PDP,TAC\r
CONSZ DSK,NRDY ;NON-EXISTENT DISK?\r
; HOWEVER, DISK 0 MUST ALWAYS BE PRESENT.\r
\r
MOVEI TAC,CPCTM1 ;NO, SOME OTHER TYPE OF READ ERROR.\r
- PUSHJ PDP,IOCONM \r
+ PUSHJ PDP,ICONM \r
PUSHJ PDP,OPOUT ;PRINT ERROR MESSAGE\r
POP PDP,LBHIGH\r
JRST CAPCTY ;TRY AGAIN\r
-CPCTM1: ACSIZ /DISK READ ERROR DURING CAPACITY SEARCH INITIALIZATION\r
+CPCTM1: ASCIZ /DISK READ ERROR DURING CAPACITY SEARCH INITIALIZATION\r
/\r
-\r
-\r
+\f\r
;ROUTINE TO ASSURE THAT THE STATUS OF THE WRITE-LOCK SWITCHES ON THE\r
; DISK MAINTENANCE PANEL IS SUCH THAT THEY ARE PROTECTING "LESS THAN 0000".\r
\r
\r
WRITLK: CONI DSK,TAC\r
TLNN TAC,13777 ;BOUNDARY ZERO AND MAINTENANCE-SEGMENT OFF ?\r
- TLNN TAC,<PLGW>B53 ;YES, IS ROTARY SWITCH SET\r
+ TLNN TAC,<PLGSW>B53 ;YES, IS ROTARY SWITCH SET\r
; TO EITHER X UNDER OR OVER(AS OPPOSED\r
; TO UNDER OR X OVER)\r
JRST WRLK8 ;NO. GO PRINT ERROR MESSAGE AND LOOP.\r
JRST WRLK2 ;ERROR\r
POPJ PDP, ;***GOOD EXIT FROM WRITLK SUBROUTINE***.........\r
\r
+\r
WRLK2: MOVEI TAC,WRLKM1\r
CONSZ DSK,WRPE ;WRITE-PROTECTION ERROR ?\r
;YES, PROTECT SWITCH ERRONEOUSLY SET ON "LESS THAN\r
DIS WRITE PROTECTION SWITCHES MUST BE SET TO 0000 AND "LESS THAN",\r
FIX THEM ! !\r
/\r
-\r
+\f\r
;DISK READING ROUTINE FOR USE ONLY DURING ONCE-ONLY CODE.\r
; AVOIDS USING THE MONITOR OUFUFS AND INTERRUPT STRUCTURE.\r
\r
CONSZ DSK,DATERR!DEVERR!SETERR ;ANY ERRORS ?\r
JRST WNZRDX ;YES, GIVE ERROR RETURN.\r
MOVE TAC1,RCXCCW ;NO, BUT CHECK THAT THE FINAL VALUE OF THE\r
- CAMN TAC1,RCXFIX ; CHANNEL CONTROL WORD WAS AS EXCPECTED ALSO.\r
+ CAMN TAC1,RCXFIN ; CHANNEL CONTROL WORD WAS AS EXCPECTED ALSO.\r
AOS (PDP) ;***GOOD RETURN***........\r
WNZRDX: POPJ PDP, ;ERROR RETURN,\r
\r
\r
+\r
+\r
+\r
+\r
+\r
;DISK WRITING ROUTINE FOR USE ONLY DURING ONCE-ONLY CODE.\r
; AVOIDS USING THE MONITOR QUEUES AND INTERRUPT STRUCTURE.\r
\r
;ON ENTRY TO THIS SUBROUTINE, TAC CONTAINS THE LOGICAL BLOCK NUMBER OF THE DISK\r
; BLOCK WHICH IS TO BE WRITTEN ONTO THE DISK FROM THE ONCE-ONLY DISK BUFFER AREA.\r
\r
-WNZWR: CONO DSK,DATERR!DEVERR!SETERR!RESCIG ;CLEAR THE DISK SYNCHRONIZER.\r
+WNZWR: CONO DSK,DATERR!DEVERR!SETERR!RESETB ;CLEAR THE DISK SYNCHRONIZER.\r
CONSZ DSK,BUSYBT!DONEFLG\r
JRST WNZWR ;DON'T PROCEED UNLESS THAE CLEAR WORKED.\r
\r
MOVEM TAC,LBSAVE ;SAVE LOGICAL BLOCK NUMBER IN CASE AN ERROR RETURN\r
; MUST BE TAKEN FROM THE "REFRESH" SUBROUTINE.\r
- PUSH POP,DSKFDG ;SAVE THIS ISNTRUCTION FROM "DSKINT".\r
+ PUSH PDP,DSKFDG ;SAVE THIS ISNTRUCTION FROM "DSKINT".\r
MOVE TAC1,[HRRZI TAC,0] ;NOW TAMPER WITH THAT SAVED LOCATION SO\r
MOVEM TAC1,DSKFDG ; THAT DSKINT WILL NOT ENABLE ANY INTERRUPT CHANNEL.\r
- MOVE TAC1,[XWD -200,WNZPUT-1]\r
+ MOVE TAC1,[XWD -200,WNZBUF-1]\r
PUSHJ PDP,DFWRT ;CALL DEVICE-DEPENDENT ROUTINE IN "DSKINT" DIRECTLY.\r
\r
JRST WNZRDC ;THE REMAINDER OF THE WRITE ROUTINE IS IDENTICAL\r
; TO THE READ ROUTINE\r
\r
-;SUBROUTINE TO WATCH FOR THE DONE FLAG TO COME ON AND TIME OUT IF\r
+\f;SUBROUTINE TO WATCH FOR THE DONE FLAG TO COME ON AND TIME OUT IF\r
; IT DOESN'T COME UP SOON ENOUGH (SAY 5 SEC OR SO).\r
\r
WNZWAT: MOVE TAC,[^D1000000] ;AT MOST ONE MILLION TIMES THRU THE CONSZ-SOJG LOOP\r
WATMSG: ASCIZ /DISK HUNG.\r
/\r
\r
+\r
;SUBROUTINE TO SET SPECIFIED BITS IN A SAT BLOCK WHILE FORMING IT IN WNZBUF\r
\r
;ENTRY CONDITIONS -- C(TAC) = FIRST BIT NUMBER TO SET (NUMBERED BEGINNING AT 0)\r
STWNZ2: SOJN AC1,STWNZ1\r
POPJ PDP, ;SUBROUTINE EXIT...........\r
\r
+\r
;SUBROUTINE TO CLEAR THE ONCE-ONLY OUTPUT BUFFER, WNZBUF\r
WNZCLR: SETZM WNZBUF\r
MOVE TAC,[XWD WNZBUF,WNZBUF+1]\r
BLT TAC,WNZBUF+177\r
POPJ PDP, ;SUBROUTINE EXIT...........\r
-\r
+\f\r
;SUBROUTINE TO MASK THE TIME, DATE, AND DATA MODE (=14 FOR BINARY MODE0 INTO ACCUMU-\r
; LATOR TAC IN THE FORMAT USED IN WORD 3 OF A DISK RETRIEVAL INFORMATION BLOCK.\r
\r
-MDTMDT: PUSH PDP,TAC\r
+MDTMOT: PUSH PDP,TAC\r
MOVE TAC,TIME ;GET TIME IN JIFFIES.\r
IDIVI TAC,JIFMIN ;CONVERT TO MINUTES\r
LSH TAC,^D12\r
> ;END OF REFRESH PROCEDURE FOR THE RD10 DISK.\r
\r
> ;CLOSE AN EVEN EARLIER FTDISK CONDITIONAL.\r
-\r
-INTERNAL FTCHECK\r
+\fINTERNAL FTCHECK\r
IFN FTCHEC,<\r
\r
EXTERNAL CHKREG,CHKEND,CHECK,MONPTR,MONSUM\r
>\r
\r
ONCEND: END\r
-\f\r
PLTCTR: 0 ;OUTPUT BYTE COUNTER\r
\r
EXTERNAL OUT,SETACT,PLTCHN,PLTCHL,IOSET,ADVBFE,ADRERR,CPOPJ1\r
-EXTERNAL SETIOD,STOIOS,CLRACT,IULLINP,PLTSAV,IADRCK\r
+EXTERNAL SETIOD,STOIOS,CLRACT,ILLINP,PLTSAV,IADRCK\r
\r
INTERN PLTDDB,PLTINT,PLTDSP\r
\f;DISPATCH TABLE\r
PUSHJ PDP,PLTSET ;SETUP BYTE POINTER AND COUNTER\r
JRST PLTOFF ;ADDRESS ERROR RET FROM PLTSET\r
PLT2: TLZE IOS,IOW\r
- PUSHJ PDP,SETIUOD ;LET JOB START AGAIN\r
+ PUSHJ PDP,SETIOD ;LET JOB START AGAIN\r
JRST STOIOS ;EVENTUALLY DISMISS INTERRUPT. IF ADVBFE\r
;FOUND MORE DATA (IT SKIPPED), ANOTHER\r
;INTERRUPT WILL IMMEDIATELY OCCUR BUT\r
;IT WILL BE HANDLED WITHOUT GOING TO PLT1\r
\r
PLTOFF: CONO PLT,0 ;SHUT DOWN PLOTTER\r
- HLLSZ PLTINT ;REMOVE PLOTTER FROM CHAIN\r
+ HLLZS PLTINT ;REMOVE PLOTTER FROM CHAIN\r
PUSHJ PDP,CLRACT\r
TLZE IOS,PLTUP ;HAS THE "CLOSE" BEEN DONE?\r
DATAO PLT,[40] ;YES, LIFT PEN\r
Z\r
XP PTYCSV,.-ZZ\r
Z\r
- XP PTYDDS,.-ZZ\r
+ XP PTYSAC,.-ZZ\r
BLOCK 13\r
XP PTYBND,PTYSAC+12\r
- XP PTYDM1,PTYBND-1\r
+ XP PTYBM1,PTYBND-1\r
XP PTYDDS,.-ZZ ;SIZE OF PTY DDB\r
\r
PTYSA2: BLT SCNHAC,0\r
;SET IN THE OF IOS)\r
\r
\r
-EXTERNAL TCONLN,TTYTIBTPYTAB,PTYTAB,SETIOD\r
-EXTERNAL ADVBFF,RUNIT,RECIN3,PUTCHI\r
-EXTERNAL TTIBUF,SPCHEK,DDBSRC,LINTAB,CNCTST,TIFCTR,INBFUL\r
+EXTERNAL TCOMLN,TTYTAB,TCOMM,TPYTAB,PTYTAB,ITMCNT,SETIOD\r
+EXTERNAL ADVBFE,PUNIT\r
\r
PTYOUT: LDB LINE,PUNIT\r
JSR PTYSAV\r
MOVEM IOS,DEVIOS(DDB) ;SAVE TTY STATE\r
TRO PIOS,IOPTRE ;LET USER KNOW\r
\r
-PTYOU3: JRS PTYRET ;RESTORE ACS\r
+PTYOU3: JSR PTYRET ;RESTORE ACS\r
EXCH IOS,PIOS\r
PTYOU8: TLZE IOS,IOW\r
PUSHJ PDP,SETIOD ;START PTY JOB\r
TLO IOS,IOFST\r
MOVEM IOS,DEVIOS(DDB)\r
POPJ PDP,\r
-\fEXTERNAL TCONLN,TTYTAB,SETIOD,ADVBFF,STOSQD,ADRERR\r
+\fEXTERNAL TCONLN,TTYTAB,SETIOD,STODAT,ADVBFF,STOSQD,ADRERR\r
\r
PTYIN: LDB LINE,[POINT 6,DEVCHR(DDB),23]\r
ADDI LINE,TCONLN\r
JUMPE CHREC,PTYIN5+1 ;NO\r
;YES,SAVE LINE NO.\r
PTYIN4: TLNN PIOS,IO+SP ;IS TTY DONE?\r
- JRST PTYI38 ;YES. THATS ALL\r
+ JRST PTYI3B ;YES. THATS ALL\r
MOVE DAT,CHREC\r
PUSHJ PDP,STODAT ;STORE CHARACTER\r
JRST ADRERR\r
IFE FTCHECK+FTMONP,<\r
PTYSAV: 0\r
>\r
-PTYSA0: MOVEM SCHHAC,PTYBDN(DDB) ;SAVE HIGH AC\r
+PTYSA0: MOVEM SCNHAC,PTYBND(DDB) ;SAVE HIGH AC\r
HRRZ SCNHAC,DDB\r
- ADDI SCHNHAC,PTYBM1\r
+ ADDI SCNHAC,PTYBM1\r
HRRM SCNHAC,PTYSA2\r
SUBI SCNHAC,SCNHAC-1\r
XCT PTYSA2 ;DO BLT SCNHAC\r
IORB PIOS,DEVIOS(PDDB)\r
TRNE PIOS,IOPTW ;IS LINKED TTY JOB IN INPUT WAIT?\r
PUSHJ PDP,PTWAKE ;YES, WAKE UP CONTROL JOB\r
- JSRT ACRET\r
+ JRST ACRET\r
\f END\r
\f\r
+\0\0\0\0
\ No newline at end of file
XP DEVBUF,6 ;C(LH)=REL. ADR. OF 3 WORD OUTPUT BUFFER HEADER\r
; C(RH)=REL. ADR. OF 3 WORD INPUT BUFFER HEADER\r
XP DEVIAD,7 ;C(LH)=PROG IN INDEX FIELD\r
+ ;BITS 1 AND 2 USED TO KEEP COUNT OF NO. OF USER CHANNELS\r
+ \r
+ ; INITED ON THIS DEVICE(DECTAPE ONLY)\r
+ ; IADPTR-COMMON BYTE POINTER TO 2 BIT COUNT\r
XP DEVADR,DEVIAD\r
; C(RH)=REL. INPUT BUFFER ADD. SERVICE ROUT. IS FILLING\r
XP DEVOAD,10 ;C(LH)=PROG IN INDEX FIELD\r
XP DEVEXT,12 ;LH=EXTENSION, RH=UNUSED\r
XP DEVPPN,13 ;PROJECT PROGRAMMER NO. (DISK ONLY)\r
; OTHER DEVICES NEED NOT HAVE THIS LOCATION IN THEM.\r
-\f; I/0 STATUS WORD ASSIGNMENTS\r
+\f; I/O STATUS WORD ASSIGNMENTS\r
;DATA MODES: BITS 32-35(BYTE POINTER=PIOMOD)\r
XP A,0 ;ASCII\r
XP AL,1 ;ASCII LINE\r
ASUPPRESS ;ELIMINATE ALL SYMBOLS NOT REFERENCED LATER\r
; FROM THE SYMBOL TABLE LISTING\r
LIST\r
-\f\r
HLRZ SW,JBTSTS(J) ;GET JOB STATUS BITS AND CODES\r
TRZ SW,RUNMSK+CMWB ;MASK OUT DO NOT CARE BITS\r
CAIE SW,RUNABLE ;IS CURRENT JOB RUNABLE?\r
- JRST CKJR3 ;NO. REQUEU CURRENT JOB\r
+ JRST CKJB3 ;NO. REQUEU CURRENT JOB\r
SKIPN TIMEF ;NO. IS THIS A TIME INTERRUPT?\r
JRST CKJB1 ;NO.\r
\r
MOVEI DAT,QTIME ;YES---REQUEUE AND RESET QUANT. TIME\r
MOVE TAC,JOBQUE\r
PUSHJ PDP,QXFER\r
-\fCKJB1: SKIPG QJ,QJDB ;SET QJ NON ZERO IF ANY REQUEUING TO DO\r
+\fCKJB1: SKIPG QJ,QJOB ;SET QJ NON ZERO IF ANY REQUEUING TO DO\r
JRST CKJB5 ;NO REQUEUEING NECESSARY\r
MOVEI J,JOBMAX ;START WITH HIGHEST JOB NUMBER ASSIGNED\r
-CKJB2: MOVSI SW,JBQ ;JOB NEEDS REQUEUEING BIT\r
+CKJB2: MOVSI SW,JRQ ;JOB NEEDS REQUEUEING BIT\r
TDNN SW,JBTSTS(J) ;THIS JOB?\r
SOJG J,.-1 ;NO, KEEP LOOKING\r
JUMPLE J,CKJB5 ;YES,LOOKED AT ALL JOBS?\r
TLNN SW,CMWB ;IS JOB IN COMMAND WAIT?\r
JRST CKJB9 ;NO.\r
TLNE SW,SWP+JXPN ;YES, IS JOB ON DISK, OR TRYING TO EXPAND?\r
- JRST CK,JB4A ;YES. PUT JOB IN COMMAND WAIT Q\r
+ JRST CKJB4A ;YES. PUT JOB IN COMMAND WAIT Q\r
CKJB9: JUMPGE SW,CKJB4 ;NO,WAIT STATUS CODE DETERMINES NEW Q\r
LDB SW,PJBSTS ;YES, GET QUEUE CODE.\r
CAIN SW,WSQ ;*** EXPERIMENTAL ***\r
JRST CKJB10 ;*** EXPERIMENTAL ***\r
- CAIN SW,TIOWD ;CURRENT JOB GOING INTO TTY IO WAIT?\r
+ CAIN SW,TIOWQ ;CURRENT JOB GOING INTO TTY IO WAIT?\r
HRROS JBTSWP(J) ;YES, SET IN CORE PROTECT TIME TO -1,\r
; SO HE CAN BE SWAPPED IMMEDIATELY IF SOMEONE\r
; ELSE WANTS TO BE SWAPPED IN\r
;PUT ALL JOBS IN NULL QUEUE(JOB NO. NOT ASSIGNED)\r
;CALLED ON RESTART AT LOC 143\r
\r
-INTERNAL QINT\r
+INTERNAL QINI\r
EXTERNAL CPOPJ,JOBMAX,MXQUE,JBTQ\r
EXTERNAL JBTQP1 ;EQUALS JBTQ+1\r
-EXTERNAL JBTCM1 ;EQUALS JBTQ-1\r
-EXTERNAL JBTOMN ;EQUALS JBTQ-NULQ\r
+EXTERNAL JBTQM1 ;EQUALS JBTQ-1\r
+EXTERNAL JBTQMN ;EQUALS JBTQ-NULQ\r
\r
QINI: MOVNI TAC,MXQUE ;MAKE ALL QUEUE HEADERS POINT TO THEMSELVES\r
HRL TAC,TAC ;BACKWARD POINTERS TOO\r
J=ITEM ;JOB NO.\r
Q=PROG ;DEST-Q AND QUANT. TIME ON RETURN\r
T1=TAC1 ;TEMP\r
-T2=TAC ;TEMP AND SOURCE-Q ON CALL TO B,EQLINE\r
+T2=TAC ;TEMP AND SOURCE-Q ON CALL TO B,EQLINK\r
\r
EXTERNAL ERROR\r
\r
BQFIX=QFIX\r
EQFIX=QFIX+1B0\r
BQLINK=QLINK\r
-EQLINK=QLINE+1B0\r
+EQLINK=QLINK+1B0\r
BQJSIZ=QJSIZ\r
EQJSIZ=QJSIZ+1B0\r
\f,SCANS THE QS RETURNING THE NUMBERS OF THE JOBS IN THE QS.\r
\r
DEFINE X(A,B)\r
<INTERNAL A'AVAL,A'Q\r
-A'Q=.=AVALTB\r
+A'Q=.-AVALTB\r
A'AVAL: 0\r
>\r
\r
LOC=LOC+1\r
>\r
CODES\r
+\r
+XP MXCODE,LOC-1 ;MAX, JOB STATE DONE\r
+PQ1=LOC\r
+LOC=LOC+1\r
+PQ2=LOC\r
+LOC=LOC+1\r
+PQ3=LOC\r
+LOC=LOC+1\r
+CMQ=LOC ;COMMAND DELAY QUEUE\r
\f;CORRESPONDENCE TABLE BETWEEN JOB STATUS CODES AND QUEUE TRANSFER TABLES\r
;USED BY SCHEDULER\r
;RUNCSS SETS JOB STATUS WORD TO NEW STATE CODE.\r
INTERNAL QBITS\r
\r
QBITS: QUEUES\r
+ CODES\r
\fIFN FTCHECK+FTMONP,<\r
DEFINE X(A,B),<\r
EXTERNAL A'RFQ\r
QWSW: TTAB BQFIX,PQ1,QQTTY ;IO WAIT SAT.(EXCEPT TTY)\r
;ENTER FRONT OF PROCESSOR QS AND GET QUANT, TIME\r
;ACCORDING TO JOB SIZE\r
-QTSW: TTAB BQFIX,PQ,QQTTY ;TTY IO WAIT SATISFIED(ENTER FRONT OF PQ1)\r
+QTSW: TTAB BQFIX,PQ1,QQTTY ;TTY IO WAIT SATISFIED(ENTER FRONT OF PQ11)\r
\r
QIOWW: TTAB EQFIX,IOWQ,-1 ;IOW(EXDEPT TTY) HELD IN IOWQ\r
QTIOWW: TTAB EQFIX,TIOWQ,-1 ;TTY IOW HELD IN TIOWQ\r
\r
QQSD=-1\r
\r
-QMSQ: TTAB BQFIX,PQ1,QQSD ;START MON. Q(DISK) AT PQ1\r
+QMQS: TTAB BQFIX,PQ1,QQSD ;START MON. Q(DISK) AT PQ1\r
QDAS: TTAB BQFIX,PQ1,QQSD ;DEV. ALLOC.(DISK)...\r
QDCS: TTAB BQFIX,PQ1,QQSD ;DATA CONTROL...\r
QSTS: TTAB BQFIX,PQ1,QQSD ;SYST TAPE\r
QDTS: TTAB BQFIX,PQ1,QQSD ;DEC TAPE\r
QMTS: TTAB BQFIX,PQ1,QQSD ;MAG TAPE\r
QAUS: TTAB BQFIX,PQ1,QQSD ;ALTER UFD\r
-QTIME PTTAB EQLINK,QTTAB,QQSTAB ;MOVE JOB TO LOWER Q\r
+QTIME: PTTAB EQLINK,QTTAB,QQSTAB ;MOVE JOB TO LOWER Q\r
;WHEN QUANT. TIME EXCEEDED AND RESET QUANT. TIME\r
\f,ENTER PROCESSOR QS ACCORDING TO JOB SIZE\r
QSTAB: XWD 4,-PQ1 ;PQ1 IF SIZE .LE. 4K\r
XWD -PQ3,-PQ2 ;BACK TO PQ2 TO COMPETE WITH IOWS JOBS\r
Z\r
\r
+,PUT JOB DOWN A Q IF EXCEEDS QUANT. TIME\r
+QTTAB: XWD -PQ1,-PQ2\r
+ XWD -PQ2,-PQ3\r
+ XWD -PQ3,-PQ2 ;BACK TO PQ2 TO COMPETE WITH IOWS JOBS\r
+ Z\r
+\r
,QUANTUM TABLES\r
\r
QQSD=6 ;TENTH SEC. INITIAL QUANT. FOR SHAR. DEV. WAITERS\r
\fIFN FTSWAP,<\r
INTERNAL ISCAN,QSCAN\r
ISCAN: ;SCAN FOR INPUT\r
- XWD -CWM,QFOR ;MONITOR COMMAND WHICH NEEDS CORE IMAGE IN CORE\r
+ XWD -CMQ,QFOR ;MONITOR COMMAND WHICH NEEDS CORE IMAGE IN CORE\r
XWD -MQQ,QFOR1 ;LOOK FOR 1ST JOBS IN SHAR. DEV QUEUES\r
XWD -DAQ,QFOR1\r
XWD -AUQ,QFOR1\r
Z\r
Z ;FINAL ZERO TO FLAG END\r
\r
-QSCAN: ;SCAN FOR OUTPUT\r
+OSCAN: ;SCAN FOR OUTPUT\r
XWD -STOPQ,QFOR ;UNRUNABLE JOBS FIRST\r
XWD -SLPQ,QFOR\r
XWD -DTQ,QBAK1 ;ANY SHAR. DEV.WAITERS MORE THAN 1 DEEP\r
J=ITEM\r
\r
,ALL DEVICE DEPENDENT CODE MARKED WITH A "*"\r
-\fSWAP: SKIPE SHWAT ;IS CORE SHUFFLER WAITING FOR IO TO STOP\r
+\fSWAP: SKIPE SHFWAT ;IS CORE SHUFFLER WAITING FOR IO TO STOP\r
; FOR SOME JOB?\r
PUSHJ PDP,CHKSHF ;YES, CALL CORE SHUFFLER TO SEE IF\r
; IO STOPPED YET\r
; FOR ONE TO SWAP OUT\r
MOVE J,HIGHJB ;YES, START WITH HIGHEST JOB NUMBER ASSIGNED\r
MOVSI T,JXPN ;SETUP JOB EXPANDED BIT\r
- TDDN T,JBTSTS(J) ;IS THIS JOB EXPANDING?\r
+ TDNN T,JBTSTS(J) ;IS THIS JOB EXPANDING?\r
SOJG J,.-1 ;NO, KEEP LOOKING\r
IFN FTRCHK,<\r
JUMPG J,SCNOK ;CLEAR XJOB SO MESSAGE WILL PRINT\r
; (DISPLAY, REAL TIME)?\r
JRST (TAC1) ;YES,CONTINUE SCAN TO FIND ANOTHER\r
HLRZ T,JBTADR(J) ;PICK UP SIZE OF JOB\r
- JUMPE T,(TAC1) ` ;CONTINUE SCAN IF NOT IN CORE (HIGH SEG ALREADY SWAPPED\r
+ JUMPE T,(TAC1) ;CONTINUE SCAN IF NOT IN CORE (HIGH SEG ALREADY SWAPPED)\r
; OUT FOR THIS USER IF NO LOW SEG)\r
ASH T,-12 ;CONVERT TO 1K BLOCKS\r
ADDI T,1\r
\r
INTERNAL FTTRACK\r
\r
-SWAPD:\r
+SWAPO:\r
IFN FTTRACK,<EXTERN LASOUT\r
MOVEM J,LASOUT ;SAVE LAST SWAP OUT FOR DEBUGGING ONLY\r
>\r
SETZM FORCE ;CLEAR FORCE FLAG\r
- HLRZ T,JBTADTR(J) ;COMPUTE CORE IMAGE\r
+ HLRZ T,JBTADR(J) ;COMPUTE CORE IMAGE\r
JUMPE T,SWP1 ;DONT OUTPUT IF 0 CORE(IMGOUT ALREADY SET TO 0\r
; WHEN CORE WAS RETURNED\r
\r
\f;COME HERE WHEN THE AMOUNT OF SPACE NEEDED ON THE DISK\r
;IS NOT AVAILABLE IN ONE CONTIGUOUS BLOCK\r
\r
- EXTERN GETFOR\r
+ EXTERN GETFCR\r
\r
FULL: HRLM DAT,AC3 ;SAVE DAT (LARGEST AVAILABLE HOLE)\r
PUSHJ PDP,FULCOR ;GET 4 FREE CORE LOCS\r
JRST OUTP2 ;GO START OUTPUT\r
\r
;HERE TO GET 4 LOCS OF FREE CORE\r
-FULCOR: PUSH PDP,ITEM ;GETFOR USES ITEM\r
- PUSHJ PDP,GETFOR ;GET 4 CELLS\r
+FULCOR: PUSH PDP,ITEM ;GETFCR USES ITEM\r
+ PUSHJ PDP,GETFCR ;GET 4 CELLS\r
JRST IPOPJ ;RETORE ITEM AND RETURN\r
\r
;STEP AC3 TO NEXT LOC OF TABLE BEING BUILT\r
\r
INTERN ZERSWP\r
\r
-ZERSWPL TDZA TAC,TAC ;REQUEST O SPACE ON DISK AND ALWAYS SKIP\r
+ZERSWP: TDZA TAC,TAC ;REQUEST O SPACE ON DISK AND ALWAYS SKIP\r
CHG1: ADDM TAC1,VIRTAL ;INCREASE SIZE OF VIRTUAL CORE AVAILABLE IN SYSTEM\r
; AND THEN RETURN ALL OF DISK SPACE(CHGSWP)\r
MOVSI TAC1,SWP!SHF ;CLEAR SWAPPED OUT BIT IN JOB OR SEG\r
\fSQGO1: SETZM SQLEN ;ZERO AMOUNT TRANSFERRED SO FAR\r
MOVE TAC1,SQREQ ;*PUT IOWD INTO TAC1\r
MOVSI TAC,200000 ;*SET "SWAPPER I/O GOING" FLAG ON\r
- ORB TAC,SETA ;*\r
+ ORB TAC,SERA ;*\r
TRZN TAC,FRGSEG ;*FRAGMENTED?\r
JRST SQGO2 ;*NO, READ IN ENTIRE (OR PART) OF SEG\r
\r
SETZM SQREQ\r
JRST DINT4B\r
\r
-SWPER1; MOVSI TAC,100\r
+SWPER1: MOVSI TAC,100\r
ADDM TAC,CKSMCT\r
TRO IOS,IODTER\r
SWPERR: MOVM TAC, FINISH ;*RESET SERA IN CASE OF FRAGMENTED JOB\r
MOVEM TAC,XSAT5\r
MOVE TAC,XSAT8\r
MOVEM TAC,XSAT6\r
- POPJ PDPD,\r
+ POPJ PDP,\r
\r
IFN FTCHECK+FTMONP,<\r
EXTERNAL SQREQ,SERA,SERACT,XSAT1,XSAT2,XSAT3,XSAT4,XSAT5,XSAT6,XSAT7\r
SERA: Z ;SIGN IS 1 IF A READ\r
; C(RH)=BLOCK NUMBER BEFORE READING.\r
; ERROR BITS AFTER READING.\r
-SELACT: 0 ;COUNT FOR ERRORS\r
+SERACT: 0 ;COUNT FOR ERRORS\r
SQLEN: 0 ;AMOUNT TRANSFERRED SO FAR - FRAG SEG\r
\r
XSAT1: EXP XSAT3-1 ;POINTER USED BY GETBIT,CLRBIT\r
XSAT6: BLOCK 1\r
REPEAT 1,<\r
IFE E1,<X=1B0>\r
- IFN E1,<X1\r
+ IFN E1,<X=1\r
REPEAT ^D35-E1,<X=X*2>>\r
IFE E2,<Z=-1>\r
IFN E2,<Z=0\r
- X=1\r
+ Y=1\r
REPEAT ^D36-E2,<Z=Z+Y\r
Y=Y*2>\r
>>\r
FXSAT: TRZN TAC,FRGSEG ;FRAGMENTED?\r
JRST FXSAT1 ;NO. DO IN REGULAR WAY\r
\r
-FRAGRK: HRRZ AC3,TAC ;YES. LOC OF TABLE IN AC3\r
+FRAGBK: HRRZ AC3,TAC ;YES. LOC OF TABLE IN AC3\r
FRGBK1: HRRZ TAC,(AC3) ;LOC OF NEXT DISK ADDRESS\r
HLRE DAT,(AC3) ;NUMBER OF K\r
JUMPLE DAT,FRGBK2 ;GIVE UP FREE CORE IF NOT REAL ADDRESS\r
IFE FTCHECK+FTMONP,<\r
;DATA ASSOCIATED WITH THE SWPSER LOGIC FOR THE NEW PDP-10 DISK ---\r
\r
- INTERN MXK2SWP,CONVMD,BLKSPK,SWAPTAB,MAXSWP\r
+ INTERN MXK2SWP,CONVMD,BLKSPK,SWPTAB,MAXSWP\r
EXTERN K4SWAP\r
;THE ABOVE ARE REFERENCED OR INITIALIZED BY THE "ONCE" ROUTINE.\r
\r
; FOR SWAPPING (UPPER BOUND ON THE VALUE OF K4SWAP WHICH\r
; MAY BE REQUESTED AT DISK REFRESH TIME). (ONE MILLION WORDS\r
; FOR SWAPPING SEEMS LIKE A NON-RESTRICTIVE ARBITRARY LIMIT.)\r
-SWPSIZ=MXK2SWP/.^D36+1 ;SIZE OF SWPTAB ALLOCATION TABLE.\r
+SWPSIZ=MXK2SWP/^D36+1 ;SIZE OF SWPTAB ALLOCATION TABLE.\r
\r
SWPENT: XWD -SWPSIZ,SWPTAB ;THREE WORD POINTER TABLE\r
XWD 400000,0 ; REQUIRED BY THE "GETBIT" AND\r
SERA: Z ;SIGN IS 1 IF A READ\r
; C(RH)=BLOCK NUMBER BEFORE READING.\r
; ERROR BITS AFTER READING.\r
-SELACT: 0 ;COUNT FOR ERRORS\r
+SERACT: 0 ;COUNT FOR ERRORS\r
SQLEN: 0 ;AMOUNT TRANSFERRED SO FAR FOR FRAGMENTED JOB\r
>\r
> ;END OF SWPSER LOGIC FOR THE NEW PDP-10 DISK.\r
\fSCHEND: END\r
+\0\r
;WHEN OUTPUT FINISHES\r
IOSUPR=200 ;SUPPRESS ALL OUTPUT\r
;TILL NEXT INPUT OR INIT (^O).\r
- TRMON=400 ;TTY IS IN MONITOR\r
+ TPMON=400 ;TTY IS IN MONITOR\r
;COMMAND MODE.\r
- DDTM=1000 ;DDT MODE\r
+ DDTM=1000 ;DDT MDDE\r
TTYDTC=2000 ;TTY DDB IS DETACHED FROM LINE\r
SYNC=20000 ;BREAK CHARACTER SEEN\r
;SIGNAL TO INCREMENT SYNC COUNT\r
FULTWX=4 ;SELF ECHOING FULL DUPLEX\r
T35=10 ;MODEL 35\r
T37=20 ;MODEL 37\r
-ROBTPB=40 ;RUBOUT TYPED LAST (ECHO \ BEFORE NEXT CHAR.)\r
+ROBTPD=40 ;RUBOUT TYPED LAST (ECHO \ BEFORE NEXT CHAR.)\r
LINRDY=100 ;LINE TYPED IN BY USER (TISYNC .G.0)\r
; NOT ACTUALLY IN LINTAB. BUT RETURNED BY\r
; GETLIN IN TTCALL\r
;(BY MONITOR, TYPE-IN COMMANDS, OR PROGRAM)\r
\r
LGLSET=T37+T35+FULTWX+XON ;THESE CAN BE SET OR ZEROED BY PROGRAM\r
-KILMSK=ROBTPB+TLKRNG+XON ;CLEARED AT TTYKIL\r
+KILMSK=ROBTPD+TLKRNG+XON ;CLEARED AT TTYKIL\r
\r
;DECLARE THESE AS INTERNS TO GET THEM IN THE MAP\r
;AND TO CHECK AGAINST S IN COMMON\r
; DATA BLOCKS.\r
; 4)SETS TTYUSE#1 IN ALL TTY DDBS IN THE TRANSLATOR TABLE.\r
\r
-EXTERNAL SCNSCH,MLTTYL,MTTYLN,TTYTAB,SCNINI\r
+EXTERNAL SCNCHN,MLTTYL,MTTYLN,TTYTAB,SCNINI\r
\r
TTYINI: MOVEI TAC,SCNCHN\r
CONO TTY,1200(TAC) ;CLEAR CTY, ASSIGN CHANNEL\r
SCN2: MOVSI TAC,TTYUSE\r
SKIPE DDB,TTYTAB(TAC1)\r
IORM TAC,DEVMOD(DDB)\r
- HRRZ TA,TAC1 ;SET UP PERMANENT LINTAB BITS\r
+ HRRZ TAC,TAC1 ;SET UP PERMANENT LINTAB BITS\r
CAIGE TAC,TCONLN ;ORDINARY TTY LINE?\r
JRST SCN3 ;YES\r
CAIE TAC,TCONLN ;CTY LINE?\r
\r
PUTCHI: SOSGE FCTR(DAT) ;ANY FREE SPACES LEFT?\r
JRST PUTCI0 ;NO\r
-PUTCI2: SOSLE PTCR(DAT) ;LAST BYTE IN BUFFER FILLED?\r
+PUTCI2: SOSLE PCTR(DAT) ;LAST BYTE IN BUFFER FILLED?\r
JRST PUTCI1 ;NO, GO AHEAD\r
PUSH PDP,TAC\r
MOVE TAC,BUF(DAT) ;GET ADR AND SIZE OF BUFFER\r
HLRZM TAC,TOPCTR(DDB) ;INITIAL COUNTER\r
HRLI TAC,440700 ;MAKE A BYTE POINTER\r
MOVEM TAC,TOPUTR(DDB) ;INITIAL POINTER\r
-PUTCO1: IDBP CHREC,TOPUTR(DDB) ;PUT CHARACTER INTO BUFFER\r
+PUTCO1: IDPB CHREC,TOPUTR(DDB) ;PUT CHARACTER INTO BUFFER\r
CONO PI,PION ;GET PI BACK ON\r
POPJ PDP,\r
\f;ROUTINE TO CHECK IF A CHARACTER IS SPECIAL(ASCII 0-37, 175-177)\r
SPOUT=100000 ;SPECIAL HANDLING ON UUO OUTPUT\r
BREAKB=20000 ;BREAK CHARACTER\r
SPHPOS=10000 ;CHARACTER AFFECTS HORIZONTAL POSITION\r
-ECSBRK=4000 ;BREAK CHARACTER IN FCS(100) MODE\r
+FCSBRK=4000 ;BREAK CHARACTER IN FCS(100) MODE\r
ECHSUP=2000 ;SUPRESS ECHO OF CHAR ITSELF\r
\r
SPCTAB: XWD ECHSUP,0 ;NULL\r
XWD SPACTN+ECHSUP,CONTP ;^P T35 SW\r
XWD SPACTN+ECHSUP,CONTQ ;^Q XON (PAPERTAPE)\r
XWD ECHSUP,0 ;^R TAPE PUNCH OFF\r
- XWD SPACN+ECHSUP,CONTS ;^S XOFF\r
+ XWD SPACTN+ECHSUP,CONTS ;^S XOFF\r
XWD ECHSUP,0 ;^T TAPE PUNCH OFF\r
XWD SPACTN,CONTU ;^U DELETE LINE\r
XWD ECHSUP,0 ;^V\r
\fXFRIN: PUSHJ PDP,GETCHR ;TRANSFER INTO USER'S AREA\r
JUMPE CHREC,XFRIN2\r
PUSHJ PDP,SPCHEK\r
- JRST XFIN1\r
+ JRST XFRIN1\r
TLNE TAC,FCSBRK+BREAKB\r
SOS TISYNC(DDB)\r
XFRIN1: CAIN CHREC,3 ;PRESTORED CONTROL C?\r
- JRST DDONC ;YES, GO INTO MONITOR MODE\r
+ JRST DDTCNC ;YES, GO INTO MONITOR MODE\r
IDPB CHREC,AC2\r
SOJG AC1,XFRIN ;LOOP TILL DONE\r
XFRIN2: MOVEI CHREC,0 ;TERMINATE STRING\r
MOVNI HPOS,10 ;YES. 8 LF'S\r
CAIN TAC,13 ;VT?\r
MOVNI HPOS,4 ;YES. 4 LF'S\r
-OUTC1B: PUSHJ PDP,PUTCH0 ;OUTPUT THE PHONEY CHAR\r
+OUTC1B: PUSHJ PDP,PUTCHO ;OUTPUT THE PHONEY CHAR\r
ADDI HPOS,1 ;COUNT THE OUTPUTS\r
TRNE HPOS,7 ;ENOUGH?\r
JRST OUTC1B ;NO. MORE.\r
JRST OUTCH3 ;NO MORE.\r
\r
OUTC1A: ;HERE ON OUTPUT OF SLOW CHARS TO SMART TTY\r
- PUSHJ PDP,PUTCH0 ;SENT THE REAL CHAR\r
+ PUSHJ PDP,PUTCHO ;SENT THE REAL CHAR\r
MOVE TAC,CHREC ;COPY THE CHARACTER\r
- MOVEI CHREC,IOLECH ;A DELAY CHARACTER\r
+ MOVEI CHREC,IDLECH ;A DELAY CHARACTER\r
SUBI HPOS,2 ;TWO SHLUFF CHARACTERS\r
JRST OUTC1C ;GO OUTPUT THE SLUFFS.\r
;COUNT WILL BE MODIFIED ON VT,FF\r
TTYIN1: SKIPG TISYNC(DDB)\r
PUSHJ PDP,TWSYNC\r
PUSHJ PDP,MONUSR\r
-TENDIN: MOVE IOS,[XWD TTYIOW+DDTM+IOSUPR,ECHOF+MERTP+IGNOR+IOACT]\r
+TENDIN: MOVE IOS,[XWD TTYIOW+DDTM+IOSUPR,ECHOF+MERTPO+IGNOR+IOACT]\r
T0POPJ: ANDCAB IOS,DEVIOS(DDB)\r
POPJ PDP,\r
\f;ROUTINE TO MOVE A LINE OR STRING FROM TTY INPUT BUFFER TO USER'S INPUT BUFFER\r
PUSHJ PDP,SPCHEK ;SPECIAL CHARACTER?\r
JRST MONUS2 ;NO\r
\r
- TLNE TAC,FCSBRK+BREAKP ;A BREAK CHARACTER?\r
+ TLNE TAC,FCSBRK+BREAKB ;A BREAK CHARACTER?\r
SOSA TISYNC(DDB) ;SOME BREAK, COUNT IT DOWN\r
MONUS2: SOJG AC2,MONUS1 ;NO, USER BUFFER FULL?\r
CAIN CHREC,3 ;STORED CONTROL C?\r
\r
MONUS7: MOVE IOS,[XWD TTYIOW,IOACT]\r
IORB IOS,DEVIOS(DDB) ;PUT JOB BACK IN IOWAIT\r
- PUSHJ PDP,MONU6\r
+ PUSHJ PDP,MONUS6\r
JRST TTYIN ;RESTART INPUT UUO\r
\r
MONUS8: TLNN IOS,IOEND ;ROOM FOR ANOTHER BUFFER, ^Z SEEN?\r
MOVSI TAC,TOIP\r
CONO PI,PIOFF ;PREVENT TIMING GLITCH\r
TDNN TAC,TTYPTR(DDB) ;IS TYPE-OUT ALREADY ON?\r
- JRST UTYPE1\r
+ JRST UTYPT1\r
CONO PI,PION\r
POPJ PDP,0\r
\r
-UTYP1: IORM TAC,TTYPTR(DDB) ;START TYPEOUT\r
+UTYPT1: IORM TAC,TTYPTR(DDB) ;START TYPTEOUT\r
JRST XMTIN1\r
\f;ROUTINE TO MOVE USER OUTPUT BUFFER TO MON. OUTPUT BUFFER\r
;CALLED ONLY AT UUO LEVEL,BY OUTPUT UUO\r
EXP INCHSL ;(5)INPUT CHAR, SKIP. LINE MODE\r
EXP GETLIN ;(6)GET LINE CHARACTERISTICS WORD\r
EXP SETLIN ;(7)SET BITS IN LH LINTAB\r
- EXP TRESOU ;(10)BACK UP POINTER TO COMMAND\r
+ EXP TRESCU ;(10)BACK UP POINTER TO COMMAND\r
EXP SETBFI ;(11)CLEAR INPUT BUFFER\r
EXP SETBF2 ;(12)CLEAR OUTPUT BUFFER\r
EXP SKPINC ;(13)SKIP IF CHAR TO INPUT\r
INCHRW: PUSHJ PDP,INCHRS ;GET ACHAR IF ONE IS THERE\r
JRST .+2 ;NONE THERE\r
POPJ PDP, ;CHAR, PICKED UP AND STORED\r
- MOVE IOS,[XWD TTYIOW+ODTM,IOACT][ ;SETUP FOR IOWAIT\r
+ MOVE IOS,[XWD TTYIOW+DDTM,IOACT] ;SETUP FOR IOWAIT\r
IORB IOS,DEVIOS(DDB) ;SPECIFICALLY FOR INPUT WAIT\r
PUSHJ PDP,TWSYNC ;WAIT FOR CHAR. TO BE TYPED\r
JRST INCHRW ;GO GET IT\r
EXTERNAL PUNIT,TTYTAB\r
\r
TTYDET: MOVSI TAC,TTYATC\r
- TDNN TAC,DEVMOND(DDB) ;IS THIS DDB WORTH KEEPING?\r
+ TDNN TAC,DEVMOD(DDB) ;IS THIS DDB WORTH KEEPING?\r
JRST TTYDT1 ;NO. GO JUNK IT\r
\r
MOVSI IOS,TTYDTC ;YES. MARK IT DETACHED\r
ADDI TAC,TTYCHR\r
IDIVI TAC,5\r
ADD TAC,TTIBUF(DDB)\r
- HLL TAC,TLWBYT(TAC1)\r
+ HLL TAC,TLHBYT(TAC1)\r
POP PDP,TAC1 ;RESTORE LINE\r
POPJ PDP,0\r
\f;ROUTINE TO FIND TTY FOR A JOB\r
SKIPA TAC,DEVOPR ;NOT FOUND.\r
JRST TTYF9\r
JUMPN TAC,TTYF3 ;WAS OPR SPECIFIED IN ONCE ONLY CODE?\r
- MOVEI DDR,TTYLST ;NO\r
+ MOVEI DDB,TTYLST ;NO\r
SKIPE DEVNAM(DDB) ;HAS A TTY BEEN TYPED ON?\r
JRST TTYF9\r
MOVEI LINE,TCONLN ;NO USE CTY.\r
MOVE IOS,DEVIOS(DDB) ;GET CORRECT IOS\r
SKIPLE TISYNC(DDB) ;HAS USER TYPED AHEAD?\r
PUSHJ PDP,COMSET ;YES, WAKE UP COMMAND DECODER(IF IN MON. MODE)\r
- JRST UTYRET ;GO TYPE FIRST CHAR.\r
+ JRST UTYPET ;GO TYPE FIRST CHAR.\r
\f;ROUTINE TO ADD TTY TO TALK RING\r
;CALL: ADR. OF DDB TO BE ADDED TO RING AT -3(PDP)\r
; MOVE TAC,SIXBIT /TTYN/\r
LDB LINE,PUNIT ;LINE NUMBER IS RING.\r
MOVSI TAC,TLKRNG\r
LDB CHREC,PTALK\r
- TDDN TAC,LINTAB(LINE)\r
+ TDNN TAC,LINTAB(LINE)\r
HRRZ CHREC,LINE\r
IORM TAC,LINTAB(LINE)\r
EXCH DDB,-3(PDP) ;GET DDB OF TALKER\r
INTERNAL CTYINT\r
EXTERNAL SCNSAV,SCNCHN,TCONLN\r
\r
-CTYINI: CONSO TTY,50 ;TTI OR TTO FLAG?\r
+CTYINT: CONSO TTY,50 ;TTI OR TTO FLAG?\r
JRST CTYINT ;NO\r
JSR SCNSAV ;YES, SAVE AC'S\r
MOVEI LINE,TCONLN ;LOAD LINE WITH PROPER\r
\r
RECINT:\r
INUS2: ;TAG FOR INTERRUPT SERVICE\r
-INJEXT: ;ANOTHER TAG, NOT USED, BUT WANTED BY LOSING DLSINT\r
+INJEST: ;ANOTHER TAG, NOT USED, BUT WANTED BY LOSING DLSINT\r
\r
TRNN CHREC,177 ;IGNORE NULLS\r
POPJ PDP,0 ;DISMISS INTERRUPT\r
MOVE TAC,TIPCTR(DDB) ;UPDATE COUNTER FOR ^U\r
DPB TAC,PLSTLC\r
TLZN IOS,TTYIOW ;IN TELETYPE INPUT WAIT?\r
- JRST TTYTST ;NO, GO ECHO\r
+ JRST TYPTST ;NO, GO ECHO\r
PUSHJ PDP,STTIOD ;YES, SET IO DONE(OUT OF TTY IOW)\r
MOVSI IOS,IOW+TTYIOW\r
ANDCAB IOS,DEVIOS(DDB) ;CLEAR WAIT BITS\r
POPJ PDP,\r
\fINTERNAL XMTINT,PTYGET\r
\r
-XMTINT: HLL LINE,LINETAB(LINE) ;GET LINE CHAR.\r
+XMTINT: HLL LINE,LINTAB(LINE) ;GET LIN CHAR.\r
HRRZ DDB,TTYTAB(LINE) ;GET DDB ADDRESS\r
JUMPE DDB,CPOPJ ;IF NONE, X BEING TYPED\r
MOVE IOS,DEVIOS(DDB) ;GET IO STATUS\r
SKIPL TTYPTR(DDB) ;WAS TYPE-OUT IN PROGRESS?\r
POPJ PDP, ;IGNORE XMT DURING ECHO CK\r
XMTIN1: MOVEI DAT,TTOBUF(DDB) ;SPECIFY TTO BUFFER\r
-XMTI1A CONO PI,PIOFF ;KEEP TOIP AND PUTR/TAKR EQUAL\r
+XMTI1A: CONO PI,PIOFF ;KEEP TOIP AND PUTR/TAKR EQUAL\r
HLRZ TAC,BUF(DAT) ;IS OUTPUT BUFFER EMPTY?\r
CAMLE TAC,FCTR(DAT) ;I.E. FREE COUNT AT MAX?\r
JRST XMTIN2 ;NO, TYPING STILL IN PROGRESS\r
\r
TRNE IOS,MERTPO ;MONITOR ERROR MESSAGE?\r
- CAIE DAT,TIOBUF(DDB) ;OUTPUT BUFFER?\r
+ CAIE DAT,TTOBUF(DDB) ;OUTPUT BUFFER?\r
JRST XMTIN4 ;NO, MUST REALLY BE DONE\r
MOVEI DAT,TTIBUF(DDB) ;YES. NOW EMPTY OUT TTI BUFFER\r
JRST XMTI1A\r
TTEDIT: PUSHJ PDP,ADJHP ;ADJUST HP AND CHECK SPECIAL\r
JRST TIPACK ;NOT SPECIAL\r
MOVSI IOS,0\r
- TLNE TAC,BBREAK+FCSBRK ;BREAK CHAR?\r
+ TLNE TAC,BREAKB+FCSBRK ;BREAK CHAR?\r
TLO IOS,SYNC ;BREAK CHAR, SET SYNC\r
IORB IOS,DEVIOS(DDB) ;SET SYNC\r
JUMPL TAC,0(TAC) ;DISPATCH IF SPACTN SET\r
PUSHJ PDP,BSECHO ;YES. OUTPUT A BACKSLASH\r
TTIPT1: PUSHJ PDP,PUTCHI ;PUT CHAR IN INPUT BUFFER\r
JRST INBFUL ;IT DIDNT FIT\r
- LTNN TAC,ECHSUP ;SHOULD THIS CHAR BE ECHOED?\r
-DUPLEX: TLNE LINE,FULTWX,HLFDPX ;IS THIS LINE ECHOING ITSELF?\r
+ TLNN TAC,ECHSUP ;SHOULD THIS CHAR BE ECHOED?\r
+DUPLEX: TLNE LINE,FULTWX+HLFDPX ;IS THIS LINE ECHOING ITSELF?\r
POPJ PDP,0 ;JUST RETURN WITHOUT ECHO\r
DUPLX1: PUSH PDP,TAC ;SAVE TAC OVER PUTCHO\r
TLNN IOS,TPMON ;SHOULD ECHO IF IN MONITOR MODE\r
PUSHJ PDP,PUTCHO ;SO ECHO IT.\r
JRST TPOPJ ;RESTORE TAC AND RETURN\r
\r
-INTERNAL INBFUB ;FOR THE PTY\r
+INTERNAL INBFUL ;FOR THE PTY\r
\r
INBFUL: MOVSI IOS,SYNC ;DONT COUNT SYNC COUNT\r
ANDCAB IOS,DEVIOS(DDB) ; SINCE CHAR NOT STORED\r
CONTI: TLNN LINE,T35\r
TLO TAC,ECHSUP ;DONT OUTPUT TAB TO 33\r
PUSHJ PDP,TTIPUT ;PUT IN BUFFER AND MAYBE ECHO\r
- TLEN LINE,XON+DISLIN ;IF PAPER TAPE,DISMISS\r
+ TLNE LINE,XON+DISLIN ;IF PAPER TAPE,DISMISS\r
POPJ PDP,0 ; SO AS NOT TO OVERFILL OUTBUF\r
;ALSO, DISPLAY DOESNT WANT FILLER\r
HRRI TAC,1 ;TWO IDLES\r
TLNE LINE,CTYLIN ;IS THIS CONSOLE TTY?\r
MOVEM TAC,DEVNAM(DEVDAT);YES, SET NAME TO CTY.\r
TLNE LINE,PTYLIN ;IS THIS A PTY?\r
- PUSHJ PDP,PTMNND ;YES. SET IT INTO MONITOR MODE\r
+ PUSHJ PDP,PTMNMD ;YES. SET IT INTO MONITOR MODE\r
JRST CPOPJ1 ;SUCCESSFUL RETURN.\r
\fSCNEND: END\r
\f\r
--- /dev/null
+TITLE TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032\r
+ IFNDEF REL,<REL=0> ;0 PAPER TAPE, 1 RELOCATABLE BINARY\r
+ IFNDEF MAGT,<MAGT=0> ;0 DTAPE, 1 MTAPE\r
+ IFN MAGT,<\r
+; MAGTAPE UTILITY ROUTINE - COURTSEY DATALINE SYSTEMS J HANCOCK\r
+ >\r
+ IFNDEF MODE,<MODE=0> ;0 IS TD10, 1 IS 551/136\r
+ IFNDEF CORE,<CORE=4> ;NUMBER OF 8K MEMORY BLOCKS\r
+\r
+ IFE MODE,<SUBTTL TD10 VERSION>\r
+ IFN MODE,<SUBTTL 551/136 VERSION>\r
+\r
+IFE REL,<\r
+IFE MAGT,<RIM10B>\r
+IFN MAGT,<RIM10>>\r
+ UTC=210\r
+ UTS=214\r
+ DC=200\r
+ DTC=320\r
+ DTS=324\r
+\r
+F=0 ;MUST BE 0. USED BY JRA'S\r
+A=2 ;MISC TEMP. HOLDS 136 CONO INDEX IN UWAIT\r
+B=1 ;TEMP. HOLDS BLOCK # COMPUTATION IN SEARCH\r
+C=3 ;HOLDS BITS FOR DECTAPE CONO DURING I/O\r
+D=4 ;HOLDS POINTERS FOR AOBJN'S THROUGH CORE\r
+E=5 ;HOLDS COUNT OF WORDS IN CURRENT DT BLOCK\r
+P=6 ;PC FOR JSP'S\r
+CKS=7 ;HAD BEEN CHECKSUM IN MACDMP\r
+FILN=10 ;NUMBER OF FILE IN DIRECTORY, 1 TO 26 OCTAL\r
+BLKNO=11 ;BLOCK NUMBER SEARCHED FOR ON TAPE\r
+WRITE=12 ;MULTI-STATE FLAG FOR DEFINING I/O OPERATION\r
+ ;1=D 0=K -1=ELSE\r
+PNTR=13 ;POINTER TO BYTE TABLE IN DIRECTORY\r
+CH=14 ;HOLDS 6BIT CHARACTER OF COMMAND, OR -1\r
+Q=15 ;ANOTHER JSP AC\r
+G=16 ;RARELY USED VERY TEMP\r
+CT=17 ;COUNT OF WORDS TO DUMP\r
+\r
+COMPTR=BEGR+377 ;COMMAND POINTER, IF SUPPLIED\r
+ LOZAD=BEGR-203 ;WHEN CORE IS CLEARED, IT\r
+ ;IS FROM 40 THRU LOZAD\r
+ LOW=20 ;FIRST LOCATION CONSIDERED FOR DUMPING\r
+ HIGH=BEGR-203 ;LAST LOCATION CONSIDERED FOR DUMPING\r
+ ;ZEROED AT BEG THESE DAYS\r
+ FOOF=BEGR-202 ;NEEDED FOR ZERO CORE SEARCH, ZEROED AT BEG1\r
+TAB=BEGR-201 ;FILE DIRECTORY\r
+LINK=BEGR-1 ;0-17=LINK, 18-27=FBN, 29-35=WC\r
+IFE REL,<IFE MAGT,<LOC 17400+<<CORE-1>*20000>>\r
+ IFN MAGT,<LOC 17377+<<CORE-1>*20000>\r
+ IOWD LAST-BEGR+1,BEGR>>\r
+\f;INITIAL ENTRY IS AT BEGR, UNLESS A COMMAND POINTER IS\r
+;SUPPLIED IN COMPTR. IN THAT CASE, ENTRY IS AT BEGR+1\r
+\r
+BEGR: SETZM COMPTR ;CLEAR ANY JUNK IN COMMAND POINTER\r
+ CONO 635550 ;I/O RESET, ETC.\r
+BEG: JSP P,CRR ;TYPE A CR-LF\r
+ MOVEI D,SPNT-2 ;PREPARE TO REMOVE AOBJN POINTERS\r
+BEG1: SETZB A,FOOF ;CLEAR A TO PUT IN CORE, CLEAR\r
+ ;FOOF FOR THE NEXT ZERO CORE SEARCH\r
+ EXCH A,2(D) ;REMOVE HEADER LIST\r
+ AOBJN A,. ;COUNT THROUGH TO NEXT HEADER\r
+ MOVEI D,-1(A) ;ACCOUNT FOR OVERSHOOT IN AOBJN\r
+ JUMPN D,BEG1 ;IF WE DIDNT AOBJN A 0, GO FOR NEXT HDR\r
+ MOVE PNTR,[XWD 500,TAB-1] ;5 BIT BYTES IN DIRECTORY\r
+ SETZB CH,F\r
+CRCH: SETOI WRITE,215 ;USED FOR CARRET TYPEOUT\r
+TYI: SETZB C,HIGH ;HOPEFULLY HIGH IS TEMPORARY\r
+ SETZB B,E ;NAME INITIALIZING\r
+ TLOA B,400000 ;NULL NAME IS "@. "\r
+SPACE: MOVEI E,C-1 ;EXTENSION INTO C\r
+ HRLI E,20600 ;FAKE OUT END TEST OF BYTE PTR\r
+;STOP TAPE DRIVE\r
+IFN MODE,<CONO UTC,0>\r
+IFE MODE,<CONO DTC,400000>\r
+NEXT: ILDB A,@BEGR ;GIVES A 0 UNLESS COMMAND POINTER SUPPLIED\r
+ ;RH OF NEXT IS USED AS A CONSTANT\r
+BELL: SETOI FILN,207 ;INITIALIZATION FOR SEARCH\r
+ SETZB BLKNO,CT ; "\r
+ SETZM LINK\r
+ JUMPN A,RCH ;JUMP IF COMMAND READ FROM CORE\r
+ CONSO TTY,40 ;TYPEIN FLAG?\r
+ JRST .-1 ;NO,WAIT\r
+ DATAI TTY,A ;GET TYPED IN CHARACTER\r
+ JSP P,TYO ;ECHO IT (WITH PARITY)\r
+RCH: ANDI A,177 ;STRIP OFF PARITY\r
+ CAIN A,177 ;RUBOUT?\r
+ JRST BEGR ;YES. RESTART TENDMP\r
+ CAIE A,33 ;NEW ALTMODE?\r
+ CAIL A,175 ;OR 175 OR 176 ALTMODES?\r
+ JRST ALTTST ;YES, SOME ALTMODE.\r
+ CAIL A,140 ;LOWER CASE CHARACTER?\r
+ TRZ A,40 ;YES. CHANGE TO UPPER CASE\r
+ SUBI A,40 ;CONVERT TO SIXBIT\r
+ JUMPL A,CARRET ;ANY CONTROL CHARACTER\r
+ JUMPE A,SPACE ;CHAR WAS 40\r
+NEXT1: TLNE E,770000 ;NO MORE THAN SIX CHARS\r
+ IDPB A,E ;GOES INTO AC1 = B\r
+ JRST NEXT ;GET ANOTHER CHARACTER\r
+\r
+\f\r
+;HERE ON JUMP BLOCK DURING LOADS, OR NUMBER>7 ALT\r
+JBLK:\r
+;STOP TAPE DRIVE\r
+IFN MODE,<CONO UTC,0>\r
+IFE MODE,<CONO DTC,400000>\r
+ HRRM D,SADR ;SAVE STARTING ADDRESS\r
+ JUMPN CH,BEG ;IF NOT LOADGO COMMAND\r
+SADR: JRST BEG ;CURRENT S.A.\r
+LOADS: ;HERE TO LOAD TAPE TO CORE\r
+ MOVEI D,LOZAD+1 ;FIRST LOC NOT TO ZERO\r
+ SETZM 40 ;A "FEATURE"\r
+ MOVE C,[XWD 40,41] ;PREPARE TO CLEAR CORE.\r
+ TRNN CH,3 ;SKIP ON M,N NOT ON L,T,@\r
+ BLT C,-1(D) ;ZERO CORE\r
+LOAD: JSP Q,LODUMP ;START READING FILE. LODUMP PROCESSES\r
+ ;ONE HEADER AND ITS DATA\r
+ JRST LOAD ;IF OK, GET NEXT BLOCK.(IF NONE, \r
+ ;LODUMP RETURNS TO JBLK.)\r
+DELE: SKIPN E,WRITE ;SKIP IF NOT IN THE K PHASE OF A D COMMAND.\r
+ ;OR A K COMMAND\r
+ ;ALSO, SET E =0, SO SEARCH HAPPENS IN RBLK\r
+CLS1: AOJA WRITE,CLSTP ; 0 TO 1. GO DUMP OUT DIRECTORY.\r
+ERR: SKIPA P,NEXT ;SET TO RETURN TO BEGR\r
+CRR: SKIPA A,CRCH ;LIKE HRROI A,215 AND SKIPA\r
+ SKIPA A,BELL ;GET A BELL CHARACTER\r
+TYO: SKIPN COMPTR ;DONT TYO IF NO TYI, UNLESS ERR\r
+ DATAO TTY,A ;TYPE OUT\r
+ CONSZ TTY,20 ;WAIT FOR TTY TO FINISH\r
+ JRST .-1 ;NOT YET\r
+ CAIE A,215 ;IF CR TYPED IN,\r
+ JUMPGE A,(P) ;OR SIGN BIT OF CHAR ON,(SEE CRR)\r
+ MOVEI A,12 ;APPEND A LINEFEED\r
+ JRST TYO ;GO TYPE LF\r
+\r
+\fALTTST: TLNN B,4040 ;IF ALPHA CHARACTERS, DONT GET CH\r
+ LDB CH,E ;LAST CH BEFORE ALT, -40\r
+ JUMPN CH,ALTMD ;IF CH NOT NULL, GOT PROCESS ALTMODE\r
+CARRET: MOVSI FILN,-26 ;FILE NAME SPECIFIED. FIRST THING TO\r
+ ;DO IS LOOK IT UP IN DIRECTORY\r
+LUP: SKIPN TAB+123(FILN) ;SEARCH FOR FREE FILE\r
+ SKIPE BLKNO,TAB+151(FILN) ;CHECK BOTH WORDS\r
+ TDZA BLKNO,BLKNO ;ENSURE CLEAR BLOCK NUMBER\r
+ HRRM FILN,FREE ;SAVE NUMBER OF A FREE FILE\r
+ HLLZ G,TAB+151(FILN) ;ONLY CHECK LEFT OF 2ND WD\r
+ CAMN B,TAB+123(FILN) ;SEARCH FOR TYPED-IN FILE\r
+ CAME C,G ;BOTH WORDS\r
+ AOBJN FILN,LUP ;NOT THIS ONE. KEEP LOOKING\r
+ JUMPL FILN,BEG69 ;IF FILE FOUND, JUMP\r
+ JUMPLE WRITE,ERR ;IF NOT FOUND, BETTER BE DUMP\r
+FREE: MOVEI FILN,. ;DUMP & NOT FOUND, MAKE ENTRY WHERE FREE\r
+ ;(ADDRESS MODIFIED ABOVE)\r
+ SKIPE TAB+123(FILN) ;MAKE SURE HOLE AVAILABLE\r
+ JRST ERR ;NO FREE SLOTS\r
+\r
+BEG69: MOVEI FILN,1(FILN) ;FILN IS FILE #+1; CLR LH\r
+ JUMPL WRITE,LOADS ;ALL LOAD INSTRUCTIONS\r
+IFE MAGT,<\r
+ SKIPN WRITE ;DELETE? (K COMMAND)\r
+ SETZB B,C ;YES, KILL FILE\r
+ MOVEM B,TAB+122(FILN) ;CLEAR IF DELE, ENTER IF NEW DUMP\r
+ HLLZM C,TAB+150(FILN) ;BOTH WORDS\r
+ ;FALL INTO DUMP ROUTINE\r
+ ;WHICH IS A NO-OP FOR K\r
+\r
+\f\r
+;DUMP WRITES OUT CORE ONTO TAPE\r
+\r
+;DUMP THRU DUMP2-1 SETS UP POINTERS TO NON-ZERO CORE AREAS. THESE\r
+;AOBJN POINTERS ARE CALLED "HEADERS", AND PRECEDE THE DATA WHEN\r
+;THE TAPE IS WRITTEN.\r
+;THE FIRST HEADER IS KEPT IN SPNT. SUCCESIVE HEADERS GO INTO THE FIRST\r
+;ZERO WORD FOLLOWING THE BLOCK CORRESPONDING TO THE PREVIOUS HEADER.\r
+;AFTER THE LAST NON-ZERO BLOCK IS (BY DEFINITION) A ZERO, WHICH\r
+;TERMINATES THE HEADER LIST. THIS WORD MAY BE LOCATION FOOF (37176) IF\r
+;CORE WAS FILLED UP TO THE BASE OF TENDMP.\r
+\r
+DUMP: ;HERE ON D,K. (BLKN)=0, FILN SET UP\r
+ MOVN A,[XWD HIGH-LOW-1,-LOW+1] ;COUNTER TO EXAMINE \r
+ ;CORE FOR BLOCKS OF 0\r
+ MOVEI CKS,SPNT-1 ;FIRST HEADER GOES INTO SPNT\r
+DMP1: SKIPN 1(A) ;FIND SOME NON-ZERO CORE\r
+ AOBJN A,.-1 ;ZERO. KEEP LOOKING.\r
+ MOVEM A,D ;SAVE ADR\r
+ SKIPN 1(A) ;FIND SOME ZERO CORE\r
+ SKIPE 2(A) ;DON'T MAKE NEW BLOCK FOR 1 ZERO\r
+ AOBJN A,.-2 ;NON-ZERO. KEEP LOOKING\r
+ SUB D,A ;GET -COUNT IN BOTH HALVES OF D\r
+ SUBI CT,-1(D) ;COUNT N WORDS DATA, 1 HDR\r
+ ADDI D,(A) ;GET F.A.-1 IN RH OF D\r
+ MOVEM D,1(CKS) ;SAVE HEADER\r
+ JUMPGE D,.+2 ;ON DATA GROUPS,\r
+ MOVE CKS,A ;GET THE HEADER\r
+ ;F.A.+W.C. IS ADR OF NEXT HEADER\r
+ ;I.E., FIRST 0 AFTER NON-ZERO BLOCK\r
+ JUMPL A,DMP1 ;LOOP IF MORE CORE\r
+ LSH CKS,2 ;SHIFT CORE SIZ FOR DIR\r
+ SKIPLE WRITE ;IF DUMPING, SET JOBREL\r
+ HRRM CKS,TAB+150(FILN) ;PUT IN DIR\r
+DMP2: MOVEI D,SPNT-1 ;SET UP TO FOLLOW THE HEADERS.\r
+ MOVEI CT,1(CT) ;CLR LH, COUNT JBLK\r
+DMP3: MOVE D,1(D) ;GET HEADER\r
+ JUMPGE D,THRU ;IF NULL HEADER FOUND\r
+ MOVEI Q,DMP3 ;Q:= DMP3 AS A RETURN AFTER AOBJN\r
+ >\r
+\r
+IFN MAGT,<\r
+ JRST ERR ;HOW DID WE GET HERE? DLS***\r
+;DUMP WRITES OUT CORE ONTO MAGNETIC TAPE\r
+;DUMP WRITES OUT A CORE IMAGE ON MAGNETIC TAPE WITHOUT\r
+;ZERO COMPRESSION. THE RECORDS ARE 200(OCTAL) WORDS IN LENGTH\r
+;AND BEGIN WITH WORD ZERO. BEFORE STARTING THE TAPE IS REWOUND.\r
+;IT ASSUMES MTA0, AT LEAST FOR NOW.\r
+ \r
+ MTC= 340\r
+ MTS= 344\r
+DUMP: CONO MTC,1000 ;REWIND\r
+ CONSO MTS,300000 ;WAIT FOR BOT OR REWINDING\r
+ JRST .-1\r
+ CONSO MTS,40 ;TRANSPORT READY?\r
+ JRST .-1\r
+ SETZ A,\r
+DUMP1: HRLI A,-200 ;WORDS PER BLOCK\r
+ CONO MTC,64100 ;START WRITE OPERATION\r
+DUMP2: CONSO MTS,1 ;TD10 READY FOR DATA?\r
+ JRST .-1\r
+ DATAO MTC,(A) ;SEND OUT DATA\r
+ AOBJN A,DUMP2 ;POINT TO NEXT WORD AND LOOP\r
+ CONO MTS,1 ;STOP THE DRIVE\r
+ CONSO MTS,100 ;WAIT TILL STOPPED\r
+ JRST .-1\r
+ CONSZ MTS,464610 ;ANY ERRORS?\r
+ JRST ERR ;YES, GO RING BELL\r
+ AOSE [-CORE*20000/200+2] ;ALL CORE DUMPED?\r
+ JRST DUMP1 ;NO\r
+ CONO MTC,65100 ;WRITE END OF FILE\r
+ CONSO MTS,100 ;DONE?\r
+ JRST .-1\r
+ CONO MTC,65100\r
+ CONSO MTS,100\r
+ JRST .-1\r
+ JRST BEGR ;ALL DONE\r
+ >\r
+\r
+\r
+LODUMP: JSP P,UWAIT\r
+ JFCL D ;IN/OUTPUT HEADER\r
+ JUMPGE D,JBLK ;IF JRST BLOCK READ. CANT HAPPEN ON WRITE\r
+DMP5: JSP P,UWAIT\r
+ JFCL 1(D) ;IN/OUTPUT DATA WORD\r
+ AOBJN D,DMP5 ;COUNT DOWN THE HEADER\r
+ JRST (Q) ;END OF HEADER. TO DMP3 OR LOAD+1\r
+;WRITE: 1=D 0=K -1=ELSE\r
+\r
+THRU: JSP P,UWAIT ;WRITE OUT JRST BLOCK\r
+ JFCL SADR ;FROM LOC SADR\r
+IFE MODE,< AOJL E,UWAIT1 ;FILL OUT BLOCK, TO GET CKSM OUT>\r
+ TRZA WRITE,-1 ;THEN SET WRITE TO 0, AND GO CLOBBER\r
+ ;ANY FURTHER BLOCKS WITH THIS FILN\r
+UWAIT: AOJL E,UWAIT1 ;RETURN ADDR = (P) DATA ADDR = @(P)\r
+ ;E IS -WD COUNT IN BLOCK OR POSITIVE\r
+ ;BYTE POINTER FIRST TIME THRU\r
+ HLRZ BLKNO,LINK ;SET TO FOLLOW LINK\r
+MNLUP0: JUMPGE WRITE,MNLUP ;WRITING OR DELETING\r
+ JUMPN BLKNO,RBLK\r
+MNLUP: AOSA BLKNO ;NEXT BLOCK IN THE DIRECTORY\r
+MNLUP1: DPB B,PNTR ;FOR DELETE, 0 FILE NAME AND NUMBER\r
+ ILDB A,PNTR ;SEARCH FILE DIR\r
+ CAIN A,37\r
+ JRST DELE ;END OF TAB MARKER, DELE GOES TO\r
+ ;CLSTP ON A "D" TO DUMP DIRECTORY\r
+ TLO A,-1(WRITE) ;0 ON D, -1 ON K OR K PHASE OF D\r
+ CAIE FILN,(A) ;IS THIS BLOCK ASSIGNED TO CURRENT FILE?\r
+ JUMPN A,MNLUP ;OR MAYBE FREE? JUMP IF IN USE BY\r
+ ;ANOTHER FILE.\r
+ DPB FILN,PNTR ;SMASH AWAY WRITE BLOCK ON D OR K. BUT\r
+ ;SEE MNLUP1 ON K.\r
+ JUMPE WRITE,MNLUP1 ;K COMMAND\r
+ SKIPN C,LINK ;HAS LINK BEEN SET UP?\r
+ DPB BLKNO,[XWD 101200,LINK] ;NO. PUT BLOCK IN AS FIRST BLK NO\r
+ HRLM BLKNO,LINK ;PUT BLOCK IN AS LINK\r
+ JUMPE C,MNLUP0 ;JUMP IF THIS IS THE FIRST PASS THRU DIRECTORY\r
+ HLRZ BLKNO,C ;GET LINKED BLOCK CHOSEN BEFORE\r
+ MOVEI C,177 ;PUT IN A WORD COUNT FOR PIP\r
+ IORM C,LINK ;AND PUT ALL THAT INTO LINK WORD\r
+ SUBI CT,177 ;DECREMENT WORDS LEFT TO GO\r
+\r
+\f\r
+;RBLK SEARCHES FOR THE BLOCK IN BLKNO, ENTERS IT GOING FORWARD,\r
+;AND THEN READS INTO CORE, DUMPS CORE, OR COMPARES CORE AS\r
+;DETERMINED BY CONTENTS OF WRITE.\r
+\r
+RBLK: HRRO C,TAPENO ;CURRENT TAPE NO.\r
+ ;SET LH TO PREPARE FOR JUMPN IN DELE\r
+IFE MODE,<\r
+ TRO B,-1 ;ENSURE GOING FORWARD WHEN FIRST SEARCH\r
+ CONSO DTC,300000 ;IS A DIRECTION ASSERTED?\r
+ TRO C,210000 ;NO. GO FORWARD\r
+RB1: TRNN B,400001 ;DECIDE WHETHER TO TURN AROUND\r
+ TRO C,300000 ;TURN AROUND\r
+RBG: CONO DTC,20200(C) ;ISSUE THE COMMAND TO TD10.\r
+ ;200=SEARCH, 300=READ, 700=WRITE.\r
+UWAIT1: CONSZ DTS,672700 ;ANY ERRORS?\r
+ JRST ERR ;YES. GO DING AND THEN TYI\r
+ CONSO DTS,1 ;DATA READY?\r
+ JRST .-3 ;NO. GO WAIT SOME MORE\r
+ JUMPL E,INOUT(WRITE) ;IF IN MIDST OF A DT BLOCK, DISPATCH\r
+ DATAI DTC,B ;NO. SEARCHING. GET BLOCK NO.\r
+ TRZ C,310000 ;CLOBBER DIRECTION BITS IN CONO\r
+ SUBI B,(BLKNO) ;COMPARE WITH DESIRED BLOCK\r
+ CONSZ DTC,100000 ;COMPLEMENT DECISION IF GOING REVERSE\r
+ TRC B,-2 ;BIT 35 IS FOR TURNAROUND SPACE.\r
+>\r
+\f\r
+IFN MODE,<\r
+ SETOB A,B ;GO FORWARD, SET DC FOR SEARCH\r
+ CONSZ UTS,40 ;IS CHECKSUM BEING WRITTEN?\r
+ JRST .-1 ;WAIT\r
+RB1: TRNN B,400001 ;DECIDE WHETHER TO TURN AROUND\r
+ TRCA C,10000 ;CHANGE DIRECTION AND DELAY\r
+ CONSO UTC,200000 ;UNIT SELECTED?\r
+ TRO C,2000 ;INVOKE STARTUP DELAY\r
+RBG: CONO UTC,220200(C) ;COMMAND TO THE 551.\r
+ ;200=SEARCH, 300=READ, 700=WRITE.\r
+ CONO DC,4011(A) ;COMMAND TO THE 136.\r
+UWAIT1: CONSZ UTS,6 ;ANY ERRORS?\r
+ JRST ERR ;YES. GO DING AND THEN TYI\r
+ CONSO DC,1000 ;DATA READY?\r
+ JRST .-3 ;NO. WAIT SOME MORE\r
+ JUMPL E,INOUT(WRITE) ;IF IN MIDST OF A DT BLOCK, DISPATCH\r
+ DATAI DC,B ;NO. SEARCHING. GET BLOCK NUMBER\r
+ TRZ C,2000 ;DONT DELAY ANY MORE\r
+ SUBI B,(BLKNO) ;COMPARE WITH DESIRED BLOCK\r
+ TRNE C,10000 ;COMPLEMENT IF GOING REVERSE\r
+ TRC B,-2 ;BIT 35 IS FOR TURNAROUND SPACE.\r
+>\r
+ JUMPN B,RB1 ;JUMP IF NOT GOING FORWARD INTO (BLKNO)\r
+ MOVNI E,200 ;WORDS PER BLOCK\r
+ MOVEM P,F ;SAVE RETURN IN AC0\r
+ TRO C,100 ;READ COMMAND, MAYBE\r
+ JUMPLE WRITE,RB2 ;JUMP IF READ\r
+ TRO C,400 ;CHANGE TO WRITE COMMAND\r
+IFN MODE,<MOVNI A,401 ;SET 136 TO OUTPUT>\r
+ JUMPG CT,.+3\r
+ HRRZS LINK ;IF LAST BLK, KILL LINK\r
+ DPB E,PNTR ;AND THE DIR BYTE _ 0\r
+RB2: CAIE BLKNO,^D100 ;IF NOT DIRECTORY BLOCK\r
+ MOVEI P,.+2 ;SETUP NEW RETURN\r
+ JRST RBG\r
+ AOJ E,LINK ;IN/OUTPUT LINK\r
+ JRA P,UWAIT1 ;RESTORE CALLER ADR\r
+ ;AND PROCESS DATA WORDS\r
+\f\r
+IFE MODE,<\r
+ DATAI DTC,@(P) ;READ COMMANDS. GET WORD TO CORE\r
+INOUT: JRST UWAIT2 ;INOUT-1 TO INOUT +1 ARE DISPATCHED TO.\r
+ DATAO DTC,@(P) ;OUTPUT TO TAPE\r
+UWAIT2: AOJN E,UWAIT3 ;WAS THAT THE LAST WORD IN THE DT BLOCK?\r
+ CONO DTS,1 ;YES. GIVE FUNCTION STOP TO TD10\r
+ CONSO DTS,100000 ;AND WAIT FOR CHECKSUM TO BE DONE\r
+ JRST .-1 ;NOT YET. WAIT\r
+UWAIT3: SOJA E,0(P) ;DONE. COMPENSATE FOR THE AOJN ABOVE, AND\r
+ ;RETURN TO CALLER OF UWAIT OR RBLK\r
+>\r
+\r
+IFN MODE,<\r
+ DATAI DC,@(P) ;READ COMMANDS. GET WORD TO CORE\r
+INOUT: JRST UWAIT2 ;INOUT-1 THRU INOUT+1 ARE DISPATCHED TO.\r
+ DATAO DC,@(P) ;OUTPUT TO TAPE\r
+UWAIT2: JRST 0(P) ;RETURN TO CALLER OF UWAIT OR RBLK.\r
+>\r
+\f\r
+ALTMD: MOVEI A,"$"\r
+ JSP P,TYO ;ALTMODE IS PRINTED AS "$"\r
+\r
+IFE MAGT,<\r
+ CAIE CH,"K"-40 ;FOR K, WRITE := 0\r
+ CAIN CH,"D"-40 ;FOR D, WRITE :=1\r
+ AOJLE WRITE,.-1 ;COUNT (WRITE)\r
+ >\r
+\r
+IFN MAGT,<\r
+ CAIN CH,"D"-40 ;FOR D, WRITE :=1\r
+ AOJLE WRITE,.-1 ;COUNT (WRITE)\r
+ JUMPG WRITE,DUMP ;D MEANS GO DUMP ON MAG TAPE\r
+ >\r
+\r
+ CAIN CH,"G"-40 ;GO TO PROGRAM?\r
+ JRST @SADR ;YES. JUMP OUT\r
+ CAIN CH,"F"-40 ;FILE DIR PRINT?\r
+ JRST FDIR ;YES. PRINT FILE DIR OF THIS TAPE\r
+ CAIN CH,"Z"-40 ;ZERO DIRECTORY?\r
+ JRST ZDIR ;DISPATCH\r
+ CAILE CH,27 ;SKIP IF OCTAL NUMBER\r
+ JRST TYI ;NO. GO PROCESS FILE NAME\r
+ LSH B,3 ;CONVERT SIXBIT TO OCTAL\r
+ LSHC F,3 ;F+1=B\r
+ JUMPN B,.-2 ;MAY BE MORE THAN 1 DIGIT (START ADR)\r
+ CAILE F,7 ;SKIP IF ONE DIGIT\r
+ JRA D,JBLK ;D:=SADR. DISPATCH TO JBLK WHICH SAVES SADR.\r
+OPNTP: ;SHIFT UNIT NUMBER LEFT FOR CONO\r
+IFE MODE,<LSH F,11>\r
+IFN MODE,<LSH F,3>\r
+ HRRM F,TAPENO ;SAVE IN CORE\r
+CLSTP: MOVEI BLKNO,^D100 ;BLK NO OF FILE DIR\r
+ SETZI PNTR,0 ;DONT CLOBBER DIRECTORY BYTE\r
+ JSP P,RBLK ;MOVE TO BLOCK 100\r
+ JFCL TAB+200(E) ;READ OR WRITE DIR TAB AS DETERMINED BY WRITE\r
+ AOJL E,UWAIT1 ;COUNT THE 200 WORDS\r
+ JRST BEG ;GO ASK FOR NEXT COMMAND\r
+\r
+ZDIR: MOVE A,[XWD FOOF,TAB] ;FOOF IS CLEAR\r
+ BLT A,TAB+176 ;CLEAR DIRECTORY, EXCEPT LAST WORD FOR ID\r
+ MOVSI A,(36B4+36B9) ;RESERVE BLOCKS 1 & 2\r
+ MOVEM A,TAB ;IN DIRECTORY\r
+ MOVSI A,(36B9)\r
+ MOVEM A,TAB+16 ;BLK 100 (DIR) IS RESERVED TOO\r
+ HRLOI A,7 ;AND BLOCKS >1100 ARE EOT\r
+ MOVEM A,TAB+122 ;END OF BYTE TAB\r
+ AOJA WRITE,CLS1 ;SET WRITE TO OUTPUT\r
+ ;AND DUMP BLK 100.\r
+\fFDIR: MOVNI FILN,26 ;26 FILES (OCTAL)\r
+FD2: JSP P,CRR ;CR-LF\r
+FD3: SKIPN C,TAB+123+26(FILN) ;FIRST WORD OF NAME. IS IT BLANK?\r
+ AOJA C,FD1 ;YES. SET C=1 AND LOOP\r
+ JSP G,SIXBP ;PRINT FIRST WORD AND A SPACE\r
+ HLLZ C,TAB+151+26(FILN) ;SECOND WORD OF FILE NAME\r
+ JSP G,SIXBP ;PRINT AND CLEAR C\r
+FD1: AOJL FILN,FD2(C) ;CAN JUMP TO FD2 OR FD3. COUNT FILES.\r
+ JRST BEG ;ALL FILES PRINTED OR BLANK. RETURN.\r
+\r
+SIXBP: MOVEI B,7 ;SIXBP PRINTS C(C) IN 6BIT\r
+ ;AND ADDS A TRAILING SPACE\r
+ ;AND LEAVES (C)=0\r
+\r
+TAPENO: ;USE ADR AS TEMP FOR CURRENT UNIT\r
+SIXBP1: SETZI A,.-. ;CLEAR A\r
+ LSHC A,6\r
+ ADDI A,40 ;SIXBIT TO ASCII\r
+ JSP P,TYO ;TYPE OUT CHARACTER\r
+ SOJG B,SIXBP1 ;LOOP IF MORE CHARACTERS\r
+ JRST 0(G) ;RETURN\r
+\r
+SPNT: 0 ;POINTER TO HEADERS IN CORE.\r
+\r
+ LIT\r
+\r
+\r
+IFN MAGT,<\r
+SLOP: MOVE .+3\r
+ MOVEM COMPTR\r
+ JRST BEGR+1\r
+ XWD 440700,.+1\r
+ BYTE (7) "0",33,177\r
+LAST: JRST SLOP\r
+ >\r
+IFE MAGT,<\r
+ SLOP=COMPTR-17-. ;THIS MANY WORDS BEFORE RESERVED AREA\r
+ ;FOR COMMAND STRINGS.\r
+;!!!!! NOTE: ABOVE PARAMETER MUST COME OUT POSITIVE IN\r
+; ORDER TO MEET THE DOCUMENTATION OF RESERVED COMMAND STRING AREA.\r
+;\r
+; THIS MEANS ANY CODE ADDED MUST BE COMPENSATED FOR BY\r
+; A CORRESPONDING TIGHTENING SOMEWHERE. GOOD LUCK.\r
+; TENDMP IS VERY TIGHT ALREADY.\r
+ >\r
+\r
+ END BEGR\r
+\f
\ No newline at end of file