feat: ajout de la commande kill Utilisation de la bibliotheque video.lib plutot que l'int 47h Ajout de l'aide aux commandes Colorisation des commandes internes

This commit is contained in:
Nicolas Hordé 2004-11-30 19:30:30 +00:00
parent 8025aca688
commit 1fbe390e3e
1 changed files with 319 additions and 289 deletions

View File

@ -47,7 +47,7 @@ waitchar:
add di,cx add di,cx
jmp waitchar jmp waitchar
norr: norr:
cmp al,0Dh ;entrée cmp al,0dh ;entrée
je entere je entere
cmp al,08h ;backspace cmp al,08h ;backspace
je backspace je backspace
@ -161,7 +161,7 @@ noaddext:
xor bp,bp xor bp,bp
jmp replay jmp replay
reallyerror: reallyerror:
push offset Error_Syntax push offset error_syntax
call [print] call [print]
push word ptr cs: [bp-8] push word ptr cs: [bp-8]
call [print] call [print]
@ -171,43 +171,48 @@ errorprec:
call [print] call [print]
jmp replay jmp replay
Code_Exit: code_exit:
pop ax pop ax
retf retf
Code_Version: code_version:
push offset Version_Text push offset version_text
call [print] call [print]
ret ret
Version_Text db 'Cos 2000 version 1.2Fr par Nico',0 version_text db 'Cos 2000 version 1.4Fr par \c04MrNop',0
Code_Cls: code_cls:
mov ah,2 mov ah,2
int 47h int 47h
ret ret
Code_Reboot: code_reboot:
push 0FFFFh push 0ffffh
push 00000h push 00000h
db 0CBH retf
Code_Command: code_command:
push offset def
call [print]
mov bx,offset commands mov bx,offset commands
showalls: showalls:
mov si,[bx]
add bx,8 add bx,8
cmp si,0 cmp word ptr [bx],0
je endoff je endoff
push si push word ptr [bx+4]
push word ptr [bx+6]
push word ptr [bx]
push offset commandes
call [print] call [print]
mov ah,6
int 47h
jmp showalls jmp showalls
endoff: endoff:
ret 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 mov cx,0
call gettypeditem0 call gettypeditem0
mov ah,0 mov ah,0
@ -218,9 +223,7 @@ Code_Mode:
int 47h int 47h
ret ret
present db 'Le volume insere est nomme %0, Numero de serie : %hD\l\l',0 code_dir:
nomdisque db 13 dup (0)
Code_Dir:
mov ah,12 mov ah,12
int 48h int 48h
push edx push edx
@ -236,12 +239,12 @@ mov ah,7
int 48h int 48h
jc nofiles jc nofiles
go: go:
push word ptr [di+Entries.FileAttr] push word ptr [di+entries.fileattr]
push dword ptr [di+Entries.FileSize] push dword ptr [di+entries.filesize]
push word ptr [di+Entries.FileTime] push word ptr [di+entries.filetime]
push word ptr [di+Entries.FileDate] push word ptr [di+entries.filedate]
push word ptr [di+Entries.FileTimeCrea] push word ptr [di+entries.filetimecrea]
push word ptr [di+Entries.FileDateCrea] push word ptr [di+entries.filedatecrea]
push di push di
push offset line push offset line
call [print] call [print]
@ -254,14 +257,18 @@ push ebp
push offset filess push offset filess
call [print] call [print]
ret ret
bufferentry db 32 dup (0)
line db '\c07%n %d %t %d %t %z %a\l',0
filess db '\l\l%u Fichier(s) au total\l',0
changing db 'Changement de repertoire vers ',0 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
code_cd: code_cd:
mov cx,0 mov cx,0
call gettypeditem0 call gettypeditem0
push di
push offset changing push offset changing
call [print] call [print]
mov si,di mov si,di
@ -272,8 +279,32 @@ code_cd:
call [print] call [print]
okchange: okchange:
ret ret
changing db 'Changement de repertoire vers %0\l',0
errorchanging db '\c04Impossible d''atteindre ce dossier',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: code_refresh:
mov ah,3 mov ah,3
int 48h int 48h
@ -292,13 +323,14 @@ push di
push offset present push offset present
call [print] call [print]
ret ret
errorrefreshing db '\c04Impossible de lire le support',0
errorrefreshing db '\c04Impossible de lire le support',0
extcom db '.CE',0 extcom db '.CE',0
Code_Mem: code_mem:
push offset msg push offset msg
call [print] call [print]
xor ebx,ebx
xor cx,cx xor cx,cx
listmcb: listmcb:
mov ah,4 mov ah,4
@ -311,20 +343,21 @@ inc dx
inc dx inc dx
push edx push edx
;parent ;parent
cmp gs:[MB.Reference],0 cmp gs: [mb.reference],0
je next jne next
mov dx,gs:[MB.Reference] push cs
push offset none
add bx,gs:[mb.sizes]
jmp suitemn
next:
mov dx,gs: [mb.reference]
dec dx dec dx
dec dx dec dx
push dx push dx
push offset MB.Names push offset mb.names
jmp suitemn
next:
push cs
push offset none
suitemn: suitemn:
;Resident ;Resident
cmp gs:[MB.IsResident],true cmp gs: [mb.isresident],true
jne notresident jne notresident
push offset resident push offset resident
jmp suitelistmcb jmp suitelistmcb
@ -333,21 +366,26 @@ push offset nonresident
suitelistmcb: suitelistmcb:
;taille memoire ;taille memoire
xor edx,edx xor edx,edx
mov dx,gs:[MB.Sizes] mov dx,gs: [mb.sizes]
shl edx,4 shl edx,4
push 6 push 6
push edx push edx
;nom ;nom
push gs push gs
push offset MB.Names push offset mb.names
push offset line2 push offset line2
call [print] call [print]
jmp listmcb jmp listmcb
fino: fino:
shl ebx,4
push ebx
push offset fin
call [print]
ret ret
resident db "oui",0 resident db "oui",0
nonresident db "non",0 nonresident db "non",0
line2 db "%0P\h15%w\h24%0\h30%0P\h46%hW\l",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 msg db "Plan de la memoire\l\lNom Taille Res Parent Mem\l",0
none db ".",0 none db ".",0
@ -420,85 +458,77 @@ fr: db '1', 02, '&', 02
db '\', 86, '<', 86 db '\', 86, '<', 86
db '|', 86, '>', 86 db '|', 86, '>', 86
db 00, 79h, '~', 03 db 00, 79h, '~', 03
db 00, 7Ah, '#', 04 db 00, 7ah, '#', 04
db 00, 7Bh, '{', 05 db 00, 7bh, '{', 05
db 00, 7Ch, '[', 06 db 00, 7ch, '[', 06
db 00, 7Dh, '|', 07 db 00, 7dh, '|', 07
db 00, 7Eh, '`', 08 db 00, 7eh, '`', 08
db 00, 7Fh, '\', 09 db 00, 7fh, '\', 09
db 00, 80h, '^', 10 db 00, 80h, '^', 10
db 00, 81h, '@', 11 db 00, 81h, '@', 11
db 00, 82h, ']', 12 db 00, 82h, ']', 12
db 00, 83h, '}', 13 db 00, 83h, '}', 13
db 00, 00, 00, 00 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
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 dw 0
Str_Exit db 'QUIT',0 str_exit db 'QUIT',0
Str_Version db 'VERS',0 str_version db 'VERS',0
Str_Cls db 'CLEAR',0 str_cls db 'CLEAR',0
Str_Reboot db 'REBOOT',0 str_reboot db 'REBOOT',0
Str_Command db 'CMDS',0 str_command db 'CMDS',0
Str_Mode db 'MODE',0 str_mode db 'MODE',0
Str_Dir db 'DIR',0 str_dir db 'DIR',0
Str_refresh db 'DISK',0 str_refresh db 'DISK',0
Str_cd db 'CD',0 str_cd db 'CD',0
Str_Mem db 'MEM',0 str_mem db 'MEM',0
Syn_Exit db 0 str_kill db 'KILL',0
Syn_Version db 0
Syn_Cls db 0 syn_exit db 0
Syn_Reboot db 0 syn_version db 0
Syn_Command db 0 syn_cls db 0
Syn_Mode db 'FFH',0 syn_reboot db 0
Syn_Dir db 0 syn_command db 0
Syn_refresh db 0 syn_mode db 'FFH',0
Syn_cd db '@',0 syn_dir db 0
Syn_Mem db 0 syn_refresh db 0
Help_Exit db 0 syn_cd db '@',0
Help_Version db 0 syn_mem db 0
Help_Cls db 0 syn_kill db '@',0
Help_Reboot db 0
Help_Command db 0 help_exit db 'Permet de quitter l''interpreteur',0
Help_Mode db 0 help_version db 'Affiche la version de COS',0
Help_Dir db 0 help_cls db 'Efface l''ecran',0
Help_refresh db 0 help_reboot db 'Redemarre l''ordinateur',0
Help_cd db 0 help_command db 'Affiche le detail des commandes',0
Help_Mem db 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 derror db '\c04Erreur de Syntaxe !',0
Error_Syntax db '\c04La commande ou l''executable n''existe pas ! F1 pour ',0 error_syntax db '\c04La commande ou l''executable n''existe pas ! F1 pour ',0
prompt db '\c07>',0 prompt db '\c07>',0
msginit db '\m02\e\c07\l\lInterpreteur de commande COS V1.9',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 include str0.asm
dir db 32 dup (0) dir db 32 dup (0)
buffer db 256 dup (0) buffer db 128 dup (0)
buffer2 db 256 dup (0) buffer2 db 128 dup (0)
imports: imports:
db "VIDEO.LIB::print",0 db "VIDEO.LIB::print",0