This is a completely new version of my 6502 operating system GeckOS/A65. From version 2.0.0 on it has a lot of new features:
OS/A65 is a full-featured Multitasking/Multithreading operating system for the 6502. It is preemptive and implements some Unix-like features, like signals, semaphores, relocatable fileformat, standard library, internet support via a kind of simplified sockets and last but not least virtual consoles.
It is extremly scalable. Stripped down to the scheduler and interrupt handling the kernel is only slightly above 2k. In normal embedded systems the kernel has around 4k, with only application programs running. Full featured systems have a 4k kernel, and several support tasks provided system services like TCP/SLIP and (different) filesystems.
The kernel is almost completely hardware independent. All the architecture-specific stuff is in a separate subdirectory for each architecture.
The lib6502 as standard library allows easy access to the system services. Parts of this library are already implemented in another 6502 operating system, Lunix by Daniel Dallmann. This way source code compatibility is achieved.
Version 2.0.0 features a "slipd" server process that brings easy internet access to all lib6502 programs, that can now access TCP connections like files. A stable WWW server running on the OS is built into the slipd daemon. Also a remote login can be done. This way the OS can run programs to for example read sensors and write the stuff to files, which are exported by the WWW server.
The relocatable o65 fileformat used by the lib6502 standard library in version 2.0.0 allows more than one instance of a program being run at the same time without interference, even without virtual memory. Also the very same binaries runs on all supported platforms (if they do not use architecture specific stuff, but lib6502 calls only).
Architectures supported are the C64, as well as my CS/A65 MMU selfbuilt computer and my CS/A65 Gecko board. Also supported are the Commodore CBM8096 and CBM8296 computers, as well as any 32k RAM PET (the 3032, 4032 and 8032)
For the development of OS/A65 programs there are two possibilities:
lib6502 programs are simply assembled with my xa65 crossassembler with the including the file "lib6502.i65" and the assembler option "-LLIB6502" set. This tells the compiler to put "LIB6502" into the file as undefined reference that is resolved when loading. The lib6502 jump table is relative to this address.
Old stuff:
I didn't dream of this becoming such a nice project when I started building this computer in 1989.
After someone asked me to release it to the public, I decided to put it under the GNU public license. (Which, of course, doesn't hold true for the ported BASIC interpreter, which is taken from the C64. See this file for more.) Also the character ROMs are taken from the C64. However, Commodore in its old form doesn't exist anymore and attempts to contact the new right holders have not brought any success, so I put them here.
Well, when I did this project, it was just for fun. But now I find it
quite nice. Well, if you know some magazin that would like to publish
some of it, I will be glad writing an article or so (if anybody really
wants it ;-)
But on the other hand my interests have moved.
Occasionally I still work on the project - when I have the time (or take
the time ;-)
But after all, I don't really have time for it.