cdc:nos2.source:opl871:cpupfm
Table of Contents
CPUPFM
Table Of Contents
- [00011] CPUPFM - COPY INDIRECT ACCESS FILES.
- [00015] COPY INDIRECT ACCESS FILES.
- [00109] FETS AND STORAGE LOCATIONS.
- [00150] MAIN PROGRAM.
- [00243] SUBROUTINES.
- [00245] COS - CHECK OUTPUT FET STATUS,
- [00307] ERR - *REPRIEVE* ERROR PROCESSOR.
- [00322] DOF - DELETE ORIGINAL FILE.
- [00352] SBC - SINGLE BUFFER COPY.
- [00574] BUFFERS.
Source Code
- CPUPFM.txt
- IDENT CPUPFM,FWA
- ABS
- SST
- ENTRY CPF
- ENTRY DMP=
- ENTRY LIB=
- ENTRY MFL=
- ENTRY SSJ=
- ENTRY UTL=
- SYSCOM B1
- TITLE CPUPFM - COPY INDIRECT ACCESS FILES.
- *COMMENT CPUPFM - COPY INDIRECT ACCESS FILES.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- CPF SPACE 4,10
- *** CPUPFM - COPY INDIRECT ACCESS FILES.
- *
- * R. C. SCHMITTER. 84/03/28.
- SPACE 4,10
- *** *CPUPFM* IS CALLED BY *PFM* TO PERFORM THE COPY OF AN
- * INDIRECT ACCESS FILE FOR *GET*, *OLD*, *SAVE*, *REPLACE*
- * AND *APPEND* OPERATIONS IF THE FILE LENGTH IS GREATER
- * THAN THE THREHOLD DEFINED IN *COMSPFM*. THE ONLY ENTRY
- * IS BY *DMP=* CALL TO *CPF*. *CPUPFM* CANNOT BE CALLED
- * AT THE COMMAND LEVEL.
- SPACE 4,10
- *** COMMAND FORMAT.
- *
- * *SPCW* FORMAT FROM *PFM*.
- *
- *T 18/ *CPF*,6/ 30B,18/ 0,18/ COMMAND CODE
- *
- * *CPUPFM* REPLY TO *PFM*.
- *
- *T 24/ 0,3/ 1,1/E ,8/ EC,24/ 0
- *
- * E = ERROR IDLE FLAG. IF SET, ERROR IDLE STATUS IS
- * TO BE SET FOR THE MASTER DEVICE BY *PFM*.
- *
- * THIS FLAG IS SET WHEN THE FILE TRANSFER IS
- * INCOMPLETE FOR *APPEND*, *REPLACE*, AND *SAVE*
- * COMMANDS. THIS CONDITION CAN OCCUR WITH
- * *TRACK LIMIT*, *PFM ABORTED*, AND *MASS STORAGE
- * ERROR* ERROR CODES .
- *
- * THIS FLAG IS SET WITH *FILE LENGTH ERROR* ERROR
- * CODE WHEN THERE IS A LOGICAL ERROR IN THE LENGTH
- * OF THE FILE.
- *
- * EC = *PFM* ERROR CODE.
- * DTE(17) - DATA TRANSFER ERROR.
- * TKL(31) - TRACK LIMIT.
- * FLE(32) - FILE LENGTH ERROR.
- * ABT(36) - PFM ABORTED.
- * MSE(37) - MASS STORAGE ERROR.
- * RTR(127) - RETRY REQUEST.
- *
- *
- * THE *DMPN* BLOCK IN NFL IS SET BY *PFM* WITH THE FOLLOWING
- * FORMAT.
- *
- *T 42/ LFN,18/ FLAGS
- *T, 12/ ,24/ APFL, 24/ LF
- *T, 36/ ,24/ RANDOM ADDRESS
- *T, 60/ SRB (WORD 0)
- *T, 60/ SRB (WORD 1)
- *T, 60/ SRB (WORD 2)
- *T, 60/ SRB (WORD 3)
- *
- * LFN = LOCAL FILE NAME.
- * FLAGS = 17/ ,1/ FGIA
- * FGIA = INDIRECT ALLOCATION INTERLOCK HELD.
- * LF = TOTAL LENGTH OF FILE TO BE TRANSFERRED (BOTH PERMANENT
- * AND LOCAL FOR *APPEND*).
- * APFL = LENGTH OF THE LOCAL FILE FOR *APPEND*.
- * = 0, IF NOT *APPEND*.
- * SRB = SPECIAL REQUEST BLOCK FOR THE ORIGINAL FILE FOR
- * *APPEND*.
- *
- * IF *APFL* = *LF*, THEN THE *APPEND* IS AT THE END OF
- * THE INDIRECT CHAIN.
- SPACE 4,10
- * COMMON DECKS.
- *CALL COMCMAC
- *CALL COMCCMD
- *CALL COMSMLS
- *CALL COMSPFM
- *CALL COMSPFU
- *CALL COMSPRD
- *CALL COMSRPV
- *CALL COMSSSD
- *CALL COMSSSJ
- SPACE 4,10
- * MACROS.
- DELPFC MACRO LFN,SRB
- MACREF DELPFC
- =4 LFN,,,,SRB,,,,,,,,27B
- DELPFC ENDM
- SPACE 4,10
- **** ASSEMBLY CONSTANTS.
- BUFL EQU 10030B BUFFER LENGTH FOR SINGLE BUFFER COPY
- EIDF EQU 400B ERROR IDLE FLAG
- ****
- TITLE FETS AND STORAGE LOCATIONS.
- ORG 120B
- SPACE 4,10
- FWA BSS 0
- * FETS.
- I BSS 0 INPUT FILE
- INPUT FILEB BUF,BUFL,FET=10D,EPR
- O BSS 0 OUTPUT FILE
- OUTPUT FILEB BUF,BUFL,FET=16D,EPR,UPR
- SPACE 4,10
- * STORAGE LOCATIONS.
- APFL CON 0 APPEND ORIGINAL FILE LENGTH
- ERRF CON 0 ERROR FLAG
- FTCF CON 0 FILE TRANSFER COMPLETE FLAG
- LENG CON 0 FILE LENGTH
- LFAL CON 0 LOCAL FILE ACCESS LEVEL
- LFNM CON 0 LOCAL FILE NAME
- PFMC CON 0 *PFM* COMMAND CODE
- SPACE 4,10
- * SPECIAL *PFM* COMMUNICATION FILE NAMES.
- APFN VFD 42/7L"APF",18/3 APPEND FILE NAME
- ILKN VFD 42/7L"ILK",18/3 INTERLOCK FILE NAME
- PFNM VFD 42/7L"PFN",18/3 PERMANENT FILE NAME
- SPACE 4,10
- * *SSJ=* SPECIAL ENTRY POINT PARAMETER BLOCK.
- SSJ= VFD 12/0,24/-0,12/PFCS,12/IRSI
- BSSZ SSJL-1
- LIB= EQU 0 ALLOW WRITE ON EXECUTE-ONLY FILE
- UTL= EQU 0 ALLOW ACCESS TO SUSPECT DEVICE
- TITLE MAIN PROGRAM.
- * MAIN PROGRAM.
- CPF SB1 1 ENTRY
- RJ PRS PRESET
- SA1 APFL
- SA5 LENG GET FILE LENGTH
- ZR X1,CPF2 IF NOT *APPEND*
- IX5 X5-X1 SET ORIGINAL FILE LENGTH
- ZR X5,CPF1 IF *APPEND* AT END OF CHAIN
- * PROCESS COPY OF ORIGINAL FILE (*APPEND* ONLY).
- SA1 APFN SET INPUT FILE NAME
- BX6 X1
- SA6 I
- RJ SBC COPY PERMANENT FILE
- NZ X1,CPF4 IF ERROR DETECTED
- SA1 I+FTFT RESET BUFFER POINTERS
- SX6 X1
- SA6 A1+B1
- SA6 A6+B1
- SA1 O+FTFT
- SX6 X1
- SA6 A1+B1
- SA6 A6+B1
- SA1 LFNM SET LOCAL FILE NAME
- BX6 X1
- SA6 I
- CPF1 SA5 APFL GET FILE LENGTH
- * PROCESS FILE COPY (ALL FUNCTIONS).
- CPF2 RJ SBC COPY FILE
- NZ X1,CPF4 IF ERROR DETECTED
- SX6 B1 SET FILE TRANSFER COMPLETE
- SA6 FTCF
- SA1 O+FTFT CLEAR USER PROCESSING IN OUTPUT FET
- MX0 59
- LX0 45
- BX6 X0*X1
- SA6 A1
- SA1 LFNM REWIND LOCAL FILE
- BX6 X1
- SA6 O
- REWIND O,R
- RJ COS CHECK OUTPUT FET STATUS
- NZ X1,CPF4 IF ERROR DETECTED
- RJ DOF DELETE ORIGINAL FILE
- SA1 ERRF
- NZ X1,CPF4 IF ERROR DETECTED
- * RETURN ALL *PFM* FILES.
- CPF3 RECALL I
- RECALL O
- SA1 PFNM RETURN PERMANENT FILE
- BX6 X1
- SA6 O
- RETURN O,R
- SA1 ILKN RETURN INTERLOCK FILE
- BX6 X1
- SA6 O
- RETURN O,R
- SA1 APFL
- ZR X1,CPF4 IF NOT *APPEND*
- SA5 LENG
- IX5 X5-X1
- ZR X5,CPF4 IF *APPEND* TO END OF CHAIN
- SA1 APFN RETURN APPEND FILE
- BX6 X1
- SA6 O
- RETURN O,R
- * SET REPLY TO *PFM*.
- CPF4 SA1 ERRF GET ERROR FLAG
- SX6 B1
- LX6 33
- ZR X1,CPF6 IF NO ERROR DETECTED
- SA2 FTCF CHECK FILE TRANSFER COMPLETE FLAG
- SA3 PFMC CHECK COMMAND CODE
- NZ X2,CPF5 IF FILE TRANSFER COMPLETE
- SX2 X3-CCGT
- ZR X2,CPF5 IF *GET* COMMAND
- SX2 X3-CCOD
- ZR X2,CPF5 IF *OLD* COMMAND
- SX1 X1+EIDF SET ERROR IDLE FLAG
- CPF5 LX1 24 ADD ERROR FLAG TO REPLY
- BX6 X1+X6
- CPF6 SA6 SPPR SET *SPCW*
- ENDRUN
- TITLE SUBROUTINES.
- COS SPACE 4,20
- ** COS - CHECK OUTPUT FET STATUS,
- *
- * ENTRY (O) = OUTPUT FET.
- * (PFMC) = *PFM* FUNCTION.
- *
- * EXIT (X1) = 0 IF NO ERROR STATUS IN FET.
- * .NE. 0 IF ERROR SET IN FET.
- * (ERRF) = ERROR FLAG SET IF ERROR SET IN FET.
- * SET TO *RETRY REQUEST* FOR WRITE ERROR
- * ON *GET* AND *OLD* REQUESTS AND TO
- * *MASS STORAGE ERROR* FOR WRITE ERROR
- * ON OTHER REQUESTS.
- * SET TO *TRACK LIMIT* FOR FULL DISK ERROR.
- * SET TO *PFM ABORTED* FOR ANY OTHER ERROR.
- *
- * USES X - 0, 1, 2, 6, 7.
- * A - 1, 2, 6, 7.
- COS SUBR ENTRY/EXIT
- SA2 O OUTPUT FET
- BX1 X1-X1
- LX2 59-0
- PL X2,COSX IF FET BUSY
- LX2 59-13-59+0
- NG X2,COS1 IF FATAL ERROR
- LX2 59-11-59+13
- NG X2,COS2 IF PARITY ERROR
- LX2 59-10-59+11
- PL X2,COSX IF NO ERROR
- * PROCESS TRACK LIMIT ERROR.
- SX6 /ERRMSG/TKL *EQXXX,DNYY, TRACK LIMIT.*
- EQ COS3 SET ERROR FLAG
- * PROCESS FATAL ERROR.
- COS1 SX6 /ERRMSG/ABT *PFM ABORTED.*
- EQ COS3 SET ERROR FLAG
- * PROCESS PARITY ERROR.
- COS2 SA1 PFMC CHECK *PFM* FUNCTION
- SX6 /ERRMSG/RTR RETRY REQUEST
- SX2 X1-CCGT
- ZR X2,COS3 IF *GET*
- SX2 X1-CCOD
- ZR X2,COS3 IF *OLD*
- SX6 /ERRMSG/MSE *EQXXX,DNYY, MASS STORAGE ERROR.*
- * SET ERROR FLAG AND CLEAR ERROR CODE FROM FET.
- COS3 SA6 ERRF SET ERROR FLAG
- SA2 O CLEAR ERROR CODE FROM FET
- MX0 56
- LX0 10
- BX7 X0*X2
- SA7 A2
- BX1 X6
- EQ COSX RETURN WITH (X1) .NE. 0
- ERR SPACE 4,10
- ** ERR - *REPRIEVE* ERROR PROCESSOR.
- *
- *
- * EXIT (ERRF) = ERROR FLAG.
- * TO *CPF3* TO RETURN *PFM* COMMUNICATION FILES.
- ERR BSS 0 ENTRY
- SX6 /ERRMSG/ABT *PFM ABORTED.*
- SA6 ERRF SET ERROR FLAG
- EQ CPF3 RETURN COMMUNICATION FILES
- ERRA RPVBLK ERR REPRIEVE PARAMETER BLOCK
- DOF SPACE 4,10
- ** DOF - DELETE ORIGINAL FILE.
- *
- * EXIT *PFM* CALLED TO DELETE PFC ENTRY FOR ORIGINAL
- * FILE ON *APPEND* OPERATION.
- * (ERRF) = ERROR RETURNED FROM *PFM*.
- *
- * USES X - 0, 1, 2, 6, 7.
- * A - 1, 2, 6, 7.
- *
- * MACROS DELPFC.
- DOF SUBR ENTRY/EXIT
- SA1 APFL
- ZR X1,DOFX IF NOT *APPEND*
- SA2 LENG
- IX6 X1-X2
- ZR X6,DOFX IF *APPEND* AT END OF CHAIN
- DELPFC O,SPPR+4
- SA1 O CHECK FOR ERROR
- MX0 -8
- LX0 10
- BX6 -X0*X1
- ZR X6,DOFX IF NO ERROR
- BX7 X0*X1 CLEAR ERROR CODE FROM FET
- SA7 A1
- LX6 0-10
- SA6 ERRF SAVE ERROR CODE
- EQ DOFX RETURN
- SBC SPACE 4,30
- ** SBC - SINGLE BUFFER COPY.
- *
- * ENTRY (X5) = LENGTH OF FILE.
- *
- * EXIT (X1) = 0 IF FILE COPY COMPLETE.
- * .NE. 0 IF FILE COPY INCOMPLETE.
- * (ERRF) = ERROR FLAG.
- *
- * ERROR WHEN READ PARITY ERROR DETECTED -
- * IF CORRECT SECTOR WAS READ, SET *DATA TRANSFER ERROR*
- * AND CONTINUE TRANSFER.
- * IF INCORRECT SECTOR WAS READ, SET *FILE LENGTH
- * ERROR* AND PAD OUTPUT FILE WITH EOF-S.
- *
- * USES X - ALL.
- * A - 0, 1, 2, 3, 4, 6.
- *
- * CALLS COS.
- *
- * MACROS READCW, RECALL, WRITECW, WRITEW.
- *
- * PROGRAMMER-S NOTE - WHEN CHECKING FOR FET COMPLETE AND
- * DATA IN THE BUFFER, THE FET STATUS MUST BE PICKED UP
- * BEFORE THE BUFFER POINTER.
- *
- * THIS ROUTINE IS ADAPTED FROM *SBC* IN *COPYB*.
- SBC SUBR ENTRY/EXIT
- RECALL O
- WRITECW O,* PRESET CONTROL WORD WRITE
- SA2 I+FTOT
- SA0 X2+ INITIALIZE INPUT PSEUDO OUT POINTER
- BX0 X0-X0 INDICATE NO BLOCKS AVAILABLE OR COMPLETE
- EQ SBC9 INITIATE CONTROL WORD READ
- * CHECK FOR INPUT BLOCK AVAILABLE.
- SBC1 SA2 I CHECK INPUT FILE STATUS
- SA3 I+FTIN CHECK INPUT IN = PSEUDO OUT POINTER
- BX0 X0-X0 INDICATE NO BLOCKS AVAILABLE OR COMPLETE
- SX1 A0
- IX1 X3-X1
- LX2 59-0
- NZ X1,SBC2 IF INPUT BLOCK AVAILABLE
- PL X2,SBC4 IF BUFFER BUSY
- LX2 59-9-59+0
- NG X2,SBC11 IF EOI
- LX2 59-13-59+9
- PL X2,SBC1.1 IF NO FATAL ERROR
- SX1 /ERRMSG/ABT *PFM ABORTED.*
- BX6 X1
- SA6 ERRF SET ERROR FLAG
- EQ SBCX RETURN WITH (X1) .NE. 0
- SBC1.1 LX2 59-11-59+13
- PL X2,SBC4 IF NO READ PARITY ERROR STATUS IN FET
- SX7 /ERRMSG/DTE *DATA TRANSFER ERROR*
- SA7 ERRF
- SA1 I+6 CHECK DETAILED ERROR CODE
- LX1 59-11
- PL X1,SBC1.2 IF CORRECT SECTOR READ
- SX6 B1 SET LENGTH ERROR DUE TO HARDWARE FAILURE
- SA6 SBCC
- EQ SBC11 PAD FILE WITH EOF-S
- SBC1.2 MX6 1 CLEAR PARITY ERROR BIT IN FET
- BX6 X2-X6
- LX6 59-59-59+11
- SA6 A2
- EQ SBC4 CONTINUE TRANSFER
- * PROCESS INPUT BLOCK.
- SBC2 SX0 B1 INDICATE INPUT BLOCK TRANSFERRED
- SA3 SBCB INCREMENT BLOCK COUNT
- SX4 B1 INDICATE DATA TRANSFERRED
- IX6 X3+X4
- SA4 A0 CRACK CONTROL WORD HEADER
- MX7 -24
- SA6 A3
- BX7 -X7*X4 BYTE COUNT
- SX2 4 CALCULATE WORD COUNT
- IX7 X7+X2
- SX2 X2+B1
- IX7 X7/X2
- SA2 I+FTLM
- SX3 X7+2 ADVANCE OVER BLOCK AND CONTROL WORDS
- SX1 A0
- SX2 X2+
- IX2 X2-X1
- IX6 X3-X2
- NG X6,SBC3 IF NO WRAP AROUND
- SA2 I+FTFT FIRST
- BX3 X6
- SX1 X2
- SBC3 IX6 X1+X3
- SA1 A0 GET CONTROL WORD HEADER
- PL X1,SBC3.1 IF NO READ ERROR OCCURRED ON THIS BLOCK
- SX7 /ERRMSG/DTE *DATA TRANSFER ERROR*
- SA7 ERRF
- * TRANSFER BLOCK TO OUTPUT.
- SBC3.1 ZR X5,SBC13 IF SUPPLIED PRU COUNT NOT ALREADY WRITTEN
- SX1 B1 DECREMENT PRU COUNT
- IX5 X5-X1
- SA6 O+FTIN ADVANCE OUTPUT IN POINTER
- SA0 X6 ADVANCE INPUT PSEUDO OUT POINTER
- * CHECK FOR REINITIATE CONTROL WORD WRITE.
- SBC4 SA1 O
- LX1 59-0
- PL X1,SBC6 IF BUFFER BUSY
- RJ COS CHECK OUTPUT FILE STATUS
- NZ X1,SBCX IF ERROR OCCURRED
- SA1 O+FTIN
- SA2 A1+B1
- SX3 BUFL/3
- IX1 X1-X2 (IN-OUT)
- IX2 X1-X3 (IN-OUT) - 1/3(BUFFER SIZE)
- ZR X1,SBC6 IF BUFFER EMPTY
- PL X1,SBC5 IF IN .GT. OUT
- LX3 1
- IX2 X3+X1 2/3(BUFFER SIZE) - (OUT-IN)
- SBC5 NG X2,SBC6 IF BUFFER THRESHOLD NOT REACHED
- WRITECW O REINITIATE CONTROL WORD WRITE
- * CHECK FOR OUTPUT BLOCK WRITTEN.
- SBC6 SA1 O+FTOT CHECK OUTPUT OUT = INPUT OUT
- SA2 I+FTOT
- IX3 X1-X2
- ZR X3,SBC7 IF BLOCK NOT WRITTEN
- BX6 X1
- SX0 X0+1 INDICATE OUTPUT BLOCK COMPLETE
- SA6 A2+ UPDATE INPUT OUT = OUTPUT OUT
- * CHECK FOR REINITIATE CONTROL WORD READ.
- SBC7 SA4 I CHECK INPUT FILE STATUS
- LX4 59-0
- PL X4,SBC10 IF BUFFER BUSY
- SA1 I+FTIN
- LX4 59-11-59+0
- NG X4,SBC10 IF PARITY ERROR STATUS IN FET
- LX4 59-3-59+11
- NG X4,SBC10 IF EOF/EOI ENCOUNTERED
- LX4 59-13-59+3
- NG X4,SBC10 IF FATAL ERROR STATUS IN FET
- SX3 BUFL/3 CHECK BUFFER THRESHOLD
- SA2 A1+B1
- IX1 X1-X2 (IN-OUT)
- IX2 X3+X1 1/3(BUFFER SIZE) + (IN-OUT)
- ZR X1,SBC9 IF BUFFER EMPTY
- NG X1,SBC8 IF OUT .GT. IN
- LX3 1
- IX2 X1-X3 (IN-OUT) - 2/3(BUFFER SIZE)
- SBC8 PL X2,SBC10 IF BUFFER THRESHOLD NOT REACHED
- SBC9 READCW I,0 INITIATE CONTROL WORD READ TO EOI
- * CHECK FOR RECALL.
- SBC10 NZ X0,SBC1 IF INPUT AND/OR OUTPUT BLOCKS TRANSFERRED
- RECALL WAIT FOR DATA TRANSFER
- EQ SBC1 CHECK FOR INPUT BLOCKS
- * PROCESS EOI.
- SBC11 ZR X5,SBC14 IF NO FILE LENGTH ERROR
- * PROCESS INPUT FILE TOO SHORT.
- SBC12 WRITEW O,SBCA,B1+B1 PAD FILE WITH EOF
- SX1 B1
- IX5 X5-X1
- NZ X5,SBC12 IF FILE NOT YET CORRECT LENGTH
- * PROCESS INPUT FILE TOO LONG.
- SBC13 SX5 -1
- * FLUSH OUTPUT BUFFER.
- SBC14 RECALL O
- RJ COS CHECK OUTPUT FILE STATUS
- NZ X1,SBCX IF ERROR OCCURRED
- SA1 O+FTIN CHECK IN = OUT
- SA2 A1+B1
- IX1 X1-X2
- ZR X1,SBC15 IF OUTPUT BUFFER EMPTY
- WRITECW O,R FLUSH OUTPUT BUFFER
- RJ COS CHECK OUTPUT FILE STATUS
- NZ X1,SBCX IF ERROR OCCURRED
- * PROCESS FILE LENGTH ERROR.
- SBC15 ZR X5,SBCX IF NO FILE LENGTH ERROR
- SA2 SBCC
- SX6 /ERRMSG/FLE *FILE LENGTH ERROR*
- NZ X2,SBC16 IF ERROR DUE TO HARDWARE FAILURE
- SX6 X6+EIDF SET ERROR IDLE FLAG
- SBC16 SA6 ERRF SET ERROR FLAG
- BX1 X6
- EQ SBCX RETURN WITH (X1) = 0
- SBCA VFD 60/0 CONTROL WORD EOF
- VFD 12/17B,48/0
- SBCB CON 0 BLOCK COUNT
- SBCC CON 0 LENGTH ERROR DUE TO HARDWARE FAILURE
- SPACE 4,10
- * COMMON DECKS.
- *CALL COMCCIO
- *CALL COMCCPM
- *CALL COMCPFM
- *CALL COMCSYS
- *CALL COMCWTW
- TITLE BUFFERS.
- * BUFFERS.
- USE LITERALS
- BUF EQU * BUFFER FOR SINGLE BUFFER COPY
- BUFLWA EQU BUF+BUFL+4 END OF BUFFERS
- PRS TITLE PRESET.
- ** PRESET.
- *
- * ENTRY PARAMETER BLOCK FROM *PFM* AT *SPPR*.
- *
- * EXIT INPUT AND OUTPUT FILE NAMES SET.
- * RANDOM BITS SET IN OUTPUT FET.
- * (APFL) = APPEND FILE LENGTH.
- * (LENG) = TOTAL FILE LENGTH TO COPY.
- * (SPPR) PRESET WITH ERROR REPLAY FOR *PFM*.
- * (LFNM) = LOCAL FILE NAME.
- *
- * USES X - ALL.
- * A - 1, 2, 6, 7.
- *
- * MACROS ABORT, MESSAGE, REPRIEVE.
- PRS SUBR ENTRY/EXIT
- SA1 ACTR
- ZR X1,PRS1 IF NOT COMMAND CALL
- MESSAGE (=C*INCORRECT COMMAND.*),,R
- ABORT
- PRS1 REPRIEVE ERRA,SET,277B SET EXTENDED REPRIEVE
- SA1 SPPR GET COMMAND CODE
- MX0 -18
- BX6 -X0*X1
- SA6 PFMC SAVE COMMAND CODE
- SA1 A1+B1 GET LOCAL FILE NAME
- BX5 -X0*X1 SAVE INTERLOCK FLAG
- BX1 X0*X1
- SX6 3
- BX6 X1+X6
- BX1 X6
- SA6 LFNM
- * SET FILE NAMES IN FETS.
- SA2 PFNM GET PERMANENT FILE NAME
- SA4 PFMC CHECK COMMAND CODE
- SX3 X4-CCGT
- ZR X3,PRS2 IF *GET*
- SX3 X4-CCOD
- ZR X3,PRS2 IF *OLD*
- BX1 X2 SWITCH FILE NAMES
- BX2 X6
- PRS2 BX6 X2 SET FILE NAMES
- BX7 X1
- SA6 I
- SA7 O
- SA1 SPPR+2 GET FILE LENGTHS
- MX0 -24
- BX6 -X0*X1
- AX1 24
- BX7 -X0*X1
- SA6 LENG
- SA7 APFL
- SA1 PRSA PRESET ERROR REPLY
- BX6 X1
- SA6 SPPR
- SA4 PFMC CHECK COMMAND CODE
- SX2 X4-CCGT
- ZR X2,PRSX IF *GET*
- SX2 X4-CCOD
- ZR X2,PRSX IF *OLD*
- SX1 EIDF SET ERROR IDLE FLAG IN ERROR REPLY
- LX1 24
- BX6 X1+X6
- SA6 A6
- * SET RANDOM REWRITE BITS.
- R= X6,FGIA
- BX5 X6*X5
- NZ X5,PRSX IF SEQUENTIAL WRITE (AT END OF CHAIN)
- SX6 B1 SET RANDOM ACCESS BIT
- LX6 47-0
- SA1 O+1
- BX6 X6+X1
- SA6 A1
- SX6 B1 SET RANDOM REWRITE REQUEST
- LX6 29-0
- SA1 O+6
- BX6 X1+X6
- SA2 SPPR+3 GET RANDOM ADDRESS
- BX6 X2+X6
- SA6 A1
- EQ PRSX RETURN
- PRSA VFD 24/0,3/1,1/0,8//ERRMSG/ABT,24/0 ERROR REPLY
- SPACE 4,10
- ERRNG MFL=-* OVERFLOW PAST END OF BUFFERS
- SPACE 4,10
- IDENT
- .1 SET BUFLWA+77B CALCULATE FIELD LENGTH
- * SET IGNORE RESOURCE LIMITS FOR PROGRAM EXECUTION.
- * FORCE *OVERRIDE REQUIRED* BIT TO BE SET.
- * PREVENT *DMP=* ON COMMAND CALL.
- * DO NOT RELEASE EXTRA FIELD LENGTH ON LOAD.
- DMP= EQU .1/100B+320000B
- MFL= EQU .1/100B*100B
- SPACE 4
- END
cdc/nos2.source/opl871/cpupfm.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator