Google
 

Trailing-Edge - PDP-10 Archives - de-10-omona-v-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)
;DEC:	PIP
;	DIRECT
;	COMPIL
;	MACRO
;	LOADER
;	LINK
;	LNK???
;	TECO
;	FILCOM
;	MAKLIB
;	DDT.REL
;	JOBDAT.REL
;	CREF
; FILES THAT MAY OPTIONALLY BE ON [SELF] OR DEC
;[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
; COPY FILES THAT MAY OPTIONALLY ALREADY BE ON
; YOUR AREA OR MAY BE REQUIRED FROM DEC:
.COPY=DEC:DDT.REL
.RUN DEC:TECO
*ERTOPI10.REL
.IF (NOERROR) .GOTO A0
; IF YOU DON'T HAVE YOUR OWN COPY OF TOPI10.REL, GET ONE FROM DEC:
.RUN DEC:PIP
*/X=DEC:TOPI10.REL
.IF (ERROR) .GOTO ERROR
.GOTO A0
A0::
.RUN DEC:TECO
*ERMONGEN.EXE
.IF (NOERROR) .GOTO A1
; IF YOU DON'T HAVE YOUR OWN COPY OF MONGEN GET ONE FROM DEC:
.RUN DEC:PIP
*/X=DEC:MONGEN.EXE
.IF (ERROR) .GOTO ERROR
.GOTO A1
A1::
.RUN DEC:TECO
*ERFGEN.HLP
.IF (NOERROR) .GOTO A2
; IF YOU DON'T HAVE YOUR OWN COPY OF FGEN.HLP, GET ONE FROM DEC
.RUN DEC:PIP
*/X=DEC:DSKB:FGEN.HLP
.IF (ERROR) .GOTO ERROR
.GOTO A2
A2::
.RUN DEC:TECO
*ERS.MAC
.IF (NOERROR) .GOTO A3
; IF YOU DON'T HAVE YOUR OWN COPY OF S.MAC, GET ONE FROM DEC
.RUN DEC:PIP
*/X=DEC:S.MAC
.IF (ERROR) .GOTO ERROR
.GOTO A3
A3::
.RUN DEC:TECO
*ERCOMMOD.MAC
.IF (NOERROR) .GOTO A4
; IF YOU DON'T HAVE YOUR OWN COPY OF COMMOD.MAC, GET ONE FROM DEC:
.RUN DEC:PIP
*/X=DEC:COMMOD.MAC
.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 DEC:PIP
*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 DEC:FILCOM
*FAK.FAK_FKI.FAK,FKI.MAC
.RUN DEC:TECO
*ERFAK.FAKYZ=C
.IF (NOERROR)  .GOTO NEWF
.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 DEC:DIRECT
*TTY:/CHECKSUM=*
.GOTO A
A:.RUN DEC: DIRECT
*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
;
; 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	;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	;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	;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	;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 DEC:TECO
*ERMONITR.VER
.IF (NOERROR) .GOTO B1
; IF NO VERSION NUMBER FILE, MAKE ONE ASSUMING 60300
.RUN DEC:TECO
*EWMONITR.VERHKI60300HPEF
B1::
.RUN DEC:TECO
*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 DEC:TECO
.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 DEC:MAKLIB
*RELS=TOPI10/EXTRACT:(EJBDAT,FILFND,FILIO,FILUUO,ONCMOD,REFSTR)
;
;NOW LOAD TWICE USING LINK-10, THE SUPER-LOADER......
.R LINK
*/NOINITIAL /HASH:5000 TWICE/SAVE ,TWICE/MAP = /LOCALS /MAXCOR:50K -
*RELS,COMMOD.MAX,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 DEC:DIRECT
*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 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 DEC:TECO
*ERMONMKI.LOG
.IF (NOERROR)  .GOTO B3      ;JUST EXIT IF MONMKI IS AROUND......
.IF (ERROR)  ;DON'T CARE IF FAILED
.DELETE RELS.REL
.GOTO B3
B3::  ;
.QUEUE TWICE.LOG
%FIN::  ;
.KJOB/F
;[END OF TWICE.CTL]