Язык C для Ориона 128 для CP/M-80

Программное обеспечение для CP/M-80 среда разработки программ язык программирования С

Продаю платы и наборы микросхем, куплю микросхемы Платы и комплектующие на ПК Орион-128

 

Скачать руководство

Компилятор C -  https://www.bdsoft.com/resources/bdsc.html     -   BDS C: An 8080/Z80 C Compiler BDS C: an 8080/Z80 C compiler written by Leor Zolman and now in the Public Domain - available for download here  (ссылка на первоисточник)

 

Компилятор Языка С - Компилятор_языка_Си_для_микроЭВМ_Хендрикс_Д_z_lib_org.pdf  - скачать книгу Хендрикса в PDF

 

CP/M-80 программы от ERROR404

Образы позже.....

https://github.com/serge-404  - проги описаны тут, образы можно скачать непосредственно у С. Акимова по ссылкам

https://github.com/serge-404/HI-TECH-C-V3.09

Complete package of HI-TECH C V3.09 CP/M freeware C-compiler (except lib sources). It is the best Z80 native CP/M ANSII C compiler. CP/M emulator (cpm.exe, rccp.cpm from K.Murakami sensei) and GNU make - also included.

Скачать образ

 

 

https://github.com/serge-404/HI-TECH-C-V3.09?ysclid=lfp0jdp253337096019

Полный пакет бесплатного C-компилятора HI-TECH C V3.09 CP/M (кроме исходников lib).Это лучший нативный компилятор Z80 для CP/M ANSII C. Эмулятор CP/M (cpm.exe, rccp.cpm from K .Murakami sensei) и GNU make - также включены.

Скачать образ

 

 

https://github.com/serge-404/U.Z.I.X.

UZIX is a UNIX Implementation for MSX (initially) and for Orion-128/PRO (this repo)

Инструментарий.

Для компиляции используется единственный по сею пору нормальный компилятор C для Z80 - HitеchC v3.09 образца 1987года: нативный CP/M компилятор, при желании всю сборку можно провести на самом Орионе. .
В дополнение к нему чтобы комфортно разрабатывать под РС использую:

файловый эмулятор CP/M под винду cpm.exe - он умеет возвращать винде код завершения HitechC, что нужно для make.
GNU make для автоматизации (пакетной) сборки проекта. Или аналог.
ProgrammersNotepad, где в проекте UZIX.pnproj (фактически - структурированном списке файлов) описал используемые файлы. На кнопку F8 можно настроить сборку по make (Tools->Options->Tools->Scheme C/C++ -> Add). Но чаще после внесения всех правок в PN, я просто запускаю make под cmd.
Для компиляции драйвера IDE/SD использую пакет макроассемблера M80/L80 от Микрософт, тоже 80-х годов прошлого столетия - поныне лучший макроассемблер для Z80/8080.
Комплект компилятора в сборе (без ProgrammersNotepad): https://github.com/serge-404/HI-TECH-C-V3.09

На каталог куда вы распакуете файлы компилятора должны быть настроены переменные окружения PATH и CPMPATH

Концепция. Ядро UZIX - это обычная CP/M-задача, которая будет "крутить" UNIX-процессы в расширенном ОЗУ. Архитектура будет такая:

CMP/80 авторская cpm/80 2.30

В блоке общего ОЗУ COMMON размещаются части, которые должны быть общими у ядра и процессов (udata, стеки, некоторые переменные) и подпрограммы для межстраничного копирования, межстраничного JP/CALL/RET, вектор IM2 и начальный обработчик прерывания. Там же сидят порты (1к), и 2к ROM F800 в принципе ненужного для uzix, съедая 3к драгоценного ОЗУ, но так уж устроен Орион.

Ядро пока 29кб. Пишу для Орионовского клона CP/M АльтаирДОС с TPA до 58 кб, т.е. хватит места и TCP/IP впилить, и поддержку ФС FAT.

В страницах процессов сразу "из коробки" есть недоэмулятор CP/M: эмулируется CP/M консоль (ввод-вывод на экран/с клавиатуры) - BDOS функции 1..12, BIOS функции 2..4, остальные функции BDOS (дисковые в-основном) возвращают FF-нет файла. Т.е. будет работать любое корректное ПО CP/M не лезущее в диски, например ASCII-игры, программы типа "hello world" и т.п. В планах полный эмулятор CP/M, уже внешний - загружаемый.

