.TITLE TIME STAMP SUMMARY PROGRAM ; ;THIS PROGRAM USES THE FILE 'TIMSTMP.DAT' TO CREATE A SUMMARY RECORD ;OF THE AMOUNT OF TIME FOR; MACHINE UP-DOWN, TIMSHARING UP-DOWN, ;NUMBER OF IPL'S, AVERAGE RECOVERY TIME AND TOTAL TIME THE SYSTEM ;COULD HAVE BEEN UP. ; .MCALL $STRUC,FSRSZ$,FDBDF$,FDRC$A,FDOP$A,OPEN$W .MCALL FDAT$A,NMBLK$,FINIT$,OPEN$R,OPEN$A,CLOSE$ .MCALL CALL,EXIT$S,QIOW$S,DELET$,GET$,PUT$ $STRUC ;STRUCTURED MACRO MCALL INLUN = 1 ;ASSIGN LUN #1 TO INPUT OUTLUN = 2 ;ASSIGN LUN #2 TO OUTPUT FSRSZ$ 2 ;TWO FILES TO BE OPENED SUMIN: FDBDF$ ;INPUT FDB FDRC$A ,INBUF,16. ;INPUT RECORD INFO FDOP$A INLUN,DESCR,INFILE ;INPUT OPEN INFO SUMOUT: FDBDF$ ;OUTPUT FDB FDAT$A R.FIX,,50. ;OUTPUT RECORD INFO FDRC$A ,OUTBUF,50. ;OUTPUT RECORD INFO FDOP$A OUTLUN,DESCR,OTFILE ;OUTPUT OPEN INFO INFILE: NMBLK$ TIMSTMP,DAT ;INPUT FILE NAME OTFILE: NMBLK$ TIMSUMM,DAT ;OUTPUT FILE NAME DESCR: .WORD 0,0 ;DEVICE FIELD .WORD DIRSZ,DIRNM ;DIRECTORY FIELD .WORD 0,0 ;NAME FIELD DIRNM: .ASCII /[1,5]/ ;DIRECTORY VALUE DIRSZ=.-DIRNM ;DIRECTORY VALUE SIZE .EVEN .PAGE INBUF: .BLKB 2. ;INPUT YEAR IBMTH: .BLKB 2. ;INPUT MONTH IBDAY: .BLKB 2. ;INPUT DAY IBHR: .BLKB 2. ;INPUT HOUR IBMIN: .BLKB 2. ;INPUT MINUTE TYPE: .BLKW 1. ;RECORD TYPE 01-06 .BLKW 2. ;RESERVED FOR FUTURE USE OUTBUF: .BLKB 2. ;OUTPUT BEGIN YEAR OBMNTH: .BLKB 2. ;OUTPUT BEGIN MONTH OBDAY: .BLKB 2. ;OUTPUT BEGIN DAY OBHR: .BLKB 2. ;OUTPUT BEGIN HOUR OBMIN: .BLKB 2. ;OUTPUT BEGIN MINUTE OBIPL: .BLKB 2. ;# OF IPL'S FOR THE DAY OBTSUH: .BLKB 2. ;OUTPUT IAS UP HOURS OBTSUM: .BLKB 2. ;OUTPUT IAS UP MINUTES OBTSDH: .BLKB 2. ;OUTPUT IAS DOWN HOURS OBTSDM: .BLKB 2. ;OUTPUT IAS DOWN MINUTES OBMUH: .BLKB 2. ;OUTPUT MACHINE UP HOURS OBMUM: .BLKB 2. ;OUTPUT MACHINE UP MINUTES OBMDH: .BLKB 2. ;OUTPUT MACHINE DOWN HOURS OBMDM: .BLKB 2. ;OUTPUT MACHINE DOWN MINUTES OBAMHR: .BLKB 2. ;OUTPUT ALLOCATED MACHINE HOURS OBAMMN: .BLKB 2. ;OUTPUT ALLOCATED MACHINE MINUTES OBMTRH: .BLKB 2. ;OUTPUT MEAN TIME FOR RECOVERY HOURS OBMTRM: .BLKB 2. ;OUTPUT MEAN TIME FOR RECOVERY MINUTES OBTSAH: .BLKB 2. ;OUTPUT IAS ALLOCATED HOURS OBTSAM: .BLKB 2. ;OUTPUT IAS ALLOCATED MINUTES OBEYR: .BLKB 2. ;OUTPUT END YEAR OBEMTH: .BLKB 2. ;OUTPUT END MONTH OBEDAY: .BLKB 2. ;OUTPUT END DAY OBEHR: .BLKB 2. ;OUTPUT END HOUR OBEMIN: .BLKB 2. ;OUTPUT END MINUTE .PAGE ASHR: .ASCII /1B/ ;# 1 ASDAY: .ASCII /24BB/ ;# 24 ASMIN: .ASCII /60BB/ ;# 60 ASCHMN: .ASCII /5B/ ;# 5 ZERFIL: .ASCII /0B/ ;# 0 HLDHR: .BLKB 2. ;HOLD HOUR HLDMIN: .BLKB 2. ;HOLD MINUTE IASUHR: .BLKB 2. ;HOLD IAS UP HOUR IASUMN: .BLKB 2. ;HOLD IAS UP MINUTE IPLHR: .BLKB 2. ;HOLD INITIAL IPL HOUR IPLMIN: .BLKB 2. ;HOLD INITIAL IPL MINUTE SADAY: .BLKB 2. ;HOLD BINARY #1 SAHR: .WORD 0 ;HOLD BINARY #24 SAMIN: .WORD 0 ;HOLD BINARY #60 SCHAMN: .WORD 0 ;HOLD BINARY #5 FILZER: .WORD 0 ;HOLD BINARY #0 WAHR: .WORD 0 ;WORK AREA HOUR WAMIN: .WORD 0 ;WORK AREA MINUTE TYP1: .ASCII /01/ ;USED IN TYPE COMPARISON TYP2: .ASCII /02/ ; TYP3: .ASCII /03/ ; TYP4: .ASCII /04/ ; TYP5: .ASCII /05/ ; TYP6: .ASCII /06/ ;END COMPARISON AREA YEAR: .BYTE 0 ;WORK AREA FOR CONVERSION .BLKB 3. ; YEARA: .BLKB 2. ; .BYTE 0 ; MNTH: .BLKB 3. ; MNTHA: .BLKB 2. ; .BYTE 0 ; DAY: .BLKB 3. ; DAY1: .BLKB 2. ; .BYTE 0 ; HR: .BLKB 3. ; HR1: .BLKB 2. ; .BYTE 0 ; MIN: .BLKB 3. ; MIN1: .BLKB 2. ;END CONVERSION WORK AREA EOF: .WORD 2. ;END OF FILE FLAG PSWT: .WORD 0. ;PROBLEM SWITCH SWT: .WORD 0. ;SWITCH FOR IAS .PAGE MES1: .ASCII <15> <12> /ERR ON OPEN$R SUMIN NOTIFY SYSTEMS PGMMR/ M1L=.-MES1 .EVEN MES2: .ASCII <15> <12> /ERR OPEN$W SUMOUT NOTIFY SYSTEM PGMMR/ M2L=.-MES2 .EVEN MES3: .ASCII <15> <12> /ERR CLOSE$ SUMOUT NOTIFY SYSTEM PGMMR/ .ASCII <15> <12> /FILE TIMSTMP.DAT NOT DELETED/ M3L=.-MES3 .EVEN MES4: .ASCII <15> <12> /ERR CLOSE$ FOR SUMIN NOTIFY SYSTEM PGMMR/ M4L=.-MES4 .EVEN MES5: .ASCII <15> <12> /ERR DELET$ FOR SUMIN NOTIFY SYSTEM PGMMR/ .ASCII <15> <12> /FILE TIMSTMP.DAT NOT DELETED/ M5L=.-MES5 .EVEN MES6: .ASCII <15> <12> /** PROCESSING FOR TIMSUM COMPLETED **/ M6L=.-MES6 .EVEN MES7: .ASCII <15> <12> /ERR *OPEN$A* SUMOUT NOTIFY SYSTEMS PGMMR/ M7L=.-MES7 .EVEN .PAGE START: FINIT$ ;INITIALIZE MAIN: CALL CNVCON ;CONVERT CONSTANTS CALL MVZFIL ;ZERO FILL OUTPUT FIELDS CALL OPENFL ;OPEN INPUT FILE $IF ;-CHECK PSWT $WHILE ;--LOOP CONTROL CALL READEM ;--READ INPUT FILE $END ;--END READ LOOP CALL OPNOUT ;-OPEN OUTPUT FILE CALL CNVMOV ;-CONVERT TO ASCII AND ;-MOVE TO OUTPUT FIELDS CALL PRTCLD ;-PRINTS CLOSES AND ;-DELETES INPUT FILE $END ;-END PSWT CHECK EXIT$S ;EXIT PROGRAM .PAGE ; ;OPEN INPUT FILE AND ERROR CHECK SUBROUTINE ; OPENFL: OPEN$R #SUMIN ;OPEN INPUT FILE $IF <,CS> ;-CHECK FOR ERR ON OPEN$R QIOW$S #IO.WLB,#5,#1,,,,<#MES1,#M1L> ;-DISPLAY ERR MSG1 MOV #1.,PSWT ;-SET PSWT $END ;-END PSWT CHECK RETURN ;RETURN TO CALLING ROUTINE ; ;OPEN OUTPUT FILE AND ERROR CHECK SUBROUTINE ; OPNOUT: $IF ;-CHECK PSWT OPEN$A #SUMOUT ;-OPEN OUTPUT FILE TO APPEND $IF <,CS> ;--CHECK FOR ERROR ON OPEN$A $IF ;---CHECK FOR NO SUCH FILE OPEN$W #SUMOUT ;---OPEN OUTPUT FILE TO CREATE $IF <,CS> ;----CHECK FOR ERR ON OPEN$W QIOW$S #IO.WLB,#5,#1,,,,<#MES2,#M2L> ;----DISPLAY ERR MSG2 $END ;----END ERR CHECK ON OPEN$W $ELSE ;---ELSE FOR NO SUCH FILE QIOW$S #IO.WLB,#5,#1,,,,<#MES7,#M7L> ;---DISPLAY ERR MSG7 CALL CLSUMI ;---CLOSE INPUT FILE $END ;---END NO SUCH FILE CHECK $END ;--END ERR CHECK FOR OPEN$A $END ;-END PSWT CHECK RETURN ;RETURN TO CALLING ROUTINE ; ;WRITE OUTPUT FILE, CLOSE FILES AND CHECK FOR ERRORS ; PRTCLD: $IF ;-CHECK PSWT PUT$ #SUMOUT ;-WRITE SUMMARY RECORD CLOSE$ #SUMOUT ;-CLOSE OUTPUT FILE $IF <,CS> ;--CHECK FOR ERR ON CLOSE$ QIOW$S #IO.WLB,#5,#1,,,,<#MES3,#M3L> ;--DISPLAY ERR MSG3 CALL CLSUMI ;--CLOSES FILE SAVE FOR RERUN $ELSE ;--ELSE NO ERR ON CLOSE$ DELET$ #SUMIN ;--DELETE INPUT FILE $IF <,CS> ;---ERR CHECK FOR DELET$ QIOW$S #IO.WLB,#5,#1,,,,<#MES5,#M5L> ;---DISPLAY ERR MSG5 $ELSE ;---ELSE NO ERR FOR DELET$ QIOW$S #IO.WLB,#5,#1,,,,<#MES6,#M6L> ;---DISPLAY MSG6 $END ;---END ERR CHECK DELET$ $END ;--END ERR CHECK CLOSE$ $END ;-END PSWT CHECK RETURN ;RETURN TO CALLING ROUTINE ; ; CLOSE INPUT FILE AND ERROR CHECK SUBRTN ; CLSUMI: CLOSE$ #SUMIN ;CLOSE INPUT FILE $IF <,CS> ;-ERR CHECK FOR CLOSE$ QIOW$S #IO.WLB,#5,#1,,,,<#MES4,#M4L> ;-DISPLAY ERR MSG4 $END ;-END ERR CHECK FOR CLOSE$ RETURN ;RETURN TO CALLING SUBRTN .PAGE ; ; CONVERT CONSTANT ASCII DATA TO BINARY FORMAT ; CNVCON: MOV #ASHR,R0 ;ADDR OF # TO CONVERT JSR PC,$CDTB ;CONVERSION TO BINARY SUBRTN MOV R1,SAHR ;CONVERTED # TO SAVE AREA MOV #ASDAY,R0 ;ADDR OF # TO CONVERT JSR PC,$CDTB ;CONVERSION SUBRTN MOV R1,SADAY ;CONVERTED # TO SAVE AREA MOV #ASMIN,R0 ;ADDR OF # TO CONVERT JSR PC,$CDTB ;CONVERSION TO BINARY SUBRTN MOV R1,SAMIN ;CONVERTED # TO SAVE AREA MOV #ASCHMN,R0 ;ADDR OF # TO CONVERT JSR PC,$CDTB ;CONVERSION TO BINARY SUBRTN MOV R1,SCHAMN ;CONVERTED # TO SAVE AREA MOV #ZERFIL,R0 ;ADDR OF # TO CONVERT JSR PC,$CDTB ;CONVERSION TO BINARY SUBRTN MOV R1,FILZER ;CONVERTED # TO SAVE AREA RETURN ;RETURN TO MAIN ; ;MOV CONVERTED BINARY TO ASCII # TO OUTPUT BUFFER ; CNVMOV: $IF ;-CHECK PSWT MOV #OBIPL,R4 ;-SET UP ADDR FOR LOOP MOV #15.,R5 ;-R5 SET FOR LOOP COUNT $WHILE ;--LOOP CONTROL CONVERSION MOV (R4),R1 ;--# TO CONVERT TO R1 CALL CNVER2 ;--CONVERSION TO BINARY SUBRTN MOV YEARA,(R4)+ ;--CONVERTED # OUTPUT BUFFER DEC R5 ;--SUB ONE FROM LOOP COUNTER $END ;--END OF CONVERSION LOOP $END ;-END OF CHECK PSWT RETURN ;RETURN TO CALLING ROUTINE ; ; CONVERT BINARY TO ASCII FORMAT ; CNVERT: MOV #YEAR,R0 ;OUTPUT ADDR FOR LOOP INC R0 ;ADD 1 TO ADDR MOV #INBUF,R5 ;INPUT ADDR FOR LOOP MOV #5.,R4 ;LOOP COUNTER $WHILE ;-LOOP CONTROL MOV (R5)+,R1 ;-INPUT # TO R1 MOV #1.,R2 ;-R2 USED AS A FLAG JSR PC,$CBDMG ;-BINARY TO DECIMAL SUBRTN DEC R4 ;-SUB 1 FROM LOOP COUNTER INC R0 ;-ADD 1 TO OUTPUT ADDR $END ;-END CONVERSION LOOP RETURN ;RETURN TO CALLING RTN ; ; CONVERSION OF BINARY TO DECIMAL WITH NO LOOP SUBRTN ; CNVER2: MOV #YEAR,R0 ;OUTPUT ADDR INC R0 ;ADD 1 TO OUTPUT ADDR MOV #1.,R2 ;SET CONVERSION FLAG JSR PC,$CBDMG ;BINARY TO DECIMAL SUBRTN RETURN ;RETURN TO CALLING RTN .PAGE ; ; READ A RECORD AND CHECK THE TYPE, FOR THE CORRECT TYP SUBRTN ; READEM: GET$ #SUMIN ;READ THE INPUT FILE $IF ;-CHECK FOR TYP4 RECORD CALL IBTOHA ;-HR-MIN TO HLD AREA CALL TY4REC ;-PROCESS TYP4 RECORD $ELSE ;-ELSE NOT TYP4 $IF ;--CHECK FOR TYP1 CALL IBTOHA ;--HR-MIN TO HOLD AREA CALL TY1REC ;--PROCESS TYP1 $ELSE ;--ELSE NOT TYP1 $IF ;---CHECK FOR TYP2 CALL TY2REC ;---PROCESS TYP2 CALL IBTOHA ;---HR-MIN TO HOLD AREA $ELSE ;---ELSE NOT TYP2 $IF ;----CHECK FOR TYP3 CALL TY3REC ;----PROCESS TYP3 CALL IBTOHA ;----HR-MIN TO HOLD AREA $ELSE ;----ELSE NOT TYP3 $IF ;-----CHECK FOR TYP5 CALL IBTOHA ;-----HR-MIN TO HOLD AREA CALL TY5REC ;-----PROCESS TYP5 $ELSE ;-----ELSE NOT TYP5 CALL TY6REC ;-----PROCESS TY6 MOV #1.,EOF ;-----SET END FILE FLAG $END ;-----END CHECK TYP5 $END ;----END CHECK TYP3 $END ;---END CHECK TYP2 $END ;--END CHECK TYP1 $END ;-END CHECK TYP4 RETURN ;RETURN TO CALLING SUBRTN ; ; MOVE INPUT HOUR AND MINUTE TO HOLD AREA ; IBTOHA: MOV IBHR,HLDHR ;INPUT TO HOLD AREA HOUR MOV IBMIN,HLDMIN ;INPUT TO HOLD AREA MINUTE RETURN ;RETURN TO CALLING ROUTINE .PAGE ; ; PROCESS ROUTINE FOR TYPE 1 RECORDS ; TY1REC: CALL CNVERT ;BINARY TO DECIMAL SUBRTN MOV IBHR,IPLHR ;KEEP INITIAL IPL HOUR MOV IBMIN,IPLMIN ;KEEP INITIAL IPL MINUTE MOV YEARA,OUTBUF ;CONVERTED YEAR TO OUTPUT MOV MNTHA,OBMNTH ;CONVERTED MONTH TO OUTPUT MOV DAY1,OBDAY ;CONVERTED DAY TO OUTPUT MOV HR1,OBHR ;CONVERTED HOUR TO OUPUT MOV MIN1,OBMIN ;CONVERTED MINUTE TO OUTPUT RETURN ;RETURN TO CALLING SUBRTN ; ; PROCESS FOR TYPE 2 RECORDS ; TY2REC: MOV IBHR,WAHR ;-INPUT TO WORK AREA MOV IBMIN,WAMIN ;-INPUT TO WORK AREA CALL CHKTIM ;-TEST WORK < HOLD SUBRTN SUB HLDHR,WAHR ;-WORK MINUS HOLD HOURS ADD WAHR,OBMDH ;-ACCUMULATE TOTAL DOWN HOURS SUB HLDMIN,WAMIN ;-WORK MINUS HOLD MINUTES ADD WAMIN,OBMDM ;ACCUMULATE MACHINE DOWN MIN $IF ;-CHECK IAS UP ADD WAHR,OBTSDH ;-ACCUMULATE IAS DOWN HOURS ADD WAMIN,OBTSDM ;-ACCUMULATE IAS DOWN MIN $END ;-END CHECK IAS UP ADD SAHR,OBIPL ;ACCUMULATE TOTAL IPL'S RETURN ;RETURN TO CALLING SUBRTN ; ; PROCESS TYPE 3 RECORDS ; TY3REC: $IF ;-CHECK IAS UP MOV IBMIN,WAMIN ;-INPUT TO WORK AREA MIN MOV IBHR,WAHR ;-INPUT TO WORK AREA HR $IF ;--TEST WORK < IAS UP MIN ADD SAMIN,WAMIN ;--ADD 60 TO WORK MIN SUB SAHR,WAHR ;--SUB ONE FROM WORK HR $END ;--END TEST WORK < IAS UP MIN $IF ;--TEST WORK < IAS UP HOUR ADD SADAY,WAHR ;--ADD 24 TO WORK HOUR $END ;--END TEST WORK < IAS UP HOUR SUB IASUHR,WAHR ;-IAS UP MINUS WORK HOUR SUB IASUMN,WAMIN ;-IAS UP MINUS WORK MINUTE ADD WAHR,OBTSAH ;-ACCUMULATE IAS ALLOCATED HOURS ADD WAMIN,OBTSAM ;-ACCUMULATE IAS ALLOCATED MIN. $END ;-END CHECK IAS UP $IF ;-TEST IAS DOWN PRIOR MOV IBHR,IASUHR ;-INPUT TO IAS UP HOUR MOV IBMIN,IASUMN ;-INPUT TO IAS UP MINUTE $END ;-END TEST IAS DOWN PRIOR MOV #1.,SWT ;SET IAS UP SWT RETURN ;RETURN TO CALLING RTN. .PAGE ; ; PROCESS TYPE 4 RECORDS SCHEDULED ; TY4REC: ADD SCHAMN,OBMUM ;ADD 5 TO MACHINE UP MIN. $IF ;-CHECK IAS UP ADD SCHAMN,OBTSUM ;-ADD 5 TO IAS UP MIN. $END ;-END CHECK IAS UP RETURN ;RETURN TO CALLING RTN. ; ; PROCESS TYPE 5 RECORDS IAS TAKEN DOWN ; TY5REC: MOV #0.,SWT ;SET IAS SWT TO OFF MOV IBHR,WAHR ;INPUT TO WORK AREA HOUR MOV IBMIN,WAMIN ;INPUT TO WORK AREA MIN. $IF ;-TEST WORK < IAS UP MIN. ADD SAMIN,WAMIN ;-ADD 60 TO WORK AREA MIN. SUB SAHR,WAHR ;-SUB 1 FROM WORK AREA HOUR $END ;-END TEST WORK < IAS UP MIN. $IF ;-TEST WORK < IAS UP HOUR ADD SADAY,WAHR ;-ADD 24 TO WORK AREA HOUR $END ;-END TEST WORK < IAS UP HOUR SUB IBMIN,WAMIN ;WORK MINUS INPUT MIN. SUB IBHR,WAHR ;WORK MINUS INPUT HOUR ADD WAMIN,OBTSAM ;ACCUMULATE IAS ALLOCATED MIN. ADD WAHR,OBTSAH ;ACCUMULATE IAS ALLOCATED HOURS RETURN ;RETURN TO CALLING RTN. .PAGE ; ; PROCESS TYPE 6 RECORDS END OF DAY ; TY6REC: MOV IBHR,WAHR ;INPUT TO WORK AREA HOUR MOV IBMIN,WAMIN ;INPUT TO WORK AREA MINUTE $IF ;-TEST WORK < FIRST IPL MIN. ADD SAMIN,WAMIN ;-ADD 60 TO WORK AREA MIN. SUB SAHR,WAHR ;-SUB 1 FROM WORK AREA HOUR $END ;-END TEST WORK < FIRST IPL MIN. $IF ;-TEST WORK < FIRST IPL HOUR ADD SADAY,WAHR ;-ADD 24 TO WORK HOUR $END ;-END TEST WORK < FIRST IPL HOUR SUB IPLMIN,WAMIN ;SUB FIRST IPL FROM WORK MIN. SUB IPLHR,WAHR ;SUB FIRST IPL FROM WORK HOUR MOV WAMIN,OBAMMN ;TOTAL ALLOCATED MACH. MIN. MOV WAHR,OBAMHR ;TOTAL ALLOCATED MACH. HOUR CALL CNVERT ;BINARY TO DECIMAL SUB RTN MOV YEARA,OBEYR ;CONVERTED YEAR TO OUTPUT MOV MNTHA,OBEMTH ;CONVERTED MONTH TO OUTPUT MOV DAY1,OBEDAY ;CONVERTED DAY TO OUTPUT MOV HR1,OBEHR ;CONVERTED HOUR TO OUTPUT MOV MIN1,OBEMIN ;CONVERTED MIN TO OUTPUT $IF ;-TEST IAS UP MIN > 60 CLR R0 ;-CLEAR R0 MOV OBTSUM,R1 ;-IAS UP MIN TO R1 DIV SAMIN,R0 ;-DIVIDE R1 BY 60 MOV R1,OBTSUM ;-REMAINING TO IAS UP MIN. ADD R0,OBTSUH ;-QUOTIENT ADDED TO IAS UP HOUR $END ;-END IAS UP MIN > 60 $IF ;-TEST IAS DOWN MIN > 60 CLR R0 ;-CLEAR R0 MOV OBTSDM,R1 ;-IAS DOWN MIN. TO R1 DIV SAMIN,R0 ;-DIVIDE R1 BY 60 MOV R1,OBTSDM ;-REMAINING TO IAS DOWN MIN. ADD R0,OBTSDH ;-ADD QUOTIENT TO IAS DOWN HOUR $END ;-END TEST IAS DOWN MIN > 60 $IF ;-TEST MACHINE UP MIN > 60 CLR R0 ;-CLEAR R0 MOV OBMUM,R1 ;-MACHINE UP MINUTES TO R1 DIV SAMIN,R0 ;-DIVIDE R1 BY 60. MOV R1,OBMUM ;-REMAINDER TO MACHINE UP MIN. ADD R0,OBMUH ;-ADD QUOTIENT TO MACHINE UP HR $END ;-END TEST MACHINE UP HOUR $IF ;-TEST MACHINE DOWN MIN > 60 CLR R0 ;-CLEAR R0 MOV OBMDM,R1 ;-MACHINE DOWN MIN TO R1 DIV SAMIN,R0 ;-DIVIDE R1 BY 60. MOV R1,OBMDM ;-REMAINDER TO MACHINE DOWN MIN ADD R0,OBMDH ;-ADD QUOTIENT TO MACH. DOWN HR $END ;-END TEST MACHINE DOWN MIN $IF ;-TEST IPL NOT = ZERO CLC ;-CLEAR CARRY BIT MOV OBMDM,WAMIN ;-MACH DOWN MIN TO WORK AREA MOV OBMDH,R1 ;-MACH DOWN HOURS TO R1 MUL SAMIN,R1 ;-MULTIPLY R1 BY 60. ADD R1,WAMIN ;-ADD TOTAL MIN TO WORK AREA CLR R0 ;-CLEAR R0 MOV WAMIN,R1 ;-WORK AREA MIN TO R1 DIV OBIPL,R0 ;-DIVIDE BY #IPL'S MOV R0,R1 ;-MOV AVERAGE MIN TO R1 CLR R0 ;-CLEAR R0 DIV SAMIN,R0 ;-DIVIDE R1 BY 60 MOV R0,OBMTRH ;-QUOTIENT TO MEAN TIME REC. HR. MOV R1,OBMTRM ;-REMAINDER TO MEAN TIME REC MIN $END ;-END CHECK IPL NOT = ZERO RETURN ;RETURN TO CALLING ROUTINE .PAGE ; ; CHECK WORK AREA MINUTE LESS THAN HOLD AREA MINUTE IF IT IS THIS ROUTINE ; WILL ADD 60 TO MINUTE AREA AND SUBTRACT 1 FROM HOUR AREA. THEN CHECK HOUR ; AREA IF LESS THAN HOLD AREA HOUR, ADD 24 TO WORK AREA HOUR. ; CHKTIM: $IF ;-TEST WORK < HOLD MIN ADD SAMIN,WAMIN ;-ADD #60 TO WORK MIN SUB SAHR,WAHR ;-MINUS 1 FROM WORK HOUR $END ;-END TEST WORK < HOLD MIN $IF ;-TEST WORK < HOLD HOUR ADD SADAY,WAHR ;-ADD #24 TO WORK HOUR $END ;-END TEST WORK < HOLD HOUR RETURN ;-RETURN TO CALLING ROUTINE ; ; ZERO OUTPUT FIELDS ; MVZFIL: MOV FILZER,OBIPL ;ZERO IPL MOV FILZER,OBMUH ;ZERO MACHINE UP HOURS MOV FILZER,OBTSAH ;ZERO IAS ALLOCATED HOURS MOV FILZER,OBTSAM ;ZERO IAS ALLOCATED MIN. MOV FILZER,OBAMMN ;ZERO MACHINE ALLOCATED MIN. MOV FILZER,OBAMHR ;ZERO MACHINE ALLOCATED HOUR MOV FILZER,OBMTRH ;ZERO MEAN TIME RECOVERY HOUR MOV FILZER,OBMTRM ;ZERO MEAN TIME RECOVERY MIN MOV FILZER,OBMUM ;ZERO MACHINE UP MIN. MOV FILZER,OBMDH ;ZERO MACHINE DOWN HOURS MOV FILZER,OBMDM ;ZERO MACHINE DOWN MIN. MOV FILZER,OBTSUH ;ZERO IAS UP HOUR MOV FILZER,OBTSUM ;ZERO IAS UP MIN. MOV FILZER,OBTSDH ;ZERO IAS DOWN HOUR MOV FILZER,OBTSDM ;ZERO IAS DOWN MINUTES RETURN ;RETURN TO CALLING ROUTINE .END START ;END OF PROGRAM