Вход

Просмотр полной версии : Установка CP/M на HDD для Scorpion ZS



izzx
23.03.2023, 11:40
Здесь будет попытка адаптировать CP/M для работы через SMUC. Пока что слабо представляю как. Знаю, что надо править BIOS.
Версию возьму скорее всего эту:
https://vtrd.in/system/CPM_CASH.zip
Есть исходники, да и драйвер экрана для GMX я уже сделал.
Но не исключено, что дойдут руки до оригинальных исходников. Но это маловероятно ).
Также пока не ясно: грузится будем с отдельного раздела MFS или просто хранить файл образ в разделе fat32.
Как будет происходить запуск? Явно с помощью новой прошивки, где есть пункт HDD boot.
Принимаю ценные советы и готовые решения ).

Upd. Что получилось лежит в папке CPM тут:
https://drive.google.com/drive/folders/19-O-MY2XkgRUmUUZ98xZ83juCuaBe32I


https://youtu.be/o0xxJFtfh1I

Xela
23.03.2023, 11:55
на cpc есть драйвер для работы с hdd, и на нексте cpm живет на fat32. не знаю как на еве, к сожалению.

это я к тому, что можно у коллег подсмотреть, как реализовали.

izzx
23.03.2023, 13:20
на +3 есть CPM. А на Эве вроде как оно в ПЗУ прошито.
Но лучше бы исходники увидеть.

Xela
23.03.2023, 15:42
на +3 есть CPM
я понимаю, но мы же вроде не просто про CP/M, а про CP/M + HDD

- - - Добавлено - - -

чо нашел...

https://8bit.yarek.pl/system/cpm.cpm22qed/index.html

http://zxvgs.yarek.com/download.html#CPM22QED

- - - Добавлено - - -


на +3 есть CPM
о! а тут как раз для +3шной cp/м драйвер, правда не hdd, а mmc: https://sourceforge.net/projects/zxmmcfid/

LW
23.03.2023, 16:06
izzx, Грузиться в какие адреса? В нулевую банку вместо ПЗУ? Тогда там есть нюансы по вызову функций rst 8

- - - Добавлено - - -

если планируется под GMX+SMUC может быть имеет смысл по размещении её в прошивке, хотя бы основного ядра?

izzx
23.03.2023, 16:35
чо нашел...
https://8bit.yarek.pl/system/cpm.cpm22qed/index.html
http://zxvgs.yarek.com/download.html#CPM22QED
Тут вроде как версия для Скорпиона не завершена.


Грузиться в какие адреса? В нулевую банку вместо ПЗУ? Тогда там есть нюансы по вызову функций rst 8
Да, надо включать 0 банку. И с функцией rst 8 наверное никак не выйдет. Только работа напрямую с оборудованием.


может быть имеет смысл по размещении её в прошивке, хотя бы основного ядра?
До этого ещё долго. Заработало бы сначала. В принципе, с ХДД всё быстро загрузится и так. Надо подумать.
Кстати, функция новой прошивки HDD boot что делает? Как её пользоваться.

LW
23.03.2023, 16:44
функция новой прошивки HDD boot что делает? Как её пользоваться.
Пока ничего.
Будет несколько вариантов (выбор в настройках монитора). Загрузка нулевого сектора заданного подраздела, загрузка жестко заданного сектора HDD, загрузка заданного файла (наверное хобеты) с FAT.
Но это так, пока приблизительные мысли.


И с функцией rst 8 наверное никак не выйдет.
А чего так? В теневике много процедур, которые дублировать большого смысла нет.

izzx
23.03.2023, 17:02
В теневике много процедур, которые дублировать большого смысла нет.
А как? Если там 0 банка, то как вызывать rst 8? Вот ISDOS работает со смуком только версия Classic, которая не трогает ПЗУ.

LW
23.03.2023, 17:35
tr-dos тоже напрямую не вызывает rst 8
Так что так же как и там
через бейсик

izzx
23.03.2023, 18:13
через бейсик
Как там сделано не смотрел. Можно, конечно, банки подменять на время вызова. Но странно, что для iSDOS такой фирменный драйвер не сделали. Может, что-то знали.

LW
23.03.2023, 18:27
нечего там знать. всё банально.
вот вызов из tr-dos


;Вызов функции rst 8

