forked from KolibriOS/kolibrios
Changed structure of svn repository
git-svn-id: svn://kolibrios.org@109 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
@erase lang.inc
|
||||
@echo lang fix en >lang.inc
|
||||
@fasm cmd.asm cmd
|
||||
@pause
|
||||
@@ -0,0 +1,4 @@
|
||||
@erase lang.inc
|
||||
@echo lang fix ru >lang.inc
|
||||
@fasm cmd.asm cmd
|
||||
@pause
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,221 @@
|
||||
include "macros.inc"
|
||||
|
||||
initipc:
|
||||
mov eax,9
|
||||
mov ebx,prc
|
||||
mov ecx,-1
|
||||
int 0x40
|
||||
|
||||
mov ecx,eax
|
||||
loop1:
|
||||
push ecx
|
||||
|
||||
mov eax,9
|
||||
mov ebx,prc
|
||||
int 0x40
|
||||
|
||||
cmp word [prc+10],'CM'
|
||||
jne no_cmd
|
||||
cmp byte [prc+12],'D'
|
||||
jne no_cmd
|
||||
|
||||
mov ebx,[prc+30]
|
||||
mov dword [cmdpid],ebx
|
||||
|
||||
mov dword [cmdnumb],ecx
|
||||
|
||||
no_cmd:
|
||||
pop ecx
|
||||
loop loop1
|
||||
|
||||
cmp dword [cmdpid],0
|
||||
jne no_exit
|
||||
|
||||
jmp exit
|
||||
|
||||
no_exit:
|
||||
mov eax,60
|
||||
mov ebx,2
|
||||
mov ecx,dword [cmdpid]
|
||||
mov edx,printf
|
||||
mov esi,4
|
||||
int 0x40
|
||||
|
||||
call initcmd
|
||||
|
||||
waitcmdinit:
|
||||
mov eax,40
|
||||
mov ebx,01000000b
|
||||
int 0x40
|
||||
|
||||
mov eax,23
|
||||
mov ebx,100
|
||||
int 0x40
|
||||
|
||||
cmp eax,7
|
||||
je cmd_ok
|
||||
|
||||
jmp exit
|
||||
|
||||
cmd_ok:
|
||||
cmp byte [ipcb+16],'.'
|
||||
jne exit
|
||||
|
||||
mov eax,18
|
||||
mov ebx,3
|
||||
mov ecx,dword [cmdnumb]
|
||||
int 0x40
|
||||
|
||||
ret
|
||||
|
||||
pause1:
|
||||
mov eax,5
|
||||
mov ebx,1
|
||||
int 0x40
|
||||
ret
|
||||
|
||||
exit:
|
||||
mov eax,-1
|
||||
int 0x40
|
||||
|
||||
cls:
|
||||
mov eax,60
|
||||
mov ebx,2
|
||||
mov ecx,dword [cmdpid]
|
||||
mov edx,ipccls
|
||||
mov esi,4
|
||||
int 0x40
|
||||
|
||||
call pause1
|
||||
|
||||
ret
|
||||
|
||||
print:
|
||||
mov ecx,84
|
||||
loopprt:
|
||||
mov edi,stripc
|
||||
add edi,ecx
|
||||
mov esi,fill_symbol
|
||||
movsb
|
||||
|
||||
loop loopprt
|
||||
|
||||
cld
|
||||
mov ecx,4
|
||||
mov edi,stripc
|
||||
mov esi,printf
|
||||
rep movsb
|
||||
|
||||
cld
|
||||
mov edx,79
|
||||
sub edx,eax
|
||||
mov ecx,79
|
||||
sub ecx,edx
|
||||
mov edi,stripc+4
|
||||
mov esi,ebx
|
||||
rep movsb
|
||||
|
||||
mov eax,60
|
||||
mov ebx,2
|
||||
mov ecx,dword [cmdpid]
|
||||
mov edx,stripc
|
||||
mov esi,84
|
||||
int 0x40
|
||||
|
||||
call pause1
|
||||
|
||||
ret
|
||||
|
||||
eol:
|
||||
mov eax,60
|
||||
mov ebx,2
|
||||
mov ecx,dword [cmdpid]
|
||||
mov edx,ipceol
|
||||
mov esi,4
|
||||
int 0x40
|
||||
|
||||
call pause1
|
||||
|
||||
ret
|
||||
|
||||
initcmd:
|
||||
mov eax,60
|
||||
mov ebx,2
|
||||
mov ecx,dword [cmdpid]
|
||||
mov edx,ipckey
|
||||
mov esi,4
|
||||
int 0x40
|
||||
|
||||
mov eax,60
|
||||
mov ebx,1
|
||||
mov ecx,ipcb
|
||||
mov edx,28
|
||||
int 0x40
|
||||
|
||||
cld
|
||||
mov ecx,28
|
||||
mov edi,ipcb
|
||||
mov esi,ipcc
|
||||
rep movsb
|
||||
|
||||
ret
|
||||
|
||||
getkey:
|
||||
call initcmd
|
||||
|
||||
waitagain:
|
||||
mov eax,40
|
||||
mov ebx,01000000b
|
||||
int 0x40
|
||||
|
||||
mov eax,10
|
||||
int 0x40
|
||||
|
||||
cmp eax,7
|
||||
jne waitagain
|
||||
|
||||
mov edi,key
|
||||
mov esi,ipcb+16
|
||||
movsb
|
||||
|
||||
ret
|
||||
|
||||
endipc:
|
||||
mov eax,60
|
||||
mov ebx,2
|
||||
mov ecx,dword [cmdpid]
|
||||
mov edx,ipcend
|
||||
mov esi,4
|
||||
int 0x40
|
||||
|
||||
jmp exit
|
||||
|
||||
cmdpid dd 0
|
||||
cmdnumb dd 0
|
||||
|
||||
printf db '~ppp'
|
||||
ipceol db '~lll'
|
||||
ipcend db '~eee'
|
||||
ipccls db '~ccc'
|
||||
ipckey db '~kkk'
|
||||
|
||||
key db 0
|
||||
|
||||
ipcb:
|
||||
db 0
|
||||
db 0,0,0
|
||||
dd 8
|
||||
times 20 db 0
|
||||
|
||||
ipcc:
|
||||
db 0
|
||||
db 0,0,0
|
||||
dd 8
|
||||
times 20 db 0
|
||||
|
||||
stripc: times 84 db 0
|
||||
|
||||
fill_symbol db 0
|
||||
|
||||
prc: times 52 db 0
|
||||
|
||||
@@ -0,0 +1,266 @@
|
||||
; new application structure
|
||||
macro meos_app_start
|
||||
{
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01'
|
||||
dd 0x01
|
||||
dd __start
|
||||
dd __end
|
||||
dd __memory
|
||||
dd __stack
|
||||
|
||||
if used __params & ~defined __params
|
||||
dd __params
|
||||
else
|
||||
dd 0x0
|
||||
end if
|
||||
|
||||
dd 0x0
|
||||
}
|
||||
MEOS_APP_START fix meos_app_start
|
||||
|
||||
macro code
|
||||
{
|
||||
__start:
|
||||
}
|
||||
CODE fix code
|
||||
|
||||
macro data
|
||||
{
|
||||
__data:
|
||||
}
|
||||
DATA fix data
|
||||
|
||||
macro udata
|
||||
{
|
||||
if used __params & ~defined __params
|
||||
__params:
|
||||
db 0
|
||||
__end:
|
||||
rb 255
|
||||
else
|
||||
__end:
|
||||
end if
|
||||
__udata:
|
||||
}
|
||||
UDATA fix udata
|
||||
|
||||
macro meos_app_end
|
||||
{
|
||||
align 32
|
||||
rb 2048
|
||||
__stack:
|
||||
__memory:
|
||||
}
|
||||
MEOS_APP_END fix meos_app_end
|
||||
|
||||
|
||||
; macro for defining multiline text data
|
||||
struc mstr [sstring]
|
||||
{
|
||||
forward
|
||||
local ssize
|
||||
virtual at 0
|
||||
db sstring
|
||||
ssize = $
|
||||
end virtual
|
||||
dd ssize
|
||||
db sstring
|
||||
common
|
||||
dd -1
|
||||
}
|
||||
|
||||
|
||||
; strings
|
||||
macro sz name,[data] { ; from MFAR [mike.dld]
|
||||
common
|
||||
if used name
|
||||
label name
|
||||
end if
|
||||
forward
|
||||
if used name
|
||||
db data
|
||||
end if
|
||||
common
|
||||
if used name
|
||||
.size = $-name
|
||||
end if
|
||||
}
|
||||
|
||||
macro lsz name,[lng,data] { ; from MFAR [mike.dld]
|
||||
common
|
||||
if used name
|
||||
label name
|
||||
end if
|
||||
forward
|
||||
if (used name)&(lang eq lng)
|
||||
db data
|
||||
end if
|
||||
common
|
||||
if used name
|
||||
.size = $-name
|
||||
end if
|
||||
}
|
||||
|
||||
|
||||
|
||||
; easy system call macro
|
||||
macro mpack dest, hsrc, lsrc
|
||||
{
|
||||
if (hsrc eqtype 0) & (lsrc eqtype 0)
|
||||
mov dest, (hsrc) shl 16 + lsrc
|
||||
else
|
||||
if (hsrc eqtype 0) & (~lsrc eqtype 0)
|
||||
mov dest, (hsrc) shl 16
|
||||
add dest, lsrc
|
||||
else
|
||||
mov dest, hsrc
|
||||
shl dest, 16
|
||||
add dest, lsrc
|
||||
end if
|
||||
end if
|
||||
}
|
||||
|
||||
macro __mov reg,a,b { ; mike.dld
|
||||
if (~a eq)&(~b eq)
|
||||
mpack reg,a,b
|
||||
else if (~a eq)&(b eq)
|
||||
mov reg,a
|
||||
end if
|
||||
}
|
||||
|
||||
macro mcall a,b,c,d,e,f { ; mike.dld
|
||||
__mov eax,a
|
||||
__mov ebx,b
|
||||
__mov ecx,c
|
||||
__mov edx,d
|
||||
__mov esi,e
|
||||
__mov edi,f
|
||||
int 0x40
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; optimize the code for size
|
||||
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
|
||||
|
||||
macro add arg1,arg2
|
||||
{
|
||||
if (arg2 eqtype 0)
|
||||
if (arg2) = 1
|
||||
inc arg1
|
||||
else
|
||||
add arg1,arg2
|
||||
end if
|
||||
else
|
||||
add arg1,arg2
|
||||
end if
|
||||
}
|
||||
|
||||
macro sub arg1,arg2
|
||||
{
|
||||
if (arg2 eqtype 0)
|
||||
if (arg2) = 1
|
||||
dec arg1
|
||||
else
|
||||
sub arg1,arg2
|
||||
end if
|
||||
else
|
||||
sub arg1,arg2
|
||||
end if
|
||||
}
|
||||
|
||||
macro mov arg1,arg2
|
||||
{
|
||||
if (arg1 in __regs) & (arg2 eqtype 0)
|
||||
if (arg2) = 0
|
||||
xor arg1,arg1
|
||||
else if (arg2) = 1
|
||||
xor arg1,arg1
|
||||
inc arg1
|
||||
else if (arg2) = -1
|
||||
or arg1,-1
|
||||
else if (arg2) > -128 & (arg2) < 128
|
||||
push arg2
|
||||
pop arg1
|
||||
else
|
||||
mov arg1,arg2
|
||||
end if
|
||||
else
|
||||
mov arg1,arg2
|
||||
end if
|
||||
}
|
||||
|
||||
|
||||
macro struct name
|
||||
{
|
||||
virtual at 0
|
||||
name name
|
||||
sizeof.#name = $ - name
|
||||
end virtual
|
||||
}
|
||||
|
||||
; structures used in MeOS
|
||||
struc process_information
|
||||
{
|
||||
.cpu_usage dd ? ; +0
|
||||
.window_stack_position dw ? ; +4
|
||||
.window_stack_value dw ? ; +6
|
||||
.not_used1 dw ? ; +8
|
||||
.process_name rb 12 ; +10
|
||||
.memory_start dd ? ; +22
|
||||
.used_memory dd ? ; +26
|
||||
.PID dd ? ; +30
|
||||
.x_start dd ? ; +34
|
||||
.y_start dd ? ; +38
|
||||
.x_size dd ? ; +42
|
||||
.y_size dd ? ; +46
|
||||
.slot_state dw ? ; +50
|
||||
rb (1024-52)
|
||||
}
|
||||
struct process_information
|
||||
|
||||
struc system_colors
|
||||
{
|
||||
.frame dd ?
|
||||
.grab dd ?
|
||||
.grab_button dd ?
|
||||
.grab_button_text dd ?
|
||||
.grab_text dd ?
|
||||
.work dd ?
|
||||
.work_button dd ?
|
||||
.work_button_text dd ?
|
||||
.work_text dd ?
|
||||
.work_graph dd ?
|
||||
}
|
||||
struct system_colors
|
||||
|
||||
|
||||
; constants
|
||||
|
||||
; events
|
||||
EV_IDLE = 0
|
||||
EV_TIMER = 0
|
||||
EV_REDRAW = 1
|
||||
EV_KEY = 2
|
||||
EV_BUTTON = 3
|
||||
EV_EXIT = 4
|
||||
EV_BACKGROUND = 5
|
||||
EV_MOUSE = 6
|
||||
EV_IPC = 7
|
||||
EV_STACK = 8
|
||||
|
||||
; event mask bits for function 40
|
||||
EVM_REDRAW = 1b
|
||||
EVM_KEY = 10b
|
||||
EVM_BUTTON = 100b
|
||||
EVM_EXIT = 1000b
|
||||
EVM_BACKGROUND = 10000b
|
||||
EVM_MOUSE = 100000b
|
||||
EVM_IPC = 1000000b
|
||||
EVM_STACK = 10000000b
|
||||
@@ -0,0 +1,381 @@
|
||||
CMD - Èíòåðïðåòàòîð êîìàíäíîé ñòðîêè äëÿ Menuet
|
||||
Íàïèñàíî by Chemist dmitry_gt@tut.by
|
||||
|
||||
Âåðñèÿ 0.27
|
||||
|
||||
Ðóññêèé òåêñò íåìíîãî ïîíèæå.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
CMD - Command Line Interpreter for Menuet
|
||||
Copyleft Chemist - dmitry_gt@tut.by
|
||||
|
||||
Version 0.27
|
||||
|
||||
As my english is not well, I will tell a few words about this
|
||||
program. It supports 14 commands, such as cp (copy file),
|
||||
rn (rename file), ps (process list), kill (kill process) etc.
|
||||
You can type 'help' after starting this shell to examine with
|
||||
other commands. Also it uses several special symbols, such as
|
||||
&, /, . and +. Use & sumbol to enter params. For example,
|
||||
type tinypad&cmd.asm to open cmd.asm file in tinypad editor.
|
||||
/ symbol is used to run special command scripts for CMD.
|
||||
It's syntax is: /filename without extension (For example,
|
||||
type /autoexec to execute autoexec.cmd file for CMD). And +
|
||||
symbol is used in cp and rn commands. You must type
|
||||
cp example.asm+example.bak to copy example.asm file to
|
||||
example.bak. Use dot to launch program, if CMD command and
|
||||
other external command match. For example, type help for
|
||||
'help' command or type .help to run 'help' program.
|
||||
|
||||
This shell supports executeing special command
|
||||
scripts (something like .BAT files in MS-DOS). This files
|
||||
have an .CMD extinsion and u must use / symbol to execute it.
|
||||
U can use any CMD commands and filenames in this scripts.
|
||||
But you can't run other scripts from any CMD script (/ symbol).
|
||||
I recommed to use tipypad editor to edit this scripts and do
|
||||
not leave spaces and other symbols after commands in the script
|
||||
file, because it's executeing is not very developed yet.
|
||||
And it's strongly recommended to use ends command in the end
|
||||
of the script, because there are some problems with redrawing
|
||||
the window after executing scripts without this command.
|
||||
Every time when you launch CMD autoexec.cmd file automatically
|
||||
executes. You can edit or delete this file if you want.
|
||||
|
||||
This version of CMD shell supports IPC. It mean, than you can
|
||||
write your own programs for this shell. Look at .ASM files in
|
||||
the Examples directory in this archive. I think that you will
|
||||
understand them without any difficulties. Do not forget, that
|
||||
you need CMDIPC.ASM file to compile this sources. It's
|
||||
recommended to compile it with MACROS.INC file (included in
|
||||
this archieve) to make their size smaller.
|
||||
|
||||
And now about some bugs etc.
|
||||
|
||||
----------------------------
|
||||
|
||||
I've noticed, that there are some difficulties with files with
|
||||
1 or 2 symbols in extension. I recommend do not use such files
|
||||
not only in CMD, but almost in every programs in MeOS. It's
|
||||
possible to create such file in tinypad, and then (in MS-DOS or
|
||||
Windows) Scandisk will find errors in filenames etc. CMD do
|
||||
not support properly such filenames now.
|
||||
|
||||
In CMDIPC.INC and CMD.ASM I used 5-th function (pause), because
|
||||
I need it when CMD communicates with IPC programs. It's
|
||||
even possible, that it will not enough 1/100 sec. on slow PC's,
|
||||
because CMD need this time to finish IPC-command from other
|
||||
IPC-program. U can change ebx value in CMDIPC.ASM in pause1:
|
||||
if you want. But it slows communication betwen CMD and
|
||||
IPC-programs for CMD. I hope, that you understand my words. :)
|
||||
|
||||
Now (in this version) you can launch only one CMD shell.
|
||||
Because it's difficult to make communication betwen several
|
||||
copyes of CMD in memory and IPC-programs. I will solve this
|
||||
problem in future.
|
||||
|
||||
I've tested this shell only on Ivan Poddubny's russian
|
||||
distributive. Also I recommend you to use it. :) CMD shell
|
||||
is included into this distributive (but possible not it's
|
||||
final version).
|
||||
|
||||
Source code of this program is not optimized yet. I have such
|
||||
manner of programming from my childhood that my source code
|
||||
is not very "compact"
|
||||
|
||||
etc. ;-)
|
||||
|
||||
And now other information:
|
||||
--------------------------
|
||||
|
||||
I do not want CMD design to change. I like white symbols on
|
||||
the black background. If you want to change the source and
|
||||
redistribute it, please, do not change it's design. :)
|
||||
|
||||
If you will find some bugs or you have some wishes (or even you
|
||||
correct some mistakes in my english texts) -
|
||||
email me: dmitry_gt@tut.by
|
||||
|
||||
And this program is distributed "as is". Use it on your own
|
||||
risk. ;-)
|
||||
|
||||
And again - my English is not well. :)
|
||||
|
||||
That's all!
|
||||
|
||||
19.06.2004,
|
||||
Chemist
|
||||
|
||||
Now russian text :)
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Äîñòóïíûå êîìàíäû:
|
||||
|
||||
ls [filename] - âûâîä ñïèñêà ôàéëîâ. Åñëè ïîñëå êîìàíäû
|
||||
óêàçàòü èìÿ ôàéëà, òî êîìàíäà ïðîâåðèò åãî
|
||||
íà íàëè÷èå.
|
||||
|
||||
cp [source_file+destination_file] - êîìàíäà äëÿ
|
||||
êîïèðîâàíèÿ ôàéëîâ. Ïðîâåðÿåò ôàéëû íà
|
||||
íàëè÷èå, è â ñëó÷àå îøèáêè âûâîäèò
|
||||
ñîîòâåòñòâóþùèå ñîîáùåíèÿ.
|
||||
|
||||
rn [source_file+destination_file] - êîìàíäà äëÿ
|
||||
ïåðåèìåíîâàíèÿ ôàéëîâ. Òàê æå
|
||||
ïðîâåðÿåò ôàéëû íà íàëè÷èå, è â
|
||||
ñëó÷àå îøèáêè âûâîäèò ñîîòâåòñòâóþùèå
|
||||
ñîîáùåíèÿ.
|
||||
|
||||
ps - âûâîä èíôîðìàöèè î ïðîöåññàõ â ñèñòåìå.
|
||||
|
||||
kill - ïðåðâàòü ïðîöåññ â ñèñòåìå. Âíèìàíèå,
|
||||
ïîñëå êîìàíäû ñëåäóåò ââîäèòü 4-õ
|
||||
çíà÷íûé íîìåð ïðîöåññà, à íå PID. Íîìåð
|
||||
ïðîöåññà óêàçàí â ïîñëåäíåé êîëîíêå ïðè
|
||||
âûçîâå êîìàíäû ps.
|
||||
|
||||
help - âûâîä êðàòêîé ñïðàâî÷íîé èíôîðìàöèè.
|
||||
|
||||
ver - âûâîä èñïîëüçóåìîé âåðñèè èíòåðïðåòàòîðà.
|
||||
|
||||
cls - î÷èñòêà ýêðàíà.
|
||||
|
||||
exit - âûõîä èç èíòåðïðåòàòîðà.
|
||||
|
||||
del [filename] - óäàëèòü ôàéë ñ ðàìäèñêà. Ïðè îòñóòñòâèè
|
||||
çàïðàøèâàåìîãî ôàéëà áóäåò âûâåäåíî
|
||||
ñîîòâåòñòâóþùèå ñîîáùåíèå îá îøèáêå.
|
||||
|
||||
shutdown - çàâåðøèòü ðàáîòó ñèñòåìû.
|
||||
|
||||
pause - îæèäàòü íàæàòèå êëàâèøè. Èñïîëüçóåòñÿ äëÿ
|
||||
"âçàèìîäåéñòâèÿ" ïîëüçîâàòåëÿ ñ êîìàíäíûìè
|
||||
ñêðèïòàìè äëÿ êîíñîëè (èíòåðïðåòàòîðà).
|
||||
Íàïðèìåð, ìîæíî èñïîëüçîâàòü äàííûé ñêðèïò
|
||||
|
||||
echo Do you want to delete cmd.asm?
|
||||
pause
|
||||
del cmd.asm
|
||||
|
||||
äëÿ òîãî, ÷òîáû ïîèíòåðåñîâàòüñÿ ìíåíèåì
|
||||
ïîëüçîâàòåëÿ, õî÷åò ëè îí óäàëèòü ôàéë cmd.asm
|
||||
èëè ïðåðâàòü ðàáîòó ñêðèïòà.
|
||||
|
||||
pause >nul Òî æå ñàìîå, òîëüêî áåç âûâîäà ñòðîêè
|
||||
'Press ane key to continue (ESC - cancel)'
|
||||
|
||||
echo [text] - âûâîä òåêñòà íà ýêðàí. Ïðåäíàçíà÷åíà äëÿ
|
||||
ïîäà÷è ïîëüçîâàòåëþ èíôîðìàöèè èç êîìàíäíîãî
|
||||
ñêðèïòà. Åñëè ââåñòè êîìàíäó echo áåç òåêñòà,
|
||||
òî ýòî ïðîñòî âûçîâåò ïåðåõîä íà ñëåäóþùóþ
|
||||
ñòðîêó.
|
||||
|
||||
ends - êîìàíäà, äîñòóïíàÿ òîëüêî èç èñïîëíÿåìûõ
|
||||
ñêðèïòîâ. Ñëóæèò äëÿ èõ êîððåêòíîãî çàâåðøåíèÿ,
|
||||
ò.ê. èíîãäà êîìàíäíûå ñêðèïòû, ó êîòîðûõ â
|
||||
êîíöå ñòîÿëè íåíóæíûå ïðîáåëû èëè ñèìâîëû EOL,
|
||||
âûçûâàëè ïðîáëåìû ñ ïåðåðèñîâêîé îêíà. Ñêîðåå
|
||||
âñåãî ýòà êîìàíäà ïðèñóòñòâóåò â êîíñîëè
|
||||
âðåìåííî è áóäåò óáðàíà ïîñëå ðåøåíèÿ ýòîé
|
||||
ïðîáëåìû.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Óïðàâëÿþùèå ñèìâîëû:
|
||||
|
||||
/[êîìàíäíûé ñêðèïò] - ïðåäíàçíà÷åí äëÿ âûçîâà íà èñïîëíåíèå
|
||||
êîìàíäíîãî ñêðèïòà èç êîíñîëè. Íå ìîæåò
|
||||
èñïîëüçîâàòüñÿ â íåïîñðåäñòâåííî â ñàìèõ
|
||||
êîìàíäíûõ ñêðèïòàõ. Åñëè ðàñøèðåíèå èñïîë-
|
||||
íÿåìîãî ñêðèïòà .cmd, òî åãî óêàçûâàòü
|
||||
íåîáÿçàòåëüíî.
|
||||
|
||||
& - äàííûé ñèìâîë èñïîëüçóåòñÿ äëÿ ïåðåäà÷è âûçûâàåìîé
|
||||
ïðîãðàììå ïàðàìåòðîâ. Íàïðèìåð, êîìàíäà tinypad&cmd.asm
|
||||
ïåðåäàñò ïðîãðàììå tinypad ïàðàìåòð cmd.asm,
|
||||
ñîîòâåòñòâåííî, tinypad îòêðîåò ôàéë cmd.asm.
|
||||
|
||||
+ - ðàçäåëÿåò èìåíà èñõîäíîãî è ðåçóëüòèðóþùåãî ôàéëîâ â
|
||||
êîìàíäàõ cp è rn.
|
||||
|
||||
. - çàïóñêàåò óêàçàííóþ ïîñëå òî÷êè ïðîãðàììó, äàæå åñëè îíà
|
||||
ñîâïàäàåò ñ êîìàíäîé CMD. Íàïðèìåð, help - âûïîëíèòü
|
||||
êîìàíäó 'help', íî .help - çàïóñòèòü âíåøíþþ ïðîãðàììó
|
||||
'help' (õîòÿ òàêîé ïîêà âðîäå è íåòó :).
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Íàâèãàöèÿ ïî êîíñîëè:
|
||||
|
||||
Äëÿ ðåäàêòèðîâàíèÿ êîìàíäíîé ñòðîêè èñïîëüçóþòñÿ êëàâèøè ESC,
|
||||
BACKSPACE. ESC - äëÿ óäàëåíèÿ âñåé êîìàíäíîé ñòðîêè,
|
||||
BACKSPACE - äëÿ óäàëåíèÿ ïîñëåäíåãî ââåäåííîãî ñèìâîëà. Ïî
|
||||
ìîåìó ìíåíèþ, èñïîëüçîâàíèå òàêèõ êëàâèø, êàê HOME, END, ARROW
|
||||
KEY etc. íå èìååò ñìûñëà, ò.ê. ââîäèìûå êîìàíäû ñëèøêîì
|
||||
ïðîñòû è íå òðåáóþò ïîäðîáíîãî ðåäàêòèðîâàíèÿ. Ïîýòîìó ÿ
|
||||
îñòàâèë âñå ïðèìåðíî òàê, êàê áûëî â MS-DOS 6.22.
|
||||
|
||||
Êëàâèøà UPARROW èñïîëüçóåòñÿ äëÿ ïîâòîðà ïîñëåäíåé ââåäåííîé
|
||||
êîìàíäû.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Èñïîëüçîâàíèå IPC âî âíåøíèõ ïðîãðàììàõ:
|
||||
|
||||
Âû ìîæåòå ïèñàòü ïðîãðàììû, âçàèìîäåéñòâóþùèå ñ CMD ÷åðåç IPC.
|
||||
 îñíîâíîì, ÿ ïîëàãàþ, ýòî ìîæåò ïðèãîäèòñÿ äëÿ íàïèñàíèÿ
