Skip to content

Latest commit

 

History

History
236 lines (207 loc) · 12.6 KB

README.md

File metadata and controls

236 lines (207 loc) · 12.6 KB
//////////////////////////////////////////////////////////////////////////
//                                                                      //
// Orion/Z (Orion-128 + Z80-CARD-II, ORION-Pro) emulator, version 1.08. //
//                                                                      //
//                                                                      //
//             Author: Sergey A.        <a-s-m@km.ru>                   //
//                                                                      //
//             Copyright (C)2006-2016 Sergey A.                         //
//                                                                      //
//   This program is free software; you can redistribute it and/or      //
//                  modify it in any ways.                              //
//   This program is distributed "AS IS" in the hope that it will be    //
//   useful, but WITHOUT ANY WARRANTY; without even the implied         //
//   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

Вашему вниманию представляется программа Orion/Z emulator. Это эмулятор домашнего компьютера Орион-128, описанного в журнале Радио N1 за 1990г., и модифицированного при помощи Z80 Card II (ленинградский вариант установки Z80 в Орион), а также модификацию Орион-ПРО (Orion-Power).

Технические характеристики эмулируемого компьютера:

  • процессор Z80 2.5 МГц (турбо: 3.5/5/7/10/20 MГц), режимы Z80 Орион-Сервис, Z80 Card II, Orion-PRO
  • память (ОЗУ) - 128..4096кб,
  • клавиатура - РК86, МС7007 Ленинград (совместимо с РК), МС7007 Москва(авторская),
  • ROM-BIOS - страндартный (128/ПРО), содержится во внешнем файле,
  • ROM-DISK - страндартный, содержится во внешнем файле, + расширенный режим (16 страниц по 64к, переключаемые битами D0..D3 порта 0FEh для Ориона-128 и расширенный до 2Mб маппер страниц порта 09h для ПЗУ ROM2 Ориона-ПРО)
  • КНГМД - эмуляция 1818ВГ93, 2 привода (ODI-файлы), порты F700..7003/F710..F713/F720/F714, эмулируется режим HD (ODI-диски более 800к),
  • ЧАСЫ (RTC) - эмуляция 512ВИ1 на порту F760/F761 (BlackCat inc.), 50h..51h (Орион-ПРО)
  • муз.процессор- эмуляция AY-3-8910 на портах BFFD/FFFD, 3Eh..3Fh (Орион-ПРО)
  • IDE (HDD) - эмуляция контролера IDE на 580вв55 (порт F500/F600), 56h..5Fh (Орион-ПРО)
  • SD-card - Эмулируются только SDC карты (non-SDHC, объемом до 1Gb). Аппаратно эмулируются 2 варианта:
  • последовательный порт (RS-232) - порты F764,F765 (схема на AtTiny2313).
  • Ethernet - эмулируются NE2K-устройства, в железе на примере RTL8019AS - порты F770..F77F, F780..F7FF
  • Принтер - эмуляция 2-х схем принтера CENTRONICS (порт F600)

Минимальные требования к PC:

Celeron 400Мгц / 64М RAM / 2M HDD free / Windows 9x, 2000, XP, Vista, W7

Запуск эмулятора

Программа не требует установки, работает из текущего каталога куда будет распакована, настройки хранятся в файле, одноименном исполняемому, но с расширением INI.

При запуске эмулятора можно передать параметры: имена файлов. Если это файл-снапшот, то он будет загружен; если это файл-образ_диска, то он будет установлен как образ диска "A". Второй параметр командной строки предполагается как образ диска "B". Также при запуске эмулятора можно передать параметры - имена файлов *.BRU, *.ORD, *.RKO. Эти файлы обычно содержат ORDOS-код. Эмулятор загружает их в RAM-диск "В" (ОЗУ второй страницы) так как они перечислены в командной строке (один за одним пока хватает места в ОЗУ второй страницы).

Можно, к примеру, создать в Windows ассоциации OrionZEm.exe с файлами ".ori", ".odi" и открывать такие файлы прямо из Проводника Windows по двойному щелчку. В этом случае все пути в файле настроек эмулятора (OrionZEm.ini) должны быть полными (формат вида "от текущего каталога: .\dir1\dir2\file" всего вероятнее не будет работать, т.к. текущий каталог при таком запуске уже скорее всего не является каталогом эмулятора).

  ВНИМАНИЕ: 
