cdc:nos2.source:opl871:install
Table of Contents
INSTALL
Table Of Contents
- [00008] INSTALL - INSTALL DEADSTART FILE.
- [00085] DATA STORAGE.
- [00105] MAIN PROGRAM.
- [00107] MAIN PROGRAM.
- [00126] SUBROUTINES.
- [00128] CDF - COPY DEADSTART FILE.
- [00319] PRESET.
- [00321] PRS - PRESET PROGRAM.
Source Code
- INSTALL.txt
- IDENT INSTALL,FETS
- ABS
- SST
- ENTRY INSTALL
- ENTRY RFL=
- ENTRY SSJ=
- SYSCOM B1 DEFINE (B1) = 1
- TITLE INSTALL - INSTALL DEADSTART FILE.
- *COMMENT INSTALL - INSTALL DEADSTART FILE.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4,10
- ***** INSTALL - INSTALL DEADSTART FILE.
- *
- * P. D. HAAS. 78/02/28.
- * D. R. HILGREN. 78/08/18.
- SPACE 4,10
- *** *INSTALL* COPIES A FILE TO A MASS STORAGE DEVICE AND
- * UPDATES THE DEADSTART SECTOR SO THAT THE RESULTING FILE CAN BE
- * DEADSTARTED. THE DEVICE SPECIFIED MUST BE A SINGLE UNIT
- * *LDAM* TYPE DEVICE WHICH IS *ON*, AVAILABLE, AND HAS HAD *CTI*
- * INSTALLED ON IT.
- SPACE 4,10
- *** CONTROL CARD CALL.
- *
- * INSTALL,LFN,EQXXX.
- *
- * LFN = MASS STORAGE FILE (ASSIGNED TO THE CONTROL POINT)
- * WHICH IS TO BE INSTALLED AS A SYSTEM DEADSTART
- * FILE. IF *LFN* IS OMITTED, DEFAULT IS FILE
- * *SYSTEM* (WHICH MUST BE ASSIGNED TO THE CONTROL
- * POINT). *SDF* IS A RESERVED FILE NAME AND CANNOT
- * BE USED AS *LFN*.
- *
- * XXX = EST ORDINAL ON WHICH *LFN* IS TO BE WRITTEN.
- *
- * CALLING JOB MUST BE SYSTEM ORIGIN OR MUST BE VALIDATED
- * FOR SYSTEM ORIGIN PRIVILEGES. IF THE DEADSTART FILE
- * TO BE INSTALLED IS ON TAPE, IT MUST FIRST BE COPIED TO
- * MASS STORAGE.
- SPACE 4,10
- *** DAYFILE MESSAGES.
- *
- * * DEADSTART FILE FORMAT ERROR.* - AN ERROR WAS DETECTED IN
- * THE DIRECTORY OF THE DEADSTART FILE.
- *
- * * INSTALL - ARGUMENT ERROR.* - AN ERROR WAS DETECTED IN THE
- * PARAMETERS ASSOCIATED WITH THE *INSTALL* CONTROL STATEMENT.
- *
- * * SDF INSTALLATION COMPLETE.* - SYSTEM DEADSTART FILE
- * INSTALLATION IS COMPLETED.
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMCMAC
- *CALL COMCCMD
- *CALL COMSPRD
- *CALL COMSSSD
- *CALL COMSSSJ
- SPACE 4,10
- **** ASSEMBLY CONSTANTS.
- CBUFL EQU 22000B BUFFER LENGTH
- * CODE REQUIRES CBUFL DIVISIBLE BY 3
- ERRNZ CBUFL/3*3-CBUFL
- ****
- ****
- FETS SPACE 4,10
- ** FETS.
- ORG 104B
- FETS BSS 0
- I BSS 0 INSTALL FILE
- SYSTEM RFILEB TBUF,TBUFL,FET=7
- O BSS 0 *SDF* FILE
- SDF RFILEB CBUF,CBUFL,FET=6,EPR
- TITLE DATA STORAGE.
- ** DATA STORAGE.
- EORF CON 1 CURRENT BLOCK EOR FLAG
- SPACE 4,10
- * SPECIAL ENTRY POINTS.
- SSJ= BSS 0
- VFD 12/0,24/-0,12/SYCS,12/IRSI
- BSSZ SSJ=+SSJL-*
- SPACE 4,10
- * *1IS* FUNCTION REQUESTS.
- VIFF VFD 18/0L1IS,6/0,12/1,12/0,12/I
- IDFF VFD 18/0L1IS,6/0,12/2,12/O,12/I
- CFIF VFD 18/0L1IS,6/0,12/3,12/O,12/I
- PMEF VFD 18/0L1IS,6/0,12/4,12/O,12/0
- TITLE MAIN PROGRAM.
- INSTALL SPACE 4,10
- ** INSTALL - MAIN PROGRAM.
- INSTALL BSS 0
- SB1 1 PRESET PROGRAM
- RJ PRS
- RJ CDF COPY DEADSTART FILE
- INS1 R= X7,2
- SX1 CFIF COMPLETE *SDF* INSTALLATION
- R= A7,ARGR
- SYSTEM SPC,,X1 CALL *1IS*
- SA1 CFIF
- ZR X1,INS2 IF *1IS* ASSIGNED
- RECALL
- EQ INS1 RETRY *SYSTEM REQUEST
- INS2 RECALL ARGR WAIT *1IS* COMPLETE
- MESSAGE (=C* SDF INSTALLATION COMPLETE.*)
- ENDRUN
- TITLE SUBROUTINES.
- CDF SPACE 4,10
- ** CDF - COPY DEADSTART FILE.
- *
- * ENTRY (B2) = 2.
- *
- * USES A - ALL.
- * B - 3, 4, 5, 6, 7.
- * X - ALL.
- *
- * CALLS *1IS*.
- *
- * MACROS ABORT, MESSAGE, READCW, RECALL, SYSTEM, WRITECW.
- *
- * NOTE WHEN CHECKING FOR FET COMPLETE AND DATA IN THE BUFFER,
- * THE FET STATUS MUST BE PICKED UP BEFORE THE BUFFER
- * POINTER.
- CDF SUBR ENTRY/EXIT
- SB5 CBUF+CBUFL SET LIMIT ADDRESS
- SA2 I+3
- BX0 X0-X0 INDICATE NO BLOCKS AVAILABLE OR COMPLETE
- SA0 X2 INITIALIZE INPUT PSEUDO OUT POINTER
- EQ CDF13 INITIATE CONTROL WORD READ
- * CHECK FOR INPUT BLOCK AVAILABLE.
- CDF1 SA5 I CHECK INPUT FILE STATUS
- SA3 I+2 CHECK INPUT IN = PSEUDO OUT POINTER
- BX0 X0-X0 INDICATE NO BLOCKS AVAILABLE OR COMPLETE
- SX1 A0
- IX1 X3-X1
- LX5 59-0
- NZ X1,CDF3 IF INPUT BLOCK AVAILABLE
- PL X5,CDF8 IF BUFFER BUSY
- LX5 59-11-59+0
- NG X5,CDF15 IF PARITY ERROR STATUS IN FET
- LX5 59-3-59+11
- PL X5,CDF8 IF NOT EOF
- * PROCESS EOF.
- RECALL O WAIT OUTPUT FILE NOT BUSY
- SA3 O+2 CHECK DATA IN BUFFER
- SA4 A3+B1
- IX7 X3-X4
- ZR X7,CDF2 IF BUFFER EMPTY
- WRITECW X2,R FLUSH BUFFER
- CDF2 SA3 CDFB
- SA1 X2+B1
- SA4 A3+B1
- BX6 X3 SET EOF CONTROL WORDS IN BUFFER
- LX7 X4
- SA6 X1
- SA7 X1+B1
- SX6 A6 OUT = FIRST
- SX7 X1+B2 IN = FIRST+2
- SA6 A1+B2
- SA7 A1+B1
- WRITECW X2,R WRITE EOF
- EQ CDFX RETURN
- * PROCESS INPUT BLOCK.
- CDF3 SX0 B1 INDICATE INPUT BLOCK TRANSFERRED
- SA4 A0 CRACK CONTROL WORD HEADER
- SX2 5
- SX7 X4+4
- IX7 X7/X2 CALCULATE WORD COUNT
- AX4 36
- SB6 X7
- SA2 EORF CHECK FOR PREVIOUS EOR
- SB7 X4 PRU SIZE
- ZR X2,CDF6 IF PREVIOUS BLOCK NOT EOR
- SB4 A0+B1
- NE B4,B5,CDF4 IF NO WRAP AROUND
- SB4 CBUF SET FIRST
- CDF4 ZR B6,CDF6 IF ZERO LENGTH RECORD
- MX6 12
- SA1 B4 GET RECORD NAME
- BX6 X6*X1
- LX6 12
- SX6 X6-7700B
- NZ X6,CDF5 IF NOT 77 TABLE
- SB3 B4+B1
- SA1 B4+B1
- NE B3,B5,CDF5 IF NO WRAP AROUND
- SA1 CBUF
- CDF5 MX7 42
- BX7 X7*X1
- SA7 CDFA+1 ENTER NAME IN MESSAGE
- MESSAGE A7-B1,1 DISPLAY RECORD NAME
- CDF6 SB4 A0+B6 ADVANCE POINTER
- SX7 B6-B7 NO EOR IF FULL BLOCK
- SB4 B4+B2 SKIP CONTROL WORDS
- SB3 B4-B5
- LT B4,B5,CDF7 IF NO WRAP AROUND
- SB4 B3+CBUF
- CDF7 SX6 B4
- SA7 EORF SAVE EOR FLAG
- SA1 A0 GET CONTROL WORD HEADER
- NG X1,CDF15 IF ERROR OCCURRED ON THIS BLOCK
- * TRANSFER BLOCK TO OUTPUT.
- SA6 O+2 ADVANCE OUTPUT IN POINTER
- SB0 0
- SA0 B4+ ADVANCE INPUT PSEUDO OUT POINTER
- * CHECK FOR REINITIATE CONTROL WORD WRITE.
- CDF8 SA2 O CHECK OUTPUT FILE STATUS
- LX2 59-0
- SA1 A2+B2
- PL X2,CDF10 IF BUFFER BUSY
- SA2 A1+1 CHECK BUFFER THRESHOLD
- SX3 CBUFL/3
- IX1 X1-X2 (IN-OUT)
- IX2 X1-X3 (IN-OUT) - 1/3(BUFFER SIZE)
- ZR X1,CDF10 IF BUFFER EMPTY
- PL X1,CDF9 IF IN .GT. OUT
- LX3 1
- SB0 0
- IX2 X3+X1 2/3(BUFFER SIZE) - (OUT-IN)
- CDF9 NG X2,CDF10 IF BUFFER THRESHOLD NOT REACHED
- WRITECW O REINITIATE CONTROL WORD WRITE
- * CHECK FOR OUTPUT BLOCK WRITTEN.
- CDF10 SA1 O+3 CHECK OUTPUT OUT = INPUT OUT
- SA2 I+3
- IX3 X1-X2
- ZR X3,CDF11 IF BLOCK NOT WRITTEN
- BX6 X1
- SX0 1 INDICATE OUTPUT BLOCK COMPLETE
- SA6 I+3 UPDATE INPUT OUT = OUTPUT OUT
- * CHECK FOR REINITIATE CONTROL WORD READ.
- CDF11 SA4 I CHECK INPUT FILE STATUS
- LX4 59-0
- SA1 A4+B2
- PL X4,CDF14 IF BUFFER BUSY
- LX4 59-3-59+0
- SA2 A1+B1
- NG X4,CDF14 IF EOF/EOI ENCOUNTERED
- SX3 CBUFL/3 CHECK BUFFER THRESHOLD
- IX1 X1-X2 (IN-OUT)
- IX2 X3+X1 1/3(BUFFER SIZE) + (IN-OUT)
- ZR X1,CDF13 IF BUFFER EMPTY
- NG X1,CDF12 IF OUT .GT. IN
- LX3 1
- IX2 X1-X3 (IN-OUT) - 2/3(BUFFER SIZE)
- CDF12 PL X2,CDF14 IF BUFFER THRESHOLD NOT REACHED
- CDF13 READCW I,17B INITIATE CONTROL WORD READ TO EOF
- * CHECK FOR RECALL.
- CDF14 NZ X0,CDF1 IF INPUT AND/OR OUTPUT BLOCKS TRANSFERRED
- RECALL WAIT FOR DATA TRANSFER
- EQ CDF1 CHECK FOR INPUT BLOCKS
- * PROCESS PARITY ERROR.
- CDF15 SX1 PMEF PROCESS MASS STORAGE ERROR
- SYSTEM SPC,,X1 CALL *1IS*
- SA1 PMEF
- ZR X1,CDF16 IF *SYSTEM* REQUEST PERFORMED
- RECALL
- EQ CDF15 RETRY *SYSTEM* REQUEST
- CDF16 ABORT
- CDFA DATA 10H COPYING
- CON 0,0
- CDFB VFD 24/100B,36/0 EOF CONTROL WORDS
- VFD 12/17B,48/0
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMCCIO
- *CALL COMCSYS
- SPACE 4,10
- ** BUFFERS.
- USE BUFFERS
- CBUF BSS 0
- RFL= EQU CBUF+CBUFL+4
- TITLE PRESET.
- PRS SPACE 4,10
- ** PRS - PRESET PROGRAM.
- *
- * ENTRY (B1) = 1.
- *
- * EXIT (B2) = 2.
- *
- * USES A - 1, 2, 3, 4, 5, 6, 7.
- * B - 2, 3, 7.
- * X - ALL.
- *
- * CALLS DXB, *1IS*.
- *
- * MACROS ABORT, GETSPS, MESSAGE, READ, RECALL, REWIND, SKIPB,
- * SYSTEM.
- PRS SUBR ENTRY/EXIT
- GETSPS CHECK USER ACCESS
- SA1 ACTR GET ARGUMENT COUNT
- SA2 I
- SB7 X1
- ZR B7,PRS2 IF NO ARGUMENTS
- SB7 B7-B1
- NE B7,B1,PRS6 IF ILLEGAL ARGUMENT COUNT
- * PROCESS INPUT FILE NAME.
- R= A5,ARGR INPUT FILE NAME
- MX0 42
- SX4 3RSDF
- BX7 X0*X5
- LX4 42
- ZR X7,PRS1 IF NULL NAME (DEFAULT TO *SYSTEM*)
- BX4 X7-X4
- SX3 X2
- ZR X4,PRS6 IF FILE NAME CONFLICT
- BX7 X7+X3
- SA7 A2
- * PROCESS EST ORDINAL.
- PRS1 SA5 A5+B1 GET NEXT ARGUMENT
- LX5 12
- SX2 X5
- BX5 X5-X2
- SX2 X2-2REQ
- SB7 0
- NZ X2,PRS6 IF ILLEGAL PARAMETER
- RJ DXB CONVERT EST ORDINAL
- NZ X4,PRS6 IF CONVERSION ERROR
- SA6 O+5 SET EST ORDINAL IN *SDF* FET
- PRS2 R= X7,2
- SX1 VIFF VALIDATE INSTALL FILE
- R= A7,ARGR
- SYSTEM SPC,,X1 CALL *1IS*
- SA1 VIFF
- ZR X1,PRS2.1 IF *SYSTEM* REQUEST PERFORMED
- RECALL
- EQ PRS2 RETRY *SYSTEM* REQUEST
- PRS2.1 SB2 B1+B1
- RECALL ARGR WAIT *1IS* COMPLETE
- EREXIT CDF15 SET ERROR EXIT PROCESSOR ADDRESS
- SX7 B2
- SX3 B1
- LX7 29-1 POSITION RANDOM REWRITE FLAG
- BX6 X3+X7
- SA6 O+6 SET RANDOM REWRITE REQUEST
- * READ DIRECTORY RECORD ON INSTALL FILE.
- SKIPB I,2,R BACKSPACE ACROSS EOF AND DIRECTORY
- SA1 I+6
- BX6 X1
- AX6 30
- PRS3 SX7 TBUF SET IN = FIRST
- SA6 I+6 SET RANDOM ADDRESS FOR READ
- SA7 X2+B2
- SA6 A6+B1
- READ X2,R
- SA4 X2+B2 IN POINTER
- SA3 A4+B1
- SA1 X3 CHECK FIRST WORD OF RECORD
- LX1 18
- SX6 X1-770000B
- LX1 6
- SB3 X1+B1
- NZ X6,PRS7 IF NOT 7700 (PRFX) TABLE
- SX7 X1-16B
- NZ X7,PRS7 IF TABLE WORD COUNT INCORRECT
- SA5 X3+B3 CHECK RECORD TYPE
- LX5 18
- SX7 X5-700000B
- SA1 X2
- SA3 X3+B1
- NZ X7,PRS7 IF NOT OPLD RECORD
- LX1 59-4 CHECK BUFFER STATUS
- MX0 42+12
- PL X1,PRS7 IF NOT EOR (BUFFER TOO SMALL)
- SX6 10B
- LX0 12
- BX6 X3+X6 DIRECTORY NAME + RECORD TYPE OPLD
- SA5 A5-B1
- SA6 X4 STORE SEARCH PARAMETER AT (IN)
- * SEARCH DIRECTORY FOR FIRST OPLD ENTRY.
- PRS4 BX7 X0*X3
- SA5 A5+2 GET DIRECTORY ENTRY
- BX3 X5-X6
- NZ X7,PRS4 IF NOT DIRECTORY OPLD ENTRY
- SX3 A5-B2
- BX6 X4-X3
- ZR X6,PRS7 IF NO OPLD ENTRY FOR DIRECTORY
- SA1 I+7 RANDOM ADDRESS FOR CURRENT DIRECTORY
- SA5 A5-1
- IX7 X5-X1
- BX6 X5 RANDOM ADDRESS OF FIRST DIRECTORY
- NZ X7,PRS3 IF NOT FIRST DIRECTORY ON FILE
- SA2 PRSA
- SA3 A4+B1 SET UP *OSB* SEARCH
- BX6 X2
- SA1 A1-B1
- SB3 X3+B3
- AX1 30
- SX7 B2
- SA6 X4 STORE SEARCH PARAMETER AT (IN)
- SX2 B1
- IX1 X1+X7 RANDOM ADDRESS OF EOI
- SA5 B3-B1
- LX2 47 POSITION RANDOM ACCESS BIT
- BX3 X6
- * SEARCH DIRECTORY FOR *OSB* ENTRY.
- PRS5 BX7 X0*X3
- SA5 A5+2
- BX3 X5-X6
- NZ X7,PRS5 IF NO MATCH
- SX3 A5-2
- BX6 X4-X3
- SA5 A5-B1
- ZR X6,PRS7 IF *OSB* NOT FOUND
- LX5 36
- BX6 X5+X1
- SA6 I+5 SAVE RELATIVE SECTOR ADDRESS OF *OSB*
- MX0 42
- BX0 -X2*X0 CLEAR RANDOM ACCESS BIT IN MASK
- SA1 A4-B1
- AX2 47-44 POSITION ERROR PROCESSING FLAG
- BX1 X0*X1
- SX7 CBUF RESET BUFFER POINTERS
- BX1 X1+X2
- BX6 X1+X7
- SA6 A1
- SA7 A1+B1
- SA7 A7+B1
- PRS5.1 R= X6,2
- SX1 IDFF INITIALIZE *SDF*
- R= A6,ARGR
- SYSTEM SPC,,X1 CALL *1IS*
- SA1 IDFF
- ZR X1,PRS5.2 IF *SYSTEM* REQUEST PERFORMED
- RECALL
- EQ PRS5.1 RETRY *SYSTEM* REQUEST
- PRS5.2 REWIND I REWIND INSTALL FILE
- RECALL ARGR WAIT *1IS* COMPLETE
- EQ PRSX RETURN
- PRS6 MESSAGE PRSB,0 * INSTALL - ARGUMENT ERROR.*
- ABORT
- PRS7 MESSAGE PRSC,0 * DEADSTART FILE FORMAT ERROR.*
- ABORT
- PRSA VFD 42/0LOSB,6/0,12/1
- PRSB DATA C* INSTALL - ARGUMENT ERROR.*
- PRSC DATA C* DEADSTART FILE FORMAT ERROR.*
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMCCPM
- *CALL COMCDXB
- SPACE 4,10
- TBUF BSS 0
- TBUFL EQU CBUF+CBUFL-TBUF
- SPACE 4,10
- END
cdc/nos2.source/opl871/install.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator