Inferno #04
22 июня 2003
  Софт  

Sofтинка - Резидентные Расширения Системы (RSX) в ZXVGS.

      Резидентные Расширения Системы
       Resident System Extentions

Существуют  модули для ZXVGS, которые уве-
личивают его возможности и при этом не за-
висят от железа и системного кода. Они за-
гружаются в память,доступную только систе-
ме и пребывают там в дальнейшем.

  Существующие или разрабатываемые RSX

Расширения синтаксиса: 
$B.RZX - эмулятор TR-DOS - доступ к реаль- 
ным   фaйлам,  низкая  совместимость (уже
имеется, ограничено) 
BA2.RZX -  расширяет  синтаксис  Бейсика - 
совместимость с TOS A.2 (в планах) 
BD1.RZX -  расширяет  синтаксис  Бейсика - 
совместимость с DISCiPLE/+D (в планах) 
BI1.RZX -  расширяет  синтаксис  Бейсика - 
совместимость с Microdrive (в планах) 
BJR.RZX -  расширяет  синтаксис  Бейсика - 
совместимость с ELWRO 800 Junior (в план- 
 ах) 
BZX.RZX -  расширяет  синтаксис  Бейсика - 
позволяет  загружать и сохранять дисковые
файлы (уже имеется, не меняет директории) 
PRG.RZX -  расширяет  синтаксис  Бейсика - 
совместимость с ELWRO 800 Junior (в план-
 ах)

Загрузка данных: 
BLK.RZX - загружает файлы "*.BLK", наподо- 
бие TAP.RZX (имеется) 
SCL.RZX - эмулятор TR-DOS - читает контей- 
нер файлов, средняя совместимость (имеет-
ся, ограничено) 
TAP.RZX - загружает файлы *.TAP (имеется) 
Z80.RZX - загружает снапшоты "*.Z80" 
(имеется) 
SNA.RZX - загружает снапшоты "*.SNA" 
(разрабатывается) 
SLT.RZX - загружает снапшоты "*.SLT" с пе- 
рехватами обращения к ленте
(разрабатывается)

Драйверы диска: 
DSK.RZX - образ диска ??? (в планах) 
FDI.RZX - эмулятор TR-DOS - доступ к обра- 
зу диска, полная совместимость (в планах) 
MDR.RZX - эмулятор Interface 2 (в планах) 
MGT.RZX - образы дисков (в планах) 
TRD.RZX - эмулятор TR-DOS - доступ к обра- 
зу диска, высокая совместимость
(в планах) 
PLUS3DOS.RZX - позволяет использовать дис- 
ки с заголовками PLUS3DOS (в планах) 
TRDOS.RZX - эмулятор  TR-DOS  - использует 
настоящий дисковод (в планах)

Загрузчики графики: 
BMP.RZX - позволяет загружать и записывать 
BMP-картинку (имеется, очень ограничено) 
GIF.RZX - позволяет загружать и записывать 
GIF-картинки (в планах) 
GRP.RZX - позволяет загружать и записывать 
GRP-картинки (в планах) 
IFF.RZX - позволяет загружать и записывать 
ILBM-картинки (в планах) 
JPG.RZX - позволяет загружать и записывать 
JPG-картинки (в планах) 
PCX.RZX - позволяет загружать и записывать 
PCX-картинки (в планах)

Драйверы принтера: 
DESKJET.RZX - инсталлирует принтер HP Desk 
Jet (в планах) 
EPSONFX.RZX - инсталлирует матричный прин- 
тер с 9 иголками (имеется, ограничено) 
GP500AS.RZX - инсталлирует принтер 
Seikosha GP500AS (в планах) 
LASERJET.RZX - инсталлирует принтер 
HP LaserJet (в планах) 
PRINTER.RZX - текущий используемый драйвер 
принтера (создаётся пользователем из дру-
гих)

