Fast dot output inner loop.
ZXNet echo conference «code.zx»
From Aleksey Malov → To All 29 March 2000
Greetings, All!
Catch the sub:
;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
;TOTAL: 65 cycles per point (the procedure with a table in 1K prints in 73 cycles)
Explanations about tab_ptr:
tab_ptr:
[256 bytes high bytes of the start address respectively. lines]
tab_ptr+256:
dup 4
ds 8,tx_00/256 ;8 bytes 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
table tb_xx contains the following:
L/8+#xx; where L is the low byte of the address in the table,
; #xx - corresponding number from tb_xx
at tb_xx+256 - just the following garbage:
dup 32
db #80,#40,#20,#10,#08,#04,#02,#01
edup
total: 4096+512=4.5K per table.
If someone doesn’t understand the idea of sazhb, but would like to understand, write with soap.
I wish you health, happiness and creative Uzbeks.
Aleksey Malov aka VIVID/Brainwave.