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 / ZCPR / ZCPR1.ARK / BDLOC.ASM next >
Assembly Source File  |  1986-10-19  |  2KB  |  85 lines

  1. *  PROGRAM NAME:  BDOS Locator
  2. *  AUTHOR:  RICHARD CONN
  3. *  VERSION:  1.0
  4. *  DATE:  3 July 81
  5. *  PREVIOUS VERSIONS:  -None-
  6.  
  7. VERS        EQU    10    ; VERSION NUMBER
  8. CPM$BASE    EQU    0    ; BASE ADDRESS OF CP/M SYSTEM
  9.  
  10. *
  11. *    BDOS Locator simply functions to print out the base page address
  12. * of the user's CP/M BDOS and the base page address of the user's CP/M CCP.
  13. *
  14.  
  15. BDOS    EQU    CPM$BASE+5    ; ADDRESS OF BDOS ENTRY
  16. CR    EQU    0DH
  17. LF    EQU    0AH
  18.  
  19.     ORG    CPM$BASE+100H
  20.  
  21.     CALL    PRINT
  22.     DB    'The Base Page Address of this system''s BDOS is ',0
  23.     LDA    BDOS+2    ; GET PAGE ADDRESS
  24.     CALL    HEX$OUT    ; PRINT AS 2 HEX CHARS
  25.  
  26.     CALL    PRINT
  27.     DB    CR,LF,'The Base Page Address of this system''s CCP is  ',0
  28.     LDA    BDOS+2    ; GET BDOS ADDRESS
  29.     SUI    8    ; 800H LESS
  30.     CALL    HEX$OUT    ; PRINT AS 2 HEX CHARS
  31.  
  32.     CALL    PRINT
  33.     DB    CR,LF,0
  34.     RET
  35.  
  36. *  PRINT VALUE IN REG A AS 2 HEX CHARS
  37. HEX$OUT:
  38.     PUSH    PSW    ; SAVE VALUE
  39.     RLC        ; SHIFT NYBBLES
  40.     RLC
  41.     RLC
  42.     RLC
  43.     CALL    HEX1    ; PRINT HIGH NYBBLE
  44.     POP    PSW    ; GET VALUE AND PRINT LOW NYBBLE
  45.  
  46. *  PRINT LOW NYBBLE OF REG A AS 1 HEX CHAR
  47. HEX1:
  48.     ANI    0FH    ; MASK OUT HIGH
  49.     CPI    10    ; 0-9?
  50.     JNC    HEX1A
  51.     ADI    '0'    ; CONVERT 0-9 TO '0'-'9'
  52.     JMP    COUT
  53. HEX1A:
  54.     ADI    'A'-10    ; CONVERT 10-15 TO 'A'-'F'
  55.     JMP    COUT
  56.  
  57. *  PRINT STRING ENDING IN 0 PTED TO BY RET ADR
  58. PRINT:
  59.     XTHL        ; SAVE HL AND GET RET ADR
  60. PRINT1:
  61.     MOV    A,M    ; GET BYTE
  62.     INX    H    ; PT TO NEXT
  63.     ORA    A    ; DONE?
  64.     JZ    PRINT2
  65.     CALL    COUT    ; PRINT IT
  66.     JMP    PRINT1
  67. PRINT2:
  68.     XTHL        ; RESTORE RET ADR AND HL
  69.     RET
  70.  
  71. *  PRINT CHAR IN REG A ON CONSOLE
  72. COUT:
  73.     PUSH    H    ; SAVE REGS
  74.     PUSH    D
  75.     PUSH    B
  76.     MOV    E,A
  77.     MVI    C,2    ; CONSOLE OUTPUT
  78.     CALL    BDOS
  79.     POP    B    ; RESTORE REGS
  80.     POP    D
  81.     POP    H
  82.     RET
  83.  
  84.     END
  85.