Metropoli BBS
VIEWER: l33.asm MODE: TEXT (ASCII)
        name    _L33set
        ;   void L33set(void);
        extrn   _EGA12set:FAR
L33_TEXT       segment byte public 'CODE'
        org     100h
        assume  cs:L33_TEXT
_L33set         proc    near
        push    ds

        mov     ax,1202h        ; next scanline = 400
        mov     bl,30h
        int     10h
        cmp     al,12h
        jne     @out            ; VGA not active: bailout

        MOV     AX,0003         ; textmode 0x03
        INT     10h      

        MOV     AX,1111h        ; 8x14 char set & video parameters
        MOV     BL,00   
        INT     10h      

        mov     dx,03d4h
        mov     al,09h
        out     dx,al
        inc     dx
        in      al,dx
        and     al,0e0h
        or      al,0bh
        out     dx,al

        mov     dx,03d4h
        mov     al,12h
        out     dx,al
        inc     dx
        mov     al,8bh
        out     dx,al

        XOR     AX,AX   
        MOV     DS,AX   
        MOV     AL,0bh   
        MOV     ds:[0485h],AL           ; update BIOScrtpoints 
        MOV     AL,20h
        MOV     ds:[0484h],AL           ; update BIOScrtrows

        mov     ah,1
        mov     ch,9
        mov     cl,0bh
        int     10h                     ; set cursor size

        mov     ax,seg _EGA12set
        mov     es,ax
        mov     bp,offset _EGA12set
        mov     ax,1100h
        mov     bx,0c00h
        mov     cx,0100h
        mov     dx,0
        int     10h                    ; load custom character generator
@out:
        pop     ds
        mov     ax,4c00h
        int     21h
_L33set         endp
L33_TEXT        ends
        end     _L33set

[ RETURN TO DIRECTORY ]