nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 23 May 2018 16:51



Reply to topic  [ 75 posts ]  Go to page Previous  1, 2, 3, 4, 5
Аппаратный эмулятор Радио-86РК на ESP8266 
Author Message
Novelist

Joined: 03 Mar 2018 02:22
Posts: 32
Reply with quote
Shaos wrote:
А что за псевдотест такой? :roll:

Это справка от какого-то эмулятора на FPGA. Дали для теста псевдографики.


05 Apr 2018 00:38
Profile
Novelist

Joined: 03 Mar 2018 02:22
Posts: 32
Reply with quote
Готов 20-й билд прошивки:
https://github.com/klad-me/RK8266/tree/master/builds/20
Изменения:
- Скачивание и закачивание образа файловой системы (для быстрого бэкапа и восстаноавления для обновления прошивки)
- Автоматическая перезагрузка после обновления прошивки
- Более правильное управление частотой эмуляцией (считаем такты ПДП и притормаживаем проц).

Щас есть мысли по эмуляции звука на ВИ53. Если у кого есть - скиньте, пожалуйста, программы для теста звука и запись, как оно вживую работает.


06 Apr 2018 13:04
Profile
Novelist

Joined: 03 Mar 2018 02:22
Posts: 32
Reply with quote
Сделал 21-ю сборку:
https://github.com/klad-me/RK8266/tree/master/builds/21
Тут просто добавил справку по кнопке "Menu" (кнопка слева от правого Ctrl).
В справке сейчас:
- Команды монитора
- Карта памяти
- Подпрограммы монитора
- Таблица экрана
- Таблица машинных кодов
Если у кого есть подготовленные тексты для справки (или кому не влом сделать) - жду в личку.


07 Apr 2018 10:46
Profile
Junior

Joined: 24 Mar 2018 05:11
Posts: 3
Reply with quote
Вот тут сделали генератор цветного PAL сигнала на ESP32 - http://bitluni.net/esp32-color-pal/


16 Apr 2018 23:28
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 16525
Location: Colorado
Reply with quote
ESP32 несколько помощнее железяка - на ней много чего сделать можно...

_________________
:eugeek: https://twitter.com/Shaos1973


17 Apr 2018 01:28
Profile WWW
Novelist

Joined: 03 Mar 2018 02:22
Posts: 32
Reply with quote
В общем готова первая версия Специалиста для этого железа. Все криво-косо, но как-то работает. Загрузки с магнитофона пока нет, зато можно грузить любые файлы в область ПЗУ или ОЗУ через WiFi. Переключение в режим WiFi по кнопке "Pause/Break". На web-страничке внизу будет группа "Образы ПЗУ". Туда можно класть файлы с названием XXXX, где XXXX - 16-ричный адрес загрузки в ПЗУ или ОЗУ.
Образ загрузчика уже есть в эмуляторе, но его можно поменять создав файл C000.
Я пробовал использовать Монитор+Бейсик с сайта specialist-mx.ru, но что-то как-то криво все работает. Выход в монитор из загрузчика по F7+Enter. В мониторе клава вроде более-менее адекватно реагирует (перекодировки русского пока нет). А вот при выходе в Бейсик по команде 'J', клава работает странновато. Не работает Пробел, ЗБ, ну и много чего еще. Плюс еще в листинге мусор, возможно так и должно быть при первом включении ? Может я всетаки образы кривые скачал ?
Ну вот и сами пошивки (первая для программатора, вторая - для WiFi):
http://klad.me/spec8266/0/0x00000.bin
http://klad.me/spec8266/0/fota.bin


29 Apr 2018 23:35
Profile
Novelist

