Subversion Repositories Kolibri OS

Rev

Rev 109 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
CMD - Интерпретатор командной строки для Menuet
2
        Написано by Chemist dmitry_gt@tut.by
3
 
4
        Версия 0.27
5
 
6
	Русский текст немного пониже.
7
 
8
-----------------------------------------------------------------------
9
 
10
  CMD - Command Line Interpreter for Menuet
11
	Copyleft Chemist - dmitry_gt@tut.by
12
 
13
	Version 0.27
14
 
15
	As my english is not well, I will tell a few words about this
16
	program. It supports 14 commands, such as cp (copy file),
17
	rn (rename file), ps (process list), kill (kill process) etc.
18
	You can type 'help' after starting this shell to examine with
19
	other commands. Also it uses several special symbols, such as
20
	&, /, . and +. Use & sumbol to enter params. For example,
21
	type tinypad&cmd.asm to open cmd.asm file in tinypad editor.
22
	/ symbol is used to run special command scripts for CMD.
23
	It's syntax is: /filename without extension (For example,
24
	type /autoexec to execute autoexec.cmd file for CMD). And +
25
	symbol is used in cp and rn commands. You must type
26
	cp example.asm+example.bak to copy example.asm file to
27
	example.bak. Use dot to launch program, if CMD command and
28
	other external command match. For example, type help for
29
	'help' command or type .help to run 'help' program.
30
 
31
	This shell supports executeing special command
32
	scripts (something like .BAT files in MS-DOS). This files
33
	have an .CMD extinsion and u must use / symbol to execute it.
34
	U can use any CMD commands and filenames in this scripts.
35
	But you can't run other scripts from any CMD script (/ symbol).
36
	I recommed to use tipypad editor to edit this scripts and do
37
	not leave spaces and other symbols after commands in the script
38
	file, because it's executeing is not very developed yet.
39
	And it's strongly recommended to use ends command in the end
40
	of the script, because there are some problems with redrawing
41
	the window after executing scripts without this command.
42
	Every time when you launch CMD autoexec.cmd file automatically
43
	executes. You can edit or delete this file if you want.
44
 
45
	This version of CMD shell supports IPC. It mean, than you can
46
	write your own programs for this shell. Look at .ASM files in
47
	the Examples directory in this archive. I think that you will
48
	understand them without any difficulties. Do not forget, that
49
	you need CMDIPC.ASM file to compile this sources. It's
50
	recommended to compile it with MACROS.INC file (included in
51
	this archieve) to make their size smaller.
52
 
53
	And now about some bugs etc.
54
 
55
	----------------------------
56
 
57
	I've noticed, that there are some difficulties with files with
58
	1 or 2 symbols in extension. I recommend do not use such files
59
	not only in CMD, but almost in every programs in MeOS. It's
60
	possible to create such file in tinypad, and then (in MS-DOS or
61
	Windows) Scandisk will find errors in filenames etc. CMD do
62
	not support properly such filenames now.
63
 
64
	In CMDIPC.INC and CMD.ASM I used 5-th function (pause), because
65
	I need it when CMD communicates with IPC programs. It's
66
	even possible, that it will not enough 1/100 sec. on slow PC's,
67
	because CMD need this time to finish IPC-command from other
68
	IPC-program. U can change ebx value in CMDIPC.ASM in pause1:
69
	if you want. But it slows communication betwen CMD and
70
	IPC-programs for CMD. I hope, that you understand my words. :)
71
 
72
	Now (in this version) you can launch only one CMD shell.
73
	Because it's difficult to make communication betwen several
74
	copyes of CMD in memory and IPC-programs. I will solve this
75
	problem in future.
76
 
77
	I've tested this shell only on Ivan Poddubny's russian
78
	distributive. Also I recommend you to use it. :) CMD shell
79
	is included into this distributive (but possible not it's
80
	final version).
81
 
82
	Source code of this program is not optimized yet. I have such
83
	manner of programming from my childhood that my source code
84
	is not very "compact"
85
 
86
	etc. ;-)
87
 
88
	And now other information:
89
	--------------------------
90
 
91
	I do not want CMD design to change. I like white symbols on
