|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2048 (0x800)
Types: TextFile
Names: »HLT.I86«
└─⟦d6ef3842c⟧ Bits:30002678 Pascal MT+ Version 3.3 Rel 1.2
└─⟦this⟧ »HLT.I86«
NAME BDOSCALL
ASSUME CS:CODE,DS:DATA
DATA SEGMENT PUBLIC
DATA ENDS
CODE SEGMENT PUBLIC
;
; @HLT FOR CP/M-86 ... ALSO INCLUDES @BDOS
;
; MODIFIED 12-11-81 BY MGL TO SAVE/RESTORE BP AROUND A SYSTEM CALL
;
PUBLIC @HLT
PUBLIC @BDOS86
PUBLIC @BDOSX
@HLT PROC NEAR
XOR AX,AX
PUSH AX
PUSH AX
PUSH AX
CALL @BDOS86
@HLT ENDP
;
; NEVER RETURNS
;
@BDOS86 PROC NEAR
;(FUNC:INTEGER; PARM:PTR):INTEGER;
POP BX ;RETADR
POP DX ;LO WORD OF PARM
POP ES ;HI WORD OF PARM
POP CX
CMP CX,26 ;SET DMA FUNCTION?
JZ SETDMA ;IF SO, HANDLE SPECIAL
PUSH BX
PUSH DS
MOV AX,ES
MOV DS,AX
PUSH BP ;ADDED 12-11-81 MGL
INT 224 ;CALL CP/M-86 BDOS VIA AN INTERRUPT
POP BP ;ADDED 12-11-81 MGL
XOR AH,AH ;ZERO HI BYTE
; RETURN VALUE IS IN AX, AS PASCAL/MT+86 WANTS IT
POP DS
RET
SETDMA:
PUSH BX ;SAVE RET ADR
PUSH DX ;SAVE LO WORD OF PARM
PUSH CX
MOV DX,ES ;GET HI WORD OF PARM TO DX
MOV CX,33H ;SET DMA BASE
PUSH BP
INT 224
POP BP
POP CX
POP DX
PUSH BP
INT 224 ;NOW SET DMA OFFSET
POP BP
RET
@BDOS86 ENDP
@BDOSX PROC NEAR
;(FUNC:INTEGER; CH:CHAR) - NO RETURN VALUE, USED FOR CONSOLE OUT
POP BX ;RET ADR
POP DX
POP CX
PUSH BX
PUSH BP
INT 224
POP BP
RET
@BDOSX ENDP
CODE ENDS
END
«eof»