Joined: 03 Mar 2018 02:22
Posts: 32
Reply with quote
Готова новая сборка №23:
https://github.com/klad-me/RK8266/tree/master/builds/23
Что нового:
  • Изменена привязка кнопок управления эмуляцией (смотрим по кнопке Esc)
    Из нового - кнопки F5-F10 теперь делают переход на адрес E000+n*4, т.е. можно сделать ПЗУ с быстрым доступом к каким-то функциям.
    Хотел попробовать положить в ПЗУ Бейсик, но все, что у меня есть больше 6кб, да и нечем поменять адреса в программе. Может кто-то решит заморочиться ?
  • 4 шрифта с переключением аттрибутами GPA, т.е. все 4 шрифта могут быть на экране одновременно
    1 шрифт стандартный, доступен по адресу C400 (только для чтения)
    3 загружаемых шрифта, доступны по адресам CC00, D400, DC00 (можно менять)
    ВГ75 теперь отвечает только по адресам, у которых бит адреса A10 установлен в 0
  • Дополнительные 8кб ОЗУ по адресу A000 вместо ВВ55
  • Дополнительные 6кб ПЗУ, т.е. всего сейчас эмулируется 8кб с адреса E000 (только чтение)
    ИК57 соответственно доступна только по записи (да и не эмулировал я чтение из нее)
    Образы ПЗУ можно загружать по WiFi, там теперь отдельный раздел. Имя файла должно быть адресом, например монитор можно положить как файл F800.bin. По умолчанию стандартный монитор загружается в F800, но его можно и заменять.
  • Немного доработана справка
    Обновил карту памяти.
    Добавил справку по экранным аттрибутам.
    Добавил справку по псевдографике.

Я далеко не электронщик, т.ч. возможно некоторые решения будет сложно повторить в реальном железе. Так что жду комментарии, что надо исправить, чтобы в реале мог существовать такой Радио-86РК.

Ну и ждем новых программ, которые будут поддерживать эти новые способности ! :)

P.S. Желаю поиметь настоящий РК86, т.ч. готов рассмотреть обмен на самодельный эмулятор РК86 в корпусе клавиатуры. Вдруг у кого лишний валяется.

P.P.S. Планирую сделать закупку комплектации под РК86 на ESP8266.
Я вижу 3 варианта: 1.Только печатная плата, 2.Собранная печатная плата с разъемами, 3.Собранная мини-печатная плата для самостоятельной установки внутрь клавиатуры.
Кому интересно - прошу в личку. По цене пока определенки нет, т.к. неизвестно кол-во нуждающихся. Собираю желающих до 9 мая включительно. 10-го буду принимать решение, что в каком количестве и сколько может стоить. Если все будут согласны - закажем.


03 May 2018 12:23
Profile
Writer

Joined: 19 Feb 2017 04:46
Posts: 24
Location: 600 км от Москвы
Reply with quote
Сегодня праздник у любителей РК86. Наконец-то появился первый приличный клон РК.

Самое ценное, что наконец-то есть альтернативный фонт. Это самая простая доработка РК (это лишь кусок проволоки и допрошивка в РФ2 второго фонта), но просто чудесным образом меняющая свойства компьютера.

Во-первых, это даёт простым и удобным для программиста способом инверсию знакомест (хотя и только для половины символов) и настоящие рамки. Хотя и сам ВГ75 может делать инверсию знакомест с помощью атрибута RVV (ReVerseVideo), но для программиста это очень неудобно, т.к экранные адреса позиций по строке съезжают, (причём курсор остаётся на месте). Так что это удобно только для инверсии всей строки или всего экрана. Видимо потому, что это очень трудно поддержать программами, авторы РК это и не использовали. Инверсия знакомест полезна потому, что даёт возможность выводить балку подсветки в нортоне и возможность делать инверсные окна.

Во-вторых, это даёт наконец возможность РК86 получить новые видео режимы. Например, видеорежим от Апогея 192*102 (60 Гц) позволяет делать полноценно графические игры, с графикой как у игровых консолей из начала 80-тых.

В-третьих, используя своеобразный фонт представляющий тайлы из которых составляются спрайты и фон игры, можно делать игры визуально очень похожие на игры полноценно графических компьютеров. Это принцип Дэнди, он выгоден для игр на слабых машинах.

В-четвёртых, если это кому-то надо, можно иметь на экране большие и маленькие русские буквы. Понятно, что для подготовки текстов для вывода на принтер это уже не актуально. Но, думаю, что инструкции к играм выглядят лучше в КОИ-8.