Прочее: 
51X24.RZX - драйвер экрана на 51 колонку 
(в планах) 
SAMTAPE.RZX - (SAM only) позволяет загру- 
жать с кассеты через код SAMROM
(в планах) 
ZXVGSVBM.RZX - менеджер виртуальных 
банков (в планах)

------------------------------------------ 
(упрощённая форма Бэкуса-Науэра): 
x, y, z... представляют числовые выражения 
x$, y$ ... представляют алфавитно-цифровые 
          выражения 
c          представляет любой символ 
d          предстваляет одну цифру (0..9) 
b          представляет любую команду 
          Бейсика 
[A]        означает 'A может быть опущен' 
{A|B|C}    означает 'A или B или C' 
[A...]     означает 'A может быть опущен 
          или повторён много раз'

Определения синтаксиса Бейсика 
(упрощённая форма Бэкуса-Науэра): 
знак         смысл 
@          одна буква 
v,v1,v2... имена числовых переменных 
x, y, z    числовое выражение 
          (действительное) 
i, j, k    числовое выражение 
          (округлённое до целого) 
e          числовое или строковое выраже- 
          ние 
f          строковое выражение 
[ ]        необязательная часть 

----------------------------------------- 
 51X24.RZX - Драйвер символьного экрана

    $B.RZX - Эмулятор HoBeta TR-DOS

Фатальные ошибки:
$B.RZX: Unknown function #nn
$B.RZX: Unknown call to #nnnn
$B.RZX: Access to outside file
$B.RZX: Directory not avaiable

RSX  не в силах запустить эту TR-DOS прог-
рамму. Попытайтесь скопировать её в конте-
йнер "*.SCL" или в образ диска "*.TRD" или
"*.FDI".

            BA2.RZX - Эмулятор
         Timex Operating System

     BD1.RZX - Синтаксис DISCiPLE/+D

Этот RSX сейчас не существует.

В  начале, когда  привязка  не существует,
"D1:"  привязан к текущему пути. Остальные
диски требуют привязки (assign) перед пер-
вым использованием.
 * CAT 1 Показывает каталог.
 * CAT 1! Показывает сокращённый каталог.
 * SAVE D1"filename" Сохраняет файл.
 * VERIFY D1"filename" Проверяет, что за- 
пись была произведена. 
 * LOAD D1"filename" Загружает файл (кро- 
ме снапшотов). 
 * LOAD D1"filename" SCREEN$ Загружает 
экранный файл. 
 * ERASE D1"file" TO "new file" Переиме- 
новывает файл. 
 * ERASE D1"filename" Удаляет файл
 * SAVE D1"file" TO D2 Копирует файл с 
диска 1 на 2 
 * OPEN #n;D1"filename"IN Открывает файл 
на чтение в поток n. 
 * OPEN #n;D1"filename"OUT Открывает файл 
на запись в поток n. 
 * CLOSE #*n Закрывает файл в потоке n.
 * CLOSE #* Закрывает все открытые файлы.
 * MOVE D1"filename" TO #n Читает файл; 
выводит в поток n. 
 * MOVE D1"fileA" TO D1"fileB" Читает 
файл; записывает его во 2-й файл. 
 * CLEAR # Очищает все открытые потоки и 
каналы. 
 * CLS # Очищает экран и область атрибу- 
тов. 
 * LLIST line-no Пересылает листинг прог- 
раммы на принтер. 
 * LPRINT variable-list Печатает на прин- 
тер. 
 * SAVE SCREEN$ 1 Производит 32-колоноч- 
ный дамп экрана. 
 * SAVE SCREEN$ 2 Производит дамп экрана 
большого размера. 
 * LPRINT TAB n; Табуляция на позицию n в 
текущей строке. 
 * LPRINT AT n1,n2; Прокручивает принтер 
на n1 строк вниз, табуляция на n2 позицию. 
 * SAVE...TO , ERASE , CAT могут быть ис- 
пользованы с * и ? в качестве фильтров 
(wildcards). 

