143 lines
2.8 KiB
NASM
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
|