; ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
; ³ (c) Lord Julus - 2000                Vxtasy #1 - Magazine source code ³
; ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

setfont:
        Mov  dx,03c4h
        Mov  ax,0402h
        Out  dx,ax      ;CPU writes only to map 2
        Mov  ax,0704h
        Out  dx,ax      ;seqvential addressing
        Mov  dx,03ceh
        Mov  ax,0204h   ;map 2 for CPU reads
        Out  dx,ax
        Mov  ax,0005h   ;disable odd even addressing
        Out  dx,ax
        Mov  ax,0406h   ;Map starts at A000:0000 (64 Kb mode---0AFFFh)
        Out  dx,ax
;----------------------------------------------------------------------
        push ds
        push es
        mov ax,0a000h
        mov es,ax
;-----------------
        mov si,offset custfont
        mov di,0
        mov cx,255
lop1:   push cx
        mov cx,8
lop2:   lodsw
        stosw
        loop lop2
        pop cx
        add di,16
        loop lop1
        pop es
        pop ds
;----------------------------------------------------------------------
        Mov  dx,03c4h
        Mov  ax,0302h
        Out  dx,ax      ;CPU writes to map 0, 1
        Mov  ax,0304h
        Out  dx,ax      ;odd-even addressing
        Mov  dx,03ceh
        Mov  ax,0004h
        Out  dx,ax      ;select map 0 for CPU reads
        Mov  ax,1005h
        Out  dx,ax      ;enable odd even addressing
        Mov  ax,0e06h
        Out  dx,ax      ;Map starts at B800:0000h (color text modes)
        Ret

setpalette proc near
        pusha
        mov ax, custompalette
        cmp ax, TRUE
        jne no_custom_palette
        lea si, custom_palette
        mov custompalettevalue, 1
        call setpal
        jmp exit_setpalette

no_custom_palette:
        lea si, original_palette
        mov custompalettevalue, 0
        call setpal

exit_setpalette:
        popa
        ret
setpalette endp

setpal proc near
        mov cx,6*3
        mov dx,3c8h
        xor al,al
        out dx,al
        call set_those

        mov al,14h
        out dx,al
        mov cx,3
        call set_those

        mov al,7
        out dx,al
        mov cx,3
        call set_those

        mov al,38h
        out dx,al
        mov cx,8*3
        call set_those
        retn
;------------------------------------------------------------------
set_those:
        push dx
        mov dx,3c9h
nnn:    lodsb
        add al,byte ptr ds:[dimmer]
        cmp al,63
        jg ituy
        cmp al,0
        jl itur
ii:     out dx,al
        loop nnn
        pop dx
        retn
ituy:   mov al,63
        jmp short ii
itur:   xor al,al
        jmp short ii
         ret

setpal endp

