.TITLE V6TOV7 .IDENT /V7.01/ ;******************************************************************* ; ; V6TOV7 THIS PROGRAM IS RUN TO CONVERT THE SYSTEM ACCOUNT ; FILE FROM THE FORMAT USED WITH VERSION 6 OF THE ; ACCOUNTING SYSTEM TO THE FORMAT USED WITH VERSION 7. ; IT SHOULD BE RUN ONCE ONLY AT SYSTEM BOOT BEFORE ; BRINGING UP V7 BEFORE ACCOUNTING IS ENABLED (IE. START ; A NON-ACCOUTING RUN, RUN V6TOV7 AND THEN START AN ; ACCOUNTING RUN, ALL WITHIN THE STARTUP SEQUENCE). ; UNDER RSX-11M V4.0, RUN V3TOV4.TSK AFTER RUNNING THIS ; PROGRAM, AS AN EXTRA CONVERSION IS REQUIRED. ; ; VERSION: V7 APRIL 1981 ; ; STEVE THOMPSON SCHOOL OF CHEMICAL ENGINEERING ; OLIN HALL ; CORNELL UNIVERSITY ; ITHACA NY 14853 ; ; THE TASK IMAGE IS IN ACCGEN.ULB: ; ; LBR>V6TOV7.TSK=ACCGEN.ULB/EX:V6TOV7 ; ; REVISION HISTORY ; ---------------- ; ; SMT814 12-APR-82 ADDED COMMENTS NOTING EXTRA ACTION ; REQUIRE FOR RSX-11M V4.0 ; ;****************************************************************** .MCALL QIOW$,DIR$,EXIT$S .MCALL FINIT$ ACTDF$ <:>,<=> ; DEFINE ADDITIONAL ACCOUNT FILE OFFSETS ; (THIS IS VERSION 7 VALUES) ; ; LOCAL DATA ; LUN1 = 1 ; TERMINAL I/O LUN2 = 2 ; ACCOUNT FILE I/O EFN1 = 1 ; EVENT FLAG FOR LUN1 EFN2 = 2 ; EVENT FLAG FOR LUN2 ; ; ACCOUNT FILE OFFSETS USED IN VERSION 6 ; LOW = 62 HIGH = 64 SUPR = 66 NDA = 72 BALL = 74 ABLK = 76 PREV = 100 SLOW = 102 SHIH = 104 SID = 106 SMAX = <5.*2> ; ; DIRECTIVE PARAMETER BLOCKS ; ERROR: QIOW$ IO.WVB,LUN1,EFN1,,,, ACNUM: .WORD 0 ; NEW ACCOUNT NUMBER ACBUF: .BLKB 128. ; INTERMEDIATE A/C BUFFER ERR: .ASCII /V6TOV7 -- ACCOUNT FILE OPEN FAILURE/ ERRSZ=.-ERR .EVEN $V67EP: ; PROGRAM XFR ADDRESS FINIT$ ; SET UP FSR CALL $AFOPN ; OPEN ACCOUNT FILE BCC 10$ ; OK DIR$ #ERROR ; WRITE OUT ERROR MESSAGE BR EXIT ; EXIT 10$: CALL $AFGET ; READ DATA FROM ACCOUNT FILE BEQ 25$ ; IF EQ NO WORDS WERE READ MOV #$ACTBF,R0 ; GET BUFFER ADDRESS 15$: CMPB A.GRP(R0),#'0 ; VALID UIC? BLO 20$ ; IF LO NO, SLOT IS AVAILABLE CMPB A.GRP(R0),#'3 ; MAYBE BHI 20$ ; IF HI NO MOV R0,-(SP) ; SAVE ENTRY POINTER MOV R2,-(SP) ; SAVE BYTE COUNT MOV #ACBUF,R1 ; GET TEMP. BUFFER ADDRESS MOV #<128./2>,R2 ; SET COUNT OF WORDS TO MOVE 16$: MOV (R0)+,(R1)+ ; MOVE A WORD DEC R2 ; DONE YET? BNE 16$ ; IF NE NO, LOOP MOV (SP)+,R2 ; RESTORE BYTE COUNT MOV (SP)+,R0 ; RESTORE ENTRY POINTER MOV #ACBUF,R1 ; RESTORE POINTER TO V6 A/C RECORD INC ACNUM ; GET NEW ACCOUNT NUMBER MOV ACNUM,A.ACNO(R0) ; ASSIGN IT TO THIS ACCOUNT CLR A.CHWD(R0) ; CLEAR CHAIN WORD MOV HIGH(R1),A.CASH(R0) ; TRANSFER ACCOUNT BALANCE MOV LOW(R1),A.CASH+2(R0) ; MOV NDA(R1),A.NDA(R0) ; TRANSFER NO. OF DISK ACCOUNTINGS CLR A.BALL(R0) ; SET UP BLOCK ALLOCATION MOV BALL(R1),A.BALL+2(R0) ; CLR A.ABLK(R0) ; SET UP AVERAGE DISK USE MOV ABLK(R1),A.ABLK+2(R0) ; CLR A.PREV(R0) ; SET UP PREVIOUS DISK USAGE MOV PREV(R1),A.PREV+2(R0) ; MOV SHIH(R1),A.MALL(R0) ; SET UP MONEY ALLOCATION MOV SLOW(R1),A.MALL+2(R0) ; 20$: ADD #A.LEN,R0 ; POINT TO NEXT ENTRY SUB #A.LEN,R2 ; GET BYTES LEFT BHI 15$ ; GO IF THERE ARE ANY 25$: CMPB #IE.EOF,$AFIOS ; END OF FILE? BEQ 30$ ; IF EQ YES TSTB $AFIOS ; ANY ERRORS? BMI 30$ ; IF MI YES CALL $AFPUT ; WRITE DATA BACK TO A/C FILE AND POINT ; TO NEXT BLOCK BR 10$ ; DO NEXT BLOCK 30$: CALL $AFCLS ; CLOSE ACCOUNT FILE EXIT: EXIT$S ; AND EXIT .END $V67EP