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 / SPAFDC.Z80 < prev    next >
Text File  |  2000-06-30  |  1KB  |  60 lines

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