PDA

Просмотр полной версии : ПК8000 - ROM диск



Mick
08.10.2008, 18:35
Посколько похоже с одним только квазидиском маловато будет, да и програмки где-то надо содержать - хотя бы начнем обрисовывать как ROM диск будет выглядеть. Опять же наверняка была родная система картриджей -но информации по ней нет. А значит будем изобретать :)
Итак у меня пока мысли сделать с микрухами типа FLASH, чтобы можно было записывать проги. Думаю в минимальной конфигурации 512кб хватит. Тип микросхем AT29C040 или подобной с записью.

Высказываеся, обсуждаем.

XobbiMan
08.10.2008, 18:39
Я так понял, что запись в эту память возможно только из-под ПК8000?
Это будет как ППЗУ в МК-52 калькуляторе?

Mick
08.10.2008, 18:42
Я так понял, что запись в эту память возможно только из-под ПК8000?
Это будет как ППЗУ в МК-52 калькуляторе?

Ну если есть внешний программатор, то записать можно во вне. Только надо придумать что то типа файловой системы. Ну и полюбому загрузчик-прошивальщик там должен быть :)

Error404
08.10.2008, 18:59
Ну если есть внешний программатор, то записать можно во вне. Только надо придумать что то типа файловой системы. Ну и полюбому загрузчик-прошивальщик там должен быть :)

А операционка на ПК8000 была какая-нибудь? Например, CP/M?
Тогда операционку можно посадить во FLASH, грузиться оттуда, а в самой операционке сделать в BIOS девайс, смаппированный на flash (фактически и дописать то нужно чтение/запись сектора). Тогда и файловая система там будет (средствами этой самой ОС) и вообще что угодно.

Я на Орионе хотел одно время так сделать, но потом отказался в пользу CompactFlash.

XobbiMan
08.10.2008, 19:04
А операционка на ПК8000 была какая-нибудь? Например, CP/M?

Предполагается что CP/M был или ДОС-Бейсик (аналог как в MSX), ибо 100% был флоппи диск поключаемый к разъему расширения X1(X2)


Естественно, никто старые флоппики подключать не будет, то лучше конечно эмулятор или сразу SD/CF, только ОС надо подобрать либо адаптировать.

b2m
09.10.2008, 12:09
Предполагается что CP/M был
Сомневаюсь. Все программы в CP/M грузятся по адресу 100h, а у нас там экран. А вот ДОС-Бейсик вполне мог быть. Хотя, если контроллер дисковода имел свою память (типа квазидиска), то могла быть и CP/M.

XobbiMan
09.10.2008, 13:06
b2m,
А ДОС-Бейсик мог работать через контроллер? Вроде как в MSX такой был - надо попробовать поглубже поинтересоваться. (тут ведь просто несколько команд добавляются, и предположительно что оно загружается в верхние адреса памяти)

b2m
09.10.2008, 13:35
А ДОС-Бейсик мог работать через контроллер?
В смысле: имел ли ДОС-Бейсик встроенный драйвер для работы с контроллером диска и файловой системой на диске? Вполне возможно, что плата контроллера дисковода имела своё ПЗУ с Бейсиком и ДОС, а также ОЗУ для области 0000-3FFF.

ivagor
09.10.2008, 17:34
Сомневаюсь. Все программы в CP/M грузятся по адресу 100h, а у нас там экран
Прикалываешься? Ты же реализовал, в соответствии с документацией, переключение экранов (порт 84h). А я его использовал в JETSET. Или по уточненным сведениям на самом деле что-то не так?

b2m
09.10.2008, 18:37
Прикалываешься?
Действительно, забыл про него. Тогда да, экран настраиваем с 0E000h, ПЗУ Бейсика отключаем, и CP/M вполне помещается как обычно на адресах 0С400-0D9FF, а 0DA00-0DFFF содержит БИОС диска и вызовы процедур вывода на экран.

Tim0xA
09.10.2008, 23:31
Исходники CP/M для i8080 и z80 можно взять тут:
http://www.cpm.z80.de/source.html
Может это и баян, но я только сегодня нашел.