К сожалению, имеющиеся эмуляторы пока ни хрена не поддерживают коммутацию фонта, ни битами запасного ППА D14 (как сделано у меня на реале), ни атрибутами ВГ75, как сделано в данной конструкции. Вероятно, это несложно сделать модернизацией конфига, т.к при эмуляции Микроши фонт уже переключается сигналом INTE. Но это сделать могут только авторы эмуляторов.

Все остальные улучшения (причём намного более сложные) не меняют ничего так кардинально (как добавка доп.фонтов), но тоже немного расширяют возможности и позволяют увеличить удобство пользования. Из этих доработок наиболее полезно дополнительное ОЗУ.

heavy wrote:
кнопки F5-F10 теперь делают переход на адрес E000+n*4, т.е. можно сделать ПЗУ с быстрым доступом к каким-то функциям.

А почему не по адресу E000+n*3, как сделано в ПЗУ D000 для Специалиста (по нажатию НР+Fn) ? Ведь подставляться будет команда JMP, а она 3, а не 4 байта.

Клавиша <F5> есть в самом РК86, выдаёт код 04 (это опубликовали не в базовом цикле 1986 года, а чуть позднее в 1987).

Кстати, эти переходы на адреса E000+n*3 может делать сам КР580 без помощи процессора с тактом 160 МГЦ. Достаточно просто применить другое ПЗУ. Когда-то я освободил в ПЗУ РК86 ~100 байт и этого вполне достаточно, чтобы встроить вызовы по фиксированным адресам по сочетанию клавиш (удерживая УС и СС нажать F1...F5).

Т.о в реальном РК86 тоже можно ввести клавиатурные прерывания, - по сочетанию клавиш выполняется команда CALL на фиксированный адрес. Программные клавиатурные прерывания полезны. Например, чтобы не набирать GE000 для старта RK-DOS удобнее нажать УС+СС+F2. Также можно, например, по УС+СС+F1 стартовать ОС из ROM-диска, а по УС+СС+F5 вылетать в отладчик с возможностью вернуться в прогон программы.

heavy wrote:
Возможно некоторые решения будет сложно повторить в реальном железе. Так что жду комментарии, что надо исправить, чтобы в реале мог существовать такой Радио-86РК.

Загрузку фонтов конечно вряд ли кто станет делать, но это и не надо. В реале это заменяется перепрошивкой ПЗУ знакогенератора (например 27256).

Открытие ОЗУ A000...BFFF при 565 РУ5 делается проводками за пару минут с затратой 2 диодов и резистора. А если ОЗУ на 565 РУ3, то легко поставить панельку 28 ног (дырки под неё уже есть) и поставить туда 2764.

Установка ПЗУ на E000...FFFF чуть посложнее, примерно так. Установка ПЗУ окном в 8К удобнее, чем пусть и бОльшим окном, но некратного размера, т.к это позволяет в таком окне сделать страничное расширение ПЗУ.

heavy wrote:
Дополнительные 6 кб ПЗУ... Хотел попробовать положить в ПЗУ Бейсик, но все, что у меня есть больше 6 кб, да и нечем поменять адреса в программе. Может кто-то решит заморочиться ?

В 6 кб уместится только TINY бейсик. Зато в 6 кб можно уместить редактор (4 кб) и ассемблер Микрон (2 кб). Это чуть лучше, чем в ОЗУ, т.к сохраняет максимальный размер буфера текста. Для реала эти 6 кб разумнее всего отдать DOS.

А для эмулятора полезнее всего истратить эти 6 кб на отладчик. Причём и для эмулятора и для реала можно сделать выход в отладчик "прерыванием". Т.е по клавиатурному прерыванию (УС+СС+Fn) вылетаем на вход отладчика, который сохраняет все регистры в области A000, а по G происходит возврат в программу, прогон которой продолжается в том же месте.

Если ПЗУ F800 программно (программой КР580) можно менять, то можно по нажатию какой либо функциональной кнопки сделать перезагрузку ПЗУ F800 таким ROM-BIOS-ом, при котором экран в области B6D0...BFFF, раб.ячейки ПЗУ на B600...B633, а сплошная область для программ составляет полные 32 кб (что полезно для CP/M и больших игр написанных на Паскале). Перетрансляция ROM-BIOS под другие адреса - работа на 10 секунд.

