home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ZSYS / SIMTEL20 / SYSLIB / SLIB3.LBR / SSADC.Z80 < prev    next >
Text File  |  2000-06-30  |  1KB  |  72 lines

  1. ;
  2. ; SYSLIB Module Name:  SSADC
  3. ; Author:  Richard Conn
  4. ; SYSLIB Version Number:  3.6
  5. ; Module Version Number:  1.1
  6.  
  7.     public    sa3dc,sadc
  8.  
  9.     EXT    SOUT
  10.  
  11. ;
  12. ;  SA3DC --
  13. ;    PRINT REG A AS 3 DECIMAL CHARACTERS ON CON: OR LST:
  14. ;
  15. SA3DC:
  16.     PUSH    BC    ; SAVE REGS
  17.     PUSH    DE
  18.     PUSH    AF    ; SAVE A
  19.     LD    D,0    ; TURN OFF LEADING <SP> FLAG
  20.     JP    PADC1
  21. ;
  22. ;  SADC --
  23. ;    PRINT REG A AS DECIMAL CHARACTERS W/LEADING <SP> IN 3-CHAR FIELD
  24. ;        ON CON: OR LST:
  25. ;
  26. SADC:
  27.     PUSH    BC    ; SAVE REGS
  28.     PUSH    DE
  29.     PUSH    AF    ; SAVE A
  30.     LD    D,1    ; TURN ON LEADING <SP> FLAG
  31. ;
  32. ;  PRINT ROUTINE
  33. ;
  34. PADC1:    LD    B,100    ; PRINT HUNDREDS
  35.     CALL    PAC    ; PRINT A CHAR
  36.     LD    B,10    ; PRINT TENS
  37.     CALL    PAC
  38.     ADD    '0'    ; CONVERT TO ASCII
  39.     CALL    SOUT    ; PRINT
  40.     POP    AF    ; RESTORE A
  41.     POP    DE    ; RESTORE REGS
  42.     POP    BC
  43.     RET
  44.  
  45. ;
  46. ;  PRINT RESULT OF DIVISION OF A BY B W/LEADING <SP> (INTEGER DIVISION)
  47. ;
  48. PAC:    LD    C,0    ; SET COUNT
  49. PACL:    SUB    B    ; COMPUTE COUNT
  50.     JP    C,PACD
  51.     INC    C    ; INCR COUNT
  52.     JP    PACL
  53. PACD:    ADD    A,B    ; ADD B BACK IN
  54.     LD    E,A    ; SAVE A
  55.     LD    A,C    ; GET COUNT
  56.     OR    A    ; ZERO?
  57.     JP    NZ,PACD1
  58.     OR    D    ; 0 MEANS NO LEADING <SP> (A=0, SO A OR D = 0 IF D=0)
  59.     JP    Z,PACD1
  60.     LD    A,' '    ; PRINT <SP>
  61.     CALL    SOUT
  62.     LD    A,E    ; RESTORE A
  63.     RET
  64. PACD1:    LD    D,0    ; D=0 FOR NO LEADING <SP>
  65.     LD    A,C    ; GET COUNT
  66.     ADD    '0'    ; CONVERT TO DECIMAL
  67.     CALL    SOUT    ; PRINT IT
  68.     LD    A,E    ; RESTORE A
  69.     RET
  70.  
  71.     END
  72.