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