home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol090 / spadc.mac < prev    next >
Encoding:
Text File  |  1984-04-29  |  1.3 KB  |  76 lines

  1. ;
  2. ; SYSLIB Module Name:  SPADC
  3. ; Author:  Richard Conn
  4. ; SYSLIB Version Number:  2.0
  5. ; Module Version Number:  1.0
  6. ; Module Entry Points:
  7. ;    PA3DC        PADC
  8. ; Module External References:
  9. ;    COUT
  10. ;
  11.  
  12. ;
  13. ;  PA3DC --
  14. ;    PRINT REG A AS 3 DECIMAL CHARACTERS
  15. ;
  16.     EXT    COUT
  17.  
  18. PA3DC::
  19.     PUSH    PSW    ; SAVE A
  20.     PUSH    PSW
  21.     XRA    A    ; TURN OFF LEADING <SP> FLAG
  22.     STA    LSFLG
  23.     JMP    PADC1
  24. ;
  25. ;  PADC --
  26. ;    PRINT REG A AS DECIMAL CHARACTERS W/LEADING <SP> IN 3-CHAR FIELD
  27. ;
  28. PADC::
  29.     PUSH    PSW    ; SAVE A
  30.     PUSH    PSW
  31.     MVI    A,1    ; TURN ON LEADING <SP> FLAG
  32.     STA    LSFLG
  33. ;  PRINT ROUTINE
  34. PADC1:    POP    PSW    ; GET A
  35.     PUSH    B    ; SAVE BC
  36.     MVI    B,100    ; PRINT HUNDREDS
  37.     CALL    PAC    ; PRINT A CHAR
  38.     MVI    B,10    ; PRINT TENS
  39.     CALL    PAC
  40.     ADI    '0'    ; CONVERT TO ASCII
  41.     CALL    COUT    ; PRINT
  42.     POP    B    ; RESTORE BC
  43.     POP    PSW    ; RESTORE A
  44.     RET
  45.  
  46. ;  BUFFER
  47. LSFLG:    DS    1    ; LEADING <SP> FLAG
  48.  
  49. ;  PRINT RESULT OF DIVISION OF A BY B W/LEADING <SP> (INTEGER DIVISION)
  50. PAC:    MVI    C,0    ; SET COUNT
  51. PACL:    SUB    B    ; COMPUTE COUNT
  52.     JC    PACD
  53.     INR    C    ; INCR COUNT
  54.     JMP    PACL
  55. PACD:    ADD    B    ; ADD B BACK IN
  56.     PUSH    PSW    ; SAVE A
  57.     MOV    A,C    ; GET COUNT
  58.     ORA    A    ; ZERO?
  59.     JNZ    PACD1
  60.     LDA    LSFLG    ; CHECK FOR LEADING <SP>
  61.     ORA    A    ; 0 MEANS NO
  62.     JZ    PACD1
  63.     MVI    A,' '    ; PRINT <SP>
  64.     CALL    COUT
  65.     POP    PSW    ; RESTORE A
  66.     RET
  67. PACD1:    XRA    A    ; A=0
  68.     STA    LSFLG    ; TURN OFF LEADING <SP> FLAG
  69.     MOV    A,C    ; GET COUNT
  70.     ADI    '0'    ; CONVERT TO DECIMAL
  71.     CALL    COUT    ; PRINT IT
  72.     POP    PSW    ; RESTORE A
  73.     RET
  74.  
  75.     END
  76.