cdc:nos2.source:opl871:1mt
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
- IDENT 1MT,PRS
- PERIPH
- BASE MIXED
- SST
- *COMMENT 1MT - PPU MAGNETIC TAPE EXECUTIVE.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- TITLE 1MT - PPU MAGNETIC TAPE EXECUTIVE.
- SPACE 4,10
- *** 1MT - PPU MAGNETIC TAPE EXECUTIVE.
- * R. E. TATE. 73/01/09.
- * D. D. SADLER. 74/05/01. (MTS)
- * L. C. HAAS. 77/07/15. (BLOCK - ID)
- * R. J. PRIEVE. 77/07/15. (ATS)
- * C. D. ROWE. 92/02/03. (CTS)
- SPACE 4,10
- *** 1MT - PROCESSES VARIOUS TAPE FUNCTIONS FOR *MAGNET*,
- * THE CPU MAGNETIC TAPE EXECUTIVE.
- SPACE 4,10
- *** CALL FORMAT.
- *
- * NORMAL CALL -
- *
- *T, IR 18/ *1MT*,6/0,12/ 0,12/ CH,12/ CSTA
- *
- * CH TAPE CHANNEL NUMBER.
- * CSTA CST ADDRESS.
- *
- * MAGNET INITIALIZATION CALL -
- *
- *T IR 18/ *1MT*,6/0,12/1,24/ ADDR
- *
- * ADDR STATUS WORD ADDRESS.
- *
- * STATUS WORD FORMAT -
- *
- *T 1/A,47/0,12/ IFL
- *
- * A *1MT* ACTIVE (CLEARED UPON COMPLETION).
- * IFL INITIALIZATION FLAGS.
- * 1 = *MAGNET* INITIALIZATION.
- * 3 = LEVEL 3 RECOVERY.
- SPACE 4,10
- *** ERROR MESSAGES.
- *
- * NOTE - MESSAGES ARE ISSUED TO THE ERROR LOG IN THE FORM OF A
- * 3 CHARACTER MNEMONIC. THESE MNEMONICS ARE LISTED IN
- * PARENTHESES.
- *
- * *ERASE LIMIT.* (ERA)
- *
- * THIS MESSAGE IS POSTED IF, (A) IN *PE* OR *GCR*
- * MODE, IF THE CURRENT BLOCK COULD NOT BE RE-WRITTEN PROPERLY
- * AFTER FORTY ERASURES, (APPROXIMATELY 15 FEET OF
- * TAPE), OR (B) IN *NRZI* MODE, THAT THE CURRENT BLOCK
- * COULD NOT BE RE-WRITTEN DUE TO RECEIVING PARITY ERROR(S)
- * AFTER FORTY ATTEMPTS TO ERASE A SINGLE AREA ON TAPE.
- *
- *
- * *MARGINALLY WRITTEN TAPE.* (MWT)
- *
- * THIS MESSAGE IS POSTED IF SOME OR ALL OF THE PREVIOUS GOOD
- * BLOCKS USED TO CREATE THE RECOVERY BLOCK ID WINDOW CANNOT BE
- * READ WITH ERROR CORRECTION ENABLED DURING REPOSITIONING OF
- * THE TAPE FOR WRITE RECOVERY.
- *
- *
- * *POSITION LOST.* (PLO)
- *
- * THIS MESSAGE IS POSTED IF, (A) A BLOCK ID MIS-MATCH
- * OCCURS OR, (B) IF THE BLOCK ID WINDOW IS ALL ONES IT
- * INDICATES THAT A NOS TERMINATOR LABEL MIS-MATCH HAS
- * OCCURRED. IN EITHER CASE, THE POSITION ON THE TAPE CANNOT
- * BE ESTABLISHED AND THE JOB MUST BE TERMINATED.
- *
- *
- * *READ ID BURST FAILURE.* (BFR)
- *
- * THIS MESSAGE IS ISSUED TO THE *E,P* DISPLAY IN THE FORM *READ
- * ID BURST* TO INDICATE THAT THE P.E. OR G.C.R. SPECIAL
- * CHARACTERS TO BE READ BY THE SUBSYSTEM AT LOAD POINT IS NOT
- * POSSIBLE.
- *
- * WHEN THIS MESSAGE APPEARS, THE FOLLOWING ACTIONS SHOULD BE
- * TAKEN.
- *
- * THE OPERATOR SHOULD DISMOUNT THE MAGNETIC TAPE FROM THE
- * UNIT IN QUESTION, CLEAN THE HEAD ASSEMBLY, AND REMOUNT THE
- * MAGNETIC TAPE. THE OPERATOR SHOULD THEN ENTER *RETRY,EST.*.
- * THE SYSTEM WILL THEN RETRY THE ORIGINAL OPERATION FROM LOAD
- * POINT. IF NO ERRORS OCCUR, THE JOB WILL CONTINUE NORMAL
- * PROCESSING. IF THE ORIGINAL PROBLEM PERSISTS, THE MESSAGE
- * *READ ID BURST* WILL AGAIN BE ISSUED TO THE *E,P* DISPLAY.
- * THIS TIME THE OPERATOR OR C.E. SHOULD BE INSTRUCTED TO
- * ENTER *TERMINATE,EST.* TO ABORT THE OPERATION. THE
- * MESSAGE, *READ ID BURST FAILURE*, WILL APPEAR IN THE
- * DAYFILE.
- *
- *
- * *REPOSITION CORRECTED ERROR.* (RCE)
- *
- * THIS ERROR LOG MESSAGE IS USED TO ALERT THE C.E. TO
- * THE FACT THAT THE TRANSPORT IS WRITING IN A MARGINAL
- * STATE. THIS MESSAGE IS INTENDED TO PREVENT THE GENERATION
- * OF MARGINAL TAPE BY THE SUBSYSTEM AND IT-S DEVICES. THIS
- * MESSAGE IS TO BE CONSIDERED A MARGINAL DRIVE INDICATOR
- * (MDI) BY THE C.E. AND APPROPRIATE ACTION SHOULD BE TAKEN
- * IMMEDIATELY.
- *
- *
- * *TAPE CLEANER FAULT.* (TCF)
- *
- * DRIVER DETECTED FAILURE (TRANSPORT ASSIGNED TO JOB) -
- *
- * THIS MESSAGE IS ISSUED TO THE *E,P* DISPLAY IN THE
- * FORM *CLEANER FAULT* TO INDICATE THAT THE TAPE CLEANER
- * WAS NOT IN THE STOWED POSITION AFTER A *LOAD* OR A
- * *REWIND*. THE DRIVER HAS ALREADY UNLOADED THE TRANSPORT
- * AND THE ASSIGNED JOB IS LOOPING WAITING FOR TRANSPORT TO
- * COME *READY* AGAIN AND FOR *RETRY,EST.* TO BE ENTERED AT
- * THE CONSOLE. IF CORRECTIVE ACTION IS NOT POSSIBLE, THE
- * OPERATOR OR C.E. SHOULD ENTER *TERMINATE,EST.* TO
- * ABORT THE OPERATION. THE MESSAGE, *TAPE CLEANER
- * FAULT*, WILL APPEAR IN THE DAYFILE.
- *
- * SCANNER DETECTED FAILURE (TRANSPORT UNASSIGNED) -
- *
- * SINCE NO JOB HAS BEEN ASSIGNED TO THE TRANSPORT AT THIS
- * POINT, CORRECTIVE ACTION CAN BE INITIATED ON THE FAILING
- * UNIT BY CONTACTING A C.E. AND MOVING THE TAPE REEL TO
- * ANOTHER UNASSIGNED TRANSPORT. SINCE THE JOB WAS NEVER
- * ASSIGNED TO THE FAILING TRANSPORT, THIS UNASSIGNED
- * TRANSPORT CAN ASSUME THE DUTIES ORIGINALLY INTENDED FOR
- * THE FAILING DEVICE. IF NO OTHER TRANSPORT IS AVAILABLE,
- * AND CORRECTIVE ACTION IS POSSIBLE, AND COMPLETED, THE
- * TRANSPORT CAN BE RELOADED AND THE JOB SHOULD PROCESS AS
- * IF NO TAPE CLEANER FAULT EVER OCCURRED.
- *
- *
- * *WRITE ID BURST FAILURE.* (BFW)
- *
- * THIS MESSAGE IS ISSUED TO THE *E,P* DISPLAY IN THE FORM
- * *WRITE ID BURST* TO INDICATE THAT THE P.E. OR G.C.R. SPECIAL
- * CHARACTERS TO BE READ BY THE SUBSYSTEM AT LOAD POINT IS NOT
- * POSSIBLE.
- *
- * WHEN THIS MESSAGE APPEARS, THE FOLLOWING ACTIONS SHOULD
- * BE TAKEN.
- *
- * THE OPERATOR SHOULD DISMOUNT THE MAGNETIC TAPE FROM THE
- * UNIT IN QUESTION, CLEAN THE HEAD ASSEMBLY, AND REMOUNT THE
- * MAGNETIC TAPE. THE OPERATOR SHOULD THEN ENTER *RETRY,EST.*.
- * THE SYSTEM WILL THEN RETRY THE ORIGINAL OPERATION FROM LOAD
- * POINT. IF NO ERRORS OCCUR, THE JOB WILL CONTINUE NORMAL
- * PROCESSING. IF THE ORIGINAL PROBLEM PERSISTS, THE MESSAGE
- * *WRITE ID BURST* WILL AGAIN BE ISSUED TO THE *E,P* DISPLAY.
- * THIS TIME THE OPERATOR OR C.E. SHOULD BE INSTRUCTED TO
- * DISMOUNT AND REPLACE THE MAGNETIC TAPE REEL.
- *
- * WHEN THE NEW REPLACEMENT REEL OF TAPE IS MOUNTED ON THE
- * TRANSPORT AND THE UNIT GOES *READY* AND *RETRY,EST.* HAS
- * BEEN ENTERED AT THE CONSOLE, THE LABELS FROM THE DISREGARDED
- * REEL ARE WRITTEN ON THIS NEW REEL IF LABELED TAPE. IN
- * ANY CASE, THE EXTERNAL REEL IDENTIFICATION LABEL MUST BE
- * TRANSFERRED TO THE REPLACEMENT REEL. THE EXTERNAL REEL
- * IDENTIFICATION LABEL ON THE ORIGINAL DEFECTIVE REEL MUST BE
- * REMOVED TO PREVENT DUPLICATE REEL NUMBERS.
- *
- * IF THE ORIGINAL PROBLEM HAS BEEN OVERCOME, PROCESSING WILL
- * CONTINUE AS NORMAL. IF THE PROBLEM PERSISTS, THE OPERATOR
- * OR C.E. SHOULD BE INSTRUCTED TO ENTER *TERMINATE,EST.* TO
- * ABORT THE OPERATION. THE MESSAGE, *WRITE ID BURST
- * FAILURE*, WILL APPEAR IN THE DAYFILE.
- *
- *
- * *WRITE VERIFY FAILURE.* (WVF)
- *
- * THIS MESSAGE IS POSTED IF THE TAPE WAS POSITIONED PROPERLY
- * AND THE BLOCK ID OF THE WINDOW COULD BE READ CORRECTLY, BUT
- * THE GAP AND CURRENT BLOCK CANNOT BE READ.
- SPACE 4,10
- *** DEFINITIONS AND ABBREVIATIONS.
- *
- * THE FOLLOWING ARE TERMS THAT WILL BE USED THROUGHOUT
- * THIS ROUTINE.
- *
- * BID BLOCK ID.
- *
- * BOT BEGINNING OF TAPE.
- *
- * CHUNK THIS DEFINES THE PORTION OF A BLOCK HANDLED BY EACH
- * PPU DURING LONG BLOCK OPERATIONS.
- *
- * CTS CARTRIDGE TAPE SUBSYSTEM.
- *
- * EOT END OF TAPE.
- *
- * LGB LAST GOOD BLOCK.
- *
- * PCL PROGRAMMABLE CLIPPING LEVEL.
- *
- * TM TAPE MARK.
- *
- * SNB SYSTEM NOISE BYTE.
- *
- * UBC UNUSED BIT COUNT. AS USED TO DEFINE THE EXACT NUMBER
- * OF BYTES AND FRAMES TO BE WRITTEN ON OR READ FROM
- * TAPE.
- *
- * UDT UNIT DESCRIPTOR TABLE. THE AREA OF *MAGNET,S*
- * FIELD LENGTH WHICH CONTAINS THE INFORMATION DESCRIBING
- * EACH TAPE UNIT AND THE CHARACTERISTICS OF THE TAPE
- * BEING PROCESSED.
- *
- * EXPLICIT PROCESSOR. DEFINES A CASE WHERE CERTAIN
- * UNITS CAN ONLY BE SERVICED BY CERTAIN COPIES
- * 0F *1MT* DUE TO CONFIGURATION RESTRICTIONS.
- SPACE 4,10
- *** PROGRAMMING CONSIDERATIONS.
- *
- * IN ORDER TO CONSERVE SPACE, THIS PROGRAM OVERLAYS ITSELF
- * EXTENSIVELY. IT IS DESIGNED TO MAKE MAXIMUM USE OF AREAS
- * THAT ARE NORMALLY SACRED SUCH AS THE 5 BYTE HEADER
- * ON PPU ROUTINES, FOR EXAMPLE. PLEASE TAKE DUE CARE
- * WHEN ATTEMPTING MODIFICATIONS.
- *
- * READ/WRITE OVERLAY GROUPS MUST BE IN THE FOLLOWING ORDER -
- * MAIN PROCCESOR.
- * LONG BLOCK PROCESSOR.
- * LABEL PROCESSOR.
- * ERROR PROCESSOR MUST BE LAST.
- *
- * REMEMBER WHEN READING/WRITING DIRECTLY FROM/TO THE UDT TO BE
- * SURE THAT *1MT* IS AT *MAGNET,S* CONTROL POINT.
- *
- * NOTE THE OVERLAY NAMES OF THE FOLLOWING OVERLAYS ARE HARD
- * CODED INTO EXECUTE MACROS. *LOV* CANNOT BE USED TO LOAD
- * THESE OVERLAYS BECAUSE THE CHANNEL MAY NOT BE RESERVED
- * OR CHANNEL PROBLEMS OCCURRED WHICH MUST BE DIAGNOSED
- * BEFORE ATTEMPTING MORE FUNCTIONS.
- * 3MA - INITIALIZE TAPE EXECUTIVE.
- * 3MB - FUNCTION REJECT PROCESSOR (ALL EXCEPT CTS).
- * 3MD - ATS/MTS SPECIAL MESSAGE PROCESSOR.
- *
- * USE THE CROSS REFERENCE TABLES WHEN TAGS ARE SHUFFLED.
- * IN PARTICULAR THE TAGS IN READ/WRITE ARE REFERENCED BY LONG
- * BLOCK OVERLAYS AT SEVERAL PLACES.
- SPACE 4,10
- *** RESIDENCY RECOMMENDATIONS.
- *
- * THE FOLLOWING IS A SUGGESTED ORDER OF PRIORITY FOR MAKING
- * ROUTINES CM OR ALTERNATE LIBRARY RESIDENCE.
- *
- * 1) CONTROL POINT/CODED PRESET.
- * 2) READ FUNCTION PROCESSOR.
- * 3) WRITE FUNCTION PROCESSOR.
- * 4) DROP PPU PROCESSOR.
- * 5) 1MT ITSELF.
- * 6) *3MB* IF RECOVERY FROM FUNCTION REJECTS DESIRED.
- SPACE 4,10
- *** DOCUMENTATION CONVENTIONS.
- *
- * TAG CONVENTIONS.
- * ASSUME A ROUTINE NAMED *ABC*.
- * *ABCA* - *ABCZ* WOULD BE CONSTANTS AND INSTRUCTIONS MODIFIED
- * *.EABC* WOULD BE FOR LOCATIONS REFERENCED BY THE ERROR
- * PROCESSOR.
- *
- * THE TERM *ATS-TYPE CONTROLLER* MEANS AN ATS, FSC, CMTS OR
- * ISMT CONTROLLER. IF IT IS NECESSARY TO DISTINGUISH BETWEEN
- * THESE FOUR TYPES, IT WILL BE EXPLICITLY DOCUMENTED.
- SPACE 4,10
- ** MISCELLANEOUS SYMBOL DEFINITIONS.
- *CALL COMPMAC
- *CALL COMSDFS
- *CALL COMSMSC
- SPACE 4,10
- ** MICRO DEFINITIONS.
- VERNUM MICRO 6,3,+"VER170"+
- SPACE 4,10
- ** CCC FUNCTION CODES FOR CTS.
- F0001 EQU 0001 RELEASE UNIT
- F0002 EQU 0002 CONTINUE
- F0010 EQU 0010 REWIND
- F0110 EQU 0110 REWIND/UNLOAD
- F0012 EQU 0012 GENERAL STATUS
- F0013 EQU 0013 FORESPACE BLOCK
- F0016 EQU 0016 LOCATE BLOCK
- F0113 EQU 0113 BACKSPACE BLOCK
- F0112 EQU 0112 DETAILED STATUS
- F0212 EQU 0212 READ BLOCK ID
- F0312 EQU 0312 READ BUFFERED LOG
- F0020 EQU 0020 CONNECT
- F0220 EQU 0220 CONNECT AND SELECT DATA COMPRESSION
- F0040 EQU 0040 READ FORWARD
- F0140 EQU 0140 READ REVERSE
- F0050 EQU 0050 WRITE
- F0250 EQU 0250 SHORT WRITE
- F0051 EQU 0051 WRITE TAPE MARK
- F0414 EQU 0414 AUTOLOAD
- SPACE 4,10
- ** TRACE CODE FOR CTS.
- TE EQU 0 = 1 TO ENABLE TRACE BUFFER
- SPACE 4,10
- ** CCC ERROR CODES FOR CTS.
- CE001 EQU 1 TRANSPORT NOT ON-LINE
- CE007 EQU 7 DENSITY MARK/BLOCK ID READ FAILURE
- CE012 EQU 12 WRITE ERROR AT LOAD POINT
- CE032 EQU 32 DRIVE BUSY
- CE033 EQU 33 CONTROL UNIT BUSY
- CE051 EQU 51 NO TAPE UNIT CONNECTED
- SPACE 4,10
- ** ERPA CODES FOR CTS.
- ER33 EQU 0#33 LOAD FAILURE
- SPACE 4,10
- ** ASSEMBLY CONSTANTS.
- QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS
- BUFC EQU 2765 BUFFER CONTROL WORD
- BUF EQU BUFC+5 FWA DATA BUFFER
- BUFL EQU BUF+5000 CONTROL WORD FOR LEVEL NUMBER
- LBBY EQU 3600 LONG BLOCK BYTES PER INPUT
- BUFB EQU 3750 SEE NOTE
- LICH EQU 12 LI FULL CHUNK COUNT
- LIRW EQU 400 LI REMAINDER IN WORDS
- CH EQU TC TAPE CHANNEL
- ERLA EQU 7775-2*500 ERROR PROCESSOR LOAD ADDRESS
- ERLB EQU 7775-1*500 SPECIAL ERROR PROCESSOR LOAD ADDRESS
- BLKS EQU 40 BLOCKS TO TRANSFER BEFORE REQUEST SWITCH
- BLKX EQU 3776 BLOCKS TO TRANSFER BEFORE SWITCH (ISMT)
- BLKC EQU 100 BLOCKS TO TRANSFER BEFORE SWITCH (CTS)
- SBLK EQU 400 BLOCKS TO SKIP BEFORE CHECKING ERROR FLAG
- LABL EQU 80D/2 LABEL LENGTH IN BYTES
- CLBL EQU 81D*8D/12D MAXIMUM LENGTH OF ANY LABEL BLOCK (CTS)
- LABW EQU 80D/2/5 CM WORDS IN LABEL
- SLBY EQU 2400 SKIP LI FORMAT BYTES PER INPUT
- ERAL EQU 45D ERASE LIMIT SET TO 15 FEET
- BCKS EQU 3 NUMBER OF BYTES TO CHECKSUM (POWER OF 2)
- LCKS EQU 5000 LENGTH TO USE IN CHECKSUM OF LONG BLOCKS
- MXBS EQU 76 MAXIMUM NUMBER OF CONSECUTIVE BACKSPACES
- ERRPL MXBS-100 MAXIMUM NUMBER OF BACKSPACES TOO LARGE
- * NOTE BUFB IS BUFFER FOR LONG BLOCK READS AND WRITES
- * AND ALSO THE ORIGIN ADDRESS FOR READ AND WRITE
- * ERROR PROCESSING. INCREASING IT,S VALUE WILL
- * INCREASE THE ALLOWABLE SIZE OF THE READ AND WRITE
- * LONG BLOCK OVERLAYS AND DECREASE THE MAXIMUM
- * LENGTH OF THE ERROR PROCESSORS.
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPCHI
- QUAL COMSCIO
- *CALL COMSCIO
- QUAL *
- QUAL CPS
- *CALL COMSCPS
- QUAL *
- QUAL EJT
- *CALL COMSEJT
- QUAL *
- QUAL EVT
- *CALL COMSEVT
- QUAL *
- *CALL COMSPIM
- QUAL SRU
- MT$ SET 1 ONLY ASSEMBLE MT INCREMENTS
- *CALL COMSSRU
- QUAL *
- QUAL SSD
- *CALL COMSSSD
- QUAL *
- *CALL COMSZOL
- LIST X
- QUAL MTX
- *CALL COMSMTX
- QUAL *
- LIST *
- SPACE 4,10
- **** DIRECT LOCATION ASSIGNMENTS.
- LOC 16
- T8 BSS 1 TEMPORARY
- T9 BSS 1 TEMPORARY
- ED BSS 1 EQUIPMENT DESCRIPTION
- HP BSS 1 HARDWARE PARAMETERS
- EO BSS 1 EST ORDINAL
- ES BSS 1 EXTENDED STATUS
- DS BSS 1 DEVICE STATUS
- EI BSS 1 ERROR ITERATIONS
- WP BSS 1 BID WINDOW POINTER (MTS/ATS)
- BL BSS 2 BLOCK COUNT
- UP BSS 1 USER OPTIONS, FLAGS
- LG BSS 2 LENGTH OF LAST GOOD RECORD
- EP BSS 2 ERROR PARAMETERS
- EC BSS 1 ERROR CODE
- * THE FOLLOWING FIVE CELLS ARE NOT WRITTEN BACK TO THE UDT ON
- * REQUEST COMPLETION BECAUSE SOME OVERLAYS USE *WC* AND *OV* AS
- * LOCAL CELLS.
- LT BSS 1 LABEL TYPE, DEVICE TYPE, REQUESTED DENSITY
- SP BSS 1 SOFTWARE OPTIONS
- FM BSS 1 TAPE FORMAT AND NOISE BYTE DEFINITION
- WC BSS 1 CM WORDS PER PRU
- OV BSS 1 CHUNK COUNT - LONG BLOCKS
- BSS 1 RESERVED
- TB BSS 1 BLOCK TYPE (READ)
- CF BSS 1 CHANNEL FLAGS
- * 13 - 10 = RESERVED
- * 7, 6 = 00 - ISMT CONTROLLER
- * = 01 - ATS/CMTS/FSC CONTROLLER
- * = 10 - MTS CONTROLLER
- * = 11 - CTS CONTROLLER
- * 5 - 1 = RESERVED
- * 0 = 64 CHARACTER SET FLAG
- BSS 1 RESERVED
- RS BSS 1 RETURN STATUS
- FN BSS 1 FUNCTION NUMBER
- MD BSS 1 DRIVER MODE FUNCTION
- PA BSS 1 PARAMETER
- PB BSS 1 PARAMETER
- BSS 2 (RA AND FL)
- SC BSS 1 SCRATCH
- BT BSS 1 BLOCKS TRANSFERRED/OVERLAY ENTRY ADDRESS
- BY BSS 1 BYTES TO BE PROCESSED
- CN BSS 5 CM BUFFER
- DF BSS 1 DROP OUT FLAG (SEE CDO)
- LOC *O
- ****
- TITLE GENERAL USAGE MACROS.
- BUFFER SPACE 4,10
- ** BUFFER - CHECK FOR BUFFER OVERFLOW.
- *
- * BUFFER B
- * B IF DEFINED MEANS CHECK FOR LONG BLOCK BUFFER (BUFB),
- * INSTEAD OF *BUF*.
- PURGMAC BUFFER
- BUFFER MACRO B
- MACREF BUFFER
- USE BUFFER
- IFC EQ,*B**,4
- LIST M
- ERRNG BUFC-* OVERFLOWED INTO BUFFER
- LIST *
- ELSE 3
- LIST M
- ERRNG BUFB-* OVERFLOWED INTO BUFFER
- LIST *
- ENDM
- CALL SPACE 4,10
- ** CALL - LOAD AND ENTER OVERLAY AT DEFINED ENTRY POINT.
- *
- *
- * CALL EPR
- * ENTRY *EPR* = DESIRED ENTRY POINT AS DEFINED BY ENTRY MACRO.
- PURGMAC CALL
- CALL MACRO EPR
- MACREF CALL
- LDN EPR/10000
- RJM LOV
- ENDM
- C6364 SPACE 4,10
- ** C6463 - GENERATE TABLE FOR MODIFICATION OF CONVERSION TABLES
- * FROM 64 TO 63 CHARACTER SET.
- *
- * C6463 MAC,CH,P
- * ENTRY *MAC* = MACRO TO BE CALLED TO GENERATE CHARACTERS.
- * *CH* = CHARACTER.
- * *P* = IF DEFINED, 1 ADDRESS BYTE AND 2 MODIFICATION
- * BYTES WILL BE GENERATED AND PLACED IN A SEPARATE TABLE.
- C6463 MACRO A,B,P
- LOCAL C,D
- C BSS 0
- LOC *O
- D BSS 0
- LOC C
- IFC EQ,*P**
- C63 RMT
- CON D-1
- A B
- C63 RMT
- ELSE
- C63P RMT
- CON D-2
- A B
- C63P RMT
- ENDIF
- ENDM
- ENTRY SPACE 4,10
- ** ENTRY - DEFINE OVERLAY ENTRY POINT.
- *
- *
- * ENTRY NAME
- * ENTRY *NAME* = NAME OF ENTRY ADDRESS.
- PURGMAC ENTRY
- ENTRY MACRO NAME
- MACREF ENTRY
- QUAL
- NAME EQU *+1R".MA"*10000
- QUAL ".QNAM"
- ENDM
- ERROVL SPACE 4,10
- ** ERROVL - TEST FOR OVERFLOW INTO ERROR PROCESSOR.
- *
- * ERROVL A
- * A IF DEFINED USE INSTEAD OF ORIGIN ADDRESS FOR OVERFLOW.
- PURGMAC ERROVL
- ERROVL MACRO A
- MACREF ERROVL
- IFC NE,/A//
- LIST M
- ERRNG ERLA-A OVERFLOWED INTO BUFFER
- LIST *
- ELSE
- LIST M
- ERRNG ERLA-* OVERFLOWED INTO BUFFER
- LIST *
- ENDIF
- ENDM
- JMP SPACE 4,10
- ** JMP - THREADED JUMP.
- *
- *
- * JMP ADDR
- * ENTRY *ADDR* = JUMP ADDRESS.
- JMP MACRO ADDR
- IF -DEF,.ADDR,1
- .ADDR MAX ADDR,*-40
- IFGT .ADDR,*-40
- UJN .ADDR
- .ADDR SET *-1
- ELSE 2
- .ADDR SET *
- LJM ADDR
- ENDM
- SADT SPACE 4,35
- ** SADT - SET ADDRESS TABLE MACRO.
- * THIS MACRO WILL GENERATE THE TABLE ENTRIES NECESSARY TO
- * PROVIDE SETTING ADDRESSES IN THE FOLLOWING 24 BIT
- * INSTRUCTION. ONE, TWO, OR THREE SETS OF TABLE ENTRIES
- * ARE GENERATED DEPENDING ON THE VALUE OF *.IM*. THE FIRST
- * SET OF TABLE ENTRIES IS FOR THE CURRENT OVERLAY. THE ONE OR
- * TWO ADDITIONAL ONES WILL BE GENERATED BASED ON THE FOLLOWING-
- *
- * IF .IM .NE. 0, A SET OF TABLE ENTRIES IS GENERATED FOR THE
- * ERROR PROCESSORS THAT FOLLOW.
- *
- * IF .IM = 2, A SET OF ADDRESSES IS GENERATED FOR THE LONG
- * BLOCK ROUTINE THAT FOLLOWS.
- *
- *SADT MACRO DC,C,BIAS,ABS,SE
- *
- * DC = DIRECT CELLS WHERE 17 BIT ADDRESS VALUE IS TO BE TAKEN
- * FROM.
- * CF = IF *C* COMPLEMENT RESULT OF ABOVE.
- * BIAS = VALUE TO BE ADDED TO CONTENTS OF DIRECT CELLS.
- * (MAXIMUM VALUE IS 7)
- * ABS = IF *A* ADD RA TO ADDRESS.
- * SE = IF PRESENT, GENERATE ONLY ONE SET OF TABLE ENTRIES.
- *
- * TABLE FORMAT.
- * 2 WORDS PER ENTRY.
- *
- *T 11/ ADDRESS,1/C,6/ DC,3/ BI,1/A,2/
- * C COMPLEMENT IF SET.
- * DC POINTER TO DIRECT CELL CONTAINING VALUE.
- * BI BIAS (AMOUNT TO ADD TO VALUE FROM DIRECT CELLS).
- * A ABSOLUTE FLAG.
- SADT MACRO DC,CF,BIAS,ABS,SE
- LOCAL Z,X
- QUAL
- Z BSS 0
- ERRNG 3777-Z ADDRESS TOO LARGE FOR MODIFICATION TABLE
- QUAL ".QNAM"
- X BSS 0
- SADT RMT
- VFD 11/X
- IFC EQ,*CF*C*,2
- VFD 1/1 COMPLEMENT FLAG
- ELSE 3
- VFD 1/0
- IFC NE,*CF**,1
- ERR INCORRECT COMPLEMENT FLAG
- VFD 6/DC
- VFD 3/BIAS
- IFC EQ,*ABS*A*,2
- VFD 1/1
- ELSE 3
- VFD 1/0
- IFC NE,*ABS**,1
- ERR INCORRECT ABSOLUTE FLAG
- VFD 2/0
- RMT
- .L1 IFEQ .IM,2
- SLBP RMT
- VFD 11/Z
- .L2 IFC EQ,*CF*C*
- VFD 1/1 COMPLEMENT FLAG
- .L2 ELSE
- VFD 1/0
- .L2 ENDIF
- VFD 6/DC
- VFD 3/BIAS
- .L3 IFC EQ,*ABS*A*
- VFD 1/1
- .L3 ELSE
- VFD 1/0
- .L3 ENDIF
- VFD 2/0
- RMT
- .L1 ENDIF
- .S1 IFNE .IM,0
- .S6 IFC EQ,$SE$$
- * MAKE ERROR OVERLAY TABLE.
- ERRNG BUFB-Z ADDRESS OVERFLOWS ERROR OVERLAY
- SERR RMT
- VFD 11/Z
- .S2 IFC EQ,*CF*C*
- VFD 1/1 COMPLEMENT FLAG
- .S2 ELSE
- VFD 1/0
- .S2 ENDIF
- VFD 6/DC
- VFD 3/BIAS
- .S3 IFC EQ,*ABS*A*
- VFD 1/1
- .S3 ELSE
- VFD 1/0
- .S3 ENDIF
- VFD 2/0
- RMT
- * MAKE MTS ERROR OVERLAY TABLE.
- SMER RMT
- VFD 11/Z
- .S4 IFC EQ,*CF*C*
- VFD 1/1
- .S4 ELSE
- VFD 1/0
- .S4 ENDIF
- VFD 6/DC
- VFD 3/BIAS
- .S5 IFC EQ,*ABS*A*
- VFD 1/1
- .S5 ELSE
- VFD 1/0
- .S5 ENDIF
- VFD 2/0
- RMT
- .S6 ENDIF
- .S1 ENDIF
- ENDM
- SPACE 4,10
- ** THE FOLLOWING CONSTANTS ARE USED IN CALLING THE INSTRUCTION
- * MODIFICATION MACRO TO DEFINE THE RELATIVE ADDRESS WHERE THE
- * VALUES WILL BE SET.
- LOC T2
- .FT BSS 2 FIRST
- .LM BSS 2 LIMIT
- .FE BSS 2 FET ADDRESS
- .LF BSS 2 LIMIT - FIRST
- .BS BSS 2 BLOCK SIZE
- LOC *O
- TSAD SPACE 4,10
- ** TSAD - DEFINE SET ADDRESS TABLE.
- * TABLE IS TERMINATED BY A 0 WORD.
- *
- *
- *LOC TSAD B
- * ENTRY *LOC* = FWA OF SET ADDRESS TABLE.
- * *B* = IF PRESENT NAME OF REMOTE CODE.
- MACRO TSAD,A,B
- A BSS 0
- SADT HERE
- IFC NE,*B**,1
- B HERE
- CON 0 TERMINATE TABLE
- ENDM
- TITLE OVERLAY COMMUNICATION MACROS.
- * OVERLAY CONTROL.
- .NA SET 0
- ADNAM SPACE 4,10
- ** ADNAM - ADVANCE OVERLAY NAME MACRO.
- * ADVANCES OVERLAY NAME.
- PURGMAC ADNAM
- ADNAM MACRO
- .NA SET .NA+1
- .MA MICRO .NA,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
- .OA MICRO 1,3, 3M".MA"
- ENDM
- OVERLAY SPACE 4,15
- ** OVERLAY - GENERATE OVERLAY CONSTANTS.
- *
- * NOTE AT PRESET TIME IN AN OVERLAY THE UNIT MAY OR MAY
- * NOT BE CONNECTED DEPENDING ON WHETHER THE CHANNEL
- * IS DEDICATED. THUS, NO CHANNEL OPERATIONS CAN BE DONE
- * IN PRESET. ALSO ABNORMAL ERROR EXITS MUST BE DONE
- * BY FIRST COMPLETING THE OVERLAY LOAD. FOR EXAMPLE
- * SEE THE BEGINNING OF PRESET IN THE WRITE OVERLAY.
- *
- * OVERLAY (TEXT),LDA,PRS,QN
- * ENTRY *TEXT* = TEXT OF SUBTITLE.
- * *LDA* = LOAD ADDRESS. (IF ABSENT ASSUMES *OVL*.
- * *PRS* = IF PRESENT DO NOT GENERATE CALL TO *PRS*.
- * *QN* = QUALIFIER NAME. (OVERLAY NAME IF ABSENT.)
- PURGMAC OVERLAY
- OVERLAY MACRO TEXT,LDA,P,QN
- LOCAL A
- USE OVERLAY
- QUAL
- ADNAM ADVANCE OVERLAY NAME
- IFC NE,*QN**,3
- .QNAM MICRO 1,, QN
- QUAL QN
- ELSE 2
- .QNAM MICRO 1,, ".OA"
- QUAL ".OA"
- TTL 1MT/".OA" - TEXT
- TITLE
- LOAD MICRO 1,3,*OVL*
- IFC NE,*LDA**,1
- LOAD MICRO 1,,*LDA*
- IDENT ".OA","LOAD" TEXT
- *COMMENT 1MT - TEXT
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- ORG "LOAD"
- IFC EQ,*P**
- PRSX LJM *
- LJM PRS
- ENDIF
- .IM SET 0 DESELECT ERROR PROCESSOR INSTRUCTION LIST
- ENDM
- SPACE 4,10
- ** MAKE SURE THAT 1MT SYMBOL *LBBY* IS 5 TIMES GREATER
- * THAN COMSMTX SYMBOL *LBWD*.
- ASCK EQU /MTX/LBWD*5
- ERRNZ ASCK-LBBY IF LONG BLOCK DEFINITIONS OUT OF SYNC
- TITLE MAIN PROGRAM.
- 1MT SPACE 4,10
- ** 1MT - MAIN PROGRAM.
- ORG PPFW
- PRS LJM /PRESET/PRS PRESET MAIN PROGRAM
- RET EQU PRS
- RET SPACE 4,10
- ** RET - STANDARD RETURN POINTS.
- *
- * CALLS CEC, UAD.
- * RET - SET FET COMPLETE. (A) = FET COMPETION CODE.
- *RET RJM CEC SET FET COMPLETE (SETUP IN PRESET)
- * RET1 - NORMAL COMPLETION.
- RET1 LDN /MTX/NCP
- UJN RET5 RETURN NORMAL COMPLETION STATUS
- * RET2 - REQUEUE.
- RET2 LDN 0
- UJN RET5 REQUEUE REQUEST
- * RET3 - RETURN WITH ERROR. (A) = ERROR CODE.
- RET3 STD EC
- * RET4 - RETURN WITH ERROR. (EC) = ERROR CODE.
- RET4 LDN /MTX/ERR
- * UJN RET5 RETURN ERROR STATUS
- * RET5 - RETURN. (A) = COMPLETION STATUS.
- RET5 STD RS
- LDN 0 DO NOT SET FET COMPLETE
- RJM CEC CHANGE TO MAGNET CP
- LDN /MTX/UERC-/MTX/UST5+1 SET WORD COUNT FOR WRITE
- STD T2
- RJM UAD SET UDT ADDRESS
- ADN /MTX/UST5
- CWM DNCV,T2
- SBN -/MTX/UST1+/MTX/UERC+1
- CWM ED,TR
- SBN -/MTX/UXRQ+/MTX/UST1+3
- CWD RS
- * LJM PNR PROCESS NEXT REQUEST
- TITLE PROCESS NEXT REQUEST.
- PNR SPACE 4,10
- ** PNR - PROCESS NEXT REQUEST.
- *
- * ENTRY (BT) = 0.
- *
- * CALLS CDO, CON, *CPP*, *DPP*, EXR, LOV, PIC, REL, UAD.
- *
- * MACROS CALL, MONITOR.
- PNR RJM CDO CHECK DROP OUT CONDITIONS
- PNR1 LDN PPAL CHECK PPU AVAILABILITY
- CRD CM
- LDN /MTX/UNITL UPDATE UDT ADDRESS
- PNR2 RAM UADA
- LMC * (LWA+1 OF UDT)
- PNRA EQU *-1
- NJN PNR3 IF NOT END OF UDT
- LDC -* - LENGTH OF UDT
- PNRB EQU *-1
- UJN PNR2 RECYCLE THROUGH UDT,S
- * REENTRY FROM ERROR ON CTS UNIT RELEASE.
- PNR3 RJM REL RELEASE LAST RESERVED UNIT
- LDD CM+4
- PNRC EQU *-1
- * LDN 0 (FORCE DROP OUT)
- ZJN PNR5 IF ALL PP-S IN USE
- LDM UADA
- LMC * (STARTING UDT ADDRESS)
- PNRD EQU *-1
- NJN PNR4 IF NOT END OF A PASS
- PNRE LDN 0
- ZJN PNR5 IF NO ACTIVITIES PERFORMED
- SOM PNRE RESET ACTIVITY COUNT
- PNR4 LDD DF
- ZJN PNR6 IF NO DROP OUT
- * ENTER HERE (VIA *RJM*) TO HANG PP.
- HNG CON 0 ENTRY
- * MONITOR HNGM HANG PP
- * ENTER HERE TO DROP PPU.
- PNR5 CALL DPP DROP PPU
- * PROCESS UNIT. (A) = 0.
- * ENTRY MADE HERE FROM PRS.
- * IF DROP OUT FORCED THE FOLLOWING CODE UP TO THE START OF
- * RESIDENT SUBROUTINES MAY BE OVERLAID.
- *
- * FIRST 30D BYTES ARE USED FOR FUNCTION REJECT PARAMETERS.
- .OVLR BSS 0 OVERLAY RESIDENT ADDRESS
- PNR6 STD RS INDICATE NO FUNCTION FOR ERROR PROCESSING
- RJM UAD SET UNIT CONNECT INFORMATION
- ADN /MTX/UST1
- CRD ED
- ADK /MTX/UVRI-/MTX/UST1 GET ASSIGNED EJT ORDINAL
- CRD CN
- SFA EST,EO
- ADK EQDE
- CRD CM
- LDD CM
- LPN 3
- LMN /CPS/DWES
- ZJN PNR9 IF UNIT DOWN
- LDD CM+1 CHECK PRIMARY CHANNEL
- CHTE *+1
- LMC CH+4000
- ZJN PNR8 IF UNIT ACCESSIBLE
- PNRF UJN PNR7 CHECK SECONDARY CHANNEL
- * SHN 21-12 (CTS UNIT)
- PJN PNR11 IF PRIMARY CHANNEL NOT DOWN
- PNR7 LDD CM+2 CHECK SECONDARY CHANNEL
- CHTE *+1
- LMC CH+4000
- NJN PNR11 IF UNIT NOT ACCESSIBLE
- PNR8 RJM CON CONNECT UNIT
- PNRG EQU *-1
- * RJM PIC (CTS)
- PNR9 ZJN PNR12 IF NOT CONNECTED
- SFA EJT,CN
- ADK JSNE
- CRD CM
- LDD ED CLEAR JOB ROLLED OUT
- SCN 1
- STD ED
- LDD CM+4
- LPC 176
- LMN /EJT/EXJS*2
- ZJN PNR10 IF JOB EXECUTING OR UNIT NOT ASSIGNED
- AOD ED SET JOB ROLLED OUT
- PNR10 RJM UAD
- ADK /MTX/UXRQ GET REQUEST
- CRD RS
- ADK /MTX/UST1-/MTX/UXRQ UPDATE UNIT STATUS AND JOB STATUS
- CWD ED
- LDD RS
- PNR11 NJN PNR13 IF REQUEST ALREADY IN PROGRESS OR COMPLETE
- LDD FN
- PNR12 ZJN PNR13 IF NO REQUEST
- LPN 77
- SBN /MTX/MDFN
- PJN PNR13 IF NOT *1MT* REQUEST
- LDM UADA SET UDT ADDRESS
- STD CM+1
- LDD DS SET BUSY STATUS
- STD CM+2
- MONITOR TDRM SET REQUEST IN PROGRESS
- LDD CM+4
- NJN PNR14 IF REQUEST IN PROGRESS SET
- PNR13 LJM PNR1 PROCESS NEXT REQUEST
- * CAUTION - THE FOLLOWING CODE DESTROYS SC, BT, AND BY.
- * SC AND BT SHOULD NOT BE REUSED UNTIL AFTER *CPP* PRESET.
- PNR14 LDD MA GET FUNCTION TABLE ENTRY
- CRD SC
- ADN 1 GET *ASCM* PARAMETERS
- CRD CN
- RJM UAD GET UDT INFORMATION
- ADK /MTX/UXRQ
- CRD RS
- ADK /MTX/UCIB-/MTX/UXRQ
- CRM CIOE,ON
- ADK /MTX/UST2-/MTX/UCIB-1
- CRM EI,TR
- ADK /MTX/UST5-/MTX/UST4-1
- CRM DNCV,ON
- ADK /MTX/UERC-/MTX/UST5-1
- CRM ECNT,ON
- PNRH SBN /MTX/UERC-/MTX/UDS4+1
- * UJN PNR15 (CTS UNIT)
- CRM MTSF,TR
- PNR15 LDD OA SET *ASCM* PARAMETERS FOR *EXR* CALL
- CWD CN
- LDN ZERL CLEAR ADDRESS MODIFICATION LIST
- CRD CN
- LDD SC LOAD OVERLAY
- SHN -6
- RJM LOV
- LDD SC
- LPN 17
- ZJN PNR16 IF NO SECOND OVERLAY
- SHN 6
- ADM NAME LOAD OVERLAY
- SHN -6
- RJM LOV
- PNR16 CALL CPP LOAD SPECIAL PROCESSOR AND ENTER ROUTINE
- PNRI BSS 0 USED TO DETECT IF *CPP* CALLED FROM HERE
- TITLE RESIDENT SUBROUTINES.
- CDO SPACE 4,10
- ** CDO - CHECK DROP OUT CONDITIONS.
- * CHECKS MOVE FLAG, ROLLOUT FLAG, BLOCKS TRANSFERRED,
- * AND CHANNEL REQUESTED.
- *
- * EXIT (A) = (DF) = 0, IF NO DROP OUT NEEDED.
- *
- * USES CM - CM+4.
- CDO1 LDN 1 SET DROP OUT
- CDO2 STD DF
- CDO SUBR ENTRY/EXIT
- LDN CMCL CHECK MOVE FLAG
- CRD CM
- LDD CM
- SHN 7
- LMD CP
- ZJN CDO1 IF MOVE FLAG
- LDD CP CHECK ROLLOUT FLAG
- ADN STSW
- CRD CM
- LDD CM+2
- LPN 1
- NJN CDO1 IF ROLLOUT FLAG
- LDD BT
- LPC 3777
- ADC -BLKS
- CDOC EQU *-1
- * ADC -BLKX (FOR ISMT)
- * ADC -BLKC (FOR CTS)
- PJN CDO1 IF MAXIMUM BLOCKS TRANSFERRED
- CDOA LDC ** CHECK IF CHANNEL REQUESTED
- CRD CM
- CDOB LDD CM+**
- SHN -13
- UJN CDO2 STORE DROP OUT FLAG
- CEC SPACE 4,10
- ** CEC - CHANGE TO MAGNET CONTROL POINT.
- *
- * ENTRY (A) = FET COMPLETION STATUS.
- *
- * EXIT (BT) = 0.
- * (CP) = RESTORED TO MAGNET,S CP ADDRESS.
- *
- * USES BT, CM+1 - CM+4, CN - CN+4.
- *
- * MACROS MONITOR.
- CEC SUBR ENTRY/EXIT
- STD CM+4 SAVE FET COMPLETION STATUS
- SHN -14
- LMC ** INCLUDE SRU INCREMENT VALUE
- CECA EQU *-1
- STD CM+3
- CECB LDN 0
- ZJN CEC2 IF AT MAGNET CP
- SOM CECB CLEAR CP CHANGED FLAG
- CEC1 LDD OA CHECK FOR PENDING *DRCM* FUNCTION
- CRD CN
- LDD CN
- NJN CEC1 IF FUNCTION PENDING
- LDM UADA SET *UDT* ADDRESS
- STD CM+1
- LDD BT SET BLOCKS TRANSFERRED
- STD CM+2
- MONITOR TIOM CHANGE TO MAGNET CONTROL POINT
- * LDN 0
- CEC2 STD BT CLEAR BLOCKS TRANSFERRED FOR *CDO* CHECK
- UJN CECX RETURN
- LOV SPACE 4,10
- ** LOV - LOAD OVERLAY.
- *
- * ENTRY (A) = THIRD CHARACTER OF OVERLAY NAME.
- * *ASCM* FUNCTION PARAMETERS IN OUTPUT REGISTER IF PLD
- * ALREADY SEARCHED.
- *
- * USES T5, CM - CM+4.
- *
- * CALLS EXR.
- LOV SUBR ENTRY/EXIT
- STD T5 SAVE OVERLAY NAME
- LOV1 LDD OA CHECK FOR PENDING FUNCTION
- CRD CM
- LDD CM
- SBN ASCM+1
- ERRNZ ASCM-1
- PJN LOV1 IF FUNCTION PENDING
- LDD T5 LOAD OVERLAY
- LMC 2L3M
- RJM EXR
- UJN LOVX RETURN
- MCH SPACE 4,10
- ** MCH - MODIFY CHANNELS.
- *
- * ENTRY (A) = ADDRESS OF CHANNEL TABLE.
- *
- * USES T1, T2.
- MCH1 STD T2
- MCHB LDN 0 (PRESET TO PROPER INCREMENT/DECREMENT)
- RAI T2
- AOD T1
- MCH2 LDI T1
- NJN MCH1 IF MORE CHANNELS TO MODIFY
- MCH SUBR ENTRY/EXIT
- MCHA STD T1
- * UJN MCHX (PRS - NO CHANNEL MODIFICATION REQUIRED)
- UJN MCH2 MODIFY CHANNEL INSTRUCTIONS
- REL SPACE 4,10
- ** REL - RELEASE UNIT.
- *
- * ENTRY (RELA) .NE. 0, UNIT CONNECTED.
- *
- * CALLS FCN.
- REL SUBR ENTRY/EXIT
- LDC 0
- RELA EQU *-1
- ZJN RELX IF NO UNIT CONNECTED
- LDN F0001 RELEASE UNIT
- RJM FCN
- STM RELA CLEAR CONNECTED FLAG
- UJN RELX RETURN
- ITM SPACE 4,10
- ** ITM - INITIATE TAPE MOTION.
- *
- * ENTRY (ITMA) = TAPE MOTION FUNCTION.
- *
- * EXIT WITH CHANNEL ACTIVE.
- *
- * CALLS FCN.
- ITM SUBR ENTRY/EXIT
- LDC F0040 READ FORWARD
- * LDC F0140 READ BACKWARD
- * LDC F0050 WRITE EVEN FRAME COUNT (MTS)/WRITE (ATS)
- * LDC F0250 WRITE ODD FRAME COUNT/SHORT WRITE
- ITMA EQU *-1
- RJM FCN
- ACN CH
- UJN ITMX RETURN
- UAD SPACE 4,10
- ** UAD - UNIT DESCRIPTOR TABLE ADDRESS.
- *
- * ENTRY (UADA) = CURRENT UDT ADDRESS.
- *
- * EXIT (A) = UDT ABSOLUTE ADDRESS.
- UAD SUBR ENTRY/EXIT
- LDD RA
- SHN 6
- ADC 0 UDT ADDRESS
- UADA EQU *-1
- UJN UADX RETURN
- SPACE 4,10
- ** COMMON DECKS.
- EJT$ EQU 1 ASSEMBLE EJT CODE
- IFP$ EQU 1 SET REMOTE INITIALIZATION
- *CALL COMPGFP
- TITLE EQUIPMENT PROCESSING SUBROUTINES.
- ERR SPACE 4,10
- ** ERR - ERROR PROCESSOR.
- *
- * FOR CTS THIS ROUTINE AND THE REMAINING ROUTINES IN *1MT*
- * ARE OVERLAYED WITH CODE BEGINNING AT */PRESET/CEP*.
- *
- * (A) = ERROR CODE IF NOT CALLED FROM MAIN PROGRAM.
- *
- * CALLS *EMM*, MCC.
- *
- * MACROS CALL.
- ERR CON 0
- RJM MCC MASTER CLEAR CHANNEL
- CALL EMM LOAD ERROR PROCESSING OVERLAY
- .EERR BSS 0
- FCN SPACE 4,15
- ** FCN - PROCESS FUNCTION.
- *
- * ENTRY (A) = FUNCTION.
- *
- * EXIT (A) = 0.
- * (FCND) = FUNCTION ISSUED.
- *
- * USES T6.
- *
- * CALLS STC, *3MB*.
- *
- * MACROS EXECUTE.
- FCN SUBR ENTRY/EXIT
- ADC 0 ADD EQUIPMENT NUMBER
- FCNA EQU *-1
- FAN CH FUNCTION EQUIPMENT
- STM FCND SAVE FUNCTION
- RJM STC STATUS CHANNEL
- ZJN FCNX IF NO REJECT
- FCN1 STD T6 INITIALIZE *3MB* RESIDENCE FLAG
- * CON 0 (ERROR ALREADY ENCOUNTERED)
- FCNC EQU *-1
- EXECUTE 3MB CALL FUNCTION REJECT PROCESSOR
- FCND CON 0 FUNCTION ISSUED
- MCC SPACE 4,10
- ** MCC - MASTER CLEAR MTS/ATS CHANNEL.
- * DISCONNECT CHANNEL AND ISSUE STOP TAPE MOTION FUNCTION.
- *
- * ENTRY (A) = ERROR CODE.
- *
- * EXIT (A) = 0.
- * (EC) = ERROR CODE.
- *
- * CALLS FCN.
- MCC SUBR ENTRY/EXIT
- STD EC SAVE ERROR CODE
- DCN CH+40
- MCCA LDN 11 STOP TAPE MOTION
- * UJN MCCX (PROCESSING FATAL FUNCTION REJECT)
- RJM FCN
- UJN MCCX RETURN
- TITLE MTS/ATS CONTROLLER DEPENDENT SUBROUTINES.
- CON SPACE 4,15
- ** CON - PERFORM INITIAL CONNECT.
- *
- * ENTRY (CM+4) = BYTE 4 OF EST ENTRY *EQDE* WORD.
- * (CN) = EJT ORDINAL OF ASSIGNED JOB.
- *
- * EXIT (A) = 0 IF UNIT RESERVED.
- * (A) .NE. 0 IF UNIT CONNECTED.
- * (CN) = EJT ORDINAL OF ASSIGNED JOB.
- *
- * ERROR EXIT TO *FCN1* IF CONNECT REJECT.
- *
- * USES EC.
- *
- * CALLS ERR, FCN, STW, UAD.
- CON6 AOM RELA SET CONNECTED FLAG
- CON SUBR ENTRY/EXIT
- RJM UAD
- ADK /MTX/UDS1 READ DETAILED STATUS
- CRM MTDS,TR
- LDD CM+4 SET UNIT AND EQUIPMENT
- LPC 7017
- LMN 20 MERGE IN FUNCTION
- FAN CH ISSUE FUNCTION
- CONA LDC 60 SET DELAY
- * LDC 144 (2X PPU SPEED)
- * LDC 300 (4X PPU SPEED)
- * LDC 777777 (NOT MTS)
- CON1 IJM CON2,CH IF FUNCTION ACCEPTED
- SBN 1
- NJN CON1 IF NOT TIMEOUT
- DCN CH+40
- CON2 LDN 0 STATUS DEVICE
- RJM STW
- .ECUI BSS 0
- SHN 21-13
- CON3 PJN CON6 IF CONNECTED
- LDM MTDS CHECK RESERVE STATUS
- LPN 77
- CONB ZJN CON4 IF NOT POSSIBLE UNIT RESERVE ERROR
- * ZJN CON5 (ATS CONTROLLER)
- LMN 2
- ZJN CONX IF UNIT RESERVED
- CON4 LDN /MTX/CRJ CONNECT REJECT
- STD EC
- LJM //FCN1 PROCESS CONNECT REJECT
- * IF A UNIT CHECK OCCURS WITH NO ERROR CODE IN *MTDS*
- * BITS 0 - 6, THE UNIT IS CONNECTED. THE UNIT CHECK
- * ERRORS (OTHER THAN LOAD CHECK) ARE IGNORED HERE BUT
- * DETECTED BY *SED* FUNCTION.
- CON5 RJM FCN CLEAR TRANSITORY ERRORS
- LDM ATUS+1
- LPN 1
- ZJN CON3 IF NOT LOAD CHECK ERROR
- LDN /MTX/LCH ISSUE *LOAD CHECK* MESSAGE
- RJM ERR PROCESS ERROR
- CUI SPACE 4,15
- ** CUI - FORMAT UNIT AND/OR PERFORM NON-INITIAL CONNECT.
- *
- * ERROR EXIT TO *CON4* IF CONNECT REJECT.
- *
- * USES T7.
- *
- * CALLS FCN, STW.
- CUI3 AOM RELA SET CONNECTED FLAG
- CUI SUBR ENTRY/EXIT
- CUI1 LDN 30 ISSUE FORMAT UNIT FUNCTION
- * LDN 4 (ATS UNIT)
- CUIB EQU *-1
- RJM FCN
- ACN CH
- CUIC LDN 2 OUTPUT PARAMETERS
- * LDN 3 (ATS UNIT)
- OAM MTSF,CH
- FJM *,CH WAIT FOR PARAMETERS TO BE TAKEN
- DCN CH+40
- LDN 0 STATUS DEVICE
- RJM STW
- SHN 21-13
- PJN CUI3 IF GOOD CONNECT
- CUIE UJN CUI2 MTS UNIT
- * LDM MTDS (ATS UNIT)
- CON MTDS
- LPN 77
- ZJN CUI3 IF NOT CONNECT ERROR
- CUI2 LJM CON4 PROCESS CONNECT REJECT
- DTS SPACE 4,10
- ** DTS - GET MTS/ATS DETAILED STATUS AND ATS UNIT STATUS.
- *
- * CALLS FCN.
- DTS1 LDN 6 INPUT UNIT STATUS
- IAM ATUS,CH
- DTS SUBR ENTRY/EXIT
- LDC 112
- RJM FCN ISSUE STATUS FUNCTION
- ACN CH
- LDN 10
- IAM MTDS,CH
- DTSA UJN DTSX RETURN
- * UJN DTS1 (ATS CONTROLLER)
- STC SPACE 4,10
- ** STC - STATUS CHANNEL.
- *
- * EXIT (A) = 0 IF NO FUNCTION REJECT.
- * = 1 IF FUNCTION REJECT.
- * (STCB) = (A).
- *
- * USES T0.
- STC2 SHN -21
- STM STCB
- STC SUBR ENTRY/EXIT
- STCA LDN 77 PRESET TIMEOUT
- * LDN 6 (MTS CONTROLLER)
- * LDN 20 (ISMT CONTROLLER)
- STD T0
- STC1 IJM STC2,CH IF FUNCTION ACCEPTED
- ADN 1
- PJN STC1 CONTINUE WAIT
- SOD T0
- PJN STC1 IF NOT TIMEOUT
- DCN CH+40
- UJN STC2 EXIT
- STCB CON 0 CHANNEL STATUS
- STW SPACE 4,15
- ** STW - STATUS AND WAIT COMPLETION.
- *
- * ENTRY (A) = 0 IF WAIT END OF OPERATION.
- * = 2 IF WAIT NOT BUSY.
- *
- * EXIT (UBWB) = BYTE 2 OF GENERAL STATUS (BLOCK ID).
- * (A) = (DS) = GENERAL STATUS.
- *
- * USES DS, T1.
- *
- * CALLS DTS, ERR, FCN.
- STW4 IAN CH+40
- STD DS SAVE STATUS
- IAN CH+40
- STM UBWB SAVE BID
- UJN STW4.1 DISCONNECT CHANNEL
- * LDN 2 (READ/WRITE IN PROGRESS)
- STWE EQU *-1
- IAM MTDS,CH READ SINGLE TRACK CORRECTION STATUS
- STW4.1 DCN CH+40
- LDD DS
- SHN 21-13
- PJN STW5 IF NO ALERT
- RJM DTS READ DETAILED STATUS
- STW5 LDD DS CHECK FOR READY
- LPC 0 WAIT END OF OPERATION
- * LPC 2 (WAIT FOR NOT BUSY)
- STWD EQU *-1
- NJN STW3 WAIT COMPLETION
- LDD DS
- STW SUBR ENTRY/EXIT
- STM STWD SET STATUS MASK
- LCN 0 SET EOP DELAY LIMIT
- STD T1
- STW1 LDN 12 ISSUE STATUS FUNCTION
- RJM FCN
- ACN CH
- LDN 6 DELAY FOR EOP
- * LDN 14 (2X PPU SPEED)
- * LDN 30 (4X PPU SPEED)
- STWA EQU *-1
- STW2 FJM STW4,CH IF EOP
- SBN 1
- NJN STW2 IF NOT TIME OUT
- DCN CH+40
- STW3 SOD T1
- NJN STW1 IF NOT END OF EOP DELAY
- LDN /MTX/WEO
- RJM ERR PROCESS ERROR
- * RJM WFC2 (EXIT DURING BACKSPACE)
- * RJM WNB2 (EXIT DURING CONTROLLED BACKSPACE)
- * LJM /READ/MRD5 (NO EOP ON INITIAL LABEL CHECK)
- STWC EQU *-1
- UBW SPACE 4,10
- ** UBW - UPDATE BLOCK ID WINDOW.
- *
- * ENTRY CORRECT ROUTINE LOADED FOR FORWARD OR REVERSE.
- * (UBWB) = BID BYTE TO ENTER IN WINDOW.
- * (WP) = POINTS TO LAST GOOD BID BYTE.
- *
- * EXIT (WP) UPDATED.
- * (UBWB) ENTERED IN WINDOW.
- UBW SUBR ENTRY/EXIT
- UBWA BSS 0 START OF OVERLAID AREA
- AOD WP
- LPN 7
- STD WP
- LDM UBWB
- STM BIDW,WP
- UBWAL EQU *-UBWA LENGTH OF OVERLAID AREA
- UJN UBWX RETURN
- UBWB CON 4 CURRENT BLOCK ID
- WEO SPACE 4,10
- ** WEO - WAIT END OF OPERATION.
- *
- * ENTRY (WEOA) = STATUS MASK.
- * (WEOB) = COMPLETION STATUS TO BE EXPECTED.
- *
- * EXIT (A, 11 - 0) = DEVICE STATUS MASKED AND ORED.
- *
- * CALLS STW.
- WEO1 LPC 4435 READ TO END OF REEL
- * LPC 4425 READ LABELS
- * LPC 4635 WRITE TO END OF REEL
- * LPC 4625 WRITE LABELS
- WEOA EQU *-1
- LMC 1 READ
- * LMC 201 WRITE
- WEOB EQU *-1
- WEO SUBR ENTRY/EXIT
- LDN 0
- RJM STW STATUS DEVICE
- UJN WEO1 EXIT
- BSS 6 PAD FOR CTS CHANNEL ROUTINES
- DNCV EQU * DENSITY AND CONVERSION MODE
- ERSC EQU DNCV+1 ERROR SUB-CODE
- MTDS EQU DNCV+5 DETAILED STATUS
- CTSD EQU MTDS CTS DETAILED STATUS
- ATUS EQU MTDS+10 ATS UNIT STATUS
- MTSF EQU MTDS+3*5 UNIT FORMAT PARAMETERS
- BIDW EQU MTDS+4*5 BLOCK ID WINDOW
- CTGS EQU CTSD+34 CTS GENERAL STATUS WORD 2
- ECNT EQU DNCV+7*5 CORRECTED ERROR COUNTERS
- SPACE 4,10
- USE OVERLAY
- CIOE EQU ECNT+5 CIO EXTERNAL REQUESTS
- FETO EQU CIOE+1 FET OPTIONS FROM FIRST BYTE 1
- LNUM EQU FETO+1 LEVEL NUMBER FROM/FOR FET
- OVL EQU LNUM+1+5 MAIN OVERLAY LOAD ADDRESS
- STER EQU OVL-5 STATUS WHEN ERROR DETECTED
- NAME EQU OVL-4 NAME OF OVERLAY LOADED
- BNEU EQU NAME UPPER 2 BLOCK LENGTH DIGITS (LI FORMAT)
- BNEI EQU OVL-3 BLOCK SEQUENCE INFORMATION (3 WORDS)
- PRS TITLE PRESET STORAGE.
- PRS SPACE 4,10
- ** PRS - PRESET PROGRAM.
- *
- * CALLS IFP, MCH, *3MA*.
- *
- * MACROS DCHAN, EXECUTE, RCHAN.
- QUAL PRESET
- PRS RJM IFP INITIALIZE *COMPGFP*
- LDD IR+2
- ZJN PRS1 IF NORMAL CALL
- EXECUTE 3MA INITIALIZE MAGNET
- * SET UDT ACCESS, CONTROLLER TYPE, AND CHARACTER SET.
- PRS1 LDC RJMI SET PROGRAM RETURN
- STM //RET
- LDC //CEC
- STM //RET+1
- LDD RA GET UNIT DESCRIPTOR TABLE POINTERS
- SHN 6
- ADN /MTX/UBUF
- CRD CM
- ADK -/MTX/UBUF
- ADD IR+4
- ADK /MTX/CPST GET PROCESSOR STATUS
- CRD CN
- LDD CM+2 SET LWA+1 OF UDT
- STM PNRA
- SBD CM+4 SET LENGTH OF UDT
- LMC -0
- STM PNRB
- LDD CM+4 SET FWA OF UDT
- STM PNRD
- LDD CN+4 SET STARTING UDT ADDRESS
- STM UADA
- LDD CN+3 SET CONTROLLER TYPE
- LPC 300
- STD CF
- SHN -6
- STD T8
- LDN IPRL SET 63/64 CHARACTER SET FLAG
- CRD CM
- LDD CM+2
- LPN 1
- RAD CF
- * PRESET CHANNEL ACCESS.
- LDC CHTP GET FWA CHANNEL INTERLOCK TABLE
- CRD CM
- LDD CM+2
- SHN 14
- ADD CM+3
- SBN 1
- STM CDOA+1
- SHN -14
- RAM CDOA
- LDD IR+3 SET CHANNEL
- STD T4
- SBN CH
- NJN PRS2 IF CHANNEL MODIFICATION NEEDED
- LDM PRSA DISABLE MODIFICATION
- STM MCHA
- UJN PRS4 SEARCH CHANNEL TABLE
- PRS2 PJN PRS3 IF INCREMENT TO ASSEMBLED IN CHANNEL
- LMC -0
- ADC LCNI-LDNI
- PRS3 RAM MCHB
- LDC TCHS MODIFY CHANNELS
- RJM MCH
- PRS4 AOM CDOA+1 ADVANCE CHANNEL TABLE ADDRESS
- SHN -14
- RAM CDOA
- LCN 5
- RAD T4
- PJN PRS4 IF NOT CORRECT WORD
- ADN 5 SET CORRECT BYTE IN CHANNEL TABLE
- RAM CDOB
- * PRESET CTS CONTROLLER.
- LDD T8
- LMN 3
- NJN PRS6 IF NOT CTS CONTROLLER
- LDK CCRL-1
- STD T1 LENGTH OF CODE TO MOVE
- PRS5 LDM .CEP,T1
- STM ERR,T1
- SOD T1
- PJN PRS5 IF MORE CODE TO MOVE
- LDC CCRA
- RJM MCH MODIFY CHANNEL INSTRUCTIONS
- LDC SHNI+21-12
- STM PNRF SET PRIMARY CHANNEL STATUS CHECK
- LDC PIC
- STM PNRG ENTRY TO INITIAL CONNECT
- LDC UJNI+PNR15-PNRH SKIP READ OF MTS/ATS UNIT PARAMETERS
- STM PNRH
- LJM PRS8 REQUEST CHANNEL
- * PRESET MTS OR ATS CONTROLLER.
- PRS6 LDD CN+3 SET EQUIPMENT CONTROLLER NUMBER
- LPC 7000
- STM FCNA
- LDM PRSG,T8
- STM STCA SET FUNCTION TIMEOUT DELAY
- LDM DLYA
- LPN 14
- ZJN PRS7 IF 1X PPU SPEED
- SHN -2
- STD T1 SET PP SPEED INDEX
- LDM PRSD-1,T1 INCREASE WAIT EOP DELAY
- STM STWA
- LDM PRSF-1,T1 INCREASE DELAY AFTER CONNECT
- STM CONA+1
- PRS7 LDD T8
- LMN 2
- ZJN PRS8 IF MTS CONTROLLER
- * PRESET ATS CONTROLLER.
- ERRNG CONB-CON5+37
- LDN CON5-CON4
- RAM CONB
- LDM PRSC
- STM DTSA
- LDC LDNI+4
- STM CUIB
- LDC LDMI
- STM CUIE
- AOM CUIC
- LCN 0 INCREASE CONNECT DELAY
- STM CONA+1
- LPN 77
- RAM CONA
- * REQUEST CHANNEL AND ENTER MAIN PROGRAM.
- CHTE *+1
- PRS8 LDC CH+4000 REQUEST REPLY IF CHANNEL DOWN
- RCHAN REQUEST CHANNEL
- LDD CM+1
- SHN 21-13
- PJN PRS9 IF CHANNEL NOT DOWN
- LDD CN
- LPC 3777 CLEAR *1MT* ACTIVE
- STD CN
- LDN ZERL
- CRD CM
- LDD RA
- SHN 6
- ADD IR+4
- ADK /MTX/CPST UPDATE *1MT* STATUS
- CWD CN
- ADK /MTX/CUAC-/MTX/CPST CLEAR ALL UNIT ACCESS FLAGS
- CWD CM
- MONITOR DPPM DROP PP
- LJM PPR EXIT TO PP RESIDENT
- PRS9 IJM PRS10,CH IF CHANNEL NOT ACTIVE
- DCN CH+40
- PRS10 LDN 0
- STD DF PRESET DROP OUT FLAG
- LJM PNR6 RETURN TO PROCESS UNIT
- PRSA BSS 0
- LOC MCHA
- UJN MCHX RETURN
- LOC *O
- PRSC BSS 0
- LOC DTSA
- UJN DTS1 INPUT UNIT STATUS
- LOC *O
- PRSD BSS 0 WAIT EOP DELAY
- LOC 1
- CON LDNI+30 4X PPU SPEED
- CON LDNI+14 2X PPU SPEED
- LOC *O
- PRSF BSS 0 DELAY AFTER CONNECT
- LOC 1
- CON 300 4X PPU SPEED
- CON 144 2X PPU SPEED
- LOC *O
- PRSG BSS 0 FUNCTION TIMEOUT DELAY
- LDN 20 ISMT
- LDN 77 ATS
- LDN 6 MTS
- SPACE 4,10
- ** *COMPGFP* REMOTE CODE.
- IFP HERE
- SPACE 4,10
- ** CHANNEL TABLE.
- TCHS CHTB
- CEP SPACE 4,15
- ** CEP - CTS ERROR PROCESSOR.
- *
- * ENTRY (A) = ERROR CODE.
- *
- * EXIT TO *CCP*.
- *
- * MACROS CALL.
- * THIS IS THE START OF CTS ROUTINES THAT ARE MOVED BY PRESET
- * TO *ERR*.
- .CEP BSS 0
- LOC ERR
- CEP CON 0 ENTRY
- ERRNZ CEP-ERR IF ENTRY POINTS NOT THE SAME
- STD EC SAVE ERROR CODE
- CALL CCP CTS CHANNEL ERROR PROCESSOR (NO RETURN)
- ICF SPACE 4,10
- ** ICF - ISSUE CCC/CTS FUNCTION.
- *
- * ENTRY (A) = FUNCTION.
- *
- * EXIT (A) = 0.
- * (ICFA) = THE FUNCTION THAT WAS ISSUED.
- * TO *ERR* IF FUNCTION REJECT.
- ICF2 LDN 0
- BSSZ FCNX-* TO KEEP ENTRY POINTS THE SAME
- ICF SUBR ENTRY/EXIT
- DCN CH+40 ENSURE CHANNEL IS INACTIVE
- STM ICFA SAVE FUNCTION
- FAN CH ISSUE THE FUNCTION
- LDN 17 TIMEOUT 4 SECONDS ON ALL FUNCTIONS
- STD T0
- ICF0 LCN 0
- ICF1 IJM ICF2,CH IF FUNCTION REPLY RECEIVED
- SBN 1
- NJN ICF1 IF TIMEOUT NOT EXPIRED
- SOD T0
- NJN ICF0 IF TIMEOUT NOT EXPIRED
- LDN /MTX/FRJ FUNCTION REJECT
- RJM ERR SAVE ERROR CODE (NO RETURN)
- ICFA CON 0 FUNCTION ISSUED
- PIC SPACE 4,15
- ** PIC - PERFORM INITIAL CTS CONNECT.
- *
- * ENTRY (CM+4) = BYTE 4 OF EST ENTRY *EQDE* WORD.
- * (CN) = EJT ORDINAL OF ASSIGNED JOB.
- *
- * EXIT (A) .NE. 0 IF UNIT CONNECTED.
- * (A) .EQ. 0 IF CONTROL UNIT BUSY.
- * (CN) = EJT ORDINAL OF ASSIGNED JOB.
- *
- * USES T2.
- *
- * CALLS CCU, UAD.
- PIC SUBR ENTRY/EXIT
- LDN 6
- STD T2
- RJM UAD
- ADK /MTX/UDS1 READ DETAILED STATUS
- CRM CTSD,T2
- LDN 0
- STM PICA
- LDC LDNI+F0002 SEND CONTINUE IF COMMAND RETRY
- STM /PRESET/GPSC
- LDD CM+4 SET UNIT NUMBER
- LPN 17
- LMN F0020
- STM CCUA
- RJM CCU CONNECT CTS UNIT
- UJN PICX RETURN
- PICA DATA 0 IF 0, LOCATE BLOCK NOT NECESSARY
- CCU SPACE 4,10
- ** CCU - CONNECT CTS UNIT.
- *
- * ENTRY (CCUA) = CONNECT FUNCTION CODE AND UNIT NUMBER.
- *
- * EXIT (A) = 0 IF UNIT RESERVED TO ANOTHER CONTROLLER.
- * TO *CEP* IF CONNECT REJECT.
- *
- * CALLS GPS, ICF.
- CCU3 AOM RELA SET CONNECTED FLAG
- CCU SUBR ENTRY/EXIT
- LDC F0020
- * LDC F0220 (COMPRESSION MODE SELECTED)
- CCUA EQU *-1 (CONNECT UNIT FUNCTION CODE)
- RJM ICF ISSUE CTS FUNCTION
- CCU1 LDN 0 WAIT FOR END OF OPERATION
- RJM GPS GET AND PROCESS GENERAL STATUS
- MJN CCU1 IF COMMAND RETRY
- SHN 21-13
- PJN CCU3 IF ALERT NOT SET
- LDM CTGS GENERAL STATUS WORD 2
- SHN 21-13
- PJN CCU3 IF NOT CCC ERROR CODE
- SHN 13-21
- LPC 177
- SBN CE001
- ZJN CCU2 IF CONNECT REJECT
- SBN CE032-CE001
- ZJN CCUX IF DRIVE BUSY OR RESERVED
- SBN CE033-CE032
- ZJN CCUX IF CONTROL UNIT BUSY
- SBN CE051-CE033
- NJN CCU3 IF NOT CONNECT REJECT
- CCU2 LDN /MTX/CRJ CONNECT REJECT
- RJM CEP REPORT ERROR (NO RETURN)
- GPS SPACE 4,15
- ** GPS - GET AND PROCESS GENERAL STATUS.
- * THIS ROUTINE WAITS UP TO 3.5 MINUTES FOR END OF OPERATION.
- * IF RETRY IS SET, IT WAITS UP TO 18 MINUTES FOR THE CONTINUE
- * BIT TO SET. IT IS ASSUMED THAT THE CONTROLLER HAS A
- * MAXIMUM NUMBER OF COMMAND RETRIES ALLOWED.
- *
- * ENTRY (A) = 0 IF WAIT FOR END OF OPERATION.
- * (A) = 2 IF WAIT NOT BUSY.
- *
- * EXIT (A) = (DS) = GENERAL STATUS.
- * (A) .LE. 0 IF CONTINUE ISSUED.
- * TO *ERR* IF TIMEOUT OR CHANNEL MALFUNCTION.
- * (CTGS) = GENERAL STATUS WORD 2 IF ALERT SET.
- * (CTSD-CTSD+25) = DETAILED STATUS IF ALERT SET.
- *
- * USES T1, T2.
- *
- * CALLS ICF.
- GPS10 DCN CH+40
- LDD DS
- LPC 0 WAIT END OF OPERATION
- GPSB EQU *-1
- * LPC 2 WAIT NOT BUSY
- NJN GPS5 IF NOT COMPLETE
- LDD DS
- GPS SUBR ENTRY/EXIT
- STM GPSB
- LDK 960D OUTER LOOP TIMER
- STD T2
- GPS1 LCN 0 INNER LOOP TIMER
- STD T1
- GPS2 LDN F0012 GENERAL STATUS
- RJM ICF ISSUE CTS FUNCTION
- ACN CH
- LDN 12
- GPS3 FJM GPS6,CH IF GENERAL STATUS RECEIVED
- GPS4 SBN 1
- NJN GPS3 IF NOT TIMEOUT
- GPS5 SOD T1
- NJN GPS2 IF NOT TIMEOUT FOR INNER LOOP
- SOD T2
- NJN GPS1 IF NOT TIMEOUT FOR OUTER LOOP
- LDN /MTX/WEO END OF OPERATION TIMEOUT
- RJM ERR PROCESS ERROR (NO RETURN)
- GPS6 IAN CH
- STD DS SAVE GENERAL STATUS WORD 1
- SFM GPS9,CH IF CHANNEL PARITY ERROR
- LDD DS
- SHN 21-13
- PJP GPS10 IF ALERT NOT SET
- SHN 21-12-21+13
- PJN GPS7 IF NOT COMMAND RETRY
- LDN F0002 CONTINUE
- GPSC EQU *-1
- * UJN GPS6.1 (WRITE)
- RJM ICF ISSUE CTS FUNCTION
- GPS6.1 LCN 0
- UJP GPSX RETURN
- GPS7 SHN 21-6-21+12
- PJN GPS8 IF NOT RETRY IN PROGRESS
- LDK 460D
- SBN 1
- NJN *-1 IF 230 MICROSECOND DELAY NOT COMPLETE
- UJP GPS5 CHECK FOR INNER LOOP TIMEOUT
- GPS8 LDN 1
- IAM CTGS,CH READ GENERAL STATUS WORD 2
- NJN GPS9 IF STATUS WORD NOT RECEIVED
- LDC F0112 DETAILED STATUS
- RJM ICF ISSUE CTS FUNCTION
- ACN CH
- LDN 26D
- IAM CTSD,CH
- NJN GPS9 IF NOT ALL WORDS RECEIVED
- CFM GPS10,CH IF NO CHANNEL ERROR
- GPS9 LDN /MTX/CMF CHANNEL MALFUNCTION
- GPS9.1 RJM ERR PROCESS ERROR (NO RETURN)
- RBI SPACE 4,10
- ** RBI - READ BLOCK ID.
- *
- * EXIT (BIDW+1, BIDW+2) = CURRENT BLOCK ID.
- * TO *ERR* IF ERROR.
- *
- * USES T3.
- *
- * CALLS GPS, ICF.
- RBI SUBR ENTRY/EXIT
- LDC F0212 READ BLOCK ID
- RJM ICF ISSUE CTS FUNCTION
- RBI1 ACN CH
- LDN 10
- IAM BIDW,CH INPUT BLOCK ID INFORMATION
- STD T3 WORDS NOT TRANSFERRED
- LDN 0 WAIT FOR END OF OPERATION
- RJM GPS GET AND PROCESS GENERAL STATUS
- MJN RBI1 IF COMMAND RETRY
- SHN 21-13
- MJN RBI2 IF ALERT SET
- LDD T3
- ZJN RBIX IF ALL WORDS TRANSFERRED
- UJN GPS9 REPORT CHANNEL MALFUNCTION
- RBI2 LDN /MTX/STE STATUS ERROR
- UJN GPS9.1 REPORT ERROR
- RCU SPACE 4,15
- ** RCU - RECONNECT UNIT.
- *
- * RELOADING THE CCC BREAKS THE HARDWARE RESERVE TO THE UNIT
- * MAKING A RECONNECT NECESSARY. IN A DUAL ACCESS CONFIGURATION
- * THE DRIVE COULD BE RESERVED, SO RETRIES ARE NECESSARY. IF
- * THE DRIVE IS STILL RESERVED AFTER ALL RETRIES, THE CALLING
- * ROUTINE WILL REPORT AN ERROR WHEN THE NEXT COMMAND TO THE
- * CCC FAILS.
- *
- * USES T3.
- *
- * CALLS CCU.
- RCU SUBR ENTRY/EXIT
- LDN 77
- STD T3
- RCU1 RJM CCU CONNECT CTS UNIT
- NJN RCUX IF CONNECTED
- SOD T3
- NJN RCU1 IF MORE RETRIES
- UJN RCUX RETURN
- WFE SPACE 4,10
- ** WFE - WAIT FOR END OF OPERATION FOR CTS.
- *
- * ENTRY (WFEA) = STATUS MASK.
- * (WFEB) = EXPECTED GENERAL STATUS.
- *
- * EXIT (A) = 0 IF COMPLETION STATUS AS EXPECTED.
- *
- * CALLS GPS.
- WFE SUBR ENTRY/EXIT
- WFE1 LDN 0 WAIT FOR END OF OPERATION
- RJM GPS GET AND PROCESS GENERAL STATUS
- LPC 406125 READ
- WFEA EQU *-1
- * LPC 406331 WRITE
- * LPC 406321 WRITE LABEL
- LMC 1 READ
- WFEB EQU *-1
- * LMC 201 WRITE
- UJN WFEX RETURN
- ERRNG DNCV-* CTS CHANNEL ROUTINES TOO LONG
- LOC *O
- CCRL EQU *-.CEP LENGTH OF CHANNEL ROUTINES
- CCRA CHTB CHANNEL TABLE FOR CTS ROUTINES
- QUAL
- OVERLAY (INITIALIZE TAPE EXECUTIVE.),PPFW
- SPACE 4,10
- ** DIRECT CELL ASSIGNMENTS.
- CA EQU 30 CHANNEL NUMBER
- PL EQU 31 FIRMWARE BUFFER LENGTH
- EQ EQU 33 EQUIPMENT (CONTROLLER) NUMBER
- AB EQU 40 FIRMWARE NAME
- SPACE 4,10
- *** MAGNET INITIALIZATION DAYFILE MESSAGES.
- *
- * FATAL DAYFILE MESSAGES.
- *
- * C00, T0 MTS CONVERSION TABLE LOAD ERROR.
- * C00, T0 ATS CONVERSION TABLE LOAD ERROR.
- * C00, T0 FSC CONVERSION TABLE LOAD ERROR.
- * C00, T0 698 CONVERSION TABLE LOAD ERROR.
- * C00, 639 FIRMWARE LOAD ERRORS.
- * C00, MTS FIRMWARE LOAD ERRORS.
- * C00, FSC FIRMWARE LOAD ERRORS.
- * C00, 698 FIRMWARE LOAD ERRORS.
- * C00, CTS FIRMWARE LOAD ERRORS.
- * MORE THAN 8 TAPE CHANNELS.
- * MTS FIRMWARE NOT FOUND.
- * FSC FIRMWARE NOT FOUND.
- * 639 FIRMWARE NOT FOUND.
- * 698 FIRMWARE NOT FOUND.
- * CTS FIRMWARE NOT FOUND.
- * NO TAPE EQUIPMENT.
- * TWO CONTROLLER TYPES ON SAME CHANNEL.
- *
- * INFORMATIVE DAYFILE MESSAGES.
- *
- * MT000, C00, TURNED OFF.
- * NT000, C00, 200 IPS GCR DRIVE ON 1X PPS.
- * MTS FIRMWARE LOAD, PART NO.- 12345678.
- * FSC FIRMWARE LOAD, PART NO.- 12345678.
- * 639 FIRMWARE LOAD, PART NO.- 12345678.
- * 698 FIRMWARE LOAD, PART NO.- 12345678.
- * CTS FIRMWARE LOAD, MB468-DXX.
- ITE SPACE 4,10
- ** ITE - INITIALIZE TAPE EXECUTIVE.
- *
- * SETS UP CP AND DESCRIBES CONFIGURATION TO *MAGNET*.
- *
- * CALLS BCT, BDW, EST, LBC.
- *
- * MACROS MONITOR.
- ITE RJM EST PRE-PROCESS EST
- RJM LBC LOAD FIRMWARE AND CONVERSION TABLES
- RJM BDW BUILD EQUIPMENT DEFINITION WORDS
- RJM BCT BUILD CHANNEL STATUS TABLE
- ITE1 LDN ZERL SET INITIALIZATION COMPLETE
- CRD CM
- LDD IR+3
- SHN 6
- ADD RA
- SHN 6
- ADD IR+4
- CWD CM
- MONITOR DPPM DROP PPU
- LJM PPR EXIT TO PP RESIDENT
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPC2D
- *CALL COMPCLD
- *CALL COMPRNS
- CTEXT MTS CONVERSION MACROS AND TABLES.
- MTTR SPACE 4,10
- ** MTTR - GENERATE MTS CONVERSION MEMORY CODE.
- *
- * THIS MACRO GENERATES THE CODE FOR THE MTS
- * TAPE CONTROLLER FOR DATA CONVERSION.
- * DATA GENERATED INCLUDES BIT 6 (INCORRECT CODE)
- * AND BIT 9 (LOAD LAST FLAG).
- *
- *
- * MTTR CH,I,L
- * ENTRY *CH* = DISPLAY CODE CHARACTER OR 2 OCTAL DIGITS
- * *I* = INCORRECT CODE FLAG.
- * *L* = LOAD LAST FLAG.
- PURGMAC MTTR
- MTTR MACRO CH,I,L
- .1 MICRO 2,1, _CH
- .2 MICRO 1,2, _CH
- .3 SET 0
- IFC EQ,*".1"**,1
- .2 OCTMIC 1R_CH
- IFC NE,*I**,1
- .3 SET 100B
- IFC NE,*L**,1
- .3 SET .3+1000B
- CON ".2"+.3
- ENDM
- MTBCD SPACE 4
- ** MTBCD - TABLE OF INTERNAL BCD/DISPLAY CODE FOR MTS.
- * FIRST 64 ENTRIES, CONVERT INTERNAL BCD TO DISPLAY CODE.
- * INDEXED BY INTERNAL BCD.
- MTBCD BSS 0
- LOC 0
- MTTR 0
- MTTR 1
- MTTR 2
- MTTR 3
- MTTR 4
- MTTR 5
- MTTR 6
- MTTR 7
- MTTR 8
- MTTR 9
- MTTR 00 64 CHARACTER SET
- C6463 MTTR,63 (63 CHARACTER SET)
- MTTR =
- MTTR 64
- MTTR @
- MTTR 63 64 CHARACTER SET
- C6463 MTTR,00 (63 CHARACTER SET)
- MTTR [
- MTTR +
- MTTR A
- MTTR B
- MTTR C
- MTTR D
- MTTR E
- MTTR F
- MTTR G
- MTTR H
- MTTR I
- MTTR <
- MTTR .
- MTTR )
- MTTR \
- MTTR ^
- MTTR ;
- MTTR -
- MTTR J
- MTTR K
- MTTR L
- MTTR M
- MTTR N
- MTTR O
- MTTR P
- MTTR Q
- MTTR R
- MTTR !
- MTTR $
- MTTR *
- MTTR '
- MTTR ?
- MTTR >
- MTTR ( )
- MTTR /
- MTTR S
- MTTR T
- MTTR U
- MTTR V
- MTTR W
- MTTR X
- MTTR Y
- MTTR Z
- MTTR ]
- MTTR (,)
- MTTR 51
- MTTR 65
- MTTR #
- MTTR &
- LOC *O
- MTANS SPACE 4
- ** MTANS - TABLE FOR *ASCII* TO DISPLAY CODE CONVERSION.
- * FIRST 256 ENTRIES, CONVERT *ASCII* TO DISPLAY CODE.
- * INDEXED BY *ASCII* CHARACTER.
- MTANS BSS 0
- LOC 0
- MTTR ( ) 00 NUL NULL
- MTTR ] 01 SOH START OF HEADING
- MTTR 64 02 STX START OF TEXT
- MTTR # 03 ETX END OF TEXT
- MTTR $ 04 EOT END OF TRANSMISSION
- MTTR 63 05 ENQ ENQUIRY (64 CHARACTER SET)
- C6463 MTTR,( ) 05 ENQ ENQUIRY (63 CHARACTER SET)
- MTTR & 06 ACK ACKNOWLEDGE
- MTTR ' 07 BEL BELL
- MTTR 51 08 BS BACKSPACE
- MTTR ) 09 HT HORIZONTAL TAB
- MTTR * 0A LF LINE FEED
- MTTR + 0B VT VERTICAL TAB
- MTTR (,) 0C FF FORM FEED
- MTTR - 0D CR CARRIAGE RETURN
- MTTR . 0E SO SHIFT OUT
- MTTR / 0F SI SHIFT IN
- MTTR 0 10 DLE DATA LINK ESCAPE
- MTTR 1 11 DC1 DEVICE CONTROL 1 (X-ON)
- MTTR 2 12 DC2 DEVICE CONTROL 2
- MTTR 3 13 DC3 DEVICE CONTROL 3 (X-OFF)
- MTTR 4 14 DC4 DEVICE CONTROL 4 (STOP)
- MTTR 5 15 NAK NEGATIVE ACKNOWLEDGE
- MTTR 6 16 SYN SYNCHRONOUS IDLE
- MTTR 7 17 ETB END OF TRANSMISSION BLOCK
- MTTR 8 18 CAN CANCEL
- MTTR 9 19 EM END OF MEDIUM
- MTTR 00 1A SUB SUBSTITUTE (64 CHARACTERS)
- C6463 MTTR,63 1A SUB SUBSTITUTE (63 CHARACTERS)
- MTTR ; 1B ESC ESCAPE (DRIVER)
- MTTR [ 1C FS FILE SEPARATOR
- MTTR = 1D GS GROUP SEPARATOR
- MTTR > 1E RS RECORD SEPARATOR
- MTTR ? 1F US UNIT SEPARATOR
- MTTR ( ),,L 20 SPACE
- MTTR !,,L 21 EXCLAMATION POINT
- MTTR 64,,L 22 QUOTATION MARKS
- MTTR #,,L 23 NUMBER SIGN
- MTTR $,,L 24 $ DOLLAR SIGN
- MTTR 63,,L 25 PERCENT (64 CHARACTER SET)
- C6463 MTTR,( ) 25 PERCENT (63 CHARACTER SET)
- MTTR &,,L 26 AMPERSAND
- MTTR ',,L 27 APOSTROPHE
- MTTR 51,,L 28 ( OPENING PARENTHESIS
- MTTR ),,L 29 ) CLOSING PARENTHESIS
- MTTR *,,L 2A * ASTERISK
- MTTR +,,L 2B + PLUS
- MTTR (,),,L 2C , COMMA
- MTTR -,,L 2D - HYPHEN (MINUS)
- MTTR .,,L 2E . PERIOD
- MTTR /,,L 2F / SLANT
- MTTR 0,,L 30 0
- MTTR 1,,L 31 1
- MTTR 2,,L 32 2
- MTTR 3,,L 33 3
- MTTR 4,,L 34 4
- MTTR 5,,L 35 5
- MTTR 6,,L 36 6
- MTTR 7,,L 37 7
- MTTR 8,,L 38 8
- MTTR 9,,L 39 9
- MTTR 00,,L 3A COLON (64 CHARACTER SET)
- C6463 MTTR,(63,,L) 3A COLON (63 CHARACTER SET)
- MTTR ;,,L 3B SEMICOLON
- MTTR <,,L 3C LESS THAN
- MTTR =,,L 3D EQUALS
- MTTR >,,L 3E GREATER THAN
- MTTR ?,,L 3F QUESTION MARK
- MTTR @,,L 40 COMMERCIAL AT
- MTTR A,,L 41 A
- MTTR B,,L 42 B
- MTTR C,,L 43 C
- MTTR D,,L 44 D
- MTTR E,,L 45 E
- MTTR F,,L 46 F
- MTTR G,,L 47 G
- MTTR H,,L 48 H
- MTTR I,,L 49 I
- MTTR J,,L 4A J
- MTTR K,,L 4B K
- MTTR L,,L 4C L
- MTTR M,,L 4D M
- MTTR N,,L 4E N
- MTTR O,,L 4F 0
- MTTR P,,L 50 P
- MTTR Q,,L 51 Q
- MTTR R,,L 52 R
- MTTR S,,L 53 S
- MTTR T,,L 54 T
- MTTR U,,L 55 U
- MTTR V,,L 56 V
- MTTR W,,L 57 W
- MTTR X,,L 58 X
- MTTR Y,,L 59 Y
- MTTR Z,,L 5A Z
- MTTR [,,L 5B OPENING BRACKET
- MTTR \,,L 5C REVERSE SLANT
- MTTR ],,L 5D CLOSING BRACKET
- MTTR ^,,L 5E CIRCUMFLEX
- MTTR 65,,L 5F UNDERLINE
- MTTR @ 60 GRAVE ACCENT
- MTTR A 61 A LC
- MTTR B 62 B LC
- MTTR C 63 C LC
- MTTR D 64 D LC
- MTTR E 65 E LC
- MTTR F 66 F LC
- MTTR G 67 G LC
- MTTR H 68 H LC
- MTTR I 69 I LC
- MTTR J 6A J LC
- MTTR K 6B K LC
- MTTR L 6C L LC
- MTTR M 6D M LC
- MTTR N 6E N LC
- MTTR O 6F O LC
- MTTR P 70 P LC
- MTTR Q 71 Q LC
- MTTR R 72 R LC
- MTTR S 73 S LC
- MTTR T 74 T LC
- MTTR U 75 U LC
- MTTR V 76 V LC
- MTTR W 77 W LC
- MTTR X 78 X LC
- MTTR Y 79 Y LC
- MTTR Z 7A Z LC
- MTTR < 7B OPENING BRACE
- MTTR \ 7C VERTICAL LINE
- MTTR ! 7D CLOSING BRACE
- MTTR ^ 7E OVERLINE (TILDE)
- MTTR 65 7F DEL DELETE
- DUP 128,1
- MTTR 00,I INCORRECT CHARACTER
- LOC *O
- MTEBC SPACE 4
- ** MTEBC - TABLE OF EBCDIC/DISPLAY CODE.
- * CONVERT EBCDIC TO DISPLAY CODE.
- * INDEXED BY EBCDIC CODE VALUE.
- MTEBC BSS 0
- LOC 0
- MTTR ( ) 00 NUL NULL
- MTTR ] 01 SOH START OF HEADING
- MTTR 64 02 STX START OF TEXT
- MTTR # 03 ETX END OF TEXT
- MTTR ( ) 04
- MTTR ) 05 HT HORIZONTAL TAB
- MTTR ( ) 06
- MTTR 65 07 DEL DELETE
- MTTR ( ) 08
- MTTR ( ) 09
- MTTR ( ) 0A
- MTTR + 0B VT VERTICAL TAB
- MTTR (,) 0C FF FORM FEED
- MTTR - 0D CR CARRIAGE RETURN
- MTTR . 0E SO SHIFT OUT
- MTTR / 0F SI SHIFT IN
- MTTR 0 10 DLE DATA LINK ESCAPE
- MTTR 1 11 DC1 DEVICE CONTROL 1 (X-ON)
- MTTR 2 12 DC2 DEVICE CONTROL 2
- MTTR 3 13 DC3 DEVICE CONTROL 3 (X-OFF)
- MTTR ( ) 14
- MTTR ( ) 15
- MTTR 51 16 BS BACKSPACE
- MTTR ( ) 17
- MTTR 8 18 CAN CANCEL
- MTTR 9 19 EM END OF MEDIMUM
- MTTR ( ) 1A
- MTTR ( ) 1B
- MTTR [ 1C FS FILE SEPERATOR
- MTTR = 1D GS GROUP SEPERATOR
- MTTR > 1E RS RECORD SEPERATOR
- MTTR ? 1F US UNIT SEPERATOR
- MTTR ( ) 20
- MTTR ( ) 21
- MTTR ( ) 22
- MTTR ( ) 23
- MTTR ( ) 24
- MTTR * 25 LF LINE FEED
- MTTR 7 26 ETB END OF TRANSMISSION BLOCK
- MTTR ; 27 ESC ESCAPE
- MTTR ( ) 28
- MTTR ( ) 29
- MTTR ( ) 2A
- MTTR ( ) 2B
- MTTR ( ) 2C
- MTTR 63 2D ENQ ENQUIRY (64 CHARACTER SET)
- C6463 MTTR,( ) 2D ENQ ENQUIRY (63 CHARACTER SET)
- MTTR & 2E ACK ACKNOWLEDGE
- MTTR ' 2F BEL BELL
- MTTR ( ) 30
- MTTR ( ) 31
- MTTR 6 32 SYN SYNCHROUS IDLE
- MTTR ( ) 33
- MTTR ( ) 34
- MTTR ( ) 35
- MTTR ( ) 36
- MTTR $ 37 EOT END OF TRANSMISSION
- MTTR ( ) 38
- MTTR ( ) 39
- MTTR ( ) 3A
- MTTR ( ) 3B
- MTTR 4 3C DC4 DEVICE CONTROL 4
- MTTR 5 3D NAK NEGATIVE ACKNOWLEDGE
- MTTR ( ) 3E
- MTTR 00 3F SUB SUBSTITUTE (64 CHARACTER SET
- C6463 MTTR,63 3F SUB SUBSTITUTE (63 CHARACTER SET
- MTTR ( ),,L 40 SPACE
- MTTR ( ) 41
- MTTR ( ) 42
- MTTR ( ) 43
- MTTR ( ) 44
- MTTR ( ) 45
- MTTR ( ) 46
- MTTR ( ) 47
- MTTR ( ) 48
- MTTR ( ) 49
- MTTR [,,L 4A OPENING BRACKET
- MTTR .,,L 4B . PERIOD
- MTTR <,,L 4C LESS THAN
- MTTR 51,,L 4D OPENING PARENTHESIS
- MTTR +,,L 4E + PLUS
- MTTR !,,L 4F LOGICAL OR
- MTTR &,,L 50 AMPERSAND
- MTTR ( ) 51
- MTTR ( ) 52
- MTTR ( ) 53
- MTTR ( ) 54
- MTTR ( ) 55
- MTTR ( ) 56
- MTTR ( ) 57
- MTTR ( ) 58
- MTTR ( ) 59
- MTTR ],,L 5A CLOSING BRACKET
- MTTR $,,L 5B $ DOLLAR SIGN
- MTTR *,,L 5C * ASTERISK
- MTTR ),,L 5D ) CLOSING PARENTHESIS
- MTTR ;,,L 5E SEMICOLON
- MTTR ^,,L 5F NOT LOGICAL NOT
- MTTR -,,L 60 - HYPHEN (MINUS)
- MTTR /,,L 61 / SLANT
- MTTR ( ) 62
- MTTR ( ) 63
- MTTR ( ) 64
- MTTR ( ) 65
- MTTR ( ) 66
- MTTR ( ) 67
- MTTR ( ) 68
- MTTR ( ) 69
- MTTR \ 6A VERTICAL LINE
- MTTR (,),,L 6B , COMMA
- MTTR 63,,L 6C PERCENT (64 CHARACTER SET)
- C6463 MTTR,( ) 6C PERCENT (63 CHARACTER SET)
- MTTR 65,,L 6D UNDERSCORE
- MTTR >,,L 6E GREATER THAN
- MTTR ?,,L 6F QUESTION MARK
- MTTR ( ) 70
- MTTR ( ) 71
- MTTR ( ) 72
- MTTR ( ) 73
- MTTR ( ) 74
- MTTR ( ) 75
- MTTR ( ) 76
- MTTR ( ) 77
- MTTR ( ) 78
- MTTR @ 79 GRAVE ACCENT
- MTTR 00,,L 7A COLON (64 CHARACTER SET)
- C6463 MTTR,(63,,L) 7A COLON (63 CHARACTER SET)
- MTTR #,,L 7B NUMBER SIGN
- MTTR @,,L 7C COMMERCIAL AT
- MTTR ',,L 7D APOSTROPHE
- MTTR =,,L 7E = EQUALS
- MTTR 64,,L 7F QUOTATION MARKS
- MTTR ( ) 80
- MTTR A 81 A LC
- MTTR B 82 B LC
- MTTR C 83 C LC
- MTTR D 84 D LC
- MTTR E 85 E LC
- MTTR F 86 F LC
- MTTR G 87 G LC
- MTTR H 88 H LC
- MTTR I 89 I LC
- MTTR ( ) 8A
- MTTR ( ) 8B
- MTTR ( ) 8C
- MTTR ( ) 8D
- MTTR ( ) 8E
- MTTR ( ) 8F
- MTTR ( ) 90
- MTTR J 91 J LC
- MTTR K 92 K LC
- MTTR L 93 L LC
- MTTR M 94 M LC
- MTTR N 95 N LC
- MTTR O 96 O LC
- MTTR P 97 P LC
- MTTR Q 98 Q LC
- MTTR R 99 R LC
- MTTR ( ) 9A
- MTTR ( ) 9B
- MTTR ( ) 9C
- MTTR ( ) 9D
- MTTR ( ) 9E
- MTTR ( ) 9F
- MTTR ( ) A0
- MTTR ^ A1 OVERLINE (TILDE)
- MTTR S A2 S LC
- MTTR T A3 T LC
- MTTR U A4 U LC
- MTTR V A5 V LC
- MTTR W A6 W LC
- MTTR X A7 X LC
- MTTR Y A8 Y LC
- MTTR Z A9 Z LC
- MTTR ( ) AA
- MTTR ( ) AB
- MTTR ( ) AC
- MTTR ( ) AD
- MTTR ( ) AE
- MTTR ( ) AF
- MTTR ( ) B0
- MTTR ( ) B1
- MTTR ( ) B2
- MTTR ( ) B3
- MTTR ( ) B4
- MTTR ( ) B5
- MTTR ( ) B6
- MTTR ( ) B7
- MTTR ( ) B8
- MTTR ( ) B9
- MTTR ( ) BA
- MTTR ( ) BB
- MTTR ( ) BC
- MTTR ( ) BD
- MTTR ( ) BE
- MTTR ( ) BF
- MTTR < C0 OPENING BRACE
- MTTR A,,L C1 A
- MTTR B,,L C2 B
- MTTR C,,L C3 C
- MTTR D,,L C4 D
- MTTR E,,L C5 E
- MTTR F,,L C6 F
- MTTR G,,L C7 G
- MTTR H,,L C8 H
- MTTR I,,L C9 I
- MTTR ( ) CA
- MTTR ( ) CB
- MTTR ( ) CC
- MTTR ( ) CD
- MTTR ( ) CE
- MTTR ( ) CF
- MTTR ! D0 CLOSING BRACE
- MTTR J,,L D1 J
- MTTR K,,L D2 K
- MTTR L,,L D3 L
- MTTR M,,L D4 M
- MTTR N,,L D5 N
- MTTR O,,L D6 O
- MTTR P,,L D7 P
- MTTR Q,,L D8 Q
- MTTR R,,L D9 R
- MTTR ( ) DA
- MTTR ( ) DB
- MTTR ( ) DC
- MTTR ( ) DD
- MTTR ( ) DE
- MTTR ( ) DF
- MTTR \,,L E0 REVERSE SLANT
- MTTR ( ) E1
- MTTR S,,L E2 S
- MTTR T,,L E3 T
- MTTR U,,L E4 U
- MTTR V,,L E5 V
- MTTR W,,L E6 W
- MTTR X,,L E7 X
- MTTR Y,,L E8 Y
- MTTR Z,,L E9 Z
- MTTR ( ) EA
- MTTR ( ) EB
- MTTR ( ) EC
- MTTR ( ) ED
- MTTR ( ) EE
- MTTR ( ) EF
- MTTR 0,,L F0 0
- MTTR 1,,L F1 1
- MTTR 2,,L F2 2
- MTTR 3,,L F3 3
- MTTR 4,,L F4 4
- MTTR 5,,L F5 5
- MTTR 6,,L F6 6
- MTTR 7,,L F7 7
- MTTR 8,,L F8 8
- MTTR 9,,L F9 9
- MTTR ( ) FA
- MTTR ( ) FB
- MTTR ( ) FC
- MTTR ( ) FD
- MTTR ( ) FE
- MTTR ( ) FF
- LOC *O
- ENDX
- CTEXT ATS CONVERSION MACROS AND TABLES. (WRITE)
- ATSW SPACE 4,10,10
- ** ATSW - GENERATE ATS CONVERSION MEMORY FOR WRITE OF
- * 6 BIT CHARACTERS.
- *
- * THIS MACRO GENERATES THE CODE FOR THE ATS TAPE
- * CONTROLLER FOR OUTPUT OF 6 BIT BCD CHARACTERS.
- *
- * ATSW CH1,CH2
- *
- * WHERE CH1, CH2 = BCD CHARACTER VALUES IN OCTAL. THESE
- * TWO CHARACTERS WILL BE PACKED INTO 1 PP WORD.
- PURGMAC ATSW
- ATSW MACRO CH1,CH2
- CON CH1_CH2
- ENDM
- ATEW SPACE 4,10,10
- ** ATEW - GENERATE ATS CONVERSION TABLE FOR WRITE
- * OF EIGHT BIT CHARACTERS.
- *
- * THIS MACRO GENERATES THE CODE FOR ATS TAPE CONTROLLER
- * FOR THE OUTPUT OF 8 BIT CHARACTERS.
- *
- * ATEW CH1,CH2,CH3
- *
- * WHERE CH1, CH2, CH3 = CHARACTER VALUES IN HEXIDECIMAL.
- * THE 3 CHARACTERS WILL BE PACKED INTO 2 PP WORDS.
- PURGMAC ATEW
- ATEW MACRO CH1,CH2,CH3
- .1 MICRO 1,1, _CH2
- .2 MICRO 2,1, _CH2
- CON 0#_CH1_".1",0#_".2"_CH3
- ENDM
- ATBCD SPACE 4,10,10
- ** ATBCD - TABLE TO CONVERT DISPLAY TO INTERNAL BCD.
- * EACH PP WORD CONTAINS 2 INTERNAL BCD VALUES.
- * INDEXED BY DISPLAY CODE VALUE / 2.
- ATBCD BSS 0
- LOC 0
- ATSW 00,21 COLON, A
- C6463 ATSW,(16,21) (63 CHARACTER SET - COLON, A)
- ATSW 22,23 B, C
- ATSW 24,25 D, E
- ATSW 26,27 F, G
- ATSW 30,31 H, I
- ATSW 41,42 J, K
- ATSW 43,44 L, M
- ATSW 45,46 N, O
- ATSW 47,50 P, Q
- ATSW 51,62 R, S
- ATSW 63,64 T, U
- ATSW 65,66 V, W
- ATSW 67,70 X, Y
- ATSW 71,00 Z, 0
- ATSW 01,02 1, 2
- ATSW 03,04 3, 4
- ATSW 05,06 5, 6
- ATSW 07,10 7, 8
- ATSW 11,20 9, +
- ATSW 40,54 -, *
- ATSW 61,74 /, (
- ATSW 34,53 ), $
- ATSW 13,60 =, SPACE
- ATSW 73,33 ., ,
- ATSW 76,17 #, [
- ATSW 72,16 ],
- C6463 ATSW,(72,00) (63 CHARACTER SET - ], %)
- ATSW 14,75 ", _
- ATSW 52,77 !, &
- ATSW 55,56 ', ?
- ATSW 32,57 <, >
- ATSW 15,35 @A \
- ATSW 36,37 ^, ;
- DUP 96,1
- ATSW 60,60 BLANK FILL REMAINDER OF TABLE
- LOC *O
- ATANS SPACE 4,10
- ** ATANS - TABLE TO CONVERT DISPLAY TO ASCII.
- * EACH 2 PP WORDS CONTAIN 3 ASCII VALUES.
- ATANS BSS 0
- LOC 0
- ATEW 3A,41,42 COLON, A, B
- C6463 ATEW,(20,41,42),P (63 CHARACTER SET - SPACE, A, B)
- ATEW 43,44,45 C, D, E
- ATEW 46,47,48 F, G, H
- ATEW 49,4A,4B I, J, K
- ATEW 4C,4D,4E L, M, N
- ATEW 4F,50,51 O, P, Q
- ATEW 52,53,54 R, S, T
- ATEW 55,56,57 U, V, W
- ATEW 58,59,5A X, Y, Z
- ATEW 30,31,32 0, 1, 2
- ATEW 33,34,35 3, 4, 5
- ATEW 36,37,38 6, 7, 8
- ATEW 39,2B,2D 9, PLUS, HYPHEN
- ATEW 2A,2F,28 ASTERISK, SLANT, OPENING PAREN
- ATEW 29,24,3D CLOSING PAREN, DOLLAR SIGN, EQUALS
- ATEW 20,2C,2E SPACE, PERIOD, COMMA
- ATEW 23,5B,5D NUMBER SIGN, OPEN BRACKET, CLOSING BRACKET
- ATEW 25,22,5F PERCENT, QUOTATION MARKS, UNDERLINE
- C6463 ATEW,(3A,22,5F),P (63 CHARACTER SET - PERCENT)
- ATEW 21,26,27 EXCLAMATION POINT, AMPERSAND, APOSTROPHE
- ATEW 3F,3C,3E QUESTION MARK, LESS THAN, GREATER THAN
- ATEW 40,5C,5E COMMERICAL AT, REVERSE SLANT, CIRCUMFLEX
- ATEW 3B,20,20 SEMICOLON, SPACE, SPACE
- DUP 63,1
- ATEW 20,20,20 BLANK FILL REMAINDER OF TABLE
- CON 400 LAST CHARACTER
- LOC *O
- ATEBC SPACE 4,10
- ** ATEBC - TABLE TO CONVERT DISPLAY TO EBCDIC.
- * EACH 2 PP WORDS CONTAIN 3 EBCDIC VALUES.
- ATEBC BSS 0
- LOC 0
- ATEW 7A,C1,C2 COLON, A, B
- C6463 ATEW,(00,C1,C2),P (63 CHARACTER SET - COLON, A, B)
- ATEW C3,C4,C5 C, D, E
- ATEW C6,C7,C8 F, G, H
- ATEW C9,D1,D2 I, J, K
- ATEW D3,D4,D5 L, M, N
- ATEW D6,D7,D8 O, P, Q
- ATEW D9,E2,E3 R, S, T
- ATEW E4,E5,E6 U, V, W
- ATEW E7,E8,E9 X, Y, Z
- ATEW F0,F1,F2 0, 1, 2
- ATEW F3,F4,F5 3, 4, 5
- ATEW F6,F7,F8 6, 7, 8
- ATEW F9,4E,60 9, PLUS, HYPHEN
- ATEW 5C,61,4D ASTERISK, SLANT, OPENING PAREN
- ATEW 5D,5B,7E CLOSING PAREN, DOLLAR SIGN, EQUALS
- ATEW 40,6B,4B SPACE, PERIOD, COMMA
- ATEW 7B,4A,5A NUMBER SIGN, OPEN BRACKET, CLOSING BRACKET
- ATEW 6C,7F,6D PERCENT, QUOTATION MARKS, UNDERLINE
- C6463 ATEW,(7A,7F,6D),P (63 CHARACTER SET - COLON)
- ATEW 4F,50,7D EXCLAMATION POINT, AMPERSAND, APOSTROPHE
- ATEW 6F,4C,6E QUESTION MARK, LESS THAN, GREATER THAN
- ATEW 7C,E0,5F COMMERCIAL AT, REVERSE SLANT, CIRCUMFLEX
- ATEW 5E,40,40 SEMICOLON, SPACE, SPACE
- DUP 63,1
- ATEW 40,40,40 BLANK FILL REMAINDER OF TABLE
- CON 1000 LAST CHARACTER
- LOC *O
- ENDX
- TITLE INITIALIZATION SUBROUTINES.
- ABT SPACE 4,10
- ** ABT - ABORT.
- *
- * ENTRY (A) = MESSAGE ADDRESS.
- *
- * CALLS DFM.
- *
- * MACROS MONITOR.
- ABT RJM DFM ISSUE MESSAGE
- MONITOR ABTM ABORT
- LJM PPR EXIT TO PP RESIDENT
- ADC SPACE 4,10
- ** ADC - ABORT AND DROP CHANNEL.
- *
- * ENTRY (A) = MESSAGE ADDRESS.
- * (CA) = CHANNEL NUMBER.
- *
- * CALLS C2D, DFM.
- *
- * MACROS DCHAN.
- ADC STD AB SAVE MESSAGE ADDRESS
- LDD CA RETURN CHANNEL
- DCHAN
- LDD CA SET CHANNEL NUMBER IN MESSAGE
- RJM C2D
- STM 1,AB
- LDD AB
- ADC ERLN
- RJM DFM ISSUE MESSAGE TO ERROR LOG
- LDD AB
- UJN ABT ABORT
- BCT SPACE 4,10
- ** BCT - BUILD CHANNEL STATUS TABLE.
- *
- * ENTRY CST ENTRIES PRESET TO ZERO BY MAGNET.
- *
- * EXIT CHANNEL AND CONTROLLER FLAGS SET IN *CPST*.
- *
- * USES T1, CM - CM+4.
- BCT SUBR ENTRY/EXIT
- LDN 0 INITIALIZE CHANNEL INDEX
- STD T1
- BCT1 LDM CHLI,T1
- LMC 7777
- ZJN BCTX IF END OF CHANNELS
- LDN ZERL CLEAR ASSEMBLY
- CRD CM
- LDM CHLI,T1 SAVE CHANNEL NUMBER AND CONTROLLER FLAGS
- LPC 340
- NJN BCT2 IF NOT CMTS CONTROLLER
- LDM CHLI,T1
- LPC 7437
- LMD HN
- UJN BCT3 SET CMTS
- BCT2 LDM CHLI,T1
- LPC 7737
- BCT3 STD CM+3
- AOD CM+4 INSURE NON-ZERO ENTRY FOR MAGNET CHECK
- LDD RA SET CST ADDRESS
- SHN 6
- ADK /MTX/CST
- ADD T1
- ADD T1
- ERRNZ /MTX/CSTE-2
- ADK /MTX/CPST INITIALIZE PROCESSOR STATUS
- CWD CM
- AOD T1 ADVANCE CHANNEL INDEX
- LJM BCT1 PROCESS NEXT CHANNEL
- BDW SPACE 4,25
- ** BDW - BUILD DEFINITON WORDS.
- *
- * RETURNS EQUIPMENT DEFINITION INFORMATION FOR EACH UNIT TO
- * BUFFER AT /MTX/UINT. THE BUFFER IS TERMINATED WITH A ZERO
- * WORD.
- *
- * USES T5, T7, SC, AB - AB+4, CM - CM+4, CN - CN+4.
- *
- * CALLS CTE.
- *
- * MACROS SFA.
- *
- * *UINT* ENTRY FORMAT -
- *
- *T 12/ ED,12/ HP,12/ EO,12/ ATCP,9/0,2/DT,1/R
- *
- * ED *ED* BYTE OF *UST1*.
- * HP *HP* BYTE OF *UST1*.
- * EO *EO* BYTE OF *UST1*.
- * ATCP *AT* DEVICE CONTROL PATH INFORMATION.
- * DT TAPE DEVICE TYPE.
- * R RESERVED FOR TAPE DEVICE TYPE EXPANSION.
- * TERMINATE *UINT*.
- BDW3 LDD RA WRITE ZERO ENTRY
- SHN 6
- ADC /MTX/UINT
- ADD T7
- CWD CM
- BDW SUBR ENTRY/EXIT
- * INITIALIZE EST SEARCH.
- LDN ESTP READ EST POINTER
- CRD CM
- LDD CM+2 SET LAST EST ORDINAL + 1
- STD SC
- LDN 0
- STD T7
- LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
- STD T5
- * CHECK FOR TAPE EQUIPMENT.
- BDW1 LDN ZERL CLEAR ASSEMBLY
- CRD CM
- AOD T5 INCREMENT EST ORDINAL
- LMD SC
- ZJN BDW3 IF END OF EST
- SFA EST,T5 READ EST ENTRY
- ADK EQDE
- CRD AB
- ADK EQAE-EQDE
- CRD CN
- LDD AB+3 GET EQUIPMENT MNEMONIC
- RJM CTE CHECK FOR TAPE EQUIPMENT
- MJN BDW1 IF NOT TAPE EQUIPMENT
- * INITIALIZE *UINT* ENTRY.
- SHN 1 SET DEVICE TYPE
- STD CM+4
- LDD T5 SET EST ORDINAL
- STD CM+2
- LDD AB SET MTS/ATS/GCR FLAGS
- SHN -3
- LPN 62
- STD CM+1
- LDD AB SET FSC FLAG
- LPC 100
- RAD CM+1
- LDD AB SET CMTS FLAG
- LPN 4
- SHN 6-2
- RAD CM+1
- LDM BDWA,T1 SET CTS AND 9 TRACK STATUS
- RAD CM+1
- LDD AB SET ISMT FLAG
- LPN 10
- SHN 10-3
- RAD CM+1
- LDD CN+3 SET ACCESS LEVELS
- LPN 77
- SHN 6
- STD CM
- LDD T1
- LMN /MTX/DVAT
- NJN BDW2 IF NOT *AT* DEVICE
- LDN 2 SET ACS FLAG
- RAD CM
- LDD CN+2 SET CONTROL PATH PARAMETERS
- STD CM+3
- BDW2 LDD RA
- SHN 6
- ADC /MTX/UINT WRITE DEFINITION TO *MAGNET* BUFFER
- ADD T7
- CWD CM
- AOD T7
- LJM BDW1 LOOP FOR OTHER UNITS
- * TABLE TO SET 9 TRACK OR CTS FLAG IN *UST1*.
- BDWA INDEX
- INDEX /MTX/DVMT,0
- INDEX /MTX/DVCT,200
- INDEX /MTX/DVNT,1
- INDEX /MTX/DVAT,200
- INDEX /MTX/DVMX
- CCT SPACE 4,10
- ** CCT - CONVERT CONVERSION TABLE. (MTS TABLE TO ATS READ TABLE)
- *
- * ENTRY (A) = ADDRESS OF MTS TABLE.
- * (T1) = TABLE NUMBER.
- *
- * EXIT BFMS CONTAINS ATS READ CONVERSION TABLE.
- *
- * USES T2 - T6.
- CCT2 LDI T2 CONVERT BCD TABLE
- STD T4
- AOD T2
- LDD T4
- SHN 6
- ADI T2
- STM BFMS,T3
- AOD T2
- AOD T3
- LMN 64D/2
- NJN CCT2 IF MORE CHARACTERS IN TABLE
- CCT3 LDC 2R SPACE FILL REMAINDER OF TABLE
- STM BFMS,T3
- AOD T3
- LMC 128D
- NJN CCT3 IF MORE CHARACTERS
- CCT SUBR ENTRY/EXIT
- STD T2 SAVE TABLE ADDRESS
- LDN 0 INITIALIZE COUNTER
- STD T3
- LDD T1
- LMN 3
- ZJN CCT2 IF BCD LOAD
- * PROCESS 8 BIT CONVERSION.
- CCT1 LDI T2 PACK 3 MTS BYTES INTO 2 ATS BYTES
- LPC 177
- STD T4
- AOD T2
- LDI T2
- LPC 177
- STD T5
- AOD T2
- LDI T2
- LPC 177
- STD T6
- AOD T2
- LDD T4 MERGE THE CHARACTERS
- SHN 8D
- ADD T5
- SHN -4D
- STM BFMS,T3
- AOD T3
- LDD T5
- SHN 8D
- ADD T6
- STM BFMS,T3
- AOD T3
- ADC -170D
- MJN CCT1 IF MORE CHARACTERS TO CONVERT
- LDI T2 SET LAST PARTIAL BYTE
- LPC 177
- SHN 4D
- STM BFMS,T3
- LJM CCTX RETURN
- SPACE 4,15
- ** CHANNEL AND EQUIPMENT DEFINITIONS.
- *
- * *CHLI* IS BUILT BY *CCH*, IN THE FOLLOWING FORMAT.
- *
- * 13-11 EQUIPMENT NUMBER (0 IF CTS CHANNEL).
- * 10 RESERVED.
- * 7,6,5 CONTROLLER TYPE.
- * 000 = CMTS CHANNEL.
- * 001 = ISMT CHANNEL.
- * 010 = ATS CHANNEL.
- * 011 = FSC CHANNEL.
- * 100 = MTS CHANNEL.
- * 111 = CTS CHANNEL.
- * 4-0 CHANNEL NUMBER.
- CHCN CON 0 COUNT OF TAPE CHANNELS
- CHLI CON -0,-0,-0,-0,-0,-0,-0,-0,-0
- CMD SPACE 4,10
- ** CMD - CHANNEL MODIFICATION.
- *
- * ENTRY (A) = CHANNEL.
- *
- * EXIT (CA) = CHANNEL.
- * (A) = 0 IF CHANNEL RESERVED.
- * (A) .NE. 0 IF CHANNEL DOWN.
- *
- * USES T0, T3.
- *
- * MACROS RCHAN.
- CMD SUBR ENTRY/EXIT
- LPN 37
- STD CA SET CHANNEL NUMBER
- ADC 4000 REQUEST REPLY IF CHANNEL DOWN
- RCHAN
- LDD CM+1
- SHN 0-13
- NJN CMDX IF CHANNEL DOWN
- LDC CTAB MODIFY CHANNELS
- STD T3
- CMD1 LDI T3
- ZJN CMDX IF END OF CHANNEL TABLE
- STD T0
- LDI T0
- SCN 37
- LMD CA
- STI T0
- AOD T3
- UJN CMD1 CONTINUE MODIFYING CHANNEL INSTRUCTIONS
- CTE SPACE 4,10
- ** CTE - CHECK FOR TAPE EQUIPMENT.
- *
- * ENTRY (A) = EQUIPMENT MNEMONIC.
- *
- * EXIT (A) = TAPE DEVICE TYPE IF TAPE EQUIPMENT.
- * (A) .LT. 0 IF NOT TAPE EQUIPMENT.
- * (T1) = TAPE DEVICE TYPE IF TAPE EQUIPMENT.
- *
- * USES T1.
- CTE SUBR ENTRY/EXIT
- STD T0
- LDN /MTX/DVMX
- STD T1
- CTE1 SOD T1
- MJN CTEX IF ALL ENTRIES CHECKED
- LDD T0
- LMM CTEA,T1
- NJN CTE1 IF NO MATCH
- LDD T1 SET DEVICE TYPE
- UJN CTEX RETURN
- CTEA INDEX DEVICE MNEMONIC TABLE
- INDEX /MTX/DVMT,2RMT
- INDEX /MTX/DVCT,2RCT
- INDEX /MTX/DVNT,2RNT
- INDEX /MTX/DVAT,2RAT
- INDEX /MTX/DVMX
- ICF SPACE 4,10
- ** ICF - ISSUE CHANNEL FUNCTION.
- *
- * ENTRY (A) = FUNCTION.
- *
- * EXIT (A) = 0 IF FUNCTION REJECT
- * (A) .NE. 0 IF NOT FUNCTION REJECT.
- ICF SUBR ENTRY/EXIT
- DCN CH+40
- FAN CH
- LCN 0
- ICF1 IJM ICFX,CH IF FUNCTION ACCEPTED
- SBN 1
- NJN ICF1 IF NOT TIMED OUT
- DCN CH+40
- UJN ICFX RETURN
- IFL SPACE 4,10
- ** IFL - INITIALIZE FOR FIRMWARE LOAD.
- *
- * ENTRY (A) = 3 CHARACTER ADAPTOR NAME.
- *
- * EXIT (SC) = CHLI-1.
- * THE ADAPTOR NAME IS SET INTO THE APPROPRIATE DAYFILE
- * MESSAGES AND THE FIRMWARE PART NUMBER IS INITIALIZED.
- *
- * USES T1.
- IFL SUBR ENTRY/EXIT
- STM LBCG+3
- STM LBCH+1
- STM LCMC+5
- SHN -14
- LMC 2L
- STM LBCG+2 CHANGE MESSAGES
- STM LBCH
- STM LCMC+4
- LDC /MTX/UIBF SET CM BUFFER ADDRESS
- STM LBCA
- LDC ADCI
- STM LBCA-1
- LDN 3
- STD T1
- IFL1 LDC 2R00 REINITIALIZE FIRMWARE PART NUMBER
- STM LBCH+17,T1
- SOD T1
- PJN IFL1 IF MORE BYTES TO INITIALIZE
- LDC CHLI-1 INITIALIZE *CHLI* INDEX
- STD SC
- LJM IFLX RETURN
- ILM SPACE 4,10
- ** ILM - ISSUE FIRMWARE LOADED MESSAGE.
- *
- * ENTRY (ILMA) = 1 IF FIRMWARE LOADED.
- * (LBCH) = MESSAGE.
- *
- * EXIT (ILMA) = 0.
- *
- * CALLS DFM.
- ILM SUBR ENTRY/EXIT
- LDC 0
- ILMA EQU *-1
- * LDC 1 (FIRMWARE WAS LOADED)
- ZJN ILMX IF FIRMWARE NOT LOADED
- LDC LBCH+ERLN ISSUE MESSAGE TO ERRLOG
- RJM DFM
- STM ILMA RESET
- UJN ILMX RETURN
- LBC SPACE 4,15
- ** LBC - LOAD BUFFER CONTROLLER.
- *
- * LOAD CONTROLWARE TO FSC, ISMT, CMTS, MTS, AND CTS TAPE
- * ADAPTORS. ALSO LOAD CONVERSION TABLES TO MTS, ATS, FSC, ISMT
- * AND CMTS CONTROLLERS.
- *
- * ENTRY (CHLI) = TABLE OF CHANNELS.
- *
- * EXIT FIRMWARE LOADED.
- *
- * ERROR EXIT TO *ABT* IF FIRMWARE RECORD NOT FOUND.
- *
- * USES CN, EQ, PL, SC, T1, T3 - T7, AB - AB+4, CM - CM+4.
- *
- * CALLS CLD, CMD, ICF, IFL, ILM, LCA, LCM, RNS, *0CT*.
- *
- * MACROS DCHAN, DELAY, ENDMS, EXECUTE, SETMS.
- LBC17 RJM ILM ISSUE FIRMWARE LOADED MESSAGE
- * INITIALIZE FSC FIRMWARE LOAD.
- LDC 3RFSC INITIALIZE FOR FSC FIRMWARE LOAD
- RJM IFL
- LDC ZJNI+LBC15-LBCC
- ERRPL LBC15-LBCC-40 CHECK JUMP IN RANGE
- STM LBCC CHANGE END OF FIRMWARE LOAD
- * LOAD FIRMWARE TO ALL FSC ADAPTORS.
- LBC18 AOD SC
- LDI SC
- LMC 7777
- ZJN LBC21 IF END OF CHANNELS
- SHN -5
- LPN 7
- LMN 3&7
- NJN LBC18 IF NOT FSC
- LDM ILMA
- ZJN LBC19 IF FIRMWARE NOT IN CM BUFFER YET
- LJM LBC10 OUTPUT FIRMWARE TO ADAPTOR
- LBC19 AOM ILMA INDICATE FIRMWARE IN BUFFER
- LDD MA
- CWM LBCI,ON MOVE RECORD NAME TO DIRECT CELLS
- SBN 1
- CRD AB
- RJM CLD SEARCH LIBRARY DIRECTORY
- NJN LBC20 IF FIRMWARE RECORD FOUND
- LDC =C* FSC FIRMWARE NOT FOUND.*
- LJM ABT ABORT
- LBC20 LJM LBC6 CONTINUE FIRMWARE RECORD READ
- LBC21 RJM ILM ISSUE FIRMWARE LOADED MESSAGE
- * INITIALIZE CMTS FIRMWARE LOAD.
- LDC 3R698 INITIALIZE FOR 698 FIRMWARE LOAD
- RJM IFL
- LDC LBC22 SET RETURN ADDRESS
- STM LBCD
- * LOAD FIRMWARE TO ALL CMTS ADAPTORS.
- LBC22 AOD SC
- LDI SC
- LMC 7777
- ZJN LBC25 IF END OF CHANNELS
- SHN -5
- LPN 7
- LMN 0&7
- NJN LBC22 IF NOT CMTS
- LDM ILMA
- ZJN LBC23 IF FIRMWARE NOT IN CM BUFFER YET
- LJM LBC10 OUTPUT FIRMWARE TO ADAPTOR
- LBC23 AOM ILMA INDICATE FIRMWARE IN BUFFER
- LDD MA
- CWM LBCK,ON MOVE RECORD NAME TO DIRECT CELLS
- SBN 1
- CRD AB
- RJM CLD SEARCH LIBRARY DIRECTORY
- NJN LBC24 IF FIRMWARE RECORD FOUND
- LDC =C* 698 FIRMWARE NOT FOUND.*
- LJM ABT ABORT
- LBC24 LJM LBC6 CONTINUE FIRMWARE RECORD READ
- LBC25 RJM ILM ISSUE FIRMWARE LOADED MESSAGE
- * INITIALIZE ISMT FIRMWARE LOAD.
- LDC 3R639 INITIALIZE FOR 639 FIRMWARE LOAD
- RJM IFL
- LDC LBC26
- STM LBCD
- * LOAD FIRMWARE TO ALL ISMT ADAPTORS.
- LBC26 AOD SC
- LDI SC
- LMC 7777
- ZJN LBC29 IF END OF CHANNELS
- SHN -5
- LPN 7
- LMN 1&7
- NJN LBC26 IF NOT ISMT
- LDM ILMA
- ZJN LBC27 IF FIRMWARE NOT IN CM BUFFER YET
- LJM LBC10 OUTPUT FIRMWARE TO ADAPTOR
- LBC27 AOM ILMA INDICATE FIRMWARE IN BUFFER
- LDD MA
- CWM LBCJ,ON MOVE RECORD NAME TO DIRECT CELLS
- SBN 1
- CRD AB
- RJM CLD SEARCH LIBRARY DIRECTORY
- NJN LBC28 IF FIRMWARE RECORD FOUND
- LDC =C* 639 FIRMWARE NOT FOUND.*
- LJM ABT ABORT
- LBC28 LJM LBC6 CONTINUE FIRMWARE RECORD READ
- LBC29 RJM ILM ISSUE FIRMWARE LOADED MESSAGE
- * LOAD FIRMWARE TO ALL CTS ADAPTERS.
- LDC 3RCTS
- RJM IFL INITIALIZE FOR FIRMWARE LOAD
- LBC30 AOD SC
- LDI SC
- LMC 7777
- ZJP LBC32 IF END OF CHANNELS
- SHN -5
- LPN 7
- LMK 7&7
- NJN LBC30 IF NOT CTS
- AOM ILMA SO FIRMWARE LOADED MESSAGE DISPLAYED
- LDI SC SET CHANNEL NUMBER
- LPN 37
- STD CN
- RJM CMD REQUEST CHANNEL
- NJN LBC30 IF CHANNEL DOWN
- LDC ERLB SET BUFFER ADDRESS
- STD CN+1
- LBC30.1 DELAY
- LDD OA WAIT OUTPUT REGISTER CLEAR
- CRD CM
- LDD CM
- NJN LBC30.1 IF RECALL STILL PENDING
- EXECUTE 0CT,ERLA+5 LOAD CTS/CCC MICROCODE
- LDD CN
- NJP LBC30.2 IF ERROR
- STM LBCH+17 INDICATE END OF MESSAGE
- LDC 2RMB
- STM LBCH+12 PUT MB468-D0X IN MESSAGE
- LDC 2R46
- STM LBCH+13
- LDC 2R8-
- STM LBCH+14
- LDC 2RD0
- STM LBCH+15
- LDD CN+2 GET MICROCODE REVISION
- SHN 6
- ADC 2R0.
- STM LBCH+16
- LDD CA
- DCHAN DROP CHANNEL
- UJP LBC30 CHECK NEXT CHANNEL
- LBC30.2 SHN 0-13
- NJN LBC31 IF FIRMWARE NOT FOUND
- LDC LBCG
- LJM ADC ABORT FIRMWARE LOAD
- LBC31 LDC =C* CTS FIRMWARE NOT FOUND.*
- LJM ABT ABORT
- LBC32 RJM ILM ISSUE FIRMWARE LOADED MESSAGE
- LBC SUBR ENTRY/EXIT
- LDC CHLI-1
- STD SC
- LDM DLYA
- LPN 14
- ZJN LBC2 IF 1X PPU SPEED
- LPN 4
- ZJN LBC1 IF 2X PP SPEED
- DL2X EQU LDCI+40
- DL4X EQU LCNI+0
- LDC DL4X&DL2X INCREASE DELAY FOR 4X PPU SPEED
- LBC1 LMC DL2X INCREASE DELAY FOR 2X PPU SPEED
- STM LCMB
- * LOAD FIRMWARE TO MTS CHANNEL. ALSO LOAD ATS AND MTS
- * CONVERSION MEMORIES.
- LBC2 AOD SC
- LDI SC
- LMC 7777
- NJN LBC3 IF NOT END OF CHANNELS
- LJM LBC17 PROCESS FSC CHANNELS
- LBC3 SHN -5
- LPN 7
- LMN 4&7
- ZJN LBC4 IF MTS CHANNEL
- LMN 2&4
- NJN LBC2 IF NOT ATS CHANNEL
- RJM LCA LOAD ATS CONVERSION MEMORIES
- UJN LBC2 LOOP FOR ALL CHANNELS
- LBC4 LDM ILMA
- ZJN LBC5 IF FIRMWARE NOT IN CM BUFFER YET
- LJM LBC10 OUTPUT FIRMWARE TO CONTROLLER
- LBC5 AOM ILMA INDICATE FIRMWARE IN BUFFER
- LDD MA
- CWM LBCF,ON MOVE RECORD NAME TO DIRECT CELLS
- SBN 1
- CRD AB
- RJM CLD SEARCH LIBRARY DIRECTORY
- NJN LBC6 IF FIRMWARE RECORD FOUND
- LDC =C* MTS FIRMWARE NOT FOUND.*
- LJM ABT ABORT
- LBC6 CRD AB READ TRACK AND SECTOR
- LDN FNTP GET SYSTEM EQUIPMENT
- CRD CM
- LDD CM READ SYSTEM FST
- SHN 14
- ADD CM+1
- ERRNZ SYFO CODE DEPENDS ON SYSTEM FILE FNT POSITION
- ADN FSTG
- CRD CM
- LDD CM
- LPN 77
- STD T5
- SETMS READSYS
- LDD AB+3 SET FILE POINTERS
- STD T6 TRACK
- LDD AB+4 SECTOR
- STD T7
- LDN 0 INITIALIZE SECTOR COUNT
- STD AB+1
- LBC7 LDC BFMS READ SECTOR
- RJM RNS
- ZJN LBC8 IF END OF FIRMWARE
- STD AB SAVE WORD COUNT
- AOD AB+1 COUNT SECTOR
- LDD RA WRITE SECTOR TO CM
- SHN 6
- ADC /MTX/UIBF
- LBCA EQU *-1
- CWM BFMS+2,AB
- LDD AB ADVANCE BUFFER ADDRESS
- RAM LBCA
- SHN -14
- RAM LBCA-1
- LDD AB
- SHN -6
- NJN LBC7 IF NOT END OF FIRMWARE
- LBC8 ENDMS RETURN CHANNEL
- * LDN 0 BUILD MESSAGE WITH PART NUMBER
- STD T1
- LDD AB WORD COUNT OF LAST SECTOR
- STD PL
- SHN 2
- RAD PL BYTE COUNT OF LAST SECTOR
- LBC9 LDM BFMS-6,PL
- SCN 17
- SHN 11-7
- RAM LBCH+17,T1
- LDM BFMS-6,PL
- LPN 17
- RAM LBCH+17,T1
- AOD PL
- AOD T1
- LMN 4
- NJN LBC9 IF MORE MESSAGE TO BUILD
- * ENTER HERE IF FIRMWARE RECORD ALREADY IN CM BUFFER.
- *
- * (AB) = WORD COUNT OF LAST SECTOR.
- * (AB+1) = NUMBER OF SECTORS.
- LBC10 LDI SC GET TAPE CHANNEL
- RJM CMD
- NJP LBC2 IF CHANNEL DOWN
- SFM *+2,CH ENSURE CHANNEL ERROR FLAG IS CLEAR
- LDI SC SET EQUIPMENT NUMBER
- LPC 7000
- STD EQ
- ADC F0414 ISSUE DEADSTART
- RJM ICF
- NJN LBC12 IF DEAD START FUNCTION ACCEPTED
- LBC11 LDC LBCG
- LJM ADC ABORT FIRMWARE LOAD
- LBC12 ACN CH
- LDC /MTX/UIBF+20 SET CM BUFFER ADDRESS (SKIP 77 TABLE)
- STM LBCB
- LDC ADCI
- STM LBCB-1
- LDN 0 INITIALIZE SECTOR COUNT
- STD T1
- LDN 100-20 SET TO SKIP 77 TABLE
- STD T3
- LBC13 LDD RA READ SECTOR FROM CM
- SHN 6
- ADC *
- LBCB EQU *-1
- CRM BFMS,T3
- LDD T3 CONVERT WORDS TO BYTES
- SHN 2
- ADD T3
- OAM BFMS,CH OUTPUT FIRMWARE
- FJM *,CH
- NJN LBC11 IF CONTROLLER ILL
- LDD T3 RESET CM BUFFER ADDRESS
- RAM LBCB
- SHN -14
- RAM LBCB-1
- LDD HN SET TO OUTPUT FULL SECTOR
- STD T3
- AOD T1 ADVANCE SECTOR COUNT
- SBD AB+1
- LBCC ZJN LBC14 IF END OF MTS FIRMWARE
- * ZJN LBC15 (FCS, ISMT,CMTS, CTS)
- ADN 1
- NJN LBC13 IF NOT LAST SECTOR
- LDD AB SET WORD COUNT OF LAST SECTOR
- STD T3
- UJN LBC13 OUTPUT LAST SECTOR
- LBC14 DCN CH+40 START BUFFER CONTROLLER
- RJM LCM LOAD CONVERSION MEMORIES
- LDD CA DROP CHANNEL
- DCHAN
- LJM LBC2 LOOP FOR ALL CHANNELS
- LBC15 DCN CH+40 START ADAPTOR
- LDD EQ
- ADN F0012 GET STATUS
- RJM ICF ISSUE FUNCTION
- ZJN LBC16 IF LOAD ERROR
- ACN CH+40
- LCN 0
- LBC15.1 FJM LBC15.2,CH
- SBN 1
- NJN LBC15.1 IF TIMEOUT NOT EXPIRED
- UJN LBC16 ABORT FIRMWARE LOAD
- LBC15.2 IAN CH+40
- SFM LBC16,CH IF ERROR
- DCN CH+40
- SHN 21-13
- MJN LBC16 IF ALERT SET
- LDD CA DROP CHANNEL
- DCHAN
- RJM LCA LOAD CONVERSION TABLES
- LBCE EQU *-2
- * UJN *+2 CTS
- LJM LBC18 LOOP FOR ALL CHANNELS
- LBCD EQU *-1
- * LJM LBC22 LOOP FOR ALL CHANNELS (CMTS)
- * LJM LBC26 LOOP FOR ALL CHANNELS (ISMT)
- * LJM LBC30 LOOP FOR ALL CHANNELS (CTS)
- LBC16 LJM LBC11 ABORT FIRMWARE LOAD
- LBCF VFD 42/0LFIRM66X,18/0
- LBCG DATA C* C00 MTS FIRMWARE LOAD ERROR.*
- LBCH DATA C* MTS FIRMWARE LOAD, PART NO.- 00000000.*
- *LBCH DATA C* CTS FIRMWARE LOAD, MB468-D0X.* (CTS)
- LBCI VFD 42/0LTAPEFSC,18/0
- LBCJ VFD 30/0LCW63X,30/0
- LBCK VFD 30/0LMB467,30/0
- LCA SPACE 4,15
- ** LCA - LOAD CONVERSION MEMORY TO ATS CONTROLLER.
- *
- * ENTRY ((SC)) = E0CC WHERE E = EQUIPMENT AND CC = CHANNEL.
- *
- * EXIT CONVERSION TABLES LOADED.
- *
- * ERROR EXIT TO *ADC* IF LOAD ERRORS.
- *
- * USES T1, EQ.
- *
- * CALLS CCT, CMD, ICF.
- *
- * MACROS DCHAN.
- LCA10 LDD CA RETURN TAPE CHANNEL
- DCHAN
- LCA SUBR ENTRY/EXIT
- LDI SC SET EQUIPMENT NUMBER
- LPC 7000
- STD EQ
- LDI SC RESERVE CHANNEL
- RJM CMD
- NJN LCAX IF CHANNEL DOWN
- LDN 0
- STD T1
- LCA1 AOD T1 INCREMENT TABLE NUMBER
- LMN 4
- ZJN LCA10 IF ALL TABLES LOADED
- LDD T1 SET TABLE NUMBER IN FORMAT PARAMETER
- SHN 10
- LMM LCAD
- STM LCAC
- LDD T1
- LMN 3
- ZJN LCA2 IF BCD LOAD
- LDN 40 SET A/D MODE 1 IN FORMAT PARAMETER
- RAM LCAC
- LCA2 LDD EQ ISSUE FORMAT UNIT FUNCTION
- ADN 4
- RJM ICF ISSUE FUNCTION
- ZJN LCA4 IF ERRORS
- ACN CH OUTPUT PARAMETERS
- LDN 2
- OAM LCAC,CH
- FJM *,CH
- DCN CH+40
- NJN LCA6 IF NOT ALL PARAMETERS TAKEN
- LDM TMTC,T1 CONVERT MTS TABLE TO ATS READ TABLE
- RJM CCT CONVERT CONVERSION TABLE
- LDC BFMS SET BUFFER ADDRESS
- STM LCAA
- LDN 57 LOAD READ CONVERSION TABLE
- LCA3 ADD EQ
- RJM ICF ISSUE FUNCTION
- LCA4 ZJN LCA7 IF LOAD ERRORS
- ACN CH
- LDD T1
- LMN 3
- ZJN LCA5 IF BCD LOAD
- LDC 171D-128D
- LCA5 ADC 128D
- OAM *,CH OUTPUT CONVERSION TABLE
- LCAA EQU *-1
- FJM *,CH
- DCN CH+40
- LCA6 NJN LCA9 IF NOT ALL DATA TAKEN
- LDD EQ GET STATUS
- ADN 12
- RJM ICF ISSUE FUNCTION
- LCA7 ZJN LCA9 IF LOAD ERRORS
- ACN CH
- IAN CH+40
- DCN CH+40
- SHN 21-13
- MJN LCA9 IF ALERT SET
- LDM LCAA
- LMC BFMS
- NJN LCA8 IF WRITE TABLE LOADED
- LDM LCAE-1,T1 SET TO LOAD WRITE TABLE
- STM LCAA
- LDC 257 ISSUE LOAD WRITE RAM FUNCTION
- LJM LCA3 ISSUE FUNCTION
- LCA8 LJM LCA1 INCREMENT TO NEXT TABLE
- LCA9 LDC 2R A CHANGE MTS TO ATS IN MESSAGE
- STM LCMC+4
- LDD T1 SET TABLE IN ERROR
- RAM LCMC+3
- LDC LCMC SET MESSAGE ADDRESS
- LJM ADC ABORT ATS CONVERSION TABLE LOAD
- LCAC CON 0,0 UNIT FORMAT PARAMETERS
- LCAD VFD 1/1,3/0,1/1,2/0,5/0 WORD 1 SKELETON
- * ATS WRITE TABLE ADDRESSES.
- LCAE CON ATANS TABLE 1 - ANSII
- CON ATEBC TABLE 2 - EBCDIC
- CON ATBCD TABLE 3 - EXTERNAL BCD
- LCM SPACE 4,15
- ** LCM - LOAD MTS CONVERSION MEMORIES.
- *
- * ENTRY CHANNEL RESERVED.
- * (EQ) = EQUIPMENT NUMBER.
- *
- * EXIT CONVERSION TABLES LOADED.
- *
- * ERROR EXIT TO *ADC* IF LOAD ERRORS.
- *
- * USES T1.
- *
- * CALLS ICF.
- LCM SUBR ENTRY/EXIT
- LDN 0
- STD T1
- LCM1 AOD T1
- LMN 4
- ZJN LCMX IF END OF MTS CONVERSION TABLES
- LDM TMTC,T1 GET TABLE ADDRESS
- STM LCMA
- LDD T1
- SHN 6
- ADN 31
- ADD EQ ADD EQUIPMENT NUMBER
- RJM ICF
- ZJN LCM3 IF LOAD ERRORS
- ACN CH
- LDD T1
- LMN 3
- ZJN LCM2 IF BCD LOAD
- LDC 256D-64D
- LCM2 ADC 64D
- OAM *,CH
- LCMA EQU *-1
- FJM *,CH
- DCN CH+40
- NJN LCM3 IF DATA NOT TAKEN
- LDC 200000 DELAY FOR MTS TABLE SORT
- * LDC 400000 (2X PPU SPEED)
- * LCN 0 (4X PPU SPEED)
- LCMB EQU *-2
- SBN 1
- NJN *-1
- LDN 12
- ADD EQ ADD EQUIPMENT NUMBER
- RJM ICF
- ZJN LCM3 IF LOAD ERRORS
- ACN CH
- IAN CH+40
- DCN CH+40
- SHN 21-13
- MJN LCM3 IF LOAD ERRORS
- LJM LCM1 LOOP FOR ALL MTS CONVERSION TABLES
- LCM3 LDD T1 SET TABLE IN ERROR
- RAM LCMC+3
- LDC LCMC
- LJM ADC ABORT MTS LOAD
- LCMC DATA C* C00, T0 MTS CONVERSION TABLE LOAD ERRORS.*
- * TMTC - ADDRESS TABLE FOR MTS CONVERSION TABLES.
- TMTC BSS 1
- LOC 1
- CON MTANS TABLE 1 - ANSII
- CON MTEBC TABLE 2 - EBCDIC
- CON MTBCD TABLE 3 - EXTERNAL BCD
- LOC *O
- BUF SPACE 4,10
- CTAB CHTB CHANNEL TABLE
- SPACE 4,10
- USE BUFFER
- ERRNG BFMS-* OVERFLOW TEST
- ERRNG ERLA-* CODE OVERFLOWS *0CT*
- ERRPL ERLA+5+ZCTL-ERLB *0CT* OVERFLOWS INTO BUFFER
- PRS TITLE PRESET OVERLAY.
- PRS SPACE 4,10
- ** PRS - INITIALIZE TAPE EXECUTIVE PRESET.
- *
- * EXIT TO *ITE* IF *MAGNET* INITIALIZATION.
- * TO *REC* IF LEVEL 3 RECOVERY.
- *
- * CALLS LFT, SCS.
- PRS BSS 0
- RJM LFT LOAD FUNCTION TABLE
- LDD IR+3
- SHN 6
- ADD RA
- SHN 6
- ADD IR+4 CHECK FOR LEVEL 3 RECOVERY
- CRD CM
- LDD CM+4
- LMN 1
- ZJN PRS1 IF *MAGNET* INITIALIZATION
- LJM REC RECOVER
- PRS1 RJM SCS SET CHARACTER SET TABLES
- LJM ITE INITIALIZE TAPE EQUIPMENT
- TITLE PRESET SUBROUTINES.
- CCH SPACE 4,10
- ** CCH - CHECK CHANNEL.
- *
- * ENTRY (A) = EST CHANNEL BYTE.
- * (CM - CM+4) = EST ENTRY *EQDE* WORD.
- *
- * EXIT CHANNEL ENTERED INTO TABLE IF NOT ALREADY THERE.
- *
- * ERROR EXIT TO *ABT* IF ERROR.
- *
- * USES T2, T3, T4.
- CCH6 LDD CM CHECK FOR MTS/ATS CHANNEL
- LPN 14
- NJN CCH7 IF ISMT/CMTS CHANNEL
- LDD CM
- SHN -3
- LPN 70
- CCH7 SHN -3
- SHN 5
- STD T2
- LDM CHLI,T3
- LPC 437
- LMD T2
- STM CHLI,T3
- LDD CM+3
- SHN 21-10
- MJN CCH8 IF NOT CTS
- LDC 340
- RAM CHLI,T3 SET CTS CONTROLLER TYPE
- CCH8 LDD CM+4 SET CONTROLLER NUMBER
- LPC 7000
- RAM CHLI,T3
- CCH SUBR ENTRY/EXIT
- LPN 37 SET CHANNEL NUMBER
- STD T4
- LCN 0 INITIALIZE CHANNEL COUNT
- STD T3
- CCH1 AOD T3 INCREMENT CHANNEL COUNT
- LMN /MTX/MCHAN
- NJN CCH2 IF NOT TOO MANY TAPE CHANNELS
- LDC =C* MORE THAN 8 TAPE CHANNELS.*
- LJM ABT ABORT
- CCH2 LDD T3
- LMM CHCN
- ZJP CCH4 IF END OF CHANNEL LIST
- LDM CHLI,T3
- LMD T4
- LPN 37
- NJN CCH1 IF NO CHANNEL MATCH
- * COMPARE CONTROLLER TYPES.
- LDD CM+3
- SHN 21-10
- MJN CCH2.0 IF NOT CTS
- LDM CHLI,T3
- SHN -5
- LPN 7
- LMN 7
- UJN CCH3.1 COMPARE CONTROLLER TYPES
- * THE FOLLOWING SIX LINES CLEAR THE ATS BIT IN 1MT-S COPY OF
- * THE EST ENTRY IF THE EST CONTROLLER TYPE IS CMTS. THIS
- * ALLOWS THE COMPARISON OF THE *CHLI* CONTROLLER TYPE AND THE
- * EST CONTROLLER TYPE TO WORK CORRECTLY FOR CMTS.
- CCH2.0 LDD CM
- SHN 21-2
- PJN CCH2.1 IF NOT CMTS
- SCN 20 CLEAR ATS BIT
- SHN 3
- STD CM
- CCH2.1 LDM CHLI,T3
- SHN 21-7
- PJN CCH3 IF MTS STATUS NOT SET IN TABLE
- LPC 577777 CLEAR BLOCK - ID DISABLE BIT
- CCH3 SHN 11
- LMD CM
- LPC 700
- CCH3.1 NJN CCH5 IF CONTROLLER TYPE MISMATCH
- LDM CHLI,T3
- LMD CM+4
- SHN -11
- NJN CCH5 IF EQUIPMENT MISMATCH
- LDM CHLI,T3
- LJM CCHX EXIT
- CCH4 LDD T4 SAVE CHANNEL IN TABLE
- STM CHLI,T3
- AOM CHCN INCREMENT CHANNEL COUNT
- LJM CCH6 SET CONTROLLER TYPE
- CCH5 LDC =C* CONTROLLER TYPE/EQUIPMENT MISMATCH ON CHANNEL.*
- LJM ABT ABORT
- EST SPACE 4,10
- ** EST - EST PRE-PROCESSOR.
- *
- * EXIT *CHLI* TABLE BUILT.
- * TO *ABT* IF NO TAPE EQUIPMENT FOUND.
- *
- * USES SC, T5, CM - CM+4.
- *
- * CALLS CCH, CTE.
- *
- * MACROS SFA.
- EST SUBR ENTRY/EXIT
- LDK ESTP READ EST POINTER
- CRD CM
- LDD CM+2 SET LAST EST ORDINAL + 1
- STD SC
- * FIND MAXIMUM NUMBER OF TAPE CHANNELS.
- LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
- STD T5
- EST1 AOD T5 ADVANCE EST ORDINAL
- LMD SC
- NJN EST2 IF NOT END OF EST
- LDM CHCN
- NJN ESTX IF TAPES FOUND
- LDC =C* NO TAPE EQUIPMENT.*
- LJM ABT ABORT
- EST2 SFA EST,T5 READ EST ENTRY
- ADK EQDE
- CRD CM
- LDD CM+3
- RJM CTE CHECK FOR TAPE EQUIPMENT
- MJN EST1 IF NOT TAPE EQUIPMENT
- * COUNT NUMBER OF CHANNELS.
- LDD CM+1 CHECK FIRST CHANNEL
- RJM CCH CHECK CHANNEL
- LDD CM+2
- ZJN EST1 IF NO SECONDARY CHANNEL
- RJM CCH CHECK CHANNEL
- UJN EST1 CHECK NEXT EQUIPMENT
- ERRNG BFMS-* OVERFLOW TEST
- LFT SPACE 4,10
- ** LFT - LOAD 1MT FUNCTION TABLE INTO MAGNET FL.
- *
- * USES T1.
- LFT SUBR ENTRY/EXIT
- LDN TFUNC SET FUNCTION TABLE LENGTH
- STD T1
- LDD RA
- SHN 6
- ADN /MTX/TFUN WRITE FUNCTION TABLE
- CWM TFUN,T1
- UJN LFTX RETURN
- REC SPACE 4,10
- ** REC - RECOVER MAGNET.
- *
- * EXIT TO *ITE1* TO SET COMPLETION RESPONSE.
- *
- * MACROS NFA.
- REC LDD CP CHECK IDLEDOWN BIT IN CPA
- ADN SNSW
- CRD CM
- LDD CM+3
- LPN 4
- ZJN REC1 IF IDLEDOWN NOT SET
- LDD RA RESET IDLEDOWN IN RA+0
- SHN 6
- CRD CM
- LDD CM+3
- SCN 2
- LMN 2
- STD CM+3
- LDD RA REWRITE RA+0
- SHN 6
- CWD CM
- REC1 LDD CP RESET COMMANDS FOR RECOVERY
- ADN CSPW
- CRD CM
- LDC CSBN RESET TO BEGINNING OF BUFFER
- STD CM+3
- SBN TCML+1 SET LIMIT POINTER
- STD CM+4
- LDN TCML
- STD T1
- NFA CM+3,R
- CWM TCCB,T1 WRITE RECOVERY COMMANDS
- LDD CP UPDATE COMMAND POINTER
- ADN CSPW
- CWD CM
- LJM ITE1 SEND RESPONSE TO *MAGNET*
- * TABLE OF COMMANDS.
- TCCB BSS 0
- VFD 60/8LMAGNET1.
- VFD 60/6L$EXIT.
- VFD 60/8LMAGNET1.
- VFD 60/8L$REVERT.
- VFD 60/6L$EXIT.
- VFD 60/10H$REVERT,AB
- VFD 60/4LORT.
- TCCBL EQU *-TCCB
- TCML EQU TCCBL/5 TABLE LENGTH IN CM WORDS
- SCS SPACE 4,20
- ** SCS - SET 63 CHARACTER SET OPTION IF SELECTED.
- *
- * ENTRY (IPRL, 24) = 0 IF 63 CHARACTER SET.
- * = 1 IF 64 CHARACTER SET.
- *
- * *CSET* TABLE FORMAT -
- * CON LOC,CONT
- * LOC = LOCATION OF CHANGE.
- * CONT = CONTENTS OF CHANGE.
- * 0 IN LOC FIELD = END OF TABLE.
- *
- * *CSETP* TABLE FORMAT - (USED FOR ATS 9 TRACK TABLES
- * WHERE 3 FRAMES ARE PACKED INTO 2 PP BYTES)
- * CON LOC,CONT1,CONT2
- * LOC = LOCATION OF CHANGE.
- * CONT1 = CONTENTS OF *LOC*
- * CONT2 = CONTENTS OF *LOC*+1
- * 0 IN LOC FIELD = END OF TABLE.
- *
- * EXIT CHARACTER TABLES MODIFIED IF 63 CHARACTER SET.
- SCS SUBR ENTRY/EXIT
- LDN IPRL CHECK CONVERSION MODE
- CRD CM
- LDD CM+2
- LPN 1
- NJN SCSX IF 64 CHARACTER SET
- LDC CSET MODIFY TABLES
- SCS1 STD T1
- LDI T1
- SCS2 STD T2
- LDM 1,T1
- STI T2
- SCSA UJN SCS3 FOR C63 TABLE
- * AOD T1 (C63P TABLE)
- AOD T2
- LDM 1,T1
- STI T2
- SCS3 LDN 2
- RAD T1
- LDI T1
- NJN SCS2 IF MORE INSTRUCTIONS TO MODIFY
- SCSB LDN 0
- NJN SCSX IF BOTH TABLES PROCESSED
- AOM SCSB SET EXIT
- LDC AODI+T1 MODIFY INSTRUCTION
- STM SCSA
- LDC CSETP PROCESS C63P TABLE
- UJN SCS1 MODIFY INSTRUCTIONS FOR THIS TABLE
- * CONVERSION INFORMATION FOR 64 TO 63 CHARACTER SET.
- CSET BSS 0
- C63 HERE
- CON 0 END OF TABLE
- CSETP BSS 0
- C63P HERE
- CON 0 END OF TABLE
- FUN SPACE 4,15
- ** FUN - DEFINE FUNCTION PROCESSOR.
- *
- *
- *TNAM FUN TYPE,NAME,SNAME,RNB,UCP
- * ENTRY *TNAM* = FWA OF TABLE IS SET TO TNAM.
- * *TYPE* = FUNCTION NUMBER.
- * *NAME* = NAME OF FUNCTION PROCESSOR.
- * *SNAME* = NAME OF ADDITIONAL OVERLAY TO BE LOADED.
- * *RNB* = FUNCTION REQUIRES READY AND NOT BUSY.
- * *UCP* = FUNCTION TO BE DONE AT USERS CONTROL POINT.
- MACRO FUN,A,B,C,D,E,F
- .F1 IFC NE,*A**
- A BSS 0
- .2 SET A
- .F1 ELSE
- ORG .2+5*B-5
- .F2 IFC NE,*C**
- LOC B
- .1 SET 0
- IFC NE,*E**,1
- .1 SET .1+40
- IFC NE,*F**,1
- .1 SET .1+20
- .F3 IFC NE,*D**
- CON D/10000*100+.1+C/10000-D/10000,C-C/10000*10000
- .F3 ELSE
- CON C/10000*100+.1,C-C/10000*10000
- .F3 ENDIF
- .F2 ENDIF
- BSS 0
- .F1 ENDIF
- ENDM
- TFUN SPACE 4,15
- ** TFUN - TABLE OF FUNCTION CODE PROCESSORS.
- * ENTRY = 2 WORDS.
- *
- *T, 6/ OV,1/B,1/U,4/ AO,12/ ADDR
- * OV OVERLAY NAME THIRD CHARACTER.
- * B FUNCTION REQUIRES NOT BUSY. (SEE NOTE)
- * U FUNCTION TO BE DONE AT USER,S CONTROL POINT.
- * AO ADDITIONAL OVERLAY REQUIRED IF NONZERO. OV PLUS
- * AO IS THE SECOND OVERLAY NAME THIRD CHARACTER.
- * ADDR ADDRESS OF FUNCTION PROCESSOR. *CPP* JUMPS TO
- * THIS ADDRESS.
- *
- * NOTE THIS FLAG ALSO INDICATES THAT THE FUNCTION REQUIRES
- * A FORMAT UNIT FUNCTION TO BE ISSUED FOR MTS AND ATS
- * UNITS. SEE ROUTINE *CCD* IN CONTROL POINT PRESET
- * OVERLAY.
- BSS 0
- TFUN FUN
- FUN /MTX/SED,SED SET EQUIPMENT DEFINITION
- FUN /MTX/FNH,PFN PROCESS FUNCTION
- FUN /MTX/SKP,SKP,RDF,RNB SKIP
- FUN /MTX/OPF,OPF,,,UCP OPEN
- FUN /MTX/RDF,RDF,,RNB,UCP READ
- FUN /MTX/RLA,RLA,RDF,RNB READ LABEL(S)
- FUN /MTX/WTF,WTF,,RNB,UCP WRITE
- FUN /MTX/WLA,WLA,WTF,RNB WRITE LABEL(S)
- FUN /MTX/MDFN
- TFUNL EQU *-TFUN
- TFUNC EQU TFUNL/5 CM WORD LENGTH
- ERRNZ TFUNC-/MTX/MDFN+1 *1MT*/*COMSMTX* OUT OF SYNC
- OVERFLOW PPFW,EPFW
- OVERLAY (FUNCTION REJECT PROCESSOR.),(ERLA+5),P
- FRP SPACE 4,10
- ** FRP - FUNCTION REJECT PROCESSOR.
- *
- * CALLS CUI, DME, ERR, MCH, PCR, STC, STW.
- *
- * MACROS CHTE.
- *
- * THE FOLLOWING ARE THE POSSIBLE ACTIONS TAKEN FOR
- * A FUNCTION REJECT ON AN MTS TAPE CONTROLLER -
- *
- * 1) IF CHANNEL ACTIVE EXIT WITH CHANNEL MALFUNCTION.
- *
- * 2) ESTABLISH MTS BUFFER CONTROLLER IS RUNNING.
- *
- * 3) IF NOT RUNNING TRY TO RESTART OPERATION BY AUTO-LOAD.
- * THIS IS ATTEMPED TWICE TO COVER THE CASE WHERE THE
- * COUPLER LOCKS UP WITH DATA IN ITS INTERNAL BUFFER
- * AND TWO AUTO-LOADS ARE REQUIRED TO FREE THE COUPLER.
- *
- * 4) IF NOT SUCCESSFUL EXIT WITH CHANNEL MALFUNCTION.
- *
- * 5) SEE PRECEDING STEP 2.
- *
- * 6) IF RELEASE FUNCTION EXIT.
- *
- * 7) IF STOP TAPE MOTION FUNCTION, RECONNECT UNIT AND EXIT.
- *
- * 8) GET GENERAL AND DETAILED STATUS.
- *
- * 9) IF ALERT NOT SET, EXIT WITH CHANNEL MALFUNCTION.
- *
- * 10) IF ERROR CODE NOT SET IN DETAILED STATUS, EXIT
- * WITH CHANNEL MALFUNCTION.
- *
- * 11) IF ERROR CODE 4 SET, EXIT WITH READY DROP.
- *
- * 12) IF ERROR CODE 54B OR 55B SET, EXIT
- * WITH CHANNEL MALFUNCTION.
- *
- * 13) IF ANY OTHER ERROR CODE, EXIT WITH FUNCTION REJECT.
- *
- * THE FOLLOWING ARE THE POSSIBLE ACTIONS TAKEN FOR
- * A FUNCTION REJECT ON AN ATS CONTROLLER.
- *
- * 1) IF CHANNEL ACTIVE, EXIT WITH CHANNEL MALFUNCTION.
- *
- * 2) IF NOT FIRST ERROR, EXIT WITH CHANNEL MALFUNCTION.
- *
- * 3) GET GENERAL AND DETAILED STATUS.
- *
- * 4) IF ALERT NOT SET, EXIT WITH CHANNEL MALFUNCTION.
- *
- * 5) IF CHANNEL OR TCU PARITY ERROR, EXIT WITH
- * CHANNEL MALFUNCTION.
- *
- * 6) IF ERROR CODE 4 SET IN DETAILED STATUS, EXIT
- * WITH READY DROP.
- *
- * 7) EXIT WITH FUNCTION REJECT.
- FRP SUBR ENTRY/EXIT
- LDC FRPD MODIFY CHANNELS
- RJM MCH
- LDD EC
- LMN /MTX/CRJ
- ZJP PCR IF CONNECT REJECT
- LDM //STCB SAVE CHANNEL STATUS
- STM //.OVLR+2
- LDC LDNI+0 SET TO FORCE DROP OUT
- STM //PNRC
- LDM //FCND SAVE FUNCTION REJECTED
- STM //.OVLR
- LDM //FCN SAVE ADDRESS OF CALLER
- STM //.OVLR+1
- LDC //ERR INSURE CORRECT EXIT SET IN *STW*
- STM //STWC
- LDC RJMI
- STM //STWC-1
- IJM FRP4,CH IF CHANNEL OK
- FRP3 LJM FRP12 GIVE FATAL ERROR
- FRP4 LDD HP
- LPC 540
- NJN FRP5 IF MTS/FSC/CMTS/ISMT ADAPTOR
- LDM FRPB
- STM FRPA
- LJM FRP10 PROCESS ATS CONTROLLER
- FRP5 LDN 0 SET ERROR ENCOUNTERED FLAG
- STM //FCNC
- FNC 0,CH VERIFY B.C. RUNNING
- RJM STC
- ZJN FRP8 IF B.C. RUNNING
- LDN 2 NUMBER OF ATTEMPTS TO RESTART B.C.
- STD T1
- LDN 0 CLEAR CONNECTED FLAG
- STM //RELA
- FRP6 SOD T1
- FRP7 MJN FRP3 IF CANNOT RESTART B.C.
- FNC 414,CH RESTART B.C.
- RJM STC STATUS CHANNEL
- NJN FRP6 IF CHANNEL ILL
- ACN CH
- OAN CH+40
- DCN CH+40
- STM //.OVLR+3 INIDICATE B.C. RESTARTED
- FRP8 LDD T6
- SHN 21-13
- MJN FRP7 IF OVERLAY NOT CM RESIDENT
- LDM //FCND CHECK FUNCTION
- LMN 1
- ZJN FRP9 IF RELEASE FUNCTION
- LMN 11&1
- NJN FRP10 IF NOT STOP TAPE MOTION
- LDM //RELA
- NJN FRP9 IF UNIT CONNECTED
- RJM CUI REFORMAT UNIT
- FRP9 LDM //.OVLR+1 RESET RETURN ADDRESS
- STM //FCN
- LDN 0
- LJM //FCNX RETURN
- FRP10 LDM FCNC
- ZJN FRP12 IF ERROR ALREADY ENCOUNTERED
- LDN 0
- STM //FCNC SET ERROR ENCOUNTERED FLAG
- RJM STW GET STATUS
- SHN 21-13
- PJN FRP12 IF NO ALERT
- LDM MTDS
- FRPA LPN 77
- * UJN FRP14 (ATS CONTROLLER)
- ZJN FRP12 IF NO ERROR CODE
- LMN 4
- ZJN FRP11 IF READY DROP
- LMN 54-4
- ZJN FRP12 IF OUTPUT PARITY ON PARAMETER ISSUE (54B)
- LMN 55-54
- ZJN FRP12 IF OUTPUT PARITY ON FUNCTION ISSUE (55B)
- LDN /MTX/FRJ&/MTX/RDR
- FRP11 LMN /MTX/RDR
- UJN FRP13 SET ERROR CODE
- FRP12 LDN /MTX/CMF
- FRP13 STD EC
- LDM //.OVLR+2 RESTORE CHANNEL STATUS
- STM STCB
- LDD DS
- STM //STER
- LDM FRPC PREVENT FURTHER FUNCTION REJECT
- STM //MCCA
- LDD EC
- RJM ERR GIVE FATAL ERROR
- FRP14 LPC 600
- NJN FRP12 IF CHANNEL OR TCU PARITY ERROR
- LDM MTDS
- LPC 177
- LMN 4
- ZJN FRP11 IF NOT READY
- LDN /MTX/FRJ FUNCTION REJECT
- UJN FRP13 EXIT
- FRPB BSS 0
- LOC FRPA
- UJN FRP14 CHECK STATUS
- LOC *O
- FRPC BSS 0
- LOC //MCCA
- UJN //MCCX RETURN
- LOC *O
- PCR SPACE 4,15
- ** PCR - PROCESS CONNECT REJECT.
- *
- * ENTRY (EC) = ERROR CODE.
- *
- * EXIT TO ERROR MESSAGE OVERLAY IF NOT INITIAL CONNECT OR IF
- * UNIT DOWNED.
- *
- * USES CM - CM+4, CN - CN+4.
- *
- * CALLS ERR, UAD.
- *
- * MACROS MONITOR.
- PCR BSS 0 ENTRY
- LDM //STW CHECK IF INITIAL CONNECT
- LMC //.ECUI
- NJN PCR1 IF NOT INITIAL CONNECT
- RJM UAD
- ADK /MTX/UXRQ
- CRD CM
- ADK /MTX/UVRI-/MTX/UXRQ
- CRD CN
- LDD CN
- NJN PCR2 IF JOB ASSIGNED
- * DOWN UNIT.
- RJM UAD
- ADK /MTX/UST2 SET UP DIRECT CELLS FOR MESSAGE
- CRM EI,TR
- LDD EO SET EST ORDINAL
- STD CM+1
- LDN /CPS/DWES SET *DOWN* STATUS
- STD CM+2
- MONITOR SEQM SET EQUIPMENT PARAMETER
- PCR1 LDD DS SET STATUS FOR MESSAGE
- STM //STER
- LDN /MTX/CRJ SET CONNECT REJECT
- RJM ERR EXIT TO ISSUE MESSAGE
- PCR2 LDD CM
- NJN PCR3 IF REQUEST IN PROGRESS
- LDD CM+1
- LPN 77
- NJN PCR4 IF REQUEST PENDING
- PCR3 LJM //PNR PROCESS NEXT UNIT
- * INTERLOCK REQUEST.
- PCR4 LDM UADA SET UDT ADDRESS
- STD CM+1
- LDN 0 IGNORE BUSY STATUS
- STD CM+2
- MONITOR TDRM SET REQUEST IN PROGRESS
- LDD CM+4
- ZJN PCR3 IF REQUEST NOT INTERLOCKED
- RJM UAD GET UDT INFORMATION
- ADK /MTX/UXRQ
- CRD RS
- ADK /MTX/UST2-/MTX/UXRQ
- CRM EI,TR
- ADK /MTX/UST5-/MTX/UST4-1
- CRM DNCV,ON
- ADK /MTX/UDS4-/MTX/UST5-1
- CRM MTSF,TR
- ADK /MTX/UERC-/MTX/UDS6-1
- CRM ECNT,ON
- LDN /MTX/CRJ SET CONNECT REJECT
- LJM RET3 RETURN ERROR
- FRPD CHTB CHANNEL TABLE
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPC2D
- ERRNG 2*473+ERLA+5-* FUNCTION REJECT PROCESSOR OVERFLOW
- OVERLAY (MTS/ATS ERRLOG MESSAGE PROCESSOR.),(ERLA+5),P,EMM
- EMM SPACE 4,10
- ** EMM - MTS ERRLOG MESSAGE PROCESSOR.
- * THIS OVERLAY MAY BE CALLED BY ANY PART OF THE PROGRAM
- * TO ISSUE A SUITABLE MESSAGE TO THE ERRLOG. IN ADDITION IF
- * IT IS CALLED FROM THE MAIN PROGRAM IT ALSO PROCESSES THE
- * ERROR.
- *
- * CALLS BDM, IDM, *3MD*.
- *
- * MACROS EXECUTE.
- ENTRY EMM
- EMM SUBR ENTRY/EXIT
- RJM BDM BUILD MESSAGE
- LDM EMMA
- ZJN EMM3 IF NO MESSAGE OR SPECIAL PROCESSOR
- SBN MAXM
- MJN EMM4 IF SPECIAL PROCESSOR NEEDED
- EMM1 LCN 0 MOVE MESSAGE
- STD T1
- EMM2 AOD T1
- LDM *,T1
- EMMA EQU *-1
- STM MESE+13,T1
- NJN EMM2 IF NOT END OF MESSAGE
- EMM3 LDD HP
- * UJN EMM5 (*3MD* ALREADY EXECUTED)
- EMMB EQU *-1
- LPC 500
- ZJN EMM5 IF NOT FSC/CMTS/ISMT ADAPTOR
- EMM4 EXECUTE 3MD LOAD SPECIAL PROCESSOR
- EMMC UJN EMM1 GO MOVE MESSAGE
- * PSN (NO MESSAGE TO MOVE)
- * ISSUE MESSAGES.
- EMM5 LDN ERLN/10000 ISSUE MESSAGE TO ERROR LOG
- RJM IDM
- LDM CECB
- EMMD LPN 77
- * LPN 0 (MESSAGE ISSUE TO USER DISABLED)
- ZJN EMM6 IF AT MAGNET CP
- LDN CPON/10000 ISSUE MESSAGE TO USER
- RJM IDM
- EMM6 LJM EMMX RETURN
- MES SPACE 4,10
- *** MESSAGE DATA.
- * MESSAGES ARE ISSUED IN THE FOLLOWING FORMAT-
- * MT,C13-0-02,ABCDEF,RD, 753,S0,GS00000000
- * MT,C13,D00000000000000000000000000000000
- * MT,C13,U000000000000000000000000,T0000.
- * MT,C13,A0000000000000000000000000000.
- * MT,C13,F04,I13,B000123,L5004,P00000000.
- * MT,C13,E00,H00000000, .(ADDITIONAL INFORMATION.)
- *
- * THE FIRST MESSAGE WOULD TELL THE FOLLOWING-
- *
- * 1) CHANNEL 13, EQUIPMENT 0, UNIT 2.
- * 2) VOLUME SERIAL NUMBER IS *ABCDEF*.
- * 3) OPERATION WAS A READ. (ANY OPERATION NOT INVOLVING
- * AN ACTUAL READ OR WRITE WILL BE CALLED A READ.
- * 4) EST ORDINAL *753* IS THE UNIT THAT THE TAPE WAS LAST
- * LABELED ON. THIS WILL ONLY BE AVAILABLE FOR LABELED
- * TAPE GENERATED UNDER KRONOS 2.1 OR NOS. IT WILL
- * NORMALLY BE ZERO IN ALL OTHER CASES. THIS FIELD DOES
- * NOT REPRESENT THE EST ORDINAL OF THE TAPE UNIT THAT
- * THE TAPE IS CURRENTLY MOUNTED ON.
- * 5) CHANNEL STATUS.
- * 6) GENERAL STATUS OF TAPE UNIT.
- * 7) BLOCK ID BYTE. ( LOWER 12 BITS OF GENERAL STATUS)
- *
- * THE SECOND MESSAGE WOULD TELL THE FOLLOWING -
- *
- * 1) CHANNEL 13 - THIS IS REPEATED SO THAT IF ERRORS
- * ARE OCCURING ON MORE THAN ONE TAPE CHANNEL AT THE
- * SAME TIME THE TWO MESSAGES CAN BE ASSOCIATED.
- * 2) DETAILED STATUS OF THE UNIT.
- * FOR FSC/CMTS/ISMT THIS IS WORD 3 OF ATS MAPPED STATUS
- * AND WORDS 1 - 7 OF SENSE BYTE STATUS.
- *
- * THE THIRD MESSAGE (NOT MTS) WOULD TELL THE FOLLOWING -
- *
- * 1) CHANNEL 13, SAME AS ABOVE.
- * 2) UNIT STATUS.
- * FOR FSC/CMTS/ISMT THIS IS WORDS 8 - 13 OF SENSE BYTE
- * STATUS.
- * 3) THIRD BYTE OF FORMAT PARAMETERS.
- *
- * THE FOURTH MESSAGE (FSC/CMTS/ISMT ONLY) WOULD TELL THE
- * FOLLOWING -
- *
- * 1) CHANNEL 13, SAME AS ABOVE.
- * 2) THE ADDITIONAL SENSE BYTE STATUS (WORDS 14 - 20) NOT
- * PLACED IN DETAILED STATUS OR UNIT STATUS FIELDS.
- *
- * THE FIFTH MESSAGE WOULD TELL THE FOLLOWING -
- *
- * 1) CHANNEL 13, SAME AS ABOVE.
- * 2) THE ERROR OCCURED ON A SOFTWARE FUNCTION 4.
- * 3) ERROR ITERATION.
- * 4) BLOCK NUMBER ERROR OCCURRED ON WAS 123.
- * 5) BLOCK LENGTH WAS 5004 BYTES.
- * 6) *1MT* INTERNAL ERROR PARAMETERS.
- *
- * THE SIXTH MESSAGE WOULD TELL THE FOLLOWING -
- *
- * 1) CHANNEL 13 - SAME AS ABOVE.
- * 2) OCTAL ERROR CODE VALUE.
- * 3) UNIT FORMAT PARAMETERS. SEE 66X/67X MANUAL FOR FIELD
- * DEFINITIONS OF FORMAT SELECTION.
- * 4) ADDITIONAL DESCRIPTION.
- **** MESSAGE DATA.
- MESA DATA H*MT,C00-0-00, ,RD, ,S0,GS00000000*
- CON 0
- MESB DATA H*MT,C00,D00000000000000000000000000000000*
- CON 0
- MESC DATA H*MT,C00,U000000000000000000000000,T0000. *
- CON 0
- MESD DATA H*MT,C00,F00,I00,B000000,L0000,P00000000. *
- CON 0
- MESE DATA C*MT,C00,E00,H00000000, .*
- MESL EQU MESE+MESB-MESA+1
- TERM SPACE 4,10
- TERM INDEX
- INDEX 0,(=C*REC.*)
- INDEX /MTX/OPA,(=C*OPA.*)
- INDEX /MTX/BTL,(=C*BTL.*)
- INDEX /MTX/BNE,BNEM
- INDEX /MTX/NBE,(=C*NBE.*)
- INDEX /MTX/OTF,(=C*OTF.*)
- INDEX /MTX/RDR,WEOM
- INDEX /MTX/FRJ,FRJM
- INDEX /MTX/WEO,WEOM
- INDEX /MTX/CRJ,CRJM
- INDEX /MTX/STE,(=C*STE.*)
- INDEX /MTX/ERA,(=C*ERA.*)
- INDEX /MTX/PLO,(=C*PLO.*)
- INDEX /MTX/CMF,(=C*CMF.*)
- INDEX /MTX/BCR,(=C*BCR.*)
- INDEX /MTX/SMF,(=C*SMF.*)
- INDEX /MTX/SMB,(=C*SMB.*)
- INDEX /MTX/MDW,(=C*MDW.*)
- INDEX /MTX/MOF,(=C*MOF.*)
- INDEX /MTX/LCH,(=C*LCH.*)
- INDEX /MTX/RCE,(=C*RCE.*)
- INDEX /MTX/MWT,(=C*MWT.*)
- INDEX /MTX/WVF,(=C*WVF.*)
- INDEX /MTX/TME,(=C*TME.*)
- INDEX /MTX/TCF,(=C*TCF.*)
- INDEX /MTX/BFR,(=C*BFR.*)
- INDEX /MTX/BFW,(=C*BFW.*)
- INDEX /MTX/MERC
- ****
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPC2D
- SPACE 4,10
- ** ERRORS REQUIRING ADDITIONAL OVERLAY TO BE LOADED.
- BEGM BSS 0
- LOC 1
- FRJM BSS 1 FUNCTION REJECT
- WEOM BSS 1 NO END OF OPERATION
- CRJM BSS 1 CONNECT REJECT
- BNEM BSS 1 BLOCK SEQUENCE ERROR
- MAXM BSS 1 MAXIMUM SPECIAL ERRORS
- ORG BEGM
- TITLE SUBROUTINES.
- CDA SPACE 4,10
- ** CDA - CONVERT DATA (4 DIGITS).
- *
- * ENTRY (A, 17 - 12) = ADDRESS WHERE DATA CONTAINED.
- * (A, 11 - 0) = ADDRESS WHERE TO STORE RESULT.
- *
- * CALLS C2D.
- *
- * USES T2, T3.
- CDA SUBR ENTRY/EXIT
- STD T3 SAVE DESTINATION ADDRESS
- SHN -14
- STD T2 SAVE DATA ADDRESS
- LDI T2 CONVERT FIRST 2 DIGITS
- SHN -6
- RJM C2D
- STI T3
- LDI T2 CONVERT SECOND 2 DIGITS
- RJM C2D
- STM 1,T3
- UJN CDAX RETURN
- CDN SPACE 4,10
- ** CDN - CONVERT DATA (N DIGITS)
- *
- * ENTRY (A, 17 - 12) = LENGTH OF DATA.
- * (A, 11 - 0) = SOURCE OF DATA TO CONVERT.
- * (CN+3) = DESTINATION OF CONVERTED DATA.
- *
- * CALLS CDA.
- *
- * USES CN - CN+2
- CDN SUBR ENTRY/EXIT
- STD CN+1 SAVE ADDRESS OF DATA TO CONVERT
- SHN -14 SAVE LENGTH
- STD CN+2
- CDN1 LDI CN+1 CONVERT ONE BYTE OF DATA
- STD CN
- LDC CN*10000
- ADD CN+3
- RJM CDA
- LDN 2
- RAD CN+3
- AOD CN+1
- SOD CN+2
- NJN CDN1 IF NOT COMPLETE
- UJN CDNX RETURN
- IDM SPACE 4,10
- ** IDM - ISSUE DAYFILE MESSAGES.
- *
- * ENTRY (A) = MESSAGE DESTINATION CODE
- * (IDMA) = ADDRESS OF MESSAGE LINES TABLE.
- *
- * EXIT MESSAGE LINES DEFINED IN THE *IDMC* TABLE ARE ISSUED.
- *
- * USES T8.
- *
- * CALLS DFM.
- IDM SUBR ENTRY/EXIT
- LMC LMCI SET MESSAGE DESTINATION CODE
- STM IDMB
- LDN 0 INITIALIZE MESSAGE INDEX
- STD T8
- * LOOP UNTIL ALL MESSAGE LINES ARE ISSUED TO THE DAYFILE.
- IDM1 LDM IDMC,T8 GET NEXT MESSAGE POINTER
- * LDM IDMD,T8 (4 LINES OF MESSAGE)
- * LDM /3M /FSCA,T8 (6 LINES OF MESSAGE)
- IDMA EQU *-1
- ZJN IDMX IF ALL MESSAGES ISSUED
- LMC ** ADD MESSAGE DESTINATION
- IDMB EQU *-2 (MESSAGE DESTINATION CODE)
- RJM DFM ISSUE DAYFILE MESSAGE
- AOD T8 ADVANCE MESSAGE INDEX
- UJN IDM1 ISSUE NEXT MESSAGE LINE
- * TABLE OF MESSAGE LINE POINTERS FOR 5 LINES.
- IDMC BSS 0
- LOC 0
- CON MESA LINE 1
- CON MESB LINE 2
- CON MESC LINE 3
- CON MESD LINE 4
- CON MESE LINE 5
- CON 0 TERMINATOR
- LOC *O
- * TABLE OF MESSAGE LINE POINTERS FOR 4 LINES.
- IDMD BSS 0
- LOC 0
- CON MESA LINE 1
- CON MESB LINE 2
- CON MESD LINE 3
- CON MESE LINE 4
- CON 0 TERMINATOR
- LOC *O
- RUW SPACE 4,10
- ** RUW - READ UNIT DESCRIPTOR TABLE WORD.
- * USED TO READ UDT WHEN POSSIBLY NOT AT MAGNET CP.
- *
- * ENTRY (A) = UDT WORD.
- *
- * EXIT (CN - CN+4) = WORD READ.
- *
- * USES T1, CM - CM+4, CN - CN+4.
- *
- * MACROS DELAY, MONITOR, PAUSE.
- RUW2 LDD MA
- CRD CN
- RUW SUBR ENTRY/EXIT
- STD T1
- RUW1 LDM UADA
- ADD T1
- STD CM+4
- LDD HN REQUEST 1 WORD
- STD CM+3
- LDN 0 REQUEST READ FROM *MAGNET*
- STD CM+1
- LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
- STD CM+2
- MONITOR TDAM
- LDD CM+1
- LMN 1
- NJN RUW2 IF MOVE NOT IN PROGRESS
- PAUSE NE
- DELAY
- UJN RUW1 REISSUE REQUEST
- TITLE OVERLAY AREA.
- ERRNG ERLB-* IF OVERFLOW INTO OVERLAY AREA
- * NOTE - THE FOLLOWING CODE MAY BE OVERLAID IF THE
- * SPECIAL ERROR MESSAGES OVERLAY IS REQUIRED.
- BDM SPACE 4,15
- ** BDM - BUILD MESSAGE.
- *
- * EXIT MESSAGE BUILT EXCEPT FOR DESCRIPTIVE MESSAGE IN LAST
- * LINE OF MESSAGE.
- * (EMMD) MODIFIED IF MESSAGE ISSUE TO USER DISABLED.
- * *EMM* EXIT SET TO *RET4* IF CALLED FROM *ERR* AND
- * REQUEST IN PROGRESS.
- * *EMM* EXIT SET TO *PNR* IF CALLED FROM *ERR* AND
- * REQUEST NOT IN PROGRESS.
- *
- * CALLS CDA, CDN, C2D, HNG, MCH, RUW, SCS, UAD.
- *
- * MACROS CHTE, SFA.
- BDM SUBR ENTRY/EXIT
- * CHECK CALL TYPE.
- LDC CTAB MODIFY CHANNELS
- RJM MCH
- LDM //LOV CHECK CALL ORIGIN
- LMC .EERR
- NJN BDM2 IF NOT CALLED FROM *ERR*
- LDD RS
- LMN /MTX/RIP
- ZJN BDM1 IF REQUEST IN PROGRESS
- LDC //PNR&//RET4
- BDM1 LMC //RET4
- STM //LOV
- LDM //ERR
- ADC -OVL
- MJN BDM4 IF *ERR* CALLED FROM RESIDENT
- BDM2 LDM //STER USE STATUS WHEN ERROR OCCURRED
- STD DS
- * CHECK VALIDITY OF ERROR CODE.
- BDM4 LDD EC
- SBN /MTX/MERC
- MJN BDM5 IF VALID ERROR CODE
- RJM HNG HANG PP
- BDM5 LDN 0 CLEAR ERROR TYPE INDICATOR
- STM //ERR
- LDM TERM,EC SAVE TABLE ENTRY
- STM EMMA
- LDD EC
- LMN /MTX/LCH
- NJN BDM6 IF NOT LOAD CHECK ERROR
- AOM //RELA SET UNIT CONNECTED
- RJM UAD SET UP DIRECT CELLS FOR MESSAGE
- ADN /MTX/UST2
- CRM EI,TR
- * MESSAGE BUILD.
- BDM6 LDD HP SET DEVICE TYPE IN MESSAGE LINES
- LPN 1
- SHN 6
- ADC 2RMT
- RJM SCS SET CHARACTERS
- CHTE * SET CHANNEL NUMBER
- LDN CH
- RJM C2D
- ADC 2*10000
- RJM SCS
- SFA EST,EO GET EQUIPMENT AND UNIT NUMBER
- ADK EQDE
- CRD CM
- LDD CM+4 SET EQUIPMENT NUMBER
- SHN -11
- RAM MESA+3
- LDD CM+4 SET UNIT NUMBER
- SHN -3
- LPN 1
- RAM MESA+4
- LDD CM+4
- LPN 7
- SHN 6
- RAM MESA+5
- LDN /MTX/UVSN READ UP VSN
- RJM RUW
- LDD CN
- ZJN BDM7 IF VSN NOT SPECIFIED
- STM MESA+6
- LDD CN+1
- STM MESA+7
- LDD CN+2
- STM MESA+10
- BDM7 LDM ITMA
- LPN 77
- LMN F0050
- NJN BDM8 IF NOT WRITE OPERATION
- LDN 1RW-1RR CHANGE *RD* TO *WD*
- RAM MESA+11
- BDM8 LDN /MTX/UGNU GET EST ORDINAL WRITTEN ON
- RJM RUW
- LDD CN+1
- ZJN BDM9 IF EST NOT AVAILABLE
- SHN -6 CONVERT UPPER DIGIT OF EST ORDINAL
- ADC 2R 0
- STM MESA+13
- LDD CN+1 CONVERT LOWER TWO DIGITS OF EST ORDINAL
- RJM C2D
- STM MESA+14
- BDM9 LDM STCB SET CHANNEL STATUS
- SHN 6
- RAM MESA+16
- LDC MESA+20
- STD CN+3
- LDC 1*10000+DS
- RJM CDN
- LDC 1*10000+UBWB SET BID BYTE
- RJM CDN
- LDD EC SET ERROR CODE
- RJM C2D
- STM MESE+4
- LDD FN CONVERT SOFTWARE FUNCTION NUMBER
- RJM C2D
- STM MESD+4
- LDD EI CONVERT ERROR ITERATION NUMBER
- RJM C2D
- STM MESD+6
- LDD BL CONVERT BLOCK NUMBER
- RJM C2D
- STM MESD+10
- LDC BL*10000+10000+MESD+11 CONVERT BLOCK NUMBER
- RJM CDA
- LDC BY*10000+MESD+14 CONVERT BLOCK LENGTH
- RJM CDA
- LDC MESB+4 CONVERT DETAILED STATUS
- STD CN+3
- LDC 10*10000+MTDS
- RJM CDN
- LDN MESD+17-MESB-24 CONVERT ERROR PARAMETERS
- RAD CN+3
- LDC 2*10000+EP
- RJM CDN
- LDN MESE+6-MESD-23 CONVERT FORMAT
- RAD CN+3
- LDC 2*10000+MTSF
- RJM CDN
- LDD CF
- SHN 21-7
- MJN BDM10 IF MTS CONTROLLER
- LDC MESC+4 SET UNIT STATUS FOR ATS
- STD CN+3
- LDC 6*10000+ATUS
- RJM CDN
- LDN MESC+21-MESC-20 SET THIRD FORMAT PARAMETER
- RAD CN+3
- LDC 1*10000+MTSF+2
- RJM CDN
- UJN BDM11 CHECK ERROR MESSAGE PROCESSING OPTION
- BDM10 LDC IDMD SET 4 LINE MESSAGE
- STM IDMA
- BDM11 LDD SP CHECK ERROR MESSAGE PROCESSING OPTION
- SHN 21-7
- PJN BDM11.1 IF USER DAYFILE MESSAGES ARE DISABLED
- LDD EC
- ZJN BDM12 IF RECOVERED MESSAGE
- LMN /MTX/OTF
- ZJN BDM12 IF ON THE FLY ERROR
- LDD EI
- ZJN BDM12 IF FIRST ITERATION
- BDM11.1 LDC LPNI+0 DISABLE MESSAGE ISSUE
- STM EMMD
- BDM12 LJM BDMX RETURN
- SCS SPACE 4,10
- ** SCS - STORE CHARACTERS IN MESSAGE LINES.
- *
- * ENTRY (A, 17 - 12) = MESSAGE FIELD INDEX.
- * (A, 11 - 0) = CHARACTERS.
- *
- * USES T0, T1.
- SCS SUBR ENTRY/EXIT
- STD T0 SAVE CHARACTERS
- SHN -14
- ADC MESA
- STD T1
- SCS1 LDD T0
- STI T1
- LDN MESB-MESA
- RAD T1
- ADC -MESL
- MJN SCS1 LOOP
- UJN SCSX RETURN
- BUF SPACE 4,10
- USE BUFFER
- CTAB SPACE 4,10
- * CHANNEL TABLE.
- CTAB CHTB CHANNEL TABLE
- ERRNG 2*473+ERLA+5-* ERROR PROCESSOR OVERFLOW
- OVERLAY (MTS/ATS SPECIAL MESSAGE PROCESSOR.),(ERLB+5),P
- ** THIS OVERLAY IS CALLED FROM *EMM* FOR ERRORS WHICH
- * REQUIRE ADDITIONAL PROCESSING. SEE TABLE IN *EMM* FOR
- * LIST OF ERRORS WHICH REQUIRE THIS OVERLAY.
- EMN SPACE 4,10
- ** EMN - MTS ERRLOG MESSAGE SPECIAL PROCESSOR.
- *
- * ENTRY (/EMM/EMMA) = INDEX TO PROCESSOR.
- *
- * EXIT (/EMM/EMMA) = MESSAGE ADDRESS.
- *
- * CALLS BNP, CKR, ECN, FRE, FSC.
- EMN SUBR ENTRY/EXIT
- LDC UJNI+/EMM/EMM5-/EMM/EMMB
- ERRPL /EMM/EMM5-/EMM/EMMB-40 CHECK JUMP IN RANGE
- STM /EMM/EMMB SET *3MD* ALREADY EXECUTED
- LDM /EMM/EMMA GET PROCESSOR INDEX
- ZJN EMN2 IF ONLY CALLED FOR FSC STATUS
- STD T1
- SBN /EMM/MAXM
- PJN EMN2 IF FSC STATUS CALL BUT MESSAGE DEFINED
- LDM SPRI,T1
- STM EMNA
- RJM * PROCESS ERROR
- EMNA EQU *-1
- STM /EMM/EMMA SET MESSAGE ADDRESS
- EMN1 LDD HP
- LPC 500
- ZJN EMNX IF NOT FSC/CMTS/ISMT ADAPTOR
- RJM FSC OBTAIN AND FORMAT FSC/CMTS/ISMT STATUS
- UJN EMNX RETURN
- EMN2 LDN PSNI
- STM /EMM/EMMC SKIP MESSAGE MOVE
- UJN EMN1 RETURN FSC STATUS
- TITLE SPECIAL PROCESSORS.
- SPRI SPACE 4,10
- SPRI INDEX 0,//HNG
- INDEX /EMM/FRJM,FRE
- INDEX /EMM/WEOM,CKR
- INDEX /EMM/CRJM,ECN
- INDEX /EMM/BNEM,BNP
- INDEX /EMM/MAXM
- BNP SPACE 4,10
- ** BNP - BLOCK NUMBER PROCESSOR.
- *
- * ENTRY (BNEI) = ACTUAL BYTE LENGTH.
- * (BNEI+1 - BNEI+2) = ACTUAL BLOCK NUMBER.
- *
- * EXIT (A) = MESSAGE ADDRESS.
- *
- * CALLS /EMM/CDA, /EMM/C2D.
- *
- * USES CM.
- BNP SUBR ENTRY/EXIT
- LDM BNEI
- STD CM
- LDC CM*10000+BNPA+1 CONVERT EXPECTED LENGTH
- RJM /EMM/CDA
- LDM BNEI+1
- RJM /EMM/C2D
- STM BNPA+4
- LDM BNEI+2
- STD CM
- LDC CM*10000+BNPA+5
- RJM /EMM/CDA
- LDC BNPA SET MESSAGE ADDRESS
- UJN BNPX RETURN
- BNPA DATA C* L0000,B000000.*
- CKR SPACE 4,10
- ** CKR - CHECK IF READY OR WRITE ENABLE ERROR.
- * CLEARS LAST OPERATION WRITE FLAGS.
- *
- * EXIT (A) = MESSAGE ADDRESS.
- CKR2 LDN /MTX/RDR SET READY DROP ERROR
- STD EC
- CKR3 LDC CKRC SET READY DROP MESSAGE
- CKR SUBR ENTRY/EXIT
- LDD UP CLEAR LAST OPERATION WRITE AND BLANK TAPE
- SCN 24
- STD UP
- LDD EC CHECK FOR READY DROP ERROR
- SBN /MTX/RDR
- ZJN CKR3 IF READY DROP ERROR
- LDD DS CHECK FOR NOT READY STATUS
- SHN 21-0
- PJN CKR2 IF NOT READY
- LDM STWD
- LPN 2
- ZJN CKR1 IF NOT WAIT BUSY
- LDD DS
- LPN 2
- ZJN CKR1 IF NOT BUSY
- LDC CKRB SET UNIT BUSY MESSAGE
- UJN CKRX RETURN
- CKR1 LDC CKRA SET NO EOP MESSAGE
- UJN CKRX RETURN
- CKRA DATA C*NO EOP.*
- CKRB DATA C*BUSY.*
- CKRC DATA C*NOT READY.*
- ECN SPACE 4,10
- ** ECN - ERROR ON CONNECT.
- *
- * EXIT (A) = MESSAGE ADDRESS.
- *
- * USES CM - CM+4.
- *
- * MACROS SFA.
- ECN1 LDM MTDS
- LPN 77
- NJN ECN2 IF CONNECT ERROR
- * CHANGE MESSAGE TO *MDI* ERROR.
- LDC 2RMD
- STM ECNA+5
- LDC 2RI.
- STM ECNA+6
- LDN 0
- STM ECNA+7
- ECN2 LDC ECNA EXIT WITH MESSAGE ADDRESS
- ECN SUBR ENTRY/EXIT
- SFA EST,EO
- ADK EQDE
- CRD CM
- LDD CM
- LPN 3
- LMN /CPS/DWES
- ZJN ECN1 IF UNIT DOWNED
- LDN 0 ALTER MESSAGE
- STM ECNA+5
- UJN ECN2 RETURN
- ECNA DATA C*CON. REJ. DOWN.*
- FRE SPACE 4,10
- ** FRE - FUNCTION REJECT ERROR.
- * DIAGNOSES ERROR BY GIVING FUNCTION AND THE ADDRESS OF
- * THE ROUTINE THAT INITIATED THE CALL.
- *
- * EXIT (A) = MESSAGE ADDRESS.
- *
- * CALLS /EMM/CDA.
- *
- * USES CM.
- FRE SUBR ENTRY/EXIT
- LDM //.OVLR+1 GET ADDRESS OF CALLER
- STD CM
- LDC CM*10000+FREA+4
- RJM /EMM/CDA
- LDM //.OVLR CONVERT FUNCTION
- STD CM
- LDC CM*10000+FREA+1
- RJM /EMM/CDA
- LDC FREA SET MESSAGE ADDRESS
- UJN FREX RETURN
- FREA DATA C*FN0000,P0000.*
- FSC SPACE 4,15
- ** FSC - FSC/CMTS/ISMT ADAPTOR STATUS.
- * OBTAINS AND INSERTS THE FSC/CMTS/ISMT SENSE BYTE STATUS INTO
- * THE ERROR LOG MESSAGE.
- *
- * USES CM - CM+4, CN - CN+3.
- *
- * CALLS /EMM/CDN, DME, FCN, MCH.
- *
- * NOTE - FSC ADAPTOR ALWAYS HAS A DEDICATED AND RESERVED
- * CHANNEL. THE FSC STATUS (312) FUNCTION DOES NOT
- * REQUIRE A RESERVED UNIT.
- FSC2 LDM /EMM/MESA SET MT OR NT AND CHANNEL IN MESSAGE
- STM FSCB
- LDM /EMM/MESA+2
- STM FSCB+2
- LDC FSCA INITIALIZE MESSAGE POINTER
- STM /EMM/IDMA
- FSC SUBR ENTRY/EXIT
- LDM MTDS CHECK FOR ERROR CODE 70
- LPN 77
- LMN 70
- ZJP FSC2 IF ERROR CODE 70 DO NOT GET ISMT STATUS
- LDC FSCD MODIFY CHANNELS
- RJM MCH
- LDM //MCCA SKIP ACTUAL STATUS IF PREVIOUS REJECT
- LMC LDNI+11
- NJN FSC1 IF PREVIOUS FUNCTION REJECT
- LDC 312
- RJM //FCN ISSUE FSC/CMTS/ISMT STATUS FUNCTION
- ACN CH+40
- LDN 20D
- IAM FSCC,CH INPUT STATUS
- FSC1 LDC /EMM/MESB+6
- STD CN+3
- LDC 7*10000+FSCC USE SENSE BYTES FOR DETAILED STATUS
- RJM /EMM/CDN
- LDC /EMM/MESC+4
- STD CN+3
- LDC 6*10000+FSCC+7 SUBSTITUTE SENSE BYTES FOR UNIT STATUS
- RJM /EMM/CDN
- LDC FSCB+4
- STD CN+3
- LDC 7*10000+FSCC+15 SET SENSE BYTES IN ADDITIONAL STATUS
- RJM /EMM/CDN
- LJM FSC2 SET MT OR NT AND CHANNEL IN MESSAGE
- * TABLE OF MESSAGE LINE POINTERS FOR FSC, CMTS OR ISMT.
- FSCA BSS 0
- LOC 0
- CON /EMM/MESA LINE 1
- CON /EMM/MESB LINE 2
- CON /EMM/MESC LINE 3
- CON FSCB LINE 4
- CON /EMM/MESD LINE 5
- CON /EMM/MESE LINE 6
- CON 0 TERMINATOR
- LOC *O
- FSCB DATA H*MT,C00,A0000000000000000000000000000. *
- CON 0
- FSCC BSSZ 20D SENSE BYTE STATUS
- FSCD CHTB CHANNEL TABLE
- SPACE 4,10
- USE BUFFER
- ERRNG 1*473+ERLB+5-* ERROR PROCESSOR OVERFLOW
- OVERLAY (CTS CHANNEL ERROR PROCESSOR.),(BUFB+5),P
- CCP SPACE 4,25
- ** CCP - CTS CHANNEL ERROR PROCESSOR.
- *
- * THIS ROUTINE DOES ERROR RECOVERY AS FOLLOWS -
- *
- * IF A JOB IS ASSIGNED, BUT NO FUNCTION IS PRESET, ERROR
- * LOGGING AND ERROR RECOVERY ARE NOT PERFORMED.
- * IF (EI) = 0 OR 1 LOG ERROR, LOAD CCC, POSITION TAPE IF
- * NECESSARY, AND REQUEUE.
- * IF (EI) .GE. 2 LOG ERROR AND RETURN A FATAL ERROR.
- *
- * ENTRY (EC) = ERROR CODE.
- * (EI) = RETRY COUNT.
- * (PICA) = 0 IF POSITIONING OF TAPE NOT NECESSARY.
- *
- * EXIT TO *RET2* TO REQUEUE THE REQUEST.
- * TO *RET4* TO RETURN A FATAL ERROR.
- * TO *PNR* IF INITIAL CONNECT FAILED, BUT AUTOLOAD AND
- * ENSUING CONNECT ARE SUCCESSFUL.
- * TO *PNR3 IF FUNCTION TIMEOUT FOR RELEASE.
- * (EI) = (EI) + 1.
- *
- * USES CN, CM - CM+4.
- *
- * CALLS CEC, *CEM*, MCH, PCM, PCR, POS, /PRESET/RCU, UAD,
- * *0CT*.
- *
- * MACROS CALL, EXECUTE.
- ENTRY CCP
- CCP SUBR ENTRY/EXIT
- LDC CTAB
- RJM MCH MODIFY CHANNEL INSTRUCTIONS
- LDC LDNI+F0002
- STM /PRESET/GPSC SEND CONTINUE IF COMMAND RETRY
- LDM /PRESET/ICFA
- LMN F0001
- NJN CCP1 IF NOT RELEASE UNIT
- STM RELA INDICATE UNIT NOT CONNECTED
- LDN PPAL CHECK PPU AVAILABILITY
- CRD CM
- LJM PNR3 PROCESS NEXT REQUEST
- CCP1 LDN 0 DO NOT SET FET COMPLETE
- RJM CEC CHANGE TO MAGNET CONTROL POINT
- LDM RELA
- NJN CCP2 IF UNIT CONNECTED
- LDD EC SAVE ERROR CODE
- STD T1
- RJM UAD GET UDT ADDRESS
- CRD RS SET UP DIRECT CELLS FOR MESSAGE
- ADN /MTX/UST2
- CRM EI,TR
- LDD T1 RESTORE ERROR CODE
- STD EC
- CCP2 LDD EC
- LMN /MTX/STE
- NJN CCP3 IF NOT STATUS ERROR
- LDD DS
- LPN 1
- NJN CCP3 IF READY
- LDN /MTX/RDR NOT READY ERROR
- STD EC
- CCP3 RJM PCM PROCESS CHANNEL MALFUNCTION
- RJM PCR PROCESS CONNECT REJECT
- CALL CEM LOG CTS ERROR MESSAGE
- LDC LDNI
- STM //PNRC FORCE DROP OUT
- AOD EI INCREMENT RETRY COUNT
- STD EP SO RECOVERABLE ERROR WILL BE REPORTED
- SBN 3
- MJN CCP4 IF RETRIES NOT COMPLETED
- LDN 0
- STD EI CLEAR RETRY COUNT
- LDD FN
- ZJP PNR IF NO FUNCTION
- LJM RET4 REPORT FATAL ERROR
- CCP4 RJM UAD GET UDT ADDRESS
- ADN /MTX/UST2
- CWD EI SAVE RETRY COUNT AND BLOCK POSITION
- ADN /MTX/UST3-/MTX/UST2
- CWD LG SAVE BLOCK POSITION (EP+1)
- CHTE *
- LDN CH SET CHANNEL NUMBER
- STD CN
- LDC ERLB SET BUFFER ADDRESS
- STD CN+1
- EXECUTE 0CT,ERLA+5 LOAD CTS/CCC MICROCODE
- LDD CN
- ZJN CCP6 IF MICROCODE LOADED
- STD EC
- SHN 0-13
- PJN CCP5 IF ERROR CODE ALREADY SAVED
- LDN /MTX/CMF
- STD EC
- CCP5 LDM CN+1 SAVE FUNCTION
- STM /PRESET/ICFA
- UJP CCP3 PERFORM NEXT STEP OF RECOVERY ALGORITHM
- CCP6 LDM RELA
- ZJN CCP9 IF UNIT NOT CONNECTED
- RJM /PRESET/RCU RECONNECT UNIT
- LDM /PRESET/PICA
- ZJN CCP7 IF POSITIONING OF TAPE NOT NECESSARY
- RJM POS POSITION TAPE
- NJP CCP3 IF ERROR
- CCP7 LDN 0
- STD EC CLEAR ERROR CODE
- LJM RET2 REQUEUE THE REQUEST
- CCP9 RJM /PRESET/CCU CONNECT UNIT
- LDN 0
- STD EC CLEAR ERROR CODE
- CALL CEM REPORT RECOVERED ERROR
- LDN 0
- STD EI CLEAR RETRY COUNT
- STD EP
- LJM PNR PROCESS NEXT REQUEST
- CAU SPACE 4,10
- ** CAU - CHECK ALL UNITS.
- *
- * EXIT (A) = 0 IF NO JOB ASSIGNED AND NO FUNCTION PRESET.
- *
- * USES CM - CM+4, CN - CN+4, T1 - T5.
- CAU SUBR ENTRY/EXIT
- LDM PNRD
- STM CAUA SET STARTING UDT ADDRESS
- CAU1 LDD RA
- SHN 6
- ADC 0
- CAUA EQU *-1 (UDT ADDRESS)
- CRD T1
- ADN /MTX/UST1
- CRD CM
- ADN /MTX/UVRI-/MTX/UST1
- CRD CN
- SFA EST,CM+2 GET CHANNEL INFORMATION
- ADK EQDE
- CRD CM
- LDD CM+1
- CHTE *
- LMN CH
- LPN 37
- ZJN CAU1.1 IF UNIT ON THIS CHANNEL
- LDD CM+2
- CHTE *
- LMN CH
- LPN 37
- NJN CAU2 IF UNIT NOT ON THIS CHANNEL
- CAU1.1 LDD CN JOB ASSIGNED
- ADD T2 FUNCTION
- NJN CAUX IF JOB ASSIGNED OR FUNCTION PRESENT
- CAU2 LDN /MTX/UNITL
- RAM CAUA UPDATE TO NEXT UDT
- LMM PNRA
- NJN CAU1 IF NOT END OF UDT
- UJP CAUX RETURN
- CFT SPACE 4,10
- ** CFT - CHECK FOR TWO CHANNELS.
- *
- * EXIT (A) = 0 IF TWO CHANNELS ARE ON.
- *
- * USES T1, CM - CM+4.
- CFT SUBR ENTRY/EXIT
- SFA EST,EO READ EST ENTRY
- ADK EQDE
- CRD CM
- CHTE *
- LDN CH
- STD T1 SAVE CHANNEL NUMBER
- LDD CM+1
- SHN -11
- LMN 4
- NJN CFTX IF 1ST CHANNEL NOT ON
- LDD CM+1
- LMD T1
- LPN 37
- NJN CFT2 IF THIS IS A 2ND CHANNEL
- LDD CM+2
- SHN -11
- CFT1 LMN 4
- NJN CFTX IF NO 2ND CHANNEL
- LDD CM+2
- LMD T1
- LPN 37
- ZJN CFT1 IF NO 2ND CHANNEL
- CFT2 LDN 0
- UJP CFTX RETURN
- DCI SPACE 4,10
- ** DCI - DOWN CHANNEL IN EST.
- * THIS ROUTINE DOWNS THE CHANNEL IN THE EST FOR ALL UNITS
- * ON THE CHANNEL.
- *
- * USES CM - CM+4, CN - CN+4.
- *
- * MACROS MONITOR.
- DCI SUBR ENTRY/EXIT
- LDM PNRD
- STM DCIA SET STARTING UDT ADDRESS
- DCI1 LDD RA
- SHN 6
- ADC 0
- DCIA EQU *-1 (UDT ADDRESS)
- ADK /MTX/UST1
- CRD CM GET EQUIPMENT DEFINITION
- SFA EST,CM+2
- ADK EQDE GET CHANNEL INFORMATION
- CRD CN
- LDD CN+1
- CHTE *
- LMN CH
- LPN 37
- ZJN DCI1.1 IF UNIT ON THIS CHANNEL
- LDD CN+2
- CHTE *
- LMN CH
- LPN 37
- NJN DCI2 IF UNIT NOT ON THIS CHANNEL
- DCI1.1 LDD CM+2
- STD CM+1 EST ORDINAL
- CHTE *
- LDN CH
- STD CM+2 CHANNEL NUMBER
- LDN /CPS/DWSS
- STD CM+3 SUBFUNCTION
- MONITOR SCSM DOWN CHANNEL IN EST
- DCI2 LDN /MTX/UNITL
- RAM DCIA UPDATE TO NEXT UDT
- LMM PNRA
- NJP DCI1 IF NOT END OF UDT
- LJM DCIX RETURN
- PCM SPACE 4,25
- ** PCM - PROCESS CHANNEL MALFUNCTION.
- * THE CHANNEL IS DOWNED IF A CHANNEL MALFUNCTION ERROR
- * OCCURS, RECOVERY IS UNSUCCESSFUL, AND
- * 1) THERE IS A 2ND CHANNEL, OR
- * 2) THERE ARE NO JOBS ASSIGNED AND NO FUNCTION IS PRESENT.
- *
- * ENTRY (EC) = ERROR CODE.
- * (EI) = RETRY COUNT.
- *
- * EXIT TO *PNR* IF CHANNEL MALFUNCTION, JOB ASSIGNED, NO 2ND
- * CHANNEL, AND NO FUNCTION IS PRESET. THIS BYPASSES
- * ERROR LOGGING AND ERROR RECOVERY.
- * TO *PNR5* IF CHANNEL DOWNED AND UNIT NOT CONNECTED.
- * TO *RET4* IF CHANNEL MALFUNCTION, ERROR RECOVERY IS
- * UNSUCCESSFUL, AND A 2ND CHANNEL IS PRESENT.
- *
- * USES EC, EI, CM - CM+4, CN - CN+4.
- *
- * CALLS CAU, *CEM*, CFT, DCI, IMR, SRQ, UAD.
- *
- * MACROS CALL, MONITOR.
- PCM SUBR ENTRY/EXIT
- LDD EC
- SBN /MTX/CMF
- ZJN PCM1 IF CHANNEL MALFUNCTION
- SBN /MTX/FRJ-/MTX/CMF
- NJN PCMX IF NOT FUNCTION REJECT
- PCM1 RJM CFT CHECK FOR TWO CHANNELS
- ZJN PCM2 IF 2 CHANNELS
- RJM CAU CHECK ALL UNITS
- NJP PCM4 IF JOB ASSIGNED OR FUNCTION PRESET
- PCM2 LDD EI
- SBN 2
- MJN PCMX IF RECOVERY NOT COMPLETE
- * DOWN CHANNEL.
- PCM3 RJM DCI DOWN CHANNEL IN EST
- LDN /CPS/EEVS
- STD CM+1 ENTER EVENT
- LDN 0
- STD CM+3
- LDN /EVT/CDSE
- STD CM+4 *CHANNEL DOWNED BY SYSTEM* EVENT
- MONITOR EATM
- LDN /MTX/MDW CHANNEL DOWNED ERROR
- STD EC
- CALL CEM LOG THE ERROR
- LDN 0
- STD EI CLEAR RETRY COUNT
- LDC LDNI
- STM //PNRC FORCE DROP OUT
- * ONLY GO TO *RET* IF CONNECTED, OTHERWISE 2 PPS COULD BE
- * CHANGING THE *UDT* AT THE SAME TIME.
- LDM RELA
- ZJP PNR5 IF UNIT NOT CONNECTED
- LJM RET4 RETURN AN ERROR CODE
- PCM4 LDD FN
- ZJP //PNR IF NO FUNCTION PENDING
- PCM5 LJM PCMX RETURN
- PCR SPACE 4,20
- ** PCR - PROCESS CONNECT REJECT.
- * IF ERROR RECOVERY IS UNSUCCESSFUL, NO FUNCTION IS PRESET,
- * AND NO JOB IS ASSIGNED, THE UNIT IS TURNED OFF.
- *
- * ENTRY (EC) = ERROR CODE.
- * (EI) = RETRY COUNT.
- *
- * EXIT TO *PNR* IF CONNECT REJECT, NO FUNCTION IS PRESENT,
- * AND A JOB IS ASSIGNED. THIS BYPASSES ERROR
- * REPORTING AND ERROR RECOVERY.
- *
- * USES CM - CM+4, CN - CN+4.
- *
- * CALLS SRQ, UAD.
- *
- * MACROS MONITOR.
- PCR SUBR ENTRY/EXIT
- LDD EC
- LMN /MTX/CRJ
- NJN PCRX IF NOT CONNECT REJECT
- RJM UAD CHECK IF JOB ASSIGNED
- ADK /MTX/UXRQ
- CRD RS
- ADK /MTX/UVRI-/MTX/UXRQ
- CRD CN
- LDD CN
- NJN PCR1 IF JOB ASSIGNED
- LDD EI
- SBN 2
- MJN PCRX IF RECOVERY NOT COMPLETE
- * DOWN UNIT.
- LDD EO SET EST ORDINAL
- STD CM+1
- LDN /CPS/DWES SET DOWN STATUS
- STD CM+2
- MONITOR SEQM SET EQUIPMENT PARAMETER
- UJP PCRX RETURN
- PCR1 LDD FN
- ZJP //PNR IF NO FUNCTION PENDING
- LJM PCRX RETURN
- POS SPACE 4,15
- ** POS - POSITION TAPE.
- * THIS ROUTINE USES THE LOCATE BLOCK COMMAND TO POSITION
- * THE TAPE TO THE EXPECTED BLOCK POSITION.
- *
- * ENTRY (BL, BL+1) = NOS BLOCK POSITION.
- * (WP, EP+1) = PHYSICAL BLOCK ID WHEN (BL,BL+1) = 0.
- *
- * EXIT (A) = 0 IF NO ERROR.
- * (EC) = ERROR CODE IF (A) .NE. 0.
- *
- * USES T3.
- *
- * CALLS /PRESET/GPS, /PRESET/ICF, /PRESET/RBI.
- POS SUBR ENTRY/EXIT
- RJM /PRESET/RBI READ BLOCK ID
- LDM BIDW
- STM POSA
- SBN 20
- ZJN POS1 IF FIRST SEGMENT
- STM POSA SET PHYSICAL REFERENCE BLOCK ID
- POS1 LDD BL+1
- SHN 4
- ADD EP+1
- STM POSA+2 MOVE BLOCK NUMBER TO PARAMETERS
- SHN -14
- STM POSA+1
- LDD BL
- SHN 4
- ADD WP
- RAM POSA+1
- LDN F0016 LOCATE BLOCK
- RJM /PRESET/ICF ISSUE FUNCTION
- ACN CH
- LDN 3
- OAM POSA,CH OUTPUT THE 3 PARAMETER WORDS
- STD T3 WORDS NOT TRANSFERRED
- FJM *,CH WAIT FOR DATA TO BE TAKEN
- POS2 LDN 0 WAIT FOR END OF OPERATION
- RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS
- MJN POS2 IF COMMAND RETRY
- SHN 21-13
- MJN POS3 IF ERROR
- LDD T3
- ZJN POS5 IF ALL WORDS TRANSFERRED
- LDN /MTX/CMF CHANNEL MALFUNCTION
- UJN POS4 SAVE ERROR CODE
- POS3 LDN /MTX/STE STATUS ERROR
- POS4 STD EC
- POS5 LJM POSX RETURN
- POSA DATA 0 LOCATE BLOCK PARAMETERS
- DATA 0 UPPER 12 BITS OF BLOCK NUMBER
- DATA 0 8/LOWER BITS OF BLOCK NUMBER / 4 UNUSED
- SPACE 4,10
- ERRNG ERLA-* CODE OVERFLOWS HELPER OVERLAY
- ERRPL ERLA+5+ZCTL-ERLB *0CT* OVERFLOWS INTO BUFFER
- CTAB SPACE 4,10
- * CHANNEL TABLE.
- CTAB CHTB CHANNEL TABLE
- OVERLAY (CTS ERRLOG MESSAGE PROCESSOR.),(ERLA+5),P,CEM
- CEM SPACE 4,10
- ** CEM - CTS ERRLOG MESSAGE PROCESSOR.
- * THIS ROUTINE ISSUES A MESSAGE TO THE ERROR LOG.
- *
- * USES T1.
- *
- * CALLS BDM, *CSP*, IDM, MET.
- *
- * MACROS CALL.
- ENTRY CEM
- CEM SUBR ENTRY/EXIT
- RJM BDM BUILD MESSAGE
- LDM CEMA
- ZJN CEM3 IF NO MESSAGE OR SPECIAL PROCESSOR
- SBN MAXM
- MJN CEM5 IF SPECIAL PROCESSOR NEEDED
- CEM1 LCN 0 MOVE MESSAGE
- STD T1
- CEM2 AOD T1
- LDM *,T1
- CEMA EQU *-1
- STM MESF+12,T1
- NJN CEM2 IF NOT END OF MESSAGE
- CEM3 RJM MET MOVE ERPA MESSAGE
- LDN ERLN/10000 ISSUE MESSAGE TO ERROR LOG
- RJM IDM
- LDM CECB
- CEMB LPN 77
- * LPN 0 (MESSAGE ISSUE TO USER DISABLED)
- ZJN CEM4 IF AT MAGNET CP
- LDN CPON/10000 ISSUE MESSAGE TO USER
- RJM IDM
- CEM4 UJP CEMX RETURN
- CEM5 CALL CSP CALL SPECIAL PROCESSOR
- UJN CEM1 GO MOVE MESSAGE
- MES SPACE 4,10
- *** MESSAGE DATA.
- * MESSAGES ARE ISSUED IN THE FOLLOWING FORMAT-
- * CT,C13-0-02,ABCDEF,RD, 753, GS00000000.
- * CT,C13,D0000000000000000000000000000000000000000.
- * CT,C13, 000000000000000000000000,A000000000000.
- * CT,C13,ERPA 00 - 000000000000000000000000000000.
- * CT,C13,F07,I02,B00000123.
- * CT,C13,E00, F=I ,U, TTTTTTTTTTTT.
- *
- * THE FIRST MESSAGE WOULD TELL THE FOLLOWING-
- *
- * 1) CHANNEL 13, EQUIPMENT 0, UNIT 2.
- * 2) VOLUME SERIAL NUMBER IS *ABCDEF*.
- * 3) OPERATION WAS A READ. (ANY OPERATION NOT INVOLVING
- * AN ACTUAL READ OR WRITE WILL BE CALLED A READ.
- * 4) EST ORDINAL *753* IS THE UNIT THAT THE TAPE WAS LAST
- * LABELED ON. THIS WILL ONLY BE AVAILABLE FOR A LABELED
- * TAPE GENERATED UNDER NOS. IT WILL NORMALLY BE ZERO IN
- * ALL OTHER CASES. THIS FIELD DOES NOT REPRESENT THE
- * EST ORDINAL OF THE TAPE UNIT THAT THE TAPE IS
- * CURRENTLY MOUNTED ON.
- * 5) GENERAL STATUS OF TAPE UNIT IN OCTAL.
- *
- * THE SECOND MESSAGE WOULD TELL THE FOLLOWING -
- *
- * 1) CHANNEL 13 - THIS IS REPEATED SO THAT IF ERRORS
- * ARE OCCURING ON MORE THAN ONE TAPE CHANNEL AT THE
- * SAME TIME THE TWO MESSAGES CAN BE ASSOCIATED.
- * 2) THIS IS THE FIRST 20 SENSE BYTES IN HEXADECIMAL.
- *
- * THE THIRD MESSAGE WOULD TELL THE FOLLOWING -
- *
- * 1) CHANNEL 13, SAME AS ABOVE.
- * 2) THIS IS THE LAST 12 SENSE BYTES IN HEXADECIMAL
- * FOLLOWED BY ADAPTER STATUS. ADAPTER STATUS IS
- * DISPLAYED IN HEXADECIMAL AND IS THE LAST 48 BITS
- * OF DETAILED STATUS.
- *
- * THE FOURTH MESSAGE WOULD TELL THE FOLLOWING -
- *
- * 1) CHANNEL 13, SAME AS ABOVE.
- * 2) THE ERROR RECOVERY PROCEDURE ACTION CODE, FROM SENSE
- * BYTE 3, FOLLOWED BY THE TEXT MESSAGE FOR THE ERPA
- * CODE.
- *
- * THE FIFTH MESSAGE WOULD TELL THE FOLLOWING -
- *
- * 1) CHANNEL 13, SAME AS ABOVE.
- * 2) THE ERROR OCCURED ON A SOFTWARE FUNCTION OF 7.
- * 3) ERROR ITERATION.
- * 4) BLOCK NUMBER ERROR OCCURRED ON WAS 123. THIS IS THE
- * NOS BLOCK NUMBER, NOT THE PHYSICAL BLOCK ID USED BY
- * THE CARTRIDGE TAPE SUBSYSTEM. THE FIRST DATA BLOCK
- * AFTER A LABEL IS NOS BLOCK 0.
- *
- * THE SIXTH MESSAGE WOULD TELL THE FOLLOWING -
- *
- * 1) CHANNEL 13 - SAME AS ABOVE.
- * 2) NOS ERROR CODE.
- * 3) THE TAPE FORMAT IS I.
- * 4) THE ERROR IS UNRECOVERED.
- * 5) TTT CONTAINS ADDTIONAL STATUS.
- **** MESSAGE DATA. NOTE THAT MESSAGES LONGER THAN 40 CHARACTERS
- * WRAP TO THE NEXT LINE IF DISPLAYED WITH DSDI. THE START
- * OF MESSAGES SHOULD BE AT EQUAL INTERVALS SO *SCS* CAN SAVE
- * REPETITIVE INFORMATION.
- MESA DATA H*CT,C00-0-00, ,RD, , GS00000000.*
- CON 0
- BSS 26D+MESA-*
- MESB DATA H*CT,C00,D .*
- CON 0
- MESC DATA H*CT,C00, ,A . *
- CON 0
- MESD DATA H*CT,C00,ERPA , *
- CON 0
- BSS 26D+MESD-*
- MESE DATA H*CT,C00,F00,I00,B00000000.*
- CON 0
- BSS 26D+MESE-*
- MESF DATA C*CT,C00,E00, F=I ,I, *
- MESL EQU MESF+MESB-MESA+1
- TERM SPACE 4,10
- TERM INDEX
- INDEX 0,(=C*REC.*)
- INDEX /MTX/BTL,(=C*BTL.*)
- INDEX /MTX/BNE,BNEM
- INDEX /MTX/RDR,WEOM
- INDEX /MTX/FRJ,FRJM
- INDEX /MTX/WEO,WEOM
- INDEX /MTX/CRJ,CRJM
- INDEX /MTX/STE,(=C*STE.*)
- INDEX /MTX/CMF,(=C*CMF.*)
- INDEX /MTX/MDW,(=C*MDW.*)
- INDEX /MTX/BFR,(=C*BFR.*)
- INDEX /MTX/BFW,(=C*BFW.*)
- INDEX /MTX/MERC
- ****
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPC2D
- SPACE 4,10
- ** ERRORS REQUIRING ADDITIONAL OVERLAY TO BE LOADED.
- BEGM BSS 0
- LOC 1
- FRJM BSS 1 FUNCTION REJECT
- WEOM BSS 1 NO END OF OPERATION
- CRJM BSS 1 CONNECT REJECT
- BNEM BSS 1 BLOCK SEQUENCE ERROR
- MAXM BSS 1 MAXIMUM SPECIAL ERRORS
- ORG BEGM
- IDM SPACE 4,10
- ** IDM - ISSUE DAYFILE MESSAGES.
- * THIS ROUTINE ISSUES THE MESSAGE LINES DEFINED IN TABLE
- * *IDMB* TO THE DAYFILE.
- *
- * ENTRY (A) = MESSAGE DESTINATION CODE
- *
- * USES T8.
- *
- * CALLS DFM.
- IDM SUBR ENTRY/EXIT
- LMC LMCI SET MESSAGE DESTINATION CODE
- STM IDMA
- LDN 0 INITIALIZE MESSAGE INDEX
- STD T8
- * LOOP UNTIL ALL MESSAGE LINES ARE ISSUED TO THE DAYFILE.
- IDM1 LDM IDMB,T8 GET NEXT MESSAGE POINTER
- ZJN IDMX IF ALL MESSAGES ISSUED
- LMC ** ADD MESSAGE DESTINATION
- IDMA EQU *-2 (MESSAGE DESTINATION CODE)
- RJM DFM ISSUE DAYFILE MESSAGE
- AOD T8 ADVANCE MESSAGE INDEX
- UJN IDM1 ISSUE NEXT MESSAGE LINE
- * TABLE OF MESSAGE LINE POINTERS FOR 6 LINES.
- IDMB BSS 0
- LOC 0
- CON MESA LINE 1
- CON MESB LINE 2
- CON MESC LINE 3
- CON MESD LINE 4
- CON MESE LINE 5
- CON MESF LINE 6
- CON 0 TERMINATOR
- LOC *O
- MET SPACE 4,15
- ** MET - MOVE ERPA TEXT MESSAGE.
- *
- * USES T1, T2.
- *
- * CALLS ERP.
- *
- * MACROS CALL.
- MET2 LDC 2R.
- STM MESD+7 SET END OF LINE WHEN NO MESSAGE
- MET SUBR ENTRY/EXIT
- CALL ERP LOAD ERPA TEXT MESSAGES
- LDM MESD+6
- LMC 2R
- ZJN MET2 IF NO ERPA CODE
- LDM CTSD+2
- SHN -4
- SBN 0#21
- MJN MET2 IF NO ENGLISH TEXT
- STD T1 INDEX INTO TABLE OF ADDRESSES
- LDM /ERP/ERPA,T1
- ZJN MET2 IF NO TEXT
- STD T1 START OF ERPA TEXT
- LDC MESD+10
- STD T2 DESTINATION FOR ERPA TEXT
- MET1 LDI T1
- STI T2
- ZJN METX IF ALL TEXT MOVED
- AOD T1
- AOD T2
- UJN MET1 CONTINUE MOVING TEXT
- TITLE OVERLAY AREA.
- CDA SPACE 4,10
- ** CDA - CONVERT DATA (4 DIGITS).
- *
- * ENTRY (A, 17 - 12) = ADDRESS WHERE DATA CONTAINED.
- * (A, 11 - 0) = ADDRESS WHERE TO STORE RESULT.
- *
- * USES T2, T3.
- *
- * CALLS C2D.
- CDA SUBR ENTRY/EXIT
- STD T3 SAVE DESTINATION ADDRESS
- SHN -14
- STD T2 SAVE DATA ADDRESS
- LDI T2 CONVERT FIRST 2 DIGITS
- SHN -6
- RJM C2D
- STI T3
- LDI T2 CONVERT SECOND 2 DIGITS
- RJM C2D
- STM 1,T3
- UJN CDAX RETURN
- ERRNG ERLB-* IF OVERFLOW INTO OVERLAY AREA
- * NOTE - THE FOLLOWING CODE MAY BE OVERLAID IF THE SPECIAL
- * ERROR MESSAGES OVERLAY IS REQUIRED OR IF AN ERPA CODE IS
- * PRESENT.
- CDN SPACE 4,15
- ** CDN - CONVERT DATA.
- * THIS ROUTINE CONVERTS 12-BIT HEX DATA TO DISPLAY CODE.
- *
- * ENTRY (A, 21 - 14 = 8-BIT BYTES TO CONVERT.
- * (A, 13 - 0) = SOURCE OF DATA TO CONVERT.
- * (T1) = STARTING NIBBLE POSITION (0, 1, OR 2).
- * (CN+3) = DESTINATION OF CONVERTED DATA.
- *
- * EXIT (CN+3) = UPDATED TO DESTINATION FOR NEXT CONVERTED
- * BYTE.
- *
- * USES CN+1, CN+2.
- *
- * CALLS CNN.
- CDN SUBR ENTRY/EXIT
- STD CN+1 STARTING ADDRESS OF DATA TO CONVERT
- SHN -14
- STD CN+2 8-BIT BYTES TO CONVERT
- CDN1 RJM CNN CONVERT NIBBLE
- SHN 6
- STI CN+3
- RJM CNN CONVERT NIBBLE
- RAI CN+3
- AOD CN+3 UPDATE POINTER TO DESTINATION ADDRESS
- SOD CN+2
- NJN CDN1 IF MORE BYTES TO CONVERT
- UJN CDNX RETURN
- CNN SPACE 5,15
- ** CNN - CONVERT NIBBLE.
- *
- * ENTRY (T1) = NIBBLE TO CONVERT (0, 1, OR 2).
- * (CN+1) = ADDRESS OF DATA TO CONVERT.
- *
- * EXIT (A) = DISPLAY CODE FOR NIBBLE.
- * (CN+1) = UPDATED TO ADDRESS OF NEXT BYTE TO CONVERT.
- * (T1) = UPDATED TO POSITION OF NEXT NIBBLE.
- *
- * USES T1, T2.
- CNN SUBR ENTRY/EXIT
- LDM CNNB,T1
- STM CNNA SET SHIFT INSTRUCTION
- LDI CN+1
- SHN 0
- CNNA EQU *-1 SHN -10, SHN -4, OR SHN 0
- LPN 17
- SBN 11
- ZJN CNN1 IF 9
- PJN CNN2 IF A - F
- CNN1 ADN 1R0+11 0 - 9
- CNN2 STD T2
- AOD T1 UPDATE NIBBLE POINTER
- SBN 3
- NJN CNN3 IF NO WRAP
- STD T1
- AOD CN+1 ADDRESS OF DATA TO CONVERT
- CNN3 LDD T2
- UJN CNNX RETURN
- CNNB CON 1067 SHN -10
- CON 1073 SHN -4
- CON 1000 SHN 0
- RUW SPACE 4,10
- ** RUW - READ UNIT DESCRIPTOR TABLE WORD.
- * USED TO READ UDT WHEN POSSIBLY NOT AT MAGNET CP.
- *
- * ENTRY (A) = UDT WORD.
- *
- * EXIT (CN - CN+4) = WORD READ.
- *
- * USES T1, CM - CM+4, CN - CN+4.
- *
- * MACROS DELAY, MONITOR, PAUSE.
- RUW2 LDD MA
- CRD CN
- RUW SUBR ENTRY/EXIT
- STD T1
- RUW1 LDM UADA
- ADD T1
- STD CM+4
- LDD HN REQUEST 1 WORD
- STD CM+3
- LDN 0 REQUEST READ FROM *MAGNET*
- STD CM+1
- LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
- STD CM+2
- MONITOR TDAM
- LDD CM+1
- LMN 1
- NJN RUW2 IF MOVE NOT IN PROGRESS
- PAUSE NE
- DELAY
- UJN RUW1 REISSUE REQUEST
- BDM SPACE 4,15
- ** BDM - BUILD MESSAGE.
- * THIS ROUTINE BUILDS THE ERROR LOG MESSAGES. (EXCEPT THE
- * DESCRIPTIVE MESSAGE IN THE 6TH LINE AND THE ERPA TEXT
- * MESSAGE.
- *
- * ENTRY (EC) = ERROR CODE.
- * (EI) = RETRY COUNT.
- *
- * USES T1, CM - CM+4.
- *
- * CALLS CDA, CDN, C2D, MCH, RUW, SCS.
- *
- * MACROS CHTE, SFA.
- BDM SUBR ENTRY/EXIT
- LDC CTAB MODIFY CHANNELS
- RJM MCH
- LDM //LOV
- STM CEM SET RETURN ADDRESS
- LDM TERM,EC
- STM CEMA SAVE TABLE ENTRY
- * MESSAGE BUILD.
- SFA EST,EO SET DEVICE TYPE IN MESSAGE LINES
- ADK EQDE
- CRD CM
- LDD CM+3
- RJM SCS SET CHARACTERS
- CHTE * SET CHANNEL NUMBER IN MESSAGE LINES
- LDN CH
- RJM C2D
- ADC 2*10000
- RJM SCS
- LDD CM+4 SET UNIT NUMBER
- SHN -3
- LPN 1
- RAM MESA+4
- LDD CM+4
- LPN 7
- SHN 6
- RAM MESA+5
- LDN /MTX/UVSN READ UP VSN
- RJM RUW
- LDD CN
- ZJN BDM1 IF VSN NOT SPECIFIED
- STM MESA+6
- LDD CN+1
- STM MESA+7
- LDD CN+2
- STM MESA+10
- BDM1 LDD FN
- SBN /MTX/WTF
- MJN BDM2 IF NOT WRITE OPERATION
- LDN 1RW-1RR CHANGE *RD* TO *WD*
- RAM MESA+11
- BDM2 LDN /MTX/UGNU GET EST ORDINAL WRITTEN ON
- RJM RUW
- LDD CN+1
- ZJN BDM3 IF EST NOT AVAILABLE
- SHN -6 CONVERT UPPER DIGIT OF EST ORDINAL
- ADC 2R 0
- STM MESA+13
- LDD CN+1 CONVERT LOWER TWO DIGITS OF EST ORDINAL
- RJM C2D
- STM MESA+14
- * MOVE GENERAL STATUS.
- BDM3 LDD DS
- SHN -6
- RJM C2D
- STM MESA+17
- LDD DS
- RJM C2D
- STM MESA+20
- LDM CTGS
- SHN -6
- RJM C2D
- STM MESA+21
- LDM CTGS
- RJM C2D
- STM MESA+22
- LDD DS
- SHN 21-13
- PJP BDM5 IF ALERT NOT SET
- LDM CTGS
- SHN 21-12
- MJN BDM4 IF UNIT CHECK
- LDC MESC+21
- STD CN+3 DESTINATION ADDRESS
- UJN BDM4.1 SAVE CCC STATUS
- * MOVE DETAILED STATUS.
- BDM4 LDN 0
- STD T1 FIRST NIBBLE
- LDC MESB+4
- STD CN+3 DESTINATION ADDRESS
- LDC 20D*10000+CTSD
- RJM CDN CONVERT FIRST 20 SENSE BYTES
- LDC MESC+4
- STD CN+3 DESTINATION ADDRESS
- LDC 12D*10000+CTSD+15
- RJM CDN CONVERT LAST 12 SENSE BYTES
- AOD CN+3 DESTINATION ADDRESS
- BDM4.1 LDN 0
- STD T1 FIRST NIBBLE
- LDC 6*10000+CTSD+26
- RJM CDN CONVERT ADAPTER STATUS
- LDM MESB+7
- STM MESD+6 SET ERPA CODE
- UJN BDM6 DO CONVERSION FOR LINE 5
- BDM5 LDC 2R. SHORTEN MESSAGE LINES WHEN NO STATUS
- STM MESB+7
- STM MESC+7
- LDN 0
- STM MESB+10
- STM MESC+10
- * CONVERSION FOR LINE 5.
- BDM6 LDD FN CONVERT SOFTWARE FUNCTION NUMBER
- RJM C2D
- STM MESE+4
- LDD EI CONVERT ERROR ITERATION NUMBER
- RJM C2D
- STM MESE+6
- LDC BL*10000+MESE+10 CONVERT BLOCK NUMBER
- RJM CDA
- LDC BL*10000+10000+MESE+12 CONVERT BLOCK NUMBER
- RJM CDA
- * CONVERSION FOR LINE 6.
- LDD EC SET ERROR CODE
- RJM C2D
- STM MESF+4
- LDD FM SET FORMAT
- SHN -6
- STD T1
- LDM BDMA,T1 SAVE FORMAT
- STM MESF+7
- LDD EC
- NJN BDM7 IF NOT RECOVERABLE ERROR
- LDN 1RR-1RI
- UJN BDM8 INDICATE RECOVERABLE MESSAGE
- BDM7 LDD EI
- SBN 2
- MJN BDM9 IF NOT UNRECOVERABLE
- LDN 1RU-1RI INDICATE UNRECOVERABLE MESSAGE
- BDM8 RAM MESF+10
- BDM9 LDD SP CHECK ERROR MESSAGE PROCESSING OPTION
- SHN 21-7
- PJN BDM10 IF USER DAYFILE MESSAGES ARE DISABLED
- LDD EC
- ZJN BDM11 IF RECOVERED MESSAGE
- LDD EI
- ZJN BDM11 IF FIRST ITERATION
- BDM10 LDC LPNI+0 DISABLE MESSAGE ISSUE
- STM CEMB
- BDM11 LJM BDMX RETURN
- BDMA CON 2RI I FORMAT
- CON 2RSI SI FORMAT
- CON 2RF F FORMAT
- CON 2RS S FORMAT
- CON 2RL L FORMAT
- CON 2RLI LI FORMAT
- SCS SPACE 4,10
- ** SCS - STORE CHARACTERS IN MESSAGE LINES.
- *
- * ENTRY (A, 17 - 12) = MESSAGE FIELD INDEX.
- * (A, 11 - 0) = CHARACTERS.
- *
- * USES T1.
- SCS SUBR ENTRY/EXIT
- STD T0 SAVE CHARACTERS
- SHN -14
- ADC MESA
- STD T1
- SCS1 LDD T0
- STI T1
- LDN MESB-MESA
- RAD T1
- ADC -MESL
- MJN SCS1 LOOP
- UJN SCSX RETURN
- CTAB SPACE 4,10
- * CHANNEL TABLE.
- CTAB CHTB CHANNEL TABLE
- ERRNG 2*473+ERLA+5-* ERROR PROCESSOR OVERFLOW
- OVERLAY (CTS SPECIAL MESSAGE PROCESSOR.),(ERLB+5),P,CSP
- CSP SPACE 4,10
- ** CSP - CTS ERRLOG MESSAGE SPECIAL PROCESSOR.
- * THIS OVERLAY IS CALLED FROM *CEM* FOR ERRORS WHICH
- * REQUIRE ADDITIONAL PROCESSING. SEE TABLE IN *CEM* FOR
- * LIST OF ERRORS WHICH REQUIRE THIS OVERLAY.
- *
- * ENTRY (/CEM/CEMA) = INDEX TO PROCESSOR.
- *
- * EXIT (/CEM/CEMA) = MESSAGE ADDRESS.
- *
- * CALLS BNP, CKR, ECN, FRE, FSC.
- ENTRY CSP
- CSP SUBR ENTRY/EXIT
- LDM /CEM/CEMA GET PROCESSOR INDEX
- STD T1
- LDM SPRI,T1
- STM CSPA
- RJM * PROCESS ERROR
- CSPA EQU *-1
- STM /CEM/CEMA SET MESSAGE ADDRESS
- UJN CSPX RETURN
- TITLE SPECIAL PROCESSORS.
- SPRI SPACE 4,10
- SPRI INDEX 0,//HNG
- INDEX /CEM/FRJM,FRE
- INDEX /CEM/WEOM,CKR
- INDEX /CEM/CRJM,ECN
- INDEX /CEM/BNEM,BNP
- INDEX /CEM/MAXM
- BNP SPACE 4,15
- ** BNP - BLOCK NUMBER PROCESSOR.
- *
- * ENTRY (BNEU) = ACTUAL BYTE LENGTH UPPER (LI FORMAT).
- * (BNEI) = ACTUAL BYTE LENGTH LOWER.
- * (BNEI+1 - BNEI+2) = ACTUAL BLOCK NUMBER.
- *
- * EXIT (A) = MESSAGE ADDRESS.
- *
- * USES CM.
- *
- * CALLS /CEM/CDA, /CEM/C2D.
- BNP SUBR ENTRY/EXIT
- LDD FM
- SHN -6
- LMN /MTX/TFLI
- NJN BNP1 IF NOT LI FORMAT
- LDM BNEU
- RJM /CEM/C2D CONVERT 2 DIGITS
- STM BNPA+1 SAVE UPPER 2 OF 6 DIGITS OF BLOCK LENGTH
- BNP1 LDM BNEI
- STD CM
- LDC CM*10000+BNPA+2 CONVERT EXPECTED LENGTH
- RJM /CEM/CDA
- LDM BNEI+1
- STD CM
- LDC CM*10000+BNPA+5
- RJM /CEM/CDA CONVERT BLOCK NUMBER
- LDM BNEI+2
- STD CM
- LDC CM*10000+BNPA+7
- RJM /CEM/CDA
- LDC BNPA SET MESSAGE ADDRESS
- UJP BNPX RETURN
- BNPA DATA C* L000000,B00000000.*
- CKR SPACE 4,10
- ** CKR - CHECK IF READY.
- * CLEARS LAST OPERATION WRITE FLAGS.
- *
- * EXIT (A) = MESSAGE ADDRESS.
- CKR3 LDC CKRC SET READY DROP MESSAGE
- CKR SUBR ENTRY/EXIT
- LDD UP CLEAR LAST OPERATION WRITE AND BLANK TAPE
- SCN 24
- STD UP
- LDD EC CHECK FOR READY DROP ERROR
- SBN /MTX/RDR
- ZJN CKR3 IF READY DROP ERROR
- LDM /PRESET/GPSB
- ZJN CKR1 IF WAIT EOP
- LDD DS
- LPN 2
- ZJN CKR1 IF NOT BUSY
- LDC CKRB SET UNIT BUSY MESSAGE
- UJN CKRX RETURN
- CKR1 LDC CKRA SET NO EOP MESSAGE
- UJN CKRX RETURN
- CKRA DATA C*NO EOP.*
- CKRB DATA C*BUSY.*
- CKRC DATA C*NOT READY.*
- ECN SPACE 4,10
- ** ECN - ERROR ON CONNECT.
- * MESSAGE IS ALTERED IF UNIT NOT TURNED OFF.
- *
- * EXIT (A) = MESSAGE ADDRESS.
- *
- * USES CM - CM+4.
- *
- * MACROS SFA.
- ECN2 LDC ECNA EXIT WITH MESSAGE ADDRESS
- ECN SUBR ENTRY/EXIT
- SFA EST,EO
- ADK EQDE
- CRD CM
- LDD CM
- LPN 3
- LMN /CPS/DWES
- ZJN ECN2 IF UNIT DOWNED
- LDN 0 ALTER MESSAGE
- STM ECNA+5
- UJN ECN2 RETURN
- ECNA DATA C*CON. REJ. DOWN.*
- FRE SPACE 4,10
- ** FRE - FUNCTION REJECT ERROR.
- * DIAGNOSES ERROR BY GIVING FUNCTION AND THE ADDRESS OF
- * THE ROUTINE THAT INITIATED THE CALL.
- *
- * EXIT (A) = MESSAGE ADDRESS.
- *
- * USES CM.
- *
- * CALLS /CEM/CDA.
- FRE SUBR ENTRY/EXIT
- LDM /PRESET/ICF GET ADDRESS OF CALLER
- STD CM
- LDC CM*10000+FREA+4
- RJM /CEM/CDA
- LDM /PRESET/ICFA CONVERT FUNCTION
- STD CM
- LDC CM*10000+FREA+1
- RJM /CEM/CDA
- LDC FREA SET MESSAGE ADDRESS
- UJN FREX RETURN
- FREA DATA C*FN0000,P0000.*
- ERRNG 1*473+ERLB+5-* ERROR PROCESSOR OVERFLOW
- OVERLAY (DROP PPU PROCESSOR.),,NOPRS,DPP
- DPP SPACE 4,10
- ** DPP - DROP CHANNEL AND PPU.
- * ALSO HANDLES ISSUE OF MESSAGE FOR ANY FUNCTION REJECTS
- * THAT COULD NOT BE DIAGNOSED WHEN THEY OCCURRED. IT IS NOT
- * ALWAYS POSSIBLE TO LOAD AN OVERLAY AND DIAGNOSE A FUNCTION
- * REJECT AND STILL MAINTAIN THE CONTROLLER OPTIONS AETC.
- *
- * CALLS DME, *EMM*, MCH.
- *
- * MACROS CALL, CHTE, DCHAN, MONITOR.
- ENTRY DPP
- DPP SUBR ENTRY/EXIT
- LDM HNG CHECK FOR *HNG* CALL
- ZJN DPP0 IF NORMAL DROP
- STM CM+4 SET (OR+4) = *HNG* CALLER
- MONITOR HNGM HANG PP
- DPP0 LDC CTAB MODIFY CHANNELS
- RJM MCH
- LDC DPP1 SET ADDRESS TO EXIT TO
- STM //LOV
- UJN DPPX RETURN
- DPP1 LDD HP
- SHN 21-7
- MJN DPP2 IF CTS
- LDM //FCNC
- NJN DPP2 IF NO DELAYED REQUEST
- LDM //.OVLR+3
- NJN DPP2 IF NO B.C. RESTART
- LDD DS SET STATUS
- STM //STER
- LDN /MTX/BCR
- STD EC
- CALL EMM CALL ERROR MESSAGE PROCESSOR
- DPP2 LDD IA RESET INPUT REGISTER
- CRD IR
- LDD RA
- SHN 6
- ADD IR+4
- ADK /MTX/CPST GET PROCESSOR STATUS
- CRD CM
- LDM UADA SET NEXT UDT TO PROCESS
- STD CM+4
- LDD CM
- LPC 3777 CLEAR *1MT* ACTIVE
- STD CM
- LDD RA
- SHN 6
- ADD IR+4
- ADK /MTX/CPST UPDATE PROCESSOR STATUS
- CWD CM
- CHTE *
- LDN CH DROP CHANNEL
- DCHAN
- MONITOR DPPM DROP PPU
- LJM PPR EXIT TO PP RESIDENT
- CTAB CHTB CHANNEL TABLE
- OVERLAY (CONTROL POINT/CODED PRESET.),(ERLA+5),P,CPP
- PRS SPACE 4,10
- ** PRS - CONTROL POINT/CODED PRESET.
- *
- * USES BT, FM, CM - CM+4, T1 - T5.
- *
- * CALLS CCD, UAD.
- PRS SUBR ENTRY/EXIT
- LDM //LOV SAVE ADDRESS TO EXIT AT
- STM CPP
- LDC PRS1 SET ADDRESS TO EXIT TO
- STM //LOV
- UJN PRSX RETURN
- PRS1 RJM CCD CHECK IF CODED
- LDC LDNI+1 SET ACTIVITY PROCESSED
- STM PNRE
- IFEQ TE,1 IF TRACE ENABLED
- RJM TRB SAVE TRACE INFORMATION IN CM
- ENDIF
- LDM CPP
- LMC PNRI
- NJN CPPX IF NOT CALLED FROM MAIN PROGRAM
- LDD BT SET ENTRY ADDRESS
- STM CPP
- LDD SC
- LPN 20
- NJN CPP1 IF CP CHANGE
- STD BT PRESET BLOCKS TRANSFERRED
- * LJM //LOVX RETURN (TO CALLER OF *LOV*)
- CPP SPACE 4,20
- ** CPP - CONTROL POINT OPERATION PRESET.
- *
- * ENTRY (CN) = ADDRESS OF LIST OF INSTRUCTIONS TO MODIFY.
- * (CN+4) = RELATIVE ADDRESS OF WORD IN FET (IN OR OUT).
- * THIS WORD WILL BE READ UP AND VALIDATED.
- *
- * EXIT CHANGED TO CORRECT CP.
- * (EI) = 0, ERROR ITERATION PRESET.
- * (CN - CN+4) = SELECTED FET WORD VALIDATED. (IF ERROR
- * EXITS TO *BAE*.)
- * (LNUM) = LEVEL NUMBER FOR OPERATION.
- * (FETO) = FET OPTIONS.
- * (CIOE) = EXTERNAL CIO CODE.
- *
- * USES BT, T8, T1 - T7, CM - CM+4, CN - CN+4.
- *
- * CALLS CAL, HNG, INM, SFP, UAD.
- *
- * MACROS MONITOR.
- ENTRY CPP
- CPP SUBR ENTRY/EXIT
- CPP1 LDD CN SAVE ADDRESS MODIFICATION POINTERS
- STM CPPB
- LDD CN+4
- STM CPPC
- RJM UAD READ UDT FET INFORMATION
- ADN /MTX/UCIA FET ADDRESS
- CRD T6-3
- ADN /MTX/UCIC-/MTX/UCIA FIRST, LIMIT, AND FL
- CRD T1
- ADN /MTX/UVRI-/MTX/UCIC GET EJT ORDINAL
- CRD CN
- LDN 0 PRESET BLOCKS TRANSFERRED COUNT
- STD BT
- LDD CN SAVE EJT ORDINAL
- STD T8
- SFA EJT SET EJT ADDRESS
- ADK JSNE
- CRD CM GET JOB STATUS
- ADK SCHE-JSNE
- CRD CN GET CP NUMBER
- LDD CM+4
- LPC 176
- LMN /EJT/EXJS*2
- NJN CPP2 IF JOB ROLLED OR ROLLING OUT
- LDD CN+3 SET CP NUMBER
- ADK /CPS/RCMS+/CPS/ALCS SET MOVE REJECT AND ALTERNATE CP
- STD CM+1
- MONITOR CCAM SET ACCESS TO USER CP
- LDD CM+1
- NJN CPP2 IF CHANGE NOT MADE
- AOM //CECB SET CP CHANGED FLAG
- LDD CP
- ADN TFSW VERIFY JOB EJT ORDINAL
- CRD CM
- LDD CM
- LMD T8
- ZJN CPP3 IF CORRECT JOB
- CPP2 LDN /MTX/RJB REQUEUE ON JOB ROLLED OUT
- LJM RET5 EXIT
- CPP3 LDD FL
- SBD T1
- PJN CPP6 IF NO FL REDUCTION
- * RECHECK BUFFER PARAMTERS.
- LDD .FE
- SHN 6
- ADD RA
- SHN 6
- ADD .FE+1
- ADN 1
- CRD CM
- LDD CM+3
- SHN -6
- ADD .FE+1
- ADN 4
- SHN 6
- ADD .FE
- SHN 14
- SHN -6
- SBD FL
- PJN CPP5 IF FET LWA .GT FL
- LDD .LM
- SHN 14
- LMD .LM+1
- SBN 1
- SHN -6
- SBD FL
- MJN CPP6 IF LIMIT .LT FL
- CPP5 LDN /MTX/BAE BUFFER ARGUMENT ERROR
- LJM RET3 RETURN ERROR CODE
- CPP6 RJM CAL CALCULATE PARAMETERS
- LDC * MODIFY INSTRUCTIONS
- CPPB EQU *-1
- RJM INM
- LDC *
- CPPC EQU *-1
- ZJN CPP7 IF NO FET POINTER CHECK
- RJM SFP SET FET POINTER
- NJN CPP5 IF BAD FET POINTER
- CPP7 LDD WC
- ADC -1001
- PJN CPP8 IF INCORRECT WORD COUNT
- LJM CPPX RETURN
- CPP8 RJM HNG HANG PP
- TITLE SUBROUTINES.
- CAL SPACE 4,15
- ** CAL - CALCULATE PARAMETERS.
- *
- * ENTRY (T1 - T5) = UCIC FROM UDT.
- * (.FT - .FT+1) = FIRST.
- * (.LM - .LM+1) = LIMIT.
- * (.FE - .FE+1) = FET ADDRESS.
- *
- * EXIT (.FT - .FT+1) = FIRST.
- * (.LM - .LM+1) = LIMIT.
- * (.FE - .FE+1) = FET ADDRESS.
- * (.LF - .LF+1) = LIMIT - FIRST.
- * (.BS - .BS+1) = BLOCK SIZE.
- * (BUFC - BUFC+4) = PRESET IF CONTROL WORD READ AND NOT
- * *LI* FORMAT.
- *
- * USES T1, .BS - .BS+1, .LF - .LF+1.
- CAL SUBR ENTRY/EXIT
- LDD .LM LIMIT - FIRST
- SBD .FT
- SHN 14
- ADD .LM+1
- SBD .FT+1
- STD .LF+1
- SHN -14
- STD .LF
- LDD MD SET MAXIMUM BLOCK SIZE
- SHN -4
- LPN 3
- ADD WC
- STD .BS+1
- LDN 0
- STD .BS
- LDD OV BLOCK SIZE = WC + OV*LBWD + CONTROL WORDS
- ZJN CAL2 IF NOT LONG BLOCK OPERATION
- STD T0
- CAL1 LDC /MTX/LBWD
- RAD .BS+1
- SHN -14
- RAD .BS
- SOD T0
- NJN CAL1 IF OVERFLOW COUNT NOT EXHAUSTED
- CAL2 LDD MD
- SHN -4
- LPN 3
- STD T1
- ZJN CAL4 IF NOT CONTROL WORD OPERATION
- LDD FN
- LMN /MTX/RDF
- NJN CAL4 IF NOT READ NORMAL BLOCK
- LDD FM
- SHN -6
- LMN /MTX/TFLI
- ZJN CAL4 IF LI FORMAT
- LDN ZERL
- CRM BUFC,ON PRESET CONTROL WORD
- LDD T1
- LPN 2
- ZJN CAL3 IF NOT 200 READ CODE
- LDD MD SET PARITY INDICATION
- LPC 100
- STM BUFC
- LDD .BS SET BLOCK SIZE
- SHN 14
- LMD .BS+1
- SBD T1
- CAL3 STM BUFC+1
- SHN -14
- RAM BUFC
- CAL4 LJM CALX RETURN
- INM SPACE 4,10
- ** INM - INSTRUCTION MODIFICATION.
- *
- * ENTRY (A) = FWA OF INSTRUCTION MODIFICATION LIST.
- *
- * USES SC, CM+4, CM+5.
- ENTRY INM
- INM SUBR ENTRY/EXIT
- ZJN INMX IF NO MODIFICATIONS
- STD SC
- INM1 LDI SC
- ZJN INMX IF END OF LIST
- SHN 21-0
- STD T1 SAVE INSTRUCTION ADDRESS
- SHN -21
- SHN 1 COMPLEMENT FLAG * 2
- LMC UJNI+3
- STM INMA
- LDI T1 PRESERVE INSTRUCTION OP CODE
- SCN 77
- STI T1
- LDM 1,SC EXTRACT DIRECT CELL TO REFERENCE
- SHN 14
- STD CM+4
- SCN 77 CLEAR DIRECT CELL ADDRESS
- SHN 3 EXTRACT BIAS
- STD CM+5
- SCN 7 CLEAR BIAS
- ADI CM+4 ADD UPPER PORITON OF VALUE
- PJN INM2 IF RELATIVE VALUE DESIRED
- SHN 6
- SCN 40 CLEAR ABSOLUTE FLAG
- ADD RA
- SHN 14
- INM2 SHN 14
- ADM 1,CM+4 ADD LOWER PORTION OF VALUE
- ADD CM+5 ADD BIAS
- * NOTE CODE SHOULD NOT BE ADDED IN NEXT THREE LINES.
- INMA UJN 3 COMPLEMENT NOT NEEDED
- * UJN 1 COMPLEMENT NEEDED
- LMC -0
- STM 1,T1 MODIFY INSTRUCTION
- SHN -14
- RAI T1
- LDN 2 INCREMENT TO NEXT ITEM IN LIST
- RAD SC
- LJM INM1 CONTINUE INSTRUCTION MODIFICATION
- SFP SPACE 4,10
- ** SFP - SET FET POINTER.
- *
- * ENTRY (A) = POINTER TO DESIRED FET WORD (IN OR OUT).
- *
- * EXIT (CN - CN+4) = FET POINTER.
- * (A) = 0, IF POINTER VALID.
- SFP1 LDN 1
- SFP SUBR ENTRY/EXIT
- STD T0
- LDD .FE READ DESIRED FET POINTER
- SHN 6
- ADD RA
- SHN 6
- ADD .FE+1
- ADD T0
- CRD CN
- LDD CN
- ADD CN+1
- ADD CN+2
- NJN SFP1 IF BAD POINTER
- LDD CN+3
- LPN 37
- STD CN+3
- SBD .FT CHECK AGAINST FIRST
- SHN 14
- ADD CN+4
- SBD .FT+1
- MJN SFP1 IF IN/OUT .GE. FIRST
- LDD CN+3
- SBD .LM
- SHN 14
- ADD CN+4
- SBD .LM+1
- PJN SFP1 IF IN/OUT NOT .LT. LIMIT
- LDN 0
- UJN SFPX RETURN
- TRB SPACE 4,25
- IFEQ TE,1 IF SAVING TRACE INFORMATION
- ** TRB - TRACE BUFFER.
- *
- * THE TRACE BUFFER STARTS AT BYTE ADDRESS 2000000(16). A
- * MODIFICATION TO *STL* AND SEVERAL OTHER DECKS MUST BE
- * EDITED ONTO THE DEADSTART TAPE TO DISABLE MEMORY BOUNDS
- * CHECKING. THE TRACE IS UPDATED WITH EACH CALL TO
- * *CPP* AND CONSISTS OF 2 CP WORDS PER TRACE AS FOLLOWS.
- * LOCATION 10 IS THE POINTER TO THE TRACE BUFFER. A MAXMIMUM
- * OF 16 MB WILL BE STORED IN THE TRACE BUFFER. THE BUFFER
- * WILL NOT WRAP. TO RESTART THE TRACE, JUST CLEAR LOCATION
- * 10.
- *
- * 0 - 12/EO, 12/FN, 12/BL+1, 12/DS, 12,EC
- * 1 - 12/PA, 12/PB, 12/HP, 12/MD, 12/FM
- *
- * NOTE - THIS CODE IS ONLY FOR CHECKOUT.
- *
- * USES T1 - T7.
- TRB SUBR ENTRY/EXIT
- LDD HP
- SHN 21-7
- PJN TRBX IF NOT CTS
- SRD T1 SAVE R REGISTER
- LDN 10
- CRD T3
- LDD T3
- ZJN TRB1 IF TRACE NOT STARTED
- LPN 10
- NJN TRBX IF TRACE BUFFER FULL
- UJN TRB2 MOVE EST ORDINAL
- TRB1 LDN 20 INITIALIZE TRACE START ADDRESS
- STD T3
- LDN 0
- STD T4
- STD T5
- TRB2 LRD T3
- LDD EO EST ORDINAL
- STM TRBB
- LDD FN FUNCTION NUMBER
- STM TRBB+1
- LDD BL+1 RIGHT-MOST 12 BITS OF BLOCK NUMBER
- STM TRBB+2
- LDD DS GENERAL STATUS
- STM TRBB+3
- LDD EC ERROR CODE
- STM TRBB+4
- LDD PA PARAMETER
- STM TRBB+5
- LDD PB PARAMETER
- STM TRBB+6
- LDD HP HARDWARE OPTIONS
- STM TRBB+7
- LDD MD MODES
- STM TRBB+10
- LDD FM FORMAT
- STM TRBB+11
- LDN 2
- STD T6
- LDD T5
- LMC 400000
- CWM TRBB,T6
- LDN 2
- RAD T5
- SHN -6
- RAD T4
- SHN -14
- RAD T3
- LDD T5
- LPN 77
- STD T5
- LDN 10
- CWD T3 UPDATE POINTER TO TRACE BUFFER
- LRD T1 RESTORE R REGISTER
- LJM TRBX RETURN
- TRBB BSS 12
- ENDIF
- CCD SPACE 4,15
- ** CCD - CHECK CODED REQUEST AND BUILD FORMAT PARAMETERS.
- *
- * ENTRY (SC) = FUNCTION TABLE ENTRY WHEN CALLED FROM RESIDENT.
- *
- * EXIT UNIT FORMAT PARAMETERS BUILT.
- * CORRECT BID ACCUMULATION LOOP MOVED TO RESIDENT.
- * UNIT CONNECTED OR FORMATED IF NECESSARY.
- * BLOCKS TO TRANSFER BEFORE DROP OUT SET FOR CTS.
- *
- * USES T1, T2, T3.
- *
- * CALLS CUI, DDR, /PRESET/RCU.
- CCD SUBR ENTRY/EXIT
- LDD MD
- SHN 21-6
- PJN CCD1 IF NOT CODED OPERATION
- LDD FM
- SHN -6
- LMN /MTX/TFSI
- NJN CCD1 IF NOT SI FORMAT
- LDD FN
- LMN /MTX/RLA
- ZJN CCD1 IF READ LABEL
- LMN /MTX/WLA&/MTX/RLA
- NJN CCD3 IF READ, WRITE OR SKIP
- CCD1 LDD HP
- SHN 21-7
- PJP CCD6 IF NOT CTS
- LDC -BLKC
- STM CDOC BLOCKS TO TRANSFER BEFORE DROP OUT
- * THE BLANK COMMAND WRITES LABELS WITH AN S FORMAT CODED
- * OPERATION. THE CTS SUBSYSTEM DOES NOT SUPPORT CODE
- * CONVERSION, SO THE DRIVER DOES SOFTWARE CONVERSION.
- LDD MD
- SHN 21-6
- PJN CCD4 IF NOT CODED
- LDD FN
- SBN /MTX/RDF
- ZJN CCD2 IF READ
- SBN /MTX/WTF-/MTX/RDF
- NJN CCD4 IF NOT WRITE
- CCD2 LDD FM
- SHN -6
- LMN /MTX/TFS
- ZJN CCD4 IF S FORMAT
- CCD3 LDN /MTX/SCI CODED I/O NOT SUPPORTED
- LJM RET3 RETURN ERROR CODE
- CCD4 LDM CPP
- LMC PNRI
- NJN CCD4.1 IF NOT CALLED FROM MAIN PROGRAM
- LDD FN
- LMN /MTX/WTF
- NJN CCD5 IF NOT DATA WRITE
- LDD SP
- LPC 100
- ZJN CCD5 IF COMPRESSED MODE WRITE NOT SELECTED
- SHN 7-6
- RAM /PRESET/CCUA SET COMPRESSED MODE
- ERRNZ F0220-F0020-200
- UJN CCD4.2 RECONNECT UNIT AND SET COMPRESSED MODE
- CCD4.1 LDM RELA
- NJN CCD5 IF CONNECTED
- CCD4.2 RJM /PRESET/RCU RECONNECT UNIT
- CCD5 UJP CCDX RETURN
- * REBUILD FORMAT PARAMETERS.
- CCD6 LDM CPP
- LMC //PNRI
- ZJN CCD8 IF CALLED FROM RESIDENT
- CCD7 LDM RELA CHECK IF CONNECTED
- NJN CCD5 IF CONNECTED
- LJM CCD14 RECONNECT UNIT
- CCD8 LDD SC
- SHN 21-5
- PJN CCD7 IF FUNCTION DOES NOT REQUIRE UNIT FORMATED
- LDD HP
- SHN 21-10
- PJN CCD9 IF NOT ISMT DEVICE
- LDC -BLKX BLOCKS TO TRANSFER BEFORE DROPOUT (ISMT)
- STM CDOC
- CCD9 RJM DDR SET DIRECTION FOR BID ACCUMULATION
- LDC LDNI+2 SET TO INPUT 2 WORDS OF DETAILED STATUS
- STM //STWE
- LDM MTSF BUILD FORMAT PARAMETERS
- LPC 4237
- STM MTSF
- LDM MTSF+1
- LPC 6740
- STM MTSF+1
- LDD HP PRESET A/D MODE FOR BINARY
- LPN 1
- SHN 5 SET PACKED MODE FOR 9 TRACK
- STD T1
- LDD MD CHECK FOR CODED OPERATION
- SHN 21-6
- MJN CCD10 IF CODED
- LDD T1
- NJN CCD12 IF NOT 7 TRACK
- LDC 3400 SET CONVERSION TABLE 7
- STD T1
- UJN CCD12 SET NOISE SIZE
- CCD10 LDD T1 SET EVEN PARITY IF 7 TRACK
- LMN 40
- SHN 4
- RAM MTSF+1
- LDM DNCV SET CONVERSION TABLE
- LPN 7
- ZJN CCD12 IF NO CONVERSION REQUEST
- SBN 1
- ZJN CCD11 IF BCD TYPE
- SBN 4-1
- CCD11 ADN 3
- SHN 10
- STD T1
- CCD12 LDD T1
- RAM MTSF
- LDD FM SET NOISE SIZE
- LPN 37
- STD T2
- SHN 1 NB*2
- STD T3
- LDD HP
- LPN 1
- ZJN CCD13 IF 7 TRACK
- LDD T2
- ADD T3 NB*3
- SHN -1 (NB*3)/2
- STD T3
- CCD13 LDD FM ADJUST NOISE SIZE IF FILL STATUS
- LPN 40
- SHN -5
- STD T1
- LDD T3
- SBD T1
- RAM MTSF+1
- LDD HP
- LPN 40
- NJN CCD14 IF MTS CONTROLLER
- LDC 4000
- STM MTSF+2
- LDM DNCV
- LPN 70
- LMN /MTX/D62*10
- NJN CCD14 IF NOT 6250 CPI
- LDD FN CHECK FUNCTION IN PROGRESS
- SBN /MTX/WTF
- MJN CCD14 IF NOT WRITE OPERATION
- LDD SP SET ERROR CORRECTION ENABLE/DISABLE (ATS)
- LPC 100
- SHN 4
- RAM MTSF+2
- CCD14 LDN 0 CLEAR CONNECTED FLAG
- STM //RELA
- RJM CUI FORMAT UNIT
- LJM CCDX RETURN
- DDR SPACE 4,10
- ** DDR - DETERMINE DIRECTION FOR BID ACCUMULATION.
- *
- * ENTRY (MD, 12 - 13) = 0 IF FORWARD DIRECTION.
- *
- * EXIT CORRECT BID ACCUMULATION ROUTINE MOVED TO RESIDENT.
- *
- * USES T1, T2.
- DDR SUBR ENTRY/EXIT
- LDD MD
- SHN -12
- ZJN DDR1 IF FORWARD DIRECTION
- LDC DDRB-DDRA SET REVERSE DIRECTION TABLE
- DDR1 ADC DDRA
- STD T1
- LDI T1
- LMM //UBWA
- ZJN DDRX IF CORRECT ROUTINE LOADED
- LDN 0
- STD T2
- DDR2 LDI T1 MOVE CODE
- STM UBWA,T2
- AOD T1
- AOD T2
- LMN //UBWAL
- NJN DDR2 IF MORE CODE TO MOVE
- UJN DDRX RETURN
- DDRA BSS 0 CODE FOR FORWARD ACCUMULATION
- LOC //UBWA
- AOD WP
- LPN 7
- STD WP
- LDM UBWB
- STM BIDW,WP
- LOC *O
- DDRAL EQU *-DDRA LENGTH OF OVERLAID CODE
- ERRNZ //UBWAL-DDRAL OVERLAID CODE NOT CORRECT LENGTH
- DDRB BSS 0 CODE FOR REVERSE ACCUMULATION
- LOC //UBWA
- LDN 4 SET UNAVAILABLE BID
- STM BIDW,WP
- SOD WP
- PJN UBWX IF NO UNDERFLOW
- LDN 7 RESET POINTER
- STD WP
- LOC *O
- DDRBL EQU *-DDRB
- ERRNZ //UBWAL-DDRBL OVERLAID CODE NOT CORRECT LENGTH
- USE BUFFER
- ERRNG 2*473+ERLA+5-* CPP OVERFLOW
- OVERLAY (USER JOB OPERATIONS.)
- PFN SPACE 4,20
- ** PFN - PROCESS FUNCTION REQUESTED.
- *
- *T, 12/ 1,12/ PFN,12/ 0,12/ PARAM,12/ FC
- *
- * FC FUNCTION CODE (SEE *COMSMTX*).
- ENTRY PFN
- PFN LDD PB
- SBN TFCNL
- MJN PFN1 IF VALID FUNCTION
- RJM HNG HANG PP
- PFN1 LDM TFCN,PB SET PROCESSOR ADDRESS
- STM PFNA
- LJM * PROCESS FUNCTION
- PFNA EQU *-1
- SPACE 4,10
- ** TFCN - TABLE OF FUNCTION PROCESSORS.
- TFCN INDEX
- INDEX /MTX/FNRW,RUL REWIND
- INDEX /MTX/FNUL,RUL UNLOAD
- INDEX /MTX/FNSD,SDF SET DENSITY IN UNIT FORMAT PARAMETERS
- INDEX /MTX/FNMX TERMINATE TABLE
- TFCNL EQU *-TFCN
- RUL SPACE 4,10
- ** RUL - REWIND OR UNLOAD UNIT.
- *
- * CALLS REU, RBL, WNB.
- RUL BSS 0 ENTRY
- RJM WNB WAIT NOT BUSY
- LDD HP
- SHN 21-7
- PJN RUL1 IF NOT CTS UNIT
- RJM RBL READ BUFFERED LOG
- RUL1 LDD PB
- LMK /MTX/FNRW
- ZJN RUL2 IF REWIND
- LDN 1 SET UNLOAD
- RUL2 RJM REU REWIND OR UNLOAD UNIT
- LJM RET1 RETURN
- SDF SPACE 4,10
- ** SDF - SET DENSITY IN UNIT FORMAT PARAMETERS.
- SDF BSS 0 ENTRY
- LDD HP
- SHN 21-7
- MJP RET1 IF CTS UNIT
- LDM MTSF+1
- LPC 7477
- STM MTSF+1
- LDD HP
- SHN 21-5
- MJN SDF1 IF MTS CONTROLLER
- SHN 21-0-21+5
- MJN SDF1 IF 9 TRACK
- LDM DNCV SET ATS 7 TRACK DENSITY
- SHN -3
- LPN 7
- LMN 3
- UJN SDF3 STORE DENSITY IN FORMAT PARAMETER
- SDF1 LDM DNCV
- SHN -3
- LPN 7
- SBN /MTX/D02
- ZJN SDF2 IF 200 BPI
- SBN 5-1
- SDF2 ADN 3
- SDF3 SHN 6
- RAM MTSF+1
- LJM RET1 RETURN
- SED SPACE 4,10
- ** SED - SET EQUIPMENT DEFINITIONS.
- *
- * CALLS DTS, LWR, REU, SDS, UAD.
- *
- * MACROS MONITOR, SFA.
- ENTRY SED
- SED SFA EST,EO SET EST ADDRESS
- ADK EQDE GET EQUIPMENT PARAMETERS
- CRD CN
- LDD HP
- SHN 21-7
- MJN SED1 IF CTS UNIT
- RJM DTS GET DETAILED STATUS
- LDM MTSF
- NJN SED1 IF NOT FIRST TIME PROCESSING
- LDD CN+4
- LPN 37 UNIT NUMBER
- ADC 4220
- STM MTSF SET FORMAT FLAGS AND UNIT NUMBER
- SED1 LDD DS
- SHN 21-0
- PJN SED3 IF NOT READY
- SHN 21-1-21+22
- PJN SED2 IF NOT BUSY
- LJM RET2 RETRY
- * FORCE TAPE TO LOAD POINT.
- SED2 LPN 1
- NJN SED3 IF AT LOAD POINT
- * LDN 0 SET REWIND
- RJM REU REWIND UNIT
- LDN /MTX/RBS REQUEUE ON UNIT BUSY
- LJM RET5 EXIT
- * PRESET MTS/ATS UNIT.
- SED3 LDD HP
- SHN 21-7
- MJP SED7 IF CTS UNIT
- LDD HP
- LPC 760 MASK CONTROLLER TYPE BITS
- STD HP
- LPN 20
- ZJN SED4 IF NOT ATS UNIT
- LDC 7440 MODIFY INSTRUCTIONS
- STM SEDA
- LDM ATUS DETERMINE IF GCR UNIT
- SHN 1
- LPN 20
- STD CM+4
- SHN -3
- RAD HP
- LDD CN ENSURE CORRECT *GCR* SETTING IN EST ENTRY
- LPN 20
- LMD CM+4
- ZJN SED4 IF NO CHANGE IN EST ENTRY
- LCN 20 SET MASK FOR GCR FLAG
- STD CM+3
- LDD EO SET EQUIPMENT NUMBER
- STD CM+1
- LDN /CPS/SB0S CHANGE BYTE 0 OF EST ENTRY
- STD CM+2
- MONITOR SEQM
- SED4 LDM MTSF
- LPC 4237
- STM MTSF
- LDC 7540
- * LDC 7440 (ATS CONTROLLER)
- SEDA EQU *-1
- STM MTSF+1
- LDD DS
- SHN -6
- LPN 1 SET 7/9 TRACK OPTION
- RAD HP
- LPN 1
- ZJN SED5 IF 7 TRACK
- LDC 6640 SET 1600 BPI
- STM MTSF+1
- LDC 400-1400 SELECT ANSI CONVERSION
- SED5 ADC 1400 SELECT BCD CONVERSION
- RAM MTSF
- LDD HP
- SHN 21-4
- PJN SED6 IF NOT ATS UNIT
- RJM LWR CHECK LOOP WRITE TO READ
- SED6 RJM SDS SET DRIVE SPEED
- LDD DS SET EST DEVICE TYPE
- LPC 100
- ADC 2RMT
- STD CM+3 SET CORRECT DEVICE MNEMONIC
- LMD CN+3
- ZJN SED7 IF NO MNEMONIC CHANGE
- LDD EO SET EQUIPMENT NUMBER
- STD CM+1
- LDN /CPS/SMNS CHANGE EQUIPMENT MNEMONIC IN EST
- STD CM+2
- MONITOR SEQM
- LDD LT TOGGLE BIT 1 OF DEVICE TYPE
- LMC 400
- ERRNZ /MTX/DVMT
- ERRNZ /MTX/DVNT-2
- STD LT
- * PRESET UDT.
- SED7 LDN 0
- STD BL
- STD BL+1
- STD UP
- STD LG
- STD LG+1
- STD EP
- STD EP+1
- STD SP
- STD WC
- STD OV
- LDD HP
- SHN 21-7
- PJN SED8 IF NOT CTS UNIT
- LDN 0
- STD WP
- SED8 LDC /MTX/TFF*100+4 SET FORMAT/NOISE FOR LABEL CHECK
- STD FM
- LDD LT
- LPC 700
- LMC 2000 SET LABELED FOR LABEL CHECK
- STD LT
- SHN -7
- LPN 3 TAPE DEVICE TYPE
- STD T1
- LDM TDCV,T1 SET INITIAL DENSITY AND CONVERSION MODE
- STM DNCV
- RJM UAD UPDATE *UST4* PARAMETERS
- ADN /MTX/UST4
- CWD LT
- LDD DS CHECK READY STATUS
- LPN 1
- NJN SED9 IF UNIT READY
- LDN /MTX/FRJ SET TO NOT ATTEMPT LABEL SCAN
- LJM RET3 RETURN ERROR CODE
- SED9 LJM RET1 RETURN
- TDCV SPACE 4,10
- ** TDCV - TABLE OF INITIAL DENSITY AND CONVERSION MODES.
- *
- * INDEXED BY TAPE DEVICE TYPE.
- *
- * ENTRY FORMAT -
- *
- * 6/0,3/ DN,3/ CV
- *
- * DN = INITIAL DENSITY.
- * CV = INITIAL CONVERSION MODE.
- TDCV INDEX
- INDEX /MTX/DVMT,/MTX/D08*10+/MTX/BCD
- INDEX /MTX/DVCT,/MTX/D380*10+/MTX/ANS
- INDEX /MTX/DVNT,/MTX/D16*10+/MTX/ANS
- INDEX /MTX/DVAT,/MTX/D380*10+/MTX/ANS
- INDEX /MTX/DVMX
- TITLE SUBROUTINES.
- LWR SPACE 4,15
- ** LWR - TEST WRITE/READ PATH TO ATS UNIT.
- *
- * ENTRY (DS) = GENERAL STATUS.
- * (ATUS - ATUS+5) = UNIT STATUS.
- *
- * EXIT TAPE UNLOADED AND UNIT DOWNED IF LOOP WRITE/READ TEST
- * FAILURE.
- *
- * USES CM+1, CM+2.
- *
- * CALLS CUI, DTS, *EMM*, ERR, FCR, REU, STW, UAD.
- *
- * MACROS CALL, MONITOR.
- LWR7 LCN /MTX/MOF-/MTX/CRJ ALTER ERROR FOR CONNECT REJECT
- RAM LWRA
- LJM LWR5 *OFF* UNIT
- LWR SUBR ENTRY/EXIT
- LDD DS SAVE STATUS FOR POSSIBLE MESSAGE
- STM //STER
- LPN 3
- LMN 1
- NJN LWRX IF UNIT NOT READY
- * RECHECK UNIT STATUS FOR MDI ERRORS. THESE ERRORS
- * MAY HAVE BEEN IGNORED AT INITIAL CONNECT TIME.
- * IF ANY ERRORS ARE PRESENT, PROCESS AS IF CONNECT REJECT.
- RJM DTS GET UNIT STATUS
- LDM MTDS CHECK STATUS
- SHN 21-12
- PJN LWR2 IF NO UNIT CHECK
- LDM ATUS+1
- LPC 216 LAMP,DSE,ERASE CURRENT,AIR PRESS. FAILURE
- NJN LWR7 IF ERRORS OTHER THAN RESET OR LOAD CHECK
- LDM ATUS+2
- LPN 30 AIR FLOW,THERMAL FAILURE
- NJN LWR1 IF MDI ERRORS
- LDM ATUS
- SHN 21-6
- PJN LWR2 IF NO WRITE CURRENT FAILURE
- LWR1 LJM LWR7 PROCESS CONNECT REJECT
- * ISSUE LOOP WRITE TO READ FUNCTION TO UNIT.
- LWR2 LDM ATUS+2 GET DETAIL STATUS WORD 13
- LPN 34 AIR FLOW,THERMAL,CLEANER NOT PARKED
- ZJN LWR2.1 IF NO PROBLEM
- LPN 30 AIR FLOW,THERMAL FAILURE
- NJN LWR1 IF MDI PROBLEM
- LDN /MTX/TCF-/MTX/MOF ALTER ERROR FOR TAPE CLEANER FAULT
- RAM LWRA
- LJM LWR4 PROCESS CLEANER NOT PARKED
- LWR2.1 LDN 0
- STM //RELA
- RJM CUI INSURE UNIT FORMATED
- LDM MTDS+5
- SHN 21-7
- MJN LWR4 IF WRITE CURRENT ON
- LDC 175 SET LOOP WRITE TO READ (LWR) MODE
- RJM FCR
- NJN LWR4 IF FUNCTION REJECT
- LDN 50 ISSUE WRITE FUNCTION
- RJM FCR
- NJN LWR4 IF FUNCTION REJECT
- ACN CH OUTPUT DATA
- LDD HN
- OAM BFMS,CH
- FJM *,CH
- NJN LWR3 IF ABNORMAL TERMINATION
- DCN CH+40
- LWR3 LDN 0 GET STATUS
- RJM STW
- STM //STER SAVE STATUS FOR POSSIBLE MESSAGE
- SHN 21-13
- MJN LWR4 IF ALERT SET
- LJM LWRX RETURN
- LWR4 LDN 1 UNLOAD TAPE
- RJM REU
- LWR5 LDD EO
- STD CM+1
- LDN /CPS/DWES SET DOWN STATUS
- STD CM+2
- MONITOR SEQM SET EQUIPMENT PARAMETER
- LWRA LDN /MTX/MOF ISSUE MESSAGE AND ABORT
- * LDN /MTX/CRJ (CONNECT REJECT)
- * LDN /MTX/TCF (TAPE CLEANER FAULT)
- RJM ERR
- RLB SPACE 4,15
- ** RBL - READ BUFFERED LOG.
- *
- * EXIT RECOVERED ERROR COUNTS UPDATED.
- *
- * USES T1, T3.
- *
- * CALLS ERR, /PRESET/GPS, /PRESET/ICF.
- RBL SUBR ENTRY/EXIT
- LDK F0312
- RJM /PRESET/ICF ISSUE READ BUFFERED LOG FUNCTION
- RBL1 ACN CH
- LDN 32D
- IAM RBLA,CH
- STD T3 WORDS NOT TRANSFERRED
- SFM RBL3,CH IF CHANNEL PARITY ERROR
- RBL2 LDN 0
- RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS
- MJN RBL1 IF COMMAND RETRY
- LDD T3
- ZJN RBL4 IF ALL BUFFERED LOG DATA RECEIVED
- RBL3 LDN /MTX/CMF
- RJM ERR PROCESS ERROR (NO RETURN)
- * INCREMENT WRITE ERROR COUNTER.
- RBL4 LDM RBLA+2
- LPN 17
- SHN 14
- ADM RBLA+3 TEMPORARY WRITE DATA CHECKS
- RAM ECNT+2
- SHN -14
- RAM ECNT+1
- LDM RBLA+6
- SHN -4
- STD T1
- LDM RBLA+5
- LPC 377
- SHN 10
- ADD T1 WRITE BLOCKS CORRECTED WITHOUT ERPA
- RAM ECNT+2
- SHN -14
- RAM ECNT+1
- * INCREMENT READ ERROR COUNTER.
- LDM RBLA+1
- SHN -10
- SHN 16
- ADM RBLA
- SHN 4 TEMPORARY READ DATA CHECKS
- RAM ECNT+4
- SHN -14
- RAM ECNT+3
- LDM RBLA+5
- SHN -10
- SHN 16
- ADM RBLA+4
- SHN 4 READ BLOCKS CORRECTED WITHOUT ERPA
- RAM ECNT+4
- SHN -14
- RAM ECNT+3
- LJM RBLX RETURN
- RBLA BSS 32D BUFFERED LOG DATA
- WNB SPACE 4,10
- ** WNB - WAIT NOT BUSY AND CHECK READY.
- * IF UNIT IS BUSY, THE REQUEST IS REQUEUED.
- * IF UNIT NOT READY AFTER TIMEOUT, EXIT WITH READY DROP.
- *
- * ENTRY (DS) = GENERAL STATUS.
- *
- * CALLS /PRESET/GPS, STW.
- WNB1 LDD HN SET DELAY
- STM WNBA
- WNB2 LDD DS
- LPN 1
- NJN WNBX IF UNIT READY
- LDD HP
- SHN 21-7
- PJN WNB4 IF NOT CTS
- WNB3 LDN 0 WAIT FOR END OF OPERATION
- RJM /PRESET/GPS GET AND PROCESS CTS GENERAL STATUS
- MJN WNB3 IF RETRY OCCURRED
- UJN WNB5 CHECK TIMEOUT
- WNB4 LDN 0
- RJM STW GET DEVICE STATUS
- WNB5 SOM WNBA
- NJN WNB2 IF NOT TIMEOUT
- LDN /MTX/RDR READY DROP
- LJM RET3 RETURN ERROR CODE
- WNB SUBR ENTRY/EXIT
- LDD DS
- LPN 2
- ZJN WNB1 IF NOT BUSY
- LDN /MTX/RBS REQUEUE ON UNIT BUSY
- LJM RET5 EXIT
- WNBA BSS 1
- TITLE HARDWARE SUBROUTINES.
- FCR SPACE 4,10
- ** FCR - PROCESS FUNCTION.
- *
- * ENTRY (A) = FUNCTION.
- *
- * EXIT (A) = 0, IF NO EXTERNAL REJECT.
- *
- * CALLS STC.
- FCR SUBR ENTRY/EXIT
- ADM FCNA ADD EQUIPMENT NUMBER FOR ATS/MTS
- FAN CH FUNCTION EQUIPMENT
- STM FCRA SAVE FUNCTION
- RJM STC STATUS CHANNEL
- UJN FCRX RETURN
- FCRA CON 0
- REU SPACE 4,10
- ** REU - REWIND/UNLOAD.
- *
- * ENTRY (A) = 0, REWIND.
- * (A) = 1, UNLOAD.
- *
- * EXIT BID WINDOW SET TO UNAVAILABLE.
- *
- * CALLS FCN, /PRESET/GPS, STW.
- REU SUBR ENTRY/EXIT
- SHN 6
- ADN F0010 ISSUE REWIND/UNLOAD
- ERRNZ F0110-F0010-100
- RJM FCN
- LDD HP
- SHN 21-7
- MJN REU2 IF CTS
- LDN 0 GET DEVICE STATUS
- RJM STW
- LDN 10 RESET BID WINDOW
- STD WP
- REU1 LDN 4
- STM BIDW-1,WP
- SOD WP
- NJN REU1 IF MORE BYTES TO SET
- UJN REU3 CLEAR BLOCK AND PRU COUNTER
- REU2 LDN 0 WAIT FOR END OF OPERATION
- RJM /PRESET/GPS GET AND PROCESS CTS GENERAL STATUS
- MJN REU2 IF RETRY
- REU3 LDN 0 CLEAR BLOCK AND PRU COUNTER
- STD BL
- STD BL+1
- STD EP CLEAR ERROR PARAMETERS
- STD EP+1
- STD EI
- LDD HP
- SHN 21-7
- PJN REU4 IF NOT CTS UNIT
- LDN 0
- STD WP
- REU4 LDD UP SET LAST BLOCK EOR/EOF
- SCN 10
- LMN 10
- STD UP
- UJP REUX RETURN
- SDS SPACE 4,25
- ** SDS - SET DRIVE SPEED FOR MTS/ATS UNITS.
- *
- * EXIT (HP, 2-3) = DRIVE SPEED.
- * FOR ATS AND MTS.
- * 0 = 100 IPS DRIVE.
- * 1 = 150 IPS DRIVE.
- * 2 = 200 IPS DRIVE.
- *
- * FOR FSC.
- * 0 = 75 IPS DRIVE.
- * 1 = 125 IPS DRIVE.
- * 2 = 200 IPS DRIVE.
- *
- * FOR CMTS.
- * 2 = 200 IPS DRIVE.
- *
- * FOR ISMT.
- * 3 = 25 IPS DRIVE.
- *
- * FOR CTS.
- * 0 = 79 IPS DRIVE.
- *
- * USES T1.
- SDS1 LPN 12
- ZJN SDS2 IF NOT FSC/CMTS/ISMT
- LPN 10
- ZJN SDS1.1 IF NOT ISMT
- LDN 3
- UJN SDS3 SAVE INDEX FOR ISMT
- SDS1.1 LDM ATUS SET FSC/CMTS DRIVE SPEED
- LPN 7
- SBN 3
- PJN SDS3 IF *STC* HAS VALID UNIT SPEED STATUS
- UJN SDSX SET DEFAULT DRIVE SPEED TO 75 IPS
- SDS2 LDM ATUS SET ATS DRIVE SPEED
- SHN -1
- LPN 3
- SBN 1
- ZJN SDS3 IF 100 IPS UNIT
- LMN 3
- SDS3 STD T1 SAVE INDEX
- LDM SDSA,T1 SET SPEED
- RAD HP
- SDS SUBR ENTRY/EXIT
- LDD HP
- SHN 21-4
- MJN SDS1 IF ATS-TYPE UNIT
- LDM MTDS+4 SET MTS DRIVE SPEED
- SHN -11
- LPN 3
- UJN SDS3 SET SPEED
- SDSA BSS 0
- CON 0 100 IPS DRIVE
- CON 4 150 IPS DRIVE
- CON 10 200 IPS DRIVE
- CON 14 25 IPS DRIVE (ISMT)
- USE BUFFER
- TADD TSAD ADDRESS TABLE
- ERROVL
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * CALLS MCH.
- PRS LDC CTAB MODIFY CHANNELS
- RJM MCH
- LDD HP
- SHN 21-7
- MJN PRS1 IF CTS UNIT
- LDN F0040 SET READ FUNCTION FOR MESSAGE
- STM ITMA
- PRS1 LDC TADD
- STD CN
- LJM PRSX EXIT
- CTAB CHTB CHANNEL TABLE
- OVERLAY (READ FUNCTION PROCESSOR.),,,READ
- .IM SET 2 GENERATE ADDRESSES FOR OVERLAYS
- STAP EQU PRSX STATUS PRIOR TO READ
- SKEI EQU PRSX+1 IF .NE. 0, SKIPEI OR POSMF IN PROGRESS
- WOCN EQU PRSX+2 WORD COUNT AT START OF OPERATION
- ISKR EQU PRSX+3 IF .NE. 0, SKIP REVERSE INSTEAD OF READ
- REVERSE
- RDF SPACE 4,10
- ** RDF - PROCESS READ OPERATION.
- *
- * CALLS FCN, ITM, MRD, TDA.
- ENTRY RDF
- RDF LDC 6 SELECT CLIP LEVEL
- RDFA EQU *-1
- RDFB RJM FCN
- * UJN *+2 (NORMAL CLIP LEVEL)
- * UJN *+2 (CTS)
- RJM ITM INITIATE TAPE MOTION
- RDF1 LDD DS SAVE DEVICE STATUS
- STM STAP
- RJM MRD READ TAPE
- RDFC RJM TDA TRANSFER DATA
- * LJM SKP2 (SKIP FORWARD)
- * LJM SKR4 (SKIP REVERSE)
- * LJM RLA6 (READ CTS LABELS)
- * LJM RLA6.1 (READ NON CTS LABELS)
- * LJM CLA4 (LABEL ERROR PROCESSING)
- RDFD UJN RDF1 LOOP
- * UJN RDF (200 IPS/9 TRACK OR 6250 BPI AT 1X PPU
- * SPEED OR 6250 BPI 200 IPS 2X PPU SPEED)
- TITLE READ - SUBROUTINES.
- MRD SPACE 4,10
- ** MRD - READ TAPE.
- * NO MODIFICATIONS SHOULD BE MADE WITHOUT CHECKING IMPACT ON
- * LONG BLOCK PROCESSING. IF CTS, THE FOLLOWING CODE IS
- * OVERLAYED WITH *RCT*.
- *
- * EXIT (TB) = TERMINATION STATUS.
- *
- * CALLS BCW, CDO, DTS, FCN, MCC, PDA, STW, UBW, VDA, WEO.
- *
- * MACROS SADT.
- MRD SUBR ENTRY/EXIT
- LDN 0 CLEAR ERROR CODE
- STD EC
- STD TB CLEAR TYPE OF BLOCK
- * INPUT DATA BLOCK.
- STM MRDP CLEAR NOISE FLAG
- MRD1 LDC 5005 SET BYTE COUNT FOR I FORMAT READ OR SKIP
- MRDA EQU *-1
- * LDC LBBY (READ LONG BLOCK FULL CHUNK)
- * LDC WC*5+1 (ALL OTHER READ DATA OPERATIONS)
- * LDC LABL+1 (READ LABELS)
- * LDC 5001 (SKIP - NOT LONG BLOCKS)
- * LDC LBBY (SKIP L FORMAT OR LONG BLOCK F FORMAT)
- * LDC SLBY (SKIP LI FORMAT)
- MRD3 IAM BUF,CH INPUT DATA
- MRDB EQU *-1
- * IAM BUFB,CH (READ LONG BLOCK)
- * IAM /RLA/BUF (READ LABEL)
- MRD4 STD T1
- NJN MRD6 IF NOT EXCESS BLOCK LENGTH
- LJM *+2
- * LJM /RLB/RLB5 (READ LONG BLOCKS)
- * LJM /RLB/RLB4 (READ LONG BLOCKS - CYBER 180)
- * LJM /SKP/SLB (SKIP LONG BLOCKS)
- MRDC EQU *-1
- MRD4.1 LDN /MTX/BTL SET BLOCK TOO LONG
- MRD5 RJM MCC MASTER CLEAR CHANNEL
- * LDN 0
- RJM STW GET GENERAL STATUS
- LDN 1 SET TO COMPUTE MAXIMUM BYTE COUNT
- STD T1
- MRD6 LDM MRDA CALCULATE REMAINDER OF CM WORD COUNT
- SBD T1
- STD BY BYTE COUNT READ
- STD SC SAVE ORIGINAL BYTE COUNT
- ZJN MRD7 IF NO DATA READ
- MRDD SBN 2 I FORMAT
- * PSN (SI FORMAT)
- * ADN 4 (ALL OTHER FORMATS)
- STD T2
- * CALCULATE WORD COUNT.
- SHN 1 13*BYTES
- ADD T2
- SHN 2
- ADD T2
- SHN 14 (-6) (13*BYTES)/64
- STD T0
- SHN 6+2 4*13*BYTES (52*BYTES)
- SBD T2 51*BYTES
- ADD T0 (51*BYTES)+((13*BYTES)/64)
- SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
- MRD7 STD WC
- MRDE LPN 3
- * LPN 1 (ATS UNIT)
- MRDF UJN MRD9 7 TRACK AND 9 TRACK CODED
- * ZJN MRD9 (9 TRACK I FORMAT)
- LMN 1
- NJN MRD8 IF NOT MODULO 4, 1
- MRDG SOD BY
- * PSN (ATS UNIT)
- MRD8 SOD BY
- * CHECK AND CONVERT DATA.
- MRD9 LDD EC
- LMN /MTX/BTL
- ZJN MRD10 IF BLOCK TOO LARGE ERROR
- RJM VDA VALIDATE DATA (I FORMAT)
- MRDH EQU *-2
- * UJN *+2 (ALL OTHERS)
- RJM CDO CHECK DROP OUT FLAG
- * PROCESS STATUS.
- MRD9.1 RJM WEO WAIT END OF OPERATION
- SHN 21-10
- MRDI PJN MRD10 IF NOT NOISE BLOCK
- * UJN MRD10 (ATS UNIT)
- AOM MRDP SET NOISE BYPASSED FLAG
- LDN 42 ISSUE REPEAT READ
- RJM FCN
- ACN CH
- LJM MRD1 REINITIATE READ
- MRD10 ZJN MRD11.2 IF NO ERRORS
- SHN 21-4-21+10
- PJN MRD11 IF NOT TAPE MARK
- LDN 3 SET STOP TO EOI
- STD TB
- LDN 17 SET LEVEL NUMBER
- STM LNUM
- LDN 0 CLEAR WORD AND BYTE COUNTS
- STD ES
- STD WC
- STD BY
- LDN /MTX/BEI SET EOI
- STD EC
- LJM MRD16 PROCESS DATA
- MRD11 LDD EC
- ZJN MRD11.1 IF ERROR NOT ALREADY ENCOUNTERED
- LDM MTDS
- LPC 7077
- MRDQ EQU *-1
- * LPC 7777 (ATS UNIT)
- ZJN MRD12 IF NOT FATAL ERROR
- MRD11.1 LDN /MTX/STE STATUS ERROR
- STD EC
- UJN MRD12 NO TAPE ERROR REPORTED FROM HARDWARE
- MRD11.2 LDM MTDS+1
- * UJN MRD12 (NON-GCR UNIT)
- MRDR EQU *-2
- SHN 21-11
- PJN MRD12 IF NO GCR SINGLE TRACK CORRECTION
- AOM ECNT+4 INCREMENT COUNTER
- SHN -14
- RAM ECNT+3 INCREMENT COUNTER FOR OVERFLOW
- * TRANSLATE ODD COUNT TO FILL STATUS.
- MRD12 LDD DS PROCESS ODD COUNT STATUS
- LPN 40
- MRDJ UJN MRD13 7 TRACK, 9 TRACK CODED OR ATS UNIT
- * SHN 0-5 (9 TRACK BINARY)
- ADD SC
- LPN 3
- ZJN MRD13 IF NO FILL STATUS
- LMN 3
- ZJN MRD13 IF (N*3)+1 FRAMES - NO FILL STATUS
- LDN 40 SET FILL STATUS
- MRD13 STD ES CLEAR FILL STATUS
- MRDK UJN MRD14 7 TRACK, 9 TRACK CODED, 9 TRACK I AND ATS
- * CORRECT BYTE COUNT AND CM WORD COUNT.
- * LDD DS (ALL OTHERS)
- LPN 40
- ZJN MRD14 IF NO ODD COUNT
- LDD BY
- LPN 2
- ZJN MRD14 IF NOT MODULO 4, 2 OR 3
- SOD BY CORRECT BYTE COUNT
- SOD WC CORRECT CM WORD COUNT
- MRDL UJN MRD14 SI FORMAT
- * SHN 2 (ALL OTHER FORMATS)
- ADD WC
- SBD BY
- ZJN MRD14 IF NEW CM WORD COUNT CORRECT
- AOD WC
- MRD14 UJN MRD15 NOT I OR 7 TRACK SI FORMAT
- * LDD ES (I OR 7 TRACK SI FORMAT)
- MRDM EQU *-1
- LPN 40
- ZJN MRD15 IF NO FILL STATUS
- LDD EC
- NJN MRD16 IF ERROR ALREADY ENCOUNTERED
- LDN /MTX/STE
- STD EC
- MRD15 LDD EC
- NJN MRD16 IF ERROR
- RJM UBW UPDATE BID WINDOW
- MRD16 LDD EC
- ZJN MRD17 IF NO ERRORS
- RJM DTS DETAIL STATUS
- * THIS MUST BE THE FIRST ADDRESS IN THE TSAD TABLE. PRESET
- * FOR CTS IS HARDCODED TO CHANGE THE FIRST ADDRESS IN THE
- * TABLE.
- SADT .FE,,6,A
- MRD17 LDC * SET FET+6 ADDRESS (FOR BCW)
- RJM PDA PROCESS DATA (I AND SI FORMAT)
- MRDO EQU *-2
- * RJM BCW BUILD CONTROL WORD ( S AND SOME F)
- * RJM /3M /BCW (L FORMAT AND LONG BLOCKS IN F FORMAT)
- * UJN MRD18 (NOT READ DATA)
- MRD18 LDD DS SAVE STATUS FOR ERROR PROCESSOR
- STM //STER
- LJM MRDX RETURN
- MRDP BSS 1 NOISE BYPASSED FLAG
- USE BUFFER
- OVLS BSS 0 OVERLAY ORIGIN FOR SKIP
- CIB SPACE 4,10
- ** CIB - CHECK INPUT BUFFER.
- *
- * ENTRY (CN - CN+4) = IN POINTER.
- *
- * EXIT (A) = WORD COUNT OF FREE BUFFER SPACE.
- *
- * MACROS SADT.
- CIB1 LDD CM+3 LENGTH = OUT - IN - 1
- SBD CN+3
- SHN 14
- ADD CM+4
- SBD CN+4
- SBN 1
- PJN CIBX IF (IN + 1) .LT OUT
- SADT .LF
- ADC * (LIMIT - FIRST)
- CIB SUBR ENTRY/EXIT
- SADT .FE,,3,A
- LDC * READ OUT
- CRD CM
- LDD CM+3
- LPN 37
- STD CM+3
- SHN 14
- LMD CM+4
- SADT .LM,C
- ADC -* (-LIMIT)
- MJN CIB1 IF OUT .LT. LIMIT
- LDN /MTX/BAE BUFFER ARGUMENT ERROR
- LJM RET3 RETURN ERROR CODE
- TDA SPACE 4,15
- ** TDA - TRANSFER DATA.
- * CALCULATES PARAMETERS FOR TRANSFER TO CENTRAL. IT ALSO
- * CHECKS IF TERMINATION CONDITION HAS NOT BEEN MET, THERE
- * IS NO ERROR, AND THE BUFFER WILL STILL HAVE ROOM FOR A
- * BLOCK AFTER THE CURRENT ONE IS TRANSFERRED, THEN MOTION IS
- * STARTED FOR THE NEXT BLOCK.
- *
- * ENTRY (TB) = STATUS OF BLOCK READ.
- * (CN - CN+4) = IN POINTER.
- * (WC) = WORD COUNT TO BE TRANSFERRED TO BUFFER.
- *
- * CALLS CIB, ITM, WCB.
- *
- * MACROS SADT.
- TDA SUBR ENTRY/EXIT
- LDD WC
- TDAA ADN 0 ALLOW FOR CONTROL WORDS
- * ADN 1 (260 READ NOT LONG BLOCKS)
- * ADN 2 (200 READ NOT LONG BLOCKS)
- * PSN (LONG BLOCKS - FLAG FOR OTHER OVERLAYS)
- STD T6
- * LABEL BUFFER - WILL OVERLAY REMAINDER OF *TDA*.
- LBUF EQU * BEGINNING OF LABEL BUFFER
- TDAB UJN TDA1 UPDATE FET POINTERS
- * PSN (READ SKIP)
- RJM CIB CHECK INPUT BUFFER
- SBD T6
- PJN TDA1 IF ROOM IN BUFFER FOR BLOCK
- RAD T6 ADJUST WORDS TO BE TRANSFERRED
- TDA1 LDD CN+3 SAVE IN
- STD T4
- LDD CN+4
- STD T5
- LDN 0 PRESET SECOND PART WORD COUNT
- STD T7
- LDD T6 UPDATE IN
- RAD CN+4
- SHN -14
- RAD CN+3
- SHN 14
- LMD CN+4
- SADT .LM,C
- ADC -* (-LIMIT)
- MJN TDA2 IF NO WRAP AROUND
- STD T7 SET SECOND PART WORD COUNT
- SADT .FT
- ADC * (FIRST)
- STD CN+4 RESET IN
- SHN -14
- STD CN+3
- LDD T6 RESET FIRST PART WORD COUNT
- SBD T7
- STD T6
- TDA2 LDD TB
- TDAC SBN 0 READ STOP CONDITION
- PJN TDA5 IF TERMINATION MET
- RJM CIB CHECK INPUT BUFFER
- SADT .BS,C
- TDAD ADC -* (- MAXIMUM BLOCK SIZE)
- TDAE MJN TDA4 IF NOT ROOM FOR NEXT BLOCK
- * PSN (READ-SKIP)
- SADT .BS,C
- ADC -* (-MAXIMUM BLOCK SIZE)
- SHN -21
- RAM WCBC
- LDD EP CHECK IF ERROR OR RECOVERY IN PROGRESS
- LPN 77
- ADD EC
- ADD DF CHECK DROP OUT FLAG
- NJN TDA3 IF DROP OUT OR ERROR CONDITION
- TDAF RJM ITM INITIATE TAPE MOTION
- * UJN *+2 (LONG BLOCKS / 200 IPS / GCR NOT 2X PPU)
- RJM WCB WRITE CENTRAL BUFFER
- LJM TDAX RETURN
- TDA3 RJM WCB WRITE CENTRAL BUFFER
- LJM RET2 REQUEUE
- TDA4 LDN 0 INDICATE NO COMPLETION
- STD TB
- UJN TDA6 TRANSFER DATA TO CM BUFFER
- TDA5 LDD WC
- NJN TDA6 IF DATA
- STD T6 DO NOT TRANSFER CONTROL WORDS
- LDD T4 BACK UP FET POINTER
- STD CN+3
- LDD T5
- STD CN+4
- TDA6 RJM WCB WRITE CENTRAL BUFFER
- TDAG UJN TDA7 COMPLETE FET
- * LDM LNUM (READSKP)
- CON LNUM
- TDAH SBN 0 LEVEL NUMBER DESIRED
- PJN TDA7 IF TERMINATION MET
- TDAI LDN 4 SET TO SKIP RECORD
- * LDN 10 (IF FILE SKIP REQUIRED)
- STD PB INDICATE TO MAGNET TO SKIP
- LDN /MTX/BEI
- LJM RET3 RETURN ERROR CODE
- TDA7 LDD TB
- ZJN TDA8 IF PRU READ COMPLETE OR BUFFER FULL
- LDD UP SET EOR/EOF FLAG
- SCN 10
- LMN 10
- STD UP
- LDD TB
- ADN 1 RETURN EOR/EOF
- SHN 3+4
- LMM LNUM MERGE LEVEL NUMBER
- SHN 16
- TDA8 ADN 1
- LJM RET SET FET COMPLETE
- ORLA EQU LBUF+CLBL+12 ORIGIN ADDRESS FOR READ LABEL OVERLAY
- WCB SPACE 4,15
- ** WCB - WRITE CENTRAL BUFFER.
- * WRITES DATA TO CENTRAL, THEN CHECKS IF ERROR MUST BE
- * PROCESSED. ERRORS INCLUDE TAPE MARKS AND EOT.
- * IF ERROR, THEN READ ERROR RECOVERY IS CALLED.
- *
- * ENTRY (T4 - T5) = IN POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * CALLS *CRE*, *REM*.
- *
- * MACROS CALL, SADT.
- WCB SUBR ENTRY/EXIT
- LDD T6
- ZJN WCB1 IF NO FIRST PART
- LDD T4 WRITE FIRST PART
- SHN 6
- ADD RA
- SHN 6
- ADD T5
- CWM BUF,T6
- WCBA EQU *-1
- * CWM BUFC,T6 (CONTROL WORD MODE)
- LDD T7
- ZJN WCB1 IF NO SECOND PART
- LDD T6 SET BUFFER ADDRESS
- SHN 2
- ADD T6
- ADM WCBA
- STM WCBB
- SADT .FT,,,A
- LDC * (FIRST+RA)
- CWM *,T7
- WCBB EQU *-1
- WCB1 LDD EP
- LPN 77
- ADD EC
- ZJN WCB2 IF NO ERROR ENCOUNTERED
- WCBF CALL REM LOAD READ ERROR PROCESSOR
- * CALL CRE LOAD ERROR PROCESSOR (CTS)
- SADT .FE,,2,A
- WCB2 LDC * UPDATE IN POINTER IN FET
- CWD CN
- WCBC LDN 0 RECALL CPU FLAG
- ZJN WCB3 IF NO RECALL CPU
- LDD OA RECALL CPU
- CWM WCBE,ON
- SOM WCBC
- WCB3 AOD BL+1 INCREMENT BLOCK COUNT
- SHN -14
- RAD BL
- AOD BT INCREMENT BLOCKS TRANSFERRED
- LJM WCBX
- WCBD EQU *-1
- * LJM RET4 (FATAL READ ERROR)
- WCBE CON DRCM DRIVER RECALL CPU MONITOR FUNCTION
- SPACE 4,10
- OVLB BSS 0 FWA OF OVERLAID CODE
- * WARNING ..........
- *
- * THE FOLLOWING ROUTINES CANNOT USE ADDRESS MODIFICATION.
- VDA SPACE 4,10
- ** VDA - VALIDATE DATA.
- * CHECKS I FORMAT TRAILER INFORMATION.
- VDA SUBR ENTRY/EXIT
- LDD BY
- ZJN VDAX IF NO DATA READ
- LDD EP
- SHN 21-12
- MJN VDAX IF OPPOSITE PARITY BEING TRIED
- LDM BUF-4,BY SAVE BLOCK LENGTH
- STM //BNEI
- LDM BUF-3,BY
- STM //BNEI+1
- LMD BL
- SHN 14
- LMM BUF-2,BY
- STM //BNEI+2
- LMD BL+1
- NJN VDA1 IF BLOCK NUMBER ERROR
- LDM //BNEI
- LMD BY
- ZJN VDAX IF CORRECT BLOCK LENGTH
- VDA1 LDN /MTX/BNE
- STD EC
- UJN VDAX RETURN
- PDA SPACE 4,10
- ** PDA - PROCESS DATA.
- * PROCESSES INTERNAL FORMAT LEVEL NUMBERS.
- *
- * (TB) = TERMINATION STATUS.
- PDA SUBR
- PDAA UJN PDA1 I FORMAT
- * LDD ES (SI FORMAT)
- LPN 40
- ZJN PDA1 IF NO FILL STATUS
- LDD WC
- ZJN PDA1 IF NOISE RECORD
- SOD WC DECREMENT WORD COUNT
- SOD BY DECREMENT BYTE COUNT
- PDA1 LDD BY
- ZJN PDA4 IF NO BYTES READ
- LMM MRDA
- PDAC EQU *-1
- * LMM RCTA (CTS)
- LMN 1
- STM BUFL SET 0 LEVEL NUMBER
- ZJN PDA3 IF FULL PRU
- LDM BUF-1,BY SET LEVEL NUMBER FOR CONTROL WORD
- LPN 17
- STM BUF-4,BY
- STM LNUM
- LMN 17
- ZJN PDA2 IF EOF
- LCN 1
- PDA2 ADN 2
- PDA3 STD TB SET BLOCK STATUS
- PDA4 LDD WC
- SHN 2
- PDAB ADD WC (200 READ)
- * LDD WC (260 READ)
- STM BUFC+4
- LJM PDAX
- .BCWA BSS 0
- BUF SPACE 4,10
- BUFFER
- BCW SPACE 4,10
- ** BCW - BUILD CONTROL WORD.
- * OVERLAYS *VDA* AND *PDA* FOR ALL FORMATS EXCEPT I AND SI.
- *
- * ENTRY (A) = ABSOLUTE ADDRESS OF FET+6.
- *
- * EXIT (FET+6) UPDATED IF NON-CONTROL WORD READ.
- *
- * USES CM - CM+4.
- .BCWB BSS 0
- LOC OVLB
- BCW6 LDD T1 SET UBC IN FET
- STD CM+2
- LDC *
- BCWG EQU *-2
- CWD CM
- BCW SUBR ENTRY/EXIT
- CRD CM READ FET+6
- STM BCWG+1 SAVE ADDRESS
- SHN -14
- LMC LDCI
- STM BCWG
- LDD WC CALCULATE UNUSED BIT COUNT
- SHN 2
- ADD WC
- STD T1
- ZJN BCW1 IF NO WORDS
- BCWA LDN 0 SET BLOCK STATUS
- * LDN 1 (S/L FORMAT NOT 200/260 CODE)
- STD TB
- LDN 0 SET LEVEL NUMBER
- STM BUF,T1
- STM LNUM
- BCW1 STD T1
- LDD WC
- BCWB EQU *-1
- * LDD BY (200 READ CODE)
- STM BUFC+4
- BCWC UJN BCW2 CALCULATE UNUSED BIT COUNT
- * SHN 2
- ADD WC
- SBD BY
- SHN 2 4 * UNUSED BYTE COUNT
- STD T1
- SHN 1 8 * UNUSED BYTE COUNT
- RAD T1 12 * UNUSED BYTE COUNT
- BCW2 LDD ES
- LPN 40
- BCWD ZJN BCW3 IF NO FILL STATUS
- * ZJN BCW5 (9 TRACK BINARY OR CTS)
- LDD WC
- ZJN BCW4 IF ZERO WORDS
- BCWE LDN 6 (7 TRACK OR 9 TRACK CODED)
- * LDN 8D (9 TRACK BINARY OR CTS)
- BCW3 RAD T1
- BCW4 STM BUFC+2
- LJM BCWX RETURN
- * LJM BCW6 (S/L FORMAT NON-CONTROL WORD READ)
- BCWF EQU *-1
- BCW5 LDD BY
- LPN 1
- SHN 2
- UJN BCW3 SET UNUSED BIT COUNT
- .BCWC BSS 0
- LOC *O
- .BCWL EQU *-.BCWB
- ERRNG .BCWA-.BCWC OVERLAID CODE OVERFLOW
- TITLE READ - PRESET.
- PRS SPACE 4,20
- ** PRS - PRESET.
- *
- * ENTRY FOR A READ FUNCTION THAT IS NOT LONG BLOCKS THIS
- * PRESET CODE RETURNS TO THE CALLER, LOADS AND
- * EXECUTES OVERLAY *CPP*, THEN ENTERS AT *PRS39.
- *
- * EXIT (WP, EP+1) PLUS THE BLOCK NUMBER IN (BL,BL+1) IS THE
- * PHYSICAL BLOCK NUMBER FOR CTS.
- * (SC) = 1 IF *RLB* MUST BE LOADED.
- * (SC) = 2 IF *RLI* MUST BE LOADED.
- * TO *RDF* IF READ FUNCTION AND NOT LONG BLOCKS.
- *
- * USES BT, CN, CN+4, SC, T1, T2, T8.
- *
- * CALLS CIB, MCH, /PRESET/RBI.
- *
- * MACROS ISTORE.
- *
- * NOTE OVERLAY *RLB* MUST IMMEDIATELY FOLLOW *READ* AND
- * OVERLAY *RLI* MUST IMMEDIATELY FOLLOW *RLB*.
- PRS LDD HP
- SHN 21-7
- PJN PRS0 IF NOT CTS
- LDD BL
- ADD BL+1
- NJN PRS0 IF STARTING BLOCK ID ALREADY SAVED
- RJM /PRESET/RBI READ BLOCK ID
- AOM /PRESET/PICA LOCATE BLOCK NECESSARY IN ERROR RECOVERY
- LDM BIDW+1
- STD WP SAVE CURRENT BLOCK ID
- LDM BIDW+2
- STD EP+1
- PRS0 LDD FM
- SHN -6
- STD T8 SET FORMAT
- LMN /MTX/TFLI
- NJN PRS0.1 IF NOT LI FORMAT
- LDD FN
- LMN /MTX/RDF
- NJN PRS0.1 IF NOT READ FUNCTION
- LDN 2
- RAD SC SET TO LOAD READ LI FORMAT OVERLAY
- LJM PRSX RETURN
- PRS0.1 LDD HP
- SHN 21-7
- PJN PRS0.2 IF NOT CTS
- LDC UJNI+2
- STM RDFB SKIP CLIP LEVEL FUNCTION
- LDC RCTA
- STM PDAC
- LDC LDNI+CRE/10000 CALL CTS ERROR PROCESSOR
- STM WCBF
- LJM PRS6 CONTINUE PRESET
- PRS0.2 LDC PRSD MODIFY CHANNELS
- RJM //MCH
- LDD HP
- LPN 20
- ZJN PRS1 IF MTS UNIT
- LDN 0 MODIFY INSTRUCTIONS FOR ATS CONTROLLER
- STM MRDG
- LCN 0
- STM MRDQ
- LCN 2
- RAM MRDE
- LDM PRSG
- STM PRSA
- LDC UJNI-PJNI
- RAM MRDI
- LDD HP
- SHN 21-1
- PJN PRS0.3 IF NOT GCR UNIT
- ISTORE MRDR,(UJN MRD12) DISABLE CORRECTED ERROR CHECK
- PRS0.3 LDM ATUS SET FOR DENSITY CHECK
- PRS1 STD T1
- LDD HP
- LPN 1
- NJN PRS2 IF 9 TRACK DRIVE
- LJM PRS9 CONTINUE PRESET
- * PRESET FOR MTS/ATS 9 TRACK OPERATION.
- PRS2 LDD T1 DETERMINE IF 6250 BPI
- LPN 30
- LMN 30
- NJN PRS3 IF NOT 6250 BPI
- LDM DLYA
- LPN 14
- ZJN PRS5 IF 1X PPU SPEED
- LPN 4
- ZJN PRS4 IF 2X PPU
- UJN PRS6 4X PPU, FULL MOTION AHEAD
- PRS3 LDM DLYA
- LPN 14
- NJN PRS6 IF 2X OR 4X PPU SPEED
- PRS4 LDD HP
- LPN 10
- LMN 10
- NJN PRS6 IF NOT 200 IPS UNIT
- PRS5 LDC UJNI+2 DISABLE MOTION AHEAD
- STM TDAF
- LDM PRSF
- STM RDFD
- PRS6 LDD MD
- SHN 21-6
- MJN PRS9 IF CODED
- * 9 TRACK BINARY.
- LDD HP
- LPN 20
- NJN PRS7 IF ATS CONTROLLER
- LDC SHNI+72
- STM MRDJ
- PRS7 LDD T8
- LMN /MTX/TFI
- ZJN PRS8 IF I FORMAT
- PRSA LDC LDDI+DS
- * UJN PRS9 (ATS CONTROLLER)
- STM MRDK
- LDD T8
- LMN /MTX/TFSI
- ZJN PRS9 IF SI FORMAT
- LDC SHNI+2
- STM MRDL
- UJN PRS9 SAVE WORD COUNT
- PRS8 LDC ZJNI-UJNI
- RAM MRDF
- LDC ZJNI-UJNI
- RAM RCTF+.RCT-RCTX (CTS)
- PRS9 LDD WC SAVE BEGINNING WORD COUNT
- STM WOCN
- LDD UP
- SCN 10 CLEAR EOR/EOF FLAG
- STD UP
- LDD FN
- LMN /MTX/RDF
- ZJN PRS11 IF READ
- LMN /MTX/SKP&/MTX/RDF
- ZJN PRS10 IF SKIP
- LDN /MTX/TFF PROCESS AS IF F FORMAT
- STD T8
- PRS10 LDC UJNI+MRD18-MRDO
- ERRNG MRDO-MRD18+37
- STM MRDO
- STM RCTL+.RCT-RCTX (CTS)
- PRS11 LDD MD
- LPN 60
- NJN PRS12 IF CONTROL WORD REQUEST
- LDD T8
- LMN /MTX/TFS
- ZJN PRS15 IF S FORMAT
- LMN /MTX/TFL&/MTX/TFS
- ZJN PRS15 IF L FORMAT
- UJN PRS13 CONTINUE PRESET
- PRS12 SHN -4 ALLOW SPACE FOR CONTROL WORDS
- RAM TDAA
- LCN BUF-BUFC RESET BUFFER WRITE ADDRESS
- RAM WCBA
- PRS13 LDD T8
- SBN /MTX/TFSI+1
- PJN PRS16 IF NOT I OR SI
- LDD MD
- LPN 40
- NJN PRS14 IF 200 READ
- LDC LDDI+WC
- STM PDAB
- PRS14 LJM PRS20 CONTINUE PRESET
- PRS15 AOM BCWA+.BCWB-OVLB SET TO RETURN EOR ALWAYS
- LDC BCW6 ENABLE RETURN OF MLRS
- STM BCWF+.BCWB-OVLB
- PRS16 LDN .BCWL-1 MOVE *BCW*
- STD T1
- PRS17 LDM .BCWB,T1
- STM OVLB,T1
- SOD T1
- PJN PRS17 IF STILL MORE CODE TO MOVE
- LDC BCW ENABLE CODE
- STM MRDO+1
- STM RCTL+1+.RCT-RCTX (CTS)
- LDD MD
- SHN 21-6
- MJN PRS18 IF CODED
- LDD HP
- SHN 21-7
- MJN PRS17.1 IF CTS
- SHN 21-0-21+7
- PJN PRS18 IF 7 TRACK
- PRS17.1 LDN BCW5-BCW3 MODIFY UBC CODE FOR 9 TRACK AND CTS
- RAM BCWD
- LDN 2
- RAM BCWE
- PRS18 LDD MD
- LPN 40
- NJN PRS19 IF 200
- LDC SHNI+2
- STM BCWC
- UJN PRS20 CONTINUE PRESET
- PRS19 LDC LDDI+BY
- STM BCWB
- PRS20 LDC TRSO
- STD T1
- LDN 0
- UJN PRS22 SET READ STOP CONDITION
- PRS21 LDN 2 ADVANCE TABLE
- RAD T1
- LDI T1
- ZJN PRS25 IF END OF TABLE
- PRS22 LMM CIOE
- LPC 774
- NJN PRS21 IF NOT MATCH
- AOD T1
- LDD T8
- LMN /MTX/TFS
- ZJN PRS23 IF S FORMAT
- LMN /MTX/TFL&/MTX/TFS
- NJN PRS24 IF NOT L FORMAT
- PRS23 LDI T1 SELECT S/L PORTION OF TABLE
- SHN -6
- STI T1
- PRS24 LDM LNUM
- SHN -10
- STD T2
- LMN 17
- NJN PRS25 IF NOT LEVEL 17
- LDI T1
- SHN -3
- STI T1
- LDN 10-4 SET FILE SKIP FOR *READSKP*
- RAM TDAI
- PRS25 LDI T1 SET STOP CONDITION
- LPN 3
- RAM TDAC
- LDM CIOE
- LPC 774
- LMN 20
- NJN PRS27 IF NOT READ SKIP
- STM TDAB
- STM TDAE
- LDC UJNI-PJNI
- RAM PRSC
- LDC LDMI
- STM TDAG
- LDD T2
- ZJN PRS27 IF LEVEL 0
- LMN 17
- ZJN PRS26 IF LEVEL 17
- LDD T8
- SBN /MTX/TFSI+1
- PJN PRS27 IF NOT I/SI FORMAT
- PRS26 LDD T2 SET LEVEL NUMBER
- RAM TDAH
- PRS27 LDD T8
- LMN /MTX/TFI
- ZJN PRS28 IF I FORMAT
- LDD WC SET BYTES TO READ
- SHN 2
- ADD WC
- ADN 1
- STM MRDA
- STM RCTA+.RCT-RCTX (CTS)
- LDC UJNI+2 DISABLE VALIDATE DATA
- STM MRDH
- STM RCTG+.RCT-RCTX (CTS)
- PRS28 LDD T8
- SBN /MTX/TFSI+1
- PJN PRS31 IF NOT I OR SI
- LDD HP
- SHN 21-7
- MJN PRS28.1 IF CTS
- SHN 21-0-21+7
- PJN PRS29 IF 7 TRACK
- PRS28.1 LDD T8
- LMN /MTX/TFSI
- ZJN PRS30 IF SI FORMAT
- PRS29 LDC LDDI+ES FORCE FILL STATUS TO ALWAYS BE ERROR
- STM MRDM
- LDC ZJNI-UJNI
- RAM RCTJ+.RCT-RCTX (CTS)
- UJN PRS31 CONTINUE PRESET
- PRS30 LDC LDDI+ES
- STM PDAA
- PRS31 LDD T8
- LMN /MTX/TFI
- ZJN PRS33 IF I FORMAT
- LMN /MTX/TFSI&/MTX/TFI
- ZJN PRS32 IF SI FORMAT
- LDC ADNI+4
- PRS32 STM MRDD
- STM RCTE+.RCT-RCTX (CTS)
- PRS33 LDN 40 SELECT READ FUNCTION
- STM //ITMA
- LDD HP
- SHN 21-7
- MJN PRS34 IF CTS
- LDC 4435
- STM //WEOA
- LDN 1
- STM //WEOB
- LDD EP SET CLIPPING LEVEL
- LPC 700
- ZJP PRS34.2 IF NORMAL CLIP LEVEL
- RAM RDFA
- UJP PRS35 CONTINUE PRESET
- * REPLACE *MRD* WITH READ ROUTINE *RTC* FOR CTS.
- PRS34 LDC .RCTL-1
- STD T1 LENGTH OF CODE TO MOVE
- PRS34.1 LDM .RCT,T1
- STM MRDX,T1
- SOD T1
- PJN PRS34.1 IF MORE CODE TO MOVE
- LDC .RCTA
- RJM MCH MODIFY CHANNEL INSTRUCTIONS
- * THE SADT MACRO FOR *MRD17* MUST BE THE FIRST ONE IN
- * THE OVERLAY.
- LDC RCTK*2
- STM PRSE
- LDC 6125 BITS TO TEST IN GENERAL STATUS
- STM /PRESET/WFEA
- LDN 1 BITS IN GENERAL STATUS THAT SHOULD BE SET
- STM /PRESET/WFEB
- LDD FN
- LMN /MTX/RDF
- NJN PRS35 IF NOT READ DATA
- LDD T8
- LMN /MTX/TFS
- NJN PRS35 IF NOT S FORMAT
- LDD MD
- SHN 21-6
- PJN PRS35 IF NOT CODED
- LDN CLBL+1
- STM RCTA LABEL LENGTH + 1
- UJN PRS35 SET TO MODIFY INSTRUCTIONS
- PRS34.2 LDC UJNI+2 DISABLE CLIP LEVEL SELECTION
- STM RDFB
- PRS35 LDC PRSE SET TO MODIFY INSTRUCTIONS
- STD CN
- LDN 2 SET TO FETCH IN POINTER
- STD CN+4
- LDC /SRU/ITRW*100 SET SRU INCREMENT
- STM //CECA
- LDD FN
- LMN /MTX/RDF
- NJN PRS38 IF NOT READ
- LDD OV
- ZJN PRS37 IF NOT POSSIBLE LONG BLOCKS
- LDD T8
- LMN /MTX/TFL
- ZJN PRS36 IF L FORMAT
- LMN /MTX/TFF&/MTX/TFL
- NJN PRS37 IF NOT F FORMAT
- PRS36 AOD SC SET TO LOAD LONG BLOCK OVERLAY
- PRS37 LDC PRS39 SET TO RETURN HERE IF READ DATA
- STD BT
- PRS38 LJM PRSX RETURN
- * RETURN HERE IF READ DATA, NOT LONG BLOCKS.
- PRS39 LDM TDAD SET BLOCK SIZE
- STM PRSB
- LDM TDAD+1
- STM PRSB+1
- RJM CIB CHECK INPUT BUFFER
- PRSB ADC -* (- MAXIMUM BLOCK SIZE)
- PRSC PJN PRS40 IF ENOUGH ROOM IN BUFFER
- * UJN PRS40 (READSKP)
- LDN 1
- LJM RET SET FET COMPLETE
- PRS40 LDN 0 PRESET EXIT CONDITION
- STD PB
- LJM RDF ENTER READ CODE
- PRSD CHTB
- * THE FIRST ENTRY IN THIS TABLE MUST BE FROM *MRD17*. CTS
- * PRESET CHANGES THE FIRST ENTRY.
- PRSE TSAD
- PRSF BSS 0
- LOC RDFD
- UJN RDF LOOP FOR NEXT BLOCK
- LOC *O
- PRSG BSS 0
- LOC PRSA
- UJN PRS9 CONTINUE PRESET
- LOC *O
- TRSO SPACE 4,10
- ** TRSO - TABLE OF READ STOP CODES.
- TRSO BSS 0
- CON 0,0000
- CON 10,0011
- CON 20,0011
- CON 200,2323
- CON 250,2222
- CON 260,2222
- CON 600,0033
- CON 0
- RCT SPACE 4,20
- ** RCT - READ CARTRIDGE TAPE.
- *
- * ENTRY AT *RCT2* FROM /RLB/CLB TO INPUT LAST CHUNK.
- * AT *RCT3* FROM /RLB/CLB IF *1LT* INPUT LAST CHUNK.
- * AT *RCT4* FROM */SKP/SLB* IF BLOCK TOO LONG.
- * AT *RCT5* FROM */SKP/SLB* IF BLOCK NOT TOO LONG.
- * AT *RCT5* FROM /RLB/CLB IF *1LT* COMPLETED TRANSFER.
- * AT *RCT6* FROM /RLB/CLB IF *1MT* COMPLETED TRANSFER.
- * AT *RCT13* FROM /RLA/RLA IF BACKSPACE.
- *
- * EXIT (EC) = ERROR CODE, 0 IF NO ERROR.
- * (TB) = TYPE OF BLOCK.
- * (WC) = WORD COUNT FOR TRANSFER TO CENTRAL.
- * (BY) = BYTES READ.
- * (ES) = 0 IF NO FILL STATUS.
- * TO */SKP/SLB* IF SKIP LONG BLOCK, NOT LAST CHUNK.
- * TO */RLB/CLB1* IF COMMAND RETRY FOR READ LONG BLOCK.
- *
- * USES T1, T2.
- *
- * CALLS BCW, *CCL*, CDO, /RLB/CRA, PDA, VDA, /PRESET/WFE.
- *
- * MACROS CALL, SADT.
- *
- * NOTE OVERLAY *RLI* READS CARTRIDGE TAPE FOR LI FORMAT.
- .RCT BSS 0
- LOC MRDX
- RCT SUBR ENTRY/EXIT
- RCT1 LDN 0 CLEAR ERROR CODE
- STD EC
- STD TB CLEAR TYPE OF BLOCK
- LDC 5005 SET BYTE COUNT FOR I FORMAT READ OR SKIP
- RCTA EQU *-1
- * LDC LBBY (READ LONG BLOCK FULL CHUNK)
- * LDC WC*5+1 (ALL OTHER READ DATA OPERATIONS)
- * LDC CLBL+1 (READ LABELS)
- * LDC 5001 (SKIP - NOT LONG BLOCKS)
- * LDC LBBY (SKIP L FORMAT OR LONG BLOCK F FORMAT)
- * LDC SLBY (SKIP LI FORMAT)
- RCT2 IAM BUF,CH INPUT DATA
- RCTB EQU *-1
- * IAM BUFB,CH (READ LONG BLOCK)
- * IAM /RLA/BUF,CH (READ LABEL)
- RCT3 STD T1
- NJN RCT6 IF NOT EXCESS BLOCK LENGTH
- LJM *+2
- RCTC EQU *-1
- * LJM /SKP/SLB (SKIP LONG BLOCKS AND SKIP LI FORMAT)
- * THROW AWAY DATA WHEN THE BLOCK IS TOO LONG. IF THE DATA
- * IS NOT TAKEN, OVERRUN ERRORS COULD OCCUR. ALSO, WITH A
- * CROSS-COUPLED CONTROLLER, THE CONTROLLER HUNG WITH CHLA
- * 030F FLASHING ON ITS ERROR DISPLAY.
- RCT4 LDC 500
- IAM ERLB,CH
- ZJN RCT4 IF THERE MAY BE MORE DATA
- LDN /MTX/BTL SET BLOCK TOO LONG
- STD EC
- LDN 1 SET TO COMPUTE MAXIMUM BYTE COUNT
- RCT5 STD T1
- RCT6 LDM RCTA CALCULATE REMAINDER OF CM WORD COUNT
- SBD T1
- STD BY BYTE COUNT READ
- * PROCESS STATUS.
- RJM /PRESET/WFE WAIT FOR END OF OPERATION
- PJN RCT8 IF NOT COMMAND RETRY
- LDN 0
- RCTD EQU *-1
- * UJN RCT7 (LONG BLOCK)
- UJN RCT6.1 SKIP CLEAR OF CHUNK COUNT
- RCTM EQU *-1
- * STM /SKP/IDFE (SKIP LI FORMAT)
- CON /SKP/IDFE
- RCT6.1 ACN CH
- LJM RCT1 READ THE DATA AGAIN
- RCT7 RJM /RLB/CRA READ *1LT* INTERFACE WORD
- NJN RCT7 IF *1LT* TRANSFER TO CM NOT COMPLETE
- ACN CH
- LDM /RLB/BCWC BACK UP POINTERS
- STD CN+3
- LDM /RLB/BCWD
- STD CN+4
- LJM /RLB/CLB1 RESEND THE DATA
- RCT8 STM RCTH
- LDD FN
- LMN /MTX/RDF
- NJN RCT10 IF NOT READ
- LDD MD
- SHN 21-6
- PJN RCT10 IF NOT CODED
- LDD BY
- ZJN RCT10 IF NO DATA READ
- LMN CLBL
- NJN RCT9 IF BLOCK TOO SHORT
- LDC LPNI
- STM RCTI TO INDICATE NO FILL STATUS
- CALL CCL CODE CONVERT LABEL
- LDN LABL LABEL LENGTH AFTER CONVERSION
- STD BY
- LDD DS
- LPN 40
- NJN RCT10 IF FILL STATUS
- RCT9 LDN /MTX/BTL BLOCK LENGTH ERROR
- STD EC
- RCT10 LDD BY
- ZJN RCT11 IF NO DATA READ
- SBN 2 I FORMAT
- RCTE EQU *-1
- * PSN (SI FORMAT)
- * ADN 4 (ALL OTHER FORMATS)
- STD T2
- * CALCULATE WORD COUNT.
- SHN 1 13*BYTES
- ADD T2
- SHN 2
- ADD T2
- SHN 14 (-6) (13*BYTES)/64
- STD T0
- SHN 6+2 4*13*BYTES (52*BYTES)
- SBD T2 51*BYTES
- ADD T0 (51*BYTES)+((13*BYTES)/64)
- SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
- RCT11 STD WC
- LPN 1
- UJN RCT12 CHECK AND CONVERT DATA (CODED)
- RCTF EQU *-1
- * ZJN RCT12 (I FORMAT)
- SOD BY
- * CHECK AND CONVERT DATA.
- RCT12 RJM VDA VALIDATE DATA (I FORMAT)
- RCTG EQU *-2
- * UJN *+2 ALL OTHER FORMATS
- RJM CDO CHECK DROP OUT FLAG
- LDC * ERROR STATUS FROM *WFE*
- RCTH EQU *-1
- RCT13 ZJN RCT15 IF NO ERROR
- SHN 21-4
- PJN RCT14 IF NOT TAPE MARK
- LDN 3 SET STOP TO EOI
- STD TB
- LDN 17 SET LEVEL NUMBER
- STM LNUM
- LDN 0 CLEAR WORD AND BYTE COUNTS
- STD ES
- STD WC
- STD BY
- LDN /MTX/BEI SET EOI
- STD EC
- UJN RCT16 PROCESS DATA
- RCT14 LDN /MTX/STE
- STD EC STATUS ERROR
- RCT15 LDD DS
- LPN 40
- RCTI EQU *-1
- * LPN 0 S FORMAT READ
- STD ES
- UJN RCT16 SET FET+6 ADDRESS
- RCTJ EQU *-1
- * ZJN RCT16 IF NO FILL STATUS (I FORMAT)
- LDN /MTX/STE
- STD EC STATUS ERROR
- * SADT .FE,,6,A
- RCT16 LDC * SET FET+6 ADDRESS (FOR BCW)
- RCTK EQU *-2
- RJM PDA PROCESS DATA (I AND SI FORMAT)
- RCTL EQU *-2
- * RJM BCW BUILD CONTROL WORD (S AND SOME F)
- * RJM /3M /BCW (L FORMAT AND LONG BLOCKS IN F FORMAT)
- * UJN RCT17 (NOT READ DATA)
- ERRNZ MRD18-MRDO-RCT17+RCTL IF MODIFYING WRONG ADDRESS
- RCT17 LJM RCTX RETURN
- ERRMI OVLS-*
- LOC *O
- .RCTL EQU *-.RCT LENGTH OF *RCT*
- .RCTA CHTB CHANNEL TABLE
- OVERLAY (READ LONG BLOCK PROCESSOR.),(BUFC+5),,RLB
- .IM SET 1 SET FOR ADDRESS MODIFICATION ON ERRORS
- RLB SPACE 4,10
- ** RLB - READ LONG BLOCK.
- *
- * CALLS ADP, /READ/CIB, CRA, FCN, ITM, /READ/MRD, SRQ,
- * /READ/TDA, WDA.
- *
- * MACROS SADT.
- ENTRY RLB
- RLB RJM /READ/CIB CHECK INPUT BUFFER
- SADT .BS,C
- ADC -* (-MAXIMUM BLOCK SIZE)
- RLBA PJN RLB1 IF ENOUGH ROOM IN BUFFER
- * UJN RLB1 READ SKIP
- LDN 1
- LJM RET SET FET COMPLETE
- RLB1 LDD CN+3 SAVE STARTING IN POINTER
- STM BCWC
- LDD CN+4
- STM BCWD
- * THE FOLLOWING CODE IS OVERLAYED WITH *CLB* FOR CTS.
- RLBB LDN 0 ALLOW FOR CONTROL WORDS
- * LDN 1 (200/260 READ CODE)
- RJM ADP
- LDN 0
- STM RLBH CLEAR SHUTDOWN ENABLED FLAG
- STM BCWA
- STM .BYC
- STD EC CLEAR ERROR CODE AND TERMINATION STATUS
- STD TB
- UJN RLB2 SET PCL
- * PSN (ATS NON-CYBER 180)
- RLBJ EQU *-1
- LDC NJNI+.RLB12-.RLBB RESET END-OF-BLOCK CHECK
- STM .RLBB
- RLB2 LDM /READ/RDFA SET PCL
- RLBC RJM FCN
- * UJN *+2 (NORMAL CLIP LEVEL)
- RJM ITM INITIATE TAPE MOTION
- LDN 0 SET UP POINTERS FOR *1LT*
- RJM ADP
- LDN 1 SEND REQUEST TO *1LT*
- RJM SRQ
- LDD DS SAVE DEVICE STATUS
- STM /READ/STAP
- LDC RLB5 SET EXIT ON END OF INPUT
- * LDC RLB4 (CYBER 180 IOU)
- RLBD EQU *-1
- STM /READ/MRDC
- LDC LBBY SET BYTE COUNT
- STM /READ/MRDA
- LJM RLB2.1 READ TAPE
- * LJM /READ/MRD3 (CYBER 180 - INITIATE INPUT)
- * LJM .RLB11 (ATS NON-CYBER 180 - INITIATE INPUT)
- RLBI EQU *-1
- RLB2.1 RJM /READ/MRD READ TAPE
- * RETURN FROM */READ/MRD*.
- RLB3 LDN 77 DELAY
- SBN 1
- NJN *-1
- RJM CRA SEE IF *1LT* PASSED CHUNK LENGTH
- NJN RLB3 IF *1LT* NOT DONE
- LJM RLB15 ACKNOWLEDGE *1LT*
- * CYBER 180 - ENTER HERE AT END OF INPUT OF A CHUNK OF DATA.
- RLB4 IJM RLB18,CH IF *1MT* FINISHED INPUT
- EJM RLB4,CH IF *1LT* NOT TAKING DATA YET
- CCF *,CH CLEAR CHANNEL FLAG
- UJN RLB6 COUNT DATA TRANSFERRED
- * ATS NON-CYBER 180 - ENTER HERE AT END OF INPUT OF A CHUNK.
- RLB5 IJM RLB18,CH IF *1MT* FINISHED INPUT
- EJM RLB5,CH IF *1LT* NOT TAKING DATA YET
- RLB6 AOM .BYC COUNT CHUNK
- LMN 1
- ZJN RLB7 IF FIRST CHUNK
- LDC /MTX/LBWD ADVANCE FOR *1LT* DATA
- RJM ADP
- AOM .BYC COUNT CHUNK
- RLB7 LDC /MTX/LBWD ADVANCE FET POINTER
- RJM ADP
- RJM WDA WRITE DATA
- LDM .BYC
- ADN 1
- SBD OV
- MJN RLB9 IF MORE FULL CHUNKS TO INPUT
- STM RLBH SET SHUTDOWN ENABLED IF ODD CHUNK COUNT
- NJN RLB8 IF ODD CHUNK COUNT
- LDD WC
- SHN 2
- ADD WC
- RLB8 ADN 1 SET AMOUNT TO INPUT
- STM /READ/MRDA
- RLBE LDC /READ/MRDC+1 REENABLE SHUT DOWN
- * LDC UJNI+.RLB14-.RLBB (ATS NON-CYBER 180)
- RLBF STM /READ/MRDC
- * STM .RLBB (ATS NON-CYBER 180)
- RLBG LDM RLBH
- * UJN .RLB9 (ATS NON-CYBER 180)
- NJN RLB12 IF *1LT* WILL FINISH INPUT
- LDM /READ/MRDA
- UJN RLB10 INPUT DATA
- * THE FOLLOWING CODE IS OVERLAID BY THE ATS INPUT LOOP IF ATS
- * ON A NON-CYBER 180, OR BY THE IOU INPUT LOOP ON A CYBER 180.
- .RLBA EQU * BEGINNING OF OVERLAID CODE
- RLB9 LDC LBBY SET TO INPUT FULL CHUNK
- RLB10 IJM RLB12,CH IF *1LT* FINISHED INPUT
- RLB11 EJM RLB10,CH IF *1LT* TAKING DATA
- EJM RLB10,CH IF *1LT* TAKING DATA
- EJM RLB10,CH IF *1LT* TAKING DATA
- EJM RLB10,CH IF *1LT* TAKING DATA
- FJM /READ/MRD3,CH IF TIME FOR *1MT* TO TAKE DATA
- UJN RLB11 WAIT FOR *1LT* TO COMPLETE
- BSS 7 PAD TO MAKE SAME LENGTH AS ATS INPUT LOOP
- .RLBAL EQU *-.RLBA LENGTH OF OVERLAID AREA
- RLB12 LDN 77 DELAY
- SBN 1
- NJN *-1
- RJM CRA SEE IF *1LT* PASSED CHUNK LENGTH
- NJN RLB12 IF *1LT* NOT DONE
- AOM BCWA SKIP UPDATE IN BCW
- LDC LBBY CALCULATE BYTES IN LAST CHUNK
- STM /READ/MRDA
- SBD CM+1
- STD T1
- LMC LBBY
- ZJN RLB13 IF *1LT* ENDED ON CHUNK BOUNDARY
- LDC 0
- RLBH EQU *-1
- ZJN RLB14 IF SHUTDOWN NOT ENABLED
- LDD WC SET BYTE COUNT ATTEMPTED TO READ
- SHN 2
- ADD WC
- ADN 1
- STM /READ/MRDA
- SBD CM+1
- LJM /READ/MRD4 DETERMINE IF BLOCK TOO LARGE
- RLB13 STD T1
- RLB14 LJM /READ/MRD6 EXIT
- * PROCESSING CONTINUES HERE AFTER EXIT FROM MRD.
- RLB15 LDD MD
- LPN 40
- ZJN RLB16 IF NOT 200 READ CODE
- LDN 0 SET TRAILER CONTROL WORD
- STM BUFB
- LDN 1
- RJM ADP
- RJM WDA WRITE TRAILER CONTROL WORD
- RLB16 LDN 0 SET WORD COUNT
- STD WC
- STD CM ACKNOWLEDGE *1LT*
- LDM CPDA
- ADN 2
- CWD CM
- LDD TB
- LMN 3
- NJN RLB17 IF NOT TAPE MARK
- LDM BCWC BACK UP POINTERS
- STD CN+3
- LDM BCWD
- STD CN+4
- RLB17 RJM /READ/TDA
- LDM SRQB RESTORE STARTING WORD COUNT
- STD WC
- LJM RLB LOOP
- RLB18 LDN 20 DELAY
- SBN 1
- NJN *-1 IF MORE DELAY
- RJM CRA CHECK *1LT* COMPLETE
- NJN RLB18 IF *1LT* NOT COMPLETE
- LJM /READ/MRD6 PROCESS READ COMPLETION
- .BYC CON 0 CHUNKS INPUT OF *LBBY* BYTES
- TITLE SUBROUTINES.
- ADP SPACE 4,15
- ** ADP - ADVANCE POINTER.
- *
- * ENTRY (CN+3 - CN+4) = IN POINTER.
- * (A) = WORDS TO INCREMENT IN BY.
- *
- * EXIT (T4 - T5) = STARTING IN POINTER.
- * (CN+3 - CN+4) = UPDATED IN POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * CALLS /READ/CIB.
- *
- * MACROS SADT.
- ADP SUBR ENTRY/EXIT
- STD T6
- RJM /READ/CIB CHECK INPUT BUFFER
- SBD T6
- PJN ADP1 IF ROOM IN BUFFER FOR BLOCK
- RAD T6 ADJUST WORD COUNT
- ADP1 LDD CN+3 SAVE IN
- STD T4
- LDD CN+4
- STD T5
- LDN 0 PRESET SECOND PART WORD COUNT
- STD T7
- LDD T6 UPDATE IN
- RAD CN+4
- SHN -14
- RAD CN+3
- SHN 14
- LMD CN+4
- SADT .LM,C
- ADC -* (-LIMIT)
- MJN ADPX IF NO WRAP AROUND
- STD T7 SET SECOND PART WORD COUNT
- SADT .FT
- ADC * (FIRST)
- STD CN+4
- SHN -14
- STD CN+3
- LDD T6 RESET FIRST PART WORD COUNT
- SBD T7
- STD T6
- LJM ADPX RETURN
- BCW SPACE 4,10
- ** BCW - BUILD CONTROL WORD.
- *
- * ENTRY (BCWA) = 0 IF *1MT* FINISHED INPUT.
- *
- * USES TB, T1, CM - CM+4.
- *
- * CALLS ADP, WDA.
- *
- * MACROS SADT.
- BCW SUBR ENTRY/EXIT
- LDC *
- BCWA EQU *-1
- NJN BCW2 IF *1LT* FINISHED INPUT
- LDM .BYC
- ZJN BCW1 IF FIRST PASS
- AOM .BYC COUNT *1LT* BLOCK
- LDC /MTX/LBWD
- RJM ADP
- BCW1 LDD WC TRANSFER LAST PART OF DATA
- RJM ADP
- RJM WDA WRITE DATA
- UJN BCW3 CHECK FOR TAPE MARK
- BCW2 LDD WC ADVANCE POINTER FOR *1LT*
- RJM ADP
- BCW3 LDD EC
- LMN /MTX/BEI
- ZJN BCW4 IF TAPE MARK
- LDM /READ/BCWA
- LPN 77
- STD TB
- LDN 0
- STM LNUM
- BCW4 STD T1
- LDD MD
- LPN 40
- NJN BCW5 IF 200 READ
- LDD WC 12 * UNUSED BYTES
- SHN 2
- ADD WC
- SBD BY
- SHN 2
- STD T1
- SHN 1
- RAD T1
- BCW5 LDD ES
- LPN 40
- BCWB ZJN BCW7 IF NO FILL STATUS
- * ZJN BCW6 (9 TRACK BINARY - IF NO FILL STATUS)
- LDD WC
- ADM .BYC
- ZJN BCW7 IF NO DATA READ
- LDM /READ/BCWE
- LPN 77
- UJN BCW7 ADJUST UNUSED BIT COUNT
- BCW6 LDD BY ADJUST UBC FOR ODD BYTE COUNT
- LPN 1
- SHN 2
- BCW7 RAD T1
- STM BUFC+2
- LDC LBBY
- STD T1
- LDD BY
- STM BUFC+4
- LDD MD
- LPN 60
- NJN BCW9 IF CONTROL WORD READ
- LDM BUFC+2
- STD T1
- LDD FM
- SHN -6
- LMN /MTX/TFL
- NJN BCW8 IF NOT L FORMAT
- SADT .FE,,6,A
- LDC * RETURN UBC TO FET
- CRD CM
- LDD T1 SET UBC
- STD CM+2
- SADT .FE,,6,A
- LDC *
- CWD CM
- BCW8 LJM BCWX RETURN
- BCW9 LPN 40
- NJN BCW10 IF 200 READ
- LDC /MTX/LBWD
- STD T1
- LDD WC
- STM BUFC+4
- BCW10 LDN 0
- STM BUFC+3
- LDM .BYC
- STD T0
- ZJN BCW12 IF NO PARTIAL BLOCKS
- BCW11 LDD T1 COUNT BYTES OR WORDS FOR EACH BUFFER FULL
- RAM BUFC+4
- SHN -14
- RAM BUFC+3
- SOD T0
- NJN BCW11 IF MORE BLOCKS TO COUNT
- BCW12 LDC * PUT CONTROL WORD IN BUFFER
- BCWC EQU *-1
- SHN 6
- ADD RA
- SHN 6
- ADC *
- BCWD EQU *-1
- CWM BUFC,ON
- LJM BCWX RETURN
- CPD SPACE 4,10
- ** CPD - CHECK PP (1LT) DROP OUT.
- *
- * ENTRY (CPDA) = PP INPUT REGISTER ADDRESS.
- *
- * EXIT (A) = 0, IF *1LT* STILL AROUND.
- *
- * MACROS CHTE.
- CPD SUBR ENTRY/EXIT
- LDC *
- CPDA EQU *-1
- CRD CM
- LDD CM+1
- SCN 77
- SHN 6
- LMD CM
- LMC 3RT1L
- ZJN CPD1 IF *1LT*
- SHN 14
- LMN 1R1
- NJN CPDX IF NOT *1LT* LOADING
- CPD1 LDD CM+3
- CHTE *
- LMN CH
- LPN 77
- UJN CPDX RETURN
- CRA SPACE 4,10
- ** CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
- *
- * EXIT (A) = 0 IF *1LT* COMPLETE.
- * (CM - CM+4) = REQUEST/RETURN WORD.
- CRA SUBR ENTRY/EXIT
- LDM CPDA
- ADN 2
- CRD CM
- LDD CM
- LMN 2
- UJN CRAX RETURN
- ITS SPACE 4,10
- ** ITS - INDICATE *1MT* TRANSFER STARTED.
- *
- * ENTRY (A) = BYTE COUNT.
- *
- * EXIT (A) = BYTE COUNT.
- ITS SUBR ENTRY/EXIT
- STD T0 SAVE BYTE COUNT
- LDM CPDA INDICATE *1MT* TRANSFER STARTED
- ADN 3
- CWD ON
- LDD T0 RESTORE (A)
- UJN ITSX RETURN
- SRQ SPACE 4,10
- ** SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
- *
- * ENTRY (A) = REQUEST CODE.
- * (T4 - T5) = POINTER.
- * (SRQB) = STARTING WORD COUNT.
- * (SRQC) = STARTING OV CONTENTS.
- *
- * USES T1, T2, T3, CM - CM+4.
- *
- * CALLS CPD, HNG.
- SRQ SUBR ENTRY/EXIT
- STD T1
- SRQA UJN SRQ1 NO CHANNEL FLAG PRESENT
- * PSN (CYBER 180)
- SCF *+2,CH SET CHANNEL FLAG
- LDM CPDA INDICATE *1MT* TRANSFER STARTED
- ADN 3
- CWD ON
- SRQ1 LDM CPDA CHECK *1LT* FUNCTION
- ADN 1
- CRD CM
- LDD CM
- LMN PRLM
- ZJN SRQ3 IF *1LT* PAUSING
- LDC * WORD COUNT
- SRQB EQU *-1
- STD T2
- LDC * CHUNK COUNT
- SRQC EQU *-1
- STD T3
- LDM CPDA ENTER REQUEST
- ADN 2
- CWD T1
- RJM CPD CHECK IF PP *L1T* DROPPED OUT
- ZJP SRQX IF *1LT* STILL AROUND
- RJM HNG HANG PP
- SRQ3 LJM RET2 REQUEUE REQUEST
- WDA SPACE 4,10
- ** WDA - WRITE DATA TO CENTRAL.
- *
- * ENTRY (T4 - T5) = IN POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * MACROS SADT.
- WDA SUBR ENTRY/EXIT
- LDD T6
- ZJN WDAX IF NO FIRST PART
- SHN 2
- ADD T6
- ADC BUFB
- STM WDAA
- LDD T4 TRANSFER FIRST PART
- SHN 6
- ADD RA
- SHN 6
- ADD T5
- CWM BUFB,T6
- LDD T7
- ZJN WDAX IF NO SECOND PART
- SADT .FT,,,A
- LDC * TRANSFER SECOND PART
- CWM *,T7
- WDAA EQU *-1
- UJN WDAX RETURN
- WTS SPACE 4,10
- ** WTS - WAIT FOR *1LT* TRANSFER TO START.
- *
- * ENTRY (A) = BYTE COUNT.
- *
- * EXIT (A) = BYTE COUNT.
- *
- * USES CM - CM+4.
- WTS3 LDD T0 RESTORE (A)
- WTS SUBR ENTRY/EXIT
- STD T0 SAVE BYTE COUNT
- WTS1 LDM CPDA CHECK *1MT*/*1LT* INTERLOCK
- ADN 3
- CRD CM
- LDD CM
- ZJN WTS3 IF *1LT* TRANSFER STARTED
- LDN 24 DELAY 10 MICROSECONDS
- WTS2 SBN 1
- NJN WTS2 IF NOT DONE
- UJN WTS1 CHECK INTERLOCK
- BUFFER SPACE 4,10
- BUFFER BUFB
- CALL SPACE 4,10
- .IM SET 0 DISABLE ADDRESS MODIFICATION ON ERRORS
- ** *1LT* CALL BLOCK.
- *
- *T 18/ 1LT,6/ CP,12/ 0,12/ CHANNEL,12/ PPIA
- *T, 12/ -0,24/ FIRST,24/ LIMIT
- CALL VFD 18/3R1LT,6/0
- CON 0 READ
- CHTE *
- CON CH CHANNEL
- CON 0 *1MT* INPUT REGISTER ADDRESS
- CON -0
- SADT .FT,,,,SE
- CON 0,0
- SADT .LM,,,,SE
- CON 0,0
- TITLE PRESET.
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * ENTRY AT *PRS10* AFTER OVERLAY *CPP* HAS BEEN LOADED AND
- * EXECUTED.
- *
- * EXIT TO *RLB* WHEN PRESET COMPLETE.
- *
- * USES T1, T4, T5.
- *
- * CALLS CEC, CPD, CRA, MCH, SRQ.
- *
- * MACROS MONITOR, PAUSE.
- PRS LDC UJNI+2 DISABLE READ AHEAD
- STM /READ/TDAF
- LDN 0 DISABLE ALLOWANCE FOR CONTROL WORDS
- STM /READ/TDAA
- LDC PRSC MODIFY CHANNELS
- RJM MCH
- LDD MD
- LPN 60
- ZJN PRS1 IF NO CONTROL WORDS
- AOM RLBB ALLOW FOR CONTROL WORD
- AOM .CLB+CLBA-CLB ALLOW FOR CONTROL WORD
- PRS1 LDD HP
- SHN 21-7
- PJN PRS3 IF NOT CTS
- ISTORE /READ/RCTD,(UJN /READ/RCT7) SET FOR COMMAND RETRY
- LDC BUFB
- STM /READ/RCTB
- LDC CLB14
- STM /READ/RCT RETURN ADDRESS FROM *RCT*
- LDC BCW
- STM /READ/RCTL+1
- LDC .CLBL-1 LENGTH OF CODE TO MOVE
- STD T1
- PRS2 LDM .CLB,T1
- STM CLB,T1
- SOD T1
- PJN PRS2 IF MORE CODE TO MOVE
- LDC .CLBA MODIFY CHANNELS
- UJP PRS5 CONTINUE PRESET
- PRS3 LDC BUFB
- STM /READ/MRDB
- LDC BCW
- STM /READ/MRDO+1
- LDM /READ/RDFB DISABLE PCL IF NORMAL CLIP LEVEL
- STM RLBC
- LDD HP
- LPN 60
- SHN 6
- RAM CALL+3 SET MTS/ATS FLAGS FOR *1LT*
- LDK MABL CHECK MAINFRAME TYPE
- CRD CM
- LDD CM+1
- SHN -6
- LPN 41
- LMN 1
- NJN PRS7 IF NOT CYBER 180 IOU
- * PRESET FOR CYBER 180 IOU.
- LDC RLB3 SET EXIT FROM /READ/MRD
- STM /READ/MRD
- LDC RLB4 SET EXIT FROM READ
- STM RLBD
- LDC /READ/MRD3 SET ENTRY ON INITIAL READ
- STM RLBI
- LDN RLBRL.-1 MOVE IOU LOOP
- STD T1
- PRS4 LDM RLBR.,T1
- STM .RLBA,T1
- SOD T1
- PJN PRS4 IF MORE CODE TO MOVE
- LDC RLBC. MODIFY CHANNELS
- PRS5 RJM MCH
- LDN PSNI
- STM SRQA
- PRS6 LJM PRS9 CONTINUE PRESET
- PRS7 LDD HP
- SHN 21-4
- PJN PRS6 IF MTS CONTROLLER
- * INITIALIZE DRIVER FOR ATS (NON-CYBER 180).
- LDC RLB3 SET EXIT FROM /READ/MRD
- STM /READ/MRD
- LDC .RLB11 MODIFY INSTRUCTIONS
- STM RLBI
- LDM PRSA
- STM RLBG
- LDC UJNI+.RLB14-.RLBB
- STM RLBE+1
- LDC .RLBB
- STM RLBF+1
- LDN PSNI
- STM RLBJ
- LDN .RLBRL-1 MOVE ATS INPUT LOOP
- STD T1
- PRS8 LDM .RLBR,T1
- STM .RLBA,T1
- SOD T1
- PJN PRS8 IF NOT END OF MOVE
- LDC .RLBC MODIFY CHANNELS
- RJM MCH
- PRS9 LDC PRSB SET FOR INSTRUCTION MODIFICATION
- STD CN
- LDC PRS10 SET TO RETURN CONTROL HERE AFTER LOAD
- STD BT
- LJM PRSX RETURN
- * RETURN HERE AFTER ALL ROUTINES LOADED.
- * BUILD CALL TO *1LT*.
- PRS10 LDD CP MERGE CP NUMBER
- SHN -7
- RAM CALL+1
- LDD IA SET INPUT REGISTER ADDRESS IN CALL
- STM CALL+4
- LDN CMCL CHECK MOVE FLAG
- CRD CM
- LDD CM
- SHN 7
- LMD CP
- ZJN PRS11 IF MOVE FLAG
- LDD MA WRITE REQUEST BLOCK
- CWM CALL,TR
- LDN 1 SET TO NOT QUEUE REQUEST
- STD CM+1
- MONITOR RPPM REQUEST PP
- LDD CM+1
- NJN PRS12 IF PP ASSIGNED
- PRS11 LJM RET2 REQUEUE
- PRS12 STM CPDA SAVE PP INPUT REGISTER ADDRESS
- PRS13 LDN 77 DELAY
- SBN 1
- NJN *-1
- LDD MA CHECK FOR *1LT* ACKNOWLEDGE
- ADN 1
- CRD CM
- LDD CM
- ZJN PRS15 IF *1LT* READY
- RJM CPD CHECK FOR *1LT* DROP
- NJN PRS11 IF *1LT* GONE
- LDN CMCL CHECK MOVE FLAG
- CRD CM
- LDD CM
- SHN 7
- LMD CP
- NJN PRS13 IF NO MOVE FLAG FOR THIS CP
- RJM CEC CHANGE BACK TO MAGNET CP
- PRS14 RJM CPD CHECK PP DROP
- NJN PRS11 IF *1LT* GONE
- PAUSE NE
- UJN PRS14 LOOP
- PRS15 LDD HP
- LPC 201
- ZJN PRS16 IF 7 TRACK
- LDD MD
- SHN 21-6
- MJN PRS16 IF CODED
- LCN BCW7-BCW6 SET TO ADJUST UBC IF ODD BYTE COUNT
- RAM BCWB
- PRS16 LDD WC SET WORD AND CHUNK COUNT FOR *1LT*
- STM SRQB
- LDD OV
- STM SRQC
- LDM CIOE
- LPC 774
- LMN 20
- NJN PRS17 IF NOT READ SKIP
- LDC UJNI-PJNI
- RAM RLBA
- RJM /READ/CIB
- MJN PRS18 IF BUFFER ARGUMENT ERROR
- STD T5
- SHN -14
- STD T4
- LDN 3 SET REQUEST TO *1LT*
- RJM SRQ
- PRS17 LDN 77 DELAY
- SBN 1
- NJN *-1
- RJM CRA SEE IF *1LT* ACCEPTED READ SKIP
- LMN 2
- NJN PRS17 IF *1LT* NOT DONE
- PRS18 LDC /SRU/ITRL*100 SET SRU INCREMENT
- STM //CECA
- LJM RLB ENTER READ TAPE
- * SEE *1LT* FOR FORMAT OF CALL BLOCK.
- PRSA BSS 0
- LOC RLBG
- UJN .RLB9 WAIT FOR *1LT* TO COMPLETE
- LOC *O
- PRSB TSAD SLBP
- PRSC CHTB
- TITLE PRESET SUBROUTINES.
- RLB SPACE 4,10
- ** ATS INPUT LOOP (NON-CYBER 180).
- .RLBR BSS 0
- LOC .RLBA
- .RLB9 AJM *,CH IF WAITING FOR *1LT* TO DCN CHANNEL
- LDM /READ/MRDA SET NUMBER OF BYTES TO INPUT
- .RLB10 IJM RLB12,CH IF *1LT* FINISHED INPUT
- EJM .RLB10,CH IF DATA NOT AVAILABLE
- .RLB11 IAM BUFB,CH INPUT DATA
- DCN CH+40 INDICATE TO *1LT* TO CONTINUE READ
- .RLBB NJN .RLB12 IF END OF BLOCK
- * UJN .RLB14 (SHUTDOWN ENABLED)
- ACN CH
- .RLB12 STD T1 SAVE BYTES REMAINING
- .RLB13 IJM RLB18,CH IF *1MT* FINISHED INPUT
- EJM .RLB13,CH IF *1LT* NOT TAKING DATA YET
- LJM RLB6 SETUP FOR NEXT CHUNK
- .RLB14 LJM /READ/MRD4 CHECK FOR BLOCK TOO LARGE
- LOC *O
- .RLBRL EQU *-.RLBR LENGTH OF ATS INPUT LOOP
- ERRNG .RLBAL-.RLBRL OVERLAID CODE OVERFLOWED
- .RLBC CHTB CHANNEL TABLE FOR ATS INPUT LOOP
- * READ LOOP FOR CYBER 180 IOU.
- RLBR. BSS 0
- LOC .RLBA
- RLB9. LDC LBBY BYTES TO INPUT
- ERRNZ RLB9.-RLB9 CODE DEPENDS ON VALUE
- RLB10. RJM WTS WAIT FOR *1LT* TRANSFER TO START
- ERRNZ RLB10.-RLB10 CODE DEPENDS ON VALUE
- RLB11. IJM RLB12,CH IF 1LT COMPLETED READ
- SCF RLB11.,CH WAIT UNTIL FLAG IS CLEARED BY 1LT
- RJM ITS INDICATE *1MT* TRANSFER STARTED
- LJM /READ/MRD3 PROCESS DATA
- LOC *O
- RLBRL. EQU *-RLBR. LENGTH OF IOU INPUT CODE
- ERRNG .RLBAL-RLBRL. IOU INPUT CODE TOO LONG
- RLBC. CHTB TABLE OF CHANNELS FOR IOU CODE
- CLB SPACE 4,15
- ** CLB - CTS LONG BLOCK READ.
- *
- * THIS ROUTINE OVERLAYS *RLB* STARTING AT *RLBB*.
- .CLB BSS 0
- LOC RLBB
- CLB LDD DS
- STM /READ/STAP SAVE GENERAL STATUS
- RJM ITM INITIATE TAPE MOTION
- CLB1 LDN 0 ALLOW FOR CONTROL WORD
- CLBA EQU *-1
- * LDN 1 200/260 READ CODE
- RJM ADP ADVANCE IN POINTER
- LDN 0
- STM BCWA
- STM .BYC CLEAR CHUNK COUNT
- STD EC CLEAR ERROR CODE
- STD TB CLEAR TERMINATION STATUS
- * LDN 0
- RJM ADP SET UP POINTERS FOR *1LT*
- LDN 1
- RJM SRQ SEND START BLOCK REQUEST TO *1LT*
- LDC LBBY
- STM /READ/RCTA
- IAM BUFB,CH
- UJN CLB4 CHECK IF ALL WORDS TRANSFERRED
- CLB2 LDC LBBY
- STM /READ/RCTA
- RJM WTS WAIT FOR *1LT* TRANSFER TO START
- CLB3 IJM CLB8,CH IF TRANSFER COMPLETE
- SCF CLB3,CH IF *1LT* NOT FINISHED
- RJM ITS INDICATE *1MT* TRANSFER STARTED
- IAM BUFB,CH
- CLB4 NJN CLB6 IF TRANSFER COMPLETE
- CLB5 FJM CLB9,CH IF A WORD IS PRESENT FOR *1LT* TO TRANSFER
- AJM CLB5,CH IF TRANSFER NOT COMPLETE
- * *1MT* FINISHED THE CHANNEL TRANSFER.
- CLB6 STD T1 SAVE WORDS NOT TRANSFERRED
- CLB7 RJM CRA READ *1LT* INTERFACE WORD
- NJN CLB7 IF *1LT* NOT COMPLETE
- LJM /READ/RCT6 CALCULATE REMAINDER OF CM WORD COUNT
- * *1LT* FINISHED THE CHANNEL TRANSFER.
- CLB8 RJM CRA READ *1LT* INTERFACE WORD
- NJN CLB8 IF *1LT* TRANSFER TO CM NOT COMPLETE
- AOM BCWA SKIP UPDATE IN *BCW*
- LDC LBBY
- SBD CM+1
- LJM /READ/RCT5 CALCULATE REMAINDER OF CM WORD COUNT
- CLB9 CCF *,CH CLEAR CHANNEL FLAG (TELL *1LT* TO START)
- AOM .BYC COUNT CHUNK
- LMN 1
- ZJN CLB10 IF FIRST CHUNK
- LDC /MTX/LBWD
- RJM ADP ADVANCE POINTER FOR *1LT* DATA
- AOM .BYC COUNT CHUNK
- CLB10 LDC /MTX/LBWD
- RJM ADP ADVANCE POINTER
- RJM WDA WRITE DATA TO CM
- LDM .BYC
- ADN 1
- SBD OV
- MJP CLB2 IF MORE CHUNKS TO INPUT
- NJN CLB12 IF *1LT* IS READING LAST CHUNK
- LDD WC
- SHN 2
- ADD WC
- ADN 1
- STM /READ/RCTA LENGTH TO READ + 1
- CLB11 IJM CLB8,CH IF *1LT* FINISHED TRANSFER
- SCF CLB11,CH IF *1LT* STILL READING
- LJM /READ/RCT2 INPUT LAST CHUNK
- CLB12 RJM CRA READ *1LT* INTERFACE WORD
- NJN CLB12 IF *1LT* NOT DONE
- AOM BCWA SKIP UPDATE IN *BCW*
- LDD WC
- SHN 2
- ADD WC
- ADN 1
- STM /READ/RCTA
- SBD CM+1
- LJM /READ/RCT3 SAVE BYTES NOT TRANSFERRED
- * *RCT* RETURNS HERE AFTER LAST CHUNK IS TRANSFERRED.
- CLB14 LDD MD
- LPN 40
- ZJN CLB15 IF NOT 200 READ CODE
- LDN 0 SET TRAILER CONTROL WORD
- STM BUFB
- LDN 1
- RJM ADP
- RJM WDA WRITE TRAILER CONTROL WORD
- CLB15 LDN 0 SET WORD COUNT
- STD WC
- STD CM ACKNOWLEDGE *1LT*
- LDM CPDA
- ADN 2
- CWD CM
- LDD TB
- LMN 3
- NJN CLB16 IF NOT TAPE MARK
- LDM BCWC BACK UP POINTERS
- STD CN+3
- LDM BCWD
- STD CN+4
- CLB16 RJM /READ/TDA
- LDM SRQB RESTORE STARTING WORD COUNT
- STD WC
- LJM RLB LOOP
- ERRMI .BYC-* IF CODE OVERFLOWS
- LOC *O
- .CLBL EQU *-.CLB LENGTH OF *CLB*
- .CLBA CHTB CHANNEL TABLE
- OVERLAY (READ LI FORMAT.),,,RLI
- .IM SET 0 GENERATE ADDRESSES FOR OVERLAY
- RLI SPACE 4,20
- ** RLI - READ LI FORMAT.
- * THIS ROUTINE READS CONSECUTIVE BLOCKS AS LONG AS THERE IS
- * ROOM IN THE BUFFER. ROUTINE *EBP* WILL STOP THE READ OF
- * CONSECUTIVE BLOCKS IF THE TERMINATION CONDITION HAS BEEN
- * MET, AN UNRECOVERABLE ERROR HAS OCCURRED, OR THE DROP OUT
- * BLOCK COUNT HAS BEEN MET. *WDA* TRANSFERS ALL DATA READ
- * IN THE 1ST, 3RD, ... CHUNKS. *UIP* UPDATES THE IN POINTER
- * IN THE FET. FOR A 200 READ *VDA* WRITES THE INITIAL CONTROL
- * WORD AND THE TRAILER CONTROL WORD IS WRITTEN IN *RLI*. IF
- * THE TAPE IS ATS, MOST OF THIS ROUTINE IS OVERLAYED BY *ALI*.
- *
- * ENTRY (CN+3,CN+4) = STARTING IN POINTER.
- *
- * EXIT TO *RET* IF NOT ENOUGH ROOM IN BUFFER.
- *
- * USES CM, CN+3, CN+4, EC, T1.
- *
- * CALLS ADP, CDO, CIB, CRA, EBP, ITM, ITS, SRQ, UCP, VDA,
- * WDA, WTS, /PRESET/WFE.
- *
- * MACROS SADT.
- RLI RJM CIB CHECK INPUT BUFFER
- SADT .BS,C
- ADC -* (-MAXIMUM BLOCK SIZE)
- RLIB PJN RLI1 IF ENOUGH ROOM IN BUFFER
- * UJN RLI1 (READSKP)
- LDN 1
- LJM RET SET FET COMPLETE
- RLI1 LDD CN+3 SAVE STARTING IN POINTER
- STM VDAB
- LDD CN+4
- STM VDAC
- * THE FOLLOWING CODE IS OVERLAYED WITH *ALI* FOR ATS.
- .RLIA BSS 0 START OF OVERLAYED CODE
- RJM ITM INITIATE TAPE MOTION
- RLI2 LDN 1
- RJM SRQ SEND READ BLOCK REQUEST TO *1LT*
- LDC LBBY+5 BYTE COUNT FOR FIRST CHUNK
- STM RLIA
- IAM BUFB-5,CH
- UJN RLI5 CHECK IF ALL WORDS TRANSFERRED
- RLI3 RJM WTS WAIT FOR *1LT* TRANSFER TO START
- LDC LBBY
- STM RLIA
- RLI4 IJM RLI17,CH IF *1LT* FINISHED THE TRANSFER
- SCF RLI4,CH IF *1LT* NOT FINISHED
- RJM ITS INDICATE *1MT* TRANSFER STARTED
- IAM BUFB,CH
- RLI5 IJM RLI9,CH IF *1MT* FINISHED THE CHANNEL TRANSFER
- EJM RLI5,CH IF *1LT* NOT TAKING DATA YET
- CCF *,CH TELL *1LT* TO START
- RJM UCP UPDATE COUNTERS AND POINTER
- LMN 1
- ZJN RLI6 IF FIRST CHUNK
- RJM UCP UPDATE COUNTERS AND POINTER
- RLI6 RJM WDA WRITE DATA TO CENTRAL MEMORY
- LDM .BYC
- SBN LICH-1 FULL CHUNKS PER BLOCK - 1
- MJP RLI3 IF MORE FULL CHUNKS TO INPUT
- RJM WTS WAIT FOR *1LT* TRANSFER TO START
- RLI7 IJM RLI17,CH IF *1LT* FINISHED THE CHANNEL TRANSFER
- SCF RLI7,CH IF *1LT* STILL READING
- RJM ITS INDICATE *1MT* TRANSFER STARTED
- LDC LIRW*5+1+1 BYTES IN REMAINDER + PAD + 1
- STM RLIA LENGTH TO READ + 1
- IAM BUFB,CH
- NJN RLI9 IF NOT EXCESS BLOCK LENGTH
- * THROW AWAY DATA WHEN THE BLOCK IS TOO LONG. IF THE DATA
- * IS NOT TAKEN, OVERRUN ERRORS COULD OCCUR. ALSO, WITH A
- * CROSS-COUPLED CONTROLLER, THE CONTROLLER HUNG WITH CHLA
- * 030F FLASHING ON ITS ERROR DISPLAY.
- RLI8 LDC 500
- IAM ERLB,CH
- ZJN RLI8 IF THERE MAY BE MORE DATA
- LDN /MTX/BTL SET BLOCK TOO LONG
- STD EC
- LDN 1 SET TO COMPUTE WORD COUNT
- RLI9 STD T1
- LDC LBBY+5 BYTE COUNT FOR FIRST CHUNK
- RLIA EQU *-1
- * LDC LBBY (MIDDLE CHUNK)
- * LDC LIRW*5+1+1 (LAST CHUNK)
- RJM VDA PROCESS DATA
- RJM CDO CHECK DROP OUT FLAG
- RLI10 RJM CRA READ *1LT* INTERFACE WORD
- NJN RLI10 IF *1LT* TRANSFER TO CM NOT COMPLETE
- * PROCESS STATUS.
- RJM /PRESET/WFE WAIT FOR END OF OPERATION
- PJN RLI11 IF NOT COMMAND RETRY
- ACN CH
- LDM VDAB BACK UP POINTERS
- STD CN+3
- LDM VDAC
- STD CN+4
- LJM RLI2 RESEND THE DATA
- RLI11 ZJN RLI12 IF NO ERROR
- SHN 21-4
- PJN RLI13 IF NOT TAPE MARK
- LDN 3 SET STOP TO EOI
- STD TB
- LDN 17 SET LEVEL NUMBER
- STM LNUM
- LDM VDAB BACK UP POINTERS
- STD CN+3
- LDM VDAC
- STD CN+4
- LDN /MTX/BEI SET EOI
- UJN RLI14 SAVE ERROR CODE
- RLI12 LDD DS
- LPN 40
- ZJN RLI15 IF NO FILL STATUS
- RLI13 LDN /MTX/STE STATUS ERROR
- RLI14 STD EC
- RLI15 LDD MD
- LPN 40
- ZJN RLI16 IF NOT 200 READ CODE
- LDN 1
- RJM ADP
- RJM WDA WRITE TRAILER CONTROL WORD
- RLI16 LDN 0
- STD CM ACKNOWLEDGE *1LT*
- LDM CPDA
- ADN 2
- CWD CM
- RJM EBP END OF BLOCK PROCESSING
- LJM RLI READ NEXT BLOCK
- * *1LT* FINISHED THE CHANNEL TRANSFER.
- RLI17 RJM CRA READ *1LT* INTERFACE WORD
- NJN RLI17 IF *1LT* TRANSFER TO CM NOT COMPLETE
- AOM VDAA INDICATE *1LT* FINISHED THE TRANSFER
- LDC LBBY
- SBD CM+1
- LJM RLI9 SAVE BYTES TRANSFERRED
- BSS 70 MAKE ROOM FOR *ALI*
- .RLIAL EQU *-.RLIA LENGTH OF *RLI*
- .BYC CON 0 CHUNKS INPUT OF *LBBY* BYTES
- ADP SPACE 4,15
- ** ADP - ADVANCE POINTER.
- * THIS ROUTINE ADVANCES THE IN POINTER FOR WRITES INTO THE
- * BUFFER. ROUTINE *UIP* UPDATES THE IN POINTER FOR THE FET.
- *
- * ENTRY (CN+3 - CN+4) = IN POINTER.
- * (A) = WORDS TO INCREMENT IN BY.
- *
- * EXIT (T4 - T5) = STARTING IN POINTER.
- * (CN+3 - CN+4) = UPDATED IN POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * CALLS CIB.
- *
- * MACROS SADT.
- ADP SUBR ENTRY/EXIT
- STD T6
- RJM CIB CHECK INPUT BUFFER
- SBD T6
- PJN ADP1 IF ROOM IN BUFFER FOR BLOCK
- RAD T6 ADJUST WORD COUNT
- ADP1 LDD CN+3 SAVE IN
- STD T4
- LDD CN+4
- STD T5
- LDN 0 PRESET SECOND PART WORD COUNT
- STD T7
- LDD T6 UPDATE IN
- RAD CN+4
- SHN -14
- RAD CN+3
- SHN 14
- LMD CN+4
- SADT .LM,C
- ADC -* (-LIMIT)
- MJN ADPX IF NO WRAP AROUND
- STD T7 SET SECOND PART WORD COUNT
- SADT .FT
- ADC * (FIRST)
- STD CN+4
- SHN -14
- STD CN+3
- LDD T6 RESET FIRST PART WORD COUNT
- SBD T7
- STD T6
- LJM ADPX RETURN
- CIB SPACE 4,10
- ** CIB - CHECK INPUT BUFFER.
- *
- * ENTRY (CN+3 - CN+4) = IN POINTER.
- *
- * EXIT (A) = WORD COUNT OF AVAILABLE BUFFER SPACE.
- * TO *RET3* IF ERROR.
- *
- * USES CM - CM+4.
- *
- * MACROS SADT.
- CIB1 LDD CM+3 LENGTH = OUT - IN - 1
- SBD CN+3
- SHN 14
- ADD CM+4
- SBD CN+4
- SBN 1
- PJN CIBX IF (IN + 1) .LT OUT
- SADT .LF
- ADC * (LIMIT - FIRST)
- CIB SUBR ENTRY/EXIT
- SADT .FE,,3,A
- LDC * READ OUT
- CRD CM
- LDD CM+3
- LPN 37
- STD CM+3
- SHN 14
- LMD CM+4
- SADT .LM,C
- ADC -* (-LIMIT)
- MJN CIB1 IF OUT .LT. LIMIT
- LDN /MTX/BAE BUFFER ARGUMENT ERROR
- LJM RET3 RETURN ERROR CODE
- CPD SPACE 4,10
- ** CPD - CHECK PP (1LT) DROP OUT.
- *
- * ENTRY (CPDA) = PP INPUT REGISTER ADDRESS.
- *
- * EXIT (A) = 0, IF *1LT* STILL AROUND.
- *
- * USES CM - CM+4.
- *
- * MACROS CHTE.
- CPD SUBR ENTRY/EXIT
- LDC *
- CPDA EQU *-1
- CRD CM
- LDD CM+1
- SCN 77
- SHN 6
- LMD CM
- LMC 3RT1L
- ZJN CPD1 IF *1LT*
- SHN 14
- LMN 1R1
- NJN CPDX IF NOT *1LT* LOADING
- CPD1 LDD CM+3
- CHTE *
- LMN CH
- LPN 77
- UJN CPDX RETURN
- CRA SPACE 4,10
- ** CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
- *
- * EXIT (A) = 0 IF *1LT* COMPLETE.
- * (CM - CM+4) = REQUEST/RETURN WORD.
- CRA SUBR ENTRY/EXIT
- LDM CPDA
- ADN 2
- CRD CM
- LDD CM
- LMN 2
- UJN CRAX RETURN
- EBP SPACE 4,15
- ** EBP - END OF BLOCK PROCESSING.
- *
- * ENTRY (TB) = STATUS OF BLOCK READ.
- * (CN+3 - CN+4) = IN POINTER.
- *
- * EXIT TO *RET* IF TERMINATION CONDITION MET.
- * TO *RET2* IF DROP OUT CONDITION OR RECOVERED ERROR.
- *
- * USES CN+3, CN+4, HP.
- *
- * CALLS CIB, UIP.
- *
- * MACROS SADT.
- EBP SUBR ENTRY/EXIT
- LDD TB
- EBPA SBN 0 READ STOP CONDITION
- EBPB PJN EBP3.1 IF TERMINATION MET (NOT LEVEL 17 READCW)
- * PJN EBP3 IF TERMINATION MET (LEVEL 17 READCW)
- RJM CIB CHECK INPUT BUFFER
- SADT .BS,C
- ADC -* (- MAXIMUM BLOCK SIZE)
- EBPC MJN EBP1 IF NOT ROOM FOR NEXT BLOCK
- * PSN (READSKP)
- SADT .BS,C
- ADC -* (-MAXIMUM BLOCK SIZE)
- SHN -21
- RAM UIPB SET DRIVER RECALL FLAG
- LDD EP CHECK IF ERROR OR RECOVERY IN PROGRESS
- LPN 77
- ADD EC
- ADD DF CHECK DROP OUT FLAG
- NJN EBP2 IF DROP OUT OR ERROR CONDITION
- EBP1 RJM UIP UPDATE IN POINTER
- UJN EBPX RETURN
- EBP2 RJM UIP UPDATE IN POINTER
- LJM RET2 REQUEUE
- EBP3 LDM VDAB BACK UP IN POINTER
- STD CN+3
- LDM VDAC
- STD CN+4
- EBP3.1 RJM UIP UPDATE IN POINTER IN FET
- EBPD UJN EBP3.2 COMPLETE FET
- * LDM LNUM (READSKP)
- CON LNUM
- EBPE SBN 0 LEVEL NUMBER DESIRED
- PJN EBP3.2 IF TERMINATION MET
- EBPF LDN 4 SET TO SKIP RECORD
- * LDN 10 (IF FILE SKIP REQUIRED)
- STD PB INDICATE TO MAGNET TO SKIP
- LDN /MTX/BEI
- LJM RET3 RETURN ERROR CODE
- EBP3.2 LDD TB
- ZJN EBP4 IF PRU READ COMPLETE
- LDD UP SET EOR/EOF FLAG
- SCN 10
- LMN 10
- STD UP
- LDD TB
- ADN 1 RETURN EOR/EOF
- SHN 3+4
- LMM LNUM MERGE LEVEL NUMBER
- SHN 16
- EBP4 ADN 1
- LJM RET SET FET COMPLETE
- ITS SPACE 4,10
- ** ITS - INDICATE *1MT* TRANSFER STARTED.
- *
- * ENTRY (A) = BYTE COUNT.
- *
- * EXIT (A) = BYTE COUNT.
- ITS SUBR ENTRY/EXIT
- STD T0 SAVE BYTE COUNT
- LDM CPDA INDICATE *1MT* TRANSFER STARTED
- ADN 3
- CWD ON
- LDD T0 RESTORE (A)
- UJN ITSX RETURN
- SRQ SPACE 4,10
- ** SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
- *
- * ENTRY (A) = REQUEST CODE.
- * (CN+3 - CN+4) = IN POINTER.
- *
- * EXIT TO *RET2* IF *1LT* PAUSING.
- *
- * USES EC, TB, CM - CM+4.
- *
- * CALLS ADP, CPD, HNG.
- SRQ SUBR ENTRY/EXIT
- STM SRQC SAVE REQUEST CODE
- LDN 0 ALLOW FOR CONTROL WORD
- SRQA EQU *-1
- * LDN 1 (200 READ CODE)
- RJM ADP
- LDN 0
- STM VDAD+3 CLEAR BLOCK LENGTH FOR CONTROL WORD
- STM VDAD+4
- STM VDAA INDICATE *1MT* FINISHED INPUT
- STM .BYC FULL CHUNK COUNT READ
- STD EC ERROR CODE
- STD TB TERMINATION STATUS
- LDD CN+3
- STM SRQC+3
- LDD CN+4
- STM SRQC+4 SET UP IN POINTER FOR *1LT*
- PSN
- * UJN SRQ1 (NOT CYBER 180)
- SRQB EQU *-1
- SCF *+2,CH SET CHANNEL FLAG
- LDM CPDA INDICATE *1MT* TRANSFER STARTED
- ADN 3
- CWD ON
- SRQ1 LDM CPDA CHECK *1LT* FUNCTION
- ADN 1
- CRD CM
- LDD CM
- LMN PRLM
- ZJN SRQ2 IF *1LT* PAUSING
- LDM CPDA ENTER REQUEST
- ADN 2
- CWM SRQC,ON
- RJM CPD CHECK PP DROP OUT
- ZJP SRQX IF *1LT* STILL AROUND
- RJM HNG HANG PP
- SRQ2 LJM RET2 REQUEUE REQUEST
- SRQC BSS 0 *1LT* REQUEST
- CON 1 READ BLOCK REQUEST
- CON LIRW REMAINDER
- CON LICH CHUNK COUNT
- CON 0,0 IN POINTER
- UCP SPACE 4,10
- ** UCP - UPDATE COUNTERS AND POINTERS.
- *
- * ENTRY (CN+3 - CN+4) = IN POINTER.
- *
- * EXIT (A) = (.BYC) = FULL CHUNKS READ.
- *
- * CALLS ADP.
- UCP SUBR ENTRY/EXIT
- LDC LBBY
- RAM VDAD+4 COUNT BYTES READ
- SHN -14
- RAM VDAD+3
- LDC /MTX/LBWD ADVANCE POINTER TO WRITE CM
- RJM ADP
- AOM .BYC INCREMENT FULL CHUNK COUNT
- UJN UCPX RETURN
- UIP SPACE 4,15
- ** UIP - UPDATE IN POINTER IN FET.
- * IF AN ERROR OCCURRED, THE ERROR PROCESSING OVERLAY IS
- * CALLED. ERRORS INCLUDE TAPE MARKS AND EOT. IF NO ERROR
- * OCCURRED OR THE ERROR IS RECOVEABLE, THE IN POINTER IN THE
- * FET IS UPDATED.
- *
- * CALLS *CRE*, *REM*.
- *
- * MACROS CALL, SADT.
- UIP SUBR ENTRY/EXIT
- LDD EP
- LPN 77
- ADD EC
- ZJN UIP1 IF NO ERROR ENCOUNTERED
- UIPA CALL REM LOAD READ ERROR PROCESSOR
- * CALL CRE LOAD ERROR PROCESSOR (CTS)
- SADT .FE,,2,A
- UIP1 LDC * UPDATE IN POINTER IN FET
- CWD CN
- LDN 0 RECALL CPU FLAG
- UIPB EQU *-1
- * LDN 1 (ROOM FOR 1 BLOCK, NO ROOM FOR 2 BLOCKS)
- ZJN UIP2 IF NO RECALL CPU
- LDD OA RECALL CPU
- CWM UIPD,ON
- SOM UIPB
- UIP2 AOD BL+1 INCREMENT BLOCK COUNT
- SHN -14
- RAD BL
- AOD BT INCREMENT BLOCKS TRANSFERRED
- LJM UIPX
- UIPC EQU *-1
- * LJM RET4 (FATAL READ ERROR)
- UIPD CON DRCM DRIVER RECALL CPU MONITOR FUNCTION
- VDA SPACE 4,20
- ** VDA - VALIDATE DATA.
- * THIS ROUTINE UPDATES THE BYTE COUNTER AND IN POINTER FOR THE
- * LAST CHUNK READ. IF *1MT* READ THE LAST CHUNK, *WDA* PUTS
- * THE DATA IN CENTRAL. THIS ROUTINE ALSO VALIDATES THE DATA
- * IN THE BLOCK PREFIX, AND WRITES THE BEGINNING CONTROL WORD
- * FOR A 200 READ.
- *
- * ENTRY (A) = BYTE COUNT USED FOR LAST INPUT.
- * (T1) = BYTES NOT TRANSFERRED.
- * (VDAA) = 0 IF *1MT* FINISHED THE TRANSFER.
- * (BUFB-5 - BUFB-1) = BLOCK PREFIX.
- * (.BYC) = FULL CHUNKS TRANSFERRED.
- *
- * EXIT (TB) = TERMINATION STATUS.
- * (LNUM) = LEVEL NUMBER.
- * (EC) = /MTX/BNE IF VALIDATION ERROR.
- * (BUFB) = LEVEL NUMBER FOR 200 READ.
- * (VDAE) .NE. 0 IF BLOCK LENGTH ERROR.
- *
- * USES BY, T1, T2, WC.
- *
- * CALLS ADP, UCP, WDA.
- VDA SUBR
- SBD T1
- STD BY BYTE COUNT READ
- * ADJUST THE BYTE COUNT TO ALLOW FOR THE PREFIX, THEN
- * CALCULATE THE WORD COUNT TO TRANSFER TO CENTRAL.
- LDM .BYC
- NJN VDA1 IF NOT FIRST CHUNK
- LDD BY
- SBN 2
- PJN VDA2 IF AT LEAST 2 BYTES RECEIVED
- VDA1 LDD BY
- ADN 3
- VDA2 STD T2
- SHN 1 13*BYTES
- ADD T2
- SHN 2
- ADD T2
- SHN 14 (-6) (13*BYTES)/64
- STD T0
- SHN 6+2 4*13*BYTES (52*BYTES)
- SBD T2 51*BYTES
- ADD T0 (51*BYTES)+((13*BYTES)/64)
- SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
- STD WC
- LPN 1
- NJN VDA3 IF NO PAD BYTE ADDED ON WRITE
- LDD BY
- ZJN VDA3 IF NO DATA READ THIS CHUNK
- SOD BY
- VDA3 LDC *
- VDAA EQU *-1
- NJN VDA5 IF *1LT* FINISHED INPUT
- LDM .BYC
- ZJN VDA4 IF FIRST CHUNK
- RJM UCP UPDATE COUNTERS AND POINTER FOR *1LT*
- VDA4 LDD WC
- RJM ADP ADVANCE IN POINTER
- RJM WDA WRITE DATA TO CENTRAL MEMORY
- UJN VDA6 CHECK BYTES READ
- VDA5 LDD WC ADVANCE IN POINTER FOR *1LT*
- RJM ADP
- VDA6 LDM VDAD+3
- STD T1 BYTES READ (UPPER)
- LDM VDAD+4
- STD T2 BYTES READ (LOWER)
- LDD WC
- SHN 2
- ADD WC
- RAM VDAD+4 UPDATE BYTE COUNT FOR CONTROL WORD
- SHN -14
- RAM VDAD+3
- LDM BUFB-4 SAVE BLOCK LENGTH LOWER BITS
- STM //BNEI
- LDM BUFB-5 SAVE BLOCK LENGTH UPPER BITS
- STM //BNEU
- LDM BUFB-2 SAVE BLOCK NUMBER
- STM //BNEI+2
- LDM BUFB-3
- STM //BNEI+1
- LDN 1
- STM VDAE
- LDD BY
- ADM .BYC
- ZJN VDA9 IF NO BYTES READ
- LDM .BYC
- ZJN VDA8 IF FIRST CHUNK
- LDD T2 BYTES (LOWER) READ BEFORE LAST CHUNK
- ADN 5 ALLOW FOR PREFIX
- VDA8 ADD BY BYTES READ THIS CHUNK
- STD T0
- SHN -14
- ADD T1 BYTES (UPPER) READ BEFORE LAST CHUNK
- LMM BUFB-5
- NJN VDA9 IF BLOCK LENGTH UPPER ERROR
- LDD T0
- LMM BUFB-4
- NJN VDA9 IF BLOCK LENGTH LOWER ERROR
- STM VDAE
- LDM BUFB-3
- LMD BL
- NJN VDA9 IF BLOCK NUMBER UPPER ERROR
- LDM BUFB-2
- LMD BL+1
- ZJN VDA10 IF BLOCK NUMBER CORRECT
- VDA9 LDN /MTX/BNE
- STD EC
- VDA10 LDM .BYC
- LMN LICH
- NJN VDA11 IF NOT FULL PRU
- LDD BY
- LMC LIRW*5
- STM BUFB SET 0 LEVEL NUMBER
- ZJN VDA13 IF FULL PRU
- VDA11 LDM BUFB-1 SET LEVEL NUMBER FOR CONTROL WORD
- STM BUFB
- STM LNUM
- LMN 17
- ZJN VDA12 IF EOF
- LCN 1
- VDA12 ADN 2
- VDA13 STD TB SET BLOCK STATUS
- LDD MD
- LPN 40
- ZJN VDA14 IF NOT CONTROL WORD READ
- LDC * PUT CONTROL WORD IN BUFFER
- VDAB EQU *-1
- SHN 6
- ADD RA
- SHN 6
- ADC *
- VDAC EQU *-1
- CWM VDAD,ON
- VDA14 LJM VDAX
- * BEGINNING CONTROL WORD FOR 200 READ.
- VDAD DATA 1,0 PRU SIZE
- DATA 0
- DATA 0,0 BLOCK LENGTH IN BYTES
- VDAE DATA 0 0 IF CORRECT BLOCK LENGTH (FOR ERR. REC.)
- WDA SPACE 4,10
- ** WDA - WRITE DATA TO CENTRAL MEMORY.
- *
- * ENTRY (T4 - T5) = IN POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * MACROS SADT.
- WDA SUBR ENTRY/EXIT
- LDD T6
- ZJN WDAX IF NO FIRST PART
- SHN 2
- ADD T6
- ADC BUFB
- STM WDAA
- LDD T4 TRANSFER FIRST PART
- SHN 6
- ADD RA
- SHN 6
- ADD T5
- CWM BUFB,T6
- LDD T7
- ZJN WDAX IF NO SECOND PART
- SADT .FT,,,A
- LDC * TRANSFER SECOND PART
- CWM *,T7
- WDAA EQU *-1
- UJN WDAX RETURN
- WTS SPACE 4,10
- ** WTS - WAIT FOR *1LT* TRANSFER TO START.
- *
- * ENTRY (A) = BYTE COUNT.
- *
- * EXIT (A) = BYTE COUNT.
- *
- * USES CM - CM+4.
- WTS3 LDD T0 RESTORE (A)
- WTS SUBR ENTRY/EXIT
- STD T0 SAVE BYTE COUNT
- WTS1 LDM CPDA CHECK *1MT*/*1LT* INTERLOCK
- ADN 3
- CRD CM
- LDD CM
- ZJN WTS3 IF *1LT* TRANSFER STARTED
- LDN 24 DELAY 10 MICROSECONDS
- WTS2 SBN 1
- NJN WTS2 IF NOT DONE
- UJN WTS1 CHECK INTERLOCK
- SPACE 4,10
- ERRNG BUFB-5-* CODE OVERFLOWS INTO DATA BUFFER
- TITLE PRESET.
- PRS SPACE 4,10
- ** PRS - PRESET.
- * THIS OVERLAY IS ONLY LOADED IF THE FUNCTION IS A READ AND
- * THE FORMAT IS LI. THIS ROUTINE LOADS *1LT* WHICH TRANSFERS
- * THE 2ND, 4TH, ... CHUNKS OF THE BLOCK.
- *
- * EXIT TO *RET2* IF MOVE FLAG OR NO PP ASSIGNED FOR *1LT*.
- * TO *RLI* TO READ THE FIRST BLOCK.
- *
- * USES T1, CM - CM+4.
- *
- * CALLS CEC, CPD, *CPP*, MCH.
- *
- * MACROS MONITOR, PAUSE.
- PRS LDC PRSA MODIFY CHANNELS
- RJM MCH
- LDD WC
- STM /READ/WOCN SO /CPP/CAL SETS CORRECT BLOCK SIZE
- LDD HP
- LPN 20
- SHN 6
- RAM CALL+3 SET ATS FLAG FOR *1LT*
- LDC TRSO
- STD T1
- PRS1 LDI T1
- ZJN PRS5 IF END OF TABLE
- LMM CIOE
- LPC 774
- ZJN PRS2 IF FUNCTION FOUND IN TABLE
- LDN 2
- RAD T1
- UJN PRS1 CHECK NEXT ENTRY IN TABLE
- PRS2 AOD T1
- LDM LNUM
- SHN -10
- RAM EBPE SET *READSKP* LEVEL NUMBER
- LPN 17
- LMN 17
- NJN PRS3 IF NOT LEVEL 17
- LDN 10-4 SET *READSKP* FOR FILE SKIP
- RAM EBPF
- LDD MD
- LPN 40
- ZJN PRS3 IF NOT 200 READCW
- LCN EBP3.1-EBP3 SUPPRESS LEVEL 17 EOF CONTROL WORDS
- RAM EBPB
- SOI T1 ADJUST TERMINATION CONDITION
- PRS3 LDI T1
- PRS4 RAM EBPA
- PRS5 LDN F0040 SELECT READ FUNCTION
- STM //ITMA
- LDD MD
- LPN 40
- ZJN PRS6 IF NO CONTROL WORDS
- AOM SRQA ALLOW FOR CONTROL WORD
- PRS6 LDD HP
- SHN 21-7
- PJN PRS7 IF NOT CTS
- LDC LDNI+CRE/10000 CALL CTS ERROR PROCESSOR
- STM UIPA
- LDC 6125 BITS TO TEST IN GENERAL STATUS
- STM /PRESET/WFEA
- LDN 1 BITS IN GENERAL STATUS THAT SHOULD BE SET
- STM /PRESET/WFEB
- LJM PRS13 SET TO MODIFY SADT INSTRUCTIONS
- * REPLACE *RLI* WITH READ ROUTINE *ALI* FOR ATS.
- PRS7 LDC .ALIL-1 LENGTH OF CODE TO MOVE
- STD T1
- PRS8 LDM .ALI,T1
- STM ALI,T1
- SOD T1
- PJN PRS8 IF MORE CODE TO MOVE
- LDC .ALIB MODIFY CHANNELS
- RJM MCH
- LDC 4435 BITS TO TEST IN GENERAL STATUS
- STM //WEOA
- LDN 1 BITS IN GENERAL STATUS THAT SHOULD BE SET
- STM //WEOB
- LDK MABL CHECK MAINFRAME TYPE
- CRD CM
- LDD CM+1
- SHN -6
- LPN 41
- LMN 1
- NJP PRS10 IF NOT CYBER 180
- * PRESET FOR CYBER 180 IOU. THE CHANNEL FLAG IS USED FOR
- * COMMUNICATION BETWEEN *1MT* AND *1LT* IF CYBER 180.
- LDC UJNI+2 JUMP TO INPUT FIRST CHUNK
- STM ALIE
- LDC ALI1
- STM ALIA JUMP ADDRESS IF NOT LAST CHUNK
- LDC AILA
- STM ALIG
- STM ALIB
- LDC ALI8
- STM ALIF JUMP ADDRESS IF LAST CHUNK
- LDN .AILL-1 MOVE IOU LOOP
- STD T1
- PRS9 LDM .AIL,T1
- STM AIL,T1
- SOD T1
- PJN PRS9 IF MORE CODE TO MOVE
- LDC .AILB MODIFY CHANNELS
- RJM MCH
- UJN PRS11 CONTINUE PRESET
- PRS10 ISTORE SRQB,(UJN SRQ1) SKIP SETTING CHANNEL FLAG
- PRS11 LDD EP SET CLIPPING LEVEL
- LPC 700
- ZJP PRS12 IF NORMAL CLIP LEVEL
- RAM ALIC
- UJN PRS13 CONTINUE PRESET
- PRS12 LDC UJNI+2 DISABLE CLIP LEVEL SELECTION
- STM ALID
- PRS13 LDC PRSB SET TO MODIFY SADT INSTRUCTIONS
- STD CN
- LDN 2 SET TO FETCH IN POINTER
- STD CN+4
- LDC /SRU/ITRL*100 SET SRU INCREMENT
- STM //CECA
- LDC PRS14 SET TO RETURN HERE AFTER *CPP* LOADED
- STD BT
- LJM PRSX RETURN
- * RETURN HERE AFTER *CPP* LOADED.
- * BUILD CALL TO *1LT*.
- PRS14 LDD CP MERGE CP NUMBER
- SHN -7
- RAM CALL+1
- LDD IA SET INPUT REGISTER ADDRESS IN CALL
- STM CALL+4
- LDN CMCL CHECK MOVE FLAG
- CRD CM
- LDD CM
- SHN 7
- LMD CP
- ZJN PRS15 IF MOVE FLAG
- LDD MA WRITE REQUEST BLOCK
- CWM CALL,TR
- LDN 1 SET TO NOT QUEUE REQUEST
- STD CM+1
- MONITOR RPPM REQUEST PP
- LDD CM+1
- NJN PRS16 IF PP ASSIGNED
- PRS15 LJM RET2 REQUEUE
- PRS16 STM CPDA SAVE PP INPUT REGISTER ADDRESS
- PRS17 LDN 77 DELAY
- SBN 1
- NJN *-1
- LDD MA CHECK FOR *1LT* ACKNOWLEDGE
- ADN 1
- CRD CM
- LDD CM
- ZJN PRS19 IF *1LT* READY
- RJM CPD CHECK PP DROP OUT
- NJN PRS15 IF *1LT* GONE
- LDN CMCL CHECK MOVE FLAG
- CRD CM
- LDD CM
- SHN 7
- LMD CP
- NJN PRS17 IF NO MOVE FLAG FOR THIS CP
- RJM CEC CHANGE BACK TO MAGNET CP
- PRS18 RJM CPD CHECK PP DROP OUT
- NJN PRS15 IF *1LT* GONE
- PAUSE NE
- UJN PRS18 LOOP
- PRS19 LDM CIOE
- LPC 774
- LMN 20
- NJN PRS20 IF NOT READ SKIP
- STM EBPC
- LDC UJNI-PJNI
- RAM RLIB
- LDC LDMI
- STM EBPD
- RJM CIB
- MJN PRS21 IF BUFFER ARGUMENT ERROR
- STD T5
- SHN -14
- STD T4
- LDN 3 SET REQUEST TO *1LT*
- RJM SRQ
- PRS20 LDN 77 DELAY
- SBN 1
- NJN *-1 IF DELAY NOT COMPLETE
- RJM CRA SEE IF *1LT* ACCEPTED READ SKIP
- LMN 2
- NJN PRS20 IF *1LT* NOT DONE
- PRS21 LJM RLI ENTER READ ROUTINE
- CALL SPACE 4,10
- ** *1LT* CALL BLOCK.
- *
- *T 18/ 1LT,6/ CP,12/ 0,12/ CHANNEL,12/ PPIA
- *T, 12/ -0,24/ FIRST,24/ LIMIT
- CALL VFD 18/3R1LT,6/0
- CON 0 READ
- CHTE *
- CON CH CHANNEL
- CON 0 *1MT* INPUT REGISTER ADDRESS
- CON -0
- SADT .FT,,,,SE
- CON 0,0
- SADT .LM,,,,SE
- CON 0,0
- ERRMI ERLA-* IF CODE OVERFLOWS
- TRSO SPACE 4,10
- ** TRSO - TABLE OF READ STOP CODES.
- TRSO BSS 0
- CON 10,1 READ
- CON 20,1 READSKP
- CON 200,3 READCW
- CON 250,2 READNS
- CON 600,3 READEI
- CON 0 RPHR
- PRSA CHTB CHANNEL TABLE
- PRSB TSAD
- TITLE PRESET SUBROUTINES.
- ALI SPACE 4,15
- ** ALI - ATS LI FORMAT READ.
- * THIS ROUTINE OVERLAYS *RLI*.
- *
- * USES T1.
- *
- * CALLS ADP, CDO, CRA, DTS, EBP, FCN, ITM, MCC, SRQ, STW,
- * UBW, UCP, VDA, WDA, WEO.
- .ALI BSS 0
- LOC .RLIA
- ALI LDC NJNI+ALI6-ALIH
- * LDC ALI1 (CYBER 180)
- ALIA EQU *-1
- STM ALIH NOT LAST CHUNK
- * STM AILA (CYBER 180)
- ALIB EQU *-1
- LDC 6
- * LDC X06 (SELECT CLIP LEVEL)
- ALIC EQU *-1
- RJM FCN
- * UJN *+2 (NORMAL CLIP LEVEL)
- ALID EQU *-2
- RJM ITM INITIATE TAPE MOTION
- LDN 1
- RJM SRQ SEND START BLOCK REQUEST TO *1LT*
- LDD DS SAVE DEVICE STATUS
- STM /READ/STAP
- LDC LBBY+5 BYTE COUNT FOR FIRST CHUNK
- STM ALII
- LJM ALI7 INPUT THE FIRST CHUNK
- * UJN *+2 (CYBER 180 - INPUT THE FIRST CHUNK)
- ALIE EQU *-2
- IAM BUFB-5,CH INPUT FIRST CHUNK
- ALI1 IJM ALI9,CH IF *1MT* FINISHED THE CHANNEL TRANSFER
- EJM ALI1,CH IF *1LT* NOT TAKING DATA YET
- CCF *,CH TELL *1LT* TO START
- ALI2 RJM UCP UPDATE COUNTERS AND POINTER
- LMN 1
- ZJN ALI3 IF FIRST CHUNK
- RJM UCP UPDATE COUNTERS AND POINTER
- ALI3 RJM WDA WRITE DATA TO CENTRAL MEMORY
- LDC LBBY
- STM ALII BYTE COUNT FOR MIDDLE CHUNK
- LDM .BYC
- SBN LICH-1 FULL CHUNKS PER BLOCK - 1
- MJN ALI4 IF MORE FULL CHUNKS TO INPUT
- LDC LIRW*5+1+1 BYTES IN REMAINDER + PAD + 1
- STM ALII
- LDC UJNI+ALI8-ALIH
- * LDC ALI8 (CYBER 180)
- ALIF EQU *-1
- STM ALIH LAST CHUNK HANDLING
- * STM AILA (CYBER 180)
- ALIG EQU *-1
- * THE FOLLOWING CODE IS OVERLAID BY CODE AT *AIL* IF USING
- * THE CHANNEL FLAG INSTRUCTION.
- .ALIA BSS 0 BEGINNING OF OVERLAID CODE
- ALI4 AJM *,CH IF WAITING FOR *1LT* TO DCN CHANNEL
- LDM ALII SET NUMBER OF BYTES TO INPUT
- ALI5 IJM ALI19,CH IF *1LT* FINISHED THE CHANNEL TRANSFER
- EJM ALI5,CH IF *1LT* STILL READING
- IAM BUFB,CH INPUT DATA
- DCN CH+40 INDICATE TO *1LT* TO CONTINUE READ
- NJN ALI9 IF *1MT* FINISHED THE CHANNEL TRANSFER
- ALIH EQU *-1
- * UJN ALI8 (LAST CHUNK)
- ACN CH
- ALI6 IJM ALI9,CH IF *1MT* FINISHED THE CHANNEL TRANSFER
- EJM ALI6,CH IF *1LT* NOT TAKING DATA YET
- LJM ALI2 SETUP FOR NEXT CHUNK
- ALI7 IAM BUFB-5,CH
- DCN CH+40 INDICATE TO *1LT* TO CONTINUE READ
- NJN ALI9 IF *1MT* FINISHED THE CHANNEL TRANSFER
- ACN CH
- UJN ALI6 SAVE BYTES NOT TRANSFERRED
- .ALIAL EQU *-.ALIA LENGTH OF OVERLAID AREA
- ALI8 NJN ALI9 IF NOT EXCESS BLOCK LENGTH
- LDN /MTX/BTL SET BLOCK TOO LONG
- RJM MCC MASTER CLEAR CHANNEL
- * LDN 0
- RJM STW GET GENERAL STATUS
- LDN 1 SET TO COMPUTE WORD COUNT
- ALI9 STD T1
- LDC LBBY+5 BYTE COUNT FOR FIRST CHUNK
- * LDC LBBY (MIDDLE CHUNK)
- * LDC LIRW*5+1+1 (LAST CHUNK)
- ALII EQU *-1
- RJM VDA PROCESS DATA
- RJM CDO CHECK DROP OUT FLAG
- * PROCESS STATUS.
- RJM WEO WAIT FOR END OF OPERATION
- ZJN ALI12 IF NO ERRORS
- SHN 21-4
- PJN ALI10 IF NOT TAPE MARK
- LDN 3 SET STOP TO EOI
- STD TB
- LDN 17 SET LEVEL NUMBER
- STM LNUM
- LDM VDAB BACK UP POINTERS
- STD CN+3
- LDM VDAC
- STD CN+4
- LDN /MTX/BEI SET EOI
- STD EC
- UJN ALI15 GET DETAILED STATUS
- ALI10 LDD EC
- ZJN ALI11 IF ERROR NOT ALREADY ENCOUNTERED
- LDM MTDS
- ZJN ALI13 IF NOT FATAL ERROR
- ALI11 LDN /MTX/STE STATUS ERROR
- STD EC
- UJN ALI13 NO TAPE ERROR REPORTED FROM HARDWARE
- ALI12 LDM MTDS+1
- SHN 21-11
- PJN ALI13 IF NO GCR SINGLE TRACK CORRECTION
- AOM ECNT+4 INCREMENT COUNTER
- SHN -14
- RAM ECNT+3 INCREMENT COUNTER FOR OVERFLOW
- ALI13 LDD DS
- LPN 40
- ZJN ALI14 IF NO FILL STATUS
- LDD EC
- NJN ALI15 IF ERROR ALREADY ENCOUNTERED
- LDN /MTX/STE
- STD EC
- ALI14 LDD EC
- NJN ALI15 IF ERROR
- RJM UBW UPDATE BID WINDOW
- UJN ALI16 SAVE STATUS FOR ERROR PROCESSOR
- ALI15 RJM DTS DETAILED STATUS
- ALI16 LDD DS SAVE STATUS FOR ERROR PROCESSOR
- STM //STER
- ALI17 RJM CRA READ *1LT* INTERFACE WORD
- NJN ALI17 IF *1LT* TRANSFER TO CM NOT COMPLETE
- LDD MD
- LPN 40
- ZJN ALI18 IF NOT 200 READ CODE
- LDN 1
- RJM ADP
- RJM WDA WRITE TRAILER CONTROL WORD
- ALI18 LDN 0
- STD CM ACKNOWLEDGE *1LT*
- LDM CPDA
- ADN 2
- CWD CM
- RJM EBP END OF BLOCK PROCESSING
- LJM RLI READ NEXT BLOCK
- * *1LT* FINISHED THE CHANNEL TRANSFER.
- ALI19 RJM CRA READ *1LT* INTERFACE WORD
- NJN ALI19 IF *1LT* TRANSFER TO CM NOT COMPLETE
- AOM VDAA INDICATE *1LT* FINISHED THE TRANSFER
- LDC LBBY
- STM ALII BYTE COUNT FOR INPUT
- SBD CM+1
- LJM ALI9 SAVE BYTES NOT TRANSFERRED
- LOC *O
- .ALIL EQU *-.ALI LENGTH OF *ALI*
- ERRMI .RLIAL-.ALIL IF CODE OVERFLOWS
- .ALIB CHTB CHANNEL TABLE
- AIL SPACE 4,10
- ** ATS INPUT LOOP IF USING THE CHANNEL FLAG INSTRUCTION.
- .AIL BSS 0
- LOC .ALIA
- AIL LDM ALII BYTES TO INPUT
- RJM WTS WAIT FOR *1LT* TRANSFER TO START
- AIL1 IJM ALI19,CH IF *1LT* FINISHED THE CHANNEL TRANSFER
- SCF AIL1,CH IF *1LT* STILL READING
- RJM ITS INDICATE *1MT* TRANSFER STARTED
- IAM BUFB,CH
- LJM ALI1 SAVE WORDS NOT TRANSFERRED
- AILA EQU *-1
- * LJM ALI8 LAST CHUNK
- LOC *O
- .AILL EQU *-.AIL LENGTH OF ATS INPUT LOOP
- ERRMI .ALIAL-.AILL IF IOU INPUT CODE TOO LONG
- .AILB CHTB TABLE OF CHANNELS FOR IOU CODE
- OVERLAY (READ LABEL PROCESSOR.),(/READ/ORLA),,RLA
- RLA SPACE 4,15
- ** RLA - READ LABELS PROCESSOR.
- *
- *T 12/ 0,12/ RLA,12/ 0100,12/ PAR,6/ OP,6/ SEC
- *
- * OP OPERATION TYPE (SEE LISTS BY LABEL TYPE)
- * SEC SECTION IN PROCESS.
- * PAR PARAMETER.
- *
- * RETURN TO *RLAX* WILL ADVANCE TO NEXT SECTION WITHOUT A
- * NEW READ BEING PERFORMED.
- *
- * CALLS CHC, CCL, FCN, HNG, *MFP*, /READ/MRD9.1, /READ/RCT13,
- * /READ/RDF, RUD, UBW, WEL, /PRESET/WFE.
- *
- * MACROS CALL.
- ENTRY RLA
- RLA LDD PB
- SHN -6
- SBN /MTX/RLCM/100
- MJN RLA1 IF NOT MULTI-FILE OPERATION
- CALL MFP
- RLA1 UJN RLA1.1 DISABLE IF NOT INITIAL LABEL CHECK
- * LDN 0 (CLEAR LABEL RETRY COUNTER)
- RLAF EQU *-1
- STM LERA
- RLA1.1 LDD PB CHECK SEQUENCE
- SHN -6
- LMC 0 (CURRENT SEQUENCE)
- RLAA EQU *-1
- NJN RLA2 IF INCORRECT SEQUENCE
- LDD PB SET SECTION
- LPN 77
- STD T1
- ADC -* (MAXIMUM NUMBER OF SECTIONS)
- RLAB EQU *-1
- MJN RLA3 IF LEGAL SECTION
- RLA2 RJM HNG HANG PP
- RLA3 LDM TABC,T1
- STM RLAE
- RJM RUD READ UDT LABEL DATA
- LDC BUF SET DEFAULT BUFFER ADDRESS
- STM IBUF
- LDC UDTB
- STM DBUF
- LDC 0
- RLAC EQU *-1
- SHN 21-13
- MJP RLA7 IF RECOVERED LABEL BLOCK
- NJN RLA4 IF SKIP READ
- LDC * (READ BEFORE FIRST OPERATION FLAG)
- RLAD EQU *-1
- ZJN RLA5 IF READ BEFORE FIRST OPERATION
- LDN 0
- STM RLAD
- RLA4 UJP RLA9 PROCESS ROUTINE
- RLA5 LDD MD CHECK DIRECTION
- SHN 21-12
- PJN RLA5.1 IF FORWARD READ
- LDC F0113 ISSUE BACKSPACE FUNCTION
- RJM FCN
- STD EC CLEAR ERROR CODE
- LDN LABL SET LABEL LENGTH
- RLAI EQU *-1
- * LDN CLBL CTS LABEL LENGTH
- STD BY
- LDD HP
- SHN 21-7
- PJP /READ/MRD9.1 IF NOT CTS (RETURN AT *RLA6.1)
- RLA5.0 RJM /PRESET/WFE WAIT FOR END OF OPERATION
- MJN RLA5.0 IF COMMAND RETRY
- NJP /READ/RCT13 IF ERROR
- LDN 40
- STD ES CHARACTER FILL STATUS
- UJN RLA6.1 SAVE STATUS FOR ERROR PROCESSING
- RLA5.1 LJM /READ/RDF READ TAPE
- * ENTER HERE AFTER LABEL READ OR BACKSPACE FUNCTION.
- RLA6 CALL CCL CODE CONVERT LABEL
- RLA6.1 AOD BT INCREMENT BLOCKS READ
- LDD EC
- NJN RLA8 IF READ ERROR
- RLA7 RJM WEL WRITE EXTENDED LABELS
- UJN RLA9 PROCESS LABEL
- RLA8 LMN /MTX/BEI
- NJN RLA9 IF NOT TAPE MARK
- LDN 1 SET TAPE MARK INDICATION
- RLAH EQU *-1
- * UJN RLA9 CTS
- STM UBWB
- RJM UBW UPDATE BLOCK ID WINDOW
- RLA9 LDN 0 CLEAR SKIP READ FLAG
- STM RLAC
- RJM * PROCESS LABEL
- RLAE EQU *-1
- NJN RLA10 IF MORE LABELS TO PROCESS
- LJM RET1 EXIT
- RLAX AOD PB ADVANCE SECTION
- STM RLAC SET SKIP READ FLAG
- RLA10 LJM RLA1 LOOP
- RLA11 RJM CHC CHANGE CONTROL POINT AND RELOCATE ADDR.
- UJN RLA10 LOOP
- SPACE 4,10
- ** CURRENT OPERATION TABLE.
- *
- * CORRECT TABLE WILL BE MOVED INTO THIS
- * AREA BY PRESET ROUTINE.
- TABC BSS 14
- TABCL EQU *-TABC
- FAD SPACE 4,10
- ** FAD - SET FET ADDRESS.
- * THIS ROUTINE IS HERE AS ADDRESS MODIFICATION DOES NOT WORK
- * ABOVE 3777B.
- *
- * EXIT (A) = FET ADDRESS.
- *
- * MACROS SADT.
- FAD SUBR ENTRY/EXIT
- SADT .FE,,,A
- LDC *
- UJN FADX RETURN
- CHC SPACE 4,10
- ** CHC - CHANGE CONTROL POINTS AND RELOCATE ADDRESSES.
- *
- * CALLS /CPP/CPP.
- *
- * MACROS CALL.
- CHC SUBR ENTRY/EXIT
- CALL CPP
- LDN ZERL SET ADDRESS RELOCATION
- CRD CN
- LDC TADD
- STD CN
- RJM /CPP/CPP
- AOD PB INCREMENT SECTION
- UJN CHCX RETURN
- CLA SPACE 4,15
- ** CLA - CHECK LABEL FOR VALIDITY.
- * CHECKS FOR SIZE AND ERRORS.
- *
- * EXIT (A) = 0, IF GOOD LABEL.
- * (A) = 1, IF TAPE MARK.
- * (A) = -1, IF ((PB, 11 - 6) = 0) AND BAD LABEL.
- *
- * GIVES LABEL MISSING ON ALL OTHER BAD LABELS.
- *
- * USES BT.
- *
- * CALLS CCM, CLL, *CRE*, LER, *REM*.
- *
- * MACROS CALL.
- CLA8 RJM CLL CHECK LABEL LENGTH
- NJN CLA2 IF INCORRECT LENGTH
- CLA SUBR ENTRY/EXIT
- LDD EC
- ZJN CLA8 IF NO ERROR
- LMN /MTX/BEI
- NJN CLA1 IF NOT TAPE MARK
- LDN 1 INDICATE TAPE MARK
- UJN CLAX RETURN
- CLA1 LMN /MTX/OTF&/MTX/BEI
- ZJN CLA8 IF ON THE FLY ERROR CORRECTION
- LMN /MTX/STE&/MTX/OTF
- CLA2 NJN CLA5 IF NOT STATUS ERROR
- LDD PB
- SHN -6
- LMN /MTX/RLCR/100
- ZJN CLA6 IF REEL RECHECK
- CLA3 LDD SP
- SHN 21-2
- MJN CLA7 IF ERROR PROCESSING INHIBITED
- SOD BT DECREMENT BLOCKS READ
- * ENTER HERE ON LABEL READ RECOVERY TO RELOAD ERROR PROCESSOR.
- CLA4 RJM LER CHECK FOR LABEL ERROR AT LOAD POINT/INIT
- * UJN *+2 (NOT INITIAL LABEL CHECK)
- CLAA EQU *-2
- CLAD CALL REM LOAD READ ERROR PROCESSOR
- * CALL CRE LOAD ERROR PROCESSOR (CTS)
- CLA5 LDD EC
- LMN /MTX/NBE
- ZJN CLA3 IF NOISE BLOCK
- LDD PB
- SHN -6
- ZJN CLA7 IF INITIAL LABEL CHECK
- ERRNZ /MTX/RLCL
- LMN /MTX/RLCR/100
- ZJN CLA7 IF REEL RECHECK
- LDN /MTX/LAM LABEL MISSING
- LJM RET3 RETURN ERROR CODE
- CLA6 LDM MTDS CHECK FOR ON-THE-FLY CORRECTED ERROR
- LPC 7077
- * LPC 7777 (ATS UNIT)
- CLAB EQU *-1
- NJN CLA7 IF FATAL ERROR
- CLAC EQU *-1
- * UJN CLA7 CTS
- LJM CLA8 CHECK LENGTH
- CLA7 LCN 1 INDICATE BAD LABEL
- LJM CLAX RETURN
- ERRNG BUFB-* *CLA* DESTROYED BY READ ERROR PROCESSOR
- CLL SPACE 4,15
- ** CLL - CHECK LABEL LENGTH.
- *
- * THIS ROUTINE VERIFIES THAT THE DATA READ FOR THE LABEL WAS
- * THE CORRECT LENGTH.
- *
- * ENTRY (BY) = BYTES READ.
- * (ES) = FILL STATUS.
- * (HP) = HARDWARE OPTIONS.
- *
- * EXIT (A) = 0 IF CORRECT LENGTH.
- CLL SUBR ENTRY/EXIT
- LDD HP
- SHN 21-7
- MJN CLL1 IF CTS
- LDD BY BYTES READ
- LMN LABL
- NJN CLLX IF WRONG LENGTH
- LDD ES EXPECT NO FILL STATUS
- UJN CLL2 CHECK FILL STATUS
- CLL1 LDD BY BYTES READ
- LMN CLBL
- NJN CLLX IF WRONG LENGTH
- LDD ES
- LMN 40 EXPECT FILL STATUS
- CLL2 LPN 40
- UJN CLLX RETURN
- DBT SPACE 4,10
- ** DBT - DETERMINE BLOCK TYPE.
- *
- * EXIT (A) = 0 IF TAPE MARK OR BLOCK WRONG LENGTH.
- DBT2 LDN 0 SET INCORRECT NUMBER OF BYTES
- DBT SUBR ENTRY/EXIT
- LDD EC
- LMN /MTX/BEI
- ZJN DBTX IF TAPE MARK
- LDD EC
- LMN /MTX/BTL
- ZJN DBTX IF BLOCK TOO LARGE
- LDD BY
- ZJN DBT1 IF POSSIBLE RECOVERABLE ERROR
- RJM CLL CHECK LABEL LENGTH
- NJN DBT2 IF INCORRECT LENGTH
- DBT1 LDN 1 SET TO VALIDATE LABEL
- UJN DBTX RETURN
- ELA SPACE 4,10
- ** ELA - EXTENDED LABELS ADDRESS PROCESSING.
- *
- * ENTRY (T6 - T7) = POSITION TO START AT IN BUFFER.
- *
- * EXIT (A) = ABSOLUTE ADDRESS.
- * (A) = 0, END OF LABEL BUFFER.
- *
- * CALLS FAD.
- ELA2 LDN 0 INDICATE END OF BUFFER
- ELA SUBR ENTRY/EXIT
- RJM FAD GET FET ADDRESS
- ADN 11
- CRD CM
- LDD CM+3
- SHN 14
- STD CM+1
- SHN -14
- STD CM+3
- SHN 14
- LMD CM+4
- SBN 2
- MJN ELA2 IF NO LABEL BUFFER
- LDD CM+2
- SHN 6
- LMD CM+1
- STD CM+2
- SHN -14
- STD CM+1
- LDD T6
- SBD CM+1
- SHN 14
- ADD T7
- SBD CM+2
- ADN 11 ALLOW FOR LABEL
- PJN ELA2 IF END OF LABEL BUFFER
- LDD CM+1 CHECK IF BUFFER WITHIN FL
- ADD CM+3
- SHN 14
- ADD CM+2
- ADD CM+4
- SHN -6
- SBD FL
- MJN ELA1 IF BUFFER WITHIN FL
- LDN /MTX/BAE BUFFER ARGUMENT ERROR
- LJM RET3 RETURN ERROR CODE
- ELA1 LDD CM+3
- ADD T6
- SHN 6
- ADD RA
- SHN 6
- ADD CM+4
- ADD T7
- LJM ELAX RETURN
- EOF SPACE 4,10
- ** LOAD POINT RECOVERY CODE OVERLAYS INTO HERE ON INITIAL LABEL
- * CHECK. THE CHECKING OF END OF FILE LABELS AND VOLUME ONE
- * LABELS WILL NEVER OCCUR AT THE SAME TIME.
- .LERA BSS 0 FWA OF OVERLAY CODE FROM *PRSD*
- EOF SPACE 4,15
- ** EOF - PROCESS *EOF1*.
- * RETURNS 1271/1273 IF EOI ON S/L FORMAT TAPE AND 260/262
- * READ CODE WAS USED. THIS IS FOR SCOPE PRODUCT SET
- * COMPATIBILITY.
- *
- * ALSO COUNTS TAPE MARK AS A BLOCK IF TAPE IS LABELED, BUT
- * LABEL DATA DOES NOT FOLLOW TAPE MARK. AGAIN THIS FOR SAME
- * REASON AS ABOVE.
- *
- * CALLS CBC, CIF, CLA, DBT, SKR, /MFP/SSN, UAD.
- EOF SUBR ENTRY/EXIT
- RJM CIF CHECK INTERNAL TAPE FORMAT
- ZJN EOF2 IF INTERNAL TAPE FORMAT
- RJM DBT DETERMINE BLOCK TYPE
- NJN EOF2 IF NOT TAPE MARK OR BLOCK TOO LARGE
- * ENTRY FROM *EOV*.
- EOF0 LDD PB
- SHN -6
- LMN /MTX/RLCF/100
- NJN EOF1 IF NOT CLOSE
- RJM SKR SKIP BLOCK REVERSE
- LJM RBE RETURN *BEI* ERROR TO NOT SKIP REVERSE
- EOF1 RJM SKR SKIP BLOCK REVERSE
- LJM EOF11 PROCESS TAPE MARK
- EOF2 RJM CLA
- NJN EOF3 IF BAD LABEL
- LDM BUF
- LMC 2REO
- NJN EOF3 IF NOT *EO*
- LDM BUF+1
- LMC 2RF1
- ZJN EOF7 IF *EOF1*
- EOF3 LDD PB CHECK IF MULTI FILE
- SHN -6
- SBN /MTX/RLCM/100
- ZJN EOF4 IF END OF REEL CHECK
- MJN EOF5 IF NOT MULTI FILE
- LDN /MTX/LAM LABEL MISSING
- LJM RET3 RETURN ERROR CODE
- EOF4 LDN 10
- RAD PB
- UJN EOF6 ADVANCE TO NEXT LABEL TYPE
- EOF5 ADN 7-6
- NJN EOF6 IF NOT CLOSE
- LDN 2
- RAD PB
- EOF6 LJM RLAX ADVANCE TO NEXT LABEL TYPE
- EOF7 LDD PB CHECK IF MULTI FILE
- SHN -6
- SBN /MTX/RLCM/100
- MJN EOF9 IF NOT MULTI FILE
- NJN EOF8 IF NOT MF LABEL CHECK
- RJM /MFP/SSN SET SEQUENCE NUMBER
- EOF8 AOD PB ADVANCE SECTION
- LJM EOFX RETURN
- EOF9 ADN 7-6
- ZJN EOF8 IF CLOSE
- RJM CBC CHECK BLOCK COUNT
- * ENTER HERE ON NON - STANDARD LABEL.
- EOF10 LDC 1031 RETURN EOI STATUS
- STD PB
- STM EOFA SET EOI FOR SKIP OPERATION
- UJN EOF12 RETURN EOI
- * HANDLE TAPE MARKS NOT FOLLOWED BY LABELS.
- EOF11 AOD BL+1 COUNT BLOCK
- SHN -14
- RAD BL
- LDN 31 RETURN EOF STATUS
- STD PB
- EOF12 RJM UAD READ CIO CODE
- ADN /MTX/UCIA
- CRD CM
- LDD CM
- SHN -6
- LPN 57
- ZJN EOF14 IF READ OPERATION
- SHN -4
- ZJN EOF13 IF NOT SKIP REVERSE
- LDN 1 DO NOT SET EOF BIT
- STM EOFA
- EOF13 LDM CIOE RETURN CIO CODE
- LPC 774
- ADC 31 SET EOR AND EOF BITS
- * ADC 1031 (EOI ENCOUNTERED)
- * ADC 1 (POSITION BACKWARD)
- EOFA EQU *-1
- STD PB
- EOF14 LDN 74 SET LEVEL 17
- STD PA
- LDD FM
- SHN -6
- LMN /MTX/TFS
- ZJN EOF15 IF S FORMAT
- LMN /MTX/TFL&/MTX/TFS
- NJN EOF16 IF NOT L FORMAT
- EOF15 LDM CIOE
- LPC 774
- LMC 260
- NJN EOF16 IF NOT 260 READ CODE
- LDD PB
- LPC 1000
- LMC 271
- STD PB
- EOF16 LJM RBE RETURN *BEI* ERROR
- EFO SPACE 4,10
- ** EFO - PROCESS EOF2 - EOF9.
- *
- * CALLS CLA.
- EFO SUBR ENTRY/EXIT
- RJM CLA CHECK LABEL
- NJN EFO1 IF BAD LABEL
- LDM BUF
- LMC 2REO
- NJN EFO1 IF NOT *EO*
- LDC 2RF2
- ADD PA
- LMM BUF+1
- NJN EFO1 IF NOT *FN*
- AOD PA INCREMENT TO NEXT LABEL
- LMN 9D
- NJN EFOX IF NOT ALL POSSIBLE LABELS SKIPPED
- EFO1 LDN 0
- STD PA
- LJM RLAX ADVANCE TO NEXT LABEL TYPE
- EOV SPACE 4,10
- ** EOV - PROCESS *EOV1*.
- *
- * CALLS CBC, CIF, CLA, UAD.
- EOV SUBR ENTRY/EXIT
- RJM CLA CHECK LABEL
- NJN EOV1 IF BAD LABEL
- LDM BUF
- LMC 2REO
- NJN EOV1 IF NOT *EO*
- LDM BUF+1
- LMC 2RV1
- ZJN EOV2 IF *EOV1*
- EOV1 RJM CIF CHECK INTERNAL TAPE FORMAT
- NJP EOF0 IF NOT INTERNAL FORMAT
- LDN /MTX/LCE LABEL CONTENT ERROR
- LJM RET3 RETURN ERROR CODE
- EOV2 LDD PB
- SHN -6
- SBN /MTX/RLCF/100
- NJN EOV3 IF NOT CLOSE
- LJM EOV7 INCREMENT TO NEXT SECTION
- EOV3 PJN EOV4 IF MULTI-FILE OPERATION
- RJM CBC CHECK BLOCK COUNT
- * ENTER HERE FOR UNLABELED END OF REEL.
- EOV4 LDM FETO
- SHN 21-11
- PJN EOV5 IF USER NOT PROCESSING END OF REEL
- LDM CIOE SET TO RETURN END OF REEL STATUS
- LPC 774
- LMC 2001
- STD PB
- LDN 0
- STD PA
- LJM RBE RETURN *BEI* ERROR
- EOV5 LDD PB
- SHN -6
- SBN /MTX/RLCM/100
- MJN EOV6 IF NOT *POSMF*
- LDC 4000 SET *EOV1* ENCOUNTERED DURING *POSMF*
- RAD PA
- EOV6 RJM UAD CHECK IF VSNS DECLARED
- ADN /MTX/UUFN
- CRD CM
- LDD FM
- SHN -6
- SBN /MTX/TFI
- ZJN EOV7 IF I FORMAT
- SBN /MTX/TFLI-/MTX/TFI
- ZJN EOV7 IF LI FORMAT
- LDD CM+4
- ZJN EOV8 IF NOT INTERNALLY WRITTEN TAPE
- LDD LT
- SHN -11
- LPN 3
- LMN 2
- NJN EOV8 IF NOT ANSI LABEL
- EOV7 AOD PB INCREMENT TO NEXT SECTION
- LJM EOVX RETURN
- EOV8 LJM EVO2 CLEAR VSN FIELD
- ETC SPACE 4,10
- ** ETC - END OF TAPE CHECK.
- *
- * CALLS CIF.
- ETC3 AOD PB INCREMENT TO NEXT SECTION
- ETC SUBR ENTRY/EXIT
- LDD LT
- SHN 21-11
- MJN ETC2 IF NON-STANDARD LABEL
- LDD SP
- SHN -12
- NJN ETC1 IF NOT READ TO TRAILER LABEL
- ETCA EQU *-1
- * PSN 0 ALWAYS PO = S FOR CTS
- LDD LT
- SHN 21-12
- MJN ETC3 IF LABELED
- RJM CIF CHECK INTERNAL TAPE FORMAT
- ZJN ETC3 IF INTERNAL FORMAT
- ETC1 LDM ETC SET EXIT ADDRESS
- STM EOV
- LJM EOV4 RETURN END OF REEL STATUS
- ETC2 LDD DS CHECK FOR END OF TAPE
- LPN 10
- NJN ETC1 IF END OF TAPE
- LJM EOF10 RETURN EOI
- EVO SPACE 4,10
- ** EVO - PROCESS *EOV2*.
- *
- * IF AN *EOV2* LABEL IS PRESENT, THE NEXT VSN WILL BE RETURNED
- * TO THE UDT.
- *
- * CALLS CLA, UAD, WUD.
- EVO5 AOD PB INCREMENT SECTION
- EVO SUBR ENTRY/EXIT
- RJM CLA CHECK LABEL
- LDM BUF
- LMC 2REO
- NJN EVO2 IF NOT *EO*
- LDM BUF+1
- LMC 2RV2
- NJN EVO2 IF NOT *EOV2*
- LDD PB
- SHN -6
- LMN /MTX/RLCF/100
- ZJN EVO5 IF CLOSE
- UJN EVO3 UPDATE UDT INFORMATION
- * ENTER HERE IF NOT TO RETURN NEXT VSN.
- EVO2 LDD PB
- SHN -6
- LMN /MTX/RLCF/100
- NJN EVO4 IF NOT CLOSE
- LJM RLAX ADVANCE TO NEXT LABEL TYPE
- EVO3 RJM WUD UPDATE UDT INFORMATION
- ZJN EVO4 IF NOT AT MAGNET CP
- SBK /MTX/UUDTL+/MTX/UUFN-/MTX/UVRI
- CRD CM
- ADK /MTX/UISN-/MTX/UVRI
- CRD CN
- LDM BUF+2 SET NEXT INTERNAL VSN
- STD CN
- LDM BUF+3
- STD CN+1
- LDM BUF+4
- STD CN+2
- LDD CM+4 SET VSN FROM *EOV2* LABEL FLAG
- SCN 10
- LMN 10
- STD CM+4
- RJM UAD UPDATE UDT
- ADK /MTX/UVRI
- CWD CM
- ADK /MTX/UISN-/MTX/UVRI
- CWD CN
- EVO4 LJM RET1 EXIT
- HDR SPACE 4,10
- ** HDR - PROCESS *HDR1*.
- *
- * CALLS CLA, CSC, GCD, GCH, /MFP/PHD, THL, VOL, WUD.
- HDR10 LDN /MTX/LAM LABEL MISSING
- LJM RET3 RETURN ERROR CODE
- HDR SUBR ENTRY/EXIT
- RJM CLA CHECK LABEL
- ZJN HDR2 IF GOOD LABEL
- HDR1 LDD PB
- SHN -6
- NJN HDR10 IF NOT INITIAL LABEL CHECK
- ERRNZ /MTX/RLCL
- STD PB SET TO RESTART SEQUENCE
- STM BUF
- RJM VOL
- UJN HDRX RETURN
- HDR2 LDM BUF CHECK FOR *HDR1*
- LMC 2RHD
- NJN HDR1 IF NOT *HD*
- LDM BUF+1
- LMC 2RR1
- NJN HDR1 IF NOT *HDR1*
- LDM UDTB+10 CLEAR LABEL EXPIRED
- SCN 2
- STM UDTB+10
- RJM WUD
- LDD PB CHECK IF MULTI FILE
- SHN -6
- SBN /MTX/RLCM/100
- MJN HDR3 IF NOT MULTI FILE
- RJM /MFP/PHD
- UJN HDR4 CHECK SYSTEM CODE
- HDR3 ADN 7 DETERMINE WHETHER TO TRANSFER HEADER
- NJN HDR4 IF NOT INITIAL LABEL CHECK
- RJM THL TRANSFER HEADER LABEL
- HDR4 RJM CSC CHECK SYSTEM CODE
- ZJN HDR5 IF INTERNALLY WRITTEN TAPE
- LDN 0 CLEAR EST FIELD
- STD T3
- UJN HDR6 CLEAR EST WRITTEN ON FIELD IN UDT
- HDR5 LDC 71D CONVERT EST WRITTEN ON
- STD T6
- RJM GCH
- SBN 1R0
- SHN 3
- STD T3
- RJM GCH
- SBN 1R0
- RAD T3
- RJM GCH GET POSSIBLE THIRD CHARACTER
- SBN 1R0
- STD T6
- LMN 1R -1R0
- ZJN HDR6 IF TWO DIGIT EST ORDINAL
- LDD T3
- SHN 3
- LMD T6
- STD T3
- HDR6 LDD T3 SAVE EST WRITTEN ON
- STM UDTB+5*5+1
- LDN JDAL READ TODAYS DATE
- CRD CN
- LDN 49D SET POSITION IN SOURCE BUFFER
- STD T6
- LDN CN SET DESTINATION BUFFER ADDRESS
- STM DBUF
- LDN 6
- STD T7
- LDN 5
- STD T2
- LDN 1R7 SET CENTURY CROSSOVER
- STD T0
- HDR7 RJM GCH GET EXPIRATION DATE CHARACTER
- SBD T0 CHECK CENTURY
- PJN HDR7.1 IF NOT 21ST CENTURY
- ADN 10D ADJUST DECADE FOR 21ST CENTURY
- HDR7.1 STD T4
- RJM GCD GET TODAYS DATE CHARACTER
- SBD T0 CHECK CENTURY
- PJN HDR7.2 IF NOT 21ST CENTURY
- ADN 10D ADJUST DECADE FOR 21ST CENTURY
- HDR7.2 SBD T4
- NJN HDR8 IF NO MORE COMPARES REQUIRED
- STD T0 CLEAR CENTURY CROSSOVER
- SOD T2
- NJN HDR7 IF MORE CHARACTERS TO COMPARE
- HDR8 MJN HDR9 IF NOT EXPIRED
- LDN 2 SET LABEL EXPIRED
- RAM UDTB+10
- HDR9 RJM WUD WRITE UDT INFORMATION
- LDN 0 INCREMENT TO NEXT SECTION
- STD PA
- AOD PB
- LJM HDRX RETURN
- OHD SPACE 4,10
- ** OHD - PROCESS *HDR2 - HDR9* OPTIONAL VOLUME LABELS.
- *
- * CALLS CLA.
- OHD SUBR ENTRY/EXIT
- RJM CLA CHECK LABEL
- NJN OHD1 IF BAD LABEL
- LDM BUF
- LMC 2RHD
- NJN OHD1 IF NOT *HD*
- LDC 2RR2
- SBM BUF+1
- ADD PA
- NJN OHD1 IF NOT *RN*
- AOD PA INCREMENT TO NEXT USER VOLUME NUMBER
- LMN 9D
- NJN OHDX IF NOT ALL POSSIBLE USER LABELS SKIPPED
- OHD1 LDN 0
- STD PA
- LJM RLAX ADVANCE TO NEXT LABEL TYPE
- PTM SPACE 4,10
- ** PTM - PROCESS TAPE MARK.
- *
- * CALLS CLA.
- PTM3 LDD PA INCREMENT BACKSPACE COUNT
- ADC 100
- STD PA
- ADC -MXBS*100
- PJN PTM2 IF MAXIMUM NUMBER OF BACKSPACES ATTEMPTED
- PTM SUBR ENTRY/EXIT
- LDD PA
- ZJN PTMX IF ONLY BACK UP 1 BLOCK
- LDD DS CHECK LOAD POINT STATUS
- SHN 21-2
- MJN PTM2 IF POSITIONED AT LOAD POINT
- RJM CLA CHECK LABEL
- SBN 1
- NJN PTM1 IF NOT A TAPE MARK
- LDD PA
- LPN 77
- SBN 1 DECREMENT TAPE MARK COUNT
- ZJN PTMX IF ALL TAPE MARKS READ
- STM PTMA
- LDD PA UPDATE TAPE MARK COUNT
- LPC 7700
- ADM PTMA
- STD PA
- PTM1 LDD MD
- SHN 21-12
- MJP PTM3 IF BACKSPACING
- LDD PA
- UJN PTMX RETURN
- PTM2 LDN /MTX/LAM LABEL MISSING
- LJM RET3 RETURN ERROR CODE
- PTMA CON 0 TEMPORARY STORAGE
- RBE SPACE 4,10
- ** RBE - RETURN *BEI* ERROR TO MAGNET.
- *
- * EXIT TO *RET3* WITH *BEI* ERROR.
- RBE BSS 0 ENTRY
- LDN /MTX/BEI SET *BEI* ERROR
- LJM RET3 RETURN ERROR TO MAGNET
- SBL SPACE 4,10
- ** SBL - SKIP BLOCK.
- SBL SUBR ENTRY/EXIT
- LDD EC
- LMN /MTX/BEI
- ZJN SBL1 IF TAPE MARK
- AOD PA INCREMENT BLOCK COUNT
- LMN 77 SKIP UP TO 64 BLOCKS
- NJN SBLX IF NOT MAXIMUM BLOCKS SKIPPED
- SBL1 STD PA
- LJM RLAX ADVANCE TO NEXT LABEL TYPE
- SDE SPACE 4,10
- ** SDE - SET ACTUAL DENSITY FOR 9 TRACK.
- *
- * EXIT DENSITY SET FROM UNIT STATUS.
- *
- * CALLS DTS.
- SDE SUBR ENTRY/EXIT
- LDD HP
- SHN 21-7
- MJN SDEX IF CTS
- SHN 21-0-21+7
- PJN SDEX IF 7 TRACK
- LDM DNCV CLEAR DENSITY
- SCN 70
- STM DNCV
- RJM DTS GET DETAILED STATUS
- LDM MTDS+4
- SDEA EQU *-1
- * LDM ATUS (ATS UNIT)
- SDEB SHN -6
- * SHN -3 (ATS UNIT)
- LPN 3
- STD T1
- LDM SDED,T1 GET EQUIVALENT DENSITY
- SDEC SHN 0
- * SHN 3 (ATS UNIT)
- LPN 70
- RAM DNCV SET DENSITY
- UJN SDEX RETURN
- ** DENSITY TABLE.
- * TABLE IS INDEXED BY VALUES IN DETAILED STATUS.
- *
- * 6/0,3/ MTS DENSITY, 3/ ATS DENSITY
- SDED VFD 6/0,3//MTX/D05,3//MTX/D16
- VFD 6/0,3//MTX/D08,3//MTX/D16
- VFD 6/0,3//MTX/D16,3//MTX/D08
- VFD 6/0,3//MTX/D16,3//MTX/D62
- SKR SPACE 4,10
- ** SKR - SKIP BLOCK REVERSE.
- *
- * EXIT (WP) DECREMENTED IF TAPE MARK OR BLOCK WITHOUT
- * ERROR WAS READ.
- SKR SUBR ENTRY/EXIT
- LDD EC
- ZJN SKR1 IF NO ERROR
- SKRA EQU *-1
- * UJN SKR2 CTS
- LMN /MTX/BEI
- NJN SKR2 IF NOT TAPE MARK
- SKR1 LDN 4 SET UNUSABLE BID
- STM BIDW,WP
- SOD WP BACK UP BID WINDOW
- PJN SKR2 IF NO UNDERFLOW
- LDN 7 RESET POINTER
- STD WP
- SKR2 RJM BKS BACKSPACE TAPE
- UJN SKRX RETURN
- BKS SPACE 4,10
- ** BKS - BACKSPACE TAPE.
- * WAIT BACKSPACE FUNCTION COMPLETE.
- * TIMES OUT AFTER APPROXIMATECY 25 FEET OF TAPE.
- *
- * EXIT (DS) = GENERAL STATUS.
- *
- * CALLS FCN, STW, WNB.
- BKS2 CON 0 ENTERED VIA *RJM FROM //STW
- SOD T2
- NJN BKS1 IF NOT TIMEOUT
- LDC ERR RESET ERROR EXIT
- STM STWC
- UJN BKS1 ATTEMPT 1 MORE TIME
- BKS SUBR ENTRY/EXIT
- LDD HP
- SHN 21-7
- MJN BKS1.2 IF CTS
- LDN 2 WAIT NOT BUSY
- RJM STW
- LDC F0113 BACKSPACE
- RJM FCN
- LDN 27
- STD T2
- LDC BKS2 SET RETURNED TIMEOUT FROM //STW
- STM STWC
- BKS1 LDN 2 WAIT NOT BUSY
- RJM STW
- LDC ERR RESET ERROR EXIT
- STM STWC
- BKS1.1 UJN BKSX RETURN
- BKS1.2 RJM WNB WAIT NOT BUSY
- LDC F0113 BACKSPACE BLOCK
- RJM FCN ISSUE FUNCTION
- RJM WNB WAIT NOT BUSY
- UJN BKS1.1 RETURN
- STM SPACE 4,10
- ** STM - SKIP TAPE MARK.
- *
- * CALLS CLA, SKR.
- STM3 AOD PB ADVANCE SECTION
- STM SUBR ENTRY/EXIT
- LDD PB
- SHN -6
- LMN /MTX/RLCF/100
- ZJN STM2 IF CLOSE
- RJM CLA CHECK LABELS
- SBN 1
- ZJN STM3 IF TAPE MARK
- LDN /MTX/LAM LABEL MISSING
- STM1 LJM RET3 RETURN ERROR CODE
- STM2 LDD EC
- LMN /MTX/BEI
- ZJN STM3 IF TAPE MARK
- RJM SKR SKIP BLOCK REVERSE
- LDN /MTX/BEI SET NOT TO SKIP TAPE MARKS REVERSE
- UJN STM1 RETURN ERROR CODE
- THL SPACE 4,10
- ** THL - TRANSFER HEADER LABEL.
- *
- * CALLS CCH, DCV, GCH.
- THL SUBR ENTRY/EXIT
- LDN 5 FILE IDENTIIFER
- STD T6
- LDN 21D
- STD T7
- LDN 17D
- RJM CCH
- LDN 41D SET IDENTIFIER
- STD T7
- LDN 6
- RJM CCH
- LDN 38D FILE SECTION NUMBER
- STD T7
- LDC 30004
- RJM DCV
- LDN 48D FILE SEQUENCE NUMBER
- STD T7
- LDC 30004
- RJM DCV
- LDN 58D GENERATION NUMBER
- STD T7
- LDC 30004
- RJM DCV
- LDN 56D GENERATION VERSION NUMBER
- STD T7
- LDC 20002
- RJM DCV
- RJM GCH SKIP CHARACTER
- LDN 61D CREATION DATE
- STD T7
- LDN 5
- RJM CCH
- RJM GCH SKIP CHARACTER
- LDN 5 EXPIRATION DATE
- RJM CCH
- LDN 47D ACCESSIBILITY
- STD T7
- LDN 1
- RJM CCH
- LJM THLX RETURN
- TMS SPACE 4,10
- ** TMS - TAPE MARK SENSE.
- *
- * USES PB, T7.
- *
- * CALLS CLA, SCH, VOL, WUD.
- TMS SUBR ENTRY/EXIT
- RJM CLA
- SBN 1
- MJN TMS2 IF NOT TAPE MARK
- LDD PB
- SHN -6
- NJN TMS1 IF NOT INITIAL LABEL CHECK
- ERRNZ /MTX/RLCL
- LDN 17D CLEAR LABEL CHECK IN PROGRESS
- STD T7
- LDN 0
- RJM SCH
- RJM WUD REWRITE UDT
- TMS1 LJM RET1 EXIT
- TMS2 LDD PB
- SHN -6
- ZJN TMS4 IF INITIAL LABEL CHECK SEQUENCE
- ERRNZ /MTX/RLCL
- TMS3 LDN /MTX/LCE LABEL CONTENT ERROR
- LJM RET3 RETURN ERROR CODE
- TMS4 LDN 0 SET TO RESTART SEQUENCE
- STD PB
- STM BUF
- RJM VOL
- UJN TMS3 RETURN LABEL CONTENT ERROR
- UHL SPACE 4,10
- ** UHL - PROCESS *UHLA* USER FILE HEADER LABELS.
- *
- * CALLS CLA.
- UHL SUBR ENTRY/EXIT
- RJM CLA CHECK LABEL
- NJN UHL1 IF BAD LABEL
- LDM BUF
- LMC 2RUH
- NJN UHL1 IF NOT *UH*
- LDM BUF+1
- SHN -6
- LMN 1RL
- NJN UHL1 IF NOT *UHLN*
- AOD PA INCREMENT TO NEXT USER VOLUME NUMBER
- LMC 64D+1
- NJN UHLX IF NOT ALL POSSIBLE USER LABELS SKIPPED
- LDN /MTX/LCE LABEL CONTENT ERROR
- LJM RET3 RETURN ERROR CODE
- UHL1 LDC 0
- * LDC 4000 (*VOL1* READ AND VALIDATE HEADER LABEL)
- UHLA EQU *-1
- STD PA
- LJM RLAX ADVANCE TO NEXT LABEL TYPE
- UTL SPACE 4,10
- ** UTL - PROCESS USER TRAILER LABELS.
- *
- * CALLS CLA.
- UTL SUBR ENTRY/EXIT
- RJM CLA CHECK LABEL
- NJN UTL1 IF BAD LABEL
- LDM BUF
- LMC 2RUT
- NJN UTL1 IF NOT *UT*
- LDM BUF+1
- SHN -6
- LMN 1RL
- NJN UTL1 IF NOT *UTLN*
- AOD PA
- LMC 64D+1
- NJN UTLX IF NOT ALL TRAILER LABELS SKIPPED
- LDN /MTX/LCE LABEL CONTENT ERROR
- LJM RET3 RETURN ERROR CODE
- UTL1 LDD PB
- SHN -6
- LMN /MTX/RLCF/100
- NJN UTL2 IF NOT CLOSE
- LJM RET1 EXIT
- UTL2 LDN 0
- STD PA
- LJM RLAX ADVANCE TO NEXT LABEL TYPE
- UVL SPACE 4,10
- ** UVL - PROCESS *UVLN* USER VOLUME LABELS.
- *
- * CALLS CLA, VOL.
- UVL SUBR ENTRY/EXIT
- RJM CLA CHECK LABEL
- NJN UVL1 IF BAD LABEL
- LDM BUF
- LMC 2RUV
- NJN UVL3 IF NOT *UV*
- LDM BUF+1
- ADC -2RL1
- SBD PA
- NJN UVL3 IF NOT *LN*
- AOD PA INCREMENT TO NEXT USER VOLUME NUMBER
- LMN 9D+1
- NJN UVLX IF NOT ALL POSSIBLE USER LABELS SKIPPED
- UVL1 LDD PB
- SHN -6
- NJN UVL2 IF NOT INITIAL LABEL CHECK SEQUENCE
- ERRNZ /MTX/RLCL
- STD PB RESTART LABEL CHECK SEQUENCE
- STM BUF
- RJM VOL
- UVL2 LMN 5
- ZJN UVL4 IF REEL CHECK
- LDN /MTX/LCE LABEL CONTENT ERROR
- LJM RET3 RETURN ERROR CODE
- UVL3 LDD PB CHECK IF HEADER VALIDATION
- SHN -6
- LMN /MTX/RLVH/100
- NJN UVL4 IF NOT HEADER VALIDATION
- LDC 4000 SET *VOL1* LABEL READ
- STM UHLA
- LDN 4 ADVANCE TO HDR1 CHECK
- RAD PB
- UVL4 LJM RLAX ADVANCE TO NEXT LABEL TYPE
- VOL SPACE 4,10
- ** VOL - PROCESS *VOL1* LABEL.
- *
- * CALLS CCH, CLA, C2D, DBT, FCH, SCH, SDE, UAD, UDA, WUD.
- VOL SUBR ENTRY/EXIT
- LDC BUF SET UP BUFFER ADDRESSES
- STM IBUF
- LDC UDTB
- STM DBUF
- LDD PB
- SHN -6
- ZJN VOL1 IF INITIAL LABEL CHECK
- ERRNZ /MTX/RLCL
- LMN /MTX/RLVH/100
- NJN VOL3 IF NOT HEADER VALIDATION
- RJM DBT DETERMINE BLOCK TYPE
- NJN VOL3 IF GOOD BLOCK
- LJM VOL6 PROCESS TAPE MARK OR BAD BLOCK
- VOL1 RJM CLA CHECK LABEL
- ZJN VOL4 IF GOOD LABEL
- LDD EC
- LMN /MTX/BTA
- ZJN VOL2 IF BLANK TAPE
- LMN /MTX/BTL&/MTX/BTA
- NJN VOL6 IF NOT *BLOCK TOO LARGE* ERROR
- LDD HP
- SHN 21-7
- MJN VOL2 IF CTS
- SHN 21-0-21+7
- PJN VOL6 IF 7 TRACK
- VOL2 LJM VOL12 PRESET *UDT* FOR UNLABELED TAPE
- VOL3 RJM CLA CHECK LABEL
- NJN VOL6 IF BAD LABEL
- VOL4 LDM BUF CHECK FOR *VOL1*
- LMC 2RVO
- NJN VOL6 IF NOT *VO*
- LDM BUF+1
- LMC 2RL1
- NJN VOL6 IF NOT *L1*
- LDD PB
- SHN -6
- ZJN VOL5 IF INITIAL LABEL CHECK
- ERRNZ /MTX/RLCL
- LJM VOL22 INCREMENT TO NEXT SECTION
- VOL5 LJM VOL15 SET GOOD *VOL1* LABEL
- VOL6 LDD PB
- SHN -6
- ZJN VOL9 IF INITIAL LABEL SEQUENCE
- ERRNZ /MTX/RLCL
- LMN /MTX/RLVH/100
- NJN VOL7 IF NOT HEADER VALIDATION
- AOD PB ADVANCE SECTION
- LJM RLAX ADVANCE TO NEXT LABEL TYPE
- VOL7 LMN 4&10
- NJN VOL8 IF NOT OPEN
- LDM CIOE
- LPC 1774
- LMC 110
- NJN VOL8 IF NOT *POSMF*
- LDN 1 ADVANCE TO *HDR1* CHECK
- RAD PB
- LJM RLAX ADVANCE TO NEXT LABEL TYPE
- VOL8 LDN /MTX/LAM LABEL MISSING
- LJM RET3 RETURN ERROR CODE
- VOL9 LDD HP
- SHN 21-7
- MJN VOL10 IF CTS
- SHN 21-0-21+7
- MJN VOL10 IF 9 TRACK
- LCN 10 TRY NEXT LOWER DENSITY
- RAM DNCV
- LPN 70
- NJN VOL11 IF MORE DENSITIES TO TRY
- UJN VOL12 PRESET UDT FOR UNLABELED TAPE
- VOL10 LDM DNCV
- LPN 7
- SBN /MTX/MCCO-1
- PJN VOL12 IF ALL CONVERSION MODES TRIED
- LDN 0 TRY ANOTHER CONVERSION MODE
- STD PA
- AOM DNCV INCREMENT TO NEXT CONVERSION MODE
- VOL11 LJM RET1 EXIT
- VOL12 LDD PB
- SHN -6
- LMK /MTX/RLCL
- ZJN VOL13 IF INITIAL LABEL SEQUENCE
- LJM VOL6 ADVANCE SECTION COUNT
- * SET UDT LABEL PARAMETERS FOR UNLABELED TAPE.
- VOL13 LDD LT
- LPC 777 CLEAR LABELED FLAGS
- STD LT
- RJM UAD
- ADK /MTX/UST4
- CWD LT
- LDM DNCV CLEAR CONVERSION MODE
- SCN 7
- STM DNCV UPDATE CONVERSION MODE
- RJM SDE SET DENSITY FOR 9 TRACK
- LDD EO SET EST ORDINAL IN DEFAULT VSN
- SHN -6
- RAM TDLP+6
- LDD EO
- RJM C2D
- STM TDLP+7
- LDD HP
- LPN 20
- ZJN VOL14 IF NOT ATS UNIT
- LDM MTDS
- LPC 177
- LMN 7
- NJN VOL14 IF UNIT CAPABLE OF TAPE DENSITY
- LDC 400 SET DENSITY MISMATCH
- RAM TDLP+1*5+3
- LDN 2
- STD T6
- LDD MA
- CWM VOLB,T6 *WRONG DENSITY*
- SBN 2
- CRM TDLP+2*5,T6
- VOL14 LDN JDAL READ JULIAN DATE
- CRM BUF,ON
- LDC OVLM RESET DESTINATION BUFFER
- STM DBUF
- LDN 6 SET UP CREATION DATE
- STD T6
- LDN 1 SET EXPIRATION DATE
- STD T7
- LDN 5
- RJM CCH
- LDN 6
- STD T6
- LDN 5
- RJM CCH
- RJM UDA
- CWM TDLP,T1
- LJM VOL11 UPDATE CONVERSION MODE AND LABELED FLAGS
- * PROCESS GOOD *VOL1* LABEL.
- VOL15 RJM SDE SET DENSITY FOR 9 TRACK
- LDN 5 MOVE VSN TO UDT
- STD T6
- LDN 11D
- STD T7
- LDN 6
- RJM CCH
- LDN 40 SET LABEL CHECK IN PROGRESS FLAG
- RJM SCH STORE CHARACTER
- LDN 3 FILL THREE CHARACTERS WITH ZERO
- RJM FCH
- LDN 11D COPY VOLUME ACCESSIBILITY TO *UGNU*
- STD T6
- LDN 55D
- STD T7
- LDN 1
- RJM CCH
- RJM WUD WRITE UDT LABEL AREA
- * SET TO PROCESS NEXT LABEL OPERATION.
- VOL22 LDN 0
- STD PA
- AOD PB INCREMENT TO NEXT LABEL OPERATION
- LJM VOLX RETURN
- VOLB VFD 60/10LWRONG DENS
- VFD 42/7LITY ,18/1
- WEL SPACE 4,10
- ** WEL - WRITE EXTENDED LABELS TO USER BUFFER.
- *
- * CALLS ELA.
- WEL2 LDN ZERL SET UP CONTROL WORD
- CRM BUFC,ON
- LDC 80D
- STM BUFC+4
- LDN ZERL SET TERMINATOR WORD
- CRM BUF+40D,ON
- LDN 12 RETURN LABEL TO USER BUFFER
- STD T5
- RJM ELA
- CWM BUFC,T5
- WEL SUBR ENTRY/EXIT
- WELA UJN WELX RETURN
- * PSN (EXTENDED LABELS)
- LDD BY
- ZJN WELX IF EOF READING LABEL
- LDN 0
- STD T6
- STD T7
- WEL1 RJM ELA GET LABEL BUFFER ADDRESS
- ZJN WELX IF END OF BUFFER
- CRD CM
- LDD CM+4
- ZJN WEL2 IF END OF LABELS IN BUFFER
- LDN 11 UPDATE POSITION IN BUFFER
- RAD T7
- SHN -14
- RAD T6
- UJN WEL1 LOOP
- WNB SPACE 4,10
- ** WNB - WAIT NOT BUSY.
- *
- * CALLS /PRESET/GPS.
- WNB SUBR ENTRY/EXIT
- WNB1 LDN 2 WAIT NOT BUSY
- RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS
- MJN WNB1 IF COMMAND RETRY
- UJN WNBX RETURN
- ZRO SPACE 4,10
- ** ZRO - ZERO FIRST WORD OF XL BUFFER.
- *
- * CALLS ELA.
- ZRO SUBR ENTRY
- LDN 0
- STD T6
- STD T7
- LDN ZERL
- CRD CN
- RJM ELA GET XL BUFFER ADDRESS
- ZJN ZRO1 IF END OF BUFFER
- CWD CN PRESET BUFFER
- ZRO1 LJM RLAX ADVANCE TO NEXT LABEL TYPE
- TITLE CHARACTER PROCESSING SUBROUTINES.
- SPACE 4,10
- ** DIRECT CELL USAGE IN FOLLOWING ROUTINES.
- *
- * ENTRY (T5) = NUMBER OF CHARACTERS.
- * (T6) = CHARACTER POSITION IN INPUT BUFFER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * ALL CHARACTER POSITIONS ARE REFERENCED STARTING WITH *1*.
- * THUS, THE CHARACTER POSITION VALUES BEING USED TO ACCESS
- * *BUF* MAY BE REFERENCED DIRECTLY TO THE LABEL STANDARD.
- IBUF CON 0 FWA OF FETCH BUFFER
- DBUF CON 0 FWA OF DESTINATION BUFFER
- CAN SPACE 4,15
- ** CAN - COMPARE ALPHANUMERIC FIELDS.
- * COMPARE WILL BE GOOD IF ALL OF INPUT CHARACTER STRING IS
- * BINARY ZERO.
- *
- * ENTRY (A) = NUMBER OF CHARACTERS TO COMPARE.
- * (T6) = CHARACTER POSITION IN INPUT BUFFER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * EXIT (A) = 0, GOOD COMPARE.
- * (A) .NE. 0, (A) = CHARACTER POSITION AT START.
- * (T6), (T7) = UPDATED.
- *
- * USES T3, T4.
- *
- * CALLS GCD, GCH.
- CAN4 SOD T5 UPDATE TO SKIP REMAINDER OF FIELD
- RAD T6
- LDD T5
- RAD T7
- LDD T3
- CAN SUBR ENTRY/EXIT
- STD T5
- STD T4
- LDD T6 SAVE STARTING POSITION
- STD T3
- CAN1 RJM GCH GET CHARACTER
- NJN CAN2 IF SPECIFIED
- SOD T4
- NJN CAN1 IF MORE CHARACTERS TO CHECK
- LDD T5
- RAD T7
- LDN 0 GOOD COMPARE
- UJN CANX RETURN
- CAN2 LDD T3 RESET CHARACTER POSITION
- STD T6
- CAN3 RJM GCH GET CHARACTER
- STD T4
- RJM GCD GET CHARACTER FROM DESTINATION BUFFER
- LMD T4
- NJN CAN4 IF NO COMPARE
- SOD T5
- NJN CAN3 IF MORE CHARACTERS TO COMPARE
- UJN CANX RETURN
- CBC SPACE 4,10
- ** CBC - CHECK BLOCK COUNT.
- *
- * CALLS DCV.
- CBC SUBR ENTRY/EXIT
- LDD SP
- SHN 21-1
- MJN CBCX IF IGNORE ERRORS
- LDN CN SET DESTINATION BUFFER
- STM DBUF
- LDN 0
- STD CN
- LDN 55D
- STD T6
- LDN 2
- STD T7
- LDC 30006
- RJM DCV
- LDC UDTB RESET DESTINATION BUFFER
- STM DBUF
- LDD CN
- LMD BL
- NJN CBC1 IF ERROR IN BLOCK NUMBER
- LDD CN+1
- LMD BL+1
- ZJN CBCX IF GOOD BLOCK COUNT
- CBC1 LDN /MTX/LBE LABEL BLOCK COUNT ERROR
- LJM RET3 RETURN ERROR CODE
- CCH SPACE 4,15
- ** CCH - COPY INPUT BUFFER TO DESTINATION BUFFER.
- *
- * ENTRY (A) = NUMBER OF CHARACTERS TO MOVE.
- * (T6) = CHARACTER POSITION IN INPUT BUFFER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * EXIT (T6), (T7) = INCREMENTED.
- *
- * USES T5.
- *
- * CALLS GCH, SCH.
- CCH SUBR ENTRY/EXIT
- STD T5
- CCH1 RJM GCH GET LABEL CHARACTER
- RJM SCH STORE CHARACTER IN USER BUFFER
- SOD T5
- NJN CCH1 IF MORE CHARACTERS TO MOVE
- UJN CCHX RETURN
- CIF SPACE 4,10
- ** CIF - CHECK INTERNAL TAPE FORMAT.
- *
- * EXIT (A) = 0 IF I, SI, OR LI TAPE FORMAT.
- CIF SUBR ENTRY/EXIT
- LDD FM
- SHN -6
- LMN /MTX/TFI
- ZJN CIFX IF I FORMAT
- LMN /MTX/TFSI&/MTX/TFI
- ZJN CIFX IF SI FORMAT
- LMN /MTX/TFLI&/MTX/TFSI
- UJN CIFX RETURN WITH STATUS
- CSC SPACE 4,10
- ** CSC - CHECK SYSTEM CODE.
- *
- * EXIT (A) = 0, IF INTERNALLY WRITTEN TAPE (SYSTEM CODE
- * IN HDR1 LABEL = KRONOS 2.1 OR NOS).
- *
- * CALLS CAN, GCH.
- CSC1 LDN 1
- CSC SUBR ENTRY/EXIT
- LDN 61D
- STD T6
- LDC CSCA CHECK IF KRONOS 2.1
- STM DBUF
- LDN 1
- STD T7
- RJM GCH
- ZJN CSC1 IF FIELD NOT SPECIFIED
- SOD T6
- LDN 10D COMPARE FIELDS
- RJM CAN
- ZJN CSCX IF COMPARE
- LDN 61D CHECK FOR NOS SYSTEM CODE
- STD T6
- LDN 6
- RJM CAN COMPARE FIELDS
- UJN CSCX RETURN
- CSCA DATA H*KRONOS2.1-*
- DATA H*NOS *
- DCV SPACE 4,15
- ** DCV - CONVERT DECIMAL FIELD TO BINARY.
- *
- * ENTRY (A, 13 - 12) = NUMBER OF CHARACTER POSITIONS IN RESULT.
- * (A, 11 - 0) = NUMBER OF CHARACTERS IN LABEL FIELD.
- * (T6) = CHARACTER POSITION IN INPUT BUFFER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * EXIT (T6), (T7) = INCREMENTED.
- *
- * USES T2, T3, T4, T5.
- *
- * CALLS GCH, SCH.
- DCV SUBR ENTRY/EXIT
- STD T5 NUMBER OF CHARACTERS IN LABEL
- SHN -14
- STD T4 NUMBER OF CHARACTER POSITIONS IN UDT
- LDN 0 PRESET RESULT
- STD T2
- STD T3
- DCV1 RJM GCH GET CHARACTER
- SBN 1R0
- RAD T3
- SHN -14
- RAD T2
- SOD T5
- ZJN DCV2 IF ALL DIGITS PROCESSED
- LDD T2 10D * ACCUMULATED RESULT
- SHN 14
- ADD T3
- SHN 2+6 * 4
- ADD T2 * 5
- SHN 14
- ADD T3
- SHN 1 * 10D
- STD T3
- SHN -14
- STD T2
- UJN DCV1 LOOP
- DCV2 LDD T4
- LMN 3
- NJN DCV3 IF NOT 3 CHARACTER POSITIONS
- LDD T2 STORE VALUE
- RJM SCH STORE CHARACTER
- UJN DCV4
- DCV3 LMN 2&3
- NJN DCV5 IF NOT 2 CHARACTER POSIITONS
- DCV4 LDD T3 STORE VALUE
- SHN -6
- RJM SCH STORE CHARACTER
- DCV5 LDD T3
- LPN 77
- RJM SCH STORE CHARACTER
- LJM DCVX RETURN
- FCH SPACE 4,15
- ** FCH - FILL DESTINATION BUFFER WITH CHARACTER(S).
- *
- * ENTRY (A, 17- 12) = CHARACTER TO FILL WITH.
- * (A, 11 - 0) = NUMBER OF CHARACTERS TO FILL.
- * (T7) = CHARACTER POINTER IN DESTINATION BUFFER.
- *
- * EXIT (T7) = INCREMENTED.
- *
- * USES T4.
- *
- * CALLS SCH.
- FCH SUBR ENTRY/EXIT
- STD T5 SAVE COUNT
- SHN -14
- STD T4 SAVE FILL VALUE
- FCH1 LDD T4 STORE CHARACTER
- RJM SCH
- SOD T5
- NJN FCH1 IF MORE TO FILL
- UJN FCHX RETURN
- GCD SPACE 4,10
- ** GCD - GET CHARACTER FROM DESTINATION BUFFER.
- *
- * ENTRY (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * EXIT (A) = CHARACTER.
- * (T7) = INCREMENTED.
- *
- * USES T1.
- GCD1 LDM -1,T1
- LPN 77
- GCD SUBR ENTRY/EXIT
- AOD T7
- SBN 1
- SHN 21
- ADM DBUF
- STD T1
- SBM DBUF
- SHN -21
- ZJN GCD1 IF LOWER 6 BITS
- LDI T1
- SHN -6
- UJN GCDX RETURN
- GCH SPACE 4,10
- ** GCH - GET CHARACTER FROM INPUT BUFFER.
- *
- * ENTRY (T6) = CHARACTER POSITION IN INPUT BUFFER.
- *
- * EXIT (A) = CHARACTER.
- * (T6) = INCREMENTED.
- *
- * USES T1.
- GCH1 LDM -1,T1
- LPN 77
- GCH SUBR ENTRY/EXIT
- AOD T6
- SBN 1
- SHN 21
- ADM IBUF
- STD T1
- SBM IBUF
- SHN -21
- ZJN GCH1 IF LOWER 6 BITS
- LDI T1
- SHN -6
- UJN GCHX RETURN
- RUD SPACE 4,10
- ** RUD - READ UNIT DESCRIPTOR TABLE LABEL INFORMATION.
- * OPERATION ONLY PERFORMED AT *MAGNET* CP.
- *
- * CALLS UDA.
- RUD SUBR ENTRY/EXIT
- RJM UDA GET UDT LABEL ADDRESS ADDRESS
- ZJN RUDX IF NOT AT MAGNET CP
- CRM UDTB,T1
- UJN RUDX RETURN
- SCH SPACE 4,10
- ** SCH - STORE CHARACTER IN DESTINATION BUFFER.
- *
- * ENTRY (A) = CHARACTER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * EXIT (T7) = INCREMENTED.
- *
- * USES T1.
- SCH1 LDM -1,T1
- SCN 77
- LMD T0
- SCH2 STM -1,T1
- SCH SUBR ENTRY/EXIT
- LPN 77
- STD T0 SAVE CHARACTER
- AOD T7 INCREMENT POSITION
- SHN 21 SET BYTE ADDRESS
- ADM DBUF
- STD T1
- SBM DBUF
- SHN -21
- NJN SCH1 IF EVEN CHARACTER
- LDM -1,T1
- LPN 77
- SHN 14
- LMD T0
- SHN 6
- UJN SCH2 STORE CHARACTER
- UDA SPACE 4,10
- ** UDA - SET ADDRESS OF UDT LABEL PARAMETERS.
- *
- * EXIT (A) = ADDRESS OF UDT LABEL PARAMETERS (*UUFN*) IF AT
- * MAGNET CP.
- * (A) = 0 IF NOT AT MAGNET CP.
- * (T1) = LENGTH OF UDT LABEL PARAMETERS (*UUDTL*) IF AT
- * MAGNET CP.
- *
- * USES T1.
- *
- * CALLS UAD.
- UDA1 LDN 0 SET NOT AT MAGNET CP
- UDA SUBR ENTRY/EXIT
- LDM //CECB
- LPN 77
- NJN UDA1 IF NOT AT MAGNET CP
- LDN /MTX/UUDTL
- STD T1
- RJM UAD
- ADK /MTX/UUFN SET LABEL PARAMETERS ADDRESS
- UJN UDAX RETURN
- WUD SPACE 4,10
- ** WUD - WRITE UNIT DESCRIPTOR TABLE.
- *
- * EXIT (A) = LWA+1 OF LABEL PARAMETERS IF AT MAGNET CP.
- * (A) = 0 IF NOT AT MAGNET CP.
- * LABEL PARAMETERS WRITTEN TO UDT IF AT MAGNET CP.
- *
- * CALLS UDA.
- WUD SUBR ENTRY/EXIT
- RJM UDA GET UDT LABEL ADDRESS ADDRESS
- ZJN WUDX IF NOT AT MAGNET CP
- CWM UDTB,T1
- UJN WUDX RETURN
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPC2D
- BUFFER SPACE 4,10
- USE BUFFER
- TADD TSAD ADDRESS TABLE
- SPACE 4,10
- ** DEFAULT LABEL PARAMETERS FOR UNLABELED TAPES.
- TDLP BSS 0
- VFD 42/7L ,6/0,12/0 *UUFN*
- VFD 36/6L***000,12/6,12/0 *UVSN*
- VFD 60/10LUNLABELED. *UFID*
- VFD 42/7L ,18/1 *UFSN*
- VFD 36/6L ,6/1L ,18/1 *USID*
- VFD 24/,6/1L ,12/0,18/1 *UGNU*
- SPACE 4,10
- ** UDT LABEL INFORMATION BUFFER (*UUFN* - *UDAT*).
- UDTB BSS /MTX/UUDTL*5 LABEL INFORMATION BUFFER
- SPACE 4,10
- ** THE FOLLOWING ROUTINES WILL BE OVERLAID IF THE OPERATION
- * IS CHECK MULTI-FILE LABELS (*RLCM*) OR VALIDATE HEADER LABEL
- * (*RLVH*).
- OVLM BSS 0 MULTI-FILE OVERLAY ORIGIN
- BTA SPACE 4,10
- ** BTA - BLANK TAPE CHECK.
- *
- * EXIT (EC) = /MTX/BTA IF BLANK TAPE.
- *
- * CALLS DTS.
- BTA SUBR ENTRY/EXIT
- LDD HP
- SHN 21-7
- MJN BTA3 IF CTS
- LDC RJMI RESET *STW* EXIT
- STM STWC-1
- LDC //ERR
- STM STWC
- LDD DS
- SHN 21-13
- MJN BTA1 IF ALERT
- RJM DTS GET DETAILED STATUS
- BTA1 LDM MTDS CHECK FOR BLANK TAPE
- LPC 77
- * LPC 177 (ATS UNIT)
- BTAA EQU *-1
- LMN 16
- BTAB PSN
- * ZJN BTA2 (ATS UNIT - IF AGC FAILURE)
- LMN 16&10
- NJN BTA3 IF NOT BLANK TAPE
- LDN /MTX/BTA
- BTA2 STD EC
- BTA3 LJM RLAX ADVANCE SECTION
- CFU SPACE 4,15
- ** CFU - COMPARE FAMILY AND USER NAMES.
- *
- * ENTRY (IBUF) = *BUF*.
- *
- * EXIT (A) = 0 IF FAMILY/USER NAME IN *VOL1* LABEL MATCHES
- * FAMILY/USER FROM UDT.
- * (IBUF) = *BUF*.
- * (DBUF) = *UDTB*.
- *
- * USES T1, T2, T6, T7, CM - CM+4, CN - CN+4.
- *
- * CALLS CAN, CCH.
- CFU SUBR ENTRY/EXIT
- * SET *VOL1* LABEL OR *ZFAM* FAMILY NAME.
- LDN 38D SET LOCATION OF FAMILY NAME IN LABEL
- STD T6
- LDN CM SET DESTINATION BUFFER
- STM DBUF
- LDN 1
- STD T7
- LDN 7 SET CHARACTER COUNT
- RJM CCH MOVE LABEL FAMILY NAME
- LDD CM+3
- SCN 77
- LMN 1R
- STD CM+3
- LDN CM+4
- STD T2
- CFU1 SOD T2
- LMN CM-1
- ZJN CFU3 IF ALL BYTES PROCESSED
- LDI T2
- LMC 2R
- NJN CFU2 IF NOT BLANK BYTE
- STI T2 SET ZERO FILL
- UJN CFU1 CHECK NEXT BYTE
- CFU2 LPN 77
- NJN CFU3 IF NO MORE TRAILING BLANKS
- LDI T2
- SCN 77 SET ZERO FILL
- STI T2
- CFU3 LDD CM CHECK FOR NULL FAMILY NAME
- ADD CM+1
- ADD CM+2
- ADD CM+3
- NJN CFU4 IF NOT NULL FAMILY NAME
- LDD MA
- CWM CFUA,ON
- SBN 1
- CRD CM SET *ZFAM* FAMILY NAME FOR COMPARE
- * SET CURRENT FAMILY NAME.
- CFU4 LDK FOTP GET FOT POINTER
- CRD CN
- LDM UDTB+3 SET FOT ORDINAL
- LPN 77
- STD T1
- LDD CN SET FOT ADDRESS
- SHN 14
- ADD CN+1
- ADD T1
- CRD CN READ FAMILY NAME
- * COMPARE FAMILY NAMES.
- LDD CM
- LMD CN
- NJN CFU5 IF NO MATCH
- LDD CM+1
- LMD CN+1
- NJN CFU5 IF NO MATCH
- LDD CM+2
- LMD CN+2
- NJN CFU5 IF NO MATCH
- LDD CM+3
- LMD CN+3
- SCN 77
- NJN CFU5 IF NO MATCH
- * COMPARE USER NAMES.
- LDN 45D SET LABEL USER NAME POINTER
- STD T6
- LDC UDTB RESTORE DESTINATION BUFFER
- STM DBUF
- LDN 1 SET UDT USER NAME POINTER
- STD T7
- LDN 7
- RJM CAN COMPARE USER NAMES
- CFU5 LJM CFUX RETURN WITH STATUS
- CFUA VFD 48/0L"ZFAM"
- CLR SPACE 4,10
- ** CLR - CHECK LABELED REEL REQUIRED.
- *
- * EXIT TO CALLER IF TO ACCEPT UNLABELED REEL.
- * TO *SEC* IF LABELED REEL REQUIRED.
- CLR SUBR ENTRY/EXIT
- LDD LT
- SHN -11
- LPN 3
- LMN 2
- NJN CLRX IF NOT ANSI LABELED TAPE REQUESTED
- LDD UP
- SHN 21-12
- MJN CLR1 IF NOT INITIAL REEL CHECK
- LDD LT
- SHN 21-13
- MJN CLRX IF *OPEN WRITE* TO BE PERFORMED BY *RESEX*
- CLR1 LDN /MTX/NLB *NEEDS LABEL.*
- LJM SEC SET ERROR CODE
- HLC SPACE 4,10
- ** HLC - HEADER LABEL CHECK.
- *
- * ENTRY (MD, 0) = 1, IF REQUESTER IS NOT OWNER.
- *
- * CALLS CLA, CLR, CSC, GCH, HDR.
- HLC SUBR ENTRY/EXIT
- * CHECK FOR *HDR1* LABEL.
- RJM CLA CHECK LABEL
- NJN HLC1 IF NOT GOOD LABEL
- LDM BUF
- LMC 2RHD
- NJN HLC1 IF NOT *HDR1* LABEL
- LDM BUF+1
- LMC 2RR1
- ZJN HLC3 IF *HDR1* LABEL
- HLC1 RJM CLR CHECK LABELED REEL REQUIRED
- LJM HLC8 RETURN
- * CHECK FILE ACCESS PERMISSIONS.
- HLC3 RJM CSC CHECK SYSTEM CODE
- STD T4
- LDC UDTB RESET BUFFER
- STM DBUF
- LDD SP
- SHN 21-10
- PJN HLC7 IF NOT ENFORCING ACCESS RESTRICTIONS
- LDD T4
- NJN HLC7 IF NOT INTERNALLY WRITTEN TAPE
- LDN 54D SET ACCESSIBILITY
- STD T6
- RJM GCH GET CHARACTER
- STD T4
- LMN 1R
- ZJN HLC7 IF UNLIMITED ACCESS
- LMN 1RA&1R
- NJN HLC4 IF NOT RESTRICTED TO THIS USER
- LDD MD
- LPN 1
- ZJN HLC7 IF REQUESTER IS OWNER OF THIS REEL
- UJN HLC5 DISPLAY ERROR MESSAGE
- HLC4 LDM UDTB+4 GET SPECIFIED FILE ACCESS
- SHN -6
- LMD T4
- ZJN HLC7 IF MATCHING FILE ACCESS
- HLC5 LDN /MTX/CAD *CAN-T ACCESS DATA.*
- HLC6 LJM SEC SET ERROR CODE
- * RETURN *HDR1* LABEL INFORMATION TO UDT.
- HLC7 RJM HDR PROCESS HEADER LABEL
- HLC8 LJM RET1 EXIT
- SEC SPACE 4,10
- ** SEC - SET *RRJ* ERROR AND SUB-CODE.
- *
- * ENTRY (A) = *RRJ* ERROR SUB-CODE.
- SEC BSS 0 ENTRY
- STM ERSC SET ERROR SUB-CODE
- LDK /MTX/RRJ
- LJM RET3 RETURN *RRJ* ERROR
- VLC SPACE 4,10
- ** VLC - VOLUME LABEL CHECK.
- *
- * EXIT (MD, 0) = 1, IF NOT MATCHING USER NAME AND EXIT
- * TO NEXT SECTION.
- *
- * CALLS CAN, CCH, CFU, CLL, GCH, UAD, WUD.
- VLC SUBR ENTRY/EXIT
- * CHECK WRITE ENABLE ENFORCEMENT.
- LDD SP
- SHN 21-4
- PJN VLC2 IF WRITE ACCESS NOT REQUIRED
- LDD DS
- SHN 21-7
- MJN VLC2 IF TAPE WRITE ENABLED
- LDN /MTX/WRD *WRITE DISABLED*
- VLC1 LJM SEC SET ERROR CODE
- * CHECK FOR *VOL1* LABEL.
- VLC2 RJM CLL CHECK LABEL LENGTH
- NJN VLC3 IF NOT CORRECT SIZE FOR ANSI LABEL
- LDM BUF
- LMC 2RVO
- NJN VLC3 IF NOT *VOL1* LABEL
- LDM BUF+1
- LMC 2RL1
- ZJN VLC8 IF *VOL1* LABEL
- * PROCESS *VOL1* LABEL NOT FOUND.
- VLC3 RJM CLR CHECK LABELED REEL REQUIRED
- LDD EC
- LMN /MTX/BTA
- NJN VLC5 IF NOT BLANK TAPE
- LDD UP SET BLANK TAPE FLAG
- SCN 4
- LMN 4
- STD UP
- VLC5 RJM WUD REWRITE UDT
- LJM RET1 ACCEPT THIS REEL
- * CHECK VSN.
- VLC8 LDN 5 COMPARE VSNS
- STD T6
- LDN 11D
- STD T7
- LDN 6
- RJM CAN COMPARE FIELDS
- ZJN VLC10 IF VSN,S MATCH
- RJM UAD
- ADK /MTX/UESN
- CRD CM
- LDD CM+4
- SHN 21-5
- MJN VLC9 IF SCRATCH TAPE REQUESTED
- LDN /MTX/WVS *WRONG VSN.*
- LJM SEC SET ERROR CODE
- VLC9 LDN 5 COPY VSN TO UDT
- STD T6
- LDN 11D
- STD T7
- LDN 6
- RJM CCH COPY CHARACTERS
- RJM WUD REWRITE UDT
- * CHECK UNLABELED ACCESS TO LABELED TAPE.
- VLC10 LDD LT
- SHN -11
- LPN 3
- LMN 2
- ZJN VLC11 IF ANSI LABELED REQUEST
- LDN 11D CHECK VOLUME ACCESSIBILITY
- STD T6
- RJM GCH GET CHARACTER
- LMN 1R
- ZJN VLC11 IF UNLIMITED ACCESS
- LDD SP
- LPN 10
- NJN VLC11 IF WRITE ACCESS DISABLED
- LDD SP
- SHN 21-10
- PJN VLC13 IF NOT ENFORCING ACCESS RESTRICTIONS
- LDN /MTX/CAD *CAN-T ACCESS DATA.*
- LJM SEC SET ERROR CODE
- * CHECK FAMILY AND USER NAME FOR FILE OWNERSHIP CHECK.
- VLC11 RJM CFU CHECK FAMILY AND USER NANE
- ZJN VLC12 IF MATCHING FAMILY/USER NAME
- AOD MD SET NO USER NAME MATCH
- VLC12 AOD PB INCREMENT TO NEXT SECTION
- VLC13 LJM VLCX RETURN
- OVLML EQU * END OF OVERLAY AREA
- BUFC EQU /READ/LBUF
- BUF EQU BUFC+5
- ERROVL OVLML
- PRS SPACE 4,10
- PRSD BSS 0 FWA OF RELOCATED INITIAL LABEL ERROR CODE
- LOC .LERA INITIAL LABEL HANDLER
- LER SPACE 4,10
- ** LER - HANDLE LABEL ERRORS AT LOAD POINT AND ON INITIAL
- * LABEL CHECKING DONE BY SCANNER.
- *
- * ENTRY (/READ/STAP) = PREVIOUS GENERAL STATUS.
- * DS = CURRENT GENERAL STATUS.
- *
- * EXIT TO *CLA7* = FATAL LABEL ERROR.
- * TO *RLA5* = REREAD LABEL PRU.
- *
- * CALLS BKS, FCN, WFC.
- LER SUBR ENTRY/EXIT
- LDM /READ/STAP LOAD PREVIOUS GENERAL STATUS
- LPN 4
- ZJN LER1 IF NOT AT LOAD POINT BEFORE READ
- RJM CLL CHECK LABEL LENGTH
- NJN LER2 IF NOT LABEL PRU
- AOM LERA INCREMENT LABEL RETRY COUNTER
- SBN 4
- PJN LER2 IF THREE TRIES ON THIS PRU HAVE BEEN TRIED
- LDN F0010 REWIND TO LOAD POINT
- RJM FCN
- LDD HP
- SHN 21-7
- PJN LER0 IF NOT CTS
- RJM WNB WAIT NOT BUSY
- UJN LER0.1 REREAD LABEL PRU
- LER0 RJM WFC
- LER0.1 LJM RLA5 REREAD LABEL PRU FROM LOAD POINT
- LER1 AOM LERA INCREMENT LABEL PRU REREAD COUNT
- SBN 4
- PJN LER2 IF THREE TRIES ON THIS PRU HAVE BEEN DONE
- RJM BKS BACKSPACE ONE PRU
- LJM RLA5 REREAD LABEL PRU
- LER2 LJM CLA7 FATAL INITIAL LABEL READ ERROR
- LERA CON 0 LABEL RETRY COUNTER
- WFC SPACE 4,10
- ** WFC - WAIT BACKSPACE FUNCTION COMPLETE.
- * TIMES OUT APPROXIMATELY 25 FEET OF TAPE.
- *
- * EXIT (DS) = UNIT STATUS.
- *
- * USES T2.
- *
- * CALLS //STW.
- WFC2 CON 0 ENTERED VIA *RJM* FROM //STW
- SOD T2
- NJN WFC1 IF NOT TIMEOUT
- LDC //ERR RESET ERROR EXIT
- STM //STWC
- UJN WFC1 ATTEMPT 1 MORE WAIT
- WFC SUBR ENTRY/EXIT
- LDC 2000 SET TIME OUT
- STD T2
- LDC WFC2 SET RETURN ON TIMEOUT IN //STW
- STM //STWC
- WFC1 LDN 2 WAIT NOT BUSY
- RJM //STW
- LDC //ERR RESET ERROR EXIT
- STM //STWC
- UJN WFCX RETURN
- SPACE 4,10
- .LERB BSS 0 END OF INITIAL LABEL ERROR CODE
- LOC *O
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * CALLS CTM, HNG, MCH.
- PRS LDC PRSC MODIFY CHANNELS
- RJM MCH
- LDC /SRU/ITCL*100 SET SRU INCREMENT
- STM //CECA
- LDD HP
- SHN 21-7
- PJP PRS0 IF NOT CTS
- LDC RLA6
- STM /READ/RDFC+1
- LDC LDNI+CRE/10000
- STM CLAD LOAD CTS ERROR PROCESSOR
- LDC UJNI-NJNI MODIFY INSTRUCTIONS FOR CTS
- RAM CLAC
- LDN 0
- STM ETCA ALLOW PO=S ONLY
- LDC BUF
- STM /READ/RCTB
- ISTORE RLAH,(UJN RLA9)
- LDC LDNI+CLBL
- STM RLAI 12-BIT WORD LENGTH OF LABEL
- LDN CLBL+1
- STM /READ/RCTA SET LENGTH TO READ + 1
- ISTORE SKRA,(UJN SKR2) SKIP SAVING BLOCK ID
- LDC /READ/RCT
- STM PRSE
- LJM PRS3.0 CONTINUE CODE MODIFICATION
- PRS0 SHN 21-4-21+7
- PJN PRS1 IF NOT ATS
- LDC ZJNI+BTA2-BTAB MODIFY INSTRUCTIONS FOR ATS
- STM BTAB
- LCN 0
- STM CLAB
- LDC 177
- STM BTAA
- LDC ATUS
- STM SDEA
- LDC SHNI+74
- STM SDEB
- LDC SHNI+3
- STM SDEC
- PRS1 LDC 4425
- STM //WEOA
- LDC RLA6.1
- STM /READ/RDFC+1
- LDN LABL+1
- STM /READ/MRDA LABEL LENGTH TO READ + 1
- LDD PB
- SHN -6
- ZJN PRS2 IF INITIAL LABEL CHECK
- ERRNZ /MTX/RLCL
- LMN /MTX/RLCR/100
- NJN PRS3 IF NOT CHECK NEXT REEL
- PRS2 LDC LJMI SET RETURN ON *NO EOP*
- STM STWC-1
- LDC /READ/MRD5
- STM STWC
- PRS3 LDC BUF
- STM /READ/MRDB
- PRS3.0 LDC LJMI
- STM /READ/RDFC
- LDC /READ/RDFC
- STM /READ/MRD
- PRSE EQU *-1
- * STM /READ/RCT (CTS)
- LDD PB
- SHN -6
- NJN PRS3.2 IF NOT INITIAL LABEL CHECK
- ERRNZ /MTX/RLCL
- STD T2
- LDC .LERB-.LERA
- STD T1
- PRS3.1 LDM PRSD,T2 MOVE CODE FOR INITIAL LABEL CHECK ERROR
- STM EOFX,T2
- AOD T2
- SBD T1
- MJN PRS3.1 IF NOT ALL CODE MOVED
- LDC LDNI ENABLE INITIAL LABEL
- STM RLAF
- UJN PRS4 CONTINUE NORMAL PROCESSING
- PRS3.2 LDC UJNI+2 DISABLE INITIAL LABEL ERROR RECOVERY
- STM CLAA
- LDD EP
- LPN 77
- ZJN PRS4 IF NOT RELOAD ERROR PROCESSOR
- LDC CLA4 SET TO RELOAD ERROR PROCESSOR
- STM /READ/RDFC+1
- PRS4 LDM FETO
- SHN 21-5
- PJN PRS7 IF NO EXTENDED LABELS
- LDD PB
- SHN -6
- LMN /MTX/RLOF/100
- ZJN PRS6 IF OPEN
- LMN /MTX/RLOF/100&/MTX/RLCF/100
- NJN PRS7 IF NOT CLOSE
- LDD DS
- LPN 4
- ZJN PRS6 IF NOT POSITIONED AT LOAD POINT
- LDC PRS5 SET TO RETURN HERE
- STM //LOV
- LJM PRSX COMPLETE OVERLAY LOAD
- PRS5 LDN /MTX/BEI SET TO NOT SKIP TAPE MARKS
- LJM RET3 RETURN ERROR CODE
- PRS6 STM WELA ENABLE EXTENDED LABELS
- PRS7 LDD LT SET LABEL TYPE INDEX
- LPC 1000
- ZJN PRS7.1 IF NOT NON-STANDARD LABELS
- LDN 3
- PRS7.1 STD T1 SET TABLE INDEX
- SBN LTYPL
- MJN PRS11 IF LEGAL LABEL TYPE
- PRS8 LDC PRS10 SET TO RETURN AFTER COMPLETION OF LOAD
- PRS9 STM LOV
- LJM PRSX RETURN
- PRS10 LDN /MTX/LIT INCORRECT LABEL TYPE
- LJM RET3 RETURN ERROR CODE
- PRS11 LDM LTYP,T1 SET ADDRESS OF LABEL OPERATION TABLE
- ZJN PRS8 IF INCORRECT LABEL TYPE
- STD T3
- LDD PB CHECK IF LEGAL OPERATION
- SHN -6
- STM RLAA
- SHN 1
- SBM LTYP+2,T1
- MJN PRS13 IF DEFINED OPERATION
- LDC PRS12 SET TO RETURN AFTER COMPLETION OF LOAD
- UJN PRS9 RETURN
- PRS12 RJM HNG HANG PP
- PRS13 LDD PB
- SHN 1-6
- RAD T3
- LDI T3 SET CURRENT OPERATION TABLE
- STM PRSA
- AOD T3
- LDI T3 SET LENGTH OF TABLE
- LPN 77
- STD T2
- LMC -0
- STM RLAB
- LDI T3
- LPC 4000 DO NOT READ BEFORE FIRST OPERATION FLAG
- STM RLAD
- LDN 0 MOVE TABLE
- STD T3
- PRS14 LDM *,T3
- PRSA EQU *-1
- STM TABC,T3
- AOD T3
- SBD T2
- MJN PRS14 IF NOT COMPLETE
- LDD PB
- LPN 77
- ZJN PRS15 IF FIRST TIME
- LDN 0 CLEAR *FIRST OPERATION DO NOT READ* FLAG
- STM RLAD
- PRS15 LDM LOV CHECK WHERE CALLED FROM
- ADC -//OVL
- MJN PRS16 IF NOT CALLED FROM READ ERROR RETURN
- LDC 4000 SET *SKIP READ* FLAG AND FORCE EXECUTION
- STM RLAC OF *WEL*
- LDC RLA SET TO ENTER READ LABELS
- STM //LOV
- LDC //LOV
- STM PRSB
- PRS16 LDD PB
- SHN -6
- LMN /MTX/RLOF/100
- ZJN PRS16.3 IF OPEN
- LMN 6&4
- NJN PRS17 IF NOT CLOSE
- PRS16.3 LDD PB
- LPN 77
- ZJN PRS17 IF PROCESSING FIRST SECTION
- SOD PB DECREMENT SECTION NUMBER - WILL BE
- * INCREMENTED BY ROUTINE *CHC*
- LDC RLA11 INSURE CONTROL POINT CHANGE TAKES PLACE
- STM BT
- * STM //LOV (READ ERROR RETURN)
- PRSB EQU *-1
- PRS17 LJM PRSX RETURN
- PRSC CHTB CHANNEL TABLE
- TITLE PROCESSING TABLES.
- SPACE 4,10
- ** TABLE OF LABEL TYPES AND SIZES.
- *T, 12/ TYPE,12/ SIZE,12/ LENGTH
- * TYPE ADDRESS OF LABEL OPERATION TABLE.
- * SIZE SIZE OF LABEL BLOCK IN BYTES.
- * LENGTH LENGTH OF LABEL OPERATION TABLE.
- LTYP BSS 0
- LOC 0
- CON ANS,LABL,ANSL ANSI LABELS
- CON NST,LABL,NSTL (NON - STANDARD LABELS)
- LOC *O
- LTYPL EQU *-LTYP
- TITLE ANSI LABEL PROCESSORS.
- SPACE 4,10
- ** TABLES OF LABEL OPERATIONS.
- *T, 12/ ADDRESS,1/R,5/,6/SEC
- * R DON,T READ PRIOR TO FIRST OPERATION.
- * SEC NUMBER OF SECTIONS.
- ANS INDEX ANSI LABELS OPERATION TABLE
- INDEX /MTX/RLCL/40,(CIL,CILL) CHECK IF LABELED
- INDEX /MTX/RLCE/40,(CET,CETL+4000) CHECK END OF TAPE
- INDEX /MTX/RLSL/40,(SKL,SKLL) SKIP OVER LABELS
- INDEX /MTX/RLSM/40,(SKT,SKTL) SKIP TAPE MARKS
- INDEX /MTX/RLOF/40,(OPL,OPLL+4000) OPEN FILE
- INDEX /MTX/RLCR/40,(RCE,RCEL) CHECK NEXT REEL
- INDEX /MTX/RLCF/40,(CLF,CLFL+4000) CLOSE FILE
- INDEX /MTX/RLCM/40,(CFL,CFLL+4000) CHECK MULTI FILE LABELS
- INDEX /MTX/RLVH/40,(CVH,CVHL) VALIDATE HEADER LABEL
- INDEX /MTX/RLMX/40 TERMINATE TABLE
- ANSL EQU *-ANS LENGTH OF TABLE
- NST INDEX NON-STANDARD LABELS OPERATION TABLE
- INDEX /MTX/RLCE/40,(CET,CETL+4000) CHECK END OF TAPE
- INDEX /MTX/RLSL/40,(PNL,PNLL) SKIP OVER LABELS
- INDEX /MTX/RLSM/40,(SKT,SKTL) SKIP TAPE MARKS
- INDEX /MTX/RLOF/40,(OPL,OPLL+4000) OPEN FILE
- INDEX /MTX/RLCR/40,(RCE,RCEL) CHECK NEXT REEL
- INDEX /MTX/RLCF/40,(CLF,CLFL+4000) CLOSE FILE
- INDEX /MTX/RLCF/40+2 TERMINATE TABLE
- NSTL EQU *-NST LENGTH OF TABLE
- SPACE 4,10
- ** TABLE OF ANSI LABEL SEQUENCES.
- CIL BSS 0
- LOC 0
- CON BTA BLANK TAPE CHECK
- CON VOL VOL1
- CON UVL UVLA
- CON HDR HDR1
- CON OHD HDR2 - HDR9
- CON UHL UHLA
- CON TMS TAPE MARK SENSE
- LOC *O
- CILL EQU *-CIL
- CET BSS 0
- LOC 0
- CON ETC
- CON EOF EOF1
- CON EOV EOV1
- CON EVO EOV2
- LOC *O
- CETL EQU *-CET
- CFL BSS 0
- LOC 0
- CON ETC END OF TAPE CHECK
- CON EOF CHECK *EOF1*
- CON EFO CHECK EOF2 -EOF9
- CON UTL UTLA
- CON /MFP/TMC CHECK TAPE MARK
- CON /MFP/TMC CHECK TAPE MARK
- CON HDR CHECK *HDR1*
- CON OHD HDR2 - HDR9
- CON UHL UHLA
- CON TMS TAPE MARK SENSE
- CON EOV CHECK *EOV1*
- CON EVO CHECK *EOV2*
- LOC *O
- CFLL EQU *-CFL
- CVH BSS 0
- LOC 0
- CON VOL CHECK *VOL1*
- CON UVL USER VOLUME LABELS
- CON EOF CHECK *EOF1*
- CON EFO CHECK EOF2 - EOF9
- CON UTL UTLA
- CON STM SKIP TAPE MARK
- CON HDR CHECK *HDR1*
- CON OHD HDR2 - HDR9
- CON UHL UHLA
- CON TMS TAPE MARK SENSE
- LOC *O
- CVHL EQU *-CVH
- CLF BSS 0
- LOC 0
- CON CHC CHANGE CONTROL POINTS
- CON ZRO ZERO FIRST WORD OF XL BUFFER
- CON STM SKIP TAPE MARK
- CON EOF EOF1
- CON EFO EOF2 - EOF9
- CON UTL UTLA
- CON EOV EOV1
- CON EVO EOV2
- CON UTL UTLA
- LOC *O
- CLFL EQU *-CLF
- OPL BSS 0
- LOC 0
- CON CHC CHANGE CONTROL POINTS
- CON VOL VOL1
- CON UVL UVLA
- CON HDR HDR1
- CON OHD HDR2 - HDR9
- CON UHL UHLA
- CON TMS TAPE MARK SENSE
- LOC *O
- OPLL EQU *-OPL
- RCE BSS 0
- LOC 0
- CON BTA BLANK TAPE CHECK
- CON VLC VOL1 CHECK
- CON UVL SKIP OPTIONAL LABELS
- CON HLC HDR1 CHECK
- LOC *O
- RCEL EQU *-RCE
- SKL BSS 0
- LOC 0
- CON VOL VOL1
- CON UVL UVLA
- CON HDR HDR1
- CON OHD HDR2 - HDR9
- CON UHL UHLA
- CON TMS TAPE MARK SENSE
- LOC *O
- SKLL EQU *-SKL
- SKT BSS 0
- LOC 0
- CON PTM READ TO TAPE MARK
- LOC *O
- SKTL EQU *-SKT
- SPACE 4,10
- ** TABLE OF NON-STANDARD LABEL SEQUENCES.
- PNL BSS 0
- LOC 0
- CON SBL
- CON TMS
- LOC *O
- PNLL EQU *-PNL
- MTL MAX CILL,CETL,CFLL,CVHL,CLFL,OPLL,RCEL,SKLL,SKTL,PNLL
- ERRNZ MTL-TABCL BUFFER NOT LONG ENOUGH FOR LARGEST TABLE
- OVERLAY (CODE CONVERT LABEL READ.),(ERLB+5),P
- CCL SPACE 4,15
- ** CCL - CODE CONVERT LABEL READ FOR CTS.
- *
- * THIS ROUTINE CONVERTS 8-BIT CHARACTERS READ FROM A
- * CTS LABEL TO 6-BIT DISPLAY CODE CHARACTERS.
- *
- * ENTRY /READ/RCTB = STARTING ADDRESS OF DATA TO CONVERT.
- * (CF) = 63/64 CHARACTER SET FLAG.
- * (MD) = DRIVER MODE.
- * (DNCV) = CONVERSION MODE.
- *
- * USES T1, T2, T3, T6.
- *
- * CALLS EXC.
- ENTRY CCL
- CCL SUBR ENTRY/EXIT
- LDD CF
- LPN 1
- NJN CCL1 IF 64 CHARACTER SET
- LCN 63-1R MODIFY TABLES FOR 63 CHARACTER SET
- RAM ANSI+ANSIA
- STM ANSI+ANSIC
- LDC 63*100
- RAM ANSI+ANSIB
- STM ANSI+ANSID
- LCN 63-1R
- RAM EBCI+EBCIA
- LDN 63-55
- RAM EBCI+EBCIB
- LDC 1R *100-63*100
- RAM EBCI+EBCIC
- LDC 63*100-0
- RAM EBCI+EBCID
- CCL1 LDD MD
- SHN 21-6
- PJN CCL2 IF NOT CODED
- LDM DNCV
- LPN 7
- LMN /MTX/ANS
- ZJN CCL2 IF ASCII CONVERSION MODE
- LDC UJNI-PJNI
- RAM EXCA CODE MODIFICATION FOR EBCDIC
- LDC EBCI
- STM EXCB
- STM EXCC
- CCL2 LDM /READ/RCTB
- STD T1 POINTER TO CHARACTER TO CONVERT
- LDN 0
- STD T2 POINTER TO STORE CONVERTED CHARACTER
- STD T3 1 OF 3 POSITIONS OF 8-BIT BYTE
- CCL3 RJM EXC EXTRACT CHARACTER
- * STORE CONVERTED CHARACTER.
- LDD T2
- SHN 21-0
- ADM /READ/RCTB
- STD T6 ADDRESS TO STORE CONVERTED CHARACTER
- PJN CCL4 IF UPPER CHARACTER
- LDD T7
- RAI T6
- UJN CCL5 CHECK IF MORE CHARACTERS TO CONVERT
- CCL4 LDD T7
- SHN 6
- STI T6
- CCL5 AOD T2
- LMC 80D
- NJN CCL3 IF MORE CHARACTERS TO CONVERT
- UJP CCLX RETURN
- EXC SPACE 4,15
- ** EXC - EXTRACT CHARACTER.
- *
- * THIS ROUTINE TAKES ONE OF THE 80 CHARACTERS OF THE LABEL
- * THAT WAS READ AND CONVERTS IT TO DISPLAY CODE.
- *
- * ENTRY (T1) = POINTER TO CHARACTER TO CONVERT.
- * (T3) = 0 UPPER 8 OF 24.
- * 1 MIDDLE 8 OF 24.
- * 2 LOWER 8 OF 24.
- *
- * EXIT (T5) = (BUF,T1) IF (T3) = 0.
- * (T7) = CONVERTED CHARACTER.
- *
- * USES T4, T5
- EXC SUBR ENTRY/EXIT
- LDD T3
- NJN EXC1 IF NOT UPPER 8 OF 24
- LDI T1
- STD T5
- SHN -4
- UJN EXC3 MASK 8-BIT CHARACTER
- EXC1 SBN 1
- NJN EXC2 IF NOT BYTE 2 OF 3
- LDD T5
- LPN 17
- SHN 4
- STD T5
- LDM 1,T1
- SHN -10
- ADD T5
- UJN EXC3 MASK 8-BIT CHARACTER
- EXC2 LDM 1,T1
- EXC3 SHN 21-7
- PJN EXC4 IF LEGAL CHARACTER (ANSI)
- EXCA EQU *-1
- * UJN EXC4 (EBCDIC)
- LDN 0
- EXC4 SHN 7-21 MASK 8 BITS
- SHN 21-0
- STD T4
- PJN EXC5 IF LEFT HALF OF CONVERSION TABLE WORD
- LDM ANSI,T4
- EXCB EQU *-1
- * LDM EBCI,T4 (EBCDIC)
- LPN 77
- UJN EXC6 SAVE DISPLAY CODE VALUE
- EXC5 LDM ANSI,T4
- EXCC EQU *-1
- * LDM EBCI,T4 (EBCDIC)
- SHN -6
- EXC6 STD T7 SAVE DISPLAY CODE VALUE
- AOD T3
- SBN 3
- NJN EXC7 IF NOT BYTE 3 OF 3
- STD T3
- LDN 2
- RAD T1
- EXC7 LJM EXCX RETURN
- ANSI SPACE 4,10
- ** ANSI - TABLE FOR *ASCII* TO DISPLAY CODE CONVERSION.
- * THE ASCII CHARACTER DIVIDED BY 2 IS THE INDEX INTO THIS
- * TABLE. ONLY THE FIRST 128 CHARACTERS ARE IN THE TABLE.
- * THE PROGRAM USING THE TABLE WILL SUBSTITUTE 00 FOR THE
- * HEX VALUES OF 80-FF.
- ANSI BSS 0
- LOC 0
- VFD 6/1R 00 NUL NULL
- VFD 6/1R] 01 SOH START OF HEADING
- VFD 6/64 02 STX START OF TEXT
- VFD 6/1R# 03 ETX END OF TEXT
- VFD 6/1R$ 04 EOT END OF TRANSMISSION
- VFD 6/63 05 ENQ ENQUIRY (64 CHARACTER SET)
- ANSIA EQU *-1 (63 CHARACTER SET)
- * VFD 6/1R 05 ENQ ENQUIRY (63 CHARACTER SET)
- VFD 6/1R& 06 ACK ACKNOWLEDGE
- VFD 6/1R' 07 BEL BELL
- VFD 6/51 08 BS BACKSPACE
- VFD 6/1R) 09 HT HORIZONTAL TAB
- VFD 6/1R* 0A LF LINE FEED
- VFD 6/1R+ 0B VT VERTICAL TAB
- VFD 6/1R, 0C FF FORM FEED
- VFD 6/1R- 0D CR CARRIAGE RETURN
- VFD 6/1R. 0E SO SHIFT OUT
- VFD 6/1R/ 0F SI SHIFT IN
- VFD 6/1R0 10 DLE DATA LINK ESCAPE
- VFD 6/1R1 11 DC1 DEVICE CONTROL 1 (X-ON)
- VFD 6/1R2 12 DC2 DEVICE CONTROL 2
- VFD 6/1R3 13 DC3 DEVICE CONTROL 3 (X-OFF)
- VFD 6/1R4 14 DC4 DEVICE CONTROL 4 (STOP)
- VFD 6/1R5 15 NAK NEGATIVE ACKNOWLEDGE
- VFD 6/1R6 16 SYN SYNCHRONOUS IDLE
- VFD 6/1R7 17 ETB END OF TRANSMISSION BLOCK
- VFD 6/1R8 18 CAN CANCEL
- VFD 6/1R9 19 EM END OF MEDIUM
- VFD 6/00 1A SUB SUBSTITUTE (64 CHARACTERS)
- ANSIB EQU * (63 CHARACTER SET)
- * VFD 6/63 1A SUB SUBSTITUTE (63 CHARACTERS)
- VFD 6/1R; 1B ESC ESCAPE (DRIVER)
- VFD 6/1R[ 1C FS FILE SEPARATOR
- VFD 6/1R= 1D GS GROUP SEPARATOR
- VFD 6/1R> 1E RS RECORD SEPARATOR
- VFD 6/1R? 1F US UNIT SEPARATOR
- VFD 6/1R 20 SPACE
- VFD 6/1R! 21 EXCLAMATION POINT
- VFD 6/64 22 QUOTATION MARKS
- VFD 6/1R# 23 NUMBER SIGN
- VFD 6/1R$ 24 $ DOLLAR SIGN
- VFD 6/63 25 PERCENT (64 CHARACTER SET)
- ANSIC EQU *-1 (63 CHARACTER SET)
- * VFD 6/1R 25 PERCENT (63 CHARACTER SET)
- VFD 6/1R& 26 AMPERSAND
- VFD 6/1R' 27 APOSTROPHE
- VFD 6/51 28 ( OPENING PARENTHESIS
- VFD 6/1R) 29 ) CLOSING PARENTHESIS
- VFD 6/1R* 2A * ASTERISK
- VFD 6/1R+ 2B + PLUS
- VFD 6/1R, 2C , COMMA
- VFD 6/1R- 2D - HYPHEN (MINUS)
- VFD 6/1R. 2E . PERIOD
- VFD 6/1R/ 2F / SLANT
- VFD 6/1R0 30 0
- VFD 6/1R1 31 1
- VFD 6/1R2 32 2
- VFD 6/1R3 33 3
- VFD 6/1R4 34 4
- VFD 6/1R5 35 5
- VFD 6/1R6 36 6
- VFD 6/1R7 37 7
- VFD 6/1R8 38 8
- VFD 6/1R9 39 9
- VFD 6/00 3A COLON (64 CHARACTER SET)
- ANSID EQU * (63 CHARACTER SET)
- * VFD 6/63 3A COLON (63 CHARACTER SET)
- VFD 6/1R; 3B SEMICOLON
- VFD 6/1R< 3C LESS THAN
- VFD 6/1R= 3D EQUALS
- VFD 6/1R> 3E GREATER THAN
- VFD 6/1R? 3F QUESTION MARK
- VFD 6/1R@ 40 COMMERCIAL AT
- VFD 6/1RA 41 A
- VFD 6/1RB 42 B
- VFD 6/1RC 43 C
- VFD 6/1RD 44 D
- VFD 6/1RE 45 E
- VFD 6/1RF 46 F
- VFD 6/1RG 47 G
- VFD 6/1RH 48 H
- VFD 6/1RI 49 I
- VFD 6/1RJ 4A J
- VFD 6/1RK 4B K
- VFD 6/1RL 4C L
- VFD 6/1RM 4D M
- VFD 6/1RN 4E N
- VFD 6/1RO 4F 0
- VFD 6/1RP 50 P
- VFD 6/1RQ 51 Q
- VFD 6/1RR 52 R
- VFD 6/1RS 53 S
- VFD 6/1RT 54 T
- VFD 6/1RU 55 U
- VFD 6/1RV 56 V
- VFD 6/1RW 57 W
- VFD 6/1RX 58 X
- VFD 6/1RY 59 Y
- VFD 6/1RZ 5A Z
- VFD 6/1R[ 5B OPENING BRACKET
- VFD 6/1R\ 5C REVERSE SLANT
- VFD 6/1R] 5D CLOSING BRACKET
- VFD 6/1R^ 5E CIRCUMFLEX
- VFD 6/65 5F UNDERLINE
- VFD 6/1R@ 60 GRAVE ACCENT
- VFD 6/1RA 61 A LC
- VFD 6/1RB 62 B LC
- VFD 6/1RC 63 C LC
- VFD 6/1RD 64 D LC
- VFD 6/1RE 65 E LC
- VFD 6/1RF 66 F LC
- VFD 6/1RG 67 G LC
- VFD 6/1RH 68 H LC
- VFD 6/1RI 69 I LC
- VFD 6/1RJ 6A J LC
- VFD 6/1RK 6B K LC
- VFD 6/1RL 6C L LC
- VFD 6/1RM 6D M LC
- VFD 6/1RN 6E N LC
- VFD 6/1RO 6F O LC
- VFD 6/1RP 70 P LC
- VFD 6/1RQ 71 Q LC
- VFD 6/1RR 72 R LC
- VFD 6/1RS 73 S LC
- VFD 6/1RT 74 T LC
- VFD 6/1RU 75 U LC
- VFD 6/1RV 76 V LC
- VFD 6/1RW 77 W LC
- VFD 6/1RX 78 X LC
- VFD 6/1RY 79 Y LC
- VFD 6/1RZ 7A Z LC
- VFD 6/1R< 7B OPENING BRACE
- VFD 6/1R\ 7C VERTICAL LINE
- VFD 6/1R! 7D CLOSING BRACE
- VFD 6/1R^ 7E OVERLINE (TILDE)
- VFD 6/65 7F DEL DELETE
- LOC *O
- EBCI SPACE 4
- ** EBCI - TABLE FOR EBCDIC TO DISPLAY CODE CONVERSION.
- * THE ASCII CHARACTER DIVIDED BY 2 IS THE INDEX INTO THIS
- * TABLE.
- EBCI BSS 0
- LOC 0
- VFD 6/1R 00 NUL NULL
- VFD 6/1R] 01 SOH START OF HEADING
- VFD 6/64 02 STX START OF TEXT
- VFD 6/1R# 03 ETX END OF TEXT
- VFD 6/1R 04
- VFD 6/1R) 05 HT HORIZONTAL TAB
- VFD 6/1R 06
- VFD 6/65 07 DEL DELETE
- VFD 6/1R 08
- VFD 6/1R 09
- VFD 6/1R 0A
- VFD 6/1R+ 0B VT VERTICAL TAB
- VFD 6/1R, 0C FF FORM FEED
- VFD 6/1R- 0D CR CARRIAGE RETURN
- VFD 6/1R. 0E SO SHIFT OUT
- VFD 6/1R/ 0F SI SHIFT IN
- VFD 6/1R0 10 DLE DATA LINK ESCAPE
- VFD 6/1R1 11 DC1 DEVICE CONTROL 1 (X-ON)
- VFD 6/1R2 12 DC2 DEVICE CONTROL 2
- VFD 6/1R3 13 DC3 DEVICE CONTROL 3 (X-OFF)
- VFD 6/1R 14
- VFD 6/1R 15
- VFD 6/51 16 BS BACKSPACE
- VFD 6/1R 17
- VFD 6/1R8 18 CAN CANCEL
- VFD 6/1R9 19 EM END OF MEDIMUM
- VFD 6/1R 1A
- VFD 6/1R 1B
- VFD 6/1R[ 1C FS FILE SEPERATOR
- VFD 6/1R= 1D GS GROUP SEPERATOR
- VFD 6/1R> 1E RS RECORD SEPERATOR
- VFD 6/1R? 1F US UNIT SEPERATOR
- VFD 6/1R 20
- VFD 6/1R 21
- VFD 6/1R 22
- VFD 6/1R 23
- VFD 6/1R 24
- VFD 6/1R* 25 LF LINE FEED
- VFD 6/1R7 26 ETB END OF TRANSMISSION BLOCK
- VFD 6/1R; 27 ESC ESCAPE
- VFD 6/1R 28
- VFD 6/1R 29
- VFD 6/1R 2A
- VFD 6/1R 2B
- VFD 6/1R 2C
- VFD 6/63 2D ENQ ENQUIRY (64 CHARACTER SET)
- EBCIA EQU *-1 (63 CHARACTER SET)
- * VFD 6/1R 2D ENQ ENQUIRY (63 CHARACTER SET)
- VFD 6/1R& 2E ACK ACKNOWLEDGE
- VFD 6/1R' 2F BEL BELL
- VFD 6/1R 30
- VFD 6/1R 31
- VFD 6/1R6 32 SYN SYNCHROUS IDLE
- VFD 6/1R 33
- VFD 6/1R 34
- VFD 6/1R 35
- VFD 6/1R 36
- VFD 6/1R$ 37 EOT END OF TRANSMISSION
- VFD 6/1R 38
- VFD 6/1R 39
- VFD 6/1R 3A
- VFD 6/1R 3B
- VFD 6/1R4 3C DC4 DEVICE CONTROL 4
- VFD 6/1R5 3D NAK NEGATIVE ACKNOWLEDGE
- VFD 6/1R 3E
- VFD 6/00 3F SUB SUBSTITUTE (64 CHARACTER SET
- EBCIB EQU *-1 (63 CHARACTER SET)
- * VFD 6/63 3F SUB SUBSTITUTE (63 CHARACTER SET
- VFD 6/1R 40 SPACE
- VFD 6/1R 41
- VFD 6/1R 42
- VFD 6/1R 43
- VFD 6/1R 44
- VFD 6/1R 45
- VFD 6/1R 46
- VFD 6/1R 47
- VFD 6/1R 48
- VFD 6/1R 49
- VFD 6/1R[ 4A OPENING BRACKET
- VFD 6/1R. 4B . PERIOD
- VFD 6/1R< 4C LESS THAN
- VFD 6/51 4D OPENING PARENTHESIS
- VFD 6/1R+ 4E + PLUS
- VFD 6/1R! 4F LOGICAL OR
- VFD 6/1R& 50 AMPERSAND
- VFD 6/1R 51
- VFD 6/1R 52
- VFD 6/1R 53
- VFD 6/1R 54
- VFD 6/1R 55
- VFD 6/1R 56
- VFD 6/1R 57
- VFD 6/1R 58
- VFD 6/1R 59
- VFD 6/1R] 5A CLOSING BRACKET
- VFD 6/1R$ 5B $ DOLLAR SIGN
- VFD 6/1R* 5C * ASTERISK
- VFD 6/1R) 5D ) CLOSING PARENTHESIS
- VFD 6/1R; 5E SEMICOLON
- VFD 6/1R^ 5F NOT LOGICAL NOT
- VFD 6/1R- 60 - HYPHEN (MINUS)
- VFD 6/1R/ 61 / SLANT
- VFD 6/1R 62
- VFD 6/1R 63
- VFD 6/1R 64
- VFD 6/1R 65
- VFD 6/1R 66
- VFD 6/1R 67
- VFD 6/1R 68
- VFD 6/1R 69
- VFD 6/1R\ 6A VERTICAL LINE
- VFD 6/1R, 6B , COMMA
- VFD 6/63 6C PERCENT (64 CHARACTER SET)
- EBCIC EQU * (63 CHARACTER SET)
- * VFD 6/1R 6C PERCENT (63 CHARACTER SET)
- VFD 6/65 6D UNDERSCORE
- VFD 6/1R> 6E GREATER THAN
- VFD 6/1R? 6F QUESTION MARK
- VFD 6/1R 70
- VFD 6/1R 71
- VFD 6/1R 72
- VFD 6/1R 73
- VFD 6/1R 74
- VFD 6/1R 75
- VFD 6/1R 76
- VFD 6/1R 77
- VFD 6/1R 78
- VFD 6/1R@ 79 GRAVE ACCENT
- VFD 6/00 7A COLON (64 CHARACTER SET)
- EBCID EQU * (63 CHARACTER SET)
- * VFD 6/63 7A COLON (63 CHARACTER SET)
- VFD 6/1R# 7B NUMBER SIGN
- VFD 6/1R@ 7C COMMERCIAL AT
- VFD 6/1R' 7D APOSTROPHE
- VFD 6/1R= 7E = EQUALS
- VFD 6/64 7F QUOTATION MARKS
- VFD 6/1R 80
- VFD 6/1RA 81 A LC
- VFD 6/1RB 82 B LC
- VFD 6/1RC 83 C LC
- VFD 6/1RD 84 D LC
- VFD 6/1RE 85 E LC
- VFD 6/1RF 86 F LC
- VFD 6/1RG 87 G LC
- VFD 6/1RH 88 H LC
- VFD 6/1RI 89 I LC
- VFD 6/1R 8A
- VFD 6/1R 8B
- VFD 6/1R 8C
- VFD 6/1R 8D
- VFD 6/1R 8E
- VFD 6/1R 8F
- VFD 6/1R 90
- VFD 6/1RJ 91 J LC
- VFD 6/1RK 92 K LC
- VFD 6/1RL 93 L LC
- VFD 6/1RM 94 M LC
- VFD 6/1RN 95 N LC
- VFD 6/1RO 96 O LC
- VFD 6/1RP 97 P LC
- VFD 6/1RQ 98 Q LC
- VFD 6/1RR 99 R LC
- VFD 6/1R 9A
- VFD 6/1R 9B
- VFD 6/1R 9C
- VFD 6/1R 9D
- VFD 6/1R 9E
- VFD 6/1R 9F
- VFD 6/1R A0
- VFD 6/1R^ A1 OVERLINE (TILDE)
- VFD 6/1RS A2 S LC
- VFD 6/1RT A3 T LC
- VFD 6/1RU A4 U LC
- VFD 6/1RV A5 V LC
- VFD 6/1RW A6 W LC
- VFD 6/1RX A7 X LC
- VFD 6/1RY A8 Y LC
- VFD 6/1RZ A9 Z LC
- VFD 6/1R AA
- VFD 6/1R AB
- VFD 6/1R AC
- VFD 6/1R AD
- VFD 6/1R AE
- VFD 6/1R AF
- VFD 6/1R B0
- VFD 6/1R B1
- VFD 6/1R B2
- VFD 6/1R B3
- VFD 6/1R B4
- VFD 6/1R B5
- VFD 6/1R B6
- VFD 6/1R B7
- VFD 6/1R B8
- VFD 6/1R B9
- VFD 6/1R BA
- VFD 6/1R BB
- VFD 6/1R BC
- VFD 6/1R BD
- VFD 6/1R BE
- VFD 6/1R BF
- VFD 6/1R< C0 OPENING BRACE
- VFD 6/1RA C1 A
- VFD 6/1RB C2 B
- VFD 6/1RC C3 C
- VFD 6/1RD C4 D
- VFD 6/1RE C5 E
- VFD 6/1RF C6 F
- VFD 6/1RG C7 G
- VFD 6/1RH C8 H
- VFD 6/1RI C9 I
- VFD 6/1R CA
- VFD 6/1R CB
- VFD 6/1R CC
- VFD 6/1R CD
- VFD 6/1R CE
- VFD 6/1R CF
- VFD 6/1R! D0 CLOSING BRACE
- VFD 6/1RJ D1 J
- VFD 6/1RK D2 K
- VFD 6/1RL D3 L
- VFD 6/1RM D4 M
- VFD 6/1RN D5 N
- VFD 6/1RO D6 O
- VFD 6/1RP D7 P
- VFD 6/1RQ D8 Q
- VFD 6/1RR D9 R
- VFD 6/1R DA
- VFD 6/1R DB
- VFD 6/1R DC
- VFD 6/1R DD
- VFD 6/1R DE
- VFD 6/1R DF
- VFD 6/1R\ E0 REVERSE SLANT
- VFD 6/1R E1
- VFD 6/1RS E2 S
- VFD 6/1RT E3 T
- VFD 6/1RU E4 U
- VFD 6/1RV E5 V
- VFD 6/1RW E6 W
- VFD 6/1RX E7 X
- VFD 6/1RY E8 Y
- VFD 6/1RZ E9 Z
- VFD 6/1R EA
- VFD 6/1R EB
- VFD 6/1R EC
- VFD 6/1R ED
- VFD 6/1R EE
- VFD 6/1R EF
- VFD 6/1R0 F0 0
- VFD 6/1R1 F1 1
- VFD 6/1R2 F2 2
- VFD 6/1R3 F3 3
- VFD 6/1R4 F4 4
- VFD 6/1R5 F5 5
- VFD 6/1R6 F6 6
- VFD 6/1R7 F7 7
- VFD 6/1R8 F8 8
- VFD 6/1R9 F9 9
- VFD 6/1R FA
- VFD 6/1R FB
- VFD 6/1R FC
- VFD 6/1R FD
- VFD 6/1R FE
- VFD 6/1R FF
- LOC *O
- ERRNG 473+ERLB+5-* IF CODE LONGER THAN ONE PRU
- OVERLAY (MULTI-FILE AUXILIARY PROCESSOR.),(/RLA/OVLM),,MFP
- SPACE 4,10
- ** THIS OVERLAY CONTAINS ROUTINES WHICH ARE USED FOR
- * MULTI-FILE OPERATIONS. IT OVERLAYS PART OF THE
- * READ LABELS OVERLAY AND IS USED IN CONJUCTION WITH
- * READ LABELS WHEN MULTI-FILE TAPES ARE BEING PROCESSED.
- SPACE 4,10
- * ASSEMBLY CONSTANTS
- BUF EQU /RLA/BUF
- DBUF EQU /RLA/DBUF
- IBUF EQU /RLA/IBUF
- UDTB EQU /RLA/UDTB
- CAN EQU /RLA/CAN
- CHC EQU /RLA/CHC
- CLA EQU /RLA/CLA
- C2D EQU /RLA/C2D
- DCV EQU /RLA/DCV
- ELA EQU /RLA/ELA
- FAD EQU /RLA/FAD
- FCH EQU /RLA/FCH
- RBE EQU /RLA/RBE
- RLAX EQU /RLA/RLAX
- THL EQU /RLA/THL
- WUD EQU /RLA/WUD
- ENTRY MFP
- PHD SPACE 4,10
- ** PHD - PROCESS HEADER.
- *
- * ENTRY (A) = 0 IF CHECK MULTI-FILE LABELS (*RLCM*) OPERATION.
- * (A) = 1 IF VALIDATE HEADER LABEL (*RLVH*) OPERATION.
- *
- * CALLS CAN, FCH, THL, WUD.
- PHD SUBR ENTRY/EXIT
- STD T6 SAVE ENTRY
- LDC BUF SET UP BUFFER ADDRESSES
- STM IBUF
- LDD T6
- ZJN PHD1 IF CHECK MULTI-FILE LABELS
- ERRNZ /MTX/RLCM-700
- LDM CIOE CHECK IF POSMF
- LPC 1774
- LMC 110
- NJN PHD3 IF NOT POSMF
- PHD1 LDC UDTB
- STM DBUF
- RJM THL TRANSFER HEADER LABEL
- RJM WUD WRITE UDT
- PHD2 UJN PHDX RETURN
- PHD3 LDC PHDA COMPARE LABEL TO UDT
- STM DBUF
- LDN 21D ZERO OUT BUFFER
- STD T7
- LDN 50D
- RJM FCH COPY CHARACTERS
- RJM THL TRANSFER HEADER LABEL
- LDN 21D
- STD T6
- STD T7
- LDC UDTB SET INPUT BUFFER
- STM IBUF
- LDN 30D
- RJM CAN COMPARE FIELDS
- NJN PHD4 IF NO COMPARE
- LDN 56D
- STD T6
- STD T7
- LDN 15D
- RJM CAN COMPARE LABEL FIELDS
- NJN PHD4 IF NO COMPARE
- LDC BUF RESET INPUT BUFFER ADDRESS
- STM IBUF
- LJM PHDX RETURN
- PHD4 LJM RBE RETURN *BEI* ERROR
- REL SPACE 4,10
- ** REL - READ EXTENDED LABELS.
- *
- * CALLS ELA.
- REL5 LDD CM SET SEQUENCE NUMBER
- SHN 14
- ADD CM+1
- ADN 4
- CRM TMCB,ON
- LDM TMCB+2
- SCN 77
- SHN 6
- LMM TMCB+1
- SHN 6
- STM TMCB+4
- SHN 6
- STM TMCB+3
- REL SUBR ENTRY/EXIT
- LDN 0
- STD T6
- STD T7
- REL1 RJM ELA GET EXTENDED LABEL ADDRESS
- ZJN RELX IF NO EXTENDED LABEL BUFFER
- CRD CM
- STD CM+1
- SHN -14
- STD CM
- LDD CM+4
- ZJN REL3 IF END OF BUFFER
- LMC 80D
- NJN REL4 IF NOT CORRECT LENGTH
- LDD CM
- SHN 14
- ADD CM+1
- ADN 1
- CRM TMCB,ON
- LDM TMCB
- LMC 2RHD
- NJN REL2 IF NOT *HD*
- LDM TMCB+1
- LMC 2RR1
- NJN REL2 IF NOT *HDR1*
- LJM REL5 SET SEQUENCE NUMBER
- REL2 LDN 11
- RAD T7
- SHN -14
- RAD T6
- LJM REL1 LOOP FOR NEXT LABEL
- REL3 LDN /MTX/LAM LABEL MISSING
- LJM RET3 RETURN ERROR CODE
- REL4 LDN /MTX/IXL INCORRECT CHARACTER COUNT IN HEADER
- LJM RET3 RETURN ERROR CODE
- SSN SPACE 4,10
- ** SSN - SET SEQUENCE NUMBER.
- *
- * CALLS C2D, DCV.
- SSN SUBR ENTRY/EXIT
- LDC SSNA SET DESTINATION BUFFER
- STM DBUF
- LDN 32D GET SEQUENCE NUMBER
- STD T6
- LDN 2
- STD T7
- LDC 30004
- RJM DCV CONVERT DECIMAL FIELD
- LDM SSNA+1 SET LAST SEQUENCE NUMBER+1
- ADN 1
- STD T6
- RJM C2D
- STM SSNA+3
- LDD T6
- SHN -6
- RJM C2D
- LPN 77
- STM SSNA+2
- LDN 0 CLEAR TAPE MARK COUNT
- STD PA
- UJN SSNX RETURN
- TMC SPACE 4,10
- ** TMC - TAPE MARK CHECK.
- *
- * CALLS CHC, CLA, DCV, FAD, REL, WUD.
- TMC9 AOD PB ADVANCE SECTION
- TMC SUBR ENTRY/EXIT
- RJM CLA CHECK LABELS
- SBN 1
- ZJN TMC2 IF TAPE MARK
- LDD PA
- ZJN TMC1 IF HDR1 NOT PRECEEDED BY TAPE MARK
- LJM RLAX READ NEXT BLOCK
- TMC1 LDN /MTX/LAM LABEL MISSING
- LJM RET3 RETURN ERROR CODE
- TMC2 AOD PA INCREMENT TAPE MARK COUNT
- SBN 1
- ZJN TMC9 IF NOT SECOND TAPE MARK
- LDD UP
- SHN 21-1
- PJN TMC3 IF NOT *POSMF 9999*
- LDN 0 CLEAR PARAMETER
- STD PA
- LDM UDTB+22 SET SECTION NUMBER TO ONE
- SCN 77
- STM UDTB+22
- LDN 1
- STM UDTB+23
- AOM UDTB+30 INCREMENT SEQUENCE NUMBER
- SHN -14
- RAM UDTB+27
- LDM UDTB+10 SET LABEL NOT EXPIRED
- SCN 2
- LMN 2
- STM UDTB+10
- RJM WUD REWRITE UDT
- LDN /MTX/BEI SET EOI INDICATOR
- LJM RET3 RETURN ERROR CODE
- TMC3 RJM CHC CHANGE CONTROL POINTS
- LDM FETO CHECK EXTENDED LABELS
- SHN 21-5
- PJN TMC4 IF NOT EXTENDED LABELS
- RJM REL READ EXTENDED LABELS
- UJN TMC5 PROCESS FILE NOT FOUND
- TMC4 RJM FAD SET FET ADDRESS
- ADN 12
- CRM TMCB,ON
- TMC5 LDM TMCB+4
- NJN TMC6 IF FILE SEQUENCE NUMBER NOT FOUND
- STD LG
- UJN TMC7 INDICATE FILE IDENTIFIER NOT FOUND
- TMC6 LDC TMCB SET BUFFER PARAMETERS
- STM IBUF
- STM DBUF
- LDN 8D
- STD T6
- LDN 12D
- STD T7
- LDC 30003
- RJM DCV CONVERT DECIMAL FIELD
- LDM TMCB+6 SET SEQUENCE NUMBER DESIRED
- STD LG
- LDM SSNA+1 SET HIGHEST EXISTING SEQUENCE NUMBER
- TMC7 STD LG+1
- LDM FETO CHECK IF EXTENDED LABELS
- SHN 21-5
- MJN TMC8 IF EXTENDED LABELS
- LDM TMCB+3 RETURN LAST SEQUENCE NUMBER FOUND
- SCN 77
- LMM SSNA+2
- STM TMCB+3
- LDM SSNA+3
- STM TMCB+4
- RJM FAD SET FET ADDRESS
- ADN 12 RETURN LABEL INFORMATION
- CWM TMCB,ON
- TMC8 LDD UP SET END OF SET FLAG
- LPC 7677
- LMD HN
- STD UP
- LDN /MTX/BEI RETURN END OF SET STATUS
- LJM RET3 RETURN FATAL ERROR
- SPACE 4,10
- ** BUFFERS.
- PHDA EQU * LABEL COMPARE BUFFER
- TMCB EQU * SEQUENCE NUMBER HOLD
- SSNA EQU TMCB+7*5 SEQUENCE NUMBER
- BUFL EQU SSNA+4 END OF BUFERS
- ERROVL
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * CALLS MCH.
- PRS LDC PRSA MODIFY CHANNELS
- RJM MCH
- LJM PRSX RETURN
- PRSA CHTB CHANNEL TABLE
- OVERLAY (OPEN OPERATIONS.)
- OPF SPACE 4,10
- ** OPF - OPEN OPERATION.
- *
- * ENTRY (PB) .NE. 0 IF CHECK TYPE OF *POSMF*.
- *
- * CALLS CCH, CCS, CDN, DCV, ELA, FCH, FHR, GCH, OPH,
- * SCH, WUD.
- *
- * MACROS SADT.
- ENTRY OPF
- SADT .FE,,4,A
- OPF LDC * READ FET+4
- CRD CN
- LDD CN+3 RETURN BLOCK (PRU) SIZE
- LPN 77
- STD CN+3
- SADT .BS
- LDC *
- SHN 14
- STD CN+2
- SHN -14
- SHN 6
- RAD CN+3
- SADT .FE,,4,A
- LDC * RETURN BLOCK SIZE
- CWD CN
- LDM UDTB+10 SAVE OPEN STATUS
- STD CM
- STM FHRB
- LPC 6777 SET FILE OPENED STATUS
- LMD TH
- STM UDTB+10
- OPFA LDN 0 FET LENGTH - 5
- STD T3
- SBN 10
- PJN OPF4 IF FET LONG ENOUGH FOR LABEL PARAMETERS
- LDM FETO
- SHN 21-5
- PJN OPF1 IF NOT EXTENDED LABELS
- LDD T3 FET LENGTH - 5
- SBN 10D-5
- PJN OPF4 IF FET AT LEAST 10D WORDS LONG
- OPF1 LDD LT
- SHN 21-12
- PJN OPF5 IF UNLABELED
- SHN 21-11-21+12
- MJN OPF5 IF NON-STANDARD LABEL
- LDD DS
- SHN 21-1
- PJN OPF2 IF NOT BUSY
- LDN /MTX/RBS REQUEUE ON UNIT BUSY
- LJM RET5 RETURN STATUS TO MAGNET
- OPF2 LPN 1
- ZJN OPF5 IF NOT LOAD POINT
- OPF3 RJM WUD REWRITE UDT
- LJM RET1 RETURN
- OPF4 LDD LT
- SHN 21-12
- MJN OPF6 IF LABELED
- OPF5 RJM WUD
- LDN /MTX/BEI
- LJM RET3 RETURN ERROR CODE
- OPF6 SHN 21-11-21+12
- MJN OPF5 IF NON-STANDARD LABEL
- LDM CIOE
- LPN 4
- ZJN OPF8 IF NOT OPEN WRITE
- LDD CM
- SHN 21-11
- PJN OPF7 IF FIRST OPEN SINCE ASSIGNMENT
- LJM OPF18 TRANSFER HEADER INFORMATION TO FET
- OPF7 LJM OPF11 PROCESS OPEN WRITE
- OPF8 LDM CIOE CHECK IF *POSMF*
- SHN -2
- LPC 377
- LMN 22
- STM OPFB
- ZJN OPF9 IF *POSMF*
- LDD DS
- LPN 4
- NJN OPF9 IF LOAD POINT
- LJM OPF1 CHECK FOR BUSY
- OPF9 RJM FHR FIND *HDR1* LABEL
- LDM FETO
- SHN 21-5
- PJN OPF10 IF NOT EXTENDED LABELS
- LDN 0
- STD T6
- STD T7
- LDN ZERL
- CRD CN
- LDC 1
- OPFB EQU *-1 *POSMF* FLAG
- ZJN OPF10 IF *POSMF*
- RJM ELA
- ZJN OPF10 IF END OF BUFFER
- CWD CN PRESET BUFFER
- OPF10 RJM OPH OPEN HEADER
- RJM WUD REWRITE UDT
- LJM RET1 RETURN
- OPF11 RJM FHR FIND HEADER LABEL
- OPF12 LDN 0 SET TO VALIDATE NUMERIC CHARACTERS
- STM DCVA
- LDC BFMS SET BUFFERS
- STM IBUF
- LDC UDTB
- STM DBUF
- LDN 5 PROCESS FILE IDENTIFIER
- STD T6
- LDN 21D
- STD T7
- LDN 17D COPY CHARACTERS IF SPECIFIED
- RJM CCS
- OPFC LDN 41D PROCESS SET IDENTIFIER
- * UJN OPF13 (*POSMF 9999* AND NOT FIRST FILE)
- STD T7
- LDN 6
- RJM CCS
- OPFD LDN 38D PROCESS FILE SECTION NUMBER
- * UJN OPF13 (*POSMF 9999*)
- STD T7
- RJM CDN CONVERT DECIMAL NUMBER
- LDN 32D PROCESS FILE SEQUENCE NUMBER
- STD T6
- LDN 48D
- STD T7
- RJM CDN CONVERT DECIMAL NUMBER
- OPF13 LDN 36D PROCESS GENERATION NUMBER
- STD T6
- LDN 58D
- STD T7
- RJM CDN CONVERT DECIMAL NUMBER
- LDN 40D PROCESS GENERATION VERSION NUMBER
- STD T6
- LDN 56D
- STD T7
- RJM GCH
- ZJN OPF14 IF NOT SPECIFIED
- SOD T6
- LDC 20002
- RJM DCV
- UJN OPF15 SET CREATION DATE
- OPF14 LDN 2 SET GENERATION VERSION NUMBER TO ZERO
- RJM FCH
- OPF15 LDN JDAL SET CREATION DATE
- CRM BFMS,ON
- LDN 6
- STD T6
- LDN 61D
- STD T7
- LDN 5
- RJM CCH
- LDN 48D PROCESS EXPIRATION DATE
- STD T6
- RJM GCH
- NJN OPF16 IF SPECIFIED
- LDN 6 DEFAULT TO TODAYS DATE
- STD T6
- OPF16 LDN 5
- RJM CCH
- LDN 54D PROCESS ACCESSIBILTIY
- STD T6
- LDN 47D
- STD T7
- RJM GCH
- NJN OPF17 IF SPECIFIED
- LDN 1R
- OPF17 RJM SCH
- OPF18 LDM OPFB
- ZJN OPF19 IF *POSMF 9999*
- LDC LJMI SET TO RETURN LABEL BLOCK TO FET
- STM OPHA
- LDC OPH6
- STM OPHA+1
- RJM OPH
- LJM OPF5 REWRITE UDT AND EXIT WITH *BEI* ERROR
- OPF19 LJM OPF3 REWRITE UDT AND EXIT
- OPH SPACE 4,10
- ** OPH - OPEN READ/ALTER.
- *
- * CALLS CAN, CCH, DCV, ELA, GHD, SCH.
- *
- * MACROS MONITOR, SADT.
- OPH SUBR ENTRY/EXIT
- RJM GHD PROCESS HEADER LABEL
- LDN LABW
- STD T1
- SADT .LF
- LDC *
- SBD T1
- MJN OPH2 IF NOT ROOM FOR LABEL IN BUFFER
- LDM FETO
- SHN 21-5
- MJN OPH2 IF EXTENDED LABELS
- SADT .FT
- LDC * VALIDATE FIRST
- SBN 2
- PJN OPH1 IF FIRST .GT. 1
- LDN /MTX/BAE BUFFER ARGUMENT ERROR
- LJM RET3 RETURN ERROR CODE
- SADT .FT,,,A
- OPH1 LDC * TRANSFER HDR1
- CWM BUF,T1
- OPH2 LDC BFMS SET BUFFERS FOR COMPARISON
- * LJM OPH6 (OPEN/WRITE)
- OPHA EQU *-2
- STM IBUF
- LDC BUF
- STM DBUF
- LDN 5
- STD T6
- STD T7
- LDN 17D COMPARE FILE IDENTIFIER
- RJM CAN
- NJN OPH3 IF NO COMPARE
- LDN 6 COMPARE SET IDENTIFICATION
- RJM CAN
- NJN OPH3 IF NO COMPARE
- LDN 4 COMPARE FILE SECTION NUMBER
- RJM CAN
- NJN OPH3 IF NO COMPARE
- LDN 4 COMPARE FILE SEQUENCE NUMBER
- RJM CAN
- NJN OPH3 IF NO COMPARE
- LDN 4 COMPARE GENERATION NUMBER
- RJM CAN
- OPH3 NJN OPH4 IF NO COMPARE
- LDN 2 COMPARE GENERATION VERSION NUMBER
- RJM CAN
- NJN OPH4 IF NO COMPARE
- LDN 6 COMPARE CREATION DATE
- RJM CAN
- NJN OPH4 IF NO COMPARE
- LDN 6 COMPARE EXPIRATION DATE
- RJM CAN
- NJN OPH4 IF NO COMPARE
- LDN 1 COMPARE ACCESSIBILITY
- RJM CAN
- ZJN OPH6 IF GOOD COMPARE
- OPH4 STD EP SET CHARACTER POSITION REJECT OCCURRED
- LDM CIOE CHECK IF *POSMF*
- SHN -2
- LPC 377
- LMN 22
- NJN OPH5 IF NOT *POSMF*
- STD EP CLEAR EP
- LJM OPF5 REWRITE UDT
- OPH5 LDN /MTX/LPE SET LABEL PARAMETER ERROR
- LJM RET3 RETURN ERROR CODE
- OPH6 LDM FETO
- SHN 21-5
- PJN OPH8 IF NOT EXTENDED LABELS
- LDM OPFB
- NJN OPH7 IF NOT *POSMF*
- STD T6
- STD T7
- LDN ZERL PRESET BUFFER
- CRD CN
- RJM ELA
- ZJN OPH7 IF END OF BUFFER
- CWD CN
- OPH7 LJM OPHX RETURN
- * BUILD FET BLOCK TO RETURN TO USER
- OPH8 LDC BUF SET INPUT BUFFER
- STM IBUF
- LDC BFMS SET DESTINATION BUFFER
- STM DBUF
- LDN 5 COPY FILE IDENTIFIER
- STD T6
- LDN 1
- STD T7
- LDN 17D
- RJM CCH
- LDN 32D+1 COPY FILE SEQUENCE NUMBER
- STD T6
- LDN 3
- RJM CCH
- LDN 40D COPY GENERATION VERSION NUMBER
- STD T6
- LDN 2
- RJM CCH
- * RECALCULATE EXPIRATION DATE.
- LDN CN SET DESTINATION BUFFER
- STM DBUF
- LDN 49D CONVERT YEAR OF EXPIRATION
- STD T6
- LDN 1
- STD T7
- LDC 20002
- RJM DCV
- LDN 43D CONVERT YEAR OF CREATION
- STD T6
- LDC 20002
- RJM DCV
- LDN 51D CONVERT DAY OF EXPIRATION
- STD T6
- LDC 20003
- RJM DCV
- LDN 45D CONVERT DAY OF CREATION
- STD T6
- LDC 20003
- RJM DCV
- LDN CN
- RJM SCB SET CENTURY BIAS FOR YEAR OF EXPIRATION
- LDN CN+1
- RJM SCB SET CENTURY BIAS FOR YEAR OF CREATION
- LDC 99D
- LMD CN EXPIRATION YEAR
- NJN OPH8.1 IF YEAR NOT 99
- LDC 999D
- LMD CN+2 EXPIRATION DAY
- ZJN OPH11 IF INFINITE EXPIRATION DATE
- OPH8.1 LDN ZERL PRESET RESULT
- CRD CM
- LDD CN
- SBD CN+1
- ZJN OPH10 IF SAME YEAR
- MJN OPH13 IF LABEL EXPIRED
- OPH9 LDD CN+1
- LPN 3
- ZJN OPH9.1 IF LEAP YEAR
- LCN 1
- OPH9.1 ADC 366D INCREMENT DAYS
- RAD CN+2
- SHN -14
- NJN OPH11 IF OVERFLOW
- AOD CN+1
- SBD CN
- NJN OPH9 IF MORE YEARS
- OPH10 LDD CN+2 RETENTION DAYS
- SBD CN+3
- MJN OPH13 IF LABEL EXPIRED
- STD CM+4
- ADC -1000D
- MJN OPH12 IF LESS THAN 1000 DAYS
- OPH11 LDC 999D
- STD CM+4
- OPH12 LDD CM+4
- NJN OPH14 IF NOT EXPIRED
- OPH13 LDC 2R00 SET RETENTION CYCLE TO ZERO
- STD CM+3
- STD CM+4
- UJN OPH15 STORE CHARACTERS IN BUFFER
- OPH14 LDD MA
- CWD CM
- MONITOR RDCM CONVERT DATA
- LDD MA
- CRD CM
- OPH15 LDC BFMS SET DESTINATION BUFFER
- STM DBUF
- LDN 23D
- STD T7
- LDD CM+3 STORE CHARACTERS IN BUFFER
- RJM SCH
- LDD CM+4
- SHN -6
- RJM SCH
- LDD CM+4
- RJM SCH
- LDN 43D COPY CREATION DATE
- STD T6
- LDN 5
- RJM CCH
- LDN 22D COPY SET IDENTIFIER
- STD T6
- LDN 6
- RJM CCH
- LDN 28D FILE SECTION NUMBER
- STD T6
- LDN 4
- RJM CCH
- LDN 4
- STD T1
- SADT .FE,,,A
- LDC *
- ADN 11
- CWM BFMS,T1
- LJM OPHX RETURN
- TITLE SUBROUTINES.
- ELA SPACE 4,10
- ** ELA - EXTENDED LABELS ADDRESS PROCESSING.
- *
- * ENTRY (T6 - T7) = POSITION TO START AT IN BUFFER.
- *
- * EXIT (A) = ABSOLUTE ADDRESS.
- * (A) = 0, END OF LABEL BUFFER.
- *
- * MACROS SADT.
- ELA2 LDN 0 INDICATE END OF BUFFER
- ELA SUBR ENTRY/EXIT
- SADT .FE,,,A
- LDC * GET FET ADDRESS
- ADN 11
- CRD CM
- LDD CM+3
- SHN 14
- STD CM+1
- SHN -14
- STD CM+3
- SHN 14
- LMD CM+4
- SBN 2
- MJN ELA2 IF NO LABEL BUFFER
- LDD CM+2
- SHN 6
- LMD CM+1
- STD CM+2
- SHN -14
- STD CM+1
- LDD T6
- SBD CM+1
- SHN 14
- ADD T7
- SBD CM+2
- ADN 11 ALLOW FOR LABEL
- PJN ELA2 IF END OF LABEL BUFFER
- LDD CM+1 CHECK IF BUFFER WITHIN FL
- ADD CM+3
- SHN 14
- ADD CM+2
- ADD CM+4
- SHN -6
- SBD FL
- MJN ELA1 IF BUFFER WITHIN FL
- LDN /MTX/BAE BUFFER ARGUMENT ERROR
- LJM RET3 RETURN ERROR CODE
- ELA1 LDD CM+3 CALCULATE LABEL ADDRESS
- ADD T6
- SHN 6
- ADD RA
- SHN 6
- ADD CM+4
- ADD T7
- LJM ELAX RETURN
- FHR SPACE 4,10
- ** FHR - FIND *HDR1* LABEL.
- *
- * EXIT (BFMS - BFMS+47) = *HDR1* LABEL IF FOUND, OTHERWISE 0.
- *
- * CALLS CCH, CPO, DCV, ELA, FCH, GCD, GCH.
- *
- * MACROS MONITOR, SADT.
- FHR SUBR ENTRY/EXIT
- LDN CLBL CLEAR BUFFER
- STD T1
- FHR1 LDN 0
- STM BFMS,T1
- SOD T1
- PJN FHR1 IF MORE BUFFER TO CLEAR
- LDM FETO
- SHN 21-5
- PJN FHR2 IF NOT EXTENDED LABELS
- LJM FHR14 SEARCH FOR *HDR1* IN USER BUFFER
- FHR2 LDN 4 READ FET LABEL PARAMETERS
- STD T1
- SADT .FE,,,A
- LDC * FET ADDRESS
- ADN 11
- CRM BFMS-4*5,T1
- LDC BFMS-4*5 SET INPUT BUFFER ADDRESS
- STM IBUF
- LDC BFMS SET DESTINATION BUFFER ADDRESS
- STM DBUF
- LDN 1 MOVE FILE IDENTIFIER
- STD T6
- LDN 5
- STD T7
- LDN 17D
- RJM CCH
- LDN 32D
- STD T7
- LDM BFMS-4*5+10
- LPN 77
- SHN 14
- ADM BFMS-4*5+11
- ZJN FHR4 IF NO FILE SEQUENCE NUMBER
- LMC 3R999
- ZJN FHR3 IF *999* MUST EXPAND TO *9999*
- LDC 1L0&1L9
- FHR3 LMC 1L9+1
- RJM FCH
- LDN 3 COPY FILE SEQUENCE NUMBER
- RJM CCH
- FHR4 LDN 21D COPY GENERATION VERSION NUMBER
- STD T6
- LDN 40D
- STD T7
- LDN 2
- RJM CCH
- LDN 26D MOVE CREATION DATE
- STD T6
- RJM GCH
- STM FHRA
- ZJN FHR5 IF CREATION DATE NOT SPECIFIED
- SOD T6
- RJM SCF SET CENTURY FILL CHARACTER
- LDN 5
- RJM CCH
- FHR5 LDN 23D
- STD T6
- RJM GCH
- NJN FHR6 IF RETENTION CYCLE
- LJM FHR12 COPY SET ID
- FHR6 LDN 26D
- STD T6
- LDM CIOE
- LPN 4
- NJN FHR7 IF OPEN WRITE
- RJM CPO CHECK IF *POSMF 9999*
- ZJN FHR7 IF *POSMF 9999*
- LDC 0 FIRST CHARACTER OF CREATION DATE
- FHRA EQU *-1
- NJN FHR8 IF CREATION DATE SPECIFIED
- LDC UDTB DEFAULT TO CREATION DATE ON TAPE
- STM IBUF
- LDN 61D
- STD T6
- UJN FHR8 COPY EXPIRATION DATE
- FHR7 LDN 0 SET TO VALIDATE NUMERIC CHARACTERS
- STM DCVA
- LDN JDAL DEFAULT TO TODAYS DATE
- CRD CM
- LDN CM SET INPUT BUFFER
- STM IBUF
- LDN 6
- STD T6
- FHR8 LDN 48D SET DESTINATION BUFFER ADDRESS
- STD T7
- RJM SCF SET CENTURY FOR EXPIRATION DATE
- LDN 5 COPY EXPIRATION DATE
- RJM CCH
- LDC BFMS-4*5 RESET INPUT BUFFER
- STM IBUF
- LDN CN CHANGE DESTINATION BUFFER
- STM DBUF
- LDN 1 CONVERT RETENTION CYCLE
- STD T7
- LDN 23D
- STD T6
- LDC 20003
- RJM DCV
- LDC BFMS CONVERT DAYS FROM JULIAN DATE
- STM IBUF
- LDN 51D
- STD T6
- LDC 20003
- RJM DCV
- LDD CN
- LMC 999D
- NJN FHR9 IF NOT INDEFINITE
- LDC 2R99 SET TO YEAR 99
- STM BFMS+30
- LJM FHR11 COPY 999 TO DAYS OF EXPIRATION DATE
- FHR9 LDD CN+1 GET TOTAL NUMBER OF DAYS
- RAD CN
- LDN 49D CONVERT CREATION YEAR
- STD T6
- LDC 20002
- RJM DCV
- LDD CN+2
- LPN 3
- ZJN FHR10 IF LEAP YEAR
- LDN 1
- FHR10 ADC -366D
- ADD CN
- MJN FHR11 IF WITHIN THE CURRENT YEAR
- ZJN FHR11 IF LAST DAY OF CURRENT YEAR
- STD CN
- AOD CN+2
- AOM BFMS+30
- LPN 77
- LMN 1R9+1
- NJN FHR10 IF NO ROLLOVER
- LCN 1R9+1-1R0
- RAM BFMS+30
- UJN FHR10 CONTINUE RETENTION CYCLE CONVERSION
- FHR11 LDN ZERL CONVERT REMAINING DAYS
- CRD CM
- LDD CN
- STD CM+4
- LDD MA
- CWD CM
- MONITOR RDCM
- LDD MA
- CRD CM
- LDD CM+4
- SCN 77
- SHN 6
- LMD CM+3
- SHN 6
- STM BFMS+31
- LDD CM+4
- LPN 77
- SHN 6
- STD CM+4
- LDM BFMS+32
- LPN 77
- LMD CM+4
- STM BFMS+32
- LDC BFMS-4*5 RESET INPUT BUFFER ADDRESS
- STM IBUF
- FHR12 LDC BFMS RESTORE DESTINATION BUFFER ADDRESS
- STM DBUF
- LDN 31D MOVE SET IDENTIFICATION
- STD T6
- LDN 22D
- STD T7
- LDN 6
- RJM CCH
- LDN 4 MOVE FILE SECTION NUMBER
- RJM CCH
- LJM FHR20 CHECK FOR *POSMF*
- FHR13 LDN /MTX/IXL INCORRECT CHARACTER COUNT IN HEADER
- LJM RET3 RETURN ERROR CODE
- * GET LABEL FROM USER BUFFER.
- FHR14 LDN 0 SEARCH FOR *HDR1*
- STD T6
- STD T7
- FHR15 RJM ELA
- ZJN FHR17 IF END OF LABEL BUFFER
- CRD CN
- ADN 1
- CRD CM
- LDD CN+4
- ZJN FHR17 IF END OF LABELS IN BUFFER
- LMC 80D
- NJN FHR13 IF NOT CORRECT LENGTH
- LDD CM
- LMC 2RHD
- NJN FHR16 IF NOT *HD*
- LDD CM+1
- LMC 2RR1
- ZJN FHR19 IF *R1*
- FHR16 LDN 11 ADVANCE LABEL BUFFER POINTER
- RAD T7
- SHN -14
- RAD T6
- UJN FHR15 CONTINUE SEARCH
- FHR17 LDM OPFB
- NJN FHR18 IF NOT *POSMF*
- LDN /MTX/BAE *BUFFER ARGUMENT ERROR.*
- LJM RET3 RETURN ERROR CODE
- FHR18 LJM FHRX RETURN
- FHR19 LDN 10 READ UP LABEL
- STD T5
- RJM ELA SKIP HEADER WORD
- ADN 1
- CRM BFMS,T5
- FHR20 LDM OPFB
- NJN FHR18 IF NOT *POSMF*
- LDD PB
- NJN FHR22 IF CHECK TYPE OF *POSMF*
- LDD UP
- SHN 21-1
- PJN FHR18 IF NOT *POSMF 9999*
- LDD UP CLEAR *POSMF 9999* IN PROGRESS
- SCN 2
- STD UP
- LDM FHRC
- STM OPFD
- LDM UDTB+10 SET LABEL EXPIRED
- SCN 2
- LMN 2
- STM UDTB+10
- LDM UDTB+27 CHECK FILE NUMBER
- LPN 77
- SHN 14
- ADM UDTB+30
- LMN 1
- ZJN FHR21 IF POSITIONED AT FIRST FILE
- LDM FHRD SKIP TRANSFER OF SETID
- STM OPFC
- FHR21 LJM OPF12 RETURN TO TRANSFER FET TO UDT
- * CHECK IF *POSMF 9999* AND IF REWIND IS REQUIRED. IF
- * IT IS A *POSMF 9999*, THE *BEI* ERROR CODE IS RETURNED
- * TO *MAGNET*. IF NOT *POSMF 9999*, NO ERROR CODE
- * IS RETURNED AND REWIND STATUS IS INDICATED BY
- * RETURNING (PA) = 0 IF REWIND IS NEEDED AND (PA) .NE. 0
- * IF REWIND IS NOT NEEDED.
- FHR22 LDN 0 SET EXIT CONDITION
- STD PA
- LDD UP PRESET TYPE OF *POSMF*
- SCN 2
- STD UP
- RJM CPO CHECK IF *9999*
- NJN FHR23 IF NOT *9999*
- LDN 2 SET *POSMF 9999* IN PROGRESS
- RAD UP
- LDN /MTX/BEI RETURN *POSMF 9999* INDICATION
- LJM RET3 RETURN ERROR CODE
- FHR23 LDD UP CHECK WRITE STATUS
- SHN 21-4
- MJN FHR25 IF LAST OPERATION WRITE - REWIND
- LDC BFMS SET BUFFER ADDRESSES
- STM DBUF
- STM IBUF
- LDN 32D GET FIRST CHARACTER OF SEQUENCE NUMBER
- STD T7
- RJM GCD GET CHARACTER
- NJN FHR26 IF SEQUENCE NUMBER SPECIFIED
- LDN 5
- STD T7
- RJM GCD GET CHARACTER
- NJN FHR25 IF FI SPECIFIED - REWIND REQUIRED
- LDC * SET TO LABEL FLAGS IN UDT WORD *UVSN*
- FHRB EQU *-1
- SHN 21-11
- PJN FHR25 IF FIRST OPEN SINCE ASSIGNMENT
- FHR24 LDN 1 SET NO REWIND REQUIRED
- STD PA
- FHR25 LJM RET1 RETURN
- FHR26 LDN 32D CONVERT FET SEQUENCE NUMBER TO BINARY
- STD T6
- LDN 2
- STD T7
- LDC 30004 CONVERT DECIMAL FIELD
- RJM DCV
- LDM UDTB+27 CLEAR ACCESSIBILITY CHARACTER
- LPN 77
- STM UDTB+27
- LDM BFMS COMPARE UDT TO FET SEQUENCE NUMBER
- LPN 77
- SBM UDTB+27
- MJN FHR25 IF REWIND REQUIRED
- NJN FHR24 IF NO REWIND REQUIRED
- LDM BFMS+1
- SBM UDTB+30
- MJN FHR25 IF REWIND REQUIRED
- ZJN FHR25 IF REWIND REQUIRED
- UJN FHR24 SET NO REWIND REQUIRED
- FHRC BSS 0
- LOC OPFD
- UJN OPF13 SKIP FILE SEQUENCE NUMBER CONVERSION
- LOC *O
- FHRD BSS 0
- LOC OPFC
- UJN OPF13 SKIP TRANSFER OF SETID
- LOC *O
- GHD SPACE 4,10
- ** GHD - GENERATE *HDR1* LABEL FROM UDT.
- *
- * EXIT (BUF - BUF+50) = *HDR1* LABEL FROM CHARACTER POSITION
- * 5 TO 55.
- *
- * CALLS CBD, CCH, SCH.
- GHD SUBR ENTRY/EXIT
- LDN CLBL CLEAR BUFFER
- STD T1
- GHD1 LDN 0
- STM BUF,T1
- SOD T1
- PJN GHD1 IF MORE BUFFER TO CLEAR
- LDC UDTB SET INPUT BUFFER
- STM IBUF
- LDC BUF SET DESTINATION BUFFER
- STM DBUF
- LDC 2RHD SET *HDR1* IN BUFFER
- STM BUF
- LDC 2RR1
- STM BUF+1
- LDN 21D MOVE FILE IDENTIFIER
- STD T6
- LDN 5
- STD T7
- LDN 17D
- RJM CCH
- LDN 41D MOVE SET IDENTIFIER
- STD T6
- LDN 6
- RJM CCH
- LDN 38D CONVERT FILE SECTION NUMBER
- STD T6
- LDC 30004
- RJM CBD
- LDN 48D CONVERT FILE SEQUENCE NUMBER
- STD T6
- LDC 30004
- RJM CBD
- LDN 58D CONVERT GENERATION NUMBER
- STD T6
- LDC 30004
- RJM CBD
- LDN 56D CONVERT GENERATION VERSION NUMBER
- STD T6
- LDC 20002
- RJM CBD
- LDN 61D PROCESS CREATION DATE
- STD T6
- RJM SCF SET CREATION DATE CENTURY CHARACTER
- LDN 5 COPY CREATION DATE
- RJM CCH
- RJM SCF SET EXPIRATION DATE CENTURY CHARACTER
- LDN 5 COPY CREATION DATE
- RJM CCH
- LDN 47D COPY ACCESSIBILITY
- STD T6
- LDN 1
- RJM CCH
- LJM GHDX RETURN
- TITLE CHARACTER PROCESSING SUBROUTINES.
- SPACE 4,10
- ** DIRECT CELL USAGE IN FOLLOWING ROUTINES.
- *
- * ENTRY (T5) = NUMBER OF CHARACTERS.
- * (T6) = CHARACTER POSITION IN INPUT BUFFER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * ALL CHARACTER POSITIONS ARE REFERENCED STARTING WITH *1*.
- * THUS, THE CHARACTER POSITION VALUES BEING USED TO ACCESS
- * *BUF* MAY BE REFERENCED DIRECTLY TO THE LABEL STANDARD.
- IBUF CON UDTB FWA OF FETCH BUFFER
- DBUF CON BUF FWA OF DESTINATION BUFFER
- CAN SPACE 4,15
- ** CAN - COMPARE ALPHANUMERIC FIELDS.
- * COMPARE WILL BE GOOD IF ALL OF INPUT CHARACTER STRING IS
- * BINARY ZERO.
- *
- * ENTRY (A) = NUMBER OF CHARACTERS TO COMPARE.
- * (T6) = CHARACTER POSITION IN INPUT BUFFER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * EXIT (A) = 0, GOOD COMPARE.
- * (A) .NE. 0, (A) = CHARACTER POSITION AT START.
- * (T6), (T7) = UPDATED.
- *
- * USES T3, T4.
- *
- * CALLS GCD, GCH.
- CAN5 SOD T5 UPDATE TO SKIP REMAINDER OF FIELD
- RAD T6
- LDD T5
- RAD T7
- LDD T3
- CAN SUBR ENTRY/EXIT
- STD T5
- STD T4
- LDD T6 SAVE STARTING POSITION
- STD T3
- CAN1 RJM GCH GET CHARACTER
- NJN CAN2 IF SPECIFIED
- SOD T4
- NJN CAN1 IF MORE CHARACTERS TO CHECK
- LDD T5
- RAD T7
- LDN 0 GOOD COMPARE
- UJN CANX RETURN
- CAN2 LDD T3 RESET CHARACTER POSITION
- STD T6
- CAN3 RJM GCH GET CHARACTER
- STD T4
- NJN CAN4 IF NOT 00 CHARACTER
- LDN 1R
- STD T4
- CAN4 RJM GCD GET CHARACTER FROM DESTINATION BUFFER
- LMD T4
- NJN CAN5 IF NO COMPARE
- SOD T5
- NJN CAN3 IF MORE CHARACTERS TO COMPARE
- UJN CANX RETURN
- CBD SPACE 4,15
- ** CBD - CONVERT BINARY FIELD TO DECIMAL.
- *
- * ENTRY (A, 21 - 14) = NUMBER OF CHARACTERS IN BINARY FIELD
- * MAXIMUM OF 4.
- * (A, 13 - 0) = NUMBER OF DISPLAY CODE CHARACTERS TO
- * STORE WITH A MAXIMUM OF 6.
- *
- * EXIT RESULT STORED IN DESTINATION BUFFER.
- *
- * CALLS GCH, SCH.
- *
- * MACROS MONITOR.
- CBD SUBR ENTRY/EXIT
- STD T5
- SHN -14
- STD T4
- LDN ZERL PRESET FIELD TO CONVERT
- CRD CM
- CBD1 LDD CM+3 MOVE UP FIELD
- SHN 6
- STD CM+3
- LDD CM+4
- SHN 6
- STD CM+4
- SHN -14
- RAD CM+3
- RJM GCH GET CHARACTER
- RAD CM+4
- SOD T4
- NJN CBD1 IF MORE FIELD POSITIONS
- LDD MA CONVERT DATA
- CWD CM
- MONITOR RDCM
- LDD MA
- CRD CM
- LDD CM+3 REMOVE *.* FROM DATA
- LPN 77
- SHN 14
- LMD CM+2
- SHN 6
- STD CM+3
- LMD CM+3
- LMD CM+1
- SHN 6
- STD CM+2
- LDN CM+1 REMOVE SPACES
- STD T1
- CBD2 AOD T1 ADVANCE TO NEXT BYTE
- LMN CM+5
- ZJN CBD5 IF ALL SPACES
- LDI T1
- ZJN CBD3 IF ZERO
- LMC 2R
- NJN CBD4 IF NOT * *
- CBD3 LDC 2R00
- STI T1
- UJN CBD2 LOOP
- CBD4 SHN -6
- NJN CBD5 IF NOT * *
- LCN -1R0+1R
- SHN 6
- RAI T1
- CBD5 LDM CBDA,T5 SET TO ENTER STORE LOOP
- STD T1
- LJM 0,T1 STORE CHARACTERS
- CBD6 LDD CM+2 STORE SIXTH CHARACTER
- SHN -6
- RJM SCH
- CBD7 LDD CM+2 STORE FIFTH CHARACTER
- RJM SCH
- CBD8 LDD CM+3 STORE FOURTH CHARACTER
- SHN -6
- RJM SCH
- CBD9 LDD CM+3 STORE THIRD CHARACTER
- RJM SCH
- CBD10 LDD CM+4 STORE SECOND CHARACTER
- SHN -6
- RJM SCH
- CBD11 LDD CM+4 STORE FIRST CHARACTER
- RJM SCH
- LJM CBDX RETURN
- CBDA BSS 0 INDEXED BY NUMBER OF CHARACTERS TO STORE
- LOC 0
- CON CBDX
- CON CBD11
- CON CBD10
- CON CBD9
- CON CBD8
- CON CBD7
- CON CBD6
- LOC *O
- CCH SPACE 4,15
- ** CCH - COPY INPUT BUFFER TO DESTINATION BUFFER.
- *
- * ENTRY (A) = NUMBER OF CHARACTERS TO MOVE.
- * (T6) = CHARACTER POSITION IN INPUT BUFFER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * EXIT (T6), (T7) = INCREMENTED.
- *
- * USES T5.
- *
- * CALLS GCH, SCH.
- CCH SUBR ENTRY/EXIT
- STD T5
- CCH1 RJM GCH GET LABEL CHARACTER
- RJM SCH STORE CHARACTER IN USER BUFFER
- SOD T5
- NJN CCH1 IF MORE CHARACTERS TO MOVE
- UJN CCHX RETURN
- CCS SPACE 4,15
- ** CCS - COPY CHARACTERS IF SPECIFIED.
- * CHECKS FIELD FOR ALL ZEROES. IF ALL ZEROES, FIELD IS SPACE
- * FILLED. OTHERWISE FIELD IS COPIED FROM INPUT BUFFER TO
- * DESTINATION BUFFER.
- *
- * ENTRY (A) = NUMBER OF CHARACTERS TO PROCESS.
- * (T6) = INPUT BUFFER POSITION.
- * (T7) = DESTINATION BUFFER POSITION.
- *
- * EXIT (T6), (T7) = INCREMENTED.
- *
- * USES T5.
- *
- * CALLS FCH, GCH, SCH.
- CCS2 LDD MA COPY FIELD
- CRD T3
- LDD T5
- CCS3 RJM GCH GET LABEL CHARACTER
- NJN CCS4 IF NOT 00 CHARACTER
- LDN 1R
- CCS4 RJM SCH STORE CHARACTER IN DESTINATION BUFFER
- SOD T5
- NJN CCS3 IF MORE CHARACTERS TO MOVE
- CCS SUBR ENTRY/EXIT
- STD T5
- LDD MA SAVE DIRECT CELLS
- CWD T3
- CCS1 RJM GCH GET CHARACTER
- NJN CCS2 IF FIELD SPECIFIED
- SOD T5
- NJN CCS1 IF MORE CHARACTERS TO CHECK
- LDD MA SET DEFAULTS
- CRD T3
- LDD T5
- RAD T6
- LDD T5
- ADC 1L
- RJM FCH
- UJN CCSX RETURN
- CDN SPACE 4,10
- ** CDN - CONVERT DECIMAL FIELD (4 CHARACTERS).
- * IF FIELD IS NOT DEFINED, A DEFAULT OF 1 IS SET.
- *
- * ENTRY (T6) = CHARACTER POSITION IN INPUT BUFFER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * CALLS DCV, GCH, SCH.
- CDN1 LDN 0 SET DEFAULT
- RJM SCH
- LDN 0
- RJM SCH
- LDN 1
- RJM SCH
- CDN SUBR ENTRY/EXIT
- RJM GCH GET CHARACTER
- ZJN CDN1 IF FIELD NOT DEFINED
- SOD T6
- LDC 30004
- RJM DCV
- UJN CDNX RETURN
- CPO SPACE 4,10
- ** CPO - CHECK IF *POSMF 9999*.
- * MUST BE CALLED AFTER LABEL IS TRANSFERRED TO BFMS.
- *
- * EXIT (A) = 0 IF *POSMF 9999*
- * (DBUF) = BFMS.
- * (IBUF) = CPOA.
- *
- * CALLS CAN.
- *
- * USES T6, T7.
- CPO SUBR ENTRY/EXIT
- LDM OPFB
- NJN CPOX IF NOT *POSMF*
- LDC CPOA CHECK SEQUENCE NUMBER
- STM IBUF
- LDC BFMS
- STM DBUF
- LDN 1
- STD T6
- LDN 32D
- STD T7
- LDN 4
- RJM CAN COMPARE FIELDS
- UJN CPOX RETURN
- CPOA DATA H*9999*
- DCV SPACE 4,15
- ** DCV - CONVERT DECIMAL FIELD TO BINARY.
- *
- * ENTRY (A, 13 - 12) = NUMBER OF CHARACTER POSITIONS IN RESULT.
- * (A, 11 - 0) = NUMBER OF CHARACTERS IN LABEL FIELD.
- * (T6) = CHARACTER POSITION IN INPUT BUFFER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * EXIT (T6), (T7) = INCREMENTED.
- *
- * USES T1 - T5.
- *
- * CALLS GCH, SCH.
- DCV7 LDN /MTX/IXL INCORRECT LABEL FIELD
- LJM RET3 RETURN ERROR CODE
- DCV SUBR ENTRY/EXIT
- STD T5 NUMBER OF CHARACTERS IN LABEL
- SHN -14
- STD T4 NUMBER OF CHARACTER POSITIONS IN UDT
- LDN 0 PRESET RESULT
- STD T2
- STD T3
- DCV1 RJM GCH GET CHARACTER
- STD T1
- SBN 1R0
- RAD T3
- SHN -14
- RAD T2
- DCVA UJN DCV2 DO NOT VALIDATE CHARACTER
- * PSN (OPEN WRITE OR POSMF 9999)
- LDD T1
- SBN 1R0
- MJN DCV7 IF NOT NUMERIC CHARACTER
- SBN 1R9-1R0+1
- PJN DCV7 IF NOT NUMERIC CHARACTER
- DCV2 SOD T5 DECREMENT NUMBER OF CHARACTERS TO PROCESS
- ZJN DCV3 IF ALL DIGITS PROCESSED
- LDD T2 10D * ACCUMALATED RESULT
- SHN 14
- ADD T3
- SHN 2+6 * 4
- ADD T2 * 5
- SHN 14
- ADD T3
- SHN 1 * 10D
- STD T3
- SHN -14
- STD T2
- UJN DCV1 LOOP
- DCV3 LDD T4
- LMN 3
- NJN DCV4 IF NOT 3 CHARACTER POSITIONS
- LDD T2 STORE VALUE
- RJM SCH STORE CHARACTER
- UJN DCV5 STORE REMAINING CHARACTERS
- DCV4 LMN 2&3
- NJN DCV6 IF NOT 2 CHARACTER POSIITONS
- DCV5 LDD T3 STORE VALUE
- SHN -6
- RJM SCH STORE CHARACTER
- DCV6 LDD T3
- LPN 77
- RJM SCH STORE CHARACTER
- LJM DCVX RETURN
- FCH SPACE 4,15
- ** FCH - FILL DESTINATION BUFFER WITH CHARACTER(S).
- *
- * ENTRY (A, 17- 12) = CHARACTER TO FILL WITH.
- * (A, 11 - 0) = NUMBER OF CHARACTERS TO FILL.
- * (T7) = CHARACTER POINTER IN DESTINATION BUFFER.
- *
- * EXIT (T7) = INCREMENTED.
- *
- * USES T4.
- *
- * CALLS SCH.
- FCH SUBR ENTRY/EXIT
- STD T5 SAVE COUNT
- SHN -14
- STD T4 SAVE FILL VALUE
- FCH1 LDD T4 STORE CHARACTER
- RJM SCH
- SOD T5
- NJN FCH1 IF MORE TO FILL
- UJN FCHX RETURN
- GCD SPACE 4,10
- ** GCD - GET CHARACTER FROM DESTINATION BUFFER.
- *
- * ENTRY (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * EXIT (A) = CHARACTER.
- * (T7) = INCREMENTED.
- *
- * USES T1.
- GCD1 LDM -1,T1
- LPN 77
- GCD SUBR ENTRY/EXIT
- AOD T7
- SBN 1
- SHN 21
- ADM DBUF
- STD T1
- SBM DBUF
- SHN -21
- ZJN GCD1 IF LOWER 6 BITS
- LDI T1
- SHN -6
- UJN GCDX RETURN
- GCH SPACE 4,10
- ** GCH - GET CHARACTER FROM INPUT BUFFER.
- *
- * ENTRY (T6) = CHARACTER POSITION IN INPUT BUFFER.
- *
- * EXIT (A) = CHARACTER.
- * (T6) = INCREMENTED.
- *
- * USES T1.
- GCH1 LDM -1,T1
- LPN 77
- GCH SUBR ENTRY/EXIT
- AOD T6
- SBN 1
- SHN 21
- ADM IBUF
- STD T1
- SBM IBUF
- SHN -21
- ZJN GCH1 IF LOWER 6 BITS
- LDI T1
- SHN -6
- UJN GCHX RETURN
- SCB SPACE 4,10
- ** SCB - SET CENTURY BIAS.
- * ADJUSTS BINARY YEAR TO NEXT CENTURY IF REQUIRED.
- *
- * ENTRY (A) = ADDRESS OF CELL CONTAINING YEAR.
- *
- * EXIT ((A)) ADJUSTED UPWARD BY 100D IF ORIGINALLY .LT. 70D.
- *
- * USES T0.
- SCB SUBR ENTRY/EXIT
- STD T0 SAVE ADDRESS OF YEAR
- LDI T0
- SBK 70D
- PJN SCBX IF YEAR .LE. 1999
- LDC 100D ADJUST YEAR TO NEXT CENTURY
- RAI T0
- UJN SCBX RETURN
- SCF SPACE 4,10
- ** SCF - SET CENTURY FILL CHARACTER.
- * GENERATES THE *ISO* STANDARD CENTURY CHARACTER, BASED ON THE
- * YEAR IN THE INPUT BUFFER, AND PLACES IT IN THE OUTPUT BUFFER.
- *
- * ENTRY (T6) = CHARACTER POSITION OF YEAR IN INPUT BUFFER.
- * (T7) = CHARACTER POSITION IN OUTPUT BUFFER.
- *
- * EXIT FILL CHARACTER PLACED IN OUTPUT BUFFER,
- * (* * FOR 19XX YEARS, *0* FOR 20XX YEARS).
- * (T6) = (A) = ORIGINAL (T6).
- * (T7) INCREMENTED.
- *
- * CALLS GCH, SCH.
- *
- * USES T6.
- SCF1 LDN 1R SPACE FILL
- SCF2 RJM SCH
- SOD T6
- SCF SUBR ENTRY/EXIT
- RJM GCH GET TENS DIGIT OF YEAR
- SBN 1R7
- PJN SCF1 IF YEAR .LE. 1999
- LDN 1R0 ZERO FILL FOR NEXT CENTURY
- UJN SCF2 STORE CHARACTER AND RETURN
- SCH SPACE 4,10
- ** SCH - STORE CHARACTER IN DESTINATION BUFFER.
- *
- * ENTRY (A) = CHARACTER.
- * (T7) = CHARACTER POSITION IN DESTINATION BUFFER.
- *
- * EXIT (T7) = INCREMENTED.
- *
- * USES T1.
- SCH1 LDM -1,T1
- SCN 77
- LMD T0
- SCH2 STM -1,T1
- SCH SUBR ENTRY/EXIT
- LPN 77
- STD T0 SAVE CHARACTER
- AOD T7 INCREMENT POSITION
- SHN 21 SET BYTE ADDRESS
- ADM DBUF
- STD T1
- SBM DBUF
- SHN -21
- NJN SCH1 IF EVEN CHARACTER
- LDM -1,T1
- LPN 77
- SHN 14
- LMD T0
- SHN 6
- UJN SCH2 STORE CHARACTER
- UDA SPACE 4,10
- ** UDA - UDT ADDRESS OF LABEL PARAMETERS (UUFN)
- *
- * EXIT (T1) = WORD COUNT TO WRITE.
- *
- * CALLS UAD.
- UDA SUBR ENTRY/EXIT
- LDN /MTX/UUDTL
- STD T1
- RJM UAD
- ADN /MTX/UUFN
- UJN UDAX RETURN
- WUD SPACE 4,10
- ** WUD - WRITE UNIT DESCRIPTOR TABLE.
- * OPERATION ONLY PERFORMED IF AT MAGNET CP.
- *
- * CALLS CEC, UDA.
- WUD SUBR ENTRY/EXIT
- LDM CECB
- LPN 77
- ZJN WUD1 IF AT MAGNET CP
- LDN 0 CHNAGE TO MAGNET CP
- RJM CEC
- WUD1 RJM UDA GET UDT LABEL ADDRESS ADDRESS
- CWM UDTB,T1
- UJN WUDX RETURN
- SPACE 4,10
- ** ADDRESS RELOCATION.
- TADD TSAD ADDRESS RELOCATION TABLE
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * CALLS MCH, UDA.
- PRS LDC PRSA MODIFY CHANNELS
- RJM MCH
- LDC /SRU/ITCL*100 SET SRU INCREMENT
- STM //CECA
- LDN F0040
- STM //ITMA
- LDC TADD SET UP FOR ADDRESS RELOCATION
- STD CN
- RJM UDA
- CRM UDTB,T1
- SBN /MTX/UUFN+/MTX/UUDTL-/MTX/UCIA
- CRD T1 GET FET LENGTH - 5
- LDD T1+1
- SHN -6
- RAM OPFA
- LJM PRSX RETURN
- PRSA CHTB CHANNEL TABLE
- SPACE 4,10
- ERROVL
- SPACE 4,10
- ** BUFFERS.
- UDTB EQU PRSA
- UDTBL EQU UDTB+/MTX/UUDTL*5
- BUF EQU UDTBL
- OVERLAY (TAPE POSITIONING OPERATIONS.),(/READ/OVLS+5),,SKP
- SKP SPACE 4,10
- ** SKP - SKIP.
- * THIS ROUTINE SKIPS BLOCKS IN A FORWARD DIRECTION. *SKP* IS
- * OVERLAYED BY *SKR* FOR SKIP REVERSE.
- *
- * EXIT TO *RET1* OF NORMAL COMPLETION.
- * TO *RET2* IF DROP OUT BLOCK COUNT REACHED.
- * TO *RET3* IF TAPE MARK.
- *
- * CALLS DBF, SLL, /READ/RDF, UAD.
- ENTRY SKP FROM *PRS*
- SKP BSS 0
- .OSKR EQU *
- SKP1 LDN 0
- STM IDFE CLEAR CHUNK COUNT FOR LI FORMAT
- LJM /READ/RDF READ TAPE (RETURN AT *SKP2*)
- SKP2 UJN SKP3 NOT SI FORMAT, 9/18 TRACK
- SKPA EQU *-1
- * LDD ES (9/18 TRACK SI FORMAT)
- LPN 40
- ZJN SKP3 IF NO FILL STATUS
- SOD BY ADJUST BYTE COUNT
- SKP3 RJM DBF DETERMINE BLOCK TYPE FORWARD
- AOD BL+1 INCREMENT BLOCK COUNTER
- SHN -14
- RAD BL
- LDD T2
- LMN 14
- SKPB UJN SKP6 IF NOT TAPE MARK
- * NJN SKP6 (LABELED OR I/SI/LI FORMAT)
- SOD BL+1 ADJUST BLOCK COUNT
- PJN SKP4 IF NO UNDERFLOW
- SOD BL
- AOD BL+1
- SKP4 PSN
- PSN
- * RJM SLL (S,L FORMAT LABELED TAPE)
- SKP5 LDN /MTX/BEI SET TAPE MARK ENCOUNTERED
- LJM RET3 RETURN ERROR CODE
- SKP6 AOD BT INCREMENT BLOCKS TRANSFERRED
- AOD CN+4 INCREMENT BLOCKS SKIPPED
- RJM UAD
- ADN /MTX/UBLC
- CWD CN
- LDD T7
- NJN SKP7 IF NOT TERMINATION CONDITION
- LDD PA
- SHN 14
- ADD PB
- ZJN SKP10 IF END OF SKIP
- SBN 1
- ZJN SKP10 IF END OF SKIP
- STD PB
- SHN -14
- STD PA
- SKP7 LDD CN+4
- ADC -SBLK
- MJN SKP8 IF NOT TIME TO CHECK ERROR FLAG
- LDD TH
- RAD PA
- UJN SKP11 RETURN STATUS TO *MAGNET*
- SKP8 LDD DF CHECK DROP OUT FLAG
- NJN SKP9 IF DROP OUT SET
- LJM SKP1 READ TAPE
- SKP9 LJM RET2 REQUEUE
- SKP10 LDM LNUM SET OPERATION COMPLETE
- SHN 2
- STD PA
- SKPD LDD T2 SET EOR/EOF STATUS
- * LDN 0 (PRU SKIP)
- LPN 10
- SKPE ADN 20
- * PSN (READSKP OR PRU SKIP)
- ADM CIOE MERGE IN CIO CODE
- LPC 774
- STD PB
- LDN 10 SET EOR/EOF FLAG
- RAD UP
- SKP11 LJM RET1 RETURN
- BSS 6
- .OSKRL EQU *
- DBF SPACE 4,10
- ** DBF - DETERMINE BLOCK TYPE FORWARD.
- *
- * EXIT (A) = (T7) = 0, IF TERMINATION MET.
- * (T2) = TERMINATION STATUS.
- *
- * USES BL, BL+1, T1, T2, T7.
- *
- * CALLS *CRE*, IDF, *REM*, UBW, VDA.
- *
- * MACROS CALL.
- DBF SUBR ENTRY/EXIT
- LDM BUF-1,BY SAVE LEVEL NUMBER
- DBFA EQU *-2
- * LDM BUFB+4 (LI FORMAT)
- STM IDFC
- DBFB RJM VDA VALIDATE DATA I FORMAT
- * PSN ALL OTHER FORMATS
- * PSN
- LDD EP
- LPN 77
- SHN 14
- LMD EC
- ZJN DBF5 IF NO ERROR
- LMN /MTX/BEI
- NJN DBF2 IF NOT TAPE MARK
- LDN 1 SET TAPE MARK INDICATION
- DBF1 STM UBWB
- DBFC EQU *-2
- * UJN DBF5 (CTS)
- RJM UBW UPDATE BID WINDOW
- UJN DBF5 SKIP ERROR PROCESSOR CALL
- DBF2 LMN /MTX/STE&/MTX/BEI
- NJN DBF3 IF NOT STATUS ERROR
- DBFD UJN DBF3 PROCESS ERRORS
- * LDN 4 (PO=N OR MTX/ATS SKIPEI OR POSMF)
- UJN DBF1 SET UNUSABLE BID
- DBF3 UJN DBF4 LOAD READ ERROR PROCESSOR
- DBFE EQU *-1
- * AOD BL+1 INCREMENT BLOCK COUNT (SKIP BACK)
- SHN -14
- RAD BL
- DBFF BSS 0
- * CALL CRE LOAD ERROR PROCESSOR (CTS)
- DBF4 CALL REM LOAD READ ERROR PROCESSOR
- UJN DBF5 FORWARD SKIP
- * SOD BL+1 (REVERSE SKIP - DECREMENT BLOCK COUNT)
- DBFG EQU *-1
- PJN DBF5 IF NO UNDERFLOW
- AOD BL+1
- SOD BL
- DBF5 RJM IDF PROCESS INTERNAL DATA FORMAT
- STD T2 SAVE STATUS
- LDD MD
- DBFH LPN 10 (S, L, F FORMAT)
- * LPN 14 (I, SI, LI FORMAT)
- ZJN DBF6 IF PRU OPERATION
- STD T1
- LDD T2 DETERMINE IF TERMINATION MET
- SBD T1
- MJN DBF6 IF TERMINATION NOT MET
- LDD T1
- LMN 4
- NJN DBF6 IF NOT EOR
- LDM LNUM
- DBFI SBN 0 LEVEL NUMBER
- DBF6 SHN -21 SET TERMINATION FLAG
- STD T7
- LJM DBFX RETURN
- DBR SPACE 4,10
- * THE FOLLOWING CODE GETS OVERLAID IF NOT USING READ REVERSE.
- * ISMT GCR, CTS, AND LI FORMAT DO NOT USE READ REVERSE.
- .DBRR EQU *
- ** DBR - DETERMINE BLOCK TYPE REVERSE.
- *
- * USES CM - CM+4.
- *
- * CALLS DBF.
- DBR2 RJM DBF DETERMINE BLOCK TYPE FORWARD
- DBR SUBR ENTRY/EXIT
- DBRA UJN DBR2 DETERMINE BLOCK TYPE
- * LDD BY (USING READ REVERSE)
- ZJN DBR2 IF NO DATA READ
- * THE FOLLOWING CODE GETS OVERLAID IF 9 TRACK SI
- * FORMAT SKIP REVERSE OPERATION OR IF MTS 9 TRACK, I
- * FORMAT SKIP REVERSE.
- .DBRO EQU * BEGINNING OF OVERLAID AREA
- LDC BUF
- STM DBRC
- LDD WC
- LPN 1
- DBRB UJN DBR1 DO NOT SKIP FIRST BYTE
- * ZJN DBR1 (9 TRACK I FORMAT - IF EVEN WORD COUNT)
- AOM DBRC SKIP FIRST BYTE (I FORMAT)
- DBR1 LDD MA SAVE FIRST FOUR BYTES
- CWM BUF,ON
- DBRC EQU *-1
- SBN 1
- CRD CM
- LDD CM STORE LAST FOUR BYTES
- STM BUF-1,BY
- LDD CM+1
- STM BUF-2,BY
- LDD CM+2
- STM BUF-3,BY
- LDD CM+3
- STM BUF-4,BY
- LJM DBR2 DETERMINE BLOCK TYPE FORWARD
- .DBROL EQU *-.DBRO LENGTH OF OVERLAID AREA
- .DBRRL EQU *-.DBRR LENGTH OF OVERLAID AREA
- IDF SPACE 4,10
- ** IDF - PROCESS INTERNAL DATA FORMAT.
- *
- * EXIT (A) = TERMINATION STATUS.
- *
- * CALLS CFP.
- IDF2 LDN 17 SET LEVEL 17
- STM LNUM
- LDN 14 RETURN EOI
- IDF SUBR ENTRY/EXIT
- LDD EC
- LMN /MTX/BEI
- ZJN IDF2 IF TAPE MARK
- LDD BY
- ADC 0
- IDFE EQU *-1 (LI FORMAT CHUNK COUNT)
- ZJN IDF2 IF NO BYTES READ
- LMM /READ/MRDA
- IDFA EQU *-1
- * RJM CFP (LI FORMAT)
- * LMM /READ/RCTA (CTS)
- LMN 1
- STM LNUM SET 0 LEVEL NUMBER
- IDFB ZJN IDFX IF FULL PRU
- * PSN (NOT I/SI/LI FORMAT)
- LDC * EXTRACT LEVEL NUMBER
- IDFC EQU *-1
- LPN 77
- IDFD LDN 0 (NOT I/SI/LI FORMAT)
- * PSN (I/SI/LI FORMAT)
- STM LNUM
- LMN 17
- ZJN IDF1 IF EOF
- LCN 4
- IDF1 ADN 10
- UJN IDFX RETURN
- VDA SPACE 4,10
- ** VDA - VALIDATE DATA.
- * CHECKS I FORMAT TRAILER BYTES OR LI FORMAT PREFIX BYTES.
- * IF LI FORMAT, *VDA* IS OVERLAYED WITH *VLI*.
- VDA SUBR ENTRY/EXIT
- LDD BY
- ZJN VDAX IF NO DATA READ
- LDD EC
- ZJN VDA1 IF NO PREVIOUS ERRORS ENCOUNTERED
- LMN /MTX/STE
- NJN VDAX IF NOT STATUS ERROR CODE
- VDAA EQU *-1
- * UJN VDAX (CTS)
- LDM MTDS
- LPC 7777
- VDAB EQU *-1
- * LPC 7077 (MTS UNIT)
- NJN VDAX IF ERRORS REPORTED FROM HARDWARE
- VDA1 LDD EP
- SHN 21-12
- MJN VDAX IF OPPOSITE PARITY BEING TRIED
- LDM BUF-4,BY SAVE BLOCK LENGTH
- STM //BNEI
- LDM BUF-3,BY
- STM //BNEI+1
- LMD BL
- SHN 14
- LMM BUF-2,BY
- STM //BNEI+2
- LMD BL+1
- ZJN VDA2 IF BLOCK NUMBER CORRECT
- LDN /MTX/BNE
- STD EC
- VDA2 LJM VDAX RETURN
- SPACE 4,10
- BUFFER
- BSS 7 SO *VLI* DOES NOT OVERFLOW
- VDAL EQU *-VDAX LENGTH OF *VDA*
- CFP SPACE 4,10
- ** CFP - CHECK FULL PRU FOR LI FORMAT.
- *
- * ENTRY (BUFB - BUFB+4) = LI FORMAT BLOCK PREFIX.
- *
- * EXIT (A) = 1 IF FULL PRU.
- CFP SUBR ENTRY/EXIT
- LDM BUFB GET BYTE COUNT
- SHN 14
- ADM BUFB+1
- ADC -50005+1 CHECK FULL PRU
- UJN CFPX RETURN
- SLB SPACE 4,10
- ** SLB - SKIP LONG BLOCK.
- * THIS CODE IS OVERLAYED WITH *SLI* FOR LI FORMAT.
- *
- * ENTRY AT *SLB* FROM *MRD* OR *RCT* WHEN *LBBY* BYTES HAVE
- * BEEN READ.
- *
- * USES T2.
- SLB PSN MAKE ROUTINE AS LONG AS *SLI*
- LDN 2 INPUT 2 BYTES
- IAM BUFB,CH
- LCN 0
- STD T2
- SLB1 LDC 400 INPUT DATA
- IAM BUFB,CH
- NJN SLB3 IF END OF BLOCK
- SOD T2
- NJN SLB1 IF NOT BLOCK TOO LONG
- SLBL EQU *-SLB LENGTH OF CODE THAT CAN BE OVERLAYED
- SLB2 LJM /READ/MRD4.1 SET BLOCK TOO LARGE
- SLBA EQU *-1
- * LJM /READ/RCT4 (CTS)
- SLB3 LJM /READ/MRD4 CALCULATE REMAINDER OF CM WORD COUNT
- SLBB EQU *-1
- * LJM /READ/RCT5 (CTS)
- SPACE 4,10
- BUFFER BUFB
- SKR SPACE 4,10
- ** SKR - SKIP REVERSE.
- * THE FOLLOWING CODE OVERLAYS *SKP* IF THE OPERATION IS
- * SKIP REVERSE.
- *
- * EXIT TO *RET1* IF NORMAL COMPLETION.
- * TO *RET2* TO REQUEUE.
- *
- * CALLS BKS, DBF, DBR, /READ/RDF, UAD.
- .BSKR BSS 0
- LOC .OSKR
- SKR4 UJN SKR5 NOT SI FORMAT, 9/18 TRACK
- SKRA EQU *-1
- * LDD ES (9/18 TRACK SI FORMAT)
- LPN 40
- ZJN SKR5 IF NO FILL STATUS
- SOD BY ADJUST BYTE COUNT
- SOD WC ADJUST WORD COUNT
- SKR5 SOD BL+1 DECREMENT BLOCK COUNT
- PJN SKR6 IF NO UNDERFLOW
- AOD BL+1
- SOD BL
- SKR6 RJM DBR DETERMINE BLOCK TYPE REVERSE
- SKRB EQU *-1
- * RJM DBF (GCR ISMT OR CTS)
- SKRC PSN
- PSN
- * RJM BKS (GCR ISMT OR CTS)
- LDD MD
- SHN 21-11
- MJN SKR7 IF NOT FIRST PASS
- LDD TH SET NOT FIRST PASS FLAG
- RAD MD
- UJN SKR8 CHECK FOR DROP OUT
- SKR7 AOD BT INCREMENT BLOCKS TRANSFERRED
- AOD CN+4 INCREMENT BLOCKS SKIPPED
- RJM UAD
- ADN /MTX/UBLC
- CWD CN
- LDD T7
- NJN SKR8 IF TERMINATION NOT MET
- LDD PA CHECK SKIP TERMINATION
- SHN 14
- ADD PB
- SBN 1
- ZJN SKR9 IF END OF SKIP
- STD PB UPDATE SKIP COUNT
- SHN -14
- STD PA
- SKR8 LDD CN+4
- ADC -SBLK
- MJN SKR11 IF NOT TIME TO CHECK ERROR FLAG
- LDD TH SET CHECK ERROR FLAG INDICATOR
- RAD PA
- LDD T7
- ZJN SKR2.1 IF TERMINATION MET
- AOD MD SET NOT END OF RECORD FLAG
- UJN SKR2.1 RETURN STATUS TO *MAGNET*
- SKR9 LDD MD CLEAR REVERSE AND RECORD FLAGS
- LPC 3763
- STD MD
- * LDN 1 SET TO SKIP FORWARD ONE BLOCK
- * STD PB
- * LDN 0
- * STD PA CLEAR PARAMETER
- SKR10 LJM RET2 REQUEUE
- SKR11 LDD DF CHECK DROP OUT FLAG
- NJN SKR10 IF DROP OUT SET
- SKR BSS 0 ENTRY
- LDD BL
- ADD BL+1
- NJN SKR3 IF NOT BOI
- LDD MD
- SHN 21-11
- PJN SKR1 IF FIRST PASS
- LDD PA
- SHN 14
- ADD PB
- LMN 1
- ZJN SKR2 IF END OF SKIP
- SKR1 LDN 50
- SKR2 ADN 1
- STD PB
- LDN 0
- STD PA
- SKR2.1 LJM RET1 RETURN
- SKR3 PSN
- PSN
- * RJM BKS (GCR ISMT OR CTS)
- LDN 0
- STM IDFE CHUNKS TRANSFERRED FOR LI FORMAT
- LJM /READ/RDF READ TAPE (RETURN AT *SKR4)
- ERRNG .OSKRL-* OVERLAID CODE OVERFLOWED
- LOC *O
- .BSKRL EQU *
- PRS SPACE 4,10
- ** PRS - PRESET.
- * ISMT GCR AND CTS HARDWARE CAN NOT DO READ BACKWARDS. READ
- * BACKWARDS MUST BE REPLACED BY BACKSPACE BLOCK, READ FORWARD,
- * BACKSPACE BLOCK.
- *
- * EXIT (/READ/ISKR) = 0 IF USING READ REVERSE FOR SKIP
- * REVERSE.
- * TO *SKP* IF SKIP FORWARD.
- * TO *SKR* IF SKIP REVERSE.
- *
- * USES T1, T2, CN - CN+4.
- *
- * CALLS DTS, MCH, UAD.
- PRS LDN 0 CLEAR READ BACKWARDS FLAG
- STM /READ/ISKR
- LDD HP
- SHN 21-7
- PJP PRS1 IF NOT CTS
- LDC LDNI+CRE/10000
- STM DBFF LOAD CTS ERROR PROCESSOR
- LDC /READ/RCTA
- STM PRSD ADDRESS OF BYTE COUNT TO INPUT
- STM PRSE
- STM IDFA
- LDC /READ/RCTB
- STM PRSF ADDRESS OF INPUT ADDRESS
- LDC /READ/RCTC
- STM PRSG
- ISTORE DBFC,(UJN DBF5) SKIP UPDATING BLOCK ID WINDOW
- LDC UJNI-NJNI
- RAM VDAA SKIP CHECKING ATS STATUS
- LDC /READ/RCT4
- STM SLBA SET BLOCK TOO LARGE
- LDC /READ/RCT5
- STM SLBB CALCULATE REMAINDER OF CM WORD COUNT
- LDC /READ/RCTG
- STM PRSA
- LDD FM
- SHN -6
- LMN /MTX/TFLI
- NJN PRS1 IF NOT LI FORMAT
- LDC STMI
- STM /READ/RCTM CLEAR CHUNK COUNTER
- PRS1 LDD FM
- SHN -6
- LMN /MTX/TFI
- NJN PRS2 IF NOT I FORMAT
- LDC UJNI+2 DO NOT PROCESS DATA
- STM /READ/MRDH
- PRSA EQU *-1
- * STM /READ/RCTG (CTS)
- LDD HP
- LPN 40
- ZJN PRS2 IF NOT MTS UNIT
- LDC 7077
- STM VDAB
- PRS2 LDC LJMI
- STM /READ/RDFC
- LDC SKP2
- STM /READ/RDFC+1
- LDD PA INSURE CHECK ERROR FLAG BIT IS CLEAR
- LPN 77
- STD PA
- LDD MD
- SHN 21-13
- MJN PRS5 IF REVERSE MOTION
- LDD MD CHECK IF SKIP TO EOI
- LPN 14
- NJN PRS3 IF NOT PRU SKIP
- STM SKPE DO NOT SET EOR/EOF STATUS
- LDC LDNI
- STM SKPD
- UJN PRS4 CONTINUE PRESET
- PRS3 LMN 14
- NJN PRS4 IF NOT SKIPEI
- AOM PRSH SET SKIPEI OR POSMF IN PROGRESS
- ISTORE DBFD,(LDN 4) SET UNUSABLE BID IF ERROR
- PRS4 LJM PRS18 CONTINUE PRESET
- PRS5 LDC .BSKRL-.BSKR-1
- STD T1
- PRS6 LDM .BSKR,T1 REVERSE MOTION CODE
- STM .OSKR,T1
- SOD T1
- PJN PRS6 IF MORE CODE TO MOVE
- LDC .BKSML-1
- STD T1
- LDD HP
- SHN 21-7
- PJN PRS7 IF NOT CTS
- LDC /PRESET/GPS
- STM BKSA-.DBRR+.BKSM
- STM BKSD-.DBRR+.BKSM
- LDC MJNI+77+BKS0-BKSB (MJN BKS0)
- STM BKSB-.DBRR+.BKSM
- LDC UJNI+2
- STM BKSC-.DBRR+.BKSM
- STM BKSF-.DBRR+.BKSM
- LDC MJNI+77+BKS1-BKSE (MJN BKS1)
- STM BKSE-.DBRR+.BKSM
- UJN PRS9 INDICATE NOT USING SKIP REVERSE
- PRS7 SHN 21-10-21+7+22
- MJN PRS8 IF 639 TAPE CONTROLLER
- LDD FM
- SHN -6
- SBN /MTX/TFLI
- NJP PRS11 IF NOT LI FORMAT
- UJN PRS9 INDICATE NOT USING READ REVERSE
- PRS8 LDM //RELA
- ZJN PRS9 IF UNIT NOT CONNECTED, ASSUME GCR
- RJM DTS GET UNIT STATUS
- LDM ATUS CHECK DENSITY
- LPN 30
- LMN 30
- NJN PRS11 IF NOT GCR
- PRS9 AOM /READ/ISKR INDICATE NOT USING READ REVERSE
- LDC RJMI SET UP *RJM BKS*
- STM SKR3
- STM SKRC
- LDC BKS
- STM SKR3+1
- STM SKRC+1
- LDC DBF
- STM SKRB
- PRS10 LDM .BKSM,T1
- STM .DBRR,T1
- SOD T1
- PJN PRS10 IF MORE CODE TO MOVE
- UJN PRS12 CHECK CONTROLLER TYPE
- PRS11 LDC F0140 READ REVERSE
- STM ITMA
- PRS12 LDD HP
- LPC 221
- LMN 1
- NJN PRS14 IF CTS/ATS-TYPE CONTROLLER OR 7 TRACK
- LDD FM
- SHN -6
- LMN /MTX/TFI
- NJN PRS14 IF NOT I FORMAT
- LDN .DBRSL-1 SET LENGTH OF LEVEL NUMBER ROUTINE
- STD T1
- PRS13 LDM .DBRS,T1 MOVE CODE
- STM .DBRO,T1
- SOD T1
- PJN PRS13 IF MORE CODE TO MOVE
- LDC UJNI+PRS22-PRSB DISABLE INSTRUCTION MODIFICATION
- ERRNG PRSB-PRS22+37B
- STM PRSB
- LDN 0 DESELECT VALIDATE DATA FOR I FORMAT
- STM DBFB
- STM DBFB+1
- STM .DBRSB
- PRS14 LDD HP
- SHN 21-7
- PJN PRS15 IF NOT CTS
- LDC 6125
- STM /PRESET/WFEA WAIT NOT BUSY MASK
- UJN PRS16 CONTINUE PRESET
- PRS15 LDC 4425
- STM //WEOA
- PRS16 LDC SKR4
- STM /READ/RDFC+1
- LDC SKRA SET TO MODIFY CORRECT INSTRUCTION
- STM PRSC
- LDC AODI+BL+1
- STM DBFE
- LDC SODI+BL+1
- STM DBFG
- LDD FM
- SHN -6
- SBN /MTX/TFSI+1
- PJN PRS18 IF NOT I OR SI FORMAT
- LDM /READ/ISKR
- NJN PRS18 IF NOT USING READ REVERSE
- LDC LDDI+BY SET TO SET LEVEL NUMBER
- STM DBRA
- PRS18 LDM LNUM SET LEVEL NUMBER
- SHN -10
- RAM DBFI
- LDM CIOE
- LPC 774
- LMN 20
- NJN PRS19 IF NOT READSKP
- STM SKPE RETURN 31 STATUS IF EOF READ
- PRS19 LDD FM
- SHN -6
- SBN /MTX/TFSI+1
- MJN PRS20 IF I OR SI FORMAT
- SBN /MTX/TFLI-/MTX/TFSI-1
- NJP PRS23 IF NOT LI FORMAT
- LDC RJMI
- STM IDFA-1
- LDC CFP CHECK FOR FULL PRU
- STM IDFA
- LDC LDMI
- STM DBFA GET LEVEL NUMBER
- LDC BUFB+4
- STM DBFA+1
- PRS20 LDN 0 SET I/SI/LI FORMAT LEVEL NUMBER CHECK
- STM IDFD
- LDN 4
- RAM DBFH
- LDD FM
- SHN -6
- LMN /MTX/TFSI
- ZJN PRS23 IF SI FORMAT
- PRSB LDD HP
- * UJN PRS22 (MTS CONTROLLER REVERSE SKIP)
- SHN 21-7
- MJN PRS21 IF CTS
- SHN 21-0-21+7
- PJN PRS22 IF 7 TRACK
- PRS21 LDM /READ/ISKR
- NJN PRS22 IF NOT USING READ REVERSE
- LDC ZJNI-UJNI
- RAM DBRB
- PRS22 UJN PRS24 COMPLETE PRESET
- PRS23 LDN 0
- STM DBFB
- STM DBFB+1
- LDD FM
- SHN -6
- LMN /MTX/TFSI
- ZJN PRS25 IF SI FORMAT
- PRS24 LJM PRS28 COMPLETE PRESET
- PRS25 LDD HP
- LPN 1
- ZJN PRS28 IF 7 TRACK
- LDC LDDI+ES SET TO CHECK FOR FILL STATUS
- STM SKPA
- * STM SKRA (SKIP REVERSE)
- PRSC EQU *-1
- LDD MD
- SHN 21-13
- PJN PRS28 IF SKIP FORWARD
- LDM /READ/ISKR
- NJN PRS28 IF NOT USING READ REVERSE
- LDN .DBRML LENGTH OF ATS LEVEL NUMBER ROUTINE
- STD T1
- LDD HP
- LPN 40
- ZJN PRS26 IF NOT MTS CONTROLLER
- LDN .DBRSL-1 SET LENGTH OF MTS LEVEL NUMBER ROUTINE
- STD T1
- LDN .DBRS-.DBRM
- PRS26 ADC .DBRM
- ADD T1 ADD LENGTH
- STD T2
- PRS27 LDI T2 MOVE CODE
- STM .DBRO,T1
- SOD T2
- SOD T1
- PJN PRS27 IF MORE CODE TO MOVE
- PRS28 LDD PA
- ADD PB
- NJN PRS29 IF SKIP COUNT SPECIFIED
- AOD PB
- PRS29 LDD MD
- SHN 21-13
- MJN PRS32 IF SKIP REVERSE
- LDD FM
- SHN -6
- SBN /MTX/TFSI+1
- MJN PRS31 IF I/SI FORMAT
- SBN /MTX/TFLI-/MTX/TFSI-1
- ZJN PRS31 IF LI FORMAT
- LDD LT
- SHN 21-12
- PJN PRS32 IF NOT LABELED
- LDC RJMI SET *RJM SLL* TO DECREMENT SKIP COUNT
- STM SKP4
- LDC SLL
- STM SKP4+1
- LDN .DBSLL-1 SET LENGTH OF *SLL* SUBROUTINE
- STD T1
- PRS30 LDM .DBSL,T1 MOVE CODE
- STM .DBRO,T1
- SOD T1
- PJN PRS30 IF MORE CODE TO MOVE
- PRS31 LDC NJNI-UJNI
- RAM SKPB
- PRS32 LDD FM
- SHN -6
- SBN /MTX/TFSI+1
- MJN PRS33 IF I OR SI FORMAT
- SBN /MTX/TFLI-/MTX/TFSI-1
- ZJN PRS33 IF LI FORMAT
- LDN 0 SET TO ALWAYS RETURN EOR
- STM IDFB
- LDC 5001 SET MAXIMUM BLOCK LENGTH
- STM /READ/MRDA
- PRSD EQU *-1
- * STM /READ/RCTA (CTS)
- PRS33 LDD FM
- SHN -6
- SBN /MTX/TFL
- ZJN PRS35 IF L FORMAT
- SBN /MTX/TFLI-/MTX/TFL
- NJN PRS34 IF NOT LI FORMAT
- LDC SLBY CHUNK LENGTH FOR SKIPPING IN LI FORMAT
- UJN PRS36 SET LENGTH OF LAST INPUT
- PRS34 LDD OV
- ZJN PRS37 IF NOT POSSIBLE LONG BLOCKS
- LDD FM
- SHN -6
- LMN /MTX/TFF
- NJN PRS37 IF NOT F FORMAT
- PRS35 LDC LBBY SET UP FOR LONG BLOCKS
- PRS36 STM /READ/MRDA
- PRSE EQU *-1
- * STM /READ/RCTA (CTS)
- LDC BUFB
- STM /READ/MRDB
- PRSF EQU *-1
- * STM /READ/RCTB (CTS)
- LDC SLB
- STM /READ/MRDC
- PRSG EQU *-1
- * STM /READ/RCTC (CTS)
- PRS37 LDC PRSI MODIFY CHANNELS
- RJM MCH
- PRSH LDN 0 SET SKIP STATUS
- * LDN 1 (SKIPEI OR POSMF OPERATION)
- STM /READ/SKEI
- LDD SP SET PO=N FLAG
- LPN 2
- ZJN PRS38 IF NOT PO=N OPTION
- ISTORE DBFD,(LDN 4) SET UNUSABLE BID IF ERROR
- PRS38 LDD FM
- SHN -6
- SBN /MTX/TFLI
- NJN PRS41 IF NOT LI FORMAT
- LDK .SLIL-1 LENGTH OF CODE TO MOVE - 1
- STD T1
- PRS39 LDM .SLI,T1 REPLACE *SLB* WITH *SLI*
- STM SLI,T1
- SOD T1
- PJN PRS39 IF MORE CODE TO MOVE
- LDC SLIA
- RJM MCH MODIFY CHANNELS FOR *SLI*
- LDK .VLIL-1
- STD T1 LENGTH OF CODE TO MOVE - 1
- PRS40 LDM .VLI,T1 REPLACE *VDA* WITH *VLI*
- STM VLIX,T1
- SOD T1
- PJN PRS40 IF MORE CODE TO MOVE
- PRS41 LDC PRS42 SET TO RETURN
- STD BT
- LJM PRSX RETURN
- PRS42 RJM UAD READ BLOCK ACCUMULATOR
- ADN /MTX/UBLC
- CRD CN
- LDD MD
- SHN 21-13
- MJP SKR IF SKIP REVERSE
- LJM SKP SKIP FORWARD
- PRSI CHTB
- SPACE 4,10
- * THE FOLLOWING CODE GETS MOVED TO .DBRO IF 9 TRACK
- * SI FORMAT SKIP REVERSE ON ATS CONTROLLER.
- .DBRM BSS 0 ATS CONTROLLER ROUTINE
- LOC .DBRO
- LDD MA READ FIRST WORD FROM BUFFER
- CWM BUF,ON
- SBN 1
- CRD CM
- LDD WC
- LPN 1
- ZJN .DBRM1 IF EVEN WORD COUNT
- LDN 73 SET FOR SHN -4 INSTRUCTION
- .DBRM1 ADC SHNI
- STM .DBRMA
- LDD CM SAVE LEVEL NUMBER
- .DBRMA SHN **
- * SHN 0 (EVEN WORD COUNT)
- * SHN -4 (ODD WORD COUNT)
- LPN 17
- STM BUF-1,BY
- LJM DBR2 DETERMINE IF TERMINATION MET
- LOC *O
- .DBRML EQU *-.DBRM LENGTH OF ATS ROUTINE
- ERRMI .DBROL-.DBRML OVERLAID CODE OVERFLOWED
- * THE FOLLOWING CODE GETS MOVED TO .DBRO IF 9 TRACK
- * I/SI FORMAT SKIP REVERSE ON MTS CONTROLLER.
- .DBRS BSS 0 MTS ROUTINE
- LOC .DBRO
- LDD WC SET BYTE TO START READ
- LPN 1
- LMN 1
- STD T1
- ADC BUF
- STM .DBRSA
- LDD MA SAVE FIRST WORD
- CWM *,ON
- * CWM BUF,ON (ODD WORD COUNT)
- * CWM BUF+1,ON (EVEN WORD COUNT)
- .DBRSA EQU *-1
- SBN 1
- CRD CM
- LDD T1
- .DBRSB ZJN .DBRS1 IF ODD WORD COUNT
- * PSN (I FORMAT - ALWAYS SHIFT -10)
- LDN 67 SET FOR SHN -10
- .DBRS1 ADC SHNI
- STM .DBRSC
- LDD CM SAVE LEVEL NUMBER
- .DBRSC SHN **
- * SHN 0 (ODD WORD COUNT)
- * SHN -10 (EVEN WORD COUNT)
- LPN 17
- STM BUF-1,BY
- LJM DBR2 DETERMINE IF TERMINATION MET
- LOC *O
- .DBRSL EQU *-.DBRS LENGTH OF OVERLAID CODE
- ERRMI .DBROL-.DBRSL OVERLAID CODE OVERFLOWED
- SLL SPACE 4,10
- ** SLL - SKIP COUNT MODIFIER FOR S, L FORMATS.
- *
- * THE FOLLOWING CODE GETS MOVED TO .DBRO IF S, L FORMAT ON A
- * LABELED TAPE.
- .DBSL BSS 0
- LOC .DBRO
- SLL SUBR ENTRY/EXIT
- LDD PA
- SHN 14
- ADD PB
- ZJN SLLX IF END OF SKIP
- SBN 1 DECREMENT SKIP COUNT
- STD PB
- SHN -14
- STD PA
- UJN SLLX RETURN
- LOC *O
- .DBSLL EQU *-.DBSL LENGTH OF S, L FORMAT LABELED ROUTINE
- ERRMI .DBROL-.DBSLL OVERLAID CODE OVERFLOWED
- BKS SPACE 4,10
- ** BKS - BACKSPACE TAPE.
- * WAIT BACKSPACE FUNCTION COMPLETE. FOR ISMT THE TIMEOUT IS
- * APPROXIMATELY 25 FEET OF TAPE.
- *
- * THE FOLLOWING CODE GETS MOVED TO *.DBRR* IF NOT USING READ
- * REVERSE. ISMT GCR, CTS, AND LI FORMAT DO NOT USE READ
- * REVERSE.
- *
- * EXIT (DS) = GENERAL STATUS.
- *
- * CALLS FCN, /PRESET/GPS, STW.
- .BKSM BSS 0
- LOC .DBRR
- BKS2 CON 0 ENTERED VIA *RJM* FROM //STW
- SOD T2
- NJN BKS1 IF NOT TIMEOUT
- LDC ERR RESET ERROR EXIT
- STM STWC
- UJN BKS1 ATTEMPT 1 MORE TIME
- BKS SUBR ENTRY/EXIT
- BKS0 LDN 2 WAIT NOT BUSY
- RJM STW
- BKSA EQU *-1
- * RJM /PRESET/GPS GET AND PROCESS GENERAL STAUS (CTS)
- PSN 0
- BKSB EQU *-1
- * MJN BKS0 IF COMMAND RETRY (CTS)
- LDC F0113 BACKSPACE
- RJM FCN
- LDN 27
- STD T2
- LDC BKS2 SET RETURN ON TIMEOUT FROM //STW
- STM STWC
- BKSC EQU *-2
- * UJN *+2 DO NOT CHANGE STWC (CTS)
- BKS1 LDN 2 WAIT NOT BUSY
- RJM STW
- BKSD EQU *-1
- * RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS (CTS)
- PSN
- BKSE EQU *-1
- * MJN BKS1 COMMAND RETRY (CTS)
- LDC ERR RESET ERROR EXIT
- STM STWC
- BKSF EQU *-2
- * UJN *+2 DO NOT STORE INTO STWC (CTS)
- UJN BKSX RETURN
- LOC *O
- .BKSML EQU *-.BKSM
- ERRMI .DBRRL-.BKSML OVERLAID CODE OVERFLOW
- SLI SPACE 4,15
- ** SLI - SKIP LI FORMAT BLOCK.
- * NOTE THAT THE MAXIMUM BLOCK SIZE IS DATA (2400*20) PLUS
- * PREFIX (5) PLUS PAD (1). THIS ROUTINE OVERLAYS *SLB*
- * FOR LI FORMAT.
- *
- * ENTRY AT *SLI* FROM *MRD* OR *RCT* (FOR CTS) WHEN *SLBY*
- * BYTES HAVE BEEN READ.
- * (IDFE) = 0.
- *
- * EXIT (IDFE) = CHUNK COUNT READ.
- * TO *SLB2* IF BLOCK TOO LONG.
- * TO *SLB3* IF END OF BLOCK.
- .SLI BSS 0
- LOC SLB
- SLI LDN 7
- IAM BUFB+5,CH
- SLI1 AOM IDFE
- LMN 20
- ZJN SLB2 IF BLOCK TOO LONG
- LDC SLBY
- IAM BUFB+5,CH
- ZJN SLI1 IF NOT END OF BLOCK
- UJN SLB3 END OF BLOCK
- LOC *O
- .SLIL EQU *-.SLI LENGTH OF CODE TO MOVE
- ERRMI SLBL-.SLIL IF CODE OVERFLOWS
- SLIA CHTB CHANNEL TABLE
- VLI SPACE 4,10
- ** VLI - VALIDATE LI FORMAT PREFIX.
- * THIS ROUTINE OVERLAYS *VDA* FOR LI FORMAT.
- *
- * ENTRY (BY) = BYTES READ IN LAST CHUNK.
- * (IDFE) = FULL CHUNKS READ.
- .VLI BSS 0
- LOC VDAX
- VLI SUBR ENTRY/EXIT
- LDD BY BYTES IN LAST CHUNK
- ADM IDFE
- ZJN VLIX IF NO DATA READ
- LDD EC
- ZJN VLI1 IF NO PREVIOUS ERRORS ENCOUNTERED
- LMN /MTX/STE
- NJN VDAX IF NOT STATUS ERROR CODE
- VLIA EQU *-1
- * UJN VLIX (CTS)
- LDM MTDS
- NJN VLIX IF ERRORS REPORTED FROM HARDWARE
- VLI1 LDM IDFE
- NJN VLI2 IF PREFIX WAS READ
- LDD BY
- SBN 5
- MJN VLI3 IF NO PREFIX
- VLI2 LDM BUFB+1 SAVE BLOCK LENGTH
- STM //BNEI
- LDM BUFB
- STM //BNEU
- LDM BUFB+2 SAVE BLOCK NUMBER
- STM //BNEI+1
- LMD BL
- SHN 14
- LMM BUFB+3
- STM //BNEI+2
- LMD BL+1
- ZJN VLI4 IF BLOCK NUMBER CORRECT
- VLI3 LDN /MTX/BNE
- STD EC
- VLI4 LJM VLIX RETURN
- LOC *O
- .VLIL EQU *-.VLI LENGTH OF CODE TO MOVE
- ERRMI VDAL-.VLIL IF CODE OVERFLOWS
- OVERLAY (MTS/ATS READ ERROR PROCESSOR.),(BUFB+5),P
- REM SPACE 4,20
- ** REM - READ ERROR PROCESSOR.
- * FIRST PART OF CODE USED AS A BUFFER.
- *
- * ENTRY (EP, 12) = OPPOSITE PARITY MODE.
- * (EP, 11) = LOAD POINT ERROR FLAG.
- * (EP, 10 - 6) = CLIPPING LEVEL.
- * (EP, 5 - 0) = REENTRY CODE.
- * (EP+1, 13 - 11) = CLIPPING LEVEL BEING TRIED.
- * (EP+1, 10 - 6) = RETRY COUNT.
- * (EP+1, 5 - 3) = NORMAL PARITY REREAD COUNT.
- * (EP+1, 2 - 0) = OPPOSITE PARITY REREAD COUNT.
- *
- * EXIT (A) = 0.
- *
- * CALLS BKS, CFC, EBW, *EMM*, EOT, LPR, MCH, PNE, POT,
- * PRS, PTM, RDA.
- *
- * MACROS CALL.
- * THE FOLLOWING CODE IS OVERLAID BY IN POINTERS AND
- * TEMPORARY STORAGE AFTER PRESET.
- ENTRY REM
- REM SUBR ENTRY
- LDM //LOV SAVE CALLERS EXIT ADDRESS
- STM REMH
- LDC REM1 SET ADDRESS TO ENTER AT
- STM //LOV
- UJN REMX RETURN
- REM1 LDD MA SAVE IN POINTER
- CWD CN
- CRM INPA,ON
- LDC CTAB MODIFY CHANNELS
- RJM MCH
- LDM ITMA SET BACKSPACE/FORESPACE FUNCTION
- LPC 100
- LMC F0113
- STM BKSA
- RJM PRS PRESET INSTRUCTIONS
- RJM EBW EVALUATE BID WINDOW
- RJM CFC RECONNECT UNIT
- LDM //STER RESTORE STATUS
- STD DS
- LPN 1
- NJN REM2 IF READY
- LDN /MTX/RDR SET NOT READY
- STD EC
- UJN REM2.1 NO LOAD POINT RECOVERY IF NOT READY
- REM2 RJM LPR CHECK FOR LOAD POINT RECOVERY
- * UJN REM2.1 (NOT ATS CONTROLLER)
- REMK EQU *-2
- MJN REM2.1 IF NO LOAD POINT ERROR OR ERROR RECOVERED
- CALL EMM ISSUE MESSAGE
- LDN 0
- STD EC
- AOD EI
- LJM RET2 RETRY ON *BFR* ERROR
- REM2.1 RJM PNE PROCESS NOISE ERRORS
- LDD EC
- LMN /MTX/BEI
- NJN REM3 IF NOT TAPE MARK
- LDD EP
- SHN 21-12
- MJN REM6 IF OPPOSITE PARITY
- RJM PTM PROCESS TAPE MARK
- UJN REM5 SET TO ACCEPT DATA AS WRITTEN
- REM3 LMN /MTX/STE&/MTX/BEI
- ZJN REM4 IF STATUS ERROR
- LJM REM9 CHECK FOR ERROR PROCESSING INHIBITED
- REM4 LDD DS
- SHN 21-3
- PJN REM6 IF NOT EOT
- SHN 22+3-13
- MJN REM6 IF OTHER ERRORS
- RJM EOT PROCESS END OF TAPE
- REM5 AOM REMI SET TO ACCEPT DATA AS WRITTEN
- LJM REM16 POSITION TAPE
- REM6 LDD DS
- SHN 21-13
- PJN REM9 IF NO ALERT
- LDM MTDS
- LPC 7077
- REMA EQU *-1
- * LPC 7777 (ATS UNIT)
- NJN REM8 IF NO CORRECTED ERROR
- LDM MTDS+3
- REMB EQU *-1
- * LDM MTDS+1 (ATS UNIT)
- REMC SHN -13
- * SHN -11 (ATS UNIT)
- LPN 3
- ZJN REM8 IF NOT CORRECTED ERROR
- LDN /MTX/OTF SET ON-THE-FLY ERROR
- REM7 STD EC
- AOM REMI SET ACCEPT DATA
- UJN REM9 CHECK FOR ERROR PROCESSING INHIBITED
- REM8 LDM MTDS
- LMN 16
- REME ZJN REM7 IF AGC FAILURE
- * PSN (MTS UNIT)
- LMN 10&16
- NJN REM9 IF NOT BLANK TAPE
- LDN /MTX/BTA
- STD EC
- REM9 LDD SP
- LPN 4
- ZJN REM12 IF ERROR PROCESSING NOT INHIBITED
- REM10 STM REMI SET ACCEPT DATA FLAG
- LDN 4 SET UNUSEABLE BID
- STM REMF
- LDD EC
- LMN /MTX/BTL
- NJN REM11 IF NOT *BLOCK TOO LARGE*
- RJM BKS INSURE POSITIONED AFTER BAD BLOCK
- RJM RDA SKIP BLOCK
- REM11 UJN REM15 SKIP MESSAGE ISSUE
- REM12 LDD FN
- LMN /MTX/SKP
- NJN REM13 IF NOT SKIP OPERATION
- LDM /READ/SKEI
- NJN REM10 IF SKIPEI OF POSMF
- REML EQU *-1
- * PSN (LI FORMAT)
- REM13 LDD EC
- ZJN REM16 IF NO ERROR
- LDD FM
- SHN -6
- LMN /MTX/TFF
- ADD EP
- NJN REM14 IF NOT F FORMAT AND/OR NOT FIRST ATTEMPT
- LDD HP
- LPN 1
- NJN REM14 IF 9 TRACK
- SOM POTH SET TO ATTEMPT OPPOSITE PARITY
- UJN REM15 CHECK FOR FATAL ERROR
- REM14 RJM CIS CHECK ISMT GCR SKIP REVERSE
- LDC -0 RESTORE BID
- REMF EQU *-1
- STM UBWB
- CALL EMM DIAGNOSE ERROR
- RJM CFC CONNECT IF NEEDED
- REM15 LDD EC
- SBN /MTX/BFAT
- MJN REM16 IF NOT FATAL ERROR
- SBN /MTX/MFAT-/MTX/BFAT
- PJN REM16 IF NOT FATAL ERROR
- LJM RET4 RETURN FATAL ERROR
- REM16 RJM POT POSITION TAPE
- REMG LDN 0
- NJN REM17 IF ERROR RETURN
- LJM *
- REMH EQU *-1
- REM17 LJM RET3 RETURN ERROR CODE
- REMI CON 0 ACCEPT DATA FLAG
- INPA EQU REMX IN POINTER FOR SUCCESSFUL READ
- POTO EQU INPA+5 COUNT OF BLOCKS SKIPPED
- POTP EQU POTO+1 (EP), (EP+1) ON ENTRY
- POTQ EQU POTP+2 SAVE AREA FOR DETAILED STATUS
- TBDW EQU POTQ+10 TEMPORARY BID WINDOW
- EOT SPACE 4,10
- ** EOT - END OF TAPE PROCESSOR.
- EOT1 LMN 2&1
- NJN EOTX IF NOT DISCARD BLOCK AT EOT
- EOT2 LDN /MTX/BEI RETURN END OF TAPE
- RAM REMG
- EOT SUBR ENTRY/EXIT
- LDD SP
- SHN -12
- ZJN EOTX IF READ TO TAPE MARK
- LMN 1
- NJN EOT1 IF NOT ACCEPT BLOCK AT EOT
- LDM /READ/STAP
- SHN 21-3
- PJN EOTX IF END OF TAPE ENCOUNTERED THIS BLOCK
- UJN EOT2 RETURN END OF TAPE STATUS
- PNE SPACE 4,20
- ** PNE - PROCESS NOISE ERRORS.
- * ISSUE MESSAGE IF NOISE SKIPPED, ERROR PROCESSING NOT
- * INHIBITED AND NOT A TAPE MARK.
- *
- * ENTRY (/READ/MRDP) .NE. 0 IF NOISE SKIPPED. (MTS)
- * (MTDS+5, 8-5) = LENGTH OF LARGEST NOISE BLOCK. (MTS)
- * (MTDS+6, 10) .NE. 0 IF NOISE SKIPPED. (ATS)
- * (//STER) = (DS) = GENERAL STATUS FROM READ.
- *
- * EXIT (EC) = 0 IF NO ERRORS ON BLOCK FOLLOWING NOISE.
- * MAXIMUM NOISE SIZE ALWAYS RETURNED FOR ATS.
- *
- * USES T0, T1.
- *
- * CALLS CFC, DTS, *EMM*.
- *
- * MACROS CALL.
- PNE7 LDM MTDS+6
- SHN 21-12
- PJN PNEX IF NOISE NOT SKIPPED
- LDD FM SET NOISE SIZE
- LPN 37
- LJM PNE2 ISSUE MESSAGE
- PNE8 RJM DTS GET DETAILED STATUS
- PNE SUBR ENTRY/EXIT
- LDD SP
- LPN 4
- NJN PNEX IF ERROR PROCESSING INHIBITED
- LDD DS CHECK FOR TAPE MARK
- LPN 20B
- NJN PNEX IF TAPE MARK, EXIT
- LDD EC
- ZJN PNE8 IF NOT POSSIBLE NOISE
- LDD BY SAVE BYTE COUNT OF NEXT BLOCK
- STM PNEB
- LDD HP
- LPN 20
- NJN PNE7 IF ATS-TYPE CONTROLLER
- LDM /READ/MRDP
- ZJN PNEX IF NOISE NOT SKIPPED
- LDM MTDS+5
- SHN -4
- LPN 37
- ADN 1
- STD T0 NUMBER OF FRAMES + 1
- LDD HP
- LPN 1
- NJN PNE1 IF 9 TRACK
- LDD T0 CONVERT FRAMES TO BYTES
- SHN -1 (FRAMES+1)/2
- UJN PNE2 SAVE BYTE COUNT OF LARGEST NOISE BLOCK
- PNE1 LDD T0
- SHN 1 2(FRAMES+1) = FR
- * APPROXIMATE 1/3 OF FR.
- SHN 2 4*FR
- ADD T0 5*FR
- SHN 2 20*FR
- ADD T0 21*FR
- SHN 14 (-6) (21*FR)/64
- STD T1
- SHN 6+2 4*21*FR (84*FR)
- ADD T0 85*FR
- ADD T1 (85*FR)+((21*FR)/64)
- SHN -8D ((85*FR)+((21*FR)/64))/256
- PNE2 STD BY BYTE COUNT OF LARGEST NOISE BLOCK
- LDD EC SAVE ERROR CODE
- STM PNED
- LDD DS SAVE STATUS
- STM PNEC
- LDN /MTX/NBE SET NOISE ERROR CODE
- STD EC
- PNEA LDC 400
- * UJN PNE3 (ATS UNIT)
- STM //STER
- PNE3 CALL EMM ISSUE MESSAGE
- RJM CFC CONNECT IF NEEDED
- LDC * RESET BYTE COUNT
- PNEB EQU *-1
- STD BY
- LDC * RESET STATUS
- PNEC EQU *-1
- STM //STER
- STD DS
- LDC * CHECK IF OTHER ERRORS
- PNED EQU *-1
- STD EC
- LMN /MTX/STE
- NJN PNE6 IF ERRORS ON FOLLOWING BLOCK
- LDM MTDS
- LPC 7077
- PNEE EQU *-1
- * LPC 7777 (ATS UNIT)
- NJN PNE5 IF OTHER ERRORS
- STD EC CLEAR ERROR CODE
- LDD DS CLEAR ALERT BIT
- LPC 3777
- STD DS
- STM //STER
- AOM REMI SET TO ACCEPT DATA
- PNE4 LDC POT11 SET TO ISSUE RECOVERED MESSAGE
- STM POTA
- AOD EI INCREMENT ITERATION COUNT
- PNE5 LJM PNEX RETURN
- PNE6 LMN /MTX/BEI&/MTX/STE
- NJN PNE5 IF NOT TAPE MARK
- LDC LDNI+/MTX/BEI SET TO RETURN TAPE MARK IF READ LABELS
- STM POTG
- UJN PNE4 SET TO ISSUE MESSAGE
- POT SPACE 4,15
- ** POT - POSITION TAPE.
- *
- * ENTRY TAPE IS POSITIONED AFTER THE BAD PRU.
- * (EP) AND (EP+1) CONTAIN CURRENT RECOVERY CONDITIONS.
- *
- * EXIT (CN - CN+4) = CORRECT *IN* POINTER.
- * TAPE IS POSITIONED BETWEEN LAST GOOD RECORD AND
- * BAD PRU. (EP) AND (EP+1) CONTAIN NEXT RECOVERY
- * CONDITIONS.
- *
- * CALLS BKS, CEC, CFC, CIF, CKR, *EMM*, FCN, HNG, ITM, POS,
- * RDA, *RLA*, RSP, SCL, UBW, WIP.
- *
- * MACROS CALL.
- POT SUBR ENTRY/EXIT
- LDD EP+1 SAVE PARAMETERS FOR POSSIBLE RECOVERY
- STM POTO+1
- LDD EP
- STM POTO
- LPN 77
- NJN POT1 IF NOT FIRST ENTRY
- LDC 200 SET INITIAL RETRY COUNT TO 2
- STD EP+1
- * CHECK FOR LEGAL REENTRY CODE. SET RECOVERY PROCESS ADDRESS.
- LDN 2
- POT1 SBN 2
- STD T1
- SBN POTCL
- PJN POT2 IF INCORRECT
- LDD T1
- LPN 1
- ZJN POT3 IF VALID
- POT2 RJM HNG HANG PP (NO RETURN)
- * SET UP ERROR RECOVERY PROCESS.
- POT3 LDM POTC,T1 SET PROCESSING ADDRESS
- STM POTB STORE IN JUMP
- LDM POTC+1,T1
- STD SC
- SHN 21-12
- PJN POT4 IF NOT OPPOSITE PARITY MODE
- LDC -2000 CLEAR OPPOSITE PARITY FLAG
- RAD EP
- POT4 LDM REMI
- ZJN POT5 IF NOT ACCEPT DATA
- LDM REMF UPDATE BID WINDOW
- STM UBWB
- RJM UBW
- LDN 0 CLEAR ERROR CODE
- STD EC
- LJM POT13 CLEAR ERROR PARAMETER
- * LJM POT11 (RECOVERED TAPE MARK OR NOISE)
- POTA EQU *-1
- * SET UP PRESET CONDITIONS AND JUMP TO ERROR PROCESSOR.
- POT5 LDN ZERL PRESET CONDITIONS
- CRD T4
- LDD EC
- STD T4
- LMN /MTX/BEI
- LJM * JUMP TO PROCESSOR
- POTB EQU *-1 ADDRESS SET UP FROM TABLE *POTC*
- ** LIST OF RETURN PROCESSORS INDEXED BY REENTRY CODE (EP 5-0).
- *
- *T, 12/ ADDRESS,1/R,1/P
- * R REVERSE DIRECTION MODE.
- * P OPPOSITE PARITY MODE.
- POTC BSS 0 LIST OF PROCESSORS INDEXED BY REENTRY CODE
- LOC 0
- CON POT17,0 EP 5-0 = 0 OR 2 CODE (0 = FIRST ENTRY)
- CON POT23,0 EP 5-0 = 4 CODE
- CON POT23,2000 EP 5-0 = 6 CODE
- CON POT29,0 EP 5-0 = 10 CODE
- CON POT34,0 EP 5-0 = 12 CODE
- LOC *O
- POTCL EQU *-POTC
- * COMMON CODE FOR ALL ERROR PROCESSORS TO DO THE REREAD OF
- * THE BAD PRU.
- POT6 CON 0 RETURN ADDRESS OF ERROR PROCESSOR
- STD T1 SAVE REENTRY CODE
- POTD AOD EI INCREMENT ERROR ITERATION
- * PSN (7 TRACK F FORMAT, FIRST RETRY)
- LDD CP CHECK CONTROL POINT ERROR FLAGS
- ADN STSW
- CRD CM
- LDD CM+1
- LPN 37
- SBN SPET
- MJN POT7 IF NO ERROR *SPET* OR ABOVE
- LDN /MTX/EFT SET ERROR FLAG TERMINATION
- LJM RET3 RETURN FATAL ERROR
- * FIND CURRENT REENTRY POINT. SET UP REENTRY CODE IN (EP 5-0).
- POT7 LDD EP SET REENTRY CODE FOR RETURN
- LPC 700
- LMD T1
- STD EP BITS 5 - 0 = REENTRY CODE, CLIPPING FLAGS
- LDM POTC-1,T1 LOAD DIRECTION/PARITY FLAGS FROM TABLE
- LPC 7000
- RAD EP
- LPC 7000
- RAM POTE
- LDD EP CHECK NEED TO TOGGLE PARITY FOR NEXT READ
- SHN 21-12
- PJN POT7.1 IF NOT OPPOSITE PARITY MODE
- LDN 5 TOGGLE PARITY MODE FOR NEXT READ
- RJM FCN FUNCTION TO TOGGLE ODD/EVEN PARITY MODE
- POT7.1 LDC 0
- POTE EQU *-1 DIRECTION/PARITY FLAGS (EP 11-10)
- NJN POT8 IF CANNOT REQUEUE
- LJM RET2 REQUEUE
- * CHECK OPERATION AND REREAD PRU.
- POT8 RJM RSP RESET PARAMETERS
- LDD FN
- LMN /MTX/RLA
- NJN POT9 IF NOT READ LABELS
- LDC /RLA/CLA4 SET TO RELOAD ERROR PROCESSOR
- STM /READ/MRD
- POT9 RJM CKR CHECK READY
- LJM POT10
- POTI EQU *-1
- * LJM RLB (LONG BLOCK)
- * LJM RLI (LI FORMAT)
- POT10 LDC * RESET CORRECT READ FUNCTION
- POTF EQU *-1
- STM //ITMA
- RJM ITM INITIATE TAPE MOTION
- LJM /READ/MRD+1 RETURN TO READ DRIVER
- * COMMON CODE IF NO ERROR OR ERROR HAS BEEN RECOVERED.
- POT11 LDM POTO+1 RESTORE EP AND EP+1
- STD EP+1
- LDM POTO
- STD EP
- SHN -3 CHECK IF DIFFERENT CLIP LEVEL
- LPN 70
- ZJN POT12 IF NORMAL CLIP
- * SET BLOCK ID TO INVALID WITH CLIP LEVEL IN BITS 5-3.
- LMN 4 SET BLOCK RECOVERED AT ALTERNATE CLIP
- STM BIDW,WP
- LDN 0
- POT12 STD EC
- LDM REMF RESTORE BID
- STM UBWB
- LDM POTF RESET CORRECT READ FUNCTION
- STM //ITMA
- CALL EMM ISSUE RECOVERED MESSAGE
- RJM CFC CONNECT IF NEEDED
- POT13 LDN 0 CLEAR ERROR PARAMETER
- STD EI
- STD EP
- STD EP+1
- LDD FN
- LMN /MTX/RLA
- ZJN POT14 IF READ LABELS
- RJM RSP RESET PARAMETERS FOR NEXT OPERATION
- LDD MA RESTORE IN POINTER
- CWM INPA,ON
- LDD MA
- CRD CN
- LJM POTX RETURN
- * RELOAD READ LABELS OVERLAY.
- POT14 LDN 0 SET ERROR CODE
- * LDN /MTX/BEI (RECOVERED TAPE MARK)
- POTG EQU *-1
- STD EC
- POT15 LDM CECB
- LPN 77
- ZJN POT16 IF AT MAGNET CONTROL POINT
- LDN 0 CHANGE TO MAGNET,S CP
- RJM CEC
- POT16 CALL RLA RELOAD READ LABELS OVERLAY (NO RETURN)
- * ENTRY POINT FOR PROCESSOR ONE (EP 5-0) = 2.
- POT17 LDD EC LOAD ERROR CODE
- NJN POT18 IF ERROR
- LJM POT11 IF NO ERROR ON LAST REREAD
- * NON - NOISE ERROR RECOVERY.
- POT18 LDD EP+1 SET RETRY COUNT TO 5
- LPC 3077
- LMC 500
- STD EP+1
- POT19 LDD EP+1 SET PARITY REREAD COUNTS
- SCN 77
- LMN 52 NORMAL REREAD=5, OPPOSITE REREAD=2
- STD EP+1
- SHN -11
- ZJN POT20 IF NOT ALTERNATE CLIPPING LEVEL
- LCN 30 REDUCE RETRY ATTEMPTS
- RAD EP+1
- POT20 LDD EP+1
- LPC 3000
- SHN -3
- LMD EP
- LPC 300
- ZJN POT21 IF CORRECT CLIPPING LEVEL
- LDD EP+1
- SHN -11
- RJM SCL
- POT21 LDN 1
- * LDN 0 (ATTEMPT OPPOSITE PARITY)
- POTH EQU *-1
- NJN POT22 IF NOT 7-TRACK F FORMAT, FIRST RETRY
- STM POTD SET TO NOT COUNT ITERATION
- LDC UJNI-NJNI PREVENT BID WINDOW UPDATE
- RAM /READ/MRDP
- LJM POT27 BACKSPACE
- * REREAD MANY TIMES.
- POT22 RJM CIF CHECK INTERNAL FORMAT
- RJM BKS BACKSPACE
- RJM POS POSITION TO LAST GOOD RECORD
- LDN 4 SET REENTRY CODE TO 4 (POT27)
- RJM POT6 JUMP TO COMMON CODE TO REREAD (NO RETURN)
- * ENTRY POINT FOR PROCESSOR TWO (EP 5-0) = 4.
- POT23 NJN POT24 IF NOT TAPE MARK
- LJM POT38 PROCESS RECOVERED ERROR
- POT24 LDD EC LOAD ERROR CODE
- NJN POT25 IF ERROR
- LJM POT38 PROCESS RECOVERED ERROR
- POT25 LDD EP+1
- LPN 70
- ZJN POT26 IF RETRIES EXHAUSTED
- LCN 10
- RAD EP+1
- UJN POT22 REREAD
- * CHECK FOR SEVEN OR NINE TRACK UNIT.
- POT26 LDD HP
- LPN 1
- NJN POT28 IF 9 TRACK TAPE
- LDD EP+1
- SHN -11
- NJN POT28 IF OPTIONAL CLIPPING BEING TRIED
- LDD EP+1
- LPN 7
- ZJN POT28 IF OPPOSITE PARITY ATTEMPTS MADE
- POT27 SOD EP+1
- RJM BKS BACKSPACE
- RJM POS POSITION TO LAST GOOD RECORD
- LDN 6 SET REENTRY CODE TO 6 (POT27)
- RJM POT6 JUMP TO COMMON CODE TO REREAD (NO RETURN)
- * CLEAN THE TAPE.
- * THIS IS NOT PERFORMED ON RETRIES AT OPTIONAL CLIP LEVELS.
- POT28 LDD EP+1
- SHN -11
- NJN POT31 IF OPTIONAL CLIPPING LEVEL
- RJM BKS BACK OVER BAD RECORD
- RJM POS POSITION TO LAST GOOD RECORD
- * REREAD THE ERROR BLOCK NON - STOP.
- AOM POTE SET NO REQUEUE
- LDN 10 SET REENTRY CODE TO 10 (POT41)
- RJM POT6 JUMP TO COMMON CODE TO REREAD (NO RETURN)
- * ENTRY POINT FOR PROCESSOR FOUR (EP 5-0) = 10.
- POT29 LDD EC
- NJN POT30 IF ERROR
- LJM POT11 ISSUE RECOVERED MESSAGE
- * RETRY THE ALGORITHM.
- POT30 LDC -100
- RAD EP+1
- LPC 700
- ZJN POT31 IF RETRIES EXHAUSTED
- LJM POT19 SET PARITY REREAD COUNTS
- * TRY THE OTHER CLIPPING LEVELS.
- POT31 RJM BKS BACKSPACE OVER BAD PRU
- LDD EP+1
- SBD TH
- PJN POT32 IF NOT FIRST TIME
- ADC 3000 SET FIRST CLIP LEVEL TO TRY
- POT32 STD EP+1
- SHN -11
- POTM ZJN POT33 IF ALL CLIPPING LEVELS EXHAUSTED
- * UJN POT33 (FSC ADAPTOR AND NINE TRACK UNIT)
- RJM SCL SELECT NEW CLIP LEVEL
- * RESET RETRY COUNT FOR FORWARD REREADS.
- LDD EP+1 RESET RETRY COUNT
- LPC 3077
- LMC 200
- STD EP+1
- LDN 2 SET UP REENTRY CODE TO 2 (POT22)
- RJM POT6 JUMP TO COMMON CODE (NO RETURN)
- POT33 LDD FN LEAVE POSITIONED BEFORE BLOCK IF LABEL
- LMN /MTX/RLA
- ZJN POT35 IF READ LABELS
- LDN 12 SET UP REENTRY CODE TO 12 (POT46)
- RJM POT6 JUMP TO COMMON CODE (NO RETURN)
- * ENTRY POINT FOR PROCESSOR FIVE (EP 5-0) = 12.
- POT34 LDN 4 SET UNUSABLE BID
- STM UBWB
- RJM UBW UPDATE BID WINDOW
- LDD EC
- LMN /MTX/BTL
- NJN POT35 IF NOT *BLOCK TOO LARGE*
- RJM BKS INSURE POSITIONED PAST BAD BLOCK
- RJM RDA SKIP BLOCK
- POT35 LDD FN
- LMN /MTX/RDF
- ZJN POT36 IF READ
- LJM RET4 RETURN FATAL ERROR
- * UNRECOVERABLE READ ERROR.
- POT36 LDM FETO
- SHN 21-10
- PJN POT37 IF ERROR PROCESSING NOT SET
- RJM RSP RESET PARAMETERS
- RJM WIP WRITE IN POINTER TO BUFFER
- LDD MD
- SHN 21-5
- PJN POT37 IF NOT 200 READ
- LDD CN+3 READ CONTROL WORD
- SHN 6
- ADD RA
- SHN 6
- ADD CN+4
- CRD CM
- LDC 4000 SET UNRECOVERED ERROR INDICATION
- RAD CM
- LDD CN+3 REWRITE CONTROL WORD
- SHN 6
- ADD RA
- SHN 6
- ADD CN+4
- CWD CM
- POT37 LDC RET4 SET TO GIVE FATAL USER ERROR
- STM /READ/WCBD
- POTR EQU *-1
- * STM /RLI/UIPC (LI FORMAT)
- LJM POT13 CLEAR ERROR PARAMETER
- * ERROR RECOVERED.
- POT38 LDM POTO
- SHN 21-12
- MJN POT39 IF OPPOSITE PARITY MODE
- LJM POT11 ISSUE RECOVERED MESSAGE
- POT39 LDD FM
- SHN -6
- LMN /MTX/TFF
- NJN POT40 IF NOT F FORMAT
- RJM BKS
- RJM POS POSITION TO LAST GOOD RECORD
- LDN 0 CLEAR ERROR PARAMETERS
- STD EI
- STD EP
- STD EP+1
- LDD MD TOGGLE MODE
- LMC 100
- STD MD
- LDD UP
- LMN 1
- STD UP
- LJM RET2 REQUEUE
- * TAPE RECOVERED IN OPPOSITE PARITY MODE.
- POT40 LDN /MTX/OPA TAPE WRITTEN IN OPPOSITE PARITY
- STD EC
- LDD FN
- LMN /MTX/RLA
- ZJN POT41 IF READ LABELS
- LDM REMF RESTORE BID
- STM UBWB
- CALL EMM
- AOD BL+1 INCREMENT BLOCK COUNT
- SHN -14
- RAD BL
- RJM CFC CONNECT IF NEEDED
- LJM RET4 RETURN FATAL ERROR
- POT41 LJM POT15 RELOAD READ LABELS
- PTM SPACE 4,10
- ** PTM - PROCESS TAPE MARK.
- *
- * EXIT IF NOT LABELED, EOF STATUS SET IN (RS) AND (MD).
- * (REMF) SET TO 1 IF TAPE MARK.
- PTM4 LDN /MTX/BEI RETURN POSSIBLE EOI
- RAM REMG
- PTM SUBR ENTRY/EXIT
- LDN 1 SET TAPE MARK INDICATION
- STM REMF
- LDD EP
- LPN 77
- ZJN PTM1 IF FIRST ENTRY
- LDC POT11 SET RECOVERED TAPE MARK
- STM POTA
- LDC LDNI+/MTX/BEI SET TO RETURN TAPE MARK IF READ LABELS
- STM POTG
- PTM1 LDD FN
- LMN /MTX/RLA
- ZJN PTMX IF READ LABELS
- LDD LT
- SHN 21-12
- MJN PTM4 IF LABELED
- LDD DS
- LPN 10
- NJN PTM4 IF EOT
- LDD FM
- SHN -6
- SBN /MTX/TFSI+1
- MJN PTM4 IF INTERNAL MODES
- SBN /MTX/TFLI-/MTX/TFSI-1
- ZJP PTM4 IF LI FORMAT
- LDD MD SET EOF STATUS
- SCN 14
- LMN 10
- STD MD
- LDN 2
- STD TB
- LDD FM
- SHN -6
- LMN /MTX/TFS
- ZJN PTM2 IF S FORMAT
- LMN /MTX/TFL&/MTX/TFS
- NJN PTM3 IF NOT L FORMAT
- PTM2 LDM //CIOE
- LPC 770
- LMC 260
- NJN PTM3 IF NOT 260 READ CODE
- LDN 26 SET TO RETURN 271 STATUS
- STD TB
- PTM3 LJM PTMX RETURN
- TITLE SUBROUTINES.
- ABC SPACE 4,10
- ** ABC - ADJUST BYTE COUNT FOR 9 TRACK TAPES.
- *
- * ENTRY (BY) = BYTE COUNT.
- * (DS) = DEVICE STATUS.
- *
- * (ABCA) = 0 IF NO BYTE ADJUSTMENT.
- ABC SUBR ENTRY/EXIT
- LDD HP
- LPN 1
- ZJN ABCX IF 7 TRACK
- * CORRECT 9 TRACK BYTE COUNT.
- ABCA LDD DS
- * UJN ABC1 (ATS UNIT)
- LPN 40
- ZJN ABC1 IF NO ODD COUNT
- LDD BY
- LPN 2
- ZJN ABC1 IF NOT MODULO 4, 2 OR 3
- SOD BY
- * ADJUST BUFFER LENGTH FOR I FORMAT.
- ABC1 LDD FM
- SHN -6
- * LMN /MTX/TFI
- ERRNZ /MTX/TFI
- NJN ABCX IF NOT I FORMAT
- LDD BY
- ZJN ABCX IF NO DATA READ
- SBN 1
- ZJN ABCX IF POSSIBLE TAPE MARK READ
- STD T2 CALCULATE WORD COUNT
- SHN 1 13*BYTES
- ADD T2
- SHN 2
- ADD T2
- SHN 14 (-6) (13*BYTES)/64
- STD T0
- SHN 6+2 4*13*BYTES (52*BYTES)
- SBD T2 51*BYTES
- ADD T0 (51*BYTES)+((13*BYTES)/64)
- SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
- LPN 1
- STM ABCB SET EXIT CONDITION
- LJM ABCX RETURN
- ABCB CON 0
- BKS SPACE 4,10
- ** BKS - BACKSPACE TAPE.
- *
- * EXIT (A) = NEGATIVE IF BOT.
- *
- * CALLS CKR, FCN, RTR, STW, WFC.
- BKS SUBR ENTRY/EXIT
- LDN 2 WAIT NOT BUSY
- RJM STW
- RJM CKR CHECK READY
- LDC F0113 BACKSPACE
- BKSA EQU *-1
- RJM FCN
- RJM WFC WAIT FUNCTION COMPLETE
- LDD DS RETURN LOAD POINT STATUS
- SHN 21-2
- UJN BKSX RETURN
- BTW SPACE 4,10
- ** BTW - BUILD TEMPORARY WINDOW.
- *
- * ENTRY (A) = NUMBER OF BLOCKS TO MOVE BACK.
- *
- * EXIT (TBDW) = TEMPORARY BID WINDOW IF FIRST BKSP NOT AT
- * LOAD POINT.
- *
- * USES T8, T9.
- *
- * CALLS BKS, SOB.
- BTW SUBR ENTRY/EXIT
- STD T8 SAVE ENTRY CONDITION
- LDC F0113 INSURE BACKSPACE FUNCTION SET
- STM BKSA
- LDN 4 SETUP FIRST BID BYTE
- STM TBDW
- BTW1 RJM BKS BACKSPACE
- MJN BTW2 IF BOT
- SOD T8
- NJN BTW1 LOOP FOR NEXT BLOCK
- BTW2 LDM POSB SET BID POINTER
- STD T9
- LDM POSA CHECK FOR LOAD POINT ON FIRST BKSP
- SBD T8
- ZJN BTWX IF FIRST BKSP AT LOAD POINT
- LDN 0 CLEAR PRU COUNTER
- STD T8
- BTW3 RJM SOB SET UP AND READ ONE BLOCK
- LDM UBWB
- STM TBDW+1,T8
- AOD T9 INCREMENT POINTER
- LPN 7 RESET POINTER FOR POSSIBLE WRAP AROUND
- STD T9
- AOD T8
- LMM POSA
- NJN BTW3 LOOP FOR NEXT BLOCK
- LJM BTWX RETURN
- CBW SPACE 4,15
- ** CBW - COMPARE BID WINDOWS.
- *
- * COMPARE THE PERMANENT WINDOW (BIDW) TO THE TEMPORARY
- * WINDOW (TBDW).
- *
- * ENTRY (T1) = FIRST BYTE IN BIDW TO COMPARE.
- * (T2) = FIRST BYTE IN TBDW TO COMPARE.
- *
- * EXIT (A) = 0 IF MATCH OR NOT BLOCK ID EQUIPMENT.
- * (A, 13-6) = NUMBER OF INVALID BLOCK ID-S.
- * (A, 5-0) = NUMBER OF VALID BLOCK ID MISMATCHES.
- *
- * USES T1 - T4.
- CBW SUBR ENTRY/EXIT
- LDD CF CHECK IF BLOCK ID EQUIPMENT
- LPC 300
- LMC 300
- ZJN CBWX IF NO BLOCK ID
- LDN 0
- STD T4
- STD T3
- LDD T1 SAVE (T1)
- STM CBWA
- CBW1 LDM BIDW,T1 LOAD HISTORY BLOCK ID
- LMN 4
- ZJN CBW3 IF INVALID BID IN HISTORY
- LDM TBDW,T2 LOAD BID FROM TEMP WINDOW
- LMN 4 INVALID CHECK
- NJN CBW2 IF NOT INVALID BID IN TEMP WINDOW
- AOD T3 CHECK NEXT BID
- UJN CBW3 CONTINUE
- CBW2 LDM BIDW,T1 LOAD BID FROM HISTORY
- LMM TBDW,T2
- ZJN CBW3 IF NO ERROR
- AOD T4
- CBW3 LDD WP
- SBM CBWA
- ZJN CBW4 IF ONLY ONE BLOCK ID TO COMPARE
- AOD T2
- AOD T1 INCREMENT POINTER
- LPN 7 RESET POINTER FOR POSSIBLE WRAP AROUND
- STD T1
- LMD WP
- NJN CBW1 IF NOT END OF COMPARE
- CBW4 LDD T3 FORM BID COMPARE RESULTS EXIT
- SHN 6
- ADD T4
- LJM CBWX RETURN
- CBWA CON 0 STORAGE FOR (T1)
- CFC SPACE 4,10
- ** CFC - CHECK IF CONNECT NEEDED.
- *
- * ENTRY (RELA) = 0 IF CONNECT NEDDED.
- *
- * CALLS CUI.
- CFC SUBR ENTRY/EXIT
- LDD DS
- SHN 21-11
- PJN CFC1 IF UNIT CONNECTED
- LDN 0
- STM //RELA
- CFC1 LDM //RELA
- NJN CFCX IF CONNECTED
- STD T1 SAVE DETAILED STATUS
- CFC2 LDM MTDS,T1
- STM POTQ,T1
- AOD T1
- LMN 10
- NJN CFC2 IF NOT END OF DETAILED STATUS
- RJM CUI CONNECT UNIT
- LDN 0 RESTORE DETAILED STATUS
- STD T1
- CFC3 LDM POTQ,T1
- STM MTDS,T1
- AOD T1
- LMN 10
- NJN CFC3 IF NOT END OF DETAILED STATUS
- UJN CFCX RETURN
- CIF SPACE 4,10
- ** CIF - CHECK INTERNAL FORMAT (I AND LI).
- *
- * CALLS BKS, RDA.
- CIF2 RJM BKS BACKSPACE
- CIF SUBR ENTRY/EXIT
- LDD EC
- LMN /MTX/BNE
- NJN CIFX IF NOT BLOCK NUMBER ERROR
- LDM //BNEI
- CIFA EQU *-1
- * LDM /RLI/VDAE (LI FORMAT)
- LMD BY
- CIFB EQU *-1
- * PSN (LI FORMAT)
- NJN CIFX IF BLOCK LENGTH ERROR
- LDD EI
- SCN 7
- NJN CIF1 IF 10 ATTEMPTS
- LDM //BNEI+2
- SBD BL+1
- ZJN CIFX IF CORRECT BLOCK
- PJN CIF2 IF MISSED A BLOCK
- RJM RDA SKIP OVER BLOCK
- UJN CIFX RETURN
- CIF1 LDM //BNEI+1 SET BLOCK NUMBER TO CURRENT BLOCK NUMBER
- STD BL
- LDM //BNEI+2
- STD BL+1
- LJM RET4 RETURN FATAL ERROR
- CIS SPACE 4,10
- ** CIS - CHECK IF ISMT GCR SKIP REVERSE.
- *
- * CALLS BKS.
- CIS SUBR ENTRY/EXIT
- LDD FN
- LMN /MTX/SKP
- NJN CISX IF NOT SKIP FUNCTION
- LDM /READ/ISKR
- ZJN CISX IF NOT ISMT GCR SKIP REVERSE
- RJM BKS POSITION TAPE CORRECTLY FOR RECOVERY
- LDN F0013 SET FORESPACE FUNCTION
- STM BKSA
- LDN 0 FORCE REQUEUE
- STM POTE+1
- UJN CISX RETURN
- CKR SPACE 4,10
- ** CKR - CHECK READY.
- * IF UNIT NOT READY, A TIME OUT WILL BE PERFORMED WAITING FOR
- * UNIT TO BECOME READY BEFORE GIVING A FATAL ERROR. THIS
- * SHOULD ALLOW RECOVERY FROM MOMENTARY NOT READY CONDITONS.
- *
- * CALLS CFC, FCN.
- CKR SUBR ENTRY/EXIT
- LCN 0 PRESET TIME OUT
- STM CKRA
- CKR1 LDN F0012 GET STATUS
- RJM FCN
- ACN CH
- IAN CH+40B
- DCN CH+40
- SHN 21-0
- MJN CKRX RETURN IF READY
- SHN 22-11
- PJN CKR2 IF UNIT CONNECTED
- RJM CFC CONNECT UNIT
- CKR2 SOM CKRA
- NJN CKR1 IF NO TIME OUT
- LDN /MTX/RDR READY DROP
- LJM RET3 RETURN ERROR CODE
- CKRA CON 7777 TIME OUT COUNTER
- IMU SPACE 4,10
- ** IMU - ISSUE MESSAGE TO ERROR LOG AND UNLOAD TAPE.
- *
- * ENTRY (A) = *TCF* OR *BFR*.
- *
- * EXIT TO *RET4*.
- *
- * CALLS *EMM*, FCN, WFC.
- IMU BSS 0 ENTRY
- STD EC
- CALL EMM ISSUE MESSAGE TO ERROR LOG
- AOD EI
- LDC F0110
- RJM FCN UNLOAD THE TAPE
- RJM WFC WAIT END OF OPERATION
- LJM RET4 RETURN ERROR CODE
- POS SPACE 4,15
- ** POS - POSITION TAPE.
- *
- * ENTRY (POSA) = NUMBER OF BLOCKS TO BACKUP.
- * TAPE POSITIONED BEFORE BAD BLOCK.
- *
- * EXIT TAPE POSITION VERIFIED.
- * SINGLE BLOCK MISPOSITION MESSAGES ISSUED AS NEEDED.
- *
- * USES T1, T2, T9.
- *
- * CALLS BKS, BTW, CBW, CFC, *EMM*, SOB.
- *
- * MACROS CALL.
- POS5 STD EC
- LDM REMF RESTORE BID
- STM UBWB
- CALL EMM ISSUE ERROR MESSAGE
- RJM CFC CONNECT IF NEEDED
- POS SUBR ENTRY/EXIT
- LDD WP
- SBM POSA
- ADN 1
- PJN POS1 IF NO WRAP AROUND
- ADN 10
- POS1 STM POSB STORE STARTING POINTER
- LDC 0
- POSA EQU *-1
- RJM BTW BUILD TEMPORARY WINDOW
- LDN 1
- STD T2
- LDC *
- POSB EQU *-1
- STD T1
- RJM CBW COMPARE WINDOWS
- ZJN POSX IF GOOD COMPARE
- SHN -6 CHECK FOR INVALIDS IN RECOVERY WINDOW
- NJN POSX IF INVALIDS
- LDN 2 CHECK FOR TOO FAR BACKWARD
- STD T2
- LDM POSB
- STD T1
- RJM CBW
- LPN 77 CHECK FOR ONLY MISCOMPARES
- NJN POS3 IF NOT TOO FAR BACKWARD
- LDD WP
- STD T9
- RJM SOB SET UP AND READ ONE BLOCK
- LDM UBWB
- LMM BIDW,WP
- NJN POS2 IF POSITION LOST
- LDN /MTX/SMB ISSUE SINGLE BLOCK MISPOSITION MESSAGE
- LJM POS5 ISSUE ERROR MESSAGE
- POS2 LDN /MTX/PLO ISSUE POSITION LOST MESSAGE
- STD EC
- LDM REMF RESTORE ORIGINAL BID FOR MESSAGE
- STM UBWB
- CALL EMM ISSUE MESSAGE
- RJM CFC CONNECT IF NEEDED
- LJM RET4 RETURN FATAL ERROR
- POS3 LDN 0 CHECK FOR TOO FAR FORWARD
- STD T2
- LDM POSB
- STD T1
- RJM CBW
- LPN 77 CHECK FOR ONLY MISCOMPARES
- POS4 NJN POS2 IF POSITION LOST
- RJM BKS CORRECT FOR TOO FAR FORWARD AND RETRY
- LDM POSA
- RJM BTW
- LDN 1
- STD T2
- LDM POSB
- STD T1
- RJM CBW
- LPN 77 CHECK FOR ONLY MISCOMPARES
- NJN POS4 IF POSITION LOST
- LDN /MTX/SMF ISSUE SINGLE BLOCK MISPOSITION MESSAGE
- LJM POS5 ISSUE ERROR MESSAGE
- RCI SPACE 4,10
- ** RCI - READ *CIO* INFORMATION FROM *MAGNET,S FL.
- *
- * EXIT (T6 - T7) = FET ADDRESS.
- * (T1 - T5) = UCIC WORD.
- *
- * USES CM - CM+4.
- *
- * CALLS HNG.
- *
- * MACROS DELAY, MONITOR, PAUSE.
- RCI3 LDD MA READ UDT WORDS
- CRD T6-3
- ADN 2
- CRD T1
- RCI SUBR ENTRY/EXIT
- RCI1 LDM UADA SET FWA OF DESIRED UDT WORDS
- ADN /MTX/UCIA
- STD CM+4
- LDC 300 REQUEST THREE WORDS
- STD CM+3
- LDN 0 REQUEST READ FROM *MAGNET*
- STD CM+1
- LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
- STD CM+2
- MONITOR TDAM
- LDD CM+1
- ZJN RCI3 IF DONE
- SBN 2
- PJN RCI2 IF MOVE NOT IN PROGRESS
- PAUSE NE
- DELAY
- UJN RCI1 REISSUE REQUEST
- RCI2 RJM HNG HANG PP
- RDA SPACE 4,10
- ** RDA - READ DATA.
- *
- * EXIT (A) = (T4) = 0, NO ERROR.
- * (BY) = BYTE COUNT OF BLOCK.
- * (UBWB) SET TO 1 IF TAPE MARK.
- *
- * CALLS ABC, CKR, FCN, ITM, MCC, WEO.
- RDA SUBR ENTRY/EXIT
- RJM CKR CHECK FOR READY
- LDN F0040 READ FORWARD
- RJM FCN PROCESS FUNCTION
- ACN CH
- RDA1 LCN 0 SET DATA PARAMETERS
- STD T3
- LDN 20
- STD T2
- LDC 1010 SET BUFFER SIZE
- * INPUT DATA.
- STD BY INPUT FIRST 1010 BYTES (104D CM WORDS)
- IAM EBUF,CH
- ZJN RDA2 IF NOT END OF DATA
- LMC -0
- RAD BY
- LJM RDA6 ADJUST BYTE COUNT
- RDA2 LDN 50
- IAM XBUF,CH
- NJN RDA3 IF END OF DATA
- SOD T3
- NJN RDA2 IF NOT END OF INPUT
- LDN 50
- IAM XBUF,CH
- NJN RDA3 IF END OF DATA
- SOD T2
- NJN RDA2 IF NOT TIME OUT
- LDD EC PRESERVE ERROR CODE
- RJM MCC
- LCN 0
- STD BY
- LJM RDA7 WAIT FOR END OF OPERATION
- RDA3 LMC -0
- ADN 50
- RAD BY
- RDA4 AOD T3
- SHN -14
- NJN RDA5 IF ROLLOVER
- LDN 50
- RAD BY
- UJN RDA4 LOOP
- RDA5 AOD T2
- LMN 21
- ZJN RDA6 IF ALL BYTES COUNTED
- LCN 0 SET BYTE COUNT TO 7777
- STD BY
- RDA6 RJM ABC ADJUST BYTE COUNT
- RDA7 RJM WEO WAIT END OF OPERATION
- SCN 74
- ZJN RDA9 IF NO ERRORS
- SHN 21-10
- RDAA PJN RDA8 IF NOT NOISE
- * UJN RDA8 (ATS UNIT)
- LDN 42 ISSUE REPEAT READ
- RJM FCN
- ACN CH
- LJM RDA1 REINITIATE READ
- RDA8 LDM MTDS
- LPC 7077
- RDAB EQU *-1
- * LPC 7777
- ZJN RDA9 IF ONLY WARNING STATUS
- LCN 0
- RDA9 STM RDAC
- LDC * SET EXIT CONDITION
- RDAC EQU *-1
- STD T4
- LDM ABCB
- ZJN RDA10 IF NO BYTE ADJUSTMENT
- SOD BY
- RDA10 LDD DS
- LPN 20
- LMN 20
- NJN RDA11 IF NOT TAPE MARK
- STD BY
- LDN 1 SET TAPE MARK INDICATION
- STM UBWB
- LDD HP
- LPN 1
- NJN RDA11 IF 9 TRACK
- LDD MD
- SHN 21-6
- MJN RDA11 IF 7 TRACK CODED
- LDN 0 CLEAR ERROR INDICATION
- STD T4
- RDA11 LDD T4
- LJM RDAX RETURN
- RSP SPACE 4,10
- ** RSP - RESET PROCESSOR FOR NEXT OPERATION.
- *
- * EXIT (CN - CN+4) = IN POINTER PRIOR TO READ.
- *
- * CALLS /CPP/CAL, *CPP*, /CPP/INM, RCI, /CPP/SFP.
- *
- * MACROS CALL.
- RSP SUBR ENTRY/EXIT
- LDM /READ/WOCN RESTORE WORD COUNT
- STD WC
- CALL CPP RELOAD ADDRESS RELOCATOR
- LDD FN
- LMN /MTX/RDF
- NJN RSPX IF NOT READ DATA
- RJM RCI READ UDT
- RJM /CPP/CAL CALCULATE PARAMETERS
- LDN 2 READ IN
- RJM /CPP/SFP
- UJN RSPX RETURN
- SCL SPACE 4,10
- ** SCL - SET CLIPPING LEVEL.
- *
- * ENTRY (A) = CLIPPING LEVEL DESIRED.
- *
- * CALLS FCN.
- SCL SUBR ENTRY/EXIT
- SHN 6
- STD T1
- LDD EP
- LPC 7077
- LMD T1
- STD EP
- LPC 300
- ZJN SCLX RETURN IF NORMAL CLIPPING LEVEL
- ADN 6
- RJM FCN
- UJN SCLX RETURN
- SOB SPACE 4,10
- ** SOB - SET UP AND READ ONE BLOCK.
- *
- * ENTRY (T9) = POINTER TO BID WINDOW.
- *
- * EXIT (UBWB) = BID OF READ CORRECTED FOR CLIPPING LEVEL AND
- * READ ERRORS.
- *
- * USES T0.
- *
- * CALLS RDA, FCN.
- SOB2 RJM RDA READ A BLOCK
- ZJN SOBX IF GOOD READ
- SOB3 LDN 4 SET UNUSABLE BID
- STM UBWB
- SOB SUBR ENTRY/EXIT
- LDD MD CHECK IF PARITY CHANGE NEEDED
- SHN -5
- LMM BIDW,T9
- LPN 2
- ZJN SOB1 IF NO CHANGE NEEDED
- LDD HP
- LPN 1
- NJN SOB1 IF 9 TRACK
- LDN 5 TOGGLE TO OPPOSITE PARITY
- RJM FCN
- SOB1 LDM BIDW,T9 CHECK IF CHANGE IN CLIPPING LEVEL NEEDED
- SHN 21-2
- PJN SOB2 IF NO CHANGE NEEDED
- LPN 7 SET CLIPPING LEVEL
- SHN 6
- ADN 6
- RJM FCN
- RJM RDA READ A BLOCK
- NJN SOB3 IF ERROR
- LDM BIDW,T9 ADD CLIPPING LEVEL TO LAST BID
- LPN 74
- STD T0
- LDM UBWB
- SCN 74
- LMD T0
- STM UBWB
- LJM SOBX RETURN
- WFC SPACE 4,10
- ** WFC - WAIT BACKSPACE FUNCTION COMPLETE.
- * TIMES OUT APPROXIMATELY 25 FEET OF TAPE.
- *
- * EXIT (DS) = UNIT STATUS.
- *
- * USES T2.
- *
- * CALLS //STW.
- WFC2 CON 0 ENTERED VIA *RJM* FROM //STW
- SOD T2
- NJN WFC1 IF NOT TIMEOUT
- LDC //ERR RESET ERROR EXIT
- STM //STWC
- UJN WFC1 ATTEMPT 1 MORE WAIT
- WFC SUBR ENTRY/EXIT
- LDN 77 SET DELAY TO MAXIMUM
- STD T2
- LDC WFC2 SET RETURN ON TIMEOUT FROM //STW
- STM //STWC
- WFC1 LDN 2 WAIT NOT BUSY
- RJM //STW
- LDC //ERR RESET ERROR EXIT
- STM //STWC
- UJN WFCX RETURN
- WIP SPACE 4,15
- ** WIP - WRITE IN POINTER PRIOR TO READ TO USER BUFFER.
- *
- * ENTRY (INPA - INPA+4) = POINTER TO NEXT BUFFER LOCATION.
- * (CN - CN+4) = IN POINTER PRIOR TO READ.
- *
- * EXIT IN POINTER WRITTEN TO USER CIO BUFFER.
- * PARITY ERROR BIT SET IN FET+0.
- *
- * USES CM - CM+4.
- *
- * CALLS RCI.
- WIP SUBR ENTRY/EXIT
- LDM INPA+3 CALCULATE ABSOLUTE BUFFER ADDRESS
- SHN 6
- ADD RA
- SHN 6
- ADM INPA+4
- CWD CN WRITE OLD IN POINTER TO BUFFER
- RJM RCI READ UDT INFORMATION
- LDD T6 READ FET+0
- SHN 6
- ADD RA
- SHN 6
- ADD T7
- CRD CM
- LDD CM+4 SET PARITY ERROR BIT
- LPC 777
- LMC 4000
- STD CM+4
- LDD CM+3
- SCN 3
- STD CM+3
- LDD T6 REWRITE FET+0
- SHN 6
- ADD RA
- SHN 6
- ADD T7
- CWD CM
- LJM WIPX RETURN
- SPACE 4,10
- ADDR TSAD SMER
- SPACE 4,10
- ** BUFFERS FOR READING DURING READ RECOVERY.
- EBUF BSS 0
- XBUF EQU EBUF+1012
- ERRNG 7777-XBUF-50 WRAPPED AROUND
- ERROVL SPACE 4,10
- ERROVL
- CTAB SPACE 4,10
- SPACE 4,10
- ** NOTE - CODE AFTER THIS POINT WILL BE DESTROYED WHEN CALLING
- * THE ERROR PROCESSOR *EMM* OR WHEN THE TAPE IS POSITIONED.
- * ALL CALLS TO THIS CODE MUST BE DONE PRIOR TO THAT POINT.
- SPACE 4,10
- ** CTAB - CHANNEL TABLE.
- CTAB CHTB
- EBW SPACE 4,20
- ** EBW - EVALUATE BID WINDOW.
- *
- * ENTRY (BIDW) = BID WINDOW.
- *
- * EXIT (POSA) = NUMBER OF BLOCKS TO BACKSPACE.
- * NUMBER OF BLOCKS TO BACKSPACE = 2 IF
- * 1) NO BID PRESENT.
- * 2) INVALID HISTORY BLOCK ID ENCOUNTERED.
- * 3) 9 TRACK *NRZI* *CRC* CORRECTABLE ERROR. THIS IS
- * BECAUSE OF HARDWARE RESTRICTIONS ON THE NEXT
- * READ.
- * 4) .GT. 5 BLOCK ID-S ENCOUNTERED.
- * 5) END OF BLOCK ID WINDOW ENCOUNTERED.
- * (REMF) = BID FROM LAST READ.
- * (T2) = NUMBER OF DIFFERENT BLOCK ID-S.
- * (T4) = NUMBER OF SAME BLOCK ID-S.
- *
- * USES T1 - T4.
- EBW SUBR ENTRY/EXIT
- LDD CF CHECK IF BID PRESENT
- LPC 300
- LMC 300
- NJN EBW2 IF BID PRESENT
- EBW1 LJM EBW11 FORCE BACKSPACE OF TWO BLOCKS
- EBW2 LDM UBWB SAVE CURRENT BID
- STM REMF
- EBW3 LDD HP CHECK IF 9 TRACK NRZI CRC CORRECTABLE ERROR
- LPN 1
- ZJN EBW4 IF NOT 9 TRACK
- LDM DNCV
- LPN 70
- LMN /MTX/D08*10
- NJN EBW4 IF NOT 800 (NRZI)
- LDM MTDS+3
- EBWA EQU *-1
- * LDM MTDS+6 (ATS CONTROLLER)
- EBWB SHN 21-12
- * SHN 21-11 (ATS CONTROLLER)
- MJN EBW1 IF CRC CORRECTABLE ERROR
- EBW4 LDD WP SET UP DIRECTS
- STD T1
- LDN 0
- STD T2
- STD T4
- LCN 0
- STD T3
- EBW5 LDD T2 CHECK FOR MAX COUNT OF 5
- ADD T4
- SBN 5
- PJN EBW1 IF MAX COUNT REACHED, FORCE SET 2
- LDM BIDW,T1
- LMN 4
- ZJN EBW12 IF INVALID, STOP SCAN
- LPN 1
- ZJN EBW7 IF NOT TAPE MARK
- AOD T2 FORCE BACKSPACE OVER TAPE MARK
- EBW6 STM POSA SET BACKSPACE COUNT
- LJM EBWX RETURN
- EBW7 LDM BIDW,T1
- SBD T3
- NJN EBW8 IF NOT SAME
- AOD T4 INCREMENT SAME BID COUNT
- UJN EBW9 CONTINUE BID SCAN
- EBW8 AOD T2 INCREMENT DIFFERENT COUNT
- SBN 2
- MJN EBW9 IF NOT TWO DIFFERENT BID-S
- LDD T2
- ADD T4
- UJN EBW6 NUMBER OF BACKSPACES TO DO
- EBW9 LDM BIDW,T1
- STD T3 SAVE LAST BID
- SOD T1 REDUCE POINTER
- PJN EBW10 IF NO OVERFLOW
- LPN 7
- STD T1
- EBW10 LMD WP CHECK FOR END OF WINDOW
- NJN EBW13 IF NOT END OF BID WINDOW
- EBW11 LDN 2 FORCE BACKSPACE OF TWO BLOCKS
- UJN EBW6 EXIT
- EBW12 LDD T2
- ADD T4
- ZJN EBW11 IF END OF WINDOW
- UJN EBW6 SET BACKSPACE COUNT AND EXIT
- EBW13 LJM EBW5 CHECK NEXT BID
- LPR SPACE 4,20
- ** LPR - LOAD POINT RECOVERY.
- *
- * ENTRY DETAIL STATUS BUFFERS SET UP.
- *
- * EXIT (A) .LT. 0 IF NOT *TCF* OR *BFR* ERROR OR
- * IF *TCF* OR *BFR* ERROR WAS RECOVERED.
- * (A) = 0 IF RETRY ON *BFR* ERROR.
- *
- * ERROR TO *IMU* IF LOAD POINT PROBLEM.
- * (A) = *TCF* OR *BFR*.
- *
- * USES T1.
- *
- * CALLS *EMM*, FCN, WFC.
- *
- * MACROS CALL.
- LPR SUBR ENTRY/EXIT
- LDD EC
- NJN LPR0 IF ERROR
- RJM DTS GET DETAILED STATUS
- * SAVE CURRENT EQUIPMENT STATUS.
- LPR0 LDD DS SAVE GENERAL STATUS
- STM LPRA
- LDM UBWB SAVE BLOCK ID
- STM LPRB
- LDN 0 SAVE DETAIL STATUS
- STD T1
- LPR1 LDM MTDS,T1 MOVE ALL DETAIL STATUS WORDS
- STM LPRC,T1
- AOD T1 INCREMENT STATUS WORD COUNTER
- SBN 16
- NJN LPR1 IF NOT ALL STATUS WORDS MOVED
- LDM ATUS+2 GET DETAIL STATUS WORD 13
- SHN 21-2 POSITION CLEANER ACTIVE BIT
- PJN LPR2 IF CLEANER PARKED
- LDD EP SET LOAD POINT ERROR FLAG
- LPC 6700
- ADC 1002
- STD EP
- LDD EP+1
- LPC 7077
- ADC 200
- STD EP+1
- LDN /MTX/TCF CLEANER ACTIVE
- LJM IMU ISSUE MESSAGE TO ERROR LOG AND UNLOAD TAPE
- LPR2 LDM MTDS LOAD DETAIL STATUS WORD 3
- LPC 177 MASK ERROR CODES
- SBN 7
- ZJN LPR4 IF ERROR CODE 7
- SBN 3
- ZJN LPR4 IF ERROR CODE 12
- SBN 1
- ZJN LPR4 IF ERROR CODE 13
- LDD EC
- NJN LPR3 IF NON-LOAD POINT ERROR
- LDD EP
- SHN 21-11
- PJN LPR3 IF NO PREVIOUS LOAD POINT ERROR
- LDN 0 CLEAR ERROR CODE
- STD EC
- LDD EP CLEAR LOAD POINT ERROR FLAG
- LPC 6777
- STD EP
- LPR3 LCN 1
- LJM LPRX RETURN NO LOAD POINT ERROR OR RECOVERED
- LPR4 LDD EP SET LOAD POINT ERROR FLAG
- LPC 6700
- ADC 1002
- STD EP
- LDD EP+1
- LPC 7077
- ADC 200
- STD EP+1
- LDD EI
- LPN 77 ERROR ITERATION
- ZJN LPR6 IF FIRST TRY ON BAD HEADER
- LPN 7
- ZJN LPR5 IF ITERATION IS A MULTIPLE OF 4
- SBN 4
- NJN LPR6 IF NOT A MULTIPLE OF 4
- LPR5 LDN /MTX/BFR BAD PHASE/GCR HEADERS
- LJM IMU ISSUE MESSAGE TO ERROR LOG AND UNLOAD TAPE
- * REWIND TO LOAD POINT AND ATTEMPT REREAD.
- LPR6 LDN F0010
- RJM FCN REWIND TAPE TO LOAD POINT
- RJM WFC WAIT FOR BACKSPACE TO COMPLETE
- * RESTORE EQUIPMENT ERROR STATUS BEFORE EXIT.
- LDN 0
- STD T1
- LDM LPRA RESTORE GENERAL STATUS
- STD DS
- LDM LPRB RESTORE BLOCK ID
- STM UBWB
- LPR7 LDM LPRC,T1 RESTORE ERROR STATUS
- STM MTDS,T1
- AOD T1 INCREMENT COUNTER
- SBN 16
- NJN LPR7 IF NOT ALL STATUS WORDS MOVED
- * LDN 0
- LJM LPRX TRY TO REWRITE FROM LOAD POINT
- LPRA CON 0 GENERAL STATUS
- LPRB CON 0 BLOCK ID
- LPRC BSSZ 16 DETAILED STATUS
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * CALLS DME.
- PRS4 STM REME MTS - DO NOT CHECK FOR AGC FAILURE
- LDM PRSD DISABLE LOAD POINT RECOVERY
- STM REMK
- LJM PRS1 CHECK FOR LONG BLOCK PROCESSING
- PRS SUBR ENTRY/EXIT
- LDM //ITMA SAVE READ FUNCTION
- STM POTF
- LDN F0040 SET FORWARD READ
- STM //ITMA
- LDD HP
- LPN 20
- ZJN PRS4 IF NOT ATS-TYPE CONTROLLER
- * MODIFY INSTRUCTIONS FOR ATS-TYPE CONTROLLER.
- LDM PRSA
- STM ABCA
- LDC SHNI+66
- STM REMC
- LCN 0
- STM PNEE
- STM REMA
- STM RDAB
- LDC UJNI-PJNI
- RAM RDAA
- LDM PRSB
- STM PNEA
- LDC MTDS+1
- STM REMB
- LDN MTDS+6-MTDS-3
- RAM EBWA
- LDC SHNI+21-11
- STM EBWB
- LDD HP
- LPN 1
- ZJN PRS1 IF NOT NINE TRACK UNIT
- LDC UJNI-ZJNI
- RAM POTM NO CLIP LEVEL CHANGES FOR NINE TRACK FSC
- LDD FN
- SBN /MTX/RDF
- NJN PRS1 IF NOT READ FUNCTION
- LDD FM
- SHN -6
- SBN /MTX/TFLI
- NJN PRS1 IF NOT LI FORMAT
- STM ADDR NO INSTRUCTION MODIFICATION
- STM CIFB
- STM REML NOT SKIPEI OR POSMF
- LDC /RLI/VDAE
- STM CIFA *VDAE* = 0 IF CORRECT BLOCK LENGTH
- LDC /RLI/UIPC
- STM POTR SET TO GIVE FATAL USER ERROR
- LDC /RLI/RLI
- UJN PRS2 SET ENTRY TO REREAD
- PRS1 LDM /READ/TDAA
- NJN PRS3 IF NOT LONG BLOCK
- LDC RLB
- PRS2 STM POTI ENTRY TO REREAD
- PRS3 LJM PRSX RETURN
- PRSA BSS 0
- LOC ABCA
- UJN ABC1 ADJUST BUFFER LENGTH
- LOC *O
- PRSB BSS 0
- LOC PNEA
- UJN PNE3 ISSUE ERROR MESSAGE
- LOC *O
- PRSD BSS 0
- LOC REMK
- UJN REM2.1 DISABLE LOAD POINT RECOVERY
- LOC *O
- OVERLAY (CTS READ ERROR PROCESSOR.),(BUFB+5),P
- CRE SPACE 4,10
- ** CRE - CTS READ ERROR PROCESSOR.
- *
- * ENTRY (EC) = ERROR CODE.
- *
- * CALLS CEP, MCH, POS, PRS, PTM, RRA.
- ENTRY CRE
- CRE SUBR ENTRY/EXIT
- * THE FOLLOWING CODE IS OVERLAID BY THE IN POINTER.
- CREA EQU *
- LDM //LOV SET RETURN ADDRESS
- STM CRE
- LDC CTAB MODIFY CHANNELS
- RJM MCH
- RJM PRS PRESET
- LDD MA SAVE IN POINTER
- CWD CN
- CRM CREA,ON
- LDD DS
- LPN 1
- NJN CRE1 IF READY
- LDN /MTX/RDR SET NOT READY
- STD EC
- CRE1 LDD EC
- LMN /MTX/BEI
- NJN CRE3 IF NOT TAPE MARK
- RJM PTM PROCESS TAPE MARK
- CRE2 UJN CREX RETURN
- CRE3 LDD SP
- LPN 4
- ZJN CRE6 IF ERROR PROCESSING ALLOWED
- CRE4 LDN 20
- STM POSB SKIP ONE BLOCK
- RJM POS POSITION TAPE PAST BAD BLOCK
- NJN CRE5 IF ERROR
- RJM CEP CLEAR ERROR PARAMETERS
- UJN CRE2 RETURN
- CRE5 LDN 0
- STM POSB INDICATE NO EXTRA BLOCK TO SKIP
- CRE6 LDD FN
- LMN /MTX/SKP
- NJN CRE7 IF NOT SKIP OPERATION
- LDM /READ/SKEI
- NJN CRE4 IF SKIPEI OF POSMF
- CRE7 RJM RRA READ RECOVERY ALGORITHM
- UJN CRE2 RETURN
- CEP SPACE 4,10
- ** CEP - CLEAR ERROR PARAMETERS.
- *
- * EXIT (CN+3, CN+4) = CORRECT IN POINTER.
- * TO *RLA* IF READ LABELS.
- *
- * USES CN - CN+3.
- *
- * CALLS CEC, RSP.
- *
- * MACROS CALL.
- CEP SUBR ENTRY/EXIT
- LDN 0 CLEAR ERROR PARAMETER
- STD EI
- STD EP
- LDD FN
- LMN /MTX/RLA
- ZJN CEP1 IF READ LABELS
- RJM RSP RESET PARAMETERS FOR NEXT OPERATION
- LDD MA RESTORE IN POINTER
- CWM CREA,ON
- LDD MA
- CRD CN
- UJN CEPX RETURN
- CEP1 LDN 0 SET ERROR CODE
- CEPA EQU *-1
- * LDN /MTX/BEI (RECOVERED TAPE MARK)
- STD EC
- LDM CECB
- LPN 77
- ZJN CEP2 IF AT MAGNET CONTROL POINT
- LDN 0 CHANGE TO MAGNET,S CP
- RJM CEC
- CEP2 CALL RLA RELOAD READ LABELS OVERLAY (NO RETURN)
- POS SPACE 4,15
- ** POS - POSITION TAPE.
- * THIS ROUTINE USES THE LOCATE BLOCK COMMAND TO POSITION
- * THE TAPE TO THE EXPECTED BLOCK POSITION.
- *
- * ENTRY (BL, BL+1) = NOS BLOCK POSITION.
- * (WP, EP+1) = PHYSICAL BLOCK ID WHEN (BL,BL+1) = 0.
- *
- * EXIT (A) = 0 IF NO ERROR.
- * TO *ERR* IF CHANNEL MALFUNCTION.
- *
- * USES T3.
- *
- * CALLS /PRESET/GPS, /PRESET/ICF, /PRESET/RBI.
- POS SUBR ENTRY/EXIT
- RJM /PRESET/RBI READ BLOCK ID
- LDM BIDW
- STM POSA
- SBN 20
- ZJN POS1 IF FIRST SEGMENT
- STM POSA SET PHYSICAL REFERENCE BLOCK ID
- POS1 LDD BL+1
- SHN 4
- ADD EP+1
- ADM POSB EXTRA BLOCKS TO POSITION
- STM POSA+2 MOVE BLOCK NUMBER TO PARAMETERS
- SHN -14
- STM POSA+1
- LDD BL
- SHN 4
- ADD WP
- RAM POSA+1
- LDN F0016 LOCATE BLOCK
- RJM /PRESET/ICF ISSUE FUNCTION
- ACN CH
- LDN 3
- OAM POSA,CH OUTPUT THE 3 PARAMETER WORDS
- STD T3 WORDS NOT TRANSFERRED
- FJM *,CH WAIT FOR DATA TO BE TAKEN
- POS2 LDN 0 WAIT FOR END OF OPERATION
- RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS
- MJN POS2 IF COMMAND RETRY
- SHN 21-13
- MJN POS3 IF ERROR
- LDD T3
- ZJN POS4 IF ALL WORDS TRANSFERRED
- LDN /MTX/CMF CHANNEL MALFUNCTION
- RJM ERR REPORT ERROR (NO RETURN)
- POS3 LDN /MTX/STE STATUS ERROR
- STD EC
- POS4 LJM POSX RETURN
- POSA DATA 0 LOCATE BLOCK PARAMETERS
- DATA 0 UPPER 12 BITS OF BLOCK NUMBER
- DATA 0 8/LOWER BITS OF BLOCK NUMBER / 4 UNUSED
- POSB DATA 0 8/ADDER TO BLOCK POSITION, 4/0
- PTM SPACE 4,10
- ** PTM - PROCESS TAPE MARK.
- *
- * EXIT (EC) = 0.
- * TO *CEP* IF READ LABEL.
- * TO *RET3* IF LABELED TAPE OR FORMAT IS I, SI, LI.
- *
- * CALLS *CEM*, CEP.
- *
- * MACROS CALL.
- PTM4 LDN /MTX/BEI RETURN POSSIBLE EOI
- LJM RET3 RETURN ERROR CODE
- PTM SUBR ENTRY/EXIT
- LDN 0
- STD EC CLEAR ERROR CODE
- LDD EI
- ZJN PTM1 IF FIRST ENTRY
- CALL CEM LOG RECOVERED ERROR
- LDC LDNI+/MTX/BEI SET TO RETURN TAPE MARK IF READ LABELS
- STM CEPA
- PTM1 RJM CEP CLEAR PARAMETERS (NO RETURN IF READ LABEL)
- LDD LT
- SHN 21-12
- MJN PTM4 IF LABELED
- LDD FM
- SHN -6
- SBN /MTX/TFSI+1
- MJN PTM4 IF INTERNAL MODES
- SBN /MTX/TFLI-/MTX/TFSI-1
- ZJN PTM4 IF LI FORMAT
- LDD MD SET EOF STATUS
- SCN 14
- LMN 10
- STD MD
- LDN 2
- STD TB
- LDD FM
- SHN -6
- LMN /MTX/TFS
- ZJN PTM2 IF S FORMAT
- LMN /MTX/TFL&/MTX/TFS
- NJN PTM3 IF NOT L FORMAT
- PTM2 LDM //CIOE
- LPC 770
- LMC 260
- NJN PTM3 IF NOT 260 READ CODE
- LDN 26 SET TO RETURN 271 STATUS
- STD TB
- PTM3 LJM PTMX RETURN
- RCI SPACE 4,10
- ** RCI - READ *CIO* INFORMATION FROM *MAGNET,S FL.
- *
- * EXIT (T6 - T7) = FET ADDRESS.
- * (T1 - T5) = UCIC WORD.
- *
- * USES CM - CM+4.
- *
- * CALLS HNG.
- *
- * MACROS DELAY, MONITOR, PAUSE.
- RCI3 LDD MA READ UDT WORDS
- CRD T6-3
- ADN 2
- CRD T1
- RCI SUBR ENTRY/EXIT
- RCI1 LDM UADA SET FWA OF DESIRED UDT WORDS
- ADN /MTX/UCIA
- STD CM+4
- LDC 300 REQUEST THREE WORDS
- STD CM+3
- LDN 0 REQUEST READ FROM *MAGNET*
- STD CM+1
- LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
- STD CM+2
- MONITOR TDAM
- LDD CM+1
- ZJN RCI3 IF DONE
- SBN 2
- PJN RCI2 IF MOVE NOT IN PROGRESS
- PAUSE NE
- DELAY
- UJN RCI1 REISSUE REQUEST
- RCI2 RJM HNG HANG PP
- RRA SPACE 4,25
- ** RRA - READ RECOVERY ALGORITHM.
- * THIS ROUTINE DOES ERROR RECOVERY AS FOLLOWS.
- * IF (EI) = 0 LOG ERROR, POSITION TAPE, AND REQUEUE.
- * IF (EI) = 1 LOG ERROR, LOAD CCC MICROCODE, POSITION TAPE,
- * AND REQUEUE.
- * IF (EI) = 2 LOG UNRECOVERED ERROR, RETURN FATAL CODE. IF
- * THE ERROR IS A LOAD POINT ERROR, THE TAPE IS
- * UNLOADED.
- *
- * ENTRY (EC) = ERROR CODE.
- * (EI) = RETRY COUNT.
- *
- * EXIT (EP) .NE. 0 IF RECOVERY ALGORITHM NOT COMPLETE.
- * (EI) = (EI)+1 IF RECOVERY ALGORITHM NOT COMPLETE.
- * TO *ERR* IF MICROCODE LOAD FAILED.
- * TO *RET2* TO REQUEUE THE REQUEST.
- * TO *RET4* TO RETURN A FATAL ERROR.
- *
- * USES CN, CN+1, EC, CM - CM+4.
- *
- * CALLS *CEM*, CEP, /PRESET/ICF, POS, /PRESET/RCU, RSP, WFC,
- * WIP, *0CT*.
- *
- * MACROS CALL, EXECUTE.
- RRA SUBR ENTRY/EXIT
- RRA1 CALL CEM LOG CTS ERROR MESSAGE
- LDD EC LOAD ERROR CODE
- NJN RRA2 IF ERROR
- LJM RRA10 IF RECOVERED ERROR
- RRA2 LDC LDNI FORCE DROP OUT
- STM //PNRC
- AOD EP FORCE REPORTING OF RECOVERED ERROR
- AOD EI INCREMENT RETRY COUNT
- SBN 1
- ZJP RRA3 IF FIRST ERROR
- SBN 1
- NJP RRA4 IF RETRIES FAILED
- CHTE *
- LDN CH SET CHANNEL NUMBER
- STD CN
- LDC ERLB SET BUFFER ADDRESS
- STD CN+1
- EXECUTE 0CT,ERLA+5 LOAD CTS/CCC MICROCODE
- LDD CN
- ZJN RRA2.2 IF MICROCODE LOADED
- STD EC
- SHN 0-13
- PJN RRA2.1 IF ERROR CODE ALREADY SAVED
- LDN /MTX/CMF
- STD EC
- RRA2.1 LDM CN+1 SAVE FUNCTION
- STM /PRESET/ICFA
- RJM ERR REPORT ERROR (NO RETURN)
- RRA2.2 RJM /PRESET/RCU RECONNECT UNIT
- RRA3 RJM POS POSITION TAPE
- NJP RRA1 IF LOCATE BLOCK FAILED
- STD EC CLEAR ERROR CODE
- LJM RET2 REQUEUE THE REQUEST
- * UNRECOVERABLE ERROR.
- RRA4 LDD EC
- LMN /MTX/STE
- NJN RRA6 IF NOT STATUS ERROR
- LDM CTGS
- LPC 177
- LMN CE007
- NJN RRA6 IF NOT BURST ID OR BLOCK ID ERROR
- LDD DS
- SHN 21-2
- PJN RRA6 IF NOT AT LOAD POINT
- LDN /MTX/BFR LOAD POINT ERROR
- STD EC
- CALL CEM LOG THE ERROR
- LDC F0110 UNLOAD TAPE
- RJM /PRESET/ICF ISSUE CTS FUNCTION
- RJM WFC WAIT FOR COMPLETION
- UJN RRA7 RETURN FATAL ERROR
- RRA6 LDD FN
- LMN /MTX/RDF
- ZJN RRA8 IF READ
- RRA7 LJM RET4 RETURN FATAL ERROR
- RRA8 LDM FETO
- SHN 21-10
- PJN RRA9 IF ERROR PROCESSING NOT SET
- RJM RSP RESET PARAMETERS
- RJM WIP WRITE IN POINTER TO BUFFER
- LDD MD
- SHN 21-5
- PJN RRA9 IF NOT 200 READ
- LDD CN+3 READ CONTROL WORD
- SHN 6
- ADD RA
- SHN 6
- ADD CN+4
- CRD CM
- LDC 4000 SET UNRECOVERED ERROR INDICATION
- RAD CM
- LDD CN+3 REWRITE CONTROL WORD
- SHN 6
- ADD RA
- SHN 6
- ADD CN+4
- CWD CM
- RRA9 LDC RET4 SET TO GIVE FATAL USER ERROR
- STM /READ/WCBD
- RRAA EQU *-1
- * STM /RLI/UIPC (LI FORMAT)
- RRA10 RJM CEP CLEAR ERROR PARAMETERS
- LJM RRAX RETURN
- RSP SPACE 4,10
- ** RSP - RESET PROCESSOR FOR NEXT OPERATION.
- *
- * EXIT (CN+3 - CN+4) = IN POINTER PRIOR TO READ.
- *
- * CALLS /CPP/CAL, *CPP*, RCI, /CPP/SFP.
- *
- * MACROS CALL.
- RSP SUBR ENTRY/EXIT
- LDM /READ/WOCN RESTORE WORD COUNT
- STD WC
- CALL CPP RELOAD ADDRESS RELOCATOR
- LDD FN
- LMN /MTX/RDF
- NJN RSPX IF NOT READ DATA
- RJM RCI READ UDT
- RJM /CPP/CAL CALCULATE PARAMETERS
- LDN 2 READ IN
- RJM /CPP/SFP
- UJN RSPX RETURN
- WFC SPACE 4,10
- ** WFC - WAIT FOR COMPLETION.
- *
- * CALLS /PRESET/GPS.
- WFC SUBR ENTRY/EXIT
- WFC1 LDN 0 WAIT FOR END OF OPERATION
- RJM /PRESET/GPS
- MJN WFC1 IF COMMAND RETRY
- UJN WFCX RETURN
- WIP SPACE 4,15
- ** WIP - WRITE IN POINTER PRIOR TO READ TO USER BUFFER.
- *
- * ENTRY (CREA - CREA+4) = POINTER TO NEXT BUFFER LOCATION.
- * (CN+3 - CN+4) = IN POINTER PRIOR TO READ.
- *
- * EXIT IN POINTER WRITTEN TO USER CIO BUFFER.
- * PARITY ERROR BIT SET IN FET+0.
- *
- * USES CM - CM+4.
- *
- * CALLS RCI.
- WIP SUBR ENTRY/EXIT
- LDM CREA+3 CALCULATE ABSOLUTE BUFFER ADDRESS
- SHN 6
- ADD RA
- SHN 6
- ADM CREA+4
- CWD CN WRITE OLD IN POINTER TO BUFFER
- RJM RCI READ UDT INFORMATION
- LDD T6 READ FET+0
- SHN 6
- ADD RA
- SHN 6
- ADD T7
- CRD CM
- LDD CM+4 SET PARITY ERROR BIT
- LPC 777
- LMC 4000
- STD CM+4
- LDD CM+3
- SCN 3
- STD CM+3
- LDD T6 REWRITE FET+0
- SHN 6
- ADD RA
- SHN 6
- ADD T7
- CWD CM
- LJM WIPX RETURN
- SPACE 4,10
- ERRNG ERLA-* CODE OVERFLOWS HELPER OVERLAY
- ERRPL ERLA+5+ZCTL-ERLB *0CT* OVERFLOWS INTO BUFFER
- CTAB SPACE 4,10
- ** CTAB - CHANNEL TABLE.
- CTAB CHTB
- PRS SPACE 4,10
- ** PRS - PRESET.
- PRS SUBR ENTRY/EXIT
- LDD FN
- LMN /MTX/RDF
- NJN PRSX IF NOT READ FUNCTION
- LDD FM
- SHN -6
- LMN /MTX/TFLI
- NJN PRSX IF NOT LI FORMAT
- LDC /RLI/UIPC
- STM RRAA SET TO RETURN FATAL ERROR
- LJM PRSX EXIT PRESET
- OVERLAY (WRITE FUNCTION PROCESSOR.),,,WRITE
- .IM SET 2 GENERATE ADDRESSES FOR ERROR PROCESSOR
- STAT EQU PRSX STATUS AT START OF WRITE
- BYWR EQU STAT+1 BYTES ATTEMPTED TO WRITE
- BYRM EQU BYWR+1 BYTES NOT WRITTEN
- OPTU EQU PRSX OUT POINTER UPPER FOR CTS RETRY
- OPTL EQU BYRM+1 OUT POINTER LOWER FOR CTS RETRY
- WTF SPACE 4,10
- ** WTF - WRITE TAPE.
- *
- * CALLS IBF, ITM, /WLB/ODA, RCB, WRT.
- *
- * MACROS SADT.
- ENTRY WTF
- WTF RJM RCB READ CENTRAL BUFFER
- * RJM RCB (CTS, NOT LONG BLOCKS)
- * RJM ITM (4X PPU SPEED - MOTION AHEAD ENABLED)
- * UJN WTF1 (LONG BLOCKS)
- WTFA EQU *-2
- RJM ITM INITIATE TAPE MOTION
- * UJN WTF2 (CTS)
- * RJM RCB (4X PPU SPEED - MOTION AHEAD ENABLED)
- WTFB EQU *-1
- UJN WTF2 WRITE TO TAPE
- WTF1 RJM ITM INITIATE TAPE MOTION
- * RJM /WLB/ODA (LONG BLOCKS)
- WTFC EQU *-1
- WTF2 RJM IBF PROCESS I/SI FORMAT
- WTFD EQU *-2
- * UJN *+2 (LONG BLOCKS)
- RJM WRT PROCESS WRITE
- LDC *
- WTFE EQU *-1
- NJN WTF4 IF EXIT CONDITIONS
- LDD DF
- WTFF ZJN WTF1 IF NO DROP OUT
- * PSN (PRU WRITE)
- * ZJN WTF2 IF NO DROP OUT (CTS AND NOT LONG BLOCK)
- WTF3 LJM RET2 REQUEUE
- * LJM WTF8 (PRU WRITE)
- WTFG EQU *-1
- WTF4 SBN 10
- PJN WTF6 IF ERROR
- ADN 10-1
- NJN WTF5 IF NO EOF TO WRITE
- SADT .FE,,3,A
- LDC * UPDATE OUT (NEEDED FOR 204 WRITE)
- CWD CN
- LJM RET1 RETURN TO WRITE EOF
- WTF5 SBN 4-1
- NJN WTF8 IF NOT MODE CHANGE
- LDD MD TOGGLE MODE
- LMD HN
- STD MD
- LDD UP
- LMN 1
- STD UP
- UJN WTF3 REQUEUE
- WTF6 ZJN WTF7 IF CONTROL WORD ERROR
- LDN /MTX/BAE&/MTX/BCW BUFFER ARGUMENT ERROR
- WTF7 LMN /MTX/BCW BUFFER CONTROL WORD ERROR
- LJM RET3 RETURN ERROR CODE
- WTF8 LDN 1
- LJM RET SET FET COMPLETE
- * LJM EOF (I/SI FORMAT EOF REQUIRED)
- WTFH EQU *-1
- CKS SPACE 4,10
- CNW SPACE 4,20
- ** CNW - CHECK NEXT WRITE.
- *
- * ENTRY (CN+3 - CN+4) = OUT POINTER.
- *
- * EXIT (WTFE) = 0, NEXT WRITE OKAY.
- * 1, EOF WRITE REQUIRED.
- * 2, NOT ENOUGH DATA.
- * 4, TOGGLE MODE (F FORMAT).
- * 10, BUFFER CONTROL WORD ERROR.
- * 11, BUFFER ARGUMENT ERROR.
- * (BY) = BYTES TO WRITE.
- * (T6) = WORD COUNT (INCLUDING CONTROL WORDS).
- * (MA+0 - MA+4) = ENTRY VALUE IF CALLED FROM *WRT*.
- *
- * USES CM - CM+4.
- *
- * CALLS COB, CDO, SIF, XBF, CNL (LONG BLOCKS).
- *
- * MACROS SADT.
- CNW9 LDN 2 SET NOT ENOUGH DATA
- * ENTER HERE FROM LONG BLOCKS.
- CNW10 STM WTFE
- CNW SUBR ENTRY/EXIT
- RJM CDO CHECK DROP OUT FLAG
- LDN F0050
- STM ITMA WRITE FUNCTION
- CNWA LDD WC
- * LDN 2 (204 WRITE)
- * LDN 1 (264 WRITE)
- * LJM /3M /CNL (LONG BLOCKS - FLAG FOR OTHER OVERLAYS)
- STD CM+4
- CNWB LDN 0 SET UNUSED BIT COUNT
- * LDN * (S/L 14, 24, 34 SET FROM FET)
- STD CM+2
- RJM COB CHECK OUTPUT BUFFER
- CNWC SBD CM+4
- * STD CM+4 (S/L 14, 24, 34 CODES)
- CNWD PJN CNW1 IF ENOUGH DATA
- * NJN CNW1 (S/L 14, 24, 34 CODES)
- CNWE UJN CNW9 (204/264 WRITE AND ALL S/L FORMAT)
- * RAD CM+4 ADJUST WORD COUNT
- LDD MD
- SHN 21-3
- PJN CNW9 IF NOT EOR/EOF WRITE
- SHN 21-10-21+3+22
- MJN CNW9 IF EOR/EOF WRITTEN THIS OPERATION
- CNW1 UJN CNW2
- CNWF EQU *-1
- * LDD CN+3 (204/264 WRITE)
- SHN 6 READ CONTROL WORD
- ADD RA
- SHN 6
- ADD CN+4
- CRD CM
- CNW2 LDD CM+4 PRESERVE BYTE COUNT 204 WRITE
- CNWG UJN CNW3
- * STD BY (204 WRITE)
- ADN 4 ROUND UP BYTE COUNT
- STD CM+4 DIVIDE BY 5
- SHN 1 13* BYTES
- ADD CM+4
- SHN 2
- ADD CM+4
- SHN 14 (-6) (13*BYTES)/64
- STD T0
- SHN 6+2 4*13*BYTES (52*BYTES)
- SBD CM+4 51*BYTES
- ADD T0 (51*BYTES)+((13*BYTES)/64)
- SHN -8D
- STD CM+4
- CNWH UJN CNW3 (NOT F FORMAT)
- * LDD MD
- LMD CM
- SHN -4
- LPN 4
- NJN CNW5 IF MODE CHANGE
- LDD CM+4
- CNW3 ADN 0 ALLOW FOR CONTROL WORDS
- CNWI EQU *-1
- * ADN 1 (264 WRITE)
- * ADN 2 (204 WRITE)
- STD T6 PRESET FIRST PART WORD COUNT
- SADT .BS,C,1
- ADC -*
- PJN CNW4 IF BLOCK LENGTH ERROR
- RJM COB CHECK OUTPUT BUFFER
- SBD T6
- MJN CNW8 IF NOT ENOUGH DATA
- SBD T6
- SHN -21
- ADC LDNI
- STM WRTI
- LDD CM+2 CHECK UBC FIELD
- CNWJ SBN 1 (I, SI FORMAT INCLUDING 204/260 WRITE)
- * SBN 12D (204 WRITE ALL OTHER FORMATS)
- * SBN 57D (264 WRITE ALL OTHER FORMATS)
- * SBN 57D (ALL S/L FORMAT EXCEPT 204)
- MJN CNW6 IF VALID UBC
- CNW4 LDN 10 SET BUFFER CONTROL WORD ERROR
- CNW5 UJN CNW7 SET EXIT CONDITION
- CNW6 LDD CM+4 SET BYTE COUNT
- SHN 2
- ADD CM+4
- CNWK STD BY
- * PSN (204 WRITE AND NOT I/SI FORMAT)
- RJM XBF PROCESS ALL EXCEPT I, SI FORMAT
- CNWL EQU *-2
- * RJM SIF (SI FORMAT 9/18 TRACK)
- * LDN 0 I FORMAT(9 TRACK ATS OR CTS), I/SI 7 TRACK
- * LDN 0
- CNW7 LJM CNW10 RETURN
- CNW8 LJM CNW9 SET NOT ENOUGH DATA
- COB SPACE 4,10
- ** COB - CHECK OUTPUT BUFFER.
- *
- * EXIT (A) = WORD COUNT.
- * TO LOCATION *CNW10*, IF BUFFER ARGUMENT ERROR.
- *
- * USES T1 - T5.
- *
- * MACROS SADT.
- COB2 LDD T1+3 LENGTH = IN - OUT
- SBD CN+3
- SHN 14
- ADD T1+4
- SBD CN+4
- PJN COBX IF IN .GE. OUT
- SADT .LF
- ADC * (LIMIT - FIRST)
- MJN COB1 IF BUFFER ARGUMENT ERROR
- COB SUBR ENTRY/EXIT
- SADT .FE,,2,A
- LDC * READ IN
- CRD T1
- LDD T1+3
- LPN 37
- STD T1+3
- SHN 14
- LMD T1+4
- SADT .LM,C
- ADC -*
- MJN COB2 IF IN .LT. LIMIT
- COB1 LDN 11 SET BUFFER ARGUMENT ERROR
- UJN CNW7 SET EXIT CONDITION
- PWR SPACE 4,10
- ** RCB - READ CENTRAL BUFFER.
- *
- * ENTRY (CN+3 - CN+4) = OUT POINTER.
- * (T6) = WORD COUNT.
- *
- * EXIT (CN+3 - CN+4) UPDATED.
- * (T7) = SECOND PART WORD COUNT IF BUFFER WRAP.
- *
- * MACROS SADT.
- RCB2 LDD T7
- ZJN RCB3 IF NO SECOND PART
- SADT .FT,,,A
- LDC * (FIRST+RA)
- CRM *,T7
- RCBB EQU *-1
- UJN RCB4 RESET OUT
- RCB3 LDD T6 UPDATE OUT
- RAD CN+4
- SHN -14
- RAD CN+3
- SHN 14
- LMD CN+4
- SADT .LM,C
- ADC -* - LIMIT
- MJN RCBX IF LIMIT NOT REACHED
- SADT .FT
- RCB4 LDC * RESET TO FIRST
- ADD T7
- STD CN+4
- SHN -14
- STD CN+3
- RCB SUBR ENTRY/EXIT
- LDD T6
- ZJN RCBX IF NO DATA
- LDN 0 INITIALIZE SECOND HALF WORD COUNT
- STD T7
- LDD CN+3 DETERMINE IF BUFFER WRAP
- SHN 14
- LMD CN+4
- ADD T6
- SADT .LM,C
- ADC -* (-LIMIT)
- MJN RCB1 IF LIMIT NOT REACHED
- STD T7 SECOND HALF WORD COUNT
- LMC -0
- RAD T6
- RCB1 LDD T6 READ DATA
- SHN 2
- ADD T6
- ADM RCBA
- STM RCBB
- LDD CN+3 READ FIRST PART
- SHN 6
- ADD RA
- SHN 6
- ADD CN+4
- CRM BUF,T6
- RCBA EQU *-1
- * CRM BUFC,T6 (204, 264 WRITE)
- LJM RCB2 READ SECOND PART
- WRT SPACE 4,15
- ** WRT - WRITE TAPE.
- *
- * FOR CTS THE FIRST PART OF *WRT* IS OVERLAYED WITH *WCT*.
- *
- * ENTRY (BY) = BYTES TO WRITE.
- *
- * EXIT (CN+3, CN+4) = OUT POINTER.
- *
- * USES CM - CM+4, CN - CN+3.
- *
- * CALLS CNW, RCB, UBW, *WEM*, WEO.
- *
- * MACROS CALL, SADT.
- WRT SUBR ENTRY/EXIT
- WRTA LDD BY
- * UJN WRT2 (LONG BLOCKS)
- STM BYWR SAVE BYTES BEING OUTPUT
- OAM BUF,CH OUTPUT BLOCK
- FJM *,CH
- NJN WRT1 IF ABNORMAL TERMINATION
- DCN CH+40
- WRT1 STM BYRM SAVE BYTES REMAINING
- LDM UBWB USE HARDWARE CHECKSUM
- STD LG+1
- NJN WRT2 IF NONZERO
- AOM LG+1 FORCE NONZERO CHECKSUM
- WRT2 LDD DS SAVE STATUS AT START OF WRITE
- STM STAT
- LDD UP CLEAR EOR/EOF LAST BLOCK FLAG
- SCN 10
- STD UP
- LDD MD CLEAR EOR/EOF THIS OPERATION FLAG
- LPC 7377
- STD MD
- WRTB LDC * BLOCK LENGTH - I, SI FORMAT
- * PSN (NOT I, SI FORMAT)
- * LDD BY (NOT I, SI FORMAT)
- WRTC LMC 5000 CHECK FOR FULL BLOCK
- * LMC 5004 (I FORMAT)
- * LDN 0 (WRITE LABELS)
- * LDN 0 (WRITE LABELS)
- ZJN WRT3 IF NOT EOR/EOF WRITTEN
- LDN 10 SET EOR/EOF FLAGS
- RAD UP
- LDC 400
- RAD MD
- WRT3 LDD MA
- CWD CN SAVE OLD OUT POINTER
- WRTD RJM CNW CHECK NEXT WRITE
- * UJN WRT3.1 (WRITE LABELS)
- LDM WTFE
- ADD DF
- WRTE NJN WRT3.1 IF NO MORE DATA OR DROP OUT SET
- * UJN WRT3.1 (LONG BLOCKS)
- RJM RCB READ NEXT BLOCK FROM CENTRAL BUFFER
- WRT3.1 RJM WEO WAIT END OF OPERATION
- ZJN WRT4 IF NO ERROR
- LDN /MTX/STE STATUS ERROR
- WRT4 STD EC
- WRTF NJN WRT4.1 IF ERROR
- * UJN WRT4.1 (MTS UNIT)
- LDM MTDS+1
- SHN 21-11
- PJN WRT4.1 IF NO GCR CORRECTION
- AOM ECNT+2 INCREMENT COUNTER
- SHN -14
- RAM ECNT+1 INCREMENT ON OVERFLOW
- WRT4.1 LDM UBWB USE HARDWARE CHECKSUM
- STD LG+1
- NJN WRT4.2 IF NONZERO
- AOD LG+1
- WRT4.2 LDD EC
- ADD EI
- ZJN WRT5 IF NO ERROR NOR VERIFICATION REQUIRED
- LDD MA
- CRD CN RESET TO OLD OUT POINTER
- LDD DS SAVE STATUS FOR ERROR PROCESSOR
- STM //STER
- CALL WEM
- * RETURN HERE IF END OF TAPE OR IF ERROR WAS RECOVERED.
- LDD MA
- CWD CN RESTORE MA BACK TO OLD OUT POINTER
- LDM WTFE
- ADD DF
- WRTG NJN WRT5 IF NO MORE DATA OR DROP OUT SET
- * UJN WRT5 (WRITE LABELS OR LONG BLOCKS)
- LDM WRTK
- LMC WRTX
- NJN WRT5 IF END OF TAPE
- RJM RCB READ CENTRAL BUFFER
- WRT5 LDD LG+1 SAVE LAST GOOD RECORD INFORMATION
- STD LG
- RJM UBW UPDATE BID WINDOW
- WRTH PSN ALL NORMAL WRITES
- * UJN WRT7 WRITE LABELS
- LDD MA
- CRD CM SET TO OLD OUT POINTER
- UJN WRT5.1 WRITE OUT TO FET
- BSS 7 ALLOW SPACE FOR THE END OF *WCT*
- * START OF COMMON CODE WITH *WCT*. *WCT* OVERLAYS THE FIRST
- * PART OF *WRT* FOR CTS.
- WRT5.1 BSS 0
- SADT .FE,,3,A
- LDC * WRITE OUT TO FET
- CWD CM
- WRTI LDN 0
- ZJN WRT6 IF AT LEAST ONE MORE BLOCK
- LDD OA RECALL CPU
- CWM WRTL,ON
- WRTJ EQU *-2
- * UJN *+2 (NOT BUFFERED WRITE)
- WRT6 AOD BL+1 INCREMENT BLOCK COUNT
- SHN -14
- RAD BL
- WRT7 AOD BT INCREMENT BLOCKS WRITTEN
- LJM WRTX RETURN
- WRTK EQU *-1
- * LJM /3M /EOTEXIT (RETURN ERROR ON END OF TAPE)
- WRTL CON DRCM DRIVER RECALL CPU MONITOR FUNCTION
- SPACE 4,10
- USE OVLB
- OVLB BSS 0 ORIGIN FOR LONG BLOCK PROCESSOR
- * THE FOLLOWING ROUTINES CANNOT USE ADDRESS MODIFICATION.
- IBF SPACE 4,10
- ** IBF - INTERNAL BLOCK FORMAT.
- * THIS ROUTINE SETS UP THE I FORMAT TRAILER BYTES AND ADJUSTS
- * THE BYTE COUNT SO AN EVEN BYTE COUNT IS WRITTEN.
- *
- * ENTRY (BY) = BYTE COUNT OF BLOCK.
- *
- * EXIT (BY) = ADJUSTED BYTE COUNT OF BLOCK,
- * INCLUDING TERMINATOR.
- IBF SUBR ENTRY/EXIT
- IBFA LDM LNUM SET LEVEL NUMBER IN TERMINATOR
- * LDM BUF,BY (204 WRITE)
- LPN 17
- STM BUF+3,BY
- LMN 17
- NJN IBF1 IF NOT EOF BLOCK
- LDD BY
- ZJN IBF1 IF NO DATA IN BLOCK
- LDN 0 CLEAR LEVEL NUMBER
- STM BUF+3,BY
- IBF1 LDD BY CHECK FOR FULL BLOCK
- LMC 5000
- IBFB NJN IBF2 IF NOT FULL BLOCK I FORMAT
- * ZJN IBF3 (IF FULL BLOCK SI FORMAT)
- IBFC STM BUF+3,BY CLEAR LEVEL NUMBER
- * PSN (SI FORMAT)
- * PSN (SI FORMAT)
- IBF2 LDN 4 ADJUST BLOCK SIZE FOR TERMINATOR
- RAD BY
- STM BUF-4,BY SET BLOCK LENGTH
- LDD BL SET BLOCK NUMBER
- STM BUF-3,BY
- LDD BL+1
- STM BUF-2,BY
- LDN 0 CLEAR EXTRA BYTE
- STM BUF,BY
- * ADJUST BYTE COUNT FOR 9/18 TRACK.
- IBF3 LDD BY
- STM WRTB+1 SAVE BYTE COUNT
- IBFE EQU *-1
- * STM WCTC+1 (CTS)
- IBFD LPN 0
- * LPN 1 (9/18 TRACK)
- RAD BY
- LJM IBFX RETURN
- SIF SPACE 4,10
- ** SIF - PROCESS SI FORMAT 9 TRACK (ATS).
- * PROCESS I/SI FORMAT 9 TRACK (MTS).
- * PROCESS SI FORMAT (CTS).
- *
- * EXIT (A) = 0.
- * (ITMA) = 250 IF 3N+2 OR ODD WRITE REQUIRED.
- * = 50 OTHERWISE.
- SIF1 ZJN SIF2 IF 50 WRITE FUNCTION
- LDC F0250-F0050
- SIF2 ADN F0050 ADD FUNCTION
- STM //ITMA
- LDN 0 SET EXIT CONDITION
- SIF SUBR ENTRY/EXIT
- LDD BY
- LPN 1
- SIFA UJN SIF1 ATS CONTROLLER
- * ADD BY (MTS CONTROLLER I FORMAT)
- * LDD BY (MTS CONTROLLER SI FORMAT)
- LPN 2
- SHN -1
- UJN SIF1 SET EXIT
- EOF SPACE 4,10
- ** EOF - WRITE I/SI FORMAT EOF.
- *
- * EXIT (A) = 1.
- * TO *RET* TO SET FET COMPLETE.
- * (BY) = 0.
- * (T6) = 0.
- *
- * CALLS IBF, ITM, WRT.
- EOF BSS 0 ENTRY
- LDN 0 SET TO WRITE EOF
- STD BY
- STD T6
- LDN 17 SET LEVEL NUMBER
- STM LNUM
- LDN F0050
- STM //ITMA
- RJM //ITM INITIATE TAPE MOTION
- EOFB EQU *-2
- * UJN *+2 (CTS)
- RJM IBF PROCESS I/SI FORMAT BLOCK WRITE
- RJM WRT PROCESS WRITE
- EOFC EQU * (USED TO TELL WHERE *WRT* CALLED FROM)
- LCN 14 CLEAR EOF INDICATOR
- RAD MD
- LDN 1
- LJM RET SET FET COMPLETE
- BUFFER SPACE 4,10
- BUFFER
- .XBFA BSS 0
- LOC OVLB
- XBF SPACE 4,15
- ** XBF - EXTERNAL BLOCK FORMAT.
- *
- * ENTRY (CM+2) = UBC.
- * (T6) = WORD COUNT.
- * (CN+3 - CN+4) = OUT POINTER.
- *
- * EXIT (A) = 0, IF NO EOF WRITE NEEDED.
- * (A) = 1, IF EOF NEEDED.
- * (A) = 2, IF NOT ENOUGH DATA.
- * (A) = 10, IF BAD CONTROL WORD.
- * (ITMA) = 250 IF 3N+2 WRITE REQUIRED.
- * = 50 OTHERWISE.
- *
- * CALLS RCB.
- XBF7 LDN 14 SET EOF STATUS
- RAD MD
- LDN 1
- UJN XBFX RETURN
- XBF8 LDD MA SAVE OUT POINTER
- CWD CN
- RJM RCB READ CENTRAL BUFFER
- LDM BUF
- LMN 17
- ZJN XBF7 IF EOF WRITE
- LDD MA BACK UP FET POINTER
- CRD CN
- UJN XBF2 CONTROL WORD ERROR
- XBF9 LDD FM CHECK FOR NOISE
- LPN 37
- SBD BY
- SBN 1
- PJN XBF2 IF NOISE
- XBFD EQU *-1
- * LDN 0 (CTS)
- LDN 0
- XBF SUBR ENTRY/EXIT
- LDC F0050 SET FUNCTION
- XBFE EQU *-1
- * LDC F0250 CTS S FORMAT CODED WRITE
- STM //ITMA
- LDD BY
- XBFA ZJN XBF8 IF POSSIBLE 204 CODE EOF WRITE
- * PSN ALL OTHERS
- XBF1 LDD CM+2 ADJUST BYTE OCUNT
- SBN 12D
- MJN XBF3 IF LESS THAN ONE BYTE
- STD CM+2
- SOD BY
- PJN XBF1 IF VALID CONTROL WORD
- XBF2 LDN 10 INCORRECT WORD
- UJN XBFX RETURN
- * THE FOLLOWING CODE IS EXECUTED FOR ATS CONTROLLER S, L AND
- * F FORMAT 9 TRACK BINARY TAPES. IT IS ALSO EXECUTED FOR
- * CTS. FOR MTS CONTROLLER S, L, AND F FORMAT 9 TRACK BINARY
- * TAPES, THE AREA IS OVERLAID BY CODE AT .MXBO. FOR 7 TRACK
- * CODED/BINARY AND 9 TRACK CODED TAPES THE AREA IS OVERLAID
- * BY CODE AT .MXCO.
- .MXBA BSS 0
- XBF3 LDD BY
- LPN 1
- NJN XBF5 IF ODD BYTE COUNT
- LDD CM+2
- SBN 8D
- PJN XBF6 IF .GT. 8 UNUSED BITS
- XBF4 UJN XBF9 CHECK FOR NOISE
- XBF5 LDD CM+2
- SBN 4
- PJN XBF4 IF 4 OR MORE UNUSED BITS
- AOD BY INCREMENT BYTE COUNT
- XBF6 LDC 250 SET 3N+2 WRITE FUNCTION
- STM //ITMA
- UJN XBF4 CHECK FOR NOISE
- .XBFB BSS 0
- ERRNG BUFC-* OVERFLOWED INTO BUFFER
- LOC *O
- .XBFL EQU *-.XBFA
- MXB SPACE 4,10
- ** MXB - SET BYTE COUNT AND WRITE FUNCTION FOR
- * EXTERNAL 9 TRACK MTS TAPES.
- .MXBO BSS 0
- LOC .MXBA
- LDD BY SET BYTE COUNT MODULO 4
- LPN 3
- STD T0
- SHN 1
- ADD T0 BYTE COUNT * 3
- SHN 2 BYTE COUNT * 12
- SBD CM+2 MINUS UBC
- PJN MXB1 IF NOT UNDERFLOW
- ADN 48D
- MXB1 ADN 7 ROUND UP
- SHN -3+21 DIVIDE BY 8
- PJN MXB3 IF EVEN FRAME COUNT WRITE
- LDC 250 SET ODD FRAME COUNT WRITE
- STM //ITMA
- MXB2 LJM XBF9 CHECK FOR NOISE
- MXB3 LDD T0 CHECK FOR SPECIAL CASE
- LMN 1
- NJN MXB2 IF NOT ODD CASE
- AOD BY
- UJN MXB2 CHECK FOR NOISE
- ERRNG BUFC-*
- LOC *O
- .MXBL EQU *-.MXBO LENGTH OF MTS 9 TRACK CODE
- SPACE 4,10
- ** SET WRITE FUNCTION FOR 7 TRACK CODED/BINARY OR
- * 9/18 TRACK CODED TAPES.
- .MXCO BSS 0
- LOC .MXBA
- ADN 6
- MJN MXC1 IF EVEN CHARACTER COUNT
- LDC F0250 SET SHORT WRITE
- STM //ITMA
- MXC1 LJM XBF9 CHECK FOR NOISE
- ERRNG BUFC-* CODE OVERFLOW BUFFER
- LOC *O
- .MXCL EQU *-.MXCO 9 TRACK CODED OR 7 TRACK CODE LENGTH
- PRS SPACE 4,25
- ** PRS - PRESET.
- * THIS ROUTINE DOES CODE MODIFICATION FOR WRITE AND WRITE
- * LABEL FUNCTIONS.
- *
- * EXIT TO *PRSX* TO LOAD *CPP* OVERLAY, THEN RETURN AT
- * *PRS54* IF WRITE DATA AND NOT LONG BLOCK. WHEN
- * PRESET IS COMPLETE EXIT TO *WTF*.
- * TO *PRSX* TO LOAD WRITE LABEL OVERLAY IF WRITE
- * LABEL FUNCTION.
- * TO *PRSX* WITH (SC) = (SC)+1 TO LOAD LONG BLOCK
- * OVERLAY FOR F AND L FORMAT.
- * TO *PRSX* WITH (SC) = (SC)+2 TO LOAD LONG BLOCK
- * OVERLAY FOR LI FORMAT.
- * TO *RET3* IF NOT READY, NO WRITE ENABLE, OR ILLEGAL
- * CODED FORMAT ERROR.
- * TO *WTF4* IF OTHER ERROR.
- * (WP, EP+1) PLUS THE BLOCK NUMBER IN (BL,BL+1) IS THE
- * PHYSICAL BLOCK NUMBER IF CTS.
- *
- * USES CN, CN+4, T1, T8, CM - CM+4, T3 - T7.
- *
- * CALLS CNW, MCH, /PRESET/RBI, UAD.
- PRS BSS 0 ENTRY
- * VALIDATE WRITE ACCESS.
- LDN /MTX/WTB 200 BPI WRITE SUB-CODE
- STD T0
- LDM DNCV CHECK FOR 200 BPI WRITE
- LPN 70
- LMN /MTX/D02*10
- ZJN PRS7 IF 200 BPI WRITE
- AOD T0 WRITE ACCESS DISABLED SUB-CODE
- ERRNZ /MTX/NWR-/MTX/WTB-1
- LDD SP
- SHN 21-3
- MJN PRS7 IF READ ONLY ACCESS
- AOD T0 LABEL NOT EXPIRED SUB-CODE
- ERRNZ /MTX/LNE-/MTX/NWR-1
- RJM UAD
- ADN /MTX/UVSN
- CRD CM
- LDD CM+3
- SHN 21-1
- MJN PRS6 IF LABEL EXPIRED
- LDD SP
- SHN 21-10
- MJN PRS7 IF ENFORCING LABEL EXPIRATION
- PRS6 SOD T0 WRITE ACCESS DISABLED SUB-CODE
- ERRNZ /MTX/LNE-/MTX/NWR-1
- LDD DS
- SHN 21-7
- MJN PRS10 IF UNIT WRITE ENABLED
- SHN 0-0-21+7+22
- LPN 1
- ZJN PRS8 IF UNIT NOT READY
- PRS7 LDD T0 SET ERROR SUB-CODE
- STM ERSC
- LDN /MTX/NWE&/MTX/RDR NO WRITE ENABLE
- PRS8 LMN /MTX/RDR READY DROP
- LJM RET3 RETURN ERROR CODE
- * COMPLETE PRESET.
- PRS10 LDD HP
- SHN 21-7
- PJN PRS11 IF NOT CTS
- LDD BL
- ADD BL+1
- NJN PRS11 IF STARTING BLOCK ID ALREADY SAVED
- RJM /PRESET/RBI READ BLOCK ID
- AOM /PRESET/PICA LOCATE BLOCK NECESSARY IN ERROR RECOVERY
- LDM BIDW+1
- STD WP SAVE CURRENT BLOCK ID
- LDM BIDW+2
- STD EP+1
- PRS10.2 LDD FN
- LMN /MTX/WLA
- NJN PRS11 IF NOT WRITE LABEL
- LDD PB
- SHN -6
- LMN 1
- ZJN PRS12 IF WRITE TRAILER LABEL
- PRS11 RJM UAD SET FILE WRITTEN FLAG
- ADK /MTX/UVRI
- CRD T3
- ADN /MTX/UTMS-/MTX/UVRI
- CRD CM
- AOD T3+3 GET REEL NUMBER
- STD CM+2
- RJM UAD
- ADN /MTX/UTMS
- CWD CM
- PRS12 LDD FM SET TAPE FORMAT
- SHN -6
- STD T8
- LDD FN
- LMN /MTX/WTF
- NJN PRS13 IF NOT WRITE DATA
- LDD T8
- LMN /MTX/TFLI
- NJN PRS13 IF NOT LI FORMAT
- LDN 2
- RAD SC SET TO LOAD *WLI* OVERLAY
- LJM PRSX RETURN
- PRS13 LDC PRSB
- RJM MCH MODIFY CHANNELS
- LDN F0050 WRITE FUNCTION
- STM //ITMA
- LDD HP
- SHN 21-7
- PJP PRS15 IF NOT CTS
- ISTORE /PRESET/GPSC,(UJN /PRESET/GPS6.1) DO NOT SEND CONTINUE
- LDC WCTL-1
- STD T1
- PRS14 LDM .WCT,T1 REPLACE *WRT* WITH *WCT*
- STM WRTX,T1
- SOD T1
- PJN PRS14 IF MORE CODE TO MOVE
- LDC WCTK
- RJM MCH MODIFY CHANNEL INSTRUCTIONS
- ISTORE WTFB-1,(UJN WTF2) SKIP INITIATE TAPE MOTION
- LDC WCTC+1
- STM IBFE LOCATION TO STORE BLOCK LENGTH
- ISTORE WTFF,(ZJN WTF2) JUMP ADDRESS IF NO DROP OUT
- LDC WCTD+1
- STM PRSA ADDRESS TO SET MAXIMUM BLOCK SIZE
- LDC UJNI+2
- STM EOFB SKIP INITIATE TAPE MOTION
- LDC 6331 GENERAL STATUS BITS TO TEST
- STM /PRESET/WFEA
- LDC 201 GENERAL STATUS BITS THAT SHOULD BE SET
- STM /PRESET/WFEB
- UJN PRS16 CONTINUE PRESET
- PRS15 LDC 4635 GENERAL STATUS BITS TO TEST
- STM //WEOA
- LDC 201
- STM //WEOB GENERAL STATUS BITS THAT SHOULD BE SET
- PRS16 LDD FN CHECK SOFTWARE FUNCTION
- LMN /MTX/WTF
- ZJN PRS17 IF WRITE FUNCTION
- LDN /MTX/TFF PROCESS AS IF F FORMAT
- STD T8
- PRS17 LDD T8
- SBN /MTX/TFSI+1
- PJN PRS18 IF S/L/F FORMAT
- LJM PRS28 PRESET I/SI FORMAT
- * PRESET FOR S/L/F FORMAT.
- PRS18 LDN .XBFL-1 MOVE CODE FOR S/L/F FORMATS
- STD T1
- PRS19 LDM .XBFA,T1
- STM OVLB,T1
- SOD T1
- PJN PRS19 IF MORE CODE TO MOVE
- LDD MD CHECK MODE
- SHN 21-6
- PJN PRS22 IF NOT CODED
- PRS20 LDN .MXCL-1 TRANSFER 9/18 TRACK CODED OR 7 TRACK CODE
- STD T1
- PRS21 LDM .MXCO,T1
- STM .MXBA,T1
- SOD T1
- PJN PRS21 IF MORE CODE TO MOVE
- UJN PRS24 CONTINUE WITH CODED PROCESSING
- PRS22 LDD HP CHECK TRACK TYPE
- SHN 21-7
- MJN PRS24 IF CTS
- SHN 21-0-21+7
- PJN PRS20 IF 7 TRACK BINARY
- LDD HP CHECK CONTROLLER TYPE
- LPN 40
- ZJN PRS24 IF NOT MTS CONTROLLER
- LDN .MXBL-1 MOVE CODE FOR MTS 9 TRACK BINARY S/L/F
- STD T1
- PRS23 LDM .MXBO,T1
- STM .MXBA,T1
- SOD T1
- PJN PRS23 IF MORE CODE TO MOVE
- PRS24 LDC UJNI+2 PROCESS WRITE
- STM WTFD
- LDD HP
- SHN 21-7
- PJN PRS25 IF NOT CTS
- LDN 0
- STM WCTC
- STM XBFD NO NOISE FOR CTS
- LDC LDDI+BY
- STM WCTC+1
- LDC UJNI+2 SKIP *IBF* DURING COMMAND RETRY
- STM WCTH
- UJN PRS26 CONTINUE PRESET
- PRS25 LDN 0 SET NON I/SI FORMAT BYTE COUNT
- STM WRTB
- LDC LDDI+BY
- STM WRTB+1
- PRS26 LDD MD
- LPN 40
- NJN PRS27 IF 204 WRITE
- STM XBFA
- PRS27 LJM PRS36 CONTINUE PRESET
- * PRESET FOR I/SI FORMAT.
- PRS28 LDD HP
- SHN 21-7
- MJN PRS29 IF CTS
- SHN 21-0-21+7
- PJN PRS33 IF 7 TRACK
- PRS29 AOM IBFD
- LDD HP
- LPN 40
- ZJN PRS32 IF NOT MTS CONTROLLER
- LDD T8
- LMN /MTX/TFI
- ZJN PRS30 IF I FORMAT
- LDC LDDI&ADDI SET FOR SI FORMAT
- PRS30 LMC ADDI+BY
- STM SIFA
- PRS31 LDC SIF
- UJN PRS34 SET CALL TO SIF
- PRS32 LDD T8
- LMN /MTX/TFSI
- ZJN PRS31 IF SI FORMAT
- PRS33 LDC LDNI
- STM CNWL
- PRS34 STM CNWL+1
- LDD T8
- LMN /MTX/TFI
- ZJN PRS35 IF NOT SI FORMAT
- LDC 0 SET TO INITIALIZE SI BLOCK
- ORG *-1
- LOC IBFB
- ZJN IBF3 IF FULL BLOCK SI FORMAT
- LOC *O
- STM IBFB
- LDN 0
- STM IBFC
- STM IBFC+1
- LCN 4
- PRS35 ADN 4
- RAM WRTC+1 SET MAXIMUM BLOCK SIZE
- PRSA EQU *-1
- * RAM WCTD+1 (CTS)
- LDD MD
- LPN 40
- ZJN PRS36 IF NOT 204 WRITE
- LDN BY SET TO GET LEVEL NUMBER FROM TRAILER
- RAM IBFA
- LDC BUF
- STM IBFA+1
- PRS36 LDD MD
- LPN 60
- SHN -4
- STD T7
- ZJN PRS38 IF NOT CONTROL WORD
- LMC LDNI
- STM CNWA
- LPN 3
- RAM CNWI
- LDC LDDI+CN+3
- STM CNWF
- LDC BUFC
- STM RCBA
- LDD T8
- SBN /MTX/TFSI+1
- MJN PRS38 IF I OR SI FORMAT
- LDD T7
- LPN 2
- ZJN PRS37 IF NOT 204 WRITE
- LCN -12D+57D
- PRS37 ADC SBNI+57D
- STM CNWJ
- PRS38 LDD T7
- LPN 2
- ZJN PRS40 IF NOT 204 WRITE
- LDC STDI+BY
- STM CNWG
- LDD T8
- LMN /MTX/TFF
- NJN PRS39 IF NOT F FORMAT
- LDC LDDI+MD ENABLE MODE CHANGE
- STM CNWH
- PRS39 UJN PRS42 CONTINUE PRESET
- PRS40 LDD T7
- NJN PRS42 IF CONTROL WORD WRITE
- LDM CIOE SET TYPE OF WRITE OPERATION
- SHN -3
- SHN 2
- LMD MD
- LPN 14
- LMD MD
- STD MD
- LPN 14
- NJN PRS41 IF NOT PRU WRITE (004)
- * LDN 0
- STM WTFF
- LDC WTF8
- STM WTFG
- PRS41 LDD MD
- LPN 14
- LMN 4
- ZJN PRS42 IF WRITE (014)
- LDC UJNI+2 BYPASS *DRCM*
- STM WRTJ
- PRS42 LDD T8
- SBN /MTX/TFSI+1
- MJN PRS43 IF I OR SI FORMAT
- LDD T7
- LPN 2
- LMN 2
- NJN PRS43 IF NOT 204 WRITE
- STM CNWK
- PRS43 LDD T8
- LMN /MTX/TFS
- ZJN PRS44 IF S FORMAT
- LMN /MTX/TFL&/MTX/TFS
- NJN PRS46 IF NOT L FORMAT
- PRS44 LDD T7
- NJN PRS45 IF CONTROL WORD OPERATION
- * LDN 0
- STM WTFF SET FOR PRU OPERATION
- LDC WTF8
- STM WTFG
- LDC STDI+CM+4
- STM CNWC
- LDM LNUM SET UBC
- LPN 77
- RAM CNWB
- LDC SBNI+57D
- STM CNWJ
- LDC NJNI-PJNI
- RAM CNWD
- PRS45 UJN PRS47 CONTINUE PRESET
- PRS46 LDD T7
- NJN PRS47 IF CONTROL WORD WRITE
- LDC RADI+CM+4
- STM CNWE
- PRS47 LDM LNUM SET LEVEL NUMBER
- SHN -10
- STM LNUM
- LDD FN
- LMN /MTX/WTF
- NJN PRS48 IF NOT WRITE DATA
- LDD MD
- LPN 14
- LMN 14
- PRS48 NJN PRS50 IF NOT EOF WRITE
- LDD T8
- SBN /MTX/TFSI+1
- PJN PRS49 IF NOT I/SI FORMAT
- LDC EOF SET TO WRITE EOF
- STM WTFH
- LDM LNUM
- LMN 17
- NJN PRS49 IF NOT LEVEL 17
- STM LNUM DO NOT WRITE DOUBLE EOF
- PRS49 LDD MD CLEAR EOR/EOF FLAG THIS OPERATION
- LPC 7377
- STD MD
- LDD UP CHECK LAST OPERATION EOR/EOF
- LPN 30
- LMN 20
- ZJN PRS50 IF LAST OPERATION INCOMPLETE WRITE
- LDM CIOE
- SHN 21-12
- MJN PRS50 IF DATA IN BUFFER
- LDC 400 SET EOR/EOF FLAG THIS OPERATION
- RAD MD
- PRS50 LDD UP
- SCN 24 CLEAR BLANK TAPE FLAG
- LMN 20 SET LAST OPERATION WRITE FLAG
- STD UP
- LDC PRSC SET UP FOR INSTRUCTION MODIFICATION
- STD CN
- LDN 3 SET TO RETURN OUT POINTER
- STD CN+4
- LDC /SRU/ITRW*100 SET SRU INCREMENT
- STM //CECA
- LDD OV
- ZJN PRS52 IF NOT POSSIBLE LONG BLOCKS
- LDD T8
- LMN /MTX/TFL
- ZJN PRS51 IF L FORMAT
- LMN /MTX/TFF&/MTX/TFL
- NJN PRS52 IF NOT F FORMAT
- PRS51 LDD FN
- LMN /MTX/WTF
- NJN PRS53 IF NOT WRITE
- AOD SC SET TO LOAD LONG BLOCK OVERLAY
- PRS52 LDD FN
- LMN /MTX/WTF
- NJN PRS53 IF NOT WRITE DATA
- LDC PRS54 SET TO RETURN HERE IF NOT LONG BLOCKS
- STD BT
- PRS53 LJM PRSX RETURN
- * RETURN HERE AFTER ALL ROUTINES LOADED IF WRITE DATA.
- PRS54 LDD HP
- SHN 21-7
- PJN PRS55 IF NOT CTS
- LDD CN+3
- STM OPTU SAVE OUT POINTER FOR COMMAND RETRY
- LDD CN+4
- STM OPTL
- PRS55 RJM CNW CHECK FIRST WRITE
- ZJN PRS56 IF WRITE OK
- LJM WTF4 PROCESS ERROR CONDITION
- PRS56 LDD HP
- SHN 21-7
- PJN PRS59 IF NOT CTS
- LDD MD
- SHN 21-6
- PJN PRS58 IF NOT CODED
- LDD BY
- LMN LABL
- ZJN PRS57 IF CORRECT LENGTH FOR LABEL
- LDN /MTX/SCI CODED I/O NOT SUPPORTED
- LJM RET3 RETURN ERROR CODE
- PRS57 LDC F0250
- STM ITMA SHORT WRITE
- STM XBFE
- LDC LDNI+CCW/10000
- STM WCTA DO CODE CONVERSION
- LDC LDNI+CLBL
- STM WCTB LENGTH TO WRITE
- PRS58 UJN PRS61 SET BLOCKS WRITTEN FLAG
- PRS59 SHN 21-5-21+7
- PJN PRS60 IF NOT MTS UNIT
- LDC UJNI-NJNI
- RAM WRTF
- PRS60 LDM DLYA
- LPN 14
- ZJN PRS61 IF 1X PPU SPEED
- LPN 4
- ZJN PRS61 IF 2X PPU SPEED
- LDC ITM ENABLE MOTION AHEAD
- STM WTFA+1
- LDC RCB
- STM WTFB
- PRS61 LDC 4000 SET BLOCKS WRITTEN FLAG
- STD BT
- LJM WTF INITIATE WRITE
- PRSB CHTB
- PRSC TSAD
- WCT SPACE 4,15
- ** WCT - WRITE CARTRIDGE TAPE.
- *
- * THIS ROUTINE OVERLAYS THE FIRST PART OF *WRT* FOR CTS.
- * THE LENGTH OF THIS ROUTINE MUST BE THE SAME AS THE LENGTH
- * OF THE FIRST PART OF *WRT*.
- *
- * ENTRY (BY) = BYTES TO TRANSFER.
- *
- * EXIT (CN+3, CN+4) = OUT POINTER.
- * TO */WLB/ODAB* IF COMMAND RETRY FOR LONG BLOCKS.
- *
- * USES CM - CM+4, CN - CN+2.
- *
- * CALLS CNW, *CWP*, IBF, ITM, LOV, RCB, /PRESET/WFE.
- *
- * MACROS CALL.
- .WCT BSS 0
- LOC WRTX
- WCT SUBR ENTRY/EXIT
- WCT1 UJN WCT2 WRITE DATA, NOT LONG BLOCKS
- WCTA EQU *-1
- * LDN CCW/10000 (CODE CONVERSION OVERLAY NUMBER)
- * UJN WCT3 (LONG BLOCKS)
- RJM LOV LOAD OVERLAY AND DO CODE CONVERSION
- WCT2 RJM ITM
- LDD BY
- WCTB EQU *-1
- * LDN CLBL (CTS LABEL LENGTH)
- OAM BUF,CH OUTPUT BLOCK
- FJM *,CH
- * DELAY 10 MICROSECONDS TO PREVENT A HARDWARE ERROR IN THE
- * CCC. THE DISCONNECT WOULD SOMETIMES CAUSE THE LAST BYTE TO
- * BE LOST.
- LDN 20
- SBN 1
- NJN *-1
- DCN CH+40
- WCT3 LDD UP
- SCN 10 CLEAR EOR/EOF LAST BLOCK FLAG
- STD UP
- LDD MD
- LPC 7377 CLEAR EOR/EOF THIS OPERATION FLAG
- STD MD
- LDC * BLOCK LENGTH (I, SI FORMAT)
- WCTC EQU *-2
- * PSN (NOT I, SI FORMAT)
- * LDD BY (NOT I, SI FORMAT)
- LMC 5000
- WCTD EQU *-2
- * LMC 5004 (I FORMAT)
- * LDN 0 (WRITE LABEL)
- * LDN 0 (WRITE LABEL)
- ZJN WCT4 IF NOT EOR/EOF WRITTEN
- LDN 10
- RAD UP SET EOR/EOF FLAGS
- LDC 400
- RAD MD
- WCT4 LDD MA
- CWD CN SAVE OLD OUT POINTER
- RJM CNW CHECK NEXT WRITE
- WCTE EQU *-2
- * UJN WCT5 (WRITE LABEL)
- LDM WTFE
- ADD DF
- NJN WCT5 IF NO MORE DATA OR DROP OUT SET
- WCTF EQU *-1
- * UJN WCT5 (LONG BLOCKS)
- RJM RCB READ NEXT BLOCK FROM CENTRAL BUFFER
- WCT5 RJM /PRESET/WFE WAIT FOR END OF OPERATION
- PJP WCT8 IF NOT COMMAND RETRY
- LDM OPTU RESET OUT POINTER
- WCTG EQU *-2
- * UJN WCT7 (WRITE LABELS)
- STD CN+3
- LDM OPTL
- STD CN+4
- LDD MD
- LPC 7377 CLEAR EOR/EOF THIS OPERATION FLAG
- STD MD
- RJM CNW CHECK NEXT WRITE
- LDM WCT
- LMC EOFC
- NJN WCT6 IF NOT CALLED FROM *EOF*
- STD T6
- STD BY SET TO WRITE EOF
- RJM IBF
- UJN WCT7 ISSUE THE CONTINUE FUNCTION
- * FOR LONG BLOCKS, THE FOLLOWING CODE IS OVERLAYED WITH
- * */WLB/.WCT*.
- * LDN F0002 (LONG BLOCKS)
- * STM ITMA (LONG BLOCKS)
- * LJM /WLB/ODAB (LONG BLOCKS)
- WCT6 RJM RCB READ CENTRAL BUFFER
- RJM IBF PROCESS I/SI FORMAT
- WCTH EQU *-2
- * UJN *+2 (NOT I/SI FORMAT)
- WCT7 LDN F0002
- STM ITMA CONTINUE IS THE NEXT FUNCTION
- LJM WCT1 RETRY THE WRITE
- WCTI EQU *-1
- * LJM WCT2 (WRITE LABEL)
- WCT8 ZJN WCT9 IF NO ERROR
- LDN /MTX/STE STATUS ERROR
- WCT9 STD EC
- ADD EI
- ZJN WCT10 IF NO ERROR OR NO RECOVERED ERROR
- LDD MA
- CRD CN RESET TO OLD OUT POINTER
- CALL CWP
- * RETURN HERE IF END OF TAPE OR RECOVERED ERROR.
- LDM WTFE
- ADD DF
- NJN WCT10 IF NO MORE DATA OR DROP OUT
- WCTJ EQU *-1
- * UJN WCT10 (LONG BLOCKS)
- * UJN WRT7 (WRITE LABEL)
- LDM WRTK
- LMC WRTX
- NJN WCT10 IF END OF TAPE
- RJM RCB READ CENTRAL BUFFER
- WCT10 LDD MA
- WCTM EQU *-1
- * UJN WRT7 (WRITE LABEL)
- CRD CM
- LDD CM+3
- STM OPTU SAVE OUT POINTER FOR COMMAND RETRY
- LDD CM+4
- STM OPTL
- WCTL EQU *-WCTX LENGTH OF *WCT*
- ERRNZ WRT5.1-* ADJUST *BSS* BEFORE *WRT5.1*
- LOC *O
- WCTK CHTB CHANNEL TABLE
- SMA SPACE 4,10
- OVERLAY (WRITE LONG BLOCK PROCESSOR.),(BUFC+12),,WLB
- .IM SET 1 SET FOR ADDRESS MODIFICATION ON ERRORS
- * LOCAL TO OVERLAY DEFINITIONS.
- NC EQU PA NUMBER OF CHUNKS
- BC EQU PB BYTE COUNT LAST CHUNK
- ODA SPACE 4,10
- ** ODA - OUTPUT DATA.
- *
- * CALLS ADP, CRA, ITM, OPA, OPD, OPI, OPL, RDA, SRQ.
- *
- * MACROS CHTE.
- ODA SUBR ENTRY/EXIT
- RJM //ITM INITIATE TAPE MOTION
- * UJN *+2 (ANY GCR UNIT AT 1X PPU SPEED
- * OR 200 IPS GCR UNIT AT 2X SPEED)
- * UJN *+2 (CTS)
- ODAA EQU *-1
- ODAB LDN 0 ALLOW FOR CONTROL WORD
- * LDN 1 (204/264 WRITE)
- RJM ADP
- LDN 0 PRESET CHUNKS OUTPUT COUNT
- STD CM+7
- LDC LBBY
- STD BY
- LDM OPAB SET FIRST CHUNK FLAGS
- * LDM OPIB (CYBER 180)
- ODAC EQU *-1
- STM OPAA
- * STM OPIA (CYBER 180)
- * STM OPDA (MTS)
- ODAD EQU *-1
- LDN PSNI ENABLE WAIT FOR *1LT*
- STM OPLA
- * STM OPEA (CYBER 180)
- * STM ODAF (MTS)
- ODAF EQU *-1
- LDD NC
- ZJN ODA5 IF *1LT* NOT NEEDED
- SBN 2
- PJN ODA1 IF *1LT* NEEDED
- LDD BC
- ZJN ODA4 IF *1LT* NOT NEEDED
- ADC LBBY-LCKS SET BYTE COUNT FOR CHECKSUM
- MJN ODA2 IF .LT. L TAPE SIZE
- ODA1 LDN 0
- ODA2 ADC LCKS
- STM RDAB
- LDC LDNI+1
- STM ODAL SET *1LT* CALLED FLAG
- LDN 0 SET UP POINTERS FOR *1LT*
- RJM ADP
- ODAG LDN 1 SEND REQUEST TO *1LT*
- * UJN ODA3 (ANY GCR UNIT AT 1X PPU SPEED
- * OR 200 IPS GCR UNIT AT 2X SPEED)
- * UJN ODA3 (CTS)
- RJM SRQ
- ODA3 UJN ODA8 OUTPUT DATA
- ODA4 LDC LBBY
- STD BC
- LDC /MTX/LBWD
- STM .WC
- ODA5 LDM OPLB SET *1LT* NOT NEEDED FLAGS
- * LDM OPEB (CYBER 180)
- ODAH EQU *-1
- STM OPLA
- * STM OPEA (CYBER 180)
- ODAI EQU *-1
- LDD BC
- STM RDAB SET BYTE COUNT FOR CHECKSUM
- STD BY
- LJM ODA11 SET UP TO READ NEXT BLOCK
- ODA6 LDN 2 INCREMENT CHUNK COUNT
- RAD CM+7
- SBD NC
- PJN ODA9 IF NO MORE FULL CHUNKS
- ADN 1
- NJN ODA7 IF NOT 1 CHUNK LEFT
- LDD BC
- ZJN ODA9 IF ZERO REMAINDER
- ODA7 LDC /MTX/LBWD SKIP OVER DATA *1LT* OUTPUT
- RJM ADP
- ODA8 LDC /MTX/LBWD SET UP TO READ NEXT DATA CHUNK
- RJM RDA READ DATA
- RJM OPD OUTPUT DATA
- * RJM OPA (ATS NON-CYBER 180)
- * RJM OPI (CYBER 180)
- ODAJ EQU *-1
- ZJN ODA6 IF FULL BLOCK OUTPUT
- UJP ODA14 STORE BYTES NOT WRITTEN
- ODA9 ZJN ODA10 IF TRANSFER NOT COMPLETE FOR *1MT*
- LDM .WC ADVANCE POINTER OVER *1LT,S* CHUNK
- RJM ADP
- UJN ODA15 CHECK IF *1LT* WAS CALLED
- ODA10 AOD CM+7 COUNT CHUNK
- LDC /MTX/LBWD SKIP OVER DATA *1LT* OUTPUT
- RJM ADP
- LDD BC
- ZJN ODA12 IF POSSIBLE OUTPUT COMPLETE
- STD BY
- ODA11 LDM .WC SET UP TO READ UP NEXT BLOCK
- UJN ODA13 READ DATA
- ODA12 LDD NC
- LPN 1
- ZJN ODA15 IF OUTPUT COMPLETE
- LDC /MTX/LBWD
- ODA13 RJM RDA READ DATA
- RJM OPD OUTPUT DATA
- * RJM OPL (ATS NON-CYBER 180 - OUTPUT LAST CHUNK)
- * RJM OPE (CYBER 180 - OUTPUT LAST CHUNK)
- ODAK EQU *-1
- FJM *,CH
- NJN ODA14 IF INCOMPLETE TRANSFER
- * A 10 MICROSECOND DELAY MUST BE DONE TO PREVENT POSSIBLE LOSS
- * OF THE LAST BYTE OF THE TRANSFER BY THE CCC FOR CTS.
- LDN 20
- SBN 1
- NJN *-1
- DCN CH+40
- ODA14 STM /WRITE/BYRM
- ODA15 LDN 0
- ODAL EQU *-1
- ZJN ODA17 IF *1LT* NOT CALLED
- SOM ODAL CLEAR *1LT* CALLED FLAG
- ODA16 RJM CRA CHECK REQUEST ACCEPTANCE FROM *1LT*
- LMN 2
- NJN ODA16 IF NOT ACCEPT
- STD CM ACKNOWLEDGE *1LT*
- LDM CPDA
- ADN 2
- CWD CM
- ODA17 LDD CM+7
- ZJN ODA18 IF NO FULL CHUNKS OUTPUT
- LCN 0 SET TO NOT CONTROL BACKSPACE
- STM /WRITE/BYWR
- ODA18 LDN 0 SKIP TRAILER CONTROL WORD IF PRESENT
- ODAM EQU *-1
- * LDN 1 (204 WRITE)
- RJM ADP
- LJM ODAX RETURN
- TITLE SUBROUTINES.
- ADP SPACE 4,15
- ** ADP - ADVANCE POINTER.
- *
- * ENTRY (CN+3 - CN+4) = OUT POINTER.
- * (A) = WORDS TO INCREMENT OUT BY.
- *
- * EXIT (T4 - T5) = STARTING OUT POINTER.
- * (CN+3 - CN+4) = UPDATED OUT POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * MACROS SADT.
- ADP SUBR ENTRY/EXIT
- STD T6
- LDD CN+3 SAVE OUT
- STD T4
- LDD CN+4
- STD T5
- LDN 0 PRESET SECOND PART WORD COUNT
- STD T7
- LDD T6 UPDATE OUT
- RAD CN+4
- SHN -14
- RAD CN+3
- SHN 14
- LMD CN+4
- SADT .LM,C
- ADC -* (-LIMIT)
- MJN ADPX IF NO WRAP AROUND
- STD T7 SET SECOND PART WORD COUNT
- SADT .FT
- ADC * (FIRST)
- STD CN+4
- SHN -14
- STD CN+3
- LDD T6 RESET FIRST PART WORD COUNT
- SBD T7
- STD T6
- UJN ADPX RETURN
- CNL SPACE 4,10
- ** CNL - CHECK NEXT WRITE LONG BLOCKS.
- *
- * ENTRY (CN+3 - CN+4) = OUT POINTER.
- *
- * EXIT SEE /WRITE/CNW.
- *
- * CALLS /WRITE/COB, /WRITE/XBF.
- *
- * MACROS SADT.
- CNL17 LDN 2 SET NOT ENOUGH DATA
- CNL18 LJM /WRITE/CNW10 EXIT WITH NEXT WRITE STATUS
- CNL BSS 0 ENTRY
- LDN ZERL PRESET CONTROL WORD
- CRD CM
- RJM /WRITE/COB CHECK OUTPUT BUFFER
- ZJN CNL17 IF NO DATA
- CNLA UJN CNL1 PROCESS CONTROL WORD WRITE
- * STD CM+4 (NOT 204/264 WRITE)
- SHN -14
- STD CM+3
- CNLB LDN 0 SET UBC
- STD CM+2
- UJN CNL2 CALCULATE NUMBER OF CHUNKS
- CNL1 LDD CN+3 READ CONTROL WORD
- SHN 6
- ADD RA
- SHN 6
- ADD CN+4
- CRD CM
- CNL2 LDC /MTX/LBWD WORDS PER CHUNK
- CNLC EQU *-1
- * LDC LBBY BYTES PER CHUNK (204 WRITE)
- STD T1
- LDN 0
- STD NC
- * DETERMINE NUMBER OF CHUNKS AND REMAINDER.
- CNL3 LDD CM+4
- SBD T1
- STD CM+4
- PJN CNL4 IF NO UNDERFLOW
- AOD CM+4
- SOD CM+3
- MJN CNL5 IF UNDERFLOW
- CNL4 AOD NC COUNT CHUNK
- UJN CNL3 LOOP
- CNL5 LDD T1
- RAD CM+4
- STD BY PRESET BYTES AND WORDS IN LAST BLOCK
- STD BC
- STM .WC
- CNLD UJN CNL6 (204 WRITE)
- * LDD CM+4 BYTES = 5 * CM WORDS (NOT 204 WRITE)
- SHN 2
- RAD BY
- UJN CNL7 CHECK FOR LEGAL BLOCK SIZE
- CNL6 LDD CM+4 ROUND UP BYTES
- ADN 4
- STD T2
- SHN 1 13*BYTES
- ADD T2
- SHN 2
- ADD T2
- SHN 14 (-6) (13*BYTES)/64
- STD T0
- SHN 6+2 4*13*BYTES (52*BYTES)
- SBD T2 51*BYTES
- ADD T0 (51*BYTES)+((13*BYTES)/64)
- SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
- STM .WC
- * CHECK IF LEGAL BLOCK SIZE.
- CNL7 LDD NC
- STD T1
- LDM .WC
- STD T7
- LDN 0
- STD T6
- CNL8 SOD T1
- MJN CNL9 IF END OF CHUNKS
- LDC /MTX/LBWD
- RAD T7
- SHN -14
- RAD T6
- UJN CNL8 LOOP
- CNL9 LDD T6
- SHN 14
- LMD T7
- SADT .BS,C,1
- ADC -*
- PJN CNL11 IF BLOCK TOO LARGE
- LDD FM
- SHN -6
- LMN /MTX/TFF
- NJN CNL12 IF NOT F FORMAT
- LDD MD
- LMD CM
- SHN -4
- LPN 4
- ZJN CNL12 IF NO MODE CHANGE
- CNL10 LJM CNL18 EXIT WITH NEXT WRITE STATUS
- CNL11 LDN 10 SET BUFFER CONTROL WORD ERROR
- UJN CNL10 EXIT WITH NEXT WRITE STATUS
- CNL12 LDD MD CHECK IF ENOUGH DATA
- LPN 60
- SHN -4
- RAD T7
- SHN -14
- RAD T6
- RJM /WRITE/COB CHECK OUTPUT BUFFER
- SHN 6
- SBD T6
- SHN 14
- SBD T7
- PJN CNL13 IF ENOUGH DATA IN OUTPUT BUFFER
- LJM CNL17 SET NOT ENOUGH DATA
- CNL13 LDM /WRITE/CNWJ
- LPN 77
- LMC -0
- ADD CM+2
- PJP CNL11 IF INCORRECT UBC
- LDN 2 PRESET FOR POSSIBLE 204 EOF WRITE
- STD T6
- LDD NC
- ZJN CNL14 IF ONLY PARTIAL CHUNK
- LDD HN SET TO PREVENT NOISE BLOCK ERROR
- RAD BY
- CNL14 RJM /WRITE/XBF
- STD CM+4
- LDD NC
- ZJN CNL15 IF ONLY PARTIAL CHUNK
- LDC -100
- CNL15 ADD BY
- STD BC
- PJN CNL16 IF NO UNDERFLOW IN BYTE COUNT
- ADC LBBY RESET BYTE COUNT
- STD BC
- LDC /MTX/LBWD SET WORD COUNT IN LAST CHUNK
- STM .WC
- SOD NC DECREMENT CHUNK COUNT
- CNL16 LDD CM+4
- LJM CNL18 EXIT WITH NEXT WRITE STATUS
- CPD SPACE 4,10
- ** CPD - CHECK PP (1LT) DROP OUT.
- *
- * ENTRY (CPDA) = PP INPUT REGISTER ADDRESS.
- *
- * EXIT (A) = 0, IF *1LT* STILL AROUND.
- *
- * USES CM - CM+4.
- *
- * MACROS CHTE.
- CPD SUBR ENTRY/EXIT
- LDC * (ADDRESS OF *1LT* INPUT REGISTER)
- CPDA EQU *-1
- CRD CM
- LDD CM+1
- SCN 77
- SHN 6
- LMD CM
- LMC 3RT1L
- ZJN CPD1 IF *1LT*
- SHN 14
- LMN 1R1
- NJN CPDX IF NOT *1LT* LOADING
- CPD1 LDD CM+3 CHECK FOR CORRECT CHANNEL
- CHTE *
- LMN CH
- LPN 77
- UJN CPDX RETURN
- CRA SPACE 4,10
- ** CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
- *
- * EXIT (A) = REQUEST BYTE.
- * (CM - CM+4) = REQUEST/RETURN WORD.
- CRA SUBR ENTRY/EXIT
- LDM CPDA
- ADN 2
- CRD CM
- LDD CM
- UJN CRAX RETURN
- ITS SPACE 4,10
- ** ITS - INDICATE *1MT* TRANSFER STARTED.
- *
- * ENTRY (A) = BYTE COUNT.
- *
- * EXIT (A) = BYTE COUNT.
- ITS SUBR ENTRY/EXIT
- STD T0 SAVE BYTE COUNT
- LDM CPDA INDICATE *1MT* TRANSFER STARTED
- ADN 3
- CWD ON
- LDD T0 RESTORE (A)
- UJN ITSX RETURN
- SPACE 4,10
- .OPAA BSS 0 START OF WRITE ROUTINE OVERLAYS
- OPE SPACE 4,10
- ** OPE - OUTPUT ENDING DATA FROM CYBER 180 IOU.
- *
- * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
- *
- * EXIT (A) = BYTES LEFT.
- *
- * CALLS WTS.
- OPE SUBR ENTRY/EXIT
- OPEA UJN OPE2 OUTPUT DATA
- * PSN (*1LT* USED)
- RJM WTS WAIT FOR *1LT* TRANSFER TO START
- OPE1 IJM OPEX,CH IF *1LT* WROTE PARTIAL BLOCK
- SCF OPE1,CH WAIT FOR *1LT* TO CLEAR CHANNEL FLAG
- OPE2 OAM BUFB,CH OUTPUT CHUNK
- UJN OPEX RETURN
- OPEB BSS 0
- LOC OPEA
- UJN OPE2 OUTPUT DATA
- LOC *O
- OPI SPACE 4,10
- ** OPI - OUTPUT DATA FROM CYBER 180 IOU.
- *
- * IF THERE ARE MULTIPLE CHUNKS IN THE BLOCK, THIS ROUTINE
- * IS USED FOR ALL BUT THE LAST CHUNK. *OPE* IS USED FOR THE
- * LAST CHUNK.
- *
- * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
- *
- * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
- *
- * CALLS ITS, WTS.
- OPI SUBR ENTRY/EXIT
- OPIA UJN OPI2 FIRST CHUNK
- * PSN (NOT FIRST CHUNK)
- RJM WTS WAIT FOR *1LT* TRANSFER TO START
- OPI1 IJM OPIX,CH IF *1LT* WROTE ONLY PARTIAL CHUNK
- SCF OPI1,CH WAIT FOR *1LT* TO CLEAR CHANNEL FLAG
- RJM ITS INDICATE *1MT* TRANSFER STARTED
- OPI2 OAM BUFB,CH OUTPUT DATA
- NJN OPIX IF INCOMPLETE TRANSFER
- CCF *,CH SIGNAL *1LT* TO START OUTPUT
- STM OPIA SET UP FOR SUBSEQUENT CHUNKS
- UJN OPIX RETURN
- OPIB BSS 0
- LOC OPIA
- UJN OPI2 OUTPUT NEXT BLOCK
- LOC *O
- .OPALC EQU *-.OPAA END OF OVERLAID AREA
- RDA SPACE 4,15
- ** RDA - READ DATA FROM CENTRAL.
- *
- * ENTRY (A) = WORDS TO READ.
- * (T4 - T5) = OUT POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * EXIT (/WRITE/BYWR) = BY.
- *
- * CALLS ADP, /WRITE/CKS, ITM, SRQ.
- *
- * MACROS SADT.
- RDA SUBR ENTRY/EXIT
- RJM ADP ADVANCE POINTERS
- LDD T6
- ZJN RDAX IF NO FIRST PART
- SHN 2
- ADD T6
- ADC BUFB
- STM RDAA
- LDD T4 READ FIRST PART
- SHN 6
- ADD RA
- SHN 6
- ADD T5
- CRM BUFB,T6
- LDD T7
- ZJN RDA1 IF NO SECOND PART
- SADT .FT,,,A
- LDC * READ SECOND PART
- CRM *,T7
- RDAA EQU *-1
- RDA1 LDC 0 SET BYTE COUNT FOR CHECKSUM
- RDAB EQU *-1
- ZJN RDA3 IF NOT FIRST CHUNK
- RDAC UJN RDA2 CHECKSUM DATA
- * RJM ITM (ATS GCR UNIT, 1X PPU SPEED OR 200 IPS)
- * RJM ITM (CTS)
- CON ITM
- LDM ODAL
- LPN 77
- ZJN RDA2 IF *1LT* NOT NEEDED
- LDN 1 SEND REQUEST TO *1LT*
- RJM SRQ
- RDA2 LDM UBWB USE HARDWARE CHECKSUM
- STD LG+1
- NJN RDA2.1 IF NON ZERO CHECKSUM
- AOD LG+1
- RDA2.1 LDN 0 CLEAR FIRST CHUNK FLAG
- STM RDAB
- RDA3 LDD BY
- STM /WRITE/BYWR SET BYTES TO WRITE
- LJM RDAX RETURN
- SRQ SPACE 4,10
- ** SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
- *
- * ENTRY (A) = REQUEST CODE.
- * (T4 - T5) = POINTER.
- * (BC) = BYTE COUNT OF LAST CHUNK.
- * (NC) = NUMBER OF CHUNKS.
- *
- * USES T1, T2, T3, CM - CM+4.
- *
- * CALLS CPD, CRA, HNG.
- SRQ SUBR ENTRY/EXIT
- STD T1
- SRQA UJN SRQ1 NO CHANNEL FLAG
- * PSN (CYBER 180 IOU)
- SCF *+2,CH SET CHANNEL FLAG
- LDM CPDA INDICATE *1MT* TRANSFER STARTED
- ADN 3
- CWD ON
- SRQ1 RJM CRA CHECK *1LT* ACCEPT
- NJN SRQ2 IF *1LT* OUT OF SYNC
- LDM CPDA CHECK *1LT* FUNCTION
- ADN 1
- CRD CM
- LDD CM
- LMN PRLM
- ZJN SRQ3 IF *1LT* PAUSING
- LDD BC SET BYTE COUNT
- STD T2
- LDD NC SET NUMBER OF CHUNKS
- STD T3
- LDM CPDA ENTER REQUEST
- ADN 2
- CWD T1
- RJM CPD CHECK IF PP DROPPED OUT
- NJN SRQ2 IF *1LT* MISSING
- LJM SRQX RETURN
- SRQ2 RJM HNG HANG PP
- SRQ3 LJM RET2 REQUEUE REQUEST
- WTS SPACE 4,10
- ** WTS - WAIT FOR *1LT* TRANSFER TO START.
- *
- * ENTRY (A) = BYTE COUNT.
- *
- * EXIT (A) = BYTE COUNT.
- *
- * USES CM - CM+4.
- WTS3 LDD T0 RESTORE (A)
- WTS SUBR ENTRY/EXIT
- STD T0 SAVE BYTE COUNT
- WTS1 LDM CPDA CHECK *1MT*/*1LT* INTERLOCK
- ADN 3
- CRD CM
- LDD CM
- ZJN WTS3 IF *1LT* TRANSFER STARTED
- LDN 24 DELAY 10 MICROSECONDS
- WTS2 SBN 1
- NJN WTS2 IF NOT DONE
- UJN WTS1 CHECK INTERLOCK
- SPACE 4,10
- .WC CON 0 WORD COUNT OF LAST CHUNK
- SPACE 4,10
- BUFFER BUFB
- CALL SPACE 4,10
- .IM SET 0 DISABLE ADDRESS MODIFICATION ON ERRORS
- ** *1LT* CALL BLOCK.
- *
- *T 18/ 1LT,6/ CP,6/ HP,6/ 1,1/ CF,11/ CHANNEL,12/ PPIA
- *T, 12/ -0,24/ FIRST,24/ LIMIT
- CALL VFD 18/3R1LT,6/0
- CON 1 WRITE
- CHTE *
- CON CH CHANNEL
- CON 0 *1MT* INPUT REGISTER ADDRESS
- CON -0
- SADT .FT,,,,SE
- CON 0,0
- SADT .LM,,,,SE
- CON 0,0
- TITLE PRESET.
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * EXIT TO */WRITE/WTF1* TO WRITE BLOCK.
- * TO */WRITE/WTF4* IF ERROR FROM *CNW*.
- * TO *RET2* TO REQUEUE IF *1LT* NOT ASSIGNED.
- *
- * CALLS CEC, *CPP*, /WRITE/CNW, CPD, MCH, SRC.
- *
- * MACROS MONITOR, PAUSE.
- PRS LDC PRSB MODIFY CHANNELS IN RESIDENT
- RJM MCH
- LDN 0
- STD T3 CLEAR TAPE OUTPUT TYPE
- LDK MABL CHECK MAINFRAME TYPE
- CRD CM
- LDD CM+1
- SHN -6
- LPN 41
- LMN 1
- ZJN PRS1 IF CYBER 180
- AOD T3
- LDD HP
- LPN 60
- SHN 6
- RAM CALL+3
- SHN 21-12
- PJN PRS1 IF MTS CONTROLLER
- AOD T3
- PRS1 RJM SRC SET RESIDENT CONTROLLER ROUTINE
- LDC LJMI SET CALL FOR CHECK NEXT WRITE
- STM /WRITE/CNWA
- LDC CNL
- STM /WRITE/CNWA+1
- LDD HP
- SHN 21-7
- PJN PRS1.2 IF NOT CTS
- LDN .WCTL-1
- STD T1 LENGTH OF CODE TO MOVE
- PRS1.1 LDM .WCT,T1
- STM /WRITE/WCT6,T1 MOVE COMMAND RETRY CODE
- SOD T1
- PJN PRS1.1 IF MORE CODE TO MOVE
- ISTORE /WRITE/WCTA,(UJN /WRITE/WCT3)
- ISTORE /WRITE/WCTF,(UJN /WRITE/WCT5)
- ISTORE /WRITE/WCTJ,(UJN /WRITE/WCT10) SKIP READ CM BUFFER
- UJN PRS1.3 CONTINUE PRESET
- PRS1.2 LDM PRSC
- STM /WRITE/WRTA
- LDM PRSD
- STM /WRITE/WRTE
- LDM PRSE
- STM /WRITE/WRTG
- PRS1.3 LDM PRSF
- STM /WRITE/WTFA
- LDC UJNI+2
- STM /WRITE/WTFD
- LDC ODA
- STM /WRITE/WTFC
- LDM /WRITE/CNWB SET UBC
- LPN 77
- RAM CNLB
- LDD MD
- LPN 60
- ZJN PRS2 IF NOT CONTROL WORD OPERATION
- AOM ODAB
- LDD MD
- LPN 40
- ZJN PRS3 IF NOT 204 WRITE
- LDC LBBY SET BLOCK LENGTH
- STM CNLC
- AOM ODAM
- UJN PRS4 CONTINUE PRESET
- PRS2 LDC STDI+CM+4 MODIFY INSTRUCTIONS FOR NON-CONTROL WORD
- STM CNLA
- PRS3 LDC LDDI+CM+4
- STM CNLD
- PRS4 LDC PRSA SET FOR INSTRUCTION MODIFICATION
- STD CN
- LDC PRS5 SET TO RETURN CONTROL HERE AFTER LOAD
- STD BT
- LJM PRSX RETURN
- * RETURN HERE AFTER ALL ROUTINES LOADED.
- * BUILD CALL TO *1LT*.
- PRS5 LDD HP
- SHN 21-7
- PJN PRS5.1 IF NOT CTS
- ISTORE /WRITE/WTFF,(ZJN /WRITE/WTF1)
- LDD CN+3
- STM /WRITE/OPTU SAVE OUT POINTER FOR COMMAND RETRY
- LDD CN+4
- STM /WRITE/OPTL
- PRS5.1 RJM /WRITE/CNW CHECK FIRST WRITE
- ZJN PRS6 IF WRITE OK
- LJM /WRITE/WTF4 PROCESS ERROR CONDITION
- PRS6 LDD CP MERGE CP NUMBER
- SHN -7
- RAM CALL+1
- LDD HP
- LPC 7700 ALLOW *1LT* TO TEST FOR CTS
- RAM CALL+2
- LDD IA SET INPUT REGISTER ADDRESS IN CALL
- STM CALL+4
- LDN CMCL CHECK MOVE FLAG
- CRD CM
- LDD CM
- SHN 7
- LMD CP
- ZJN PRS7 IF MOVE FLAG
- LDD MA WRITE REQUEST BLOCK
- CWM CALL,TR
- LDN 1 SET TO NOT QUEUE REQUEST
- STD CM+1
- MONITOR RPPM REQUEST PP
- LDD CM+1
- NJN PRS8 IF PP ASSIGNED
- PRS7 LJM RET2 REQUEUE
- PRS8 STM CPDA SAVE PP INPUT REGISTER ADDRESS
- PRS9 LDN 77 DELAY
- SBN 1
- NJN *-1
- LDD MA CHECK FOR *1LT* ACKNOWLEDGE
- ADN 1
- CRD CM
- LDD CM
- ZJN PRS11 IF *1LT* READY
- RJM CPD CHECK FOR *1LT* DROP
- NJN PRS7 IF *1LT* GONE
- LDN CMCL CHECK MOVE FLAG
- CRD CM
- LDD CM
- SHN 7
- LMD CP
- NJN PRS9 IF NO MOVE FLAG FOR THIS CP
- RJM CEC CHANGE BACK TO MAGNET CP
- PRS10 RJM CPD CHECK PP DROP
- NJN PRS7 IF *1LT* GONE
- PAUSE NE
- UJN PRS10 LOOP
- PRS11 LDC /SRU/ITWL*100 SET SRU INCREMENT
- STM //CECA
- LDC 4000 SET BLOCKS WRITTEN FLAG
- STD BT
- LDD HP
- SHN 21-7
- MJN PRS12 IF CTS
- SHN 21-4-21+7
- PJN PRS13 IF NOT ATS UNIT
- * CHECK IF MOTION AHEAD ALLOWED. MOTION AHEAD IS NOT ALLOWED
- * ON ANY GCR UNIT AT 1X PPU SPEED OR ON A 200 IPS GCR UNIT.
- SHN 21-1-21+4
- PJN PRS13 IF UNIT NOT CAPABLE OF 6250 BPI
- LDM DLYA
- LPN 14
- ZJN PRS12 IF 1X PPU SPEED
- LDD HP
- LPN 10
- LMN 10
- NJN PRS13 IF NOT 200 IPS UNIT
- PRS12 LDC UJNI+2 DISABLE MOTION AHEAD
- STM ODAA-1
- LDC RJMI
- STM RDAC
- LDC UJNI+ODA3-ODAG
- STM ODAG
- PRS13 LJM /WRITE/WTF1 ENTER WRITE CODE
- PRSA TSAD SLBP
- PRSB CHTB
- PRSC BSS 0
- LOC /WRITE/WRTA
- UJN /WRITE/WRT2 SET UP FOR LONG BLOCK WRITE
- LOC *O
- PRSD BSS 0
- LOC /WRITE/WRTE
- UJN /WRITE/WRT3.1 LONG BLOCKS
- LOC *O
- PRSE BSS 0
- LOC /WRITE/WRTG
- UJN /WRITE/WRT5 LONG BLOCKS
- LOC *O
- PRSF BSS 0
- LOC /WRITE/WTFA
- UJN /WRITE/WTF1 LONG BLOCKS
- LOC *O
- TITLE PRESET SUBROUTINES.
- SRC SPACE 4,15
- ** SRC - SET RESIDENT CONTROLLER ROUTINE.
- *
- * ENTRY (T3) = CONTROLLER/PP TYPE.
- * 0 = CYBER 180 IOU.
- * 1 = MTS CONTROLLER (NON-CYBER 180).
- * 2 = ATS CONTROLLER (NON-CYBER 180).
- *
- * EXIT TAPE OUTPUT ROUTINE PRESET.
- *
- * USES T1, T2.
- *
- * CALLS MCH.
- SRC SUBR ENTRY/EXIT
- LDM SRCB,T3 ADDRESS OF OUTPUT ROUTINE
- ZJN SRC2 IF RESIDENT ROUTINE USED
- STM SRCA
- LDN .OPALC-1 BYTES TO COPY
- STD T1
- SRC1 LDM **,T1
- SRCA EQU *-1
- STM .OPAA,T1 COPY OVER RESIDENT TAPE IO ROUTINE
- SOD T1
- PJN SRC1 IF COPY NOT COMPLETE
- LDM SRCC,T3 ADDRESS OF CHANNEL TABLE
- RJM MCH UPDATE CHANNELS
- SRC2 LDM SRCD,T3 ADDRESS OF ADDRESSES TO MODIFY
- STD T2
- SRC3 LDI T2 ADDRESS TO CHANGE
- STD T1
- ZJN SRCX IF END OF TABLE ENCOUNTERED
- AOD T2
- LDI T2
- STI T1 CHANGE CONTENTS OF ADDRESS
- AOD T2
- UJN SRC3 CONTINUE MODIFYING ADDRESSES
- * ADDRESS OF OUTPUT ROUTINES.
- SRCB CON 0 CYBER 180 IOU
- CON .OPD MTS (NON-CYBER 180)
- CON .OPA ATS (NON-CYBER 180)
- * ADDRESSES OF CHANNEL TABLES.
- SRCC CON 0 CYBER 180 IOU
- CON .OPDA MTS (NON-CYBER 180)
- CON .OPAC ATS (NON-CYBER 180)
- * ADDRESSES OF ADDRESS MODIFICATION TABLES.
- SRCD CON SRCE CYBER 180 IOU
- CON SRCG MTS (NON-CYBER 180)
- CON SRCF ATS (NON-CYBER 180)
- ** ADDRESS MODIFICATION TABLES.
- SRCE CON ODAJ,OPI CYBER 180 IOU
- CON ODAK,OPE
- CON SRQA,PSNI
- CON ODAD,OPIA
- CON ODAC,OPIB
- CON ODAH,OPEB
- CON ODAI,OPEA
- CON ODAF,OPEA
- CON 0
- SRCF CON ODAJ,OPA ATS (NON-CYBER 180)
- CON ODAK,OPL
- CON 0
- SRCG CON ODAF,ODAF MTS (NON-CYBER 180)
- CON ODAD,OPDA
- CON 0
- OPA SPACE 4,10
- .OPA BSS 0 ATS OUTPUT ROUTINES (NON-CYBER 180)
- LOC .OPAA
- OPA SPACE 4,10
- ** OPA - OUTPUT DATA TO ATS UNIT (NON-CYBER 180).
- *
- * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
- * (OPAA) = 0 IF NOT FIRST CHUNK.
- *
- * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
- OPA SUBR ENTRY/EXIT
- OPAA UJN OPA1 FIRST CHUNK
- * PSN (NOT FIRST CHUNK)
- AJM *,CH WAIT FOR *1LT* TO OUTPUT CHUNK
- PSN DELAY TO ALLOW *1LT* TO REACTIVATE CHANNEL
- PSN
- OPA1 OAM BUFB,CH OUTPUT DATA
- FJM *,CH
- DCN CH+40 INDICATE TO *1LT* TO RESUME OUTPUT
- NJN OPAX IF INCOMPLETE TRANSFER
- ACN CH
- STM OPAA CLEAR FIRST CHUNK FLAG
- UJN OPAX RETURN
- OPAB BSS 0
- LOC OPAA
- UJN OPA1 OUTPUT DATA
- LOC OPAB+1
- OPL SPACE 4,10
- ** OPL - OUTPUT LAST PARTIAL CHUNK TO ATS UNIT (NON-CYBER 180).
- *
- * ENTRY (A) = NUMBER OF BYTES TO TRANSFER.
- *
- * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
- * CHANNEL FULL STATUS NOT CHECKED.
- OPL SUBR ENTRY/EXIT
- OPLA PSN WAIT FOR *1LT*
- * UJN OPL1 (*1LT* NOT NEEDED)
- AJM *,CH WAIT FOR *1LT* TO OUTPUT CHUNK
- PSN DELAY TO ALLOW *1LT* TO REACTIVATE CHANNEL
- PSN
- OPL1 OAM BUFB,CH OUTPUT PARTIAL CHUNK
- UJN OPLX RETURN
- OPLB BSS 0
- LOC OPLA
- UJN OPL1 OUTPUT DATA
- LOC *O
- .OPAL EQU *-.OPA
- ERRNG .OPALC-.OPAL ATS WRITE ROUTINE OVERFLOW
- .OPAC CHTB TABLE OF CHANNELS FOR ATS CODE
- SPACE 4,10
- .OPD BSS 0 MTS OUTPUT ROUTINE (NON-CYBER 180)
- LOC .OPAA
- OPD SPACE 4,10
- ** OPD - OUTPUT DATA TO MTS UNIT (NON-CYBER 180).
- *
- * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
- *
- * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
- OPD2 FJM OPD1,CH IF *1LT* OUTPUTTING DATA
- FJM OPD1,CH IF *1LT* OUTPUTTING DATA
- FJM OPD1,CH IF *1LT* OUTPUTTING DATA
- OAM BUFB,CH OUTPUT DATA
- OPD SUBR ENTRY/EXIT
- OPD1 FJM OPD1,CH IF *1LT* OUTPUTTING DATA
- FJM OPD1,CH IF *1LT* OUTPUTTING DATA
- UJN OPD2 CONTINUE CHECK FOR *1LT* OUTPUT
- OPDA BSS 1 SCRATCH STORAGE
- LOC *O
- .OPDL EQU *-.OPD
- ERRNG .OPALC-.OPDL MTS WRITE ROUTINE OVERFLOW
- .OPDA CHTB TABLE OF CHANNELS FOR MTS CODE
- SPACE 4,10
- .WCT BSS 0
- LOC /WRITE/WCT6
- LDN F0002 CONTINUE FUNCTION
- STM ITMA
- LJM /WLB/ODAB GO RETRY THE COMMAND
- ERRMI /WRITE/WCT8-* IF CODE OVERFLOWS
- LOC *O
- .WCTL EQU *-.WCT LENGTH OF CODE TO MOVE
- OVERLAY (WRITE LI FORMAT.),,,WLI
- .IM SET 0 GENERATE ADDRESSES FOR OVERLAY
- NC EQU PA NUMBER OF CHUNKS
- BC EQU PB BYTE COUNT LAST CHUNK
- WLI SPACE 4,15
- ** WLI - WRITE LI FORMAT.
- * THIS OVERLAY DOES ALL LI FORMAT WRITES.
- *
- * ENTRY AT *WLI* FROM *PRS* TO WRITE FIRST BLOCK.
- * AT *WLI1* FROM *PRS* IF NO BLOCK TO WRITE.
- *
- * EXIT TO *RET* IF COMPLETE.
- * TO *RET2* TO REQUEUE REQUEST.
- * TO *RET3* TO REPORT AN ERROR.
- * TO *EOF* TO WRITE EOF.
- *
- * CALLS ODA, WRT.
- WLI RJM ODA OUTPUT DATA
- RJM WRT CHECK FOR END OF OPERATION
- LDC *
- WLIA EQU *-1
- NJN WLI1 IF EXIT CONDITIONS
- LDD DF
- ZJN WLI IF NO DROP OUT
- WLIB EQU *-1
- * PSN (PRU WRITE 004)
- LJM RET2 REQUEUE
- WLIC EQU *-1
- * LJM WLI3 (PRU WRITE 004)
- WLI1 SBN 10
- MJN WLI3 IF NO ERROR
- ZJN WLI2 IF BUFFER TOO LONG ERROR
- LDN /MTX/BAE&/MTX/BCW BUFFER ARGUMENT ERROR
- WLI2 LMN /MTX/BCW BLOCK TOO LONG ERROR
- LJM RET3 RETURN ERROR CODE
- WLI3 LDN 1
- LJM RET SET FET COMPLETE
- WLID EQU *-1
- * LJM EOF (LI FORMAT EOF REQUIRED)
- ADP SPACE 4,15
- ** ADP - ADVANCE POINTER.
- *
- * ENTRY (CN+3 - CN+4) = OUT POINTER.
- * (A) = WORDS TO INCREMENT OUT BY.
- *
- * EXIT (T4 - T5) = STARTING OUT POINTER.
- * (CN+3 - CN+4) = UPDATED OUT POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * MACROS SADT.
- ADP SUBR ENTRY/EXIT
- STD T6
- LDD CN+3 SAVE OUT
- STD T4
- LDD CN+4
- STD T5
- LDN 0 PRESET SECOND PART WORD COUNT
- STD T7
- LDD T6 UPDATE OUT
- RAD CN+4
- SHN -14
- RAD CN+3
- SHN 14
- LMD CN+4
- SADT .LM,C
- ADC -* (-LIMIT)
- MJN ADPX IF NO WRAP AROUND
- STD T7 SET SECOND PART WORD COUNT
- SADT .FT
- ADC * (FIRST)
- STD CN+4
- SHN -14
- STD CN+3
- LDD T6 RESET FIRST PART WORD COUNT
- SBD T7
- STD T6
- UJN ADPX RETURN
- CNW SPACE 4,25
- ** CNW - CHECK NEXT WRITE.
- * THIS ROUTINE DETERMINES IF THERE IS DATA TO WRITE. IF SO,
- * THE NUMBER OF CHUNKS AND BLOCKS IS DETERMINED AND THE BLOCK
- * PREFIX IS BUILT. IF (014, 204, 264) WRITE, ONE BLOCK IS
- * PRESENT, BUT NOT 2 BLOCKS, THEN A *DRCM* MONITOR FUNCTION
- * IS ISSUED TO GET THE CPU TO PUT MORE DATA IN THE BUFFER.
- *
- * ENTRY (CN+3 - CN+4) = OUT POINTER.
- *
- * EXIT (A) = (WLIA) = 0, NEXT WRITE OKAY.
- * 2, NOT ENOUGH DATA.
- * 10, BLOCK TOO LONG ERROR.
- * 11, BUFFER ARGUMENT ERROR.
- * (NC) = FULL CHUNKS TO WRITE.
- * (BC) = BYTES IN REMAINDER TO WRITE.
- * (.WC) = WORDS IN REMAINDER TO WRITE.
- *
- * USES T1, T2, T6, T7, CM - CM+4.
- *
- * CALLS CDO, COB, SLN.
- *
- * MACROS SADT.
- CNW14 LDN 2 SET NOT ENOUGH DATA
- CNW15 STM WLIA
- CNW SUBR ENTRY/EXIT
- RJM CDO CHECK DROP OUT FLAG
- LDN F0050
- STM ITMA WRITE FUNCTION
- LDN 1 WORD COUNT = 10000
- CNWA EQU *-1
- * LDN 0 (204 WRITE)
- STD CM+3
- LDN 0
- CNWB EQU *-1
- * LDN 2 (204 WRITE)
- STD CM+4
- RJM COB CHECK OUTPUT BUFFER
- STD T1
- SHN 6
- SBD CM+3
- SHN 14
- SBD CM+4
- PJN CNW1 IF ENOUGH DATA
- LDD T1
- CNWC EQU *-1
- * UJN CNW14 (204 WRITE)
- STD CM+4
- SOD CM+3 USE WORD COUNT IN BUFFER
- LDD MD
- SHN 21-3
- PJN CNW14 IF NOT EOR/EOF WRITE
- SHN 21-10-21+3+22
- MJN CNW14 IF EOR/EOF WRITTEN THIS OPERATION
- CNW1 UJN CNW2
- CNWD EQU *-1
- * LDD CN+3 (204 WRITE)
- SHN 6
- ADD RA
- SHN 6
- ADD CN+4
- CRD CM READ CONTROL WORD
- CNW2 LDC /MTX/LBWD WORDS PER CHUNK
- CNWE EQU *-1
- * LDC LBBY BYTES PER CHUNK (204 WRITE)
- STD T1
- LDN 0
- STD NC
- * DETERMINE NUMBER OF CHUNKS AND REMAINDER.
- CNW3 LDD CM+4
- SBD T1
- STD CM+4
- PJN CNW4 IF NO UNDERFLOW
- AOD CM+4
- SOD CM+3
- MJN CNW5 IF UNDERFLOW
- CNW4 AOD NC COUNT CHUNK
- UJN CNW3 LOOP
- CNW5 LDD T1
- RAD CM+4
- STD BC
- STM .WC
- LDD CM+4
- CNWF EQU *-1
- * UJN CNW6 (204 WRITE)
- SHN 2
- RAD BC BYTES = 5 * CM WORDS
- UJN CNW7 CHECK IF LEGAL BLOCK SIZE
- CNW6 LDD CM+4 ROUND UP BYTES
- ADN 4
- STD T2
- SHN 1 13*BYTES
- ADD T2
- SHN 2
- ADD T2
- SHN 14 (-6) (13*BYTES)/64
- STD T0
- SHN 6+2 4*13*BYTES (52*BYTES)
- SBD T2 51*BYTES
- ADD T0 (51*BYTES)+((13*BYTES)/64)
- SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
- STM .WC SAVE REMAINDER (IN CM WORDS)
- * CHECK IF LEGAL BLOCK SIZE.
- CNW7 LDD NC
- STD T1
- LDM .WC
- STD T7
- LDN 0
- STD T6
- CNW8 SOD T1
- MJN CNW9 IF END OF CHUNKS
- LDC /MTX/LBWD
- RAD T7
- SHN -14 T6,T7 IS BLOCK LENGTH IN CM WORDS
- RAD T6
- UJN CNW8 LOOP
- CNW9 LDD T6
- SHN 14
- LMD T7
- SADT .BS,C,1
- ADC -*
- MJN CNW10 IF BLOCK NOT TOO LARGE
- LDN 10 SET BLOCK TOO LONG ERROR
- UJP CNW15 EXIT WITH NEXT WRITE STATUS
- * PUT BYTE COUNT AND BLOCK NUMBER IN BLOCK PREFIX.
- CNW10 LDD T6 T6,T7 IS CM WORD COUNT
- SHN 2
- ADD T6
- STD T2
- LDD T7
- SHN 2
- ADD T7
- ADN 5 INCLUDE LENGTH OF PREFIX
- STM BUFB-4 LOWER 12 BITS OF BYTE COUNT
- SHN -14
- ADD T2
- STM BUFB-5 UPPER BITS OF BYTE COUNT
- LDD BL
- STM BUFB-3
- LDD BL+1
- STM BUFB-2 SET BLOCK NUMBER
- * CHECK IF ENOUGH DATA IN OUTPUT BUFFER.
- LDD MD
- LPN 40
- SHN -4
- RAD T7 ALLOW FOR CONTROL WORD
- SHN -14
- RAD T6
- RJM COB CHECK OUTPUT BUFFER
- SHN 6
- SBD T6
- SHN 14
- SBD T7
- MJN CNW13 IF NOT ENOUGH DATA IN OUTPUT BUFFER
- * IF ONE BLOCK IS PRESENT, BUT NO SECOND BLOCK, ISSUE *DRCM*.
- SHN 6
- SBD T6
- SHN 14
- SBD T7
- PJN CNW11 IF SECOND BLOCK IN CM
- CNWG EQU *-1
- * UJN CNW11 (NOT 014, 204, OR 264 WRITE)
- LDM CNW
- ADC -PRS
- PJN CNW11 IF CALLED FROM PRESET
- LDD OA
- CWM CNWH,ON
- CNW11 RJM SLN SAVE LEVEL NUMBER
- LDN 0
- CNW12 LJM CNW15 RETURN
- CNW13 LJM CNW14 SET NOT ENOUGH DATA
- CNWH CON DRCM DRIVER RECALL CPU MONITOR FUNCTION
- COB SPACE 4,10
- ** COB - CHECK OUTPUT BUFFER.
- *
- * ENTRY (CN+3,CN+4) = OUT POINTER.
- *
- * EXIT (A) = WORD COUNT.
- * TO LOCATION *CNW12*, IF BUFFER ARGUMENT ERROR.
- *
- * USES T1 - T5.
- *
- * MACROS SADT.
- COB2 LDD T1+3 LENGTH = IN - OUT
- SBD CN+3
- SHN 14
- ADD T1+4
- SBD CN+4
- PJN COBX IF IN .GE. OUT
- SADT .LF
- ADC * (LIMIT - FIRST)
- MJN COB1 IF BUFFER ARGUMENT ERROR
- COB SUBR ENTRY/EXIT
- SADT .FE,,2,A
- LDC * READ IN
- CRD T1
- LDD T1+3
- LPN 37
- STD T1+3
- SHN 14
- LMD T1+4
- SADT .LM,C
- ADC -*
- MJN COB2 IF IN .LT. LIMIT
- COB1 LDN 11 SET BUFFER ARGUMENT ERROR
- UJN CNW12 SET EXIT CONDITION
- CPD SPACE 4,10
- ** CPD - CHECK PP (1LT) DROP OUT.
- *
- * ENTRY (CPDA) = PP INPUT REGISTER ADDRESS.
- *
- * EXIT (A) = 0, IF *1LT* STILL AROUND.
- *
- * USES CM - CM+4.
- *
- * MACROS CHTE.
- CPD SUBR ENTRY/EXIT
- LDC *
- CPDA EQU *-1
- CRD CM
- LDD CM+1
- SCN 77
- SHN 6
- LMD CM
- LMC 3RT1L
- ZJN CPD1 IF *1LT*
- SHN 14
- LMN 1R1
- NJN CPDX IF NOT *1LT* LOADING
- CPD1 LDD CM+3
- CHTE *
- LMN CH
- LPN 77
- UJN CPDX RETURN
- CRA SPACE 4,10
- ** CRA - CHECK REQUEST ACCEPTANCE FROM *1LT*.
- *
- * EXIT (A) = REQUEST BYTE.
- * (CM - CM+4) = REQUEST/RETURN WORD.
- CRA SUBR ENTRY/EXIT
- LDM CPDA
- ADN 2
- CRD CM
- LDD CM
- UJN CRAX RETURN
- EOF SPACE 4,10
- ** EOF - WRITE LI FORMAT EOF.
- *
- * EXIT TO *RET* WITH (A) = 1 TO SET FET COMPLETE.
- *
- * CALLS ITM, WRT.
- EOF BSS 0 ENTRY
- RJM ITM INITIATE TAPE MOTION
- LDN 17
- STM BUFB-1 LEVEL NUMBER
- LDD BL
- STM BUFB-3 BLOCK NUMBER
- LDD BL+1
- STM BUFB-2
- LDN 0
- STM BUFB-5 BYTE COUNT UPPER
- LDN 5
- STM BUFB-4 BYTE COUNT LOWER
- LDN 6
- OAM BUFB-5,CH
- FJM *,CH
- STM /WRITE/BYRM BYTES NOT WRITTEN
- * DELAY 10 MICROSECONDS TO PREVENT A HARDWARE ERROR IN THE
- * CCC. THE DISCONNECT WOULD SOMETIMES CAUSE THE LAST BYTE TO
- * BE LOST.
- LDN 20
- SBN 1
- NJN *-1
- DCN CH+40
- RJM WRT PROCESS WRITE
- EOFA EQU * (USED TO TELL WHERE *WRT* CALLED FROM)
- LCN 14 CLEAR EOF INDICATOR
- RAD MD
- LDN 1
- LJM RET SET FET COMPLETE
- ITS SPACE 4,10
- ** ITS - INDICATE *1MT* TRANSFER STARTED.
- *
- * ENTRY (A) = BYTE COUNT.
- *
- * EXIT (A) = BYTE COUNT.
- ITS SUBR ENTRY/EXIT
- STD T0 SAVE BYTE COUNT
- LDM CPDA INDICATE *1MT* TRANSFER STARTED
- ADN 3
- CWD ON
- LDD T0 RESTORE (A)
- UJN ITSX RETURN
- ODA SPACE 4,10
- ** ODA - OUTPUT DATA.
- * THIS ROUTINE WRITES THE 1ST, 3RD, ... CHUNKS OF THE BLOCK
- * TO TAPE.
- *
- * ENTRY (NC) = FULL CHUNKS.
- * (BC) = BYTE COUNT IN REMAINDER.
- * (.WC) = WORD COUNT IN REMAINDER.
- *
- * USES CM, CM+7, BY.
- *
- * CALLS ADP, CRA, OPA, OPE, OPI, OPL, RDA.
- ODA SUBR ENTRY/EXIT
- LDN 0 ALLOW FOR CONTROL WORD
- ODAA EQU *-1
- * LDN 1 (204 WRITE)
- RJM ADP
- LDN 0 PRESET CHUNKS OUTPUT COUNT
- STD CM+7
- LDC LBBY
- STD BY
- STM RDAB SET FIRST CHUNK FLAG
- LDD NC
- ZJN ODA3 IF *1LT* NOT NEEDED
- SBN 2
- PJN ODA1 IF *1LT* NEEDED
- LDD BC
- ZJN ODA2 IF *1LT* NOT NEEDED
- ODA1 AOM ODAD SET *1LT* CALLED FLAG
- UJN ODA6 OUTPUT DATA
- ODA2 LDC LBBY
- STD BC
- LDC /MTX/LBWD
- STM .WC
- ODA3 LDD BC
- STD BY
- LJM ODA9 SET UP TO READ NEXT CHUNK
- ODA4 STM RDAB INDICATE NOT FIRST CHUNK
- STM /WRITE/BYRM BYTES NOT TRANSFERRED
- LDN 2 INCREMENT CHUNK COUNT
- RAD CM+7
- SBD NC
- PJN ODA7 IF NO MORE FULL CHUNKS
- ADN 1
- NJN ODA5 IF NOT 1 CHUNK LEFT
- LDD BC
- ZJN ODA7 IF ZERO REMAINDER
- ODA5 LDC /MTX/LBWD SKIP OVER DATA *1LT* OUTPUT
- RJM ADP
- ODA6 LDC /MTX/LBWD SET UP TO READ NEXT DATA CHUNK
- RJM RDA READ DATA
- RJM OPI OUTPUT DATA
- ODAB EQU *-1
- * RJM OPA (NOT USING CHANNEL FLAG)
- ZJN ODA4 IF FULL BLOCK OUTPUT
- UJN ODA12 STORE BYTES NOT WRITTEN
- ODA7 ZJN ODA8 IF TRANSFER NOT COMPLETE FOR *1MT*
- LDM .WC ADVANCE POINTER OVER *1LT,S* CHUNK
- RJM ADP
- UJN ODA13 CHECK IF *1LT* WAS CALLED
- ODA8 LDC /MTX/LBWD SKIP OVER DATA *1LT* OUTPUT
- RJM ADP
- LDD BC
- ZJN ODA10 IF POSSIBLE OUTPUT COMPLETE
- STD BY
- ODA9 LDM .WC SET UP TO READ NEXT CHUNK
- UJN ODA11 READ DATA
- ODA10 LDD NC
- LPN 1
- ZJN ODA13 IF OUTPUT COMPLETE
- LDC /MTX/LBWD
- ODA11 RJM RDA READ DATA FROM CENTRAL
- RJM OPE OUTPUT DATA
- ODAC EQU *-1
- * RJM OPL (NOT USING CHANNEL FLAG)
- FJM *,CH
- ODA12 STM /WRITE/BYRM SAVE BYTES NOT TRANSFERRED
- * DELAY 10 MICROSECONDS TO PREVENT A HARDWARE ERROR IN THE
- * CCC. THE DISCONNECT WOULD SOMETIMES CAUSE THE LAST BYTE TO
- * BE LOST.
- LDN 20
- SBN 1
- NJN *-1
- DCN CH+40
- ODA13 LDN 0
- ODAD EQU *-1
- ZJN ODA15 IF *1LT* NOT CALLED
- SOM ODAD CLEAR *1LT* CALLED FLAG
- ODA14 RJM CRA CHECK REQUEST ACCEPTANCE FROM *1LT*
- LMN 2
- NJN ODA14 IF NOT ACCEPT
- STD CM ACKNOWLEDGE *1LT*
- LDM CPDA
- ADN 2
- CWD CM
- ODA15 LDN 0 SKIP TRAILER CONTROL WORD IF PRESENT
- ODAE EQU *-1
- * LDN 1 (204 WRITE)
- RJM ADP
- LJM ODAX RETURN
- OPE SPACE 4,10
- .OPE BSS 0 START OF OVERLAYED ATS WRITE ROUTINES
- OPE SPACE 4,10
- ** OPE - OUTPUT ENDING DATA FROM CYBER 180 IOU.
- *
- * ENTRY (BY) = NUMBER OF BYTES TO OUTPUT.
- * (RDAB) = 0 IF NOT FIRST CHUNK OF BLOCK.
- *
- * EXIT (A) = BYTES NOT TRANSFERRED.
- *
- * CALLS ITS, WTS.
- OPE1 LDD BY
- LPC 7776 WRITE EVEN BYTE COUNT
- ADN 1
- RJM WTS WAIT FOR *1LT* TRANSFER TO START
- OPE2 IJM OPEX,CH IF *1LT* WROTE ONLY PARTIAL CHUNK
- SCF OPE2,CH WAIT FOR *1LT* TO CLEAR CHANNEL FLAG
- OAM BUFB,CH
- OPE SUBR ENTRY/EXIT
- LDM RDAB
- ZJN OPE1 IF NOT FIRST CHUNK (IF *1LT* NEEDED)
- LDD BY
- ADN 5+1 BLOCK PREFIX PLUS PAD
- LPC 7776 WRITE EVEN BYTE COUNT
- OAM BUFB-5,CH
- UJN OPEX RETURN
- OPI SPACE 4,10
- ** OPI - OUTPUT DATA FROM CYBER 180 IOU.
- *
- * IF THERE ARE MULTIPLE CHUNKS IN THE BLOCK, THIS ROUTINE
- * IS USED FOR ALL BUT THE LAST CHUNK. *OPE* IS USED FOR THE
- * LAST CHUNK.
- *
- * ENTRY (BY) = NUMBER OF BYTES TO OUTPUT.
- * (RDAB) = 0 IF NOT FIRST CHUNK.
- *
- * EXIT (A) = BYTES NOT TRANSFERRED.
- *
- * CALLS ITS, WTS.
- OPI1 LDD BY
- RJM WTS WAIT FOR *1LT* TRANSFER TO START
- OPI2 IJM OPIX,CH IF *1LT* WROTE ONLY PARTIAL CHUNK
- SCF OPI2,CH WAIT FOR *1LT* TO CLEAR CHANNEL FLAG
- RJM ITS INDICATE *1MT* TRASFER STARTED
- OAM BUFB,CH OUTPUT DATA
- OPI4 NJN OPIX IF INCOMPLETE TRANSFER
- CCF *,CH SIGNAL *1LT* TO START OUTPUT
- OPI SUBR ENTRY/EXIT
- LDM RDAB
- ZJN OPI1 IF NOT FIRST CHUNK
- LDD BY
- ADN 5 ALLOW FOR BLOCK PREFIX
- OAM BUFB-5,CH OUTPUT DATA
- UJN OPI4 CHECK IF ALL BYTES TRANSFERRED
- .OPEL EQU *-.OPE LENGTH OF CODE TO BE OVERLAYED
- RDA SPACE 4,15
- ** RDA - READ DATA FROM CENTRAL.
- *
- * ENTRY (A) = WORDS TO READ.
- * (T4 - T5) = OUT POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * EXIT (BY) = BYTES TO WRITE.
- *
- * CALLS ADP, ITM, SRQ.
- *
- * MACROS SADT.
- RDA SUBR ENTRY/EXIT
- RJM ADP ADVANCE POINTERS
- LDD T6
- ZJN RDA1 IF NO DATA
- SHN 2
- ADD T6
- ADC BUFB
- STM RDAA
- LDD T4 READ FIRST PART
- SHN 6
- ADD RA
- SHN 6
- ADD T5
- CRM BUFB,T6
- LDD T7
- ZJN RDA1 IF NO SECOND PART
- SADT .FT,,,A
- LDC * READ SECOND PART
- CRM *,T7
- RDAA EQU *-1
- RDA1 LDC 0
- RDAB EQU *-1
- ZJN RDA2 IF NOT FIRST CHUNK
- RJM ITM INITIATE TAPE MOTION
- LDM ODAD
- LPN 77
- ZJN RDA2 IF *1LT* NOT NEEDED
- LDN 1 SEND REQUEST TO *1LT*
- RJM SRQ
- RDA2 LJM RDAX RETURN
- SLN SPACE 4,10
- ** SLN - SAVE LEVEL NUMBER.
- * THIS ROUTINE PUTS THE LEVEL NUMBER IN THE BLOCK PREFIX.
- *
- * ENTRY (CN+3,CN+4) = OUT POINTER.
- * (T6,T7) = LENGTH OF BLOCK INCLUDING CONTROL WORDS.
- * (LNUM) = LEVEL NUMBER IF NOT CONTROL WORD WRITE.
- *
- * USES T4, T5, CM - CM+4.
- *
- * MACROS SADT.
- SLN2 LPN 17
- STM BUFB-1 SAVE LEVEL NUMBER
- NJN SLN3 IF NOT EOF BLOCK
- LDM BUFB-5
- SHN 14
- ADM BUFB-4
- LMN 5
- ZJN SLNX IF NO DATA IN BLOCK
- LDN 0
- STM BUFB-1 CLEAR LEVEL NUMBER
- SLN3 LDM BUFB-5
- SHN 14
- ADM BUFB-4
- LMC 50005
- NJN SLNX IF NOT FULL BLOCK
- STM BUFB-1 CLEAR LEVEL NUMBER
- SLN SUBR ENTRY/EXIT
- LDM LNUM
- UJN SLN2 SAVE LEVEL NUMBER
- SLNA EQU *-1
- * LDD CN+3 (204 WRITE)
- STD T4 SAVE OUT
- LDD CN+4
- STD T5
- LDD T6
- SHN 14
- ADD T7
- SBN 1 BACK UP TO TRAILER CONTROL WORD
- STD T7
- SHN -14
- STD T6
- LDD T7 UPDATE OUT
- RAD T5
- SHN -14
- ADD T6
- RAD T4
- SHN 14
- LMD T5
- SADT .LM,C
- ADC -* (-LIMIT)
- MJN SLN1 IF NO WRAP AROUND
- SADT .FT
- ADC * (FIRST)
- STD T5
- SHN -14
- STD T4
- SLN1 LDD T4
- SHN 6
- ADD RA
- SHN 6
- ADD T5
- CRD CM READ CONTROL WORD
- LDD CM GET LEVEL NUMBER
- LJM SLN2 SAVE LEVEL NUMBER
- SRQ SPACE 4,10
- ** SRQ - SEND REQUEST TO *1LT* TO START BLOCK.
- *
- * ENTRY (A) = REQUEST CODE.
- * (T4 - T5) = POINTER.
- * (BC) = BYTE COUNT OF LAST CHUNK.
- * (NC) = NUMBER OF CHUNKS.
- *
- * USES T1, T2, T3, CM - CM+4.
- *
- * CALLS CPD, CRA, HNG.
- SRQ SUBR ENTRY/EXIT
- STD T1
- PSN
- SRQA EQU *-1
- * UJN SRQ1 (NOT USING CHANNEL FLAG)
- SCF *+2,CH SET CHANNEL FLAG
- LDM CPDA INDICATE *1MT* TRANSFER STARTED
- ADN 3
- CWD ON
- SRQ1 RJM CRA CHECK *1LT* ACCEPT
- NJN SRQ2 IF *1LT* OUT OF SYNC
- LDM CPDA CHECK *1LT* FUNCTION
- ADN 1
- CRD CM
- LDD CM
- LMN PRLM
- ZJN SRQ3 IF *1LT* PAUSING
- LDD BC SET BYTE COUNT
- STD T2
- LDD NC
- STD T3
- LDM CPDA ENTER REQUEST
- ADN 2
- CWD T1
- RJM CPD CHECK IF PP DROPPED OUT
- NJN SRQ2 IF *1LT* MISSING
- LJM SRQX RETURN
- SRQ2 RJM HNG HANG PP
- SRQ3 LJM RET2 REQUEUE REQUEST
- WRT SPACE 4,12
- ** WRT - WRITE TAPE.
- *
- * THIS ROUTINE CHECKS END OF OPERATION STATUS AND CHECKS TO
- * DETERMINE IF ANOTHER BLOCK CAN BE TRANSFERRED. FOR CTS
- * THE FIRST PART OF *WRT* IS OVERLAYED WITH *WCT*.
- *
- * EXIT (LG,LG+1) = BLOCK ID UPDATED.
- * (BL,BL+1) = BLOCK NUMBER UPDATED.
- * (BT) = BLOCKS TRANSFERRED UPDATED.
- *
- * USES CM - CM+4.
- *
- * CALLS CNW, UBW, *WEM*, WEO.
- *
- * MACROS CALL, SADT.
- WRT SUBR ENTRY/EXIT
- LDM UBWB
- STD LG+1
- NJN WRT1 IF BLOCK ID NONZERO
- AOD LG+1
- WRT1 LDD DS SAVE STATUS AT START OF WRITE
- STM /WRITE/STAT
- LDD UP CLEAR EOR/EOF LAST BLOCK FLAG
- SCN 10
- STD UP
- LDD MD CLEAR EOR/EOF THIS OPERATION FLAG
- LPC 7377
- STD MD
- LDM BUFB-4
- LMN 5
- NJN WRT2 IF NOT FULL BLOCK
- LDM BUFB-5
- LMN 5
- ZJN WRT3 IF NOT EOR/EOF WRITTEN
- WRT2 LDN 10 SET EOR/EOF FLAGS
- RAD UP
- LDC 400
- RAD MD
- WRT3 RJM CNW CHECK NEXT WRITE
- RJM WEO WAIT END OF OPERATION
- ZJN WRT4 IF NO ERROR
- LDN /MTX/STE STATUS ERROR
- WRT4 STD EC
- NJN WRT5 IF ERROR
- LDM MTDS+1
- SHN 21-11
- PJN WRT5 IF NO GCR CORRECTION
- AOM ECNT+2 INCREMENT COUNTER
- SHN -14
- RAM ECNT+1 INCREMENT ON OVERFLOW
- WRT5 LDM UBWB CURRENT BLOCK ID
- STD LG+1
- NJN WRT6 IF NONZERO
- AOD LG+1
- WRT6 LDM /WRITE/BYRM
- ZJN WRT6.1 IF ALL BYTES TRANSFERRED
- LDD EC
- NJN WRT6.1 IF ERROR CODE ALREADY PRESENT
- LDN /MTX/CMF CHANNEL MALFUNCTION
- STD EC
- WRT6.1 LDD EC
- ADD EI
- ZJN WRT7 IF NO ERROR OR NO VERIFICATION REQUIRED
- LDD DS SAVE STATUS FOR ERROR PROCESSOR
- STM //STER
- CALL WEM
- * RETURN HERE IF END OF TAPE OR IF ERROR WAS RECOVERED.
- WRT7 LDD LG+1 SAVE LAST GOOD RECORD INFORMATION
- STD LG
- RJM UBW UPDATE BID WINDOW
- UJN WRT8 WRITE OUT TO FET
- BSS 0 ALLOW SPACE FOR THE END OF *WCT*
- * START OF COMMON CODE WITH *WCT*. *WCT* OVERLAYS THE FIRST
- * PART OF *WRT* FOR CTS.
- WRT8 BSS 0
- SADT .FE,,3,A
- LDC * WRITE OUT TO FET
- CWD CN
- AOD BL+1 INCREMENT BLOCK COUNT
- STM BUFB-2 PUT BLOCK NUMBER IN PREFIX
- SHN -14
- RAD BL
- STM BUFB-3
- AOD BT INCREMENT BLOCKS WRITTEN
- LJM WRTX RETURN
- WRTK EQU *-1
- * LJM /3M /EOTEXIT (RETURN ERROR ON END OF TAPE)
- WTS SPACE 4,10
- ** WTS - WAIT FOR *1LT* TRANSFER TO START.
- *
- * ENTRY (A) = BYTE COUNT.
- *
- * EXIT (A) = BYTE COUNT.
- *
- * USES CM - CM+4.
- WTS3 LDD T0 RESTORE (A)
- WTS SUBR ENTRY/EXIT
- STD T0 SAVE BYTE COUNT
- WTS1 LDM CPDA CHECK *1MT*/*1LT* INTERLOCK
- ADN 3
- CRD CM
- LDD CM
- ZJN WTS3 IF *1LT* TRANSFER STARTED
- LDN 24 DELAY 10 MICROSECONDS
- WTS2 SBN 1
- NJN WTS2 IF NOT DONE
- UJN WTS1 CHECK INTERLOCK
- SPACE 4,10
- .WC CON 0 WORD COUNT OF LAST CHUNK
- SPACE 4,10
- ERRMI BUFB-5-* IF CODE OVERLAYS BLOCK PREFIX
- CALL SPACE 4,10
- .IM SET 0 DISABLE ADDRESS MODIFICATION ON ERRORS
- ** *1LT* CALL BLOCK.
- *
- *T 18/ 1LT,6/ CP,6/ HP,6/ 2,1/ CF,11/ CHANNEL,12/ PPIA
- *T, 12/ -0,24/ FIRST,24/ LIMIT
- CALL VFD 18/3R1LT,6/0
- CON 2 WRITE LI FORMAT
- CHTE *
- CON CH CHANNEL
- CON 0 *1MT* INPUT REGISTER ADDRESS
- CON -0
- SADT .FT,,,,SE
- CON 0,0
- SADT .LM,,,,SE
- CON 0,0
- TITLE PRESET.
- PRS SPACE 4,15
- ** PRS - PRESET.
- *
- * EXIT (CN+3, CN+4) = OUT POINTER.
- * TO *WLI* TO WRITE.
- * TO *WLI1* IF ERROR.
- * TO *RET2* IF PP NOT ASSIGNED FOR *1LT*.
- *
- * USES CN, T1, CM - CM+4.
- *
- * CALLS CNW, *CPP*, MCH.
- *
- * MACROS MONITOR, PAUSE.
- PRS LDC PRSA
- RJM MCH MODIFY CHANNELS
- LDK MABL CHECK MAINFRAME TYPE
- CRD CM
- LDD CM+1
- SHN -6
- LPN 41
- LMN 1
- ZJN PRS2 IF USING CHANNEL FLAG
- LDN .OPAL-1 BYTES TO COPY
- STD T1
- PRS1 LDM .OPA,T1
- STM .OPE,T1 COPY OVER RESIDENT TAPE IO ROUTINE
- SOD T1
- PJN PRS1 IF COPY NOT COMPLETE
- LDC .OPAC ADDRESS OF CHANNEL TABLE
- RJM MCH MODIFY CHANNELS
- LDC OPA
- STM ODAB SET JUMP TO OUTPUT ROUTINE
- LDC OPL
- STM ODAC
- ISTORE SRQA,(UJN SRQ1) SKIP SETTING CHANNEL FLAG
- LDD HP
- LPN 20
- SHN 6
- RAM CALL+3 INDICATE IF ATS CONTROLLER
- PRS2 LDD HP
- SHN 21-7
- PJN PRS4 IF NOT CTS
- ISTORE /PRESET/GPSC,(UJN /PRESET/GPS6.1) DO NOT SEND CONTINUE
- LDC WCTL-1
- STD T1
- PRS3 LDM .WCT,T1 REPLACE *WRT* WITH *WCT*
- STM WRTX,T1
- SOD T1
- PJN PRS3 IF MORE CODE TO MOVE
- LDC WCTF
- RJM MCH MODIFY CHANNEL INSTRUCTIONS
- LDC 6331 GENERAL STATUS BITS TO TEST
- STM /PRESET/WFEA
- LDC 201 GENERAL STATUS BITS THAT SHOULD BE SET
- STM /PRESET/WFEB
- UJN PRS5 CONTINUE PRESET
- PRS4 LDC 4635 GENERAL STATUS BITS TO TEST
- STM //WEOA
- LDC 201
- STM //WEOB GENERAL STATUS BITS THAT SHOULD BE SET
- PRS5 LDD MD
- LPN 40
- ZJP PRS6 IF NOT CONTROL WORD
- LDC LDNI
- STM CNWA
- ADN 2
- STM CNWB SET WORD COUNT TO 2
- ISTORE CNWC,(UJN CNW14) IF NOT ENOUGH WORDS
- LDC LDDI+CN+3
- STM CNWD
- LDC LBBY BYTES PER CHUNK
- STM CNWE
- ISTORE CNWF,(UJN CNW6) SKIP CONVERSION TO BYTES
- AOM ODAA SET TO SKIP CONTROL WORD
- AOM ODAE SET TO SKIP CONTROL WORD
- LDC LDDI+CN+3
- STM SLNA GET LEVEL NUMBER FROM CONTROL WORD
- UJN PRS8 CONTINUE PRESET
- PRS6 LDM CIOE SET TYPE OF WRITE OPERATION
- SHN -3
- SHN 2
- LMD MD
- LPN 14
- LMD MD
- STD MD
- LPN 14
- NJN PRS7 IF NOT PRU WRITE (004)
- * LDN 0
- STM WLIB
- LDC WLI3
- STM WLIC
- PRS7 LDD MD
- LPN 14
- LMN 4
- ZJN PRS8 IF WRITE (014)
- ISTORE CNWG,(UJN CNW11) BYPASS *DRCM*
- PRS8 LDM LNUM SET LEVEL NUMBER
- SHN -10
- STM LNUM
- LDD MD
- LPN 14
- LMN 14
- NJN PRS10 IF NOT EOF WRITE
- LDC EOF SET TO WRITE EOF
- STM WLID
- LDM LNUM
- LMN 17
- NJN PRS9 IF NOT LEVEL 17
- STM LNUM DO NOT WRITE DOUBLE EOF
- PRS9 LDD MD CLEAR EOR/EOF FLAG THIS OPERATION
- LPC 7377
- STD MD
- LDD UP CHECK LAST OPERATION EOR/EOF
- LPN 30
- LMN 20
- ZJN PRS10 IF LAST OPERATION INCOMPLETE WRITE
- LDM CIOE
- SHN 21-12
- MJN PRS10 IF DATA IN BUFFER
- LDC 400 SET EOR/EOF FLAG THIS OPERATION
- RAD MD
- PRS10 LDD UP
- SCN 24 CLEAR BLANK TAPE FLAG
- LMN 20 SET LAST OPERATION WRITE FLAG
- STD UP
- LDC PRSB SET UP FOR INSTRUCTION MODIFICATION
- STD CN
- LDN 3 SET TO RETURN OUT POINTER
- STD CN+4
- LDC /SRU/ITWL*100 SET SRU INCREMENT
- STM //CECA
- LDC PRS11 SET TO RETURN HERE
- STD BT
- LJM PRSX RETURN
- * RETURN HERE AFTER ALL ROUTINES LOADED.
- * BUILD CALL TO *1LT*.
- IFGT BUFB,*,1
- BSS BUFB-* ENSURE PREFIX DOES NOT OVERLAY *PRS*
- PRS11 LDD HP
- SHN 21-7
- PJN PRS12 IF NOT CTS
- LDD CN+3
- STM /WRITE/OPTU SAVE OUT POINTER FOR COMMAND RETRY
- LDD CN+4
- STM /WRITE/OPTL
- PRS12 RJM CNW CHECK FIRST WRITE
- ZJN PRS13 IF WRITE OK
- LJM WLI1 PROCESS ERROR CONDITION
- PRS13 LDD CP MERGE CP NUMBER
- SHN -7
- RAM CALL+1
- LDD HP
- LPC 7700 ALLOW *1LT* TO TEST FOR CTS
- RAM CALL+2
- LDD IA SET INPUT REGISTER ADDRESS IN CALL
- STM CALL+4
- LDN CMCL CHECK MOVE FLAG
- CRD CM
- LDD CM
- SHN 7
- LMD CP
- ZJN PRS14 IF MOVE FLAG
- LDD MA WRITE REQUEST BLOCK
- CWM CALL,TR
- LDN 1 SET TO NOT QUEUE REQUEST
- STD CM+1
- MONITOR RPPM REQUEST PP
- LDD CM+1
- NJN PRS15 IF PP ASSIGNED
- PRS14 LJM RET2 REQUEUE
- PRS15 STM CPDA SAVE PP INPUT REGISTER ADDRESS
- PRS16 LDN 77 DELAY
- SBN 1
- NJN *-1
- LDD MA CHECK FOR *1LT* ACKNOWLEDGE
- ADN 1
- CRD CM
- LDD CM
- ZJN PRS18 IF *1LT* READY
- RJM CPD CHECK FOR *1LT* DROP
- NJN PRS14 IF *1LT* GONE
- LDN CMCL CHECK MOVE FLAG
- CRD CM
- LDD CM
- SHN 7
- LMD CP
- NJN PRS16 IF NO MOVE FLAG FOR THIS CP
- RJM CEC CHANGE BACK TO MAGNET CP
- PRS17 RJM CPD CHECK PP DROP
- NJN PRS14 IF *1LT* GONE
- PAUSE NE
- UJN PRS17 LOOP
- PRS18 LDC 4000 SET BLOCKS WRITTEN FLAG
- STD BT
- LJM WLI ENTER WRITE CODE
- SPACE 4,10
- PRSA CHTB
- PRSB TSAD
- ERRMI ERLA-* IF OVERFLOW INTO *CPP*
- WCT SPACE 4,15
- ** WCT - WRITE CARTRIDGE TAPE.
- *
- * THIS ROUTINE CHECKS END OF OPERATION STATUS AND CHECKS TO
- * DETERMINE IF ANOTHER BLOCK CAN BE TRANSFERRED. FOR CTS
- * THIS ROUTINE OVERLAYS THE FIRST PART OF *WRT*. THE LENGTH
- * OF THIS ROUTINE MUST BE THE SAME AS THE LENGTH OF THE FIRST
- * PART OF *WRT*.
- *
- * EXIT TO *WRT8* IF NO ERROR.
- * TO *CWP* WITH (EC) = ERROR CODE IF ERROR.
- * TO *EOF* IF COMMAND RETRY AND EOF WRITE.
- * TO *WLI* IF COMMAND RETRY AND NOT EOF WRITE.
- *
- * USES CM - CM+4.
- *
- * CALLS CNW, *CWP*, /PRESET/WFE.
- .WCT BSS 0
- LOC WRTX
- WCT SUBR ENTRY/EXIT
- LDD UP
- SCN 10 CLEAR EOR/EOF LAST BLOCK FLAG
- STD UP
- LDD MD
- LPC 7377 CLEAR EOR/EOF THIS OPERATION FLAG
- STD MD
- LDM BUFB-4
- LMN 5
- NJN WCT1 IF NOT FULL BLOCK
- LDM BUFB-5
- LMN 5
- ZJN WCT2 IF NOT EOR/EOF WRITTEN
- WCT1 LDN 10
- RAD UP SET EOR/EOF FLAGS
- LDC 400
- RAD MD
- WCT2 RJM CNW CHECK NEXT WRITE
- RJM /PRESET/WFE WAIT FOR END OF OPERATION
- PJN WCT3 IF NOT COMMAND RETRY
- LDM /WRITE/OPTU RESET OUT POINTER
- STD CN+3
- LDM /WRITE/OPTL
- STD CN+4
- LDD MD
- LPC 7377 CLEAR EOR/EOF THIS OPERATION FLAG
- STD MD
- RJM CNW CHECK NEXT WRITE
- LDN F0002
- STM ITMA CONTINUE IS THE NEXT FUNCTION
- LDM WCT
- LMC EOFA
- ZJP EOF IF CALLED FROM *EOF*
- LJM WLI RETRY THE WRITE
- WCT3 ZJN WCT4 IF NO ERROR
- LDN /MTX/STE STATUS ERROR
- WCT4 STD EC
- LDM /WRITE/BYRM
- ZJN WCT5 IF ALL BYTES TRANSFERRED
- LDD EC
- NJN WCT5 IF ERROR CODE ALREADY PRESENT
- LDN /MTX/CMF CHANNEL MALFUNCTION
- STD EC
- WCT5 LDD EC
- ADD EI
- ZJN WCT6 IF NO ERROR OR NO RECOVERED ERROR
- CALL CWP WRITE ERROR PROCESSOR
- * RETURN HERE IF END OF TAPE OR RECOVERED ERROR.
- WCT6 LDD CN+3
- STM /WRITE/OPTU SAVE OUT POINTER FOR COMMAND RETRY
- LDD CN+4
- STM /WRITE/OPTL
- WCTL EQU *-WCTX LENGTH OF *WCT*
- ERRNZ WRT8-* ADJUST *BSS* BEFORE *WRT8*
- LOC *O
- WCTF CHTB CHANNEL TABLE FOR *WCT*
- OPA SPACE 4,10
- .OPA BSS 0
- LOC .OPE
- OPA SPACE 4,10
- ** OPA - OUTPUT DATA TO ATS UNIT (NON-CYBER 180).
- *
- * IF THERE ARE MULTIPLE CHUNKS IN THE BLOCK, THIS ROUTINE
- * IS USED FOR ALL BUT THE LAST CHUNK. *OPL* IS USED FOR THE
- * LAST CHUNK.
- *
- * ENTRY (BY) = NUMBER OF BYTES TO OUTPUT.
- * (RDAB) = 0 IF NOT FIRST CHUNK.
- *
- * EXIT (A) = BYTES NOT TRANSFERRED.
- OPA1 AJM *,CH WAIT FOR *1LT* TO OUTPUT CHUNK
- LDD BY DELAY TO ALLOW *1LT* TO REACTIVATE CHANNEL
- OAM BUFB,CH OUTPUT DATA
- FJM *,CH
- DCN CH+40 INDICATE TO *1LT* TO RESUME OUTPUT
- NJN OPAX IF INCOMPLETE TRANSFER
- ACN CH
- OPA SUBR ENTRY/EXIT
- LDM RDAB
- ZJN OPA1 IF NOT FIRST CHUNK
- LDD BY
- ADN 5 ALLOW FOR BLOCK PREFIX
- OAM BUFB-5,CH OUTPUT DATA
- FJM *,CH
- DCN CH+40 INDICATE TO *1LT* TO RESUME OUTPUT
- NJN OPAX IF INCOMPLETE TRANSFER
- ACN CH
- UJN OPAX RETURN
- OPL SPACE 4,10
- ** OPL - OUTPUT LAST PARTIAL CHUNK TO ATS UNIT (NON-CYBER 180).
- *
- * ENTRY (BY) = NUMBER OF BYTES TO TRANSFER.
- * (RDAB) = 0 IF NOT FIRST CHUNK OF BLOCK.
- *
- * EXIT (A) = BYTES NOT TRANSFERRED.
- OPL1 AJM *,CH WAIT FOR *1LT* TO OUTPUT CHUNK
- LDD BY DELAY TO ALLOW *1LT* TO REACTIVATE CHANNEL
- LPC 7776 WRITE EVEN BYTE COUNT
- ADN 1
- OAM BUFB,CH OUTPUT PARTIAL CHUNK
- OPL SUBR ENTRY/EXIT
- LDM RDAB
- ZJN OPL1 IF NOT FIRST CHUNK
- LDD BY
- ADN 5+1
- LPC 7776 WRITE EVEN BYTE COUNT
- OAM BUFB-5,CH OUTPUT PARTIAL CHUNK
- UJN OPLX RETURN
- LOC *O
- .OPAL EQU *-.OPA LENGTH OF CODE
- ERRNG .OPEL-.OPAL IF CODE OVERFLOWS
- .OPAC CHTB CHANNEL TABLE FOR *OPA*/*OPL*
- OVERLAY (WRITE LABEL PROCESSOR.),(BUF+CLBL+10),,WLA
- WLA SPACE 4,15
- ** WLA - WRITE LABELS PROCESSOR.
- *
- * ENTRY (PB) = 6/OPERATION TYPE, 6/SECTION.
- *
- * USES T1, T2, CM - CM+4, CN - CN+4.
- *
- * CALLS /CPP/CPP, HNG, ITM, RUD, UAD, /WRITE/WRT,
- * LABEL PROCESSORS.
- *
- * MACROS CALL.
- ENTRY WLA
- WLA RJM RUD
- LDC 4000 SET BLOCKS WRITTEN FLAG
- STD BT
- RJM UAD GET CIO FUNCTION
- ADK /MTX/UFRQ
- CRD CM
- ADK /MTX/UCIA-/MTX/UFRQ
- CRD CN
- LDD PB CHECK FUNCTION
- SHN -6
- SBN /MTX/WLVR/100
- ZJN WLA2 IF WRITE VOL1, HDR1 AFTER REEL SWAP
- LDD CM
- LMN /MTX/CIO
- NJN WLA2 IF NOT PROCESSING CIO REQUEST
- LDD CN
- SHN -6
- LPN 17
- LMN /CIO/CLO
- ZJN WLA1 IF CLOSE
- LMN /CIO/OPE&/CIO/CLO
- NJN WLA2 IF NOT OPEN
- WLA1 CALL CPP CHANGE CONTROL POINTS
- LDN ZERL SET ADDRESS RELOCATION
- CRD CN
- LDC TADD
- STD CN
- RJM /CPP/CPP
- UJN WLA3 SELECT LABEL TYPE
- WLA2 LDM FETO INSURE NO EXTENDED LABELS
- SCN 40
- STM FETO
- WLA3 LDD LT
- LPC 1000
- ZJN WLA4 IF ANSI LABELS
- LDN 3
- WLA4 STD T1 SET LABEL TYPE INDEX
- LDM LTYP,T1 SET ADDRESS OF LABEL OPERATION TABLE
- STM WLAA
- ADN 1
- STM WLAB
- LDM LTYP+1,T1 SET LENGTH OF LABEL
- STD BY
- LDD PB SET UP TO PROCESS LABEL
- SHN -6
- SHN 1
- STD T2
- RAM WLAB
- STM WLAF
- LDD T2
- SBM LTYP+2,T1
- PJN WLA6 IF UNDEFINED OPERATION
- LDM *,T2
- WLAA EQU *-1
- ZJN WLA4 IF SEQUENCE NOT DEFINED
- STM WLAC
- LDD PB SET SECTION
- LPN 77
- STD T1
- SBM *
- WLAB EQU *-1
- MJN WLA7 IF LEGAL SECTION
- WLA6 RJM HNG HANG PP
- WLA7 LDM *,T1
- WLAC EQU *-1
- STM WLAD
- RJM * PROCESS LABEL
- WLAD EQU *-1
- ZJN WLA9 IF NO WRITE REQUIRED
- SHN -21 SAVE ADVANCE SECTION FLAG
- STM WLAE
- * ENTER HERE ON RETRY FROM WRITE ERROR RECOVERY.
- WLA8 LDD HP
- SHN 21-7
- PJN WLA8.1 IF NOT CTS
- LDC F0250 SHORT WRITE
- STM ITMA
- UJN WLA8.2 WRITE TAPE
- WLA8.1 RJM //ITM INITIATE TAPE MOTION
- WLA8.2 RJM /WRITE/WRT WRITE TAPE
- LDC *
- WLAE EQU *-1
- ZJN WLA9 IF ADVANCE SECTION
- AOD PA ADVANCE SUBSECTION
- UJN WLA10 CONTINUE LABEL PROCESSING
- WLA9 AOD PB ADVANCE TO NEXT SECTION
- WLA10 LDD PB
- LPN 77
- SBM *
- WLAF EQU *-1
- PJN WLA11 IF ALL SECTIONS PROCESSED
- LJM WLA3 SELECT NEXT LABEL TYPE
- WLAG EQU *-1
- * LJM RET2 (RECOVERED PARITY ERROR)
- WLA11 LJM RET1 EXIT
- SPACE 4,10
- ** TABLE OF LABEL TYPES AND SIZES.
- *T, 12/ TYPE,12/ SIZE
- LTYP BSS 0
- LOC 0
- CON ANS,LABL,ANSL ANSI LABELS
- * CON ANS,CLBL,ANSL (CTS)
- LOC *O
- LTYPL EQU *-LTYP
- FAD SPACE 4,10
- ** FAD - SET FET ADDRESS.
- *
- * THIS ROUTINE IS HERE BECAUSE ADDRESS MODIFICATION DOES NOT
- * WORK ABOVE 3777B.
- *
- * EXIT (A) = FET ADDRESS.
- *
- * MACROS SADT.
- FAD SUBR ENTRY/EXIT
- SADT .FE,,,A
- LDC *
- UJN FADX RETURN
- WTE SPACE 4,15
- ** WTE - WRITE TAPE MARK ERROR PROCESSOR.
- *
- * THIS ROUTINE IS OVERLAYED WITH *CPE* FOR CTS.
- *
- * ENTRY (A) = 0 IF NOT NOT READY ERROR.
- * (A) .NE. 0 IF NOT READY OR NO WRITE ENABLE.
- *
- * EXIT TO *RET3* IF READY DROP, NO WRITE ENABLE, OR WRITE
- * TAPE MARK FAILURE.
- * (EP) = 3 IF NO WRITE ENABLE.
- *
- * USES EC, EI, EP, LG, LG+1, T2, T3.
- *
- * CALLS *EMM*, FCN, UBW, WEO, WFC.
- *
- * MACROS CALL.
- WTE23 LDD LG+1 SET LAST GOOD BLOCK INFORMATION
- STD LG
- LDN 0 CLEAR RETRY COUNTER
- STD EI
- LDN 1 SET TAPE MARK INDICATION
- STM UBWB
- RJM UBW UPDATE WINDOW
- WTE SUBR ENTRY/EXIT
- ZJN WTE2 IF CHECK STATUS
- * NOT READY OR NO WRITE ENABLE.
- WTE0 LPN 1
- NJN WTE1 IF NOT READY
- LDN 3 SET SUB ERROR CODE
- STD EP
- LDN /MTX/NWE NO WRITE ENABLE
- LJM RET3 RETURN ERROR CODE
- WTE1 LDN /MTX/RDR DROP READY ERROR CODE
- STD EC
- CALL EMM CALL ERROR HANDLER
- LDD EC
- LJM RET3 RETURN
- WTE2 STD LG+1
- STD EC
- STM /WRITE/BYWR
- STM /WRITE/BYRM
- STD T3 CLEAR REPOSITIONING COUNT
- RJM WEO WAIT END OF OPERATION
- * CHECK FOR TAPE MARK STATUS IN REVERSE.
- WTE3 LDC F0113 BACKSPACE OVER TAPE MARK
- RJM FCN
- RJM WFC WAIT END OF OPERATION
- STM WTEB SAVE BACKSPACE STATUS FOR ANALYSIS
- LPN 20 TAPEMARK STATUS BIT
- STM WTEA SAVE STATUS OF BKSP OF CURRENT TAPE MARK
- LDM BIDW,WP LOAD LAST GOOD RECORD BLOCK ID
- SBN 1
- ZJP WTE5 IF LAST GOOD RECORD IS TAPE MARK
- WTE3.1 AOD T3 INCREASE REPOSITIONING COUNT
- LDN 13 FORESPACE OVER TAPE MARK
- RJM FCN
- RJM WFC WAIT END OF OPERATION
- LPN 20
- ZJN WTE4 IF TAPE MARK NOT SEEN ON FORESPACE
- LDM WTEA
- ZJN WTE4.1 IF TAPE MARK NOT SEEN ON BACKSPACE
- LJM WTE23 TAPE MARK SEEN IN BOTH DIRECTIONS
- WTE4 LDM BIDW,WP LOAD BLOCK ID FROM WINDOW
- SBM UBWB
- NJN WTE4.1 IF NOT LAST GOOD DATA RECORD
- SOD T3 ADJUST REPOSITIONING COUNT
- AOD EI INCREMENT RETRY COUNTER
- LJM WTE17 REWRITE THE TAPE MARK
- WTE4.1 SOD T3 REDUCE REPOSITIONING COUNT
- LDC F0113 BACKSPACE OVER THIS BLOCK
- RJM FCN
- RJM WFC WAIT END OF OPERATION
- * TAPE MARK RECOVERY.
- WTE5 AOD EI SET SINGLE RETRY
- LDD WP POINTER TO LAST GOOD BLOCK ID
- STD T2
- WTE8 LDM BIDW,T2 LOAD BLOCK ID FROM WINDOW
- SBN 4 INVALID BLOCK ID
- ZJP WTE14 IF LAST BLOCK ID IN WINDOW
- * BACKSPACE OVER TAPE MARKS AND LAST GOOD DATA BLOCK.
- SOD T3 REDUCE REPOSITIONING COUNT
- LDC F0113 BACKSPACE OVER PRU
- RJM FCN
- RJM WFC WAIT END OF OPERATION
- SHN 21-4
- PJN WTE11 IF NO TAPE MARK
- LDM BIDW,T2
- SBN 1
- NJN WTE11 IF BLOCK ID WINDOW AND STATUS MISMATCH
- SOD T2 REDUCE WINDOW POINTER
- PJN WTE9 IF NO WRAP AROUND
- LDN 7
- STD T2
- WTE9 SBD WP
- NJN WTE8 IF MORE IN BLOCK ID WINDOW
- UJP WTE14.1 LAST BLOCK ID IN WINDOW
- * FORESPACE OVER LAST GOOD DATA BLOCK.
- WTE11 LDD HP
- LPN 1
- NJN WTE12 IF 9 TRACK
- LDD MD CURRENT PARITY TO BE USED ON FORESPACE
- SHN -5
- LMM BIDW,T2 PARITY THAT BLOCK WAS WRITTEN AT
- LPN 2
- ZJN WTE12 IF NO CHANGE NEEDED
- LDN 5 TOGGLE TO OPPOSITE PARITY
- RJM FCN
- WTE12 AOD T3 INCREASE REPOSITIONING COUNT
- LDN 13 FORESPACE OVER LAST GOOD DATA BLOCK
- RJM FCN
- RJM WFC WAIT END OF OPERATION
- SHN 21-13
- PJN WTE13 IF NO ALERT ON FORESPACE
- LDM BIDW,T2 LOAD BLOCK ID
- LPN 2
- NJN WTE14 IF WRITTEN AS EVEN PARITY
- WTE13 SHN 7
- MJN WTE13.1 IF TAPE MARK STATUS FORESPACE
- LDM BIDW,T2
- SBM UBWB
- ZJN WTE13.2 IF BLOCK ID MATCHES
- AOM WTEA
- LPN 62
- ZJN WTE12 IF NO TAPE MARK AND NEXT BLOCK NOT CHECKED
- WTE13.1 UJN WTE15 FATAL ERROR WRITING TAPE MARK
- WTE13.2 LDM WTEA
- LPN 1
- ZJN WTE14 IF MATCH FOUND ON EXPECTED BLOCK
- SOD T3 ADJUST REPOSITIONING COUNT
- * FORESPACE OVER TAPE MARKS IF ANY.
- WTE14 LDD T2
- SBD WP
- ZJN WTE16 IF NO TAPE MARKS
- WTE14.1 AOD T2 INCREMENT TEMP WINDOW POINTER
- LPN 7
- STD T2
- AOD T3 INCREASE REPOSITIONING COUNT
- LDN 13 FORESPACE OVER TAPE MARK
- RJM FCN
- RJM WFC WAIT END OF OPERATION
- LPN 20
- NJN WTE14 IF TAPE MARK IN STATUS
- WTE15 LJM WTE19 FATAL ERROR ON WRITING TAPE MARK
- * CHECK IF CURRENT TAPE MARK SEEN ON BACKSPACE.
- WTE16 STD T3 CLEAR REPOSITIONING COUNT
- LDC 0 CURRENT TAPE MARK STATUS/FLAGS
- WTEA EQU *-1
- LPN 20
- ZJN WTE17 IF NO TAPE MARK STATUS ON BACKSPACE
- RAM WTEA BLOCK THIS PATH
- LJM WTE3.1 CHECK FOR TAPE MARK
- * ISSUE ERASES AND REWRITE TAPE MARK.
- WTE17 LDD EI RETRY COUNTER
- STD T2 MAKE ERASE COUNTER
- SBN 6
- PJN WTE19 IF MAX RETRY REACHED
- WTE18 LDN 52 ISSUE ERASE
- RJM FCN
- RJM WEO
- SOD T2 REDUCE ERASE COUNTER
- NJN WTE18 IF LOOP ERASE FUNCTIONS
- LDN F0051 ISSUE WRITE TAPE MARK
- RJM FCN
- RJM WEO
- LDN /MTX/TME WRITE TAPE MARK ERROR CODE
- STD EC
- LDD DS SET UP DETAIL STATUS
- STM //STER
- CALL EMM CALL ERROR HANDLER
- LJM WTE3 REVERIFY TAPE MARK
- * ERROR ON TAPE MARK RECOVERY. REPOSITION TAPE FOR POSSIBLE
- * SUBSEQUENT *CLOSER* OPERATION.
- WTE19 LDD T3 ERROR REPOSITIONING COUNT
- SHN 21-13
- PJN WTE21 IF BACKSPACE REPOSITIONING NEEDED
- AOD T3 INCREASE REPOSITIONING COUNT
- SHN -14 CHECK FOR OVERFLOW
- NJN WTE22 IF REPOSITIONING DONE OR NOT REQUIRED
- LDC 13 FORESPACE ONE BLOCK
- WTE20 RJM FCN
- RJM WFC WAIT END OF OPERATION
- UJN WTE19 CHECK IF MORE REPOSITIONING REQUIRED
- WTE21 ZJN WTE22 IF REPOSITIONING DONE OR NOT REQUIRED
- SOD T3 REDUCE REPOSITIONING COUNTER
- LDC F0113
- UJN WTE20 BACKSPACE ONE BLOCK
- WTE22 LDN /MTX/TME WRITE TAPE MARK FAILURE
- STD EC
- LDD DS SET UP DETAIL STATUS
- STM //STER
- CALL EMM CALL ERROR HANDLER
- LDD EC
- LJM RET3 RETURN TO MAGNET
- WTEB BSSZ 1 INITIAL BACKSPACE STATUS FOR ANALYSIS
- WFC SPACE 4,10
- ** WFC - WAIT BACKSPACE FUNCTION COMPLETE.
- * TIMES OUT APPROXIMATELY 25 FEET OF TAPE.
- *
- * EXIT (A) = (DS) = UNIT STATUS.
- *
- * USES T4.
- *
- * CALLS //STW.
- WFC2 CON 0 ENTERED VIA *RJM* FROM //STW
- SOD T4
- NJN WFC1 IF NOT TIMEOUT
- LDC //ERR RESET ERROR EXIT
- STM //STWC
- UJN WFC1 ATTEMPT 1 MORE WAIT
- WFC SUBR ENTRY/EXIT
- LDC 2000 SET TIME OUT
- STD T4
- LDC WFC2 SET RETURN ON TIMEOUT IN //STW
- STM //STWC
- WFC1 LDN 0 WAIT NOT BUSY
- RJM //STW
- LDC //ERR RESET ERROR EXIT
- STM //STWC
- LDD DS
- UJN WFCX RETURN
- WFM SPACE 4,10
- ** WFM - WRITE FILE MARK.
- *
- * COUNTS TAPE MARK AS A DATA BLOCK IF NOT LABEL OPERATION.
- *
- * CALLS WTM.
- WFM SUBR ENTRY/EXIT
- LDD UP SET EOR/EOF FLAG
- SCN 10
- LMN 10
- STD UP
- LDD MD CLEAR TAPE MARK REQUEST
- SCN 14
- STD MD
- RJM WTM WRITE TAPE MARKS
- LDD PB
- SHN -6
- NJN WFM1 IF LABELING OPERATION
- AOD BL+1 COUNT BLOCK
- SHN -14
- RAD BL
- WFM1 LDN 0
- UJN WFMX RETURN
- SPACE 4,10
- ERRNG BUFB-* OVERFLOWED INTO WRITE RECOVERY
- TITLE ANSI LABEL PROCESSORS.
- SPACE 4,10
- ** TABLE OF LABEL OPERATIONS.
- ANS INDEX ANSI LABELS OPERATION TABLE
- INDEX /MTX/WLTM/40,(WEF,WEFL) WRITE TAPE MARK
- INDEX /MTX/WLTR/40,(ETL,ETLL) WRITE TRAILER LABEL
- INDEX /MTX/WLEV/40,(EVL,EVLL) WRITE END OF VOLUME LABEL
- INDEX /MTX/WLVH/40,(VLL,VLLL) WRITE VOL1, HDR1
- INDEX /MTX/WLME/40,(EFL,EFLL) WRITE MULTI-FILE EOF
- INDEX /MTX/WLVR/40,(VLL,VLLL) WRITE VOL1, HDR1 ON REEL SWAP
- INDEX /MTX/WLMX/40 TERMINATE TABLE
- ANSL EQU *-ANS LENGTH OF TABLE
- EFL BSS 0
- LOC 0
- CON WFM WRITE FILE MARK
- CON EOF WRITE *EOF1*
- CON WFM WRITE FILE MARK
- CON CWS CLEAR WRITE STATUS
- LOC *O
- EFLL EQU *-EFL
- EVL BSS 0
- LOC 0
- CON ERA
- CON WFM
- CON EOV
- CON EVO
- CON UTL
- CON WFM
- CON WFM
- CON WFM
- CON CWS
- LOC *O
- EVLL EQU *-EVL
- ETL BSS 0
- LOC 0
- CON WFM
- CON EOF
- CON EFO
- CON UTL
- CON WFM
- CON WFM
- CON WFM
- CON CWS
- LOC *O
- ETLL EQU *-ETL
- VLL BSS 0
- LOC 0
- CON VOL
- CON UVL
- CON HDR
- CON OHD
- CON UHL
- CON WFM
- LOC *O
- VLLL EQU *-VLL
- WEF BSS 0
- LOC 0
- CON WFM
- LOC *O
- WEFL EQU *-WEF
- SPACE 4,10
- ** COMMON EXIT CONDITIONS.
- * (A) = 0, NO WRITE REQUIRED, SECTION NUMBER WILL BE ADVANCED.
- * (A) = 40XXXX, WRITE BLOCK, DON,T ADVANCE SECTION NUMBER.
- * (A) = XXXX, WRITE BLOCK, ADVANCE SECTION NUMBER.
- ELA SPACE 4,10
- ** ELA - EXTENDED LABELS ADDRESS PROCESSING.
- *
- * ENTRY (T6 - T7) = POSITION TO START AT IN BUFFER.
- *
- * EXIT (A) = ABSOLUTE ADDRESS.
- * (A) = 0, END OF LABEL BUFFER.
- *
- * CALLS FAD.
- ELA SUBR ENTRY/EXIT
- LDM FETO
- SHN 21-5
- PJN ELA0 IF NO EXTENDED LABELS
- RJM FAD GET FET ADDRESS
- ADN 11
- CRD CM
- LDD CM+3
- SHN 14
- STD CM+1
- SHN -14
- STD CM+3
- SHN 14
- LMD CM+4
- SBN 2
- MJN ELA0 IF NO LABEL BUFFER
- LDD CM+2
- SHN 6
- LMD CM+1
- STD CM+2
- SHN -14
- STD CM+1
- LDD T6
- SBD CM+1
- SHN 14
- ADD T7
- SBD CM+2
- ADN 11 ALLOW FOR LABEL
- MJN ELA1 IF NOT END OF LABEL BUFFER
- ELA0 LDN 0 INDICATE END OF BUFFER
- LJM ELAX RETURN
- ELA1 LDD CM+1 CHECK IF BUFFER WITHIN FL
- ADD CM+3
- SHN 14
- ADD CM+2
- ADD CM+4
- SHN -6
- SBD FL
- MJN ELA2 IF BUFFER WITHIN FL
- LDN /MTX/BAE BUFFER ARGUMENT ERROR
- LJM RET3 RETURN ERROR CODE
- ELA2 LDD CM+3 CALCULATE LABEL ADDRESS
- ADD T6
- SHN 6
- ADD RA
- SHN 6
- ADD CM+4
- ADD T7
- LJM ELAX RETURN
- ERA SPACE 4,10
- ** ERA - ERASE.
- *
- * SKIP OVER THE EOT MARKER SO THAT THE FIRST TAPE MARK IN THE
- * TRAILER LABEL SEQUENCE CAN BE WRITTEN AFTER THE EOT MARKER.
- * THIS WILL REDUCE THE POSSIBILITY OF AN ERROR OCCURRING WHEN
- * LATER READING THE FIRST TAPE MARK.
- *
- * EXIT (A) = 0.
- *
- * CALLS FCN, WEO.
- ERA SUBR ENTRY/EXIT
- LDN 52 SKIP OVER EOT BLOCK (ERASE)
- ERAA EQU *-1
- * UJN ERA1 (CTS)
- RJM FCN
- RJM WEO WAIT FOR END OF OPERATION
- ERA1 LDN 0 NO WRITE REQUIRED, ADVANCE SECTION
- UJN ERAX RETURN
- EOV SPACE 4,10
- ** EOV - WRITE END OF VOLUME LABEL.
- * WRITE 3 TAPE MARKS IF UNLABELED.
- *
- * CALLS CCB, HTR.
- EOV2 AOD PB SKIP *EOV2* SEQUENCE
- AOD PB SKIP *UTL* SEQUENCE
- LDN 0 INDICATE NO WRITE
- EOV SUBR ENTRY/EXIT
- LDD LT
- SHN 21-12
- MJN EOV1 IF LABELED
- LDD FM
- SHN -6
- SBN /MTX/TFSI+1
- MJN EOV1 IF I OR SI FORMAT
- SBN /MTX/TFLI-/MTX/TFSI-1
- NJN EOV2 IF NOT LI FORMAT
- EOV1 LDN 1 SET POSITION IN LABEL BUFFER
- STD T6
- LDC =H*EOV1*+40000 SET *EOV1*
- RJM CCB
- RJM HTR
- UJN EOVX RETURN
- EVO SPACE 4,10
- ** EVO - END OF VOLUME - 2.
- *
- * USES T6.
- *
- * CALLS CCB, SFL.
- EVO1 LDN 0 INDICATE NO WRITE
- EVO SUBR ENTRY/EXIT
- LDM IVSN
- ZJN EVO1 IF NEXT VSN NOT KNOWN
- LDM EVSN+4
- SHN 21-5
- MJN EVO1 IF NEXT VSN IS SCRATCH
- LDN 1 SET POSITION IN LABEL BUFFER
- STD T6
- LDC =H*EOV2*+40000 SET EOV2
- RJM CCB
- LDC IVSN+60000 COPY VSN
- RJM CCB
- LDC 70D SPACE FILL REMAINDER
- RJM SFL
- LDN 1 INDICATE WRITE REQUIRED
- UJN EVOX RETURN
- EOF SPACE 4,10
- ** EOF - WRITE END OF FILE LABEL.
- *
- * USES T6.
- *
- * CALLS CCB, HTR.
- EOF2 LDN 0 INDICATE NO WRITE
- EOF SUBR ENTRY/EXIT
- LDD LT
- SHN 21-12
- MJN EOF1 IF LABELED
- LDD FM
- SHN -6
- SBN /MTX/TFSI+1
- MJN EOF1 IF I OR SI FORMAT
- SBN /MTX/TFLI-/MTX/TFSI-1
- NJN EOF2 IF NOT LI FORMAT
- EOF1 LDN 1 SET POSITION IN LABEL BUFFER
- STD T6
- LDC =H*EOF1*+40000 SET *EOF1*
- RJM CCB
- RJM HTR
- UJN EOFX RETURN
- EFO SPACE 4,10
- ** EFO - PROCESS EOF2 - EOF9.
- *
- * CALLS PSL.
- EFO SUBR ENTRY/EXIT
- LDC 3REOF
- RJM PSL
- UJN EFOX RETURN
- HDR SPACE 4,10
- ** HDR - *HDR1* PROCESSOR.
- *
- * CALLS CCB, HTR.
- HDR SUBR ENTRY/EXIT
- LDN 1 SET POSITION IN LABEL BUFFER
- STD T6
- LDC =H*HDR1*+40000 SET *HDR1*
- RJM CCB
- RJM HTR
- RJM WUC WRITE UNIT DESCRIPTOR TABLE CONDITIONALLY
- UJN HDRX RETURN
- OHD SPACE 4,10
- ** OHD - PROCESS HDR2-HDR9.
- *
- * CALLS PSL.
- OHD SUBR ENTRY/EXIT
- LDC 3RHDR
- RJM PSL
- UJN OHDX RETURN
- UHL SPACE 4,10
- ** UHL - USER FILE HEADER LABEL.
- *
- * CALLS PUL.
- UHL SUBR ENTRY/EXIT
- LDC 3RUHL
- RJM PUL
- UJN UHLX RETURN
- UTL SPACE 4,10
- ** UTL - USER TRAILER LABELS.
- *
- * CALLS PUL.
- UTL SUBR ENTRY/EXIT
- LDC 3RUTL
- RJM PUL
- UJN UTLX RETURN
- UVL SPACE 4,10
- ** UVL - USER VOLUME HEADER LABEL.
- *
- * CALLS PSL.
- UVL2 LDN 1R2 RESET SEARCH TO BEGIN AT XXX2
- STM PSLA
- SOM PSLB
- LDN 0
- STD PA
- UVL SUBR ENTRY/EXIT
- LDD PA
- NJN UVL1 IF NOT FIRST ENTRY
- LDN 1R1 SET SEARCH TO BEGIN AT UVL1
- STM PSLA
- AOM PSLB
- UVL1 LDC 3RUVL SET LABEL TO SEARCH FOR
- RJM PSL
- ZJN UVL2 IF NO UVL LABELS
- UJN UVLX RETURN
- VOL SPACE 4,10
- ** VOL - VOLUME HEADER LABEL.
- *
- * USES T6, T7, CM - CM+4, CN - CN+4.
- *
- * CALLS CCB, CLF, GUD, SFL, SLC.
- VOL1 AOD PB ADVANCE SECTION
- LDN 0 SET LAST GOOD BLOCK TAPE MARK
- STD LG
- STD LG+1
- VOL SUBR ENTRY/EXIT
- LDD UP SET LAST OPERATION WRITE FLAG
- SCN 20
- LMN 20
- STD UP
- LDD EI
- NJN VOL2 IF ERROR RECOVERY IN PROGRESS
- LDD DS
- LPN 4
- ZJN VOL1 IF NOT LOAD POINT
- VOL2 LDN 1 SET POSITION IN LABEL BUFFER
- STD T6
- LDC =H*VOL1*+40000 SET *VOL1*
- RJM CCB
- LDN 11D COPY VSN
- STD T7
- LDN 6
- RJM CLF
- LDN 55D COPY VOLUME ACCESSIBILITY FROM *UGNU*
- STD T7
- LDN 1
- RJM CLF
- LDN 20D SPACE FILL LABEL
- RJM SFL
- LDN 6 SPACE FILL LABEL
- RJM SFL
- LDN 8D GET FAMILY ORDINAL
- STD T7
- RJM GUD
- NJN VOL3 IF NOT NULL FAMILY
- LDN 1 SUBSTITUTE DEFAULT FAMILY
- VOL3 STD CN SAVE FAMILY ORDINAL
- LDK FOTP READ FOT POINTERS
- CRD CM
- LDD CM CALCULATE FOT ENTRY ADDRESS
- SHN 14
- ADD CM+1
- ADD CN
- CRD CN
- LDC 70000+CN
- RJM CCB
- LDN 1 COPY USER NAME
- STD T7
- LDN 7
- RJM CLF
- LDN 28D SPACE FILL
- RJM SFL
- LDN 1R1 SET LABELS ARE ANSI STANDARD
- RJM SLC
- LDN 1 SET TO WRITE BLOCK
- LJM VOLX RETURN
- CWS SPACE 4,10
- ** CWS - CLEAR WRITE STATUS.
- CWS SUBR ENTRY/EXIT
- LDD UP
- SCN 30 CLEAR WRITE OPERATION AND EOR/EOF FLAGS
- STD UP
- LDN 0
- UJN CWSX RETURN
- ERRNZ /MTX/WLTM
- TITLE CHARACTER PROCESSING SUBROUTINES.
- SPACE 4,10
- ** DIRECT CELL USAGE IN FOLLOWING ROUTINES.
- *
- * (T5) NUMBER OF CHARACTERS.
- * (T6) CHARACTER POSITON IN *BUF*.
- * (T7) CHARACTER POSITON IN *UDT*.
- *
- * ALL CHARACTER POSITIONS ARE REFERENCED STARTING WITH *1*.
- * THUS, THE CHARACTER POSITION VALUES BEING USED TO ACCESS
- * *BUF* MAY BE REFERENCED DIRECTLY TO THE LABEL STANDARD.
- CCB SPACE 4,10
- ** CCB - COPY CHARACTER BUFFER.
- * COPYS THE SPECIFIED NUMBER OF CHARACTERS FROM THE SPECIFIED
- * FIELD TO THE LABEL BUFFER. TRAILING ZEROS ARE BLANK FILLED.
- *
- * ENTRY (A, 21 - 14) = NUMBER OF CHARACTERS.
- * (A, 13 - 0) = ADDRESS OF BUFFER TO MOVE FROM.
- * (T6) = CHARACTER POSITION IN *BUF*.
- *
- * CALLS SFL, SLC.
- CCB2 LDD T5 SPACE FILL LABEL
- RJM SFL
- CCB SUBR ENTRY/EXIT
- STD T4 SAVE BUFFER ADDRESS
- SHN -14
- STD T5 SAVE CHARACTER COUNT
- CCB1 LDI T4 MOVE CHARACTER
- SHN -6
- ZJN CCB2 IF 00 CHARACTER
- RJM SLC STORE CHARACTER
- SOD T5
- ZJN CCBX IF ALL CHARACTERS MOVED
- LDI T4 MOVE CHARACTER
- LPN 77
- ZJN CCB2 IF 00 CHARACTER
- RJM SLC
- SOD T5
- ZJN CCBX IF ALL CHARACTERS MOVED
- AOD T4
- UJN CCB1 LOOP
- CLF SPACE 4,10
- ** CLF - COPY LABEL FIELD FROM UDT.
- * IF FIRST CHARACTER FIELD IS ZERO, FIELD IS SPACE FILLED.
- *
- * ENTRY (A) = NUMBER OF CHARACTERS TO MOVE.
- * (T6) = CHARACTER POSITION IN *BUF*.
- * (T7) = CHARACTER POSITION IN *UDT*.
- *
- * CALLS GUD, SFL, SLC.
- CLF SUBR ENTRY/EXIT
- STD T5
- RJM GUD
- NJN CLF2 IF SPACE FILL NOT NEEDED
- LDD T5 ADVANCE CHARACTER POSITION IN *UDT*
- RAD T7
- LDD T5 SPACE FILL
- RJM SFL
- UJN CLFX RETURN
- CLF1 RJM GUD GET UNIT DESCRIPTOR CHARACTER
- CLF2 RJM SLC STORE LABEL CHARACTER
- SOD T5
- NJN CLF1 IF STILL MORE CHARACTERS TO MOVE
- UJN CLFX RETURN
- DCV SPACE 4,10
- ** DCV - DECIMAL CONVERT TO A 6 DIGIT NUMBER.
- *
- * ENTRY (CM+3 - CM+4) = QUANITY TO BE CONVERTED.
- *
- * EXIT (DCB+2 - DCB+4) = DISPLAY CODE DECIMAL NUMBER.
- *
- * MACROS MONITOR.
- DCV SUBR ENTRY/EXIT
- LDN 0 PRESET TO CONVERT NUMBER
- STD CM+1
- STD CM+2
- LDD MA
- CWD CM
- MONITOR RDCM REQUEST DATA CONVERSION
- LDD MA
- CRD CM
- LDD CM+4 REMOVE *.* FROM DATA
- STM DCB+4
- LDD CM+3
- LPN 77
- SHN 14
- LMD CM+2
- SHN 6
- STM DCB+3
- LPC 770000
- LMD CM+1
- SHN 6
- STM DCB+2
- LDC DCB+1 REMOVE SPACES
- STD T1
- DCV1 AOD T1 ADVANCE TO NEXT BYTE
- LMC DCB+5
- ZJN DCV3 IF ALL SPACES
- LDI T1
- ZJN DCV2 IF ZERO
- LMC 2R
- NJN DCV3 IF NOT * *
- DCV2 LDC 2R00
- STI T1
- UJN DCV1 LOOP
- DCV3 SHN -6
- NJN DCV4 IF NOT * *
- LCN -1R0+1R
- SHN 6
- RAI T1
- DCV4 LJM DCVX RETURN
- GUD SPACE 4,10
- ** GUD - GET UNIT DESCRIPTOR CHARACTER.
- *
- * ENTRY (T7) = CHARACTER POSITION OF NEXT CHARACTER.
- *
- * EXIT (A) = CHARACTER.
- * (T7) = INCREMENTED.
- *
- * USES T1.
- GUD1 LDM UDTB-1,T1
- LPN 77
- GUD SUBR ENTRY/EXIT
- AOD T7
- SBN 1
- SHN 21
- STD T1
- SHN -21
- ZJN GUD1 IF EVEN CHARACTER POSITION
- LDM UDTB,T1
- SHN -6
- UJN GUDX RETURN
- HTR SPACE 4,10
- ** HTR - GENERATE HEADER/TRAILER LABEL INFORMATION.
- *
- * EXIT (A) = 1. (INDICATE BLOCK WRITE)
- *
- * CALLS CLF, C2D, DCV, SFL.
- HTR SUBR ENTRY/EXIT
- LDN 5 GENERATE FILE IDENTIFIER
- STD T6
- LDN 21D
- STD T7
- LDN 17D
- RJM CLF
- LDN 41D COPY SET IDENTIFCATION
- STD T7
- LDN 6
- RJM CLF
- LDM UDTB+22 CONVERT SECTION NUMBER
- LPN 77
- STD CM+3
- LDM UDTB+23
- STD CM+4
- RJM DCV
- LDC /MTX/UUDTL*10D+7
- STD T7
- LDN 4
- RJM CLF
- LDM UDTB+27 CONVERT SEQUENCE NUMBER
- LPN 77
- STD CM+3
- LDM UDTB+30
- STD CM+4
- RJM DCV
- LDC /MTX/UUDTL*10D+7
- STD T7
- LDN 4
- RJM CLF
- LDM UDTB+34 CONVERT GENERATION NUMBER
- LPN 77
- STD CM+3
- LDM UDTB+35
- STD CM+4
- RJM DCV
- LDC /MTX/UUDTL*10D+7
- STD T7
- LDN 4
- RJM CLF
- LDM UDTB+33 CONVERT GENERATION VERSION NUMBER
- LPN 77
- SHN 14
- LMM UDTB+34
- SHN -6
- STD CM+4
- LDN 0
- STD CM+3
- RJM DCV
- LDC /MTX/UUDTL*10D+9D
- STD T7
- LDN 2
- RJM CLF
- LDN JDAL SET CREATION DATE
- CRM DCB,ON
- LDC /MTX/UUDTL*10D+6
- STD T7
- RJM SCL SET CREATION DATE CENTURY
- LDN 5
- RJM CLF
- LDC 66D SET EXPIRATION DATE
- STD T7
- RJM SCL SET EXPIRATION DATE CENTURY
- LDN 5
- RJM CLF
- LDN 47D SET ACCESSIBILITY CODE
- STD T7
- LDN 1
- RJM CLF
- LDD BL CONVERT BLOCK COUNT
- STD CM+3
- LDD BL+1
- STD CM+4
- RJM DCV
- LDC /MTX/UUDTL*10D+5
- STD T7
- LDN 6
- RJM CLF
- LDD MA SET OPERATING SYSTEM NAME
- CWM HTRA,ON
- SBN 1
- CRM DCB,ON
- LDC /MTX/UUDTL*10D+1
- STD T7
- LDN 10D
- RJM CLF
- LDD EO SET EST ORDINAL WRITTEN ON
- SHN -3 POSITION UPPER DIGITS
- RJM C2D
- STM DCB
- LDD EO PROCESS LOWER DIGIT
- LPN 7
- ADN 1R0
- SHN 6
- STM DCB+1
- LDC /MTX/UUDTL*10D+1
- STD T7
- LDN 3
- RJM CLF
- LDN 7 SPACE FILL
- RJM SFL
- LDN 1 INDICATE TO WRITE BLOCK
- LJM HTRX RETURN
- HTRA DATA 10HNOS "VERNUM"-
- PSL SPACE 4,10
- ** PSL - PROCESS SEQUENTIAL TYPE OPTIONAL LABELS.
- * (HDR2 - HDR9, EOF2 - EOF9, UVL1 - UVL9)
- *
- * ENTRY (A) = 3 CHARACTER LABEL NAME TO SEARCH FOR.
- * (PA) = FOURTH CHARACTER OF LABEL - 2.
- *
- * EXIT (A) = (PA) = 0 IF NO LABEL.
- *
- * CALLS ELA.
- PSL4 STD PA
- PSL SUBR ENTRY/EXIT
- SHN 14
- STM PSLC
- SHN -6
- SCN 77
- LMC 1R2
- PSLA EQU *-1
- * LMC 1R1 (UVL LABELS)
- ADD PA
- STM PSLD
- LDN ZERL SET TO START AT BEGINNING OF BUFFER
- CRD T5
- LDD PA
- PSLB LMN 9D-1
- * LMN 9D (UVL LABELS)
- ZJN PSL4 IF MAXIMUM LABELS
- PSL1 RJM ELA
- ZJN PSL4 IF NO EXTENDED LABEL OR END OF BUFFER
- CRD CN
- ADN 1
- CRD CM
- LDD CN+4
- ZJN PSL4 IF END OF LABELS IN BUFFER
- LMC 80D
- NJN PSL3 IF NOT CORRECT LENGTH
- LDD CM
- LMC *
- PSLC EQU *-1
- NJN PSL2 IF NOT CORRECT LABEL
- LDD CM+1
- LMC *
- PSLD EQU *-1
- NJN PSL2 IF NOT CORRECT LABEL
- LDN 10 READ LABEL
- STD T5
- RJM ELA
- ADN 1
- CRM BUF,T5
- LCN 1 SET WRITE LABEL
- LJM PSLX RETURN
- PSL2 LDN 11 INCREMENT TO NEXT LABEL BLOCK
- RAD T7
- SHN -14
- RAD T6
- LJM PSL1 LOOP FOR NEXT LABEL
- PSL3 LDN /MTX/IXL INCORRECT CHARACTER COUNT IN HEADER
- LJM RET3 RETURN ERROR CODE
- PUL SPACE 4,10
- ** PUL - PROCESS USER LABELS.
- *
- * ENTRY (A) = 3 CHARACTER LABEL NAME TO SEARCH FOR.
- * (PA) = PARTICULAR LABEL OF TYPE TO TAKE.
- *
- * EXIT (PA) = (A) = 0, IF NO LABEL.
- *
- * CALLS ELA.
- PUL4 STD PA
- PUL SUBR ENTRY/EXIT
- SHN 14
- STM PULA
- SHN -14
- STM PULB
- LDN ZERL
- CRD T5
- LDD PA
- LMD HN
- ZJN PUL4 IF MAXIMUM NUMBER OF USER LABELS
- PUL1 RJM ELA
- ZJN PUL4 IF NO EXTENDED LABELS OR END OF BUFFER
- CRD CN
- ADN 1
- CRD CM
- LDD CN+4
- ZJN PUL4 IF END OF LABELS IN BUFFER
- LMC 80D
- NJN PUL3 IF NOT CORRECT LENGTH
- LDD CM
- LMC *
- PULA EQU *-1
- NJN PUL2 IF NOT CORRECT LABEL
- LDD CM+1
- SHN -6
- LMC *
- PULB EQU *-1
- NJN PUL2 IF NOT CORRECT LABEL
- AOD T5
- SBN 1
- LMD PA
- NJN PUL2 IF NOT CORRECT LABEL BLOCK
- LDN 10 READ LABEL
- STD T5
- RJM ELA
- ADN 1
- CRM BUF,T5
- LCN 1
- LJM PULX RETURN
- PUL2 LDN 11 INCREMENT TO NEXT BLOCK
- RAD T7
- SHN -14
- RAD T6
- LJM PUL1 LOOP
- PUL3 LDN /MTX/IXL INCORRECT CHARACTER COUNT IN HEADER
- LJM RET3 RETURN ERROR CODE
- RUD SPACE 4,10
- ** RUD - READ UDT VSN AND LABEL INFORMATION.
- *
- * EXIT (A) = 0 IF NOT AT MAGNET CP.
- * UDT INFORMATION READ IF AT MAGNET CP.
- *
- * CALLS UDA.
- RUD SUBR ENTRY/EXIT
- RJM UDA
- ZJN RUDX IF NOT AT MAGNET CP
- CRM EVSN,T1 READ VSN AND LABEL INFORMATION
- UJN RUDX RETURN
- UDA SPACE 4,10
- ** UDA - SET UDT ADDRESS OF VSN AND LABEL PARAMETERS.
- *
- * EXIT (A) = ADDRESS OF *UESN*.
- * (T1) = NUMBER OF UDT WORDS IN BLOCK.
- *
- * CALLS UAD.
- UDA1 LDN 0
- UDA SUBR ENTRY/EXIT
- LDM CECB
- LPN 77
- NJN UDA1 IF NOT AT MAGNET CP
- LDN /MTX/UUDTL+2
- STD T1
- RJM UAD
- ADK /MTX/UESN
- ERRNZ /MTX/UISN-/MTX/UESN-1
- ERRNZ /MTX/UUFN-/MTX/UISN-1
- UJN UDAX RETURN
- WUC SPACE 4,15
- ** WUC - WRITE UNIT DESCRIPTOR TABLE CONDITIONALLY.
- * UPDATE UDT CREATION DATE FOR SYMBOLIC ACCESS TMS TAPES.
- *
- * EXIT CREATION DATE FROM LABEL WRITTEN INTO *UDT* IF TAPE IS
- * SYMBOLIC ACCESS.
- *
- * NOTE (A) IS PRESERVED.
- *
- * USES CM - CM+4.
- *
- * CALLS UAD, WUD.
- WUC SUBR ENTRY/EXIT
- STM WUCA+1 SAVE (A)
- SHN -14
- ADC LDCI
- STM WUCA
- LDM CECB CHECK CONTROL POINT
- LPN 77
- NJN WUC1 IF NOT AT MAGNET CP
- RJM UAD GET UDT ADDRESS
- ADN /MTX/UTMS
- CRD CM CHECK FOR TMS TAPE, SYMBOLIC ACCESS
- LDD CM+4
- SHN 21-10
- PJN WUC1 IF NOT SYMBOLIC ACCESS
- LDM WUCB+0 SET CREATION DATE
- STM WUCC+0
- LDM WUCB+1
- STM WUCC+1
- LDM WUCC+2
- LPN 77
- STM WUCC+2
- LDM WUCB+2
- SCN 77
- RAM WUCC+2
- RJM WUD WRITE UNIT DESCRIPTOR TABLE
- WUC1 BSS 0
- WUCA LDC * RESTORE (A)
- LJM WUCX RETURN
- WUCB EQU BUF+42D/2 CREATION DATE IN LABEL BUFFER
- *WUCC EQU UDTB+/MTX/UDAT*5-/MTX/UUFN*5 CREATION DATE IN UDT
- WUD SPACE 4,10
- ** WUD - WRITE UDT VSN AND LABEL INFORMATION.
- *
- * CALLS UDA.
- WUD SUBR ENTRY/EXIT
- RJM UDA GET UDT LABEL ADDRESS ADDRESS
- ZJN WUDX IF NOT AT MAGNET CP
- CWM EVSN,T1
- UJN WUDX RETURN
- SCL SPACE 4,10
- ** SCL - SET CENTURY IN LABEL.
- * GENERATES THE *ISO* STANDARD CENTURY CHARACTER, BASED ON THE
- * YEAR IN THE *UDT*, AND PLACES IT IN THE OUTPUT BUFFER.
- *
- * ENTRY (T7) = CHARACTER POSITION OF YEAR IN *UDT*.
- * (T6) = CHARACTER POSITION IN OUTPUT BUFFER.
- *
- * EXIT FILL CHARACTER PLACED IN OUTPUT BUFFER,
- * (* * FOR 19XX YEARS, *0* FOR 20XX YEARS).
- * (T7) = (A) = ORIGINAL (T7).
- * (T6) INCREMENTED.
- *
- * CALLS GUD, SLC.
- *
- * USES T7.
- SCL1 LDN 1R SPACE FILL
- SCL2 RJM SLC STORE LABEL CHARACTER
- SOD T7
- SCL SUBR ENTRY/EXIT
- RJM GUD GET TENS DIGIT OF YEAR
- SBN 1R7
- PJN SCL1 IF YEAR .LE. 1999
- LDN 1R0 ZERO FILL FOR NEXT CENTURY
- UJN SCL2 STORE CHARACTER AND RETURN
- SLC SPACE 4,10
- ** SLC - STORE LABEL CHARACTER.
- *
- * ENTRY (T6) = CHARACTER POSITION IN *BUF*.
- * (A) = CHARACTER.
- *
- * EXIT (T6) = INCREMENTED.
- *
- * USES T1.
- SLC1 LDM BUF-1,T1
- SCN 77
- LMD T0
- SLC2 STM BUF-1,T1
- SLC SUBR ENTRY/EXIT
- STD T0 SAVE CHARACTER
- AOD T6 INCREMENT POSITION
- SHN 21
- STD T1
- SHN -21
- NJN SLC1 IF EVEN CHARACTER
- LDM BUF-1,T1
- LPN 77
- SHN 14
- LMD T0
- SHN 6
- UJN SLC2 STORE CHARACTER
- SFL SPACE 4,10
- ** SFL - SPACE FILL LABEL.
- *
- * (A) = NUMBER OF SPACES.
- * (T6) = FIRST CHARACTER OF LABEL FIELD.
- *
- * CALLS SLC.
- SFL SUBR ENTRY/EXIT
- STD T5
- SFL1 LDN 1R
- RJM SLC STORE LABEL CHARACTER
- SOD T5
- NJN SFL1 IF STILL MORE CHARACTERS TO FILL
- UJN SFLX RETURN
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPC2D
- TITLE HARDWARE PROCESSING SUBROUTINES.
- WTM SPACE 4,10
- ** WTM - WRITE TAPE MARKS.
- *
- * CALLS FCN, STW, WTE.
- WTM SUBR ENTRY/EXIT
- WTM0 LDN 2 WAIT NOT BUSY
- RJM STW
- WTMA EQU *-1
- * RJM /PRESET/GPS (IF CTS)
- WTMB PSN
- * MJN WTM2 IF COMMAND RETRY (CTS)
- * LDD DS CHECK FOR READY AND WRITE ENABLE
- LPC 201
- LMC 201
- NJN WTM1 IF NOT READY OR NO WRITE ENABLE
- * WRITE TAPE MARK.
- LDN F0051
- RJM FCN
- * LDN 0
- WTM1 RJM WTE CHECK AND PROCESS ERRORS
- UJN WTMX RETURN
- WTM2 LDN F0002
- RJM /PRESET/ICF ISSUE CONTINUE FUNCTION
- UJP WTM0 WAIT FOR END OF OPERATION
- SPACE 4,10
- TADD TSAD ADDRESS RELOCATION TABLE
- USE BUFFERS
- ERROVL
- EVSN EQU * *UESN*
- IVSN EQU EVSN+5 *UISN*
- UDTB EQU IVSN+5 UDT LABEL PARAMETERS (*UUFN* - *UDAT*)
- DCB EQU UDTB+/MTX/UUDTL*5 DATA CONVERSION BUFFER
- WUCC EQU UDTB+/MTX/UDAT*5-/MTX/UUFN*5 CREATION DATE IN UDT
- TITLE PRESET.
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * CALLS MCH.
- PRS LDC PRSA MODIFY CHANNELS
- RJM MCH
- LDD HP
- SHN 21-7
- PJP PRS2 IF NOT CTS
- LDC LDNI+CCW/10000
- STM /WRITE/WCTA DO CODE CONVERSION
- LDN CLBL
- STM LTYP+1 LENGTH OF LABEL
- LDC LDNI+0
- STM /WRITE/WCTD
- STM /WRITE/WCTD+1
- ISTORE /WRITE/WCTE,(UJN /WRITE/WCT5)
- LDC 6321 BITS IN GENERAL STATUS TO CHECK
- STM /PRESET/WFEA
- LDC /PRESET/GPS
- STM WTMA
- ISTORE WTMB,(MJN WTM2)
- LDK CPEL-1
- STD T1
- PRS1 LDM .CPE,T1 REPLACE *WTE* WITH *CPE*
- STM WTEX,T1
- SOD T1
- PJN PRS1 IF MORE CODE TO MOVE
- ISTORE ERAA,(UJN ERA1) SKIP ERASE GAP
- ISTORE /WRITE/WCTJ,(UJN /WRITE/WRT7) SKIP READ CM BUFFER
- LDC /WRITE/WCT2 SKIP CODE CONVERSION
- STM /WRITE/WCTI
- ISTORE /WRITE/WCTG,(UJN /WRITE/WCT7) SKIP READ OF CM BUFFER
- ISTORE /WRITE/WCTM,(UJN /WRITE/WRT7) SKIP BLOCK COUNT UPDATE
- UJN PRS3 SET SRU INCREMENT
- PRS2 LDC LDNI+0
- STM /WRITE/WRTC
- STM /WRITE/WRTC+1
- LDM PRSC
- STM /WRITE/WRTD
- LDM PRSD
- STM /WRITE/WRTG
- LDC 4625
- STM //WEOA
- PRS3 LDC /SRU/ITCL*100 SET SRU INCREMENT
- STM //CECA
- LDM PRSB
- STM /WRITE/WRTH
- LJM PRSX RETURN
- PRSA CHTB CHANNEL TABLE
- PRSB BSS 0
- LOC /WRITE/WRTH
- UJN /WRITE/WRT7 CALCULATE DATA CHECKSUM
- LOC *O
- PRSC BSS 0
- LOC /WRITE/WRTD
- UJN /WRITE/WRT3.1 WRITE LABELS
- LOC *O
- PRSD BSS 0
- LOC /WRITE/WRTG
- UJN /WRITE/WRT5 WRITE LABELS
- LOC *O
- TITLE CTS-SPECIFIC ROUTINES.
- CPE SPACE 4,15
- ** CPE - CHECK AND PROCESS WRITE TAPE MARK ERRORS.
- *
- * THIS ROUTINE OVERLAYS *WTE* FOR CTS.
- *
- * ENTRY (A) .EQ. 0 IF STATUS SHOULD BE CHECKED.
- * (A) .NE. 0 IF NOT READY OR NO WRITE ENABLE.
- *
- * CALLS *CEM*, *CWP*.
- *
- * MACROS CALL.
- .CPE BSS 0
- LOC WTEX
- CPE SUBR ENTRY/EXIT
- ZJN CPE2 IF CHECK STATUS
- LPN 1
- NJN CPE1 IF NOT READY
- LDN 3
- STD EP SET SUB ERROR CODE
- LDN /MTX/NWE
- UJN CPE1.1 RETURN
- CPE1 LDN /MTX/RDR NOT READY
- STD EC
- CALL CEM CALL ERROR HANDLER
- LDD EC
- CPE1.1 LJM RET3 RETURN
- CPE2 STD EC
- CPE3 RJM /PRESET/WFE WAIT FOR END OF OPERATION
- MJN CPE5 IF COMMAND RETRY
- LMN 20 EXPECT TAPE MARK STATUS
- ZJN CPE4 IF NO ERROR
- LDN /MTX/STE STATUS ERROR
- CPE4 ADD EI
- ZJN CPEX IF NO ERROR OR PREVIOUS ERROR
- CALL CWP WRITE ERROR PROCESSOR
- UJP CPEX RETURN
- CPE5 LDN F0002
- RJM /PRESET/ICF ISSUE CONTINUE FUNCTION
- UJN CPE3 WAIT FOR END OF OPERATION
- CPEL EQU *-CPEX LENGTH OF *CPE*
- ERRNG WTEB-* *CPE* LARGER THAN *WTE*
- LOC *O
- OVERLAY (CODE CONVERT LABEL TO WRITE.),(ERLB+5),P
- CCW SPACE 4,10
- ** CCW - CODE CONVERT LABEL TO WRITE TO CTS.
- *
- * ENTRY (MD) = MODE FUNCTION.
- * (DNCV) = CONVERSION MODE.
- * (CF) = 63/64 CHARACTER SET FLAG.
- *
- * USES T1, T2, T3.
- *
- * CALLS GCC, SCC.
- ENTRY CCW
- CCW SUBR ENTRY/EXIT
- LDD MD
- SHN 21-6
- PJN CCW1 IF NOT CODED
- LDM DNCV
- LPN 7
- LMN /MTX/ANS
- ZJN CCW1 IF ASCII CONVERSION MODE
- LDC EBCI
- STM GCCA CODE MODIFICATION FOR EBCDIC
- CCW1 LDD CF
- LPN 1
- NJN CCW2 IF 64 CHARACTER SET
- LDK 0#20
- STM ANSI+ANSIA MODIFY TABLES FOR 63 CHARACTER SET
- LDK 0#3A
- STM ANSI+ANSIB
- LDN 0
- STM EBCI+EBCIA
- LDK 0#7A
- STM EBCI+EBCIB
- CCW2 LDC 79D
- STD T1 POINTER TO CHARACTER TO CONVERT
- LDC 64
- STD T2 POINTER TO STORE CONVERTED CHARACTER
- LDN 1
- STD T3 1 OF 3 POSITIONS OF 8-BIT BYTE
- LDN 0
- STM BUF+1,T2
- CCW3 RJM GCC GET CONVERTED CHARACTER
- RJM SCC STORE CONVERTED CHARACTER
- SOD T1
- PJN CCW3 IF MORE CHARACTERS TO CONVERT
- LJM CCWX RETURN
- GCC SPACE 4,15
- ** GCC - GET CONVERTED CHARACTER.
- *
- * ENTRY (T1) = POINTER TO CHARACTER TO CONVERT.
- * (T5) = CHARACTER TO CONVERT IF (T1) HAS EVEN VALUE.
- *
- * EXIT (T6) = CONVERTED CHARACTER.
- * (T5) = NEXT CHARACTER TO CONVERT IF (T1) HAS ODD VALUE.
- GCC SUBR ENTRY/EXIT
- LDD T1
- SHN 21-0
- STD T6
- PJN GCC1 IF LEFT MOST CHARACTER OF WORD
- LDM BUF,T6
- STD T5
- LPN 77
- UJN GCC2 SAVE CHARACTER TO CONVERT
- GCC1 LDD T5
- SHN -6
- GCC2 STD T6 CHARACTER TO CONVERT
- LDM ANSI,T6
- GCCA EQU *-1
- * LDM EBCI,T6 (EBCDIC)
- STD T6
- UJN GCCX RETURN
- SCC SPACE 4,15
- ** SCC - STORE CONVERTED CHARACTER.
- *
- * THIS ROUTINE CONVERTS ONE OF THE 80 CHARACTERS OF THE
- * LABEL FROM DISPLAY CODE TO ASCII OR EBCDIC AND STORES
- * IT IN THE LABEL BUFFER.
- *
- * ENTRY (T6) = CONVERTED CHARACTER.
- * (T2) = POINTER TO STORE CHARACTER.
- * (T3) = 1 0F 3 POSITIONS TO STORE 8-BIT BYTE.
- SCC3 SOD T3
- SCC SUBR ENTRY/EXIT
- LDD T3
- NJN SCC1 IF NOT BYTE 1 OF 3
- LDD T6
- SHN 4
- RAM BUF,T2
- LDN 2
- STD T3
- LCN 2
- RAD T2
- UJN SCCX RETURN
- SCC1 SBN 1
- NJN SCC2 IF NOT BYTE 2 OF 3
- LDD T6
- SHN 10
- RAM BUF+1,T2
- SHN -14
- STM BUF,T2
- UJN SCC3 UPDATE POINTER
- SCC2 LDD T6
- STM BUF+1,T2
- UJP SCC3 UPDATE POINTER
- ANSI SPACE 4,10
- ** ATANS - TABLE TO CONVERT DISPLAY TO ASCII.
- ANSI BSS 0
- LOC 0
- CON 0#3A COLON
- ANSIA EQU *-1
- * CON 0#20 (63 CHARACTER SET - SPACE)
- CON 0#41 A
- CON 0#42 B
- CON 0#43 C
- CON 0#44 D
- CON 0#45 E
- CON 0#46 F
- CON 0#47 G
- CON 0#48 H
- CON 0#49 I
- CON 0#4A J
- CON 0#4B K
- CON 0#4C L
- CON 0#4D M
- CON 0#4E N
- CON 0#4F O
- CON 0#50 P
- CON 0#51 Q
- CON 0#52 R
- CON 0#53 S
- CON 0#54 T
- CON 0#55 U
- CON 0#56 V
- CON 0#57 W
- CON 0#58 X
- CON 0#59 Y
- CON 0#5A Z
- CON 0#30 0
- CON 0#31 1
- CON 0#32 2
- CON 0#33 3
- CON 0#34 4
- CON 0#35 5
- CON 0#36 6
- CON 0#37 7
- CON 0#38 8
- CON 0#39 9
- CON 0#2B PLUS
- CON 0#2D HYPHEN
- CON 0#2A ASTERISK
- CON 0#2F SLANT
- CON 0#28 OPENING PAREN
- CON 0#29 CLOSING PAREN
- CON 0#24 DOLLAR SIGN
- CON 0#3D EQUALS
- CON 0#20 SPACE
- CON 0#2C PERIOD
- CON 0#2E COMMA
- CON 0#23 NUMBER SIGN
- CON 0#5B OPEN BRACKET
- CON 0#5D CLOSING BRACKET
- CON 0#25 PERCENT
- ANSIB EQU *-1
- * CON 0#3A (63 CHARACTER SET - PERCENT)
- CON 0#22 QUOTATION MARKS
- CON 0#5F UNDERLINE
- CON 0#21 EXCLAMATION POINT
- CON 0#26 AMPERSAND
- CON 0#27 APOSTROPHE
- CON 0#3F QUESTION MARK
- CON 0#3C LESS THAN
- CON 0#3E GREATER THAN
- CON 0#40 COMMERCIAL AT
- CON 0#5C REVERSE SLANT
- CON 0#5E CIRCUMFLEX
- CON 0#3B SEMICOLON
- LOC *O
- EBCI SPACE 4,10
- ** EBCI - TABLE TO CONVERT DISPLAY TO EBCDIC.
- EBCI BSS 0
- LOC 0
- CON 0#7A COLON
- EBCIA EQU *-1
- * CON 0 (63 CHARACTER SET - COLON)
- CON 0#C1 A
- CON 0#C2 B
- CON 0#C3 C
- CON 0#C4 D
- CON 0#C5 E
- CON 0#C6 F
- CON 0#C7 G
- CON 0#C8 H
- CON 0#C9 I
- CON 0#D1 J
- CON 0#D2 K
- CON 0#D3 L
- CON 0#D4 M
- CON 0#D5 N
- CON 0#D6 O
- CON 0#D7 P
- CON 0#D8 Q
- CON 0#D9 R
- CON 0#E2 S
- CON 0#E3 T
- CON 0#E4 U
- CON 0#E5 V
- CON 0#E6 W
- CON 0#E7 X
- CON 0#E8 Y
- CON 0#E9 Z
- CON 0#F0 0
- CON 0#F1 1
- CON 0#F2 2
- CON 0#F3 3
- CON 0#F4 4
- CON 0#F5 5
- CON 0#F6 6
- CON 0#F7 7
- CON 0#F8 8
- CON 0#F9 9
- CON 0#4E PLUS
- CON 0#60 HYPHEN
- CON 0#5C ASTERISK
- CON 0#61 SLANT
- CON 0#4D OPENING PAREN
- CON 0#5D CLOSING PAREN
- CON 0#5B DOLLAR SIGN
- CON 0#7E EQUALS
- CON 0#40 SPACE
- CON 0#6B PERIOD
- CON 0#4B COMMA
- CON 0#7B NUMBER SIGN
- CON 0#4A OPEN BRACKET
- CON 0#5A CLOSING BRACKET
- CON 0#6C PERCENT
- EBCIB EQU *-1
- * CON 0#7A (63 CHARACTER SET - COLON)
- CON 0#7F QUOTATION MARKS
- CON 0#6D UNDERLINE
- CON 0#4F EXCLAMATION POINT
- CON 0#50 AMPERSAND
- CON 0#7D APOSTROPHE
- CON 0#6F QUESTION MARK
- CON 0#4C LESS THAN
- CON 0#6E GREATER THAN
- CON 0#7C COMMERCIAL AT
- CON 0#E0 REVERSE SLANT
- CON 0#5F CIRCUMFLEX
- CON 0#5E SEMICOLON
- LOC *O
- ERRNG 473+ERLB+5-* IF OVERLAY LONGER THAN ONE PRU
- OVERLAY (MTS/ATS WRITE ERROR PROCESSOR.),(BUFB+10),P
- WEM SPACE 4,10
- ** WEM - WRITE ERROR PROCESSOR.
- *
- * ENTRY (EP, 11) = VERIFY IN PROGRESS.
- * (EP, 10) = ERASE ERROR HAS OCCURRED.
- * (EP, 9) = LOAD POINT ERROR FLAG.
- * (EP, 8) = LOAD POINT RECOVERY FLAG.
- * (EP+1, 5 - 0) = NUMBER OF ERASES.
- *
- * CALLS /CPP/CAL, CFC, /WRITE/CNW, *CPP*, EBW, *EMM*, EOT,
- * /CPP/INM, MCH, POT, PRS, RCI, /CPP/SFP, WLP.
- *
- * MACROS CALL.
- ENTRY WEM
- WEM SUBR ENTRY
- LDM //LOV SAVE CALLERS EXIT ADDRESS
- STM WEMH
- LDC WEM1 SET ADDRESS TO ENTER AT
- STM //LOV
- UJN WEMX RETURN
- WEM1 LDD MA SAVE OUT POINTER
- CWD CN
- CRM WEMI,ON
- LDC CTAB MODIFY CHANNELS
- RJM MCH
- RJM PRS
- RJM EBW EVALUATE BID WINDOW
- RJM CFC RECONNECT UNIT
- LDM //STER RESTORE STATUS
- STD DS
- LPN 1
- NJN WEM2 IF READY
- LDN /MTX/RDR
- STD EC
- UJN WEM2.1 NO LOAD POINT RECOVERY IF NOT READY
- WEM2 RJM WLP CHECK FOR LOAD POINT RECOVERY
- * UJN WEM2.1 (NOT ATS CONTROLLER)
- WEML EQU *-2
- MJN WEM2.1 IF NO LOAD POINT ERROR OR ERROR RECOVERED
- CALL EMM ISSUE MESSAGE
- LDN 0
- STD EC
- AOD EI
- LJM RET2 RETRY ON *BFW* ERROR
- WEM2.1 LDD FN LOAD MAGNET FUNCTION CODE
- LMN /MTX/WLA
- NJN WEM3 IF NOT WRITE LABELS
- LDC RET2 FORCE REQUEUE AFTER WRITE IS GOOD
- STM /WLA/WLAG
- AOM POTD
- WEM3 LDM /WRITE/WTFE CHECK IF EOF REQUEST DETECTED AHEAD
- WEMK EQU *-1
- * LDM /WLI/WLIA (LI FORMAT)
- LMN 1
- NJN WEM4 IF NOT EOF REQUEST
- LDD MD
- SCN 14
- STD MD
- WEM4 LDD EC
- ZJN WEM6 IF VERIFY OPERATION
- LMN /MTX/STE
- NJN WEM7 IF NOT STATUS ERROR
- LDD DS
- SHN 21-3
- PJN WEM7 IF NOT EOT
- SHN 12
- PJN WEM5 IF NO OTHER ERRORS
- LDM MTDS
- LPC 7077
- WEMA EQU *-1
- * LPC 7777 (ATS UNIT)
- NJN WEM7 IF OTHER ERRORS
- WEM5 RJM EOT
- WEM6 LJM WEM10 POSITION TAPE
- WEM7 LDD DS CHECK FOR NON-FATAL ERRORS
- SHN 21-13
- PJN WEM8 IF OTHER ERRORS
- LDM MTDS
- LPC 7077
- WEMB EQU *-1
- * LPC 7777 (ATS UNIT)
- NJN WEM8 IF FATAL ERRORS
- STD EC
- AOM WEME SET ACCEPT DATA FLAG
- WEMC UJN WEM8 PROCESS MTS DATA
- * LDM MTDS+1 (ATS UNIT)
- CON MTDS+1
- SHN -11
- LPN 3
- ZJN WEM7.1 IF NOT ON-THE-FLY
- LDN /MTX/OTF
- STD EC
- UJN WEM8 PROCESS CORRECTED BLOCK
- WEM7.1 LDD HN
- RAM ECNT+1 INCREMENT LATE DATA COUNTER
- SHN -14
- RAM ECNT
- WEM8 LDD SP
- LPN 4
- RAM WEME SET ACCEPT WRITE FLAG
- LDD SP
- LPN 4
- NJN WEM9 IF ERROR PROCESSING INHIBITED
- LDM /WRITE/BYWR SET BYTE COUNT
- STD BY
- LDC -0 RESTORE BID
- WEMD EQU *-1
- STM UBWB
- CALL EMM DIAGNOSE ERROR
- RJM CFC RECONNECT UNIT
- WEM9 LDD EC
- SBN /MTX/BFAT
- MJN WEM10 IF NOT FATAL ERROR
- SBN /MTX/MFAT-/MTX/BFAT
- PJN WEM10 IF NOT FATAL ERROR
- LJM RET4 RETURN FATAL ERROR
- WEM10 LDC 0 ACCEPT DATA FLAG
- WEME EQU *-1
- NJN WEM11 IF ACCEPT DATA
- RJM POT POSITION TAPE
- WEMF EQU *-2
- * UJN *+2 (DISCARD BLOCK AT EOT)
- WEM11 LDN 0 CLEAR ERROR CODE
- STD EC
- WEMJ LDN 1
- * LDN 0 (FORMAT CHANGE)
- NJN WEM11.1 IF FORMAT PARAMETERS NOT CHANGED
- STM //RELA
- WEM11.1 CALL CPP RELOAD ADDRESS RELOCATOR
- LDM WEMD RESTORE BLOCK ID
- STM UBWB
- LDM /WRITE/BYWR RESET BYTE COUNT
- STD BY
- LDD FN
- LMN /MTX/WLA
- NJN WEM12 IF NOT WRITE LABELS
- LJM WEM15 EXIT
- WEM12 RJM RCI READ UDT
- RJM /CPP/CAL CALCULATE PARAMETERS
- LDC ADDR MODIFY INSTRUCTIONS
- RJM /CPP/INM
- LDM WEME
- ZJN WEM13 IF REREAD DATA
- LDN 0 CLEAR ERROR PARAMATERS
- STD EP
- STD EP+1
- STD EI
- LDD MA RESTORE OUT POINTER
- CWM WEMI,ON
- SBN 1
- CRD CN
- LDM /WRITE/WTFE CHECK IF EOF REQUEST DETECTED AHEAD
- WEMM EQU *-1
- * LDM /WLI/WLIA (LI FORMAT)
- LMN 1
- NJN WEM14 IF NOT EOF REQUEST
- LDN 14 SET EOF STATUS
- RAD MD
- UJN WEM15 EXIT
- WEM13 LDN 3 READ OUT POINTER
- RJM /CPP/SFP
- WEM14 RJM /WRITE/CNW
- WEMG EQU *-2
- * UJN *+2 (DISCARD BLOCK AT EOT)
- * RJM /WLI/CNW (LI FORMAT)
- WEM15 LJM * EXIT
- WEMH EQU *-1
- WEMI EQU WEM
- TBDW EQU WEMI+5 TEMPORARY BID WINDOW
- ERRNG WEM1-TBDW BUFFER OVERFLOW
- EOT SPACE 4,10
- ** EOT - END OF TAPE PROCESSOR.
- EOT3 LDC EOTEXIT SET TO RETURN HERE AFTER POINTER UPDATE
- STM /WRITE/WRTK
- EOTA EQU *-1
- * STM /WLI/WRTK (LI FORMAT)
- LDD EI
- ZJN EOTX IF RECOVERY NOT IN PROGRESS
- LDN 0 SET TO VERIFY REWRITE AND ISSUE MESSAGE
- STM WEME
- STD EC
- EOT SUBR ENTRY/EXIT
- AOM WEME SET ACCEPT DATA FLAG
- LDD SP
- SHN -12
- ZJN EOT3 IF TERMINATE WITH TAPE MARK
- LMN 1
- NJN EOT1 IF NOT ACCEPT BLOCK AT EOT
- LDM /WRITE/STAT
- SHN 21-3
- PJN EOTX IF TAPE MARK ENCOUNTERED THIS BLOCK
- UJN EOT2 CLEAR ACCEPT DATA FLAG
- EOT1 LMN 2&1
- NJN EOTX IF NOT DISCARD BLOCK AT EOT
- LDD UP CLEAR EOR FLAG
- SCN 10
- STD UP
- LDD MD CLEAR EOR/EOF THIS OPERATION
- LPC 7377
- STD MD
- EOT2 LDN 0
- STM WEME
- LDC UJNI+2
- STM WEMF
- STM WEMG
- LJM EOT3 SET RETURN ADDRESS
- POT SPACE 4,10
- ** POT - POSITION AND VERIFY TAPE AFTER ERROR.
- *
- * USES CM - CM+4.
- *
- * CALLS BKS, CID, CKR, FCN, IRC, ISC, POS, RDA, STW, WEO.
- POT SUBR ENTRY/EXIT
- LDD EC
- NJN POT1 IF ERROR
- RJM DTS GET DETAIL STATUS
- LJM POT12 VERIFY BLOCK REWRITE
- * BACKSPACE OVER THE ERROR BLOCK.
- POT1 AOD EI
- RJM BKS BACKSPACE OVER BAD BLOCK
- LDD EI LOAD ERROR COUNTER
- LPN 77 ERROR ITERATION
- SBN 2
- PJN POT3 IF SECOND ITERATION
- POT2 RJM POS POSITION TO LAST GOOD RECORD
- * TAPE IS POSITIONED TO LGB.
- LDD EP
- SHN 21-13
- PJN POT3 IF NOT VERIFY
- LJM POT12 VERIFY BLOCK REWRITE
- * ERASE TAPE.
- POT3 AOD EP+1 COUNT ERASE
- LPN 77
- SBN ERAL
- MJN POT4 IF NOT MAXIMUM ERASES
- LDN /MTX/ERA ERASE LIMIT ERROR
- STD EC
- LJM POT17 FATAL ERROR
- POT4 LDN 1 NUMBER OF ERASES TO PERFORM
- STM POTK
- LDN 2 WAIT NOT BUSY
- RJM STW
- LDD CP CHECK ERROR FLAG
- ADN STSW
- CRD CM
- LDD CM+1
- LPN 37
- SBN SPET
- MJN POT5 IF NO ERROR *SPET* OR ABOVE
- LDN /MTX/EFT SET ERROR FLAG TERMINATION
- STD EC
- LJM POT17 RETURN ERROR
- POT5 LDN 52 SKIP BAD SPOT (ERASE)
- RJM FCN
- LDN 2 WAIT NOT BUSY
- RJM STW
- SHN 21-3
- PJN POT6 IF NOT EOT
- LJM POT19 SET ERASE AT EOT FLAG
- POT6 RJM WEO WAIT END OF OPERATION
- SCN 10 IGNORE EOT
- NJN POT7 IF ERASE ERROR
- SOM POTK
- NJN POT5 IF MORE ERASES TO PERFORM
- LJM POT9 SET UP TO REWRITE BLOCK
- POT7 LDN /MTX/STE DIAGNOSE ERASE ERROR
- STD EC
- LDD DS SET STATUS FOR MESSAGE
- STM //STER
- RJM ISC ISSUE MESSAGE AND RECONNECT UNIT
- AOD EI INCREMENT ERROR ITERATION COUNT
- LDM DNCV
- LPN 70
- LMN /MTX/D16*10
- ZJN POT8 IF 1600 BPI CONTINUE ERASE
- LMN /MTX/D62*10&/MTX/D16*10
- ZJN POT8 IF 6250 CPI CONTINUE ERASE
- LJM POT2 REPOSITION TO LAST GOOD RECORD
- POT8 RJM CKR CHECK FOR UNIT READY
- LJM POT3 REISSUE THE ERASE
- * REWRITE THE BLOCK.
- POT9 LDD LG+1
- ZJN POT11 IF TAPE MARK WRITE
- LDD UP CLEAR EOR FLAG
- SCN 10
- STD UP
- LDD MD CLEAR EOR/EOF THIS OPERATION FLAG
- LPC 7377
- STD MD
- LDD EI
- LPN 7
- ZJN POT11 IF TIME TO REQUEUE
- LDC 0
- POTD EQU *-1 ADD ONE TO *POTD*
- ZJN POT10 IF NOT WRITE LABELS
- LDC /WLA/WLA8-/WRITE/WTF
- POT10 ADC /WRITE/WTF
- ERRNZ /WRITE/WTF-/WLI/WLI ENTRY POINTS MUST BE THE SAME
- STM WEMH
- LJM POTX RETURN
- POT11 LJM RET2 REQUEUE
- * WRITE VERIFY OPERATION.
- POT12 RJM BKS BACKSPACE OVER CURRENT BLOCK
- LDD EP CHECK FOR LOAD POINT RECOVERY FLAG
- SHN 21-10
- MJN POT13 IF NOT LOAD POINT RECOVERY
- LDD EP SET VERIFY IN PROGRESS
- LPC 3777
- LMC 4000
- STD EP
- RJM POS INSURE CORRECT TAPE POSITION
- * VERIFY THE ENTIRE SEQUENCE.
- POT13 RJM RDA READ BLOCK
- LDD T4
- NJN POT14 IF ERROR
- RJM CID CHECK I FORMAT TRAILER INFORMATION
- ZJN POT15 IF NO ERROR
- LCN 0 SET BLOCK ID TO IMPOSSIBLE
- STM WEMD
- LJM POS6 ISSUE POSITION LOST MESSAGE, NO RETURN
- POT14 LDN /MTX/WVF
- STD EC
- RJM ISC ISSUE POSITION LOST MESSAGE
- UJN POT17 RETURN FATAL ERROR
- POT15 AOM WEME SET TO ACCEPT WRITE
- RJM ISC ISSUE RECOVERED MESSAGE AND CONNECT UNIT
- RJM IRC INCREASE RECOVERED ERROR COUNTER
- LDD FN
- LMN /MTX/WLA
- NJN POT16 IF NOT WRITE LABELS
- STD EP+1 CLEAR ERROR PARAMETERS
- STD EP
- STD EI
- POT16 LJM POTX RETURN
- * CANNOT RECOVER ERROR.
- POT17 LDD FN
- LMN /MTX/WLA
- NJN POT18 IF NOT WRITE LABELS
- LDD UP
- SCN 30 CLEAR WRITE OPERATION AND EOR/EOF FLAGS
- STD UP
- POT18 LJM RET4 RETURN FATAL ERROR
- * ERASE AT EOT.
- POT19 LDD EP
- SHN 21-12
- MJN POT17 IF IRRECOVERABLE ERROR
- LDC 2000 SET ERASE OCCURRED AT EOT FLAG
- RAD EP
- LJM POT6 RETRY
- POTK CON 0 NUMBER OF ERASES TO PERFORM
- TITLE SUBROUTINES.
- ABC SPACE 4,15
- ** ABC - ADJUST BYTE COUNT FOR 9 TRACK TAPES.
- *
- * ENTRY (BY) = BYTE COUNT.
- * (T4) = BUFFER SIZE.
- * (DS) = DEVICE STATUS.
- *
- * EXIT (A) = 0 IF NO BYTE ADJUSTMENT.
- * (ES) = 40 IF FILL STATUS.
- * = 0 IF NO FILL STATUS.
- *
- * USES T2, T4.
- ABC SUBR ENTRY/EXIT
- LDD HP
- LPN 1
- ZJN ABCX IF 7 TRACK
- * SET FILL STATUS.
- LDD DS
- ABCA SHN 0-5
- * UJN ABC2 (ATS UNIT)
- LPN 1
- ADD BY
- LPN 3
- ZJN ABC1 IF NO FILL STATUS
- LDN 40
- * LPN 40 (ATS UNIT)
- ABCB EQU *-1
- ABC1 STD ES
- * CORRECT 9 TRACK BYTE COUNT.
- LDD DS
- LPN 40
- ZJN ABC2 IF NO ODD COUNT
- LDD BY
- LPN 2
- ZJN ABC2 IF NOT MODULO 4, 2 OR 3
- SOD BY
- SOD T4
- * ADJUST BUFFER LENGTH FOR I FORMAT.
- ABC2 LDD FM
- SHN -6
- LMN /MTX/TFI
- ZJN ABC3 IF I FORMAT
- LDN 0
- UJN ABC4 RETURN
- ABC3 LDD BY
- ZJN ABC4 IF NO DATA READ
- SBN 1
- ZJN ABC4 IF POSSIBLE TAPE MARK
- STD T2 CALCULATE WORD COUNT
- SHN 1 13*BYTES
- ADD T2
- SHN 2
- ADD T2
- SHN 14 (-6) (13*BYTES)/64
- STD T0
- SHN 6+2 4*13*BYTES (52*BYTES)
- SBD T2 51*BYTES
- ADD T0 (51*BYTES)+((13*BYTES)/64)
- SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
- LPN 1
- ABC4 STM ABCC
- LJM ABCX RETURN
- ABCC CON 0
- BKS SPACE 4,10
- ** BKS - BACKSPACE TAPE.
- *
- * EXIT (A) = NEGATIVE IF BOT.
- * (DS) = GENERAL STATUS.
- *
- * CALLS CKR, FCN, STW, WFC.
- BKS SUBR ENTRY/EXIT
- RJM CKR CHECK READY
- LDN 2 WAIT NOT BUSY
- RJM STW
- LDC F0113 BACKSPACE
- RJM FCN
- RJM WFC WAIT FUNCTION COMPLETE
- LDD DS RETURN LOAD POINT STATUS
- SHN 21-2
- UJN BKSX RETURN
- BTW SPACE 4,10
- ** BTW - BUILD TEMPORARY WINDOW.
- *
- * ENTRY (A) = NUMBER OF BLOCKS TO MOVE BACK.
- *
- * EXIT (TBDW) = TEMPORARY BLOCK ID WINDOW IF FIRST BKSP NOT
- * AT LOAD POINT.
- *
- * USES T8, T9.
- *
- * CALLS BKS, DTS, ISC, SOB.
- BTW SUBR ENTRY/EXIT
- STD T8
- LDN 4 SETUP FIRST BID BYTE
- STM TBDW
- BTW1 RJM BKS BACKSPACE
- MJN BTW2 IF BOT
- SOD T8
- NJN BTW1 LOOP FOR NEXT BLOCK
- BTW2 LDM POSB SET BID POINTER
- STD T9
- LDM POSA CHECK FOR LOAD POINT ON FIRST BKSP
- SBD T8
- ZJN BTWX IF FIRST BKSP AT LOAD POINT
- LDN 0 CLEAR PRU COUNTER
- STD T8
- BTW3 RJM SOB SET UP AND READ ONE BLOCK
- LDM UBWB
- STM TBDW+1,T8
- AOD T9 INCREMENT POINTER
- LPN 7 RESET POINTER FOR POSSIBLE WRAP AROUND
- STD T9
- AOD T8
- LMM POSA
- NJN BTW4 IF LOOP FOR NEXT BLOCK
- LJM BTWX RETURN
- BTW4 RJM DTS GET DETAILED STATUS
- BTWA UJN BTW3 MTS
- * LDM MTDS+1 (ATS) LOAD ERROR CORRECTION FLAGS
- CON MTDS+1
- SHN -11
- LPN 3 SINGLE/DOUBLE TRACK CORRECTED FLAGS
- ZJN BTW3 IF NO CORRECTABLE ERRORS
- LDD DS CHECK FOR ALERT
- SHN 21-13
- MJN BTW3 IF ALERT STATUS SET
- LDD T8 SAVE TEMPORARIES
- STM BTWB
- LDD T9
- STM BTWC
- LDN /MTX/RCE ISSUE REPOSITION CORRECTION MESSAGE
- STD EC
- LDD DS SAVE STATUS
- STM //STER
- RJM ISC ISSUE MESSAGE AND RECONNECT
- LDN 0 CLEAR ERROR CODE
- STD EC
- AOD EI
- LDM BTWB RESTORE TEMPORARIES
- STD T8
- LDM BTWC
- STD T9
- LJM BTW3 CONTINUE FORESPACES
- BTWB CON 0 SAVE T8
- BTWC CON 0 SAVE T9
- CFC SPACE 4,10
- ** CFC - CHECK FOR CONNECT.
- *
- * ENTRY (RELA) = CONNECT FLAG.
- * (DS) = DEVICE STATUS.
- *
- * USES T1.
- *
- * CALLS CUI.
- CFC SUBR ENTRY/EXIT
- LDM MTSF+2 SAVE CURRENT ERROR CORRECTION CODE
- STM CFCB
- LPC 2000
- ZJN CFC0 IF ERROR CORRECTION ENABLED
- LDC 4000 ENABLE ERROR CORRECTION FOR RECOVERY
- STM MTSF+2
- LDN 0
- STM //RELA CLEAR CONNECTED FLAG
- LDC LDNI+0 SET FORMAT ALTERED FLAG
- STM WEMJ
- CFC0 LDM //RELA
- ZJN CFC1 IF UNIT NOT CONNECTED
- LDD DS
- SHN 21-11
- PJN CFCX RETURN IF UNIT CONNECTED
- LDN 0
- STM //RELA
- CFC1 STD T1
- CFC2 LDM MTDS,T1 SAVE DETAILED STATUS
- STM CFCA,T1
- AOD T1
- LMN 10
- NJN CFC2 IF MORE TO SAVE
- RJM CUI CONNECT UNIT
- LDN 0
- STD T1
- CFC3 LDM CFCA,T1 RESTORE DETAILED STATUS
- STM MTDS,T1
- AOD T1
- LMN 10
- NJN CFC3 IF MORE TO MOVE
- LDM CFCB RESET ORIGINAL ERROR CORRECTION CODE
- STM MTSF+2
- LJM CFCX RETURN
- CFCA BSS 10 SAVE AREA FOR DETAILED STATUS
- CFCB BSS 1 ORIGINAL ERROR CORRECTION CODE
- CBW SPACE 4,15
- ** CBW - COMPARE BID WINDOWS.
- *
- * COMPARE THE PERMANENT WINDOW (BIDW) TO THE TEMPORARY
- * WINDOW (TBDW).
- *
- * ENTRY (T1) = FIRST BYTE IN BIDW TO COMPARE.
- * (T2) = FIRST BYTE IN TBDW TO COMPARE.
- *
- * EXIT (A) = 0 IF MATCH OR NOT BLOCK ID EQUIPMENT.
- * (A, 13-6) = NUMBER OF INVALID BLOCK ID-S.
- * (A, 5-0) = NUMBER OF VALID BLOCK ID MISMATCHES.
- *
- * USES T1 - T4.
- CBW SUBR ENTRY/EXIT
- LDD CF CHECK IF BLOCK ID EQUIPMENT
- LPC 300
- LMC 300
- ZJN CBWX IF NO BLOCK ID
- LDN 0
- STD T4
- STD T3
- LDD T1 SAVE (T1)
- STM CBWA
- CBW1 LDM BIDW,T1 LOAD HISTORY BLOCK ID
- LMN 4
- ZJN CBW3 IF INVALID BID IN HISTORY
- LDM TBDW,T2 LOAD BID FROM TEMP WINDOW
- LMN 4 INVALID CHECK
- NJN CBW2 IF NOT INVALID BID IN TEMP WINDOW
- AOD T3 CHECK NEXT BID
- UJN CBW3 CONTINUE
- CBW2 LDM BIDW,T1 LOAD BID FROM HISTORY
- LMM TBDW,T2
- ZJN CBW3 IF NO ERROR
- AOD T4
- CBW3 LDD WP
- SBM CBWA
- ZJN CBW4 IF ONLY ONE BLOCK ID
- AOD T2
- AOD T1 INCREMENT POINTER
- LPN 7 RESET POINTER FOR POSSIBLE WRAP AROUND
- STD T1
- LMD WP
- NJN CBW1 IF NOT END OF COMPARE
- CBW4 LDD T3 FORM BID COMPARE RESULTS AND EXIT
- SHN 6
- ADD T4
- LJM CBWX RETURN
- CBWA CON 0 STORAGE FOR (T1)
- CKR SPACE 4,10
- ** CKR - CHECK READY.
- * IF UNIT NOT READY, A TIME OUT WILL BE PERFORMED WAITING FOR
- * UNIT TO BECOME READY BEFORE GIVING A FATAL ERROR. THIS
- * SHOULD ALLOW RECOVERY FROM MOMENTARY NOT READY CONDITIONS.
- *
- * CALLS CUI, FCN.
- CKR SUBR ENTRY/EXIT
- LCN 0 PRESET TIME OUT
- STM CKRA
- CKR1 LDN 12 STATUS UNIT
- RJM FCN
- ACN CH
- LDC SBNI+1 RETRY FOR TWO MS
- CKR2 EQU *-1
- FJM CKR3,CH IF DATA
- NJN CKR2 IF RETRY NOT COMPLETE
- DCN CH+40
- UJN CKR5 EXIT WITH ERROR
- CKR3 IAN CH
- DCN CH+40
- LPC 1001
- LMN 1
- ZJN CKRX IF READY
- SHN 21-11
- PJN CKR4 IF UNIT CONNECTED
- LDN 0
- STM RELA CLEAR CONNECTED FLAG
- RJM CUI CONNECT UNIT
- CKR4 SOM CKRA
- NJN CKR1 IF TIME OUT
- CKR5 LDN /MTX/RDR READY DROP
- LJM RET3 RETURN ERROR CODE
- CKRA CON 7777 TIME OUT COUNTER
- CID SPACE 4,15
- ** CID - CHECK I FORMAT TRAILER BYTES.
- * IF LI FORMAT, CHECK THE BLOCK NUMBER IN THE PREFIX.
- *
- * ENTRY (A) = AMOUNT TO ADJUST BLOCK NUMBER BY.
- * (BY) = BYTES IN BLOCK LAST READ.
- * (EBUF - EBUF+3) = I FORMAT TRAILER BYTES.
- * (EBUF-1 - EBUF+3) = LI FORMAT PREFIX.
- *
- * EXIT (A) = 0, GOOD BLOCK.
- *
- * USES T1.
- CID3 LDN 0 INDICATE GOOD COMPARE
- CID SUBR ENTRY/EXIT
- STD T1 SAVE BLOCK NUMBER ADJUSTMENT
- LDD FM
- SHN -6
- LMN /MTX/TFI
- NJN CID3 IF NOT I FORMAT
- CIDA EQU *-1
- * UJN CID1 (LI FORMAT)
- LDD FN
- LMN /MTX/WTF
- NJN CID3 IF NOT WRITE DATA
- CID1 LDD BY
- SBN 4
- MJN CID3 IF TAPE MARK OR SNB BLOCK
- LDD BY
- LMN 40D
- ZJN CIDX IF LABEL BLOCK
- LDM EBUF+1 STORE DATA FOR MESSAGE
- SHN 14
- LMM EBUF+2
- ADD T1
- STM //BNEI+2
- SHN -14
- STM //BNEI+1
- LDM EBUF
- STM //BNEI
- LMD BY
- NJN CID2 IF LENGTHS DON,T COMPARE
- CIDB EQU *-1
- * PSN (LI FORMAT)
- LDM EBUF+1 COMPARE BLOCK NUMBERS
- SBD BL
- SHN 14
- ADM EBUF+2
- SBD BL+1
- ADD T1
- CID2 LJM CIDX RETURN
- IRC SPACE 4,10
- *** IRC - INCREASE RECOVERED ERROR COUNTER.
- * RECOVERED ERROR COUNT IN UDT INCREASED.
- *
- * ENTRY NONE.
- *
- * EXIT RECOVERED ERROR COUNTER INCREASED.
- *
- * USES CM - CM+4, CN - CN+4.
- *
- * MACROS DELAY, MONITOR, PAUSE.
- IRC SUBR ENTRY/EXIT
- LDN /MTX/UTMS
- STD T1
- IRC1 LDM UADA
- ADD T1
- STD CM+4
- LDD HN REQUEST 1 WORD
- STD CM+3
- LDN 0 REQUEST READ FROM MAGNET
- STD CM+1
- LCN 7777-/SSD/MTSI SET MAGNET SUBSYSTEM IDENTIFICATION
- STD CM+2
- MONITOR TDAM
- LDD CM+1
- LMN 1
- NJN IRC2 IF MOVE NOT IN PROGRESS
- PAUSE NE
- DELAY
- UJN IRC1 REISSUE REQUEST
- IRC2 LDD MA
- CRD CN
- LDD CN+1 CHECK RECOVERED ERROR COUNTER
- LMC 7777
- NJN IRC4 IF NOT MATCH MAX THRESHOLD
- IRC3 LJM IRCX IF MATCH MAX THRESHOLD
- IRC4 AOD CN+1
- IRC5 LDN /MTX/RUU SET MAGNET FUNCTION
- STD CM
- LDN /MTX/UTMS SET UDT WORD
- STD CM+2
- LDD HN SET WORD COUNT
- STD CM+3
- LDM UADA SET UDT ADDRESS
- STD CM+4
- LDD MA WRITE MAGNET REQUEST
- CWD CM
- ADN 1 WRITE NEW UDT WORD
- CWD CN
- LDK /MTX/RCAL SET MAGNET REQUEST WORD
- STD CM+4
- LDC 200 SET WORD COUNT
- STD CM+3
- LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
- STD CM+2
- LDN 1 SET WRITE
- STD CM+1
- MONITOR TDAM
- LDD CM+1
- ZJN IRC3 IF REQUEST COMPLETE
- SBN 4
- PJN IRC6 IF NOT REJECT
- PAUSE NE
- DELAY
- LJM IRC5 REISSUE REQUEST
- IRC6 LJM //PNR5 DROP PP
- SPACE 4,10
- ** END OF TAPE RETURN FOR EXIT.
- *
- * NOTE - THIS CODE MUST BE BEFORE BUFFERS.
- EOTEXIT LDN /MTX/BEI RETURN END OF TAPE
- LJM RET3 RETURN ERROR CODE
- SPACE 4,10
- ISC SPACE 4,10
- ** ISC - ISSUE MESSAGE AND RECONNECT UNIT.
- *
- * ENTRY (EC) = ERROR CODE.
- *
- * CALLS CFC, *EMM*.
- *
- * MACROS CALL.
- ISC SUBR ENTRY/EXIT
- LDM WEMD RESTORE BID FOR MESSAGE
- STM UBWB
- CALL EMM ISSUE MESSAGE
- RJM CFC RECONNECT UNIT IF NEEDED
- UJN ISCX RETURN
- POS SPACE 4,15
- ** POS - POSITION TAPE.
- *
- * ENTRY (POSA) = NUMBER OF BLOCKS TO BACKUP.
- * TAPE POSITIONED BEFORE BAD BLOCK.
- *
- * EXIT POSITION VERIFIED.
- * SINGLE BLOCK MISPOSTION MESSAGES ISSUED AS NEEDED.
- *
- * USES T1, T2.
- *
- * CALLS BKS, BTW, CBW, ISC, SOB.
- POS11 SHN 14
- LMD EC
- STM POSC SAVE EC
- SHN -14
- STD EC
- RJM ISC ISSUE MESSAGE AND RECONNECT UNIT
- LDC * RESTORE EC
- POSC EQU *-1
- STD EC
- POS SUBR ENTRY/EXIT
- LDD WP
- SBM POSA
- ADN 1
- PJN POS1 IF NO WRAP AROUND
- ADN 10
- POS1 STM POSB STORE STARTING POINTER
- LDC 0
- POSA EQU *-1
- RJM BTW BUILD TEMPORARY WINDOW
- LDN 1
- STD T2
- LDC *
- POSB EQU *-1
- STD T1
- RJM CBW COMPARE WINDOWS
- ZJN POSX RETURN IF GOOD COMPARE
- SHN -6 CHECK FOR INVALID BID IN TEMP WINDOW
- ZJN POS2 IF NO INVALID BLOCK ID-S
- LJM POS8 INVALID BLOCK ID-S EXIST
- POS2 LDD WP CHECK FOR LAST GOOD RECORD VALID BID
- STD T3
- LDM BIDW,T3
- STD T4
- LMN 4
- ZJN POS4 IF CANNOT TRY REPOSITION
- SOD T3 CHECK LRG-1 NOT SAME
- PJN POS3 IF NO OVERFLOW
- LDN 7
- STD T3
- POS3 LDM BIDW,T3
- LMD T4
- NJN POS5 IF LAST TWO BID-S NOT THE SAME
- POS4 LJM POS6 CANNOT TRY REPOSITION
- POS5 LDN 2 CHECK FOR TOO FAR BACKWARD
- STD T2
- RAM POSA INCREASE REPOSITION COUNT BY TWO
- LDM POSB
- STD T1
- LDM BIDW,T1
- SBM TBDW,T2
- NJN POS9 IF NOT TOO FAR BACKWARD
- LDD WP
- STD T9
- RJM SOB SET UP AND READ ONE BLOCK
- LDM POSA
- RJM BTW REBUILD BLOCK ID WINDOW
- LDN 1
- STD T2
- LDM POSB
- STD T1
- RJM CBW RECOMPARE THE BID WINDOWS
- NJN POS6 IF POSITION LOST
- LDN /MTX/SMB ISSUE SINGLE BLOCK MISPOSITION MESSAGE
- LJM POS11 ISSUE ERROR MESSAGE
- POS6 LDN /MTX/PLO ISSUE POSITION LOST MESSAGE
- POS7 STD EC SAVE ERROR CODE
- RJM ISC ISSUE MESSAGE AND RECONNECT UNIT
- LJM RET4 RETURN FATAL ERROR
- POS8 LDN /MTX/MWT
- UJN POS7 ISSUE MARGINALLY WRITTEN TAPE
- POS9 LDN 0 CHECK FOR TOO FAR FORWARD
- STD T2
- LDM POSB
- STD T1
- LDM BIDW,T1
- SBM TBDW,T2
- NJN POS6 IF POSITION LOST
- RJM BKS CORRECT FOR TOO FAR FORWARD AND RETRY
- LDM POSA
- RJM BTW
- LDN 1
- STD T2
- LDM POSB
- STD T1
- RJM CBW
- ZJN POS10 IF POSITION NOT LOST
- LJM POS6 POSITION LOST
- POS10 LDN /MTX/SMF ISSUE SINGLE BLOCK MISPOSITION MESSAGE
- LJM POS11 ISSUE ERROR MESSAGE
- RCI SPACE 4,10
- ** RCI - READ *CIO* INFORMATION FROM *MAGNET,S FL.
- *
- * EXIT (T6 - T7) = FET ADDRESS.
- * (T1 - T5) = UCIC WORD.
- *
- * USES CM - CM+4.
- *
- * CALLS HNG.
- *
- * MACROS DELAY, MONITOR, PAUSE.
- RCI3 LDD MA READ WORDS
- CRD T6-3
- ADN 2
- CRD T1
- RCI SUBR ENTRY/EXIT
- RCI1 LDM UADA SET FWA OF DESIRED UDT WORDS
- ADN /MTX/UCIA
- STD CM+4
- LDC 300 REQUEST THREE WORDS
- STD CM+3
- LDN 0 REQUEST READ FROM *MAGNET*
- STD CM+1
- LCN 7777-/SSD/MTSI SET *MAGNET* SUBSYSTEM IDENTIFICATION
- STD CM+2
- MONITOR TDAM
- LDD CM+1
- ZJN RCI3 IF DONE
- SBN 2
- PJN RCI2 IF MOVE NOT IN PROGRESS
- PAUSE NE
- DELAY
- UJN RCI1 REISSUE REQUEST
- RCI2 RJM HNG HANG PP
- RDA SPACE 4,15
- ** RDA - READ DATA.
- *
- * EXIT (A) = (T4) = 0, NO ERROR.
- * (BY) = BYTE COUNT OF BLOCK.
- * (EBUF - EBUF+3) = TRAILER BYTES FOR I FORMAT.
- * (EBUF-1 - EBUF+3) = PREFIX BYTES FOR LI FORMAT.
- * (UBWB) SET TO 1 IF TAPE MARK.
- *
- * USES T3, T4.
- *
- * CALLS ABC, CKR, FCN, WEO.
- RDA SUBR ENTRY/EXIT
- RJM CKR CHECK READY
- LDN F0040 ISSUE READ FUNCTION
- RJM FCN
- ACN CH
- RDA1 LDN 0
- STD T3 CLEAR LOOP COUNTER
- STD BY
- * FLUSH DATA, COUNT BYTES, SAVE TRAILER (I FORMAT), SAVE
- * PREFIX (LI FORMAT).
- RDA2 LDC 500 INPUT DATA IN 500B WORD CHUNKS
- IAM EBUF,CH
- RDAD EQU *-1
- * IAM EBUF-1,CH (LI FORMAT)
- NJN RDA3 IF END OF DATA
- RDA2.1 AOD T3 INCREMENT LOOP COUNTER
- UJN RDA2 LOOP UNTIL END OF DATA
- RDAE EQU *-1
- * LDC 500 (LI FORMAT)
- DATA 500
- IAM EBUF+4,CH
- ZJN RDA2.1 IF ALL WORDS TRANSFERRED
- RDA3 STD T4 SAVE REMAINDER
- LDC 500
- SBD T4
- STD T4
- LDD T3 LOAD LOOP COUNT
- ZJN RDA5 IF NOT GREATER THAN 500 WORDS
- RDA4 LDC 500
- RAD BY
- SHN -12D
- NJN RDA6 IF GREATER THAN 7777 WORDS
- SOD T3 DECREMENT LOOP COUNT
- NJN RDA4 IF NOT LAST CHUNK
- RDA5 LDD T4 LOAD REMAINDER
- NJN RDA5.1 IF NOT EVEN CHUNK
- LDC 500 SET TO LAST ADDRESS OF CHUNK
- STD T4
- UJN RDA7 EXIT
- RDA5.1 RAD BY
- SHN -12D
- ZJN RDA7 IF NO BORROW
- RDA6 LCN 0
- STD BY SET BYTE COUNT TO 7777
- RDA7 RJM WEO WAIT END OF OPERATION
- SCN 74
- ZJN RDA9 IF NO ERRORS
- SHN 21-10
- RDAA PJN RDA8 IF NOT NOISE
- * UJN RDA8 (ATS UNIT)
- LDN 42 ISSUE REPEAT READ
- RJM FCN
- ACN CH
- LJM RDA1 REINITIATE READ
- RDA8 LDM MTDS
- LPC 7077
- RDAB EQU *-1
- * LPC 7777 (ATS UNIT)
- ZJN RDA9 IF ONLY WARNING STATUS
- LCN 0
- RDA9 STM RDAC
- RJM ABC
- ZJN RDA10 IF NO BYTE ADJUSTMENT
- SOD T4
- * MOVE I FORMAT TRAILOR INFORMATION.
- RDA10 LDN 3
- RDAF EQU *-1
- * UJN RDA15 (LI FORMAT)
- STD T5
- RDA11 LDM EBUF-1,T4
- STM EBUF,T5
- SOD T4
- SOD T5
- PJN RDA11 IF MORE DATA TO MOVE
- LDM ABCC
- ZJN RDA15 IF NO ADJUSTMENT
- SOD BY
- RDA15 LDD DS CHECK FOR TAPE MARK
- LPN 20
- LMN 20
- NJN RDA17 IF NOT TAPE MARK
- STD BY
- LDN 1 SET TAPE MARK INDICATION
- STM UBWB
- LDD HP
- LPN 1
- NJN RDA17 IF 9 TRACK
- LDD MD
- SHN 21-6
- MJN RDA17 IF 7 TRACK CODED
- LDN 0 CLEAR ERROR INDICATION
- STM RDAC
- RDA17 LDM RDAC LOAD EXIT FLAG
- STD T4
- LJM RDAX RETURN
- RDAC CON 0 EXIT FLAG
- SOB SPACE 4,10
- ** SOB - SET UP AND READ ONE BLOCK.
- *
- * ENTRY (T9) = POINTER TO BID WINDOW.
- *
- * EXIT (UBWB) = BID OF READ CORRECTED FOR CLIPPING LEVEL AND
- * READ ERRORS.
- *
- * USES T0.
- *
- * CALLS FCN, RDA.
- SOB2 RJM RDA READ BLOCK
- ZJN SOBX IF GOOD READ
- SOB3 LDN 4 SET UNUSABLE BID
- STM UBWB
- SOB SUBR ENTRY/EXIT
- LDD MD CHECK IF PARITY CHANGE NEEDED
- SHN -5
- LMM BIDW,T9
- LPN 2
- ZJN SOB1 IF NO CHANGE NEEDED
- LDD HP
- LPN 1
- NJN SOB1 IF 9 TRACK
- LDN 5 TOGGLE TO OPPOSITE PARITY
- RJM FCN
- SOB1 LDM BIDW,T9 CHECK IF CHANGE IN CLIPPING LEVEL NEEDED
- SHN 21-2
- PJN SOB2 IF NO CHANGE NEEDED
- LPN 7 SET CLIPPING LEVEL
- SHN 6
- ADN 6
- RJM FCN
- RJM RDA READ BLOCK
- NJN SOB3 IF ERROR
- LDM BIDW,T9 ADD CLIPPING LEVEL TO LAST BID
- LPN 74
- STD T0
- LDM UBWB
- SCN 74
- LMD T0
- STM UBWB
- LJM SOBX RETURN
- WFC SPACE 4,10
- ** WFC - WAIT BACKSPACE FUNCTION COMPLETE.
- * TIMES OUT APPROXIMATELY 25 FEET OF TAPE.
- *
- * EXIT (DS) = UNIT STATUS.
- *
- * USES T2.
- *
- * CALLS //STW.
- WFC2 CON 0 ENTERED VIA *RJM* FROM //STW
- SOD T2
- NJN WFC1 IF NOT TIMEOUT
- LDC //ERR RESET ERROR EXIT
- STM //STWC
- UJN WFC1 ATTEMPT 1 MORE WAIT
- WFC SUBR ENTRY/EXIT
- LDC 2000 SET TIME OUT
- STD T2
- LDC WFC2 SET RETURN ON TIMEOUT IN //STW
- STM //STWC
- WFC1 LDN 2 WAIT NOT BUSY
- RJM //STW
- LDC //ERR RESET ERROR EXIT
- STM //STWC
- UJN WFCX RETURN
- WNB SPACE 4,10
- ** WNB - WAIT NOT BUSY ON *CMTS* OR *FSC* CONTROLLER.
- *
- * USES T2, CM - CM+4.
- *
- * CALLS ERR, FCN, STW.
- *
- * MACROS SFA.
- WNB SUBR ENTRY/EXIT
- LDC 2000
- STD T2
- WNB1 LDN 0
- RJM //STW WAIT FOR END OF OPERATION
- LPN 2
- ZJN WNBX IF UNIT NOT BUSY
- SOD T2
- ZJN WNB2 IF TIMEOUT
- LDN 1
- RJM FCN RELEASE UNIT
- SFA EST,EO
- ADK EQDE
- CRD CM
- LDD CM+4
- LPN 17 GET UNIT NUMBER
- LMN 20
- RJM FCN CONNECT UNIT
- UJN WNB1 CONTINUE WAITING
- WNB2 LDN /MTX/WEO
- RJM ERR ISSUE ERROR MESSAGE
- SPACE 4,10
- ADDR TSAD SMER
- SPACE 4,10
- ** BUFFERS FOR READING DURING WRITE RECOVERY.
- EBUF BSS 0
- ERRNG 7777-EBUF-4-510 BUFFER DOES NOT FIT WITHIN PP
- WLP SPACE 4,15
- ** WLP - LOAD POINT RECOVERY.
- *
- * ENTRY DETAIL STATUS BUFFERS SET UP.
- *
- * EXIT (A) .LT. 0 IF NOT *TCF* OR *BFW* ERROR OR
- * IF *TCF* OR *BFW* ERROR WAS RECOVERED.
- * (A) = 0 IF RETRY ON *BFW* ERROR.
- *
- * ERROR TO *RET4* IF LOAD POINT PROBLEM.
- * (EC) = *TCF* OR *BFW*.
- *
- * USES T1.
- *
- * CALLS DTS, *EMM*, FCN, WFC, WNB.
- *
- * MACROS CALL.
- WLP SUBR ENTRY/EXIT
- LDD EC
- NJN WLP0 IF ERROR
- RJM DTS GET DETAILED STATUS
- * SAVE CURRENT EQUIPMENT STATUS.
- WLP0 LDD DS SAVE GENERAL STATUS
- STM WLPA
- LDM UBWB SAVE BLOCK ID
- STM WLPB
- LDN 0 SAVE DETAIL STATUS
- STD T1
- WLP1 LDM MTDS,T1 MOVE ALL DETAIL STATUS WORDS
- STM WLPC,T1
- AOD T1 INCREMENT STATUS WORD COUNTER
- SBN 16
- NJN WLP1 IF NOT ALL STATUS WORDS MOVED
- LDM ATUS+2 GET DETAIL STATUS WORD 13
- SHN 21-2 POSITION CLEANER ACTIVE BIT
- PJN WLP2 IF CLEANER PARKED
- LDD EP SET LOAD POINT ERROR FLAG
- LPC 6777
- ADC 1000
- STD EP
- LDN /MTX/TCF CLEANER ACTIVE
- LJM WLP10 ISSUE ERROR MESSAGE AND UNLOAD TAPE
- WLP2 LDM MTDS LOAD DETAIL STATUS WORD 3
- LPC 177 MASK ERROR CODES
- SBN 7
- ZJN WLP8 IF ERROR CODE 7
- SBN 3
- ZJN WLP8 IF ERROR CODE 12
- SBN 1
- ZJN WLP8 IF ERROR CODE 13
- SBN 3
- ZJN WLP8 IF ERROR CODE 16
- LDD EC
- NJN WLP6 IF NON-LOAD POINT ERROR
- LDD EP
- SHN 21-11
- PJN WLP6 IF NO PREVIOUS LOAD POINT ERROR
- LDN 0 CLEAR ERROR CODE
- STD EC
- LDD EP CLEAR LOAD POINT ERROR FLAG
- LPC 6777
- STD EP
- WLP6 LDD EP CLEAR LOAD POINT RECOVERY FLAG
- LPC 7377
- STD EP
- LCN 0
- LJM WLPX RETURN NO LOAD POINT ERROR OR RECOVERED
- WLP8 LDD EP SET LOAD POINT ERROR AND RECOVERY FLAGS
- LPC 6377
- LMC 1400
- STD EP
- LDD EI
- LPN 77 ERROR ITERATION
- ZJN WLP11 IF FIRST TRY ON BAD HEADER
- LPN 7
- ZJN WLP9 IF ITERATION IS A MULTIPLE OF 4
- SBN 4
- NJN WLP11 IF NOT A MULTIPLE OF 4
- WLP9 LDN /MTX/BFW BAD PHASE/GCR HEADERS
- WLP10 STD EC
- CALL EMM ISSUE MESSAGE TO ERROR LOG
- AOD EI
- LDC 110 UNLOAD THE TAPE
- RJM FCN
- LDD HP
- SHN 21-6
- MJN WLP10.2 IF *CMTS* OR *FSC* CONTROLLER
- RJM WFC WAIT END OF OPERATION
- WLP10.1 LJM RET4 RETURN ERROR CODE
- WLP10.2 RJM WNB WAIT END OF OPERATION
- UJN WLP10.1 RETURN ERROR CODE
- * REWIND TO LOAD POINT AND ATTEMPT REWRITE.
- WLP11 LDN F0010 REWIND TAPE TO LOAD POINT
- RJM FCN
- RJM WFC
- * RESTORE EQUIPMENT ERROR STATUS BEFORE EXIT.
- LDN 0
- STD T1
- LDM WLPA RESTORE GENERAL STATUS
- STD DS
- LDM WLPB RESTORE BLOCK ID
- STM UBWB
- WLP12 LDM WLPC,T1 RESTORE ERROR STATUS
- STM MTDS,T1
- AOD T1 INCREMENT COUNTER
- SBN 16
- NJN WLP12 IF NOT ALL STATUS WORDS MOVED
- * LDN 0
- LJM WLPX TRY TO REWRITE FROM LOAD POINT
- WLPA CON 0 GENERAL STATUS
- WLPB CON 0 BLOCK ID
- WLPC BSSZ 16 DETAILED STATUS
- SPACE 4,10
- ** CTAB - CHANNEL TABLE.
- CTAB CHTB
- TITLE OVERLAYABLE SUBROUTINES.
- SPACE 4,10
- ** NOTE - CODE AFTER THIS POINT WILL BE DESTROYED WHEN
- * CALLING THE ERROR PROCESSOR *EMM*. ALL CALLS TO CODE
- * LOCATED AFTER THIS POINT MUST BE DONE PRIOR TO CALLING
- * *EMM*.
- ERROVL
- EBW SPACE 4,15
- ** EBW - EVALUATE BID WINDOW.
- *
- * ENTRY (BIDW) = BID WINDOW.
- *
- * EXIT (POSA) = NUMBER OF BLOCKS TO BACKSPACE.
- * NUMBER OF BLOCKS TO BACKSPACE = 2 IF
- * 1) NO BID PRESENT.
- * 2) INVALID HISTORY BLOCK ID ENCOUNTERED.
- * 3) .GT. 5 BLOCK ID-S ENCOUNTERED.
- * 4) END OF BLOCK ID WINDOW ENCOUNTERED.
- * (WEMD) = BID FROM LAST WRITE.
- * (T2) = NUMBER OF DIFFERENT BLOCK ID-S.
- * (T4) = NUMBER OF SAME BLOCK ID-S.
- *
- * USES T1 - T4.
- EBW SUBR ENTRY/EXIT
- LDD CF CHECK IF BID PRESENT
- LPC 300
- LMC 300
- NJN EBW2 IF BID PRESENT
- EBW1 LJM EBW9 FORCE BACKSPACE OF TWO BLOCKS
- EBW2 LDM UBWB SAVE CURRENT BID
- STM WEMD
- LDD WP SET UP DIRECTS
- STD T1
- LDN 0
- STD T2
- STD T4
- LCN 0
- STD T3
- EBW3 LDD T2 CHECK FOR MAX COUNT OF 5
- ADD T4
- SBN 5
- PJN EBW1 IF MAX COUNT REACHED, FORCE SET 2
- LDM BIDW,T1
- LMN 4
- ZJN EBW10 IF INVALID, STOP SCAN
- LPN 1
- ZJN EBW5 IF NOT TAPE MARK
- AOD T2 FORCE BACKSPACE OVER TAPE MARK
- EBW4 STM POSA SET BACKSPACE COUNT
- LJM EBWX RETURN
- EBW5 LDM BIDW,T1
- SBD T3
- NJN EBW6 IF NOT SAME
- AOD T4 INCREMENT SAME BID COUNT
- UJN EBW7 CONTINUE BID SCAN
- EBW6 AOD T2 INCREMENT DIFFERENT COUNT
- SBN 2
- MJN EBW7 IF NOT TWO DIFFERENT BID-S
- LDD T2
- ADD T4
- UJN EBW4 STORE BACKSPACE COUNT AND EXIT
- EBW7 LDM BIDW,T1
- STD T3 SAVE LAST BID
- SOD T1 REDUCE POINTER
- PJN EBW8 IF NO OVERFLOW
- LPN 7
- STD T1
- EBW8 LMD WP CHECK FOR END OF WINDOW
- NJN EBW11 IF NOT END OF WINDOW
- EBW9 LDN 2 FORCE BACKSPACE OF TWO BLOCKS
- UJN EBW4 STORE BACKSPACE COUNT AND EXIT
- EBW10 LDD T2
- ADD T4
- ZJN EBW9 IF END OF WINDOW
- UJN EBW4 STORE BACKSPACE COUNT AND EXIT
- EBW11 LJM EBW3 CHECK NEXT BID
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * CALLS DME.
- PRS SUBR ENTRY/EXIT
- LDD HP
- LPN 20
- NJN PRS1 IF ATS-TYPE CONTROLLER
- LDM PRSF DISABLE LOAD POINT RECOVERY
- STM WEML
- UJN PRSX EXIT PRESET
- * MODIFY INSTRUCTIONS FOR ATS-TYPE CONTROLLER.
- PRS1 LDM PRSA
- STM ABCA
- LDC LPNI-LDNI
- RAM ABCB
- LDC 5000 FUNCTION CODE FOR *LDM*
- STM BTWA
- LCN 0
- STM WEMA
- STM WEMB
- STM RDAB
- LDC UJNI-PJNI
- RAM RDAA
- LDC LDMI
- STM WEMC
- LDD FN
- LMN /MTX/WTF
- NJP PRS2 IF NOT WRITE FUNCTION
- LDD FM
- SHN -6
- LMN /MTX/TFLI
- NJP PRS2 IF NOT LI FORMAT
- * LDN 0
- STM ADDR NO INSTRUCTION MODIFICATION
- STM CIDB NO BLOCK LENGTH CHECK
- ISTORE CIDA,(UJN CID1)
- LDC /WLI/WLIA
- STM WEMK DROP OUT FLAG
- STM WEMM
- LDC /WLI/CNW
- STM WEMG+1 SET ADDRESS OF *CNW*
- LDC /WLI/WRTK
- STM EOTA END OF TAPE EXIT ADDRESS
- SOM RDAD LOCATION FOR PREFIX
- LDC LDCI
- STM RDAE
- ISTORE RDAF,(UJN RDA15)
- PRS2 LJM PRSX EXIT PRESET
- PRSA BSS 0
- LOC ABCA
- UJN ABC2 ADJUST BUFFER LENGTH
- LOC *O
- PRSE BSS 0 BACKSPACE DELAYS FOR FSC, CMTS OR ISMT
- LOC 0
- CON LDNI+27 75 IPS UNIT (FSC)
- CON LDNI+17 125 IPS UNIT (FSC)
- CON LDNI+10 200 IPS UNIT (FSC OR CMTS)
- CON LDNI+34 25 IPS UNIT (ISMT)
- LOC *O
- PRSF BSS 0
- LOC WEML
- UJN WEM2.1 DISABLE LOAD POINT RECOVERY
- LOC *O
- OVERLAY (CTS WRITE ERROR PROCESSOR.),(BUFB+10),P,CWP
- CWP SPACE 4,15
- ** CWP - CTS WRITE ERROR PROCESSOR.
- *
- * EXIT TO CALLER IF EOT, RECOVERED ERROR OR ERROR PROCESSING
- * INHIBITED.
- * TO *WRA* IF ERROR.
- * (CN+3, CN+4) = OUT POINTER IF WRITE.
- *
- * USES CN - CN+4.
- *
- * CALLS /WLI/CNW, /WRITE/CNW, *CEM*, EOT, MCH, PRS, WRA.
- *
- * MACROS CALL.
- ENTRY CWP
- CWP SUBR ENTRY/EXIT
- * THE FOLLOWING CODE IS OVERLAYED BY THE OUT POINTER.
- CWPA EQU *
- CWPB EQU *+5
- LDM //LOV SAVE CALLERS EXIT ADDRESS
- STM CWP
- LDD MA SAVE OUT POINTER
- CWD CN
- CRM CWPA,ON
- LDC CTAB MODIFY CHANNELS
- RJM MCH
- RJM PRS PRESET
- LDD DS
- LPN 1
- NJN CWP1 IF READY
- LDN /MTX/RDR
- STD EC
- CWP1 LDD FN LOAD MAGNET FUNCTION CODE
- LMN /MTX/WLA
- NJN CWP2 IF NOT WRITE LABELS
- LDC RET2 FORCE REQUEUE AFTER WRITE IS GOOD
- STM /WLA/WLAG
- CWP2 LDM /WRITE/WTFE CHECK IF EOF REQUEST DETECTED AHEAD
- CWPC EQU *-1
- * LDM /WLI/WLIA (LI FORMAT)
- LMN 1
- NJN CWP3 IF NOT EOF REQUEST
- LDD MD
- SCN 14
- STD MD
- CWP3 LDD EC
- NJN CWP4 IF NOT RECOVERED ERROR
- CALL CEM ISSUE RECOVERED MESSAGE
- LDD FN
- LMN /MTX/WLA
- NJN CWP6 IF NOT WRITE LABELS
- STD EP CLEAR ERROR PARAMETERS
- STD EI CLEAR RETRY COUNT
- UJN CWP6 CLEAR ERROR CODE
- CWP4 LMN /MTX/STE
- NJN CWP5 IF NOT STATUS ERROR
- LDD DS
- SHN 21-3
- PJN CWP5 IF NOT EOT
- SHN 21-13-21+3+22
- MJN CWP5 IF OTHER ERRORS
- RJM EOT
- UJN CWP6 CLEAR ERROR CODE
- CWP5 LDD SP
- LPN 4
- NJN CWP6 IF ERROR PROCESSING INHIBITED
- RJM WRA WRITE RECOVERY ALGORITHM (NO RETURN)
- CWP6 LDN 0 CLEAR ERROR CODE
- STD EC
- LDD FN
- LMN /MTX/WLA
- ZJN CWP8 IF WRITE LABELS
- LDN 0 CLEAR ERROR PARAMATERS
- STD EP
- STD EI
- LDD MA RESTORE OUT POINTER
- CWM CWPA,ON
- SBN 1
- CRD CN
- LDM /WRITE/WTFE CHECK IF EOF REQUEST DETECTED AHEAD
- CWPD EQU *-1
- * LDM /WLI/WLIA (LI FORMAT)
- LMN 1
- NJN CWP7 IF NOT EOF REQUEST
- LDN 14 SET EOF STATUS
- RAD MD
- UJN CWP8 RESTORE MA BACK TO OLD OUT POINTER
- CWP7 RJM /WRITE/CNW
- CWPE EQU *-1
- * RJM /WLI/CNW (LI FORMAT)
- CWP8 LJM CWPX RETURN
- EOT SPACE 4,10
- ** EOT - END OF TAPE PROCESSOR.
- EOT SUBR ENTRY/EXIT
- LDC EOT1 SET TO RETURN HERE AFTER POINTER UPDATE
- STM /WRITE/WRTK
- EOTA EQU *-1
- * STM /WLI/WRTK (LI FORMAT)
- UJN EOTX RETURN
- EOT1 LDN /MTX/BEI RETURN END OF TAPE
- LJM RET3 RETURN ERROR CODE
- POS SPACE 4,15
- ** POS - POSITION TAPE.
- * THIS ROUTINE USES THE LOCATE BLOCK COMMAND TO POSITION
- * THE TAPE TO THE EXPECTED BLOCK POSITION.
- *
- * ENTRY (BL, BL+1) = NOS BLOCK POSITION.
- * (WP, EP+1) = PHYSICAL BLOCK ID WHEN (BL,BL+1) = 0.
- *
- * EXIT (A) = 0 IF NO ERROR.
- * TO *ERR* IF CHANNEL MALFUNCTION.
- *
- * USES T3.
- *
- * CALLS /PRESET/GPS, /PRESET/ICF, /PRESET/RBI.
- POS SUBR ENTRY/EXIT
- RJM /PRESET/RBI READ BLOCK ID
- LDM BIDW
- STM POSA
- SBN 20
- ZJN POS1 IF FIRST SEGMENT
- STM POSA SET PHYSICAL REFERENCE BLOCK ID
- POS1 LDD BL+1
- SHN 4
- ADD EP+1
- STM POSA+2 MOVE BLOCK NUMBER TO PARAMETERS
- SHN -14
- STM POSA+1
- LDD BL
- SHN 4
- ADD WP
- RAM POSA+1
- LDN F0016 LOCATE BLOCK
- RJM /PRESET/ICF ISSUE FUNCTION
- ACN CH
- LDN 3
- OAM POSA,CH OUTPUT THE 3 PARAMETER WORDS
- STD T3 WORDS NOT TRANSFERRED
- FJM *,CH WAIT FOR DATA TO BE TAKEN
- POS2 LDN 0 WAIT FOR END OF OPERATION
- RJM /PRESET/GPS GET AND PROCESS GENERAL STATUS
- MJN POS2 IF COMMAND RETRY
- SHN 21-13
- MJN POS3 IF ERROR
- LDD T3
- ZJN POS4 IF ALL WORDS TRANSFERRED
- LDN /MTX/CMF CHANNEL MALFUNCTION
- RJM ERR REPORT ERROR (NO RETURN)
- POS3 LDN /MTX/STE STATUS ERROR
- STD EC
- POS4 LJM POSX RETURN
- POSA DATA 0 LOCATE BLOCK PARAMETERS
- DATA 0 UPPER 12 BITS OF BLOCK NUMBER
- DATA 0 8/LOWER BITS OF BLOCK NUMBER / 4 UNUSED
- WFC SPACE 4,10
- ** WFC - WAIT FOR COMPLETION.
- *
- * CALLS /PRESET/GPS.
- WFC SUBR ENTRY/EXIT
- WFC1 LDN 0 WAIT FOR END OF OPERATION
- RJM /PRESET/GPS
- MJN WFC1 IF COMMAND RETRY
- UJN WFCX RETURN
- WRA SPACE 4,20
- ** WRA - WRITE RECOVERY ALGORITHM.
- *
- * ENTRY (EI) = RETRY COUNT.
- *
- * EXIT TO *RET2* TO REQUEUE.
- * TO *RET4* TO RETURN A FATAL ERROR.
- * TO *ERR* IF MICROCODE LOAD FAILED.
- * (EI) = (EI) + 1.
- *
- * USES CN, CN+1, EC, HP, MD.
- *
- * CALLS *CEM*, /PRESET/ICF, POS, /PRESET/RCU, WFC, *0CT*.
- *
- * MACROS CALL, EXECUTE.
- * THIS ROUTINE DOES ERROR RECOVERY AS FOLLOWS -
- *
- * IF (EI) = 0 LOG ERROR, POSITION TAPE, AND REQUEUE.
- * IF (EI) = 1 LOG ERROR, LOAD CCC MICROCODE, POSITION TAPE,
- * AND REQUEUE.
- * IF (EI) = 2 LOG UNRECOVERED ERROR, POSITION TAPE, RETURN
- * FATAL CODE.
- *
- WRA CON 0 ENTRY
- LDC LDNI+F0002
- STM /PRESET/GPSC SEND CONTINUE IF COMMAND RETRY
- WRA1 CALL CEM LOG ERROR
- LDC LDNI
- STM //PNRC FORCE DROP OUT
- AOD EI INCREMENT RETRY COUNT
- SBN 1
- ZJP WRA4 IF FIRST ERROR
- SBN 1
- NJP WRA5 IF RETRIES FAILED
- CHTE *
- LDN CH SET CHANNEL NUMBER
- STD CN
- LDC ERLB SET BUFFER ADDRESS
- STD CN+1
- EXECUTE 0CT,ERLA+5 LOAD CTS/CCC MICROCODE
- LDD CN
- ZJN WRA3 IF MICROCODE LOADED
- STD EC
- SHN 0-13
- PJN WRA2 IF ERROR CODE ALREADY SAVED
- LDN /MTX/CMF
- STD EC
- WRA2 LDM CN+1 SAVE FUNCTION
- STM /PRESET/ICFA
- RJM ERR REPORT ERROR (NO RETURN)
- WRA3 RJM /PRESET/RCU RECONNECT UNIT
- WRA4 RJM POS POSITION TAPE
- NJP WRA1 IF LOCATE BLOCK FAILED
- STD EC CLEAR ERROR CODE
- LDD HP CLEAR EOR FLAG
- LPC 5777
- STD HP
- LDD MD CLEAR EOR/EOF THIS OPERATION FLAG
- LPC 7377
- STD MD
- LJM RET2 REQUEUE THE REQUEST
- WRA5 LDD FN
- LMN /MTX/WLA
- NJN WRA7 IF NOT WRITE LABELS
- LDD EC
- LMN /MTX/STE
- NJN WRA7 IF NOT STATUS ERROR
- LDM CTGS
- LPC 177
- SBN CE007
- ZJN WRA6 IF LOAD POINT ERROR
- SBN CE012-CE007
- NJN WRA7 IF NOT LOAD POINT ERROR
- WRA6 LDN /MTX/BFW LOAD POINT ERROR
- STD EC
- CALL CEM LOG THE ERROR
- LDC F0110 UNLOAD TAPE
- RJM /PRESET/ICF ISSUE CTS FUNCTION
- RJM WFC WAIT FOR COMPLETION
- UJN WRA8 RETURN FATAL ERROR
- WRA7 LDD FN
- LMN /MTX/WLA
- NJN WRA8 IF NOT WRITE LABELS
- LDD UP
- SCN 30 CLEAR WRITE OPERATION AND EOR/EOF FLAGS
- STD UP
- WRA8 LJM RET4 RETURN FATAL ERROR
- SPACE 4,10
- ERRNG ERLA-* CODE OVERFLOWS HELPER OVERLAY
- ERRPL ERLA+5+ZCTL-ERLB *0CT* OVERFLOWS INTO BUFFER
- SPACE 4,10
- ** CTAB - CHANNEL TABLE.
- CTAB CHTB
- PRS SPACE 4,10
- ** PRS - PRESET.
- PRS SUBR ENTRY/EXIT
- LDD FN
- LMN /MTX/WTF
- NJN PRSX IF NOT WRITE FUNCTION
- LDD FM
- SHN -6
- LMN /MTX/TFLI
- NJN PRSX IF NOT LI FORMAT
- LDC /WLI/WLIA
- STM CWPC DROP OUT FLAG
- STM CWPD
- LDC /WLI/CNW
- STM CWPE SET ADDRESS OF *CNW*
- LDC /WLI/WRTK
- STM EOTA END OF TAPE EXIT ADDRESS
- LJM PRSX EXIT PRESET
- SPACE 4,10
- OVERFLOW BUFB+10,/WLA/WTMX OVERFLOW INTO CALLING ROUTINE
- OVERLAY (CTS ERPA CODES.),(ERLB+5),P,ERP
- ** ERP - ERROR RECOVERY PROCEDURE ACTION TEXT MESSAGES.
- ENTRY ERP
- ERP SUBR ENTRY/EXIT
- UJN ERPX RETURN
- * THE FOLLOWING TABLE CONTAINS POINTERS TO TEXT MESSAGES
- * FOR ERPA CODES 21 THROUGH 4C.
- ERPA CON ERP21
- CON ERP22
- CON ERP23
- CON ERP24
- CON ERP23
- CON ERP23
- CON ERP27
- CON ERP28
- CON 0,0,0
- CON ERP2C
- CON 0
- CON ERP2E
- CON 0
- CON ERP30
- CON ERP31
- CON ERP32
- CON ERP33
- CON ERP34
- CON ERP35
- CON 0
- CON ERP37
- CON ERP38
- CON ERP39
- CON ERP3A
- CON ERP3B
- CON 0,0,0,0,0
- CON ERP41
- CON ERP42
- CON ERP3A
- CON ERP44
- CON ERP45
- CON ERP46
- CON ERP47
- CON 0
- CON ERP49
- CON ERP4A
- CON 0
- CON ERP4C
- * THE FOLLOWING ARE ERPA TEXT MESSAGES.
- ERP21 DATA C*DATA STREAMING ERROR.*
- ERP22 DATA C*PATH EQUIPMENT CHECK.*
- ERP23 DATA C*DATA CHECK.*
- ERP24 DATA C*LOAD DISPLAY CHECK.*
- ERP27 DATA C*COMMAND REJECT.*
- ERP28 DATA C*WRITE ID CHECK.*
- ERP2C DATA C*CU EQUIPMENT CHECK.*
- ERP2E DATA C*NOT CAPABLE.*
- ERP30 DATA C*FILE PROTECTED.*
- ERP31 DATA C*TAPE VOID.*
- ERP32 DATA C*TENSION LOSS.*
- ERP33 DATA C*LOAD FAILURE.*
- ERP34 DATA C*UNLOAD FAILURE.*
- ERP35 DATA C*DRIVE EQUIPMENT CHECK.*
- ERP37 DATA C*TAPE LENGTH ERROR.*
- ERP38 DATA C*PHYSICAL END OF TAPE.*
- ERP39 DATA C*BACKWARD AT BOT.*
- ERP3A DATA C*DRIVE NOT READY.*
- ERP3B DATA C*UNLOAD ERROR.*
- ERP41 DATA C*BLOCK ID SEQUENCE ERROR.*
- ERP42 DATA C*DEGRADED MODE.*
- ERP44 DATA C*LOCATE BLOCK UNSUCCESSFUL.*
- ERP45 DATA C*DRIVE ASSIGNED ELSEWHERE*
- ERP46 DATA C*DRIVE OFFLINE.*
- ERP47 DATA C*CU ERROR*
- ERP49 DATA C*BUS OUT PARITY*
- ERP4A DATA C*CU ERP FAILED.*
- ERP4C DATA C*CU CHECK ONE ERROR*
- ERRNG 1*473+ERLB+5-*
- QUAL 1LT
- .QNAM MICRO 1,, 1LT
- .IM SET 0
- TTL 1MT/1LT - LONG BLOCK PROCESSOR.
- TITLE
- IDENT 1LT,LTP LONG BLOCK HELPER PROCESSOR.
- *COMMENT 1MT - LONG BLOCK HELPER PROCESSOR.
- SPACE 4,10
- ** *1LT* CALL FORMAT.
- *
- * INPUT REGISTER -
- *
- *T, 18/ 1LT,6/ CP,6/ HP,6/ FUNC,2/ CF,10/ CH,12/ PPIA
- *
- * MESSAGE BUFFER + 1 (*1MT*) -
- *
- *T, 12/ -0,24/ FIRST,24/ LIMIT
- *
- * CP CONTROL POINT NUMBER.
- * HP UNIT HARDWARE PARAMETERS (UPPER 6 BITS ONLY).
- * FUNC FUNCTION (0 = READ, 1 = WRITE, 2 = WRITE *LI* FORMAT).
- * CF MTS/ATS CONTROLLER FLAG.
- * CH TAPE CHANNEL.
- * PPIA *1MT* PP INPUT REGISTER ADDRESS.
- * FIRST *FIRST* POINTER FROM FET.
- * LIMIT *LIMIT* POINTER FROM FET.
- SPACE 4,10
- ** *1LT* REQUEST/REPLY FORMAT.
- *
- * REQUESTS AND REPLYS ARE PASSED IN THE MESSAGE BUFFER OF *1LT*.
- *
- * REQUEST (*1MT*) -
- *
- *T, 12/ CC,12/ WC,12/ OV,24/ PT
- *
- * CC COMMAND CODE (1 = START OF BLOCK, 3 = READ SKIP).
- * WC NUMBER OF WORDS IN LAST CHUNK (READ).
- * WC NUMBER OF BYTES IN LAST CHUNK (WRITE).
- * OV OVERFLOW CHUNK COUNT.
- * PT POINTER TO START TRANSFER AT.
- *
- * REPLY (*1LT*) -
- *
- *T, 12/ CR,12/ BT,12/ WT,24/ 0
- *
- * CR COMMAND RESPONSE CODE (0 = ACKNOWLEDGE, 2 = COMPLETE).
- * BT BYTES TRANSFERRED.
- * WT WORDS TRANSFERRED.
- SPACE 4,15
- ** *1MT*/*1LT* INTERLOCK (CYBER 180 ONLY).
- *
- * FOR CYBER 180 MAINFRAMES, AN INTERLOCK IS MAINTAINED
- * IN MESSAGE BUFFER + 1 (*1LT*). THIS INTERLOCK IS USED
- * TOGETHER WITH THE CHANNEL FLAG TO ENSURE THAT CHUNKS
- * ARE SEQUENCED CORRECTLY.
- *
- *T, 12/ IN,48/ RESERVED
- *
- * IN INTERLOCK
- * (0 = *1MT* MAY TRY TO SET THE CHANNEL FLAG,
- * 1 = *1LT* MAY TRY TO SET THE CHANNEL FLAG).
- SPACE 4,10
- ** DIRECT CELL DEFINITIONS.
- LOC 20
- CC BSS 1 COMMAND CODE
- WC BSS 1 NUMBER WORDS IN LAST CHUNK (READ)
- * NUMBER BYTES IN LAST CHUNK (WRITE)
- OV BSS 1 OVERFLOW CHUNK COUNT
- PT BSS 2 POINTER TO START TRANSFER AT
- CR BSS 1 COMMAND RESPONSE CODE
- BT BSS 1 BYTES TRANSFERRED
- WT BSS 1 WORDS TRANSFERRED
- ZR BSS 5 (5 BYTES OF ZEROES)
- BI BSS 1 BYTES TO INPUT/OUTPUT
- RS BSS 2 AMOUNT OF SPACE IN BUFFER - READ SKIP
- LOC *O
- LTP SPACE 4,10
- ** LTP - LONG BLOCK PROCESSOR.
- *
- * ENTRY (IR+2) = 6/X, 6/Y WHERE
- * X = UPPER 6 BITS OF (HP).
- * Y = 2 IF WRITE LI FORMAT.
- * Y = 1 IF WRITE AND NOT LI FORMAT.
- * Y = 0 IF READ.
- *
- * CALLS PRS.
- *
- * MACROS MONITOR.
- ORG PPFW
- LTP RJM PRS PRESET
- LDD IR+2
- LPN 77
- NJN LTP1 IF WRITE
- LJM RED PROCESS READ
- LTP1 SBN 2
- ZJN LTP2 IF WRITE LI FORMAT
- LDC UJNI+WRT8.1-WRTE
- STM WRTE DO NOT ADJUST BYTE COUNT
- LTP2 LJM WRT PROCESS WRITE
- DPP MONITOR DPPM DROP PPU
- LJM PPR EXIT TO PP RESIDENT
- RED SPACE 4,10
- ** RED - READ DATA FROM TAPE.
- * THIS ROUTINE TRANSFERS CHUNKS 2, 4, 6, ... OF A LONG BLOCK.
- * IT EXITS TO *WSB* AND RETURNS WITH TRANSFER INFORMATION
- * IN *OV* AND *WC* IF IT IS NEEDED TO HELP TRANSFER A BLOCK.
- *
- * CALLS ADP, WDA, WSB.
- RED RJM WSB WAIT FOR *1MT* TO START BLOCK
- * INSURE *1MT* GETS FIRST PORTION OF DATA.
- LDC UJNI+RED10-REDE SET START OF BLOCK
- * LDC NJNI+.RED8-.REDB (ATS NON-CYBER 180)
- * LDC NJNI+RED8.-REDB. (CYBER 180 IOU)
- REDA EQU *-1
- STM REDE
- * STM .REDB (ATS NON-CYBER 180)
- * STM REDB. (CYBER 180 IOU)
- REDF EQU *-1
- RED1 IJM RED12,CH IF *1MT* COMPLETE
- * UJN RED3 (ATS NON-CYBER 180)
- * UJN RED3 (CYBER 180 IOU)
- REDB EQU *-2
- FJM RED2,CH IF DATA TRANSFER STARTED
- EJM RED1,CH IF *1MT* NOT STARTED
- RED2 LDN 40 DELAY TO INSURE *1MT* INTO BLOCK TRANSFER
- * LDN 77 (2X PPU SPEED)
- REDC EQU *-1
- SBN 1
- NJN *-1
- RED3 LCN 2
- RAD OV
- PJN RED5 IF INPUT FULL BLOCK
- ADN 1
- PJN RED4 IF NOT DONE
- LJM RED12 SEND RESPONSE TO *1MT*
- RED4 LDC NJNI+RED10-REDE
- * LDC UJNI+.RED8-.REDB (ATS CONTROLLER)
- * LDC UJNI+RED8.-REDB. (CYBER 180)
- REDD EQU *-1
- STM REDE
- * STM .REDB (ATS NON-CYBER 180)
- * STM REDB. (CYBER 180)
- REDG EQU *-1
- LDD WC
- SHN 2
- ADD WC
- ADN 1
- UJN RED6 SET UP TO INPUT DATA
- ERRNZ RED6-.RED6 IF TAGS OUT OF SYNC
- RED5 LDC LBBY
- * THE FOLLOWING CODE IS OVERLAID BY THE ATS INPUT LOOP IF ATS
- * ON A NON-CYBER 180, OR BY THE IOU INPUT LOOP ON A CYBER 180.
- .REDA EQU * BEGINNING OF OVERLAID CODE
- RED6 STD BI
- STD T1 PRESET BYTES REMAINING
- RED7 IJM RED10,CH IF *1MT* FINISHED INPUT
- RED8 EJM RED7,CH IF *1MT* TAKING DATA
- EJM RED7,CH IF *1MT* TAKING DATA
- EJM RED7,CH IF *1MT* TAKING DATA
- EJM RED7,CH IF *1MT* TAKING DATA
- FJM RED9,CH IF TIME FOR *1LT* TO TAKE DATA
- UJN RED8 LOOP
- RED9 IAM BUFB,CH INPUT THIS PP,S DATA
- STD T1
- UJN RED10 NOT LAST PARTIAL BLOCK
- * NJN RED10 (IF NOT BLOCK TOO LARGE)
- REDE EQU *-1
- DCN CH+40 TERMINATE TRANSFER
- .REDAL EQU *-.REDA LENGTH OF OVERLAID AREA
- RED10 LDD BI CALCULATE BYTES INPUT
- SBD T1
- STD BT
- ADN 4
- STD T2
- SHN 1 13*BYTES
- ADD T2
- SHN 2
- ADD T2
- SHN 14 (-6) (13*BYTES)/64
- STD T0
- SHN 6+2 4*13*BYTES (52*BYTES)
- SBD T2 51*BYTES
- ADD T0 (51*BYTES)+((13*BYTES)/64)
- SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
- STD WT WORDS TO TRANSFER
- LDC /MTX/LBWD ADVANCE POINTER OVER DATA *1MT* PUT IN
- RJM ADP
- LDD WT ADVANCE POINTER FOR THIS TRANSFER
- RJM ADP
- RJM WDA WRITE DATA
- LDD BT
- LMC LBBY
- NJN RED12 IF NOT FULL BLOCK
- LJM RED3 LOOP
- RED11 LDN 0 SET NO DATA READ
- STD BT
- STD WT
- RED12 LDD MA SEND RESPONSE TO *1MT*
- CWD CR
- LJM RED WAIT FOR *1MT* TO INDICATE WHAT TO DO
- WRT SPACE 4,10
- ** WRT - WRITE TAPE.
- * THIS ROUTINE TRANSFERS CHUNKS 2, 4, 6, ... OF THE BLOCK.
- * IT EXITS TO *WSB* AND RETURNS WITH TRANSFER INFORMATION
- * IN *OV* AND *WC* IF IT IS NEEDED TO HELP TRANSFER A BLOCK.
- *
- * CALLS ADP, OPA, OPD, OPE, OPI, OPL, RDA, WSB.
- WRT RJM WSB WAIT FOR *1MT* START INDICATION
- LDD WC SET BYTES IN LAST BLOCK
- STD BI
- ADN 4
- STD T2
- SHN 1 13*BYTES
- ADD T2
- SHN 2
- ADD T2
- SHN 14 (-6) (13*BYTES)/64
- STD T0
- SHN 6+2 4*13*BYTES (52*BYTES)
- SBD T2 51*BYTES
- ADD T0 (51*BYTES)+((13*BYTES)/64)
- SHN -8D WORDS = ((51*BYTES)+((13*BYTES)/64))/256
- STD WC
- LDN 0
- WRT1 IJM WRT9,CH IF ERROR
- EJM WRT1,CH IF DATA TRANSFER NOT STARTED
- * UJN WRT2 (CYBER 180)
- WRTA EQU *-2
- * PREPARE TO OUTPUT NEXT CHUNK.
- WRT2 LDC /MTX/LBWD SKIP CHUNK WRITTEN BY *1MT*
- RJM ADP
- LDD OV
- ZJN WRT5 IF 1LT WILL FINISH
- LCN 2 DECREMENT CHUNK COUNT
- RAD OV
- NJN WRT3 IF NOT EVEN MULTIPLE OR NOT DONE
- LDD BI
- NJN WRT6 IF NOT FULL CHUNK
- LJM WRT7 FULL CHUNK WITH TERMINATION
- WRT3 SBN 1
- PJN WRT6 IF NOT COMPLETE
- ADN 1
- MJN WRT4 IF POSSIBLE PARTIAL BLOCK
- LDD BI
- ZJN WRT7 IF TERMINATION BLOCK
- UJN WRT6 SET UP POINTERS
- WRT4 LDD WC
- NJN WRT8 IF *1LT* WILL FINISH WRITE
- WRT5 LJM WRT9 SEND RESPONSE TO *1MT*
- WRT6 LDC /MTX/LBWD SET UP POINTERS
- RJM ADP
- RJM RDA READ DATA
- LDC LBBY OUTPUT DATA
- STD BT
- RJM OPD OUTPUT DATA
- * RJM OPA (ATS NON-CYBER 180)
- * RJM OPI (CYBER 180)
- WRTB EQU *-1
- NJN WRT9 IF TRANSFER INCOMPLETE
- LJM WRT2 SET UP TO OUTPUT NEXT CHUNK
- WRT7 LDC LBBY
- STD BI
- LDC /MTX/LBWD
- WRT8 RJM ADP
- RJM RDA READ DATA
- LDD BI
- LPC 7776 WRITE EVEN BYTE COUNT
- WRTE EQU *-2
- * UJN WRT8.1 (NOT LI FORMAT)
- ADN 1
- WRT8.1 RJM OPD OUTPUT DATA
- * RJM OPL (ATS NON-CYBER 180 - OUTPUT LAST CHUNK)
- * RJM OPE (CYBER 180 - OUTPUT LAST CHUNK
- WRTC EQU *-1
- FJM *,CH
- NJN WRT9 IF INCOMPLETE TRANSFER
- UJN WRT8.2
- WRTD EQU *-1
- * DELAY 10 MICROSECONDS TO PREVENT A HARDWARE ERROR IN THE
- * CCC. THE DISCONNECT WOULD SOMETIMES CAUSE THE LAST BYTE TO
- * BE LOST.
- * LDN 20 (CTS)
- SBN 1
- NJN *-1
- WRT8.2 DCN CH+40
- WRT9 STD BT SAVE BYTES REMAINING
- LDD MA SEND RESPONSE TO *1MT*
- CWD CR
- LJM WRT LOOP FOR NEXT BLOCK
- TITLE SUBROUTINES.
- ADP SPACE 4,10
- ** ADP - ADVANCE POINTER.
- *
- * ENTRY (PT - PT+1) = IN POINTER.
- * (A) = WORDS TO INCREMENT IN POINTER BY.
- *
- * EXIT (T4 - T5) = STARTING IN POINTER.
- * (PT - PT+1) = UPDATED IN POINTER.
- * (T6) = FIRST PART WORD COUNT.
- *
- * MACROS SADT.
- ADP SUBR ENTRY/EXIT
- STD T6
- ADPA UJN ADP2 NOT READ SKIP
- * PSN (READ SKIP)
- LDD RS
- SHN 14
- LMD RS+1
- SBD T6
- PJN ADP1 IF STILL ROOM FOR ENTIRE BLOCK
- RAD T6 ADJUST WORD COUNT
- LDN 0 SET BUFFER FULL
- ADP1 STD RS+1
- SHN -14
- STD RS
- ADP2 LDD PT SAVE IN
- STD T4
- LDD PT+1
- STD T5
- LDN 0 PRESET SECOND PART WORD COUNT
- STD T7
- LDD T6 UPDATE IN
- RAD PT+1
- SHN -14
- RAD PT
- SHN 14
- LMD PT+1
- SADT .LM,C
- ADC -* (-LIMIT)
- MJN ADPX IF NO WRAP AROUND
- STD T7 SET SECOND PART WORD COUNT
- SADT .FT
- ADC * (FIRST)
- STD PT+1
- SHN -14
- STD PT
- LDD T6 RESET FIRST PART WORD COUNT
- SBD T7
- STD T6
- LJM ADPX RETURN
- CPD SPACE 4,10
- ** CPD - CHECK PP DROP OUT.
- *
- * ENTRY (IR+4) = *1MT* INPUT REGISTER ADDRESS.
- *
- * EXIT EXIT TO DPP IF *1MT* GONE.
- *
- * USES CM - CM+4.
- CPD SUBR ENTRY/EXIT
- CPDA LDC 0 (*ACPP* ADDRESS)
- CRD CM GET CP ASSIGNMENT
- LDD CM+2
- LMD CP
- NJN CPD1 IF NOT CORRECT CP ASSIGNMENT
- LDD IR+4 GET INPUT REGISTER
- CRD CM
- LDD CM+1
- SCN 77
- SHN 6
- LMD CM
- LMC 3RT1M
- NJN CPD1 IF NOT *1MT*
- LDD CM+3
- LMD IR+3
- LPN 37
- ZJN CPDX IF CORRECT CHANNEL
- CPD1 LJM DPP DROP PPU
- INM SPACE 4,10
- ** INM - INSTRUCTION MODIFICATION.
- *
- * ENTRY (A) = FWA OF INSTRUCTION MODIFICATION LIST.
- *
- * NOTE FET ADDRESS AND BLOCK SIZE ARE NOT AVAILABLE IN *1LT*.
- *
- * USES SC, CM+4, CM+5, T2 - CM+3.
- INM SUBR ENTRY/EXIT
- ZJN INMX IF NO MODIFICATIONS
- STD SC
- INMA LDC * SET FIRST
- STD .FT+1
- SHN -14
- STD .FT
- INMB LDC * SET LIMIT
- STD .LM+1
- SHN -14
- STD .LM
- SBD .FT
- SHN 14
- ADD .LM+1
- SBD .FT+1
- STD .LF+1
- SHN -14
- STD .LF
- INM1 LDI SC
- ZJN INMX IF END OF LIST
- SHN 21-0
- STD T1 SAVE INSTRUCTION ADDRESS
- SHN -21
- SHN 1 COMPLEMENT FLAG * 2
- LMC UJNI+3
- STM INMC
- LDI T1 PRESERVE INSTRUCTION OP CODE
- SCN 77
- STI T1
- LDM 1,SC EXTRACT DIRECT CELL TO REFERENCE
- SHN 14
- STD CM+4
- SCN 77 CLEAR DIRECT CELL ADDRESS
- SHN 3 EXTRACT BIAS
- STD CM+5
- SCN 7 CLEAR BIAS
- ADI CM+4 ADD UPPER PORTION OF VALUE
- PJN INM2 IF RELATIVE VALUE DESIRED
- SHN 6
- SCN 40 CLEAR ABSOLUTE FLAG
- ADD RA
- SHN 14
- INM2 SHN 14
- ADM 1,CM+4 ADD LOWER PORTION OF VALUE
- ADD CM+5 ADD BIAS
- * NOTE CODE SHOULD NOT BE ADDED IN NEXT THREE LINES.
- INMC UJN 3 COMPLEMENT NOT NEEDED
- * UJN 1 COMPLEMENT NEEDED
- LMC -0
- STM 1,T1 MODIFY INSTRUCTION
- SHN -14
- RAI T1
- LDN 2 INCREMENT TO NEXT ITEM IN LIST
- RAD SC
- LJM INM1 LOOP
- ITS SPACE 4,10
- ** ITS - INDICATE *1LT* TRANSFER STARTED.
- *
- * ENTRY (A) = BYTE COUNT.
- *
- * EXIT (A) = BYTE COUNT.
- ITS SUBR ENTRY/EXIT
- STD T0 SAVE BYTE COUNT
- LDD MA INDICATE *1LT* TRANSFER STARTED
- ADN 1
- CWD ZR
- LDD T0 RESTORE (A)
- UJN ITSX RETURN
- OPA SPACE 4,10
- ** OPA - OUTPUT DATA TO ATS UNIT (NON-CYBER 180).
- *
- * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
- *
- * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
- OPA SUBR ENTRY/EXIT
- AJM *,CH WAIT FOR *1MT* TO OUTPUT CHUNK
- PSN DELAY TO ALLOW *1MT* TO REACTIVE CHANNEL
- PSN
- OAM BUFB,CH OUTPUT DATA
- FJM *,CH
- DCN CH+40 INDICATE TO *1MT* TO RESUME OUTPUT
- NJN OPAX IF INCOMPLETE TRANSFER
- ACN CH
- UJN OPAX RETURN
- OPD SPACE 4,10
- ** OPD - OUTPUT DATA TO MTS UNIT (NON-CYBER 180).
- *
- * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
- *
- * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
- OPD2 FJM OPD1,CH IF *1MT* OUTPUTTING DATA
- FJM OPD1,CH IF *1MT* OUTPUTTING DATA
- FJM OPD1,CH IF *1MT* OUTPUTTING DATA
- OAM BUFB,CH OUTPUT DATA
- OPD SUBR ENTRY/EXIT
- OPD1 FJM OPD1,CH IF *1MT* OUTPUTTING DATA
- FJM OPD1,CH IF *1MT* OUTPUTTING DATA
- UJN OPD2
- OPI SPACE 4,10
- ** OPI - OUTPUT DATA FROM CYBER 180 IOU.
- *
- * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
- *
- * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
- *
- * CALLS ITS, WTS.
- OPI SUBR ENTRY/EXIT
- RJM WTS WAIT FOR *1MT* TRANSFER TO START
- OPI1 IJM OPIX,CH IF *1MT* OUTPUT SHORT CHUNK
- SCF OPI1,CH WAIT FOR *1MT* TO CLEAR CHANNEL FLAG
- RJM ITS INDICATE *1LT* TRANSFER STARTED
- OAM BUFB,CH
- NJN OPIX IF INCOMPLETE TRANSFER
- CCF *,CH SIGNAL *1MT* TO START OUTPUT
- UJN OPIX RETURN
- OPE SPACE 4,10
- ** OPE - OUTPUT ENDING CHUNK FROM CYBER 180 IOU.
- *
- * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
- *
- * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
- *
- * CALLS ITS, WTS.
- OPE SUBR ENTRY/EXIT
- RJM WTS WAIT FOR *1MT* TRANSFER TO START
- OPE1 IJM OPE2,CH IF *1MT* OUTPUT SHORT CHUNK
- SCF OPE1,CH WAIT FOR *1MT* TO CLEAR CHANNEL FLAG
- RJM ITS INDICATE *1LT* TRANSFER STARTED
- OAM BUFB,CH
- OPE2 CCF *,CH CLEAR CHANNEL FLAG
- UJN OPEX RETURN
- OPL SPACE 4,10
- ** OPL - OUTPUT LAST PARTIAL CHUNK TO ATS UNIT (NON-CYBER 180).
- *
- * ENTRY (A) = NUMBER OF BYTES TO OUTPUT.
- *
- * EXIT (A) = BYTES REMAINING IF INCOMPLETE TRANSFER.
- OPL SUBR ENTRY/EXIT
- AJM *,CH WAIT FOR *1MT* TO OUTPUT CHUNK
- PSN DELAY TO ALLOW *1MT* TO REACTIVATE CHANNEL
- PSN
- OAM BUFB,CH OUTPUT LAST PARTIAL CHUNK
- UJN OPLX RETURN
- RDA SPACE 4,10
- ** RDA - READ DATA FROM CENTRAL.
- *
- * ENTRY (T4 - T5) = IN POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * MACROS SADT.
- RDA SUBR ENTRY/EXIT
- LDD T6
- ZJN RDAX IF NO FIRST PART
- SHN 2
- ADD T6
- ADC BUFB
- STM RDAA
- LDD T4 READ FIRST PART
- SHN 6
- ADD RA
- SHN 6
- ADD T5
- CRM BUFB,T6
- LDD T7
- ZJN RDAX IF NO SECOND PART
- SADT .FT,,,A
- LDC * READ SECOND PART
- CRM *,T7
- RDAA EQU *-1
- UJN RDAX RETURN
- WDA SPACE 4,10
- ** WDA - WRITE DATA TO CENTRAL.
- *
- * ENTRY (T4 - T5) = IN POINTER.
- * (T6) = FIRST PART WORD COUNT.
- * (T7) = SECOND PART WORD COUNT.
- *
- * MACROS SADT.
- WDA SUBR ENTRY/EXIT
- LDD T6
- ZJN WDAX IF NO FIRST PART
- SHN 2
- ADD T6
- ADC BUFB
- STM WDAA
- LDD T4 TRANSFER FIRST PART
- SHN 6
- ADD RA
- SHN 6
- ADD T5
- CWM BUFB,T6
- LDD T7
- ZJN WDAX IF NO SECOND PART
- SADT .FT,,,A
- LDC * TRANSFER SECOND PART
- CWM *,T7
- WDAA EQU *-1
- UJN WDAX RETURN
- WSB SPACE 4,10
- ** WSB - WAIT START OF BLOCK FROM *1MT*.
- *
- * USES CM - CM+4.
- *
- * CALLS CPD, INM.
- *
- * MACROS PAUSE.
- WSB SUBR ENTRY/EXIT
- WSB1 LDN CMCL
- CRD CM
- LDD CP
- SHN -7
- LMD CM
- NJN WSB3 IF MOVE FLAG NOT SET FOR THIS CP
- LDD IR+4 CHECK IF *1MT* PAUSED
- ADN 1
- CRD CM
- LDD CM
- ZJN WSB3 IF NO FUNCTION
- SHN 21-10 CHECK STORAGE MOVE ALLOWED (BIT 56)
- MJN WSB2 IF STORAGE MOVE ALLOWED
- SHN 10-21 RESTORE BYTE TO ORIGINAL POSITION
- SBN SMAM
- MJN WSB3 IF STORAGE MOVE NOT ALLOWED
- SBN CPUM-SMAM
- PJN WSB3 IF STORAGE MOVE NOT ALLOWED
- WSB2 PAUSE NE
- LDC ADDR MODIFY INSTRUCTIONS
- RJM INM
- WSB3 RJM CPD CHECK IF *1MT* STILL AROUND
- LDD MA
- CRD CC
- LDD CC
- LMN 1
- NJN WSB4 IF NOT START OF BLOCK
- STD CC ACKNOWLEDGE BLOCK START UP
- LDD MA
- CWD CC
- LJM WSBX RETURN
- WSB4 LMN 3&1
- NJN WSB5 IF NOT READ SKIP OPERATION
- STD CC
- STM ADPA ENABLE READ SKIP
- LDD MA ACKNOWLEDGE TRANSFER
- CWD CC
- LDD CC+3 SET AMOUNT OF SPACE IN BUFFER
- STD RS
- LDD CC+4
- STD RS+1
- WSB5 LJM WSB1 LOOP
- ADDR TSAD ADDRESS RELOCATION INFORMATION
- WTS SPACE 4,10
- ** WTS - WAIT FOR *1MT* TRANSFER TO START.
- *
- * ENTRY (A) = BYTE COUNT.
- *
- * EXIT (A) = BYTE COUNT.
- *
- * USES CM - CM+4.
- *
- * CALLS CPD.
- WTS3 LDC * (BYTE COUNT)
- WTSA EQU *-1
- WTS SUBR ENTRY/EXIT
- STM WTSA SAVE BYTE COUNT
- WTS1 LDD MA CHECK *1MT*/*1LT* INTERLOCK
- ADN 1
- CRD CM
- LDD CM
- NJN WTS3 IF *1MT* TRANSFER STARTED
- RJM CPD CHECK IF *1MT* PP DROPPED OUT
- LDN 24 DELAY 10 MICROSECONDS
- WTS2 SBN 1
- NJN WTS2 IF NOT DONE
- UJN WTS1 CHECK INTERLOCK
- SPACE 4,10
- BUFFER BUFB
- TITLE PRESET.
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * CALLS CPD, INM, MCH.
- *
- * MACROS CHTL.
- PRS SUBR ENTRY/EXIT
- LDK PPCP
- CRD CM
- LDD IR+4
- SBD CM+4
- SHN PPXES-PPCES SET EXTENDED PP COMMUNICATION BLOCK OFFSET
- STD T1
- LDD CM SET *ACPP* ADDRESS
- SHN 14
- ADD CM+1
- ADD T1
- ADK ACPP
- STM CPDA+1
- SHN -14
- RAM CPDA
- RJM CPD CHECK FOR DROP OUT OF *1MT*
- LDD IR+4 READ PARAMETERS
- ADN 3
- CRD CM
- LDD CM+1 SET FIRST
- RAM INMA
- LDD CM+2
- STM INMA+1
- LDD CM+3 SET LIMIT
- RAM INMB
- LDD CM+4
- STM INMB+1
- LDN ZERL SET ACKNOWLEDGE TO *1MT*
- CRD ZR
- LDD MA SET UP FOR REQUESTS FOR *1MT*
- CWD ZR
- ADN 1 PRESET *1MT*/*1LT* INTERLOCK
- CWD ZR
- LDN 2
- STD CR
- LDD IR+4 TELL *1MT* THAT *1LT* IS LOADED
- ADN 3
- CWD ZR
- LDD IR+3 SET MTS/ATS CONTROLLER FLAG
- SHN 14
- STM PRSA
- STM PRSB
- SHN 6
- LPN 37
- STD IR+3
- LDC TCHS MODIFY CHANNELS
- STD T1
- UJN PRS2 ENTER LOOP TO MODIFY INSTRUCTIONS
- PRS1 RAI T2
- AOD T1
- PRS2 LDI T1 MODIFY CHANNEL INSTRUCTIONS
- STD T2
- LDD IR+3
- CHTL *
- SBN CH
- NJN PRS1 IF MORE CHANNELS TO MODIFY
- LDC ADDR MODIFY INSTRUCTIONS
- RJM INM
- LDD IR+2
- SHN 21-7
- PJN PRS2.1 IF NOT CTS
- LDC LDNI+20 DELAY BEFORE DISCONNECT
- STM WRTD
- PRS2.1 LDK MABL
- CRD CM
- LDD CM+1
- SHN -6
- LPN 41
- LMN 1
- ZJN PRS3 IF CYBER 180 IOU
- LDD IR+2
- LPN 77
- NJN PRS4 IF WRITE
- LJM PRS6 PRESET FOR READ
- PRS3 LJM PRS9 PRESET FOR CYBER 180
- PRS4 LDC 0
- PRSA EQU *-1
- SHN 21-4
- PJN PRS5 IF MTS CONTROLLER
- LDC OPA SET ATS OUTPUT ROUTINE
- STM WRTB
- LDC OPL
- STM WRTC
- PRS5 LJM PRSX RETURN
- PRS6 LDM DLYA
- LPN 10
- ZJN PRS7 IF 1X PPU SPEED
- LDC LDNI+77 RESET DELAY FOR 2X PPU SPEED
- STM REDC
- PRS7 LDC 0 CHECK CONTROLLER TYPE
- PRSB EQU *-1
- SHN 21-4
- PJN PRS5 IF MTS CONTROLLER
- LDC NJNI+.RED8-.REDB MODIFY INSTRUCTIONS
- STM REDA
- LDC UJNI+.RED8-.REDB
- STM REDD
- LDC UJNI+RED3-REDB
- STM REDB
- LDC .REDB
- STM REDF
- STM REDG
- LDN .REDRL-1 MOVE ATS INPUT LOOP
- STD T1
- PRS8 LDM .REDR,T1
- STM .REDA,T1
- SOD T1
- PJN PRS8 IF MOVE NOT DONE
- LDC .REDC MODIFY CHANNELS
- RJM MCH
- LJM PRSX RETURN
- * PRESET FOR CYBER 180.
- PRS9 LDC OPI MODIFY INSTRUCTIONS
- STM WRTB
- LDC OPE
- STM WRTC
- LDC NJNI+RED8.-REDB.
- STM REDA
- LDC UJNI+RED8.-REDB.
- STM REDD
- LDC UJNI+RED3-REDB
- STM REDB
- LDC REDB.
- STM REDF
- STM REDG
- LDN REDRL.-1 MOVE IOU LOOP
- STD T1
- PRS10 LDM REDR.,T1
- STM .REDA,T1
- SOD T1
- PJN PRS10 IF MOVE NOT COMPLETE
- LDC REDC. MODIFY CHANNELS
- RJM MCH
- LDC UJNI+WRT2-WRTA MODIFY *WRTA*
- STM WRTA
- LJM PRSX RETURN
- SPACE 4,10
- TCHS CHTB CHANNEL TABLE
- TITLE PRESET SUBROUTINES.
- RED SPACE 4,10
- ** ATS INPUT LOOP (NON-CYBER 180).
- .REDR BSS 0
- LOC .REDA
- .RED6 AJM *,CH WAIT FOR *1MT* TO DCN CHANNEL
- STD BI SAVE BYTES TO INPUT
- STD T1
- .RED7 IJM RED11,CH IF *1MT* FINISHED INPUT
- EJM .RED7,CH IF DATA NOT AVAILABLE
- IAM BUFB,CH
- DCN CH+40 INDICATE TO *1MT* TO CONTINUE READ
- .REDB NJN .RED8 IF END OF BLOCK
- * UJN .RED8 (LAST PARTIAL BLOCK BEING READ)
- ACN CH
- .RED8 STD T1 SAVE BYTES REMAINING
- .RED9 IJM RED10,CH IF *1LT* FINISHED INPUT
- EJM .RED9,CH IF *1MT* NOT TAKING DATA YET
- UJN RED10 COMPUTE WORD COUNT
- LOC *O
- .REDRL EQU *-.REDR LENGTH OF ATS INPUT LOOP
- ERRMI .REDAL-.REDRL OVERLAID CODE OVERFLOWED
- MCH SPACE 4,10
- ** MCH - MODIFY CHANNELS.
- *
- * ENTRY (A) = ADDRESS OF CHANNEL TABLE
- *
- * USES T1, T2.
- *
- * MACROS CHTL.
- MCH1 RAI T2
- AOD T1
- MCH2 LDI T1
- STD T2
- LDD IR+3
- CHTL *
- MCHA SBN CH
- NJN MCH1 IF MORE CHANNEL TO MODIFY
- MCH SUBR ENTRY/EXIT
- STD T1 SAVE ADDRESS
- UJN MCH2 ENTER LOOP TO MODIFY CHANNELS
- .REDC CHTB CHANNEL TABLE FOR ATS INPUT LOOP
- RED SPACE 4,10
- ** IOU INPUT LOOP (CYBER 180).
- REDR. BSS 0
- LOC .REDA
- RED6. STD BI SAVE BYTES TO INPUT
- STD T1
- RJM WTS WAIT FOR *1MT* TRANSFER TO START
- RED7. IJM RED11,CH IF *1MT* FINISHED INPUT
- SCF RED7.,CH WAIT FOR *1MT* TO READ ITS CHUNK
- RJM ITS INDICATE *1LT* TRANSFER STARTED
- IAM BUFB,CH
- NJN RED8. IF INCOMPLETE TRANSFER
- * UJN RED8. LAST TRANSFER
- REDB. EQU *-1
- CCF *,CH SIGNAL *1MT* TO CONTINUE INPUT
- RED8. STD T1
- UJN RED10 COMPUTE WORD COUNT
- LOC *O
- REDRL. EQU *-REDR. LENGTH OF IOU INPUT LOOP
- ERRMI .REDAL-REDRL. OVERLAID CODE OVERFLOWED
- CHTL MCHA
- REDC. CHTB CHANNEL TABLE FOR IOU INPUT LOOP
- SPACE 4,10
- TTL 1MT - PPU MAGNETIC TAPE EXECUTIVE.
- END
cdc/nos2.source/opl871/1mt.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator