mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
2.0 KiB
132 lines
2.0 KiB
;==================================================================================================
|
|
; GENERIC CP/M ROUTINES
|
|
;==================================================================================================
|
|
;
|
|
BDOS .EQU 5 ;ENTRY BDOS
|
|
BS .EQU 8 ;BACKSPACE
|
|
TAB .EQU 9 ;TABULATOR
|
|
LF .EQU 0AH ;LINE-FEED
|
|
CR .EQU 0DH ;CARRIAGE-RETURN
|
|
;
|
|
CLIARGS .EQU $81
|
|
RESTART .EQU $0000 ; CP/M restart vector
|
|
FCB .EQU $5C ; Location of default FCB
|
|
;
|
|
; OUTPUT TEXT AT HL
|
|
;
|
|
PRTSTR: LD A,(HL)
|
|
CP '$'
|
|
RET Z
|
|
CALL COUT
|
|
INC HL
|
|
JR PRTSTR
|
|
;
|
|
;Output WORD
|
|
;***********
|
|
;
|
|
;PARAMETER: Entry WORD IN HL
|
|
;*********
|
|
;
|
|
OUTW: LD A,H
|
|
CALL OUTB
|
|
LD A,L
|
|
CALL OUTB
|
|
RET
|
|
;
|
|
;Output BYTE
|
|
;***********
|
|
;
|
|
;PARAMETER: Entry BYTE IN A
|
|
;*********
|
|
;
|
|
OUTB: PUSH AF
|
|
RRCA
|
|
RRCA
|
|
RRCA
|
|
RRCA
|
|
AND 0FH
|
|
CALL HBTHE ;Change Half-BYTE
|
|
POP AF
|
|
AND 0FH
|
|
CALL HBTHE
|
|
RET
|
|
;
|
|
;Output HALF-BYTE
|
|
;****************
|
|
;
|
|
;PARAMETER: Entry Half-BYTE IN A (BIT 0 - 3)
|
|
;*********
|
|
;
|
|
HBTHE: CP 0AH
|
|
JR C,HBTHE1
|
|
ADD A,7 ;Character to Letter
|
|
HBTHE1: ADD A,30H
|
|
LD E,A
|
|
CALL PCHAR
|
|
RET
|
|
;
|
|
;
|
|
;Output on Screen
|
|
;****************
|
|
;
|
|
PRBS: LD E,BS
|
|
CALL PCHAR
|
|
RET
|
|
;
|
|
;Output CR+LF on Screen
|
|
;**********************
|
|
;
|
|
NEWLINE:
|
|
LD E,CR
|
|
CALL PCHAR
|
|
LD E,LF
|
|
CALL PCHAR
|
|
RET
|
|
;
|
|
;Output ASCII-Character
|
|
;**********************
|
|
;
|
|
COUT: PUSH AF
|
|
LD E,A
|
|
CALL PCHAR
|
|
POP AF
|
|
RET
|
|
;
|
|
;CALL BDOS with Register Save
|
|
;****************************
|
|
;
|
|
INCHA: LD C,1 ;INPUT CHARACTER TO A
|
|
JR BDO
|
|
PCHAR: LD C,2 ;PRINT CHARACTER IN E
|
|
JR BDO
|
|
PSTRIN: LD C,9 ;PRINT STRING
|
|
JR BDO
|
|
INBUFF: LD C,10 ;READ CONSOLE-BUFFER
|
|
JR BDO
|
|
CSTS: LD C,11 ;CONSOLE-STATUS
|
|
JR BDO
|
|
OPEN: LD C,15 ;OPEN FILE
|
|
JR BDO
|
|
CLOSE: LD C,16 ;CLOSE FILE
|
|
JR BDO
|
|
DELETE: LD C,19 ;DELETE FILE
|
|
JR BDO
|
|
READS: LD C,20 ;READ SEEK
|
|
JR BDO
|
|
WRITES: LD C,21 ;WRITE SEEK
|
|
JR BDO
|
|
MAKE: LD C,22 ;MAKE FILE
|
|
JR BDO
|
|
SETDMA: LD C,26 ;SET DMA-ADDRESS
|
|
BDO: PUSH HL
|
|
PUSH DE
|
|
PUSH BC
|
|
PUSH IX
|
|
PUSH IY
|
|
CALL BDOS
|
|
POP IY
|
|
POP IX
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
RET
|
|
|