x0826 ex (sp),hl
push af
ld a,#CF ;rst 8
ld (#5CBF),a
ld a,(hl)
inc hl
ld (#5CC0),a
ld a,#C9
ld (#5CC1),a
pop af
ex (sp),hl
push hl
ld hl,x3D2F
ex (sp), hl
push hl
ld hl,#5CBF
ex (sp),hl
ret



вызывается call x0826: db #nn

А, если всё-таки решите интегрировать в пзу, то всё будет намного проще, можно будет пользоваться встроенным механизмом вызова процедур из любой страницы пзу.

- - - Добавлено - - -

В общем, если по ПроПЗУ будет нужна помощь, пишите. Подскажу что знаю.

Xela
23.03.2023, 19:03
Может, что-то знали.
скорее чего-то не знали

izzx
23.03.2023, 20:02
В первую очередь надо перегнать исходники под современный ассемблер. А то ж они под MA80 и запускаются через DosBox.
Затем попробовать считать/записать сектор через функцию rst 8 с включенным ОЗУ вместо ПЗУ. Вот тогда увидим, как оно работает.
Сейчас, конечно, нажатие на NMI во время работы CPM приводит к зависаниям. Монитор не определяет правильно ситуацию с ПЗУ. Но это другой вопрос, возможно, не связан с работой rst 8.

LW
23.03.2023, 20:06
Зависание при нажатии? Или при выходе из монитора?

izzx
23.03.2023, 20:30
Зависание при нажатии? Или при выходе из монитора?
После выхода из монитора. На сколько помню, виснет версия и МОА и FK. В мониторе вроде бы даже не предусмотрена индикация, что вместо ПЗУ включено ОЗУ.

А есть пример как при включенном ОЗУ 0 вызвать ту самую функцию RST?
И сразу пример минимальной работы с ХДД. Вот загрузился первый сектор с раздела ЦПМ и начинает что делать? Читать следующий сектор
C=36 ($hddrd)
или сначала инициализация диска и проверка что за раздел подключен?
С=35 ($hddmount)
Я думаю, если смонтирован раздел ЦПМ и мы с него начали грузится, то можно сразу читать секторы и ни о чём не заботится больше.
Но тут получится у нас будет подключен один или максимум четыре раздела ХДД. Может хватит и одного для начала, на максимальные 8 мегов.

LW
23.03.2023, 20:54
при нажатии кнопки NMI невозможно определить что было включено в нулевой банке. поэтому при выходе монитор всегда устанавливает банку rom 1 (basic48)
вход по rst 8, обрабатывается только для basic48/basicc128. tr-dos входит через бейсик 48. соттветственнот откуда зашли по rst, туда и вышли.


А есть пример как при включенном ОЗУ 0 вызвать ту самую функцию RST?
в адресах #4000-#FFFF должна сидеть процедурка обеспечивающая такой вход
стэк тоже должен быть выше #4000
типа такой:


bRST8 ex (sp),hl
push af
ld a,(hl)
inc hl
ld (xxx),a
pop af
ex (sp),hl
push bc
push af
ld bc,#1FFD
xor a
out (c),a
ld b,#7F
ld a,#10
out (c),a
pop af
pop bc
rst #08
xxx db 0
push bc
push af
ld bc,#1FFD
ld a,#01
out (c),a
pop af
pop bc
ret



И сразу пример минимальной работы с ХДД. Вот загрузился первый сектор с раздела ЦПМ и начинает что делать? Читать следующий сектор
C=36 ($hddrd)
или сначала инициализация диска и проверка что за раздел подключен?
С=35 ($hddmount)
Я думаю, если смонтирован раздел ЦПМ и мы с него начали грузится, то можно сразу читать секторы и ни о чём не заботится больше.
Но тут получится у нас будет подключен один или максимум четыре раздела ХДД. Может хватит и одного для начала, на максимальные 8 мегов.

35я не нужна
36я ведет отсчет не в абсолютных секторах, а относительно начала подраздела
поэтому de=0001, hl=адрес куда читать, b-сколько секторов (512б) читать и понеслась

izzx
23.03.2023, 21:45
LW, спасибо. Удобная штука эти вызовы. А они работают только в проф ПЗУ? И почему встраивать ЦПМ в ПЗУ можно для версии GMX? А для простого Scorp можно встроить? И без проф ПЗУ?

LW
23.03.2023, 21:55
А они работают только в проф ПЗУ?
да

И почему встраивать ЦПМ в ПЗУ можно для версии GMX? А для простого Scorp можно встроить?
можно и туда, и туда

И без проф ПЗУ?
а вот тут уже места не будет

izzx
24.03.2023, 19:27
35я не нужна
Попробовал писать/читать секторы. Пока что работает, но пришлось функцию монтирования таки вызывать сначала.
Предложенный примерчик пригодился.

Хотя, тут перед дисковыми операциями с TRDOS включается нормальное ПЗУ. Может можно и этим воспользоваться и просто вызывать rst 8.

izzx
26.03.2023, 16:54
Что-то даже отформатировать дискетку не умею.
Пишу
format b:
Ругается, что надо сделать сначала assign. Пишу
assign 0 b:
Ругается
can't get channel descriptor. Code = 0x1

Брал диски от MOA, FK0, ATM с разными версиями format...

Dima_ZX
30.03.2023, 12:35
Есть IS-Dos шик, для скорпиона, в нем драйвера для работы с hdd свои, у меня стоял, пока винт не помер.

izzx
30.03.2023, 14:01
Есть IS-Dos шик, для скорпиона, в нем драйвера для работы с hdd свои
Не знал, интересно.

Что-то функция "вернуть таблицу (каталог) подраздела С=38" брыкается. Левые страницы монитор после неё включает. Не особо и нужна, но хотелось бы убедиться, что подключен раздел именно MicroDOS.

;проверка что раздел CP/M
xor a
ld hl,hstbuf ;адрес куда читать
ld bc,00026h ;функция вернуть таблицу (каталог) подраздела С=38
rst 8
db 081h
jp c,dskerr
ld a,(hstbuf)
and 31
cp 2 ;MicroDOS?
jp nz,dskerr

LW
30.03.2023, 22:54
но хотелось бы убедиться, что подключен раздел именно MicroDOS.
#26-я тут не помощник
нужно использовать #23-ю

izzx
31.03.2023, 15:40
нужно использовать #23-ю
Нашёл подходящий вариант. Будет немножко защита от ошибки.
Скоро настанет пора делать красивый инсталятор и запускать пункт меню HDD Boot.
Я планирую вариант загрузки 0 сектора с раздела МикроДОС.

Успехи проекта:
У меня ЦПМ начала подавать признаки жизни на ЖД. Файлы уже на жёстком, только загрузится надо с дискеты.
Работает через rst 8 даже с экраном GMX. Немного мельтешит, конечно. В эмуляторе.
Есть версия для обычного экрана.
Работает диск не спеша, но приемлемо.
Используются, правда, половинки секторов 512 ЖД, потому как ЦПМ приучена к секторам на 256. Наследие TRDOS. Ну это ничего.
Пока что сделал диск на 1Мб. Надо будет подумать над оптимальным объёмом и размером каталога. Говорят, лучше 4-6 Мб.

https://pic.maxiol.com/thumbs2/1680265418.1442385956.screen.png (https://pic.maxiol.com/?v=1680265418.1442385956.screen.png&dp=2)

Xela
31.03.2023, 17:47
У меня ЦПМ начала подавать признаки жизни на ЖД.
и вроде даже хочется сказать - УРАА!! а потом вспомнил, что так и понял зачем тебе этот CP/M :)

Но классно, поздравляю с успехами!

- - - Добавлено - - -


Используются, правда, половинки секторов 512 ЖД, потому как ЦПМ приучена к секторам на 256
а нельзя сделать сектора по 256?

izzx
31.03.2023, 18:05
Но классно, поздравляю с успехами!
Спасибо. Это я балуюсь, чтобы немного познакомиться с легендарной системной, которая прошла мимо меня. Но узнаваема по MSDOS.


а нельзя сделать сектора по 256?
У ЖД секторы по 512. Можно уплотниться, перекидывая при чтении/записи каждого сектора его половинки туда-сюда. Но опять скорость упадёт.
А сама ЦПМ вообще всё потом перекидывает в секторы по 128 через буфер.
Места на диске хватает. Нужен раздел всего 32 мега. Пока оставим как есть.

Xela
31.03.2023, 18:16
чтобы немного познакомиться с легендарной системной
я установил на некст... потыкался.. и такой: Ну, ок, я кажется познакомился)



У ЖД секторы по 512.
понил

Эта cpm потом будет хавать то, что для +3 cpm портировали? (это (https://spectrumcomputing.co.uk/entry/9420/ZX-Spectrum/Spectrum_CPM_Plus) и это (https://www.secarica.ro/index.php/en/zx-zone/plus3-software/cpm-plus-for-plus3-related-software), например?

да, и как софт новый ей подсовывать?

izzx
31.03.2023, 20:18
Эта cpm потом будет хавать то, что для +3 cpm портировали? (это и это, например?

да, и как софт новый ей подсовывать?
Должны работать нормальные проги для CPM 2.2. Перекинуть файлики можно через программу SteinBlume.exe на PC.
По первой ссылке там хитрые диски Amstrad, файлы внутри не похожи на нормальные .com как в CPM. Это надо брать эмуль и разбираться что там на +3 сделали. К тому же пишут, что там CPM 3.
Напрямую в нашу CPM можно совать диски Scorpion, ATM, и Profi.
По второй ссылке нормальные файлы. Я скачал текстовый редактор WordStar и запустил.

PS. Надо ещё тестировать в тысячи рук. Некоторые проги и игры кривовато информацию на экран выводят и вообще. Но главное, игра Ladder играется хорошо в режиме 80 символов ).

Xela
31.03.2023, 22:56
Перекинуть файлики можно через программу SteinBlume.exe на PC.
ммм.. а как? я про установленную систему на харде - как в нее что-то новое добавить? на нексте (прастите), например, все это на fat'е живет - просто файлов в папку кинул, и готово.

да, на +3 - CPM 3.0, хотя назвали его CPM+, но что интересно, по второй ссылке программы для нее как раз адаптированы..

izzx
01.04.2023, 08:59
как в нее что-то новое добавить?
Через дискетки придётся. Или образы дискеток, если на эмуляторе. Могла бы быть утилита копирования с fat, но её ещё не существует.
Вот из инструкции:
Образы дисков MOA и ATM имеют стандартное расширение .trd и стандартный размер сектора 256.
Их можно копировать/переносить обычными средствами.
А логическая структура другая. По одному файлу образы можно редактировать в программе SteinBlume на PC, или средствами CP/M.

На реальном компьютере:
1. Скопировать образ диска MOA/ATM на ZX (с помощью AY232K первые два пункта объединяются).
2. Записать его на дискету (WDC, Fatall).
3. Запустить CP/M.
4. Редактировать/копировать на HDD.
5. Снять образ с дискеты (если требуется).

На эмуляторе:
1. Смонтировать образ диска MOA/ATM.
2. Запустить CP/M.
3. Редактировать/копировать на HDD.
4. Редактировать/копировать образ в SteinBlume (если требуется).

- - - Добавлено - - -


по второй ссылке программы для нее как раз адаптированы..
Там вроде часть системных утилит переделаны специально, их я не стал запускать. Явно не подойдут.

izzx
03.04.2023, 18:25
Сегодня я многое понял впервые поиграл в легендарный Pacman. А в Ladder дошёл до второго уровня. Очень достойные игрушки. Вот, оказывается, зачем мне нужна была CP/M.

На 2/3 готов инсталятор системы. Можно будет установить на HDD за несколько нажатий.
Интерфейс, наверное, на китайском английском. Но такие традиции.

https://pic.maxiol.com/thumbs2/1680535298.3165278954.sshot000000.png (https://pic.maxiol.com/?v=1680535298.3165278954.sshot000000.png&dp=2)

Xela
03.04.2023, 19:09
Интерфейс, наверное, на китайском английском

Install to SMUC HDD
Backup data to FDD

izzx
03.04.2023, 20:19
Install to SMUC HDD
Backup data to FDD
Хорошо, спасибо.

Xela
03.04.2023, 20:33
Через дискетки придётся. Или образы дискеток, если на эмуляторе. Могла бы быть утилита копирования с fat, но её ещё не существует.
да, с дискетами неудобно, конечно... напрашивается копировщик, имеющий доступ к fat32 и к microdos/isdos-fs, что б можно было туда-сюда файлы кидать...

izzx
05.04.2023, 18:52
Инсталятор готов. Только пока не проверить запуск через "HDD boot". Надо запускать с дискетки.
На старых прошивках монитора шибко мигает при обращении к HDD. На новых намного лучше.
В комплекте 3 игры. В режиме 64 символа в игрушку Ladder не получится поиграть. В остальные две можно, говоря относительно.
Можно даже выбрать управление.
Лучше запускать на GMX с нормальным экраном.
Ссылка в подписи, папка "CPM".

Интересно, а есть компы со SMUC, но без ПрофПЗУ? А то оно без него работать не будет.

Xela
05.04.2023, 21:53
Интересно, а есть компы со SMUC, но без ПрофПЗУ
в теории такое может быть - работа с портами SMUC напрямую, так же как, например, на вообще-не-скорпионах.

Xela
08.04.2023, 11:24
пока искал каких программ добавить в cp/m для теста, нашел, что +3шную версию тоже подружили с ide/mmc.
возможно будет интересно (https://www.va-de-retro.com/foros/viewtopic.php?t=5605#p98944) - форум на испанском, смотреть через гуглопереводчик.

izzx
08.04.2023, 20:37
Вроде бы esxdos сохраняет какую-то преемственность к +3dos. Не знаком с этой системой.
Интересно, что esxdos тоже использует rst 8 (подсмотрели на Скорпионе наверняка) и тоже вместо ПЗУ своё подставляет.
А там уж CPM сидит в окне #0000.

Xela
08.04.2023, 20:51
что-то все в одну кучу))

бы esxdos сохраняет какую-то преемственность к +3dos
какую-то - да, сохраняет. синтаксис. но программы для +3 в esxdos сходу не работают, даже формат дисков .dsk не эмулируется, в отличии от .trd.
но мы же про cp/m, не про +3dos.


подсмотрели на Скорпионе наверняка
конечно)) где ж, как не на скорпионе подсматривать. rst 8 еще в interface 1 использовались, так еще вопрос, кто у кого подсмотрел.


А там уж CPM сидит в окне #0000.
ммм.. а это как куда к чему?)) по ссылке там про esxdos ни слова. там работает с divide и mmc, но это ж интерфейсы, как и smuc.

ладно, видимо все это лишнее - не буду больше тему засорять.

izzx
08.04.2023, 22:06
какую-то - да, сохраняет. синтаксис. но программы для +3 в esxdos сходу не работают, даже формат дисков .dsk не эмулируется, в отличии от .trd.
уже понятнее стало

так еще вопрос, кто у кого подсмотрел
про скорпион я так, шутя сказал

по ссылке там про esxdos ни слова
и правда. что это я про esxdos начал

Может им и ПЗУ не надо переключать, а просто к портам обращаться напрямую. На скорпионе тоже можно обойтись без всяких rst 8, а работать с портами SMUC. Я тут начал рассуждать какие сложности по переключению банков, если пользоваться вызовами rst 8.
Но по теме, конечно, DivMMC всё равно не подходит. Зато теперь мы знаем, что кто-то тоже ковыряется с CP/M на досуге.

Xela
08.04.2023, 22:51
Но по теме, конечно, DivMMC всё равно не подходит.
там и для divide есть драйвер, а это такой же ide контроллер, как и smuc

я эту ссылку дал, только с тем, что тут cpm plus, а это уже cpm 3.0, которую адаптировали к hdd.

Dima_ZX
09.04.2023, 10:28
Есть версия CP-M поддерживающая каталоги? И если есть, можно её адаптировать для SMUC ?

