┌─── ─- - - - О командных строках | Не помню уже когда, но я уже предлагал в эхе этот способ. Ещё он вскользь описывался в 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... ----------------------------------------------------------------