heavy wrote:
шрифт стандартный, доступен по адресу C400 (только для чтения)

Это незачем. Какой стандартный фонт в реале известно, незачем его считывать, чтобы посмотреть.

heavy wrote:
3 загружаемых шрифта, доступны по адресам CC00, D400, DC00 (можно менять)

Для реала конструкция платки с загрузкой фонта, это слишком сложно для самостоятельного повторения вручную. Но вот расширить число фонтов в ПЗУ доступно каждому. Два фонта на имеющейся РФ2-рой вообще делаются за 10 секунд.

heavy wrote:
Дополнительные 8 кб ОЗУ по адресам A000...BFFF вместо ВВ55

Это удобно, сюда можно грузить отладчики, текстовы редакторы, бейсики, DOS-ы, т.е все те программы, которым желательно не сокращать основное ОЗУ (чтобы все 29 кб оставались свободными). Могу странслировать на этот адрес текстов редактор с макроассемблером и бейсик 1A20 (хотя в бейсике придётся сначала заменить все RST на CALL).

Однако при установке сплошного ПЗУ E000...FFFF и открытия ОЗУ A000...BFFF на месте запасного ППА D14 на реале - возникают некоторые проблемы.

Во-первых, проблема RK-DOS. Она использует адрес F000 как адрес РК-КНГМД. Это не большая проблема, т.к легко перетранслировать DOS и форматёр дискет на другой адрес КНГМД.

Во-вторых, возникает вопрос куда перемещать ППА D14, что в базовом варианте стоит на A000. Перемещение этого адреса не создаёт проблем, т.к к этому ППА лезет только прошиватель ПЗУ и чтение ROM-диска. Остальным программам нет дела, где стоит запасной ППА D14. Обычно, для расширения числа портов ставят дешифратор ИД7 на область F000, выделяя один из чип-селектов (F200) для запасного ППА D14.

Но, если на F000 стоит ПЗУ, то ППА D14 надо ставить где-то в другом месте. Предлагаю область 8000...9FFF разделить дешифратором ИД7, отдав один из чип-селектов (8400) под доп.ППА D14, один чип-селект (8800) для РК-КНГМД, а ненужные участки (9000...9FFF) отдать под ОЗУ. Ведь теоретически (т.е без утраты совместимости) ОЗУ можно расширить на область 8400...BFFF.

Кстати, ПЗУ E000...FFFF ценнее, чем сохранение адреса РК-КНГМД, т.к это единственное кратное окно ПЗУ, что позволяет в окне в 8 кб странично прокачивать ПЗУ гораздо большего размера. Удобно применить 27256 и использовать для коммутации свободные при РК-матрице биты PC1, PC2 из ППА клавиатуры (хотя при MS7007-матрице они заняты). В это ПЗУ можно прошить резидентные программы.

heavy wrote:
По умолчанию стандартный монитор загружается в F800, но его можно и заменять.

Раз уж ПЗУ сплошное и имеет размер 8 кб, то разумнее и грузить его одним массивом в 8 кб, а не двумя кусками по 2 кб и 6 кб.


03 May 2018 15:11
Profile
Writer

Joined: 19 Feb 2017 04:46
Posts: 24
Location: 600 км от Москвы
Reply with quote
Post .
А нет ли возможности используя беспроводный WiFi сделать для данной конструкции сетевую DOS? Т.е DOS у которой нет своего носителя, а есть сетевой диск.

При этом можно сделать эмуляцию на низком уровне - обмен логическими (или физическими) секторами какой-либо DOS для дисководов используя данную DOS в оригинальном виде. Тогда от эмулятора требуются две доступные из программы КР580 функции эмулятора - принять сектор 128 байт и передать сектор 128 байт.

Но интереснее и экономичнее использовать микро-ОС, которую как сервер обслуживает беспроводно соединённая IBM PC. Тогда IBM PC всегда находится на приёме ожидая поступления от КР580 посылки с командой. Нужны всего 4 команды - считать/записать/удалить файл и передать каталог. Получив команду IBM PC её выполняет принимая или передавая по линии. Главное преимущество при этом, что размер носителя перестаёт играть роль, а вся память контроллера остаётся на нужды эмуляции.