|
||||
êîíñîëüíûõ ïðèëîæåíèé äëÿ ñàìîãî CMD (õîòÿ âîçìîæíî è äðóãîå).
|
||||
|
||||
Äëÿ ýòîãî, ê âàøåé ïðîãðàììå âàì íåîáõðäèìî ïîäêëþ÷èòü ôàéë
|
||||
CMDIPC.INC (Åñòåñòâåííî, îò ýòîãî ðàçìåð ïðîãðàììû ïîñëå
|
||||
êîìïèëÿöèè íåñêîëüêî óâåëè÷èòñÿ). Ïîñëå ýòîãî âàì ñòàíóò
|
||||
äîñòóïíû 6 ôóíêöèè IPC, êîòîðûå âû ìîæåòå âûçûâàòü ñ ïîìîùüþ
|
||||
call èç ñâîåé æå ïðîãðàììû. Âîò èõ îïèñàíèå:
|
||||
|
||||
---------------------------------------------------------------
|
||||
|
||||
initipc - èíèöèàëèçàöèÿ IPC äëÿ ðàáîòû ñ CMD.
|
||||
|
||||
call initipc - èíèöèàëèçèðîâàòü IPC äëÿ ðàáîòû ñ CMD.
|
||||
|
||||
ÂÍÈÌÀÍÈÅ! Èñïîëüçóéòå â ñàìîì íà÷àëå ïðîãðàììû. CMD áóäåò æäàòü
|
||||
òîëüêî 10/100 ñåêóíäû äëÿ òîãî, ÷òîáû ïîëó÷èòü
|
||||
ñîîáùåíèå ïî IPC (õîòÿ ýòîãî âïîëíå äîñòàòî÷íî).
|
||||
|
||||
---------------------------------------------------------------
|
||||
|
||||
print - âûâåñòè ñòðîêó â ýêðàí CMD.
|
||||
|
||||
mov eax,strlen
|
||||
mov ebx,string
|
||||
call print
|
||||
|
||||
Ãäå strlen - äëèíà ñòðîêè â áàéòàõ,
|
||||
string - óêàçàòåëü íà ñòðîêó.
|
||||
|
||||
call print - âûâîä ñòðîêè.
|
||||
|
||||
---------------------------------------------------------------
|
||||
|
||||
cls - î÷èñòèòü ýêðàí CMD.
|
||||
|
||||
call cls - âûçâàòü î÷èñòêó ýêðàíà.
|
||||
|
||||
---------------------------------------------------------------
|
||||
|
||||
eol - ïðîïóñòèòü ñòðîêó.
|
||||
|
||||
call eol - âûçâàòü ïðîïóñ ñòðîêè.
|
||||
|
||||
---------------------------------------------------------------
|
||||
|
||||
getkey - ñ÷èòàòü êîä íàæàòîé êëàâèøè â CMD.
|
||||
|
||||
call getkey - îæèäàòü íàæàòèÿ êëàâèøè è ñ÷èòàòü åå êîä.
|
||||
|
||||
Âûâîä: byte [key] - êîä íàæàòîé êëàâèøè.
|
||||
|
||||
ÂÍÈÌÀÍÈÅ: Ïîñëå çàïóñêà ïðîãðàììû èç CMD, êîòîðàÿ
|
||||
ïîääåðæèâàåò IPC, òî îêíî CMD àêòèâèðóåòñÿ ñðàçó
|
||||
ïîñëå çàïóñêà ïðîãðàììû. Ïîýòîìó, óæå íå íóæíî
|
||||
òûêàòü ìûøêîé íà îêíî äëÿ òîãî, ÷òîáû ââåñòè
|
||||
÷òî-íèáóäü â êîíñîëü, êàê ýòî áûëî â ïðîøëûõ âåðñèÿõ.
|
||||
|
||||
---------------------------------------------------------------
|
||||
|
||||
endipc - Çàâåðøèòü ðàáîòó IPC-ïðîãðàììû.
|
||||
|
||||
call endipc - çàâåðøèòü ïðîãðàììó.
|
||||
|
||||
---------------------------------------------------------------
|
||||
|
||||
Âîîáùåì, âû ìîæåòå ïîñìîòðåòü ôàéë HELLO.ASM, êîòîðûé ëåæèò â
|
||||
ýòîì àðõèâå. Òàì âñå äîëæíî áûòü ïîíÿòíî. Åñòåñòâåííî, íèêòî
|
||||
âàì íå ìåøàåò èñïîëüçîâàòü ïàðàìåòðû â IPC-ïðîãðàììàõ äëÿ CMD.
|
||||
Ñìîòðèòå ïðèìåð PARAM.ASM.
|
||||
|
||||
Êñòàòè, â ñàìîì CMD è â CMDIPC.INC èñïîëüçóåòñÿ 5-ÿ ôóíêöèÿ
|
||||
(ïàóçà) äëÿ òîãî, ÷òîáû äàòü âðåìÿ äðóã-äðóãó âûïîëíèòü
|
||||
òðåáóåìûå îò íèõ ÷åðåç IPC äåéñòâèÿ. È åñëè ó âàñ êîìï ñèëüíî
|
||||
òîðìîçíþ÷èé, òî âîçìîæíî, âûäåëåííîãî âðåìåíè áóäåò
|
||||
íåäîñòàòî÷íî. Ýòî íå ñëîæíî ïîëå÷èòü, óâåëè÷èâ çíà÷åíèå
|
||||
ebx ïåðåä âûçîâîì ôóíêöèè ÿäðà (eax,5 - ïàóçà). Â ïðîòèâíîì
|
||||
ñëó÷àå ìîãóò ïîâûëåòàòü âûçîâû IPC èëè ÷òî-íèáóäü âîîáùå
|
||||
çàâèñíåò (ïåðâîå - âåðîÿòíåå). Íî, åñòåñòâåííî, íè÷åãî
|
||||
ñòðàøíîãî â ýòîì íåò. ;-)
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Èçâåñòíûå îøèáêè è íåäîðàáîòêè:
|
||||
|
||||
Ïðè ðàáîòå ñ êîíñîëüþ CMD è ñèñòåìîé MenuetOS âîîáùå, ÿ
|
||||
çàìåòèë,÷òî íåêîòîðûå ñîçäàííûå â Menuet ôàéëû íå
|
||||
âîñïðèíèìàþòñÿ MS-DOS. Ýòî â ïåðâóþ î÷åðåäü êàñàåòñÿ ôàéëîâ,
|
||||
ñ èìåíàìè òèïà 1.1, b.bb è ò.ä. Ïîýòîìó âîçìîæíû ðàçëè÷íûå
|
||||
òóïèêîâûå ñèòóàöèè ïðè âçàèìîäåéñòâèè ñîçäàííûõ èëè
|
||||
êîïèðîâàííûõ ôàéëîâ â MeOS ñ âîñïðèÿòèåì èõ â MS-DOS è Windows
|
||||
ñèñòåìàõ. È êàñàåòñÿ ýòî íå òîëüêî CMD, íî, íàïðèìåð, è
|
||||
òèíèïàäà. Ïîýòîìó ÿ ðåêîìåíäóþ èñïîëüçîâàòü â Menuet ôàéëû èëè
|
||||
áåç ðàñøèðåíèÿ âîîáùå, èëè ñ ïîëíûì ðàñøèðåíèåì (çàíèìàþùèì
|
||||
âñå 3 áàéòà, ò.å. filename.ext, à íå filename.ex). Â ïðèíöèïå
|
||||
ìåõàíèçì êîìàíä LS, LS èìÿ_ôàéëà, CP, DEL è RN èçìåíåí, íî
|
||||
ïîêà íåò ñîâìåñòèìîñòè ìåæäó ðàçëè÷íûìè ïðîãðàììàìè,
|
||||
ðàáîòàþùèìè ñ ôàéëàìè â Menuet. Ò.å. äàæå âîçìîæíî,
|
||||
÷òî âû íå ñìîæåòå ðàáîòàòü â êîíñîëè ñ ôàéëîì, ñîçäàííîì â
|
||||
òèíèïàäå, à ïîòîì skandisk âîîáùå âûäàñò îøèáêó ïðè ïðîâåðêå
|
||||
ôàéëîâîé ñòðóêòóðû äèñêåòû, êîãäà íàòêíåòñÿ íà ýòîò ôàéë, è îí
|
||||
íå áóäåò ÷èòàåì èç windows èëè MS-DOS.  ïðèíöèïå, ÿ òåñòèðîâàë
|
||||
ïðîãðàììó òîëüêî íà ìîåì PC, ïîýòîìó âîçìîæíî âñ¸. :)
|
||||
|
||||
P.S. Êîìàíäà LS ïîêàæåò ïîëíîñòüþ âñå ôàéëû íà ðàìäèñêå, â òîì
|
||||
÷èñëå òå, êîòîðûå ñîçäàíû íåïðàâèëüíî è íå áóäóò ðàáîòàòü â
|
||||
MS-DOS, LS èìÿ_ôàéëà è ò.ä. ìîæåò óæå èõ íå çàìåòèòü. Â
|
||||
ïðèíöèïå òàêàÿ æå êàðòèíà áóäåò è â windows. Ò.å. âû ñìîæåòå
|
||||
ëèöåçðåòü èìåíà ýòèõ ôàéëîâ, íàïðèìåð, â windows commander'e,
|
||||
íî áëîêíîò èõ íå îòêðîåò.
|
||||
|
||||
Äëÿ òîãî, ÷òîáà äàòü âðåìÿ CMD îáðàáîòàòü IPC-çàïðîñ, â
|
||||
CMDIPC.ASM ìíå ïðèøëîñü èñïîëüçîâàòü 5-þ ôóíêöèþ (ïàóçà),
|
||||
ïîýòîìó íåìíîãî çàìåäëÿåòñÿ âðåìÿ ïîëó÷åíèÿ íîâûõ IPC-çàïðîñîâ.
|
||||
|
||||
 äàííîé âåðñèè âû íå ìîæåòå çàïóñêàòü áîëüøå îäíîãî