izzx
09.04.2023, 11:18
По той самой ссылке на странице 2 как раз обсуждается это. В CP/M нет каталогов, но есть 16 пользователей и атрибуты файлов. Можно настроить видимость файлов, как я понимаю. А это типа версия 3. В версии 2.2 тем более нет папок.

Xela
09.04.2023, 12:47
есть какие-то аддоны и надстройки, но проблема в том, что софт сипиэмный не умеет в каталоги, т.е. надо каждую софтину перекомпилировать, что б она умела не только с пользователями но и с папками работать. поэтому можно сказать, что поддержки каталогов нет.

- - - Добавлено - - -

кстати, повнимательнее посмотрел на нексте - cp/m живет в образе диска - 16мб, который подключается при старте системы. т.е. как я думал раньше просто в папке на разделе fat.
из плюсов такого подключения - можно копировать файлы между fat-разделом и образом диска cp/m.

- - - Добавлено - - -

попытлся запустить ladder со скорпионовского cp/m на нексте - что-то пошло не так) работает явно не так, как задумано.

- - - Добавлено - - -
izzx, в ваш дистрибутив свой софт не добавить? SteinBlum у меня ругнулся на образ диска.

izzx
09.04.2023, 14:01
на нексте - cp/m живет в образе диска - 16мб
Образ лежит одним файлом или несколько в папке на fat? Если одним, то как копировать файлы внутри? Нужен же спец софт.

А экран на Нексте 80 символов? Для Ladder нужно 80. И в моём дистрибутиве версия с настройщиком, стащенная с сайта АТМ. Там можно выбрать тип терминала. Для Скорпа я выбираю VT52.


в ваш дистрибутив свой софт не добавить? SteinBlum у меня ругнулся на образ диска
Это обычный диск TRD. А на свободном месте записан бэкап раздела, начиная с файла Backup. Можно закинуть на ЖД нужные файлы и сделать новый бэкап. Тогда получится свой дистрибутив. Но не более 600Кб.

Dima_ZX
09.04.2023, 16:05
MP/M может быть поддерживает каталоги? И вроде бы версия 3 поддерживает, просто при работе на HDDбез каталогов будет очень тяжко.

Xela
09.04.2023, 18:00
Образ лежит одним файлом или несколько
одним.

Если одним, то как копировать файлы внутри?
а как может быть образ диска несколькими файлами, и как это упростит доступ к нему?



то как копировать файлы внутри? Нужен же спец софт.
я ж писал выше - образ диска с cp/м при старте монтируется как один из дисков системы (в данном случае как диск "A", "своя" система NextOs - как диск "С") и между ними файлы просто переносятся копипастой - Ctrl+C - Ctrl+V



А экран на Нексте 80 символов?
да. и в моем случае проблема в том, что бесконечная печать проихсходит - т.е. даже надпись Press Any Key to Start (или как там), каждый раз печатается с новой строки - бесконечный листинг такой.


И в моём дистрибутиве версия с настройщиком, стащенная с сайта АТМ
попробую АТМовскую.



Можно закинуть на ЖД нужные файлы и сделать новый бэкап
вот вопрос как раз в том, как закинуть на ЖД? записать дискету с нужными файлами и копировать на ЖД с него?


И вроде бы версия 3
вроде бы?

izzx
09.04.2023, 18:19
MP/M - это многозадачная, говорят. Про папки ничего положительного не гуглится.
Я в этом дистрибутиве для скорпа сделал раздел всего 2 мега и максимум 256 файлов. Для учебных и тестовых целей хватит, и не слишком большая свалка будет.

- - - Добавлено - - -


я ж писал выше - образ диска с cp/м при старте монтируется как один из дисков системы (в данном случае как диск "A", "своя" система NextOs - как диск "С") и между ними файлы просто переносятся копипастой - Ctrl+C - Ctrl+V
вот, теперь понятно. А то ж можно было просто накидать файлов отдельных и написать такой хитрый драйвер, который из CP/M их бы считывал/записывал. То есть по факту полноценный драйвер fat. Я и думаю: до чего крутые ребята, если такое провернули.


вот вопрос как раз в том, как закинуть на ЖД? записать дискету с нужными файлами и копировать на ЖД с него?
Ну да. Пока что другого варианта не вижу. В эмуляторе ловчее, конечно, но суть та же.

Кстати, на реальном компе у меня инсталляция ругается, не проходит. А вот система запускается хорошо и раздел монтирует. Надо искать баг.

Xela
09.04.2023, 18:46
А то ж можно было просто накидать файлов отдельных и написать такой хитрый драйвер, который из CP/M их бы считывал/записывал. То есть по факту полноценный драйвер fat
я тоже так сначала подумал, потому что образ диска собирается из файлов, которые лежат просто а разделе фат... но всего лишь собирается. доступа к фату нет.

https://i.postimg.cc/gJ8R90Cq/2023-04-09-17-53.png (https://postimages.org/)

но и так - ctrl-с - ctrl-v в целом норм, если не надо много закидывать.

----