Может быть на базе контроллера ESP8266 можно сделать устройство для беспроводного обмена файлами между любой 8-ми разрядкой и IBM PC или мобильным телефоном.

Вот здесь отладчик, что пригоден для данной конструкции в качестве кода на E000, а также версия для ОЗУ.


05 May 2018 06:02
Profile
Writer

Joined: 19 Feb 2017 04:46
Posts: 24
Location: 600 км от Москвы
Reply with quote
Post .
Как упомянул ранее клавиатурные вызовы резидентных функций это не новинка и делать такие переходы может и сам КР580, без помощи другого процессора на такте 160 МГЦ. Но важнее, что это возможно в реале.

Потому пару дней назад добавил в то ПЗУ РК86, что сам использую, упомянутые клавиатурные переходы (по CALL). Они удобны не только для случая когда есть большое резидентное ПЗУ E000...FFFF (или RK-DOS на E000...EFFF), но и для случая, когда его заменяет ROM-диск. И даже для случая когда, ни ROM-диска, ни ПЗУ на E000, - нет. В ПЗУ встроил также загрузку ОС из ROM-диска. Всё что касается такого варианта ПЗУ можно посмотреть здесь.

В случае, если есть ПЗУ E000...FFFF для реала мне видится разумным истратить дополнительные 6 кб на отладчик 4 кб (вызываемый как прерывание по Shift+F1) и программу транфера по линии (2 кб). Вообще очень разумно было расширить ОЗУ окном в 8 кб и ПЗУ тоже окном в 8 кб, т.к кратные окна это самое выгодное решение (т.к это позволяет страничное расширение).

А вообще ROM-BIOS данной конструкции в идеале д.быть таким же, как ROM-BIOS одного моего эмулятора (мифического компьютера) эмулирующего CP/M, который за исключением МГ-подпрограмм совмещён с РК86. Вот страница его HELP-а:

Image


08 May 2018 14:29
Profile
Writer

Joined: 10 Mar 2018 13:50
Posts: 11
Reply with quote
barsik wrote:
Как упомянул ранее клавиатурные вызовы резидентных функций это не новинка и делать такие переходы может и сам КР580, без помощи другого процессора на такте 160 МГЦ. Но важнее, что это возможно в реале.

Потому пару дней назад добавил в то ПЗУ РК86, что сам использую, упомянутые клавиатурные переходы (по CALL). Они удобны не только для случая когда есть большое резидентное ПЗУ E000...FFFF (или RK-DOS на E000...EFFF), но и для случая, когда его заменяет ROM-диск. И даже для случая когда, ни ROM-диска, ни ПЗУ на E000, - нет. В ПЗУ встроил также загрузку ОС из ROM-диска. Всё что касается такого варианта ПЗУ можно посмотреть здесь.

В случае, если есть ПЗУ E000...FFFF для реала мне видится разумным истратить дополнительные 6 кб на отладчик 4 кб (вызываемый как прерывание по Shift+F1) и программу транфера по линии (2 кб). Вообще очень разумно было расширить ОЗУ окном в 8 кб и ПЗУ тоже окном в 8 кб, т.к кратные окна это самое выгодное решение (т.к это позволяет страничное расширение).

А вообще ROM-BIOS данной конструкции в идеале д.быть таким же, как ROM-BIOS одного моего эмулятора (мифического компьютера) эмулирующего CP/M, который за исключением МГ-подпрограмм совмещён с РК86. Вот страница его HELP-а:

Image

Скоро соберу "железную" версию РК - опробую ваши доработки


09 May 2018 11:50
Profile
Maniac

Joined: 05 Nov 2008 20:47
Posts: 248
Location: 81.28.208.238
Reply with quote
barsik wrote:
А нет ли возможности используя беспроводный WiFi сделать для данной конструкции сетевую DOS? Т.е DOS у которой нет своего носителя, а есть сетевой диск.

При этом можно сделать эмуляцию на низком уровне - обмен логическими (или физическими) секторами какой-либо DOS для дисководов используя данную DOS в оригинальном виде. Тогда от эмулятора требуются две доступные из программы КР580 функции эмулятора - принять сектор 128 байт и передать сектор 128 байт.