|
||||
òåðìèíàëà CMD îäíîâðåìåííî. Ýòî ñâÿçàíî ñ òåì, ÷òî ÿ åùå íå
|
||||
äîáàâèë âîçìîæíîñòè ðàáîòû íåñêîëüêèõ êîíñîëåé ñ
|
||||
IPC-ïðîãðàììàìè îäíîâðåìåííî.
|
||||
|
||||
Êîä ïðîãðàììû íà äàííûé ìîìåíò íåîïòèìèçèðîâàí.
|
||||
|
||||
etc. :)
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Âìåñòå ñ ïðîãðàììîé ïîñòàâëÿåòñÿ ôàéë autoexec.cmd, êîòîðûé
|
||||
àâòîìàòè÷åñêè èñïîëíÿåòñÿ ïðè çàïóñêå èíòåðïðåòàòîðà. Åãî
|
||||
ìîæíî óäàëèòü ïðè íåíàäîáíîñòè.
|
||||
|
||||
Äëÿ âûçîâà ïðèìåðà èñïîëíÿåìîãî ñêðèïðà íàáåðèòå /example
|
||||
|
||||
Âñâÿçè ñ ìîëîäîñòüþ è ÷àñòè÷íîé íåäîðàáîòàííîñòè ñàìîé
|
||||
ïðîãðàììû âîçìîæíû îøèáêè â å¸ ðàáîòå, î êîòîðûõ ïðîñüáà
|
||||
ñîîáùàòü íà dmitry_gt@tut.by
|
||||
|
||||
 áëèæàéøåå âðåìÿ íå ïëàíèðóåòñÿ íîâûõ íîâîââåäåíèé â êîíñîëü,