92
	the black background. If you want to change the source and
93
	redistribute it, please, do not change it's design. :)
94
 
95
	If you will find some bugs or you have some wishes (or even you
96
	correct some mistakes in my english texts) -
97
	email me: dmitry_gt@tut.by
98
 
99
	And this program is distributed "as is". Use it on your own
100
	risk. ;-)
101
 
102
	And again - my English is not well. :)
103
 
104
	That's all!
105
 
106
	19.06.2004,
107
	Chemist
108
 
109
	Now russian text :)
110
 
111
-----------------------------------------------------------------------
112
 
113
  Доступные команды:
114
 
115
	ls [filename] - вывод списка файлов. Если после команды
116
                        указать имя файла, то команда проверит его
117
                        на наличие.
118
 
119
	cp [source_file+destination_file] - команда для
120
                        копирования файлов. Проверяет файлы на
121
                        наличие, и в случае ошибки выводит
122
                        соответствующие сообщения.
123
 
124
        rn [source_file+destination_file] - команда для
125
                        переименования файлов. Так же
126
                        проверяет файлы на наличие, и в
127
                        случае ошибки выводит соответствующие
128
			сообщения.
129
 
130
	ps            - вывод информации о процессах в системе.
131
 
132
        kill          - прервать процесс в системе. Внимание,
133
                        после команды следует вводить 4-х
134
                        значный номер процесса, а не PID. Номер
135
                        процесса указан в последней колонке при
136
                        вызове команды ps.
137
 
138
	help          - вывод краткой справочной информации.
139
 
140
        ver           - вывод используемой версии интерпретатора.
141
 
142
        cls           - очистка экрана.
143
 
144
        exit          - выход из интерпретатора.
145
 
146
        del [filename] - удалить файл с рамдиска. При отсутствии
147
                        запрашиваемого файла будет выведено
148
                        соответствующие сообщение об ошибке.
149
 
150
	shutdown      - завершить работу системы.
151
 
152
	pause         - ожидать нажатие клавиши. Используется для
153
                        "взаимодействия" пользователя с командными
154
                        скриптами для консоли (интерпретатора).
155
                        Например, можно использовать данный скрипт
156
 
157
                        echo Do you want to delete cmd.asm?
158
                        pause
159
                        del cmd.asm
160
 
161
                        для того, чтобы поинтересоваться мнением
162
                        пользователя, хочет ли он удалить файл cmd.asm
163
                        или прервать работу скрипта.
164
 
165
	pause >nul	То же самое, только без вывода строки
166
			'Press ane key to continue (ESC - cancel)'
167
 
168
	echo [text]     - вывод текста на экран. Предназначена для
169
                        подачи пользователю информации из командного
170
                        скрипта. Если ввести команду echo без текста,
171
                        то это просто вызовет переход на следующую
172
                        строку.
173
 
174
	ends            - команда, доступная только из исполняемых
175
                        скриптов. Служит для их корректного завершения,
176
                        т.к. иногда командные скрипты, у которых в
177
                        конце стояли ненужные пробелы или символы EOL,
178
                        вызывали проблемы с перерисовкой окна. Скорее
179
                        всего эта команда присутствует в консоли
180
                        временно и будет убрана после решения этой
181
                        проблемы.
182
 
183
-----------------------------------------------------------------------
184
 
185
  Управляющие символы:
186
 
187
	/[командный скрипт] - предназначен для вызова на исполнение
188
                        командного скрипта из консоли. Не может
189
                        использоваться в непосредственно в самих
190
                        командных скриптах. Если расширение испол-
191
                        няемого скрипта .cmd, то его указывать
192
                        необязательно.
193
 
194
	& - данный символ используется для передачи вызываемой
195
            программе параметров. Например, команда tinypad&cmd.asm
196
            передаст программе tinypad параметр cmd.asm,
197
            соответственно, tinypad откроет файл cmd.asm.
198
 
199
	+ - разделяет имена исходного и результирующего файлов в
200
            командах cp и rn.
201
 
202
	. - запускает указанную после точки программу, даже если она
203
	    совпадает с командой CMD. Например, help - выполнить
