|
ACNews
#02
08 июля 2001 |
|
Программирование - О командных строках TR-DOS.

┌─── ─- - - - О командных строках
| Не помню уже когда, но я уже предлагал в эхе этот способ. Ещё
он вскользь описывался в ZX-Guide #3.
Заключается он в том, что для упрощения взаимодействия прог-
рамм между собой они будут использовать для вызова друг друга
командную строку вида:
RUN "prog",parameter
Командная строка E_LINE - это предопределённое самой системой
место для хранения такого рода параметров. Логичнее, по-моему,не
придумать. А запятая как разделитель выбрана для общности уже
существующих команд с несколькими параметрами и наших вызовов.
При этом TR-DOS мало интересует содержимое командной строки пос-
ле запятой.
В AC Edit 0.5S через такую строку можно указать имя загружае-
мого файла.Поскольку возможные расширения файлов отнюдь не исче-
рпываются стандартными TR-DOS расширениями, то я решил обойтись
без всякого рода точек и кавычек - просто указывать 9 байт наз-
вания со слитно написанным расширением...
Реализуется это так:
LD HL,(23641) ;адрес ком.строки E_LINE
LD BC,7 ;первые 7 байт ком.строки, как известно, запороты
ADD HL,BC
LD A,",
CPIR ;ищем запятую (ведь нам неизвестно, сколько букв
;набрал юзер в названии нашей программы? ;)))
JR NZ,notFND
LD DE,23773 ;TR-DOS file descriptor
LD C,9
LDIR
LD C,#A ;"поиск элемента каталога"
CALL #3D13 ;ищем по 9 байтам, т.к. обычно (23814)=9
LD A,C ;получаем номер элемента каталога
INC C ;C=#FF означает, что файл не найден
JR Z,notFND
LD C,8 ;"считывание элемента каталога"
CALL #3D13
;теперь дескриптор по адресу 23773 содержит инфу о нужном файле!
;что делать дальше, уже зависит от конкретной программы:
LD HL,23773
CALL PRCDESC+3
CALL EXTLU
JR OK
notFND ...
...
OK ...
Если действительно запускать программу через TR-DOS, то (как
обнаружилось) TR-DOS немного перерабатывает строку по своему
вкусу: заменяет строки,похожие на токены бейсика,на сами токены.
Таким образом,нельзя выполнить через TR-DOS такую команду:
RUN "ACEdit5S",AlCoNew2p
А такую можно:
RUN "ACEdit5S",AlCoNws2p
Я,конечно,отдаю себе отчёт в том,что ни одна программа,будучи
в здравом уме, не станет грузить другую через командную строку
TR-DOS. Обычно всё это происходит через процедурку запуска бей-
сик-файла, типа той, что написана BASIL'ом (ZX-Guide #3)
LD HL,#YYYY ;16 BYTES INFO
LD DE,23773 ;ABOUT
LD BC,16 ;BASIC FILE.
LDIR
LD A,#C9
LD (23746),A
LD HL,RNBASIC
PUSH HL
LD DE,23448
LD BC,END_COD-RNBASIC
LDIR
LD HL,10072 ;ДЛЯ
EXX ;ВЫХОДА
LD IY,23610 ; В
IM 1 ;BASIC.
EI
RET
RNBASIC
DISP 23448
LD HL,23867
LD DE,23868
LD (HL),0
LD BC,41668
LDIR ;ОЧИСТКА 48-Й ПАМЯТИ
LD A,#38 ;PAPER 7
LD (23693),A ;& INK 0.
LD (23624),A ;И ДВЕ НИЖНИЕ СТРОКИ ЭКРАНА ТАКИЕ ЖЕ.
LD BC,65167 ;CLEAR 65167 ДЛЯ
CALL 7863 ;МАКСИМАЛЬНО ДЛИННЫХ ФАЙЛОВ.
LD HL,4867 ;ПОДКЛЮЧЕНИЕ
PUSH HL ;
LD (23613),SP ;
LD HL,(23631) ;48-ГО
LD DE,15 ;
ADD HL,DE ;
LD DE,5566 ;BASIC'А
EX DE,HL ;
LD BC,4 ;
LDIR ;СО 128-ОЙ
RES 4,(IY+1) ;
LD HL,7030 ;
PUSH HL ;ПАМЯТЬЮ.
LD HL,RNBAS2
PUSH HL
LD HL,10608 ;
PUSH HL ;
LD HL,10528 ;
PUSH HL ;ЗАГРУЗКА.
LD HL,10570 ;
PUSH HL ;
JP 15663 ;
RNBAS2 LD HL,(23649)
LD A,(HL)
DEC HL
LD L,(HL)
LD H,A
LD (23618),HL ;СТРОКА АВТОСТАРТА
XOR A ;ВЫПОЛНЯЕТСЯ С
LD (23620),A ;1-ОЙ КОМАНДЫ.
RET
ENT
END_COD
Так вот,ничто нам не мешает перед таким запуском сформировать
командную строку, состоящую из запятой и названия файла, и засу-
нуть в E_LINE (23641) её адрес (точнее,адрес на 7 меньше)! |
- - - -─ ──┘
------------------- Как высушивать текст ;)
Если вам очень хочется достать из предыдущей статьи исходни-
ки, то придётся удалить управляющие символы.
Способ #1 (ламерский):
Входим в Find/Replace и вводим в поле "Введите, что искать" сим-
вол белого цвета (SS/E, 7)
Вводим в поле "и на что заменить" символ пробела.Нажимаем Enter.
Видим: Replaced OK.
Продолжать то же самое для жёлтого,зелёного и т.д. цветов :)))
Способ #2 (кодерский;)):
Пишем маааленькую программу,которая делает то же самое,перекоди-
руем с помощью неё текст,а потом стираем программу ;)))
Результат можно отдавать на съедение ALASM 4.42...
----------------------------------------------------------------
Другие статьи номера:
Новости - группа Anarchia переживает свои худшие времена. |
Эмуляторы - Укрощение эмулятора ZX Spectrum. |
Программирование - О командных строках TR-DOS. |
Приветы - Просьба передать сие послание адресатам, если это возможно... |
Похожие статьи:
В этот день... 17 ноября