feat: mise à jour du code pour compilation sur LZASM en stdcall

This commit is contained in:
Nicolas Hordé 2007-03-23 21:46:21 +00:00
parent 2b1f562890
commit 2e23d3853b
1 changed files with 314 additions and 337 deletions

View File

@ -1,54 +1,50 @@
.model tiny
.486
smart
.code
model tiny,stdcall
p586N
locals
jumps
codeseg
option procalign:byte
include "..\include\mem.h"
include "..\include\divers.h"
include "..\include\graphic.h"
org 0h
include ..\include\mem.h
start:
header exe <,1,0,,,offset imports,,>
header exe <"CE",1,0,0,,offset imports,,offset realstart>
realstart:
mov ax,0305h
mov bx,0008h
int 16h
mov ah,28h
int 47h
mov ax,0002
int 47H
mov ah,2
int 47h
call [savestate]
call [setvideomode],2
xor ebp,ebp
xor ax,ax
mov fs,ax
mov ah,43
int 47h
Adres:
mov di,offset infos
mov ah,34
int 47h
dec byte ptr [di]
mov al,[di+1]
call [disablescroll]
adres:
call [saveparamto],offset infos
mov al,[infos.lines]
dec al
mov [lastline],al
mov al,[infos.columns]
sub al,16
mov bl,al
shr al,2
mov [di+1],al
mov [sizex],al
and bl,11b
mov [di+2],bl
mov al,[di+7]
cmp al,oldmode
mov [sizex2],bl
mov al,[infos.mode]
cmp al,[oldmode]
je noinit
mov ah,2
int 47h
mov oldmode,al
call [clearscreen]
mov [oldmode],al
noinit:
mov bx,0
mov ah,25
int 47h
mov bh,infos
call [setxy],0,0
mov edi,ebp
mov bh,[lastline]
lines:
xor edx,edx
mov dx,di
@ -60,49 +56,43 @@ lines:
push offset spaces
call [print]
mov dx,di
mov al,infos+1
mov al,[sizex]
mov esi,edi
doaline:
mov edx,edi
shr edx,4*4
shl edx,4*3
mov fs,dx
push dword ptr fs:[di]
push [dword ptr fs:di]
push 8
call [showhex]
push ' '
call [showchar]
call [showchar],' '
inc edi
dec al
jnz doaline
mov edi,esi
push offset spaces2
call [print]
mov al,infos+1
mov al,[sizex]
doaline2:
mov edx,edi
shr edx,4*4
shl edx,4*3
mov fs,dx
push word ptr fs:[di]
push [word ptr fs:di]
call [showchar]
inc edi
dec al
jnz doaline2
dec bh
je outes
cmp byte ptr infos+2,0
cmp [sizex2],0
je lines
mov ah,6
int 47h
call [addline]
jmp lines
outes:
mov bh,0
mov bl,infos
mov ah,25
int 47h
push offset menu
call [print]
call [setxy],0,[word ptr lastline]
call [print],offset menu
waitkey:
mov ax,0
int 16h
@ -138,17 +128,13 @@ outes:
suit6:
cmp ax,4100h
jne suit7
mov dword ptr [pope],'TIDE'
mov bh,0
mov bl,infos
mov ah,25
int 47h
push offset menu
call [print]
mov [dword ptr pope],'TIDE'
call [setxy],0,[word ptr lastline]
call [print],offset menu
mov ax,0B800h
mov es,ax
mov xxyy2,3
mov xxyy,3
mov [xxyy2],3
mov [xxyy],3
call calc1
call calc2
waitst:
@ -156,7 +142,7 @@ waitst:
int 16h
cmp ah,41h
jne tre
mov dword ptr [pope],' EUV'
mov [dword ptr pope],' EUV'
push cs
pop es
jmp adres
@ -165,93 +151,83 @@ tre:
jne write
cmp ah,48h
jne tre1
cmp yy,0
cmp [yy],0
je waitst
dec yy
dec [yy]
jmp cursor
tre1:
cmp ah,50h
jne tre2
mov al,infos
mov al,[lastline]
dec al
xor ah,ah
cmp yy,ax
cmp [yy],ax
je waitst
inc yy
inc [yy]
jmp cursor
tre2:
cmp ah,4Dh
jne tre4
cmp xx,15
cmp [xx],15
je waitst
inc xx
inc [xx]
jmp cursor
tre4:
cmp ah,4Bh
jne waitst
cmp xx,0
cmp [xx],0
je waitst
dec xx
dec [xx]
jmp cursor
write:
call AsciiHex2dec
call asciihex2dec
cmp cl,15
ja waitst
call calc1
call calc2
mov edi,es:[bx-1]
mov dx,es:[si-1]
mov byte ptr es:[bx],0112
mov es:[bx-1],al
mov edi,[es:bx-1]
mov dx,[es:si-1]
mov [byte ptr es:bx],0112
mov [es:bx-1],al
writs:
mov ax,0
int 16H
mov ch,cl
call AsciiHex2dec
call asciihex2dec
cmp cl,15
ja writs
shl ch,4
add ch,cl
mov es:[bx+1],al
mov es:[si-1],ch
mov [es:bx+1],al
mov [es:si-1],ch
mov ax,bx
call calc3
mov gs:[bx],ch
mov [gs:bx],ch
pusha
popa
mov cl,gs:[bx]
mov cl,[gs:bx]
cmp ch,cl
je no
push si ax
mov bh,0
mov bl,infos
mov ah,25
int 47h
push offset msg
call [print]
call [setxy],0,[word ptr lastline]
call [print],offset msg
mov ax,0
int 16h
mov bh,0
mov bl,infos
mov ah,25
int 47h
push offset menu
call [print]
call [setxy],0,[word ptr lastline]
call [print],offset menu
pop bx si
mov es:[bx-1],edi
mov es:[si-1],dx
mov [es:bx-1],edi
mov [es:si-1],dx
no:
inc xx
cmp xx,16
inc [xx]
cmp [xx],16
jne pasde
inc yy
mov xx,0h
inc [yy]
mov [xx],0h
pasde:
call calc1
call calc2
jmp waitst
cursor:
call calc1
call calc2
@ -259,56 +235,52 @@ cursor:
suit7:
cmp ax,4200h
jne adres
mov ah,29h
int 47h
call [restorestate]
retf
calc1:
push ax dx si
mov ax,xx
mov dx,xx
mov ax,[xx]
mov dx,[xx]
shl ax,2
shl dx,1
add ax,dx
add ax,27
mov bx,YY
mov dx,yy
mov bx,[yy]
mov dx,[yy]
shl bx,5
shl dx,7
add bx,dx
add bx,ax
mov byte ptr es:[bx],112
mov byte ptr es:[bx+2],112
mov si,xxyy
mov byte ptr es:[si],07
mov byte ptr es:[si+2],07
mov xxyy,bx
mov [byte ptr es:bx],112
mov [byte ptr es:bx+2],112
mov si,[xxyy]
mov [byte ptr es:si],07
mov [byte ptr es:si+2],07
mov [xxyy],bx
pop si dx ax
ret
calc2:
push ax bx dx
mov si,YY
mov dx,yy
mov si,[yy]
mov dx,[yy]
shl si,5
shl dx,7
add si,dx
mov dx,xx
mov dx,[xx]
shl dx,1
add si,dx
add si,129
mov byte ptr es:[si],112
mov bx,xxyy2
mov byte ptr es:[bx],07
mov xxyy2,si
mov [byte ptr es:si],112
mov bx,[xxyy2]
mov [byte ptr es:bx],07
mov [xxyy2],si
pop dx bx ax
ret
calc3:
push dx
xor ebx,ebx
mov bx,xx
mov dx,yy
mov bx,[xx]
mov dx,[yy]
shl dx,4
add bx,dx
add ebx,ebp
@ -318,7 +290,6 @@ calc3:
mov gs,dx
pop dx
ret
asciihex2dec:
cmp al,'a'
jb nomin
@ -341,13 +312,16 @@ calc3:
endt:
ret
dep db ':',0
sect dw 0
xx dw 0
yy dw 0
xxyy dw 3
xxyy2 dw 3
lastline db 0
sizex db 0
sizex2 db 0
dep db ':',0
msg db '\c74Erreur : zone non modifiable (ROM) pressez une touche pour continuer ',0
menu db '\c70haut/bas [F1/2] Offset [F3/4] Segment [F5/6] Mode F7, Quitter F8 MODE '
pope db 'VUE ',0
@ -356,18 +330,21 @@ spaces2 db '\c04 | \c07',0
showbuffer db 35 dup (0FFh)
oldmode db 0
infos db 40 dup (0)
infos vgainf <>
imports:
db "VIDEO.LIB::print",0
print dd 0
db "VIDEO.LIB::showhex",0
showhex dd 0
db "VIDEO.LIB::showchar",0
showchar dd 0
dw 0
end start
importing
use VIDEO,setvideomode
use VIDEO,savestate
use VIDEO,restorestate
use VIDEO,setxy
use VIDEO,addline
use VIDEO,saveparamto
use VIDEO,disablescroll
use VIDEO,clearscreen
use VIDEO.LIB,print
use VIDEO.LIB,showhex
use VIDEO.LIB,showchar
endi