106 lines
1.9 KiB
NASM
106 lines
1.9 KiB
NASM
|
model tiny,stdcall
|
|||
|
p586N
|
|||
|
locals
|
|||
|
jumps
|
|||
|
codeseg
|
|||
|
option procalign:byte
|
|||
|
|
|||
|
include "..\include\mem.h"
|
|||
|
include "..\include\divers.h"
|
|||
|
include "..\include\bmp.h"
|
|||
|
|
|||
|
org 0h
|
|||
|
|
|||
|
start:
|
|||
|
header exe <"CE",1,0,0,offset exports,offset imports,,>
|
|||
|
|
|||
|
exporting
|
|||
|
declare showbmp
|
|||
|
declare loadbmppalet
|
|||
|
ende
|
|||
|
|
|||
|
importing
|
|||
|
use VIDEO,showpixel
|
|||
|
endi
|
|||
|
|
|||
|
;==========SHOWBMP=========
|
|||
|
;Affiche le BMP point<6E>e par DS:%0 en %1, %2
|
|||
|
;<- DS:%0 BMP, %1 coordonn<6E>es X, %2 coordonn<6E>es Y
|
|||
|
;->
|
|||
|
;==========================
|
|||
|
PROC showbmp FAR
|
|||
|
ARG @pointer:word, @x:word, @y:word
|
|||
|
USES ax,bx,cx,dx,si,di
|
|||
|
mov si,[@pointer]
|
|||
|
cmp [word ptr (bmp_file si).bmp_filetype],"MB"
|
|||
|
jne @@errorshowing
|
|||
|
mov edi,[(bmp_file si).bmp_bitmapoffset]
|
|||
|
add di,400h
|
|||
|
add di,si
|
|||
|
xor ebx,ebx
|
|||
|
mov ecx,[(bmp_file si).bmp_height]
|
|||
|
mov edx,[(bmp_file si).bmp_width]
|
|||
|
;and dx,11111100b
|
|||
|
cmp edx,[(bmp_file si).bmp_width]
|
|||
|
;jae @@noadjust
|
|||
|
;add dx,4
|
|||
|
@@noadjust:
|
|||
|
sub edx,[(bmp_file si).bmp_width]
|
|||
|
@@bouclette:
|
|||
|
push bx cx
|
|||
|
add bx,[@x]
|
|||
|
add cx,[@y]
|
|||
|
call [cs:showpixel],bx,cx,[word ptr di]
|
|||
|
pop cx bx
|
|||
|
inc bx
|
|||
|
inc di
|
|||
|
cmp ebx,[(bmp_file si).bmp_width]
|
|||
|
jb @@bouclette
|
|||
|
xor bx,bx
|
|||
|
;add di,dx
|
|||
|
dec cx
|
|||
|
cmp cx,0
|
|||
|
jne @@bouclette
|
|||
|
clc
|
|||
|
ret
|
|||
|
@@errorshowing:
|
|||
|
stc
|
|||
|
ret
|
|||
|
ENDP showbmp
|
|||
|
|
|||
|
|
|||
|
;==========LOADBMPPALET=========
|
|||
|
;Charge la palette du BMP point<6E>e par DS:%0
|
|||
|
;-> DS:%0 BMP
|
|||
|
;<-
|
|||
|
;===============================
|
|||
|
PROC loadbmppalet FAR
|
|||
|
ARG @pointer:word
|
|||
|
USES ax,bx,cx,dx,si
|
|||
|
mov si,[@pointer]
|
|||
|
mov bx,0400h+36h-4
|
|||
|
mov cx,100h
|
|||
|
mov dx, 3c8h
|
|||
|
@@paletteload:
|
|||
|
mov al, cl
|
|||
|
dec al
|
|||
|
out dx, al
|
|||
|
inc dx
|
|||
|
mov al,[bx+si+2]
|
|||
|
shr al,2
|
|||
|
out dx, al
|
|||
|
mov al,[bx+si+1]
|
|||
|
shr al,2
|
|||
|
out dx, al
|
|||
|
mov al,[bx+si]
|
|||
|
shr al,2
|
|||
|
out dx, al
|
|||
|
sub bx,4
|
|||
|
dec dx
|
|||
|
dec cl
|
|||
|
jnz @@paletteload
|
|||
|
ret
|
|||
|
ENDP loadbmppalet
|
|||
|
|
|||
|
|