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
jmp waitchar
norr:
cmp al,0Dh ;entrée
cmp al,0dh ;entrée
je entere
cmp al,08h ;backspace
je backspace
@ -161,7 +161,7 @@ noaddext:
xor bp,bp
jmp replay
reallyerror:
push offset Error_Syntax
push offset error_syntax
call [print]
push word ptr cs: [bp-8]
call [print]
@ -171,43 +171,48 @@ errorprec:
call [print]
jmp replay
Code_Exit:
code_exit:
pop ax
retf
Code_Version:
push offset Version_Text
code_version:
push offset version_text
call [print]
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
int 47h
ret
Code_Reboot:
push 0FFFFh
code_reboot:
push 0ffffh
push 00000h
db 0CBH
retf
Code_Command:
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
push si
push word ptr [bx+4]
push word ptr [bx+6]
push word ptr [bx]
push offset commandes
call [print]
mov ah,6
int 47h
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
@ -218,9 +223,7 @@ Code_Mode:
int 47h
ret
present db 'Le volume insere est nomme %0, Numero de serie : %hD\l\l',0
nomdisque db 13 dup (0)
Code_Dir:
code_dir:
mov ah,12
int 48h
push edx
@ -236,12 +239,12 @@ mov ah,7
int 48h
jc nofiles
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 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]
@ -254,14 +257,18 @@ push ebp
push offset filess
call [print]
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:
mov cx,0
call gettypeditem0
push di
push offset changing
call [print]
mov si,di
@ -272,8 +279,32 @@ code_cd:
call [print]
okchange:
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
@ -292,13 +323,14 @@ push di
push offset present
call [print]
ret
errorrefreshing db '\c04Impossible de lire le support',0
errorrefreshing db '\c04Impossible de lire le support',0
extcom db '.CE',0
Code_Mem:
code_mem:
push offset msg
call [print]
xor ebx,ebx
xor cx,cx
listmcb:
mov ah,4
@ -311,20 +343,21 @@ inc dx
inc dx
push edx
;parent
cmp gs:[MB.Reference],0
je next
mov dx,gs:[MB.Reference]
cmp gs: [mb.reference],0
jne next
push cs
push offset none
add bx,gs:[mb.sizes]
jmp suitemn
next:
mov dx,gs: [mb.reference]
dec dx
dec dx
push dx
push offset MB.Names
jmp suitemn
next:
push cs
push offset none
push offset mb.names
suitemn:
;Resident
cmp gs:[MB.IsResident],true
cmp gs: [mb.isresident],true
jne notresident
push offset resident
jmp suitelistmcb
@ -333,21 +366,26 @@ push offset nonresident
suitelistmcb:
;taille memoire
xor edx,edx
mov dx,gs:[MB.Sizes]
mov dx,gs: [mb.sizes]
shl edx,4
push 6
push edx
;nom
push gs
push offset MB.Names
push offset mb.names
push offset line2
call [print]
jmp listmcb
fino:
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
@ -420,85 +458,77 @@ fr: db '1', 02, '&', 02
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, 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
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
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
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
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',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 256 dup (0)
buffer2 db 256 dup (0)
buffer db 128 dup (0)
buffer2 db 128 dup (0)
imports:
db "VIDEO.LIB::print",0