Но интереснее и экономичнее использовать микро-ОС, которую как сервер обслуживает беспроводно соединённая IBM PC. Тогда IBM PC всегда находится на приёме ожидая поступления от КР580 посылки с командой. Нужны всего 4 команды - считать/записать/удалить файл и передать каталог. Получив команду IBM PC её выполняет принимая или передавая по линии. Главное преимущество при этом, что размер носителя перестаёт играть роль, а вся память контроллера остаётся на нужды эмуляции.

Может быть на базе контроллера ESP8266 можно сделать устройство для беспроводного обмена файлами между любой 8-ми разрядкой и IBM PC или мобильным телефоном.

Вот здесь отладчик, что пригоден для данной конструкции в качестве кода на E000, а также версия для ОЗУ.

Я сейчас (время/от времени) что-то похожее пытаюсь реализовать.
Правда через COM порт.
Но приходится довольно сильно править BDOS.
Т.е. практически все файловые операции производятся на сервере.
И сразу вопросики по CP/M (я с ней пратически не работал):
Программы определяют размер доступной памяти на основе
содержимого 006h и 007h аресом RAM?
В каком байте FCB лучше всего хранить идентификатор файла на сервере?
И на сколько программы используют/меняют
содержимое FCB (ест-но то, что находится за 12-ым байтом)?
Каким образом можно выдернуть содержимое образов дисков CP/M
в виде отдельных файлов (может кто-то уже это сделал)?
Интересуют основные прграммы: интересуют особенно M80 и L80.
ps:
BDOS,BIOS,CCP удалось впихнуть в ПЗУ (данные перенес в RAM).


09 May 2018 20:47
Profile
Doomed

Joined: 26 May 2003 07:57
Posts: 619
Reply with quote
aav8 wrote:
И сразу вопросики по CP/M (я с ней пратически не работал):
Программы определяют размер доступной памяти на основе
содержимого 006h и 007h аресом RAM?

Да, это адрес точки входа в CP/M, перед ним лежит лишь CCP, но при работе других программ он не нужен, а при выходе через JMP 0 он грузится снова. В отличие от выхода по RET (когда используется стек, оставленный самим CCP).

aav8 wrote:
В каком байте FCB лучше всего хранить идентификатор файла на сервере?
И на сколько программы используют/меняют
содержимое FCB (ест-но то, что находится за 12-ым байтом)?

Байты 16-31 содержат таблицу номеров блоков текущего экстента, и, по идее, их имеет право менять только сама CP/M.
После открытия файла менять можно только номер для произвольного доступа (байты 33-35), при последовательном доступе вроде бы первые 32 байта вообще нельзя трогать, а номер текущей записи (байт 32) при открытии нужно обнулять, также как и номер экстента (байт 12) перед открытием файла. Менять байт 32 после открытия файла смысла вроде нет, но лучше рассчитывать, что его могут менять.

aav8 wrote:
Каким образом можно выдернуть содержимое образов дисков CP/M
в виде отдельных файлов (может кто-то уже это сделал)?

Есть программы, но проблема в том, что нет какого-либо стандарта, где на диске хранится DPB (в котором в частности указаны количество системных дорожек и количество записей в каталоге без которых невозможно рассчитать начало каталога и начало файлов). Этот DPB хранится непосредственно в БИОСе, найти его практически невозможно. Поэтому программы ориентируются на расширение файла-образа и используют свой DPB для каждого расширения.

Всегда отсылаю к сайту www.seasip.info, там много хорошей технической информации по CP/M.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


10 May 2018 03:48
Profile WWW
Writer

Joined: 19 Feb 2017 04:46
Posts: 24
Location: 600 км от Москвы
Reply with quote
Post 
В принципе Ваш подход использовать в качестве сетевой стандартную DOS невыгоден для РК86. CP/M как инструментальная среда не нужна, фактически от неё нужна только файловая система (т.е возможность хранить файлы). Потому, если работу с диском делает другое процессорное ядро, то вообще нет смысла в использовании стандартной DOS.

