
Сообщение от
Biland
Дрова для KAY забрал, -4 такта ещё получилось снять
Да нет в общем то не получилось, если посчитать удаление паразитных NOP. Ну тут бзик у меня такой ))
Но в общем снять ещё можно, если скажем не прокручивать регистры длинными инструкциями, а прокручивать аккумулятор короткими, типа так :
Код:
add a,a ; 4 сдвиг битов влево
ld d,a ; 4
and %01110000 ; 7 маска старших битов
ld e,a ; 4 сохранение для d4
add a,a ; 4 сдвиг битов влево
add a,a ; 4 сдвиг битов влево получение d7 для #1FFD , перенос в fC d7 для #7FFD
rr d ; 8 возврат позиций младьших битов и установка d7 для #7FFD в рег. D
or e ; 4 объединение битов d4 и d7 для #1FFD
and %10010000 ; 7 маска
ld bc,#1FFD ; 10
out (c),a ; 12
nop ; 4 на всякий х.з. случай. А может и не надо ))
ld a,d ; 4 биты для #7FFD
and %10000111 ; 7 маска
or #10 ; 7 установка rom1
ld b,#7F ; 7 порт
out (c),a ; 12
nop ; 4 опять фигня на всякий случай ))
ret ; 10 усё !
; Итог:
; 123 такта с паразитами, 115 без NOPов
; 29 байт с паразитами, 27 без nop
- - - Добавлено - - -
А -а ! Я вспомнил почему у меня были перепутаны биты для драйвера кая.
Это было сделано специально для совместимости с ram-диском Real Commander
Раньше использовался единый драйвер доп. памяти для кая и скорпиона и RC работает по формату этого драйвера. Хотя я считаю что не стоит пихать лишние биты по непонятному назначению, но ради совместимости спецификация идёт лесом ))
А вот для пентагона совместимость не выдержал, надо будет исправить ))