Trailing-Edge
-
PDP-10 Archives
-
dec-10-omona-u-mc9
-
twice.ctl
There are 6 other files named twice.ctl in the archive. Click here to see a list.
;%1(57) - VERSION # OF TWICE.CTL 16 JUL 1975 ALAN FRANTZ
; TO MAKE TWICE.SAV FROM TWICE.MAC
; SUBMIT WITH COMMAND .QUEUE I:=TWICE/RESTART:1/TIME:10:00
;
; REQUIRED FILES: (LATEST RELEASED VERSIONS)
;[10,7] PIP
; DIRECT
; COMPIL
; MACRO
; LOADER
; LINK
; LNK???
; TECO
; FILCOM
; FUDGE2
; DDT.REL
; JOBDAT.REL
; CREF
; FILES THAT MAY OPTIONALLY BE ON [SELF] OR [10,7]
;[SELF] TWICE.MAC
; S.MAC
; FKI.MAC
; COMMOD.MAC
; MONITR.VER ; TXT FILE WITH MONITOR VERSION NUMBER
; MONGEN.EXE
; FGEN.HLP
; TOPI10.REL
;
; OUTPUT FILE:
; TWICE.SAV
; OUTPUT LISTINGS:
; TWICE MAP
; TWICE CREF LISTING
; TWICE.LOG
;
;
;USE PRIVATE SYS
.ASSIGN DEC SYS
; COPY FILES THAT MAY OPTIONALLY ALREADY BE ON
; YOUR AREA OR MAY BE REQUIRED FROM [10,7]
.COPY=DEC:DDT.REL
.RUN DSKB:TECO[10,7]
*ERTOPI10.REL
.IF (NOERROR) .GOTO A0
; IF YOU DON'T HAVE YOUR OWN COPY OF TOPI10.REL, GET ONE FROM [10,7]
.RUN DSKB:PIP[10,7]
*/X_DSKB:TOPI10.REL[10,7]
.IF (ERROR) .GOTO ERROR
.GOTO A0
A0::
.RUN DSKB:TECO[10,7]
*ERMONGEN.EXE
.IF (NOERROR) .GOTO A1
; IF YOU DON'T HAVE YOUR OWN COPY OF MONGEN GET ONE FROM [10,7]
.RUN DSKB:PIP[10,7]
*/X_MONGEN.EXE[10,7]
.IF (ERROR) .GOTO ERROR
.GOTO A1
A1::
.RUN DSKB:TECO[10,7]
*ERFGEN.HLP
.IF (NOERROR) .GOTO A2
; IF YOU DON'T HAVE YOUR OWN COPY OF FGEN.HLP, GET ONE FROM [10,7]
.RUN DSKB:PIP[10,7]
*/X_DSKB:FGEN.HLP[10,7]
.IF (ERROR) .GOTO ERROR
.GOTO A2
A2::
.RUN DSKB:TECO[10,7]
*ERS.MAC
.IF (NOERROR) .GOTO A3
; IF YOU DON'T HAVE YOUR OWN COPY OF S.MAC, GET ONE FROM [10,7]
.RUN DSKB:PIP[10,7]
*/X_DSKB:S.MAC[10,7]
.IF (ERROR) .GOTO ERROR
.GOTO A3
A3::
.RUN DSKB:TECO[10,7]
*ERCOMMOD.MAC
.IF (NOERROR) .GOTO A4
; IF YOU DON'T HAVE YOUR OWN COPY OF COMMOD.MAC, GET ONE FROM [10,7]
.RUN DSKB:PIP[10,7]
*/X_DSKB:COMMOD.MAC[10,7]
.IF (ERROR) .GOTO ERROR
.GOTO A4
A4::
;
;THE FEATURE TEST SWITCHES FILE, FKI.MAC, IS NEEDED TO ASSEMBLE COMMOD AND
; TWICE. IF IT IS ALREADY PRESENT IN OUR DISK AREA, IT MAY OR MAY NOT
; BE CORRECT, THAT IS, IT MAY OR MAY NOT REFLECT THE VERSION OF FGEN.HLP
; WHICH WE ARE USING. IF RUNNING MONGEN WITH THIS FGEN.HLP PRODUCES A
; FILE IDENTICAL TO THE FKI.MAC ALREADY ON OUR DISK AREA, IT IS BETTER TO
; USE THE OLDER FKI.MAC (TO AVOID UNNECESSARY ASSEMBLIES, AND TO AVOID
; CONFLICT WITH MONITOR MAKING FILES WHICH FREQUENTLY ARE RUN
; CONCURRENTLY. THEREFORE, WE WILL OVERWRITE FKI.MAC WITH A NEWLY
; CREATED FILE ONLY IF IT IS DIFFERENT. THIS TAKES SOME SLEIGHT OF HAND......
.DELETE FKI.FAK
.IF (ERROR) ;O.K. ONLY FOR REENTRANCY
.RUN DSKB:PIP[10,7]
*FKI.FAK/R_FKI.MAC
.IF (ERROR) *FKI.FAK_TWICE.CTL
.GET DSK:MONGEN 15
.VERSION
.IF (ERROR) .E 137
.START
*
*F
*FKI
*KIFULL
*Y
*N ;NOT VIRTUAL MEMORY
;MONGEN HAS JUST CREATED A STANDARD KI10 FEATURE TEST SWITCHES FILE, FKI.MAC.
;NOW WE COMPARE IT TO ITS PREDECESSOR FKI.MAC (RECENTLY RENAMED TO FKI.FAK)
.RUN DSKB:FILCOM[10,7]
*FAK.FAK_FKI.FAK,FKI.MAC
.RUN DSKB:TECO[10,7]
*ERFAK.FAKYZ=C
.IF (NOERROR) .GOTO NEWF
;THIS ERROR HAPPENS ONLY IF FILCOM WROTE A ZERO-LENGTH FAK.FAK FILE.
;IN THIS CASE, RETAIN THE PREVIOUS FKI.MAC BECAUSE IT IS IDENTICAL.
.DELETE FKI.MAC
.RENAME FKI.MAC=FKI.FAK
.GOTO NEWF
NEWF:: ;
.DELETE FAK.FAK,FKI.FAK
.IF (ERROR) ;OKAY
;END OF DIDDLING WITH FKI.MAC......
;
;MAKE A RECORD OF WHAT IS BEING USED
.SET WATCH VERSION
.IF (NOERROR) .GOTO A
.RUN DSKB:DIRECT[10,7]
*TTY:/CHECKSUM=*
.GOTO A
A:.RUN DSKB: DIRECT[10,7]
*TTY:/CHECKSUM=TWI???.*+TOPI10.REL+FKI.MAC+S.MAC+COMMOD.MAC+MONGEN.*+FGEN.*
;
; DEFINE A MAXIMAL POSSIBLE DISK SYSTEM FOR USE IN MAKING
; TWICE.SAV USER-MODE REFRESHER THAT WILL RUN ON ANY SYSTEM
; [OUR PRESENT SUPPORT COMMITTMENTS DEFINE THE MAXIMUM AS
; 4 FHA'S, 4 FHB'S, 4 FSA'S, 4 FSB'S, 8 DPA'S, 8 DPB'S, 8 RPA'S, AND 8 RPB'S]
;
; FORCE USE OF WHATEVER VERSION OF MONGEN IS NOW ON USERS AREA
;
.RUN MONGEN
*
*HDW
*HDWMAX
*1077
*MAXIMAL DISK SYSTEM
*9998 ;CPU0 SERIAL NUMBER
*2 ;DK10 CLOCKS ON CPU0
*9999 ;CPU1 SERIAL NUMBER
*2 ;DK10 CLOCKS ON CPU1
*Y ;EXCLUDE MONITOR OVERHEAD ?
*Y ;HIGH PRECISION TIME ACCOUNTING ?
*4 ;DF10 DATA CHANNELS (TWICE ONLY CARES ABOUT UNITS--NOT CHANNELS)
*DF10C ;CHANNEL TYPE
*2 ;RC10'S ON CHANNEL 0
*4 ;FHA'S
*4 ;FHB'S
*0 ;RH10'S FOR RS04
*0 ;RH10'S FOR RP04
*0 ;RP10'S
*0 ;TM10B'S
*0 ;TC10'S
*0 ;RH10S FOR TM02
*DF10C ;CHANNEL TYPE
*0 ;RC10'S ON CHANNEL 1
*2 ;RH10'S FOR RS04
*4 ;FSA'S
*4 ;FSB'S
*0 ;RH10'S FOR RP04
*0 ;RP10'S
*0 ;TM10B'S
*0 ;TC10'S
*0 ;RH10S FOR TM02
*DF10C ;CHANNEL TYPE
*0 ;RC10'S ON CHANNEL 2
*0 ;RH10'S FOR RS04
*0 ;RH10'S FOR RP04
*2 ;RP10'S
*8 ;DPA'S
*8 ;DPB'S
*0 ;TM10B'S
*0 ;TC10'S
*0 ;RH10S FOR TM02
*DF10C ;CHANNEL TYPE
*0 ;RC10'S ON CHANNEL 3
*0 ;RH10'S FOR RS04
*2 ;RH10'S FOR RP04
*8 ;RPA'S
*8 ;RPB'S
*0 ;RP10'S
*0 ;TM10B'S
*0 ;TC10'S
*0 ;RH10S FOR TM02
*0 ;TM10A'S
*100 ;JOBS
*0 ;MAX PAGES CORE/USER
*256 ;TOTAL CORE
*60 ;TICKS/SEC
*5 ;REAL TIME DEVICES
* ;GUARANTEED CORE FOR NON-LOCKED JOBS
*5 ;HPQ'S
*Y ;CCL
*Y ;METER
*Y ;SYSCHK
*Y ;MSGSER
*Y ;PSISER
*Y ;IPCSER
*Y ;ENQ/DEQ
*1 ;CDR
*Y ;CDP
*Y ;CP10D
*N ;DIS
*1 ;TD10 (DECTAPE CONTROLLER)
*8 ;DTA'S
*2 ;LPT'S
*N ;LPT0 LOWER CASE
*N ;LPT1 LOWER CASE
*2 ;PLT
*Y ;PTP
*Y ;PTR
*100 ;PTY'S
*N ;DC44
*0 ;# OF DA28'S
*0 ;# OF DAS78'S
* ;DECIMAL VALUE DEFINITIONS
*A00VER,66666
*A1055,0
*RP1,360 ;DEVICE CODE FOR 2ND RP10
* ;END OCTAL VALUE DEFINITIONS
* ;SIXBIT VALUE DEFINITIONS
* ;DEV,PI
* ;DEV,PI,#
* ;DEV,PI,AC
;
; PUT CORRECT MONITOR VERSION NUMBER INTO TWICE
;
.RUN DSKB:TECO[10,7]
*ERMONITR.VER
.IF (NOERROR) .GOTO B1
; IF NO VERSION NUMBER FILE, MAKE ONE ASSUMING 60300
.RUN DSKB:TECO[10,7]
*EWMONITR.VERHKI60300HPEF
B1::
.RUN DSKB:TECO[10,7]
*ERMONITR.VERYAZJI00000BJ.,.+5XA
*EBHDWMAX.MACY<N66666;-5DGA0TT>EF
;
;COMPILE, LOAD, AND SAVE; PRODUCING MAP AND CREF FILE
;
;FORCE USE OF FIELD IMAGE CUSPS FOR COMPILING, LOADING, AND CREF
;
.R MACRO
*NUL:,NUL:_FKI
*NUL:,NUL:_S
*COMMOD.MAX_HDWMAX,COMMOD
.IF (ERROR) .PLEASE COMMOD.MAX ASSEMBLY ERROR--TWICE PROCEEDING
.RUN DSKB:TECO[10,7]
.OPERATOR %
*!BEG!
*% OPERATOR - DO YOU WANT TWICE CREF LISTINGS ? (YES/NO)
*
*!GET! ^^TUM QM-9"EOGET' QM-32"EOGET' QMUN
*!MORE! QN-10"EOEOL' QN-27"EOEOL' QN-125"EOEOL' ^^TUN OMORE
*!EOL! QM-^^^^Y"E
*GENERATE CREF LISTINGS
* ODONE'
*QM-^^^^N"E
* ? CANCEL CREF LISTINGS
* ODONE'
*% OPERATOR - YOU MUST TYPE YES OR NO
* OGET
=!DONE!
.NOOPERATOR
.IF (ERROR) .GOTO NOCRF
; HERE IF ANSWER WAS YES
.R MACRO
*NUL:,NUL:_FKI
*NUL:,NUL:_S
*TWICE,TWICE/C_HDWMAX,TWICE
.IF (ERROR) .PLEASE TWICE ASSEMBLY ERROR--PROCEEDING
.GOTO LIST
;
NOCRF::
; COMPILE WITHOUT GENERATING LISTING FILE
.R MACRO
*NUL:_FKI
*NUL:_S
*TWICE_HDWMAX,TWICE
.IF (ERROR) .PLEASE TWICE ASSEMBLY ERRORS--PROCEEDING
.GOTO NOLST
;
LIST::
.R CREF
*DSK:TWICE.LST=TWICE/O
.GOTO NOLST
NOLST::
; EXTRACT THE OTHER REQUIRED FILES FROM TOPI10.REL
.RUN DSKB:FUDGE2[10,7]
*JOBDAT_TOPI10<EJBDAT>/E
*ONCMOD_TOPI10<ONCMOD>/E
*REFSTR_TOPI10<REFSTR>/E
*FILFND_TOPI10<FILFND>/E
*FILUUO_TOPI10<FILUUO>/E
*FILIO_TOPI10<FILIO>/E
;
;NOW LOAD TWICE USING LINK-10, THE SUPER-LOADER......
.R LINK
*/NOINITIAL /HASH:5000 TWICE/SAVE ,TWICE/MAP = /LOCALS /MAXCOR:50K -
*JOBDAT,COMMOD.MAX,ONCMOD,REFSTR,FILFND,FILUUO,FILIO,DDT,TWICE -
* /NOSYSLIBRARY /PATCHSIZE:100 /GO
.IF (NOERROR) .GOTO CONT
.PLEASE ERROR LOADING TWICE--ABORTING
.GOTO ERROR
CONT::
.GET DSK:TWICE
.VERSION
.IF (ERROR) .E 137
;
;CONVERT IT TO AN EXE FILE
.NSA DSK:TWICE
.IF (NOERROR).DELETE TWICE.HGH,TWICE.LOW
;TRY IT JUST TO MAKE SURE IT DOESN'T BOMB IMMEDIATELY
.RUN DSK:TWICE
.RUN DSK:DIRECT[10,7]
*TTY:/CHECKSUM=TWICE.*
;
;
.PLEASE TWICE SUCCESSFUL
;
;
.GOTO B2
%ERR:: ;
%CERR:: ;
ERROR:: .PLEASE TWICE.CTL FAILED
.GOTO B2
B2:: ;
.DEASSIGN
.IF (ERROR) ;OKAY
; REMOVE ALL TEMPORARY FILES
.DELETE TWICE.REL,HDWMAX.BAK
.IF (ERROR) ;DON'T CARE IF FAILED
;DELETE THE FIELD-IMAGE CUSPS ALSO UNLESS THIS JOB SEEMS TO BE
; RUNNING CONCURRENTLY WITH A MONITOR LOAD (WHICH ALSO NEEDS THESE
; CUSPS). DETERMINE WHETHER THIS IS TRUE BY LOOKING FOR THE MONITOR
; MAKER'S .LOG FILE IN THIS DISK AREA......
.RUN DSKB:TECO[10,7]
*ERMONMKI.LOG
.IF (NOERROR) .GOTO B3 ;JUST EXIT IF MONMKI IS AROUND......
.IF (ERROR) ;DON'T CARE IF FAILED
.DELETE JOBDAT.REL
.GOTO B3
B3:: ;
.QUEUE TWICE.LOG
%FIN:: ;
.KJOB/F
;[END OF TWICE.CTL]