Optimizing NeOS

ZXNet echo conference «real.speccy»

From Roman Petrov To All 1 December 1998

Hello, All!

As a result of a simple optimization, I accelerated the output of a symbol by ~65 clock cycles, and the output of
strings (PUTS) for each character by 63 clock cycles. You can also speed up the output
of numbers. Plus, a glitch was discovered in the command line editor: if, when inserting a character into a line, the screen should shift upward, then terrible glitches begin ;-)
The driver also wrote 64 characters per line. Yes, the acceleration of symbol
output occurred due to a change in the font storage format (it was a direct format, like in BASIC, now it’s like in ZX-Word), which can now only be located at a “round” hexadecimal address (#xx00), therefore we eliminate 1 byte in system
variables.
Maybe today I’ll write a driver with 42 characters per line (well, it will be slow ;-)

Bye, All! With the best wishes, Megus of Brainwave.

[Team ZX-Spectrum] [Team NeOS] [Team Rock'n'Roll forever]


From Pavel Fedin To All 4 December 1998

Hello, Roman Petrov! I remember that on 01 Dec 98 you took it and launched
in All with this:

RP> Maybe today I’ll write a driver with 42 characters per line (well, it will be slow
RP> ;-)

Once I also dealt with this problem. I advise you to look at the driver from IS-DOS.
I once wrote my own based on it. By the way, there is another
format, completely undeservedly forgotten. 51 characters per line (5x8 characters).
Used in Gens4-51, Masterfile09, and I think I saw it somewhere before.
By the way, I caught the description. If it's not too late, I would like to note
that at least RST #20 - RST #30, and even better, all RSTs (except 0,
of course) should be reserved for interrupt processing. For
for example, Profi has an interrupt controller, and, perhaps, not only in
it. It seems like in Scorpio too. In Pro, the serial port
works through this case. And one more thing. I hope you didn't forget to make it possible to intercept RST
#38? What if NMI comes in handy? Yes, and intercepting Reset IMHO is also not such a
bad idea.

Bye, with a pack of vicious, Pavel Fedin.

... UI125:/0EPJFAGAECCVNGLFHGiGDGFFFPAFfBCKBRRDQCBKHIEBCCKC


From Roman Petrov To All 6 December 1998

PF> I also dealt with this problem once. I advise you to look at the
PF> driver from IS-DOS. I once wrote my own based on it.
I know a fairly fast method when the shift is done with the ADD HL, HL command.
What faster has people not yet come up with?
PF> By the way, there is another format that has been completely undeservedly forgotten. 51 characters
PF> line (5x8 characters). Used in Gens4-51, Masterfile09, and like me
And it will also be supported, by the way. We also remembered about it ;-)

PF> #30, and it’s even better to reserve all RSTs (except 0, of course)
Well, RST #8, for example, it’s better to leave it for errors. Somehow we've all gotten used to the fact that the error handler sits there. But you can free it.
PF> for interrupt processing. For example, in Profi there is a controller
So it seems they are free (at least now ;-)
PF> interruptions, and, perhaps, not only in it. It seems like in Scorpio too.
PF> W
Oops, not in Scorpio. Maybe in SMUC it is, but in the basic Scorp it is definitely not.
PF> Pros, the serial port works through this thing. And one more thing. I hope
PF> you didn't forget to make it possible to intercept RST #38? And NMI - suddenly
I forgot, but it can be done.
PF> will it be useful? Yes, and intercepting Reset is also not such a bad idea.
And NMI is also intercepted. And Reset - at some level left in RAMget
glitchy.

Bye, Pavel! With best wishes, Megus of Brainwave.

From Dmitry Lomov To All 7 December 1998

Hi, Pavel!
RP>> Maybe today I’ll write a driver with 42 characters per line (well, it will be slow
RP>> ;-)

PF> Once I also dealt with this problem. I advise you to look at the driver from
IS-DOS.

hehe, but I don’t recommend it :-)
it’s slow. You need to type 4 characters at a time - it will be
fast. it should be like this - if a long line is printed, it
is printed in fours, and the rest is printed one at a time.

PF> I once wrote my own based on it. By the way, there is another
PF> format, completely undeservedly forgotten. 51 characters per line (5x8 characters).
Used
PF> in Gens4-51,

it would be better not to use it there :)
you forgot to mention speed...


All the best.
Dmitry.

..LD..X-TRADE..

From Pavel Fedin To All 9 December 1998

RP> And NMI is also intercepted.

RP> And Reset - with some leftover thread in RAM
RP> we get glitches.

So check whether the leftover is there or not. My idea was this: to
switch ROM pages (In Pro you can’t do without this to access its
devices (clock, serial port, and hard drive - they only work
with bit 4 of port #7FFD set to 1. It is also responsible for the ROM, and
I understand that your system sits on 128 kb instead, right? In CP/M it doesn’t matter - there from address 0 of the RAM is connected, therefore this bit is freed. So they are corrupted) a small resident located in the lower addresses of the RAM is used. It temporarily turns on the 48 kB ROM (naturally, interrupts are prohibited), then switches the ROM back. After Reset, the integrity of this resident is checked. If it is destroyed, it should. The system was
initialized in the usual manner. If not, then
the 32-bit variable with the full address was checked (page number + actual
address). If the address is not equal to 0, then the required page is connected
and a transition there.

From Valerij Kozhevnikoff To All 10 December 1998

PF> IS-DOS. I once wrote my own based on it. By the way,
PF> there is another format, completely undeservedly forgotten. 51 characters per line
PF> (5x8 characters). Used in Gens4-51, Masterfile09, and I think I’ve seen it somewhere
PF> before.

The source codes of both (42/51) can be found here or in soap.
I broke them in due time. From isdos and unzip.

PF> (except 0, of course) are reserved for interrupt handling. Because
PF>, for example, Profi has an interrupt controller, and, perhaps, not only in
PF> it. It seems like in Scorpio too. In Pro there is a serial port through this thing

There is also such a piece of hardware in Scorp, i8259 which. It sticks in SMUC.

WBR, Jason.


From Pavel Fedin To All 10 December 1998

Hello, Dmitry Lomov! I remember, on 07 Dec 98 you took it and launched it at me with this:

DL> hehe, but I don’t recommend it :-)

Well, the classic one (shift by a given number of pixels) is even slower.

DL> it’s slow. you need to type 4 characters at a time - it will be
DL> fast. it should be like this - if a long line is printed, it
DL> is printed in fours, and the rest is printed one at a time.

You can do this. And it will really be even faster.

PF>> a format completely undeservedly forgotten. 51 characters per line (5x8 characters).
PF>> Used in Gens4-51,

DL> it would be better not to use it there :)
DL> you forgot to mention the speed...

In what year was this made? That's right, I don't remember. :-) And now what?
That's right, almost 1999. After all, everything that relates to 42
characters in a line can be applied here. It will be much faster.