Skip to content
Orion-128 and Orion-PRO homebrew 8-bit computer emulator
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ROM
UTILS
CPDrv.pas
EthThrd.pas
F600common.pas
F600printer.pas
F600prn.cfg
F600prn.dll
F600prn.dof
F600prn.dpr
F600prn.res
F600prnf.dfm
F600prnf.pas
F600prnp.dfm
F600prnp.pas
HDDUtils.pas
HddUtil.cfg
HddUtil.dof
HddUtil.dpr
HddUtil.exe
HddUtil.res
IpExport.pas
IpFunctions.pas
IpHlpApi.pas
IpIfConst.pas
IpRtrMib.pas
IpTypes.pas
NetworkFunctions.pas
OrionZEm.cfg
OrionZEm.dis
OrionZEm.dof
OrionZEm.dpr
OrionZEm.exe
OrionZEm.inc
OrionZEm.ini
OrionZEm.res
README.md
ScrThrd.pas
_bootsector.txt
_build.bat
_history.txt
_ports.txt
_read_me.txt
_rko.txt
frNewVal.dfm
frNewVal.pas
frmAbout.dfm
frmAbout.pas
frmSaveOrd.dfm
frmSaveOrd.pas
mainwin.dfm
mainwin.pas
mod146818.pas
mod1793.pas
mod232.pas
mod8019as.pas
mod8255.pas
modAY8912.pas
modF600.pas
modHDD.pas
modOrion.pas
modSD.pas
modWaveOut.pas
modZ80.pas
settswin.dfm
settswin.pas
uCRC32.pas
uIniMngr.pas

README.md

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// 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).

You can’t perform that action at this time.