Для целей эксплуатации нужны только 4 функции (считать/записать/удалить файл и считать каталог). Т.о сетевая DOS должна только выдавать в линию команды и принимать файлы в ОЗУ и отсылать файлы из ОЗУ. Весь код такой простой ОС умещается в четверть килобайта.

Так устроен дисковод на Commodore-64, VIC-20 и др. Там дисковод имеющий свой процессор 6502 соединён по параллельному интерфейсу с компьютером. Что позволяет грузить программы размером почти со всё ОЗУ, т.к DOS занимает мало места.

aav8 wrote:
Я сейчас что-то похожее пытаюсь реализовать через COM порт.
Но приходится довольно сильно править BDOS.

Зачем править BDOS CP/M? Во-первых, это чревато ошибками, а во-вторых там написано всё оптимально. Потому никто никогда не правит BDOS. И даже при расширении для введения дат файлов или увеличения числа функций, не правят BDOS, а вставляют заплатку (т.е CALL на внешнюю п/п-мму). Какую функцию BDOS Вы переделали?

aav8 wrote:
Программы определяют размер доступной памяти на основе
содержимого ячеек 0006/0007 ?

Да, - так программы определяют не только адрес BDOS, но и положение таблички с векторами дискетных ошибок (которая на BDOS+3), потому при установке промежуточного JMP-а (нужного, чтобы тело BDOS в РК86 разместить в доп.ОЗУ выше порта 8000) приходится табличку векторов дисковых ошибок ставить сразу за промежуточным JMP-ом (на реальное место размещения BDOS в ОЗУ), причём по WARM BOOT и промежуточный JMP и табличка векторов (как и само тело BDOS) должны восстанавливаться с дискеты (или из резервного буфера, что грамотнее, т.к нет долгого считывания CCP+BDOS с дискеты).

Фирменные (и грамотные любительские) программы подгружают свои вектора ошибок. Что необходимо, чтобы при дисковой ошибке не выдавалось тоскливое BAD SECTOR с последующим WARM BOOT и потерей всех данных программы, а программа могла быть продолжена (например, открытием красивого окна с сообщением об ошибке и предложением поменять дискету и т.п).

aav8 wrote:
В каком байте FCB лучше всего хранить идентификатор файла на сервере?

Вопрос не понял.

Если под словом FCB понимается каталоговая запись (экстент) и для каких-то целей надо что-то добавить в каталоговую запись, то это невозможно. Так, например, чтобы ввести дату файла (это 2 байта) им пришлось вводить целую дополнительную (фиктивную) каталоговую запись в 32 байта (что неэкономично расходует сектора каталога).

Если речь о том, чтобы в рабочий блок FCB (что выделяется каждому файлу при открытии) вставить что-то своё, то это тоже невозможно. Зачем лезть в служебные байты FCB ? Если какой-то флаг или дескриптор надо добавлять к рабочему FCB, то ставьте эти байты за концом рабочей области (кажется это FCB+35).

aav8 wrote:
И на сколько программы используют/меняют содержимое FCB (что находится за 12-ым байтом)?

При последовательном чтении/записи меняются байты указывающие текущую запись. И даже если некоторые байты 0 и кажется, что они никогда не меняются, не стоит их трогать, т.к все байты используются (заполняются при длине файла более 512 кб).

aav8 wrote:
Каким образом можно выдернуть содержимое образов дисков CP/M в виде отдельных файлов?

Это зависит от формата образа. Естественно для каждого формата дискового образа существуют читалки. На Западе для каждой ЭВМ свой формат DSK (только CP/M-форматов было более тысячи, а ещё форматы иных DOS) . И соответственно для каждого есть своя читалка позволяющая вытаскивать из образов отдельные файлы и компоновать диски из отдельных файлов.

Для отечественных рэтро ЭВМ есть читалка SteinBlume (есть тема про неё на сайте ZX-PK.ru), которая позволяет работать с образами дискет для почти всех отечественных компьютеров с CP/M (за исключением РК86 и Партнёра). Больше всего образов CP/M-дискет можно найти в формате ОРИОНА и Корвета. Эти образы имеют расширение ODI и KDI. К сожалению, есть файлы ODI в формате не CP/M (от Denn-a), - их SteinBlume не читает.

