Changed structure of svn repository

git-svn-id: svn://kolibrios.org@109 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
heavyiron
2006-07-28 13:39:16 +00:00
parent 5aa9386dcc
commit 630234432f
673 changed files with 20707 additions and 28013 deletions
+4
View File
@@ -0,0 +1,4 @@
@erase lang.inc
@echo lang fix en >lang.inc
@fasm cmd.asm cmd
@pause
+4
View File
@@ -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
+221
View File
@@ -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
+266
View File
@@ -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
+381
View File
@@ -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