home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug035.ark / HEXOUT.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  59 lines

  1.     ORG    51ECH
  2. * THE FOLLOWING TWO ROUTINES ARE USED TO DISPLAY HEX NUMBERS
  3. * ON THE CRT SCREEN.  THE FIRST PRINTS TWO DIGITS FROM THE BYTE IN
  4. * REGISTER A.  THE SECOND PRINTS FOUR DIGITS FROM THE WORD IN
  5. * THE HL PAIR.
  6. *
  7. * THIS ROUTINE TAKES A NUMBER IN A, PRINTS IT AS HEXADECIMAL.
  8. *        -THANKS TO PHIL BUTLER FOR ALGORITHM
  9. CO    EQU    502AH
  10. HEXPRT:    PUSH    PSW
  11.     PUSH    PSW    ;SAVE A  COPY OF NUMBER
  12.     RRC
  13.     RRC
  14.     RRC
  15.     RRC        ;SLIDE HI-NYBBLE TO RIGHT 4 BITS
  16.     ANI    0FH    ;STRIP OFF OTHER NYBBLE
  17.     CALL    HCHOUT    ;PRINT LEFT NYBBLE
  18.     POP    PSW    ;GET COPY BACK
  19.     ANI    0FH
  20.     CALL    HCHOUT    ;PRINT RIGHT NYBBLE
  21.     POP    PSW
  22.     RET
  23. *
  24. HCHOUT:    CPI    0AH    ;HAVE WE A DIGIT (0-9) OR ALPHA?
  25.     JP    ALPHA
  26.     ADI    30H
  27.     CALL    CO    ;WE MADE AN ASCII AND PRINTED IT
  28.     RET
  29. ALPHA:    ADI    37H
  30.     CALL    CO    ;WE MMADE AN ALPHABETIC ASCII & PRINTED IT
  31.     RET
  32. *
  33. * THIS ROUTINE TAKES A NUMBER IN HL AND PRINTS IT AS A FOUR
  34. * DIGIT HEXADECIMAL NUMBER.
  35. DISPHL:    PUSH    PSW
  36.     MOV    A,H    ;GET HI-BYTE
  37.     CALL    HEXPRT    ;PRINT IT
  38.     MOV    A,L    ;GET LO-BYTE
  39.     CALL    HEXPRT    ;PPRINT IT
  40.     POP    PSW
  41.     RET
  42. *
  43. * THIS NEXT ROUTINE REALLY DOES NOT BELONG WITH THE OTHER TWO,
  44. * BUT IT WOULD BE A CRIME TO PUT IT IN A FILE BY ITSELF.  THEREFORE
  45. * IT IS INCLUDED HERE FOR YOUR READING PLEASURE.
  46. *
  47. * "CONSTAT"
  48. *
  49. * THIS ROUTINE USES THE CP/M BUILT-IN-FUNCTION #11 TO INTERROGATE
  50. * THE STATUS OF THE TTY.  THE A REGISTER IS RETURNED WITH THE
  51. * LEAST SIGNIFICANT BYTE = 1 IF THERE IS AN INPUT CHARACTER WAITING
  52. * FROM THE KEYBOARD.
  53. BDOS    EQU    5
  54. CONSTAT: PUSH    B ! PUSH D ! PUSH H !
  55.     MVI    C,11
  56.     CALL    BDOS
  57.     POP    H ! POP D ! POP B
  58.     RET
  59.