"EIGHT"
a new software core and program enhancer by Rick Detlefsen May 2002(Rev:14Jan05)
Over the last 17 years or so, I have written a lot of small programs. Utilities, Applications, Games. Mostly in BASIC, using OSS Basic XL. And a lot of routines in assembly. I have to hand apply each routine to each program I write. I should have created a BASIC list file I could load in when I start a new program. After thoughts!
Now I am getting all of the routines together into one self loading package. No more trying to add in. This means smaller Basic programs. But adds a seperate module. However, since I compile my Basic programs, I could just append them to this code, but I won't, see below.
This is not an O.S. replacement or a BIOS, it is a core for a new user/program interface. It does not replace the internal O.S. at all. It just adds a lot of routines. They are:
Sector I/O, Block Read/write, Search, Sort, Text manipulations (INV/Clear/Upper-lower/atascii-internal), Graphics manipulations(including rotating 8 bytes for printing. EOR/AND/XOR/INV/SWAP/Clear), Data Move/copy, and some functions so BASIC can access banked ram for up to 4 megs of database string storage either as byte addressed or as record addressed, shared with system buffers, and ramdisk banks.
While doing this, I thought I'd add a window desktop too. Using windows, it allows accessing a user application, various DOS functions, system functions, 1 printer driver for all of the programs, ram bank control, accessories, and a graphics screen if needed. Also, built in control for mouse/input device and clock. All in the same place for all programs. A source file will be provided on how to find and hook into EIGHTs routines, starting with a dummy entry in the handler table.
I have played with desktop GUIs and the biggest problem on a 2 mHz machine is that they are SLOW. So I decided to make the desktop Gr.0-Text. This speeds it up by about 8 times and takes a lot less space for data. I don't know about you, but on the A8, I prefer speed over not -so - pretty, low - rez graphics. Did I mention slow?
However, there are tradeoffs. Here is the memory map so far:
0-7293
DOS and OS
7293 to 96xx
for modem handler, used by Eight otherwise.
96xx+1 to 16383
used by Eight as needed. input driver, cx85 handler, clock, printer driver, routines, acc buffer, and path/routine buffers.
(End of Eight)+1
varies depending on memory areas and buffers used. Probably around 16384, goes to 32767. Is for user the Application. The ENTIRE BASIC/Assembly program & data(except see below) must fit in the 16K window. This is in the Bank window area.
32768 to 40959
is user App data area. If BASIC used, then this space may be used for the GR15 graphics workspace. About 300 bytes can be used for record I/O to and from the banks. If a user app needs to sort records in banks, then 32768 and up(ideally 1K min) is the block used to move data to/from the bank ram. Saved to temp bank before sorting, restored after, Screen display swapped to one showing sorting progress. This block must be at the end of the window so sorting can happen in a memory area available to all banks, the bigger it is, the faster sorting occurs. Screen ram after this are is saved, used for sorting, restored.
40960 to 49151
If BASIC is inserted, then it takes the rest of the space. If no BASIC, then the 8K space is used for the Gr.15 4 color graphics workspace which can/will be swapped with ram banks allotted. Note that the user App menus/alerts will all be text based-flipping to a text screen, unless the user creates/manages gr.15 clips. Area between bank buffer and Gr.15 screen can be used for user app data.
Note that in a system without extra banked ram, all of the swap data/banked user data has to go to floppy/hard disk. Talk about slow! But necessary. A single 360k drive or two smaller drives will probably be minimum. Less code would be required if all swap data gets written to the ramdisk just like a floppy, instead of using bank ram pointers, possibly as a single file, using note/point values. Still thinking.
What goes in the swap file? Accessories and its data buffer, saved screen data, loaded fonts, window contents. Possibly all of EIGHT except a core reloader, when its exited. Although, even that could be a flag on the boot disk, so one could reboot back where one left off after running a standalone application.
----------------------------------------------------------------------------------------------------------------------------------------------------
Please email me, link on the main page, with your thoughts and ideas. They will be posted here.
----------------------------------------------------------------------------------------------------------------------------------------------------