.TITLE FMTCHG .IDENT /V7.04/ ;+ ; ; *** FM.CHG ; ; THIS ROUTINE CONVERTS A 2-WORD SUM OF MONEY IN INTERNAL ; FORMAT TO ASCII FOR DISPLAY. THREE PLACES ARE PRESERVED ; AFTER THE DECIMAL POINT. THIS VERSION OF THE ROUTINE APPENDS THE ; TEXT "UNITS" TO THE AMOUNT, RATHER THAN PREFIXING WITH A ; DOLLAR SIGN. ; FOR USE WITH ACCOUNTING SYSTEM VERSION 7. ; ; INPUT: ; R0 BUFFER ADDRESS ; R1 ADDRESS OF BALANCE TO CONVERT ; ; OUTPUT: ; R0 UPDATED WITH [-]0.000 Units ; R1,R2 USED ; ; VERSION: V7 MAY 1981 ; ; STEVE THOMPSON SCHOOL OF CHEMICAL ENGINEERING ; OLIN HALL ; CORNELL UNIVERSITY ; ITHACA NY 14853 ; ; REVISION HISTORY ; ---------------- ; ; SMT804 26-MAR-82 ALLOW UNITS/DOLLARS CHOICE TO BE AN ACCGEN ; OPTION. THIS ROUTINES MODULE NAME CHANGED ; FROM "FMTUNI" TO "FMTCHG" ; ; SMT821 23-APR-82 CHANGED ENTRY POINT NAMES OF ACCOUNTING ; SUPPORT ROUTINES (SEE MODIFY.TXT) ; ;- .ENABL LC UNI: .ASCIZ / Units/ .EVEN FM.CHG::MOV 2(R1),-(SP) ; PUSH LOW ORDER MONEY ON STACK MOV (R1),-(SP) ; FOLLOWED BY HIGH ORDER BGE 10$ ; IF GE IT'S POSITIVE MOVB #'-,(R0)+ ; AMOUNT IS NEGATIVE, PUT MINUS SIGN IN BUFFER NEG (SP) ; FIND THE MAGNITUDE OF THE AMOUNT NEG 2(SP) ; (NEGATE IT) SBC (SP) ; 10$: MOV SP,R1 ; LET R1 POINT TO THE NUMBER CLR R2 ; SET NO LEADING ZEROES TST (SP) ; HIGH ORDER BALANCE NON-ZERO? BNE 20$ ; IF NE YES, DON'T WANT LEADING ZEROES CMP #10000.,2(SP) ; AMOUNT LESS THAN ONE UNIT? BLOS 20$ ; IF LOS NO, DON'T WANT LEADING ZEROES INC R2 ; < 1 UNIT, SET TO INCLUDE LEADING ZEROES MOVB #'0,(R0)+ ; START STRING WITH A ZERO 20$: CALL $CDDMG ; FORMAT THE AMOUNT CMP (SP)+,(SP)+ ; CLEAN THE STACK MOVB -(R0),1(R0) ; MOVE OVER THE LAST FOUR DIGITS MOVB -(R0),1(R0) ; MOVB -(R0),1(R0) ; MOVB -(R0),1(R0) ; MOVB #'.,(R0)+ ; INSERT A DECIMAL POINT ADD #3,R0 ; STEP PAST LAST BUT ONE DIGIT MOV #UNI,R1 ; SET ADDRESS OF "UNITS" TEXT JMP MV.STR ; AND WOP IT INTO THE BUFFER ; AND RETURN TO THE CALLER .END