print strings

ZXNet echo conference «code.zx»

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.