b2m
10.10.2008, 11:41
Прелесть СР/М в том, что если есть бинарник и его начальный адрес в памяти тебя устраивает, то исходники не нужны. Дописать БИОС для СР/М - дело техники.

XobbiMan
10.10.2008, 11:45
b2m,
Но ведь работа с Видео-ОЗУ в ПК8000 немного эгзотична. И придется адаптировать. Или я ошибаюсь?

balu_dark
10.10.2008, 12:14
речь идет просто об эмуляции функций биоса - СР/М программы работают только через вызов стандартных процедур и зная что каждая процедура делает - можно написать вообще свой биос. при этом можно даже не знать и не видеть сорсы самой оси как оно было в натуре.тоесть зная например что функция 5 скажем - выводит символ на экран и ложить его надо в регистр А - пишеш такую же функцию на свое железо. а карта функций и регистров - гдето была.

Tim0xA
10.10.2008, 13:07
Прелесть СР/М в том, что если есть бинарник и его начальный адрес в памяти тебя устраивает, то исходники не нужны. Дописать БИОС для СР/М - дело техники.
Прелесть исходников в том, что можно получить бинарник CP/M с того начального адреса в памяти, который тебе нужен, для любой платформы, прямо здесь и сейчас, не задаваясь вопросом, подойдет ли тебе бинарник неизвестно кем скопилированный. А BIOS разумеется придется писать свой.

b2m
10.10.2008, 17:11
Ну что, теоретическое доказательство возможности CP/M на ПК8000 готово:

ivagor
10.10.2008, 17:40
Лихо! Можно ли ждать от тебя утилитку или инструкцию по созданию образа КД?

b2m
10.10.2008, 17:45
Утилитки пока нет, но если надо будет - сделаю. А пока я просто склеиваю систему, каталог и файлы. Каталог правлю ручками в hiew :)

Mick
10.10.2008, 20:11
Собственно это хорошо, что ось уже придумали, только вот давайте сначала предположим как этот диск будет выглядеть. Опять же нужна ли сегментация и как эти сегменты будут располагаться.

b2m
11.10.2008, 00:31
Я исходил из того, что CP/M будет использовать 16Кб-страницы для обмена с расширенной памятью, причём достаточно окна по адресу 4000h. Также, если доступ к квазидиску запрещён, то открывается ROM-диск. Т.е. смысл bit7 несколько иной: выбор либо внешнего ОЗУ, либо ПЗУ. А запрещение должно управляться сигналом СЛОТ. После сброса значение порта 10h обнуляется, и если открыть слот, то будет доступ к первым 16Кб ПЗУ, откуда собственно и грузится система.

Доделал RAM-диск (т.е. диск B: )

Mick
13.10.2008, 19:25
Вот на основе квазидиска создал отдельно ROM диск. Разделил из за удобства отладки - и пока будет отдельное устройство. Собственно объединяются в одно устройство легко :) там догадаться не сложно.

После этого делаю паузу, пока не соберу, двигаться дальше не имеет смысла так как иначе ничего не будет. Потом возьмемся за накопители. :)

Mick
29.01.2009, 21:01
Тут занялся вопросом подключения картриджа к машинкам. Короче ПЗУшка внешняя пока не заработала. Сначала присоединил на X1 потом на X2 - результат один и тот же. И похоже косяк в ПЗУ :) :(
Вот привожу кусок кода из ПЗУ. При старте идет опрос разъемов расширения - тут все понятно.
Сначала X1, затем X2 и уже облатсть ОЗУ


seg000:2989 mvi a, 0F4h ; 'Ї'
seg000:298B out 80h
seg000:298D call sub_0_24C6
seg000:2990 mvi a, 0F8h ; '°'
seg000:2992 out 80h
seg000:2994 call sub_0_24C6
seg000:2997 mvi a, 0FCh ; '№'
seg000:2999 out 80h
seg000:299B call sub_0_24C6


И вот тут обратите внимание на следующую процедуру :)


