Merge branch 'release/1.3.0'
This commit is contained in:
commit
c803d5fa41
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
29
MAKEFILE
29
MAKEFILE
|
@ -1,9 +1,5 @@
|
|||
all:
|
||||
cd commande
|
||||
make
|
||||
cd ..
|
||||
|
||||
cd programs
|
||||
cd lib
|
||||
make
|
||||
cd ..
|
||||
|
||||
|
@ -11,31 +7,16 @@ all:
|
|||
make
|
||||
cd ..
|
||||
|
||||
cd contribs
|
||||
make
|
||||
cd ..
|
||||
|
||||
cd install
|
||||
make
|
||||
cd ..
|
||||
|
||||
copy:
|
||||
make all
|
||||
copy commande\*.exe ..\data
|
||||
copy programs\*.exe ..\data
|
||||
copy programs\*.rip ..\data
|
||||
copy noyau\*.sys ..\data
|
||||
rem copy noyau\*.bin ..\data
|
||||
copy contribs\*.exe ..\data
|
||||
copy install\*.com ..\
|
||||
make clean
|
||||
|
||||
|
||||
clean:
|
||||
cd commande
|
||||
make clean
|
||||
cd ..
|
||||
|
||||
cd programs
|
||||
cd lib
|
||||
make clean
|
||||
cd ..
|
||||
|
||||
|
@ -43,10 +24,6 @@ clean:
|
|||
make clean
|
||||
cd ..
|
||||
|
||||
cd contribs
|
||||
make clean
|
||||
cd ..
|
||||
|
||||
cd install
|
||||
make clean
|
||||
cd ..
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||

|
||||
|
||||
## Copies d'écran de COS2000
|
||||

|
||||

|
||||

|
||||

|
||||
|
|
|
@ -1,42 +1,20 @@
|
|||
.model tiny
|
||||
.model tiny
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
include ..\include\fat.h
|
||||
include ..\include\mem.h
|
||||
include ..\include\divers.h
|
||||
|
||||
start:
|
||||
push cs
|
||||
push cs
|
||||
push cs
|
||||
push cs
|
||||
pop ds
|
||||
pop es
|
||||
pop fs
|
||||
pop gs
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
header exe <,1,0,,,offset imports,,>
|
||||
|
||||
mov ah,3
|
||||
int 48h
|
||||
mov ax,0002
|
||||
int 47h
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,42
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset msg
|
||||
int 47h
|
||||
realstart:
|
||||
push offset msginit
|
||||
call [print]
|
||||
xor bp,bp
|
||||
mov dl,' '
|
||||
call setdelimiter0
|
||||
|
@ -46,14 +24,11 @@ replay:
|
|||
noret:
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,16
|
||||
mov di,offset dir
|
||||
int 48h
|
||||
mov si,di
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov si,offset prompt
|
||||
int 47h
|
||||
mov ah,16
|
||||
mov di,offset dir
|
||||
int 48h
|
||||
push offset prompt
|
||||
call [print]
|
||||
mov di,offset buffer
|
||||
waitchar:
|
||||
mov ax,0
|
||||
|
@ -63,21 +38,20 @@ waitchar:
|
|||
jne norr
|
||||
cmp bp,0
|
||||
je waitchar
|
||||
mov ah,13
|
||||
mov si,cs:[bp-8]
|
||||
int 47h
|
||||
push word ptr cs: [bp-8]
|
||||
call [print]
|
||||
push cs
|
||||
pop es
|
||||
pop es
|
||||
call copy0
|
||||
call getlength0
|
||||
add di,cx
|
||||
jmp waitchar
|
||||
norr:
|
||||
cmp al,0Dh ;entrée
|
||||
cmp al,0dh ;entrée
|
||||
je entere
|
||||
cmp al,08h ;backspace
|
||||
cmp al,08h ;backspace
|
||||
je backspace
|
||||
cmp al,27 ;echap
|
||||
cmp al,27 ;echap
|
||||
je escape
|
||||
cmp al,' '
|
||||
jb waitchar
|
||||
|
@ -85,14 +59,13 @@ norr:
|
|||
je waitchar
|
||||
mov [di],al
|
||||
inc di
|
||||
mov dl,al
|
||||
mov ah,7
|
||||
int 47h
|
||||
push ax
|
||||
call [showchar]
|
||||
jmp waitchar
|
||||
escape:
|
||||
cmp di,offset buffer
|
||||
je waitchar
|
||||
mov ah,18h
|
||||
mov ah,24
|
||||
int 47h
|
||||
mov dx,offset buffer
|
||||
mov cx,di
|
||||
|
@ -100,20 +73,21 @@ escape:
|
|||
js waitchar
|
||||
je waitchar
|
||||
sub bh,cl
|
||||
mov ah,19h
|
||||
mov ah,25
|
||||
int 47h
|
||||
mov di,offset buffer
|
||||
mov byte ptr [di],0
|
||||
backspace:
|
||||
cmp di,offset buffer
|
||||
je waitchar
|
||||
mov ah,18h
|
||||
mov ah,24
|
||||
int 47h
|
||||
dec bh
|
||||
mov dl,' '
|
||||
mov ah,0Eh
|
||||
mov ah,25
|
||||
int 47h
|
||||
mov ah,19h
|
||||
push ' '
|
||||
call [showchar]
|
||||
mov ah,25
|
||||
int 47h
|
||||
dec di
|
||||
mov byte ptr [di],0
|
||||
|
@ -141,13 +115,13 @@ tre:
|
|||
cmp di,0
|
||||
je error
|
||||
push cs
|
||||
pop es
|
||||
pop es
|
||||
call evalue0
|
||||
cmp dx,bp
|
||||
jb noadd
|
||||
mov bp,dx
|
||||
mov ax,bx
|
||||
noadd:
|
||||
noadd:
|
||||
call cmpstr0
|
||||
jne tre
|
||||
mov si,offset buffer
|
||||
|
@ -172,7 +146,7 @@ nopod:
|
|||
error:
|
||||
mov bp,ax
|
||||
push cs
|
||||
pop es
|
||||
pop es
|
||||
mov dl,'.'
|
||||
call searchchar0
|
||||
je noaddext
|
||||
|
@ -187,57 +161,58 @@ noaddext:
|
|||
xor bp,bp
|
||||
jmp replay
|
||||
reallyerror:
|
||||
mov ah,13
|
||||
mov si,offset Error_Syntax
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,cs:[bp-8]
|
||||
int 47h
|
||||
push offset error_syntax
|
||||
call [print]
|
||||
push word ptr cs: [bp-8]
|
||||
call [print]
|
||||
jmp replay
|
||||
errorprec:
|
||||
mov ah,13
|
||||
mov si,offset derror
|
||||
int 47h
|
||||
push offset derror
|
||||
call [print]
|
||||
jmp replay
|
||||
|
||||
Code_Exit:
|
||||
|
||||
code_exit:
|
||||
pop ax
|
||||
db 0CBh
|
||||
|
||||
Code_Version:
|
||||
mov ah,13
|
||||
mov si,offset Version_Text
|
||||
int 47h
|
||||
retf
|
||||
|
||||
code_version:
|
||||
push offset version_text
|
||||
call [print]
|
||||
ret
|
||||
|
||||
Version_Text db 'Cos 2000 version 1.2Fr par Nico',0
|
||||
|
||||
Code_Cls:
|
||||
|
||||
version_text db 'Cos 2000 version 1.4Fr par \c04MrNop',0
|
||||
|
||||
code_cls:
|
||||
mov ah,2
|
||||
int 47h
|
||||
ret
|
||||
|
||||
Code_Reboot:
|
||||
push 0FFFFh
|
||||
|
||||
code_reboot:
|
||||
push 0ffffh
|
||||
push 00000h
|
||||
db 0CBH
|
||||
|
||||
Code_Command:
|
||||
retf
|
||||
|
||||
code_command:
|
||||
push offset def
|
||||
call [print]
|
||||
mov bx,offset commands
|
||||
showalls:
|
||||
mov si,[bx]
|
||||
add bx,8
|
||||
cmp si,0
|
||||
cmp word ptr [bx],0
|
||||
je endoff
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
push word ptr [bx+4]
|
||||
push word ptr [bx+6]
|
||||
push word ptr [bx]
|
||||
push offset commandes
|
||||
call [print]
|
||||
jmp showalls
|
||||
endoff:
|
||||
ret
|
||||
|
||||
Code_Mode:
|
||||
def db 'Liste des commandes internes\l\l',0
|
||||
commandes db '%0 \h10:\h12%0 \h70%0\l',0
|
||||
|
||||
code_mode:
|
||||
mov cx,0
|
||||
call gettypeditem0
|
||||
mov ah,0
|
||||
|
@ -248,387 +223,320 @@ Code_Mode:
|
|||
int 47h
|
||||
ret
|
||||
|
||||
present db 'Le volume insere est nomme ',0
|
||||
present2 db ', Numero de serie : ',0
|
||||
nomdisque db 13 dup (0)
|
||||
Code_Dir:
|
||||
mov si,offset present
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,11
|
||||
mov di,offset nomdisque
|
||||
int 48h
|
||||
mov si,di
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov si,offset present2
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,12
|
||||
int 48h
|
||||
mov ah,10
|
||||
mov cx,32
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
xor ebp,ebp
|
||||
mov di,offset bufferentry
|
||||
mov si,di
|
||||
mov ah,7
|
||||
int 48h
|
||||
jc nofiles
|
||||
code_dir:
|
||||
mov ah,12
|
||||
int 48h
|
||||
push edx
|
||||
mov ah,11
|
||||
mov di,offset nomdisque
|
||||
int 48h
|
||||
push di
|
||||
push offset present
|
||||
call [print]
|
||||
xor bp,bp
|
||||
mov di,offset bufferentry
|
||||
mov ah,7
|
||||
int 48h
|
||||
jc nofiles
|
||||
go:
|
||||
mov ah,46
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,44
|
||||
mov dx,[si+Entries.FileDateCrea]
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,45
|
||||
mov dx,[si+Entries.FileTimeCrea]
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,44
|
||||
mov dx,[si+Entries.FileDate]
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,45
|
||||
mov dx,[si+Entries.FileTime]
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,48
|
||||
mov edx,[si+Entries.FileSize]
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,47
|
||||
mov dl,[si+Entries.FileAttr]
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
inc bp
|
||||
mov ah,8
|
||||
int 48h
|
||||
jnc go
|
||||
push word ptr [di+entries.fileattr]
|
||||
push dword ptr [di+entries.filesize]
|
||||
push word ptr [di+entries.filetime]
|
||||
push word ptr [di+entries.filedate]
|
||||
push word ptr [di+entries.filetimecrea]
|
||||
push word ptr [di+entries.filedatecrea]
|
||||
push di
|
||||
push offset line
|
||||
call [print]
|
||||
inc bp
|
||||
mov ah,8
|
||||
int 48h
|
||||
jnc go
|
||||
nofiles:
|
||||
mov edx,ebp
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,8
|
||||
int 47h
|
||||
mov si,offset filess
|
||||
mov ah,13
|
||||
int 47h
|
||||
ret
|
||||
bufferentry db 32 dup (0)
|
||||
filess db ' Fichier(s) au total',0
|
||||
push ebp
|
||||
push offset filess
|
||||
call [print]
|
||||
ret
|
||||
|
||||
nomdisque db 13 dup (0)
|
||||
bufferentry db 512 dup (0)
|
||||
present db '\c02Le volume insere est nomme %0, Numero de serie : %hD\l\l',0
|
||||
|
||||
line db '\c07%n %d %t %d %t %z %a\l',0
|
||||
filess db '\l\l\c02%u Fichier(s) au total\l',0
|
||||
|
||||
changing db 'Changement de repertoire vers ',0
|
||||
code_cd:
|
||||
mov cx,0
|
||||
mov cx,0
|
||||
call gettypeditem0
|
||||
push si
|
||||
mov si,offset changing
|
||||
mov ah,13
|
||||
int 47h
|
||||
pop si
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov si,di
|
||||
mov ah,13
|
||||
int 48h
|
||||
jnc okchange
|
||||
mov si,offset errorchanging
|
||||
mov ah,13
|
||||
int 47h
|
||||
push di
|
||||
push offset changing
|
||||
call [print]
|
||||
mov si,di
|
||||
mov ah,13
|
||||
int 48h
|
||||
jnc okchange
|
||||
push offset errorchanging
|
||||
call [print]
|
||||
okchange:
|
||||
ret
|
||||
errorchanging db 'Impossible d''atteindre ce dossier',0
|
||||
ret
|
||||
|
||||
changing db 'Changement de repertoire vers %0\l',0
|
||||
errorchanging db '\c04Impossible d''atteindre ce dossier',0
|
||||
|
||||
code_kill:
|
||||
mov cx,0
|
||||
call gettypeditem0
|
||||
push di
|
||||
push offset killing
|
||||
call [print]
|
||||
mov si,di
|
||||
mov ah,5
|
||||
int 49h
|
||||
jc nochanged
|
||||
mov ah,1
|
||||
int 49h
|
||||
jnc okchanged
|
||||
nochanged:
|
||||
push offset errorkilling
|
||||
call [print]
|
||||
okchanged:
|
||||
ret
|
||||
|
||||
killing db 'Fermeture du processus %0\l',0
|
||||
errorkilling db '\c04Impossible de fermer ce processus',0
|
||||
|
||||
code_refresh:
|
||||
mov ah,3
|
||||
int 48h
|
||||
jnc okrefresh
|
||||
mov si,offset errorrefreshing
|
||||
mov ah,13
|
||||
int 47h
|
||||
ret
|
||||
mov ah,3
|
||||
int 48h
|
||||
jnc okrefresh
|
||||
push offset errorrefreshing
|
||||
call [print]
|
||||
ret
|
||||
okrefresh:
|
||||
mov si,offset present
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,11
|
||||
mov di,offset nomdisque
|
||||
int 48h
|
||||
mov si,di
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov si,offset present2
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,12
|
||||
int 48h
|
||||
mov ah,10
|
||||
mov cx,32
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
ret
|
||||
errorrefreshing db 'Impossible de lire le support',0
|
||||
mov ah,12
|
||||
int 48h
|
||||
push edx
|
||||
mov ah,11
|
||||
mov di,offset nomdisque
|
||||
int 48h
|
||||
push di
|
||||
push offset present
|
||||
call [print]
|
||||
ret
|
||||
|
||||
errorrefreshing db '\c04Impossible de lire le support',0
|
||||
extcom db '.CE',0
|
||||
|
||||
extcom db '.COM',0
|
||||
|
||||
Code_Mem:
|
||||
mov si,offset msgs
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov si,offset menu
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,18h
|
||||
int 47h
|
||||
xor cx,cx
|
||||
code_mem:
|
||||
push offset msg
|
||||
call [print]
|
||||
xor ebx,ebx
|
||||
xor cx,cx
|
||||
listmcb:
|
||||
mov ah,4
|
||||
int 49h
|
||||
jc fino
|
||||
inc cx
|
||||
mov ah,18h
|
||||
int 47h
|
||||
push gs
|
||||
pop ds
|
||||
mov bh,0
|
||||
mov si,MB.Names
|
||||
mov ah,14h
|
||||
int 47h
|
||||
mov bh,15
|
||||
xor edx,edx
|
||||
mov dx,ds:[MB.Sizes]
|
||||
shl edx,4
|
||||
mov ah,0Fh
|
||||
int 47h
|
||||
mov bh,24
|
||||
cmp ds:[MB.IsResident],true
|
||||
push cs
|
||||
pop ds
|
||||
jne notresident
|
||||
mov si,offset resident
|
||||
mov ah,14h
|
||||
int 47h
|
||||
jmp suitelistmcb
|
||||
notresident:
|
||||
mov si,offset nonresident
|
||||
mov ah,14h
|
||||
int 47h
|
||||
suitelistmcb:
|
||||
mov bh,30
|
||||
cmp gs:[MB.Reference],0
|
||||
je next
|
||||
cmp gs:[MB.Reference],1000h
|
||||
jb next
|
||||
mov ax,gs:[MB.Reference]
|
||||
dec ax
|
||||
dec ax
|
||||
mov ds,ax
|
||||
mov si,MB.Names
|
||||
mov ah,14h
|
||||
int 47h
|
||||
mov ah,4
|
||||
int 49h
|
||||
jc fino
|
||||
inc cx
|
||||
;placement mémoire
|
||||
mov dx,gs
|
||||
inc dx
|
||||
inc dx
|
||||
push edx
|
||||
;parent
|
||||
cmp gs: [mb.reference],0
|
||||
jne next
|
||||
push cs
|
||||
push offset none
|
||||
add bx,gs:[mb.sizes]
|
||||
jmp suitemn
|
||||
next:
|
||||
mov bh,46
|
||||
xor edx,edx
|
||||
mov dx,gs
|
||||
inc dx
|
||||
inc dx
|
||||
push cx
|
||||
mov cx,16
|
||||
mov ah,11h
|
||||
int 47h
|
||||
mov ah,6h
|
||||
int 47h
|
||||
pop cx
|
||||
jmp listmcb
|
||||
mov dx,gs: [mb.reference]
|
||||
dec dx
|
||||
dec dx
|
||||
push dx
|
||||
push offset mb.names
|
||||
suitemn:
|
||||
;Resident
|
||||
cmp gs: [mb.isresident],true
|
||||
jne notresident
|
||||
push offset resident
|
||||
jmp suitelistmcb
|
||||
notresident:
|
||||
push offset nonresident
|
||||
suitelistmcb:
|
||||
;taille memoire
|
||||
xor edx,edx
|
||||
mov dx,gs: [mb.sizes]
|
||||
shl edx,4
|
||||
push 6
|
||||
push edx
|
||||
;nom
|
||||
push gs
|
||||
push offset mb.names
|
||||
push offset line2
|
||||
call [print]
|
||||
jmp listmcb
|
||||
fino:
|
||||
ret
|
||||
resident db 'oui',0
|
||||
nonresident db 'non',0
|
||||
msgs db 'Plan de la memoire',0
|
||||
menu db 'Nom Taille Res Parent Mem',0
|
||||
shl ebx,4
|
||||
push ebx
|
||||
push offset fin
|
||||
call [print]
|
||||
ret
|
||||
resident db "oui",0
|
||||
nonresident db "non",0
|
||||
line2 db "%0P\h15%w\h24%0\h30%0P\h46%hW\l",0
|
||||
fin db "\l\l\c02%u octets de memoire disponible\l",0
|
||||
msg db "Plan de la memoire\l\lNom Taille Res Parent Mem\l",0
|
||||
none db ".",0
|
||||
|
||||
|
||||
;converti le jeux scancode/ascii en fr ax->ax
|
||||
convertfr:
|
||||
push dx si
|
||||
mov si,offset fr
|
||||
push dx si
|
||||
mov si,offset fr
|
||||
searchtouch:
|
||||
mov dx,cs:[si]
|
||||
cmp dx,0
|
||||
je endofconv
|
||||
add si,4
|
||||
cmp dx,ax
|
||||
jne searchtouch
|
||||
mov ax,cs:[si-2]
|
||||
mov dx,cs: [si]
|
||||
cmp dx,0
|
||||
je endofconv
|
||||
add si,4
|
||||
cmp dx,ax
|
||||
jne searchtouch
|
||||
mov ax,cs: [si-2]
|
||||
endofconv:
|
||||
pop dx si
|
||||
ret
|
||||
pop dx si
|
||||
ret
|
||||
|
||||
fr: db '1', 02, '&', 02
|
||||
db '!', 02, '1', 02
|
||||
db '2', 03, '‚', 03
|
||||
db '@', 03, '2', 03
|
||||
db '3', 04, '"', 04
|
||||
db '#', 04, '3', 04
|
||||
db '4', 05, 39, 05
|
||||
db '$', 05, '4', 05
|
||||
db '5', 06, '(', 06
|
||||
db '%', 06, '5', 06
|
||||
db '6', 07, '-', 07
|
||||
db '^', 07, '6', 07
|
||||
db '7', 08, 'Š', 08
|
||||
db '&', 08, '7', 08
|
||||
db '8', 09, '_', 09
|
||||
db '*', 09, '8', 09
|
||||
db '9', 10, '‡', 10
|
||||
db '(', 10, '9', 10
|
||||
db '0', 11, '…', 11
|
||||
db ')', 11, '0', 11
|
||||
db '-', 12, ')', 12
|
||||
db '_', 12, 'ø', 12
|
||||
db 'Q', 16, 'A', 16
|
||||
db 'q', 16, 'a', 16
|
||||
db 'W', 17, 'Z', 17
|
||||
db 'w', 17, 'z', 17
|
||||
db '{', 26, '‰', 26
|
||||
db '[', 26, 'ˆ', 26
|
||||
db ']', 27, '$', 27
|
||||
db '}', 27, 'œ', 27
|
||||
db 'A', 30, 'Q', 30
|
||||
db 'a', 30, 'q', 30
|
||||
db ':', 39, 'M', 39
|
||||
db ';', 39, 'm', 39
|
||||
db 39, 40, '—', 40
|
||||
db '"', 40, '%', 40
|
||||
db 00, 40, '%', 40
|
||||
db '\', 43, '*', 43
|
||||
db '|', 43, 'æ', 43
|
||||
db 'Z', 44, 'W', 44
|
||||
db 'z', 44, 'w', 44
|
||||
db 'm', 50, ',', 50
|
||||
db 'M', 50, '?', 50
|
||||
db ',', 51, ';', 51
|
||||
db '<', 51, '.', 51
|
||||
db '.', 52, ':', 52
|
||||
db '>', 52, '/', 52
|
||||
db '?', 53, 'õ', 53
|
||||
db '/', 53, '!', 53
|
||||
db '\', 86, '<', 86
|
||||
db '|', 86, '>', 86
|
||||
db 00, 79h, '~', 03
|
||||
db 00, 7Ah, '#', 04
|
||||
db 00, 7Bh, '{', 05
|
||||
db 00, 7Ch, '[', 06
|
||||
db 00, 7Dh, '|', 07
|
||||
db 00, 7Eh, '`', 08
|
||||
db 00, 7Fh, '\', 09
|
||||
db 00, 80h, '^', 10
|
||||
db 00, 81h, '@', 11
|
||||
db 00, 82h, ']', 12
|
||||
db 00, 83h, '}', 13
|
||||
db 00, 00, 00, 00
|
||||
fr: db '1', 02, '&', 02
|
||||
db '!', 02, '1', 02
|
||||
db '2', 03, '‚', 03
|
||||
db '@', 03, '2', 03
|
||||
db '3', 04, '"', 04
|
||||
db '#', 04, '3', 04
|
||||
db '4', 05, 39, 05
|
||||
db '$', 05, '4', 05
|
||||
db '5', 06, '(', 06
|
||||
db '%', 06, '5', 06
|
||||
db '6', 07, '-', 07
|
||||
db '^', 07, '6', 07
|
||||
db '7', 08, 'Š', 08
|
||||
db '&', 08, '7', 08
|
||||
db '8', 09, '_', 09
|
||||
db '*', 09, '8', 09
|
||||
db '9', 10, '‡', 10
|
||||
db '(', 10, '9', 10
|
||||
db '0', 11, '…', 11
|
||||
db ')', 11, '0', 11
|
||||
db '-', 12, ')', 12
|
||||
db '_', 12, 'ø', 12
|
||||
db 'Q', 16, 'A', 16
|
||||
db 'q', 16, 'a', 16
|
||||
db 'W', 17, 'Z', 17
|
||||
db 'w', 17, 'z', 17
|
||||
db '{', 26, '‰', 26
|
||||
db '[', 26, 'ˆ', 26
|
||||
db ']', 27, '$', 27
|
||||
db '}', 27, 'œ', 27
|
||||
db 'A', 30, 'Q', 30
|
||||
db 'a', 30, 'q', 30
|
||||
db ':', 39, 'M', 39
|
||||
db ';', 39, 'm', 39
|
||||
db 39, 40, '—', 40
|
||||
db '"', 40, '%', 40
|
||||
db 00, 40, '%', 40
|
||||
db '\', 43, '*', 43
|
||||
db '|', 43, 'æ', 43
|
||||
db 'Z', 44, 'W', 44
|
||||
db 'z', 44, 'w', 44
|
||||
db 'm', 50, ',', 50
|
||||
db 'M', 50, '?', 50
|
||||
db ',', 51, ';', 51
|
||||
db '<', 51, '.', 51
|
||||
db '.', 52, ':', 52
|
||||
db '>', 52, '/', 52
|
||||
db '?', 53, 'õ', 53
|
||||
db '/', 53, '!', 53
|
||||
db '\', 86, '<', 86
|
||||
db '|', 86, '>', 86
|
||||
db 00, 79h, '~', 03
|
||||
db 00, 7ah, '#', 04
|
||||
db 00, 7bh, '{', 05
|
||||
db 00, 7ch, '[', 06
|
||||
db 00, 7dh, '|', 07
|
||||
db 00, 7eh, '`', 08
|
||||
db 00, 7fh, '\', 09
|
||||
db 00, 80h, '^', 10
|
||||
db 00, 81h, '@', 11
|
||||
db 00, 82h, ']', 12
|
||||
db 00, 83h, '}', 13
|
||||
db 00, 00, 00, 00
|
||||
|
||||
commands dw str_exit ,code_exit ,syn_exit ,help_exit
|
||||
dw str_version,code_version,syn_version,help_version
|
||||
dw str_cls ,code_cls ,syn_cls ,help_cls
|
||||
dw str_reboot ,code_reboot ,syn_reboot ,help_reboot
|
||||
dw str_command,code_command,syn_command,help_command
|
||||
dw str_mode ,code_mode ,syn_mode ,help_mode
|
||||
dw str_dir ,code_dir ,syn_dir ,help_dir
|
||||
dw str_refresh ,code_refresh ,syn_refresh ,help_refresh
|
||||
dw str_cd ,code_cd ,syn_cd ,help_cd
|
||||
dw str_mem ,code_mem ,syn_mem ,help_mem
|
||||
dw str_kill ,code_kill ,syn_kill ,help_kill
|
||||
dw 0
|
||||
|
||||
str_exit db 'QUIT',0
|
||||
str_version db 'VERS',0
|
||||
str_cls db 'CLEAR',0
|
||||
str_reboot db 'REBOOT',0
|
||||
str_command db 'CMDS',0
|
||||
str_mode db 'MODE',0
|
||||
str_dir db 'DIR',0
|
||||
str_refresh db 'DISK',0
|
||||
str_cd db 'CD',0
|
||||
str_mem db 'MEM',0
|
||||
str_kill db 'KILL',0
|
||||
|
||||
syn_exit db 0
|
||||
syn_version db 0
|
||||
syn_cls db 0
|
||||
syn_reboot db 0
|
||||
syn_command db 0
|
||||
syn_mode db 'FFH',0
|
||||
syn_dir db 0
|
||||
syn_refresh db 0
|
||||
syn_cd db '@',0
|
||||
syn_mem db 0
|
||||
syn_kill db '@',0
|
||||
|
||||
help_exit db 'Permet de quitter l''interpreteur',0
|
||||
help_version db 'Affiche la version de COS',0
|
||||
help_cls db 'Efface l''ecran',0
|
||||
help_reboot db 'Redemarre l''ordinateur',0
|
||||
help_command db 'Affiche le detail des commandes',0
|
||||
help_mode db 'Modifie le mode video en cours',0
|
||||
help_dir db 'Affiche le contenu du repertoire courant',0
|
||||
help_refresh db 'Lit le support disquette insere',0
|
||||
help_cd db 'Change le repertoire courant',0
|
||||
help_mem db 'Affiche le plan de la memoire',0
|
||||
help_kill db 'Termine le processus cible',0
|
||||
|
||||
derror db '\c04Erreur de Syntaxe !',0
|
||||
error_syntax db '\c04La commande ou l''executable n''existe pas ! F1 pour ',0
|
||||
prompt db '\c07>',0
|
||||
msginit db '\m02\e\c07\l\lInterpreteur de commande COS V1.9\lSous license \c05GPL\c07 - Ecrit par \c04MrNop\l\c07Utilisez la commande CMDS pour connaitres les commandes disponibles\l',0
|
||||
|
||||
include str0.asm
|
||||
|
||||
dir db 32 dup (0)
|
||||
buffer db 128 dup (0)
|
||||
buffer2 db 128 dup (0)
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
commands dw Str_Exit ,Code_Exit ,Syn_Exit ,Help_Exit
|
||||
dw Str_Version,Code_Version,Syn_Version,Help_Version
|
||||
dw Str_Cls ,Code_Cls ,Syn_Cls ,Help_Cls
|
||||
dw Str_Reboot ,Code_Reboot ,Syn_Reboot ,Help_Reboot
|
||||
dw Str_Command,Code_Command,Syn_Command,Help_Command
|
||||
dw Str_Mode ,Code_Mode ,Syn_Mode ,Help_Mode
|
||||
dw Str_Dir ,Code_Dir ,Syn_Dir ,Help_Dir
|
||||
dw Str_refresh ,Code_refresh ,Syn_refresh ,Help_refresh
|
||||
dw Str_cd ,Code_cd ,Syn_cd ,Help_cd
|
||||
dw Str_Mem ,Code_Mem ,Syn_Mem ,Help_Mem
|
||||
dw 0
|
||||
|
||||
Str_Exit db 'QUIT',0
|
||||
Str_Version db 'VERS',0
|
||||
Str_Cls db 'CLEAR',0
|
||||
Str_Reboot db 'REBOOT',0
|
||||
Str_Command db 'CMDS',0
|
||||
Str_Mode db 'MODE',0
|
||||
Str_Dir db 'DIR',0
|
||||
Str_refresh db 'DISK',0
|
||||
Str_cd db 'CD',0
|
||||
Str_Mem db 'MEM',0
|
||||
Syn_Exit db 0
|
||||
Syn_Version db 0
|
||||
Syn_Cls db 0
|
||||
Syn_Reboot db 0
|
||||
Syn_Command db 0
|
||||
Syn_Mode db 'FFH',0
|
||||
Syn_Dir db 0
|
||||
Syn_refresh db 0
|
||||
Syn_cd db '@',0
|
||||
Syn_Mem db 0
|
||||
Help_Exit db 0
|
||||
Help_Version db 0
|
||||
Help_Cls db 0
|
||||
Help_Reboot db 0
|
||||
Help_Command db 0
|
||||
Help_Mode db 0
|
||||
Help_Dir db 0
|
||||
Help_refresh db 0
|
||||
Help_cd db 0
|
||||
Help_Mem db 0
|
||||
derror db 'Erreur de Syntaxe !',0
|
||||
Error_Syntax db 'La commande ou l''executable n''existe pas ! F1 pour ',0
|
||||
prompt db '>',0
|
||||
msg db 'Interpreteur de commande COS V1.8',0
|
||||
|
||||
include str0.asm
|
||||
|
||||
dir db 32 dup (0)
|
||||
buffer db 256 dup (0)
|
||||
buffer2 db 256 dup (0)
|
||||
|
||||
|
||||
end start
|
||||
end start
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
struc cpu
|
||||
vendor db 13 dup(0) ;Chaine 0 du fabriquant
|
||||
names db 32 dup(0)
|
||||
stepping db 0
|
||||
models db 0
|
||||
family db 0
|
||||
types db 0
|
||||
emodels db 0
|
||||
efamily db 0
|
||||
mmx db 0
|
||||
mmx2 db 0
|
||||
sse db 0
|
||||
sse2 db 0
|
||||
sse3 db 0
|
||||
fpu db 0
|
||||
now3d db 0
|
||||
now3d2 db 0
|
||||
htt db 0
|
||||
apic db 0
|
||||
ends cpu
|
|
@ -1,2 +1,2 @@
|
|||
True equ 1
|
||||
False equ 0
|
||||
true equ 1
|
||||
false equ 0
|
||||
|
|
106
include/fat.h
106
include/fat.h
|
@ -1,58 +1,52 @@
|
|||
Free equ 0
|
||||
True equ 1
|
||||
False equ 0
|
||||
struc dpt
|
||||
steprate&headunload db 0DFh ;Vitesse de progression & mont‚e de la tˆte
|
||||
dmaflag&headload db 002h ;Etat Dma et temps de descente de la tˆte
|
||||
delaymotoroff db 025h ;Temps avant extinction moteur
|
||||
bytepersector db 002h ;Taille des secteurs
|
||||
sectorpertracks db 000h ;Nombre de secteur par piste
|
||||
intersectgaplength db 01Bh ;Taille du GAP3 en lecture/‚criture
|
||||
datalength db 0FFh ;Longueur du transfert de donn‚es
|
||||
intersectgaplengthf db 054h ;Taille du GAP3 en formatage
|
||||
formatbyte db 0F6h ;Octet de formatage
|
||||
headsettlingtime db 000h ;Temps de repos des tˆtes
|
||||
delaymotornormspeed db 008h ;Temps de mont‚e en vitesse du moteur
|
||||
ends dpt
|
||||
|
||||
DPT struc
|
||||
StepRate&HeadUnload db 0DFh ;Vitesse de progression & mont‚e de la tˆte
|
||||
DMAFlag&HeadLoad db 002h ;Etat Dma et temps de descente de la tˆte
|
||||
DelayMotorOff db 025h ;Temps avant extinction moteur
|
||||
BytePerSector db 002h ;Taille des secteurs
|
||||
SectorPerTracks db 000h ;Nombre de secteur par piste
|
||||
InterSectGapLength db 01Bh ;Taille du GAP3 en lecture/‚criture
|
||||
DataLength db 0FFh ;Longueur du transfert de donn‚es
|
||||
InterSectGapLengthF db 054h ;Taille du GAP3 en formatage
|
||||
FormatByte db 0F6h ;Octet de formatage
|
||||
HeadSettlingTime db 000h ;Temps de repos des tˆtes
|
||||
DelayMotorNormSpeed db 008h ;Temps de mont‚e en vitesse du moteur
|
||||
DPT ends
|
||||
struc entries
|
||||
filename db 8 dup (0)
|
||||
filext db 3 dup (0)
|
||||
fileattr db 0
|
||||
filereserved db 0
|
||||
filetimecreams db 0 ;(*10 ms)
|
||||
filetimecrea dw 0
|
||||
filedatecrea dw 0
|
||||
filedateacc dw 0
|
||||
filenotused dw 0
|
||||
filetime dw 0
|
||||
filedate dw 0
|
||||
filegroup dw 0
|
||||
filesize dd 0
|
||||
ends entries
|
||||
|
||||
Entries Struc
|
||||
FileName db 8 dup (0)
|
||||
FilExt db 3 dup (0)
|
||||
FileAttr db 0
|
||||
FileReserved db 0
|
||||
FileTimeCreaMs db 0 ;(*10 ms)
|
||||
FileTimeCrea dw 0
|
||||
FileDateCrea dw 0
|
||||
FileDateAcc dw 0
|
||||
FileNotused dw 0
|
||||
FileTime dw 0
|
||||
FileDate dw 0
|
||||
FileGroup dw 0
|
||||
FileSize dd 0
|
||||
Entries Ends
|
||||
|
||||
BootSector Struc
|
||||
jumper db 0,0,0
|
||||
Vendor db 'COS2000A' ;Fabricant + n°série Formatage
|
||||
SectorSize dw 512 ;octet/secteur
|
||||
SectorsPerCluster db 1 ;secteur/cluster
|
||||
ReservedSectors dw 1 ;secteur reserv‚
|
||||
FatsPerDrive db 2 ;nb de copie de la FAT
|
||||
DirectorySize dw 224 ;taille rep racine
|
||||
SectorsPerDrive dw 2880 ;nb secteur du volume si < 32 még
|
||||
MédiaDescriptor db 0F0h ;Descripteur de média
|
||||
SectorsPerFat dw 9 ;secteur/FAT
|
||||
SectorsPerTrack dw 18 ;secteur/piste
|
||||
HeadsPerDrive dw 2 ;nb de tˆteb de lecture/écriture
|
||||
HiddenSectorsH dw 0 ;nombre de secteur cach‚s
|
||||
HiddenSectorsL dw 0 ;
|
||||
SectorPerDisk2 dd 0 ;Nombre secteur du volume si > 32 Mo+20h ; the number of sectors
|
||||
BootDrive db 0 ;Lecteur de d‚marrage
|
||||
ReservedForNT db 0 ;NA
|
||||
BootSign db 29h ;boot signature 29h
|
||||
SerialNumber dd 01020304h ;no de serie
|
||||
DriveName db 'COS2000 ' ;nom de volume
|
||||
TypeOffAt db 'FAT16 ' ;FAT
|
||||
bootcode db 453 dup (0)
|
||||
BootSector ends
|
||||
struc bootinfo
|
||||
vendor db 'COS2000A' ;Fabricant + n°série Formatage
|
||||
sectorsize dw 512 ;octet/secteur
|
||||
sectorspercluster db 1 ;secteur/cluster
|
||||
reservedsectors dw 1 ;secteur reserv‚
|
||||
fatsperdrive db 2 ;nb de copie de la FAT
|
||||
directorysize dw 224 ;taille rep racine
|
||||
sectorsperdrive dw 2880 ;nb secteur du volume si < 32 még
|
||||
mediadescriptor db 0F0h ;Descripteur de média
|
||||
sectorsperfat dw 9 ;secteur/FAT
|
||||
sectorspertrack dw 18 ;secteur/piste
|
||||
headsperdrive dw 2 ;nb de tˆteb de lecture/écriture
|
||||
hiddensectorsh dw 0 ;nombre de secteur cach‚s
|
||||
hiddensectorsl dw 0 ;
|
||||
sectorperdisk2 dd 0 ;Nombre secteur du volume si > 32 Mo+20h ; the number of sectors
|
||||
bootdrive db 0 ;Lecteur de d‚marrage
|
||||
reservedfornt db 0 ;NA
|
||||
bootsign db 29h ;boot signature 29h
|
||||
serialnumber dd 01020304h ;no de serie
|
||||
drivename db 'COS2000 ' ;nom de volume
|
||||
typeoffat db 'FAT16 ' ;FAT
|
||||
ends bootinfo
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
struc point
|
||||
coordx db 0
|
||||
coordy db 0
|
||||
ends point
|
|
@ -1,11 +1,32 @@
|
|||
MB struc
|
||||
Check dw 'NH'
|
||||
IsNotLast db 0
|
||||
IsResident db 0
|
||||
Reference dw 0
|
||||
Sizes dw 0
|
||||
Names db 24 dup (0)
|
||||
MB ends
|
||||
struc mb ;Bloc de mémoire
|
||||
check db "NH" ;signature du bloc de mémoire
|
||||
isnotlast db 0 ;flag indiquant le dernier bloc
|
||||
isresident db 0 ;flag indiquant que le bloc est resident
|
||||
reference dw 0 ;pointeur vers le bloc parent
|
||||
sizes dw 0 ;taille du bloc en paragraphe de 16 octet
|
||||
names db 24 dup (0) ;nom du bloc
|
||||
ends mb
|
||||
|
||||
Free equ 0
|
||||
memorystart equ 1000h
|
||||
struc exe ;Executable COS
|
||||
checks db "CE" ;signature de l'exe
|
||||
major db 1 ;N° version
|
||||
checksum dd 0 ;Checksum de l'exe
|
||||
compressed db 0 ;a 1 si compressé par RLE
|
||||
exports dw 0 ;importation de fonctions
|
||||
imports dw 0 ;exportation de fonctions
|
||||
sections dw 0 ;sections des blocs mémoire
|
||||
starting dw 15
|
||||
ends exe
|
||||
|
||||
struc descriptor
|
||||
limit_low dw 0
|
||||
base_low dw 0
|
||||
base_middle db 0
|
||||
dpltype db 0
|
||||
limit_high db 0
|
||||
base_high db 0
|
||||
ends descriptor
|
||||
|
||||
|
||||
free equ 0 ;Reference quand libre
|
||||
memorystart equ 0052h ;premier bloc de la mémoire
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
pci Struc
|
||||
struc pcidata
|
||||
vendor dw 0 ;vendor ID (read-only), FFFFh returned if requested device non-existent
|
||||
device dw 0 ;device ID (read-only)
|
||||
command dw 0 ;command register
|
||||
|
@ -6,7 +6,7 @@ status dw 0 ;status register
|
|||
revision db 0 ;revision ID
|
||||
interface db 0 ;programming interface
|
||||
subclass db 0 ;sub-class
|
||||
class db 0 ;class code
|
||||
class db 0 ;class code
|
||||
cache db 0 ;cache line size
|
||||
timer db 0 ;latency timer
|
||||
typed db 0 ;header type
|
||||
|
@ -16,4 +16,19 @@ typed db 0 ;header type
|
|||
;02h PCI-to-CardBus bridge
|
||||
;bit 7: multi-function device
|
||||
result db 0 ;Built-In Self-Test result
|
||||
pci Ends
|
||||
ends pcidata
|
||||
|
||||
struc pciinf
|
||||
version_major db 0
|
||||
version_minor db 0
|
||||
types db 0
|
||||
maxbus db 0
|
||||
ends pciinf
|
||||
|
||||
multifunction equ 80h
|
||||
othercard equ 00h
|
||||
pci2pcibridge equ 01h
|
||||
pci2pcicard equ 02h
|
||||
|
||||
config1addr equ 0CF8h
|
||||
config1data equ 0CFCh
|
||||
|
|
|
@ -1,16 +1,20 @@
|
|||
lnk_boot = tlink /x
|
||||
asm= tasm /t/m5/zi
|
||||
lnk= tlink /x/t
|
||||
asm= lzasm
|
||||
lnk= elink
|
||||
|
||||
all: setup.com
|
||||
|
||||
setup.com: setup.asm
|
||||
$(asm) setup
|
||||
$(lnk) setup
|
||||
setup.com: setup.obj
|
||||
$(lnk) setup.obj setup.com
|
||||
|
||||
setup.obj:
|
||||
$(asm) setup.asm
|
||||
|
||||
clean:
|
||||
del *.obj
|
||||
del *.exe
|
||||
del *.bak
|
||||
del *.lib
|
||||
del *.com
|
||||
del *.bin
|
||||
del *.sys
|
||||
del *.err
|
||||
del *.err
|
|
@ -1,20 +1,21 @@
|
|||
.model tiny
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
model tiny,stdcall
|
||||
p486
|
||||
locals
|
||||
jumps
|
||||
codeseg
|
||||
option procalign:byte
|
||||
|
||||
org 0100h
|
||||
|
||||
ent equ 32h
|
||||
|
||||
start:
|
||||
jmp CopyCOS
|
||||
jmp copycos
|
||||
|
||||
Message db 0Dh,0Ah,'COS 2000 V1.2Fr programme d''installation',0Dh,0AH,'Inserez une disquette formatee et appuyez sur entre...',0Dh,0AH,'Attention le contenu de celle ci peut etre altere !!!',0Dh,0AH,'$'
|
||||
Message2 db 0Dh,0AH,'Creation du secteur de demarrage...',0Dh,0Ah,'$'
|
||||
Message3 db 0Dh,0AH,'Copie des fichiers systeme...',0Dh,0Ah,'$'
|
||||
Errormsg db 0Dh,0AH,'Erreur d''installation, contactez moi a COS2000@MULTIMANIA.COM !',0Dh,0AH,'$'
|
||||
Ok db 0Dh,0AH,'COS2000 a ete correctement installe, veuillez redemarrer votre PC',0Dh,0AH,'$'
|
||||
message db 0Dh,0Ah,'COS 2000 V1.3.1BetaFr programme d''installation',0Dh,0AH,'Inserez une disquette formatee et appuyez sur entre...',0Dh,0AH,'Attention le contenu de celle ci peut etre altere !!!',0Dh,0AH,'$'
|
||||
message2 db 0Dh,0AH,'Creation du secteur de demarrage...',0Dh,0Ah,'$'
|
||||
message3 db 0Dh,0AH,'Copie des fichiers systeme...',0Dh,0Ah,'$'
|
||||
errormsg db 0Dh,0AH,'Erreur d''installation, contactez moi a COS2000@MULTIMANIA.COM !',0Dh,0AH,'$'
|
||||
ok db 0Dh,0AH,'COS2000 a ete correctement installe, veuillez redemarrer votre PC',0Dh,0AH,'$'
|
||||
files db '*.*',0
|
||||
boot db 'boot.bin',0
|
||||
dat db 'data',0
|
||||
|
@ -53,7 +54,7 @@ copycos:
|
|||
mov dx,offset message3
|
||||
int 21h
|
||||
allfile:
|
||||
mov byte ptr [offset dta+43],'$'
|
||||
mov [byte ptr offset dta+43],'$'
|
||||
mov ah,9
|
||||
mov dx,offset dta+30
|
||||
int 21h
|
||||
|
@ -97,8 +98,8 @@ allfile:
|
|||
push cs
|
||||
pop es
|
||||
mov di,offset dta+30-3
|
||||
mov word ptr [di],":a"
|
||||
mov byte ptr [di+2],"\"
|
||||
mov [word ptr di],":a"
|
||||
mov [byte ptr di+2],"\"
|
||||
xor cx,cx
|
||||
mov dx,di
|
||||
int 21h
|
||||
|
@ -118,7 +119,7 @@ allfile:
|
|||
jc error
|
||||
mov ah,4fh
|
||||
int 21h
|
||||
jnc allfile
|
||||
jnc allfile
|
||||
mov ah,09
|
||||
mov dx,offset message2
|
||||
int 21h
|
||||
|
@ -146,7 +147,7 @@ allfile:
|
|||
xor bx,bx
|
||||
int 13h
|
||||
mov ah,09
|
||||
mov dx,offset Ok
|
||||
mov dx,offset ok
|
||||
int 21h
|
||||
xor ax,ax
|
||||
int 16h
|
||||
|
@ -160,5 +161,4 @@ error:
|
|||
xor ax,ax
|
||||
int 16h
|
||||
ret
|
||||
|
||||
end start
|
||||
|
||||
|
|
|
@ -0,0 +1,121 @@
|
|||
<?xml version='1.0' encoding='utf-8' ?>
|
||||
<!-- C++Builder XML Project -->
|
||||
<PROJECT>
|
||||
<MACROS>
|
||||
<VERSION value="BCB.06.00"/>
|
||||
<PROJECT value="setup.exe"/>
|
||||
<OBJFILES value="setup.obj Unit1.obj"/>
|
||||
<RESFILES value="setup.res"/>
|
||||
<IDLFILES value=""/>
|
||||
<IDLGENFILES value=""/>
|
||||
<DEFFILE value=""/>
|
||||
<RESDEPEN value="$(RESFILES) Unit1.dfm"/>
|
||||
<LIBFILES value=""/>
|
||||
<LIBRARIES value="rtl.lib vcl.lib"/>
|
||||
<SPARELIBS value="vcl.lib rtl.lib"/>
|
||||
<PACKAGES value="vcl.bpi rtl.bpi dbrtl.bpi adortl.bpi vcldb.bpi vclx.bpi bdertl.bpi
|
||||
vcldbx.bpi ibxpress.bpi dsnap.bpi cds.bpi bdecds.bpi qrpt.bpi teeui.bpi
|
||||
teedb.bpi tee.bpi dss.bpi teeqr.bpi visualclx.bpi visualdbclx.bpi
|
||||
dsnapcrba.bpi dsnapcon.bpi bcbsmp.bpi vclie.bpi xmlrtl.bpi inet.bpi
|
||||
inetdbbde.bpi inetdbxpress.bpi inetdb.bpi nmfast.bpi webdsnap.bpi
|
||||
bcbie.bpi websnap.bpi soaprtl.bpi dclocx.bpi dbexpress.bpi dbxcds.bpi
|
||||
indy.bpi bcb2kaxserver.bpi pop.bpi IcsBcb50.bpi bcbshlctrls.bpi"/>
|
||||
<PATHCPP value=".;"/>
|
||||
<PATHPAS value=".;"/>
|
||||
<PATHRC value=".;"/>
|
||||
<PATHASM value=".;"/>
|
||||
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
|
||||
<RELEASELIBPATH value="$(BCB)\lib\release"/>
|
||||
<LINKER value="ilink32"/>
|
||||
<USERDEFINES value=""/>
|
||||
<SYSDEFINES value="_RTLDLL;NO_STRICT"/>
|
||||
<MAINSOURCE value="setup.cpp"/>
|
||||
<INCLUDEPATH value="E:\CBuilder6\Projects;"C:\Documents and Settings\niko\Bureau\Nouveau dossier";$(BCB)\include;$(BCB)\include\vcl"/>
|
||||
<LIBPATH value="E:\CBuilder6\Projects;"C:\Documents and Settings\niko\Bureau\Nouveau dossier";$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib"/>
|
||||
<WARNINGS value="-w-par"/>
|
||||
<OTHERFILES value=""/>
|
||||
</MACROS>
|
||||
<OPTIONS>
|
||||
<IDLCFLAGS value="-IE:\CBuilder6\Projects
|
||||
-I"C:\Documents and Settings\niko\Bureau\Nouveau dossier" -I$(BCB)\include
|
||||
-I$(BCB)\include\vcl -src_suffix cpp -boa"/>
|
||||
<CFLAG1 value="-O2 -H=$(BCB)\lib\vcl60.csm -Hc -w- -Vx -Ve -X- -a8 -b- -k- -vi -c -tW -tWM"/>
|
||||
<PFLAGS value="-$Y- -$L- -$D- -$A8 -v -JPHNE -M"/>
|
||||
<RFLAGS value=""/>
|
||||
<AFLAGS value="/mx /w2 /zn"/>
|
||||
<LFLAGS value="-D"" -aa -Tpe -x -Gn"/>
|
||||
<OTHERFILES value=""/>
|
||||
</OPTIONS>
|
||||
<LINKER>
|
||||
<ALLOBJ value="c0w32.obj Memmgr.Lib sysinit.obj $(OBJFILES)"/>
|
||||
<ALLRES value="$(RESFILES)"/>
|
||||
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib"/>
|
||||
<OTHERFILES value=""/>
|
||||
</LINKER>
|
||||
<FILELIST>
|
||||
<FILE FILENAME="setup.res" FORMNAME="" UNITNAME="setup.res" CONTAINERID="ResTool" DESIGNCLASS="" LOCALCOMMAND=""/>
|
||||
<FILE FILENAME="setup.cpp" FORMNAME="" UNITNAME="setup" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
|
||||
<FILE FILENAME="Unit1.cpp" FORMNAME="Form1" UNITNAME="Unit1" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
|
||||
</FILELIST>
|
||||
<BUILDTOOLS>
|
||||
</BUILDTOOLS>
|
||||
|
||||
<IDEOPTIONS>
|
||||
[Version Info]
|
||||
IncludeVerInfo=0
|
||||
AutoIncBuild=0
|
||||
MajorVer=1
|
||||
MinorVer=0
|
||||
Release=0
|
||||
Build=0
|
||||
Debug=0
|
||||
PreRelease=0
|
||||
Special=0
|
||||
Private=0
|
||||
DLL=0
|
||||
Locale=1036
|
||||
CodePage=1252
|
||||
|
||||
[Version Info Keys]
|
||||
CompanyName=
|
||||
FileDescription=
|
||||
FileVersion=1.0.0.0
|
||||
InternalName=
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
OriginalFilename=
|
||||
ProductName=
|
||||
ProductVersion=1.0.0.0
|
||||
Comments=
|
||||
|
||||
[Debugging]
|
||||
DebugSourceDirs=$(BCB)\source\vcl
|
||||
|
||||
[Parameters]
|
||||
RunParams=
|
||||
Launcher=
|
||||
UseLauncher=0
|
||||
DebugCWD=
|
||||
HostApplication=
|
||||
RemoteHost=
|
||||
RemotePath=
|
||||
RemoteLauncher=
|
||||
RemoteCWD=
|
||||
RemoteDebug=0
|
||||
|
||||
[Compiler]
|
||||
ShowInfoMsgs=0
|
||||
LinkDebugVcl=0
|
||||
LinkCGLIB=0
|
||||
|
||||
[CORBA]
|
||||
AddServerUnit=1
|
||||
AddClientUnit=1
|
||||
PrecompiledHeaders=1
|
||||
|
||||
[Language]
|
||||
ActiveLang=
|
||||
ProjectLang=
|
||||
RootDir=
|
||||
</IDEOPTIONS>
|
||||
</PROJECT>
|
|
@ -0,0 +1,33 @@
|
|||
//---------------------------------------------------------------------------
|
||||
|
||||
#include <vcl.h>
|
||||
#pragma hdrstop
|
||||
//---------------------------------------------------------------------------
|
||||
USEFORM("Unit1.cpp", Form1);
|
||||
//---------------------------------------------------------------------------
|
||||
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
||||
{
|
||||
try
|
||||
{
|
||||
Application->Initialize();
|
||||
Application->CreateForm(__classid(TForm1), &Form1);
|
||||
Application->Run();
|
||||
}
|
||||
catch (Exception &exception)
|
||||
{
|
||||
Application->ShowException(&exception);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
try
|
||||
{
|
||||
throw Exception("");
|
||||
}
|
||||
catch (Exception &exception)
|
||||
{
|
||||
Application->ShowException(&exception);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,166 @@
|
|||
//---------------------------------------------------------------------------
|
||||
|
||||
#include <vcl.h>
|
||||
#include <winioctl.h>
|
||||
#include <io.h>
|
||||
#include <fcntl.h>
|
||||
#include <dir.h>
|
||||
#pragma hdrstop
|
||||
|
||||
#include "Unit1.h"
|
||||
//---------------------------------------------------------------------------
|
||||
#pragma package(smart_init)
|
||||
#pragma resource "*.dfm"
|
||||
TForm1 *Form1;
|
||||
HANDLE hDrive;
|
||||
DISK_GEOMETRY dg_flop_geom;
|
||||
AnsiString lecteur="b:";
|
||||
AnsiString device="\\\\.\\"+lecteur;
|
||||
//---------------------------------------------------------------------------
|
||||
__fastcall TForm1::TForm1(TComponent* Owner)
|
||||
: TForm(Owner)
|
||||
{
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
char * GetLastErrorString(void)
|
||||
{
|
||||
LPVOID lpMsgBuf;
|
||||
|
||||
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
(LPTSTR) &lpMsgBuf, 0, NULL);
|
||||
|
||||
return (char *)lpMsgBuf;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
ShowMessages(AnsiString msg)
|
||||
{
|
||||
Form1->Memo1->Lines->Add(msg);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::FormShow(TObject *Sender)
|
||||
{
|
||||
DWORD dwNotUsed;
|
||||
DWORD error=0;
|
||||
|
||||
hDrive = CreateFile(device.c_str(), GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
|
||||
ShowMessages("Ouverture du peripherique "+lecteur);
|
||||
if (hDrive == INVALID_HANDLE_VALUE) {
|
||||
ShowMessages("Erreur : "+AnsiString(GetLastErrorString()));
|
||||
error=1;
|
||||
}
|
||||
if(error!=1&&ShowMessages("Determination de la geometrie ")&&DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL,0, &dg_flop_geom, sizeof(dg_flop_geom),&dwNotUsed, NULL) == FALSE) {
|
||||
ShowMessages("Erreur : "+AnsiString(GetLastErrorString()));
|
||||
error=1;
|
||||
}
|
||||
if(error!=1&&(dg_flop_geom.MediaType==FixedMedia||dg_flop_geom.MediaType==RemovableMedia||dg_flop_geom.MediaType==Unknown))
|
||||
{
|
||||
ShowMessages("Erreur : Ceci n'est pas une disquette !");
|
||||
error=1;
|
||||
}
|
||||
if (error!=1&&ShowMessages("Positionnement sur le secteur 0")&&SetFilePointer(hDrive, 0, NULL, FILE_BEGIN) == -1) {
|
||||
ShowMessages("Erreur : "+AnsiString(GetLastErrorString()));
|
||||
error=1;
|
||||
}
|
||||
if (error!=1)
|
||||
{
|
||||
drive->Caption=lecteur.UpperCase();
|
||||
track->Caption=IntToStr(dg_flop_geom.Cylinders.LowPart);
|
||||
sector->Caption=IntToStr(dg_flop_geom.SectorsPerTrack);
|
||||
size->Caption=IntToStr(dg_flop_geom.BytesPerSector);
|
||||
head->Caption=IntToStr(dg_flop_geom.TracksPerCylinder);
|
||||
allsize->Caption=IntToStr(dg_flop_geom.BytesPerSector*dg_flop_geom.Cylinders.LowPart*dg_flop_geom.SectorsPerTrack*dg_flop_geom.TracksPerCylinder);
|
||||
allsector->Caption=IntToStr(dg_flop_geom.Cylinders.LowPart*dg_flop_geom.SectorsPerTrack*dg_flop_geom.TracksPerCylinder);
|
||||
}
|
||||
else
|
||||
{
|
||||
CloseHandle(hDrive);
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::Button1Click(TObject *Sender)
|
||||
{
|
||||
if (hDrive == NULL||dg_flop_geom.TracksPerCylinder>2||dg_flop_geom.TracksPerCylinder==0)
|
||||
|
||||
{
|
||||
ShowMessages("Aucun support valide detecté !");
|
||||
}
|
||||
else
|
||||
{
|
||||
int fdboot;
|
||||
DWORD error=0;
|
||||
DWORD dwBsWritten;
|
||||
char * buffer;
|
||||
AnsiString bootfile="data/boot.bin";
|
||||
ShowMessages("Allocation de mémoire ");
|
||||
buffer = (char *)malloc(dg_flop_geom.BytesPerSector);
|
||||
ShowMessages("Ouverture et installation du fichier de boot "+bootfile);
|
||||
if ((fdboot = _rtl_open(bootfile.c_str(),O_RDONLY | O_BINARY)) == -1 )
|
||||
{
|
||||
ShowMessages("Erreur : Fichier de boot introuvable");
|
||||
error=1;
|
||||
}
|
||||
if (error!=1&&_read(fdboot, buffer, dg_flop_geom.BytesPerSector)!= dg_flop_geom.BytesPerSector)
|
||||
{
|
||||
ShowMessages("Erreur : Fichier de boot de taille incorrecte !");
|
||||
error=1;
|
||||
}
|
||||
if (error!=1&&WriteFile(hDrive, buffer, dg_flop_geom.BytesPerSector, &dwBsWritten, NULL) == 0)
|
||||
{
|
||||
ShowMessages("Ecriture impossible sur le secteur de boot !");
|
||||
error=1;
|
||||
}
|
||||
_rtl_close(fdboot);
|
||||
if (error!=1)
|
||||
{
|
||||
struct ffblk files;
|
||||
int done;
|
||||
int number=0;
|
||||
ShowMessages("Détermination des fichiers a copier");
|
||||
done = findfirst("data/*.*",&files,0);
|
||||
while (!done)
|
||||
{
|
||||
number++;
|
||||
done = findnext(&files);
|
||||
}
|
||||
install->Max=number;
|
||||
install->Min=0;
|
||||
install->Position=0;
|
||||
ShowMessages("Copie des fichiers de cos2000");
|
||||
done = findfirst("data/*.*",&files,0);
|
||||
while (!done)
|
||||
{
|
||||
ShowMessages(AnsiString(files.ff_name).LowerCase());
|
||||
if (!CopyFile((AnsiString("data/")+AnsiString(files.ff_name)).c_str(),(lecteur+"\\"+AnsiString(files.ff_name)).c_str(),false))
|
||||
{
|
||||
ShowMessages("Erreur : fichier impossible a copier"+AnsiString(GetLastErrorString()));
|
||||
error=1;
|
||||
break;
|
||||
}
|
||||
done = findnext(&files);
|
||||
install->Position++;
|
||||
}
|
||||
if (!error)
|
||||
{
|
||||
ShowMessages("Installation terminée !");
|
||||
Button2->Visible=false;
|
||||
Button1->Visible=false;
|
||||
Button3->Visible=true;
|
||||
}
|
||||
else
|
||||
ShowMessages("Installation echoué !");
|
||||
}
|
||||
free(buffer);
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
|
||||
{
|
||||
CloseHandle(hDrive);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::Button3Click(TObject *Sender)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
Binary file not shown.
|
@ -0,0 +1,184 @@
|
|||
object Form1: TForm1
|
||||
Left = 418
|
||||
Top = 273
|
||||
Width = 599
|
||||
Height = 371
|
||||
Caption = 'Installation de COS2000'
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'MS Sans Serif'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
Position = poScreenCenter
|
||||
OnClose = FormClose
|
||||
OnShow = FormShow
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object Button1: TButton
|
||||
Left = 288
|
||||
Top = 304
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'installer...'
|
||||
TabOrder = 0
|
||||
OnClick = Button1Click
|
||||
end
|
||||
object install: TProgressBar
|
||||
Left = 16
|
||||
Top = 264
|
||||
Width = 553
|
||||
Height = 25
|
||||
Min = 0
|
||||
Max = 100
|
||||
TabOrder = 1
|
||||
end
|
||||
object Button2: TButton
|
||||
Left = 208
|
||||
Top = 304
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'support'
|
||||
TabOrder = 2
|
||||
OnClick = FormShow
|
||||
end
|
||||
object Memo1: TMemo
|
||||
Left = 192
|
||||
Top = 24
|
||||
Width = 377
|
||||
Height = 225
|
||||
ReadOnly = True
|
||||
TabOrder = 3
|
||||
end
|
||||
object GroupBox1: TGroupBox
|
||||
Left = 16
|
||||
Top = 120
|
||||
Width = 161
|
||||
Height = 129
|
||||
Caption = 'G'#233'om'#233'trie'
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'MS Sans Serif'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
object track: TLabel
|
||||
Left = 96
|
||||
Top = 60
|
||||
Width = 31
|
||||
Height = 13
|
||||
Caption = 'Aucun'
|
||||
end
|
||||
object Label4: TLabel
|
||||
Left = 24
|
||||
Top = 60
|
||||
Width = 34
|
||||
Height = 13
|
||||
Caption = 'Pistes :'
|
||||
end
|
||||
object Label5: TLabel
|
||||
Left = 24
|
||||
Top = 28
|
||||
Width = 48
|
||||
Height = 13
|
||||
Caption = 'Secteurs :'
|
||||
end
|
||||
object sector: TLabel
|
||||
Left = 96
|
||||
Top = 28
|
||||
Width = 31
|
||||
Height = 13
|
||||
Caption = 'Aucun'
|
||||
end
|
||||
object head: TLabel
|
||||
Left = 96
|
||||
Top = 44
|
||||
Width = 31
|
||||
Height = 13
|
||||
Caption = 'Aucun'
|
||||
end
|
||||
object Label6: TLabel
|
||||
Left = 24
|
||||
Top = 44
|
||||
Width = 33
|
||||
Height = 13
|
||||
Caption = 'Tetes :'
|
||||
end
|
||||
object Label8: TLabel
|
||||
Left = 24
|
||||
Top = 84
|
||||
Width = 69
|
||||
Height = 13
|
||||
Caption = 'Taille secteur :'
|
||||
end
|
||||
object size: TLabel
|
||||
Left = 96
|
||||
Top = 84
|
||||
Width = 31
|
||||
Height = 13
|
||||
Caption = 'Aucun'
|
||||
end
|
||||
end
|
||||
object GroupBox2: TGroupBox
|
||||
Left = 16
|
||||
Top = 16
|
||||
Width = 161
|
||||
Height = 97
|
||||
Caption = 'Support'
|
||||
TabOrder = 5
|
||||
object Label1: TLabel
|
||||
Left = 24
|
||||
Top = 24
|
||||
Width = 42
|
||||
Height = 13
|
||||
Caption = 'Lecteur :'
|
||||
end
|
||||
object drive: TLabel
|
||||
Left = 88
|
||||
Top = 24
|
||||
Width = 31
|
||||
Height = 13
|
||||
Caption = 'Aucun'
|
||||
end
|
||||
object Label2: TLabel
|
||||
Left = 24
|
||||
Top = 40
|
||||
Width = 31
|
||||
Height = 13
|
||||
Caption = 'Taille :'
|
||||
end
|
||||
object allsize: TLabel
|
||||
Left = 88
|
||||
Top = 40
|
||||
Width = 31
|
||||
Height = 13
|
||||
Caption = 'Aucun'
|
||||
end
|
||||
object Label3: TLabel
|
||||
Left = 24
|
||||
Top = 56
|
||||
Width = 58
|
||||
Height = 13
|
||||
Caption = 'N'#176'secteurs :'
|
||||
end
|
||||
object allsector: TLabel
|
||||
Left = 88
|
||||
Top = 56
|
||||
Width = 31
|
||||
Height = 13
|
||||
Caption = 'Aucun'
|
||||
end
|
||||
end
|
||||
object Button3: TButton
|
||||
Left = 248
|
||||
Top = 304
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'Quitter'
|
||||
TabOrder = 6
|
||||
Visible = False
|
||||
OnClick = Button3Click
|
||||
end
|
||||
end
|
|
@ -0,0 +1,47 @@
|
|||
//---------------------------------------------------------------------------
|
||||
|
||||
#ifndef Unit1H
|
||||
#define Unit1H
|
||||
//---------------------------------------------------------------------------
|
||||
#include <Classes.hpp>
|
||||
#include <Controls.hpp>
|
||||
#include <StdCtrls.hpp>
|
||||
#include <Forms.hpp>
|
||||
#include <ComCtrls.hpp>
|
||||
//---------------------------------------------------------------------------
|
||||
class TForm1 : public TForm
|
||||
{
|
||||
__published: // IDE-managed Components
|
||||
TButton *Button1;
|
||||
TProgressBar *install;
|
||||
TButton *Button2;
|
||||
TMemo *Memo1;
|
||||
TGroupBox *GroupBox1;
|
||||
TLabel *track;
|
||||
TLabel *Label4;
|
||||
TLabel *Label5;
|
||||
TLabel *sector;
|
||||
TLabel *head;
|
||||
TLabel *Label6;
|
||||
TLabel *Label8;
|
||||
TLabel *size;
|
||||
TGroupBox *GroupBox2;
|
||||
TLabel *Label1;
|
||||
TLabel *drive;
|
||||
TLabel *Label2;
|
||||
TLabel *allsize;
|
||||
TLabel *Label3;
|
||||
TLabel *allsector;
|
||||
TButton *Button3;
|
||||
void __fastcall FormShow(TObject *Sender);
|
||||
void __fastcall Button1Click(TObject *Sender);
|
||||
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
|
||||
void __fastcall Button3Click(TObject *Sender);
|
||||
private: // User declarations
|
||||
public: // User declarations
|
||||
__fastcall TForm1(TComponent* Owner);
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
extern PACKAGE TForm1 *Form1;
|
||||
//---------------------------------------------------------------------------
|
||||
#endif
|
|
@ -0,0 +1,26 @@
|
|||
asm= lzasm
|
||||
lnk= elink
|
||||
|
||||
all: detect.lib video.lib
|
||||
|
||||
detect.lib: detect.obj
|
||||
$(lnk) detect.obj detect.lib
|
||||
|
||||
video.lib: video.obj
|
||||
$(lnk) video.obj video.lib
|
||||
|
||||
detect.obj:
|
||||
$(asm) detect.asm
|
||||
|
||||
video.obj:
|
||||
$(asm) video.asm
|
||||
|
||||
clean:
|
||||
del *.obj
|
||||
del *.exe
|
||||
del *.bak
|
||||
del *.lib
|
||||
del *.com
|
||||
del *.bin
|
||||
del *.sys
|
||||
del *.err
|
|
@ -0,0 +1,114 @@
|
|||
.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 dx si di
|
||||
mov si,[pointer]
|
||||
cmp word ptr [si+BMP_file.BMP_FileType],"MB"
|
||||
jne @@errorshowing
|
||||
mov edi,[si+BMP_BitMapOffset]
|
||||
add di,si
|
||||
mov ah,8
|
||||
xor ebx,ebx
|
||||
mov ecx,[si+offset BMP_File.BMP_height]
|
||||
mov edx,[si+offset BMP_File.BMP_width]
|
||||
and dx,11111100b
|
||||
cmp edx,[si+offset BMP_File.BMP_width]
|
||||
jae @@noadjust
|
||||
add dx,4
|
||||
@@noadjust:
|
||||
sub dx,[si+offset BMP_File.BMP_width]
|
||||
@@bouclette:
|
||||
mov al,[di]
|
||||
push bx cx
|
||||
add bx,[x]
|
||||
add cx,[y]
|
||||
int 47h
|
||||
pop cx bx
|
||||
inc bx
|
||||
inc di
|
||||
cmp ebx,[si+offset BMP_File.BMP_width]
|
||||
jb @@bouclette
|
||||
xor bx,bx
|
||||
add di,dx
|
||||
dec cx
|
||||
cmp cx,0
|
||||
jne @@bouclette
|
||||
clc
|
||||
pop di si dx cx bx ax
|
||||
pop bp
|
||||
retf taille
|
||||
|
||||
@@errorshowing:
|
||||
stc
|
||||
pop di si cx bx ax
|
||||
pop bp
|
||||
retf taille
|
||||
|
||||
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
|
|
@ -0,0 +1,772 @@
|
|||
model tiny,stdcall
|
||||
p586
|
||||
locals
|
||||
jumps
|
||||
codeseg
|
||||
option procalign:byte
|
||||
|
||||
include "..\include\mem.h"
|
||||
include "..\include\cpu.h"
|
||||
include "..\include\pci.h"
|
||||
|
||||
org 0h
|
||||
|
||||
header exe <"CE",1,0,0,offset exports,,,>
|
||||
|
||||
exports:
|
||||
db "cpuinfo",0
|
||||
dw cpuinfo
|
||||
db "setinfo",0
|
||||
dw setinfo
|
||||
db "pciinfo",0
|
||||
dw pciinfo
|
||||
db "getpciclass",0
|
||||
dw getpciclass
|
||||
db "getpcisubclass",0
|
||||
dw getpcisubclass
|
||||
db "getcardinfo",0
|
||||
dw getcardinfo
|
||||
db "pcireadbyte",0
|
||||
dw pcireadbyte
|
||||
db "pcireadword",0
|
||||
dw pcireadword
|
||||
db "pcireaddword",0
|
||||
dw pcireaddword
|
||||
db "detectvmware",0
|
||||
dw detectvmware
|
||||
dd 0
|
||||
|
||||
PROC detectvmware FAR
|
||||
USES eax,ebx,ecx,edx
|
||||
mov eax,564D5868h
|
||||
mov ebx,12345h
|
||||
mov ecx,00Ah
|
||||
mov edx,5658h
|
||||
in ax,dx
|
||||
cmp ebx,564D5868h
|
||||
ret
|
||||
endp detectvmware
|
||||
|
||||
;renvoie un pointer dx:ax vers la classe %0
|
||||
PROC getpciclass FAR
|
||||
ARG @class:word
|
||||
USES di
|
||||
mov di,[@class]
|
||||
and di,0FFh
|
||||
shl di,1
|
||||
mov ax,[cs:offset classes+di]
|
||||
mov dx,cs
|
||||
ret
|
||||
endp getpciclass
|
||||
|
||||
;renvoie un pointer dx:ax vers la sous-classe de %1 et de classe %0
|
||||
PROC getpcisubclass FAR
|
||||
ARG @class:word,@subclass:word
|
||||
USES di
|
||||
mov di,[@class]
|
||||
and di,0FFh
|
||||
shl di,1
|
||||
mov di,[cs:offset classesd+di]
|
||||
mov dx,[@subclass]
|
||||
and dx,0FFh
|
||||
cmp dx,80h
|
||||
jne @@suiteac
|
||||
mov ax,offset divers
|
||||
jmp @@found
|
||||
@@suiteac:
|
||||
shl dx,1
|
||||
add di,dx
|
||||
mov ax,[cs:di]
|
||||
@@found:
|
||||
mov dx,cs
|
||||
ret
|
||||
endp getpcisubclass
|
||||
|
||||
divers db 'divers',0
|
||||
|
||||
classes:
|
||||
dw offset class0
|
||||
dw offset class1
|
||||
dw offset class2
|
||||
dw offset class3
|
||||
dw offset class4
|
||||
dw offset class5
|
||||
dw offset class6
|
||||
dw offset class7
|
||||
dw offset class8
|
||||
dw offset class9
|
||||
dw offset class10
|
||||
dw offset class11
|
||||
dw offset class12
|
||||
dw offset class13
|
||||
dw offset class14
|
||||
dw offset class15
|
||||
dw offset class16
|
||||
dw offset class17
|
||||
class0 db 'ancien',0
|
||||
class1 db 'stockage',0
|
||||
class2 db 'reseau',0
|
||||
class3 db 'affichage',0
|
||||
class4 db 'multimedia',0
|
||||
class5 db 'memoire',0
|
||||
class6 db 'pont',0
|
||||
class7 db 'communication',0
|
||||
class8 db 'systeme',0
|
||||
class9 db 'acquisition',0
|
||||
class10 db 'dock',0
|
||||
class11 db 'processeur',0
|
||||
class12 db 'bus serie',0
|
||||
class13 db 'sans fil',0
|
||||
class14 db 'intelligent',0
|
||||
class15 db 'satellite',0
|
||||
class16 db 'cryptage',0
|
||||
class17 db 'traitement signal',0
|
||||
|
||||
|
||||
;Classes et sous classes
|
||||
classesd:
|
||||
dw offset class0d
|
||||
dw offset class1d
|
||||
dw offset class2d
|
||||
dw offset class3d
|
||||
dw offset class4d
|
||||
dw offset class5d
|
||||
dw offset class6d
|
||||
dw offset class7d
|
||||
dw offset class8d
|
||||
dw offset class9d
|
||||
dw offset class10d
|
||||
dw offset class11d
|
||||
dw offset class12d
|
||||
dw offset class13d
|
||||
dw offset class14d
|
||||
dw offset class15d
|
||||
dw offset class16d
|
||||
dw offset class17d
|
||||
|
||||
class0d:
|
||||
dw offset subclass00
|
||||
dw offset subclass01
|
||||
subclass00 db 'divers',0
|
||||
subclass01 db 'vga',0
|
||||
|
||||
class1d:
|
||||
dw offset subclass10
|
||||
dw offset subclass11
|
||||
dw offset subclass12
|
||||
dw offset subclass13
|
||||
dw offset subclass14
|
||||
subclass10 db 'scsi',0
|
||||
subclass11 db 'ide',0
|
||||
subclass12 db 'disquette',0
|
||||
subclass13 db 'ipi',0
|
||||
subclass14 db 'raid',0
|
||||
|
||||
class2d:
|
||||
dw offset subclass20
|
||||
dw offset subclass21
|
||||
dw offset subclass22
|
||||
dw offset subclass23
|
||||
dw offset subclass24
|
||||
subclass20 db 'ethernet',0
|
||||
subclass21 db 'token ring',0
|
||||
subclass22 db 'fddi',0
|
||||
subclass23 db 'atm',0
|
||||
subclass24 db 'isdn',0
|
||||
|
||||
class3d:
|
||||
dw offset subclass30
|
||||
dw offset subclass31
|
||||
dw offset subclass32
|
||||
subclass30 db 'vga',0
|
||||
subclass31 db 'xga',0
|
||||
subclass32 db '3D',0
|
||||
|
||||
class4d:
|
||||
dw offset subclass40
|
||||
dw offset subclass41
|
||||
dw offset subclass42
|
||||
subclass40 db 'video',0
|
||||
subclass41 db 'audio',0
|
||||
subclass42 db 'telephonie',0
|
||||
|
||||
class5d:
|
||||
dw offset subclass50
|
||||
dw offset subclass51
|
||||
subclass50 db 'ram',0
|
||||
subclass51 db 'flash',0
|
||||
|
||||
class6d:
|
||||
dw offset subclass60
|
||||
dw offset subclass61
|
||||
dw offset subclass62
|
||||
dw offset subclass63
|
||||
dw offset subclass64
|
||||
dw offset subclass65
|
||||
dw offset subclass66
|
||||
dw offset subclass67
|
||||
dw offset subclass68
|
||||
subclass60 db 'hote',0
|
||||
subclass61 db 'isa',0
|
||||
subclass62 db 'eisa',0
|
||||
subclass63 db 'mca',0
|
||||
subclass64 db 'pci',0
|
||||
subclass65 db 'pcmcia',0
|
||||
subclass66 db 'nubus',0
|
||||
subclass67 db 'cardbus',0
|
||||
subclass68 db 'RACEway',0
|
||||
|
||||
class7d:
|
||||
dw offset subclass70
|
||||
dw offset subclass71
|
||||
dw offset subclass72
|
||||
dw offset subclass73
|
||||
subclass70 db 'serie',0
|
||||
subclass71 db 'parallele',0
|
||||
subclass72 db 'serie multiport',0
|
||||
subclass73 db 'modem',0
|
||||
|
||||
class8d:
|
||||
dw offset subclass80
|
||||
dw offset subclass81
|
||||
dw offset subclass82
|
||||
dw offset subclass83
|
||||
dw offset subclass84
|
||||
subclass80 db 'pic',0
|
||||
subclass81 db 'dma',0
|
||||
subclass82 db 'timer',0
|
||||
subclass83 db 'rtc',0
|
||||
subclass84 db 'hotplug',0
|
||||
|
||||
class9d:
|
||||
dw offset subclass90
|
||||
dw offset subclass91
|
||||
dw offset subclass92
|
||||
dw offset subclass93
|
||||
dw offset subclass94
|
||||
subclass90 db 'clavier',0
|
||||
subclass91 db 'stylo',0
|
||||
subclass92 db 'souris',0
|
||||
subclass93 db 'scanner',0
|
||||
subclass94 db 'joystick',0
|
||||
|
||||
class10d:
|
||||
dw offset subclass100
|
||||
subclass100 db 'station',0
|
||||
|
||||
class11d:
|
||||
dw offset subclass110
|
||||
dw offset subclass111
|
||||
dw offset subclass112
|
||||
dw offset subclass113
|
||||
dw offset subclass114
|
||||
subclass110 db '386',0
|
||||
subclass111 db '486',0
|
||||
subclass112 db 'pentium',0
|
||||
subclass113 db 'alpha',0
|
||||
subclass114 db 'coprocesseur',0
|
||||
|
||||
class12d:
|
||||
dw offset subclass120
|
||||
dw offset subclass121
|
||||
dw offset subclass122
|
||||
dw offset subclass123
|
||||
dw offset subclass124
|
||||
dw offset subclass125
|
||||
subclass120 db 'firewire',0
|
||||
subclass121 db 'access',0
|
||||
subclass122 db 'ssa',0
|
||||
subclass123 db 'usb',0
|
||||
subclass124 db 'fibre',0
|
||||
subclass125 db 'smbus',0
|
||||
|
||||
class13d:
|
||||
dw offset subclass130
|
||||
dw offset subclass131
|
||||
dw offset subclass132
|
||||
subclass130 db 'irda',0
|
||||
subclass131 db 'ir',0
|
||||
subclass132 db 'rf',0
|
||||
|
||||
class14d:
|
||||
dw offset subclass140
|
||||
subclass140 db 'IO arch',0
|
||||
|
||||
class15d:
|
||||
dw offset subclass150
|
||||
dw offset subclass151
|
||||
dw offset subclass152
|
||||
dw offset subclass153
|
||||
subclass150 db 'tv',0
|
||||
subclass151 db 'audio',0
|
||||
subclass152 db 'voix',0
|
||||
subclass153 db 'donnees',0
|
||||
|
||||
class16d:
|
||||
dw offset subclass160
|
||||
dw offset subclass161
|
||||
subclass160 db 'reseau',0
|
||||
subclass161 db 'jeux',0
|
||||
|
||||
class17d:
|
||||
dw offset subclass170
|
||||
subclass170 db 'dpio',0
|
||||
|
||||
|
||||
;al=bus cl=deviceid ch=func es:di
|
||||
PROC getcardinfo FAR
|
||||
ARG @bus:word,@device:word,@function:word,@pointer:word
|
||||
USES eax,bx,di
|
||||
cmp [@function],0
|
||||
je @@amultiorfirst
|
||||
call pcireadbyte,[@bus],[@device],0,offset (pcidata).typed
|
||||
and al,multifunction
|
||||
cmp al,0
|
||||
jne @@amultiorfirst
|
||||
mov [word ptr di],0000h
|
||||
jmp @@notexist
|
||||
@@amultiorfirst:
|
||||
xor bx,bx
|
||||
mov di,[@pointer]
|
||||
@@goinfos:
|
||||
call pcireadword,[@bus],[@device],[@function],bx
|
||||
inc bl
|
||||
inc bl
|
||||
cmp bl,2
|
||||
ja @@notzarb
|
||||
cmp ax,0FFFFh
|
||||
je @@notexist
|
||||
cmp ax,00000h
|
||||
je @@notexist
|
||||
@@notzarb:
|
||||
mov [ds:di],ax
|
||||
inc di
|
||||
inc di
|
||||
cmp bl,40h
|
||||
jbe @@goinfos
|
||||
clc
|
||||
ret
|
||||
@@notexist:
|
||||
stc
|
||||
ret
|
||||
endp getcardinfo
|
||||
|
||||
;lit un octet du bus %0 device %1 function %2 n° %3 et le met en AL
|
||||
PROC pcireadbyte FAR
|
||||
ARG @bus:word,@device:word,@function:word,@pointer:word
|
||||
USES bx,dx
|
||||
mov al,[byte ptr @bus]
|
||||
mov ah,80h
|
||||
shl eax,16
|
||||
mov ah,[byte ptr @device]
|
||||
shl ah,3
|
||||
or ah,[byte ptr @function]
|
||||
mov bl,[byte ptr @pointer]
|
||||
mov al,bl
|
||||
and al,0fch
|
||||
mov dx,config1addr
|
||||
out dx,eax
|
||||
mov dx,config1data
|
||||
and bl,3
|
||||
or dl,bl
|
||||
in al,dx
|
||||
ret
|
||||
endp pcireadbyte
|
||||
|
||||
;lit 2 octet du bus %0 device %1 function %2 n° %3 et le met en AX
|
||||
PROC pcireadword FAR
|
||||
ARG @bus:word,@device:word,@function:word,@pointer:word
|
||||
USES bx,dx
|
||||
mov al,[byte ptr @bus]
|
||||
mov ah,80h
|
||||
shl eax,16
|
||||
mov ah,[byte ptr @device]
|
||||
shl ah,3
|
||||
or ah,[byte ptr @function]
|
||||
mov bl,[byte ptr @pointer]
|
||||
mov al,bl
|
||||
and al,0fch
|
||||
mov dx,config1addr
|
||||
out dx,eax
|
||||
mov dx,config1data
|
||||
and bl,3
|
||||
or dl,bl
|
||||
in ax,dx
|
||||
ret
|
||||
endp pcireadword
|
||||
|
||||
;lit 4 octet du bus %0 device %1 function %2 n° %3 et le met en EAX
|
||||
PROC pcireaddword FAR
|
||||
ARG @bus:word,@device:word,@function:word,@pointer:word
|
||||
USES bx,dx
|
||||
mov al,[byte ptr @bus]
|
||||
mov ah,80h
|
||||
shl eax,16
|
||||
mov ah,[byte ptr @device]
|
||||
shl ah,3
|
||||
or ah,[byte ptr @function]
|
||||
mov bl,[byte ptr @pointer]
|
||||
mov al,bl
|
||||
and al,0fch
|
||||
mov dx,config1addr
|
||||
out dx,eax
|
||||
mov dx,config1data
|
||||
and bl,3
|
||||
or dl,bl
|
||||
in eax,dx
|
||||
ret
|
||||
endp pcireaddword
|
||||
|
||||
;Prob avec str pci
|
||||
;renvoie en %0 la structure pciinf carry if error
|
||||
PROC pciinfo FAR
|
||||
ARG @pointer:word
|
||||
USES ax,bx,cx,edx,edi
|
||||
mov ax,0B101h
|
||||
xor edi,edi
|
||||
mov edx," PCI"
|
||||
int 1Ah
|
||||
jc @@errorpci
|
||||
cmp dx,04350h
|
||||
jne @@errorpci
|
||||
cmp ah,0
|
||||
jne @@errorpci
|
||||
mov di,[@pointer]
|
||||
mov [(pciinf di).version_major],bh
|
||||
mov [(pciinf di).version_minor],bl
|
||||
mov [(pciinf di).types],al
|
||||
mov [(pciinf di).maxbus],cl
|
||||
clc
|
||||
ret
|
||||
@@errorpci:
|
||||
stc
|
||||
ret
|
||||
endp pciinfo
|
||||
|
||||
|
||||
;retourne en DS:%1 les set supporté du processeur par rapport a la struct %0
|
||||
PROC setinfo FAR
|
||||
ARG @pointer:word,@set:word
|
||||
USES bx,si,di
|
||||
mov di,[@set]
|
||||
lea si,[ds:cpu.mmx]
|
||||
add si,[@pointer]
|
||||
mov bx,offset @@theset
|
||||
@@set:
|
||||
cmp [word ptr cs:bx],0FFFFh
|
||||
je @@endofset
|
||||
cmp [byte ptr si],1
|
||||
jne @@nextset
|
||||
push bx
|
||||
mov bx,[cs:bx]
|
||||
@@put:
|
||||
mov al,[cs:bx]
|
||||
cmp al,0
|
||||
je @@enofput
|
||||
mov [di],al
|
||||
inc bx
|
||||
inc di
|
||||
jmp @@put
|
||||
@@enofput:
|
||||
pop bx
|
||||
@@nextset:
|
||||
inc bx
|
||||
inc bx
|
||||
inc si
|
||||
jmp @@set
|
||||
@@endofset:
|
||||
mov [byte ptr di],0
|
||||
ret
|
||||
|
||||
@@theset dw offset @@mmx
|
||||
dw offset @@mmx2
|
||||
dw offset @@sse
|
||||
dw offset @@sse2
|
||||
dw offset @@sse3
|
||||
dw offset @@fpu
|
||||
dw offset @@now3d
|
||||
dw offset @@now3d2
|
||||
dw offset @@htt
|
||||
dw offset @@apic
|
||||
dw 0FFFFh
|
||||
|
||||
@@mmx db "MMX ",0
|
||||
@@mmx2 db "MMX2 ",0
|
||||
@@now3d db "3dNow! ",0
|
||||
@@now3d2 db "3dNow Extended! ",0
|
||||
@@htt db "HyperThreading",0
|
||||
@@sse db "SSE ",0
|
||||
@@sse2 db "SSE2 ",0
|
||||
@@sse3 db "SSE3 ",0
|
||||
@@apic db "APIC ",0
|
||||
@@fpu db "FPU ",0
|
||||
|
||||
endp setinfo
|
||||
|
||||
;retourne en DS:%0 les capacités du processeur
|
||||
PROC cpuinfo FAR
|
||||
ARG @pointer:word
|
||||
USES eax,ebx,ecx,edx,si,di,ds,es
|
||||
push ds
|
||||
pop es
|
||||
mov di,[@pointer]
|
||||
mov al,0
|
||||
mov cx,size cpu
|
||||
cld
|
||||
rep stosb
|
||||
mov di,[@pointer]
|
||||
call nocpuid ;Test si cpuid est dispo
|
||||
je @@nocpuidatall
|
||||
xor eax,eax
|
||||
cpuid ;Fonction 0 de CPUID
|
||||
mov [dword ptr (cpu di).vendor],ebx ;Vendeur sur 13 octets
|
||||
mov [dword ptr (cpu di+4).vendor],edx
|
||||
mov [dword ptr (cpu di+8).vendor],ecx
|
||||
mov [byte ptr (cpu di+12).vendor],0
|
||||
cmp eax,1
|
||||
jb @@nofonc1
|
||||
mov eax,1
|
||||
cpuid ;Fonction 1 de CPUID
|
||||
mov ebx,eax ;infos de model
|
||||
and ebx,1111b
|
||||
mov [(cpu di).stepping],bl
|
||||
shr eax,4
|
||||
mov ebx,eax
|
||||
and ebx,1111b
|
||||
mov [(cpu di).models],bl
|
||||
shr eax,4
|
||||
mov ebx,eax
|
||||
and ebx,1111b
|
||||
mov [(cpu di).family],bl
|
||||
shr eax,4
|
||||
mov ebx,eax
|
||||
and ebx,11b
|
||||
mov [(cpu di).types],bl
|
||||
shr eax,2
|
||||
mov ebx,eax
|
||||
and ebx,1111b
|
||||
mov [(cpu di).emodels],bl
|
||||
shr eax,4
|
||||
mov [(cpu di).efamily],al
|
||||
mov ebx,edx
|
||||
and ebx,1 ;infos de jeu d'instruction
|
||||
setnz [(cpu di).fpu]
|
||||
mov ebx,edx
|
||||
and ebx,100000000000000000000000b
|
||||
setnz [(cpu di).mmx]
|
||||
mov ebx,edx
|
||||
and ebx,10000000000000000000000000b
|
||||
setnz [(cpu di).sse]
|
||||
mov ebx,edx
|
||||
and ebx,100000000000000000000000000b
|
||||
setnz [(cpu di).sse2]
|
||||
mov ebx,ecx
|
||||
and ebx,1b
|
||||
setnz [(cpu di).sse3]
|
||||
mov ebx,edx
|
||||
and ebx,10000000000000000000000000000b
|
||||
setnz [(cpu di).htt]
|
||||
@@nofonc1:
|
||||
mov eax,80000000h ;Fonction 80000000 de CPUID
|
||||
cpuid
|
||||
cmp eax,80000001h
|
||||
jb @@nofonc8
|
||||
mov eax,80000001h ;Fonction 80000000 de CPUID
|
||||
cpuid
|
||||
mov ebx,edx
|
||||
and ebx,10000000000000000000000b
|
||||
setnz [(cpu di).mmx2]
|
||||
mov ebx,edx
|
||||
and ebx,1000000000000000000000000000000b
|
||||
setnz [(cpu di).now3d]
|
||||
mov ebx,edx
|
||||
and ebx,10000000000000000000000000000000b
|
||||
setnz [(cpu di).now3d2]
|
||||
mov ebx,edx
|
||||
and ebx,1000000000b
|
||||
setnz [(cpu di).apic]
|
||||
@@nofonc8:
|
||||
mov si,offset @@marks
|
||||
push cs
|
||||
pop ds
|
||||
@@search:
|
||||
mov di,[@pointer]
|
||||
mov cx,12
|
||||
cld
|
||||
rep cmpsb
|
||||
jne @@notthegood
|
||||
cmp cx,0
|
||||
jne @@notthegood
|
||||
mov cl,[si]
|
||||
inc si
|
||||
mov di,[@pointer]
|
||||
cld
|
||||
rep movsb
|
||||
mov al,0
|
||||
stosb
|
||||
mov di,[@pointer]
|
||||
cmp [es:(cpu di).family],15
|
||||
jne @@notextended
|
||||
mov al,[es:(cpu di).efamily]
|
||||
mov ah,[es:(cpu di).emodels]
|
||||
mov di,[si+2]
|
||||
jmp @@searchmodel
|
||||
@@notextended:
|
||||
mov al,[es:(cpu di).family]
|
||||
mov ah,[es:(cpu di).models]
|
||||
mov di,[si]
|
||||
@@searchmodel:
|
||||
cmp [di],ax
|
||||
jne @@notgoodfamily
|
||||
mov si,di
|
||||
inc si
|
||||
inc si
|
||||
lea di,[es:cpu.names]
|
||||
add di,[@pointer]
|
||||
@@copystr:
|
||||
mov al,[si]
|
||||
mov [es:di],al
|
||||
inc si
|
||||
inc di
|
||||
cmp al,0
|
||||
jne @@copystr
|
||||
jmp @@endofsearch
|
||||
@@notgoodfamily:
|
||||
inc di
|
||||
@@nextelement:
|
||||
inc di
|
||||
cmp [byte ptr di-1],0
|
||||
jne @@nextelement
|
||||
jmp @@searchmodel
|
||||
@@notthegood:
|
||||
inc si
|
||||
cmp [word ptr si],0FFFFh
|
||||
jne @@notthegood
|
||||
inc si
|
||||
inc si
|
||||
cmp [word ptr si],0FFFFh
|
||||
je @@endofsearch
|
||||
jmp @@search
|
||||
@@endofsearch:
|
||||
ret
|
||||
@@nocpuidatall:
|
||||
ret
|
||||
|
||||
;tableau avec vendeur taille + chainereelle + pointeur famille + pointeur famille etendue
|
||||
|
||||
@@marks db "GenuineIntel",5,"Intel"
|
||||
dw @@intelfamily,@@intelfamilye
|
||||
dw 0FFFFh
|
||||
|
||||
db "AuthenticAMD",3,"Amd"
|
||||
dw @@amdfamily,@@amdfamilye
|
||||
dw 0FFFFh
|
||||
|
||||
db "CyrixInstead",5,"Cyrix"
|
||||
dw @@cyrixfamily,@@cyrixfamilye
|
||||
dw 0FFFFh
|
||||
dw 0FFFFh
|
||||
|
||||
|
||||
;tableau avec famille modele et chaine 0
|
||||
|
||||
@@intelfamily:
|
||||
db 4,0,"486 DX-25/33",0
|
||||
db 4,1,"486 DX-50",0
|
||||
db 4,2,"486 SX",0
|
||||
db 4,3,"486 DX/2",0
|
||||
db 4,4,"486 SL",0
|
||||
db 4,5,"486 SX/2",0
|
||||
db 4,7,"486 DX/2-WB",0
|
||||
db 4,8,"486 DX/4",0
|
||||
db 4,9,"486 DX/4-WB",0
|
||||
db 5,0,"Pentium 60/66 A-step",0
|
||||
db 5,1,"Pentium 60/66",0
|
||||
db 5,2,"Pentium 75 - 200",0
|
||||
db 5,3,"OverDrive PODP5V83",0
|
||||
db 5,4,"Pentium MMX",0
|
||||
db 5,7,"Mobile Pentium 75-200",0
|
||||
db 5,8,"Mobile Pentium MMX",0
|
||||
db 6,0,"Pentium Pro A-step",0
|
||||
db 6,1,"Pentium Pro",0
|
||||
db 6,3,"Pentium II (Klamath)",0
|
||||
db 6,5,"Pentium II (Deschutes)",0
|
||||
db 6,6,"Mobile Pentium II",0
|
||||
db 6,7,"Pentium III (Katmai)",0
|
||||
db 6,8,"Pentium III (Coppermine)",0
|
||||
db 6,9,"Mobile Pentium III",0
|
||||
db 6,10,"Pentium III (0.18 µm)",0
|
||||
db 6,11,"Pentium III (0.13 µm)",0
|
||||
db 7,0,"Itanium (IA-64)",0
|
||||
db 0FFh,0FFh,"Inconnu",0
|
||||
|
||||
@@intelfamilye:
|
||||
db 0,0,"Pentium IV (0.18 µm)",0
|
||||
db 0,1,"Pentium IV (0.18 µm)",0
|
||||
db 0,2,"Pentium IV (0.13 µm)",0
|
||||
db 0,3,"Pentium IV (0.09 µm)",0
|
||||
db 1,0,"Itanium 2 (IA-64)",0
|
||||
db 0FFh,0FFh,"Inconnu",0
|
||||
|
||||
@@amdfamily:
|
||||
db 4,3,"486 DX/2",0
|
||||
db 4,7,"486 DX/2-WB",0
|
||||
db 4,8,"486 DX/4",0
|
||||
db 4,9,"486 DX/4-WB",0
|
||||
db 4,14,"Am5x86-WT",0
|
||||
db 4,15,"Am5x86-WB",0
|
||||
db 5,0,"K5/SSA5",0
|
||||
db 5,1,"K5 (PR120/133)",0
|
||||
db 5,2,"K5 (PR166)",0
|
||||
db 5,3,"K5 (PR200)",0
|
||||
db 5,6,"K6 (0.30 µm)",0
|
||||
db 5,7,"K6 (0.25 µm)",0
|
||||
db 5,8,"K6-2",0
|
||||
db 5,9,"K6-3",0
|
||||
db 5,13,"K6-2+/K6-III+ (0.18 µm)",0
|
||||
db 6,0,"Athlon (25 µm)",0
|
||||
db 6,1,"Athlon (25 µm)",0
|
||||
db 6,2,"Athlon (18 µm)",0
|
||||
db 6,3,"Duron",0
|
||||
db 6,4,"Athlon (Thunderbird)",0
|
||||
db 6,6,"Athlon (Palamino)",0
|
||||
db 6,7,"Duron (Morgan)",0
|
||||
db 6,8,"Athlon (Thoroughbred)",0
|
||||
db 6,10,"Athlon (Barton)",0
|
||||
db 0FFh,0FFh,"Inconnu",0
|
||||
|
||||
@@amdfamilye:
|
||||
db 0,4,"Athlon 64",0
|
||||
db 0,5,"Athlon 64 FX/Opteron",0
|
||||
db 0FFh,0FFh,"Inconnu",0
|
||||
|
||||
@@cyrixfamily:
|
||||
db 4,4,"MediaGX",0
|
||||
db 5,2,"6x86/6x86L",0
|
||||
db 5,4,"MediaGX MMX Enhanced",0
|
||||
db 6,0,"MII (6x86MX)",0
|
||||
db 6,5,"VIA Cyrix M2 core",0
|
||||
db 6,6,"WinChip C5A",0
|
||||
db 6,7,"WinChip C5B/WinChip C5C",0
|
||||
db 6,8,"WinChip C5N",0
|
||||
db 6,9,"WinChip C5XL/WinChip C5P",0
|
||||
db 0FFh,0FFh,"Inconnu",0
|
||||
|
||||
@@cyrixfamilye:
|
||||
db 0FFh,0FFh,"Inconnu",0
|
||||
|
||||
endp cpuinfo
|
||||
|
||||
;Test si CPUID est supporté oui=not Equal
|
||||
nocpuid:
|
||||
pushfd
|
||||
pop eax
|
||||
xor eax,00200000h
|
||||
push eax
|
||||
popfd
|
||||
pushfd
|
||||
pop eax
|
||||
cmp eax,ebx
|
||||
ret
|
||||
|
||||
|
|
@ -0,0 +1,907 @@
|
|||
model tiny,stdcall
|
||||
p486
|
||||
locals
|
||||
jumps
|
||||
codeseg
|
||||
option procalign:byte
|
||||
|
||||
include "..\include\mem.h"
|
||||
|
||||
org 0h
|
||||
|
||||
header exe <"CE",1,0,0,offset exports,offset imports,,>
|
||||
|
||||
exports:
|
||||
db "print",0
|
||||
dw print
|
||||
db "showdate",0
|
||||
dw showdate
|
||||
db "showtime",0
|
||||
dw showtime
|
||||
db "showname",0
|
||||
dw showname
|
||||
db "showattr",0
|
||||
dw showattr
|
||||
db "showsize",0
|
||||
dw showsize
|
||||
db "showspace",0
|
||||
dw showspace
|
||||
db "showint",0
|
||||
dw showint
|
||||
db "showsigned",0
|
||||
dw showsigned
|
||||
db "showhex",0
|
||||
dw showhex
|
||||
db "showbin",0
|
||||
dw showbin
|
||||
db "showbcd",0
|
||||
dw showbcd
|
||||
db "showstring",0
|
||||
dw showstring
|
||||
db "showstring0",0
|
||||
dw showstring0
|
||||
db "showintr",0
|
||||
dw showintr
|
||||
db "showintl",0
|
||||
dw showintl
|
||||
dw 0
|
||||
|
||||
imports:
|
||||
db "VIDEO::addline",0
|
||||
addline dd 0
|
||||
db "VIDEO::setcolor",0
|
||||
setcolor dd 0
|
||||
db "VIDEO::getxy",0
|
||||
getxy dd 0
|
||||
db "VIDEO::setxy",0
|
||||
setxy dd 0
|
||||
db "VIDEO::setvideomode",0
|
||||
setvideomode dd 0
|
||||
db "VIDEO::setfont",0
|
||||
setfont dd 0
|
||||
db "VIDEO::clearscreen",0
|
||||
clearscreen dd 0
|
||||
db "VIDEO::enablescroll",0
|
||||
enablescroll dd 0
|
||||
db "VIDEO::disablescroll",0
|
||||
disablescroll dd 0
|
||||
db "VIDEO::showchar",0
|
||||
showchar dd 0
|
||||
dw 0
|
||||
|
||||
;================PRINT==============
|
||||
;Affiche la chaine %0 en utilisant les parametres de formatage %x....%x
|
||||
;-> %0 %x
|
||||
;<-
|
||||
;===================================
|
||||
PROC print FAR
|
||||
ARG @@pointer:word
|
||||
push ax bx cx si di
|
||||
xor di,di
|
||||
mov si,[@@pointer]
|
||||
@@strinaize0:
|
||||
mov cl,[si]
|
||||
cmp cl,0
|
||||
je @@no0
|
||||
cmp cl,'%'
|
||||
je @@special
|
||||
cmp cl,'\'
|
||||
je @@special2
|
||||
@@showit:
|
||||
xor ch,ch
|
||||
call [cs:showchar],cx,0FFFFh
|
||||
inc si
|
||||
jmp @@strinaize0
|
||||
@@special:
|
||||
cmp [byte ptr si+1],'%'
|
||||
jne @@notshowit
|
||||
inc si
|
||||
jmp @@showit
|
||||
@@notshowit:
|
||||
mov cl,[byte ptr si+1]
|
||||
cmp cl,'c'
|
||||
je @@showchar
|
||||
cmp cl,'u'
|
||||
je @@showint
|
||||
cmp cl,'v'
|
||||
je @@showfixint
|
||||
cmp cl,'w'
|
||||
je @@showintr
|
||||
cmp cl,'i'
|
||||
je @@showsigned
|
||||
cmp cl,'h'
|
||||
je @@showhex
|
||||
cmp cl,'b'
|
||||
je @@showbin
|
||||
cmp cl,'s'
|
||||
je @@showstring
|
||||
cmp cl,'0'
|
||||
je @@showstring0
|
||||
cmp cl,'y'
|
||||
je @@showbcd
|
||||
cmp cl,'z'
|
||||
je @@showsize
|
||||
cmp cl,'a'
|
||||
je @@showattr
|
||||
cmp cl,'n'
|
||||
je @@showname
|
||||
cmp cl,'t'
|
||||
je @@showtime
|
||||
cmp cl,'d'
|
||||
je @@showdate
|
||||
clc
|
||||
jmp @@no0
|
||||
|
||||
@@showchar:
|
||||
cmp [byte ptr si+2],'M'
|
||||
je @@showmultchar
|
||||
call [cs:showchar],[word ptr @@pointer+di+2],0FFFFh
|
||||
add si,2
|
||||
add di,2
|
||||
jmp @@strinaize0
|
||||
@@showmultchar:
|
||||
mov cx,[offset @@pointer+di+2+2]
|
||||
cmp cx,0
|
||||
je @@nextfunc
|
||||
@@showcharx:
|
||||
call [cs:showchar],[word ptr @@pointer+di+2],0FFFFh
|
||||
dec cx
|
||||
jnz @@showcharx
|
||||
@@nextfunc:
|
||||
add si,3
|
||||
add di,4
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showint:
|
||||
call showint,[dword ptr @@pointer+di+2]
|
||||
add si,2
|
||||
add di,4
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showfixint:
|
||||
call showintl,[word ptr @@pointer+di+6],[dword ptr @@pointer+di+2]
|
||||
add di,6
|
||||
add si,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showintr:
|
||||
call showintr,[word ptr @@pointer+di+6],[dword ptr @@pointer+di+2]
|
||||
add di,6
|
||||
add si,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showsigned:
|
||||
call @@Chosesize
|
||||
call showsigned
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showhex:
|
||||
call @@Chosesize
|
||||
call showhex
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showbin:
|
||||
call @@Chosesize
|
||||
call showbin
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showstring:
|
||||
cmp [byte ptr si+2],'P'
|
||||
je @@showstring@@pointer
|
||||
call showstring,[word ptr @@pointer+di+2]
|
||||
add si,2
|
||||
add di,2
|
||||
jmp @@strinaize0
|
||||
@@showstring@@pointer:
|
||||
push ds
|
||||
mov ds,[offset @@pointer+di+2+2]
|
||||
call showstring,[word ptr @@pointer+di+2]
|
||||
add si,3
|
||||
add di,4
|
||||
pop ds
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showstring0:
|
||||
cmp [byte ptr si+2],'P'
|
||||
je @@showstring0@@pointer
|
||||
call showstring0,[word ptr offset @@pointer+di+2]
|
||||
add si,2
|
||||
add di,2
|
||||
jmp @@strinaize0
|
||||
@@showstring0@@pointer:
|
||||
push ds
|
||||
mov ds,[offset @@pointer+di+2+2]
|
||||
call showstring0,[word ptr offset @@pointer+di+2]
|
||||
add si,3
|
||||
add di,4
|
||||
pop ds
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showbcd:
|
||||
call @@Chosesize
|
||||
call showbcd
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showsize:
|
||||
call showsize,[dword ptr offset @@pointer+di+2]
|
||||
add si,2
|
||||
add di,4
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showattr:
|
||||
call showattr,[word ptr offset @@pointer+di+2]
|
||||
add si,2
|
||||
add di,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showname:
|
||||
call showname,[word ptr offset @@pointer+di+2]
|
||||
add si,2
|
||||
add di,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showtime:
|
||||
call showtime,[word ptr offset @@pointer+di+2]
|
||||
add si,2
|
||||
add di,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showdate:
|
||||
call showdate,[word ptr offset @@pointer+di+2]
|
||||
add si,2
|
||||
add di,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@Chosesize:
|
||||
pop cx
|
||||
push [dword ptr offset @@pointer+di+2]
|
||||
add di,4
|
||||
cmp [byte ptr si+2],'B'
|
||||
je @@byte
|
||||
cmp [byte ptr si+2],'W'
|
||||
je @@word
|
||||
cmp [byte ptr si+2],'D'
|
||||
je @@dword
|
||||
dec si
|
||||
|
||||
@@word:
|
||||
push 16
|
||||
add si,3
|
||||
push cx
|
||||
retn
|
||||
|
||||
@@byte:
|
||||
push 8
|
||||
add si,3
|
||||
push cx
|
||||
retn
|
||||
|
||||
@@dword:
|
||||
push 32
|
||||
add si,3
|
||||
push cx
|
||||
retn
|
||||
|
||||
@@special2:
|
||||
cmp [byte ptr si+1],'\'
|
||||
jne @@notshowit2
|
||||
inc si
|
||||
jmp @@showit
|
||||
@@notshowit2:
|
||||
mov cl,[byte ptr si+1]
|
||||
cmp cl,'l'
|
||||
je @@showline
|
||||
cmp cl,'g'
|
||||
je @@goto
|
||||
cmp cl,'h'
|
||||
je @@gotox
|
||||
cmp cl,'c'
|
||||
je @@color
|
||||
cmp cl,'m'
|
||||
je @@setvideomode
|
||||
cmp cl,'e'
|
||||
je @@clearscreen
|
||||
cmp cl,'s'
|
||||
je @@savestate
|
||||
cmp cl,'r'
|
||||
je @@restorestate
|
||||
cmp cl,'i'
|
||||
je @@enablescroll
|
||||
cmp cl,'j'
|
||||
je @@disablescroll
|
||||
cmp cl,'f'
|
||||
je @@setfont
|
||||
clc
|
||||
jmp @@no0
|
||||
|
||||
@@color:
|
||||
mov al,[si+2]
|
||||
sub al,'0'
|
||||
shl al,4
|
||||
add al,[si+3]
|
||||
sub al,'0'
|
||||
xor ah,ah
|
||||
call [cs:setcolor],ax
|
||||
add si,4
|
||||
jmp @@strinaize0
|
||||
|
||||
@@gotox:
|
||||
mov bh,[si+2]
|
||||
sub bh,'0'
|
||||
mov bl,bh
|
||||
shl bl,3
|
||||
add bl,bh
|
||||
add bl,bh
|
||||
add bl,[si+3]
|
||||
sub bl,'0'
|
||||
xor bh,bh
|
||||
call [cs:getxy]
|
||||
xor ah,ah
|
||||
call [cs:setxy],bx,ax
|
||||
add si,4
|
||||
jmp @@strinaize0
|
||||
|
||||
@@setvideomode:
|
||||
mov ah,[si+2]
|
||||
sub ah,'0'
|
||||
mov al,ah
|
||||
shl al,3
|
||||
add al,ah
|
||||
add al,ah
|
||||
add al,[si+3]
|
||||
sub al,'0'
|
||||
xor ah,ah
|
||||
call [cs:setvideomode]
|
||||
add si,4
|
||||
jmp @@strinaize0
|
||||
|
||||
@@setfont:
|
||||
mov ah,[si+2]
|
||||
sub ah,'0'
|
||||
mov al,ah
|
||||
shl al,3
|
||||
add al,ah
|
||||
add al,ah
|
||||
add al,[si+3]
|
||||
sub al,'0'
|
||||
xor ah,ah
|
||||
call [cs:setfont],ax
|
||||
add si,4
|
||||
jmp @@strinaize0
|
||||
|
||||
@@showline:
|
||||
call [cs:addline]
|
||||
add si,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@clearscreen:
|
||||
call [cs:clearscreen]
|
||||
add si,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@savestate:
|
||||
mov ah,40
|
||||
int 47h
|
||||
add si,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@restorestate:
|
||||
mov ah,41
|
||||
int 47h
|
||||
add si,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@enablescroll:
|
||||
call [cs:enablescroll]
|
||||
add si,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@disablescroll:
|
||||
call [cs:disablescroll]
|
||||
add si,2
|
||||
jmp @@strinaize0
|
||||
|
||||
@@goto:
|
||||
mov ah,[si+2]
|
||||
sub ah,'0'
|
||||
mov al,ah
|
||||
shl al,3
|
||||
add al,ah
|
||||
add al,ah
|
||||
add al,[si+3]
|
||||
sub al,'0'
|
||||
xor ah,ah
|
||||
;
|
||||
mov bh,[si+5]
|
||||
sub bh,'0'
|
||||
mov bl,bh
|
||||
shl bl,3
|
||||
add bl,bh
|
||||
add bl,bh
|
||||
add bl,[si+6]
|
||||
sub bl,'0'
|
||||
xor bh,bh
|
||||
call [cs:setxy],ax,bx
|
||||
mov ah,25
|
||||
int 47h
|
||||
add si,7
|
||||
jmp @@strinaize0
|
||||
|
||||
@@no0:
|
||||
add di,bp
|
||||
mov ax,[ss:bp] ;BP
|
||||
mov bx,[ss:bp+2] ;IP
|
||||
mov cx,[ss:bp+4] ;CS
|
||||
mov [ss:di],ax
|
||||
mov [ss:di+2],bx
|
||||
mov [ss:di+4],cx
|
||||
mov bp,di
|
||||
pop di si cx bx ax
|
||||
mov sp,bp
|
||||
ret
|
||||
|
||||
ENDP print
|
||||
|
||||
|
||||
;================SHOWDATE==============
|
||||
;Affiche la date contenu en %0
|
||||
;-> %0
|
||||
;<-
|
||||
;======================================
|
||||
PROC showdate FAR
|
||||
ARG @dates:word
|
||||
USES edx
|
||||
xor edx,edx
|
||||
mov dx,[@dates]
|
||||
and dx,11111b
|
||||
call showintl,2,edx
|
||||
call [cs:showchar],'/',0FFFFh
|
||||
mov dx,[@dates]
|
||||
shr dx,5
|
||||
and dx,111b
|
||||
call showintl,2,edx
|
||||
call [cs:showchar],'/',0FFFFh
|
||||
mov dx,[@dates]
|
||||
shr dx,8
|
||||
and dx,11111111b
|
||||
add dx,1956
|
||||
call showintl,2,edx
|
||||
ret
|
||||
ENDP showdate
|
||||
|
||||
;================SHOWTIME==============
|
||||
;Affiche l'heure contenu en %0
|
||||
;-> %0
|
||||
;<-
|
||||
;======================================
|
||||
PROC showtime FAR
|
||||
ARG @times:word
|
||||
USES edx
|
||||
xor edx,edx
|
||||
mov dx,[@times]
|
||||
shr dx,11
|
||||
and dx,11111b
|
||||
call showintl,2,edx
|
||||
call [cs:showchar],':',0FFFFh
|
||||
mov dx,[@times]
|
||||
shr dx,5
|
||||
and dx,111111b
|
||||
call showintl,2,edx
|
||||
call [cs:showchar],':',0FFFFh
|
||||
mov dx,[@times]
|
||||
and dx,11111b
|
||||
shl dx,1
|
||||
call showintl,2,edx
|
||||
ret
|
||||
ENDP showtime
|
||||
|
||||
;================SHOWNAME==============
|
||||
;Affiche le nom pointé par ds:%0
|
||||
;-> ds:%0
|
||||
;<-
|
||||
;======================================
|
||||
PROC showname FAR
|
||||
ARG @thename:word
|
||||
USES cx,si
|
||||
mov si,[@thename]
|
||||
xor cx,cx
|
||||
@@showthename:
|
||||
call [cs:showchar],[word ptr ds:si],0FFFFh
|
||||
inc si
|
||||
inc cx
|
||||
cmp cx,8
|
||||
jne @@suiteaname
|
||||
call [cs:showchar],' ',0FFFFh
|
||||
@@suiteaname:
|
||||
cmp cx,8+3
|
||||
jb @@showthename
|
||||
ret
|
||||
ENDP showname
|
||||
|
||||
;================SHOWATTR==============
|
||||
;Affiche les attributs spécifié par %0
|
||||
;-> %0
|
||||
;<-
|
||||
;======================================
|
||||
PROC showattr FAR
|
||||
ARG @attr:word
|
||||
push 0FFFFh
|
||||
test [@attr],00000001b
|
||||
je @@noreadonly
|
||||
push 'L'
|
||||
jmp @@readonly
|
||||
@@noreadonly:
|
||||
push '-'
|
||||
@@readonly:
|
||||
call [cs:showchar]
|
||||
push 0FFFFh
|
||||
test [@attr],00000010b
|
||||
je @@nohidden
|
||||
push 'C'
|
||||
jmp @@hidden
|
||||
@@nohidden:
|
||||
push '-'
|
||||
@@hidden:
|
||||
call [cs:showchar]
|
||||
push 0FFFFh
|
||||
test [@attr],00000100b
|
||||
je @@nosystem
|
||||
push 'S'
|
||||
jmp @@system
|
||||
@@nosystem:
|
||||
push '-'
|
||||
@@system:
|
||||
call [cs:showchar]
|
||||
push 0FFFFh
|
||||
test [@attr],00100000b
|
||||
je @@noarchive
|
||||
push 'A'
|
||||
jmp @@archive
|
||||
@@noarchive:
|
||||
push '-'
|
||||
@@archive:
|
||||
call [cs:showchar]
|
||||
push 0FFFFh
|
||||
test [@attr],00010000b
|
||||
je @@nodirectory
|
||||
push 'R'
|
||||
jmp @@directory
|
||||
@@nodirectory:
|
||||
push '-'
|
||||
@@directory:
|
||||
call [cs:showchar]
|
||||
ret
|
||||
ENDP showattr
|
||||
|
||||
;================SHOWSIZE==============
|
||||
;Affiche le nom pointé par %0
|
||||
;-> %0
|
||||
;<-
|
||||
;======================================
|
||||
PROC showsize FAR
|
||||
ARG @thesize:dword
|
||||
USES edx,ds
|
||||
push cs
|
||||
pop ds
|
||||
mov edx,[@thesize]
|
||||
cmp edx,1073741824
|
||||
ja @@giga
|
||||
cmp edx,1048576*9
|
||||
ja @@mega
|
||||
cmp edx,1024*9
|
||||
ja @@kilo
|
||||
call showintr,4,edx
|
||||
call showstring0,offset unit
|
||||
jmp @@finsize
|
||||
@@kilo:
|
||||
shr edx,10
|
||||
call showintr,4,edx
|
||||
call showstring0,offset unitkilo
|
||||
jmp @@finsize
|
||||
@@mega:
|
||||
shr edx,20
|
||||
call showintr,4,edx
|
||||
call showstring0,offset unitmega
|
||||
jmp @@finsize
|
||||
@@giga:
|
||||
shr edx,30
|
||||
call showintr,4,edx
|
||||
call showstring0,offset unitgiga
|
||||
@@finsize:
|
||||
ret
|
||||
|
||||
unit db ' o ',0
|
||||
unitkilo db ' ko',0
|
||||
unitmega db ' mo',0
|
||||
unitgiga db ' go',0
|
||||
ENDP showsize
|
||||
|
||||
;==========SHOWSPACE===========
|
||||
;met un espace aprés le curseur
|
||||
;->
|
||||
;<-
|
||||
;==============================
|
||||
PROC showspace FAR
|
||||
call [cs:showchar],' ',0FFFFh
|
||||
clc
|
||||
ret
|
||||
ENDP showspace
|
||||
|
||||
|
||||
;==========SHOWINT===========
|
||||
;Affiche un entier %0 aprés le curseur
|
||||
;-> %0
|
||||
;<-
|
||||
;============================
|
||||
PROC showint FAR
|
||||
ARG @integer:dword
|
||||
USES eax,bx,cx,edx,esi
|
||||
xor cx,cx
|
||||
mov eax,[@integer]
|
||||
mov esi,10
|
||||
mov bx,offset showbuffer+27
|
||||
@@decint:
|
||||
xor edx,edx
|
||||
div esi
|
||||
add dl,'0'
|
||||
inc cx
|
||||
mov [cs:bx],dl
|
||||
dec bx
|
||||
cmp ax,0
|
||||
jne @@decint
|
||||
mov ax,cx
|
||||
@@showinteger:
|
||||
inc bx
|
||||
mov cl,[cs:bx]
|
||||
call [cs:showchar],cx,0FFFFh
|
||||
dec ax
|
||||
jnz @@showinteger
|
||||
ret
|
||||
|
||||
showbuffer db 50 dup (0FFh)
|
||||
ENDP showint
|
||||
|
||||
;==========SHOWINTL===========
|
||||
;Affiche un entier %0 aprés le curseur de taille %1 caractère centré a gauche
|
||||
;-> %0 un entier % taille en caractères
|
||||
;<-
|
||||
;===============================
|
||||
PROC showintl FAR
|
||||
ARG @sizeofint:word,@integer:dword
|
||||
USES eax,bx,cx,edx,esi,di
|
||||
mov di,[@sizeofint]
|
||||
xor cx,cx
|
||||
mov eax,[@integer]
|
||||
mov esi,10
|
||||
mov bx,offset showbuffer+27
|
||||
@@decint:
|
||||
xor edx,edx
|
||||
div esi
|
||||
add dl,'0'
|
||||
inc cx
|
||||
mov [cs:bx],dl
|
||||
dec bx
|
||||
cmp cx,di
|
||||
jae @@nomuch
|
||||
cmp ax,0
|
||||
jne @@decint
|
||||
mov ax,di
|
||||
xchg cx,di
|
||||
sub cx,di
|
||||
@@rego:
|
||||
mov [byte ptr cs:bx],'0'
|
||||
dec bx
|
||||
dec cx
|
||||
jnz @@rego
|
||||
jmp @@finishim
|
||||
@@nomuch:
|
||||
mov ax,di
|
||||
@@finishim:
|
||||
@@showinteger:
|
||||
inc bx
|
||||
mov cl,[cs:bx]
|
||||
call [cs:showchar],cx,0FFFFh
|
||||
dec ax
|
||||
jnz @@showinteger
|
||||
ret
|
||||
ENDP showintl
|
||||
|
||||
;==========SHOWINTR===========
|
||||
;Affiche un entier %0 aprés le curseur de taille %1 caractère centré a droite
|
||||
;-> %0 un entier % taille en caractères
|
||||
;<-
|
||||
;===============================
|
||||
PROC showintr FAR
|
||||
ARG @sizeofint:word,@integer:dword
|
||||
USES eax,bx,cx,edx,esi,di
|
||||
mov di,[@sizeofint]
|
||||
xor cx,cx
|
||||
mov eax,[@integer]
|
||||
mov esi,10
|
||||
mov bx,offset showbuffer+27
|
||||
@@decint:
|
||||
xor edx,edx
|
||||
div esi
|
||||
add dl,'0'
|
||||
inc cx
|
||||
mov [cs:bx],dl
|
||||
dec bx
|
||||
cmp cx,di
|
||||
jae @@nomuch
|
||||
cmp ax,0
|
||||
jne @@decint
|
||||
mov ax,di
|
||||
xchg cx,di
|
||||
sub cx,di
|
||||
@@rego:
|
||||
mov [byte ptr cs:bx],' '
|
||||
dec bx
|
||||
dec cx
|
||||
jnz @@rego
|
||||
jmp @@finishim
|
||||
@@nomuch:
|
||||
mov ax,di
|
||||
@@finishim:
|
||||
@@showinteger:
|
||||
inc bx
|
||||
mov cl,[cs:bx]
|
||||
call [cs:showchar],cx,0FFFFh
|
||||
dec ax
|
||||
jnz @@showinteger
|
||||
ret
|
||||
ENDP showintr
|
||||
|
||||
;==========SHOWSIGNED===========
|
||||
;Affiche un entier %0 de taille %1 aprés le curseur
|
||||
;-> %0 un entier, %1 la taille
|
||||
;<-
|
||||
;===============================
|
||||
PROC showsigned FAR
|
||||
ARG @sizeofint:word,@integer:dword=taille
|
||||
USES ebx,cx,edx
|
||||
mov ebx,[@integer]
|
||||
mov cx,[@sizeofint]
|
||||
xor edx,edx
|
||||
cmp cx,1
|
||||
ja @@signed16
|
||||
mov dl,bl
|
||||
cmp dl,7Fh
|
||||
jbe @@notsigned
|
||||
neg dl
|
||||
jmp @@showminus
|
||||
@@signed16:
|
||||
cmp cx,2
|
||||
ja @@signed32
|
||||
mov dx,bx
|
||||
cmp dx,7FFFh
|
||||
jbe @@notsigned
|
||||
neg dx
|
||||
jmp @@showminus
|
||||
@@signed32:
|
||||
mov edx,ebx
|
||||
cmp edx,7FFFFFFFh
|
||||
jbe @@notsigned
|
||||
neg edx
|
||||
@@showminus:
|
||||
call [cs:showchar],'-',0FFFFh
|
||||
@@notsigned:
|
||||
call showint,edx,0FFFFh
|
||||
ret
|
||||
ENDP showsigned
|
||||
|
||||
;==========SHOWHEX===========
|
||||
;Affiche un nombre hexadécimal %0 de taille %1 aprés le curseur
|
||||
;-> %0 un entier, %1 la taille
|
||||
;<-
|
||||
;============================
|
||||
PROC showhex FAR
|
||||
ARG @sizeofint:word,@integer:dword=taille
|
||||
USES ax,bx,cx,edx
|
||||
mov edx,[@integer]
|
||||
mov cx,[@sizeofint]
|
||||
mov ax,cx
|
||||
shr ax,2
|
||||
sub cx,32
|
||||
neg cx
|
||||
shl edx,cl
|
||||
@@Hexaize:
|
||||
rol edx,4
|
||||
mov bx,dx
|
||||
and bx,0fh
|
||||
mov cl,[cs:bx+offset Tab]
|
||||
call [cs:showchar],cx,0FFFFh
|
||||
dec al
|
||||
jnz @@Hexaize
|
||||
ret
|
||||
|
||||
Tab db '0123456789ABCDEF'
|
||||
ENDP showhex
|
||||
|
||||
;==========SHOWBIN===========
|
||||
;Affiche un nombre binaire %0 de taille %1 aprés le curseur
|
||||
;-> %0 un entier, %1 la taille
|
||||
;<-
|
||||
;============================
|
||||
PROC showbin FAR
|
||||
ARG @sizeofint:word,@integer:dword=taille
|
||||
USES ax,cx,edx
|
||||
mov edx,[@integer]
|
||||
mov cx,[@sizeofint]
|
||||
sub cx,32
|
||||
neg cx
|
||||
shl edx,cl
|
||||
mov ax,[@sizeofint]
|
||||
@@binaize:
|
||||
rol edx,1
|
||||
mov cl,'0'
|
||||
adc cl,0
|
||||
call [cs:showchar],cx,0FFFFh
|
||||
dec al
|
||||
jnz @@binaize
|
||||
ret
|
||||
ENDP showbin
|
||||
|
||||
;==========SHOWBCD===========
|
||||
;Affiche un nombre en BCD %0 de taille %1 aprés le curseur
|
||||
;-> %0 un entier, %1 la taille
|
||||
;<-
|
||||
;============================
|
||||
PROC showbcd FAR
|
||||
ARG @sizeofint:word,@integer:dword
|
||||
USES ax,cx,edx
|
||||
mov edx,[@integer]
|
||||
mov ax,[@sizeofint]
|
||||
mov cx,ax
|
||||
shr ax,2
|
||||
sub cx,32
|
||||
neg cx
|
||||
shl edx,cl
|
||||
@@BCDaize:
|
||||
rol edx,4
|
||||
mov cl,dl
|
||||
and cl,0fh
|
||||
add cl,'0'
|
||||
call [cs:showchar],cx,0FFFFh
|
||||
dec al
|
||||
jnz @@BCDaize
|
||||
ret
|
||||
ENDP showbcd
|
||||
|
||||
;==========SHOWSTRING===========
|
||||
;Affiche une chaine de caractère pointée par ds:%1 aprés le curseur
|
||||
;-> ds:%1 pointeur chaine type pascal
|
||||
;<-
|
||||
;===============================
|
||||
PROC showstring FAR
|
||||
ARG @pointer:word
|
||||
USES bx,si
|
||||
mov si,[@pointer]
|
||||
mov bl,[si]
|
||||
@@strinaize:
|
||||
inc si
|
||||
call [cs:showchar],[word ptr si],0FFFFh
|
||||
dec bl
|
||||
jnz @@strinaize
|
||||
ret
|
||||
ENDP showstring
|
||||
|
||||
;==========SHOWSTRING0===========
|
||||
;Affiche une chaine de caractère pointée par ds:%1 aprés le curseur
|
||||
;-> ds:%1 pointeur chaine type zéro terminal
|
||||
;<-
|
||||
;================================
|
||||
PROC showstring0 FAR
|
||||
ARG @pointer:word
|
||||
USES cx,si
|
||||
mov si,[@pointer]
|
||||
@@strinaize0:
|
||||
mov cl,[si]
|
||||
cmp cl,0
|
||||
je @@no0
|
||||
call [cs:showchar],cx,0FFFFh
|
||||
inc si
|
||||
jmp @@strinaize0
|
||||
@@no0:
|
||||
ret
|
||||
ENDP showstring0
|
||||
|
331
noyau/8259a.asm
331
noyau/8259a.asm
|
@ -1,64 +1,11 @@
|
|||
.model tiny
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
org 0100h
|
||||
start:
|
||||
jmp tsr
|
||||
db 'PIC8259A'
|
||||
Tsr:
|
||||
cli
|
||||
cmp ax,1234h
|
||||
jne nomore
|
||||
mov ax,4321h
|
||||
jmp itsok
|
||||
nomore:
|
||||
push bx
|
||||
mov bl,ah
|
||||
xor bh,bh
|
||||
shl bx,1
|
||||
mov bx,cs:[bx].tables
|
||||
mov cs:current,bx
|
||||
pop bx
|
||||
call cs:current
|
||||
itsok:
|
||||
jnc noerror
|
||||
push bp
|
||||
mov bp,sp
|
||||
or byte ptr [bp+6],1b
|
||||
pop bp
|
||||
mov ax,cs
|
||||
shl eax,16
|
||||
mov ax,cs:current
|
||||
jmp endofint
|
||||
noerror:
|
||||
push bp
|
||||
mov bp,sp
|
||||
and byte ptr [bp+6],0FEh
|
||||
pop bp
|
||||
endofint:
|
||||
sti
|
||||
iret
|
||||
current dw 0
|
||||
tables dw enableirq
|
||||
dw disableirq
|
||||
dw readmaskirq
|
||||
dw readirr
|
||||
dw readisr
|
||||
dw installhandler
|
||||
dw replacehandler
|
||||
dw getint
|
||||
dw setint
|
||||
dw seteoi
|
||||
|
||||
;Adresses de port du contr“leur IRQ
|
||||
MASTERPIC = 020h ;Adresse de base du PIC maŒtre
|
||||
SLAVEPIC = 0A0h ;Adresse de base du PIC esclave
|
||||
IRQMASK = 001h ;Offset sur port de masquage
|
||||
MASTERPIC = 020h ;Adresse de base du PIC maŒtre
|
||||
SLAVEPIC = 0A0h ;Adresse de base du PIC esclave
|
||||
IRQMASK = 001h ;Offset sur port de masquage
|
||||
|
||||
;Commandes IRQ OCW2
|
||||
DISABLEROTATION = 000h ;Desactiver la rotation de priorités en mode EOI automatique
|
||||
EOI = 020h ;End of Interrupt non sp‚cifi‚
|
||||
DISABLEROTATION = 000h ;Desactiver la rotation de priorités en mode EOI automatique
|
||||
EOI = 020h ;End of Interrupt non sp‚cifi‚
|
||||
COMMANDEOI = 060h ;Commande EOI particulière
|
||||
ENABLEROTATION = 080h ;Activer la rotation de priorités en mode EOI automatique
|
||||
ROTATIONNOSPEC = 0A0h ;Rotation des priorités en mode EOI automatique
|
||||
|
@ -66,176 +13,130 @@ tables dw enableirq
|
|||
ROTATIONSPEC = 0E0h ;Rotation des priorités en mode EOI spécifié
|
||||
|
||||
;Position des vecteurs d'interruptions
|
||||
MASTERFIRSTVECTOR = 008h ;Vecteurs logiciels des interruptions
|
||||
SLAVEFIRSTVECTOR = 070h ;‚lectroniques
|
||||
MASTERFIRSTVECTOR = 008h ;Vecteurs logiciels des interruptions
|
||||
SLAVEFIRSTVECTOR = 070h ;‚lectroniques
|
||||
|
||||
;OCW3 codes registres
|
||||
IRR = 002h ;Interrupt Request Register
|
||||
ISR = 003h ;In Service Register
|
||||
;OCW3 et modes
|
||||
;OCW3 et modes
|
||||
OCW3 = 008h ;OCW3
|
||||
POLLING = 004h ;Polling bit
|
||||
|
||||
|
||||
ISR = 0Bh ; Pas d'op‚ration, pas de Poll, lire ISR OCW3
|
||||
IRR = 0Ah ; Pas d'op‚ration, pas de Poll, lire IRR
|
||||
|
||||
IRR = 0Ah ; Pas d'op‚ration, pas de Poll, lire IRR
|
||||
|
||||
;Autorise une interruption ‚lectronique
|
||||
;Entr‚e : AL - Num‚ro de l'interruption (0-15) … autoriser 0-7 = MASTERPIC , 8-15 = SLAVEPIC
|
||||
EnableIRQ:
|
||||
push ax cx dx
|
||||
mov dx,MASTERPIC+IRQMASK
|
||||
cmp al,7
|
||||
jbe master
|
||||
mov dx,SLAVEPIC+IRQMASK
|
||||
master:
|
||||
mov cl,al
|
||||
and cl,7
|
||||
mov al,1
|
||||
shl al,cl
|
||||
not al
|
||||
mov ah,al
|
||||
in al,dx
|
||||
and al,ah
|
||||
out dx,al
|
||||
pop dx cx ax
|
||||
ret
|
||||
;Entr‚e : %1 - Num‚ro de l'interruption (0-15) … autoriser 0-7 = MASTERPIC , 8-15 = SLAVEPIC
|
||||
PROC enableirq FAR
|
||||
ARG @irq:word
|
||||
USES ax,cx,dx
|
||||
mov ax,[@irq]
|
||||
mov dx,MASTERPIC+IRQMASK
|
||||
cmp al,7
|
||||
jbe @@master
|
||||
mov dx,SLAVEPIC+IRQMASK
|
||||
@@master:
|
||||
mov cl,al
|
||||
and cl,7
|
||||
mov al,1
|
||||
shl al,cl
|
||||
not al
|
||||
mov ah,al
|
||||
in al,dx
|
||||
and al,ah
|
||||
out dx,al
|
||||
ret
|
||||
endp enableirq
|
||||
|
||||
;Desactive une interruption ‚lectronique
|
||||
;Entr‚e : AL - Num‚ro de l'interruption (0-15) … desactiver 0-7 = MASTERPIC , 8-15 = SLAVEPIC
|
||||
DisableIRQ:
|
||||
push ax cx dx
|
||||
mov dx,MASTERPIC+IRQMASK
|
||||
cmp al,7
|
||||
jbe master2
|
||||
mov dx,SLAVEPIC+IRQMASK
|
||||
master2:
|
||||
mov cl,al
|
||||
and cl,7
|
||||
mov al,1
|
||||
shl al,cl
|
||||
mov ah,al
|
||||
in al,dx
|
||||
or al,ah
|
||||
out dx,al
|
||||
pop dx cx ax
|
||||
ret
|
||||
;Entr‚e : %0 - Num‚ro de l'interruption (0-15) … desactiver 0-7 = MASTERPIC , 8-15 = SLAVEPIC
|
||||
PROC disableirq FAR
|
||||
ARG @irq:word
|
||||
USES ax,cx,dx
|
||||
mov ax,[@irq]
|
||||
mov dx,MASTERPIC+IRQMASK
|
||||
cmp al,7
|
||||
jbe @@master
|
||||
mov dx,SLAVEPIC+IRQMASK
|
||||
@@master:
|
||||
mov cl,al
|
||||
and cl,7
|
||||
mov al,1
|
||||
shl al,cl
|
||||
not al
|
||||
mov ah,al
|
||||
in al,dx
|
||||
or al,ah
|
||||
out dx,al
|
||||
ret
|
||||
endp disableirq
|
||||
|
||||
|
||||
;Signale "End Of Interrupt" de l'interruption %0
|
||||
PROC seteoi FAR
|
||||
ARG @irq:word
|
||||
USES ax,dx
|
||||
mov ax,[@irq]
|
||||
cmp al,7
|
||||
jbe @@master
|
||||
mov al,EOI
|
||||
out SLAVEPIC,al
|
||||
@@master:
|
||||
mov al,EOI
|
||||
out MASTERPIC,al
|
||||
ret
|
||||
endp seteoi
|
||||
|
||||
|
||||
;Lit les masques d'un contr“leur IRQ dans ax, 0 master ou slave 1 ds %1
|
||||
PROC readmaskirq FAR
|
||||
ARG @controleur:word
|
||||
USES bx,dx
|
||||
mov bx,[@controleur]
|
||||
mov dx,MASTERPIC+ IRQMASK
|
||||
cmp bl,0
|
||||
jne @@master
|
||||
mov dx,SLAVEPIC+ IRQMASK
|
||||
@@master:
|
||||
xor ah,ah
|
||||
in al,dx
|
||||
pop dx
|
||||
ret
|
||||
endp readmaskirq
|
||||
|
||||
;Lit le registre d'‚tat d'un contr“leur IRQ dans ax, 0 master ou slave 1 ds %1
|
||||
PROC readisr FAR
|
||||
ARG @controleur:word
|
||||
USES bx,dx
|
||||
mov bx,[@controleur]
|
||||
mov dx,MASTERPIC
|
||||
cmp bh,0
|
||||
jne @@master
|
||||
mov dx,SLAVEPIC
|
||||
@@master:
|
||||
mov al,ISR
|
||||
out dx,al
|
||||
xor ah,ah
|
||||
in al,dx
|
||||
ret
|
||||
endp readisr
|
||||
|
||||
;Signale "End Of Interrupt" de l'interruption al
|
||||
SetEOI:
|
||||
push ax dx
|
||||
cmp al,7
|
||||
jbe master3
|
||||
mov al,EOI
|
||||
out SLAVEPIC,al
|
||||
master3:
|
||||
mov al,EOI
|
||||
out MASTERPIC,al
|
||||
pop dx ax
|
||||
ret
|
||||
|
||||
;Lit les masques d'un contr“leur IRQ dans al, 0 master ou slave 1 ds bh
|
||||
ReadmaskIrq:
|
||||
push dx
|
||||
mov dx,MASTERPIC+ IRQMASK
|
||||
cmp bh,0
|
||||
jne Master5
|
||||
mov dx,SLAVEPIC+ IRQMASK
|
||||
master5:
|
||||
in al,dx
|
||||
pop dx
|
||||
ret
|
||||
|
||||
;Lit le registre d'‚tat d'un contr“leur IRQ dans al, 0 master ou slave 1 ds bh
|
||||
ReadISR:
|
||||
push dx
|
||||
mov dx,MASTERPIC
|
||||
cmp bh,0
|
||||
jne Master6
|
||||
mov dx,SLAVEPIC
|
||||
master6:
|
||||
mov al,isr
|
||||
out dx,al
|
||||
in al,dx
|
||||
pop dx
|
||||
ret
|
||||
|
||||
;Lit le registre d'‚tat d'un contr“leur IRQ dans al, 0 master ou slave 1 ds bh
|
||||
ReadIRR:
|
||||
push dx
|
||||
mov dx,MASTERPIC
|
||||
cmp bh,0
|
||||
jne Master7
|
||||
mov dx,SLAVEPIC
|
||||
master7:
|
||||
mov al,irr
|
||||
out dx,al
|
||||
in al,dx
|
||||
pop dx
|
||||
ret
|
||||
|
||||
;remplace le handler pointer par ds:si en bx:100h interruption ax
|
||||
replacehandler:
|
||||
push ax bx cx si di ds es
|
||||
mov es,bx
|
||||
mov di,0100h
|
||||
mov ah,4
|
||||
int 48h
|
||||
jc reph
|
||||
mov bx,ax
|
||||
call getint
|
||||
mov es:[102h],si
|
||||
mov es:[104h],ds
|
||||
call setint
|
||||
reph:
|
||||
pop es ds di si cx bx ax
|
||||
ret
|
||||
|
||||
;install le handler pointer par ds:si en bx:100h interruption ax
|
||||
installhandler:
|
||||
push bx cx di es
|
||||
mov es,bx
|
||||
mov di,100h
|
||||
mov ah,4
|
||||
int 48h
|
||||
jc inh
|
||||
mov bx,ax
|
||||
call setint
|
||||
inh:
|
||||
pop es di cx bx
|
||||
ret
|
||||
|
||||
;met es:di le handle de l'int al
|
||||
setint:
|
||||
push ax bx ds
|
||||
call disableirq
|
||||
cli
|
||||
xor ah,ah
|
||||
mov bx,ax
|
||||
shl bx,2
|
||||
xor ax,ax
|
||||
mov ds,ax
|
||||
mov ds:[bx],di
|
||||
mov ds:[bx+2],es
|
||||
pop ds bx ax
|
||||
sti
|
||||
call enableirq
|
||||
ret
|
||||
|
||||
;met ds:si le handle de l'int al
|
||||
getint:
|
||||
push ax bx es
|
||||
xor ah,ah
|
||||
mov bx,ax
|
||||
shl bx,2
|
||||
xor ax,ax
|
||||
mov es,ax
|
||||
mov si,es:[bx]
|
||||
mov ds,es:[bx+2]
|
||||
pop es bx ax
|
||||
ret
|
||||
|
||||
|
||||
end start
|
||||
|
||||
PROC readirr FAR
|
||||
ARG @controleur:word
|
||||
USES bx,dx
|
||||
mov bx,[@controleur]
|
||||
mov dx,MASTERPIC
|
||||
cmp bh,0
|
||||
jne @@master
|
||||
mov dx,SLAVEPIC
|
||||
@@master:
|
||||
mov al,IRR
|
||||
out dx,al
|
||||
xor ah,ah
|
||||
in al,dx
|
||||
ret
|
||||
endp readirr
|
|
@ -1,72 +1,36 @@
|
|||
lnk_boot = tlink /x
|
||||
asm= tasm /t/m5/zi
|
||||
lnk= tlink /x/t
|
||||
asm= lzasm
|
||||
lnk= elink
|
||||
|
||||
all: boot.bin clavier.sys 8259a.sys disque.sys heure.sys horloge.sys manette.sys port.sys souris.sys systeme.sys video.sys mcb.sys
|
||||
all: systeme.sys boot.bin
|
||||
|
||||
boot.bin: boot.asm
|
||||
$(asm) boot
|
||||
$(lnk_boot) boot
|
||||
exe2boot boot.exe boot.bin
|
||||
systeme.sys: video.obj systeme.obj
|
||||
$(lnk) systeme.obj systeme.sys
|
||||
|
||||
clavier.sys: clavier.asm
|
||||
$(asm) clavier
|
||||
$(lnk) clavier
|
||||
ren clavier.com clavier.sys
|
||||
systeme.obj: ../lib/detect.lib ../lib/video.lib video.sys
|
||||
$(asm) systeme.asm
|
||||
|
||||
8259a.sys: 8259a.asm
|
||||
$(asm) 8259a
|
||||
$(lnk) 8259a
|
||||
ren 8259a.com 8259a.sys
|
||||
|
||||
disque.sys: disque.asm
|
||||
$(asm) disque
|
||||
$(lnk) disque
|
||||
ren disque.com disque.sys
|
||||
video.sys:
|
||||
$(lnk) video.obj video.sys
|
||||
|
||||
heure.sys: heure.asm
|
||||
$(asm) heure
|
||||
$(lnk) heure
|
||||
ren heure.com heure.sys
|
||||
boot.bin: boot.obj
|
||||
$(lnk) boot.obj boot.bin /bs
|
||||
|
||||
horloge.sys: horloge.asm
|
||||
$(asm) horloge
|
||||
$(lnk) horloge
|
||||
ren horloge.com horloge.sys
|
||||
detect.obj:
|
||||
$(asm) detect.asm
|
||||
|
||||
manette.sys: manette.asm
|
||||
$(asm) manette
|
||||
$(lnk) manette
|
||||
ren manette.com manette.sys
|
||||
video.obj:
|
||||
$(asm) video.asm
|
||||
|
||||
port.sys: port.asm
|
||||
$(asm) port
|
||||
$(lnk) port
|
||||
ren port.com port.sys
|
||||
|
||||
souris.sys: souris.asm
|
||||
$(asm) souris
|
||||
$(lnk) souris
|
||||
ren souris.com souris.sys
|
||||
|
||||
systeme.sys: systeme.asm
|
||||
$(asm) systeme
|
||||
$(lnk) systeme
|
||||
ren systeme.com systeme.sys
|
||||
|
||||
video.sys: video.asm
|
||||
$(asm) video
|
||||
$(lnk) video
|
||||
ren video.com video.sys
|
||||
|
||||
mcb.sys: mcb.asm
|
||||
$(asm) mcb
|
||||
$(lnk) mcb
|
||||
ren mcb.com mcb.sys
|
||||
boot.obj:
|
||||
$(asm) boot.asm
|
||||
|
||||
clean:
|
||||
del *.obj
|
||||
del *.exe
|
||||
del *.bak
|
||||
del *.lib
|
||||
del *.com
|
||||
del *.bin
|
||||
del *.sys
|
||||
del *.err
|
||||
del *.err
|
377
noyau/boot.asm
377
noyau/boot.asm
|
@ -1,221 +1,216 @@
|
|||
boots segment
|
||||
.386
|
||||
org 7C00h
|
||||
;org 100h
|
||||
assume cs:boots,ds:boots
|
||||
model tiny,stdcall
|
||||
p486
|
||||
locals
|
||||
jumps
|
||||
codeseg
|
||||
option procalign:byte
|
||||
|
||||
include "..\include\mem.h"
|
||||
include "..\include\fat.h"
|
||||
include "..\include\divers.h"
|
||||
|
||||
org 7C00h
|
||||
|
||||
start:
|
||||
jmp boot
|
||||
|
||||
bootdb db 'COS2000A' ;Fabricant + n°série Formatage
|
||||
sizec dw 512 ;octet/secteur
|
||||
db 1 ;secteur/cluster
|
||||
reserv dw 1 ;secteur reserv‚
|
||||
nbfat db 2 ;nb de copie de la FAT
|
||||
nbfit dw 224 ;taille rep racine
|
||||
allclu dw 2880 ;nb secteur du volume si < 32 még
|
||||
db 0F0h ;Descripteur de média
|
||||
fatsize dw 9 ;secteur/FAT
|
||||
nbtrack dw 18 ;secteur/piste
|
||||
head dw 2 ;nb de tˆteb de lecture/écriture
|
||||
hidden dd 0 ;nombre de secteur cach‚s
|
||||
dd 0 ;si nbsecteur = 0 nbsect ; the number of sectors
|
||||
bootdrv db 0 ;Lecteur de d‚marrage
|
||||
bootsig db 0 ;NA
|
||||
db 29h ;boot signature 29h
|
||||
bootsig2 dd 01020304h ;no de serie
|
||||
pope db 'COS2000 ' ;nom de volume
|
||||
db 'FAT12 ' ;FAT
|
||||
specialboot:
|
||||
bootsec bootinfo <"COS2000A",512,1,1,2,224,2880,0F0h,9,18,2,0,0,0,0,0,29h,01020304h,"COS2000 ","FAT12 ">
|
||||
|
||||
errorloading db " [Erreur]",0dh,0ah,0
|
||||
okloading db "Recherche noyau ",0Dh,0ah," -"
|
||||
sys db "SYSTEME SYS",0
|
||||
syst db " [ Ok ]",0dh,0ah,"Chargement ",0
|
||||
dot db ".",0
|
||||
|
||||
|
||||
errorloading db ' Erreur !!',0dh,0ah,0
|
||||
okloading db 'Recherche noyau',0Dh,0ah,' - system.sys',0
|
||||
syst db ' Ok',0dh,0ah,'Chargement',0
|
||||
dot db '.',0
|
||||
Sys db 'SYSTEME SYS'
|
||||
|
||||
errorboot:
|
||||
mov si,offset errorloading
|
||||
call showstr
|
||||
mov ah,0
|
||||
int 16h
|
||||
int 19h
|
||||
boot:
|
||||
mov Bootdrv,dl
|
||||
cli
|
||||
mov ax,09000h
|
||||
mov ss,ax
|
||||
mov sp,0FFFFh
|
||||
sti
|
||||
mov si,offset errorloading
|
||||
call showstr
|
||||
mov ah,0
|
||||
int 16h
|
||||
int 19h
|
||||
|
||||
boot:
|
||||
mov [bootsec.bootdrive],dl
|
||||
cli
|
||||
mov ax,09000h
|
||||
mov ss,ax
|
||||
mov sp,0FFFFh
|
||||
sti
|
||||
boot2:
|
||||
push cs
|
||||
push cs
|
||||
pop es
|
||||
pop ds
|
||||
xor ax,ax
|
||||
int 13h
|
||||
jc errorboot
|
||||
mov si,offset okloading
|
||||
call showstr
|
||||
mov cx,Reserv
|
||||
add cx,word ptr [offset Hidden]
|
||||
adc cx,word ptr [offset Hidden+2]
|
||||
push cx
|
||||
mov bx,fatsize
|
||||
mov di,offset bufferfat
|
||||
push cs
|
||||
push cs
|
||||
pop es
|
||||
pop ds
|
||||
xor ax,ax
|
||||
mov dl,[bootsec.bootdrive]
|
||||
int 13h
|
||||
jc errorboot
|
||||
mov si,offset okloading
|
||||
call showstr
|
||||
mov cx,[bootsec.reservedsectors]
|
||||
add cx,[bootsec.hiddensectorsh]
|
||||
adc cx,[bootsec.hiddensectorsl]
|
||||
push cx
|
||||
mov bx,[bootsec.sectorsperfat]
|
||||
mov di,offset bufferfat
|
||||
readfat:
|
||||
call readsector
|
||||
inc cx
|
||||
add di,sizec
|
||||
dec bx
|
||||
jnz readfat
|
||||
pop cx
|
||||
xor ax,ax
|
||||
mov al,NbFat
|
||||
mov bx,FatSize
|
||||
mul bx
|
||||
add cx,ax
|
||||
mov ax,32
|
||||
mul nbfit
|
||||
div sizec
|
||||
add ax,cx
|
||||
sub ax,2
|
||||
mov word ptr [offset bootsig],ax
|
||||
xor dx,dx
|
||||
CheckRoot:
|
||||
mov di,offset buffer
|
||||
call readsector
|
||||
jc errorboot
|
||||
xor bx,bx
|
||||
call readsector
|
||||
jc errorboot
|
||||
inc cx
|
||||
add di,[bootsec.sectorsize]
|
||||
dec bx
|
||||
jnz readfat
|
||||
pop cx
|
||||
xor ax,ax
|
||||
mov al,[bootsec.fatsperdrive]
|
||||
mov bx,[bootsec.sectorsperfat]
|
||||
mul bx
|
||||
add cx,ax
|
||||
mov ax,32
|
||||
mul [bootsec.directorysize]
|
||||
div [bootsec.sectorsize]
|
||||
add ax,cx
|
||||
sub ax,2
|
||||
mov [word ptr bootsec.reservedfornt],ax
|
||||
xor dx,dx
|
||||
checkroot:
|
||||
mov di,offset buffer
|
||||
call readsector
|
||||
jc errorboot
|
||||
xor bx,bx
|
||||
findnext:
|
||||
cmp byte ptr [di],0
|
||||
je errorboot
|
||||
cmp byte ptr [di],0E5h
|
||||
je no
|
||||
cmp byte ptr [di],041h
|
||||
je no
|
||||
mov si,offset dot
|
||||
call showstr
|
||||
push di cx
|
||||
mov si,offset sys
|
||||
mov cx,11
|
||||
rep cmpsb
|
||||
pop cx di
|
||||
je oksystem
|
||||
cmp [byte ptr di],0
|
||||
je errorboot
|
||||
cmp [byte ptr di],0E5h
|
||||
je no
|
||||
cmp [byte ptr di],041h
|
||||
je no
|
||||
mov si,offset dot
|
||||
call showstr
|
||||
push di cx
|
||||
mov si,offset sys
|
||||
mov cx,11
|
||||
rep cmpsb
|
||||
pop cx di
|
||||
je oksystem
|
||||
no:
|
||||
add di,32
|
||||
add bx,32
|
||||
inc dx
|
||||
cmp dx,nbfit
|
||||
ja errorboot
|
||||
cmp bx,sizec
|
||||
jb findnext
|
||||
inc cx
|
||||
jmp Checkroot
|
||||
add di,32
|
||||
add bx,32
|
||||
inc dx
|
||||
cmp dx,[bootsec.directorysize]
|
||||
ja errorboot
|
||||
cmp bx,[bootsec.sectorsize]
|
||||
jb findnext
|
||||
inc cx
|
||||
jmp checkroot
|
||||
oksystem:
|
||||
mov si,offset syst
|
||||
call showstr
|
||||
mov cx,[di+26]
|
||||
mov ax,0900h
|
||||
mov es,ax
|
||||
push es
|
||||
mov di,100h
|
||||
push di
|
||||
mov si,offset dot
|
||||
xor ax,ax
|
||||
mov si,offset syst
|
||||
call showstr
|
||||
mov cx,[di+26]
|
||||
mov ax,0900h
|
||||
mov es,ax
|
||||
push es
|
||||
mov di,0000h
|
||||
push 0010h
|
||||
mov si,offset dot
|
||||
xor ax,ax
|
||||
fatagain:
|
||||
cmp cx,0FF0h
|
||||
jae finishload
|
||||
push cx
|
||||
add cx,word ptr [offset bootsig]
|
||||
call readsector
|
||||
pop cx
|
||||
jc errorboot
|
||||
cmp cx,0FF0h
|
||||
jae finishload
|
||||
push cx
|
||||
add cx,[word ptr bootsec.reservedfornt]
|
||||
call readsector
|
||||
pop cx
|
||||
jc errorboot
|
||||
inc ax
|
||||
call showstr
|
||||
add di,sizec
|
||||
call getfat
|
||||
jnc fatagain
|
||||
call showstr
|
||||
add di,[bootsec.sectorsize]
|
||||
call getfat
|
||||
jnc fatagain
|
||||
finishload:
|
||||
db 0CBh
|
||||
retf
|
||||
|
||||
;=============READSECTOR (Fonction 01H)===============
|
||||
;Lit le secteur CX et le met en es:di
|
||||
;-> AH=1
|
||||
;<- Flag Carry si erreur
|
||||
;=====================================================
|
||||
ReadSector:
|
||||
readsector:
|
||||
push ax bx cx dx si
|
||||
mov ax,cx
|
||||
xor dx,dx
|
||||
div nbtrack
|
||||
inc dl
|
||||
mov bl,dl
|
||||
xor dx,dx
|
||||
div head
|
||||
mov dh, 0
|
||||
xchg dl,dh
|
||||
mov cx,ax
|
||||
xchg cl,ch
|
||||
shl cl,6
|
||||
or cl, bl
|
||||
xor dx,dx
|
||||
div [bootsec.sectorspertrack]
|
||||
inc dl
|
||||
mov bl,dl
|
||||
xor dx,dx
|
||||
div [bootsec.headsperdrive]
|
||||
xchg dl,dh
|
||||
mov cx,ax
|
||||
xchg cl,ch
|
||||
shl cl,6
|
||||
or cl, bl
|
||||
mov bx,di
|
||||
mov SI, 4
|
||||
mov AL, 1
|
||||
TryAgain:
|
||||
mov AH, 2
|
||||
mov si, 4
|
||||
mov al, 1
|
||||
tryagain:
|
||||
mov ah, 2
|
||||
mov dl,[bootsec.bootdrive]
|
||||
int 13h
|
||||
jnc Done
|
||||
dec SI
|
||||
jnz TryAgain
|
||||
Done:
|
||||
jnc done
|
||||
dec si
|
||||
jnz tryagain
|
||||
done:
|
||||
pop si dx cx bx ax
|
||||
ret
|
||||
|
||||
getfat:
|
||||
push ax bx dx di
|
||||
mov di,offset bufferfat
|
||||
mov ax,cx
|
||||
mov bx,ax
|
||||
and bx,0000000000000001b
|
||||
shr ax,1
|
||||
mov cx,3
|
||||
mul cx
|
||||
add di,ax
|
||||
cmp bx,0h
|
||||
jnz evenfat
|
||||
oddfat:
|
||||
mov dx,[di]
|
||||
and dx,0FFFh
|
||||
mov cx,dx
|
||||
jmp endfat
|
||||
evenfat:
|
||||
mov dx,[di+1]
|
||||
and dx,0FFF0h
|
||||
shr dx,4
|
||||
mov cx,dx
|
||||
endfat:
|
||||
pop di dx bx ax
|
||||
ret
|
||||
|
||||
showstr:
|
||||
push ax bx si
|
||||
again:
|
||||
lodsb
|
||||
or al,al
|
||||
jz fin
|
||||
mov ah,0Eh
|
||||
mov bx,07h
|
||||
int 10h
|
||||
jmp again
|
||||
fin:
|
||||
pop si bx ax
|
||||
ret
|
||||
|
||||
Buffer equ $
|
||||
BufferFat equ $+2048
|
||||
|
||||
boots ends
|
||||
end start
|
||||
getfat:
|
||||
push ax bx dx di
|
||||
mov di,offset bufferfat
|
||||
mov ax,cx
|
||||
mov bx,ax
|
||||
and bx,0000000000000001b
|
||||
shr ax,1
|
||||
mov cx,3
|
||||
mul cx
|
||||
add di,ax
|
||||
cmp bx,0h
|
||||
jnz evenfat
|
||||
oddfat:
|
||||
mov dx,[di]
|
||||
and dx,0FFFh
|
||||
mov cx,dx
|
||||
jmp endfat
|
||||
evenfat:
|
||||
mov dx,[di+1]
|
||||
and dx,0FFF0h
|
||||
shr dx,4
|
||||
mov cx,dx
|
||||
endfat:
|
||||
pop di dx bx ax
|
||||
ret
|
||||
|
||||
|
||||
showstr:
|
||||
push ax bx si
|
||||
again:
|
||||
lodsb
|
||||
or al,al
|
||||
jz fin
|
||||
mov ah,0Eh
|
||||
mov bx,07h
|
||||
int 10h
|
||||
jmp again
|
||||
fin:
|
||||
pop si bx ax
|
||||
ret
|
||||
|
||||
|
||||
db 055h,0AAh
|
||||
|
||||
endof:
|
||||
|
||||
buffer equ offset endof+2048
|
||||
bufferfat equ offset endof+4096
|
||||
|
||||
|
|
|
@ -3,7 +3,9 @@
|
|||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
|
||||
|
@ -15,7 +17,6 @@ tsr:
|
|||
db 2eh,0ffh,1eh
|
||||
dw offsets
|
||||
cli
|
||||
add dword ptr cs:popes,1
|
||||
cmp cs:isstate,1
|
||||
je endofforce
|
||||
mov cs:isstate,1
|
||||
|
@ -43,12 +44,22 @@ F10:
|
|||
mov si,offset com
|
||||
mov ah,5
|
||||
int 49h
|
||||
mov cs:isstate,0
|
||||
pop ax
|
||||
pop ax
|
||||
pop ax
|
||||
push gs
|
||||
push 0100h
|
||||
db 0CBh
|
||||
push gs
|
||||
push gs
|
||||
pop ds
|
||||
pop es
|
||||
pop fs
|
||||
push gs
|
||||
push size exe
|
||||
sti
|
||||
mov cs:[isstate],0
|
||||
retf
|
||||
|
||||
com db 'COMMANDE.EXE',0
|
||||
com db 'COMMANDE.CE',0
|
||||
|
||||
F11:
|
||||
push ax di es
|
||||
|
@ -70,17 +81,10 @@ notabove:
|
|||
|
||||
|
||||
f12:
|
||||
|
||||
showreg:
|
||||
pushf
|
||||
pushad
|
||||
mov bp,sp
|
||||
mov ax,ss:[bp+28h]
|
||||
mov cs:[csr],ax
|
||||
mov ax,ss:[bp+26h]
|
||||
mov cs:[ipr],ax
|
||||
mov ax,ss:[bp+2Ah]
|
||||
mov cs:[flr],ax
|
||||
pushf
|
||||
push ds
|
||||
mov cs:[eaxr],eax
|
||||
mov cs:[ebxr],ebx
|
||||
mov cs:[ecxr],ecx
|
||||
mov cs:[edxr],edx
|
||||
|
@ -88,169 +92,139 @@ mov cs:[esir],esi
|
|||
mov cs:[edir],edi
|
||||
mov cs:[espr],esp
|
||||
mov cs:[ebpr],ebp
|
||||
mov cs:[csr],cs
|
||||
mov cs:[dsr],ds
|
||||
mov cs:[esr],es
|
||||
mov cs:[fsr],fs
|
||||
mov cs:[gsr],gs
|
||||
mov cs:[ssr],ss
|
||||
push ds
|
||||
pop fs
|
||||
push cs
|
||||
pop ds
|
||||
mov ah,28h
|
||||
int 47h
|
||||
mov ax,0002
|
||||
int 47H
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov si,offset etat
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov si,offset sep
|
||||
call Showstr
|
||||
mov si,offset reg
|
||||
mov di,offset regdata
|
||||
mov bx,7
|
||||
showregs:
|
||||
cmp byte ptr cs:[si+4],":"
|
||||
cmp byte ptr cs:[si+6],":"
|
||||
jne endshowregs
|
||||
mov ah,13
|
||||
int 47h
|
||||
cmp byte ptr cs:[si+3],"g"
|
||||
je segsss
|
||||
cmp byte ptr cs:[si+2]," "
|
||||
call Showstr
|
||||
cmp byte ptr cs:[si+4]," "
|
||||
je segsss
|
||||
mov edx,cs:[di]
|
||||
mov cx,32
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
call Showhex
|
||||
add di,4
|
||||
jmp showmax
|
||||
segsss:
|
||||
xor edx,edx
|
||||
mov dx,cs:[di]
|
||||
mov cx,16
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
push si
|
||||
mov ah,13
|
||||
mov si,offset blank
|
||||
int 47h
|
||||
pop si
|
||||
call Showhex
|
||||
add di,2
|
||||
showmax:
|
||||
add si,7
|
||||
mov ebp,edx
|
||||
add si,9
|
||||
mov bp,dx
|
||||
push si
|
||||
mov si,offset beginds
|
||||
mov ah,13
|
||||
int 47h
|
||||
pop si
|
||||
call showstr
|
||||
mov si,bp
|
||||
mov cx,8
|
||||
mov al,0
|
||||
mov bx,bp
|
||||
letshow:
|
||||
mov dl,fs:[bx]
|
||||
inc bx
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
mov dl,ds:[si]
|
||||
inc si
|
||||
call showhex
|
||||
inc al
|
||||
cmp al,10
|
||||
jb letshow
|
||||
push si
|
||||
mov si,offset ende
|
||||
mov ah,13
|
||||
int 47h
|
||||
call showstr
|
||||
mov si,offset begines
|
||||
mov ah,13
|
||||
int 47h
|
||||
pop si
|
||||
mov bx,bp
|
||||
call showstr
|
||||
mov si,bp
|
||||
mov cx,8
|
||||
mov al,0
|
||||
letshow2:
|
||||
mov dl,es:[bx]
|
||||
inc bx
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
mov dl,es:[si]
|
||||
inc si
|
||||
call showhex
|
||||
inc al
|
||||
cmp al,10
|
||||
jb letshow2
|
||||
push si
|
||||
mov si,offset ende
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov si,offset beginint
|
||||
mov ah,13
|
||||
int 47h
|
||||
call showstr
|
||||
pop si
|
||||
mov edx,ebp
|
||||
mov ah,8
|
||||
int 47h
|
||||
push si
|
||||
mov si,offset endint
|
||||
mov ah,13
|
||||
int 47h
|
||||
pop si
|
||||
mov ah,6
|
||||
int 47h
|
||||
jmp showregs
|
||||
endshowregs:
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov si,offset pile
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov bp,sp
|
||||
mov di,0ffffh
|
||||
sub di,bp
|
||||
xor si,si
|
||||
showstack:
|
||||
mov dl,'+'
|
||||
mov ah,07h
|
||||
int 47h
|
||||
mov ah,0Ah
|
||||
mov cx,8
|
||||
mov dx,si
|
||||
int 47h
|
||||
mov dl,':'
|
||||
mov ah,07h
|
||||
int 47h
|
||||
mov dx,ss:[bp+si]
|
||||
mov ah,0Ah
|
||||
mov cx,16
|
||||
int 47h
|
||||
mov ah,06
|
||||
int 47h
|
||||
inc si
|
||||
inc si
|
||||
cmp si,di
|
||||
jb showstack
|
||||
|
||||
mov ah,0ah
|
||||
mov edx,cs:popes
|
||||
mov cx,32
|
||||
int 47h
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
mov si,offset sep
|
||||
call Showstr
|
||||
xor ax,ax
|
||||
int 16h
|
||||
mov ah,29h
|
||||
int 47h
|
||||
popad
|
||||
pop ds
|
||||
popf
|
||||
popad
|
||||
jmp endof
|
||||
begines db ' es[',0
|
||||
beginds db ' ds[',0
|
||||
ende db '] ',0
|
||||
|
||||
popes dd 0
|
||||
|
||||
;==============================Affiche le nombre nb hexa en EDX de taille CX et couleur BL==============
|
||||
ShowHex:
|
||||
push ax bx cx edx si di
|
||||
mov di,cx
|
||||
sub cx,32
|
||||
neg cx
|
||||
shl edx,cl
|
||||
shr di,2
|
||||
mov ah,09h
|
||||
and bx,1111b
|
||||
Hexaize:
|
||||
rol edx,4
|
||||
mov si,dx
|
||||
and si,1111b
|
||||
mov al,[si+offset tab]
|
||||
push cx
|
||||
mov cx,1
|
||||
cmp al,32
|
||||
jb control2
|
||||
mov ah,09h
|
||||
int 10h
|
||||
control2:
|
||||
mov ah,0Eh
|
||||
int 10h
|
||||
pop cx
|
||||
dec di
|
||||
jnz Hexaize
|
||||
pop di si edx cx bx ax
|
||||
ret
|
||||
Tab db '0123456789ABCDEF'
|
||||
|
||||
;==============================Affiche une chaine DS:SI de couleur BL==============
|
||||
showstr:
|
||||
push ax bx cx si
|
||||
mov cx,1
|
||||
again:
|
||||
lodsb
|
||||
or al,al
|
||||
jz fin
|
||||
and bx,0111b
|
||||
cmp al,32
|
||||
jb control
|
||||
mov ah,09h
|
||||
int 10h
|
||||
control:
|
||||
mov ah,0Eh
|
||||
int 10h
|
||||
jmp again
|
||||
fin:
|
||||
pop si cx bx ax
|
||||
ret
|
||||
|
||||
|
||||
;================================================
|
||||
;Routine de débogage
|
||||
;================================================
|
||||
regdata:
|
||||
eaxr dd 0
|
||||
ebxr dd 0
|
||||
|
@ -260,40 +234,28 @@ esir dd 0
|
|||
edir dd 0
|
||||
espr dd 0
|
||||
ebpr dd 0
|
||||
ipr dw 0
|
||||
csr dw 0
|
||||
dsr dw 0
|
||||
esr dw 0
|
||||
fsr dw 0
|
||||
gsr dw 0
|
||||
ssr dw 0
|
||||
flr dw 0
|
||||
|
||||
etat db ' Etat des registres processeurs',0
|
||||
reg db 0Dh,0Ah,"eax : ",0
|
||||
db 0Dh,0Ah,"ebx : ",0
|
||||
db 0Dh,0Ah,"ecx : ",0
|
||||
db 0Dh,0Ah,"edx : ",0
|
||||
db 0Dh,0Ah,"esi : ",0
|
||||
db 0Dh,0Ah,"edi : ",0
|
||||
db 0Dh,0Ah,"esp : ",0
|
||||
db 0Dh,0Ah,"ebp : ",0
|
||||
db 0Dh,0Ah,"cs : ",0
|
||||
db 0Dh,0Ah,"ds : ",0
|
||||
db 0Dh,0Ah,"es : ",0
|
||||
db 0Dh,0Ah,"fs : ",0
|
||||
db 0Dh,0Ah,"gs : ",0
|
||||
db 0Dh,0Ah,"ss : ",0
|
||||
|
||||
reg db "eax : ",0
|
||||
db "ebx : ",0
|
||||
db "ecx : ",0
|
||||
db "edx : ",0
|
||||
db "esi : ",0
|
||||
db "edi : ",0
|
||||
db "esp : ",0
|
||||
db "ebp : ",0
|
||||
db "ip : ",0
|
||||
db "cs : ",0
|
||||
db "ds : ",0
|
||||
db "es : ",0
|
||||
db "fs : ",0
|
||||
db "gs : ",0
|
||||
db "ss : ",0
|
||||
db "flag: ",0
|
||||
|
||||
pile db 'Stack :',0
|
||||
sep db 0Ah,0Dh,'********************',0Ah,0Dh,0
|
||||
|
||||
blank db ' ',0
|
||||
beginint db ' (',0
|
||||
endint db ') ',0
|
||||
begines db ' es[',0
|
||||
beginds db ' ds[',0
|
||||
ende db '] ',0
|
||||
end start
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
include ..\include\fat.h
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
jmp tsr ;Saute à la routine résidente
|
||||
names db 'DRIVE' ;Nom drivers
|
||||
id dw 1234h ;Identifiant drivers
|
||||
Tsr:
|
||||
cli ;Désactive interruptions logiciellement
|
||||
|
@ -36,15 +36,23 @@ noerrorint:
|
|||
itsok:
|
||||
push bp
|
||||
mov bp,sp ;On prend sp dans bp pour adresser la pile
|
||||
jnc noerror ;La fonction appelée a renvoyer une erreur : Flag CARRY ?
|
||||
pushf
|
||||
jnc noerror ;La fonction appelée a renvoyer une erreur : Flag CARRY ?
|
||||
or byte ptr [bp+6],1b;Si oui on le retranscrit sur le registre FLAG qui sera dépilé lors du IRET
|
||||
;xor eax,eax
|
||||
;mov ax,cs ;On récupère le segment et l'offset puis en renvoie l'adresse physique
|
||||
;shl eax,4 ;de l'erreur.
|
||||
;add ax,cs:current
|
||||
jmp endofint ;on termine l'int
|
||||
jmp endofscan ;on termine l'int
|
||||
noerror:
|
||||
and byte ptr [bp+6],0FEh;Si pas d'erreur on efface le Bit CARRY du FLAG qui sera dépilé lors du IRET
|
||||
endofscan:
|
||||
popf
|
||||
jne noequal
|
||||
or byte ptr [bp+6],1000000b
|
||||
jmp endofint
|
||||
noequal:
|
||||
and byte ptr [bp+6],0BFh
|
||||
endofint:
|
||||
pop bp
|
||||
sti ;On réactive les interruptions logiciellement
|
||||
|
@ -53,7 +61,7 @@ endofint:
|
|||
current dw 0 ;Mot temporaire qui contient l'adresse de la fonction appelée
|
||||
tables dw readsector
|
||||
dw writesector
|
||||
dw verifysector2
|
||||
dw verifysector
|
||||
dw initdrive
|
||||
dw loadfile
|
||||
dw compressrle
|
||||
|
@ -182,12 +190,21 @@ execfile:
|
|||
pop gs
|
||||
mov ah,6
|
||||
int 49h
|
||||
mov ah,12
|
||||
int 49h
|
||||
jc reallyerror
|
||||
push es
|
||||
push cs
|
||||
mov ax,offset arrive
|
||||
push ax
|
||||
push es
|
||||
push 0100h
|
||||
cmp word ptr gs:[0h],'EC'
|
||||
jne noce
|
||||
push size exe
|
||||
jmp wasce
|
||||
noce:
|
||||
push 0000h
|
||||
wasce:
|
||||
push es
|
||||
push es
|
||||
push es
|
||||
|
@ -235,7 +252,6 @@ projfile:
|
|||
jc errorload2
|
||||
mov eax,cs:tempfit.FileSize
|
||||
mov ecx,eax
|
||||
add ecx,100h
|
||||
push eax
|
||||
mov ah,2
|
||||
int 49h
|
||||
|
@ -244,7 +260,7 @@ projfile:
|
|||
push gs
|
||||
pop es
|
||||
mov cx,cs:tempfit.FileGroup
|
||||
mov di,100h
|
||||
mov di,0h
|
||||
call loadway
|
||||
jc errorload2
|
||||
clc
|
||||
|
@ -338,29 +354,38 @@ CmpNames:
|
|||
repe cmpsb
|
||||
jne nequal
|
||||
inc si
|
||||
jmp equal
|
||||
nequal:
|
||||
cmp byte ptr es:[di-1],' '
|
||||
jne notequal
|
||||
equal:
|
||||
cmp byte ptr [si-1],'.'
|
||||
jne trynoext
|
||||
mov al,' '
|
||||
rep scasb
|
||||
mov cx,3
|
||||
rep cmpsb
|
||||
jne notequal
|
||||
cmp byte ptr [si],0
|
||||
jne notequal
|
||||
cmp cx,0
|
||||
jl notequal
|
||||
jne nequal2
|
||||
inc si
|
||||
jmp equal2
|
||||
nequal2:
|
||||
cmp byte ptr es:[di-1],' '
|
||||
jne notequal
|
||||
equal2:
|
||||
cmp byte ptr [si-1],0
|
||||
jne notequal
|
||||
itok:
|
||||
clc
|
||||
pop di si cx ax
|
||||
ret
|
||||
notequal:
|
||||
stc
|
||||
pop di si cx ax
|
||||
ret
|
||||
trynoext:
|
||||
cmp byte ptr [si-1],0
|
||||
jne notequal
|
||||
jmp itok
|
||||
notequal:
|
||||
stc
|
||||
pop di si cx ax
|
||||
ret
|
||||
|
||||
;charge le fichier de de groupe CX et de taille eax
|
||||
LoadWay:
|
||||
|
@ -884,13 +909,6 @@ invert:
|
|||
pop cx si
|
||||
ret
|
||||
|
||||
VerifySector2:
|
||||
call verifysector
|
||||
jne nook
|
||||
or byte ptr [bp+6],10b
|
||||
nook:
|
||||
ret
|
||||
|
||||
;=============DecompressRle (Fonction 05H)==============
|
||||
;decompress ds:si en es:di taille bp d‚compress‚ cx compress‚
|
||||
;-> AH=5
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
start:
|
||||
jmp tsr ;Saute à la routine résidente
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
start:
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
start:
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
.486
|
||||
smart
|
||||
.code
|
||||
org 0100h
|
||||
org 0h
|
||||
start:
|
||||
jmp tsr
|
||||
drv db 'JOYSTICK',0
|
||||
|
|
1054
noyau/mcb.asm
1054
noyau/mcb.asm
File diff suppressed because it is too large
Load Diff
|
@ -2,7 +2,7 @@
|
|||
.486
|
||||
smart
|
||||
.code
|
||||
org 0100h
|
||||
org 0h
|
||||
start:
|
||||
jmp tsr
|
||||
drv db 'LPT ',0
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
.486
|
||||
smart
|
||||
.code
|
||||
org 0100h
|
||||
org 0h
|
||||
start:
|
||||
jmp tsr
|
||||
drv db 'MOUSE',0
|
||||
|
|
1421
noyau/systeme.asm
1421
noyau/systeme.asm
File diff suppressed because it is too large
Load Diff
2339
noyau/video.asm
2339
noyau/video.asm
File diff suppressed because it is too large
Load Diff
|
@ -7,52 +7,43 @@ all: detect.com editeur.com gestion.com logo.com pmode.com souris.com test.com v
|
|||
memoire.com: memoire.asm
|
||||
$(asm) memoire
|
||||
$(lnk) memoire
|
||||
ren memoire.com memoire.com
|
||||
|
||||
detect.com: detect.asm
|
||||
$(asm) detect
|
||||
$(lnk) detect
|
||||
ren detect.com detect.com
|
||||
|
||||
editeur.com: editeur.asm
|
||||
$(asm) editeur
|
||||
$(lnk) editeur
|
||||
ren editeur.com editeur.com
|
||||
|
||||
gestion.com: gestion.asm
|
||||
$(asm) gestion
|
||||
$(lnk) gestion
|
||||
ren gestion.com gestion.com
|
||||
|
||||
logo.com: logo.asm
|
||||
$(asm) logo
|
||||
$(lnk) logo
|
||||
ren logo.com logo.com
|
||||
|
||||
pmode.com: pmode.asm
|
||||
$(asm) pmode
|
||||
$(lnk) pmode
|
||||
ren pmode.com pmode.com
|
||||
|
||||
souris.com: souris.asm
|
||||
$(asm) souris
|
||||
$(lnk) souris
|
||||
ren souris.com souris.com
|
||||
|
||||
test.com: test.asm
|
||||
$(asm) test
|
||||
$(lnk) test
|
||||
ren test.com test.com
|
||||
|
||||
verifier.com: verifier.asm
|
||||
$(asm) verifier
|
||||
$(lnk) verifier
|
||||
ren verifier.com verifier.com
|
||||
|
||||
volume.com: volume.asm
|
||||
$(asm) volume
|
||||
$(lnk) volume
|
||||
ren volume.com volume.com
|
||||
|
||||
|
||||
clean:
|
||||
del *.obj
|
||||
|
|
|
@ -3,57 +3,32 @@
|
|||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
include ..\include\pci.h
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
header exe <,1,0,,,offset imports,,>
|
||||
|
||||
realstart:
|
||||
call getpciinfos
|
||||
mov pciversion,bx
|
||||
mov nbbus,cl
|
||||
mov pcitype,al
|
||||
mov [pciversion],bx
|
||||
mov [nbbus],cl
|
||||
mov [pcitype],al
|
||||
|
||||
mov si,offset msg
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
|
||||
mov si,offset pcivers
|
||||
mov ah,13
|
||||
int 47h
|
||||
xor edx,edx
|
||||
mov dx,bx
|
||||
xchg dl,dh
|
||||
mov cx,8
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
mov si,offset poin
|
||||
mov ah,13
|
||||
int 47h
|
||||
shr dx,8
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
mov si,offset pcivers2
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
|
||||
mov si,offset nbbuses
|
||||
mov ah,13
|
||||
int 47h
|
||||
xor edx,edx
|
||||
mov dl,nbbus
|
||||
mov dl,[nbbus]
|
||||
inc dl
|
||||
mov ah,08
|
||||
int 47h
|
||||
mov ah,06
|
||||
int 47h
|
||||
push edx
|
||||
mov dx,[pciversion]
|
||||
push edx
|
||||
mov dx,[pciversion]
|
||||
shr dx,8
|
||||
push edx
|
||||
push offset msg
|
||||
call [print]
|
||||
|
||||
mov si,offset typesof
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov di,offset types
|
||||
mov bx,7
|
||||
mov al,pcitype
|
||||
|
@ -61,89 +36,50 @@ vote:
|
|||
bt ax,bx
|
||||
jnc nowas
|
||||
shl bx,1
|
||||
mov si,[di+bx]
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov si,offset spac
|
||||
mov ah,13
|
||||
int 47h
|
||||
push word ptr [di+bx]
|
||||
call [print]
|
||||
shr bx,1
|
||||
nowas:
|
||||
dec bx
|
||||
jns vote
|
||||
mov ah,6
|
||||
int 47h
|
||||
push offset return
|
||||
call [print]
|
||||
|
||||
xor ax,ax
|
||||
xor cx,cx
|
||||
mov di,offset infos
|
||||
mov si,offset infos
|
||||
search:
|
||||
mov di,si
|
||||
call Getallfunctionsinfos
|
||||
jc stopthis
|
||||
|
||||
mov bp,cx
|
||||
push cx di
|
||||
mov si,offset msg1
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov cx,16
|
||||
xor edx,edx
|
||||
mov dx,[di+pci.device]
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
mov si,offset msg2
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov dx,[di+pci.vendor]
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
mov si,offset msg4
|
||||
mov ah,13
|
||||
int 47h
|
||||
xor dx,dx
|
||||
mov dl,al
|
||||
mov cx,8
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
mov ah,07
|
||||
mov dl,'.'
|
||||
int 47h
|
||||
mov dx,bp
|
||||
xor dh,dh
|
||||
mov cx,8
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
mov ah,07
|
||||
mov dl,'.'
|
||||
int 47h
|
||||
mov dx,bp
|
||||
shr dx,8
|
||||
mov cx,8
|
||||
mov ah,0Ah
|
||||
int 47h
|
||||
mov ah,05h
|
||||
int 47h
|
||||
mov si,offset msg3
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov cl,[di+pci.class]
|
||||
mov ch,[di+pci.subclass]
|
||||
mov di,offset temp
|
||||
call getpciclass
|
||||
mov si,di
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov si,offset poin
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov di,offset temp
|
||||
mov dh,[si+pci.subclass]
|
||||
mov dl,[si+pci.class]
|
||||
;sousclasse
|
||||
mov di,offset subclasse
|
||||
call getpcisubclass
|
||||
mov si,di
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,06
|
||||
int 47h
|
||||
pop di cx
|
||||
push di
|
||||
;classe
|
||||
mov di,offset classe
|
||||
call getpciclass
|
||||
push di
|
||||
;fonction
|
||||
mov dl,ch
|
||||
push edx
|
||||
;device
|
||||
mov dl,cl
|
||||
push edx
|
||||
;bus
|
||||
mov dl,al
|
||||
push edx
|
||||
;device
|
||||
mov dx,[si+pci.device]
|
||||
push edx
|
||||
;vendeur
|
||||
mov dx,[si+pci.vendor]
|
||||
push edx
|
||||
|
||||
push offset msg2
|
||||
call [print]
|
||||
|
||||
inc ch
|
||||
cmp ch,7
|
||||
|
@ -157,31 +93,24 @@ xor cl,cl
|
|||
inc al
|
||||
cmp al,16
|
||||
jbe search
|
||||
db 0CBh
|
||||
retf
|
||||
|
||||
msg3 db ' Classe :',0
|
||||
msg1 db 'Peripherique :',0
|
||||
msg2 db ' Constructeur :',0
|
||||
msg4 db ' iD :',0
|
||||
msg db 'COS2000 hardware detecteur V1.6',0
|
||||
pcivers db 'BIOS PCI version ',0
|
||||
pcivers2 db ' a ete detecte !',0
|
||||
nbbuses db 'Nombre de bus : ',0
|
||||
typesof db 'Caracterisques PCI: ',0
|
||||
poin db '.',0
|
||||
virg db ', ',0
|
||||
spac db ' ',0
|
||||
temp db 128 dup (0)
|
||||
msg db "COS2000 hardware detecteur V1.6\lBIOS PCI version %hB.%hB a ete detecte !\lNombre de bus : %u\lCaracterisques PCI: ",0
|
||||
msg2 db "Peripherique :%hW Constructeur :%hW Id :%hB.%hB.%hB Classe :%0.%0\l",0
|
||||
return db "\l",0
|
||||
classe db 128 dup (0)
|
||||
subclasse db 128 dup (0)
|
||||
|
||||
types dw config1
|
||||
dw config2
|
||||
dw poin
|
||||
dw poin
|
||||
dw null
|
||||
dw null
|
||||
dw config3
|
||||
dw config4
|
||||
dw poin
|
||||
dw poin
|
||||
|
||||
dw null
|
||||
dw null
|
||||
|
||||
null db 'indefini',0
|
||||
config1 db 'Config Mechanism 1',0
|
||||
config2 db 'Config Mechanism 2',0
|
||||
config3 db 'Special Cycle Mechanism 1',0
|
||||
|
@ -194,12 +123,12 @@ infos db 256 dup (0)
|
|||
|
||||
;fonction 0-7 bus 0-255 device 0-31
|
||||
|
||||
;renvoie en es:di de classe cl
|
||||
;renvoie en es:di de classe dl
|
||||
getpciclass:
|
||||
push ax cx si di ds es
|
||||
push ax cx dx si di ds es
|
||||
push es
|
||||
push di
|
||||
mov di,cx
|
||||
mov di,dx
|
||||
and di,0FFh
|
||||
shl di,1
|
||||
mov di,[offset classes+di]
|
||||
|
@ -217,27 +146,27 @@ pop ds
|
|||
pop di
|
||||
pop es
|
||||
rep movsb
|
||||
pop es ds di si cx ax
|
||||
pop es ds di si dx cx ax
|
||||
ret
|
||||
|
||||
;renvoie en es:di la sous-classe de ch et de classe cl
|
||||
;renvoie en es:di la sous-classe de dh et de classe dl
|
||||
getpcisubclass:
|
||||
push ax cx si di ds es
|
||||
push ax cx dx si di ds es
|
||||
push es
|
||||
push di
|
||||
mov di,cx
|
||||
mov di,dx
|
||||
and di,0FFh
|
||||
shl di,1
|
||||
mov di,[offset classesd+di]
|
||||
xchg ch,cl
|
||||
xor ch,ch
|
||||
cmp cx,80h
|
||||
xchg dh,dl
|
||||
xor dh,dh
|
||||
cmp dx,80h
|
||||
jne suiteac
|
||||
mov di,offset divers
|
||||
jmp found
|
||||
suiteac:
|
||||
shl cx,1
|
||||
add di,cx
|
||||
shl dx,1
|
||||
add di,dx
|
||||
mov di,[di]
|
||||
found:
|
||||
mov cx,0FFh
|
||||
|
@ -254,7 +183,7 @@ pop ds
|
|||
pop di
|
||||
pop es
|
||||
rep movsb
|
||||
pop es ds di si cx ax
|
||||
pop es ds di si dx cx ax
|
||||
ret
|
||||
divers db 'divers',0
|
||||
|
||||
|
@ -272,19 +201,30 @@ dw offset class9
|
|||
dw offset class10
|
||||
dw offset class11
|
||||
dw offset class12
|
||||
class0 db 'Ancien',0
|
||||
class1 db 'Stockage',0
|
||||
class2 db 'Reseau',0
|
||||
class3 db 'Affichage',0
|
||||
class4 db 'Multimedia',0
|
||||
class5 db 'Memoire',0
|
||||
class6 db 'Pont',0
|
||||
class7 db 'Communication',0
|
||||
class8 db 'Systeme',0
|
||||
class9 db 'Acquisition',0
|
||||
class10 db 'Dock',0
|
||||
class11 db 'Processeur',0
|
||||
class12 db 'Bus serie',0
|
||||
dw offset class13
|
||||
dw offset class14
|
||||
dw offset class15
|
||||
dw offset class16
|
||||
dw offset class17
|
||||
class0 db 'ancien',0
|
||||
class1 db 'stockage',0
|
||||
class2 db 'reseau',0
|
||||
class3 db 'affichage',0
|
||||
class4 db 'multimedia',0
|
||||
class5 db 'memoire',0
|
||||
class6 db 'pont',0
|
||||
class7 db 'communication',0
|
||||
class8 db 'systeme',0
|
||||
class9 db 'acquisition',0
|
||||
class10 db 'dock',0
|
||||
class11 db 'processeur',0
|
||||
class12 db 'bus serie',0
|
||||
class13 db 'sans fil',0
|
||||
class14 db 'intelligent',0
|
||||
class15 db 'satellite',0
|
||||
class16 db 'cryptage',0
|
||||
class17 db 'traitement signal',0
|
||||
|
||||
|
||||
;Classes et sous classes
|
||||
classesd:
|
||||
|
@ -301,6 +241,11 @@ dw offset class9d
|
|||
dw offset class10d
|
||||
dw offset class11d
|
||||
dw offset class12d
|
||||
dw offset class13d
|
||||
dw offset class14d
|
||||
dw offset class15d
|
||||
dw offset class16d
|
||||
dw offset class17d
|
||||
|
||||
class0d:
|
||||
dw offset subclass00
|
||||
|
@ -313,30 +258,40 @@ dw offset subclass10
|
|||
dw offset subclass11
|
||||
dw offset subclass12
|
||||
dw offset subclass13
|
||||
dw offset subclass14
|
||||
subclass10 db 'scsi',0
|
||||
subclass11 db 'ide',0
|
||||
subclass12 db 'disquette',0
|
||||
subclass13 db 'ipi',0
|
||||
subclass14 db 'raid',0
|
||||
|
||||
class2d:
|
||||
dw offset subclass20
|
||||
dw offset subclass21
|
||||
dw offset subclass22
|
||||
dw offset subclass23
|
||||
dw offset subclass24
|
||||
subclass20 db 'ethernet',0
|
||||
subclass21 db 'token ring',0
|
||||
subclass22 db 'fddi',0
|
||||
subclass23 db 'atm',0
|
||||
subclass24 db 'isdn',0
|
||||
|
||||
class3d:
|
||||
dw offset subclass30
|
||||
dw offset subclass31
|
||||
dw offset subclass32
|
||||
subclass30 db 'vga',0
|
||||
subclass31 db 'xga',0
|
||||
subclass32 db '3D',0
|
||||
|
||||
class4d:
|
||||
dw offset subclass40
|
||||
dw offset subclass41
|
||||
dw offset subclass42
|
||||
subclass40 db 'video',0
|
||||
subclass41 db 'audio',0
|
||||
subclass42 db 'telephonie',0
|
||||
|
||||
class5d:
|
||||
dw offset subclass50
|
||||
|
@ -353,6 +308,7 @@ dw offset subclass64
|
|||
dw offset subclass65
|
||||
dw offset subclass66
|
||||
dw offset subclass67
|
||||
dw offset subclass68
|
||||
subclass60 db 'hote',0
|
||||
subclass61 db 'isa',0
|
||||
subclass62 db 'eisa',0
|
||||
|
@ -361,28 +317,41 @@ subclass64 db 'pci',0
|
|||
subclass65 db 'pcmcia',0
|
||||
subclass66 db 'nubus',0
|
||||
subclass67 db 'cardbus',0
|
||||
subclass68 db 'RACEway',0
|
||||
|
||||
class7d:
|
||||
dw offset subclass70
|
||||
dw offset subclass71
|
||||
dw offset subclass72
|
||||
dw offset subclass73
|
||||
subclass70 db 'serie',0
|
||||
subclass71 db 'parallele',0
|
||||
subclass72 db 'serie multiport',0
|
||||
subclass73 db 'modem',0
|
||||
|
||||
class8d:
|
||||
dw offset subclass80
|
||||
dw offset subclass81
|
||||
dw offset subclass82
|
||||
dw offset subclass83
|
||||
dw offset subclass84
|
||||
subclass80 db 'pic',0
|
||||
subclass81 db 'dma',0
|
||||
subclass82 db 'timer',0
|
||||
subclass83 db 'rtc',0
|
||||
subclass84 db 'hotplug',0
|
||||
|
||||
class9d:
|
||||
dw offset subclass90
|
||||
dw offset subclass91
|
||||
dw offset subclass92
|
||||
dw offset subclass93
|
||||
dw offset subclass94
|
||||
subclass90 db 'clavier',0
|
||||
subclass91 db 'stylo',0
|
||||
subclass92 db 'souris',0
|
||||
subclass93 db 'scanner',0
|
||||
subclass94 db 'joystick',0
|
||||
|
||||
class10d:
|
||||
dw offset subclass100
|
||||
|
@ -406,11 +375,46 @@ dw offset subclass121
|
|||
dw offset subclass122
|
||||
dw offset subclass123
|
||||
dw offset subclass124
|
||||
dw offset subclass125
|
||||
subclass120 db 'firewire',0
|
||||
subclass121 db 'access',0
|
||||
subclass122 db 'ssa',0
|
||||
subclass123 db 'usb',0
|
||||
subclass124 db 'smbus',0
|
||||
subclass124 db 'fibre',0
|
||||
subclass125 db 'smbus',0
|
||||
|
||||
class13d:
|
||||
dw offset subclass130
|
||||
dw offset subclass131
|
||||
dw offset subclass132
|
||||
subclass130 db 'irda',0
|
||||
subclass131 db 'ir',0
|
||||
subclass132 db 'rf',0
|
||||
|
||||
class14d:
|
||||
dw offset subclass140
|
||||
subclass140 db 'IO arch',0
|
||||
|
||||
class15d:
|
||||
dw offset subclass150
|
||||
dw offset subclass151
|
||||
dw offset subclass152
|
||||
dw offset subclass153
|
||||
subclass150 db 'tv',0
|
||||
subclass151 db 'audio',0
|
||||
subclass152 db 'voix',0
|
||||
subclass153 db 'donnees',0
|
||||
|
||||
class16d:
|
||||
dw offset subclass160
|
||||
dw offset subclass161
|
||||
subclass160 db 'reseau',0
|
||||
subclass161 db 'jeux',0
|
||||
|
||||
class17d:
|
||||
dw offset subclass170
|
||||
subclass170 db 'dpio',0
|
||||
|
||||
|
||||
;bx pci version, cl nbbus, al pci type
|
||||
getPciInfos:
|
||||
|
@ -538,5 +542,10 @@ pci_type2_detect:
|
|||
jne endofdetectiontype2
|
||||
endofdetectiontype2:
|
||||
ret
|
||||
|
||||
imports:
|
||||
db "VIDEO.LIB::print",0
|
||||
print dd 0
|
||||
dw 0
|
||||
|
||||
end start
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
.model tiny
|
||||
.386c
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
org 0100h
|
||||
|
||||
|
||||
|
||||
org 0h
|
||||
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
header exe <,1,0,,,offset imports,,>
|
||||
|
||||
realstart:
|
||||
mov ax,0305h
|
||||
mov bx,0008h
|
||||
int 16h
|
||||
|
@ -43,62 +49,43 @@ Adres:
|
|||
int 47h
|
||||
mov bh,infos
|
||||
mov edi,ebp
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
lines:
|
||||
xor edx,edx
|
||||
mov dx,di
|
||||
push edx
|
||||
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
|
||||
push edx
|
||||
push offset spaces
|
||||
call [print]
|
||||
mov dx,di
|
||||
mov ah,10
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset spaces
|
||||
int 47h
|
||||
mov ah,5
|
||||
int 47h
|
||||
mov al,infos+1
|
||||
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
|
||||
push dword ptr fs:[di]
|
||||
push 8
|
||||
call [showhex]
|
||||
push ' '
|
||||
call [showchar]
|
||||
inc edi
|
||||
dec al
|
||||
jnz doaline
|
||||
mov edi,esi
|
||||
mov si,offset spaces
|
||||
mov ah,13
|
||||
int 47h
|
||||
push offset spaces2
|
||||
call [print]
|
||||
mov al,infos+1
|
||||
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
|
||||
push word ptr fs:[di]
|
||||
call [showchar]
|
||||
inc edi
|
||||
dec al
|
||||
jnz doaline2
|
||||
|
@ -110,14 +97,12 @@ doaline2:
|
|||
int 47h
|
||||
jmp lines
|
||||
outes:
|
||||
mov ah,21
|
||||
mov cl,112
|
||||
int 47h
|
||||
mov bh,0
|
||||
mov bl,infos
|
||||
mov si,offset menu
|
||||
mov ah,14h
|
||||
mov ah,25
|
||||
int 47h
|
||||
push offset menu
|
||||
call [print]
|
||||
waitkey:
|
||||
mov ax,0
|
||||
int 16h
|
||||
|
@ -153,18 +138,13 @@ outes:
|
|||
suit6:
|
||||
cmp ax,4100h
|
||||
jne suit7
|
||||
mov ah,21
|
||||
mov cl,116
|
||||
int 47h
|
||||
mov dword ptr [pope],'TIDE'
|
||||
mov bh,0
|
||||
mov bl,infos
|
||||
xor bh,bh
|
||||
mov si,offset menu
|
||||
mov ah,14h
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
mov ah,25
|
||||
int 47h
|
||||
push offset menu
|
||||
call [print]
|
||||
mov ax,0B800h
|
||||
mov es,ax
|
||||
mov xxyy2,3
|
||||
|
@ -243,28 +223,20 @@ writs:
|
|||
cmp ch,cl
|
||||
je no
|
||||
push si ax
|
||||
mov ah,25
|
||||
mov bh,0
|
||||
mov bl,infos
|
||||
xor bh,bh
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,117
|
||||
int 47h
|
||||
mov si,offset msg
|
||||
mov ah,13
|
||||
mov ah,25
|
||||
int 47h
|
||||
push offset msg
|
||||
call [print]
|
||||
mov ax,0
|
||||
int 16h
|
||||
mov bh,0
|
||||
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
|
||||
push offset menu
|
||||
call [print]
|
||||
pop bx si
|
||||
mov es:[bx-1],edi
|
||||
mov es:[si-1],dx
|
||||
|
@ -289,8 +261,7 @@ cursor:
|
|||
jne adres
|
||||
mov ah,29h
|
||||
int 47h
|
||||
db 0CBH ; +++++++
|
||||
ret
|
||||
retf
|
||||
|
||||
calc1:
|
||||
push ax dx si
|
||||
|
@ -377,14 +348,25 @@ yy dw 0
|
|||
xxyy dw 3
|
||||
xxyy2 dw 3
|
||||
|
||||
msg db 'Erreur : zone non modifiable (ROM) pressez une touche pour continuer ',0
|
||||
menu db 'haut/bas [F1/2] Offset [F3/4] Segment [F5/6] Mode F7, Quitter F8 MODE '
|
||||
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
|
||||
spaces db ' ³ ',0
|
||||
spaces db '\c02%hW:%hW \c04| \c07',0
|
||||
spaces2 db '\c04 | \c07',0
|
||||
|
||||
showbuffer db 35 dup (0FFh)
|
||||
oldmode db 0
|
||||
infos db 40 dup (0)
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
.model small
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
org 0h
|
||||
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
header exe <,1,0,,,offset imports,offset exports,>
|
||||
|
||||
realstart:
|
||||
push offset message
|
||||
call [affiche]
|
||||
call [waitkey]
|
||||
retf
|
||||
|
||||
message db 'Appel de la librairie video !',0
|
||||
|
||||
|
||||
imports:
|
||||
db "VIDEO.LIB::print",0
|
||||
affiche dd 0
|
||||
db "EXEM-LIB.LIB::waitkey",0
|
||||
waitkey dd 0
|
||||
dw 0
|
||||
exports:
|
||||
|
||||
end start
|
|
@ -0,0 +1,25 @@
|
|||
.model tiny
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
org 0h
|
||||
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
header exe <,1,0,,,offset imports,offset exports,>
|
||||
|
||||
|
||||
getvar2:
|
||||
mov ax,0
|
||||
int 16h
|
||||
retf
|
||||
|
||||
|
||||
imports:
|
||||
|
||||
exports:
|
||||
db "waitkey",0
|
||||
dw getvar2
|
||||
dw 0
|
||||
end start
|
|
@ -3,133 +3,42 @@
|
|||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
include ..\include\mem.h
|
||||
include ..\include\fat.h
|
||||
|
||||
start:
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov ah,25
|
||||
mov bx,0
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,70h
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset msg1
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset prompt
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset infos
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset prompt
|
||||
int 47h
|
||||
header exe <,1,0,,,offset imports,,>
|
||||
|
||||
realstart:
|
||||
push offset msg1
|
||||
call [print]
|
||||
|
||||
mov ah,3
|
||||
int 48h
|
||||
xor bp,bp
|
||||
mov di,offset bufferentry
|
||||
mov si,di
|
||||
mov ah,7
|
||||
int 48h
|
||||
jc nofiles
|
||||
go:
|
||||
test [si+Entries.FileAttr],00010000b
|
||||
je notdirectory
|
||||
mov ah,21
|
||||
mov cl,4
|
||||
int 47h
|
||||
jmp notall
|
||||
notdirectory:
|
||||
cmp [si+Entries.FilExt],'E'
|
||||
jne notexe
|
||||
cmp [si+Entries.FilExt+1],'X'
|
||||
jne notexe
|
||||
cmp [si+Entries.FilExt+2],'E'
|
||||
jne notexe
|
||||
mov ah,21
|
||||
mov cl,5
|
||||
int 47h
|
||||
jmp notall
|
||||
notexe:
|
||||
cmp [si+Entries.FilExt],'S'
|
||||
jne notsys
|
||||
cmp [si+Entries.FilExt+1],'Y'
|
||||
jne notsys
|
||||
cmp [si+Entries.FilExt+2],'S'
|
||||
jne notsys
|
||||
mov ah,21
|
||||
mov cl,0Ah
|
||||
int 47h
|
||||
jmp notall
|
||||
notsys:
|
||||
mov ah,21
|
||||
mov cl,7h
|
||||
int 47h
|
||||
notall:
|
||||
mov ah,46
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,44
|
||||
mov dx,[si+Entries.FileDateCrea]
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,45
|
||||
mov dx,[si+Entries.FileTimeCrea]
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,44
|
||||
mov dx,[si+Entries.FileDate]
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,45
|
||||
mov dx,[si+Entries.FileTime]
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,48
|
||||
mov edx,[si+Entries.FileSize]
|
||||
int 47h
|
||||
mov ah,05
|
||||
int 47h
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,47
|
||||
mov dl,[si+Entries.FileAttr]
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
push word ptr [di+Entries.FileAttr]
|
||||
push dword ptr [di+Entries.FileSize]
|
||||
push word ptr [di+Entries.FileTime]
|
||||
push word ptr [di+Entries.FileDate]
|
||||
push word ptr [di+Entries.FileTimeCrea]
|
||||
push word ptr [di+Entries.FileDateCrea]
|
||||
push di
|
||||
push offset line
|
||||
call [print]
|
||||
inc bp
|
||||
mov ah,8
|
||||
int 48h
|
||||
jnc go
|
||||
nofiles:
|
||||
mov ah,21
|
||||
mov cl,70h
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset menu
|
||||
int 47h
|
||||
push offset menu
|
||||
call [print]
|
||||
mov xx,1
|
||||
mov xxold,2
|
||||
call Select
|
||||
|
@ -139,7 +48,7 @@ int 16h
|
|||
cmp ah,50h
|
||||
jne tre1
|
||||
cmp xx,bp
|
||||
je endof
|
||||
ja endof
|
||||
inc xx
|
||||
call select
|
||||
jmp endof
|
||||
|
@ -157,14 +66,11 @@ tre2:
|
|||
tre3:
|
||||
cmp ah,59
|
||||
jne tre4
|
||||
jmp start
|
||||
jmp realstart
|
||||
tre4:
|
||||
cmp ah,67
|
||||
jne endof
|
||||
mov ah,15h
|
||||
mov cl,7
|
||||
int 47h
|
||||
db 0CBh
|
||||
retf
|
||||
|
||||
;selectionne la ligne xx
|
||||
Select:
|
||||
|
@ -186,12 +92,18 @@ ret
|
|||
|
||||
xx dw 1
|
||||
xxold dw 0
|
||||
menu db '[F1] Lire disque [F9] Quitter ',0
|
||||
msg1 db ' Gestionnaire de fichier Version 1.5 ',0
|
||||
msg2 db 'Programme en cours de chargement',0
|
||||
prompt db '--------------------------------------------------------------------------------',0
|
||||
infos db 'Nom Ext. Date creation Date modification Taille Attributs',0
|
||||
|
||||
menu db '\c70 [F1] Lire disque [F9] Quitter \c07',0
|
||||
msg1 db '\e\g00,00\c70 Gestionnaire de fichier Version 1.5 '
|
||||
db '\g00,01\c07--------------------------------------------------------------------------------'
|
||||
db '\g00,02Nom Ext. Date creation Date modification Taille Attributs'
|
||||
db '\g00,03--------------------------------------------------------------------------------\l',0
|
||||
line db '\c07%n %d %t %d %t %z %a\l',0
|
||||
bufferentry db 512 dup (0)
|
||||
|
||||
|
||||
imports:
|
||||
db "VIDEO.LIB::print",0
|
||||
print dd 0
|
||||
dw 0
|
||||
|
||||
end start
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
.model tiny
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
|
||||
start:
|
||||
|
||||
PNP_ADR_PORT equ 0x279
|
||||
PNP_WRITE_PORT equ 0xA79
|
||||
;MIN and MAX READ_ADDR must have the bottom two bits set
|
||||
MIN_READ_ADDR equ 0x203
|
||||
MAX_READ_ADDR equ 0x3FF
|
||||
;READ_ADDR_STEP must be a multiple of 4
|
||||
READ_ADDR_STEP equ 8
|
||||
|
||||
;bits
|
||||
CONFIG_WAIT_FOR_KEY equ 0x02
|
||||
CONFIG_RESET_CSN equ 0x04
|
||||
IDENT_LEN equ 9
|
||||
|
||||
;renvoie le timer en ax
|
||||
ctc:
|
||||
cli
|
||||
mov dx,043h
|
||||
mov al,0
|
||||
out dx,al
|
||||
mov dx,40h
|
||||
in al,dx
|
||||
mov ah,al
|
||||
in al,dx
|
||||
sti
|
||||
ret
|
||||
|
||||
;attend pendant ax microsecondes
|
||||
usleep:
|
||||
|
||||
end start
|
|
@ -1,10 +1,16 @@
|
|||
.model tiny
|
||||
.386c
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
org 0100h
|
||||
|
||||
|
||||
|
||||
org 0h
|
||||
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
header exe <,1,0,,,offset imports,,>
|
||||
|
||||
realstart:
|
||||
mov ah,7
|
||||
mov cx,65535
|
||||
int 49h
|
||||
|
@ -34,7 +40,6 @@ jc problem2
|
|||
|
||||
push es
|
||||
pop ds
|
||||
xor si,si
|
||||
|
||||
mov ah,28h
|
||||
int 47h
|
||||
|
@ -42,59 +47,68 @@ mov ax,0008h
|
|||
int 47h
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov cx,300
|
||||
mov bx,30
|
||||
mov ah,37
|
||||
int 47h
|
||||
mov ah,15h
|
||||
mov cl,11
|
||||
int 47h
|
||||
push 0
|
||||
call cs:[loadbmppalet]
|
||||
push 150
|
||||
push 20
|
||||
push 0
|
||||
call cs:[showbmp]
|
||||
jc problem4
|
||||
push cs
|
||||
pop ds
|
||||
mov ah,13
|
||||
mov si,offset poper
|
||||
int 47h
|
||||
mov ax,0
|
||||
push offset poper
|
||||
call [print]
|
||||
endofit:
|
||||
xor ax,ax
|
||||
int 16h
|
||||
mov ah,29h
|
||||
int 47h
|
||||
db 0CBH
|
||||
retf
|
||||
|
||||
problem:
|
||||
push cs
|
||||
pop ds
|
||||
mov ah,13
|
||||
mov si,offset error
|
||||
int 47h
|
||||
mov ax,0
|
||||
int 16h
|
||||
db 0CBh
|
||||
push offset error
|
||||
call [print]
|
||||
jmp endofit
|
||||
|
||||
problem2:
|
||||
push cs
|
||||
pop ds
|
||||
mov ah,13
|
||||
mov si,offset error2
|
||||
int 47h
|
||||
mov ax,0
|
||||
int 16h
|
||||
db 0CBh
|
||||
push offset error2
|
||||
call [print]
|
||||
jmp endofit
|
||||
|
||||
problem3:
|
||||
push cs
|
||||
pop ds
|
||||
mov ah,13
|
||||
mov si,offset error3
|
||||
int 47h
|
||||
mov ax,0
|
||||
int 16h
|
||||
db 0CBh
|
||||
push offset error3
|
||||
call [print]
|
||||
jmp endofit
|
||||
|
||||
poper db 'COS2000 en mode graphique',0
|
||||
problem4:
|
||||
push cs
|
||||
pop ds
|
||||
push offset error4
|
||||
call [print]
|
||||
jmp endofit
|
||||
|
||||
poper db '\c0BC\c0CO\c0DS\c0E2\c0E0\c0E0\c0F0 en mode graphique',0
|
||||
logo db 'cos.rip',0
|
||||
ok1 db 'Chargement de l''image OK',0
|
||||
ok2 db 'Decompression de l''image OK',0
|
||||
error3 db 'Une erreur est apparue lors de l''allocation de mémoire',0
|
||||
error db 'Une erreur est apparue lors du chargement de l''image',0
|
||||
error2 db 'Une erreur est apparue lors de la decompression de l''image',0
|
||||
error3 db '\c04Une erreur est apparue lors de l''allocation de mémoire',0
|
||||
error db '\c04Une erreur est apparue lors du chargement de l''image',0
|
||||
error2 db '\c04Une erreur est apparue lors de la decompression de l''image',0
|
||||
error4 db '\c0FUne erreur est apparue lors de l''affichage de l''image',0
|
||||
|
||||
|
||||
imports:
|
||||
db "VIDEO.LIB::print",0
|
||||
print dd 0
|
||||
db "BMP.LIB::showbmp",0
|
||||
showbmp dd 0
|
||||
db "BMP.LIB::loadbmppalet",0
|
||||
loadbmppalet dd 0
|
||||
dw 0
|
||||
end start
|
||||
|
|
|
@ -3,87 +3,80 @@
|
|||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
include ..\include\mem.h
|
||||
include ..\include\divers.h
|
||||
|
||||
start:
|
||||
mov si,offset msg
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov si,offset menu
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
header exe <,1,0,,,offset imports,,>
|
||||
|
||||
realstart:
|
||||
push offset msg
|
||||
call [print]
|
||||
|
||||
xor cx,cx
|
||||
listmcb:
|
||||
mov ah,4
|
||||
int 49h
|
||||
jc fino
|
||||
inc cx
|
||||
mov ah,18h
|
||||
int 47h
|
||||
push gs
|
||||
pop ds
|
||||
mov bh,0
|
||||
mov si,MB.Names
|
||||
mov ah,14h
|
||||
int 47h
|
||||
mov bh,15
|
||||
xor edx,edx
|
||||
mov dx,ds:[MB.Sizes]
|
||||
shl edx,4
|
||||
mov ah,0Fh
|
||||
int 47h
|
||||
mov bh,24
|
||||
cmp ds:[MB.IsResident],true
|
||||
push cs
|
||||
pop ds
|
||||
jne notresident
|
||||
mov si,offset resident
|
||||
mov ah,14h
|
||||
int 47h
|
||||
jmp suitelistmcb
|
||||
notresident:
|
||||
mov si,offset nonresident
|
||||
mov ah,14h
|
||||
int 47h
|
||||
suitelistmcb:
|
||||
mov bh,30
|
||||
cmp gs:[MB.Reference],0
|
||||
je next
|
||||
cmp gs:[MB.Reference],1000h
|
||||
jb next
|
||||
mov ax,gs:[MB.Reference]
|
||||
dec ax
|
||||
dec ax
|
||||
mov ds,ax
|
||||
mov si,MB.Names
|
||||
mov ah,14h
|
||||
int 47h
|
||||
next:
|
||||
mov bh,46
|
||||
xor edx,edx
|
||||
|
||||
;placement mémoire
|
||||
mov dx,gs
|
||||
inc dx
|
||||
inc dx
|
||||
push cx
|
||||
mov cx,16
|
||||
mov ah,11h
|
||||
int 47h
|
||||
pop cx
|
||||
mov ah,6h
|
||||
int 47h
|
||||
push edx
|
||||
|
||||
;parent
|
||||
cmp gs:[MB.Reference],0
|
||||
je next
|
||||
mov dx,gs:[MB.Reference]
|
||||
dec dx
|
||||
dec dx
|
||||
push dx
|
||||
push offset MB.Names
|
||||
jmp suitemn
|
||||
next:
|
||||
push cs
|
||||
push offset none
|
||||
suitemn:
|
||||
|
||||
;Resident
|
||||
cmp gs:[MB.IsResident],true
|
||||
jne notresident
|
||||
push offset resident
|
||||
jmp suitelistmcb
|
||||
notresident:
|
||||
push offset nonresident
|
||||
suitelistmcb:
|
||||
|
||||
;taille memoire
|
||||
xor edx,edx
|
||||
mov dx,gs:[MB.Sizes]
|
||||
shl edx,4
|
||||
push 6
|
||||
push edx
|
||||
|
||||
;nom
|
||||
push gs
|
||||
push offset MB.Names
|
||||
|
||||
push offset line
|
||||
call [print]
|
||||
|
||||
jmp listmcb
|
||||
fino:
|
||||
db 0CBh
|
||||
resident db 'oui',0
|
||||
nonresident db 'non',0
|
||||
msg db 'Memory manager V1.5',0
|
||||
menu db 'Nom | Taille | Res | Parent | Mem',0
|
||||
resident db "oui",0
|
||||
nonresident db "non",0
|
||||
line db "%0P\h15%w\h24%0\h30%0P\h46%hW\l",0
|
||||
msg db "Memory manager V1.5\lNom Taille Res Parent Mem\l",0
|
||||
none db ".",0
|
||||
|
||||
imports:
|
||||
db "VIDEO.LIB::print",0
|
||||
print dd 0
|
||||
dw 0
|
||||
|
||||
end start
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
start:
|
||||
mov eax,cr0
|
||||
|
|
|
@ -3,15 +3,25 @@
|
|||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
mov si,offset message
|
||||
mov ah,13
|
||||
int 47h
|
||||
header exe <,1,0,,,offset imports,,>
|
||||
|
||||
realstart:
|
||||
mov ah,2
|
||||
int 74h
|
||||
db 0CBh
|
||||
push offset message
|
||||
call [print]
|
||||
retf
|
||||
|
||||
message db 'Activation de la souris',0
|
||||
|
||||
imports:
|
||||
db "VIDEO.LIB::print",0
|
||||
print dd 0
|
||||
dw 0
|
||||
|
||||
end start
|
||||
|
|
|
@ -2,195 +2,54 @@
|
|||
.486
|
||||
smart
|
||||
.code
|
||||
org 0100h
|
||||
|
||||
org 0h
|
||||
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
header exe <,1,0,,,offset imports,,>
|
||||
|
||||
realstart:
|
||||
mov ah,28h
|
||||
int 47h
|
||||
mov ax,0001
|
||||
int 47h
|
||||
mov ah,2
|
||||
int 47h
|
||||
|
||||
mov si,offset text1 ;titre
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,3
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset text2
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov edx,2612182686
|
||||
mov ah,8
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov edx,7576534
|
||||
mov ah,8
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,4
|
||||
int 47h
|
||||
mov si,offset text3
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov edx,-6876253
|
||||
mov cx,32
|
||||
mov ah,9
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov edx,-311212323
|
||||
mov cx,32
|
||||
mov ah,9
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,5
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset text4
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov edx,0892325457
|
||||
mov cx,16
|
||||
mov ah,10
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov edx,0236514
|
||||
mov ah,10
|
||||
mov cx,32
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,6
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset text5
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov edx,3762182686
|
||||
mov ah,11
|
||||
mov cx,32
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov edx,2182686
|
||||
mov ah,11
|
||||
mov cx,16
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset text6
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov dl,'h'
|
||||
mov ah,7
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov dl,'@'
|
||||
mov ah,7
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,8
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset text7
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov si,offset textt
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov si,offset texttt
|
||||
mov ah,13
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,9
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset text71
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov dx,0BF30h
|
||||
mov ah,44
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov dx,0B0B6h
|
||||
mov ah,44
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset text72
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov edx,8601h
|
||||
mov ah,45
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov dx,0B0B6h
|
||||
mov ah,45
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
push word ptr 0FFFFh
|
||||
push dword ptr 652201
|
||||
push dword ptr 1545454545
|
||||
push word ptr 1523
|
||||
push word ptr 2041
|
||||
push offset zero
|
||||
push offset fixe
|
||||
push word ptr 5
|
||||
push word ptr 'i'
|
||||
push word ptr 'a'
|
||||
push dword ptr 5041
|
||||
push dword ptr 125645
|
||||
push dword ptr 5041
|
||||
push dword ptr 125645
|
||||
push dword ptr 5041
|
||||
push dword ptr 125645
|
||||
push offset message
|
||||
call [print]
|
||||
mov ax,0
|
||||
int 16h
|
||||
|
||||
|
||||
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov ah,30
|
||||
int 47h
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,5
|
||||
int 47h
|
||||
|
||||
mov cx,200
|
||||
go1:
|
||||
mov ah,30
|
||||
int 47h
|
||||
mov ah,33
|
||||
int 47
|
||||
mov ah,20
|
||||
xor bh,bh
|
||||
inc bl
|
||||
mov si,offset text8
|
||||
int 47h
|
||||
push offset textdemo1
|
||||
call [print]
|
||||
call put
|
||||
mov ah,30
|
||||
int 47h
|
||||
|
@ -199,20 +58,14 @@ int 47h
|
|||
dec cx
|
||||
jnz go1
|
||||
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
mov cx,200
|
||||
go2:
|
||||
mov si,offset text9
|
||||
mov ah,30
|
||||
int 47h
|
||||
mov ah,33
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
mov ah,13
|
||||
int 47h
|
||||
push offset textdemo2
|
||||
call [print]
|
||||
call put
|
||||
mov ah,30
|
||||
int 47h
|
||||
|
@ -221,20 +74,14 @@ int 47h
|
|||
dec cx
|
||||
jnz go2
|
||||
|
||||
mov ah,21
|
||||
mov cl,9
|
||||
int 47h
|
||||
mov cx,200
|
||||
go3:
|
||||
mov si,offset text10
|
||||
mov ah,30
|
||||
int 47h
|
||||
mov ah,33
|
||||
int 47h
|
||||
xor bh,bh
|
||||
inc bl
|
||||
mov ah,20
|
||||
int 47h
|
||||
push offset textdemo3
|
||||
call [print]
|
||||
call put
|
||||
mov ah,30
|
||||
int 47h
|
||||
|
@ -247,14 +94,8 @@ mov ah,30
|
|||
int 47h
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov bx,040Dh
|
||||
mov si,offset texte1
|
||||
mov ah,20
|
||||
int 47h
|
||||
mov si,offset texte2
|
||||
inc bl
|
||||
mov ah,20
|
||||
int 47h
|
||||
push offset texte2
|
||||
call [print]
|
||||
mov ah,30
|
||||
int 47h
|
||||
mov ah,2
|
||||
|
@ -262,9 +103,6 @@ int 47h
|
|||
mov ah,30
|
||||
int 47h
|
||||
|
||||
mov cl,12
|
||||
mov ah,21
|
||||
int 47h
|
||||
mov bp,255
|
||||
xor edx,edx
|
||||
go4:
|
||||
|
@ -273,32 +111,28 @@ int 47h
|
|||
mov ah,33
|
||||
int 47h
|
||||
inc edx
|
||||
mov ah,11
|
||||
mov cx,16
|
||||
int 47h
|
||||
mov ah,6
|
||||
int 47h
|
||||
push edx
|
||||
push offset texte3
|
||||
call [print]
|
||||
mov ah,30
|
||||
int 47h
|
||||
mov ah,33
|
||||
int 47h
|
||||
dec bp
|
||||
jnz go4
|
||||
mov ah,14h
|
||||
xor bx,bx
|
||||
mov si,offset texte3
|
||||
int 47h
|
||||
push offset texte4
|
||||
call [print]
|
||||
mov ax,0
|
||||
int 16h
|
||||
mov ah,29h
|
||||
int 47h
|
||||
db 0CBh
|
||||
retf
|
||||
|
||||
put:
|
||||
call random
|
||||
mov di,dx
|
||||
and di,4096-2
|
||||
mov si,offset text11
|
||||
mov si,offset fond
|
||||
call showstring2
|
||||
ret
|
||||
|
||||
|
@ -322,24 +156,27 @@ mov cs:randseed,dx
|
|||
pop dx cx ax
|
||||
ret
|
||||
|
||||
texttt db 'Texte',0
|
||||
textt db 'Divers',0
|
||||
text1 db ' D‚monstration de l''utilisation de la bibliothŠque VIDEO',0
|
||||
text2 db 'Nombre entier :',0
|
||||
text3 db 'Nombre sign‚ :',0
|
||||
text4 db 'Nombre h‚xad‚cimal :',0
|
||||
text5 db 'Nombre binaire :',0
|
||||
text6 db 'CaractŠres :',0
|
||||
text7 db 'Texte :',0
|
||||
text71 db 'Date :',0
|
||||
text72 db 'Heure :',0
|
||||
text8 db 'Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling',0
|
||||
text9 db 'Vertical Vertical Vertical Vertical Vertical Vertical Vertical Vertical',0
|
||||
text10 db 'Rapide Rapide Rapide Rapide Rapide Rapide Rapide Rapide',0
|
||||
text11 db 'Echange rapide de pages Vid‚o',0
|
||||
texte1 db 'Routine d''affichage Ultra Rapide Agissant sur le Mat‚riel',0
|
||||
texte2 db 'Possibilit‚ de r‚aliser des effets de superposition',0
|
||||
texte3 db 'Sauvegarde et restauration de l''ecran',0
|
||||
zero db 'Chaine a z‚ro terminal',0
|
||||
fixe db 20,'Chaine a taille fixe'
|
||||
message db "\m01\e\c07\h01D‚monstration de la librairie VIDEO.LIB\l\l"
|
||||
db "\c01Nombres entiers ou sign‚s (%%u/%%i):\l%u\l%iD\l"
|
||||
db "\c02Nombre hexad‚cimaux (%%h):\l%hD\l%hW\l"
|
||||
db "\c03Nombres Binaires (%%b):\l%bD\l%bB\l"
|
||||
db "\c04Caracteres simples ou multiples (%%c/%%cM):\l%c\l%cM\l"
|
||||
db "\c05Chaines a z‚ro terminal ou fixes (%%0/%%s):\l%s\l%0\l"
|
||||
db "\c06Dates et heures (%%t/%%d):\l%t\l%d\l"
|
||||
db "\c07Nombre a echelle automatique (%%z):\l%z\l%z\l"
|
||||
db "\c08Attributs de fichiers (%%a):\l%a",0
|
||||
|
||||
fond db 16,'Ceci est un fond'
|
||||
textdemo1 db '\c05Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling\l',0
|
||||
textdemo2 db '\c07Vertical Vertical Vertical Vertical Vertical Vertical Vertical Vertical\l',0
|
||||
textdemo3 db '\c09Rapide Rapide Rapide Rapide Rapide Rapide Rapide Rapide\l',0
|
||||
texte1 db 'Echange rapide de pages Vid‚o',0
|
||||
texte2 db '\g04,13Routine d''affichage Ultra Rapide Agissant sur le Mat‚riel'
|
||||
db '\g04,14Possibilit‚ de r‚aliser des effets de superposition',0
|
||||
texte3 db '\c04%bD\l',0
|
||||
texte4 db '\g01,00Sauvegarde et restauration de l''ecran (%%s/%%r)',0
|
||||
|
||||
showstring2:
|
||||
push es bx cx si di
|
||||
|
@ -358,6 +195,9 @@ strinaize4:
|
|||
pop di si cx bx es
|
||||
ret
|
||||
|
||||
|
||||
imports:
|
||||
db "VIDEO.LIB::print",0
|
||||
print dd 0
|
||||
dw 0
|
||||
|
||||
end start
|
||||
|
|
|
@ -1,158 +1,113 @@
|
|||
.model tiny
|
||||
.386c
|
||||
.code
|
||||
org 0100h
|
||||
org 0h
|
||||
|
||||
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
mov ah,28h
|
||||
int 47H
|
||||
mov ax,0002
|
||||
int 47H
|
||||
replay:
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
xor di,di
|
||||
xor cx,cx
|
||||
mov ah,20
|
||||
mov bx,1D00h
|
||||
mov si,offset Msg
|
||||
int 47h
|
||||
mov ah,20
|
||||
mov bx,0231h
|
||||
mov si,offset msgapp
|
||||
int 47h
|
||||
mov bp,1000h
|
||||
header exe <,1,0,,,offset imports,,>
|
||||
|
||||
realstart:
|
||||
mov ah,28h
|
||||
int 47h
|
||||
push offset msg
|
||||
call [print]
|
||||
mov bp,1000h
|
||||
xor di,di
|
||||
xor cx,cx
|
||||
xor edx,edx
|
||||
VerifAll:
|
||||
mov ah,1
|
||||
int 16h
|
||||
jz nokey
|
||||
cmp al,' '
|
||||
je enend
|
||||
mov ah,1
|
||||
int 16h
|
||||
jz nokey
|
||||
cmp al,' '
|
||||
je enend
|
||||
nokey:
|
||||
mov ax,cx
|
||||
inc ax
|
||||
mov si,100
|
||||
mul si
|
||||
mov si,2880
|
||||
div si
|
||||
xor edx,edx
|
||||
mov dx,ax
|
||||
mov ah,15
|
||||
mov bx,0A14h
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset po
|
||||
int 47h
|
||||
mov ah,15
|
||||
mov dx,cx
|
||||
inc dx
|
||||
mov bx,0A10h
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset Msg2
|
||||
int 47h
|
||||
mov ah,8
|
||||
mov edx,0
|
||||
mov dx,di
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset Msg3
|
||||
int 47h
|
||||
call gauge
|
||||
mov ah,2
|
||||
int 48h
|
||||
jc errors
|
||||
je noprob
|
||||
inc di
|
||||
noprob:
|
||||
inc cx
|
||||
cmp cx,2880
|
||||
jnz verifall
|
||||
mov dx,di
|
||||
push edx
|
||||
mov dx,cx
|
||||
inc dx
|
||||
push edx
|
||||
mov ax,cx
|
||||
inc ax
|
||||
mov si,100
|
||||
mul si
|
||||
mov si,2880
|
||||
div si
|
||||
mov dx,ax
|
||||
push edx
|
||||
push offset msg2
|
||||
call [print]
|
||||
call gauge
|
||||
mov ah,2
|
||||
int 48h
|
||||
jc errors
|
||||
je noprob
|
||||
inc di
|
||||
noprob:
|
||||
inc cx
|
||||
cmp cx,2880
|
||||
jnz verifall
|
||||
enend:
|
||||
cmp di,0
|
||||
je noatall
|
||||
mov bx,0E09h
|
||||
mov ah,20
|
||||
mov si,offset error2
|
||||
int 47h
|
||||
jmp someof
|
||||
noatall:
|
||||
mov bx,0E09h
|
||||
mov ah,20
|
||||
mov si,offset noerror
|
||||
int 47h
|
||||
someof:
|
||||
mov ah,0
|
||||
int 16h
|
||||
mov ah,29h
|
||||
int 47H
|
||||
db 0CBH
|
||||
errors:
|
||||
mov ah,21
|
||||
mov cl,4
|
||||
int 47h
|
||||
mov bx,0D09h
|
||||
mov ah,20
|
||||
mov si,offset errore
|
||||
int 47h
|
||||
mov ah,0
|
||||
int 16h
|
||||
mov ah,29h
|
||||
int 47H
|
||||
db 0CBH
|
||||
cmp di,0
|
||||
je noatall
|
||||
push offset error2
|
||||
call [print]
|
||||
jmp someof
|
||||
noatall:
|
||||
push offset noerror
|
||||
call [print]
|
||||
someof:
|
||||
mov ah,0
|
||||
int 16h
|
||||
mov ah,29h
|
||||
int 47H
|
||||
retf
|
||||
errors:
|
||||
push offset error
|
||||
call [print]
|
||||
mov ah,0
|
||||
int 16h
|
||||
mov ah,29h
|
||||
int 47H
|
||||
retf
|
||||
|
||||
|
||||
|
||||
errore db 'Erreur avec le lecteur de disquette !',0
|
||||
noerror db 'Pas de secteurs defectueux, appuyez sur une touche pour continuer',0
|
||||
error2 db 'Le disque est defectueux, appuyez sur une touche pour quitter',0
|
||||
po db ' %',0
|
||||
msgapp db '<Pressez espace pour quitter>',0
|
||||
msg db '- Test de surface du disque -',0
|
||||
msg2 db ' cluster testes. ',0
|
||||
msg3 db ' cluster defectueux. ',0
|
||||
;->Increment CX
|
||||
error db '\g10,10Erreur avec le lecteur de disquette !',0
|
||||
error2 db '\g10,10Le disque est defectueux, appuyez sur une touche pour quitter',0
|
||||
noerror db '\g10,10Pas de secteurs defectueux, appuyez sur une touche pour continuer',0
|
||||
msg db '\m02\e\c07\g29,00- Test de surface du disque -\g02,49<Pressez espace pour quitter>',0
|
||||
msg2 db '\g10,20%u %%\g10,16%u cluster testes. \h34%u cluster defectueux. ',0
|
||||
|
||||
gauge:
|
||||
push ax bx cx dx si ds
|
||||
push cs
|
||||
pop ds
|
||||
mov ax,cx
|
||||
mul sizes
|
||||
div max
|
||||
mov dx,ax
|
||||
mov bl,oldvalue
|
||||
xor bh,bh
|
||||
mov byte ptr [offset gaugetxt+bx],'Û'
|
||||
cmp bx,0
|
||||
jnz nono2
|
||||
mov ah,21
|
||||
mov cl,8
|
||||
int 47h
|
||||
mov bx,xy
|
||||
mov ah,20
|
||||
mov si,offset gaugetxt
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
nono2:
|
||||
mov bx,dx
|
||||
xor bh,bh
|
||||
mov byte ptr [offset gaugetxt+bx],0
|
||||
mov oldvalue,bl
|
||||
mov bx,xy
|
||||
mov ah,20
|
||||
mov si,offset gaugetxt
|
||||
int 47h
|
||||
pop ds si dx cx bx ax
|
||||
ret
|
||||
oldvalue db 0
|
||||
max dw 2880
|
||||
sizes dw 50
|
||||
xy dw 0A12h
|
||||
gaugetxt db 'ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ',0
|
||||
push ax dx
|
||||
mov ax,cx
|
||||
mul sizeof
|
||||
div max
|
||||
xor edx,edx
|
||||
mov dx,sizeof
|
||||
sub dx,ax
|
||||
push dx
|
||||
push 'Û'
|
||||
mov dx,ax
|
||||
push dx
|
||||
push 'Û'
|
||||
push offset gauges
|
||||
call [print]
|
||||
pop dx ax
|
||||
retn
|
||||
|
||||
max dw 2879
|
||||
sizeof dw 50
|
||||
|
||||
gauges db '\g10,18\c05%cM\c07%cM',0
|
||||
|
||||
imports:
|
||||
db "VIDEO.LIB::print",0
|
||||
print dd 0
|
||||
dw 0
|
||||
|
||||
End Start
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
.model tiny
|
||||
.386c
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
org 0100h
|
||||
|
||||
|
||||
|
||||
org 0h
|
||||
|
||||
include ..\include\mem.h
|
||||
|
||||
start:
|
||||
header exe <,1,0,,,offset imports,,>
|
||||
|
||||
realstart:
|
||||
mov ax,0305h
|
||||
mov bx,0008h
|
||||
int 16h
|
||||
|
@ -38,12 +44,8 @@ Adres:
|
|||
mov bl,infos
|
||||
xor bh,bh
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,116
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset errordisk
|
||||
int 47h
|
||||
push offset errordisk
|
||||
call [print]
|
||||
mov ax,0
|
||||
int 16h
|
||||
noerror:
|
||||
|
@ -71,52 +73,32 @@ Adres:
|
|||
int 47h
|
||||
mov bh,infos
|
||||
mov di,bp
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
lines:
|
||||
mov dx,sect
|
||||
mov cx,16
|
||||
mov ah,10
|
||||
int 47h
|
||||
mov si,offset dep
|
||||
mov ah,13
|
||||
int 47h
|
||||
xor edx,edx
|
||||
mov dx,di
|
||||
mov ah,10
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset spaces
|
||||
int 47h
|
||||
mov ah,5
|
||||
int 47h
|
||||
push edx
|
||||
mov dx,sect
|
||||
push edx
|
||||
push offset spaces
|
||||
call [print]
|
||||
mov al,infos+1
|
||||
mov cl,7
|
||||
mov ah,21
|
||||
int 47h
|
||||
mov si,di
|
||||
doaline:
|
||||
mov dl,[di+offset buffer]
|
||||
mov ah,10
|
||||
mov cl,8
|
||||
int 47h
|
||||
mov ah,5
|
||||
int 47h
|
||||
push dword ptr [di+offset buffer]
|
||||
push 8
|
||||
call [showhex]
|
||||
push ' '
|
||||
call [showchar]
|
||||
inc di
|
||||
dec al
|
||||
jnz doaline
|
||||
mov di,si
|
||||
mov si,offset spaces
|
||||
mov ah,13
|
||||
int 47h
|
||||
push offset spaces2
|
||||
call [print]
|
||||
mov al,infos+1
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
doaline2:
|
||||
mov dl,[di+offset buffer]
|
||||
mov ah,7
|
||||
int 47h
|
||||
push word ptr [di+offset buffer]
|
||||
call [showchar]
|
||||
inc di
|
||||
dec al
|
||||
jnz doaline2
|
||||
|
@ -128,14 +110,12 @@ doaline2:
|
|||
int 47h
|
||||
jmp lines
|
||||
outes:
|
||||
mov ah,21
|
||||
mov cl,112
|
||||
int 47h
|
||||
mov bh,0
|
||||
mov bl,infos
|
||||
mov si,offset menu
|
||||
mov ah,14h
|
||||
mov ah,25
|
||||
int 47h
|
||||
push offset menu
|
||||
call [print]
|
||||
waitkey:
|
||||
mov ax,0
|
||||
int 16h
|
||||
|
@ -183,19 +163,12 @@ outes:
|
|||
cmp ax,4100h
|
||||
jne suit7
|
||||
mov dword ptr [pope],'TIDE'
|
||||
mov bh,0
|
||||
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
|
||||
push offset menu
|
||||
call [print]
|
||||
mov ax,0B800h
|
||||
mov es,ax
|
||||
mov xxyy2,3
|
||||
|
@ -290,8 +263,7 @@ cursor:
|
|||
jne adres2
|
||||
mov ah,29h
|
||||
int 47H
|
||||
db 0CBH
|
||||
ret
|
||||
retf
|
||||
|
||||
calc1:
|
||||
push ax dx si
|
||||
|
@ -375,16 +347,28 @@ xx dw 0
|
|||
yy dw 0
|
||||
xxyy dw 3
|
||||
xxyy2 dw 3
|
||||
errordisk db 'Une erreur est apparue sur le lecteur, appuyez sur une touche ',0
|
||||
menu db 'Haut&Bas [F1/2] Secteur [F3/4] Charger/Sauver [F5/6] Mode [F7] Quit. [F8] '
|
||||
pope db 'VIEW',0
|
||||
spaces 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
|
||||
infos db 40 dup (0)
|
||||
buffer db 2048 dup (0)
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue