home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
ega
/
egasmall.asm
< prev
next >
Wrap
Assembly Source File
|
1992-09-08
|
2KB
|
76 lines
Page 60,132
Title SMALL -- Load EGA 8x8 font for 25 or 43 line screens.
Subttl Thomas V. Hoffmann, January 1985
;--This program selects 80x25 alpha color mode (mode 3), loads the
; EGA character generator with the 8x8 font, and causer BIOS to
; recalculate the video parameters for maximum screen dimentions.
;
; With 350-line displays, this gives 43 lines per screen.
; With 200-line displays, this gives 25 lines per screen.
;
; Execute:
; MASM SMALL.ASM
; LINK SMALL
;
stack segment para stack 'stack'
dw 64 dup(0)
stack ends
bdata segment at 40H ; BIOS data segment
org 63H
CRTC dw ? ; base I/O address of CRTC
org 87H
info db ? ; bit 0=1 inhibits cursor emulation
bdata ends
code segment para public 'code'
small proc far
push es ; push ES:0 for return to DOS
sub ax,ax
push ax
mov ax,bdata ; set DS to BIOS data segment
mov ds,ax
assume ds:bdata
mov ax,0003H ; set 80-column alpha mode
int 10H
mov ax,1112H ; load 8x8 font
mov bl,0 ; into block 0
int 10H ; and recalc screen
; This code sets the EGA CRTC cursor register directly, after
; inhibiting the BIOS cursor emulation function. On 350-line
; displays, this prevents BIOS from setting the cursor to lines
; 11 and 12, which are not displayed for 8 line characters.
or info,1 ; inhibit cursor emulation
mov ax,0100H ; set cursor
mov bh,0 ; for page 0
mov cx,0600H ; to last two lines
int 10H ; (start on 6, off on 0)
page
; This code sets the underline location register in the CRTC to
; the last line of the character box (line 7). BIOS incorrectly
; sets it to line 8, which is not displayed.
mov dx,CRTC ; get CRTC base address
mov al,14H ; select underline loc register
out dx,al
inc dx ; point DX to CRTC data register
mov al,7 ; set underline location to line 7
out dx,al
; This code enables the EGA BIOS print screen routine, which
; can handle non-standard display dimentions. In this case
; it handles 43 lines of characters on 350-line displays.
mov ax,1200H ; select EGA screen print
mov bl,20H ; routine
int 10H
ret ; return to DOS
small endp
code ends
end small ; label needed for linker [M. Papa]