forth32, не пробовали вместо C80 пользоваться кросс-компилятором С от vinxru ?
https://github.com/vinxru/OldLines/tree/master/C8080
forth32, не пробовали вместо C80 пользоваться кросс-компилятором С от vinxru ?
https://github.com/vinxru/OldLines/tree/master/C8080
ПК8010 "Корвет"+ExtRom+AY, Atari 65XE+SDrive, Дельта-С(52ИС)+AY, Scorpion ZS 1024+SMUC
Спасибо конечно, но.... Странная штука этот C8080. Вроде бы и на гитхабе лежит, но при этом там только бинарник по винду, и никаких исходных тескстов. Следовательно, толку мне от него никакго.
А вообще-то я, конечно, задумывался о кросскомпиляции. Тот же GCC есть под Z80 - http://z80gcc.sourceforge.net/, есть и специализированные кросс-компиляторы, типа http://www.bdsoft.com/resources/bdsc.html. Их вообще как грязи.
Только есть 2 проблемы. Во-первых, к компилятору нужна билиотека libc, поддерживающая интерфейс к BDOS/BIOS, причем именно версии 2.2, там API от версии к версии прилично различаются. А вот с этим уже есть проблемы. Версии, которые я видел, написаны для Z80, и вовсю используют отсутствующие в 8080 команды.
Во-вторых, отлаживать-то все равно придется в эмуляторе корвета. А как туда затащить скомпилированные .COM-файлы? После каждой трансляции впихивать их снаружи в KDI-образ? Неудобно, да и особо нечем. cpmtools глючит c записью в корветовски образы, в свою программу я так запись и не приделал. А других подходящих инструментов для работы с файловой системой CP/M я не нашел...
Есть пару программ под Win с GUI (эмулятор VirtualKorvet, к примеру, открывает менеджер по CRTL+клик по дисководу), но я так понимаю здесь нужны Command Line и Linux.
И оно есть. Снова благодарим ELS, он писал такую программу. Не знаю как оно соберется под Linux, но, думаю, проблем особых не будет.
Вот оригинальные исходники ELS (xKorvet13.zip).
Вот исходники несколько доработанной версии (xkorvet13f2.7z) от Marinovsoft.
Вот Readme, которые шли с виндовыми бинарниками (там описаны command line параметры):
readme.txt
для FAR надо добавить в файл
C:\Program Files\Far\Plugins\MultiArc\Formats\custom.ini
или
C:\Program Files\Far2\Plugins\MultiArc\Formats\custom.ini
секцию
и положить xkorvet.exe чтоб он был в пути запуска
например в папку фара
[KDI]
Extension=kdi
TypeName=Korvet Disk Image
List="xkorvet l"
Errorlevel=1
Start="^Begin:"
End="^End."
; 01\RUNREDIT.COM 25856
Format0="nnnnnnnnnnnnnnnnnnnnn zzzzzzzz"
Extract=xkorvet e %%A %%f
ExtractWithoutPath=xkorvet e %%A %%f
Delete=xkorvet d %%A %%f
Add=xkorvet a %%A %%R\%%f
[свернуть]
read.me
2003-02-06
dir :: fix len print for (E5)
1.1
2003-06-02 - Ver. 1.3
Add :: Добавлена обработка USER
Add :: fixed - если не мог открыть файл - выходил молча.
Add :: Ошибки передаем на верх, позволяет увидеть в фаре.
Wipe:: Сделан, очищает DIR & Empty Cluster
all :: Ругаемся на неверный USER, Е5 в том числе
all :: отдельно удаляем первый слеш
todo:
+ режим очистки свободного места.
+ очистить входы в директорию и свободные кластеры
сделать undocumented?
сделать режим сжимания свбодных входов и кластеров
(дабы хвост директории и диска были пустыми).
[свернуть]
toDo
утилита для работы с образами дисков ПК "Корвет" - KDI
1) Создание пустого диска ЛЮБОГО размера
по умолчанию - стандартного 720к
в теории можно сделать диск
255 секторв Х 255 дорожек Х 2 стороны Х 1024 байта сектор = 128 метров.
с возможностью устанвкм ДИСК БИОСа из файла
2) копирование файла с ПЦ на ДИСК
3) копирование файла с ДИСКА на ПЦ
4) Удаление файла с диска
5) Очистка пустого места (пустых кластеров и входов в директорию)
6) манипуляция с биосом диска.
7) Диагностика и лечение диска от ошибок.
9) Редактор Диска ???
10) режим - указываем директорию, и все из нее помещается в диск
или файл со списком на вход.
общие замечания
USER - отображать как директории USER00/
как бороться с именами вида cp/n90.sys ?????
BIOS - отображать отображать как BIOS/
или как SYSTEM/ содержащей в том числе файл BIOS.SYS??
и кроме этого допустим INFO.TXT
[свернуть]
А насчет кросс-компилятора от vinxru, может с ним связаться и попросить исходники?
---------- Post added at 14:25 ---------- Previous post was at 13:43 ----------
В общем, я ему отписал, может поделится.
---------- Post added at 20:38 ---------- Previous post was at 14:25 ----------
Из переписки:
Ох, ё =(Сообщение от vinxru
Последний раз редактировалось Serebriakov; 12.07.2014 в 21:46.
Исходники он удалил.
ПК8010 "Корвет"+ExtRom+AY, Atari 65XE+SDrive, Дельта-С(52ИС)+AY, Scorpion ZS 1024+SMUC
Да, видел я те исходники. Сходу их собрать не получилось, а разбираться, почему не собирается, мне в тот момент было лень. Теперь, конечно, можно вернуться к этому вопросу, ну или свою программу доделать. Только есть более актуальные задачи.
А так - идею кросскомпиляции я пока отложил, потому как вначале надо найти подходящую STDLIB. Ну и просто интересно стало снова почувствовать себя в шкуре разработчика, пишущего программы на 8-битной платформе конца 80-х.
странно, он собрался как-то с пол пинка
правда мне от негу было нужно только чтение в тот момент
запись и чтение нормально работает только в USER 0
USER там предсталяются как директории типа 05/file.xet
вывод по быстрому добавил,а вот обработку для записи/удаления не правил
еще там надо ICONV прикрутить или в фильтр для MC,
т.е. для средств cross компиляции должен подойти
для кросс девелопмента попалась такая забавная штука
http://www.arrakis.es/~ninsesabe/aliados/
она транслирует вызовы cp/m в файловую систему
т.е работает с текущим содержимым директории
там не всё работает
как я понял автор его делал как раз для кромкомпиляции в Hi-Tech C
может тебе подойдёт
это единственный эмуль cp/m я откопал который не требует образа а работает нативно с FS
Последний раз редактировалось esl; 12.07.2014 в 22:45.
Первый патченый биос - загрузился
но сейчас виснет, при некоторых условиях
ловлю баги
как откатаю первый - дальше уже будет проще
да, эмулятор с исходниками - штука удобная
сегодня ловил - пишется комманда в эмулятор - а он молчит
оказалось сброшен PPI2C.7
оказалось его глупый биос в HWINIT переинициализирует
---------- Post added at 21:50 ---------- Previous post was at 21:43 ----------
Слушай,!!!
твоя идея навеяла !
по комбинации кнопок (на ее обработку много место в резиденте не нужно)
тупо грузи файл через апи в 0x100 и передаем ему управление !
и всё, не надо хранить на диске!
---------- Post added at 23:27 ---------- Previous post was at 21:50 ----------
Кстати это снимает и проблему с стдлиб
Т.к оно пуститься уже при наличии доса ...
Последний раз редактировалось esl; 13.07.2014 в 00:43.
О, я на это тоже налетал, когда биос делал. Они называют это что-то вроде инициализация принтера. И посылают в порт байт со сброшенным 8 битом. Опять то же самое разгильдяйство...
Тебе теперь придется в каждом биосе отловить это место и запатчить. Сочувствую...
Хорошая идея. Но тут есть ряд моментов.по комбинации кнопок (на ее обработку много место в резиденте не нужно)
тупо грузи файл через апи в 0x100 и передаем ему управление !
1. Хоткей должен работать только в момент ожидания ввода командной строки. То есть встраиваться надо не в клавиатурный драйвер, а в BDOS. Зато хоткей можно выбрать абсолютно любой, тот же ctrl-a например.
2. Как передавать программе параметры командной строки? Или вводить их в диалоге уже после запуска программы?
Возможно, уж коли встраиваться в BDOS, проще добавить туда еще одну команду. Тут подумать надо.
А как это снимает проблему stdlib? КАк раз и нужна библиотека, работающая через BDOS. То есть, например, printf должен работать черезКстати это снимает и проблему с стдлиб
Т.к оно пуститься уже при наличии доса ...
Bdos OUTCON (функция 2). Тот stdlib.rel, что идет с C80, именно так и работает. А те, что идут с кросскомпилятрами, работают или непонятно как, или используют расширения Z80.
что-то у меня непонятка
ком файлы до 8к читаются
большие или BDOS ERR ON
или виснет с эффектами
На всякий случай.
1. Проверь, правильно ли заполняется блок DPB при чтении инфосектор
2. Также проверь, не ошибся ли ты с указателем на буфер DMA. Не забудь, что он беззнаковый.
А то ты тут в эмуляторе, в ext_rom.c, крупно ошибся с этой самой беззнаковостью при чтении параметров из командного пакета
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)