ASMB,R,Q,C * NAME: OTFIX * SOURCE: 92071-18022 * RELOC: 92071-16022 * PGMR: B.W. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * * NAM OTFIX,7 92071-1X022 REV.2041 800429 * * * OTFIX * OUTPUT RECORD TO RELINK TABLE AT THE END OF THE OUTPUT FILE. * THE RELINK TABLE IS BUILT UP FROM THE BOTTOM OF THE FILE TOWARD * THE PROGRAM CODE. IN THE SEGMENT LOAD3 THE RELINK TABLE IS * MOVED UP TO THE END OF THE PROGRAM CODE AND THE REST OF THE * FILE TRUNCATED. * * CALLING * A REG <0 POST LOCAL BUFFER TO OUTPUT * >0 ADDRESS OF SOURCE BUFFER TO OUTPUT * B REG LENGTH IN WORDS OF THE BUFFER TO OUTPUT * * JSB OTFIX * P+1 ERROR RETURN MESSAGE ALREADY PRINTED. * P+2 SUCESSFUL TRANSFER OF BUFFER HAS OCCURED * * INITIALIZE * ON THE FIRST CALL TO OTFIX THE INITIALIZATION ROUTINE * IN.OT WILL BE CALLED TO SET UP LOCAL CONTROL VARIABLES. * THIS ROUTINE WILL OVERLAY ITS CALL TO PREVENT MULTIPLE * EXECUTION * * GLOBALS * LDRER LOADER ERROR PRINT ROUTINE * FMPER LOADER FMP ERROR ROUTINE * .MVW MOVE WORDS * WRITF FMP OUTPUT ROUTINE * * I.ERR FMP ERROR VARIABLE * CFREC LOCAL CURRENT RECORD BEING OUTPUT INIT BY IN.OT * MXREC MAX RECORD BEING WRITTEN TO OUTPUT BY PROGRAM * ONAMR OUTPUT FILE NAMR * * ENT OTFIX EXT CFREC,I.ERR,MXREC,ONAMR EXT WRITF,LDRER,FMPER,.MVW EXT ODCB * A EQU 0 B EQU 1 HED IN.OT * * INITIALIZE LOCAL VARIABLES FOR USE BY OTFIX * IN.OT STB ILEN SAVE B REG LDB ONAMR+7 GET LAST RECORD IN OUTPUT FILE STB CFREC TO USE AS CURRENT RELINK RECORD LDB @SSA OVERLAY JMP INSTRUCTION STB FIX SET INIT CALL TO NOP SO THAT ONLY LDB ALWA CALLED ONE TIME! INB CMB STB NLWA2 SET ADDRESS -(LWA + 2) INB STB NLWA1 SET ADDRESS -(LWA + 1) LDB ILEN RECOVER B REG JMP FIX RETURN * @SSA SSA,RSS OVERLAY INSTRUCTION HED OTFIX * * * OTFIX NOP * * CUT REQUEST DOWN TO SIZE THAT CAN BE HANDLED * FIX JMP IN.OT INITIALIZED?? IF YES IS OVERLAYED * SSA,RSS POST REQUEST? BY THIS LINE JMP RETRY NO JSB POST YES JMP RETRN DO NORMAL RETURN AFTER POST RETRY STB ILEN SAVE REQUESTED INPUT LENGTH ADB AFWA ADD TO CURRENT POSITION POINTER ADB NLWA2 TOO LONG FOR CURRENT BUFFER? SSB,RSS JMP *+3 YES JSB MOVBF NO OUTPUT JMP RETRN NORMAL RETURN INB STB NXLEN LENGTH TO REQUEST ON NEXT RETRY CMB,INB ADB ILEN STB ILEN MAX LENGTH THAT CAN TRANSFER THIS TIME JSB MOVBF MOVE OUT THE CURRENT BUFFER LDB NXLEN JMP RETRY HED MOVBF * * * MOVBF NOP * *MOVE RECORD TO BUFFER (ALWAYS FITS) AND POST IF FULL * LDB AFWA PUT INPUT INTO BUFFER JSB .MVW DEF ILEN NOP STB AFWA SET NEW FIRST WORD AVAILABLE ADB NLWA1 BUFFER FULL ? SSB JMP MOVBF,I NO JSB POST YES JMP MOVBF,I HED POST * * * POST NOP STA TEMP1 SAVE A REGISTER LDA AFWA SEE IF ANY DATA IN BUFFER? CPA ASTBF JMP RTN NO ! LDA CFREC YES CHECK FOR OVERFLOW CMA ADA MXREC COLLIDED WITH PROG CODE? SSA,RSS JMP OVFLD YES * JSB WRITF WRITE LOCAL BUFFER DEF *+6 DEF ODCB+0 OUTPUT DCB OPENED TYPE 1 DEF I.ERR ERROR PARM ASTBF DEF BUF.O+0 LOCAL OUTPUT BUFFER DEF P128 LENGTH OF LOCAL BUFFER DEF CFREC CURRENT RECORD# SSA ERROR? JMP ERR YES * * RESET POINTERS * LDA ASTBF STA AFWA RESET CURRENT FIRST WORD AVAILABLE LDA CFREC ADA N1 STEP TO NEXT RELINK TABLE RECORD STA CFREC RTN LDA TEMP1 RECOVER A REGISTER JMP POST,I RETURN HED ERR * * * ERR JSB FMPER DEF ONAMR OUTPUT NAMR JMP OTFIX,I ERROR RETURN * OVFLD LDA P10 OV OUT ERROR JSB LDRER JMP OTFIX,I ERROR RETURN * RETRN ISZ OTFIX NORMAL RETURN JMP OTFIX,I * P10 DEC 10 P128 DEC 128 N1 DEC -1 NXLEN BSS 1 ILEN BSS 1 TEMP1 BSS 1 NLWA1 BSS 1 NLWA2 BSS 1 AFWA DEF BUF.O+0 INITIALIZE TO START OF OUTPUT BUFFER BUF.O BSS 128 OUTPUT BUFFER ALWA DEF *-1 END