проверил еще Зорки всяческие от Infocom, нормально работают. а вот Hibernated 1 (https://8bitgames.itch.io/hibernated1), хотя и версия специально под +3 cp/m - работает с глюками.. точнее отображается не корректно.


Ну да. Пока что другого варианта не вижу
иметь бы возможность "собирать" свой бэкап в трд, для последующей установки на жд.. раз нет софта умеющего копировать между разными файловыми системами.

Xela
10.04.2023, 00:46
https://techtinkering.com/articles/epex-an-environment-extension-for-cpm/


Easy Handling of User Areas
The handling of user areas has been made much easier and the prompt displays the current drive and user area. EPEX supports 'DU:' format, where D is the drive and U is the user area, when combined they are termed a directory. For example, to refer to drive 'D', user area '3', we would use 'D3:'. This allows us to simply change to this directory by entering D3: at the prompt and pressing return. We can also refer to commands and files on other drives or user areas by prefixing them with this 'DU:', directory format. The supplied commands such as PATH, MKDIR, DIR, CP, etc fully support this and it will often work at the command line with commands that weren't written to support it. Unfortunately you can't just use the user number followed by a colon as this will lead to a BDOS error.

Named Directories
EPEX, showing named directories and search path
It is possible to give names to directories using the MKDIR command. This takes a text file which maps directories e.g. 'A0:' to a name such as 'ROOT'. When creating this file make sure that the names are in uppercase otherwise they'll fail to work properly. The file could look like the following, which would create three named directories: ROOT, UTILS, ARCH.

один из вариантов "Каталогов"

izzx
10.04.2023, 09:57
один из вариантов "Каталогов"
почитаем.


иметь бы возможность "собирать" свой бэкап в трд, для последующей установки на жд..
в SteinBlume есть пользовательский формат. Попробую его настроить.


но и так - ctrl-с - ctrl-v в целом норм
а вот ещё не понял. Диски же монтируем на Нексте, там и копируем туда-сюда. А почему скрин приложен виндового проводника? Или надо на PC собирать/разбирать образ?

Djoni
10.04.2023, 10:21
Вроде бы esxdos сохраняет какую-то преемственность к +3dos. Не знаком с этой системой.
Интересно, что esxdos тоже использует rst 8 (подсмотрели на Скорпионе наверняка) и тоже вместо ПЗУ своё подставляет.
А там уж CPM сидит в окне #0000.


ESXDOS поддерживает файлы в формате +3dos, каждый файл имеет заголовок 128бит ,плюс формата на Fat не теряется информация о файле старт длинна и так далее,очень похоже на формат Hobeta для хранения TR-DOS-файлов.

Руководство по +3DOS https://worldofspectrum.org/ZXSpectrum128+3Manual/chapter8pt27.html

Xela
10.04.2023, 11:24
А почему скрин приложен виндового проводника?
это я просто образ показал.



Или надо на PC собирать/разбирать образ?
не-не. на нексте все. собирается один раз, в самом начале - в папке CPM изначально лежат все минимально необходимые файлы, докидываем то, что хотим дополнительно. при первом запуске (хотя если точно, при любом, когда система не находит готовый образ) происходит сборка образа. потом можно через ctrl-c, ctrl-v добавлять файлы.

правда сборка как-то хитро происходит - я накидал всяких приложений/игр в папку, для тестов, в образ в итоге перенеслись только .com файлы. всякие .bas .txt и прочие переносить руками пришлось

Xela
10.04.2023, 17:20
Еще бы "смотрелки" (https://techtinkering.com/articles/image-viewers-on-cpm/) графики портировать в наши палестины)

При том, что "стандартный" для cp/m формат графики - RLE - это как раз 259x192! :)

izzx
10.04.2023, 20:35
Еще бы "смотрелки" графики портировать в наши палестины)
Очень уж медленно у них выводятся эти картинки.
Смотрелки, наверное, не сложно написать и с нуля. Но они же будут привязаны к железу, не канонично! То есть, приложение должно напрямую работать с дисплеем.
А вот вариант вывода картинки на принтер канонично. Потому что драйвер принтера в bios.
Но в этой версии для скорпа и драйвера для принтера нет ).
А что, где-то есть большие залежи картинок RLE?

Xela
10.04.2023, 21:39
А что, где-то есть большие залежи картинок RLE?
не то, что б прям залежи, но есть: https://techtinkering.com/articles/walnut-creek-cd-rle-images/


Но они же будут привязаны к железу, не канонично!
так они, насколько я понимаю, в любом случае привязаны к железу: терминалы же по умолчанию могу только символы выводить, все остальное уже железозависимо

- - - Добавлено - - -

в блоге ссылки на WalnutCD немного поломатые.. можно тут (http://cpmarchives.classiccmp.org/ftp.php?b=cpm/Software/WalnutCD/) посмотреть содержимое диска

izzx
16.04.2023, 14:27
Добавил видео как запустить игру в CP/M:

https://youtu.be/o0xxJFtfh1I

Dima_ZX
19.04.2023, 03:33
ну это те-же пользовательские области, с ограничением на их количество. Поискал в интернете, да, нету каталогов на CP/M, в 3-й версии, просто пользовательские области имена заимели, и количество до 32-х сделали.

Grand
31.05.2023, 11:14
Получилось установить систему на свой реальный Scorpion 1024 и HDD (у меня CF-карточка), ProfROM V4.01.
Вот фото.

https://i.postimg.cc/HjgVTmwM/23052802.jpg (https://postimg.cc/HjgVTmwM)

https://i.postimg.cc/w1dWV7Lv/23052803.jpg (https://postimg.cc/w1dWV7Lv)

https://i.postimg.cc/zLQKxc6j/23052804.jpg (https://postimg.cc/zLQKxc6j)

izzx
31.05.2023, 18:38
Выложил фикс под новую прошивку монитора (25), должен работать пункт HDD boot.
В папке CPM: https://drive.google.com/drive/folders/19-O-MY2XkgRUmUUZ98xZ83juCuaBe32I

- - - Добавлено - - -


Получилось установить систему на свой реальный Scorpion 1024 и HDD
Запуск с дискеты, как я понимаю? А при работе с HDD (при запуске игры) сильно экран мигает?

Grand
01.06.2023, 04:26
Запуск с дискеты, как я понимаю? А при работе с HDD (при запуске игры) сильно экран мигает?
С дискеты, точнее с примонтированного образа. Пункта меню HDD boot в 4.01 нет.
Экран мерцает действительно сильно, но меня это не напрягает. :)

Grand
20.12.2024, 19:20
Обнаружилось, что инсталлятор ищет подраздел CPMZS0 только в первом разделе MFS. А если CPMZS0 будет во втором или последующих MFS, то инсталлятор его не найдет. :(
Такая вот особенность. Тестировал на эмуляторе с монитором 42-й версии от LW aka PLМ.

izzx
20.12.2024, 19:47
Как помню, используется старый вызов монитора. Он работает с первым попавшимся разделом. Можно переделать на другой вариант, который есть только в новой прошивке. Но зато перестанет работать на старых ).
Потом подумаем ещё. Можно бы вообще на фат32 сделать файл-образ, если новая прошивка... В теории.

Jason
13.04.2025, 02:33
Здесь будет попытка адаптировать CP/M для работы через SMUC.

Я эту систему тоже ковырял. Сделал рамдиск для Скорпиона, Кая 1024 и Пентагона 512. И поддержку принтера для них же.
Добавил в терминал несколько команд, типа очистки экрана по ESC "E" и ещё что-то.
Сделал нормальный загрузчик с системных дорожек, по тому же принципу, что у MOA.
И начал писать копировщик tr-dos <-> cp/m. Надо найти исходники...

Grand
13.04.2025, 09:52
Надо найти исходники...Поделитесь, если найдете. Обмен опытом будет полезен.

izzx
13.04.2025, 21:58
И начал писать копировщик tr-dos <-> cp/m.
Вот бы ещё копировщик cp/m - fat32 был. Не знаю только, запускает ли кто эту ось сейчас ).

Jason
14.04.2025, 00:16
Вот бы ещё копировщик cp/m - fat32 был.

