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 / CPM / ZCPR33 / A-R / MATH24.LBR / M24INP.ZZ0 / M24INP.Z80
Text File  |  2000-06-30  |  2KB  |  76 lines

  1. ; Module M24INP
  2. ; Steven M. Cohen
  3. ; March 10, 1987
  4. ;
  5.     EXT    VPRINT,EREOL,BLINE,N24EVAL,RADIX,COUT
  6.     PUBLIC    NUMINP,INPNUM,RADIXDSP
  7. ;
  8. BUZZER    EQU    7
  9. ;
  10. ; NUMINP and INPNUM numeric input routines
  11. ;   these allow input in either binary, decimal or hex.
  12. ;   NUMINP prints as part of the input line a three character
  13. ;   display indicating the default radix to be used (others require a trailing
  14. ;   character)
  15. ;   both routines print a ": " after what presumably would be a prompt string
  16. ;   and clear the rest of the input line
  17. ;   
  18. ;   INPUTS: DE points to 3 byte buffer where result will be stored
  19. ;   OUTPUTS: DE still points to this buffer which is now updated
  20. ;   REGISTERS AFFECTED - HL, PSW
  21. ;
  22. NUMINP:
  23.     CALL    RADIXDSP    ; display primary input radix
  24. INPNUM:
  25.     CALL    VPRINT
  26.     DB    ':  ',0        ; print colon and space
  27.     CALL    EREOL        ; clear away rest of line
  28.     XOR    A
  29.     CPL            ; to capitalize input line    
  30.     LD    HL,NUMBUF    ; read into number buffer            
  31.     CALL    BLINE        ; do it
  32.     CALL    N24EVAL        ; get number in de and check for error
  33.     RET    NC        ; return if no error
  34.     LD    A,BUZZER    ; ERROR, buzz
  35.     JP    COUT        ; and return via COUT
  36. ;
  37. NUMBUF:    db    25
  38.     ds    1
  39.     ds    26    
  40. BIN:    DB    'BIN'            ;binary indicator
  41. DEC:    DB    'DEC'            ;decimal indicator
  42. HEXA:    DB    'HEX'            ;hexadecimal indicator
  43. ;
  44. RADIXDSP:                ; radix display routine
  45.     PUSH    HL
  46.     PUSH    DE
  47.     PUSH    BC
  48.     CALL    RADIX
  49.     DB    0            ;REQUEST DEFAULT RADIX
  50.     LD    DE,RDXLOC
  51.     CP    2            ;binary
  52.     JR    NZ,R10
  53.     LD    HL,BIN
  54.     JR    RDXD2
  55. R10:    CP    10            ;decimal
  56.     JR    NZ,R16    
  57.     LD    HL,DEC
  58.     JR    RDXD2        
  59. R16:    LD    HL,HEXA            ;then it must be hex    
  60. RDXD2:
  61.     LDI
  62.     LDI
  63.     LDI                ;hot patch it
  64.     CALL    VPRINT
  65.     DB    '('
  66. RDXLOC:    DS    3            ;three bytes go here
  67.     DB    ')',0
  68.     POP    BC
  69.     POP    DE
  70.     POP    HL
  71.     RET
  72.     LDI                ;hot patch it
  73.     CALL    VPRINT
  74.     DB    '('
  75. RDXLOC:    DS    3            ;three bytes go here
  76.     DB    ')