116 lines
2.1 KiB
Plaintext
116 lines
2.1 KiB
Plaintext
;VIDEOIBM.A86
|
||
pagesize 64+11
|
||
;*****************************************************************
|
||
;RASM86 interface to IBM PC/XT ROM video routine.
|
||
;Digital Research Tech. Support
|
||
;15 Sept. 83
|
||
;*********************************************************************
|
||
|
||
PUBLIC VIDEOIBM
|
||
CSEG
|
||
|
||
;Equates:
|
||
VID_INT equ 10h ;how to get to ROM
|
||
P0 equ 16[bp]
|
||
P1 equ 14[bp]
|
||
P2 equ 12[bp]
|
||
P3 equ 10[bp]
|
||
P4 equ 8[bp]
|
||
P5 equ 6[bp]
|
||
P6 equ 4[bp]
|
||
P7 equ 2[bp]
|
||
;return address equals 0[bp]
|
||
|
||
;Entry point:
|
||
VIDEOIBM:
|
||
mov bp,sp ;set up stack frame
|
||
pushf ;must save direction flag
|
||
push si
|
||
push di
|
||
|
||
;Branch to appropriate routine:
|
||
mov bx,P0
|
||
and bx,000Fh ;only 16 entries
|
||
shl bx,1 ;table of words
|
||
call CS:TABLE[bx] ;gone
|
||
|
||
;Back to CB86:
|
||
BACK:
|
||
pop di
|
||
pop si
|
||
popf
|
||
ret 16 ;get rid of 8 entry words
|
||
|
||
;Routine to call ROM:
|
||
ROM:
|
||
mov ah,P0
|
||
int VID_INT
|
||
RET1: ret
|
||
|
||
eject
|
||
;Jump table:
|
||
TABLE equ offset $ ;function #:
|
||
dw SET_MODE ; 0
|
||
dw SET_CURS_TYP ; 1
|
||
dw SET_CURS_POS ; 2
|
||
dw RET_CURS_POS ; 3
|
||
dw RET1 ;Read-Light-Pen not sup.
|
||
dw SET_PAGE ; 5
|
||
dw SCROLL_UP ; 6
|
||
dw SCROLL_DOWN ; 7
|
||
dw RET_CHAR ; 8
|
||
dw CHAR_OUT ; 9
|
||
dw CHAR_ONLY ; 10
|
||
dw SET_PALETTE ; 11
|
||
dw DOT_OUT ; 12
|
||
dw RET1 ;Read-Dot not sup.
|
||
dw TTY_OUT ; 14
|
||
dw GET_MODE ; 15
|
||
|
||
;*********************************************************************
|
||
;The following routines interface by using 8-bit registers and return
|
||
;either nothing to CB86, or have already put the returned value in AX:
|
||
|
||
SET_MODE:
|
||
SET_CURS_TYP:
|
||
SET_CURS_POS:
|
||
SET_PAGE:
|
||
SCROLL_UP:
|
||
SCROLL_DOWN:
|
||
SET_PALETTE:
|
||
TTY_OUT:
|
||
RET_CHAR:
|
||
GET_MODE:
|
||
;Load registers:
|
||
mov al,P1
|
||
mov bh,P2
|
||
mov bl,P3
|
||
mov ch,P4
|
||
mov cl,P5
|
||
mov dh,P6
|
||
mov dl,P7
|
||
|
||
jmps ROM ;ROM: will do the RET
|
||
|
||
;**********************************************************************
|
||
;The rest of the routines use a unique combination of 8- and 16-bit
|
||
;registers:
|
||
|
||
CHAR_OUT:
|
||
CHAR_ONLY:
|
||
DOT_OUT:
|
||
mov al,P1
|
||
mov bh,P2
|
||
mov bl,P3
|
||
mov cx,P4
|
||
mov dx,P6
|
||
jmp ROM
|
||
|
||
RET_CURS_POS:
|
||
mov bh,P2
|
||
call ROM
|
||
mov ax,dx
|
||
ret
|
||
|
||
END
|
||
|