home *** CD-ROM | disk | FTP | other *** search
- 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]
-