Asm & Basic Fun : HOME | |||||||||||||||||||||||||||||||||||||
This page is a first draft. |
|||||||||||||||||||||||||||||||||||||
OPTIMZ | ASM | BAS/PAS | HOME | FILES | LINKS | OTHER | |||||||||||||||||||||||||||||||
Welcome: | |||||||||||||||||||||||||||||||||||||
On This Page:
This site is about Basic, Pascal, and Assembly Language programming on the Macintosh System Software, GS/OS, and RISC OS. First we have BBC BASIC on RISC OS, a truly great modern structured Programming Language, some Think PASCAL on a 68K Macintosh System Software, and GSoft BASIC on GS/OS. Then there is the Assembly Language on the ARM in RISC OS, 68K Assembly on the 68K Macintosh System Software, and WDC65C816 assembly on GS/OS. These are great languages on great Operating Systems, offering unique and advanced features not found in any other systems, still today. All in all this is just having fun and learning, as this is the most enjoyable activity I am familiar with. I am in the process of relearning a lot of what I used to be good at, this will take some time. I feel it is good to share as I go, to help others as well as myself. To learn and share is extremely fun, beyond most other activities, learning is the most human joy of all. To teach is to aid in learning, as one must make sure they understand the topic to the point being taught in order to teach others. Thus I intend to teach and share as I learn myself. It is likely as I go there will be more for RISC OS than there will be for the others. ARM Assembly and BASIC V are my preferred programming languages, as they have been as long as I have known them. There will likely be very little Macintosh System Software information and work in comparison to ARM and RISC OS. It is likely that there will be about an equal amount of 65816 and GS/OS stuff to the Macintosh stuff. Ever since about 1989 RISC OS has been my favorite Operating System, this has not changed just because I have to relearn a lot, RISC OS continues to be my favorite. I tend to be a bit slow at updating my web site. Though I do intend to make significant additions when I do update the site, thus providing a decent average pace of updating. I will push forward, while sharing as I continue on my journey back to programming well. I thank all for having some patience with me on this path. |
|||||||||||||||||||||||||||||||||||||
Why RISC OS: | |||||||||||||||||||||||||||||||||||||
In the past I had been known in the USA Amiga and Atari world. Despite this I have been a user of RISC OS since the late 1980's, and have loved RISC OS almost as long. The RISC OS scene in the USA may not be well known, and mostly disappeared in 1998, though I continue to stick with this great OS. Ever since I found BBC BASIC V I have been a huge fan of this great language. This is a very enjoyable Basic that provides a good structured programming language. With indirection operators we can do many things that other languages require structured data types to do easily. BASIC V provides for very simple means of making system calls, with the SYS keyword, thus making life easier when writing many programs. This is a very logical version of the Basic Language, with everything done in a sensible manner. The choice of operators make all operations very simple to implement, including shifts and assignment and operate operators. I continue to use and enjoy programming in BBC BASIC V, and likely always will. When I learned ARM Assembly life got a lot better, as this is a very great and enjoyable Assembly Language. The ARM has one of the simplest to use and most eloquent ISA's of any CPU around. With all instructions being conditional it is very simple to perform many things in fewer instructions than other CPU's. Shifts being free (time wise) with most standard operations can save a great deal of instructions as well as time. There is not a more beautiful ISA to code for in assembly language, in my humble opinion. The API / ABI of RISC OS is very well designed, and easy to program for in any reasonable programming language. For starters there is the modular design of the OS, with each module being able to provide a set of system calls of different kinds. Then there is the SWI calling method used for the majority of standard calls, that makes good use of the comment field of the SWI instruction. On top of that there is a system of vectors and other cal through mechanisms to aid in patching, or otherwise enhancing the system. All of this makes RISC OS very enjoyable to code for, especially in Assembly Language. The WIMP (Window Manager) with the Desktop is very easy to work in, both from the user view and the programmers view. This is a very productive UI, that makes getting stuff actually done extremely easy. The way Drag and Drop allows the user to be more productive with a series of small applications than is possible with the giant multipurpose applications on other systems is great, and there is more flexibility with the small applications drag and drop of RISC OS. The WIMP and Desktop Environment of RISC OS is all around very well designed. The RISC OS Window Manager provides for Cooperative Multitasking that is very well designed, and better than Preemptive Multitasking of most other systems. In RISC OS the Cooperative Multitasking is very smooth and transparent, working very well with any well written WIMP program. There is just enough Memory Protection between applications to do the job of helping debug, which is the only real reason for memory protection. The Multitasking does not get in the way, still allowing programs to do as they need, same for the memory protection, this helps make RISC OS the best OS I have ever used. |
|||||||||||||||||||||||||||||||||||||
Why 680x0 Systems: | |||||||||||||||||||||||||||||||||||||
Oops, I find myself writing 680x0 code for Amiga OS and Atari 68K computers (only some for TOS). Maybe I need to reconsider which of the of the 68K series CPU based Operating Systems to focus on. Amiga OS is just too much fun to code for, and I do not have a working Macintosh Computer (or a good Macintosh Emulator for RISC OS) at this time. Rather than try to decide based on exact details of the OS, perhaps it is better to look at which OS I am best at writing code for, and enjoy writing code for the most. That would leave the Amiga OS, in its 68K versions (pure chunk format, no linking needed). Until I am sure I will leave the previous comments about the Macintosh choice in the page comments, so you can look at the page source if you want to read them. Once I am sure which 680x0 based computer I will chose I will have to rewrite large parts of the site. |
|||||||||||||||||||||||||||||||||||||
Why the Apple IIgs & GS/OS: | |||||||||||||||||||||||||||||||||||||
There is a need for a decent 8 bit CPU as well as a 16 bit CPU as I relearn and proceed forward. The Apple IIgs happens to use an 65816. which is a very good 8-bit and 16-bit CPU that is understandable to most assembly language programmers. The 65816 is roughly 3-times faster at most operations than the 68000, and about equal to the 68020 in most cases, thus making a good fast CPU to work with. It is also helpful that the 65816 is a little endian CPU, like all ARM CPU's (though some ARM devices can also run in big endian modes). In the end the 65816 is a fairly easy to learn CPU from the view of Assembly language and Machine Language, having only 255 opcodes, and a simple user programming model. GS/OS is quite visibly inspired by the Macintosh System Software, ProDOS, as well as other non-apple systems. This results in GS/OS being a more usable, more complete OS than the Macintosh OS, even in later years in many ways. GS/OS is also quite efficiently written, being faster than most others of the time to preform many tasks. GS/OS was the first OS from Apple (or most others) to do Icon Images correctly (as displayed in Finder), having almost no limit on size, and having the option of them being either in the resource fork or in an icons file. The resource forks in GS/OS are in many ways an improvement over those used by the Macintosh, within the limits of the ProDOS FS. Then we have QuickDraw, with its Regions, GraphPorts, etc, on a little endian CPU, and at least as fast as the big endian version on the 68000. The IIgs represents a well designed computer, in the view of the Hardware. The VGC is a very good display controller, having features like 16 pallets of 16 colors each assignable per scanline, fill mode, and more, the only limit was the video memory being on a slower bus, thus slowing down display writes. Using the Ensoniq 5503 wavetable synthesizer for sound, the IIgs had the best sound of any home level desktop of the time. For input devices the IIgs was the first computer to use the Advanced Desktop Bus (ADB) device chain for things like Mouse, Keyboard, Joysticks, etc. Then there were the standard Apple II slots, though with the ability to be accessed at higher speeds if the card supported that. Unfortunately the CPU clock was held back to 2.8MHz in order to reduce the competition against the Macintosh line, though almost every IIgs user installed an accelerator card by 1989. The Apple IIgs is a great computer, having made the correct design decisions for the time it was released without any question. GS/OS uses a call through vector means of calling toolbox routines (making OS calls), thus simplifying many things about the modular OS. It is a fairly simple matter to revector calls to alternative routines, even without completely replacing the toolset. The toolbox (OS level system) is very much a modular system, at least as modular as RISC OS if not more so in some ways. While GS/OS shares part of its API with Macintosh System Software, many aspects of the way GS/OS functions are more like RISC OS in nature. This level of designed in modularity is another area where GS/OS is better than the Macintosh. The way things are ordered in Memory in GS/OS was better thought out than the Macintosh, thus it is quite a bit easier to add multitasking to GS/OS (and a few have so done). I must also admit that I like Hyper Card. Hyper Card is very much a fun and unique system to work / play within, and is quite useful in the process. Not to mention that Hyper Card is a good way to prototype ideas for applications not yet written. On the Macintosh Hyper Card is Monochromatic, on the IIgs Hyper Card is in color. |
|||||||||||||||||||||||||||||||||||||
Personal Note: | |||||||||||||||||||||||||||||||||||||
Before 2008 I never really looked ot the "Web" (http and HTML) part of the internet. I knew it was there, and I once in a while (less than twice a year) might read an artical on the "Web". My use of the Internet was in other areas instead, the "Web" did not have any use for me. When I began to look at the Web in 2008 it was because I was stuck in a bed for months, and some of the other areas of the internet were starting to be reduced in usage. Before 2008 I had used the internet a lot, with NNTP, GOPHER, Telenet, FTP, IRC, ICQ, and SMTP & POP being my main areas of usage. Back then you would download lists of urls (or just domains) for other resources from FTP and GOPHER servers, back then being from the mid 1980's through 2008 for me. Unfortunately most of the normal Internet resources are being replaced with things on the WWW (World Wide Web (http with HTML as the UI)), a sad state of affairs. It seems as if the fun programmers have disapeared along with the good parts of the Internet. Do to a stroke on September 23rd of 2022 I am a bit behind in my abilities, there was some loss as a result of this stroke. I have had to relearn some of what I knew and used to do well with, this is a little slower a task than expected. It is hopeful this will give me the opportunity to do better with what code I create moving forward than I did before, as this is a ground up restart. Regardless of what happens I will always move forward and continue to code and use computers. It was on November 30th of 2022 that I finally got to the point where I am comfortable with my coding skills again. In the time from September 27th (out of hospital) until November 30th I was just relearning enough to get started again. There was a good amount of time spent making sure what I do remember is correct as well. Now I am back on track, and will be continuing down a positive road moving forward. After thinking about the options for a 68K CPU based OS I chose to go with the Macintosh System Software as my secondary system. I had looked into other options, and discarded them for various reasons, thus leaving the Macintosh, and keeping me focused on only two Operating Systems (and 3 CPU's). RISC OS will always be my primary OS, this has been true since at least 1990, maybe even 1989. The Macintosh System Software is likely the best Operating System for Desktop use that has been made in the United States of America. Thus I chose to move forward and relearn with only RISC OS and Macintosh System Software, giving me a clear path forward in my recovery. As I continue to recover I will do better with more little bits of code, and more learning along the way. I am hopeful that those that are interested enjoy the new site rewrite, and the stuff I will be sharing over time. All of my past stuff is likely to remain in the past, as too much of it has been lost to my mind. This means it is unlikely that I will pick back most of my past projects, I do not know if this is good or bad. Regardless of all else, I will continue to move forward, and hopefully may aid someone else in moving forward as well. |
|||||||||||||||||||||||||||||||||||||
Why not a "Modern System": | |||||||||||||||||||||||||||||||||||||
Up until 2012 RiscPC class HW was the fastest I knew, even my Amigas and PowerPC Macintosh Systems were slower. My first Raspberry Pi with RISC OS was faster than I could imagine. Later I got an Raspberry Pi 2B then an Raspberry Pi 3B, these are way faster than imagination. Without any patches it seems that the Raspberry Pi 1B is still the best for RISC OS, and more than fast enough. I have in the last couple years (this is 2022) tried a high end AMD Athlon based PC/AT compatible with a light weight Linux Multi boot with Haiku OS and ReactOS for the other options. I have tried and given a good chance to each of these OS's, and they are definitely not my cup of tea, as well as being memory and processor hogs. Then there is the fact that in these OS's some of the most basic operations take forever, making the system look slower than an 8MHz ARMv2 for the same work. RISC OS is still my primary preferred Operating System for many more reasons than can be quickly noted. Linux does not come any near the real world ability of RISC OS as an Operating System goes. RISC OS is much easier to write any kind of software for. RISC OS does not get in the way, and just provides a simple OS to work with. Besides what other 'Modern' Operating System is still extremely usable on 7 inch 1024x600 native resolution monitors as far as I know just RISC OS :) . Yes RISC OS is a still maintained modern OS. There exist much faster systems now to run RISC OS on, like the RPi 3B, 4B, and 400. The RPi 1B is still the most compatible RISC OS box, without patching to handle SWP instructions at least. I still use the RPi 1B, as I do not have the finances to use a newer system at this time. I lost my RPi 2B and 3B do to medical needs causing me to relocate some time ago. |
|||||||||||||||||||||||||||||||||||||
This site created on RISC OS using !Zap. |
|||||||||||||||||||||||||||||||||||||
It turns out to be easier to write and maintain a site with tables than one without tables. |