204
	    команду 'help', но .help - запустить внешнюю программу
205
	    'help' (хотя такой пока вроде и нету :).
206
 
207
-----------------------------------------------------------------------
208
 
209
  Навигация по консоли:
210
 
211
	Для редактирования командной строки используются клавиши ESC,
212
        BACKSPACE. ESC - для удаления всей командной строки,
213
        BACKSPACE - для удаления последнего введенного символа. По
214
        моему мнению, использование таких клавиш, как HOME, END, ARROW
215
        KEY etc. не имеет смысла, т.к. вводимые команды слишком
216
        просты и не требуют подробного редактирования. Поэтому я
217
        оставил все примерно так, как было в MS-DOS 6.22.
218
 
219
        Клавиша UPARROW используется для повтора последней введенной
220
        команды.
221
 
222
-----------------------------------------------------------------------
223
 
224
  Использование IPC во внешних программах:
225
 
226
	Вы можете писать программы, взаимодействующие с CMD через IPC.
227
	В основном, я полагаю, это может пригодится для написания
228
	консольных приложений для самого CMD (хотя возможно и другое).
229
 
772 gluk 230
	Для этого, к вашей программе вам необхоjдимо подключить файл
31 halyavin 231
	CMDIPC.INC (Естественно, от этого размер программы после
232
	компиляции несколько увеличится). После этого вам станут
233
	доступны 6 функции IPC, которые вы можете вызывать с помощью
234
	call из своей же программы. Вот их описание:
235
 
236
	---------------------------------------------------------------
237
 
238
	initipc - инициализация IPC для работы с CMD.
239
 
240
	call initipc - инициализировать IPC для работы с CMD.
241
 
242
	ВНИМАНИЕ! Используйте в самом начале программы. CMD будет ждать
243
		  только 10/100 секунды для того, чтобы получить
244
		  сообщение по IPC (хотя этого вполне достаточно).
245
 
246
	---------------------------------------------------------------
247
 
248
	print   - вывести строку в экран CMD.
249
 
250
	mov eax,strlen
251
	mov ebx,string
252
	call print
253
 
254
	Где strlen - длина строки в байтах,
255
	string     - указатель на строку.
256
 
257
	call print - вывод строки.
258
 
259
	---------------------------------------------------------------
260
 
261
	cls     - очистить экран CMD.
262
 
263
	call cls - вызвать очистку экрана.
264
 
265
	---------------------------------------------------------------
266
 
267
	eol     - пропустить строку.
268
 
772 gluk 269
	call eol - вызвать пропуск строки.
31 halyavin 270
 
271
	---------------------------------------------------------------
272
 
273
	getkey  - считать код нажатой клавиши в CMD.
274
 
275
	call getkey - ожидать нажатия клавиши и считать ее код.
276
 
277
	Вывод: byte [key] - код нажатой клавиши.
278
 
279
	ВНИМАНИЕ: После запуска программы из CMD, которая
280
		  поддерживает IPC, то окно CMD активируется сразу
281
		  после запуска программы. Поэтому, уже не нужно
282
		  тыкать мышкой на окно для того, чтобы ввести
283
		  что-нибудь в консоль, как это было в прошлых версиях.
284
 
285
	---------------------------------------------------------------
286
 
287
	endipc  - Завершить работу IPC-программы.
288
 
289
	call endipc - завершить программу.
290
 
291
	---------------------------------------------------------------
292
 
293
	Вообщем, вы можете посмотреть файл HELLO.ASM, который лежит в
294
	этом архиве. Там все должно быть понятно. Естественно, никто
295
	вам не мешает использовать параметры в IPC-программах для CMD.
296
	Смотрите пример PARAM.ASM.
297
 
298
	Кстати, в самом CMD и в CMDIPC.INC используется 5-я функция
299
	(пауза) для того, чтобы	дать время друг-другу выполнить
300
	требуемые от них через IPC действия. И если у вас комп сильно
301
	тормознючий, то возможно, выделенного времени будет
302
	недостаточно. Это не сложно полечить, увеличив значение
303
	ebx перед вызовом функции ядра (eax,5 - пауза). В противном
