From 8025aca6888f1738d935ea82e6c71ed462b9273a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Hord=C3=A9?= Date: Tue, 30 Nov 2004 19:28:32 +0000 Subject: [PATCH] feat: bibliotheque gerant les fichier BMP --- lib/bmp.asm | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 lib/bmp.asm diff --git a/lib/bmp.asm b/lib/bmp.asm new file mode 100644 index 0000000..f1e9be7 --- /dev/null +++ b/lib/bmp.asm @@ -0,0 +1,108 @@ +.model tiny +.486 +smart +locals +.code +org 0h + +include ..\include\mem.h +include ..\include\bmp.h + +start: +header exe <,1,0,,,,offset exports,> + +exports: + db "showbmp",0 + dw showbmp + db "loadbmppalet",0 + dw loadbmppalet + dw 0 + + +;==========SHOWBMP========= +;Affiche le BMP pointée par DS:%0 en %1, %2 +;<- DS:%0 BMP, %1 coordonnées X, %2 coordonnées Y +;-> +;========================== +showbmp PROC FAR + ARG pointer:word, x:word, y:word=taille + push bp + mov bp,sp + push ax bx cx si di + mov si,[pointer] + cmp word ptr [si+BMP_file.BMP_FileType],"MB" + jne @@errorshowing + mov di,si + add di,436h + mov ah,8 + xor bx,bx + mov cx,[si+offset BMP_File.BMP_height] +@@bouclette: + mov al,[di] + push bx cx + add bx,[x] + add cx,[y] + int 47h + pop cx bx + inc bx + inc di + cmp bx,[si+offset BMP_File.BMP_width] + jb @@bouclette + xor bx,bx + dec cx + cmp cx,0 + jne @@bouclette + clc + pop di si cx bx ax + pop bp + retf taille + +@@errorshowing: + stc + pop di si cx bx ax + pop bp + retf taille + +xc dw 0 +yc dw 0 +showbmp ENDP + + +;==========LOADBMPPALET========= +;Charge la palette du BMP pointée par DS:%0 +;-> DS:%0 BMP +;<- +;=============================== +loadbmppalet PROC FAR + ARG pointer:word=taille + push bp + mov bp,sp + push 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 + pop si dx cx bx ax + pop bp + retf taille +loadbmppalet ENDP + +end start