Skip to content
David-SWUSA-RISCOS edited this page Jul 6, 2022 · 7 revisions

YASDOE HOME:

Programming Docs

User Documentation:

For a bit on why I like RISC OS, and to better understand why I chose to model many aspects of YASDOE after the great ARM OS see: Why RiscOS

I apologize: I apologize to anyone waiting to see YASDOE. I repeated a mistake I had made before, the mistake of attempting to move away from ARM, this mistake has delayed things in the release of YASDOE. The Wiki needs a lot of rewriting to get back to the version as it was initially to be released (an Amiga Like library based calling convention OS, that is preemptive multitasking, and has a RISC OS + AmigaOS + GS/OS like API).

I messed up, and my mess up has caused me to revamp a lot of code, and rewrite a lot of documentation, just to have to undo these changes once I realized my mistake. Though it does have the advantage that YASDOE is a lot better than it would have been, no more central kernel, everything a lot simpler instead. I am still trying to improve the use of region based clipping in a WIMP style Windowing System (takes some work), as the WIMP API, and programs that use it assume multiple rectangle clipping.

Most information in this wiki is wrong at the time of this update. I will be working on reverting the documentation to be correct, including the things that have improved since the side track. Slowly things will be corrected, then the missing documentation will be added then I will be able to release the source code. I never realized how much new documentation was needed to be complete enough for others until I began writing the documentation, it is a lot more involved than just releasing an application or library for an existing Operating System.


YASDOE is an Operating System for ARM Based Computers, 68K Computers, and and one 65816 computer, that implements an API that is modeled after those of RISC OS, AmigaOS, and GS/OS, and uses a library calling convention based on that of GS/OS in many ways, with some similarities to Amiga OS.

YASDOE is a Preemptive Multitasking, Highly Modular, ARM based Operating System that does not have a static component that could be called the kernel. The closest thing to a kernel is the Module Manager, though even this is not really a kernel as it were. Separate modules handle Memory Mapping (and allocation), Interrupt assignment, HW resource allocation, low level I/O, Clocks, etc (the things normally handled by a MicroKernel are spread across multiple modules).


Supported Computers:

YASDOE is back to being an ARM targeting OS, while still having targets for the 68K series. For best usage and simplicity the ARM targets are those using "true ARM":../blob/main/docs/WhatIsARM.md and directly in the line of the original ARM Computers. The 68K targets are Amiga and Atari 68K computers, this to the documentation being very complete on these computers.

This means that the code base is mostly complete, partially thanks to the code that was ready a couple months ago, and partly do to the enhancements that are easy to integrate that have been made in the process of attempting to leave the "ARM":../blob/main/docs/WhatIsARM.md and RISC OS World (something I know will never work for me, I am an ARM and RISC OS user through and through).


Base Architecture of YASDOE:

ARM YASDOE is written about 94% in ARM Assembly, about 1% in C (trying to convert this to Assembly) and about 5% in BASIC.

68K YASDOE is written in about 92% 68K Assembly, about 5% C (trying to convert this to assembly), and about 3% in BASIC.


Reason for 680x0 support:

Like the ARM, the 680x0 CPU series is one I enjoy coding for, and now that we have the Apollo 68080 CPU it continues to have a future. As such the 680x0 emulation layer in YASDOE provides for a bit of fun.

There is also the nod to the Amiga, which was a huge inspiration for a lot of how YASDOE works.


TIME ROLLOVER:

As we are using the same time format as RISC OS for most things we do have a roll over issue. In the year 2248 the 5-byte standard time will roll over, this is in the reasonably near future and as such is a concern. Thankfully the YASDOE API transparently passes out a 7 byte time, for new applications to use (older applications will still only know about the low 5 bytes, and thus wrap), and giving us enough time to work with, rolling over in the year 22835574. This should be enough time that it should not pose a huge concern, and applications can be written to use full 8-byte values, and the system in the future extended to support this, and giving more time than humans should exist.

So it is that yet another OS was short sighted about the possibility of being used for a significant period of time. At least RISC OS was not as short sighted as the Unix and its clones were.


Footnotes:

NOTE: Macintosh, Macintosh System Software, GS/OS, IIgs, Apple II, Apple IIgs, ProDOS, QuickDraw, and AppleDOS are trademarks belonging to Apple Computer Inc. WDC65C816S is a trademark of Western Design Center. Amiga, AmigaDOS, AmigaOS, and Amiga OS are trademarks of there current owners (sorry lost track changed too many times). I do not know who owns the Atari trademark if anyone is left, though if there is an owner they are separate from here. There may be mention of other trademarks within the content herein, effort is made to note owners here if I am aware of having used such within this WiKi.