feat: amélioration du système d'installation. Ajout d'une application qui permet de lancer un logo BMP de cos2000.
This commit is contained in:
parent
00571c6cc7
commit
f3db02caa1
57
asm.bat
57
asm.bat
|
@ -1,12 +1,47 @@
|
|||
@echo off
|
||||
del system.bin
|
||||
tasm boot.asm /t/x/m4
|
||||
tasm mem.asm /t/x/m4
|
||||
tasm choise.asm /t/x/m4
|
||||
tasm vg2.asm /t/x/m4
|
||||
tasm sect.asm /t/x/m4
|
||||
tlink boot.obj /x
|
||||
del boot.obj
|
||||
exe2boot.com
|
||||
del boot.exe
|
||||
cosinit.com
|
||||
|
||||
echo Assembling file %1...
|
||||
util\tasm %1.asm /m5/x/t
|
||||
if errorlevel 1 goto end
|
||||
if "%1"=="boot" goto boot
|
||||
echo Linking file %1...
|
||||
util\tlink %1.obj /x/t
|
||||
if errorlevel 1 goto end
|
||||
echo Copying file %1...
|
||||
if "%1"=="video" goto video
|
||||
if "%1"=="system" goto system
|
||||
if "%1"=="setup" goto setup
|
||||
copy %1.com ..\data\%1.exe>nul
|
||||
goto end
|
||||
|
||||
:boot
|
||||
echo Linking file %1...
|
||||
util\tlink %1.obj /x
|
||||
if errorlevel 1 goto end
|
||||
echo Copying file %1...
|
||||
util\exe2boot %1.exe
|
||||
copy %1.bin ..\data\%1.bin>nul
|
||||
goto end
|
||||
|
||||
:video
|
||||
type thin8x8.fnt>>%1.com
|
||||
:system
|
||||
copy %1.com ..\data\%1.sys>nul
|
||||
goto end
|
||||
:setup
|
||||
copy %1.com ..\%1.com>nul
|
||||
goto end
|
||||
|
||||
:end
|
||||
if not exist *.bin goto exes
|
||||
del *.bin
|
||||
:exes
|
||||
if not exist *.exe goto coms
|
||||
del *.exe
|
||||
:coms
|
||||
if not exist *.com goto objs
|
||||
del *.com
|
||||
:objs
|
||||
if not exist *.obj goto nobjs
|
||||
del *.obj
|
||||
:nobjs
|
||||
|
|
8
boot.asm
8
boot.asm
|
@ -34,7 +34,7 @@ okloading db 'COS search system',0Dh,0ah,0
|
|||
syst db 'Ok',0dh,0ah,0
|
||||
dot db '.',0
|
||||
carry db 0dh,0ah,0
|
||||
Sys db 'system ',0
|
||||
Sys db 'system',0,0,0,0,0,0
|
||||
sys2 db 'sys',0
|
||||
|
||||
errorboot:
|
||||
|
@ -175,7 +175,7 @@ push ax cx dx si
|
|||
mov CL, DL ;{ Set the sector }
|
||||
and CL, 63 ;{ Top two bits are bits 8&9 of the cylinder }
|
||||
xor DX, DX
|
||||
div head
|
||||
div word ptr pope
|
||||
mov CH, DL ;{ Set the track bits 0-7 }
|
||||
mov AL, DH
|
||||
ror AL, 1
|
||||
|
@ -183,7 +183,7 @@ push ax cx dx si
|
|||
and AL, 11000000b
|
||||
or CL, AL ;{ Set bits 8&9 of track }
|
||||
xor dX, DX
|
||||
div pope
|
||||
div head
|
||||
mov DH, DL ;{ Set the head }
|
||||
inc CL
|
||||
mov SI, 4
|
||||
|
@ -214,6 +214,6 @@ again:
|
|||
|
||||
|
||||
Buffer equ $
|
||||
|
||||
boots ends
|
||||
end start
|
||||
|
||||
|
|
224
cosinit.asm
224
cosinit.asm
|
@ -1,224 +0,0 @@
|
|||
.model tiny
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
|
||||
ent equ 32h
|
||||
|
||||
start:
|
||||
jmp CopyCOS
|
||||
|
||||
DiskSectorsPerTrack dw 18
|
||||
DiskTracksPerHead dw 80
|
||||
DiskHeads dw 2
|
||||
NameBoot db 'Boot.bin',0
|
||||
Namesystem db 'System.bin',0
|
||||
Message db 0Ah,0Dh,'Installation of the COS (Celyn Operating System) !!',0Ah,0Dh,'Written By Nico',0Ah,0Dh,'Copyright 2000',0Ah,0Dh,'Please insert a floppy disk and press a key...',0Ah,0Dh,'Be careful! All the disk is going to be deleted',0Ah,0dh,'$'
|
||||
Message2 db 0Ah,0Dh,'Create boot sector$'
|
||||
systfile db 0Ah,0Dh,'Creating file allocation table 16 bits$'
|
||||
systfile2 db 0Ah,0Dh,'Creating file information table 32 bytes$'
|
||||
systfile3 db 0Ah,0Dh,'Creating operating system files$'
|
||||
Errormsg db 0Ah,0Dh,0Ah,0Dh,'An error has stopped the copying process !',0Ah,0Dh,'$'
|
||||
Ok db 0Ah,0Dh,0Ah,0Dh,'The boot sector and the system files had been succefully copied.',0Ah,0Dh, 'To try COS reboot with this system disk',0Ah,0Dh,0Ah,0Dh,'$'
|
||||
|
||||
entrie db 'System file',0
|
||||
db 'sys',0,0
|
||||
dw 1234h
|
||||
dw 1234h
|
||||
dw 1234h
|
||||
dw 1234h
|
||||
db 0h
|
||||
dw ent
|
||||
dw 512
|
||||
dw 0h
|
||||
dw 0
|
||||
|
||||
|
||||
CopyCOS:
|
||||
mov ah,09
|
||||
mov dx,offset message
|
||||
int 21h
|
||||
jc error
|
||||
mov ax,0
|
||||
int 16h
|
||||
mov ah,09
|
||||
mov dx,offset message2
|
||||
int 21h
|
||||
mov ax,3D00h
|
||||
mov dx,offset nameboot
|
||||
int 21h
|
||||
jc error
|
||||
mov bx,ax
|
||||
mov ax,4202h
|
||||
xor cx,cx
|
||||
xor dx,dx
|
||||
int 21h
|
||||
jc error
|
||||
cmp dx,0
|
||||
jne error
|
||||
cmp ax,512
|
||||
jne error
|
||||
mov ax,4200h
|
||||
xor cx,cx
|
||||
xor dx,dx
|
||||
int 21h
|
||||
jc error
|
||||
mov ah,3fh
|
||||
mov cx,512
|
||||
mov dx,offset buffer
|
||||
int 21h
|
||||
jc error
|
||||
mov ah,3eh
|
||||
int 21h
|
||||
jc error
|
||||
mov cx,0
|
||||
mov bx,dx
|
||||
call writesector
|
||||
jne error
|
||||
jc error
|
||||
mov ah,09
|
||||
mov dx,offset systfile3
|
||||
int 21h
|
||||
jc error
|
||||
mov ax,3D00h
|
||||
mov dx,offset namesystem
|
||||
int 21h
|
||||
jc error
|
||||
mov bx,ax
|
||||
mov ax,4202h
|
||||
xor cx,cx
|
||||
xor dx,dx
|
||||
int 21h
|
||||
jc error
|
||||
cmp dx,0
|
||||
jne error
|
||||
sub ax,1 ;+512
|
||||
cmp ax,0
|
||||
jl error
|
||||
shr ax,9
|
||||
inc ax
|
||||
mov bp,ax
|
||||
mov ax,4200h
|
||||
xor cx,cx
|
||||
xor dx,dx
|
||||
int 21h
|
||||
jc error
|
||||
mov ah,3fh
|
||||
mov cx,0FFFFh
|
||||
mov dx,offset buffer
|
||||
int 21h
|
||||
jc error
|
||||
mov bx,dx
|
||||
mov cx,ent
|
||||
mov dx,bp
|
||||
syst:
|
||||
call writesector
|
||||
jne error
|
||||
add bx,512
|
||||
inc cx
|
||||
dec dx
|
||||
jnz syst
|
||||
ret ;++++++++++++++++++=
|
||||
mov ah,09
|
||||
mov dx,offset systfile
|
||||
int 21h
|
||||
mov cx,512/4
|
||||
mov di,bx
|
||||
mov eax,0
|
||||
rep stosd
|
||||
mov cx,13
|
||||
fatanymore:
|
||||
call writesector
|
||||
jne error
|
||||
dec cx
|
||||
cmp cx,1
|
||||
ja fatanymore
|
||||
mov di,bx
|
||||
mov ax,0FFF0h
|
||||
mov cx,13
|
||||
rep stosw
|
||||
mov ax,0FFFFh
|
||||
stosw
|
||||
mov si,ent
|
||||
dec bp
|
||||
makefat:
|
||||
mov ax,si
|
||||
inc ax
|
||||
shl si,1
|
||||
mov [bx+si],ax
|
||||
mov si,ax
|
||||
dec bp
|
||||
jnz makefat
|
||||
shl si,1
|
||||
mov word ptr [bx+si],0ffffh
|
||||
mov cx,1
|
||||
call writesector
|
||||
jne error
|
||||
mov ah,09
|
||||
mov dx,offset systfile2
|
||||
int 21h
|
||||
jc error
|
||||
mov cx,13
|
||||
mov bx,offset entrie
|
||||
call writesector
|
||||
jne error
|
||||
mov ah,09
|
||||
mov dx,offset ok
|
||||
int 21h
|
||||
jc error
|
||||
ret
|
||||
error:
|
||||
mov ah,09
|
||||
mov dx,offset errormsg
|
||||
int 21h
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
WriteSector:
|
||||
push cx dx si
|
||||
mov AX, CX
|
||||
xor DX, DX
|
||||
div DiskSectorsPerTrack
|
||||
mov CL, DL ;{ Set the sector }
|
||||
and CL, 63 ;{ Top two bits are bits 8&9 of the cylinder }
|
||||
xor DX, DX
|
||||
div DiskTracksPerHead
|
||||
mov CH, DL ;{ Set the track bits 0-7 }
|
||||
mov AL, DH
|
||||
ror AL, 1
|
||||
ror AL, 1
|
||||
and AL, 11000000b
|
||||
or CL, AL ;{ Set bits 8&9 of track }
|
||||
xor DX, DX
|
||||
div DiskHeads
|
||||
mov DH, DL ;{ Set the head }
|
||||
inc CL
|
||||
mov SI, 4
|
||||
TryAgain:
|
||||
mov AL, 1
|
||||
mov DL, 0
|
||||
mov AH, 3
|
||||
int 13h
|
||||
jnc Done
|
||||
dec SI
|
||||
jnz TryAgain
|
||||
Done:
|
||||
mov cl, AH
|
||||
mov ah,9
|
||||
mov dx,offset sign
|
||||
int 21h
|
||||
cmp cl,0
|
||||
pop si dx cx
|
||||
ret
|
||||
|
||||
sign db '.$'
|
||||
buffer db 512 dup (0)
|
||||
|
||||
end start
|
|
@ -177,7 +177,7 @@ waitst:
|
|||
int 16h
|
||||
cmp ah,41h
|
||||
jne tre
|
||||
mov dword ptr [pope],' EUV'
|
||||
mov dword ptr [pope],'WEIV'
|
||||
push cs
|
||||
pop es
|
||||
mov cx,sect
|
||||
|
@ -343,9 +343,9 @@ xx dw 0
|
|||
yy dw 0
|
||||
xxyy dw 3
|
||||
xxyy2 dw 3
|
||||
errordisk db 'Une erreur est survenu sur le lecteur A:, appuyer sur une touche ',0
|
||||
menu db 'Haut F1, Bas F2, Secteurs F3&F4, Load/Save F4&F5, Edit F7, Quitter F8 MODE '
|
||||
pope db 'VUE ',0
|
||||
errordisk db 'An error has occured on drive A:, press a key to continu ',0
|
||||
menu db 'Bottom F1, Top F2, Sectors F3&F4, Load/Save F5&F6, Mode F7, Quit F8 MODE '
|
||||
pope db 'VIEW ',0
|
||||
spaces db ' ³ ',0
|
||||
|
||||
showbuffer db 35 dup (0FFh)
|
|
@ -0,0 +1,450 @@
|
|||
.model tiny
|
||||
.386c
|
||||
.code
|
||||
org 0100h
|
||||
|
||||
|
||||
start:
|
||||
mov ax,0305h
|
||||
mov bx,0008h
|
||||
int 16h
|
||||
mov ax,0002
|
||||
int 47H
|
||||
mov ah,26
|
||||
int 47H
|
||||
mov ah,2
|
||||
int 47h
|
||||
xor ebp,ebp
|
||||
xor ax,ax
|
||||
mov fs,ax
|
||||
Adres:
|
||||
mov di,offset infos
|
||||
mov ah,34
|
||||
int 47h
|
||||
dec infos
|
||||
mov bx,0
|
||||
mov ah,25
|
||||
int 47h
|
||||
mov bh,infos
|
||||
mov edi,ebp
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
lines:
|
||||
mov edx,edi
|
||||
shr edx,4*4
|
||||
shl edx,4*3
|
||||
mov cx,16
|
||||
mov ah,10
|
||||
int 47h
|
||||
mov si,offset dep
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov dx,di
|
||||
mov ah,10
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset spaces
|
||||
int 47h
|
||||
mov al,16
|
||||
mov cl,7
|
||||
mov ah,21
|
||||
int 47h
|
||||
mov esi,edi
|
||||
doaline:
|
||||
mov edx,edi
|
||||
shr edx,4*4
|
||||
shl edx,4*3
|
||||
mov fs,dx
|
||||
mov dl,fs:[di]
|
||||
mov ah,10
|
||||
mov cl,8
|
||||
int 47h
|
||||
mov ah,5
|
||||
int 47h
|
||||
inc edi
|
||||
dec al
|
||||
jnz doaline
|
||||
mov edi,esi
|
||||
mov si,offset spaces
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov al,16
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
doaline2:
|
||||
mov edx,edi
|
||||
shr edx,4*4
|
||||
shl edx,4*3
|
||||
mov fs,dx
|
||||
mov dl,fs:[di]
|
||||
mov ah,7
|
||||
int 47h
|
||||
inc edi
|
||||
dec al
|
||||
jnz doaline2
|
||||
mov ah,6
|
||||
int 47h
|
||||
dec bh
|
||||
jnz lines
|
||||
mov ah,21
|
||||
mov cl,112
|
||||
int 47h
|
||||
mov si,offset menu
|
||||
mov ah,13
|
||||
int 47h
|
||||
waitkey:
|
||||
mov ax,0
|
||||
int 16h
|
||||
cmp ax,3B00h
|
||||
jne suit
|
||||
inc ebp
|
||||
jmp adres
|
||||
suit:
|
||||
cmp ax,3C00h
|
||||
jne suit2
|
||||
dec ebp
|
||||
jmp adres
|
||||
suit2:
|
||||
cmp ax,3D00h
|
||||
jne suit3
|
||||
add ebp,24*16
|
||||
jmp adres
|
||||
suit3:
|
||||
cmp ax,3E00h
|
||||
jne suit4
|
||||
sub ebp,24*16
|
||||
jmp adres
|
||||
suit4:
|
||||
cmp ax,3F00h
|
||||
jne suit5
|
||||
add ebp,010000h
|
||||
jmp adres
|
||||
suit5:
|
||||
cmp ax,4000h
|
||||
jne suit6
|
||||
sub ebp,010000h
|
||||
jmp adres
|
||||
suit6:
|
||||
cmp ax,4100h
|
||||
jne suit7
|
||||
mov dword ptr [pope],'TIDE'
|
||||
mov bl,infos
|
||||
xor bh,bh
|
||||
mov ah,25
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,116
|
||||
int 47h
|
||||
mov si,offset menu
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
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
|
||||
jmp adres
|
||||
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,infos
|
||||
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 gs:[bx],ch
|
||||
pusha
|
||||
popa
|
||||
mov cl,gs:[bx]
|
||||
cmp ch,cl
|
||||
je no
|
||||
push si ax
|
||||
mov ah,25
|
||||
mov bl,infos
|
||||
xor bh,bh
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,117
|
||||
int 47h
|
||||
mov si,offset msg
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ax,0
|
||||
int 16h
|
||||
mov bl,infos
|
||||
xor bh,bh
|
||||
mov ah,25
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,116
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset menu
|
||||
int 47h
|
||||
pop bx si
|
||||
mov es:[bx-1],edi
|
||||
mov es:[si-1],dx
|
||||
no:
|
||||
|
||||
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 waitkey
|
||||
mov ah,27
|
||||
int 47h
|
||||
db 0CBH ; +++++++
|
||||
ret
|
||||
|
||||
calc1:
|
||||
push ax dx si
|
||||
mov ax,xx
|
||||
mov dx,xx
|
||||
shl ax,2
|
||||
shl dx,1
|
||||
add ax,dx
|
||||
add ax,25
|
||||
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,127
|
||||
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
|
||||
shl dx,4
|
||||
add bx,dx
|
||||
add ebx,ebp
|
||||
mov edx,ebx
|
||||
shr edx,4*4
|
||||
shl edx,4*3
|
||||
mov gs,dx
|
||||
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
|
||||
|
||||
dep db ':',0
|
||||
sect dw 0
|
||||
xx dw 0
|
||||
yy dw 0
|
||||
xxyy dw 3
|
||||
xxyy2 dw 3
|
||||
msg db 'Error : Unchangeable area (ROM) press a key to continu ',0
|
||||
menu db 'Top F1, Bottom F2, Offset F3&F4, Segment F5&F6, Mode F7, Quit F8 MODE '
|
||||
pope db 'VUE ',0
|
||||
spaces db ' ³ ',0
|
||||
|
||||
showbuffer db 35 dup (0FFh)
|
||||
Lastread dw 0FFFFh
|
||||
|
||||
ReadSector:
|
||||
push ax cx dx si
|
||||
cmp cx,cs:lastread
|
||||
je done
|
||||
mov cs:LastRead,cx
|
||||
mov AX, CX
|
||||
xor DX, DX
|
||||
div cs:DiskSectorsPerTrack
|
||||
mov CL, DL ;{ Set the sector }
|
||||
and CL, 63 ;{ Top two bits are bits 8&9 of the cylinder }
|
||||
xor DX, DX
|
||||
div cs:DiskTracksPerHead
|
||||
mov CH, DL ;{ Set the track bits 0-7 }
|
||||
mov AL, DH
|
||||
ror AL, 1
|
||||
ror AL, 1
|
||||
and AL, 11000000b
|
||||
or CL, AL ;{ Set bits 8&9 of track }
|
||||
xor dX, DX
|
||||
div cs:DiskHeads
|
||||
mov DH, DL ;{ Set the head }
|
||||
inc CL
|
||||
mov SI, 4
|
||||
TryAgain:
|
||||
mov AL, 1
|
||||
mov DL, 0
|
||||
mov AH, 2
|
||||
int 13h
|
||||
jnc Done
|
||||
dec SI
|
||||
jnz TryAgain
|
||||
mov word ptr cs:lastread,0ffffh
|
||||
Done:
|
||||
pop si dx cx ax
|
||||
ret
|
||||
|
||||
WriteSector:
|
||||
push ax cx dx si
|
||||
cmp cs:Lastread,cx
|
||||
jne nodestruct
|
||||
mov cs:Lastread,0ffffh
|
||||
nodestruct:
|
||||
mov AX, CX
|
||||
xor DX, DX
|
||||
div cs:DiskSectorsPerTrack
|
||||
mov CL, DL ;{ Set the sector }
|
||||
and CL, 63 ;{ Top two bits are bits 8&9 of the cylinder }
|
||||
xor DX, DX
|
||||
div cs:DiskTracksPerHead
|
||||
mov CH, DL ;{ Set the track bits 0-7 }
|
||||
mov AL, DH
|
||||
ror AL, 1
|
||||
ror AL, 1
|
||||
and AL, 11000000b
|
||||
or CL, AL ;{ Set bits 8&9 of track }
|
||||
xor DX, DX
|
||||
div cs:DiskHeads
|
||||
mov DH, DL ;{ Set the head }
|
||||
inc CL
|
||||
mov SI, 4
|
||||
TryAgain2:
|
||||
mov AL, 1
|
||||
mov DL, 0
|
||||
mov AH, 3
|
||||
int 13h
|
||||
jnc Done2
|
||||
dec SI
|
||||
jnz TryAgain2
|
||||
Done2:
|
||||
pop si dx cx ax
|
||||
ret
|
||||
|
||||
DiskSectorsPerTrack dw 18
|
||||
DiskTracksPerHead dw 80
|
||||
DiskHeads dw 2
|
||||
|
||||
infos db 10 dup (0)
|
||||
end start
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
.model tiny
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
|
||||
|
||||
start:
|
||||
jmp transform
|
||||
NameBoot db 'Boot.exe',0
|
||||
nameboot2 db 'Boot.bin',0
|
||||
buffer db 510 dup (0)
|
||||
dw 0AA55h
|
||||
message db 0ah,0dh,'Transformation of boot.com to boot.bin...',0ah,0dh,'By Nico',0ah,0dh,'Copyright 2000',0ah,0dh,'$'
|
||||
ok db 0ah,0dh,'The transformation was done succefully !',0ah,0dh,'$'
|
||||
errormsg db 0ah,0dh,'Some errors has been detected !',0ah,0dh,'$'
|
||||
transform:
|
||||
mov ah,09
|
||||
mov dx,offset message
|
||||
int 21h
|
||||
mov ax,3D00h
|
||||
mov dx,offset nameboot
|
||||
int 21h
|
||||
jc error
|
||||
mov bx,ax
|
||||
mov ax,4202h
|
||||
xor cx,cx
|
||||
xor dx,dx
|
||||
int 21h
|
||||
jc error
|
||||
cmp dx,0
|
||||
jne error
|
||||
mov ax,4200h
|
||||
xor cx,cx
|
||||
mov dx,7E00h
|
||||
int 21h
|
||||
jc error
|
||||
mov ah,3fh
|
||||
mov cx,512
|
||||
mov dx,offset buffer
|
||||
int 21h
|
||||
jc error
|
||||
mov ah,3eh
|
||||
int 21h
|
||||
jc error
|
||||
mov ah,3ch
|
||||
xor cx,cx
|
||||
mov dx,offset nameboot2
|
||||
int 21h
|
||||
jc error
|
||||
mov ah,40h
|
||||
mov cx,512
|
||||
mov dx,offset buffer
|
||||
int 21h
|
||||
jc error
|
||||
mov ah,09
|
||||
mov dx,offset ok
|
||||
int 21h
|
||||
ret
|
||||
error:
|
||||
mov ah,09
|
||||
mov dx,offset errormsg
|
||||
int 21h
|
||||
ret
|
||||
|
||||
end start
|
|
@ -0,0 +1,369 @@
|
|||
.model tiny
|
||||
.386c
|
||||
.code
|
||||
org 0100h
|
||||
|
||||
|
||||
start:
|
||||
mov si,offset logo
|
||||
call searchfile
|
||||
mov bx,7000h
|
||||
mov es,bx
|
||||
mov bx,0h
|
||||
call loadfatway
|
||||
push es
|
||||
pop ds
|
||||
call loadbmp
|
||||
xor ax,ax
|
||||
xor bx,bx
|
||||
call showbmp
|
||||
mov ax,0
|
||||
int 16h
|
||||
ret
|
||||
db 0CBH
|
||||
|
||||
loadbmp:
|
||||
push ax bx cx dx bp ds
|
||||
mov ax,4
|
||||
int 47h
|
||||
mov ax,ds:[18]
|
||||
mov si,ax
|
||||
shr ax,2
|
||||
and si,11b
|
||||
cmp si,0
|
||||
je is4x
|
||||
add ax,1
|
||||
is4x:
|
||||
mov cs:sizeh,ax
|
||||
mov ax,ds:[22]
|
||||
mov cs:sizev,ax
|
||||
mov di,0FFFFh-1024
|
||||
mov si,54
|
||||
mov cl, 0ffh
|
||||
paletteload:
|
||||
lodsb
|
||||
shr al, 2
|
||||
mov [di+2], al
|
||||
lodsb
|
||||
shr al, 2
|
||||
mov [di+1], al
|
||||
lodsb
|
||||
shr al, 2
|
||||
mov [di+0], al
|
||||
inc si
|
||||
add di, 3
|
||||
dec cl
|
||||
jnz paletteload
|
||||
mov si,0FFFFh-1024
|
||||
mov dx, 3c8h
|
||||
cld
|
||||
mov cl, 0ffh
|
||||
xor bx, bx
|
||||
palettemake:
|
||||
mov al, bl
|
||||
out dx, al
|
||||
inc dx
|
||||
lodsb
|
||||
out dx, al
|
||||
lodsb
|
||||
out dx, al
|
||||
lodsb
|
||||
out dx, al
|
||||
dec dx
|
||||
inc bl
|
||||
dec cl
|
||||
jnz palettemake
|
||||
pop ds bp dx cx bx ax
|
||||
ret
|
||||
sizeh dw 0
|
||||
sizev dw 0
|
||||
|
||||
showbmp:
|
||||
push ax bx cx dx si di ds es
|
||||
mov cx,cs:sizeh
|
||||
mov dx,cs:sizev
|
||||
add bx,dx
|
||||
mov di,ax
|
||||
mov ax,bx
|
||||
shl ax,6
|
||||
shl bx,8
|
||||
add di,bx
|
||||
add di,ax
|
||||
mov bx,di
|
||||
mov ax,0A000H
|
||||
mov es,ax
|
||||
mov si,1024+54
|
||||
mov ax,cx
|
||||
bouclebmp:
|
||||
cmp di,64000
|
||||
jae nopp
|
||||
cld
|
||||
rep movsd
|
||||
no:
|
||||
mov cx,ax
|
||||
sub bx,320
|
||||
mov di,bx
|
||||
dec dx
|
||||
jnz bouclebmp
|
||||
fin:
|
||||
pop es ds di si dx cx bx ax
|
||||
ret
|
||||
nopp:
|
||||
shl cx,2
|
||||
add si,cx
|
||||
jmp no
|
||||
|
||||
Searchfile:
|
||||
push bx dx si di ds es
|
||||
mov di,offset temp
|
||||
mov bx,offset buffer
|
||||
call asciiztofit
|
||||
mov cx,13
|
||||
check:
|
||||
call readsector
|
||||
jc errorboot
|
||||
xor di,di
|
||||
findnext:
|
||||
cmp byte ptr [bx+di],0
|
||||
je errorboot
|
||||
push si di cx
|
||||
mov si,di
|
||||
add si,bx
|
||||
mov di,offset temp
|
||||
mov cx,12+4
|
||||
rep cmpsb
|
||||
pop cx di si
|
||||
je oksystem
|
||||
add di,32
|
||||
inc dx
|
||||
cmp dx,nbfit
|
||||
ja errorboot
|
||||
cmp di,sizec
|
||||
jb findnext
|
||||
inc cx
|
||||
jmp Check
|
||||
oksystem:
|
||||
mov cx,[di+BX+26]
|
||||
errorboot:
|
||||
pop es ds di si dx bx
|
||||
ret
|
||||
|
||||
;->name ds:si ->es:di
|
||||
AsciiZtoFit:
|
||||
push ax bx cx dx si di ds es
|
||||
xor bx,bx
|
||||
mov dx,di
|
||||
noextens:
|
||||
mov al,[si+bx]
|
||||
cmp al,'.'
|
||||
je extens
|
||||
call Issystchar
|
||||
jc errortranslate
|
||||
mov es:[di],al
|
||||
inc di
|
||||
inc bx
|
||||
cmp bx,namesize ;(.)
|
||||
jne noextens
|
||||
erro:
|
||||
stc
|
||||
jmp errortranslate
|
||||
extens:
|
||||
add si,bx
|
||||
inc si
|
||||
sub bx,namesize
|
||||
neg bx
|
||||
mov al,0
|
||||
mov cx,bx
|
||||
cld
|
||||
rep stosb
|
||||
xor bx,bx
|
||||
wasextens:
|
||||
mov al,[si+bx]
|
||||
cmp al,0
|
||||
je endextens
|
||||
call Issystchar
|
||||
jc errortranslate
|
||||
mov es:[di],al
|
||||
inc di
|
||||
inc bx
|
||||
cmp bx,extsize
|
||||
jne wasextens
|
||||
jmp erro
|
||||
endextens:
|
||||
sub bx,extsize
|
||||
neg bx
|
||||
mov al,0
|
||||
mov cx,bx
|
||||
cld
|
||||
rep stosb
|
||||
mov si,dx
|
||||
mov di,dx
|
||||
push es
|
||||
pop ds
|
||||
mov cx,extsize+namesize
|
||||
call uppercaseMEM
|
||||
clc
|
||||
endtranslate:
|
||||
pop es ds di si dx cx bx ax
|
||||
ret
|
||||
errortranslate:
|
||||
stc
|
||||
jmp endtranslate
|
||||
|
||||
;Carry si al = caractŠre systŠme
|
||||
isSystchar:
|
||||
push di
|
||||
mov di,offset exeptchar
|
||||
isexcept:
|
||||
cmp al,cs:[di]
|
||||
je nogood
|
||||
inc di
|
||||
cmp byte ptr cs:[di],0
|
||||
jne isexcept
|
||||
endanal:
|
||||
pop di
|
||||
ret
|
||||
exeptchar db '/\<>:|.',01,0,0
|
||||
nogood:
|
||||
stc
|
||||
jmp endanal
|
||||
|
||||
;Transforme les x caractŠres de la mem en ds:si en maj
|
||||
uppercaseMEM:
|
||||
push si di cx ax
|
||||
mov di,si
|
||||
uppercaser:
|
||||
mov al,ds:[si]
|
||||
inc si
|
||||
cmp al,'A'
|
||||
jb nonmaj
|
||||
cmp al,'Z'
|
||||
ja nonmaj
|
||||
add al,'a'-'A'
|
||||
nonmaj:
|
||||
mov es:[di],al
|
||||
inc di
|
||||
dec cx
|
||||
jnz uppercaser
|
||||
enduppercase:
|
||||
clc
|
||||
pop ax cx di si
|
||||
ret
|
||||
|
||||
nbfit equ 255
|
||||
|
||||
|
||||
namesize equ 12
|
||||
extsize equ 5
|
||||
|
||||
;cx entr‚e -> fatway chemin
|
||||
getfatway:
|
||||
push bx cx es
|
||||
mov bx,offset fatway
|
||||
fatagain:
|
||||
mov cs:[bx],cx
|
||||
add bx,2
|
||||
cmp cx,0FFF0h
|
||||
jae finishload
|
||||
call getfat
|
||||
jnc fatagain
|
||||
finishload:
|
||||
pop es cx bx
|
||||
ret
|
||||
|
||||
lastread dw 0FFFFh
|
||||
|
||||
ReadSector:
|
||||
push ax cx dx si
|
||||
cmp cx,cs:lastread
|
||||
je done
|
||||
mov cs:LastRead,cx
|
||||
mov AX, CX
|
||||
xor DX, DX
|
||||
div cs:DiskSectorsPerTrack
|
||||
mov CL, DL ;{ Set the sector }
|
||||
and CL, 63 ;{ Top two bits are bits 8&9 of the cylinder }
|
||||
xor DX, DX
|
||||
div cs:DiskTracksPerHead
|
||||
mov CH, DL ;{ Set the track bits 0-7 }
|
||||
mov AL, DH
|
||||
ror AL, 1
|
||||
ror AL, 1
|
||||
and AL, 11000000b
|
||||
or CL, AL ;{ Set bits 8&9 of track }
|
||||
xor dX, DX
|
||||
div cs:DiskHeads
|
||||
mov DH, DL ;{ Set the head }
|
||||
inc CL
|
||||
mov SI, 4
|
||||
TryAgain:
|
||||
mov AL, 1
|
||||
mov DL, 0
|
||||
mov AH, 2
|
||||
int 13h
|
||||
jnc Done
|
||||
dec SI
|
||||
jnz TryAgain
|
||||
mov word ptr cs:lastread,0ffffh
|
||||
Done:
|
||||
pop si dx cx ax
|
||||
ret
|
||||
|
||||
|
||||
dot db '.',0
|
||||
|
||||
loadfatway:
|
||||
push bx cx di
|
||||
call getfatway
|
||||
jc endload
|
||||
mov di,offset fatway
|
||||
mov si,offset dot
|
||||
mov ah,13
|
||||
loadagain:
|
||||
mov cx,cs:[di]
|
||||
cmp cx,0FFF0h
|
||||
jae endload
|
||||
add di,2
|
||||
call readsector
|
||||
jc endload
|
||||
int 47h
|
||||
add bx,cs:sizec
|
||||
jmp loadagain
|
||||
endload:
|
||||
pop di cx bx
|
||||
ret
|
||||
|
||||
sizec dw 512
|
||||
reserv dw 1
|
||||
|
||||
;<-cx nøsecteur ->cx code FAT
|
||||
getfat:
|
||||
push es ax bx dx
|
||||
mov ax,cx
|
||||
xor dx,dx
|
||||
div cs:sizec
|
||||
mov cx,ax
|
||||
add cx,cs:reserv
|
||||
mov bx,offset buffer
|
||||
push cs
|
||||
pop es
|
||||
call readsector
|
||||
jc errorgetfat
|
||||
shl dx,1
|
||||
add bx,dx
|
||||
mov cx,cs:[bx]
|
||||
errorgetfat:
|
||||
pop dx bx ax es
|
||||
ret
|
||||
|
||||
logo db 'cos.bmp',0
|
||||
temp db 12+5+1 dup (0)
|
||||
|
||||
DiskSectorsPerTrack dw 18
|
||||
DiskTracksPerHead dw 80
|
||||
DiskHeads dw 2
|
||||
|
||||
fatway equ $
|
||||
|
||||
buffer equ $+1000
|
||||
end start
|
607
mem.asm
607
mem.asm
|
@ -1,607 +0,0 @@
|
|||
.model tiny
|
||||
.386c
|
||||
.code
|
||||
org 0100h
|
||||
|
||||
|
||||
start:
|
||||
mov ax,0305h
|
||||
mov bx,0008h
|
||||
int 16h
|
||||
mov ax,0B800h
|
||||
mov es,ax
|
||||
xor ebp,ebp
|
||||
Adres:
|
||||
call clear
|
||||
mov xy,0
|
||||
mov x,0
|
||||
mov y,0
|
||||
mov ah,24
|
||||
mov ebx,ebp
|
||||
lines:
|
||||
mov colors,7
|
||||
mov edx,ebx
|
||||
shr edx,4*4
|
||||
shl edx,4*3
|
||||
mov cx,16
|
||||
call showhexrow
|
||||
mov si,offset dep
|
||||
call showstring0
|
||||
mov dx,bx
|
||||
mov cx,16
|
||||
call showhexrow
|
||||
mov si,offset spaces
|
||||
call showstring0
|
||||
mov al,16
|
||||
mov edi,ebx
|
||||
mov cx,8
|
||||
mov colors,7
|
||||
doaline:
|
||||
mov edx,ebx
|
||||
shr edx,4*4
|
||||
shl edx,4*3
|
||||
mov fs,dx
|
||||
mov dl,fs:[bx]
|
||||
call showhexrow
|
||||
call space
|
||||
inc ebx
|
||||
dec al
|
||||
jnz doaline
|
||||
mov si,offset spaces
|
||||
call showstring0
|
||||
mov al,16
|
||||
mov colors,7
|
||||
doaline2:
|
||||
mov edx,edi
|
||||
shr edx,4*4
|
||||
shl edx,4*3
|
||||
mov fs,dx
|
||||
mov dl,fs:[di]
|
||||
call showchar
|
||||
inc edi
|
||||
dec al
|
||||
jnz doaline2
|
||||
call line
|
||||
dec ah
|
||||
jnz lines
|
||||
mov colors,112
|
||||
mov si,offset menu
|
||||
call showstring0
|
||||
mov bx,bp
|
||||
waitkey:
|
||||
mov ax,0
|
||||
int 16h
|
||||
cmp ax,3B00h
|
||||
jne suit
|
||||
inc ebp
|
||||
jmp adres
|
||||
suit:
|
||||
cmp ax,3C00h
|
||||
jne suit2
|
||||
dec ebp
|
||||
jmp adres
|
||||
suit2:
|
||||
cmp ax,3D00h
|
||||
jne suit3
|
||||
add ebp,24*16
|
||||
jmp adres
|
||||
suit3:
|
||||
cmp ax,3E00h
|
||||
jne suit4
|
||||
sub ebp,24*16
|
||||
jmp adres
|
||||
suit4:
|
||||
cmp ax,3F00h
|
||||
jne suit5
|
||||
add ebp,010000h
|
||||
jmp adres
|
||||
suit5:
|
||||
cmp ax,4000h
|
||||
jne suit6
|
||||
sub ebp,010000h
|
||||
jmp adres
|
||||
suit6:
|
||||
cmp ax,4100h
|
||||
jne suit7
|
||||
mov dword ptr [pope],'TIDE'
|
||||
mov ax,24
|
||||
call setxy
|
||||
mov colors,116
|
||||
mov si,offset menu
|
||||
call showstring0
|
||||
mov colors,7
|
||||
mov xxyy2,1
|
||||
mov xxyy,1
|
||||
call calc1
|
||||
call calc2
|
||||
waitst:
|
||||
mov ax,0
|
||||
int 16h
|
||||
cmp ah,41h
|
||||
jne tre
|
||||
mov dword ptr [pope],' EUV'
|
||||
jmp adres
|
||||
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
|
||||
cmp yy,23
|
||||
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 gs:[bx],ch
|
||||
pusha
|
||||
popa
|
||||
mov cl,gs:[bx]
|
||||
cmp ch,cl
|
||||
je no
|
||||
push si ax
|
||||
mov ax,24
|
||||
call setxy
|
||||
mov colors,117
|
||||
mov si,offset msg
|
||||
call showstring0
|
||||
mov ax,0
|
||||
int 16h
|
||||
mov ax,24
|
||||
call setxy
|
||||
mov colors,116
|
||||
mov si,offset menu
|
||||
call showstring0
|
||||
pop bx si
|
||||
mov es:[bx-1],edi
|
||||
mov es:[si-1],dx
|
||||
no:
|
||||
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 waitkey
|
||||
call restorescreen
|
||||
db 0CBH
|
||||
|
||||
calc1:
|
||||
push ax dx si
|
||||
mov ax,xx
|
||||
mov dx,xx
|
||||
shl ax,2
|
||||
shl dx,1
|
||||
add ax,dx
|
||||
add ax,25
|
||||
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,127
|
||||
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
|
||||
shl dx,4
|
||||
add bx,dx
|
||||
add ebx,ebp
|
||||
mov edx,ebx
|
||||
shr edx,4*4
|
||||
shl edx,4*3
|
||||
mov gs,dx
|
||||
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 0
|
||||
xxyy2 dw 0
|
||||
msg db 'Erreur : zone imodifiable (ROM) appuyer sur une touche ',0
|
||||
menu db 'Haut F1, Bas F2, Pages F3&F4, Segment F5&F6, Edit F7, Quitter F8 MODE '
|
||||
pope db 'VUE ',0
|
||||
spaces db ' ³ ',0
|
||||
dep db ':',0
|
||||
reg db 'Etats des registre apr‚s boot',0
|
||||
fla db 'Flags:',0
|
||||
regs db 'EDI:',0
|
||||
db 'ESI:',0
|
||||
db 'EBP:',0
|
||||
db 'ESP:',0
|
||||
db 'EBX:',0
|
||||
db 'EDX:',0
|
||||
db 'ECX:',0
|
||||
db 'EAX:',0
|
||||
db ' CS:',0
|
||||
db ' DS:',0
|
||||
db ' ES:',0
|
||||
db ' FS:',0
|
||||
db ' GS:',0
|
||||
db ' SS:',0
|
||||
cxk dw 0
|
||||
edxk dd 0
|
||||
dsk dw 0
|
||||
sik dw 0
|
||||
gr db '(',0
|
||||
dr db ')',0
|
||||
|
||||
|
||||
|
||||
|
||||
xy dw 0
|
||||
colors db 7
|
||||
x db 1
|
||||
y Db 1
|
||||
|
||||
;==========SHOWCHAR===========
|
||||
;met un caractŠre apr‚s le curseur
|
||||
;-> dl
|
||||
;<-
|
||||
;=============================
|
||||
showchar:
|
||||
push dx bx es
|
||||
mov bx,0B800h
|
||||
mov es,bx
|
||||
mov bx,cs:xy
|
||||
mov dh,cs:colors
|
||||
mov es:[bx],dx
|
||||
add cs:xy,2
|
||||
pop es bx dx
|
||||
ret
|
||||
|
||||
|
||||
|
||||
;==========SPACE===========
|
||||
;met un espace apr‚s le curseur
|
||||
;->
|
||||
;<-
|
||||
;=============================
|
||||
space:
|
||||
push bx es
|
||||
add cs:xy,2
|
||||
mov bx,0B800h
|
||||
mov es,bx
|
||||
mov bx,cs:xy
|
||||
mov byte ptr es:[bx],' '
|
||||
pop es bx
|
||||
ret
|
||||
|
||||
;==============================Affiche le nombre nb binaire en EDX==============
|
||||
ShowbinRow:
|
||||
push es ax bx cx di
|
||||
mov di,cs:xy
|
||||
mov bx,0B800h
|
||||
mov es,bx
|
||||
mov ax,cx
|
||||
sub cx,32
|
||||
neg cx
|
||||
shl edx,cl
|
||||
mov ch,cs:colors
|
||||
binaize:
|
||||
rol edx,1
|
||||
mov cl,'0'
|
||||
adc cl,0
|
||||
mov es:[di],cx
|
||||
add di,2
|
||||
dec al
|
||||
jnz binaize
|
||||
mov cs:xy,di
|
||||
pop di cx bx ax es
|
||||
ret
|
||||
|
||||
;==========SETCOLOR=========
|
||||
;Change les attributs du texte a CL
|
||||
;-> CL
|
||||
;<-
|
||||
;=============================
|
||||
setcolor:
|
||||
mov cs:colors,CL
|
||||
ret
|
||||
|
||||
|
||||
|
||||
;=============CLEAR=========
|
||||
;Efface l'ecran texte
|
||||
;->
|
||||
;<-
|
||||
;=============================
|
||||
clear:
|
||||
push es eax cx di
|
||||
xor di,di
|
||||
mov ax,0b800h
|
||||
mov es,ax
|
||||
mov eax,07200720h
|
||||
mov cx,1000
|
||||
cld
|
||||
rep stosd
|
||||
pop di cx eax es
|
||||
ret
|
||||
|
||||
|
||||
;==========SCROLLDOWN=========
|
||||
;defile de cx lines vers le bas
|
||||
;-> CX
|
||||
;<-
|
||||
;=============================
|
||||
scrolldown:
|
||||
push cx si di ds es
|
||||
mov si,0B800h
|
||||
mov es,si
|
||||
mov ds,si
|
||||
mov si,cx
|
||||
shl si,5
|
||||
shl cx,7
|
||||
add si,cx
|
||||
mov cx,4000
|
||||
sub cx,si
|
||||
xor di,di
|
||||
cld
|
||||
rep movsb
|
||||
pop es ds di si cx
|
||||
ret
|
||||
|
||||
;==========LINE=========
|
||||
;remet le curseur a la ligne
|
||||
;->
|
||||
;<-
|
||||
;=============================
|
||||
line:
|
||||
push ax cx di es
|
||||
mov ah,cs:x
|
||||
mov al,cs:y
|
||||
xor ah,ah
|
||||
cmp al,24
|
||||
jne scro
|
||||
dec al
|
||||
mov cl,1
|
||||
call scrolldown
|
||||
scro:
|
||||
inc al
|
||||
call setxy
|
||||
pop es di cx ax
|
||||
ret
|
||||
|
||||
;==========SETXY=========
|
||||
;Change les coordonnées du curseur a X:AL,Y:AH
|
||||
;-> AX
|
||||
;<- es di
|
||||
;=============================
|
||||
setxy:
|
||||
push ax bx di
|
||||
mov cs:x,ah
|
||||
mov cs:y,al
|
||||
mov bl,ah
|
||||
xor bh,bh
|
||||
xor ah,ah
|
||||
mov di,ax
|
||||
shl di,5
|
||||
shl ax,7
|
||||
shl bx,1
|
||||
add di,ax
|
||||
add di,bx
|
||||
mov cs:xy,di
|
||||
mov ax,0B800h
|
||||
mov es,ax
|
||||
pop di bx ax
|
||||
ret
|
||||
|
||||
;================Affiche la chaine 0 de caractŠre contenue dans ds:si
|
||||
showstring0:
|
||||
push es cx si di
|
||||
mov di,cs:xy
|
||||
mov cx,0B800h
|
||||
mov es,cx
|
||||
mov ch,cs:colors
|
||||
strinaize0:
|
||||
mov cl,[si]
|
||||
cmp cl,0
|
||||
je no0
|
||||
mov es:[di],cx
|
||||
add di,2
|
||||
inc si
|
||||
jmp strinaize0
|
||||
no0:
|
||||
mov cs:xy,di
|
||||
pop di si cx es
|
||||
ret
|
||||
|
||||
;==============================Affiche le nombre nb hexa en EDX==============
|
||||
ShowHexRow:
|
||||
push es ax bx cx di
|
||||
mov di,cs:xy
|
||||
mov bx,0B800h
|
||||
mov es,bx
|
||||
mov ax,cx
|
||||
sub cx,32
|
||||
neg cx
|
||||
shl edx,cl
|
||||
mov ch,cs:colors
|
||||
shr ax,2
|
||||
Hexaize:
|
||||
rol edx,4
|
||||
mov bx,dx
|
||||
and bx,0fh
|
||||
mov cl,cs:[bx+offset Tab]
|
||||
mov es:[di],cx
|
||||
add di,2
|
||||
dec al
|
||||
jnz Hexaize
|
||||
mov cs:xy,di
|
||||
pop di cx bx ax es
|
||||
ret
|
||||
Tab db '0123456789ABCDEF'
|
||||
ret
|
||||
|
||||
|
||||
;===================================sauve l'ecran rapidement================
|
||||
SaveScreen:
|
||||
push cx si di ds es
|
||||
mov cx,0B800H
|
||||
mov ds,cx
|
||||
push cs
|
||||
pop es
|
||||
mov cx,(80*25*2)/4
|
||||
xor si,si
|
||||
mov di,offset Copy2
|
||||
cld
|
||||
rep movsd
|
||||
pop es ds di si cx
|
||||
ret
|
||||
|
||||
|
||||
;===================================sauve l'ecran rapidement================
|
||||
RestoreScreen:
|
||||
push cx si di ds es
|
||||
mov cx,0B800H
|
||||
mov es,cx
|
||||
push cs
|
||||
pop ds
|
||||
mov cx,(80*25*2)/4
|
||||
mov si,offset Copy2
|
||||
xor di,di
|
||||
cld
|
||||
rep movsd
|
||||
pop es ds di si cx
|
||||
ret
|
||||
|
||||
;===================================Afficher un int EDX a l'‚cran en ah,al================
|
||||
ShowInt:
|
||||
push eax bx cx edx esi di es ds
|
||||
mov di,cs:xy
|
||||
mov cx,0B800h
|
||||
mov es,cx
|
||||
xor cx,cx
|
||||
mov eax,edx
|
||||
mov esi,10
|
||||
mov bx,offset showbuffer+27
|
||||
decint3:
|
||||
xor edx,edx
|
||||
div esi
|
||||
add dl,'0'
|
||||
mov dh,cs:colors
|
||||
sub bx,2
|
||||
add cx,2
|
||||
mov cs:[bx],dx
|
||||
cmp ax,0
|
||||
jne decint3
|
||||
mov si,bx
|
||||
push cs
|
||||
pop ds
|
||||
cld
|
||||
rep movsb
|
||||
mov cs:xy,di
|
||||
pop ds es di esi edx cx bx eax
|
||||
ret
|
||||
|
||||
end start
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|