- если OrionZEm.exe запущен с параметрами, то автоматическое
восстановление автоснапшота из AutoSnap.ori не вызывается,
т.к. оно перекроет переданные параметры своими.
- при загрузке снапшоты восстаналивают полное состояние эмулятора
(т.е. включая файловые буфера ОС в памяти Ориона), но они не
восстанавливают содержимое файлов образов дисков/HDD (это не
дело эмулятора). Поэтому если между записью снапшота и его 
восстановлением содержимое файлов образов поменялось, то
возможны неувязки при записи в эти файлы программами Ориона
(например, в CP/M)!   Это не ошибка эмулятора!

На порту F600 кроме эмуляции IDE-контроллера добавлена эмуляция произвольных внешних устройств. Модели устройств хранятся в подключаемых модулях (плагинах) - специализированных dll, подключающихся "на лету" (без дополнительного конфигурирования эмулятора - просто копируя dll в каталог эмулятора, что не отменяет необходимости конфигурирования самих плагинов - у каждого плагина могут быть внутренние настройки - жмите "Configure plugin" на закладке "port F600" эмулятора). В настройках эмулятора один из плагинов (одно устройство на порт F600) выбирается из списка.

В плагине F600prn.dll реализован эмулятор принтера (печать в файл или на реальный принтер) для двух наиболее часто использовавшихся на Орионе вариантов схем подключения принтера с интерфейсом CENTRONICS. Печать тестировалась на лазерном принтере под Windows XP. В эмуляторе для тестирования применялась АСРМ 1.53 с драйвером LPR.COM А.Грачева (Centronix, A0..A7 - data, C7 - strobe, C3 - ready=/busy).

Утилиты

В составе эмулятора распространяется утилита HddUtil.exe, с помощью которой под Windows NT, 2000, XP, Vista можно создать посекторный образ HDD (как целиком, так и логическго раздела - партиции) в файле.

Аналогично работает утилита DiskUtil.exe, создающая ODI-образы дискет.

Запустите HddUtil.exe (или DiskUtil.exe) без параметров - программа покажет список своих ключей.

Образы HDD/дисков затем можно просмотреть и изменить их содержимое при помощи ODI.WCX и OHI-WCX - архиваторных плагинов для файловых оболочек TotalCommander / DoubleCommander / FarManager.

В общих чертах про ODI-"диски" и OHI-"диски".

Первое с чего нужно начать, это сопоставить виртуальным (эмулируемым программой OrionZEm) дисководам файлы-образы дискет. Это делается при помощи двух кнопок в панели инструментов эмулятора (в верхней части окна): на одной кнопке написано "А" - тут по нажатию в выпадающем меню можно выбрать файл-образ для дисковода А (floppy 0) или очистить привод - "извлечь дискету". Аналогично по кнопке "B" для дисковода В (floppy 1).

Образ диска с приводом сопоставлен (теперь он подсвечивается как hint на соответствующей кнопке дисковода панели инструментов), теперь нужно с него загрузиться. Если используется загрузка из ОРДОС (Монитор вываливается в Ордос), то нужно пользоваться загрузчиком DOS$ для CPM фирмы Орион-Софт (они называли их OSDOS v 2.4, 3.6) или загрузчиками BOOT$, MBOOT$ для прочих вариантов орионовских CPM.

Ньюанс: поведение Ориона по включению/сбросу зависит от того, какой тип Монитора (базовой программы - загрузчика в ПЗУ F800) использован: некоторые из них загружают с RomDisk-а ORDOS, некоторые сразу загружают CP/M с дисковода "А". Набор разных Мониторов и небольшое их описание лежит в подкаталоге .\ROM\ архива эмулятора. Файл Монитора указывается в настройках эмулятора.

Можно использовать Монитор (ROM-BOIS F800) такой, чтобы он по включению питания или RESET сразу грузился с дисковода А, без Ордос (будет грузить все версии орионовских CPM кроме упомянутых OSDOS). Для этого в окне настроек на закладке ROM нужно выбрать имя файла Монитора содержащего в суффиксе имени файла символ "D". Также нужно учитывать тип клавиатуры и выбирать соответствующий тип Монитора (в имени будут суффиксы "RK" или "MS"). Пример: M35zrkd.bin - Монитор версии 3.5, работает только на Z80, клавиатура RK-86, встроен загрузчик с дисковода.

