X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/bb920f47d2b4fd2ac0c46c72df890dfe6931e943..cac5183c0f5a53b1874c2685f1b2d84e990ddd7d:/src/onceb.mac diff --git a/src/onceb.mac b/src/onceb.mac index 89b786d..ff9c5bf 100644 --- a/src/onceb.mac +++ b/src/onceb.mac @@ -41,7 +41,7 @@ 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 @@ -72,7 +72,7 @@ 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) @@ -94,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: @@ -150,7 +149,6 @@ 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,< ;SET LOC TWOREG TO -1 IF MACHINE HAS TWO RELOC REG,0 IF ONLY ONE RELOC REG EXTERN TWOREG,SEGN,SEGPTR,AND2RG,JOBN @@ -181,11 +179,10 @@ 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 - ; WHICH BUILD FORBITS FROM HAVING EXTERNALS MOVSM TAC,SEGPTR ;POINTER USED FOR AOBJN LOOPS CONO PI,10000 ;CLEAR PI SYSTEM @@ -243,6 +240,7 @@ PATSYM: JSR MOVSTP ;MOVE DDT SYMBOL TABLE POINTER SO EXEC DDT WILL ;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE + IFN FTRC10, < ENTRY RCXWNZ ;THIS SYMBOL IS SOLELY TO PERMIT THE SYSTEM RCXWNZ: ; BUILDER TO RETRIEVE THE CORRECT BINARY FILE. @@ -258,7 +256,6 @@ INTERN FTTTYSER IFE FTTTYSER,< DEFINE SETTYO DEFINE TYPE - DEFINE NEXTC > IFN FTTTYSER,< DEFINE SETTYO @@ -361,6 +358,7 @@ 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 @@ -479,9 +477,10 @@ 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 MOVEI TAC,EXECIS @@ -517,19 +516,23 @@ 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 FTDISK,< EXTERNAL OCTIN,MFDBLK,SATXWD,NUMBLK,SYSPP,REFLAG @@ -550,7 +553,6 @@ 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, @@ -592,10 +594,12 @@ REF3A: 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 @@ -603,7 +607,6 @@ REF3A: PUSHJ PDP,ICONM ; ON THE NEWLY REFRESHED DISK. PUSHJ PDP,OPOUT POPJ PDP, - IFE FTRC10, < REF4: POP PDP,TAC1 MOVEI TAC,REF5M @@ -624,8 +627,9 @@ REF5: PUSH PDP,TAC ;ERROR. ON COMMING HERE, TAC HAS LOGICAL BLOCK 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)? / @@ -692,7 +696,7 @@ IFE FTTTYSER,< 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 @@ -813,7 +817,7 @@ IOCONF: ASCIZ / IO CONFIGURATION / OPRM: ASCIZ / -TYPE NAME OF OPR CONSOLE. +TYPE NAME OF OPR CONSOLE / SYSM: ASCIZ / DO YOU WANT SYSMAK (TYPE Y IF YES, CR IF NO)? @@ -830,6 +834,7 @@ DESMES: ASCIZ /TYPE DESIRED MAX,(DEC), CR IF OK AS IS / CRLFMS: ASCIZ / / + ;INITIALIZE SAT SEARCH ENTRIES ;THIS "DFWUNS" ROUTINE IS CALLED BY MANDATORY ONCE ONLY CODE(LINKSR) @@ -849,15 +854,15 @@ 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. - SETTYO ;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 @@ -907,19 +912,21 @@ IFE FTRC10, < CAIL DAT,NUMBIT ;BLOCK FULL? JRST SETS8 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 @@ -932,6 +939,7 @@ SETS5X: CAIL TAC,SATTOP SETS6: POP PDP,TAC ;ERROR, TRY AGAIN JRST SETS2 + IFE FTRC10, < ;WRITE-LOCK DETERMINATION ON THE OLD PDP-6 (DATA PRODUCTS) DISK -- @@ -960,6 +968,7 @@ SETS8: MOVEI TAC,SETS9 ;BLOCK FULL, READ FIRST ONE HRRM TAC,DSKBUF(DEVDAT) JRST SETS5B + SETS9: BLOCK 204 > ;CLOSE THE IFE FTRC10 @@ -1089,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 @@ -1145,6 +1153,8 @@ NULBLK: ZEROES 5400/44-1 ;NULL SAT BLOCK XWD 001777,-1 ONES 200+NULBLK-. + + > ;END OF THE REFRESHER FOR THE OLD PDP-6 DISK. IFN FTRC10, < @@ -1221,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 @@ -1230,7 +1241,7 @@ 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!) @@ -1251,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 @@ -1270,13 +1281,13 @@ RFRSHE: MOVEI TAC,RFSHME POP PDP,TAC ; DIALOGUE TO AK THE PARAMETER SPECIFICATION JRST REF6 ; QUESTIONS AGAIN. -RFSHME: ASCIZ /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 @@ -1295,7 +1306,6 @@ RFRSH1: PUSHJ PDP,WRSTAT ;WRITE OUT THE VITAL STATISTICS BLOCK ON THE DISK. 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] @@ -1381,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. @@ -1446,6 +1455,7 @@ REFSRL: HRRZ AC1,TAC1 ;GET LOGICAL BLOCK NUMBER OF SAT BLOCK. ;ROUTINE TO WRITE THE FIXED BLOCK OF VITAL STATISTICS ONTO THE DISK. + 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 @@ -1486,11 +1496,13 @@ IFE FTSWAP,< XWD 0,LOWSWP ;LOWSWP DOES DOUBLE DUMMY DUTY IN ; NON-SWAPPING SYSTEM > + WRSTSZ=.-WRSTA9 ;ROUTINE TO READ IN THE FIXED BLOCK OF "VITAL STATISTICS" FROM ; THE DISK AND DISTRUBUTE THEM TO THE APPROPRIATE CORE LOCATIONS. + RDSTAT: MOVEI TAC,STATBK PUSHJ PDP,WNZRD ;READ IN THE VITAL STATISTICS BLOCK. JRST RDSTA2 ;ERROR @@ -1514,6 +1526,7 @@ RDSTA2: MOVEI TAC,RDSTM1 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 @@ -1528,7 +1541,7 @@ 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 + MOVEI TAC,0 CPCT1: PUSH PDP,TAC PUSHJ PDP,WNZRD ;ATTEMPT TO READ FIRST BLOK OF EACH SUCCESSIVE DISK., JRST CPCT3 ;ERROR @@ -1554,6 +1567,7 @@ CPCT3: POP PDP,TAC POP PDP,LBHIGH JRST CAPCTY ;TRY AGAIN CPCTM1: ASCIZ /DISK READ ERROR DURING CAPACITY SEARCH INITIALIZATION + / ;ROUTINE TO ASSURE THAT THE STATUS OF THE WRITE-LOCK SWITCHES ON THE @@ -1574,7 +1588,6 @@ 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. @@ -1593,10 +1606,12 @@ 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 DISK WRITE PROTECTION SWITCHES MUST BE SET TO 0000 AND "LESS THAN", FIX THEM ! ! + / ;DISK READING ROUTINE FOR USE ONLY DURING ONCE-ONLY CODE. @@ -1707,10 +1722,10 @@ MDTMOT: 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.