X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/cda2ba6d27526e5ef6f27f7b3391cfb55055bf2e..8975ed2f727e4bb0190f22b1401821e5981cf7c2:/src/onceb.mac diff --git a/src/onceb.mac b/src/onceb.mac index 9fa9d75..ff9c5bf 100644 --- a/src/onceb.mac +++ b/src/onceb.mac @@ -24,9 +24,12 @@ INTERNAL FTRC10 ;THIS SINGLE SOURCE FILE MAY BE ASSEMBLED FOR EITHER ; 2. USUAL SHROT ONCE ONLY CODE(ONCE) - CTY FOR DATE AND TIME ; 3. OPTIONAL ONCE ONLY CODE - CTY DIALOG TO CHANGE MONITOR ; OR REFRESH DISK(ALT-MODE INSTEAD OF CR AFTER TIME) + + ;INITIALIZE PRIORITY CHANNELS AND SETUP INTERRUPT SERVICE ROUTINE CHAIN + T=TAC ;DEFINE ACCUMULATOR T ;LINK TO SERVICE ROUTINES @@ -38,12 +41,10 @@ LINKSR: 0 ;CALLED WITH JSR FROM SYSINI MOVSI T,JOBPFI ;SET LH OF XJBPFI WITH JOBPFI MOVEM T,XJBPFI ;LOADER DORES NOT HANDLE GLOBALS IN LH IFN FT2REL,< - JSP TSTREG ;GO TEST IF TWO RELOC REGISTERS EXIST + JSR TSTREG ;GO TEST IF TWO RELOC REGISTERS EXIST > - ;HIGHEST LOC. IN JOB AREA PROTECTED FROM IO - -;MOVE SYMBOL TABLE UP IN MEMORY + ;MOVE SYMBOL TABLE UP IN MEMORY ;EXEC MUST BE LOADED IN 15K OR LESS IF GOING INTO 16K MACHINE ;FIRST FIND THE FIRST LOCATION OF NON-EXISTENT MEMORY @@ -57,6 +58,7 @@ IFN FT2REL,< CONSO APR,NXM ;NON-EXISTENT? SOJG TAC, .-3 ;NO,KEEP LOOKING AS LONG AS NOT TOP OF MEMORY SUBI DAT,700 ;MAKE ROOM FOR TENDUMP AT TOP OF CORE + JSR MOVSTP ;MOVE DDT SYMBOL TABLE POINTER TO LOWER CORE ; (DDTSYM=36) WHERE EXEC DDT EXPECTS IT. ; IF NOT ALREADY MOVED THERE. RETURN POINTER IN UUO HLRE TAC1,UUO ;-LENGTH OF S. T. @@ -70,15 +72,14 @@ IFN FT2REL,< HRL TAC,TAC1 ;XWD LENGTH,LENGTH+FIRST ADDRESS SUBI DAT,1(TAC) ;NEW LAST+1-OLD LAST+1 HRRM DAT,STO1 ;DIST, TO MOVE - MOVE TAC1,UUO ;L-N,FIRST ADD. + MOVE TAC1,UUO ;-N,FIRST ADD. ADDI TAC1,1(DAT) ;FROM NEW S.T. POINTER MOVEM TAC1,DDTSYM ;STORE IN LOWER CORE MOVE TAC1,-1(TAC) STO1: MOVEM TAC1,.(TAC) SUB TAC,[XWD 1,1] JUMPGE TAC,.-3 - - EXTERN DEVLST,INTNUM,INTTAB + EXTERN DEVLST,INTNUM,INTTAB ;SETUP LOCATIONS 40 THRU 61 JRSTI1: MOVE TAC,[XWD LOC40,40] ;SET UP LOWER CORE PI LOCATIONS @@ -93,17 +94,16 @@ INTLOP: HLRZ DAT,INTTAB(TAC) ;GET NEXT PI NUMBER ANDI DAT,7 ;MASIC OUT NUMBER OF DDB'S LSH DAT,1 ;SHIFT LEFT ONE SO MATCH PI LOCATIONS JUMPE DAT,NOPICH ;DOES THIS DEVICE HAVE A PI CHANNEL (PTY)? - MOVE DAT,ITEM ;YES, PICK UP JSR CH'N FROM LOWER CORE + MOVE ITEM,40(DAT) ;YES, PICK UP JSR CH'N FROM LOWER CORE INTLP1: MOVE DAT,ITEM ;SAVE IT IN DAT (EITHER A JRST DEV'NT OR ; JEN @CH'N MOVE ITEM,1(DAT) ;PICK UP INSTR. FOLLOWING INTERRUPT CONSO - - TLNN ITEM,00740 ;IS IT A JEN? + TLNN ITEM,000740 ;IS IT A JEN? JRST INTLP1 ;NO, KEEP LOOKING MOVE TAC1,INTTAB(TAC) ;YES, LAST DEVICE SO FAR, GET DEV'NT HRLI TAC1,(JRST) ;MAKE JRST INSTR. MOVEM TAC1,1(DAT) ;CHANGE JEN @CH'N TO JRST DEV'NT - MOVEM ITEM,1(TAC) ;MAKE DEV'NT+1 BE JEN @CH'N + MOVEM ITEM,1(TAC1) ;MAKE DEV'NT+1 BE JEN @CH'N NOPICH: AOBJN TAC,.+1 ;PICKUP EVERY OTHER WORD? AOBJN TAC,INTLOP ;ANY MOVE INTERRUPT SERVICE ROUTINES? ALRCHN: @@ -112,9 +112,8 @@ IFN FTDISK,< ;INITIALIZE DISK EXTERN NULPDL,DSKINI - MOVEI PDP,NULPDL - PUSHJ PDP,DSKINT ;INITIALIZE THE DISK + PUSHJ PDP,DSKINI ;INITIALIZE THE DISK ; AFTER SETTING UP CHANNEL LOC ; BUT BEFORE OVERWRITTING ONCE WITH DDB'S > @@ -126,9 +125,8 @@ IFN FTDISK,< ;MULTIPLE DEVICE DATA BLOCKS ARE CREATED ;AS SPECIFIED BY SYSSIZ AND MAY ERASE PART ;OF ONCE ONLY CODE -JRST1: JRST @LINKSR ;YES,RETURN - -EXTERN UUO0,ERROR,UUO2,LINKDR,DEVLST +JRSTI: JRST @LINKSR ;YES,RETURN + EXTERN UUO0,ERROR,UUO2,LINKDB,DEVLST EXTERN CH1,CH2,CH3,CH4,CH5,CH6,CH7 LOC40: 0 ;UUO PC @@ -151,8 +149,7 @@ UUOTRP: JSR UUO0 ;TO UUO HANDLER 0 ;LOC 60/61 TRAPPED TO FOR UNIMPLEMENTED OP CODES ON PDP-10 ;OP CODE 100 IS USED TO DISMISS USER MODE INTERRUPTS(SEE TRPSET UUO) JSR UUO2 ;GO SEE IF OP CODE 100 OR SOME OTHER ONE - -IFN FT2REL,< + IFN FT2REL,< ;SET LOC TWOREG TO -1 IF MACHINE HAS TWO RELOC REG,0 IF ONLY ONE RELOC REG EXTERN TWOREG,SEGN,SEGPTR,AND2RG,JOBN @@ -182,7 +179,7 @@ TSTAPR: 0 ;PLACE TO SIDE JSR PC CONO APR,ILM ;CLEAR APR FLAGS AGAIN MOVEI TAC,AND2RG ;=0 IF SOFTWARE CANNOT HANDLE 2 SEG(NULSEG LOADED) ANDM TAC,TWOREG ;=-1 IF IT CAN(SEGCON LOADED) - ;TWOSEG SET TO AND OF SOFTWARE AND HARDWARE CAPABILITES + ;TWOSEG SET TO AND OF SOFTWARE AND HARDWARE CAPABILITIES MOVNI TAC,SEGN ;SET LH OF POINTER TO FIRST SEG IN JBTXX TABLES HRLI TAC,JOBN ;SET RH OF POINTER TO FIRST HIGH SEG ;THIS MUST BE DONE HERE BECAUSE SEGPTR APPEARS IN FIRST @@ -191,8 +188,7 @@ TSTAPR: 0 ;PLACE TO SIDE JSR PC CONO PI,10000 ;CLEAR PI SYSTEM JRST @TSTREG > - -;ROUTINE TO FIND THE EXEC DDT SYMBOL TABLE POINTER AND MOVE IT TO THE PLACE + ;ROUTINE TO FIND THE EXEC DDT SYMBOL TABLE POINTER AND MOVE IT TO THE PLACE ;WHERE EXEC DDT EXPECTS IT(DDTSYM=36) ;THE MONITOR CAN BE LOADED IN ANY OF 3 WAYS(IN ORDER OF PERFERNCE): ; 1. UNDER TIME SHARING WITH REGULAR LOADER AND COMMON @@ -209,10 +205,10 @@ TSTAPR: 0 ;PLACE TO SIDE JSR PC ; RETURN WITH AC UUO SET TO SYMBOL TABLE POINTER ;CALLED FROM MANDATORY ONCE ONLY CODE AND 141 START CODE(WHICHEVER OCCURS FIRST) - INTERN MOVTP + INTERN MOVSTP EXTERN T30SYM,JOBSYM,DDTSYM,DDTX,SYSDDT -MOVSTR: 0 ;JSR HERE FROM MANDATORY ONCE ONLY CODE AND +MOVSTP: 0 ;JSR HERE FROM MANDATORY ONCE ONLY CODE AND ; FIRST JUMP TO EXEC DDT IF BEFORE MONITOR STARTED MOVJMP: JRST .+1 ;PATCHED TO SETUUO AFTER FIRST EXECUTION MOVE UUO,T30SYM ;ASSUME LOADED BY REGULAR 10/30 @@ -231,7 +227,7 @@ REGT30: MOVEM UUO,DDTSYM ;STORE THE SYMBOL TABLE POINTER FOR EXEC DDT SETUUO: MOVE UUO,DDTSYM ;RETURN THE CORRECT(MAYBEUPDATED IF ; EXEC DDT PATCHES MADE BEFORE MONITOR SAVED OR ; STARTED) SYMBOL TABLE POINTER - JRST @MOVSTR ;RETURN + JRST @MOVSTP ;RETURN ;HERE IF EXEC DDT IS STARTED UP BEFORE MONITOR(TO MAKE A PATCH FOR EXAMPLE) @@ -241,6 +237,9 @@ SETUUO: MOVE UUO,DDTSYM ;RETURN THE CORRECT(MAYBEUPDATED IF PATSYM: JSR MOVSTP ;MOVE DDT SYMBOL TABLE POINTER SO EXEC DDT WILL ; FIND IT AND PATCH 141 TO GO DIRECTLY TO EXEC DDT JRST DDTX ;AND GO DIRECTLY TO EXEC DDT + +;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE + IFN FTRC10, < ENTRY RCXWNZ ;THIS SYMBOL IS SOLELY TO PERMIT THE SYSTEM @@ -257,7 +256,6 @@ INTERN FTTTYSER IFE FTTTYSER,< DEFINE SETTYO DEFINE TYPE - DEFINE NEXTC > IFN FTTTYSER,< DEFINE SETTYO @@ -289,12 +287,10 @@ PATSIZ: MOVEI TAC,PATCH ;SET SIZE OF SYSTEM TO BEGINING OF PATCH MOVEI TAC,TSEXEC PUSHJ PDP,CONMES PUSHJ PDP,OPOUT - - -;ASK FOR TODAY'S DATE AND CONVERT + ;ASK FOR TODAY'S DATE AND CONVERT ;DATE STORED AS ((Y-64)*12.+M-1)*31.+D-1 -EXTERNAL THSDAT,JUFMIN,SKIPS +EXTERNAL THSDAT,JIFMIN,SKIPS PUSHJ PDP,DATLOP JRST .-1 @@ -333,18 +329,16 @@ DATLOP: SETZM THSDAT SUBI TAC1,^D64 ;YEAR ZERO IMULI TAC1,^D12*^D31 ADDM TAC1,THSDAT - - -;GET TIME OF DAY + ;GET TIME OF DAY EXTERNAL TIME - POP PDP,TC + POP PDP,TAC PUSHJ PDP,TIMLOP JRST .-1 TIMLOP: SETZM TIME MOVEI TAC,TIMEM - PUSHJ PDP,IOCONM + PUSHJ PDP,ICONM PUSHJ PDP,OPOUT PUSHJ PDP,GETLIN JRST TIMLOP ;JUST A CR @@ -353,8 +347,7 @@ TIMLOP: SETZM TIME JRST TIMLOP ;NO ARGUMENT JRST TIMLOP ;ILLEGAL CHARACTER MOVE TAC,TAC1 - IDIVI TYAC,^D100 ;TAC=HRS.TAC1=MINS - + IDIVI TAC,^D100 ;TAC=HRS.TAC1=MINS SKIPL TAC ;HRS NEGATIVE? CAILE TAC,^D23 ;OR .G. 23? JRST TIMLOP ;OUT OF BOUNDS @@ -365,15 +358,14 @@ TIMLOP: SETZM TIME IMULI TAC,JIFMIN ;JIFFIES SINCE MIDNIGHT MOVEM TAC,TIME ;TIME=JIFFIES SINCE MIDNIGHT + JUMPGE ITEM,QUICK ;SKIP NEXT PART OF DIALOGUE UNLESS THE LAST ITEM ; TYPED IN (NAMELY TIME OF DAT) WAS TERMINATED BY ; AN "ALT MODE". (ACCUMULATOR "ITEM" IS SET UP - ; IUN THE "GETLIN" SUBROUTINE CALLED ABOVE.) - - -;PRINT IO CONFIGURATION + ; IN THE "GETLIN" SUBROUTINE CALLED ABOVE.) + ;PRINT IO CONFIGURATION -EXTERNAL DEVLST,TCONLN,INLMES,PRENAME,INTTB1,INTTAB +EXTERNAL DEVLST,TCONLN,INLMES,PRNAME,INTTB1,INTTAB EXTERNAL OCTPNT IFN FT2REL,< @@ -385,15 +377,15 @@ IFN FT2REL,< MOVEI TAC,2 PUSHJ PDP,RADX10 ;NO. SECOND REG EXISTS. PUSHJ PDP,INLMES - ASCIZ /RELOC. REG. + ASCIZ / RELOC. REG. / PUSHJ PDP,OPOUT > MOVEI TAC,IOCONF - PUSHJ PDP,IOCNM + PUSHJ PDP,ICONM HLRZ AC1,DEVLST JUMPN AC1,ALRLNK ;DEVICE DATA BLOCK ALREADY LINKED? - MOVESI PROG,INTNUM ;NO, NOT LOADED BY BULD,-NO. OF DEVICES*2 + MOVSI PROG,INTNUM ;NO, NOT LOADED BY BULD,-NO. OF DEVICES*2 CONFLP: SKIPN AC1,INTTB1(PROG) ;INT LOC HAVE DEV DATA BLOCK? JRST NODDB ;NO, GO GET NEXT DEVICE DATA BLOCK LDB UUO,[POINT 8,INTTAB(PROG),8] ;YES. NO. OF DEV DATA BLKS @@ -401,9 +393,9 @@ CONFLP: SKIPN AC1,INTTB1(PROG) ;INT LOC HAVE DEV DATA BLOCK? PUSHJ PDP,RADX10 ;IN DECIMAL PUSHJ PDP,INLMES ;PRINT 1 SPACE ASCIZ / / - HLLZ TAC1,DEVNAME(AC) ;DEVICE NAME + HLLZ TAC1,DEVNAM(AC1) ;DEVICE NAME PUSHJ PDP,PRNAME ;PRINT IT - SOJLE UUO,SINGLE ;IS THIS JUST A SIGNLE DEVICE? + SOJLE UUO,SINGLE ;IS THIS JUST A SINGLE DEVICE? PUSHJ PDP,INLMES ;NO, APPEND 'S TO DEVICE NAME ASCIZ /'S/ SINGLE: PUSHJ PDP,CRLF ;PRINT CR LF @@ -442,7 +434,7 @@ ONCE7A: PUSHJ PDP,OPOUT ASCIZ / (OCTAL) TTY SCANNER LINES / PUSHJ PDP,OPOUT - + ;ASK FOR OPERATORS CONSOLE TO BE SPECIFIED EXTERNAL INLMES,DEVOPR,CTEXT,DEVPHY @@ -457,10 +449,10 @@ ONCEOP: MOVEI TAC,OPRM CAMN TAC,[SIXBIT /CTY/] ;CTY? JRST .+3 ;YES. JUST STORE IT. PUSHJ PDP,DEVPHY - JRST ONCEP ;PHYSICAL NAME NOT FOUND + JRST ONCEOP ;PHYSICAL NAME NOT FOUND MOVEM TAC,DEVOPR ;SET FOR SYSTEM ;DEVICE "OPR" WILL BE SAME AS THIS - + ;ASK IF SYSMAK IS WANTED EXTERN MAKEND,SYSSIZ @@ -485,11 +477,11 @@ ONCE2: MOVEI TAC,SYSDM EXTERNAL CNTDB -ONCE3: PUSHJ PDP,SYSSIZ ;SAVE CURRENT VALUE - JSP TAC,CNTDB ;UPDATE SYSSIZ BY SPACE USED +ONCE3: PUSH PDP,SYSSIZ ;SAVE CURRENT VALUE + JSP TAC,CNTDB ;UPDATE SYSSIZ BY SPACE USED ; FOR DEVICE DATA BLOCKS FOR DSK,DTA,MTA,TTY,PTY) -;PRINT OCTAL SIZE OF MONITOR + ;PRINT OCTAL SIZE OF MONITOR MOVEI TAC,EXECIS PUSHJ PDP,ICONM @@ -524,24 +516,26 @@ IFN FTTTYSER, ; IF NOT PATCHED, LEAVE COMMON'S VALUE ONCE5A: + INTERNAL FTDISK IFN FTDISK,< PUSHJ PDP,REF ;GO THROUGH THE REFRESH DIALOG. > + QUICK: ;THIS IS THE SHORT-CUT EXIT TO BY-PASS MOST OF THE DIALOGUE + INTERNAL FTCHECK IFN FTCHECK,< PUSHJ PDP,OK ;CHECKSUM MONITOR AND SAVE THE ANSWER. > - JRST @ONCE ;***EXIT FROM THE "ONCE-ONLY CODE"*** - -IFN FTNDISK,< -EXTERNAL OCTIN,MFDBLK,SATXWD,NUMPLK,SYSPP,REFLAG + JRST @ONCE ;***EXIT FROM THE "ONCE-ONLY CODE"*** + IFN FTDISK,< +EXTERNAL OCTIN,MFDBLK,SATXWD,NUMBLK,SYSPP,REFLAG ;REFRESH DIALOGUE @@ -559,13 +553,12 @@ REF2: ;YES MOVEI TAC,REF4M ;TYPE LOGICAL DISK ADDRESS OF MFD RETR, INFO PUSHJ PDP,ICONM PUSHJ PDP,OPOUT - PUSHJ PDP,GETLIN JRST REF2 IFN FTTTYSER, PUSHJ PDP,OCTIN JRST REF2 - JRET REF2 + JRST REF2 IFE FTRC10, < PUSH PDP,TAC1 ;IS IT A MULTIPLE OF NUMBLK? MOVEI TAC,(TAC1) @@ -576,7 +569,7 @@ IFE FTRC10, < HRRZM TAC1,MFDBLK AOS TAC1 HRRM TAC1,SATXWD -REF3: + REF3: INTERNAL FTSWAP IFN FTSWAP,> + + PUSHJ PDP,REFRES ;REFRESH. JRST REF5 ;ERROR + MOVEI TAC,REF6M ;REFRESHING SUCCESSFULLY COMPLETED ! PUSHJ PDP,ICONM PUSHJ PDP,OPOUT ;TYPE "REFRESHED !" + MOVE TAC,SYSPP MOVEM TAC,REFLAG ;TO PERMIT AUTOMATIC LOG-IN UNDER ; PROJ-PROG NUMBER [1,1] EVEN @@ -610,8 +607,7 @@ REF3A: PUSHJ PDP,ICONM ; ON THE NEWLY REFRESHED DISK. PUSHJ PDP,OPOUT POPJ PDP, - -IFE FTRC10, < + IFE FTRC10, < REF4: POP PDP,TAC1 MOVEI TAC,REF5M PUSHJ PDP,ICONM @@ -622,20 +618,22 @@ REF4: POP PDP,TAC1 REF5: PUSH PDP,TAC ;ERROR. ON COMMING HERE, TAC HAS LOGICAL BLOCK ; NUMBER WHICH COULD NOT BE WRITTEN MOVEI TAC,REF7M - PUSHJ PDP,IOCONM + PUSHJ PDP,ICONM POP PDP,TAC PUSHJ PDP,OCTPNT PUSHJ PDP,CRLF PUSHJ PDP,OPOUT JRST REF6 ;GO BACK TO TRY AGAIN., + REF1M: ASCIZ /DO YOU WANT TO REFRESH THE DISK ? (Y OR CR) + / -REF2M: ASCIZ /ARE YOU SURE(Y OR CR)? +REF2M: ASCIZ /ARE YOU SURE(Y OR CR)? / REF3M: ASCIZ /DO YOU WANT TO CHANGE THE LOCATION OF THE MFD(Y OR CR)? / -REF4M: ASCIZ /TYPE THE LOGICAL DISK ADDRESS OF THE MFT RETREIVAL INFORMATION + REF4M: ASCIZ /TYPE THE LOGICAL DISK ADDRESS OF THE MFT RETREIVAL INFORMATION / IFE FTRC10, < REF5M: ASCIZ /MUST BE A MULTIPLE OF NUMBLK. @@ -651,8 +649,7 @@ REF9M: ASCIZ /HOW MANY (DECIMAL) 1K DISK BLOCKS ARE TO BE ALLOCATED FOR SWAPPING / > > ;THIS CLOSES AN FTDISK CONDITIONAL SERVAL PAGES BACK. - -;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE + ;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE ;CALL: PUSHJ PDP,GETLIN ; JUST A CR TYPED IN ; A LINE TYPED IN,TAC SEYT AS BYTE POINTER @@ -662,7 +659,7 @@ LINE=TAC1 ;TTY LINE NO. (ALSO SAME AS SCNSER) IFN FTTTYSER, -EXTNERAL CPOPJ +EXTERNAL CPOPJ1 GETLIN: IFE FTTTYSER, IFN FTTTYSER,< PUSHJ PDP,SETBFI> @@ -695,11 +692,11 @@ IFE FTTTYSER,< MOVE TAC,LINEP ;RESET BYTE POINTER> DELETE: IFN FTTTYSER,< PUSHJ PDP,DCPUTR JRST DELET1> IFE FTTTYSER,< - JUMPE ITEM,DELET1 ;AT BEGINNING OF LINE?> + JUMPE ITEM,DELET1 ;AT BEGINNING OF LINE? ADD TAC,[XWD 070000,0] ;NO, BACK UP BYTE POINTER TLNE TAC,400000 ;FINISHED THIS WORD YET? ADD TAC,[XWD 347777,-1] ;YES, BACK UP ADDRESS> - MOVEI CHREC,134 + MOVEI CHREC,134 ;OUTPUT BACK SLASH PUSHJ PDP,TYO SOJA ITEM,GET1 @@ -712,8 +709,7 @@ DELET1: MOVEI CHREC,15 GETLN1: SETOM ITEM ;MECHANISM USED TO BY-PASS PART OF DIALOGUE MOVEI CHREC,15 ;WHEN ALTMODEIS TYPED. JRST GET2 - -;ROUTINE TO TYPE A LINE ON OPERATOR CONSOLE + ;ROUTINE TO TYPE A LINE ON OPERATOR CONSOLE ;ECHO CHECK STOPS LINE AND RETURNS ;CALL: DAT SET TO END OF MESSAGE @@ -722,12 +718,12 @@ IFN FTTTYSER, OPOUT: IFE FTTTYSER, IFN FTTTYSER, CONO TTY,1000 ;CLEAR INPUT -OPOUT1: IFE FTTYSER,< +OPOUT1: IFE FTTTYSER,< CAMN TAC,DAT POPJ PDP,> CONSZ TTY,40 JRST OPOUT2 ;ECHO CHECK - MEXTC + NEXTC IFN FTTTYSER,< JUMPE CHREC,CPOPJ> PUSHJ PDP,TYO JRST OPOUT1 @@ -737,7 +733,7 @@ OPOUT2: MOVEI CHREC,15 MOVEI CHREC,12 PUSHJ PDP,TYO CONO TTY,1000 ;CLEAR INPUT - + ;WAIT TILL OUTPUT BUSY OFF BEFORE TYPING OUT CHAR. EXTERNAL TCONLN,TYPL @@ -773,9 +769,8 @@ APRCHK: CONSO APR,1000 ;IS CLOCK FLAG ON? CONO APR,1000 ;YES, CLEAR CLOCK FLAG AOS TIME ;INCREMENT TIME POPJ PDP, - -ICONM: PUSH PDP,TAC - SETTTYO ;INITIALIZE LINE BUFFER + ICONM: PUSH PDP,TAC + SETTYO ;INITIALIZE LINE BUFFER POP PDP,TAC JRST CONMES ;OUTPUT MESSAGE @@ -784,7 +779,7 @@ OTSET: MOVEI DEVDAT,SCNDDB MOVSI TEM,120 ;TTYCHR HRRI TEM,TIBF(DEVDAT) MOVEM TEM,TTIBUF(DEVDAT) ;INIT INPUT POINTER - HRRI TEM,TDBF(DEVDAT) ;AND OUTPUT POINTER + HRRI TEM,TOBF(DEVDAT) ;AND OUTPUT POINTER MOVEM TEM,TTOBUF(DEVDAT) JRST TSETBF ;NOW CLEAR THE BUFFERS > @@ -798,7 +793,7 @@ YESNO: PUSHJ PDP,ICONM ;FIRST OUTPUT THE QUESTION CAIN CHREC,"Y" ;WAS IT A Y? AOS 0(PDP) ;YES, SKIP POPJ PDP, ;NO. MAYBE IT WAS "N", SO DONT SKIP - + ;CONSTANTS AND PUSH DOWN LIST ONCEPN=20 @@ -809,7 +804,7 @@ LINBUF: BLOCK 30 ;MESSAGES -TSEXEC: ASCIZ /MONITOR JUST LOADED +TSEXEC: ASCIZ / MONITOR JUST LOADED / TODATE: ASCIZ / TYPE TODAY'S DATE AS MM-DD-YY @@ -822,9 +817,9 @@ IOCONF: ASCIZ / IO CONFIGURATION / OPRM: ASCIZ / -TYPE NAME OF OPR CONSOLE. +TYPE NAME OF OPR CONSOLE / -SYSM: ASCIZ / + SYSM: ASCIZ / DO YOU WANT SYSMAK (TYPE Y IF YES, CR IF NO)? / SYSDM: ASCIZ / @@ -840,8 +835,7 @@ DESMES: ASCIZ /TYPE DESIRED MAX,(DEC), CR IF OK AS IS CRLFMS: ASCIZ / / - -;INITIALIZE SAT SEARCH ENTRIES + ;INITIALIZE SAT SEARCH ENTRIES ;THIS "DFWUNS" ROUTINE IS CALLED BY MANDATORY ONCE ONLY CODE(LINKSR) ; AFTER ALL MULTIPLE DEVICE DATA BLOCKS HAVE BEEN GENERATED IN CORE @@ -850,7 +844,7 @@ CRLFMS: ASCIZ / ; PERFORMED, DFWUNS IS CALLED AFTER REFRES SINCE SYSINI CALLS LINKSR AFTER ONCE. INTERNAL FTDISK -IFN FTDISK, +IFN FTDISK,< INTERNAL DFWUNS EXTERNAL SAT05,JSAT06,SATENT,SATPTR,SATBK2,SATXWD,SATPTR @@ -860,22 +854,22 @@ EXTERNAL WLBIT,NUMBIT,DSKCNT DFWUNS: IFN FTRC10, < PUSHJ PDP,WRITLK ;FORCE THE WRITE-LOCK SWITCH SETTINGS TO BE ZERO. - PUSHJ PDP,RDSTAT ;READ VITAL DISK STATISTICS BLOCK, STORE PARAMETERS PUSHJ PDP,CAPCTY ;DETERMINE CURRENT SYSTEM CAPACITY (HOW MANY DISKS). CAMN TAC,LBHIGH ;HAS CAPACITY CHANGED SINCE LAST REFRESH ? JRST DFWNZ1 ;NO, EVERYTHING APPPEARS TO BE OKAY. - SETTTYO ;YES, PRINT WARNING MESSAGE... + SETTYO ;YES, PRINT WARNING MESSAGE... PUSHJ PDP,INLMES ASCIZ /DISK CAPACITY HAS CHANGED SINCE LAST REFRESHING. EITHER RESTORE PREVIOUS DISK CONFIGURATION OR REFRESH. + / PUSHJ PDP,OPOUT ;START TTY PUSHJ PDP,REF ;GO THROUGH THE REFRESH DIALOGUE JRST DFWUNS ;NOW TRY AGAIN. DFWNZ1: > - MOVEI TAC,SETENT + MOVEI TAC,SATENT MOVEM TAC,SATPTR MOVEI PROG,0 MOVEI DEVDAT,DSKDDB @@ -897,9 +891,9 @@ SETS2: PUSH PDP,TAC MOVE TAC,SATBK2 MOVEM TAC,2(DAT) MOVSI TAC1,400000 - MOVEM TAC1,1(DSAT) + MOVEM TAC1,1(DAT) MOVEI DAT,0 -SETS3: MOVE AC1,(TAC) ;COUNT ONE-BITS + SETS3: MOVE AC1,(TAC) ;COUNT ONE-BITS AOJN AC1,SETS3A ;IS THE WORD = -1? ADDI DAT,44 ;YES JRST SETS5 @@ -917,29 +911,34 @@ IFE FTRC10, < ;BITS HAVE BEEN COUNTED, CHECK FOR WRITE-LOCK CAIL DAT,NUMBIT ;BLOCK FULL? JRST SETS8 - PUSHJ PDP,DEGETF ;NO. GET A FREE BLOCK - + PUSHJ PDP,DFGETF ;NO. GET A FREE BLOCK PUSHJ PDP,SETS7 ;WRITE PUSHJ PDP,SETFRE ;FREE THE BLOCK > + SETS5B: MOVEI TAC1,SENTSZ ;PREPARE TO BUMP SATPTR POP PDP,TAC AOBJN TAC,SETS1 ;DO ALL SAT BLOCKS + IFE FTRC10, < JRST SAT05 ;RETURN > + IFN FTRC10, < HRRZ TAC,SATPTR -SETS5X: CAIL TAC,SATTOP +SETS5X: CAIL TAC,SATTOP JRST SAT05 ;EXIT FROM DFWUNS BACK TO DSKINI IN DSKSER........ ADDI TAC,SENTSZ MOVEI TAC1,411000 ;ON THE NEW PDP-10 DISK SYSTEM SET THE SAT ENTRY HRRM TAC1,(TAC) ; TABLE TO SHOW ALL NON-EXISTENT DISKS AS JRST SETS5X ; BOTH WRITE-LOCKED AND FULL. > + SETS6: POP PDP,TAC ;ERROR, TRY AGAIN + JRST SETS2 + IFE FTRC10, < @@ -969,12 +968,12 @@ SETS8: MOVEI TAC,SETS9 ;BLOCK FULL, READ FIRST ONE HRRM TAC,DSKBUF(DEVDAT) JRST SETS5B + SETS9: BLOCK 204 > ;CLOSE THE IFE FTRC10 > ;CLOSES AN IFN FTDISK A COUPLE PAGES BACK. - -IFN FTDISK,< + IFN FTDISK,< ;DISK REFRESHING ROUTINES --- @@ -988,12 +987,11 @@ REFRESH: MOVEI PROG,0 ;SETUP IO MOVEI DEVDAT,DSKDDB PUSH PDP,SETSAT MOVE TAC,RPOPJ - MOVEM TAC,SETSET + MOVEM TAC,SETSAT PUSHJ PDP,DSKINI POP PDP,SETSAT MOVEI TAC,DSKCHN LSH TAC,1 - ADDI TAC,40 MOVE TAC1,[JSR DSKCHL] MOVEM TAC1,(TAC) @@ -1100,7 +1098,6 @@ REFR2: MOVE TAC1,[XWD -200,NULBLK] ;SAT BLOCKS AOS TAC ;SAT RETREIVAL INFORMATION ADD TAC,MFDBLK SETZB IOS,DEVIOS(DEVDAT) - MOVE TAC1,[XWD -200,SATRET] MOVEM TAC1,DSKBUF(DEVDAT) PUSHJ PDP,MQOUT @@ -1120,7 +1117,7 @@ REFER1: POP PDP,TAC1 REFER: POP PDP,WSYNC RPOPJ: POPJ PDP, -DEFINE ZEROS (A), LIST> @@ -1131,7 +1128,7 @@ DEFINE ONES (A),,,45,1,0,4,20 ;MFD RETREIVAL INFO SATBL1: XWD 777776,0 ;THIS SAT BLOCK CONTAINSS - ZERSO 5400/44-1 ;ALLOCATION FOR MFD AND SAT BLOCKS + ZEROES 5400/44-1 ;ALLOCATION FOR MFD AND SAT BLOCKS XWD 001777,-1 ONES 200+SATBL1-. @@ -1150,25 +1147,26 @@ MFD1: XWD 1,1 ;MFD XWD 654644,0 SIXBIT /*SAT*/ XWD 637163,17 ;RELOCATED - ZEROS 174 + ZEROES 174 -NULBLK: ZEROS 5400/44-1 ;NULL SAT BLOCK +NULBLK: ZEROES 5400/44-1 ;NULL SAT BLOCK XWD 001777,-1 ONES 200+NULBLK-. -> ;END OF THE REFRESHER FOR THE OLD PDP-6 DISK. +> ;END OF THE REFRESHER FOR THE OLD PDP-6 DISK. + IFN FTRC10, < ;DISK REFRESHER FOR THE NEW PDP-10 MODEL RC-10 (BURROUGHS) DISK-- EXTERNAL CPOPJ1,THSDAT,TIME EXTERNAL MFDBLK,SATXWD,NUMSAT,NUMBLK,SATTOP,SENTSZ - EXTERNAL DISKUP,DFREF,DFWRT,DSKFDG,CHKSUM,RCXCCW,RCXFIN + EXTERNAL DISKUP,DFRED,DFWRT,DSKFDG,CHKSUM,RCXCCW,RCXFIN EXTERNAL K4SWAP IFN FTSWAP,< - EXTNERAL MAXSWP,MXK2SWP,BLKSPK + EXTERNAL MAXSWP,MXK2SWP,BLKSPK > EXTERNAL LBHIGH INTERNAL STATBK @@ -1196,7 +1194,7 @@ DTOP=1B18 ;SET INDICATES DATA TRANSFER IN PROGRESS. SRCHE=1B19 ;SEARCH ERROR (DISK TIMING TRACK PROBLEMS!!) DDE=1B20 ;DISK DESIGNATION ERROR TSE=1B21 ;TRACK SELECT ERROR (OR EXCEEDS SYSTEM CAPACITY) - MRDY=1B22 ;DISK NOT READY (OR NON-EXISTENT DISK REFERENCED) + NRDY=1B22 ;DISK NOT READY (OR NON-EXISTENT DISK REFERENCED) PSF=1B23 ;POWER SUPPLY FAILURE DPAR=1B24 ;DISK PARITY ERROR CHDPAR=1B25 ;CHANNEL DATA PARITY ERROR @@ -1206,17 +1204,15 @@ DTOP=1B18 ;SET INDICATES DATA TRANSFER IN PROGRESS. OVR=1B29 ;OVERRUN, I.E., MEMORY DIDN'T RESPOND QUICKLY ENOUGH ;BIT 30 CHANNEL CONTROL WORD WRITTEN IN MEMORY (THIS BIT IS ;TURNED ON ON ALMOST ALL TERMINATIONS.) -BUSYRT=1B31 ;BUSY (SYNCHRONIZER PERFORMING A COMMAND SEQUENCE) +BUSYBT=1B31 ;BUSY (SYNCHRONIZER PERFORMING A COMMAND SEQUENCE) DONEFLG=1B32 ;DONE -- THIS ACTUALLY CAUSES THE INTERRUPT. ;BITS 33 - 35 PI CHANNEL SELECTION BITS. ;COMBINATIONS OF ERRO BITS GROUPED BY TYPE -- DATERR=DPAR!CHDPAR ;DATA ERRORS. DEVERR=SRCHE!PSF!CHCPAR!OVR ;DEVICE ERRORS. -SETERR=DDE!TSE!NRDY!NXMEM ;SOFTWARE-PREVENTABLE ERRORS. - - -;CONO FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER +SETERR=DDE!TSE!NRDY!WRPE!NXMEM ;SOFTWARE-PREVENTABLE ERRORS. + ;CONO FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER ;BITS 00 - 17 UNUSED ;BITS 18 - 19 SELECT DISK FOR SECTOR COUNTER READ-OUT A(SEE DATAI BITS 28-35) @@ -1235,6 +1231,7 @@ RESETB=1B32 ;RESET THE DONE FLAG (CORRESPONDING CONI BIT) TO CLEAR INTERRUPT ;BITS 26 - 27 DISK SELECTED BY BITS 18-19 OF LAST CONO ;BITS 28 - 35 CURRENT SECTOR POSITION OF SELECTED DISK (FOR LATENCY OPTIMIZATION!) + ;DATAO FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER -- ;BITS 00 - 17 DISK ADDRESS ELECTION @@ -1244,11 +1241,11 @@ RESETB=1B32 ;RESET THE DONE FLAG (CORRESPONDING CONI BIT) TO CLEAR INTERRUPT ;BITS 18 - 23 INITIAL PARITY REGISTER SETTING 9ZERO EXCEPT FOR DIAGNOSTIC PROGRAMS) DDSKPE=1B24 ;DISABLE DISK PARITY ERROR STOP DCHNPE=1B25 ;DISABLE CHANNEL DATA PARITY ERROR STOP -WRBIT=1B16 ;SET MEANS WRITE ON DISK, RESET MEANS READ FROM DISK +WRBIT=1B26 ;SET MEANS WRITE ON DISK, RESET MEANS READ FROM DISK ;BITS 27 - 34 ;CORRESPONDING BITS OF INITIAL CHANNEL CONTROL ADDRESS, HENCE, ; THIS ADDRESS MUST BE EVEN AND IN THE FIRST 1K OF CORE MEMORY! ;BIT 35 ;WRITE EVEN PARITY DATA INTO MEMORY (DIAGNOSTICS ONLY!) - + REFRESH: PUSHJ PDP,DISKUP ;BE SURE THE DISK IS UP AND READY. @@ -1265,7 +1262,7 @@ IFN FTSWAP,< CAIG TAC1,STATBK ;SWAPPING AREA MUST NOT OVERLAY THE JRST RFRSHE ; VITAL STATISTICS BLOCK. > - IDIVI TAC1,NUMBLK + IDIVI TAC,NUMBLK MOVN TAC1,TAC ;SET SATXWD TO SHOW ONLY THE NUMBER OF HRLM TAC1,SATXWD ; SAT BLOCKS ACTUALLY IN EXISTENCE. HRRZ TAC1,MFDBLK @@ -1284,19 +1281,20 @@ RFRSHE: MOVEI TAC,RFSHME POP PDP,TAC ; DIALOGUE TO AK THE PARAMETER SPECIFICATION JRST REF6 ; QUESTIONS AGAIN. -RFSHME: ACSIZ /PARAMETER SPECIFICATION ERROR. TRY AGAIN. +RFSHME: ASCIZ /PARAMETER SPECIFICATION ERROR. TRY AGAIN. + / RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. JRST REFERR ; AN ERROR ON THIS WRITE IS BAD TROUBLE !! - + ;NEXT WRITE THE MFD (MASTER FILE DIRECTORY) ONTO THE DISK PUSHJ PDP,WNZCLR ;CLEAR THE OUTPUT BUFFER MOVE TAC,[XWD 1,1] ;THE FIRST ENTRY IN THE MFD IS FOR MOVEM TAC,WNZBUF ; THE MFD ITSELF. MOVE TAC,[SIXBIT/UFD/] - HRR TC,MFDBLK ;POINTER TO MFD RETRIEVAL INFORMATION + HRR TAC,MFDBLK ;POINTER TO MFD RETRIEVAL INFORMATION MOVEM TAC,WNZBUF+1 MOVE TAC,[SIXBIT/*SAT*/] ;THE ONLY OTHER ENTRY INITIALLY IN THE MOVEM TAC,WNZBUF+2 ; MFD IS FOR THE FILE NAMED *SAT*.SYS WHICH @@ -1304,17 +1302,17 @@ RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. HRRZ TAC,MFDBLK ; ANYONE WHO WANTS TO LOOK AT THEM. SUBI TAC,-1(TAC1) ;COMPUTE POINTER TO THE RETRIEVAL INFORMATION HLL TAC,[SIXBIT/SYS/] ; FOR THE *SAT*.SYS FILE. - MOVEM TAC,WNZBYUF+3 + MOVEM TAC,WNZBUF+3 HRRZS TAC ADDI TAC,1 ;COMPUTE LOGICAL BLOCK NUMBER OF THE MFD. PUSHJ PDP,WNZWR ;WRITE THE MFD OUT ONTO THE DISK. - JRST REFERR ;ERROR MOVE TAC,[XWD -200,WNZBUF] PUSHJ PDP,CHKSUM HRRZM TAC1,CHKSAV ;SAVE CHECKSUM TO GO INTO RETRIEVAL INFORMATION. + ;NEXT WRITE MFD RETRIEVAL INFORMATION BLOCK ONTO THE DISK PUSHJ PDP,WNZCLR ;CLEAR OUTPUT BUFFER @@ -1324,7 +1322,7 @@ RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. HLL TAC,[SIXBIT /UFD/] MOVEM TAC,WNZBUF+1 ;FILE EXTENSION, DATE HRLZI TAC,045000 ;PROTECTION (ANY PROJECT 1 USER MAY WRITE IN MFD) - PUSHJ PDP,MDTMDT ;FILL IN TIME, DATE, AND MODE + PUSHJ PDP,MDTMOT ;FILL IN TIME, DATE, AND MODE MOVEM TAC,WNZBUF+2 MOVE TAC,[XWD -200,1] ;NEGATIVE WORD COUNT AND PROGRAMMER NUMBER MOVEM TAC,WNZBUF+3 ;GO INTO WORD 4 OF RETRIEVAL INFO @@ -1337,7 +1335,7 @@ RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. MOVEM TAC,WNZBUF+177 ; MUST CONTAIN ITS OWN BLOCK NUMBER. PUSHJ PDP,WNZWR ;WRITE MFD RETRIEVAL INFOMRATION ONTO THE DISK JRST REFERR ;ERROR - + ;NEXT CREATE THE NECESSARY SAT BLOCKS ON THE DISK PUSH PDP,SATXWD ;SATXWD CONTROLS THE OUTER LOOP @@ -1357,7 +1355,7 @@ IFN FTSWAP,< MOVEI TAC,0 PUSHJ PDP,SETWNZ JRST REFST7 ;HAVING SET ALL BITS, NO FURTHER TESTING IS NEEDED, -> + REFST2: MOVN TAC,TAC1 ADDI TAC1,NUMBLK SUB TAC1,LOWSWP ;IS ANY OF SWAPPING AREA WITHIN THIS SAT BLOCK? @@ -1376,7 +1374,7 @@ RFST3A: HRRZI TAC,STATBK SUB TAC,TAC1 MOVEI TAC1,1 ;YES, MARK IT UNAVAILABLE, PUSHJ PDP,SETWNZ - + REFST4: MOVE TAC,SATXWD ;SET UP TO LOOP THRU LOGICAL BLOCK NUMBERS FOR MFD. SUB TAC,[XWD 3,1] ; MFD RETRVL INFO. SAT BLOCKS, AND SAT RETRVL INFO. @@ -1393,8 +1391,7 @@ REFST5: PUSH PDP,TAC REFST6: POP PDP,TAC ;LOOP THROUGH THE WHOLE SET OF SPECIAL BLOCKS AOBJN TAC,REFST5 ; WHICH MUST BE MARKED UNAVAILABLE. -REFST7: MOVE TAC,[XWD -200,WNZBUF] - +REFST7: MOVE TAC,[XWD -200,WNZBUF] PUSHJ PDP,CHKSUM ;COMPUTE CHECKSUM MOVE TAC,SATPTR HRRZM TAC1,1(TAC) ;STORE IT TEMPORARILY IN THE SATENT TABLE. @@ -1412,7 +1409,7 @@ REFST7: MOVE TAC,[XWD -200,WNZBUF] MOVE TAC,SATPTR ; BACK TO DO NEXT SAT BLOCK. ADDI TAC,SENTSZ JRST REFST1 - + ;FINALLY, WRITE OUT THE RETRIEVAL INFORMATION FOR THE FILE *SAT*.SYS REFSRF: PUSHJ PDP,WNZCLR ;CLEAR THE BUFFER @@ -1422,13 +1419,14 @@ REFSRF: PUSHJ PDP,WNZCLR ;CLEAR THE BUFFER HLL TAC,[SIXBIT /SYS/] MOVEM TAC,WNZBUF+1 ;STORE EXTENSION AND DATE HRLZI TAC,555000 ;PROTECTION CODE (UNTOUCHABLE FILE ! ) - PUSHJ PDP.MDTMDT ;FILL IN TIME, DATE AND MODE + PUSHJ PDP,MDTMOT ;FILL IN TIME, DATE AND MOTE MOVEM TAC,WNZBUF+2 HLLZ TAC,SATXWD ;COMPUTE NEGATIVE WORD COUNT LSH TAC,7 HRRI TAC,1 ;PROGRAMMER NUMBER=1 MOVEM TAC,WNZBUF+3 + MOVEI TAC,SATENT ;PREPARE TO STORE POINTERS TO ALL THE SAT BLOCKS. MOVE TAC1,SATXWD MOVEI AC2,0 @@ -1451,12 +1449,14 @@ REFSRL: HRRZ AC1,TAC1 ;GET LOGICAL BLOCK NUMBER OF SAT BLOCK. PUSHJ PDP,WNZWR ;WRITE THE *SAT*.SYS RETRVL INFO ONTO THE DISK. JRST REFERR ;ERROR - JRST CPOPJ1 ;***EXIT FROM PDP-10 DISK REFRESHER.***......... + JRST CPOPJ1 ;***EXIT FROM PDP-10 DISK REFRESHER.***......... + ;ROUTINE TO WRITE THE FIXED BLOCK OF VITAL STATISTICS ONTO THE DISK. -WRSTAT: PUSHJ PDPWNZCLR ;CLEAR THE OUTPUT BUFFER + +WRSTAT: PUSHJ PDP,WNZCLR ;CLEAR THE OUTPUT BUFFER MOVE TAC,[XWD -WRSTSZ,0] WRSTA1: MOVE TAC1,@WRSTA9(TAC) ;STORE KEY QUANTITIES IN THE OUTPUT BUFFER MOVEM TAC1,WNZBUF(TAC) @@ -1479,6 +1479,7 @@ WRSTA2: MOVEI TAC,WRSTM1 WRSTM1: ASCIZ /CANNOT WRITE VITAL STATISTICS BLOCK ON DISK. HELP!! / + ;TABLE OF POINTERS TO THE VITAL STATISTICS THAT ARE STORED IN "STATBK" ON THE DISK. WRSTA9: XWD ,MFDBLK ;LOGICAL BLOCK NUMBER OF MFD RETRIEVAL INFORMATION @@ -1495,11 +1496,13 @@ IFE FTSWAP,< XWD 0,LOWSWP ;LOWSWP DOES DOUBLE DUMMY DUTY IN ; NON-SWAPPING SYSTEM > - WRSTSZ=.-WRSTA9 + WRSTSZ=.-WRSTA9 + ;ROUTINE TO READ IN THE FIXED BLOCK OF "VITAL STATISTICS" FROM ; THE DISK AND DISTRUBUTE THEM TO THE APPROPRIATE CORE LOCATIONS. + RDSTAT: MOVEI TAC,STATBK PUSHJ PDP,WNZRD ;READ IN THE VITAL STATISTICS BLOCK. JRST RDSTA2 ;ERROR @@ -1508,13 +1511,14 @@ RDSTAT: MOVEI TAC,STATBK JRST RDSTA2 ;ERROR, STATISTICS BLOCK APPARENTLY WAS CLOBBERED. MOVE TAC,[XWD -WRSTSZ,0] ;STORE AWAY THESE IMPORTANT PARAMETERS -RDSTA1; MOVE TAC1,WNZBUF(TAC) ; UNDER CONTROL OF A TABLE IN THE "WRSTAT" +RDSTA1: MOVE TAC1,WNZBUF(TAC) ; UNDER CONTROL OF A TABLE IN THE "WRSTAT" MOVEM TAC1,@WRSTA9(TAC) ; ROUTINE WHICH WRITES OUT THE VITAL AOBJN TAC,RDSTA1 ; STATISTICS BLOCK ONTO THE DISK. POPJ PDP, ;***SUBROUTINE EXIT***........ -RDSTA2: MOVEI TAC,RDTM1 + +RDSTA2: MOVEI TAC,RDSTM1 ;PRINT ERROR MESSAGE IF THE VITAL PUSHJ PDP,ICONM ; STATISTICS BLOCK CANNOT BE READ PUSHJ PDP,OPOUT @@ -1522,8 +1526,9 @@ RDSTA2: MOVEI TAC,RDTM1 JRST RDSTAT ;NOW TRY AGAIN. RDSTM1: ASCIZ /VITAL DISK STATISTICS LOST, SUGGEST REFRESHING! -/ +/ + ;ROUTINE TO DETERMINE THE CURRENT SYSTEM'S DISK CAPACITY. I.E., THE NUMBER OF ; DISKS ATTACHED TO THE RC-10 DISK SYNCHRONIZER TODAY. @@ -1536,8 +1541,8 @@ CAPCTY: MOVEI TAC,NUMSAT MOVEM TAC,LBHIGH ;TEMPORARILY CHANGE THIS VALYUE SO THAT THE VALIDITY ; CHECK IN "DSKINT" WILL NOT FAIL SPURIOUSLY. - MOVEI TAC,3 -CPCT1; PUSH PDP,TAC + MOVEI TAC,0 +CPCT1: PUSH PDP,TAC PUSHJ PDP,WNZRD ;ATTEMPT TO READ FIRST BLOK OF EACH SUCCESSIVE DISK., JRST CPCT3 ;ERROR POP PDP,TAC @@ -1550,20 +1555,21 @@ CPCT2: SUBI TAC,1 ; LEGAL LOGICAL DISK BLOCK NUMBER. POPJ PDP, ;***SUBROUTINE EXIT***....... + CPCT3: POP PDP,TAC CONSZ DSK,NRDY ;NON-EXISTENT DISK? JUMPN TAC,CPCT2 ;YES, THE LIMIT OF DISK STORAGE HAS BEEN FOUND. ; HOWEVER, DISK 0 MUST ALWAYS BE PRESENT. MOVEI TAC,CPCTM1 ;NO, SOME OTHER TYPE OF READ ERROR. - PUSHJ PDP,IOCONM + PUSHJ PDP,ICONM PUSHJ PDP,OPOUT ;PRINT ERROR MESSAGE POP PDP,LBHIGH JRST CAPCTY ;TRY AGAIN -CPCTM1: ACSIZ /DISK READ ERROR DURING CAPACITY SEARCH INITIALIZATION -/ - +CPCTM1: ASCIZ /DISK READ ERROR DURING CAPACITY SEARCH INITIALIZATION +/ + ;ROUTINE TO ASSURE THAT THE STATUS OF THE WRITE-LOCK SWITCHES ON THE ; DISK MAINTENANCE PANEL IS SUCH THAT THEY ARE PROTECTING "LESS THAN 0000". @@ -1571,7 +1577,7 @@ CPCTM1: ACSIZ /DISK READ ERROR DURING CAPACITY SEARCH INITIALIZATION WRITLK: CONI DSK,TAC TLNN TAC,13777 ;BOUNDARY ZERO AND MAINTENANCE-SEGMENT OFF ? - TLNN TAC,B53 ;YES, IS ROTARY SWITCH SET + TLNN TAC,B53 ;YES, IS ROTARY SWITCH SET ; TO EITHER X UNDER OR OVER(AS OPPOSED ; TO UNDER OR X OVER) JRST WRLK8 ;NO. GO PRINT ERROR MESSAGE AND LOOP. @@ -1582,13 +1588,13 @@ WRITLK: CONI DSK,TAC MOVE TAC,[252525252525] MOVEM TAC,WNZBUF MOVE TAC,[XWD WNZBUF,WNZBUF+1] - BLT TAC,WNZBUF+177 MOVEI TAC,0 PUSHJ PDP,WNZWR ;WRITE PATTERN IN BLOCK 0. JRST WRLK2 ;ERROR POPJ PDP, ;***GOOD EXIT FROM WRITLK SUBROUTINE***......... + WRLK2: MOVEI TAC,WRLKM1 CONSZ DSK,WRPE ;WRITE-PROTECTION ERROR ? ;YES, PROTECT SWITCH ERRONEOUSLY SET ON "LESS THAN @@ -1600,12 +1606,14 @@ WRLK9: PUSHJ PDP,ICONM ;PRINT ERROR MESSAGE JRST WRITLK ;GO TRY AGAIN WRLKM1: ASCIZ /DISK BLOCK 0 WRITE ERROR DURING WRITE-LOCK CHECK. + / WRLKM2: ASCIZ /"MAINTENANCE SEGMENT" SWITCH MUST BE OFF. AND -DIS WRITE PROTECTION SWITCHES MUST BE SET TO 0000 AND "LESS THAN", +DISK WRITE PROTECTION SWITCHES MUST BE SET TO 0000 AND "LESS THAN", FIX THEM ! ! -/ +/ + ;DISK READING ROUTINE FOR USE ONLY DURING ONCE-ONLY CODE. ; AVOIDS USING THE MONITOR OUFUFS AND INTERRUPT STRUCTURE. @@ -1628,33 +1636,38 @@ WNZRDC: POP PDP,DSKFDG ;RESTORE THE MOLESTED INSTRUCTION IN DSKINT. CONSZ DSK,DATERR!DEVERR!SETERR ;ANY ERRORS ? JRST WNZRDX ;YES, GIVE ERROR RETURN. MOVE TAC1,RCXCCW ;NO, BUT CHECK THAT THE FINAL VALUE OF THE - CAMN TAC1,RCXFIX ; CHANNEL CONTROL WORD WAS AS EXCPECTED ALSO. + CAMN TAC1,RCXFIN ; CHANNEL CONTROL WORD WAS AS EXCPECTED ALSO. AOS (PDP) ;***GOOD RETURN***........ WNZRDX: POPJ PDP, ;ERROR RETURN, + + + + + ;DISK WRITING ROUTINE FOR USE ONLY DURING ONCE-ONLY CODE. ; AVOIDS USING THE MONITOR QUEUES AND INTERRUPT STRUCTURE. ;ON ENTRY TO THIS SUBROUTINE, TAC CONTAINS THE LOGICAL BLOCK NUMBER OF THE DISK ; BLOCK WHICH IS TO BE WRITTEN ONTO THE DISK FROM THE ONCE-ONLY DISK BUFFER AREA. -WNZWR: CONO DSK,DATERR!DEVERR!SETERR!RESCIG ;CLEAR THE DISK SYNCHRONIZER. +WNZWR: CONO DSK,DATERR!DEVERR!SETERR!RESETB ;CLEAR THE DISK SYNCHRONIZER. CONSZ DSK,BUSYBT!DONEFLG JRST WNZWR ;DON'T PROCEED UNLESS THAE CLEAR WORKED. MOVEM TAC,LBSAVE ;SAVE LOGICAL BLOCK NUMBER IN CASE AN ERROR RETURN ; MUST BE TAKEN FROM THE "REFRESH" SUBROUTINE. - PUSH POP,DSKFDG ;SAVE THIS ISNTRUCTION FROM "DSKINT". + PUSH PDP,DSKFDG ;SAVE THIS ISNTRUCTION FROM "DSKINT". MOVE TAC1,[HRRZI TAC,0] ;NOW TAMPER WITH THAT SAVED LOCATION SO MOVEM TAC1,DSKFDG ; THAT DSKINT WILL NOT ENABLE ANY INTERRUPT CHANNEL. - MOVE TAC1,[XWD -200,WNZPUT-1] + MOVE TAC1,[XWD -200,WNZBUF-1] PUSHJ PDP,DFWRT ;CALL DEVICE-DEPENDENT ROUTINE IN "DSKINT" DIRECTLY. JRST WNZRDC ;THE REMAINDER OF THE WRITE ROUTINE IS IDENTICAL ; TO THE READ ROUTINE -;SUBROUTINE TO WATCH FOR THE DONE FLAG TO COME ON AND TIME OUT IF + ;SUBROUTINE TO WATCH FOR THE DONE FLAG TO COME ON AND TIME OUT IF ; IT DOESN'T COME UP SOON ENOUGH (SAY 5 SEC OR SO). WNZWAT: MOVE TAC,[^D1000000] ;AT MOST ONE MILLION TIMES THRU THE CONSZ-SOJG LOOP @@ -1670,6 +1683,7 @@ WNZWTL: CONSZ DSK,DONEFLG ;DONE FLAG ON YET ? WATMSG: ASCIZ /DISK HUNG. / + ;SUBROUTINE TO SET SPECIFIED BITS IN A SAT BLOCK WHILE FORMING IT IN WNZBUF ;ENTRY CONDITIONS -- C(TAC) = FIRST BIT NUMBER TO SET (NUMBERED BEGINNING AT 0) @@ -1687,16 +1701,17 @@ STWNZ1: ORM AC2,WNZBUF(TAC) STWNZ2: SOJN AC1,STWNZ1 POPJ PDP, ;SUBROUTINE EXIT........... + ;SUBROUTINE TO CLEAR THE ONCE-ONLY OUTPUT BUFFER, WNZBUF WNZCLR: SETZM WNZBUF MOVE TAC,[XWD WNZBUF,WNZBUF+1] BLT TAC,WNZBUF+177 POPJ PDP, ;SUBROUTINE EXIT........... - + ;SUBROUTINE TO MASK THE TIME, DATE, AND DATA MODE (=14 FOR BINARY MODE0 INTO ACCUMU- ; LATOR TAC IN THE FORMAT USED IN WORD 3 OF A DISK RETRIEVAL INFORMATION BLOCK. -MDTMDT: PUSH PDP,TAC +MDTMOT: PUSH PDP,TAC MOVE TAC,TIME ;GET TIME IN JIFFIES. IDIVI TAC,JIFMIN ;CONVERT TO MINUTES LSH TAC,^D12 @@ -1707,10 +1722,10 @@ MDTMDT: PUSH PDP,TAC POPJ PDP, ;SUBROUTINE EXIT............ + ;ERROR EXIT FROM "REFRESH" WHEN A BAD WRITE ON THE DISK OCCURS DURING REFREHSING. REFER1: POP PDP,TAC ;CORRECT PDP IF EXTRA PUSH HAD OCCURRED. - REFERR: MOVE TAC,LBSAVE ;GET BLOCK NUMBER FOR THE ERROR MESSAGE AT REF4. POPJ PDP, ;THIS NO-SKIP RETURN RE-ENTERS THE REFRESH DIALOGUE. @@ -1729,8 +1744,7 @@ LOWSWP: 0 ;LOWEST LOGICAL BLOCK FOR SWAPPING > ;END OF REFRESH PROCEDURE FOR THE RD10 DISK. > ;CLOSE AN EVEN EARLIER FTDISK CONDITIONAL. - -INTERNAL FTCHECK + INTERNAL FTCHECK IFN FTCHEC,< EXTERNAL CHKREG,CHKEND,CHECK,MONPTR,MONSUM @@ -1746,4 +1760,3 @@ CK: MOVEI TAC,CHKBEG > ONCEND: END -