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