.TITLE V3TOV4 .IDENT /V7.01/ ;******************************************************************* ; ; V3TOV4 THIS PROGRAM IS RUN TO CONVERT THE SYSTEM ACCOUNT ; FILE FROM THE FORMAT USED WITH RSX-11M V3.2 TO ; RSX-11M V4.0, BOTH WITH ACCOUNTING SYSTEM 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 V3TOV4 AND THEN START AN ; ACCOUNTING RUN, ALL WITHIN THE STARTUP SEQUENCE). ; TO CONVERT FROM ACCOUNTING VERSION 6 UNDER V3.2 TO ; ACCOUNTING V7 UNDER V4.0, FISRT RUN V6TOV7.TSK AND ; THEN RUN V3TOV4.TSK (THIS PROGRAM). ; ; *IMPORTANT* THIS PROGRAM IS ONLY REQUIRED IF YOU ARE RUNNING ; *IMPORTANT* RSX-11M V4.0. IF YOU ARE KEEPING V3.2, *DO NOT* ; *IMPORTANT* RUN THIS PROGRAM. ; ; THE TASK IMAGE IS IN ACCGEN.ULB: ; ; LBR>V3TOV4.TSK=ACCGEN.ULB/EX:V3TOV4 ; ; ; VERSION: V7 APRIL 1982 (CREATED BY PATCH SMT814) ; ; STEVE THOMPSON SCHOOL OF CHEMICAL ENGINEERING ; OLIN HALL ; CORNELL UNIVERSITY ; ITHACA NY 14853 ; ; ;****************************************************************** .MCALL QIOW$,DIR$,EXIT$S .MCALL FINIT$ ACTDF$ <:>,<=> ; DEFINE ADDITIONAL ACCOUNT FILE OFFSETS ; ; 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 .IF NDF AA$V40 A.V40 = 14. A.CLI = 52. .ENDC ; NDF AA$V40 ; ; MACROS ; .MACRO TRANS OFFSET .IF DF AA$V40 MOV (R1),OFFSET(R0) .IFF MOV OFFSET(R1),(R0) .ENDC ; DF AA$V40 .ENDM ; ; DIRECTIVE PARAMETER BLOCKS ; ERROR: QIOW$ IO.WVB,LUN1,EFN1,,,, ACBUF: .BLKB 128. ; INTERMEDIATE A/C BUFFER CLIMCR: .RAD50 /MCR / ; DEFAULT CLI NAME .ENABL LC .NLIST BEX ERR: .ASCII /V3TOV4 -- Account file open failure/ ERRSZ=.-ERR .EVEN $V34EP: ; 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 V3.2 A/C RECORD MOV CLIMCR,A.CLI(R0) ; SET DEFAULT CLI TO MCR MOV CLIMCR+2,A.CLI+2(R0) ; TRANS A.CASH ; TRANSFER ACCOUNT BALANCE TRANS A.CASH+2 ; TRANS A.NDA ; TRANSFER NO. OF DISK ACCOUNTINGS TRANS A.BALL ; TRANSFER BLOCK ALLOCATION TRANS A.BALL+2 ; TRANS A.ABLK ; TRANSFER AVERAGE DISK USE TRANS A.ABLK+2 ; TRANS A.PREV ; TRANSFER PREVIOUS DISK USAGE TRANS A.PREV+2 ; TRANS A.MALL ; TRANSFER MONEY ALLOCATION TRANS A.MALL+2 ; TRANS A.ACNO ; TRANSFER ACCOUNT NUMBER TRANS A.CHWD ; TRANSFER CHAIN WORD TRANS A.PAGE ; TRANSFER OFFLINE PAGE COUNT 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 $V34EP