ASMB HED . ** T M S - L O G G I N G - M O D U L E ** NAM $LGTM,7 92080-1X585 REV.2026 800507 1002 SPC 3 ********************************************************************** * * * NAME: $LGTM TMS-LOGGING MODULE * * SOURCE: &$LGTM 92080-18585 * * BINARY: %$LGTM * * * * PGMR: MILES NAKAMURA * * * ********************************************************************** SPC 2 * ************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * * * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * * * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * ************************************************************** SPC 3 SPC 1 ENT $LGTM EXT RMPAR,EXEC,CNUMO,PRTN,KLCLS EXT $PARS,$CVT1,LURQ,.UPIO,MESSS EXT OPEN,WRITF,CREAT,CLOSE,READF,POST * EXT DBUGR,DMPTM * EXT DMPTM SPC 1 A EQU 0 B EQU 1 SUP SPC 4 $LGTM STA LFNAM SAVE ADDR OF LOG FILE NAME, SEC CODE, CR NO. JSB RMPAR AND RETREIVE PARAMETER DEF *+2 DEF P1 * LDA P1 GET LU SZA,RSS IF 0, THEN SET TO 1 CLA,INA STA LU IOR B400 STA LU1 * LDA LFNAM COPY LOG FILE DESCRIPTION FROM DCLOG HEADER TO LDB .LFNM LOCAL BUFFER MVW D5 * * JSB DBUGR * DEF *+2 * DEF LU JSB EXEC SWAP THE WHOLE AREA DEF *+3 DEF D22 DEF D0 SWAP THE ENTIRE PARTITION JMP DEB05 SKP * SHEDULE REQUEST ACCEPTED BY THIS PROGRAM: * =========================================== * * * - IF NO STRING IS PASSED: * * * THE 4TH PARAMETER IS CHECKED, IF = -1 THEN THE PROGRAM TRY TO * GET A REQUEST BUFFER ON SPECIAL CLASS ALLOCATED BY THIS PROGRAM * AND RETURNED TO USER ON THE LGOPN CALL. IF THE GET FAIL THE * PROGRAM TERMINATES FOR EVER IF IT WAS DORMANT, OR WITH 'SAVE * SUSPENSION POINT' OPTION IF IT WAS IN THAT STATE. * * IF THE 4TH PARAMATER IS NOT -1, THEN IT IS ASSUMED TO BE A * CLASS I/O WORD AND A CLASS I/O GET IS EXECUTED ON THAT CLASS. * * IF THE GET FAIL, A ERROR MESSAGE IS PRINTED ON THE SYSTEM * CONSOLE AND THE PROGRAM TERMINATES WITH THE CURRENT OPTION. * * IF THE GET SUCCEED, THE FIRST WORD OF THE BUFFER IS ASSUMED * TO BE THE REQUEST CODE. IF IT IS LEGAL (0 =< RQ =<2), THE * REQUEST IS PERFORMED, ELSE THE ERROR MESSAGE IS PRINTED ON * THE SYSTEM CONSOLE AND THE PROGRAM TERMINATES WITH THE * CURRENT OPTION. * * * - IF A STRING IS PASSED: * * * THE FIRST WORD OF THE STRING IS ASSUMED TO BE THE REQUEST CODE * IF IT IS LEGAL (BETWEEN 0 & 2) THE REQUEST IS PERFORMED. * IF THE REQUEST CODE IS NOT LEGAL, THE STRING IS CHECKED AGAINST * ",,1" OBTAIN FROM THE FOLLOWING RTE/FMGR COMMAND "RU,TMSIM,,,1" * * IF THE STRING DOES NOT MATCHE, A MESSAGE IS PRINTED ON THE * TERMINAL USED TO SHEDULE THE PROGRAM, AND THE PROGRAM * TERMINATES WITH THE CURRENT OPTION. * * IF THE STRING MATCHES, AND THE LOG FILE IS CLOSED, THE * FOLLOWING MESSAGE IS PRINTED: * NO LOG FILE CURRENTLY OPEN. * * IF THE STRING MATCHES, AND A LOG FILE IS STILL OPEN, THE * USER IS PROMPTED WITH THE FOLLOWING: * LOG FILE= * SEC CODE= * CR.-NO.= * IF THE USER ANSWERS CORRECTLY, THE LOG FILE IS CLOSED IMMEDIATELY, * AND THE PROGRAM TERMINATES. * * THIS PROCEDURE SHOULD BE USE ONLY IN CASE OF EMMERGENCY !! * * * THE ERROR MESSAGE PRINTED ON THE TERMINAL IS THE FOLLOWING: * * /DCLOG : ILLEGAL SCHEDULE REQUEST ! SKP * FATAL ERROR # MEANING * * 900 DCLOG PROGRAM IS NOT LOADED * 901 DCLOG HAS NOT BEEN INITIALIZED (NO LGOPN REQ) * 902 CLASS IO CANNOT BE ALLOCATED * 903 FILE IS NOT A DCLOG LOG FILE * 910 LOG FILE TYPE IS INCORRECT * 911 LOG FILE SECURITY CODE IS INCORRECT * 920 FATAL ERROR ON MAG TAPE LOG FILE * 930 OPERATOR ABORT * * * NON-FATAL ERROR * * 950 [LGOPN] LOG FILE NAME IS INCORRECT * 951 LOGGING DISABLED * * * MAXIMUM VALUE CONSIDERATIONS * ============================ * * - TMS-LOGGING COMMUNICATION MAXIMUM BUFFER LENGTH: * * MAXIMUM BUFFER LENGTH RECEIVED BY THIS PROGRAM IS 601 WDS SKP SPC 1 SPC 3 ILSHR LDA P1 SET UP LU SZA,RSS ILSH3 CLA,INA STA P1 JSB WRTTY OUTPUT DEF MES "ILLEGAL SCHEDULE REQUEST ! " DEF D18 LDA ACTIV GET ACTIVE FLAG SZA,RSS PROGRAM ACTIVE ? JSB ABORT NO, TERMINATE PROGRAM JMP EXIT4 YES, SAVE SUSPENSION POINT * MES ASC 5, /DCLOG : ASC 13,ILLEGAL SCHEDULE REQUEST ! .MES1 DEF MES+1 * SBULN DEC 12 MAX BUF LEN TO SEND RBULN DEC 601 MAX BUF LEN TO RECEIVE * * STATUS BUFFER * ISTAT BSS 1 * CLASS NOP * SPC 1 P1 BSS 3 PARAMETERS GET BY RMPAR CLAS# OCT 0 P4 MAY BE THE CLASS I/O WORD NOP LU BSS 1 LU1 BSS 1 HED T-M LIBRARY <---> TMS-LOGGING MODULE COMMUNICATION EXIT5 LDA D12 ADJUST MAIL BOX LENGTH LDB ISTAT STB ERCOD NO FATAL ERROR REPORTED LDB SCODE RETURN THE TMS-LOGGING CODE STB ERCOD+1 TO THE CALLER SPC 1 EXIT6 STA LTEM SET MAIL BOX LENGTH * LDA CLAS# RELEASE CLASS I/O IF NOT ALREADY DONE JSB KLCLX LDA ECLAS RECALL CLASS I/O THAT SHOULD BE USED SZA,RSS ANY BUFFER TO RETURN TO USER? JMP EXIT3 NO, SKIP BUFFER SEND STA CLAS# YES, SAVE CLASS IO WD * LDA PARM SET UP OPTIONAL CLASS I/0 PARAMETERS * LDB PARM+1 WITH THOSE SUPPLIED BY THE USER JSB PSAM SEND ANSWER TO THE USER USING HIS CLASS I/O DEF ERCOD BUFFER ADDR LTEM NOP BUFFER LENGTH SPC 1 EXIT3 LDA ISTAT CHECK FOR ERROR SZA JMP LGCL0 ERROR, SHUT DOWN COMPLETELY SPC 1 EXIT4 LDA CLASS TRY TO GET A REQUEST ON THE SPECIAL CLASS JSB GSAM GET NO-WAIT & NO-ABORT SSA,RSS SOMETHING GET ? JMP DEB20 YES, GO PROCESS REQUEST * RTNFL OCT 0 RETURN FLAG (NOP/RSS) TO RTN PARAM TO CALLER JMP EXIT9 IF NOP; EXIT WITHOUT 'PRTN' * SPCLF RSS CLEARED ONLY WHEN SPECIAL CLOSE JMP SPCLS REQUEST IS REQUESTED, RETURN TO SPECIAL PROCESS * JSB PRTN SEND RETURN PARAMETERS TO CALLER DEF *+2 DEF RTPAR RETURN PARAMETRS BUFFER * EXIT9 JSB EXEC COMPLETE THIS PROGRAM DEF *+4 SAVING SUSPENSION POINT. DEF D6 .D0 DEF D0 DEF D1 SPC 1 **************************************************************** SPC 1 JSB RMPAR RETREIVE SCHEDULE PARAMETERS DEF *+2 DEF P1 SAVE PARAMETER * DEB05 CLA SET RETURN FLAG TO NOT USE 'PRTN' STA RTNFL SPC 1 JSB EXEC GET STRING REQUEST DEF *+5 DEF D14 DEF D1 .SCOD DEF SCODE BUFFER ADDR DEF RBULN BUFFER LENGTH DST PARM1 SAVE STATUS & LENGTH SZA,RSS STRING GET SUCCED ? JMP DEB18 YES, GO PROCESS REQUEST * LDA CLAS# NO STRING, CHECK FOR A MAIL BOX CPA DM1 WANTS TO GET FROM THE SPECIAL CLASS ? JMP EXIT4 YES, GO DO THE GET SZA,RSS CLASS I/O DEFINED ? JMP ILSH3 NO, PRINT 'ILLEGAL SCHEDULE REQUEST' DEB15 AND B1.47 YES, RELEASE BUFFER ON THE NEXT GET IOR B20K BUT DO NOT DEALLOCATE THE CLASS I/O JSB GSAM GET NO-WAIT & NO-ABORT SSA SOMETHING GET ? JMP ILSH3 NO, PRINT MESSAGE AND EXIT JMP DEB25 YES, PROCESS THE REQUEST SPC 2 DEB18 BLS SET TLOG IN CHARACTERS LDA .SCOD BUFFER ADDR JSB $PARS PARSE THE BUFFER DEF BTEMP AND STORE RESULTE INTO BTEMP * LDA BTEMP+1 RECALL FIRST PARAM VALUE CPA ARU IS IT A "RU, .... " COMMAND ? JMP SPCL3 YES, CHECK FOR EMERGENCY PROCEDURE SPC 1 DEB20 CLA NO CLASS I/O IS DEFINE IN THAT WORD STA CLAS# SPC 2 DEB25 NOP * JSB DMPTM * DEF *+7 * DEF D6 * DEF SCODE * DEF SMWDS * DEF MNMES * DEF D20 * DEF D1 LDA SCODE GET REQUEST CODE SSA NEGATIVE ? JMP ILSH3 YES, ERROR ADA DM4 G.E. 4 ? SSA,RSS JMP ILSH3 YES, ERROR LDA SCODE NO, RECALL SUBROUTINE CODE LDB ACTIV RECALL ACTIVE FLAG SZB LOG FILE OPEN ? JMP DEB30 YES, CONTINUE SZA,RSS NO, OPEN REQUEST ? JMP LGOPN YES, PROCESS CPA D3 NO, VERIFY REQUEST? JMP LGVFY YES, PROCESS JSB ABORT NOT AN OPEN OR VERIFY REQUEST, REJECT LDA D901 LDB SCODE JMP RTPRG RETURN SPC 1 DEB30 ADA C.TAB INDEX IN TABLE JMP A,I HED EMERGENCY CLOSE PROCEDURE SPCL3 LDA BTEMP+8 VERIFY THAT THE 1ST PARAM SZA IS NOT DEFINED JMP ILSH3 ERROR ! LDA BTEMP+12 VERIFY THAT THE 2ND PARAM SZA IS NOT DEFINED JMP ILSHR ERROR ! LDA BTEMP+16 VERIFY THAT THE 3RD PARAM CPA D1 IS NUMERIC RSS OK, DO SPECIAL CLOSE REQUEST JMP ILSHR SPC 1 LDA P1 RECALL LU SZA,RSS CLA,INA STA P1 SAVE LU IOR B400 STA P1+1 SAVE LU FOR INPUT SPC 1 LDA ACTIV LOG FILE OPEN SZA,RSS OPEN ? JMP SPCL9 NO, REPORT ERROR SPC 1 LDA ITYPE CHECK LOG FILE TYPE SZA TYPE 45 (DISC) ? JMP SPCL5 YES, GO TO DISC PROCESSING SPC 1 LDA BTEMP+17 NO, MAG TAPE, GET PARAMETER 3 CPA LULOG SAME AS LOG LU ? RSS YES, GET READY TO TERMINATE JMP ILSHR NO, ILLEGAL REQUEST LDA .LGM2 MOVE LOG LU INTO LOG FILE NAME LDB .LFNM MVW D3 JMP SPC72 SPC 1 SPCL5 JSB WRTTY PRINT "LOG FILE=" DEF MSDB BUFFER DEF D7 JSB SPCL0 READ AND PARSE ANSWER LDB .LFNM CHECK IF CORRECT CMW D3 JMP SPCL7 OK, ASK SEC CODE NOP DOES NOT MATCH JMP ILSHR REJECT THE SHEDULE REQUEST * SPCL7 JSB WRTTY PRINT "SEC.-CODE=" DEF MSSC BUFFER DEF D7 JSB SPCL0 READ AND PARSE ANSWER LDB A,I CHECK IF CORRECT CPB LFNAM+3 RSS JMP ILSHR REJECT THE SHEDULE REQUEST * SPC71 JSB WRTTY PRINT "CR-NO. =" DEF MSCR MESSAGE BUFFER DEF D6 JSB SPCL0 GET ANSWER LDB A,I VERIFY CR. NO. CPB LFNAM+4 RSS JMP ILSHR REJECT SCHEDULE REQUEST * SPC72 CLA,INA SET SCODE FOR DBCLOSE STA SCODE CLA SET SPECIAL CLOSE FLAG STA SPCLF TO RETURN AFTER THE CLOSE JMP LGCL0 * SPCLS LDA .LFNM MOVE LOG FILE NAME INTO THE MESSAGE LDB .MS9X MVW D3 SPCL8 JSB WRTTY PRINT "LOG FILE XXXXXX SUCCESSFULLY CLOSE" DEF MS9 DEF D20 JSB ABORT JMP EXIT9 SPC 1 SPCL9 JSB WRTTY PRINT "NO LOG FILE CURRENTLY OPEN" DEF MS7 DEF D16 JSB ABORT TERMINATE PROGRAM JMP EXIT9 SPC 1 MSDB ASC 6, LOG FILE = OCT 20137 MSSC ASC 6, SEC CODE = OCT 20137 MSCR ASC 5, CR. NO. = OCT 20137 MS9 ASC 20, LOG FILE : XXXXXX SUCCESSFULLY CLOSED. MS7 ASC 16, NO LOG FILE CURRENTLY OPEN ! .MS9X DEF MS9+6 ARU ASC 1,RU SPC 1 SPCL0 NOP JSB EXEC READ ANSWER DEF *+5 DEF D1 DEF P1+1 .BUF DEF BUF DEF DM7 LDA .BUF RECALL BUFFER ADDR JSB $PARS PARSE BUFFER DEF BTEMP OUTPUT BUFFER LDA .BTE1 ADDR. OF DATA LDB BTEMP TYPE OF DATA JMP SPCL0,I * .BTE1 DEF BTEMP+1 SPC 1 ACTIV OCT 0 # OF OPEN/CLOSE REQUEST ITYPE OCT 0 FILE TYPE (0 - TYPE 0, 1 - TYPE 45) IEOF OCT 0 END-OF-FILE FLAG BTEMP BSS 40 HED LGOPN PROCESSOR * ********************************************************************** * * LGOPN - OPEN LOG FILE, AND INITIALIZE * ********************************************************************** * * * INPUT BUFFER FORMAT: * * SCODE (4) RQ/CLASS#/PARM1/PARM2 * IMGER[1:3] (3) LOG FILE NAME * IMGER[4] (1) SECURITY CODE * IMGER[5] (1) CARTRIDGE NO. * * OFFSETS INTO BUF * BFLGN EQU 0 LOG FILE NAME OFFSET BFSEC EQU 3 SECURITY CODE OFFSET BFCRN EQU 4 CARTRIDGE NO. OFFSET * * RETURN VALUE USING 'PRTN' SUBROUTINE: * * RTPAR[1] (1) FMP ERROR CODE (NEG) * RTPAR[2] (1) CLASS IO WD * * OFFSETS INTO RTPAR * RTERR EQU 0 FMP ERROR CODE OFFSET RTCLA EQU 1 CLASS IO WORD * LGOPN LDA CLAS# RELEASE MAIL BOX & CLASS JSB KLCLX * CLA,INA SET INITIALIZE FLAG STA SCOD2 * *--------------------------------------------------------------------- * VERIFY THAT THE SCHEDULING PROGRAM HAS SPECIFIED THE SAME LOG FILE * THAT DCLOG WAS TMPGN'ED WITH *--------------------------------------------------------------------- * LDA .IMGE GET ADDRESS OF LOG FILE SENT BY SCHEDULING PROG LDB .LFNM GET ADDRESS OF LOG FILE SPECIFIED FOR DCLOG CMW D5 MATCH? JMP LGOP2 YES, CONTINUE NOP NO, ERROR -950, REJECT OPEN REQUEST LDA ACTIV GET ACTIVE FLAG SZA,RSS PROGRAM ACTIVE? JSB ABORT NO,ABORT LDA D950 CLB JMP RTPRG RETURN * *--------------------------------------------------------------------- * IF FIRST LGOPN REQUEST, THEN * OPEN LOG FILE * ELSE * RETURN SUCCESSFUL OPEN *--------------------------------------------------------------------- * LGOP2 LDA ACTIV GET ACTIVE FLAG SZA IS IT THE FIRST OPEN REQUEST ? JMP OKOP1 NO, RETURN * *--------------------------------------------------------------------- * FIRST OPEN REQUEST, OPEN FILE AND INITAILIZE *--------------------------------------------------------------------- * CLA,INA SET TYPE FLAG TO INDICATE TYPE 45 STA ITYPE * LDA LFNAM GET FIRST WORD IN NAME ADA DM64 IS IT LU? (.LE. 63) SSA JMP LGT01 YES, GO TO PROCESSING FOR TYPE 0 * * ISSUE OPEN COMMAND * LGOPX JSB OPEN DEF *+8 DEF IDCB DCB DEF ISTAT STATUS DEF LFNAM FILE NAME DEF D0 DUMMY DEF LFNAM+3 SEC CODE DEF LFNAM+4 CR. NO. DEF D144 DCB SIZE =144 * JSB SPOPN OPEN SPOOL FILE * DEF *+3 * DEF SPNAM * DEF LULOG LU/ERROR RETURN * * CHECK OPEN STATUS, AND FILE TYPE * JSB FMER? CHECK FOR FMP ERROR * JSB SPER? CHECK FOR SMP ERROR CPA DM6 DOES FILE EXIST? JMP LGCRE NO, CREATE IT CPA D45 YES, IS IT TYPE 45? JMP LGOP3 YES, CHECK SECURITY CODE LDA D910 NO, ERROR -910, BAD FILE TYPE JMP FTLER CLOSE FILE AND DIE (GOOD IDEA TO OUTPUT ERROR) * LGOP3 LDA IDCB+7 GET SEC CODE INDICATOR SSA GOOD SEC CODE? JMP LGT45 YES, PROCESS EXISTING TYPE 45 FILE LDA D911 NO, ERROR -911, BAD SEC CODE JMP FTLER CLOSE FILE AND DIE * * * *--------------------------------------------------------------------- * FILE DOES NOT EXIST, CREATE IT *--------------------------------------------------------------------- * LGCRE JSB CREAT DEF *+8 DEF IDCB DCB DEF ISTAT STATUS DEF LFNAM FILE NAME DEF D128 INITIAL SIZE =128 BLOCKS DEF D45 TYPE =45 DEF LFNAM+3 SEC CODE DEF LFNAM+4 CR. NO. JSB FMER? CREATION ERROR? * * JSB CLOSE CLOSE FILE IMMEDIATELY * DEF *+2 * DEF BUF * * JSB SPOPN OPEN AS SPOOL FILE * DEF *+3 * DEF SPNAM OPEN BUFFER * DEF LULOG * JSB SPER? CHECK FOR ERROR * CCA INITIALIZE REEL NO. TO -1 STA IREEL * JSB DCTIM GET SYSTEM TIME DEF DCHED+HETIM DEF DCHED+HEYR * LDA .DCHE JSB WRT45 WRITE FILE HEADER * JSB INLOG WRITE HEADER * JMP OKOPN SUCCESSFUL OPEN * *--------------------------------------------------------------------- * TYPE 45 FILE ALREADY EXISTS, MOVE TO EOF AND PREPARE TO START * LOGGING FROM THAT POINT *--------------------------------------------------------------------- * LGT45 JSB READF READ FIRST RECORD IN FILE DEF *+6 DEF IDCB DEF ISTAT DEF LGHED INPUT BUFFER DEF D18 READ 18 WDS (SHOULD READ ONLY 16) DEF BUF SAVE WORD COUNT JSB FMER? CHECK FOR ERROR * JSB LGVER VERIFY THAT THIS IS A LOG FILE JMP LGOPX ERROR (SHOULD NOT COME HERE) * OK, FIND THE EOF LG451 JSB READF DEF *+6 DEF IDCB DCB DEF ISTAT STATUS DEF BUF INPUT BUFFER DEF D1 READ 1 WD DEF IEOF END-OF-FILE FLAG JSB FMER? FMP ERROR? * LDA IEOF GET END-OF-FILE FLAG CPA DM1 END-OF-FILE FOUND? RSS YES, RETURN JMP LG451 NO, KEEP READING * *LGT45 JSB EXEC READ EACH RECORD UNTIL EOF * DEF *+5 * DEF D1 * DEF LULOG * DEF BUF * DEF D23 * JSB T0ER? * HLT 66B PARITY ERROR * JMP LG451 EOF FOUND, RETURN * HLT 67B END OF TAPE, IMPOSSIBLE HERE * * JSB EXEC NO EOF, SAVE POSITION IN FILE * DEF *+5 * DEF D23 * DEF SMP * DEF D8 * DEF LULOG * JSB RMPAR * DEF *+2 * DEF BUF+100 SAVE POSITION VECTOR * JSB DMPTM * DEF *+7 * DEF D6 * DEF BUF * DEF D23 * DEF DMME1 * DEF D20 * DEF D1 * JSB DMPTM * DEF *+7 * DEF D6 * DEF BUF+100 * DEF D3 * DEF DMME2 * DEF D20 * DEF D1 * JMP LGT45 READ NEXT RECORD * *LG451 JSB EXEC EOF FOUND, POSITION TO END OF LAST REC * DEF *+8 * DEF D23 * DEF SMP * DEF D9 * DEF LULOG * DEF BUF+100 * DEF BUF+101 * DEF BUF+102 JMP OKOPN RETURN *DMME1 ASC 10,0DATA FROM LOG FILE *DMME2 ASC 10,0POSITION VECTOR * * *--------------------------------------------------------------------- * TYPE 0 FILE, MUST BE MAGTAPE *--------------------------------------------------------------------- * LGTY0 LDA IDCB+3 GET WORD 4 OF DCB AND B77 ISOLATE LOG DEVICE LU# RSS * LGT01 LDA LFNAM GET LU# STA LULOG SAVE LU # CCE CONVERT LU# TO ASCII JSB $CVT1 STA LUASC CLB SET LOG FILE TYPE FLAG TO INDICATE TYPE 0 STB ITYPE STB IREEL SET REEL NO. TO 0 * * UP LOG DEVICE * LDA LFNAM JSB .UPIO JMP T0DNL LOCK ERROR (FATAL) STA EQTLG SAVE EQT# RETURNED IN A REG * * LOCK LOG DEVICE EXCLUSIVELY TO THIS PROGRAM * JSB LURQ DEF *+4 DEF NABWL LOCK, NO WAIT, NO ABORT DEF LULOG DEF D1 JMP T0DNL ERROR RETURN SZA DEVICE LOCKED? JMP T0DNL NO, ERROR * * UNBUFFER LOG DEVICE TO BE SURE THAT DATA IS STORED WHEN EXEC CALL * FINISHES * LDA EQTLG GET LOG DEVICE EQT NUMBER CCE SET DECIMAL FLAG JSB $CVT1 CONVERT EQT # TO DECIMAL ASCII STA EQTBF SAVE ASCII EQT # * JSB MESSS ISSUE " EQ,XX,UN " COMMAND TO SYSTEM DEF *+3 DEF UNBUF DEF D10 * * INITIALIZE LOG DEVICE * JSB INLOG * *--------------------------------------------------------------------- * FILE SUCCESSFULLY OPENED AND INITIALIZED *--------------------------------------------------------------------- * OKOPN JSB GTCLW ALLOCATE IO CLASS FOR COMMUNICATION STA CLASS * OKOP1 ISZ ACTIV BUMP ACTIVE FLAG LDB CLASS RETURN SPECIAL CLASS# TO CALLER CLA STA ISTAT SET STATUS TO GOOD OKRTN STA SCOD2 CLEAR INITIALIZATION FLAG LDA ISTAT RETURN STATUS SPC 1 * RTPRG DST RTPAR SAVE RETURN PARAMETERS LDA .RSS AND SET THE RETURN FLAG TO STA RTNFL USE 'PRTN' SUBROUTINE JMP EXIT4 RETURN * *--------------------------------------------------------------------- * END OF LGOPN *--------------------------------------------------------------------- * SPC 1 SCOD2 BSS 1 INITIALIZE FLAG RTPAR BSS 5 .RSS RSS .LFNM DEF LFNAM *SPNAM OCT 0 SPOOL OPEN BUFFER * OCT 0 LFNAM ASC 3,...... LF NAME OCT 0 SEC CODE OCT 0 CR NO. * OCT 23 SPOOL TO MT * OCT 1 NO BUFFERING, NO BATCH, W/R, SPOOL FORMAT, USER * FILE, PASS IMMED, SAVE FILE * OCT 0 DEFAULT SPOOL PRI * OCT 0 IGNORE THIS * OCT 0 NO BATCH, NO SESSION * OCT 0 * OCT 0 * OCT 0 * OCT 0 NO OUTSPOOLING AT THIS TIME * EQTLG BSS 1 LOG DEVICE EQT# (MT OR CTU) UNBUF ASC 2, EQ, UNBUFFER MESSAGE EQTBF BSS 1 ASCII EQT# ASC 2,,UN NABWL OCT 140001 LURQ CMD WD, LOCK, NO ABT, NO WAIT HED LGCLS PROCESSOR * ********************************************************************** * * LGCLS - CLOSE LOG FILE, TERMINATE PROGRAM IF NO ONE IS USING * ********************************************************************** * * INPUT BUFFER FORMAT: * * SCODE (4) RQ/CLASS#/PARM1/PARM2 SPC 1 * RETURN VALUE USING 'PRTN' SUBROUTINE: * * RTPAR[1] (1) 0 / ERROR CODE * SPC 1 LGCLS LDA CLAS# RELEASE MAIL BOX & CLASS I/O JSB KLCLX * CLA SET STATUS TO GOOD (NO ERROR CAN OCCUR ON CLOSE) STA ISTAT * CCA DECREMENT ACTIVE FLAG ADA ACTIV STA ACTIV SZA LAST DBCLS REQUEST ? JMP OKRTN NO, FORGET THE REQUEST * LGCL0 LDA LFNAM GET LOG FILE NAME ADA DM64 LU? SSA JMP LGCL1 YES, DO NOT USE SMP CLOSE * JSB CLOSE NO, CLOSE WITH FMP CALL DEF *+2 DEF IDCB * JSB EXEC * DEF *+5 * DEF D23 CODE 23 * DEF SMP SCHEDULE SMP * DEF D4 CLOSE FILE * DEF LULOG * LGCL1 LDA CLASS RELEASE THE CLASS I/O JSB KLCLX CLA STA CLASS * JSB ABORT SET UP PROGRAM TO TERMINATE (GO DORMANT) JMP OKRTN EXIT * *SMP ASC 3,SMP HED LGLOG PROCESSOR * ********************************************************************** * * LGLOG - LOG DATA * ********************************************************************** * * INPUT BUFFER FORMAT: * * SCODE (4) RQ/CLASS#/PARM1/PARM2 * IMGER (12) IMAGE STATUS * BUF (585) DATA TO BE LOGGED * * INFORMATION RETURNED: * * ERCOD (12) LOGGING STATUS, IMAGE STATUS * * *--------------------------------------------------------------------- * SET UP RECORD HEADER *--------------------------------------------------------------------- * LGLOG LDA .IMGE SAVE IMAGE STATUS, IN CASE THIS IS AN IMAGE LDB .ERCO LOGGING REQUEST MVW D12 (THE IMGER BUFFER WILL BE USED TO BUILD THE HEADER) * * SET UP RECORD HEADER * LDA SMWDS GET WORD COUNT ADA DM9 CALCULATE NO. OF WDS. TO OUTPUT STA LGHED+HECNT SAVE IN FIRST WORD OF HEADER * *--------------------------------------------------------------------- * IF LOGGING TO DISC, THEN * ISSUE FMP CALL * ELSE * USE EXEC CALL (TYPE 0) *--------------------------------------------------------------------- * LDA ITYPE GET LOG FILE TYPE SZA,RSS TYPE 0? JMP LGEXC YES, USE EXEC CALL * *--------------------------------------------------------------------- * ISSUE FMP CALL *--------------------------------------------------------------------- * JSB DCTIM GET TIME DEF LGHED+HETIM TIME DEF LGHED+HEYR YEAR LDA .LGHE GET BUFFER ADDR JSB WRT45 OUTPUT TO TYPE 45 FILE JMP EXIT5 EXIT * *--------------------------------------------------------------------- * ISSUE EXEC CALL *--------------------------------------------------------------------- * LGEXC JSB DCTIM GET TIME DEF LGHED+HETIM TIME DEF LGHED+HEYR YEAR JSB BKST0 BACKSPACE ONE REC (MUST BE EOF REC) JSB T0ER? CHECK POSITIONING OF TAPE, EOF MUST BE ENCOUNTERED NOP CPA D1 EOF ENCOUNTERED? JMP LGEX2 YES, CONDITION NORMAL, CONTINUE JSB T0POS NO, FLAG POSITIONING ERROR JMP LGEX5 PROCESS ERROR, IF OPERATOR DID NOT ABORT * LGEX2 LDA .LGHE JSB WRTT0 OUTPUT TO TYPE 0 FILE JSB T0ER? CHECK FOR ERROR JMP LGEX5 ERROR ENCOUNTERED, OPERATOR INTERVENED JSB EOFT0 OK, OUTPUT EOF JSB T0ER? CHECK FOR ERROR JMP LGEX5 ERROR ENCOUNTERED, OPERATOR INTERVENED JMP EXIT5 NO ERROR, EXIT * LGEX5 JSB INLOG OPERATOR INTERVENTION REQUIRED, TAPE WAS CHANGED, * INITIALIZE NEW TAPE * LDA TEMP GET ERROR INDEX * CPA D5 WAS THE ERROR EOT? * JMP EXIT5 YES, RETURN JMP LGEXC NO, DATA STILL NEEDS TO BE OUTPUT * *--------------------------------------------------------------------- * END OF LGLOG *--------------------------------------------------------------------- * HED LGVFY PROCESSOR * ********************************************************************** * * LGVFY - SEND BACK DCLOG STATUS AND LOG FILE NAME FOR VERIFICATION * ********************************************************************** * * INPUT BUFFER FORMAT: * * SAME AS LGOPN * * INFORMATION RETURNED: * * RTPAR[1] (1) STATUS (0 OR -950) * PARM [2] (1) ACTIVE FLAG (NO. OF PROCESSES * USING DCLOG * IMGER[3] (3) LOGFILE NAME * IMGER[6] (1) SEC. CODE * IMGER[7] (1) CR. NO. * * *--------------------------------------------------------------------- * VERIFY FILE NAME *--------------------------------------------------------------------- * LGVFY LDA .IMGE GET ADDR OF USER FILENAME LDB .LFNM GET ADDR OF DCLOG FILENAME CMW D5 SAME? JMP LGVF2 YES, OK NOP NO, ERROR LDA D950 -950 RSS LGVF2 CLA FILE NAMES MATCH, SET ERROR CODE TO 0 LDB ACTIV GET ACTIVE FLAG DST PARM PUT STATUS AND ACTIVE FLAG IN RETURN BUFFER * *--------------------------------------------------------------------- * MOVE FILENAME TO RETURN BUFFER AND SEND STATUS TO USER *--------------------------------------------------------------------- * LDA .LFNM GET ADDR OF DCLOG FILENAME LDB .IMGE GET ADDR OF USER BUFFER MVW D5 * JSB EXEC SEND STATUS TO USER DEF *+5 DEF D14 DEF D2 DEF PARM DEF D7 * *--------------------------------------------------------------------- * IF PROG IS INACTIVE, ABORT, ELSE SAVE SUSPENTION POINT *--------------------------------------------------------------------- * LDA ACTIV GET ACTIVE FLAG SZA,RSS ACTIVE? JSB ABORT NO, ABORT JMP EXIT4 TERMINATE HED UTILITY SUBROUTINES * ********************************************************************** * * UTILITY ROUTINES: * * DCTIM - GET SYSTEM TIME * WRT45 - WRITE TO TYPE 45 FILE * WRTT0 - WRITE TO TYPE 0 FILE * EOFT0 - WRITE EOF ON TAPE * REDT0 - READ TAPE * RWDT0 - REWIND TAPE AND TAKE OFFLINE * RW2T0 - REWIND TAPE AND LEAVE ONLINE * BKST0 - BACKSPACE 1 REC ON TAPE * FWDT0 - SPACE FORWARD TO EOF * STAT0 - GET MAG TAPE DYNAMIC STATUS * CTLT0 - CONTROL TAPE * WRTTY - OUTPUT TO TERMINAL * TIMTY - SET TIMEOUT ON TERMINAL * PSAM - SEND CLASS IO MAIL BOX * GSAM - GET CLASS IO MAIL BOX * GTCLW - ALLOCATE CLASS IO WORD * KLCLX - DEALLOCATE CLASS WORD * WAIT - WAIT FOR A SPCEIFIED AMOUNT OF TIME OR UNTIL COND MET * ********************************************************************** * * DCTIM NOP GET SYSTEM TIME LDA DCTIM,I GET TIME BUFFER ADDR ISZ DCTIM LDB DCTIM,I GET YEAR BUFFER ADDR ISZ DCTIM POINT TO RETURN ADDR DST DCTI0 JSB EXEC DEF *+4 DEF D11 CODE 11 DCTI0 NOP NOP JMP DCTIM,I SPC 2 WRT45 NOP WRITE TO TYPE 0 FILE STA WR451 SAVE BUFFER ADDR JSB WRITF DEF *+5 DEF IDCB DEF ISTAT WR451 NOP OUTPUT BUFFER DEF WR451,I WORD COUNT (FIRST WORD OF OUTPUT BUFFER) JSB FMER? CHECK FOR ERROR * JSB POST POST DATA TO FILE DEF *+3 DEF IDCB DEF ISTAT JSB FMER? * CLA STA ISTAT JMP WRT45,I SPC 2 WRTT0 NOP WRITE TO TYPE 0 FILE STA WRADR CLA SET MT FUNCTION CODE TO 0 TO INDICATE THAT STA T0FNC OPERATION IS "WRITE DATA RECORD" JSB EXEC DEF *+5 DEF D2 EXEC CODE 2 DEF LULOG LU # WRADR NOP OUTPUT BUFFER DEF WRADR,I WORD COUNT * JMP WRTT0,I * SPC 2 EOFT0 NOP WRITE EOF CLA,INA SET FUNCTION CODE TO 1 TO INDICATE THAT CURRENT STA T0FNC OPERATION IS "WRITE EOF" LDA B100 WRITE EOF JSB CTLT0 JMP EOFT0,I RETURN * LULOG NOP T0FNC BSS 1 SPC 2 REDT0 NOP READ THE MAG TAPE (FOR VERIFICATION) JSB EXEC DEF *+5 DEF D1 DEF LULOG DEF LGHED DEF D18 READ 18 WORDS (ONLY 16 SHOULD BE READ) STB BUF SAVE TRANSMISSION LOG JMP REDT0,I RETURN SPC 2 RWDT0 NOP REWIND TAPE LDA B500 TAKE UNIT OFF LINE JSB CTLT0 JMP RWDT0,I RETURN SPC 2 RW2T0 NOP REWIND TAPE LDA B400 LEAVE UNIT ONLINE JSB CTLT0 JMP RW2T0,I RETURN SPC 2 BKST0 NOP BACK SPACE ONE REC ON TYPE 0 FILE LDA B200 CONTROL CODE =2B JSB CTLT0 JMP BKST0,I RETURN SPC 2 FWDT0 NOP GO TO EOF LDA B1300 CONTROL CODE =13B JSB CTLT0 JMP FWDT0,I RETURN SPC 2 STAT0 NOP GET DYNAMIC STATUS LDA B600 CONTROL CODE =6B JSB CTLT0 JMP STAT0,I RETURN SPC 2 CTLT0 NOP CONTROL TYPE 0 FILE IOR LULOG SET CONTROL WORD STA EXCTL JSB EXEC DEF *+3 DEF D3 CODE 3 DEF EXCTL JMP CTLT0,I YES, RETURN * EXCTL NOP CONTROL WORD SPC 2 WRTTY NOP WRITE TO USER TERMINAL LDA WRTTY,I GET BUFFER TO OUTPUT ISZ WRTTY LDB WRTTY,I GET WORD COUNT DST WRTY1 WRTY0 JSB EXEC DEF *+5 DEF D2 DEF LU LU # WRTY1 BSS 1 BUFFER BSS 1 WORD COUNT ISZ WRTTY JMP WRTTY,I RETURN SPC 2 TIMTY NOP SET TIME OUT ON USER TERMINAL STA TIMT1 LDA LU GET LU IOR TTYTO SET TIMEOUT FUNCTION CODE STA CTLTY JSB EXEC DEF *+4 DEF D3 DEF CTLTY DEF TIMT1 JMP TIMTY,I RETURN * TTYTO OCT 2200 CTLTY BSS 1 TIMT1 BSS 1 SPC 2 PSAM NOP PUT MAIL BOX INTO SAM * DST PARM1 SET PARAMETERS LDA PSAM,I GET BUFFER ADDR STA PSAM2 ISZ PSAM JSB EXEC CALL I/O WRITE/READ DEF *+8 DEF NAB20 WRITE/READ REQUEST DEF D0 DUMMY LU PSAM2 NOP BUFFER ADDR DEF PSAM,I BUFFER LENGTH DEF PARM1 DEF PARM2 DEF CLAS# CALL I/O WORD JSB EXER? ISZ PSAM SET RETURN ADDR JMP PSAM,I NAB20 OCT 100024 EXEC 20, NO ABORT SPC 2 GSAM NOP IOR BIT15 SET NO-WAIT BIT STA TEMP JSB EXEC CLASS I/O GET DEF *+7 DEF NAB21 GET NO-ABORT DEF TEMP CLASS I/O WORD DEF SCODE BUFFER ADDR DEF RBULN BUFFER LENGTH DEF PARM1 DEF PARM2 CCA ABORT RETURN, NOTHING HAS BEEN GET STA SAVA STB SMWDS LDA SAVA JMP GSAM,I RETURN OK * NAB21 OCT 100025 SMWDS BSS 1 NO. OF WORDS RECEIVED BY CLASS IO GET SAVA BSS 1 SPC 2 GTCLW NOP ALLOCATED A CLASS I/O CLA WHEN OWNER CLASS I/O WILL BE RELEASE STA GTCLX THIS SUBROUTINE WILL BE REPLACED JSB EXEC BY THE SYSTEM ROUTINE. DEF *+5 THE CLASS MUST BE OWNED BY THE CALLING PROGRAM DEF NAB19 SO THE ABORT PROCEDURE WILL BE EASIER DEF D0 I.E.: THE PROGRAM WILL BE ABORTED DEF * AND HOPFULLY THE CLASS I/O RELEASED. DEF GTCLX JSB EXER? ERROR LDA GTCLX IOR B20K SET BIT13 'DO NOT DEALLOACATE' STA GTCLX JSB EXEC DEF *+5 DEF NAB21 DEF GTCLX DEF * DEF D0 JSB EXER? LDA GTCLX JMP GTCLW,I * NAB19 OCT 100023 GTCLX NOP SPC 2 KLCLX NOP DEALLOCATE CLASS IO WORD STA KLCL3 SAVE CLASS I/O WORD JSB KLCLS RELEASE THE CLASS DEF *+2 DEF KLCL3 JMP KLCLX,I * KLCL3 NOP SPC 2 *WAIT NOP SUSPEND ITSELF FOR SMALL PERIOD OF TIME * STB WAITX SAVE ADDR. OF THE CHECK CONDITION ROUTINE * SSA,RSS MAKE TIME COUNTER NEGATIVE * CMA * STA WAITY *WAIT2 JSB WAITX,I CHECK FOR THE CONDITION * JSB EXEC SUSPEND ITSELF * DEF *+6 FOR .25 SEC. * DEF D12 TIMED EXECUTION (INITIAL OFFSET) * DEF D0 PROGRAM NAME (CALLING PROGRAM) * DEF D1 RESOLUTION CODE (1/100 SEC.) * DEF D0 EXECUTION MULT. (ONLY ONCE) * DEF DM25 TIME (250 MS) * ISZ WAITY CONDITION NOT MET YET, WAIT MORE ? * JMP WAIT2 YES, WAIT LONGER * JMP WAIT,I NO, RETURN TO CALLER * *WAITX NOP *WAITY NOP HED IMAGE / INTERNAL ERROR PROCESSING * ********************************************************************** * FMP ERROR CHECKING ********************************************************************** FMER? NOP FOR FMP STATUS LDA ISTAT RECALL FMP STATUS SSA,RSS ERROR? (NEG. NO.) JMP FMER?,I NO, RETURN CPA DM6 YES, -6? JMP FMER?,I YES, RETURN CCE NO, PROCESS FATAL ERROR CMA,INA MAKE NEG ERROR CODE POS JSB $CVT1 CONVERT ERROR CODE TO ASCII STA FMCOD SAVE IN MESSAGE BUFFER * JSB WRTTY OUTPUT ERROR MESSAGE DEF FMMES DEF D11 * LDA ISTAT GET ERROR CODE CMA,INA JMP FTLER PROCESS FATAL ERROR * FMMES ASC 10, /DCLOG: FMP ERROR - FMCOD BSS 1 * NEVER RETURN TO USER * ********************************************************************** * SMP ERROR CHECKING ********************************************************************** * *SPER? NOP FOR SMP ERROR STATUS * LDA LULOG GET ERROR CODE * SSA,RSS ERROR ? (.LT.0) * JMP SPER?,I NO, RETURN * CPA DM6 POSSIBLY, IS IT CODE -6 * JMP SPER?,I YES, RETURN * HLT 11B BAD ERROR, HALT * ********************************************************************** * TYPE 0 FILE ERROR CHECKING ********************************************************************** * T0ER? NOP CLB IOR B400 SET BIT 8 TO BE SURE THAT SEARCH TERMINATES T0ER1 SLA,ARS CHECK BIT 0, THEN MOVE GET NEW BIT 0 JMP T0ER2 ERROR BIT SET, GO TO PROCESSING INB INCREMENT INDEX JMP T0ER1 * T0ER2 STB TEMP SAVE INDEX ADB .T0TB GET INDEX INTO ERROR PROCESSING TABLE JMP B,I GO TO ERROR HANDLING * * OFFLINE * T0OFL JSB T0MES OUTPUT ERROR MESSAGE DEF OFLMS T0OF2 JSB RWDT0 NO, REWIND TAPE JSB T0WAT WAIT FOR OPERATOR JMP T0ER?,I RETURN * * PARITY ERROR * T0PAR JSB T0MES OUTPUT ERROR MESSAGE DEF PERMS LDA SCOD2 GET OPERATION INDICATOR (INIT TAPE OR LOG DATA) SZA INITIALIZATION? JMP T0OF2 YES, REWIND TAPE AND WAIT FOR OPERATOR T0PA1 JSB BKST0 NO, DATA LOGGING, BACKSPACE LDB T0FNC GET WRITE/EOF INDICATOR SZB WAS FUNCTION OUTPUT EOF? JSB BKST0 YES, DO ANOTHER BACKSPACE AND PARST CHECK TO MAKE SURE THAT TAPE POS IS NOT BAD SZA JMP T0PA2 BAD TAPE POSITION JSB EOFT0 OUTPUT EOF, NO ERROR CHECKING JMP T0OF2 REWIND TAPE AND WAIT FOR OPERATOR * T0PA2 JSB T0POS INDICATE BAD TAPE POSITION JMP T0ER?,I RETURN * PARST OCT 110 CHECK BOT AND REJECT BITS ONLY * * NO WRITE RING * T0WRR JSB T0MES OUTPUT ERROR MESSAGE DEF WRRMS JMP T0OF2 FINISH LIKE OFF LINE * * DOWN OR LOCKED * T0DNL JSB T0MES OUTPUT ERROR MESSAGE JMP DNLMS JMP T0OF2 * * END OF TAPE * T0EOT JSB T0MES OUTPUT MESSAGE DEF EOTMS JMP T0PA1 JSB EOFT0 WRITE END OF FILE, NO ERROR CHECKING T0EO1 JMP T0OF2 REWIND TAPE AND WAIT FOR OPERATOR * * BEGINNING OF TAPE * T0BOT CLA,INA SET A REG TO 2 TO INDICATE BOT INA JMP T0OK1 RETURN * * END OF FILE * T0EOF CLA,INA SET A REG TO 1 TO INDICATE EOF JMP T0OK1 RETURN * * NO ERROR * T0OK CLA SET A REG TO 0 TO INDICATE OK STA ISTAT T0OK1 ISZ T0ER? INCREMENT RETURN ADDR JMP T0ER?,I * * POSITIONING ERROR * T0POS NOP JSB T0MES OUTPUT ERROR MESSAGE DEF POSMS JSB RWDT0 NO, REWIND TAPE JSB T0WAT WAIT FOR OPERATOR ACTION JMP T0POS,I RETURN * * OUTPUT ERROR MESSAGES * T0MES NOP LDA T0MES,I GET MESSAGE ADDR ISZ T0MES LDB .LGM1 MVW D7 MOVE MESSAGE INTO OUTPUT BUFFER JSB WRTTY OUTPUT MESSAGE DEF LGMES DEF D15 JMP T0MES,I RETURN * WRRMS ASC 7,WRITE RING ! OFLMS ASC 7,OFF LINE ! EOTMS ASC 7,END OF TAPE PERMS ASC 7,WRITE FAILURE DNLMS ASC 7,DOWN OR LOCKED POSMS ASC 7,TAPE POSITION * .LGM1 DEF LGME1 .LGM2 DEF LGME2 LGMES ASC 4, /DCLOG: LGME2 ASC 2, LU LUASC BSS 1 ASC 1,, LGME1 ASC 7, * * WAIT FOR OPERATOR ACTION * T0WAT NOP LDA TMCNT GET NO. OF TIMES TO KEEP OUTPUTTING MESSAGE STA T0CNT LDA TMOUT JSB TIMTY SET TIMEOUT T0WA1 JSB WRTTY OUTPUT OPERATOR PROMPT DEF WATMS DEF D42 JSB EXEC READ DEF *+5 DEF D1 DEF LU1 DEF TEMP1 INPUT BUFFER DEF D1 JSB WRTTY OUTPUT LINE FEED DEF LINEF DEF DM1 LDA TEMP1 CHECK RESPONSE CPA GO IS IT GO? JMP T0WA3 YES, CONTINUE CPA ABT NO, IS IT ABORT? JMP T0WA5 YES, GET READY TO DIE * CPA DISAB NO, IS IT DISABLE LOGGING? * JMP XXXXX YES, CLOSE FILE, TURN LOGGING OFF ISZ T0CNT MUST BE TIMEOUT OR INVALID, CHECK FOR MAX. RSS MAX NOT REACHED, KEEP OUTPUTTING MESSAGE JMP T0WA5 MAX REACHED, ABORT * JSB WRTTY OUTPUT ERROR MESSAGE DEF LGMES DEF D15 JMP T0WA1 REQUEST OPERATOR INPUT * T0WA3 CLA JSB TIMTY RESET TIMEOUT TO 0 JMP T0WAT,I RETURN * T0WA5 JSB WRTTY OUTPUT ABORT MESSAGE DEF ABTMS DEF D12 CLA JSB TIMTY RESET TIMEOUT TO 0 LDA D930 GET ABORT CODE JMP FTLER DIE!!! * T0CNT BSS 1 TMCNT DEC -30 NO. OF TIMES TO OUTPUT WARNINGS TMOUT DEC 3000 30 SEC TIME OUT * WATMS ASC 18, /DCLOG: CORRECT THIS SITUATION THEN OCT 6412 ASC 23, TYPE "GO" WHEN DONE, OR "AB" TO ABORT * ABT ASC 1,AB GO ASC 1,GO LINEF OCT 5000 ABTMS ASC 12, /DCLOG: OPERATOR ABORT * ********************************************************************** * FATAL CLASS IO EXEC ERROR ********************************************************************** * EXER? NOP DST ERRE1 SAVE ERROR CODES IN A, B REGS. JSB CNUMO CONVERT ERROR ADDR TO OCTAL ASCII DEF *+3 DEF EXER? DEF ERRE2 * JSB WRTTY OUTPUT: DEF ERREX " /DCLOG: CLASS IO ERROR AABB AT XXXXXX " DEF D19 * LDA D902 JMP FTLER CLOSE LOG FILE AND TERMINATE PROG * ERREX ASC 12, /DCLOG: CLASS IO ERROR ERRE1 BSS 2 ASC 2, AT ERRE2 BSS 3 * ********************************************************************** * VERRIFY THAT THE FILE THAT IS BEING APPENDED TO IS A LOG FILE ********************************************************************** * LGVER NOP LDA LGHED CHECK NO. OF WDS IN FIRST REC IN FILE CPA D16 MUST BE 16 RSS JMP VERER NOT 16, ERROR LDA .LGLB GET LABEL FIELD OF RECORD LDB .DCLB GET ADDR OF LOGGING LABEL CMW D8 MUST MATCH JMP VEROK FIELDS MATCH, RETURN NOP VERER JSB WRTTY OUTPUT ERROR CODE DEF VERMS DEF D22 * LDA ITYPE GET FILE TYPE CODE TO SEE IF FMP OF MAG TAPE SZA JMP VERFM FMP USED, ERROR IS FATAL FOR NOW JSB T0WAT MAGTAPE IS USED, WAIT FOR OPERATOR ACTION JMP LGVER,I * VERFM LDA D903 ERROR 903, FILE IS NOT A DCLOG LOG FILE JMP FTLER * VEROK ISZ LGVER FILE IS OK, INCREMENT RETURN ADDR JMP LGVER,I RETURN * .LGLB DEF LGHED+8 .DCLB DEF DCHED+8 VERMS ASC 22, /DCLOG: THIS FILE IS NOT A DCLOG DATA FILE! * ********************************************************************** * GENERAL ERROR PROCESSING, DETERMINE WHETHER TO TERMINATE OR NOT ********************************************************************** * FTLER STA ISTAT SAVE ERROR CODE LDB SCODE GET FUNCTION SZB INITIALIZE/OPEN? JMP LOGER NO, ERROR DURING LOG OPERATION * *--------------------------------------------------------------------- * OPEN ERROR, ALWAYS FATAL *--------------------------------------------------------------------- * OPNER DST RTPAR SAVE IN RETURN BUFFER JMP LGCL0 CLOSE FILE AND DIE * *--------------------------------------------------------------------- * LOGGING ERROR *--------------------------------------------------------------------- * LOGER DST ERCOD STA ERCOD+2 JSB ABORT JMP EXIT5 * * * .T0TB DEF T0TBL,I INDEX TABLE FOR TYPE 0 FILE ERRORS T0TBL DEF T0OFL DEVICE OFF LINE DEF T0PAR PARITY ERROR DEF T0WRR NO WRITE RING DEF T0DNL IO REQUEST REJECTED, FATAL DEF T0PAR PARITY/TIMING ERROR DEF T0EOT END OF TAPE DEF T0BOT START OF TAPE DEF T0EOF END OF FILE DEF T0OK NO ERROR * * * * TERMINATE THIS PROGRAM WITHOUT ANY OPTION * TO MAKE IT ACTUALLY DORMANT. SPC 1 ABORT NOP LDA .D0 STA .D0+1 SUPPRESS TERMINATE OPTION JMP ABORT,I AND TERMINATE PROGRAM. HED INITIALIZE LOGGING DEVICE * ********************************************************************** * * INITIALIZE LOGGING DEVICE * ********************************************************************** * INLOG NOP INITIALIZE LOG DEVICE * CLA,INA SET INITIALIZE FLAG STA SCOD2 * * TAPE MUST BE POSITIONED AT THE BOT MARKER, OR IMMEDIATELY AFTER * THE EOF MARK OF A PREVIOUS LOG FILE. IN THE LATTER CASE, THE FILE * IS APPENDED TO. A NEW FILE IS NOT CREATED!!!!! * INLO2 JSB STAT0 GET DYNAMIC STATUS JSB T0ER? CHECK FOR ERROR JMP INLO2 USER INTERVENTION REQUIRED, RE-INITIALIZE CPA D2 IS TAPE POSITIONED AT THE BEGINNING? JMP INLO5 YES, CONTINUE LDB SCODE NO, CHECK FUNCTION, MUST BE INITIALIZE (0) SZB JMP INPOS BAD TAPE POSITION, APPEND NOT ALLOWED * JSB BKST0 NO, CHECK TO SEE THAT IS AT THE END OF THE JSB T0ER? PREVIOUS LOG FILE JMP INLO2 ERROR OCCURRED, RE-INITIALIZE CPA D1 IS IT AT THE END OF FILE? JMP INLO3 YES, CONTINUE INPOS JSB T0POS NO, BAD TAPE POSITION JMP INLO2 RE-INITIALIZE AFTER OPERATOR CORRECTION * INLO3 JSB RW2T0 TAPE AT EOF, REWIND TAPE TO CHECK FIRST REC JSB REDT0 READ FILE JSB T0ER? CHECK FOR ERROR JMP INLO2 ERROR, RE-INITIALIZE * JSB LGVER VERIFY THAT THE FIRST REC IS A LOG HEADER JMP INLO2 VERIFICATION ERROR, RE-INITIALIZE * JSB FWDT0 SPACE FORWARD TO EOF JSB T0ER? CHECK FOR ERROR JMP INLO2 ERROR, RE-INITIALIZE * * JSB BKST0 BACKSPACE OVER EOF * JSB T0ER? CHECK FOR ERROR * JMP INLO2 ERROR, RE-INITIALIZE * CPA D1 EOF MUST BE ENCOUNTERED * RSS EOF ENCOUNTERED, CONTINUE * JMP INPOS NO EOF, BAD TAPE POSITION JMP INLO6 * INLO5 JSB DCTIM INIT HEADER BUFFER DEF DCHED+HETIM DEF DCHED+HEYR CCA INCREMENT REEL COUNTER ADA IREEL STA IREEL * LDA .DCHE JSB WRTT0 WRITE HEADER ON TAPE JSB T0ER? CHECK FOR ERROR JMP INLO2 ERROR, RE-INIT JSB EOFT0 OK, OUTPUT END OF FILE JSB T0ER? CHECK FOR ERROR JMP INLO2 ERROR, RE-INIT * INLO6 CLB RESET INITIALIZE FLAG STB SCOD2 JMP INLOG,I RETURN * SPC 2 * HED CONSTANTS AND BUFFERS D950 DEC 950 D930 DEC 930 D921 DEC 921 D920 DEC 920 D911 DEC 911 D910 DEC 910 D902 DEC 902 D903 DEC 903 D901 DEC 901 DM64 DEC -64 DM9 DEC -9 DM7 DEC -7 DM6 DEC -6 DM4 DEC -4 DM1 DEC -1 D0 DEC 0 D1 DEC 1 D2 DEC 2 D3 DEC 3 D5 DEC 5 D6 DEC 6 D7 DEC 7 D8 DEC 8 D10 DEC 10 D11 DEC 11 D12 DEC 12 D14 DEC 14 D15 DEC 15 D16 DEC 16 D18 DEC 18 D19 DEC 19 D20 DEC 20 D22 DEC 22 D42 DEC 42 D45 DEC 45 D128 DEC 128 D144 DEC 144 B77 OCT 77 B100 OCT 100 B200 OCT 200 B400 OCT 400 B500 OCT 500 B600 OCT 600 B1300 OCT 1300 B1.47 OCT 17777 B20K OCT 20000 * BIT15 OCT 100000 SPC 1 TEMP NOP TEMP1 NOP PARM1 NOP PARM2 NOP SPC 1 C.TAB DEF *+1,I DEF LGOPN 0 - LGOPN DEF LGCLS 1 - LGCLS DEF LGLOG 2 - LGLOG DEF LGVFY 3 - LGVFY HED BUFFERS USE TO COMMUNICATE WITH THE USER PROGRAM * DO NOT DISTURB NEXT LOCATIONS * .IMGE DEF IMGER .ERCO DEF ERCOD .LGHE DEF LGHED .DCHE DEF DCHED * * SCODE NOP BUFFER USED TO GET THE REQUEST ECLAS NOP PARM BSS 2 IMGER BSS 5 ERROR CODE FOR IMAGE OPERATION LGHED BSS 7 LOG RECORD HEADER (ALSO PART OF IMGER) BUF BSS 585 * ERCOD BSS 12 STATUS RETURN BUFFER * DCHED DEC 16 FILE HEADER BUFFER BSS 5 TIME BSS 1 YEAR IREEL BSS 1 REEL # ASC 8,TMS LOG : DCLOG * * OFFSETS INTO DCHED * HECNT EQU 0 OFFSET INTO BUFFER COUNT HETIM EQU 1 OFFSET INTO TIME BUFFER HEYR EQU 6 OFFSET INTO YEAR SPC 3 IDCB BSS 144 FMP DCB SPC 2 SPC 3 UNS * ORG * DEFINE LAST LOCATION END