mirror of https://git.ia64.cc/perso/cos2000v1.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
351 lines
5.5 KiB
351 lines
5.5 KiB
model tiny,stdcall |
|
p586N |
|
locals |
|
jumps |
|
codeseg |
|
option procalign:byte |
|
|
|
include "..\include\mem.h" |
|
include "..\include\divers.h" |
|
include "..\include\graphic.h" |
|
|
|
org 0h |
|
|
|
start: |
|
header exe <"CE",1,0,0,,offset imports,,offset realstart> |
|
|
|
realstart: |
|
mov ax,0305h |
|
mov bx,0008h |
|
int 16h |
|
call [savestate] |
|
call [setvideomode],2 |
|
xor ebp,ebp |
|
xor ax,ax |
|
mov fs,ax |
|
call [disablescroll] |
|
adres: |
|
call [saveparamto],offset infos |
|
call [readsector],[sect],offset buffer |
|
jnc adres2 |
|
errtr: |
|
call [setxy],0,[word ptr lastline] |
|
call [print],offset errordisk |
|
xor ax,ax |
|
int 16h |
|
adres2: |
|
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 [sizex],al |
|
and bl,11b |
|
mov [sizex2],bl |
|
mov al,[infos.mode] |
|
cmp al,[oldmode] |
|
je noinit |
|
call [clearscreen] |
|
mov [oldmode],al |
|
noinit: |
|
call [setxy],0,0 |
|
mov edi,ebp |
|
mov bh,[lastline] |
|
lines: |
|
xor edx,edx |
|
mov dx,di |
|
push edx |
|
mov edx,edi |
|
mov dx,[sect] |
|
push edx |
|
push offset spaces |
|
call [print] |
|
mov dx,di |
|
mov al,[sizex] |
|
mov esi,edi |
|
doaline: |
|
push [dword ptr di+offset buffer] |
|
push 8 |
|
call [showhex] |
|
call [showchar],' ' |
|
inc edi |
|
dec al |
|
jnz doaline |
|
mov edi,esi |
|
push offset spaces2 |
|
call [print] |
|
mov al,[sizex] |
|
doaline2: |
|
push [word ptr di+offset buffer] |
|
call [showchar] |
|
inc edi |
|
dec al |
|
jnz doaline2 |
|
dec bh |
|
je outes |
|
cmp [sizex2],0 |
|
je lines |
|
call [addline] |
|
jmp lines |
|
outes: |
|
call [setxy],0,[word ptr lastline] |
|
call [print],offset menu |
|
waitkey: |
|
mov ax,0 |
|
int 16h |
|
cmp ax,3B00h |
|
jne suit |
|
cmp bp,8*16 |
|
jae waitkey |
|
add bp,16 |
|
jmp adres2 |
|
suit: |
|
cmp ax,3C00h |
|
jne suit2 |
|
cmp bp,0 |
|
je waitkey |
|
sub bp,16 |
|
jmp adres2 |
|
suit2: |
|
cmp ax,3D00h |
|
jne suit3 |
|
cmp [sect],2880 |
|
ja waitkey |
|
inc [sect] |
|
jmp adres |
|
suit3: |
|
cmp ax,3E00h |
|
jne suit4 |
|
cmp [sect],0 |
|
je waitkey |
|
dec [sect] |
|
jmp adres |
|
suit4: |
|
cmp ax,3F00h |
|
jne suit5 |
|
jmp adres2 |
|
suit5: |
|
cmp ax,4000h |
|
jne suit6 |
|
call [writesector],[sect],offset buffer |
|
jnc waitkey |
|
jmp errtr |
|
suit6: |
|
cmp ax,4100h |
|
jne suit7 |
|
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 |
|
call calc1 |
|
call calc2 |
|
waitst: |
|
mov ax,0 |
|
int 16h |
|
cmp ah,41h |
|
jne tre |
|
mov [dword ptr pope],' EUV' |
|
push cs |
|
pop es |
|
call [writesector],[sect],offset buffer |
|
jnc waitkey |
|
jmp errtr |
|
tre: |
|
cmp al,0 |
|
jne write |
|
cmp ah,48h |
|
jne tre1 |
|
cmp [yy],0 |
|
je waitst |
|
dec [yy] |
|
jmp cursor |
|
tre1: |
|
cmp ah,50h |
|
jne tre2 |
|
mov al,[lastline] |
|
dec al |
|
xor ah,ah |
|
cmp [yy],ax |
|
je waitst |
|
inc [yy] |
|
jmp cursor |
|
tre2: |
|
cmp ah,4Dh |
|
jne tre4 |
|
cmp [xx],15 |
|
je waitst |
|
inc [xx] |
|
jmp cursor |
|
tre4: |
|
cmp ah,4Bh |
|
jne waitst |
|
cmp [xx],0 |
|
je waitst |
|
dec [xx] |
|
jmp cursor |
|
write: |
|
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 |
|
writs: |
|
mov ax,0 |
|
int 16h |
|
mov ch,cl |
|
call asciihex2dec |
|
cmp cl,15 |
|
ja writs |
|
shl ch,4 |
|
add ch,cl |
|
mov [es:bx+1],al |
|
mov [es:si-1],ch |
|
mov ax,bx |
|
call calc3 |
|
mov [bx],ch |
|
inc [xx] |
|
cmp [xx],16 |
|
jne pasde |
|
inc [yy] |
|
mov [xx],0h |
|
pasde: |
|
call calc1 |
|
call calc2 |
|
jmp waitst |
|
cursor: |
|
call calc1 |
|
call calc2 |
|
jmp waitst |
|
suit7: |
|
cmp ax,4200h |
|
jne adres |
|
call [restorestate] |
|
retf |
|
calc1: |
|
push ax dx si |
|
mov ax,[xx] |
|
mov dx,[xx] |
|
shl ax,2 |
|
shl dx,1 |
|
add ax,dx |
|
add ax,27 |
|
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 |
|
pop si dx ax |
|
ret |
|
calc2: |
|
push ax bx dx |
|
mov si,[yy] |
|
mov dx,[yy] |
|
shl si,5 |
|
shl dx,7 |
|
add si,dx |
|
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 |
|
pop dx bx ax |
|
ret |
|
calc3: |
|
push dx |
|
xor bx,bx |
|
mov bx,[xx] |
|
mov dx,[yy] |
|
shl dx,4 |
|
add bx,dx |
|
add bx,bp |
|
add bx,offset buffer |
|
pop dx |
|
ret |
|
|
|
asciihex2dec: |
|
cmp al,'a' |
|
jb nomin |
|
cmp al,'f' |
|
ja nomin |
|
sub al,'a'-'A' |
|
jmp ismaj |
|
nomin: |
|
cmp al,'A' |
|
jb nomaj |
|
cmp al,'F' |
|
ja nomaj |
|
ismaj: |
|
mov cl,al |
|
sub cl,'A'-10 |
|
jmp endt |
|
nomaj: |
|
mov cl,al |
|
sub cl,'0' |
|
endt: |
|
ret |
|
|
|
xx dw 0 |
|
yy dw 0 |
|
xxyy dw 3 |
|
xxyy2 dw 3 |
|
|
|
lastline db 0 |
|
sizex db 0 |
|
sizex2 db 0 |
|
buffer db 2048 dup (0) |
|
|
|
dep db ':',0 |
|
errordisk db '\c74Une erreur est apparue sur le lecteur, appuyez sur une touche ',0 |
|
menu db '\c70Haut&Bas [F1/2] Secteur [F3/4] Charger/Sauver [F5/6] Mode [F7] Quit. [F8] ' |
|
pope db 'VUE ',0 |
|
spaces db '\c02%hW:%hW \c04| \c07',0 |
|
spaces2 db '\c04 | \c07',0 |
|
|
|
showbuffer db 35 dup (0FFh) |
|
oldmode db 0 |
|
sect dw 0 |
|
infos vgainf <> |
|
|
|
importing |
|
use DISQUE,readsector |
|
use DISQUE,writesector |
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|