From
Vitaly Vidmirov
→
To
Yaroslav Kozlov
21 January 1998
Hello, hello Yaroslav!
One day, in the chilly summer, something around (08/20/98/03:16)
Yaroslav Kozlov once wrote to Vitaly Vidmirov.
[what was above this line is no longer there]
YK> What to do with the addresses of lines and colors?
[skipped code]
YK> There is no (^) color here. You can, however, at the end LD SP,IX:LD DE,XXXX:
YK> PUSH DE... swap B and C and B=0, ADD HL,BC and LD H,A and
YK> ADD IX,BC. How long?
YK> [a day has passed.........]
YK> Since you (^) can’t do it, it’s dis-
What are the problems with color?
HL'=ATTR ADR
BC'=#0020
EXX
LDSP,HL
ADD HL,BC
.16 LD DE,XXXX:PUSH DE
EXX
There are no problems with the color...
YK> read that the stack will not be on the edge
YK> screen, and I have it there.
Where is my stack?
YK> This is how it turned out with the calculation of addresses
YK> in place:
[skipped code]
YK> Maybe we can come up with something better.
see above :)
Truly evil Vitalik AKA Dark / X-Trade
From
Yaroslav Kozlov
→
To
All
16 August 1998
Hello All!
[]
Someone seems to be working hard right now
newspaper viewers...
Reader, do not leaf through this letter.
You're probably thinking about another episode...
tion of nonsense...? This is not just “not nonsense.”
This is the most useful information on printing strings
on Speck.
Well, now for the information itself.
; table structure
ORG #C000
=========////============
LD HL,#4020; stack position
LDSP,HL
INC H
!ASSM 16
LD DE,XXXX; print content
PUSH DE
!CONT; the marked piece is repeated
=========////============; 7 times
LDSP,HL
!ASSM 16
LD DE,XXXX
PUSH DE
!CONT
LD SP,colpos; color position
!ASSM 16
LD DE,XXXX
PUSH DE
!CONT
JP nextst;next line in frame
Entering a table from such block rows
must be carried out using the HALT command
through the kernal pointer of the first line.
In addition to the table there should be:
some other subroutines:
1. gen_tbl - generation of the table itself for
print strings
2. res_per - reset old transitions
3. set_per - setting new transitions
according to the agreed one-byte
variable.
4. filltbl - filling offset addresses
rows from the array for races
evens into the print table.
5. normset - setting all pointers
and addresses to the original,zero position. Special
but for turning pages
prostrate
6. get_str - typing a string under
number by value
variable.
And the offset table: shifting addresses
lines in a small address sign
lines and colors on the screen as you go
work. And then we distribute the addresses
subroutine filltbl.
[]
The innermost essence was stated above
this way of printing strings. Letter
written specifically for those already “experienced”,
more or less experienced coders.
This method has already been used in
other programs in a slightly different form.
It was used by: Busy, Lazy (etc),
LD (x-trade), and most likely not only
they are alone.
Or maybe one of you will try?
[]
If there is a conflict with the frame, you can
wait until the frame goes down, for example
type the characters, and then feel free to
go to print table.
See you soon.
PHOENIX.
From
Vitaly Vidmirov
→
To
Yaroslav Kozlov
17 August 1998
Hello, hello Yaroslav!
One day, in the chilly summer, something around (17-08-98/03:13)
Yaroslav Kozlov once wrote to Vitaly Vidmirov.
[...]
VV>> And we do this (without perversions:):
VV>> print with open fonts via IX/IY
VV>> ...
VV>> LD A,(DE)
VV>> OR (HL)
VV>> LD (IX+120),A
VV>> INC D,H
VV>> LD A,(DE)
VV>> OR (HL)
VV>> LD (IY-100),A
VV>> INC D,H
VV>> ...
VV>> DE,HL,IX I hope there is no need to explain where they are pointing...
VV>> [...]
YK> What if the printing program is 42 characters long? There must be
YK> some more fragments, like: RL L:RLA:RL L: RLA.
And this is a 42-character program.
There is no need to move anything... if you don't mind memory.
font1 shift 0 to the right
font2 shift by 2
font3 shift by 4 left side
font4 shift by 4 right side
font5 shift by 6 left side
font6 shift by 6 right side
that's all...
Simply evil Vitalik AKA Dark / X-Trade
From
Vitaly Vidmirov
→
To
Kirill Frolov
19 August 1998
Hello, hello Kirill!
One day, in the chilly summer, something around (17-08-98/00:29:00)
Kirill Frolov once wrote to Vitaly Vidmirov.
[start]
VV>> print with open fonts via IX/IY
KF> ~~~~~~~~~~~~~~
KF> The acceleration is insignificant, but you need a LOT of memory. MD.
Try the opened fonts and feel the difference.
By the way, and "MD." what is this? "Manic-Depressive."... :)
KF> It’s really convenient to type in lines. If the stack is in the screen,
KF> then you can get a slight acceleration. You don't even need DI, but
Firstly: printing is done not to the screen, but to the screen buffer
like LD DE,XXXX:PUSH DE ...
and twitching.
Secondly: how is printing open fonts onto the screen in a stack?
I don't see a way to do this kind of printing to the screen faster than:
LD A,(DE):INC D
OR (HL) :INC H
LD (BC),A:INC B
33 clock cycles/byte so (omitting all unimportant heresy) seal
lines will take 33*256=8448t. In total no more than 9000 cycles.
KF> only if it is in the bank and if it is restored
KF> byte killed in the screen.
Well, let's say, 2 bytes, but what does the bank have to do with it?
[finish]
ill-fated Vitalik AKA Dark / X-Trade
From
Vitaly Vidmirov
→
To
Yaroslav Kozlov
19 August 1998
Hello, hello Yaroslav!
One day, in the chilly summer, something around (19-08-98/01:57)
Yaroslav Kozlov once wrote to Vitaly Vidmirov.
[mnogo wsego]
YK> Only the vile impudence of mockery irritates,
YK> which contain rather a reproach
These are not reproaches, but my manner of speaking in cuneiform.
After all, if it is appropriate to make a joke, then why should I
miss this opportunity? I'm like Mark Twain - sort of
'We cut the truth in the uterus until she loses consciousness.'
Well, ^^^ that's all true, by the way...
YK> rather than an amendment.
YK> Is it possible to respect those who are worthy
YK> only a stick and a whip?
Not only, but also, for example, sockets and plugs,
collective farm pitchforks and tampon boxes.
By the way, are you talking about me???
Yes, I almost forgot, somewhere in the Origin area
it says how snotty I am!!! e8[]
Again, this, by the way, had to...
[the middle rested in God]
VV>> Secondly, as far as I understand, when you scroll to a line
VV>> up/down you shovel all the addresses of the lines, and even the attributes.
VV>> It is enough to keep the ring buffer and you don’t need to modify anything
VV>> quote.
YK> Listen, this is exactly what I do. It was there at the end YK> is written about the offset of the address plate. She is the one, table
YK> row addresses and colors was at the bottom. It should have been somewhere
YK> place in a prominent place... Address distribution filltbl.
Well, I already clicked on the echo, so I won’t be able to look, but:
Let's assume that there are 2 lines in the buffer.
As far as I remember, you have addresses (which are shown on the right)
are specified by self-modifying code.
I am the Bloody Earth #4020
Crown of sympathy #4040
...
We scroll them up by 1 line:
Crown of sympathy #4020
...
There could be... #50C0
Despite the fact that there is no need to physically move the buffer anywhere,
addresses need to be changed. Don't use s.m. code. Faster
and it will be easier to recalculate addresses on the spot.
HL=CURRENT ADR
B=#20
A=L
M0 REPT 22
LD C,H
REPT 8
LDSP,HL
INC H
.16 LD DE,0:PUSH DE
ENDR
ADD A,B
JR C,$+3
H,C
ENDR
JP M0
to display the entire screen, you need to place a trap after the end
lines and go to the starting line with the address of the top of the screen,
let's say with #4020.
[Team Friendship of Peoples]
[Team Amiga][Team PPC][Team Speccy][Team We Are All Wolves][Team Doom]
This is how I am - the evil Vitalik AKA Dark / X-Trade
From
Yaroslav Kozlov
→
To
Vitaly Vidmirov
22 August 1998
Hello Vitaly!
Once upon a time, 01/21/98, 05:16:00, Vitaly
Vidmirov wrote to Yaroslav Kozlov, about [print lines]
VV> [what was above this line is no longer there]
YK>> What about the addresses of rows and colors?
VV> [skip code]
There was something like:
A=L
C=#20
ADD A,C
JR C,$+3; there was something like this
[]
Here are some line addresses:
#4100
#4820
#4840
#4860
#4880
#48a0
#48c0
#48e0
#4900
#5020
ADD A,C or ADD A,B will not work, or it will work poorly.
[]
Now what works again, (slightly corrected).
LD A,H
REPT 7
LDSP,HL
INC H
.16 LD DE,XXXX:PUSH DE
ENDR
LDSP,HL
.16 LD DE,XXXX:PUSH DE
INC L
DEC L
JR Z,$+3
LD H,A
LD SP,IX
.16 LD DE,XXXX:PUSH DE
ADD IX,BC; there's a trap here
ADD HL,BC
YK>> Since you (^) can’t do it, it’s dis-
VV> What are the problems with color?
VV> HL'=ATTR ADR
VV> BC'=#0020
VV> EXX
VV> LD SP,HL
VV> ADD HL,BC
VV> .16 LD DE,XXXX:PUSH DE
VV> EXX
VV> There are no problems with color...Well, so what? change the awl for soap.
YK>> read that the stack will not be on the edge
YK>> screen, and I have it there.
VV> Where is my stack?
I don't know where.
YK>> This is how it turned out with the calculation of addresses
YK>> in place:
[it was approximately what is given here]
VV> [skip code]
YK>> Maybe we can come up with something better.
VV> see above :)
Far, far above this did not work.
If you look at the addresses, you can guess why.
[]
In my opinion, these tricks can no longer be advanced. And therefore
You can rummage through other fragments for now.
Or not?
See you soon.
PHOENIX.
From
Vitaly Vidmirov
→
To
Yaroslav Kozlov
23 August 1998
Hello, hello Yaroslav!
One day, in the chilly summer, something around (08/22/98/03:19:00)
Yaroslav Kozlov once wrote to Vitaly Vidmirov.
[what was above this line is no longer there]
YK> There was something like:
[skipped code]
More precisely:
A=L, B=#20
C,H
REPT 8
LDSP,HL
INC H < *** Open your eyes here ***
.16 LD DE,0000:PUSH DE
ENDR
ADD A,B
JR NC,$+3
LD H,C
YK> Here are some line addresses:
[...]
YK> #48e0
YK> #4900
Here ^^^ t.o. (see above) will be #5000
YK> #5020
YK> ADD A,C or ADD A,B will not work, or will not work.
Common rut. See above ^^^
YK> []
YK> Now what works again (slightly corrected).
YK>LD A,H
YK>REPT 7
YK> LD SP,HL
YK>INC H
YK> .16 LD DE,XXXX:PUSH DE
YK>ENDR
YK> LD SP,HL
YK> .16 LD DE,XXXX:PUSH DE
YK> INC L
You have here ^^^ a feature similar in execution time,
but it increases the size of the decruncher by a few bytes. ;) YK> DEC L
YK> JR Z,$+3
YK>LD H,A
YK> LD SP,IX
YK> .16 LD DE,XXXX:PUSH DE
YK> ADD IX,BC; trap here
YK> ADD HL,BC
VV>> HL'=ATTR ADR
VV>> BC'=#0020
VV>> EXX
VV>> LD SP,HL
VV>> ADD HL,BC
VV>> .16 LD DE,XXXX:PUSH DE
VV>> EXX
YK> Well, so what. change the awl for soap.
Count the bars... 33[34] VS 34[36] for you... :)
and yours takes 1 byte more :P
{.16 ... push de} - doesn't count. And in brackets are Scorp's bars.
So save your cycles, and the kilocycles will come naturally...
YK>>> read that the stack will not be on the edge
VV>> Where is my stack?
YK> I don’t know where.
And he also seems to be on the edge of the screen...
[...]
YK> Far, far this did not work above.
*** If you did it as written, everything would work! ***
YK> In my opinion, these tricks can no longer be advanced. And therefore YK> you can dig into other fragments for now.
By saving a couple of bars here, you can also miss a couple of bars
there...
zaKodirowanno evil Vitalik AKA Dark / X-Trade
From
Yaroslav Kozlov
→
To
Vitaly Vidmirov
24 August 1998
Hello Vitaly!
Once upon a time, 08/23/98, 06:04:00, Vitaly
Vidmirov wrote to Yaroslav Kozlov, about [print lines]
YK>> There was something like:
VV> [skip code]
VV> More precisely:
VV> A=L, B=#20
VV> C,H
VV> REPT 8
VV> LD SP,HL
VV> INC H < *** Open your eyes here ***
VV> .16 LD DE,0000:PUSH DE
VV>ENDR
VV> ADD A,B
VV> JR NC,$+3
VV> LD H,C
YK>> Here are some line addresses:
VV> [...]
YK>> #48e0
YK>> #4900
VV> Here ^^^ t.o. (see above) will be #5000
I can assure you that
exactly #4900, not #5000. Actually verified.
this is why your gimp doesn't want to work.
YK>> #5020
YK>> ADD A,C or ADD A,B will not work, or will not work.
VV> Common rut. See above ^^^
In fact, it’s better to look - not higher.
Here is a program that shows this:
LD B,16; line addressesLD HL,l_table; table to view
LD DE,#4020; top line
a1 LD (HL),E
INC HL
LD(HL),D
INC HL
DEC DE
CALL nstr; next line
INC DE
DJNZ a1
RET
nstr LD A,E
ADD A,#20
LD E,A
RET NC
LD A,D
ADD A,8
LD D,A
RET
And this table worked fine.
Do you remember the background in the viewer? It's roughly like this and
is printed. But mess with it...
YK>> []
YK>> Now what works again, (slightly corrected).
YK>>LD A,H
YK>>REPT 7
YK>> LD SP,HL
YK>>INC H
YK>> .16 LD DE,XXXX:PUSH DE
YK>>ENDR
YK>> LD SP,HL
YK>> .16 LD DE,XXXX:PUSH DE
YK>>INC L
VV> You have here^^^ a feature similar in execution time
VV> but increases the size of the decruncher by a few bytes. ;)
There is LD A,HX:DEC A: JR Z,XX.
Only 5 bytes.
YK>>DEC L
YK>> JR Z,$+3YK>>LD H,A
YK>> LD SP,IX
YK>> .16 LD DE,XXXX:PUSH DE
YK>> ADD IX,BC; trap here
YK>> ADD HL,BC
VV>>> HL'=ATTR ADR
VV>>> BC'=#0020
VV>>> EXX
VV>>> LD SP,HL
VV>>> ADD HL,BC
VV>>> .16 LD DE,XXXX:PUSH DE
VV>>> EXX
YK>> Well, so what. change the awl for soap.
VV> Count the bars... 33[34] VS 34[36] you have... :)
VV> and yours takes 1 byte more :P
VV> {.16 ... push de} - doesn't count. And in brackets are Scorp's bars.
I meant the bottom fragment.
You can INC L: DEC L: JR down, for the color, especially in your case.
But it would be more logical to put .15 PUSH DE there...
VV> So save your cycles, and the kilocycles will come naturally...
An extra two hundred cycles wouldn't hurt me.
YK>>>> read that the stack will not be on the edge
VV>>> Where is my stack?
YK>> I don’t know where.
VV> And he also seems to be on the edge of the screen...He's even over the edge. But not like you, for example, in a storm.
VV> [...]
YK>> Far, far above this did not work.
VV> *** If you did it as written, everything would work! ***
The hell with it. Try it and see for yourself.
YK>> In my opinion, these tricks can no longer be advanced. And therefore
YK>> you can dig into other fragments for now.
VV> By saving a couple of bars here, you can also miss a couple of bars
VV> there...
You noticed I have full lines and full color. it says
that it will be difficult to make it in 1/50 sec.
I suggest: set the scrolling standard on Spec
2 interruptions, i.e. 1/25 sec., up and down 1 line, and
not necessarily a leap. In my opinion this is the most optimal
option.
See you soon.
PHOENIX.