304
	случае могут повылетать вызовы IPC или что-нибудь вообще
305
	зависнет (первое - вероятнее). Но, естественно, ничего
306
	страшного в этом нет. ;-)
307
 
308
-----------------------------------------------------------------------
309
 
310
  Известные ошибки и недоработки:
311
 
312
	При работе с консолью CMD и системой MenuetOS вообще, я
772 gluk 313
	заметил, что некоторые созданные в Menuet файлы не
31 halyavin 314
	воспринимаются MS-DOS. Это в первую очередь касается файлов,
315
	с именами типа 1.1, b.bb и т.д. Поэтому возможны различные
316
	тупиковые ситуации при взаимодействии созданных или
317
	копированных файлов в MeOS с восприятием их в MS-DOS и Windows
318
	системах. И касается это не только CMD, но, например, и
319
	тинипада. Поэтому я рекомендую использовать в Menuet файлы или
320
	без расширения вообще, или с полным расширением (занимающим
321
	все 3 байта, т.е. filename.ext,	а не filename.ex). В принципе
322
	механизм команд LS, LS имя_файла, CP, DEL и RN изменен, но
323
	пока нет совместимости между различными	программами,
324
	работающими с файлами в Menuet. Т.е. даже возможно,
325
	что вы не сможете работать в консоли с файлом, созданном в
326
	тинипаде, а потом skandisk вообще выдаст ошибку при проверке
327
	файловой структуры дискеты, когда наткнется на этот файл, и он
328
	не будет читаем из windows или MS-DOS. В принципе, я тестировал
329
	программу только на моем PC, поэтому возможно всё. :)
330
 
331
	P.S. Команда LS покажет полностью все файлы на рамдиске, в том
332
	числе те, которые созданы неправильно и не будут работать в
333
	MS-DOS, LS имя_файла и т.д. может уже их не заметить. В
334
	принципе такая же картина будет и в windows. Т.е. вы сможете
335
	лицезреть имена этих файлов, например, в windows commander'e,
336
	но блокнот их не откроет.
337
 
772 gluk 338
	Для того, чтобы дать время CMD обработать IPC-запрос, в
31 halyavin 339
	CMDIPC.ASM мне пришлось использовать 5-ю функцию (пауза),
340
	поэтому немного замедляется время получения новых IPC-запросов.
341
 
342
	В данной версии вы не можете запускать больше одного
343
	терминала CMD одновременно. Это связано с тем, что я еще не
344
	добавил возможности работы нескольких консолей с
345
	IPC-программами одновременно.
346
 
347
	Код программы на данный момент неоптимизирован.
348
 
349
	etc. :)
350
 
351
-----------------------------------------------------------------------
352
 
353
	Вместе с программой поставляется файл autoexec.cmd, который
354
        автоматически исполняется при запуске интерпретатора. Его
355
        можно удалить при ненадобности.
356
 
772 gluk 357
	Для вызова примера исполняемого скрипта наберите /example
31 halyavin 358
 
359
	Всвязи с молодостью и частичной недоработанности самой
360
	программы возможны ошибки в её работе, о которых просьба
361
        сообщать на dmitry_gt@tut.by
362
 
363
	В ближайшее время не планируется новых нововведений в консоль,
364
        т.к. на её доработку уходит много времени и я считаю, что она
365
        и на данный момент более-менее функциональна (в масштабах
366
        MenuetOS, конечно). Я считаю, что рациональнее будет сконцент-
772 gluk 367
        рироваться на устранении багов и недоработок в программе.
31 halyavin 368
 
369
	Если кто-нибудь пожелает доделать программу, то я бы попросил
370
	не изменять её дизайн (мне он нравится ;-) ).
371
 
372
	О всех ошибках (В том числе грамматических в английском тексте)
373
 	просьба сообщать на dmitry_gt@tut.by
374
 
772 gluk 375
	И еще забыл сказать, то программа распространяется "as is", и
31 halyavin 376
	автор не несет ответственности за возможный ущерб, причиненный
377
	программой.
378
 
379
	19.06.2004,
380
	Chemist
381