|
||||
ò.ê. íà å¸ äîðàáîòêó óõîäèò ìíîãî âðåìåíè è ÿ ñ÷èòàþ, ÷òî îíà
|
||||
è íà äàííûé ìîìåíò áîëåå-ìåíåå ôóíêöèîíàëüíà (â ìàñøòàáàõ
|
||||
MenuetOS, êîíå÷íî). ß ñ÷èòàþ, ÷òî ðàöèîíàëüíåå áóäåò ñêîíöåíò-
|
||||
ðèðîâàòüñÿ íà óñòàíåíèè áàãîâ è íåäîðàáîòîê â ïðîãðàììå.
|
||||
|
||||
Åñëè êòî-íèáóäü ïîæåëàåò äîäåëàòü ïðîãðàììó, òî ÿ áû ïîïðîñèë
|
||||
íå èçìåíÿòü å¸ äèçàéí (ìíå îí íðàâèòñÿ ;-) ).
|
||||
|
||||
Î âñåõ îøèáêàõ ( òîì ÷èñëå ãðàììàòè÷åñêèõ â àíãëèéñêîì òåêñòå)
|
||||
ïðîñüáà ñîîáùàòü íà dmitry_gt@tut.by
|
||||
|
||||
È åùå çàáûë ñêàçàòü, òî ïðîãðàììà ðàñïîñòðàíÿåòñÿ "as is", è
|
||||
àâòîð íå íåñåò îòâåòñòâåííîñòè çà âîçìîæíûé óùåðá, ïðè÷èíåííûé
|
||||
ïðîãðàììîé.
|
||||
|
||||
19.06.2004,
|
||||
Chemist
|
||||
|
||||
Reference in New Issue
Block a user