01010 JOB ZZTAPE INPUT/OUTPUT TAPE PACKAGE 03-27-67 ZTAPB 01020 CTL 551 1 ZTAPB 01030 ORG 336 ZTAPB 01040* ZTAPB 01050* ZTAPB 01060* ZTAPB 01070* THIS TAPE INPUT/OUTPUT PACKAGE OPENS, READS, WRITES, AND ZTAPB 01080* CLOSES TAPE FILES. IT OPENS AND CLOSES FILES WITH STANDARD ZTAPB 01090* IBM HEADER AND TRAILER LABELS. COMPLETE HEADER LABEL CHECKING ZTAPB 01100* IS DONE ON INPUT INCLUDING DATE CREATION WITH THE USE ZTAPB 01110* OF PERAMETERS FOR LEAST AND MOST NUMBER OF DAYS OLD. OUTPUT ZTAPB 01120* TAPES ARE CHECKED FOR POSSIBLE RETENTION BEFORE BEING OPENED ZTAPB 01130* WITH A NEW HEADER LABEL. IN READING AND WRITING TAPE, ALL ZTAPB 01140* ERROR CHECKING IS DONE INCLUDING NOISE RECORD AND RECORD LENGTH ZTAPB 01150* CHECKING ON INPUT FILES. MULTI-REEL INPUT AND OUTPUT FILES ZTAPB 01160* ARE HANDLED AUTOMATICALLY. ZTAPB 01170* ZTAPB 01180* EACH FILE TO BE PROCESSED MUST HAVE A FILE TABLE TO BE USED ZTAPB 01190* BY THIS INPUT/OUTPUT PACKAGE. AN EXAMPLE OF A FILE TABLE FOR ZTAPB 01200* INPUT FILES FOLLOWS..... ZTAPB 02010* ZTAPB 02020* LABEL OP OPERAND REASON/REMARKS ZTAPB 02030* ZTAPB 02040* FILE1 DCW 1 DRIVE NUMBER. 1 IN THIS CASE. ZTAPB 02050* DSA INPUT1 ADDRESS OF INPUT AREA. ZTAPB 02060* DC 'R' READ D CHARACTER. ZTAPB 02070* DSA EOF1 EXIT TO YOUR PROGRAM IF A 1EOF ZTAPB 02080* RECORD IS READ. ZTAPB 02090* DC =1 KEY USED TO DETERMINE IF FIRST OR ZTAPB 02100* OTHER REEL OF MULTI-REEL FILE. ZTAPB 02110* DCW 'FILE1' FILE NUMBER EXPECTED ON INPUT FILE ZTAPB 02120* DC '-001 ' REEL SEQUENCE. MUST BE 001 FOR ZTAPB 02130* FIRST REEL. ZZTAPE MODIFIES IT. ZTAPB 02140* DC 'INP MASTER' EXPECTED INPUT NAME/ID. ZTAPB 02150* DC =5 AREA TO RECEIVE DATE FROM FILE. ZTAPB 02160* IT IS USED TO CHECK SECOND AND ZTAPB 02170* FOLLOWING FILES. ZTAPB 02180* DSA GM1 ADDRESS OF G.M. FOR RECORD LENGTH ZTAPB 02190* CHECKING. SEE BELOW. ZTAPB 02200* DCW 000 MINIMUM AGE THE FILE MUST BE, DAYS ZTAPB 03010* DCW 025 MAXIMUM AGE THE FILE MAY BE, DAYS. ZTAPB 03020* ZTAPB 03030* NOTE- WHEN SETTING UP AN INPUT FILE, THE GROUP MARK MUST NOT ZTAPB 03040* BE SPECIFIED IN THE DA. AFTER THE DA OR SECOND DA THERE MUST ZTAPB 03050* BE A DC =1 FOLLOWED BY A DCW OF A GROUP MARK. THE LATTER DCW ZTAPB 03060* MUST CONTAIN THE LABEL THAT APPEARS IN YOUR FILE TABLE, SEE ZTAPB 03070* ABOVE. ZTAPB 03080* ZTAPB 03090* THE FOLLOWING IS AN EXAMPLE OF AN OUTPUT FILE TABLE..... ZTAPB 03100* ZTAPB 03110* LABEL OP OPERAND REASON/REMARKS ZTAPB 03120* ZTAPB 03130* FILE2 DCW 2 DRIVE NUMBER. ZTAPB 03140* DSA OUT2 ADDRESS OF OUTPUT AREA. ZTAPB 03150* DC 'W' WRITE D CHARACTER. ZTAPB 03160* DSA EOR2 EXIT TO YOUR PROGRAM IF END OF ZTAPB 03170* REEL/TAPE IS ENCOUNTERED. ZTAPB 03180* DC =1 KEY USED TO DETERMINE IF THIS REEL ZTAPB 03190* IS THE FIRST OR ANOTHER OF A ZTAPB 03200* MULTI REEL FILE. ZTAPB 04010* DCW =5 AREA USED TO ACCUMULATE BLOCK ZTAPB 04020* COUNT. ZTAPB 04030* DCW 'FILE2' FILE NUMBER TO BE WRITTEN ON LABEL ZTAPB 04040* DCW '-001 ' REEL SEQUENCE NUMBER. MUST BE 001 ZTAPB 04050* DCW 'OUT MASTER' FILE ID TO BE WRITTEN ON LABEL. ZTAPB 04060* DCW '-015 ' RETENTION CYCLE OF FILE. ZTAPB 04070* ZTAPB 04080* THIS INPUT/OUTPUT PACKAGE IS USED AS AN INSERT OBJECT DECK ZTAPB 04090* TO YOUR PROGRAM. IT LOADS INTO POSITIONS 336 TO 1519, THERE- ZTAPB 04100* FORE YOUR PROGRAM MUST BE ORIGINED AT POSITION 1520. BECAUSE ZTAPB 04110* THIS PACKAGE IS NOT COMPILED EACH TIME YOUR PROGRAM IS, A SET ZTAPB 04120* OF EQUATES MUST BE PART OF YOUR PROGRAM. THE FOLLOWING LISTS ZTAPB 04130* THE PRIMARY EQUATES AND ALSO CONSTANTS WHICH MAY BE ZTAPB 04140* USED BY YOUR PROGRAM..... ZTAPB 04150* ZTAPB 04160* LABEL EQUATE COMMENT/REASON ZTAPB 04170* ZTAPB 04180* XXCHNG EQU 363 ROUTINE TO HANDLE MULTI-REEL ZTAPB 04190* OUTPUT FILES. ZTAPB 04200* XXDATE EQU 485 STORAGE AREA FOR JULIAN DATE. ZTAPB 05010* XXTAPE EQU 492 ROUTINE TO READ OR WRITE TAPE. ZTAPB 05020* XXOPEN EQU 790 ROUTINE TO OPEN FILES. ZTAPB 05030* XXCLOZ EQU 1217 ROUTINE TO CLOSE FILES. ZTAPB 05040* ZTAPB 05050* XXISBD EQU 977 *MAY BE MODIFIED TO EXIT TO YOUR ZTAPB 05060* PROGRAM IN CASE OF A BAD INPUT ZTAPB 05070* LABEL. ZTAPB 05080* XXOTEX EQU 1090 *MAY BE MODIFIED TO EXIT TO YOUR ZTAPB 05090* PROGRAM TO WRITE ADDITIONAL ZTAPB 05100* INFORMATION IN OUTPUT LABELS. ZTAPB 05110* ZTAPB 05120* XX1 EQU 353 *CONTAINS CONSTANT '001'. ZTAPB 05130* XX366 EQU 356 *CONTAINS CONSTANT '366'. ZTAPB 05140* XXI9I EQU 1489 *CONTAINS ADDRESS CONSTANT 'I9I'. ZTAPB 05150* XXTRAL EQU 400 *HEADER + TRAILER LABEL I/O AREA DA ZTAPB 05160* THOSE EQUATES HAVING * IN THE REMARKS FIELD ARE NOT REQUIRED. ZTAPB 05170* ZTAPB 05180* ZTAPB 05190* WITH A FILE TABLE FOR EACH FILE AND A DATE IN XXDATE..... ZTAPB 05200* TO OPEN A FILE, BRANCH TO XXOPEN. ZTAPB 06010* TO READ OR WRITE TAPE, BRANCH TO XXTAPE. ZTAPB 06020* TO CLOSE A FILE, BRANCH TO XXCLOZ. ZTAPB 06030* TO CHANGE REELS AT EOR FOR AN OUTPUT FILE, BRANCH TO XXCHNG. ZTAPB 06040* ZTAPB 06050* EACH OF THE ABOVE BRANCHES MUST BE FOLLOWED BY A NOP WITH ZTAPB 06060* THE A ADDRESS OPERAND BEING THE ADDRESS/LABEL OF THE FILE ZTAPB 06070* TABLE OF THE FILE TO BE PROCESSED. ZTAPB 06080* ZTAPB 06090* THIS TAPE INPUT/OUTPUT PACKAGE DOES NOT DO DE-BLOCKING ZTAPB 06100* OF INPUT, BLOCKING OR PADDING OF AN OUTPUT FILE. IT ALSO ZTAPB 06110* DOES NOT REWIND OR REWIND AND UNLOAD ANY FILE IN XXCLOZ. ZTAPB 06120* ZTAPB 06130* BEFORE ANY FILE OR TAPE CAN BE OPENED A DATE MUST BE ZTAPB 06140* SUPPLIED TO THIS INPUT/OUTPUT PACKAGE. THIS IS DONE BY ZTAPB 06150* MOVING A FIVE CHARACTER DATE, TWO POSITION YEAR AND THREE ZTAPB 06160* POSITION JULIAN DAY TO XXDATE. ZTAPB 06170* ZTAPB 06180* IT SHOULD BE NOTED THAT THIS INPUT/OUTPUT PACKAGE WILL NOT ZTAPB 06190* ACCEPT AN INPUT FILE WITH A BAD LABEL OR EXPIRED DATE. FOR ZTAPB 06200* PURPOSES OF DE-BUGGING PROGRAMS, POSITION 977 MAY BE NO-OPED ZTAPB 07010* TO ACCEPT ANY HEADER, OR THE I ADDRESS MAY BE ALTERED TO 981 ZTAPB 07020* TO ACCEPT THAT FILE ONLY. IT SHOULD BE NOTED THAT A NOP AT ZTAPB 07030* POSITION 977 WILL ACCEPT ALL FILES THAT HAVE HEADERS, GOOD OR ZTAPB 07040* BAD, WHEREAS A RESTART AT 981 WILL ACCEPT A FILE WITH A BAD ZTAPB 07050* HEADER, OR A FILE WITHOUT A HEADER. ALSO NOTE THAT AN OUTPUT ZTAPB 07060* FILE WHOSE RETENTION CYCLE HAS EXPIRED CANNOT BE OPENED. AGAIN, ZTAPB 07070* FOR PURPOSES OF DE-BUGGING, THE I ADDRESS MAY BE ALTERED TO ZTAPB 07080* 870 TO OPEN THE FILE. ZTAPB 07090* ZTAPB 08010 JOB ZZTAPE TAPE I/O PACKAGE. CONSTANTS AND EQUATES ZTAPB 08020* ZTAPB 08030** EQUATES. ZTAPB 08040* ZTAPB 08050XXIND3 EQU 99 EQUATE TO X3. ZTAPB 08060XXFADD EQU 3+X3 EQUATE TO FILE ADDRESS. ZTAPB 08070* EQUATES TO INPUT FILE TABLE. ZTAPB 08080XXINRS EQU 17+X3 EQUATE TO INPUT REEL SEQUENCE. ZTAPB 08090XXINPL EQU 28+X3 EQUATE TO INPUT LABEL. ZTAPB 08100XXINLB EQU 33+X3 EQUATE TO COMPLETE INPUT LABEL. ZTAPB 08110XXINGM EQU 36+X3 EQUATE TO ADDRESS OF INPUT G.M. ZTAPB 08120XXPER1 EQU 39+X3 EQUATE TO LEAST DAYS OLD. ZTAPB 08130XXPER2 EQU 42+X3 EQUATE TO MOST NUMBER OF DAYS OLD ZTAPB 08140* EQUATES TO INPUT AND OUTPUT FILE TABLES. ZTAPB 08150XXDRNO EQU 0+X3 EQUATE TO DRIVE NUMBER. ZTAPB 08160XXIORA EQU 3+X3 EQUATE TO I/O AREA. ZTAPB 08170XXIODC EQU 4+X3 EQUATE TO D CHARACTER. ZTAPB 08180XXEOFX EQU 7+X3 EQUATE TO EOF/EOR EXIT. ZTAPB 08190XXKEY EQU 8+X3 EQUATE TO OPEN KEY. ZTAPB 08200* EQUATES TO OUTPUT FILE TABLES. ZTAPB 09010XXOTCT EQU 13+X3 EQUATE TO OUTPUT BLOCK COUNT. ZTAPB 09020XXOTRS EQU 22+X3 EQUATE TO OUTPUT REEL SEQUENCE. ZTAPB 09030XXOUTN EQU 33+X3 EQUATE TO OUTPUT NAME. ZTAPB 09040XXOUTR EQU 38+X3 EQUATE TO OUTPUT RETENTION CYCLE. ZTAPB 09050* ZTAPB 09060** CONSTANTS ZTAPB 09070* ZTAPB 09080XX1HDR DCW '1HDR ' HEADER LABEL IDENTIFICATION. ZTAPB 09090XX1EOR DCW '1EOR ' END OF REEL IDENTIFICATION. ZTAPB 09100XX1EOF DCW '1EOF ' END OF FILE IDENTIFICATION. ZTAPB 09110XX1 DCW 001 ADDRESS CONSTANT 001. ZTAPB 09120XX366 DCW 366 DAYS PER YEAR + 1. ZTAPB 09130XX635 DCW 635 1000 MINUS DAYS PER YEAR. ZTAPB 09140XXR DCW 'R' CONSTANT R . ZTAPB 09150XXERRC DCW =2 ERROR COUNTER. ZTAPB 09160* ZTAPB 09170** EOR ROUTINE FOR MULTI-REEL OUTPUT FILES. ZTAPB 09180* ZTAPB 09190XXCHNG SBR XXXXXX+3 STORE LINK IN EXIT. ZTAPB 09200 SBR XXIND3 STORE NSI IN X3 ZTAPB 10010 SBR XXLCA+3,XX1EOR MODIFY XXLCA TO USE XX1EOR. ZTAPB 10020 B XXPOST GO TO WRITE TRAILER. ZTAPB 10030 B XXEORY GO TO OPEN NEXT REEL. ZTAPB 10040* ZTAPB 10050** FILE TABLE FOR HEADER + TRAILER ZTAPB 10060* ZTAPB 10070XXHEAD DCW '0' DRIVE NUMBER. ZTAPB 10080 DC XXTRAL I/O AREA. ZTAPB 10090XXHDRW DC 'W' WRITE D CHARACTER. ZTAPB 10100 DCW XXNOHD EOF EXIT. ZTAPB 10110XXW DCW 'W' CONSTANT W . ZTAPB 10120 DCW =5 ADD BLOCK COUNT DURING TRAILER WT ZTAPB 10130* ZTAPB 10140** HEADER AND TRAILER I/O AREA ZTAPB 10150* ZTAPB 10160XXTRAL DA 1X80,G LABELS RESIDE HERE. ZTAPB 10170* ZTAPB 10180** WORKING STORAGE ZTAPB 10190* ZTAPB 10200XXDATE DCW =5 HOLD AREA FOR JULIAN DATE. ZTAPB 11010XXSVDT DCW =5 SAVE AREA FOR JULIAN DATE. ZTAPB 11020 DCW =1 DUMMY TO ADJUST XXTAPE ADDRESS. ZTAPB 12010 JOB ZZTAPE TAPE I/O PACKAGE READ/WRITE ROUTINE ZTAPB 12020XXTAPE SBR XXIND3 STORE NSI IN X3 ZTAPB 12030 SBR XXTHRU+3 STORE LINK IN XXTHRU ZTAPB 12040 MCW XXFADD,XXIND3 MOVE FILE ADDRESS TO X3. ZTAPB 12050 BW XXNOTO,XXDRNO+1 CHECK IF FILE OPENED. ZTAPB 12060 MCW XXIODC,XXRDWR+7 MOVE A B AND D I/O INST. ZTAPB 12070XXREST S XXERRC CLEAR ERROR COUNTER. ZTAPB 12080XXRDWR RT 0,0 READ OR WRITE TAPE. ZTAPB 12090 SBR XXLENG+3 STORE NEXT POSITION IN XXLENG ZTAPB 12100* TO CLEAR WRONG LENGTH RECORD G.M. ZTAPB 12110 SBR XXCLER+6 STORE NEXT POSITION IN XXCLER ZTAPB 12120* TO CLEAR NOISE LENGTH RECORD G.M. ZTAPB 12130 SBR XXCLR+3 STORE NEXT POSITION IN XXCLR ZTAPB 12140* TO CLEAR G.M. SET BY T.M. RECORD. ZTAPB 12150 BCE XXCKER,XXIODC,W GO CHECK TAPE ERROR IF WRITE. ZTAPB 12160 BEF XXRDTL GO READ TRAILER IF EOF. ZTAPB 12170XXTMCK SBR *+14,12 SETUP FOR NOISE ZTAPB 12180 MA XXIORA,*+7 LENGTH RECORD CHECK. ZTAPB 12190 BCE XXCLER,12,# CHECK POSITIONS 1 - 13 ZTAPB 12200 CHAIN12 FOR GROUP MARK. ZTAPB 13010XXCKER BER XXERR CHECK FOR TAPE ERROR. ZTAPB 13020 BCE XXCKLG,XXIODC,R GO CHECK RECORD LENGTH IF READ. ZTAPB 13030 A XX1,XXOTCT ADD OUTPUT BLOCK COUNT. ZTAPB 13040 MCW XXEOFX,*+4 SETUP EOR EXIT FROM FILE TABLE. ZTAPB 13050 BEF 0 EXIT IF END OF REEL. ZTAPB 13060XXTHRU B 0 EXIT IF ALL CHECKS OK. ZTAPB 13070* ZTAPB 13080** ROUTINE TO CHECK INPUT BLOCK LENGTH ZTAPB 13090* ZTAPB 13100XXCKLG C XXSAVE-1,XXIND3 CHECK IF READING ZTAPB 13110 BE XXTHRU TRAILER LABEL. ZTAPB 13120 C XXLENG+3,XXINGM CHECK IF NEXT POSITION ZTAPB 13130 BE XXTHRU IS INPUT GROUP MARK. ZTAPB 13140 MA XXI9I,XXLENG+3 DECREMENT ADDRESS AND ZTAPB 13150 C XXLENG+3,XXINGM CHECK FOR LONG RECORD. ZTAPB 13160 BE XXERR DO NOT CLEAR G.M. IF LONG RECORD. ZTAPB 13170XXLENG SAR 0 CLEAR SHORT RECORD G.M. ZTAPB 13180* ZTAPB 13190** ERROR COUNT + HALT ROUTINES ZTAPB 13200* ZTAPB 14010XXERR MN XXDRNO,*+4 SET DRIVE NUMBER AND ZTAPB 14020 BSP 0 BACKSPACE TAPE JUST USED. ZTAPB 14030 A XX1,XXERRC INCREMENT ERROR COUNTER. ZTAPB 14040 BCE XXHLTR,XXERRC-1,5 CHECK FOR 50 READ ERRORS. ZTAPB 14050 BCE XXRDWR,XXIODC,R CHECK IF READ. ZTAPB 14060 MN XXDRNO,*+4 SET DRIVE NUMBER FOR SKIP + ERACE ZTAPB 14070 SKP 0 SET ERACE FLIP - FLOP. ZTAPB 14080 BCE XXHLTW,XXERRC,I CHECK FOR 9 WRITE ERRORS. ZTAPB 14090 B XXRDWR GO TRY TO WRITE AGAIN. ZTAPB 14100XXHLTR NOP 1000 SET HALT CODING. ZTAPB 14110 H HALT IF READ ERROR. ZTAPB 14120 B XXREST GO TRY AGAIN. ZTAPB 14130XXHLTW NOP 2000 SET HALT CODING. ZTAPB 14140 H HALT IF WRITE ERROR. ZTAPB 14150 B XXREST RESET COUNTER + TRY AGAIN. ZTAPB 14160XXCLER MN *,0 CLEAR GROUP MARK SET BY ZTAPB 14170 MN NOISE LENGTH RECORD. ZTAPB 14180 B XXREST RESET COUNTER + TRY AGAIN. ZTAPB 14190XXNOTO MN XXDRNO,*+4 SET DRIVE NUMBER IN HALT CODING. ZTAPB 14200 NOP 3000 SET HALT CODING. ZTAPB 15010 H HALT. NO RESTART. ZTAPB 15020 B *-8 HALT MEANS FILE NOT OPEN. ZTAPB 15030 DCW =9 DUMMY TO ADJUST NOP + RE-STARTS. ZTAPB 16010 JOB ZZTAPE OPEN ROUTINE ZTAPB 16020XXOPEN SBR XXIND3 STORE NSI IN X3. ZTAPB 16030 SBR XXOPNX+3 STORE LINK IN XXOPNX. ZTAPB 16040 SW 97 SET WORD MARK IN X3 ZTAPB 16050 MCW XXFADD,XXIND3 MOVE FILE ADDRESS TO X3. ZTAPB 16060 CW XXDRNO+1 CLEAR WORD MARK UNDER I/O ADDRESS ZTAPB 16070XXROPN MN XXDRNO,*+4 SET DRIVE NUMBER IN REWIND. ZTAPB 16080 RWD 0 REWIND TAPE. ZTAPB 16090 MN XXDRNO,XXHEAD SET DRIVE NUMBER IN HEADER TABLE. ZTAPB 16100XXSAVE SBR XXTMCK-2,XXTMCK SETUP TO IGNORE TAPE MARK. ZTAPB 16110 B XXHDRD GO READ HEADER LABEL, IF ANY. ZTAPB 16120 SBR XXTMCK-2,XXRDTL RESET BRANCH-END-FILE. ZTAPB 16130 C XXTRAL+4,XX1HDR CHECK IF HEADER. ZTAPB 16140 BE XXCHIO IF EQUAL, GO TO CHECK IT. ZTAPB 16150 BCE XXNOHD,XXIODC,R ELSE IF READ, IT IS BAD. ZTAPB 16160 CS 479 CLEAR XXTRAL. ZTAPB 16170 LCA XX1HDR,XXTRAL+4 LOAD HEADER ID INTO XXTRAL. ZTAPB 16180XXCHIO BCE XXOUT,XXIODC,W CHECK IF WRITE. ZTAPB 16190 BW *+5,XXKEY CHECK IF SECOND REEL. ZTAPB 16200 B XXIN GO CHECK AGE OF INPUT FILE. ZTAPB 17010 C XXTRAL+34,XXINLB CHECK IF SAME FILE AS LAST REEL. ZTAPB 17020 BE XXADD1 IF EQUAL, ADD 1 TO REEL SEQUENCE. ZTAPB 17030XXNOHD MN XXDRNO,*+4 SET DRIVE NUMBER IN HALT CODING. ZTAPB 17040 NOP 5000 SET HALT CODING. ZTAPB 17050 H HALT. INPUT CANNOT BE OPENED. ZTAPB 17060 B XXROPN GO TRY AGAIN. ZTAPB 17070* ZTAPB 17080** CHECK AGE OF INPUT FILE. ZTAPB 17090* ZTAPB 17100XXIN C XXTRAL+29,XXINPL CHECK LABEL AGAINST EXPECTED LABL ZTAPB 17110 BU XXISBD IF BAD GO HALT OR TO USER EXIT. ZTAPB 17120 SBR XXAGAD+3,XXPER1 SET PERAMETER 1 CHECK. ZTAPB 17130 B XXCKDT GO CHECK MINIMUM AGE. ZTAPB 17140 BH XXISBD IF TOO YOUNG, GO HALT. ZTAPB 17150 SBR XXAGAD+3,XXPER2 SET PERAMETER 2 CHECK. ZTAPB 17160 B XXCKDT GO CHECK MAXIMUM AGE. ZTAPB 17170 BL XXISBD IF BAD, GO HALT. ZTAPB 17180 B *+5 IF GOOD, SKIP BRANCH TO HALT. ZTAPB 17190XXISBD B XXNOHD GO TO HALT OR USER EXIT. ZTAPB 17200 SW XXKEY SET KEY. INPUT OPENED. ZTAPB 18010 MCW XXTRAL+34,XXINLB SETUP CHECK FOR ZTAPB 18020 MCW NEXT REEL OF FILE. ZTAPB 18030XXADD1 MA XX1,XXINRS ADD 1 TO REEL SEQUENCE. ZTAPB 18040XXOPEX SW XXKEY SET KEY. OUTPUT OPENED. ZTAPB 18050XXOPNX B 0 EXIT. ZTAPB 18060* ZTAPB 18070** CHECK RETENTION CYCLE OF OUTPUT FILES. ZTAPB 18080* ZTAPB 18090XXOUT SW XXTRAL+36 SETUP FOR CHECKING ZTAPB 18100 SBR XXAGAD+3,XXTRAL+38 RETENTION CYCLE. ZTAPB 18110 B XXCKDT GO CHECK RETENTION CYCLE. ZTAPB 18120 CW XXTRAL+36 RESET LAST SETUP. ZTAPB 18130 BH *+14 GO HALT IF FILE NOT OLD ENOUGH. ZTAPB 18140 BL XXWRHD WRITE HEADER IF OLD FILE EXPIRED. ZTAPB 18150 BCE XXWRHD,XXTRAL+36, GO WRITE HEADER IF NO RET CYC. ZTAPB 18160 MN XXDRNO,*+4 SET DRIVE NUMBER IN HALT CODING. ZTAPB 18170 NOP 5010 SET HALT CODING. ZTAPB 18180 H HALT. ZTAPB 18190 B XXROPN GO TRY AGAIN. ZTAPB 18200* ZTAPB 19010** WRITE OUTPUT HEADER LABEL. ZTAPB 19020* ZTAPB 19030XXWRHD MN XXDRNO,*+4 SET DRIVE NUMBER IN REWIND. ZTAPB 19040 RWD 0 REWIND TAPE. ZTAPB 19050 MCW XXOUTR,XXTRAL+39 MOVE ZTAPB 19060 MCW XXDATE INFORMATION ZTAPB 19070 MCW XXOUTN FROM FILE ZTAPB 19080 MCW TO LABEL. ZTAPB 19090 MCW ZTAPB 19100XXOTEX B *+1 GO TO NEXT OR USER ROUTINE. ZTAPB 19110 B XXHDIO GO WRITE HEADER. ZTAPB 19120 MA XX1,XXOTRS INCREMENT OUTPUT REEL SEQUENCE. ZTAPB 19130 B XXOPEX GO TO EXIT. ZTAPB 19140* ZTAPB 19150** GENERAL AGE CHECK ROUTINE. ZTAPB 19160* ZTAPB 19170XXCKDT SBR XXDTCX+3 STORE LINK IN EXIT. ZTAPB 19180 MCW XXTRAL+34,XXSVDT MOVE FILE DATE TO SAVE AREA. ZTAPB 19190XXAGAD A 0,XXSVDT ADD PERAMETER TO SAVE AREA. ZTAPB 19200 C XXSVDT,XX366 CHECK IF JULIAN DATE ZTAPB 20010 BH *+12 ADJUSTMENT IS NECESSARY. ZTAPB 20020 A XX635,XXSVDT ADJUST JULIAN DATE. ZTAPB 20030 B *-22 GO CHECK AGAIN. ZTAPB 20040 C XXDATE,XXSVDT CHECK PERAMETER. ZTAPB 20050XXDTCX B 0 GO BACK TO MAINLINE. ZTAPB 20060* ZTAPB 20070** GENERAL READ/WRITE HEADER/TRAILER ROUTINE. ZTAPB 20080* ZTAPB 20090XXHDIO SBR XXHDEX+3 STORE LINK IN EXIT. ZTAPB 20100 SBR *+15,0+X3 SAVE X3. ZTAPB 20110 B XXTAPE GO READ OR WRITE TAPE. ZTAPB 20120 NOP XXHEAD USE XXTRAL AS I/O AREA. ZTAPB 20130 SBR XXIND3,0 RESTORE X3. ZTAPB 20140XXHDEX B 0 GO BACK TO MAINLINE. ZTAPB 20150XXHDRD SBR XXHDRX+3 STORE LINK IN EXIT. ZTAPB 20160 MCW XXR,XXHDRW SET READ D CHARACTER. ZTAPB 20170 B XXHDIO GO READ HEADER LABEL. ZTAPB 20180 MCW XXW,XXHDRW RESET WRITE D CHARACTER. ZTAPB 20190XXHDRX B 0 GO BACK TO MAINLINE. ZTAPB 21010 JOB ZZTAPE CLOSE ROUTINE. ZTAPB 21020XXCLOZ SBR XXIND3 STORE NSI IN X3. ZTAPB 21030XXPOST SBR XXCLZX+3 STORE LINK IN EXIT. ZTAPB 21040 MCW XXFADD,XXIND3 MOVE FILE ADDRESS TO X3. ZTAPB 21050XXRDTL MN XXDRNO,XXHEAD SET DRIVE NUMBER FOR READ/WRITE. ZTAPB 21060 BCE XXWRTL,XXIODC,W CHECK IF WRITE. ZTAPB 21070 BER XXERR GO TO ERROR ROUTINE ON ERROR. ZTAPB 21080XXCLR SAR 0 CLEAR G.M. SET BY T.M. RECORD. ZTAPB 21090 MCW XXTHRU+3,XXXXXX+3 SETUP EXIT BACK TO USER. ZTAPB 21100 MCW XXEOFX,XXEORX+3 SETUP EXIT FOR 1EOF RECORD. ZTAPB 21110 B XXHDRD GO READ TRAILER. ZTAPB 21120 C XXTRAL+4,XX1EOR CHECK FOR END OF REEL ZTAPB 21130 BE XXEORY IF YES, GO OPEN NEXT REEL. ZTAPB 21140 C XXTRAL+4,XX1EOF CHECK FOR END OF FILE. ZTAPB 21150XXEORX BE 0 IF YES, EXIT TO USER ROUTINE. ZTAPB 21160 MN XXDRNO,*+4 ELSE MOVE DRIVE = TO HALT CODING. ZTAPB 21170 NOP 5020 SET HALT CODING. ZTAPB 21180 H HALT. ZTAPB 21190 B *-8 NO RESTART. ZTAPB 21200XXWRTL B XXWRTM GO WRITE TAPE MARK. ZTAPB 22010 CS 479 CLEAR XXTRAL. ZTAPB 22020 MCW XXOTCT,XXTRAL+9 MOVE OUTPUT BLOCK COUNT TO TRAILR ZTAPB 22030XXLCA LCA XX1EOF LOAD XX1EOR OR XX1EOF TO TRAILER. ZTAPB 22040 SBR XXLCA+3,XX1EOF RESET LOAD INSTRUCTION. ZTAPB 22050 MCW XXTRAL+79,XXOTCT BLANK OLD BLOCK COUNT. ZTAPB 22060 B XXHDIO GO WRITE TRAILER. ZTAPB 22070 B XXWRTM GO WRITE TAPE MARK. ZTAPB 22080XXCLZX B 0 EXIT TO USERS PROGRAM OR XXCHNG. ZTAPB 22090* ZTAPB 22100** END OF REEL ROUTINE FOR MULTI-REEL FILES ZTAPB 22110* ZTAPB 22120XXEORY MN XXDRNO,*+4 SET DRIVE NUMBER IN REWIND. ZTAPB 22130 RWU 0 REWIND AND UNLOAD TAPE. ZTAPB 22140 SW XXDRNO+1 SET NOT-OPENED FLAG. ZTAPB 22150 MN XXDRNO,*+4 MOVE DRIVE NUMBER TO HALT CODING. ZTAPB 22160 NOP 7880 SET HALT CODING. ZTAPB 22170 H HALT. OPERATOR HANGS NEW TAPE. ZTAPB 22180 SBR *+8,0+X3 SET FILE ADDRESS IN NOP. ZTAPB 22190 B XXOPEN GO OPEN NEXT REEL. ZTAPB 22200 NOP 0 DELIVER FILE ADDRESS. ZTAPB 23010 BCE XXXXXX,XXIODC,W CHECK IF WRITE. EXIT IF YES. ZTAPB 23020 SBR *+8,0+X3 SET FILE ADDRESS IN NOP. ZTAPB 23030 B XXTAPE GO READ FIRST BLOCK. ZTAPB 23040 NOP 0 DELIVER FILE ADDRESS. ZTAPB 23050XXXXXX B 0 EXIT TO USERS PROGRAM. ZTAPB 23060* ZTAPB 23070** WRITE TAPE MARK WITH ERROR CHECK ROUTINE ZTAPB 23080* ZTAPB 23090XXWRTM SBR XXTMEX+3 STORE LINK IN EXIT. ZTAPB 23100 MN XXDRNO,*+4 SET DRIVE NUMBER IN WTM. ZTAPB 23110XXWTM WTM 0 WRITE TAPE MARK. ZTAPB 23120 BER XXTMER GO SKIP AND TRY AGAIN ON ERROR. ZTAPB 23130XXTMEX B 0 EXIT. ZTAPB 23140XXTMER NOP 7999 SET HALT CODING. ZTAPB 23150 H HALT. ZTAPB 23160 MN XXDRNO,XXERAC+3 SET DRIVE NUMBER IN SKIP AND ERAC ZTAPB 23170 MN XXDRNO,XXSLIP+3 SET DRIVE NUMBER IN BACKSPACE. ZTAPB 23180XXSLIP BSP 0 BACKSPACE TAPE. ZTAPB 23190XXERAC SKP 0 SET SKIP AND ERACE FLIP - FLOP. ZTAPB 23200 B XXWTM GO TRY AGAIN. ZTAPB 24010XXI9I DCW 'I9I' ADDRESS CONSTANT OF MINUS 1. ZTAPB 24020 END XXTAPE ZTAPB