
Сообщение от
caro
И реализация этой фичи только в Спектрумах, оснащеных картой ZXMC2. Не думаю, что таких много.
я так понимаю zxmc2 по дефолту в фениксе
а их там штук 6 ревизий по 10+ плат
...не уверен что он во всех ревизиях конечно...

Сообщение от
caro
Владельцы ZXMC2 могли бы написать сравнительный тест, например количество умножений за кадр,
программным и аппаратным умножителем.
а если я не владелец zxmc2?
да и некуда мне его вставлять...
ну а вскорости умножения zxmc2 похвастаться не может
вот в точности этого умножения да
тк все умножалки делилики по скорости не уступающие zxmc2
при этом дают только 8битный результат с пониженной точностью
так же можно было бы запилить из умножения полу хардварное деление 8b/8b=16b (8бит дробная часть)
если в аврке есть место под 256 байт таблицу (1/х)*256
(деление на 1 будет с небольшой ошибкой тк можно занести в таблицу только 255 когда нужно 256)
просто умножаем делимое на делитель пропущенный через таблицу
- - - Добавлено - - -
а так на тему хардварного умножения
быстрей всего было бы, в плане передачи данных туда и обратно, реализация оно в виде
например так
a = число A
c = число B
b = адрес порта для нужной операции \ ну или в с чтоб можно было быстро читать результат при помощи in a,(n)
out (C),a
in a,(C)
out (C),a
in l,(C)
inc b
in h,(C)
с таким бы умножением\делением
z80 бы уже не смог тягаться
- - - Добавлено - - -
как щас
Код:
ld bc,$E8EF ;10
out (c),e ;12
inc b ;4
out (c),d ;12
inc b ;4
in l,(c) ;12
inc b ;4
in h,(c) ;12
; 70t
как могло бы быть
Код:
ld c,port ;7
out (c),a ;12
in l,(c) ;12
inc c ;4
in h,(c) ;12
; 47t
если бы порт выдавал 2 байта по очереди
Код:
ld c,port ;7
out (c),a ;12
in l,(c) ;12
in h,(c) ;12
; 43t
ну и 8 битный результат мог бы получаться так
Код:
ld c,port ;7
out (c),a ;12
in a,(port) ;11
; 30t
хотя с самой аморальной формой софтварного умножения\деления\и всего чего только захочешь одновременно
6b ? 8b = 8b
ld a,(hl) не особо то потягаешься