seg000:24C6 sub_0_24C6: ; CODE XREF: seg000:298Dp
seg000:24C6 ; seg000:2994p ...
seg000:24C6 lxi d, 4000h
seg000:24C9 ldax d
seg000:24CA cpi 41h ; 'A'
seg000:24CC rnz
seg000:24CD inx d
seg000:24CE ldax d
seg000:24CF cpi 42h ; 'B'
seg000:24D1 rnz
seg000:24D2 inx d
seg000:24D3 ldax d
seg000:24D4 mov l, a
seg000:24D5 inx d
seg000:24D6 ldax d
seg000:24D7 mov h, a
seg000:24D8 pchl

И смотрим на первую строчку подпрограммы lxi d,4000h. Тоесть когда мы выбираем в регистре разъем расширения X2 (область памяти 8000h - BFFFh) а обращаемся мы то к 4000h - улет обеспечен, что и происходит. Вот так вот. :)
Так что ПЗУхи для стартап картриджей можно подключать только к разъему X1.
Замечу, это копал ПЗУ Суры(Хобби), ПЗУ Весты не смотрел -> только что глянул - такая же фигня.

Этот пост является ошибочным,так как в очередной раз забыл о правильным конфигурировании порта 80h. Ivagor снова меня спустил на грешную землю после долговременного витания в облаках. :v2_conf2:

ivagor
29.01.2009, 21:16
Mick, вроде этот вопрос уже обсуждали.
Если судить по мануалу к Суре (книга 2, стр. 55), то выбор разъема, к которому будет обращение, зависит от того, что засылается в соответствующие битики порта 80h. Привязки определенных адресов памяти к X1 или X2 там не указано. Что, по схеме выходит несоответствие описанию?
По вышеприведенному примеру:
F4h - 11110100:
0-3FFF - встроенное ПЗУ
4000-7FFF - разъем расширения 1
8000-FFFF - ОЗУ

F8h - 11111000:
0-3FFF - встроенное ПЗУ
4000-7FFF - разъем расширения 2
8000-FFFF - ОЗУ

FCh - 11111100:
0-3FFF - встроенное ПЗУ
4000-FFFF - ОЗУ

Т.е. все в соответствии с мануалом, что тебе кажется неправильным?

Mick
29.01.2009, 21:25
Mick, вроде этот вопрос уже обсуждали.
Если судить по мануалу к Суре (книга 2, стр. 55), то выбор разъема, к которому будет обращение, зависит от того, что засылается в соответствующие битики порта 80h. Привязки определенных адресов памяти к X1 или X2 там не указано. Что, по схеме выходит несоответствие описанию?
По вышеприведенному примеру:
F4h - 11110100:
0-3FFF - встроенное ПЗУ
4000-7FFF - разъем расширения 1
8000-FFFF - ОЗУ

F8h - 11111000:
0-3FFF - встроенное ПЗУ
4000-7FFF - разъем расширения 2
8000-FFFF - ОЗУ

FCh - 11111100:
0-3FFF - встроенное ПЗУ
4000-FFFF - ОЗУ

Т.е. все в соответствии с мануалом, что тебе кажется неправильным?

Блин, что то я затупил окончательно. Почему то мне все время думалось что X2 это область привязана к 8000h- BFFFh. А я тут косячу сам пишу процедуру в 8000h области, записываю ее в ПЗУ и жду от моря погоды. Спасибо ivagor. Вот что значит переключится обратно на ПК8000 после двухмесячного перерыва создавания Спектрума. Пердыдущий пост свой я опровергну немного.


Немного погодя все же заставил читать из ПЗУ. Взял что под руку попалось - игра Питон из базового пакета Хобби. Так как эта программуля маленькая и рабочие ячейки находятся в ней, то она пытается писать в ПЗУ. Пришлось ее сначала скопировать в другую область памяти, а потом когда выключил ПЗУ, скопировалв ее реальные адреса и заработала. Ну что же с чтением разобрались, теперь надо пытаться записать в флеш.

