ptorric wrote:
maybe i like a clear well documented kernel call list as in cp/m
Both Commodore and Atari had these (admittedlly, Commodore was public long before Atari was, but still).
Quote:
i think that calls are full of internal state and irregoular parameters passing.
The Commodore API was pretty regular as long as you realized that parameters were established via KERNAL calls. For example, to open a file, you'd call OPEN, but before that, you'd use SETNAM to set the filename, and SETLFS to set the logical file handle information first. It's not as convenient as CP/M's FCB structures (Atari's OS shared more in common with FCBs), but there was a rationale to it, believe it or not.
Quote:
a command line invole a dos, but maybe before that an o.s. need memory management, basic independert hardware i/o at least, as you write me.
CP/M had no memory management capacity what-so-ever, so we know that isn't a strict necessity. However, I agree, a modern system will do well having such capability.
Quote:
irq/nmi must be managed also and, why not, tasks?
The 6502 is actually somewhat difficult to multitask well with, due to the limited, non-relocatable stack space. If you implement an external MMU with the ability to relocate the hardware stack throughout RAM, you'll do better.
Quote:
also a kernel reloc/loader?
More than anything else, though, I think
this is the single biggest feature request for a 6502 OS. Most CP/M machines had to go through serious design gyrations to ensure that binaries could run portably. For example, the Z-80 expects ROM to appear at 0000h, but yet applications are built to execute at 0100h. Oops!
Using a relocatable object file format (o65 comes right to mind) will ensure that programs can be loaded at any address and expect to work. It also permits software to use standard libraries too.
Quote:
call "cls" "home" "print" "newline" like a vt100 terminal and, asking more, curses lib if and only if it can fit in some kbytes, portable.
Most OSes for 8-bits had these, and more. Curses is an abhorrent abomination. Trust me on this, as an OS developer myself, you do NOT want to deal with the terminal stack as you see in Linux, Unix, etc. Just pick
one terminal emulation standard (Amiga chose VT100, for example) and go with it. It will make your life so overwhelmingly easier that you'll swear whoever wrote the terminal stack for Posix-style operating systems was clinically insane.
Quote:
some 6502 emulators have some kernel trap like that: a kernel trap maybe is too slow in a real 6502 environment, but sometime to time speed is not so important like usability, so a kernel call table with indirect jumps (amiga?) costs cpu, but is it so important?
Amiga's libraries got the idea of a jump table from the Commodore PET, 64, and 128 computers, actually. KERNAL implements a jump table into OS in upper ROM memory (e.g., $FFD2, used to send a character to the current output device, is coded as a JMP to the actual code).
Personally, I rather like the idea of a static jump table for libraries. I find the system of dynamically linking used by contemporary operating systems to be confusing, implemented in a half-assed manner, and in the particular case of Linux, fundamentally foreign to what the OS kernel actually expects from binaries. This isn't to say I don't appreciate the services they provide -- but is the complexity of dynamic linking REALLY worth it?
My experience tells me no.
I miss AmigaOS.