ZXNet эхоконференция «code.zx»
тема: Fast dot output inner loop.
от: Aleksey Malov
кому: All
дата: 29 Mar 2000
Приветствую тебя, All!
Лови субж:
;d-y, e-x
LD H,TAB_PTR/256
LD L,D
LD D,(HL)
INC H
LD H,(HL)
LD L,E
LD E,(HL)
INC H
LD A,(DE)
OR (HL)
LD (DE),A
;ИТОГО: 65 тактов на точку (процедура с таблицей в 1К печатает за 73 такта)
Пояснения по поводу tab_ptr:
tab_ptr:
[256 байт старшие байты адресов начала соотв. строк]
tab_ptr+256:
dup 4
ds 8,tx_00/256 ;8 байт tx/256
ds 8,tx_20/256
ds 8,tx_40/256
ds 8,tx_60/256
ds 8,tx_80/256
ds 8,tx_a0/256
ds 8,tx_c0/256
ds 8,tx_e0/256
edup
таблица tb_xx содержит следующее:
L/8+#xx; где L - младший байт адреса в таблице,
; #xx - соответствующее число из tb_xx
по адресу tb_xx+256 - просто следующая фигня:
dup 32
db #80,#40,#20,#10,#08,#04,#02,#01
edup
итого: 4096+512=4.5K на таблицу.
Если кому идея сажба не понятна, а понять охото - пишите мылом.
Желаю вам здоровья, счастья и творческих узбеков.
Aleksey Malov aka VIVID/Brainwave.
|