PDA

Просмотр полной версии : Поломал себе мозг- про порт 3F



Totem
28.02.2016, 04:58
Касаемо наших клонов, если у меня железка висит на 3Fh , я пишу в него сразу после RESET, что "поломается" из многообразия наших железок?
Мне нужно перекинуть внутренние порты z180, в другую область его I/O -3Fh -это как раз порт для этого. Пытаюсь сохранить частичную совместимость по портам.
еще такой нюанс, пишется в порт командой z180 IN0, при этом все старшие адреса А8-А15, лягут в 0.

null_device
28.02.2016, 09:20
Totem, единственный порт, который приходит в голову - BDI, т.е., порт вашей "примочки", должен отключаться при входе в tr-dos.
http://sblive.narod.ru/ZX-Spectrum/ZXPORTsLIST/ZXPORTsLIST.htm

И, если верить информации из другого источника (http://speccy.info/%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%BF%D0%BE%D1%80% D1%82%D0%BE%D0%B2_ZX_Spectrum): #3F - один из двух каналов Profi Covox (второй - #5F).

b2m
28.02.2016, 12:03
iorq для внешних железок можно аппаратно запретить после сброса, а разрешать только после того, как порты z180 перекинуты.

alvis
28.02.2016, 12:03
И, если верить информации из другого источника: #3F - один из двух каналов Profi Covox (второй - #5F).
Так и есть, порты 1F, 3F и 5F на Profi на отвечают за управление портом 580ВВ55

Totem
28.02.2016, 14:22
Так и есть, но я пока не могу придумать как это сделать оптимально , держать IORGE на время выполнения команд? из какой страницы стартовать ? меню лежит в станице с BASIC 128?

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

Пока задумка такая, при старте IORG посадить на счетчик тактов, стартовать скажем из 0 страницы, перекинуть код в озу, прыгнуть туда, переместить IO, счетчик отпустит IORG, включить нужну страницу пзу и туда прыгнуть в 0000.
пойдет?

b2m
28.02.2016, 18:21
Вместо счётчика можно использовать старший бит адреса. Перекидывай код в адреса 7Fxx-80xx, так, чтобы момент включения IO приходился на адрес 8000. Еденица в старшем бите адреса должна включать IO.

Totem
29.02.2016, 11:10
Вместо счётчика можно использовать старший бит адреса. Перекидывай код в адреса 7Fxx-80xx, так, чтобы момент включения IO приходился на адрес 8000. Еденица в старшем бите адреса должна включать IO.
Спасибо, довольно изящно, но тоже триггер, иначе любой код там будет дергать IORQG.
Там засада еще в том,что при переброске IO в 80-BF, часть железок пресекается все равно, я пока не делал выборку какие именно внутренние
порты могут гадить (запись в MMU например приведет к пичальке) , пока "втихоряскамунизжу" один малоизвестный порт :) для принудительного включения IORGQ.
Так как это подобие "карманного компа", zx ради спортивного интереса, то для простоты возьму пока просто 48 спек. Там видно будет.
тем более я пока не особо придумал как совместить менеджер памяти 128 и MMU 180, теоретически битом D5 7fffd можно отключать.
будет 1M c MMU 180, он гораздо гибче чем менеджер по 16K в CPU 3.

Еще есть засада команды DAA,RRD,RLD работают не так, насколько это критично? много кто их использует?

ram_scan
29.02.2016, 14:04
Еще есть засада команды DAA,RRD,RLD работают не так, насколько это критично? много кто их использует?

Они чуть иначе работают с флагами. Что касается DAA после INC/DEC то по корану так нельзя было делать, потому-что INC/DEC если я верно помню не влияли на флаг переноса, и по идее все должно было работать как в Z180 с самого начала. Но DAA на Z80 пользовалась внутренним флагом переноса который не всегда попадал в аккумулятор, и это работало, и программ таких достаточно много.

На грабли с отличиями во флагах после RLD/RRD можно наверное натолкнуться только в ксорках/крипторах, потому-как сложно придумать практическое использование флагов после такого "вертежа".

- - - Updated - - -


Касаемо наших клонов, если у меня железка висит на 3Fh , я пишу в него сразу после RESET, что "поломается" из многообразия наших железок?
Мне нужно перекинуть внутренние порты z180, в другую область его I/O -3Fh -это как раз порт для этого. Пытаюсь сохранить частичную совместимость по портам.
еще такой нюанс, пишется в порт командой z180 IN0, при этом все старшие адреса А8-А15, лягут в 0.