SNAPSHOT BUTTON - временно останавливает
программу и позволяет выбрать:
  1. - 32-колоночный дамп экрана;
  2. - Дамп экрана большого размера;
  3. - Запись экрана;
  4. - Запись 48K снапшота;
  5. - Запись 128K снапшота;
Клавиша X выходит из режима снапшота и во-
звращает в программу.

Это работает не так, как в оригинале:

LOAD D1"filename"S Загружает 48K снапшот. 
-загружает через RSX

LOAD D1"filename"K Загружает 128K снапшот. 
-загружает через RSX

LOAD Pn Загружает программу. 
-использует  селектор  файлов  для  выбора
программы; число игнорируется.

RUN 
-вызывает меню ZXVGS.

Дальнейшее  не поддерживается из-за другой
структуры ZXGVS:
 * FORMAT D1 Форматирует диск в устройст- 
ве 1. 
 * FORMAT D1 TO D2 Форматирует диск 1; 
копирует с 2 на 1. 
 * SAVE D1"filename"X,Address Сохраняет 
510-байтный запускающий(ся?) файл. 
 * LOAD D1"filename"X Исполняет файл в 
ОЗУ PLUS D. 
 * LOAD @ D,T,S,Address Читает выбранный 
сектор в память. 
 * SAVE @ D,T,S,Address Записывает ука- 
занный сектор на диск. 


     BI1.RZX - Эмулятор Interface 1

  BJR.RZX - Эмулятор Elwro 800 Junior

        BLK.RZX - Имитация ленты

См. {TAP.RZX}. Отличается только расшире-
ние файла.

       BMP.RZX - Драйвер картинок

      BZX.RZX - Дисковый синтаксис
               в Бейсике

"BZX.RZX" - простое расширение Бейсика,
предоставляющее несколько новых инструк-
ций.
 * LOAD *f
 * LOAD *f CODE [i][,j]
 * LOAD *f DATA @[$]()
 * LOAD *f SCREEN$
 * MERGE *f
 * SAVE *f [LINE i]
 * SAVE *f CODE i,j
 * SAVE *f DATA @[$]()
 * SAVE *f SCREEN$
 * VERIFY *f
 * VERIFY *f CODE [i][,j]
 * VERIFY *f DATA @[$]()
 * VERIFY *f SCREEN$
Их назначение аналогично магнитофонным эк-
вивалентам.Отличие в том,что их длина име-
ни должна быть в диапазоне 1..127. Звёздо-
чка "*" должна быть помещена сразу после
ключевого слова. Если не указано расшире-
ния файла,оно будет добавлено автоматичес-
ки:
 * ".BZX" для Бейсик-файлов,
 * ".DZX" для массивов обоих типов,
 * ".CZX" для файлов CODE,
 * ".SCR" для файлов SCREEN$.
(В следующей версии.) Команда "LOAD *f"
имеет специальное использование. С именем
директории она меняет текущую директорию
(как в PLUS3DOS, но здесь только одно умо-
лчание для обоих - LOAD и SAVE).

           DESKJET.RZX - Драйвер
           струйного принтера

     DSK.RZX - Драйвер образа диска

         EPSONFX.RZX - Драйвер
          матричного принтера

    FDI.RZX - Драйвер образов TR-DOS

       GIF.RZX - Драйвер картинок

         GP500AS.RZX - драйвер
          матричного принтера

       GRP.RZX - Драйвер картинок

       IFF.RZX - Драйвер картинок

       JPG.RZX - Драйвер картинок

         LASERJET.RZX - Драйвер
           лазерного принтера

        MDR.RZX - Драйвер образа
           ленты Interface 1

     MGT.RZX - Драйвер образа диска

       PCX.RZX - Драйвер картинок

 PLUS3DOS.RZX - Драйвер диска PLUS3DOS

  PRG.RZX - Эмулятор Elwro 800 Junior

 PRINTER.RZX - Текущий драйвер принтера

