С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Кстати и смысла при 8080 в ленинградском wait нет, т.к. у 8080 в циклах выборки команды и "просто чтения" длительности сигналов обращения к памяти одинаковые, в отличие от z80.
- - - Добавлено - - -
Хотя возможна и противоположная ситуация, если для согласования 8080 с ленинградом придется тормозить все циклы обращения к памяти. Но и тут M1 не нужен.
Блдж***кие чудеса!!
есть такая конструкция в опросе клавы (упрощено)
но реализация SRL на командах 8080 не ставит zero флагКод:SRL H jp NC,L02A1 jp NZ,L029F DEC L ;меняет zero rlca ;меняет carry jp C,L0296 INC A ;меняет zero RET Z CP $28 ;меняет всёа RET Z ...
получаю zero флаг таким образом сразу перед самим jp nz
за одно оно сохраняет carryКод:inc h dec h jp NZ,L029F
и дальше ВООБЩЕ трижды пофиг
тк флаги 7 раз перебиваются
и все условные ветвления уже зависят от других команд
НО ОНО НЕ РАБОТАЕТ!!
леплю такую городуху
и оно работает о_ОКод:ld (TMP),a ld a,h and a ld a,(TMP) jp NZ,L029F
ЧЯДБЛДЖДНТ?
Последний раз редактировалось NEO SPECTRUMAN; 19.08.2020 в 17:39.
нет...
просто так в 16К не влезет
https://anonfiles.com/b97df4O8o9/ZX8080_ROM_r0045_7z
https://dropmefiles.com.ua/ru/VkXDPZ
нужно жестко все переписывать и оптимизировать...
а желание это делать 0
+шрифты и все тексты занимают много памяти
сейчас выкинута часть шрифта
сообщения об ошибках (хотя кроме ok почему то больше ничего не выводитсо)
![]()
![]()
- - - Добавлено - - -
как вариант можно вынести часть процедур в озу за стек
туда где лежат альтернативные регистры z80
и не очищать эту область при сбросе
и подгружать с матафона в самом начале
вектор же тоже как кирпичь при старте![]()
Последний раз редактировалось NEO SPECTRUMAN; 20.08.2020 в 20:05.
NEO SPECTRUMAN, что именно не работало с inc h\ dec h? Один из вариантов, которым я раньше добивал эмуляцию srl был как раз с использованимем inc\ dec и проблем не было. Заменил в r0045 и тоже на первый взгляд работает. Что нужно нажать, чтобы не работало с inc\ dec?
с ним не жалось ничего вообще
кстате в этом dao
и sbc hl,hl не правильно реализован
это совсем не ld hl,$0000
его альтернатива
;sbc hl,hl
ld (tmp),a
sbc a
ld h,a
ld l,a
ld a,(tmp)
правда именно в 48-м бейсике они вроде для зануления
тк перед ними сбрасывется carry
там скорей всего явно осталась часть не перемещаемого кода
хотя я сейчас двигал все и вдоль и поперек в поисках такого кода
и клавиатура ни разу не отвалилась
еще это гафно зачем то меняет стек
а тк большая часть z80 команд с дерганием стека
возможно как раз от этого куча графических глюков...
- - - Добавлено - - -
ну вощем чтоб не бросать поделие
отправлю пока часть кода в оперативку
за одно будет видно сколько именно не влазит
и что с этим делать...
Последний раз редактировалось NEO SPECTRUMAN; 21.08.2020 в 01:33.
а какие еще известны не точности?
RR-подобные в z80 влияют на zero
bit не трогает carry (когда применяемый для bit and его успешно сбрасывает)
то в этом *****м бейсике сильно усердно любят перекидывать что либо через флаги на дальние расстояния
пользуясь тем фактом что некоторые команды эти флаги не трогают...
Все не помню, разве что srl и djnz. Для djnz есть встроенная опция переключающая быстрый и корректный вариант. Такая ситуация со многими командами, можно сделать или точно или медленно и длинно. Это касается даже простейших арифметических команд (add, sub) - вместо флага четности для соответствия z80 должен быть флаг переполнения, да и флаг вычитания в sub не устанавливается а в daa не учитывается. Идеальная эмуляция с приемлемой скоростью и размером невозможна, но на практике dao обеспечивает довольно хорошие результаты, если речь не идет о математике.
вощем сейчас под все нужно ~18597 байт
запихнул все что осталось
и чудо не произошло...
все как не работало так и не работает
+нашкребсти 2К в самой ПЗУ-шке будет тяжело...
Последний раз редактировалось NEO SPECTRUMAN; 21.08.2020 в 02:43.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)