* PROGRAM NAME: BDOS Locator * AUTHOR: RICHARD CONN * VERSION: 1.0 * DATE: 3 July 81 * PREVIOUS VERSIONS: -None- VERS EQU 10 ; VERSION NUMBER CPM$BASE EQU 0 ; BASE ADDRESS OF CP/M SYSTEM * * BDOS Locator simply functions to print out the base page address * of the user's CP/M BDOS and the base page address of the user's CP/M CCP. * BDOS EQU CPM$BASE+5 ; ADDRESS OF BDOS ENTRY CR EQU 0DH LF EQU 0AH ORG CPM$BASE+100H CALL PRINT DB 'The Base Page Address of this system''s BDOS is ',0 LDA BDOS+2 ; GET PAGE ADDRESS CALL HEX$OUT ; PRINT AS 2 HEX CHARS CALL PRINT DB CR,LF,'The Base Page Address of this system''s CCP is ',0 LDA BDOS+2 ; GET BDOS ADDRESS SUI 8 ; 800H LESS CALL HEX$OUT ; PRINT AS 2 HEX CHARS CALL PRINT DB CR,LF,0 RET * PRINT VALUE IN REG A AS 2 HEX CHARS HEX$OUT: PUSH PSW ; SAVE VALUE RLC ; SHIFT NYBBLES RLC RLC RLC CALL HEX1 ; PRINT HIGH NYBBLE POP PSW ; GET VALUE AND PRINT LOW NYBBLE * PRINT LOW NYBBLE OF REG A AS 1 HEX CHAR HEX1: ANI 0FH ; MASK OUT HIGH CPI 10 ; 0-9? JNC HEX1A ADI '0' ; CONVERT 0-9 TO '0'-'9' JMP COUT HEX1A: ADI 'A'-10 ; CONVERT 10-15 TO 'A'-'F' JMP COUT * PRINT STRING ENDING IN 0 PTED TO BY RET ADR PRINT: XTHL ; SAVE HL AND GET RET ADR PRINT1: MOV A,M ; GET BYTE INX H ; PT TO NEXT ORA A ; DONE? JZ PRINT2 CALL COUT ; PRINT IT JMP PRINT1 PRINT2: XTHL ; RESTORE RET ADR AND HL RET * PRINT CHAR IN REG A ON CONSOLE COUT: PUSH H ; SAVE REGS PUSH D PUSH B MOV E,A MVI C,2 ; CONSOLE OUTPUT CALL BDOS POP B ; RESTORE REGS POP D POP H RET END