|
Virtual Worlds
#01
31 декабря 1999 |
|
Ассемблер - Оверлеи для JC: Описание методов создания утилит работающих под управлением Jemmini_Commander 4.0T.

┌────────────────────────────┐ │ ░▒░ 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. Про другие версии командира сказать ничего не могу из-за невозмож- ности проверки.
Другие статьи номера:
Похожие статьи:
В этот день... 1 января
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3