В качестве дисков используется IDE/SD через CP/M-овский драйвер "сырого доступа" IDEBDOS, схема MBR-партиций (поддерживаются только 4 основные партиции на двух физических приводах - итого 8 (fd0..fd7) партиций, плюс fd8..fd9 - целые "сырые" диски (от LBA0=MBR до LBAmax)), номер партиции передается в утилиты (проверяемая/копируемая/где создается FS) и в ядро (root-партиция, остальные через mount) как параметр командной строки.

Из общего архива исходников собирается и ядро (idebdos.com, uzix.com) и утилиты (набор BD.COM, FSCK.COM, MKFS.COM, UCP.COM; или отдельно fdisk.com). Сборка проходит за 15 секунд. Собирается так:

правим мakefile - изменяем так: "DEFINES = -DORI_UTIL", или так: "DEFINES = -DORI_UZIX", или так: "DEFINES = -DORI_FDISK", в зависимости от того утилиты, ядро или fdisk компилируются соответственно.

запускаем cmd, переходим (cd) в каталог где лежат исходники

cmd> make clean & REM удаляем объектники - их всегда(!) надо пересобирать
cmd> make kernel & REM или "make utils" или "make fdisk.com" - смотря что в DEFINES

Скачать образ

 

 

https://github.com/serge-404/CPM32

Это эмулятор операционной системы CP / M. Появляется как гибридная вилка проектов Keiji Murakami (часть эмулятора CPM) и Mockba the Borg (часть эмулятора Z80) с некоторыми исправлениями для поддержки подмножества кодов управления экраном ORION-128 VT52. Скомпилировано с BCB5. (Windows) и gcc (Linux).

Проблема с getch() в Windows: клавиша DEL используется вместо BACKSPACE (и BACKSPACE действует как LEFT) из-за особенностей обработки кодов cmd.exe 08h/7Fh.

Use "./cpm -?" for short help:

$ ./cpm -?
CPM -- CP/M-80 program EXEcutor for LINUX V0.5
Copyright (C) 2004-2012 by K.Murakami
Usage: CPM [-hxapdCkr][-w[0-9]] command arg1 arg2 ...
-h .. return HI-TECH C exit code
-x .. return ERROR if A:$$$.SUB deleted
-a .. select A: (program directry)
-p .. pause before exit
-d .. disable auto drive assign
-C .. args to uppercase
-o .. orion128 ROM F800 mode (+allow exec RKO,ORD)
-8 .. do not KOI8 conversion
-r .. do Robotron-1715 escapes
-k .. do Kaypro(adm3a) escapes
-w[0-9] .. wait on console status check (9:max)

Environment variables:

CPMPATH - default CP/M binaries dir
ORDPATH - default ORDOS binaries dir (Orion-128 mode)

Скачать образ

 

 

https://github.com/serge-404/AltairDOS

CP/M 80 V2.2 (w/extensions) clone for Orion-128 and Orion-PRO homebrew 8-bit computer

Скачать образ

 

 

https://github.com/serge-404/OriZEmu

Вашему вниманию представляется программа 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 варианта:
совместимо по схеме с n8vem (port F762): http://n8vem-sbc.pbworks.com/browse/#view=ViewFolder&param=N8VEM%20Schematics
совместимо по схеме с MSX MMC-drive V1 (port F762, F763): http://msx.retro8bits.com/sd-mmc-drive.html
последовательный порт (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х вариантов:

Диски с исполняемыми файлами (программами или играми) под CP/М - классическую операционную систему 8-битных ПК, заточенную под работу с дисководами. Такие файлы имеют расширение COM (как в MS-DOS) и могут запускаться непосредственно из коммандного режима CP/M (набрав имя файла) или из графической программы-оболочки типа NortonCommander или BridgePanels.
Диски с программами или играми под 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).

Скачать образ

 

 

Купить платы, наборы микросхем на Орион-128, КР565РУ5В, КР565ру7В, к565ру5г AU, к565ру7г Au в позолоте, куплю микросхемы

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу