00001 *************************
00002 *
00003 * NTOACV.ASM
00004 * MDJ 09-26-90
00005 *
00006 * CONVERTS A 32-BIT
00007 * NUMBER TO ITS STRING
00008 * EQUIVALENT
00009 *
00010 *************************
00011 *
00012 * REQUIRES: D3216
00013 *           DS3216
00014 *
00015 * NUMBER BASE MUST
00016 * ALREADY BE SET AT BASE
00017 * ($03DD)
00018 *
00019 * ON ENTRY:
00020 *  NUMBER MUST BE
00021 *  EXPRESSED IN 32-BIT
00022 *  FORM, AND MUST BE IN
00023 *  DIVDND
00024 *
00025 * ON RETURN:
00026 *  THE NUMBER'S STRING
00027 *  EQUIVALENT (WITH A
00028 *  TRAILING SPACE) WILL
00029 *  BE ON TOP OF THE
00030 *  U-STACK
00031 *
00032 *************************
00033 *
00034 BASEL2  EQU     $FD     NUMBER BASE
00035 D3216   EQU     $437E   UNSIGNED 32 BY 16 DIVIDE ROUTINE
00036 DIVDND  EQU     $CB     32-BIT DIVIDEND (SCRATCHPAD)
00037 DIVSOR  EQU     $CF     16-BIT DIVISOR (SCRATCHPAD)
00038 DS32X   EQU     $443C   32-BIT NEGATE ROUTINE
00039 HV      EQU     $D9     HOLDING VARIABLE (SCRATCHPAD)
00040         ORG     $459E
00041 NTOACV  PSHS    A,B,X
00042         LDA     #32     PUSH A SPACE TO THE STACK
00043         PSHU    A
00044         CLR     HV      POSITIVE SIGN CODE
00045         LDA     DIVDND  CHECK SIGN
00046         CMPA    #0      IS IT LESS THAN ZERO?
00047         BGE     NTOA1   GO IF NO
00048         STA     HV      NEGATIVE SIGN CODE
00049         JSR     DS32X   GO NEGATE DIVIDEND
00050 NTOA1   LDB     BASEL2
00051         NOP
00052         CLR     DIVSOR
00053         STB     DIVSOR+1 BASE NOW IN DIVSOR
00054         JSR     D3216   GO DO UNSIGNED DIVIDE
00055         LDB     DIVSOR+1 GET CHARACTER NUMBER
00056         CMPB    #10     CONVERT TO ASCII
00057         BLO     NTOA2
00058         ADDB    #55     ASCII OFFSET (>9)
 
 
 
 
 
 
 
 
00059         BRA     NTOA3
00060 NTOA2   ADDB    #48     ASCII OFFSET (<=9)
00061 NTOA3   PSHU    B       PUSH CHARACTER TO STACK
00062         LDX     DIVDND+2 CHECK FOR END
00063         BNE     NTOA1
00064         LDX     DIVDND
00065         BNE     NTOA1
00066         LDA     HV      GET SIGN
00067         BEQ     NTOA4   GO IF POSITIVE
00068         LDA     #45     ASCII MINUS SIGN
00069         PSHU    A       PUSH "-" TO STACK
00070 NTOA4   PULS    A,B,X
00071 ZEND    RTS
00072         END
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
