Files
lba1-classic/LIB386/LIB_SVGA/S_PAL.ASM
Gwen Gourevich c5f4f6ba25 Initial commit
2021-10-27 10:34:18 +02:00

143 lines
2.8 KiB
NASM

;----------------------------------------------------------------------------
; S_PAL.ASM 386
; (c) Adeline 1993
;----------------------------------------------------------------------------
.386p
jumps
.model SMALL, SYSCALL
;----------------------------------------------------------------------------
.data
include svga.ash
MyTab db 768 dup(0)
;----------------------------------------------------------------------------
.code
public NoLanguage Palette
public NoLanguage PalMulti
public NoLanguage PalOne
;----------------------------------------------------------------------------
; Palette( (UBYTE*)PalColor )
;
Palette proc uses esi edi,\
PalColor:DWORD
;----------------------
mov esi, PalColor
lea edi, MyTab
mov ecx, 256
;----------------------
Again: mov al, [esi]
shr al, 2
mov [edi], al
mov al, [esi+1]
shr al, 2
mov [edi+1], al
mov al, [esi+2]
shr al, 2
mov [edi+2], al
add esi, 3
add edi, 3
dec ecx
jnz Again
;----------------------
lea esi, MyTab
mov dx, 03c8h
xor ax, ax
out dx, al
inc dx
mov ecx, 256
Encore:
outsb ; R
outsb ; G
outsb ; B
dec ecx
jnz Encore
;----------------------
ret
Palette endp
;----------------------------------------------------------------------------
; Palette( (UBYTE*)PalColor )
;
PalMulti proc uses esi edi ebx,\
colstart:DWORD, nbcol:DWORD, PalColor:DWORD
;----------------------
mov esi, PalColor
lea edi, MyTab
mov ecx, nbcol
;----------------------
Again: mov al, [esi]
shr al, 2
mov [edi], al
mov al, [esi+1]
shr al, 2
mov [edi+1], al
mov al, [esi+2]
shr al, 2
mov [edi+2], al
add esi, 3
add edi, 3
dec ecx
jnz Again
;----------------------
lea esi, MyTab ; Mytab + start col
mov dx, 03c8h
mov ax, word ptr[colstart]
out dx, al
inc dx
mov ecx, nbcol
Encore:
outsb ; R
outsb ; G
outsb ; B
dec ecx
jnz Encore
;----------------------
ret
PalMulti endp
;----------------------------------------------------------------------------
; PalOne( col, red, green, blue )
; ax col
; bx red
; cx, green
; dx, blue
;
PalOne proc uses ebx,\
col:DWORD, red:DWORD, green:DWORD, blue:DWORD
;----------------------
mov eax, col
mov ebx, red
mov ecx, green
mov edx, blue
shr bl, 2 ; Red >> 2
shr cl, 2 ; Green >> 2
shr dl, 2 ; Blue >> 2
mov ch, dl ; Save Blue
mov dx, 03c8h
out dx, al ; al=Num Color
inc dx
mov al, bl
out dx, al ; Red
mov al, cl
out dx, al ; Green
mov al, ch
out dx, al ; Blue
;----------------------
ret
PalOne endp
;----------------------------------------------------------------------------
; The
End