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 |