filling
ZXNet echo conference «code.zx»
From Kirill Frolov → To Oleg Grigoriev 5 November 1999
Press RESET immediately, Oleg!
03 Nov 99 23:54, Oleg Grigoriev wrote to Kirill Frolov:
OG>>> Perversion! Everything is done according to tables. Table for addresses and table
OG>>> masks. Like this, for example:
KF>> Compare the size of the tables and my program! If 3d
KF>> you don’t need a wire, it’s easier without tables.
OG> Ha! That's how you get to basic. :)
If you don't need it quickly, why not?
Saves memory.
KF>>>> Y must be checked for overflow >= 192 !
OG>>> No need. The corresponding addresses in the ROM are indicated.
KF>> IN RAM! I erased the breakdown in vain!
OG> IN ROM! I erased it in vain. :)
OG> Take it again, fascist:
[...]
I don't know what your program does. See for yourself:
Hi Low
S1 S0 00 L4 L3 l3 l2 l0 L2 L1 L0 C4 C3 C2 C1 C0
C0..4 column (horizontal)
L0..4 line (vertical)
l0..3 substring 0..7
S0..1 screen selector 5 / 7 (01/10)
Now think about what will happen if L3 and L4 go beyond the limits?
There is no way this will get into the ROM.
And CALL and RET take a total of 27 clock cycles!!!
;;; ld bc,line*100h+column
ld a,c and 00011111b
ld l,a
ld a,b
rrca
rrca
and 11100000b
or l
ld l,a
ld a,b
rrca
rrca
rrca
and 00011000b
ld h,a
ld a,b
and 00000111b
or h
or ScreenSelector
ld h,a
Kirill Frolov. [ZX]
From Oleg Grigoriev → To Kirill Frolov 6 November 1999
Let your enemies, Kirill, die without sons!
Fri 5 Nov 1999 at 01:59, Kirill Frolov ═> Oleg Grigoriev:
OG>> Ha! That's how you get to basic. :)
KF> If you don’t need it quickly, why not?
You always have to be quick, otherwise you'll end up with Windows.
OG>> IN ROM! I erased it in vain. :)
OG>> Take it again, fascist:
KF> I don't know what your program does. See for yourself:
Fills a 512-byte table with addresses. The first 192 words are filled in
addresses on the screen, the rest are filled with zero.
KF> Hi Low
KF> S1 S0 00 L4 L3 l3 l2 l0 L2 L1 L0 C4 C3 C2 C1 C0
KF> C0..4 column (horizontal)
KF> L0..4 line (vertical)
KF> l0..3 substring 0..7
KF> S0..1 screen selector 5 / 7 (01/10)
KF> Now think about what will happen if L3 and L4 go beyond the limits?
KF> This will not get into the ROM.
With what joy will they go beyond? And if #0000 is not a ROM, then I
stool on two legs.
KF> And CALL and RET take a total of 27 clock cycles !!!KF> ;;; ld bc,line*100h+column
KF> ld a,c
KF> and 00011111b
KF> ld l,a
KF> ld a,b
KF> rrca
KF> rrca
KF> and 11100000b
KF> or l
KF> ld l,a
KF> ld a,b
KF> rrca
KF> rrca
KF> rrca
KF> and 00011000b
KF> ld h,a
KF> ld a,b
KF> and 00000111b
KF> or h
KF> or ScreenSelector
KF> ld h,a
95 тактов, если я нигде не ошибся. Плюс 27 тактов.
Сравни:
;[de] =x,y
;37 тактов.
;
ld h,pnttab[
ld l,e
ld a,(hl)
inc h
ld h,(hl)
or d
ld l,a
;[hl] =x,y
;33 такта.
;
ld a,h
ld h,pnttab[
or (hl)
inc h
ld h,(hl)
ld l,a
Размер минимален - никаких call, ret на фиг не надо.
[ WBR, Oleg. ][ 11:36 6 November XXXIV A.S. ]
p.s. We made it, damn it! Let's tie it up, otherwise they'll laugh. Shame on the jungle! :)
np: Therion '95