Table of Contents

1MT

Table Of Contents

  • [00007] 1MT - PPU MAGNETIC TAPE EXECUTIVE.
  • [00009] PPU MAGNETIC TAPE EXECUTIVE.
  • [00016] PROCESSES VARIOUS TAPE FUNCTIONS FOR *MAGNET*,
  • [00441] GENERAL USAGE MACROS.
  • [00443] BUFFER - CHECK FOR BUFFER OVERFLOW.
  • [00464] CALL - LOAD AND ENTER OVERLAY AT DEFINED ENTRY POINT.
  • [00479] C6463 - GENERATE TABLE FOR MODIFICATION OF CONVERSION TABLES
  • [00508] ENTRY - DEFINE OVERLAY ENTRY POINT.
  • [00524] ERROVL - TEST FOR OVERFLOW INTO ERROR PROCESSOR.
  • [00545] JMP - THREADED JUMP.
  • [00563] SADT - SET ADDRESS TABLE MACRO.
  • [00697] TSAD - DEFINE SET ADDRESS TABLE.
  • [00713] OVERLAY COMMUNICATION MACROS.
  • [00719] ADNAM - ADVANCE OVERLAY NAME MACRO.
  • [00730] OVERLAY - GENERATE OVERLAY CONSTANTS.
  • [00781] MAIN PROGRAM.
  • [00783] MAIN PROGRAM.
  • [00790] RET - STANDARD RETURN POINTS.
  • [00833] PROCESS NEXT REQUEST.
  • [00835] PNR - PROCESS NEXT REQUEST.
  • [00988] RESIDENT SUBROUTINES.
  • [00990] CDO - CHECK DROP OUT CONDITIONS.
  • [01028] CEC - CHANGE TO MAGNET CONTROL POINT.
  • [01062] LOV - LOAD OVERLAY.
  • [01086] MCH - MODIFY CHANNELS.
  • [01105] REL - RELEASE UNIT.
  • [01121] ITM - INITIATE TAPE MOTION.
  • [01140] UAD - UNIT DESCRIPTOR TABLE ADDRESS.
  • [01160] EQUIPMENT PROCESSING SUBROUTINES.
  • [01162] ERR - ERROR PROCESSOR.
  • [01179] FCN - PROCESS FUNCTION.
  • [01208] MCC - MASTER CLEAR MTS/ATS CHANNEL.
  • [01226] MTS/ATS CONTROLLER DEPENDENT SUBROUTINES.
  • [01228] CON - PERFORM INITIAL CONNECT.
  • [01289] CUI - FORMAT UNIT AND/OR PERFORM NON-INITIAL CONNECT.
  • [01322] DTS - GET MTS/ATS DETAILED STATUS AND ATS UNIT STATUS.
  • [01339] STC - STATUS CHANNEL.
  • [01367] STW - STATUS AND WAIT COMPLETION.
  • [01424] UBW - UPDATE BLOCK ID WINDOW.
  • [01447] WEO - WAIT END OF OPERATION.
  • [01494] PRS - PRESET PROGRAM.
  • [01702] CEP - CTS ERROR PROCESSOR.
  • [01721] ICF - ISSUE CCC/CTS FUNCTION.
  • [01751] PIC - PERFORM INITIAL CTS CONNECT.
  • [01785] CCU - CONNECT CTS UNIT.
  • [01823] GPS - GET AND PROCESS GENERAL STATUS.
  • [01906] RBI - READ BLOCK ID.
  • [01935] RCU - RECONNECT UNIT.
  • [01958] WFE - WAIT FOR END OF OPERATION FOR CTS.
  • [02029] ITE - INITIALIZE TAPE EXECUTIVE.
  • [02061] MTTR - GENERATE MTS CONVERSION MEMORY CODE.
  • [02090] MTBCD - TABLE OF INTERNAL BCD/DISPLAY CODE FOR MTS.
  • [02167] MTANS - TABLE FOR *ASCII* TO DISPLAY CODE CONVERSION.
  • [02320] MTEBC - TABLE OF EBCDIC/DISPLAY CODE.
  • [02609] ATSW - GENERATE ATS CONVERSION MEMORY FOR WRITE OF
  • [02627] ATEW - GENERATE ATS CONVERSION TABLE FOR WRITE
  • [02647] ATBCD - TABLE TO CONVERT DISPLAY TO INTERNAL BCD.
  • [02695] ATANS - TABLE TO CONVERT DISPLAY TO ASCII.
  • [02733] ATEBC - TABLE TO CONVERT DISPLAY TO EBCDIC.
  • [02771] INITIALIZATION SUBROUTINES.
  • [02773] ABT - ABORT.
  • [02786] ADC - ABORT AND DROP CHANNEL.
  • [02808] BCT - BUILD CHANNEL STATUS TABLE.
  • [02848] BDW - BUILD DEFINITON WORDS.
  • [02961] CCT - CONVERT CONVERSION TABLE. (MTS TABLE TO ATS READ TABLE)
  • [03048] CMD - CHANNEL MODIFICATION.
  • [03081] CTE - CHECK FOR TAPE EQUIPMENT.
  • [03112] ICF - ISSUE CHANNEL FUNCTION.
  • [03130] IFL - INITIALIZE FOR FIRMWARE LOAD.
  • [03164] ILM - ISSUE FIRMWARE LOADED MESSAGE.
  • [03184] LBC - LOAD BUFFER CONTROLLER.
  • [03569] LCA - LOAD CONVERSION MEMORY TO ATS CONTROLLER.
  • [03673] LCM - LOAD MTS CONVERSION MEMORIES.
  • [03757] PRS - INITIALIZE TAPE EXECUTIVE PRESET.
  • [03780] PRESET SUBROUTINES.
  • [03782] CCH - CHECK CHANNEL.
  • [03880] EST - EST PRE-PROCESSOR.
  • [03929] LFT - LOAD 1MT FUNCTION TABLE INTO MAGNET FL.
  • [03943] REC - RECOVER MAGNET.
  • [03996] SCS - SET 63 CHARACTER SET OPTION IF SELECTED.
  • [04058] FUN - DEFINE FUNCTION PROCESSOR.
  • [04093] TFUN - TABLE OF FUNCTION CODE PROCESSORS.
  • [04129] FRP - FUNCTION REJECT PROCESSOR.
  • [04303] PCR - PROCESS CONNECT REJECT.
  • [04386] EMM - MTS ERRLOG MESSAGE PROCESSOR.
  • [04560] SUBROUTINES.
  • [04562] CDA - CONVERT DATA (4 DIGITS).
  • [04585] CDN - CONVERT DATA (N DIGITS)
  • [04612] IDM - ISSUE DAYFILE MESSAGES.
  • [04668] RUW - READ UNIT DESCRIPTOR TABLE WORD.
  • [04701] OVERLAY AREA.
  • [04708] BDM - BUILD MESSAGE.
  • [04878] SCS - STORE CHARACTERS IN MESSAGE LINES.
  • [04914] EMN - MTS ERRLOG MESSAGE SPECIAL PROCESSOR.
  • [04946] SPECIAL PROCESSORS.
  • [04955] BNP - BLOCK NUMBER PROCESSOR.
  • [04985] CKR - CHECK IF READY OR WRITE ENABLE ERROR.
  • [05022] ECN - ERROR ON CONNECT.
  • [05060] FRE - FUNCTION REJECT ERROR.
  • [05086] FSC - FSC/CMTS/ISMT ADAPTOR STATUS.
  • [05160] CCP - CTS CHANNEL ERROR PROCESSOR.
  • [05280] CAU - CHECK ALL UNITS.
  • [05321] CFT - CHECK FOR TWO CHANNELS.
  • [05354] DCI - DOWN CHANNEL IN EST.
  • [05399] PCM - PROCESS CHANNEL MALFUNCTION.
  • [05465] PCR - PROCESS CONNECT REJECT.
  • [05511] POS - POSITION TAPE.
  • [05578] CEM - CTS ERRLOG MESSAGE PROCESSOR.
  • [05734] IDM - ISSUE DAYFILE MESSAGES.
  • [05775] MET - MOVE ERPA TEXT MESSAGE.
  • [05808] OVERLAY AREA.
  • [05810] CDA - CONVERT DATA (4 DIGITS).
  • [05839] CDN - CONVERT DATA.
  • [05869] CNN - CONVERT NIBBLE.
  • [05906] RUW - READ UNIT DESCRIPTOR TABLE WORD.
  • [05940] BDM - BUILD MESSAGE.
  • [06114] SCS - STORE CHARACTERS IN MESSAGE LINES.
  • [06143] CSP - CTS ERRLOG MESSAGE SPECIAL PROCESSOR.
  • [06166] SPECIAL PROCESSORS.
  • [06175] BNP - BLOCK NUMBER PROCESSOR.
  • [06214] CKR - CHECK IF READY.
  • [06245] ECN - ERROR ON CONNECT.
  • [06272] FRE - FUNCTION REJECT ERROR.
  • [06300] DPP - DROP CHANNEL AND PPU.
  • [06362] PRS - CONTROL POINT/CODED PRESET.
  • [06393] CPP - CONTROL POINT OPERATION PRESET.
  • [06505] SUBROUTINES.
  • [06507] CAL - CALCULATE PARAMETERS.
  • [06579] INM - INSTRUCTION MODIFICATION.
  • [06631] SFP - SET FET POINTER.
  • [06672] TRB - TRACE BUFFER.
  • [06754] CCD - CHECK CODED REQUEST AND BUILD FORMAT PARAMETERS.
  • [06919] DDR - DETERMINE DIRECTION FOR BID ACCUMULATION.
  • [06980] PFN - PROCESS FUNCTION REQUESTED.
  • [06998] TFCN - TABLE OF FUNCTION PROCESSORS.
  • [07008] RUL - REWIND OR UNLOAD UNIT.
  • [07026] SDF - SET DENSITY IN UNIT FORMAT PARAMETERS.
  • [07058] SED - SET EQUIPMENT DEFINITIONS.
  • [07204] TDCV - TABLE OF INITIAL DENSITY AND CONVERSION MODES.
  • [07222] SUBROUTINES.
  • [07224] LWR - TEST WRITE/READ PATH TO ATS UNIT.
  • [07317] RBL - READ BUFFERED LOG.
  • [07385] WNB - WAIT NOT BUSY AND CHECK READY.
  • [07423] HARDWARE SUBROUTINES.
  • [07425] FCR - PROCESS FUNCTION.
  • [07444] REU - REWIND/UNLOAD.
  • [07492] SDS - SET DRIVE SPEED FOR MTS/ATS UNITS.
  • [07564] PRS - PRESET.
  • [07589] RDF - PROCESS READ OPERATION.
  • [07613] READ - SUBROUTINES.
  • [07615] MRD - READ TAPE.
  • [07819] CIB - CHECK INPUT BUFFER.
  • [07853] TDA - TRANSFER DATA.
  • [07976] WCB - WRITE CENTRAL BUFFER.
  • [08043] VDA - VALIDATE DATA.
  • [08070] PDA - PROCESS DATA.
  • [08113] BCW - BUILD CONTROL WORD.
  • [08185] READ - PRESET.
  • [08187] PRS - PRESET.
  • [08593] TRSO - TABLE OF READ STOP CODES.
  • [08606] RCT - READ CARTRIDGE TAPE.
  • [08797] RLB - READ LONG BLOCK.
  • [08988] SUBROUTINES.
  • [08990] ADP - ADVANCE POINTER.
  • [09037] BCW - BUILD CONTROL WORD.
  • [09150] CPD - CHECK PP (1LT) DROP OUT.
  • [09178] CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
  • [09192] ITS - INDICATE *1MT* TRANSFER STARTED.
  • [09207] SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
  • [09248] WDA - WRITE DATA TO CENTRAL.
  • [09278] WTS - WAIT FOR *1LT* TRANSFER TO START.
  • [09321] PRESET.
  • [09323] PRS - PRESET.
  • [09527] PRESET SUBROUTINES.
  • [09580] CLB - CTS LONG BLOCK READ.
  • [09707] RLI - READ LI FORMAT.
  • [09859] ADP - ADVANCE POINTER.
  • [09908] CIB - CHECK INPUT BUFFER.
  • [09945] CPD - CHECK PP (1LT) DROP OUT.
  • [09975] CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
  • [09989] EBP - END OF BLOCK PROCESSING.
  • [10059] ITS - INDICATE *1MT* TRANSFER STARTED.
  • [10074] SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
  • [10132] UCP - UPDATE COUNTERS AND POINTERS.
  • [10151] UIP - UPDATE IN POINTER IN FET.
  • [10190] VDA - VALIDATE DATA.
  • [10338] WDA - WRITE DATA TO CENTRAL MEMORY.
  • [10368] WTS - WAIT FOR *1LT* TRANSFER TO START.
  • [10392] PRESET.
  • [10394] PRS - PRESET.
  • [10614] TRSO - TABLE OF READ STOP CODES.
  • [10627] PRESET SUBROUTINES.
  • [10629] ALI - ATS LI FORMAT READ.
  • [10826] RLA - READ LABELS PROCESSOR.
  • [10945] FAD - SET FET ADDRESS.
  • [10959] CHC - CHANGE CONTROL POINTS AND RELOCATE ADDRESSES.
  • [10976] CLA - CHECK LABEL FOR VALIDITY.
  • [11050] CLL - CHECK LABEL LENGTH.
  • [11080] DBT - DETERMINE BLOCK TYPE.
  • [11101] ELA - EXTENDED LABELS ADDRESS PROCESSING.
  • [11165] EOF - PROCESS *EOF1*.
  • [11284] EFO - PROCESS EOF2 - EOF9.
  • [11306] EOV - PROCESS *EOV1*.
  • [11374] ETC - END OF TAPE CHECK.
  • [11404] EVO - PROCESS *EOV2*.
  • [11459] HDR - PROCESS *HDR1*.
  • [11560] OHD - PROCESS *HDR2 - HDR9* OPTIONAL VOLUME LABELS.
  • [11582] PTM - PROCESS TAPE MARK.
  • [11622] RBE - RETURN *BEI* ERROR TO MAGNET.
  • [11631] SBL - SKIP BLOCK.
  • [11644] SDE - SET ACTUAL DENSITY FOR 9 TRACK.
  • [11687] SKR - SKIP BLOCK REVERSE.
  • [11710] BKS - BACKSPACE TAPE.
  • [11750] STM - SKIP TAPE MARK.
  • [11775] THL - TRANSFER HEADER LABEL.
  • [11821] TMS - TAPE MARK SENSE.
  • [11856] UHL - PROCESS *UHLA* USER FILE HEADER LABELS.
  • [11883] UTL - PROCESS USER TRAILER LABELS.
  • [11914] UVL - PROCESS *UVLN* USER VOLUME LABELS.
  • [11954] VOL - PROCESS *VOL1* LABEL.
  • [12135] WEL - WRITE EXTENDED LABELS TO USER BUFFER.
  • [12170] WNB - WAIT NOT BUSY.
  • [12181] ZRO - ZERO FIRST WORD OF XL BUFFER.
  • [12196] CHARACTER PROCESSING SUBROUTINES.
  • [12211] CAN - COMPARE ALPHANUMERIC FIELDS.
  • [12259] CBC - CHECK BLOCK COUNT.
  • [12289] CCH - COPY INPUT BUFFER TO DESTINATION BUFFER.
  • [12310] CIF - CHECK INTERNAL TAPE FORMAT.
  • [12325] CSC - CHECK SYSTEM CODE.
  • [12358] DCV - CONVERT DECIMAL FIELD TO BINARY.
  • [12415] FCH - FILL DESTINATION BUFFER WITH CHARACTER(S).
  • [12438] GCD - GET CHARACTER FROM DESTINATION BUFFER.
  • [12464] GCH - GET CHARACTER FROM INPUT BUFFER.
  • [12490] RUD - READ UNIT DESCRIPTOR TABLE LABEL INFORMATION.
  • [12502] SCH - STORE CHARACTER IN DESTINATION BUFFER.
  • [12534] UDA - SET ADDRESS OF UDT LABEL PARAMETERS.
  • [12559] WUD - WRITE UNIT DESCRIPTOR TABLE.
  • [12594] UDT LABEL INFORMATION BUFFER (*UUFN* - *UDAT*).
  • [12606] BTA - BLANK TAPE CHECK.
  • [12638] CFU - COMPARE FAMILY AND USER NAMES.
  • [12738] CLR - CHECK LABELED REEL REQUIRED.
  • [12759] HLC - HEADER LABEL CHECK.
  • [12817] SEC - SET *RRJ* ERROR AND SUB-CODE.
  • [12827] VLC - VOLUME LABEL CHECK.
  • [12937] LER - HANDLE LABEL ERRORS AT LOAD POINT AND ON INITIAL
  • [12980] WFC - WAIT BACKSPACE FUNCTION COMPLETE.
  • [13010] PRS - PRESET.
  • [13206] PROCESSING TABLES.
  • [13220] ANSI LABEL PROCESSORS.
  • [13372] CCL - CODE CONVERT LABEL READ FOR CTS.
  • [13444] EXC - EXTRACT CHARACTER.
  • [13508] ANSI - TABLE FOR *ASCII* TO DISPLAY CODE CONVERSION.
  • [13663] EBCI - TABLE FOR EBCDIC TO DISPLAY CODE CONVERSION.
  • [13983] PHD - PROCESS HEADER.
  • [14035] REL - READ EXTENDED LABELS.
  • [14093] SSN - SET SEQUENCE NUMBER.
  • [14121] TMC - TAPE MARK CHECK.
  • [14221] PRS - PRESET.
  • [14234] OPF - OPEN OPERATION.
  • [14423] OPH - OPEN READ/ALTER.
  • [14633] SUBROUTINES.
  • [14635] ELA - EXTENDED LABELS ADDRESS PROCESSING.
  • [14694] FHR - FIND *HDR1* LABEL.
  • [15018] GHD - GENERATE *HDR1* LABEL FROM UDT.
  • [15080] CHARACTER PROCESSING SUBROUTINES.
  • [15096] CAN - COMPARE ALPHANUMERIC FIELDS.
  • [15147] CBD - CONVERT BINARY FIELD TO DECIMAL.
  • [15244] CCH - COPY INPUT BUFFER TO DESTINATION BUFFER.
  • [15265] CCS - COPY CHARACTERS IF SPECIFIED.
  • [15308] CDN - CONVERT DECIMAL FIELD (4 CHARACTERS).
  • [15332] CPO - CHECK IF *POSMF 9999*.
  • [15362] DCV - CONVERT DECIMAL FIELD TO BINARY.
  • [15431] FCH - FILL DESTINATION BUFFER WITH CHARACTER(S).
  • [15454] GCD - GET CHARACTER FROM DESTINATION BUFFER.
  • [15480] GCH - GET CHARACTER FROM INPUT BUFFER.
  • [15506] SCB - SET CENTURY BIAS.
  • [15525] SCF - SET CENTURY FILL CHARACTER.
  • [15553] SCH - STORE CHARACTER IN DESTINATION BUFFER.
  • [15585] UDA - UDT ADDRESS OF LABEL PARAMETERS (UUFN)
  • [15599] WUD - WRITE UNIT DESCRIPTOR TABLE.
  • [15621] PRS - PRESET.
  • [15656] SKP - SKIP.
  • [15746] DBF - DETERMINE BLOCK TYPE FORWARD.
  • [15825] DBR - DETERMINE BLOCK TYPE REVERSE.
  • [15870] IDF - PROCESS INTERNAL DATA FORMAT.
  • [15909] VDA - VALIDATE DATA.
  • [15949] CFP - CHECK FULL PRU FOR LI FORMAT.
  • [15963] SLB - SKIP LONG BLOCK.
  • [15993] SKR - SKIP REVERSE.
  • [16097] PRS - PRESET.
  • [16531] SLL - SKIP COUNT MODIFIER FOR S, L FORMATS.
  • [16553] BKS - BACKSPACE TAPE.
  • [16607] SLI - SKIP LI FORMAT BLOCK.
  • [16639] VLI - VALIDATE LI FORMAT PREFIX.
  • [16686] REM - READ ERROR PROCESSOR.
  • [16859] EOT - END OF TAPE PROCESSOR.
  • [16878] PNE - PROCESS NOISE ERRORS.
  • [16995] POT - POSITION TAPE.
  • [17411] PTM - PROCESS TAPE MARK.
  • [17464] SUBROUTINES.
  • [17466] ABC - ADJUST BYTE COUNT FOR 9 TRACK TAPES.
  • [17519] BKS - BACKSPACE TAPE.
  • [17538] BTW - BUILD TEMPORARY WINDOW.
  • [17578] CBW - COMPARE BID WINDOWS.
  • [17633] CFC - CHECK IF CONNECT NEEDED.
  • [17664] CIF - CHECK INTERNAL FORMAT (I AND LI).
  • [17698] CIS - CHECK IF ISMT GCR SKIP REVERSE.
  • [17717] CKR - CHECK READY.
  • [17746] IMU - ISSUE MESSAGE TO ERROR LOG AND UNLOAD TAPE.
  • [17764] POS - POSITION TAPE.
  • [17848] RCI - READ *CIO* INFORMATION FROM *MAGNET,S FL.
  • [17886] RDA - READ DATA.
  • [17989] RSP - RESET PROCESSOR FOR NEXT OPERATION.
  • [18011] SCL - SET CLIPPING LEVEL.
  • [18031] SOB - SET UP AND READ ONE BLOCK.
  • [18077] WFC - WAIT BACKSPACE FUNCTION COMPLETE.
  • [18105] WIP - WRITE IN POINTER PRIOR TO READ TO USER BUFFER.
  • [18159] NOTE - CODE AFTER THIS POINT WILL BE DESTROYED WHEN CALLING
  • [18163] CTAB - CHANNEL TABLE.
  • [18168] EBW - EVALUATE BID WINDOW.
  • [18261] LPR - LOAD POINT RECOVERY.
  • [18377] PRS - PRESET.
  • [18461] CRE - CTS READ ERROR PROCESSOR.
  • [18513] CEP - CLEAR ERROR PARAMETERS.
  • [18550] POS - POSITION TAPE.
  • [18611] PTM - PROCESS TAPE MARK.
  • [18663] RCI - READ *CIO* INFORMATION FROM *MAGNET,S FL.
  • [18701] RRA - READ RECOVERY ALGORITHM.
  • [18818] RSP - RESET PROCESSOR FOR NEXT OPERATION.
  • [18840] WFC - WAIT FOR COMPLETION.
  • [18851] WIP - WRITE IN POINTER PRIOR TO READ TO USER BUFFER.
  • [18896] CTAB - CHANNEL TABLE.
  • [18901] PRS - PRESET.
  • [18923] WTF - WRITE TAPE.
  • [18990] CNW - CHECK NEXT WRITE.
  • [19110] COB - CHECK OUTPUT BUFFER.
  • [19145] RCB - READ CENTRAL BUFFER.
  • [19210] WRT - WRITE TAPE.
  • [19345] IBF - INTERNAL BLOCK FORMAT.
  • [19394] SIF - PROCESS SI FORMAT 9 TRACK (ATS).
  • [19419] EOF - WRITE I/SI FORMAT EOF.
  • [19453] XBF - EXTERNAL BLOCK FORMAT.
  • [19540] MXB - SET BYTE COUNT AND WRITE FUNCTION FOR
  • [19588] PRS - PRESET.
  • [20050] WCT - WRITE CARTRIDGE TAPE.
  • [20204] ODA - OUTPUT DATA.
  • [20346] SUBROUTINES.
  • [20348] ADP - ADVANCE POINTER.
  • [20389] CNL - CHECK NEXT WRITE LONG BLOCKS.
  • [20544] CPD - CHECK PP (1LT) DROP OUT.
  • [20574] CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
  • [20587] ITS - INDICATE *1MT* TRANSFER STARTED.
  • [20604] OPE - OUTPUT ENDING DATA FROM CYBER 180 IOU.
  • [20628] OPI - OUTPUT DATA FROM CYBER 180 IOU.
  • [20663] RDA - READ DATA FROM CENTRAL.
  • [20719] SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
  • [20762] WTS - WAIT FOR *1LT* TRANSFER TO START.
  • [20807] PRESET.
  • [20809] PRS - PRESET.
  • [21007] PRESET SUBROUTINES.
  • [21009] SRC - SET RESIDENT CONTROLLER ROUTINE.
  • [21089] OPA - OUTPUT DATA TO ATS UNIT (NON-CYBER 180).
  • [21117] OPL - OUTPUT LAST PARTIAL CHUNK TO ATS UNIT (NON-CYBER 180).
  • [21150] OPD - OUTPUT DATA TO MTS UNIT (NON-CYBER 180).
  • [21193] WLI - WRITE LI FORMAT.
  • [21232] ADP - ADVANCE POINTER.
  • [21273] CNW - CHECK NEXT WRITE.
  • [21464] COB - CHECK OUTPUT BUFFER.
  • [21501] CPD - CHECK PP (1LT) DROP OUT.
  • [21531] CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
  • [21544] EOF - WRITE LI FORMAT EOF.
  • [21583] ITS - INDICATE *1MT* TRANSFER STARTED.
  • [21598] ODA - OUTPUT DATA.
  • [21709] OPE - OUTPUT ENDING DATA FROM CYBER 180 IOU.
  • [21736] OPI - OUTPUT DATA FROM CYBER 180 IOU.
  • [21770] RDA - READ DATA FROM CENTRAL.
  • [21815] SLN - SAVE LEVEL NUMBER.
  • [21883] SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
  • [21927] WRT - WRITE TAPE.
  • [22022] WTS - WAIT FOR *1LT* TRANSFER TO START.
  • [22067] PRESET.
  • [22069] PRS - PRESET.
  • [22277] WCT - WRITE CARTRIDGE TAPE.
  • [22363] OPA - OUTPUT DATA TO ATS UNIT (NON-CYBER 180).
  • [22394] OPL - OUTPUT LAST PARTIAL CHUNK TO ATS UNIT (NON-CYBER 180).
  • [22426] WLA - WRITE LABELS PROCESSOR.
  • [22551] FAD - SET FET ADDRESS.
  • [22566] WTE - WRITE TAPE MARK ERROR PROCESSOR.
  • [22791] WFC - WAIT BACKSPACE FUNCTION COMPLETE.
  • [22820] WFM - WRITE FILE MARK.
  • [22846] ANSI LABEL PROCESSORS.
  • [22919] ELA - EXTENDED LABELS ADDRESS PROCESSING.
  • [22981] ERA - ERASE.
  • [23002] EOV - WRITE END OF VOLUME LABEL.
  • [23029] EVO - END OF VOLUME - 2.
  • [23055] EOF - WRITE END OF FILE LABEL.
  • [23081] EFO - PROCESS EOF2 - EOF9.
  • [23091] HDR - *HDR1* PROCESSOR.
  • [23105] OHD - PROCESS HDR2-HDR9.
  • [23115] UHL - USER FILE HEADER LABEL.
  • [23125] UTL - USER TRAILER LABELS.
  • [23135] UVL - USER VOLUME HEADER LABEL.
  • [23157] VOL - VOLUME HEADER LABEL.
  • [23221] CWS - CLEAR WRITE STATUS.
  • [23231] CHARACTER PROCESSING SUBROUTINES.
  • [23243] CCB - COPY CHARACTER BUFFER.
  • [23276] CLF - COPY LABEL FIELD FROM UDT.
  • [23302] DCV - DECIMAL CONVERT TO A 6 DIGIT NUMBER.
  • [23352] GUD - GET UNIT DESCRIPTOR CHARACTER.
  • [23376] HTR - GENERATE HEADER/TRAILER LABEL INFORMATION.
  • [23491] PSL - PROCESS SEQUENTIAL TYPE OPTIONAL LABELS.
  • [23554] PUL - PROCESS USER LABELS.
  • [23615] RUD - READ UDT VSN AND LABEL INFORMATION.
  • [23629] UDA - SET UDT ADDRESS OF VSN AND LABEL PARAMETERS.
  • [23651] WUC - WRITE UNIT DESCRIPTOR TABLE CONDITIONALLY.
  • [23696] WUD - WRITE UDT VSN AND LABEL INFORMATION.
  • [23707] SCL - SET CENTURY IN LABEL.
  • [23735] SLC - STORE LABEL CHARACTER.
  • [23764] SFL - SPACE FILL LABEL.
  • [23784] HARDWARE PROCESSING SUBROUTINES.
  • [23786] WTM - WRITE TAPE MARKS.
  • [23827] PRESET.
  • [23829] PRS - PRESET.
  • [23898] CTS-SPECIFIC ROUTINES.
  • [23900] CPE - CHECK AND PROCESS WRITE TAPE MARK ERRORS.
  • [23950] CCW - CODE CONVERT LABEL TO WRITE TO CTS.
  • [23997] GCC - GET CONVERTED CHARACTER.
  • [24025] SCC - STORE CONVERTED CHARACTER.
  • [24063] ATANS - TABLE TO CONVERT DISPLAY TO ASCII.
  • [24138] EBCI - TABLE TO CONVERT DISPLAY TO EBCDIC.
  • [24216] WEM - WRITE ERROR PROCESSOR.
  • [24398] EOT - END OF TAPE PROCESSOR.
  • [24438] POT - POSITION AND VERIFY TAPE AFTER ERROR.
  • [24608] SUBROUTINES.
  • [24610] ABC - ADJUST BYTE COUNT FOR 9 TRACK TAPES.
  • [24684] BKS - BACKSPACE TAPE.
  • [24703] BTW - BUILD TEMPORARY WINDOW.
  • [24773] CFC - CHECK FOR CONNECT.
  • [24823] CBW - COMPARE BID WINDOWS.
  • [24878] CKR - CHECK READY.
  • [24917] CID - CHECK I FORMAT TRAILER BYTES.
  • [25050] ISC - ISSUE MESSAGE AND RECONNECT UNIT.
  • [25066] POS - POSITION TAPE.
  • [25176] RCI - READ *CIO* INFORMATION FROM *MAGNET,S FL.
  • [25214] RDA - READ DATA.
  • [25332] SOB - SET UP AND READ ONE BLOCK.
  • [25378] WFC - WAIT BACKSPACE FUNCTION COMPLETE.
  • [25406] WNB - WAIT NOT BUSY ON *CMTS* OR *FSC* CONTROLLER.
  • [25446] WLP - LOAD POINT RECOVERY.
  • [25571] CTAB - CHANNEL TABLE.
  • [25575] OVERLAYABLE SUBROUTINES.
  • [25577] NOTE - CODE AFTER THIS POINT WILL BE DESTROYED WHEN
  • [25585] EBW - EVALUATE BID WINDOW.
  • [25662] PRS - PRESET.
  • [25736] CWP - CTS WRITE ERROR PROCESSOR.
  • [25834] EOT - END OF TAPE PROCESSOR.
  • [25847] POS - POSITION TAPE.
  • [25905] WFC - WAIT FOR COMPLETION.
  • [25916] WRA - WRITE RECOVERY ALGORITHM.
  • [26012] CTAB - CHANNEL TABLE.
  • [26017] PRS - PRESET.
  • [26039] ERP - ERROR RECOVERY PROCEDURE ACTION TEXT MESSAGES.
  • [26198] LTP - LONG BLOCK PROCESSOR.
  • [26227] RED - READ DATA FROM TAPE.
  • [26339] WRT - WRITE TAPE.
  • [26437] SUBROUTINES.
  • [26439] ADP - ADVANCE POINTER.
  • [26491] CPD - CHECK PP DROP OUT.
  • [26520] INM - INSTRUCTION MODIFICATION.
  • [26587] ITS - INDICATE *1LT* TRANSFER STARTED.
  • [26602] OPA - OUTPUT DATA TO ATS UNIT (NON-CYBER 180).
  • [26620] OPD - OUTPUT DATA TO MTS UNIT (NON-CYBER 180).
  • [26637] OPI - OUTPUT DATA FROM CYBER 180 IOU.
  • [26656] OPE - OUTPUT ENDING CHUNK FROM CYBER 180 IOU.
  • [26674] OPL - OUTPUT LAST PARTIAL CHUNK TO ATS UNIT (NON-CYBER 180).
  • [26688] RDA - READ DATA FROM CENTRAL.
  • [26718] WDA - WRITE DATA TO CENTRAL.
  • [26748] WSB - WAIT START OF BLOCK FROM *1MT*.
  • [26804] WTS - WAIT FOR *1MT* TRANSFER TO START.
  • [26832] PRESET.
  • [26834] PRS - PRESET.
  • [26985] PRESET SUBROUTINES.
  • [27013] MCH - MODIFY CHANNELS.

Source Code

1MT.txt
  1. IDENT 1MT,PRS
  2. PERIPH
  3. BASE MIXED
  4. SST
  5. *COMMENT 1MT - PPU MAGNETIC TAPE EXECUTIVE.
  6. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  7. TITLE 1MT - PPU MAGNETIC TAPE EXECUTIVE.
  8. SPACE 4,10
  9. *** 1MT - PPU MAGNETIC TAPE EXECUTIVE.
  10. * R. E. TATE. 73/01/09.
  11. * D. D. SADLER. 74/05/01. (MTS)
  12. * L. C. HAAS. 77/07/15. (BLOCK - ID)
  13. * R. J. PRIEVE. 77/07/15. (ATS)
  14. * C. D. ROWE. 92/02/03. (CTS)
  15. SPACE 4,10
  16. *** 1MT - PROCESSES VARIOUS TAPE FUNCTIONS FOR *MAGNET*,
  17. * THE CPU MAGNETIC TAPE EXECUTIVE.
  18. SPACE 4,10
  19. *** CALL FORMAT.
  20. *
  21. * NORMAL CALL -
  22. *
  23. *T, IR 18/ *1MT*,6/0,12/ 0,12/ CH,12/ CSTA
  24. *
  25. * CH TAPE CHANNEL NUMBER.
  26. * CSTA CST ADDRESS.
  27. *
  28. * MAGNET INITIALIZATION CALL -
  29. *
  30. *T IR 18/ *1MT*,6/0,12/1,24/ ADDR
  31. *
  32. * ADDR STATUS WORD ADDRESS.
  33. *
  34. * STATUS WORD FORMAT -
  35. *
  36. *T 1/A,47/0,12/ IFL
  37. *
  38. * A *1MT* ACTIVE (CLEARED UPON COMPLETION).
  39. * IFL INITIALIZATION FLAGS.
  40. * 1 = *MAGNET* INITIALIZATION.
  41. * 3 = LEVEL 3 RECOVERY.
  42. SPACE 4,10
  43. *** ERROR MESSAGES.
  44. *
  45. * NOTE - MESSAGES ARE ISSUED TO THE ERROR LOG IN THE FORM OF A
  46. * 3 CHARACTER MNEMONIC. THESE MNEMONICS ARE LISTED IN
  47. * PARENTHESES.
  48. *
  49. * *ERASE LIMIT.* (ERA)
  50. *
  51. * THIS MESSAGE IS POSTED IF, (A) IN *PE* OR *GCR*
  52. * MODE, IF THE CURRENT BLOCK COULD NOT BE RE-WRITTEN PROPERLY
  53. * AFTER FORTY ERASURES, (APPROXIMATELY 15 FEET OF
  54. * TAPE), OR (B) IN *NRZI* MODE, THAT THE CURRENT BLOCK
  55. * COULD NOT BE RE-WRITTEN DUE TO RECEIVING PARITY ERROR(S)
  56. * AFTER FORTY ATTEMPTS TO ERASE A SINGLE AREA ON TAPE.
  57. *
  58. *
  59. * *MARGINALLY WRITTEN TAPE.* (MWT)
  60. *
  61. * THIS MESSAGE IS POSTED IF SOME OR ALL OF THE PREVIOUS GOOD
  62. * BLOCKS USED TO CREATE THE RECOVERY BLOCK ID WINDOW CANNOT BE
  63. * READ WITH ERROR CORRECTION ENABLED DURING REPOSITIONING OF
  64. * THE TAPE FOR WRITE RECOVERY.
  65. *
  66. *
  67. * *POSITION LOST.* (PLO)
  68. *
  69. * THIS MESSAGE IS POSTED IF, (A) A BLOCK ID MIS-MATCH
  70. * OCCURS OR, (B) IF THE BLOCK ID WINDOW IS ALL ONES IT
  71. * INDICATES THAT A NOS TERMINATOR LABEL MIS-MATCH HAS
  72. * OCCURRED. IN EITHER CASE, THE POSITION ON THE TAPE CANNOT
  73. * BE ESTABLISHED AND THE JOB MUST BE TERMINATED.
  74. *
  75. *
  76. * *READ ID BURST FAILURE.* (BFR)
  77. *
  78. * THIS MESSAGE IS ISSUED TO THE *E,P* DISPLAY IN THE FORM *READ
  79. * ID BURST* TO INDICATE THAT THE P.E. OR G.C.R. SPECIAL
  80. * CHARACTERS TO BE READ BY THE SUBSYSTEM AT LOAD POINT IS NOT
  81. * POSSIBLE.
  82. *
  83. * WHEN THIS MESSAGE APPEARS, THE FOLLOWING ACTIONS SHOULD BE
  84. * TAKEN.
  85. *
  86. * THE OPERATOR SHOULD DISMOUNT THE MAGNETIC TAPE FROM THE
  87. * UNIT IN QUESTION, CLEAN THE HEAD ASSEMBLY, AND REMOUNT THE
  88. * MAGNETIC TAPE. THE OPERATOR SHOULD THEN ENTER *RETRY,EST.*.
  89. * THE SYSTEM WILL THEN RETRY THE ORIGINAL OPERATION FROM LOAD
  90. * POINT. IF NO ERRORS OCCUR, THE JOB WILL CONTINUE NORMAL
  91. * PROCESSING. IF THE ORIGINAL PROBLEM PERSISTS, THE MESSAGE
  92. * *READ ID BURST* WILL AGAIN BE ISSUED TO THE *E,P* DISPLAY.
  93. * THIS TIME THE OPERATOR OR C.E. SHOULD BE INSTRUCTED TO
  94. * ENTER *TERMINATE,EST.* TO ABORT THE OPERATION. THE
  95. * MESSAGE, *READ ID BURST FAILURE*, WILL APPEAR IN THE
  96. * DAYFILE.
  97. *
  98. *
  99. * *REPOSITION CORRECTED ERROR.* (RCE)
  100. *
  101. * THIS ERROR LOG MESSAGE IS USED TO ALERT THE C.E. TO
  102. * THE FACT THAT THE TRANSPORT IS WRITING IN A MARGINAL
  103. * STATE. THIS MESSAGE IS INTENDED TO PREVENT THE GENERATION
  104. * OF MARGINAL TAPE BY THE SUBSYSTEM AND IT-S DEVICES. THIS
  105. * MESSAGE IS TO BE CONSIDERED A MARGINAL DRIVE INDICATOR
  106. * (MDI) BY THE C.E. AND APPROPRIATE ACTION SHOULD BE TAKEN
  107. * IMMEDIATELY.
  108. *
  109. *
  110. * *TAPE CLEANER FAULT.* (TCF)
  111. *
  112. * DRIVER DETECTED FAILURE (TRANSPORT ASSIGNED TO JOB) -
  113. *
  114. * THIS MESSAGE IS ISSUED TO THE *E,P* DISPLAY IN THE
  115. * FORM *CLEANER FAULT* TO INDICATE THAT THE TAPE CLEANER
  116. * WAS NOT IN THE STOWED POSITION AFTER A *LOAD* OR A
  117. * *REWIND*. THE DRIVER HAS ALREADY UNLOADED THE TRANSPORT
  118. * AND THE ASSIGNED JOB IS LOOPING WAITING FOR TRANSPORT TO
  119. * COME *READY* AGAIN AND FOR *RETRY,EST.* TO BE ENTERED AT
  120. * THE CONSOLE. IF CORRECTIVE ACTION IS NOT POSSIBLE, THE
  121. * OPERATOR OR C.E. SHOULD ENTER *TERMINATE,EST.* TO
  122. * ABORT THE OPERATION. THE MESSAGE, *TAPE CLEANER
  123. * FAULT*, WILL APPEAR IN THE DAYFILE.
  124. *
  125. * SCANNER DETECTED FAILURE (TRANSPORT UNASSIGNED) -
  126. *
  127. * SINCE NO JOB HAS BEEN ASSIGNED TO THE TRANSPORT AT THIS
  128. * POINT, CORRECTIVE ACTION CAN BE INITIATED ON THE FAILING
  129. * UNIT BY CONTACTING A C.E. AND MOVING THE TAPE REEL TO
  130. * ANOTHER UNASSIGNED TRANSPORT. SINCE THE JOB WAS NEVER
  131. * ASSIGNED TO THE FAILING TRANSPORT, THIS UNASSIGNED
  132. * TRANSPORT CAN ASSUME THE DUTIES ORIGINALLY INTENDED FOR
  133. * THE FAILING DEVICE. IF NO OTHER TRANSPORT IS AVAILABLE,
  134. * AND CORRECTIVE ACTION IS POSSIBLE, AND COMPLETED, THE
  135. * TRANSPORT CAN BE RELOADED AND THE JOB SHOULD PROCESS AS
  136. * IF NO TAPE CLEANER FAULT EVER OCCURRED.
  137. *
  138. *
  139. * *WRITE ID BURST FAILURE.* (BFW)
  140. *
  141. * THIS MESSAGE IS ISSUED TO THE *E,P* DISPLAY IN THE FORM
  142. * *WRITE ID BURST* TO INDICATE THAT THE P.E. OR G.C.R. SPECIAL
  143. * CHARACTERS TO BE READ BY THE SUBSYSTEM AT LOAD POINT IS NOT
  144. * POSSIBLE.
  145. *
  146. * WHEN THIS MESSAGE APPEARS, THE FOLLOWING ACTIONS SHOULD
  147. * BE TAKEN.
  148. *
  149. * THE OPERATOR SHOULD DISMOUNT THE MAGNETIC TAPE FROM THE
  150. * UNIT IN QUESTION, CLEAN THE HEAD ASSEMBLY, AND REMOUNT THE
  151. * MAGNETIC TAPE. THE OPERATOR SHOULD THEN ENTER *RETRY,EST.*.
  152. * THE SYSTEM WILL THEN RETRY THE ORIGINAL OPERATION FROM LOAD
  153. * POINT. IF NO ERRORS OCCUR, THE JOB WILL CONTINUE NORMAL
  154. * PROCESSING. IF THE ORIGINAL PROBLEM PERSISTS, THE MESSAGE
  155. * *WRITE ID BURST* WILL AGAIN BE ISSUED TO THE *E,P* DISPLAY.
  156. * THIS TIME THE OPERATOR OR C.E. SHOULD BE INSTRUCTED TO
  157. * DISMOUNT AND REPLACE THE MAGNETIC TAPE REEL.
  158. *
  159. * WHEN THE NEW REPLACEMENT REEL OF TAPE IS MOUNTED ON THE
  160. * TRANSPORT AND THE UNIT GOES *READY* AND *RETRY,EST.* HAS
  161. * BEEN ENTERED AT THE CONSOLE, THE LABELS FROM THE DISREGARDED
  162. * REEL ARE WRITTEN ON THIS NEW REEL IF LABELED TAPE. IN
  163. * ANY CASE, THE EXTERNAL REEL IDENTIFICATION LABEL MUST BE
  164. * TRANSFERRED TO THE REPLACEMENT REEL. THE EXTERNAL REEL
  165. * IDENTIFICATION LABEL ON THE ORIGINAL DEFECTIVE REEL MUST BE
  166. * REMOVED TO PREVENT DUPLICATE REEL NUMBERS.
  167. *
  168. * IF THE ORIGINAL PROBLEM HAS BEEN OVERCOME, PROCESSING WILL
  169. * CONTINUE AS NORMAL. IF THE PROBLEM PERSISTS, THE OPERATOR
  170. * OR C.E. SHOULD BE INSTRUCTED TO ENTER *TERMINATE,EST.* TO
  171. * ABORT THE OPERATION. THE MESSAGE, *WRITE ID BURST
  172. * FAILURE*, WILL APPEAR IN THE DAYFILE.
  173. *
  174. *
  175. * *WRITE VERIFY FAILURE.* (WVF)
  176. *
  177. * THIS MESSAGE IS POSTED IF THE TAPE WAS POSITIONED PROPERLY
  178. * AND THE BLOCK ID OF THE WINDOW COULD BE READ CORRECTLY, BUT
  179. * THE GAP AND CURRENT BLOCK CANNOT BE READ.
  180. SPACE 4,10
  181. *** DEFINITIONS AND ABBREVIATIONS.
  182. *
  183. * THE FOLLOWING ARE TERMS THAT WILL BE USED THROUGHOUT
  184. * THIS ROUTINE.
  185. *
  186. * BID BLOCK ID.
  187. *
  188. * BOT BEGINNING OF TAPE.
  189. *
  190. * CHUNK THIS DEFINES THE PORTION OF A BLOCK HANDLED BY EACH
  191. * PPU DURING LONG BLOCK OPERATIONS.
  192. *
  193. * CTS CARTRIDGE TAPE SUBSYSTEM.
  194. *
  195. * EOT END OF TAPE.
  196. *
  197. * LGB LAST GOOD BLOCK.
  198. *
  199. * PCL PROGRAMMABLE CLIPPING LEVEL.
  200. *
  201. * TM TAPE MARK.
  202. *
  203. * SNB SYSTEM NOISE BYTE.
  204. *
  205. * UBC UNUSED BIT COUNT. AS USED TO DEFINE THE EXACT NUMBER
  206. * OF BYTES AND FRAMES TO BE WRITTEN ON OR READ FROM
  207. * TAPE.
  208. *
  209. * UDT UNIT DESCRIPTOR TABLE. THE AREA OF *MAGNET,S*
  210. * FIELD LENGTH WHICH CONTAINS THE INFORMATION DESCRIBING
  211. * EACH TAPE UNIT AND THE CHARACTERISTICS OF THE TAPE
  212. * BEING PROCESSED.
  213. *
  214. * EXPLICIT PROCESSOR. DEFINES A CASE WHERE CERTAIN
  215. * UNITS CAN ONLY BE SERVICED BY CERTAIN COPIES
  216. * 0F *1MT* DUE TO CONFIGURATION RESTRICTIONS.
  217. SPACE 4,10
  218. *** PROGRAMMING CONSIDERATIONS.
  219. *
  220. * IN ORDER TO CONSERVE SPACE, THIS PROGRAM OVERLAYS ITSELF
  221. * EXTENSIVELY. IT IS DESIGNED TO MAKE MAXIMUM USE OF AREAS
  222. * THAT ARE NORMALLY SACRED SUCH AS THE 5 BYTE HEADER
  223. * ON PPU ROUTINES, FOR EXAMPLE. PLEASE TAKE DUE CARE
  224. * WHEN ATTEMPTING MODIFICATIONS.
  225. *
  226. * READ/WRITE OVERLAY GROUPS MUST BE IN THE FOLLOWING ORDER -
  227. * MAIN PROCCESOR.
  228. * LONG BLOCK PROCESSOR.
  229. * LABEL PROCESSOR.
  230. * ERROR PROCESSOR MUST BE LAST.
  231. *
  232. * REMEMBER WHEN READING/WRITING DIRECTLY FROM/TO THE UDT TO BE
  233. * SURE THAT *1MT* IS AT *MAGNET,S* CONTROL POINT.
  234. *
  235. * NOTE THE OVERLAY NAMES OF THE FOLLOWING OVERLAYS ARE HARD
  236. * CODED INTO EXECUTE MACROS. *LOV* CANNOT BE USED TO LOAD
  237. * THESE OVERLAYS BECAUSE THE CHANNEL MAY NOT BE RESERVED
  238. * OR CHANNEL PROBLEMS OCCURRED WHICH MUST BE DIAGNOSED
  239. * BEFORE ATTEMPTING MORE FUNCTIONS.
  240. * 3MA - INITIALIZE TAPE EXECUTIVE.
  241. * 3MB - FUNCTION REJECT PROCESSOR (ALL EXCEPT CTS).
  242. * 3MD - ATS/MTS SPECIAL MESSAGE PROCESSOR.
  243. *
  244. * USE THE CROSS REFERENCE TABLES WHEN TAGS ARE SHUFFLED.
  245. * IN PARTICULAR THE TAGS IN READ/WRITE ARE REFERENCED BY LONG
  246. * BLOCK OVERLAYS AT SEVERAL PLACES.
  247. SPACE 4,10
  248. *** RESIDENCY RECOMMENDATIONS.
  249. *
  250. * THE FOLLOWING IS A SUGGESTED ORDER OF PRIORITY FOR MAKING
  251. * ROUTINES CM OR ALTERNATE LIBRARY RESIDENCE.
  252. *
  253. * 1) CONTROL POINT/CODED PRESET.
  254. * 2) READ FUNCTION PROCESSOR.
  255. * 3) WRITE FUNCTION PROCESSOR.
  256. * 4) DROP PPU PROCESSOR.
  257. * 5) 1MT ITSELF.
  258. * 6) *3MB* IF RECOVERY FROM FUNCTION REJECTS DESIRED.
  259. SPACE 4,10
  260. *** DOCUMENTATION CONVENTIONS.
  261. *
  262. * TAG CONVENTIONS.
  263. * ASSUME A ROUTINE NAMED *ABC*.
  264. * *ABCA* - *ABCZ* WOULD BE CONSTANTS AND INSTRUCTIONS MODIFIED
  265. * *.EABC* WOULD BE FOR LOCATIONS REFERENCED BY THE ERROR
  266. * PROCESSOR.
  267. *
  268. * THE TERM *ATS-TYPE CONTROLLER* MEANS AN ATS, FSC, CMTS OR
  269. * ISMT CONTROLLER. IF IT IS NECESSARY TO DISTINGUISH BETWEEN
  270. * THESE FOUR TYPES, IT WILL BE EXPLICITLY DOCUMENTED.
  271. SPACE 4,10
  272. ** MISCELLANEOUS SYMBOL DEFINITIONS.
  273.  
  274.  
  275. *CALL COMPMAC
  276. *CALL COMSDFS
  277. *CALL COMSMSC
  278. SPACE 4,10
  279. ** MICRO DEFINITIONS.
  280.  
  281.  
  282. VERNUM MICRO 6,3,+"VER170"+
  283. SPACE 4,10
  284. ** CCC FUNCTION CODES FOR CTS.
  285.  
  286.  
  287. F0001 EQU 0001 RELEASE UNIT
  288. F0002 EQU 0002 CONTINUE
  289. F0010 EQU 0010 REWIND
  290. F0110 EQU 0110 REWIND/UNLOAD
  291. F0012 EQU 0012 GENERAL STATUS
  292. F0013 EQU 0013 FORESPACE BLOCK
  293. F0016 EQU 0016 LOCATE BLOCK
  294. F0113 EQU 0113 BACKSPACE BLOCK
  295. F0112 EQU 0112 DETAILED STATUS
  296. F0212 EQU 0212 READ BLOCK ID
  297. F0312 EQU 0312 READ BUFFERED LOG
  298. F0020 EQU 0020 CONNECT
  299. F0220 EQU 0220 CONNECT AND SELECT DATA COMPRESSION
  300. F0040 EQU 0040 READ FORWARD
  301. F0140 EQU 0140 READ REVERSE
  302. F0050 EQU 0050 WRITE
  303. F0250 EQU 0250 SHORT WRITE
  304. F0051 EQU 0051 WRITE TAPE MARK
  305. F0414 EQU 0414 AUTOLOAD
  306. SPACE 4,10
  307. ** TRACE CODE FOR CTS.
  308.  
  309. TE EQU 0 = 1 TO ENABLE TRACE BUFFER
  310. SPACE 4,10
  311. ** CCC ERROR CODES FOR CTS.
  312.  
  313. CE001 EQU 1 TRANSPORT NOT ON-LINE
  314. CE007 EQU 7 DENSITY MARK/BLOCK ID READ FAILURE
  315. CE012 EQU 12 WRITE ERROR AT LOAD POINT
  316. CE032 EQU 32 DRIVE BUSY
  317. CE033 EQU 33 CONTROL UNIT BUSY
  318. CE051 EQU 51 NO TAPE UNIT CONNECTED
  319. SPACE 4,10
  320. ** ERPA CODES FOR CTS.
  321.  
  322. ER33 EQU 0#33 LOAD FAILURE
  323. SPACE 4,10
  324. ** ASSEMBLY CONSTANTS.
  325.  
  326.  
  327. QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS
  328. BUFC EQU 2765 BUFFER CONTROL WORD
  329. BUF EQU BUFC+5 FWA DATA BUFFER
  330. BUFL EQU BUF+5000 CONTROL WORD FOR LEVEL NUMBER
  331. LBBY EQU 3600 LONG BLOCK BYTES PER INPUT
  332. BUFB EQU 3750 SEE NOTE
  333. LICH EQU 12 LI FULL CHUNK COUNT
  334. LIRW EQU 400 LI REMAINDER IN WORDS
  335. CH EQU TC TAPE CHANNEL
  336. ERLA EQU 7775-2*500 ERROR PROCESSOR LOAD ADDRESS
  337. ERLB EQU 7775-1*500 SPECIAL ERROR PROCESSOR LOAD ADDRESS
  338. BLKS EQU 40 BLOCKS TO TRANSFER BEFORE REQUEST SWITCH
  339. BLKX EQU 3776 BLOCKS TO TRANSFER BEFORE SWITCH (ISMT)
  340. BLKC EQU 100 BLOCKS TO TRANSFER BEFORE SWITCH (CTS)
  341. SBLK EQU 400 BLOCKS TO SKIP BEFORE CHECKING ERROR FLAG
  342. LABL EQU 80D/2 LABEL LENGTH IN BYTES
  343. CLBL EQU 81D*8D/12D MAXIMUM LENGTH OF ANY LABEL BLOCK (CTS)
  344. LABW EQU 80D/2/5 CM WORDS IN LABEL
  345. SLBY EQU 2400 SKIP LI FORMAT BYTES PER INPUT
  346. ERAL EQU 45D ERASE LIMIT SET TO 15 FEET
  347. BCKS EQU 3 NUMBER OF BYTES TO CHECKSUM (POWER OF 2)
  348. LCKS EQU 5000 LENGTH TO USE IN CHECKSUM OF LONG BLOCKS
  349. MXBS EQU 76 MAXIMUM NUMBER OF CONSECUTIVE BACKSPACES
  350. ERRPL MXBS-100 MAXIMUM NUMBER OF BACKSPACES TOO LARGE
  351.  
  352. * NOTE BUFB IS BUFFER FOR LONG BLOCK READS AND WRITES
  353. * AND ALSO THE ORIGIN ADDRESS FOR READ AND WRITE
  354. * ERROR PROCESSING. INCREASING IT,S VALUE WILL
  355. * INCREASE THE ALLOWABLE SIZE OF THE READ AND WRITE
  356. * LONG BLOCK OVERLAYS AND DECREASE THE MAXIMUM
  357. * LENGTH OF THE ERROR PROCESSORS.
  358. SPACE 4,10
  359. ** COMMON DECKS.
  360.  
  361. *CALL COMPCHI
  362. QUAL COMSCIO
  363. *CALL COMSCIO
  364. QUAL *
  365. QUAL CPS
  366. *CALL COMSCPS
  367. QUAL *
  368. QUAL EJT
  369. *CALL COMSEJT
  370. QUAL *
  371. QUAL EVT
  372. *CALL COMSEVT
  373. QUAL *
  374. *CALL COMSPIM
  375. QUAL SRU
  376. MT$ SET 1 ONLY ASSEMBLE MT INCREMENTS
  377. *CALL COMSSRU
  378. QUAL *
  379. QUAL SSD
  380. *CALL COMSSSD
  381. QUAL *
  382. *CALL COMSZOL
  383. LIST X
  384. QUAL MTX
  385. *CALL COMSMTX
  386. QUAL *
  387. LIST *
  388. SPACE 4,10
  389. **** DIRECT LOCATION ASSIGNMENTS.
  390.  
  391.  
  392. LOC 16
  393. T8 BSS 1 TEMPORARY
  394. T9 BSS 1 TEMPORARY
  395. ED BSS 1 EQUIPMENT DESCRIPTION
  396. HP BSS 1 HARDWARE PARAMETERS
  397. EO BSS 1 EST ORDINAL
  398. ES BSS 1 EXTENDED STATUS
  399. DS BSS 1 DEVICE STATUS
  400. EI BSS 1 ERROR ITERATIONS
  401. WP BSS 1 BID WINDOW POINTER (MTS/ATS)
  402. BL BSS 2 BLOCK COUNT
  403. UP BSS 1 USER OPTIONS, FLAGS
  404. LG BSS 2 LENGTH OF LAST GOOD RECORD
  405. EP BSS 2 ERROR PARAMETERS
  406. EC BSS 1 ERROR CODE
  407.  
  408. * THE FOLLOWING FIVE CELLS ARE NOT WRITTEN BACK TO THE UDT ON
  409. * REQUEST COMPLETION BECAUSE SOME OVERLAYS USE *WC* AND *OV* AS
  410. * LOCAL CELLS.
  411.  
  412. LT BSS 1 LABEL TYPE, DEVICE TYPE, REQUESTED DENSITY
  413. SP BSS 1 SOFTWARE OPTIONS
  414. FM BSS 1 TAPE FORMAT AND NOISE BYTE DEFINITION
  415. WC BSS 1 CM WORDS PER PRU
  416. OV BSS 1 CHUNK COUNT - LONG BLOCKS
  417. BSS 1 RESERVED
  418. TB BSS 1 BLOCK TYPE (READ)
  419. CF BSS 1 CHANNEL FLAGS
  420. * 13 - 10 = RESERVED
  421. * 7, 6 = 00 - ISMT CONTROLLER
  422. * = 01 - ATS/CMTS/FSC CONTROLLER
  423. * = 10 - MTS CONTROLLER
  424. * = 11 - CTS CONTROLLER
  425. * 5 - 1 = RESERVED
  426. * 0 = 64 CHARACTER SET FLAG
  427. BSS 1 RESERVED
  428. RS BSS 1 RETURN STATUS
  429. FN BSS 1 FUNCTION NUMBER
  430. MD BSS 1 DRIVER MODE FUNCTION
  431. PA BSS 1 PARAMETER
  432. PB BSS 1 PARAMETER
  433. BSS 2 (RA AND FL)
  434. SC BSS 1 SCRATCH
  435. BT BSS 1 BLOCKS TRANSFERRED/OVERLAY ENTRY ADDRESS
  436. BY BSS 1 BYTES TO BE PROCESSED
  437. CN BSS 5 CM BUFFER
  438. DF BSS 1 DROP OUT FLAG (SEE CDO)
  439. LOC *O
  440. ****
  441. TITLE GENERAL USAGE MACROS.
  442. BUFFER SPACE 4,10
  443. ** BUFFER - CHECK FOR BUFFER OVERFLOW.
  444. *
  445. * BUFFER B
  446. * B IF DEFINED MEANS CHECK FOR LONG BLOCK BUFFER (BUFB),
  447. * INSTEAD OF *BUF*.
  448.  
  449.  
  450. PURGMAC BUFFER
  451. BUFFER MACRO B
  452. MACREF BUFFER
  453. USE BUFFER
  454. IFC EQ,*B**,4
  455. LIST M
  456. ERRNG BUFC-* OVERFLOWED INTO BUFFER
  457. LIST *
  458. ELSE 3
  459. LIST M
  460. ERRNG BUFB-* OVERFLOWED INTO BUFFER
  461. LIST *
  462. ENDM
  463. CALL SPACE 4,10
  464. ** CALL - LOAD AND ENTER OVERLAY AT DEFINED ENTRY POINT.
  465. *
  466. *
  467. * CALL EPR
  468. * ENTRY *EPR* = DESIRED ENTRY POINT AS DEFINED BY ENTRY MACRO.
  469.  
  470.  
  471. PURGMAC CALL
  472.  
  473. CALL MACRO EPR
  474. MACREF CALL
  475. LDN EPR/10000
  476. RJM LOV
  477. ENDM
  478. C6364 SPACE 4,10
  479. ** C6463 - GENERATE TABLE FOR MODIFICATION OF CONVERSION TABLES
  480. * FROM 64 TO 63 CHARACTER SET.
  481. *
  482. * C6463 MAC,CH,P
  483. * ENTRY *MAC* = MACRO TO BE CALLED TO GENERATE CHARACTERS.
  484. * *CH* = CHARACTER.
  485. * *P* = IF DEFINED, 1 ADDRESS BYTE AND 2 MODIFICATION
  486. * BYTES WILL BE GENERATED AND PLACED IN A SEPARATE TABLE.
  487.  
  488.  
  489. C6463 MACRO A,B,P
  490. LOCAL C,D
  491. C BSS 0
  492. LOC *O
  493. D BSS 0
  494. LOC C
  495. IFC EQ,*P**
  496. C63 RMT
  497. CON D-1
  498. A B
  499. C63 RMT
  500. ELSE
  501. C63P RMT
  502. CON D-2
  503. A B
  504. C63P RMT
  505. ENDIF
  506. ENDM
  507. ENTRY SPACE 4,10
  508. ** ENTRY - DEFINE OVERLAY ENTRY POINT.
  509. *
  510. *
  511. * ENTRY NAME
  512. * ENTRY *NAME* = NAME OF ENTRY ADDRESS.
  513.  
  514.  
  515. PURGMAC ENTRY
  516.  
  517. ENTRY MACRO NAME
  518. MACREF ENTRY
  519. QUAL
  520. NAME EQU *+1R".MA"*10000
  521. QUAL ".QNAM"
  522. ENDM
  523. ERROVL SPACE 4,10
  524. ** ERROVL - TEST FOR OVERFLOW INTO ERROR PROCESSOR.
  525. *
  526. * ERROVL A
  527. * A IF DEFINED USE INSTEAD OF ORIGIN ADDRESS FOR OVERFLOW.
  528.  
  529. PURGMAC ERROVL
  530.  
  531.  
  532. ERROVL MACRO A
  533. MACREF ERROVL
  534. IFC NE,/A//
  535. LIST M
  536. ERRNG ERLA-A OVERFLOWED INTO BUFFER
  537. LIST *
  538. ELSE
  539. LIST M
  540. ERRNG ERLA-* OVERFLOWED INTO BUFFER
  541. LIST *
  542. ENDIF
  543. ENDM
  544. JMP SPACE 4,10
  545. ** JMP - THREADED JUMP.
  546. *
  547. *
  548. * JMP ADDR
  549. * ENTRY *ADDR* = JUMP ADDRESS.
  550.  
  551.  
  552. JMP MACRO ADDR
  553. IF -DEF,.ADDR,1
  554. .ADDR MAX ADDR,*-40
  555. IFGT .ADDR,*-40
  556. UJN .ADDR
  557. .ADDR SET *-1
  558. ELSE 2
  559. .ADDR SET *
  560. LJM ADDR
  561. ENDM
  562. SADT SPACE 4,35
  563. ** SADT - SET ADDRESS TABLE MACRO.
  564. * THIS MACRO WILL GENERATE THE TABLE ENTRIES NECESSARY TO
  565. * PROVIDE SETTING ADDRESSES IN THE FOLLOWING 24 BIT
  566. * INSTRUCTION. ONE, TWO, OR THREE SETS OF TABLE ENTRIES
  567. * ARE GENERATED DEPENDING ON THE VALUE OF *.IM*. THE FIRST
  568. * SET OF TABLE ENTRIES IS FOR THE CURRENT OVERLAY. THE ONE OR
  569. * TWO ADDITIONAL ONES WILL BE GENERATED BASED ON THE FOLLOWING-
  570. *
  571. * IF .IM .NE. 0, A SET OF TABLE ENTRIES IS GENERATED FOR THE
  572. * ERROR PROCESSORS THAT FOLLOW.
  573. *
  574. * IF .IM = 2, A SET OF ADDRESSES IS GENERATED FOR THE LONG
  575. * BLOCK ROUTINE THAT FOLLOWS.
  576. *
  577. *SADT MACRO DC,C,BIAS,ABS,SE
  578. *
  579. * DC = DIRECT CELLS WHERE 17 BIT ADDRESS VALUE IS TO BE TAKEN
  580. * FROM.
  581. * CF = IF *C* COMPLEMENT RESULT OF ABOVE.
  582. * BIAS = VALUE TO BE ADDED TO CONTENTS OF DIRECT CELLS.
  583. * (MAXIMUM VALUE IS 7)
  584. * ABS = IF *A* ADD RA TO ADDRESS.
  585. * SE = IF PRESENT, GENERATE ONLY ONE SET OF TABLE ENTRIES.
  586. *
  587. * TABLE FORMAT.
  588. * 2 WORDS PER ENTRY.
  589. *
  590. *T 11/ ADDRESS,1/C,6/ DC,3/ BI,1/A,2/
  591. * C COMPLEMENT IF SET.
  592. * DC POINTER TO DIRECT CELL CONTAINING VALUE.
  593. * BI BIAS (AMOUNT TO ADD TO VALUE FROM DIRECT CELLS).
  594. * A ABSOLUTE FLAG.
  595.  
  596.  
  597. SADT MACRO DC,CF,BIAS,ABS,SE
  598. LOCAL Z,X
  599. QUAL
  600. Z BSS 0
  601. ERRNG 3777-Z ADDRESS TOO LARGE FOR MODIFICATION TABLE
  602. QUAL ".QNAM"
  603. X BSS 0
  604. SADT RMT
  605. VFD 11/X
  606. IFC EQ,*CF*C*,2
  607. VFD 1/1 COMPLEMENT FLAG
  608. ELSE 3
  609. VFD 1/0
  610. IFC NE,*CF**,1
  611. ERR INCORRECT COMPLEMENT FLAG
  612. VFD 6/DC
  613. VFD 3/BIAS
  614. IFC EQ,*ABS*A*,2
  615. VFD 1/1
  616. ELSE 3
  617. VFD 1/0
  618. IFC NE,*ABS**,1
  619. ERR INCORRECT ABSOLUTE FLAG
  620. VFD 2/0
  621. RMT
  622. .L1 IFEQ .IM,2
  623. SLBP RMT
  624. VFD 11/Z
  625. .L2 IFC EQ,*CF*C*
  626. VFD 1/1 COMPLEMENT FLAG
  627. .L2 ELSE
  628. VFD 1/0
  629. .L2 ENDIF
  630. VFD 6/DC
  631. VFD 3/BIAS
  632. .L3 IFC EQ,*ABS*A*
  633. VFD 1/1
  634. .L3 ELSE
  635. VFD 1/0
  636. .L3 ENDIF
  637. VFD 2/0
  638. RMT
  639. .L1 ENDIF
  640. .S1 IFNE .IM,0
  641. .S6 IFC EQ,$SE$$
  642.  
  643. * MAKE ERROR OVERLAY TABLE.
  644.  
  645. ERRNG BUFB-Z ADDRESS OVERFLOWS ERROR OVERLAY
  646. SERR RMT
  647. VFD 11/Z
  648. .S2 IFC EQ,*CF*C*
  649. VFD 1/1 COMPLEMENT FLAG
  650. .S2 ELSE
  651. VFD 1/0
  652. .S2 ENDIF
  653. VFD 6/DC
  654. VFD 3/BIAS
  655. .S3 IFC EQ,*ABS*A*
  656. VFD 1/1
  657. .S3 ELSE
  658. VFD 1/0
  659. .S3 ENDIF
  660. VFD 2/0
  661. RMT
  662.  
  663. * MAKE MTS ERROR OVERLAY TABLE.
  664.  
  665. SMER RMT
  666. VFD 11/Z
  667. .S4 IFC EQ,*CF*C*
  668. VFD 1/1
  669. .S4 ELSE
  670. VFD 1/0
  671. .S4 ENDIF
  672. VFD 6/DC
  673. VFD 3/BIAS
  674. .S5 IFC EQ,*ABS*A*
  675. VFD 1/1
  676. .S5 ELSE
  677. VFD 1/0
  678. .S5 ENDIF
  679. VFD 2/0
  680. RMT
  681. .S6 ENDIF
  682. .S1 ENDIF
  683. ENDM
  684. SPACE 4,10
  685. ** THE FOLLOWING CONSTANTS ARE USED IN CALLING THE INSTRUCTION
  686. * MODIFICATION MACRO TO DEFINE THE RELATIVE ADDRESS WHERE THE
  687. * VALUES WILL BE SET.
  688.  
  689. LOC T2
  690. .FT BSS 2 FIRST
  691. .LM BSS 2 LIMIT
  692. .FE BSS 2 FET ADDRESS
  693. .LF BSS 2 LIMIT - FIRST
  694. .BS BSS 2 BLOCK SIZE
  695. LOC *O
  696. TSAD SPACE 4,10
  697. ** TSAD - DEFINE SET ADDRESS TABLE.
  698. * TABLE IS TERMINATED BY A 0 WORD.
  699. *
  700. *
  701. *LOC TSAD B
  702. * ENTRY *LOC* = FWA OF SET ADDRESS TABLE.
  703. * *B* = IF PRESENT NAME OF REMOTE CODE.
  704.  
  705.  
  706. MACRO TSAD,A,B
  707. A BSS 0
  708. SADT HERE
  709. IFC NE,*B**,1
  710. B HERE
  711. CON 0 TERMINATE TABLE
  712. ENDM
  713. TITLE OVERLAY COMMUNICATION MACROS.
  714. * OVERLAY CONTROL.
  715.  
  716.  
  717. .NA SET 0
  718. ADNAM SPACE 4,10
  719. ** ADNAM - ADVANCE OVERLAY NAME MACRO.
  720. * ADVANCES OVERLAY NAME.
  721.  
  722.  
  723. PURGMAC ADNAM
  724. ADNAM MACRO
  725. .NA SET .NA+1
  726. .MA MICRO .NA,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
  727. .OA MICRO 1,3, 3M".MA"
  728. ENDM
  729. OVERLAY SPACE 4,15
  730. ** OVERLAY - GENERATE OVERLAY CONSTANTS.
  731. *
  732. * NOTE AT PRESET TIME IN AN OVERLAY THE UNIT MAY OR MAY
  733. * NOT BE CONNECTED DEPENDING ON WHETHER THE CHANNEL
  734. * IS DEDICATED. THUS, NO CHANNEL OPERATIONS CAN BE DONE
  735. * IN PRESET. ALSO ABNORMAL ERROR EXITS MUST BE DONE
  736. * BY FIRST COMPLETING THE OVERLAY LOAD. FOR EXAMPLE
  737. * SEE THE BEGINNING OF PRESET IN THE WRITE OVERLAY.
  738. *
  739. * OVERLAY (TEXT),LDA,PRS,QN
  740. * ENTRY *TEXT* = TEXT OF SUBTITLE.
  741. * *LDA* = LOAD ADDRESS. (IF ABSENT ASSUMES *OVL*.
  742. * *PRS* = IF PRESENT DO NOT GENERATE CALL TO *PRS*.
  743. * *QN* = QUALIFIER NAME. (OVERLAY NAME IF ABSENT.)
  744.  
  745.  
  746. PURGMAC OVERLAY
  747.  
  748. OVERLAY MACRO TEXT,LDA,P,QN
  749. LOCAL A
  750. USE OVERLAY
  751. QUAL
  752. ADNAM ADVANCE OVERLAY NAME
  753. IFC NE,*QN**,3
  754. .QNAM MICRO 1,, QN
  755. QUAL QN
  756. ELSE 2
  757. .QNAM MICRO 1,, ".OA"
  758. QUAL ".OA"
  759. TTL 1MT/".OA" - TEXT
  760. TITLE
  761. LOAD MICRO 1,3,*OVL*
  762. IFC NE,*LDA**,1
  763. LOAD MICRO 1,,*LDA*
  764. IDENT ".OA","LOAD" TEXT
  765. *COMMENT 1MT - TEXT
  766. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  767. ORG "LOAD"
  768. IFC EQ,*P**
  769. PRSX LJM *
  770. LJM PRS
  771. ENDIF
  772. .IM SET 0 DESELECT ERROR PROCESSOR INSTRUCTION LIST
  773. ENDM
  774. SPACE 4,10
  775. ** MAKE SURE THAT 1MT SYMBOL *LBBY* IS 5 TIMES GREATER
  776. * THAN COMSMTX SYMBOL *LBWD*.
  777.  
  778.  
  779. ASCK EQU /MTX/LBWD*5
  780. ERRNZ ASCK-LBBY IF LONG BLOCK DEFINITIONS OUT OF SYNC
  781. TITLE MAIN PROGRAM.
  782. 1MT SPACE 4,10
  783. ** 1MT - MAIN PROGRAM.
  784.  
  785.  
  786. ORG PPFW
  787. PRS LJM /PRESET/PRS PRESET MAIN PROGRAM
  788. RET EQU PRS
  789. RET SPACE 4,10
  790. ** RET - STANDARD RETURN POINTS.
  791. *
  792. * CALLS CEC, UAD.
  793.  
  794.  
  795. * RET - SET FET COMPLETE. (A) = FET COMPETION CODE.
  796.  
  797. *RET RJM CEC SET FET COMPLETE (SETUP IN PRESET)
  798.  
  799. * RET1 - NORMAL COMPLETION.
  800.  
  801. RET1 LDN /MTX/NCP
  802. UJN RET5 RETURN NORMAL COMPLETION STATUS
  803.  
  804. * RET2 - REQUEUE.
  805.  
  806. RET2 LDN 0
  807. UJN RET5 REQUEUE REQUEST
  808.  
  809. * RET3 - RETURN WITH ERROR. (A) = ERROR CODE.
  810.  
  811. RET3 STD EC
  812.  
  813. * RET4 - RETURN WITH ERROR. (EC) = ERROR CODE.
  814.  
  815. RET4 LDN /MTX/ERR
  816. * UJN RET5 RETURN ERROR STATUS
  817.  
  818. * RET5 - RETURN. (A) = COMPLETION STATUS.
  819.  
  820. RET5 STD RS
  821. LDN 0 DO NOT SET FET COMPLETE
  822. RJM CEC CHANGE TO MAGNET CP
  823. LDN /MTX/UERC-/MTX/UST5+1 SET WORD COUNT FOR WRITE
  824. STD T2
  825. RJM UAD SET UDT ADDRESS
  826. ADN /MTX/UST5
  827. CWM DNCV,T2
  828. SBN -/MTX/UST1+/MTX/UERC+1
  829. CWM ED,TR
  830. SBN -/MTX/UXRQ+/MTX/UST1+3
  831. CWD RS
  832. * LJM PNR PROCESS NEXT REQUEST
  833. TITLE PROCESS NEXT REQUEST.
  834. PNR SPACE 4,10
  835. ** PNR - PROCESS NEXT REQUEST.
  836. *
  837. * ENTRY (BT) = 0.
  838. *
  839. * CALLS CDO, CON, *CPP*, *DPP*, EXR, LOV, PIC, REL, UAD.
  840. *
  841. * MACROS CALL, MONITOR.
  842.  
  843.  
  844. PNR RJM CDO CHECK DROP OUT CONDITIONS
  845. PNR1 LDN PPAL CHECK PPU AVAILABILITY
  846. CRD CM
  847. LDN /MTX/UNITL UPDATE UDT ADDRESS
  848. PNR2 RAM UADA
  849. LMC * (LWA+1 OF UDT)
  850. PNRA EQU *-1
  851. NJN PNR3 IF NOT END OF UDT
  852. LDC -* - LENGTH OF UDT
  853. PNRB EQU *-1
  854. UJN PNR2 RECYCLE THROUGH UDT,S
  855.  
  856. * REENTRY FROM ERROR ON CTS UNIT RELEASE.
  857.  
  858. PNR3 RJM REL RELEASE LAST RESERVED UNIT
  859. LDD CM+4
  860. PNRC EQU *-1
  861. * LDN 0 (FORCE DROP OUT)
  862. ZJN PNR5 IF ALL PP-S IN USE
  863. LDM UADA
  864. LMC * (STARTING UDT ADDRESS)
  865. PNRD EQU *-1
  866. NJN PNR4 IF NOT END OF A PASS
  867. PNRE LDN 0
  868. ZJN PNR5 IF NO ACTIVITIES PERFORMED
  869. SOM PNRE RESET ACTIVITY COUNT
  870. PNR4 LDD DF
  871. ZJN PNR6 IF NO DROP OUT
  872.  
  873. * ENTER HERE (VIA *RJM*) TO HANG PP.
  874.  
  875. HNG CON 0 ENTRY
  876. * MONITOR HNGM HANG PP
  877.  
  878. * ENTER HERE TO DROP PPU.
  879.  
  880. PNR5 CALL DPP DROP PPU
  881.  
  882. * PROCESS UNIT. (A) = 0.
  883. * ENTRY MADE HERE FROM PRS.
  884. * IF DROP OUT FORCED THE FOLLOWING CODE UP TO THE START OF
  885. * RESIDENT SUBROUTINES MAY BE OVERLAID.
  886. *
  887. * FIRST 30D BYTES ARE USED FOR FUNCTION REJECT PARAMETERS.
  888.  
  889. .OVLR BSS 0 OVERLAY RESIDENT ADDRESS
  890.  
  891. PNR6 STD RS INDICATE NO FUNCTION FOR ERROR PROCESSING
  892. RJM UAD SET UNIT CONNECT INFORMATION
  893. ADN /MTX/UST1
  894. CRD ED
  895. ADK /MTX/UVRI-/MTX/UST1 GET ASSIGNED EJT ORDINAL
  896. CRD CN
  897. SFA EST,EO
  898. ADK EQDE
  899. CRD CM
  900. LDD CM
  901. LPN 3
  902. LMN /CPS/DWES
  903. ZJN PNR9 IF UNIT DOWN
  904. LDD CM+1 CHECK PRIMARY CHANNEL
  905. CHTE *+1
  906. LMC CH+4000
  907. ZJN PNR8 IF UNIT ACCESSIBLE
  908. PNRF UJN PNR7 CHECK SECONDARY CHANNEL
  909. * SHN 21-12 (CTS UNIT)
  910. PJN PNR11 IF PRIMARY CHANNEL NOT DOWN
  911. PNR7 LDD CM+2 CHECK SECONDARY CHANNEL
  912. CHTE *+1
  913. LMC CH+4000
  914. NJN PNR11 IF UNIT NOT ACCESSIBLE
  915. PNR8 RJM CON CONNECT UNIT
  916. PNRG EQU *-1
  917. * RJM PIC (CTS)
  918. PNR9 ZJN PNR12 IF NOT CONNECTED
  919. SFA EJT,CN
  920. ADK JSNE
  921. CRD CM
  922. LDD ED CLEAR JOB ROLLED OUT
  923. SCN 1
  924. STD ED
  925. LDD CM+4
  926. LPC 176
  927. LMN /EJT/EXJS*2
  928. ZJN PNR10 IF JOB EXECUTING OR UNIT NOT ASSIGNED
  929. AOD ED SET JOB ROLLED OUT
  930. PNR10 RJM UAD
  931. ADK /MTX/UXRQ GET REQUEST
  932. CRD RS
  933. ADK /MTX/UST1-/MTX/UXRQ UPDATE UNIT STATUS AND JOB STATUS
  934. CWD ED
  935. LDD RS
  936. PNR11 NJN PNR13 IF REQUEST ALREADY IN PROGRESS OR COMPLETE
  937. LDD FN
  938. PNR12 ZJN PNR13 IF NO REQUEST
  939. LPN 77
  940. SBN /MTX/MDFN
  941. PJN PNR13 IF NOT *1MT* REQUEST
  942. LDM UADA SET UDT ADDRESS
  943. STD CM+1
  944. LDD DS SET BUSY STATUS
  945. STD CM+2
  946. MONITOR TDRM SET REQUEST IN PROGRESS
  947. LDD CM+4
  948. NJN PNR14 IF REQUEST IN PROGRESS SET
  949. PNR13 LJM PNR1 PROCESS NEXT REQUEST
  950.  
  951. * CAUTION - THE FOLLOWING CODE DESTROYS SC, BT, AND BY.
  952. * SC AND BT SHOULD NOT BE REUSED UNTIL AFTER *CPP* PRESET.
  953.  
  954. PNR14 LDD MA GET FUNCTION TABLE ENTRY
  955. CRD SC
  956. ADN 1 GET *ASCM* PARAMETERS
  957. CRD CN
  958. RJM UAD GET UDT INFORMATION
  959. ADK /MTX/UXRQ
  960. CRD RS
  961. ADK /MTX/UCIB-/MTX/UXRQ
  962. CRM CIOE,ON
  963. ADK /MTX/UST2-/MTX/UCIB-1
  964. CRM EI,TR
  965. ADK /MTX/UST5-/MTX/UST4-1
  966. CRM DNCV,ON
  967. ADK /MTX/UERC-/MTX/UST5-1
  968. CRM ECNT,ON
  969. PNRH SBN /MTX/UERC-/MTX/UDS4+1
  970. * UJN PNR15 (CTS UNIT)
  971. CRM MTSF,TR
  972. PNR15 LDD OA SET *ASCM* PARAMETERS FOR *EXR* CALL
  973. CWD CN
  974. LDN ZERL CLEAR ADDRESS MODIFICATION LIST
  975. CRD CN
  976. LDD SC LOAD OVERLAY
  977. SHN -6
  978. RJM LOV
  979. LDD SC
  980. LPN 17
  981. ZJN PNR16 IF NO SECOND OVERLAY
  982. SHN 6
  983. ADM NAME LOAD OVERLAY
  984. SHN -6
  985. RJM LOV
  986. PNR16 CALL CPP LOAD SPECIAL PROCESSOR AND ENTER ROUTINE
  987. PNRI BSS 0 USED TO DETECT IF *CPP* CALLED FROM HERE
  988. TITLE RESIDENT SUBROUTINES.
  989. CDO SPACE 4,10
  990. ** CDO - CHECK DROP OUT CONDITIONS.
  991. * CHECKS MOVE FLAG, ROLLOUT FLAG, BLOCKS TRANSFERRED,
  992. * AND CHANNEL REQUESTED.
  993. *
  994. * EXIT (A) = (DF) = 0, IF NO DROP OUT NEEDED.
  995. *
  996. * USES CM - CM+4.
  997.  
  998.  
  999. CDO1 LDN 1 SET DROP OUT
  1000. CDO2 STD DF
  1001.  
  1002. CDO SUBR ENTRY/EXIT
  1003. LDN CMCL CHECK MOVE FLAG
  1004. CRD CM
  1005. LDD CM
  1006. SHN 7
  1007. LMD CP
  1008. ZJN CDO1 IF MOVE FLAG
  1009. LDD CP CHECK ROLLOUT FLAG
  1010. ADN STSW
  1011. CRD CM
  1012. LDD CM+2
  1013. LPN 1
  1014. NJN CDO1 IF ROLLOUT FLAG
  1015. LDD BT
  1016. LPC 3777
  1017. ADC -BLKS
  1018. CDOC EQU *-1
  1019. * ADC -BLKX (FOR ISMT)
  1020. * ADC -BLKC (FOR CTS)
  1021. PJN CDO1 IF MAXIMUM BLOCKS TRANSFERRED
  1022. CDOA LDC ** CHECK IF CHANNEL REQUESTED
  1023. CRD CM
  1024. CDOB LDD CM+**
  1025. SHN -13
  1026. UJN CDO2 STORE DROP OUT FLAG
  1027. CEC SPACE 4,10
  1028. ** CEC - CHANGE TO MAGNET CONTROL POINT.
  1029. *
  1030. * ENTRY (A) = FET COMPLETION STATUS.
  1031. *
  1032. * EXIT (BT) = 0.
  1033. * (CP) = RESTORED TO MAGNET,S CP ADDRESS.
  1034. *
  1035. * USES BT, CM+1 - CM+4, CN - CN+4.
  1036. *
  1037. * MACROS MONITOR.
  1038.  
  1039.  
  1040. CEC SUBR ENTRY/EXIT
  1041. STD CM+4 SAVE FET COMPLETION STATUS
  1042. SHN -14
  1043. LMC ** INCLUDE SRU INCREMENT VALUE
  1044. CECA EQU *-1
  1045. STD CM+3
  1046. CECB LDN 0
  1047. ZJN CEC2 IF AT MAGNET CP
  1048. SOM CECB CLEAR CP CHANGED FLAG
  1049. CEC1 LDD OA CHECK FOR PENDING *DRCM* FUNCTION
  1050. CRD CN
  1051. LDD CN
  1052. NJN CEC1 IF FUNCTION PENDING
  1053. LDM UADA SET *UDT* ADDRESS
  1054. STD CM+1
  1055. LDD BT SET BLOCKS TRANSFERRED
  1056. STD CM+2
  1057. MONITOR TIOM CHANGE TO MAGNET CONTROL POINT
  1058. * LDN 0
  1059. CEC2 STD BT CLEAR BLOCKS TRANSFERRED FOR *CDO* CHECK
  1060. UJN CECX RETURN
  1061. LOV SPACE 4,10
  1062. ** LOV - LOAD OVERLAY.
  1063. *
  1064. * ENTRY (A) = THIRD CHARACTER OF OVERLAY NAME.
  1065. * *ASCM* FUNCTION PARAMETERS IN OUTPUT REGISTER IF PLD
  1066. * ALREADY SEARCHED.
  1067. *
  1068. * USES T5, CM - CM+4.
  1069. *
  1070. * CALLS EXR.
  1071.  
  1072.  
  1073. LOV SUBR ENTRY/EXIT
  1074. STD T5 SAVE OVERLAY NAME
  1075. LOV1 LDD OA CHECK FOR PENDING FUNCTION
  1076. CRD CM
  1077. LDD CM
  1078. SBN ASCM+1
  1079. ERRNZ ASCM-1
  1080. PJN LOV1 IF FUNCTION PENDING
  1081. LDD T5 LOAD OVERLAY
  1082. LMC 2L3M
  1083. RJM EXR
  1084. UJN LOVX RETURN
  1085. MCH SPACE 4,10
  1086. ** MCH - MODIFY CHANNELS.
  1087. *
  1088. * ENTRY (A) = ADDRESS OF CHANNEL TABLE.
  1089. *
  1090. * USES T1, T2.
  1091.  
  1092.  
  1093. MCH1 STD T2
  1094. MCHB LDN 0 (PRESET TO PROPER INCREMENT/DECREMENT)
  1095. RAI T2
  1096. AOD T1
  1097. MCH2 LDI T1
  1098. NJN MCH1 IF MORE CHANNELS TO MODIFY
  1099.  
  1100. MCH SUBR ENTRY/EXIT
  1101. MCHA STD T1
  1102. * UJN MCHX (PRS - NO CHANNEL MODIFICATION REQUIRED)
  1103. UJN MCH2 MODIFY CHANNEL INSTRUCTIONS
  1104. REL SPACE 4,10
  1105. ** REL - RELEASE UNIT.
  1106. *
  1107. * ENTRY (RELA) .NE. 0, UNIT CONNECTED.
  1108. *
  1109. * CALLS FCN.
  1110.  
  1111.  
  1112. REL SUBR ENTRY/EXIT
  1113. LDC 0
  1114. RELA EQU *-1
  1115. ZJN RELX IF NO UNIT CONNECTED
  1116. LDN F0001 RELEASE UNIT
  1117. RJM FCN
  1118. STM RELA CLEAR CONNECTED FLAG
  1119. UJN RELX RETURN
  1120. ITM SPACE 4,10
  1121. ** ITM - INITIATE TAPE MOTION.
  1122. *
  1123. * ENTRY (ITMA) = TAPE MOTION FUNCTION.
  1124. *
  1125. * EXIT WITH CHANNEL ACTIVE.
  1126. *
  1127. * CALLS FCN.
  1128.  
  1129.  
  1130. ITM SUBR ENTRY/EXIT
  1131. LDC F0040 READ FORWARD
  1132. * LDC F0140 READ BACKWARD
  1133. * LDC F0050 WRITE EVEN FRAME COUNT (MTS)/WRITE (ATS)
  1134. * LDC F0250 WRITE ODD FRAME COUNT/SHORT WRITE
  1135. ITMA EQU *-1
  1136. RJM FCN
  1137. ACN CH
  1138. UJN ITMX RETURN
  1139. UAD SPACE 4,10
  1140. ** UAD - UNIT DESCRIPTOR TABLE ADDRESS.
  1141. *
  1142. * ENTRY (UADA) = CURRENT UDT ADDRESS.
  1143. *
  1144. * EXIT (A) = UDT ABSOLUTE ADDRESS.
  1145.  
  1146.  
  1147. UAD SUBR ENTRY/EXIT
  1148. LDD RA
  1149. SHN 6
  1150. ADC 0 UDT ADDRESS
  1151. UADA EQU *-1
  1152. UJN UADX RETURN
  1153. SPACE 4,10
  1154. ** COMMON DECKS.
  1155.  
  1156.  
  1157. EJT$ EQU 1 ASSEMBLE EJT CODE
  1158. IFP$ EQU 1 SET REMOTE INITIALIZATION
  1159. *CALL COMPGFP
  1160. TITLE EQUIPMENT PROCESSING SUBROUTINES.
  1161. ERR SPACE 4,10
  1162. ** ERR - ERROR PROCESSOR.
  1163. *
  1164. * FOR CTS THIS ROUTINE AND THE REMAINING ROUTINES IN *1MT*
  1165. * ARE OVERLAYED WITH CODE BEGINNING AT */PRESET/CEP*.
  1166. *
  1167. * (A) = ERROR CODE IF NOT CALLED FROM MAIN PROGRAM.
  1168. *
  1169. * CALLS *EMM*, MCC.
  1170. *
  1171. * MACROS CALL.
  1172.  
  1173.  
  1174. ERR CON 0
  1175. RJM MCC MASTER CLEAR CHANNEL
  1176. CALL EMM LOAD ERROR PROCESSING OVERLAY
  1177. .EERR BSS 0
  1178. FCN SPACE 4,15
  1179. ** FCN - PROCESS FUNCTION.
  1180. *
  1181. * ENTRY (A) = FUNCTION.
  1182. *
  1183. * EXIT (A) = 0.
  1184. * (FCND) = FUNCTION ISSUED.
  1185. *
  1186. * USES T6.
  1187. *
  1188. * CALLS STC, *3MB*.
  1189. *
  1190. * MACROS EXECUTE.
  1191.  
  1192.  
  1193. FCN SUBR ENTRY/EXIT
  1194. ADC 0 ADD EQUIPMENT NUMBER
  1195. FCNA EQU *-1
  1196. FAN CH FUNCTION EQUIPMENT
  1197. STM FCND SAVE FUNCTION
  1198. RJM STC STATUS CHANNEL
  1199. ZJN FCNX IF NO REJECT
  1200. FCN1 STD T6 INITIALIZE *3MB* RESIDENCE FLAG
  1201. * CON 0 (ERROR ALREADY ENCOUNTERED)
  1202. FCNC EQU *-1
  1203. EXECUTE 3MB CALL FUNCTION REJECT PROCESSOR
  1204.  
  1205.  
  1206. FCND CON 0 FUNCTION ISSUED
  1207. MCC SPACE 4,10
  1208. ** MCC - MASTER CLEAR MTS/ATS CHANNEL.
  1209. * DISCONNECT CHANNEL AND ISSUE STOP TAPE MOTION FUNCTION.
  1210. *
  1211. * ENTRY (A) = ERROR CODE.
  1212. *
  1213. * EXIT (A) = 0.
  1214. * (EC) = ERROR CODE.
  1215. *
  1216. * CALLS FCN.
  1217.  
  1218.  
  1219. MCC SUBR ENTRY/EXIT
  1220. STD EC SAVE ERROR CODE
  1221. DCN CH+40
  1222. MCCA LDN 11 STOP TAPE MOTION
  1223. * UJN MCCX (PROCESSING FATAL FUNCTION REJECT)
  1224. RJM FCN
  1225. UJN MCCX RETURN
  1226. TITLE MTS/ATS CONTROLLER DEPENDENT SUBROUTINES.
  1227. CON SPACE 4,15
  1228. ** CON - PERFORM INITIAL CONNECT.
  1229. *
  1230. * ENTRY (CM+4) = BYTE 4 OF EST ENTRY *EQDE* WORD.
  1231. * (CN) = EJT ORDINAL OF ASSIGNED JOB.
  1232. *
  1233. * EXIT (A) = 0 IF UNIT RESERVED.
  1234. * (A) .NE. 0 IF UNIT CONNECTED.
  1235. * (CN) = EJT ORDINAL OF ASSIGNED JOB.
  1236. *
  1237. * ERROR EXIT TO *FCN1* IF CONNECT REJECT.
  1238. *
  1239. * USES EC.
  1240. *
  1241. * CALLS ERR, FCN, STW, UAD.
  1242.  
  1243.  
  1244. CON6 AOM RELA SET CONNECTED FLAG
  1245.  
  1246. CON SUBR ENTRY/EXIT
  1247. RJM UAD
  1248. ADK /MTX/UDS1 READ DETAILED STATUS
  1249. CRM MTDS,TR
  1250. LDD CM+4 SET UNIT AND EQUIPMENT
  1251. LPC 7017
  1252. LMN 20 MERGE IN FUNCTION
  1253. FAN CH ISSUE FUNCTION
  1254. CONA LDC 60 SET DELAY
  1255. * LDC 144 (2X PPU SPEED)
  1256. * LDC 300 (4X PPU SPEED)
  1257. * LDC 777777 (NOT MTS)
  1258. CON1 IJM CON2,CH IF FUNCTION ACCEPTED
  1259. SBN 1
  1260. NJN CON1 IF NOT TIMEOUT
  1261. DCN CH+40
  1262. CON2 LDN 0 STATUS DEVICE
  1263. RJM STW
  1264. .ECUI BSS 0
  1265. SHN 21-13
  1266. CON3 PJN CON6 IF CONNECTED
  1267. LDM MTDS CHECK RESERVE STATUS
  1268. LPN 77
  1269. CONB ZJN CON4 IF NOT POSSIBLE UNIT RESERVE ERROR
  1270. * ZJN CON5 (ATS CONTROLLER)
  1271. LMN 2
  1272. ZJN CONX IF UNIT RESERVED
  1273. CON4 LDN /MTX/CRJ CONNECT REJECT
  1274. STD EC
  1275. LJM //FCN1 PROCESS CONNECT REJECT
  1276.  
  1277. * IF A UNIT CHECK OCCURS WITH NO ERROR CODE IN *MTDS*
  1278. * BITS 0 - 6, THE UNIT IS CONNECTED. THE UNIT CHECK
  1279. * ERRORS (OTHER THAN LOAD CHECK) ARE IGNORED HERE BUT
  1280. * DETECTED BY *SED* FUNCTION.
  1281.  
  1282. CON5 RJM FCN CLEAR TRANSITORY ERRORS
  1283. LDM ATUS+1
  1284. LPN 1
  1285. ZJN CON3 IF NOT LOAD CHECK ERROR
  1286. LDN /MTX/LCH ISSUE *LOAD CHECK* MESSAGE
  1287. RJM ERR PROCESS ERROR
  1288. CUI SPACE 4,15
  1289. ** CUI - FORMAT UNIT AND/OR PERFORM NON-INITIAL CONNECT.
  1290. *
  1291. * ERROR EXIT TO *CON4* IF CONNECT REJECT.
  1292. *
  1293. * USES T7.
  1294. *
  1295. * CALLS FCN, STW.
  1296.  
  1297.  
  1298. CUI3 AOM RELA SET CONNECTED FLAG
  1299.  
  1300. CUI SUBR ENTRY/EXIT
  1301. CUI1 LDN 30 ISSUE FORMAT UNIT FUNCTION
  1302. * LDN 4 (ATS UNIT)
  1303. CUIB EQU *-1
  1304. RJM FCN
  1305. ACN CH
  1306. CUIC LDN 2 OUTPUT PARAMETERS
  1307. * LDN 3 (ATS UNIT)
  1308. OAM MTSF,CH
  1309. FJM *,CH WAIT FOR PARAMETERS TO BE TAKEN
  1310. DCN CH+40
  1311. LDN 0 STATUS DEVICE
  1312. RJM STW
  1313. SHN 21-13
  1314. PJN CUI3 IF GOOD CONNECT
  1315. CUIE UJN CUI2 MTS UNIT
  1316. * LDM MTDS (ATS UNIT)
  1317. CON MTDS
  1318. LPN 77
  1319. ZJN CUI3 IF NOT CONNECT ERROR
  1320. CUI2 LJM CON4 PROCESS CONNECT REJECT
  1321. DTS SPACE 4,10
  1322. ** DTS - GET MTS/ATS DETAILED STATUS AND ATS UNIT STATUS.
  1323. *
  1324. * CALLS FCN.
  1325.  
  1326.  
  1327. DTS1 LDN 6 INPUT UNIT STATUS
  1328. IAM ATUS,CH
  1329.  
  1330. DTS SUBR ENTRY/EXIT
  1331. LDC 112
  1332. RJM FCN ISSUE STATUS FUNCTION
  1333. ACN CH
  1334. LDN 10
  1335. IAM MTDS,CH
  1336. DTSA UJN DTSX RETURN
  1337. * UJN DTS1 (ATS CONTROLLER)
  1338. STC SPACE 4,10
  1339. ** STC - STATUS CHANNEL.
  1340. *
  1341. * EXIT (A) = 0 IF NO FUNCTION REJECT.
  1342. * = 1 IF FUNCTION REJECT.
  1343. * (STCB) = (A).
  1344. *
  1345. * USES T0.
  1346.  
  1347.  
  1348. STC2 SHN -21
  1349. STM STCB
  1350.  
  1351. STC SUBR ENTRY/EXIT
  1352. STCA LDN 77 PRESET TIMEOUT
  1353. * LDN 6 (MTS CONTROLLER)
  1354. * LDN 20 (ISMT CONTROLLER)
  1355. STD T0
  1356. STC1 IJM STC2,CH IF FUNCTION ACCEPTED
  1357. ADN 1
  1358. PJN STC1 CONTINUE WAIT
  1359. SOD T0
  1360. PJN STC1 IF NOT TIMEOUT
  1361. DCN CH+40
  1362. UJN STC2 EXIT
  1363.  
  1364.  
  1365. STCB CON 0 CHANNEL STATUS
  1366. STW SPACE 4,15
  1367. ** STW - STATUS AND WAIT COMPLETION.
  1368. *
  1369. * ENTRY (A) = 0 IF WAIT END OF OPERATION.
  1370. * = 2 IF WAIT NOT BUSY.
  1371. *
  1372. * EXIT (UBWB) = BYTE 2 OF GENERAL STATUS (BLOCK ID).
  1373. * (A) = (DS) = GENERAL STATUS.
  1374. *
  1375. * USES DS, T1.
  1376. *
  1377. * CALLS DTS, ERR, FCN.
  1378.  
  1379.  
  1380. STW4 IAN CH+40
  1381. STD DS SAVE STATUS
  1382. IAN CH+40
  1383. STM UBWB SAVE BID
  1384. UJN STW4.1 DISCONNECT CHANNEL
  1385. * LDN 2 (READ/WRITE IN PROGRESS)
  1386. STWE EQU *-1
  1387. IAM MTDS,CH READ SINGLE TRACK CORRECTION STATUS
  1388. STW4.1 DCN CH+40
  1389. LDD DS
  1390. SHN 21-13
  1391. PJN STW5 IF NO ALERT
  1392. RJM DTS READ DETAILED STATUS
  1393. STW5 LDD DS CHECK FOR READY
  1394. LPC 0 WAIT END OF OPERATION
  1395. * LPC 2 (WAIT FOR NOT BUSY)
  1396. STWD EQU *-1
  1397. NJN STW3 WAIT COMPLETION
  1398. LDD DS
  1399.  
  1400. STW SUBR ENTRY/EXIT
  1401. STM STWD SET STATUS MASK
  1402. LCN 0 SET EOP DELAY LIMIT
  1403. STD T1
  1404. STW1 LDN 12 ISSUE STATUS FUNCTION
  1405. RJM FCN
  1406. ACN CH
  1407. LDN 6 DELAY FOR EOP
  1408. * LDN 14 (2X PPU SPEED)
  1409. * LDN 30 (4X PPU SPEED)
  1410. STWA EQU *-1
  1411. STW2 FJM STW4,CH IF EOP
  1412. SBN 1
  1413. NJN STW2 IF NOT TIME OUT
  1414. DCN CH+40
  1415. STW3 SOD T1
  1416. NJN STW1 IF NOT END OF EOP DELAY
  1417. LDN /MTX/WEO
  1418. RJM ERR PROCESS ERROR
  1419. * RJM WFC2 (EXIT DURING BACKSPACE)
  1420. * RJM WNB2 (EXIT DURING CONTROLLED BACKSPACE)
  1421. * LJM /READ/MRD5 (NO EOP ON INITIAL LABEL CHECK)
  1422. STWC EQU *-1
  1423. UBW SPACE 4,10
  1424. ** UBW - UPDATE BLOCK ID WINDOW.
  1425. *
  1426. * ENTRY CORRECT ROUTINE LOADED FOR FORWARD OR REVERSE.
  1427. * (UBWB) = BID BYTE TO ENTER IN WINDOW.
  1428. * (WP) = POINTS TO LAST GOOD BID BYTE.
  1429. *
  1430. * EXIT (WP) UPDATED.
  1431. * (UBWB) ENTERED IN WINDOW.
  1432.  
  1433.  
  1434. UBW SUBR ENTRY/EXIT
  1435. UBWA BSS 0 START OF OVERLAID AREA
  1436. AOD WP
  1437. LPN 7
  1438. STD WP
  1439. LDM UBWB
  1440. STM BIDW,WP
  1441. UBWAL EQU *-UBWA LENGTH OF OVERLAID AREA
  1442. UJN UBWX RETURN
  1443.  
  1444.  
  1445. UBWB CON 4 CURRENT BLOCK ID
  1446. WEO SPACE 4,10
  1447. ** WEO - WAIT END OF OPERATION.
  1448. *
  1449. * ENTRY (WEOA) = STATUS MASK.
  1450. * (WEOB) = COMPLETION STATUS TO BE EXPECTED.
  1451. *
  1452. * EXIT (A, 11 - 0) = DEVICE STATUS MASKED AND ORED.
  1453. *
  1454. * CALLS STW.
  1455.  
  1456.  
  1457. WEO1 LPC 4435 READ TO END OF REEL
  1458. * LPC 4425 READ LABELS
  1459. * LPC 4635 WRITE TO END OF REEL
  1460. * LPC 4625 WRITE LABELS
  1461. WEOA EQU *-1
  1462. LMC 1 READ
  1463. * LMC 201 WRITE
  1464. WEOB EQU *-1
  1465.  
  1466. WEO SUBR ENTRY/EXIT
  1467. LDN 0
  1468. RJM STW STATUS DEVICE
  1469. UJN WEO1 EXIT
  1470.  
  1471. BSS 6 PAD FOR CTS CHANNEL ROUTINES
  1472.  
  1473. DNCV EQU * DENSITY AND CONVERSION MODE
  1474. ERSC EQU DNCV+1 ERROR SUB-CODE
  1475. MTDS EQU DNCV+5 DETAILED STATUS
  1476. CTSD EQU MTDS CTS DETAILED STATUS
  1477. ATUS EQU MTDS+10 ATS UNIT STATUS
  1478. MTSF EQU MTDS+3*5 UNIT FORMAT PARAMETERS
  1479. BIDW EQU MTDS+4*5 BLOCK ID WINDOW
  1480. CTGS EQU CTSD+34 CTS GENERAL STATUS WORD 2
  1481. ECNT EQU DNCV+7*5 CORRECTED ERROR COUNTERS
  1482. SPACE 4,10
  1483. USE OVERLAY
  1484. CIOE EQU ECNT+5 CIO EXTERNAL REQUESTS
  1485. FETO EQU CIOE+1 FET OPTIONS FROM FIRST BYTE 1
  1486. LNUM EQU FETO+1 LEVEL NUMBER FROM/FOR FET
  1487. OVL EQU LNUM+1+5 MAIN OVERLAY LOAD ADDRESS
  1488. STER EQU OVL-5 STATUS WHEN ERROR DETECTED
  1489. NAME EQU OVL-4 NAME OF OVERLAY LOADED
  1490. BNEU EQU NAME UPPER 2 BLOCK LENGTH DIGITS (LI FORMAT)
  1491. BNEI EQU OVL-3 BLOCK SEQUENCE INFORMATION (3 WORDS)
  1492. PRS TITLE PRESET STORAGE.
  1493. PRS SPACE 4,10
  1494. ** PRS - PRESET PROGRAM.
  1495. *
  1496. * CALLS IFP, MCH, *3MA*.
  1497. *
  1498. * MACROS DCHAN, EXECUTE, RCHAN.
  1499.  
  1500.  
  1501. QUAL PRESET
  1502.  
  1503. PRS RJM IFP INITIALIZE *COMPGFP*
  1504. LDD IR+2
  1505. ZJN PRS1 IF NORMAL CALL
  1506. EXECUTE 3MA INITIALIZE MAGNET
  1507.  
  1508. * SET UDT ACCESS, CONTROLLER TYPE, AND CHARACTER SET.
  1509.  
  1510. PRS1 LDC RJMI SET PROGRAM RETURN
  1511. STM //RET
  1512. LDC //CEC
  1513. STM //RET+1
  1514. LDD RA GET UNIT DESCRIPTOR TABLE POINTERS
  1515. SHN 6
  1516. ADN /MTX/UBUF
  1517. CRD CM
  1518. ADK -/MTX/UBUF
  1519. ADD IR+4
  1520. ADK /MTX/CPST GET PROCESSOR STATUS
  1521. CRD CN
  1522. LDD CM+2 SET LWA+1 OF UDT
  1523. STM PNRA
  1524. SBD CM+4 SET LENGTH OF UDT
  1525. LMC -0
  1526. STM PNRB
  1527. LDD CM+4 SET FWA OF UDT
  1528. STM PNRD
  1529. LDD CN+4 SET STARTING UDT ADDRESS
  1530. STM UADA
  1531. LDD CN+3 SET CONTROLLER TYPE
  1532. LPC 300
  1533. STD CF
  1534. SHN -6
  1535. STD T8
  1536. LDN IPRL SET 63/64 CHARACTER SET FLAG
  1537. CRD CM
  1538. LDD CM+2
  1539. LPN 1
  1540. RAD CF
  1541.  
  1542. * PRESET CHANNEL ACCESS.
  1543.  
  1544. LDC CHTP GET FWA CHANNEL INTERLOCK TABLE
  1545. CRD CM
  1546. LDD CM+2
  1547. SHN 14
  1548. ADD CM+3
  1549. SBN 1
  1550. STM CDOA+1
  1551. SHN -14
  1552. RAM CDOA
  1553. LDD IR+3 SET CHANNEL
  1554. STD T4
  1555. SBN CH
  1556. NJN PRS2 IF CHANNEL MODIFICATION NEEDED
  1557. LDM PRSA DISABLE MODIFICATION
  1558. STM MCHA
  1559. UJN PRS4 SEARCH CHANNEL TABLE
  1560.  
  1561. PRS2 PJN PRS3 IF INCREMENT TO ASSEMBLED IN CHANNEL
  1562. LMC -0
  1563. ADC LCNI-LDNI
  1564. PRS3 RAM MCHB
  1565. LDC TCHS MODIFY CHANNELS
  1566. RJM MCH
  1567. PRS4 AOM CDOA+1 ADVANCE CHANNEL TABLE ADDRESS
  1568. SHN -14
  1569. RAM CDOA
  1570. LCN 5
  1571. RAD T4
  1572. PJN PRS4 IF NOT CORRECT WORD
  1573. ADN 5 SET CORRECT BYTE IN CHANNEL TABLE
  1574. RAM CDOB
  1575.  
  1576. * PRESET CTS CONTROLLER.
  1577.  
  1578. LDD T8
  1579. LMN 3
  1580. NJN PRS6 IF NOT CTS CONTROLLER
  1581. LDK CCRL-1
  1582. STD T1 LENGTH OF CODE TO MOVE
  1583. PRS5 LDM .CEP,T1
  1584. STM ERR,T1
  1585. SOD T1
  1586. PJN PRS5 IF MORE CODE TO MOVE
  1587. LDC CCRA
  1588. RJM MCH MODIFY CHANNEL INSTRUCTIONS
  1589. LDC SHNI+21-12
  1590. STM PNRF SET PRIMARY CHANNEL STATUS CHECK
  1591. LDC PIC
  1592. STM PNRG ENTRY TO INITIAL CONNECT
  1593. LDC UJNI+PNR15-PNRH SKIP READ OF MTS/ATS UNIT PARAMETERS
  1594. STM PNRH
  1595. LJM PRS8 REQUEST CHANNEL
  1596.  
  1597. * PRESET MTS OR ATS CONTROLLER.
  1598.  
  1599. PRS6 LDD CN+3 SET EQUIPMENT CONTROLLER NUMBER
  1600. LPC 7000
  1601. STM FCNA
  1602. LDM PRSG,T8
  1603. STM STCA SET FUNCTION TIMEOUT DELAY
  1604. LDM DLYA
  1605. LPN 14
  1606. ZJN PRS7 IF 1X PPU SPEED
  1607. SHN -2
  1608. STD T1 SET PP SPEED INDEX
  1609. LDM PRSD-1,T1 INCREASE WAIT EOP DELAY
  1610. STM STWA
  1611. LDM PRSF-1,T1 INCREASE DELAY AFTER CONNECT
  1612. STM CONA+1
  1613. PRS7 LDD T8
  1614. LMN 2
  1615. ZJN PRS8 IF MTS CONTROLLER
  1616.  
  1617. * PRESET ATS CONTROLLER.
  1618.  
  1619. ERRNG CONB-CON5+37
  1620. LDN CON5-CON4
  1621. RAM CONB
  1622. LDM PRSC
  1623. STM DTSA
  1624. LDC LDNI+4
  1625. STM CUIB
  1626. LDC LDMI
  1627. STM CUIE
  1628. AOM CUIC
  1629. LCN 0 INCREASE CONNECT DELAY
  1630. STM CONA+1
  1631. LPN 77
  1632. RAM CONA
  1633.  
  1634. * REQUEST CHANNEL AND ENTER MAIN PROGRAM.
  1635.  
  1636. CHTE *+1
  1637. PRS8 LDC CH+4000 REQUEST REPLY IF CHANNEL DOWN
  1638. RCHAN REQUEST CHANNEL
  1639. LDD CM+1
  1640. SHN 21-13
  1641. PJN PRS9 IF CHANNEL NOT DOWN
  1642. LDD CN
  1643. LPC 3777 CLEAR *1MT* ACTIVE
  1644. STD CN
  1645. LDN ZERL
  1646. CRD CM
  1647. LDD RA
  1648. SHN 6
  1649. ADD IR+4
  1650. ADK /MTX/CPST UPDATE *1MT* STATUS
  1651. CWD CN
  1652. ADK /MTX/CUAC-/MTX/CPST CLEAR ALL UNIT ACCESS FLAGS
  1653. CWD CM
  1654. MONITOR DPPM DROP PP
  1655. LJM PPR EXIT TO PP RESIDENT
  1656.  
  1657. PRS9 IJM PRS10,CH IF CHANNEL NOT ACTIVE
  1658. DCN CH+40
  1659. PRS10 LDN 0
  1660. STD DF PRESET DROP OUT FLAG
  1661. LJM PNR6 RETURN TO PROCESS UNIT
  1662.  
  1663.  
  1664. PRSA BSS 0
  1665. LOC MCHA
  1666. UJN MCHX RETURN
  1667. LOC *O
  1668.  
  1669. PRSC BSS 0
  1670. LOC DTSA
  1671. UJN DTS1 INPUT UNIT STATUS
  1672. LOC *O
  1673.  
  1674. PRSD BSS 0 WAIT EOP DELAY
  1675. LOC 1
  1676. CON LDNI+30 4X PPU SPEED
  1677. CON LDNI+14 2X PPU SPEED
  1678. LOC *O
  1679.  
  1680. PRSF BSS 0 DELAY AFTER CONNECT
  1681. LOC 1
  1682. CON 300 4X PPU SPEED
  1683. CON 144 2X PPU SPEED
  1684. LOC *O
  1685.  
  1686. PRSG BSS 0 FUNCTION TIMEOUT DELAY
  1687. LDN 20 ISMT
  1688. LDN 77 ATS
  1689. LDN 6 MTS
  1690. SPACE 4,10
  1691. ** *COMPGFP* REMOTE CODE.
  1692.  
  1693.  
  1694. IFP HERE
  1695. SPACE 4,10
  1696. ** CHANNEL TABLE.
  1697.  
  1698.  
  1699. TCHS CHTB
  1700.  
  1701. CEP SPACE 4,15
  1702. ** CEP - CTS ERROR PROCESSOR.
  1703. *
  1704. * ENTRY (A) = ERROR CODE.
  1705. *
  1706. * EXIT TO *CCP*.
  1707. *
  1708. * MACROS CALL.
  1709.  
  1710.  
  1711. * THIS IS THE START OF CTS ROUTINES THAT ARE MOVED BY PRESET
  1712. * TO *ERR*.
  1713.  
  1714. .CEP BSS 0
  1715. LOC ERR
  1716. CEP CON 0 ENTRY
  1717. ERRNZ CEP-ERR IF ENTRY POINTS NOT THE SAME
  1718. STD EC SAVE ERROR CODE
  1719. CALL CCP CTS CHANNEL ERROR PROCESSOR (NO RETURN)
  1720. ICF SPACE 4,10
  1721. ** ICF - ISSUE CCC/CTS FUNCTION.
  1722. *
  1723. * ENTRY (A) = FUNCTION.
  1724. *
  1725. * EXIT (A) = 0.
  1726. * (ICFA) = THE FUNCTION THAT WAS ISSUED.
  1727. * TO *ERR* IF FUNCTION REJECT.
  1728.  
  1729.  
  1730. ICF2 LDN 0
  1731. BSSZ FCNX-* TO KEEP ENTRY POINTS THE SAME
  1732.  
  1733. ICF SUBR ENTRY/EXIT
  1734. DCN CH+40 ENSURE CHANNEL IS INACTIVE
  1735. STM ICFA SAVE FUNCTION
  1736. FAN CH ISSUE THE FUNCTION
  1737. LDN 17 TIMEOUT 4 SECONDS ON ALL FUNCTIONS
  1738. STD T0
  1739. ICF0 LCN 0
  1740. ICF1 IJM ICF2,CH IF FUNCTION REPLY RECEIVED
  1741. SBN 1
  1742. NJN ICF1 IF TIMEOUT NOT EXPIRED
  1743. SOD T0
  1744. NJN ICF0 IF TIMEOUT NOT EXPIRED
  1745. LDN /MTX/FRJ FUNCTION REJECT
  1746. RJM ERR SAVE ERROR CODE (NO RETURN)
  1747.  
  1748.  
  1749. ICFA CON 0 FUNCTION ISSUED
  1750. PIC SPACE 4,15
  1751. ** PIC - PERFORM INITIAL CTS CONNECT.
  1752. *
  1753. * ENTRY (CM+4) = BYTE 4 OF EST ENTRY *EQDE* WORD.
  1754. * (CN) = EJT ORDINAL OF ASSIGNED JOB.
  1755. *
  1756. * EXIT (A) .NE. 0 IF UNIT CONNECTED.
  1757. * (A) .EQ. 0 IF CONTROL UNIT BUSY.
  1758. * (CN) = EJT ORDINAL OF ASSIGNED JOB.
  1759. *
  1760. * USES T2.
  1761. *
  1762. * CALLS CCU, UAD.
  1763.  
  1764.  
  1765. PIC SUBR ENTRY/EXIT
  1766. LDN 6
  1767. STD T2
  1768. RJM UAD
  1769. ADK /MTX/UDS1 READ DETAILED STATUS
  1770. CRM CTSD,T2
  1771. LDN 0
  1772. STM PICA
  1773. LDC LDNI+F0002 SEND CONTINUE IF COMMAND RETRY
  1774. STM /PRESET/GPSC
  1775. LDD CM+4 SET UNIT NUMBER
  1776. LPN 17
  1777. LMN F0020
  1778. STM CCUA
  1779. RJM CCU CONNECT CTS UNIT
  1780. UJN PICX RETURN
  1781.  
  1782.  
  1783. PICA DATA 0 IF 0, LOCATE BLOCK NOT NECESSARY
  1784. CCU SPACE 4,10
  1785. ** CCU - CONNECT CTS UNIT.
  1786. *
  1787. * ENTRY (CCUA) = CONNECT FUNCTION CODE AND UNIT NUMBER.
  1788. *
  1789. * EXIT (A) = 0 IF UNIT RESERVED TO ANOTHER CONTROLLER.
  1790. * TO *CEP* IF CONNECT REJECT.
  1791. *
  1792. * CALLS GPS, ICF.
  1793.  
  1794.  
  1795. CCU3 AOM RELA SET CONNECTED FLAG
  1796.  
  1797. CCU SUBR ENTRY/EXIT
  1798. LDC F0020
  1799. * LDC F0220 (COMPRESSION MODE SELECTED)
  1800. CCUA EQU *-1 (CONNECT UNIT FUNCTION CODE)
  1801. RJM ICF ISSUE CTS FUNCTION
  1802. CCU1 LDN 0 WAIT FOR END OF OPERATION
  1803. RJM GPS GET AND PROCESS GENERAL STATUS
  1804. MJN CCU1 IF COMMAND RETRY
  1805. SHN 21-13
  1806. PJN CCU3 IF ALERT NOT SET
  1807. LDM CTGS GENERAL STATUS WORD 2
  1808. SHN 21-13
  1809. PJN CCU3 IF NOT CCC ERROR CODE
  1810. SHN 13-21
  1811. LPC 177
  1812. SBN CE001
  1813. ZJN CCU2 IF CONNECT REJECT
  1814. SBN CE032-CE001
  1815. ZJN CCUX IF DRIVE BUSY OR RESERVED
  1816. SBN CE033-CE032
  1817. ZJN CCUX IF CONTROL UNIT BUSY
  1818. SBN CE051-CE033
  1819. NJN CCU3 IF NOT CONNECT REJECT
  1820. CCU2 LDN /MTX/CRJ CONNECT REJECT
  1821. RJM CEP REPORT ERROR (NO RETURN)
  1822. GPS SPACE 4,15
  1823. ** GPS - GET AND PROCESS GENERAL STATUS.
  1824. * THIS ROUTINE WAITS UP TO 3.5 MINUTES FOR END OF OPERATION.
  1825. * IF RETRY IS SET, IT WAITS UP TO 18 MINUTES FOR THE CONTINUE
  1826. * BIT TO SET. IT IS ASSUMED THAT THE CONTROLLER HAS A
  1827. * MAXIMUM NUMBER OF COMMAND RETRIES ALLOWED.
  1828. *
  1829. * ENTRY (A) = 0 IF WAIT FOR END OF OPERATION.
  1830. * (A) = 2 IF WAIT NOT BUSY.
  1831. *
  1832. * EXIT (A) = (DS) = GENERAL STATUS.
  1833. * (A) .LE. 0 IF CONTINUE ISSUED.
  1834. * TO *ERR* IF TIMEOUT OR CHANNEL MALFUNCTION.
  1835. * (CTGS) = GENERAL STATUS WORD 2 IF ALERT SET.
  1836. * (CTSD-CTSD+25) = DETAILED STATUS IF ALERT SET.
  1837. *
  1838. * USES T1, T2.
  1839. *
  1840. * CALLS ICF.
  1841.  
  1842.  
  1843. GPS10 DCN CH+40
  1844. LDD DS
  1845. LPC 0 WAIT END OF OPERATION
  1846. GPSB EQU *-1
  1847. * LPC 2 WAIT NOT BUSY
  1848. NJN GPS5 IF NOT COMPLETE
  1849. LDD DS
  1850.  
  1851. GPS SUBR ENTRY/EXIT
  1852. STM GPSB
  1853. LDK 960D OUTER LOOP TIMER
  1854. STD T2
  1855. GPS1 LCN 0 INNER LOOP TIMER
  1856. STD T1
  1857. GPS2 LDN F0012 GENERAL STATUS
  1858. RJM ICF ISSUE CTS FUNCTION
  1859. ACN CH
  1860. LDN 12
  1861. GPS3 FJM GPS6,CH IF GENERAL STATUS RECEIVED
  1862. GPS4 SBN 1
  1863. NJN GPS3 IF NOT TIMEOUT
  1864. GPS5 SOD T1
  1865. NJN GPS2 IF NOT TIMEOUT FOR INNER LOOP
  1866. SOD T2
  1867. NJN GPS1 IF NOT TIMEOUT FOR OUTER LOOP
  1868. LDN /MTX/WEO END OF OPERATION TIMEOUT
  1869. RJM ERR PROCESS ERROR (NO RETURN)
  1870.  
  1871. GPS6 IAN CH
  1872. STD DS SAVE GENERAL STATUS WORD 1
  1873. SFM GPS9,CH IF CHANNEL PARITY ERROR
  1874. LDD DS
  1875. SHN 21-13
  1876. PJP GPS10 IF ALERT NOT SET
  1877. SHN 21-12-21+13
  1878. PJN GPS7 IF NOT COMMAND RETRY
  1879. LDN F0002 CONTINUE
  1880. GPSC EQU *-1
  1881. * UJN GPS6.1 (WRITE)
  1882. RJM ICF ISSUE CTS FUNCTION
  1883. GPS6.1 LCN 0
  1884. UJP GPSX RETURN
  1885.  
  1886. GPS7 SHN 21-6-21+12
  1887. PJN GPS8 IF NOT RETRY IN PROGRESS
  1888. LDK 460D
  1889. SBN 1
  1890. NJN *-1 IF 230 MICROSECOND DELAY NOT COMPLETE
  1891. UJP GPS5 CHECK FOR INNER LOOP TIMEOUT
  1892.  
  1893. GPS8 LDN 1
  1894. IAM CTGS,CH READ GENERAL STATUS WORD 2
  1895. NJN GPS9 IF STATUS WORD NOT RECEIVED
  1896. LDC F0112 DETAILED STATUS
  1897. RJM ICF ISSUE CTS FUNCTION
  1898. ACN CH
  1899. LDN 26D
  1900. IAM CTSD,CH
  1901. NJN GPS9 IF NOT ALL WORDS RECEIVED
  1902. CFM GPS10,CH IF NO CHANNEL ERROR
  1903. GPS9 LDN /MTX/CMF CHANNEL MALFUNCTION
  1904. GPS9.1 RJM ERR PROCESS ERROR (NO RETURN)
  1905. RBI SPACE 4,10
  1906. ** RBI - READ BLOCK ID.
  1907. *
  1908. * EXIT (BIDW+1, BIDW+2) = CURRENT BLOCK ID.
  1909. * TO *ERR* IF ERROR.
  1910. *
  1911. * USES T3.
  1912. *
  1913. * CALLS GPS, ICF.
  1914.  
  1915.  
  1916. RBI SUBR ENTRY/EXIT
  1917. LDC F0212 READ BLOCK ID
  1918. RJM ICF ISSUE CTS FUNCTION
  1919. RBI1 ACN CH
  1920. LDN 10
  1921. IAM BIDW,CH INPUT BLOCK ID INFORMATION
  1922. STD T3 WORDS NOT TRANSFERRED
  1923. LDN 0 WAIT FOR END OF OPERATION
  1924. RJM GPS GET AND PROCESS GENERAL STATUS
  1925. MJN RBI1 IF COMMAND RETRY
  1926. SHN 21-13
  1927. MJN RBI2 IF ALERT SET
  1928. LDD T3
  1929. ZJN RBIX IF ALL WORDS TRANSFERRED
  1930. UJN GPS9 REPORT CHANNEL MALFUNCTION
  1931.  
  1932. RBI2 LDN /MTX/STE STATUS ERROR
  1933. UJN GPS9.1 REPORT ERROR
  1934. RCU SPACE 4,15
  1935. ** RCU - RECONNECT UNIT.
  1936. *
  1937. * RELOADING THE CCC BREAKS THE HARDWARE RESERVE TO THE UNIT
  1938. * MAKING A RECONNECT NECESSARY. IN A DUAL ACCESS CONFIGURATION
  1939. * THE DRIVE COULD BE RESERVED, SO RETRIES ARE NECESSARY. IF
  1940. * THE DRIVE IS STILL RESERVED AFTER ALL RETRIES, THE CALLING
  1941. * ROUTINE WILL REPORT AN ERROR WHEN THE NEXT COMMAND TO THE
  1942. * CCC FAILS.
  1943. *
  1944. * USES T3.
  1945. *
  1946. * CALLS CCU.
  1947.  
  1948.  
  1949. RCU SUBR ENTRY/EXIT
  1950. LDN 77
  1951. STD T3
  1952. RCU1 RJM CCU CONNECT CTS UNIT
  1953. NJN RCUX IF CONNECTED
  1954. SOD T3
  1955. NJN RCU1 IF MORE RETRIES
  1956. UJN RCUX RETURN
  1957. WFE SPACE 4,10
  1958. ** WFE - WAIT FOR END OF OPERATION FOR CTS.
  1959. *
  1960. * ENTRY (WFEA) = STATUS MASK.
  1961. * (WFEB) = EXPECTED GENERAL STATUS.
  1962. *
  1963. * EXIT (A) = 0 IF COMPLETION STATUS AS EXPECTED.
  1964. *
  1965. * CALLS GPS.
  1966.  
  1967.  
  1968. WFE SUBR ENTRY/EXIT
  1969. WFE1 LDN 0 WAIT FOR END OF OPERATION
  1970. RJM GPS GET AND PROCESS GENERAL STATUS
  1971. LPC 406125 READ
  1972. WFEA EQU *-1
  1973. * LPC 406331 WRITE
  1974. * LPC 406321 WRITE LABEL
  1975. LMC 1 READ
  1976. WFEB EQU *-1
  1977. * LMC 201 WRITE
  1978. UJN WFEX RETURN
  1979. ERRNG DNCV-* CTS CHANNEL ROUTINES TOO LONG
  1980. LOC *O
  1981. CCRL EQU *-.CEP LENGTH OF CHANNEL ROUTINES
  1982.  
  1983.  
  1984. CCRA CHTB CHANNEL TABLE FOR CTS ROUTINES
  1985.  
  1986. QUAL
  1987. OVERLAY (INITIALIZE TAPE EXECUTIVE.),PPFW
  1988. SPACE 4,10
  1989. ** DIRECT CELL ASSIGNMENTS.
  1990.  
  1991.  
  1992. CA EQU 30 CHANNEL NUMBER
  1993. PL EQU 31 FIRMWARE BUFFER LENGTH
  1994. EQ EQU 33 EQUIPMENT (CONTROLLER) NUMBER
  1995. AB EQU 40 FIRMWARE NAME
  1996. SPACE 4,10
  1997. *** MAGNET INITIALIZATION DAYFILE MESSAGES.
  1998. *
  1999. * FATAL DAYFILE MESSAGES.
  2000. *
  2001. * C00, T0 MTS CONVERSION TABLE LOAD ERROR.
  2002. * C00, T0 ATS CONVERSION TABLE LOAD ERROR.
  2003. * C00, T0 FSC CONVERSION TABLE LOAD ERROR.
  2004. * C00, T0 698 CONVERSION TABLE LOAD ERROR.
  2005. * C00, 639 FIRMWARE LOAD ERRORS.
  2006. * C00, MTS FIRMWARE LOAD ERRORS.
  2007. * C00, FSC FIRMWARE LOAD ERRORS.
  2008. * C00, 698 FIRMWARE LOAD ERRORS.
  2009. * C00, CTS FIRMWARE LOAD ERRORS.
  2010. * MORE THAN 8 TAPE CHANNELS.
  2011. * MTS FIRMWARE NOT FOUND.
  2012. * FSC FIRMWARE NOT FOUND.
  2013. * 639 FIRMWARE NOT FOUND.
  2014. * 698 FIRMWARE NOT FOUND.
  2015. * CTS FIRMWARE NOT FOUND.
  2016. * NO TAPE EQUIPMENT.
  2017. * TWO CONTROLLER TYPES ON SAME CHANNEL.
  2018. *
  2019. * INFORMATIVE DAYFILE MESSAGES.
  2020. *
  2021. * MT000, C00, TURNED OFF.
  2022. * NT000, C00, 200 IPS GCR DRIVE ON 1X PPS.
  2023. * MTS FIRMWARE LOAD, PART NO.- 12345678.
  2024. * FSC FIRMWARE LOAD, PART NO.- 12345678.
  2025. * 639 FIRMWARE LOAD, PART NO.- 12345678.
  2026. * 698 FIRMWARE LOAD, PART NO.- 12345678.
  2027. * CTS FIRMWARE LOAD, MB468-DXX.
  2028. ITE SPACE 4,10
  2029. ** ITE - INITIALIZE TAPE EXECUTIVE.
  2030. *
  2031. * SETS UP CP AND DESCRIBES CONFIGURATION TO *MAGNET*.
  2032. *
  2033. * CALLS BCT, BDW, EST, LBC.
  2034. *
  2035. * MACROS MONITOR.
  2036.  
  2037.  
  2038. ITE RJM EST PRE-PROCESS EST
  2039. RJM LBC LOAD FIRMWARE AND CONVERSION TABLES
  2040. RJM BDW BUILD EQUIPMENT DEFINITION WORDS
  2041. RJM BCT BUILD CHANNEL STATUS TABLE
  2042. ITE1 LDN ZERL SET INITIALIZATION COMPLETE
  2043. CRD CM
  2044. LDD IR+3
  2045. SHN 6
  2046. ADD RA
  2047. SHN 6
  2048. ADD IR+4
  2049. CWD CM
  2050. MONITOR DPPM DROP PPU
  2051. LJM PPR EXIT TO PP RESIDENT
  2052. SPACE 4,10
  2053. ** COMMON DECKS.
  2054.  
  2055.  
  2056. *CALL COMPC2D
  2057. *CALL COMPCLD
  2058. *CALL COMPRNS
  2059. CTEXT MTS CONVERSION MACROS AND TABLES.
  2060. MTTR SPACE 4,10
  2061. ** MTTR - GENERATE MTS CONVERSION MEMORY CODE.
  2062. *
  2063. * THIS MACRO GENERATES THE CODE FOR THE MTS
  2064. * TAPE CONTROLLER FOR DATA CONVERSION.
  2065. * DATA GENERATED INCLUDES BIT 6 (INCORRECT CODE)
  2066. * AND BIT 9 (LOAD LAST FLAG).
  2067. *
  2068. *
  2069. * MTTR CH,I,L
  2070. * ENTRY *CH* = DISPLAY CODE CHARACTER OR 2 OCTAL DIGITS
  2071. * *I* = INCORRECT CODE FLAG.
  2072. * *L* = LOAD LAST FLAG.
  2073.  
  2074.  
  2075. PURGMAC MTTR
  2076.  
  2077. MTTR MACRO CH,I,L
  2078. .1 MICRO 2,1, _CH
  2079. .2 MICRO 1,2, _CH
  2080. .3 SET 0
  2081. IFC EQ,*".1"**,1
  2082. .2 OCTMIC 1R_CH
  2083. IFC NE,*I**,1
  2084. .3 SET 100B
  2085. IFC NE,*L**,1
  2086. .3 SET .3+1000B
  2087. CON ".2"+.3
  2088. ENDM
  2089. MTBCD SPACE 4
  2090. ** MTBCD - TABLE OF INTERNAL BCD/DISPLAY CODE FOR MTS.
  2091. * FIRST 64 ENTRIES, CONVERT INTERNAL BCD TO DISPLAY CODE.
  2092. * INDEXED BY INTERNAL BCD.
  2093.  
  2094.  
  2095. MTBCD BSS 0
  2096. LOC 0
  2097.  
  2098. MTTR 0
  2099. MTTR 1
  2100. MTTR 2
  2101. MTTR 3
  2102. MTTR 4
  2103. MTTR 5
  2104. MTTR 6
  2105. MTTR 7
  2106. MTTR 8
  2107. MTTR 9
  2108. MTTR 00 64 CHARACTER SET
  2109. C6463 MTTR,63 (63 CHARACTER SET)
  2110. MTTR =
  2111. MTTR 64
  2112. MTTR @
  2113. MTTR 63 64 CHARACTER SET
  2114. C6463 MTTR,00 (63 CHARACTER SET)
  2115. MTTR [
  2116. MTTR +
  2117. MTTR A
  2118. MTTR B
  2119. MTTR C
  2120. MTTR D
  2121. MTTR E
  2122. MTTR F
  2123. MTTR G
  2124. MTTR H
  2125. MTTR I
  2126. MTTR <
  2127. MTTR .
  2128. MTTR )
  2129. MTTR \
  2130. MTTR ^
  2131. MTTR ;
  2132. MTTR -
  2133. MTTR J
  2134. MTTR K
  2135. MTTR L
  2136. MTTR M
  2137. MTTR N
  2138. MTTR O
  2139. MTTR P
  2140. MTTR Q
  2141. MTTR R
  2142. MTTR !
  2143. MTTR $
  2144. MTTR *
  2145. MTTR '
  2146. MTTR ?
  2147. MTTR >
  2148. MTTR ( )
  2149. MTTR /
  2150. MTTR S
  2151. MTTR T
  2152. MTTR U
  2153. MTTR V
  2154. MTTR W
  2155. MTTR X
  2156. MTTR Y
  2157. MTTR Z
  2158. MTTR ]
  2159. MTTR (,)
  2160. MTTR 51
  2161. MTTR 65
  2162. MTTR #
  2163. MTTR &
  2164.  
  2165. LOC *O
  2166. MTANS SPACE 4
  2167. ** MTANS - TABLE FOR *ASCII* TO DISPLAY CODE CONVERSION.
  2168. * FIRST 256 ENTRIES, CONVERT *ASCII* TO DISPLAY CODE.
  2169. * INDEXED BY *ASCII* CHARACTER.
  2170.  
  2171.  
  2172. MTANS BSS 0
  2173. LOC 0
  2174.  
  2175. MTTR ( ) 00 NUL NULL
  2176. MTTR ] 01 SOH START OF HEADING
  2177. MTTR 64 02 STX START OF TEXT
  2178. MTTR # 03 ETX END OF TEXT
  2179. MTTR $ 04 EOT END OF TRANSMISSION
  2180. MTTR 63 05 ENQ ENQUIRY (64 CHARACTER SET)
  2181. C6463 MTTR,( ) 05 ENQ ENQUIRY (63 CHARACTER SET)
  2182. MTTR & 06 ACK ACKNOWLEDGE
  2183. MTTR ' 07 BEL BELL
  2184. MTTR 51 08 BS BACKSPACE
  2185. MTTR ) 09 HT HORIZONTAL TAB
  2186. MTTR * 0A LF LINE FEED
  2187. MTTR + 0B VT VERTICAL TAB
  2188. MTTR (,) 0C FF FORM FEED
  2189. MTTR - 0D CR CARRIAGE RETURN
  2190. MTTR . 0E SO SHIFT OUT
  2191. MTTR / 0F SI SHIFT IN
  2192.  
  2193. MTTR 0 10 DLE DATA LINK ESCAPE
  2194. MTTR 1 11 DC1 DEVICE CONTROL 1 (X-ON)
  2195. MTTR 2 12 DC2 DEVICE CONTROL 2
  2196. MTTR 3 13 DC3 DEVICE CONTROL 3 (X-OFF)
  2197. MTTR 4 14 DC4 DEVICE CONTROL 4 (STOP)
  2198. MTTR 5 15 NAK NEGATIVE ACKNOWLEDGE
  2199. MTTR 6 16 SYN SYNCHRONOUS IDLE
  2200. MTTR 7 17 ETB END OF TRANSMISSION BLOCK
  2201. MTTR 8 18 CAN CANCEL
  2202. MTTR 9 19 EM END OF MEDIUM
  2203. MTTR 00 1A SUB SUBSTITUTE (64 CHARACTERS)
  2204. C6463 MTTR,63 1A SUB SUBSTITUTE (63 CHARACTERS)
  2205. MTTR ; 1B ESC ESCAPE (DRIVER)
  2206. MTTR [ 1C FS FILE SEPARATOR
  2207. MTTR = 1D GS GROUP SEPARATOR
  2208. MTTR > 1E RS RECORD SEPARATOR
  2209. MTTR ? 1F US UNIT SEPARATOR
  2210.  
  2211. MTTR ( ),,L 20 SPACE
  2212. MTTR !,,L 21 EXCLAMATION POINT
  2213. MTTR 64,,L 22 QUOTATION MARKS
  2214. MTTR #,,L 23 NUMBER SIGN
  2215. MTTR $,,L 24 $ DOLLAR SIGN
  2216. MTTR 63,,L 25 PERCENT (64 CHARACTER SET)
  2217. C6463 MTTR,( ) 25 PERCENT (63 CHARACTER SET)
  2218. MTTR &,,L 26 AMPERSAND
  2219. MTTR ',,L 27 APOSTROPHE
  2220. MTTR 51,,L 28 ( OPENING PARENTHESIS
  2221. MTTR ),,L 29 ) CLOSING PARENTHESIS
  2222. MTTR *,,L 2A * ASTERISK
  2223. MTTR +,,L 2B + PLUS
  2224. MTTR (,),,L 2C , COMMA
  2225. MTTR -,,L 2D - HYPHEN (MINUS)
  2226. MTTR .,,L 2E . PERIOD
  2227. MTTR /,,L 2F / SLANT
  2228.  
  2229. MTTR 0,,L 30 0
  2230. MTTR 1,,L 31 1
  2231. MTTR 2,,L 32 2
  2232. MTTR 3,,L 33 3
  2233. MTTR 4,,L 34 4
  2234. MTTR 5,,L 35 5
  2235. MTTR 6,,L 36 6
  2236. MTTR 7,,L 37 7
  2237. MTTR 8,,L 38 8
  2238. MTTR 9,,L 39 9
  2239. MTTR 00,,L 3A COLON (64 CHARACTER SET)
  2240. C6463 MTTR,(63,,L) 3A COLON (63 CHARACTER SET)
  2241. MTTR ;,,L 3B SEMICOLON
  2242. MTTR <,,L 3C LESS THAN
  2243. MTTR =,,L 3D EQUALS
  2244. MTTR >,,L 3E GREATER THAN
  2245. MTTR ?,,L 3F QUESTION MARK
  2246.  
  2247. MTTR @,,L 40 COMMERCIAL AT
  2248. MTTR A,,L 41 A
  2249. MTTR B,,L 42 B
  2250. MTTR C,,L 43 C
  2251. MTTR D,,L 44 D
  2252. MTTR E,,L 45 E
  2253. MTTR F,,L 46 F
  2254. MTTR G,,L 47 G
  2255. MTTR H,,L 48 H
  2256. MTTR I,,L 49 I
  2257. MTTR J,,L 4A J
  2258. MTTR K,,L 4B K
  2259. MTTR L,,L 4C L
  2260. MTTR M,,L 4D M
  2261. MTTR N,,L 4E N
  2262. MTTR O,,L 4F 0
  2263.  
  2264. MTTR P,,L 50 P
  2265. MTTR Q,,L 51 Q
  2266. MTTR R,,L 52 R
  2267. MTTR S,,L 53 S
  2268. MTTR T,,L 54 T
  2269. MTTR U,,L 55 U
  2270. MTTR V,,L 56 V
  2271. MTTR W,,L 57 W
  2272. MTTR X,,L 58 X
  2273. MTTR Y,,L 59 Y
  2274. MTTR Z,,L 5A Z
  2275. MTTR [,,L 5B OPENING BRACKET
  2276. MTTR \,,L 5C REVERSE SLANT
  2277. MTTR ],,L 5D CLOSING BRACKET
  2278. MTTR ^,,L 5E CIRCUMFLEX
  2279. MTTR 65,,L 5F UNDERLINE
  2280.  
  2281. MTTR @ 60 GRAVE ACCENT
  2282. MTTR A 61 A LC
  2283. MTTR B 62 B LC
  2284. MTTR C 63 C LC
  2285. MTTR D 64 D LC
  2286. MTTR E 65 E LC
  2287. MTTR F 66 F LC
  2288. MTTR G 67 G LC
  2289. MTTR H 68 H LC
  2290. MTTR I 69 I LC
  2291. MTTR J 6A J LC
  2292. MTTR K 6B K LC
  2293. MTTR L 6C L LC
  2294. MTTR M 6D M LC
  2295. MTTR N 6E N LC
  2296. MTTR O 6F O LC
  2297.  
  2298. MTTR P 70 P LC
  2299. MTTR Q 71 Q LC
  2300. MTTR R 72 R LC
  2301. MTTR S 73 S LC
  2302. MTTR T 74 T LC
  2303. MTTR U 75 U LC
  2304. MTTR V 76 V LC
  2305. MTTR W 77 W LC
  2306. MTTR X 78 X LC
  2307. MTTR Y 79 Y LC
  2308. MTTR Z 7A Z LC
  2309. MTTR < 7B OPENING BRACE
  2310. MTTR \ 7C VERTICAL LINE
  2311. MTTR ! 7D CLOSING BRACE
  2312. MTTR ^ 7E OVERLINE (TILDE)
  2313. MTTR 65 7F DEL DELETE
  2314.  
  2315. DUP 128,1
  2316. MTTR 00,I INCORRECT CHARACTER
  2317.  
  2318. LOC *O
  2319. MTEBC SPACE 4
  2320. ** MTEBC - TABLE OF EBCDIC/DISPLAY CODE.
  2321. * CONVERT EBCDIC TO DISPLAY CODE.
  2322. * INDEXED BY EBCDIC CODE VALUE.
  2323.  
  2324.  
  2325. MTEBC BSS 0
  2326. LOC 0
  2327.  
  2328. MTTR ( ) 00 NUL NULL
  2329. MTTR ] 01 SOH START OF HEADING
  2330. MTTR 64 02 STX START OF TEXT
  2331. MTTR # 03 ETX END OF TEXT
  2332. MTTR ( ) 04
  2333. MTTR ) 05 HT HORIZONTAL TAB
  2334. MTTR ( ) 06
  2335. MTTR 65 07 DEL DELETE
  2336. MTTR ( ) 08
  2337. MTTR ( ) 09
  2338. MTTR ( ) 0A
  2339. MTTR + 0B VT VERTICAL TAB
  2340. MTTR (,) 0C FF FORM FEED
  2341. MTTR - 0D CR CARRIAGE RETURN
  2342. MTTR . 0E SO SHIFT OUT
  2343. MTTR / 0F SI SHIFT IN
  2344.  
  2345. MTTR 0 10 DLE DATA LINK ESCAPE
  2346. MTTR 1 11 DC1 DEVICE CONTROL 1 (X-ON)
  2347. MTTR 2 12 DC2 DEVICE CONTROL 2
  2348. MTTR 3 13 DC3 DEVICE CONTROL 3 (X-OFF)
  2349. MTTR ( ) 14
  2350. MTTR ( ) 15
  2351. MTTR 51 16 BS BACKSPACE
  2352. MTTR ( ) 17
  2353. MTTR 8 18 CAN CANCEL
  2354. MTTR 9 19 EM END OF MEDIMUM
  2355. MTTR ( ) 1A
  2356. MTTR ( ) 1B
  2357. MTTR [ 1C FS FILE SEPERATOR
  2358. MTTR = 1D GS GROUP SEPERATOR
  2359. MTTR > 1E RS RECORD SEPERATOR
  2360. MTTR ? 1F US UNIT SEPERATOR
  2361.  
  2362. MTTR ( ) 20
  2363. MTTR ( ) 21
  2364. MTTR ( ) 22
  2365. MTTR ( ) 23
  2366. MTTR ( ) 24
  2367. MTTR * 25 LF LINE FEED
  2368. MTTR 7 26 ETB END OF TRANSMISSION BLOCK
  2369. MTTR ; 27 ESC ESCAPE
  2370. MTTR ( ) 28
  2371. MTTR ( ) 29
  2372. MTTR ( ) 2A
  2373. MTTR ( ) 2B
  2374. MTTR ( ) 2C
  2375. MTTR 63 2D ENQ ENQUIRY (64 CHARACTER SET)
  2376. C6463 MTTR,( ) 2D ENQ ENQUIRY (63 CHARACTER SET)
  2377. MTTR & 2E ACK ACKNOWLEDGE
  2378. MTTR ' 2F BEL BELL
  2379.  
  2380. MTTR ( ) 30
  2381. MTTR ( ) 31
  2382. MTTR 6 32 SYN SYNCHROUS IDLE
  2383. MTTR ( ) 33
  2384. MTTR ( ) 34
  2385. MTTR ( ) 35
  2386. MTTR ( ) 36
  2387. MTTR $ 37 EOT END OF TRANSMISSION
  2388. MTTR ( ) 38
  2389. MTTR ( ) 39
  2390. MTTR ( ) 3A
  2391. MTTR ( ) 3B
  2392. MTTR 4 3C DC4 DEVICE CONTROL 4
  2393. MTTR 5 3D NAK NEGATIVE ACKNOWLEDGE
  2394. MTTR ( ) 3E
  2395. MTTR 00 3F SUB SUBSTITUTE (64 CHARACTER SET
  2396. C6463 MTTR,63 3F SUB SUBSTITUTE (63 CHARACTER SET
  2397.  
  2398. MTTR ( ),,L 40 SPACE
  2399. MTTR ( ) 41
  2400. MTTR ( ) 42
  2401. MTTR ( ) 43
  2402. MTTR ( ) 44
  2403. MTTR ( ) 45
  2404. MTTR ( ) 46
  2405. MTTR ( ) 47
  2406. MTTR ( ) 48
  2407. MTTR ( ) 49
  2408. MTTR [,,L 4A OPENING BRACKET
  2409. MTTR .,,L 4B . PERIOD
  2410. MTTR <,,L 4C LESS THAN
  2411. MTTR 51,,L 4D OPENING PARENTHESIS
  2412. MTTR +,,L 4E + PLUS
  2413. MTTR !,,L 4F LOGICAL OR
  2414.  
  2415. MTTR &,,L 50 AMPERSAND
  2416. MTTR ( ) 51
  2417. MTTR ( ) 52
  2418. MTTR ( ) 53
  2419. MTTR ( ) 54
  2420. MTTR ( ) 55
  2421. MTTR ( ) 56
  2422. MTTR ( ) 57
  2423. MTTR ( ) 58
  2424. MTTR ( ) 59
  2425. MTTR ],,L 5A CLOSING BRACKET
  2426. MTTR $,,L 5B $ DOLLAR SIGN
  2427. MTTR *,,L 5C * ASTERISK
  2428. MTTR ),,L 5D ) CLOSING PARENTHESIS
  2429. MTTR ;,,L 5E SEMICOLON
  2430. MTTR ^,,L 5F NOT LOGICAL NOT
  2431.  
  2432. MTTR -,,L 60 - HYPHEN (MINUS)
  2433. MTTR /,,L 61 / SLANT
  2434. MTTR ( ) 62
  2435. MTTR ( ) 63
  2436. MTTR ( ) 64
  2437. MTTR ( ) 65
  2438. MTTR ( ) 66
  2439. MTTR ( ) 67
  2440. MTTR ( ) 68
  2441. MTTR ( ) 69
  2442. MTTR \ 6A VERTICAL LINE
  2443. MTTR (,),,L 6B , COMMA
  2444. MTTR 63,,L 6C PERCENT (64 CHARACTER SET)
  2445. C6463 MTTR,( ) 6C PERCENT (63 CHARACTER SET)
  2446. MTTR 65,,L 6D UNDERSCORE
  2447. MTTR >,,L 6E GREATER THAN
  2448. MTTR ?,,L 6F QUESTION MARK
  2449.  
  2450. MTTR ( ) 70
  2451. MTTR ( ) 71
  2452. MTTR ( ) 72
  2453. MTTR ( ) 73
  2454. MTTR ( ) 74
  2455. MTTR ( ) 75
  2456. MTTR ( ) 76
  2457. MTTR ( ) 77
  2458. MTTR ( ) 78
  2459. MTTR @ 79 GRAVE ACCENT
  2460. MTTR 00,,L 7A COLON (64 CHARACTER SET)
  2461. C6463 MTTR,(63,,L) 7A COLON (63 CHARACTER SET)
  2462. MTTR #,,L 7B NUMBER SIGN
  2463. MTTR @,,L 7C COMMERCIAL AT
  2464. MTTR ',,L 7D APOSTROPHE
  2465. MTTR =,,L 7E = EQUALS
  2466. MTTR 64,,L 7F QUOTATION MARKS
  2467.  
  2468. MTTR ( ) 80
  2469. MTTR A 81 A LC
  2470. MTTR B 82 B LC
  2471. MTTR C 83 C LC
  2472. MTTR D 84 D LC
  2473. MTTR E 85 E LC
  2474. MTTR F 86 F LC
  2475. MTTR G 87 G LC
  2476. MTTR H 88 H LC
  2477. MTTR I 89 I LC
  2478. MTTR ( ) 8A
  2479. MTTR ( ) 8B
  2480. MTTR ( ) 8C
  2481. MTTR ( ) 8D
  2482. MTTR ( ) 8E
  2483. MTTR ( ) 8F
  2484.  
  2485. MTTR ( ) 90
  2486. MTTR J 91 J LC
  2487. MTTR K 92 K LC
  2488. MTTR L 93 L LC
  2489. MTTR M 94 M LC
  2490. MTTR N 95 N LC
  2491. MTTR O 96 O LC
  2492. MTTR P 97 P LC
  2493. MTTR Q 98 Q LC
  2494. MTTR R 99 R LC
  2495. MTTR ( ) 9A
  2496. MTTR ( ) 9B
  2497. MTTR ( ) 9C
  2498. MTTR ( ) 9D
  2499. MTTR ( ) 9E
  2500. MTTR ( ) 9F
  2501.  
  2502. MTTR ( ) A0
  2503. MTTR ^ A1 OVERLINE (TILDE)
  2504. MTTR S A2 S LC
  2505. MTTR T A3 T LC
  2506. MTTR U A4 U LC
  2507. MTTR V A5 V LC
  2508. MTTR W A6 W LC
  2509. MTTR X A7 X LC
  2510. MTTR Y A8 Y LC
  2511. MTTR Z A9 Z LC
  2512. MTTR ( ) AA
  2513. MTTR ( ) AB
  2514. MTTR ( ) AC
  2515. MTTR ( ) AD
  2516. MTTR ( ) AE
  2517. MTTR ( ) AF
  2518.  
  2519. MTTR ( ) B0
  2520. MTTR ( ) B1
  2521. MTTR ( ) B2
  2522. MTTR ( ) B3
  2523. MTTR ( ) B4
  2524. MTTR ( ) B5
  2525. MTTR ( ) B6
  2526. MTTR ( ) B7
  2527. MTTR ( ) B8
  2528. MTTR ( ) B9
  2529. MTTR ( ) BA
  2530. MTTR ( ) BB
  2531. MTTR ( ) BC
  2532. MTTR ( ) BD
  2533. MTTR ( ) BE
  2534. MTTR ( ) BF
  2535.  
  2536. MTTR < C0 OPENING BRACE
  2537. MTTR A,,L C1 A
  2538. MTTR B,,L C2 B
  2539. MTTR C,,L C3 C
  2540. MTTR D,,L C4 D
  2541. MTTR E,,L C5 E
  2542. MTTR F,,L C6 F
  2543. MTTR G,,L C7 G
  2544. MTTR H,,L C8 H
  2545. MTTR I,,L C9 I
  2546. MTTR ( ) CA
  2547. MTTR ( ) CB
  2548. MTTR ( ) CC
  2549. MTTR ( ) CD
  2550. MTTR ( ) CE
  2551. MTTR ( ) CF
  2552.  
  2553. MTTR ! D0 CLOSING BRACE
  2554. MTTR J,,L D1 J
  2555. MTTR K,,L D2 K
  2556. MTTR L,,L D3 L
  2557. MTTR M,,L D4 M
  2558. MTTR N,,L D5 N
  2559. MTTR O,,L D6 O
  2560. MTTR P,,L D7 P
  2561. MTTR Q,,L D8 Q
  2562. MTTR R,,L D9 R
  2563. MTTR ( ) DA
  2564. MTTR ( ) DB
  2565. MTTR ( ) DC
  2566. MTTR ( ) DD
  2567. MTTR ( ) DE
  2568. MTTR ( ) DF
  2569.  
  2570. MTTR \,,L E0 REVERSE SLANT
  2571. MTTR ( ) E1
  2572. MTTR S,,L E2 S
  2573. MTTR T,,L E3 T
  2574. MTTR U,,L E4 U
  2575. MTTR V,,L E5 V
  2576. MTTR W,,L E6 W
  2577. MTTR X,,L E7 X
  2578. MTTR Y,,L E8 Y
  2579. MTTR Z,,L E9 Z
  2580. MTTR ( ) EA
  2581. MTTR ( ) EB
  2582. MTTR ( ) EC
  2583. MTTR ( ) ED
  2584. MTTR ( ) EE
  2585. MTTR ( ) EF
  2586.  
  2587. MTTR 0,,L F0 0
  2588. MTTR 1,,L F1 1
  2589. MTTR 2,,L F2 2
  2590. MTTR 3,,L F3 3
  2591. MTTR 4,,L F4 4
  2592. MTTR 5,,L F5 5
  2593. MTTR 6,,L F6 6
  2594. MTTR 7,,L F7 7
  2595. MTTR 8,,L F8 8
  2596. MTTR 9,,L F9 9
  2597. MTTR ( ) FA
  2598. MTTR ( ) FB
  2599. MTTR ( ) FC
  2600. MTTR ( ) FD
  2601. MTTR ( ) FE
  2602. MTTR ( ) FF
  2603.  
  2604. LOC *O
  2605.  
  2606. ENDX
  2607. CTEXT ATS CONVERSION MACROS AND TABLES. (WRITE)
  2608. ATSW SPACE 4,10,10
  2609. ** ATSW - GENERATE ATS CONVERSION MEMORY FOR WRITE OF
  2610. * 6 BIT CHARACTERS.
  2611. *
  2612. * THIS MACRO GENERATES THE CODE FOR THE ATS TAPE
  2613. * CONTROLLER FOR OUTPUT OF 6 BIT BCD CHARACTERS.
  2614. *
  2615. * ATSW CH1,CH2
  2616. *
  2617. * WHERE CH1, CH2 = BCD CHARACTER VALUES IN OCTAL. THESE
  2618. * TWO CHARACTERS WILL BE PACKED INTO 1 PP WORD.
  2619.  
  2620.  
  2621. PURGMAC ATSW
  2622.  
  2623. ATSW MACRO CH1,CH2
  2624. CON CH1_CH2
  2625. ENDM
  2626. ATEW SPACE 4,10,10
  2627. ** ATEW - GENERATE ATS CONVERSION TABLE FOR WRITE
  2628. * OF EIGHT BIT CHARACTERS.
  2629. *
  2630. * THIS MACRO GENERATES THE CODE FOR ATS TAPE CONTROLLER
  2631. * FOR THE OUTPUT OF 8 BIT CHARACTERS.
  2632. *
  2633. * ATEW CH1,CH2,CH3
  2634. *
  2635. * WHERE CH1, CH2, CH3 = CHARACTER VALUES IN HEXIDECIMAL.
  2636. * THE 3 CHARACTERS WILL BE PACKED INTO 2 PP WORDS.
  2637.  
  2638.  
  2639. PURGMAC ATEW
  2640.  
  2641. ATEW MACRO CH1,CH2,CH3
  2642. .1 MICRO 1,1, _CH2
  2643. .2 MICRO 2,1, _CH2
  2644. CON 0#_CH1_".1",0#_".2"_CH3
  2645. ENDM
  2646. ATBCD SPACE 4,10,10
  2647. ** ATBCD - TABLE TO CONVERT DISPLAY TO INTERNAL BCD.
  2648. * EACH PP WORD CONTAINS 2 INTERNAL BCD VALUES.
  2649. * INDEXED BY DISPLAY CODE VALUE / 2.
  2650.  
  2651.  
  2652. ATBCD BSS 0
  2653. LOC 0
  2654.  
  2655. ATSW 00,21 COLON, A
  2656. C6463 ATSW,(16,21) (63 CHARACTER SET - COLON, A)
  2657. ATSW 22,23 B, C
  2658. ATSW 24,25 D, E
  2659. ATSW 26,27 F, G
  2660. ATSW 30,31 H, I
  2661. ATSW 41,42 J, K
  2662. ATSW 43,44 L, M
  2663. ATSW 45,46 N, O
  2664. ATSW 47,50 P, Q
  2665. ATSW 51,62 R, S
  2666. ATSW 63,64 T, U
  2667. ATSW 65,66 V, W
  2668. ATSW 67,70 X, Y
  2669. ATSW 71,00 Z, 0
  2670. ATSW 01,02 1, 2
  2671. ATSW 03,04 3, 4
  2672. ATSW 05,06 5, 6
  2673. ATSW 07,10 7, 8
  2674. ATSW 11,20 9, +
  2675. ATSW 40,54 -, *
  2676. ATSW 61,74 /, (
  2677. ATSW 34,53 ), $
  2678. ATSW 13,60 =, SPACE
  2679. ATSW 73,33 ., ,
  2680. ATSW 76,17 #, [
  2681. ATSW 72,16 ],
  2682. C6463 ATSW,(72,00) (63 CHARACTER SET - ], %)
  2683. ATSW 14,75 ", _
  2684. ATSW 52,77 !, &
  2685. ATSW 55,56 ', ?
  2686. ATSW 32,57 <, >
  2687. ATSW 15,35 @A \
  2688. ATSW 36,37 ^, ;
  2689.  
  2690. DUP 96,1
  2691. ATSW 60,60 BLANK FILL REMAINDER OF TABLE
  2692.  
  2693. LOC *O
  2694. ATANS SPACE 4,10
  2695. ** ATANS - TABLE TO CONVERT DISPLAY TO ASCII.
  2696. * EACH 2 PP WORDS CONTAIN 3 ASCII VALUES.
  2697.  
  2698.  
  2699. ATANS BSS 0
  2700. LOC 0
  2701.  
  2702. ATEW 3A,41,42 COLON, A, B
  2703. C6463 ATEW,(20,41,42),P (63 CHARACTER SET - SPACE, A, B)
  2704. ATEW 43,44,45 C, D, E
  2705. ATEW 46,47,48 F, G, H
  2706. ATEW 49,4A,4B I, J, K
  2707. ATEW 4C,4D,4E L, M, N
  2708. ATEW 4F,50,51 O, P, Q
  2709. ATEW 52,53,54 R, S, T
  2710. ATEW 55,56,57 U, V, W
  2711. ATEW 58,59,5A X, Y, Z
  2712. ATEW 30,31,32 0, 1, 2
  2713. ATEW 33,34,35 3, 4, 5
  2714. ATEW 36,37,38 6, 7, 8
  2715. ATEW 39,2B,2D 9, PLUS, HYPHEN
  2716. ATEW 2A,2F,28 ASTERISK, SLANT, OPENING PAREN
  2717. ATEW 29,24,3D CLOSING PAREN, DOLLAR SIGN, EQUALS
  2718. ATEW 20,2C,2E SPACE, PERIOD, COMMA
  2719. ATEW 23,5B,5D NUMBER SIGN, OPEN BRACKET, CLOSING BRACKET
  2720. ATEW 25,22,5F PERCENT, QUOTATION MARKS, UNDERLINE
  2721. C6463 ATEW,(3A,22,5F),P (63 CHARACTER SET - PERCENT)
  2722. ATEW 21,26,27 EXCLAMATION POINT, AMPERSAND, APOSTROPHE
  2723. ATEW 3F,3C,3E QUESTION MARK, LESS THAN, GREATER THAN
  2724. ATEW 40,5C,5E COMMERICAL AT, REVERSE SLANT, CIRCUMFLEX
  2725. ATEW 3B,20,20 SEMICOLON, SPACE, SPACE
  2726.  
  2727. DUP 63,1
  2728. ATEW 20,20,20 BLANK FILL REMAINDER OF TABLE
  2729. CON 400 LAST CHARACTER
  2730.  
  2731. LOC *O
  2732. ATEBC SPACE 4,10
  2733. ** ATEBC - TABLE TO CONVERT DISPLAY TO EBCDIC.
  2734. * EACH 2 PP WORDS CONTAIN 3 EBCDIC VALUES.
  2735.  
  2736.  
  2737. ATEBC BSS 0
  2738. LOC 0
  2739.  
  2740. ATEW 7A,C1,C2 COLON, A, B
  2741. C6463 ATEW,(00,C1,C2),P (63 CHARACTER SET - COLON, A, B)
  2742. ATEW C3,C4,C5 C, D, E
  2743. ATEW C6,C7,C8 F, G, H
  2744. ATEW C9,D1,D2 I, J, K
  2745. ATEW D3,D4,D5 L, M, N
  2746. ATEW D6,D7,D8 O, P, Q
  2747. ATEW D9,E2,E3 R, S, T
  2748. ATEW E4,E5,E6 U, V, W
  2749. ATEW E7,E8,E9 X, Y, Z
  2750. ATEW F0,F1,F2 0, 1, 2
  2751. ATEW F3,F4,F5 3, 4, 5
  2752. ATEW F6,F7,F8 6, 7, 8
  2753. ATEW F9,4E,60 9, PLUS, HYPHEN
  2754. ATEW 5C,61,4D ASTERISK, SLANT, OPENING PAREN
  2755. ATEW 5D,5B,7E CLOSING PAREN, DOLLAR SIGN, EQUALS
  2756. ATEW 40,6B,4B SPACE, PERIOD, COMMA
  2757. ATEW 7B,4A,5A NUMBER SIGN, OPEN BRACKET, CLOSING BRACKET
  2758. ATEW 6C,7F,6D PERCENT, QUOTATION MARKS, UNDERLINE
  2759. C6463 ATEW,(7A,7F,6D),P (63 CHARACTER SET - COLON)
  2760. ATEW 4F,50,7D EXCLAMATION POINT, AMPERSAND, APOSTROPHE
  2761. ATEW 6F,4C,6E QUESTION MARK, LESS THAN, GREATER THAN
  2762. ATEW 7C,E0,5F COMMERCIAL AT, REVERSE SLANT, CIRCUMFLEX
  2763. ATEW 5E,40,40 SEMICOLON, SPACE, SPACE
  2764.  
  2765. DUP 63,1
  2766. ATEW 40,40,40 BLANK FILL REMAINDER OF TABLE
  2767. CON 1000 LAST CHARACTER
  2768.  
  2769. LOC *O
  2770. ENDX
  2771. TITLE INITIALIZATION SUBROUTINES.
  2772. ABT SPACE 4,10
  2773. ** ABT - ABORT.
  2774. *
  2775. * ENTRY (A) = MESSAGE ADDRESS.
  2776. *
  2777. * CALLS DFM.
  2778. *
  2779. * MACROS MONITOR.
  2780.  
  2781.  
  2782. ABT RJM DFM ISSUE MESSAGE
  2783. MONITOR ABTM ABORT
  2784. LJM PPR EXIT TO PP RESIDENT
  2785. ADC SPACE 4,10
  2786. ** ADC - ABORT AND DROP CHANNEL.
  2787. *
  2788. * ENTRY (A) = MESSAGE ADDRESS.
  2789. * (CA) = CHANNEL NUMBER.
  2790. *
  2791. * CALLS C2D, DFM.
  2792. *
  2793. * MACROS DCHAN.
  2794.  
  2795.  
  2796. ADC STD AB SAVE MESSAGE ADDRESS
  2797. LDD CA RETURN CHANNEL
  2798. DCHAN
  2799. LDD CA SET CHANNEL NUMBER IN MESSAGE
  2800. RJM C2D
  2801. STM 1,AB
  2802. LDD AB
  2803. ADC ERLN
  2804. RJM DFM ISSUE MESSAGE TO ERROR LOG
  2805. LDD AB
  2806. UJN ABT ABORT
  2807. BCT SPACE 4,10
  2808. ** BCT - BUILD CHANNEL STATUS TABLE.
  2809. *
  2810. * ENTRY CST ENTRIES PRESET TO ZERO BY MAGNET.
  2811. *
  2812. * EXIT CHANNEL AND CONTROLLER FLAGS SET IN *CPST*.
  2813. *
  2814. * USES T1, CM - CM+4.
  2815.  
  2816.  
  2817. BCT SUBR ENTRY/EXIT
  2818. LDN 0 INITIALIZE CHANNEL INDEX
  2819. STD T1
  2820. BCT1 LDM CHLI,T1
  2821. LMC 7777
  2822. ZJN BCTX IF END OF CHANNELS
  2823. LDN ZERL CLEAR ASSEMBLY
  2824. CRD CM
  2825. LDM CHLI,T1 SAVE CHANNEL NUMBER AND CONTROLLER FLAGS
  2826. LPC 340
  2827. NJN BCT2 IF NOT CMTS CONTROLLER
  2828. LDM CHLI,T1
  2829. LPC 7437
  2830. LMD HN
  2831. UJN BCT3 SET CMTS
  2832.  
  2833. BCT2 LDM CHLI,T1
  2834. LPC 7737
  2835. BCT3 STD CM+3
  2836. AOD CM+4 INSURE NON-ZERO ENTRY FOR MAGNET CHECK
  2837. LDD RA SET CST ADDRESS
  2838. SHN 6
  2839. ADK /MTX/CST
  2840. ADD T1
  2841. ADD T1
  2842. ERRNZ /MTX/CSTE-2
  2843. ADK /MTX/CPST INITIALIZE PROCESSOR STATUS
  2844. CWD CM
  2845. AOD T1 ADVANCE CHANNEL INDEX
  2846. LJM BCT1 PROCESS NEXT CHANNEL
  2847. BDW SPACE 4,25
  2848. ** BDW - BUILD DEFINITON WORDS.
  2849. *
  2850. * RETURNS EQUIPMENT DEFINITION INFORMATION FOR EACH UNIT TO
  2851. * BUFFER AT /MTX/UINT. THE BUFFER IS TERMINATED WITH A ZERO
  2852. * WORD.
  2853. *
  2854. * USES T5, T7, SC, AB - AB+4, CM - CM+4, CN - CN+4.
  2855. *
  2856. * CALLS CTE.
  2857. *
  2858. * MACROS SFA.
  2859. *
  2860. * *UINT* ENTRY FORMAT -
  2861. *
  2862. *T 12/ ED,12/ HP,12/ EO,12/ ATCP,9/0,2/DT,1/R
  2863. *
  2864. * ED *ED* BYTE OF *UST1*.
  2865. * HP *HP* BYTE OF *UST1*.
  2866. * EO *EO* BYTE OF *UST1*.
  2867. * ATCP *AT* DEVICE CONTROL PATH INFORMATION.
  2868. * DT TAPE DEVICE TYPE.
  2869. * R RESERVED FOR TAPE DEVICE TYPE EXPANSION.
  2870.  
  2871.  
  2872. * TERMINATE *UINT*.
  2873.  
  2874. BDW3 LDD RA WRITE ZERO ENTRY
  2875. SHN 6
  2876. ADC /MTX/UINT
  2877. ADD T7
  2878. CWD CM
  2879.  
  2880. BDW SUBR ENTRY/EXIT
  2881.  
  2882. * INITIALIZE EST SEARCH.
  2883.  
  2884. LDN ESTP READ EST POINTER
  2885. CRD CM
  2886. LDD CM+2 SET LAST EST ORDINAL + 1
  2887. STD SC
  2888. LDN 0
  2889. STD T7
  2890. LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
  2891. STD T5
  2892.  
  2893. * CHECK FOR TAPE EQUIPMENT.
  2894.  
  2895. BDW1 LDN ZERL CLEAR ASSEMBLY
  2896. CRD CM
  2897. AOD T5 INCREMENT EST ORDINAL
  2898. LMD SC
  2899. ZJN BDW3 IF END OF EST
  2900. SFA EST,T5 READ EST ENTRY
  2901. ADK EQDE
  2902. CRD AB
  2903. ADK EQAE-EQDE
  2904. CRD CN
  2905. LDD AB+3 GET EQUIPMENT MNEMONIC
  2906. RJM CTE CHECK FOR TAPE EQUIPMENT
  2907. MJN BDW1 IF NOT TAPE EQUIPMENT
  2908.  
  2909. * INITIALIZE *UINT* ENTRY.
  2910.  
  2911. SHN 1 SET DEVICE TYPE
  2912. STD CM+4
  2913. LDD T5 SET EST ORDINAL
  2914. STD CM+2
  2915. LDD AB SET MTS/ATS/GCR FLAGS
  2916. SHN -3
  2917. LPN 62
  2918. STD CM+1
  2919. LDD AB SET FSC FLAG
  2920. LPC 100
  2921. RAD CM+1
  2922. LDD AB SET CMTS FLAG
  2923. LPN 4
  2924. SHN 6-2
  2925. RAD CM+1
  2926. LDM BDWA,T1 SET CTS AND 9 TRACK STATUS
  2927. RAD CM+1
  2928. LDD AB SET ISMT FLAG
  2929. LPN 10
  2930. SHN 10-3
  2931. RAD CM+1
  2932. LDD CN+3 SET ACCESS LEVELS
  2933. LPN 77
  2934. SHN 6
  2935. STD CM
  2936. LDD T1
  2937. LMN /MTX/DVAT
  2938. NJN BDW2 IF NOT *AT* DEVICE
  2939. LDN 2 SET ACS FLAG
  2940. RAD CM
  2941. LDD CN+2 SET CONTROL PATH PARAMETERS
  2942. STD CM+3
  2943. BDW2 LDD RA
  2944. SHN 6
  2945. ADC /MTX/UINT WRITE DEFINITION TO *MAGNET* BUFFER
  2946. ADD T7
  2947. CWD CM
  2948. AOD T7
  2949. LJM BDW1 LOOP FOR OTHER UNITS
  2950.  
  2951.  
  2952. * TABLE TO SET 9 TRACK OR CTS FLAG IN *UST1*.
  2953.  
  2954. BDWA INDEX
  2955. INDEX /MTX/DVMT,0
  2956. INDEX /MTX/DVCT,200
  2957. INDEX /MTX/DVNT,1
  2958. INDEX /MTX/DVAT,200
  2959. INDEX /MTX/DVMX
  2960. CCT SPACE 4,10
  2961. ** CCT - CONVERT CONVERSION TABLE. (MTS TABLE TO ATS READ TABLE)
  2962. *
  2963. * ENTRY (A) = ADDRESS OF MTS TABLE.
  2964. * (T1) = TABLE NUMBER.
  2965. *
  2966. * EXIT BFMS CONTAINS ATS READ CONVERSION TABLE.
  2967. *
  2968. * USES T2 - T6.
  2969.  
  2970.  
  2971. CCT2 LDI T2 CONVERT BCD TABLE
  2972. STD T4
  2973. AOD T2
  2974. LDD T4
  2975. SHN 6
  2976. ADI T2
  2977. STM BFMS,T3
  2978. AOD T2
  2979. AOD T3
  2980. LMN 64D/2
  2981. NJN CCT2 IF MORE CHARACTERS IN TABLE
  2982. CCT3 LDC 2R SPACE FILL REMAINDER OF TABLE
  2983. STM BFMS,T3
  2984. AOD T3
  2985. LMC 128D
  2986. NJN CCT3 IF MORE CHARACTERS
  2987.  
  2988. CCT SUBR ENTRY/EXIT
  2989. STD T2 SAVE TABLE ADDRESS
  2990. LDN 0 INITIALIZE COUNTER
  2991. STD T3
  2992. LDD T1
  2993. LMN 3
  2994. ZJN CCT2 IF BCD LOAD
  2995.  
  2996. * PROCESS 8 BIT CONVERSION.
  2997.  
  2998. CCT1 LDI T2 PACK 3 MTS BYTES INTO 2 ATS BYTES
  2999. LPC 177
  3000. STD T4
  3001. AOD T2
  3002. LDI T2
  3003. LPC 177
  3004. STD T5
  3005. AOD T2
  3006. LDI T2
  3007. LPC 177
  3008. STD T6
  3009. AOD T2
  3010. LDD T4 MERGE THE CHARACTERS
  3011. SHN 8D
  3012. ADD T5
  3013. SHN -4D
  3014. STM BFMS,T3
  3015. AOD T3
  3016. LDD T5
  3017. SHN 8D
  3018. ADD T6
  3019. STM BFMS,T3
  3020. AOD T3
  3021. ADC -170D
  3022. MJN CCT1 IF MORE CHARACTERS TO CONVERT
  3023. LDI T2 SET LAST PARTIAL BYTE
  3024. LPC 177
  3025. SHN 4D
  3026. STM BFMS,T3
  3027. LJM CCTX RETURN
  3028. SPACE 4,15
  3029. ** CHANNEL AND EQUIPMENT DEFINITIONS.
  3030. *
  3031. * *CHLI* IS BUILT BY *CCH*, IN THE FOLLOWING FORMAT.
  3032. *
  3033. * 13-11 EQUIPMENT NUMBER (0 IF CTS CHANNEL).
  3034. * 10 RESERVED.
  3035. * 7,6,5 CONTROLLER TYPE.
  3036. * 000 = CMTS CHANNEL.
  3037. * 001 = ISMT CHANNEL.
  3038. * 010 = ATS CHANNEL.
  3039. * 011 = FSC CHANNEL.
  3040. * 100 = MTS CHANNEL.
  3041. * 111 = CTS CHANNEL.
  3042. * 4-0 CHANNEL NUMBER.
  3043.  
  3044.  
  3045. CHCN CON 0 COUNT OF TAPE CHANNELS
  3046. CHLI CON -0,-0,-0,-0,-0,-0,-0,-0,-0
  3047. CMD SPACE 4,10
  3048. ** CMD - CHANNEL MODIFICATION.
  3049. *
  3050. * ENTRY (A) = CHANNEL.
  3051. *
  3052. * EXIT (CA) = CHANNEL.
  3053. * (A) = 0 IF CHANNEL RESERVED.
  3054. * (A) .NE. 0 IF CHANNEL DOWN.
  3055. *
  3056. * USES T0, T3.
  3057. *
  3058. * MACROS RCHAN.
  3059.  
  3060.  
  3061. CMD SUBR ENTRY/EXIT
  3062. LPN 37
  3063. STD CA SET CHANNEL NUMBER
  3064. ADC 4000 REQUEST REPLY IF CHANNEL DOWN
  3065. RCHAN
  3066. LDD CM+1
  3067. SHN 0-13
  3068. NJN CMDX IF CHANNEL DOWN
  3069. LDC CTAB MODIFY CHANNELS
  3070. STD T3
  3071. CMD1 LDI T3
  3072. ZJN CMDX IF END OF CHANNEL TABLE
  3073. STD T0
  3074. LDI T0
  3075. SCN 37
  3076. LMD CA
  3077. STI T0
  3078. AOD T3
  3079. UJN CMD1 CONTINUE MODIFYING CHANNEL INSTRUCTIONS
  3080. CTE SPACE 4,10
  3081. ** CTE - CHECK FOR TAPE EQUIPMENT.
  3082. *
  3083. * ENTRY (A) = EQUIPMENT MNEMONIC.
  3084. *
  3085. * EXIT (A) = TAPE DEVICE TYPE IF TAPE EQUIPMENT.
  3086. * (A) .LT. 0 IF NOT TAPE EQUIPMENT.
  3087. * (T1) = TAPE DEVICE TYPE IF TAPE EQUIPMENT.
  3088. *
  3089. * USES T1.
  3090.  
  3091.  
  3092. CTE SUBR ENTRY/EXIT
  3093. STD T0
  3094. LDN /MTX/DVMX
  3095. STD T1
  3096. CTE1 SOD T1
  3097. MJN CTEX IF ALL ENTRIES CHECKED
  3098. LDD T0
  3099. LMM CTEA,T1
  3100. NJN CTE1 IF NO MATCH
  3101. LDD T1 SET DEVICE TYPE
  3102. UJN CTEX RETURN
  3103.  
  3104.  
  3105. CTEA INDEX DEVICE MNEMONIC TABLE
  3106. INDEX /MTX/DVMT,2RMT
  3107. INDEX /MTX/DVCT,2RCT
  3108. INDEX /MTX/DVNT,2RNT
  3109. INDEX /MTX/DVAT,2RAT
  3110. INDEX /MTX/DVMX
  3111. ICF SPACE 4,10
  3112. ** ICF - ISSUE CHANNEL FUNCTION.
  3113. *
  3114. * ENTRY (A) = FUNCTION.
  3115. *
  3116. * EXIT (A) = 0 IF FUNCTION REJECT
  3117. * (A) .NE. 0 IF NOT FUNCTION REJECT.
  3118.  
  3119.  
  3120. ICF SUBR ENTRY/EXIT
  3121. DCN CH+40
  3122. FAN CH
  3123. LCN 0
  3124. ICF1 IJM ICFX,CH IF FUNCTION ACCEPTED
  3125. SBN 1
  3126. NJN ICF1 IF NOT TIMED OUT
  3127. DCN CH+40
  3128. UJN ICFX RETURN
  3129. IFL SPACE 4,10
  3130. ** IFL - INITIALIZE FOR FIRMWARE LOAD.
  3131. *
  3132. * ENTRY (A) = 3 CHARACTER ADAPTOR NAME.
  3133. *
  3134. * EXIT (SC) = CHLI-1.
  3135. * THE ADAPTOR NAME IS SET INTO THE APPROPRIATE DAYFILE
  3136. * MESSAGES AND THE FIRMWARE PART NUMBER IS INITIALIZED.
  3137. *
  3138. * USES T1.
  3139.  
  3140.  
  3141. IFL SUBR ENTRY/EXIT
  3142. STM LBCG+3
  3143. STM LBCH+1
  3144. STM LCMC+5
  3145. SHN -14
  3146. LMC 2L
  3147. STM LBCG+2 CHANGE MESSAGES
  3148. STM LBCH
  3149. STM LCMC+4
  3150. LDC /MTX/UIBF SET CM BUFFER ADDRESS
  3151. STM LBCA
  3152. LDC ADCI
  3153. STM LBCA-1
  3154. LDN 3
  3155. STD T1
  3156. IFL1 LDC 2R00 REINITIALIZE FIRMWARE PART NUMBER
  3157. STM LBCH+17,T1
  3158. SOD T1
  3159. PJN IFL1 IF MORE BYTES TO INITIALIZE
  3160. LDC CHLI-1 INITIALIZE *CHLI* INDEX
  3161. STD SC
  3162. LJM IFLX RETURN
  3163. ILM SPACE 4,10
  3164. ** ILM - ISSUE FIRMWARE LOADED MESSAGE.
  3165. *
  3166. * ENTRY (ILMA) = 1 IF FIRMWARE LOADED.
  3167. * (LBCH) = MESSAGE.
  3168. *
  3169. * EXIT (ILMA) = 0.
  3170. *
  3171. * CALLS DFM.
  3172.  
  3173.  
  3174. ILM SUBR ENTRY/EXIT
  3175. LDC 0
  3176. ILMA EQU *-1
  3177. * LDC 1 (FIRMWARE WAS LOADED)
  3178. ZJN ILMX IF FIRMWARE NOT LOADED
  3179. LDC LBCH+ERLN ISSUE MESSAGE TO ERRLOG
  3180. RJM DFM
  3181. STM ILMA RESET
  3182. UJN ILMX RETURN
  3183. LBC SPACE 4,15
  3184. ** LBC - LOAD BUFFER CONTROLLER.
  3185. *
  3186. * LOAD CONTROLWARE TO FSC, ISMT, CMTS, MTS, AND CTS TAPE
  3187. * ADAPTORS. ALSO LOAD CONVERSION TABLES TO MTS, ATS, FSC, ISMT
  3188. * AND CMTS CONTROLLERS.
  3189. *
  3190. * ENTRY (CHLI) = TABLE OF CHANNELS.
  3191. *
  3192. * EXIT FIRMWARE LOADED.
  3193. *
  3194. * ERROR EXIT TO *ABT* IF FIRMWARE RECORD NOT FOUND.
  3195. *
  3196. * USES CN, EQ, PL, SC, T1, T3 - T7, AB - AB+4, CM - CM+4.
  3197. *
  3198. * CALLS CLD, CMD, ICF, IFL, ILM, LCA, LCM, RNS, *0CT*.
  3199. *
  3200. * MACROS DCHAN, DELAY, ENDMS, EXECUTE, SETMS.
  3201.  
  3202.  
  3203. LBC17 RJM ILM ISSUE FIRMWARE LOADED MESSAGE
  3204.  
  3205. * INITIALIZE FSC FIRMWARE LOAD.
  3206.  
  3207. LDC 3RFSC INITIALIZE FOR FSC FIRMWARE LOAD
  3208. RJM IFL
  3209. LDC ZJNI+LBC15-LBCC
  3210. ERRPL LBC15-LBCC-40 CHECK JUMP IN RANGE
  3211. STM LBCC CHANGE END OF FIRMWARE LOAD
  3212.  
  3213. * LOAD FIRMWARE TO ALL FSC ADAPTORS.
  3214.  
  3215. LBC18 AOD SC
  3216. LDI SC
  3217. LMC 7777
  3218. ZJN LBC21 IF END OF CHANNELS
  3219. SHN -5
  3220. LPN 7
  3221. LMN 3&7
  3222. NJN LBC18 IF NOT FSC
  3223. LDM ILMA
  3224. ZJN LBC19 IF FIRMWARE NOT IN CM BUFFER YET
  3225. LJM LBC10 OUTPUT FIRMWARE TO ADAPTOR
  3226.  
  3227. LBC19 AOM ILMA INDICATE FIRMWARE IN BUFFER
  3228. LDD MA
  3229. CWM LBCI,ON MOVE RECORD NAME TO DIRECT CELLS
  3230. SBN 1
  3231. CRD AB
  3232. RJM CLD SEARCH LIBRARY DIRECTORY
  3233. NJN LBC20 IF FIRMWARE RECORD FOUND
  3234. LDC =C* FSC FIRMWARE NOT FOUND.*
  3235. LJM ABT ABORT
  3236.  
  3237. LBC20 LJM LBC6 CONTINUE FIRMWARE RECORD READ
  3238.  
  3239. LBC21 RJM ILM ISSUE FIRMWARE LOADED MESSAGE
  3240.  
  3241. * INITIALIZE CMTS FIRMWARE LOAD.
  3242.  
  3243. LDC 3R698 INITIALIZE FOR 698 FIRMWARE LOAD
  3244. RJM IFL
  3245. LDC LBC22 SET RETURN ADDRESS
  3246. STM LBCD
  3247.  
  3248. * LOAD FIRMWARE TO ALL CMTS ADAPTORS.
  3249.  
  3250. LBC22 AOD SC
  3251. LDI SC
  3252. LMC 7777
  3253. ZJN LBC25 IF END OF CHANNELS
  3254. SHN -5
  3255. LPN 7
  3256. LMN 0&7
  3257. NJN LBC22 IF NOT CMTS
  3258. LDM ILMA
  3259. ZJN LBC23 IF FIRMWARE NOT IN CM BUFFER YET
  3260. LJM LBC10 OUTPUT FIRMWARE TO ADAPTOR
  3261.  
  3262. LBC23 AOM ILMA INDICATE FIRMWARE IN BUFFER
  3263. LDD MA
  3264. CWM LBCK,ON MOVE RECORD NAME TO DIRECT CELLS
  3265. SBN 1
  3266. CRD AB
  3267. RJM CLD SEARCH LIBRARY DIRECTORY
  3268. NJN LBC24 IF FIRMWARE RECORD FOUND
  3269. LDC =C* 698 FIRMWARE NOT FOUND.*
  3270. LJM ABT ABORT
  3271.  
  3272. LBC24 LJM LBC6 CONTINUE FIRMWARE RECORD READ
  3273.  
  3274. LBC25 RJM ILM ISSUE FIRMWARE LOADED MESSAGE
  3275.  
  3276. * INITIALIZE ISMT FIRMWARE LOAD.
  3277.  
  3278. LDC 3R639 INITIALIZE FOR 639 FIRMWARE LOAD
  3279. RJM IFL
  3280. LDC LBC26
  3281. STM LBCD
  3282.  
  3283. * LOAD FIRMWARE TO ALL ISMT ADAPTORS.
  3284.  
  3285. LBC26 AOD SC
  3286. LDI SC
  3287. LMC 7777
  3288. ZJN LBC29 IF END OF CHANNELS
  3289. SHN -5
  3290. LPN 7
  3291. LMN 1&7
  3292. NJN LBC26 IF NOT ISMT
  3293. LDM ILMA
  3294. ZJN LBC27 IF FIRMWARE NOT IN CM BUFFER YET
  3295. LJM LBC10 OUTPUT FIRMWARE TO ADAPTOR
  3296.  
  3297. LBC27 AOM ILMA INDICATE FIRMWARE IN BUFFER
  3298. LDD MA
  3299. CWM LBCJ,ON MOVE RECORD NAME TO DIRECT CELLS
  3300. SBN 1
  3301. CRD AB
  3302. RJM CLD SEARCH LIBRARY DIRECTORY
  3303. NJN LBC28 IF FIRMWARE RECORD FOUND
  3304. LDC =C* 639 FIRMWARE NOT FOUND.*
  3305. LJM ABT ABORT
  3306.  
  3307. LBC28 LJM LBC6 CONTINUE FIRMWARE RECORD READ
  3308.  
  3309. LBC29 RJM ILM ISSUE FIRMWARE LOADED MESSAGE
  3310.  
  3311. * LOAD FIRMWARE TO ALL CTS ADAPTERS.
  3312.  
  3313. LDC 3RCTS
  3314. RJM IFL INITIALIZE FOR FIRMWARE LOAD
  3315. LBC30 AOD SC
  3316. LDI SC
  3317. LMC 7777
  3318. ZJP LBC32 IF END OF CHANNELS
  3319. SHN -5
  3320. LPN 7
  3321. LMK 7&7
  3322. NJN LBC30 IF NOT CTS
  3323. AOM ILMA SO FIRMWARE LOADED MESSAGE DISPLAYED
  3324. LDI SC SET CHANNEL NUMBER
  3325. LPN 37
  3326. STD CN
  3327. RJM CMD REQUEST CHANNEL
  3328. NJN LBC30 IF CHANNEL DOWN
  3329. LDC ERLB SET BUFFER ADDRESS
  3330. STD CN+1
  3331. LBC30.1 DELAY
  3332. LDD OA WAIT OUTPUT REGISTER CLEAR
  3333. CRD CM
  3334. LDD CM
  3335. NJN LBC30.1 IF RECALL STILL PENDING
  3336. EXECUTE 0CT,ERLA+5 LOAD CTS/CCC MICROCODE
  3337. LDD CN
  3338. NJP LBC30.2 IF ERROR
  3339. STM LBCH+17 INDICATE END OF MESSAGE
  3340. LDC 2RMB
  3341. STM LBCH+12 PUT MB468-D0X IN MESSAGE
  3342. LDC 2R46
  3343. STM LBCH+13
  3344. LDC 2R8-
  3345. STM LBCH+14
  3346. LDC 2RD0
  3347. STM LBCH+15
  3348. LDD CN+2 GET MICROCODE REVISION
  3349. SHN 6
  3350. ADC 2R0.
  3351. STM LBCH+16
  3352. LDD CA
  3353. DCHAN DROP CHANNEL
  3354. UJP LBC30 CHECK NEXT CHANNEL
  3355.  
  3356. LBC30.2 SHN 0-13
  3357. NJN LBC31 IF FIRMWARE NOT FOUND
  3358. LDC LBCG
  3359. LJM ADC ABORT FIRMWARE LOAD
  3360.  
  3361. LBC31 LDC =C* CTS FIRMWARE NOT FOUND.*
  3362. LJM ABT ABORT
  3363.  
  3364. LBC32 RJM ILM ISSUE FIRMWARE LOADED MESSAGE
  3365.  
  3366. LBC SUBR ENTRY/EXIT
  3367. LDC CHLI-1
  3368. STD SC
  3369. LDM DLYA
  3370. LPN 14
  3371. ZJN LBC2 IF 1X PPU SPEED
  3372. LPN 4
  3373. ZJN LBC1 IF 2X PP SPEED
  3374. DL2X EQU LDCI+40
  3375. DL4X EQU LCNI+0
  3376. LDC DL4X&DL2X INCREASE DELAY FOR 4X PPU SPEED
  3377. LBC1 LMC DL2X INCREASE DELAY FOR 2X PPU SPEED
  3378. STM LCMB
  3379.  
  3380. * LOAD FIRMWARE TO MTS CHANNEL. ALSO LOAD ATS AND MTS
  3381. * CONVERSION MEMORIES.
  3382.  
  3383. LBC2 AOD SC
  3384. LDI SC
  3385. LMC 7777
  3386. NJN LBC3 IF NOT END OF CHANNELS
  3387. LJM LBC17 PROCESS FSC CHANNELS
  3388.  
  3389. LBC3 SHN -5
  3390. LPN 7
  3391. LMN 4&7
  3392. ZJN LBC4 IF MTS CHANNEL
  3393. LMN 2&4
  3394. NJN LBC2 IF NOT ATS CHANNEL
  3395. RJM LCA LOAD ATS CONVERSION MEMORIES
  3396. UJN LBC2 LOOP FOR ALL CHANNELS
  3397.  
  3398. LBC4 LDM ILMA
  3399. ZJN LBC5 IF FIRMWARE NOT IN CM BUFFER YET
  3400. LJM LBC10 OUTPUT FIRMWARE TO CONTROLLER
  3401.  
  3402. LBC5 AOM ILMA INDICATE FIRMWARE IN BUFFER
  3403. LDD MA
  3404. CWM LBCF,ON MOVE RECORD NAME TO DIRECT CELLS
  3405. SBN 1
  3406. CRD AB
  3407. RJM CLD SEARCH LIBRARY DIRECTORY
  3408. NJN LBC6 IF FIRMWARE RECORD FOUND
  3409. LDC =C* MTS FIRMWARE NOT FOUND.*
  3410. LJM ABT ABORT
  3411.  
  3412. LBC6 CRD AB READ TRACK AND SECTOR
  3413. LDN FNTP GET SYSTEM EQUIPMENT
  3414. CRD CM
  3415. LDD CM READ SYSTEM FST
  3416. SHN 14
  3417. ADD CM+1
  3418. ERRNZ SYFO CODE DEPENDS ON SYSTEM FILE FNT POSITION
  3419. ADN FSTG
  3420. CRD CM
  3421. LDD CM
  3422. LPN 77
  3423. STD T5
  3424. SETMS READSYS
  3425. LDD AB+3 SET FILE POINTERS
  3426. STD T6 TRACK
  3427. LDD AB+4 SECTOR
  3428. STD T7
  3429. LDN 0 INITIALIZE SECTOR COUNT
  3430. STD AB+1
  3431. LBC7 LDC BFMS READ SECTOR
  3432. RJM RNS
  3433. ZJN LBC8 IF END OF FIRMWARE
  3434. STD AB SAVE WORD COUNT
  3435. AOD AB+1 COUNT SECTOR
  3436. LDD RA WRITE SECTOR TO CM
  3437. SHN 6
  3438. ADC /MTX/UIBF
  3439. LBCA EQU *-1
  3440. CWM BFMS+2,AB
  3441. LDD AB ADVANCE BUFFER ADDRESS
  3442. RAM LBCA
  3443. SHN -14
  3444. RAM LBCA-1
  3445. LDD AB
  3446. SHN -6
  3447. NJN LBC7 IF NOT END OF FIRMWARE
  3448. LBC8 ENDMS RETURN CHANNEL
  3449. * LDN 0 BUILD MESSAGE WITH PART NUMBER
  3450. STD T1
  3451. LDD AB WORD COUNT OF LAST SECTOR
  3452. STD PL
  3453. SHN 2
  3454. RAD PL BYTE COUNT OF LAST SECTOR
  3455. LBC9 LDM BFMS-6,PL
  3456. SCN 17
  3457. SHN 11-7
  3458. RAM LBCH+17,T1
  3459. LDM BFMS-6,PL
  3460. LPN 17
  3461. RAM LBCH+17,T1
  3462. AOD PL
  3463. AOD T1
  3464. LMN 4
  3465. NJN LBC9 IF MORE MESSAGE TO BUILD
  3466.  
  3467. * ENTER HERE IF FIRMWARE RECORD ALREADY IN CM BUFFER.
  3468. *
  3469. * (AB) = WORD COUNT OF LAST SECTOR.
  3470. * (AB+1) = NUMBER OF SECTORS.
  3471.  
  3472. LBC10 LDI SC GET TAPE CHANNEL
  3473. RJM CMD
  3474. NJP LBC2 IF CHANNEL DOWN
  3475. SFM *+2,CH ENSURE CHANNEL ERROR FLAG IS CLEAR
  3476. LDI SC SET EQUIPMENT NUMBER
  3477. LPC 7000
  3478. STD EQ
  3479. ADC F0414 ISSUE DEADSTART
  3480. RJM ICF
  3481. NJN LBC12 IF DEAD START FUNCTION ACCEPTED
  3482. LBC11 LDC LBCG
  3483. LJM ADC ABORT FIRMWARE LOAD
  3484.  
  3485. LBC12 ACN CH
  3486. LDC /MTX/UIBF+20 SET CM BUFFER ADDRESS (SKIP 77 TABLE)
  3487. STM LBCB
  3488. LDC ADCI
  3489. STM LBCB-1
  3490. LDN 0 INITIALIZE SECTOR COUNT
  3491. STD T1
  3492. LDN 100-20 SET TO SKIP 77 TABLE
  3493. STD T3
  3494. LBC13 LDD RA READ SECTOR FROM CM
  3495. SHN 6
  3496. ADC *
  3497. LBCB EQU *-1
  3498. CRM BFMS,T3
  3499. LDD T3 CONVERT WORDS TO BYTES
  3500. SHN 2
  3501. ADD T3
  3502. OAM BFMS,CH OUTPUT FIRMWARE
  3503. FJM *,CH
  3504. NJN LBC11 IF CONTROLLER ILL
  3505. LDD T3 RESET CM BUFFER ADDRESS
  3506. RAM LBCB
  3507. SHN -14
  3508. RAM LBCB-1
  3509. LDD HN SET TO OUTPUT FULL SECTOR
  3510. STD T3
  3511. AOD T1 ADVANCE SECTOR COUNT
  3512. SBD AB+1
  3513. LBCC ZJN LBC14 IF END OF MTS FIRMWARE
  3514. * ZJN LBC15 (FCS, ISMT,CMTS, CTS)
  3515. ADN 1
  3516. NJN LBC13 IF NOT LAST SECTOR
  3517. LDD AB SET WORD COUNT OF LAST SECTOR
  3518. STD T3
  3519. UJN LBC13 OUTPUT LAST SECTOR
  3520.  
  3521. LBC14 DCN CH+40 START BUFFER CONTROLLER
  3522. RJM LCM LOAD CONVERSION MEMORIES
  3523. LDD CA DROP CHANNEL
  3524. DCHAN
  3525. LJM LBC2 LOOP FOR ALL CHANNELS
  3526.  
  3527. LBC15 DCN CH+40 START ADAPTOR
  3528. LDD EQ
  3529. ADN F0012 GET STATUS
  3530. RJM ICF ISSUE FUNCTION
  3531. ZJN LBC16 IF LOAD ERROR
  3532. ACN CH+40
  3533. LCN 0
  3534. LBC15.1 FJM LBC15.2,CH
  3535. SBN 1
  3536. NJN LBC15.1 IF TIMEOUT NOT EXPIRED
  3537. UJN LBC16 ABORT FIRMWARE LOAD
  3538.  
  3539. LBC15.2 IAN CH+40
  3540. SFM LBC16,CH IF ERROR
  3541. DCN CH+40
  3542. SHN 21-13
  3543. MJN LBC16 IF ALERT SET
  3544. LDD CA DROP CHANNEL
  3545. DCHAN
  3546. RJM LCA LOAD CONVERSION TABLES
  3547. LBCE EQU *-2
  3548. * UJN *+2 CTS
  3549. LJM LBC18 LOOP FOR ALL CHANNELS
  3550. LBCD EQU *-1
  3551. * LJM LBC22 LOOP FOR ALL CHANNELS (CMTS)
  3552. * LJM LBC26 LOOP FOR ALL CHANNELS (ISMT)
  3553. * LJM LBC30 LOOP FOR ALL CHANNELS (CTS)
  3554.  
  3555. LBC16 LJM LBC11 ABORT FIRMWARE LOAD
  3556.  
  3557.  
  3558. LBCF VFD 42/0LFIRM66X,18/0
  3559.  
  3560. LBCG DATA C* C00 MTS FIRMWARE LOAD ERROR.*
  3561.  
  3562. LBCH DATA C* MTS FIRMWARE LOAD, PART NO.- 00000000.*
  3563. *LBCH DATA C* CTS FIRMWARE LOAD, MB468-D0X.* (CTS)
  3564.  
  3565. LBCI VFD 42/0LTAPEFSC,18/0
  3566. LBCJ VFD 30/0LCW63X,30/0
  3567. LBCK VFD 30/0LMB467,30/0
  3568. LCA SPACE 4,15
  3569. ** LCA - LOAD CONVERSION MEMORY TO ATS CONTROLLER.
  3570. *
  3571. * ENTRY ((SC)) = E0CC WHERE E = EQUIPMENT AND CC = CHANNEL.
  3572. *
  3573. * EXIT CONVERSION TABLES LOADED.
  3574. *
  3575. * ERROR EXIT TO *ADC* IF LOAD ERRORS.
  3576. *
  3577. * USES T1, EQ.
  3578. *
  3579. * CALLS CCT, CMD, ICF.
  3580. *
  3581. * MACROS DCHAN.
  3582.  
  3583.  
  3584. LCA10 LDD CA RETURN TAPE CHANNEL
  3585. DCHAN
  3586.  
  3587. LCA SUBR ENTRY/EXIT
  3588. LDI SC SET EQUIPMENT NUMBER
  3589. LPC 7000
  3590. STD EQ
  3591. LDI SC RESERVE CHANNEL
  3592. RJM CMD
  3593. NJN LCAX IF CHANNEL DOWN
  3594. LDN 0
  3595. STD T1
  3596. LCA1 AOD T1 INCREMENT TABLE NUMBER
  3597. LMN 4
  3598. ZJN LCA10 IF ALL TABLES LOADED
  3599. LDD T1 SET TABLE NUMBER IN FORMAT PARAMETER
  3600. SHN 10
  3601. LMM LCAD
  3602. STM LCAC
  3603. LDD T1
  3604. LMN 3
  3605. ZJN LCA2 IF BCD LOAD
  3606. LDN 40 SET A/D MODE 1 IN FORMAT PARAMETER
  3607. RAM LCAC
  3608. LCA2 LDD EQ ISSUE FORMAT UNIT FUNCTION
  3609. ADN 4
  3610. RJM ICF ISSUE FUNCTION
  3611. ZJN LCA4 IF ERRORS
  3612. ACN CH OUTPUT PARAMETERS
  3613. LDN 2
  3614. OAM LCAC,CH
  3615. FJM *,CH
  3616. DCN CH+40
  3617. NJN LCA6 IF NOT ALL PARAMETERS TAKEN
  3618. LDM TMTC,T1 CONVERT MTS TABLE TO ATS READ TABLE
  3619. RJM CCT CONVERT CONVERSION TABLE
  3620. LDC BFMS SET BUFFER ADDRESS
  3621. STM LCAA
  3622. LDN 57 LOAD READ CONVERSION TABLE
  3623. LCA3 ADD EQ
  3624. RJM ICF ISSUE FUNCTION
  3625. LCA4 ZJN LCA7 IF LOAD ERRORS
  3626. ACN CH
  3627. LDD T1
  3628. LMN 3
  3629. ZJN LCA5 IF BCD LOAD
  3630. LDC 171D-128D
  3631. LCA5 ADC 128D
  3632. OAM *,CH OUTPUT CONVERSION TABLE
  3633. LCAA EQU *-1
  3634. FJM *,CH
  3635. DCN CH+40
  3636. LCA6 NJN LCA9 IF NOT ALL DATA TAKEN
  3637. LDD EQ GET STATUS
  3638. ADN 12
  3639. RJM ICF ISSUE FUNCTION
  3640. LCA7 ZJN LCA9 IF LOAD ERRORS
  3641. ACN CH
  3642. IAN CH+40
  3643. DCN CH+40
  3644. SHN 21-13
  3645. MJN LCA9 IF ALERT SET
  3646. LDM LCAA
  3647. LMC BFMS
  3648. NJN LCA8 IF WRITE TABLE LOADED
  3649. LDM LCAE-1,T1 SET TO LOAD WRITE TABLE
  3650. STM LCAA
  3651. LDC 257 ISSUE LOAD WRITE RAM FUNCTION
  3652. LJM LCA3 ISSUE FUNCTION
  3653.  
  3654. LCA8 LJM LCA1 INCREMENT TO NEXT TABLE
  3655.  
  3656. LCA9 LDC 2R A CHANGE MTS TO ATS IN MESSAGE
  3657. STM LCMC+4
  3658. LDD T1 SET TABLE IN ERROR
  3659. RAM LCMC+3
  3660. LDC LCMC SET MESSAGE ADDRESS
  3661. LJM ADC ABORT ATS CONVERSION TABLE LOAD
  3662.  
  3663.  
  3664. LCAC CON 0,0 UNIT FORMAT PARAMETERS
  3665. LCAD VFD 1/1,3/0,1/1,2/0,5/0 WORD 1 SKELETON
  3666.  
  3667. * ATS WRITE TABLE ADDRESSES.
  3668.  
  3669. LCAE CON ATANS TABLE 1 - ANSII
  3670. CON ATEBC TABLE 2 - EBCDIC
  3671. CON ATBCD TABLE 3 - EXTERNAL BCD
  3672. LCM SPACE 4,15
  3673. ** LCM - LOAD MTS CONVERSION MEMORIES.
  3674. *
  3675. * ENTRY CHANNEL RESERVED.
  3676. * (EQ) = EQUIPMENT NUMBER.
  3677. *
  3678. * EXIT CONVERSION TABLES LOADED.
  3679. *
  3680. * ERROR EXIT TO *ADC* IF LOAD ERRORS.
  3681. *
  3682. * USES T1.
  3683. *
  3684. * CALLS ICF.
  3685.  
  3686.  
  3687. LCM SUBR ENTRY/EXIT
  3688. LDN 0
  3689. STD T1
  3690. LCM1 AOD T1
  3691. LMN 4
  3692. ZJN LCMX IF END OF MTS CONVERSION TABLES
  3693. LDM TMTC,T1 GET TABLE ADDRESS
  3694. STM LCMA
  3695. LDD T1
  3696. SHN 6
  3697. ADN 31
  3698. ADD EQ ADD EQUIPMENT NUMBER
  3699. RJM ICF
  3700. ZJN LCM3 IF LOAD ERRORS
  3701. ACN CH
  3702. LDD T1
  3703. LMN 3
  3704. ZJN LCM2 IF BCD LOAD
  3705. LDC 256D-64D
  3706. LCM2 ADC 64D
  3707. OAM *,CH
  3708. LCMA EQU *-1
  3709. FJM *,CH
  3710. DCN CH+40
  3711. NJN LCM3 IF DATA NOT TAKEN
  3712. LDC 200000 DELAY FOR MTS TABLE SORT
  3713. * LDC 400000 (2X PPU SPEED)
  3714. * LCN 0 (4X PPU SPEED)
  3715. LCMB EQU *-2
  3716. SBN 1
  3717. NJN *-1
  3718. LDN 12
  3719. ADD EQ ADD EQUIPMENT NUMBER
  3720. RJM ICF
  3721. ZJN LCM3 IF LOAD ERRORS
  3722. ACN CH
  3723. IAN CH+40
  3724. DCN CH+40
  3725. SHN 21-13
  3726. MJN LCM3 IF LOAD ERRORS
  3727. LJM LCM1 LOOP FOR ALL MTS CONVERSION TABLES
  3728.  
  3729. LCM3 LDD T1 SET TABLE IN ERROR
  3730. RAM LCMC+3
  3731. LDC LCMC
  3732. LJM ADC ABORT MTS LOAD
  3733.  
  3734.  
  3735. LCMC DATA C* C00, T0 MTS CONVERSION TABLE LOAD ERRORS.*
  3736.  
  3737.  
  3738. * TMTC - ADDRESS TABLE FOR MTS CONVERSION TABLES.
  3739.  
  3740.  
  3741. TMTC BSS 1
  3742. LOC 1
  3743. CON MTANS TABLE 1 - ANSII
  3744. CON MTEBC TABLE 2 - EBCDIC
  3745. CON MTBCD TABLE 3 - EXTERNAL BCD
  3746. LOC *O
  3747. BUF SPACE 4,10
  3748. CTAB CHTB CHANNEL TABLE
  3749. SPACE 4,10
  3750. USE BUFFER
  3751.  
  3752. ERRNG BFMS-* OVERFLOW TEST
  3753. ERRNG ERLA-* CODE OVERFLOWS *0CT*
  3754. ERRPL ERLA+5+ZCTL-ERLB *0CT* OVERFLOWS INTO BUFFER
  3755. PRS TITLE PRESET OVERLAY.
  3756. PRS SPACE 4,10
  3757. ** PRS - INITIALIZE TAPE EXECUTIVE PRESET.
  3758. *
  3759. * EXIT TO *ITE* IF *MAGNET* INITIALIZATION.
  3760. * TO *REC* IF LEVEL 3 RECOVERY.
  3761. *
  3762. * CALLS LFT, SCS.
  3763.  
  3764.  
  3765. PRS BSS 0
  3766. RJM LFT LOAD FUNCTION TABLE
  3767. LDD IR+3
  3768. SHN 6
  3769. ADD RA
  3770. SHN 6
  3771. ADD IR+4 CHECK FOR LEVEL 3 RECOVERY
  3772. CRD CM
  3773. LDD CM+4
  3774. LMN 1
  3775. ZJN PRS1 IF *MAGNET* INITIALIZATION
  3776. LJM REC RECOVER
  3777.  
  3778. PRS1 RJM SCS SET CHARACTER SET TABLES
  3779. LJM ITE INITIALIZE TAPE EQUIPMENT
  3780. TITLE PRESET SUBROUTINES.
  3781. CCH SPACE 4,10
  3782. ** CCH - CHECK CHANNEL.
  3783. *
  3784. * ENTRY (A) = EST CHANNEL BYTE.
  3785. * (CM - CM+4) = EST ENTRY *EQDE* WORD.
  3786. *
  3787. * EXIT CHANNEL ENTERED INTO TABLE IF NOT ALREADY THERE.
  3788. *
  3789. * ERROR EXIT TO *ABT* IF ERROR.
  3790. *
  3791. * USES T2, T3, T4.
  3792.  
  3793.  
  3794. CCH6 LDD CM CHECK FOR MTS/ATS CHANNEL
  3795. LPN 14
  3796. NJN CCH7 IF ISMT/CMTS CHANNEL
  3797. LDD CM
  3798. SHN -3
  3799. LPN 70
  3800. CCH7 SHN -3
  3801. SHN 5
  3802. STD T2
  3803. LDM CHLI,T3
  3804. LPC 437
  3805. LMD T2
  3806. STM CHLI,T3
  3807. LDD CM+3
  3808. SHN 21-10
  3809. MJN CCH8 IF NOT CTS
  3810. LDC 340
  3811. RAM CHLI,T3 SET CTS CONTROLLER TYPE
  3812. CCH8 LDD CM+4 SET CONTROLLER NUMBER
  3813. LPC 7000
  3814. RAM CHLI,T3
  3815.  
  3816. CCH SUBR ENTRY/EXIT
  3817. LPN 37 SET CHANNEL NUMBER
  3818. STD T4
  3819. LCN 0 INITIALIZE CHANNEL COUNT
  3820. STD T3
  3821. CCH1 AOD T3 INCREMENT CHANNEL COUNT
  3822. LMN /MTX/MCHAN
  3823. NJN CCH2 IF NOT TOO MANY TAPE CHANNELS
  3824. LDC =C* MORE THAN 8 TAPE CHANNELS.*
  3825. LJM ABT ABORT
  3826.  
  3827. CCH2 LDD T3
  3828. LMM CHCN
  3829. ZJP CCH4 IF END OF CHANNEL LIST
  3830. LDM CHLI,T3
  3831. LMD T4
  3832. LPN 37
  3833. NJN CCH1 IF NO CHANNEL MATCH
  3834.  
  3835. * COMPARE CONTROLLER TYPES.
  3836.  
  3837. LDD CM+3
  3838. SHN 21-10
  3839. MJN CCH2.0 IF NOT CTS
  3840. LDM CHLI,T3
  3841. SHN -5
  3842. LPN 7
  3843. LMN 7
  3844. UJN CCH3.1 COMPARE CONTROLLER TYPES
  3845.  
  3846. * THE FOLLOWING SIX LINES CLEAR THE ATS BIT IN 1MT-S COPY OF
  3847. * THE EST ENTRY IF THE EST CONTROLLER TYPE IS CMTS. THIS
  3848. * ALLOWS THE COMPARISON OF THE *CHLI* CONTROLLER TYPE AND THE
  3849. * EST CONTROLLER TYPE TO WORK CORRECTLY FOR CMTS.
  3850.  
  3851. CCH2.0 LDD CM
  3852. SHN 21-2
  3853. PJN CCH2.1 IF NOT CMTS
  3854. SCN 20 CLEAR ATS BIT
  3855. SHN 3
  3856. STD CM
  3857. CCH2.1 LDM CHLI,T3
  3858. SHN 21-7
  3859. PJN CCH3 IF MTS STATUS NOT SET IN TABLE
  3860. LPC 577777 CLEAR BLOCK - ID DISABLE BIT
  3861. CCH3 SHN 11
  3862. LMD CM
  3863. LPC 700
  3864. CCH3.1 NJN CCH5 IF CONTROLLER TYPE MISMATCH
  3865. LDM CHLI,T3
  3866. LMD CM+4
  3867. SHN -11
  3868. NJN CCH5 IF EQUIPMENT MISMATCH
  3869. LDM CHLI,T3
  3870. LJM CCHX EXIT
  3871.  
  3872. CCH4 LDD T4 SAVE CHANNEL IN TABLE
  3873. STM CHLI,T3
  3874. AOM CHCN INCREMENT CHANNEL COUNT
  3875. LJM CCH6 SET CONTROLLER TYPE
  3876.  
  3877. CCH5 LDC =C* CONTROLLER TYPE/EQUIPMENT MISMATCH ON CHANNEL.*
  3878. LJM ABT ABORT
  3879. EST SPACE 4,10
  3880. ** EST - EST PRE-PROCESSOR.
  3881. *
  3882. * EXIT *CHLI* TABLE BUILT.
  3883. * TO *ABT* IF NO TAPE EQUIPMENT FOUND.
  3884. *
  3885. * USES SC, T5, CM - CM+4.
  3886. *
  3887. * CALLS CCH, CTE.
  3888. *
  3889. * MACROS SFA.
  3890.  
  3891.  
  3892. EST SUBR ENTRY/EXIT
  3893. LDK ESTP READ EST POINTER
  3894. CRD CM
  3895. LDD CM+2 SET LAST EST ORDINAL + 1
  3896. STD SC
  3897.  
  3898. * FIND MAXIMUM NUMBER OF TAPE CHANNELS.
  3899.  
  3900. LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
  3901. STD T5
  3902. EST1 AOD T5 ADVANCE EST ORDINAL
  3903. LMD SC
  3904. NJN EST2 IF NOT END OF EST
  3905. LDM CHCN
  3906. NJN ESTX IF TAPES FOUND
  3907. LDC =C* NO TAPE EQUIPMENT.*
  3908. LJM ABT ABORT
  3909.  
  3910. EST2 SFA EST,T5 READ EST ENTRY
  3911. ADK EQDE
  3912. CRD CM
  3913. LDD CM+3
  3914. RJM CTE CHECK FOR TAPE EQUIPMENT
  3915. MJN EST1 IF NOT TAPE EQUIPMENT
  3916.  
  3917. * COUNT NUMBER OF CHANNELS.
  3918.  
  3919. LDD CM+1 CHECK FIRST CHANNEL
  3920. RJM CCH CHECK CHANNEL
  3921. LDD CM+2
  3922. ZJN EST1 IF NO SECONDARY CHANNEL
  3923. RJM CCH CHECK CHANNEL
  3924. UJN EST1 CHECK NEXT EQUIPMENT
  3925.  
  3926.  
  3927. ERRNG BFMS-* OVERFLOW TEST
  3928. LFT SPACE 4,10
  3929. ** LFT - LOAD 1MT FUNCTION TABLE INTO MAGNET FL.
  3930. *
  3931. * USES T1.
  3932.  
  3933.  
  3934. LFT SUBR ENTRY/EXIT
  3935. LDN TFUNC SET FUNCTION TABLE LENGTH
  3936. STD T1
  3937. LDD RA
  3938. SHN 6
  3939. ADN /MTX/TFUN WRITE FUNCTION TABLE
  3940. CWM TFUN,T1
  3941. UJN LFTX RETURN
  3942. REC SPACE 4,10
  3943. ** REC - RECOVER MAGNET.
  3944. *
  3945. * EXIT TO *ITE1* TO SET COMPLETION RESPONSE.
  3946. *
  3947. * MACROS NFA.
  3948.  
  3949.  
  3950. REC LDD CP CHECK IDLEDOWN BIT IN CPA
  3951. ADN SNSW
  3952. CRD CM
  3953. LDD CM+3
  3954. LPN 4
  3955. ZJN REC1 IF IDLEDOWN NOT SET
  3956. LDD RA RESET IDLEDOWN IN RA+0
  3957. SHN 6
  3958. CRD CM
  3959. LDD CM+3
  3960. SCN 2
  3961. LMN 2
  3962. STD CM+3
  3963. LDD RA REWRITE RA+0
  3964. SHN 6
  3965. CWD CM
  3966. REC1 LDD CP RESET COMMANDS FOR RECOVERY
  3967. ADN CSPW
  3968. CRD CM
  3969. LDC CSBN RESET TO BEGINNING OF BUFFER
  3970. STD CM+3
  3971. SBN TCML+1 SET LIMIT POINTER
  3972. STD CM+4
  3973. LDN TCML
  3974. STD T1
  3975. NFA CM+3,R
  3976. CWM TCCB,T1 WRITE RECOVERY COMMANDS
  3977. LDD CP UPDATE COMMAND POINTER
  3978. ADN CSPW
  3979. CWD CM
  3980. LJM ITE1 SEND RESPONSE TO *MAGNET*
  3981.  
  3982.  
  3983. * TABLE OF COMMANDS.
  3984.  
  3985. TCCB BSS 0
  3986. VFD 60/8LMAGNET1.
  3987. VFD 60/6L$EXIT.
  3988. VFD 60/8LMAGNET1.
  3989. VFD 60/8L$REVERT.
  3990. VFD 60/6L$EXIT.
  3991. VFD 60/10H$REVERT,AB
  3992. VFD 60/4LORT.
  3993. TCCBL EQU *-TCCB
  3994. TCML EQU TCCBL/5 TABLE LENGTH IN CM WORDS
  3995. SCS SPACE 4,20
  3996. ** SCS - SET 63 CHARACTER SET OPTION IF SELECTED.
  3997. *
  3998. * ENTRY (IPRL, 24) = 0 IF 63 CHARACTER SET.
  3999. * = 1 IF 64 CHARACTER SET.
  4000. *
  4001. * *CSET* TABLE FORMAT -
  4002. * CON LOC,CONT
  4003. * LOC = LOCATION OF CHANGE.
  4004. * CONT = CONTENTS OF CHANGE.
  4005. * 0 IN LOC FIELD = END OF TABLE.
  4006. *
  4007. * *CSETP* TABLE FORMAT - (USED FOR ATS 9 TRACK TABLES
  4008. * WHERE 3 FRAMES ARE PACKED INTO 2 PP BYTES)
  4009. * CON LOC,CONT1,CONT2
  4010. * LOC = LOCATION OF CHANGE.
  4011. * CONT1 = CONTENTS OF *LOC*
  4012. * CONT2 = CONTENTS OF *LOC*+1
  4013. * 0 IN LOC FIELD = END OF TABLE.
  4014. *
  4015. * EXIT CHARACTER TABLES MODIFIED IF 63 CHARACTER SET.
  4016.  
  4017.  
  4018. SCS SUBR ENTRY/EXIT
  4019. LDN IPRL CHECK CONVERSION MODE
  4020. CRD CM
  4021. LDD CM+2
  4022. LPN 1
  4023. NJN SCSX IF 64 CHARACTER SET
  4024. LDC CSET MODIFY TABLES
  4025. SCS1 STD T1
  4026. LDI T1
  4027. SCS2 STD T2
  4028. LDM 1,T1
  4029. STI T2
  4030. SCSA UJN SCS3 FOR C63 TABLE
  4031. * AOD T1 (C63P TABLE)
  4032. AOD T2
  4033. LDM 1,T1
  4034. STI T2
  4035. SCS3 LDN 2
  4036. RAD T1
  4037. LDI T1
  4038. NJN SCS2 IF MORE INSTRUCTIONS TO MODIFY
  4039. SCSB LDN 0
  4040. NJN SCSX IF BOTH TABLES PROCESSED
  4041. AOM SCSB SET EXIT
  4042. LDC AODI+T1 MODIFY INSTRUCTION
  4043. STM SCSA
  4044. LDC CSETP PROCESS C63P TABLE
  4045. UJN SCS1 MODIFY INSTRUCTIONS FOR THIS TABLE
  4046.  
  4047.  
  4048. * CONVERSION INFORMATION FOR 64 TO 63 CHARACTER SET.
  4049.  
  4050. CSET BSS 0
  4051. C63 HERE
  4052. CON 0 END OF TABLE
  4053.  
  4054. CSETP BSS 0
  4055. C63P HERE
  4056. CON 0 END OF TABLE
  4057. FUN SPACE 4,15
  4058. ** FUN - DEFINE FUNCTION PROCESSOR.
  4059. *
  4060. *
  4061. *TNAM FUN TYPE,NAME,SNAME,RNB,UCP
  4062. * ENTRY *TNAM* = FWA OF TABLE IS SET TO TNAM.
  4063. * *TYPE* = FUNCTION NUMBER.
  4064. * *NAME* = NAME OF FUNCTION PROCESSOR.
  4065. * *SNAME* = NAME OF ADDITIONAL OVERLAY TO BE LOADED.
  4066. * *RNB* = FUNCTION REQUIRES READY AND NOT BUSY.
  4067. * *UCP* = FUNCTION TO BE DONE AT USERS CONTROL POINT.
  4068.  
  4069.  
  4070. MACRO FUN,A,B,C,D,E,F
  4071. .F1 IFC NE,*A**
  4072. A BSS 0
  4073. .2 SET A
  4074. .F1 ELSE
  4075. ORG .2+5*B-5
  4076. .F2 IFC NE,*C**
  4077. LOC B
  4078. .1 SET 0
  4079. IFC NE,*E**,1
  4080. .1 SET .1+40
  4081. IFC NE,*F**,1
  4082. .1 SET .1+20
  4083. .F3 IFC NE,*D**
  4084. CON D/10000*100+.1+C/10000-D/10000,C-C/10000*10000
  4085. .F3 ELSE
  4086. CON C/10000*100+.1,C-C/10000*10000
  4087. .F3 ENDIF
  4088. .F2 ENDIF
  4089. BSS 0
  4090. .F1 ENDIF
  4091. ENDM
  4092. TFUN SPACE 4,15
  4093. ** TFUN - TABLE OF FUNCTION CODE PROCESSORS.
  4094. * ENTRY = 2 WORDS.
  4095. *
  4096. *T, 6/ OV,1/B,1/U,4/ AO,12/ ADDR
  4097. * OV OVERLAY NAME THIRD CHARACTER.
  4098. * B FUNCTION REQUIRES NOT BUSY. (SEE NOTE)
  4099. * U FUNCTION TO BE DONE AT USER,S CONTROL POINT.
  4100. * AO ADDITIONAL OVERLAY REQUIRED IF NONZERO. OV PLUS
  4101. * AO IS THE SECOND OVERLAY NAME THIRD CHARACTER.
  4102. * ADDR ADDRESS OF FUNCTION PROCESSOR. *CPP* JUMPS TO
  4103. * THIS ADDRESS.
  4104. *
  4105. * NOTE THIS FLAG ALSO INDICATES THAT THE FUNCTION REQUIRES
  4106. * A FORMAT UNIT FUNCTION TO BE ISSUED FOR MTS AND ATS
  4107. * UNITS. SEE ROUTINE *CCD* IN CONTROL POINT PRESET
  4108. * OVERLAY.
  4109.  
  4110.  
  4111. BSS 0
  4112. TFUN FUN
  4113. FUN /MTX/SED,SED SET EQUIPMENT DEFINITION
  4114. FUN /MTX/FNH,PFN PROCESS FUNCTION
  4115. FUN /MTX/SKP,SKP,RDF,RNB SKIP
  4116. FUN /MTX/OPF,OPF,,,UCP OPEN
  4117. FUN /MTX/RDF,RDF,,RNB,UCP READ
  4118. FUN /MTX/RLA,RLA,RDF,RNB READ LABEL(S)
  4119. FUN /MTX/WTF,WTF,,RNB,UCP WRITE
  4120. FUN /MTX/WLA,WLA,WTF,RNB WRITE LABEL(S)
  4121. FUN /MTX/MDFN
  4122. TFUNL EQU *-TFUN
  4123. TFUNC EQU TFUNL/5 CM WORD LENGTH
  4124. ERRNZ TFUNC-/MTX/MDFN+1 *1MT*/*COMSMTX* OUT OF SYNC
  4125.  
  4126. OVERFLOW PPFW,EPFW
  4127. OVERLAY (FUNCTION REJECT PROCESSOR.),(ERLA+5),P
  4128. FRP SPACE 4,10
  4129. ** FRP - FUNCTION REJECT PROCESSOR.
  4130. *
  4131. * CALLS CUI, DME, ERR, MCH, PCR, STC, STW.
  4132. *
  4133. * MACROS CHTE.
  4134. *
  4135. * THE FOLLOWING ARE THE POSSIBLE ACTIONS TAKEN FOR
  4136. * A FUNCTION REJECT ON AN MTS TAPE CONTROLLER -
  4137. *
  4138. * 1) IF CHANNEL ACTIVE EXIT WITH CHANNEL MALFUNCTION.
  4139. *
  4140. * 2) ESTABLISH MTS BUFFER CONTROLLER IS RUNNING.
  4141. *
  4142. * 3) IF NOT RUNNING TRY TO RESTART OPERATION BY AUTO-LOAD.
  4143. * THIS IS ATTEMPED TWICE TO COVER THE CASE WHERE THE
  4144. * COUPLER LOCKS UP WITH DATA IN ITS INTERNAL BUFFER
  4145. * AND TWO AUTO-LOADS ARE REQUIRED TO FREE THE COUPLER.
  4146. *
  4147. * 4) IF NOT SUCCESSFUL EXIT WITH CHANNEL MALFUNCTION.
  4148. *
  4149. * 5) SEE PRECEDING STEP 2.
  4150. *
  4151. * 6) IF RELEASE FUNCTION EXIT.
  4152. *
  4153. * 7) IF STOP TAPE MOTION FUNCTION, RECONNECT UNIT AND EXIT.
  4154. *
  4155. * 8) GET GENERAL AND DETAILED STATUS.
  4156. *
  4157. * 9) IF ALERT NOT SET, EXIT WITH CHANNEL MALFUNCTION.
  4158. *
  4159. * 10) IF ERROR CODE NOT SET IN DETAILED STATUS, EXIT
  4160. * WITH CHANNEL MALFUNCTION.
  4161. *
  4162. * 11) IF ERROR CODE 4 SET, EXIT WITH READY DROP.
  4163. *
  4164. * 12) IF ERROR CODE 54B OR 55B SET, EXIT
  4165. * WITH CHANNEL MALFUNCTION.
  4166. *
  4167. * 13) IF ANY OTHER ERROR CODE, EXIT WITH FUNCTION REJECT.
  4168. *
  4169. * THE FOLLOWING ARE THE POSSIBLE ACTIONS TAKEN FOR
  4170. * A FUNCTION REJECT ON AN ATS CONTROLLER.
  4171. *
  4172. * 1) IF CHANNEL ACTIVE, EXIT WITH CHANNEL MALFUNCTION.
  4173. *
  4174. * 2) IF NOT FIRST ERROR, EXIT WITH CHANNEL MALFUNCTION.
  4175. *
  4176. * 3) GET GENERAL AND DETAILED STATUS.
  4177. *
  4178. * 4) IF ALERT NOT SET, EXIT WITH CHANNEL MALFUNCTION.
  4179. *
  4180. * 5) IF CHANNEL OR TCU PARITY ERROR, EXIT WITH
  4181. * CHANNEL MALFUNCTION.
  4182. *
  4183. * 6) IF ERROR CODE 4 SET IN DETAILED STATUS, EXIT
  4184. * WITH READY DROP.
  4185. *
  4186. * 7) EXIT WITH FUNCTION REJECT.
  4187.  
  4188.  
  4189. FRP SUBR ENTRY/EXIT
  4190. LDC FRPD MODIFY CHANNELS
  4191. RJM MCH
  4192. LDD EC
  4193. LMN /MTX/CRJ
  4194. ZJP PCR IF CONNECT REJECT
  4195. LDM //STCB SAVE CHANNEL STATUS
  4196. STM //.OVLR+2
  4197. LDC LDNI+0 SET TO FORCE DROP OUT
  4198. STM //PNRC
  4199. LDM //FCND SAVE FUNCTION REJECTED
  4200. STM //.OVLR
  4201. LDM //FCN SAVE ADDRESS OF CALLER
  4202. STM //.OVLR+1
  4203. LDC //ERR INSURE CORRECT EXIT SET IN *STW*
  4204. STM //STWC
  4205. LDC RJMI
  4206. STM //STWC-1
  4207. IJM FRP4,CH IF CHANNEL OK
  4208. FRP3 LJM FRP12 GIVE FATAL ERROR
  4209.  
  4210. FRP4 LDD HP
  4211. LPC 540
  4212. NJN FRP5 IF MTS/FSC/CMTS/ISMT ADAPTOR
  4213. LDM FRPB
  4214. STM FRPA
  4215. LJM FRP10 PROCESS ATS CONTROLLER
  4216.  
  4217. FRP5 LDN 0 SET ERROR ENCOUNTERED FLAG
  4218. STM //FCNC
  4219. FNC 0,CH VERIFY B.C. RUNNING
  4220. RJM STC
  4221. ZJN FRP8 IF B.C. RUNNING
  4222. LDN 2 NUMBER OF ATTEMPTS TO RESTART B.C.
  4223. STD T1
  4224. LDN 0 CLEAR CONNECTED FLAG
  4225. STM //RELA
  4226. FRP6 SOD T1
  4227. FRP7 MJN FRP3 IF CANNOT RESTART B.C.
  4228. FNC 414,CH RESTART B.C.
  4229. RJM STC STATUS CHANNEL
  4230. NJN FRP6 IF CHANNEL ILL
  4231. ACN CH
  4232. OAN CH+40
  4233. DCN CH+40
  4234. STM //.OVLR+3 INIDICATE B.C. RESTARTED
  4235. FRP8 LDD T6
  4236. SHN 21-13
  4237. MJN FRP7 IF OVERLAY NOT CM RESIDENT
  4238. LDM //FCND CHECK FUNCTION
  4239. LMN 1
  4240. ZJN FRP9 IF RELEASE FUNCTION
  4241. LMN 11&1
  4242. NJN FRP10 IF NOT STOP TAPE MOTION
  4243. LDM //RELA
  4244. NJN FRP9 IF UNIT CONNECTED
  4245. RJM CUI REFORMAT UNIT
  4246. FRP9 LDM //.OVLR+1 RESET RETURN ADDRESS
  4247. STM //FCN
  4248. LDN 0
  4249. LJM //FCNX RETURN
  4250.  
  4251. FRP10 LDM FCNC
  4252. ZJN FRP12 IF ERROR ALREADY ENCOUNTERED
  4253. LDN 0
  4254. STM //FCNC SET ERROR ENCOUNTERED FLAG
  4255. RJM STW GET STATUS
  4256. SHN 21-13
  4257. PJN FRP12 IF NO ALERT
  4258. LDM MTDS
  4259. FRPA LPN 77
  4260. * UJN FRP14 (ATS CONTROLLER)
  4261. ZJN FRP12 IF NO ERROR CODE
  4262. LMN 4
  4263. ZJN FRP11 IF READY DROP
  4264. LMN 54-4
  4265. ZJN FRP12 IF OUTPUT PARITY ON PARAMETER ISSUE (54B)
  4266. LMN 55-54
  4267. ZJN FRP12 IF OUTPUT PARITY ON FUNCTION ISSUE (55B)
  4268. LDN /MTX/FRJ&/MTX/RDR
  4269. FRP11 LMN /MTX/RDR
  4270. UJN FRP13 SET ERROR CODE
  4271.  
  4272. FRP12 LDN /MTX/CMF
  4273. FRP13 STD EC
  4274. LDM //.OVLR+2 RESTORE CHANNEL STATUS
  4275. STM STCB
  4276. LDD DS
  4277. STM //STER
  4278. LDM FRPC PREVENT FURTHER FUNCTION REJECT
  4279. STM //MCCA
  4280. LDD EC
  4281. RJM ERR GIVE FATAL ERROR
  4282.  
  4283. FRP14 LPC 600
  4284. NJN FRP12 IF CHANNEL OR TCU PARITY ERROR
  4285. LDM MTDS
  4286. LPC 177
  4287. LMN 4
  4288. ZJN FRP11 IF NOT READY
  4289. LDN /MTX/FRJ FUNCTION REJECT
  4290. UJN FRP13 EXIT
  4291.  
  4292.  
  4293. FRPB BSS 0
  4294. LOC FRPA
  4295. UJN FRP14 CHECK STATUS
  4296. LOC *O
  4297.  
  4298. FRPC BSS 0
  4299. LOC //MCCA
  4300. UJN //MCCX RETURN
  4301. LOC *O
  4302. PCR SPACE 4,15
  4303. ** PCR - PROCESS CONNECT REJECT.
  4304. *
  4305. * ENTRY (EC) = ERROR CODE.
  4306. *
  4307. * EXIT TO ERROR MESSAGE OVERLAY IF NOT INITIAL CONNECT OR IF
  4308. * UNIT DOWNED.
  4309. *
  4310. * USES CM - CM+4, CN - CN+4.
  4311. *
  4312. * CALLS ERR, UAD.
  4313. *
  4314. * MACROS MONITOR.
  4315.  
  4316.  
  4317. PCR BSS 0 ENTRY
  4318. LDM //STW CHECK IF INITIAL CONNECT
  4319. LMC //.ECUI
  4320. NJN PCR1 IF NOT INITIAL CONNECT
  4321. RJM UAD
  4322. ADK /MTX/UXRQ
  4323. CRD CM
  4324. ADK /MTX/UVRI-/MTX/UXRQ
  4325. CRD CN
  4326. LDD CN
  4327. NJN PCR2 IF JOB ASSIGNED
  4328.  
  4329. * DOWN UNIT.
  4330.  
  4331. RJM UAD
  4332. ADK /MTX/UST2 SET UP DIRECT CELLS FOR MESSAGE
  4333. CRM EI,TR
  4334. LDD EO SET EST ORDINAL
  4335. STD CM+1
  4336. LDN /CPS/DWES SET *DOWN* STATUS
  4337. STD CM+2
  4338. MONITOR SEQM SET EQUIPMENT PARAMETER
  4339. PCR1 LDD DS SET STATUS FOR MESSAGE
  4340. STM //STER
  4341. LDN /MTX/CRJ SET CONNECT REJECT
  4342. RJM ERR EXIT TO ISSUE MESSAGE
  4343.  
  4344. PCR2 LDD CM
  4345. NJN PCR3 IF REQUEST IN PROGRESS
  4346. LDD CM+1
  4347. LPN 77
  4348. NJN PCR4 IF REQUEST PENDING
  4349. PCR3 LJM //PNR PROCESS NEXT UNIT
  4350.  
  4351. * INTERLOCK REQUEST.
  4352.  
  4353. PCR4 LDM UADA SET UDT ADDRESS
  4354. STD CM+1
  4355. LDN 0 IGNORE BUSY STATUS
  4356. STD CM+2
  4357. MONITOR TDRM SET REQUEST IN PROGRESS
  4358. LDD CM+4
  4359. ZJN PCR3 IF REQUEST NOT INTERLOCKED
  4360. RJM UAD GET UDT INFORMATION
  4361. ADK /MTX/UXRQ
  4362. CRD RS
  4363. ADK /MTX/UST2-/MTX/UXRQ
  4364. CRM EI,TR
  4365. ADK /MTX/UST5-/MTX/UST4-1
  4366. CRM DNCV,ON
  4367. ADK /MTX/UDS4-/MTX/UST5-1
  4368. CRM MTSF,TR
  4369. ADK /MTX/UERC-/MTX/UDS6-1
  4370. CRM ECNT,ON
  4371. LDN /MTX/CRJ SET CONNECT REJECT
  4372. LJM RET3 RETURN ERROR
  4373.  
  4374.  
  4375. FRPD CHTB CHANNEL TABLE
  4376. SPACE 4,10
  4377. ** COMMON DECKS.
  4378.  
  4379.  
  4380. *CALL COMPC2D
  4381.  
  4382.  
  4383. ERRNG 2*473+ERLA+5-* FUNCTION REJECT PROCESSOR OVERFLOW
  4384. OVERLAY (MTS/ATS ERRLOG MESSAGE PROCESSOR.),(ERLA+5),P,EMM
  4385. EMM SPACE 4,10
  4386. ** EMM - MTS ERRLOG MESSAGE PROCESSOR.
  4387. * THIS OVERLAY MAY BE CALLED BY ANY PART OF THE PROGRAM
  4388. * TO ISSUE A SUITABLE MESSAGE TO THE ERRLOG. IN ADDITION IF
  4389. * IT IS CALLED FROM THE MAIN PROGRAM IT ALSO PROCESSES THE
  4390. * ERROR.
  4391. *
  4392. * CALLS BDM, IDM, *3MD*.
  4393. *
  4394. * MACROS EXECUTE.
  4395.  
  4396.  
  4397. ENTRY EMM
  4398. EMM SUBR ENTRY/EXIT
  4399. RJM BDM BUILD MESSAGE
  4400. LDM EMMA
  4401. ZJN EMM3 IF NO MESSAGE OR SPECIAL PROCESSOR
  4402. SBN MAXM
  4403. MJN EMM4 IF SPECIAL PROCESSOR NEEDED
  4404.  
  4405. EMM1 LCN 0 MOVE MESSAGE
  4406. STD T1
  4407. EMM2 AOD T1
  4408. LDM *,T1
  4409. EMMA EQU *-1
  4410. STM MESE+13,T1
  4411. NJN EMM2 IF NOT END OF MESSAGE
  4412. EMM3 LDD HP
  4413. * UJN EMM5 (*3MD* ALREADY EXECUTED)
  4414. EMMB EQU *-1
  4415. LPC 500
  4416. ZJN EMM5 IF NOT FSC/CMTS/ISMT ADAPTOR
  4417. EMM4 EXECUTE 3MD LOAD SPECIAL PROCESSOR
  4418. EMMC UJN EMM1 GO MOVE MESSAGE
  4419. * PSN (NO MESSAGE TO MOVE)
  4420.  
  4421. * ISSUE MESSAGES.
  4422.  
  4423. EMM5 LDN ERLN/10000 ISSUE MESSAGE TO ERROR LOG
  4424. RJM IDM
  4425. LDM CECB
  4426. EMMD LPN 77
  4427. * LPN 0 (MESSAGE ISSUE TO USER DISABLED)
  4428. ZJN EMM6 IF AT MAGNET CP
  4429. LDN CPON/10000 ISSUE MESSAGE TO USER
  4430. RJM IDM
  4431. EMM6 LJM EMMX RETURN
  4432. MES SPACE 4,10
  4433. *** MESSAGE DATA.
  4434. * MESSAGES ARE ISSUED IN THE FOLLOWING FORMAT-
  4435. * MT,C13-0-02,ABCDEF,RD, 753,S0,GS00000000
  4436. * MT,C13,D00000000000000000000000000000000
  4437. * MT,C13,U000000000000000000000000,T0000.
  4438. * MT,C13,A0000000000000000000000000000.
  4439. * MT,C13,F04,I13,B000123,L5004,P00000000.
  4440. * MT,C13,E00,H00000000, .(ADDITIONAL INFORMATION.)
  4441. *
  4442. * THE FIRST MESSAGE WOULD TELL THE FOLLOWING-
  4443. *
  4444. * 1) CHANNEL 13, EQUIPMENT 0, UNIT 2.
  4445. * 2) VOLUME SERIAL NUMBER IS *ABCDEF*.
  4446. * 3) OPERATION WAS A READ. (ANY OPERATION NOT INVOLVING
  4447. * AN ACTUAL READ OR WRITE WILL BE CALLED A READ.
  4448. * 4) EST ORDINAL *753* IS THE UNIT THAT THE TAPE WAS LAST
  4449. * LABELED ON. THIS WILL ONLY BE AVAILABLE FOR LABELED
  4450. * TAPE GENERATED UNDER KRONOS 2.1 OR NOS. IT WILL
  4451. * NORMALLY BE ZERO IN ALL OTHER CASES. THIS FIELD DOES
  4452. * NOT REPRESENT THE EST ORDINAL OF THE TAPE UNIT THAT
  4453. * THE TAPE IS CURRENTLY MOUNTED ON.
  4454. * 5) CHANNEL STATUS.
  4455. * 6) GENERAL STATUS OF TAPE UNIT.
  4456. * 7) BLOCK ID BYTE. ( LOWER 12 BITS OF GENERAL STATUS)
  4457. *
  4458. * THE SECOND MESSAGE WOULD TELL THE FOLLOWING -
  4459. *
  4460. * 1) CHANNEL 13 - THIS IS REPEATED SO THAT IF ERRORS
  4461. * ARE OCCURING ON MORE THAN ONE TAPE CHANNEL AT THE
  4462. * SAME TIME THE TWO MESSAGES CAN BE ASSOCIATED.
  4463. * 2) DETAILED STATUS OF THE UNIT.
  4464. * FOR FSC/CMTS/ISMT THIS IS WORD 3 OF ATS MAPPED STATUS
  4465. * AND WORDS 1 - 7 OF SENSE BYTE STATUS.
  4466. *
  4467. * THE THIRD MESSAGE (NOT MTS) WOULD TELL THE FOLLOWING -
  4468. *
  4469. * 1) CHANNEL 13, SAME AS ABOVE.
  4470. * 2) UNIT STATUS.
  4471. * FOR FSC/CMTS/ISMT THIS IS WORDS 8 - 13 OF SENSE BYTE
  4472. * STATUS.
  4473. * 3) THIRD BYTE OF FORMAT PARAMETERS.
  4474. *
  4475. * THE FOURTH MESSAGE (FSC/CMTS/ISMT ONLY) WOULD TELL THE
  4476. * FOLLOWING -
  4477. *
  4478. * 1) CHANNEL 13, SAME AS ABOVE.
  4479. * 2) THE ADDITIONAL SENSE BYTE STATUS (WORDS 14 - 20) NOT
  4480. * PLACED IN DETAILED STATUS OR UNIT STATUS FIELDS.
  4481. *
  4482. * THE FIFTH MESSAGE WOULD TELL THE FOLLOWING -
  4483. *
  4484. * 1) CHANNEL 13, SAME AS ABOVE.
  4485. * 2) THE ERROR OCCURED ON A SOFTWARE FUNCTION 4.
  4486. * 3) ERROR ITERATION.
  4487. * 4) BLOCK NUMBER ERROR OCCURRED ON WAS 123.
  4488. * 5) BLOCK LENGTH WAS 5004 BYTES.
  4489. * 6) *1MT* INTERNAL ERROR PARAMETERS.
  4490. *
  4491. * THE SIXTH MESSAGE WOULD TELL THE FOLLOWING -
  4492. *
  4493. * 1) CHANNEL 13 - SAME AS ABOVE.
  4494. * 2) OCTAL ERROR CODE VALUE.
  4495. * 3) UNIT FORMAT PARAMETERS. SEE 66X/67X MANUAL FOR FIELD
  4496. * DEFINITIONS OF FORMAT SELECTION.
  4497. * 4) ADDITIONAL DESCRIPTION.
  4498.  
  4499. **** MESSAGE DATA.
  4500.  
  4501. MESA DATA H*MT,C00-0-00, ,RD, ,S0,GS00000000*
  4502. CON 0
  4503. MESB DATA H*MT,C00,D00000000000000000000000000000000*
  4504. CON 0
  4505. MESC DATA H*MT,C00,U000000000000000000000000,T0000. *
  4506. CON 0
  4507. MESD DATA H*MT,C00,F00,I00,B000000,L0000,P00000000. *
  4508. CON 0
  4509. MESE DATA C*MT,C00,E00,H00000000, .*
  4510. MESL EQU MESE+MESB-MESA+1
  4511. TERM SPACE 4,10
  4512. TERM INDEX
  4513. INDEX 0,(=C*REC.*)
  4514. INDEX /MTX/OPA,(=C*OPA.*)
  4515. INDEX /MTX/BTL,(=C*BTL.*)
  4516. INDEX /MTX/BNE,BNEM
  4517. INDEX /MTX/NBE,(=C*NBE.*)
  4518. INDEX /MTX/OTF,(=C*OTF.*)
  4519. INDEX /MTX/RDR,WEOM
  4520. INDEX /MTX/FRJ,FRJM
  4521. INDEX /MTX/WEO,WEOM
  4522. INDEX /MTX/CRJ,CRJM
  4523. INDEX /MTX/STE,(=C*STE.*)
  4524. INDEX /MTX/ERA,(=C*ERA.*)
  4525. INDEX /MTX/PLO,(=C*PLO.*)
  4526. INDEX /MTX/CMF,(=C*CMF.*)
  4527. INDEX /MTX/BCR,(=C*BCR.*)
  4528. INDEX /MTX/SMF,(=C*SMF.*)
  4529. INDEX /MTX/SMB,(=C*SMB.*)
  4530. INDEX /MTX/MDW,(=C*MDW.*)
  4531. INDEX /MTX/MOF,(=C*MOF.*)
  4532. INDEX /MTX/LCH,(=C*LCH.*)
  4533. INDEX /MTX/RCE,(=C*RCE.*)
  4534. INDEX /MTX/MWT,(=C*MWT.*)
  4535. INDEX /MTX/WVF,(=C*WVF.*)
  4536. INDEX /MTX/TME,(=C*TME.*)
  4537. INDEX /MTX/TCF,(=C*TCF.*)
  4538. INDEX /MTX/BFR,(=C*BFR.*)
  4539. INDEX /MTX/BFW,(=C*BFW.*)
  4540. INDEX /MTX/MERC
  4541. ****
  4542. SPACE 4,10
  4543. ** COMMON DECKS.
  4544.  
  4545.  
  4546. *CALL COMPC2D
  4547. SPACE 4,10
  4548. ** ERRORS REQUIRING ADDITIONAL OVERLAY TO BE LOADED.
  4549.  
  4550.  
  4551. BEGM BSS 0
  4552. LOC 1
  4553. FRJM BSS 1 FUNCTION REJECT
  4554. WEOM BSS 1 NO END OF OPERATION
  4555. CRJM BSS 1 CONNECT REJECT
  4556. BNEM BSS 1 BLOCK SEQUENCE ERROR
  4557. MAXM BSS 1 MAXIMUM SPECIAL ERRORS
  4558.  
  4559. ORG BEGM
  4560. TITLE SUBROUTINES.
  4561. CDA SPACE 4,10
  4562. ** CDA - CONVERT DATA (4 DIGITS).
  4563. *
  4564. * ENTRY (A, 17 - 12) = ADDRESS WHERE DATA CONTAINED.
  4565. * (A, 11 - 0) = ADDRESS WHERE TO STORE RESULT.
  4566. *
  4567. * CALLS C2D.
  4568. *
  4569. * USES T2, T3.
  4570.  
  4571.  
  4572. CDA SUBR ENTRY/EXIT
  4573. STD T3 SAVE DESTINATION ADDRESS
  4574. SHN -14
  4575. STD T2 SAVE DATA ADDRESS
  4576. LDI T2 CONVERT FIRST 2 DIGITS
  4577. SHN -6
  4578. RJM C2D
  4579. STI T3
  4580. LDI T2 CONVERT SECOND 2 DIGITS
  4581. RJM C2D
  4582. STM 1,T3
  4583. UJN CDAX RETURN
  4584. CDN SPACE 4,10
  4585. ** CDN - CONVERT DATA (N DIGITS)
  4586. *
  4587. * ENTRY (A, 17 - 12) = LENGTH OF DATA.
  4588. * (A, 11 - 0) = SOURCE OF DATA TO CONVERT.
  4589. * (CN+3) = DESTINATION OF CONVERTED DATA.
  4590. *
  4591. * CALLS CDA.
  4592. *
  4593. * USES CN - CN+2
  4594.  
  4595.  
  4596. CDN SUBR ENTRY/EXIT
  4597. STD CN+1 SAVE ADDRESS OF DATA TO CONVERT
  4598. SHN -14 SAVE LENGTH
  4599. STD CN+2
  4600. CDN1 LDI CN+1 CONVERT ONE BYTE OF DATA
  4601. STD CN
  4602. LDC CN*10000
  4603. ADD CN+3
  4604. RJM CDA
  4605. LDN 2
  4606. RAD CN+3
  4607. AOD CN+1
  4608. SOD CN+2
  4609. NJN CDN1 IF NOT COMPLETE
  4610. UJN CDNX RETURN
  4611. IDM SPACE 4,10
  4612. ** IDM - ISSUE DAYFILE MESSAGES.
  4613. *
  4614. * ENTRY (A) = MESSAGE DESTINATION CODE
  4615. * (IDMA) = ADDRESS OF MESSAGE LINES TABLE.
  4616. *
  4617. * EXIT MESSAGE LINES DEFINED IN THE *IDMC* TABLE ARE ISSUED.
  4618. *
  4619. * USES T8.
  4620. *
  4621. * CALLS DFM.
  4622.  
  4623.  
  4624. IDM SUBR ENTRY/EXIT
  4625. LMC LMCI SET MESSAGE DESTINATION CODE
  4626. STM IDMB
  4627. LDN 0 INITIALIZE MESSAGE INDEX
  4628. STD T8
  4629.  
  4630. * LOOP UNTIL ALL MESSAGE LINES ARE ISSUED TO THE DAYFILE.
  4631.  
  4632. IDM1 LDM IDMC,T8 GET NEXT MESSAGE POINTER
  4633. * LDM IDMD,T8 (4 LINES OF MESSAGE)
  4634. * LDM /3M /FSCA,T8 (6 LINES OF MESSAGE)
  4635. IDMA EQU *-1
  4636. ZJN IDMX IF ALL MESSAGES ISSUED
  4637. LMC ** ADD MESSAGE DESTINATION
  4638. IDMB EQU *-2 (MESSAGE DESTINATION CODE)
  4639. RJM DFM ISSUE DAYFILE MESSAGE
  4640. AOD T8 ADVANCE MESSAGE INDEX
  4641. UJN IDM1 ISSUE NEXT MESSAGE LINE
  4642.  
  4643.  
  4644. * TABLE OF MESSAGE LINE POINTERS FOR 5 LINES.
  4645.  
  4646. IDMC BSS 0
  4647. LOC 0
  4648. CON MESA LINE 1
  4649. CON MESB LINE 2
  4650. CON MESC LINE 3
  4651. CON MESD LINE 4
  4652. CON MESE LINE 5
  4653. CON 0 TERMINATOR
  4654. LOC *O
  4655.  
  4656.  
  4657. * TABLE OF MESSAGE LINE POINTERS FOR 4 LINES.
  4658.  
  4659. IDMD BSS 0
  4660. LOC 0
  4661. CON MESA LINE 1
  4662. CON MESB LINE 2
  4663. CON MESD LINE 3
  4664. CON MESE LINE 4
  4665. CON 0 TERMINATOR
  4666. LOC *O
  4667. RUW SPACE 4,10
  4668. ** RUW - READ UNIT DESCRIPTOR TABLE WORD.
  4669. * USED TO READ UDT WHEN POSSIBLY NOT AT MAGNET CP.
  4670. *
  4671. * ENTRY (A) = UDT WORD.
  4672. *
  4673. * EXIT (CN - CN+4) = WORD READ.
  4674. *
  4675. * USES T1, CM - CM+4, CN - CN+4.
  4676. *
  4677. * MACROS DELAY, MONITOR, PAUSE.
  4678.  
  4679.  
  4680. RUW2 LDD MA
  4681. CRD CN
  4682.  
  4683. RUW SUBR ENTRY/EXIT
  4684. STD T1
  4685. RUW1 LDM UADA
  4686. ADD T1
  4687. STD CM+4
  4688. LDD HN REQUEST 1 WORD
  4689. STD CM+3
  4690. LDN 0 REQUEST READ FROM *MAGNET*
  4691. STD CM+1
  4692. LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
  4693. STD CM+2
  4694. MONITOR TDAM
  4695. LDD CM+1
  4696. LMN 1
  4697. NJN RUW2 IF MOVE NOT IN PROGRESS
  4698. PAUSE NE
  4699. DELAY
  4700. UJN RUW1 REISSUE REQUEST
  4701. TITLE OVERLAY AREA.
  4702. ERRNG ERLB-* IF OVERFLOW INTO OVERLAY AREA
  4703.  
  4704.  
  4705. * NOTE - THE FOLLOWING CODE MAY BE OVERLAID IF THE
  4706. * SPECIAL ERROR MESSAGES OVERLAY IS REQUIRED.
  4707. BDM SPACE 4,15
  4708. ** BDM - BUILD MESSAGE.
  4709. *
  4710. * EXIT MESSAGE BUILT EXCEPT FOR DESCRIPTIVE MESSAGE IN LAST
  4711. * LINE OF MESSAGE.
  4712. * (EMMD) MODIFIED IF MESSAGE ISSUE TO USER DISABLED.
  4713. * *EMM* EXIT SET TO *RET4* IF CALLED FROM *ERR* AND
  4714. * REQUEST IN PROGRESS.
  4715. * *EMM* EXIT SET TO *PNR* IF CALLED FROM *ERR* AND
  4716. * REQUEST NOT IN PROGRESS.
  4717. *
  4718. * CALLS CDA, CDN, C2D, HNG, MCH, RUW, SCS, UAD.
  4719. *
  4720. * MACROS CHTE, SFA.
  4721.  
  4722.  
  4723. BDM SUBR ENTRY/EXIT
  4724.  
  4725. * CHECK CALL TYPE.
  4726.  
  4727. LDC CTAB MODIFY CHANNELS
  4728. RJM MCH
  4729. LDM //LOV CHECK CALL ORIGIN
  4730. LMC .EERR
  4731. NJN BDM2 IF NOT CALLED FROM *ERR*
  4732. LDD RS
  4733. LMN /MTX/RIP
  4734. ZJN BDM1 IF REQUEST IN PROGRESS
  4735. LDC //PNR&//RET4
  4736. BDM1 LMC //RET4
  4737. STM //LOV
  4738. LDM //ERR
  4739. ADC -OVL
  4740. MJN BDM4 IF *ERR* CALLED FROM RESIDENT
  4741. BDM2 LDM //STER USE STATUS WHEN ERROR OCCURRED
  4742. STD DS
  4743.  
  4744. * CHECK VALIDITY OF ERROR CODE.
  4745.  
  4746. BDM4 LDD EC
  4747. SBN /MTX/MERC
  4748. MJN BDM5 IF VALID ERROR CODE
  4749. RJM HNG HANG PP
  4750. BDM5 LDN 0 CLEAR ERROR TYPE INDICATOR
  4751. STM //ERR
  4752. LDM TERM,EC SAVE TABLE ENTRY
  4753. STM EMMA
  4754. LDD EC
  4755. LMN /MTX/LCH
  4756. NJN BDM6 IF NOT LOAD CHECK ERROR
  4757. AOM //RELA SET UNIT CONNECTED
  4758. RJM UAD SET UP DIRECT CELLS FOR MESSAGE
  4759. ADN /MTX/UST2
  4760. CRM EI,TR
  4761.  
  4762. * MESSAGE BUILD.
  4763.  
  4764. BDM6 LDD HP SET DEVICE TYPE IN MESSAGE LINES
  4765. LPN 1
  4766. SHN 6
  4767. ADC 2RMT
  4768. RJM SCS SET CHARACTERS
  4769. CHTE * SET CHANNEL NUMBER
  4770. LDN CH
  4771. RJM C2D
  4772. ADC 2*10000
  4773. RJM SCS
  4774. SFA EST,EO GET EQUIPMENT AND UNIT NUMBER
  4775. ADK EQDE
  4776. CRD CM
  4777. LDD CM+4 SET EQUIPMENT NUMBER
  4778. SHN -11
  4779. RAM MESA+3
  4780. LDD CM+4 SET UNIT NUMBER
  4781. SHN -3
  4782. LPN 1
  4783. RAM MESA+4
  4784. LDD CM+4
  4785. LPN 7
  4786. SHN 6
  4787. RAM MESA+5
  4788. LDN /MTX/UVSN READ UP VSN
  4789. RJM RUW
  4790. LDD CN
  4791. ZJN BDM7 IF VSN NOT SPECIFIED
  4792. STM MESA+6
  4793. LDD CN+1
  4794. STM MESA+7
  4795. LDD CN+2
  4796. STM MESA+10
  4797. BDM7 LDM ITMA
  4798. LPN 77
  4799. LMN F0050
  4800. NJN BDM8 IF NOT WRITE OPERATION
  4801. LDN 1RW-1RR CHANGE *RD* TO *WD*
  4802. RAM MESA+11
  4803. BDM8 LDN /MTX/UGNU GET EST ORDINAL WRITTEN ON
  4804. RJM RUW
  4805. LDD CN+1
  4806. ZJN BDM9 IF EST NOT AVAILABLE
  4807. SHN -6 CONVERT UPPER DIGIT OF EST ORDINAL
  4808. ADC 2R 0
  4809. STM MESA+13
  4810. LDD CN+1 CONVERT LOWER TWO DIGITS OF EST ORDINAL
  4811. RJM C2D
  4812. STM MESA+14
  4813. BDM9 LDM STCB SET CHANNEL STATUS
  4814. SHN 6
  4815. RAM MESA+16
  4816. LDC MESA+20
  4817. STD CN+3
  4818. LDC 1*10000+DS
  4819. RJM CDN
  4820. LDC 1*10000+UBWB SET BID BYTE
  4821. RJM CDN
  4822. LDD EC SET ERROR CODE
  4823. RJM C2D
  4824. STM MESE+4
  4825. LDD FN CONVERT SOFTWARE FUNCTION NUMBER
  4826. RJM C2D
  4827. STM MESD+4
  4828. LDD EI CONVERT ERROR ITERATION NUMBER
  4829. RJM C2D
  4830. STM MESD+6
  4831. LDD BL CONVERT BLOCK NUMBER
  4832. RJM C2D
  4833. STM MESD+10
  4834. LDC BL*10000+10000+MESD+11 CONVERT BLOCK NUMBER
  4835. RJM CDA
  4836. LDC BY*10000+MESD+14 CONVERT BLOCK LENGTH
  4837. RJM CDA
  4838. LDC MESB+4 CONVERT DETAILED STATUS
  4839. STD CN+3
  4840. LDC 10*10000+MTDS
  4841. RJM CDN
  4842. LDN MESD+17-MESB-24 CONVERT ERROR PARAMETERS
  4843. RAD CN+3
  4844. LDC 2*10000+EP
  4845. RJM CDN
  4846. LDN MESE+6-MESD-23 CONVERT FORMAT
  4847. RAD CN+3
  4848. LDC 2*10000+MTSF
  4849. RJM CDN
  4850. LDD CF
  4851. SHN 21-7
  4852. MJN BDM10 IF MTS CONTROLLER
  4853. LDC MESC+4 SET UNIT STATUS FOR ATS
  4854. STD CN+3
  4855. LDC 6*10000+ATUS
  4856. RJM CDN
  4857. LDN MESC+21-MESC-20 SET THIRD FORMAT PARAMETER
  4858. RAD CN+3
  4859. LDC 1*10000+MTSF+2
  4860. RJM CDN
  4861. UJN BDM11 CHECK ERROR MESSAGE PROCESSING OPTION
  4862.  
  4863. BDM10 LDC IDMD SET 4 LINE MESSAGE
  4864. STM IDMA
  4865. BDM11 LDD SP CHECK ERROR MESSAGE PROCESSING OPTION
  4866. SHN 21-7
  4867. PJN BDM11.1 IF USER DAYFILE MESSAGES ARE DISABLED
  4868. LDD EC
  4869. ZJN BDM12 IF RECOVERED MESSAGE
  4870. LMN /MTX/OTF
  4871. ZJN BDM12 IF ON THE FLY ERROR
  4872. LDD EI
  4873. ZJN BDM12 IF FIRST ITERATION
  4874. BDM11.1 LDC LPNI+0 DISABLE MESSAGE ISSUE
  4875. STM EMMD
  4876. BDM12 LJM BDMX RETURN
  4877. SCS SPACE 4,10
  4878. ** SCS - STORE CHARACTERS IN MESSAGE LINES.
  4879. *
  4880. * ENTRY (A, 17 - 12) = MESSAGE FIELD INDEX.
  4881. * (A, 11 - 0) = CHARACTERS.
  4882. *
  4883. * USES T0, T1.
  4884.  
  4885.  
  4886. SCS SUBR ENTRY/EXIT
  4887. STD T0 SAVE CHARACTERS
  4888. SHN -14
  4889. ADC MESA
  4890. STD T1
  4891. SCS1 LDD T0
  4892. STI T1
  4893. LDN MESB-MESA
  4894. RAD T1
  4895. ADC -MESL
  4896. MJN SCS1 LOOP
  4897. UJN SCSX RETURN
  4898. BUF SPACE 4,10
  4899. USE BUFFER
  4900. CTAB SPACE 4,10
  4901. * CHANNEL TABLE.
  4902.  
  4903.  
  4904. CTAB CHTB CHANNEL TABLE
  4905.  
  4906. ERRNG 2*473+ERLA+5-* ERROR PROCESSOR OVERFLOW
  4907. OVERLAY (MTS/ATS SPECIAL MESSAGE PROCESSOR.),(ERLB+5),P
  4908.  
  4909.  
  4910. ** THIS OVERLAY IS CALLED FROM *EMM* FOR ERRORS WHICH
  4911. * REQUIRE ADDITIONAL PROCESSING. SEE TABLE IN *EMM* FOR
  4912. * LIST OF ERRORS WHICH REQUIRE THIS OVERLAY.
  4913. EMN SPACE 4,10
  4914. ** EMN - MTS ERRLOG MESSAGE SPECIAL PROCESSOR.
  4915. *
  4916. * ENTRY (/EMM/EMMA) = INDEX TO PROCESSOR.
  4917. *
  4918. * EXIT (/EMM/EMMA) = MESSAGE ADDRESS.
  4919. *
  4920. * CALLS BNP, CKR, ECN, FRE, FSC.
  4921.  
  4922.  
  4923. EMN SUBR ENTRY/EXIT
  4924. LDC UJNI+/EMM/EMM5-/EMM/EMMB
  4925. ERRPL /EMM/EMM5-/EMM/EMMB-40 CHECK JUMP IN RANGE
  4926. STM /EMM/EMMB SET *3MD* ALREADY EXECUTED
  4927. LDM /EMM/EMMA GET PROCESSOR INDEX
  4928. ZJN EMN2 IF ONLY CALLED FOR FSC STATUS
  4929. STD T1
  4930. SBN /EMM/MAXM
  4931. PJN EMN2 IF FSC STATUS CALL BUT MESSAGE DEFINED
  4932. LDM SPRI,T1
  4933. STM EMNA
  4934. RJM * PROCESS ERROR
  4935. EMNA EQU *-1
  4936. STM /EMM/EMMA SET MESSAGE ADDRESS
  4937. EMN1 LDD HP
  4938. LPC 500
  4939. ZJN EMNX IF NOT FSC/CMTS/ISMT ADAPTOR
  4940. RJM FSC OBTAIN AND FORMAT FSC/CMTS/ISMT STATUS
  4941. UJN EMNX RETURN
  4942.  
  4943. EMN2 LDN PSNI
  4944. STM /EMM/EMMC SKIP MESSAGE MOVE
  4945. UJN EMN1 RETURN FSC STATUS
  4946. TITLE SPECIAL PROCESSORS.
  4947. SPRI SPACE 4,10
  4948. SPRI INDEX 0,//HNG
  4949. INDEX /EMM/FRJM,FRE
  4950. INDEX /EMM/WEOM,CKR
  4951. INDEX /EMM/CRJM,ECN
  4952. INDEX /EMM/BNEM,BNP
  4953. INDEX /EMM/MAXM
  4954. BNP SPACE 4,10
  4955. ** BNP - BLOCK NUMBER PROCESSOR.
  4956. *
  4957. * ENTRY (BNEI) = ACTUAL BYTE LENGTH.
  4958. * (BNEI+1 - BNEI+2) = ACTUAL BLOCK NUMBER.
  4959. *
  4960. * EXIT (A) = MESSAGE ADDRESS.
  4961. *
  4962. * CALLS /EMM/CDA, /EMM/C2D.
  4963. *
  4964. * USES CM.
  4965.  
  4966.  
  4967. BNP SUBR ENTRY/EXIT
  4968. LDM BNEI
  4969. STD CM
  4970. LDC CM*10000+BNPA+1 CONVERT EXPECTED LENGTH
  4971. RJM /EMM/CDA
  4972. LDM BNEI+1
  4973. RJM /EMM/C2D
  4974. STM BNPA+4
  4975. LDM BNEI+2
  4976. STD CM
  4977. LDC CM*10000+BNPA+5
  4978. RJM /EMM/CDA
  4979. LDC BNPA SET MESSAGE ADDRESS
  4980. UJN BNPX RETURN
  4981.  
  4982.  
  4983. BNPA DATA C* L0000,B000000.*
  4984. CKR SPACE 4,10
  4985. ** CKR - CHECK IF READY OR WRITE ENABLE ERROR.
  4986. * CLEARS LAST OPERATION WRITE FLAGS.
  4987. *
  4988. * EXIT (A) = MESSAGE ADDRESS.
  4989.  
  4990.  
  4991. CKR2 LDN /MTX/RDR SET READY DROP ERROR
  4992. STD EC
  4993. CKR3 LDC CKRC SET READY DROP MESSAGE
  4994.  
  4995. CKR SUBR ENTRY/EXIT
  4996. LDD UP CLEAR LAST OPERATION WRITE AND BLANK TAPE
  4997. SCN 24
  4998. STD UP
  4999. LDD EC CHECK FOR READY DROP ERROR
  5000. SBN /MTX/RDR
  5001. ZJN CKR3 IF READY DROP ERROR
  5002. LDD DS CHECK FOR NOT READY STATUS
  5003. SHN 21-0
  5004. PJN CKR2 IF NOT READY
  5005. LDM STWD
  5006. LPN 2
  5007. ZJN CKR1 IF NOT WAIT BUSY
  5008. LDD DS
  5009. LPN 2
  5010. ZJN CKR1 IF NOT BUSY
  5011. LDC CKRB SET UNIT BUSY MESSAGE
  5012. UJN CKRX RETURN
  5013.  
  5014. CKR1 LDC CKRA SET NO EOP MESSAGE
  5015. UJN CKRX RETURN
  5016.  
  5017.  
  5018. CKRA DATA C*NO EOP.*
  5019. CKRB DATA C*BUSY.*
  5020. CKRC DATA C*NOT READY.*
  5021. ECN SPACE 4,10
  5022. ** ECN - ERROR ON CONNECT.
  5023. *
  5024. * EXIT (A) = MESSAGE ADDRESS.
  5025. *
  5026. * USES CM - CM+4.
  5027. *
  5028. * MACROS SFA.
  5029.  
  5030.  
  5031. ECN1 LDM MTDS
  5032. LPN 77
  5033. NJN ECN2 IF CONNECT ERROR
  5034.  
  5035. * CHANGE MESSAGE TO *MDI* ERROR.
  5036.  
  5037. LDC 2RMD
  5038. STM ECNA+5
  5039. LDC 2RI.
  5040. STM ECNA+6
  5041. LDN 0
  5042. STM ECNA+7
  5043. ECN2 LDC ECNA EXIT WITH MESSAGE ADDRESS
  5044.  
  5045. ECN SUBR ENTRY/EXIT
  5046. SFA EST,EO
  5047. ADK EQDE
  5048. CRD CM
  5049. LDD CM
  5050. LPN 3
  5051. LMN /CPS/DWES
  5052. ZJN ECN1 IF UNIT DOWNED
  5053. LDN 0 ALTER MESSAGE
  5054. STM ECNA+5
  5055. UJN ECN2 RETURN
  5056.  
  5057.  
  5058. ECNA DATA C*CON. REJ. DOWN.*
  5059. FRE SPACE 4,10
  5060. ** FRE - FUNCTION REJECT ERROR.
  5061. * DIAGNOSES ERROR BY GIVING FUNCTION AND THE ADDRESS OF
  5062. * THE ROUTINE THAT INITIATED THE CALL.
  5063. *
  5064. * EXIT (A) = MESSAGE ADDRESS.
  5065. *
  5066. * CALLS /EMM/CDA.
  5067. *
  5068. * USES CM.
  5069.  
  5070.  
  5071. FRE SUBR ENTRY/EXIT
  5072. LDM //.OVLR+1 GET ADDRESS OF CALLER
  5073. STD CM
  5074. LDC CM*10000+FREA+4
  5075. RJM /EMM/CDA
  5076. LDM //.OVLR CONVERT FUNCTION
  5077. STD CM
  5078. LDC CM*10000+FREA+1
  5079. RJM /EMM/CDA
  5080. LDC FREA SET MESSAGE ADDRESS
  5081. UJN FREX RETURN
  5082.  
  5083.  
  5084. FREA DATA C*FN0000,P0000.*
  5085. FSC SPACE 4,15
  5086. ** FSC - FSC/CMTS/ISMT ADAPTOR STATUS.
  5087. * OBTAINS AND INSERTS THE FSC/CMTS/ISMT SENSE BYTE STATUS INTO
  5088. * THE ERROR LOG MESSAGE.
  5089. *
  5090. * USES CM - CM+4, CN - CN+3.
  5091. *
  5092. * CALLS /EMM/CDN, DME, FCN, MCH.
  5093. *
  5094. * NOTE - FSC ADAPTOR ALWAYS HAS A DEDICATED AND RESERVED
  5095. * CHANNEL. THE FSC STATUS (312) FUNCTION DOES NOT
  5096. * REQUIRE A RESERVED UNIT.
  5097.  
  5098.  
  5099. FSC2 LDM /EMM/MESA SET MT OR NT AND CHANNEL IN MESSAGE
  5100. STM FSCB
  5101. LDM /EMM/MESA+2
  5102. STM FSCB+2
  5103. LDC FSCA INITIALIZE MESSAGE POINTER
  5104. STM /EMM/IDMA
  5105.  
  5106. FSC SUBR ENTRY/EXIT
  5107. LDM MTDS CHECK FOR ERROR CODE 70
  5108. LPN 77
  5109. LMN 70
  5110. ZJP FSC2 IF ERROR CODE 70 DO NOT GET ISMT STATUS
  5111. LDC FSCD MODIFY CHANNELS
  5112. RJM MCH
  5113. LDM //MCCA SKIP ACTUAL STATUS IF PREVIOUS REJECT
  5114. LMC LDNI+11
  5115. NJN FSC1 IF PREVIOUS FUNCTION REJECT
  5116. LDC 312
  5117. RJM //FCN ISSUE FSC/CMTS/ISMT STATUS FUNCTION
  5118. ACN CH+40
  5119. LDN 20D
  5120. IAM FSCC,CH INPUT STATUS
  5121. FSC1 LDC /EMM/MESB+6
  5122. STD CN+3
  5123. LDC 7*10000+FSCC USE SENSE BYTES FOR DETAILED STATUS
  5124. RJM /EMM/CDN
  5125. LDC /EMM/MESC+4
  5126. STD CN+3
  5127. LDC 6*10000+FSCC+7 SUBSTITUTE SENSE BYTES FOR UNIT STATUS
  5128. RJM /EMM/CDN
  5129. LDC FSCB+4
  5130. STD CN+3
  5131. LDC 7*10000+FSCC+15 SET SENSE BYTES IN ADDITIONAL STATUS
  5132. RJM /EMM/CDN
  5133. LJM FSC2 SET MT OR NT AND CHANNEL IN MESSAGE
  5134.  
  5135.  
  5136. * TABLE OF MESSAGE LINE POINTERS FOR FSC, CMTS OR ISMT.
  5137.  
  5138. FSCA BSS 0
  5139. LOC 0
  5140. CON /EMM/MESA LINE 1
  5141. CON /EMM/MESB LINE 2
  5142. CON /EMM/MESC LINE 3
  5143. CON FSCB LINE 4
  5144. CON /EMM/MESD LINE 5
  5145. CON /EMM/MESE LINE 6
  5146. CON 0 TERMINATOR
  5147. LOC *O
  5148.  
  5149. FSCB DATA H*MT,C00,A0000000000000000000000000000. *
  5150. CON 0
  5151.  
  5152. FSCC BSSZ 20D SENSE BYTE STATUS
  5153.  
  5154. FSCD CHTB CHANNEL TABLE
  5155. SPACE 4,10
  5156. USE BUFFER
  5157. ERRNG 1*473+ERLB+5-* ERROR PROCESSOR OVERFLOW
  5158. OVERLAY (CTS CHANNEL ERROR PROCESSOR.),(BUFB+5),P
  5159. CCP SPACE 4,25
  5160. ** CCP - CTS CHANNEL ERROR PROCESSOR.
  5161. *
  5162. * THIS ROUTINE DOES ERROR RECOVERY AS FOLLOWS -
  5163. *
  5164. * IF A JOB IS ASSIGNED, BUT NO FUNCTION IS PRESET, ERROR
  5165. * LOGGING AND ERROR RECOVERY ARE NOT PERFORMED.
  5166. * IF (EI) = 0 OR 1 LOG ERROR, LOAD CCC, POSITION TAPE IF
  5167. * NECESSARY, AND REQUEUE.
  5168. * IF (EI) .GE. 2 LOG ERROR AND RETURN A FATAL ERROR.
  5169. *
  5170. * ENTRY (EC) = ERROR CODE.
  5171. * (EI) = RETRY COUNT.
  5172. * (PICA) = 0 IF POSITIONING OF TAPE NOT NECESSARY.
  5173. *
  5174. * EXIT TO *RET2* TO REQUEUE THE REQUEST.
  5175. * TO *RET4* TO RETURN A FATAL ERROR.
  5176. * TO *PNR* IF INITIAL CONNECT FAILED, BUT AUTOLOAD AND
  5177. * ENSUING CONNECT ARE SUCCESSFUL.
  5178. * TO *PNR3 IF FUNCTION TIMEOUT FOR RELEASE.
  5179. * (EI) = (EI) + 1.
  5180. *
  5181. * USES CN, CM - CM+4.
  5182. *
  5183. * CALLS CEC, *CEM*, MCH, PCM, PCR, POS, /PRESET/RCU, UAD,
  5184. * *0CT*.
  5185. *
  5186. * MACROS CALL, EXECUTE.
  5187.  
  5188.  
  5189. ENTRY CCP
  5190. CCP SUBR ENTRY/EXIT
  5191. LDC CTAB
  5192. RJM MCH MODIFY CHANNEL INSTRUCTIONS
  5193. LDC LDNI+F0002
  5194. STM /PRESET/GPSC SEND CONTINUE IF COMMAND RETRY
  5195. LDM /PRESET/ICFA
  5196. LMN F0001
  5197. NJN CCP1 IF NOT RELEASE UNIT
  5198. STM RELA INDICATE UNIT NOT CONNECTED
  5199. LDN PPAL CHECK PPU AVAILABILITY
  5200. CRD CM
  5201. LJM PNR3 PROCESS NEXT REQUEST
  5202.  
  5203. CCP1 LDN 0 DO NOT SET FET COMPLETE
  5204. RJM CEC CHANGE TO MAGNET CONTROL POINT
  5205. LDM RELA
  5206. NJN CCP2 IF UNIT CONNECTED
  5207. LDD EC SAVE ERROR CODE
  5208. STD T1
  5209. RJM UAD GET UDT ADDRESS
  5210. CRD RS SET UP DIRECT CELLS FOR MESSAGE
  5211. ADN /MTX/UST2
  5212. CRM EI,TR
  5213. LDD T1 RESTORE ERROR CODE
  5214. STD EC
  5215. CCP2 LDD EC
  5216. LMN /MTX/STE
  5217. NJN CCP3 IF NOT STATUS ERROR
  5218. LDD DS
  5219. LPN 1
  5220. NJN CCP3 IF READY
  5221. LDN /MTX/RDR NOT READY ERROR
  5222. STD EC
  5223. CCP3 RJM PCM PROCESS CHANNEL MALFUNCTION
  5224. RJM PCR PROCESS CONNECT REJECT
  5225. CALL CEM LOG CTS ERROR MESSAGE
  5226. LDC LDNI
  5227. STM //PNRC FORCE DROP OUT
  5228. AOD EI INCREMENT RETRY COUNT
  5229. STD EP SO RECOVERABLE ERROR WILL BE REPORTED
  5230. SBN 3
  5231. MJN CCP4 IF RETRIES NOT COMPLETED
  5232. LDN 0
  5233. STD EI CLEAR RETRY COUNT
  5234. LDD FN
  5235. ZJP PNR IF NO FUNCTION
  5236. LJM RET4 REPORT FATAL ERROR
  5237.  
  5238. CCP4 RJM UAD GET UDT ADDRESS
  5239. ADN /MTX/UST2
  5240. CWD EI SAVE RETRY COUNT AND BLOCK POSITION
  5241. ADN /MTX/UST3-/MTX/UST2
  5242. CWD LG SAVE BLOCK POSITION (EP+1)
  5243. CHTE *
  5244. LDN CH SET CHANNEL NUMBER
  5245. STD CN
  5246. LDC ERLB SET BUFFER ADDRESS
  5247. STD CN+1
  5248. EXECUTE 0CT,ERLA+5 LOAD CTS/CCC MICROCODE
  5249. LDD CN
  5250. ZJN CCP6 IF MICROCODE LOADED
  5251. STD EC
  5252. SHN 0-13
  5253. PJN CCP5 IF ERROR CODE ALREADY SAVED
  5254. LDN /MTX/CMF
  5255. STD EC
  5256. CCP5 LDM CN+1 SAVE FUNCTION
  5257. STM /PRESET/ICFA
  5258. UJP CCP3 PERFORM NEXT STEP OF RECOVERY ALGORITHM
  5259.  
  5260. CCP6 LDM RELA
  5261. ZJN CCP9 IF UNIT NOT CONNECTED
  5262. RJM /PRESET/RCU RECONNECT UNIT
  5263. LDM /PRESET/PICA
  5264. ZJN CCP7 IF POSITIONING OF TAPE NOT NECESSARY
  5265. RJM POS POSITION TAPE
  5266. NJP CCP3 IF ERROR
  5267. CCP7 LDN 0
  5268. STD EC CLEAR ERROR CODE
  5269. LJM RET2 REQUEUE THE REQUEST
  5270.  
  5271. CCP9 RJM /PRESET/CCU CONNECT UNIT
  5272. LDN 0
  5273. STD EC CLEAR ERROR CODE
  5274. CALL CEM REPORT RECOVERED ERROR
  5275. LDN 0
  5276. STD EI CLEAR RETRY COUNT
  5277. STD EP
  5278. LJM PNR PROCESS NEXT REQUEST
  5279. CAU SPACE 4,10
  5280. ** CAU - CHECK ALL UNITS.
  5281. *
  5282. * EXIT (A) = 0 IF NO JOB ASSIGNED AND NO FUNCTION PRESET.
  5283. *
  5284. * USES CM - CM+4, CN - CN+4, T1 - T5.
  5285.  
  5286.  
  5287. CAU SUBR ENTRY/EXIT
  5288. LDM PNRD
  5289. STM CAUA SET STARTING UDT ADDRESS
  5290. CAU1 LDD RA
  5291. SHN 6
  5292. ADC 0
  5293. CAUA EQU *-1 (UDT ADDRESS)
  5294. CRD T1
  5295. ADN /MTX/UST1
  5296. CRD CM
  5297. ADN /MTX/UVRI-/MTX/UST1
  5298. CRD CN
  5299. SFA EST,CM+2 GET CHANNEL INFORMATION
  5300. ADK EQDE
  5301. CRD CM
  5302. LDD CM+1
  5303. CHTE *
  5304. LMN CH
  5305. LPN 37
  5306. ZJN CAU1.1 IF UNIT ON THIS CHANNEL
  5307. LDD CM+2
  5308. CHTE *
  5309. LMN CH
  5310. LPN 37
  5311. NJN CAU2 IF UNIT NOT ON THIS CHANNEL
  5312. CAU1.1 LDD CN JOB ASSIGNED
  5313. ADD T2 FUNCTION
  5314. NJN CAUX IF JOB ASSIGNED OR FUNCTION PRESENT
  5315. CAU2 LDN /MTX/UNITL
  5316. RAM CAUA UPDATE TO NEXT UDT
  5317. LMM PNRA
  5318. NJN CAU1 IF NOT END OF UDT
  5319. UJP CAUX RETURN
  5320. CFT SPACE 4,10
  5321. ** CFT - CHECK FOR TWO CHANNELS.
  5322. *
  5323. * EXIT (A) = 0 IF TWO CHANNELS ARE ON.
  5324. *
  5325. * USES T1, CM - CM+4.
  5326.  
  5327.  
  5328. CFT SUBR ENTRY/EXIT
  5329. SFA EST,EO READ EST ENTRY
  5330. ADK EQDE
  5331. CRD CM
  5332. CHTE *
  5333. LDN CH
  5334. STD T1 SAVE CHANNEL NUMBER
  5335. LDD CM+1
  5336. SHN -11
  5337. LMN 4
  5338. NJN CFTX IF 1ST CHANNEL NOT ON
  5339. LDD CM+1
  5340. LMD T1
  5341. LPN 37
  5342. NJN CFT2 IF THIS IS A 2ND CHANNEL
  5343. LDD CM+2
  5344. SHN -11
  5345. CFT1 LMN 4
  5346. NJN CFTX IF NO 2ND CHANNEL
  5347. LDD CM+2
  5348. LMD T1
  5349. LPN 37
  5350. ZJN CFT1 IF NO 2ND CHANNEL
  5351. CFT2 LDN 0
  5352. UJP CFTX RETURN
  5353. DCI SPACE 4,10
  5354. ** DCI - DOWN CHANNEL IN EST.
  5355. * THIS ROUTINE DOWNS THE CHANNEL IN THE EST FOR ALL UNITS
  5356. * ON THE CHANNEL.
  5357. *
  5358. * USES CM - CM+4, CN - CN+4.
  5359. *
  5360. * MACROS MONITOR.
  5361.  
  5362.  
  5363. DCI SUBR ENTRY/EXIT
  5364. LDM PNRD
  5365. STM DCIA SET STARTING UDT ADDRESS
  5366. DCI1 LDD RA
  5367. SHN 6
  5368. ADC 0
  5369. DCIA EQU *-1 (UDT ADDRESS)
  5370. ADK /MTX/UST1
  5371. CRD CM GET EQUIPMENT DEFINITION
  5372. SFA EST,CM+2
  5373. ADK EQDE GET CHANNEL INFORMATION
  5374. CRD CN
  5375. LDD CN+1
  5376. CHTE *
  5377. LMN CH
  5378. LPN 37
  5379. ZJN DCI1.1 IF UNIT ON THIS CHANNEL
  5380. LDD CN+2
  5381. CHTE *
  5382. LMN CH
  5383. LPN 37
  5384. NJN DCI2 IF UNIT NOT ON THIS CHANNEL
  5385. DCI1.1 LDD CM+2
  5386. STD CM+1 EST ORDINAL
  5387. CHTE *
  5388. LDN CH
  5389. STD CM+2 CHANNEL NUMBER
  5390. LDN /CPS/DWSS
  5391. STD CM+3 SUBFUNCTION
  5392. MONITOR SCSM DOWN CHANNEL IN EST
  5393. DCI2 LDN /MTX/UNITL
  5394. RAM DCIA UPDATE TO NEXT UDT
  5395. LMM PNRA
  5396. NJP DCI1 IF NOT END OF UDT
  5397. LJM DCIX RETURN
  5398. PCM SPACE 4,25
  5399. ** PCM - PROCESS CHANNEL MALFUNCTION.
  5400. * THE CHANNEL IS DOWNED IF A CHANNEL MALFUNCTION ERROR
  5401. * OCCURS, RECOVERY IS UNSUCCESSFUL, AND
  5402. * 1) THERE IS A 2ND CHANNEL, OR
  5403. * 2) THERE ARE NO JOBS ASSIGNED AND NO FUNCTION IS PRESENT.
  5404. *
  5405. * ENTRY (EC) = ERROR CODE.
  5406. * (EI) = RETRY COUNT.
  5407. *
  5408. * EXIT TO *PNR* IF CHANNEL MALFUNCTION, JOB ASSIGNED, NO 2ND
  5409. * CHANNEL, AND NO FUNCTION IS PRESET. THIS BYPASSES
  5410. * ERROR LOGGING AND ERROR RECOVERY.
  5411. * TO *PNR5* IF CHANNEL DOWNED AND UNIT NOT CONNECTED.
  5412. * TO *RET4* IF CHANNEL MALFUNCTION, ERROR RECOVERY IS
  5413. * UNSUCCESSFUL, AND A 2ND CHANNEL IS PRESENT.
  5414. *
  5415. * USES EC, EI, CM - CM+4, CN - CN+4.
  5416. *
  5417. * CALLS CAU, *CEM*, CFT, DCI, IMR, SRQ, UAD.
  5418. *
  5419. * MACROS CALL, MONITOR.
  5420.  
  5421.  
  5422. PCM SUBR ENTRY/EXIT
  5423. LDD EC
  5424. SBN /MTX/CMF
  5425. ZJN PCM1 IF CHANNEL MALFUNCTION
  5426. SBN /MTX/FRJ-/MTX/CMF
  5427. NJN PCMX IF NOT FUNCTION REJECT
  5428. PCM1 RJM CFT CHECK FOR TWO CHANNELS
  5429. ZJN PCM2 IF 2 CHANNELS
  5430. RJM CAU CHECK ALL UNITS
  5431. NJP PCM4 IF JOB ASSIGNED OR FUNCTION PRESET
  5432. PCM2 LDD EI
  5433. SBN 2
  5434. MJN PCMX IF RECOVERY NOT COMPLETE
  5435.  
  5436. * DOWN CHANNEL.
  5437.  
  5438. PCM3 RJM DCI DOWN CHANNEL IN EST
  5439. LDN /CPS/EEVS
  5440. STD CM+1 ENTER EVENT
  5441. LDN 0
  5442. STD CM+3
  5443. LDN /EVT/CDSE
  5444. STD CM+4 *CHANNEL DOWNED BY SYSTEM* EVENT
  5445. MONITOR EATM
  5446. LDN /MTX/MDW CHANNEL DOWNED ERROR
  5447. STD EC
  5448. CALL CEM LOG THE ERROR
  5449. LDN 0
  5450. STD EI CLEAR RETRY COUNT
  5451. LDC LDNI
  5452. STM //PNRC FORCE DROP OUT
  5453.  
  5454. * ONLY GO TO *RET* IF CONNECTED, OTHERWISE 2 PPS COULD BE
  5455. * CHANGING THE *UDT* AT THE SAME TIME.
  5456.  
  5457. LDM RELA
  5458. ZJP PNR5 IF UNIT NOT CONNECTED
  5459. LJM RET4 RETURN AN ERROR CODE
  5460.  
  5461. PCM4 LDD FN
  5462. ZJP //PNR IF NO FUNCTION PENDING
  5463. PCM5 LJM PCMX RETURN
  5464. PCR SPACE 4,20
  5465. ** PCR - PROCESS CONNECT REJECT.
  5466. * IF ERROR RECOVERY IS UNSUCCESSFUL, NO FUNCTION IS PRESET,
  5467. * AND NO JOB IS ASSIGNED, THE UNIT IS TURNED OFF.
  5468. *
  5469. * ENTRY (EC) = ERROR CODE.
  5470. * (EI) = RETRY COUNT.
  5471. *
  5472. * EXIT TO *PNR* IF CONNECT REJECT, NO FUNCTION IS PRESENT,
  5473. * AND A JOB IS ASSIGNED. THIS BYPASSES ERROR
  5474. * REPORTING AND ERROR RECOVERY.
  5475. *
  5476. * USES CM - CM+4, CN - CN+4.
  5477. *
  5478. * CALLS SRQ, UAD.
  5479. *
  5480. * MACROS MONITOR.
  5481.  
  5482.  
  5483. PCR SUBR ENTRY/EXIT
  5484. LDD EC
  5485. LMN /MTX/CRJ
  5486. NJN PCRX IF NOT CONNECT REJECT
  5487. RJM UAD CHECK IF JOB ASSIGNED
  5488. ADK /MTX/UXRQ
  5489. CRD RS
  5490. ADK /MTX/UVRI-/MTX/UXRQ
  5491. CRD CN
  5492. LDD CN
  5493. NJN PCR1 IF JOB ASSIGNED
  5494. LDD EI
  5495. SBN 2
  5496. MJN PCRX IF RECOVERY NOT COMPLETE
  5497.  
  5498. * DOWN UNIT.
  5499.  
  5500. LDD EO SET EST ORDINAL
  5501. STD CM+1
  5502. LDN /CPS/DWES SET DOWN STATUS
  5503. STD CM+2
  5504. MONITOR SEQM SET EQUIPMENT PARAMETER
  5505. UJP PCRX RETURN
  5506.  
  5507. PCR1 LDD FN
  5508. ZJP //PNR IF NO FUNCTION PENDING
  5509. LJM PCRX RETURN
  5510. POS SPACE 4,15
  5511. ** POS - POSITION TAPE.
  5512. * THIS ROUTINE USES THE LOCATE BLOCK COMMAND TO POSITION
  5513. * THE TAPE TO THE EXPECTED BLOCK POSITION.
  5514. *
  5515. * ENTRY (BL, BL+1) = NOS BLOCK POSITION.
  5516. * (WP, EP+1) = PHYSICAL BLOCK ID WHEN (BL,BL+1) = 0.
  5517. *
  5518. * EXIT (A) = 0 IF NO ERROR.
  5519. * (EC) = ERROR CODE IF (A) .NE. 0.
  5520. *
  5521. * USES T3.
  5522. *
  5523. * CALLS /PRESET/GPS, /PRESET/ICF, /PRESET/RBI.
  5524.  
  5525.  
  5526. POS SUBR ENTRY/EXIT
  5527. RJM /PRESET/RBI READ BLOCK ID
  5528. LDM BIDW
  5529. STM POSA
  5530. SBN 20
  5531. ZJN POS1 IF FIRST SEGMENT
  5532. STM POSA SET PHYSICAL REFERENCE BLOCK ID
  5533. POS1 LDD BL+1
  5534. SHN 4
  5535. ADD EP+1
  5536. STM POSA+2 MOVE BLOCK NUMBER TO PARAMETERS
  5537. SHN -14
  5538. STM POSA+1
  5539. LDD BL
  5540. SHN 4
  5541. ADD WP
  5542. RAM POSA+1
  5543. LDN F0016 LOCATE BLOCK
  5544. RJM /PRESET/ICF ISSUE FUNCTION
  5545. ACN CH
  5546. LDN 3
  5547. OAM POSA,CH OUTPUT THE 3 PARAMETER WORDS
  5548. STD T3 WORDS NOT TRANSFERRED
  5549. FJM *,CH WAIT FOR DATA TO BE TAKEN
  5550. POS2 LDN 0 WAIT FOR END OF OPERATION
  5551. RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS
  5552. MJN POS2 IF COMMAND RETRY
  5553. SHN 21-13
  5554. MJN POS3 IF ERROR
  5555. LDD T3
  5556. ZJN POS5 IF ALL WORDS TRANSFERRED
  5557. LDN /MTX/CMF CHANNEL MALFUNCTION
  5558. UJN POS4 SAVE ERROR CODE
  5559.  
  5560. POS3 LDN /MTX/STE STATUS ERROR
  5561. POS4 STD EC
  5562. POS5 LJM POSX RETURN
  5563.  
  5564.  
  5565. POSA DATA 0 LOCATE BLOCK PARAMETERS
  5566. DATA 0 UPPER 12 BITS OF BLOCK NUMBER
  5567. DATA 0 8/LOWER BITS OF BLOCK NUMBER / 4 UNUSED
  5568. SPACE 4,10
  5569. ERRNG ERLA-* CODE OVERFLOWS HELPER OVERLAY
  5570. ERRPL ERLA+5+ZCTL-ERLB *0CT* OVERFLOWS INTO BUFFER
  5571. CTAB SPACE 4,10
  5572. * CHANNEL TABLE.
  5573.  
  5574.  
  5575. CTAB CHTB CHANNEL TABLE
  5576. OVERLAY (CTS ERRLOG MESSAGE PROCESSOR.),(ERLA+5),P,CEM
  5577. CEM SPACE 4,10
  5578. ** CEM - CTS ERRLOG MESSAGE PROCESSOR.
  5579. * THIS ROUTINE ISSUES A MESSAGE TO THE ERROR LOG.
  5580. *
  5581. * USES T1.
  5582. *
  5583. * CALLS BDM, *CSP*, IDM, MET.
  5584. *
  5585. * MACROS CALL.
  5586.  
  5587.  
  5588. ENTRY CEM
  5589. CEM SUBR ENTRY/EXIT
  5590. RJM BDM BUILD MESSAGE
  5591. LDM CEMA
  5592. ZJN CEM3 IF NO MESSAGE OR SPECIAL PROCESSOR
  5593. SBN MAXM
  5594. MJN CEM5 IF SPECIAL PROCESSOR NEEDED
  5595. CEM1 LCN 0 MOVE MESSAGE
  5596. STD T1
  5597. CEM2 AOD T1
  5598. LDM *,T1
  5599. CEMA EQU *-1
  5600. STM MESF+12,T1
  5601. NJN CEM2 IF NOT END OF MESSAGE
  5602. CEM3 RJM MET MOVE ERPA MESSAGE
  5603. LDN ERLN/10000 ISSUE MESSAGE TO ERROR LOG
  5604. RJM IDM
  5605. LDM CECB
  5606. CEMB LPN 77
  5607. * LPN 0 (MESSAGE ISSUE TO USER DISABLED)
  5608. ZJN CEM4 IF AT MAGNET CP
  5609. LDN CPON/10000 ISSUE MESSAGE TO USER
  5610. RJM IDM
  5611. CEM4 UJP CEMX RETURN
  5612.  
  5613. CEM5 CALL CSP CALL SPECIAL PROCESSOR
  5614. UJN CEM1 GO MOVE MESSAGE
  5615. MES SPACE 4,10
  5616. *** MESSAGE DATA.
  5617. * MESSAGES ARE ISSUED IN THE FOLLOWING FORMAT-
  5618. * CT,C13-0-02,ABCDEF,RD, 753, GS00000000.
  5619. * CT,C13,D0000000000000000000000000000000000000000.
  5620. * CT,C13, 000000000000000000000000,A000000000000.
  5621. * CT,C13,ERPA 00 - 000000000000000000000000000000.
  5622. * CT,C13,F07,I02,B00000123.
  5623. * CT,C13,E00, F=I ,U, TTTTTTTTTTTT.
  5624. *
  5625. * THE FIRST MESSAGE WOULD TELL THE FOLLOWING-
  5626. *
  5627. * 1) CHANNEL 13, EQUIPMENT 0, UNIT 2.
  5628. * 2) VOLUME SERIAL NUMBER IS *ABCDEF*.
  5629. * 3) OPERATION WAS A READ. (ANY OPERATION NOT INVOLVING
  5630. * AN ACTUAL READ OR WRITE WILL BE CALLED A READ.
  5631. * 4) EST ORDINAL *753* IS THE UNIT THAT THE TAPE WAS LAST
  5632. * LABELED ON. THIS WILL ONLY BE AVAILABLE FOR A LABELED
  5633. * TAPE GENERATED UNDER NOS. IT WILL NORMALLY BE ZERO IN
  5634. * ALL OTHER CASES. THIS FIELD DOES NOT REPRESENT THE
  5635. * EST ORDINAL OF THE TAPE UNIT THAT THE TAPE IS
  5636. * CURRENTLY MOUNTED ON.
  5637. * 5) GENERAL STATUS OF TAPE UNIT IN OCTAL.
  5638. *
  5639. * THE SECOND MESSAGE WOULD TELL THE FOLLOWING -
  5640. *
  5641. * 1) CHANNEL 13 - THIS IS REPEATED SO THAT IF ERRORS
  5642. * ARE OCCURING ON MORE THAN ONE TAPE CHANNEL AT THE
  5643. * SAME TIME THE TWO MESSAGES CAN BE ASSOCIATED.
  5644. * 2) THIS IS THE FIRST 20 SENSE BYTES IN HEXADECIMAL.
  5645. *
  5646. * THE THIRD MESSAGE WOULD TELL THE FOLLOWING -
  5647. *
  5648. * 1) CHANNEL 13, SAME AS ABOVE.
  5649. * 2) THIS IS THE LAST 12 SENSE BYTES IN HEXADECIMAL
  5650. * FOLLOWED BY ADAPTER STATUS. ADAPTER STATUS IS
  5651. * DISPLAYED IN HEXADECIMAL AND IS THE LAST 48 BITS
  5652. * OF DETAILED STATUS.
  5653. *
  5654. * THE FOURTH MESSAGE WOULD TELL THE FOLLOWING -
  5655. *
  5656. * 1) CHANNEL 13, SAME AS ABOVE.
  5657. * 2) THE ERROR RECOVERY PROCEDURE ACTION CODE, FROM SENSE
  5658. * BYTE 3, FOLLOWED BY THE TEXT MESSAGE FOR THE ERPA
  5659. * CODE.
  5660. *
  5661. * THE FIFTH MESSAGE WOULD TELL THE FOLLOWING -
  5662. *
  5663. * 1) CHANNEL 13, SAME AS ABOVE.
  5664. * 2) THE ERROR OCCURED ON A SOFTWARE FUNCTION OF 7.
  5665. * 3) ERROR ITERATION.
  5666. * 4) BLOCK NUMBER ERROR OCCURRED ON WAS 123. THIS IS THE
  5667. * NOS BLOCK NUMBER, NOT THE PHYSICAL BLOCK ID USED BY
  5668. * THE CARTRIDGE TAPE SUBSYSTEM. THE FIRST DATA BLOCK
  5669. * AFTER A LABEL IS NOS BLOCK 0.
  5670. *
  5671. * THE SIXTH MESSAGE WOULD TELL THE FOLLOWING -
  5672. *
  5673. * 1) CHANNEL 13 - SAME AS ABOVE.
  5674. * 2) NOS ERROR CODE.
  5675. * 3) THE TAPE FORMAT IS I.
  5676. * 4) THE ERROR IS UNRECOVERED.
  5677. * 5) TTT CONTAINS ADDTIONAL STATUS.
  5678.  
  5679. **** MESSAGE DATA. NOTE THAT MESSAGES LONGER THAN 40 CHARACTERS
  5680. * WRAP TO THE NEXT LINE IF DISPLAYED WITH DSDI. THE START
  5681. * OF MESSAGES SHOULD BE AT EQUAL INTERVALS SO *SCS* CAN SAVE
  5682. * REPETITIVE INFORMATION.
  5683.  
  5684. MESA DATA H*CT,C00-0-00, ,RD, , GS00000000.*
  5685. CON 0
  5686. BSS 26D+MESA-*
  5687. MESB DATA H*CT,C00,D .*
  5688. CON 0
  5689. MESC DATA H*CT,C00, ,A . *
  5690. CON 0
  5691. MESD DATA H*CT,C00,ERPA , *
  5692. CON 0
  5693. BSS 26D+MESD-*
  5694. MESE DATA H*CT,C00,F00,I00,B00000000.*
  5695. CON 0
  5696. BSS 26D+MESE-*
  5697. MESF DATA C*CT,C00,E00, F=I ,I, *
  5698. MESL EQU MESF+MESB-MESA+1
  5699. TERM SPACE 4,10
  5700. TERM INDEX
  5701. INDEX 0,(=C*REC.*)
  5702. INDEX /MTX/BTL,(=C*BTL.*)
  5703. INDEX /MTX/BNE,BNEM
  5704. INDEX /MTX/RDR,WEOM
  5705. INDEX /MTX/FRJ,FRJM
  5706. INDEX /MTX/WEO,WEOM
  5707. INDEX /MTX/CRJ,CRJM
  5708. INDEX /MTX/STE,(=C*STE.*)
  5709. INDEX /MTX/CMF,(=C*CMF.*)
  5710. INDEX /MTX/MDW,(=C*MDW.*)
  5711. INDEX /MTX/BFR,(=C*BFR.*)
  5712. INDEX /MTX/BFW,(=C*BFW.*)
  5713. INDEX /MTX/MERC
  5714. ****
  5715. SPACE 4,10
  5716. ** COMMON DECKS.
  5717.  
  5718.  
  5719. *CALL COMPC2D
  5720. SPACE 4,10
  5721. ** ERRORS REQUIRING ADDITIONAL OVERLAY TO BE LOADED.
  5722.  
  5723.  
  5724. BEGM BSS 0
  5725. LOC 1
  5726. FRJM BSS 1 FUNCTION REJECT
  5727. WEOM BSS 1 NO END OF OPERATION
  5728. CRJM BSS 1 CONNECT REJECT
  5729. BNEM BSS 1 BLOCK SEQUENCE ERROR
  5730. MAXM BSS 1 MAXIMUM SPECIAL ERRORS
  5731.  
  5732. ORG BEGM
  5733. IDM SPACE 4,10
  5734. ** IDM - ISSUE DAYFILE MESSAGES.
  5735. * THIS ROUTINE ISSUES THE MESSAGE LINES DEFINED IN TABLE
  5736. * *IDMB* TO THE DAYFILE.
  5737. *
  5738. * ENTRY (A) = MESSAGE DESTINATION CODE
  5739. *
  5740. * USES T8.
  5741. *
  5742. * CALLS DFM.
  5743.  
  5744.  
  5745. IDM SUBR ENTRY/EXIT
  5746. LMC LMCI SET MESSAGE DESTINATION CODE
  5747. STM IDMA
  5748. LDN 0 INITIALIZE MESSAGE INDEX
  5749. STD T8
  5750.  
  5751. * LOOP UNTIL ALL MESSAGE LINES ARE ISSUED TO THE DAYFILE.
  5752.  
  5753. IDM1 LDM IDMB,T8 GET NEXT MESSAGE POINTER
  5754. ZJN IDMX IF ALL MESSAGES ISSUED
  5755. LMC ** ADD MESSAGE DESTINATION
  5756. IDMA EQU *-2 (MESSAGE DESTINATION CODE)
  5757. RJM DFM ISSUE DAYFILE MESSAGE
  5758. AOD T8 ADVANCE MESSAGE INDEX
  5759. UJN IDM1 ISSUE NEXT MESSAGE LINE
  5760.  
  5761.  
  5762. * TABLE OF MESSAGE LINE POINTERS FOR 6 LINES.
  5763.  
  5764. IDMB BSS 0
  5765. LOC 0
  5766. CON MESA LINE 1
  5767. CON MESB LINE 2
  5768. CON MESC LINE 3
  5769. CON MESD LINE 4
  5770. CON MESE LINE 5
  5771. CON MESF LINE 6
  5772. CON 0 TERMINATOR
  5773. LOC *O
  5774. MET SPACE 4,15
  5775. ** MET - MOVE ERPA TEXT MESSAGE.
  5776. *
  5777. * USES T1, T2.
  5778. *
  5779. * CALLS ERP.
  5780. *
  5781. * MACROS CALL.
  5782.  
  5783.  
  5784. MET2 LDC 2R.
  5785. STM MESD+7 SET END OF LINE WHEN NO MESSAGE
  5786.  
  5787. MET SUBR ENTRY/EXIT
  5788. CALL ERP LOAD ERPA TEXT MESSAGES
  5789. LDM MESD+6
  5790. LMC 2R
  5791. ZJN MET2 IF NO ERPA CODE
  5792. LDM CTSD+2
  5793. SHN -4
  5794. SBN 0#21
  5795. MJN MET2 IF NO ENGLISH TEXT
  5796. STD T1 INDEX INTO TABLE OF ADDRESSES
  5797. LDM /ERP/ERPA,T1
  5798. ZJN MET2 IF NO TEXT
  5799. STD T1 START OF ERPA TEXT
  5800. LDC MESD+10
  5801. STD T2 DESTINATION FOR ERPA TEXT
  5802. MET1 LDI T1
  5803. STI T2
  5804. ZJN METX IF ALL TEXT MOVED
  5805. AOD T1
  5806. AOD T2
  5807. UJN MET1 CONTINUE MOVING TEXT
  5808. TITLE OVERLAY AREA.
  5809. CDA SPACE 4,10
  5810. ** CDA - CONVERT DATA (4 DIGITS).
  5811. *
  5812. * ENTRY (A, 17 - 12) = ADDRESS WHERE DATA CONTAINED.
  5813. * (A, 11 - 0) = ADDRESS WHERE TO STORE RESULT.
  5814. *
  5815. * USES T2, T3.
  5816. *
  5817. * CALLS C2D.
  5818.  
  5819.  
  5820. CDA SUBR ENTRY/EXIT
  5821. STD T3 SAVE DESTINATION ADDRESS
  5822. SHN -14
  5823. STD T2 SAVE DATA ADDRESS
  5824. LDI T2 CONVERT FIRST 2 DIGITS
  5825. SHN -6
  5826. RJM C2D
  5827. STI T3
  5828. LDI T2 CONVERT SECOND 2 DIGITS
  5829. RJM C2D
  5830. STM 1,T3
  5831. UJN CDAX RETURN
  5832. ERRNG ERLB-* IF OVERFLOW INTO OVERLAY AREA
  5833.  
  5834.  
  5835. * NOTE - THE FOLLOWING CODE MAY BE OVERLAID IF THE SPECIAL
  5836. * ERROR MESSAGES OVERLAY IS REQUIRED OR IF AN ERPA CODE IS
  5837. * PRESENT.
  5838. CDN SPACE 4,15
  5839. ** CDN - CONVERT DATA.
  5840. * THIS ROUTINE CONVERTS 12-BIT HEX DATA TO DISPLAY CODE.
  5841. *
  5842. * ENTRY (A, 21 - 14 = 8-BIT BYTES TO CONVERT.
  5843. * (A, 13 - 0) = SOURCE OF DATA TO CONVERT.
  5844. * (T1) = STARTING NIBBLE POSITION (0, 1, OR 2).
  5845. * (CN+3) = DESTINATION OF CONVERTED DATA.
  5846. *
  5847. * EXIT (CN+3) = UPDATED TO DESTINATION FOR NEXT CONVERTED
  5848. * BYTE.
  5849. *
  5850. * USES CN+1, CN+2.
  5851. *
  5852. * CALLS CNN.
  5853.  
  5854.  
  5855. CDN SUBR ENTRY/EXIT
  5856. STD CN+1 STARTING ADDRESS OF DATA TO CONVERT
  5857. SHN -14
  5858. STD CN+2 8-BIT BYTES TO CONVERT
  5859. CDN1 RJM CNN CONVERT NIBBLE
  5860. SHN 6
  5861. STI CN+3
  5862. RJM CNN CONVERT NIBBLE
  5863. RAI CN+3
  5864. AOD CN+3 UPDATE POINTER TO DESTINATION ADDRESS
  5865. SOD CN+2
  5866. NJN CDN1 IF MORE BYTES TO CONVERT
  5867. UJN CDNX RETURN
  5868. CNN SPACE 5,15
  5869. ** CNN - CONVERT NIBBLE.
  5870. *
  5871. * ENTRY (T1) = NIBBLE TO CONVERT (0, 1, OR 2).
  5872. * (CN+1) = ADDRESS OF DATA TO CONVERT.
  5873. *
  5874. * EXIT (A) = DISPLAY CODE FOR NIBBLE.
  5875. * (CN+1) = UPDATED TO ADDRESS OF NEXT BYTE TO CONVERT.
  5876. * (T1) = UPDATED TO POSITION OF NEXT NIBBLE.
  5877. *
  5878. * USES T1, T2.
  5879.  
  5880.  
  5881. CNN SUBR ENTRY/EXIT
  5882. LDM CNNB,T1
  5883. STM CNNA SET SHIFT INSTRUCTION
  5884. LDI CN+1
  5885. SHN 0
  5886. CNNA EQU *-1 SHN -10, SHN -4, OR SHN 0
  5887. LPN 17
  5888. SBN 11
  5889. ZJN CNN1 IF 9
  5890. PJN CNN2 IF A - F
  5891. CNN1 ADN 1R0+11 0 - 9
  5892. CNN2 STD T2
  5893. AOD T1 UPDATE NIBBLE POINTER
  5894. SBN 3
  5895. NJN CNN3 IF NO WRAP
  5896. STD T1
  5897. AOD CN+1 ADDRESS OF DATA TO CONVERT
  5898. CNN3 LDD T2
  5899. UJN CNNX RETURN
  5900.  
  5901.  
  5902. CNNB CON 1067 SHN -10
  5903. CON 1073 SHN -4
  5904. CON 1000 SHN 0
  5905. RUW SPACE 4,10
  5906. ** RUW - READ UNIT DESCRIPTOR TABLE WORD.
  5907. * USED TO READ UDT WHEN POSSIBLY NOT AT MAGNET CP.
  5908. *
  5909. * ENTRY (A) = UDT WORD.
  5910. *
  5911. * EXIT (CN - CN+4) = WORD READ.
  5912. *
  5913. * USES T1, CM - CM+4, CN - CN+4.
  5914. *
  5915. * MACROS DELAY, MONITOR, PAUSE.
  5916.  
  5917.  
  5918. RUW2 LDD MA
  5919. CRD CN
  5920.  
  5921. RUW SUBR ENTRY/EXIT
  5922. STD T1
  5923. RUW1 LDM UADA
  5924. ADD T1
  5925. STD CM+4
  5926. LDD HN REQUEST 1 WORD
  5927. STD CM+3
  5928. LDN 0 REQUEST READ FROM *MAGNET*
  5929. STD CM+1
  5930. LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
  5931. STD CM+2
  5932. MONITOR TDAM
  5933. LDD CM+1
  5934. LMN 1
  5935. NJN RUW2 IF MOVE NOT IN PROGRESS
  5936. PAUSE NE
  5937. DELAY
  5938. UJN RUW1 REISSUE REQUEST
  5939. BDM SPACE 4,15
  5940. ** BDM - BUILD MESSAGE.
  5941. * THIS ROUTINE BUILDS THE ERROR LOG MESSAGES. (EXCEPT THE
  5942. * DESCRIPTIVE MESSAGE IN THE 6TH LINE AND THE ERPA TEXT
  5943. * MESSAGE.
  5944. *
  5945. * ENTRY (EC) = ERROR CODE.
  5946. * (EI) = RETRY COUNT.
  5947. *
  5948. * USES T1, CM - CM+4.
  5949. *
  5950. * CALLS CDA, CDN, C2D, MCH, RUW, SCS.
  5951. *
  5952. * MACROS CHTE, SFA.
  5953.  
  5954.  
  5955. BDM SUBR ENTRY/EXIT
  5956. LDC CTAB MODIFY CHANNELS
  5957. RJM MCH
  5958. LDM //LOV
  5959. STM CEM SET RETURN ADDRESS
  5960. LDM TERM,EC
  5961. STM CEMA SAVE TABLE ENTRY
  5962.  
  5963. * MESSAGE BUILD.
  5964.  
  5965. SFA EST,EO SET DEVICE TYPE IN MESSAGE LINES
  5966. ADK EQDE
  5967. CRD CM
  5968. LDD CM+3
  5969. RJM SCS SET CHARACTERS
  5970. CHTE * SET CHANNEL NUMBER IN MESSAGE LINES
  5971. LDN CH
  5972. RJM C2D
  5973. ADC 2*10000
  5974. RJM SCS
  5975. LDD CM+4 SET UNIT NUMBER
  5976. SHN -3
  5977. LPN 1
  5978. RAM MESA+4
  5979. LDD CM+4
  5980. LPN 7
  5981. SHN 6
  5982. RAM MESA+5
  5983. LDN /MTX/UVSN READ UP VSN
  5984. RJM RUW
  5985. LDD CN
  5986. ZJN BDM1 IF VSN NOT SPECIFIED
  5987. STM MESA+6
  5988. LDD CN+1
  5989. STM MESA+7
  5990. LDD CN+2
  5991. STM MESA+10
  5992. BDM1 LDD FN
  5993. SBN /MTX/WTF
  5994. MJN BDM2 IF NOT WRITE OPERATION
  5995. LDN 1RW-1RR CHANGE *RD* TO *WD*
  5996. RAM MESA+11
  5997. BDM2 LDN /MTX/UGNU GET EST ORDINAL WRITTEN ON
  5998. RJM RUW
  5999. LDD CN+1
  6000. ZJN BDM3 IF EST NOT AVAILABLE
  6001. SHN -6 CONVERT UPPER DIGIT OF EST ORDINAL
  6002. ADC 2R 0
  6003. STM MESA+13
  6004. LDD CN+1 CONVERT LOWER TWO DIGITS OF EST ORDINAL
  6005. RJM C2D
  6006. STM MESA+14
  6007.  
  6008. * MOVE GENERAL STATUS.
  6009.  
  6010. BDM3 LDD DS
  6011. SHN -6
  6012. RJM C2D
  6013. STM MESA+17
  6014. LDD DS
  6015. RJM C2D
  6016. STM MESA+20
  6017. LDM CTGS
  6018. SHN -6
  6019. RJM C2D
  6020. STM MESA+21
  6021. LDM CTGS
  6022. RJM C2D
  6023. STM MESA+22
  6024. LDD DS
  6025. SHN 21-13
  6026. PJP BDM5 IF ALERT NOT SET
  6027. LDM CTGS
  6028. SHN 21-12
  6029. MJN BDM4 IF UNIT CHECK
  6030. LDC MESC+21
  6031. STD CN+3 DESTINATION ADDRESS
  6032. UJN BDM4.1 SAVE CCC STATUS
  6033.  
  6034. * MOVE DETAILED STATUS.
  6035.  
  6036. BDM4 LDN 0
  6037. STD T1 FIRST NIBBLE
  6038. LDC MESB+4
  6039. STD CN+3 DESTINATION ADDRESS
  6040. LDC 20D*10000+CTSD
  6041. RJM CDN CONVERT FIRST 20 SENSE BYTES
  6042. LDC MESC+4
  6043. STD CN+3 DESTINATION ADDRESS
  6044. LDC 12D*10000+CTSD+15
  6045. RJM CDN CONVERT LAST 12 SENSE BYTES
  6046. AOD CN+3 DESTINATION ADDRESS
  6047. BDM4.1 LDN 0
  6048. STD T1 FIRST NIBBLE
  6049. LDC 6*10000+CTSD+26
  6050. RJM CDN CONVERT ADAPTER STATUS
  6051. LDM MESB+7
  6052. STM MESD+6 SET ERPA CODE
  6053. UJN BDM6 DO CONVERSION FOR LINE 5
  6054.  
  6055. BDM5 LDC 2R. SHORTEN MESSAGE LINES WHEN NO STATUS
  6056. STM MESB+7
  6057. STM MESC+7
  6058. LDN 0
  6059. STM MESB+10
  6060. STM MESC+10
  6061.  
  6062. * CONVERSION FOR LINE 5.
  6063.  
  6064. BDM6 LDD FN CONVERT SOFTWARE FUNCTION NUMBER
  6065. RJM C2D
  6066. STM MESE+4
  6067. LDD EI CONVERT ERROR ITERATION NUMBER
  6068. RJM C2D
  6069. STM MESE+6
  6070. LDC BL*10000+MESE+10 CONVERT BLOCK NUMBER
  6071. RJM CDA
  6072. LDC BL*10000+10000+MESE+12 CONVERT BLOCK NUMBER
  6073. RJM CDA
  6074.  
  6075. * CONVERSION FOR LINE 6.
  6076.  
  6077. LDD EC SET ERROR CODE
  6078. RJM C2D
  6079. STM MESF+4
  6080. LDD FM SET FORMAT
  6081. SHN -6
  6082. STD T1
  6083. LDM BDMA,T1 SAVE FORMAT
  6084. STM MESF+7
  6085. LDD EC
  6086. NJN BDM7 IF NOT RECOVERABLE ERROR
  6087. LDN 1RR-1RI
  6088. UJN BDM8 INDICATE RECOVERABLE MESSAGE
  6089.  
  6090. BDM7 LDD EI
  6091. SBN 2
  6092. MJN BDM9 IF NOT UNRECOVERABLE
  6093. LDN 1RU-1RI INDICATE UNRECOVERABLE MESSAGE
  6094. BDM8 RAM MESF+10
  6095. BDM9 LDD SP CHECK ERROR MESSAGE PROCESSING OPTION
  6096. SHN 21-7
  6097. PJN BDM10 IF USER DAYFILE MESSAGES ARE DISABLED
  6098. LDD EC
  6099. ZJN BDM11 IF RECOVERED MESSAGE
  6100. LDD EI
  6101. ZJN BDM11 IF FIRST ITERATION
  6102. BDM10 LDC LPNI+0 DISABLE MESSAGE ISSUE
  6103. STM CEMB
  6104. BDM11 LJM BDMX RETURN
  6105.  
  6106.  
  6107. BDMA CON 2RI I FORMAT
  6108. CON 2RSI SI FORMAT
  6109. CON 2RF F FORMAT
  6110. CON 2RS S FORMAT
  6111. CON 2RL L FORMAT
  6112. CON 2RLI LI FORMAT
  6113. SCS SPACE 4,10
  6114. ** SCS - STORE CHARACTERS IN MESSAGE LINES.
  6115. *
  6116. * ENTRY (A, 17 - 12) = MESSAGE FIELD INDEX.
  6117. * (A, 11 - 0) = CHARACTERS.
  6118. *
  6119. * USES T1.
  6120.  
  6121.  
  6122. SCS SUBR ENTRY/EXIT
  6123. STD T0 SAVE CHARACTERS
  6124. SHN -14
  6125. ADC MESA
  6126. STD T1
  6127. SCS1 LDD T0
  6128. STI T1
  6129. LDN MESB-MESA
  6130. RAD T1
  6131. ADC -MESL
  6132. MJN SCS1 LOOP
  6133. UJN SCSX RETURN
  6134. CTAB SPACE 4,10
  6135. * CHANNEL TABLE.
  6136.  
  6137.  
  6138. CTAB CHTB CHANNEL TABLE
  6139.  
  6140. ERRNG 2*473+ERLA+5-* ERROR PROCESSOR OVERFLOW
  6141. OVERLAY (CTS SPECIAL MESSAGE PROCESSOR.),(ERLB+5),P,CSP
  6142. CSP SPACE 4,10
  6143. ** CSP - CTS ERRLOG MESSAGE SPECIAL PROCESSOR.
  6144. * THIS OVERLAY IS CALLED FROM *CEM* FOR ERRORS WHICH
  6145. * REQUIRE ADDITIONAL PROCESSING. SEE TABLE IN *CEM* FOR
  6146. * LIST OF ERRORS WHICH REQUIRE THIS OVERLAY.
  6147. *
  6148. * ENTRY (/CEM/CEMA) = INDEX TO PROCESSOR.
  6149. *
  6150. * EXIT (/CEM/CEMA) = MESSAGE ADDRESS.
  6151. *
  6152. * CALLS BNP, CKR, ECN, FRE, FSC.
  6153.  
  6154.  
  6155. ENTRY CSP
  6156. CSP SUBR ENTRY/EXIT
  6157. LDM /CEM/CEMA GET PROCESSOR INDEX
  6158. STD T1
  6159. LDM SPRI,T1
  6160. STM CSPA
  6161. RJM * PROCESS ERROR
  6162. CSPA EQU *-1
  6163. STM /CEM/CEMA SET MESSAGE ADDRESS
  6164. UJN CSPX RETURN
  6165.  
  6166. TITLE SPECIAL PROCESSORS.
  6167. SPRI SPACE 4,10
  6168. SPRI INDEX 0,//HNG
  6169. INDEX /CEM/FRJM,FRE
  6170. INDEX /CEM/WEOM,CKR
  6171. INDEX /CEM/CRJM,ECN
  6172. INDEX /CEM/BNEM,BNP
  6173. INDEX /CEM/MAXM
  6174. BNP SPACE 4,15
  6175. ** BNP - BLOCK NUMBER PROCESSOR.
  6176. *
  6177. * ENTRY (BNEU) = ACTUAL BYTE LENGTH UPPER (LI FORMAT).
  6178. * (BNEI) = ACTUAL BYTE LENGTH LOWER.
  6179. * (BNEI+1 - BNEI+2) = ACTUAL BLOCK NUMBER.
  6180. *
  6181. * EXIT (A) = MESSAGE ADDRESS.
  6182. *
  6183. * USES CM.
  6184. *
  6185. * CALLS /CEM/CDA, /CEM/C2D.
  6186.  
  6187.  
  6188. BNP SUBR ENTRY/EXIT
  6189. LDD FM
  6190. SHN -6
  6191. LMN /MTX/TFLI
  6192. NJN BNP1 IF NOT LI FORMAT
  6193. LDM BNEU
  6194. RJM /CEM/C2D CONVERT 2 DIGITS
  6195. STM BNPA+1 SAVE UPPER 2 OF 6 DIGITS OF BLOCK LENGTH
  6196. BNP1 LDM BNEI
  6197. STD CM
  6198. LDC CM*10000+BNPA+2 CONVERT EXPECTED LENGTH
  6199. RJM /CEM/CDA
  6200. LDM BNEI+1
  6201. STD CM
  6202. LDC CM*10000+BNPA+5
  6203. RJM /CEM/CDA CONVERT BLOCK NUMBER
  6204. LDM BNEI+2
  6205. STD CM
  6206. LDC CM*10000+BNPA+7
  6207. RJM /CEM/CDA
  6208. LDC BNPA SET MESSAGE ADDRESS
  6209. UJP BNPX RETURN
  6210.  
  6211.  
  6212. BNPA DATA C* L000000,B00000000.*
  6213. CKR SPACE 4,10
  6214. ** CKR - CHECK IF READY.
  6215. * CLEARS LAST OPERATION WRITE FLAGS.
  6216. *
  6217. * EXIT (A) = MESSAGE ADDRESS.
  6218.  
  6219.  
  6220. CKR3 LDC CKRC SET READY DROP MESSAGE
  6221.  
  6222. CKR SUBR ENTRY/EXIT
  6223. LDD UP CLEAR LAST OPERATION WRITE AND BLANK TAPE
  6224. SCN 24
  6225. STD UP
  6226. LDD EC CHECK FOR READY DROP ERROR
  6227. SBN /MTX/RDR
  6228. ZJN CKR3 IF READY DROP ERROR
  6229. LDM /PRESET/GPSB
  6230. ZJN CKR1 IF WAIT EOP
  6231. LDD DS
  6232. LPN 2
  6233. ZJN CKR1 IF NOT BUSY
  6234. LDC CKRB SET UNIT BUSY MESSAGE
  6235. UJN CKRX RETURN
  6236.  
  6237. CKR1 LDC CKRA SET NO EOP MESSAGE
  6238. UJN CKRX RETURN
  6239.  
  6240.  
  6241. CKRA DATA C*NO EOP.*
  6242. CKRB DATA C*BUSY.*
  6243. CKRC DATA C*NOT READY.*
  6244. ECN SPACE 4,10
  6245. ** ECN - ERROR ON CONNECT.
  6246. * MESSAGE IS ALTERED IF UNIT NOT TURNED OFF.
  6247. *
  6248. * EXIT (A) = MESSAGE ADDRESS.
  6249. *
  6250. * USES CM - CM+4.
  6251. *
  6252. * MACROS SFA.
  6253.  
  6254.  
  6255. ECN2 LDC ECNA EXIT WITH MESSAGE ADDRESS
  6256.  
  6257. ECN SUBR ENTRY/EXIT
  6258. SFA EST,EO
  6259. ADK EQDE
  6260. CRD CM
  6261. LDD CM
  6262. LPN 3
  6263. LMN /CPS/DWES
  6264. ZJN ECN2 IF UNIT DOWNED
  6265. LDN 0 ALTER MESSAGE
  6266. STM ECNA+5
  6267. UJN ECN2 RETURN
  6268.  
  6269.  
  6270. ECNA DATA C*CON. REJ. DOWN.*
  6271. FRE SPACE 4,10
  6272. ** FRE - FUNCTION REJECT ERROR.
  6273. * DIAGNOSES ERROR BY GIVING FUNCTION AND THE ADDRESS OF
  6274. * THE ROUTINE THAT INITIATED THE CALL.
  6275. *
  6276. * EXIT (A) = MESSAGE ADDRESS.
  6277. *
  6278. * USES CM.
  6279. *
  6280. * CALLS /CEM/CDA.
  6281.  
  6282.  
  6283. FRE SUBR ENTRY/EXIT
  6284. LDM /PRESET/ICF GET ADDRESS OF CALLER
  6285. STD CM
  6286. LDC CM*10000+FREA+4
  6287. RJM /CEM/CDA
  6288. LDM /PRESET/ICFA CONVERT FUNCTION
  6289. STD CM
  6290. LDC CM*10000+FREA+1
  6291. RJM /CEM/CDA
  6292. LDC FREA SET MESSAGE ADDRESS
  6293. UJN FREX RETURN
  6294.  
  6295.  
  6296. FREA DATA C*FN0000,P0000.*
  6297. ERRNG 1*473+ERLB+5-* ERROR PROCESSOR OVERFLOW
  6298. OVERLAY (DROP PPU PROCESSOR.),,NOPRS,DPP
  6299. DPP SPACE 4,10
  6300. ** DPP - DROP CHANNEL AND PPU.
  6301. * ALSO HANDLES ISSUE OF MESSAGE FOR ANY FUNCTION REJECTS
  6302. * THAT COULD NOT BE DIAGNOSED WHEN THEY OCCURRED. IT IS NOT
  6303. * ALWAYS POSSIBLE TO LOAD AN OVERLAY AND DIAGNOSE A FUNCTION
  6304. * REJECT AND STILL MAINTAIN THE CONTROLLER OPTIONS AETC.
  6305. *
  6306. * CALLS DME, *EMM*, MCH.
  6307. *
  6308. * MACROS CALL, CHTE, DCHAN, MONITOR.
  6309.  
  6310.  
  6311. ENTRY DPP
  6312. DPP SUBR ENTRY/EXIT
  6313. LDM HNG CHECK FOR *HNG* CALL
  6314. ZJN DPP0 IF NORMAL DROP
  6315. STM CM+4 SET (OR+4) = *HNG* CALLER
  6316. MONITOR HNGM HANG PP
  6317. DPP0 LDC CTAB MODIFY CHANNELS
  6318. RJM MCH
  6319. LDC DPP1 SET ADDRESS TO EXIT TO
  6320. STM //LOV
  6321. UJN DPPX RETURN
  6322.  
  6323. DPP1 LDD HP
  6324. SHN 21-7
  6325. MJN DPP2 IF CTS
  6326. LDM //FCNC
  6327. NJN DPP2 IF NO DELAYED REQUEST
  6328. LDM //.OVLR+3
  6329. NJN DPP2 IF NO B.C. RESTART
  6330. LDD DS SET STATUS
  6331. STM //STER
  6332. LDN /MTX/BCR
  6333. STD EC
  6334. CALL EMM CALL ERROR MESSAGE PROCESSOR
  6335. DPP2 LDD IA RESET INPUT REGISTER
  6336. CRD IR
  6337. LDD RA
  6338. SHN 6
  6339. ADD IR+4
  6340. ADK /MTX/CPST GET PROCESSOR STATUS
  6341. CRD CM
  6342. LDM UADA SET NEXT UDT TO PROCESS
  6343. STD CM+4
  6344. LDD CM
  6345. LPC 3777 CLEAR *1MT* ACTIVE
  6346. STD CM
  6347. LDD RA
  6348. SHN 6
  6349. ADD IR+4
  6350. ADK /MTX/CPST UPDATE PROCESSOR STATUS
  6351. CWD CM
  6352. CHTE *
  6353. LDN CH DROP CHANNEL
  6354. DCHAN
  6355. MONITOR DPPM DROP PPU
  6356. LJM PPR EXIT TO PP RESIDENT
  6357.  
  6358.  
  6359. CTAB CHTB CHANNEL TABLE
  6360. OVERLAY (CONTROL POINT/CODED PRESET.),(ERLA+5),P,CPP
  6361. PRS SPACE 4,10
  6362. ** PRS - CONTROL POINT/CODED PRESET.
  6363. *
  6364. * USES BT, FM, CM - CM+4, T1 - T5.
  6365. *
  6366. * CALLS CCD, UAD.
  6367.  
  6368.  
  6369. PRS SUBR ENTRY/EXIT
  6370. LDM //LOV SAVE ADDRESS TO EXIT AT
  6371. STM CPP
  6372. LDC PRS1 SET ADDRESS TO EXIT TO
  6373. STM //LOV
  6374. UJN PRSX RETURN
  6375.  
  6376. PRS1 RJM CCD CHECK IF CODED
  6377. LDC LDNI+1 SET ACTIVITY PROCESSED
  6378. STM PNRE
  6379. IFEQ TE,1 IF TRACE ENABLED
  6380. RJM TRB SAVE TRACE INFORMATION IN CM
  6381. ENDIF
  6382. LDM CPP
  6383. LMC PNRI
  6384. NJN CPPX IF NOT CALLED FROM MAIN PROGRAM
  6385. LDD BT SET ENTRY ADDRESS
  6386. STM CPP
  6387. LDD SC
  6388. LPN 20
  6389. NJN CPP1 IF CP CHANGE
  6390. STD BT PRESET BLOCKS TRANSFERRED
  6391. * LJM //LOVX RETURN (TO CALLER OF *LOV*)
  6392. CPP SPACE 4,20
  6393. ** CPP - CONTROL POINT OPERATION PRESET.
  6394. *
  6395. * ENTRY (CN) = ADDRESS OF LIST OF INSTRUCTIONS TO MODIFY.
  6396. * (CN+4) = RELATIVE ADDRESS OF WORD IN FET (IN OR OUT).
  6397. * THIS WORD WILL BE READ UP AND VALIDATED.
  6398. *
  6399. * EXIT CHANGED TO CORRECT CP.
  6400. * (EI) = 0, ERROR ITERATION PRESET.
  6401. * (CN - CN+4) = SELECTED FET WORD VALIDATED. (IF ERROR
  6402. * EXITS TO *BAE*.)
  6403. * (LNUM) = LEVEL NUMBER FOR OPERATION.
  6404. * (FETO) = FET OPTIONS.
  6405. * (CIOE) = EXTERNAL CIO CODE.
  6406. *
  6407. * USES BT, T8, T1 - T7, CM - CM+4, CN - CN+4.
  6408. *
  6409. * CALLS CAL, HNG, INM, SFP, UAD.
  6410. *
  6411. * MACROS MONITOR.
  6412.  
  6413.  
  6414. ENTRY CPP
  6415.  
  6416. CPP SUBR ENTRY/EXIT
  6417. CPP1 LDD CN SAVE ADDRESS MODIFICATION POINTERS
  6418. STM CPPB
  6419. LDD CN+4
  6420. STM CPPC
  6421. RJM UAD READ UDT FET INFORMATION
  6422. ADN /MTX/UCIA FET ADDRESS
  6423. CRD T6-3
  6424. ADN /MTX/UCIC-/MTX/UCIA FIRST, LIMIT, AND FL
  6425. CRD T1
  6426. ADN /MTX/UVRI-/MTX/UCIC GET EJT ORDINAL
  6427. CRD CN
  6428. LDN 0 PRESET BLOCKS TRANSFERRED COUNT
  6429. STD BT
  6430. LDD CN SAVE EJT ORDINAL
  6431. STD T8
  6432. SFA EJT SET EJT ADDRESS
  6433. ADK JSNE
  6434. CRD CM GET JOB STATUS
  6435. ADK SCHE-JSNE
  6436. CRD CN GET CP NUMBER
  6437. LDD CM+4
  6438. LPC 176
  6439. LMN /EJT/EXJS*2
  6440. NJN CPP2 IF JOB ROLLED OR ROLLING OUT
  6441. LDD CN+3 SET CP NUMBER
  6442. ADK /CPS/RCMS+/CPS/ALCS SET MOVE REJECT AND ALTERNATE CP
  6443. STD CM+1
  6444. MONITOR CCAM SET ACCESS TO USER CP
  6445. LDD CM+1
  6446. NJN CPP2 IF CHANGE NOT MADE
  6447. AOM //CECB SET CP CHANGED FLAG
  6448. LDD CP
  6449. ADN TFSW VERIFY JOB EJT ORDINAL
  6450. CRD CM
  6451. LDD CM
  6452. LMD T8
  6453. ZJN CPP3 IF CORRECT JOB
  6454. CPP2 LDN /MTX/RJB REQUEUE ON JOB ROLLED OUT
  6455. LJM RET5 EXIT
  6456.  
  6457. CPP3 LDD FL
  6458. SBD T1
  6459. PJN CPP6 IF NO FL REDUCTION
  6460.  
  6461. * RECHECK BUFFER PARAMTERS.
  6462.  
  6463. LDD .FE
  6464. SHN 6
  6465. ADD RA
  6466. SHN 6
  6467. ADD .FE+1
  6468. ADN 1
  6469. CRD CM
  6470. LDD CM+3
  6471. SHN -6
  6472. ADD .FE+1
  6473. ADN 4
  6474. SHN 6
  6475. ADD .FE
  6476. SHN 14
  6477. SHN -6
  6478. SBD FL
  6479. PJN CPP5 IF FET LWA .GT FL
  6480. LDD .LM
  6481. SHN 14
  6482. LMD .LM+1
  6483. SBN 1
  6484. SHN -6
  6485. SBD FL
  6486. MJN CPP6 IF LIMIT .LT FL
  6487. CPP5 LDN /MTX/BAE BUFFER ARGUMENT ERROR
  6488. LJM RET3 RETURN ERROR CODE
  6489.  
  6490. CPP6 RJM CAL CALCULATE PARAMETERS
  6491. LDC * MODIFY INSTRUCTIONS
  6492. CPPB EQU *-1
  6493. RJM INM
  6494. LDC *
  6495. CPPC EQU *-1
  6496. ZJN CPP7 IF NO FET POINTER CHECK
  6497. RJM SFP SET FET POINTER
  6498. NJN CPP5 IF BAD FET POINTER
  6499. CPP7 LDD WC
  6500. ADC -1001
  6501. PJN CPP8 IF INCORRECT WORD COUNT
  6502. LJM CPPX RETURN
  6503.  
  6504. CPP8 RJM HNG HANG PP
  6505. TITLE SUBROUTINES.
  6506. CAL SPACE 4,15
  6507. ** CAL - CALCULATE PARAMETERS.
  6508. *
  6509. * ENTRY (T1 - T5) = UCIC FROM UDT.
  6510. * (.FT - .FT+1) = FIRST.
  6511. * (.LM - .LM+1) = LIMIT.
  6512. * (.FE - .FE+1) = FET ADDRESS.
  6513. *
  6514. * EXIT (.FT - .FT+1) = FIRST.
  6515. * (.LM - .LM+1) = LIMIT.
  6516. * (.FE - .FE+1) = FET ADDRESS.
  6517. * (.LF - .LF+1) = LIMIT - FIRST.
  6518. * (.BS - .BS+1) = BLOCK SIZE.
  6519. * (BUFC - BUFC+4) = PRESET IF CONTROL WORD READ AND NOT
  6520. * *LI* FORMAT.
  6521. *
  6522. * USES T1, .BS - .BS+1, .LF - .LF+1.
  6523.  
  6524.  
  6525. CAL SUBR ENTRY/EXIT
  6526. LDD .LM LIMIT - FIRST
  6527. SBD .FT
  6528. SHN 14
  6529. ADD .LM+1
  6530. SBD .FT+1
  6531. STD .LF+1
  6532. SHN -14
  6533. STD .LF
  6534. LDD MD SET MAXIMUM BLOCK SIZE
  6535. SHN -4
  6536. LPN 3
  6537. ADD WC
  6538. STD .BS+1
  6539. LDN 0
  6540. STD .BS
  6541. LDD OV BLOCK SIZE = WC + OV*LBWD + CONTROL WORDS
  6542. ZJN CAL2 IF NOT LONG BLOCK OPERATION
  6543. STD T0
  6544. CAL1 LDC /MTX/LBWD
  6545. RAD .BS+1
  6546. SHN -14
  6547. RAD .BS
  6548. SOD T0
  6549. NJN CAL1 IF OVERFLOW COUNT NOT EXHAUSTED
  6550. CAL2 LDD MD
  6551. SHN -4
  6552. LPN 3
  6553. STD T1
  6554. ZJN CAL4 IF NOT CONTROL WORD OPERATION
  6555. LDD FN
  6556. LMN /MTX/RDF
  6557. NJN CAL4 IF NOT READ NORMAL BLOCK
  6558. LDD FM
  6559. SHN -6
  6560. LMN /MTX/TFLI
  6561. ZJN CAL4 IF LI FORMAT
  6562. LDN ZERL
  6563. CRM BUFC,ON PRESET CONTROL WORD
  6564. LDD T1
  6565. LPN 2
  6566. ZJN CAL3 IF NOT 200 READ CODE
  6567. LDD MD SET PARITY INDICATION
  6568. LPC 100
  6569. STM BUFC
  6570. LDD .BS SET BLOCK SIZE
  6571. SHN 14
  6572. LMD .BS+1
  6573. SBD T1
  6574. CAL3 STM BUFC+1
  6575. SHN -14
  6576. RAM BUFC
  6577. CAL4 LJM CALX RETURN
  6578. INM SPACE 4,10
  6579. ** INM - INSTRUCTION MODIFICATION.
  6580. *
  6581. * ENTRY (A) = FWA OF INSTRUCTION MODIFICATION LIST.
  6582. *
  6583. * USES SC, CM+4, CM+5.
  6584.  
  6585.  
  6586. ENTRY INM
  6587.  
  6588. INM SUBR ENTRY/EXIT
  6589. ZJN INMX IF NO MODIFICATIONS
  6590. STD SC
  6591. INM1 LDI SC
  6592. ZJN INMX IF END OF LIST
  6593. SHN 21-0
  6594. STD T1 SAVE INSTRUCTION ADDRESS
  6595. SHN -21
  6596. SHN 1 COMPLEMENT FLAG * 2
  6597. LMC UJNI+3
  6598. STM INMA
  6599. LDI T1 PRESERVE INSTRUCTION OP CODE
  6600. SCN 77
  6601. STI T1
  6602. LDM 1,SC EXTRACT DIRECT CELL TO REFERENCE
  6603. SHN 14
  6604. STD CM+4
  6605. SCN 77 CLEAR DIRECT CELL ADDRESS
  6606. SHN 3 EXTRACT BIAS
  6607. STD CM+5
  6608. SCN 7 CLEAR BIAS
  6609. ADI CM+4 ADD UPPER PORITON OF VALUE
  6610. PJN INM2 IF RELATIVE VALUE DESIRED
  6611. SHN 6
  6612. SCN 40 CLEAR ABSOLUTE FLAG
  6613. ADD RA
  6614. SHN 14
  6615. INM2 SHN 14
  6616. ADM 1,CM+4 ADD LOWER PORTION OF VALUE
  6617. ADD CM+5 ADD BIAS
  6618.  
  6619. * NOTE CODE SHOULD NOT BE ADDED IN NEXT THREE LINES.
  6620.  
  6621. INMA UJN 3 COMPLEMENT NOT NEEDED
  6622. * UJN 1 COMPLEMENT NEEDED
  6623. LMC -0
  6624. STM 1,T1 MODIFY INSTRUCTION
  6625. SHN -14
  6626. RAI T1
  6627. LDN 2 INCREMENT TO NEXT ITEM IN LIST
  6628. RAD SC
  6629. LJM INM1 CONTINUE INSTRUCTION MODIFICATION
  6630. SFP SPACE 4,10
  6631. ** SFP - SET FET POINTER.
  6632. *
  6633. * ENTRY (A) = POINTER TO DESIRED FET WORD (IN OR OUT).
  6634. *
  6635. * EXIT (CN - CN+4) = FET POINTER.
  6636. * (A) = 0, IF POINTER VALID.
  6637.  
  6638.  
  6639. SFP1 LDN 1
  6640.  
  6641. SFP SUBR ENTRY/EXIT
  6642. STD T0
  6643. LDD .FE READ DESIRED FET POINTER
  6644. SHN 6
  6645. ADD RA
  6646. SHN 6
  6647. ADD .FE+1
  6648. ADD T0
  6649. CRD CN
  6650. LDD CN
  6651. ADD CN+1
  6652. ADD CN+2
  6653. NJN SFP1 IF BAD POINTER
  6654. LDD CN+3
  6655. LPN 37
  6656. STD CN+3
  6657. SBD .FT CHECK AGAINST FIRST
  6658. SHN 14
  6659. ADD CN+4
  6660. SBD .FT+1
  6661. MJN SFP1 IF IN/OUT .GE. FIRST
  6662. LDD CN+3
  6663. SBD .LM
  6664. SHN 14
  6665. ADD CN+4
  6666. SBD .LM+1
  6667. PJN SFP1 IF IN/OUT NOT .LT. LIMIT
  6668. LDN 0
  6669. UJN SFPX RETURN
  6670. TRB SPACE 4,25
  6671. IFEQ TE,1 IF SAVING TRACE INFORMATION
  6672. ** TRB - TRACE BUFFER.
  6673. *
  6674. * THE TRACE BUFFER STARTS AT BYTE ADDRESS 2000000(16). A
  6675. * MODIFICATION TO *STL* AND SEVERAL OTHER DECKS MUST BE
  6676. * EDITED ONTO THE DEADSTART TAPE TO DISABLE MEMORY BOUNDS
  6677. * CHECKING. THE TRACE IS UPDATED WITH EACH CALL TO
  6678. * *CPP* AND CONSISTS OF 2 CP WORDS PER TRACE AS FOLLOWS.
  6679. * LOCATION 10 IS THE POINTER TO THE TRACE BUFFER. A MAXMIMUM
  6680. * OF 16 MB WILL BE STORED IN THE TRACE BUFFER. THE BUFFER
  6681. * WILL NOT WRAP. TO RESTART THE TRACE, JUST CLEAR LOCATION
  6682. * 10.
  6683. *
  6684. * 0 - 12/EO, 12/FN, 12/BL+1, 12/DS, 12,EC
  6685. * 1 - 12/PA, 12/PB, 12/HP, 12/MD, 12/FM
  6686. *
  6687. * NOTE - THIS CODE IS ONLY FOR CHECKOUT.
  6688. *
  6689. * USES T1 - T7.
  6690.  
  6691.  
  6692. TRB SUBR ENTRY/EXIT
  6693. LDD HP
  6694. SHN 21-7
  6695. PJN TRBX IF NOT CTS
  6696. SRD T1 SAVE R REGISTER
  6697. LDN 10
  6698. CRD T3
  6699. LDD T3
  6700. ZJN TRB1 IF TRACE NOT STARTED
  6701. LPN 10
  6702. NJN TRBX IF TRACE BUFFER FULL
  6703. UJN TRB2 MOVE EST ORDINAL
  6704.  
  6705. TRB1 LDN 20 INITIALIZE TRACE START ADDRESS
  6706. STD T3
  6707. LDN 0
  6708. STD T4
  6709. STD T5
  6710. TRB2 LRD T3
  6711. LDD EO EST ORDINAL
  6712. STM TRBB
  6713. LDD FN FUNCTION NUMBER
  6714. STM TRBB+1
  6715. LDD BL+1 RIGHT-MOST 12 BITS OF BLOCK NUMBER
  6716. STM TRBB+2
  6717. LDD DS GENERAL STATUS
  6718. STM TRBB+3
  6719. LDD EC ERROR CODE
  6720. STM TRBB+4
  6721. LDD PA PARAMETER
  6722. STM TRBB+5
  6723. LDD PB PARAMETER
  6724. STM TRBB+6
  6725. LDD HP HARDWARE OPTIONS
  6726. STM TRBB+7
  6727. LDD MD MODES
  6728. STM TRBB+10
  6729. LDD FM FORMAT
  6730. STM TRBB+11
  6731. LDN 2
  6732. STD T6
  6733. LDD T5
  6734. LMC 400000
  6735. CWM TRBB,T6
  6736. LDN 2
  6737. RAD T5
  6738. SHN -6
  6739. RAD T4
  6740. SHN -14
  6741. RAD T3
  6742. LDD T5
  6743. LPN 77
  6744. STD T5
  6745. LDN 10
  6746. CWD T3 UPDATE POINTER TO TRACE BUFFER
  6747. LRD T1 RESTORE R REGISTER
  6748. LJM TRBX RETURN
  6749.  
  6750.  
  6751. TRBB BSS 12
  6752. ENDIF
  6753. CCD SPACE 4,15
  6754. ** CCD - CHECK CODED REQUEST AND BUILD FORMAT PARAMETERS.
  6755. *
  6756. * ENTRY (SC) = FUNCTION TABLE ENTRY WHEN CALLED FROM RESIDENT.
  6757. *
  6758. * EXIT UNIT FORMAT PARAMETERS BUILT.
  6759. * CORRECT BID ACCUMULATION LOOP MOVED TO RESIDENT.
  6760. * UNIT CONNECTED OR FORMATED IF NECESSARY.
  6761. * BLOCKS TO TRANSFER BEFORE DROP OUT SET FOR CTS.
  6762. *
  6763. * USES T1, T2, T3.
  6764. *
  6765. * CALLS CUI, DDR, /PRESET/RCU.
  6766.  
  6767.  
  6768. CCD SUBR ENTRY/EXIT
  6769. LDD MD
  6770. SHN 21-6
  6771. PJN CCD1 IF NOT CODED OPERATION
  6772. LDD FM
  6773. SHN -6
  6774. LMN /MTX/TFSI
  6775. NJN CCD1 IF NOT SI FORMAT
  6776. LDD FN
  6777. LMN /MTX/RLA
  6778. ZJN CCD1 IF READ LABEL
  6779. LMN /MTX/WLA&/MTX/RLA
  6780. NJN CCD3 IF READ, WRITE OR SKIP
  6781. CCD1 LDD HP
  6782. SHN 21-7
  6783. PJP CCD6 IF NOT CTS
  6784. LDC -BLKC
  6785. STM CDOC BLOCKS TO TRANSFER BEFORE DROP OUT
  6786.  
  6787. * THE BLANK COMMAND WRITES LABELS WITH AN S FORMAT CODED
  6788. * OPERATION. THE CTS SUBSYSTEM DOES NOT SUPPORT CODE
  6789. * CONVERSION, SO THE DRIVER DOES SOFTWARE CONVERSION.
  6790.  
  6791. LDD MD
  6792. SHN 21-6
  6793. PJN CCD4 IF NOT CODED
  6794. LDD FN
  6795. SBN /MTX/RDF
  6796. ZJN CCD2 IF READ
  6797. SBN /MTX/WTF-/MTX/RDF
  6798. NJN CCD4 IF NOT WRITE
  6799. CCD2 LDD FM
  6800. SHN -6
  6801. LMN /MTX/TFS
  6802. ZJN CCD4 IF S FORMAT
  6803. CCD3 LDN /MTX/SCI CODED I/O NOT SUPPORTED
  6804. LJM RET3 RETURN ERROR CODE
  6805.  
  6806. CCD4 LDM CPP
  6807. LMC PNRI
  6808. NJN CCD4.1 IF NOT CALLED FROM MAIN PROGRAM
  6809. LDD FN
  6810. LMN /MTX/WTF
  6811. NJN CCD5 IF NOT DATA WRITE
  6812. LDD SP
  6813. LPC 100
  6814. ZJN CCD5 IF COMPRESSED MODE WRITE NOT SELECTED
  6815. SHN 7-6
  6816. RAM /PRESET/CCUA SET COMPRESSED MODE
  6817. ERRNZ F0220-F0020-200
  6818. UJN CCD4.2 RECONNECT UNIT AND SET COMPRESSED MODE
  6819.  
  6820. CCD4.1 LDM RELA
  6821. NJN CCD5 IF CONNECTED
  6822. CCD4.2 RJM /PRESET/RCU RECONNECT UNIT
  6823. CCD5 UJP CCDX RETURN
  6824.  
  6825. * REBUILD FORMAT PARAMETERS.
  6826.  
  6827. CCD6 LDM CPP
  6828. LMC //PNRI
  6829. ZJN CCD8 IF CALLED FROM RESIDENT
  6830. CCD7 LDM RELA CHECK IF CONNECTED
  6831. NJN CCD5 IF CONNECTED
  6832. LJM CCD14 RECONNECT UNIT
  6833.  
  6834. CCD8 LDD SC
  6835. SHN 21-5
  6836. PJN CCD7 IF FUNCTION DOES NOT REQUIRE UNIT FORMATED
  6837. LDD HP
  6838. SHN 21-10
  6839. PJN CCD9 IF NOT ISMT DEVICE
  6840. LDC -BLKX BLOCKS TO TRANSFER BEFORE DROPOUT (ISMT)
  6841. STM CDOC
  6842. CCD9 RJM DDR SET DIRECTION FOR BID ACCUMULATION
  6843. LDC LDNI+2 SET TO INPUT 2 WORDS OF DETAILED STATUS
  6844. STM //STWE
  6845. LDM MTSF BUILD FORMAT PARAMETERS
  6846. LPC 4237
  6847. STM MTSF
  6848. LDM MTSF+1
  6849. LPC 6740
  6850. STM MTSF+1
  6851. LDD HP PRESET A/D MODE FOR BINARY
  6852. LPN 1
  6853. SHN 5 SET PACKED MODE FOR 9 TRACK
  6854. STD T1
  6855. LDD MD CHECK FOR CODED OPERATION
  6856. SHN 21-6
  6857. MJN CCD10 IF CODED
  6858. LDD T1
  6859. NJN CCD12 IF NOT 7 TRACK
  6860. LDC 3400 SET CONVERSION TABLE 7
  6861. STD T1
  6862. UJN CCD12 SET NOISE SIZE
  6863.  
  6864. CCD10 LDD T1 SET EVEN PARITY IF 7 TRACK
  6865. LMN 40
  6866. SHN 4
  6867. RAM MTSF+1
  6868. LDM DNCV SET CONVERSION TABLE
  6869. LPN 7
  6870. ZJN CCD12 IF NO CONVERSION REQUEST
  6871. SBN 1
  6872. ZJN CCD11 IF BCD TYPE
  6873. SBN 4-1
  6874. CCD11 ADN 3
  6875. SHN 10
  6876. STD T1
  6877. CCD12 LDD T1
  6878. RAM MTSF
  6879. LDD FM SET NOISE SIZE
  6880. LPN 37
  6881. STD T2
  6882. SHN 1 NB*2
  6883. STD T3
  6884. LDD HP
  6885. LPN 1
  6886. ZJN CCD13 IF 7 TRACK
  6887. LDD T2
  6888. ADD T3 NB*3
  6889. SHN -1 (NB*3)/2
  6890. STD T3
  6891. CCD13 LDD FM ADJUST NOISE SIZE IF FILL STATUS
  6892. LPN 40
  6893. SHN -5
  6894. STD T1
  6895. LDD T3
  6896. SBD T1
  6897. RAM MTSF+1
  6898. LDD HP
  6899. LPN 40
  6900. NJN CCD14 IF MTS CONTROLLER
  6901. LDC 4000
  6902. STM MTSF+2
  6903. LDM DNCV
  6904. LPN 70
  6905. LMN /MTX/D62*10
  6906. NJN CCD14 IF NOT 6250 CPI
  6907. LDD FN CHECK FUNCTION IN PROGRESS
  6908. SBN /MTX/WTF
  6909. MJN CCD14 IF NOT WRITE OPERATION
  6910. LDD SP SET ERROR CORRECTION ENABLE/DISABLE (ATS)
  6911. LPC 100
  6912. SHN 4
  6913. RAM MTSF+2
  6914. CCD14 LDN 0 CLEAR CONNECTED FLAG
  6915. STM //RELA
  6916. RJM CUI FORMAT UNIT
  6917. LJM CCDX RETURN
  6918. DDR SPACE 4,10
  6919. ** DDR - DETERMINE DIRECTION FOR BID ACCUMULATION.
  6920. *
  6921. * ENTRY (MD, 12 - 13) = 0 IF FORWARD DIRECTION.
  6922. *
  6923. * EXIT CORRECT BID ACCUMULATION ROUTINE MOVED TO RESIDENT.
  6924. *
  6925. * USES T1, T2.
  6926.  
  6927.  
  6928. DDR SUBR ENTRY/EXIT
  6929. LDD MD
  6930. SHN -12
  6931. ZJN DDR1 IF FORWARD DIRECTION
  6932. LDC DDRB-DDRA SET REVERSE DIRECTION TABLE
  6933. DDR1 ADC DDRA
  6934. STD T1
  6935. LDI T1
  6936. LMM //UBWA
  6937. ZJN DDRX IF CORRECT ROUTINE LOADED
  6938. LDN 0
  6939. STD T2
  6940. DDR2 LDI T1 MOVE CODE
  6941. STM UBWA,T2
  6942. AOD T1
  6943. AOD T2
  6944. LMN //UBWAL
  6945. NJN DDR2 IF MORE CODE TO MOVE
  6946. UJN DDRX RETURN
  6947.  
  6948.  
  6949. DDRA BSS 0 CODE FOR FORWARD ACCUMULATION
  6950. LOC //UBWA
  6951. AOD WP
  6952. LPN 7
  6953. STD WP
  6954. LDM UBWB
  6955. STM BIDW,WP
  6956. LOC *O
  6957. DDRAL EQU *-DDRA LENGTH OF OVERLAID CODE
  6958.  
  6959. ERRNZ //UBWAL-DDRAL OVERLAID CODE NOT CORRECT LENGTH
  6960.  
  6961. DDRB BSS 0 CODE FOR REVERSE ACCUMULATION
  6962. LOC //UBWA
  6963. LDN 4 SET UNAVAILABLE BID
  6964. STM BIDW,WP
  6965. SOD WP
  6966. PJN UBWX IF NO UNDERFLOW
  6967. LDN 7 RESET POINTER
  6968. STD WP
  6969. LOC *O
  6970. DDRBL EQU *-DDRB
  6971.  
  6972. ERRNZ //UBWAL-DDRBL OVERLAID CODE NOT CORRECT LENGTH
  6973.  
  6974.  
  6975. USE BUFFER
  6976.  
  6977. ERRNG 2*473+ERLA+5-* CPP OVERFLOW
  6978. OVERLAY (USER JOB OPERATIONS.)
  6979. PFN SPACE 4,20
  6980. ** PFN - PROCESS FUNCTION REQUESTED.
  6981. *
  6982. *T, 12/ 1,12/ PFN,12/ 0,12/ PARAM,12/ FC
  6983. *
  6984. * FC FUNCTION CODE (SEE *COMSMTX*).
  6985.  
  6986.  
  6987. ENTRY PFN
  6988. PFN LDD PB
  6989. SBN TFCNL
  6990. MJN PFN1 IF VALID FUNCTION
  6991. RJM HNG HANG PP
  6992.  
  6993. PFN1 LDM TFCN,PB SET PROCESSOR ADDRESS
  6994. STM PFNA
  6995. LJM * PROCESS FUNCTION
  6996. PFNA EQU *-1
  6997. SPACE 4,10
  6998. ** TFCN - TABLE OF FUNCTION PROCESSORS.
  6999.  
  7000.  
  7001. TFCN INDEX
  7002. INDEX /MTX/FNRW,RUL REWIND
  7003. INDEX /MTX/FNUL,RUL UNLOAD
  7004. INDEX /MTX/FNSD,SDF SET DENSITY IN UNIT FORMAT PARAMETERS
  7005. INDEX /MTX/FNMX TERMINATE TABLE
  7006. TFCNL EQU *-TFCN
  7007. RUL SPACE 4,10
  7008. ** RUL - REWIND OR UNLOAD UNIT.
  7009. *
  7010. * CALLS REU, RBL, WNB.
  7011.  
  7012.  
  7013. RUL BSS 0 ENTRY
  7014. RJM WNB WAIT NOT BUSY
  7015. LDD HP
  7016. SHN 21-7
  7017. PJN RUL1 IF NOT CTS UNIT
  7018. RJM RBL READ BUFFERED LOG
  7019. RUL1 LDD PB
  7020. LMK /MTX/FNRW
  7021. ZJN RUL2 IF REWIND
  7022. LDN 1 SET UNLOAD
  7023. RUL2 RJM REU REWIND OR UNLOAD UNIT
  7024. LJM RET1 RETURN
  7025. SDF SPACE 4,10
  7026. ** SDF - SET DENSITY IN UNIT FORMAT PARAMETERS.
  7027.  
  7028.  
  7029. SDF BSS 0 ENTRY
  7030. LDD HP
  7031. SHN 21-7
  7032. MJP RET1 IF CTS UNIT
  7033. LDM MTSF+1
  7034. LPC 7477
  7035. STM MTSF+1
  7036. LDD HP
  7037. SHN 21-5
  7038. MJN SDF1 IF MTS CONTROLLER
  7039. SHN 21-0-21+5
  7040. MJN SDF1 IF 9 TRACK
  7041. LDM DNCV SET ATS 7 TRACK DENSITY
  7042. SHN -3
  7043. LPN 7
  7044. LMN 3
  7045. UJN SDF3 STORE DENSITY IN FORMAT PARAMETER
  7046.  
  7047. SDF1 LDM DNCV
  7048. SHN -3
  7049. LPN 7
  7050. SBN /MTX/D02
  7051. ZJN SDF2 IF 200 BPI
  7052. SBN 5-1
  7053. SDF2 ADN 3
  7054. SDF3 SHN 6
  7055. RAM MTSF+1
  7056. LJM RET1 RETURN
  7057. SED SPACE 4,10
  7058. ** SED - SET EQUIPMENT DEFINITIONS.
  7059. *
  7060. * CALLS DTS, LWR, REU, SDS, UAD.
  7061. *
  7062. * MACROS MONITOR, SFA.
  7063.  
  7064.  
  7065. ENTRY SED
  7066. SED SFA EST,EO SET EST ADDRESS
  7067. ADK EQDE GET EQUIPMENT PARAMETERS
  7068. CRD CN
  7069. LDD HP
  7070. SHN 21-7
  7071. MJN SED1 IF CTS UNIT
  7072. RJM DTS GET DETAILED STATUS
  7073. LDM MTSF
  7074. NJN SED1 IF NOT FIRST TIME PROCESSING
  7075. LDD CN+4
  7076. LPN 37 UNIT NUMBER
  7077. ADC 4220
  7078. STM MTSF SET FORMAT FLAGS AND UNIT NUMBER
  7079. SED1 LDD DS
  7080. SHN 21-0
  7081. PJN SED3 IF NOT READY
  7082. SHN 21-1-21+22
  7083. PJN SED2 IF NOT BUSY
  7084. LJM RET2 RETRY
  7085.  
  7086. * FORCE TAPE TO LOAD POINT.
  7087.  
  7088. SED2 LPN 1
  7089. NJN SED3 IF AT LOAD POINT
  7090. * LDN 0 SET REWIND
  7091. RJM REU REWIND UNIT
  7092. LDN /MTX/RBS REQUEUE ON UNIT BUSY
  7093. LJM RET5 EXIT
  7094.  
  7095. * PRESET MTS/ATS UNIT.
  7096.  
  7097. SED3 LDD HP
  7098. SHN 21-7
  7099. MJP SED7 IF CTS UNIT
  7100. LDD HP
  7101. LPC 760 MASK CONTROLLER TYPE BITS
  7102. STD HP
  7103. LPN 20
  7104. ZJN SED4 IF NOT ATS UNIT
  7105. LDC 7440 MODIFY INSTRUCTIONS
  7106. STM SEDA
  7107. LDM ATUS DETERMINE IF GCR UNIT
  7108. SHN 1
  7109. LPN 20
  7110. STD CM+4
  7111. SHN -3
  7112. RAD HP
  7113. LDD CN ENSURE CORRECT *GCR* SETTING IN EST ENTRY
  7114. LPN 20
  7115. LMD CM+4
  7116. ZJN SED4 IF NO CHANGE IN EST ENTRY
  7117. LCN 20 SET MASK FOR GCR FLAG
  7118. STD CM+3
  7119. LDD EO SET EQUIPMENT NUMBER
  7120. STD CM+1
  7121. LDN /CPS/SB0S CHANGE BYTE 0 OF EST ENTRY
  7122. STD CM+2
  7123. MONITOR SEQM
  7124. SED4 LDM MTSF
  7125. LPC 4237
  7126. STM MTSF
  7127. LDC 7540
  7128. * LDC 7440 (ATS CONTROLLER)
  7129. SEDA EQU *-1
  7130. STM MTSF+1
  7131. LDD DS
  7132. SHN -6
  7133. LPN 1 SET 7/9 TRACK OPTION
  7134. RAD HP
  7135. LPN 1
  7136. ZJN SED5 IF 7 TRACK
  7137. LDC 6640 SET 1600 BPI
  7138. STM MTSF+1
  7139. LDC 400-1400 SELECT ANSI CONVERSION
  7140. SED5 ADC 1400 SELECT BCD CONVERSION
  7141. RAM MTSF
  7142. LDD HP
  7143. SHN 21-4
  7144. PJN SED6 IF NOT ATS UNIT
  7145. RJM LWR CHECK LOOP WRITE TO READ
  7146. SED6 RJM SDS SET DRIVE SPEED
  7147. LDD DS SET EST DEVICE TYPE
  7148. LPC 100
  7149. ADC 2RMT
  7150. STD CM+3 SET CORRECT DEVICE MNEMONIC
  7151. LMD CN+3
  7152. ZJN SED7 IF NO MNEMONIC CHANGE
  7153. LDD EO SET EQUIPMENT NUMBER
  7154. STD CM+1
  7155. LDN /CPS/SMNS CHANGE EQUIPMENT MNEMONIC IN EST
  7156. STD CM+2
  7157. MONITOR SEQM
  7158. LDD LT TOGGLE BIT 1 OF DEVICE TYPE
  7159. LMC 400
  7160. ERRNZ /MTX/DVMT
  7161. ERRNZ /MTX/DVNT-2
  7162. STD LT
  7163.  
  7164. * PRESET UDT.
  7165.  
  7166. SED7 LDN 0
  7167. STD BL
  7168. STD BL+1
  7169. STD UP
  7170. STD LG
  7171. STD LG+1
  7172. STD EP
  7173. STD EP+1
  7174. STD SP
  7175. STD WC
  7176. STD OV
  7177. LDD HP
  7178. SHN 21-7
  7179. PJN SED8 IF NOT CTS UNIT
  7180. LDN 0
  7181. STD WP
  7182. SED8 LDC /MTX/TFF*100+4 SET FORMAT/NOISE FOR LABEL CHECK
  7183. STD FM
  7184. LDD LT
  7185. LPC 700
  7186. LMC 2000 SET LABELED FOR LABEL CHECK
  7187. STD LT
  7188. SHN -7
  7189. LPN 3 TAPE DEVICE TYPE
  7190. STD T1
  7191. LDM TDCV,T1 SET INITIAL DENSITY AND CONVERSION MODE
  7192. STM DNCV
  7193. RJM UAD UPDATE *UST4* PARAMETERS
  7194. ADN /MTX/UST4
  7195. CWD LT
  7196. LDD DS CHECK READY STATUS
  7197. LPN 1
  7198. NJN SED9 IF UNIT READY
  7199. LDN /MTX/FRJ SET TO NOT ATTEMPT LABEL SCAN
  7200. LJM RET3 RETURN ERROR CODE
  7201.  
  7202. SED9 LJM RET1 RETURN
  7203. TDCV SPACE 4,10
  7204. ** TDCV - TABLE OF INITIAL DENSITY AND CONVERSION MODES.
  7205. *
  7206. * INDEXED BY TAPE DEVICE TYPE.
  7207. *
  7208. * ENTRY FORMAT -
  7209. *
  7210. * 6/0,3/ DN,3/ CV
  7211. *
  7212. * DN = INITIAL DENSITY.
  7213. * CV = INITIAL CONVERSION MODE.
  7214.  
  7215.  
  7216. TDCV INDEX
  7217. INDEX /MTX/DVMT,/MTX/D08*10+/MTX/BCD
  7218. INDEX /MTX/DVCT,/MTX/D380*10+/MTX/ANS
  7219. INDEX /MTX/DVNT,/MTX/D16*10+/MTX/ANS
  7220. INDEX /MTX/DVAT,/MTX/D380*10+/MTX/ANS
  7221. INDEX /MTX/DVMX
  7222. TITLE SUBROUTINES.
  7223. LWR SPACE 4,15
  7224. ** LWR - TEST WRITE/READ PATH TO ATS UNIT.
  7225. *
  7226. * ENTRY (DS) = GENERAL STATUS.
  7227. * (ATUS - ATUS+5) = UNIT STATUS.
  7228. *
  7229. * EXIT TAPE UNLOADED AND UNIT DOWNED IF LOOP WRITE/READ TEST
  7230. * FAILURE.
  7231. *
  7232. * USES CM+1, CM+2.
  7233. *
  7234. * CALLS CUI, DTS, *EMM*, ERR, FCR, REU, STW, UAD.
  7235. *
  7236. * MACROS CALL, MONITOR.
  7237.  
  7238.  
  7239. LWR7 LCN /MTX/MOF-/MTX/CRJ ALTER ERROR FOR CONNECT REJECT
  7240. RAM LWRA
  7241. LJM LWR5 *OFF* UNIT
  7242.  
  7243. LWR SUBR ENTRY/EXIT
  7244. LDD DS SAVE STATUS FOR POSSIBLE MESSAGE
  7245. STM //STER
  7246. LPN 3
  7247. LMN 1
  7248. NJN LWRX IF UNIT NOT READY
  7249.  
  7250. * RECHECK UNIT STATUS FOR MDI ERRORS. THESE ERRORS
  7251. * MAY HAVE BEEN IGNORED AT INITIAL CONNECT TIME.
  7252. * IF ANY ERRORS ARE PRESENT, PROCESS AS IF CONNECT REJECT.
  7253.  
  7254. RJM DTS GET UNIT STATUS
  7255. LDM MTDS CHECK STATUS
  7256. SHN 21-12
  7257. PJN LWR2 IF NO UNIT CHECK
  7258. LDM ATUS+1
  7259. LPC 216 LAMP,DSE,ERASE CURRENT,AIR PRESS. FAILURE
  7260. NJN LWR7 IF ERRORS OTHER THAN RESET OR LOAD CHECK
  7261. LDM ATUS+2
  7262. LPN 30 AIR FLOW,THERMAL FAILURE
  7263. NJN LWR1 IF MDI ERRORS
  7264. LDM ATUS
  7265. SHN 21-6
  7266. PJN LWR2 IF NO WRITE CURRENT FAILURE
  7267. LWR1 LJM LWR7 PROCESS CONNECT REJECT
  7268.  
  7269. * ISSUE LOOP WRITE TO READ FUNCTION TO UNIT.
  7270.  
  7271. LWR2 LDM ATUS+2 GET DETAIL STATUS WORD 13
  7272. LPN 34 AIR FLOW,THERMAL,CLEANER NOT PARKED
  7273. ZJN LWR2.1 IF NO PROBLEM
  7274. LPN 30 AIR FLOW,THERMAL FAILURE
  7275. NJN LWR1 IF MDI PROBLEM
  7276. LDN /MTX/TCF-/MTX/MOF ALTER ERROR FOR TAPE CLEANER FAULT
  7277. RAM LWRA
  7278. LJM LWR4 PROCESS CLEANER NOT PARKED
  7279.  
  7280. LWR2.1 LDN 0
  7281. STM //RELA
  7282. RJM CUI INSURE UNIT FORMATED
  7283. LDM MTDS+5
  7284. SHN 21-7
  7285. MJN LWR4 IF WRITE CURRENT ON
  7286. LDC 175 SET LOOP WRITE TO READ (LWR) MODE
  7287. RJM FCR
  7288. NJN LWR4 IF FUNCTION REJECT
  7289. LDN 50 ISSUE WRITE FUNCTION
  7290. RJM FCR
  7291. NJN LWR4 IF FUNCTION REJECT
  7292. ACN CH OUTPUT DATA
  7293. LDD HN
  7294. OAM BFMS,CH
  7295. FJM *,CH
  7296. NJN LWR3 IF ABNORMAL TERMINATION
  7297. DCN CH+40
  7298. LWR3 LDN 0 GET STATUS
  7299. RJM STW
  7300. STM //STER SAVE STATUS FOR POSSIBLE MESSAGE
  7301. SHN 21-13
  7302. MJN LWR4 IF ALERT SET
  7303. LJM LWRX RETURN
  7304.  
  7305. LWR4 LDN 1 UNLOAD TAPE
  7306. RJM REU
  7307. LWR5 LDD EO
  7308. STD CM+1
  7309. LDN /CPS/DWES SET DOWN STATUS
  7310. STD CM+2
  7311. MONITOR SEQM SET EQUIPMENT PARAMETER
  7312. LWRA LDN /MTX/MOF ISSUE MESSAGE AND ABORT
  7313. * LDN /MTX/CRJ (CONNECT REJECT)
  7314. * LDN /MTX/TCF (TAPE CLEANER FAULT)
  7315. RJM ERR
  7316. RLB SPACE 4,15
  7317. ** RBL - READ BUFFERED LOG.
  7318. *
  7319. * EXIT RECOVERED ERROR COUNTS UPDATED.
  7320. *
  7321. * USES T1, T3.
  7322. *
  7323. * CALLS ERR, /PRESET/GPS, /PRESET/ICF.
  7324.  
  7325.  
  7326. RBL SUBR ENTRY/EXIT
  7327. LDK F0312
  7328. RJM /PRESET/ICF ISSUE READ BUFFERED LOG FUNCTION
  7329. RBL1 ACN CH
  7330. LDN 32D
  7331. IAM RBLA,CH
  7332. STD T3 WORDS NOT TRANSFERRED
  7333. SFM RBL3,CH IF CHANNEL PARITY ERROR
  7334. RBL2 LDN 0
  7335. RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS
  7336. MJN RBL1 IF COMMAND RETRY
  7337. LDD T3
  7338. ZJN RBL4 IF ALL BUFFERED LOG DATA RECEIVED
  7339. RBL3 LDN /MTX/CMF
  7340. RJM ERR PROCESS ERROR (NO RETURN)
  7341.  
  7342. * INCREMENT WRITE ERROR COUNTER.
  7343.  
  7344. RBL4 LDM RBLA+2
  7345. LPN 17
  7346. SHN 14
  7347. ADM RBLA+3 TEMPORARY WRITE DATA CHECKS
  7348. RAM ECNT+2
  7349. SHN -14
  7350. RAM ECNT+1
  7351. LDM RBLA+6
  7352. SHN -4
  7353. STD T1
  7354. LDM RBLA+5
  7355. LPC 377
  7356. SHN 10
  7357. ADD T1 WRITE BLOCKS CORRECTED WITHOUT ERPA
  7358. RAM ECNT+2
  7359. SHN -14
  7360. RAM ECNT+1
  7361.  
  7362. * INCREMENT READ ERROR COUNTER.
  7363.  
  7364. LDM RBLA+1
  7365. SHN -10
  7366. SHN 16
  7367. ADM RBLA
  7368. SHN 4 TEMPORARY READ DATA CHECKS
  7369. RAM ECNT+4
  7370. SHN -14
  7371. RAM ECNT+3
  7372. LDM RBLA+5
  7373. SHN -10
  7374. SHN 16
  7375. ADM RBLA+4
  7376. SHN 4 READ BLOCKS CORRECTED WITHOUT ERPA
  7377. RAM ECNT+4
  7378. SHN -14
  7379. RAM ECNT+3
  7380. LJM RBLX RETURN
  7381.  
  7382.  
  7383. RBLA BSS 32D BUFFERED LOG DATA
  7384. WNB SPACE 4,10
  7385. ** WNB - WAIT NOT BUSY AND CHECK READY.
  7386. * IF UNIT IS BUSY, THE REQUEST IS REQUEUED.
  7387. * IF UNIT NOT READY AFTER TIMEOUT, EXIT WITH READY DROP.
  7388. *
  7389. * ENTRY (DS) = GENERAL STATUS.
  7390. *
  7391. * CALLS /PRESET/GPS, STW.
  7392.  
  7393.  
  7394. WNB1 LDD HN SET DELAY
  7395. STM WNBA
  7396. WNB2 LDD DS
  7397. LPN 1
  7398. NJN WNBX IF UNIT READY
  7399. LDD HP
  7400. SHN 21-7
  7401. PJN WNB4 IF NOT CTS
  7402. WNB3 LDN 0 WAIT FOR END OF OPERATION
  7403. RJM /PRESET/GPS GET AND PROCESS CTS GENERAL STATUS
  7404. MJN WNB3 IF RETRY OCCURRED
  7405. UJN WNB5 CHECK TIMEOUT
  7406.  
  7407. WNB4 LDN 0
  7408. RJM STW GET DEVICE STATUS
  7409. WNB5 SOM WNBA
  7410. NJN WNB2 IF NOT TIMEOUT
  7411. LDN /MTX/RDR READY DROP
  7412. LJM RET3 RETURN ERROR CODE
  7413.  
  7414. WNB SUBR ENTRY/EXIT
  7415. LDD DS
  7416. LPN 2
  7417. ZJN WNB1 IF NOT BUSY
  7418. LDN /MTX/RBS REQUEUE ON UNIT BUSY
  7419. LJM RET5 EXIT
  7420.  
  7421.  
  7422. WNBA BSS 1
  7423. TITLE HARDWARE SUBROUTINES.
  7424. FCR SPACE 4,10
  7425. ** FCR - PROCESS FUNCTION.
  7426. *
  7427. * ENTRY (A) = FUNCTION.
  7428. *
  7429. * EXIT (A) = 0, IF NO EXTERNAL REJECT.
  7430. *
  7431. * CALLS STC.
  7432.  
  7433.  
  7434. FCR SUBR ENTRY/EXIT
  7435. ADM FCNA ADD EQUIPMENT NUMBER FOR ATS/MTS
  7436. FAN CH FUNCTION EQUIPMENT
  7437. STM FCRA SAVE FUNCTION
  7438. RJM STC STATUS CHANNEL
  7439. UJN FCRX RETURN
  7440.  
  7441.  
  7442. FCRA CON 0
  7443. REU SPACE 4,10
  7444. ** REU - REWIND/UNLOAD.
  7445. *
  7446. * ENTRY (A) = 0, REWIND.
  7447. * (A) = 1, UNLOAD.
  7448. *
  7449. * EXIT BID WINDOW SET TO UNAVAILABLE.
  7450. *
  7451. * CALLS FCN, /PRESET/GPS, STW.
  7452.  
  7453.  
  7454. REU SUBR ENTRY/EXIT
  7455. SHN 6
  7456. ADN F0010 ISSUE REWIND/UNLOAD
  7457. ERRNZ F0110-F0010-100
  7458. RJM FCN
  7459. LDD HP
  7460. SHN 21-7
  7461. MJN REU2 IF CTS
  7462. LDN 0 GET DEVICE STATUS
  7463. RJM STW
  7464. LDN 10 RESET BID WINDOW
  7465. STD WP
  7466. REU1 LDN 4
  7467. STM BIDW-1,WP
  7468. SOD WP
  7469. NJN REU1 IF MORE BYTES TO SET
  7470. UJN REU3 CLEAR BLOCK AND PRU COUNTER
  7471.  
  7472. REU2 LDN 0 WAIT FOR END OF OPERATION
  7473. RJM /PRESET/GPS GET AND PROCESS CTS GENERAL STATUS
  7474. MJN REU2 IF RETRY
  7475. REU3 LDN 0 CLEAR BLOCK AND PRU COUNTER
  7476. STD BL
  7477. STD BL+1
  7478. STD EP CLEAR ERROR PARAMETERS
  7479. STD EP+1
  7480. STD EI
  7481. LDD HP
  7482. SHN 21-7
  7483. PJN REU4 IF NOT CTS UNIT
  7484. LDN 0
  7485. STD WP
  7486. REU4 LDD UP SET LAST BLOCK EOR/EOF
  7487. SCN 10
  7488. LMN 10
  7489. STD UP
  7490. UJP REUX RETURN
  7491. SDS SPACE 4,25
  7492. ** SDS - SET DRIVE SPEED FOR MTS/ATS UNITS.
  7493. *
  7494. * EXIT (HP, 2-3) = DRIVE SPEED.
  7495. * FOR ATS AND MTS.
  7496. * 0 = 100 IPS DRIVE.
  7497. * 1 = 150 IPS DRIVE.
  7498. * 2 = 200 IPS DRIVE.
  7499. *
  7500. * FOR FSC.
  7501. * 0 = 75 IPS DRIVE.
  7502. * 1 = 125 IPS DRIVE.
  7503. * 2 = 200 IPS DRIVE.
  7504. *
  7505. * FOR CMTS.
  7506. * 2 = 200 IPS DRIVE.
  7507. *
  7508. * FOR ISMT.
  7509. * 3 = 25 IPS DRIVE.
  7510. *
  7511. * FOR CTS.
  7512. * 0 = 79 IPS DRIVE.
  7513. *
  7514. * USES T1.
  7515.  
  7516.  
  7517. SDS1 LPN 12
  7518. ZJN SDS2 IF NOT FSC/CMTS/ISMT
  7519. LPN 10
  7520. ZJN SDS1.1 IF NOT ISMT
  7521. LDN 3
  7522. UJN SDS3 SAVE INDEX FOR ISMT
  7523.  
  7524. SDS1.1 LDM ATUS SET FSC/CMTS DRIVE SPEED
  7525. LPN 7
  7526. SBN 3
  7527. PJN SDS3 IF *STC* HAS VALID UNIT SPEED STATUS
  7528. UJN SDSX SET DEFAULT DRIVE SPEED TO 75 IPS
  7529.  
  7530. SDS2 LDM ATUS SET ATS DRIVE SPEED
  7531. SHN -1
  7532. LPN 3
  7533. SBN 1
  7534. ZJN SDS3 IF 100 IPS UNIT
  7535. LMN 3
  7536. SDS3 STD T1 SAVE INDEX
  7537. LDM SDSA,T1 SET SPEED
  7538. RAD HP
  7539.  
  7540. SDS SUBR ENTRY/EXIT
  7541. LDD HP
  7542. SHN 21-4
  7543. MJN SDS1 IF ATS-TYPE UNIT
  7544. LDM MTDS+4 SET MTS DRIVE SPEED
  7545. SHN -11
  7546. LPN 3
  7547. UJN SDS3 SET SPEED
  7548.  
  7549.  
  7550. SDSA BSS 0
  7551. CON 0 100 IPS DRIVE
  7552. CON 4 150 IPS DRIVE
  7553. CON 10 200 IPS DRIVE
  7554. CON 14 25 IPS DRIVE (ISMT)
  7555.  
  7556.  
  7557. USE BUFFER
  7558.  
  7559. TADD TSAD ADDRESS TABLE
  7560.  
  7561.  
  7562. ERROVL
  7563. PRS SPACE 4,10
  7564. ** PRS - PRESET.
  7565. *
  7566. * CALLS MCH.
  7567.  
  7568.  
  7569. PRS LDC CTAB MODIFY CHANNELS
  7570. RJM MCH
  7571. LDD HP
  7572. SHN 21-7
  7573. MJN PRS1 IF CTS UNIT
  7574. LDN F0040 SET READ FUNCTION FOR MESSAGE
  7575. STM ITMA
  7576. PRS1 LDC TADD
  7577. STD CN
  7578. LJM PRSX EXIT
  7579. CTAB CHTB CHANNEL TABLE
  7580. OVERLAY (READ FUNCTION PROCESSOR.),,,READ
  7581.  
  7582. .IM SET 2 GENERATE ADDRESSES FOR OVERLAYS
  7583. STAP EQU PRSX STATUS PRIOR TO READ
  7584. SKEI EQU PRSX+1 IF .NE. 0, SKIPEI OR POSMF IN PROGRESS
  7585. WOCN EQU PRSX+2 WORD COUNT AT START OF OPERATION
  7586. ISKR EQU PRSX+3 IF .NE. 0, SKIP REVERSE INSTEAD OF READ
  7587. REVERSE
  7588. RDF SPACE 4,10
  7589. ** RDF - PROCESS READ OPERATION.
  7590. *
  7591. * CALLS FCN, ITM, MRD, TDA.
  7592.  
  7593.  
  7594. ENTRY RDF
  7595. RDF LDC 6 SELECT CLIP LEVEL
  7596. RDFA EQU *-1
  7597. RDFB RJM FCN
  7598. * UJN *+2 (NORMAL CLIP LEVEL)
  7599. * UJN *+2 (CTS)
  7600. RJM ITM INITIATE TAPE MOTION
  7601. RDF1 LDD DS SAVE DEVICE STATUS
  7602. STM STAP
  7603. RJM MRD READ TAPE
  7604. RDFC RJM TDA TRANSFER DATA
  7605. * LJM SKP2 (SKIP FORWARD)
  7606. * LJM SKR4 (SKIP REVERSE)
  7607. * LJM RLA6 (READ CTS LABELS)
  7608. * LJM RLA6.1 (READ NON CTS LABELS)
  7609. * LJM CLA4 (LABEL ERROR PROCESSING)
  7610. RDFD UJN RDF1 LOOP
  7611. * UJN RDF (200 IPS/9 TRACK OR 6250 BPI AT 1X PPU
  7612. * SPEED OR 6250 BPI 200 IPS 2X PPU SPEED)
  7613. TITLE READ - SUBROUTINES.
  7614. MRD SPACE 4,10
  7615. ** MRD - READ TAPE.
  7616. * NO MODIFICATIONS SHOULD BE MADE WITHOUT CHECKING IMPACT ON
  7617. * LONG BLOCK PROCESSING. IF CTS, THE FOLLOWING CODE IS
  7618. * OVERLAYED WITH *RCT*.
  7619. *
  7620. * EXIT (TB) = TERMINATION STATUS.
  7621. *
  7622. * CALLS BCW, CDO, DTS, FCN, MCC, PDA, STW, UBW, VDA, WEO.
  7623. *
  7624. * MACROS SADT.
  7625.  
  7626.  
  7627. MRD SUBR ENTRY/EXIT
  7628. LDN 0 CLEAR ERROR CODE
  7629. STD EC
  7630. STD TB CLEAR TYPE OF BLOCK
  7631.  
  7632. * INPUT DATA BLOCK.
  7633.  
  7634. STM MRDP CLEAR NOISE FLAG
  7635. MRD1 LDC 5005 SET BYTE COUNT FOR I FORMAT READ OR SKIP
  7636. MRDA EQU *-1
  7637. * LDC LBBY (READ LONG BLOCK FULL CHUNK)
  7638. * LDC WC*5+1 (ALL OTHER READ DATA OPERATIONS)
  7639. * LDC LABL+1 (READ LABELS)
  7640. * LDC 5001 (SKIP - NOT LONG BLOCKS)
  7641. * LDC LBBY (SKIP L FORMAT OR LONG BLOCK F FORMAT)
  7642. * LDC SLBY (SKIP LI FORMAT)
  7643. MRD3 IAM BUF,CH INPUT DATA
  7644. MRDB EQU *-1
  7645. * IAM BUFB,CH (READ LONG BLOCK)
  7646. * IAM /RLA/BUF (READ LABEL)
  7647. MRD4 STD T1
  7648. NJN MRD6 IF NOT EXCESS BLOCK LENGTH
  7649. LJM *+2
  7650. * LJM /RLB/RLB5 (READ LONG BLOCKS)
  7651. * LJM /RLB/RLB4 (READ LONG BLOCKS - CYBER 180)
  7652. * LJM /SKP/SLB (SKIP LONG BLOCKS)
  7653. MRDC EQU *-1
  7654. MRD4.1 LDN /MTX/BTL SET BLOCK TOO LONG
  7655. MRD5 RJM MCC MASTER CLEAR CHANNEL
  7656. * LDN 0
  7657. RJM STW GET GENERAL STATUS
  7658. LDN 1 SET TO COMPUTE MAXIMUM BYTE COUNT
  7659. STD T1
  7660. MRD6 LDM MRDA CALCULATE REMAINDER OF CM WORD COUNT
  7661. SBD T1
  7662. STD BY BYTE COUNT READ
  7663. STD SC SAVE ORIGINAL BYTE COUNT
  7664. ZJN MRD7 IF NO DATA READ
  7665. MRDD SBN 2 I FORMAT
  7666. * PSN (SI FORMAT)
  7667. * ADN 4 (ALL OTHER FORMATS)
  7668. STD T2
  7669.  
  7670. * CALCULATE WORD COUNT.
  7671.  
  7672. SHN 1 13*BYTES
  7673. ADD T2
  7674. SHN 2
  7675. ADD T2
  7676. SHN 14 (-6) (13*BYTES)/64
  7677. STD T0
  7678. SHN 6+2 4*13*BYTES (52*BYTES)
  7679. SBD T2 51*BYTES
  7680. ADD T0 (51*BYTES)+((13*BYTES)/64)
  7681. SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
  7682. MRD7 STD WC
  7683. MRDE LPN 3
  7684. * LPN 1 (ATS UNIT)
  7685. MRDF UJN MRD9 7 TRACK AND 9 TRACK CODED
  7686. * ZJN MRD9 (9 TRACK I FORMAT)
  7687. LMN 1
  7688. NJN MRD8 IF NOT MODULO 4, 1
  7689. MRDG SOD BY
  7690. * PSN (ATS UNIT)
  7691. MRD8 SOD BY
  7692.  
  7693. * CHECK AND CONVERT DATA.
  7694.  
  7695. MRD9 LDD EC
  7696. LMN /MTX/BTL
  7697. ZJN MRD10 IF BLOCK TOO LARGE ERROR
  7698. RJM VDA VALIDATE DATA (I FORMAT)
  7699. MRDH EQU *-2
  7700. * UJN *+2 (ALL OTHERS)
  7701. RJM CDO CHECK DROP OUT FLAG
  7702.  
  7703. * PROCESS STATUS.
  7704.  
  7705. MRD9.1 RJM WEO WAIT END OF OPERATION
  7706. SHN 21-10
  7707. MRDI PJN MRD10 IF NOT NOISE BLOCK
  7708. * UJN MRD10 (ATS UNIT)
  7709. AOM MRDP SET NOISE BYPASSED FLAG
  7710. LDN 42 ISSUE REPEAT READ
  7711. RJM FCN
  7712. ACN CH
  7713. LJM MRD1 REINITIATE READ
  7714.  
  7715. MRD10 ZJN MRD11.2 IF NO ERRORS
  7716. SHN 21-4-21+10
  7717. PJN MRD11 IF NOT TAPE MARK
  7718. LDN 3 SET STOP TO EOI
  7719. STD TB
  7720. LDN 17 SET LEVEL NUMBER
  7721. STM LNUM
  7722. LDN 0 CLEAR WORD AND BYTE COUNTS
  7723. STD ES
  7724. STD WC
  7725. STD BY
  7726. LDN /MTX/BEI SET EOI
  7727. STD EC
  7728. LJM MRD16 PROCESS DATA
  7729.  
  7730. MRD11 LDD EC
  7731. ZJN MRD11.1 IF ERROR NOT ALREADY ENCOUNTERED
  7732. LDM MTDS
  7733. LPC 7077
  7734. MRDQ EQU *-1
  7735. * LPC 7777 (ATS UNIT)
  7736. ZJN MRD12 IF NOT FATAL ERROR
  7737. MRD11.1 LDN /MTX/STE STATUS ERROR
  7738. STD EC
  7739. UJN MRD12 NO TAPE ERROR REPORTED FROM HARDWARE
  7740.  
  7741. MRD11.2 LDM MTDS+1
  7742. * UJN MRD12 (NON-GCR UNIT)
  7743. MRDR EQU *-2
  7744. SHN 21-11
  7745. PJN MRD12 IF NO GCR SINGLE TRACK CORRECTION
  7746. AOM ECNT+4 INCREMENT COUNTER
  7747. SHN -14
  7748. RAM ECNT+3 INCREMENT COUNTER FOR OVERFLOW
  7749.  
  7750. * TRANSLATE ODD COUNT TO FILL STATUS.
  7751.  
  7752. MRD12 LDD DS PROCESS ODD COUNT STATUS
  7753. LPN 40
  7754. MRDJ UJN MRD13 7 TRACK, 9 TRACK CODED OR ATS UNIT
  7755. * SHN 0-5 (9 TRACK BINARY)
  7756. ADD SC
  7757. LPN 3
  7758. ZJN MRD13 IF NO FILL STATUS
  7759. LMN 3
  7760. ZJN MRD13 IF (N*3)+1 FRAMES - NO FILL STATUS
  7761. LDN 40 SET FILL STATUS
  7762. MRD13 STD ES CLEAR FILL STATUS
  7763. MRDK UJN MRD14 7 TRACK, 9 TRACK CODED, 9 TRACK I AND ATS
  7764.  
  7765. * CORRECT BYTE COUNT AND CM WORD COUNT.
  7766.  
  7767. * LDD DS (ALL OTHERS)
  7768. LPN 40
  7769. ZJN MRD14 IF NO ODD COUNT
  7770. LDD BY
  7771. LPN 2
  7772. ZJN MRD14 IF NOT MODULO 4, 2 OR 3
  7773. SOD BY CORRECT BYTE COUNT
  7774. SOD WC CORRECT CM WORD COUNT
  7775. MRDL UJN MRD14 SI FORMAT
  7776. * SHN 2 (ALL OTHER FORMATS)
  7777. ADD WC
  7778. SBD BY
  7779. ZJN MRD14 IF NEW CM WORD COUNT CORRECT
  7780. AOD WC
  7781. MRD14 UJN MRD15 NOT I OR 7 TRACK SI FORMAT
  7782. * LDD ES (I OR 7 TRACK SI FORMAT)
  7783. MRDM EQU *-1
  7784. LPN 40
  7785. ZJN MRD15 IF NO FILL STATUS
  7786. LDD EC
  7787. NJN MRD16 IF ERROR ALREADY ENCOUNTERED
  7788. LDN /MTX/STE
  7789. STD EC
  7790. MRD15 LDD EC
  7791. NJN MRD16 IF ERROR
  7792. RJM UBW UPDATE BID WINDOW
  7793. MRD16 LDD EC
  7794. ZJN MRD17 IF NO ERRORS
  7795. RJM DTS DETAIL STATUS
  7796.  
  7797. * THIS MUST BE THE FIRST ADDRESS IN THE TSAD TABLE. PRESET
  7798. * FOR CTS IS HARDCODED TO CHANGE THE FIRST ADDRESS IN THE
  7799. * TABLE.
  7800.  
  7801. SADT .FE,,6,A
  7802. MRD17 LDC * SET FET+6 ADDRESS (FOR BCW)
  7803. RJM PDA PROCESS DATA (I AND SI FORMAT)
  7804. MRDO EQU *-2
  7805. * RJM BCW BUILD CONTROL WORD ( S AND SOME F)
  7806. * RJM /3M /BCW (L FORMAT AND LONG BLOCKS IN F FORMAT)
  7807. * UJN MRD18 (NOT READ DATA)
  7808. MRD18 LDD DS SAVE STATUS FOR ERROR PROCESSOR
  7809. STM //STER
  7810. LJM MRDX RETURN
  7811.  
  7812.  
  7813. MRDP BSS 1 NOISE BYPASSED FLAG
  7814.  
  7815.  
  7816. USE BUFFER
  7817. OVLS BSS 0 OVERLAY ORIGIN FOR SKIP
  7818. CIB SPACE 4,10
  7819. ** CIB - CHECK INPUT BUFFER.
  7820. *
  7821. * ENTRY (CN - CN+4) = IN POINTER.
  7822. *
  7823. * EXIT (A) = WORD COUNT OF FREE BUFFER SPACE.
  7824. *
  7825. * MACROS SADT.
  7826.  
  7827.  
  7828. CIB1 LDD CM+3 LENGTH = OUT - IN - 1
  7829. SBD CN+3
  7830. SHN 14
  7831. ADD CM+4
  7832. SBD CN+4
  7833. SBN 1
  7834. PJN CIBX IF (IN + 1) .LT OUT
  7835. SADT .LF
  7836. ADC * (LIMIT - FIRST)
  7837.  
  7838. CIB SUBR ENTRY/EXIT
  7839. SADT .FE,,3,A
  7840. LDC * READ OUT
  7841. CRD CM
  7842. LDD CM+3
  7843. LPN 37
  7844. STD CM+3
  7845. SHN 14
  7846. LMD CM+4
  7847. SADT .LM,C
  7848. ADC -* (-LIMIT)
  7849. MJN CIB1 IF OUT .LT. LIMIT
  7850. LDN /MTX/BAE BUFFER ARGUMENT ERROR
  7851. LJM RET3 RETURN ERROR CODE
  7852. TDA SPACE 4,15
  7853. ** TDA - TRANSFER DATA.
  7854. * CALCULATES PARAMETERS FOR TRANSFER TO CENTRAL. IT ALSO
  7855. * CHECKS IF TERMINATION CONDITION HAS NOT BEEN MET, THERE
  7856. * IS NO ERROR, AND THE BUFFER WILL STILL HAVE ROOM FOR A
  7857. * BLOCK AFTER THE CURRENT ONE IS TRANSFERRED, THEN MOTION IS
  7858. * STARTED FOR THE NEXT BLOCK.
  7859. *
  7860. * ENTRY (TB) = STATUS OF BLOCK READ.
  7861. * (CN - CN+4) = IN POINTER.
  7862. * (WC) = WORD COUNT TO BE TRANSFERRED TO BUFFER.
  7863. *
  7864. * CALLS CIB, ITM, WCB.
  7865. *
  7866. * MACROS SADT.
  7867.  
  7868.  
  7869. TDA SUBR ENTRY/EXIT
  7870. LDD WC
  7871. TDAA ADN 0 ALLOW FOR CONTROL WORDS
  7872. * ADN 1 (260 READ NOT LONG BLOCKS)
  7873. * ADN 2 (200 READ NOT LONG BLOCKS)
  7874. * PSN (LONG BLOCKS - FLAG FOR OTHER OVERLAYS)
  7875. STD T6
  7876.  
  7877. * LABEL BUFFER - WILL OVERLAY REMAINDER OF *TDA*.
  7878.  
  7879. LBUF EQU * BEGINNING OF LABEL BUFFER
  7880.  
  7881. TDAB UJN TDA1 UPDATE FET POINTERS
  7882. * PSN (READ SKIP)
  7883. RJM CIB CHECK INPUT BUFFER
  7884. SBD T6
  7885. PJN TDA1 IF ROOM IN BUFFER FOR BLOCK
  7886. RAD T6 ADJUST WORDS TO BE TRANSFERRED
  7887. TDA1 LDD CN+3 SAVE IN
  7888. STD T4
  7889. LDD CN+4
  7890. STD T5
  7891. LDN 0 PRESET SECOND PART WORD COUNT
  7892. STD T7
  7893. LDD T6 UPDATE IN
  7894. RAD CN+4
  7895. SHN -14
  7896. RAD CN+3
  7897. SHN 14
  7898. LMD CN+4
  7899. SADT .LM,C
  7900. ADC -* (-LIMIT)
  7901. MJN TDA2 IF NO WRAP AROUND
  7902. STD T7 SET SECOND PART WORD COUNT
  7903. SADT .FT
  7904. ADC * (FIRST)
  7905. STD CN+4 RESET IN
  7906. SHN -14
  7907. STD CN+3
  7908. LDD T6 RESET FIRST PART WORD COUNT
  7909. SBD T7
  7910. STD T6
  7911. TDA2 LDD TB
  7912. TDAC SBN 0 READ STOP CONDITION
  7913. PJN TDA5 IF TERMINATION MET
  7914. RJM CIB CHECK INPUT BUFFER
  7915. SADT .BS,C
  7916. TDAD ADC -* (- MAXIMUM BLOCK SIZE)
  7917. TDAE MJN TDA4 IF NOT ROOM FOR NEXT BLOCK
  7918. * PSN (READ-SKIP)
  7919. SADT .BS,C
  7920. ADC -* (-MAXIMUM BLOCK SIZE)
  7921. SHN -21
  7922. RAM WCBC
  7923. LDD EP CHECK IF ERROR OR RECOVERY IN PROGRESS
  7924. LPN 77
  7925. ADD EC
  7926. ADD DF CHECK DROP OUT FLAG
  7927. NJN TDA3 IF DROP OUT OR ERROR CONDITION
  7928. TDAF RJM ITM INITIATE TAPE MOTION
  7929. * UJN *+2 (LONG BLOCKS / 200 IPS / GCR NOT 2X PPU)
  7930. RJM WCB WRITE CENTRAL BUFFER
  7931. LJM TDAX RETURN
  7932.  
  7933. TDA3 RJM WCB WRITE CENTRAL BUFFER
  7934. LJM RET2 REQUEUE
  7935.  
  7936. TDA4 LDN 0 INDICATE NO COMPLETION
  7937. STD TB
  7938. UJN TDA6 TRANSFER DATA TO CM BUFFER
  7939.  
  7940. TDA5 LDD WC
  7941. NJN TDA6 IF DATA
  7942. STD T6 DO NOT TRANSFER CONTROL WORDS
  7943. LDD T4 BACK UP FET POINTER
  7944. STD CN+3
  7945. LDD T5
  7946. STD CN+4
  7947. TDA6 RJM WCB WRITE CENTRAL BUFFER
  7948. TDAG UJN TDA7 COMPLETE FET
  7949. * LDM LNUM (READSKP)
  7950. CON LNUM
  7951. TDAH SBN 0 LEVEL NUMBER DESIRED
  7952. PJN TDA7 IF TERMINATION MET
  7953. TDAI LDN 4 SET TO SKIP RECORD
  7954. * LDN 10 (IF FILE SKIP REQUIRED)
  7955. STD PB INDICATE TO MAGNET TO SKIP
  7956. LDN /MTX/BEI
  7957. LJM RET3 RETURN ERROR CODE
  7958.  
  7959. TDA7 LDD TB
  7960. ZJN TDA8 IF PRU READ COMPLETE OR BUFFER FULL
  7961. LDD UP SET EOR/EOF FLAG
  7962. SCN 10
  7963. LMN 10
  7964. STD UP
  7965. LDD TB
  7966. ADN 1 RETURN EOR/EOF
  7967. SHN 3+4
  7968. LMM LNUM MERGE LEVEL NUMBER
  7969. SHN 16
  7970. TDA8 ADN 1
  7971. LJM RET SET FET COMPLETE
  7972.  
  7973.  
  7974. ORLA EQU LBUF+CLBL+12 ORIGIN ADDRESS FOR READ LABEL OVERLAY
  7975. WCB SPACE 4,15
  7976. ** WCB - WRITE CENTRAL BUFFER.
  7977. * WRITES DATA TO CENTRAL, THEN CHECKS IF ERROR MUST BE
  7978. * PROCESSED. ERRORS INCLUDE TAPE MARKS AND EOT.
  7979. * IF ERROR, THEN READ ERROR RECOVERY IS CALLED.
  7980. *
  7981. * ENTRY (T4 - T5) = IN POINTER.
  7982. * (T6) = FIRST PART WORD COUNT.
  7983. * (T7) = SECOND PART WORD COUNT.
  7984. *
  7985. * CALLS *CRE*, *REM*.
  7986. *
  7987. * MACROS CALL, SADT.
  7988.  
  7989.  
  7990. WCB SUBR ENTRY/EXIT
  7991. LDD T6
  7992. ZJN WCB1 IF NO FIRST PART
  7993. LDD T4 WRITE FIRST PART
  7994. SHN 6
  7995. ADD RA
  7996. SHN 6
  7997. ADD T5
  7998. CWM BUF,T6
  7999. WCBA EQU *-1
  8000. * CWM BUFC,T6 (CONTROL WORD MODE)
  8001. LDD T7
  8002. ZJN WCB1 IF NO SECOND PART
  8003. LDD T6 SET BUFFER ADDRESS
  8004. SHN 2
  8005. ADD T6
  8006. ADM WCBA
  8007. STM WCBB
  8008. SADT .FT,,,A
  8009. LDC * (FIRST+RA)
  8010. CWM *,T7
  8011. WCBB EQU *-1
  8012. WCB1 LDD EP
  8013. LPN 77
  8014. ADD EC
  8015. ZJN WCB2 IF NO ERROR ENCOUNTERED
  8016. WCBF CALL REM LOAD READ ERROR PROCESSOR
  8017. * CALL CRE LOAD ERROR PROCESSOR (CTS)
  8018. SADT .FE,,2,A
  8019. WCB2 LDC * UPDATE IN POINTER IN FET
  8020. CWD CN
  8021. WCBC LDN 0 RECALL CPU FLAG
  8022. ZJN WCB3 IF NO RECALL CPU
  8023. LDD OA RECALL CPU
  8024. CWM WCBE,ON
  8025. SOM WCBC
  8026. WCB3 AOD BL+1 INCREMENT BLOCK COUNT
  8027. SHN -14
  8028. RAD BL
  8029. AOD BT INCREMENT BLOCKS TRANSFERRED
  8030. LJM WCBX
  8031. WCBD EQU *-1
  8032. * LJM RET4 (FATAL READ ERROR)
  8033.  
  8034. WCBE CON DRCM DRIVER RECALL CPU MONITOR FUNCTION
  8035. SPACE 4,10
  8036. OVLB BSS 0 FWA OF OVERLAID CODE
  8037.  
  8038. * WARNING ..........
  8039. *
  8040. * THE FOLLOWING ROUTINES CANNOT USE ADDRESS MODIFICATION.
  8041.  
  8042. VDA SPACE 4,10
  8043. ** VDA - VALIDATE DATA.
  8044. * CHECKS I FORMAT TRAILER INFORMATION.
  8045.  
  8046.  
  8047. VDA SUBR ENTRY/EXIT
  8048. LDD BY
  8049. ZJN VDAX IF NO DATA READ
  8050. LDD EP
  8051. SHN 21-12
  8052. MJN VDAX IF OPPOSITE PARITY BEING TRIED
  8053. LDM BUF-4,BY SAVE BLOCK LENGTH
  8054. STM //BNEI
  8055. LDM BUF-3,BY
  8056. STM //BNEI+1
  8057. LMD BL
  8058. SHN 14
  8059. LMM BUF-2,BY
  8060. STM //BNEI+2
  8061. LMD BL+1
  8062. NJN VDA1 IF BLOCK NUMBER ERROR
  8063. LDM //BNEI
  8064. LMD BY
  8065. ZJN VDAX IF CORRECT BLOCK LENGTH
  8066. VDA1 LDN /MTX/BNE
  8067. STD EC
  8068. UJN VDAX RETURN
  8069. PDA SPACE 4,10
  8070. ** PDA - PROCESS DATA.
  8071. * PROCESSES INTERNAL FORMAT LEVEL NUMBERS.
  8072. *
  8073. * (TB) = TERMINATION STATUS.
  8074.  
  8075.  
  8076. PDA SUBR
  8077. PDAA UJN PDA1 I FORMAT
  8078. * LDD ES (SI FORMAT)
  8079. LPN 40
  8080. ZJN PDA1 IF NO FILL STATUS
  8081. LDD WC
  8082. ZJN PDA1 IF NOISE RECORD
  8083. SOD WC DECREMENT WORD COUNT
  8084. SOD BY DECREMENT BYTE COUNT
  8085. PDA1 LDD BY
  8086. ZJN PDA4 IF NO BYTES READ
  8087. LMM MRDA
  8088. PDAC EQU *-1
  8089. * LMM RCTA (CTS)
  8090. LMN 1
  8091. STM BUFL SET 0 LEVEL NUMBER
  8092. ZJN PDA3 IF FULL PRU
  8093. LDM BUF-1,BY SET LEVEL NUMBER FOR CONTROL WORD
  8094. LPN 17
  8095. STM BUF-4,BY
  8096. STM LNUM
  8097. LMN 17
  8098. ZJN PDA2 IF EOF
  8099. LCN 1
  8100. PDA2 ADN 2
  8101. PDA3 STD TB SET BLOCK STATUS
  8102. PDA4 LDD WC
  8103. SHN 2
  8104. PDAB ADD WC (200 READ)
  8105. * LDD WC (260 READ)
  8106. STM BUFC+4
  8107. LJM PDAX
  8108.  
  8109. .BCWA BSS 0
  8110. BUF SPACE 4,10
  8111. BUFFER
  8112. BCW SPACE 4,10
  8113. ** BCW - BUILD CONTROL WORD.
  8114. * OVERLAYS *VDA* AND *PDA* FOR ALL FORMATS EXCEPT I AND SI.
  8115. *
  8116. * ENTRY (A) = ABSOLUTE ADDRESS OF FET+6.
  8117. *
  8118. * EXIT (FET+6) UPDATED IF NON-CONTROL WORD READ.
  8119. *
  8120. * USES CM - CM+4.
  8121.  
  8122.  
  8123. .BCWB BSS 0
  8124. LOC OVLB
  8125.  
  8126. BCW6 LDD T1 SET UBC IN FET
  8127. STD CM+2
  8128. LDC *
  8129. BCWG EQU *-2
  8130. CWD CM
  8131.  
  8132. BCW SUBR ENTRY/EXIT
  8133. CRD CM READ FET+6
  8134. STM BCWG+1 SAVE ADDRESS
  8135. SHN -14
  8136. LMC LDCI
  8137. STM BCWG
  8138. LDD WC CALCULATE UNUSED BIT COUNT
  8139. SHN 2
  8140. ADD WC
  8141. STD T1
  8142. ZJN BCW1 IF NO WORDS
  8143. BCWA LDN 0 SET BLOCK STATUS
  8144. * LDN 1 (S/L FORMAT NOT 200/260 CODE)
  8145. STD TB
  8146. LDN 0 SET LEVEL NUMBER
  8147. STM BUF,T1
  8148. STM LNUM
  8149. BCW1 STD T1
  8150. LDD WC
  8151. BCWB EQU *-1
  8152. * LDD BY (200 READ CODE)
  8153. STM BUFC+4
  8154. BCWC UJN BCW2 CALCULATE UNUSED BIT COUNT
  8155. * SHN 2
  8156. ADD WC
  8157. SBD BY
  8158. SHN 2 4 * UNUSED BYTE COUNT
  8159. STD T1
  8160. SHN 1 8 * UNUSED BYTE COUNT
  8161. RAD T1 12 * UNUSED BYTE COUNT
  8162. BCW2 LDD ES
  8163. LPN 40
  8164. BCWD ZJN BCW3 IF NO FILL STATUS
  8165. * ZJN BCW5 (9 TRACK BINARY OR CTS)
  8166. LDD WC
  8167. ZJN BCW4 IF ZERO WORDS
  8168. BCWE LDN 6 (7 TRACK OR 9 TRACK CODED)
  8169. * LDN 8D (9 TRACK BINARY OR CTS)
  8170. BCW3 RAD T1
  8171. BCW4 STM BUFC+2
  8172. LJM BCWX RETURN
  8173. * LJM BCW6 (S/L FORMAT NON-CONTROL WORD READ)
  8174. BCWF EQU *-1
  8175.  
  8176. BCW5 LDD BY
  8177. LPN 1
  8178. SHN 2
  8179. UJN BCW3 SET UNUSED BIT COUNT
  8180.  
  8181. .BCWC BSS 0
  8182. LOC *O
  8183. .BCWL EQU *-.BCWB
  8184. ERRNG .BCWA-.BCWC OVERLAID CODE OVERFLOW
  8185. TITLE READ - PRESET.
  8186. PRS SPACE 4,20
  8187. ** PRS - PRESET.
  8188. *
  8189. * ENTRY FOR A READ FUNCTION THAT IS NOT LONG BLOCKS THIS
  8190. * PRESET CODE RETURNS TO THE CALLER, LOADS AND
  8191. * EXECUTES OVERLAY *CPP*, THEN ENTERS AT *PRS39.
  8192. *
  8193. * EXIT (WP, EP+1) PLUS THE BLOCK NUMBER IN (BL,BL+1) IS THE
  8194. * PHYSICAL BLOCK NUMBER FOR CTS.
  8195. * (SC) = 1 IF *RLB* MUST BE LOADED.
  8196. * (SC) = 2 IF *RLI* MUST BE LOADED.
  8197. * TO *RDF* IF READ FUNCTION AND NOT LONG BLOCKS.
  8198. *
  8199. * USES BT, CN, CN+4, SC, T1, T2, T8.
  8200. *
  8201. * CALLS CIB, MCH, /PRESET/RBI.
  8202. *
  8203. * MACROS ISTORE.
  8204. *
  8205. * NOTE OVERLAY *RLB* MUST IMMEDIATELY FOLLOW *READ* AND
  8206. * OVERLAY *RLI* MUST IMMEDIATELY FOLLOW *RLB*.
  8207.  
  8208.  
  8209. PRS LDD HP
  8210. SHN 21-7
  8211. PJN PRS0 IF NOT CTS
  8212. LDD BL
  8213. ADD BL+1
  8214. NJN PRS0 IF STARTING BLOCK ID ALREADY SAVED
  8215. RJM /PRESET/RBI READ BLOCK ID
  8216. AOM /PRESET/PICA LOCATE BLOCK NECESSARY IN ERROR RECOVERY
  8217. LDM BIDW+1
  8218. STD WP SAVE CURRENT BLOCK ID
  8219. LDM BIDW+2
  8220. STD EP+1
  8221. PRS0 LDD FM
  8222. SHN -6
  8223. STD T8 SET FORMAT
  8224. LMN /MTX/TFLI
  8225. NJN PRS0.1 IF NOT LI FORMAT
  8226. LDD FN
  8227. LMN /MTX/RDF
  8228. NJN PRS0.1 IF NOT READ FUNCTION
  8229. LDN 2
  8230. RAD SC SET TO LOAD READ LI FORMAT OVERLAY
  8231. LJM PRSX RETURN
  8232.  
  8233. PRS0.1 LDD HP
  8234. SHN 21-7
  8235. PJN PRS0.2 IF NOT CTS
  8236. LDC UJNI+2
  8237. STM RDFB SKIP CLIP LEVEL FUNCTION
  8238. LDC RCTA
  8239. STM PDAC
  8240. LDC LDNI+CRE/10000 CALL CTS ERROR PROCESSOR
  8241. STM WCBF
  8242. LJM PRS6 CONTINUE PRESET
  8243.  
  8244. PRS0.2 LDC PRSD MODIFY CHANNELS
  8245. RJM //MCH
  8246. LDD HP
  8247. LPN 20
  8248. ZJN PRS1 IF MTS UNIT
  8249. LDN 0 MODIFY INSTRUCTIONS FOR ATS CONTROLLER
  8250. STM MRDG
  8251. LCN 0
  8252. STM MRDQ
  8253. LCN 2
  8254. RAM MRDE
  8255. LDM PRSG
  8256. STM PRSA
  8257. LDC UJNI-PJNI
  8258. RAM MRDI
  8259. LDD HP
  8260. SHN 21-1
  8261. PJN PRS0.3 IF NOT GCR UNIT
  8262. ISTORE MRDR,(UJN MRD12) DISABLE CORRECTED ERROR CHECK
  8263. PRS0.3 LDM ATUS SET FOR DENSITY CHECK
  8264. PRS1 STD T1
  8265. LDD HP
  8266. LPN 1
  8267. NJN PRS2 IF 9 TRACK DRIVE
  8268. LJM PRS9 CONTINUE PRESET
  8269.  
  8270. * PRESET FOR MTS/ATS 9 TRACK OPERATION.
  8271.  
  8272. PRS2 LDD T1 DETERMINE IF 6250 BPI
  8273. LPN 30
  8274. LMN 30
  8275. NJN PRS3 IF NOT 6250 BPI
  8276. LDM DLYA
  8277. LPN 14
  8278. ZJN PRS5 IF 1X PPU SPEED
  8279. LPN 4
  8280. ZJN PRS4 IF 2X PPU
  8281. UJN PRS6 4X PPU, FULL MOTION AHEAD
  8282.  
  8283. PRS3 LDM DLYA
  8284. LPN 14
  8285. NJN PRS6 IF 2X OR 4X PPU SPEED
  8286. PRS4 LDD HP
  8287. LPN 10
  8288. LMN 10
  8289. NJN PRS6 IF NOT 200 IPS UNIT
  8290. PRS5 LDC UJNI+2 DISABLE MOTION AHEAD
  8291. STM TDAF
  8292. LDM PRSF
  8293. STM RDFD
  8294. PRS6 LDD MD
  8295. SHN 21-6
  8296. MJN PRS9 IF CODED
  8297.  
  8298. * 9 TRACK BINARY.
  8299.  
  8300. LDD HP
  8301. LPN 20
  8302. NJN PRS7 IF ATS CONTROLLER
  8303. LDC SHNI+72
  8304. STM MRDJ
  8305. PRS7 LDD T8
  8306. LMN /MTX/TFI
  8307. ZJN PRS8 IF I FORMAT
  8308. PRSA LDC LDDI+DS
  8309. * UJN PRS9 (ATS CONTROLLER)
  8310. STM MRDK
  8311. LDD T8
  8312. LMN /MTX/TFSI
  8313. ZJN PRS9 IF SI FORMAT
  8314. LDC SHNI+2
  8315. STM MRDL
  8316. UJN PRS9 SAVE WORD COUNT
  8317.  
  8318. PRS8 LDC ZJNI-UJNI
  8319. RAM MRDF
  8320. LDC ZJNI-UJNI
  8321. RAM RCTF+.RCT-RCTX (CTS)
  8322. PRS9 LDD WC SAVE BEGINNING WORD COUNT
  8323. STM WOCN
  8324. LDD UP
  8325. SCN 10 CLEAR EOR/EOF FLAG
  8326. STD UP
  8327. LDD FN
  8328. LMN /MTX/RDF
  8329. ZJN PRS11 IF READ
  8330. LMN /MTX/SKP&/MTX/RDF
  8331. ZJN PRS10 IF SKIP
  8332. LDN /MTX/TFF PROCESS AS IF F FORMAT
  8333. STD T8
  8334. PRS10 LDC UJNI+MRD18-MRDO
  8335. ERRNG MRDO-MRD18+37
  8336. STM MRDO
  8337. STM RCTL+.RCT-RCTX (CTS)
  8338. PRS11 LDD MD
  8339. LPN 60
  8340. NJN PRS12 IF CONTROL WORD REQUEST
  8341. LDD T8
  8342. LMN /MTX/TFS
  8343. ZJN PRS15 IF S FORMAT
  8344. LMN /MTX/TFL&/MTX/TFS
  8345. ZJN PRS15 IF L FORMAT
  8346. UJN PRS13 CONTINUE PRESET
  8347.  
  8348. PRS12 SHN -4 ALLOW SPACE FOR CONTROL WORDS
  8349. RAM TDAA
  8350. LCN BUF-BUFC RESET BUFFER WRITE ADDRESS
  8351. RAM WCBA
  8352. PRS13 LDD T8
  8353. SBN /MTX/TFSI+1
  8354. PJN PRS16 IF NOT I OR SI
  8355. LDD MD
  8356. LPN 40
  8357. NJN PRS14 IF 200 READ
  8358. LDC LDDI+WC
  8359. STM PDAB
  8360. PRS14 LJM PRS20 CONTINUE PRESET
  8361.  
  8362. PRS15 AOM BCWA+.BCWB-OVLB SET TO RETURN EOR ALWAYS
  8363. LDC BCW6 ENABLE RETURN OF MLRS
  8364. STM BCWF+.BCWB-OVLB
  8365. PRS16 LDN .BCWL-1 MOVE *BCW*
  8366. STD T1
  8367. PRS17 LDM .BCWB,T1
  8368. STM OVLB,T1
  8369. SOD T1
  8370. PJN PRS17 IF STILL MORE CODE TO MOVE
  8371. LDC BCW ENABLE CODE
  8372. STM MRDO+1
  8373. STM RCTL+1+.RCT-RCTX (CTS)
  8374. LDD MD
  8375. SHN 21-6
  8376. MJN PRS18 IF CODED
  8377. LDD HP
  8378. SHN 21-7
  8379. MJN PRS17.1 IF CTS
  8380. SHN 21-0-21+7
  8381. PJN PRS18 IF 7 TRACK
  8382. PRS17.1 LDN BCW5-BCW3 MODIFY UBC CODE FOR 9 TRACK AND CTS
  8383. RAM BCWD
  8384. LDN 2
  8385. RAM BCWE
  8386. PRS18 LDD MD
  8387. LPN 40
  8388. NJN PRS19 IF 200
  8389. LDC SHNI+2
  8390. STM BCWC
  8391. UJN PRS20 CONTINUE PRESET
  8392.  
  8393. PRS19 LDC LDDI+BY
  8394. STM BCWB
  8395. PRS20 LDC TRSO
  8396. STD T1
  8397. LDN 0
  8398. UJN PRS22 SET READ STOP CONDITION
  8399.  
  8400. PRS21 LDN 2 ADVANCE TABLE
  8401. RAD T1
  8402. LDI T1
  8403. ZJN PRS25 IF END OF TABLE
  8404. PRS22 LMM CIOE
  8405. LPC 774
  8406. NJN PRS21 IF NOT MATCH
  8407. AOD T1
  8408. LDD T8
  8409. LMN /MTX/TFS
  8410. ZJN PRS23 IF S FORMAT
  8411. LMN /MTX/TFL&/MTX/TFS
  8412. NJN PRS24 IF NOT L FORMAT
  8413. PRS23 LDI T1 SELECT S/L PORTION OF TABLE
  8414. SHN -6
  8415. STI T1
  8416. PRS24 LDM LNUM
  8417. SHN -10
  8418. STD T2
  8419. LMN 17
  8420. NJN PRS25 IF NOT LEVEL 17
  8421. LDI T1
  8422. SHN -3
  8423. STI T1
  8424. LDN 10-4 SET FILE SKIP FOR *READSKP*
  8425. RAM TDAI
  8426. PRS25 LDI T1 SET STOP CONDITION
  8427. LPN 3
  8428. RAM TDAC
  8429. LDM CIOE
  8430. LPC 774
  8431. LMN 20
  8432. NJN PRS27 IF NOT READ SKIP
  8433. STM TDAB
  8434. STM TDAE
  8435. LDC UJNI-PJNI
  8436. RAM PRSC
  8437. LDC LDMI
  8438. STM TDAG
  8439. LDD T2
  8440. ZJN PRS27 IF LEVEL 0
  8441. LMN 17
  8442. ZJN PRS26 IF LEVEL 17
  8443. LDD T8
  8444. SBN /MTX/TFSI+1
  8445. PJN PRS27 IF NOT I/SI FORMAT
  8446. PRS26 LDD T2 SET LEVEL NUMBER
  8447. RAM TDAH
  8448. PRS27 LDD T8
  8449. LMN /MTX/TFI
  8450. ZJN PRS28 IF I FORMAT
  8451. LDD WC SET BYTES TO READ
  8452. SHN 2
  8453. ADD WC
  8454. ADN 1
  8455. STM MRDA
  8456. STM RCTA+.RCT-RCTX (CTS)
  8457. LDC UJNI+2 DISABLE VALIDATE DATA
  8458. STM MRDH
  8459. STM RCTG+.RCT-RCTX (CTS)
  8460. PRS28 LDD T8
  8461. SBN /MTX/TFSI+1
  8462. PJN PRS31 IF NOT I OR SI
  8463. LDD HP
  8464. SHN 21-7
  8465. MJN PRS28.1 IF CTS
  8466. SHN 21-0-21+7
  8467. PJN PRS29 IF 7 TRACK
  8468. PRS28.1 LDD T8
  8469. LMN /MTX/TFSI
  8470. ZJN PRS30 IF SI FORMAT
  8471. PRS29 LDC LDDI+ES FORCE FILL STATUS TO ALWAYS BE ERROR
  8472. STM MRDM
  8473. LDC ZJNI-UJNI
  8474. RAM RCTJ+.RCT-RCTX (CTS)
  8475. UJN PRS31 CONTINUE PRESET
  8476.  
  8477. PRS30 LDC LDDI+ES
  8478. STM PDAA
  8479. PRS31 LDD T8
  8480. LMN /MTX/TFI
  8481. ZJN PRS33 IF I FORMAT
  8482. LMN /MTX/TFSI&/MTX/TFI
  8483. ZJN PRS32 IF SI FORMAT
  8484. LDC ADNI+4
  8485. PRS32 STM MRDD
  8486. STM RCTE+.RCT-RCTX (CTS)
  8487. PRS33 LDN 40 SELECT READ FUNCTION
  8488. STM //ITMA
  8489. LDD HP
  8490. SHN 21-7
  8491. MJN PRS34 IF CTS
  8492. LDC 4435
  8493. STM //WEOA
  8494. LDN 1
  8495. STM //WEOB
  8496. LDD EP SET CLIPPING LEVEL
  8497. LPC 700
  8498. ZJP PRS34.2 IF NORMAL CLIP LEVEL
  8499. RAM RDFA
  8500. UJP PRS35 CONTINUE PRESET
  8501.  
  8502. * REPLACE *MRD* WITH READ ROUTINE *RTC* FOR CTS.
  8503.  
  8504. PRS34 LDC .RCTL-1
  8505. STD T1 LENGTH OF CODE TO MOVE
  8506. PRS34.1 LDM .RCT,T1
  8507. STM MRDX,T1
  8508. SOD T1
  8509. PJN PRS34.1 IF MORE CODE TO MOVE
  8510. LDC .RCTA
  8511. RJM MCH MODIFY CHANNEL INSTRUCTIONS
  8512.  
  8513. * THE SADT MACRO FOR *MRD17* MUST BE THE FIRST ONE IN
  8514. * THE OVERLAY.
  8515.  
  8516. LDC RCTK*2
  8517. STM PRSE
  8518. LDC 6125 BITS TO TEST IN GENERAL STATUS
  8519. STM /PRESET/WFEA
  8520. LDN 1 BITS IN GENERAL STATUS THAT SHOULD BE SET
  8521. STM /PRESET/WFEB
  8522. LDD FN
  8523. LMN /MTX/RDF
  8524. NJN PRS35 IF NOT READ DATA
  8525. LDD T8
  8526. LMN /MTX/TFS
  8527. NJN PRS35 IF NOT S FORMAT
  8528. LDD MD
  8529. SHN 21-6
  8530. PJN PRS35 IF NOT CODED
  8531. LDN CLBL+1
  8532. STM RCTA LABEL LENGTH + 1
  8533. UJN PRS35 SET TO MODIFY INSTRUCTIONS
  8534.  
  8535. PRS34.2 LDC UJNI+2 DISABLE CLIP LEVEL SELECTION
  8536. STM RDFB
  8537. PRS35 LDC PRSE SET TO MODIFY INSTRUCTIONS
  8538. STD CN
  8539. LDN 2 SET TO FETCH IN POINTER
  8540. STD CN+4
  8541. LDC /SRU/ITRW*100 SET SRU INCREMENT
  8542. STM //CECA
  8543. LDD FN
  8544. LMN /MTX/RDF
  8545. NJN PRS38 IF NOT READ
  8546. LDD OV
  8547. ZJN PRS37 IF NOT POSSIBLE LONG BLOCKS
  8548. LDD T8
  8549. LMN /MTX/TFL
  8550. ZJN PRS36 IF L FORMAT
  8551. LMN /MTX/TFF&/MTX/TFL
  8552. NJN PRS37 IF NOT F FORMAT
  8553. PRS36 AOD SC SET TO LOAD LONG BLOCK OVERLAY
  8554. PRS37 LDC PRS39 SET TO RETURN HERE IF READ DATA
  8555. STD BT
  8556. PRS38 LJM PRSX RETURN
  8557.  
  8558. * RETURN HERE IF READ DATA, NOT LONG BLOCKS.
  8559.  
  8560. PRS39 LDM TDAD SET BLOCK SIZE
  8561. STM PRSB
  8562. LDM TDAD+1
  8563. STM PRSB+1
  8564. RJM CIB CHECK INPUT BUFFER
  8565. PRSB ADC -* (- MAXIMUM BLOCK SIZE)
  8566. PRSC PJN PRS40 IF ENOUGH ROOM IN BUFFER
  8567. * UJN PRS40 (READSKP)
  8568. LDN 1
  8569. LJM RET SET FET COMPLETE
  8570.  
  8571. PRS40 LDN 0 PRESET EXIT CONDITION
  8572. STD PB
  8573. LJM RDF ENTER READ CODE
  8574.  
  8575.  
  8576. PRSD CHTB
  8577.  
  8578. * THE FIRST ENTRY IN THIS TABLE MUST BE FROM *MRD17*. CTS
  8579. * PRESET CHANGES THE FIRST ENTRY.
  8580.  
  8581. PRSE TSAD
  8582.  
  8583. PRSF BSS 0
  8584. LOC RDFD
  8585. UJN RDF LOOP FOR NEXT BLOCK
  8586. LOC *O
  8587.  
  8588. PRSG BSS 0
  8589. LOC PRSA
  8590. UJN PRS9 CONTINUE PRESET
  8591. LOC *O
  8592. TRSO SPACE 4,10
  8593. ** TRSO - TABLE OF READ STOP CODES.
  8594.  
  8595.  
  8596. TRSO BSS 0
  8597. CON 0,0000
  8598. CON 10,0011
  8599. CON 20,0011
  8600. CON 200,2323
  8601. CON 250,2222
  8602. CON 260,2222
  8603. CON 600,0033
  8604. CON 0
  8605. RCT SPACE 4,20
  8606. ** RCT - READ CARTRIDGE TAPE.
  8607. *
  8608. * ENTRY AT *RCT2* FROM /RLB/CLB TO INPUT LAST CHUNK.
  8609. * AT *RCT3* FROM /RLB/CLB IF *1LT* INPUT LAST CHUNK.
  8610. * AT *RCT4* FROM */SKP/SLB* IF BLOCK TOO LONG.
  8611. * AT *RCT5* FROM */SKP/SLB* IF BLOCK NOT TOO LONG.
  8612. * AT *RCT5* FROM /RLB/CLB IF *1LT* COMPLETED TRANSFER.
  8613. * AT *RCT6* FROM /RLB/CLB IF *1MT* COMPLETED TRANSFER.
  8614. * AT *RCT13* FROM /RLA/RLA IF BACKSPACE.
  8615. *
  8616. * EXIT (EC) = ERROR CODE, 0 IF NO ERROR.
  8617. * (TB) = TYPE OF BLOCK.
  8618. * (WC) = WORD COUNT FOR TRANSFER TO CENTRAL.
  8619. * (BY) = BYTES READ.
  8620. * (ES) = 0 IF NO FILL STATUS.
  8621. * TO */SKP/SLB* IF SKIP LONG BLOCK, NOT LAST CHUNK.
  8622. * TO */RLB/CLB1* IF COMMAND RETRY FOR READ LONG BLOCK.
  8623. *
  8624. * USES T1, T2.
  8625. *
  8626. * CALLS BCW, *CCL*, CDO, /RLB/CRA, PDA, VDA, /PRESET/WFE.
  8627. *
  8628. * MACROS CALL, SADT.
  8629. *
  8630. * NOTE OVERLAY *RLI* READS CARTRIDGE TAPE FOR LI FORMAT.
  8631.  
  8632.  
  8633. .RCT BSS 0
  8634. LOC MRDX
  8635. RCT SUBR ENTRY/EXIT
  8636. RCT1 LDN 0 CLEAR ERROR CODE
  8637. STD EC
  8638. STD TB CLEAR TYPE OF BLOCK
  8639. LDC 5005 SET BYTE COUNT FOR I FORMAT READ OR SKIP
  8640. RCTA EQU *-1
  8641. * LDC LBBY (READ LONG BLOCK FULL CHUNK)
  8642. * LDC WC*5+1 (ALL OTHER READ DATA OPERATIONS)
  8643. * LDC CLBL+1 (READ LABELS)
  8644. * LDC 5001 (SKIP - NOT LONG BLOCKS)
  8645. * LDC LBBY (SKIP L FORMAT OR LONG BLOCK F FORMAT)
  8646. * LDC SLBY (SKIP LI FORMAT)
  8647. RCT2 IAM BUF,CH INPUT DATA
  8648. RCTB EQU *-1
  8649. * IAM BUFB,CH (READ LONG BLOCK)
  8650. * IAM /RLA/BUF,CH (READ LABEL)
  8651. RCT3 STD T1
  8652. NJN RCT6 IF NOT EXCESS BLOCK LENGTH
  8653. LJM *+2
  8654. RCTC EQU *-1
  8655. * LJM /SKP/SLB (SKIP LONG BLOCKS AND SKIP LI FORMAT)
  8656.  
  8657. * THROW AWAY DATA WHEN THE BLOCK IS TOO LONG. IF THE DATA
  8658. * IS NOT TAKEN, OVERRUN ERRORS COULD OCCUR. ALSO, WITH A
  8659. * CROSS-COUPLED CONTROLLER, THE CONTROLLER HUNG WITH CHLA
  8660. * 030F FLASHING ON ITS ERROR DISPLAY.
  8661.  
  8662. RCT4 LDC 500
  8663. IAM ERLB,CH
  8664. ZJN RCT4 IF THERE MAY BE MORE DATA
  8665. LDN /MTX/BTL SET BLOCK TOO LONG
  8666. STD EC
  8667. LDN 1 SET TO COMPUTE MAXIMUM BYTE COUNT
  8668. RCT5 STD T1
  8669. RCT6 LDM RCTA CALCULATE REMAINDER OF CM WORD COUNT
  8670. SBD T1
  8671. STD BY BYTE COUNT READ
  8672.  
  8673. * PROCESS STATUS.
  8674.  
  8675. RJM /PRESET/WFE WAIT FOR END OF OPERATION
  8676. PJN RCT8 IF NOT COMMAND RETRY
  8677. LDN 0
  8678. RCTD EQU *-1
  8679. * UJN RCT7 (LONG BLOCK)
  8680. UJN RCT6.1 SKIP CLEAR OF CHUNK COUNT
  8681. RCTM EQU *-1
  8682. * STM /SKP/IDFE (SKIP LI FORMAT)
  8683. CON /SKP/IDFE
  8684. RCT6.1 ACN CH
  8685. LJM RCT1 READ THE DATA AGAIN
  8686.  
  8687. RCT7 RJM /RLB/CRA READ *1LT* INTERFACE WORD
  8688. NJN RCT7 IF *1LT* TRANSFER TO CM NOT COMPLETE
  8689. ACN CH
  8690. LDM /RLB/BCWC BACK UP POINTERS
  8691. STD CN+3
  8692. LDM /RLB/BCWD
  8693. STD CN+4
  8694. LJM /RLB/CLB1 RESEND THE DATA
  8695.  
  8696. RCT8 STM RCTH
  8697. LDD FN
  8698. LMN /MTX/RDF
  8699. NJN RCT10 IF NOT READ
  8700. LDD MD
  8701. SHN 21-6
  8702. PJN RCT10 IF NOT CODED
  8703. LDD BY
  8704. ZJN RCT10 IF NO DATA READ
  8705. LMN CLBL
  8706. NJN RCT9 IF BLOCK TOO SHORT
  8707. LDC LPNI
  8708. STM RCTI TO INDICATE NO FILL STATUS
  8709. CALL CCL CODE CONVERT LABEL
  8710. LDN LABL LABEL LENGTH AFTER CONVERSION
  8711. STD BY
  8712. LDD DS
  8713. LPN 40
  8714. NJN RCT10 IF FILL STATUS
  8715. RCT9 LDN /MTX/BTL BLOCK LENGTH ERROR
  8716. STD EC
  8717. RCT10 LDD BY
  8718. ZJN RCT11 IF NO DATA READ
  8719. SBN 2 I FORMAT
  8720. RCTE EQU *-1
  8721. * PSN (SI FORMAT)
  8722. * ADN 4 (ALL OTHER FORMATS)
  8723. STD T2
  8724.  
  8725. * CALCULATE WORD COUNT.
  8726.  
  8727. SHN 1 13*BYTES
  8728. ADD T2
  8729. SHN 2
  8730. ADD T2
  8731. SHN 14 (-6) (13*BYTES)/64
  8732. STD T0
  8733. SHN 6+2 4*13*BYTES (52*BYTES)
  8734. SBD T2 51*BYTES
  8735. ADD T0 (51*BYTES)+((13*BYTES)/64)
  8736. SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
  8737. RCT11 STD WC
  8738. LPN 1
  8739. UJN RCT12 CHECK AND CONVERT DATA (CODED)
  8740. RCTF EQU *-1
  8741. * ZJN RCT12 (I FORMAT)
  8742. SOD BY
  8743.  
  8744. * CHECK AND CONVERT DATA.
  8745.  
  8746. RCT12 RJM VDA VALIDATE DATA (I FORMAT)
  8747. RCTG EQU *-2
  8748. * UJN *+2 ALL OTHER FORMATS
  8749. RJM CDO CHECK DROP OUT FLAG
  8750. LDC * ERROR STATUS FROM *WFE*
  8751. RCTH EQU *-1
  8752. RCT13 ZJN RCT15 IF NO ERROR
  8753. SHN 21-4
  8754. PJN RCT14 IF NOT TAPE MARK
  8755. LDN 3 SET STOP TO EOI
  8756. STD TB
  8757. LDN 17 SET LEVEL NUMBER
  8758. STM LNUM
  8759. LDN 0 CLEAR WORD AND BYTE COUNTS
  8760. STD ES
  8761. STD WC
  8762. STD BY
  8763. LDN /MTX/BEI SET EOI
  8764. STD EC
  8765. UJN RCT16 PROCESS DATA
  8766.  
  8767. RCT14 LDN /MTX/STE
  8768. STD EC STATUS ERROR
  8769. RCT15 LDD DS
  8770. LPN 40
  8771. RCTI EQU *-1
  8772. * LPN 0 S FORMAT READ
  8773. STD ES
  8774. UJN RCT16 SET FET+6 ADDRESS
  8775. RCTJ EQU *-1
  8776. * ZJN RCT16 IF NO FILL STATUS (I FORMAT)
  8777. LDN /MTX/STE
  8778. STD EC STATUS ERROR
  8779. * SADT .FE,,6,A
  8780. RCT16 LDC * SET FET+6 ADDRESS (FOR BCW)
  8781. RCTK EQU *-2
  8782. RJM PDA PROCESS DATA (I AND SI FORMAT)
  8783. RCTL EQU *-2
  8784. * RJM BCW BUILD CONTROL WORD (S AND SOME F)
  8785. * RJM /3M /BCW (L FORMAT AND LONG BLOCKS IN F FORMAT)
  8786. * UJN RCT17 (NOT READ DATA)
  8787. ERRNZ MRD18-MRDO-RCT17+RCTL IF MODIFYING WRONG ADDRESS
  8788. RCT17 LJM RCTX RETURN
  8789. ERRMI OVLS-*
  8790. LOC *O
  8791. .RCTL EQU *-.RCT LENGTH OF *RCT*
  8792.  
  8793. .RCTA CHTB CHANNEL TABLE
  8794. OVERLAY (READ LONG BLOCK PROCESSOR.),(BUFC+5),,RLB
  8795. .IM SET 1 SET FOR ADDRESS MODIFICATION ON ERRORS
  8796. RLB SPACE 4,10
  8797. ** RLB - READ LONG BLOCK.
  8798. *
  8799. * CALLS ADP, /READ/CIB, CRA, FCN, ITM, /READ/MRD, SRQ,
  8800. * /READ/TDA, WDA.
  8801. *
  8802. * MACROS SADT.
  8803.  
  8804.  
  8805. ENTRY RLB
  8806. RLB RJM /READ/CIB CHECK INPUT BUFFER
  8807. SADT .BS,C
  8808. ADC -* (-MAXIMUM BLOCK SIZE)
  8809. RLBA PJN RLB1 IF ENOUGH ROOM IN BUFFER
  8810. * UJN RLB1 READ SKIP
  8811. LDN 1
  8812. LJM RET SET FET COMPLETE
  8813.  
  8814. RLB1 LDD CN+3 SAVE STARTING IN POINTER
  8815. STM BCWC
  8816. LDD CN+4
  8817. STM BCWD
  8818.  
  8819. * THE FOLLOWING CODE IS OVERLAYED WITH *CLB* FOR CTS.
  8820.  
  8821. RLBB LDN 0 ALLOW FOR CONTROL WORDS
  8822. * LDN 1 (200/260 READ CODE)
  8823. RJM ADP
  8824. LDN 0
  8825. STM RLBH CLEAR SHUTDOWN ENABLED FLAG
  8826. STM BCWA
  8827. STM .BYC
  8828. STD EC CLEAR ERROR CODE AND TERMINATION STATUS
  8829. STD TB
  8830. UJN RLB2 SET PCL
  8831. * PSN (ATS NON-CYBER 180)
  8832. RLBJ EQU *-1
  8833. LDC NJNI+.RLB12-.RLBB RESET END-OF-BLOCK CHECK
  8834. STM .RLBB
  8835. RLB2 LDM /READ/RDFA SET PCL
  8836. RLBC RJM FCN
  8837. * UJN *+2 (NORMAL CLIP LEVEL)
  8838. RJM ITM INITIATE TAPE MOTION
  8839. LDN 0 SET UP POINTERS FOR *1LT*
  8840. RJM ADP
  8841. LDN 1 SEND REQUEST TO *1LT*
  8842. RJM SRQ
  8843. LDD DS SAVE DEVICE STATUS
  8844. STM /READ/STAP
  8845. LDC RLB5 SET EXIT ON END OF INPUT
  8846. * LDC RLB4 (CYBER 180 IOU)
  8847. RLBD EQU *-1
  8848. STM /READ/MRDC
  8849. LDC LBBY SET BYTE COUNT
  8850. STM /READ/MRDA
  8851. LJM RLB2.1 READ TAPE
  8852. * LJM /READ/MRD3 (CYBER 180 - INITIATE INPUT)
  8853. * LJM .RLB11 (ATS NON-CYBER 180 - INITIATE INPUT)
  8854. RLBI EQU *-1
  8855.  
  8856. RLB2.1 RJM /READ/MRD READ TAPE
  8857.  
  8858. * RETURN FROM */READ/MRD*.
  8859.  
  8860. RLB3 LDN 77 DELAY
  8861. SBN 1
  8862. NJN *-1
  8863. RJM CRA SEE IF *1LT* PASSED CHUNK LENGTH
  8864. NJN RLB3 IF *1LT* NOT DONE
  8865. LJM RLB15 ACKNOWLEDGE *1LT*
  8866.  
  8867. * CYBER 180 - ENTER HERE AT END OF INPUT OF A CHUNK OF DATA.
  8868.  
  8869. RLB4 IJM RLB18,CH IF *1MT* FINISHED INPUT
  8870. EJM RLB4,CH IF *1LT* NOT TAKING DATA YET
  8871. CCF *,CH CLEAR CHANNEL FLAG
  8872. UJN RLB6 COUNT DATA TRANSFERRED
  8873.  
  8874. * ATS NON-CYBER 180 - ENTER HERE AT END OF INPUT OF A CHUNK.
  8875.  
  8876. RLB5 IJM RLB18,CH IF *1MT* FINISHED INPUT
  8877. EJM RLB5,CH IF *1LT* NOT TAKING DATA YET
  8878. RLB6 AOM .BYC COUNT CHUNK
  8879. LMN 1
  8880. ZJN RLB7 IF FIRST CHUNK
  8881. LDC /MTX/LBWD ADVANCE FOR *1LT* DATA
  8882. RJM ADP
  8883. AOM .BYC COUNT CHUNK
  8884. RLB7 LDC /MTX/LBWD ADVANCE FET POINTER
  8885. RJM ADP
  8886. RJM WDA WRITE DATA
  8887. LDM .BYC
  8888. ADN 1
  8889. SBD OV
  8890. MJN RLB9 IF MORE FULL CHUNKS TO INPUT
  8891. STM RLBH SET SHUTDOWN ENABLED IF ODD CHUNK COUNT
  8892. NJN RLB8 IF ODD CHUNK COUNT
  8893. LDD WC
  8894. SHN 2
  8895. ADD WC
  8896. RLB8 ADN 1 SET AMOUNT TO INPUT
  8897. STM /READ/MRDA
  8898. RLBE LDC /READ/MRDC+1 REENABLE SHUT DOWN
  8899. * LDC UJNI+.RLB14-.RLBB (ATS NON-CYBER 180)
  8900. RLBF STM /READ/MRDC
  8901. * STM .RLBB (ATS NON-CYBER 180)
  8902. RLBG LDM RLBH
  8903. * UJN .RLB9 (ATS NON-CYBER 180)
  8904. NJN RLB12 IF *1LT* WILL FINISH INPUT
  8905. LDM /READ/MRDA
  8906. UJN RLB10 INPUT DATA
  8907.  
  8908. * THE FOLLOWING CODE IS OVERLAID BY THE ATS INPUT LOOP IF ATS
  8909. * ON A NON-CYBER 180, OR BY THE IOU INPUT LOOP ON A CYBER 180.
  8910.  
  8911. .RLBA EQU * BEGINNING OF OVERLAID CODE
  8912.  
  8913. RLB9 LDC LBBY SET TO INPUT FULL CHUNK
  8914. RLB10 IJM RLB12,CH IF *1LT* FINISHED INPUT
  8915. RLB11 EJM RLB10,CH IF *1LT* TAKING DATA
  8916. EJM RLB10,CH IF *1LT* TAKING DATA
  8917. EJM RLB10,CH IF *1LT* TAKING DATA
  8918. EJM RLB10,CH IF *1LT* TAKING DATA
  8919. FJM /READ/MRD3,CH IF TIME FOR *1MT* TO TAKE DATA
  8920. UJN RLB11 WAIT FOR *1LT* TO COMPLETE
  8921. BSS 7 PAD TO MAKE SAME LENGTH AS ATS INPUT LOOP
  8922.  
  8923. .RLBAL EQU *-.RLBA LENGTH OF OVERLAID AREA
  8924.  
  8925. RLB12 LDN 77 DELAY
  8926. SBN 1
  8927. NJN *-1
  8928. RJM CRA SEE IF *1LT* PASSED CHUNK LENGTH
  8929. NJN RLB12 IF *1LT* NOT DONE
  8930. AOM BCWA SKIP UPDATE IN BCW
  8931. LDC LBBY CALCULATE BYTES IN LAST CHUNK
  8932. STM /READ/MRDA
  8933. SBD CM+1
  8934. STD T1
  8935. LMC LBBY
  8936. ZJN RLB13 IF *1LT* ENDED ON CHUNK BOUNDARY
  8937. LDC 0
  8938. RLBH EQU *-1
  8939. ZJN RLB14 IF SHUTDOWN NOT ENABLED
  8940. LDD WC SET BYTE COUNT ATTEMPTED TO READ
  8941. SHN 2
  8942. ADD WC
  8943. ADN 1
  8944. STM /READ/MRDA
  8945. SBD CM+1
  8946. LJM /READ/MRD4 DETERMINE IF BLOCK TOO LARGE
  8947.  
  8948. RLB13 STD T1
  8949. RLB14 LJM /READ/MRD6 EXIT
  8950.  
  8951. * PROCESSING CONTINUES HERE AFTER EXIT FROM MRD.
  8952.  
  8953. RLB15 LDD MD
  8954. LPN 40
  8955. ZJN RLB16 IF NOT 200 READ CODE
  8956. LDN 0 SET TRAILER CONTROL WORD
  8957. STM BUFB
  8958. LDN 1
  8959. RJM ADP
  8960. RJM WDA WRITE TRAILER CONTROL WORD
  8961. RLB16 LDN 0 SET WORD COUNT
  8962. STD WC
  8963. STD CM ACKNOWLEDGE *1LT*
  8964. LDM CPDA
  8965. ADN 2
  8966. CWD CM
  8967. LDD TB
  8968. LMN 3
  8969. NJN RLB17 IF NOT TAPE MARK
  8970. LDM BCWC BACK UP POINTERS
  8971. STD CN+3
  8972. LDM BCWD
  8973. STD CN+4
  8974. RLB17 RJM /READ/TDA
  8975. LDM SRQB RESTORE STARTING WORD COUNT
  8976. STD WC
  8977. LJM RLB LOOP
  8978.  
  8979. RLB18 LDN 20 DELAY
  8980. SBN 1
  8981. NJN *-1 IF MORE DELAY
  8982. RJM CRA CHECK *1LT* COMPLETE
  8983. NJN RLB18 IF *1LT* NOT COMPLETE
  8984. LJM /READ/MRD6 PROCESS READ COMPLETION
  8985.  
  8986.  
  8987. .BYC CON 0 CHUNKS INPUT OF *LBBY* BYTES
  8988. TITLE SUBROUTINES.
  8989. ADP SPACE 4,15
  8990. ** ADP - ADVANCE POINTER.
  8991. *
  8992. * ENTRY (CN+3 - CN+4) = IN POINTER.
  8993. * (A) = WORDS TO INCREMENT IN BY.
  8994. *
  8995. * EXIT (T4 - T5) = STARTING IN POINTER.
  8996. * (CN+3 - CN+4) = UPDATED IN POINTER.
  8997. * (T6) = FIRST PART WORD COUNT.
  8998. * (T7) = SECOND PART WORD COUNT.
  8999. *
  9000. * CALLS /READ/CIB.
  9001. *
  9002. * MACROS SADT.
  9003.  
  9004.  
  9005. ADP SUBR ENTRY/EXIT
  9006. STD T6
  9007. RJM /READ/CIB CHECK INPUT BUFFER
  9008. SBD T6
  9009. PJN ADP1 IF ROOM IN BUFFER FOR BLOCK
  9010. RAD T6 ADJUST WORD COUNT
  9011. ADP1 LDD CN+3 SAVE IN
  9012. STD T4
  9013. LDD CN+4
  9014. STD T5
  9015. LDN 0 PRESET SECOND PART WORD COUNT
  9016. STD T7
  9017. LDD T6 UPDATE IN
  9018. RAD CN+4
  9019. SHN -14
  9020. RAD CN+3
  9021. SHN 14
  9022. LMD CN+4
  9023. SADT .LM,C
  9024. ADC -* (-LIMIT)
  9025. MJN ADPX IF NO WRAP AROUND
  9026. STD T7 SET SECOND PART WORD COUNT
  9027. SADT .FT
  9028. ADC * (FIRST)
  9029. STD CN+4
  9030. SHN -14
  9031. STD CN+3
  9032. LDD T6 RESET FIRST PART WORD COUNT
  9033. SBD T7
  9034. STD T6
  9035. LJM ADPX RETURN
  9036. BCW SPACE 4,10
  9037. ** BCW - BUILD CONTROL WORD.
  9038. *
  9039. * ENTRY (BCWA) = 0 IF *1MT* FINISHED INPUT.
  9040. *
  9041. * USES TB, T1, CM - CM+4.
  9042. *
  9043. * CALLS ADP, WDA.
  9044. *
  9045. * MACROS SADT.
  9046.  
  9047.  
  9048. BCW SUBR ENTRY/EXIT
  9049. LDC *
  9050. BCWA EQU *-1
  9051. NJN BCW2 IF *1LT* FINISHED INPUT
  9052. LDM .BYC
  9053. ZJN BCW1 IF FIRST PASS
  9054. AOM .BYC COUNT *1LT* BLOCK
  9055. LDC /MTX/LBWD
  9056. RJM ADP
  9057. BCW1 LDD WC TRANSFER LAST PART OF DATA
  9058. RJM ADP
  9059. RJM WDA WRITE DATA
  9060. UJN BCW3 CHECK FOR TAPE MARK
  9061.  
  9062. BCW2 LDD WC ADVANCE POINTER FOR *1LT*
  9063. RJM ADP
  9064. BCW3 LDD EC
  9065. LMN /MTX/BEI
  9066. ZJN BCW4 IF TAPE MARK
  9067. LDM /READ/BCWA
  9068. LPN 77
  9069. STD TB
  9070. LDN 0
  9071. STM LNUM
  9072. BCW4 STD T1
  9073. LDD MD
  9074. LPN 40
  9075. NJN BCW5 IF 200 READ
  9076. LDD WC 12 * UNUSED BYTES
  9077. SHN 2
  9078. ADD WC
  9079. SBD BY
  9080. SHN 2
  9081. STD T1
  9082. SHN 1
  9083. RAD T1
  9084. BCW5 LDD ES
  9085. LPN 40
  9086. BCWB ZJN BCW7 IF NO FILL STATUS
  9087. * ZJN BCW6 (9 TRACK BINARY - IF NO FILL STATUS)
  9088. LDD WC
  9089. ADM .BYC
  9090. ZJN BCW7 IF NO DATA READ
  9091. LDM /READ/BCWE
  9092. LPN 77
  9093. UJN BCW7 ADJUST UNUSED BIT COUNT
  9094.  
  9095. BCW6 LDD BY ADJUST UBC FOR ODD BYTE COUNT
  9096. LPN 1
  9097. SHN 2
  9098. BCW7 RAD T1
  9099. STM BUFC+2
  9100. LDC LBBY
  9101. STD T1
  9102. LDD BY
  9103. STM BUFC+4
  9104. LDD MD
  9105. LPN 60
  9106. NJN BCW9 IF CONTROL WORD READ
  9107. LDM BUFC+2
  9108. STD T1
  9109. LDD FM
  9110. SHN -6
  9111. LMN /MTX/TFL
  9112. NJN BCW8 IF NOT L FORMAT
  9113. SADT .FE,,6,A
  9114. LDC * RETURN UBC TO FET
  9115. CRD CM
  9116. LDD T1 SET UBC
  9117. STD CM+2
  9118. SADT .FE,,6,A
  9119. LDC *
  9120. CWD CM
  9121. BCW8 LJM BCWX RETURN
  9122.  
  9123. BCW9 LPN 40
  9124. NJN BCW10 IF 200 READ
  9125. LDC /MTX/LBWD
  9126. STD T1
  9127. LDD WC
  9128. STM BUFC+4
  9129. BCW10 LDN 0
  9130. STM BUFC+3
  9131. LDM .BYC
  9132. STD T0
  9133. ZJN BCW12 IF NO PARTIAL BLOCKS
  9134. BCW11 LDD T1 COUNT BYTES OR WORDS FOR EACH BUFFER FULL
  9135. RAM BUFC+4
  9136. SHN -14
  9137. RAM BUFC+3
  9138. SOD T0
  9139. NJN BCW11 IF MORE BLOCKS TO COUNT
  9140. BCW12 LDC * PUT CONTROL WORD IN BUFFER
  9141. BCWC EQU *-1
  9142. SHN 6
  9143. ADD RA
  9144. SHN 6
  9145. ADC *
  9146. BCWD EQU *-1
  9147. CWM BUFC,ON
  9148. LJM BCWX RETURN
  9149. CPD SPACE 4,10
  9150. ** CPD - CHECK PP (1LT) DROP OUT.
  9151. *
  9152. * ENTRY (CPDA) = PP INPUT REGISTER ADDRESS.
  9153. *
  9154. * EXIT (A) = 0, IF *1LT* STILL AROUND.
  9155. *
  9156. * MACROS CHTE.
  9157.  
  9158.  
  9159. CPD SUBR ENTRY/EXIT
  9160. LDC *
  9161. CPDA EQU *-1
  9162. CRD CM
  9163. LDD CM+1
  9164. SCN 77
  9165. SHN 6
  9166. LMD CM
  9167. LMC 3RT1L
  9168. ZJN CPD1 IF *1LT*
  9169. SHN 14
  9170. LMN 1R1
  9171. NJN CPDX IF NOT *1LT* LOADING
  9172. CPD1 LDD CM+3
  9173. CHTE *
  9174. LMN CH
  9175. LPN 77
  9176. UJN CPDX RETURN
  9177. CRA SPACE 4,10
  9178. ** CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
  9179. *
  9180. * EXIT (A) = 0 IF *1LT* COMPLETE.
  9181. * (CM - CM+4) = REQUEST/RETURN WORD.
  9182.  
  9183.  
  9184. CRA SUBR ENTRY/EXIT
  9185. LDM CPDA
  9186. ADN 2
  9187. CRD CM
  9188. LDD CM
  9189. LMN 2
  9190. UJN CRAX RETURN
  9191. ITS SPACE 4,10
  9192. ** ITS - INDICATE *1MT* TRANSFER STARTED.
  9193. *
  9194. * ENTRY (A) = BYTE COUNT.
  9195. *
  9196. * EXIT (A) = BYTE COUNT.
  9197.  
  9198.  
  9199. ITS SUBR ENTRY/EXIT
  9200. STD T0 SAVE BYTE COUNT
  9201. LDM CPDA INDICATE *1MT* TRANSFER STARTED
  9202. ADN 3
  9203. CWD ON
  9204. LDD T0 RESTORE (A)
  9205. UJN ITSX RETURN
  9206. SRQ SPACE 4,10
  9207. ** SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
  9208. *
  9209. * ENTRY (A) = REQUEST CODE.
  9210. * (T4 - T5) = POINTER.
  9211. * (SRQB) = STARTING WORD COUNT.
  9212. * (SRQC) = STARTING OV CONTENTS.
  9213. *
  9214. * USES T1, T2, T3, CM - CM+4.
  9215. *
  9216. * CALLS CPD, HNG.
  9217.  
  9218.  
  9219. SRQ SUBR ENTRY/EXIT
  9220. STD T1
  9221. SRQA UJN SRQ1 NO CHANNEL FLAG PRESENT
  9222. * PSN (CYBER 180)
  9223. SCF *+2,CH SET CHANNEL FLAG
  9224. LDM CPDA INDICATE *1MT* TRANSFER STARTED
  9225. ADN 3
  9226. CWD ON
  9227. SRQ1 LDM CPDA CHECK *1LT* FUNCTION
  9228. ADN 1
  9229. CRD CM
  9230. LDD CM
  9231. LMN PRLM
  9232. ZJN SRQ3 IF *1LT* PAUSING
  9233. LDC * WORD COUNT
  9234. SRQB EQU *-1
  9235. STD T2
  9236. LDC * CHUNK COUNT
  9237. SRQC EQU *-1
  9238. STD T3
  9239. LDM CPDA ENTER REQUEST
  9240. ADN 2
  9241. CWD T1
  9242. RJM CPD CHECK IF PP *L1T* DROPPED OUT
  9243. ZJP SRQX IF *1LT* STILL AROUND
  9244. RJM HNG HANG PP
  9245.  
  9246. SRQ3 LJM RET2 REQUEUE REQUEST
  9247. WDA SPACE 4,10
  9248. ** WDA - WRITE DATA TO CENTRAL.
  9249. *
  9250. * ENTRY (T4 - T5) = IN POINTER.
  9251. * (T6) = FIRST PART WORD COUNT.
  9252. * (T7) = SECOND PART WORD COUNT.
  9253. *
  9254. * MACROS SADT.
  9255.  
  9256.  
  9257. WDA SUBR ENTRY/EXIT
  9258. LDD T6
  9259. ZJN WDAX IF NO FIRST PART
  9260. SHN 2
  9261. ADD T6
  9262. ADC BUFB
  9263. STM WDAA
  9264. LDD T4 TRANSFER FIRST PART
  9265. SHN 6
  9266. ADD RA
  9267. SHN 6
  9268. ADD T5
  9269. CWM BUFB,T6
  9270. LDD T7
  9271. ZJN WDAX IF NO SECOND PART
  9272. SADT .FT,,,A
  9273. LDC * TRANSFER SECOND PART
  9274. CWM *,T7
  9275. WDAA EQU *-1
  9276. UJN WDAX RETURN
  9277. WTS SPACE 4,10
  9278. ** WTS - WAIT FOR *1LT* TRANSFER TO START.
  9279. *
  9280. * ENTRY (A) = BYTE COUNT.
  9281. *
  9282. * EXIT (A) = BYTE COUNT.
  9283. *
  9284. * USES CM - CM+4.
  9285.  
  9286.  
  9287. WTS3 LDD T0 RESTORE (A)
  9288.  
  9289. WTS SUBR ENTRY/EXIT
  9290. STD T0 SAVE BYTE COUNT
  9291. WTS1 LDM CPDA CHECK *1MT*/*1LT* INTERLOCK
  9292. ADN 3
  9293. CRD CM
  9294. LDD CM
  9295. ZJN WTS3 IF *1LT* TRANSFER STARTED
  9296. LDN 24 DELAY 10 MICROSECONDS
  9297. WTS2 SBN 1
  9298. NJN WTS2 IF NOT DONE
  9299. UJN WTS1 CHECK INTERLOCK
  9300. BUFFER SPACE 4,10
  9301. BUFFER BUFB
  9302. CALL SPACE 4,10
  9303. .IM SET 0 DISABLE ADDRESS MODIFICATION ON ERRORS
  9304.  
  9305. ** *1LT* CALL BLOCK.
  9306. *
  9307. *T 18/ 1LT,6/ CP,12/ 0,12/ CHANNEL,12/ PPIA
  9308. *T, 12/ -0,24/ FIRST,24/ LIMIT
  9309.  
  9310.  
  9311. CALL VFD 18/3R1LT,6/0
  9312. CON 0 READ
  9313. CHTE *
  9314. CON CH CHANNEL
  9315. CON 0 *1MT* INPUT REGISTER ADDRESS
  9316. CON -0
  9317. SADT .FT,,,,SE
  9318. CON 0,0
  9319. SADT .LM,,,,SE
  9320. CON 0,0
  9321. TITLE PRESET.
  9322. PRS SPACE 4,10
  9323. ** PRS - PRESET.
  9324. *
  9325. * ENTRY AT *PRS10* AFTER OVERLAY *CPP* HAS BEEN LOADED AND
  9326. * EXECUTED.
  9327. *
  9328. * EXIT TO *RLB* WHEN PRESET COMPLETE.
  9329. *
  9330. * USES T1, T4, T5.
  9331. *
  9332. * CALLS CEC, CPD, CRA, MCH, SRQ.
  9333. *
  9334. * MACROS MONITOR, PAUSE.
  9335.  
  9336.  
  9337. PRS LDC UJNI+2 DISABLE READ AHEAD
  9338. STM /READ/TDAF
  9339. LDN 0 DISABLE ALLOWANCE FOR CONTROL WORDS
  9340. STM /READ/TDAA
  9341. LDC PRSC MODIFY CHANNELS
  9342. RJM MCH
  9343. LDD MD
  9344. LPN 60
  9345. ZJN PRS1 IF NO CONTROL WORDS
  9346. AOM RLBB ALLOW FOR CONTROL WORD
  9347. AOM .CLB+CLBA-CLB ALLOW FOR CONTROL WORD
  9348. PRS1 LDD HP
  9349. SHN 21-7
  9350. PJN PRS3 IF NOT CTS
  9351. ISTORE /READ/RCTD,(UJN /READ/RCT7) SET FOR COMMAND RETRY
  9352. LDC BUFB
  9353. STM /READ/RCTB
  9354. LDC CLB14
  9355. STM /READ/RCT RETURN ADDRESS FROM *RCT*
  9356. LDC BCW
  9357. STM /READ/RCTL+1
  9358. LDC .CLBL-1 LENGTH OF CODE TO MOVE
  9359. STD T1
  9360. PRS2 LDM .CLB,T1
  9361. STM CLB,T1
  9362. SOD T1
  9363. PJN PRS2 IF MORE CODE TO MOVE
  9364. LDC .CLBA MODIFY CHANNELS
  9365. UJP PRS5 CONTINUE PRESET
  9366.  
  9367. PRS3 LDC BUFB
  9368. STM /READ/MRDB
  9369. LDC BCW
  9370. STM /READ/MRDO+1
  9371. LDM /READ/RDFB DISABLE PCL IF NORMAL CLIP LEVEL
  9372. STM RLBC
  9373. LDD HP
  9374. LPN 60
  9375. SHN 6
  9376. RAM CALL+3 SET MTS/ATS FLAGS FOR *1LT*
  9377. LDK MABL CHECK MAINFRAME TYPE
  9378. CRD CM
  9379. LDD CM+1
  9380. SHN -6
  9381. LPN 41
  9382. LMN 1
  9383. NJN PRS7 IF NOT CYBER 180 IOU
  9384.  
  9385. * PRESET FOR CYBER 180 IOU.
  9386.  
  9387. LDC RLB3 SET EXIT FROM /READ/MRD
  9388. STM /READ/MRD
  9389. LDC RLB4 SET EXIT FROM READ
  9390. STM RLBD
  9391. LDC /READ/MRD3 SET ENTRY ON INITIAL READ
  9392. STM RLBI
  9393. LDN RLBRL.-1 MOVE IOU LOOP
  9394. STD T1
  9395. PRS4 LDM RLBR.,T1
  9396. STM .RLBA,T1
  9397. SOD T1
  9398. PJN PRS4 IF MORE CODE TO MOVE
  9399. LDC RLBC. MODIFY CHANNELS
  9400. PRS5 RJM MCH
  9401. LDN PSNI
  9402. STM SRQA
  9403. PRS6 LJM PRS9 CONTINUE PRESET
  9404.  
  9405. PRS7 LDD HP
  9406. SHN 21-4
  9407. PJN PRS6 IF MTS CONTROLLER
  9408.  
  9409. * INITIALIZE DRIVER FOR ATS (NON-CYBER 180).
  9410.  
  9411. LDC RLB3 SET EXIT FROM /READ/MRD
  9412. STM /READ/MRD
  9413. LDC .RLB11 MODIFY INSTRUCTIONS
  9414. STM RLBI
  9415. LDM PRSA
  9416. STM RLBG
  9417. LDC UJNI+.RLB14-.RLBB
  9418. STM RLBE+1
  9419. LDC .RLBB
  9420. STM RLBF+1
  9421. LDN PSNI
  9422. STM RLBJ
  9423. LDN .RLBRL-1 MOVE ATS INPUT LOOP
  9424. STD T1
  9425. PRS8 LDM .RLBR,T1
  9426. STM .RLBA,T1
  9427. SOD T1
  9428. PJN PRS8 IF NOT END OF MOVE
  9429. LDC .RLBC MODIFY CHANNELS
  9430. RJM MCH
  9431. PRS9 LDC PRSB SET FOR INSTRUCTION MODIFICATION
  9432. STD CN
  9433. LDC PRS10 SET TO RETURN CONTROL HERE AFTER LOAD
  9434. STD BT
  9435. LJM PRSX RETURN
  9436.  
  9437. * RETURN HERE AFTER ALL ROUTINES LOADED.
  9438. * BUILD CALL TO *1LT*.
  9439.  
  9440. PRS10 LDD CP MERGE CP NUMBER
  9441. SHN -7
  9442. RAM CALL+1
  9443. LDD IA SET INPUT REGISTER ADDRESS IN CALL
  9444. STM CALL+4
  9445. LDN CMCL CHECK MOVE FLAG
  9446. CRD CM
  9447. LDD CM
  9448. SHN 7
  9449. LMD CP
  9450. ZJN PRS11 IF MOVE FLAG
  9451. LDD MA WRITE REQUEST BLOCK
  9452. CWM CALL,TR
  9453. LDN 1 SET TO NOT QUEUE REQUEST
  9454. STD CM+1
  9455. MONITOR RPPM REQUEST PP
  9456. LDD CM+1
  9457. NJN PRS12 IF PP ASSIGNED
  9458. PRS11 LJM RET2 REQUEUE
  9459.  
  9460. PRS12 STM CPDA SAVE PP INPUT REGISTER ADDRESS
  9461. PRS13 LDN 77 DELAY
  9462. SBN 1
  9463. NJN *-1
  9464. LDD MA CHECK FOR *1LT* ACKNOWLEDGE
  9465. ADN 1
  9466. CRD CM
  9467. LDD CM
  9468. ZJN PRS15 IF *1LT* READY
  9469. RJM CPD CHECK FOR *1LT* DROP
  9470. NJN PRS11 IF *1LT* GONE
  9471. LDN CMCL CHECK MOVE FLAG
  9472. CRD CM
  9473. LDD CM
  9474. SHN 7
  9475. LMD CP
  9476. NJN PRS13 IF NO MOVE FLAG FOR THIS CP
  9477. RJM CEC CHANGE BACK TO MAGNET CP
  9478. PRS14 RJM CPD CHECK PP DROP
  9479. NJN PRS11 IF *1LT* GONE
  9480. PAUSE NE
  9481. UJN PRS14 LOOP
  9482.  
  9483. PRS15 LDD HP
  9484. LPC 201
  9485. ZJN PRS16 IF 7 TRACK
  9486. LDD MD
  9487. SHN 21-6
  9488. MJN PRS16 IF CODED
  9489. LCN BCW7-BCW6 SET TO ADJUST UBC IF ODD BYTE COUNT
  9490. RAM BCWB
  9491. PRS16 LDD WC SET WORD AND CHUNK COUNT FOR *1LT*
  9492. STM SRQB
  9493. LDD OV
  9494. STM SRQC
  9495. LDM CIOE
  9496. LPC 774
  9497. LMN 20
  9498. NJN PRS17 IF NOT READ SKIP
  9499. LDC UJNI-PJNI
  9500. RAM RLBA
  9501. RJM /READ/CIB
  9502. MJN PRS18 IF BUFFER ARGUMENT ERROR
  9503. STD T5
  9504. SHN -14
  9505. STD T4
  9506. LDN 3 SET REQUEST TO *1LT*
  9507. RJM SRQ
  9508. PRS17 LDN 77 DELAY
  9509. SBN 1
  9510. NJN *-1
  9511. RJM CRA SEE IF *1LT* ACCEPTED READ SKIP
  9512. LMN 2
  9513. NJN PRS17 IF *1LT* NOT DONE
  9514. PRS18 LDC /SRU/ITRL*100 SET SRU INCREMENT
  9515. STM //CECA
  9516. LJM RLB ENTER READ TAPE
  9517.  
  9518. * SEE *1LT* FOR FORMAT OF CALL BLOCK.
  9519.  
  9520. PRSA BSS 0
  9521. LOC RLBG
  9522. UJN .RLB9 WAIT FOR *1LT* TO COMPLETE
  9523. LOC *O
  9524.  
  9525. PRSB TSAD SLBP
  9526. PRSC CHTB
  9527. TITLE PRESET SUBROUTINES.
  9528. RLB SPACE 4,10
  9529. ** ATS INPUT LOOP (NON-CYBER 180).
  9530.  
  9531.  
  9532. .RLBR BSS 0
  9533. LOC .RLBA
  9534.  
  9535. .RLB9 AJM *,CH IF WAITING FOR *1LT* TO DCN CHANNEL
  9536. LDM /READ/MRDA SET NUMBER OF BYTES TO INPUT
  9537. .RLB10 IJM RLB12,CH IF *1LT* FINISHED INPUT
  9538. EJM .RLB10,CH IF DATA NOT AVAILABLE
  9539. .RLB11 IAM BUFB,CH INPUT DATA
  9540. DCN CH+40 INDICATE TO *1LT* TO CONTINUE READ
  9541. .RLBB NJN .RLB12 IF END OF BLOCK
  9542. * UJN .RLB14 (SHUTDOWN ENABLED)
  9543. ACN CH
  9544. .RLB12 STD T1 SAVE BYTES REMAINING
  9545. .RLB13 IJM RLB18,CH IF *1MT* FINISHED INPUT
  9546. EJM .RLB13,CH IF *1LT* NOT TAKING DATA YET
  9547. LJM RLB6 SETUP FOR NEXT CHUNK
  9548.  
  9549. .RLB14 LJM /READ/MRD4 CHECK FOR BLOCK TOO LARGE
  9550.  
  9551. LOC *O
  9552. .RLBRL EQU *-.RLBR LENGTH OF ATS INPUT LOOP
  9553.  
  9554. ERRNG .RLBAL-.RLBRL OVERLAID CODE OVERFLOWED
  9555.  
  9556. .RLBC CHTB CHANNEL TABLE FOR ATS INPUT LOOP
  9557.  
  9558.  
  9559. * READ LOOP FOR CYBER 180 IOU.
  9560.  
  9561. RLBR. BSS 0
  9562. LOC .RLBA
  9563.  
  9564. RLB9. LDC LBBY BYTES TO INPUT
  9565. ERRNZ RLB9.-RLB9 CODE DEPENDS ON VALUE
  9566. RLB10. RJM WTS WAIT FOR *1LT* TRANSFER TO START
  9567. ERRNZ RLB10.-RLB10 CODE DEPENDS ON VALUE
  9568. RLB11. IJM RLB12,CH IF 1LT COMPLETED READ
  9569. SCF RLB11.,CH WAIT UNTIL FLAG IS CLEARED BY 1LT
  9570. RJM ITS INDICATE *1MT* TRANSFER STARTED
  9571. LJM /READ/MRD3 PROCESS DATA
  9572.  
  9573. LOC *O
  9574. RLBRL. EQU *-RLBR. LENGTH OF IOU INPUT CODE
  9575.  
  9576. ERRNG .RLBAL-RLBRL. IOU INPUT CODE TOO LONG
  9577.  
  9578. RLBC. CHTB TABLE OF CHANNELS FOR IOU CODE
  9579. CLB SPACE 4,15
  9580. ** CLB - CTS LONG BLOCK READ.
  9581. *
  9582. * THIS ROUTINE OVERLAYS *RLB* STARTING AT *RLBB*.
  9583.  
  9584.  
  9585. .CLB BSS 0
  9586. LOC RLBB
  9587. CLB LDD DS
  9588. STM /READ/STAP SAVE GENERAL STATUS
  9589. RJM ITM INITIATE TAPE MOTION
  9590. CLB1 LDN 0 ALLOW FOR CONTROL WORD
  9591. CLBA EQU *-1
  9592. * LDN 1 200/260 READ CODE
  9593. RJM ADP ADVANCE IN POINTER
  9594. LDN 0
  9595. STM BCWA
  9596. STM .BYC CLEAR CHUNK COUNT
  9597. STD EC CLEAR ERROR CODE
  9598. STD TB CLEAR TERMINATION STATUS
  9599. * LDN 0
  9600. RJM ADP SET UP POINTERS FOR *1LT*
  9601. LDN 1
  9602. RJM SRQ SEND START BLOCK REQUEST TO *1LT*
  9603. LDC LBBY
  9604. STM /READ/RCTA
  9605. IAM BUFB,CH
  9606. UJN CLB4 CHECK IF ALL WORDS TRANSFERRED
  9607.  
  9608. CLB2 LDC LBBY
  9609. STM /READ/RCTA
  9610. RJM WTS WAIT FOR *1LT* TRANSFER TO START
  9611. CLB3 IJM CLB8,CH IF TRANSFER COMPLETE
  9612. SCF CLB3,CH IF *1LT* NOT FINISHED
  9613. RJM ITS INDICATE *1MT* TRANSFER STARTED
  9614. IAM BUFB,CH
  9615. CLB4 NJN CLB6 IF TRANSFER COMPLETE
  9616. CLB5 FJM CLB9,CH IF A WORD IS PRESENT FOR *1LT* TO TRANSFER
  9617. AJM CLB5,CH IF TRANSFER NOT COMPLETE
  9618.  
  9619. * *1MT* FINISHED THE CHANNEL TRANSFER.
  9620.  
  9621. CLB6 STD T1 SAVE WORDS NOT TRANSFERRED
  9622. CLB7 RJM CRA READ *1LT* INTERFACE WORD
  9623. NJN CLB7 IF *1LT* NOT COMPLETE
  9624. LJM /READ/RCT6 CALCULATE REMAINDER OF CM WORD COUNT
  9625.  
  9626. * *1LT* FINISHED THE CHANNEL TRANSFER.
  9627.  
  9628. CLB8 RJM CRA READ *1LT* INTERFACE WORD
  9629. NJN CLB8 IF *1LT* TRANSFER TO CM NOT COMPLETE
  9630. AOM BCWA SKIP UPDATE IN *BCW*
  9631. LDC LBBY
  9632. SBD CM+1
  9633. LJM /READ/RCT5 CALCULATE REMAINDER OF CM WORD COUNT
  9634.  
  9635. CLB9 CCF *,CH CLEAR CHANNEL FLAG (TELL *1LT* TO START)
  9636. AOM .BYC COUNT CHUNK
  9637. LMN 1
  9638. ZJN CLB10 IF FIRST CHUNK
  9639. LDC /MTX/LBWD
  9640. RJM ADP ADVANCE POINTER FOR *1LT* DATA
  9641. AOM .BYC COUNT CHUNK
  9642. CLB10 LDC /MTX/LBWD
  9643. RJM ADP ADVANCE POINTER
  9644. RJM WDA WRITE DATA TO CM
  9645. LDM .BYC
  9646. ADN 1
  9647. SBD OV
  9648. MJP CLB2 IF MORE CHUNKS TO INPUT
  9649. NJN CLB12 IF *1LT* IS READING LAST CHUNK
  9650. LDD WC
  9651. SHN 2
  9652. ADD WC
  9653. ADN 1
  9654. STM /READ/RCTA LENGTH TO READ + 1
  9655. CLB11 IJM CLB8,CH IF *1LT* FINISHED TRANSFER
  9656. SCF CLB11,CH IF *1LT* STILL READING
  9657. LJM /READ/RCT2 INPUT LAST CHUNK
  9658.  
  9659. CLB12 RJM CRA READ *1LT* INTERFACE WORD
  9660. NJN CLB12 IF *1LT* NOT DONE
  9661. AOM BCWA SKIP UPDATE IN *BCW*
  9662. LDD WC
  9663. SHN 2
  9664. ADD WC
  9665. ADN 1
  9666. STM /READ/RCTA
  9667. SBD CM+1
  9668. LJM /READ/RCT3 SAVE BYTES NOT TRANSFERRED
  9669.  
  9670. * *RCT* RETURNS HERE AFTER LAST CHUNK IS TRANSFERRED.
  9671.  
  9672. CLB14 LDD MD
  9673. LPN 40
  9674. ZJN CLB15 IF NOT 200 READ CODE
  9675. LDN 0 SET TRAILER CONTROL WORD
  9676. STM BUFB
  9677. LDN 1
  9678. RJM ADP
  9679. RJM WDA WRITE TRAILER CONTROL WORD
  9680. CLB15 LDN 0 SET WORD COUNT
  9681. STD WC
  9682. STD CM ACKNOWLEDGE *1LT*
  9683. LDM CPDA
  9684. ADN 2
  9685. CWD CM
  9686. LDD TB
  9687. LMN 3
  9688. NJN CLB16 IF NOT TAPE MARK
  9689. LDM BCWC BACK UP POINTERS
  9690. STD CN+3
  9691. LDM BCWD
  9692. STD CN+4
  9693. CLB16 RJM /READ/TDA
  9694. LDM SRQB RESTORE STARTING WORD COUNT
  9695. STD WC
  9696. LJM RLB LOOP
  9697.  
  9698. ERRMI .BYC-* IF CODE OVERFLOWS
  9699.  
  9700. LOC *O
  9701. .CLBL EQU *-.CLB LENGTH OF *CLB*
  9702.  
  9703. .CLBA CHTB CHANNEL TABLE
  9704. OVERLAY (READ LI FORMAT.),,,RLI
  9705. .IM SET 0 GENERATE ADDRESSES FOR OVERLAY
  9706. RLI SPACE 4,20
  9707. ** RLI - READ LI FORMAT.
  9708. * THIS ROUTINE READS CONSECUTIVE BLOCKS AS LONG AS THERE IS
  9709. * ROOM IN THE BUFFER. ROUTINE *EBP* WILL STOP THE READ OF
  9710. * CONSECUTIVE BLOCKS IF THE TERMINATION CONDITION HAS BEEN
  9711. * MET, AN UNRECOVERABLE ERROR HAS OCCURRED, OR THE DROP OUT
  9712. * BLOCK COUNT HAS BEEN MET. *WDA* TRANSFERS ALL DATA READ
  9713. * IN THE 1ST, 3RD, ... CHUNKS. *UIP* UPDATES THE IN POINTER
  9714. * IN THE FET. FOR A 200 READ *VDA* WRITES THE INITIAL CONTROL
  9715. * WORD AND THE TRAILER CONTROL WORD IS WRITTEN IN *RLI*. IF
  9716. * THE TAPE IS ATS, MOST OF THIS ROUTINE IS OVERLAYED BY *ALI*.
  9717. *
  9718. * ENTRY (CN+3,CN+4) = STARTING IN POINTER.
  9719. *
  9720. * EXIT TO *RET* IF NOT ENOUGH ROOM IN BUFFER.
  9721. *
  9722. * USES CM, CN+3, CN+4, EC, T1.
  9723. *
  9724. * CALLS ADP, CDO, CIB, CRA, EBP, ITM, ITS, SRQ, UCP, VDA,
  9725. * WDA, WTS, /PRESET/WFE.
  9726. *
  9727. * MACROS SADT.
  9728.  
  9729.  
  9730. RLI RJM CIB CHECK INPUT BUFFER
  9731. SADT .BS,C
  9732. ADC -* (-MAXIMUM BLOCK SIZE)
  9733. RLIB PJN RLI1 IF ENOUGH ROOM IN BUFFER
  9734. * UJN RLI1 (READSKP)
  9735. LDN 1
  9736. LJM RET SET FET COMPLETE
  9737.  
  9738. RLI1 LDD CN+3 SAVE STARTING IN POINTER
  9739. STM VDAB
  9740. LDD CN+4
  9741. STM VDAC
  9742.  
  9743. * THE FOLLOWING CODE IS OVERLAYED WITH *ALI* FOR ATS.
  9744.  
  9745. .RLIA BSS 0 START OF OVERLAYED CODE
  9746. RJM ITM INITIATE TAPE MOTION
  9747. RLI2 LDN 1
  9748. RJM SRQ SEND READ BLOCK REQUEST TO *1LT*
  9749. LDC LBBY+5 BYTE COUNT FOR FIRST CHUNK
  9750. STM RLIA
  9751. IAM BUFB-5,CH
  9752. UJN RLI5 CHECK IF ALL WORDS TRANSFERRED
  9753.  
  9754. RLI3 RJM WTS WAIT FOR *1LT* TRANSFER TO START
  9755. LDC LBBY
  9756. STM RLIA
  9757. RLI4 IJM RLI17,CH IF *1LT* FINISHED THE TRANSFER
  9758. SCF RLI4,CH IF *1LT* NOT FINISHED
  9759. RJM ITS INDICATE *1MT* TRANSFER STARTED
  9760. IAM BUFB,CH
  9761. RLI5 IJM RLI9,CH IF *1MT* FINISHED THE CHANNEL TRANSFER
  9762. EJM RLI5,CH IF *1LT* NOT TAKING DATA YET
  9763. CCF *,CH TELL *1LT* TO START
  9764. RJM UCP UPDATE COUNTERS AND POINTER
  9765. LMN 1
  9766. ZJN RLI6 IF FIRST CHUNK
  9767. RJM UCP UPDATE COUNTERS AND POINTER
  9768. RLI6 RJM WDA WRITE DATA TO CENTRAL MEMORY
  9769. LDM .BYC
  9770. SBN LICH-1 FULL CHUNKS PER BLOCK - 1
  9771. MJP RLI3 IF MORE FULL CHUNKS TO INPUT
  9772. RJM WTS WAIT FOR *1LT* TRANSFER TO START
  9773. RLI7 IJM RLI17,CH IF *1LT* FINISHED THE CHANNEL TRANSFER
  9774. SCF RLI7,CH IF *1LT* STILL READING
  9775. RJM ITS INDICATE *1MT* TRANSFER STARTED
  9776. LDC LIRW*5+1+1 BYTES IN REMAINDER + PAD + 1
  9777. STM RLIA LENGTH TO READ + 1
  9778. IAM BUFB,CH
  9779. NJN RLI9 IF NOT EXCESS BLOCK LENGTH
  9780.  
  9781. * THROW AWAY DATA WHEN THE BLOCK IS TOO LONG. IF THE DATA
  9782. * IS NOT TAKEN, OVERRUN ERRORS COULD OCCUR. ALSO, WITH A
  9783. * CROSS-COUPLED CONTROLLER, THE CONTROLLER HUNG WITH CHLA
  9784. * 030F FLASHING ON ITS ERROR DISPLAY.
  9785.  
  9786. RLI8 LDC 500
  9787. IAM ERLB,CH
  9788. ZJN RLI8 IF THERE MAY BE MORE DATA
  9789. LDN /MTX/BTL SET BLOCK TOO LONG
  9790. STD EC
  9791. LDN 1 SET TO COMPUTE WORD COUNT
  9792. RLI9 STD T1
  9793. LDC LBBY+5 BYTE COUNT FOR FIRST CHUNK
  9794. RLIA EQU *-1
  9795. * LDC LBBY (MIDDLE CHUNK)
  9796. * LDC LIRW*5+1+1 (LAST CHUNK)
  9797. RJM VDA PROCESS DATA
  9798. RJM CDO CHECK DROP OUT FLAG
  9799. RLI10 RJM CRA READ *1LT* INTERFACE WORD
  9800. NJN RLI10 IF *1LT* TRANSFER TO CM NOT COMPLETE
  9801.  
  9802. * PROCESS STATUS.
  9803.  
  9804. RJM /PRESET/WFE WAIT FOR END OF OPERATION
  9805. PJN RLI11 IF NOT COMMAND RETRY
  9806. ACN CH
  9807. LDM VDAB BACK UP POINTERS
  9808. STD CN+3
  9809. LDM VDAC
  9810. STD CN+4
  9811. LJM RLI2 RESEND THE DATA
  9812.  
  9813. RLI11 ZJN RLI12 IF NO ERROR
  9814. SHN 21-4
  9815. PJN RLI13 IF NOT TAPE MARK
  9816. LDN 3 SET STOP TO EOI
  9817. STD TB
  9818. LDN 17 SET LEVEL NUMBER
  9819. STM LNUM
  9820. LDM VDAB BACK UP POINTERS
  9821. STD CN+3
  9822. LDM VDAC
  9823. STD CN+4
  9824. LDN /MTX/BEI SET EOI
  9825. UJN RLI14 SAVE ERROR CODE
  9826.  
  9827. RLI12 LDD DS
  9828. LPN 40
  9829. ZJN RLI15 IF NO FILL STATUS
  9830. RLI13 LDN /MTX/STE STATUS ERROR
  9831. RLI14 STD EC
  9832. RLI15 LDD MD
  9833. LPN 40
  9834. ZJN RLI16 IF NOT 200 READ CODE
  9835. LDN 1
  9836. RJM ADP
  9837. RJM WDA WRITE TRAILER CONTROL WORD
  9838. RLI16 LDN 0
  9839. STD CM ACKNOWLEDGE *1LT*
  9840. LDM CPDA
  9841. ADN 2
  9842. CWD CM
  9843. RJM EBP END OF BLOCK PROCESSING
  9844. LJM RLI READ NEXT BLOCK
  9845.  
  9846. * *1LT* FINISHED THE CHANNEL TRANSFER.
  9847.  
  9848. RLI17 RJM CRA READ *1LT* INTERFACE WORD
  9849. NJN RLI17 IF *1LT* TRANSFER TO CM NOT COMPLETE
  9850. AOM VDAA INDICATE *1LT* FINISHED THE TRANSFER
  9851. LDC LBBY
  9852. SBD CM+1
  9853. LJM RLI9 SAVE BYTES TRANSFERRED
  9854.  
  9855. BSS 70 MAKE ROOM FOR *ALI*
  9856. .RLIAL EQU *-.RLIA LENGTH OF *RLI*
  9857. .BYC CON 0 CHUNKS INPUT OF *LBBY* BYTES
  9858. ADP SPACE 4,15
  9859. ** ADP - ADVANCE POINTER.
  9860. * THIS ROUTINE ADVANCES THE IN POINTER FOR WRITES INTO THE
  9861. * BUFFER. ROUTINE *UIP* UPDATES THE IN POINTER FOR THE FET.
  9862. *
  9863. * ENTRY (CN+3 - CN+4) = IN POINTER.
  9864. * (A) = WORDS TO INCREMENT IN BY.
  9865. *
  9866. * EXIT (T4 - T5) = STARTING IN POINTER.
  9867. * (CN+3 - CN+4) = UPDATED IN POINTER.
  9868. * (T6) = FIRST PART WORD COUNT.
  9869. * (T7) = SECOND PART WORD COUNT.
  9870. *
  9871. * CALLS CIB.
  9872. *
  9873. * MACROS SADT.
  9874.  
  9875.  
  9876. ADP SUBR ENTRY/EXIT
  9877. STD T6
  9878. RJM CIB CHECK INPUT BUFFER
  9879. SBD T6
  9880. PJN ADP1 IF ROOM IN BUFFER FOR BLOCK
  9881. RAD T6 ADJUST WORD COUNT
  9882. ADP1 LDD CN+3 SAVE IN
  9883. STD T4
  9884. LDD CN+4
  9885. STD T5
  9886. LDN 0 PRESET SECOND PART WORD COUNT
  9887. STD T7
  9888. LDD T6 UPDATE IN
  9889. RAD CN+4
  9890. SHN -14
  9891. RAD CN+3
  9892. SHN 14
  9893. LMD CN+4
  9894. SADT .LM,C
  9895. ADC -* (-LIMIT)
  9896. MJN ADPX IF NO WRAP AROUND
  9897. STD T7 SET SECOND PART WORD COUNT
  9898. SADT .FT
  9899. ADC * (FIRST)
  9900. STD CN+4
  9901. SHN -14
  9902. STD CN+3
  9903. LDD T6 RESET FIRST PART WORD COUNT
  9904. SBD T7
  9905. STD T6
  9906. LJM ADPX RETURN
  9907. CIB SPACE 4,10
  9908. ** CIB - CHECK INPUT BUFFER.
  9909. *
  9910. * ENTRY (CN+3 - CN+4) = IN POINTER.
  9911. *
  9912. * EXIT (A) = WORD COUNT OF AVAILABLE BUFFER SPACE.
  9913. * TO *RET3* IF ERROR.
  9914. *
  9915. * USES CM - CM+4.
  9916. *
  9917. * MACROS SADT.
  9918.  
  9919.  
  9920. CIB1 LDD CM+3 LENGTH = OUT - IN - 1
  9921. SBD CN+3
  9922. SHN 14
  9923. ADD CM+4
  9924. SBD CN+4
  9925. SBN 1
  9926. PJN CIBX IF (IN + 1) .LT OUT
  9927. SADT .LF
  9928. ADC * (LIMIT - FIRST)
  9929.  
  9930. CIB SUBR ENTRY/EXIT
  9931. SADT .FE,,3,A
  9932. LDC * READ OUT
  9933. CRD CM
  9934. LDD CM+3
  9935. LPN 37
  9936. STD CM+3
  9937. SHN 14
  9938. LMD CM+4
  9939. SADT .LM,C
  9940. ADC -* (-LIMIT)
  9941. MJN CIB1 IF OUT .LT. LIMIT
  9942. LDN /MTX/BAE BUFFER ARGUMENT ERROR
  9943. LJM RET3 RETURN ERROR CODE
  9944. CPD SPACE 4,10
  9945. ** CPD - CHECK PP (1LT) DROP OUT.
  9946. *
  9947. * ENTRY (CPDA) = PP INPUT REGISTER ADDRESS.
  9948. *
  9949. * EXIT (A) = 0, IF *1LT* STILL AROUND.
  9950. *
  9951. * USES CM - CM+4.
  9952. *
  9953. * MACROS CHTE.
  9954.  
  9955.  
  9956. CPD SUBR ENTRY/EXIT
  9957. LDC *
  9958. CPDA EQU *-1
  9959. CRD CM
  9960. LDD CM+1
  9961. SCN 77
  9962. SHN 6
  9963. LMD CM
  9964. LMC 3RT1L
  9965. ZJN CPD1 IF *1LT*
  9966. SHN 14
  9967. LMN 1R1
  9968. NJN CPDX IF NOT *1LT* LOADING
  9969. CPD1 LDD CM+3
  9970. CHTE *
  9971. LMN CH
  9972. LPN 77
  9973. UJN CPDX RETURN
  9974. CRA SPACE 4,10
  9975. ** CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
  9976. *
  9977. * EXIT (A) = 0 IF *1LT* COMPLETE.
  9978. * (CM - CM+4) = REQUEST/RETURN WORD.
  9979.  
  9980.  
  9981. CRA SUBR ENTRY/EXIT
  9982. LDM CPDA
  9983. ADN 2
  9984. CRD CM
  9985. LDD CM
  9986. LMN 2
  9987. UJN CRAX RETURN
  9988. EBP SPACE 4,15
  9989. ** EBP - END OF BLOCK PROCESSING.
  9990. *
  9991. * ENTRY (TB) = STATUS OF BLOCK READ.
  9992. * (CN+3 - CN+4) = IN POINTER.
  9993. *
  9994. * EXIT TO *RET* IF TERMINATION CONDITION MET.
  9995. * TO *RET2* IF DROP OUT CONDITION OR RECOVERED ERROR.
  9996. *
  9997. * USES CN+3, CN+4, HP.
  9998. *
  9999. * CALLS CIB, UIP.
  10000. *
  10001. * MACROS SADT.
  10002.  
  10003.  
  10004. EBP SUBR ENTRY/EXIT
  10005. LDD TB
  10006. EBPA SBN 0 READ STOP CONDITION
  10007. EBPB PJN EBP3.1 IF TERMINATION MET (NOT LEVEL 17 READCW)
  10008. * PJN EBP3 IF TERMINATION MET (LEVEL 17 READCW)
  10009. RJM CIB CHECK INPUT BUFFER
  10010. SADT .BS,C
  10011. ADC -* (- MAXIMUM BLOCK SIZE)
  10012. EBPC MJN EBP1 IF NOT ROOM FOR NEXT BLOCK
  10013. * PSN (READSKP)
  10014. SADT .BS,C
  10015. ADC -* (-MAXIMUM BLOCK SIZE)
  10016. SHN -21
  10017. RAM UIPB SET DRIVER RECALL FLAG
  10018. LDD EP CHECK IF ERROR OR RECOVERY IN PROGRESS
  10019. LPN 77
  10020. ADD EC
  10021. ADD DF CHECK DROP OUT FLAG
  10022. NJN EBP2 IF DROP OUT OR ERROR CONDITION
  10023. EBP1 RJM UIP UPDATE IN POINTER
  10024. UJN EBPX RETURN
  10025.  
  10026. EBP2 RJM UIP UPDATE IN POINTER
  10027. LJM RET2 REQUEUE
  10028.  
  10029. EBP3 LDM VDAB BACK UP IN POINTER
  10030. STD CN+3
  10031. LDM VDAC
  10032. STD CN+4
  10033. EBP3.1 RJM UIP UPDATE IN POINTER IN FET
  10034. EBPD UJN EBP3.2 COMPLETE FET
  10035. * LDM LNUM (READSKP)
  10036. CON LNUM
  10037. EBPE SBN 0 LEVEL NUMBER DESIRED
  10038. PJN EBP3.2 IF TERMINATION MET
  10039. EBPF LDN 4 SET TO SKIP RECORD
  10040. * LDN 10 (IF FILE SKIP REQUIRED)
  10041. STD PB INDICATE TO MAGNET TO SKIP
  10042. LDN /MTX/BEI
  10043. LJM RET3 RETURN ERROR CODE
  10044.  
  10045. EBP3.2 LDD TB
  10046. ZJN EBP4 IF PRU READ COMPLETE
  10047. LDD UP SET EOR/EOF FLAG
  10048. SCN 10
  10049. LMN 10
  10050. STD UP
  10051. LDD TB
  10052. ADN 1 RETURN EOR/EOF
  10053. SHN 3+4
  10054. LMM LNUM MERGE LEVEL NUMBER
  10055. SHN 16
  10056. EBP4 ADN 1
  10057. LJM RET SET FET COMPLETE
  10058. ITS SPACE 4,10
  10059. ** ITS - INDICATE *1MT* TRANSFER STARTED.
  10060. *
  10061. * ENTRY (A) = BYTE COUNT.
  10062. *
  10063. * EXIT (A) = BYTE COUNT.
  10064.  
  10065.  
  10066. ITS SUBR ENTRY/EXIT
  10067. STD T0 SAVE BYTE COUNT
  10068. LDM CPDA INDICATE *1MT* TRANSFER STARTED
  10069. ADN 3
  10070. CWD ON
  10071. LDD T0 RESTORE (A)
  10072. UJN ITSX RETURN
  10073. SRQ SPACE 4,10
  10074. ** SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
  10075. *
  10076. * ENTRY (A) = REQUEST CODE.
  10077. * (CN+3 - CN+4) = IN POINTER.
  10078. *
  10079. * EXIT TO *RET2* IF *1LT* PAUSING.
  10080. *
  10081. * USES EC, TB, CM - CM+4.
  10082. *
  10083. * CALLS ADP, CPD, HNG.
  10084.  
  10085.  
  10086. SRQ SUBR ENTRY/EXIT
  10087. STM SRQC SAVE REQUEST CODE
  10088. LDN 0 ALLOW FOR CONTROL WORD
  10089. SRQA EQU *-1
  10090. * LDN 1 (200 READ CODE)
  10091. RJM ADP
  10092. LDN 0
  10093. STM VDAD+3 CLEAR BLOCK LENGTH FOR CONTROL WORD
  10094. STM VDAD+4
  10095. STM VDAA INDICATE *1MT* FINISHED INPUT
  10096. STM .BYC FULL CHUNK COUNT READ
  10097. STD EC ERROR CODE
  10098. STD TB TERMINATION STATUS
  10099. LDD CN+3
  10100. STM SRQC+3
  10101. LDD CN+4
  10102. STM SRQC+4 SET UP IN POINTER FOR *1LT*
  10103. PSN
  10104. * UJN SRQ1 (NOT CYBER 180)
  10105. SRQB EQU *-1
  10106. SCF *+2,CH SET CHANNEL FLAG
  10107. LDM CPDA INDICATE *1MT* TRANSFER STARTED
  10108. ADN 3
  10109. CWD ON
  10110. SRQ1 LDM CPDA CHECK *1LT* FUNCTION
  10111. ADN 1
  10112. CRD CM
  10113. LDD CM
  10114. LMN PRLM
  10115. ZJN SRQ2 IF *1LT* PAUSING
  10116. LDM CPDA ENTER REQUEST
  10117. ADN 2
  10118. CWM SRQC,ON
  10119. RJM CPD CHECK PP DROP OUT
  10120. ZJP SRQX IF *1LT* STILL AROUND
  10121. RJM HNG HANG PP
  10122.  
  10123. SRQ2 LJM RET2 REQUEUE REQUEST
  10124.  
  10125.  
  10126. SRQC BSS 0 *1LT* REQUEST
  10127. CON 1 READ BLOCK REQUEST
  10128. CON LIRW REMAINDER
  10129. CON LICH CHUNK COUNT
  10130. CON 0,0 IN POINTER
  10131. UCP SPACE 4,10
  10132. ** UCP - UPDATE COUNTERS AND POINTERS.
  10133. *
  10134. * ENTRY (CN+3 - CN+4) = IN POINTER.
  10135. *
  10136. * EXIT (A) = (.BYC) = FULL CHUNKS READ.
  10137. *
  10138. * CALLS ADP.
  10139.  
  10140.  
  10141. UCP SUBR ENTRY/EXIT
  10142. LDC LBBY
  10143. RAM VDAD+4 COUNT BYTES READ
  10144. SHN -14
  10145. RAM VDAD+3
  10146. LDC /MTX/LBWD ADVANCE POINTER TO WRITE CM
  10147. RJM ADP
  10148. AOM .BYC INCREMENT FULL CHUNK COUNT
  10149. UJN UCPX RETURN
  10150. UIP SPACE 4,15
  10151. ** UIP - UPDATE IN POINTER IN FET.
  10152. * IF AN ERROR OCCURRED, THE ERROR PROCESSING OVERLAY IS
  10153. * CALLED. ERRORS INCLUDE TAPE MARKS AND EOT. IF NO ERROR
  10154. * OCCURRED OR THE ERROR IS RECOVEABLE, THE IN POINTER IN THE
  10155. * FET IS UPDATED.
  10156. *
  10157. * CALLS *CRE*, *REM*.
  10158. *
  10159. * MACROS CALL, SADT.
  10160.  
  10161.  
  10162. UIP SUBR ENTRY/EXIT
  10163. LDD EP
  10164. LPN 77
  10165. ADD EC
  10166. ZJN UIP1 IF NO ERROR ENCOUNTERED
  10167. UIPA CALL REM LOAD READ ERROR PROCESSOR
  10168. * CALL CRE LOAD ERROR PROCESSOR (CTS)
  10169. SADT .FE,,2,A
  10170. UIP1 LDC * UPDATE IN POINTER IN FET
  10171. CWD CN
  10172. LDN 0 RECALL CPU FLAG
  10173. UIPB EQU *-1
  10174. * LDN 1 (ROOM FOR 1 BLOCK, NO ROOM FOR 2 BLOCKS)
  10175. ZJN UIP2 IF NO RECALL CPU
  10176. LDD OA RECALL CPU
  10177. CWM UIPD,ON
  10178. SOM UIPB
  10179. UIP2 AOD BL+1 INCREMENT BLOCK COUNT
  10180. SHN -14
  10181. RAD BL
  10182. AOD BT INCREMENT BLOCKS TRANSFERRED
  10183. LJM UIPX
  10184. UIPC EQU *-1
  10185. * LJM RET4 (FATAL READ ERROR)
  10186.  
  10187.  
  10188. UIPD CON DRCM DRIVER RECALL CPU MONITOR FUNCTION
  10189. VDA SPACE 4,20
  10190. ** VDA - VALIDATE DATA.
  10191. * THIS ROUTINE UPDATES THE BYTE COUNTER AND IN POINTER FOR THE
  10192. * LAST CHUNK READ. IF *1MT* READ THE LAST CHUNK, *WDA* PUTS
  10193. * THE DATA IN CENTRAL. THIS ROUTINE ALSO VALIDATES THE DATA
  10194. * IN THE BLOCK PREFIX, AND WRITES THE BEGINNING CONTROL WORD
  10195. * FOR A 200 READ.
  10196. *
  10197. * ENTRY (A) = BYTE COUNT USED FOR LAST INPUT.
  10198. * (T1) = BYTES NOT TRANSFERRED.
  10199. * (VDAA) = 0 IF *1MT* FINISHED THE TRANSFER.
  10200. * (BUFB-5 - BUFB-1) = BLOCK PREFIX.
  10201. * (.BYC) = FULL CHUNKS TRANSFERRED.
  10202. *
  10203. * EXIT (TB) = TERMINATION STATUS.
  10204. * (LNUM) = LEVEL NUMBER.
  10205. * (EC) = /MTX/BNE IF VALIDATION ERROR.
  10206. * (BUFB) = LEVEL NUMBER FOR 200 READ.
  10207. * (VDAE) .NE. 0 IF BLOCK LENGTH ERROR.
  10208. *
  10209. * USES BY, T1, T2, WC.
  10210. *
  10211. * CALLS ADP, UCP, WDA.
  10212.  
  10213.  
  10214. VDA SUBR
  10215. SBD T1
  10216. STD BY BYTE COUNT READ
  10217.  
  10218. * ADJUST THE BYTE COUNT TO ALLOW FOR THE PREFIX, THEN
  10219. * CALCULATE THE WORD COUNT TO TRANSFER TO CENTRAL.
  10220.  
  10221. LDM .BYC
  10222. NJN VDA1 IF NOT FIRST CHUNK
  10223. LDD BY
  10224. SBN 2
  10225. PJN VDA2 IF AT LEAST 2 BYTES RECEIVED
  10226. VDA1 LDD BY
  10227. ADN 3
  10228. VDA2 STD T2
  10229. SHN 1 13*BYTES
  10230. ADD T2
  10231. SHN 2
  10232. ADD T2
  10233. SHN 14 (-6) (13*BYTES)/64
  10234. STD T0
  10235. SHN 6+2 4*13*BYTES (52*BYTES)
  10236. SBD T2 51*BYTES
  10237. ADD T0 (51*BYTES)+((13*BYTES)/64)
  10238. SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
  10239. STD WC
  10240. LPN 1
  10241. NJN VDA3 IF NO PAD BYTE ADDED ON WRITE
  10242. LDD BY
  10243. ZJN VDA3 IF NO DATA READ THIS CHUNK
  10244. SOD BY
  10245. VDA3 LDC *
  10246. VDAA EQU *-1
  10247. NJN VDA5 IF *1LT* FINISHED INPUT
  10248. LDM .BYC
  10249. ZJN VDA4 IF FIRST CHUNK
  10250. RJM UCP UPDATE COUNTERS AND POINTER FOR *1LT*
  10251. VDA4 LDD WC
  10252. RJM ADP ADVANCE IN POINTER
  10253. RJM WDA WRITE DATA TO CENTRAL MEMORY
  10254. UJN VDA6 CHECK BYTES READ
  10255.  
  10256. VDA5 LDD WC ADVANCE IN POINTER FOR *1LT*
  10257. RJM ADP
  10258. VDA6 LDM VDAD+3
  10259. STD T1 BYTES READ (UPPER)
  10260. LDM VDAD+4
  10261. STD T2 BYTES READ (LOWER)
  10262. LDD WC
  10263. SHN 2
  10264. ADD WC
  10265. RAM VDAD+4 UPDATE BYTE COUNT FOR CONTROL WORD
  10266. SHN -14
  10267. RAM VDAD+3
  10268. LDM BUFB-4 SAVE BLOCK LENGTH LOWER BITS
  10269. STM //BNEI
  10270. LDM BUFB-5 SAVE BLOCK LENGTH UPPER BITS
  10271. STM //BNEU
  10272. LDM BUFB-2 SAVE BLOCK NUMBER
  10273. STM //BNEI+2
  10274. LDM BUFB-3
  10275. STM //BNEI+1
  10276. LDN 1
  10277. STM VDAE
  10278. LDD BY
  10279. ADM .BYC
  10280. ZJN VDA9 IF NO BYTES READ
  10281. LDM .BYC
  10282. ZJN VDA8 IF FIRST CHUNK
  10283. LDD T2 BYTES (LOWER) READ BEFORE LAST CHUNK
  10284. ADN 5 ALLOW FOR PREFIX
  10285. VDA8 ADD BY BYTES READ THIS CHUNK
  10286. STD T0
  10287. SHN -14
  10288. ADD T1 BYTES (UPPER) READ BEFORE LAST CHUNK
  10289. LMM BUFB-5
  10290. NJN VDA9 IF BLOCK LENGTH UPPER ERROR
  10291. LDD T0
  10292. LMM BUFB-4
  10293. NJN VDA9 IF BLOCK LENGTH LOWER ERROR
  10294. STM VDAE
  10295. LDM BUFB-3
  10296. LMD BL
  10297. NJN VDA9 IF BLOCK NUMBER UPPER ERROR
  10298. LDM BUFB-2
  10299. LMD BL+1
  10300. ZJN VDA10 IF BLOCK NUMBER CORRECT
  10301. VDA9 LDN /MTX/BNE
  10302. STD EC
  10303. VDA10 LDM .BYC
  10304. LMN LICH
  10305. NJN VDA11 IF NOT FULL PRU
  10306. LDD BY
  10307. LMC LIRW*5
  10308. STM BUFB SET 0 LEVEL NUMBER
  10309. ZJN VDA13 IF FULL PRU
  10310. VDA11 LDM BUFB-1 SET LEVEL NUMBER FOR CONTROL WORD
  10311. STM BUFB
  10312. STM LNUM
  10313. LMN 17
  10314. ZJN VDA12 IF EOF
  10315. LCN 1
  10316. VDA12 ADN 2
  10317. VDA13 STD TB SET BLOCK STATUS
  10318. LDD MD
  10319. LPN 40
  10320. ZJN VDA14 IF NOT CONTROL WORD READ
  10321. LDC * PUT CONTROL WORD IN BUFFER
  10322. VDAB EQU *-1
  10323. SHN 6
  10324. ADD RA
  10325. SHN 6
  10326. ADC *
  10327. VDAC EQU *-1
  10328. CWM VDAD,ON
  10329. VDA14 LJM VDAX
  10330.  
  10331. * BEGINNING CONTROL WORD FOR 200 READ.
  10332.  
  10333. VDAD DATA 1,0 PRU SIZE
  10334. DATA 0
  10335. DATA 0,0 BLOCK LENGTH IN BYTES
  10336. VDAE DATA 0 0 IF CORRECT BLOCK LENGTH (FOR ERR. REC.)
  10337. WDA SPACE 4,10
  10338. ** WDA - WRITE DATA TO CENTRAL MEMORY.
  10339. *
  10340. * ENTRY (T4 - T5) = IN POINTER.
  10341. * (T6) = FIRST PART WORD COUNT.
  10342. * (T7) = SECOND PART WORD COUNT.
  10343. *
  10344. * MACROS SADT.
  10345.  
  10346.  
  10347. WDA SUBR ENTRY/EXIT
  10348. LDD T6
  10349. ZJN WDAX IF NO FIRST PART
  10350. SHN 2
  10351. ADD T6
  10352. ADC BUFB
  10353. STM WDAA
  10354. LDD T4 TRANSFER FIRST PART
  10355. SHN 6
  10356. ADD RA
  10357. SHN 6
  10358. ADD T5
  10359. CWM BUFB,T6
  10360. LDD T7
  10361. ZJN WDAX IF NO SECOND PART
  10362. SADT .FT,,,A
  10363. LDC * TRANSFER SECOND PART
  10364. CWM *,T7
  10365. WDAA EQU *-1
  10366. UJN WDAX RETURN
  10367. WTS SPACE 4,10
  10368. ** WTS - WAIT FOR *1LT* TRANSFER TO START.
  10369. *
  10370. * ENTRY (A) = BYTE COUNT.
  10371. *
  10372. * EXIT (A) = BYTE COUNT.
  10373. *
  10374. * USES CM - CM+4.
  10375.  
  10376.  
  10377. WTS3 LDD T0 RESTORE (A)
  10378.  
  10379. WTS SUBR ENTRY/EXIT
  10380. STD T0 SAVE BYTE COUNT
  10381. WTS1 LDM CPDA CHECK *1MT*/*1LT* INTERLOCK
  10382. ADN 3
  10383. CRD CM
  10384. LDD CM
  10385. ZJN WTS3 IF *1LT* TRANSFER STARTED
  10386. LDN 24 DELAY 10 MICROSECONDS
  10387. WTS2 SBN 1
  10388. NJN WTS2 IF NOT DONE
  10389. UJN WTS1 CHECK INTERLOCK
  10390. SPACE 4,10
  10391. ERRNG BUFB-5-* CODE OVERFLOWS INTO DATA BUFFER
  10392. TITLE PRESET.
  10393. PRS SPACE 4,10
  10394. ** PRS - PRESET.
  10395. * THIS OVERLAY IS ONLY LOADED IF THE FUNCTION IS A READ AND
  10396. * THE FORMAT IS LI. THIS ROUTINE LOADS *1LT* WHICH TRANSFERS
  10397. * THE 2ND, 4TH, ... CHUNKS OF THE BLOCK.
  10398. *
  10399. * EXIT TO *RET2* IF MOVE FLAG OR NO PP ASSIGNED FOR *1LT*.
  10400. * TO *RLI* TO READ THE FIRST BLOCK.
  10401. *
  10402. * USES T1, CM - CM+4.
  10403. *
  10404. * CALLS CEC, CPD, *CPP*, MCH.
  10405. *
  10406. * MACROS MONITOR, PAUSE.
  10407.  
  10408.  
  10409. PRS LDC PRSA MODIFY CHANNELS
  10410. RJM MCH
  10411. LDD WC
  10412. STM /READ/WOCN SO /CPP/CAL SETS CORRECT BLOCK SIZE
  10413. LDD HP
  10414. LPN 20
  10415. SHN 6
  10416. RAM CALL+3 SET ATS FLAG FOR *1LT*
  10417. LDC TRSO
  10418. STD T1
  10419. PRS1 LDI T1
  10420. ZJN PRS5 IF END OF TABLE
  10421. LMM CIOE
  10422. LPC 774
  10423. ZJN PRS2 IF FUNCTION FOUND IN TABLE
  10424. LDN 2
  10425. RAD T1
  10426. UJN PRS1 CHECK NEXT ENTRY IN TABLE
  10427.  
  10428. PRS2 AOD T1
  10429. LDM LNUM
  10430. SHN -10
  10431. RAM EBPE SET *READSKP* LEVEL NUMBER
  10432. LPN 17
  10433. LMN 17
  10434. NJN PRS3 IF NOT LEVEL 17
  10435. LDN 10-4 SET *READSKP* FOR FILE SKIP
  10436. RAM EBPF
  10437. LDD MD
  10438. LPN 40
  10439. ZJN PRS3 IF NOT 200 READCW
  10440. LCN EBP3.1-EBP3 SUPPRESS LEVEL 17 EOF CONTROL WORDS
  10441. RAM EBPB
  10442. SOI T1 ADJUST TERMINATION CONDITION
  10443. PRS3 LDI T1
  10444. PRS4 RAM EBPA
  10445. PRS5 LDN F0040 SELECT READ FUNCTION
  10446. STM //ITMA
  10447. LDD MD
  10448. LPN 40
  10449. ZJN PRS6 IF NO CONTROL WORDS
  10450. AOM SRQA ALLOW FOR CONTROL WORD
  10451. PRS6 LDD HP
  10452. SHN 21-7
  10453. PJN PRS7 IF NOT CTS
  10454. LDC LDNI+CRE/10000 CALL CTS ERROR PROCESSOR
  10455. STM UIPA
  10456. LDC 6125 BITS TO TEST IN GENERAL STATUS
  10457. STM /PRESET/WFEA
  10458. LDN 1 BITS IN GENERAL STATUS THAT SHOULD BE SET
  10459. STM /PRESET/WFEB
  10460. LJM PRS13 SET TO MODIFY SADT INSTRUCTIONS
  10461.  
  10462. * REPLACE *RLI* WITH READ ROUTINE *ALI* FOR ATS.
  10463.  
  10464. PRS7 LDC .ALIL-1 LENGTH OF CODE TO MOVE
  10465. STD T1
  10466. PRS8 LDM .ALI,T1
  10467. STM ALI,T1
  10468. SOD T1
  10469. PJN PRS8 IF MORE CODE TO MOVE
  10470. LDC .ALIB MODIFY CHANNELS
  10471. RJM MCH
  10472. LDC 4435 BITS TO TEST IN GENERAL STATUS
  10473. STM //WEOA
  10474. LDN 1 BITS IN GENERAL STATUS THAT SHOULD BE SET
  10475. STM //WEOB
  10476. LDK MABL CHECK MAINFRAME TYPE
  10477. CRD CM
  10478. LDD CM+1
  10479. SHN -6
  10480. LPN 41
  10481. LMN 1
  10482. NJP PRS10 IF NOT CYBER 180
  10483.  
  10484. * PRESET FOR CYBER 180 IOU. THE CHANNEL FLAG IS USED FOR
  10485. * COMMUNICATION BETWEEN *1MT* AND *1LT* IF CYBER 180.
  10486.  
  10487. LDC UJNI+2 JUMP TO INPUT FIRST CHUNK
  10488. STM ALIE
  10489. LDC ALI1
  10490. STM ALIA JUMP ADDRESS IF NOT LAST CHUNK
  10491. LDC AILA
  10492. STM ALIG
  10493. STM ALIB
  10494. LDC ALI8
  10495. STM ALIF JUMP ADDRESS IF LAST CHUNK
  10496. LDN .AILL-1 MOVE IOU LOOP
  10497. STD T1
  10498. PRS9 LDM .AIL,T1
  10499. STM AIL,T1
  10500. SOD T1
  10501. PJN PRS9 IF MORE CODE TO MOVE
  10502. LDC .AILB MODIFY CHANNELS
  10503. RJM MCH
  10504. UJN PRS11 CONTINUE PRESET
  10505.  
  10506. PRS10 ISTORE SRQB,(UJN SRQ1) SKIP SETTING CHANNEL FLAG
  10507. PRS11 LDD EP SET CLIPPING LEVEL
  10508. LPC 700
  10509. ZJP PRS12 IF NORMAL CLIP LEVEL
  10510. RAM ALIC
  10511. UJN PRS13 CONTINUE PRESET
  10512.  
  10513. PRS12 LDC UJNI+2 DISABLE CLIP LEVEL SELECTION
  10514. STM ALID
  10515. PRS13 LDC PRSB SET TO MODIFY SADT INSTRUCTIONS
  10516. STD CN
  10517. LDN 2 SET TO FETCH IN POINTER
  10518. STD CN+4
  10519. LDC /SRU/ITRL*100 SET SRU INCREMENT
  10520. STM //CECA
  10521. LDC PRS14 SET TO RETURN HERE AFTER *CPP* LOADED
  10522. STD BT
  10523. LJM PRSX RETURN
  10524.  
  10525. * RETURN HERE AFTER *CPP* LOADED.
  10526. * BUILD CALL TO *1LT*.
  10527.  
  10528. PRS14 LDD CP MERGE CP NUMBER
  10529. SHN -7
  10530. RAM CALL+1
  10531. LDD IA SET INPUT REGISTER ADDRESS IN CALL
  10532. STM CALL+4
  10533. LDN CMCL CHECK MOVE FLAG
  10534. CRD CM
  10535. LDD CM
  10536. SHN 7
  10537. LMD CP
  10538. ZJN PRS15 IF MOVE FLAG
  10539. LDD MA WRITE REQUEST BLOCK
  10540. CWM CALL,TR
  10541. LDN 1 SET TO NOT QUEUE REQUEST
  10542. STD CM+1
  10543. MONITOR RPPM REQUEST PP
  10544. LDD CM+1
  10545. NJN PRS16 IF PP ASSIGNED
  10546. PRS15 LJM RET2 REQUEUE
  10547.  
  10548. PRS16 STM CPDA SAVE PP INPUT REGISTER ADDRESS
  10549. PRS17 LDN 77 DELAY
  10550. SBN 1
  10551. NJN *-1
  10552. LDD MA CHECK FOR *1LT* ACKNOWLEDGE
  10553. ADN 1
  10554. CRD CM
  10555. LDD CM
  10556. ZJN PRS19 IF *1LT* READY
  10557. RJM CPD CHECK PP DROP OUT
  10558. NJN PRS15 IF *1LT* GONE
  10559. LDN CMCL CHECK MOVE FLAG
  10560. CRD CM
  10561. LDD CM
  10562. SHN 7
  10563. LMD CP
  10564. NJN PRS17 IF NO MOVE FLAG FOR THIS CP
  10565. RJM CEC CHANGE BACK TO MAGNET CP
  10566. PRS18 RJM CPD CHECK PP DROP OUT
  10567. NJN PRS15 IF *1LT* GONE
  10568. PAUSE NE
  10569. UJN PRS18 LOOP
  10570.  
  10571. PRS19 LDM CIOE
  10572. LPC 774
  10573. LMN 20
  10574. NJN PRS20 IF NOT READ SKIP
  10575. STM EBPC
  10576. LDC UJNI-PJNI
  10577. RAM RLIB
  10578. LDC LDMI
  10579. STM EBPD
  10580. RJM CIB
  10581. MJN PRS21 IF BUFFER ARGUMENT ERROR
  10582. STD T5
  10583. SHN -14
  10584. STD T4
  10585. LDN 3 SET REQUEST TO *1LT*
  10586. RJM SRQ
  10587. PRS20 LDN 77 DELAY
  10588. SBN 1
  10589. NJN *-1 IF DELAY NOT COMPLETE
  10590. RJM CRA SEE IF *1LT* ACCEPTED READ SKIP
  10591. LMN 2
  10592. NJN PRS20 IF *1LT* NOT DONE
  10593. PRS21 LJM RLI ENTER READ ROUTINE
  10594. CALL SPACE 4,10
  10595. ** *1LT* CALL BLOCK.
  10596. *
  10597. *T 18/ 1LT,6/ CP,12/ 0,12/ CHANNEL,12/ PPIA
  10598. *T, 12/ -0,24/ FIRST,24/ LIMIT
  10599.  
  10600.  
  10601. CALL VFD 18/3R1LT,6/0
  10602. CON 0 READ
  10603. CHTE *
  10604. CON CH CHANNEL
  10605. CON 0 *1MT* INPUT REGISTER ADDRESS
  10606. CON -0
  10607. SADT .FT,,,,SE
  10608. CON 0,0
  10609. SADT .LM,,,,SE
  10610. CON 0,0
  10611.  
  10612. ERRMI ERLA-* IF CODE OVERFLOWS
  10613. TRSO SPACE 4,10
  10614. ** TRSO - TABLE OF READ STOP CODES.
  10615.  
  10616.  
  10617. TRSO BSS 0
  10618. CON 10,1 READ
  10619. CON 20,1 READSKP
  10620. CON 200,3 READCW
  10621. CON 250,2 READNS
  10622. CON 600,3 READEI
  10623. CON 0 RPHR
  10624.  
  10625. PRSA CHTB CHANNEL TABLE
  10626. PRSB TSAD
  10627. TITLE PRESET SUBROUTINES.
  10628. ALI SPACE 4,15
  10629. ** ALI - ATS LI FORMAT READ.
  10630. * THIS ROUTINE OVERLAYS *RLI*.
  10631. *
  10632. * USES T1.
  10633. *
  10634. * CALLS ADP, CDO, CRA, DTS, EBP, FCN, ITM, MCC, SRQ, STW,
  10635. * UBW, UCP, VDA, WDA, WEO.
  10636.  
  10637.  
  10638. .ALI BSS 0
  10639. LOC .RLIA
  10640. ALI LDC NJNI+ALI6-ALIH
  10641. * LDC ALI1 (CYBER 180)
  10642. ALIA EQU *-1
  10643. STM ALIH NOT LAST CHUNK
  10644. * STM AILA (CYBER 180)
  10645. ALIB EQU *-1
  10646. LDC 6
  10647. * LDC X06 (SELECT CLIP LEVEL)
  10648. ALIC EQU *-1
  10649. RJM FCN
  10650. * UJN *+2 (NORMAL CLIP LEVEL)
  10651. ALID EQU *-2
  10652. RJM ITM INITIATE TAPE MOTION
  10653. LDN 1
  10654. RJM SRQ SEND START BLOCK REQUEST TO *1LT*
  10655. LDD DS SAVE DEVICE STATUS
  10656. STM /READ/STAP
  10657. LDC LBBY+5 BYTE COUNT FOR FIRST CHUNK
  10658. STM ALII
  10659. LJM ALI7 INPUT THE FIRST CHUNK
  10660. * UJN *+2 (CYBER 180 - INPUT THE FIRST CHUNK)
  10661. ALIE EQU *-2
  10662. IAM BUFB-5,CH INPUT FIRST CHUNK
  10663. ALI1 IJM ALI9,CH IF *1MT* FINISHED THE CHANNEL TRANSFER
  10664. EJM ALI1,CH IF *1LT* NOT TAKING DATA YET
  10665. CCF *,CH TELL *1LT* TO START
  10666. ALI2 RJM UCP UPDATE COUNTERS AND POINTER
  10667. LMN 1
  10668. ZJN ALI3 IF FIRST CHUNK
  10669. RJM UCP UPDATE COUNTERS AND POINTER
  10670. ALI3 RJM WDA WRITE DATA TO CENTRAL MEMORY
  10671. LDC LBBY
  10672. STM ALII BYTE COUNT FOR MIDDLE CHUNK
  10673. LDM .BYC
  10674. SBN LICH-1 FULL CHUNKS PER BLOCK - 1
  10675. MJN ALI4 IF MORE FULL CHUNKS TO INPUT
  10676. LDC LIRW*5+1+1 BYTES IN REMAINDER + PAD + 1
  10677. STM ALII
  10678. LDC UJNI+ALI8-ALIH
  10679. * LDC ALI8 (CYBER 180)
  10680. ALIF EQU *-1
  10681. STM ALIH LAST CHUNK HANDLING
  10682. * STM AILA (CYBER 180)
  10683. ALIG EQU *-1
  10684.  
  10685. * THE FOLLOWING CODE IS OVERLAID BY CODE AT *AIL* IF USING
  10686. * THE CHANNEL FLAG INSTRUCTION.
  10687.  
  10688. .ALIA BSS 0 BEGINNING OF OVERLAID CODE
  10689. ALI4 AJM *,CH IF WAITING FOR *1LT* TO DCN CHANNEL
  10690. LDM ALII SET NUMBER OF BYTES TO INPUT
  10691. ALI5 IJM ALI19,CH IF *1LT* FINISHED THE CHANNEL TRANSFER
  10692. EJM ALI5,CH IF *1LT* STILL READING
  10693. IAM BUFB,CH INPUT DATA
  10694. DCN CH+40 INDICATE TO *1LT* TO CONTINUE READ
  10695. NJN ALI9 IF *1MT* FINISHED THE CHANNEL TRANSFER
  10696. ALIH EQU *-1
  10697. * UJN ALI8 (LAST CHUNK)
  10698. ACN CH
  10699. ALI6 IJM ALI9,CH IF *1MT* FINISHED THE CHANNEL TRANSFER
  10700. EJM ALI6,CH IF *1LT* NOT TAKING DATA YET
  10701. LJM ALI2 SETUP FOR NEXT CHUNK
  10702.  
  10703. ALI7 IAM BUFB-5,CH
  10704. DCN CH+40 INDICATE TO *1LT* TO CONTINUE READ
  10705. NJN ALI9 IF *1MT* FINISHED THE CHANNEL TRANSFER
  10706. ACN CH
  10707. UJN ALI6 SAVE BYTES NOT TRANSFERRED
  10708.  
  10709. .ALIAL EQU *-.ALIA LENGTH OF OVERLAID AREA
  10710.  
  10711. ALI8 NJN ALI9 IF NOT EXCESS BLOCK LENGTH
  10712. LDN /MTX/BTL SET BLOCK TOO LONG
  10713. RJM MCC MASTER CLEAR CHANNEL
  10714. * LDN 0
  10715. RJM STW GET GENERAL STATUS
  10716. LDN 1 SET TO COMPUTE WORD COUNT
  10717. ALI9 STD T1
  10718. LDC LBBY+5 BYTE COUNT FOR FIRST CHUNK
  10719. * LDC LBBY (MIDDLE CHUNK)
  10720. * LDC LIRW*5+1+1 (LAST CHUNK)
  10721. ALII EQU *-1
  10722. RJM VDA PROCESS DATA
  10723. RJM CDO CHECK DROP OUT FLAG
  10724.  
  10725. * PROCESS STATUS.
  10726.  
  10727. RJM WEO WAIT FOR END OF OPERATION
  10728. ZJN ALI12 IF NO ERRORS
  10729. SHN 21-4
  10730. PJN ALI10 IF NOT TAPE MARK
  10731. LDN 3 SET STOP TO EOI
  10732. STD TB
  10733. LDN 17 SET LEVEL NUMBER
  10734. STM LNUM
  10735. LDM VDAB BACK UP POINTERS
  10736. STD CN+3
  10737. LDM VDAC
  10738. STD CN+4
  10739. LDN /MTX/BEI SET EOI
  10740. STD EC
  10741. UJN ALI15 GET DETAILED STATUS
  10742.  
  10743. ALI10 LDD EC
  10744. ZJN ALI11 IF ERROR NOT ALREADY ENCOUNTERED
  10745. LDM MTDS
  10746. ZJN ALI13 IF NOT FATAL ERROR
  10747. ALI11 LDN /MTX/STE STATUS ERROR
  10748. STD EC
  10749. UJN ALI13 NO TAPE ERROR REPORTED FROM HARDWARE
  10750.  
  10751. ALI12 LDM MTDS+1
  10752. SHN 21-11
  10753. PJN ALI13 IF NO GCR SINGLE TRACK CORRECTION
  10754. AOM ECNT+4 INCREMENT COUNTER
  10755. SHN -14
  10756. RAM ECNT+3 INCREMENT COUNTER FOR OVERFLOW
  10757. ALI13 LDD DS
  10758. LPN 40
  10759. ZJN ALI14 IF NO FILL STATUS
  10760. LDD EC
  10761. NJN ALI15 IF ERROR ALREADY ENCOUNTERED
  10762. LDN /MTX/STE
  10763. STD EC
  10764. ALI14 LDD EC
  10765. NJN ALI15 IF ERROR
  10766. RJM UBW UPDATE BID WINDOW
  10767. UJN ALI16 SAVE STATUS FOR ERROR PROCESSOR
  10768.  
  10769. ALI15 RJM DTS DETAILED STATUS
  10770. ALI16 LDD DS SAVE STATUS FOR ERROR PROCESSOR
  10771. STM //STER
  10772. ALI17 RJM CRA READ *1LT* INTERFACE WORD
  10773. NJN ALI17 IF *1LT* TRANSFER TO CM NOT COMPLETE
  10774. LDD MD
  10775. LPN 40
  10776. ZJN ALI18 IF NOT 200 READ CODE
  10777. LDN 1
  10778. RJM ADP
  10779. RJM WDA WRITE TRAILER CONTROL WORD
  10780. ALI18 LDN 0
  10781. STD CM ACKNOWLEDGE *1LT*
  10782. LDM CPDA
  10783. ADN 2
  10784. CWD CM
  10785. RJM EBP END OF BLOCK PROCESSING
  10786. LJM RLI READ NEXT BLOCK
  10787.  
  10788. * *1LT* FINISHED THE CHANNEL TRANSFER.
  10789.  
  10790. ALI19 RJM CRA READ *1LT* INTERFACE WORD
  10791. NJN ALI19 IF *1LT* TRANSFER TO CM NOT COMPLETE
  10792. AOM VDAA INDICATE *1LT* FINISHED THE TRANSFER
  10793. LDC LBBY
  10794. STM ALII BYTE COUNT FOR INPUT
  10795. SBD CM+1
  10796. LJM ALI9 SAVE BYTES NOT TRANSFERRED
  10797.  
  10798. LOC *O
  10799. .ALIL EQU *-.ALI LENGTH OF *ALI*
  10800. ERRMI .RLIAL-.ALIL IF CODE OVERFLOWS
  10801. .ALIB CHTB CHANNEL TABLE
  10802. AIL SPACE 4,10
  10803. ** ATS INPUT LOOP IF USING THE CHANNEL FLAG INSTRUCTION.
  10804.  
  10805.  
  10806. .AIL BSS 0
  10807. LOC .ALIA
  10808. AIL LDM ALII BYTES TO INPUT
  10809. RJM WTS WAIT FOR *1LT* TRANSFER TO START
  10810. AIL1 IJM ALI19,CH IF *1LT* FINISHED THE CHANNEL TRANSFER
  10811. SCF AIL1,CH IF *1LT* STILL READING
  10812. RJM ITS INDICATE *1MT* TRANSFER STARTED
  10813. IAM BUFB,CH
  10814. LJM ALI1 SAVE WORDS NOT TRANSFERRED
  10815. AILA EQU *-1
  10816. * LJM ALI8 LAST CHUNK
  10817.  
  10818. LOC *O
  10819. .AILL EQU *-.AIL LENGTH OF ATS INPUT LOOP
  10820.  
  10821. ERRMI .ALIAL-.AILL IF IOU INPUT CODE TOO LONG
  10822.  
  10823. .AILB CHTB TABLE OF CHANNELS FOR IOU CODE
  10824. OVERLAY (READ LABEL PROCESSOR.),(/READ/ORLA),,RLA
  10825. RLA SPACE 4,15
  10826. ** RLA - READ LABELS PROCESSOR.
  10827. *
  10828. *T 12/ 0,12/ RLA,12/ 0100,12/ PAR,6/ OP,6/ SEC
  10829. *
  10830. * OP OPERATION TYPE (SEE LISTS BY LABEL TYPE)
  10831. * SEC SECTION IN PROCESS.
  10832. * PAR PARAMETER.
  10833. *
  10834. * RETURN TO *RLAX* WILL ADVANCE TO NEXT SECTION WITHOUT A
  10835. * NEW READ BEING PERFORMED.
  10836. *
  10837. * CALLS CHC, CCL, FCN, HNG, *MFP*, /READ/MRD9.1, /READ/RCT13,
  10838. * /READ/RDF, RUD, UBW, WEL, /PRESET/WFE.
  10839. *
  10840. * MACROS CALL.
  10841.  
  10842.  
  10843. ENTRY RLA
  10844. RLA LDD PB
  10845. SHN -6
  10846. SBN /MTX/RLCM/100
  10847. MJN RLA1 IF NOT MULTI-FILE OPERATION
  10848. CALL MFP
  10849. RLA1 UJN RLA1.1 DISABLE IF NOT INITIAL LABEL CHECK
  10850. * LDN 0 (CLEAR LABEL RETRY COUNTER)
  10851. RLAF EQU *-1
  10852. STM LERA
  10853. RLA1.1 LDD PB CHECK SEQUENCE
  10854. SHN -6
  10855. LMC 0 (CURRENT SEQUENCE)
  10856. RLAA EQU *-1
  10857. NJN RLA2 IF INCORRECT SEQUENCE
  10858. LDD PB SET SECTION
  10859. LPN 77
  10860. STD T1
  10861. ADC -* (MAXIMUM NUMBER OF SECTIONS)
  10862. RLAB EQU *-1
  10863. MJN RLA3 IF LEGAL SECTION
  10864. RLA2 RJM HNG HANG PP
  10865. RLA3 LDM TABC,T1
  10866. STM RLAE
  10867. RJM RUD READ UDT LABEL DATA
  10868. LDC BUF SET DEFAULT BUFFER ADDRESS
  10869. STM IBUF
  10870. LDC UDTB
  10871. STM DBUF
  10872. LDC 0
  10873. RLAC EQU *-1
  10874. SHN 21-13
  10875. MJP RLA7 IF RECOVERED LABEL BLOCK
  10876. NJN RLA4 IF SKIP READ
  10877. LDC * (READ BEFORE FIRST OPERATION FLAG)
  10878. RLAD EQU *-1
  10879. ZJN RLA5 IF READ BEFORE FIRST OPERATION
  10880. LDN 0
  10881. STM RLAD
  10882. RLA4 UJP RLA9 PROCESS ROUTINE
  10883.  
  10884. RLA5 LDD MD CHECK DIRECTION
  10885. SHN 21-12
  10886. PJN RLA5.1 IF FORWARD READ
  10887. LDC F0113 ISSUE BACKSPACE FUNCTION
  10888. RJM FCN
  10889. STD EC CLEAR ERROR CODE
  10890. LDN LABL SET LABEL LENGTH
  10891. RLAI EQU *-1
  10892. * LDN CLBL CTS LABEL LENGTH
  10893. STD BY
  10894. LDD HP
  10895. SHN 21-7
  10896. PJP /READ/MRD9.1 IF NOT CTS (RETURN AT *RLA6.1)
  10897. RLA5.0 RJM /PRESET/WFE WAIT FOR END OF OPERATION
  10898. MJN RLA5.0 IF COMMAND RETRY
  10899. NJP /READ/RCT13 IF ERROR
  10900. LDN 40
  10901. STD ES CHARACTER FILL STATUS
  10902. UJN RLA6.1 SAVE STATUS FOR ERROR PROCESSING
  10903.  
  10904. RLA5.1 LJM /READ/RDF READ TAPE
  10905.  
  10906. * ENTER HERE AFTER LABEL READ OR BACKSPACE FUNCTION.
  10907.  
  10908. RLA6 CALL CCL CODE CONVERT LABEL
  10909. RLA6.1 AOD BT INCREMENT BLOCKS READ
  10910. LDD EC
  10911. NJN RLA8 IF READ ERROR
  10912. RLA7 RJM WEL WRITE EXTENDED LABELS
  10913. UJN RLA9 PROCESS LABEL
  10914.  
  10915. RLA8 LMN /MTX/BEI
  10916. NJN RLA9 IF NOT TAPE MARK
  10917. LDN 1 SET TAPE MARK INDICATION
  10918. RLAH EQU *-1
  10919. * UJN RLA9 CTS
  10920. STM UBWB
  10921. RJM UBW UPDATE BLOCK ID WINDOW
  10922. RLA9 LDN 0 CLEAR SKIP READ FLAG
  10923. STM RLAC
  10924. RJM * PROCESS LABEL
  10925. RLAE EQU *-1
  10926. NJN RLA10 IF MORE LABELS TO PROCESS
  10927. LJM RET1 EXIT
  10928.  
  10929. RLAX AOD PB ADVANCE SECTION
  10930. STM RLAC SET SKIP READ FLAG
  10931. RLA10 LJM RLA1 LOOP
  10932.  
  10933. RLA11 RJM CHC CHANGE CONTROL POINT AND RELOCATE ADDR.
  10934. UJN RLA10 LOOP
  10935. SPACE 4,10
  10936. ** CURRENT OPERATION TABLE.
  10937. *
  10938. * CORRECT TABLE WILL BE MOVED INTO THIS
  10939. * AREA BY PRESET ROUTINE.
  10940.  
  10941.  
  10942. TABC BSS 14
  10943. TABCL EQU *-TABC
  10944. FAD SPACE 4,10
  10945. ** FAD - SET FET ADDRESS.
  10946. * THIS ROUTINE IS HERE AS ADDRESS MODIFICATION DOES NOT WORK
  10947. * ABOVE 3777B.
  10948. *
  10949. * EXIT (A) = FET ADDRESS.
  10950. *
  10951. * MACROS SADT.
  10952.  
  10953.  
  10954. FAD SUBR ENTRY/EXIT
  10955. SADT .FE,,,A
  10956. LDC *
  10957. UJN FADX RETURN
  10958. CHC SPACE 4,10
  10959. ** CHC - CHANGE CONTROL POINTS AND RELOCATE ADDRESSES.
  10960. *
  10961. * CALLS /CPP/CPP.
  10962. *
  10963. * MACROS CALL.
  10964.  
  10965.  
  10966. CHC SUBR ENTRY/EXIT
  10967. CALL CPP
  10968. LDN ZERL SET ADDRESS RELOCATION
  10969. CRD CN
  10970. LDC TADD
  10971. STD CN
  10972. RJM /CPP/CPP
  10973. AOD PB INCREMENT SECTION
  10974. UJN CHCX RETURN
  10975. CLA SPACE 4,15
  10976. ** CLA - CHECK LABEL FOR VALIDITY.
  10977. * CHECKS FOR SIZE AND ERRORS.
  10978. *
  10979. * EXIT (A) = 0, IF GOOD LABEL.
  10980. * (A) = 1, IF TAPE MARK.
  10981. * (A) = -1, IF ((PB, 11 - 6) = 0) AND BAD LABEL.
  10982. *
  10983. * GIVES LABEL MISSING ON ALL OTHER BAD LABELS.
  10984. *
  10985. * USES BT.
  10986. *
  10987. * CALLS CCM, CLL, *CRE*, LER, *REM*.
  10988. *
  10989. * MACROS CALL.
  10990.  
  10991.  
  10992. CLA8 RJM CLL CHECK LABEL LENGTH
  10993. NJN CLA2 IF INCORRECT LENGTH
  10994.  
  10995. CLA SUBR ENTRY/EXIT
  10996. LDD EC
  10997. ZJN CLA8 IF NO ERROR
  10998. LMN /MTX/BEI
  10999. NJN CLA1 IF NOT TAPE MARK
  11000. LDN 1 INDICATE TAPE MARK
  11001. UJN CLAX RETURN
  11002.  
  11003. CLA1 LMN /MTX/OTF&/MTX/BEI
  11004. ZJN CLA8 IF ON THE FLY ERROR CORRECTION
  11005. LMN /MTX/STE&/MTX/OTF
  11006. CLA2 NJN CLA5 IF NOT STATUS ERROR
  11007. LDD PB
  11008. SHN -6
  11009. LMN /MTX/RLCR/100
  11010. ZJN CLA6 IF REEL RECHECK
  11011. CLA3 LDD SP
  11012. SHN 21-2
  11013. MJN CLA7 IF ERROR PROCESSING INHIBITED
  11014. SOD BT DECREMENT BLOCKS READ
  11015.  
  11016. * ENTER HERE ON LABEL READ RECOVERY TO RELOAD ERROR PROCESSOR.
  11017.  
  11018. CLA4 RJM LER CHECK FOR LABEL ERROR AT LOAD POINT/INIT
  11019. * UJN *+2 (NOT INITIAL LABEL CHECK)
  11020. CLAA EQU *-2
  11021. CLAD CALL REM LOAD READ ERROR PROCESSOR
  11022. * CALL CRE LOAD ERROR PROCESSOR (CTS)
  11023.  
  11024. CLA5 LDD EC
  11025. LMN /MTX/NBE
  11026. ZJN CLA3 IF NOISE BLOCK
  11027. LDD PB
  11028. SHN -6
  11029. ZJN CLA7 IF INITIAL LABEL CHECK
  11030. ERRNZ /MTX/RLCL
  11031. LMN /MTX/RLCR/100
  11032. ZJN CLA7 IF REEL RECHECK
  11033. LDN /MTX/LAM LABEL MISSING
  11034. LJM RET3 RETURN ERROR CODE
  11035.  
  11036. CLA6 LDM MTDS CHECK FOR ON-THE-FLY CORRECTED ERROR
  11037. LPC 7077
  11038. * LPC 7777 (ATS UNIT)
  11039. CLAB EQU *-1
  11040. NJN CLA7 IF FATAL ERROR
  11041. CLAC EQU *-1
  11042. * UJN CLA7 CTS
  11043. LJM CLA8 CHECK LENGTH
  11044.  
  11045. CLA7 LCN 1 INDICATE BAD LABEL
  11046. LJM CLAX RETURN
  11047.  
  11048. ERRNG BUFB-* *CLA* DESTROYED BY READ ERROR PROCESSOR
  11049. CLL SPACE 4,15
  11050. ** CLL - CHECK LABEL LENGTH.
  11051. *
  11052. * THIS ROUTINE VERIFIES THAT THE DATA READ FOR THE LABEL WAS
  11053. * THE CORRECT LENGTH.
  11054. *
  11055. * ENTRY (BY) = BYTES READ.
  11056. * (ES) = FILL STATUS.
  11057. * (HP) = HARDWARE OPTIONS.
  11058. *
  11059. * EXIT (A) = 0 IF CORRECT LENGTH.
  11060.  
  11061.  
  11062. CLL SUBR ENTRY/EXIT
  11063. LDD HP
  11064. SHN 21-7
  11065. MJN CLL1 IF CTS
  11066. LDD BY BYTES READ
  11067. LMN LABL
  11068. NJN CLLX IF WRONG LENGTH
  11069. LDD ES EXPECT NO FILL STATUS
  11070. UJN CLL2 CHECK FILL STATUS
  11071.  
  11072. CLL1 LDD BY BYTES READ
  11073. LMN CLBL
  11074. NJN CLLX IF WRONG LENGTH
  11075. LDD ES
  11076. LMN 40 EXPECT FILL STATUS
  11077. CLL2 LPN 40
  11078. UJN CLLX RETURN
  11079. DBT SPACE 4,10
  11080. ** DBT - DETERMINE BLOCK TYPE.
  11081. *
  11082. * EXIT (A) = 0 IF TAPE MARK OR BLOCK WRONG LENGTH.
  11083.  
  11084.  
  11085. DBT2 LDN 0 SET INCORRECT NUMBER OF BYTES
  11086.  
  11087. DBT SUBR ENTRY/EXIT
  11088. LDD EC
  11089. LMN /MTX/BEI
  11090. ZJN DBTX IF TAPE MARK
  11091. LDD EC
  11092. LMN /MTX/BTL
  11093. ZJN DBTX IF BLOCK TOO LARGE
  11094. LDD BY
  11095. ZJN DBT1 IF POSSIBLE RECOVERABLE ERROR
  11096. RJM CLL CHECK LABEL LENGTH
  11097. NJN DBT2 IF INCORRECT LENGTH
  11098. DBT1 LDN 1 SET TO VALIDATE LABEL
  11099. UJN DBTX RETURN
  11100. ELA SPACE 4,10
  11101. ** ELA - EXTENDED LABELS ADDRESS PROCESSING.
  11102. *
  11103. * ENTRY (T6 - T7) = POSITION TO START AT IN BUFFER.
  11104. *
  11105. * EXIT (A) = ABSOLUTE ADDRESS.
  11106. * (A) = 0, END OF LABEL BUFFER.
  11107. *
  11108. * CALLS FAD.
  11109.  
  11110.  
  11111. ELA2 LDN 0 INDICATE END OF BUFFER
  11112.  
  11113. ELA SUBR ENTRY/EXIT
  11114. RJM FAD GET FET ADDRESS
  11115. ADN 11
  11116. CRD CM
  11117. LDD CM+3
  11118. SHN 14
  11119. STD CM+1
  11120. SHN -14
  11121. STD CM+3
  11122. SHN 14
  11123. LMD CM+4
  11124. SBN 2
  11125. MJN ELA2 IF NO LABEL BUFFER
  11126. LDD CM+2
  11127. SHN 6
  11128. LMD CM+1
  11129. STD CM+2
  11130. SHN -14
  11131. STD CM+1
  11132. LDD T6
  11133. SBD CM+1
  11134. SHN 14
  11135. ADD T7
  11136. SBD CM+2
  11137. ADN 11 ALLOW FOR LABEL
  11138. PJN ELA2 IF END OF LABEL BUFFER
  11139. LDD CM+1 CHECK IF BUFFER WITHIN FL
  11140. ADD CM+3
  11141. SHN 14
  11142. ADD CM+2
  11143. ADD CM+4
  11144. SHN -6
  11145. SBD FL
  11146. MJN ELA1 IF BUFFER WITHIN FL
  11147. LDN /MTX/BAE BUFFER ARGUMENT ERROR
  11148. LJM RET3 RETURN ERROR CODE
  11149.  
  11150. ELA1 LDD CM+3
  11151. ADD T6
  11152. SHN 6
  11153. ADD RA
  11154. SHN 6
  11155. ADD CM+4
  11156. ADD T7
  11157. LJM ELAX RETURN
  11158. EOF SPACE 4,10
  11159. ** LOAD POINT RECOVERY CODE OVERLAYS INTO HERE ON INITIAL LABEL
  11160. * CHECK. THE CHECKING OF END OF FILE LABELS AND VOLUME ONE
  11161. * LABELS WILL NEVER OCCUR AT THE SAME TIME.
  11162.  
  11163. .LERA BSS 0 FWA OF OVERLAY CODE FROM *PRSD*
  11164. EOF SPACE 4,15
  11165. ** EOF - PROCESS *EOF1*.
  11166. * RETURNS 1271/1273 IF EOI ON S/L FORMAT TAPE AND 260/262
  11167. * READ CODE WAS USED. THIS IS FOR SCOPE PRODUCT SET
  11168. * COMPATIBILITY.
  11169. *
  11170. * ALSO COUNTS TAPE MARK AS A BLOCK IF TAPE IS LABELED, BUT
  11171. * LABEL DATA DOES NOT FOLLOW TAPE MARK. AGAIN THIS FOR SAME
  11172. * REASON AS ABOVE.
  11173. *
  11174. * CALLS CBC, CIF, CLA, DBT, SKR, /MFP/SSN, UAD.
  11175.  
  11176.  
  11177. EOF SUBR ENTRY/EXIT
  11178. RJM CIF CHECK INTERNAL TAPE FORMAT
  11179. ZJN EOF2 IF INTERNAL TAPE FORMAT
  11180. RJM DBT DETERMINE BLOCK TYPE
  11181. NJN EOF2 IF NOT TAPE MARK OR BLOCK TOO LARGE
  11182.  
  11183. * ENTRY FROM *EOV*.
  11184.  
  11185. EOF0 LDD PB
  11186. SHN -6
  11187. LMN /MTX/RLCF/100
  11188. NJN EOF1 IF NOT CLOSE
  11189. RJM SKR SKIP BLOCK REVERSE
  11190. LJM RBE RETURN *BEI* ERROR TO NOT SKIP REVERSE
  11191.  
  11192. EOF1 RJM SKR SKIP BLOCK REVERSE
  11193. LJM EOF11 PROCESS TAPE MARK
  11194.  
  11195. EOF2 RJM CLA
  11196. NJN EOF3 IF BAD LABEL
  11197. LDM BUF
  11198. LMC 2REO
  11199. NJN EOF3 IF NOT *EO*
  11200. LDM BUF+1
  11201. LMC 2RF1
  11202. ZJN EOF7 IF *EOF1*
  11203. EOF3 LDD PB CHECK IF MULTI FILE
  11204. SHN -6
  11205. SBN /MTX/RLCM/100
  11206. ZJN EOF4 IF END OF REEL CHECK
  11207. MJN EOF5 IF NOT MULTI FILE
  11208. LDN /MTX/LAM LABEL MISSING
  11209. LJM RET3 RETURN ERROR CODE
  11210.  
  11211. EOF4 LDN 10
  11212. RAD PB
  11213. UJN EOF6 ADVANCE TO NEXT LABEL TYPE
  11214.  
  11215. EOF5 ADN 7-6
  11216. NJN EOF6 IF NOT CLOSE
  11217. LDN 2
  11218. RAD PB
  11219. EOF6 LJM RLAX ADVANCE TO NEXT LABEL TYPE
  11220.  
  11221. EOF7 LDD PB CHECK IF MULTI FILE
  11222. SHN -6
  11223. SBN /MTX/RLCM/100
  11224. MJN EOF9 IF NOT MULTI FILE
  11225. NJN EOF8 IF NOT MF LABEL CHECK
  11226. RJM /MFP/SSN SET SEQUENCE NUMBER
  11227. EOF8 AOD PB ADVANCE SECTION
  11228. LJM EOFX RETURN
  11229.  
  11230. EOF9 ADN 7-6
  11231. ZJN EOF8 IF CLOSE
  11232. RJM CBC CHECK BLOCK COUNT
  11233.  
  11234. * ENTER HERE ON NON - STANDARD LABEL.
  11235.  
  11236. EOF10 LDC 1031 RETURN EOI STATUS
  11237. STD PB
  11238. STM EOFA SET EOI FOR SKIP OPERATION
  11239. UJN EOF12 RETURN EOI
  11240.  
  11241. * HANDLE TAPE MARKS NOT FOLLOWED BY LABELS.
  11242.  
  11243. EOF11 AOD BL+1 COUNT BLOCK
  11244. SHN -14
  11245. RAD BL
  11246. LDN 31 RETURN EOF STATUS
  11247. STD PB
  11248. EOF12 RJM UAD READ CIO CODE
  11249. ADN /MTX/UCIA
  11250. CRD CM
  11251. LDD CM
  11252. SHN -6
  11253. LPN 57
  11254. ZJN EOF14 IF READ OPERATION
  11255. SHN -4
  11256. ZJN EOF13 IF NOT SKIP REVERSE
  11257. LDN 1 DO NOT SET EOF BIT
  11258. STM EOFA
  11259. EOF13 LDM CIOE RETURN CIO CODE
  11260. LPC 774
  11261. ADC 31 SET EOR AND EOF BITS
  11262. * ADC 1031 (EOI ENCOUNTERED)
  11263. * ADC 1 (POSITION BACKWARD)
  11264. EOFA EQU *-1
  11265. STD PB
  11266. EOF14 LDN 74 SET LEVEL 17
  11267. STD PA
  11268. LDD FM
  11269. SHN -6
  11270. LMN /MTX/TFS
  11271. ZJN EOF15 IF S FORMAT
  11272. LMN /MTX/TFL&/MTX/TFS
  11273. NJN EOF16 IF NOT L FORMAT
  11274. EOF15 LDM CIOE
  11275. LPC 774
  11276. LMC 260
  11277. NJN EOF16 IF NOT 260 READ CODE
  11278. LDD PB
  11279. LPC 1000
  11280. LMC 271
  11281. STD PB
  11282. EOF16 LJM RBE RETURN *BEI* ERROR
  11283. EFO SPACE 4,10
  11284. ** EFO - PROCESS EOF2 - EOF9.
  11285. *
  11286. * CALLS CLA.
  11287.  
  11288.  
  11289. EFO SUBR ENTRY/EXIT
  11290. RJM CLA CHECK LABEL
  11291. NJN EFO1 IF BAD LABEL
  11292. LDM BUF
  11293. LMC 2REO
  11294. NJN EFO1 IF NOT *EO*
  11295. LDC 2RF2
  11296. ADD PA
  11297. LMM BUF+1
  11298. NJN EFO1 IF NOT *FN*
  11299. AOD PA INCREMENT TO NEXT LABEL
  11300. LMN 9D
  11301. NJN EFOX IF NOT ALL POSSIBLE LABELS SKIPPED
  11302. EFO1 LDN 0
  11303. STD PA
  11304. LJM RLAX ADVANCE TO NEXT LABEL TYPE
  11305. EOV SPACE 4,10
  11306. ** EOV - PROCESS *EOV1*.
  11307. *
  11308. * CALLS CBC, CIF, CLA, UAD.
  11309.  
  11310.  
  11311. EOV SUBR ENTRY/EXIT
  11312. RJM CLA CHECK LABEL
  11313. NJN EOV1 IF BAD LABEL
  11314. LDM BUF
  11315. LMC 2REO
  11316. NJN EOV1 IF NOT *EO*
  11317. LDM BUF+1
  11318. LMC 2RV1
  11319. ZJN EOV2 IF *EOV1*
  11320. EOV1 RJM CIF CHECK INTERNAL TAPE FORMAT
  11321. NJP EOF0 IF NOT INTERNAL FORMAT
  11322. LDN /MTX/LCE LABEL CONTENT ERROR
  11323. LJM RET3 RETURN ERROR CODE
  11324.  
  11325. EOV2 LDD PB
  11326. SHN -6
  11327. SBN /MTX/RLCF/100
  11328. NJN EOV3 IF NOT CLOSE
  11329. LJM EOV7 INCREMENT TO NEXT SECTION
  11330.  
  11331. EOV3 PJN EOV4 IF MULTI-FILE OPERATION
  11332. RJM CBC CHECK BLOCK COUNT
  11333.  
  11334. * ENTER HERE FOR UNLABELED END OF REEL.
  11335.  
  11336. EOV4 LDM FETO
  11337. SHN 21-11
  11338. PJN EOV5 IF USER NOT PROCESSING END OF REEL
  11339. LDM CIOE SET TO RETURN END OF REEL STATUS
  11340. LPC 774
  11341. LMC 2001
  11342. STD PB
  11343. LDN 0
  11344. STD PA
  11345. LJM RBE RETURN *BEI* ERROR
  11346.  
  11347. EOV5 LDD PB
  11348. SHN -6
  11349. SBN /MTX/RLCM/100
  11350. MJN EOV6 IF NOT *POSMF*
  11351. LDC 4000 SET *EOV1* ENCOUNTERED DURING *POSMF*
  11352. RAD PA
  11353. EOV6 RJM UAD CHECK IF VSNS DECLARED
  11354. ADN /MTX/UUFN
  11355. CRD CM
  11356. LDD FM
  11357. SHN -6
  11358. SBN /MTX/TFI
  11359. ZJN EOV7 IF I FORMAT
  11360. SBN /MTX/TFLI-/MTX/TFI
  11361. ZJN EOV7 IF LI FORMAT
  11362. LDD CM+4
  11363. ZJN EOV8 IF NOT INTERNALLY WRITTEN TAPE
  11364. LDD LT
  11365. SHN -11
  11366. LPN 3
  11367. LMN 2
  11368. NJN EOV8 IF NOT ANSI LABEL
  11369. EOV7 AOD PB INCREMENT TO NEXT SECTION
  11370. LJM EOVX RETURN
  11371.  
  11372. EOV8 LJM EVO2 CLEAR VSN FIELD
  11373. ETC SPACE 4,10
  11374. ** ETC - END OF TAPE CHECK.
  11375. *
  11376. * CALLS CIF.
  11377.  
  11378.  
  11379. ETC3 AOD PB INCREMENT TO NEXT SECTION
  11380.  
  11381. ETC SUBR ENTRY/EXIT
  11382. LDD LT
  11383. SHN 21-11
  11384. MJN ETC2 IF NON-STANDARD LABEL
  11385. LDD SP
  11386. SHN -12
  11387. NJN ETC1 IF NOT READ TO TRAILER LABEL
  11388. ETCA EQU *-1
  11389. * PSN 0 ALWAYS PO = S FOR CTS
  11390. LDD LT
  11391. SHN 21-12
  11392. MJN ETC3 IF LABELED
  11393. RJM CIF CHECK INTERNAL TAPE FORMAT
  11394. ZJN ETC3 IF INTERNAL FORMAT
  11395. ETC1 LDM ETC SET EXIT ADDRESS
  11396. STM EOV
  11397. LJM EOV4 RETURN END OF REEL STATUS
  11398.  
  11399. ETC2 LDD DS CHECK FOR END OF TAPE
  11400. LPN 10
  11401. NJN ETC1 IF END OF TAPE
  11402. LJM EOF10 RETURN EOI
  11403. EVO SPACE 4,10
  11404. ** EVO - PROCESS *EOV2*.
  11405. *
  11406. * IF AN *EOV2* LABEL IS PRESENT, THE NEXT VSN WILL BE RETURNED
  11407. * TO THE UDT.
  11408. *
  11409. * CALLS CLA, UAD, WUD.
  11410.  
  11411.  
  11412. EVO5 AOD PB INCREMENT SECTION
  11413.  
  11414. EVO SUBR ENTRY/EXIT
  11415. RJM CLA CHECK LABEL
  11416. LDM BUF
  11417. LMC 2REO
  11418. NJN EVO2 IF NOT *EO*
  11419. LDM BUF+1
  11420. LMC 2RV2
  11421. NJN EVO2 IF NOT *EOV2*
  11422. LDD PB
  11423. SHN -6
  11424. LMN /MTX/RLCF/100
  11425. ZJN EVO5 IF CLOSE
  11426. UJN EVO3 UPDATE UDT INFORMATION
  11427.  
  11428. * ENTER HERE IF NOT TO RETURN NEXT VSN.
  11429.  
  11430. EVO2 LDD PB
  11431. SHN -6
  11432. LMN /MTX/RLCF/100
  11433. NJN EVO4 IF NOT CLOSE
  11434. LJM RLAX ADVANCE TO NEXT LABEL TYPE
  11435.  
  11436. EVO3 RJM WUD UPDATE UDT INFORMATION
  11437. ZJN EVO4 IF NOT AT MAGNET CP
  11438. SBK /MTX/UUDTL+/MTX/UUFN-/MTX/UVRI
  11439. CRD CM
  11440. ADK /MTX/UISN-/MTX/UVRI
  11441. CRD CN
  11442. LDM BUF+2 SET NEXT INTERNAL VSN
  11443. STD CN
  11444. LDM BUF+3
  11445. STD CN+1
  11446. LDM BUF+4
  11447. STD CN+2
  11448. LDD CM+4 SET VSN FROM *EOV2* LABEL FLAG
  11449. SCN 10
  11450. LMN 10
  11451. STD CM+4
  11452. RJM UAD UPDATE UDT
  11453. ADK /MTX/UVRI
  11454. CWD CM
  11455. ADK /MTX/UISN-/MTX/UVRI
  11456. CWD CN
  11457. EVO4 LJM RET1 EXIT
  11458. HDR SPACE 4,10
  11459. ** HDR - PROCESS *HDR1*.
  11460. *
  11461. * CALLS CLA, CSC, GCD, GCH, /MFP/PHD, THL, VOL, WUD.
  11462.  
  11463.  
  11464. HDR10 LDN /MTX/LAM LABEL MISSING
  11465. LJM RET3 RETURN ERROR CODE
  11466.  
  11467. HDR SUBR ENTRY/EXIT
  11468. RJM CLA CHECK LABEL
  11469. ZJN HDR2 IF GOOD LABEL
  11470. HDR1 LDD PB
  11471. SHN -6
  11472. NJN HDR10 IF NOT INITIAL LABEL CHECK
  11473. ERRNZ /MTX/RLCL
  11474. STD PB SET TO RESTART SEQUENCE
  11475. STM BUF
  11476. RJM VOL
  11477. UJN HDRX RETURN
  11478.  
  11479. HDR2 LDM BUF CHECK FOR *HDR1*
  11480. LMC 2RHD
  11481. NJN HDR1 IF NOT *HD*
  11482. LDM BUF+1
  11483. LMC 2RR1
  11484. NJN HDR1 IF NOT *HDR1*
  11485. LDM UDTB+10 CLEAR LABEL EXPIRED
  11486. SCN 2
  11487. STM UDTB+10
  11488. RJM WUD
  11489. LDD PB CHECK IF MULTI FILE
  11490. SHN -6
  11491. SBN /MTX/RLCM/100
  11492. MJN HDR3 IF NOT MULTI FILE
  11493. RJM /MFP/PHD
  11494. UJN HDR4 CHECK SYSTEM CODE
  11495.  
  11496. HDR3 ADN 7 DETERMINE WHETHER TO TRANSFER HEADER
  11497. NJN HDR4 IF NOT INITIAL LABEL CHECK
  11498. RJM THL TRANSFER HEADER LABEL
  11499. HDR4 RJM CSC CHECK SYSTEM CODE
  11500. ZJN HDR5 IF INTERNALLY WRITTEN TAPE
  11501. LDN 0 CLEAR EST FIELD
  11502. STD T3
  11503. UJN HDR6 CLEAR EST WRITTEN ON FIELD IN UDT
  11504.  
  11505. HDR5 LDC 71D CONVERT EST WRITTEN ON
  11506. STD T6
  11507. RJM GCH
  11508. SBN 1R0
  11509. SHN 3
  11510. STD T3
  11511. RJM GCH
  11512. SBN 1R0
  11513. RAD T3
  11514. RJM GCH GET POSSIBLE THIRD CHARACTER
  11515. SBN 1R0
  11516. STD T6
  11517. LMN 1R -1R0
  11518. ZJN HDR6 IF TWO DIGIT EST ORDINAL
  11519. LDD T3
  11520. SHN 3
  11521. LMD T6
  11522. STD T3
  11523. HDR6 LDD T3 SAVE EST WRITTEN ON
  11524. STM UDTB+5*5+1
  11525. LDN JDAL READ TODAYS DATE
  11526. CRD CN
  11527. LDN 49D SET POSITION IN SOURCE BUFFER
  11528. STD T6
  11529. LDN CN SET DESTINATION BUFFER ADDRESS
  11530. STM DBUF
  11531. LDN 6
  11532. STD T7
  11533. LDN 5
  11534. STD T2
  11535. LDN 1R7 SET CENTURY CROSSOVER
  11536. STD T0
  11537. HDR7 RJM GCH GET EXPIRATION DATE CHARACTER
  11538. SBD T0 CHECK CENTURY
  11539. PJN HDR7.1 IF NOT 21ST CENTURY
  11540. ADN 10D ADJUST DECADE FOR 21ST CENTURY
  11541. HDR7.1 STD T4
  11542. RJM GCD GET TODAYS DATE CHARACTER
  11543. SBD T0 CHECK CENTURY
  11544. PJN HDR7.2 IF NOT 21ST CENTURY
  11545. ADN 10D ADJUST DECADE FOR 21ST CENTURY
  11546. HDR7.2 SBD T4
  11547. NJN HDR8 IF NO MORE COMPARES REQUIRED
  11548. STD T0 CLEAR CENTURY CROSSOVER
  11549. SOD T2
  11550. NJN HDR7 IF MORE CHARACTERS TO COMPARE
  11551. HDR8 MJN HDR9 IF NOT EXPIRED
  11552. LDN 2 SET LABEL EXPIRED
  11553. RAM UDTB+10
  11554. HDR9 RJM WUD WRITE UDT INFORMATION
  11555. LDN 0 INCREMENT TO NEXT SECTION
  11556. STD PA
  11557. AOD PB
  11558. LJM HDRX RETURN
  11559. OHD SPACE 4,10
  11560. ** OHD - PROCESS *HDR2 - HDR9* OPTIONAL VOLUME LABELS.
  11561. *
  11562. * CALLS CLA.
  11563.  
  11564.  
  11565. OHD SUBR ENTRY/EXIT
  11566. RJM CLA CHECK LABEL
  11567. NJN OHD1 IF BAD LABEL
  11568. LDM BUF
  11569. LMC 2RHD
  11570. NJN OHD1 IF NOT *HD*
  11571. LDC 2RR2
  11572. SBM BUF+1
  11573. ADD PA
  11574. NJN OHD1 IF NOT *RN*
  11575. AOD PA INCREMENT TO NEXT USER VOLUME NUMBER
  11576. LMN 9D
  11577. NJN OHDX IF NOT ALL POSSIBLE USER LABELS SKIPPED
  11578. OHD1 LDN 0
  11579. STD PA
  11580. LJM RLAX ADVANCE TO NEXT LABEL TYPE
  11581. PTM SPACE 4,10
  11582. ** PTM - PROCESS TAPE MARK.
  11583. *
  11584. * CALLS CLA.
  11585.  
  11586.  
  11587. PTM3 LDD PA INCREMENT BACKSPACE COUNT
  11588. ADC 100
  11589. STD PA
  11590. ADC -MXBS*100
  11591. PJN PTM2 IF MAXIMUM NUMBER OF BACKSPACES ATTEMPTED
  11592.  
  11593. PTM SUBR ENTRY/EXIT
  11594. LDD PA
  11595. ZJN PTMX IF ONLY BACK UP 1 BLOCK
  11596. LDD DS CHECK LOAD POINT STATUS
  11597. SHN 21-2
  11598. MJN PTM2 IF POSITIONED AT LOAD POINT
  11599. RJM CLA CHECK LABEL
  11600. SBN 1
  11601. NJN PTM1 IF NOT A TAPE MARK
  11602. LDD PA
  11603. LPN 77
  11604. SBN 1 DECREMENT TAPE MARK COUNT
  11605. ZJN PTMX IF ALL TAPE MARKS READ
  11606. STM PTMA
  11607. LDD PA UPDATE TAPE MARK COUNT
  11608. LPC 7700
  11609. ADM PTMA
  11610. STD PA
  11611. PTM1 LDD MD
  11612. SHN 21-12
  11613. MJP PTM3 IF BACKSPACING
  11614. LDD PA
  11615. UJN PTMX RETURN
  11616.  
  11617. PTM2 LDN /MTX/LAM LABEL MISSING
  11618. LJM RET3 RETURN ERROR CODE
  11619.  
  11620. PTMA CON 0 TEMPORARY STORAGE
  11621. RBE SPACE 4,10
  11622. ** RBE - RETURN *BEI* ERROR TO MAGNET.
  11623. *
  11624. * EXIT TO *RET3* WITH *BEI* ERROR.
  11625.  
  11626.  
  11627. RBE BSS 0 ENTRY
  11628. LDN /MTX/BEI SET *BEI* ERROR
  11629. LJM RET3 RETURN ERROR TO MAGNET
  11630. SBL SPACE 4,10
  11631. ** SBL - SKIP BLOCK.
  11632.  
  11633.  
  11634. SBL SUBR ENTRY/EXIT
  11635. LDD EC
  11636. LMN /MTX/BEI
  11637. ZJN SBL1 IF TAPE MARK
  11638. AOD PA INCREMENT BLOCK COUNT
  11639. LMN 77 SKIP UP TO 64 BLOCKS
  11640. NJN SBLX IF NOT MAXIMUM BLOCKS SKIPPED
  11641. SBL1 STD PA
  11642. LJM RLAX ADVANCE TO NEXT LABEL TYPE
  11643. SDE SPACE 4,10
  11644. ** SDE - SET ACTUAL DENSITY FOR 9 TRACK.
  11645. *
  11646. * EXIT DENSITY SET FROM UNIT STATUS.
  11647. *
  11648. * CALLS DTS.
  11649.  
  11650.  
  11651. SDE SUBR ENTRY/EXIT
  11652. LDD HP
  11653. SHN 21-7
  11654. MJN SDEX IF CTS
  11655. SHN 21-0-21+7
  11656. PJN SDEX IF 7 TRACK
  11657. LDM DNCV CLEAR DENSITY
  11658. SCN 70
  11659. STM DNCV
  11660. RJM DTS GET DETAILED STATUS
  11661. LDM MTDS+4
  11662. SDEA EQU *-1
  11663. * LDM ATUS (ATS UNIT)
  11664. SDEB SHN -6
  11665. * SHN -3 (ATS UNIT)
  11666. LPN 3
  11667. STD T1
  11668. LDM SDED,T1 GET EQUIVALENT DENSITY
  11669. SDEC SHN 0
  11670. * SHN 3 (ATS UNIT)
  11671. LPN 70
  11672. RAM DNCV SET DENSITY
  11673. UJN SDEX RETURN
  11674.  
  11675.  
  11676. ** DENSITY TABLE.
  11677. * TABLE IS INDEXED BY VALUES IN DETAILED STATUS.
  11678. *
  11679. * 6/0,3/ MTS DENSITY, 3/ ATS DENSITY
  11680.  
  11681.  
  11682. SDED VFD 6/0,3//MTX/D05,3//MTX/D16
  11683. VFD 6/0,3//MTX/D08,3//MTX/D16
  11684. VFD 6/0,3//MTX/D16,3//MTX/D08
  11685. VFD 6/0,3//MTX/D16,3//MTX/D62
  11686. SKR SPACE 4,10
  11687. ** SKR - SKIP BLOCK REVERSE.
  11688. *
  11689. * EXIT (WP) DECREMENTED IF TAPE MARK OR BLOCK WITHOUT
  11690. * ERROR WAS READ.
  11691.  
  11692.  
  11693. SKR SUBR ENTRY/EXIT
  11694. LDD EC
  11695. ZJN SKR1 IF NO ERROR
  11696. SKRA EQU *-1
  11697. * UJN SKR2 CTS
  11698. LMN /MTX/BEI
  11699. NJN SKR2 IF NOT TAPE MARK
  11700. SKR1 LDN 4 SET UNUSABLE BID
  11701. STM BIDW,WP
  11702. SOD WP BACK UP BID WINDOW
  11703. PJN SKR2 IF NO UNDERFLOW
  11704. LDN 7 RESET POINTER
  11705. STD WP
  11706. SKR2 RJM BKS BACKSPACE TAPE
  11707. UJN SKRX RETURN
  11708.  
  11709. BKS SPACE 4,10
  11710. ** BKS - BACKSPACE TAPE.
  11711. * WAIT BACKSPACE FUNCTION COMPLETE.
  11712. * TIMES OUT AFTER APPROXIMATECY 25 FEET OF TAPE.
  11713. *
  11714. * EXIT (DS) = GENERAL STATUS.
  11715. *
  11716. * CALLS FCN, STW, WNB.
  11717.  
  11718.  
  11719. BKS2 CON 0 ENTERED VIA *RJM FROM //STW
  11720. SOD T2
  11721. NJN BKS1 IF NOT TIMEOUT
  11722. LDC ERR RESET ERROR EXIT
  11723. STM STWC
  11724. UJN BKS1 ATTEMPT 1 MORE TIME
  11725.  
  11726. BKS SUBR ENTRY/EXIT
  11727. LDD HP
  11728. SHN 21-7
  11729. MJN BKS1.2 IF CTS
  11730. LDN 2 WAIT NOT BUSY
  11731. RJM STW
  11732. LDC F0113 BACKSPACE
  11733. RJM FCN
  11734. LDN 27
  11735. STD T2
  11736. LDC BKS2 SET RETURNED TIMEOUT FROM //STW
  11737. STM STWC
  11738. BKS1 LDN 2 WAIT NOT BUSY
  11739. RJM STW
  11740. LDC ERR RESET ERROR EXIT
  11741. STM STWC
  11742. BKS1.1 UJN BKSX RETURN
  11743.  
  11744. BKS1.2 RJM WNB WAIT NOT BUSY
  11745. LDC F0113 BACKSPACE BLOCK
  11746. RJM FCN ISSUE FUNCTION
  11747. RJM WNB WAIT NOT BUSY
  11748. UJN BKS1.1 RETURN
  11749. STM SPACE 4,10
  11750. ** STM - SKIP TAPE MARK.
  11751. *
  11752. * CALLS CLA, SKR.
  11753.  
  11754.  
  11755. STM3 AOD PB ADVANCE SECTION
  11756.  
  11757. STM SUBR ENTRY/EXIT
  11758. LDD PB
  11759. SHN -6
  11760. LMN /MTX/RLCF/100
  11761. ZJN STM2 IF CLOSE
  11762. RJM CLA CHECK LABELS
  11763. SBN 1
  11764. ZJN STM3 IF TAPE MARK
  11765. LDN /MTX/LAM LABEL MISSING
  11766. STM1 LJM RET3 RETURN ERROR CODE
  11767.  
  11768. STM2 LDD EC
  11769. LMN /MTX/BEI
  11770. ZJN STM3 IF TAPE MARK
  11771. RJM SKR SKIP BLOCK REVERSE
  11772. LDN /MTX/BEI SET NOT TO SKIP TAPE MARKS REVERSE
  11773. UJN STM1 RETURN ERROR CODE
  11774. THL SPACE 4,10
  11775. ** THL - TRANSFER HEADER LABEL.
  11776. *
  11777. * CALLS CCH, DCV, GCH.
  11778.  
  11779.  
  11780. THL SUBR ENTRY/EXIT
  11781. LDN 5 FILE IDENTIIFER
  11782. STD T6
  11783. LDN 21D
  11784. STD T7
  11785. LDN 17D
  11786. RJM CCH
  11787. LDN 41D SET IDENTIFIER
  11788. STD T7
  11789. LDN 6
  11790. RJM CCH
  11791. LDN 38D FILE SECTION NUMBER
  11792. STD T7
  11793. LDC 30004
  11794. RJM DCV
  11795. LDN 48D FILE SEQUENCE NUMBER
  11796. STD T7
  11797. LDC 30004
  11798. RJM DCV
  11799. LDN 58D GENERATION NUMBER
  11800. STD T7
  11801. LDC 30004
  11802. RJM DCV
  11803. LDN 56D GENERATION VERSION NUMBER
  11804. STD T7
  11805. LDC 20002
  11806. RJM DCV
  11807. RJM GCH SKIP CHARACTER
  11808. LDN 61D CREATION DATE
  11809. STD T7
  11810. LDN 5
  11811. RJM CCH
  11812. RJM GCH SKIP CHARACTER
  11813. LDN 5 EXPIRATION DATE
  11814. RJM CCH
  11815. LDN 47D ACCESSIBILITY
  11816. STD T7
  11817. LDN 1
  11818. RJM CCH
  11819. LJM THLX RETURN
  11820. TMS SPACE 4,10
  11821. ** TMS - TAPE MARK SENSE.
  11822. *
  11823. * USES PB, T7.
  11824. *
  11825. * CALLS CLA, SCH, VOL, WUD.
  11826.  
  11827.  
  11828. TMS SUBR ENTRY/EXIT
  11829. RJM CLA
  11830. SBN 1
  11831. MJN TMS2 IF NOT TAPE MARK
  11832. LDD PB
  11833. SHN -6
  11834. NJN TMS1 IF NOT INITIAL LABEL CHECK
  11835. ERRNZ /MTX/RLCL
  11836. LDN 17D CLEAR LABEL CHECK IN PROGRESS
  11837. STD T7
  11838. LDN 0
  11839. RJM SCH
  11840. RJM WUD REWRITE UDT
  11841. TMS1 LJM RET1 EXIT
  11842.  
  11843. TMS2 LDD PB
  11844. SHN -6
  11845. ZJN TMS4 IF INITIAL LABEL CHECK SEQUENCE
  11846. ERRNZ /MTX/RLCL
  11847. TMS3 LDN /MTX/LCE LABEL CONTENT ERROR
  11848. LJM RET3 RETURN ERROR CODE
  11849.  
  11850. TMS4 LDN 0 SET TO RESTART SEQUENCE
  11851. STD PB
  11852. STM BUF
  11853. RJM VOL
  11854. UJN TMS3 RETURN LABEL CONTENT ERROR
  11855. UHL SPACE 4,10
  11856. ** UHL - PROCESS *UHLA* USER FILE HEADER LABELS.
  11857. *
  11858. * CALLS CLA.
  11859.  
  11860.  
  11861. UHL SUBR ENTRY/EXIT
  11862. RJM CLA CHECK LABEL
  11863. NJN UHL1 IF BAD LABEL
  11864. LDM BUF
  11865. LMC 2RUH
  11866. NJN UHL1 IF NOT *UH*
  11867. LDM BUF+1
  11868. SHN -6
  11869. LMN 1RL
  11870. NJN UHL1 IF NOT *UHLN*
  11871. AOD PA INCREMENT TO NEXT USER VOLUME NUMBER
  11872. LMC 64D+1
  11873. NJN UHLX IF NOT ALL POSSIBLE USER LABELS SKIPPED
  11874. LDN /MTX/LCE LABEL CONTENT ERROR
  11875. LJM RET3 RETURN ERROR CODE
  11876.  
  11877. UHL1 LDC 0
  11878. * LDC 4000 (*VOL1* READ AND VALIDATE HEADER LABEL)
  11879. UHLA EQU *-1
  11880. STD PA
  11881. LJM RLAX ADVANCE TO NEXT LABEL TYPE
  11882. UTL SPACE 4,10
  11883. ** UTL - PROCESS USER TRAILER LABELS.
  11884. *
  11885. * CALLS CLA.
  11886.  
  11887.  
  11888. UTL SUBR ENTRY/EXIT
  11889. RJM CLA CHECK LABEL
  11890. NJN UTL1 IF BAD LABEL
  11891. LDM BUF
  11892. LMC 2RUT
  11893. NJN UTL1 IF NOT *UT*
  11894. LDM BUF+1
  11895. SHN -6
  11896. LMN 1RL
  11897. NJN UTL1 IF NOT *UTLN*
  11898. AOD PA
  11899. LMC 64D+1
  11900. NJN UTLX IF NOT ALL TRAILER LABELS SKIPPED
  11901. LDN /MTX/LCE LABEL CONTENT ERROR
  11902. LJM RET3 RETURN ERROR CODE
  11903.  
  11904. UTL1 LDD PB
  11905. SHN -6
  11906. LMN /MTX/RLCF/100
  11907. NJN UTL2 IF NOT CLOSE
  11908. LJM RET1 EXIT
  11909.  
  11910. UTL2 LDN 0
  11911. STD PA
  11912. LJM RLAX ADVANCE TO NEXT LABEL TYPE
  11913. UVL SPACE 4,10
  11914. ** UVL - PROCESS *UVLN* USER VOLUME LABELS.
  11915. *
  11916. * CALLS CLA, VOL.
  11917.  
  11918.  
  11919. UVL SUBR ENTRY/EXIT
  11920. RJM CLA CHECK LABEL
  11921. NJN UVL1 IF BAD LABEL
  11922. LDM BUF
  11923. LMC 2RUV
  11924. NJN UVL3 IF NOT *UV*
  11925. LDM BUF+1
  11926. ADC -2RL1
  11927. SBD PA
  11928. NJN UVL3 IF NOT *LN*
  11929. AOD PA INCREMENT TO NEXT USER VOLUME NUMBER
  11930. LMN 9D+1
  11931. NJN UVLX IF NOT ALL POSSIBLE USER LABELS SKIPPED
  11932. UVL1 LDD PB
  11933. SHN -6
  11934. NJN UVL2 IF NOT INITIAL LABEL CHECK SEQUENCE
  11935. ERRNZ /MTX/RLCL
  11936. STD PB RESTART LABEL CHECK SEQUENCE
  11937. STM BUF
  11938. RJM VOL
  11939. UVL2 LMN 5
  11940. ZJN UVL4 IF REEL CHECK
  11941. LDN /MTX/LCE LABEL CONTENT ERROR
  11942. LJM RET3 RETURN ERROR CODE
  11943.  
  11944. UVL3 LDD PB CHECK IF HEADER VALIDATION
  11945. SHN -6
  11946. LMN /MTX/RLVH/100
  11947. NJN UVL4 IF NOT HEADER VALIDATION
  11948. LDC 4000 SET *VOL1* LABEL READ
  11949. STM UHLA
  11950. LDN 4 ADVANCE TO HDR1 CHECK
  11951. RAD PB
  11952. UVL4 LJM RLAX ADVANCE TO NEXT LABEL TYPE
  11953. VOL SPACE 4,10
  11954. ** VOL - PROCESS *VOL1* LABEL.
  11955. *
  11956. * CALLS CCH, CLA, C2D, DBT, FCH, SCH, SDE, UAD, UDA, WUD.
  11957.  
  11958.  
  11959. VOL SUBR ENTRY/EXIT
  11960. LDC BUF SET UP BUFFER ADDRESSES
  11961. STM IBUF
  11962. LDC UDTB
  11963. STM DBUF
  11964. LDD PB
  11965. SHN -6
  11966. ZJN VOL1 IF INITIAL LABEL CHECK
  11967. ERRNZ /MTX/RLCL
  11968. LMN /MTX/RLVH/100
  11969. NJN VOL3 IF NOT HEADER VALIDATION
  11970. RJM DBT DETERMINE BLOCK TYPE
  11971. NJN VOL3 IF GOOD BLOCK
  11972. LJM VOL6 PROCESS TAPE MARK OR BAD BLOCK
  11973.  
  11974. VOL1 RJM CLA CHECK LABEL
  11975. ZJN VOL4 IF GOOD LABEL
  11976. LDD EC
  11977. LMN /MTX/BTA
  11978. ZJN VOL2 IF BLANK TAPE
  11979. LMN /MTX/BTL&/MTX/BTA
  11980. NJN VOL6 IF NOT *BLOCK TOO LARGE* ERROR
  11981. LDD HP
  11982. SHN 21-7
  11983. MJN VOL2 IF CTS
  11984. SHN 21-0-21+7
  11985. PJN VOL6 IF 7 TRACK
  11986. VOL2 LJM VOL12 PRESET *UDT* FOR UNLABELED TAPE
  11987.  
  11988. VOL3 RJM CLA CHECK LABEL
  11989. NJN VOL6 IF BAD LABEL
  11990. VOL4 LDM BUF CHECK FOR *VOL1*
  11991. LMC 2RVO
  11992. NJN VOL6 IF NOT *VO*
  11993. LDM BUF+1
  11994. LMC 2RL1
  11995. NJN VOL6 IF NOT *L1*
  11996. LDD PB
  11997. SHN -6
  11998. ZJN VOL5 IF INITIAL LABEL CHECK
  11999. ERRNZ /MTX/RLCL
  12000. LJM VOL22 INCREMENT TO NEXT SECTION
  12001.  
  12002. VOL5 LJM VOL15 SET GOOD *VOL1* LABEL
  12003.  
  12004. VOL6 LDD PB
  12005. SHN -6
  12006. ZJN VOL9 IF INITIAL LABEL SEQUENCE
  12007. ERRNZ /MTX/RLCL
  12008. LMN /MTX/RLVH/100
  12009. NJN VOL7 IF NOT HEADER VALIDATION
  12010. AOD PB ADVANCE SECTION
  12011. LJM RLAX ADVANCE TO NEXT LABEL TYPE
  12012.  
  12013. VOL7 LMN 4&10
  12014. NJN VOL8 IF NOT OPEN
  12015. LDM CIOE
  12016. LPC 1774
  12017. LMC 110
  12018. NJN VOL8 IF NOT *POSMF*
  12019. LDN 1 ADVANCE TO *HDR1* CHECK
  12020. RAD PB
  12021. LJM RLAX ADVANCE TO NEXT LABEL TYPE
  12022.  
  12023. VOL8 LDN /MTX/LAM LABEL MISSING
  12024. LJM RET3 RETURN ERROR CODE
  12025.  
  12026. VOL9 LDD HP
  12027. SHN 21-7
  12028. MJN VOL10 IF CTS
  12029. SHN 21-0-21+7
  12030. MJN VOL10 IF 9 TRACK
  12031. LCN 10 TRY NEXT LOWER DENSITY
  12032. RAM DNCV
  12033. LPN 70
  12034. NJN VOL11 IF MORE DENSITIES TO TRY
  12035. UJN VOL12 PRESET UDT FOR UNLABELED TAPE
  12036.  
  12037. VOL10 LDM DNCV
  12038. LPN 7
  12039. SBN /MTX/MCCO-1
  12040. PJN VOL12 IF ALL CONVERSION MODES TRIED
  12041. LDN 0 TRY ANOTHER CONVERSION MODE
  12042. STD PA
  12043. AOM DNCV INCREMENT TO NEXT CONVERSION MODE
  12044. VOL11 LJM RET1 EXIT
  12045.  
  12046. VOL12 LDD PB
  12047. SHN -6
  12048. LMK /MTX/RLCL
  12049. ZJN VOL13 IF INITIAL LABEL SEQUENCE
  12050. LJM VOL6 ADVANCE SECTION COUNT
  12051.  
  12052. * SET UDT LABEL PARAMETERS FOR UNLABELED TAPE.
  12053.  
  12054. VOL13 LDD LT
  12055. LPC 777 CLEAR LABELED FLAGS
  12056. STD LT
  12057. RJM UAD
  12058. ADK /MTX/UST4
  12059. CWD LT
  12060. LDM DNCV CLEAR CONVERSION MODE
  12061. SCN 7
  12062. STM DNCV UPDATE CONVERSION MODE
  12063. RJM SDE SET DENSITY FOR 9 TRACK
  12064. LDD EO SET EST ORDINAL IN DEFAULT VSN
  12065. SHN -6
  12066. RAM TDLP+6
  12067. LDD EO
  12068. RJM C2D
  12069. STM TDLP+7
  12070. LDD HP
  12071. LPN 20
  12072. ZJN VOL14 IF NOT ATS UNIT
  12073. LDM MTDS
  12074. LPC 177
  12075. LMN 7
  12076. NJN VOL14 IF UNIT CAPABLE OF TAPE DENSITY
  12077. LDC 400 SET DENSITY MISMATCH
  12078. RAM TDLP+1*5+3
  12079. LDN 2
  12080. STD T6
  12081. LDD MA
  12082. CWM VOLB,T6 *WRONG DENSITY*
  12083. SBN 2
  12084. CRM TDLP+2*5,T6
  12085. VOL14 LDN JDAL READ JULIAN DATE
  12086. CRM BUF,ON
  12087. LDC OVLM RESET DESTINATION BUFFER
  12088. STM DBUF
  12089. LDN 6 SET UP CREATION DATE
  12090. STD T6
  12091. LDN 1 SET EXPIRATION DATE
  12092. STD T7
  12093. LDN 5
  12094. RJM CCH
  12095. LDN 6
  12096. STD T6
  12097. LDN 5
  12098. RJM CCH
  12099. RJM UDA
  12100. CWM TDLP,T1
  12101. LJM VOL11 UPDATE CONVERSION MODE AND LABELED FLAGS
  12102.  
  12103. * PROCESS GOOD *VOL1* LABEL.
  12104.  
  12105. VOL15 RJM SDE SET DENSITY FOR 9 TRACK
  12106. LDN 5 MOVE VSN TO UDT
  12107. STD T6
  12108. LDN 11D
  12109. STD T7
  12110. LDN 6
  12111. RJM CCH
  12112. LDN 40 SET LABEL CHECK IN PROGRESS FLAG
  12113. RJM SCH STORE CHARACTER
  12114. LDN 3 FILL THREE CHARACTERS WITH ZERO
  12115. RJM FCH
  12116. LDN 11D COPY VOLUME ACCESSIBILITY TO *UGNU*
  12117. STD T6
  12118. LDN 55D
  12119. STD T7
  12120. LDN 1
  12121. RJM CCH
  12122. RJM WUD WRITE UDT LABEL AREA
  12123.  
  12124. * SET TO PROCESS NEXT LABEL OPERATION.
  12125.  
  12126. VOL22 LDN 0
  12127. STD PA
  12128. AOD PB INCREMENT TO NEXT LABEL OPERATION
  12129. LJM VOLX RETURN
  12130.  
  12131.  
  12132. VOLB VFD 60/10LWRONG DENS
  12133. VFD 42/7LITY ,18/1
  12134. WEL SPACE 4,10
  12135. ** WEL - WRITE EXTENDED LABELS TO USER BUFFER.
  12136. *
  12137. * CALLS ELA.
  12138.  
  12139.  
  12140. WEL2 LDN ZERL SET UP CONTROL WORD
  12141. CRM BUFC,ON
  12142. LDC 80D
  12143. STM BUFC+4
  12144. LDN ZERL SET TERMINATOR WORD
  12145. CRM BUF+40D,ON
  12146. LDN 12 RETURN LABEL TO USER BUFFER
  12147. STD T5
  12148. RJM ELA
  12149. CWM BUFC,T5
  12150.  
  12151. WEL SUBR ENTRY/EXIT
  12152. WELA UJN WELX RETURN
  12153. * PSN (EXTENDED LABELS)
  12154. LDD BY
  12155. ZJN WELX IF EOF READING LABEL
  12156. LDN 0
  12157. STD T6
  12158. STD T7
  12159. WEL1 RJM ELA GET LABEL BUFFER ADDRESS
  12160. ZJN WELX IF END OF BUFFER
  12161. CRD CM
  12162. LDD CM+4
  12163. ZJN WEL2 IF END OF LABELS IN BUFFER
  12164. LDN 11 UPDATE POSITION IN BUFFER
  12165. RAD T7
  12166. SHN -14
  12167. RAD T6
  12168. UJN WEL1 LOOP
  12169. WNB SPACE 4,10
  12170. ** WNB - WAIT NOT BUSY.
  12171. *
  12172. * CALLS /PRESET/GPS.
  12173.  
  12174.  
  12175. WNB SUBR ENTRY/EXIT
  12176. WNB1 LDN 2 WAIT NOT BUSY
  12177. RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS
  12178. MJN WNB1 IF COMMAND RETRY
  12179. UJN WNBX RETURN
  12180. ZRO SPACE 4,10
  12181. ** ZRO - ZERO FIRST WORD OF XL BUFFER.
  12182. *
  12183. * CALLS ELA.
  12184.  
  12185.  
  12186. ZRO SUBR ENTRY
  12187. LDN 0
  12188. STD T6
  12189. STD T7
  12190. LDN ZERL
  12191. CRD CN
  12192. RJM ELA GET XL BUFFER ADDRESS
  12193. ZJN ZRO1 IF END OF BUFFER
  12194. CWD CN PRESET BUFFER
  12195. ZRO1 LJM RLAX ADVANCE TO NEXT LABEL TYPE
  12196. TITLE CHARACTER PROCESSING SUBROUTINES.
  12197. SPACE 4,10
  12198. ** DIRECT CELL USAGE IN FOLLOWING ROUTINES.
  12199. *
  12200. * ENTRY (T5) = NUMBER OF CHARACTERS.
  12201. * (T6) = CHARACTER POSITION IN INPUT BUFFER.
  12202. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  12203. *
  12204. * ALL CHARACTER POSITIONS ARE REFERENCED STARTING WITH *1*.
  12205. * THUS, THE CHARACTER POSITION VALUES BEING USED TO ACCESS
  12206. * *BUF* MAY BE REFERENCED DIRECTLY TO THE LABEL STANDARD.
  12207.  
  12208. IBUF CON 0 FWA OF FETCH BUFFER
  12209. DBUF CON 0 FWA OF DESTINATION BUFFER
  12210. CAN SPACE 4,15
  12211. ** CAN - COMPARE ALPHANUMERIC FIELDS.
  12212. * COMPARE WILL BE GOOD IF ALL OF INPUT CHARACTER STRING IS
  12213. * BINARY ZERO.
  12214. *
  12215. * ENTRY (A) = NUMBER OF CHARACTERS TO COMPARE.
  12216. * (T6) = CHARACTER POSITION IN INPUT BUFFER.
  12217. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  12218. *
  12219. * EXIT (A) = 0, GOOD COMPARE.
  12220. * (A) .NE. 0, (A) = CHARACTER POSITION AT START.
  12221. * (T6), (T7) = UPDATED.
  12222. *
  12223. * USES T3, T4.
  12224. *
  12225. * CALLS GCD, GCH.
  12226.  
  12227.  
  12228. CAN4 SOD T5 UPDATE TO SKIP REMAINDER OF FIELD
  12229. RAD T6
  12230. LDD T5
  12231. RAD T7
  12232. LDD T3
  12233.  
  12234. CAN SUBR ENTRY/EXIT
  12235. STD T5
  12236. STD T4
  12237. LDD T6 SAVE STARTING POSITION
  12238. STD T3
  12239. CAN1 RJM GCH GET CHARACTER
  12240. NJN CAN2 IF SPECIFIED
  12241. SOD T4
  12242. NJN CAN1 IF MORE CHARACTERS TO CHECK
  12243. LDD T5
  12244. RAD T7
  12245. LDN 0 GOOD COMPARE
  12246. UJN CANX RETURN
  12247.  
  12248. CAN2 LDD T3 RESET CHARACTER POSITION
  12249. STD T6
  12250. CAN3 RJM GCH GET CHARACTER
  12251. STD T4
  12252. RJM GCD GET CHARACTER FROM DESTINATION BUFFER
  12253. LMD T4
  12254. NJN CAN4 IF NO COMPARE
  12255. SOD T5
  12256. NJN CAN3 IF MORE CHARACTERS TO COMPARE
  12257. UJN CANX RETURN
  12258. CBC SPACE 4,10
  12259. ** CBC - CHECK BLOCK COUNT.
  12260. *
  12261. * CALLS DCV.
  12262.  
  12263.  
  12264. CBC SUBR ENTRY/EXIT
  12265. LDD SP
  12266. SHN 21-1
  12267. MJN CBCX IF IGNORE ERRORS
  12268. LDN CN SET DESTINATION BUFFER
  12269. STM DBUF
  12270. LDN 0
  12271. STD CN
  12272. LDN 55D
  12273. STD T6
  12274. LDN 2
  12275. STD T7
  12276. LDC 30006
  12277. RJM DCV
  12278. LDC UDTB RESET DESTINATION BUFFER
  12279. STM DBUF
  12280. LDD CN
  12281. LMD BL
  12282. NJN CBC1 IF ERROR IN BLOCK NUMBER
  12283. LDD CN+1
  12284. LMD BL+1
  12285. ZJN CBCX IF GOOD BLOCK COUNT
  12286. CBC1 LDN /MTX/LBE LABEL BLOCK COUNT ERROR
  12287. LJM RET3 RETURN ERROR CODE
  12288. CCH SPACE 4,15
  12289. ** CCH - COPY INPUT BUFFER TO DESTINATION BUFFER.
  12290. *
  12291. * ENTRY (A) = NUMBER OF CHARACTERS TO MOVE.
  12292. * (T6) = CHARACTER POSITION IN INPUT BUFFER.
  12293. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  12294. *
  12295. * EXIT (T6), (T7) = INCREMENTED.
  12296. *
  12297. * USES T5.
  12298. *
  12299. * CALLS GCH, SCH.
  12300.  
  12301.  
  12302. CCH SUBR ENTRY/EXIT
  12303. STD T5
  12304. CCH1 RJM GCH GET LABEL CHARACTER
  12305. RJM SCH STORE CHARACTER IN USER BUFFER
  12306. SOD T5
  12307. NJN CCH1 IF MORE CHARACTERS TO MOVE
  12308. UJN CCHX RETURN
  12309. CIF SPACE 4,10
  12310. ** CIF - CHECK INTERNAL TAPE FORMAT.
  12311. *
  12312. * EXIT (A) = 0 IF I, SI, OR LI TAPE FORMAT.
  12313.  
  12314.  
  12315. CIF SUBR ENTRY/EXIT
  12316. LDD FM
  12317. SHN -6
  12318. LMN /MTX/TFI
  12319. ZJN CIFX IF I FORMAT
  12320. LMN /MTX/TFSI&/MTX/TFI
  12321. ZJN CIFX IF SI FORMAT
  12322. LMN /MTX/TFLI&/MTX/TFSI
  12323. UJN CIFX RETURN WITH STATUS
  12324. CSC SPACE 4,10
  12325. ** CSC - CHECK SYSTEM CODE.
  12326. *
  12327. * EXIT (A) = 0, IF INTERNALLY WRITTEN TAPE (SYSTEM CODE
  12328. * IN HDR1 LABEL = KRONOS 2.1 OR NOS).
  12329. *
  12330. * CALLS CAN, GCH.
  12331.  
  12332.  
  12333. CSC1 LDN 1
  12334.  
  12335. CSC SUBR ENTRY/EXIT
  12336. LDN 61D
  12337. STD T6
  12338. LDC CSCA CHECK IF KRONOS 2.1
  12339. STM DBUF
  12340. LDN 1
  12341. STD T7
  12342. RJM GCH
  12343. ZJN CSC1 IF FIELD NOT SPECIFIED
  12344. SOD T6
  12345. LDN 10D COMPARE FIELDS
  12346. RJM CAN
  12347. ZJN CSCX IF COMPARE
  12348. LDN 61D CHECK FOR NOS SYSTEM CODE
  12349. STD T6
  12350. LDN 6
  12351. RJM CAN COMPARE FIELDS
  12352. UJN CSCX RETURN
  12353.  
  12354.  
  12355. CSCA DATA H*KRONOS2.1-*
  12356. DATA H*NOS *
  12357. DCV SPACE 4,15
  12358. ** DCV - CONVERT DECIMAL FIELD TO BINARY.
  12359. *
  12360. * ENTRY (A, 13 - 12) = NUMBER OF CHARACTER POSITIONS IN RESULT.
  12361. * (A, 11 - 0) = NUMBER OF CHARACTERS IN LABEL FIELD.
  12362. * (T6) = CHARACTER POSITION IN INPUT BUFFER.
  12363. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  12364. *
  12365. * EXIT (T6), (T7) = INCREMENTED.
  12366. *
  12367. * USES T2, T3, T4, T5.
  12368. *
  12369. * CALLS GCH, SCH.
  12370.  
  12371.  
  12372. DCV SUBR ENTRY/EXIT
  12373. STD T5 NUMBER OF CHARACTERS IN LABEL
  12374. SHN -14
  12375. STD T4 NUMBER OF CHARACTER POSITIONS IN UDT
  12376. LDN 0 PRESET RESULT
  12377. STD T2
  12378. STD T3
  12379. DCV1 RJM GCH GET CHARACTER
  12380. SBN 1R0
  12381. RAD T3
  12382. SHN -14
  12383. RAD T2
  12384. SOD T5
  12385. ZJN DCV2 IF ALL DIGITS PROCESSED
  12386. LDD T2 10D * ACCUMULATED RESULT
  12387. SHN 14
  12388. ADD T3
  12389. SHN 2+6 * 4
  12390. ADD T2 * 5
  12391. SHN 14
  12392. ADD T3
  12393. SHN 1 * 10D
  12394. STD T3
  12395. SHN -14
  12396. STD T2
  12397. UJN DCV1 LOOP
  12398.  
  12399. DCV2 LDD T4
  12400. LMN 3
  12401. NJN DCV3 IF NOT 3 CHARACTER POSITIONS
  12402. LDD T2 STORE VALUE
  12403. RJM SCH STORE CHARACTER
  12404. UJN DCV4
  12405. DCV3 LMN 2&3
  12406. NJN DCV5 IF NOT 2 CHARACTER POSIITONS
  12407. DCV4 LDD T3 STORE VALUE
  12408. SHN -6
  12409. RJM SCH STORE CHARACTER
  12410. DCV5 LDD T3
  12411. LPN 77
  12412. RJM SCH STORE CHARACTER
  12413. LJM DCVX RETURN
  12414. FCH SPACE 4,15
  12415. ** FCH - FILL DESTINATION BUFFER WITH CHARACTER(S).
  12416. *
  12417. * ENTRY (A, 17- 12) = CHARACTER TO FILL WITH.
  12418. * (A, 11 - 0) = NUMBER OF CHARACTERS TO FILL.
  12419. * (T7) = CHARACTER POINTER IN DESTINATION BUFFER.
  12420. *
  12421. * EXIT (T7) = INCREMENTED.
  12422. *
  12423. * USES T4.
  12424. *
  12425. * CALLS SCH.
  12426.  
  12427.  
  12428. FCH SUBR ENTRY/EXIT
  12429. STD T5 SAVE COUNT
  12430. SHN -14
  12431. STD T4 SAVE FILL VALUE
  12432. FCH1 LDD T4 STORE CHARACTER
  12433. RJM SCH
  12434. SOD T5
  12435. NJN FCH1 IF MORE TO FILL
  12436. UJN FCHX RETURN
  12437. GCD SPACE 4,10
  12438. ** GCD - GET CHARACTER FROM DESTINATION BUFFER.
  12439. *
  12440. * ENTRY (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  12441. *
  12442. * EXIT (A) = CHARACTER.
  12443. * (T7) = INCREMENTED.
  12444. *
  12445. * USES T1.
  12446.  
  12447.  
  12448. GCD1 LDM -1,T1
  12449. LPN 77
  12450.  
  12451. GCD SUBR ENTRY/EXIT
  12452. AOD T7
  12453. SBN 1
  12454. SHN 21
  12455. ADM DBUF
  12456. STD T1
  12457. SBM DBUF
  12458. SHN -21
  12459. ZJN GCD1 IF LOWER 6 BITS
  12460. LDI T1
  12461. SHN -6
  12462. UJN GCDX RETURN
  12463. GCH SPACE 4,10
  12464. ** GCH - GET CHARACTER FROM INPUT BUFFER.
  12465. *
  12466. * ENTRY (T6) = CHARACTER POSITION IN INPUT BUFFER.
  12467. *
  12468. * EXIT (A) = CHARACTER.
  12469. * (T6) = INCREMENTED.
  12470. *
  12471. * USES T1.
  12472.  
  12473.  
  12474. GCH1 LDM -1,T1
  12475. LPN 77
  12476.  
  12477. GCH SUBR ENTRY/EXIT
  12478. AOD T6
  12479. SBN 1
  12480. SHN 21
  12481. ADM IBUF
  12482. STD T1
  12483. SBM IBUF
  12484. SHN -21
  12485. ZJN GCH1 IF LOWER 6 BITS
  12486. LDI T1
  12487. SHN -6
  12488. UJN GCHX RETURN
  12489. RUD SPACE 4,10
  12490. ** RUD - READ UNIT DESCRIPTOR TABLE LABEL INFORMATION.
  12491. * OPERATION ONLY PERFORMED AT *MAGNET* CP.
  12492. *
  12493. * CALLS UDA.
  12494.  
  12495.  
  12496. RUD SUBR ENTRY/EXIT
  12497. RJM UDA GET UDT LABEL ADDRESS ADDRESS
  12498. ZJN RUDX IF NOT AT MAGNET CP
  12499. CRM UDTB,T1
  12500. UJN RUDX RETURN
  12501. SCH SPACE 4,10
  12502. ** SCH - STORE CHARACTER IN DESTINATION BUFFER.
  12503. *
  12504. * ENTRY (A) = CHARACTER.
  12505. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  12506. *
  12507. * EXIT (T7) = INCREMENTED.
  12508. *
  12509. * USES T1.
  12510.  
  12511.  
  12512. SCH1 LDM -1,T1
  12513. SCN 77
  12514. LMD T0
  12515. SCH2 STM -1,T1
  12516.  
  12517. SCH SUBR ENTRY/EXIT
  12518. LPN 77
  12519. STD T0 SAVE CHARACTER
  12520. AOD T7 INCREMENT POSITION
  12521. SHN 21 SET BYTE ADDRESS
  12522. ADM DBUF
  12523. STD T1
  12524. SBM DBUF
  12525. SHN -21
  12526. NJN SCH1 IF EVEN CHARACTER
  12527. LDM -1,T1
  12528. LPN 77
  12529. SHN 14
  12530. LMD T0
  12531. SHN 6
  12532. UJN SCH2 STORE CHARACTER
  12533. UDA SPACE 4,10
  12534. ** UDA - SET ADDRESS OF UDT LABEL PARAMETERS.
  12535. *
  12536. * EXIT (A) = ADDRESS OF UDT LABEL PARAMETERS (*UUFN*) IF AT
  12537. * MAGNET CP.
  12538. * (A) = 0 IF NOT AT MAGNET CP.
  12539. * (T1) = LENGTH OF UDT LABEL PARAMETERS (*UUDTL*) IF AT
  12540. * MAGNET CP.
  12541. *
  12542. * USES T1.
  12543. *
  12544. * CALLS UAD.
  12545.  
  12546.  
  12547. UDA1 LDN 0 SET NOT AT MAGNET CP
  12548.  
  12549. UDA SUBR ENTRY/EXIT
  12550. LDM //CECB
  12551. LPN 77
  12552. NJN UDA1 IF NOT AT MAGNET CP
  12553. LDN /MTX/UUDTL
  12554. STD T1
  12555. RJM UAD
  12556. ADK /MTX/UUFN SET LABEL PARAMETERS ADDRESS
  12557. UJN UDAX RETURN
  12558. WUD SPACE 4,10
  12559. ** WUD - WRITE UNIT DESCRIPTOR TABLE.
  12560. *
  12561. * EXIT (A) = LWA+1 OF LABEL PARAMETERS IF AT MAGNET CP.
  12562. * (A) = 0 IF NOT AT MAGNET CP.
  12563. * LABEL PARAMETERS WRITTEN TO UDT IF AT MAGNET CP.
  12564. *
  12565. * CALLS UDA.
  12566.  
  12567.  
  12568. WUD SUBR ENTRY/EXIT
  12569. RJM UDA GET UDT LABEL ADDRESS ADDRESS
  12570. ZJN WUDX IF NOT AT MAGNET CP
  12571. CWM UDTB,T1
  12572. UJN WUDX RETURN
  12573. SPACE 4,10
  12574. ** COMMON DECKS.
  12575.  
  12576.  
  12577. *CALL COMPC2D
  12578. BUFFER SPACE 4,10
  12579. USE BUFFER
  12580.  
  12581. TADD TSAD ADDRESS TABLE
  12582. SPACE 4,10
  12583. ** DEFAULT LABEL PARAMETERS FOR UNLABELED TAPES.
  12584.  
  12585.  
  12586. TDLP BSS 0
  12587. VFD 42/7L ,6/0,12/0 *UUFN*
  12588. VFD 36/6L***000,12/6,12/0 *UVSN*
  12589. VFD 60/10LUNLABELED. *UFID*
  12590. VFD 42/7L ,18/1 *UFSN*
  12591. VFD 36/6L ,6/1L ,18/1 *USID*
  12592. VFD 24/,6/1L ,12/0,18/1 *UGNU*
  12593. SPACE 4,10
  12594. ** UDT LABEL INFORMATION BUFFER (*UUFN* - *UDAT*).
  12595.  
  12596.  
  12597. UDTB BSS /MTX/UUDTL*5 LABEL INFORMATION BUFFER
  12598. SPACE 4,10
  12599. ** THE FOLLOWING ROUTINES WILL BE OVERLAID IF THE OPERATION
  12600. * IS CHECK MULTI-FILE LABELS (*RLCM*) OR VALIDATE HEADER LABEL
  12601. * (*RLVH*).
  12602.  
  12603.  
  12604. OVLM BSS 0 MULTI-FILE OVERLAY ORIGIN
  12605. BTA SPACE 4,10
  12606. ** BTA - BLANK TAPE CHECK.
  12607. *
  12608. * EXIT (EC) = /MTX/BTA IF BLANK TAPE.
  12609. *
  12610. * CALLS DTS.
  12611.  
  12612.  
  12613. BTA SUBR ENTRY/EXIT
  12614. LDD HP
  12615. SHN 21-7
  12616. MJN BTA3 IF CTS
  12617. LDC RJMI RESET *STW* EXIT
  12618. STM STWC-1
  12619. LDC //ERR
  12620. STM STWC
  12621. LDD DS
  12622. SHN 21-13
  12623. MJN BTA1 IF ALERT
  12624. RJM DTS GET DETAILED STATUS
  12625. BTA1 LDM MTDS CHECK FOR BLANK TAPE
  12626. LPC 77
  12627. * LPC 177 (ATS UNIT)
  12628. BTAA EQU *-1
  12629. LMN 16
  12630. BTAB PSN
  12631. * ZJN BTA2 (ATS UNIT - IF AGC FAILURE)
  12632. LMN 16&10
  12633. NJN BTA3 IF NOT BLANK TAPE
  12634. LDN /MTX/BTA
  12635. BTA2 STD EC
  12636. BTA3 LJM RLAX ADVANCE SECTION
  12637. CFU SPACE 4,15
  12638. ** CFU - COMPARE FAMILY AND USER NAMES.
  12639. *
  12640. * ENTRY (IBUF) = *BUF*.
  12641. *
  12642. * EXIT (A) = 0 IF FAMILY/USER NAME IN *VOL1* LABEL MATCHES
  12643. * FAMILY/USER FROM UDT.
  12644. * (IBUF) = *BUF*.
  12645. * (DBUF) = *UDTB*.
  12646. *
  12647. * USES T1, T2, T6, T7, CM - CM+4, CN - CN+4.
  12648. *
  12649. * CALLS CAN, CCH.
  12650.  
  12651.  
  12652. CFU SUBR ENTRY/EXIT
  12653.  
  12654. * SET *VOL1* LABEL OR *ZFAM* FAMILY NAME.
  12655.  
  12656. LDN 38D SET LOCATION OF FAMILY NAME IN LABEL
  12657. STD T6
  12658. LDN CM SET DESTINATION BUFFER
  12659. STM DBUF
  12660. LDN 1
  12661. STD T7
  12662. LDN 7 SET CHARACTER COUNT
  12663. RJM CCH MOVE LABEL FAMILY NAME
  12664. LDD CM+3
  12665. SCN 77
  12666. LMN 1R
  12667. STD CM+3
  12668. LDN CM+4
  12669. STD T2
  12670. CFU1 SOD T2
  12671. LMN CM-1
  12672. ZJN CFU3 IF ALL BYTES PROCESSED
  12673. LDI T2
  12674. LMC 2R
  12675. NJN CFU2 IF NOT BLANK BYTE
  12676. STI T2 SET ZERO FILL
  12677. UJN CFU1 CHECK NEXT BYTE
  12678.  
  12679. CFU2 LPN 77
  12680. NJN CFU3 IF NO MORE TRAILING BLANKS
  12681. LDI T2
  12682. SCN 77 SET ZERO FILL
  12683. STI T2
  12684. CFU3 LDD CM CHECK FOR NULL FAMILY NAME
  12685. ADD CM+1
  12686. ADD CM+2
  12687. ADD CM+3
  12688. NJN CFU4 IF NOT NULL FAMILY NAME
  12689. LDD MA
  12690. CWM CFUA,ON
  12691. SBN 1
  12692. CRD CM SET *ZFAM* FAMILY NAME FOR COMPARE
  12693.  
  12694. * SET CURRENT FAMILY NAME.
  12695.  
  12696. CFU4 LDK FOTP GET FOT POINTER
  12697. CRD CN
  12698. LDM UDTB+3 SET FOT ORDINAL
  12699. LPN 77
  12700. STD T1
  12701. LDD CN SET FOT ADDRESS
  12702. SHN 14
  12703. ADD CN+1
  12704. ADD T1
  12705. CRD CN READ FAMILY NAME
  12706.  
  12707. * COMPARE FAMILY NAMES.
  12708.  
  12709. LDD CM
  12710. LMD CN
  12711. NJN CFU5 IF NO MATCH
  12712. LDD CM+1
  12713. LMD CN+1
  12714. NJN CFU5 IF NO MATCH
  12715. LDD CM+2
  12716. LMD CN+2
  12717. NJN CFU5 IF NO MATCH
  12718. LDD CM+3
  12719. LMD CN+3
  12720. SCN 77
  12721. NJN CFU5 IF NO MATCH
  12722.  
  12723. * COMPARE USER NAMES.
  12724.  
  12725. LDN 45D SET LABEL USER NAME POINTER
  12726. STD T6
  12727. LDC UDTB RESTORE DESTINATION BUFFER
  12728. STM DBUF
  12729. LDN 1 SET UDT USER NAME POINTER
  12730. STD T7
  12731. LDN 7
  12732. RJM CAN COMPARE USER NAMES
  12733. CFU5 LJM CFUX RETURN WITH STATUS
  12734.  
  12735.  
  12736. CFUA VFD 48/0L"ZFAM"
  12737. CLR SPACE 4,10
  12738. ** CLR - CHECK LABELED REEL REQUIRED.
  12739. *
  12740. * EXIT TO CALLER IF TO ACCEPT UNLABELED REEL.
  12741. * TO *SEC* IF LABELED REEL REQUIRED.
  12742.  
  12743.  
  12744. CLR SUBR ENTRY/EXIT
  12745. LDD LT
  12746. SHN -11
  12747. LPN 3
  12748. LMN 2
  12749. NJN CLRX IF NOT ANSI LABELED TAPE REQUESTED
  12750. LDD UP
  12751. SHN 21-12
  12752. MJN CLR1 IF NOT INITIAL REEL CHECK
  12753. LDD LT
  12754. SHN 21-13
  12755. MJN CLRX IF *OPEN WRITE* TO BE PERFORMED BY *RESEX*
  12756. CLR1 LDN /MTX/NLB *NEEDS LABEL.*
  12757. LJM SEC SET ERROR CODE
  12758. HLC SPACE 4,10
  12759. ** HLC - HEADER LABEL CHECK.
  12760. *
  12761. * ENTRY (MD, 0) = 1, IF REQUESTER IS NOT OWNER.
  12762. *
  12763. * CALLS CLA, CLR, CSC, GCH, HDR.
  12764.  
  12765.  
  12766. HLC SUBR ENTRY/EXIT
  12767.  
  12768. * CHECK FOR *HDR1* LABEL.
  12769.  
  12770. RJM CLA CHECK LABEL
  12771. NJN HLC1 IF NOT GOOD LABEL
  12772. LDM BUF
  12773. LMC 2RHD
  12774. NJN HLC1 IF NOT *HDR1* LABEL
  12775. LDM BUF+1
  12776. LMC 2RR1
  12777. ZJN HLC3 IF *HDR1* LABEL
  12778. HLC1 RJM CLR CHECK LABELED REEL REQUIRED
  12779. LJM HLC8 RETURN
  12780.  
  12781. * CHECK FILE ACCESS PERMISSIONS.
  12782.  
  12783. HLC3 RJM CSC CHECK SYSTEM CODE
  12784. STD T4
  12785. LDC UDTB RESET BUFFER
  12786. STM DBUF
  12787. LDD SP
  12788. SHN 21-10
  12789. PJN HLC7 IF NOT ENFORCING ACCESS RESTRICTIONS
  12790. LDD T4
  12791. NJN HLC7 IF NOT INTERNALLY WRITTEN TAPE
  12792. LDN 54D SET ACCESSIBILITY
  12793. STD T6
  12794. RJM GCH GET CHARACTER
  12795. STD T4
  12796. LMN 1R
  12797. ZJN HLC7 IF UNLIMITED ACCESS
  12798. LMN 1RA&1R
  12799. NJN HLC4 IF NOT RESTRICTED TO THIS USER
  12800. LDD MD
  12801. LPN 1
  12802. ZJN HLC7 IF REQUESTER IS OWNER OF THIS REEL
  12803. UJN HLC5 DISPLAY ERROR MESSAGE
  12804.  
  12805. HLC4 LDM UDTB+4 GET SPECIFIED FILE ACCESS
  12806. SHN -6
  12807. LMD T4
  12808. ZJN HLC7 IF MATCHING FILE ACCESS
  12809. HLC5 LDN /MTX/CAD *CAN-T ACCESS DATA.*
  12810. HLC6 LJM SEC SET ERROR CODE
  12811.  
  12812. * RETURN *HDR1* LABEL INFORMATION TO UDT.
  12813.  
  12814. HLC7 RJM HDR PROCESS HEADER LABEL
  12815. HLC8 LJM RET1 EXIT
  12816. SEC SPACE 4,10
  12817. ** SEC - SET *RRJ* ERROR AND SUB-CODE.
  12818. *
  12819. * ENTRY (A) = *RRJ* ERROR SUB-CODE.
  12820.  
  12821.  
  12822. SEC BSS 0 ENTRY
  12823. STM ERSC SET ERROR SUB-CODE
  12824. LDK /MTX/RRJ
  12825. LJM RET3 RETURN *RRJ* ERROR
  12826. VLC SPACE 4,10
  12827. ** VLC - VOLUME LABEL CHECK.
  12828. *
  12829. * EXIT (MD, 0) = 1, IF NOT MATCHING USER NAME AND EXIT
  12830. * TO NEXT SECTION.
  12831. *
  12832. * CALLS CAN, CCH, CFU, CLL, GCH, UAD, WUD.
  12833.  
  12834.  
  12835. VLC SUBR ENTRY/EXIT
  12836.  
  12837. * CHECK WRITE ENABLE ENFORCEMENT.
  12838.  
  12839. LDD SP
  12840. SHN 21-4
  12841. PJN VLC2 IF WRITE ACCESS NOT REQUIRED
  12842. LDD DS
  12843. SHN 21-7
  12844. MJN VLC2 IF TAPE WRITE ENABLED
  12845. LDN /MTX/WRD *WRITE DISABLED*
  12846. VLC1 LJM SEC SET ERROR CODE
  12847.  
  12848. * CHECK FOR *VOL1* LABEL.
  12849.  
  12850. VLC2 RJM CLL CHECK LABEL LENGTH
  12851. NJN VLC3 IF NOT CORRECT SIZE FOR ANSI LABEL
  12852. LDM BUF
  12853. LMC 2RVO
  12854. NJN VLC3 IF NOT *VOL1* LABEL
  12855. LDM BUF+1
  12856. LMC 2RL1
  12857. ZJN VLC8 IF *VOL1* LABEL
  12858.  
  12859. * PROCESS *VOL1* LABEL NOT FOUND.
  12860.  
  12861. VLC3 RJM CLR CHECK LABELED REEL REQUIRED
  12862. LDD EC
  12863. LMN /MTX/BTA
  12864. NJN VLC5 IF NOT BLANK TAPE
  12865. LDD UP SET BLANK TAPE FLAG
  12866. SCN 4
  12867. LMN 4
  12868. STD UP
  12869. VLC5 RJM WUD REWRITE UDT
  12870. LJM RET1 ACCEPT THIS REEL
  12871.  
  12872. * CHECK VSN.
  12873.  
  12874. VLC8 LDN 5 COMPARE VSNS
  12875. STD T6
  12876. LDN 11D
  12877. STD T7
  12878. LDN 6
  12879. RJM CAN COMPARE FIELDS
  12880. ZJN VLC10 IF VSN,S MATCH
  12881. RJM UAD
  12882. ADK /MTX/UESN
  12883. CRD CM
  12884. LDD CM+4
  12885. SHN 21-5
  12886. MJN VLC9 IF SCRATCH TAPE REQUESTED
  12887. LDN /MTX/WVS *WRONG VSN.*
  12888. LJM SEC SET ERROR CODE
  12889.  
  12890. VLC9 LDN 5 COPY VSN TO UDT
  12891. STD T6
  12892. LDN 11D
  12893. STD T7
  12894. LDN 6
  12895. RJM CCH COPY CHARACTERS
  12896. RJM WUD REWRITE UDT
  12897.  
  12898. * CHECK UNLABELED ACCESS TO LABELED TAPE.
  12899.  
  12900. VLC10 LDD LT
  12901. SHN -11
  12902. LPN 3
  12903. LMN 2
  12904. ZJN VLC11 IF ANSI LABELED REQUEST
  12905. LDN 11D CHECK VOLUME ACCESSIBILITY
  12906. STD T6
  12907. RJM GCH GET CHARACTER
  12908. LMN 1R
  12909. ZJN VLC11 IF UNLIMITED ACCESS
  12910. LDD SP
  12911. LPN 10
  12912. NJN VLC11 IF WRITE ACCESS DISABLED
  12913. LDD SP
  12914. SHN 21-10
  12915. PJN VLC13 IF NOT ENFORCING ACCESS RESTRICTIONS
  12916. LDN /MTX/CAD *CAN-T ACCESS DATA.*
  12917. LJM SEC SET ERROR CODE
  12918.  
  12919. * CHECK FAMILY AND USER NAME FOR FILE OWNERSHIP CHECK.
  12920.  
  12921. VLC11 RJM CFU CHECK FAMILY AND USER NANE
  12922. ZJN VLC12 IF MATCHING FAMILY/USER NAME
  12923. AOD MD SET NO USER NAME MATCH
  12924. VLC12 AOD PB INCREMENT TO NEXT SECTION
  12925. VLC13 LJM VLCX RETURN
  12926.  
  12927.  
  12928. OVLML EQU * END OF OVERLAY AREA
  12929.  
  12930. BUFC EQU /READ/LBUF
  12931. BUF EQU BUFC+5
  12932. ERROVL OVLML
  12933. PRS SPACE 4,10
  12934. PRSD BSS 0 FWA OF RELOCATED INITIAL LABEL ERROR CODE
  12935. LOC .LERA INITIAL LABEL HANDLER
  12936. LER SPACE 4,10
  12937. ** LER - HANDLE LABEL ERRORS AT LOAD POINT AND ON INITIAL
  12938. * LABEL CHECKING DONE BY SCANNER.
  12939. *
  12940. * ENTRY (/READ/STAP) = PREVIOUS GENERAL STATUS.
  12941. * DS = CURRENT GENERAL STATUS.
  12942. *
  12943. * EXIT TO *CLA7* = FATAL LABEL ERROR.
  12944. * TO *RLA5* = REREAD LABEL PRU.
  12945. *
  12946. * CALLS BKS, FCN, WFC.
  12947.  
  12948.  
  12949. LER SUBR ENTRY/EXIT
  12950. LDM /READ/STAP LOAD PREVIOUS GENERAL STATUS
  12951. LPN 4
  12952. ZJN LER1 IF NOT AT LOAD POINT BEFORE READ
  12953. RJM CLL CHECK LABEL LENGTH
  12954. NJN LER2 IF NOT LABEL PRU
  12955. AOM LERA INCREMENT LABEL RETRY COUNTER
  12956. SBN 4
  12957. PJN LER2 IF THREE TRIES ON THIS PRU HAVE BEEN TRIED
  12958. LDN F0010 REWIND TO LOAD POINT
  12959. RJM FCN
  12960. LDD HP
  12961. SHN 21-7
  12962. PJN LER0 IF NOT CTS
  12963. RJM WNB WAIT NOT BUSY
  12964. UJN LER0.1 REREAD LABEL PRU
  12965.  
  12966. LER0 RJM WFC
  12967. LER0.1 LJM RLA5 REREAD LABEL PRU FROM LOAD POINT
  12968.  
  12969. LER1 AOM LERA INCREMENT LABEL PRU REREAD COUNT
  12970. SBN 4
  12971. PJN LER2 IF THREE TRIES ON THIS PRU HAVE BEEN DONE
  12972. RJM BKS BACKSPACE ONE PRU
  12973. LJM RLA5 REREAD LABEL PRU
  12974.  
  12975. LER2 LJM CLA7 FATAL INITIAL LABEL READ ERROR
  12976.  
  12977.  
  12978. LERA CON 0 LABEL RETRY COUNTER
  12979. WFC SPACE 4,10
  12980. ** WFC - WAIT BACKSPACE FUNCTION COMPLETE.
  12981. * TIMES OUT APPROXIMATELY 25 FEET OF TAPE.
  12982. *
  12983. * EXIT (DS) = UNIT STATUS.
  12984. *
  12985. * USES T2.
  12986. *
  12987. * CALLS //STW.
  12988.  
  12989. WFC2 CON 0 ENTERED VIA *RJM* FROM //STW
  12990. SOD T2
  12991. NJN WFC1 IF NOT TIMEOUT
  12992. LDC //ERR RESET ERROR EXIT
  12993. STM //STWC
  12994. UJN WFC1 ATTEMPT 1 MORE WAIT
  12995.  
  12996. WFC SUBR ENTRY/EXIT
  12997. LDC 2000 SET TIME OUT
  12998. STD T2
  12999. LDC WFC2 SET RETURN ON TIMEOUT IN //STW
  13000. STM //STWC
  13001. WFC1 LDN 2 WAIT NOT BUSY
  13002. RJM //STW
  13003. LDC //ERR RESET ERROR EXIT
  13004. STM //STWC
  13005. UJN WFCX RETURN
  13006. SPACE 4,10
  13007. .LERB BSS 0 END OF INITIAL LABEL ERROR CODE
  13008. LOC *O
  13009. PRS SPACE 4,10
  13010. ** PRS - PRESET.
  13011. *
  13012. * CALLS CTM, HNG, MCH.
  13013.  
  13014.  
  13015. PRS LDC PRSC MODIFY CHANNELS
  13016. RJM MCH
  13017. LDC /SRU/ITCL*100 SET SRU INCREMENT
  13018. STM //CECA
  13019. LDD HP
  13020. SHN 21-7
  13021. PJP PRS0 IF NOT CTS
  13022. LDC RLA6
  13023. STM /READ/RDFC+1
  13024. LDC LDNI+CRE/10000
  13025. STM CLAD LOAD CTS ERROR PROCESSOR
  13026. LDC UJNI-NJNI MODIFY INSTRUCTIONS FOR CTS
  13027. RAM CLAC
  13028. LDN 0
  13029. STM ETCA ALLOW PO=S ONLY
  13030. LDC BUF
  13031. STM /READ/RCTB
  13032. ISTORE RLAH,(UJN RLA9)
  13033. LDC LDNI+CLBL
  13034. STM RLAI 12-BIT WORD LENGTH OF LABEL
  13035. LDN CLBL+1
  13036. STM /READ/RCTA SET LENGTH TO READ + 1
  13037. ISTORE SKRA,(UJN SKR2) SKIP SAVING BLOCK ID
  13038. LDC /READ/RCT
  13039. STM PRSE
  13040. LJM PRS3.0 CONTINUE CODE MODIFICATION
  13041.  
  13042. PRS0 SHN 21-4-21+7
  13043. PJN PRS1 IF NOT ATS
  13044. LDC ZJNI+BTA2-BTAB MODIFY INSTRUCTIONS FOR ATS
  13045. STM BTAB
  13046. LCN 0
  13047. STM CLAB
  13048. LDC 177
  13049. STM BTAA
  13050. LDC ATUS
  13051. STM SDEA
  13052. LDC SHNI+74
  13053. STM SDEB
  13054. LDC SHNI+3
  13055. STM SDEC
  13056. PRS1 LDC 4425
  13057. STM //WEOA
  13058. LDC RLA6.1
  13059. STM /READ/RDFC+1
  13060. LDN LABL+1
  13061. STM /READ/MRDA LABEL LENGTH TO READ + 1
  13062. LDD PB
  13063. SHN -6
  13064. ZJN PRS2 IF INITIAL LABEL CHECK
  13065. ERRNZ /MTX/RLCL
  13066. LMN /MTX/RLCR/100
  13067. NJN PRS3 IF NOT CHECK NEXT REEL
  13068. PRS2 LDC LJMI SET RETURN ON *NO EOP*
  13069. STM STWC-1
  13070. LDC /READ/MRD5
  13071. STM STWC
  13072. PRS3 LDC BUF
  13073. STM /READ/MRDB
  13074. PRS3.0 LDC LJMI
  13075. STM /READ/RDFC
  13076. LDC /READ/RDFC
  13077. STM /READ/MRD
  13078. PRSE EQU *-1
  13079. * STM /READ/RCT (CTS)
  13080. LDD PB
  13081. SHN -6
  13082. NJN PRS3.2 IF NOT INITIAL LABEL CHECK
  13083. ERRNZ /MTX/RLCL
  13084. STD T2
  13085. LDC .LERB-.LERA
  13086. STD T1
  13087. PRS3.1 LDM PRSD,T2 MOVE CODE FOR INITIAL LABEL CHECK ERROR
  13088. STM EOFX,T2
  13089. AOD T2
  13090. SBD T1
  13091. MJN PRS3.1 IF NOT ALL CODE MOVED
  13092. LDC LDNI ENABLE INITIAL LABEL
  13093. STM RLAF
  13094. UJN PRS4 CONTINUE NORMAL PROCESSING
  13095.  
  13096. PRS3.2 LDC UJNI+2 DISABLE INITIAL LABEL ERROR RECOVERY
  13097. STM CLAA
  13098. LDD EP
  13099. LPN 77
  13100. ZJN PRS4 IF NOT RELOAD ERROR PROCESSOR
  13101. LDC CLA4 SET TO RELOAD ERROR PROCESSOR
  13102. STM /READ/RDFC+1
  13103. PRS4 LDM FETO
  13104. SHN 21-5
  13105. PJN PRS7 IF NO EXTENDED LABELS
  13106. LDD PB
  13107. SHN -6
  13108. LMN /MTX/RLOF/100
  13109. ZJN PRS6 IF OPEN
  13110. LMN /MTX/RLOF/100&/MTX/RLCF/100
  13111. NJN PRS7 IF NOT CLOSE
  13112. LDD DS
  13113. LPN 4
  13114. ZJN PRS6 IF NOT POSITIONED AT LOAD POINT
  13115. LDC PRS5 SET TO RETURN HERE
  13116. STM //LOV
  13117. LJM PRSX COMPLETE OVERLAY LOAD
  13118.  
  13119. PRS5 LDN /MTX/BEI SET TO NOT SKIP TAPE MARKS
  13120. LJM RET3 RETURN ERROR CODE
  13121.  
  13122. PRS6 STM WELA ENABLE EXTENDED LABELS
  13123. PRS7 LDD LT SET LABEL TYPE INDEX
  13124. LPC 1000
  13125. ZJN PRS7.1 IF NOT NON-STANDARD LABELS
  13126. LDN 3
  13127. PRS7.1 STD T1 SET TABLE INDEX
  13128. SBN LTYPL
  13129. MJN PRS11 IF LEGAL LABEL TYPE
  13130. PRS8 LDC PRS10 SET TO RETURN AFTER COMPLETION OF LOAD
  13131. PRS9 STM LOV
  13132. LJM PRSX RETURN
  13133.  
  13134. PRS10 LDN /MTX/LIT INCORRECT LABEL TYPE
  13135. LJM RET3 RETURN ERROR CODE
  13136.  
  13137. PRS11 LDM LTYP,T1 SET ADDRESS OF LABEL OPERATION TABLE
  13138. ZJN PRS8 IF INCORRECT LABEL TYPE
  13139. STD T3
  13140. LDD PB CHECK IF LEGAL OPERATION
  13141. SHN -6
  13142. STM RLAA
  13143. SHN 1
  13144. SBM LTYP+2,T1
  13145. MJN PRS13 IF DEFINED OPERATION
  13146. LDC PRS12 SET TO RETURN AFTER COMPLETION OF LOAD
  13147. UJN PRS9 RETURN
  13148.  
  13149. PRS12 RJM HNG HANG PP
  13150.  
  13151. PRS13 LDD PB
  13152. SHN 1-6
  13153. RAD T3
  13154. LDI T3 SET CURRENT OPERATION TABLE
  13155. STM PRSA
  13156. AOD T3
  13157. LDI T3 SET LENGTH OF TABLE
  13158. LPN 77
  13159. STD T2
  13160. LMC -0
  13161. STM RLAB
  13162. LDI T3
  13163. LPC 4000 DO NOT READ BEFORE FIRST OPERATION FLAG
  13164. STM RLAD
  13165. LDN 0 MOVE TABLE
  13166. STD T3
  13167. PRS14 LDM *,T3
  13168. PRSA EQU *-1
  13169. STM TABC,T3
  13170. AOD T3
  13171. SBD T2
  13172. MJN PRS14 IF NOT COMPLETE
  13173. LDD PB
  13174. LPN 77
  13175. ZJN PRS15 IF FIRST TIME
  13176. LDN 0 CLEAR *FIRST OPERATION DO NOT READ* FLAG
  13177. STM RLAD
  13178. PRS15 LDM LOV CHECK WHERE CALLED FROM
  13179. ADC -//OVL
  13180. MJN PRS16 IF NOT CALLED FROM READ ERROR RETURN
  13181. LDC 4000 SET *SKIP READ* FLAG AND FORCE EXECUTION
  13182. STM RLAC OF *WEL*
  13183. LDC RLA SET TO ENTER READ LABELS
  13184. STM //LOV
  13185. LDC //LOV
  13186. STM PRSB
  13187. PRS16 LDD PB
  13188. SHN -6
  13189. LMN /MTX/RLOF/100
  13190. ZJN PRS16.3 IF OPEN
  13191. LMN 6&4
  13192. NJN PRS17 IF NOT CLOSE
  13193. PRS16.3 LDD PB
  13194. LPN 77
  13195. ZJN PRS17 IF PROCESSING FIRST SECTION
  13196. SOD PB DECREMENT SECTION NUMBER - WILL BE
  13197. * INCREMENTED BY ROUTINE *CHC*
  13198. LDC RLA11 INSURE CONTROL POINT CHANGE TAKES PLACE
  13199. STM BT
  13200. * STM //LOV (READ ERROR RETURN)
  13201. PRSB EQU *-1
  13202. PRS17 LJM PRSX RETURN
  13203.  
  13204.  
  13205. PRSC CHTB CHANNEL TABLE
  13206. TITLE PROCESSING TABLES.
  13207. SPACE 4,10
  13208. ** TABLE OF LABEL TYPES AND SIZES.
  13209. *T, 12/ TYPE,12/ SIZE,12/ LENGTH
  13210. * TYPE ADDRESS OF LABEL OPERATION TABLE.
  13211. * SIZE SIZE OF LABEL BLOCK IN BYTES.
  13212. * LENGTH LENGTH OF LABEL OPERATION TABLE.
  13213.  
  13214. LTYP BSS 0
  13215. LOC 0
  13216. CON ANS,LABL,ANSL ANSI LABELS
  13217. CON NST,LABL,NSTL (NON - STANDARD LABELS)
  13218. LOC *O
  13219. LTYPL EQU *-LTYP
  13220. TITLE ANSI LABEL PROCESSORS.
  13221. SPACE 4,10
  13222. ** TABLES OF LABEL OPERATIONS.
  13223. *T, 12/ ADDRESS,1/R,5/,6/SEC
  13224. * R DON,T READ PRIOR TO FIRST OPERATION.
  13225. * SEC NUMBER OF SECTIONS.
  13226.  
  13227.  
  13228. ANS INDEX ANSI LABELS OPERATION TABLE
  13229. INDEX /MTX/RLCL/40,(CIL,CILL) CHECK IF LABELED
  13230. INDEX /MTX/RLCE/40,(CET,CETL+4000) CHECK END OF TAPE
  13231. INDEX /MTX/RLSL/40,(SKL,SKLL) SKIP OVER LABELS
  13232. INDEX /MTX/RLSM/40,(SKT,SKTL) SKIP TAPE MARKS
  13233. INDEX /MTX/RLOF/40,(OPL,OPLL+4000) OPEN FILE
  13234. INDEX /MTX/RLCR/40,(RCE,RCEL) CHECK NEXT REEL
  13235. INDEX /MTX/RLCF/40,(CLF,CLFL+4000) CLOSE FILE
  13236. INDEX /MTX/RLCM/40,(CFL,CFLL+4000) CHECK MULTI FILE LABELS
  13237. INDEX /MTX/RLVH/40,(CVH,CVHL) VALIDATE HEADER LABEL
  13238. INDEX /MTX/RLMX/40 TERMINATE TABLE
  13239. ANSL EQU *-ANS LENGTH OF TABLE
  13240.  
  13241. NST INDEX NON-STANDARD LABELS OPERATION TABLE
  13242. INDEX /MTX/RLCE/40,(CET,CETL+4000) CHECK END OF TAPE
  13243. INDEX /MTX/RLSL/40,(PNL,PNLL) SKIP OVER LABELS
  13244. INDEX /MTX/RLSM/40,(SKT,SKTL) SKIP TAPE MARKS
  13245. INDEX /MTX/RLOF/40,(OPL,OPLL+4000) OPEN FILE
  13246. INDEX /MTX/RLCR/40,(RCE,RCEL) CHECK NEXT REEL
  13247. INDEX /MTX/RLCF/40,(CLF,CLFL+4000) CLOSE FILE
  13248. INDEX /MTX/RLCF/40+2 TERMINATE TABLE
  13249. NSTL EQU *-NST LENGTH OF TABLE
  13250. SPACE 4,10
  13251. ** TABLE OF ANSI LABEL SEQUENCES.
  13252.  
  13253. CIL BSS 0
  13254. LOC 0
  13255. CON BTA BLANK TAPE CHECK
  13256. CON VOL VOL1
  13257. CON UVL UVLA
  13258. CON HDR HDR1
  13259. CON OHD HDR2 - HDR9
  13260. CON UHL UHLA
  13261. CON TMS TAPE MARK SENSE
  13262. LOC *O
  13263. CILL EQU *-CIL
  13264.  
  13265. CET BSS 0
  13266. LOC 0
  13267. CON ETC
  13268. CON EOF EOF1
  13269. CON EOV EOV1
  13270. CON EVO EOV2
  13271. LOC *O
  13272. CETL EQU *-CET
  13273.  
  13274. CFL BSS 0
  13275. LOC 0
  13276. CON ETC END OF TAPE CHECK
  13277. CON EOF CHECK *EOF1*
  13278. CON EFO CHECK EOF2 -EOF9
  13279. CON UTL UTLA
  13280. CON /MFP/TMC CHECK TAPE MARK
  13281. CON /MFP/TMC CHECK TAPE MARK
  13282. CON HDR CHECK *HDR1*
  13283. CON OHD HDR2 - HDR9
  13284. CON UHL UHLA
  13285. CON TMS TAPE MARK SENSE
  13286. CON EOV CHECK *EOV1*
  13287. CON EVO CHECK *EOV2*
  13288. LOC *O
  13289. CFLL EQU *-CFL
  13290.  
  13291. CVH BSS 0
  13292. LOC 0
  13293. CON VOL CHECK *VOL1*
  13294. CON UVL USER VOLUME LABELS
  13295. CON EOF CHECK *EOF1*
  13296. CON EFO CHECK EOF2 - EOF9
  13297. CON UTL UTLA
  13298. CON STM SKIP TAPE MARK
  13299. CON HDR CHECK *HDR1*
  13300. CON OHD HDR2 - HDR9
  13301. CON UHL UHLA
  13302. CON TMS TAPE MARK SENSE
  13303. LOC *O
  13304. CVHL EQU *-CVH
  13305.  
  13306. CLF BSS 0
  13307. LOC 0
  13308. CON CHC CHANGE CONTROL POINTS
  13309. CON ZRO ZERO FIRST WORD OF XL BUFFER
  13310. CON STM SKIP TAPE MARK
  13311. CON EOF EOF1
  13312. CON EFO EOF2 - EOF9
  13313. CON UTL UTLA
  13314. CON EOV EOV1
  13315. CON EVO EOV2
  13316. CON UTL UTLA
  13317. LOC *O
  13318. CLFL EQU *-CLF
  13319.  
  13320. OPL BSS 0
  13321. LOC 0
  13322. CON CHC CHANGE CONTROL POINTS
  13323. CON VOL VOL1
  13324. CON UVL UVLA
  13325. CON HDR HDR1
  13326. CON OHD HDR2 - HDR9
  13327. CON UHL UHLA
  13328. CON TMS TAPE MARK SENSE
  13329. LOC *O
  13330. OPLL EQU *-OPL
  13331.  
  13332. RCE BSS 0
  13333. LOC 0
  13334. CON BTA BLANK TAPE CHECK
  13335. CON VLC VOL1 CHECK
  13336. CON UVL SKIP OPTIONAL LABELS
  13337. CON HLC HDR1 CHECK
  13338. LOC *O
  13339. RCEL EQU *-RCE
  13340.  
  13341. SKL BSS 0
  13342. LOC 0
  13343. CON VOL VOL1
  13344. CON UVL UVLA
  13345. CON HDR HDR1
  13346. CON OHD HDR2 - HDR9
  13347. CON UHL UHLA
  13348. CON TMS TAPE MARK SENSE
  13349. LOC *O
  13350. SKLL EQU *-SKL
  13351.  
  13352. SKT BSS 0
  13353. LOC 0
  13354. CON PTM READ TO TAPE MARK
  13355. LOC *O
  13356. SKTL EQU *-SKT
  13357. SPACE 4,10
  13358. ** TABLE OF NON-STANDARD LABEL SEQUENCES.
  13359.  
  13360. PNL BSS 0
  13361. LOC 0
  13362. CON SBL
  13363. CON TMS
  13364. LOC *O
  13365. PNLL EQU *-PNL
  13366.  
  13367. MTL MAX CILL,CETL,CFLL,CVHL,CLFL,OPLL,RCEL,SKLL,SKTL,PNLL
  13368.  
  13369. ERRNZ MTL-TABCL BUFFER NOT LONG ENOUGH FOR LARGEST TABLE
  13370. OVERLAY (CODE CONVERT LABEL READ.),(ERLB+5),P
  13371. CCL SPACE 4,15
  13372. ** CCL - CODE CONVERT LABEL READ FOR CTS.
  13373. *
  13374. * THIS ROUTINE CONVERTS 8-BIT CHARACTERS READ FROM A
  13375. * CTS LABEL TO 6-BIT DISPLAY CODE CHARACTERS.
  13376. *
  13377. * ENTRY /READ/RCTB = STARTING ADDRESS OF DATA TO CONVERT.
  13378. * (CF) = 63/64 CHARACTER SET FLAG.
  13379. * (MD) = DRIVER MODE.
  13380. * (DNCV) = CONVERSION MODE.
  13381. *
  13382. * USES T1, T2, T3, T6.
  13383. *
  13384. * CALLS EXC.
  13385.  
  13386.  
  13387. ENTRY CCL
  13388. CCL SUBR ENTRY/EXIT
  13389. LDD CF
  13390. LPN 1
  13391. NJN CCL1 IF 64 CHARACTER SET
  13392. LCN 63-1R MODIFY TABLES FOR 63 CHARACTER SET
  13393. RAM ANSI+ANSIA
  13394. STM ANSI+ANSIC
  13395. LDC 63*100
  13396. RAM ANSI+ANSIB
  13397. STM ANSI+ANSID
  13398. LCN 63-1R
  13399. RAM EBCI+EBCIA
  13400. LDN 63-55
  13401. RAM EBCI+EBCIB
  13402. LDC 1R *100-63*100
  13403. RAM EBCI+EBCIC
  13404. LDC 63*100-0
  13405. RAM EBCI+EBCID
  13406. CCL1 LDD MD
  13407. SHN 21-6
  13408. PJN CCL2 IF NOT CODED
  13409. LDM DNCV
  13410. LPN 7
  13411. LMN /MTX/ANS
  13412. ZJN CCL2 IF ASCII CONVERSION MODE
  13413. LDC UJNI-PJNI
  13414. RAM EXCA CODE MODIFICATION FOR EBCDIC
  13415. LDC EBCI
  13416. STM EXCB
  13417. STM EXCC
  13418. CCL2 LDM /READ/RCTB
  13419. STD T1 POINTER TO CHARACTER TO CONVERT
  13420. LDN 0
  13421. STD T2 POINTER TO STORE CONVERTED CHARACTER
  13422. STD T3 1 OF 3 POSITIONS OF 8-BIT BYTE
  13423. CCL3 RJM EXC EXTRACT CHARACTER
  13424.  
  13425. * STORE CONVERTED CHARACTER.
  13426.  
  13427. LDD T2
  13428. SHN 21-0
  13429. ADM /READ/RCTB
  13430. STD T6 ADDRESS TO STORE CONVERTED CHARACTER
  13431. PJN CCL4 IF UPPER CHARACTER
  13432. LDD T7
  13433. RAI T6
  13434. UJN CCL5 CHECK IF MORE CHARACTERS TO CONVERT
  13435.  
  13436. CCL4 LDD T7
  13437. SHN 6
  13438. STI T6
  13439. CCL5 AOD T2
  13440. LMC 80D
  13441. NJN CCL3 IF MORE CHARACTERS TO CONVERT
  13442. UJP CCLX RETURN
  13443. EXC SPACE 4,15
  13444. ** EXC - EXTRACT CHARACTER.
  13445. *
  13446. * THIS ROUTINE TAKES ONE OF THE 80 CHARACTERS OF THE LABEL
  13447. * THAT WAS READ AND CONVERTS IT TO DISPLAY CODE.
  13448. *
  13449. * ENTRY (T1) = POINTER TO CHARACTER TO CONVERT.
  13450. * (T3) = 0 UPPER 8 OF 24.
  13451. * 1 MIDDLE 8 OF 24.
  13452. * 2 LOWER 8 OF 24.
  13453. *
  13454. * EXIT (T5) = (BUF,T1) IF (T3) = 0.
  13455. * (T7) = CONVERTED CHARACTER.
  13456. *
  13457. * USES T4, T5
  13458.  
  13459.  
  13460. EXC SUBR ENTRY/EXIT
  13461. LDD T3
  13462. NJN EXC1 IF NOT UPPER 8 OF 24
  13463. LDI T1
  13464. STD T5
  13465. SHN -4
  13466. UJN EXC3 MASK 8-BIT CHARACTER
  13467.  
  13468. EXC1 SBN 1
  13469. NJN EXC2 IF NOT BYTE 2 OF 3
  13470. LDD T5
  13471. LPN 17
  13472. SHN 4
  13473. STD T5
  13474. LDM 1,T1
  13475. SHN -10
  13476. ADD T5
  13477. UJN EXC3 MASK 8-BIT CHARACTER
  13478.  
  13479. EXC2 LDM 1,T1
  13480. EXC3 SHN 21-7
  13481. PJN EXC4 IF LEGAL CHARACTER (ANSI)
  13482. EXCA EQU *-1
  13483. * UJN EXC4 (EBCDIC)
  13484. LDN 0
  13485. EXC4 SHN 7-21 MASK 8 BITS
  13486. SHN 21-0
  13487. STD T4
  13488. PJN EXC5 IF LEFT HALF OF CONVERSION TABLE WORD
  13489. LDM ANSI,T4
  13490. EXCB EQU *-1
  13491. * LDM EBCI,T4 (EBCDIC)
  13492. LPN 77
  13493. UJN EXC6 SAVE DISPLAY CODE VALUE
  13494.  
  13495. EXC5 LDM ANSI,T4
  13496. EXCC EQU *-1
  13497. * LDM EBCI,T4 (EBCDIC)
  13498. SHN -6
  13499. EXC6 STD T7 SAVE DISPLAY CODE VALUE
  13500. AOD T3
  13501. SBN 3
  13502. NJN EXC7 IF NOT BYTE 3 OF 3
  13503. STD T3
  13504. LDN 2
  13505. RAD T1
  13506. EXC7 LJM EXCX RETURN
  13507. ANSI SPACE 4,10
  13508. ** ANSI - TABLE FOR *ASCII* TO DISPLAY CODE CONVERSION.
  13509. * THE ASCII CHARACTER DIVIDED BY 2 IS THE INDEX INTO THIS
  13510. * TABLE. ONLY THE FIRST 128 CHARACTERS ARE IN THE TABLE.
  13511. * THE PROGRAM USING THE TABLE WILL SUBSTITUTE 00 FOR THE
  13512. * HEX VALUES OF 80-FF.
  13513.  
  13514. ANSI BSS 0
  13515. LOC 0
  13516.  
  13517. VFD 6/1R 00 NUL NULL
  13518. VFD 6/1R] 01 SOH START OF HEADING
  13519. VFD 6/64 02 STX START OF TEXT
  13520. VFD 6/1R# 03 ETX END OF TEXT
  13521. VFD 6/1R$ 04 EOT END OF TRANSMISSION
  13522. VFD 6/63 05 ENQ ENQUIRY (64 CHARACTER SET)
  13523. ANSIA EQU *-1 (63 CHARACTER SET)
  13524. * VFD 6/1R 05 ENQ ENQUIRY (63 CHARACTER SET)
  13525. VFD 6/1R& 06 ACK ACKNOWLEDGE
  13526. VFD 6/1R' 07 BEL BELL
  13527. VFD 6/51 08 BS BACKSPACE
  13528. VFD 6/1R) 09 HT HORIZONTAL TAB
  13529. VFD 6/1R* 0A LF LINE FEED
  13530. VFD 6/1R+ 0B VT VERTICAL TAB
  13531. VFD 6/1R, 0C FF FORM FEED
  13532. VFD 6/1R- 0D CR CARRIAGE RETURN
  13533. VFD 6/1R. 0E SO SHIFT OUT
  13534. VFD 6/1R/ 0F SI SHIFT IN
  13535.  
  13536. VFD 6/1R0 10 DLE DATA LINK ESCAPE
  13537. VFD 6/1R1 11 DC1 DEVICE CONTROL 1 (X-ON)
  13538. VFD 6/1R2 12 DC2 DEVICE CONTROL 2
  13539. VFD 6/1R3 13 DC3 DEVICE CONTROL 3 (X-OFF)
  13540. VFD 6/1R4 14 DC4 DEVICE CONTROL 4 (STOP)
  13541. VFD 6/1R5 15 NAK NEGATIVE ACKNOWLEDGE
  13542. VFD 6/1R6 16 SYN SYNCHRONOUS IDLE
  13543. VFD 6/1R7 17 ETB END OF TRANSMISSION BLOCK
  13544. VFD 6/1R8 18 CAN CANCEL
  13545. VFD 6/1R9 19 EM END OF MEDIUM
  13546. VFD 6/00 1A SUB SUBSTITUTE (64 CHARACTERS)
  13547. ANSIB EQU * (63 CHARACTER SET)
  13548. * VFD 6/63 1A SUB SUBSTITUTE (63 CHARACTERS)
  13549. VFD 6/1R; 1B ESC ESCAPE (DRIVER)
  13550. VFD 6/1R[ 1C FS FILE SEPARATOR
  13551. VFD 6/1R= 1D GS GROUP SEPARATOR
  13552. VFD 6/1R> 1E RS RECORD SEPARATOR
  13553. VFD 6/1R? 1F US UNIT SEPARATOR
  13554.  
  13555. VFD 6/1R 20 SPACE
  13556. VFD 6/1R! 21 EXCLAMATION POINT
  13557. VFD 6/64 22 QUOTATION MARKS
  13558. VFD 6/1R# 23 NUMBER SIGN
  13559. VFD 6/1R$ 24 $ DOLLAR SIGN
  13560. VFD 6/63 25 PERCENT (64 CHARACTER SET)
  13561. ANSIC EQU *-1 (63 CHARACTER SET)
  13562. * VFD 6/1R 25 PERCENT (63 CHARACTER SET)
  13563. VFD 6/1R& 26 AMPERSAND
  13564. VFD 6/1R' 27 APOSTROPHE
  13565. VFD 6/51 28 ( OPENING PARENTHESIS
  13566. VFD 6/1R) 29 ) CLOSING PARENTHESIS
  13567. VFD 6/1R* 2A * ASTERISK
  13568. VFD 6/1R+ 2B + PLUS
  13569. VFD 6/1R, 2C , COMMA
  13570. VFD 6/1R- 2D - HYPHEN (MINUS)
  13571. VFD 6/1R. 2E . PERIOD
  13572. VFD 6/1R/ 2F / SLANT
  13573.  
  13574. VFD 6/1R0 30 0
  13575. VFD 6/1R1 31 1
  13576. VFD 6/1R2 32 2
  13577. VFD 6/1R3 33 3
  13578. VFD 6/1R4 34 4
  13579. VFD 6/1R5 35 5
  13580. VFD 6/1R6 36 6
  13581. VFD 6/1R7 37 7
  13582. VFD 6/1R8 38 8
  13583. VFD 6/1R9 39 9
  13584. VFD 6/00 3A COLON (64 CHARACTER SET)
  13585. ANSID EQU * (63 CHARACTER SET)
  13586. * VFD 6/63 3A COLON (63 CHARACTER SET)
  13587. VFD 6/1R; 3B SEMICOLON
  13588. VFD 6/1R< 3C LESS THAN
  13589. VFD 6/1R= 3D EQUALS
  13590. VFD 6/1R> 3E GREATER THAN
  13591. VFD 6/1R? 3F QUESTION MARK
  13592.  
  13593. VFD 6/1R@ 40 COMMERCIAL AT
  13594. VFD 6/1RA 41 A
  13595. VFD 6/1RB 42 B
  13596. VFD 6/1RC 43 C
  13597. VFD 6/1RD 44 D
  13598. VFD 6/1RE 45 E
  13599. VFD 6/1RF 46 F
  13600. VFD 6/1RG 47 G
  13601. VFD 6/1RH 48 H
  13602. VFD 6/1RI 49 I
  13603. VFD 6/1RJ 4A J
  13604. VFD 6/1RK 4B K
  13605. VFD 6/1RL 4C L
  13606. VFD 6/1RM 4D M
  13607. VFD 6/1RN 4E N
  13608. VFD 6/1RO 4F 0
  13609.  
  13610. VFD 6/1RP 50 P
  13611. VFD 6/1RQ 51 Q
  13612. VFD 6/1RR 52 R
  13613. VFD 6/1RS 53 S
  13614. VFD 6/1RT 54 T
  13615. VFD 6/1RU 55 U
  13616. VFD 6/1RV 56 V
  13617. VFD 6/1RW 57 W
  13618. VFD 6/1RX 58 X
  13619. VFD 6/1RY 59 Y
  13620. VFD 6/1RZ 5A Z
  13621. VFD 6/1R[ 5B OPENING BRACKET
  13622. VFD 6/1R\ 5C REVERSE SLANT
  13623. VFD 6/1R] 5D CLOSING BRACKET
  13624. VFD 6/1R^ 5E CIRCUMFLEX
  13625. VFD 6/65 5F UNDERLINE
  13626.  
  13627. VFD 6/1R@ 60 GRAVE ACCENT
  13628. VFD 6/1RA 61 A LC
  13629. VFD 6/1RB 62 B LC
  13630. VFD 6/1RC 63 C LC
  13631. VFD 6/1RD 64 D LC
  13632. VFD 6/1RE 65 E LC
  13633. VFD 6/1RF 66 F LC
  13634. VFD 6/1RG 67 G LC
  13635. VFD 6/1RH 68 H LC
  13636. VFD 6/1RI 69 I LC
  13637. VFD 6/1RJ 6A J LC
  13638. VFD 6/1RK 6B K LC
  13639. VFD 6/1RL 6C L LC
  13640. VFD 6/1RM 6D M LC
  13641. VFD 6/1RN 6E N LC
  13642. VFD 6/1RO 6F O LC
  13643.  
  13644. VFD 6/1RP 70 P LC
  13645. VFD 6/1RQ 71 Q LC
  13646. VFD 6/1RR 72 R LC
  13647. VFD 6/1RS 73 S LC
  13648. VFD 6/1RT 74 T LC
  13649. VFD 6/1RU 75 U LC
  13650. VFD 6/1RV 76 V LC
  13651. VFD 6/1RW 77 W LC
  13652. VFD 6/1RX 78 X LC
  13653. VFD 6/1RY 79 Y LC
  13654. VFD 6/1RZ 7A Z LC
  13655. VFD 6/1R< 7B OPENING BRACE
  13656. VFD 6/1R\ 7C VERTICAL LINE
  13657. VFD 6/1R! 7D CLOSING BRACE
  13658. VFD 6/1R^ 7E OVERLINE (TILDE)
  13659. VFD 6/65 7F DEL DELETE
  13660.  
  13661. LOC *O
  13662. EBCI SPACE 4
  13663. ** EBCI - TABLE FOR EBCDIC TO DISPLAY CODE CONVERSION.
  13664.  
  13665. * THE ASCII CHARACTER DIVIDED BY 2 IS THE INDEX INTO THIS
  13666. * TABLE.
  13667.  
  13668.  
  13669. EBCI BSS 0
  13670. LOC 0
  13671.  
  13672. VFD 6/1R 00 NUL NULL
  13673. VFD 6/1R] 01 SOH START OF HEADING
  13674. VFD 6/64 02 STX START OF TEXT
  13675. VFD 6/1R# 03 ETX END OF TEXT
  13676. VFD 6/1R 04
  13677. VFD 6/1R) 05 HT HORIZONTAL TAB
  13678. VFD 6/1R 06
  13679. VFD 6/65 07 DEL DELETE
  13680. VFD 6/1R 08
  13681. VFD 6/1R 09
  13682. VFD 6/1R 0A
  13683. VFD 6/1R+ 0B VT VERTICAL TAB
  13684. VFD 6/1R, 0C FF FORM FEED
  13685. VFD 6/1R- 0D CR CARRIAGE RETURN
  13686. VFD 6/1R. 0E SO SHIFT OUT
  13687. VFD 6/1R/ 0F SI SHIFT IN
  13688.  
  13689. VFD 6/1R0 10 DLE DATA LINK ESCAPE
  13690. VFD 6/1R1 11 DC1 DEVICE CONTROL 1 (X-ON)
  13691. VFD 6/1R2 12 DC2 DEVICE CONTROL 2
  13692. VFD 6/1R3 13 DC3 DEVICE CONTROL 3 (X-OFF)
  13693. VFD 6/1R 14
  13694. VFD 6/1R 15
  13695. VFD 6/51 16 BS BACKSPACE
  13696. VFD 6/1R 17
  13697. VFD 6/1R8 18 CAN CANCEL
  13698. VFD 6/1R9 19 EM END OF MEDIMUM
  13699. VFD 6/1R 1A
  13700. VFD 6/1R 1B
  13701. VFD 6/1R[ 1C FS FILE SEPERATOR
  13702. VFD 6/1R= 1D GS GROUP SEPERATOR
  13703. VFD 6/1R> 1E RS RECORD SEPERATOR
  13704. VFD 6/1R? 1F US UNIT SEPERATOR
  13705.  
  13706. VFD 6/1R 20
  13707. VFD 6/1R 21
  13708. VFD 6/1R 22
  13709. VFD 6/1R 23
  13710. VFD 6/1R 24
  13711. VFD 6/1R* 25 LF LINE FEED
  13712. VFD 6/1R7 26 ETB END OF TRANSMISSION BLOCK
  13713. VFD 6/1R; 27 ESC ESCAPE
  13714. VFD 6/1R 28
  13715. VFD 6/1R 29
  13716. VFD 6/1R 2A
  13717. VFD 6/1R 2B
  13718. VFD 6/1R 2C
  13719. VFD 6/63 2D ENQ ENQUIRY (64 CHARACTER SET)
  13720. EBCIA EQU *-1 (63 CHARACTER SET)
  13721. * VFD 6/1R 2D ENQ ENQUIRY (63 CHARACTER SET)
  13722. VFD 6/1R& 2E ACK ACKNOWLEDGE
  13723. VFD 6/1R' 2F BEL BELL
  13724.  
  13725. VFD 6/1R 30
  13726. VFD 6/1R 31
  13727. VFD 6/1R6 32 SYN SYNCHROUS IDLE
  13728. VFD 6/1R 33
  13729. VFD 6/1R 34
  13730. VFD 6/1R 35
  13731. VFD 6/1R 36
  13732. VFD 6/1R$ 37 EOT END OF TRANSMISSION
  13733. VFD 6/1R 38
  13734. VFD 6/1R 39
  13735. VFD 6/1R 3A
  13736. VFD 6/1R 3B
  13737. VFD 6/1R4 3C DC4 DEVICE CONTROL 4
  13738. VFD 6/1R5 3D NAK NEGATIVE ACKNOWLEDGE
  13739. VFD 6/1R 3E
  13740. VFD 6/00 3F SUB SUBSTITUTE (64 CHARACTER SET
  13741. EBCIB EQU *-1 (63 CHARACTER SET)
  13742. * VFD 6/63 3F SUB SUBSTITUTE (63 CHARACTER SET
  13743.  
  13744. VFD 6/1R 40 SPACE
  13745. VFD 6/1R 41
  13746. VFD 6/1R 42
  13747. VFD 6/1R 43
  13748. VFD 6/1R 44
  13749. VFD 6/1R 45
  13750. VFD 6/1R 46
  13751. VFD 6/1R 47
  13752. VFD 6/1R 48
  13753. VFD 6/1R 49
  13754. VFD 6/1R[ 4A OPENING BRACKET
  13755. VFD 6/1R. 4B . PERIOD
  13756. VFD 6/1R< 4C LESS THAN
  13757. VFD 6/51 4D OPENING PARENTHESIS
  13758. VFD 6/1R+ 4E + PLUS
  13759. VFD 6/1R! 4F LOGICAL OR
  13760.  
  13761. VFD 6/1R& 50 AMPERSAND
  13762. VFD 6/1R 51
  13763. VFD 6/1R 52
  13764. VFD 6/1R 53
  13765. VFD 6/1R 54
  13766. VFD 6/1R 55
  13767. VFD 6/1R 56
  13768. VFD 6/1R 57
  13769. VFD 6/1R 58
  13770. VFD 6/1R 59
  13771. VFD 6/1R] 5A CLOSING BRACKET
  13772. VFD 6/1R$ 5B $ DOLLAR SIGN
  13773. VFD 6/1R* 5C * ASTERISK
  13774. VFD 6/1R) 5D ) CLOSING PARENTHESIS
  13775. VFD 6/1R; 5E SEMICOLON
  13776. VFD 6/1R^ 5F NOT LOGICAL NOT
  13777.  
  13778. VFD 6/1R- 60 - HYPHEN (MINUS)
  13779. VFD 6/1R/ 61 / SLANT
  13780. VFD 6/1R 62
  13781. VFD 6/1R 63
  13782. VFD 6/1R 64
  13783. VFD 6/1R 65
  13784. VFD 6/1R 66
  13785. VFD 6/1R 67
  13786. VFD 6/1R 68
  13787. VFD 6/1R 69
  13788. VFD 6/1R\ 6A VERTICAL LINE
  13789. VFD 6/1R, 6B , COMMA
  13790. VFD 6/63 6C PERCENT (64 CHARACTER SET)
  13791. EBCIC EQU * (63 CHARACTER SET)
  13792. * VFD 6/1R 6C PERCENT (63 CHARACTER SET)
  13793. VFD 6/65 6D UNDERSCORE
  13794. VFD 6/1R> 6E GREATER THAN
  13795. VFD 6/1R? 6F QUESTION MARK
  13796.  
  13797. VFD 6/1R 70
  13798. VFD 6/1R 71
  13799. VFD 6/1R 72
  13800. VFD 6/1R 73
  13801. VFD 6/1R 74
  13802. VFD 6/1R 75
  13803. VFD 6/1R 76
  13804. VFD 6/1R 77
  13805. VFD 6/1R 78
  13806. VFD 6/1R@ 79 GRAVE ACCENT
  13807. VFD 6/00 7A COLON (64 CHARACTER SET)
  13808. EBCID EQU * (63 CHARACTER SET)
  13809. * VFD 6/63 7A COLON (63 CHARACTER SET)
  13810. VFD 6/1R# 7B NUMBER SIGN
  13811. VFD 6/1R@ 7C COMMERCIAL AT
  13812. VFD 6/1R' 7D APOSTROPHE
  13813. VFD 6/1R= 7E = EQUALS
  13814. VFD 6/64 7F QUOTATION MARKS
  13815.  
  13816. VFD 6/1R 80
  13817. VFD 6/1RA 81 A LC
  13818. VFD 6/1RB 82 B LC
  13819. VFD 6/1RC 83 C LC
  13820. VFD 6/1RD 84 D LC
  13821. VFD 6/1RE 85 E LC
  13822. VFD 6/1RF 86 F LC
  13823. VFD 6/1RG 87 G LC
  13824. VFD 6/1RH 88 H LC
  13825. VFD 6/1RI 89 I LC
  13826. VFD 6/1R 8A
  13827. VFD 6/1R 8B
  13828. VFD 6/1R 8C
  13829. VFD 6/1R 8D
  13830. VFD 6/1R 8E
  13831. VFD 6/1R 8F
  13832.  
  13833. VFD 6/1R 90
  13834. VFD 6/1RJ 91 J LC
  13835. VFD 6/1RK 92 K LC
  13836. VFD 6/1RL 93 L LC
  13837. VFD 6/1RM 94 M LC
  13838. VFD 6/1RN 95 N LC
  13839. VFD 6/1RO 96 O LC
  13840. VFD 6/1RP 97 P LC
  13841. VFD 6/1RQ 98 Q LC
  13842. VFD 6/1RR 99 R LC
  13843. VFD 6/1R 9A
  13844. VFD 6/1R 9B
  13845. VFD 6/1R 9C
  13846. VFD 6/1R 9D
  13847. VFD 6/1R 9E
  13848. VFD 6/1R 9F
  13849.  
  13850. VFD 6/1R A0
  13851. VFD 6/1R^ A1 OVERLINE (TILDE)
  13852. VFD 6/1RS A2 S LC
  13853. VFD 6/1RT A3 T LC
  13854. VFD 6/1RU A4 U LC
  13855. VFD 6/1RV A5 V LC
  13856. VFD 6/1RW A6 W LC
  13857. VFD 6/1RX A7 X LC
  13858. VFD 6/1RY A8 Y LC
  13859. VFD 6/1RZ A9 Z LC
  13860. VFD 6/1R AA
  13861. VFD 6/1R AB
  13862. VFD 6/1R AC
  13863. VFD 6/1R AD
  13864. VFD 6/1R AE
  13865. VFD 6/1R AF
  13866.  
  13867. VFD 6/1R B0
  13868. VFD 6/1R B1
  13869. VFD 6/1R B2
  13870. VFD 6/1R B3
  13871. VFD 6/1R B4
  13872. VFD 6/1R B5
  13873. VFD 6/1R B6
  13874. VFD 6/1R B7
  13875. VFD 6/1R B8
  13876. VFD 6/1R B9
  13877. VFD 6/1R BA
  13878. VFD 6/1R BB
  13879. VFD 6/1R BC
  13880. VFD 6/1R BD
  13881. VFD 6/1R BE
  13882. VFD 6/1R BF
  13883.  
  13884. VFD 6/1R< C0 OPENING BRACE
  13885. VFD 6/1RA C1 A
  13886. VFD 6/1RB C2 B
  13887. VFD 6/1RC C3 C
  13888. VFD 6/1RD C4 D
  13889. VFD 6/1RE C5 E
  13890. VFD 6/1RF C6 F
  13891. VFD 6/1RG C7 G
  13892. VFD 6/1RH C8 H
  13893. VFD 6/1RI C9 I
  13894. VFD 6/1R CA
  13895. VFD 6/1R CB
  13896. VFD 6/1R CC
  13897. VFD 6/1R CD
  13898. VFD 6/1R CE
  13899. VFD 6/1R CF
  13900.  
  13901. VFD 6/1R! D0 CLOSING BRACE
  13902. VFD 6/1RJ D1 J
  13903. VFD 6/1RK D2 K
  13904. VFD 6/1RL D3 L
  13905. VFD 6/1RM D4 M
  13906. VFD 6/1RN D5 N
  13907. VFD 6/1RO D6 O
  13908. VFD 6/1RP D7 P
  13909. VFD 6/1RQ D8 Q
  13910. VFD 6/1RR D9 R
  13911. VFD 6/1R DA
  13912. VFD 6/1R DB
  13913. VFD 6/1R DC
  13914. VFD 6/1R DD
  13915. VFD 6/1R DE
  13916. VFD 6/1R DF
  13917.  
  13918. VFD 6/1R\ E0 REVERSE SLANT
  13919. VFD 6/1R E1
  13920. VFD 6/1RS E2 S
  13921. VFD 6/1RT E3 T
  13922. VFD 6/1RU E4 U
  13923. VFD 6/1RV E5 V
  13924. VFD 6/1RW E6 W
  13925. VFD 6/1RX E7 X
  13926. VFD 6/1RY E8 Y
  13927. VFD 6/1RZ E9 Z
  13928. VFD 6/1R EA
  13929. VFD 6/1R EB
  13930. VFD 6/1R EC
  13931. VFD 6/1R ED
  13932. VFD 6/1R EE
  13933. VFD 6/1R EF
  13934.  
  13935. VFD 6/1R0 F0 0
  13936. VFD 6/1R1 F1 1
  13937. VFD 6/1R2 F2 2
  13938. VFD 6/1R3 F3 3
  13939. VFD 6/1R4 F4 4
  13940. VFD 6/1R5 F5 5
  13941. VFD 6/1R6 F6 6
  13942. VFD 6/1R7 F7 7
  13943. VFD 6/1R8 F8 8
  13944. VFD 6/1R9 F9 9
  13945. VFD 6/1R FA
  13946. VFD 6/1R FB
  13947. VFD 6/1R FC
  13948. VFD 6/1R FD
  13949. VFD 6/1R FE
  13950. VFD 6/1R FF
  13951. LOC *O
  13952. ERRNG 473+ERLB+5-* IF CODE LONGER THAN ONE PRU
  13953. OVERLAY (MULTI-FILE AUXILIARY PROCESSOR.),(/RLA/OVLM),,MFP
  13954. SPACE 4,10
  13955. ** THIS OVERLAY CONTAINS ROUTINES WHICH ARE USED FOR
  13956. * MULTI-FILE OPERATIONS. IT OVERLAYS PART OF THE
  13957. * READ LABELS OVERLAY AND IS USED IN CONJUCTION WITH
  13958. * READ LABELS WHEN MULTI-FILE TAPES ARE BEING PROCESSED.
  13959. SPACE 4,10
  13960. * ASSEMBLY CONSTANTS
  13961.  
  13962.  
  13963. BUF EQU /RLA/BUF
  13964. DBUF EQU /RLA/DBUF
  13965. IBUF EQU /RLA/IBUF
  13966. UDTB EQU /RLA/UDTB
  13967. CAN EQU /RLA/CAN
  13968. CHC EQU /RLA/CHC
  13969. CLA EQU /RLA/CLA
  13970. C2D EQU /RLA/C2D
  13971. DCV EQU /RLA/DCV
  13972. ELA EQU /RLA/ELA
  13973. FAD EQU /RLA/FAD
  13974. FCH EQU /RLA/FCH
  13975. RBE EQU /RLA/RBE
  13976. RLAX EQU /RLA/RLAX
  13977. THL EQU /RLA/THL
  13978. WUD EQU /RLA/WUD
  13979.  
  13980. ENTRY MFP
  13981.  
  13982. PHD SPACE 4,10
  13983. ** PHD - PROCESS HEADER.
  13984. *
  13985. * ENTRY (A) = 0 IF CHECK MULTI-FILE LABELS (*RLCM*) OPERATION.
  13986. * (A) = 1 IF VALIDATE HEADER LABEL (*RLVH*) OPERATION.
  13987. *
  13988. * CALLS CAN, FCH, THL, WUD.
  13989.  
  13990.  
  13991. PHD SUBR ENTRY/EXIT
  13992. STD T6 SAVE ENTRY
  13993. LDC BUF SET UP BUFFER ADDRESSES
  13994. STM IBUF
  13995. LDD T6
  13996. ZJN PHD1 IF CHECK MULTI-FILE LABELS
  13997. ERRNZ /MTX/RLCM-700
  13998. LDM CIOE CHECK IF POSMF
  13999. LPC 1774
  14000. LMC 110
  14001. NJN PHD3 IF NOT POSMF
  14002. PHD1 LDC UDTB
  14003. STM DBUF
  14004. RJM THL TRANSFER HEADER LABEL
  14005. RJM WUD WRITE UDT
  14006. PHD2 UJN PHDX RETURN
  14007.  
  14008. PHD3 LDC PHDA COMPARE LABEL TO UDT
  14009. STM DBUF
  14010. LDN 21D ZERO OUT BUFFER
  14011. STD T7
  14012. LDN 50D
  14013. RJM FCH COPY CHARACTERS
  14014. RJM THL TRANSFER HEADER LABEL
  14015. LDN 21D
  14016. STD T6
  14017. STD T7
  14018. LDC UDTB SET INPUT BUFFER
  14019. STM IBUF
  14020. LDN 30D
  14021. RJM CAN COMPARE FIELDS
  14022. NJN PHD4 IF NO COMPARE
  14023. LDN 56D
  14024. STD T6
  14025. STD T7
  14026. LDN 15D
  14027. RJM CAN COMPARE LABEL FIELDS
  14028. NJN PHD4 IF NO COMPARE
  14029. LDC BUF RESET INPUT BUFFER ADDRESS
  14030. STM IBUF
  14031. LJM PHDX RETURN
  14032.  
  14033. PHD4 LJM RBE RETURN *BEI* ERROR
  14034. REL SPACE 4,10
  14035. ** REL - READ EXTENDED LABELS.
  14036. *
  14037. * CALLS ELA.
  14038.  
  14039.  
  14040. REL5 LDD CM SET SEQUENCE NUMBER
  14041. SHN 14
  14042. ADD CM+1
  14043. ADN 4
  14044. CRM TMCB,ON
  14045. LDM TMCB+2
  14046. SCN 77
  14047. SHN 6
  14048. LMM TMCB+1
  14049. SHN 6
  14050. STM TMCB+4
  14051. SHN 6
  14052. STM TMCB+3
  14053.  
  14054. REL SUBR ENTRY/EXIT
  14055. LDN 0
  14056. STD T6
  14057. STD T7
  14058. REL1 RJM ELA GET EXTENDED LABEL ADDRESS
  14059. ZJN RELX IF NO EXTENDED LABEL BUFFER
  14060. CRD CM
  14061. STD CM+1
  14062. SHN -14
  14063. STD CM
  14064. LDD CM+4
  14065. ZJN REL3 IF END OF BUFFER
  14066. LMC 80D
  14067. NJN REL4 IF NOT CORRECT LENGTH
  14068. LDD CM
  14069. SHN 14
  14070. ADD CM+1
  14071. ADN 1
  14072. CRM TMCB,ON
  14073. LDM TMCB
  14074. LMC 2RHD
  14075. NJN REL2 IF NOT *HD*
  14076. LDM TMCB+1
  14077. LMC 2RR1
  14078. NJN REL2 IF NOT *HDR1*
  14079. LJM REL5 SET SEQUENCE NUMBER
  14080.  
  14081. REL2 LDN 11
  14082. RAD T7
  14083. SHN -14
  14084. RAD T6
  14085. LJM REL1 LOOP FOR NEXT LABEL
  14086.  
  14087. REL3 LDN /MTX/LAM LABEL MISSING
  14088. LJM RET3 RETURN ERROR CODE
  14089.  
  14090. REL4 LDN /MTX/IXL INCORRECT CHARACTER COUNT IN HEADER
  14091. LJM RET3 RETURN ERROR CODE
  14092. SSN SPACE 4,10
  14093. ** SSN - SET SEQUENCE NUMBER.
  14094. *
  14095. * CALLS C2D, DCV.
  14096.  
  14097.  
  14098. SSN SUBR ENTRY/EXIT
  14099. LDC SSNA SET DESTINATION BUFFER
  14100. STM DBUF
  14101. LDN 32D GET SEQUENCE NUMBER
  14102. STD T6
  14103. LDN 2
  14104. STD T7
  14105. LDC 30004
  14106. RJM DCV CONVERT DECIMAL FIELD
  14107. LDM SSNA+1 SET LAST SEQUENCE NUMBER+1
  14108. ADN 1
  14109. STD T6
  14110. RJM C2D
  14111. STM SSNA+3
  14112. LDD T6
  14113. SHN -6
  14114. RJM C2D
  14115. LPN 77
  14116. STM SSNA+2
  14117. LDN 0 CLEAR TAPE MARK COUNT
  14118. STD PA
  14119. UJN SSNX RETURN
  14120. TMC SPACE 4,10
  14121. ** TMC - TAPE MARK CHECK.
  14122. *
  14123. * CALLS CHC, CLA, DCV, FAD, REL, WUD.
  14124.  
  14125.  
  14126. TMC9 AOD PB ADVANCE SECTION
  14127.  
  14128. TMC SUBR ENTRY/EXIT
  14129. RJM CLA CHECK LABELS
  14130. SBN 1
  14131. ZJN TMC2 IF TAPE MARK
  14132. LDD PA
  14133. ZJN TMC1 IF HDR1 NOT PRECEEDED BY TAPE MARK
  14134. LJM RLAX READ NEXT BLOCK
  14135.  
  14136. TMC1 LDN /MTX/LAM LABEL MISSING
  14137. LJM RET3 RETURN ERROR CODE
  14138.  
  14139. TMC2 AOD PA INCREMENT TAPE MARK COUNT
  14140. SBN 1
  14141. ZJN TMC9 IF NOT SECOND TAPE MARK
  14142. LDD UP
  14143. SHN 21-1
  14144. PJN TMC3 IF NOT *POSMF 9999*
  14145. LDN 0 CLEAR PARAMETER
  14146. STD PA
  14147. LDM UDTB+22 SET SECTION NUMBER TO ONE
  14148. SCN 77
  14149. STM UDTB+22
  14150. LDN 1
  14151. STM UDTB+23
  14152. AOM UDTB+30 INCREMENT SEQUENCE NUMBER
  14153. SHN -14
  14154. RAM UDTB+27
  14155. LDM UDTB+10 SET LABEL NOT EXPIRED
  14156. SCN 2
  14157. LMN 2
  14158. STM UDTB+10
  14159. RJM WUD REWRITE UDT
  14160. LDN /MTX/BEI SET EOI INDICATOR
  14161. LJM RET3 RETURN ERROR CODE
  14162.  
  14163. TMC3 RJM CHC CHANGE CONTROL POINTS
  14164. LDM FETO CHECK EXTENDED LABELS
  14165. SHN 21-5
  14166. PJN TMC4 IF NOT EXTENDED LABELS
  14167. RJM REL READ EXTENDED LABELS
  14168. UJN TMC5 PROCESS FILE NOT FOUND
  14169.  
  14170. TMC4 RJM FAD SET FET ADDRESS
  14171. ADN 12
  14172. CRM TMCB,ON
  14173. TMC5 LDM TMCB+4
  14174. NJN TMC6 IF FILE SEQUENCE NUMBER NOT FOUND
  14175. STD LG
  14176. UJN TMC7 INDICATE FILE IDENTIFIER NOT FOUND
  14177.  
  14178. TMC6 LDC TMCB SET BUFFER PARAMETERS
  14179. STM IBUF
  14180. STM DBUF
  14181. LDN 8D
  14182. STD T6
  14183. LDN 12D
  14184. STD T7
  14185. LDC 30003
  14186. RJM DCV CONVERT DECIMAL FIELD
  14187. LDM TMCB+6 SET SEQUENCE NUMBER DESIRED
  14188. STD LG
  14189. LDM SSNA+1 SET HIGHEST EXISTING SEQUENCE NUMBER
  14190. TMC7 STD LG+1
  14191. LDM FETO CHECK IF EXTENDED LABELS
  14192. SHN 21-5
  14193. MJN TMC8 IF EXTENDED LABELS
  14194. LDM TMCB+3 RETURN LAST SEQUENCE NUMBER FOUND
  14195. SCN 77
  14196. LMM SSNA+2
  14197. STM TMCB+3
  14198. LDM SSNA+3
  14199. STM TMCB+4
  14200. RJM FAD SET FET ADDRESS
  14201. ADN 12 RETURN LABEL INFORMATION
  14202. CWM TMCB,ON
  14203. TMC8 LDD UP SET END OF SET FLAG
  14204. LPC 7677
  14205. LMD HN
  14206. STD UP
  14207. LDN /MTX/BEI RETURN END OF SET STATUS
  14208. LJM RET3 RETURN FATAL ERROR
  14209. SPACE 4,10
  14210. ** BUFFERS.
  14211.  
  14212.  
  14213. PHDA EQU * LABEL COMPARE BUFFER
  14214. TMCB EQU * SEQUENCE NUMBER HOLD
  14215. SSNA EQU TMCB+7*5 SEQUENCE NUMBER
  14216. BUFL EQU SSNA+4 END OF BUFERS
  14217.  
  14218.  
  14219. ERROVL
  14220. PRS SPACE 4,10
  14221. ** PRS - PRESET.
  14222. *
  14223. * CALLS MCH.
  14224.  
  14225.  
  14226. PRS LDC PRSA MODIFY CHANNELS
  14227. RJM MCH
  14228. LJM PRSX RETURN
  14229.  
  14230.  
  14231. PRSA CHTB CHANNEL TABLE
  14232. OVERLAY (OPEN OPERATIONS.)
  14233. OPF SPACE 4,10
  14234. ** OPF - OPEN OPERATION.
  14235. *
  14236. * ENTRY (PB) .NE. 0 IF CHECK TYPE OF *POSMF*.
  14237. *
  14238. * CALLS CCH, CCS, CDN, DCV, ELA, FCH, FHR, GCH, OPH,
  14239. * SCH, WUD.
  14240. *
  14241. * MACROS SADT.
  14242.  
  14243.  
  14244. ENTRY OPF
  14245.  
  14246. SADT .FE,,4,A
  14247. OPF LDC * READ FET+4
  14248. CRD CN
  14249. LDD CN+3 RETURN BLOCK (PRU) SIZE
  14250. LPN 77
  14251. STD CN+3
  14252. SADT .BS
  14253. LDC *
  14254. SHN 14
  14255. STD CN+2
  14256. SHN -14
  14257. SHN 6
  14258. RAD CN+3
  14259. SADT .FE,,4,A
  14260. LDC * RETURN BLOCK SIZE
  14261. CWD CN
  14262. LDM UDTB+10 SAVE OPEN STATUS
  14263. STD CM
  14264. STM FHRB
  14265. LPC 6777 SET FILE OPENED STATUS
  14266. LMD TH
  14267. STM UDTB+10
  14268. OPFA LDN 0 FET LENGTH - 5
  14269. STD T3
  14270. SBN 10
  14271. PJN OPF4 IF FET LONG ENOUGH FOR LABEL PARAMETERS
  14272. LDM FETO
  14273. SHN 21-5
  14274. PJN OPF1 IF NOT EXTENDED LABELS
  14275. LDD T3 FET LENGTH - 5
  14276. SBN 10D-5
  14277. PJN OPF4 IF FET AT LEAST 10D WORDS LONG
  14278. OPF1 LDD LT
  14279. SHN 21-12
  14280. PJN OPF5 IF UNLABELED
  14281. SHN 21-11-21+12
  14282. MJN OPF5 IF NON-STANDARD LABEL
  14283. LDD DS
  14284. SHN 21-1
  14285. PJN OPF2 IF NOT BUSY
  14286. LDN /MTX/RBS REQUEUE ON UNIT BUSY
  14287. LJM RET5 RETURN STATUS TO MAGNET
  14288.  
  14289. OPF2 LPN 1
  14290. ZJN OPF5 IF NOT LOAD POINT
  14291. OPF3 RJM WUD REWRITE UDT
  14292. LJM RET1 RETURN
  14293.  
  14294. OPF4 LDD LT
  14295. SHN 21-12
  14296. MJN OPF6 IF LABELED
  14297. OPF5 RJM WUD
  14298. LDN /MTX/BEI
  14299. LJM RET3 RETURN ERROR CODE
  14300.  
  14301. OPF6 SHN 21-11-21+12
  14302. MJN OPF5 IF NON-STANDARD LABEL
  14303. LDM CIOE
  14304. LPN 4
  14305. ZJN OPF8 IF NOT OPEN WRITE
  14306. LDD CM
  14307. SHN 21-11
  14308. PJN OPF7 IF FIRST OPEN SINCE ASSIGNMENT
  14309. LJM OPF18 TRANSFER HEADER INFORMATION TO FET
  14310.  
  14311. OPF7 LJM OPF11 PROCESS OPEN WRITE
  14312.  
  14313. OPF8 LDM CIOE CHECK IF *POSMF*
  14314. SHN -2
  14315. LPC 377
  14316. LMN 22
  14317. STM OPFB
  14318. ZJN OPF9 IF *POSMF*
  14319. LDD DS
  14320. LPN 4
  14321. NJN OPF9 IF LOAD POINT
  14322. LJM OPF1 CHECK FOR BUSY
  14323.  
  14324. OPF9 RJM FHR FIND *HDR1* LABEL
  14325. LDM FETO
  14326. SHN 21-5
  14327. PJN OPF10 IF NOT EXTENDED LABELS
  14328. LDN 0
  14329. STD T6
  14330. STD T7
  14331. LDN ZERL
  14332. CRD CN
  14333. LDC 1
  14334. OPFB EQU *-1 *POSMF* FLAG
  14335. ZJN OPF10 IF *POSMF*
  14336. RJM ELA
  14337. ZJN OPF10 IF END OF BUFFER
  14338. CWD CN PRESET BUFFER
  14339. OPF10 RJM OPH OPEN HEADER
  14340. RJM WUD REWRITE UDT
  14341. LJM RET1 RETURN
  14342.  
  14343. OPF11 RJM FHR FIND HEADER LABEL
  14344. OPF12 LDN 0 SET TO VALIDATE NUMERIC CHARACTERS
  14345. STM DCVA
  14346. LDC BFMS SET BUFFERS
  14347. STM IBUF
  14348. LDC UDTB
  14349. STM DBUF
  14350. LDN 5 PROCESS FILE IDENTIFIER
  14351. STD T6
  14352. LDN 21D
  14353. STD T7
  14354. LDN 17D COPY CHARACTERS IF SPECIFIED
  14355. RJM CCS
  14356. OPFC LDN 41D PROCESS SET IDENTIFIER
  14357. * UJN OPF13 (*POSMF 9999* AND NOT FIRST FILE)
  14358. STD T7
  14359. LDN 6
  14360. RJM CCS
  14361. OPFD LDN 38D PROCESS FILE SECTION NUMBER
  14362. * UJN OPF13 (*POSMF 9999*)
  14363. STD T7
  14364. RJM CDN CONVERT DECIMAL NUMBER
  14365. LDN 32D PROCESS FILE SEQUENCE NUMBER
  14366. STD T6
  14367. LDN 48D
  14368. STD T7
  14369. RJM CDN CONVERT DECIMAL NUMBER
  14370. OPF13 LDN 36D PROCESS GENERATION NUMBER
  14371. STD T6
  14372. LDN 58D
  14373. STD T7
  14374. RJM CDN CONVERT DECIMAL NUMBER
  14375. LDN 40D PROCESS GENERATION VERSION NUMBER
  14376. STD T6
  14377. LDN 56D
  14378. STD T7
  14379. RJM GCH
  14380. ZJN OPF14 IF NOT SPECIFIED
  14381. SOD T6
  14382. LDC 20002
  14383. RJM DCV
  14384. UJN OPF15 SET CREATION DATE
  14385.  
  14386. OPF14 LDN 2 SET GENERATION VERSION NUMBER TO ZERO
  14387. RJM FCH
  14388. OPF15 LDN JDAL SET CREATION DATE
  14389. CRM BFMS,ON
  14390. LDN 6
  14391. STD T6
  14392. LDN 61D
  14393. STD T7
  14394. LDN 5
  14395. RJM CCH
  14396. LDN 48D PROCESS EXPIRATION DATE
  14397. STD T6
  14398. RJM GCH
  14399. NJN OPF16 IF SPECIFIED
  14400. LDN 6 DEFAULT TO TODAYS DATE
  14401. STD T6
  14402. OPF16 LDN 5
  14403. RJM CCH
  14404. LDN 54D PROCESS ACCESSIBILTIY
  14405. STD T6
  14406. LDN 47D
  14407. STD T7
  14408. RJM GCH
  14409. NJN OPF17 IF SPECIFIED
  14410. LDN 1R
  14411. OPF17 RJM SCH
  14412. OPF18 LDM OPFB
  14413. ZJN OPF19 IF *POSMF 9999*
  14414. LDC LJMI SET TO RETURN LABEL BLOCK TO FET
  14415. STM OPHA
  14416. LDC OPH6
  14417. STM OPHA+1
  14418. RJM OPH
  14419. LJM OPF5 REWRITE UDT AND EXIT WITH *BEI* ERROR
  14420.  
  14421. OPF19 LJM OPF3 REWRITE UDT AND EXIT
  14422. OPH SPACE 4,10
  14423. ** OPH - OPEN READ/ALTER.
  14424. *
  14425. * CALLS CAN, CCH, DCV, ELA, GHD, SCH.
  14426. *
  14427. * MACROS MONITOR, SADT.
  14428.  
  14429.  
  14430. OPH SUBR ENTRY/EXIT
  14431. RJM GHD PROCESS HEADER LABEL
  14432. LDN LABW
  14433. STD T1
  14434. SADT .LF
  14435. LDC *
  14436. SBD T1
  14437. MJN OPH2 IF NOT ROOM FOR LABEL IN BUFFER
  14438. LDM FETO
  14439. SHN 21-5
  14440. MJN OPH2 IF EXTENDED LABELS
  14441. SADT .FT
  14442. LDC * VALIDATE FIRST
  14443. SBN 2
  14444. PJN OPH1 IF FIRST .GT. 1
  14445. LDN /MTX/BAE BUFFER ARGUMENT ERROR
  14446. LJM RET3 RETURN ERROR CODE
  14447.  
  14448. SADT .FT,,,A
  14449. OPH1 LDC * TRANSFER HDR1
  14450. CWM BUF,T1
  14451. OPH2 LDC BFMS SET BUFFERS FOR COMPARISON
  14452. * LJM OPH6 (OPEN/WRITE)
  14453. OPHA EQU *-2
  14454. STM IBUF
  14455. LDC BUF
  14456. STM DBUF
  14457. LDN 5
  14458. STD T6
  14459. STD T7
  14460. LDN 17D COMPARE FILE IDENTIFIER
  14461. RJM CAN
  14462. NJN OPH3 IF NO COMPARE
  14463. LDN 6 COMPARE SET IDENTIFICATION
  14464. RJM CAN
  14465. NJN OPH3 IF NO COMPARE
  14466. LDN 4 COMPARE FILE SECTION NUMBER
  14467. RJM CAN
  14468. NJN OPH3 IF NO COMPARE
  14469. LDN 4 COMPARE FILE SEQUENCE NUMBER
  14470. RJM CAN
  14471. NJN OPH3 IF NO COMPARE
  14472. LDN 4 COMPARE GENERATION NUMBER
  14473. RJM CAN
  14474. OPH3 NJN OPH4 IF NO COMPARE
  14475. LDN 2 COMPARE GENERATION VERSION NUMBER
  14476. RJM CAN
  14477. NJN OPH4 IF NO COMPARE
  14478. LDN 6 COMPARE CREATION DATE
  14479. RJM CAN
  14480. NJN OPH4 IF NO COMPARE
  14481. LDN 6 COMPARE EXPIRATION DATE
  14482. RJM CAN
  14483. NJN OPH4 IF NO COMPARE
  14484. LDN 1 COMPARE ACCESSIBILITY
  14485. RJM CAN
  14486. ZJN OPH6 IF GOOD COMPARE
  14487. OPH4 STD EP SET CHARACTER POSITION REJECT OCCURRED
  14488. LDM CIOE CHECK IF *POSMF*
  14489. SHN -2
  14490. LPC 377
  14491. LMN 22
  14492. NJN OPH5 IF NOT *POSMF*
  14493. STD EP CLEAR EP
  14494. LJM OPF5 REWRITE UDT
  14495.  
  14496. OPH5 LDN /MTX/LPE SET LABEL PARAMETER ERROR
  14497. LJM RET3 RETURN ERROR CODE
  14498.  
  14499. OPH6 LDM FETO
  14500. SHN 21-5
  14501. PJN OPH8 IF NOT EXTENDED LABELS
  14502. LDM OPFB
  14503. NJN OPH7 IF NOT *POSMF*
  14504. STD T6
  14505. STD T7
  14506. LDN ZERL PRESET BUFFER
  14507. CRD CN
  14508. RJM ELA
  14509. ZJN OPH7 IF END OF BUFFER
  14510. CWD CN
  14511. OPH7 LJM OPHX RETURN
  14512.  
  14513. * BUILD FET BLOCK TO RETURN TO USER
  14514.  
  14515. OPH8 LDC BUF SET INPUT BUFFER
  14516. STM IBUF
  14517. LDC BFMS SET DESTINATION BUFFER
  14518. STM DBUF
  14519. LDN 5 COPY FILE IDENTIFIER
  14520. STD T6
  14521. LDN 1
  14522. STD T7
  14523. LDN 17D
  14524. RJM CCH
  14525. LDN 32D+1 COPY FILE SEQUENCE NUMBER
  14526. STD T6
  14527. LDN 3
  14528. RJM CCH
  14529. LDN 40D COPY GENERATION VERSION NUMBER
  14530. STD T6
  14531. LDN 2
  14532. RJM CCH
  14533.  
  14534. * RECALCULATE EXPIRATION DATE.
  14535.  
  14536. LDN CN SET DESTINATION BUFFER
  14537. STM DBUF
  14538. LDN 49D CONVERT YEAR OF EXPIRATION
  14539. STD T6
  14540. LDN 1
  14541. STD T7
  14542. LDC 20002
  14543. RJM DCV
  14544. LDN 43D CONVERT YEAR OF CREATION
  14545. STD T6
  14546. LDC 20002
  14547. RJM DCV
  14548. LDN 51D CONVERT DAY OF EXPIRATION
  14549. STD T6
  14550. LDC 20003
  14551. RJM DCV
  14552. LDN 45D CONVERT DAY OF CREATION
  14553. STD T6
  14554. LDC 20003
  14555. RJM DCV
  14556. LDN CN
  14557. RJM SCB SET CENTURY BIAS FOR YEAR OF EXPIRATION
  14558. LDN CN+1
  14559. RJM SCB SET CENTURY BIAS FOR YEAR OF CREATION
  14560. LDC 99D
  14561. LMD CN EXPIRATION YEAR
  14562. NJN OPH8.1 IF YEAR NOT 99
  14563. LDC 999D
  14564. LMD CN+2 EXPIRATION DAY
  14565. ZJN OPH11 IF INFINITE EXPIRATION DATE
  14566. OPH8.1 LDN ZERL PRESET RESULT
  14567. CRD CM
  14568. LDD CN
  14569. SBD CN+1
  14570. ZJN OPH10 IF SAME YEAR
  14571. MJN OPH13 IF LABEL EXPIRED
  14572. OPH9 LDD CN+1
  14573. LPN 3
  14574. ZJN OPH9.1 IF LEAP YEAR
  14575. LCN 1
  14576. OPH9.1 ADC 366D INCREMENT DAYS
  14577. RAD CN+2
  14578. SHN -14
  14579. NJN OPH11 IF OVERFLOW
  14580. AOD CN+1
  14581. SBD CN
  14582. NJN OPH9 IF MORE YEARS
  14583. OPH10 LDD CN+2 RETENTION DAYS
  14584. SBD CN+3
  14585. MJN OPH13 IF LABEL EXPIRED
  14586. STD CM+4
  14587. ADC -1000D
  14588. MJN OPH12 IF LESS THAN 1000 DAYS
  14589. OPH11 LDC 999D
  14590. STD CM+4
  14591. OPH12 LDD CM+4
  14592. NJN OPH14 IF NOT EXPIRED
  14593. OPH13 LDC 2R00 SET RETENTION CYCLE TO ZERO
  14594. STD CM+3
  14595. STD CM+4
  14596. UJN OPH15 STORE CHARACTERS IN BUFFER
  14597.  
  14598. OPH14 LDD MA
  14599. CWD CM
  14600. MONITOR RDCM CONVERT DATA
  14601. LDD MA
  14602. CRD CM
  14603. OPH15 LDC BFMS SET DESTINATION BUFFER
  14604. STM DBUF
  14605. LDN 23D
  14606. STD T7
  14607. LDD CM+3 STORE CHARACTERS IN BUFFER
  14608. RJM SCH
  14609. LDD CM+4
  14610. SHN -6
  14611. RJM SCH
  14612. LDD CM+4
  14613. RJM SCH
  14614. LDN 43D COPY CREATION DATE
  14615. STD T6
  14616. LDN 5
  14617. RJM CCH
  14618. LDN 22D COPY SET IDENTIFIER
  14619. STD T6
  14620. LDN 6
  14621. RJM CCH
  14622. LDN 28D FILE SECTION NUMBER
  14623. STD T6
  14624. LDN 4
  14625. RJM CCH
  14626. LDN 4
  14627. STD T1
  14628. SADT .FE,,,A
  14629. LDC *
  14630. ADN 11
  14631. CWM BFMS,T1
  14632. LJM OPHX RETURN
  14633. TITLE SUBROUTINES.
  14634. ELA SPACE 4,10
  14635. ** ELA - EXTENDED LABELS ADDRESS PROCESSING.
  14636. *
  14637. * ENTRY (T6 - T7) = POSITION TO START AT IN BUFFER.
  14638. *
  14639. * EXIT (A) = ABSOLUTE ADDRESS.
  14640. * (A) = 0, END OF LABEL BUFFER.
  14641. *
  14642. * MACROS SADT.
  14643.  
  14644.  
  14645. ELA2 LDN 0 INDICATE END OF BUFFER
  14646.  
  14647. ELA SUBR ENTRY/EXIT
  14648. SADT .FE,,,A
  14649. LDC * GET FET ADDRESS
  14650. ADN 11
  14651. CRD CM
  14652. LDD CM+3
  14653. SHN 14
  14654. STD CM+1
  14655. SHN -14
  14656. STD CM+3
  14657. SHN 14
  14658. LMD CM+4
  14659. SBN 2
  14660. MJN ELA2 IF NO LABEL BUFFER
  14661. LDD CM+2
  14662. SHN 6
  14663. LMD CM+1
  14664. STD CM+2
  14665. SHN -14
  14666. STD CM+1
  14667. LDD T6
  14668. SBD CM+1
  14669. SHN 14
  14670. ADD T7
  14671. SBD CM+2
  14672. ADN 11 ALLOW FOR LABEL
  14673. PJN ELA2 IF END OF LABEL BUFFER
  14674. LDD CM+1 CHECK IF BUFFER WITHIN FL
  14675. ADD CM+3
  14676. SHN 14
  14677. ADD CM+2
  14678. ADD CM+4
  14679. SHN -6
  14680. SBD FL
  14681. MJN ELA1 IF BUFFER WITHIN FL
  14682. LDN /MTX/BAE BUFFER ARGUMENT ERROR
  14683. LJM RET3 RETURN ERROR CODE
  14684.  
  14685. ELA1 LDD CM+3 CALCULATE LABEL ADDRESS
  14686. ADD T6
  14687. SHN 6
  14688. ADD RA
  14689. SHN 6
  14690. ADD CM+4
  14691. ADD T7
  14692. LJM ELAX RETURN
  14693. FHR SPACE 4,10
  14694. ** FHR - FIND *HDR1* LABEL.
  14695. *
  14696. * EXIT (BFMS - BFMS+47) = *HDR1* LABEL IF FOUND, OTHERWISE 0.
  14697. *
  14698. * CALLS CCH, CPO, DCV, ELA, FCH, GCD, GCH.
  14699. *
  14700. * MACROS MONITOR, SADT.
  14701.  
  14702.  
  14703. FHR SUBR ENTRY/EXIT
  14704. LDN CLBL CLEAR BUFFER
  14705. STD T1
  14706. FHR1 LDN 0
  14707. STM BFMS,T1
  14708. SOD T1
  14709. PJN FHR1 IF MORE BUFFER TO CLEAR
  14710. LDM FETO
  14711. SHN 21-5
  14712. PJN FHR2 IF NOT EXTENDED LABELS
  14713. LJM FHR14 SEARCH FOR *HDR1* IN USER BUFFER
  14714.  
  14715. FHR2 LDN 4 READ FET LABEL PARAMETERS
  14716. STD T1
  14717. SADT .FE,,,A
  14718. LDC * FET ADDRESS
  14719. ADN 11
  14720. CRM BFMS-4*5,T1
  14721. LDC BFMS-4*5 SET INPUT BUFFER ADDRESS
  14722. STM IBUF
  14723. LDC BFMS SET DESTINATION BUFFER ADDRESS
  14724. STM DBUF
  14725. LDN 1 MOVE FILE IDENTIFIER
  14726. STD T6
  14727. LDN 5
  14728. STD T7
  14729. LDN 17D
  14730. RJM CCH
  14731. LDN 32D
  14732. STD T7
  14733. LDM BFMS-4*5+10
  14734. LPN 77
  14735. SHN 14
  14736. ADM BFMS-4*5+11
  14737. ZJN FHR4 IF NO FILE SEQUENCE NUMBER
  14738. LMC 3R999
  14739. ZJN FHR3 IF *999* MUST EXPAND TO *9999*
  14740. LDC 1L0&1L9
  14741. FHR3 LMC 1L9+1
  14742. RJM FCH
  14743. LDN 3 COPY FILE SEQUENCE NUMBER
  14744. RJM CCH
  14745. FHR4 LDN 21D COPY GENERATION VERSION NUMBER
  14746. STD T6
  14747. LDN 40D
  14748. STD T7
  14749. LDN 2
  14750. RJM CCH
  14751. LDN 26D MOVE CREATION DATE
  14752. STD T6
  14753. RJM GCH
  14754. STM FHRA
  14755. ZJN FHR5 IF CREATION DATE NOT SPECIFIED
  14756. SOD T6
  14757. RJM SCF SET CENTURY FILL CHARACTER
  14758. LDN 5
  14759. RJM CCH
  14760. FHR5 LDN 23D
  14761. STD T6
  14762. RJM GCH
  14763. NJN FHR6 IF RETENTION CYCLE
  14764. LJM FHR12 COPY SET ID
  14765.  
  14766. FHR6 LDN 26D
  14767. STD T6
  14768. LDM CIOE
  14769. LPN 4
  14770. NJN FHR7 IF OPEN WRITE
  14771. RJM CPO CHECK IF *POSMF 9999*
  14772. ZJN FHR7 IF *POSMF 9999*
  14773. LDC 0 FIRST CHARACTER OF CREATION DATE
  14774. FHRA EQU *-1
  14775. NJN FHR8 IF CREATION DATE SPECIFIED
  14776. LDC UDTB DEFAULT TO CREATION DATE ON TAPE
  14777. STM IBUF
  14778. LDN 61D
  14779. STD T6
  14780. UJN FHR8 COPY EXPIRATION DATE
  14781.  
  14782. FHR7 LDN 0 SET TO VALIDATE NUMERIC CHARACTERS
  14783. STM DCVA
  14784. LDN JDAL DEFAULT TO TODAYS DATE
  14785. CRD CM
  14786. LDN CM SET INPUT BUFFER
  14787. STM IBUF
  14788. LDN 6
  14789. STD T6
  14790. FHR8 LDN 48D SET DESTINATION BUFFER ADDRESS
  14791. STD T7
  14792. RJM SCF SET CENTURY FOR EXPIRATION DATE
  14793. LDN 5 COPY EXPIRATION DATE
  14794. RJM CCH
  14795. LDC BFMS-4*5 RESET INPUT BUFFER
  14796. STM IBUF
  14797. LDN CN CHANGE DESTINATION BUFFER
  14798. STM DBUF
  14799. LDN 1 CONVERT RETENTION CYCLE
  14800. STD T7
  14801. LDN 23D
  14802. STD T6
  14803. LDC 20003
  14804. RJM DCV
  14805. LDC BFMS CONVERT DAYS FROM JULIAN DATE
  14806. STM IBUF
  14807. LDN 51D
  14808. STD T6
  14809. LDC 20003
  14810. RJM DCV
  14811. LDD CN
  14812. LMC 999D
  14813. NJN FHR9 IF NOT INDEFINITE
  14814. LDC 2R99 SET TO YEAR 99
  14815. STM BFMS+30
  14816. LJM FHR11 COPY 999 TO DAYS OF EXPIRATION DATE
  14817.  
  14818. FHR9 LDD CN+1 GET TOTAL NUMBER OF DAYS
  14819. RAD CN
  14820. LDN 49D CONVERT CREATION YEAR
  14821. STD T6
  14822. LDC 20002
  14823. RJM DCV
  14824. LDD CN+2
  14825. LPN 3
  14826. ZJN FHR10 IF LEAP YEAR
  14827. LDN 1
  14828. FHR10 ADC -366D
  14829. ADD CN
  14830. MJN FHR11 IF WITHIN THE CURRENT YEAR
  14831. ZJN FHR11 IF LAST DAY OF CURRENT YEAR
  14832. STD CN
  14833. AOD CN+2
  14834. AOM BFMS+30
  14835. LPN 77
  14836. LMN 1R9+1
  14837. NJN FHR10 IF NO ROLLOVER
  14838. LCN 1R9+1-1R0
  14839. RAM BFMS+30
  14840. UJN FHR10 CONTINUE RETENTION CYCLE CONVERSION
  14841.  
  14842. FHR11 LDN ZERL CONVERT REMAINING DAYS
  14843. CRD CM
  14844. LDD CN
  14845. STD CM+4
  14846. LDD MA
  14847. CWD CM
  14848. MONITOR RDCM
  14849. LDD MA
  14850. CRD CM
  14851. LDD CM+4
  14852. SCN 77
  14853. SHN 6
  14854. LMD CM+3
  14855. SHN 6
  14856. STM BFMS+31
  14857. LDD CM+4
  14858. LPN 77
  14859. SHN 6
  14860. STD CM+4
  14861. LDM BFMS+32
  14862. LPN 77
  14863. LMD CM+4
  14864. STM BFMS+32
  14865. LDC BFMS-4*5 RESET INPUT BUFFER ADDRESS
  14866. STM IBUF
  14867. FHR12 LDC BFMS RESTORE DESTINATION BUFFER ADDRESS
  14868. STM DBUF
  14869. LDN 31D MOVE SET IDENTIFICATION
  14870. STD T6
  14871. LDN 22D
  14872. STD T7
  14873. LDN 6
  14874. RJM CCH
  14875. LDN 4 MOVE FILE SECTION NUMBER
  14876. RJM CCH
  14877. LJM FHR20 CHECK FOR *POSMF*
  14878.  
  14879. FHR13 LDN /MTX/IXL INCORRECT CHARACTER COUNT IN HEADER
  14880. LJM RET3 RETURN ERROR CODE
  14881.  
  14882. * GET LABEL FROM USER BUFFER.
  14883.  
  14884. FHR14 LDN 0 SEARCH FOR *HDR1*
  14885. STD T6
  14886. STD T7
  14887. FHR15 RJM ELA
  14888. ZJN FHR17 IF END OF LABEL BUFFER
  14889. CRD CN
  14890. ADN 1
  14891. CRD CM
  14892. LDD CN+4
  14893. ZJN FHR17 IF END OF LABELS IN BUFFER
  14894. LMC 80D
  14895. NJN FHR13 IF NOT CORRECT LENGTH
  14896. LDD CM
  14897. LMC 2RHD
  14898. NJN FHR16 IF NOT *HD*
  14899. LDD CM+1
  14900. LMC 2RR1
  14901. ZJN FHR19 IF *R1*
  14902. FHR16 LDN 11 ADVANCE LABEL BUFFER POINTER
  14903. RAD T7
  14904. SHN -14
  14905. RAD T6
  14906. UJN FHR15 CONTINUE SEARCH
  14907.  
  14908. FHR17 LDM OPFB
  14909. NJN FHR18 IF NOT *POSMF*
  14910. LDN /MTX/BAE *BUFFER ARGUMENT ERROR.*
  14911. LJM RET3 RETURN ERROR CODE
  14912.  
  14913. FHR18 LJM FHRX RETURN
  14914.  
  14915. FHR19 LDN 10 READ UP LABEL
  14916. STD T5
  14917. RJM ELA SKIP HEADER WORD
  14918. ADN 1
  14919. CRM BFMS,T5
  14920. FHR20 LDM OPFB
  14921. NJN FHR18 IF NOT *POSMF*
  14922. LDD PB
  14923. NJN FHR22 IF CHECK TYPE OF *POSMF*
  14924. LDD UP
  14925. SHN 21-1
  14926. PJN FHR18 IF NOT *POSMF 9999*
  14927. LDD UP CLEAR *POSMF 9999* IN PROGRESS
  14928. SCN 2
  14929. STD UP
  14930. LDM FHRC
  14931. STM OPFD
  14932. LDM UDTB+10 SET LABEL EXPIRED
  14933. SCN 2
  14934. LMN 2
  14935. STM UDTB+10
  14936. LDM UDTB+27 CHECK FILE NUMBER
  14937. LPN 77
  14938. SHN 14
  14939. ADM UDTB+30
  14940. LMN 1
  14941. ZJN FHR21 IF POSITIONED AT FIRST FILE
  14942. LDM FHRD SKIP TRANSFER OF SETID
  14943. STM OPFC
  14944. FHR21 LJM OPF12 RETURN TO TRANSFER FET TO UDT
  14945.  
  14946. * CHECK IF *POSMF 9999* AND IF REWIND IS REQUIRED. IF
  14947. * IT IS A *POSMF 9999*, THE *BEI* ERROR CODE IS RETURNED
  14948. * TO *MAGNET*. IF NOT *POSMF 9999*, NO ERROR CODE
  14949. * IS RETURNED AND REWIND STATUS IS INDICATED BY
  14950. * RETURNING (PA) = 0 IF REWIND IS NEEDED AND (PA) .NE. 0
  14951. * IF REWIND IS NOT NEEDED.
  14952.  
  14953. FHR22 LDN 0 SET EXIT CONDITION
  14954. STD PA
  14955. LDD UP PRESET TYPE OF *POSMF*
  14956. SCN 2
  14957. STD UP
  14958. RJM CPO CHECK IF *9999*
  14959. NJN FHR23 IF NOT *9999*
  14960. LDN 2 SET *POSMF 9999* IN PROGRESS
  14961. RAD UP
  14962. LDN /MTX/BEI RETURN *POSMF 9999* INDICATION
  14963. LJM RET3 RETURN ERROR CODE
  14964.  
  14965. FHR23 LDD UP CHECK WRITE STATUS
  14966. SHN 21-4
  14967. MJN FHR25 IF LAST OPERATION WRITE - REWIND
  14968. LDC BFMS SET BUFFER ADDRESSES
  14969. STM DBUF
  14970. STM IBUF
  14971. LDN 32D GET FIRST CHARACTER OF SEQUENCE NUMBER
  14972. STD T7
  14973. RJM GCD GET CHARACTER
  14974. NJN FHR26 IF SEQUENCE NUMBER SPECIFIED
  14975. LDN 5
  14976. STD T7
  14977. RJM GCD GET CHARACTER
  14978. NJN FHR25 IF FI SPECIFIED - REWIND REQUIRED
  14979. LDC * SET TO LABEL FLAGS IN UDT WORD *UVSN*
  14980. FHRB EQU *-1
  14981. SHN 21-11
  14982. PJN FHR25 IF FIRST OPEN SINCE ASSIGNMENT
  14983. FHR24 LDN 1 SET NO REWIND REQUIRED
  14984. STD PA
  14985. FHR25 LJM RET1 RETURN
  14986.  
  14987. FHR26 LDN 32D CONVERT FET SEQUENCE NUMBER TO BINARY
  14988. STD T6
  14989. LDN 2
  14990. STD T7
  14991. LDC 30004 CONVERT DECIMAL FIELD
  14992. RJM DCV
  14993. LDM UDTB+27 CLEAR ACCESSIBILITY CHARACTER
  14994. LPN 77
  14995. STM UDTB+27
  14996. LDM BFMS COMPARE UDT TO FET SEQUENCE NUMBER
  14997. LPN 77
  14998. SBM UDTB+27
  14999. MJN FHR25 IF REWIND REQUIRED
  15000. NJN FHR24 IF NO REWIND REQUIRED
  15001. LDM BFMS+1
  15002. SBM UDTB+30
  15003. MJN FHR25 IF REWIND REQUIRED
  15004. ZJN FHR25 IF REWIND REQUIRED
  15005. UJN FHR24 SET NO REWIND REQUIRED
  15006.  
  15007.  
  15008. FHRC BSS 0
  15009. LOC OPFD
  15010. UJN OPF13 SKIP FILE SEQUENCE NUMBER CONVERSION
  15011. LOC *O
  15012.  
  15013. FHRD BSS 0
  15014. LOC OPFC
  15015. UJN OPF13 SKIP TRANSFER OF SETID
  15016. LOC *O
  15017. GHD SPACE 4,10
  15018. ** GHD - GENERATE *HDR1* LABEL FROM UDT.
  15019. *
  15020. * EXIT (BUF - BUF+50) = *HDR1* LABEL FROM CHARACTER POSITION
  15021. * 5 TO 55.
  15022. *
  15023. * CALLS CBD, CCH, SCH.
  15024.  
  15025.  
  15026. GHD SUBR ENTRY/EXIT
  15027. LDN CLBL CLEAR BUFFER
  15028. STD T1
  15029. GHD1 LDN 0
  15030. STM BUF,T1
  15031. SOD T1
  15032. PJN GHD1 IF MORE BUFFER TO CLEAR
  15033. LDC UDTB SET INPUT BUFFER
  15034. STM IBUF
  15035. LDC BUF SET DESTINATION BUFFER
  15036. STM DBUF
  15037. LDC 2RHD SET *HDR1* IN BUFFER
  15038. STM BUF
  15039. LDC 2RR1
  15040. STM BUF+1
  15041. LDN 21D MOVE FILE IDENTIFIER
  15042. STD T6
  15043. LDN 5
  15044. STD T7
  15045. LDN 17D
  15046. RJM CCH
  15047. LDN 41D MOVE SET IDENTIFIER
  15048. STD T6
  15049. LDN 6
  15050. RJM CCH
  15051. LDN 38D CONVERT FILE SECTION NUMBER
  15052. STD T6
  15053. LDC 30004
  15054. RJM CBD
  15055. LDN 48D CONVERT FILE SEQUENCE NUMBER
  15056. STD T6
  15057. LDC 30004
  15058. RJM CBD
  15059. LDN 58D CONVERT GENERATION NUMBER
  15060. STD T6
  15061. LDC 30004
  15062. RJM CBD
  15063. LDN 56D CONVERT GENERATION VERSION NUMBER
  15064. STD T6
  15065. LDC 20002
  15066. RJM CBD
  15067. LDN 61D PROCESS CREATION DATE
  15068. STD T6
  15069. RJM SCF SET CREATION DATE CENTURY CHARACTER
  15070. LDN 5 COPY CREATION DATE
  15071. RJM CCH
  15072. RJM SCF SET EXPIRATION DATE CENTURY CHARACTER
  15073. LDN 5 COPY CREATION DATE
  15074. RJM CCH
  15075. LDN 47D COPY ACCESSIBILITY
  15076. STD T6
  15077. LDN 1
  15078. RJM CCH
  15079. LJM GHDX RETURN
  15080. TITLE CHARACTER PROCESSING SUBROUTINES.
  15081. SPACE 4,10
  15082. ** DIRECT CELL USAGE IN FOLLOWING ROUTINES.
  15083. *
  15084. * ENTRY (T5) = NUMBER OF CHARACTERS.
  15085. * (T6) = CHARACTER POSITION IN INPUT BUFFER.
  15086. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  15087. *
  15088. * ALL CHARACTER POSITIONS ARE REFERENCED STARTING WITH *1*.
  15089. * THUS, THE CHARACTER POSITION VALUES BEING USED TO ACCESS
  15090. * *BUF* MAY BE REFERENCED DIRECTLY TO THE LABEL STANDARD.
  15091.  
  15092.  
  15093. IBUF CON UDTB FWA OF FETCH BUFFER
  15094. DBUF CON BUF FWA OF DESTINATION BUFFER
  15095. CAN SPACE 4,15
  15096. ** CAN - COMPARE ALPHANUMERIC FIELDS.
  15097. * COMPARE WILL BE GOOD IF ALL OF INPUT CHARACTER STRING IS
  15098. * BINARY ZERO.
  15099. *
  15100. * ENTRY (A) = NUMBER OF CHARACTERS TO COMPARE.
  15101. * (T6) = CHARACTER POSITION IN INPUT BUFFER.
  15102. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  15103. *
  15104. * EXIT (A) = 0, GOOD COMPARE.
  15105. * (A) .NE. 0, (A) = CHARACTER POSITION AT START.
  15106. * (T6), (T7) = UPDATED.
  15107. *
  15108. * USES T3, T4.
  15109. *
  15110. * CALLS GCD, GCH.
  15111.  
  15112.  
  15113. CAN5 SOD T5 UPDATE TO SKIP REMAINDER OF FIELD
  15114. RAD T6
  15115. LDD T5
  15116. RAD T7
  15117. LDD T3
  15118.  
  15119. CAN SUBR ENTRY/EXIT
  15120. STD T5
  15121. STD T4
  15122. LDD T6 SAVE STARTING POSITION
  15123. STD T3
  15124. CAN1 RJM GCH GET CHARACTER
  15125. NJN CAN2 IF SPECIFIED
  15126. SOD T4
  15127. NJN CAN1 IF MORE CHARACTERS TO CHECK
  15128. LDD T5
  15129. RAD T7
  15130. LDN 0 GOOD COMPARE
  15131. UJN CANX RETURN
  15132.  
  15133. CAN2 LDD T3 RESET CHARACTER POSITION
  15134. STD T6
  15135. CAN3 RJM GCH GET CHARACTER
  15136. STD T4
  15137. NJN CAN4 IF NOT 00 CHARACTER
  15138. LDN 1R
  15139. STD T4
  15140. CAN4 RJM GCD GET CHARACTER FROM DESTINATION BUFFER
  15141. LMD T4
  15142. NJN CAN5 IF NO COMPARE
  15143. SOD T5
  15144. NJN CAN3 IF MORE CHARACTERS TO COMPARE
  15145. UJN CANX RETURN
  15146. CBD SPACE 4,15
  15147. ** CBD - CONVERT BINARY FIELD TO DECIMAL.
  15148. *
  15149. * ENTRY (A, 21 - 14) = NUMBER OF CHARACTERS IN BINARY FIELD
  15150. * MAXIMUM OF 4.
  15151. * (A, 13 - 0) = NUMBER OF DISPLAY CODE CHARACTERS TO
  15152. * STORE WITH A MAXIMUM OF 6.
  15153. *
  15154. * EXIT RESULT STORED IN DESTINATION BUFFER.
  15155. *
  15156. * CALLS GCH, SCH.
  15157. *
  15158. * MACROS MONITOR.
  15159.  
  15160.  
  15161. CBD SUBR ENTRY/EXIT
  15162. STD T5
  15163. SHN -14
  15164. STD T4
  15165. LDN ZERL PRESET FIELD TO CONVERT
  15166. CRD CM
  15167. CBD1 LDD CM+3 MOVE UP FIELD
  15168. SHN 6
  15169. STD CM+3
  15170. LDD CM+4
  15171. SHN 6
  15172. STD CM+4
  15173. SHN -14
  15174. RAD CM+3
  15175. RJM GCH GET CHARACTER
  15176. RAD CM+4
  15177. SOD T4
  15178. NJN CBD1 IF MORE FIELD POSITIONS
  15179. LDD MA CONVERT DATA
  15180. CWD CM
  15181. MONITOR RDCM
  15182. LDD MA
  15183. CRD CM
  15184. LDD CM+3 REMOVE *.* FROM DATA
  15185. LPN 77
  15186. SHN 14
  15187. LMD CM+2
  15188. SHN 6
  15189. STD CM+3
  15190. LMD CM+3
  15191. LMD CM+1
  15192. SHN 6
  15193. STD CM+2
  15194. LDN CM+1 REMOVE SPACES
  15195. STD T1
  15196. CBD2 AOD T1 ADVANCE TO NEXT BYTE
  15197. LMN CM+5
  15198. ZJN CBD5 IF ALL SPACES
  15199. LDI T1
  15200. ZJN CBD3 IF ZERO
  15201. LMC 2R
  15202. NJN CBD4 IF NOT * *
  15203. CBD3 LDC 2R00
  15204. STI T1
  15205. UJN CBD2 LOOP
  15206.  
  15207. CBD4 SHN -6
  15208. NJN CBD5 IF NOT * *
  15209. LCN -1R0+1R
  15210. SHN 6
  15211. RAI T1
  15212. CBD5 LDM CBDA,T5 SET TO ENTER STORE LOOP
  15213. STD T1
  15214. LJM 0,T1 STORE CHARACTERS
  15215.  
  15216. CBD6 LDD CM+2 STORE SIXTH CHARACTER
  15217. SHN -6
  15218. RJM SCH
  15219. CBD7 LDD CM+2 STORE FIFTH CHARACTER
  15220. RJM SCH
  15221. CBD8 LDD CM+3 STORE FOURTH CHARACTER
  15222. SHN -6
  15223. RJM SCH
  15224. CBD9 LDD CM+3 STORE THIRD CHARACTER
  15225. RJM SCH
  15226. CBD10 LDD CM+4 STORE SECOND CHARACTER
  15227. SHN -6
  15228. RJM SCH
  15229. CBD11 LDD CM+4 STORE FIRST CHARACTER
  15230. RJM SCH
  15231. LJM CBDX RETURN
  15232.  
  15233. CBDA BSS 0 INDEXED BY NUMBER OF CHARACTERS TO STORE
  15234. LOC 0
  15235. CON CBDX
  15236. CON CBD11
  15237. CON CBD10
  15238. CON CBD9
  15239. CON CBD8
  15240. CON CBD7
  15241. CON CBD6
  15242. LOC *O
  15243. CCH SPACE 4,15
  15244. ** CCH - COPY INPUT BUFFER TO DESTINATION BUFFER.
  15245. *
  15246. * ENTRY (A) = NUMBER OF CHARACTERS TO MOVE.
  15247. * (T6) = CHARACTER POSITION IN INPUT BUFFER.
  15248. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  15249. *
  15250. * EXIT (T6), (T7) = INCREMENTED.
  15251. *
  15252. * USES T5.
  15253. *
  15254. * CALLS GCH, SCH.
  15255.  
  15256.  
  15257. CCH SUBR ENTRY/EXIT
  15258. STD T5
  15259. CCH1 RJM GCH GET LABEL CHARACTER
  15260. RJM SCH STORE CHARACTER IN USER BUFFER
  15261. SOD T5
  15262. NJN CCH1 IF MORE CHARACTERS TO MOVE
  15263. UJN CCHX RETURN
  15264. CCS SPACE 4,15
  15265. ** CCS - COPY CHARACTERS IF SPECIFIED.
  15266. * CHECKS FIELD FOR ALL ZEROES. IF ALL ZEROES, FIELD IS SPACE
  15267. * FILLED. OTHERWISE FIELD IS COPIED FROM INPUT BUFFER TO
  15268. * DESTINATION BUFFER.
  15269. *
  15270. * ENTRY (A) = NUMBER OF CHARACTERS TO PROCESS.
  15271. * (T6) = INPUT BUFFER POSITION.
  15272. * (T7) = DESTINATION BUFFER POSITION.
  15273. *
  15274. * EXIT (T6), (T7) = INCREMENTED.
  15275. *
  15276. * USES T5.
  15277. *
  15278. * CALLS FCH, GCH, SCH.
  15279.  
  15280.  
  15281. CCS2 LDD MA COPY FIELD
  15282. CRD T3
  15283. LDD T5
  15284. CCS3 RJM GCH GET LABEL CHARACTER
  15285. NJN CCS4 IF NOT 00 CHARACTER
  15286. LDN 1R
  15287. CCS4 RJM SCH STORE CHARACTER IN DESTINATION BUFFER
  15288. SOD T5
  15289. NJN CCS3 IF MORE CHARACTERS TO MOVE
  15290.  
  15291. CCS SUBR ENTRY/EXIT
  15292. STD T5
  15293. LDD MA SAVE DIRECT CELLS
  15294. CWD T3
  15295. CCS1 RJM GCH GET CHARACTER
  15296. NJN CCS2 IF FIELD SPECIFIED
  15297. SOD T5
  15298. NJN CCS1 IF MORE CHARACTERS TO CHECK
  15299. LDD MA SET DEFAULTS
  15300. CRD T3
  15301. LDD T5
  15302. RAD T6
  15303. LDD T5
  15304. ADC 1L
  15305. RJM FCH
  15306. UJN CCSX RETURN
  15307. CDN SPACE 4,10
  15308. ** CDN - CONVERT DECIMAL FIELD (4 CHARACTERS).
  15309. * IF FIELD IS NOT DEFINED, A DEFAULT OF 1 IS SET.
  15310. *
  15311. * ENTRY (T6) = CHARACTER POSITION IN INPUT BUFFER.
  15312. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  15313. *
  15314. * CALLS DCV, GCH, SCH.
  15315.  
  15316.  
  15317. CDN1 LDN 0 SET DEFAULT
  15318. RJM SCH
  15319. LDN 0
  15320. RJM SCH
  15321. LDN 1
  15322. RJM SCH
  15323.  
  15324. CDN SUBR ENTRY/EXIT
  15325. RJM GCH GET CHARACTER
  15326. ZJN CDN1 IF FIELD NOT DEFINED
  15327. SOD T6
  15328. LDC 30004
  15329. RJM DCV
  15330. UJN CDNX RETURN
  15331. CPO SPACE 4,10
  15332. ** CPO - CHECK IF *POSMF 9999*.
  15333. * MUST BE CALLED AFTER LABEL IS TRANSFERRED TO BFMS.
  15334. *
  15335. * EXIT (A) = 0 IF *POSMF 9999*
  15336. * (DBUF) = BFMS.
  15337. * (IBUF) = CPOA.
  15338. *
  15339. * CALLS CAN.
  15340. *
  15341. * USES T6, T7.
  15342.  
  15343.  
  15344. CPO SUBR ENTRY/EXIT
  15345. LDM OPFB
  15346. NJN CPOX IF NOT *POSMF*
  15347. LDC CPOA CHECK SEQUENCE NUMBER
  15348. STM IBUF
  15349. LDC BFMS
  15350. STM DBUF
  15351. LDN 1
  15352. STD T6
  15353. LDN 32D
  15354. STD T7
  15355. LDN 4
  15356. RJM CAN COMPARE FIELDS
  15357. UJN CPOX RETURN
  15358.  
  15359.  
  15360. CPOA DATA H*9999*
  15361. DCV SPACE 4,15
  15362. ** DCV - CONVERT DECIMAL FIELD TO BINARY.
  15363. *
  15364. * ENTRY (A, 13 - 12) = NUMBER OF CHARACTER POSITIONS IN RESULT.
  15365. * (A, 11 - 0) = NUMBER OF CHARACTERS IN LABEL FIELD.
  15366. * (T6) = CHARACTER POSITION IN INPUT BUFFER.
  15367. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  15368. *
  15369. * EXIT (T6), (T7) = INCREMENTED.
  15370. *
  15371. * USES T1 - T5.
  15372. *
  15373. * CALLS GCH, SCH.
  15374.  
  15375.  
  15376. DCV7 LDN /MTX/IXL INCORRECT LABEL FIELD
  15377. LJM RET3 RETURN ERROR CODE
  15378.  
  15379. DCV SUBR ENTRY/EXIT
  15380. STD T5 NUMBER OF CHARACTERS IN LABEL
  15381. SHN -14
  15382. STD T4 NUMBER OF CHARACTER POSITIONS IN UDT
  15383. LDN 0 PRESET RESULT
  15384. STD T2
  15385. STD T3
  15386. DCV1 RJM GCH GET CHARACTER
  15387. STD T1
  15388. SBN 1R0
  15389. RAD T3
  15390. SHN -14
  15391. RAD T2
  15392. DCVA UJN DCV2 DO NOT VALIDATE CHARACTER
  15393. * PSN (OPEN WRITE OR POSMF 9999)
  15394.  
  15395. LDD T1
  15396. SBN 1R0
  15397. MJN DCV7 IF NOT NUMERIC CHARACTER
  15398. SBN 1R9-1R0+1
  15399. PJN DCV7 IF NOT NUMERIC CHARACTER
  15400. DCV2 SOD T5 DECREMENT NUMBER OF CHARACTERS TO PROCESS
  15401. ZJN DCV3 IF ALL DIGITS PROCESSED
  15402. LDD T2 10D * ACCUMALATED RESULT
  15403. SHN 14
  15404. ADD T3
  15405. SHN 2+6 * 4
  15406. ADD T2 * 5
  15407. SHN 14
  15408. ADD T3
  15409. SHN 1 * 10D
  15410. STD T3
  15411. SHN -14
  15412. STD T2
  15413. UJN DCV1 LOOP
  15414.  
  15415. DCV3 LDD T4
  15416. LMN 3
  15417. NJN DCV4 IF NOT 3 CHARACTER POSITIONS
  15418. LDD T2 STORE VALUE
  15419. RJM SCH STORE CHARACTER
  15420. UJN DCV5 STORE REMAINING CHARACTERS
  15421. DCV4 LMN 2&3
  15422. NJN DCV6 IF NOT 2 CHARACTER POSIITONS
  15423. DCV5 LDD T3 STORE VALUE
  15424. SHN -6
  15425. RJM SCH STORE CHARACTER
  15426. DCV6 LDD T3
  15427. LPN 77
  15428. RJM SCH STORE CHARACTER
  15429. LJM DCVX RETURN
  15430. FCH SPACE 4,15
  15431. ** FCH - FILL DESTINATION BUFFER WITH CHARACTER(S).
  15432. *
  15433. * ENTRY (A, 17- 12) = CHARACTER TO FILL WITH.
  15434. * (A, 11 - 0) = NUMBER OF CHARACTERS TO FILL.
  15435. * (T7) = CHARACTER POINTER IN DESTINATION BUFFER.
  15436. *
  15437. * EXIT (T7) = INCREMENTED.
  15438. *
  15439. * USES T4.
  15440. *
  15441. * CALLS SCH.
  15442.  
  15443.  
  15444. FCH SUBR ENTRY/EXIT
  15445. STD T5 SAVE COUNT
  15446. SHN -14
  15447. STD T4 SAVE FILL VALUE
  15448. FCH1 LDD T4 STORE CHARACTER
  15449. RJM SCH
  15450. SOD T5
  15451. NJN FCH1 IF MORE TO FILL
  15452. UJN FCHX RETURN
  15453. GCD SPACE 4,10
  15454. ** GCD - GET CHARACTER FROM DESTINATION BUFFER.
  15455. *
  15456. * ENTRY (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  15457. *
  15458. * EXIT (A) = CHARACTER.
  15459. * (T7) = INCREMENTED.
  15460. *
  15461. * USES T1.
  15462.  
  15463.  
  15464. GCD1 LDM -1,T1
  15465. LPN 77
  15466.  
  15467. GCD SUBR ENTRY/EXIT
  15468. AOD T7
  15469. SBN 1
  15470. SHN 21
  15471. ADM DBUF
  15472. STD T1
  15473. SBM DBUF
  15474. SHN -21
  15475. ZJN GCD1 IF LOWER 6 BITS
  15476. LDI T1
  15477. SHN -6
  15478. UJN GCDX RETURN
  15479. GCH SPACE 4,10
  15480. ** GCH - GET CHARACTER FROM INPUT BUFFER.
  15481. *
  15482. * ENTRY (T6) = CHARACTER POSITION IN INPUT BUFFER.
  15483. *
  15484. * EXIT (A) = CHARACTER.
  15485. * (T6) = INCREMENTED.
  15486. *
  15487. * USES T1.
  15488.  
  15489.  
  15490. GCH1 LDM -1,T1
  15491. LPN 77
  15492.  
  15493. GCH SUBR ENTRY/EXIT
  15494. AOD T6
  15495. SBN 1
  15496. SHN 21
  15497. ADM IBUF
  15498. STD T1
  15499. SBM IBUF
  15500. SHN -21
  15501. ZJN GCH1 IF LOWER 6 BITS
  15502. LDI T1
  15503. SHN -6
  15504. UJN GCHX RETURN
  15505. SCB SPACE 4,10
  15506. ** SCB - SET CENTURY BIAS.
  15507. * ADJUSTS BINARY YEAR TO NEXT CENTURY IF REQUIRED.
  15508. *
  15509. * ENTRY (A) = ADDRESS OF CELL CONTAINING YEAR.
  15510. *
  15511. * EXIT ((A)) ADJUSTED UPWARD BY 100D IF ORIGINALLY .LT. 70D.
  15512. *
  15513. * USES T0.
  15514.  
  15515.  
  15516. SCB SUBR ENTRY/EXIT
  15517. STD T0 SAVE ADDRESS OF YEAR
  15518. LDI T0
  15519. SBK 70D
  15520. PJN SCBX IF YEAR .LE. 1999
  15521. LDC 100D ADJUST YEAR TO NEXT CENTURY
  15522. RAI T0
  15523. UJN SCBX RETURN
  15524. SCF SPACE 4,10
  15525. ** SCF - SET CENTURY FILL CHARACTER.
  15526. * GENERATES THE *ISO* STANDARD CENTURY CHARACTER, BASED ON THE
  15527. * YEAR IN THE INPUT BUFFER, AND PLACES IT IN THE OUTPUT BUFFER.
  15528. *
  15529. * ENTRY (T6) = CHARACTER POSITION OF YEAR IN INPUT BUFFER.
  15530. * (T7) = CHARACTER POSITION IN OUTPUT BUFFER.
  15531. *
  15532. * EXIT FILL CHARACTER PLACED IN OUTPUT BUFFER,
  15533. * (* * FOR 19XX YEARS, *0* FOR 20XX YEARS).
  15534. * (T6) = (A) = ORIGINAL (T6).
  15535. * (T7) INCREMENTED.
  15536. *
  15537. * CALLS GCH, SCH.
  15538. *
  15539. * USES T6.
  15540.  
  15541.  
  15542. SCF1 LDN 1R SPACE FILL
  15543. SCF2 RJM SCH
  15544. SOD T6
  15545.  
  15546. SCF SUBR ENTRY/EXIT
  15547. RJM GCH GET TENS DIGIT OF YEAR
  15548. SBN 1R7
  15549. PJN SCF1 IF YEAR .LE. 1999
  15550. LDN 1R0 ZERO FILL FOR NEXT CENTURY
  15551. UJN SCF2 STORE CHARACTER AND RETURN
  15552. SCH SPACE 4,10
  15553. ** SCH - STORE CHARACTER IN DESTINATION BUFFER.
  15554. *
  15555. * ENTRY (A) = CHARACTER.
  15556. * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
  15557. *
  15558. * EXIT (T7) = INCREMENTED.
  15559. *
  15560. * USES T1.
  15561.  
  15562.  
  15563. SCH1 LDM -1,T1
  15564. SCN 77
  15565. LMD T0
  15566. SCH2 STM -1,T1
  15567.  
  15568. SCH SUBR ENTRY/EXIT
  15569. LPN 77
  15570. STD T0 SAVE CHARACTER
  15571. AOD T7 INCREMENT POSITION
  15572. SHN 21 SET BYTE ADDRESS
  15573. ADM DBUF
  15574. STD T1
  15575. SBM DBUF
  15576. SHN -21
  15577. NJN SCH1 IF EVEN CHARACTER
  15578. LDM -1,T1
  15579. LPN 77
  15580. SHN 14
  15581. LMD T0
  15582. SHN 6
  15583. UJN SCH2 STORE CHARACTER
  15584. UDA SPACE 4,10
  15585. ** UDA - UDT ADDRESS OF LABEL PARAMETERS (UUFN)
  15586. *
  15587. * EXIT (T1) = WORD COUNT TO WRITE.
  15588. *
  15589. * CALLS UAD.
  15590.  
  15591.  
  15592. UDA SUBR ENTRY/EXIT
  15593. LDN /MTX/UUDTL
  15594. STD T1
  15595. RJM UAD
  15596. ADN /MTX/UUFN
  15597. UJN UDAX RETURN
  15598. WUD SPACE 4,10
  15599. ** WUD - WRITE UNIT DESCRIPTOR TABLE.
  15600. * OPERATION ONLY PERFORMED IF AT MAGNET CP.
  15601. *
  15602. * CALLS CEC, UDA.
  15603.  
  15604.  
  15605. WUD SUBR ENTRY/EXIT
  15606. LDM CECB
  15607. LPN 77
  15608. ZJN WUD1 IF AT MAGNET CP
  15609. LDN 0 CHNAGE TO MAGNET CP
  15610. RJM CEC
  15611. WUD1 RJM UDA GET UDT LABEL ADDRESS ADDRESS
  15612. CWM UDTB,T1
  15613. UJN WUDX RETURN
  15614. SPACE 4,10
  15615. ** ADDRESS RELOCATION.
  15616.  
  15617.  
  15618. TADD TSAD ADDRESS RELOCATION TABLE
  15619.  
  15620. PRS SPACE 4,10
  15621. ** PRS - PRESET.
  15622. *
  15623. * CALLS MCH, UDA.
  15624.  
  15625.  
  15626. PRS LDC PRSA MODIFY CHANNELS
  15627. RJM MCH
  15628. LDC /SRU/ITCL*100 SET SRU INCREMENT
  15629. STM //CECA
  15630. LDN F0040
  15631. STM //ITMA
  15632. LDC TADD SET UP FOR ADDRESS RELOCATION
  15633. STD CN
  15634. RJM UDA
  15635. CRM UDTB,T1
  15636. SBN /MTX/UUFN+/MTX/UUDTL-/MTX/UCIA
  15637. CRD T1 GET FET LENGTH - 5
  15638. LDD T1+1
  15639. SHN -6
  15640. RAM OPFA
  15641. LJM PRSX RETURN
  15642.  
  15643.  
  15644. PRSA CHTB CHANNEL TABLE
  15645. SPACE 4,10
  15646. ERROVL
  15647. SPACE 4,10
  15648. ** BUFFERS.
  15649.  
  15650.  
  15651. UDTB EQU PRSA
  15652. UDTBL EQU UDTB+/MTX/UUDTL*5
  15653. BUF EQU UDTBL
  15654. OVERLAY (TAPE POSITIONING OPERATIONS.),(/READ/OVLS+5),,SKP
  15655. SKP SPACE 4,10
  15656. ** SKP - SKIP.
  15657. * THIS ROUTINE SKIPS BLOCKS IN A FORWARD DIRECTION. *SKP* IS
  15658. * OVERLAYED BY *SKR* FOR SKIP REVERSE.
  15659. *
  15660. * EXIT TO *RET1* OF NORMAL COMPLETION.
  15661. * TO *RET2* IF DROP OUT BLOCK COUNT REACHED.
  15662. * TO *RET3* IF TAPE MARK.
  15663. *
  15664. * CALLS DBF, SLL, /READ/RDF, UAD.
  15665.  
  15666.  
  15667. ENTRY SKP FROM *PRS*
  15668. SKP BSS 0
  15669. .OSKR EQU *
  15670.  
  15671. SKP1 LDN 0
  15672. STM IDFE CLEAR CHUNK COUNT FOR LI FORMAT
  15673. LJM /READ/RDF READ TAPE (RETURN AT *SKP2*)
  15674.  
  15675. SKP2 UJN SKP3 NOT SI FORMAT, 9/18 TRACK
  15676. SKPA EQU *-1
  15677. * LDD ES (9/18 TRACK SI FORMAT)
  15678. LPN 40
  15679. ZJN SKP3 IF NO FILL STATUS
  15680. SOD BY ADJUST BYTE COUNT
  15681. SKP3 RJM DBF DETERMINE BLOCK TYPE FORWARD
  15682. AOD BL+1 INCREMENT BLOCK COUNTER
  15683. SHN -14
  15684. RAD BL
  15685. LDD T2
  15686. LMN 14
  15687. SKPB UJN SKP6 IF NOT TAPE MARK
  15688. * NJN SKP6 (LABELED OR I/SI/LI FORMAT)
  15689. SOD BL+1 ADJUST BLOCK COUNT
  15690. PJN SKP4 IF NO UNDERFLOW
  15691. SOD BL
  15692. AOD BL+1
  15693. SKP4 PSN
  15694. PSN
  15695. * RJM SLL (S,L FORMAT LABELED TAPE)
  15696. SKP5 LDN /MTX/BEI SET TAPE MARK ENCOUNTERED
  15697. LJM RET3 RETURN ERROR CODE
  15698.  
  15699. SKP6 AOD BT INCREMENT BLOCKS TRANSFERRED
  15700. AOD CN+4 INCREMENT BLOCKS SKIPPED
  15701. RJM UAD
  15702. ADN /MTX/UBLC
  15703. CWD CN
  15704. LDD T7
  15705. NJN SKP7 IF NOT TERMINATION CONDITION
  15706. LDD PA
  15707. SHN 14
  15708. ADD PB
  15709. ZJN SKP10 IF END OF SKIP
  15710. SBN 1
  15711. ZJN SKP10 IF END OF SKIP
  15712. STD PB
  15713. SHN -14
  15714. STD PA
  15715. SKP7 LDD CN+4
  15716. ADC -SBLK
  15717. MJN SKP8 IF NOT TIME TO CHECK ERROR FLAG
  15718. LDD TH
  15719. RAD PA
  15720. UJN SKP11 RETURN STATUS TO *MAGNET*
  15721.  
  15722. SKP8 LDD DF CHECK DROP OUT FLAG
  15723. NJN SKP9 IF DROP OUT SET
  15724. LJM SKP1 READ TAPE
  15725.  
  15726. SKP9 LJM RET2 REQUEUE
  15727.  
  15728. SKP10 LDM LNUM SET OPERATION COMPLETE
  15729. SHN 2
  15730. STD PA
  15731. SKPD LDD T2 SET EOR/EOF STATUS
  15732. * LDN 0 (PRU SKIP)
  15733. LPN 10
  15734. SKPE ADN 20
  15735. * PSN (READSKP OR PRU SKIP)
  15736. ADM CIOE MERGE IN CIO CODE
  15737. LPC 774
  15738. STD PB
  15739. LDN 10 SET EOR/EOF FLAG
  15740. RAD UP
  15741. SKP11 LJM RET1 RETURN
  15742.  
  15743. BSS 6
  15744. .OSKRL EQU *
  15745. DBF SPACE 4,10
  15746. ** DBF - DETERMINE BLOCK TYPE FORWARD.
  15747. *
  15748. * EXIT (A) = (T7) = 0, IF TERMINATION MET.
  15749. * (T2) = TERMINATION STATUS.
  15750. *
  15751. * USES BL, BL+1, T1, T2, T7.
  15752. *
  15753. * CALLS *CRE*, IDF, *REM*, UBW, VDA.
  15754. *
  15755. * MACROS CALL.
  15756.  
  15757.  
  15758. DBF SUBR ENTRY/EXIT
  15759. LDM BUF-1,BY SAVE LEVEL NUMBER
  15760. DBFA EQU *-2
  15761. * LDM BUFB+4 (LI FORMAT)
  15762. STM IDFC
  15763. DBFB RJM VDA VALIDATE DATA I FORMAT
  15764. * PSN ALL OTHER FORMATS
  15765. * PSN
  15766. LDD EP
  15767. LPN 77
  15768. SHN 14
  15769. LMD EC
  15770. ZJN DBF5 IF NO ERROR
  15771. LMN /MTX/BEI
  15772. NJN DBF2 IF NOT TAPE MARK
  15773. LDN 1 SET TAPE MARK INDICATION
  15774. DBF1 STM UBWB
  15775. DBFC EQU *-2
  15776. * UJN DBF5 (CTS)
  15777. RJM UBW UPDATE BID WINDOW
  15778. UJN DBF5 SKIP ERROR PROCESSOR CALL
  15779.  
  15780. DBF2 LMN /MTX/STE&/MTX/BEI
  15781. NJN DBF3 IF NOT STATUS ERROR
  15782. DBFD UJN DBF3 PROCESS ERRORS
  15783. * LDN 4 (PO=N OR MTX/ATS SKIPEI OR POSMF)
  15784. UJN DBF1 SET UNUSABLE BID
  15785.  
  15786. DBF3 UJN DBF4 LOAD READ ERROR PROCESSOR
  15787. DBFE EQU *-1
  15788. * AOD BL+1 INCREMENT BLOCK COUNT (SKIP BACK)
  15789. SHN -14
  15790. RAD BL
  15791. DBFF BSS 0
  15792. * CALL CRE LOAD ERROR PROCESSOR (CTS)
  15793. DBF4 CALL REM LOAD READ ERROR PROCESSOR
  15794. UJN DBF5 FORWARD SKIP
  15795. * SOD BL+1 (REVERSE SKIP - DECREMENT BLOCK COUNT)
  15796. DBFG EQU *-1
  15797. PJN DBF5 IF NO UNDERFLOW
  15798. AOD BL+1
  15799. SOD BL
  15800. DBF5 RJM IDF PROCESS INTERNAL DATA FORMAT
  15801. STD T2 SAVE STATUS
  15802. LDD MD
  15803. DBFH LPN 10 (S, L, F FORMAT)
  15804. * LPN 14 (I, SI, LI FORMAT)
  15805. ZJN DBF6 IF PRU OPERATION
  15806. STD T1
  15807. LDD T2 DETERMINE IF TERMINATION MET
  15808. SBD T1
  15809. MJN DBF6 IF TERMINATION NOT MET
  15810. LDD T1
  15811. LMN 4
  15812. NJN DBF6 IF NOT EOR
  15813. LDM LNUM
  15814. DBFI SBN 0 LEVEL NUMBER
  15815. DBF6 SHN -21 SET TERMINATION FLAG
  15816. STD T7
  15817. LJM DBFX RETURN
  15818. DBR SPACE 4,10
  15819.  
  15820. * THE FOLLOWING CODE GETS OVERLAID IF NOT USING READ REVERSE.
  15821. * ISMT GCR, CTS, AND LI FORMAT DO NOT USE READ REVERSE.
  15822.  
  15823. .DBRR EQU *
  15824.  
  15825. ** DBR - DETERMINE BLOCK TYPE REVERSE.
  15826. *
  15827. * USES CM - CM+4.
  15828. *
  15829. * CALLS DBF.
  15830.  
  15831.  
  15832. DBR2 RJM DBF DETERMINE BLOCK TYPE FORWARD
  15833.  
  15834. DBR SUBR ENTRY/EXIT
  15835. DBRA UJN DBR2 DETERMINE BLOCK TYPE
  15836. * LDD BY (USING READ REVERSE)
  15837. ZJN DBR2 IF NO DATA READ
  15838.  
  15839. * THE FOLLOWING CODE GETS OVERLAID IF 9 TRACK SI
  15840. * FORMAT SKIP REVERSE OPERATION OR IF MTS 9 TRACK, I
  15841. * FORMAT SKIP REVERSE.
  15842.  
  15843. .DBRO EQU * BEGINNING OF OVERLAID AREA
  15844.  
  15845. LDC BUF
  15846. STM DBRC
  15847. LDD WC
  15848. LPN 1
  15849. DBRB UJN DBR1 DO NOT SKIP FIRST BYTE
  15850. * ZJN DBR1 (9 TRACK I FORMAT - IF EVEN WORD COUNT)
  15851. AOM DBRC SKIP FIRST BYTE (I FORMAT)
  15852. DBR1 LDD MA SAVE FIRST FOUR BYTES
  15853. CWM BUF,ON
  15854. DBRC EQU *-1
  15855. SBN 1
  15856. CRD CM
  15857. LDD CM STORE LAST FOUR BYTES
  15858. STM BUF-1,BY
  15859. LDD CM+1
  15860. STM BUF-2,BY
  15861. LDD CM+2
  15862. STM BUF-3,BY
  15863. LDD CM+3
  15864. STM BUF-4,BY
  15865. LJM DBR2 DETERMINE BLOCK TYPE FORWARD
  15866.  
  15867. .DBROL EQU *-.DBRO LENGTH OF OVERLAID AREA
  15868. .DBRRL EQU *-.DBRR LENGTH OF OVERLAID AREA
  15869. IDF SPACE 4,10
  15870. ** IDF - PROCESS INTERNAL DATA FORMAT.
  15871. *
  15872. * EXIT (A) = TERMINATION STATUS.
  15873. *
  15874. * CALLS CFP.
  15875.  
  15876.  
  15877. IDF2 LDN 17 SET LEVEL 17
  15878. STM LNUM
  15879. LDN 14 RETURN EOI
  15880.  
  15881. IDF SUBR ENTRY/EXIT
  15882. LDD EC
  15883. LMN /MTX/BEI
  15884. ZJN IDF2 IF TAPE MARK
  15885. LDD BY
  15886. ADC 0
  15887. IDFE EQU *-1 (LI FORMAT CHUNK COUNT)
  15888. ZJN IDF2 IF NO BYTES READ
  15889. LMM /READ/MRDA
  15890. IDFA EQU *-1
  15891. * RJM CFP (LI FORMAT)
  15892. * LMM /READ/RCTA (CTS)
  15893. LMN 1
  15894. STM LNUM SET 0 LEVEL NUMBER
  15895. IDFB ZJN IDFX IF FULL PRU
  15896. * PSN (NOT I/SI/LI FORMAT)
  15897. LDC * EXTRACT LEVEL NUMBER
  15898. IDFC EQU *-1
  15899. LPN 77
  15900. IDFD LDN 0 (NOT I/SI/LI FORMAT)
  15901. * PSN (I/SI/LI FORMAT)
  15902. STM LNUM
  15903. LMN 17
  15904. ZJN IDF1 IF EOF
  15905. LCN 4
  15906. IDF1 ADN 10
  15907. UJN IDFX RETURN
  15908. VDA SPACE 4,10
  15909. ** VDA - VALIDATE DATA.
  15910. * CHECKS I FORMAT TRAILER BYTES OR LI FORMAT PREFIX BYTES.
  15911. * IF LI FORMAT, *VDA* IS OVERLAYED WITH *VLI*.
  15912.  
  15913.  
  15914. VDA SUBR ENTRY/EXIT
  15915. LDD BY
  15916. ZJN VDAX IF NO DATA READ
  15917. LDD EC
  15918. ZJN VDA1 IF NO PREVIOUS ERRORS ENCOUNTERED
  15919. LMN /MTX/STE
  15920. NJN VDAX IF NOT STATUS ERROR CODE
  15921. VDAA EQU *-1
  15922. * UJN VDAX (CTS)
  15923. LDM MTDS
  15924. LPC 7777
  15925. VDAB EQU *-1
  15926. * LPC 7077 (MTS UNIT)
  15927. NJN VDAX IF ERRORS REPORTED FROM HARDWARE
  15928. VDA1 LDD EP
  15929. SHN 21-12
  15930. MJN VDAX IF OPPOSITE PARITY BEING TRIED
  15931. LDM BUF-4,BY SAVE BLOCK LENGTH
  15932. STM //BNEI
  15933. LDM BUF-3,BY
  15934. STM //BNEI+1
  15935. LMD BL
  15936. SHN 14
  15937. LMM BUF-2,BY
  15938. STM //BNEI+2
  15939. LMD BL+1
  15940. ZJN VDA2 IF BLOCK NUMBER CORRECT
  15941. LDN /MTX/BNE
  15942. STD EC
  15943. VDA2 LJM VDAX RETURN
  15944. SPACE 4,10
  15945. BUFFER
  15946. BSS 7 SO *VLI* DOES NOT OVERFLOW
  15947. VDAL EQU *-VDAX LENGTH OF *VDA*
  15948. CFP SPACE 4,10
  15949. ** CFP - CHECK FULL PRU FOR LI FORMAT.
  15950. *
  15951. * ENTRY (BUFB - BUFB+4) = LI FORMAT BLOCK PREFIX.
  15952. *
  15953. * EXIT (A) = 1 IF FULL PRU.
  15954.  
  15955.  
  15956. CFP SUBR ENTRY/EXIT
  15957. LDM BUFB GET BYTE COUNT
  15958. SHN 14
  15959. ADM BUFB+1
  15960. ADC -50005+1 CHECK FULL PRU
  15961. UJN CFPX RETURN
  15962. SLB SPACE 4,10
  15963. ** SLB - SKIP LONG BLOCK.
  15964. * THIS CODE IS OVERLAYED WITH *SLI* FOR LI FORMAT.
  15965. *
  15966. * ENTRY AT *SLB* FROM *MRD* OR *RCT* WHEN *LBBY* BYTES HAVE
  15967. * BEEN READ.
  15968. *
  15969. * USES T2.
  15970.  
  15971.  
  15972. SLB PSN MAKE ROUTINE AS LONG AS *SLI*
  15973. LDN 2 INPUT 2 BYTES
  15974. IAM BUFB,CH
  15975. LCN 0
  15976. STD T2
  15977. SLB1 LDC 400 INPUT DATA
  15978. IAM BUFB,CH
  15979. NJN SLB3 IF END OF BLOCK
  15980. SOD T2
  15981. NJN SLB1 IF NOT BLOCK TOO LONG
  15982. SLBL EQU *-SLB LENGTH OF CODE THAT CAN BE OVERLAYED
  15983. SLB2 LJM /READ/MRD4.1 SET BLOCK TOO LARGE
  15984. SLBA EQU *-1
  15985. * LJM /READ/RCT4 (CTS)
  15986.  
  15987. SLB3 LJM /READ/MRD4 CALCULATE REMAINDER OF CM WORD COUNT
  15988. SLBB EQU *-1
  15989. * LJM /READ/RCT5 (CTS)
  15990. SPACE 4,10
  15991. BUFFER BUFB
  15992. SKR SPACE 4,10
  15993. ** SKR - SKIP REVERSE.
  15994. * THE FOLLOWING CODE OVERLAYS *SKP* IF THE OPERATION IS
  15995. * SKIP REVERSE.
  15996. *
  15997. * EXIT TO *RET1* IF NORMAL COMPLETION.
  15998. * TO *RET2* TO REQUEUE.
  15999. *
  16000. * CALLS BKS, DBF, DBR, /READ/RDF, UAD.
  16001.  
  16002.  
  16003. .BSKR BSS 0
  16004. LOC .OSKR
  16005. SKR4 UJN SKR5 NOT SI FORMAT, 9/18 TRACK
  16006. SKRA EQU *-1
  16007. * LDD ES (9/18 TRACK SI FORMAT)
  16008. LPN 40
  16009. ZJN SKR5 IF NO FILL STATUS
  16010. SOD BY ADJUST BYTE COUNT
  16011. SOD WC ADJUST WORD COUNT
  16012. SKR5 SOD BL+1 DECREMENT BLOCK COUNT
  16013. PJN SKR6 IF NO UNDERFLOW
  16014. AOD BL+1
  16015. SOD BL
  16016. SKR6 RJM DBR DETERMINE BLOCK TYPE REVERSE
  16017. SKRB EQU *-1
  16018. * RJM DBF (GCR ISMT OR CTS)
  16019. SKRC PSN
  16020. PSN
  16021. * RJM BKS (GCR ISMT OR CTS)
  16022. LDD MD
  16023. SHN 21-11
  16024. MJN SKR7 IF NOT FIRST PASS
  16025. LDD TH SET NOT FIRST PASS FLAG
  16026. RAD MD
  16027. UJN SKR8 CHECK FOR DROP OUT
  16028.  
  16029. SKR7 AOD BT INCREMENT BLOCKS TRANSFERRED
  16030. AOD CN+4 INCREMENT BLOCKS SKIPPED
  16031. RJM UAD
  16032. ADN /MTX/UBLC
  16033. CWD CN
  16034. LDD T7
  16035. NJN SKR8 IF TERMINATION NOT MET
  16036. LDD PA CHECK SKIP TERMINATION
  16037. SHN 14
  16038. ADD PB
  16039. SBN 1
  16040. ZJN SKR9 IF END OF SKIP
  16041. STD PB UPDATE SKIP COUNT
  16042. SHN -14
  16043. STD PA
  16044. SKR8 LDD CN+4
  16045. ADC -SBLK
  16046. MJN SKR11 IF NOT TIME TO CHECK ERROR FLAG
  16047. LDD TH SET CHECK ERROR FLAG INDICATOR
  16048. RAD PA
  16049. LDD T7
  16050. ZJN SKR2.1 IF TERMINATION MET
  16051. AOD MD SET NOT END OF RECORD FLAG
  16052. UJN SKR2.1 RETURN STATUS TO *MAGNET*
  16053.  
  16054. SKR9 LDD MD CLEAR REVERSE AND RECORD FLAGS
  16055. LPC 3763
  16056. STD MD
  16057. * LDN 1 SET TO SKIP FORWARD ONE BLOCK
  16058. * STD PB
  16059. * LDN 0
  16060. * STD PA CLEAR PARAMETER
  16061. SKR10 LJM RET2 REQUEUE
  16062.  
  16063. SKR11 LDD DF CHECK DROP OUT FLAG
  16064. NJN SKR10 IF DROP OUT SET
  16065.  
  16066. SKR BSS 0 ENTRY
  16067. LDD BL
  16068. ADD BL+1
  16069. NJN SKR3 IF NOT BOI
  16070. LDD MD
  16071. SHN 21-11
  16072. PJN SKR1 IF FIRST PASS
  16073. LDD PA
  16074. SHN 14
  16075. ADD PB
  16076. LMN 1
  16077. ZJN SKR2 IF END OF SKIP
  16078. SKR1 LDN 50
  16079. SKR2 ADN 1
  16080. STD PB
  16081. LDN 0
  16082. STD PA
  16083. SKR2.1 LJM RET1 RETURN
  16084.  
  16085. SKR3 PSN
  16086. PSN
  16087. * RJM BKS (GCR ISMT OR CTS)
  16088. LDN 0
  16089. STM IDFE CHUNKS TRANSFERRED FOR LI FORMAT
  16090. LJM /READ/RDF READ TAPE (RETURN AT *SKR4)
  16091.  
  16092. ERRNG .OSKRL-* OVERLAID CODE OVERFLOWED
  16093.  
  16094. LOC *O
  16095. .BSKRL EQU *
  16096. PRS SPACE 4,10
  16097. ** PRS - PRESET.
  16098. * ISMT GCR AND CTS HARDWARE CAN NOT DO READ BACKWARDS. READ
  16099. * BACKWARDS MUST BE REPLACED BY BACKSPACE BLOCK, READ FORWARD,
  16100. * BACKSPACE BLOCK.
  16101. *
  16102. * EXIT (/READ/ISKR) = 0 IF USING READ REVERSE FOR SKIP
  16103. * REVERSE.
  16104. * TO *SKP* IF SKIP FORWARD.
  16105. * TO *SKR* IF SKIP REVERSE.
  16106. *
  16107. * USES T1, T2, CN - CN+4.
  16108. *
  16109. * CALLS DTS, MCH, UAD.
  16110.  
  16111.  
  16112. PRS LDN 0 CLEAR READ BACKWARDS FLAG
  16113. STM /READ/ISKR
  16114. LDD HP
  16115. SHN 21-7
  16116. PJP PRS1 IF NOT CTS
  16117. LDC LDNI+CRE/10000
  16118. STM DBFF LOAD CTS ERROR PROCESSOR
  16119. LDC /READ/RCTA
  16120. STM PRSD ADDRESS OF BYTE COUNT TO INPUT
  16121. STM PRSE
  16122. STM IDFA
  16123. LDC /READ/RCTB
  16124. STM PRSF ADDRESS OF INPUT ADDRESS
  16125. LDC /READ/RCTC
  16126. STM PRSG
  16127. ISTORE DBFC,(UJN DBF5) SKIP UPDATING BLOCK ID WINDOW
  16128. LDC UJNI-NJNI
  16129. RAM VDAA SKIP CHECKING ATS STATUS
  16130. LDC /READ/RCT4
  16131. STM SLBA SET BLOCK TOO LARGE
  16132. LDC /READ/RCT5
  16133. STM SLBB CALCULATE REMAINDER OF CM WORD COUNT
  16134. LDC /READ/RCTG
  16135. STM PRSA
  16136. LDD FM
  16137. SHN -6
  16138. LMN /MTX/TFLI
  16139. NJN PRS1 IF NOT LI FORMAT
  16140. LDC STMI
  16141. STM /READ/RCTM CLEAR CHUNK COUNTER
  16142. PRS1 LDD FM
  16143. SHN -6
  16144. LMN /MTX/TFI
  16145. NJN PRS2 IF NOT I FORMAT
  16146. LDC UJNI+2 DO NOT PROCESS DATA
  16147. STM /READ/MRDH
  16148. PRSA EQU *-1
  16149. * STM /READ/RCTG (CTS)
  16150. LDD HP
  16151. LPN 40
  16152. ZJN PRS2 IF NOT MTS UNIT
  16153. LDC 7077
  16154. STM VDAB
  16155. PRS2 LDC LJMI
  16156. STM /READ/RDFC
  16157. LDC SKP2
  16158. STM /READ/RDFC+1
  16159. LDD PA INSURE CHECK ERROR FLAG BIT IS CLEAR
  16160. LPN 77
  16161. STD PA
  16162. LDD MD
  16163. SHN 21-13
  16164. MJN PRS5 IF REVERSE MOTION
  16165. LDD MD CHECK IF SKIP TO EOI
  16166. LPN 14
  16167. NJN PRS3 IF NOT PRU SKIP
  16168. STM SKPE DO NOT SET EOR/EOF STATUS
  16169. LDC LDNI
  16170. STM SKPD
  16171. UJN PRS4 CONTINUE PRESET
  16172.  
  16173. PRS3 LMN 14
  16174. NJN PRS4 IF NOT SKIPEI
  16175. AOM PRSH SET SKIPEI OR POSMF IN PROGRESS
  16176. ISTORE DBFD,(LDN 4) SET UNUSABLE BID IF ERROR
  16177. PRS4 LJM PRS18 CONTINUE PRESET
  16178.  
  16179. PRS5 LDC .BSKRL-.BSKR-1
  16180. STD T1
  16181. PRS6 LDM .BSKR,T1 REVERSE MOTION CODE
  16182. STM .OSKR,T1
  16183. SOD T1
  16184. PJN PRS6 IF MORE CODE TO MOVE
  16185. LDC .BKSML-1
  16186. STD T1
  16187. LDD HP
  16188. SHN 21-7
  16189. PJN PRS7 IF NOT CTS
  16190. LDC /PRESET/GPS
  16191. STM BKSA-.DBRR+.BKSM
  16192. STM BKSD-.DBRR+.BKSM
  16193. LDC MJNI+77+BKS0-BKSB (MJN BKS0)
  16194. STM BKSB-.DBRR+.BKSM
  16195. LDC UJNI+2
  16196. STM BKSC-.DBRR+.BKSM
  16197. STM BKSF-.DBRR+.BKSM
  16198. LDC MJNI+77+BKS1-BKSE (MJN BKS1)
  16199. STM BKSE-.DBRR+.BKSM
  16200. UJN PRS9 INDICATE NOT USING SKIP REVERSE
  16201.  
  16202. PRS7 SHN 21-10-21+7+22
  16203. MJN PRS8 IF 639 TAPE CONTROLLER
  16204. LDD FM
  16205. SHN -6
  16206. SBN /MTX/TFLI
  16207. NJP PRS11 IF NOT LI FORMAT
  16208. UJN PRS9 INDICATE NOT USING READ REVERSE
  16209.  
  16210. PRS8 LDM //RELA
  16211. ZJN PRS9 IF UNIT NOT CONNECTED, ASSUME GCR
  16212. RJM DTS GET UNIT STATUS
  16213. LDM ATUS CHECK DENSITY
  16214. LPN 30
  16215. LMN 30
  16216. NJN PRS11 IF NOT GCR
  16217. PRS9 AOM /READ/ISKR INDICATE NOT USING READ REVERSE
  16218. LDC RJMI SET UP *RJM BKS*
  16219. STM SKR3
  16220. STM SKRC
  16221. LDC BKS
  16222. STM SKR3+1
  16223. STM SKRC+1
  16224. LDC DBF
  16225. STM SKRB
  16226. PRS10 LDM .BKSM,T1
  16227. STM .DBRR,T1
  16228. SOD T1
  16229. PJN PRS10 IF MORE CODE TO MOVE
  16230. UJN PRS12 CHECK CONTROLLER TYPE
  16231.  
  16232. PRS11 LDC F0140 READ REVERSE
  16233. STM ITMA
  16234. PRS12 LDD HP
  16235. LPC 221
  16236. LMN 1
  16237. NJN PRS14 IF CTS/ATS-TYPE CONTROLLER OR 7 TRACK
  16238. LDD FM
  16239. SHN -6
  16240. LMN /MTX/TFI
  16241. NJN PRS14 IF NOT I FORMAT
  16242. LDN .DBRSL-1 SET LENGTH OF LEVEL NUMBER ROUTINE
  16243. STD T1
  16244. PRS13 LDM .DBRS,T1 MOVE CODE
  16245. STM .DBRO,T1
  16246. SOD T1
  16247. PJN PRS13 IF MORE CODE TO MOVE
  16248. LDC UJNI+PRS22-PRSB DISABLE INSTRUCTION MODIFICATION
  16249. ERRNG PRSB-PRS22+37B
  16250. STM PRSB
  16251. LDN 0 DESELECT VALIDATE DATA FOR I FORMAT
  16252. STM DBFB
  16253. STM DBFB+1
  16254. STM .DBRSB
  16255. PRS14 LDD HP
  16256. SHN 21-7
  16257. PJN PRS15 IF NOT CTS
  16258. LDC 6125
  16259. STM /PRESET/WFEA WAIT NOT BUSY MASK
  16260. UJN PRS16 CONTINUE PRESET
  16261.  
  16262. PRS15 LDC 4425
  16263. STM //WEOA
  16264. PRS16 LDC SKR4
  16265. STM /READ/RDFC+1
  16266. LDC SKRA SET TO MODIFY CORRECT INSTRUCTION
  16267. STM PRSC
  16268. LDC AODI+BL+1
  16269. STM DBFE
  16270. LDC SODI+BL+1
  16271. STM DBFG
  16272. LDD FM
  16273. SHN -6
  16274. SBN /MTX/TFSI+1
  16275. PJN PRS18 IF NOT I OR SI FORMAT
  16276. LDM /READ/ISKR
  16277. NJN PRS18 IF NOT USING READ REVERSE
  16278. LDC LDDI+BY SET TO SET LEVEL NUMBER
  16279. STM DBRA
  16280. PRS18 LDM LNUM SET LEVEL NUMBER
  16281. SHN -10
  16282. RAM DBFI
  16283. LDM CIOE
  16284. LPC 774
  16285. LMN 20
  16286. NJN PRS19 IF NOT READSKP
  16287. STM SKPE RETURN 31 STATUS IF EOF READ
  16288. PRS19 LDD FM
  16289. SHN -6
  16290. SBN /MTX/TFSI+1
  16291. MJN PRS20 IF I OR SI FORMAT
  16292. SBN /MTX/TFLI-/MTX/TFSI-1
  16293. NJP PRS23 IF NOT LI FORMAT
  16294. LDC RJMI
  16295. STM IDFA-1
  16296. LDC CFP CHECK FOR FULL PRU
  16297. STM IDFA
  16298. LDC LDMI
  16299. STM DBFA GET LEVEL NUMBER
  16300. LDC BUFB+4
  16301. STM DBFA+1
  16302. PRS20 LDN 0 SET I/SI/LI FORMAT LEVEL NUMBER CHECK
  16303. STM IDFD
  16304. LDN 4
  16305. RAM DBFH
  16306. LDD FM
  16307. SHN -6
  16308. LMN /MTX/TFSI
  16309. ZJN PRS23 IF SI FORMAT
  16310. PRSB LDD HP
  16311. * UJN PRS22 (MTS CONTROLLER REVERSE SKIP)
  16312. SHN 21-7
  16313. MJN PRS21 IF CTS
  16314. SHN 21-0-21+7
  16315. PJN PRS22 IF 7 TRACK
  16316. PRS21 LDM /READ/ISKR
  16317. NJN PRS22 IF NOT USING READ REVERSE
  16318. LDC ZJNI-UJNI
  16319. RAM DBRB
  16320. PRS22 UJN PRS24 COMPLETE PRESET
  16321.  
  16322. PRS23 LDN 0
  16323. STM DBFB
  16324. STM DBFB+1
  16325. LDD FM
  16326. SHN -6
  16327. LMN /MTX/TFSI
  16328. ZJN PRS25 IF SI FORMAT
  16329. PRS24 LJM PRS28 COMPLETE PRESET
  16330.  
  16331. PRS25 LDD HP
  16332. LPN 1
  16333. ZJN PRS28 IF 7 TRACK
  16334. LDC LDDI+ES SET TO CHECK FOR FILL STATUS
  16335. STM SKPA
  16336. * STM SKRA (SKIP REVERSE)
  16337. PRSC EQU *-1
  16338. LDD MD
  16339. SHN 21-13
  16340. PJN PRS28 IF SKIP FORWARD
  16341. LDM /READ/ISKR
  16342. NJN PRS28 IF NOT USING READ REVERSE
  16343. LDN .DBRML LENGTH OF ATS LEVEL NUMBER ROUTINE
  16344. STD T1
  16345. LDD HP
  16346. LPN 40
  16347. ZJN PRS26 IF NOT MTS CONTROLLER
  16348. LDN .DBRSL-1 SET LENGTH OF MTS LEVEL NUMBER ROUTINE
  16349. STD T1
  16350. LDN .DBRS-.DBRM
  16351. PRS26 ADC .DBRM
  16352. ADD T1 ADD LENGTH
  16353. STD T2
  16354. PRS27 LDI T2 MOVE CODE
  16355. STM .DBRO,T1
  16356. SOD T2
  16357. SOD T1
  16358. PJN PRS27 IF MORE CODE TO MOVE
  16359. PRS28 LDD PA
  16360. ADD PB
  16361. NJN PRS29 IF SKIP COUNT SPECIFIED
  16362. AOD PB
  16363. PRS29 LDD MD
  16364. SHN 21-13
  16365. MJN PRS32 IF SKIP REVERSE
  16366. LDD FM
  16367. SHN -6
  16368. SBN /MTX/TFSI+1
  16369. MJN PRS31 IF I/SI FORMAT
  16370. SBN /MTX/TFLI-/MTX/TFSI-1
  16371. ZJN PRS31 IF LI FORMAT
  16372. LDD LT
  16373. SHN 21-12
  16374. PJN PRS32 IF NOT LABELED
  16375. LDC RJMI SET *RJM SLL* TO DECREMENT SKIP COUNT
  16376. STM SKP4
  16377. LDC SLL
  16378. STM SKP4+1
  16379. LDN .DBSLL-1 SET LENGTH OF *SLL* SUBROUTINE
  16380. STD T1
  16381. PRS30 LDM .DBSL,T1 MOVE CODE
  16382. STM .DBRO,T1
  16383. SOD T1
  16384. PJN PRS30 IF MORE CODE TO MOVE
  16385. PRS31 LDC NJNI-UJNI
  16386. RAM SKPB
  16387. PRS32 LDD FM
  16388. SHN -6
  16389. SBN /MTX/TFSI+1
  16390. MJN PRS33 IF I OR SI FORMAT
  16391. SBN /MTX/TFLI-/MTX/TFSI-1
  16392. ZJN PRS33 IF LI FORMAT
  16393. LDN 0 SET TO ALWAYS RETURN EOR
  16394. STM IDFB
  16395. LDC 5001 SET MAXIMUM BLOCK LENGTH
  16396. STM /READ/MRDA
  16397. PRSD EQU *-1
  16398. * STM /READ/RCTA (CTS)
  16399. PRS33 LDD FM
  16400. SHN -6
  16401. SBN /MTX/TFL
  16402. ZJN PRS35 IF L FORMAT
  16403. SBN /MTX/TFLI-/MTX/TFL
  16404. NJN PRS34 IF NOT LI FORMAT
  16405. LDC SLBY CHUNK LENGTH FOR SKIPPING IN LI FORMAT
  16406. UJN PRS36 SET LENGTH OF LAST INPUT
  16407.  
  16408. PRS34 LDD OV
  16409. ZJN PRS37 IF NOT POSSIBLE LONG BLOCKS
  16410. LDD FM
  16411. SHN -6
  16412. LMN /MTX/TFF
  16413. NJN PRS37 IF NOT F FORMAT
  16414. PRS35 LDC LBBY SET UP FOR LONG BLOCKS
  16415. PRS36 STM /READ/MRDA
  16416. PRSE EQU *-1
  16417. * STM /READ/RCTA (CTS)
  16418. LDC BUFB
  16419. STM /READ/MRDB
  16420. PRSF EQU *-1
  16421. * STM /READ/RCTB (CTS)
  16422. LDC SLB
  16423. STM /READ/MRDC
  16424. PRSG EQU *-1
  16425. * STM /READ/RCTC (CTS)
  16426. PRS37 LDC PRSI MODIFY CHANNELS
  16427. RJM MCH
  16428. PRSH LDN 0 SET SKIP STATUS
  16429. * LDN 1 (SKIPEI OR POSMF OPERATION)
  16430. STM /READ/SKEI
  16431. LDD SP SET PO=N FLAG
  16432. LPN 2
  16433. ZJN PRS38 IF NOT PO=N OPTION
  16434. ISTORE DBFD,(LDN 4) SET UNUSABLE BID IF ERROR
  16435. PRS38 LDD FM
  16436. SHN -6
  16437. SBN /MTX/TFLI
  16438. NJN PRS41 IF NOT LI FORMAT
  16439. LDK .SLIL-1 LENGTH OF CODE TO MOVE - 1
  16440. STD T1
  16441. PRS39 LDM .SLI,T1 REPLACE *SLB* WITH *SLI*
  16442. STM SLI,T1
  16443. SOD T1
  16444. PJN PRS39 IF MORE CODE TO MOVE
  16445. LDC SLIA
  16446. RJM MCH MODIFY CHANNELS FOR *SLI*
  16447. LDK .VLIL-1
  16448. STD T1 LENGTH OF CODE TO MOVE - 1
  16449. PRS40 LDM .VLI,T1 REPLACE *VDA* WITH *VLI*
  16450. STM VLIX,T1
  16451. SOD T1
  16452. PJN PRS40 IF MORE CODE TO MOVE
  16453. PRS41 LDC PRS42 SET TO RETURN
  16454. STD BT
  16455. LJM PRSX RETURN
  16456.  
  16457. PRS42 RJM UAD READ BLOCK ACCUMULATOR
  16458. ADN /MTX/UBLC
  16459. CRD CN
  16460. LDD MD
  16461. SHN 21-13
  16462. MJP SKR IF SKIP REVERSE
  16463. LJM SKP SKIP FORWARD
  16464.  
  16465. PRSI CHTB
  16466. SPACE 4,10
  16467. * THE FOLLOWING CODE GETS MOVED TO .DBRO IF 9 TRACK
  16468. * SI FORMAT SKIP REVERSE ON ATS CONTROLLER.
  16469.  
  16470. .DBRM BSS 0 ATS CONTROLLER ROUTINE
  16471. LOC .DBRO
  16472. LDD MA READ FIRST WORD FROM BUFFER
  16473. CWM BUF,ON
  16474. SBN 1
  16475. CRD CM
  16476. LDD WC
  16477. LPN 1
  16478. ZJN .DBRM1 IF EVEN WORD COUNT
  16479. LDN 73 SET FOR SHN -4 INSTRUCTION
  16480. .DBRM1 ADC SHNI
  16481. STM .DBRMA
  16482. LDD CM SAVE LEVEL NUMBER
  16483. .DBRMA SHN **
  16484. * SHN 0 (EVEN WORD COUNT)
  16485. * SHN -4 (ODD WORD COUNT)
  16486. LPN 17
  16487. STM BUF-1,BY
  16488. LJM DBR2 DETERMINE IF TERMINATION MET
  16489.  
  16490. LOC *O
  16491. .DBRML EQU *-.DBRM LENGTH OF ATS ROUTINE
  16492. ERRMI .DBROL-.DBRML OVERLAID CODE OVERFLOWED
  16493.  
  16494.  
  16495. * THE FOLLOWING CODE GETS MOVED TO .DBRO IF 9 TRACK
  16496. * I/SI FORMAT SKIP REVERSE ON MTS CONTROLLER.
  16497.  
  16498. .DBRS BSS 0 MTS ROUTINE
  16499. LOC .DBRO
  16500. LDD WC SET BYTE TO START READ
  16501. LPN 1
  16502. LMN 1
  16503. STD T1
  16504. ADC BUF
  16505. STM .DBRSA
  16506. LDD MA SAVE FIRST WORD
  16507. CWM *,ON
  16508. * CWM BUF,ON (ODD WORD COUNT)
  16509. * CWM BUF+1,ON (EVEN WORD COUNT)
  16510. .DBRSA EQU *-1
  16511. SBN 1
  16512. CRD CM
  16513. LDD T1
  16514. .DBRSB ZJN .DBRS1 IF ODD WORD COUNT
  16515. * PSN (I FORMAT - ALWAYS SHIFT -10)
  16516. LDN 67 SET FOR SHN -10
  16517. .DBRS1 ADC SHNI
  16518. STM .DBRSC
  16519. LDD CM SAVE LEVEL NUMBER
  16520. .DBRSC SHN **
  16521. * SHN 0 (ODD WORD COUNT)
  16522. * SHN -10 (EVEN WORD COUNT)
  16523. LPN 17
  16524. STM BUF-1,BY
  16525. LJM DBR2 DETERMINE IF TERMINATION MET
  16526.  
  16527. LOC *O
  16528. .DBRSL EQU *-.DBRS LENGTH OF OVERLAID CODE
  16529. ERRMI .DBROL-.DBRSL OVERLAID CODE OVERFLOWED
  16530. SLL SPACE 4,10
  16531. ** SLL - SKIP COUNT MODIFIER FOR S, L FORMATS.
  16532. *
  16533. * THE FOLLOWING CODE GETS MOVED TO .DBRO IF S, L FORMAT ON A
  16534. * LABELED TAPE.
  16535.  
  16536. .DBSL BSS 0
  16537. LOC .DBRO
  16538. SLL SUBR ENTRY/EXIT
  16539. LDD PA
  16540. SHN 14
  16541. ADD PB
  16542. ZJN SLLX IF END OF SKIP
  16543. SBN 1 DECREMENT SKIP COUNT
  16544. STD PB
  16545. SHN -14
  16546. STD PA
  16547. UJN SLLX RETURN
  16548.  
  16549. LOC *O
  16550. .DBSLL EQU *-.DBSL LENGTH OF S, L FORMAT LABELED ROUTINE
  16551. ERRMI .DBROL-.DBSLL OVERLAID CODE OVERFLOWED
  16552. BKS SPACE 4,10
  16553. ** BKS - BACKSPACE TAPE.
  16554. * WAIT BACKSPACE FUNCTION COMPLETE. FOR ISMT THE TIMEOUT IS
  16555. * APPROXIMATELY 25 FEET OF TAPE.
  16556. *
  16557. * THE FOLLOWING CODE GETS MOVED TO *.DBRR* IF NOT USING READ
  16558. * REVERSE. ISMT GCR, CTS, AND LI FORMAT DO NOT USE READ
  16559. * REVERSE.
  16560. *
  16561. * EXIT (DS) = GENERAL STATUS.
  16562. *
  16563. * CALLS FCN, /PRESET/GPS, STW.
  16564.  
  16565.  
  16566. .BKSM BSS 0
  16567. LOC .DBRR
  16568. BKS2 CON 0 ENTERED VIA *RJM* FROM //STW
  16569. SOD T2
  16570. NJN BKS1 IF NOT TIMEOUT
  16571. LDC ERR RESET ERROR EXIT
  16572. STM STWC
  16573. UJN BKS1 ATTEMPT 1 MORE TIME
  16574.  
  16575. BKS SUBR ENTRY/EXIT
  16576. BKS0 LDN 2 WAIT NOT BUSY
  16577. RJM STW
  16578. BKSA EQU *-1
  16579. * RJM /PRESET/GPS GET AND PROCESS GENERAL STAUS (CTS)
  16580. PSN 0
  16581. BKSB EQU *-1
  16582. * MJN BKS0 IF COMMAND RETRY (CTS)
  16583. LDC F0113 BACKSPACE
  16584. RJM FCN
  16585. LDN 27
  16586. STD T2
  16587. LDC BKS2 SET RETURN ON TIMEOUT FROM //STW
  16588. STM STWC
  16589. BKSC EQU *-2
  16590. * UJN *+2 DO NOT CHANGE STWC (CTS)
  16591. BKS1 LDN 2 WAIT NOT BUSY
  16592. RJM STW
  16593. BKSD EQU *-1
  16594. * RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS (CTS)
  16595. PSN
  16596. BKSE EQU *-1
  16597. * MJN BKS1 COMMAND RETRY (CTS)
  16598. LDC ERR RESET ERROR EXIT
  16599. STM STWC
  16600. BKSF EQU *-2
  16601. * UJN *+2 DO NOT STORE INTO STWC (CTS)
  16602. UJN BKSX RETURN
  16603. LOC *O
  16604. .BKSML EQU *-.BKSM
  16605. ERRMI .DBRRL-.BKSML OVERLAID CODE OVERFLOW
  16606. SLI SPACE 4,15
  16607. ** SLI - SKIP LI FORMAT BLOCK.
  16608. * NOTE THAT THE MAXIMUM BLOCK SIZE IS DATA (2400*20) PLUS
  16609. * PREFIX (5) PLUS PAD (1). THIS ROUTINE OVERLAYS *SLB*
  16610. * FOR LI FORMAT.
  16611. *
  16612. * ENTRY AT *SLI* FROM *MRD* OR *RCT* (FOR CTS) WHEN *SLBY*
  16613. * BYTES HAVE BEEN READ.
  16614. * (IDFE) = 0.
  16615. *
  16616. * EXIT (IDFE) = CHUNK COUNT READ.
  16617. * TO *SLB2* IF BLOCK TOO LONG.
  16618. * TO *SLB3* IF END OF BLOCK.
  16619.  
  16620.  
  16621. .SLI BSS 0
  16622. LOC SLB
  16623. SLI LDN 7
  16624. IAM BUFB+5,CH
  16625. SLI1 AOM IDFE
  16626. LMN 20
  16627. ZJN SLB2 IF BLOCK TOO LONG
  16628. LDC SLBY
  16629. IAM BUFB+5,CH
  16630. ZJN SLI1 IF NOT END OF BLOCK
  16631. UJN SLB3 END OF BLOCK
  16632.  
  16633. LOC *O
  16634. .SLIL EQU *-.SLI LENGTH OF CODE TO MOVE
  16635. ERRMI SLBL-.SLIL IF CODE OVERFLOWS
  16636.  
  16637. SLIA CHTB CHANNEL TABLE
  16638. VLI SPACE 4,10
  16639. ** VLI - VALIDATE LI FORMAT PREFIX.
  16640. * THIS ROUTINE OVERLAYS *VDA* FOR LI FORMAT.
  16641. *
  16642. * ENTRY (BY) = BYTES READ IN LAST CHUNK.
  16643. * (IDFE) = FULL CHUNKS READ.
  16644.  
  16645.  
  16646. .VLI BSS 0
  16647. LOC VDAX
  16648. VLI SUBR ENTRY/EXIT
  16649. LDD BY BYTES IN LAST CHUNK
  16650. ADM IDFE
  16651. ZJN VLIX IF NO DATA READ
  16652. LDD EC
  16653. ZJN VLI1 IF NO PREVIOUS ERRORS ENCOUNTERED
  16654. LMN /MTX/STE
  16655. NJN VDAX IF NOT STATUS ERROR CODE
  16656. VLIA EQU *-1
  16657. * UJN VLIX (CTS)
  16658. LDM MTDS
  16659. NJN VLIX IF ERRORS REPORTED FROM HARDWARE
  16660. VLI1 LDM IDFE
  16661. NJN VLI2 IF PREFIX WAS READ
  16662. LDD BY
  16663. SBN 5
  16664. MJN VLI3 IF NO PREFIX
  16665. VLI2 LDM BUFB+1 SAVE BLOCK LENGTH
  16666. STM //BNEI
  16667. LDM BUFB
  16668. STM //BNEU
  16669. LDM BUFB+2 SAVE BLOCK NUMBER
  16670. STM //BNEI+1
  16671. LMD BL
  16672. SHN 14
  16673. LMM BUFB+3
  16674. STM //BNEI+2
  16675. LMD BL+1
  16676. ZJN VLI4 IF BLOCK NUMBER CORRECT
  16677. VLI3 LDN /MTX/BNE
  16678. STD EC
  16679. VLI4 LJM VLIX RETURN
  16680.  
  16681. LOC *O
  16682. .VLIL EQU *-.VLI LENGTH OF CODE TO MOVE
  16683. ERRMI VDAL-.VLIL IF CODE OVERFLOWS
  16684. OVERLAY (MTS/ATS READ ERROR PROCESSOR.),(BUFB+5),P
  16685. REM SPACE 4,20
  16686. ** REM - READ ERROR PROCESSOR.
  16687. * FIRST PART OF CODE USED AS A BUFFER.
  16688. *
  16689. * ENTRY (EP, 12) = OPPOSITE PARITY MODE.
  16690. * (EP, 11) = LOAD POINT ERROR FLAG.
  16691. * (EP, 10 - 6) = CLIPPING LEVEL.
  16692. * (EP, 5 - 0) = REENTRY CODE.
  16693. * (EP+1, 13 - 11) = CLIPPING LEVEL BEING TRIED.
  16694. * (EP+1, 10 - 6) = RETRY COUNT.
  16695. * (EP+1, 5 - 3) = NORMAL PARITY REREAD COUNT.
  16696. * (EP+1, 2 - 0) = OPPOSITE PARITY REREAD COUNT.
  16697. *
  16698. * EXIT (A) = 0.
  16699. *
  16700. * CALLS BKS, CFC, EBW, *EMM*, EOT, LPR, MCH, PNE, POT,
  16701. * PRS, PTM, RDA.
  16702. *
  16703. * MACROS CALL.
  16704.  
  16705.  
  16706. * THE FOLLOWING CODE IS OVERLAID BY IN POINTERS AND
  16707. * TEMPORARY STORAGE AFTER PRESET.
  16708.  
  16709. ENTRY REM
  16710. REM SUBR ENTRY
  16711. LDM //LOV SAVE CALLERS EXIT ADDRESS
  16712. STM REMH
  16713. LDC REM1 SET ADDRESS TO ENTER AT
  16714. STM //LOV
  16715. UJN REMX RETURN
  16716.  
  16717. REM1 LDD MA SAVE IN POINTER
  16718. CWD CN
  16719. CRM INPA,ON
  16720. LDC CTAB MODIFY CHANNELS
  16721. RJM MCH
  16722. LDM ITMA SET BACKSPACE/FORESPACE FUNCTION
  16723. LPC 100
  16724. LMC F0113
  16725. STM BKSA
  16726. RJM PRS PRESET INSTRUCTIONS
  16727. RJM EBW EVALUATE BID WINDOW
  16728. RJM CFC RECONNECT UNIT
  16729. LDM //STER RESTORE STATUS
  16730. STD DS
  16731. LPN 1
  16732. NJN REM2 IF READY
  16733. LDN /MTX/RDR SET NOT READY
  16734. STD EC
  16735. UJN REM2.1 NO LOAD POINT RECOVERY IF NOT READY
  16736.  
  16737. REM2 RJM LPR CHECK FOR LOAD POINT RECOVERY
  16738. * UJN REM2.1 (NOT ATS CONTROLLER)
  16739. REMK EQU *-2
  16740. MJN REM2.1 IF NO LOAD POINT ERROR OR ERROR RECOVERED
  16741. CALL EMM ISSUE MESSAGE
  16742. LDN 0
  16743. STD EC
  16744. AOD EI
  16745. LJM RET2 RETRY ON *BFR* ERROR
  16746.  
  16747. REM2.1 RJM PNE PROCESS NOISE ERRORS
  16748. LDD EC
  16749. LMN /MTX/BEI
  16750. NJN REM3 IF NOT TAPE MARK
  16751. LDD EP
  16752. SHN 21-12
  16753. MJN REM6 IF OPPOSITE PARITY
  16754. RJM PTM PROCESS TAPE MARK
  16755. UJN REM5 SET TO ACCEPT DATA AS WRITTEN
  16756.  
  16757. REM3 LMN /MTX/STE&/MTX/BEI
  16758. ZJN REM4 IF STATUS ERROR
  16759. LJM REM9 CHECK FOR ERROR PROCESSING INHIBITED
  16760.  
  16761. REM4 LDD DS
  16762. SHN 21-3
  16763. PJN REM6 IF NOT EOT
  16764. SHN 22+3-13
  16765. MJN REM6 IF OTHER ERRORS
  16766. RJM EOT PROCESS END OF TAPE
  16767. REM5 AOM REMI SET TO ACCEPT DATA AS WRITTEN
  16768. LJM REM16 POSITION TAPE
  16769.  
  16770. REM6 LDD DS
  16771. SHN 21-13
  16772. PJN REM9 IF NO ALERT
  16773. LDM MTDS
  16774. LPC 7077
  16775. REMA EQU *-1
  16776. * LPC 7777 (ATS UNIT)
  16777. NJN REM8 IF NO CORRECTED ERROR
  16778. LDM MTDS+3
  16779. REMB EQU *-1
  16780. * LDM MTDS+1 (ATS UNIT)
  16781. REMC SHN -13
  16782. * SHN -11 (ATS UNIT)
  16783. LPN 3
  16784. ZJN REM8 IF NOT CORRECTED ERROR
  16785. LDN /MTX/OTF SET ON-THE-FLY ERROR
  16786. REM7 STD EC
  16787. AOM REMI SET ACCEPT DATA
  16788. UJN REM9 CHECK FOR ERROR PROCESSING INHIBITED
  16789.  
  16790. REM8 LDM MTDS
  16791. LMN 16
  16792. REME ZJN REM7 IF AGC FAILURE
  16793. * PSN (MTS UNIT)
  16794. LMN 10&16
  16795. NJN REM9 IF NOT BLANK TAPE
  16796. LDN /MTX/BTA
  16797. STD EC
  16798. REM9 LDD SP
  16799. LPN 4
  16800. ZJN REM12 IF ERROR PROCESSING NOT INHIBITED
  16801. REM10 STM REMI SET ACCEPT DATA FLAG
  16802. LDN 4 SET UNUSEABLE BID
  16803. STM REMF
  16804. LDD EC
  16805. LMN /MTX/BTL
  16806. NJN REM11 IF NOT *BLOCK TOO LARGE*
  16807. RJM BKS INSURE POSITIONED AFTER BAD BLOCK
  16808. RJM RDA SKIP BLOCK
  16809. REM11 UJN REM15 SKIP MESSAGE ISSUE
  16810.  
  16811. REM12 LDD FN
  16812. LMN /MTX/SKP
  16813. NJN REM13 IF NOT SKIP OPERATION
  16814. LDM /READ/SKEI
  16815. NJN REM10 IF SKIPEI OF POSMF
  16816. REML EQU *-1
  16817. * PSN (LI FORMAT)
  16818. REM13 LDD EC
  16819. ZJN REM16 IF NO ERROR
  16820. LDD FM
  16821. SHN -6
  16822. LMN /MTX/TFF
  16823. ADD EP
  16824. NJN REM14 IF NOT F FORMAT AND/OR NOT FIRST ATTEMPT
  16825. LDD HP
  16826. LPN 1
  16827. NJN REM14 IF 9 TRACK
  16828. SOM POTH SET TO ATTEMPT OPPOSITE PARITY
  16829. UJN REM15 CHECK FOR FATAL ERROR
  16830.  
  16831. REM14 RJM CIS CHECK ISMT GCR SKIP REVERSE
  16832. LDC -0 RESTORE BID
  16833. REMF EQU *-1
  16834. STM UBWB
  16835. CALL EMM DIAGNOSE ERROR
  16836. RJM CFC CONNECT IF NEEDED
  16837. REM15 LDD EC
  16838. SBN /MTX/BFAT
  16839. MJN REM16 IF NOT FATAL ERROR
  16840. SBN /MTX/MFAT-/MTX/BFAT
  16841. PJN REM16 IF NOT FATAL ERROR
  16842. LJM RET4 RETURN FATAL ERROR
  16843.  
  16844. REM16 RJM POT POSITION TAPE
  16845. REMG LDN 0
  16846. NJN REM17 IF ERROR RETURN
  16847. LJM *
  16848. REMH EQU *-1
  16849.  
  16850. REM17 LJM RET3 RETURN ERROR CODE
  16851.  
  16852. REMI CON 0 ACCEPT DATA FLAG
  16853. INPA EQU REMX IN POINTER FOR SUCCESSFUL READ
  16854. POTO EQU INPA+5 COUNT OF BLOCKS SKIPPED
  16855. POTP EQU POTO+1 (EP), (EP+1) ON ENTRY
  16856. POTQ EQU POTP+2 SAVE AREA FOR DETAILED STATUS
  16857. TBDW EQU POTQ+10 TEMPORARY BID WINDOW
  16858. EOT SPACE 4,10
  16859. ** EOT - END OF TAPE PROCESSOR.
  16860.  
  16861.  
  16862. EOT1 LMN 2&1
  16863. NJN EOTX IF NOT DISCARD BLOCK AT EOT
  16864. EOT2 LDN /MTX/BEI RETURN END OF TAPE
  16865. RAM REMG
  16866.  
  16867. EOT SUBR ENTRY/EXIT
  16868. LDD SP
  16869. SHN -12
  16870. ZJN EOTX IF READ TO TAPE MARK
  16871. LMN 1
  16872. NJN EOT1 IF NOT ACCEPT BLOCK AT EOT
  16873. LDM /READ/STAP
  16874. SHN 21-3
  16875. PJN EOTX IF END OF TAPE ENCOUNTERED THIS BLOCK
  16876. UJN EOT2 RETURN END OF TAPE STATUS
  16877. PNE SPACE 4,20
  16878. ** PNE - PROCESS NOISE ERRORS.
  16879. * ISSUE MESSAGE IF NOISE SKIPPED, ERROR PROCESSING NOT
  16880. * INHIBITED AND NOT A TAPE MARK.
  16881. *
  16882. * ENTRY (/READ/MRDP) .NE. 0 IF NOISE SKIPPED. (MTS)
  16883. * (MTDS+5, 8-5) = LENGTH OF LARGEST NOISE BLOCK. (MTS)
  16884. * (MTDS+6, 10) .NE. 0 IF NOISE SKIPPED. (ATS)
  16885. * (//STER) = (DS) = GENERAL STATUS FROM READ.
  16886. *
  16887. * EXIT (EC) = 0 IF NO ERRORS ON BLOCK FOLLOWING NOISE.
  16888. * MAXIMUM NOISE SIZE ALWAYS RETURNED FOR ATS.
  16889. *
  16890. * USES T0, T1.
  16891. *
  16892. * CALLS CFC, DTS, *EMM*.
  16893. *
  16894. * MACROS CALL.
  16895.  
  16896.  
  16897. PNE7 LDM MTDS+6
  16898. SHN 21-12
  16899. PJN PNEX IF NOISE NOT SKIPPED
  16900. LDD FM SET NOISE SIZE
  16901. LPN 37
  16902. LJM PNE2 ISSUE MESSAGE
  16903.  
  16904. PNE8 RJM DTS GET DETAILED STATUS
  16905.  
  16906. PNE SUBR ENTRY/EXIT
  16907. LDD SP
  16908. LPN 4
  16909. NJN PNEX IF ERROR PROCESSING INHIBITED
  16910. LDD DS CHECK FOR TAPE MARK
  16911. LPN 20B
  16912. NJN PNEX IF TAPE MARK, EXIT
  16913. LDD EC
  16914. ZJN PNE8 IF NOT POSSIBLE NOISE
  16915. LDD BY SAVE BYTE COUNT OF NEXT BLOCK
  16916. STM PNEB
  16917. LDD HP
  16918. LPN 20
  16919. NJN PNE7 IF ATS-TYPE CONTROLLER
  16920. LDM /READ/MRDP
  16921. ZJN PNEX IF NOISE NOT SKIPPED
  16922. LDM MTDS+5
  16923. SHN -4
  16924. LPN 37
  16925. ADN 1
  16926. STD T0 NUMBER OF FRAMES + 1
  16927. LDD HP
  16928. LPN 1
  16929. NJN PNE1 IF 9 TRACK
  16930. LDD T0 CONVERT FRAMES TO BYTES
  16931. SHN -1 (FRAMES+1)/2
  16932. UJN PNE2 SAVE BYTE COUNT OF LARGEST NOISE BLOCK
  16933.  
  16934. PNE1 LDD T0
  16935. SHN 1 2(FRAMES+1) = FR
  16936.  
  16937. * APPROXIMATE 1/3 OF FR.
  16938.  
  16939. SHN 2 4*FR
  16940. ADD T0 5*FR
  16941. SHN 2 20*FR
  16942. ADD T0 21*FR
  16943. SHN 14 (-6) (21*FR)/64
  16944. STD T1
  16945. SHN 6+2 4*21*FR (84*FR)
  16946. ADD T0 85*FR
  16947. ADD T1 (85*FR)+((21*FR)/64)
  16948. SHN -8D ((85*FR)+((21*FR)/64))/256
  16949. PNE2 STD BY BYTE COUNT OF LARGEST NOISE BLOCK
  16950. LDD EC SAVE ERROR CODE
  16951. STM PNED
  16952. LDD DS SAVE STATUS
  16953. STM PNEC
  16954. LDN /MTX/NBE SET NOISE ERROR CODE
  16955. STD EC
  16956. PNEA LDC 400
  16957. * UJN PNE3 (ATS UNIT)
  16958. STM //STER
  16959. PNE3 CALL EMM ISSUE MESSAGE
  16960. RJM CFC CONNECT IF NEEDED
  16961. LDC * RESET BYTE COUNT
  16962. PNEB EQU *-1
  16963. STD BY
  16964. LDC * RESET STATUS
  16965. PNEC EQU *-1
  16966. STM //STER
  16967. STD DS
  16968. LDC * CHECK IF OTHER ERRORS
  16969. PNED EQU *-1
  16970. STD EC
  16971. LMN /MTX/STE
  16972. NJN PNE6 IF ERRORS ON FOLLOWING BLOCK
  16973. LDM MTDS
  16974. LPC 7077
  16975. PNEE EQU *-1
  16976. * LPC 7777 (ATS UNIT)
  16977. NJN PNE5 IF OTHER ERRORS
  16978. STD EC CLEAR ERROR CODE
  16979. LDD DS CLEAR ALERT BIT
  16980. LPC 3777
  16981. STD DS
  16982. STM //STER
  16983. AOM REMI SET TO ACCEPT DATA
  16984. PNE4 LDC POT11 SET TO ISSUE RECOVERED MESSAGE
  16985. STM POTA
  16986. AOD EI INCREMENT ITERATION COUNT
  16987. PNE5 LJM PNEX RETURN
  16988.  
  16989. PNE6 LMN /MTX/BEI&/MTX/STE
  16990. NJN PNE5 IF NOT TAPE MARK
  16991. LDC LDNI+/MTX/BEI SET TO RETURN TAPE MARK IF READ LABELS
  16992. STM POTG
  16993. UJN PNE4 SET TO ISSUE MESSAGE
  16994. POT SPACE 4,15
  16995. ** POT - POSITION TAPE.
  16996. *
  16997. * ENTRY TAPE IS POSITIONED AFTER THE BAD PRU.
  16998. * (EP) AND (EP+1) CONTAIN CURRENT RECOVERY CONDITIONS.
  16999. *
  17000. * EXIT (CN - CN+4) = CORRECT *IN* POINTER.
  17001. * TAPE IS POSITIONED BETWEEN LAST GOOD RECORD AND
  17002. * BAD PRU. (EP) AND (EP+1) CONTAIN NEXT RECOVERY
  17003. * CONDITIONS.
  17004. *
  17005. * CALLS BKS, CEC, CFC, CIF, CKR, *EMM*, FCN, HNG, ITM, POS,
  17006. * RDA, *RLA*, RSP, SCL, UBW, WIP.
  17007. *
  17008. * MACROS CALL.
  17009.  
  17010.  
  17011. POT SUBR ENTRY/EXIT
  17012. LDD EP+1 SAVE PARAMETERS FOR POSSIBLE RECOVERY
  17013. STM POTO+1
  17014. LDD EP
  17015. STM POTO
  17016. LPN 77
  17017. NJN POT1 IF NOT FIRST ENTRY
  17018. LDC 200 SET INITIAL RETRY COUNT TO 2
  17019. STD EP+1
  17020.  
  17021. * CHECK FOR LEGAL REENTRY CODE. SET RECOVERY PROCESS ADDRESS.
  17022.  
  17023. LDN 2
  17024. POT1 SBN 2
  17025. STD T1
  17026. SBN POTCL
  17027. PJN POT2 IF INCORRECT
  17028. LDD T1
  17029. LPN 1
  17030. ZJN POT3 IF VALID
  17031. POT2 RJM HNG HANG PP (NO RETURN)
  17032.  
  17033. * SET UP ERROR RECOVERY PROCESS.
  17034.  
  17035. POT3 LDM POTC,T1 SET PROCESSING ADDRESS
  17036. STM POTB STORE IN JUMP
  17037. LDM POTC+1,T1
  17038. STD SC
  17039. SHN 21-12
  17040. PJN POT4 IF NOT OPPOSITE PARITY MODE
  17041. LDC -2000 CLEAR OPPOSITE PARITY FLAG
  17042. RAD EP
  17043. POT4 LDM REMI
  17044. ZJN POT5 IF NOT ACCEPT DATA
  17045. LDM REMF UPDATE BID WINDOW
  17046. STM UBWB
  17047. RJM UBW
  17048. LDN 0 CLEAR ERROR CODE
  17049. STD EC
  17050. LJM POT13 CLEAR ERROR PARAMETER
  17051. * LJM POT11 (RECOVERED TAPE MARK OR NOISE)
  17052. POTA EQU *-1
  17053.  
  17054. * SET UP PRESET CONDITIONS AND JUMP TO ERROR PROCESSOR.
  17055.  
  17056. POT5 LDN ZERL PRESET CONDITIONS
  17057. CRD T4
  17058. LDD EC
  17059. STD T4
  17060. LMN /MTX/BEI
  17061. LJM * JUMP TO PROCESSOR
  17062. POTB EQU *-1 ADDRESS SET UP FROM TABLE *POTC*
  17063.  
  17064. ** LIST OF RETURN PROCESSORS INDEXED BY REENTRY CODE (EP 5-0).
  17065. *
  17066. *T, 12/ ADDRESS,1/R,1/P
  17067. * R REVERSE DIRECTION MODE.
  17068. * P OPPOSITE PARITY MODE.
  17069.  
  17070. POTC BSS 0 LIST OF PROCESSORS INDEXED BY REENTRY CODE
  17071. LOC 0
  17072. CON POT17,0 EP 5-0 = 0 OR 2 CODE (0 = FIRST ENTRY)
  17073. CON POT23,0 EP 5-0 = 4 CODE
  17074. CON POT23,2000 EP 5-0 = 6 CODE
  17075. CON POT29,0 EP 5-0 = 10 CODE
  17076. CON POT34,0 EP 5-0 = 12 CODE
  17077. LOC *O
  17078. POTCL EQU *-POTC
  17079.  
  17080. * COMMON CODE FOR ALL ERROR PROCESSORS TO DO THE REREAD OF
  17081. * THE BAD PRU.
  17082.  
  17083. POT6 CON 0 RETURN ADDRESS OF ERROR PROCESSOR
  17084. STD T1 SAVE REENTRY CODE
  17085. POTD AOD EI INCREMENT ERROR ITERATION
  17086. * PSN (7 TRACK F FORMAT, FIRST RETRY)
  17087. LDD CP CHECK CONTROL POINT ERROR FLAGS
  17088. ADN STSW
  17089. CRD CM
  17090. LDD CM+1
  17091. LPN 37
  17092. SBN SPET
  17093. MJN POT7 IF NO ERROR *SPET* OR ABOVE
  17094. LDN /MTX/EFT SET ERROR FLAG TERMINATION
  17095. LJM RET3 RETURN FATAL ERROR
  17096.  
  17097. * FIND CURRENT REENTRY POINT. SET UP REENTRY CODE IN (EP 5-0).
  17098.  
  17099. POT7 LDD EP SET REENTRY CODE FOR RETURN
  17100. LPC 700
  17101. LMD T1
  17102. STD EP BITS 5 - 0 = REENTRY CODE, CLIPPING FLAGS
  17103. LDM POTC-1,T1 LOAD DIRECTION/PARITY FLAGS FROM TABLE
  17104. LPC 7000
  17105. RAD EP
  17106. LPC 7000
  17107. RAM POTE
  17108. LDD EP CHECK NEED TO TOGGLE PARITY FOR NEXT READ
  17109. SHN 21-12
  17110. PJN POT7.1 IF NOT OPPOSITE PARITY MODE
  17111. LDN 5 TOGGLE PARITY MODE FOR NEXT READ
  17112. RJM FCN FUNCTION TO TOGGLE ODD/EVEN PARITY MODE
  17113. POT7.1 LDC 0
  17114. POTE EQU *-1 DIRECTION/PARITY FLAGS (EP 11-10)
  17115. NJN POT8 IF CANNOT REQUEUE
  17116. LJM RET2 REQUEUE
  17117.  
  17118. * CHECK OPERATION AND REREAD PRU.
  17119.  
  17120. POT8 RJM RSP RESET PARAMETERS
  17121. LDD FN
  17122. LMN /MTX/RLA
  17123. NJN POT9 IF NOT READ LABELS
  17124. LDC /RLA/CLA4 SET TO RELOAD ERROR PROCESSOR
  17125. STM /READ/MRD
  17126. POT9 RJM CKR CHECK READY
  17127. LJM POT10
  17128. POTI EQU *-1
  17129. * LJM RLB (LONG BLOCK)
  17130. * LJM RLI (LI FORMAT)
  17131.  
  17132. POT10 LDC * RESET CORRECT READ FUNCTION
  17133. POTF EQU *-1
  17134. STM //ITMA
  17135. RJM ITM INITIATE TAPE MOTION
  17136. LJM /READ/MRD+1 RETURN TO READ DRIVER
  17137.  
  17138. * COMMON CODE IF NO ERROR OR ERROR HAS BEEN RECOVERED.
  17139.  
  17140. POT11 LDM POTO+1 RESTORE EP AND EP+1
  17141. STD EP+1
  17142. LDM POTO
  17143. STD EP
  17144. SHN -3 CHECK IF DIFFERENT CLIP LEVEL
  17145. LPN 70
  17146. ZJN POT12 IF NORMAL CLIP
  17147.  
  17148. * SET BLOCK ID TO INVALID WITH CLIP LEVEL IN BITS 5-3.
  17149.  
  17150. LMN 4 SET BLOCK RECOVERED AT ALTERNATE CLIP
  17151. STM BIDW,WP
  17152. LDN 0
  17153. POT12 STD EC
  17154. LDM REMF RESTORE BID
  17155. STM UBWB
  17156. LDM POTF RESET CORRECT READ FUNCTION
  17157. STM //ITMA
  17158. CALL EMM ISSUE RECOVERED MESSAGE
  17159. RJM CFC CONNECT IF NEEDED
  17160. POT13 LDN 0 CLEAR ERROR PARAMETER
  17161. STD EI
  17162. STD EP
  17163. STD EP+1
  17164. LDD FN
  17165. LMN /MTX/RLA
  17166. ZJN POT14 IF READ LABELS
  17167. RJM RSP RESET PARAMETERS FOR NEXT OPERATION
  17168. LDD MA RESTORE IN POINTER
  17169. CWM INPA,ON
  17170. LDD MA
  17171. CRD CN
  17172. LJM POTX RETURN
  17173.  
  17174. * RELOAD READ LABELS OVERLAY.
  17175.  
  17176. POT14 LDN 0 SET ERROR CODE
  17177. * LDN /MTX/BEI (RECOVERED TAPE MARK)
  17178. POTG EQU *-1
  17179. STD EC
  17180. POT15 LDM CECB
  17181. LPN 77
  17182. ZJN POT16 IF AT MAGNET CONTROL POINT
  17183. LDN 0 CHANGE TO MAGNET,S CP
  17184. RJM CEC
  17185. POT16 CALL RLA RELOAD READ LABELS OVERLAY (NO RETURN)
  17186.  
  17187. * ENTRY POINT FOR PROCESSOR ONE (EP 5-0) = 2.
  17188.  
  17189. POT17 LDD EC LOAD ERROR CODE
  17190. NJN POT18 IF ERROR
  17191. LJM POT11 IF NO ERROR ON LAST REREAD
  17192.  
  17193. * NON - NOISE ERROR RECOVERY.
  17194.  
  17195. POT18 LDD EP+1 SET RETRY COUNT TO 5
  17196. LPC 3077
  17197. LMC 500
  17198. STD EP+1
  17199. POT19 LDD EP+1 SET PARITY REREAD COUNTS
  17200. SCN 77
  17201. LMN 52 NORMAL REREAD=5, OPPOSITE REREAD=2
  17202. STD EP+1
  17203. SHN -11
  17204. ZJN POT20 IF NOT ALTERNATE CLIPPING LEVEL
  17205. LCN 30 REDUCE RETRY ATTEMPTS
  17206. RAD EP+1
  17207. POT20 LDD EP+1
  17208. LPC 3000
  17209. SHN -3
  17210. LMD EP
  17211. LPC 300
  17212. ZJN POT21 IF CORRECT CLIPPING LEVEL
  17213. LDD EP+1
  17214. SHN -11
  17215. RJM SCL
  17216. POT21 LDN 1
  17217. * LDN 0 (ATTEMPT OPPOSITE PARITY)
  17218. POTH EQU *-1
  17219. NJN POT22 IF NOT 7-TRACK F FORMAT, FIRST RETRY
  17220. STM POTD SET TO NOT COUNT ITERATION
  17221. LDC UJNI-NJNI PREVENT BID WINDOW UPDATE
  17222. RAM /READ/MRDP
  17223. LJM POT27 BACKSPACE
  17224.  
  17225. * REREAD MANY TIMES.
  17226.  
  17227. POT22 RJM CIF CHECK INTERNAL FORMAT
  17228. RJM BKS BACKSPACE
  17229. RJM POS POSITION TO LAST GOOD RECORD
  17230. LDN 4 SET REENTRY CODE TO 4 (POT27)
  17231. RJM POT6 JUMP TO COMMON CODE TO REREAD (NO RETURN)
  17232.  
  17233. * ENTRY POINT FOR PROCESSOR TWO (EP 5-0) = 4.
  17234.  
  17235. POT23 NJN POT24 IF NOT TAPE MARK
  17236. LJM POT38 PROCESS RECOVERED ERROR
  17237.  
  17238. POT24 LDD EC LOAD ERROR CODE
  17239. NJN POT25 IF ERROR
  17240. LJM POT38 PROCESS RECOVERED ERROR
  17241.  
  17242. POT25 LDD EP+1
  17243. LPN 70
  17244. ZJN POT26 IF RETRIES EXHAUSTED
  17245. LCN 10
  17246. RAD EP+1
  17247. UJN POT22 REREAD
  17248.  
  17249. * CHECK FOR SEVEN OR NINE TRACK UNIT.
  17250.  
  17251. POT26 LDD HP
  17252. LPN 1
  17253. NJN POT28 IF 9 TRACK TAPE
  17254. LDD EP+1
  17255. SHN -11
  17256. NJN POT28 IF OPTIONAL CLIPPING BEING TRIED
  17257. LDD EP+1
  17258. LPN 7
  17259. ZJN POT28 IF OPPOSITE PARITY ATTEMPTS MADE
  17260. POT27 SOD EP+1
  17261. RJM BKS BACKSPACE
  17262. RJM POS POSITION TO LAST GOOD RECORD
  17263. LDN 6 SET REENTRY CODE TO 6 (POT27)
  17264. RJM POT6 JUMP TO COMMON CODE TO REREAD (NO RETURN)
  17265.  
  17266. * CLEAN THE TAPE.
  17267. * THIS IS NOT PERFORMED ON RETRIES AT OPTIONAL CLIP LEVELS.
  17268.  
  17269. POT28 LDD EP+1
  17270. SHN -11
  17271. NJN POT31 IF OPTIONAL CLIPPING LEVEL
  17272. RJM BKS BACK OVER BAD RECORD
  17273. RJM POS POSITION TO LAST GOOD RECORD
  17274.  
  17275. * REREAD THE ERROR BLOCK NON - STOP.
  17276.  
  17277. AOM POTE SET NO REQUEUE
  17278. LDN 10 SET REENTRY CODE TO 10 (POT41)
  17279. RJM POT6 JUMP TO COMMON CODE TO REREAD (NO RETURN)
  17280.  
  17281. * ENTRY POINT FOR PROCESSOR FOUR (EP 5-0) = 10.
  17282.  
  17283. POT29 LDD EC
  17284. NJN POT30 IF ERROR
  17285. LJM POT11 ISSUE RECOVERED MESSAGE
  17286.  
  17287. * RETRY THE ALGORITHM.
  17288.  
  17289. POT30 LDC -100
  17290. RAD EP+1
  17291. LPC 700
  17292. ZJN POT31 IF RETRIES EXHAUSTED
  17293. LJM POT19 SET PARITY REREAD COUNTS
  17294.  
  17295. * TRY THE OTHER CLIPPING LEVELS.
  17296.  
  17297. POT31 RJM BKS BACKSPACE OVER BAD PRU
  17298. LDD EP+1
  17299. SBD TH
  17300. PJN POT32 IF NOT FIRST TIME
  17301. ADC 3000 SET FIRST CLIP LEVEL TO TRY
  17302. POT32 STD EP+1
  17303. SHN -11
  17304. POTM ZJN POT33 IF ALL CLIPPING LEVELS EXHAUSTED
  17305. * UJN POT33 (FSC ADAPTOR AND NINE TRACK UNIT)
  17306. RJM SCL SELECT NEW CLIP LEVEL
  17307.  
  17308. * RESET RETRY COUNT FOR FORWARD REREADS.
  17309.  
  17310. LDD EP+1 RESET RETRY COUNT
  17311. LPC 3077
  17312. LMC 200
  17313. STD EP+1
  17314. LDN 2 SET UP REENTRY CODE TO 2 (POT22)
  17315. RJM POT6 JUMP TO COMMON CODE (NO RETURN)
  17316.  
  17317. POT33 LDD FN LEAVE POSITIONED BEFORE BLOCK IF LABEL
  17318. LMN /MTX/RLA
  17319. ZJN POT35 IF READ LABELS
  17320. LDN 12 SET UP REENTRY CODE TO 12 (POT46)
  17321. RJM POT6 JUMP TO COMMON CODE (NO RETURN)
  17322.  
  17323. * ENTRY POINT FOR PROCESSOR FIVE (EP 5-0) = 12.
  17324.  
  17325. POT34 LDN 4 SET UNUSABLE BID
  17326. STM UBWB
  17327. RJM UBW UPDATE BID WINDOW
  17328. LDD EC
  17329. LMN /MTX/BTL
  17330. NJN POT35 IF NOT *BLOCK TOO LARGE*
  17331. RJM BKS INSURE POSITIONED PAST BAD BLOCK
  17332. RJM RDA SKIP BLOCK
  17333. POT35 LDD FN
  17334. LMN /MTX/RDF
  17335. ZJN POT36 IF READ
  17336. LJM RET4 RETURN FATAL ERROR
  17337.  
  17338. * UNRECOVERABLE READ ERROR.
  17339.  
  17340. POT36 LDM FETO
  17341. SHN 21-10
  17342. PJN POT37 IF ERROR PROCESSING NOT SET
  17343. RJM RSP RESET PARAMETERS
  17344. RJM WIP WRITE IN POINTER TO BUFFER
  17345. LDD MD
  17346. SHN 21-5
  17347. PJN POT37 IF NOT 200 READ
  17348. LDD CN+3 READ CONTROL WORD
  17349. SHN 6
  17350. ADD RA
  17351. SHN 6
  17352. ADD CN+4
  17353. CRD CM
  17354. LDC 4000 SET UNRECOVERED ERROR INDICATION
  17355. RAD CM
  17356. LDD CN+3 REWRITE CONTROL WORD
  17357. SHN 6
  17358. ADD RA
  17359. SHN 6
  17360. ADD CN+4
  17361. CWD CM
  17362. POT37 LDC RET4 SET TO GIVE FATAL USER ERROR
  17363. STM /READ/WCBD
  17364. POTR EQU *-1
  17365. * STM /RLI/UIPC (LI FORMAT)
  17366. LJM POT13 CLEAR ERROR PARAMETER
  17367.  
  17368. * ERROR RECOVERED.
  17369.  
  17370. POT38 LDM POTO
  17371. SHN 21-12
  17372. MJN POT39 IF OPPOSITE PARITY MODE
  17373. LJM POT11 ISSUE RECOVERED MESSAGE
  17374.  
  17375. POT39 LDD FM
  17376. SHN -6
  17377. LMN /MTX/TFF
  17378. NJN POT40 IF NOT F FORMAT
  17379. RJM BKS
  17380. RJM POS POSITION TO LAST GOOD RECORD
  17381. LDN 0 CLEAR ERROR PARAMETERS
  17382. STD EI
  17383. STD EP
  17384. STD EP+1
  17385. LDD MD TOGGLE MODE
  17386. LMC 100
  17387. STD MD
  17388. LDD UP
  17389. LMN 1
  17390. STD UP
  17391. LJM RET2 REQUEUE
  17392.  
  17393. * TAPE RECOVERED IN OPPOSITE PARITY MODE.
  17394.  
  17395. POT40 LDN /MTX/OPA TAPE WRITTEN IN OPPOSITE PARITY
  17396. STD EC
  17397. LDD FN
  17398. LMN /MTX/RLA
  17399. ZJN POT41 IF READ LABELS
  17400. LDM REMF RESTORE BID
  17401. STM UBWB
  17402. CALL EMM
  17403. AOD BL+1 INCREMENT BLOCK COUNT
  17404. SHN -14
  17405. RAD BL
  17406. RJM CFC CONNECT IF NEEDED
  17407. LJM RET4 RETURN FATAL ERROR
  17408.  
  17409. POT41 LJM POT15 RELOAD READ LABELS
  17410. PTM SPACE 4,10
  17411. ** PTM - PROCESS TAPE MARK.
  17412. *
  17413. * EXIT IF NOT LABELED, EOF STATUS SET IN (RS) AND (MD).
  17414. * (REMF) SET TO 1 IF TAPE MARK.
  17415.  
  17416.  
  17417. PTM4 LDN /MTX/BEI RETURN POSSIBLE EOI
  17418. RAM REMG
  17419.  
  17420. PTM SUBR ENTRY/EXIT
  17421. LDN 1 SET TAPE MARK INDICATION
  17422. STM REMF
  17423. LDD EP
  17424. LPN 77
  17425. ZJN PTM1 IF FIRST ENTRY
  17426. LDC POT11 SET RECOVERED TAPE MARK
  17427. STM POTA
  17428. LDC LDNI+/MTX/BEI SET TO RETURN TAPE MARK IF READ LABELS
  17429. STM POTG
  17430. PTM1 LDD FN
  17431. LMN /MTX/RLA
  17432. ZJN PTMX IF READ LABELS
  17433. LDD LT
  17434. SHN 21-12
  17435. MJN PTM4 IF LABELED
  17436. LDD DS
  17437. LPN 10
  17438. NJN PTM4 IF EOT
  17439. LDD FM
  17440. SHN -6
  17441. SBN /MTX/TFSI+1
  17442. MJN PTM4 IF INTERNAL MODES
  17443. SBN /MTX/TFLI-/MTX/TFSI-1
  17444. ZJP PTM4 IF LI FORMAT
  17445. LDD MD SET EOF STATUS
  17446. SCN 14
  17447. LMN 10
  17448. STD MD
  17449. LDN 2
  17450. STD TB
  17451. LDD FM
  17452. SHN -6
  17453. LMN /MTX/TFS
  17454. ZJN PTM2 IF S FORMAT
  17455. LMN /MTX/TFL&/MTX/TFS
  17456. NJN PTM3 IF NOT L FORMAT
  17457. PTM2 LDM //CIOE
  17458. LPC 770
  17459. LMC 260
  17460. NJN PTM3 IF NOT 260 READ CODE
  17461. LDN 26 SET TO RETURN 271 STATUS
  17462. STD TB
  17463. PTM3 LJM PTMX RETURN
  17464. TITLE SUBROUTINES.
  17465. ABC SPACE 4,10
  17466. ** ABC - ADJUST BYTE COUNT FOR 9 TRACK TAPES.
  17467. *
  17468. * ENTRY (BY) = BYTE COUNT.
  17469. * (DS) = DEVICE STATUS.
  17470. *
  17471. * (ABCA) = 0 IF NO BYTE ADJUSTMENT.
  17472.  
  17473.  
  17474. ABC SUBR ENTRY/EXIT
  17475. LDD HP
  17476. LPN 1
  17477. ZJN ABCX IF 7 TRACK
  17478.  
  17479. * CORRECT 9 TRACK BYTE COUNT.
  17480.  
  17481. ABCA LDD DS
  17482. * UJN ABC1 (ATS UNIT)
  17483. LPN 40
  17484. ZJN ABC1 IF NO ODD COUNT
  17485. LDD BY
  17486. LPN 2
  17487. ZJN ABC1 IF NOT MODULO 4, 2 OR 3
  17488. SOD BY
  17489.  
  17490. * ADJUST BUFFER LENGTH FOR I FORMAT.
  17491.  
  17492. ABC1 LDD FM
  17493. SHN -6
  17494. * LMN /MTX/TFI
  17495. ERRNZ /MTX/TFI
  17496. NJN ABCX IF NOT I FORMAT
  17497. LDD BY
  17498. ZJN ABCX IF NO DATA READ
  17499. SBN 1
  17500. ZJN ABCX IF POSSIBLE TAPE MARK READ
  17501. STD T2 CALCULATE WORD COUNT
  17502. SHN 1 13*BYTES
  17503. ADD T2
  17504. SHN 2
  17505. ADD T2
  17506. SHN 14 (-6) (13*BYTES)/64
  17507. STD T0
  17508. SHN 6+2 4*13*BYTES (52*BYTES)
  17509. SBD T2 51*BYTES
  17510. ADD T0 (51*BYTES)+((13*BYTES)/64)
  17511. SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
  17512. LPN 1
  17513. STM ABCB SET EXIT CONDITION
  17514. LJM ABCX RETURN
  17515.  
  17516.  
  17517. ABCB CON 0
  17518. BKS SPACE 4,10
  17519. ** BKS - BACKSPACE TAPE.
  17520. *
  17521. * EXIT (A) = NEGATIVE IF BOT.
  17522. *
  17523. * CALLS CKR, FCN, RTR, STW, WFC.
  17524.  
  17525.  
  17526. BKS SUBR ENTRY/EXIT
  17527. LDN 2 WAIT NOT BUSY
  17528. RJM STW
  17529. RJM CKR CHECK READY
  17530. LDC F0113 BACKSPACE
  17531. BKSA EQU *-1
  17532. RJM FCN
  17533. RJM WFC WAIT FUNCTION COMPLETE
  17534. LDD DS RETURN LOAD POINT STATUS
  17535. SHN 21-2
  17536. UJN BKSX RETURN
  17537. BTW SPACE 4,10
  17538. ** BTW - BUILD TEMPORARY WINDOW.
  17539. *
  17540. * ENTRY (A) = NUMBER OF BLOCKS TO MOVE BACK.
  17541. *
  17542. * EXIT (TBDW) = TEMPORARY BID WINDOW IF FIRST BKSP NOT AT
  17543. * LOAD POINT.
  17544. *
  17545. * USES T8, T9.
  17546. *
  17547. * CALLS BKS, SOB.
  17548.  
  17549.  
  17550. BTW SUBR ENTRY/EXIT
  17551. STD T8 SAVE ENTRY CONDITION
  17552. LDC F0113 INSURE BACKSPACE FUNCTION SET
  17553. STM BKSA
  17554. LDN 4 SETUP FIRST BID BYTE
  17555. STM TBDW
  17556. BTW1 RJM BKS BACKSPACE
  17557. MJN BTW2 IF BOT
  17558. SOD T8
  17559. NJN BTW1 LOOP FOR NEXT BLOCK
  17560. BTW2 LDM POSB SET BID POINTER
  17561. STD T9
  17562. LDM POSA CHECK FOR LOAD POINT ON FIRST BKSP
  17563. SBD T8
  17564. ZJN BTWX IF FIRST BKSP AT LOAD POINT
  17565. LDN 0 CLEAR PRU COUNTER
  17566. STD T8
  17567. BTW3 RJM SOB SET UP AND READ ONE BLOCK
  17568. LDM UBWB
  17569. STM TBDW+1,T8
  17570. AOD T9 INCREMENT POINTER
  17571. LPN 7 RESET POINTER FOR POSSIBLE WRAP AROUND
  17572. STD T9
  17573. AOD T8
  17574. LMM POSA
  17575. NJN BTW3 LOOP FOR NEXT BLOCK
  17576. LJM BTWX RETURN
  17577. CBW SPACE 4,15
  17578. ** CBW - COMPARE BID WINDOWS.
  17579. *
  17580. * COMPARE THE PERMANENT WINDOW (BIDW) TO THE TEMPORARY
  17581. * WINDOW (TBDW).
  17582. *
  17583. * ENTRY (T1) = FIRST BYTE IN BIDW TO COMPARE.
  17584. * (T2) = FIRST BYTE IN TBDW TO COMPARE.
  17585. *
  17586. * EXIT (A) = 0 IF MATCH OR NOT BLOCK ID EQUIPMENT.
  17587. * (A, 13-6) = NUMBER OF INVALID BLOCK ID-S.
  17588. * (A, 5-0) = NUMBER OF VALID BLOCK ID MISMATCHES.
  17589. *
  17590. * USES T1 - T4.
  17591.  
  17592.  
  17593. CBW SUBR ENTRY/EXIT
  17594. LDD CF CHECK IF BLOCK ID EQUIPMENT
  17595. LPC 300
  17596. LMC 300
  17597. ZJN CBWX IF NO BLOCK ID
  17598. LDN 0
  17599. STD T4
  17600. STD T3
  17601. LDD T1 SAVE (T1)
  17602. STM CBWA
  17603. CBW1 LDM BIDW,T1 LOAD HISTORY BLOCK ID
  17604. LMN 4
  17605. ZJN CBW3 IF INVALID BID IN HISTORY
  17606. LDM TBDW,T2 LOAD BID FROM TEMP WINDOW
  17607. LMN 4 INVALID CHECK
  17608. NJN CBW2 IF NOT INVALID BID IN TEMP WINDOW
  17609. AOD T3 CHECK NEXT BID
  17610. UJN CBW3 CONTINUE
  17611.  
  17612. CBW2 LDM BIDW,T1 LOAD BID FROM HISTORY
  17613. LMM TBDW,T2
  17614. ZJN CBW3 IF NO ERROR
  17615. AOD T4
  17616. CBW3 LDD WP
  17617. SBM CBWA
  17618. ZJN CBW4 IF ONLY ONE BLOCK ID TO COMPARE
  17619. AOD T2
  17620. AOD T1 INCREMENT POINTER
  17621. LPN 7 RESET POINTER FOR POSSIBLE WRAP AROUND
  17622. STD T1
  17623. LMD WP
  17624. NJN CBW1 IF NOT END OF COMPARE
  17625. CBW4 LDD T3 FORM BID COMPARE RESULTS EXIT
  17626. SHN 6
  17627. ADD T4
  17628. LJM CBWX RETURN
  17629.  
  17630.  
  17631. CBWA CON 0 STORAGE FOR (T1)
  17632. CFC SPACE 4,10
  17633. ** CFC - CHECK IF CONNECT NEEDED.
  17634. *
  17635. * ENTRY (RELA) = 0 IF CONNECT NEDDED.
  17636. *
  17637. * CALLS CUI.
  17638.  
  17639.  
  17640. CFC SUBR ENTRY/EXIT
  17641. LDD DS
  17642. SHN 21-11
  17643. PJN CFC1 IF UNIT CONNECTED
  17644. LDN 0
  17645. STM //RELA
  17646. CFC1 LDM //RELA
  17647. NJN CFCX IF CONNECTED
  17648. STD T1 SAVE DETAILED STATUS
  17649. CFC2 LDM MTDS,T1
  17650. STM POTQ,T1
  17651. AOD T1
  17652. LMN 10
  17653. NJN CFC2 IF NOT END OF DETAILED STATUS
  17654. RJM CUI CONNECT UNIT
  17655. LDN 0 RESTORE DETAILED STATUS
  17656. STD T1
  17657. CFC3 LDM POTQ,T1
  17658. STM MTDS,T1
  17659. AOD T1
  17660. LMN 10
  17661. NJN CFC3 IF NOT END OF DETAILED STATUS
  17662. UJN CFCX RETURN
  17663. CIF SPACE 4,10
  17664. ** CIF - CHECK INTERNAL FORMAT (I AND LI).
  17665. *
  17666. * CALLS BKS, RDA.
  17667.  
  17668.  
  17669. CIF2 RJM BKS BACKSPACE
  17670.  
  17671. CIF SUBR ENTRY/EXIT
  17672. LDD EC
  17673. LMN /MTX/BNE
  17674. NJN CIFX IF NOT BLOCK NUMBER ERROR
  17675. LDM //BNEI
  17676. CIFA EQU *-1
  17677. * LDM /RLI/VDAE (LI FORMAT)
  17678. LMD BY
  17679. CIFB EQU *-1
  17680. * PSN (LI FORMAT)
  17681. NJN CIFX IF BLOCK LENGTH ERROR
  17682. LDD EI
  17683. SCN 7
  17684. NJN CIF1 IF 10 ATTEMPTS
  17685. LDM //BNEI+2
  17686. SBD BL+1
  17687. ZJN CIFX IF CORRECT BLOCK
  17688. PJN CIF2 IF MISSED A BLOCK
  17689. RJM RDA SKIP OVER BLOCK
  17690. UJN CIFX RETURN
  17691.  
  17692. CIF1 LDM //BNEI+1 SET BLOCK NUMBER TO CURRENT BLOCK NUMBER
  17693. STD BL
  17694. LDM //BNEI+2
  17695. STD BL+1
  17696. LJM RET4 RETURN FATAL ERROR
  17697. CIS SPACE 4,10
  17698. ** CIS - CHECK IF ISMT GCR SKIP REVERSE.
  17699. *
  17700. * CALLS BKS.
  17701.  
  17702.  
  17703. CIS SUBR ENTRY/EXIT
  17704. LDD FN
  17705. LMN /MTX/SKP
  17706. NJN CISX IF NOT SKIP FUNCTION
  17707. LDM /READ/ISKR
  17708. ZJN CISX IF NOT ISMT GCR SKIP REVERSE
  17709. RJM BKS POSITION TAPE CORRECTLY FOR RECOVERY
  17710. LDN F0013 SET FORESPACE FUNCTION
  17711. STM BKSA
  17712. LDN 0 FORCE REQUEUE
  17713. STM POTE+1
  17714. UJN CISX RETURN
  17715.  
  17716. CKR SPACE 4,10
  17717. ** CKR - CHECK READY.
  17718. * IF UNIT NOT READY, A TIME OUT WILL BE PERFORMED WAITING FOR
  17719. * UNIT TO BECOME READY BEFORE GIVING A FATAL ERROR. THIS
  17720. * SHOULD ALLOW RECOVERY FROM MOMENTARY NOT READY CONDITONS.
  17721. *
  17722. * CALLS CFC, FCN.
  17723.  
  17724.  
  17725. CKR SUBR ENTRY/EXIT
  17726. LCN 0 PRESET TIME OUT
  17727. STM CKRA
  17728. CKR1 LDN F0012 GET STATUS
  17729. RJM FCN
  17730. ACN CH
  17731. IAN CH+40B
  17732. DCN CH+40
  17733. SHN 21-0
  17734. MJN CKRX RETURN IF READY
  17735. SHN 22-11
  17736. PJN CKR2 IF UNIT CONNECTED
  17737. RJM CFC CONNECT UNIT
  17738. CKR2 SOM CKRA
  17739. NJN CKR1 IF NO TIME OUT
  17740. LDN /MTX/RDR READY DROP
  17741. LJM RET3 RETURN ERROR CODE
  17742.  
  17743.  
  17744. CKRA CON 7777 TIME OUT COUNTER
  17745. IMU SPACE 4,10
  17746. ** IMU - ISSUE MESSAGE TO ERROR LOG AND UNLOAD TAPE.
  17747. *
  17748. * ENTRY (A) = *TCF* OR *BFR*.
  17749. *
  17750. * EXIT TO *RET4*.
  17751. *
  17752. * CALLS *EMM*, FCN, WFC.
  17753.  
  17754.  
  17755. IMU BSS 0 ENTRY
  17756. STD EC
  17757. CALL EMM ISSUE MESSAGE TO ERROR LOG
  17758. AOD EI
  17759. LDC F0110
  17760. RJM FCN UNLOAD THE TAPE
  17761. RJM WFC WAIT END OF OPERATION
  17762. LJM RET4 RETURN ERROR CODE
  17763. POS SPACE 4,15
  17764. ** POS - POSITION TAPE.
  17765. *
  17766. * ENTRY (POSA) = NUMBER OF BLOCKS TO BACKUP.
  17767. * TAPE POSITIONED BEFORE BAD BLOCK.
  17768. *
  17769. * EXIT TAPE POSITION VERIFIED.
  17770. * SINGLE BLOCK MISPOSITION MESSAGES ISSUED AS NEEDED.
  17771. *
  17772. * USES T1, T2, T9.
  17773. *
  17774. * CALLS BKS, BTW, CBW, CFC, *EMM*, SOB.
  17775. *
  17776. * MACROS CALL.
  17777.  
  17778.  
  17779. POS5 STD EC
  17780. LDM REMF RESTORE BID
  17781. STM UBWB
  17782. CALL EMM ISSUE ERROR MESSAGE
  17783. RJM CFC CONNECT IF NEEDED
  17784.  
  17785. POS SUBR ENTRY/EXIT
  17786. LDD WP
  17787. SBM POSA
  17788. ADN 1
  17789. PJN POS1 IF NO WRAP AROUND
  17790. ADN 10
  17791. POS1 STM POSB STORE STARTING POINTER
  17792. LDC 0
  17793. POSA EQU *-1
  17794. RJM BTW BUILD TEMPORARY WINDOW
  17795. LDN 1
  17796. STD T2
  17797. LDC *
  17798. POSB EQU *-1
  17799. STD T1
  17800. RJM CBW COMPARE WINDOWS
  17801. ZJN POSX IF GOOD COMPARE
  17802. SHN -6 CHECK FOR INVALIDS IN RECOVERY WINDOW
  17803. NJN POSX IF INVALIDS
  17804. LDN 2 CHECK FOR TOO FAR BACKWARD
  17805. STD T2
  17806. LDM POSB
  17807. STD T1
  17808. RJM CBW
  17809. LPN 77 CHECK FOR ONLY MISCOMPARES
  17810. NJN POS3 IF NOT TOO FAR BACKWARD
  17811. LDD WP
  17812. STD T9
  17813. RJM SOB SET UP AND READ ONE BLOCK
  17814. LDM UBWB
  17815. LMM BIDW,WP
  17816. NJN POS2 IF POSITION LOST
  17817. LDN /MTX/SMB ISSUE SINGLE BLOCK MISPOSITION MESSAGE
  17818. LJM POS5 ISSUE ERROR MESSAGE
  17819.  
  17820. POS2 LDN /MTX/PLO ISSUE POSITION LOST MESSAGE
  17821. STD EC
  17822. LDM REMF RESTORE ORIGINAL BID FOR MESSAGE
  17823. STM UBWB
  17824. CALL EMM ISSUE MESSAGE
  17825. RJM CFC CONNECT IF NEEDED
  17826. LJM RET4 RETURN FATAL ERROR
  17827.  
  17828. POS3 LDN 0 CHECK FOR TOO FAR FORWARD
  17829. STD T2
  17830. LDM POSB
  17831. STD T1
  17832. RJM CBW
  17833. LPN 77 CHECK FOR ONLY MISCOMPARES
  17834. POS4 NJN POS2 IF POSITION LOST
  17835. RJM BKS CORRECT FOR TOO FAR FORWARD AND RETRY
  17836. LDM POSA
  17837. RJM BTW
  17838. LDN 1
  17839. STD T2
  17840. LDM POSB
  17841. STD T1
  17842. RJM CBW
  17843. LPN 77 CHECK FOR ONLY MISCOMPARES
  17844. NJN POS4 IF POSITION LOST
  17845. LDN /MTX/SMF ISSUE SINGLE BLOCK MISPOSITION MESSAGE
  17846. LJM POS5 ISSUE ERROR MESSAGE
  17847. RCI SPACE 4,10
  17848. ** RCI - READ *CIO* INFORMATION FROM *MAGNET,S FL.
  17849. *
  17850. * EXIT (T6 - T7) = FET ADDRESS.
  17851. * (T1 - T5) = UCIC WORD.
  17852. *
  17853. * USES CM - CM+4.
  17854. *
  17855. * CALLS HNG.
  17856. *
  17857. * MACROS DELAY, MONITOR, PAUSE.
  17858.  
  17859.  
  17860. RCI3 LDD MA READ UDT WORDS
  17861. CRD T6-3
  17862. ADN 2
  17863. CRD T1
  17864.  
  17865. RCI SUBR ENTRY/EXIT
  17866. RCI1 LDM UADA SET FWA OF DESIRED UDT WORDS
  17867. ADN /MTX/UCIA
  17868. STD CM+4
  17869. LDC 300 REQUEST THREE WORDS
  17870. STD CM+3
  17871. LDN 0 REQUEST READ FROM *MAGNET*
  17872. STD CM+1
  17873. LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
  17874. STD CM+2
  17875. MONITOR TDAM
  17876. LDD CM+1
  17877. ZJN RCI3 IF DONE
  17878. SBN 2
  17879. PJN RCI2 IF MOVE NOT IN PROGRESS
  17880. PAUSE NE
  17881. DELAY
  17882. UJN RCI1 REISSUE REQUEST
  17883.  
  17884. RCI2 RJM HNG HANG PP
  17885. RDA SPACE 4,10
  17886. ** RDA - READ DATA.
  17887. *
  17888. * EXIT (A) = (T4) = 0, NO ERROR.
  17889. * (BY) = BYTE COUNT OF BLOCK.
  17890. * (UBWB) SET TO 1 IF TAPE MARK.
  17891. *
  17892. * CALLS ABC, CKR, FCN, ITM, MCC, WEO.
  17893.  
  17894.  
  17895. RDA SUBR ENTRY/EXIT
  17896. RJM CKR CHECK FOR READY
  17897. LDN F0040 READ FORWARD
  17898. RJM FCN PROCESS FUNCTION
  17899. ACN CH
  17900. RDA1 LCN 0 SET DATA PARAMETERS
  17901. STD T3
  17902. LDN 20
  17903. STD T2
  17904. LDC 1010 SET BUFFER SIZE
  17905.  
  17906. * INPUT DATA.
  17907.  
  17908. STD BY INPUT FIRST 1010 BYTES (104D CM WORDS)
  17909. IAM EBUF,CH
  17910. ZJN RDA2 IF NOT END OF DATA
  17911. LMC -0
  17912. RAD BY
  17913. LJM RDA6 ADJUST BYTE COUNT
  17914.  
  17915. RDA2 LDN 50
  17916. IAM XBUF,CH
  17917. NJN RDA3 IF END OF DATA
  17918. SOD T3
  17919. NJN RDA2 IF NOT END OF INPUT
  17920. LDN 50
  17921. IAM XBUF,CH
  17922. NJN RDA3 IF END OF DATA
  17923. SOD T2
  17924. NJN RDA2 IF NOT TIME OUT
  17925. LDD EC PRESERVE ERROR CODE
  17926. RJM MCC
  17927. LCN 0
  17928. STD BY
  17929. LJM RDA7 WAIT FOR END OF OPERATION
  17930.  
  17931. RDA3 LMC -0
  17932. ADN 50
  17933. RAD BY
  17934. RDA4 AOD T3
  17935. SHN -14
  17936. NJN RDA5 IF ROLLOVER
  17937. LDN 50
  17938. RAD BY
  17939. UJN RDA4 LOOP
  17940.  
  17941. RDA5 AOD T2
  17942. LMN 21
  17943. ZJN RDA6 IF ALL BYTES COUNTED
  17944. LCN 0 SET BYTE COUNT TO 7777
  17945. STD BY
  17946. RDA6 RJM ABC ADJUST BYTE COUNT
  17947. RDA7 RJM WEO WAIT END OF OPERATION
  17948. SCN 74
  17949. ZJN RDA9 IF NO ERRORS
  17950. SHN 21-10
  17951. RDAA PJN RDA8 IF NOT NOISE
  17952. * UJN RDA8 (ATS UNIT)
  17953. LDN 42 ISSUE REPEAT READ
  17954. RJM FCN
  17955. ACN CH
  17956. LJM RDA1 REINITIATE READ
  17957.  
  17958. RDA8 LDM MTDS
  17959. LPC 7077
  17960. RDAB EQU *-1
  17961. * LPC 7777
  17962. ZJN RDA9 IF ONLY WARNING STATUS
  17963. LCN 0
  17964. RDA9 STM RDAC
  17965. LDC * SET EXIT CONDITION
  17966. RDAC EQU *-1
  17967. STD T4
  17968. LDM ABCB
  17969. ZJN RDA10 IF NO BYTE ADJUSTMENT
  17970. SOD BY
  17971. RDA10 LDD DS
  17972. LPN 20
  17973. LMN 20
  17974. NJN RDA11 IF NOT TAPE MARK
  17975. STD BY
  17976. LDN 1 SET TAPE MARK INDICATION
  17977. STM UBWB
  17978. LDD HP
  17979. LPN 1
  17980. NJN RDA11 IF 9 TRACK
  17981. LDD MD
  17982. SHN 21-6
  17983. MJN RDA11 IF 7 TRACK CODED
  17984. LDN 0 CLEAR ERROR INDICATION
  17985. STD T4
  17986. RDA11 LDD T4
  17987. LJM RDAX RETURN
  17988. RSP SPACE 4,10
  17989. ** RSP - RESET PROCESSOR FOR NEXT OPERATION.
  17990. *
  17991. * EXIT (CN - CN+4) = IN POINTER PRIOR TO READ.
  17992. *
  17993. * CALLS /CPP/CAL, *CPP*, /CPP/INM, RCI, /CPP/SFP.
  17994. *
  17995. * MACROS CALL.
  17996.  
  17997.  
  17998. RSP SUBR ENTRY/EXIT
  17999. LDM /READ/WOCN RESTORE WORD COUNT
  18000. STD WC
  18001. CALL CPP RELOAD ADDRESS RELOCATOR
  18002. LDD FN
  18003. LMN /MTX/RDF
  18004. NJN RSPX IF NOT READ DATA
  18005. RJM RCI READ UDT
  18006. RJM /CPP/CAL CALCULATE PARAMETERS
  18007. LDN 2 READ IN
  18008. RJM /CPP/SFP
  18009. UJN RSPX RETURN
  18010. SCL SPACE 4,10
  18011. ** SCL - SET CLIPPING LEVEL.
  18012. *
  18013. * ENTRY (A) = CLIPPING LEVEL DESIRED.
  18014. *
  18015. * CALLS FCN.
  18016.  
  18017.  
  18018. SCL SUBR ENTRY/EXIT
  18019. SHN 6
  18020. STD T1
  18021. LDD EP
  18022. LPC 7077
  18023. LMD T1
  18024. STD EP
  18025. LPC 300
  18026. ZJN SCLX RETURN IF NORMAL CLIPPING LEVEL
  18027. ADN 6
  18028. RJM FCN
  18029. UJN SCLX RETURN
  18030. SOB SPACE 4,10
  18031. ** SOB - SET UP AND READ ONE BLOCK.
  18032. *
  18033. * ENTRY (T9) = POINTER TO BID WINDOW.
  18034. *
  18035. * EXIT (UBWB) = BID OF READ CORRECTED FOR CLIPPING LEVEL AND
  18036. * READ ERRORS.
  18037. *
  18038. * USES T0.
  18039. *
  18040. * CALLS RDA, FCN.
  18041.  
  18042.  
  18043. SOB2 RJM RDA READ A BLOCK
  18044. ZJN SOBX IF GOOD READ
  18045. SOB3 LDN 4 SET UNUSABLE BID
  18046. STM UBWB
  18047.  
  18048. SOB SUBR ENTRY/EXIT
  18049. LDD MD CHECK IF PARITY CHANGE NEEDED
  18050. SHN -5
  18051. LMM BIDW,T9
  18052. LPN 2
  18053. ZJN SOB1 IF NO CHANGE NEEDED
  18054. LDD HP
  18055. LPN 1
  18056. NJN SOB1 IF 9 TRACK
  18057. LDN 5 TOGGLE TO OPPOSITE PARITY
  18058. RJM FCN
  18059. SOB1 LDM BIDW,T9 CHECK IF CHANGE IN CLIPPING LEVEL NEEDED
  18060. SHN 21-2
  18061. PJN SOB2 IF NO CHANGE NEEDED
  18062. LPN 7 SET CLIPPING LEVEL
  18063. SHN 6
  18064. ADN 6
  18065. RJM FCN
  18066. RJM RDA READ A BLOCK
  18067. NJN SOB3 IF ERROR
  18068. LDM BIDW,T9 ADD CLIPPING LEVEL TO LAST BID
  18069. LPN 74
  18070. STD T0
  18071. LDM UBWB
  18072. SCN 74
  18073. LMD T0
  18074. STM UBWB
  18075. LJM SOBX RETURN
  18076. WFC SPACE 4,10
  18077. ** WFC - WAIT BACKSPACE FUNCTION COMPLETE.
  18078. * TIMES OUT APPROXIMATELY 25 FEET OF TAPE.
  18079. *
  18080. * EXIT (DS) = UNIT STATUS.
  18081. *
  18082. * USES T2.
  18083. *
  18084. * CALLS //STW.
  18085.  
  18086.  
  18087. WFC2 CON 0 ENTERED VIA *RJM* FROM //STW
  18088. SOD T2
  18089. NJN WFC1 IF NOT TIMEOUT
  18090. LDC //ERR RESET ERROR EXIT
  18091. STM //STWC
  18092. UJN WFC1 ATTEMPT 1 MORE WAIT
  18093.  
  18094. WFC SUBR ENTRY/EXIT
  18095. LDN 77 SET DELAY TO MAXIMUM
  18096. STD T2
  18097. LDC WFC2 SET RETURN ON TIMEOUT FROM //STW
  18098. STM //STWC
  18099. WFC1 LDN 2 WAIT NOT BUSY
  18100. RJM //STW
  18101. LDC //ERR RESET ERROR EXIT
  18102. STM //STWC
  18103. UJN WFCX RETURN
  18104. WIP SPACE 4,15
  18105. ** WIP - WRITE IN POINTER PRIOR TO READ TO USER BUFFER.
  18106. *
  18107. * ENTRY (INPA - INPA+4) = POINTER TO NEXT BUFFER LOCATION.
  18108. * (CN - CN+4) = IN POINTER PRIOR TO READ.
  18109. *
  18110. * EXIT IN POINTER WRITTEN TO USER CIO BUFFER.
  18111. * PARITY ERROR BIT SET IN FET+0.
  18112. *
  18113. * USES CM - CM+4.
  18114. *
  18115. * CALLS RCI.
  18116.  
  18117.  
  18118. WIP SUBR ENTRY/EXIT
  18119. LDM INPA+3 CALCULATE ABSOLUTE BUFFER ADDRESS
  18120. SHN 6
  18121. ADD RA
  18122. SHN 6
  18123. ADM INPA+4
  18124. CWD CN WRITE OLD IN POINTER TO BUFFER
  18125. RJM RCI READ UDT INFORMATION
  18126. LDD T6 READ FET+0
  18127. SHN 6
  18128. ADD RA
  18129. SHN 6
  18130. ADD T7
  18131. CRD CM
  18132. LDD CM+4 SET PARITY ERROR BIT
  18133. LPC 777
  18134. LMC 4000
  18135. STD CM+4
  18136. LDD CM+3
  18137. SCN 3
  18138. STD CM+3
  18139. LDD T6 REWRITE FET+0
  18140. SHN 6
  18141. ADD RA
  18142. SHN 6
  18143. ADD T7
  18144. CWD CM
  18145. LJM WIPX RETURN
  18146. SPACE 4,10
  18147. ADDR TSAD SMER
  18148. SPACE 4,10
  18149. ** BUFFERS FOR READING DURING READ RECOVERY.
  18150.  
  18151.  
  18152. EBUF BSS 0
  18153. XBUF EQU EBUF+1012
  18154. ERRNG 7777-XBUF-50 WRAPPED AROUND
  18155. ERROVL SPACE 4,10
  18156. ERROVL
  18157. CTAB SPACE 4,10
  18158. SPACE 4,10
  18159. ** NOTE - CODE AFTER THIS POINT WILL BE DESTROYED WHEN CALLING
  18160. * THE ERROR PROCESSOR *EMM* OR WHEN THE TAPE IS POSITIONED.
  18161. * ALL CALLS TO THIS CODE MUST BE DONE PRIOR TO THAT POINT.
  18162. SPACE 4,10
  18163. ** CTAB - CHANNEL TABLE.
  18164.  
  18165.  
  18166. CTAB CHTB
  18167. EBW SPACE 4,20
  18168. ** EBW - EVALUATE BID WINDOW.
  18169. *
  18170. * ENTRY (BIDW) = BID WINDOW.
  18171. *
  18172. * EXIT (POSA) = NUMBER OF BLOCKS TO BACKSPACE.
  18173. * NUMBER OF BLOCKS TO BACKSPACE = 2 IF
  18174. * 1) NO BID PRESENT.
  18175. * 2) INVALID HISTORY BLOCK ID ENCOUNTERED.
  18176. * 3) 9 TRACK *NRZI* *CRC* CORRECTABLE ERROR. THIS IS
  18177. * BECAUSE OF HARDWARE RESTRICTIONS ON THE NEXT
  18178. * READ.
  18179. * 4) .GT. 5 BLOCK ID-S ENCOUNTERED.
  18180. * 5) END OF BLOCK ID WINDOW ENCOUNTERED.
  18181. * (REMF) = BID FROM LAST READ.
  18182. * (T2) = NUMBER OF DIFFERENT BLOCK ID-S.
  18183. * (T4) = NUMBER OF SAME BLOCK ID-S.
  18184. *
  18185. * USES T1 - T4.
  18186.  
  18187.  
  18188. EBW SUBR ENTRY/EXIT
  18189. LDD CF CHECK IF BID PRESENT
  18190. LPC 300
  18191. LMC 300
  18192. NJN EBW2 IF BID PRESENT
  18193. EBW1 LJM EBW11 FORCE BACKSPACE OF TWO BLOCKS
  18194.  
  18195. EBW2 LDM UBWB SAVE CURRENT BID
  18196. STM REMF
  18197. EBW3 LDD HP CHECK IF 9 TRACK NRZI CRC CORRECTABLE ERROR
  18198. LPN 1
  18199. ZJN EBW4 IF NOT 9 TRACK
  18200. LDM DNCV
  18201. LPN 70
  18202. LMN /MTX/D08*10
  18203. NJN EBW4 IF NOT 800 (NRZI)
  18204. LDM MTDS+3
  18205. EBWA EQU *-1
  18206. * LDM MTDS+6 (ATS CONTROLLER)
  18207. EBWB SHN 21-12
  18208. * SHN 21-11 (ATS CONTROLLER)
  18209. MJN EBW1 IF CRC CORRECTABLE ERROR
  18210. EBW4 LDD WP SET UP DIRECTS
  18211. STD T1
  18212. LDN 0
  18213. STD T2
  18214. STD T4
  18215. LCN 0
  18216. STD T3
  18217. EBW5 LDD T2 CHECK FOR MAX COUNT OF 5
  18218. ADD T4
  18219. SBN 5
  18220. PJN EBW1 IF MAX COUNT REACHED, FORCE SET 2
  18221. LDM BIDW,T1
  18222. LMN 4
  18223. ZJN EBW12 IF INVALID, STOP SCAN
  18224. LPN 1
  18225. ZJN EBW7 IF NOT TAPE MARK
  18226. AOD T2 FORCE BACKSPACE OVER TAPE MARK
  18227. EBW6 STM POSA SET BACKSPACE COUNT
  18228. LJM EBWX RETURN
  18229.  
  18230. EBW7 LDM BIDW,T1
  18231. SBD T3
  18232. NJN EBW8 IF NOT SAME
  18233. AOD T4 INCREMENT SAME BID COUNT
  18234. UJN EBW9 CONTINUE BID SCAN
  18235.  
  18236. EBW8 AOD T2 INCREMENT DIFFERENT COUNT
  18237. SBN 2
  18238. MJN EBW9 IF NOT TWO DIFFERENT BID-S
  18239. LDD T2
  18240. ADD T4
  18241. UJN EBW6 NUMBER OF BACKSPACES TO DO
  18242.  
  18243. EBW9 LDM BIDW,T1
  18244. STD T3 SAVE LAST BID
  18245. SOD T1 REDUCE POINTER
  18246. PJN EBW10 IF NO OVERFLOW
  18247. LPN 7
  18248. STD T1
  18249. EBW10 LMD WP CHECK FOR END OF WINDOW
  18250. NJN EBW13 IF NOT END OF BID WINDOW
  18251. EBW11 LDN 2 FORCE BACKSPACE OF TWO BLOCKS
  18252. UJN EBW6 EXIT
  18253.  
  18254. EBW12 LDD T2
  18255. ADD T4
  18256. ZJN EBW11 IF END OF WINDOW
  18257. UJN EBW6 SET BACKSPACE COUNT AND EXIT
  18258.  
  18259. EBW13 LJM EBW5 CHECK NEXT BID
  18260. LPR SPACE 4,20
  18261. ** LPR - LOAD POINT RECOVERY.
  18262. *
  18263. * ENTRY DETAIL STATUS BUFFERS SET UP.
  18264. *
  18265. * EXIT (A) .LT. 0 IF NOT *TCF* OR *BFR* ERROR OR
  18266. * IF *TCF* OR *BFR* ERROR WAS RECOVERED.
  18267. * (A) = 0 IF RETRY ON *BFR* ERROR.
  18268. *
  18269. * ERROR TO *IMU* IF LOAD POINT PROBLEM.
  18270. * (A) = *TCF* OR *BFR*.
  18271. *
  18272. * USES T1.
  18273. *
  18274. * CALLS *EMM*, FCN, WFC.
  18275. *
  18276. * MACROS CALL.
  18277.  
  18278.  
  18279. LPR SUBR ENTRY/EXIT
  18280. LDD EC
  18281. NJN LPR0 IF ERROR
  18282. RJM DTS GET DETAILED STATUS
  18283.  
  18284. * SAVE CURRENT EQUIPMENT STATUS.
  18285.  
  18286. LPR0 LDD DS SAVE GENERAL STATUS
  18287. STM LPRA
  18288. LDM UBWB SAVE BLOCK ID
  18289. STM LPRB
  18290. LDN 0 SAVE DETAIL STATUS
  18291. STD T1
  18292. LPR1 LDM MTDS,T1 MOVE ALL DETAIL STATUS WORDS
  18293. STM LPRC,T1
  18294. AOD T1 INCREMENT STATUS WORD COUNTER
  18295. SBN 16
  18296. NJN LPR1 IF NOT ALL STATUS WORDS MOVED
  18297. LDM ATUS+2 GET DETAIL STATUS WORD 13
  18298. SHN 21-2 POSITION CLEANER ACTIVE BIT
  18299. PJN LPR2 IF CLEANER PARKED
  18300. LDD EP SET LOAD POINT ERROR FLAG
  18301. LPC 6700
  18302. ADC 1002
  18303. STD EP
  18304. LDD EP+1
  18305. LPC 7077
  18306. ADC 200
  18307. STD EP+1
  18308. LDN /MTX/TCF CLEANER ACTIVE
  18309. LJM IMU ISSUE MESSAGE TO ERROR LOG AND UNLOAD TAPE
  18310.  
  18311. LPR2 LDM MTDS LOAD DETAIL STATUS WORD 3
  18312. LPC 177 MASK ERROR CODES
  18313. SBN 7
  18314. ZJN LPR4 IF ERROR CODE 7
  18315. SBN 3
  18316. ZJN LPR4 IF ERROR CODE 12
  18317. SBN 1
  18318. ZJN LPR4 IF ERROR CODE 13
  18319. LDD EC
  18320. NJN LPR3 IF NON-LOAD POINT ERROR
  18321. LDD EP
  18322. SHN 21-11
  18323. PJN LPR3 IF NO PREVIOUS LOAD POINT ERROR
  18324. LDN 0 CLEAR ERROR CODE
  18325. STD EC
  18326. LDD EP CLEAR LOAD POINT ERROR FLAG
  18327. LPC 6777
  18328. STD EP
  18329. LPR3 LCN 1
  18330. LJM LPRX RETURN NO LOAD POINT ERROR OR RECOVERED
  18331.  
  18332. LPR4 LDD EP SET LOAD POINT ERROR FLAG
  18333. LPC 6700
  18334. ADC 1002
  18335. STD EP
  18336. LDD EP+1
  18337. LPC 7077
  18338. ADC 200
  18339. STD EP+1
  18340. LDD EI
  18341. LPN 77 ERROR ITERATION
  18342. ZJN LPR6 IF FIRST TRY ON BAD HEADER
  18343. LPN 7
  18344. ZJN LPR5 IF ITERATION IS A MULTIPLE OF 4
  18345. SBN 4
  18346. NJN LPR6 IF NOT A MULTIPLE OF 4
  18347. LPR5 LDN /MTX/BFR BAD PHASE/GCR HEADERS
  18348. LJM IMU ISSUE MESSAGE TO ERROR LOG AND UNLOAD TAPE
  18349.  
  18350. * REWIND TO LOAD POINT AND ATTEMPT REREAD.
  18351.  
  18352. LPR6 LDN F0010
  18353. RJM FCN REWIND TAPE TO LOAD POINT
  18354. RJM WFC WAIT FOR BACKSPACE TO COMPLETE
  18355.  
  18356. * RESTORE EQUIPMENT ERROR STATUS BEFORE EXIT.
  18357.  
  18358. LDN 0
  18359. STD T1
  18360. LDM LPRA RESTORE GENERAL STATUS
  18361. STD DS
  18362. LDM LPRB RESTORE BLOCK ID
  18363. STM UBWB
  18364. LPR7 LDM LPRC,T1 RESTORE ERROR STATUS
  18365. STM MTDS,T1
  18366. AOD T1 INCREMENT COUNTER
  18367. SBN 16
  18368. NJN LPR7 IF NOT ALL STATUS WORDS MOVED
  18369. * LDN 0
  18370. LJM LPRX TRY TO REWRITE FROM LOAD POINT
  18371.  
  18372.  
  18373. LPRA CON 0 GENERAL STATUS
  18374. LPRB CON 0 BLOCK ID
  18375. LPRC BSSZ 16 DETAILED STATUS
  18376. PRS SPACE 4,10
  18377. ** PRS - PRESET.
  18378. *
  18379. * CALLS DME.
  18380.  
  18381.  
  18382. PRS4 STM REME MTS - DO NOT CHECK FOR AGC FAILURE
  18383. LDM PRSD DISABLE LOAD POINT RECOVERY
  18384. STM REMK
  18385. LJM PRS1 CHECK FOR LONG BLOCK PROCESSING
  18386.  
  18387. PRS SUBR ENTRY/EXIT
  18388. LDM //ITMA SAVE READ FUNCTION
  18389. STM POTF
  18390. LDN F0040 SET FORWARD READ
  18391. STM //ITMA
  18392. LDD HP
  18393. LPN 20
  18394. ZJN PRS4 IF NOT ATS-TYPE CONTROLLER
  18395.  
  18396. * MODIFY INSTRUCTIONS FOR ATS-TYPE CONTROLLER.
  18397.  
  18398. LDM PRSA
  18399. STM ABCA
  18400. LDC SHNI+66
  18401. STM REMC
  18402. LCN 0
  18403. STM PNEE
  18404. STM REMA
  18405. STM RDAB
  18406. LDC UJNI-PJNI
  18407. RAM RDAA
  18408. LDM PRSB
  18409. STM PNEA
  18410. LDC MTDS+1
  18411. STM REMB
  18412. LDN MTDS+6-MTDS-3
  18413. RAM EBWA
  18414. LDC SHNI+21-11
  18415. STM EBWB
  18416. LDD HP
  18417. LPN 1
  18418. ZJN PRS1 IF NOT NINE TRACK UNIT
  18419. LDC UJNI-ZJNI
  18420. RAM POTM NO CLIP LEVEL CHANGES FOR NINE TRACK FSC
  18421. LDD FN
  18422. SBN /MTX/RDF
  18423. NJN PRS1 IF NOT READ FUNCTION
  18424. LDD FM
  18425. SHN -6
  18426. SBN /MTX/TFLI
  18427. NJN PRS1 IF NOT LI FORMAT
  18428. STM ADDR NO INSTRUCTION MODIFICATION
  18429. STM CIFB
  18430. STM REML NOT SKIPEI OR POSMF
  18431. LDC /RLI/VDAE
  18432. STM CIFA *VDAE* = 0 IF CORRECT BLOCK LENGTH
  18433. LDC /RLI/UIPC
  18434. STM POTR SET TO GIVE FATAL USER ERROR
  18435. LDC /RLI/RLI
  18436. UJN PRS2 SET ENTRY TO REREAD
  18437.  
  18438. PRS1 LDM /READ/TDAA
  18439. NJN PRS3 IF NOT LONG BLOCK
  18440. LDC RLB
  18441. PRS2 STM POTI ENTRY TO REREAD
  18442. PRS3 LJM PRSX RETURN
  18443.  
  18444.  
  18445. PRSA BSS 0
  18446. LOC ABCA
  18447. UJN ABC1 ADJUST BUFFER LENGTH
  18448. LOC *O
  18449.  
  18450. PRSB BSS 0
  18451. LOC PNEA
  18452. UJN PNE3 ISSUE ERROR MESSAGE
  18453. LOC *O
  18454.  
  18455. PRSD BSS 0
  18456. LOC REMK
  18457. UJN REM2.1 DISABLE LOAD POINT RECOVERY
  18458. LOC *O
  18459. OVERLAY (CTS READ ERROR PROCESSOR.),(BUFB+5),P
  18460. CRE SPACE 4,10
  18461. ** CRE - CTS READ ERROR PROCESSOR.
  18462. *
  18463. * ENTRY (EC) = ERROR CODE.
  18464. *
  18465. * CALLS CEP, MCH, POS, PRS, PTM, RRA.
  18466.  
  18467.  
  18468. ENTRY CRE
  18469. CRE SUBR ENTRY/EXIT
  18470.  
  18471. * THE FOLLOWING CODE IS OVERLAID BY THE IN POINTER.
  18472.  
  18473. CREA EQU *
  18474. LDM //LOV SET RETURN ADDRESS
  18475. STM CRE
  18476. LDC CTAB MODIFY CHANNELS
  18477. RJM MCH
  18478. RJM PRS PRESET
  18479. LDD MA SAVE IN POINTER
  18480. CWD CN
  18481. CRM CREA,ON
  18482. LDD DS
  18483. LPN 1
  18484. NJN CRE1 IF READY
  18485. LDN /MTX/RDR SET NOT READY
  18486. STD EC
  18487. CRE1 LDD EC
  18488. LMN /MTX/BEI
  18489. NJN CRE3 IF NOT TAPE MARK
  18490. RJM PTM PROCESS TAPE MARK
  18491. CRE2 UJN CREX RETURN
  18492.  
  18493. CRE3 LDD SP
  18494. LPN 4
  18495. ZJN CRE6 IF ERROR PROCESSING ALLOWED
  18496. CRE4 LDN 20
  18497. STM POSB SKIP ONE BLOCK
  18498. RJM POS POSITION TAPE PAST BAD BLOCK
  18499. NJN CRE5 IF ERROR
  18500. RJM CEP CLEAR ERROR PARAMETERS
  18501. UJN CRE2 RETURN
  18502.  
  18503. CRE5 LDN 0
  18504. STM POSB INDICATE NO EXTRA BLOCK TO SKIP
  18505. CRE6 LDD FN
  18506. LMN /MTX/SKP
  18507. NJN CRE7 IF NOT SKIP OPERATION
  18508. LDM /READ/SKEI
  18509. NJN CRE4 IF SKIPEI OF POSMF
  18510. CRE7 RJM RRA READ RECOVERY ALGORITHM
  18511. UJN CRE2 RETURN
  18512. CEP SPACE 4,10
  18513. ** CEP - CLEAR ERROR PARAMETERS.
  18514. *
  18515. * EXIT (CN+3, CN+4) = CORRECT IN POINTER.
  18516. * TO *RLA* IF READ LABELS.
  18517. *
  18518. * USES CN - CN+3.
  18519. *
  18520. * CALLS CEC, RSP.
  18521. *
  18522. * MACROS CALL.
  18523.  
  18524.  
  18525. CEP SUBR ENTRY/EXIT
  18526. LDN 0 CLEAR ERROR PARAMETER
  18527. STD EI
  18528. STD EP
  18529. LDD FN
  18530. LMN /MTX/RLA
  18531. ZJN CEP1 IF READ LABELS
  18532. RJM RSP RESET PARAMETERS FOR NEXT OPERATION
  18533. LDD MA RESTORE IN POINTER
  18534. CWM CREA,ON
  18535. LDD MA
  18536. CRD CN
  18537. UJN CEPX RETURN
  18538.  
  18539. CEP1 LDN 0 SET ERROR CODE
  18540. CEPA EQU *-1
  18541. * LDN /MTX/BEI (RECOVERED TAPE MARK)
  18542. STD EC
  18543. LDM CECB
  18544. LPN 77
  18545. ZJN CEP2 IF AT MAGNET CONTROL POINT
  18546. LDN 0 CHANGE TO MAGNET,S CP
  18547. RJM CEC
  18548. CEP2 CALL RLA RELOAD READ LABELS OVERLAY (NO RETURN)
  18549. POS SPACE 4,15
  18550. ** POS - POSITION TAPE.
  18551. * THIS ROUTINE USES THE LOCATE BLOCK COMMAND TO POSITION
  18552. * THE TAPE TO THE EXPECTED BLOCK POSITION.
  18553. *
  18554. * ENTRY (BL, BL+1) = NOS BLOCK POSITION.
  18555. * (WP, EP+1) = PHYSICAL BLOCK ID WHEN (BL,BL+1) = 0.
  18556. *
  18557. * EXIT (A) = 0 IF NO ERROR.
  18558. * TO *ERR* IF CHANNEL MALFUNCTION.
  18559. *
  18560. * USES T3.
  18561. *
  18562. * CALLS /PRESET/GPS, /PRESET/ICF, /PRESET/RBI.
  18563.  
  18564.  
  18565. POS SUBR ENTRY/EXIT
  18566. RJM /PRESET/RBI READ BLOCK ID
  18567. LDM BIDW
  18568. STM POSA
  18569. SBN 20
  18570. ZJN POS1 IF FIRST SEGMENT
  18571. STM POSA SET PHYSICAL REFERENCE BLOCK ID
  18572. POS1 LDD BL+1
  18573. SHN 4
  18574. ADD EP+1
  18575. ADM POSB EXTRA BLOCKS TO POSITION
  18576. STM POSA+2 MOVE BLOCK NUMBER TO PARAMETERS
  18577. SHN -14
  18578. STM POSA+1
  18579. LDD BL
  18580. SHN 4
  18581. ADD WP
  18582. RAM POSA+1
  18583. LDN F0016 LOCATE BLOCK
  18584. RJM /PRESET/ICF ISSUE FUNCTION
  18585. ACN CH
  18586. LDN 3
  18587. OAM POSA,CH OUTPUT THE 3 PARAMETER WORDS
  18588. STD T3 WORDS NOT TRANSFERRED
  18589. FJM *,CH WAIT FOR DATA TO BE TAKEN
  18590. POS2 LDN 0 WAIT FOR END OF OPERATION
  18591. RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS
  18592. MJN POS2 IF COMMAND RETRY
  18593. SHN 21-13
  18594. MJN POS3 IF ERROR
  18595. LDD T3
  18596. ZJN POS4 IF ALL WORDS TRANSFERRED
  18597. LDN /MTX/CMF CHANNEL MALFUNCTION
  18598. RJM ERR REPORT ERROR (NO RETURN)
  18599.  
  18600. POS3 LDN /MTX/STE STATUS ERROR
  18601. STD EC
  18602. POS4 LJM POSX RETURN
  18603.  
  18604.  
  18605. POSA DATA 0 LOCATE BLOCK PARAMETERS
  18606. DATA 0 UPPER 12 BITS OF BLOCK NUMBER
  18607. DATA 0 8/LOWER BITS OF BLOCK NUMBER / 4 UNUSED
  18608.  
  18609. POSB DATA 0 8/ADDER TO BLOCK POSITION, 4/0
  18610. PTM SPACE 4,10
  18611. ** PTM - PROCESS TAPE MARK.
  18612. *
  18613. * EXIT (EC) = 0.
  18614. * TO *CEP* IF READ LABEL.
  18615. * TO *RET3* IF LABELED TAPE OR FORMAT IS I, SI, LI.
  18616. *
  18617. * CALLS *CEM*, CEP.
  18618. *
  18619. * MACROS CALL.
  18620.  
  18621.  
  18622. PTM4 LDN /MTX/BEI RETURN POSSIBLE EOI
  18623. LJM RET3 RETURN ERROR CODE
  18624.  
  18625. PTM SUBR ENTRY/EXIT
  18626. LDN 0
  18627. STD EC CLEAR ERROR CODE
  18628. LDD EI
  18629. ZJN PTM1 IF FIRST ENTRY
  18630. CALL CEM LOG RECOVERED ERROR
  18631. LDC LDNI+/MTX/BEI SET TO RETURN TAPE MARK IF READ LABELS
  18632. STM CEPA
  18633. PTM1 RJM CEP CLEAR PARAMETERS (NO RETURN IF READ LABEL)
  18634. LDD LT
  18635. SHN 21-12
  18636. MJN PTM4 IF LABELED
  18637. LDD FM
  18638. SHN -6
  18639. SBN /MTX/TFSI+1
  18640. MJN PTM4 IF INTERNAL MODES
  18641. SBN /MTX/TFLI-/MTX/TFSI-1
  18642. ZJN PTM4 IF LI FORMAT
  18643. LDD MD SET EOF STATUS
  18644. SCN 14
  18645. LMN 10
  18646. STD MD
  18647. LDN 2
  18648. STD TB
  18649. LDD FM
  18650. SHN -6
  18651. LMN /MTX/TFS
  18652. ZJN PTM2 IF S FORMAT
  18653. LMN /MTX/TFL&/MTX/TFS
  18654. NJN PTM3 IF NOT L FORMAT
  18655. PTM2 LDM //CIOE
  18656. LPC 770
  18657. LMC 260
  18658. NJN PTM3 IF NOT 260 READ CODE
  18659. LDN 26 SET TO RETURN 271 STATUS
  18660. STD TB
  18661. PTM3 LJM PTMX RETURN
  18662. RCI SPACE 4,10
  18663. ** RCI - READ *CIO* INFORMATION FROM *MAGNET,S FL.
  18664. *
  18665. * EXIT (T6 - T7) = FET ADDRESS.
  18666. * (T1 - T5) = UCIC WORD.
  18667. *
  18668. * USES CM - CM+4.
  18669. *
  18670. * CALLS HNG.
  18671. *
  18672. * MACROS DELAY, MONITOR, PAUSE.
  18673.  
  18674.  
  18675. RCI3 LDD MA READ UDT WORDS
  18676. CRD T6-3
  18677. ADN 2
  18678. CRD T1
  18679.  
  18680. RCI SUBR ENTRY/EXIT
  18681. RCI1 LDM UADA SET FWA OF DESIRED UDT WORDS
  18682. ADN /MTX/UCIA
  18683. STD CM+4
  18684. LDC 300 REQUEST THREE WORDS
  18685. STD CM+3
  18686. LDN 0 REQUEST READ FROM *MAGNET*
  18687. STD CM+1
  18688. LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
  18689. STD CM+2
  18690. MONITOR TDAM
  18691. LDD CM+1
  18692. ZJN RCI3 IF DONE
  18693. SBN 2
  18694. PJN RCI2 IF MOVE NOT IN PROGRESS
  18695. PAUSE NE
  18696. DELAY
  18697. UJN RCI1 REISSUE REQUEST
  18698.  
  18699. RCI2 RJM HNG HANG PP
  18700. RRA SPACE 4,25
  18701. ** RRA - READ RECOVERY ALGORITHM.
  18702. * THIS ROUTINE DOES ERROR RECOVERY AS FOLLOWS.
  18703. * IF (EI) = 0 LOG ERROR, POSITION TAPE, AND REQUEUE.
  18704. * IF (EI) = 1 LOG ERROR, LOAD CCC MICROCODE, POSITION TAPE,
  18705. * AND REQUEUE.
  18706. * IF (EI) = 2 LOG UNRECOVERED ERROR, RETURN FATAL CODE. IF
  18707. * THE ERROR IS A LOAD POINT ERROR, THE TAPE IS
  18708. * UNLOADED.
  18709. *
  18710. * ENTRY (EC) = ERROR CODE.
  18711. * (EI) = RETRY COUNT.
  18712. *
  18713. * EXIT (EP) .NE. 0 IF RECOVERY ALGORITHM NOT COMPLETE.
  18714. * (EI) = (EI)+1 IF RECOVERY ALGORITHM NOT COMPLETE.
  18715. * TO *ERR* IF MICROCODE LOAD FAILED.
  18716. * TO *RET2* TO REQUEUE THE REQUEST.
  18717. * TO *RET4* TO RETURN A FATAL ERROR.
  18718. *
  18719. * USES CN, CN+1, EC, CM - CM+4.
  18720. *
  18721. * CALLS *CEM*, CEP, /PRESET/ICF, POS, /PRESET/RCU, RSP, WFC,
  18722. * WIP, *0CT*.
  18723. *
  18724. * MACROS CALL, EXECUTE.
  18725.  
  18726.  
  18727. RRA SUBR ENTRY/EXIT
  18728. RRA1 CALL CEM LOG CTS ERROR MESSAGE
  18729. LDD EC LOAD ERROR CODE
  18730. NJN RRA2 IF ERROR
  18731. LJM RRA10 IF RECOVERED ERROR
  18732.  
  18733. RRA2 LDC LDNI FORCE DROP OUT
  18734. STM //PNRC
  18735. AOD EP FORCE REPORTING OF RECOVERED ERROR
  18736. AOD EI INCREMENT RETRY COUNT
  18737. SBN 1
  18738. ZJP RRA3 IF FIRST ERROR
  18739. SBN 1
  18740. NJP RRA4 IF RETRIES FAILED
  18741. CHTE *
  18742. LDN CH SET CHANNEL NUMBER
  18743. STD CN
  18744. LDC ERLB SET BUFFER ADDRESS
  18745. STD CN+1
  18746. EXECUTE 0CT,ERLA+5 LOAD CTS/CCC MICROCODE
  18747. LDD CN
  18748. ZJN RRA2.2 IF MICROCODE LOADED
  18749. STD EC
  18750. SHN 0-13
  18751. PJN RRA2.1 IF ERROR CODE ALREADY SAVED
  18752. LDN /MTX/CMF
  18753. STD EC
  18754. RRA2.1 LDM CN+1 SAVE FUNCTION
  18755. STM /PRESET/ICFA
  18756. RJM ERR REPORT ERROR (NO RETURN)
  18757.  
  18758. RRA2.2 RJM /PRESET/RCU RECONNECT UNIT
  18759. RRA3 RJM POS POSITION TAPE
  18760. NJP RRA1 IF LOCATE BLOCK FAILED
  18761. STD EC CLEAR ERROR CODE
  18762. LJM RET2 REQUEUE THE REQUEST
  18763.  
  18764. * UNRECOVERABLE ERROR.
  18765.  
  18766. RRA4 LDD EC
  18767. LMN /MTX/STE
  18768. NJN RRA6 IF NOT STATUS ERROR
  18769. LDM CTGS
  18770. LPC 177
  18771. LMN CE007
  18772. NJN RRA6 IF NOT BURST ID OR BLOCK ID ERROR
  18773. LDD DS
  18774. SHN 21-2
  18775. PJN RRA6 IF NOT AT LOAD POINT
  18776. LDN /MTX/BFR LOAD POINT ERROR
  18777. STD EC
  18778. CALL CEM LOG THE ERROR
  18779. LDC F0110 UNLOAD TAPE
  18780. RJM /PRESET/ICF ISSUE CTS FUNCTION
  18781. RJM WFC WAIT FOR COMPLETION
  18782. UJN RRA7 RETURN FATAL ERROR
  18783.  
  18784. RRA6 LDD FN
  18785. LMN /MTX/RDF
  18786. ZJN RRA8 IF READ
  18787. RRA7 LJM RET4 RETURN FATAL ERROR
  18788.  
  18789. RRA8 LDM FETO
  18790. SHN 21-10
  18791. PJN RRA9 IF ERROR PROCESSING NOT SET
  18792. RJM RSP RESET PARAMETERS
  18793. RJM WIP WRITE IN POINTER TO BUFFER
  18794. LDD MD
  18795. SHN 21-5
  18796. PJN RRA9 IF NOT 200 READ
  18797. LDD CN+3 READ CONTROL WORD
  18798. SHN 6
  18799. ADD RA
  18800. SHN 6
  18801. ADD CN+4
  18802. CRD CM
  18803. LDC 4000 SET UNRECOVERED ERROR INDICATION
  18804. RAD CM
  18805. LDD CN+3 REWRITE CONTROL WORD
  18806. SHN 6
  18807. ADD RA
  18808. SHN 6
  18809. ADD CN+4
  18810. CWD CM
  18811. RRA9 LDC RET4 SET TO GIVE FATAL USER ERROR
  18812. STM /READ/WCBD
  18813. RRAA EQU *-1
  18814. * STM /RLI/UIPC (LI FORMAT)
  18815. RRA10 RJM CEP CLEAR ERROR PARAMETERS
  18816. LJM RRAX RETURN
  18817. RSP SPACE 4,10
  18818. ** RSP - RESET PROCESSOR FOR NEXT OPERATION.
  18819. *
  18820. * EXIT (CN+3 - CN+4) = IN POINTER PRIOR TO READ.
  18821. *
  18822. * CALLS /CPP/CAL, *CPP*, RCI, /CPP/SFP.
  18823. *
  18824. * MACROS CALL.
  18825.  
  18826.  
  18827. RSP SUBR ENTRY/EXIT
  18828. LDM /READ/WOCN RESTORE WORD COUNT
  18829. STD WC
  18830. CALL CPP RELOAD ADDRESS RELOCATOR
  18831. LDD FN
  18832. LMN /MTX/RDF
  18833. NJN RSPX IF NOT READ DATA
  18834. RJM RCI READ UDT
  18835. RJM /CPP/CAL CALCULATE PARAMETERS
  18836. LDN 2 READ IN
  18837. RJM /CPP/SFP
  18838. UJN RSPX RETURN
  18839. WFC SPACE 4,10
  18840. ** WFC - WAIT FOR COMPLETION.
  18841. *
  18842. * CALLS /PRESET/GPS.
  18843.  
  18844.  
  18845. WFC SUBR ENTRY/EXIT
  18846. WFC1 LDN 0 WAIT FOR END OF OPERATION
  18847. RJM /PRESET/GPS
  18848. MJN WFC1 IF COMMAND RETRY
  18849. UJN WFCX RETURN
  18850. WIP SPACE 4,15
  18851. ** WIP - WRITE IN POINTER PRIOR TO READ TO USER BUFFER.
  18852. *
  18853. * ENTRY (CREA - CREA+4) = POINTER TO NEXT BUFFER LOCATION.
  18854. * (CN+3 - CN+4) = IN POINTER PRIOR TO READ.
  18855. *
  18856. * EXIT IN POINTER WRITTEN TO USER CIO BUFFER.
  18857. * PARITY ERROR BIT SET IN FET+0.
  18858. *
  18859. * USES CM - CM+4.
  18860. *
  18861. * CALLS RCI.
  18862.  
  18863.  
  18864. WIP SUBR ENTRY/EXIT
  18865. LDM CREA+3 CALCULATE ABSOLUTE BUFFER ADDRESS
  18866. SHN 6
  18867. ADD RA
  18868. SHN 6
  18869. ADM CREA+4
  18870. CWD CN WRITE OLD IN POINTER TO BUFFER
  18871. RJM RCI READ UDT INFORMATION
  18872. LDD T6 READ FET+0
  18873. SHN 6
  18874. ADD RA
  18875. SHN 6
  18876. ADD T7
  18877. CRD CM
  18878. LDD CM+4 SET PARITY ERROR BIT
  18879. LPC 777
  18880. LMC 4000
  18881. STD CM+4
  18882. LDD CM+3
  18883. SCN 3
  18884. STD CM+3
  18885. LDD T6 REWRITE FET+0
  18886. SHN 6
  18887. ADD RA
  18888. SHN 6
  18889. ADD T7
  18890. CWD CM
  18891. LJM WIPX RETURN
  18892. SPACE 4,10
  18893. ERRNG ERLA-* CODE OVERFLOWS HELPER OVERLAY
  18894. ERRPL ERLA+5+ZCTL-ERLB *0CT* OVERFLOWS INTO BUFFER
  18895. CTAB SPACE 4,10
  18896. ** CTAB - CHANNEL TABLE.
  18897.  
  18898.  
  18899. CTAB CHTB
  18900. PRS SPACE 4,10
  18901. ** PRS - PRESET.
  18902.  
  18903.  
  18904. PRS SUBR ENTRY/EXIT
  18905. LDD FN
  18906. LMN /MTX/RDF
  18907. NJN PRSX IF NOT READ FUNCTION
  18908. LDD FM
  18909. SHN -6
  18910. LMN /MTX/TFLI
  18911. NJN PRSX IF NOT LI FORMAT
  18912. LDC /RLI/UIPC
  18913. STM RRAA SET TO RETURN FATAL ERROR
  18914. LJM PRSX EXIT PRESET
  18915. OVERLAY (WRITE FUNCTION PROCESSOR.),,,WRITE
  18916. .IM SET 2 GENERATE ADDRESSES FOR ERROR PROCESSOR
  18917. STAT EQU PRSX STATUS AT START OF WRITE
  18918. BYWR EQU STAT+1 BYTES ATTEMPTED TO WRITE
  18919. BYRM EQU BYWR+1 BYTES NOT WRITTEN
  18920. OPTU EQU PRSX OUT POINTER UPPER FOR CTS RETRY
  18921. OPTL EQU BYRM+1 OUT POINTER LOWER FOR CTS RETRY
  18922. WTF SPACE 4,10
  18923. ** WTF - WRITE TAPE.
  18924. *
  18925. * CALLS IBF, ITM, /WLB/ODA, RCB, WRT.
  18926. *
  18927. * MACROS SADT.
  18928.  
  18929.  
  18930. ENTRY WTF
  18931. WTF RJM RCB READ CENTRAL BUFFER
  18932. * RJM RCB (CTS, NOT LONG BLOCKS)
  18933. * RJM ITM (4X PPU SPEED - MOTION AHEAD ENABLED)
  18934. * UJN WTF1 (LONG BLOCKS)
  18935. WTFA EQU *-2
  18936. RJM ITM INITIATE TAPE MOTION
  18937. * UJN WTF2 (CTS)
  18938. * RJM RCB (4X PPU SPEED - MOTION AHEAD ENABLED)
  18939. WTFB EQU *-1
  18940. UJN WTF2 WRITE TO TAPE
  18941.  
  18942. WTF1 RJM ITM INITIATE TAPE MOTION
  18943. * RJM /WLB/ODA (LONG BLOCKS)
  18944. WTFC EQU *-1
  18945. WTF2 RJM IBF PROCESS I/SI FORMAT
  18946. WTFD EQU *-2
  18947. * UJN *+2 (LONG BLOCKS)
  18948. RJM WRT PROCESS WRITE
  18949. LDC *
  18950. WTFE EQU *-1
  18951. NJN WTF4 IF EXIT CONDITIONS
  18952. LDD DF
  18953. WTFF ZJN WTF1 IF NO DROP OUT
  18954. * PSN (PRU WRITE)
  18955. * ZJN WTF2 IF NO DROP OUT (CTS AND NOT LONG BLOCK)
  18956. WTF3 LJM RET2 REQUEUE
  18957. * LJM WTF8 (PRU WRITE)
  18958. WTFG EQU *-1
  18959.  
  18960. WTF4 SBN 10
  18961. PJN WTF6 IF ERROR
  18962. ADN 10-1
  18963. NJN WTF5 IF NO EOF TO WRITE
  18964. SADT .FE,,3,A
  18965. LDC * UPDATE OUT (NEEDED FOR 204 WRITE)
  18966. CWD CN
  18967. LJM RET1 RETURN TO WRITE EOF
  18968.  
  18969. WTF5 SBN 4-1
  18970. NJN WTF8 IF NOT MODE CHANGE
  18971. LDD MD TOGGLE MODE
  18972. LMD HN
  18973. STD MD
  18974. LDD UP
  18975. LMN 1
  18976. STD UP
  18977. UJN WTF3 REQUEUE
  18978.  
  18979. WTF6 ZJN WTF7 IF CONTROL WORD ERROR
  18980. LDN /MTX/BAE&/MTX/BCW BUFFER ARGUMENT ERROR
  18981. WTF7 LMN /MTX/BCW BUFFER CONTROL WORD ERROR
  18982. LJM RET3 RETURN ERROR CODE
  18983.  
  18984. WTF8 LDN 1
  18985. LJM RET SET FET COMPLETE
  18986. * LJM EOF (I/SI FORMAT EOF REQUIRED)
  18987. WTFH EQU *-1
  18988. CKS SPACE 4,10
  18989. CNW SPACE 4,20
  18990. ** CNW - CHECK NEXT WRITE.
  18991. *
  18992. * ENTRY (CN+3 - CN+4) = OUT POINTER.
  18993. *
  18994. * EXIT (WTFE) = 0, NEXT WRITE OKAY.
  18995. * 1, EOF WRITE REQUIRED.
  18996. * 2, NOT ENOUGH DATA.
  18997. * 4, TOGGLE MODE (F FORMAT).
  18998. * 10, BUFFER CONTROL WORD ERROR.
  18999. * 11, BUFFER ARGUMENT ERROR.
  19000. * (BY) = BYTES TO WRITE.
  19001. * (T6) = WORD COUNT (INCLUDING CONTROL WORDS).
  19002. * (MA+0 - MA+4) = ENTRY VALUE IF CALLED FROM *WRT*.
  19003. *
  19004. * USES CM - CM+4.
  19005. *
  19006. * CALLS COB, CDO, SIF, XBF, CNL (LONG BLOCKS).
  19007. *
  19008. * MACROS SADT.
  19009.  
  19010.  
  19011. CNW9 LDN 2 SET NOT ENOUGH DATA
  19012.  
  19013. * ENTER HERE FROM LONG BLOCKS.
  19014.  
  19015. CNW10 STM WTFE
  19016.  
  19017. CNW SUBR ENTRY/EXIT
  19018. RJM CDO CHECK DROP OUT FLAG
  19019. LDN F0050
  19020. STM ITMA WRITE FUNCTION
  19021. CNWA LDD WC
  19022. * LDN 2 (204 WRITE)
  19023. * LDN 1 (264 WRITE)
  19024. * LJM /3M /CNL (LONG BLOCKS - FLAG FOR OTHER OVERLAYS)
  19025. STD CM+4
  19026. CNWB LDN 0 SET UNUSED BIT COUNT
  19027. * LDN * (S/L 14, 24, 34 SET FROM FET)
  19028. STD CM+2
  19029. RJM COB CHECK OUTPUT BUFFER
  19030. CNWC SBD CM+4
  19031. * STD CM+4 (S/L 14, 24, 34 CODES)
  19032. CNWD PJN CNW1 IF ENOUGH DATA
  19033. * NJN CNW1 (S/L 14, 24, 34 CODES)
  19034. CNWE UJN CNW9 (204/264 WRITE AND ALL S/L FORMAT)
  19035. * RAD CM+4 ADJUST WORD COUNT
  19036. LDD MD
  19037. SHN 21-3
  19038. PJN CNW9 IF NOT EOR/EOF WRITE
  19039. SHN 21-10-21+3+22
  19040. MJN CNW9 IF EOR/EOF WRITTEN THIS OPERATION
  19041. CNW1 UJN CNW2
  19042. CNWF EQU *-1
  19043. * LDD CN+3 (204/264 WRITE)
  19044. SHN 6 READ CONTROL WORD
  19045. ADD RA
  19046. SHN 6
  19047. ADD CN+4
  19048. CRD CM
  19049. CNW2 LDD CM+4 PRESERVE BYTE COUNT 204 WRITE
  19050. CNWG UJN CNW3
  19051. * STD BY (204 WRITE)
  19052. ADN 4 ROUND UP BYTE COUNT
  19053. STD CM+4 DIVIDE BY 5
  19054. SHN 1 13* BYTES
  19055. ADD CM+4
  19056. SHN 2
  19057. ADD CM+4
  19058. SHN 14 (-6) (13*BYTES)/64
  19059. STD T0
  19060. SHN 6+2 4*13*BYTES (52*BYTES)
  19061. SBD CM+4 51*BYTES
  19062. ADD T0 (51*BYTES)+((13*BYTES)/64)
  19063. SHN -8D
  19064. STD CM+4
  19065. CNWH UJN CNW3 (NOT F FORMAT)
  19066. * LDD MD
  19067. LMD CM
  19068. SHN -4
  19069. LPN 4
  19070. NJN CNW5 IF MODE CHANGE
  19071. LDD CM+4
  19072. CNW3 ADN 0 ALLOW FOR CONTROL WORDS
  19073. CNWI EQU *-1
  19074. * ADN 1 (264 WRITE)
  19075. * ADN 2 (204 WRITE)
  19076. STD T6 PRESET FIRST PART WORD COUNT
  19077. SADT .BS,C,1
  19078. ADC -*
  19079. PJN CNW4 IF BLOCK LENGTH ERROR
  19080. RJM COB CHECK OUTPUT BUFFER
  19081. SBD T6
  19082. MJN CNW8 IF NOT ENOUGH DATA
  19083. SBD T6
  19084. SHN -21
  19085. ADC LDNI
  19086. STM WRTI
  19087. LDD CM+2 CHECK UBC FIELD
  19088. CNWJ SBN 1 (I, SI FORMAT INCLUDING 204/260 WRITE)
  19089. * SBN 12D (204 WRITE ALL OTHER FORMATS)
  19090. * SBN 57D (264 WRITE ALL OTHER FORMATS)
  19091. * SBN 57D (ALL S/L FORMAT EXCEPT 204)
  19092. MJN CNW6 IF VALID UBC
  19093. CNW4 LDN 10 SET BUFFER CONTROL WORD ERROR
  19094. CNW5 UJN CNW7 SET EXIT CONDITION
  19095.  
  19096. CNW6 LDD CM+4 SET BYTE COUNT
  19097. SHN 2
  19098. ADD CM+4
  19099. CNWK STD BY
  19100. * PSN (204 WRITE AND NOT I/SI FORMAT)
  19101. RJM XBF PROCESS ALL EXCEPT I, SI FORMAT
  19102. CNWL EQU *-2
  19103. * RJM SIF (SI FORMAT 9/18 TRACK)
  19104. * LDN 0 I FORMAT(9 TRACK ATS OR CTS), I/SI 7 TRACK
  19105. * LDN 0
  19106. CNW7 LJM CNW10 RETURN
  19107.  
  19108. CNW8 LJM CNW9 SET NOT ENOUGH DATA
  19109. COB SPACE 4,10
  19110. ** COB - CHECK OUTPUT BUFFER.
  19111. *
  19112. * EXIT (A) = WORD COUNT.
  19113. * TO LOCATION *CNW10*, IF BUFFER ARGUMENT ERROR.
  19114. *
  19115. * USES T1 - T5.
  19116. *
  19117. * MACROS SADT.
  19118.  
  19119.  
  19120. COB2 LDD T1+3 LENGTH = IN - OUT
  19121. SBD CN+3
  19122. SHN 14
  19123. ADD T1+4
  19124. SBD CN+4
  19125. PJN COBX IF IN .GE. OUT
  19126. SADT .LF
  19127. ADC * (LIMIT - FIRST)
  19128. MJN COB1 IF BUFFER ARGUMENT ERROR
  19129.  
  19130. COB SUBR ENTRY/EXIT
  19131. SADT .FE,,2,A
  19132. LDC * READ IN
  19133. CRD T1
  19134. LDD T1+3
  19135. LPN 37
  19136. STD T1+3
  19137. SHN 14
  19138. LMD T1+4
  19139. SADT .LM,C
  19140. ADC -*
  19141. MJN COB2 IF IN .LT. LIMIT
  19142. COB1 LDN 11 SET BUFFER ARGUMENT ERROR
  19143. UJN CNW7 SET EXIT CONDITION
  19144. PWR SPACE 4,10
  19145. ** RCB - READ CENTRAL BUFFER.
  19146. *
  19147. * ENTRY (CN+3 - CN+4) = OUT POINTER.
  19148. * (T6) = WORD COUNT.
  19149. *
  19150. * EXIT (CN+3 - CN+4) UPDATED.
  19151. * (T7) = SECOND PART WORD COUNT IF BUFFER WRAP.
  19152. *
  19153. * MACROS SADT.
  19154.  
  19155.  
  19156. RCB2 LDD T7
  19157. ZJN RCB3 IF NO SECOND PART
  19158. SADT .FT,,,A
  19159. LDC * (FIRST+RA)
  19160. CRM *,T7
  19161. RCBB EQU *-1
  19162. UJN RCB4 RESET OUT
  19163.  
  19164. RCB3 LDD T6 UPDATE OUT
  19165. RAD CN+4
  19166. SHN -14
  19167. RAD CN+3
  19168. SHN 14
  19169. LMD CN+4
  19170. SADT .LM,C
  19171. ADC -* - LIMIT
  19172. MJN RCBX IF LIMIT NOT REACHED
  19173. SADT .FT
  19174. RCB4 LDC * RESET TO FIRST
  19175. ADD T7
  19176. STD CN+4
  19177. SHN -14
  19178. STD CN+3
  19179.  
  19180. RCB SUBR ENTRY/EXIT
  19181. LDD T6
  19182. ZJN RCBX IF NO DATA
  19183. LDN 0 INITIALIZE SECOND HALF WORD COUNT
  19184. STD T7
  19185. LDD CN+3 DETERMINE IF BUFFER WRAP
  19186. SHN 14
  19187. LMD CN+4
  19188. ADD T6
  19189. SADT .LM,C
  19190. ADC -* (-LIMIT)
  19191. MJN RCB1 IF LIMIT NOT REACHED
  19192. STD T7 SECOND HALF WORD COUNT
  19193. LMC -0
  19194. RAD T6
  19195. RCB1 LDD T6 READ DATA
  19196. SHN 2
  19197. ADD T6
  19198. ADM RCBA
  19199. STM RCBB
  19200. LDD CN+3 READ FIRST PART
  19201. SHN 6
  19202. ADD RA
  19203. SHN 6
  19204. ADD CN+4
  19205. CRM BUF,T6
  19206. RCBA EQU *-1
  19207. * CRM BUFC,T6 (204, 264 WRITE)
  19208. LJM RCB2 READ SECOND PART
  19209. WRT SPACE 4,15
  19210. ** WRT - WRITE TAPE.
  19211. *
  19212. * FOR CTS THE FIRST PART OF *WRT* IS OVERLAYED WITH *WCT*.
  19213. *
  19214. * ENTRY (BY) = BYTES TO WRITE.
  19215. *
  19216. * EXIT (CN+3, CN+4) = OUT POINTER.
  19217. *
  19218. * USES CM - CM+4, CN - CN+3.
  19219. *
  19220. * CALLS CNW, RCB, UBW, *WEM*, WEO.
  19221. *
  19222. * MACROS CALL, SADT.
  19223.  
  19224.  
  19225. WRT SUBR ENTRY/EXIT
  19226. WRTA LDD BY
  19227. * UJN WRT2 (LONG BLOCKS)
  19228. STM BYWR SAVE BYTES BEING OUTPUT
  19229. OAM BUF,CH OUTPUT BLOCK
  19230. FJM *,CH
  19231. NJN WRT1 IF ABNORMAL TERMINATION
  19232. DCN CH+40
  19233. WRT1 STM BYRM SAVE BYTES REMAINING
  19234. LDM UBWB USE HARDWARE CHECKSUM
  19235. STD LG+1
  19236. NJN WRT2 IF NONZERO
  19237. AOM LG+1 FORCE NONZERO CHECKSUM
  19238. WRT2 LDD DS SAVE STATUS AT START OF WRITE
  19239. STM STAT
  19240. LDD UP CLEAR EOR/EOF LAST BLOCK FLAG
  19241. SCN 10
  19242. STD UP
  19243. LDD MD CLEAR EOR/EOF THIS OPERATION FLAG
  19244. LPC 7377
  19245. STD MD
  19246. WRTB LDC * BLOCK LENGTH - I, SI FORMAT
  19247. * PSN (NOT I, SI FORMAT)
  19248. * LDD BY (NOT I, SI FORMAT)
  19249. WRTC LMC 5000 CHECK FOR FULL BLOCK
  19250. * LMC 5004 (I FORMAT)
  19251. * LDN 0 (WRITE LABELS)
  19252. * LDN 0 (WRITE LABELS)
  19253. ZJN WRT3 IF NOT EOR/EOF WRITTEN
  19254. LDN 10 SET EOR/EOF FLAGS
  19255. RAD UP
  19256. LDC 400
  19257. RAD MD
  19258. WRT3 LDD MA
  19259. CWD CN SAVE OLD OUT POINTER
  19260. WRTD RJM CNW CHECK NEXT WRITE
  19261. * UJN WRT3.1 (WRITE LABELS)
  19262. LDM WTFE
  19263. ADD DF
  19264. WRTE NJN WRT3.1 IF NO MORE DATA OR DROP OUT SET
  19265. * UJN WRT3.1 (LONG BLOCKS)
  19266. RJM RCB READ NEXT BLOCK FROM CENTRAL BUFFER
  19267. WRT3.1 RJM WEO WAIT END OF OPERATION
  19268. ZJN WRT4 IF NO ERROR
  19269. LDN /MTX/STE STATUS ERROR
  19270. WRT4 STD EC
  19271. WRTF NJN WRT4.1 IF ERROR
  19272. * UJN WRT4.1 (MTS UNIT)
  19273.  
  19274. LDM MTDS+1
  19275. SHN 21-11
  19276. PJN WRT4.1 IF NO GCR CORRECTION
  19277. AOM ECNT+2 INCREMENT COUNTER
  19278. SHN -14
  19279. RAM ECNT+1 INCREMENT ON OVERFLOW
  19280. WRT4.1 LDM UBWB USE HARDWARE CHECKSUM
  19281. STD LG+1
  19282. NJN WRT4.2 IF NONZERO
  19283. AOD LG+1
  19284. WRT4.2 LDD EC
  19285. ADD EI
  19286. ZJN WRT5 IF NO ERROR NOR VERIFICATION REQUIRED
  19287. LDD MA
  19288. CRD CN RESET TO OLD OUT POINTER
  19289. LDD DS SAVE STATUS FOR ERROR PROCESSOR
  19290. STM //STER
  19291. CALL WEM
  19292.  
  19293. * RETURN HERE IF END OF TAPE OR IF ERROR WAS RECOVERED.
  19294.  
  19295. LDD MA
  19296. CWD CN RESTORE MA BACK TO OLD OUT POINTER
  19297. LDM WTFE
  19298. ADD DF
  19299. WRTG NJN WRT5 IF NO MORE DATA OR DROP OUT SET
  19300. * UJN WRT5 (WRITE LABELS OR LONG BLOCKS)
  19301. LDM WRTK
  19302. LMC WRTX
  19303. NJN WRT5 IF END OF TAPE
  19304. RJM RCB READ CENTRAL BUFFER
  19305. WRT5 LDD LG+1 SAVE LAST GOOD RECORD INFORMATION
  19306. STD LG
  19307. RJM UBW UPDATE BID WINDOW
  19308. WRTH PSN ALL NORMAL WRITES
  19309. * UJN WRT7 WRITE LABELS
  19310. LDD MA
  19311. CRD CM SET TO OLD OUT POINTER
  19312. UJN WRT5.1 WRITE OUT TO FET
  19313.  
  19314. BSS 7 ALLOW SPACE FOR THE END OF *WCT*
  19315.  
  19316. * START OF COMMON CODE WITH *WCT*. *WCT* OVERLAYS THE FIRST
  19317. * PART OF *WRT* FOR CTS.
  19318.  
  19319. WRT5.1 BSS 0
  19320. SADT .FE,,3,A
  19321. LDC * WRITE OUT TO FET
  19322. CWD CM
  19323. WRTI LDN 0
  19324. ZJN WRT6 IF AT LEAST ONE MORE BLOCK
  19325. LDD OA RECALL CPU
  19326. CWM WRTL,ON
  19327. WRTJ EQU *-2
  19328. * UJN *+2 (NOT BUFFERED WRITE)
  19329. WRT6 AOD BL+1 INCREMENT BLOCK COUNT
  19330. SHN -14
  19331. RAD BL
  19332. WRT7 AOD BT INCREMENT BLOCKS WRITTEN
  19333. LJM WRTX RETURN
  19334. WRTK EQU *-1
  19335. * LJM /3M /EOTEXIT (RETURN ERROR ON END OF TAPE)
  19336.  
  19337. WRTL CON DRCM DRIVER RECALL CPU MONITOR FUNCTION
  19338. SPACE 4,10
  19339. USE OVLB
  19340. OVLB BSS 0 ORIGIN FOR LONG BLOCK PROCESSOR
  19341.  
  19342. * THE FOLLOWING ROUTINES CANNOT USE ADDRESS MODIFICATION.
  19343.  
  19344. IBF SPACE 4,10
  19345. ** IBF - INTERNAL BLOCK FORMAT.
  19346. * THIS ROUTINE SETS UP THE I FORMAT TRAILER BYTES AND ADJUSTS
  19347. * THE BYTE COUNT SO AN EVEN BYTE COUNT IS WRITTEN.
  19348. *
  19349. * ENTRY (BY) = BYTE COUNT OF BLOCK.
  19350. *
  19351. * EXIT (BY) = ADJUSTED BYTE COUNT OF BLOCK,
  19352. * INCLUDING TERMINATOR.
  19353.  
  19354.  
  19355. IBF SUBR ENTRY/EXIT
  19356. IBFA LDM LNUM SET LEVEL NUMBER IN TERMINATOR
  19357. * LDM BUF,BY (204 WRITE)
  19358. LPN 17
  19359. STM BUF+3,BY
  19360. LMN 17
  19361. NJN IBF1 IF NOT EOF BLOCK
  19362. LDD BY
  19363. ZJN IBF1 IF NO DATA IN BLOCK
  19364. LDN 0 CLEAR LEVEL NUMBER
  19365. STM BUF+3,BY
  19366. IBF1 LDD BY CHECK FOR FULL BLOCK
  19367. LMC 5000
  19368. IBFB NJN IBF2 IF NOT FULL BLOCK I FORMAT
  19369. * ZJN IBF3 (IF FULL BLOCK SI FORMAT)
  19370. IBFC STM BUF+3,BY CLEAR LEVEL NUMBER
  19371. * PSN (SI FORMAT)
  19372. * PSN (SI FORMAT)
  19373. IBF2 LDN 4 ADJUST BLOCK SIZE FOR TERMINATOR
  19374. RAD BY
  19375. STM BUF-4,BY SET BLOCK LENGTH
  19376. LDD BL SET BLOCK NUMBER
  19377. STM BUF-3,BY
  19378. LDD BL+1
  19379. STM BUF-2,BY
  19380. LDN 0 CLEAR EXTRA BYTE
  19381. STM BUF,BY
  19382.  
  19383. * ADJUST BYTE COUNT FOR 9/18 TRACK.
  19384.  
  19385. IBF3 LDD BY
  19386. STM WRTB+1 SAVE BYTE COUNT
  19387. IBFE EQU *-1
  19388. * STM WCTC+1 (CTS)
  19389. IBFD LPN 0
  19390. * LPN 1 (9/18 TRACK)
  19391. RAD BY
  19392. LJM IBFX RETURN
  19393. SIF SPACE 4,10
  19394. ** SIF - PROCESS SI FORMAT 9 TRACK (ATS).
  19395. * PROCESS I/SI FORMAT 9 TRACK (MTS).
  19396. * PROCESS SI FORMAT (CTS).
  19397. *
  19398. * EXIT (A) = 0.
  19399. * (ITMA) = 250 IF 3N+2 OR ODD WRITE REQUIRED.
  19400. * = 50 OTHERWISE.
  19401.  
  19402.  
  19403. SIF1 ZJN SIF2 IF 50 WRITE FUNCTION
  19404. LDC F0250-F0050
  19405. SIF2 ADN F0050 ADD FUNCTION
  19406. STM //ITMA
  19407. LDN 0 SET EXIT CONDITION
  19408.  
  19409. SIF SUBR ENTRY/EXIT
  19410. LDD BY
  19411. LPN 1
  19412. SIFA UJN SIF1 ATS CONTROLLER
  19413. * ADD BY (MTS CONTROLLER I FORMAT)
  19414. * LDD BY (MTS CONTROLLER SI FORMAT)
  19415. LPN 2
  19416. SHN -1
  19417. UJN SIF1 SET EXIT
  19418. EOF SPACE 4,10
  19419. ** EOF - WRITE I/SI FORMAT EOF.
  19420. *
  19421. * EXIT (A) = 1.
  19422. * TO *RET* TO SET FET COMPLETE.
  19423. * (BY) = 0.
  19424. * (T6) = 0.
  19425. *
  19426. * CALLS IBF, ITM, WRT.
  19427.  
  19428.  
  19429. EOF BSS 0 ENTRY
  19430. LDN 0 SET TO WRITE EOF
  19431. STD BY
  19432. STD T6
  19433. LDN 17 SET LEVEL NUMBER
  19434. STM LNUM
  19435. LDN F0050
  19436. STM //ITMA
  19437. RJM //ITM INITIATE TAPE MOTION
  19438. EOFB EQU *-2
  19439. * UJN *+2 (CTS)
  19440. RJM IBF PROCESS I/SI FORMAT BLOCK WRITE
  19441. RJM WRT PROCESS WRITE
  19442. EOFC EQU * (USED TO TELL WHERE *WRT* CALLED FROM)
  19443. LCN 14 CLEAR EOF INDICATOR
  19444. RAD MD
  19445. LDN 1
  19446. LJM RET SET FET COMPLETE
  19447. BUFFER SPACE 4,10
  19448. BUFFER
  19449.  
  19450. .XBFA BSS 0
  19451. LOC OVLB
  19452. XBF SPACE 4,15
  19453. ** XBF - EXTERNAL BLOCK FORMAT.
  19454. *
  19455. * ENTRY (CM+2) = UBC.
  19456. * (T6) = WORD COUNT.
  19457. * (CN+3 - CN+4) = OUT POINTER.
  19458. *
  19459. * EXIT (A) = 0, IF NO EOF WRITE NEEDED.
  19460. * (A) = 1, IF EOF NEEDED.
  19461. * (A) = 2, IF NOT ENOUGH DATA.
  19462. * (A) = 10, IF BAD CONTROL WORD.
  19463. * (ITMA) = 250 IF 3N+2 WRITE REQUIRED.
  19464. * = 50 OTHERWISE.
  19465. *
  19466. * CALLS RCB.
  19467.  
  19468.  
  19469. XBF7 LDN 14 SET EOF STATUS
  19470. RAD MD
  19471. LDN 1
  19472. UJN XBFX RETURN
  19473.  
  19474. XBF8 LDD MA SAVE OUT POINTER
  19475. CWD CN
  19476. RJM RCB READ CENTRAL BUFFER
  19477. LDM BUF
  19478. LMN 17
  19479. ZJN XBF7 IF EOF WRITE
  19480. LDD MA BACK UP FET POINTER
  19481. CRD CN
  19482. UJN XBF2 CONTROL WORD ERROR
  19483.  
  19484. XBF9 LDD FM CHECK FOR NOISE
  19485. LPN 37
  19486. SBD BY
  19487. SBN 1
  19488. PJN XBF2 IF NOISE
  19489. XBFD EQU *-1
  19490. * LDN 0 (CTS)
  19491. LDN 0
  19492.  
  19493. XBF SUBR ENTRY/EXIT
  19494. LDC F0050 SET FUNCTION
  19495. XBFE EQU *-1
  19496. * LDC F0250 CTS S FORMAT CODED WRITE
  19497. STM //ITMA
  19498. LDD BY
  19499. XBFA ZJN XBF8 IF POSSIBLE 204 CODE EOF WRITE
  19500. * PSN ALL OTHERS
  19501. XBF1 LDD CM+2 ADJUST BYTE OCUNT
  19502. SBN 12D
  19503. MJN XBF3 IF LESS THAN ONE BYTE
  19504. STD CM+2
  19505. SOD BY
  19506. PJN XBF1 IF VALID CONTROL WORD
  19507. XBF2 LDN 10 INCORRECT WORD
  19508. UJN XBFX RETURN
  19509.  
  19510. * THE FOLLOWING CODE IS EXECUTED FOR ATS CONTROLLER S, L AND
  19511. * F FORMAT 9 TRACK BINARY TAPES. IT IS ALSO EXECUTED FOR
  19512. * CTS. FOR MTS CONTROLLER S, L, AND F FORMAT 9 TRACK BINARY
  19513. * TAPES, THE AREA IS OVERLAID BY CODE AT .MXBO. FOR 7 TRACK
  19514. * CODED/BINARY AND 9 TRACK CODED TAPES THE AREA IS OVERLAID
  19515. * BY CODE AT .MXCO.
  19516.  
  19517. .MXBA BSS 0
  19518.  
  19519. XBF3 LDD BY
  19520. LPN 1
  19521. NJN XBF5 IF ODD BYTE COUNT
  19522. LDD CM+2
  19523. SBN 8D
  19524. PJN XBF6 IF .GT. 8 UNUSED BITS
  19525. XBF4 UJN XBF9 CHECK FOR NOISE
  19526.  
  19527. XBF5 LDD CM+2
  19528. SBN 4
  19529. PJN XBF4 IF 4 OR MORE UNUSED BITS
  19530. AOD BY INCREMENT BYTE COUNT
  19531. XBF6 LDC 250 SET 3N+2 WRITE FUNCTION
  19532. STM //ITMA
  19533. UJN XBF4 CHECK FOR NOISE
  19534.  
  19535. .XBFB BSS 0
  19536. ERRNG BUFC-* OVERFLOWED INTO BUFFER
  19537. LOC *O
  19538. .XBFL EQU *-.XBFA
  19539. MXB SPACE 4,10
  19540. ** MXB - SET BYTE COUNT AND WRITE FUNCTION FOR
  19541. * EXTERNAL 9 TRACK MTS TAPES.
  19542.  
  19543.  
  19544. .MXBO BSS 0
  19545. LOC .MXBA
  19546.  
  19547. LDD BY SET BYTE COUNT MODULO 4
  19548. LPN 3
  19549. STD T0
  19550. SHN 1
  19551. ADD T0 BYTE COUNT * 3
  19552. SHN 2 BYTE COUNT * 12
  19553. SBD CM+2 MINUS UBC
  19554. PJN MXB1 IF NOT UNDERFLOW
  19555. ADN 48D
  19556. MXB1 ADN 7 ROUND UP
  19557. SHN -3+21 DIVIDE BY 8
  19558. PJN MXB3 IF EVEN FRAME COUNT WRITE
  19559. LDC 250 SET ODD FRAME COUNT WRITE
  19560. STM //ITMA
  19561. MXB2 LJM XBF9 CHECK FOR NOISE
  19562.  
  19563. MXB3 LDD T0 CHECK FOR SPECIAL CASE
  19564. LMN 1
  19565. NJN MXB2 IF NOT ODD CASE
  19566. AOD BY
  19567. UJN MXB2 CHECK FOR NOISE
  19568.  
  19569. ERRNG BUFC-*
  19570. LOC *O
  19571. .MXBL EQU *-.MXBO LENGTH OF MTS 9 TRACK CODE
  19572. SPACE 4,10
  19573. ** SET WRITE FUNCTION FOR 7 TRACK CODED/BINARY OR
  19574. * 9/18 TRACK CODED TAPES.
  19575.  
  19576.  
  19577. .MXCO BSS 0
  19578. LOC .MXBA
  19579. ADN 6
  19580. MJN MXC1 IF EVEN CHARACTER COUNT
  19581. LDC F0250 SET SHORT WRITE
  19582. STM //ITMA
  19583. MXC1 LJM XBF9 CHECK FOR NOISE
  19584. ERRNG BUFC-* CODE OVERFLOW BUFFER
  19585. LOC *O
  19586. .MXCL EQU *-.MXCO 9 TRACK CODED OR 7 TRACK CODE LENGTH
  19587. PRS SPACE 4,25
  19588. ** PRS - PRESET.
  19589. * THIS ROUTINE DOES CODE MODIFICATION FOR WRITE AND WRITE
  19590. * LABEL FUNCTIONS.
  19591. *
  19592. * EXIT TO *PRSX* TO LOAD *CPP* OVERLAY, THEN RETURN AT
  19593. * *PRS54* IF WRITE DATA AND NOT LONG BLOCK. WHEN
  19594. * PRESET IS COMPLETE EXIT TO *WTF*.
  19595. * TO *PRSX* TO LOAD WRITE LABEL OVERLAY IF WRITE
  19596. * LABEL FUNCTION.
  19597. * TO *PRSX* WITH (SC) = (SC)+1 TO LOAD LONG BLOCK
  19598. * OVERLAY FOR F AND L FORMAT.
  19599. * TO *PRSX* WITH (SC) = (SC)+2 TO LOAD LONG BLOCK
  19600. * OVERLAY FOR LI FORMAT.
  19601. * TO *RET3* IF NOT READY, NO WRITE ENABLE, OR ILLEGAL
  19602. * CODED FORMAT ERROR.
  19603. * TO *WTF4* IF OTHER ERROR.
  19604. * (WP, EP+1) PLUS THE BLOCK NUMBER IN (BL,BL+1) IS THE
  19605. * PHYSICAL BLOCK NUMBER IF CTS.
  19606. *
  19607. * USES CN, CN+4, T1, T8, CM - CM+4, T3 - T7.
  19608. *
  19609. * CALLS CNW, MCH, /PRESET/RBI, UAD.
  19610.  
  19611.  
  19612. PRS BSS 0 ENTRY
  19613.  
  19614. * VALIDATE WRITE ACCESS.
  19615.  
  19616. LDN /MTX/WTB 200 BPI WRITE SUB-CODE
  19617. STD T0
  19618. LDM DNCV CHECK FOR 200 BPI WRITE
  19619. LPN 70
  19620. LMN /MTX/D02*10
  19621. ZJN PRS7 IF 200 BPI WRITE
  19622. AOD T0 WRITE ACCESS DISABLED SUB-CODE
  19623. ERRNZ /MTX/NWR-/MTX/WTB-1
  19624. LDD SP
  19625. SHN 21-3
  19626. MJN PRS7 IF READ ONLY ACCESS
  19627. AOD T0 LABEL NOT EXPIRED SUB-CODE
  19628. ERRNZ /MTX/LNE-/MTX/NWR-1
  19629. RJM UAD
  19630. ADN /MTX/UVSN
  19631. CRD CM
  19632. LDD CM+3
  19633. SHN 21-1
  19634. MJN PRS6 IF LABEL EXPIRED
  19635. LDD SP
  19636. SHN 21-10
  19637. MJN PRS7 IF ENFORCING LABEL EXPIRATION
  19638. PRS6 SOD T0 WRITE ACCESS DISABLED SUB-CODE
  19639. ERRNZ /MTX/LNE-/MTX/NWR-1
  19640. LDD DS
  19641. SHN 21-7
  19642. MJN PRS10 IF UNIT WRITE ENABLED
  19643. SHN 0-0-21+7+22
  19644. LPN 1
  19645. ZJN PRS8 IF UNIT NOT READY
  19646. PRS7 LDD T0 SET ERROR SUB-CODE
  19647. STM ERSC
  19648. LDN /MTX/NWE&/MTX/RDR NO WRITE ENABLE
  19649. PRS8 LMN /MTX/RDR READY DROP
  19650. LJM RET3 RETURN ERROR CODE
  19651.  
  19652. * COMPLETE PRESET.
  19653.  
  19654. PRS10 LDD HP
  19655. SHN 21-7
  19656. PJN PRS11 IF NOT CTS
  19657. LDD BL
  19658. ADD BL+1
  19659. NJN PRS11 IF STARTING BLOCK ID ALREADY SAVED
  19660. RJM /PRESET/RBI READ BLOCK ID
  19661. AOM /PRESET/PICA LOCATE BLOCK NECESSARY IN ERROR RECOVERY
  19662. LDM BIDW+1
  19663. STD WP SAVE CURRENT BLOCK ID
  19664. LDM BIDW+2
  19665. STD EP+1
  19666. PRS10.2 LDD FN
  19667. LMN /MTX/WLA
  19668. NJN PRS11 IF NOT WRITE LABEL
  19669. LDD PB
  19670. SHN -6
  19671. LMN 1
  19672. ZJN PRS12 IF WRITE TRAILER LABEL
  19673. PRS11 RJM UAD SET FILE WRITTEN FLAG
  19674. ADK /MTX/UVRI
  19675. CRD T3
  19676. ADN /MTX/UTMS-/MTX/UVRI
  19677. CRD CM
  19678. AOD T3+3 GET REEL NUMBER
  19679. STD CM+2
  19680. RJM UAD
  19681. ADN /MTX/UTMS
  19682. CWD CM
  19683. PRS12 LDD FM SET TAPE FORMAT
  19684. SHN -6
  19685. STD T8
  19686. LDD FN
  19687. LMN /MTX/WTF
  19688. NJN PRS13 IF NOT WRITE DATA
  19689. LDD T8
  19690. LMN /MTX/TFLI
  19691. NJN PRS13 IF NOT LI FORMAT
  19692. LDN 2
  19693. RAD SC SET TO LOAD *WLI* OVERLAY
  19694. LJM PRSX RETURN
  19695.  
  19696. PRS13 LDC PRSB
  19697. RJM MCH MODIFY CHANNELS
  19698. LDN F0050 WRITE FUNCTION
  19699. STM //ITMA
  19700. LDD HP
  19701. SHN 21-7
  19702. PJP PRS15 IF NOT CTS
  19703. ISTORE /PRESET/GPSC,(UJN /PRESET/GPS6.1) DO NOT SEND CONTINUE
  19704. LDC WCTL-1
  19705. STD T1
  19706. PRS14 LDM .WCT,T1 REPLACE *WRT* WITH *WCT*
  19707. STM WRTX,T1
  19708. SOD T1
  19709. PJN PRS14 IF MORE CODE TO MOVE
  19710. LDC WCTK
  19711. RJM MCH MODIFY CHANNEL INSTRUCTIONS
  19712. ISTORE WTFB-1,(UJN WTF2) SKIP INITIATE TAPE MOTION
  19713. LDC WCTC+1
  19714. STM IBFE LOCATION TO STORE BLOCK LENGTH
  19715. ISTORE WTFF,(ZJN WTF2) JUMP ADDRESS IF NO DROP OUT
  19716. LDC WCTD+1
  19717. STM PRSA ADDRESS TO SET MAXIMUM BLOCK SIZE
  19718. LDC UJNI+2
  19719. STM EOFB SKIP INITIATE TAPE MOTION
  19720. LDC 6331 GENERAL STATUS BITS TO TEST
  19721. STM /PRESET/WFEA
  19722. LDC 201 GENERAL STATUS BITS THAT SHOULD BE SET
  19723. STM /PRESET/WFEB
  19724. UJN PRS16 CONTINUE PRESET
  19725.  
  19726. PRS15 LDC 4635 GENERAL STATUS BITS TO TEST
  19727. STM //WEOA
  19728. LDC 201
  19729. STM //WEOB GENERAL STATUS BITS THAT SHOULD BE SET
  19730. PRS16 LDD FN CHECK SOFTWARE FUNCTION
  19731. LMN /MTX/WTF
  19732. ZJN PRS17 IF WRITE FUNCTION
  19733. LDN /MTX/TFF PROCESS AS IF F FORMAT
  19734. STD T8
  19735. PRS17 LDD T8
  19736. SBN /MTX/TFSI+1
  19737. PJN PRS18 IF S/L/F FORMAT
  19738. LJM PRS28 PRESET I/SI FORMAT
  19739.  
  19740. * PRESET FOR S/L/F FORMAT.
  19741.  
  19742. PRS18 LDN .XBFL-1 MOVE CODE FOR S/L/F FORMATS
  19743. STD T1
  19744. PRS19 LDM .XBFA,T1
  19745. STM OVLB,T1
  19746. SOD T1
  19747. PJN PRS19 IF MORE CODE TO MOVE
  19748. LDD MD CHECK MODE
  19749. SHN 21-6
  19750. PJN PRS22 IF NOT CODED
  19751. PRS20 LDN .MXCL-1 TRANSFER 9/18 TRACK CODED OR 7 TRACK CODE
  19752. STD T1
  19753. PRS21 LDM .MXCO,T1
  19754. STM .MXBA,T1
  19755. SOD T1
  19756. PJN PRS21 IF MORE CODE TO MOVE
  19757. UJN PRS24 CONTINUE WITH CODED PROCESSING
  19758.  
  19759. PRS22 LDD HP CHECK TRACK TYPE
  19760. SHN 21-7
  19761. MJN PRS24 IF CTS
  19762. SHN 21-0-21+7
  19763. PJN PRS20 IF 7 TRACK BINARY
  19764. LDD HP CHECK CONTROLLER TYPE
  19765. LPN 40
  19766. ZJN PRS24 IF NOT MTS CONTROLLER
  19767. LDN .MXBL-1 MOVE CODE FOR MTS 9 TRACK BINARY S/L/F
  19768. STD T1
  19769. PRS23 LDM .MXBO,T1
  19770. STM .MXBA,T1
  19771. SOD T1
  19772. PJN PRS23 IF MORE CODE TO MOVE
  19773. PRS24 LDC UJNI+2 PROCESS WRITE
  19774. STM WTFD
  19775. LDD HP
  19776. SHN 21-7
  19777. PJN PRS25 IF NOT CTS
  19778. LDN 0
  19779. STM WCTC
  19780. STM XBFD NO NOISE FOR CTS
  19781. LDC LDDI+BY
  19782. STM WCTC+1
  19783. LDC UJNI+2 SKIP *IBF* DURING COMMAND RETRY
  19784. STM WCTH
  19785. UJN PRS26 CONTINUE PRESET
  19786.  
  19787. PRS25 LDN 0 SET NON I/SI FORMAT BYTE COUNT
  19788. STM WRTB
  19789. LDC LDDI+BY
  19790. STM WRTB+1
  19791. PRS26 LDD MD
  19792. LPN 40
  19793. NJN PRS27 IF 204 WRITE
  19794. STM XBFA
  19795. PRS27 LJM PRS36 CONTINUE PRESET
  19796.  
  19797. * PRESET FOR I/SI FORMAT.
  19798.  
  19799. PRS28 LDD HP
  19800. SHN 21-7
  19801. MJN PRS29 IF CTS
  19802. SHN 21-0-21+7
  19803. PJN PRS33 IF 7 TRACK
  19804. PRS29 AOM IBFD
  19805. LDD HP
  19806. LPN 40
  19807. ZJN PRS32 IF NOT MTS CONTROLLER
  19808. LDD T8
  19809. LMN /MTX/TFI
  19810. ZJN PRS30 IF I FORMAT
  19811. LDC LDDI&ADDI SET FOR SI FORMAT
  19812. PRS30 LMC ADDI+BY
  19813. STM SIFA
  19814. PRS31 LDC SIF
  19815. UJN PRS34 SET CALL TO SIF
  19816.  
  19817. PRS32 LDD T8
  19818. LMN /MTX/TFSI
  19819. ZJN PRS31 IF SI FORMAT
  19820. PRS33 LDC LDNI
  19821. STM CNWL
  19822. PRS34 STM CNWL+1
  19823. LDD T8
  19824. LMN /MTX/TFI
  19825. ZJN PRS35 IF NOT SI FORMAT
  19826. LDC 0 SET TO INITIALIZE SI BLOCK
  19827. ORG *-1
  19828. LOC IBFB
  19829. ZJN IBF3 IF FULL BLOCK SI FORMAT
  19830. LOC *O
  19831. STM IBFB
  19832. LDN 0
  19833. STM IBFC
  19834. STM IBFC+1
  19835. LCN 4
  19836. PRS35 ADN 4
  19837. RAM WRTC+1 SET MAXIMUM BLOCK SIZE
  19838. PRSA EQU *-1
  19839. * RAM WCTD+1 (CTS)
  19840. LDD MD
  19841. LPN 40
  19842. ZJN PRS36 IF NOT 204 WRITE
  19843. LDN BY SET TO GET LEVEL NUMBER FROM TRAILER
  19844. RAM IBFA
  19845. LDC BUF
  19846. STM IBFA+1
  19847. PRS36 LDD MD
  19848. LPN 60
  19849. SHN -4
  19850. STD T7
  19851. ZJN PRS38 IF NOT CONTROL WORD
  19852. LMC LDNI
  19853. STM CNWA
  19854. LPN 3
  19855. RAM CNWI
  19856. LDC LDDI+CN+3
  19857. STM CNWF
  19858. LDC BUFC
  19859. STM RCBA
  19860. LDD T8
  19861. SBN /MTX/TFSI+1
  19862. MJN PRS38 IF I OR SI FORMAT
  19863. LDD T7
  19864. LPN 2
  19865. ZJN PRS37 IF NOT 204 WRITE
  19866. LCN -12D+57D
  19867. PRS37 ADC SBNI+57D
  19868. STM CNWJ
  19869. PRS38 LDD T7
  19870. LPN 2
  19871. ZJN PRS40 IF NOT 204 WRITE
  19872. LDC STDI+BY
  19873. STM CNWG
  19874. LDD T8
  19875. LMN /MTX/TFF
  19876. NJN PRS39 IF NOT F FORMAT
  19877. LDC LDDI+MD ENABLE MODE CHANGE
  19878. STM CNWH
  19879. PRS39 UJN PRS42 CONTINUE PRESET
  19880.  
  19881. PRS40 LDD T7
  19882. NJN PRS42 IF CONTROL WORD WRITE
  19883. LDM CIOE SET TYPE OF WRITE OPERATION
  19884. SHN -3
  19885. SHN 2
  19886. LMD MD
  19887. LPN 14
  19888. LMD MD
  19889. STD MD
  19890. LPN 14
  19891. NJN PRS41 IF NOT PRU WRITE (004)
  19892. * LDN 0
  19893. STM WTFF
  19894. LDC WTF8
  19895. STM WTFG
  19896. PRS41 LDD MD
  19897. LPN 14
  19898. LMN 4
  19899. ZJN PRS42 IF WRITE (014)
  19900. LDC UJNI+2 BYPASS *DRCM*
  19901. STM WRTJ
  19902. PRS42 LDD T8
  19903. SBN /MTX/TFSI+1
  19904. MJN PRS43 IF I OR SI FORMAT
  19905. LDD T7
  19906. LPN 2
  19907. LMN 2
  19908. NJN PRS43 IF NOT 204 WRITE
  19909. STM CNWK
  19910. PRS43 LDD T8
  19911. LMN /MTX/TFS
  19912. ZJN PRS44 IF S FORMAT
  19913. LMN /MTX/TFL&/MTX/TFS
  19914. NJN PRS46 IF NOT L FORMAT
  19915. PRS44 LDD T7
  19916. NJN PRS45 IF CONTROL WORD OPERATION
  19917. * LDN 0
  19918. STM WTFF SET FOR PRU OPERATION
  19919. LDC WTF8
  19920. STM WTFG
  19921. LDC STDI+CM+4
  19922. STM CNWC
  19923. LDM LNUM SET UBC
  19924. LPN 77
  19925. RAM CNWB
  19926. LDC SBNI+57D
  19927. STM CNWJ
  19928. LDC NJNI-PJNI
  19929. RAM CNWD
  19930. PRS45 UJN PRS47 CONTINUE PRESET
  19931.  
  19932. PRS46 LDD T7
  19933. NJN PRS47 IF CONTROL WORD WRITE
  19934. LDC RADI+CM+4
  19935. STM CNWE
  19936. PRS47 LDM LNUM SET LEVEL NUMBER
  19937. SHN -10
  19938. STM LNUM
  19939. LDD FN
  19940. LMN /MTX/WTF
  19941. NJN PRS48 IF NOT WRITE DATA
  19942. LDD MD
  19943. LPN 14
  19944. LMN 14
  19945. PRS48 NJN PRS50 IF NOT EOF WRITE
  19946. LDD T8
  19947. SBN /MTX/TFSI+1
  19948. PJN PRS49 IF NOT I/SI FORMAT
  19949. LDC EOF SET TO WRITE EOF
  19950. STM WTFH
  19951. LDM LNUM
  19952. LMN 17
  19953. NJN PRS49 IF NOT LEVEL 17
  19954. STM LNUM DO NOT WRITE DOUBLE EOF
  19955. PRS49 LDD MD CLEAR EOR/EOF FLAG THIS OPERATION
  19956. LPC 7377
  19957. STD MD
  19958. LDD UP CHECK LAST OPERATION EOR/EOF
  19959. LPN 30
  19960. LMN 20
  19961. ZJN PRS50 IF LAST OPERATION INCOMPLETE WRITE
  19962. LDM CIOE
  19963. SHN 21-12
  19964. MJN PRS50 IF DATA IN BUFFER
  19965. LDC 400 SET EOR/EOF FLAG THIS OPERATION
  19966. RAD MD
  19967. PRS50 LDD UP
  19968. SCN 24 CLEAR BLANK TAPE FLAG
  19969. LMN 20 SET LAST OPERATION WRITE FLAG
  19970. STD UP
  19971. LDC PRSC SET UP FOR INSTRUCTION MODIFICATION
  19972. STD CN
  19973. LDN 3 SET TO RETURN OUT POINTER
  19974. STD CN+4
  19975. LDC /SRU/ITRW*100 SET SRU INCREMENT
  19976. STM //CECA
  19977. LDD OV
  19978. ZJN PRS52 IF NOT POSSIBLE LONG BLOCKS
  19979. LDD T8
  19980. LMN /MTX/TFL
  19981. ZJN PRS51 IF L FORMAT
  19982. LMN /MTX/TFF&/MTX/TFL
  19983. NJN PRS52 IF NOT F FORMAT
  19984. PRS51 LDD FN
  19985. LMN /MTX/WTF
  19986. NJN PRS53 IF NOT WRITE
  19987. AOD SC SET TO LOAD LONG BLOCK OVERLAY
  19988. PRS52 LDD FN
  19989. LMN /MTX/WTF
  19990. NJN PRS53 IF NOT WRITE DATA
  19991. LDC PRS54 SET TO RETURN HERE IF NOT LONG BLOCKS
  19992. STD BT
  19993. PRS53 LJM PRSX RETURN
  19994.  
  19995. * RETURN HERE AFTER ALL ROUTINES LOADED IF WRITE DATA.
  19996.  
  19997. PRS54 LDD HP
  19998. SHN 21-7
  19999. PJN PRS55 IF NOT CTS
  20000. LDD CN+3
  20001. STM OPTU SAVE OUT POINTER FOR COMMAND RETRY
  20002. LDD CN+4
  20003. STM OPTL
  20004. PRS55 RJM CNW CHECK FIRST WRITE
  20005. ZJN PRS56 IF WRITE OK
  20006. LJM WTF4 PROCESS ERROR CONDITION
  20007.  
  20008. PRS56 LDD HP
  20009. SHN 21-7
  20010. PJN PRS59 IF NOT CTS
  20011. LDD MD
  20012. SHN 21-6
  20013. PJN PRS58 IF NOT CODED
  20014. LDD BY
  20015. LMN LABL
  20016. ZJN PRS57 IF CORRECT LENGTH FOR LABEL
  20017. LDN /MTX/SCI CODED I/O NOT SUPPORTED
  20018. LJM RET3 RETURN ERROR CODE
  20019.  
  20020. PRS57 LDC F0250
  20021. STM ITMA SHORT WRITE
  20022. STM XBFE
  20023. LDC LDNI+CCW/10000
  20024. STM WCTA DO CODE CONVERSION
  20025. LDC LDNI+CLBL
  20026. STM WCTB LENGTH TO WRITE
  20027. PRS58 UJN PRS61 SET BLOCKS WRITTEN FLAG
  20028.  
  20029. PRS59 SHN 21-5-21+7
  20030. PJN PRS60 IF NOT MTS UNIT
  20031. LDC UJNI-NJNI
  20032. RAM WRTF
  20033. PRS60 LDM DLYA
  20034. LPN 14
  20035. ZJN PRS61 IF 1X PPU SPEED
  20036. LPN 4
  20037. ZJN PRS61 IF 2X PPU SPEED
  20038. LDC ITM ENABLE MOTION AHEAD
  20039. STM WTFA+1
  20040. LDC RCB
  20041. STM WTFB
  20042. PRS61 LDC 4000 SET BLOCKS WRITTEN FLAG
  20043. STD BT
  20044. LJM WTF INITIATE WRITE
  20045.  
  20046.  
  20047. PRSB CHTB
  20048. PRSC TSAD
  20049. WCT SPACE 4,15
  20050. ** WCT - WRITE CARTRIDGE TAPE.
  20051. *
  20052. * THIS ROUTINE OVERLAYS THE FIRST PART OF *WRT* FOR CTS.
  20053. * THE LENGTH OF THIS ROUTINE MUST BE THE SAME AS THE LENGTH
  20054. * OF THE FIRST PART OF *WRT*.
  20055. *
  20056. * ENTRY (BY) = BYTES TO TRANSFER.
  20057. *
  20058. * EXIT (CN+3, CN+4) = OUT POINTER.
  20059. * TO */WLB/ODAB* IF COMMAND RETRY FOR LONG BLOCKS.
  20060. *
  20061. * USES CM - CM+4, CN - CN+2.
  20062. *
  20063. * CALLS CNW, *CWP*, IBF, ITM, LOV, RCB, /PRESET/WFE.
  20064. *
  20065. * MACROS CALL.
  20066.  
  20067.  
  20068. .WCT BSS 0
  20069. LOC WRTX
  20070. WCT SUBR ENTRY/EXIT
  20071. WCT1 UJN WCT2 WRITE DATA, NOT LONG BLOCKS
  20072. WCTA EQU *-1
  20073. * LDN CCW/10000 (CODE CONVERSION OVERLAY NUMBER)
  20074. * UJN WCT3 (LONG BLOCKS)
  20075. RJM LOV LOAD OVERLAY AND DO CODE CONVERSION
  20076. WCT2 RJM ITM
  20077. LDD BY
  20078. WCTB EQU *-1
  20079. * LDN CLBL (CTS LABEL LENGTH)
  20080. OAM BUF,CH OUTPUT BLOCK
  20081. FJM *,CH
  20082.  
  20083. * DELAY 10 MICROSECONDS TO PREVENT A HARDWARE ERROR IN THE
  20084. * CCC. THE DISCONNECT WOULD SOMETIMES CAUSE THE LAST BYTE TO
  20085. * BE LOST.
  20086.  
  20087. LDN 20
  20088. SBN 1
  20089. NJN *-1
  20090. DCN CH+40
  20091. WCT3 LDD UP
  20092. SCN 10 CLEAR EOR/EOF LAST BLOCK FLAG
  20093. STD UP
  20094. LDD MD
  20095. LPC 7377 CLEAR EOR/EOF THIS OPERATION FLAG
  20096. STD MD
  20097. LDC * BLOCK LENGTH (I, SI FORMAT)
  20098. WCTC EQU *-2
  20099. * PSN (NOT I, SI FORMAT)
  20100. * LDD BY (NOT I, SI FORMAT)
  20101. LMC 5000
  20102. WCTD EQU *-2
  20103. * LMC 5004 (I FORMAT)
  20104. * LDN 0 (WRITE LABEL)
  20105. * LDN 0 (WRITE LABEL)
  20106. ZJN WCT4 IF NOT EOR/EOF WRITTEN
  20107. LDN 10
  20108. RAD UP SET EOR/EOF FLAGS
  20109. LDC 400
  20110. RAD MD
  20111. WCT4 LDD MA
  20112. CWD CN SAVE OLD OUT POINTER
  20113. RJM CNW CHECK NEXT WRITE
  20114. WCTE EQU *-2
  20115. * UJN WCT5 (WRITE LABEL)
  20116. LDM WTFE
  20117. ADD DF
  20118. NJN WCT5 IF NO MORE DATA OR DROP OUT SET
  20119. WCTF EQU *-1
  20120. * UJN WCT5 (LONG BLOCKS)
  20121. RJM RCB READ NEXT BLOCK FROM CENTRAL BUFFER
  20122. WCT5 RJM /PRESET/WFE WAIT FOR END OF OPERATION
  20123. PJP WCT8 IF NOT COMMAND RETRY
  20124. LDM OPTU RESET OUT POINTER
  20125. WCTG EQU *-2
  20126. * UJN WCT7 (WRITE LABELS)
  20127. STD CN+3
  20128. LDM OPTL
  20129. STD CN+4
  20130. LDD MD
  20131. LPC 7377 CLEAR EOR/EOF THIS OPERATION FLAG
  20132. STD MD
  20133. RJM CNW CHECK NEXT WRITE
  20134. LDM WCT
  20135. LMC EOFC
  20136. NJN WCT6 IF NOT CALLED FROM *EOF*
  20137. STD T6
  20138. STD BY SET TO WRITE EOF
  20139. RJM IBF
  20140. UJN WCT7 ISSUE THE CONTINUE FUNCTION
  20141.  
  20142. * FOR LONG BLOCKS, THE FOLLOWING CODE IS OVERLAYED WITH
  20143. * */WLB/.WCT*.
  20144.  
  20145. * LDN F0002 (LONG BLOCKS)
  20146. * STM ITMA (LONG BLOCKS)
  20147. * LJM /WLB/ODAB (LONG BLOCKS)
  20148.  
  20149. WCT6 RJM RCB READ CENTRAL BUFFER
  20150. RJM IBF PROCESS I/SI FORMAT
  20151. WCTH EQU *-2
  20152. * UJN *+2 (NOT I/SI FORMAT)
  20153. WCT7 LDN F0002
  20154. STM ITMA CONTINUE IS THE NEXT FUNCTION
  20155. LJM WCT1 RETRY THE WRITE
  20156. WCTI EQU *-1
  20157. * LJM WCT2 (WRITE LABEL)
  20158.  
  20159. WCT8 ZJN WCT9 IF NO ERROR
  20160. LDN /MTX/STE STATUS ERROR
  20161. WCT9 STD EC
  20162. ADD EI
  20163. ZJN WCT10 IF NO ERROR OR NO RECOVERED ERROR
  20164. LDD MA
  20165. CRD CN RESET TO OLD OUT POINTER
  20166. CALL CWP
  20167.  
  20168. * RETURN HERE IF END OF TAPE OR RECOVERED ERROR.
  20169.  
  20170. LDM WTFE
  20171. ADD DF
  20172. NJN WCT10 IF NO MORE DATA OR DROP OUT
  20173. WCTJ EQU *-1
  20174. * UJN WCT10 (LONG BLOCKS)
  20175. * UJN WRT7 (WRITE LABEL)
  20176. LDM WRTK
  20177. LMC WRTX
  20178. NJN WCT10 IF END OF TAPE
  20179. RJM RCB READ CENTRAL BUFFER
  20180. WCT10 LDD MA
  20181. WCTM EQU *-1
  20182. * UJN WRT7 (WRITE LABEL)
  20183. CRD CM
  20184. LDD CM+3
  20185. STM OPTU SAVE OUT POINTER FOR COMMAND RETRY
  20186. LDD CM+4
  20187. STM OPTL
  20188.  
  20189. WCTL EQU *-WCTX LENGTH OF *WCT*
  20190. ERRNZ WRT5.1-* ADJUST *BSS* BEFORE *WRT5.1*
  20191.  
  20192. LOC *O
  20193.  
  20194. WCTK CHTB CHANNEL TABLE
  20195. SMA SPACE 4,10
  20196. OVERLAY (WRITE LONG BLOCK PROCESSOR.),(BUFC+12),,WLB
  20197. .IM SET 1 SET FOR ADDRESS MODIFICATION ON ERRORS
  20198.  
  20199. * LOCAL TO OVERLAY DEFINITIONS.
  20200.  
  20201. NC EQU PA NUMBER OF CHUNKS
  20202. BC EQU PB BYTE COUNT LAST CHUNK
  20203. ODA SPACE 4,10
  20204. ** ODA - OUTPUT DATA.
  20205. *
  20206. * CALLS ADP, CRA, ITM, OPA, OPD, OPI, OPL, RDA, SRQ.
  20207. *
  20208. * MACROS CHTE.
  20209.  
  20210.  
  20211. ODA SUBR ENTRY/EXIT
  20212. RJM //ITM INITIATE TAPE MOTION
  20213. * UJN *+2 (ANY GCR UNIT AT 1X PPU SPEED
  20214. * OR 200 IPS GCR UNIT AT 2X SPEED)
  20215. * UJN *+2 (CTS)
  20216. ODAA EQU *-1
  20217. ODAB LDN 0 ALLOW FOR CONTROL WORD
  20218. * LDN 1 (204/264 WRITE)
  20219. RJM ADP
  20220. LDN 0 PRESET CHUNKS OUTPUT COUNT
  20221. STD CM+7
  20222. LDC LBBY
  20223. STD BY
  20224. LDM OPAB SET FIRST CHUNK FLAGS
  20225. * LDM OPIB (CYBER 180)
  20226. ODAC EQU *-1
  20227. STM OPAA
  20228. * STM OPIA (CYBER 180)
  20229. * STM OPDA (MTS)
  20230. ODAD EQU *-1
  20231. LDN PSNI ENABLE WAIT FOR *1LT*
  20232. STM OPLA
  20233. * STM OPEA (CYBER 180)
  20234. * STM ODAF (MTS)
  20235. ODAF EQU *-1
  20236. LDD NC
  20237. ZJN ODA5 IF *1LT* NOT NEEDED
  20238. SBN 2
  20239. PJN ODA1 IF *1LT* NEEDED
  20240. LDD BC
  20241. ZJN ODA4 IF *1LT* NOT NEEDED
  20242. ADC LBBY-LCKS SET BYTE COUNT FOR CHECKSUM
  20243. MJN ODA2 IF .LT. L TAPE SIZE
  20244. ODA1 LDN 0
  20245. ODA2 ADC LCKS
  20246. STM RDAB
  20247. LDC LDNI+1
  20248. STM ODAL SET *1LT* CALLED FLAG
  20249. LDN 0 SET UP POINTERS FOR *1LT*
  20250. RJM ADP
  20251. ODAG LDN 1 SEND REQUEST TO *1LT*
  20252. * UJN ODA3 (ANY GCR UNIT AT 1X PPU SPEED
  20253. * OR 200 IPS GCR UNIT AT 2X SPEED)
  20254. * UJN ODA3 (CTS)
  20255. RJM SRQ
  20256. ODA3 UJN ODA8 OUTPUT DATA
  20257.  
  20258. ODA4 LDC LBBY
  20259. STD BC
  20260. LDC /MTX/LBWD
  20261. STM .WC
  20262. ODA5 LDM OPLB SET *1LT* NOT NEEDED FLAGS
  20263. * LDM OPEB (CYBER 180)
  20264. ODAH EQU *-1
  20265. STM OPLA
  20266. * STM OPEA (CYBER 180)
  20267. ODAI EQU *-1
  20268. LDD BC
  20269. STM RDAB SET BYTE COUNT FOR CHECKSUM
  20270. STD BY
  20271. LJM ODA11 SET UP TO READ NEXT BLOCK
  20272.  
  20273. ODA6 LDN 2 INCREMENT CHUNK COUNT
  20274. RAD CM+7
  20275. SBD NC
  20276. PJN ODA9 IF NO MORE FULL CHUNKS
  20277. ADN 1
  20278. NJN ODA7 IF NOT 1 CHUNK LEFT
  20279. LDD BC
  20280. ZJN ODA9 IF ZERO REMAINDER
  20281. ODA7 LDC /MTX/LBWD SKIP OVER DATA *1LT* OUTPUT
  20282. RJM ADP
  20283. ODA8 LDC /MTX/LBWD SET UP TO READ NEXT DATA CHUNK
  20284. RJM RDA READ DATA
  20285. RJM OPD OUTPUT DATA
  20286. * RJM OPA (ATS NON-CYBER 180)
  20287. * RJM OPI (CYBER 180)
  20288. ODAJ EQU *-1
  20289. ZJN ODA6 IF FULL BLOCK OUTPUT
  20290. UJP ODA14 STORE BYTES NOT WRITTEN
  20291.  
  20292. ODA9 ZJN ODA10 IF TRANSFER NOT COMPLETE FOR *1MT*
  20293. LDM .WC ADVANCE POINTER OVER *1LT,S* CHUNK
  20294. RJM ADP
  20295. UJN ODA15 CHECK IF *1LT* WAS CALLED
  20296.  
  20297. ODA10 AOD CM+7 COUNT CHUNK
  20298. LDC /MTX/LBWD SKIP OVER DATA *1LT* OUTPUT
  20299. RJM ADP
  20300. LDD BC
  20301. ZJN ODA12 IF POSSIBLE OUTPUT COMPLETE
  20302. STD BY
  20303. ODA11 LDM .WC SET UP TO READ UP NEXT BLOCK
  20304. UJN ODA13 READ DATA
  20305.  
  20306. ODA12 LDD NC
  20307. LPN 1
  20308. ZJN ODA15 IF OUTPUT COMPLETE
  20309. LDC /MTX/LBWD
  20310. ODA13 RJM RDA READ DATA
  20311. RJM OPD OUTPUT DATA
  20312. * RJM OPL (ATS NON-CYBER 180 - OUTPUT LAST CHUNK)
  20313. * RJM OPE (CYBER 180 - OUTPUT LAST CHUNK)
  20314. ODAK EQU *-1
  20315. FJM *,CH
  20316. NJN ODA14 IF INCOMPLETE TRANSFER
  20317.  
  20318. * A 10 MICROSECOND DELAY MUST BE DONE TO PREVENT POSSIBLE LOSS
  20319. * OF THE LAST BYTE OF THE TRANSFER BY THE CCC FOR CTS.
  20320.  
  20321. LDN 20
  20322. SBN 1
  20323. NJN *-1
  20324. DCN CH+40
  20325. ODA14 STM /WRITE/BYRM
  20326. ODA15 LDN 0
  20327. ODAL EQU *-1
  20328. ZJN ODA17 IF *1LT* NOT CALLED
  20329. SOM ODAL CLEAR *1LT* CALLED FLAG
  20330. ODA16 RJM CRA CHECK REQUEST ACCEPTANCE FROM *1LT*
  20331. LMN 2
  20332. NJN ODA16 IF NOT ACCEPT
  20333. STD CM ACKNOWLEDGE *1LT*
  20334. LDM CPDA
  20335. ADN 2
  20336. CWD CM
  20337. ODA17 LDD CM+7
  20338. ZJN ODA18 IF NO FULL CHUNKS OUTPUT
  20339. LCN 0 SET TO NOT CONTROL BACKSPACE
  20340. STM /WRITE/BYWR
  20341. ODA18 LDN 0 SKIP TRAILER CONTROL WORD IF PRESENT
  20342. ODAM EQU *-1
  20343. * LDN 1 (204 WRITE)
  20344. RJM ADP
  20345. LJM ODAX RETURN
  20346. TITLE SUBROUTINES.
  20347. ADP SPACE 4,15
  20348. ** ADP - ADVANCE POINTER.
  20349. *
  20350. * ENTRY (CN+3 - CN+4) = OUT POINTER.
  20351. * (A) = WORDS TO INCREMENT OUT BY.
  20352. *
  20353. * EXIT (T4 - T5) = STARTING OUT POINTER.
  20354. * (CN+3 - CN+4) = UPDATED OUT POINTER.
  20355. * (T6) = FIRST PART WORD COUNT.
  20356. * (T7) = SECOND PART WORD COUNT.
  20357. *
  20358. * MACROS SADT.
  20359.  
  20360.  
  20361. ADP SUBR ENTRY/EXIT
  20362. STD T6
  20363. LDD CN+3 SAVE OUT
  20364. STD T4
  20365. LDD CN+4
  20366. STD T5
  20367. LDN 0 PRESET SECOND PART WORD COUNT
  20368. STD T7
  20369. LDD T6 UPDATE OUT
  20370. RAD CN+4
  20371. SHN -14
  20372. RAD CN+3
  20373. SHN 14
  20374. LMD CN+4
  20375. SADT .LM,C
  20376. ADC -* (-LIMIT)
  20377. MJN ADPX IF NO WRAP AROUND
  20378. STD T7 SET SECOND PART WORD COUNT
  20379. SADT .FT
  20380. ADC * (FIRST)
  20381. STD CN+4
  20382. SHN -14
  20383. STD CN+3
  20384. LDD T6 RESET FIRST PART WORD COUNT
  20385. SBD T7
  20386. STD T6
  20387. UJN ADPX RETURN
  20388. CNL SPACE 4,10
  20389. ** CNL - CHECK NEXT WRITE LONG BLOCKS.
  20390. *
  20391. * ENTRY (CN+3 - CN+4) = OUT POINTER.
  20392. *
  20393. * EXIT SEE /WRITE/CNW.
  20394. *
  20395. * CALLS /WRITE/COB, /WRITE/XBF.
  20396. *
  20397. * MACROS SADT.
  20398.  
  20399.  
  20400. CNL17 LDN 2 SET NOT ENOUGH DATA
  20401. CNL18 LJM /WRITE/CNW10 EXIT WITH NEXT WRITE STATUS
  20402.  
  20403. CNL BSS 0 ENTRY
  20404. LDN ZERL PRESET CONTROL WORD
  20405. CRD CM
  20406. RJM /WRITE/COB CHECK OUTPUT BUFFER
  20407. ZJN CNL17 IF NO DATA
  20408. CNLA UJN CNL1 PROCESS CONTROL WORD WRITE
  20409. * STD CM+4 (NOT 204/264 WRITE)
  20410. SHN -14
  20411. STD CM+3
  20412. CNLB LDN 0 SET UBC
  20413. STD CM+2
  20414. UJN CNL2 CALCULATE NUMBER OF CHUNKS
  20415.  
  20416. CNL1 LDD CN+3 READ CONTROL WORD
  20417. SHN 6
  20418. ADD RA
  20419. SHN 6
  20420. ADD CN+4
  20421. CRD CM
  20422. CNL2 LDC /MTX/LBWD WORDS PER CHUNK
  20423. CNLC EQU *-1
  20424. * LDC LBBY BYTES PER CHUNK (204 WRITE)
  20425. STD T1
  20426. LDN 0
  20427. STD NC
  20428.  
  20429. * DETERMINE NUMBER OF CHUNKS AND REMAINDER.
  20430.  
  20431. CNL3 LDD CM+4
  20432. SBD T1
  20433. STD CM+4
  20434. PJN CNL4 IF NO UNDERFLOW
  20435. AOD CM+4
  20436. SOD CM+3
  20437. MJN CNL5 IF UNDERFLOW
  20438. CNL4 AOD NC COUNT CHUNK
  20439. UJN CNL3 LOOP
  20440.  
  20441. CNL5 LDD T1
  20442. RAD CM+4
  20443. STD BY PRESET BYTES AND WORDS IN LAST BLOCK
  20444. STD BC
  20445. STM .WC
  20446. CNLD UJN CNL6 (204 WRITE)
  20447. * LDD CM+4 BYTES = 5 * CM WORDS (NOT 204 WRITE)
  20448. SHN 2
  20449. RAD BY
  20450. UJN CNL7 CHECK FOR LEGAL BLOCK SIZE
  20451.  
  20452. CNL6 LDD CM+4 ROUND UP BYTES
  20453. ADN 4
  20454. STD T2
  20455. SHN 1 13*BYTES
  20456. ADD T2
  20457. SHN 2
  20458. ADD T2
  20459. SHN 14 (-6) (13*BYTES)/64
  20460. STD T0
  20461. SHN 6+2 4*13*BYTES (52*BYTES)
  20462. SBD T2 51*BYTES
  20463. ADD T0 (51*BYTES)+((13*BYTES)/64)
  20464. SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
  20465. STM .WC
  20466.  
  20467. * CHECK IF LEGAL BLOCK SIZE.
  20468.  
  20469. CNL7 LDD NC
  20470. STD T1
  20471. LDM .WC
  20472. STD T7
  20473. LDN 0
  20474. STD T6
  20475. CNL8 SOD T1
  20476. MJN CNL9 IF END OF CHUNKS
  20477. LDC /MTX/LBWD
  20478. RAD T7
  20479. SHN -14
  20480. RAD T6
  20481. UJN CNL8 LOOP
  20482.  
  20483. CNL9 LDD T6
  20484. SHN 14
  20485. LMD T7
  20486. SADT .BS,C,1
  20487. ADC -*
  20488. PJN CNL11 IF BLOCK TOO LARGE
  20489. LDD FM
  20490. SHN -6
  20491. LMN /MTX/TFF
  20492. NJN CNL12 IF NOT F FORMAT
  20493. LDD MD
  20494. LMD CM
  20495. SHN -4
  20496. LPN 4
  20497. ZJN CNL12 IF NO MODE CHANGE
  20498. CNL10 LJM CNL18 EXIT WITH NEXT WRITE STATUS
  20499.  
  20500. CNL11 LDN 10 SET BUFFER CONTROL WORD ERROR
  20501. UJN CNL10 EXIT WITH NEXT WRITE STATUS
  20502.  
  20503. CNL12 LDD MD CHECK IF ENOUGH DATA
  20504. LPN 60
  20505. SHN -4
  20506. RAD T7
  20507. SHN -14
  20508. RAD T6
  20509. RJM /WRITE/COB CHECK OUTPUT BUFFER
  20510. SHN 6
  20511. SBD T6
  20512. SHN 14
  20513. SBD T7
  20514. PJN CNL13 IF ENOUGH DATA IN OUTPUT BUFFER
  20515. LJM CNL17 SET NOT ENOUGH DATA
  20516.  
  20517. CNL13 LDM /WRITE/CNWJ
  20518. LPN 77
  20519. LMC -0
  20520. ADD CM+2
  20521. PJP CNL11 IF INCORRECT UBC
  20522. LDN 2 PRESET FOR POSSIBLE 204 EOF WRITE
  20523. STD T6
  20524. LDD NC
  20525. ZJN CNL14 IF ONLY PARTIAL CHUNK
  20526. LDD HN SET TO PREVENT NOISE BLOCK ERROR
  20527. RAD BY
  20528. CNL14 RJM /WRITE/XBF
  20529. STD CM+4
  20530. LDD NC
  20531. ZJN CNL15 IF ONLY PARTIAL CHUNK
  20532. LDC -100
  20533. CNL15 ADD BY
  20534. STD BC
  20535. PJN CNL16 IF NO UNDERFLOW IN BYTE COUNT
  20536. ADC LBBY RESET BYTE COUNT
  20537. STD BC
  20538. LDC /MTX/LBWD SET WORD COUNT IN LAST CHUNK
  20539. STM .WC
  20540. SOD NC DECREMENT CHUNK COUNT
  20541. CNL16 LDD CM+4
  20542. LJM CNL18 EXIT WITH NEXT WRITE STATUS
  20543. CPD SPACE 4,10
  20544. ** CPD - CHECK PP (1LT) DROP OUT.
  20545. *
  20546. * ENTRY (CPDA) = PP INPUT REGISTER ADDRESS.
  20547. *
  20548. * EXIT (A) = 0, IF *1LT* STILL AROUND.
  20549. *
  20550. * USES CM - CM+4.
  20551. *
  20552. * MACROS CHTE.
  20553.  
  20554.  
  20555. CPD SUBR ENTRY/EXIT
  20556. LDC * (ADDRESS OF *1LT* INPUT REGISTER)
  20557. CPDA EQU *-1
  20558. CRD CM
  20559. LDD CM+1
  20560. SCN 77
  20561. SHN 6
  20562. LMD CM
  20563. LMC 3RT1L
  20564. ZJN CPD1 IF *1LT*
  20565. SHN 14
  20566. LMN 1R1
  20567. NJN CPDX IF NOT *1LT* LOADING
  20568. CPD1 LDD CM+3 CHECK FOR CORRECT CHANNEL
  20569. CHTE *
  20570. LMN CH
  20571. LPN 77
  20572. UJN CPDX RETURN
  20573. CRA SPACE 4,10
  20574. ** CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
  20575. *
  20576. * EXIT (A) = REQUEST BYTE.
  20577. * (CM - CM+4) = REQUEST/RETURN WORD.
  20578.  
  20579.  
  20580. CRA SUBR ENTRY/EXIT
  20581. LDM CPDA
  20582. ADN 2
  20583. CRD CM
  20584. LDD CM
  20585. UJN CRAX RETURN
  20586. ITS SPACE 4,10
  20587. ** ITS - INDICATE *1MT* TRANSFER STARTED.
  20588. *
  20589. * ENTRY (A) = BYTE COUNT.
  20590. *
  20591. * EXIT (A) = BYTE COUNT.
  20592.  
  20593.  
  20594. ITS SUBR ENTRY/EXIT
  20595. STD T0 SAVE BYTE COUNT
  20596. LDM CPDA INDICATE *1MT* TRANSFER STARTED
  20597. ADN 3
  20598. CWD ON
  20599. LDD T0 RESTORE (A)
  20600. UJN ITSX RETURN
  20601. SPACE 4,10
  20602. .OPAA BSS 0 START OF WRITE ROUTINE OVERLAYS
  20603. OPE SPACE 4,10
  20604. ** OPE - OUTPUT ENDING DATA FROM CYBER 180 IOU.
  20605. *
  20606. * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
  20607. *
  20608. * EXIT (A) = BYTES LEFT.
  20609. *
  20610. * CALLS WTS.
  20611.  
  20612.  
  20613. OPE SUBR ENTRY/EXIT
  20614. OPEA UJN OPE2 OUTPUT DATA
  20615. * PSN (*1LT* USED)
  20616. RJM WTS WAIT FOR *1LT* TRANSFER TO START
  20617. OPE1 IJM OPEX,CH IF *1LT* WROTE PARTIAL BLOCK
  20618. SCF OPE1,CH WAIT FOR *1LT* TO CLEAR CHANNEL FLAG
  20619. OPE2 OAM BUFB,CH OUTPUT CHUNK
  20620. UJN OPEX RETURN
  20621.  
  20622.  
  20623. OPEB BSS 0
  20624. LOC OPEA
  20625. UJN OPE2 OUTPUT DATA
  20626. LOC *O
  20627. OPI SPACE 4,10
  20628. ** OPI - OUTPUT DATA FROM CYBER 180 IOU.
  20629. *
  20630. * IF THERE ARE MULTIPLE CHUNKS IN THE BLOCK, THIS ROUTINE
  20631. * IS USED FOR ALL BUT THE LAST CHUNK. *OPE* IS USED FOR THE
  20632. * LAST CHUNK.
  20633. *
  20634. * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
  20635. *
  20636. * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
  20637. *
  20638. * CALLS ITS, WTS.
  20639.  
  20640.  
  20641. OPI SUBR ENTRY/EXIT
  20642. OPIA UJN OPI2 FIRST CHUNK
  20643. * PSN (NOT FIRST CHUNK)
  20644. RJM WTS WAIT FOR *1LT* TRANSFER TO START
  20645. OPI1 IJM OPIX,CH IF *1LT* WROTE ONLY PARTIAL CHUNK
  20646. SCF OPI1,CH WAIT FOR *1LT* TO CLEAR CHANNEL FLAG
  20647. RJM ITS INDICATE *1MT* TRANSFER STARTED
  20648. OPI2 OAM BUFB,CH OUTPUT DATA
  20649. NJN OPIX IF INCOMPLETE TRANSFER
  20650. CCF *,CH SIGNAL *1LT* TO START OUTPUT
  20651. STM OPIA SET UP FOR SUBSEQUENT CHUNKS
  20652. UJN OPIX RETURN
  20653.  
  20654.  
  20655. OPIB BSS 0
  20656. LOC OPIA
  20657. UJN OPI2 OUTPUT NEXT BLOCK
  20658. LOC *O
  20659.  
  20660.  
  20661. .OPALC EQU *-.OPAA END OF OVERLAID AREA
  20662. RDA SPACE 4,15
  20663. ** RDA - READ DATA FROM CENTRAL.
  20664. *
  20665. * ENTRY (A) = WORDS TO READ.
  20666. * (T4 - T5) = OUT POINTER.
  20667. * (T6) = FIRST PART WORD COUNT.
  20668. * (T7) = SECOND PART WORD COUNT.
  20669. *
  20670. * EXIT (/WRITE/BYWR) = BY.
  20671. *
  20672. * CALLS ADP, /WRITE/CKS, ITM, SRQ.
  20673. *
  20674. * MACROS SADT.
  20675.  
  20676.  
  20677. RDA SUBR ENTRY/EXIT
  20678. RJM ADP ADVANCE POINTERS
  20679. LDD T6
  20680. ZJN RDAX IF NO FIRST PART
  20681. SHN 2
  20682. ADD T6
  20683. ADC BUFB
  20684. STM RDAA
  20685. LDD T4 READ FIRST PART
  20686. SHN 6
  20687. ADD RA
  20688. SHN 6
  20689. ADD T5
  20690. CRM BUFB,T6
  20691. LDD T7
  20692. ZJN RDA1 IF NO SECOND PART
  20693. SADT .FT,,,A
  20694. LDC * READ SECOND PART
  20695. CRM *,T7
  20696. RDAA EQU *-1
  20697. RDA1 LDC 0 SET BYTE COUNT FOR CHECKSUM
  20698. RDAB EQU *-1
  20699. ZJN RDA3 IF NOT FIRST CHUNK
  20700. RDAC UJN RDA2 CHECKSUM DATA
  20701. * RJM ITM (ATS GCR UNIT, 1X PPU SPEED OR 200 IPS)
  20702. * RJM ITM (CTS)
  20703. CON ITM
  20704. LDM ODAL
  20705. LPN 77
  20706. ZJN RDA2 IF *1LT* NOT NEEDED
  20707. LDN 1 SEND REQUEST TO *1LT*
  20708. RJM SRQ
  20709. RDA2 LDM UBWB USE HARDWARE CHECKSUM
  20710. STD LG+1
  20711. NJN RDA2.1 IF NON ZERO CHECKSUM
  20712. AOD LG+1
  20713. RDA2.1 LDN 0 CLEAR FIRST CHUNK FLAG
  20714. STM RDAB
  20715. RDA3 LDD BY
  20716. STM /WRITE/BYWR SET BYTES TO WRITE
  20717. LJM RDAX RETURN
  20718. SRQ SPACE 4,10
  20719. ** SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
  20720. *
  20721. * ENTRY (A) = REQUEST CODE.
  20722. * (T4 - T5) = POINTER.
  20723. * (BC) = BYTE COUNT OF LAST CHUNK.
  20724. * (NC) = NUMBER OF CHUNKS.
  20725. *
  20726. * USES T1, T2, T3, CM - CM+4.
  20727. *
  20728. * CALLS CPD, CRA, HNG.
  20729.  
  20730.  
  20731. SRQ SUBR ENTRY/EXIT
  20732. STD T1
  20733. SRQA UJN SRQ1 NO CHANNEL FLAG
  20734. * PSN (CYBER 180 IOU)
  20735. SCF *+2,CH SET CHANNEL FLAG
  20736. LDM CPDA INDICATE *1MT* TRANSFER STARTED
  20737. ADN 3
  20738. CWD ON
  20739. SRQ1 RJM CRA CHECK *1LT* ACCEPT
  20740. NJN SRQ2 IF *1LT* OUT OF SYNC
  20741. LDM CPDA CHECK *1LT* FUNCTION
  20742. ADN 1
  20743. CRD CM
  20744. LDD CM
  20745. LMN PRLM
  20746. ZJN SRQ3 IF *1LT* PAUSING
  20747. LDD BC SET BYTE COUNT
  20748. STD T2
  20749. LDD NC SET NUMBER OF CHUNKS
  20750. STD T3
  20751. LDM CPDA ENTER REQUEST
  20752. ADN 2
  20753. CWD T1
  20754. RJM CPD CHECK IF PP DROPPED OUT
  20755. NJN SRQ2 IF *1LT* MISSING
  20756. LJM SRQX RETURN
  20757.  
  20758. SRQ2 RJM HNG HANG PP
  20759.  
  20760. SRQ3 LJM RET2 REQUEUE REQUEST
  20761. WTS SPACE 4,10
  20762. ** WTS - WAIT FOR *1LT* TRANSFER TO START.
  20763. *
  20764. * ENTRY (A) = BYTE COUNT.
  20765. *
  20766. * EXIT (A) = BYTE COUNT.
  20767. *
  20768. * USES CM - CM+4.
  20769.  
  20770.  
  20771. WTS3 LDD T0 RESTORE (A)
  20772.  
  20773. WTS SUBR ENTRY/EXIT
  20774. STD T0 SAVE BYTE COUNT
  20775. WTS1 LDM CPDA CHECK *1MT*/*1LT* INTERLOCK
  20776. ADN 3
  20777. CRD CM
  20778. LDD CM
  20779. ZJN WTS3 IF *1LT* TRANSFER STARTED
  20780. LDN 24 DELAY 10 MICROSECONDS
  20781. WTS2 SBN 1
  20782. NJN WTS2 IF NOT DONE
  20783. UJN WTS1 CHECK INTERLOCK
  20784. SPACE 4,10
  20785. .WC CON 0 WORD COUNT OF LAST CHUNK
  20786. SPACE 4,10
  20787. BUFFER BUFB
  20788. CALL SPACE 4,10
  20789. .IM SET 0 DISABLE ADDRESS MODIFICATION ON ERRORS
  20790.  
  20791. ** *1LT* CALL BLOCK.
  20792. *
  20793. *T 18/ 1LT,6/ CP,6/ HP,6/ 1,1/ CF,11/ CHANNEL,12/ PPIA
  20794. *T, 12/ -0,24/ FIRST,24/ LIMIT
  20795.  
  20796.  
  20797. CALL VFD 18/3R1LT,6/0
  20798. CON 1 WRITE
  20799. CHTE *
  20800. CON CH CHANNEL
  20801. CON 0 *1MT* INPUT REGISTER ADDRESS
  20802. CON -0
  20803. SADT .FT,,,,SE
  20804. CON 0,0
  20805. SADT .LM,,,,SE
  20806. CON 0,0
  20807. TITLE PRESET.
  20808. PRS SPACE 4,10
  20809. ** PRS - PRESET.
  20810. *
  20811. * EXIT TO */WRITE/WTF1* TO WRITE BLOCK.
  20812. * TO */WRITE/WTF4* IF ERROR FROM *CNW*.
  20813. * TO *RET2* TO REQUEUE IF *1LT* NOT ASSIGNED.
  20814. *
  20815. * CALLS CEC, *CPP*, /WRITE/CNW, CPD, MCH, SRC.
  20816. *
  20817. * MACROS MONITOR, PAUSE.
  20818.  
  20819.  
  20820. PRS LDC PRSB MODIFY CHANNELS IN RESIDENT
  20821. RJM MCH
  20822. LDN 0
  20823. STD T3 CLEAR TAPE OUTPUT TYPE
  20824. LDK MABL CHECK MAINFRAME TYPE
  20825. CRD CM
  20826. LDD CM+1
  20827. SHN -6
  20828. LPN 41
  20829. LMN 1
  20830. ZJN PRS1 IF CYBER 180
  20831. AOD T3
  20832. LDD HP
  20833. LPN 60
  20834. SHN 6
  20835. RAM CALL+3
  20836. SHN 21-12
  20837. PJN PRS1 IF MTS CONTROLLER
  20838. AOD T3
  20839. PRS1 RJM SRC SET RESIDENT CONTROLLER ROUTINE
  20840. LDC LJMI SET CALL FOR CHECK NEXT WRITE
  20841. STM /WRITE/CNWA
  20842. LDC CNL
  20843. STM /WRITE/CNWA+1
  20844. LDD HP
  20845. SHN 21-7
  20846. PJN PRS1.2 IF NOT CTS
  20847. LDN .WCTL-1
  20848. STD T1 LENGTH OF CODE TO MOVE
  20849. PRS1.1 LDM .WCT,T1
  20850. STM /WRITE/WCT6,T1 MOVE COMMAND RETRY CODE
  20851. SOD T1
  20852. PJN PRS1.1 IF MORE CODE TO MOVE
  20853. ISTORE /WRITE/WCTA,(UJN /WRITE/WCT3)
  20854. ISTORE /WRITE/WCTF,(UJN /WRITE/WCT5)
  20855. ISTORE /WRITE/WCTJ,(UJN /WRITE/WCT10) SKIP READ CM BUFFER
  20856. UJN PRS1.3 CONTINUE PRESET
  20857.  
  20858. PRS1.2 LDM PRSC
  20859. STM /WRITE/WRTA
  20860. LDM PRSD
  20861. STM /WRITE/WRTE
  20862. LDM PRSE
  20863. STM /WRITE/WRTG
  20864. PRS1.3 LDM PRSF
  20865. STM /WRITE/WTFA
  20866. LDC UJNI+2
  20867. STM /WRITE/WTFD
  20868. LDC ODA
  20869. STM /WRITE/WTFC
  20870. LDM /WRITE/CNWB SET UBC
  20871. LPN 77
  20872. RAM CNLB
  20873. LDD MD
  20874. LPN 60
  20875. ZJN PRS2 IF NOT CONTROL WORD OPERATION
  20876. AOM ODAB
  20877. LDD MD
  20878. LPN 40
  20879. ZJN PRS3 IF NOT 204 WRITE
  20880. LDC LBBY SET BLOCK LENGTH
  20881. STM CNLC
  20882. AOM ODAM
  20883. UJN PRS4 CONTINUE PRESET
  20884.  
  20885. PRS2 LDC STDI+CM+4 MODIFY INSTRUCTIONS FOR NON-CONTROL WORD
  20886. STM CNLA
  20887. PRS3 LDC LDDI+CM+4
  20888. STM CNLD
  20889. PRS4 LDC PRSA SET FOR INSTRUCTION MODIFICATION
  20890. STD CN
  20891. LDC PRS5 SET TO RETURN CONTROL HERE AFTER LOAD
  20892. STD BT
  20893. LJM PRSX RETURN
  20894.  
  20895. * RETURN HERE AFTER ALL ROUTINES LOADED.
  20896. * BUILD CALL TO *1LT*.
  20897.  
  20898. PRS5 LDD HP
  20899. SHN 21-7
  20900. PJN PRS5.1 IF NOT CTS
  20901. ISTORE /WRITE/WTFF,(ZJN /WRITE/WTF1)
  20902. LDD CN+3
  20903. STM /WRITE/OPTU SAVE OUT POINTER FOR COMMAND RETRY
  20904. LDD CN+4
  20905. STM /WRITE/OPTL
  20906. PRS5.1 RJM /WRITE/CNW CHECK FIRST WRITE
  20907. ZJN PRS6 IF WRITE OK
  20908. LJM /WRITE/WTF4 PROCESS ERROR CONDITION
  20909.  
  20910. PRS6 LDD CP MERGE CP NUMBER
  20911. SHN -7
  20912. RAM CALL+1
  20913. LDD HP
  20914. LPC 7700 ALLOW *1LT* TO TEST FOR CTS
  20915. RAM CALL+2
  20916. LDD IA SET INPUT REGISTER ADDRESS IN CALL
  20917. STM CALL+4
  20918. LDN CMCL CHECK MOVE FLAG
  20919. CRD CM
  20920. LDD CM
  20921. SHN 7
  20922. LMD CP
  20923. ZJN PRS7 IF MOVE FLAG
  20924. LDD MA WRITE REQUEST BLOCK
  20925. CWM CALL,TR
  20926. LDN 1 SET TO NOT QUEUE REQUEST
  20927. STD CM+1
  20928. MONITOR RPPM REQUEST PP
  20929. LDD CM+1
  20930. NJN PRS8 IF PP ASSIGNED
  20931. PRS7 LJM RET2 REQUEUE
  20932.  
  20933. PRS8 STM CPDA SAVE PP INPUT REGISTER ADDRESS
  20934. PRS9 LDN 77 DELAY
  20935. SBN 1
  20936. NJN *-1
  20937. LDD MA CHECK FOR *1LT* ACKNOWLEDGE
  20938. ADN 1
  20939. CRD CM
  20940. LDD CM
  20941. ZJN PRS11 IF *1LT* READY
  20942. RJM CPD CHECK FOR *1LT* DROP
  20943. NJN PRS7 IF *1LT* GONE
  20944. LDN CMCL CHECK MOVE FLAG
  20945. CRD CM
  20946. LDD CM
  20947. SHN 7
  20948. LMD CP
  20949. NJN PRS9 IF NO MOVE FLAG FOR THIS CP
  20950. RJM CEC CHANGE BACK TO MAGNET CP
  20951. PRS10 RJM CPD CHECK PP DROP
  20952. NJN PRS7 IF *1LT* GONE
  20953. PAUSE NE
  20954. UJN PRS10 LOOP
  20955.  
  20956. PRS11 LDC /SRU/ITWL*100 SET SRU INCREMENT
  20957. STM //CECA
  20958. LDC 4000 SET BLOCKS WRITTEN FLAG
  20959. STD BT
  20960. LDD HP
  20961. SHN 21-7
  20962. MJN PRS12 IF CTS
  20963. SHN 21-4-21+7
  20964. PJN PRS13 IF NOT ATS UNIT
  20965.  
  20966. * CHECK IF MOTION AHEAD ALLOWED. MOTION AHEAD IS NOT ALLOWED
  20967. * ON ANY GCR UNIT AT 1X PPU SPEED OR ON A 200 IPS GCR UNIT.
  20968.  
  20969. SHN 21-1-21+4
  20970. PJN PRS13 IF UNIT NOT CAPABLE OF 6250 BPI
  20971. LDM DLYA
  20972. LPN 14
  20973. ZJN PRS12 IF 1X PPU SPEED
  20974. LDD HP
  20975. LPN 10
  20976. LMN 10
  20977. NJN PRS13 IF NOT 200 IPS UNIT
  20978. PRS12 LDC UJNI+2 DISABLE MOTION AHEAD
  20979. STM ODAA-1
  20980. LDC RJMI
  20981. STM RDAC
  20982. LDC UJNI+ODA3-ODAG
  20983. STM ODAG
  20984. PRS13 LJM /WRITE/WTF1 ENTER WRITE CODE
  20985.  
  20986. PRSA TSAD SLBP
  20987. PRSB CHTB
  20988. PRSC BSS 0
  20989. LOC /WRITE/WRTA
  20990. UJN /WRITE/WRT2 SET UP FOR LONG BLOCK WRITE
  20991. LOC *O
  20992.  
  20993. PRSD BSS 0
  20994. LOC /WRITE/WRTE
  20995. UJN /WRITE/WRT3.1 LONG BLOCKS
  20996. LOC *O
  20997.  
  20998. PRSE BSS 0
  20999. LOC /WRITE/WRTG
  21000. UJN /WRITE/WRT5 LONG BLOCKS
  21001. LOC *O
  21002.  
  21003. PRSF BSS 0
  21004. LOC /WRITE/WTFA
  21005. UJN /WRITE/WTF1 LONG BLOCKS
  21006. LOC *O
  21007. TITLE PRESET SUBROUTINES.
  21008. SRC SPACE 4,15
  21009. ** SRC - SET RESIDENT CONTROLLER ROUTINE.
  21010. *
  21011. * ENTRY (T3) = CONTROLLER/PP TYPE.
  21012. * 0 = CYBER 180 IOU.
  21013. * 1 = MTS CONTROLLER (NON-CYBER 180).
  21014. * 2 = ATS CONTROLLER (NON-CYBER 180).
  21015. *
  21016. * EXIT TAPE OUTPUT ROUTINE PRESET.
  21017. *
  21018. * USES T1, T2.
  21019. *
  21020. * CALLS MCH.
  21021.  
  21022.  
  21023. SRC SUBR ENTRY/EXIT
  21024. LDM SRCB,T3 ADDRESS OF OUTPUT ROUTINE
  21025. ZJN SRC2 IF RESIDENT ROUTINE USED
  21026. STM SRCA
  21027. LDN .OPALC-1 BYTES TO COPY
  21028. STD T1
  21029. SRC1 LDM **,T1
  21030. SRCA EQU *-1
  21031. STM .OPAA,T1 COPY OVER RESIDENT TAPE IO ROUTINE
  21032. SOD T1
  21033. PJN SRC1 IF COPY NOT COMPLETE
  21034. LDM SRCC,T3 ADDRESS OF CHANNEL TABLE
  21035. RJM MCH UPDATE CHANNELS
  21036. SRC2 LDM SRCD,T3 ADDRESS OF ADDRESSES TO MODIFY
  21037. STD T2
  21038. SRC3 LDI T2 ADDRESS TO CHANGE
  21039. STD T1
  21040. ZJN SRCX IF END OF TABLE ENCOUNTERED
  21041. AOD T2
  21042. LDI T2
  21043. STI T1 CHANGE CONTENTS OF ADDRESS
  21044. AOD T2
  21045. UJN SRC3 CONTINUE MODIFYING ADDRESSES
  21046.  
  21047. * ADDRESS OF OUTPUT ROUTINES.
  21048.  
  21049. SRCB CON 0 CYBER 180 IOU
  21050. CON .OPD MTS (NON-CYBER 180)
  21051. CON .OPA ATS (NON-CYBER 180)
  21052.  
  21053. * ADDRESSES OF CHANNEL TABLES.
  21054.  
  21055. SRCC CON 0 CYBER 180 IOU
  21056. CON .OPDA MTS (NON-CYBER 180)
  21057. CON .OPAC ATS (NON-CYBER 180)
  21058.  
  21059. * ADDRESSES OF ADDRESS MODIFICATION TABLES.
  21060.  
  21061. SRCD CON SRCE CYBER 180 IOU
  21062. CON SRCG MTS (NON-CYBER 180)
  21063. CON SRCF ATS (NON-CYBER 180)
  21064.  
  21065.  
  21066. ** ADDRESS MODIFICATION TABLES.
  21067.  
  21068. SRCE CON ODAJ,OPI CYBER 180 IOU
  21069. CON ODAK,OPE
  21070. CON SRQA,PSNI
  21071. CON ODAD,OPIA
  21072. CON ODAC,OPIB
  21073. CON ODAH,OPEB
  21074. CON ODAI,OPEA
  21075. CON ODAF,OPEA
  21076. CON 0
  21077.  
  21078. SRCF CON ODAJ,OPA ATS (NON-CYBER 180)
  21079. CON ODAK,OPL
  21080. CON 0
  21081.  
  21082. SRCG CON ODAF,ODAF MTS (NON-CYBER 180)
  21083. CON ODAD,OPDA
  21084. CON 0
  21085. OPA SPACE 4,10
  21086. .OPA BSS 0 ATS OUTPUT ROUTINES (NON-CYBER 180)
  21087. LOC .OPAA
  21088. OPA SPACE 4,10
  21089. ** OPA - OUTPUT DATA TO ATS UNIT (NON-CYBER 180).
  21090. *
  21091. * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
  21092. * (OPAA) = 0 IF NOT FIRST CHUNK.
  21093. *
  21094. * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
  21095.  
  21096.  
  21097. OPA SUBR ENTRY/EXIT
  21098. OPAA UJN OPA1 FIRST CHUNK
  21099. * PSN (NOT FIRST CHUNK)
  21100. AJM *,CH WAIT FOR *1LT* TO OUTPUT CHUNK
  21101. PSN DELAY TO ALLOW *1LT* TO REACTIVATE CHANNEL
  21102. PSN
  21103. OPA1 OAM BUFB,CH OUTPUT DATA
  21104. FJM *,CH
  21105. DCN CH+40 INDICATE TO *1LT* TO RESUME OUTPUT
  21106. NJN OPAX IF INCOMPLETE TRANSFER
  21107. ACN CH
  21108. STM OPAA CLEAR FIRST CHUNK FLAG
  21109. UJN OPAX RETURN
  21110.  
  21111.  
  21112. OPAB BSS 0
  21113. LOC OPAA
  21114. UJN OPA1 OUTPUT DATA
  21115. LOC OPAB+1
  21116. OPL SPACE 4,10
  21117. ** OPL - OUTPUT LAST PARTIAL CHUNK TO ATS UNIT (NON-CYBER 180).
  21118. *
  21119. * ENTRY (A) = NUMBER OF BYTES TO TRANSFER.
  21120. *
  21121. * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
  21122. * CHANNEL FULL STATUS NOT CHECKED.
  21123.  
  21124.  
  21125. OPL SUBR ENTRY/EXIT
  21126. OPLA PSN WAIT FOR *1LT*
  21127. * UJN OPL1 (*1LT* NOT NEEDED)
  21128. AJM *,CH WAIT FOR *1LT* TO OUTPUT CHUNK
  21129. PSN DELAY TO ALLOW *1LT* TO REACTIVATE CHANNEL
  21130. PSN
  21131. OPL1 OAM BUFB,CH OUTPUT PARTIAL CHUNK
  21132. UJN OPLX RETURN
  21133.  
  21134.  
  21135. OPLB BSS 0
  21136. LOC OPLA
  21137. UJN OPL1 OUTPUT DATA
  21138.  
  21139.  
  21140. LOC *O
  21141. .OPAL EQU *-.OPA
  21142.  
  21143. ERRNG .OPALC-.OPAL ATS WRITE ROUTINE OVERFLOW
  21144.  
  21145. .OPAC CHTB TABLE OF CHANNELS FOR ATS CODE
  21146. SPACE 4,10
  21147. .OPD BSS 0 MTS OUTPUT ROUTINE (NON-CYBER 180)
  21148. LOC .OPAA
  21149. OPD SPACE 4,10
  21150. ** OPD - OUTPUT DATA TO MTS UNIT (NON-CYBER 180).
  21151. *
  21152. * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
  21153. *
  21154. * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
  21155.  
  21156.  
  21157. OPD2 FJM OPD1,CH IF *1LT* OUTPUTTING DATA
  21158. FJM OPD1,CH IF *1LT* OUTPUTTING DATA
  21159. FJM OPD1,CH IF *1LT* OUTPUTTING DATA
  21160. OAM BUFB,CH OUTPUT DATA
  21161.  
  21162. OPD SUBR ENTRY/EXIT
  21163. OPD1 FJM OPD1,CH IF *1LT* OUTPUTTING DATA
  21164. FJM OPD1,CH IF *1LT* OUTPUTTING DATA
  21165. UJN OPD2 CONTINUE CHECK FOR *1LT* OUTPUT
  21166.  
  21167.  
  21168. OPDA BSS 1 SCRATCH STORAGE
  21169.  
  21170.  
  21171. LOC *O
  21172. .OPDL EQU *-.OPD
  21173.  
  21174. ERRNG .OPALC-.OPDL MTS WRITE ROUTINE OVERFLOW
  21175.  
  21176. .OPDA CHTB TABLE OF CHANNELS FOR MTS CODE
  21177. SPACE 4,10
  21178. .WCT BSS 0
  21179. LOC /WRITE/WCT6
  21180. LDN F0002 CONTINUE FUNCTION
  21181. STM ITMA
  21182. LJM /WLB/ODAB GO RETRY THE COMMAND
  21183.  
  21184. ERRMI /WRITE/WCT8-* IF CODE OVERFLOWS
  21185.  
  21186. LOC *O
  21187. .WCTL EQU *-.WCT LENGTH OF CODE TO MOVE
  21188. OVERLAY (WRITE LI FORMAT.),,,WLI
  21189. .IM SET 0 GENERATE ADDRESSES FOR OVERLAY
  21190. NC EQU PA NUMBER OF CHUNKS
  21191. BC EQU PB BYTE COUNT LAST CHUNK
  21192. WLI SPACE 4,15
  21193. ** WLI - WRITE LI FORMAT.
  21194. * THIS OVERLAY DOES ALL LI FORMAT WRITES.
  21195. *
  21196. * ENTRY AT *WLI* FROM *PRS* TO WRITE FIRST BLOCK.
  21197. * AT *WLI1* FROM *PRS* IF NO BLOCK TO WRITE.
  21198. *
  21199. * EXIT TO *RET* IF COMPLETE.
  21200. * TO *RET2* TO REQUEUE REQUEST.
  21201. * TO *RET3* TO REPORT AN ERROR.
  21202. * TO *EOF* TO WRITE EOF.
  21203. *
  21204. * CALLS ODA, WRT.
  21205.  
  21206.  
  21207. WLI RJM ODA OUTPUT DATA
  21208. RJM WRT CHECK FOR END OF OPERATION
  21209. LDC *
  21210. WLIA EQU *-1
  21211. NJN WLI1 IF EXIT CONDITIONS
  21212. LDD DF
  21213. ZJN WLI IF NO DROP OUT
  21214. WLIB EQU *-1
  21215. * PSN (PRU WRITE 004)
  21216. LJM RET2 REQUEUE
  21217. WLIC EQU *-1
  21218. * LJM WLI3 (PRU WRITE 004)
  21219.  
  21220. WLI1 SBN 10
  21221. MJN WLI3 IF NO ERROR
  21222. ZJN WLI2 IF BUFFER TOO LONG ERROR
  21223. LDN /MTX/BAE&/MTX/BCW BUFFER ARGUMENT ERROR
  21224. WLI2 LMN /MTX/BCW BLOCK TOO LONG ERROR
  21225. LJM RET3 RETURN ERROR CODE
  21226.  
  21227. WLI3 LDN 1
  21228. LJM RET SET FET COMPLETE
  21229. WLID EQU *-1
  21230. * LJM EOF (LI FORMAT EOF REQUIRED)
  21231. ADP SPACE 4,15
  21232. ** ADP - ADVANCE POINTER.
  21233. *
  21234. * ENTRY (CN+3 - CN+4) = OUT POINTER.
  21235. * (A) = WORDS TO INCREMENT OUT BY.
  21236. *
  21237. * EXIT (T4 - T5) = STARTING OUT POINTER.
  21238. * (CN+3 - CN+4) = UPDATED OUT POINTER.
  21239. * (T6) = FIRST PART WORD COUNT.
  21240. * (T7) = SECOND PART WORD COUNT.
  21241. *
  21242. * MACROS SADT.
  21243.  
  21244.  
  21245. ADP SUBR ENTRY/EXIT
  21246. STD T6
  21247. LDD CN+3 SAVE OUT
  21248. STD T4
  21249. LDD CN+4
  21250. STD T5
  21251. LDN 0 PRESET SECOND PART WORD COUNT
  21252. STD T7
  21253. LDD T6 UPDATE OUT
  21254. RAD CN+4
  21255. SHN -14
  21256. RAD CN+3
  21257. SHN 14
  21258. LMD CN+4
  21259. SADT .LM,C
  21260. ADC -* (-LIMIT)
  21261. MJN ADPX IF NO WRAP AROUND
  21262. STD T7 SET SECOND PART WORD COUNT
  21263. SADT .FT
  21264. ADC * (FIRST)
  21265. STD CN+4
  21266. SHN -14
  21267. STD CN+3
  21268. LDD T6 RESET FIRST PART WORD COUNT
  21269. SBD T7
  21270. STD T6
  21271. UJN ADPX RETURN
  21272. CNW SPACE 4,25
  21273. ** CNW - CHECK NEXT WRITE.
  21274. * THIS ROUTINE DETERMINES IF THERE IS DATA TO WRITE. IF SO,
  21275. * THE NUMBER OF CHUNKS AND BLOCKS IS DETERMINED AND THE BLOCK
  21276. * PREFIX IS BUILT. IF (014, 204, 264) WRITE, ONE BLOCK IS
  21277. * PRESENT, BUT NOT 2 BLOCKS, THEN A *DRCM* MONITOR FUNCTION
  21278. * IS ISSUED TO GET THE CPU TO PUT MORE DATA IN THE BUFFER.
  21279. *
  21280. * ENTRY (CN+3 - CN+4) = OUT POINTER.
  21281. *
  21282. * EXIT (A) = (WLIA) = 0, NEXT WRITE OKAY.
  21283. * 2, NOT ENOUGH DATA.
  21284. * 10, BLOCK TOO LONG ERROR.
  21285. * 11, BUFFER ARGUMENT ERROR.
  21286. * (NC) = FULL CHUNKS TO WRITE.
  21287. * (BC) = BYTES IN REMAINDER TO WRITE.
  21288. * (.WC) = WORDS IN REMAINDER TO WRITE.
  21289. *
  21290. * USES T1, T2, T6, T7, CM - CM+4.
  21291. *
  21292. * CALLS CDO, COB, SLN.
  21293. *
  21294. * MACROS SADT.
  21295.  
  21296.  
  21297. CNW14 LDN 2 SET NOT ENOUGH DATA
  21298. CNW15 STM WLIA
  21299.  
  21300. CNW SUBR ENTRY/EXIT
  21301. RJM CDO CHECK DROP OUT FLAG
  21302. LDN F0050
  21303. STM ITMA WRITE FUNCTION
  21304. LDN 1 WORD COUNT = 10000
  21305. CNWA EQU *-1
  21306. * LDN 0 (204 WRITE)
  21307. STD CM+3
  21308. LDN 0
  21309. CNWB EQU *-1
  21310. * LDN 2 (204 WRITE)
  21311. STD CM+4
  21312. RJM COB CHECK OUTPUT BUFFER
  21313. STD T1
  21314. SHN 6
  21315. SBD CM+3
  21316. SHN 14
  21317. SBD CM+4
  21318. PJN CNW1 IF ENOUGH DATA
  21319. LDD T1
  21320. CNWC EQU *-1
  21321. * UJN CNW14 (204 WRITE)
  21322. STD CM+4
  21323. SOD CM+3 USE WORD COUNT IN BUFFER
  21324. LDD MD
  21325. SHN 21-3
  21326. PJN CNW14 IF NOT EOR/EOF WRITE
  21327. SHN 21-10-21+3+22
  21328. MJN CNW14 IF EOR/EOF WRITTEN THIS OPERATION
  21329. CNW1 UJN CNW2
  21330. CNWD EQU *-1
  21331. * LDD CN+3 (204 WRITE)
  21332. SHN 6
  21333. ADD RA
  21334. SHN 6
  21335. ADD CN+4
  21336. CRD CM READ CONTROL WORD
  21337. CNW2 LDC /MTX/LBWD WORDS PER CHUNK
  21338. CNWE EQU *-1
  21339. * LDC LBBY BYTES PER CHUNK (204 WRITE)
  21340. STD T1
  21341. LDN 0
  21342. STD NC
  21343.  
  21344. * DETERMINE NUMBER OF CHUNKS AND REMAINDER.
  21345.  
  21346. CNW3 LDD CM+4
  21347. SBD T1
  21348. STD CM+4
  21349. PJN CNW4 IF NO UNDERFLOW
  21350. AOD CM+4
  21351. SOD CM+3
  21352. MJN CNW5 IF UNDERFLOW
  21353. CNW4 AOD NC COUNT CHUNK
  21354. UJN CNW3 LOOP
  21355.  
  21356. CNW5 LDD T1
  21357. RAD CM+4
  21358. STD BC
  21359. STM .WC
  21360. LDD CM+4
  21361. CNWF EQU *-1
  21362. * UJN CNW6 (204 WRITE)
  21363. SHN 2
  21364. RAD BC BYTES = 5 * CM WORDS
  21365. UJN CNW7 CHECK IF LEGAL BLOCK SIZE
  21366.  
  21367. CNW6 LDD CM+4 ROUND UP BYTES
  21368. ADN 4
  21369. STD T2
  21370. SHN 1 13*BYTES
  21371. ADD T2
  21372. SHN 2
  21373. ADD T2
  21374. SHN 14 (-6) (13*BYTES)/64
  21375. STD T0
  21376. SHN 6+2 4*13*BYTES (52*BYTES)
  21377. SBD T2 51*BYTES
  21378. ADD T0 (51*BYTES)+((13*BYTES)/64)
  21379. SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
  21380. STM .WC SAVE REMAINDER (IN CM WORDS)
  21381.  
  21382. * CHECK IF LEGAL BLOCK SIZE.
  21383.  
  21384. CNW7 LDD NC
  21385. STD T1
  21386. LDM .WC
  21387. STD T7
  21388. LDN 0
  21389. STD T6
  21390. CNW8 SOD T1
  21391. MJN CNW9 IF END OF CHUNKS
  21392. LDC /MTX/LBWD
  21393. RAD T7
  21394. SHN -14 T6,T7 IS BLOCK LENGTH IN CM WORDS
  21395. RAD T6
  21396. UJN CNW8 LOOP
  21397.  
  21398. CNW9 LDD T6
  21399. SHN 14
  21400. LMD T7
  21401. SADT .BS,C,1
  21402. ADC -*
  21403. MJN CNW10 IF BLOCK NOT TOO LARGE
  21404. LDN 10 SET BLOCK TOO LONG ERROR
  21405. UJP CNW15 EXIT WITH NEXT WRITE STATUS
  21406.  
  21407. * PUT BYTE COUNT AND BLOCK NUMBER IN BLOCK PREFIX.
  21408.  
  21409. CNW10 LDD T6 T6,T7 IS CM WORD COUNT
  21410. SHN 2
  21411. ADD T6
  21412. STD T2
  21413. LDD T7
  21414. SHN 2
  21415. ADD T7
  21416. ADN 5 INCLUDE LENGTH OF PREFIX
  21417. STM BUFB-4 LOWER 12 BITS OF BYTE COUNT
  21418. SHN -14
  21419. ADD T2
  21420. STM BUFB-5 UPPER BITS OF BYTE COUNT
  21421. LDD BL
  21422. STM BUFB-3
  21423. LDD BL+1
  21424. STM BUFB-2 SET BLOCK NUMBER
  21425.  
  21426. * CHECK IF ENOUGH DATA IN OUTPUT BUFFER.
  21427.  
  21428. LDD MD
  21429. LPN 40
  21430. SHN -4
  21431. RAD T7 ALLOW FOR CONTROL WORD
  21432. SHN -14
  21433. RAD T6
  21434. RJM COB CHECK OUTPUT BUFFER
  21435. SHN 6
  21436. SBD T6
  21437. SHN 14
  21438. SBD T7
  21439. MJN CNW13 IF NOT ENOUGH DATA IN OUTPUT BUFFER
  21440.  
  21441. * IF ONE BLOCK IS PRESENT, BUT NO SECOND BLOCK, ISSUE *DRCM*.
  21442.  
  21443. SHN 6
  21444. SBD T6
  21445. SHN 14
  21446. SBD T7
  21447. PJN CNW11 IF SECOND BLOCK IN CM
  21448. CNWG EQU *-1
  21449. * UJN CNW11 (NOT 014, 204, OR 264 WRITE)
  21450. LDM CNW
  21451. ADC -PRS
  21452. PJN CNW11 IF CALLED FROM PRESET
  21453. LDD OA
  21454. CWM CNWH,ON
  21455. CNW11 RJM SLN SAVE LEVEL NUMBER
  21456. LDN 0
  21457. CNW12 LJM CNW15 RETURN
  21458.  
  21459. CNW13 LJM CNW14 SET NOT ENOUGH DATA
  21460.  
  21461.  
  21462. CNWH CON DRCM DRIVER RECALL CPU MONITOR FUNCTION
  21463. COB SPACE 4,10
  21464. ** COB - CHECK OUTPUT BUFFER.
  21465. *
  21466. * ENTRY (CN+3,CN+4) = OUT POINTER.
  21467. *
  21468. * EXIT (A) = WORD COUNT.
  21469. * TO LOCATION *CNW12*, IF BUFFER ARGUMENT ERROR.
  21470. *
  21471. * USES T1 - T5.
  21472. *
  21473. * MACROS SADT.
  21474.  
  21475.  
  21476. COB2 LDD T1+3 LENGTH = IN - OUT
  21477. SBD CN+3
  21478. SHN 14
  21479. ADD T1+4
  21480. SBD CN+4
  21481. PJN COBX IF IN .GE. OUT
  21482. SADT .LF
  21483. ADC * (LIMIT - FIRST)
  21484. MJN COB1 IF BUFFER ARGUMENT ERROR
  21485.  
  21486. COB SUBR ENTRY/EXIT
  21487. SADT .FE,,2,A
  21488. LDC * READ IN
  21489. CRD T1
  21490. LDD T1+3
  21491. LPN 37
  21492. STD T1+3
  21493. SHN 14
  21494. LMD T1+4
  21495. SADT .LM,C
  21496. ADC -*
  21497. MJN COB2 IF IN .LT. LIMIT
  21498. COB1 LDN 11 SET BUFFER ARGUMENT ERROR
  21499. UJN CNW12 SET EXIT CONDITION
  21500. CPD SPACE 4,10
  21501. ** CPD - CHECK PP (1LT) DROP OUT.
  21502. *
  21503. * ENTRY (CPDA) = PP INPUT REGISTER ADDRESS.
  21504. *
  21505. * EXIT (A) = 0, IF *1LT* STILL AROUND.
  21506. *
  21507. * USES CM - CM+4.
  21508. *
  21509. * MACROS CHTE.
  21510.  
  21511.  
  21512. CPD SUBR ENTRY/EXIT
  21513. LDC *
  21514. CPDA EQU *-1
  21515. CRD CM
  21516. LDD CM+1
  21517. SCN 77
  21518. SHN 6
  21519. LMD CM
  21520. LMC 3RT1L
  21521. ZJN CPD1 IF *1LT*
  21522. SHN 14
  21523. LMN 1R1
  21524. NJN CPDX IF NOT *1LT* LOADING
  21525. CPD1 LDD CM+3
  21526. CHTE *
  21527. LMN CH
  21528. LPN 77
  21529. UJN CPDX RETURN
  21530. CRA SPACE 4,10
  21531. ** CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
  21532. *
  21533. * EXIT (A) = REQUEST BYTE.
  21534. * (CM - CM+4) = REQUEST/RETURN WORD.
  21535.  
  21536.  
  21537. CRA SUBR ENTRY/EXIT
  21538. LDM CPDA
  21539. ADN 2
  21540. CRD CM
  21541. LDD CM
  21542. UJN CRAX RETURN
  21543. EOF SPACE 4,10
  21544. ** EOF - WRITE LI FORMAT EOF.
  21545. *
  21546. * EXIT TO *RET* WITH (A) = 1 TO SET FET COMPLETE.
  21547. *
  21548. * CALLS ITM, WRT.
  21549.  
  21550.  
  21551. EOF BSS 0 ENTRY
  21552. RJM ITM INITIATE TAPE MOTION
  21553. LDN 17
  21554. STM BUFB-1 LEVEL NUMBER
  21555. LDD BL
  21556. STM BUFB-3 BLOCK NUMBER
  21557. LDD BL+1
  21558. STM BUFB-2
  21559. LDN 0
  21560. STM BUFB-5 BYTE COUNT UPPER
  21561. LDN 5
  21562. STM BUFB-4 BYTE COUNT LOWER
  21563. LDN 6
  21564. OAM BUFB-5,CH
  21565. FJM *,CH
  21566. STM /WRITE/BYRM BYTES NOT WRITTEN
  21567.  
  21568. * DELAY 10 MICROSECONDS TO PREVENT A HARDWARE ERROR IN THE
  21569. * CCC. THE DISCONNECT WOULD SOMETIMES CAUSE THE LAST BYTE TO
  21570. * BE LOST.
  21571.  
  21572. LDN 20
  21573. SBN 1
  21574. NJN *-1
  21575. DCN CH+40
  21576. RJM WRT PROCESS WRITE
  21577. EOFA EQU * (USED TO TELL WHERE *WRT* CALLED FROM)
  21578. LCN 14 CLEAR EOF INDICATOR
  21579. RAD MD
  21580. LDN 1
  21581. LJM RET SET FET COMPLETE
  21582. ITS SPACE 4,10
  21583. ** ITS - INDICATE *1MT* TRANSFER STARTED.
  21584. *
  21585. * ENTRY (A) = BYTE COUNT.
  21586. *
  21587. * EXIT (A) = BYTE COUNT.
  21588.  
  21589.  
  21590. ITS SUBR ENTRY/EXIT
  21591. STD T0 SAVE BYTE COUNT
  21592. LDM CPDA INDICATE *1MT* TRANSFER STARTED
  21593. ADN 3
  21594. CWD ON
  21595. LDD T0 RESTORE (A)
  21596. UJN ITSX RETURN
  21597. ODA SPACE 4,10
  21598. ** ODA - OUTPUT DATA.
  21599. * THIS ROUTINE WRITES THE 1ST, 3RD, ... CHUNKS OF THE BLOCK
  21600. * TO TAPE.
  21601. *
  21602. * ENTRY (NC) = FULL CHUNKS.
  21603. * (BC) = BYTE COUNT IN REMAINDER.
  21604. * (.WC) = WORD COUNT IN REMAINDER.
  21605. *
  21606. * USES CM, CM+7, BY.
  21607. *
  21608. * CALLS ADP, CRA, OPA, OPE, OPI, OPL, RDA.
  21609.  
  21610.  
  21611. ODA SUBR ENTRY/EXIT
  21612. LDN 0 ALLOW FOR CONTROL WORD
  21613. ODAA EQU *-1
  21614. * LDN 1 (204 WRITE)
  21615. RJM ADP
  21616. LDN 0 PRESET CHUNKS OUTPUT COUNT
  21617. STD CM+7
  21618. LDC LBBY
  21619. STD BY
  21620. STM RDAB SET FIRST CHUNK FLAG
  21621. LDD NC
  21622. ZJN ODA3 IF *1LT* NOT NEEDED
  21623. SBN 2
  21624. PJN ODA1 IF *1LT* NEEDED
  21625. LDD BC
  21626. ZJN ODA2 IF *1LT* NOT NEEDED
  21627. ODA1 AOM ODAD SET *1LT* CALLED FLAG
  21628. UJN ODA6 OUTPUT DATA
  21629.  
  21630. ODA2 LDC LBBY
  21631. STD BC
  21632. LDC /MTX/LBWD
  21633. STM .WC
  21634. ODA3 LDD BC
  21635. STD BY
  21636. LJM ODA9 SET UP TO READ NEXT CHUNK
  21637.  
  21638. ODA4 STM RDAB INDICATE NOT FIRST CHUNK
  21639. STM /WRITE/BYRM BYTES NOT TRANSFERRED
  21640. LDN 2 INCREMENT CHUNK COUNT
  21641. RAD CM+7
  21642. SBD NC
  21643. PJN ODA7 IF NO MORE FULL CHUNKS
  21644. ADN 1
  21645. NJN ODA5 IF NOT 1 CHUNK LEFT
  21646. LDD BC
  21647. ZJN ODA7 IF ZERO REMAINDER
  21648. ODA5 LDC /MTX/LBWD SKIP OVER DATA *1LT* OUTPUT
  21649. RJM ADP
  21650. ODA6 LDC /MTX/LBWD SET UP TO READ NEXT DATA CHUNK
  21651. RJM RDA READ DATA
  21652. RJM OPI OUTPUT DATA
  21653. ODAB EQU *-1
  21654. * RJM OPA (NOT USING CHANNEL FLAG)
  21655. ZJN ODA4 IF FULL BLOCK OUTPUT
  21656. UJN ODA12 STORE BYTES NOT WRITTEN
  21657.  
  21658. ODA7 ZJN ODA8 IF TRANSFER NOT COMPLETE FOR *1MT*
  21659. LDM .WC ADVANCE POINTER OVER *1LT,S* CHUNK
  21660. RJM ADP
  21661. UJN ODA13 CHECK IF *1LT* WAS CALLED
  21662.  
  21663. ODA8 LDC /MTX/LBWD SKIP OVER DATA *1LT* OUTPUT
  21664. RJM ADP
  21665. LDD BC
  21666. ZJN ODA10 IF POSSIBLE OUTPUT COMPLETE
  21667. STD BY
  21668. ODA9 LDM .WC SET UP TO READ NEXT CHUNK
  21669. UJN ODA11 READ DATA
  21670.  
  21671. ODA10 LDD NC
  21672. LPN 1
  21673. ZJN ODA13 IF OUTPUT COMPLETE
  21674. LDC /MTX/LBWD
  21675. ODA11 RJM RDA READ DATA FROM CENTRAL
  21676. RJM OPE OUTPUT DATA
  21677. ODAC EQU *-1
  21678. * RJM OPL (NOT USING CHANNEL FLAG)
  21679. FJM *,CH
  21680. ODA12 STM /WRITE/BYRM SAVE BYTES NOT TRANSFERRED
  21681.  
  21682. * DELAY 10 MICROSECONDS TO PREVENT A HARDWARE ERROR IN THE
  21683. * CCC. THE DISCONNECT WOULD SOMETIMES CAUSE THE LAST BYTE TO
  21684. * BE LOST.
  21685.  
  21686. LDN 20
  21687. SBN 1
  21688. NJN *-1
  21689. DCN CH+40
  21690. ODA13 LDN 0
  21691. ODAD EQU *-1
  21692. ZJN ODA15 IF *1LT* NOT CALLED
  21693. SOM ODAD CLEAR *1LT* CALLED FLAG
  21694. ODA14 RJM CRA CHECK REQUEST ACCEPTANCE FROM *1LT*
  21695. LMN 2
  21696. NJN ODA14 IF NOT ACCEPT
  21697. STD CM ACKNOWLEDGE *1LT*
  21698. LDM CPDA
  21699. ADN 2
  21700. CWD CM
  21701. ODA15 LDN 0 SKIP TRAILER CONTROL WORD IF PRESENT
  21702. ODAE EQU *-1
  21703. * LDN 1 (204 WRITE)
  21704. RJM ADP
  21705. LJM ODAX RETURN
  21706. OPE SPACE 4,10
  21707. .OPE BSS 0 START OF OVERLAYED ATS WRITE ROUTINES
  21708. OPE SPACE 4,10
  21709. ** OPE - OUTPUT ENDING DATA FROM CYBER 180 IOU.
  21710. *
  21711. * ENTRY (BY) = NUMBER OF BYTES TO OUTPUT.
  21712. * (RDAB) = 0 IF NOT FIRST CHUNK OF BLOCK.
  21713. *
  21714. * EXIT (A) = BYTES NOT TRANSFERRED.
  21715. *
  21716. * CALLS ITS, WTS.
  21717.  
  21718.  
  21719. OPE1 LDD BY
  21720. LPC 7776 WRITE EVEN BYTE COUNT
  21721. ADN 1
  21722. RJM WTS WAIT FOR *1LT* TRANSFER TO START
  21723. OPE2 IJM OPEX,CH IF *1LT* WROTE ONLY PARTIAL CHUNK
  21724. SCF OPE2,CH WAIT FOR *1LT* TO CLEAR CHANNEL FLAG
  21725. OAM BUFB,CH
  21726.  
  21727. OPE SUBR ENTRY/EXIT
  21728. LDM RDAB
  21729. ZJN OPE1 IF NOT FIRST CHUNK (IF *1LT* NEEDED)
  21730. LDD BY
  21731. ADN 5+1 BLOCK PREFIX PLUS PAD
  21732. LPC 7776 WRITE EVEN BYTE COUNT
  21733. OAM BUFB-5,CH
  21734. UJN OPEX RETURN
  21735. OPI SPACE 4,10
  21736. ** OPI - OUTPUT DATA FROM CYBER 180 IOU.
  21737. *
  21738. * IF THERE ARE MULTIPLE CHUNKS IN THE BLOCK, THIS ROUTINE
  21739. * IS USED FOR ALL BUT THE LAST CHUNK. *OPE* IS USED FOR THE
  21740. * LAST CHUNK.
  21741. *
  21742. * ENTRY (BY) = NUMBER OF BYTES TO OUTPUT.
  21743. * (RDAB) = 0 IF NOT FIRST CHUNK.
  21744. *
  21745. * EXIT (A) = BYTES NOT TRANSFERRED.
  21746. *
  21747. * CALLS ITS, WTS.
  21748.  
  21749.  
  21750. OPI1 LDD BY
  21751. RJM WTS WAIT FOR *1LT* TRANSFER TO START
  21752. OPI2 IJM OPIX,CH IF *1LT* WROTE ONLY PARTIAL CHUNK
  21753. SCF OPI2,CH WAIT FOR *1LT* TO CLEAR CHANNEL FLAG
  21754. RJM ITS INDICATE *1MT* TRASFER STARTED
  21755. OAM BUFB,CH OUTPUT DATA
  21756. OPI4 NJN OPIX IF INCOMPLETE TRANSFER
  21757. CCF *,CH SIGNAL *1LT* TO START OUTPUT
  21758.  
  21759. OPI SUBR ENTRY/EXIT
  21760. LDM RDAB
  21761. ZJN OPI1 IF NOT FIRST CHUNK
  21762. LDD BY
  21763. ADN 5 ALLOW FOR BLOCK PREFIX
  21764. OAM BUFB-5,CH OUTPUT DATA
  21765. UJN OPI4 CHECK IF ALL BYTES TRANSFERRED
  21766.  
  21767.  
  21768. .OPEL EQU *-.OPE LENGTH OF CODE TO BE OVERLAYED
  21769. RDA SPACE 4,15
  21770. ** RDA - READ DATA FROM CENTRAL.
  21771. *
  21772. * ENTRY (A) = WORDS TO READ.
  21773. * (T4 - T5) = OUT POINTER.
  21774. * (T6) = FIRST PART WORD COUNT.
  21775. * (T7) = SECOND PART WORD COUNT.
  21776. *
  21777. * EXIT (BY) = BYTES TO WRITE.
  21778. *
  21779. * CALLS ADP, ITM, SRQ.
  21780. *
  21781. * MACROS SADT.
  21782.  
  21783.  
  21784. RDA SUBR ENTRY/EXIT
  21785. RJM ADP ADVANCE POINTERS
  21786. LDD T6
  21787. ZJN RDA1 IF NO DATA
  21788. SHN 2
  21789. ADD T6
  21790. ADC BUFB
  21791. STM RDAA
  21792. LDD T4 READ FIRST PART
  21793. SHN 6
  21794. ADD RA
  21795. SHN 6
  21796. ADD T5
  21797. CRM BUFB,T6
  21798. LDD T7
  21799. ZJN RDA1 IF NO SECOND PART
  21800. SADT .FT,,,A
  21801. LDC * READ SECOND PART
  21802. CRM *,T7
  21803. RDAA EQU *-1
  21804. RDA1 LDC 0
  21805. RDAB EQU *-1
  21806. ZJN RDA2 IF NOT FIRST CHUNK
  21807. RJM ITM INITIATE TAPE MOTION
  21808. LDM ODAD
  21809. LPN 77
  21810. ZJN RDA2 IF *1LT* NOT NEEDED
  21811. LDN 1 SEND REQUEST TO *1LT*
  21812. RJM SRQ
  21813. RDA2 LJM RDAX RETURN
  21814. SLN SPACE 4,10
  21815. ** SLN - SAVE LEVEL NUMBER.
  21816. * THIS ROUTINE PUTS THE LEVEL NUMBER IN THE BLOCK PREFIX.
  21817. *
  21818. * ENTRY (CN+3,CN+4) = OUT POINTER.
  21819. * (T6,T7) = LENGTH OF BLOCK INCLUDING CONTROL WORDS.
  21820. * (LNUM) = LEVEL NUMBER IF NOT CONTROL WORD WRITE.
  21821. *
  21822. * USES T4, T5, CM - CM+4.
  21823. *
  21824. * MACROS SADT.
  21825.  
  21826.  
  21827. SLN2 LPN 17
  21828. STM BUFB-1 SAVE LEVEL NUMBER
  21829. NJN SLN3 IF NOT EOF BLOCK
  21830. LDM BUFB-5
  21831. SHN 14
  21832. ADM BUFB-4
  21833. LMN 5
  21834. ZJN SLNX IF NO DATA IN BLOCK
  21835. LDN 0
  21836. STM BUFB-1 CLEAR LEVEL NUMBER
  21837. SLN3 LDM BUFB-5
  21838. SHN 14
  21839. ADM BUFB-4
  21840. LMC 50005
  21841. NJN SLNX IF NOT FULL BLOCK
  21842. STM BUFB-1 CLEAR LEVEL NUMBER
  21843.  
  21844. SLN SUBR ENTRY/EXIT
  21845. LDM LNUM
  21846. UJN SLN2 SAVE LEVEL NUMBER
  21847. SLNA EQU *-1
  21848. * LDD CN+3 (204 WRITE)
  21849. STD T4 SAVE OUT
  21850. LDD CN+4
  21851. STD T5
  21852. LDD T6
  21853. SHN 14
  21854. ADD T7
  21855. SBN 1 BACK UP TO TRAILER CONTROL WORD
  21856. STD T7
  21857. SHN -14
  21858. STD T6
  21859. LDD T7 UPDATE OUT
  21860. RAD T5
  21861. SHN -14
  21862. ADD T6
  21863. RAD T4
  21864. SHN 14
  21865. LMD T5
  21866. SADT .LM,C
  21867. ADC -* (-LIMIT)
  21868. MJN SLN1 IF NO WRAP AROUND
  21869. SADT .FT
  21870. ADC * (FIRST)
  21871. STD T5
  21872. SHN -14
  21873. STD T4
  21874. SLN1 LDD T4
  21875. SHN 6
  21876. ADD RA
  21877. SHN 6
  21878. ADD T5
  21879. CRD CM READ CONTROL WORD
  21880. LDD CM GET LEVEL NUMBER
  21881. LJM SLN2 SAVE LEVEL NUMBER
  21882. SRQ SPACE 4,10
  21883. ** SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
  21884. *
  21885. * ENTRY (A) = REQUEST CODE.
  21886. * (T4 - T5) = POINTER.
  21887. * (BC) = BYTE COUNT OF LAST CHUNK.
  21888. * (NC) = NUMBER OF CHUNKS.
  21889. *
  21890. * USES T1, T2, T3, CM - CM+4.
  21891. *
  21892. * CALLS CPD, CRA, HNG.
  21893.  
  21894.  
  21895. SRQ SUBR ENTRY/EXIT
  21896. STD T1
  21897. PSN
  21898. SRQA EQU *-1
  21899. * UJN SRQ1 (NOT USING CHANNEL FLAG)
  21900. SCF *+2,CH SET CHANNEL FLAG
  21901. LDM CPDA INDICATE *1MT* TRANSFER STARTED
  21902. ADN 3
  21903. CWD ON
  21904. SRQ1 RJM CRA CHECK *1LT* ACCEPT
  21905. NJN SRQ2 IF *1LT* OUT OF SYNC
  21906. LDM CPDA CHECK *1LT* FUNCTION
  21907. ADN 1
  21908. CRD CM
  21909. LDD CM
  21910. LMN PRLM
  21911. ZJN SRQ3 IF *1LT* PAUSING
  21912. LDD BC SET BYTE COUNT
  21913. STD T2
  21914. LDD NC
  21915. STD T3
  21916. LDM CPDA ENTER REQUEST
  21917. ADN 2
  21918. CWD T1
  21919. RJM CPD CHECK IF PP DROPPED OUT
  21920. NJN SRQ2 IF *1LT* MISSING
  21921. LJM SRQX RETURN
  21922.  
  21923. SRQ2 RJM HNG HANG PP
  21924.  
  21925. SRQ3 LJM RET2 REQUEUE REQUEST
  21926. WRT SPACE 4,12
  21927. ** WRT - WRITE TAPE.
  21928. *
  21929. * THIS ROUTINE CHECKS END OF OPERATION STATUS AND CHECKS TO
  21930. * DETERMINE IF ANOTHER BLOCK CAN BE TRANSFERRED. FOR CTS
  21931. * THE FIRST PART OF *WRT* IS OVERLAYED WITH *WCT*.
  21932. *
  21933. * EXIT (LG,LG+1) = BLOCK ID UPDATED.
  21934. * (BL,BL+1) = BLOCK NUMBER UPDATED.
  21935. * (BT) = BLOCKS TRANSFERRED UPDATED.
  21936. *
  21937. * USES CM - CM+4.
  21938. *
  21939. * CALLS CNW, UBW, *WEM*, WEO.
  21940. *
  21941. * MACROS CALL, SADT.
  21942.  
  21943.  
  21944. WRT SUBR ENTRY/EXIT
  21945. LDM UBWB
  21946. STD LG+1
  21947. NJN WRT1 IF BLOCK ID NONZERO
  21948. AOD LG+1
  21949. WRT1 LDD DS SAVE STATUS AT START OF WRITE
  21950. STM /WRITE/STAT
  21951. LDD UP CLEAR EOR/EOF LAST BLOCK FLAG
  21952. SCN 10
  21953. STD UP
  21954. LDD MD CLEAR EOR/EOF THIS OPERATION FLAG
  21955. LPC 7377
  21956. STD MD
  21957. LDM BUFB-4
  21958. LMN 5
  21959. NJN WRT2 IF NOT FULL BLOCK
  21960. LDM BUFB-5
  21961. LMN 5
  21962. ZJN WRT3 IF NOT EOR/EOF WRITTEN
  21963. WRT2 LDN 10 SET EOR/EOF FLAGS
  21964. RAD UP
  21965. LDC 400
  21966. RAD MD
  21967. WRT3 RJM CNW CHECK NEXT WRITE
  21968. RJM WEO WAIT END OF OPERATION
  21969. ZJN WRT4 IF NO ERROR
  21970. LDN /MTX/STE STATUS ERROR
  21971. WRT4 STD EC
  21972. NJN WRT5 IF ERROR
  21973. LDM MTDS+1
  21974. SHN 21-11
  21975. PJN WRT5 IF NO GCR CORRECTION
  21976. AOM ECNT+2 INCREMENT COUNTER
  21977. SHN -14
  21978. RAM ECNT+1 INCREMENT ON OVERFLOW
  21979. WRT5 LDM UBWB CURRENT BLOCK ID
  21980. STD LG+1
  21981. NJN WRT6 IF NONZERO
  21982. AOD LG+1
  21983. WRT6 LDM /WRITE/BYRM
  21984. ZJN WRT6.1 IF ALL BYTES TRANSFERRED
  21985. LDD EC
  21986. NJN WRT6.1 IF ERROR CODE ALREADY PRESENT
  21987. LDN /MTX/CMF CHANNEL MALFUNCTION
  21988. STD EC
  21989. WRT6.1 LDD EC
  21990. ADD EI
  21991. ZJN WRT7 IF NO ERROR OR NO VERIFICATION REQUIRED
  21992. LDD DS SAVE STATUS FOR ERROR PROCESSOR
  21993. STM //STER
  21994. CALL WEM
  21995.  
  21996. * RETURN HERE IF END OF TAPE OR IF ERROR WAS RECOVERED.
  21997.  
  21998. WRT7 LDD LG+1 SAVE LAST GOOD RECORD INFORMATION
  21999. STD LG
  22000. RJM UBW UPDATE BID WINDOW
  22001. UJN WRT8 WRITE OUT TO FET
  22002.  
  22003. BSS 0 ALLOW SPACE FOR THE END OF *WCT*
  22004.  
  22005. * START OF COMMON CODE WITH *WCT*. *WCT* OVERLAYS THE FIRST
  22006. * PART OF *WRT* FOR CTS.
  22007.  
  22008. WRT8 BSS 0
  22009. SADT .FE,,3,A
  22010. LDC * WRITE OUT TO FET
  22011. CWD CN
  22012. AOD BL+1 INCREMENT BLOCK COUNT
  22013. STM BUFB-2 PUT BLOCK NUMBER IN PREFIX
  22014. SHN -14
  22015. RAD BL
  22016. STM BUFB-3
  22017. AOD BT INCREMENT BLOCKS WRITTEN
  22018. LJM WRTX RETURN
  22019. WRTK EQU *-1
  22020. * LJM /3M /EOTEXIT (RETURN ERROR ON END OF TAPE)
  22021. WTS SPACE 4,10
  22022. ** WTS - WAIT FOR *1LT* TRANSFER TO START.
  22023. *
  22024. * ENTRY (A) = BYTE COUNT.
  22025. *
  22026. * EXIT (A) = BYTE COUNT.
  22027. *
  22028. * USES CM - CM+4.
  22029.  
  22030.  
  22031. WTS3 LDD T0 RESTORE (A)
  22032.  
  22033. WTS SUBR ENTRY/EXIT
  22034. STD T0 SAVE BYTE COUNT
  22035. WTS1 LDM CPDA CHECK *1MT*/*1LT* INTERLOCK
  22036. ADN 3
  22037. CRD CM
  22038. LDD CM
  22039. ZJN WTS3 IF *1LT* TRANSFER STARTED
  22040. LDN 24 DELAY 10 MICROSECONDS
  22041. WTS2 SBN 1
  22042. NJN WTS2 IF NOT DONE
  22043. UJN WTS1 CHECK INTERLOCK
  22044. SPACE 4,10
  22045. .WC CON 0 WORD COUNT OF LAST CHUNK
  22046. SPACE 4,10
  22047. ERRMI BUFB-5-* IF CODE OVERLAYS BLOCK PREFIX
  22048. CALL SPACE 4,10
  22049. .IM SET 0 DISABLE ADDRESS MODIFICATION ON ERRORS
  22050.  
  22051. ** *1LT* CALL BLOCK.
  22052. *
  22053. *T 18/ 1LT,6/ CP,6/ HP,6/ 2,1/ CF,11/ CHANNEL,12/ PPIA
  22054. *T, 12/ -0,24/ FIRST,24/ LIMIT
  22055.  
  22056.  
  22057. CALL VFD 18/3R1LT,6/0
  22058. CON 2 WRITE LI FORMAT
  22059. CHTE *
  22060. CON CH CHANNEL
  22061. CON 0 *1MT* INPUT REGISTER ADDRESS
  22062. CON -0
  22063. SADT .FT,,,,SE
  22064. CON 0,0
  22065. SADT .LM,,,,SE
  22066. CON 0,0
  22067. TITLE PRESET.
  22068. PRS SPACE 4,15
  22069. ** PRS - PRESET.
  22070. *
  22071. * EXIT (CN+3, CN+4) = OUT POINTER.
  22072. * TO *WLI* TO WRITE.
  22073. * TO *WLI1* IF ERROR.
  22074. * TO *RET2* IF PP NOT ASSIGNED FOR *1LT*.
  22075. *
  22076. * USES CN, T1, CM - CM+4.
  22077. *
  22078. * CALLS CNW, *CPP*, MCH.
  22079. *
  22080. * MACROS MONITOR, PAUSE.
  22081.  
  22082.  
  22083. PRS LDC PRSA
  22084. RJM MCH MODIFY CHANNELS
  22085. LDK MABL CHECK MAINFRAME TYPE
  22086. CRD CM
  22087. LDD CM+1
  22088. SHN -6
  22089. LPN 41
  22090. LMN 1
  22091. ZJN PRS2 IF USING CHANNEL FLAG
  22092. LDN .OPAL-1 BYTES TO COPY
  22093. STD T1
  22094. PRS1 LDM .OPA,T1
  22095. STM .OPE,T1 COPY OVER RESIDENT TAPE IO ROUTINE
  22096. SOD T1
  22097. PJN PRS1 IF COPY NOT COMPLETE
  22098. LDC .OPAC ADDRESS OF CHANNEL TABLE
  22099. RJM MCH MODIFY CHANNELS
  22100. LDC OPA
  22101. STM ODAB SET JUMP TO OUTPUT ROUTINE
  22102. LDC OPL
  22103. STM ODAC
  22104. ISTORE SRQA,(UJN SRQ1) SKIP SETTING CHANNEL FLAG
  22105. LDD HP
  22106. LPN 20
  22107. SHN 6
  22108. RAM CALL+3 INDICATE IF ATS CONTROLLER
  22109. PRS2 LDD HP
  22110. SHN 21-7
  22111. PJN PRS4 IF NOT CTS
  22112. ISTORE /PRESET/GPSC,(UJN /PRESET/GPS6.1) DO NOT SEND CONTINUE
  22113. LDC WCTL-1
  22114. STD T1
  22115. PRS3 LDM .WCT,T1 REPLACE *WRT* WITH *WCT*
  22116. STM WRTX,T1
  22117. SOD T1
  22118. PJN PRS3 IF MORE CODE TO MOVE
  22119. LDC WCTF
  22120. RJM MCH MODIFY CHANNEL INSTRUCTIONS
  22121. LDC 6331 GENERAL STATUS BITS TO TEST
  22122. STM /PRESET/WFEA
  22123. LDC 201 GENERAL STATUS BITS THAT SHOULD BE SET
  22124. STM /PRESET/WFEB
  22125. UJN PRS5 CONTINUE PRESET
  22126.  
  22127. PRS4 LDC 4635 GENERAL STATUS BITS TO TEST
  22128. STM //WEOA
  22129. LDC 201
  22130. STM //WEOB GENERAL STATUS BITS THAT SHOULD BE SET
  22131. PRS5 LDD MD
  22132. LPN 40
  22133. ZJP PRS6 IF NOT CONTROL WORD
  22134. LDC LDNI
  22135. STM CNWA
  22136. ADN 2
  22137. STM CNWB SET WORD COUNT TO 2
  22138. ISTORE CNWC,(UJN CNW14) IF NOT ENOUGH WORDS
  22139. LDC LDDI+CN+3
  22140. STM CNWD
  22141. LDC LBBY BYTES PER CHUNK
  22142. STM CNWE
  22143. ISTORE CNWF,(UJN CNW6) SKIP CONVERSION TO BYTES
  22144. AOM ODAA SET TO SKIP CONTROL WORD
  22145. AOM ODAE SET TO SKIP CONTROL WORD
  22146. LDC LDDI+CN+3
  22147. STM SLNA GET LEVEL NUMBER FROM CONTROL WORD
  22148. UJN PRS8 CONTINUE PRESET
  22149.  
  22150. PRS6 LDM CIOE SET TYPE OF WRITE OPERATION
  22151. SHN -3
  22152. SHN 2
  22153. LMD MD
  22154. LPN 14
  22155. LMD MD
  22156. STD MD
  22157. LPN 14
  22158. NJN PRS7 IF NOT PRU WRITE (004)
  22159. * LDN 0
  22160. STM WLIB
  22161. LDC WLI3
  22162. STM WLIC
  22163. PRS7 LDD MD
  22164. LPN 14
  22165. LMN 4
  22166. ZJN PRS8 IF WRITE (014)
  22167. ISTORE CNWG,(UJN CNW11) BYPASS *DRCM*
  22168. PRS8 LDM LNUM SET LEVEL NUMBER
  22169. SHN -10
  22170. STM LNUM
  22171. LDD MD
  22172. LPN 14
  22173. LMN 14
  22174. NJN PRS10 IF NOT EOF WRITE
  22175. LDC EOF SET TO WRITE EOF
  22176. STM WLID
  22177. LDM LNUM
  22178. LMN 17
  22179. NJN PRS9 IF NOT LEVEL 17
  22180. STM LNUM DO NOT WRITE DOUBLE EOF
  22181. PRS9 LDD MD CLEAR EOR/EOF FLAG THIS OPERATION
  22182. LPC 7377
  22183. STD MD
  22184. LDD UP CHECK LAST OPERATION EOR/EOF
  22185. LPN 30
  22186. LMN 20
  22187. ZJN PRS10 IF LAST OPERATION INCOMPLETE WRITE
  22188. LDM CIOE
  22189. SHN 21-12
  22190. MJN PRS10 IF DATA IN BUFFER
  22191. LDC 400 SET EOR/EOF FLAG THIS OPERATION
  22192. RAD MD
  22193. PRS10 LDD UP
  22194. SCN 24 CLEAR BLANK TAPE FLAG
  22195. LMN 20 SET LAST OPERATION WRITE FLAG
  22196. STD UP
  22197. LDC PRSB SET UP FOR INSTRUCTION MODIFICATION
  22198. STD CN
  22199. LDN 3 SET TO RETURN OUT POINTER
  22200. STD CN+4
  22201. LDC /SRU/ITWL*100 SET SRU INCREMENT
  22202. STM //CECA
  22203. LDC PRS11 SET TO RETURN HERE
  22204. STD BT
  22205. LJM PRSX RETURN
  22206.  
  22207. * RETURN HERE AFTER ALL ROUTINES LOADED.
  22208. * BUILD CALL TO *1LT*.
  22209.  
  22210. IFGT BUFB,*,1
  22211. BSS BUFB-* ENSURE PREFIX DOES NOT OVERLAY *PRS*
  22212. PRS11 LDD HP
  22213. SHN 21-7
  22214. PJN PRS12 IF NOT CTS
  22215. LDD CN+3
  22216. STM /WRITE/OPTU SAVE OUT POINTER FOR COMMAND RETRY
  22217. LDD CN+4
  22218. STM /WRITE/OPTL
  22219. PRS12 RJM CNW CHECK FIRST WRITE
  22220. ZJN PRS13 IF WRITE OK
  22221. LJM WLI1 PROCESS ERROR CONDITION
  22222.  
  22223. PRS13 LDD CP MERGE CP NUMBER
  22224. SHN -7
  22225. RAM CALL+1
  22226. LDD HP
  22227. LPC 7700 ALLOW *1LT* TO TEST FOR CTS
  22228. RAM CALL+2
  22229. LDD IA SET INPUT REGISTER ADDRESS IN CALL
  22230. STM CALL+4
  22231. LDN CMCL CHECK MOVE FLAG
  22232. CRD CM
  22233. LDD CM
  22234. SHN 7
  22235. LMD CP
  22236. ZJN PRS14 IF MOVE FLAG
  22237. LDD MA WRITE REQUEST BLOCK
  22238. CWM CALL,TR
  22239. LDN 1 SET TO NOT QUEUE REQUEST
  22240. STD CM+1
  22241. MONITOR RPPM REQUEST PP
  22242. LDD CM+1
  22243. NJN PRS15 IF PP ASSIGNED
  22244. PRS14 LJM RET2 REQUEUE
  22245.  
  22246. PRS15 STM CPDA SAVE PP INPUT REGISTER ADDRESS
  22247. PRS16 LDN 77 DELAY
  22248. SBN 1
  22249. NJN *-1
  22250. LDD MA CHECK FOR *1LT* ACKNOWLEDGE
  22251. ADN 1
  22252. CRD CM
  22253. LDD CM
  22254. ZJN PRS18 IF *1LT* READY
  22255. RJM CPD CHECK FOR *1LT* DROP
  22256. NJN PRS14 IF *1LT* GONE
  22257. LDN CMCL CHECK MOVE FLAG
  22258. CRD CM
  22259. LDD CM
  22260. SHN 7
  22261. LMD CP
  22262. NJN PRS16 IF NO MOVE FLAG FOR THIS CP
  22263. RJM CEC CHANGE BACK TO MAGNET CP
  22264. PRS17 RJM CPD CHECK PP DROP
  22265. NJN PRS14 IF *1LT* GONE
  22266. PAUSE NE
  22267. UJN PRS17 LOOP
  22268.  
  22269. PRS18 LDC 4000 SET BLOCKS WRITTEN FLAG
  22270. STD BT
  22271. LJM WLI ENTER WRITE CODE
  22272. SPACE 4,10
  22273. PRSA CHTB
  22274. PRSB TSAD
  22275. ERRMI ERLA-* IF OVERFLOW INTO *CPP*
  22276. WCT SPACE 4,15
  22277. ** WCT - WRITE CARTRIDGE TAPE.
  22278. *
  22279. * THIS ROUTINE CHECKS END OF OPERATION STATUS AND CHECKS TO
  22280. * DETERMINE IF ANOTHER BLOCK CAN BE TRANSFERRED. FOR CTS
  22281. * THIS ROUTINE OVERLAYS THE FIRST PART OF *WRT*. THE LENGTH
  22282. * OF THIS ROUTINE MUST BE THE SAME AS THE LENGTH OF THE FIRST
  22283. * PART OF *WRT*.
  22284. *
  22285. * EXIT TO *WRT8* IF NO ERROR.
  22286. * TO *CWP* WITH (EC) = ERROR CODE IF ERROR.
  22287. * TO *EOF* IF COMMAND RETRY AND EOF WRITE.
  22288. * TO *WLI* IF COMMAND RETRY AND NOT EOF WRITE.
  22289. *
  22290. * USES CM - CM+4.
  22291. *
  22292. * CALLS CNW, *CWP*, /PRESET/WFE.
  22293.  
  22294.  
  22295. .WCT BSS 0
  22296. LOC WRTX
  22297. WCT SUBR ENTRY/EXIT
  22298. LDD UP
  22299. SCN 10 CLEAR EOR/EOF LAST BLOCK FLAG
  22300. STD UP
  22301. LDD MD
  22302. LPC 7377 CLEAR EOR/EOF THIS OPERATION FLAG
  22303. STD MD
  22304. LDM BUFB-4
  22305. LMN 5
  22306. NJN WCT1 IF NOT FULL BLOCK
  22307. LDM BUFB-5
  22308. LMN 5
  22309. ZJN WCT2 IF NOT EOR/EOF WRITTEN
  22310. WCT1 LDN 10
  22311. RAD UP SET EOR/EOF FLAGS
  22312. LDC 400
  22313. RAD MD
  22314. WCT2 RJM CNW CHECK NEXT WRITE
  22315. RJM /PRESET/WFE WAIT FOR END OF OPERATION
  22316. PJN WCT3 IF NOT COMMAND RETRY
  22317. LDM /WRITE/OPTU RESET OUT POINTER
  22318. STD CN+3
  22319. LDM /WRITE/OPTL
  22320. STD CN+4
  22321. LDD MD
  22322. LPC 7377 CLEAR EOR/EOF THIS OPERATION FLAG
  22323. STD MD
  22324. RJM CNW CHECK NEXT WRITE
  22325. LDN F0002
  22326. STM ITMA CONTINUE IS THE NEXT FUNCTION
  22327. LDM WCT
  22328. LMC EOFA
  22329. ZJP EOF IF CALLED FROM *EOF*
  22330. LJM WLI RETRY THE WRITE
  22331.  
  22332. WCT3 ZJN WCT4 IF NO ERROR
  22333. LDN /MTX/STE STATUS ERROR
  22334. WCT4 STD EC
  22335. LDM /WRITE/BYRM
  22336. ZJN WCT5 IF ALL BYTES TRANSFERRED
  22337. LDD EC
  22338. NJN WCT5 IF ERROR CODE ALREADY PRESENT
  22339. LDN /MTX/CMF CHANNEL MALFUNCTION
  22340. STD EC
  22341. WCT5 LDD EC
  22342. ADD EI
  22343. ZJN WCT6 IF NO ERROR OR NO RECOVERED ERROR
  22344. CALL CWP WRITE ERROR PROCESSOR
  22345.  
  22346. * RETURN HERE IF END OF TAPE OR RECOVERED ERROR.
  22347.  
  22348. WCT6 LDD CN+3
  22349. STM /WRITE/OPTU SAVE OUT POINTER FOR COMMAND RETRY
  22350. LDD CN+4
  22351. STM /WRITE/OPTL
  22352.  
  22353. WCTL EQU *-WCTX LENGTH OF *WCT*
  22354. ERRNZ WRT8-* ADJUST *BSS* BEFORE *WRT8*
  22355.  
  22356. LOC *O
  22357.  
  22358. WCTF CHTB CHANNEL TABLE FOR *WCT*
  22359. OPA SPACE 4,10
  22360. .OPA BSS 0
  22361. LOC .OPE
  22362. OPA SPACE 4,10
  22363. ** OPA - OUTPUT DATA TO ATS UNIT (NON-CYBER 180).
  22364. *
  22365. * IF THERE ARE MULTIPLE CHUNKS IN THE BLOCK, THIS ROUTINE
  22366. * IS USED FOR ALL BUT THE LAST CHUNK. *OPL* IS USED FOR THE
  22367. * LAST CHUNK.
  22368. *
  22369. * ENTRY (BY) = NUMBER OF BYTES TO OUTPUT.
  22370. * (RDAB) = 0 IF NOT FIRST CHUNK.
  22371. *
  22372. * EXIT (A) = BYTES NOT TRANSFERRED.
  22373.  
  22374. OPA1 AJM *,CH WAIT FOR *1LT* TO OUTPUT CHUNK
  22375. LDD BY DELAY TO ALLOW *1LT* TO REACTIVATE CHANNEL
  22376. OAM BUFB,CH OUTPUT DATA
  22377. FJM *,CH
  22378. DCN CH+40 INDICATE TO *1LT* TO RESUME OUTPUT
  22379. NJN OPAX IF INCOMPLETE TRANSFER
  22380. ACN CH
  22381.  
  22382. OPA SUBR ENTRY/EXIT
  22383. LDM RDAB
  22384. ZJN OPA1 IF NOT FIRST CHUNK
  22385. LDD BY
  22386. ADN 5 ALLOW FOR BLOCK PREFIX
  22387. OAM BUFB-5,CH OUTPUT DATA
  22388. FJM *,CH
  22389. DCN CH+40 INDICATE TO *1LT* TO RESUME OUTPUT
  22390. NJN OPAX IF INCOMPLETE TRANSFER
  22391. ACN CH
  22392. UJN OPAX RETURN
  22393. OPL SPACE 4,10
  22394. ** OPL - OUTPUT LAST PARTIAL CHUNK TO ATS UNIT (NON-CYBER 180).
  22395. *
  22396. * ENTRY (BY) = NUMBER OF BYTES TO TRANSFER.
  22397. * (RDAB) = 0 IF NOT FIRST CHUNK OF BLOCK.
  22398. *
  22399. * EXIT (A) = BYTES NOT TRANSFERRED.
  22400.  
  22401.  
  22402. OPL1 AJM *,CH WAIT FOR *1LT* TO OUTPUT CHUNK
  22403. LDD BY DELAY TO ALLOW *1LT* TO REACTIVATE CHANNEL
  22404. LPC 7776 WRITE EVEN BYTE COUNT
  22405. ADN 1
  22406. OAM BUFB,CH OUTPUT PARTIAL CHUNK
  22407.  
  22408. OPL SUBR ENTRY/EXIT
  22409. LDM RDAB
  22410. ZJN OPL1 IF NOT FIRST CHUNK
  22411. LDD BY
  22412. ADN 5+1
  22413. LPC 7776 WRITE EVEN BYTE COUNT
  22414. OAM BUFB-5,CH OUTPUT PARTIAL CHUNK
  22415. UJN OPLX RETURN
  22416.  
  22417.  
  22418. LOC *O
  22419. .OPAL EQU *-.OPA LENGTH OF CODE
  22420.  
  22421. ERRNG .OPEL-.OPAL IF CODE OVERFLOWS
  22422.  
  22423. .OPAC CHTB CHANNEL TABLE FOR *OPA*/*OPL*
  22424. OVERLAY (WRITE LABEL PROCESSOR.),(BUF+CLBL+10),,WLA
  22425. WLA SPACE 4,15
  22426. ** WLA - WRITE LABELS PROCESSOR.
  22427. *
  22428. * ENTRY (PB) = 6/OPERATION TYPE, 6/SECTION.
  22429. *
  22430. * USES T1, T2, CM - CM+4, CN - CN+4.
  22431. *
  22432. * CALLS /CPP/CPP, HNG, ITM, RUD, UAD, /WRITE/WRT,
  22433. * LABEL PROCESSORS.
  22434. *
  22435. * MACROS CALL.
  22436.  
  22437.  
  22438. ENTRY WLA
  22439. WLA RJM RUD
  22440. LDC 4000 SET BLOCKS WRITTEN FLAG
  22441. STD BT
  22442. RJM UAD GET CIO FUNCTION
  22443. ADK /MTX/UFRQ
  22444. CRD CM
  22445. ADK /MTX/UCIA-/MTX/UFRQ
  22446. CRD CN
  22447. LDD PB CHECK FUNCTION
  22448. SHN -6
  22449. SBN /MTX/WLVR/100
  22450. ZJN WLA2 IF WRITE VOL1, HDR1 AFTER REEL SWAP
  22451. LDD CM
  22452. LMN /MTX/CIO
  22453. NJN WLA2 IF NOT PROCESSING CIO REQUEST
  22454. LDD CN
  22455. SHN -6
  22456. LPN 17
  22457. LMN /CIO/CLO
  22458. ZJN WLA1 IF CLOSE
  22459. LMN /CIO/OPE&/CIO/CLO
  22460. NJN WLA2 IF NOT OPEN
  22461. WLA1 CALL CPP CHANGE CONTROL POINTS
  22462. LDN ZERL SET ADDRESS RELOCATION
  22463. CRD CN
  22464. LDC TADD
  22465. STD CN
  22466. RJM /CPP/CPP
  22467. UJN WLA3 SELECT LABEL TYPE
  22468.  
  22469. WLA2 LDM FETO INSURE NO EXTENDED LABELS
  22470. SCN 40
  22471. STM FETO
  22472. WLA3 LDD LT
  22473. LPC 1000
  22474. ZJN WLA4 IF ANSI LABELS
  22475. LDN 3
  22476. WLA4 STD T1 SET LABEL TYPE INDEX
  22477. LDM LTYP,T1 SET ADDRESS OF LABEL OPERATION TABLE
  22478. STM WLAA
  22479. ADN 1
  22480. STM WLAB
  22481. LDM LTYP+1,T1 SET LENGTH OF LABEL
  22482. STD BY
  22483. LDD PB SET UP TO PROCESS LABEL
  22484. SHN -6
  22485. SHN 1
  22486. STD T2
  22487. RAM WLAB
  22488. STM WLAF
  22489. LDD T2
  22490. SBM LTYP+2,T1
  22491. PJN WLA6 IF UNDEFINED OPERATION
  22492. LDM *,T2
  22493. WLAA EQU *-1
  22494. ZJN WLA4 IF SEQUENCE NOT DEFINED
  22495. STM WLAC
  22496. LDD PB SET SECTION
  22497. LPN 77
  22498. STD T1
  22499. SBM *
  22500. WLAB EQU *-1
  22501. MJN WLA7 IF LEGAL SECTION
  22502. WLA6 RJM HNG HANG PP
  22503. WLA7 LDM *,T1
  22504. WLAC EQU *-1
  22505. STM WLAD
  22506. RJM * PROCESS LABEL
  22507. WLAD EQU *-1
  22508. ZJN WLA9 IF NO WRITE REQUIRED
  22509. SHN -21 SAVE ADVANCE SECTION FLAG
  22510. STM WLAE
  22511.  
  22512. * ENTER HERE ON RETRY FROM WRITE ERROR RECOVERY.
  22513.  
  22514. WLA8 LDD HP
  22515. SHN 21-7
  22516. PJN WLA8.1 IF NOT CTS
  22517. LDC F0250 SHORT WRITE
  22518. STM ITMA
  22519. UJN WLA8.2 WRITE TAPE
  22520.  
  22521. WLA8.1 RJM //ITM INITIATE TAPE MOTION
  22522. WLA8.2 RJM /WRITE/WRT WRITE TAPE
  22523. LDC *
  22524. WLAE EQU *-1
  22525. ZJN WLA9 IF ADVANCE SECTION
  22526. AOD PA ADVANCE SUBSECTION
  22527. UJN WLA10 CONTINUE LABEL PROCESSING
  22528.  
  22529. WLA9 AOD PB ADVANCE TO NEXT SECTION
  22530. WLA10 LDD PB
  22531. LPN 77
  22532. SBM *
  22533. WLAF EQU *-1
  22534. PJN WLA11 IF ALL SECTIONS PROCESSED
  22535. LJM WLA3 SELECT NEXT LABEL TYPE
  22536. WLAG EQU *-1
  22537. * LJM RET2 (RECOVERED PARITY ERROR)
  22538.  
  22539. WLA11 LJM RET1 EXIT
  22540. SPACE 4,10
  22541. ** TABLE OF LABEL TYPES AND SIZES.
  22542. *T, 12/ TYPE,12/ SIZE
  22543.  
  22544. LTYP BSS 0
  22545. LOC 0
  22546. CON ANS,LABL,ANSL ANSI LABELS
  22547. * CON ANS,CLBL,ANSL (CTS)
  22548. LOC *O
  22549. LTYPL EQU *-LTYP
  22550. FAD SPACE 4,10
  22551. ** FAD - SET FET ADDRESS.
  22552. *
  22553. * THIS ROUTINE IS HERE BECAUSE ADDRESS MODIFICATION DOES NOT
  22554. * WORK ABOVE 3777B.
  22555. *
  22556. * EXIT (A) = FET ADDRESS.
  22557. *
  22558. * MACROS SADT.
  22559.  
  22560.  
  22561. FAD SUBR ENTRY/EXIT
  22562. SADT .FE,,,A
  22563. LDC *
  22564. UJN FADX RETURN
  22565. WTE SPACE 4,15
  22566. ** WTE - WRITE TAPE MARK ERROR PROCESSOR.
  22567. *
  22568. * THIS ROUTINE IS OVERLAYED WITH *CPE* FOR CTS.
  22569. *
  22570. * ENTRY (A) = 0 IF NOT NOT READY ERROR.
  22571. * (A) .NE. 0 IF NOT READY OR NO WRITE ENABLE.
  22572. *
  22573. * EXIT TO *RET3* IF READY DROP, NO WRITE ENABLE, OR WRITE
  22574. * TAPE MARK FAILURE.
  22575. * (EP) = 3 IF NO WRITE ENABLE.
  22576. *
  22577. * USES EC, EI, EP, LG, LG+1, T2, T3.
  22578. *
  22579. * CALLS *EMM*, FCN, UBW, WEO, WFC.
  22580. *
  22581. * MACROS CALL.
  22582.  
  22583.  
  22584. WTE23 LDD LG+1 SET LAST GOOD BLOCK INFORMATION
  22585. STD LG
  22586. LDN 0 CLEAR RETRY COUNTER
  22587. STD EI
  22588. LDN 1 SET TAPE MARK INDICATION
  22589. STM UBWB
  22590. RJM UBW UPDATE WINDOW
  22591.  
  22592. WTE SUBR ENTRY/EXIT
  22593. ZJN WTE2 IF CHECK STATUS
  22594.  
  22595. * NOT READY OR NO WRITE ENABLE.
  22596.  
  22597. WTE0 LPN 1
  22598. NJN WTE1 IF NOT READY
  22599. LDN 3 SET SUB ERROR CODE
  22600. STD EP
  22601. LDN /MTX/NWE NO WRITE ENABLE
  22602. LJM RET3 RETURN ERROR CODE
  22603.  
  22604. WTE1 LDN /MTX/RDR DROP READY ERROR CODE
  22605. STD EC
  22606. CALL EMM CALL ERROR HANDLER
  22607. LDD EC
  22608. LJM RET3 RETURN
  22609.  
  22610. WTE2 STD LG+1
  22611. STD EC
  22612. STM /WRITE/BYWR
  22613. STM /WRITE/BYRM
  22614. STD T3 CLEAR REPOSITIONING COUNT
  22615. RJM WEO WAIT END OF OPERATION
  22616.  
  22617. * CHECK FOR TAPE MARK STATUS IN REVERSE.
  22618.  
  22619. WTE3 LDC F0113 BACKSPACE OVER TAPE MARK
  22620. RJM FCN
  22621. RJM WFC WAIT END OF OPERATION
  22622. STM WTEB SAVE BACKSPACE STATUS FOR ANALYSIS
  22623. LPN 20 TAPEMARK STATUS BIT
  22624. STM WTEA SAVE STATUS OF BKSP OF CURRENT TAPE MARK
  22625. LDM BIDW,WP LOAD LAST GOOD RECORD BLOCK ID
  22626. SBN 1
  22627. ZJP WTE5 IF LAST GOOD RECORD IS TAPE MARK
  22628. WTE3.1 AOD T3 INCREASE REPOSITIONING COUNT
  22629. LDN 13 FORESPACE OVER TAPE MARK
  22630. RJM FCN
  22631. RJM WFC WAIT END OF OPERATION
  22632. LPN 20
  22633. ZJN WTE4 IF TAPE MARK NOT SEEN ON FORESPACE
  22634. LDM WTEA
  22635. ZJN WTE4.1 IF TAPE MARK NOT SEEN ON BACKSPACE
  22636. LJM WTE23 TAPE MARK SEEN IN BOTH DIRECTIONS
  22637.  
  22638. WTE4 LDM BIDW,WP LOAD BLOCK ID FROM WINDOW
  22639. SBM UBWB
  22640. NJN WTE4.1 IF NOT LAST GOOD DATA RECORD
  22641. SOD T3 ADJUST REPOSITIONING COUNT
  22642. AOD EI INCREMENT RETRY COUNTER
  22643. LJM WTE17 REWRITE THE TAPE MARK
  22644.  
  22645. WTE4.1 SOD T3 REDUCE REPOSITIONING COUNT
  22646. LDC F0113 BACKSPACE OVER THIS BLOCK
  22647. RJM FCN
  22648. RJM WFC WAIT END OF OPERATION
  22649.  
  22650. * TAPE MARK RECOVERY.
  22651.  
  22652. WTE5 AOD EI SET SINGLE RETRY
  22653. LDD WP POINTER TO LAST GOOD BLOCK ID
  22654. STD T2
  22655. WTE8 LDM BIDW,T2 LOAD BLOCK ID FROM WINDOW
  22656. SBN 4 INVALID BLOCK ID
  22657. ZJP WTE14 IF LAST BLOCK ID IN WINDOW
  22658.  
  22659. * BACKSPACE OVER TAPE MARKS AND LAST GOOD DATA BLOCK.
  22660.  
  22661. SOD T3 REDUCE REPOSITIONING COUNT
  22662. LDC F0113 BACKSPACE OVER PRU
  22663. RJM FCN
  22664. RJM WFC WAIT END OF OPERATION
  22665. SHN 21-4
  22666. PJN WTE11 IF NO TAPE MARK
  22667. LDM BIDW,T2
  22668. SBN 1
  22669. NJN WTE11 IF BLOCK ID WINDOW AND STATUS MISMATCH
  22670. SOD T2 REDUCE WINDOW POINTER
  22671. PJN WTE9 IF NO WRAP AROUND
  22672. LDN 7
  22673. STD T2
  22674. WTE9 SBD WP
  22675. NJN WTE8 IF MORE IN BLOCK ID WINDOW
  22676. UJP WTE14.1 LAST BLOCK ID IN WINDOW
  22677.  
  22678. * FORESPACE OVER LAST GOOD DATA BLOCK.
  22679.  
  22680. WTE11 LDD HP
  22681. LPN 1
  22682. NJN WTE12 IF 9 TRACK
  22683. LDD MD CURRENT PARITY TO BE USED ON FORESPACE
  22684. SHN -5
  22685. LMM BIDW,T2 PARITY THAT BLOCK WAS WRITTEN AT
  22686. LPN 2
  22687. ZJN WTE12 IF NO CHANGE NEEDED
  22688. LDN 5 TOGGLE TO OPPOSITE PARITY
  22689. RJM FCN
  22690. WTE12 AOD T3 INCREASE REPOSITIONING COUNT
  22691. LDN 13 FORESPACE OVER LAST GOOD DATA BLOCK
  22692. RJM FCN
  22693. RJM WFC WAIT END OF OPERATION
  22694. SHN 21-13
  22695. PJN WTE13 IF NO ALERT ON FORESPACE
  22696. LDM BIDW,T2 LOAD BLOCK ID
  22697. LPN 2
  22698. NJN WTE14 IF WRITTEN AS EVEN PARITY
  22699. WTE13 SHN 7
  22700. MJN WTE13.1 IF TAPE MARK STATUS FORESPACE
  22701. LDM BIDW,T2
  22702. SBM UBWB
  22703. ZJN WTE13.2 IF BLOCK ID MATCHES
  22704. AOM WTEA
  22705. LPN 62
  22706. ZJN WTE12 IF NO TAPE MARK AND NEXT BLOCK NOT CHECKED
  22707. WTE13.1 UJN WTE15 FATAL ERROR WRITING TAPE MARK
  22708.  
  22709. WTE13.2 LDM WTEA
  22710. LPN 1
  22711. ZJN WTE14 IF MATCH FOUND ON EXPECTED BLOCK
  22712. SOD T3 ADJUST REPOSITIONING COUNT
  22713.  
  22714. * FORESPACE OVER TAPE MARKS IF ANY.
  22715.  
  22716. WTE14 LDD T2
  22717. SBD WP
  22718. ZJN WTE16 IF NO TAPE MARKS
  22719. WTE14.1 AOD T2 INCREMENT TEMP WINDOW POINTER
  22720. LPN 7
  22721. STD T2
  22722. AOD T3 INCREASE REPOSITIONING COUNT
  22723. LDN 13 FORESPACE OVER TAPE MARK
  22724. RJM FCN
  22725. RJM WFC WAIT END OF OPERATION
  22726. LPN 20
  22727. NJN WTE14 IF TAPE MARK IN STATUS
  22728. WTE15 LJM WTE19 FATAL ERROR ON WRITING TAPE MARK
  22729.  
  22730. * CHECK IF CURRENT TAPE MARK SEEN ON BACKSPACE.
  22731.  
  22732. WTE16 STD T3 CLEAR REPOSITIONING COUNT
  22733. LDC 0 CURRENT TAPE MARK STATUS/FLAGS
  22734. WTEA EQU *-1
  22735. LPN 20
  22736. ZJN WTE17 IF NO TAPE MARK STATUS ON BACKSPACE
  22737. RAM WTEA BLOCK THIS PATH
  22738. LJM WTE3.1 CHECK FOR TAPE MARK
  22739.  
  22740. * ISSUE ERASES AND REWRITE TAPE MARK.
  22741.  
  22742. WTE17 LDD EI RETRY COUNTER
  22743. STD T2 MAKE ERASE COUNTER
  22744. SBN 6
  22745. PJN WTE19 IF MAX RETRY REACHED
  22746. WTE18 LDN 52 ISSUE ERASE
  22747. RJM FCN
  22748. RJM WEO
  22749. SOD T2 REDUCE ERASE COUNTER
  22750. NJN WTE18 IF LOOP ERASE FUNCTIONS
  22751. LDN F0051 ISSUE WRITE TAPE MARK
  22752. RJM FCN
  22753. RJM WEO
  22754. LDN /MTX/TME WRITE TAPE MARK ERROR CODE
  22755. STD EC
  22756. LDD DS SET UP DETAIL STATUS
  22757. STM //STER
  22758. CALL EMM CALL ERROR HANDLER
  22759. LJM WTE3 REVERIFY TAPE MARK
  22760.  
  22761. * ERROR ON TAPE MARK RECOVERY. REPOSITION TAPE FOR POSSIBLE
  22762. * SUBSEQUENT *CLOSER* OPERATION.
  22763.  
  22764. WTE19 LDD T3 ERROR REPOSITIONING COUNT
  22765. SHN 21-13
  22766. PJN WTE21 IF BACKSPACE REPOSITIONING NEEDED
  22767. AOD T3 INCREASE REPOSITIONING COUNT
  22768. SHN -14 CHECK FOR OVERFLOW
  22769. NJN WTE22 IF REPOSITIONING DONE OR NOT REQUIRED
  22770. LDC 13 FORESPACE ONE BLOCK
  22771. WTE20 RJM FCN
  22772. RJM WFC WAIT END OF OPERATION
  22773. UJN WTE19 CHECK IF MORE REPOSITIONING REQUIRED
  22774.  
  22775. WTE21 ZJN WTE22 IF REPOSITIONING DONE OR NOT REQUIRED
  22776. SOD T3 REDUCE REPOSITIONING COUNTER
  22777. LDC F0113
  22778. UJN WTE20 BACKSPACE ONE BLOCK
  22779.  
  22780. WTE22 LDN /MTX/TME WRITE TAPE MARK FAILURE
  22781. STD EC
  22782. LDD DS SET UP DETAIL STATUS
  22783. STM //STER
  22784. CALL EMM CALL ERROR HANDLER
  22785. LDD EC
  22786. LJM RET3 RETURN TO MAGNET
  22787.  
  22788.  
  22789. WTEB BSSZ 1 INITIAL BACKSPACE STATUS FOR ANALYSIS
  22790. WFC SPACE 4,10
  22791. ** WFC - WAIT BACKSPACE FUNCTION COMPLETE.
  22792. * TIMES OUT APPROXIMATELY 25 FEET OF TAPE.
  22793. *
  22794. * EXIT (A) = (DS) = UNIT STATUS.
  22795. *
  22796. * USES T4.
  22797. *
  22798. * CALLS //STW.
  22799.  
  22800. WFC2 CON 0 ENTERED VIA *RJM* FROM //STW
  22801. SOD T4
  22802. NJN WFC1 IF NOT TIMEOUT
  22803. LDC //ERR RESET ERROR EXIT
  22804. STM //STWC
  22805. UJN WFC1 ATTEMPT 1 MORE WAIT
  22806.  
  22807.  
  22808. WFC SUBR ENTRY/EXIT
  22809. LDC 2000 SET TIME OUT
  22810. STD T4
  22811. LDC WFC2 SET RETURN ON TIMEOUT IN //STW
  22812. STM //STWC
  22813. WFC1 LDN 0 WAIT NOT BUSY
  22814. RJM //STW
  22815. LDC //ERR RESET ERROR EXIT
  22816. STM //STWC
  22817. LDD DS
  22818. UJN WFCX RETURN
  22819. WFM SPACE 4,10
  22820. ** WFM - WRITE FILE MARK.
  22821. *
  22822. * COUNTS TAPE MARK AS A DATA BLOCK IF NOT LABEL OPERATION.
  22823. *
  22824. * CALLS WTM.
  22825.  
  22826.  
  22827. WFM SUBR ENTRY/EXIT
  22828. LDD UP SET EOR/EOF FLAG
  22829. SCN 10
  22830. LMN 10
  22831. STD UP
  22832. LDD MD CLEAR TAPE MARK REQUEST
  22833. SCN 14
  22834. STD MD
  22835. RJM WTM WRITE TAPE MARKS
  22836. LDD PB
  22837. SHN -6
  22838. NJN WFM1 IF LABELING OPERATION
  22839. AOD BL+1 COUNT BLOCK
  22840. SHN -14
  22841. RAD BL
  22842. WFM1 LDN 0
  22843. UJN WFMX RETURN
  22844. SPACE 4,10
  22845. ERRNG BUFB-* OVERFLOWED INTO WRITE RECOVERY
  22846. TITLE ANSI LABEL PROCESSORS.
  22847. SPACE 4,10
  22848. ** TABLE OF LABEL OPERATIONS.
  22849.  
  22850.  
  22851. ANS INDEX ANSI LABELS OPERATION TABLE
  22852. INDEX /MTX/WLTM/40,(WEF,WEFL) WRITE TAPE MARK
  22853. INDEX /MTX/WLTR/40,(ETL,ETLL) WRITE TRAILER LABEL
  22854. INDEX /MTX/WLEV/40,(EVL,EVLL) WRITE END OF VOLUME LABEL
  22855. INDEX /MTX/WLVH/40,(VLL,VLLL) WRITE VOL1, HDR1
  22856. INDEX /MTX/WLME/40,(EFL,EFLL) WRITE MULTI-FILE EOF
  22857. INDEX /MTX/WLVR/40,(VLL,VLLL) WRITE VOL1, HDR1 ON REEL SWAP
  22858. INDEX /MTX/WLMX/40 TERMINATE TABLE
  22859. ANSL EQU *-ANS LENGTH OF TABLE
  22860.  
  22861. EFL BSS 0
  22862. LOC 0
  22863. CON WFM WRITE FILE MARK
  22864. CON EOF WRITE *EOF1*
  22865. CON WFM WRITE FILE MARK
  22866. CON CWS CLEAR WRITE STATUS
  22867. LOC *O
  22868. EFLL EQU *-EFL
  22869.  
  22870. EVL BSS 0
  22871. LOC 0
  22872. CON ERA
  22873. CON WFM
  22874. CON EOV
  22875. CON EVO
  22876. CON UTL
  22877. CON WFM
  22878. CON WFM
  22879. CON WFM
  22880. CON CWS
  22881. LOC *O
  22882. EVLL EQU *-EVL
  22883.  
  22884. ETL BSS 0
  22885. LOC 0
  22886. CON WFM
  22887. CON EOF
  22888. CON EFO
  22889. CON UTL
  22890. CON WFM
  22891. CON WFM
  22892. CON WFM
  22893. CON CWS
  22894. LOC *O
  22895. ETLL EQU *-ETL
  22896.  
  22897. VLL BSS 0
  22898. LOC 0
  22899. CON VOL
  22900. CON UVL
  22901. CON HDR
  22902. CON OHD
  22903. CON UHL
  22904. CON WFM
  22905. LOC *O
  22906. VLLL EQU *-VLL
  22907.  
  22908. WEF BSS 0
  22909. LOC 0
  22910. CON WFM
  22911. LOC *O
  22912. WEFL EQU *-WEF
  22913. SPACE 4,10
  22914. ** COMMON EXIT CONDITIONS.
  22915. * (A) = 0, NO WRITE REQUIRED, SECTION NUMBER WILL BE ADVANCED.
  22916. * (A) = 40XXXX, WRITE BLOCK, DON,T ADVANCE SECTION NUMBER.
  22917. * (A) = XXXX, WRITE BLOCK, ADVANCE SECTION NUMBER.
  22918. ELA SPACE 4,10
  22919. ** ELA - EXTENDED LABELS ADDRESS PROCESSING.
  22920. *
  22921. * ENTRY (T6 - T7) = POSITION TO START AT IN BUFFER.
  22922. *
  22923. * EXIT (A) = ABSOLUTE ADDRESS.
  22924. * (A) = 0, END OF LABEL BUFFER.
  22925. *
  22926. * CALLS FAD.
  22927.  
  22928.  
  22929. ELA SUBR ENTRY/EXIT
  22930. LDM FETO
  22931. SHN 21-5
  22932. PJN ELA0 IF NO EXTENDED LABELS
  22933. RJM FAD GET FET ADDRESS
  22934. ADN 11
  22935. CRD CM
  22936. LDD CM+3
  22937. SHN 14
  22938. STD CM+1
  22939. SHN -14
  22940. STD CM+3
  22941. SHN 14
  22942. LMD CM+4
  22943. SBN 2
  22944. MJN ELA0 IF NO LABEL BUFFER
  22945. LDD CM+2
  22946. SHN 6
  22947. LMD CM+1
  22948. STD CM+2
  22949. SHN -14
  22950. STD CM+1
  22951. LDD T6
  22952. SBD CM+1
  22953. SHN 14
  22954. ADD T7
  22955. SBD CM+2
  22956. ADN 11 ALLOW FOR LABEL
  22957. MJN ELA1 IF NOT END OF LABEL BUFFER
  22958. ELA0 LDN 0 INDICATE END OF BUFFER
  22959. LJM ELAX RETURN
  22960.  
  22961. ELA1 LDD CM+1 CHECK IF BUFFER WITHIN FL
  22962. ADD CM+3
  22963. SHN 14
  22964. ADD CM+2
  22965. ADD CM+4
  22966. SHN -6
  22967. SBD FL
  22968. MJN ELA2 IF BUFFER WITHIN FL
  22969. LDN /MTX/BAE BUFFER ARGUMENT ERROR
  22970. LJM RET3 RETURN ERROR CODE
  22971.  
  22972. ELA2 LDD CM+3 CALCULATE LABEL ADDRESS
  22973. ADD T6
  22974. SHN 6
  22975. ADD RA
  22976. SHN 6
  22977. ADD CM+4
  22978. ADD T7
  22979. LJM ELAX RETURN
  22980. ERA SPACE 4,10
  22981. ** ERA - ERASE.
  22982. *
  22983. * SKIP OVER THE EOT MARKER SO THAT THE FIRST TAPE MARK IN THE
  22984. * TRAILER LABEL SEQUENCE CAN BE WRITTEN AFTER THE EOT MARKER.
  22985. * THIS WILL REDUCE THE POSSIBILITY OF AN ERROR OCCURRING WHEN
  22986. * LATER READING THE FIRST TAPE MARK.
  22987. *
  22988. * EXIT (A) = 0.
  22989. *
  22990. * CALLS FCN, WEO.
  22991.  
  22992.  
  22993. ERA SUBR ENTRY/EXIT
  22994. LDN 52 SKIP OVER EOT BLOCK (ERASE)
  22995. ERAA EQU *-1
  22996. * UJN ERA1 (CTS)
  22997. RJM FCN
  22998. RJM WEO WAIT FOR END OF OPERATION
  22999. ERA1 LDN 0 NO WRITE REQUIRED, ADVANCE SECTION
  23000. UJN ERAX RETURN
  23001. EOV SPACE 4,10
  23002. ** EOV - WRITE END OF VOLUME LABEL.
  23003. * WRITE 3 TAPE MARKS IF UNLABELED.
  23004. *
  23005. * CALLS CCB, HTR.
  23006.  
  23007.  
  23008. EOV2 AOD PB SKIP *EOV2* SEQUENCE
  23009. AOD PB SKIP *UTL* SEQUENCE
  23010. LDN 0 INDICATE NO WRITE
  23011.  
  23012. EOV SUBR ENTRY/EXIT
  23013. LDD LT
  23014. SHN 21-12
  23015. MJN EOV1 IF LABELED
  23016. LDD FM
  23017. SHN -6
  23018. SBN /MTX/TFSI+1
  23019. MJN EOV1 IF I OR SI FORMAT
  23020. SBN /MTX/TFLI-/MTX/TFSI-1
  23021. NJN EOV2 IF NOT LI FORMAT
  23022. EOV1 LDN 1 SET POSITION IN LABEL BUFFER
  23023. STD T6
  23024. LDC =H*EOV1*+40000 SET *EOV1*
  23025. RJM CCB
  23026. RJM HTR
  23027. UJN EOVX RETURN
  23028. EVO SPACE 4,10
  23029. ** EVO - END OF VOLUME - 2.
  23030. *
  23031. * USES T6.
  23032. *
  23033. * CALLS CCB, SFL.
  23034.  
  23035.  
  23036. EVO1 LDN 0 INDICATE NO WRITE
  23037.  
  23038. EVO SUBR ENTRY/EXIT
  23039. LDM IVSN
  23040. ZJN EVO1 IF NEXT VSN NOT KNOWN
  23041. LDM EVSN+4
  23042. SHN 21-5
  23043. MJN EVO1 IF NEXT VSN IS SCRATCH
  23044. LDN 1 SET POSITION IN LABEL BUFFER
  23045. STD T6
  23046. LDC =H*EOV2*+40000 SET EOV2
  23047. RJM CCB
  23048. LDC IVSN+60000 COPY VSN
  23049. RJM CCB
  23050. LDC 70D SPACE FILL REMAINDER
  23051. RJM SFL
  23052. LDN 1 INDICATE WRITE REQUIRED
  23053. UJN EVOX RETURN
  23054. EOF SPACE 4,10
  23055. ** EOF - WRITE END OF FILE LABEL.
  23056. *
  23057. * USES T6.
  23058. *
  23059. * CALLS CCB, HTR.
  23060.  
  23061.  
  23062. EOF2 LDN 0 INDICATE NO WRITE
  23063.  
  23064. EOF SUBR ENTRY/EXIT
  23065. LDD LT
  23066. SHN 21-12
  23067. MJN EOF1 IF LABELED
  23068. LDD FM
  23069. SHN -6
  23070. SBN /MTX/TFSI+1
  23071. MJN EOF1 IF I OR SI FORMAT
  23072. SBN /MTX/TFLI-/MTX/TFSI-1
  23073. NJN EOF2 IF NOT LI FORMAT
  23074. EOF1 LDN 1 SET POSITION IN LABEL BUFFER
  23075. STD T6
  23076. LDC =H*EOF1*+40000 SET *EOF1*
  23077. RJM CCB
  23078. RJM HTR
  23079. UJN EOFX RETURN
  23080. EFO SPACE 4,10
  23081. ** EFO - PROCESS EOF2 - EOF9.
  23082. *
  23083. * CALLS PSL.
  23084.  
  23085.  
  23086. EFO SUBR ENTRY/EXIT
  23087. LDC 3REOF
  23088. RJM PSL
  23089. UJN EFOX RETURN
  23090. HDR SPACE 4,10
  23091. ** HDR - *HDR1* PROCESSOR.
  23092. *
  23093. * CALLS CCB, HTR.
  23094.  
  23095.  
  23096. HDR SUBR ENTRY/EXIT
  23097. LDN 1 SET POSITION IN LABEL BUFFER
  23098. STD T6
  23099. LDC =H*HDR1*+40000 SET *HDR1*
  23100. RJM CCB
  23101. RJM HTR
  23102. RJM WUC WRITE UNIT DESCRIPTOR TABLE CONDITIONALLY
  23103. UJN HDRX RETURN
  23104. OHD SPACE 4,10
  23105. ** OHD - PROCESS HDR2-HDR9.
  23106. *
  23107. * CALLS PSL.
  23108.  
  23109.  
  23110. OHD SUBR ENTRY/EXIT
  23111. LDC 3RHDR
  23112. RJM PSL
  23113. UJN OHDX RETURN
  23114. UHL SPACE 4,10
  23115. ** UHL - USER FILE HEADER LABEL.
  23116. *
  23117. * CALLS PUL.
  23118.  
  23119.  
  23120. UHL SUBR ENTRY/EXIT
  23121. LDC 3RUHL
  23122. RJM PUL
  23123. UJN UHLX RETURN
  23124. UTL SPACE 4,10
  23125. ** UTL - USER TRAILER LABELS.
  23126. *
  23127. * CALLS PUL.
  23128.  
  23129.  
  23130. UTL SUBR ENTRY/EXIT
  23131. LDC 3RUTL
  23132. RJM PUL
  23133. UJN UTLX RETURN
  23134. UVL SPACE 4,10
  23135. ** UVL - USER VOLUME HEADER LABEL.
  23136. *
  23137. * CALLS PSL.
  23138.  
  23139.  
  23140. UVL2 LDN 1R2 RESET SEARCH TO BEGIN AT XXX2
  23141. STM PSLA
  23142. SOM PSLB
  23143. LDN 0
  23144. STD PA
  23145.  
  23146. UVL SUBR ENTRY/EXIT
  23147. LDD PA
  23148. NJN UVL1 IF NOT FIRST ENTRY
  23149. LDN 1R1 SET SEARCH TO BEGIN AT UVL1
  23150. STM PSLA
  23151. AOM PSLB
  23152. UVL1 LDC 3RUVL SET LABEL TO SEARCH FOR
  23153. RJM PSL
  23154. ZJN UVL2 IF NO UVL LABELS
  23155. UJN UVLX RETURN
  23156. VOL SPACE 4,10
  23157. ** VOL - VOLUME HEADER LABEL.
  23158. *
  23159. * USES T6, T7, CM - CM+4, CN - CN+4.
  23160. *
  23161. * CALLS CCB, CLF, GUD, SFL, SLC.
  23162.  
  23163.  
  23164. VOL1 AOD PB ADVANCE SECTION
  23165. LDN 0 SET LAST GOOD BLOCK TAPE MARK
  23166. STD LG
  23167. STD LG+1
  23168.  
  23169. VOL SUBR ENTRY/EXIT
  23170. LDD UP SET LAST OPERATION WRITE FLAG
  23171. SCN 20
  23172. LMN 20
  23173. STD UP
  23174. LDD EI
  23175. NJN VOL2 IF ERROR RECOVERY IN PROGRESS
  23176. LDD DS
  23177. LPN 4
  23178. ZJN VOL1 IF NOT LOAD POINT
  23179. VOL2 LDN 1 SET POSITION IN LABEL BUFFER
  23180. STD T6
  23181. LDC =H*VOL1*+40000 SET *VOL1*
  23182. RJM CCB
  23183. LDN 11D COPY VSN
  23184. STD T7
  23185. LDN 6
  23186. RJM CLF
  23187. LDN 55D COPY VOLUME ACCESSIBILITY FROM *UGNU*
  23188. STD T7
  23189. LDN 1
  23190. RJM CLF
  23191. LDN 20D SPACE FILL LABEL
  23192. RJM SFL
  23193. LDN 6 SPACE FILL LABEL
  23194. RJM SFL
  23195. LDN 8D GET FAMILY ORDINAL
  23196. STD T7
  23197. RJM GUD
  23198. NJN VOL3 IF NOT NULL FAMILY
  23199. LDN 1 SUBSTITUTE DEFAULT FAMILY
  23200. VOL3 STD CN SAVE FAMILY ORDINAL
  23201. LDK FOTP READ FOT POINTERS
  23202. CRD CM
  23203. LDD CM CALCULATE FOT ENTRY ADDRESS
  23204. SHN 14
  23205. ADD CM+1
  23206. ADD CN
  23207. CRD CN
  23208. LDC 70000+CN
  23209. RJM CCB
  23210. LDN 1 COPY USER NAME
  23211. STD T7
  23212. LDN 7
  23213. RJM CLF
  23214. LDN 28D SPACE FILL
  23215. RJM SFL
  23216. LDN 1R1 SET LABELS ARE ANSI STANDARD
  23217. RJM SLC
  23218. LDN 1 SET TO WRITE BLOCK
  23219. LJM VOLX RETURN
  23220. CWS SPACE 4,10
  23221. ** CWS - CLEAR WRITE STATUS.
  23222.  
  23223.  
  23224. CWS SUBR ENTRY/EXIT
  23225. LDD UP
  23226. SCN 30 CLEAR WRITE OPERATION AND EOR/EOF FLAGS
  23227. STD UP
  23228. LDN 0
  23229. UJN CWSX RETURN
  23230. ERRNZ /MTX/WLTM
  23231. TITLE CHARACTER PROCESSING SUBROUTINES.
  23232. SPACE 4,10
  23233. ** DIRECT CELL USAGE IN FOLLOWING ROUTINES.
  23234. *
  23235. * (T5) NUMBER OF CHARACTERS.
  23236. * (T6) CHARACTER POSITON IN *BUF*.
  23237. * (T7) CHARACTER POSITON IN *UDT*.
  23238. *
  23239. * ALL CHARACTER POSITIONS ARE REFERENCED STARTING WITH *1*.
  23240. * THUS, THE CHARACTER POSITION VALUES BEING USED TO ACCESS
  23241. * *BUF* MAY BE REFERENCED DIRECTLY TO THE LABEL STANDARD.
  23242. CCB SPACE 4,10
  23243. ** CCB - COPY CHARACTER BUFFER.
  23244. * COPYS THE SPECIFIED NUMBER OF CHARACTERS FROM THE SPECIFIED
  23245. * FIELD TO THE LABEL BUFFER. TRAILING ZEROS ARE BLANK FILLED.
  23246. *
  23247. * ENTRY (A, 21 - 14) = NUMBER OF CHARACTERS.
  23248. * (A, 13 - 0) = ADDRESS OF BUFFER TO MOVE FROM.
  23249. * (T6) = CHARACTER POSITION IN *BUF*.
  23250. *
  23251. * CALLS SFL, SLC.
  23252.  
  23253.  
  23254. CCB2 LDD T5 SPACE FILL LABEL
  23255. RJM SFL
  23256.  
  23257. CCB SUBR ENTRY/EXIT
  23258. STD T4 SAVE BUFFER ADDRESS
  23259. SHN -14
  23260. STD T5 SAVE CHARACTER COUNT
  23261. CCB1 LDI T4 MOVE CHARACTER
  23262. SHN -6
  23263. ZJN CCB2 IF 00 CHARACTER
  23264. RJM SLC STORE CHARACTER
  23265. SOD T5
  23266. ZJN CCBX IF ALL CHARACTERS MOVED
  23267. LDI T4 MOVE CHARACTER
  23268. LPN 77
  23269. ZJN CCB2 IF 00 CHARACTER
  23270. RJM SLC
  23271. SOD T5
  23272. ZJN CCBX IF ALL CHARACTERS MOVED
  23273. AOD T4
  23274. UJN CCB1 LOOP
  23275. CLF SPACE 4,10
  23276. ** CLF - COPY LABEL FIELD FROM UDT.
  23277. * IF FIRST CHARACTER FIELD IS ZERO, FIELD IS SPACE FILLED.
  23278. *
  23279. * ENTRY (A) = NUMBER OF CHARACTERS TO MOVE.
  23280. * (T6) = CHARACTER POSITION IN *BUF*.
  23281. * (T7) = CHARACTER POSITION IN *UDT*.
  23282. *
  23283. * CALLS GUD, SFL, SLC.
  23284.  
  23285.  
  23286. CLF SUBR ENTRY/EXIT
  23287. STD T5
  23288. RJM GUD
  23289. NJN CLF2 IF SPACE FILL NOT NEEDED
  23290. LDD T5 ADVANCE CHARACTER POSITION IN *UDT*
  23291. RAD T7
  23292. LDD T5 SPACE FILL
  23293. RJM SFL
  23294. UJN CLFX RETURN
  23295.  
  23296. CLF1 RJM GUD GET UNIT DESCRIPTOR CHARACTER
  23297. CLF2 RJM SLC STORE LABEL CHARACTER
  23298. SOD T5
  23299. NJN CLF1 IF STILL MORE CHARACTERS TO MOVE
  23300. UJN CLFX RETURN
  23301. DCV SPACE 4,10
  23302. ** DCV - DECIMAL CONVERT TO A 6 DIGIT NUMBER.
  23303. *
  23304. * ENTRY (CM+3 - CM+4) = QUANITY TO BE CONVERTED.
  23305. *
  23306. * EXIT (DCB+2 - DCB+4) = DISPLAY CODE DECIMAL NUMBER.
  23307. *
  23308. * MACROS MONITOR.
  23309.  
  23310.  
  23311. DCV SUBR ENTRY/EXIT
  23312. LDN 0 PRESET TO CONVERT NUMBER
  23313. STD CM+1
  23314. STD CM+2
  23315. LDD MA
  23316. CWD CM
  23317. MONITOR RDCM REQUEST DATA CONVERSION
  23318. LDD MA
  23319. CRD CM
  23320. LDD CM+4 REMOVE *.* FROM DATA
  23321. STM DCB+4
  23322. LDD CM+3
  23323. LPN 77
  23324. SHN 14
  23325. LMD CM+2
  23326. SHN 6
  23327. STM DCB+3
  23328. LPC 770000
  23329. LMD CM+1
  23330. SHN 6
  23331. STM DCB+2
  23332. LDC DCB+1 REMOVE SPACES
  23333. STD T1
  23334. DCV1 AOD T1 ADVANCE TO NEXT BYTE
  23335. LMC DCB+5
  23336. ZJN DCV3 IF ALL SPACES
  23337. LDI T1
  23338. ZJN DCV2 IF ZERO
  23339. LMC 2R
  23340. NJN DCV3 IF NOT * *
  23341. DCV2 LDC 2R00
  23342. STI T1
  23343. UJN DCV1 LOOP
  23344.  
  23345. DCV3 SHN -6
  23346. NJN DCV4 IF NOT * *
  23347. LCN -1R0+1R
  23348. SHN 6
  23349. RAI T1
  23350. DCV4 LJM DCVX RETURN
  23351. GUD SPACE 4,10
  23352. ** GUD - GET UNIT DESCRIPTOR CHARACTER.
  23353. *
  23354. * ENTRY (T7) = CHARACTER POSITION OF NEXT CHARACTER.
  23355. *
  23356. * EXIT (A) = CHARACTER.
  23357. * (T7) = INCREMENTED.
  23358. *
  23359. * USES T1.
  23360.  
  23361.  
  23362. GUD1 LDM UDTB-1,T1
  23363. LPN 77
  23364.  
  23365. GUD SUBR ENTRY/EXIT
  23366. AOD T7
  23367. SBN 1
  23368. SHN 21
  23369. STD T1
  23370. SHN -21
  23371. ZJN GUD1 IF EVEN CHARACTER POSITION
  23372. LDM UDTB,T1
  23373. SHN -6
  23374. UJN GUDX RETURN
  23375. HTR SPACE 4,10
  23376. ** HTR - GENERATE HEADER/TRAILER LABEL INFORMATION.
  23377. *
  23378. * EXIT (A) = 1. (INDICATE BLOCK WRITE)
  23379. *
  23380. * CALLS CLF, C2D, DCV, SFL.
  23381.  
  23382.  
  23383. HTR SUBR ENTRY/EXIT
  23384. LDN 5 GENERATE FILE IDENTIFIER
  23385. STD T6
  23386. LDN 21D
  23387. STD T7
  23388. LDN 17D
  23389. RJM CLF
  23390. LDN 41D COPY SET IDENTIFCATION
  23391. STD T7
  23392. LDN 6
  23393. RJM CLF
  23394. LDM UDTB+22 CONVERT SECTION NUMBER
  23395. LPN 77
  23396. STD CM+3
  23397. LDM UDTB+23
  23398. STD CM+4
  23399. RJM DCV
  23400. LDC /MTX/UUDTL*10D+7
  23401. STD T7
  23402. LDN 4
  23403. RJM CLF
  23404. LDM UDTB+27 CONVERT SEQUENCE NUMBER
  23405. LPN 77
  23406. STD CM+3
  23407. LDM UDTB+30
  23408. STD CM+4
  23409. RJM DCV
  23410. LDC /MTX/UUDTL*10D+7
  23411. STD T7
  23412. LDN 4
  23413. RJM CLF
  23414. LDM UDTB+34 CONVERT GENERATION NUMBER
  23415. LPN 77
  23416. STD CM+3
  23417. LDM UDTB+35
  23418. STD CM+4
  23419. RJM DCV
  23420. LDC /MTX/UUDTL*10D+7
  23421. STD T7
  23422. LDN 4
  23423. RJM CLF
  23424. LDM UDTB+33 CONVERT GENERATION VERSION NUMBER
  23425. LPN 77
  23426. SHN 14
  23427. LMM UDTB+34
  23428. SHN -6
  23429. STD CM+4
  23430. LDN 0
  23431. STD CM+3
  23432. RJM DCV
  23433. LDC /MTX/UUDTL*10D+9D
  23434. STD T7
  23435. LDN 2
  23436. RJM CLF
  23437. LDN JDAL SET CREATION DATE
  23438. CRM DCB,ON
  23439. LDC /MTX/UUDTL*10D+6
  23440. STD T7
  23441. RJM SCL SET CREATION DATE CENTURY
  23442. LDN 5
  23443. RJM CLF
  23444. LDC 66D SET EXPIRATION DATE
  23445. STD T7
  23446. RJM SCL SET EXPIRATION DATE CENTURY
  23447. LDN 5
  23448. RJM CLF
  23449. LDN 47D SET ACCESSIBILITY CODE
  23450. STD T7
  23451. LDN 1
  23452. RJM CLF
  23453. LDD BL CONVERT BLOCK COUNT
  23454. STD CM+3
  23455. LDD BL+1
  23456. STD CM+4
  23457. RJM DCV
  23458. LDC /MTX/UUDTL*10D+5
  23459. STD T7
  23460. LDN 6
  23461. RJM CLF
  23462. LDD MA SET OPERATING SYSTEM NAME
  23463. CWM HTRA,ON
  23464. SBN 1
  23465. CRM DCB,ON
  23466. LDC /MTX/UUDTL*10D+1
  23467. STD T7
  23468. LDN 10D
  23469. RJM CLF
  23470. LDD EO SET EST ORDINAL WRITTEN ON
  23471. SHN -3 POSITION UPPER DIGITS
  23472. RJM C2D
  23473. STM DCB
  23474. LDD EO PROCESS LOWER DIGIT
  23475. LPN 7
  23476. ADN 1R0
  23477. SHN 6
  23478. STM DCB+1
  23479. LDC /MTX/UUDTL*10D+1
  23480. STD T7
  23481. LDN 3
  23482. RJM CLF
  23483. LDN 7 SPACE FILL
  23484. RJM SFL
  23485. LDN 1 INDICATE TO WRITE BLOCK
  23486. LJM HTRX RETURN
  23487.  
  23488.  
  23489. HTRA DATA 10HNOS "VERNUM"-
  23490. PSL SPACE 4,10
  23491. ** PSL - PROCESS SEQUENTIAL TYPE OPTIONAL LABELS.
  23492. * (HDR2 - HDR9, EOF2 - EOF9, UVL1 - UVL9)
  23493. *
  23494. * ENTRY (A) = 3 CHARACTER LABEL NAME TO SEARCH FOR.
  23495. * (PA) = FOURTH CHARACTER OF LABEL - 2.
  23496. *
  23497. * EXIT (A) = (PA) = 0 IF NO LABEL.
  23498. *
  23499. * CALLS ELA.
  23500.  
  23501.  
  23502. PSL4 STD PA
  23503.  
  23504. PSL SUBR ENTRY/EXIT
  23505. SHN 14
  23506. STM PSLC
  23507. SHN -6
  23508. SCN 77
  23509. LMC 1R2
  23510. PSLA EQU *-1
  23511. * LMC 1R1 (UVL LABELS)
  23512. ADD PA
  23513. STM PSLD
  23514. LDN ZERL SET TO START AT BEGINNING OF BUFFER
  23515. CRD T5
  23516. LDD PA
  23517. PSLB LMN 9D-1
  23518. * LMN 9D (UVL LABELS)
  23519. ZJN PSL4 IF MAXIMUM LABELS
  23520. PSL1 RJM ELA
  23521. ZJN PSL4 IF NO EXTENDED LABEL OR END OF BUFFER
  23522. CRD CN
  23523. ADN 1
  23524. CRD CM
  23525. LDD CN+4
  23526. ZJN PSL4 IF END OF LABELS IN BUFFER
  23527. LMC 80D
  23528. NJN PSL3 IF NOT CORRECT LENGTH
  23529. LDD CM
  23530. LMC *
  23531. PSLC EQU *-1
  23532. NJN PSL2 IF NOT CORRECT LABEL
  23533. LDD CM+1
  23534. LMC *
  23535. PSLD EQU *-1
  23536. NJN PSL2 IF NOT CORRECT LABEL
  23537. LDN 10 READ LABEL
  23538. STD T5
  23539. RJM ELA
  23540. ADN 1
  23541. CRM BUF,T5
  23542. LCN 1 SET WRITE LABEL
  23543. LJM PSLX RETURN
  23544.  
  23545. PSL2 LDN 11 INCREMENT TO NEXT LABEL BLOCK
  23546. RAD T7
  23547. SHN -14
  23548. RAD T6
  23549. LJM PSL1 LOOP FOR NEXT LABEL
  23550.  
  23551. PSL3 LDN /MTX/IXL INCORRECT CHARACTER COUNT IN HEADER
  23552. LJM RET3 RETURN ERROR CODE
  23553. PUL SPACE 4,10
  23554. ** PUL - PROCESS USER LABELS.
  23555. *
  23556. * ENTRY (A) = 3 CHARACTER LABEL NAME TO SEARCH FOR.
  23557. * (PA) = PARTICULAR LABEL OF TYPE TO TAKE.
  23558. *
  23559. * EXIT (PA) = (A) = 0, IF NO LABEL.
  23560. *
  23561. * CALLS ELA.
  23562.  
  23563.  
  23564. PUL4 STD PA
  23565.  
  23566. PUL SUBR ENTRY/EXIT
  23567. SHN 14
  23568. STM PULA
  23569. SHN -14
  23570. STM PULB
  23571. LDN ZERL
  23572. CRD T5
  23573. LDD PA
  23574. LMD HN
  23575. ZJN PUL4 IF MAXIMUM NUMBER OF USER LABELS
  23576. PUL1 RJM ELA
  23577. ZJN PUL4 IF NO EXTENDED LABELS OR END OF BUFFER
  23578. CRD CN
  23579. ADN 1
  23580. CRD CM
  23581. LDD CN+4
  23582. ZJN PUL4 IF END OF LABELS IN BUFFER
  23583. LMC 80D
  23584. NJN PUL3 IF NOT CORRECT LENGTH
  23585. LDD CM
  23586. LMC *
  23587. PULA EQU *-1
  23588. NJN PUL2 IF NOT CORRECT LABEL
  23589. LDD CM+1
  23590. SHN -6
  23591. LMC *
  23592. PULB EQU *-1
  23593. NJN PUL2 IF NOT CORRECT LABEL
  23594. AOD T5
  23595. SBN 1
  23596. LMD PA
  23597. NJN PUL2 IF NOT CORRECT LABEL BLOCK
  23598. LDN 10 READ LABEL
  23599. STD T5
  23600. RJM ELA
  23601. ADN 1
  23602. CRM BUF,T5
  23603. LCN 1
  23604. LJM PULX RETURN
  23605.  
  23606. PUL2 LDN 11 INCREMENT TO NEXT BLOCK
  23607. RAD T7
  23608. SHN -14
  23609. RAD T6
  23610. LJM PUL1 LOOP
  23611.  
  23612. PUL3 LDN /MTX/IXL INCORRECT CHARACTER COUNT IN HEADER
  23613. LJM RET3 RETURN ERROR CODE
  23614. RUD SPACE 4,10
  23615. ** RUD - READ UDT VSN AND LABEL INFORMATION.
  23616. *
  23617. * EXIT (A) = 0 IF NOT AT MAGNET CP.
  23618. * UDT INFORMATION READ IF AT MAGNET CP.
  23619. *
  23620. * CALLS UDA.
  23621.  
  23622.  
  23623. RUD SUBR ENTRY/EXIT
  23624. RJM UDA
  23625. ZJN RUDX IF NOT AT MAGNET CP
  23626. CRM EVSN,T1 READ VSN AND LABEL INFORMATION
  23627. UJN RUDX RETURN
  23628. UDA SPACE 4,10
  23629. ** UDA - SET UDT ADDRESS OF VSN AND LABEL PARAMETERS.
  23630. *
  23631. * EXIT (A) = ADDRESS OF *UESN*.
  23632. * (T1) = NUMBER OF UDT WORDS IN BLOCK.
  23633. *
  23634. * CALLS UAD.
  23635.  
  23636.  
  23637. UDA1 LDN 0
  23638.  
  23639. UDA SUBR ENTRY/EXIT
  23640. LDM CECB
  23641. LPN 77
  23642. NJN UDA1 IF NOT AT MAGNET CP
  23643. LDN /MTX/UUDTL+2
  23644. STD T1
  23645. RJM UAD
  23646. ADK /MTX/UESN
  23647. ERRNZ /MTX/UISN-/MTX/UESN-1
  23648. ERRNZ /MTX/UUFN-/MTX/UISN-1
  23649. UJN UDAX RETURN
  23650. WUC SPACE 4,15
  23651. ** WUC - WRITE UNIT DESCRIPTOR TABLE CONDITIONALLY.
  23652. * UPDATE UDT CREATION DATE FOR SYMBOLIC ACCESS TMS TAPES.
  23653. *
  23654. * EXIT CREATION DATE FROM LABEL WRITTEN INTO *UDT* IF TAPE IS
  23655. * SYMBOLIC ACCESS.
  23656. *
  23657. * NOTE (A) IS PRESERVED.
  23658. *
  23659. * USES CM - CM+4.
  23660. *
  23661. * CALLS UAD, WUD.
  23662.  
  23663.  
  23664. WUC SUBR ENTRY/EXIT
  23665. STM WUCA+1 SAVE (A)
  23666. SHN -14
  23667. ADC LDCI
  23668. STM WUCA
  23669. LDM CECB CHECK CONTROL POINT
  23670. LPN 77
  23671. NJN WUC1 IF NOT AT MAGNET CP
  23672. RJM UAD GET UDT ADDRESS
  23673. ADN /MTX/UTMS
  23674. CRD CM CHECK FOR TMS TAPE, SYMBOLIC ACCESS
  23675. LDD CM+4
  23676. SHN 21-10
  23677. PJN WUC1 IF NOT SYMBOLIC ACCESS
  23678. LDM WUCB+0 SET CREATION DATE
  23679. STM WUCC+0
  23680. LDM WUCB+1
  23681. STM WUCC+1
  23682. LDM WUCC+2
  23683. LPN 77
  23684. STM WUCC+2
  23685. LDM WUCB+2
  23686. SCN 77
  23687. RAM WUCC+2
  23688. RJM WUD WRITE UNIT DESCRIPTOR TABLE
  23689. WUC1 BSS 0
  23690. WUCA LDC * RESTORE (A)
  23691. LJM WUCX RETURN
  23692.  
  23693. WUCB EQU BUF+42D/2 CREATION DATE IN LABEL BUFFER
  23694. *WUCC EQU UDTB+/MTX/UDAT*5-/MTX/UUFN*5 CREATION DATE IN UDT
  23695. WUD SPACE 4,10
  23696. ** WUD - WRITE UDT VSN AND LABEL INFORMATION.
  23697. *
  23698. * CALLS UDA.
  23699.  
  23700.  
  23701. WUD SUBR ENTRY/EXIT
  23702. RJM UDA GET UDT LABEL ADDRESS ADDRESS
  23703. ZJN WUDX IF NOT AT MAGNET CP
  23704. CWM EVSN,T1
  23705. UJN WUDX RETURN
  23706. SCL SPACE 4,10
  23707. ** SCL - SET CENTURY IN LABEL.
  23708. * GENERATES THE *ISO* STANDARD CENTURY CHARACTER, BASED ON THE
  23709. * YEAR IN THE *UDT*, AND PLACES IT IN THE OUTPUT BUFFER.
  23710. *
  23711. * ENTRY (T7) = CHARACTER POSITION OF YEAR IN *UDT*.
  23712. * (T6) = CHARACTER POSITION IN OUTPUT BUFFER.
  23713. *
  23714. * EXIT FILL CHARACTER PLACED IN OUTPUT BUFFER,
  23715. * (* * FOR 19XX YEARS, *0* FOR 20XX YEARS).
  23716. * (T7) = (A) = ORIGINAL (T7).
  23717. * (T6) INCREMENTED.
  23718. *
  23719. * CALLS GUD, SLC.
  23720. *
  23721. * USES T7.
  23722.  
  23723.  
  23724. SCL1 LDN 1R SPACE FILL
  23725. SCL2 RJM SLC STORE LABEL CHARACTER
  23726. SOD T7
  23727.  
  23728. SCL SUBR ENTRY/EXIT
  23729. RJM GUD GET TENS DIGIT OF YEAR
  23730. SBN 1R7
  23731. PJN SCL1 IF YEAR .LE. 1999
  23732. LDN 1R0 ZERO FILL FOR NEXT CENTURY
  23733. UJN SCL2 STORE CHARACTER AND RETURN
  23734. SLC SPACE 4,10
  23735. ** SLC - STORE LABEL CHARACTER.
  23736. *
  23737. * ENTRY (T6) = CHARACTER POSITION IN *BUF*.
  23738. * (A) = CHARACTER.
  23739. *
  23740. * EXIT (T6) = INCREMENTED.
  23741. *
  23742. * USES T1.
  23743.  
  23744.  
  23745. SLC1 LDM BUF-1,T1
  23746. SCN 77
  23747. LMD T0
  23748. SLC2 STM BUF-1,T1
  23749.  
  23750. SLC SUBR ENTRY/EXIT
  23751. STD T0 SAVE CHARACTER
  23752. AOD T6 INCREMENT POSITION
  23753. SHN 21
  23754. STD T1
  23755. SHN -21
  23756. NJN SLC1 IF EVEN CHARACTER
  23757. LDM BUF-1,T1
  23758. LPN 77
  23759. SHN 14
  23760. LMD T0
  23761. SHN 6
  23762. UJN SLC2 STORE CHARACTER
  23763. SFL SPACE 4,10
  23764. ** SFL - SPACE FILL LABEL.
  23765. *
  23766. * (A) = NUMBER OF SPACES.
  23767. * (T6) = FIRST CHARACTER OF LABEL FIELD.
  23768. *
  23769. * CALLS SLC.
  23770.  
  23771.  
  23772. SFL SUBR ENTRY/EXIT
  23773. STD T5
  23774. SFL1 LDN 1R
  23775. RJM SLC STORE LABEL CHARACTER
  23776. SOD T5
  23777. NJN SFL1 IF STILL MORE CHARACTERS TO FILL
  23778. UJN SFLX RETURN
  23779. SPACE 4,10
  23780. ** COMMON DECKS.
  23781.  
  23782.  
  23783. *CALL COMPC2D
  23784. TITLE HARDWARE PROCESSING SUBROUTINES.
  23785. WTM SPACE 4,10
  23786. ** WTM - WRITE TAPE MARKS.
  23787. *
  23788. * CALLS FCN, STW, WTE.
  23789.  
  23790.  
  23791. WTM SUBR ENTRY/EXIT
  23792. WTM0 LDN 2 WAIT NOT BUSY
  23793. RJM STW
  23794. WTMA EQU *-1
  23795. * RJM /PRESET/GPS (IF CTS)
  23796. WTMB PSN
  23797. * MJN WTM2 IF COMMAND RETRY (CTS)
  23798. * LDD DS CHECK FOR READY AND WRITE ENABLE
  23799. LPC 201
  23800. LMC 201
  23801. NJN WTM1 IF NOT READY OR NO WRITE ENABLE
  23802.  
  23803. * WRITE TAPE MARK.
  23804.  
  23805. LDN F0051
  23806. RJM FCN
  23807. * LDN 0
  23808. WTM1 RJM WTE CHECK AND PROCESS ERRORS
  23809. UJN WTMX RETURN
  23810.  
  23811. WTM2 LDN F0002
  23812. RJM /PRESET/ICF ISSUE CONTINUE FUNCTION
  23813. UJP WTM0 WAIT FOR END OF OPERATION
  23814. SPACE 4,10
  23815. TADD TSAD ADDRESS RELOCATION TABLE
  23816.  
  23817. USE BUFFERS
  23818.  
  23819. ERROVL
  23820.  
  23821. EVSN EQU * *UESN*
  23822. IVSN EQU EVSN+5 *UISN*
  23823. UDTB EQU IVSN+5 UDT LABEL PARAMETERS (*UUFN* - *UDAT*)
  23824. DCB EQU UDTB+/MTX/UUDTL*5 DATA CONVERSION BUFFER
  23825.  
  23826. WUCC EQU UDTB+/MTX/UDAT*5-/MTX/UUFN*5 CREATION DATE IN UDT
  23827. TITLE PRESET.
  23828. PRS SPACE 4,10
  23829. ** PRS - PRESET.
  23830. *
  23831. * CALLS MCH.
  23832.  
  23833.  
  23834. PRS LDC PRSA MODIFY CHANNELS
  23835. RJM MCH
  23836. LDD HP
  23837. SHN 21-7
  23838. PJP PRS2 IF NOT CTS
  23839. LDC LDNI+CCW/10000
  23840. STM /WRITE/WCTA DO CODE CONVERSION
  23841. LDN CLBL
  23842. STM LTYP+1 LENGTH OF LABEL
  23843. LDC LDNI+0
  23844. STM /WRITE/WCTD
  23845. STM /WRITE/WCTD+1
  23846. ISTORE /WRITE/WCTE,(UJN /WRITE/WCT5)
  23847. LDC 6321 BITS IN GENERAL STATUS TO CHECK
  23848. STM /PRESET/WFEA
  23849. LDC /PRESET/GPS
  23850. STM WTMA
  23851. ISTORE WTMB,(MJN WTM2)
  23852. LDK CPEL-1
  23853. STD T1
  23854. PRS1 LDM .CPE,T1 REPLACE *WTE* WITH *CPE*
  23855. STM WTEX,T1
  23856. SOD T1
  23857. PJN PRS1 IF MORE CODE TO MOVE
  23858. ISTORE ERAA,(UJN ERA1) SKIP ERASE GAP
  23859. ISTORE /WRITE/WCTJ,(UJN /WRITE/WRT7) SKIP READ CM BUFFER
  23860. LDC /WRITE/WCT2 SKIP CODE CONVERSION
  23861. STM /WRITE/WCTI
  23862. ISTORE /WRITE/WCTG,(UJN /WRITE/WCT7) SKIP READ OF CM BUFFER
  23863. ISTORE /WRITE/WCTM,(UJN /WRITE/WRT7) SKIP BLOCK COUNT UPDATE
  23864. UJN PRS3 SET SRU INCREMENT
  23865.  
  23866. PRS2 LDC LDNI+0
  23867. STM /WRITE/WRTC
  23868. STM /WRITE/WRTC+1
  23869. LDM PRSC
  23870. STM /WRITE/WRTD
  23871. LDM PRSD
  23872. STM /WRITE/WRTG
  23873. LDC 4625
  23874. STM //WEOA
  23875. PRS3 LDC /SRU/ITCL*100 SET SRU INCREMENT
  23876. STM //CECA
  23877. LDM PRSB
  23878. STM /WRITE/WRTH
  23879. LJM PRSX RETURN
  23880.  
  23881.  
  23882. PRSA CHTB CHANNEL TABLE
  23883.  
  23884. PRSB BSS 0
  23885. LOC /WRITE/WRTH
  23886. UJN /WRITE/WRT7 CALCULATE DATA CHECKSUM
  23887. LOC *O
  23888.  
  23889. PRSC BSS 0
  23890. LOC /WRITE/WRTD
  23891. UJN /WRITE/WRT3.1 WRITE LABELS
  23892. LOC *O
  23893.  
  23894. PRSD BSS 0
  23895. LOC /WRITE/WRTG
  23896. UJN /WRITE/WRT5 WRITE LABELS
  23897. LOC *O
  23898. TITLE CTS-SPECIFIC ROUTINES.
  23899. CPE SPACE 4,15
  23900. ** CPE - CHECK AND PROCESS WRITE TAPE MARK ERRORS.
  23901. *
  23902. * THIS ROUTINE OVERLAYS *WTE* FOR CTS.
  23903. *
  23904. * ENTRY (A) .EQ. 0 IF STATUS SHOULD BE CHECKED.
  23905. * (A) .NE. 0 IF NOT READY OR NO WRITE ENABLE.
  23906. *
  23907. * CALLS *CEM*, *CWP*.
  23908. *
  23909. * MACROS CALL.
  23910.  
  23911.  
  23912. .CPE BSS 0
  23913. LOC WTEX
  23914. CPE SUBR ENTRY/EXIT
  23915. ZJN CPE2 IF CHECK STATUS
  23916. LPN 1
  23917. NJN CPE1 IF NOT READY
  23918. LDN 3
  23919. STD EP SET SUB ERROR CODE
  23920. LDN /MTX/NWE
  23921. UJN CPE1.1 RETURN
  23922.  
  23923. CPE1 LDN /MTX/RDR NOT READY
  23924. STD EC
  23925. CALL CEM CALL ERROR HANDLER
  23926. LDD EC
  23927. CPE1.1 LJM RET3 RETURN
  23928.  
  23929. CPE2 STD EC
  23930. CPE3 RJM /PRESET/WFE WAIT FOR END OF OPERATION
  23931. MJN CPE5 IF COMMAND RETRY
  23932. LMN 20 EXPECT TAPE MARK STATUS
  23933. ZJN CPE4 IF NO ERROR
  23934. LDN /MTX/STE STATUS ERROR
  23935. CPE4 ADD EI
  23936. ZJN CPEX IF NO ERROR OR PREVIOUS ERROR
  23937. CALL CWP WRITE ERROR PROCESSOR
  23938. UJP CPEX RETURN
  23939.  
  23940. CPE5 LDN F0002
  23941. RJM /PRESET/ICF ISSUE CONTINUE FUNCTION
  23942. UJN CPE3 WAIT FOR END OF OPERATION
  23943.  
  23944. CPEL EQU *-CPEX LENGTH OF *CPE*
  23945. ERRNG WTEB-* *CPE* LARGER THAN *WTE*
  23946.  
  23947. LOC *O
  23948. OVERLAY (CODE CONVERT LABEL TO WRITE.),(ERLB+5),P
  23949. CCW SPACE 4,10
  23950. ** CCW - CODE CONVERT LABEL TO WRITE TO CTS.
  23951. *
  23952. * ENTRY (MD) = MODE FUNCTION.
  23953. * (DNCV) = CONVERSION MODE.
  23954. * (CF) = 63/64 CHARACTER SET FLAG.
  23955. *
  23956. * USES T1, T2, T3.
  23957. *
  23958. * CALLS GCC, SCC.
  23959.  
  23960.  
  23961. ENTRY CCW
  23962. CCW SUBR ENTRY/EXIT
  23963. LDD MD
  23964. SHN 21-6
  23965. PJN CCW1 IF NOT CODED
  23966. LDM DNCV
  23967. LPN 7
  23968. LMN /MTX/ANS
  23969. ZJN CCW1 IF ASCII CONVERSION MODE
  23970. LDC EBCI
  23971. STM GCCA CODE MODIFICATION FOR EBCDIC
  23972. CCW1 LDD CF
  23973. LPN 1
  23974. NJN CCW2 IF 64 CHARACTER SET
  23975. LDK 0#20
  23976. STM ANSI+ANSIA MODIFY TABLES FOR 63 CHARACTER SET
  23977. LDK 0#3A
  23978. STM ANSI+ANSIB
  23979. LDN 0
  23980. STM EBCI+EBCIA
  23981. LDK 0#7A
  23982. STM EBCI+EBCIB
  23983. CCW2 LDC 79D
  23984. STD T1 POINTER TO CHARACTER TO CONVERT
  23985. LDC 64
  23986. STD T2 POINTER TO STORE CONVERTED CHARACTER
  23987. LDN 1
  23988. STD T3 1 OF 3 POSITIONS OF 8-BIT BYTE
  23989. LDN 0
  23990. STM BUF+1,T2
  23991. CCW3 RJM GCC GET CONVERTED CHARACTER
  23992. RJM SCC STORE CONVERTED CHARACTER
  23993. SOD T1
  23994. PJN CCW3 IF MORE CHARACTERS TO CONVERT
  23995. LJM CCWX RETURN
  23996. GCC SPACE 4,15
  23997. ** GCC - GET CONVERTED CHARACTER.
  23998. *
  23999. * ENTRY (T1) = POINTER TO CHARACTER TO CONVERT.
  24000. * (T5) = CHARACTER TO CONVERT IF (T1) HAS EVEN VALUE.
  24001. *
  24002. * EXIT (T6) = CONVERTED CHARACTER.
  24003. * (T5) = NEXT CHARACTER TO CONVERT IF (T1) HAS ODD VALUE.
  24004.  
  24005.  
  24006. GCC SUBR ENTRY/EXIT
  24007. LDD T1
  24008. SHN 21-0
  24009. STD T6
  24010. PJN GCC1 IF LEFT MOST CHARACTER OF WORD
  24011. LDM BUF,T6
  24012. STD T5
  24013. LPN 77
  24014. UJN GCC2 SAVE CHARACTER TO CONVERT
  24015.  
  24016. GCC1 LDD T5
  24017. SHN -6
  24018. GCC2 STD T6 CHARACTER TO CONVERT
  24019. LDM ANSI,T6
  24020. GCCA EQU *-1
  24021. * LDM EBCI,T6 (EBCDIC)
  24022. STD T6
  24023. UJN GCCX RETURN
  24024. SCC SPACE 4,15
  24025. ** SCC - STORE CONVERTED CHARACTER.
  24026. *
  24027. * THIS ROUTINE CONVERTS ONE OF THE 80 CHARACTERS OF THE
  24028. * LABEL FROM DISPLAY CODE TO ASCII OR EBCDIC AND STORES
  24029. * IT IN THE LABEL BUFFER.
  24030. *
  24031. * ENTRY (T6) = CONVERTED CHARACTER.
  24032. * (T2) = POINTER TO STORE CHARACTER.
  24033. * (T3) = 1 0F 3 POSITIONS TO STORE 8-BIT BYTE.
  24034.  
  24035.  
  24036. SCC3 SOD T3
  24037.  
  24038. SCC SUBR ENTRY/EXIT
  24039. LDD T3
  24040. NJN SCC1 IF NOT BYTE 1 OF 3
  24041. LDD T6
  24042. SHN 4
  24043. RAM BUF,T2
  24044. LDN 2
  24045. STD T3
  24046. LCN 2
  24047. RAD T2
  24048. UJN SCCX RETURN
  24049.  
  24050. SCC1 SBN 1
  24051. NJN SCC2 IF NOT BYTE 2 OF 3
  24052. LDD T6
  24053. SHN 10
  24054. RAM BUF+1,T2
  24055. SHN -14
  24056. STM BUF,T2
  24057. UJN SCC3 UPDATE POINTER
  24058.  
  24059. SCC2 LDD T6
  24060. STM BUF+1,T2
  24061. UJP SCC3 UPDATE POINTER
  24062. ANSI SPACE 4,10
  24063. ** ATANS - TABLE TO CONVERT DISPLAY TO ASCII.
  24064.  
  24065.  
  24066. ANSI BSS 0
  24067. LOC 0
  24068. CON 0#3A COLON
  24069. ANSIA EQU *-1
  24070. * CON 0#20 (63 CHARACTER SET - SPACE)
  24071. CON 0#41 A
  24072. CON 0#42 B
  24073. CON 0#43 C
  24074. CON 0#44 D
  24075. CON 0#45 E
  24076. CON 0#46 F
  24077. CON 0#47 G
  24078. CON 0#48 H
  24079. CON 0#49 I
  24080. CON 0#4A J
  24081. CON 0#4B K
  24082. CON 0#4C L
  24083. CON 0#4D M
  24084. CON 0#4E N
  24085. CON 0#4F O
  24086. CON 0#50 P
  24087. CON 0#51 Q
  24088. CON 0#52 R
  24089. CON 0#53 S
  24090. CON 0#54 T
  24091. CON 0#55 U
  24092. CON 0#56 V
  24093. CON 0#57 W
  24094. CON 0#58 X
  24095. CON 0#59 Y
  24096. CON 0#5A Z
  24097. CON 0#30 0
  24098. CON 0#31 1
  24099. CON 0#32 2
  24100. CON 0#33 3
  24101. CON 0#34 4
  24102. CON 0#35 5
  24103. CON 0#36 6
  24104. CON 0#37 7
  24105. CON 0#38 8
  24106. CON 0#39 9
  24107. CON 0#2B PLUS
  24108. CON 0#2D HYPHEN
  24109. CON 0#2A ASTERISK
  24110. CON 0#2F SLANT
  24111. CON 0#28 OPENING PAREN
  24112. CON 0#29 CLOSING PAREN
  24113. CON 0#24 DOLLAR SIGN
  24114. CON 0#3D EQUALS
  24115. CON 0#20 SPACE
  24116. CON 0#2C PERIOD
  24117. CON 0#2E COMMA
  24118. CON 0#23 NUMBER SIGN
  24119. CON 0#5B OPEN BRACKET
  24120. CON 0#5D CLOSING BRACKET
  24121. CON 0#25 PERCENT
  24122. ANSIB EQU *-1
  24123. * CON 0#3A (63 CHARACTER SET - PERCENT)
  24124. CON 0#22 QUOTATION MARKS
  24125. CON 0#5F UNDERLINE
  24126. CON 0#21 EXCLAMATION POINT
  24127. CON 0#26 AMPERSAND
  24128. CON 0#27 APOSTROPHE
  24129. CON 0#3F QUESTION MARK
  24130. CON 0#3C LESS THAN
  24131. CON 0#3E GREATER THAN
  24132. CON 0#40 COMMERCIAL AT
  24133. CON 0#5C REVERSE SLANT
  24134. CON 0#5E CIRCUMFLEX
  24135. CON 0#3B SEMICOLON
  24136. LOC *O
  24137. EBCI SPACE 4,10
  24138. ** EBCI - TABLE TO CONVERT DISPLAY TO EBCDIC.
  24139.  
  24140.  
  24141. EBCI BSS 0
  24142. LOC 0
  24143.  
  24144. CON 0#7A COLON
  24145. EBCIA EQU *-1
  24146. * CON 0 (63 CHARACTER SET - COLON)
  24147. CON 0#C1 A
  24148. CON 0#C2 B
  24149. CON 0#C3 C
  24150. CON 0#C4 D
  24151. CON 0#C5 E
  24152. CON 0#C6 F
  24153. CON 0#C7 G
  24154. CON 0#C8 H
  24155. CON 0#C9 I
  24156. CON 0#D1 J
  24157. CON 0#D2 K
  24158. CON 0#D3 L
  24159. CON 0#D4 M
  24160. CON 0#D5 N
  24161. CON 0#D6 O
  24162. CON 0#D7 P
  24163. CON 0#D8 Q
  24164. CON 0#D9 R
  24165. CON 0#E2 S
  24166. CON 0#E3 T
  24167. CON 0#E4 U
  24168. CON 0#E5 V
  24169. CON 0#E6 W
  24170. CON 0#E7 X
  24171. CON 0#E8 Y
  24172. CON 0#E9 Z
  24173. CON 0#F0 0
  24174. CON 0#F1 1
  24175. CON 0#F2 2
  24176. CON 0#F3 3
  24177. CON 0#F4 4
  24178. CON 0#F5 5
  24179. CON 0#F6 6
  24180. CON 0#F7 7
  24181. CON 0#F8 8
  24182. CON 0#F9 9
  24183. CON 0#4E PLUS
  24184. CON 0#60 HYPHEN
  24185. CON 0#5C ASTERISK
  24186. CON 0#61 SLANT
  24187. CON 0#4D OPENING PAREN
  24188. CON 0#5D CLOSING PAREN
  24189. CON 0#5B DOLLAR SIGN
  24190. CON 0#7E EQUALS
  24191. CON 0#40 SPACE
  24192. CON 0#6B PERIOD
  24193. CON 0#4B COMMA
  24194. CON 0#7B NUMBER SIGN
  24195. CON 0#4A OPEN BRACKET
  24196. CON 0#5A CLOSING BRACKET
  24197. CON 0#6C PERCENT
  24198. EBCIB EQU *-1
  24199. * CON 0#7A (63 CHARACTER SET - COLON)
  24200. CON 0#7F QUOTATION MARKS
  24201. CON 0#6D UNDERLINE
  24202. CON 0#4F EXCLAMATION POINT
  24203. CON 0#50 AMPERSAND
  24204. CON 0#7D APOSTROPHE
  24205. CON 0#6F QUESTION MARK
  24206. CON 0#4C LESS THAN
  24207. CON 0#6E GREATER THAN
  24208. CON 0#7C COMMERCIAL AT
  24209. CON 0#E0 REVERSE SLANT
  24210. CON 0#5F CIRCUMFLEX
  24211. CON 0#5E SEMICOLON
  24212. LOC *O
  24213. ERRNG 473+ERLB+5-* IF OVERLAY LONGER THAN ONE PRU
  24214. OVERLAY (MTS/ATS WRITE ERROR PROCESSOR.),(BUFB+10),P
  24215. WEM SPACE 4,10
  24216. ** WEM - WRITE ERROR PROCESSOR.
  24217. *
  24218. * ENTRY (EP, 11) = VERIFY IN PROGRESS.
  24219. * (EP, 10) = ERASE ERROR HAS OCCURRED.
  24220. * (EP, 9) = LOAD POINT ERROR FLAG.
  24221. * (EP, 8) = LOAD POINT RECOVERY FLAG.
  24222. * (EP+1, 5 - 0) = NUMBER OF ERASES.
  24223. *
  24224. * CALLS /CPP/CAL, CFC, /WRITE/CNW, *CPP*, EBW, *EMM*, EOT,
  24225. * /CPP/INM, MCH, POT, PRS, RCI, /CPP/SFP, WLP.
  24226. *
  24227. * MACROS CALL.
  24228.  
  24229.  
  24230. ENTRY WEM
  24231. WEM SUBR ENTRY
  24232. LDM //LOV SAVE CALLERS EXIT ADDRESS
  24233. STM WEMH
  24234. LDC WEM1 SET ADDRESS TO ENTER AT
  24235. STM //LOV
  24236. UJN WEMX RETURN
  24237.  
  24238. WEM1 LDD MA SAVE OUT POINTER
  24239. CWD CN
  24240. CRM WEMI,ON
  24241. LDC CTAB MODIFY CHANNELS
  24242. RJM MCH
  24243. RJM PRS
  24244. RJM EBW EVALUATE BID WINDOW
  24245. RJM CFC RECONNECT UNIT
  24246. LDM //STER RESTORE STATUS
  24247. STD DS
  24248. LPN 1
  24249. NJN WEM2 IF READY
  24250. LDN /MTX/RDR
  24251. STD EC
  24252. UJN WEM2.1 NO LOAD POINT RECOVERY IF NOT READY
  24253.  
  24254. WEM2 RJM WLP CHECK FOR LOAD POINT RECOVERY
  24255. * UJN WEM2.1 (NOT ATS CONTROLLER)
  24256. WEML EQU *-2
  24257. MJN WEM2.1 IF NO LOAD POINT ERROR OR ERROR RECOVERED
  24258. CALL EMM ISSUE MESSAGE
  24259. LDN 0
  24260. STD EC
  24261. AOD EI
  24262. LJM RET2 RETRY ON *BFW* ERROR
  24263.  
  24264. WEM2.1 LDD FN LOAD MAGNET FUNCTION CODE
  24265. LMN /MTX/WLA
  24266. NJN WEM3 IF NOT WRITE LABELS
  24267. LDC RET2 FORCE REQUEUE AFTER WRITE IS GOOD
  24268. STM /WLA/WLAG
  24269. AOM POTD
  24270. WEM3 LDM /WRITE/WTFE CHECK IF EOF REQUEST DETECTED AHEAD
  24271. WEMK EQU *-1
  24272. * LDM /WLI/WLIA (LI FORMAT)
  24273. LMN 1
  24274. NJN WEM4 IF NOT EOF REQUEST
  24275. LDD MD
  24276. SCN 14
  24277. STD MD
  24278. WEM4 LDD EC
  24279. ZJN WEM6 IF VERIFY OPERATION
  24280. LMN /MTX/STE
  24281. NJN WEM7 IF NOT STATUS ERROR
  24282. LDD DS
  24283. SHN 21-3
  24284. PJN WEM7 IF NOT EOT
  24285. SHN 12
  24286. PJN WEM5 IF NO OTHER ERRORS
  24287. LDM MTDS
  24288. LPC 7077
  24289. WEMA EQU *-1
  24290. * LPC 7777 (ATS UNIT)
  24291. NJN WEM7 IF OTHER ERRORS
  24292. WEM5 RJM EOT
  24293. WEM6 LJM WEM10 POSITION TAPE
  24294.  
  24295. WEM7 LDD DS CHECK FOR NON-FATAL ERRORS
  24296. SHN 21-13
  24297. PJN WEM8 IF OTHER ERRORS
  24298. LDM MTDS
  24299. LPC 7077
  24300. WEMB EQU *-1
  24301. * LPC 7777 (ATS UNIT)
  24302. NJN WEM8 IF FATAL ERRORS
  24303. STD EC
  24304. AOM WEME SET ACCEPT DATA FLAG
  24305. WEMC UJN WEM8 PROCESS MTS DATA
  24306. * LDM MTDS+1 (ATS UNIT)
  24307. CON MTDS+1
  24308. SHN -11
  24309. LPN 3
  24310. ZJN WEM7.1 IF NOT ON-THE-FLY
  24311. LDN /MTX/OTF
  24312. STD EC
  24313. UJN WEM8 PROCESS CORRECTED BLOCK
  24314.  
  24315. WEM7.1 LDD HN
  24316. RAM ECNT+1 INCREMENT LATE DATA COUNTER
  24317. SHN -14
  24318. RAM ECNT
  24319. WEM8 LDD SP
  24320. LPN 4
  24321. RAM WEME SET ACCEPT WRITE FLAG
  24322. LDD SP
  24323. LPN 4
  24324. NJN WEM9 IF ERROR PROCESSING INHIBITED
  24325. LDM /WRITE/BYWR SET BYTE COUNT
  24326. STD BY
  24327. LDC -0 RESTORE BID
  24328. WEMD EQU *-1
  24329. STM UBWB
  24330. CALL EMM DIAGNOSE ERROR
  24331. RJM CFC RECONNECT UNIT
  24332. WEM9 LDD EC
  24333. SBN /MTX/BFAT
  24334. MJN WEM10 IF NOT FATAL ERROR
  24335. SBN /MTX/MFAT-/MTX/BFAT
  24336. PJN WEM10 IF NOT FATAL ERROR
  24337. LJM RET4 RETURN FATAL ERROR
  24338.  
  24339. WEM10 LDC 0 ACCEPT DATA FLAG
  24340. WEME EQU *-1
  24341. NJN WEM11 IF ACCEPT DATA
  24342. RJM POT POSITION TAPE
  24343. WEMF EQU *-2
  24344. * UJN *+2 (DISCARD BLOCK AT EOT)
  24345. WEM11 LDN 0 CLEAR ERROR CODE
  24346. STD EC
  24347. WEMJ LDN 1
  24348. * LDN 0 (FORMAT CHANGE)
  24349. NJN WEM11.1 IF FORMAT PARAMETERS NOT CHANGED
  24350. STM //RELA
  24351. WEM11.1 CALL CPP RELOAD ADDRESS RELOCATOR
  24352. LDM WEMD RESTORE BLOCK ID
  24353. STM UBWB
  24354. LDM /WRITE/BYWR RESET BYTE COUNT
  24355. STD BY
  24356. LDD FN
  24357. LMN /MTX/WLA
  24358. NJN WEM12 IF NOT WRITE LABELS
  24359. LJM WEM15 EXIT
  24360.  
  24361. WEM12 RJM RCI READ UDT
  24362. RJM /CPP/CAL CALCULATE PARAMETERS
  24363. LDC ADDR MODIFY INSTRUCTIONS
  24364. RJM /CPP/INM
  24365. LDM WEME
  24366. ZJN WEM13 IF REREAD DATA
  24367. LDN 0 CLEAR ERROR PARAMATERS
  24368. STD EP
  24369. STD EP+1
  24370. STD EI
  24371. LDD MA RESTORE OUT POINTER
  24372. CWM WEMI,ON
  24373. SBN 1
  24374. CRD CN
  24375. LDM /WRITE/WTFE CHECK IF EOF REQUEST DETECTED AHEAD
  24376. WEMM EQU *-1
  24377. * LDM /WLI/WLIA (LI FORMAT)
  24378. LMN 1
  24379. NJN WEM14 IF NOT EOF REQUEST
  24380. LDN 14 SET EOF STATUS
  24381. RAD MD
  24382. UJN WEM15 EXIT
  24383.  
  24384. WEM13 LDN 3 READ OUT POINTER
  24385. RJM /CPP/SFP
  24386. WEM14 RJM /WRITE/CNW
  24387. WEMG EQU *-2
  24388. * UJN *+2 (DISCARD BLOCK AT EOT)
  24389. * RJM /WLI/CNW (LI FORMAT)
  24390. WEM15 LJM * EXIT
  24391. WEMH EQU *-1
  24392.  
  24393.  
  24394. WEMI EQU WEM
  24395. TBDW EQU WEMI+5 TEMPORARY BID WINDOW
  24396. ERRNG WEM1-TBDW BUFFER OVERFLOW
  24397. EOT SPACE 4,10
  24398. ** EOT - END OF TAPE PROCESSOR.
  24399.  
  24400.  
  24401. EOT3 LDC EOTEXIT SET TO RETURN HERE AFTER POINTER UPDATE
  24402. STM /WRITE/WRTK
  24403. EOTA EQU *-1
  24404. * STM /WLI/WRTK (LI FORMAT)
  24405. LDD EI
  24406. ZJN EOTX IF RECOVERY NOT IN PROGRESS
  24407. LDN 0 SET TO VERIFY REWRITE AND ISSUE MESSAGE
  24408. STM WEME
  24409. STD EC
  24410.  
  24411. EOT SUBR ENTRY/EXIT
  24412. AOM WEME SET ACCEPT DATA FLAG
  24413. LDD SP
  24414. SHN -12
  24415. ZJN EOT3 IF TERMINATE WITH TAPE MARK
  24416. LMN 1
  24417. NJN EOT1 IF NOT ACCEPT BLOCK AT EOT
  24418. LDM /WRITE/STAT
  24419. SHN 21-3
  24420. PJN EOTX IF TAPE MARK ENCOUNTERED THIS BLOCK
  24421. UJN EOT2 CLEAR ACCEPT DATA FLAG
  24422.  
  24423. EOT1 LMN 2&1
  24424. NJN EOTX IF NOT DISCARD BLOCK AT EOT
  24425. LDD UP CLEAR EOR FLAG
  24426. SCN 10
  24427. STD UP
  24428. LDD MD CLEAR EOR/EOF THIS OPERATION
  24429. LPC 7377
  24430. STD MD
  24431. EOT2 LDN 0
  24432. STM WEME
  24433. LDC UJNI+2
  24434. STM WEMF
  24435. STM WEMG
  24436. LJM EOT3 SET RETURN ADDRESS
  24437. POT SPACE 4,10
  24438. ** POT - POSITION AND VERIFY TAPE AFTER ERROR.
  24439. *
  24440. * USES CM - CM+4.
  24441. *
  24442. * CALLS BKS, CID, CKR, FCN, IRC, ISC, POS, RDA, STW, WEO.
  24443.  
  24444.  
  24445. POT SUBR ENTRY/EXIT
  24446. LDD EC
  24447. NJN POT1 IF ERROR
  24448. RJM DTS GET DETAIL STATUS
  24449. LJM POT12 VERIFY BLOCK REWRITE
  24450.  
  24451. * BACKSPACE OVER THE ERROR BLOCK.
  24452.  
  24453. POT1 AOD EI
  24454. RJM BKS BACKSPACE OVER BAD BLOCK
  24455. LDD EI LOAD ERROR COUNTER
  24456. LPN 77 ERROR ITERATION
  24457. SBN 2
  24458. PJN POT3 IF SECOND ITERATION
  24459. POT2 RJM POS POSITION TO LAST GOOD RECORD
  24460.  
  24461. * TAPE IS POSITIONED TO LGB.
  24462.  
  24463. LDD EP
  24464. SHN 21-13
  24465. PJN POT3 IF NOT VERIFY
  24466. LJM POT12 VERIFY BLOCK REWRITE
  24467.  
  24468. * ERASE TAPE.
  24469.  
  24470. POT3 AOD EP+1 COUNT ERASE
  24471. LPN 77
  24472. SBN ERAL
  24473. MJN POT4 IF NOT MAXIMUM ERASES
  24474. LDN /MTX/ERA ERASE LIMIT ERROR
  24475. STD EC
  24476. LJM POT17 FATAL ERROR
  24477.  
  24478. POT4 LDN 1 NUMBER OF ERASES TO PERFORM
  24479. STM POTK
  24480. LDN 2 WAIT NOT BUSY
  24481. RJM STW
  24482. LDD CP CHECK ERROR FLAG
  24483. ADN STSW
  24484. CRD CM
  24485. LDD CM+1
  24486. LPN 37
  24487. SBN SPET
  24488. MJN POT5 IF NO ERROR *SPET* OR ABOVE
  24489. LDN /MTX/EFT SET ERROR FLAG TERMINATION
  24490. STD EC
  24491. LJM POT17 RETURN ERROR
  24492.  
  24493. POT5 LDN 52 SKIP BAD SPOT (ERASE)
  24494. RJM FCN
  24495. LDN 2 WAIT NOT BUSY
  24496. RJM STW
  24497. SHN 21-3
  24498. PJN POT6 IF NOT EOT
  24499. LJM POT19 SET ERASE AT EOT FLAG
  24500.  
  24501. POT6 RJM WEO WAIT END OF OPERATION
  24502. SCN 10 IGNORE EOT
  24503. NJN POT7 IF ERASE ERROR
  24504. SOM POTK
  24505. NJN POT5 IF MORE ERASES TO PERFORM
  24506. LJM POT9 SET UP TO REWRITE BLOCK
  24507.  
  24508. POT7 LDN /MTX/STE DIAGNOSE ERASE ERROR
  24509. STD EC
  24510. LDD DS SET STATUS FOR MESSAGE
  24511. STM //STER
  24512. RJM ISC ISSUE MESSAGE AND RECONNECT UNIT
  24513. AOD EI INCREMENT ERROR ITERATION COUNT
  24514. LDM DNCV
  24515. LPN 70
  24516. LMN /MTX/D16*10
  24517. ZJN POT8 IF 1600 BPI CONTINUE ERASE
  24518. LMN /MTX/D62*10&/MTX/D16*10
  24519. ZJN POT8 IF 6250 CPI CONTINUE ERASE
  24520. LJM POT2 REPOSITION TO LAST GOOD RECORD
  24521.  
  24522. POT8 RJM CKR CHECK FOR UNIT READY
  24523. LJM POT3 REISSUE THE ERASE
  24524.  
  24525. * REWRITE THE BLOCK.
  24526.  
  24527. POT9 LDD LG+1
  24528. ZJN POT11 IF TAPE MARK WRITE
  24529. LDD UP CLEAR EOR FLAG
  24530. SCN 10
  24531. STD UP
  24532. LDD MD CLEAR EOR/EOF THIS OPERATION FLAG
  24533. LPC 7377
  24534. STD MD
  24535. LDD EI
  24536. LPN 7
  24537. ZJN POT11 IF TIME TO REQUEUE
  24538. LDC 0
  24539. POTD EQU *-1 ADD ONE TO *POTD*
  24540. ZJN POT10 IF NOT WRITE LABELS
  24541. LDC /WLA/WLA8-/WRITE/WTF
  24542. POT10 ADC /WRITE/WTF
  24543. ERRNZ /WRITE/WTF-/WLI/WLI ENTRY POINTS MUST BE THE SAME
  24544. STM WEMH
  24545. LJM POTX RETURN
  24546.  
  24547. POT11 LJM RET2 REQUEUE
  24548.  
  24549. * WRITE VERIFY OPERATION.
  24550.  
  24551. POT12 RJM BKS BACKSPACE OVER CURRENT BLOCK
  24552. LDD EP CHECK FOR LOAD POINT RECOVERY FLAG
  24553. SHN 21-10
  24554. MJN POT13 IF NOT LOAD POINT RECOVERY
  24555. LDD EP SET VERIFY IN PROGRESS
  24556. LPC 3777
  24557. LMC 4000
  24558. STD EP
  24559. RJM POS INSURE CORRECT TAPE POSITION
  24560.  
  24561. * VERIFY THE ENTIRE SEQUENCE.
  24562.  
  24563. POT13 RJM RDA READ BLOCK
  24564. LDD T4
  24565. NJN POT14 IF ERROR
  24566. RJM CID CHECK I FORMAT TRAILER INFORMATION
  24567. ZJN POT15 IF NO ERROR
  24568. LCN 0 SET BLOCK ID TO IMPOSSIBLE
  24569. STM WEMD
  24570. LJM POS6 ISSUE POSITION LOST MESSAGE, NO RETURN
  24571.  
  24572. POT14 LDN /MTX/WVF
  24573. STD EC
  24574. RJM ISC ISSUE POSITION LOST MESSAGE
  24575. UJN POT17 RETURN FATAL ERROR
  24576.  
  24577. POT15 AOM WEME SET TO ACCEPT WRITE
  24578. RJM ISC ISSUE RECOVERED MESSAGE AND CONNECT UNIT
  24579. RJM IRC INCREASE RECOVERED ERROR COUNTER
  24580. LDD FN
  24581. LMN /MTX/WLA
  24582. NJN POT16 IF NOT WRITE LABELS
  24583. STD EP+1 CLEAR ERROR PARAMETERS
  24584. STD EP
  24585. STD EI
  24586. POT16 LJM POTX RETURN
  24587.  
  24588. * CANNOT RECOVER ERROR.
  24589.  
  24590. POT17 LDD FN
  24591. LMN /MTX/WLA
  24592. NJN POT18 IF NOT WRITE LABELS
  24593. LDD UP
  24594. SCN 30 CLEAR WRITE OPERATION AND EOR/EOF FLAGS
  24595. STD UP
  24596. POT18 LJM RET4 RETURN FATAL ERROR
  24597.  
  24598. * ERASE AT EOT.
  24599.  
  24600. POT19 LDD EP
  24601. SHN 21-12
  24602. MJN POT17 IF IRRECOVERABLE ERROR
  24603. LDC 2000 SET ERASE OCCURRED AT EOT FLAG
  24604. RAD EP
  24605. LJM POT6 RETRY
  24606.  
  24607. POTK CON 0 NUMBER OF ERASES TO PERFORM
  24608. TITLE SUBROUTINES.
  24609. ABC SPACE 4,15
  24610. ** ABC - ADJUST BYTE COUNT FOR 9 TRACK TAPES.
  24611. *
  24612. * ENTRY (BY) = BYTE COUNT.
  24613. * (T4) = BUFFER SIZE.
  24614. * (DS) = DEVICE STATUS.
  24615. *
  24616. * EXIT (A) = 0 IF NO BYTE ADJUSTMENT.
  24617. * (ES) = 40 IF FILL STATUS.
  24618. * = 0 IF NO FILL STATUS.
  24619. *
  24620. * USES T2, T4.
  24621.  
  24622.  
  24623. ABC SUBR ENTRY/EXIT
  24624. LDD HP
  24625. LPN 1
  24626. ZJN ABCX IF 7 TRACK
  24627.  
  24628. * SET FILL STATUS.
  24629.  
  24630. LDD DS
  24631. ABCA SHN 0-5
  24632. * UJN ABC2 (ATS UNIT)
  24633. LPN 1
  24634. ADD BY
  24635. LPN 3
  24636. ZJN ABC1 IF NO FILL STATUS
  24637. LDN 40
  24638. * LPN 40 (ATS UNIT)
  24639. ABCB EQU *-1
  24640. ABC1 STD ES
  24641.  
  24642. * CORRECT 9 TRACK BYTE COUNT.
  24643.  
  24644. LDD DS
  24645. LPN 40
  24646. ZJN ABC2 IF NO ODD COUNT
  24647. LDD BY
  24648. LPN 2
  24649. ZJN ABC2 IF NOT MODULO 4, 2 OR 3
  24650. SOD BY
  24651. SOD T4
  24652.  
  24653. * ADJUST BUFFER LENGTH FOR I FORMAT.
  24654.  
  24655. ABC2 LDD FM
  24656. SHN -6
  24657. LMN /MTX/TFI
  24658. ZJN ABC3 IF I FORMAT
  24659. LDN 0
  24660. UJN ABC4 RETURN
  24661.  
  24662. ABC3 LDD BY
  24663. ZJN ABC4 IF NO DATA READ
  24664. SBN 1
  24665. ZJN ABC4 IF POSSIBLE TAPE MARK
  24666. STD T2 CALCULATE WORD COUNT
  24667. SHN 1 13*BYTES
  24668. ADD T2
  24669. SHN 2
  24670. ADD T2
  24671. SHN 14 (-6) (13*BYTES)/64
  24672. STD T0
  24673. SHN 6+2 4*13*BYTES (52*BYTES)
  24674. SBD T2 51*BYTES
  24675. ADD T0 (51*BYTES)+((13*BYTES)/64)
  24676. SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
  24677. LPN 1
  24678. ABC4 STM ABCC
  24679. LJM ABCX RETURN
  24680.  
  24681.  
  24682. ABCC CON 0
  24683. BKS SPACE 4,10
  24684. ** BKS - BACKSPACE TAPE.
  24685. *
  24686. * EXIT (A) = NEGATIVE IF BOT.
  24687. * (DS) = GENERAL STATUS.
  24688. *
  24689. * CALLS CKR, FCN, STW, WFC.
  24690.  
  24691.  
  24692. BKS SUBR ENTRY/EXIT
  24693. RJM CKR CHECK READY
  24694. LDN 2 WAIT NOT BUSY
  24695. RJM STW
  24696. LDC F0113 BACKSPACE
  24697. RJM FCN
  24698. RJM WFC WAIT FUNCTION COMPLETE
  24699. LDD DS RETURN LOAD POINT STATUS
  24700. SHN 21-2
  24701. UJN BKSX RETURN
  24702. BTW SPACE 4,10
  24703. ** BTW - BUILD TEMPORARY WINDOW.
  24704. *
  24705. * ENTRY (A) = NUMBER OF BLOCKS TO MOVE BACK.
  24706. *
  24707. * EXIT (TBDW) = TEMPORARY BLOCK ID WINDOW IF FIRST BKSP NOT
  24708. * AT LOAD POINT.
  24709. *
  24710. * USES T8, T9.
  24711. *
  24712. * CALLS BKS, DTS, ISC, SOB.
  24713.  
  24714.  
  24715. BTW SUBR ENTRY/EXIT
  24716. STD T8
  24717. LDN 4 SETUP FIRST BID BYTE
  24718. STM TBDW
  24719. BTW1 RJM BKS BACKSPACE
  24720. MJN BTW2 IF BOT
  24721. SOD T8
  24722. NJN BTW1 LOOP FOR NEXT BLOCK
  24723. BTW2 LDM POSB SET BID POINTER
  24724. STD T9
  24725. LDM POSA CHECK FOR LOAD POINT ON FIRST BKSP
  24726. SBD T8
  24727. ZJN BTWX IF FIRST BKSP AT LOAD POINT
  24728. LDN 0 CLEAR PRU COUNTER
  24729. STD T8
  24730. BTW3 RJM SOB SET UP AND READ ONE BLOCK
  24731. LDM UBWB
  24732. STM TBDW+1,T8
  24733. AOD T9 INCREMENT POINTER
  24734. LPN 7 RESET POINTER FOR POSSIBLE WRAP AROUND
  24735. STD T9
  24736. AOD T8
  24737. LMM POSA
  24738. NJN BTW4 IF LOOP FOR NEXT BLOCK
  24739. LJM BTWX RETURN
  24740.  
  24741. BTW4 RJM DTS GET DETAILED STATUS
  24742. BTWA UJN BTW3 MTS
  24743. * LDM MTDS+1 (ATS) LOAD ERROR CORRECTION FLAGS
  24744. CON MTDS+1
  24745. SHN -11
  24746. LPN 3 SINGLE/DOUBLE TRACK CORRECTED FLAGS
  24747. ZJN BTW3 IF NO CORRECTABLE ERRORS
  24748. LDD DS CHECK FOR ALERT
  24749. SHN 21-13
  24750. MJN BTW3 IF ALERT STATUS SET
  24751. LDD T8 SAVE TEMPORARIES
  24752. STM BTWB
  24753. LDD T9
  24754. STM BTWC
  24755. LDN /MTX/RCE ISSUE REPOSITION CORRECTION MESSAGE
  24756. STD EC
  24757. LDD DS SAVE STATUS
  24758. STM //STER
  24759. RJM ISC ISSUE MESSAGE AND RECONNECT
  24760. LDN 0 CLEAR ERROR CODE
  24761. STD EC
  24762. AOD EI
  24763. LDM BTWB RESTORE TEMPORARIES
  24764. STD T8
  24765. LDM BTWC
  24766. STD T9
  24767. LJM BTW3 CONTINUE FORESPACES
  24768.  
  24769.  
  24770. BTWB CON 0 SAVE T8
  24771. BTWC CON 0 SAVE T9
  24772. CFC SPACE 4,10
  24773. ** CFC - CHECK FOR CONNECT.
  24774. *
  24775. * ENTRY (RELA) = CONNECT FLAG.
  24776. * (DS) = DEVICE STATUS.
  24777. *
  24778. * USES T1.
  24779. *
  24780. * CALLS CUI.
  24781.  
  24782.  
  24783. CFC SUBR ENTRY/EXIT
  24784. LDM MTSF+2 SAVE CURRENT ERROR CORRECTION CODE
  24785. STM CFCB
  24786. LPC 2000
  24787. ZJN CFC0 IF ERROR CORRECTION ENABLED
  24788. LDC 4000 ENABLE ERROR CORRECTION FOR RECOVERY
  24789. STM MTSF+2
  24790. LDN 0
  24791. STM //RELA CLEAR CONNECTED FLAG
  24792. LDC LDNI+0 SET FORMAT ALTERED FLAG
  24793. STM WEMJ
  24794. CFC0 LDM //RELA
  24795. ZJN CFC1 IF UNIT NOT CONNECTED
  24796. LDD DS
  24797. SHN 21-11
  24798. PJN CFCX RETURN IF UNIT CONNECTED
  24799. LDN 0
  24800. STM //RELA
  24801. CFC1 STD T1
  24802. CFC2 LDM MTDS,T1 SAVE DETAILED STATUS
  24803. STM CFCA,T1
  24804. AOD T1
  24805. LMN 10
  24806. NJN CFC2 IF MORE TO SAVE
  24807. RJM CUI CONNECT UNIT
  24808. LDN 0
  24809. STD T1
  24810. CFC3 LDM CFCA,T1 RESTORE DETAILED STATUS
  24811. STM MTDS,T1
  24812. AOD T1
  24813. LMN 10
  24814. NJN CFC3 IF MORE TO MOVE
  24815. LDM CFCB RESET ORIGINAL ERROR CORRECTION CODE
  24816. STM MTSF+2
  24817. LJM CFCX RETURN
  24818.  
  24819.  
  24820. CFCA BSS 10 SAVE AREA FOR DETAILED STATUS
  24821. CFCB BSS 1 ORIGINAL ERROR CORRECTION CODE
  24822. CBW SPACE 4,15
  24823. ** CBW - COMPARE BID WINDOWS.
  24824. *
  24825. * COMPARE THE PERMANENT WINDOW (BIDW) TO THE TEMPORARY
  24826. * WINDOW (TBDW).
  24827. *
  24828. * ENTRY (T1) = FIRST BYTE IN BIDW TO COMPARE.
  24829. * (T2) = FIRST BYTE IN TBDW TO COMPARE.
  24830. *
  24831. * EXIT (A) = 0 IF MATCH OR NOT BLOCK ID EQUIPMENT.
  24832. * (A, 13-6) = NUMBER OF INVALID BLOCK ID-S.
  24833. * (A, 5-0) = NUMBER OF VALID BLOCK ID MISMATCHES.
  24834. *
  24835. * USES T1 - T4.
  24836.  
  24837.  
  24838. CBW SUBR ENTRY/EXIT
  24839. LDD CF CHECK IF BLOCK ID EQUIPMENT
  24840. LPC 300
  24841. LMC 300
  24842. ZJN CBWX IF NO BLOCK ID
  24843. LDN 0
  24844. STD T4
  24845. STD T3
  24846. LDD T1 SAVE (T1)
  24847. STM CBWA
  24848. CBW1 LDM BIDW,T1 LOAD HISTORY BLOCK ID
  24849. LMN 4
  24850. ZJN CBW3 IF INVALID BID IN HISTORY
  24851. LDM TBDW,T2 LOAD BID FROM TEMP WINDOW
  24852. LMN 4 INVALID CHECK
  24853. NJN CBW2 IF NOT INVALID BID IN TEMP WINDOW
  24854. AOD T3 CHECK NEXT BID
  24855. UJN CBW3 CONTINUE
  24856.  
  24857. CBW2 LDM BIDW,T1 LOAD BID FROM HISTORY
  24858. LMM TBDW,T2
  24859. ZJN CBW3 IF NO ERROR
  24860. AOD T4
  24861. CBW3 LDD WP
  24862. SBM CBWA
  24863. ZJN CBW4 IF ONLY ONE BLOCK ID
  24864. AOD T2
  24865. AOD T1 INCREMENT POINTER
  24866. LPN 7 RESET POINTER FOR POSSIBLE WRAP AROUND
  24867. STD T1
  24868. LMD WP
  24869. NJN CBW1 IF NOT END OF COMPARE
  24870. CBW4 LDD T3 FORM BID COMPARE RESULTS AND EXIT
  24871. SHN 6
  24872. ADD T4
  24873. LJM CBWX RETURN
  24874.  
  24875.  
  24876. CBWA CON 0 STORAGE FOR (T1)
  24877. CKR SPACE 4,10
  24878. ** CKR - CHECK READY.
  24879. * IF UNIT NOT READY, A TIME OUT WILL BE PERFORMED WAITING FOR
  24880. * UNIT TO BECOME READY BEFORE GIVING A FATAL ERROR. THIS
  24881. * SHOULD ALLOW RECOVERY FROM MOMENTARY NOT READY CONDITIONS.
  24882. *
  24883. * CALLS CUI, FCN.
  24884.  
  24885.  
  24886. CKR SUBR ENTRY/EXIT
  24887. LCN 0 PRESET TIME OUT
  24888. STM CKRA
  24889. CKR1 LDN 12 STATUS UNIT
  24890. RJM FCN
  24891. ACN CH
  24892. LDC SBNI+1 RETRY FOR TWO MS
  24893. CKR2 EQU *-1
  24894. FJM CKR3,CH IF DATA
  24895. NJN CKR2 IF RETRY NOT COMPLETE
  24896. DCN CH+40
  24897. UJN CKR5 EXIT WITH ERROR
  24898.  
  24899. CKR3 IAN CH
  24900. DCN CH+40
  24901. LPC 1001
  24902. LMN 1
  24903. ZJN CKRX IF READY
  24904. SHN 21-11
  24905. PJN CKR4 IF UNIT CONNECTED
  24906. LDN 0
  24907. STM RELA CLEAR CONNECTED FLAG
  24908. RJM CUI CONNECT UNIT
  24909. CKR4 SOM CKRA
  24910. NJN CKR1 IF TIME OUT
  24911. CKR5 LDN /MTX/RDR READY DROP
  24912. LJM RET3 RETURN ERROR CODE
  24913.  
  24914.  
  24915. CKRA CON 7777 TIME OUT COUNTER
  24916. CID SPACE 4,15
  24917. ** CID - CHECK I FORMAT TRAILER BYTES.
  24918. * IF LI FORMAT, CHECK THE BLOCK NUMBER IN THE PREFIX.
  24919. *
  24920. * ENTRY (A) = AMOUNT TO ADJUST BLOCK NUMBER BY.
  24921. * (BY) = BYTES IN BLOCK LAST READ.
  24922. * (EBUF - EBUF+3) = I FORMAT TRAILER BYTES.
  24923. * (EBUF-1 - EBUF+3) = LI FORMAT PREFIX.
  24924. *
  24925. * EXIT (A) = 0, GOOD BLOCK.
  24926. *
  24927. * USES T1.
  24928.  
  24929.  
  24930. CID3 LDN 0 INDICATE GOOD COMPARE
  24931.  
  24932. CID SUBR ENTRY/EXIT
  24933. STD T1 SAVE BLOCK NUMBER ADJUSTMENT
  24934. LDD FM
  24935. SHN -6
  24936. LMN /MTX/TFI
  24937. NJN CID3 IF NOT I FORMAT
  24938. CIDA EQU *-1
  24939. * UJN CID1 (LI FORMAT)
  24940. LDD FN
  24941. LMN /MTX/WTF
  24942. NJN CID3 IF NOT WRITE DATA
  24943. CID1 LDD BY
  24944. SBN 4
  24945. MJN CID3 IF TAPE MARK OR SNB BLOCK
  24946. LDD BY
  24947. LMN 40D
  24948. ZJN CIDX IF LABEL BLOCK
  24949. LDM EBUF+1 STORE DATA FOR MESSAGE
  24950. SHN 14
  24951. LMM EBUF+2
  24952. ADD T1
  24953. STM //BNEI+2
  24954. SHN -14
  24955. STM //BNEI+1
  24956. LDM EBUF
  24957. STM //BNEI
  24958. LMD BY
  24959. NJN CID2 IF LENGTHS DON,T COMPARE
  24960. CIDB EQU *-1
  24961. * PSN (LI FORMAT)
  24962. LDM EBUF+1 COMPARE BLOCK NUMBERS
  24963. SBD BL
  24964. SHN 14
  24965. ADM EBUF+2
  24966. SBD BL+1
  24967. ADD T1
  24968. CID2 LJM CIDX RETURN
  24969. IRC SPACE 4,10
  24970. *** IRC - INCREASE RECOVERED ERROR COUNTER.
  24971. * RECOVERED ERROR COUNT IN UDT INCREASED.
  24972. *
  24973. * ENTRY NONE.
  24974. *
  24975. * EXIT RECOVERED ERROR COUNTER INCREASED.
  24976. *
  24977. * USES CM - CM+4, CN - CN+4.
  24978. *
  24979. * MACROS DELAY, MONITOR, PAUSE.
  24980.  
  24981.  
  24982. IRC SUBR ENTRY/EXIT
  24983. LDN /MTX/UTMS
  24984. STD T1
  24985. IRC1 LDM UADA
  24986. ADD T1
  24987. STD CM+4
  24988. LDD HN REQUEST 1 WORD
  24989. STD CM+3
  24990. LDN 0 REQUEST READ FROM MAGNET
  24991. STD CM+1
  24992. LCN 7777-/SSD/MTSI SET MAGNET SUBSYSTEM IDENTIFICATION
  24993. STD CM+2
  24994. MONITOR TDAM
  24995. LDD CM+1
  24996. LMN 1
  24997. NJN IRC2 IF MOVE NOT IN PROGRESS
  24998. PAUSE NE
  24999. DELAY
  25000. UJN IRC1 REISSUE REQUEST
  25001.  
  25002. IRC2 LDD MA
  25003. CRD CN
  25004. LDD CN+1 CHECK RECOVERED ERROR COUNTER
  25005. LMC 7777
  25006. NJN IRC4 IF NOT MATCH MAX THRESHOLD
  25007. IRC3 LJM IRCX IF MATCH MAX THRESHOLD
  25008.  
  25009. IRC4 AOD CN+1
  25010. IRC5 LDN /MTX/RUU SET MAGNET FUNCTION
  25011. STD CM
  25012. LDN /MTX/UTMS SET UDT WORD
  25013. STD CM+2
  25014. LDD HN SET WORD COUNT
  25015. STD CM+3
  25016. LDM UADA SET UDT ADDRESS
  25017. STD CM+4
  25018. LDD MA WRITE MAGNET REQUEST
  25019. CWD CM
  25020. ADN 1 WRITE NEW UDT WORD
  25021. CWD CN
  25022. LDK /MTX/RCAL SET MAGNET REQUEST WORD
  25023. STD CM+4
  25024. LDC 200 SET WORD COUNT
  25025. STD CM+3
  25026. LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
  25027. STD CM+2
  25028. LDN 1 SET WRITE
  25029. STD CM+1
  25030. MONITOR TDAM
  25031. LDD CM+1
  25032. ZJN IRC3 IF REQUEST COMPLETE
  25033. SBN 4
  25034. PJN IRC6 IF NOT REJECT
  25035. PAUSE NE
  25036. DELAY
  25037. LJM IRC5 REISSUE REQUEST
  25038.  
  25039. IRC6 LJM //PNR5 DROP PP
  25040. SPACE 4,10
  25041. ** END OF TAPE RETURN FOR EXIT.
  25042. *
  25043. * NOTE - THIS CODE MUST BE BEFORE BUFFERS.
  25044.  
  25045.  
  25046. EOTEXIT LDN /MTX/BEI RETURN END OF TAPE
  25047. LJM RET3 RETURN ERROR CODE
  25048. SPACE 4,10
  25049. ISC SPACE 4,10
  25050. ** ISC - ISSUE MESSAGE AND RECONNECT UNIT.
  25051. *
  25052. * ENTRY (EC) = ERROR CODE.
  25053. *
  25054. * CALLS CFC, *EMM*.
  25055. *
  25056. * MACROS CALL.
  25057.  
  25058.  
  25059. ISC SUBR ENTRY/EXIT
  25060. LDM WEMD RESTORE BID FOR MESSAGE
  25061. STM UBWB
  25062. CALL EMM ISSUE MESSAGE
  25063. RJM CFC RECONNECT UNIT IF NEEDED
  25064. UJN ISCX RETURN
  25065. POS SPACE 4,15
  25066. ** POS - POSITION TAPE.
  25067. *
  25068. * ENTRY (POSA) = NUMBER OF BLOCKS TO BACKUP.
  25069. * TAPE POSITIONED BEFORE BAD BLOCK.
  25070. *
  25071. * EXIT POSITION VERIFIED.
  25072. * SINGLE BLOCK MISPOSTION MESSAGES ISSUED AS NEEDED.
  25073. *
  25074. * USES T1, T2.
  25075. *
  25076. * CALLS BKS, BTW, CBW, ISC, SOB.
  25077.  
  25078.  
  25079. POS11 SHN 14
  25080. LMD EC
  25081. STM POSC SAVE EC
  25082. SHN -14
  25083. STD EC
  25084. RJM ISC ISSUE MESSAGE AND RECONNECT UNIT
  25085. LDC * RESTORE EC
  25086. POSC EQU *-1
  25087. STD EC
  25088.  
  25089. POS SUBR ENTRY/EXIT
  25090. LDD WP
  25091. SBM POSA
  25092. ADN 1
  25093. PJN POS1 IF NO WRAP AROUND
  25094. ADN 10
  25095. POS1 STM POSB STORE STARTING POINTER
  25096. LDC 0
  25097. POSA EQU *-1
  25098. RJM BTW BUILD TEMPORARY WINDOW
  25099. LDN 1
  25100. STD T2
  25101. LDC *
  25102. POSB EQU *-1
  25103. STD T1
  25104. RJM CBW COMPARE WINDOWS
  25105. ZJN POSX RETURN IF GOOD COMPARE
  25106. SHN -6 CHECK FOR INVALID BID IN TEMP WINDOW
  25107. ZJN POS2 IF NO INVALID BLOCK ID-S
  25108. LJM POS8 INVALID BLOCK ID-S EXIST
  25109.  
  25110. POS2 LDD WP CHECK FOR LAST GOOD RECORD VALID BID
  25111. STD T3
  25112. LDM BIDW,T3
  25113. STD T4
  25114. LMN 4
  25115. ZJN POS4 IF CANNOT TRY REPOSITION
  25116. SOD T3 CHECK LRG-1 NOT SAME
  25117. PJN POS3 IF NO OVERFLOW
  25118. LDN 7
  25119. STD T3
  25120. POS3 LDM BIDW,T3
  25121. LMD T4
  25122. NJN POS5 IF LAST TWO BID-S NOT THE SAME
  25123. POS4 LJM POS6 CANNOT TRY REPOSITION
  25124.  
  25125. POS5 LDN 2 CHECK FOR TOO FAR BACKWARD
  25126. STD T2
  25127. RAM POSA INCREASE REPOSITION COUNT BY TWO
  25128. LDM POSB
  25129. STD T1
  25130. LDM BIDW,T1
  25131. SBM TBDW,T2
  25132. NJN POS9 IF NOT TOO FAR BACKWARD
  25133. LDD WP
  25134. STD T9
  25135. RJM SOB SET UP AND READ ONE BLOCK
  25136. LDM POSA
  25137. RJM BTW REBUILD BLOCK ID WINDOW
  25138. LDN 1
  25139. STD T2
  25140. LDM POSB
  25141. STD T1
  25142. RJM CBW RECOMPARE THE BID WINDOWS
  25143. NJN POS6 IF POSITION LOST
  25144. LDN /MTX/SMB ISSUE SINGLE BLOCK MISPOSITION MESSAGE
  25145. LJM POS11 ISSUE ERROR MESSAGE
  25146.  
  25147. POS6 LDN /MTX/PLO ISSUE POSITION LOST MESSAGE
  25148. POS7 STD EC SAVE ERROR CODE
  25149. RJM ISC ISSUE MESSAGE AND RECONNECT UNIT
  25150. LJM RET4 RETURN FATAL ERROR
  25151.  
  25152. POS8 LDN /MTX/MWT
  25153. UJN POS7 ISSUE MARGINALLY WRITTEN TAPE
  25154.  
  25155. POS9 LDN 0 CHECK FOR TOO FAR FORWARD
  25156. STD T2
  25157. LDM POSB
  25158. STD T1
  25159. LDM BIDW,T1
  25160. SBM TBDW,T2
  25161. NJN POS6 IF POSITION LOST
  25162. RJM BKS CORRECT FOR TOO FAR FORWARD AND RETRY
  25163. LDM POSA
  25164. RJM BTW
  25165. LDN 1
  25166. STD T2
  25167. LDM POSB
  25168. STD T1
  25169. RJM CBW
  25170. ZJN POS10 IF POSITION NOT LOST
  25171. LJM POS6 POSITION LOST
  25172.  
  25173. POS10 LDN /MTX/SMF ISSUE SINGLE BLOCK MISPOSITION MESSAGE
  25174. LJM POS11 ISSUE ERROR MESSAGE
  25175. RCI SPACE 4,10
  25176. ** RCI - READ *CIO* INFORMATION FROM *MAGNET,S FL.
  25177. *
  25178. * EXIT (T6 - T7) = FET ADDRESS.
  25179. * (T1 - T5) = UCIC WORD.
  25180. *
  25181. * USES CM - CM+4.
  25182. *
  25183. * CALLS HNG.
  25184. *
  25185. * MACROS DELAY, MONITOR, PAUSE.
  25186.  
  25187.  
  25188. RCI3 LDD MA READ WORDS
  25189. CRD T6-3
  25190. ADN 2
  25191. CRD T1
  25192.  
  25193. RCI SUBR ENTRY/EXIT
  25194. RCI1 LDM UADA SET FWA OF DESIRED UDT WORDS
  25195. ADN /MTX/UCIA
  25196. STD CM+4
  25197. LDC 300 REQUEST THREE WORDS
  25198. STD CM+3
  25199. LDN 0 REQUEST READ FROM *MAGNET*
  25200. STD CM+1
  25201. LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
  25202. STD CM+2
  25203. MONITOR TDAM
  25204. LDD CM+1
  25205. ZJN RCI3 IF DONE
  25206. SBN 2
  25207. PJN RCI2 IF MOVE NOT IN PROGRESS
  25208. PAUSE NE
  25209. DELAY
  25210. UJN RCI1 REISSUE REQUEST
  25211.  
  25212. RCI2 RJM HNG HANG PP
  25213. RDA SPACE 4,15
  25214. ** RDA - READ DATA.
  25215. *
  25216. * EXIT (A) = (T4) = 0, NO ERROR.
  25217. * (BY) = BYTE COUNT OF BLOCK.
  25218. * (EBUF - EBUF+3) = TRAILER BYTES FOR I FORMAT.
  25219. * (EBUF-1 - EBUF+3) = PREFIX BYTES FOR LI FORMAT.
  25220. * (UBWB) SET TO 1 IF TAPE MARK.
  25221. *
  25222. * USES T3, T4.
  25223. *
  25224. * CALLS ABC, CKR, FCN, WEO.
  25225.  
  25226.  
  25227. RDA SUBR ENTRY/EXIT
  25228. RJM CKR CHECK READY
  25229. LDN F0040 ISSUE READ FUNCTION
  25230. RJM FCN
  25231. ACN CH
  25232. RDA1 LDN 0
  25233. STD T3 CLEAR LOOP COUNTER
  25234. STD BY
  25235.  
  25236. * FLUSH DATA, COUNT BYTES, SAVE TRAILER (I FORMAT), SAVE
  25237. * PREFIX (LI FORMAT).
  25238.  
  25239. RDA2 LDC 500 INPUT DATA IN 500B WORD CHUNKS
  25240. IAM EBUF,CH
  25241. RDAD EQU *-1
  25242. * IAM EBUF-1,CH (LI FORMAT)
  25243. NJN RDA3 IF END OF DATA
  25244. RDA2.1 AOD T3 INCREMENT LOOP COUNTER
  25245. UJN RDA2 LOOP UNTIL END OF DATA
  25246. RDAE EQU *-1
  25247. * LDC 500 (LI FORMAT)
  25248. DATA 500
  25249. IAM EBUF+4,CH
  25250. ZJN RDA2.1 IF ALL WORDS TRANSFERRED
  25251. RDA3 STD T4 SAVE REMAINDER
  25252. LDC 500
  25253. SBD T4
  25254. STD T4
  25255. LDD T3 LOAD LOOP COUNT
  25256. ZJN RDA5 IF NOT GREATER THAN 500 WORDS
  25257. RDA4 LDC 500
  25258. RAD BY
  25259. SHN -12D
  25260. NJN RDA6 IF GREATER THAN 7777 WORDS
  25261. SOD T3 DECREMENT LOOP COUNT
  25262. NJN RDA4 IF NOT LAST CHUNK
  25263. RDA5 LDD T4 LOAD REMAINDER
  25264. NJN RDA5.1 IF NOT EVEN CHUNK
  25265. LDC 500 SET TO LAST ADDRESS OF CHUNK
  25266. STD T4
  25267. UJN RDA7 EXIT
  25268.  
  25269. RDA5.1 RAD BY
  25270. SHN -12D
  25271. ZJN RDA7 IF NO BORROW
  25272. RDA6 LCN 0
  25273. STD BY SET BYTE COUNT TO 7777
  25274. RDA7 RJM WEO WAIT END OF OPERATION
  25275. SCN 74
  25276. ZJN RDA9 IF NO ERRORS
  25277. SHN 21-10
  25278. RDAA PJN RDA8 IF NOT NOISE
  25279. * UJN RDA8 (ATS UNIT)
  25280. LDN 42 ISSUE REPEAT READ
  25281. RJM FCN
  25282. ACN CH
  25283. LJM RDA1 REINITIATE READ
  25284.  
  25285. RDA8 LDM MTDS
  25286. LPC 7077
  25287. RDAB EQU *-1
  25288. * LPC 7777 (ATS UNIT)
  25289. ZJN RDA9 IF ONLY WARNING STATUS
  25290. LCN 0
  25291. RDA9 STM RDAC
  25292. RJM ABC
  25293. ZJN RDA10 IF NO BYTE ADJUSTMENT
  25294. SOD T4
  25295.  
  25296. * MOVE I FORMAT TRAILOR INFORMATION.
  25297.  
  25298. RDA10 LDN 3
  25299. RDAF EQU *-1
  25300. * UJN RDA15 (LI FORMAT)
  25301. STD T5
  25302. RDA11 LDM EBUF-1,T4
  25303. STM EBUF,T5
  25304. SOD T4
  25305. SOD T5
  25306. PJN RDA11 IF MORE DATA TO MOVE
  25307. LDM ABCC
  25308. ZJN RDA15 IF NO ADJUSTMENT
  25309. SOD BY
  25310. RDA15 LDD DS CHECK FOR TAPE MARK
  25311. LPN 20
  25312. LMN 20
  25313. NJN RDA17 IF NOT TAPE MARK
  25314. STD BY
  25315. LDN 1 SET TAPE MARK INDICATION
  25316. STM UBWB
  25317. LDD HP
  25318. LPN 1
  25319. NJN RDA17 IF 9 TRACK
  25320. LDD MD
  25321. SHN 21-6
  25322. MJN RDA17 IF 7 TRACK CODED
  25323. LDN 0 CLEAR ERROR INDICATION
  25324. STM RDAC
  25325. RDA17 LDM RDAC LOAD EXIT FLAG
  25326. STD T4
  25327. LJM RDAX RETURN
  25328.  
  25329.  
  25330. RDAC CON 0 EXIT FLAG
  25331. SOB SPACE 4,10
  25332. ** SOB - SET UP AND READ ONE BLOCK.
  25333. *
  25334. * ENTRY (T9) = POINTER TO BID WINDOW.
  25335. *
  25336. * EXIT (UBWB) = BID OF READ CORRECTED FOR CLIPPING LEVEL AND
  25337. * READ ERRORS.
  25338. *
  25339. * USES T0.
  25340. *
  25341. * CALLS FCN, RDA.
  25342.  
  25343.  
  25344. SOB2 RJM RDA READ BLOCK
  25345. ZJN SOBX IF GOOD READ
  25346. SOB3 LDN 4 SET UNUSABLE BID
  25347. STM UBWB
  25348.  
  25349. SOB SUBR ENTRY/EXIT
  25350. LDD MD CHECK IF PARITY CHANGE NEEDED
  25351. SHN -5
  25352. LMM BIDW,T9
  25353. LPN 2
  25354. ZJN SOB1 IF NO CHANGE NEEDED
  25355. LDD HP
  25356. LPN 1
  25357. NJN SOB1 IF 9 TRACK
  25358. LDN 5 TOGGLE TO OPPOSITE PARITY
  25359. RJM FCN
  25360. SOB1 LDM BIDW,T9 CHECK IF CHANGE IN CLIPPING LEVEL NEEDED
  25361. SHN 21-2
  25362. PJN SOB2 IF NO CHANGE NEEDED
  25363. LPN 7 SET CLIPPING LEVEL
  25364. SHN 6
  25365. ADN 6
  25366. RJM FCN
  25367. RJM RDA READ BLOCK
  25368. NJN SOB3 IF ERROR
  25369. LDM BIDW,T9 ADD CLIPPING LEVEL TO LAST BID
  25370. LPN 74
  25371. STD T0
  25372. LDM UBWB
  25373. SCN 74
  25374. LMD T0
  25375. STM UBWB
  25376. LJM SOBX RETURN
  25377. WFC SPACE 4,10
  25378. ** WFC - WAIT BACKSPACE FUNCTION COMPLETE.
  25379. * TIMES OUT APPROXIMATELY 25 FEET OF TAPE.
  25380. *
  25381. * EXIT (DS) = UNIT STATUS.
  25382. *
  25383. * USES T2.
  25384. *
  25385. * CALLS //STW.
  25386.  
  25387.  
  25388. WFC2 CON 0 ENTERED VIA *RJM* FROM //STW
  25389. SOD T2
  25390. NJN WFC1 IF NOT TIMEOUT
  25391. LDC //ERR RESET ERROR EXIT
  25392. STM //STWC
  25393. UJN WFC1 ATTEMPT 1 MORE WAIT
  25394.  
  25395. WFC SUBR ENTRY/EXIT
  25396. LDC 2000 SET TIME OUT
  25397. STD T2
  25398. LDC WFC2 SET RETURN ON TIMEOUT IN //STW
  25399. STM //STWC
  25400. WFC1 LDN 2 WAIT NOT BUSY
  25401. RJM //STW
  25402. LDC //ERR RESET ERROR EXIT
  25403. STM //STWC
  25404. UJN WFCX RETURN
  25405. WNB SPACE 4,10
  25406. ** WNB - WAIT NOT BUSY ON *CMTS* OR *FSC* CONTROLLER.
  25407. *
  25408. * USES T2, CM - CM+4.
  25409. *
  25410. * CALLS ERR, FCN, STW.
  25411. *
  25412. * MACROS SFA.
  25413.  
  25414.  
  25415. WNB SUBR ENTRY/EXIT
  25416. LDC 2000
  25417. STD T2
  25418. WNB1 LDN 0
  25419. RJM //STW WAIT FOR END OF OPERATION
  25420. LPN 2
  25421. ZJN WNBX IF UNIT NOT BUSY
  25422. SOD T2
  25423. ZJN WNB2 IF TIMEOUT
  25424. LDN 1
  25425. RJM FCN RELEASE UNIT
  25426. SFA EST,EO
  25427. ADK EQDE
  25428. CRD CM
  25429. LDD CM+4
  25430. LPN 17 GET UNIT NUMBER
  25431. LMN 20
  25432. RJM FCN CONNECT UNIT
  25433. UJN WNB1 CONTINUE WAITING
  25434.  
  25435. WNB2 LDN /MTX/WEO
  25436. RJM ERR ISSUE ERROR MESSAGE
  25437. SPACE 4,10
  25438. ADDR TSAD SMER
  25439. SPACE 4,10
  25440. ** BUFFERS FOR READING DURING WRITE RECOVERY.
  25441.  
  25442.  
  25443. EBUF BSS 0
  25444. ERRNG 7777-EBUF-4-510 BUFFER DOES NOT FIT WITHIN PP
  25445. WLP SPACE 4,15
  25446. ** WLP - LOAD POINT RECOVERY.
  25447. *
  25448. * ENTRY DETAIL STATUS BUFFERS SET UP.
  25449. *
  25450. * EXIT (A) .LT. 0 IF NOT *TCF* OR *BFW* ERROR OR
  25451. * IF *TCF* OR *BFW* ERROR WAS RECOVERED.
  25452. * (A) = 0 IF RETRY ON *BFW* ERROR.
  25453. *
  25454. * ERROR TO *RET4* IF LOAD POINT PROBLEM.
  25455. * (EC) = *TCF* OR *BFW*.
  25456. *
  25457. * USES T1.
  25458. *
  25459. * CALLS DTS, *EMM*, FCN, WFC, WNB.
  25460. *
  25461. * MACROS CALL.
  25462.  
  25463.  
  25464. WLP SUBR ENTRY/EXIT
  25465. LDD EC
  25466. NJN WLP0 IF ERROR
  25467. RJM DTS GET DETAILED STATUS
  25468.  
  25469. * SAVE CURRENT EQUIPMENT STATUS.
  25470.  
  25471. WLP0 LDD DS SAVE GENERAL STATUS
  25472. STM WLPA
  25473. LDM UBWB SAVE BLOCK ID
  25474. STM WLPB
  25475. LDN 0 SAVE DETAIL STATUS
  25476. STD T1
  25477. WLP1 LDM MTDS,T1 MOVE ALL DETAIL STATUS WORDS
  25478. STM WLPC,T1
  25479. AOD T1 INCREMENT STATUS WORD COUNTER
  25480. SBN 16
  25481. NJN WLP1 IF NOT ALL STATUS WORDS MOVED
  25482. LDM ATUS+2 GET DETAIL STATUS WORD 13
  25483. SHN 21-2 POSITION CLEANER ACTIVE BIT
  25484. PJN WLP2 IF CLEANER PARKED
  25485. LDD EP SET LOAD POINT ERROR FLAG
  25486. LPC 6777
  25487. ADC 1000
  25488. STD EP
  25489. LDN /MTX/TCF CLEANER ACTIVE
  25490. LJM WLP10 ISSUE ERROR MESSAGE AND UNLOAD TAPE
  25491.  
  25492. WLP2 LDM MTDS LOAD DETAIL STATUS WORD 3
  25493. LPC 177 MASK ERROR CODES
  25494. SBN 7
  25495. ZJN WLP8 IF ERROR CODE 7
  25496. SBN 3
  25497. ZJN WLP8 IF ERROR CODE 12
  25498. SBN 1
  25499. ZJN WLP8 IF ERROR CODE 13
  25500. SBN 3
  25501. ZJN WLP8 IF ERROR CODE 16
  25502. LDD EC
  25503. NJN WLP6 IF NON-LOAD POINT ERROR
  25504. LDD EP
  25505. SHN 21-11
  25506. PJN WLP6 IF NO PREVIOUS LOAD POINT ERROR
  25507. LDN 0 CLEAR ERROR CODE
  25508. STD EC
  25509. LDD EP CLEAR LOAD POINT ERROR FLAG
  25510. LPC 6777
  25511. STD EP
  25512. WLP6 LDD EP CLEAR LOAD POINT RECOVERY FLAG
  25513. LPC 7377
  25514. STD EP
  25515. LCN 0
  25516. LJM WLPX RETURN NO LOAD POINT ERROR OR RECOVERED
  25517.  
  25518. WLP8 LDD EP SET LOAD POINT ERROR AND RECOVERY FLAGS
  25519. LPC 6377
  25520. LMC 1400
  25521. STD EP
  25522. LDD EI
  25523. LPN 77 ERROR ITERATION
  25524. ZJN WLP11 IF FIRST TRY ON BAD HEADER
  25525. LPN 7
  25526. ZJN WLP9 IF ITERATION IS A MULTIPLE OF 4
  25527. SBN 4
  25528. NJN WLP11 IF NOT A MULTIPLE OF 4
  25529. WLP9 LDN /MTX/BFW BAD PHASE/GCR HEADERS
  25530. WLP10 STD EC
  25531. CALL EMM ISSUE MESSAGE TO ERROR LOG
  25532. AOD EI
  25533. LDC 110 UNLOAD THE TAPE
  25534. RJM FCN
  25535. LDD HP
  25536. SHN 21-6
  25537. MJN WLP10.2 IF *CMTS* OR *FSC* CONTROLLER
  25538. RJM WFC WAIT END OF OPERATION
  25539. WLP10.1 LJM RET4 RETURN ERROR CODE
  25540.  
  25541. WLP10.2 RJM WNB WAIT END OF OPERATION
  25542. UJN WLP10.1 RETURN ERROR CODE
  25543.  
  25544. * REWIND TO LOAD POINT AND ATTEMPT REWRITE.
  25545.  
  25546. WLP11 LDN F0010 REWIND TAPE TO LOAD POINT
  25547. RJM FCN
  25548. RJM WFC
  25549.  
  25550. * RESTORE EQUIPMENT ERROR STATUS BEFORE EXIT.
  25551.  
  25552. LDN 0
  25553. STD T1
  25554. LDM WLPA RESTORE GENERAL STATUS
  25555. STD DS
  25556. LDM WLPB RESTORE BLOCK ID
  25557. STM UBWB
  25558. WLP12 LDM WLPC,T1 RESTORE ERROR STATUS
  25559. STM MTDS,T1
  25560. AOD T1 INCREMENT COUNTER
  25561. SBN 16
  25562. NJN WLP12 IF NOT ALL STATUS WORDS MOVED
  25563. * LDN 0
  25564. LJM WLPX TRY TO REWRITE FROM LOAD POINT
  25565.  
  25566.  
  25567. WLPA CON 0 GENERAL STATUS
  25568. WLPB CON 0 BLOCK ID
  25569. WLPC BSSZ 16 DETAILED STATUS
  25570. SPACE 4,10
  25571. ** CTAB - CHANNEL TABLE.
  25572.  
  25573.  
  25574. CTAB CHTB
  25575. TITLE OVERLAYABLE SUBROUTINES.
  25576. SPACE 4,10
  25577. ** NOTE - CODE AFTER THIS POINT WILL BE DESTROYED WHEN
  25578. * CALLING THE ERROR PROCESSOR *EMM*. ALL CALLS TO CODE
  25579. * LOCATED AFTER THIS POINT MUST BE DONE PRIOR TO CALLING
  25580. * *EMM*.
  25581.  
  25582.  
  25583. ERROVL
  25584. EBW SPACE 4,15
  25585. ** EBW - EVALUATE BID WINDOW.
  25586. *
  25587. * ENTRY (BIDW) = BID WINDOW.
  25588. *
  25589. * EXIT (POSA) = NUMBER OF BLOCKS TO BACKSPACE.
  25590. * NUMBER OF BLOCKS TO BACKSPACE = 2 IF
  25591. * 1) NO BID PRESENT.
  25592. * 2) INVALID HISTORY BLOCK ID ENCOUNTERED.
  25593. * 3) .GT. 5 BLOCK ID-S ENCOUNTERED.
  25594. * 4) END OF BLOCK ID WINDOW ENCOUNTERED.
  25595. * (WEMD) = BID FROM LAST WRITE.
  25596. * (T2) = NUMBER OF DIFFERENT BLOCK ID-S.
  25597. * (T4) = NUMBER OF SAME BLOCK ID-S.
  25598. *
  25599. * USES T1 - T4.
  25600.  
  25601.  
  25602. EBW SUBR ENTRY/EXIT
  25603. LDD CF CHECK IF BID PRESENT
  25604. LPC 300
  25605. LMC 300
  25606. NJN EBW2 IF BID PRESENT
  25607. EBW1 LJM EBW9 FORCE BACKSPACE OF TWO BLOCKS
  25608.  
  25609. EBW2 LDM UBWB SAVE CURRENT BID
  25610. STM WEMD
  25611. LDD WP SET UP DIRECTS
  25612. STD T1
  25613. LDN 0
  25614. STD T2
  25615. STD T4
  25616. LCN 0
  25617. STD T3
  25618. EBW3 LDD T2 CHECK FOR MAX COUNT OF 5
  25619. ADD T4
  25620. SBN 5
  25621. PJN EBW1 IF MAX COUNT REACHED, FORCE SET 2
  25622. LDM BIDW,T1
  25623. LMN 4
  25624. ZJN EBW10 IF INVALID, STOP SCAN
  25625. LPN 1
  25626. ZJN EBW5 IF NOT TAPE MARK
  25627. AOD T2 FORCE BACKSPACE OVER TAPE MARK
  25628. EBW4 STM POSA SET BACKSPACE COUNT
  25629. LJM EBWX RETURN
  25630.  
  25631. EBW5 LDM BIDW,T1
  25632. SBD T3
  25633. NJN EBW6 IF NOT SAME
  25634. AOD T4 INCREMENT SAME BID COUNT
  25635. UJN EBW7 CONTINUE BID SCAN
  25636.  
  25637. EBW6 AOD T2 INCREMENT DIFFERENT COUNT
  25638. SBN 2
  25639. MJN EBW7 IF NOT TWO DIFFERENT BID-S
  25640. LDD T2
  25641. ADD T4
  25642. UJN EBW4 STORE BACKSPACE COUNT AND EXIT
  25643.  
  25644. EBW7 LDM BIDW,T1
  25645. STD T3 SAVE LAST BID
  25646. SOD T1 REDUCE POINTER
  25647. PJN EBW8 IF NO OVERFLOW
  25648. LPN 7
  25649. STD T1
  25650. EBW8 LMD WP CHECK FOR END OF WINDOW
  25651. NJN EBW11 IF NOT END OF WINDOW
  25652. EBW9 LDN 2 FORCE BACKSPACE OF TWO BLOCKS
  25653. UJN EBW4 STORE BACKSPACE COUNT AND EXIT
  25654.  
  25655. EBW10 LDD T2
  25656. ADD T4
  25657. ZJN EBW9 IF END OF WINDOW
  25658. UJN EBW4 STORE BACKSPACE COUNT AND EXIT
  25659.  
  25660. EBW11 LJM EBW3 CHECK NEXT BID
  25661. PRS SPACE 4,10
  25662. ** PRS - PRESET.
  25663. *
  25664. * CALLS DME.
  25665.  
  25666.  
  25667.  
  25668. PRS SUBR ENTRY/EXIT
  25669. LDD HP
  25670. LPN 20
  25671. NJN PRS1 IF ATS-TYPE CONTROLLER
  25672. LDM PRSF DISABLE LOAD POINT RECOVERY
  25673. STM WEML
  25674. UJN PRSX EXIT PRESET
  25675.  
  25676. * MODIFY INSTRUCTIONS FOR ATS-TYPE CONTROLLER.
  25677.  
  25678. PRS1 LDM PRSA
  25679. STM ABCA
  25680. LDC LPNI-LDNI
  25681. RAM ABCB
  25682. LDC 5000 FUNCTION CODE FOR *LDM*
  25683. STM BTWA
  25684. LCN 0
  25685. STM WEMA
  25686. STM WEMB
  25687. STM RDAB
  25688. LDC UJNI-PJNI
  25689. RAM RDAA
  25690. LDC LDMI
  25691. STM WEMC
  25692. LDD FN
  25693. LMN /MTX/WTF
  25694. NJP PRS2 IF NOT WRITE FUNCTION
  25695. LDD FM
  25696. SHN -6
  25697. LMN /MTX/TFLI
  25698. NJP PRS2 IF NOT LI FORMAT
  25699. * LDN 0
  25700. STM ADDR NO INSTRUCTION MODIFICATION
  25701. STM CIDB NO BLOCK LENGTH CHECK
  25702. ISTORE CIDA,(UJN CID1)
  25703. LDC /WLI/WLIA
  25704. STM WEMK DROP OUT FLAG
  25705. STM WEMM
  25706. LDC /WLI/CNW
  25707. STM WEMG+1 SET ADDRESS OF *CNW*
  25708. LDC /WLI/WRTK
  25709. STM EOTA END OF TAPE EXIT ADDRESS
  25710. SOM RDAD LOCATION FOR PREFIX
  25711. LDC LDCI
  25712. STM RDAE
  25713. ISTORE RDAF,(UJN RDA15)
  25714. PRS2 LJM PRSX EXIT PRESET
  25715.  
  25716.  
  25717. PRSA BSS 0
  25718. LOC ABCA
  25719. UJN ABC2 ADJUST BUFFER LENGTH
  25720. LOC *O
  25721.  
  25722. PRSE BSS 0 BACKSPACE DELAYS FOR FSC, CMTS OR ISMT
  25723. LOC 0
  25724. CON LDNI+27 75 IPS UNIT (FSC)
  25725. CON LDNI+17 125 IPS UNIT (FSC)
  25726. CON LDNI+10 200 IPS UNIT (FSC OR CMTS)
  25727. CON LDNI+34 25 IPS UNIT (ISMT)
  25728. LOC *O
  25729.  
  25730. PRSF BSS 0
  25731. LOC WEML
  25732. UJN WEM2.1 DISABLE LOAD POINT RECOVERY
  25733. LOC *O
  25734. OVERLAY (CTS WRITE ERROR PROCESSOR.),(BUFB+10),P,CWP
  25735. CWP SPACE 4,15
  25736. ** CWP - CTS WRITE ERROR PROCESSOR.
  25737. *
  25738. * EXIT TO CALLER IF EOT, RECOVERED ERROR OR ERROR PROCESSING
  25739. * INHIBITED.
  25740. * TO *WRA* IF ERROR.
  25741. * (CN+3, CN+4) = OUT POINTER IF WRITE.
  25742. *
  25743. * USES CN - CN+4.
  25744. *
  25745. * CALLS /WLI/CNW, /WRITE/CNW, *CEM*, EOT, MCH, PRS, WRA.
  25746. *
  25747. * MACROS CALL.
  25748.  
  25749.  
  25750. ENTRY CWP
  25751. CWP SUBR ENTRY/EXIT
  25752.  
  25753. * THE FOLLOWING CODE IS OVERLAYED BY THE OUT POINTER.
  25754.  
  25755. CWPA EQU *
  25756. CWPB EQU *+5
  25757. LDM //LOV SAVE CALLERS EXIT ADDRESS
  25758. STM CWP
  25759. LDD MA SAVE OUT POINTER
  25760. CWD CN
  25761. CRM CWPA,ON
  25762. LDC CTAB MODIFY CHANNELS
  25763. RJM MCH
  25764. RJM PRS PRESET
  25765. LDD DS
  25766. LPN 1
  25767. NJN CWP1 IF READY
  25768. LDN /MTX/RDR
  25769. STD EC
  25770. CWP1 LDD FN LOAD MAGNET FUNCTION CODE
  25771. LMN /MTX/WLA
  25772. NJN CWP2 IF NOT WRITE LABELS
  25773. LDC RET2 FORCE REQUEUE AFTER WRITE IS GOOD
  25774. STM /WLA/WLAG
  25775. CWP2 LDM /WRITE/WTFE CHECK IF EOF REQUEST DETECTED AHEAD
  25776. CWPC EQU *-1
  25777. * LDM /WLI/WLIA (LI FORMAT)
  25778. LMN 1
  25779. NJN CWP3 IF NOT EOF REQUEST
  25780. LDD MD
  25781. SCN 14
  25782. STD MD
  25783. CWP3 LDD EC
  25784. NJN CWP4 IF NOT RECOVERED ERROR
  25785. CALL CEM ISSUE RECOVERED MESSAGE
  25786. LDD FN
  25787. LMN /MTX/WLA
  25788. NJN CWP6 IF NOT WRITE LABELS
  25789. STD EP CLEAR ERROR PARAMETERS
  25790. STD EI CLEAR RETRY COUNT
  25791. UJN CWP6 CLEAR ERROR CODE
  25792.  
  25793. CWP4 LMN /MTX/STE
  25794. NJN CWP5 IF NOT STATUS ERROR
  25795. LDD DS
  25796. SHN 21-3
  25797. PJN CWP5 IF NOT EOT
  25798. SHN 21-13-21+3+22
  25799. MJN CWP5 IF OTHER ERRORS
  25800. RJM EOT
  25801. UJN CWP6 CLEAR ERROR CODE
  25802.  
  25803. CWP5 LDD SP
  25804. LPN 4
  25805. NJN CWP6 IF ERROR PROCESSING INHIBITED
  25806. RJM WRA WRITE RECOVERY ALGORITHM (NO RETURN)
  25807.  
  25808. CWP6 LDN 0 CLEAR ERROR CODE
  25809. STD EC
  25810. LDD FN
  25811. LMN /MTX/WLA
  25812. ZJN CWP8 IF WRITE LABELS
  25813. LDN 0 CLEAR ERROR PARAMATERS
  25814. STD EP
  25815. STD EI
  25816. LDD MA RESTORE OUT POINTER
  25817. CWM CWPA,ON
  25818. SBN 1
  25819. CRD CN
  25820. LDM /WRITE/WTFE CHECK IF EOF REQUEST DETECTED AHEAD
  25821. CWPD EQU *-1
  25822. * LDM /WLI/WLIA (LI FORMAT)
  25823. LMN 1
  25824. NJN CWP7 IF NOT EOF REQUEST
  25825. LDN 14 SET EOF STATUS
  25826. RAD MD
  25827. UJN CWP8 RESTORE MA BACK TO OLD OUT POINTER
  25828.  
  25829. CWP7 RJM /WRITE/CNW
  25830. CWPE EQU *-1
  25831. * RJM /WLI/CNW (LI FORMAT)
  25832. CWP8 LJM CWPX RETURN
  25833. EOT SPACE 4,10
  25834. ** EOT - END OF TAPE PROCESSOR.
  25835.  
  25836.  
  25837. EOT SUBR ENTRY/EXIT
  25838. LDC EOT1 SET TO RETURN HERE AFTER POINTER UPDATE
  25839. STM /WRITE/WRTK
  25840. EOTA EQU *-1
  25841. * STM /WLI/WRTK (LI FORMAT)
  25842. UJN EOTX RETURN
  25843.  
  25844. EOT1 LDN /MTX/BEI RETURN END OF TAPE
  25845. LJM RET3 RETURN ERROR CODE
  25846. POS SPACE 4,15
  25847. ** POS - POSITION TAPE.
  25848. * THIS ROUTINE USES THE LOCATE BLOCK COMMAND TO POSITION
  25849. * THE TAPE TO THE EXPECTED BLOCK POSITION.
  25850. *
  25851. * ENTRY (BL, BL+1) = NOS BLOCK POSITION.
  25852. * (WP, EP+1) = PHYSICAL BLOCK ID WHEN (BL,BL+1) = 0.
  25853. *
  25854. * EXIT (A) = 0 IF NO ERROR.
  25855. * TO *ERR* IF CHANNEL MALFUNCTION.
  25856. *
  25857. * USES T3.
  25858. *
  25859. * CALLS /PRESET/GPS, /PRESET/ICF, /PRESET/RBI.
  25860.  
  25861.  
  25862. POS SUBR ENTRY/EXIT
  25863. RJM /PRESET/RBI READ BLOCK ID
  25864. LDM BIDW
  25865. STM POSA
  25866. SBN 20
  25867. ZJN POS1 IF FIRST SEGMENT
  25868. STM POSA SET PHYSICAL REFERENCE BLOCK ID
  25869. POS1 LDD BL+1
  25870. SHN 4
  25871. ADD EP+1
  25872. STM POSA+2 MOVE BLOCK NUMBER TO PARAMETERS
  25873. SHN -14
  25874. STM POSA+1
  25875. LDD BL
  25876. SHN 4
  25877. ADD WP
  25878. RAM POSA+1
  25879. LDN F0016 LOCATE BLOCK
  25880. RJM /PRESET/ICF ISSUE FUNCTION
  25881. ACN CH
  25882. LDN 3
  25883. OAM POSA,CH OUTPUT THE 3 PARAMETER WORDS
  25884. STD T3 WORDS NOT TRANSFERRED
  25885. FJM *,CH WAIT FOR DATA TO BE TAKEN
  25886. POS2 LDN 0 WAIT FOR END OF OPERATION
  25887. RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS
  25888. MJN POS2 IF COMMAND RETRY
  25889. SHN 21-13
  25890. MJN POS3 IF ERROR
  25891. LDD T3
  25892. ZJN POS4 IF ALL WORDS TRANSFERRED
  25893. LDN /MTX/CMF CHANNEL MALFUNCTION
  25894. RJM ERR REPORT ERROR (NO RETURN)
  25895.  
  25896. POS3 LDN /MTX/STE STATUS ERROR
  25897. STD EC
  25898. POS4 LJM POSX RETURN
  25899.  
  25900.  
  25901. POSA DATA 0 LOCATE BLOCK PARAMETERS
  25902. DATA 0 UPPER 12 BITS OF BLOCK NUMBER
  25903. DATA 0 8/LOWER BITS OF BLOCK NUMBER / 4 UNUSED
  25904. WFC SPACE 4,10
  25905. ** WFC - WAIT FOR COMPLETION.
  25906. *
  25907. * CALLS /PRESET/GPS.
  25908.  
  25909.  
  25910. WFC SUBR ENTRY/EXIT
  25911. WFC1 LDN 0 WAIT FOR END OF OPERATION
  25912. RJM /PRESET/GPS
  25913. MJN WFC1 IF COMMAND RETRY
  25914. UJN WFCX RETURN
  25915. WRA SPACE 4,20
  25916. ** WRA - WRITE RECOVERY ALGORITHM.
  25917. *
  25918. * ENTRY (EI) = RETRY COUNT.
  25919. *
  25920. * EXIT TO *RET2* TO REQUEUE.
  25921. * TO *RET4* TO RETURN A FATAL ERROR.
  25922. * TO *ERR* IF MICROCODE LOAD FAILED.
  25923. * (EI) = (EI) + 1.
  25924. *
  25925. * USES CN, CN+1, EC, HP, MD.
  25926. *
  25927. * CALLS *CEM*, /PRESET/ICF, POS, /PRESET/RCU, WFC, *0CT*.
  25928. *
  25929. * MACROS CALL, EXECUTE.
  25930.  
  25931.  
  25932. * THIS ROUTINE DOES ERROR RECOVERY AS FOLLOWS -
  25933. *
  25934. * IF (EI) = 0 LOG ERROR, POSITION TAPE, AND REQUEUE.
  25935. * IF (EI) = 1 LOG ERROR, LOAD CCC MICROCODE, POSITION TAPE,
  25936. * AND REQUEUE.
  25937. * IF (EI) = 2 LOG UNRECOVERED ERROR, POSITION TAPE, RETURN
  25938. * FATAL CODE.
  25939. *
  25940.  
  25941. WRA CON 0 ENTRY
  25942. LDC LDNI+F0002
  25943. STM /PRESET/GPSC SEND CONTINUE IF COMMAND RETRY
  25944. WRA1 CALL CEM LOG ERROR
  25945. LDC LDNI
  25946. STM //PNRC FORCE DROP OUT
  25947. AOD EI INCREMENT RETRY COUNT
  25948. SBN 1
  25949. ZJP WRA4 IF FIRST ERROR
  25950. SBN 1
  25951. NJP WRA5 IF RETRIES FAILED
  25952. CHTE *
  25953. LDN CH SET CHANNEL NUMBER
  25954. STD CN
  25955. LDC ERLB SET BUFFER ADDRESS
  25956. STD CN+1
  25957. EXECUTE 0CT,ERLA+5 LOAD CTS/CCC MICROCODE
  25958. LDD CN
  25959. ZJN WRA3 IF MICROCODE LOADED
  25960. STD EC
  25961. SHN 0-13
  25962. PJN WRA2 IF ERROR CODE ALREADY SAVED
  25963. LDN /MTX/CMF
  25964. STD EC
  25965. WRA2 LDM CN+1 SAVE FUNCTION
  25966. STM /PRESET/ICFA
  25967. RJM ERR REPORT ERROR (NO RETURN)
  25968.  
  25969. WRA3 RJM /PRESET/RCU RECONNECT UNIT
  25970. WRA4 RJM POS POSITION TAPE
  25971. NJP WRA1 IF LOCATE BLOCK FAILED
  25972. STD EC CLEAR ERROR CODE
  25973. LDD HP CLEAR EOR FLAG
  25974. LPC 5777
  25975. STD HP
  25976. LDD MD CLEAR EOR/EOF THIS OPERATION FLAG
  25977. LPC 7377
  25978. STD MD
  25979. LJM RET2 REQUEUE THE REQUEST
  25980.  
  25981. WRA5 LDD FN
  25982. LMN /MTX/WLA
  25983. NJN WRA7 IF NOT WRITE LABELS
  25984. LDD EC
  25985. LMN /MTX/STE
  25986. NJN WRA7 IF NOT STATUS ERROR
  25987. LDM CTGS
  25988. LPC 177
  25989. SBN CE007
  25990. ZJN WRA6 IF LOAD POINT ERROR
  25991. SBN CE012-CE007
  25992. NJN WRA7 IF NOT LOAD POINT ERROR
  25993. WRA6 LDN /MTX/BFW LOAD POINT ERROR
  25994. STD EC
  25995. CALL CEM LOG THE ERROR
  25996. LDC F0110 UNLOAD TAPE
  25997. RJM /PRESET/ICF ISSUE CTS FUNCTION
  25998. RJM WFC WAIT FOR COMPLETION
  25999. UJN WRA8 RETURN FATAL ERROR
  26000.  
  26001. WRA7 LDD FN
  26002. LMN /MTX/WLA
  26003. NJN WRA8 IF NOT WRITE LABELS
  26004. LDD UP
  26005. SCN 30 CLEAR WRITE OPERATION AND EOR/EOF FLAGS
  26006. STD UP
  26007. WRA8 LJM RET4 RETURN FATAL ERROR
  26008. SPACE 4,10
  26009. ERRNG ERLA-* CODE OVERFLOWS HELPER OVERLAY
  26010. ERRPL ERLA+5+ZCTL-ERLB *0CT* OVERFLOWS INTO BUFFER
  26011. SPACE 4,10
  26012. ** CTAB - CHANNEL TABLE.
  26013.  
  26014.  
  26015. CTAB CHTB
  26016. PRS SPACE 4,10
  26017. ** PRS - PRESET.
  26018.  
  26019.  
  26020. PRS SUBR ENTRY/EXIT
  26021. LDD FN
  26022. LMN /MTX/WTF
  26023. NJN PRSX IF NOT WRITE FUNCTION
  26024. LDD FM
  26025. SHN -6
  26026. LMN /MTX/TFLI
  26027. NJN PRSX IF NOT LI FORMAT
  26028. LDC /WLI/WLIA
  26029. STM CWPC DROP OUT FLAG
  26030. STM CWPD
  26031. LDC /WLI/CNW
  26032. STM CWPE SET ADDRESS OF *CNW*
  26033. LDC /WLI/WRTK
  26034. STM EOTA END OF TAPE EXIT ADDRESS
  26035. LJM PRSX EXIT PRESET
  26036. SPACE 4,10
  26037. OVERFLOW BUFB+10,/WLA/WTMX OVERFLOW INTO CALLING ROUTINE
  26038. OVERLAY (CTS ERPA CODES.),(ERLB+5),P,ERP
  26039. ** ERP - ERROR RECOVERY PROCEDURE ACTION TEXT MESSAGES.
  26040.  
  26041.  
  26042. ENTRY ERP
  26043. ERP SUBR ENTRY/EXIT
  26044. UJN ERPX RETURN
  26045.  
  26046. * THE FOLLOWING TABLE CONTAINS POINTERS TO TEXT MESSAGES
  26047. * FOR ERPA CODES 21 THROUGH 4C.
  26048.  
  26049. ERPA CON ERP21
  26050. CON ERP22
  26051. CON ERP23
  26052. CON ERP24
  26053. CON ERP23
  26054. CON ERP23
  26055. CON ERP27
  26056. CON ERP28
  26057. CON 0,0,0
  26058. CON ERP2C
  26059. CON 0
  26060. CON ERP2E
  26061. CON 0
  26062. CON ERP30
  26063. CON ERP31
  26064. CON ERP32
  26065. CON ERP33
  26066. CON ERP34
  26067. CON ERP35
  26068. CON 0
  26069. CON ERP37
  26070. CON ERP38
  26071. CON ERP39
  26072. CON ERP3A
  26073. CON ERP3B
  26074. CON 0,0,0,0,0
  26075. CON ERP41
  26076. CON ERP42
  26077. CON ERP3A
  26078. CON ERP44
  26079. CON ERP45
  26080. CON ERP46
  26081. CON ERP47
  26082. CON 0
  26083. CON ERP49
  26084. CON ERP4A
  26085. CON 0
  26086. CON ERP4C
  26087.  
  26088. * THE FOLLOWING ARE ERPA TEXT MESSAGES.
  26089.  
  26090. ERP21 DATA C*DATA STREAMING ERROR.*
  26091. ERP22 DATA C*PATH EQUIPMENT CHECK.*
  26092. ERP23 DATA C*DATA CHECK.*
  26093. ERP24 DATA C*LOAD DISPLAY CHECK.*
  26094. ERP27 DATA C*COMMAND REJECT.*
  26095. ERP28 DATA C*WRITE ID CHECK.*
  26096. ERP2C DATA C*CU EQUIPMENT CHECK.*
  26097. ERP2E DATA C*NOT CAPABLE.*
  26098. ERP30 DATA C*FILE PROTECTED.*
  26099. ERP31 DATA C*TAPE VOID.*
  26100. ERP32 DATA C*TENSION LOSS.*
  26101. ERP33 DATA C*LOAD FAILURE.*
  26102. ERP34 DATA C*UNLOAD FAILURE.*
  26103. ERP35 DATA C*DRIVE EQUIPMENT CHECK.*
  26104. ERP37 DATA C*TAPE LENGTH ERROR.*
  26105. ERP38 DATA C*PHYSICAL END OF TAPE.*
  26106. ERP39 DATA C*BACKWARD AT BOT.*
  26107. ERP3A DATA C*DRIVE NOT READY.*
  26108. ERP3B DATA C*UNLOAD ERROR.*
  26109. ERP41 DATA C*BLOCK ID SEQUENCE ERROR.*
  26110. ERP42 DATA C*DEGRADED MODE.*
  26111. ERP44 DATA C*LOCATE BLOCK UNSUCCESSFUL.*
  26112. ERP45 DATA C*DRIVE ASSIGNED ELSEWHERE*
  26113. ERP46 DATA C*DRIVE OFFLINE.*
  26114. ERP47 DATA C*CU ERROR*
  26115. ERP49 DATA C*BUS OUT PARITY*
  26116. ERP4A DATA C*CU ERP FAILED.*
  26117. ERP4C DATA C*CU CHECK ONE ERROR*
  26118. ERRNG 1*473+ERLB+5-*
  26119. QUAL 1LT
  26120. .QNAM MICRO 1,, 1LT
  26121. .IM SET 0
  26122. TTL 1MT/1LT - LONG BLOCK PROCESSOR.
  26123. TITLE
  26124. IDENT 1LT,LTP LONG BLOCK HELPER PROCESSOR.
  26125. *COMMENT 1MT - LONG BLOCK HELPER PROCESSOR.
  26126. SPACE 4,10
  26127. ** *1LT* CALL FORMAT.
  26128. *
  26129. * INPUT REGISTER -
  26130. *
  26131. *T, 18/ 1LT,6/ CP,6/ HP,6/ FUNC,2/ CF,10/ CH,12/ PPIA
  26132. *
  26133. * MESSAGE BUFFER + 1 (*1MT*) -
  26134. *
  26135. *T, 12/ -0,24/ FIRST,24/ LIMIT
  26136. *
  26137. * CP CONTROL POINT NUMBER.
  26138. * HP UNIT HARDWARE PARAMETERS (UPPER 6 BITS ONLY).
  26139. * FUNC FUNCTION (0 = READ, 1 = WRITE, 2 = WRITE *LI* FORMAT).
  26140. * CF MTS/ATS CONTROLLER FLAG.
  26141. * CH TAPE CHANNEL.
  26142. * PPIA *1MT* PP INPUT REGISTER ADDRESS.
  26143. * FIRST *FIRST* POINTER FROM FET.
  26144. * LIMIT *LIMIT* POINTER FROM FET.
  26145. SPACE 4,10
  26146. ** *1LT* REQUEST/REPLY FORMAT.
  26147. *
  26148. * REQUESTS AND REPLYS ARE PASSED IN THE MESSAGE BUFFER OF *1LT*.
  26149. *
  26150. * REQUEST (*1MT*) -
  26151. *
  26152. *T, 12/ CC,12/ WC,12/ OV,24/ PT
  26153. *
  26154. * CC COMMAND CODE (1 = START OF BLOCK, 3 = READ SKIP).
  26155. * WC NUMBER OF WORDS IN LAST CHUNK (READ).
  26156. * WC NUMBER OF BYTES IN LAST CHUNK (WRITE).
  26157. * OV OVERFLOW CHUNK COUNT.
  26158. * PT POINTER TO START TRANSFER AT.
  26159. *
  26160. * REPLY (*1LT*) -
  26161. *
  26162. *T, 12/ CR,12/ BT,12/ WT,24/ 0
  26163. *
  26164. * CR COMMAND RESPONSE CODE (0 = ACKNOWLEDGE, 2 = COMPLETE).
  26165. * BT BYTES TRANSFERRED.
  26166. * WT WORDS TRANSFERRED.
  26167. SPACE 4,15
  26168. ** *1MT*/*1LT* INTERLOCK (CYBER 180 ONLY).
  26169. *
  26170. * FOR CYBER 180 MAINFRAMES, AN INTERLOCK IS MAINTAINED
  26171. * IN MESSAGE BUFFER + 1 (*1LT*). THIS INTERLOCK IS USED
  26172. * TOGETHER WITH THE CHANNEL FLAG TO ENSURE THAT CHUNKS
  26173. * ARE SEQUENCED CORRECTLY.
  26174. *
  26175. *T, 12/ IN,48/ RESERVED
  26176. *
  26177. * IN INTERLOCK
  26178. * (0 = *1MT* MAY TRY TO SET THE CHANNEL FLAG,
  26179. * 1 = *1LT* MAY TRY TO SET THE CHANNEL FLAG).
  26180. SPACE 4,10
  26181. ** DIRECT CELL DEFINITIONS.
  26182.  
  26183.  
  26184. LOC 20
  26185. CC BSS 1 COMMAND CODE
  26186. WC BSS 1 NUMBER WORDS IN LAST CHUNK (READ)
  26187. * NUMBER BYTES IN LAST CHUNK (WRITE)
  26188. OV BSS 1 OVERFLOW CHUNK COUNT
  26189. PT BSS 2 POINTER TO START TRANSFER AT
  26190. CR BSS 1 COMMAND RESPONSE CODE
  26191. BT BSS 1 BYTES TRANSFERRED
  26192. WT BSS 1 WORDS TRANSFERRED
  26193. ZR BSS 5 (5 BYTES OF ZEROES)
  26194. BI BSS 1 BYTES TO INPUT/OUTPUT
  26195. RS BSS 2 AMOUNT OF SPACE IN BUFFER - READ SKIP
  26196. LOC *O
  26197. LTP SPACE 4,10
  26198. ** LTP - LONG BLOCK PROCESSOR.
  26199. *
  26200. * ENTRY (IR+2) = 6/X, 6/Y WHERE
  26201. * X = UPPER 6 BITS OF (HP).
  26202. * Y = 2 IF WRITE LI FORMAT.
  26203. * Y = 1 IF WRITE AND NOT LI FORMAT.
  26204. * Y = 0 IF READ.
  26205. *
  26206. * CALLS PRS.
  26207. *
  26208. * MACROS MONITOR.
  26209.  
  26210.  
  26211. ORG PPFW
  26212. LTP RJM PRS PRESET
  26213. LDD IR+2
  26214. LPN 77
  26215. NJN LTP1 IF WRITE
  26216. LJM RED PROCESS READ
  26217.  
  26218. LTP1 SBN 2
  26219. ZJN LTP2 IF WRITE LI FORMAT
  26220. LDC UJNI+WRT8.1-WRTE
  26221. STM WRTE DO NOT ADJUST BYTE COUNT
  26222. LTP2 LJM WRT PROCESS WRITE
  26223.  
  26224. DPP MONITOR DPPM DROP PPU
  26225. LJM PPR EXIT TO PP RESIDENT
  26226. RED SPACE 4,10
  26227. ** RED - READ DATA FROM TAPE.
  26228. * THIS ROUTINE TRANSFERS CHUNKS 2, 4, 6, ... OF A LONG BLOCK.
  26229. * IT EXITS TO *WSB* AND RETURNS WITH TRANSFER INFORMATION
  26230. * IN *OV* AND *WC* IF IT IS NEEDED TO HELP TRANSFER A BLOCK.
  26231. *
  26232. * CALLS ADP, WDA, WSB.
  26233.  
  26234.  
  26235. RED RJM WSB WAIT FOR *1MT* TO START BLOCK
  26236.  
  26237. * INSURE *1MT* GETS FIRST PORTION OF DATA.
  26238.  
  26239. LDC UJNI+RED10-REDE SET START OF BLOCK
  26240. * LDC NJNI+.RED8-.REDB (ATS NON-CYBER 180)
  26241. * LDC NJNI+RED8.-REDB. (CYBER 180 IOU)
  26242. REDA EQU *-1
  26243. STM REDE
  26244. * STM .REDB (ATS NON-CYBER 180)
  26245. * STM REDB. (CYBER 180 IOU)
  26246. REDF EQU *-1
  26247. RED1 IJM RED12,CH IF *1MT* COMPLETE
  26248. * UJN RED3 (ATS NON-CYBER 180)
  26249. * UJN RED3 (CYBER 180 IOU)
  26250. REDB EQU *-2
  26251. FJM RED2,CH IF DATA TRANSFER STARTED
  26252. EJM RED1,CH IF *1MT* NOT STARTED
  26253. RED2 LDN 40 DELAY TO INSURE *1MT* INTO BLOCK TRANSFER
  26254. * LDN 77 (2X PPU SPEED)
  26255. REDC EQU *-1
  26256. SBN 1
  26257. NJN *-1
  26258. RED3 LCN 2
  26259. RAD OV
  26260. PJN RED5 IF INPUT FULL BLOCK
  26261. ADN 1
  26262. PJN RED4 IF NOT DONE
  26263. LJM RED12 SEND RESPONSE TO *1MT*
  26264.  
  26265. RED4 LDC NJNI+RED10-REDE
  26266. * LDC UJNI+.RED8-.REDB (ATS CONTROLLER)
  26267. * LDC UJNI+RED8.-REDB. (CYBER 180)
  26268. REDD EQU *-1
  26269. STM REDE
  26270. * STM .REDB (ATS NON-CYBER 180)
  26271. * STM REDB. (CYBER 180)
  26272. REDG EQU *-1
  26273. LDD WC
  26274. SHN 2
  26275. ADD WC
  26276. ADN 1
  26277. UJN RED6 SET UP TO INPUT DATA
  26278. ERRNZ RED6-.RED6 IF TAGS OUT OF SYNC
  26279.  
  26280. RED5 LDC LBBY
  26281.  
  26282. * THE FOLLOWING CODE IS OVERLAID BY THE ATS INPUT LOOP IF ATS
  26283. * ON A NON-CYBER 180, OR BY THE IOU INPUT LOOP ON A CYBER 180.
  26284.  
  26285. .REDA EQU * BEGINNING OF OVERLAID CODE
  26286.  
  26287. RED6 STD BI
  26288. STD T1 PRESET BYTES REMAINING
  26289. RED7 IJM RED10,CH IF *1MT* FINISHED INPUT
  26290. RED8 EJM RED7,CH IF *1MT* TAKING DATA
  26291. EJM RED7,CH IF *1MT* TAKING DATA
  26292. EJM RED7,CH IF *1MT* TAKING DATA
  26293. EJM RED7,CH IF *1MT* TAKING DATA
  26294. FJM RED9,CH IF TIME FOR *1LT* TO TAKE DATA
  26295. UJN RED8 LOOP
  26296.  
  26297. RED9 IAM BUFB,CH INPUT THIS PP,S DATA
  26298. STD T1
  26299. UJN RED10 NOT LAST PARTIAL BLOCK
  26300. * NJN RED10 (IF NOT BLOCK TOO LARGE)
  26301. REDE EQU *-1
  26302. DCN CH+40 TERMINATE TRANSFER
  26303.  
  26304. .REDAL EQU *-.REDA LENGTH OF OVERLAID AREA
  26305.  
  26306. RED10 LDD BI CALCULATE BYTES INPUT
  26307. SBD T1
  26308. STD BT
  26309. ADN 4
  26310. STD T2
  26311. SHN 1 13*BYTES
  26312. ADD T2
  26313. SHN 2
  26314. ADD T2
  26315. SHN 14 (-6) (13*BYTES)/64
  26316. STD T0
  26317. SHN 6+2 4*13*BYTES (52*BYTES)
  26318. SBD T2 51*BYTES
  26319. ADD T0 (51*BYTES)+((13*BYTES)/64)
  26320. SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
  26321. STD WT WORDS TO TRANSFER
  26322. LDC /MTX/LBWD ADVANCE POINTER OVER DATA *1MT* PUT IN
  26323. RJM ADP
  26324. LDD WT ADVANCE POINTER FOR THIS TRANSFER
  26325. RJM ADP
  26326. RJM WDA WRITE DATA
  26327. LDD BT
  26328. LMC LBBY
  26329. NJN RED12 IF NOT FULL BLOCK
  26330. LJM RED3 LOOP
  26331.  
  26332. RED11 LDN 0 SET NO DATA READ
  26333. STD BT
  26334. STD WT
  26335. RED12 LDD MA SEND RESPONSE TO *1MT*
  26336. CWD CR
  26337. LJM RED WAIT FOR *1MT* TO INDICATE WHAT TO DO
  26338. WRT SPACE 4,10
  26339. ** WRT - WRITE TAPE.
  26340. * THIS ROUTINE TRANSFERS CHUNKS 2, 4, 6, ... OF THE BLOCK.
  26341. * IT EXITS TO *WSB* AND RETURNS WITH TRANSFER INFORMATION
  26342. * IN *OV* AND *WC* IF IT IS NEEDED TO HELP TRANSFER A BLOCK.
  26343. *
  26344. * CALLS ADP, OPA, OPD, OPE, OPI, OPL, RDA, WSB.
  26345.  
  26346.  
  26347. WRT RJM WSB WAIT FOR *1MT* START INDICATION
  26348. LDD WC SET BYTES IN LAST BLOCK
  26349. STD BI
  26350. ADN 4
  26351. STD T2
  26352. SHN 1 13*BYTES
  26353. ADD T2
  26354. SHN 2
  26355. ADD T2
  26356. SHN 14 (-6) (13*BYTES)/64
  26357. STD T0
  26358. SHN 6+2 4*13*BYTES (52*BYTES)
  26359. SBD T2 51*BYTES
  26360. ADD T0 (51*BYTES)+((13*BYTES)/64)
  26361. SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
  26362. STD WC
  26363. LDN 0
  26364. WRT1 IJM WRT9,CH IF ERROR
  26365. EJM WRT1,CH IF DATA TRANSFER NOT STARTED
  26366. * UJN WRT2 (CYBER 180)
  26367. WRTA EQU *-2
  26368.  
  26369. * PREPARE TO OUTPUT NEXT CHUNK.
  26370.  
  26371. WRT2 LDC /MTX/LBWD SKIP CHUNK WRITTEN BY *1MT*
  26372. RJM ADP
  26373. LDD OV
  26374. ZJN WRT5 IF 1LT WILL FINISH
  26375. LCN 2 DECREMENT CHUNK COUNT
  26376. RAD OV
  26377. NJN WRT3 IF NOT EVEN MULTIPLE OR NOT DONE
  26378. LDD BI
  26379. NJN WRT6 IF NOT FULL CHUNK
  26380. LJM WRT7 FULL CHUNK WITH TERMINATION
  26381.  
  26382. WRT3 SBN 1
  26383. PJN WRT6 IF NOT COMPLETE
  26384. ADN 1
  26385. MJN WRT4 IF POSSIBLE PARTIAL BLOCK
  26386. LDD BI
  26387. ZJN WRT7 IF TERMINATION BLOCK
  26388. UJN WRT6 SET UP POINTERS
  26389.  
  26390. WRT4 LDD WC
  26391. NJN WRT8 IF *1LT* WILL FINISH WRITE
  26392. WRT5 LJM WRT9 SEND RESPONSE TO *1MT*
  26393.  
  26394. WRT6 LDC /MTX/LBWD SET UP POINTERS
  26395. RJM ADP
  26396. RJM RDA READ DATA
  26397. LDC LBBY OUTPUT DATA
  26398. STD BT
  26399. RJM OPD OUTPUT DATA
  26400. * RJM OPA (ATS NON-CYBER 180)
  26401. * RJM OPI (CYBER 180)
  26402. WRTB EQU *-1
  26403. NJN WRT9 IF TRANSFER INCOMPLETE
  26404. LJM WRT2 SET UP TO OUTPUT NEXT CHUNK
  26405.  
  26406. WRT7 LDC LBBY
  26407. STD BI
  26408. LDC /MTX/LBWD
  26409. WRT8 RJM ADP
  26410. RJM RDA READ DATA
  26411. LDD BI
  26412. LPC 7776 WRITE EVEN BYTE COUNT
  26413. WRTE EQU *-2
  26414. * UJN WRT8.1 (NOT LI FORMAT)
  26415. ADN 1
  26416. WRT8.1 RJM OPD OUTPUT DATA
  26417. * RJM OPL (ATS NON-CYBER 180 - OUTPUT LAST CHUNK)
  26418. * RJM OPE (CYBER 180 - OUTPUT LAST CHUNK
  26419. WRTC EQU *-1
  26420. FJM *,CH
  26421. NJN WRT9 IF INCOMPLETE TRANSFER
  26422. UJN WRT8.2
  26423. WRTD EQU *-1
  26424.  
  26425. * DELAY 10 MICROSECONDS TO PREVENT A HARDWARE ERROR IN THE
  26426. * CCC. THE DISCONNECT WOULD SOMETIMES CAUSE THE LAST BYTE TO
  26427. * BE LOST.
  26428.  
  26429. * LDN 20 (CTS)
  26430. SBN 1
  26431. NJN *-1
  26432. WRT8.2 DCN CH+40
  26433. WRT9 STD BT SAVE BYTES REMAINING
  26434. LDD MA SEND RESPONSE TO *1MT*
  26435. CWD CR
  26436. LJM WRT LOOP FOR NEXT BLOCK
  26437. TITLE SUBROUTINES.
  26438. ADP SPACE 4,10
  26439. ** ADP - ADVANCE POINTER.
  26440. *
  26441. * ENTRY (PT - PT+1) = IN POINTER.
  26442. * (A) = WORDS TO INCREMENT IN POINTER BY.
  26443. *
  26444. * EXIT (T4 - T5) = STARTING IN POINTER.
  26445. * (PT - PT+1) = UPDATED IN POINTER.
  26446. * (T6) = FIRST PART WORD COUNT.
  26447. *
  26448. * MACROS SADT.
  26449.  
  26450.  
  26451. ADP SUBR ENTRY/EXIT
  26452. STD T6
  26453. ADPA UJN ADP2 NOT READ SKIP
  26454. * PSN (READ SKIP)
  26455. LDD RS
  26456. SHN 14
  26457. LMD RS+1
  26458. SBD T6
  26459. PJN ADP1 IF STILL ROOM FOR ENTIRE BLOCK
  26460. RAD T6 ADJUST WORD COUNT
  26461. LDN 0 SET BUFFER FULL
  26462. ADP1 STD RS+1
  26463. SHN -14
  26464. STD RS
  26465. ADP2 LDD PT SAVE IN
  26466. STD T4
  26467. LDD PT+1
  26468. STD T5
  26469. LDN 0 PRESET SECOND PART WORD COUNT
  26470. STD T7
  26471. LDD T6 UPDATE IN
  26472. RAD PT+1
  26473. SHN -14
  26474. RAD PT
  26475. SHN 14
  26476. LMD PT+1
  26477. SADT .LM,C
  26478. ADC -* (-LIMIT)
  26479. MJN ADPX IF NO WRAP AROUND
  26480. STD T7 SET SECOND PART WORD COUNT
  26481. SADT .FT
  26482. ADC * (FIRST)
  26483. STD PT+1
  26484. SHN -14
  26485. STD PT
  26486. LDD T6 RESET FIRST PART WORD COUNT
  26487. SBD T7
  26488. STD T6
  26489. LJM ADPX RETURN
  26490. CPD SPACE 4,10
  26491. ** CPD - CHECK PP DROP OUT.
  26492. *
  26493. * ENTRY (IR+4) = *1MT* INPUT REGISTER ADDRESS.
  26494. *
  26495. * EXIT EXIT TO DPP IF *1MT* GONE.
  26496. *
  26497. * USES CM - CM+4.
  26498.  
  26499.  
  26500. CPD SUBR ENTRY/EXIT
  26501. CPDA LDC 0 (*ACPP* ADDRESS)
  26502. CRD CM GET CP ASSIGNMENT
  26503. LDD CM+2
  26504. LMD CP
  26505. NJN CPD1 IF NOT CORRECT CP ASSIGNMENT
  26506. LDD IR+4 GET INPUT REGISTER
  26507. CRD CM
  26508. LDD CM+1
  26509. SCN 77
  26510. SHN 6
  26511. LMD CM
  26512. LMC 3RT1M
  26513. NJN CPD1 IF NOT *1MT*
  26514. LDD CM+3
  26515. LMD IR+3
  26516. LPN 37
  26517. ZJN CPDX IF CORRECT CHANNEL
  26518. CPD1 LJM DPP DROP PPU
  26519. INM SPACE 4,10
  26520. ** INM - INSTRUCTION MODIFICATION.
  26521. *
  26522. * ENTRY (A) = FWA OF INSTRUCTION MODIFICATION LIST.
  26523. *
  26524. * NOTE FET ADDRESS AND BLOCK SIZE ARE NOT AVAILABLE IN *1LT*.
  26525. *
  26526. * USES SC, CM+4, CM+5, T2 - CM+3.
  26527.  
  26528.  
  26529. INM SUBR ENTRY/EXIT
  26530. ZJN INMX IF NO MODIFICATIONS
  26531. STD SC
  26532. INMA LDC * SET FIRST
  26533. STD .FT+1
  26534. SHN -14
  26535. STD .FT
  26536. INMB LDC * SET LIMIT
  26537. STD .LM+1
  26538. SHN -14
  26539. STD .LM
  26540. SBD .FT
  26541. SHN 14
  26542. ADD .LM+1
  26543. SBD .FT+1
  26544. STD .LF+1
  26545. SHN -14
  26546. STD .LF
  26547. INM1 LDI SC
  26548. ZJN INMX IF END OF LIST
  26549. SHN 21-0
  26550. STD T1 SAVE INSTRUCTION ADDRESS
  26551. SHN -21
  26552. SHN 1 COMPLEMENT FLAG * 2
  26553. LMC UJNI+3
  26554. STM INMC
  26555. LDI T1 PRESERVE INSTRUCTION OP CODE
  26556. SCN 77
  26557. STI T1
  26558. LDM 1,SC EXTRACT DIRECT CELL TO REFERENCE
  26559. SHN 14
  26560. STD CM+4
  26561. SCN 77 CLEAR DIRECT CELL ADDRESS
  26562. SHN 3 EXTRACT BIAS
  26563. STD CM+5
  26564. SCN 7 CLEAR BIAS
  26565. ADI CM+4 ADD UPPER PORTION OF VALUE
  26566. PJN INM2 IF RELATIVE VALUE DESIRED
  26567. SHN 6
  26568. SCN 40 CLEAR ABSOLUTE FLAG
  26569. ADD RA
  26570. SHN 14
  26571. INM2 SHN 14
  26572. ADM 1,CM+4 ADD LOWER PORTION OF VALUE
  26573. ADD CM+5 ADD BIAS
  26574.  
  26575. * NOTE CODE SHOULD NOT BE ADDED IN NEXT THREE LINES.
  26576.  
  26577. INMC UJN 3 COMPLEMENT NOT NEEDED
  26578. * UJN 1 COMPLEMENT NEEDED
  26579. LMC -0
  26580. STM 1,T1 MODIFY INSTRUCTION
  26581. SHN -14
  26582. RAI T1
  26583. LDN 2 INCREMENT TO NEXT ITEM IN LIST
  26584. RAD SC
  26585. LJM INM1 LOOP
  26586. ITS SPACE 4,10
  26587. ** ITS - INDICATE *1LT* TRANSFER STARTED.
  26588. *
  26589. * ENTRY (A) = BYTE COUNT.
  26590. *
  26591. * EXIT (A) = BYTE COUNT.
  26592.  
  26593.  
  26594. ITS SUBR ENTRY/EXIT
  26595. STD T0 SAVE BYTE COUNT
  26596. LDD MA INDICATE *1LT* TRANSFER STARTED
  26597. ADN 1
  26598. CWD ZR
  26599. LDD T0 RESTORE (A)
  26600. UJN ITSX RETURN
  26601. OPA SPACE 4,10
  26602. ** OPA - OUTPUT DATA TO ATS UNIT (NON-CYBER 180).
  26603. *
  26604. * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
  26605. *
  26606. * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
  26607.  
  26608.  
  26609. OPA SUBR ENTRY/EXIT
  26610. AJM *,CH WAIT FOR *1MT* TO OUTPUT CHUNK
  26611. PSN DELAY TO ALLOW *1MT* TO REACTIVE CHANNEL
  26612. PSN
  26613. OAM BUFB,CH OUTPUT DATA
  26614. FJM *,CH
  26615. DCN CH+40 INDICATE TO *1MT* TO RESUME OUTPUT
  26616. NJN OPAX IF INCOMPLETE TRANSFER
  26617. ACN CH
  26618. UJN OPAX RETURN
  26619. OPD SPACE 4,10
  26620. ** OPD - OUTPUT DATA TO MTS UNIT (NON-CYBER 180).
  26621. *
  26622. * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
  26623. *
  26624. * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
  26625.  
  26626.  
  26627. OPD2 FJM OPD1,CH IF *1MT* OUTPUTTING DATA
  26628. FJM OPD1,CH IF *1MT* OUTPUTTING DATA
  26629. FJM OPD1,CH IF *1MT* OUTPUTTING DATA
  26630. OAM BUFB,CH OUTPUT DATA
  26631.  
  26632. OPD SUBR ENTRY/EXIT
  26633. OPD1 FJM OPD1,CH IF *1MT* OUTPUTTING DATA
  26634. FJM OPD1,CH IF *1MT* OUTPUTTING DATA
  26635. UJN OPD2
  26636. OPI SPACE 4,10
  26637. ** OPI - OUTPUT DATA FROM CYBER 180 IOU.
  26638. *
  26639. * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
  26640. *
  26641. * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
  26642. *
  26643. * CALLS ITS, WTS.
  26644.  
  26645.  
  26646. OPI SUBR ENTRY/EXIT
  26647. RJM WTS WAIT FOR *1MT* TRANSFER TO START
  26648. OPI1 IJM OPIX,CH IF *1MT* OUTPUT SHORT CHUNK
  26649. SCF OPI1,CH WAIT FOR *1MT* TO CLEAR CHANNEL FLAG
  26650. RJM ITS INDICATE *1LT* TRANSFER STARTED
  26651. OAM BUFB,CH
  26652. NJN OPIX IF INCOMPLETE TRANSFER
  26653. CCF *,CH SIGNAL *1MT* TO START OUTPUT
  26654. UJN OPIX RETURN
  26655. OPE SPACE 4,10
  26656. ** OPE - OUTPUT ENDING CHUNK FROM CYBER 180 IOU.
  26657. *
  26658. * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
  26659. *
  26660. * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
  26661. *
  26662. * CALLS ITS, WTS.
  26663.  
  26664.  
  26665. OPE SUBR ENTRY/EXIT
  26666. RJM WTS WAIT FOR *1MT* TRANSFER TO START
  26667. OPE1 IJM OPE2,CH IF *1MT* OUTPUT SHORT CHUNK
  26668. SCF OPE1,CH WAIT FOR *1MT* TO CLEAR CHANNEL FLAG
  26669. RJM ITS INDICATE *1LT* TRANSFER STARTED
  26670. OAM BUFB,CH
  26671. OPE2 CCF *,CH CLEAR CHANNEL FLAG
  26672. UJN OPEX RETURN
  26673. OPL SPACE 4,10
  26674. ** OPL - OUTPUT LAST PARTIAL CHUNK TO ATS UNIT (NON-CYBER 180).
  26675. *
  26676. * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
  26677. *
  26678. * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
  26679.  
  26680.  
  26681. OPL SUBR ENTRY/EXIT
  26682. AJM *,CH WAIT FOR *1MT* TO OUTPUT CHUNK
  26683. PSN DELAY TO ALLOW *1MT* TO REACTIVATE CHANNEL
  26684. PSN
  26685. OAM BUFB,CH OUTPUT LAST PARTIAL CHUNK
  26686. UJN OPLX RETURN
  26687. RDA SPACE 4,10
  26688. ** RDA - READ DATA FROM CENTRAL.
  26689. *
  26690. * ENTRY (T4 - T5) = IN POINTER.
  26691. * (T6) = FIRST PART WORD COUNT.
  26692. * (T7) = SECOND PART WORD COUNT.
  26693. *
  26694. * MACROS SADT.
  26695.  
  26696.  
  26697. RDA SUBR ENTRY/EXIT
  26698. LDD T6
  26699. ZJN RDAX IF NO FIRST PART
  26700. SHN 2
  26701. ADD T6
  26702. ADC BUFB
  26703. STM RDAA
  26704. LDD T4 READ FIRST PART
  26705. SHN 6
  26706. ADD RA
  26707. SHN 6
  26708. ADD T5
  26709. CRM BUFB,T6
  26710. LDD T7
  26711. ZJN RDAX IF NO SECOND PART
  26712. SADT .FT,,,A
  26713. LDC * READ SECOND PART
  26714. CRM *,T7
  26715. RDAA EQU *-1
  26716. UJN RDAX RETURN
  26717. WDA SPACE 4,10
  26718. ** WDA - WRITE DATA TO CENTRAL.
  26719. *
  26720. * ENTRY (T4 - T5) = IN POINTER.
  26721. * (T6) = FIRST PART WORD COUNT.
  26722. * (T7) = SECOND PART WORD COUNT.
  26723. *
  26724. * MACROS SADT.
  26725.  
  26726.  
  26727. WDA SUBR ENTRY/EXIT
  26728. LDD T6
  26729. ZJN WDAX IF NO FIRST PART
  26730. SHN 2
  26731. ADD T6
  26732. ADC BUFB
  26733. STM WDAA
  26734. LDD T4 TRANSFER FIRST PART
  26735. SHN 6
  26736. ADD RA
  26737. SHN 6
  26738. ADD T5
  26739. CWM BUFB,T6
  26740. LDD T7
  26741. ZJN WDAX IF NO SECOND PART
  26742. SADT .FT,,,A
  26743. LDC * TRANSFER SECOND PART
  26744. CWM *,T7
  26745. WDAA EQU *-1
  26746. UJN WDAX RETURN
  26747. WSB SPACE 4,10
  26748. ** WSB - WAIT START OF BLOCK FROM *1MT*.
  26749. *
  26750. * USES CM - CM+4.
  26751. *
  26752. * CALLS CPD, INM.
  26753. *
  26754. * MACROS PAUSE.
  26755.  
  26756.  
  26757. WSB SUBR ENTRY/EXIT
  26758. WSB1 LDN CMCL
  26759. CRD CM
  26760. LDD CP
  26761. SHN -7
  26762. LMD CM
  26763. NJN WSB3 IF MOVE FLAG NOT SET FOR THIS CP
  26764. LDD IR+4 CHECK IF *1MT* PAUSED
  26765. ADN 1
  26766. CRD CM
  26767. LDD CM
  26768. ZJN WSB3 IF NO FUNCTION
  26769. SHN 21-10 CHECK STORAGE MOVE ALLOWED (BIT 56)
  26770. MJN WSB2 IF STORAGE MOVE ALLOWED
  26771. SHN 10-21 RESTORE BYTE TO ORIGINAL POSITION
  26772. SBN SMAM
  26773. MJN WSB3 IF STORAGE MOVE NOT ALLOWED
  26774. SBN CPUM-SMAM
  26775. PJN WSB3 IF STORAGE MOVE NOT ALLOWED
  26776. WSB2 PAUSE NE
  26777. LDC ADDR MODIFY INSTRUCTIONS
  26778. RJM INM
  26779. WSB3 RJM CPD CHECK IF *1MT* STILL AROUND
  26780. LDD MA
  26781. CRD CC
  26782. LDD CC
  26783. LMN 1
  26784. NJN WSB4 IF NOT START OF BLOCK
  26785. STD CC ACKNOWLEDGE BLOCK START UP
  26786. LDD MA
  26787. CWD CC
  26788. LJM WSBX RETURN
  26789.  
  26790. WSB4 LMN 3&1
  26791. NJN WSB5 IF NOT READ SKIP OPERATION
  26792. STD CC
  26793. STM ADPA ENABLE READ SKIP
  26794. LDD MA ACKNOWLEDGE TRANSFER
  26795. CWD CC
  26796. LDD CC+3 SET AMOUNT OF SPACE IN BUFFER
  26797. STD RS
  26798. LDD CC+4
  26799. STD RS+1
  26800. WSB5 LJM WSB1 LOOP
  26801.  
  26802. ADDR TSAD ADDRESS RELOCATION INFORMATION
  26803. WTS SPACE 4,10
  26804. ** WTS - WAIT FOR *1MT* TRANSFER TO START.
  26805. *
  26806. * ENTRY (A) = BYTE COUNT.
  26807. *
  26808. * EXIT (A) = BYTE COUNT.
  26809. *
  26810. * USES CM - CM+4.
  26811. *
  26812. * CALLS CPD.
  26813.  
  26814.  
  26815. WTS3 LDC * (BYTE COUNT)
  26816. WTSA EQU *-1
  26817.  
  26818. WTS SUBR ENTRY/EXIT
  26819. STM WTSA SAVE BYTE COUNT
  26820. WTS1 LDD MA CHECK *1MT*/*1LT* INTERLOCK
  26821. ADN 1
  26822. CRD CM
  26823. LDD CM
  26824. NJN WTS3 IF *1MT* TRANSFER STARTED
  26825. RJM CPD CHECK IF *1MT* PP DROPPED OUT
  26826. LDN 24 DELAY 10 MICROSECONDS
  26827. WTS2 SBN 1
  26828. NJN WTS2 IF NOT DONE
  26829. UJN WTS1 CHECK INTERLOCK
  26830. SPACE 4,10
  26831. BUFFER BUFB
  26832. TITLE PRESET.
  26833. PRS SPACE 4,10
  26834. ** PRS - PRESET.
  26835. *
  26836. * CALLS CPD, INM, MCH.
  26837. *
  26838. * MACROS CHTL.
  26839.  
  26840.  
  26841. PRS SUBR ENTRY/EXIT
  26842. LDK PPCP
  26843. CRD CM
  26844. LDD IR+4
  26845. SBD CM+4
  26846. SHN PPXES-PPCES SET EXTENDED PP COMMUNICATION BLOCK OFFSET
  26847. STD T1
  26848. LDD CM SET *ACPP* ADDRESS
  26849. SHN 14
  26850. ADD CM+1
  26851. ADD T1
  26852. ADK ACPP
  26853. STM CPDA+1
  26854. SHN -14
  26855. RAM CPDA
  26856. RJM CPD CHECK FOR DROP OUT OF *1MT*
  26857. LDD IR+4 READ PARAMETERS
  26858. ADN 3
  26859. CRD CM
  26860. LDD CM+1 SET FIRST
  26861. RAM INMA
  26862. LDD CM+2
  26863. STM INMA+1
  26864. LDD CM+3 SET LIMIT
  26865. RAM INMB
  26866. LDD CM+4
  26867. STM INMB+1
  26868. LDN ZERL SET ACKNOWLEDGE TO *1MT*
  26869. CRD ZR
  26870. LDD MA SET UP FOR REQUESTS FOR *1MT*
  26871. CWD ZR
  26872. ADN 1 PRESET *1MT*/*1LT* INTERLOCK
  26873. CWD ZR
  26874. LDN 2
  26875. STD CR
  26876. LDD IR+4 TELL *1MT* THAT *1LT* IS LOADED
  26877. ADN 3
  26878. CWD ZR
  26879. LDD IR+3 SET MTS/ATS CONTROLLER FLAG
  26880. SHN 14
  26881. STM PRSA
  26882. STM PRSB
  26883. SHN 6
  26884. LPN 37
  26885. STD IR+3
  26886. LDC TCHS MODIFY CHANNELS
  26887. STD T1
  26888. UJN PRS2 ENTER LOOP TO MODIFY INSTRUCTIONS
  26889.  
  26890. PRS1 RAI T2
  26891. AOD T1
  26892. PRS2 LDI T1 MODIFY CHANNEL INSTRUCTIONS
  26893. STD T2
  26894. LDD IR+3
  26895. CHTL *
  26896. SBN CH
  26897. NJN PRS1 IF MORE CHANNELS TO MODIFY
  26898. LDC ADDR MODIFY INSTRUCTIONS
  26899. RJM INM
  26900. LDD IR+2
  26901. SHN 21-7
  26902. PJN PRS2.1 IF NOT CTS
  26903. LDC LDNI+20 DELAY BEFORE DISCONNECT
  26904. STM WRTD
  26905. PRS2.1 LDK MABL
  26906. CRD CM
  26907. LDD CM+1
  26908. SHN -6
  26909. LPN 41
  26910. LMN 1
  26911. ZJN PRS3 IF CYBER 180 IOU
  26912. LDD IR+2
  26913. LPN 77
  26914. NJN PRS4 IF WRITE
  26915. LJM PRS6 PRESET FOR READ
  26916.  
  26917. PRS3 LJM PRS9 PRESET FOR CYBER 180
  26918.  
  26919. PRS4 LDC 0
  26920. PRSA EQU *-1
  26921. SHN 21-4
  26922. PJN PRS5 IF MTS CONTROLLER
  26923. LDC OPA SET ATS OUTPUT ROUTINE
  26924. STM WRTB
  26925. LDC OPL
  26926. STM WRTC
  26927. PRS5 LJM PRSX RETURN
  26928.  
  26929. PRS6 LDM DLYA
  26930. LPN 10
  26931. ZJN PRS7 IF 1X PPU SPEED
  26932. LDC LDNI+77 RESET DELAY FOR 2X PPU SPEED
  26933. STM REDC
  26934. PRS7 LDC 0 CHECK CONTROLLER TYPE
  26935. PRSB EQU *-1
  26936. SHN 21-4
  26937. PJN PRS5 IF MTS CONTROLLER
  26938. LDC NJNI+.RED8-.REDB MODIFY INSTRUCTIONS
  26939. STM REDA
  26940. LDC UJNI+.RED8-.REDB
  26941. STM REDD
  26942. LDC UJNI+RED3-REDB
  26943. STM REDB
  26944. LDC .REDB
  26945. STM REDF
  26946. STM REDG
  26947. LDN .REDRL-1 MOVE ATS INPUT LOOP
  26948. STD T1
  26949. PRS8 LDM .REDR,T1
  26950. STM .REDA,T1
  26951. SOD T1
  26952. PJN PRS8 IF MOVE NOT DONE
  26953. LDC .REDC MODIFY CHANNELS
  26954. RJM MCH
  26955. LJM PRSX RETURN
  26956.  
  26957. * PRESET FOR CYBER 180.
  26958.  
  26959. PRS9 LDC OPI MODIFY INSTRUCTIONS
  26960. STM WRTB
  26961. LDC OPE
  26962. STM WRTC
  26963. LDC NJNI+RED8.-REDB.
  26964. STM REDA
  26965. LDC UJNI+RED8.-REDB.
  26966. STM REDD
  26967. LDC UJNI+RED3-REDB
  26968. STM REDB
  26969. LDC REDB.
  26970. STM REDF
  26971. STM REDG
  26972. LDN REDRL.-1 MOVE IOU LOOP
  26973. STD T1
  26974. PRS10 LDM REDR.,T1
  26975. STM .REDA,T1
  26976. SOD T1
  26977. PJN PRS10 IF MOVE NOT COMPLETE
  26978. LDC REDC. MODIFY CHANNELS
  26979. RJM MCH
  26980. LDC UJNI+WRT2-WRTA MODIFY *WRTA*
  26981. STM WRTA
  26982. LJM PRSX RETURN
  26983. SPACE 4,10
  26984. TCHS CHTB CHANNEL TABLE
  26985. TITLE PRESET SUBROUTINES.
  26986. RED SPACE 4,10
  26987. ** ATS INPUT LOOP (NON-CYBER 180).
  26988.  
  26989.  
  26990. .REDR BSS 0
  26991. LOC .REDA
  26992.  
  26993. .RED6 AJM *,CH WAIT FOR *1MT* TO DCN CHANNEL
  26994. STD BI SAVE BYTES TO INPUT
  26995. STD T1
  26996. .RED7 IJM RED11,CH IF *1MT* FINISHED INPUT
  26997. EJM .RED7,CH IF DATA NOT AVAILABLE
  26998. IAM BUFB,CH
  26999. DCN CH+40 INDICATE TO *1MT* TO CONTINUE READ
  27000. .REDB NJN .RED8 IF END OF BLOCK
  27001. * UJN .RED8 (LAST PARTIAL BLOCK BEING READ)
  27002. ACN CH
  27003. .RED8 STD T1 SAVE BYTES REMAINING
  27004. .RED9 IJM RED10,CH IF *1LT* FINISHED INPUT
  27005. EJM .RED9,CH IF *1MT* NOT TAKING DATA YET
  27006. UJN RED10 COMPUTE WORD COUNT
  27007.  
  27008. LOC *O
  27009. .REDRL EQU *-.REDR LENGTH OF ATS INPUT LOOP
  27010.  
  27011. ERRMI .REDAL-.REDRL OVERLAID CODE OVERFLOWED
  27012. MCH SPACE 4,10
  27013. ** MCH - MODIFY CHANNELS.
  27014. *
  27015. * ENTRY (A) = ADDRESS OF CHANNEL TABLE
  27016. *
  27017. * USES T1, T2.
  27018. *
  27019. * MACROS CHTL.
  27020.  
  27021.  
  27022. MCH1 RAI T2
  27023. AOD T1
  27024. MCH2 LDI T1
  27025. STD T2
  27026. LDD IR+3
  27027. CHTL *
  27028. MCHA SBN CH
  27029. NJN MCH1 IF MORE CHANNEL TO MODIFY
  27030.  
  27031. MCH SUBR ENTRY/EXIT
  27032. STD T1 SAVE ADDRESS
  27033. UJN MCH2 ENTER LOOP TO MODIFY CHANNELS
  27034.  
  27035. .REDC CHTB CHANNEL TABLE FOR ATS INPUT LOOP
  27036. RED SPACE 4,10
  27037. ** IOU INPUT LOOP (CYBER 180).
  27038.  
  27039. REDR. BSS 0
  27040. LOC .REDA
  27041. RED6. STD BI SAVE BYTES TO INPUT
  27042. STD T1
  27043. RJM WTS WAIT FOR *1MT* TRANSFER TO START
  27044. RED7. IJM RED11,CH IF *1MT* FINISHED INPUT
  27045. SCF RED7.,CH WAIT FOR *1MT* TO READ ITS CHUNK
  27046. RJM ITS INDICATE *1LT* TRANSFER STARTED
  27047. IAM BUFB,CH
  27048. NJN RED8. IF INCOMPLETE TRANSFER
  27049. * UJN RED8. LAST TRANSFER
  27050. REDB. EQU *-1
  27051. CCF *,CH SIGNAL *1MT* TO CONTINUE INPUT
  27052. RED8. STD T1
  27053. UJN RED10 COMPUTE WORD COUNT
  27054.  
  27055. LOC *O
  27056. REDRL. EQU *-REDR. LENGTH OF IOU INPUT LOOP
  27057.  
  27058. ERRMI .REDAL-REDRL. OVERLAID CODE OVERFLOWED
  27059.  
  27060. CHTL MCHA
  27061. REDC. CHTB CHANNEL TABLE FOR IOU INPUT LOOP
  27062. SPACE 4,10
  27063. TTL 1MT - PPU MAGNETIC TAPE EXECUTIVE.
  27064. END