.TITLE FMTCHG .IDENT /V7.02/ ;+ ; ; *** FM.CHG ; ; THIS ROUTINE CONVERTS A 2-WORD SUM OF MONEY IN INTERNAL ; FORMAT TO ASCII FOR DISPLAY. ALL FOUR PLACES ARE PRESERVED ; AFTER THE DECIMAL POINT. ; FOR USE WITH ACCOUNTING SYSTEM VERSION 7. ; ; INPUT: ; R0 BUFFER ADDRESS ; R1 ADDRESS OF BALANCE TO CONVERT ; ; OUTPUT: ; R0 UPDATED WITH [-]$0.0000 ; R1,R2 USED ; ; VERSION: V7 MARCH 1981 ; ; STEVE THOMPSON SCHOOL OF CHEMICAL ENGINEERING ; OLIN HALL ; CORNELL UNIVERSITY ; ITHACA NY 14853 ; ; REVISION HISTORY ; ---------------- ; ; SMT821 23-APR-82 CHANGED ENTRY POINT NAMES OF ACCOUNTING ; SUPPORT ROUTINES (SEE MODIFY.TXT) ; ;- 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 MOVB #'$,(R0)+ ; PUT A DOLLAR SIGN IN THE BUFFER 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 DOLLAR? BLOS 20$ ; IF LOS NO, DON'T WANT LEADING ZEROES INC R2 ; < 1 DOLLAR, 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 #4,R0 ; STEP PAST LAST DIGIT RETURN ; AND RETURN TO THE CALLER .END