А зачем?
Для дискет они есть, transfer.com например. Лежит вот здесь, (http://cpmarchives.classiccmp.org/ftp.php?b=cpm%2FSoftware%2FWalnutCD%2Fcpm%2Futils% 2Fdskutl) с исходниками.

Jason
14.04.2025, 10:23
Экран мерцает действительно сильно, но меня это не напрягает.

Запишите по адресу #5B5C значение 0 или 8. (это переменная бейсика 128 - копия порта #7FFD)
Тогда на выходе из RST 8 или #3D13 будет включен экран в 5 или 7 банке.

Xela
14.04.2025, 10:52
А зачем?
Что б копировать CP/M софт и тексты (и обратно) простым копированием с fat32 раздела HDD или с карты z-controller'а. дискеты уже не у всех и есть.

izzx
14.04.2025, 15:02
Запишите по адресу #5B5C значение 0 или 8.
Так там может быть программа. Ну это ничего, в новом ПЗУ можно настроить чтоб не моргало. Тем более если на ГМХ.

Jason
14.04.2025, 21:33
Что б копировать CP/M софт и тексты (и обратно) простым копированием с fat32 раздела HDD

А как они попадут на fat32 раздел?
Правильнее и полезнее смонтировать tr-dos раздел и копировать с него.
Копировщик tr-dos <-> cp/m для того и нужен.
Хех, я из фидошников-реальщиков 90-х. У нас была другая реальность.

Xela
14.04.2025, 23:06
А как они попадут на fat32 раздел?
Видимо так же, как на tr-dos раздел?

Правильнее и полезнее смонтировать tr-dos раздел и копировать с него.
Почему это правильнее и полезнее? tr-dos раздел пережиток прошлого, искусственное ограничение. На свежих версиях ПрофПЗУ можно прекрасно жить вообще без tr-dos раздела, весь архив софта храня на fat32, хочешь в trd, хочешь в scl, хочешь в tap. А при наличии z-controller - SD карты, вынул, записал на PC все, что нужно, вставил обратно, скопировал на HDD/CF.

Jason
15.04.2025, 03:20
На свежих версиях ПрофПЗУ можно прекрасно жить

У меня их нет. И GMX тоже нет. И так не только у меня.
А нужно чтобы софт работал у большинства.

Jason
15.04.2025, 07:06
Обмен опытом будет полезен.
Нашёл mount.com (http://ibb.co/album/1vQvFM) для скорпионовской CP/M.
В исходнике написано, что я это писал в 1999 году, а я об этом почти забыл.
Где-то был драйвер, я его к биосу прикручивал, это помню.
На дисках чёрт ногу сломит, всё свалено в кучу, иногда нахожу вот такое.

- - - Добавлено - - -


Нашёл mount.com для скорпионовской CP/M.
Держите исходник, пока не потерял. Нашёл более свежую версию 1.5, эта уже не актуальна.
Собирать обычно:
ma80 =mnt.as
mlink /p:100h /ws:100h mnt.rel



;(c) Jason 1999
; CP/M: select and mount partition on SMUC HDD v.1.2
; Если compact =0, то выбирать можно из 99 разделов,
; иначе только из первых 35 (цифры 1-9 буквы A-Z).
; Разделов м.б. до 64 (?).
; вызов: mnt /d=3 \cpm001
.z80
compact equ 0 ;compact версия м.б. частью bios (не нужен bdos)
ndrv equ 3 ;точка монтирования, 0...3
ptype equ 2 ;1=tr-dos, 2=cp/m, 3=is-dos
cmore equ 16 ;пауза каждые 16 строк
$setwrk equ 9
$hddid equ 34
$hddmount equ 35 ;23h
$hddrd equ 36
$hddwr equ 37
$hddpart equ 38
stop macro
di
halt
endm
start:
ld a,8 ;защита от моргания экрана
ld (5b5ch),a
ld hl,here
ld de,entry
ld bc,wbuff-entry ;len
ldir
call entry
ei
rst 0
here:
.phase 4000h
entry: di
if compact eq 1
else
ld hl,80h ;разбор комстроки
ld a,(hl)
or a
jr z,_nosw
ld c,a
ld b,0
ld a,"/"
inc hl
cpir
jp po,_nosw
jr nz,_nosw
ld a,(hl)
res 5,a
cp "D"
jr nz,_nosw
cpi
jp po,_nosw
ld a,"="
cpi
jp po,_nosw
jr nz,_nosw
ld a,(hl)
cp "A"
jr c,$+3
dec a
and 3
or 8
ld (mncmd+1),a
jr z,_nosw
ld a,"\"
cpir
jr nz,_nosw
call mntnm ; явно указано имя
ret nc
ld hl,noth ; м.б. проблемы с регистром букв
jp str
noth: db "Nothing mounted...",13,10,0
endif
;=======================; или интерактивно
_nosw: call fihdd ; показ модели диска
ret c
ld hl,wbuff
xor a
ld c,$hddpart
call ram0off
rst 8
db 81h
call ram0on
shlist:
ld hl,mprt
call str
ld hl,wbuff
call shprt ;поиск и показ списка разделов,
ld a,b
or a
scf
ret z
; call crlf
ld hl,selp ;msg
call str
ei
if compact eq 1
_ri: call conin ;ввод кнопки
sub 30h
ret z ;="0", выход
jr c,_ri
res 5,a
cp 0ah
jr c,_l10
sub 7 ;A-Z
_l10: ld b,a
else
call crlf
_ri: call cll ;очистка
ld hl,mprt
call inum ;ввод числа
or a
ret z
push af
ld hl,nump+2
call byte2a
call str
pop bc
endif
ld hl,wbuff
call fiprt ;поиск имени раздела по номеру в b
or a
jr z,_ri
mntnm:
ld (adnm+1),hl ;подкл. по имени
ex de,hl
ld c,$hddmount
mncmd: ld a,8+ndrv ;команда и номер диска
di
call ram0off
rst 8
db 81h
call ram0on
ret c
ld a,(mncmd+1) ;OK msg
and 3
add a,30h
ld (mdrv),a
ld hl,mmsg
call str
adnm: ld hl,0 ;имя
ld b,6
call lnstr
call crlf
or a
ret
;========================;
;ввод строки и перевод её в число
if compact eq 1
else
inum: ld (hl),2
ex de,hl
ld c,10 ;readcon
push de
call 5
pop hl
inc hl ;длина
ld a,(hl)
or a
ret z ;длина =0
ld b,a
inc hl
push hl
inc hl
djnz $-1
ld (hl),0
pop hl
call a2byte
ret
cll: ld hl,spcs
jp str
nump: db "000 ",0
spcs: db " ",13,0
endif
;========================;
ram0on: push bc
push af
ld a,1
_outc: ld bc,1ffdh
out (c),a
pop af
pop bc
ret
ram0off: push bc
push af
xor a
jr _outc
;========================;
;поиск имени раздела по номеру в b
;[out] a=2 - hl= имя; a=0 - не найден
fiprt:
_fcpm: ld a,(hl)
or a
ret z
cp ptype ;тип раздела
jr nz,_nxf
dec b
jr nz,_nxf
ld de,10
add hl,de
ret
_nxf: ld de,16
add hl,de
jr _fcpm
;========================;
;поиск и показ списка разделов,
;[out] b= кол-во
shprt:
ld bc,cmore
_shpl: ld a,(hl)
or a
ret z
cp ptype
jr nz,_nprt
inc b
push bc
push hl
if compact eq 1
ld a,b
add a,30h ;"0"
cp 3ah
jr c,_19
add a,7 ;A-Z
_19: ld c,a
call conout
ld b,4
_spc: ld c," "
call conout
djnz _spc
else
ld a,b
ld hl,nump
push hl
call byte2a
pop hl
call str ;num
endif
pop hl
push hl
ld de,10
add hl,de
ld b,6
call lnstr ;name
pop hl
push hl
ld de,6
add hl,de
ld e,(hl)
inc hl
ld d,(hl)
srl d
rr e
ld hl,num5+1
call word2a
ld hl,num5
call str ;size
call crlf
pop hl
pop bc
dec c
jr nz,_nprt
call more
ret z ;нажат пробел, выход
ld c,cmore
_nprt: ld de,16
add hl,de
jr _shpl
more: push bc
push hl
ld hl,mmore
call str
call conin
pop hl
pop bc
cp " "
ret
num5: db " 0000 KB",0
mmore: db "more...",13,0
;=======================;
;число A -> 3-значная dec строка (HL)
;ведущие нули заменяет пробелами.
byte2a:
ld c,-100
call _ba
ld c,-10
call _ba
add a,30h
ld (hl),a
dec hl
dec hl
ld b,2
jr lzz
_ba: ld b,2fh
_dm1: inc b
add a,c
jr c,_dm1
sub c
ld (hl),b
inc hl
ret
;=======================;
if compact eq 1
else
;строка (HL) до 99 -> число в A
;без пробелов в начале
;конец строки - любой байт < 30h
a2byte:
ld a,(hl) ;десятки
sub 30h
ld b,a
inc hl
ld a,(hl) ;ед
sub 30h
ld c,a
jr nc,_2d
ld a,b
ret
_2d: xor a
ld e,10
_a2b: add a,e
djnz _a2b
add a,c
ret
endif
;=======================;
;число DE -> 5-значная dec строка (HL)
;ведущие 0 заменяет пробелами.
word2a:
push hl
ex de,hl
ld bc,-10000
call _wa
ld bc,-1000
call _wa
ld bc,-100
call _wa
ld c,-10
call _wa
ld a,l
add a,30h
ld (de),a
pop hl
ld b,4
lzz: ld a,30h ;ведущие 00
_lz: cp (hl)
ret nz
ld (hl),20h
inc hl
djnz _lz
ret
_wa: ld a,2fh
_dm2: inc a
add hl,bc
jr c,_dm2
sbc hl,bc
ld (de),a
inc de
ret
;========================;
lnstr: ld c,(hl)
push hl
call conout
pop hl
inc hl
djnz lnstr
ret
str: ld a,(hl)
or a
ret z
ld c,a
push hl
call conout
pop hl
inc hl
jr str
;========================;
crlf: ld c,13
call conout
ld c,10
jp conout
;========================;
;показ модели диска, иначе CF=1
fihdd: ld hl,wbuff
ld c,$setwrk
call ram0off
rst 8
db 81h
ld c,$hddid
rst 8
db 81h
call ram0on
ret c
ld hl,mhdd
call str
ld hl,wbuff+36h
call shid
or a
ret
shid:
ld b,19
_shi: push bc
ld e,(hl)
inc hl
ld c,(hl)
inc hl
push hl
push de
call conout
pop bc
call conout
pop hl
pop bc
djnz _shi
jp crlf
;========================;
;conin6: ld a,0ffh
; ld c,6
; jp 5
if compact eq 1
conin:
jp 0f009h
conout: push bc
call 0f00ch
pop bc
ret
else
conin: ld c,1
jp 5
conout: push bc
ld e,c
ld c,2
call 5
pop bc
ret
endif
mhdd: db "HDD: ",0
mprt: db "Num Name Size",13,10
db "--- ------ -------",13,10,0
; 001 cpm001 8192 KB
selp: db "Select part num, or 0 to quit: ",0
mmsg: db 13,10,"Mounted OK on dr"
mdrv: db "0: ",0
wbuff:
.dephase
db "(c) 1999 Jason"
END

Jason
19.04.2025, 17:33
Версию возьму скорее всего эту:
https://vtrd.in/system/CPM_CASH.zip
Она сырая. Там размеры биткарт от балды, поэтому они наползают на соседние, с непредсказуемым результатом...
У меня сейчас так:


;allocation vector
all_fd0: ds 20 ;биткарты дисков, 1 бит на кластер
all_fd1: ds 20 ;20 = до 160 кл. (moa =155)
all_fd2: ds 50 ;для 800k fdd надо 400/8 =50
all_fd3: ds 50
all_ram: ds 28 ;896кб рамдиск
all_hdd: ds 64 ;512 кластеров

;checksums vector
chk_fd0: ds 32 ;32 = (DRM+1)/4 = до 128 файлов
chk_fd1: ds 32 ;чексуммы для каждого 128б блока
chk_fd2: ds 32 ;каталога
chk_fd3: ds 32
chk_ram: ds 32
chk_hdd: ds 128 ; до 512 файлов

(Я нашёл диск со своими старыми наработками, сейчас ковыряюсь.)
Вот кстати из исходников cp/m 2.0 (были на Klug BBS).


; fixed data tables for four-drive standard
; IBM-compatible 8" disks
; disk parameter header for disk 00
dpbase: dw trans,0000H,0000H,0000H,dirbf,dpblk,chk00,all00

dirbf: ds 128 ;scratch directory area
all00: ds 31 ;allocation vector 0
all01: ds 31 ;allocation vector 1
all02: ds 31 ;allocation vector 2
all03: ds 31 ;allocation vector 3
chk00: ds 16 ;check vector 0
chk01: ds 16 ;check vector 1
chk02: ds 16 ;check vector 2
chk03: ds 16 ;check vector 3

Эх, 8-дюймовые дискеты, 64 файла в каталоге, да.


36-я ведет отсчет не в абсолютных секторах, а относительно начала подраздела
поэтому de=0001, hl=адрес куда читать, b-сколько секторов (512б) читать и понеслась
Из подраздела - сектора считают от 0. Если смонтирован tr-dos диск - тогда от 1.
Я дизассемблеровал драйвер от исдоса, он считает от 0. И копирайты МОА при нём.


Что-то даже отформатировать дискетку не умею.
Пишу
format b:
Ругается, что надо сделать сначала assign.
assign работает только в Microdos или похожих. У них биос более продвинутый.
Если диск на 640 кб - то формат просто не нужен, достаточно era *.*
Есть format.com от Марковского, но она хочет открытые порты. Можно переделать, это нетрудно, она мелкая.


На старых прошивках монитора шибко мигает при обращении к HDD.
Это лечится - программированием HDD через порты. Если лазить к ним через #3D2F - то это небыстро, но у меня получалось вдвое быстрее дисковода, около 70 кб/с или 30 тыс тактов на 512б сектор.
А если открыть порты (#1FFD bit 2) - то имеем 240 кб/с при чтении длинными кусками. См. idesmuc.blk для исдоса.


в теории такое может быть - работа с портами SMUC напрямую, так же как, например, на вообще-не-скорпионах.
Ох. Драйвер idesmuc.blk делает именно это. Я написал его в 1998 году.
И под немовскую схему я тоже писал в то время, см. jason.blk. А в ide+5.blk есть куски моего кода.

Думаю насчёт прикрутить к CP/M читалку HDD через порты. Уже есть готовое, надо засунуть в 6-ю банку и вызывать из 1-й.
Обкатанный драйвер через RST 8 тоже есть, уже работает. Причём правильно работает, ибо различает виды записи - буферизованную, немедленную и без предчтения (C=0,1,2).

izzx
19.04.2025, 21:30
Оказывается чего только не было уже в 98 году.


Думаю насчёт прикрутить к CP/M читалку HDD через порты.
Вот, я надеюсь более полноценная версия для HDD у нас скоро будет ). И для ГМХ в первую очередь.

Я вот ещё всё собираюсь с этой маунтилкой из предыдущего сообщения разобраться, попробовать запустить.

Jason
20.04.2025, 10:13
Оказывается чего только не было уже в 98 году.
Много всего было ещё раньше, просто нам это не досталось.
Вот например, WalnutCD (http://cpmarchives.classiccmp.org/ftp.php?b=cpm/Software/WalnutCD) с софтом для CP/M. И почти всё (кроме аппаратно зависимого) работает у нас, без всяких переделок.
Я нашёл (http://www.retroarchive.org/cpm/games/games.htm) 102 игрушки на бейсике, решил сыграть в покер - и выиграл $200, виртуальных. Запускать: mbasic poker или mbasic menu.


И для ГМХ в первую очередь.
Тогда нужен эмулятор терминала VT-52 для GMX. Есть такое?
Коды цвета <ЕSС> "P" можно взять от Heath/Zenith, на профике так сделано. До кучи, можно поддержать коды консоли ATM <ЕSС> "F", они не пересекаются.

Black Cat / Era CG
20.04.2025, 10:49
И почти всё (кроме аппаратно зависимого) работает у нас, без всяких переделок.Так в том и суть cp/m.

Jason
20.04.2025, 10:52
Я вот ещё всё собираюсь с этой маунтилкой из предыдущего сообщения разобраться,
Смонтировать недостаточно, нужно ещё DPB указать -размеры кластера, кол-во входов в директории и прочее. А они на диске не хранятся. Можно исходя из размера диска назначить ему некие "стандартные" параметры, и не более.
Например, для 8 МБ диска, 4к кластера и макс. 1024 входов:


;8192k
dpblk_hdd:
dw 128 ;trks
db 5 ;4k
db 1fh ;4k
db 1 ;32k hddexms:
dw 2047 ;DSM hddsz:
dw 1023 ;DRM
db 0ffh,0 ;32k alloc:
dw 0 ; без чексумм
dw 0

Каталог весит всего 32 кб.
Если записать туда 1024 мелких файлов до 4 кб - место в каталоге кончится, но занято будет всего 4 МБ.
Можно сделать 2048 входов, но каталог станет вдвое больше, а это тормоза.

izzx
20.04.2025, 10:59
Тогда нужен эмулятор терминала VT-52 для GMX. Есть такое?
Для этой версии, которую я дорабатывал, прикрутил драйвер экрана. Файл "PR80.AS".
А он просто печатает символ на экране, какой скажут. То же самое, что и драйвер на 64 символа.
Там в первом сообщении ссылка на папку, архив от 2023.05.31.

А какая вообще версия CPM для скорпа более лучшая? Какую запускать? Чтобы работал mount.com.

Jason
20.04.2025, 19:49
Там в первом сообщении ссылка на папку, архив от 2023.05.31.
Там нет исходников, только бинарники.

izzx
20.04.2025, 20:51
Там нет исходников, только бинарники.
А так?
https://drive.google.com/file/d/1rLNuhVchwIc5BZW1WvxZ2tFyO7xa8Eja/view?usp=drive_link

Jason
21.04.2025, 04:49
А так?
Глянул.

ld a,(de) ; вывод буквы
xor b
ld (hl),a

push de
ld de,80 ;
add hl,de
pop de
;-----
inc d
ld a,(de)
xor b
ld (hl),a

push de
ld de,80 ;
add hl,de
pop de
В моём детстве это сделали бы так:

ld b,8
lta8 ld a,(de)
nop ; или #2f (cpl) =инверсия, или xor c при с =#ff
ld (hl),a
ld a,l ; hl=hl+80
add a,80
ld l,a
adc a,h
sub l
ld h,a
inc d
djnz lta8

У меня где-то есть процедуры печати любыми шрифтами, от 3х3 до 8х8 на любом экране - АТМ, Профи, Таймекс-пентагон, надо найти. Делалось для спрайтов, но для текста тоже подходит.

Jason
25.04.2025, 08:39
Кстати, есть способ средствами самой CP/M прочитать любые диски, с любыми параметрами.
Например, у MOA это сделано через добавочный байт в (DPB+15) - код типа носителя.
У FK0 - маска и сдвиг (2 байта) хранятся там же.
Есть рабочие копировщики, который используют этот способ.

Jason
10.05.2025, 14:00
Экран мерцает действительно сильно, но меня это не напрягает.
Сейчас так:
Чтение с HDD.
Через RST 8, прошивка 4.01 : 27 КБ/с
Через теневые порты и #3D30 : 52 КБ/с
Через открытые порты, стандарт GMX : 110 КБ/с
Нормально. Это конечно не исдос, который длинными кусками
читает более 200 КБ/с, но уже хорошо. И экран не мерцает.
Рамдиск выдаёт 62 КБ/с, флопы c интерливом - 14-20 КБ/с.
CP/M читает секторами по 128 байт, поэтому большие накладные расходы.
Спидтест сейчас найду и выложу.

Xela
10.05.2025, 17:15
Для ElementZX написали (адаптипрвали) CP/M работаюшаю с FAT32-раздела: https://oldcomp.cz/viewtopic.php?f=158&t=13472 (оригинал на чешском, гугл-переводчик справляется неплохо)

"Если вы захотите скопировать что-либо с SD-карты позже, есть команда F2C.COM, которая может перенести все содержимое каталога за один раз."
как минимум вот эта штука интересная - полезно было для копирования FAT>CP/M

Jason
11.05.2025, 13:56
Спидтест сейчас найду и выложу.

Speedtest v. 1.1
Измеритель скорости дисков для CP/M 2.2
С исходниками под медноноговский асм.
Требует наличия часов реального времени, поддержаны три основных
стандарта. Внутри оставлено место под юзерский драйвер и описаны
точки входа.
http://i.ibb.co/hxZ0YXb2/800i-9-3.png