*1400 / / /NON-RESIDENT TAPE HANDLER MODULE. PERFORMS ALL LINC /TAPE I/O. DECODES MTP INSTRUCTION AND EXECUTES SAME. / / -TAPEM /INDICATOR THAT THIS IS TAPE MOD JMS GETP1 /PUT SECOND INSTR WD IN SBN TAD TIFLG /TAPE COMMAND INTERRUPTED? SZA CLA JMP MTPC /YES, CONTINUE / /WE WERE NOT INTERRUPTED, MUST SET EVERYTHING UP / TAD LINS DCA MTPINS /PUT LINC INSTR IN MTPINS JMS RS20 /DO THINGS IF THIS IS BY DO SW CLC DCA WCGF MTP0, TAD SBN /GET SECOND WORD OF INSTR AND (777 /GET BLOCK NUMBER DCA BN /AND SAVE / /SEE IF WE ARE DOING A GROUP COMMAND / TAD LINS /GET TAPE INSTR RTR SPA CLA SZL JMP MTP1 /NOT A GROUP COMMAND JMS SETG /A GROUP COMMAND - SET UP FOR JMP MTPI / /NOT A GROUP COMMAND - SET UP FOR / MTP1, TAD SBN /GET SECOND WORD OF INSTR RTL RTL AND C7 /GET QUARTER NUMBER DCA QN /AND SAVE CLC DCA QCT /ONLY 1 QTR ALLOWED DCA WCGF /CLEAR WRT GRP CNT FLG MTPC, DCA TIFLG /CLEAR TAPE INTERRUPT FLAG / /DECODE THE MAG TAPE INSTRUCTION / MTPI, TAD MTPINS /GET FIRST WORD OF INSTR AND C7 TAD (JMP I MTPJ DCA .+1 0 MTPJ, RDC /READ AND CHECK BLOCK RDC /READ AND CHECK GROUP RDE /READ, NO CHECK MTB /MOVE TOWARD BLOCK WRC /WRITE AND CHECK BLOCK WCG /WRITE AND CHECK GROUP WRI /WRITE, NO CHECK CHK /CHECK ONLY / /SEARCH TAPE FOR RIGHT BLOCK NUMBER / SEARCH, 0 TAD (SKP CLA DCA MCDF /NO STORAGE DURING CHK JMS STMEM DCA WCDF TAD WCDF ISZ CHKS /CHK? DCA MCDF /NO - SKIP IF YES CLA /CLEAR AC ANYWAY TAD MTPINS /GET FIRST INSTR WORD RTR /PUT UNIT BIT IN LINK RTR AND (4 /WE WANT TO END UP WITH X002 RAR /MOVE UNIT BIT TO AC 0 DCA UNIT ICA UNIT, 0 /SELECT UNIT / /SET TAPE UP TO BE MOVING FORWARD / TAD INTSAV RTR SPA CLA /SKIP IF MOTION BIT = 0 JMP .+3 TAD (4001 JMP .+4 SZL ICON IAC ICON /MAKES GO FORWARD CLC DCA LNCA /SET UP FOR CHECKSUM TAD (-401 DCA WCNT /SET UP TO COUNT WORDS CSRCH, JMS TPWAIT /WAIT FOR NEXT BL NO. TAD INTSAV RAR /MOTION INTO LINK 1=BKWDS CLA IAAC TAD BN IAC /DIF: +=GO FWD, -=GO BKWD IACA /DISPLAY DIFFERENCE SZA /IS THIS THE BLOCK JMP MTPS1 /NO SNL /YES, FWD (L=1 FWD IF AC=0) JMP TURN / /CORRECT BLOCK HAS BEEN FOUND / ICA /BLOCK MODE 3 ISZ SEARCH JMP I SEARCH /EXIT FROM SUBROUTINE / /WE MUST GO THE OTHER WAY / TURN, JMS TPWAIT /WAIT FOR NEXT BLOCK CLA CLL /BEFORE TURNING AROUND MTPS1, SZL /NOT THE BLOCK - CHG DIRECTION JMP SX /NO - EXIT CMA RAL /YES CLA RAR ICON /CLEAR MOTION IAC ICON /SET MOTION SX, CLA TAD BN IACB /DISPLAY BLOCK WANTED CLA JMP I SEARCH /AND EXIT / /SET UP TO WAIT FOR TAPE INTERRUPT / TPWAIT, 0 /SUBROUTINE ENTRANCE CLA TAD TPWAIT /GET EXIT ADDRESS DCA TAPE /SET UP TO RETURN THERE TAD (TPW /6 DCA JOBS /INDICATE TAPE OPR IN PROGRESS ION /ENABLE INTERRUPTS JMP TIMER /AND WAIT / /END OF PAGE SIX OF NON-RESIDENT TAPE HANDLER MODULE / *1600 / /MOVE TOWARD BLOCK / MTB, JMS SEARCH NOP IAAC TAD BN IACA DCA LNCA /SET TO RET DIFF IN LINC A ICA C4, 4 JMP RDX / /CHECK BLOCK / CHK, CLC DCA CHKS /SET CHK SW - NO DATA STORING SKP CLA / /READ AND CHECK / RDC, CLC /SET FOR CHECK / /READ BLOCK / RDE, DCA CHECK /SET CHK SW - 0=NO CHK JMS SEARCH JMP CSRCH JMS TPINT /WAIT FOR CHECK MARK TO PASS / /READ LOOP / RDL, JMS TPINT /WAIT FOR FIRST WORD IAAC TAD LNCA DCA LNCA /FORM CHECKSUM ISZ WCNT /DONE YET? JMP RWORD /NOSSIR!! ICA 6 /SHUT TAPE DOWN ISZ CHECK /CHECK WANTED? JMP RDX /NOPE IAC TAD LNCA /TEST CHECKSUM SZA CLA JMP CKFAIL ISZ BN ISZ QN ISZ QCT /CHECH MAKES, MORE BLOCKS TO DO? JMP MTPI / /TAPE READ EXIT / RDX, TAD MTPINS AND C20 SZA CLA /LEAVE TAPE IN MOTION? JMP DOGO /YES, EXIT FROM INSTRUCTION ICA /NO, STOP TAPE 1 ICA 4001 /TURN AROUND MODE JMP DOGO / /STORE THE WORD READ / RWORD, IAAC /GET WORD AGAIN MCDF, 0 /PROPER CDF WILL BE HERE DCA I MEMT CDF JMP RDL / /WRITE AND CHECK GROUP / WCG, TAD WCGF SZA CLA JMP WRC WCHK, CLC DCA CHKS /NO STORAGE DURING CHECK JMP RDC / /A CHECK HAS FAILED DURING READ OR WRITE / CKFAIL, TAD MTPINS /GET TAPE INSTR AND C4 /LOOK AT WRITE BIT SNA CLA /IS IT SET JMP RDC /NO, READ AGAIN / /WRITE AND CHECK BLOCK / WRC, CLC / /WRITE WITH NO CHECK / WRI, DCA CHECK JMS SEARCH JMP CSRCH ICA 5 ISZ WCNT /COUNT IS ONE HIGH FOR WRITE / /WRITE LOOP / WCDF, 0 /BECOMES RIGHT CDF TAD I MEMT CDF IACB TAD LNCA DCA LNCA JMS TPINT /WAIT FOR WORD TO BE WRITTEN ISZ WCNT JMP WCDF TAD LNCA CMA IACB / /WRITE CHECKSUM / JMS TPINT /WRITE NEXT TO LAST WORD JMS TPINT /WRITE LAST WORD ICA 6 TAD WCGF SZA CLA JMP WGP ISZ CHECK JMP RDX JMP WCHK WGP, ISZ BN ISZ QN ISZ QCT JMP MTPI DCA WCGF JMP MTP0 / /TAPE WAIT ROUTINE, FOR READING OR WRITING INDIVIDUAL /WORDS IN A BLOCK WITH THE INTERRUPT OFF. / TPINT, 0 /SUBROUTINE ENTRANCE CLA INTS /GET LINC INTERRUPT STATUS SMA CLA /IS TAPE INTERRUPT SET JMP .-2 /NO ICA /YES, CLEAR INTERRUPTS 7 JMP I TPINT /AND RETURN / /FLAGS AND COUNTS / CHECK, 0 /CHECK WANTED - 0=NO WCNT, 0 /WORD COUNT CHKS, 0 /CHECK SWITCH - 0=CHECK / /END OF NON-RESIDENT TAPE HANDLER MODULE / /END OF PROGRAM.