Незагрузочные диски обычно могут быть 2х вариантов:

  1. Диски с исполняемыми файлами (программами или играми) под CP/М - классическую операционную систему 8-битных ПК, заточенную под работу с дисководами. Такие файлы имеют расширение COM (как в MS-DOS) и могут запускаться непосредственно из коммандного режима CP/M (набрав имя файла) или из графической программы-оболочки типа NortonCommander или BridgePanels.
  2. Диски с программами или играми под ORDOS - оригинальную систему, расчитанную на работу с Rom-Disk (ПЗУ) и квазидисками (ОЗУ). Обычно это диски с файловой системой CP/M, содержащие файлы с расширением ORD или BRU. Эти файлы нельзя непосредственно запустить из CP/M, их нужно скопировать на "квазидиск", а затем уже запускать под ОС ORDOS. Для копирования файлов BRU с дисков CP/M на "квазизиск" в ОЗУ можно воспользоваться программой ATLAS, расположенной в ROM-Диске эмулятора .\ROM\romdisk1.bin (его нужно указать как файл ROM-диска в настройках эмулятора). ATLAS в псевдографическом режиме выбирает с дискеты CP/M файлы .BRU (.ORD не понимает - их нужно под CP/M переименовывать в *.BRU) и копирует их на квазидиски ORDOS, а уже под ORDOS в командном режиме или оболочке NC с этими файлами можно работать.

OHI-"диски" это диски с образами HDD (CFcard,SDcard). На Орионе я решил делать так: винт разбивается на стандартные MBR-партиции - как в Windows/MSDOS. Поддерживается 4 стандартных master-партиции. И разбитый так винт можно подключать как к PC с виндой (винда работает со своей FAT-партицией, плюс утилитами можно сдампить в OHI-образ и обратно), так и к Ориону, который живет (грузится) в своей CP/M партиции и может монтировать другие CP/M партиции этого или второго винта.

Варианты загрузки с IDE (CF,SD) на Орионе:

  • при помощи ПЗУ F800 (один из: M35ZMSH.BIN, M35ZRKH.BIN, M36ZMSH.BIN, M36ZRKH.BIN,...). ПЗУ при включении питания вместо ORDOS сразу грузит MBR-сектор с master-IDE в ОЗУ по адресу 1:0000 (т.е. с начала второй физической страницы памяти) и передает туда управление. M35* работают с IDE с портoм 0F500h, M36* с портoм 0F600h. Суффикс RK обозначает прошивку для клавиатуры RK-86, MS - для клавиатуры МС7007 по лениградской схеме.
  • Вариант загрузки из ORDOS. ПЗУ F800 при этом может быть любым. ПЗУ F800 грузит ORDOS и передает ей управление. Под ORDOS используйте утилиту MBOOT$.ord (ее можно прошить в ROM-DISK), которая использует загрузчик, полностью аналогичный Мониторам, но корректирующий в загружаемом с IDE-F600 коде MBR-загрузчика и BOOT-сектора CPM все вызовы адреса 0F834h (это подпрограмма чтения с IDE 512б сектора в Мониторах М3*H.BIN) на вызов своей подпрограммы, которая читает с HDD соответственно схеме подключения, выбранной в меню программы MBOOT. Дальнейшая загрузка происходит так, как написан MBR (в настоящее время он позволяет грузиться по выбору с любого из 4-х primary разделов master-HDD, где есть загрузочный образ CPM. Выводится меню - список меток_дисков [offset +20h] соотвествующих разделов). MBR (а далее и BOOT-сектор раздела) используют п/п 0F834h (или п\п предоставляемую MBOOT$.ord). После начальной загрузки CP/M работает уже собственным BIOS, не через Монитор или MBOOT.

Эмуляция RS-232

В Версии 1.06 добавлен режим эмуляции последовательного порта (RS-232), порты F764,F765. Эмулятор осуществляет ввод\вывод в реально существующий в РС СОМ-порт. Поэтому есть 2 варианта использования этого режима: в настройках эмулятора выбрать реальный СОМ-порт и подключить к нему некое устройство, либо создать в Windows пару виртуальных СОМ-портов на нульмодемном соединении (я для этого использую бесплатную утилиту com0com, но есть и платные аналоги), на одном конце повесить эмулятор (выбрать порт CNCB0), а на другом (CNCA0) -
эмулятор устройства или программу терминал.

Соответствие некоторых спецкнопок в эмуляторе (RK = PC):

УСТ = Home
ПС = End
СТР = Ins
ЗБ = BackSpace
AP2 = Esc
F1..F5 = F1..F5
Ctrl+G = Del
Ctrl+R = PgUp
Ctrl+C = PgDown
РусLat = F8=F9=Scroll (смотря как настроено в настройках
			 эмулятора на закладке "keyboard")

C учетом "TurboPascal-style"-расширителя (включается в настройках эмулятора на закладке "keyboard") добавляются PC-комбинации Ctrl+кнопка для курсорных и фукциональных кнопок, которые транслируются Ориону в "CTRL-Q-кнопка"-сочетания. За соответствием клавиш этого режима (если кому-то нужно) - добро пожаловать в исходники (mod8255.pas).