┌────────────────────────────┐
│ ░▒░ JEMMINI COMMANDER ▒░▒░ │
│░ ░▒░▒▓▒▓ FOREVER █▓▒▓▒░▒░ ░│
└────────────────────────────┘
(C) TimeKeeper
Программа эта довольно старая,
но я думаю еще есть люди которые
ей пользуются. Именно для них и
предназначена данная статья.
Сегодня появляется огромное
количество всевозможных команди-
ров, плохих и хороших. Вкусы,
естественно, у всех разные, и
каждый для себя выбирает то, что
ему больше подходит. До недавне-
го времени я использовал Jemmini
Commander, и я хочу предложить
вам одну из своих разработок,
благодаря которой вы самос-
тоятельно сможете писать утили-
ты, работающие под управлением
Jemmini Commander'а версии 4.0T.
Вообще, эта функция уже
реализована в нем в виде кодовых
запускаемых файлов с расширением
*.U, но я так до конца и не ра-
зобрался в их формате и способах
взаимодействия с командиром, но
у меня уже давно возникло жела-
ние написания подобных приложе-
ниЙ, что и побудило меня вплот-
ную заняться изучением данного
вопроса.
Все оказалось даже проще, чем
я думал. Начальный загрущик JC
выглядит следующим образом:
1 CLEAR 0:RANDOMIZE USR 0:****
На месте звездочек расположена
программа начальной загрузки,
написанная в кодах. Подлинные
значения Clear и Usr из Бейсика
увидеть нельзя и я, при исполь-
зовании STS, получил следующие
числа: Clear=#5F1F, Usr=#5D60.
После окончания загрузки, JC
преобразует первую строку сле-
дующим образом:
1 CLEAR 0:RANDOMIZE USR 0:REM:
RUN " "
Clear=#FFFF, Usr=#3D03 (15619).
И переопределяет указатель за-
пуска на начало текущей строки.
Перед стартом программы он всего
лишь подставляет имя файла вмес-
то пробелов и делает возврат по
команде RET. Ну вот, в принципе,
и все, что нам необходимо для
написания программ под JC. Для
тех, кто еще не догадался, обь-
ясню: сначала мы создаем сле-
дующий Бейсик-файл:
1 CLEAR 0:RANDOMIZE USR 0:REM:
RUN " "
2 REM *****
Clear=#5F1F, Usr=#5D66.
Вместо звездочек мы помещаем
программу, выполняющую загрузку
утилиты, ее запуск и возврат в
Jemmini. Возврат может произво-
диться по двум адресам:
36076 - с тестированием компа
36178 - без него.
Итак сама программа:
ORG #5D66
LD BC,#7FFD ;Загружаем утилиту в 7 страничку.
LD A,23
OUT (C),A
LD HL,56064
LD DE,(#5CF4)
LD BC,#XX05
CALL #3D13
CALL 56064 ;и запускаем ее.
LD HL,TEST ;После возврата проверяем откуда
LD DE,#8BC4 ;она была запущена:
LD B,22 ;из командира или из DOS'а и
L0 LD A,(DE) ;возвращаемся в среду вызова.
CP (HL)
JR NZ,DOS
INC HL
INC DE
DJNZ L0
LD BC,#7FFD
LD A,16 ;Возврат в командир с предварительной
OUT (C),A ;коррекцией Бейсика и содержания порта
LD HL,#FFFF ; #7FFD.
LD (23876),HL
LD HL,#3D03
LD (23886),HL
JP 36076 ;Возврат с выводом тестовой страницы.
DOS LD BC,#7FFD ;Выход в DOS.
XOR A
OUT (#FE),A
RST #00
TEST DB "JemminiCOMMANDER V4.0"
Конечно же, утилиты не обяза-
тельно должны работать в стра-
ничках - можно запускать их и в
основной памяти, но предвари-
тельно сохранив используемый
участок в страницах и восстано-
вив его после работы. Как вы,
наверное, заметили, в программу,
для более корректной работы,
введена проверка среды, из кото-
рой был осушествлен запуск и,
соответственно, возврат в нее.
Если ваша программа, по каким-
либо причинам, не должна рабо-
тать из DOS'а, то вставьте в нее
фрагмент, который будет осу-
ществлять проверку и, при необ-
ходимости, выдавать сообщение о
невозможности продолжения рабо-
ты, сопровождаемое выходом в
Бейсик.
При запуске утилиты из
JCv4.0T, по адресу #8BC4 содер-
жится строка: JemminiCOMMANDER
V4.0
Еще хочу добавить, что начиная
с #6000 хранится каталог диска.
В приложении журнала вы найде-
те утилиту написанные специально
для JC по описанному мной мето-
ду: JC_cat.B
Эта утилита нужна для устране-
ния ошибок каталога, появившихся
в результате работы Jemmini.
(:) - ред. )
Про это, я думаю, следует рас-
сказать поподробнее:
Дело в том, что JC не совсем
правильно осуществляет уплотне-
ние диска. После этой операции,
в конце каталога остается сле-
дующая комбинация:
50 53 43 20 31 2E 30 33 PSC 1.03
...
00 41 20 50 52 45 56 31 ?A PREV1
...
01 58 5A 49 50 52 45 46 ?XZIPREF
^^
В то время как должно быть:
50 53 43 20 31 2E 30 33 PSC 1.03
...
00 41 20 50 52 45 56 31 ?A PREV1
...
00 58 5A 49 50 52 45 46 ?XZIPREF
^^
(Пример приведен для конкретного
каталога).
Аналогичная ошибка возникает
при удалении группы файлов, рас-
положеных в конце каталога. При
этом начинаются всевозможные
глюки, из-за которых можно пол-
ностью потерять всю информацию,
записанную после уплотнения.
Программы, написанные по опи-
санному методу, будут на 100%
работоспособными только при за-
пуске из JCv4.0T или DOS'a. Про
другие версии командира сказать
ничего не могу из-за невозмож-
ности проверки.