Это имя используется системой ZXVGS при
первом вызове функций принтера #F0..#F6.
Этот RSX генерируется из существующего
драйвера принтера (например, EPSONFX.RZX)
переименованием его в PRINTER.RZX.

   SAMTAPE.RZX - Ленточный загрузчик
             для Sam Coupe'

        TAP.RZX - Имитация ленты

"TAP.RZX" позволяет загружать "ленточные
файлы", из файла "*.TAP", выбранного функ-
цией #AF.

Для загрузки файла "*.TAP", выберите его
из SHELL.V00. После сброса введите: 
LOAD "" 
или можете ввести: 
PRINT USR 8 
и загрузить из SHELL.V00 другую программу,
которая в свою очередь может читать с лен-
ты (ARTSTDIO.V00, ZEBRA.V00, COPYNEW1.V00)
и загрузите содержимое файла "*.TAP" в
неё.

Для чтения данных из файла "*.TAP", ZX ПЗУ
должно быть запатчено для вызова #7E hook
code. Содержимое IX должно быть перенесено
в HL, AF (которое впоследствии переместит-
ся в AF') - в BC (bit 6 в C может быть ус-
тановлен для загрузки байта типа как соде-
ржимого порции данных  (chunk). Число заг-
ружаемых байт помещается в DE  (для чисел,
больших,чем длина порции данных,загружает-
ся также контрольная сумма, и возвращается
ошибка #01).

Стандартная ошибка RST #08 генерируется,
когда файлы "*.TAP" не поддерживаются (как
при отсутствии ZXVGS). В противном случае
A возвращает информацию об ошибке:

#00 - порция данных загружена корректно, 

#01 - ошибка чтения ("*.TAP" файл не най- 
ден или нажат <SPACE>),

#02 - неверный тип данных. 

Число загруженных байтов лежит в BC (долж-
но быть добавлено к IX), число незагружен-
ных байтов - в DE, последний загруженный
байт - в L, и вычисленная контрольная сум-
ма - в H.

Внимание. Не используйте #7E hook code в
программах! Он может быть использован то-
лько в патче ZX ПЗУ.

!!! Временно в L тоже возвращается "вычис- 
ленная контрольная сумма". 

#7E TAPLOAD 
(DE=length,HL=address,B=type,C=flags) 
(DEHL=standard,BC=readed,A=error) 

Патч ZX ПЗУ (48kB модель) для "TAP.RZX".
Успешно испытан 2002-03-21. Возможно доба-
вление этих изменений в PROM и EPROM без
их стирания. Поместите это в ПЗУ:
      ORG  #0025 
#0025  JP   #3881             ;#C3,#81,#38 
                      ;вместо #FF,#FF,#FF
      ORG  #056C 
#056C  CALL #0025             ;#CD,#25,#00 
                      ;вместо #CD,#E7,#05
      ORG  #3881      ;тут область #FF-ок 
tapld  LD   HL,(#5C68) 
      PUSH HL
      LD   HL,(#5C65)
      PUSH HL
      LD   HL,(#5C5F)
      PUSH HL
      LD   H,(IY+0)
      LD   L,C      ;добавлено 1999-12-08
      PUSH HL
      LD   HL,(#5C3D)
      PUSH HL
      LD   HL,taperr  ;переход, если
                      ;нету ZXVGS
      PUSH HL
      LD   (#5C3D),SP
      PUSH IX
      POP  HL
      EX   AF,AF'     ;здесь флаги и байт
                      ;типа данных
      PUSH AF
      POP  BC
      EX   AF,AF'    ;возвращаем на место
      RST  #08
      DEFB #7E        ;загрузка DE байт
                      ;по адресу HL
      ADD  IX,BC     ;добавить к IX число
                     ;загруженных байт
      POP  BC         ;снять "taperr"
      POP  BC         ;снять (#5C3D)
      LD   (#5C3D),BC ;это было здесь и
            ;раньше,остальное не изменено
      POP  BC         ;снять (IY+0) и C
      POP  BC         ;снять (#5C5F)
      POP  BC         ;снять (#5C65)
      POP  BC         ;снять (#5C68)
      POP  BC      ;снять адрес возврата
                   ;в ленточный загрузчик
      LD   BC,#0022   ;имитация BC после
             ;загрузки...надо улучшить!!!
      CP   #01        ;Cy=0 - error
      RET  NC     ;Z=1 - loading error,
                  ;Z=0 - wrong chunk type
      LD   A,H
      CP   #01
      RET ;если ZXVGS (или файл "TAP.RZX"
          ;не найден, вызывается стандар-
          ;тный обработчик ошибок 
taperr POP  HL 
      LD   (#5C3D),HL ;всё это изменено
      POP  HL
      LD   (IY+0),H
      LD   C,L      ;добавлено 1999-12-08
      POP  HL
      LD   (#5C5F),HL
      POP  HL
      LD   (#5C65),HL
      POP  HL
      LD   (#5C68),HL
      LD   B,#00    ;добавлено 2002-03-21
      JP   #05E7 
;LD-EDGE-1 - стандартная загрузка с ленты 
;продолжается 

           TRD.RZX - Драйвер
          образа диска TR-DOS

    TRDOS.RZX - Драйвер диска TR-DOS

        TZX.RZX - Имитация ленты

  SCL.RZX - Эмулятор контейнера TR-DOS

Фатальные ошибки:
SCL.RZX: Unknown function #nn  
SCL.RZX: Unknown call to #nnnn

RSX не в силах загрузить эту TR-DOS прог-
рамму. Попытайтесь скопировать её в файлы
"*.$B" или на образы дисков: "*.TRD" или
"*.FDI".

     SLT.RZX - Загрузчик снапшотов

     SNA.RZX - Загрузчик снапшотов

     Z80.RZX - Загрузчик снапшотов

Для загрузки снапшота "*.Z80" просто выбе-
рите его из SHELL.V00. Загрузка занимает
некоторое время, так как файл упакован.
Белые линии на бордере и жужжащий звук оз-
начают, что декомпрессия в процессе. После
правильной загрузки появляется главное ме-
ню,которое предусмотрено для использования
опции pOke. Выберите Continue для запуска
снапшота.

Не все снапшоты можно загрузить через
Z80.RZX. Помните, что этот формат предназ-
начен для эмуляторов, а не для реальной
аппаратуры. Без особого железа возможна
проблема с прерываниями. ZXVGS имеет здесь
ограничение - режим прерываний (IM) выби-
рается на основании содержимого регистра
I. Для I=#3F выбирается IM 1, для всех ос-
тальных значений - IM 2. Однако снапшот
можер иметь включенный режим IM 1 при
I<>#3F! А в этом случае ZXVGS устанавлива-
ет IM 2.

Z80.RZX открывает банки ZX128 и AY-3-891X,
если возможно.

Фатальные ошибки:
Z80.RZX: Wrong file structure  
- RSX не может распознать содержимое файла
Z80.RZX: No I'face 1 support
Z80.RZX: SamRam not available
- RSX не может запускать снапшоты с подде-
ржкой дополнительной аппаратуры.
Z80.RZX: ZX128 banks required
Ваша железяка не позволяет переключать ба-
нки памяти через порт #7FFD, чего требует
снапшот.
Z80.RZX: AY-3-8910/2 not found
Снапшот требует наличия звукового сопро-
цессора на портах #BFFD и #FFFD, а вы его
не имеете или же отключили.

        ZXVGSVBM.RZX - Менеджер
           виртуальных банков

------------------------------------------ 
(c) 2002-07-03 18:59:04 Jarek Adamski 
{zxvgs@yarek.com},{http://zxvgs.yarek.com} 




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

Похожие статьи:
Авторы - Об авторах газеты.
Происшествия - Файл KILLDISK - на мониторе крест и диск убит...
Вступление - Ну вот, это вроде пятая (или шестая), виртуальная тусовка в нашей сети.

В этот день...   19 ноября