/MTA HANDLER MODIFIED FOR BUILD OS/12 / BY J.DONNELLY 8/23/72 / MTA HANDLER FOR PS/8 / G. TECH. / DIRECTORY VERSION IN ONE PAGE! VERSION="G-300 / EACH "BLOCK" ON TAPE CONSISTS OF 3 RECORDS. / 1. A SINGLE WORD RECORD CONTAINING THE BLK NO. / 2. 256 OR 128 WORDS OF DATA / 3. AN END-OF-FILE RECORD / / EACH BLOCK IS ABOUT 3.75 INCHES LONG EOF=0050 FORWAR=0060 REVERS=0070 REWIND=0010 WRITE=0040 TEST=3776 READ=0020 MTSF=6701 MTCM=6714 MTCR=6711 MTTR=6721 MTAF=6712 MTRC=6724 MTLC=6716 MTRS=6706 MTGO=6722 MCAF=6732 *0 -1 /ONE DEVICE DEVICE MTA DEVICE MTA 4200 0000 /ENTRY POINT OFFSET ZBLOCK 2 *200 / MAIN MAG TAPE HANDLER / MTA, VERSION /SINGLE ENTRY ONLY! /NOTE!! ACC MUST BE CLEAR RDF TAD CDFCIF DCA ERROR RIF /WHAT IS THE FIELD WE'RE IN? TAD KCDF DCA MFIELD+1 TAD I MTA DCA MTFUNC ISZ MTA TAD I MTA DCA MTADDR ISZ MTA TAD I MTA DCA BLOCK ISZ MTA JMS MFIELD MCAF /POWER CLEAR TAPE CONTROL. TAD MTFUNC AND P3700 /SAVE PAGECOUNT CLL RTL RTL RTL /BLOCKS IN ACC, EVEN/ODD IN LONK. SZL /SKIP IF EVEN # PAGES IAC CIA DCA BLCNTR /A WELL-ROUNDED COUNT! SZL /SKIP IF EVEN # PAGES TAD BLCNTR DCA HALFBLOCK /WATCH THIS, IT IS SUPER-TRICKY! JMP NEXTBL SEARCH, SMA /FIND THE BLOCK JMP NEXTBLOCK-1 TAD (-1) DCA BCNTR STA CLL RTL /-3 TO ACC TAD BLOCK SNL CLA /SKIP IF BLOCK < 3 JMP SPACE DCA BCNTR TAD (REWIND-READ) JMP NEXTBLOCK SPACE, TAD (REVERSE-READ) JMS MOVE P200, 200 PREAD, READ MTWC, 7752 EOF ISZ BCNTR /SKIP IF FINISHED SPACING JMP SPACE CLA CLL NEXTBLOCK, JMS MOVE 1 MTCA, 7753 BCNTR, 0 /COUNTS BLOCK-SPACING, ALSO 0. TEST JMP NEXTBLOCK /BLOCK RECORD INCORRECT MTLOOP, CDF TAD I MTCA JMS MFIELD CIA CLL TAD BLOCK SZA /SKIP IF BLOCK FOUND JMP SEARCH ISZ HALFBLOCK /SKIP IF LASTBLOCK AND # PAGES IS ODD TAD P200 /FULL BLOCK TAD P200 DCA MTADDR-1 /NUM OF WORDS TO READ/WRITE TAD MTFUNC /GET FUNCTION WORD AGAIN SPA CLA /SKIP IF READ IS FUNCTION TAD PREAD JMS MOVE MTCOMM, 400 MTADDR, 0 /ADDRESS OF DATA MTFUNC, 0 /FUNCTION WORD TEST JMP ERROR /TRANSFER BOMBED TAD MTADDR TAD MTADDR-1 /UPDATE DATA ADDRESS DCA MTADDR ISZ BLOCK /STEP TO NEXT BLOCK IN FILE ISZ BLCNTR /SKIP WHEN TRANSFER COMPLETE JMP NEXTBLOCK ISZ MTA /INDICATE NO ERROR ERROR, CDF CIF 10 JMP I MTA / MOVE, CALLED BY: / JMS MOVE /ACC CONTAINS FUNCTION IN BITS 6-8 / WORDCOUNT /NEGATED INTERNALLY / CURRENT ADDRESS /-1 SUBTRACTED INTERNALLY / FIELD / STATUS BIT PATTERN / RETURN IF MASKED STATUS NOT = 0 / RETURN IF MASKED STATUS = 0 MOVE, 0 TAD UPD MTLC MTRS TAD M400 SNA CLA /SKIP IF TRANSPORT NOT SETTLING JMP .-3 TAD I MOVE /WORDCOUNT CIA KCDF, CDF 00 DCA I MTWC JMS MFIELD STA CLL TAD I MOVE /ADDRESS CDF 00 DCA I MTCA JMS MFIELD TAD I MOVE /FIELD ISZ MOVE MTGO MTTR JMP .-1 MTRS AND I MOVE /MASK ISZ MOVE SNA CLA /SKIP IF STATUS!MASK NOT 0 ISZ MOVE JMP I MOVE MFIELD, 0 CDF 00 ISZ MOVE /SAVE 1 LOCATION IN MOVE! JMP I MFIELD P3700, 3700 /CONSTANT BLOCK, 0 /CONTAINS DESIRED BLOCK CDFCIF, CDF CIF 00 /CONSTANT UPD, 0623 /UNIT 0, ODD PARITY, 800 BPI /CORE DUMP MODE M400, -400 /CONSTANT HALFBLOCK, 0 /DECIDES ABOUT FINAL BLOCK LENGTH BLCNTR, 0 /COUNTS BLOCKS PAGE $-$-$ IF STATUS!MASK NOT 0 ISZ MOVE JMP I MOVE MFIELD, 0 CDF 00 ISZ MOVE /SAVE