.TITLE BILLER -- RSX11M BILLING PROGRAM .IDENT /V1.0/ ; ;THIS PROGRAM TAKES THE FILE LOG.SYS WRITTEN BY MODIFIED HEL AND BYE ;PROGRAMS AND TOTALS THE CONNECT TIMES FOR EACH PROJECT LOG ENTRY ;WITHIN SPECIFIED DATES. A SINGLE BILLING RATE IS APPLIED TO EACH TOTAL ;AND THE RESULTING RECORD IS WRITTEN TO THE FILE BILL.LST IN THE ;USER'S DIRECTORY. AFTER BILLING IS FINISHED, THE BILLED ENTRIES ;MAY OPTIONALLY BE DELETED AND THE LOG.SYS FILE COMPRESSED. ; ; 9/11/78 DANIEL STEINBERG ;GET THE UTILITY SYSTEM SUBROUTINES AND DEFINE THEM .MCALL PUSH,POP .MCALL TIODEF,FINIT,READ,WRITE,GET,PUT,SPOOL,CDTB,CBTA,SLAVE,NOSLAVE TIODEF FINIT READ WRITE GET PUT SPOOL CDTB CBTA SLAVE NOSLAVE .MCALL EXIT$S .PSECT BILDAT,RW,D,REL,CON CR=15 LF=12 .NLIST BEX ;SWITCH VALUES: SWSL:: .BYTE 0 ;0=SPOOL LOG.SYS BEFORE BILLING SWSB:: .BYTE 0 ;0=SPOOL BILL.LST AFTER BILLING SWSR:: .BYTE 0 ;0=SPOOL LOG.SYS AFTER BILLING SWM:: .BYTE -1 ;0=MARK BILLED ENTRIES FOR DELETION SWW:: .BYTE 0 ;0=WRITEBACK TO LOG.SYS (-1=CREATE NEW LOG.SYS) DATLO:: .ASCIZ \ 1/ 1/00\ DATHI:: .ASCIZ \12/31/99\ .EVEN DATLOW:: .WORD 0 ;LOW END DATE CONVERTED TO SINGLE NUMBER DATHIG:: .WORD 37200. ;HIGH END DATE DOLLS:: .WORD 12. ;DOLLARS IN BILLING RATE CENTS:: .WORD 0 ;CENTS IN BILLING RATE BUF:: .BLKB 64. ;I/O BUFFER .PSECT BILINS,RO,I,REL,CON BMSG: .ASCIZ /BILLING PROGRAM/ DUN: .ASCIZ /BILLER EXIT/ NOLT: .ASCIZ /***SEGMENT BILLTIO DID NOT LOAD***/ NOLW: .ASCIZ /***SEGMENT BILLWRK DID NOT LOAD***/ .LIST BEX .EVEN TIOP: .BYTE 3,0 .RAD50 /TIOSEG/ WRKP: .BYTE 3,0 .RAD50 /WRKSEG/ BILLER:: CALL FINIT ;INITIALIZE FCS MOV #BMSG,R0 CALL WRITE ;PRINT STARTUP MSG 1$: MOV #TIOP,R0 CALL $LOAD ;LOAD TIO SEGMENT BCS 10$ CALL TIO ;DO TERMINAL I/O BCS 5$ ;CTRL-Z...EXIT MOV #WRKP,R0 CALL $LOAD BCS 11$ CALL BILL BR 1$ 5$: MOV #DUN,R0 CALL WRITE EXIT$S 10$: MOV #NOLT,R0 CALL WRITE BR 5$ 11$: MOV #NOLW,R0 CALL WRITE BR 5$ ;SUBROUTINES USED BY BOTH SEGMENTS: ; ;MOV8 MOVES 8 BYTES ; INPUT--R0 SRC PTR ; R1 DEST PTR ; OUTPUT-R0 UNCHANGED ; R1 UPDATED ;USES R2 MOV8:: PUSH R0 MOV #8.,R2 1$: MOVB (R0)+,(R1)+ SOB R2,1$ POP R0 RETURN ;MOVRAT CONVERTS THE BILLING RATE TO ASCII ; INPUTS: R0 - PTR TO DESTINATION ; OUTPUT: R0 UPDATED, ##.## IN STRING MOVRAT:: MOV DOLLS,R1 ;SET BILLING RATE MOV #11012,R2 CALL CBTA ;SET DOLLARS IN VALUE STRING MOV CENTS,R1 MOVB #'.,(R0)+ ;SET CENTS IN STRING MOV #11012,R2 JMP CBTA .END BILLER