Раз оно пишется отдельным опкодом проще по /M1 выцеплять дешифратором этот опкод и на время его выполнения отрубать /IORQ на запись от всей забортной периферии. А чтение все равно из внутренней защелки пойдет.

Totem
29.02.2016, 15:22
Еще вопрос кто то мучал BBC BASIC
https://sourceforge.net/p/sebasic/discussion/1747195/thread/55441f69/
или что то подобное под свои нужды?

krotan
01.03.2016, 18:52
Еще вопрос кто то мучал BBC BASIC ... или что то подобное под свои нужды?
BBC BASIC - язык программирования для компьютера BBC Micro компании Acorn, со спектрумом не совместим.
SE Basic - это исправленное ПЗУ спектрума, с устранением ошибок, добавлением новых команд и поддержкой AY и ULAplus. (последнюю версию 4 (http://cheveron.github.io/sebasic4/) допиливал Andrew Owen и вроде довёл его до свободно-распространяемого статуса).
OpenSE BASIC - примерно то же (https://sourceforge.net/projects/sebasic/), но разработан с нуля без использования кода из ПЗУ спектрума и поэтому легально свободно распространяемый. Написан Andrew Owen после того, как армстрадовцы послали его нахер с просьбой открыть для свободного распространения ПЗУ спектрума..
_ В SE Basic и OpenSE BASIC дополнительные команды и поддержка AY, ULAplus реализованы по-разному. Что лучше, не знаю...

Totem
01.03.2016, 22:03
BBC BASIC - язык программирования для компьютера BBC Micro компании Acorn, со спектрумом не совместим.
SE Basic - это исправленное ПЗУ спектрума, с устранением ошибок, добавлением новых команд и поддержкой AY и ULAplus. (последнюю версию 4 (http://cheveron.github.io/sebasic4/) допиливал Andrew Owen и вроде довёл его до свободно-распространяемого статуса).
OpenSE BASIC - примерно то же (https://sourceforge.net/projects/sebasic/), но разработан с нуля без использования кода из ПЗУ спектрума и поэтому легально свободно распространяемый. Написан Andrew Owen после того, как армстрадовцы послали его нахер с просьбой открыть для свободного распространения ПЗУ спектрума..
_ В SE Basic и OpenSE BASIC дополнительные команды и поддержка AY, ULAplus реализованы по-разному. Что лучше, не знаю...
Я вообще то в курсе, что такое bbc basic и спектрум тут причем, вообще имелось ввиду кто то, имел опыт доделки переделки. он работает успешно на многих самоделках Z80.
https://www.youtube.com/watch?v=PcFZUJwmnQ4
ну и вообще вот так
http://mdfs.net/Software/Spectrum/BBCBasic/
http://mdfs.net/Software/BBCBasic/

krotan
02.03.2016, 01:32
ну и вообще вот так
http://mdfs.net/Software/Spectrum/BBCBasic/ Спасибо! Интересно! Надо пробовать. Бегло почитал - на спектруме можно использовать 3-мя способами: просто загрузить с ленты побаловаться, прошить вместо спектрум-бейсика (тогда это уже будет не спектрум), прошить вместо бейсика-128 (тогда надо решить какие-то заморочки с портом FD)...
Сам этот BBCbasic хвалят, говорят он с ассемблером хорошо сочетается...
Есть рекомендации по его запуску в эмуляторах...
А вообще под это надо другой топик создавать, а то здесь эту интересность никто не найдёт...
P.S. автор пишет, что при обычном ресете попадаем в BBC BASIC, а если при ресете удерживать кнопку Z, попадаем в ZX BASIC...
...и я так понял, скрещивать с TR-DOS его ещё пока никто не пробовал...

Djoni
02.03.2016, 18:07
Спасибо! Интересно! Надо пробовать. Бегло почитал - на спектруме можно использовать 3-мя способами: просто загрузить с ленты побаловаться, прошить вместо спектрум-бейсика (тогда это уже будет не спектрум), прошить вместо бейсика-128 (тогда надо решить какие-то заморочки с портом FD)...
Сам этот BBCbasic хвалят, говорят он с ассемблером хорошо сочетается...
Есть рекомендации по его запуску в эмуляторах...
А вообще под это надо другой топик создавать, а то здесь эту интересность никто не найдёт...
P.S. автор пишет, что при обычном ресете попадаем в BBC BASIC, а если при ресете удерживать кнопку Z, попадаем в ZX BASIC...
...и я так понял, скрещивать с TR-DOS его ещё пока никто не пробовал...


Тут интересные прошивки http://zx-pk.ru/showthread.php?t=12905&p=805413&viewfull=1#post805413

Они только наверно под +3 :(