Образы нужны ради того, чтобы не менять процедуру загрузки DOS (которая обычно считывается с системных треков), т.е чтобы не пришлось корректировать коды DOS. А я предпочитаю наоборот, - один раз откорректировать код DOS, что не только на порядок упрощает эмулятор, а главное, образы дисков тогда вообще не нужны и это удобнее (файлы DOS для 8-ми разрядки хранятся в обычной папке Windows и никакие читалки не нужны).

aav8 wrote:
интересуют особенно M80 и L80.

Пакет M80 это основной инструментарий в мире для написания программ для 8080/Z80/6502. Ничего лучшего в мире за прошедшие 35 лет не придумали.

Все, кто когда-то программировал в CP/M, и на IBM PC для 8-ми разрядки программируют на M80 (используя MSDOS TSR-эмуляторы). Всем самодельным и новодельным компиляторам любителей для Windows далеко до M80. Особенно убогому табличному TASM (не путать с нормальным TASM от Borland), который вообще использует стиль ассемблеров для моторолловских процессоров, что нонсенс для интел-производных процессоров. Синклеристы практически не использовали CP/M, не программировали на M80 и потому и сейчас сдуру мучаются с самодельными ассемблерами для Windows. Которые не могут обеспечить разработку на приличном ЯВУ, оттого как и в древности мучаются с бейсиком.

Единственное мелкое неудобство в том, что если Ваша Windows не умеет прогонять MSDOS программы, то нельзя запускать M80/L80 как программы MSDOS и приходится это делать под DosBox, что чуть менее удобно. Потому я пользуюсь Windows XP.

REL-формат от M80 это мировой стандарт для всех CP/M ЯВУ для 8080/Z80, потому, если надо программировать на ЯВУ, например на Паскале, СИ или бейсике-компиляторе, то ассемблерные вставки можно транслировать только на M80 (хотя есть REL-формат от Digital Research и другие, но они ЯВУ не используются). А без ассемблерных вставок скоростей программ на ЯВУ не хватает и не обеспечить интерфейс с конкретным железом.

M80 позволяет в одном исходнике иметь фрагменты в мнемонике КР580 и в мнемонике Z80, а также, если надо - вообще на ассемблере 6502. Можно часть программы писать на фортране, часть на Паскале, а часть на ассемблере. Можно как основную программу, так и модули с процедурами и функциями делать как на ассемблере, так и на ЯВУ.

Для использования M80 скачайте вот это.

aav8 wrote:
BDOS, BIOS, CCP удалось впихнуть в ПЗУ.

В теле BDOS (длиной E00), а также CCP (длиной 800) есть переменные, без переделки они работать в ПЗУ не могут. BDOS не меняется от версии, потому его удобно иметь в ПЗУ. Потому чуть позднее хочу чуть отредактировать BDOS, чтобы в РК86 код BDOS мог не только храниться, но и работать прямо из ПЗУ E000...EFFF. BIOS не проблема сделать для ПЗУ (перенеся только переменные и дисковые буфера в ОЗУ). А CCP может работать и в ОЗУ, он не сокращает TPA.


10 May 2018 05:25
Profile
Maniac

Joined: 05 Nov 2008 20:47
Posts: 248
Location: 81.28.208.238
Reply with quote
barsik wrote:
Для целей эксплуатации нужны только 4 функции (считать/записать/удалить файл и считать каталог). Т.о сетевая DOS должна только выдавать в линию команды и принимать файлы в ОЗУ и отсылать файлы из ОЗУ. Весь код такой простой ОС умещается в четверть килобайта.

Такая ОС у меня есть. И она примерно так и работает.
Но она ест-но ни с чем не совместима.
В то время у меня еще не было интернета и практически никакой информации по CP/M.
Вот и хочется доработать CP/M чтобы использовать имеющийся сервер.
Может для обсуждения лучше перейти сюда:
viewtopic.php?f=89&t=9041
эта задумка для этого компа.


10 May 2018 08:31
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 75 posts ]  Go to page Previous  1, 2, 3, 4, 5

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.