idea
ZXNet echo conference «code.zx»
From Vyacheslav Mednonogov → To All 9 May 1999
===============================================================================
| Forwarded by Vyacheslav Mednonogov (500:812/1.30)
| Area : ZX.SPECTRUM (Workers of all countries, unite!)
| From : Denis Sotchenko, 2:5020/1301.70 (08 May 99 23:55)
| Subj: idea
===============================================================================
Subj is to put CP/M on the GS. Spec will be the terminal. B
As a result, the performance will not be spent on working with the screen, and will be
all the speed of the GS (that is, faster than the turbo Spec).
__
__/ / Powered [ZX] [pepsi inside]
===========ReadMeAgain======================================================================
Warm greetings, Slava!
[I.ZX] [ChV2=93%] [Free Nelson Mandela!]
From Kirill Frolov → To All 8 May 2000
Press RESET immediately, All!
They wrote something here about inside programm design. And I had such a subject.
After all, every program under tr-dos is really like an astronaut
on the moon. It has its own functions for working with files, character generator
with TTY type program, keyboard scanning functions, printer operation,
with the mouse. Finally, there is its own bootloader, interrupt handling programs,
memory allocation. Almost every program needs all this. Dems probably
It’s worth eliminating right away so that later no one says that it’s slow and
ugly.
This is necessary primarily for application or system programs, maybe
for games
You can make a TR-DOS extender, which will provide all these
functions of the program and will be connected itself either at the stage of assembling the program,
or it will download the program itself. When using an external expander
it will be possible not to worry about determining the computer configuration - the user can
use an expander already configured on his computer.
The basis will be the “core” which will ensure the interaction of different
(sub)program
distribution of memory and other (what?) system resources. The second part,
important, but necessary only at the stage of loading the program into memory, will be
a bootloader that will allocate memory in the system and load individualcomponents of the program. Everything else, in fact all the functions of the expander,
will fall on many separate programs such as mouse, disk, screen drivers...
It is quite possible that you will need a special bootloader format to boot.
file, you need to store the necessary service information somewhere.
The kernel should probably handle interrupts (for example, sending
management of the corresponding driver), memory allocation, including
and “can”, switching memory banks, interaction of the program with different
drivers. I find it difficult to say what exactly will happen here. Be placed
main
part of the kernel will probably only be able to reach addresses 4000..bfff.
What the bootloader will do depends very much on everything else,
therefore
For now it should be put aside.
Required drivers... Exactly TTY (or a more advanced equivalent
with graphics), a mouse tied to a coordinate output device, a keyboard,
file functions TR-DOS, disk support at low level turbo and 3d13, can
be
printer, but there are many different interfaces...
Of course it should be possible to replace existing drivers,
even not quite drivers, or installation of more others (in the case of external
expander).
No, I didn’t plan a new super-OS for the spec, the planned volume of kernel codeno more than a few kilobytes, the listed drivers are also not many and large
some, if not all, are already there. Only Open Source is assumed, otherwise just
loses its meaning.
Issues on the agenda:
- Memory allocation main and above 128kb
(see, for example, how it is done in CP/M or NEOS,
both options have advantages and disadvantages)
- Calling drivers from a program or other drivers,
transfer of parameters, interface for interaction between different drivers.
- List of required drivers, provided functions,
interface for interaction with the program.
- Separation of memory for the expander and the program,
the program may require static allocation
with absolute addresses. The same goes for drivers.
It’s probably worth taking as a basis what is always available in memory
The processor must have:
Stack
Interrupt vectors and programs for processing them
Page switching program
Variables storing the current configuration
devices requiring access at any time
Other
The stack can of course move, but in the case of passing parameters through
stack then you will have to copy part of it in place of the new stack. With another
sides in the area of 4000..bfff there is not much space toallocate stack in all cases. (pioneers who do not know what recursion is,
and those who claim that 256 bytes are enough for the stack, this is not a request
comment).
It seems clear with interrupt vectors, but NMI doesn’t go anywhere,
Well, no big deal, this is an abnormal interruption...
Switching pages with his own variable is understandable, the rest seems to be the same.
The location of the resident part is probably under bfff and below - there it is
does not slow down multi-field vehicles. And the memory that is higher is already bankable.
There is probably a lot that is still forgotten and not listed. Well, if anyone is interested,
then look at the questions (above)...