Black1972
30.01.2009, 00:35
Классно Mick. Т.е. прогресс налицо... Скоро, надеюсь сможем слить игры из ПЗУ Фотона.

Mick
30.01.2009, 21:09
Классно Mick. Т.е. прогресс налицо... Скоро, надеюсь сможем слить игры из ПЗУ Фотона.

Стараюсь как могу :)
Просьба не пугаться, что исчезло часть поста - перенес ее в тему про "Фотон". Это будет я думаю правильнее - так не будет терятся смысл сообщений.

Добавлено через 2 минуты

Mick
Если будет время, может попробуешь прошить в "картридж" и прогнать на реале прилагаемый тестик?
Его смысл - сравнить быстродействие программы из внутреннего ПЗУ и внешнего ПЗУ.


Попробую обязательно.
Работа с картриджем напрямую связана с последующим созданием записываемого РОМ диска. Микросхемы типа flash боюсь заставят нас ввести некоторые дополнительные биты в порт управления ром диском. Возможно это понадобится для управлением записью. И еще замечание - во флеш микросхему запись похоже только посекторная.

omaxlab
24.03.2011, 23:16
Скажите плиз а чем закончились эксперименты с РОМ диском? очень хотелось бы собрать себе такой

Mick
25.03.2011, 08:54
Скажите плиз а чем закончились эксперименты с РОМ диском? очень хотелось бы собрать себе такой

Дальше экспериментов не продивнулся. :(

omaxlab
25.03.2011, 23:45
а может попробовать продвинуться дальше? могу послужить тестером... есть сура и хобби... вещь очень интересная но познания не позволяют сделать самому

Mick
26.03.2011, 12:34
а может попробовать продвинуться дальше? могу послужить тестером... есть сура и хобби...

Протестировать я и сам могу, так как у меня самого есть Веста, Сура и Хобби. Но сейчас я занят над спектрумовской тематикой и как показала практика я не Цезарь - делать сразу много дел не могу.

---------- Post added at 12:34 ---------- Previous post was at 12:33 ----------


но познания не позволяют сделать самому

Учиться никогда не поздно :)

XobbiMan
26.03.2011, 20:15
OFFTOPIC
omaxlab,
может и софт есть какой новый которого нет на pk8000.narod.ru ?

omaxlab
27.03.2011, 12:12
XobbiMan, к сожалению нет ничего... кроме родной кассеты от весты

Mick
27.03.2011, 13:01
XobbiMan, к сожалению нет ничего... кроме родной кассеты от весты

И это говоришь ничего. Заwavь ее. И если есть обложка отскань.

omaxlab
27.03.2011, 13:18
ок загоню в wav

XobbiMan
30.03.2011, 20:27
Вот и родной "диск" от Весты будет.

hantarex
06.03.2014, 10:37
диск кто-нить собирал? запись в него поддерживается?

Mick
06.03.2014, 12:59
диск кто-нить собирал? запись в него поддерживается?

То что я рисовал, то я кроме схемы дальше не продвинулся. Занялся плотно железом спектрума. По логике я предусматривал возможность записи во ПЗУ. Там должны по схеме быть микросхемы FLASH ПЗУ.

Да, еще на практике - я как то пробовал просто подключать микросхему FLASH ПЗУ и туда пытался скидывать ПЗУ компьютера. Вроде даже и работало.

hantarex
06.03.2014, 13:18
сигнал WR разведен, а вот в реале пишется флешка? и в pk8000kdos запись реализована? надо собрать попробовать, а то контр. флопа повис пока что.

ivagor
06.03.2014, 13:56
Насчет записи во внешнюю память - надо не забывать, что на ПК8000 при записи хоть куда, хоть даже "наружу" всегда будет еще и запись во внутреннее ОЗУ (спасибо DemonId7, который проверил это на реале).

hantarex
06.03.2014, 14:12
будем подумать.... может, проще ОЗУ с батарейным питанием?