PDA

Просмотр полной версии : ZX-M8XXX эмулятор на javascript



Bedazzle
31.12.2025, 18:03
С Новым годом!

Встречайте первый блин комом
https://github.com/Bedazzle/ZX-M8XXX

cafedead
31.12.2025, 22:05
Круто, молодец) Долго делал?

Внешне интерфейс мне нравится. Код такой себе. Медленный. Много ифов, функций. На Джаваскрипте это медленно. Флаг переполнения можно без таблиц быстрее посчитать, и полуперенос. На полную 700 кадров в секунду в браузере на моей машине - это круто, уровень ZXMAK. Но это медленно. Можно быстрее, если поработать с кодом.

usr0 на Пентагоне приводит к зависанию, нажатие на Ентер по завершению программы, загруженной загрузчиком из меню Пентагона - тоже.

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

В остальное не вникал. Удачного допиливания... -)

83468

Всех с НГ.

Bedazzle
01.01.2026, 01:47
Круто, молодец) Долго делал?

Это эксперимент по ии-кодингу. Начал в полдень 19го числа, т.е. меньше двух недель на всё.


Внешне интерфейс мне нравится. Код такой себе. Медленный. Много ифов, функций. На Джаваскрипте это медленно.

Основная цель - богатый инструмент для ковыряния, высокая скорость наверное, нужна только для быстрого проигрывания rzx.
Остальное пока худо-бедно успевает.



Флаг переполнения можно без таблиц быстрее посчитать, и полуперенос.

Поставлю галочку на будущее, спасибо за подсказки!


usr0 на Пентагоне приводит к зависанию

ой... пора вызывать фиксиков!


На реале после HALT процессор постоянно вычитывает следующий байт

спасибо!

Woodster
01.01.2026, 17:46
HALT behaviour can be tested with this relatively new test program: https://github.com/redcode/Z80/wiki/HALT2INT

Bedazzle
01.01.2026, 19:56
usr0 на Пентагоне приводит к зависанию

фиксики пришли, починили


83468

А где этот тест взять?
zexall с текущей версией должен все тесты проходить успешно.

cafedead
01.01.2026, 23:38
А где этот тест взять?

83476
83477

Bedazzle
02.01.2026, 00:40
83476

Стало лучше, но надо подпилить.

83478 83479

cafedead
02.01.2026, 02:50
Стало лучше, но надо подпилить.


case 0x40: this.b = this.inPort(this.bc); this.f = (this.f & this.FLAG_C) | this.sz53pTable[this.b]; this.memptr = (this.bc + 1) & 0xffff; this.tStates += 12; break; // IN B,(C)

Очередность действий не та... В MEMPTR должно попадать не значение BC + 1 как таковое, а адрес, который выкладывается на шине для чтения порта, который затем инкрементируется. А тут вы в B прочитали значение из порта, и в BC уже не то, что нужно для занесения в MEMPTR.

83480

Вот, косячат только IN B,(C) и IN C,(C).