Initial commit
This commit is contained in:
142
LIB386/LIB_SVGA/S_PAL.ASM
Normal file
142
LIB386/LIB_SVGA/S_PAL.ASM
Normal file
@@ -0,0 +1,142 @@
|
||||
;----------------------------------------------------------------------------
|
||||
; 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
|
||||
Reference in New Issue
Block a user