cdc:nos2.source:opl871:dio
Table of Contents
DIO
Table Of Contents
- [00005] DIO - DEADSTART I/O PROCESSOR.
- [00041] DIRECT LOCATION ASSIGNMENTS.
- [00082] MACRO DEFINITIONS.
- [00084] JMP - THREADED JUMP.
- [00102] PRESET.
- [00142] LRO - LOAD RECOVERY OVERLAY.
- [00159] MAIN ROUTINE.
- [00170] TFPA - TABLE OF FUNCTION PROCESSORS.
- [00184] FUNCTION PROCESSORS.
- [00186] DPP - DROP PP.
- [00201] IPP - IDLE PP UNTIL (IR+4) .NE. 0.
- [00223] IPR - INITIALIZE PP RESIDENT.
- [00236] LNO - LOAD NEXT OVERLAY.
- [00245] LPR - LOAD PP RESIDENT.
- [00258] LSL - LOAD SYSTEM LIBRARY.
- [00300] LTD - LOAD SELECTED TEXT DECK.
- [00318] RTB - READ TAPE BLOCK.
- [00335] SUBROUTINES.
- [00337] CBN - CHECK BLOCK NUMBER.
- [00381] CDD - CONNECT DEADSTART DISK.
- [00398] CRI - CHECK PP RESIDENT INITIALIZED.
- [00409] CSR - CHECK OR SKIP CURRENT RECORD.
- [00433] DSM - DISPLAY STATUS MESSAGE.
- [00454] RNR - READ NEXT RECORD.
- [00473] RST - READ SYSTEM TAPE.
- [00504] WCB - WRITE CENTRAL BUFFER.
- [00573] SRP - SET READ PARAMETERS.
- [00648] WOC - WAIT OUTPUT REGISTER CLEAR.
- [00663] WOG - WAIT FOR OPERATOR GO.
- [00700] DISK/TAPE ROUTINES.
- [00702] BKS - BACKSPACE DEADSTART MEDIUM.
- [00745] GDS - GET DISK STATUS.
- [00757] GTS - GET TAPE STATUS.
- [00793] ITM - INITIATE TAPE MOTION.
- [00811] POS - POSITION MASS STORAGE.
- [00846] RDR - READ DISK RECORD.
- [00880] RDT - REWIND DEADSTART TAPE.
- [00894] RNS - READ NEXT SECTOR.
- [00968] RTR - READ TAPE RECORD.
- [01000] RTU - RELEASE TAPE UNIT.
- [01019] BUFFER RESIDENT PRESET.
- [01021] BRP - BUFFER RESIDENT PRESET.
- [01060] BUFFER RESIDENT PRESET SUBROUTINES.
- [01062] CAU - CHECK ATS UNIT.
- [01100] MCI - MODIFY CHANNEL INSTRUCTIONS.
- [01121] PSD - PRESET DRIVERS.
Source Code
- DIO.txt
- IDENT DIO,0
- PERIPH
- BASE M
- SST
- TITLE DIO - DEADSTART I/O PROCESSOR.
- *COMMENT DIO - DEADSTART I/O PROCESSOR.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- DIO SPACE 4,10
- ***** DIO - DEADSTART I/O PROCESSOR.
- *
- * P. D. HAAS. 78/08/04.
- DIO SPACE 4,10
- *** *DIO* IS THE CENTRALIZED MEANS OF READING DATA FROM
- * THE DEADSTART MEDIUM, BE IT TAPE OR DISK. THIS ALLOWS THE
- * OTHER DEADSTART TIME ROUTINES TO REMAIN MORE OR LESS
- * UNAWARE OF THE MEDIUM BEING READ. TO THIS END, 10B DISK
- * SECTORS WILL BE ASSEMBLED, IF DEADSTART IS FROM RMS, INTO
- * A FACSIMILE OF A TAPE PRU. COMMANDS ARE ISSUED TO *DIO*
- * VIA AN INTERCOMMUNICATIONS CHANNEL, ACCORDING TO A
- * PROTOCOL RESEMBLING THAT OF A 3000 TYPE TAPE CONTROLLER
- * AND A 6681. *DIO* IN THE DISPLAY CHANNEL PP FUNCTIONS AS
- * THE 6681, READING DATA FROM AN EXTERNAL EQUIPMENT, AND
- * RETURNING SAME TO THE REQUESTING PP.
- DIO SPACE 4,10
- *** OPERATOR MESSAGES.
- *
- * REFER TO OPERATORS GUIDE FOR INFORMATION AS TO CAUSE
- * OF ERROR AND RECOMMENDED CORRECTIVE ACTION.
- *
- * *SYSTEM TAPE PARITY ERROR.*
- *
- * *BLOCK SEQUENCE ERROR.*
- *
- * *CHXX, UNYY - SZZZZ.*
- DIO SPACE 4,10
- *CALL COMPMAC
- *CALL COMPCHM
- *CALL COMSDSL
- *CALL COMSMSP
- *CALL COMSPIM
- TITLE DIRECT LOCATION ASSIGNMENTS.
- DIO SPACE 4,10
- **** DIRECT LOCATION ASSIGNMENTS.
- ORG 0
- CON PRS-1 TRANSFER ADDRESS - 1
- BSS 16-*
- L1 BSS 1 SCRATCH
- L2 BSS 1 SCRATCH
- DT CON 0 895 DEADSTART READ FLAG
- ERRNZ DT-MP DIRECT CELL LOCATION MUST MATCH IN *OSB*
- UN BSS 4 PHYSICAL DISK ADDRESS
- BF CON 0 TAPE BACKSPACE FUNCTION
- RF CON 0 TAPE READ FUNCTION
- SF CON 0 TAPE STATUS FUNCTION
- LT BSS 1 LOGICAL TRACK FOR BACKSPACE
- LS BSS 1 LOGICAL SECTOR FOR BACKSPACE
- DM BSS 1 DEADSTART MEDIUM
- ST BSS 1 GENERAL STATUS
- RC BSS 1 ERROR RETRY COUNT
- WC BSS 1 WORD COUNT
- DH BSS 1 DEADSTART CHANNEL
- IH BSS 1 INTERCOMMUNICATIONS CHANNEL
- ZR CON 0 ZERO BYTE
- TM CON 0 TAPE MOTION FLAG
- CN BSS 5 CM WORD BUFFER
- ERRPL *-IR OVERFLOW CELLS DESTROYED BY RESIDENT
- BSS 100-*
- DN EQU 57 DECK NUMBER
- DP EQU 60 - 64 CM WORD BUFFER (5 LOCATIONS)
- BL EQU 65 PP BUFFER LIMIT
- BC EQU 66 - 67 BLOCK COUNT (2 LOCATIONS)
- ****
- * IN ORDER TO AVOID CONFLICTS BETWEEN *COMSMSP* AND THE
- * *CHTB* MACRO, *DC* IS CHANGED TO *DS*.
- DS EQU DC DEADSTART CHANNEL
- TITLE MACRO DEFINITIONS.
- SPACE 4,10
- ** JMP - THREADED JUMP.
- *
- *
- * JMP ADDR
- * ENTRY *ADDR* = JUMP ADDRESS.
- JMP MACRO ADDR
- IF -DEF,.ADDR,2
- NOREF .ADDR
- .ADDR MAX ADDR,*-40
- IFGT .ADDR,*-40
- UJN .ADDR
- .ADDR SET *-1
- ELSE 2
- .ADDR SET *
- LJM ADDR
- JMP ENDM
- TITLE PRESET.
- PRS SPACE 4,10
- ORG MSFW
- PRS BSS 0 ENTRY
- RJM BRP EXECUTE BUFFER RESIDENT PORTION OF PRESET
- * SEARCH FOR *SET* AND TRANSMIT TO PP0.
- PRS2 RJM RNR READ NEXT RECORD
- LDM BUF+5*1+1 CHECK NAME IN *PRFX* TABLE
- SHN 6
- LMM BUF+5*1+0
- LMC 3RTSE
- NJN PRS2 IF NOT *SET*
- LDD DH PASS CHANNEL DEFINITIONS TO *SET*
- STM BUF+5*20+T4
- LDD IH
- STM BUF+5*20+T5
- LDD DN PASS CONSOLE STATUS TO *SET*
- STM BUF+5*20+T2
- LCN 20 TRANSMIT *SET* TO PP0
- RAD WC
- SHN 2
- ADD WC
- OAM. BUF+5*20,CH
- LDD WC
- LMC MXRL/5
- NJN PRS3 IF *SET* DOES NOT EXCEED ONE TAPE PRU
- RJM RNR READ REMAINDER OF *SET*
- LDD WC
- ZJN PRS3 IF ZERO LENGTH PRU
- SHN 2
- ADD WC
- OAM. BUF,CH TRANSMIT REMAINDER OF *SET*
- PRS3 FJM. *,CH WAIT OUTPUT COMPLETE
- DCN. CH
- RJM RNR READ NEXT RECORD
- LJM DIO ENTER IDLE LOOP
- LRO SPACE 4,10
- ** LRO - LOAD RECOVERY OVERLAY.
- LRO BSS 0
- * LDC LRO CHECK NEXT RECORD
- LRO1 RJM CSR
- NJN LRO1 IF NOT OVERLAY
- LDM BUF+5*1+1
- SHN 6
- LMM BUF+5*1+0
- LMC 3RMRC
- NJN LRO1 IF NOT *RCM*
- DCN PC INDICATE FUNCTION COMPLETE
- LJM DIO RETURN
- SPACE 4,10
- ERRZR PC-12 ILLEGAL CHANNEL DEFINITION
- ERRPL *-PPFW PRESET OVERFLOWS DRIVER AREA
- TITLE MAIN ROUTINE.
- ORG PPFW
- DIO IAN PC INPUT REQUEST
- STD L1
- SBN MXDF
- PJN * IF ILLEGAL FUNCTION
- LDM TFPA,L1
- STD L2
- LJM 0,L2 PROCESS FUNCTION
- TFPA SPACE 4,10
- ** TFPA - TABLE OF FUNCTION PROCESSORS.
- TFPA INDEX
- INDEX DPPF,DPP DROP PP
- INDEX LPRF,LPR LOAD PP RESIDENT
- INDEX IPRF,IPR INITIALIZE PP RESIDENT
- INDEX RTBF,RTB READ TAPE BLOCK
- INDEX IPPF,IPP IDLE PP
- INDEX LSLF,LSL LOAD SYSTEM LIBRARY
- INDEX LNOF,LNO LOAD NEXT OVERLAY
- INDEX LTDF,LTD LOAD SELECTED TEXT DECK
- INDEX LROF,LRO LOAD RECOVERY OVERLAY
- INDEX MXDF
- TITLE FUNCTION PROCESSORS.
- DPP SPACE 4,10
- ** DPP - DROP PP.
- DPP BSS 0
- RJM RDT REWIND DEADSTART TAPE
- RJM RTU RELEASE TAPE UNIT
- RJM CRI CHECK RESIDENT INITIALIZED
- RJM WOC WAIT OUTPUT REGISTER CLEAR
- LDD DH RELEASE DEADSTART CHANNEL
- DCHAN
- DPPA DCN PC INDICATE FUNCTION ACCEPT
- * PSN (SYSTEM LIBRARY LOAD)
- MONITOR DPPM DROP PP
- LJM PPR EXIT TO PP RESIDENT
- IPP SPACE 4,10
- ** IPP - IDLE PP UNTIL (IR+4) .NE. 0.
- IPP BSS 0
- LDD IA CLEAR (IR+4)
- CRD IR
- RJM CRI CHECK RESIDENT INITIALIZED
- STD IR+4
- LDD IA
- CWD IR
- LDD DH RELEASE DEADSTART CHANNEL
- DCHAN
- DCN PC INDICATE FUNCTION ACCEPT
- IPP1 DELAY WAIT AWHILE
- LDD IA CHECK (IR+4)
- CRD IR
- LDD IR+4
- ZJN IPP1 IF IDLE NOT CLEARED
- LDD DH RESERVE DEADSTART CHANNEL
- RCHAN
- JMP DIO RETURN
- IPR SPACE 4,10
- ** IPR - INITIALIZE PP RESIDENT.
- IPR BSS 0
- DCN PC INDICATE FUNCTION ACCEPT
- LDN 1 SET NO PP DROP
- STD T1
- RJM MSFW+1 INITIALIZE RESIDENT
- SOM CRIA SET RESIDENT INITIALIZED
- LDD DH RESERVE DEADSTART CHANNEL
- RCHAN
- JMP DIO RETURN
- LNO SPACE 4,10
- ** LNO - LOAD NEXT OVERLAY.
- LNO BSS 0
- LDN 0 CHECK CURRENT RECORD
- LNO1 RJM CSR
- NJN LNO1 IF NOT OVERLAY
- LJM RTB TRANSMIT TAPE BLOCK
- LPR SPACE 4,10
- ** LPR - LOAD PP RESIDENT.
- LPR BSS 0
- DCN PC INDICATE FUNCTION ACCEPT
- LDN IR SKIP DIRECT LOCATIONS BELOW *IR*
- ACN PC
- IAM IR,PC
- LDC PPFW-IR INPUT PP RESIDENT
- IAM IR,PC
- DCN PC
- JMP DIO RETURN
- LSL SPACE 4,10
- ** LSL - LOAD SYSTEM LIBRARY.
- LSL BSS 0
- RJM RDT REWIND DEADSTART TAPE
- RJM CRI CHECK RESIDENT INITIALIZED
- STD BC+1 CLEAR BLOCK COUNT
- STD BC
- LDN DSCP MOVE TO DEADSTART CONTROL POINT
- STD CM+1
- MONITOR CCAM
- DCN PC INDICATE FUNCTION ACCEPT
- STM DPPA
- LSL2 LDD RA READ (RA+2)
- SHN 6
- ADN 2
- CRD CM
- LDD CM+4 SET FET ADDRESS
- STD IR+4
- ZJN LSL2 IF NOT YET DEFINED
- LDM BKSC ENABLE TAPE PARITY ERROR REPORTING
- STM BKSA
- LSL3 RJM GTS GET TAPE STATUS
- LPN 3
- LMN 1
- NJN LSL3 IF REWIND NOT COMPLETE
- * READ SYSTEM TAPE.
- RJM RST READ SYSTEM TAPE
- LDD RA
- SHN 6
- ADD IR+4
- CRD CM
- LDN 33 SET EOF STATUS
- STD CM+4
- LDD RA STORE EOF STATUS
- SHN 6
- ADD IR+4
- CWD CM
- LJM DPP DROP PP
- LTD SPACE 4,10
- ** LTD - LOAD SELECTED TEXT DECK.
- LTD BSS 0
- IAN PC
- RJM C2D CONVERT DECK NUMBER
- STD DN
- LDN 0
- UJN LTD2 CHECK CURRENT RECORD
- LTD1 LDM BUF+2 CHECK TEXT DECK NUMBER
- LMD DN
- ZJN RTB IF REQUESTED DECK FOUND
- LTD2 RJM CSR
- NJN LTD1 IF NOT BINARY RECORD
- STD WC
- * UJN RTB INDICATE DECK NOT FOUND
- RTB SPACE 4,10
- ** RTB - READ TAPE BLOCK.
- RTB BSS 0
- DCN PC INDICATE FUNCTION ACCEPT
- IJM *,PC IF CALLER NOT READY
- LDD WC OUTPUT RECORD LENGTH
- OAN PC
- ZJN RTB1 IF ZERO LENGTH RECORD
- SHN 2 CONVERT TO BYTE COUNT
- ADD WC
- FJM *,PC WAIT CHANNEL EMPTY
- OAM BUF,PC TRANSMIT RECORD
- RTB1 FJM *,PC WAIT TRANSMISSION COMPLETE
- DCN PC
- RJM RNR READ NEXT RECORD
- JMP DIO RETURN
- TITLE SUBROUTINES.
- CBN SPACE 4,10
- ** CBN - CHECK BLOCK NUMBER.
- *
- * ENTRY (WC) = WORD COUNT OF BLOCK.
- * (BC - BC+1) = EXPECTED BLOCK NUMBER OF BLOCK.
- *
- * EXIT BLOCK COUNT INCREMENTED.
- * MESSAGE ISSUED IF BLOCK SEQUENCE ERROR.
- *
- * USES BL.
- *
- * CALLS WOG.
- CBN2 AOD BC+1 ADVANCE BLOCK COUNT
- SHN -14
- RAD BC
- CBN SUBR ENTRY/EXIT
- LDD WC SET BLOCK LENGTH IN CONTROL WORD
- SHN 2
- ADD WC
- STM BUF-1
- CBNA ADC BUF SET PP BUFFER LIMIT
- * UJN CBNX (BLOCK CHECKING DISABLED)
- STD BL
- LDM 2,BL CHECK BLOCK NUMBER
- LMD BC+1
- NJN CBN1 IF NOT CORRECT BLOCK
- LDM 1,BL
- LMD BC
- ZJN CBN2 IF CORRECT BLOCK
- CBN1 LDC CBNB *BLOCK SEQUENCE ERROR*
- RJM WOG ISSUE MESSAGE AND WAIT OPERATOR GO
- LDM CBNC DISABLE FURTHER BLOCK CHECKING
- STM CBNA
- UJN CBNX EXIT
- CBNB DATA C*BLOCK SEQUENCE ERROR.*
- CBNC BSS 0
- LOC CBNA
- UJN CBNX
- LOC *O
- CDD SPACE 4,10
- ** CDD - CONNECT DEADSTART DISK.
- *
- * USES ST.
- *
- * CALLS DSM, GDS, POS.
- CDD2 RJM POS POSITION DISK
- CDD SUBR ENTRY/EXIT
- CDD1 RJM GDS GET DISK STATUS (CONNECT)
- LPC 2000
- ZJN CDD2 IF COUPLER NOT RESERVED
- STD ST
- RJM DSM DISPLAY STATUS MESSAGE
- UJN CDD1 LOOP
- CRI SPACE 4,10
- ** CRI - CHECK PP RESIDENT INITIALIZED.
- *
- * EXIT (A) = 0.
- CRI SUBR ENTRY/EXIT
- CRIA LDN 1
- * LDN 0 (PP RESIDENT INITIALIZED)
- ZJN CRIX IF RESIDENT INITIALIZED
- UJN * HANG PP
- CSR SPACE 4,10
- ** CSR - CHECK OR SKIP CURRENT RECORD.
- *
- * ENTRY (A) = 0 TO CHECK RECORD.
- * .NE. 0 TO SKIP RECORD.
- *
- * EXIT (A) = 0 IF BINARY RECORD (OVERLAY)
- *
- * USES T4.
- *
- * CALLS RNR.
- CSR SUBR ENTRY/EXIT
- ZJN CSR2 IF CHECKING CURRENT RECORD
- CSR1 LDD WC
- LMC TPLN/5 SET EOR STATUS
- STD T4
- RJM RNR READ NEXT BLOCK
- LDD T4
- ZJN CSR1 IF NOT NEXT RECORD
- CSR2 LDM BUF
- LMC 7700
- UJN CSRX RETURN
- DSM SPACE 4,10
- ** DSM - DISPLAY STATUS MESSAGE.
- *
- * ENTRY (ST) = GENERAL STATUS.
- *
- * CALLS C2D.
- DSM SUBR ENTRY/EXIT
- LDD ST CONVERT STATUS
- RJM C2D
- STM DSMA+10 SET IN MESSAGE
- LDD ST
- SHN -6
- RJM C2D
- STM DSMA+7
- LDC DSCP*CPAS+MS2W STORE MESSAGE
- CWM DSMA,TR
- UJN DSMX RETURN
- DSMA DATA C*CHXX, UNYY - SZZZZ.*
- RNR SPACE 4,10
- ** RNR - READ NEXT RECORD.
- *
- * EXIT (BUF) = NEXT RECORD ON DEADSTART FILE.
- *
- * USES RC.
- *
- * CALLS RDR, RTR.
- RNR SUBR ENTRY/EXIT
- LDN 10 SET RETRY COUNT
- STD RC
- RJM RDR READ DISK RECORD
- RNRA EQU *-1
- * RJM RTR (TAPE DEADSTART)
- LDC DSCP*200+MS2W
- CWD ZR
- UJN RNRX RETURN
- RST SPACE 4,10
- ** RST - READ SYSTEM TAPE.
- *
- * USES WC, T1, T2, CM - CM+4, CN - CN+4, DP - DP+4.
- *
- * CALLS CBN, ITM, RNR, SBP, WOC.
- RST SUBR ENTRY/EXIT
- RJM SRP SET READ PARAMETERS
- RST1 RJM WOC WAIT OUTPUT REGISTER CLEAR
- PAUSE NE
- LDD RA READ OUT
- SHN 6
- ADD IR+4
- ADN 3
- CRD CN
- RST2 LDD CN+3 LENGTH = OUT - IN+1
- SBD DP+3
- SHN 14
- ADD CN+4
- SBD DP+4
- SBN 1
- PJN RST3 IF IN+1 .GE OUT
- .BSA ADC ** (LIMIT - FIRST)
- RST3 ADC -1002
- MJN RST1 IF NO ROOM FOR ANOTHER BLOCK
- RSTA RJM ITM INITIATE TAPE MOTION FOR NEXT READ
- * UJN *+2 (READ AHEAD DISABLED)
- LDN 2 INCLUDE CONTROL WORDS IN WORD COUNT
- RAD WC
- WCB SPACE 4,10
- ** WCB - WRITE CENTRAL BUFFER.
- WCB LDD DP+3 CHECK IN + WORD COUNT
- SHN 14
- ADD DP+4
- ADD WC
- .LMA ADC -** (-LIMIT)
- STD T2 SET SECOND PART WORD COUNT
- LMC -0
- PJN WCB3 IF LIMIT NOT REACHED
- * PROCESS WRAP AROUND BLOCK.
- ADD WC SET FIRST PART WORD COUNT
- STD T1
- ZJN WCB1 IF NO FIRST PART
- LDD DP+3 STORE FIRST PART
- SHN 6
- ADD RA
- SHN 6
- ADD DP+4
- CWM BUF-5,T1
- WCB1 LDD T2 CHECK SECOND PART LENGTH
- ZJN WCB2 IF NO SECOND PART
- LDD T1 SET PP BUFFER ADDRESS
- SHN 2
- ADD T1
- RAM WCBA
- LDD RA STORE SECOND PART
- SHN 6
- .FTA ADC ** STORE SECOND PART (FIRST)
- CWM BUF-5,T2
- WCBA EQU *-1 (RESET)
- WCB2 LDD T2 SET IN AFTER SECOND PART
- .FTB ADC ** (FIRST)
- STD DP+4
- SHN -14
- STD DP+3
- UJN WCB4
- * PROCESS NORMAL BLOCK.
- WCB3 LDD DP+3 STORE BLOCK
- SHN 6
- ADD RA
- SHN 6
- ADD DP+4
- CWM BUF-5,WC
- LDC BUF-5 RESET (WCBA)
- STM WCBA
- LDD WC ADVANCE IN
- RAD DP+4
- SHN -14
- RAD DP+3
- WCB4 LDD RA STORE IN
- SHN 6
- .INA ADC ** (ADDRESS OF IN)
- CWD DP
- ADN 1 READ OUT
- CRD CN
- LDN DRCM RECALL CPU
- STD CM
- LDD OA
- CWD CM
- RJM RNR READ NEXT RECORD
- RJM CBN CHECK BLOCK NUMBER
- LJM RST2 LOOP
- SRP SPACE 4,10
- ** SRP - SET READ PARAMETERS.
- *
- * EXIT (DP - DP+4) = IN POINTER.
- * PARAMETERS INITIALIZED.
- * FIRST TAPE BLOCK READ.
- *
- * USES CM - CM+5, CN - CN+4, T1 - T1+4.
- *
- * CALLS CBN, RNR.
- *
- * MACROS PAUSE.
- SRP SUBR ENTRY/EXIT
- SRP1 PAUSE NE
- LDD RA READ FILE STATUS
- SHN 6
- ADD IR+4
- CRD CM+1
- ADN 1 READ FIRST
- CRD T1
- ADN 1 READ IN
- CRD DP
- ADN 1 READ OUT
- CRD CN
- ADN 1 READ LIMIT
- CRD CM
- LDD CM+5
- NJN SRP1 IF *SYSEDIT* NOT READY
- LDD T1+3
- LPN 37
- STD T1+3
- LDD CM+3 LIMIT - FIRST
- SBD T1+3
- SHN 14
- ADD CM+4
- SBD T1+4
- STM .BSA+1
- SHN -14
- LMC ADCI
- STM .BSA
- LDC ADCI+77 -LIMIT
- LMD CM+3
- STM .LMA
- LCN 0
- LMD CM+4
- STM .LMA+1
- LDD T1+3 FIRST
- LMC ADCI
- STM .FTA
- STM .FTB
- LDD T1+4
- STM .FTA+1
- STM .FTB+1
- LDD IR+3 ADDRESS OF IN
- SHN 14
- ADD IR+4
- ADN 2
- STM .INA+1
- SHN -14
- LMC ADCI
- STM .INA
- LDN ZERL CLEAR CONTROL WORD
- CRM BUF-5,ON
- LDD TH SET PRU SIZE IN CONTROL WORD
- STM BUF-4
- RJM RNR READ NEXT RECORD
- RJM CBN CHECK BLOCK NUMBER
- LJM SRPX RETURN
- WOC SPACE 4,10
- ** WOC - WAIT OUTPUT REGISTER CLEAR.
- *
- * USES CM - CM+4.
- WOC SUBR ENTRY/EXIT
- WOC1 LDD OA READ OUTPUT REGISTER
- CRD CM
- LDD CM
- ZJN WOCX RETURN IF CLEAR
- LDN 77 DELAY
- SBN 1
- NJN *-1
- UJN WOC1 LOOP
- WOG SPACE 4,10
- ** WOG - WAIT FOR OPERATOR GO.
- *
- * ENTRY (A) = ADDRESS OF MESSAGE.
- *
- * EXIT (A) = 0.
- * OPERATOR ENTERED *GO,.* OR *GO,SYS.*.
- *
- * USES T3, CM - CM+4.
- *
- * MACROS PAUSE.
- WOG SUBR ENTRY/EXIT
- STM WOGA SET MESSAGE ADDRESS
- LDN NCPL
- CRD CM
- AOD CM+1 READ SENSE SWITCH WORD AT SYSTEM CP
- SHN 7
- ADN SNSW
- STD T3
- CRD CM
- LDD CM+3 SET PAUSE BIT
- SCN 1
- LMN 1
- STD CM+3
- LDC DSCP*200+MS2W STORE MESSAGE
- CWM *,TR
- WOGA EQU *-1 MESSAGE ADDRESS
- LDD T3 STORE PAUSE FLAG
- CWD CM
- WOG1 PAUSE NE
- LDD T3 CHECK PAUSE BIT
- CRD CM
- LDD CM+3
- LPN 1
- ZJN WOGX IF PAUSE BIT CLEAR
- UJN WOG1 LOOP
- TITLE DISK/TAPE ROUTINES.
- BKS SPACE 4,10
- ** BKS - BACKSPACE DEADSTART MEDIUM.
- *
- * ENTRY (RC) = RETRY COUNT.
- *
- * EXIT (RC) DECREMENTED.
- *
- * CALLS DSM, GTS, POS, WOG.
- BKS4 LDD LT RESET DISK ADDRESS
- STD T6
- LDD LS
- STD T7
- RJM POS POSITION MASS STORAGE
- BKS SUBR ENTRY/EXIT
- RJM DSM DISPLAY STATUS MESSAGE
- SOD RC DECREMENT RETRY COUNT
- BKSA ZJN * IF RETRY COUNT EXHAUSTED
- * ZJN BKS3 (TAPE ERROR LOADING SYSTEM FILE)
- LDD DM
- NJN BKS4 IF DISK DEADSTART
- BKS1 RJM GTS GET TAPE STATUS
- LPN 2
- NJN BKS1 IF UNIT BUSY
- LDD BF BACKSPACE TAPE
- FAN DS
- BKS2 RJM GTS GET TAPE STATUS
- LPN 2
- NJN BKS2 IF BACKSPACE NOT COMPLETE
- UJN BKSX RETURN
- BKS3 LDC BKSB *SYSTEM TAPE PARITY ERROR.*
- RJM WOG WAIT FOR OPERATOR *GO.*
- LJM RTRX EXIT TAPE READ ROUTINE
- BKSB DATA C*SYSTEM TAPE PARITY ERROR.*
- BKSC BSS 0
- LOC BKSA
- ZJN BKS3 IF TAPE ERROR LOADING SYSTEM FILE
- LOC *O
- GDS SPACE 4,10
- ** GDS - GET DISK STATUS.
- *
- * EXIT (A) = (ST) = GENERAL STATUS.
- GDS SUBR ENTRY/EXIT
- FNC 12,DS GET GENERAL STATUS
- ACN DS
- IAN DS
- STD ST
- UJN GDSX RETURN
- GTS SPACE 4,10
- ** GTS - GET TAPE STATUS.
- *
- * EXIT (A) = (ST) = GENERAL STATUS.
- GTS1 LDN 70
- GTS2 FJM GTS4,DS IF STATUS READY
- SBN 1
- NJN GTS2 WAIT STATUS READY
- DCN DS
- GTS3 LDD SF REQUEST GENERAL STATUS
- FAN DS
- ACN DS
- EJM GTS1,DS IF CHANNEL EMPTY
- GTS4 IAN DS
- DCN DS
- STD ST SET GENERAL STATUS
- SHN 0-13
- ZJN GTS5 IF ALERT FLAG NOT SET
- FNC 112,DS GET DETAILED STATUS
- GTSA EQU *-1
- ACN DS
- IAN DS
- DCN DS
- LPC 7077
- GTSB EQU *-1
- * LPC 7777 (ATS TAPE SYSTEM)
- NJN GTS5 IF NOT ONLY WARNING
- LDD ST CLEAR ALERT FLAG
- LPN 77
- STD ST
- GTS5 LDD ST
- GTS SUBR ENTRY/EXIT
- UJN GTS3 GET GENERAL STATUS
- ITM SPACE 4,10
- ** ITM - INITIATE TAPE MOTION.
- *
- * ENTRY (TM) = 5005 IF TAPE MOTION INITIATED.
- *
- * EXIT (A) = (TM) = 5005.
- * CHANNEL ACTIVE.
- ITM SUBR ENTRY/EXIT
- LDD TM
- NJN ITMX IF TAPE MOTION ALREADY INITIATED
- LDD RF ISSUE READ FUNCTION
- FAN DS
- LDC TPLN+5 SET TAPE MOTION FLAG
- STD TM
- ACN DS
- UJN ITMX RETURN
- POS SPACE 4,10
- ** POS - POSITION MASS STORAGE.
- *
- * ENTRY (T6) = LOGICAL TRACK.
- * (T7) = LOGICAL SECTOR.
- * (UN) = UNIT NUMBER.
- * (POSA) = SEEK FUNCTION.
- *
- * USES T2.
- *
- * CALLS DSM, GDS, LDA.
- POS SUBR ENTRY/EXIT
- LDN 0
- STD T2
- RJM LDA CONVERT DISK ADDRESS
- LDD DT SET 895 DEADSTART READ FLAG
- RAD UN+2
- POS1 SOD T2
- ZJN POS2 IF BUSY COUNT EXHAUSTED
- FNC 2,DS SEEK FUNCTION
- POSA EQU *-1
- * FNC 1,DS (1 TO 1 INTERLACE)
- ACN DS
- LDN 4 OUTPUT SEEK PARAMETERS
- OAM UN,DS
- FJM *,DS IF CHANNEL FULL
- DCN DS
- RJM GDS GET DISK STATUS
- ZJN POSX IF POSITIONING COMPLETE
- LPN 2
- NJN POS1 IF BUSY
- POS2 RJM DSM DISPLAY STATUS MESSAGE
- UJN POS1 LOOP
- RDR SPACE 4,10
- ** RDR - READ DISK RECORD.
- *
- * ENTRY (T6) = CURRENT LOGICAL TRACK.
- * (T7) = CURRENT LOGICAL SECTOR.
- *
- * EXIT (A) = 0 IF ERROR.
- * (LT) = (T6) ON ENTRY.
- * (LS) = (T7) ON ENTRY.
- * (WC) = CM WORD COUNT OF RECORD.
- *
- * CALLS CDD, RNS.
- RDR SUBR ENTRY/EXIT
- RJM CDD CONNECT
- RDR1 LDN 0 CLEAR WORD COUNT
- STD WC
- LDD T6 SAVE CURRENT DISK ADDRESS
- STD LT
- LDD T7
- STD LS
- RDR2 LDD WC READ NEXT SECTOR
- RJM RNS
- MJN RDR1 IF DISK ERROR
- RAD WC
- LMC TPLN/5
- ZJN RDR3 IF TAPE PRU ASSEMBLED
- LDD T2 CHECK SECTOR WORD COUNT
- SHN -6
- NJN RDR2 IF NOT EOR
- RDR3 FNC 10,DS RELEASE CONTROLLER / DRIVE
- AJM *,DS IF FUNCTION NOT COMPLETE
- UJN RDRX RETURN
- RDT SPACE 4,10
- ** RDT - REWIND DEADSTART TAPE.
- RDT SUBR ENTRY/EXIT
- LDD DM
- NJN RDTX IF DISK DEADSTART
- RDT1 RJM GTS GET TAPE STATUS
- LPN 2
- NJN RDT1 IF UNIT BUSY
- LDD SF
- SBN 12-10 REWIND TAPE
- FAN DS
- UJN RDTX RETURN
- RNS SPACE 4,10
- ** RNS - READ NEXT SECTOR.
- *
- * ENTRY (A) = BIAS FOR BUFFER ADDRESS.
- *
- * EXIT (A) = (T2) = SECTOR WORD COUNT.
- * (T6) = LOGICAL TRACK FOR NEXT READ.
- * (T7) = LOGICAL SECTOR FOR NEXT READ.
- *
- * EREXIT (A) .LT. 0.
- * DISK BACKSPACED.
- *
- * USES T3, L1, L2.
- *
- * CALLS BKS, GDS, POS.
- RNS2.1 LDN 0 ZERO IF *DR* DEADSTART DEVICE
- RNSB EQU *-1
- NJN RNS2.2 IF NOT *DR* DEADSTART DEVICE
- LDD T7
- LMC 1200
- ZJN RNS3.1 IF POSSIBLE CYLINDER SWITCH
- LMC 1200&2400
- ZJN RNS3.1 IF POSSIBLE CYLINDER SWITCH
- RNS2.2 UJN RNS4 RESTORE LINKAGE CELLS AND RETURN
- RNS3 AOD T7 ADVANCE LOGICAL SECTOR
- LMI T3
- ZJN RNS2.1 IF MATCHING SECTOR LINKAGE
- LDI T3 SET NEXT TRACK
- SHN 21-13
- PJN * IF NOT TRACK SWITCH
- SHN 13-21
- STD T6
- LDN 0 SET FIRST SECTOR
- STD T7
- RNS3.1 RJM POS POSITION MASS STORAGE
- RNS4 LDD L1 RESTORE CELLS OVERLAID BY LINKAGE
- STI T3
- AOD T3
- LDI T3
- STD T2
- LDD L2
- STI T3
- LDD T2
- RNS SUBR ENTRY/EXIT
- STD T3 CALCULATE BUFFER ADDRESS
- SHN 2
- ADC BUF-2
- RAD T3
- STM RNSA
- LDI T3 SAVE LOCATIONS OVERLAID BY LINKAGE
- STD L1
- LDM 1,T3
- STD L2
- FNC 4,DS READ DISK SECTOR
- RNS1 LDC DSLN+2
- ACN DS
- IAM BUF,DS
- RNSA EQU *-1
- RJM GDS GET DISK STATUS
- ZJP RNS3 IF NO ERRORS
- SHN 21-13
- PJN RNS2 IF NOT ABNORMAL TERMINATION
- SHN 21-10-21+13
- PJN RNS2 IF NOT TO ISSUE CONTINUE
- FNC 14,DS ISSUE CONTINUE FUNCTION
- UJN RNS1 CONTINUE
- RNS2 RJM BKS BACKSPACE DISK
- LCN 0
- LJM RNSX RETURN
- RTR SPACE 4,10
- ** RTR - READ TAPE RECORD.
- *
- * EXIT (WC) = CM WORD COUNT FOR RECORD.
- * (TM) = 0.
- * TO *RSTX* WHEN EOF ENCOUNTERED.
- *
- * CALLS BKS, DV5, GTS, ITM.
- RTR SUBR ENTRY/EXIT
- RTR1 RJM ITM INITIATE TAPE MOTION
- STD WC
- IAM BUF,DS INPUT TAPE RECORD
- LMC -0
- ADD WC
- SBN 3
- PJN RTR2 IF NOT NOISE
- LDN 0
- RTR2 RJM DV5 DIVIDE BY FIVE
- STD WC
- RTR3 RJM GTS GET TAPE STATUS
- LPN 20
- NJN RTR4 IF EOF
- STD TM
- LDD ST
- LPC 4010
- ZJN RTRX IF NO ERRORS
- RJM BKS BACKSPACE TAPE
- UJN RTR1 RETRY
- RTR4 LJM RSTX EXIT SYSTEM TAPE LOAD
- RTU SPACE 4,10
- ** RTU - RELEASE TAPE UNIT.
- RTU SUBR ENTRY/EXIT
- LDD DM
- NJN RTUX IF DISK DEADSTART
- LDD SF
- SBN 12-1
- RTU1 FAN DS RELEASE UNIT RESERVE
- UJN RTUX RETURN
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPC2D
- *CALL COMPDV5
- LIST X
- *CALL COMPLDA
- LIST *
- TITLE BUFFER RESIDENT PRESET.
- BRP SPACE 4,10
- ** BRP - BUFFER RESIDENT PRESET.
- *
- * EXIT CHANNEL INSTRUCTIONS MODIFIED.
- * DRIVERS PRESET.
- * CONSTANT 3 (TR) DEFINED.
- *
- * USES DH, DM, DN, IH, T4, T6, T7.
- *
- * CALLS C2D, MCI, PSD.
- BRP SUBR ENTRY/EXIT
- LDM MXRL+CM SET DEADSTART CHANNEL
- STD T4
- STD DH
- RJM C2D CONVERT FOR STATUS MESSAGE
- STM DSMA+1
- LDM MXRL+LA PRESERVE DISPLAY CONSOLE STATUS
- STD DN
- LDC CTDS MODIFY CHANNEL INSTRUCTIONS
- RJM MCI
- LDN PC CHECK DEADSTART CHANNEL
- STD IH
- LMD DH
- NJN BRP1 IF NOT PP COMMUNICATIONS CHANNEL
- LDN 12 SET INTERCOMMUNICATIONS CHANNEL
- STD IH
- STD T4
- LDC CTPC MODIFY PP INTERCOMMUNICATION CHANNELS
- RJM MCI
- BRP1 LDM MXRL+T7 DISK SECTOR / DEADSTART FUNCTION
- STD T7
- LDM MXRL+T6 TRACK / TAPE STATUS
- STD T6
- STD DM
- RJM PSD PRESET DRIVERS
- LDN 3 DEFINE CONSTANT 3
- STD TR
- UJP BRPX RETURN
- TITLE BUFFER RESIDENT PRESET SUBROUTINES.
- CAU SPACE 4,10
- ** CAU - CHECK ATS UNIT.
- *
- * ENTRY (T7) = WORD 6 OF DEADSTART PANEL.
- *
- * EXIT TAPE READ LOOP MODIFIED FOR 200 OR 150 IPS 6250
- * DENSITY AT 2X PPU SPEED OR ANY 6250 DENSITY AT 1X PPU
- * SPEED.
- *
- * USES T1.
- CAU2 SBN 2
- PJN CAUX IF PP SPEED .GE. 4X
- LDD T1
- LPN 7
- LMN 5
- ZJN CAU1 IF 200 IPS UNIT
- LMN 6&5
- ZJN CAU1 IF 150 IPS UNIT
- CAU SUBR ENTRY/EXIT
- LDD T7 GET EQUIPMENT (CONTROLLER) NUMBER
- LPC 7000
- ADC 212 ADD UNIT STATUS FUNCTION
- FAN DS
- ACN DS
- IAN DS
- DCN DS
- STD T1
- LPN 30 CHECK UNIT STATUS
- LMN 30
- NJN CAUX IF DENSITY NOT 6250 CPI
- LDM MXRL+T3
- NJN CAU2 IF PP SPEED .GT. 1X
- CAU1 LDC UJNI+2 DISABLE INITIATE TAPE MOTION
- STM RSTA
- UJN CAUX RETURN
- MCI SPACE 4,10
- ** MCI - MODIFY CHANNEL INSTRUCTIONS.
- *
- * ENTRY (A) = ADDRESS OF INSTRUCTION LIST.
- * (T4) = CHANNEL NUMBER.
- *
- * USES T1, T2.
- MCI1 STD T2 SET INSTRUCTION ADDRESS
- LDI T2 MODIFY INSTRUCTION
- SCN 37
- LMD T4
- STI T2
- AOD T1 ADVANCE LIST ADDRESS
- MCI2 LDI T1
- NJN MCI1 IF NOT END OF LIST
- MCI SUBR ENTRY/EXIT
- STD T1 SET LIST ADDRESS
- UJN MCI2 ENTER LOOP
- PSD SPACE 4,10
- ** PSD - PRESET DRIVERS.
- *
- * ENTRY (A) = 0 IF TAPE DEADSTART.
- * (T6) = TRACK / TAPE STATUS.
- * (T7) = DISK SECTOR / DEADSTART FUNCTION.
- *
- * EXIT (UN) = UNIT NUMBER (DISK DEADSTART).
- * (BF) = BACKSPACE FUNCTION (TAPE DEADSTART).
- * (RF) = READ FUNCTION (TAPE DEADSTART).
- * (SF) = STATUS FUNCTION (TAPE DEADSTART).
- *
- * CALLS CAU, C2D, PDA.
- PSD3 LDM MXRL+T5 SET SEEK FUNCTION
- SHN 14
- STM POSA
- SHN -14 POSITION ALGORITHM INDEX
- LPN 77
- LMN AIDR
- RAM RNSB ZERO FOR CDSS II DEADSTART DEVICE
- LMN AIDR
- LPN 77
- RJM PDA PRESET DISK ADDRESS CONVERSION
- LDM MXRL+DT GET 895 DEADSTART READ FLAG
- STD DT
- LDM MXRL+T4 SET UNIT NUMBER
- PSD4 STD UN
- RJM C2D CONVERT FOR STATUS MESSAGE
- STM DSMA+4
- PSD SUBR ENTRY/EXIT
- NJN PSD3 IF DISK DEADSTART
- LDC RTR SET TAPE DRIVER ADDRESS
- STM RNRA
- LDD T7
- SHN -6
- LPN 7
- LMN 1
- NJN PSD1 IF NOT ATS TAPE SYSTEM
- LCN 0 SET DETAIL STATUS MASK
- STM GTSB
- RJM CAU CHECK ATS UNIT
- PSD1 LDD T7 EXTRACT EQUIPMENT (CONTROLLER) NUMBER
- LPC 7000
- ADN 12 SET GENERAL STATUS FUNCTION
- STD SF
- ADN 40-12 SET READ FUNCTION
- STD RF
- ADN 112-40 SET DETAILED STATUS FUNCTION
- STM GTSA
- ADN 113-112 SET BACKSPACE FUNCTION
- STD BF
- PSD2 LDD T7 EXTRACT UNIT NUMBER
- LPN 17
- LJM PSD4 CONVERT FOR STATUS MESSAGE
- LIST G
- PDA HERE
- LIST *
- SPACE 4,10
- ** CHANNEL TABLES.
- CHTB PC
- CHTB DS
- SPACE 4,10
- ERRNG 7777-* PRESET OVERFLOWS PP MEMORY
- SPACE 4,10
- ** BUFFER.
- BUF EQU BRPX+5
- SPACE 4,10
- ERRNG 10000-BUF-TPLN-5 BUFFER OVERFLOWS PP MEMORY
- ERRNG MXRL-*-5 *DIO* OVERFLOWS ONE TAPE PRU
- END
cdc/nos2.source/opl871/dio.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator