Virtual Worlds #01
31 декабря 1999

Ассемблер - Оверлеи для JC: Описание методов создания утилит работающих под управлением Jemmini_Commander 4.0T.

<b>Ассемблер</b> - Оверлеи для 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. Про
другие  версии командира сказать
ничего  не  могу из-за невозмож-
ности проверки.





Другие статьи номера:

От редакции - история создания журнала.

Путеводитель - подробное содержание номера.

Описание оболочки - описание оболочки и методов ее правильной эксплуатации.

Авторы - об авторах.

Ассемблер - Z80 Flags: недокументированные комманды процессора Z80.

Ассемблер - Оверлеи для JC: Описание методов создания утилит работающих под управлением Jemmini_Commander 4.0T.

Ассемблер - Секреты TR-DOS: о методах пределения наличия дисководов.

Ассемблер - Круги на воде: Алгоритмы имитации эффекта известного на других платформах, под названием "круги на воде".

Ассемблер - Поиск пути. Решение задачи "статического" поиска наикратчайшего маршрута между двумя точками.

Отдохни - Механический эффект. История о том, что бывает, если использовать презервативы сомнительного происхождения.

Железо - Глюки клавиатуры: почему в играх для двух игроков, при игре вдвоем, компьютер не слушается вашего управления и информация о том, как этого избежать.

Железо - Прерывания: Кое-что непонятное о прерываниях второго рода.

Техпомощь - Мысли вслух. Интересно письмо из конференции fido7.zx.spectrum на тему "К вопросу о стандартизации".

Техпомощь - File FAQ. Полный разбор форматов файлов, наиболее часто встечающихся в Интернет, и не только; а также способы их конвертации в "нормальный" вид.

Техпомощь - Dos Review: материал по формату дисковой операционной системы IS-DOS.

Техпомощь - Dos Review 2: материал по формату дисковых операционных систем ПК "АГАТ", Радио-86РК, SP-DOS, БК-0011М.

Техпомощь - Dos Review 3: материал по формату дисковых операционных систем CP/M, ASC SOUND MASTER, RT11, СМ ЭВМ РАФОС.

Техпомощь - Dos Review 4: материал по формату дисковой операционной системы от неизвестного автора.

DI:HALT:99 - Анализ DH:99. Наконец-то вся правда о прошедшей летом, в г.Дзержинске пати, от самих организаторов.

DI:HALT:99 - Hidden Parts. Жизнь дзержинских (и не только) спектрумистов в период проведения DI:HALT:99.

DI:HALT:99 - Результаты. После прошествия DH:99, чуть ли не каждая вторая газета, считала своим долгом придумать новый вариант результатов. Данная статья направле- на на то, чтобы окончательно поставить все точки над "И".

Программы - Alien: описание и прохождение игры по фильму "Чужой".

Программы - описание Universal AntiProtector 0.01 (программа для автоматического раскалывания ряда популярных защитных систем).

Программы - редактор игровых экранов "Белые Пятна".

Программы - Exhumator: программа для "эксгумации дисков".

Программы - чанковый графический редактор: Hard Core ver 3.01

Программы - Глаз Вопиющего: програмка позволяющая смотреть картинки, спрайты, слушая при этоммузыку.

Отдохни - Стих о Sysop'e. Поэзия однако...

Отдохни - Секс в Фидо. Юмористический расказ о том, как же на самом деле занимаются любовью заядлые фидошники.

Отдохни - Анекдоты. Подборка анекдотов с компьютерной тематикой.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Деда Мороз 2 - новогодние стихи.
Железо - Схема для музыкального процессора (продолжение).
Мнение - "О спекки-прессе": Body, Target, Optron, IzhNews, Scream, Za Rulem, Don News, ZX Pilot, KrNews.
Как это было в Ленинграде - спектрум в Санкт-петербурге в 1996 году
Железо - Automat, система внешнего управления и контроля на основе Спектрум- совместимых компьютеров, BAT FILE PROCESSOR v1.00, Robot v5.50 for Batproc v1.00.

В этот день...   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