Jump to content
IGNORED

Run 240 programs in memory all at the same time


Iamgroot

Recommended Posts

Uhm! Where do I start?

 

There is an article that I first came across in Nibble magazine called Split Personality. It allowed one to load DOS 3.3 in Aux memory and one could load programs, play games etc. using Auxiliary memory instead of Main memory. One could jump back and forth from Main to Auxiliary memory with different programs in each and without each program interfering with each other. Since there is only one text screen, and programs in Aux memory can only use 80 col text or dbl hi-res screen, a little planning would have to be done to keep the programs from clashing.

 

Prodos is loaded into the language card and Basic.system is in the lower 48k. And with the way softswitches work, when Aux mem is switched in, then language care, zero-page and the stack are out of whack. When you switch in the language card, zero-page and the stack, then either Basic.system or Prodos are out of whack. Which usually causes a crash into la-la land.

 

A few have tried to port this idea over to Prodos, none have succeeded.

But you probably have already guessed, I have accomplished this no easy feat.

And how does one get 240 programs in memory.

 

The theoretical max memory for a Ramworks cards is 16 Mb. 15 banks of memory is needed for 1 Meg, and 16 Megs has 240 banks. Now where is that link of someone talking about making a 16 Mb piggy back card for the RamWorks III?

 

So? Now, what can you do with all this extra power?

 

Load a program or game in every bank and knock yourself out.

Load music and music player in each bank and have one player call the next to play a very long music sequence.

Load a modified version of applesoft into Auxiliary memory's language card

Load machine language subroutines in Auxiliary memory's language card for extra memory if not using applesoft for larger ML programs

Write an interrupt program to call each bank in succession and have 240 programs run all at the same time.

DOS 3.3 games that use the language card, may now be loaded to and be able to run from Auxiliary memory, although hi-res graphics page 2 will not be accessible.

 

 

I will upload the program to Asimov shortly, once I get the files organized and write some instructions.

 

 

 

  • Like 1
Link to comment
Share on other sites

I have been looking into this type of program switcher too..

 

 

Before I got the Nibble Magazine Article, "Split Personality", I found some work done on this at Rich12345's Page:

ProDOS Split

MTOS MultiTasking Operation System

Memory Usage and SoftSwitches

 

 

MarkO

Link to comment
Share on other sites

Neat!

 

MESS's RamWorks III emulation has 8 megs on-board (banks 00-7F), and it'd be easy enough to take that up to 16 if you need it.

 

One minor wrinkle: the video circuits on the //e only see bank 00 of a RamWorks-style card. If you rely on the 'second halves' of the various video areas in aux memory (400-7FF and 2000-3FFF) being active for all banks, no such luck. You can read/write to those addresses in the higher banks, but the video won't show them.

Edited by Arbee
Link to comment
Share on other sites

Also, ReActive Micro is working on a 2MB RAM Expander for the RAMWORKS II and III cards.

 

 

Maybe if the Program Switcher is refined to be a needed piece of Software, we can Talk them Into making an 8 or 16 Meg version.

 

I perceive that the General Feeling is that more than a few Meg of RAM on an Apple ][ is not really beneficial... We just need to make an Application, ( e.g. The Killer App ) that proves that wrong..

 

MarkO

Link to comment
Share on other sites

What I see is needed, are a few refinements...

 

Something like the EMS Standard for the IBM PC developed to manage the enhansed memory for the Apple ][

 

One of the Banks, ( or part of one ) is Dedicated to the Switcher Application.. Mainly for some Buffering.

 

 

When you Switch Away from One App, you need to Copy the Display Screen to a Buffer for it to use later. Then Restore, or Create a new Display Screen for the New App.

 

When you switch back, you reverse the process.. Unfortunately, this might require using the First Bank for Everything, and Copying the Additional Banks To it and From it..

 

Since your not really Multi-Tasking, you should be able to Clean Up after One App, and then Switch to another App.. And Back Again...

 

MarkO

Link to comment
Share on other sites

Yes, I saw MTOS by Rich. But he did not get his working with Basic.system yet. My rendition is fully functional with all of Basic.system's commands working. So far I have not run into any limitations other than not being able to use Hi-res page 2 or the 40 col screen. But that is due to the way bank switching works and is not a fault of Prodos.

 

What really needs to be created is, if someone is building a 16 Mb RAM board for the RamWorks III, if they wouldn't mind including some type of video RAM that can support up to a 600x400 screen and 256 colors.

Link to comment
Share on other sites

Yes, I saw MTOS by Rich. But he did not get his working with Basic.system yet. My rendition is fully functional with all of Basic.system's commands working. So far I have not run into any limitations other than not being able to use Hi-res page 2 or the 40 col screen. But that is due to the way bank switching works and is not a fault of Prodos.

 

That might require that the First Two Banks ( the Standard Banks for a 128K Apple ][e or //c ) be reserved for the Active Application, and there be Transfers from one of the Extended Banks Down to the Standard Banks. Or reserve the Conflict Areas in each Bank for that Apps Data and Copy only it into the appropriate area when the Application Switch happens.

 

What really needs to be created is, if someone is building a 16 Mb RAM board for the RamWorks III, if they wouldn't mind including some type of video RAM that can support up to a 600x400 screen and 256 colors.

I seem to remember that Reactive Micro is making a Digital Prism/Color Link/RGB Card for the RAMWORKS Family. If RAM could be added to it, and Driver in ROM to make it work seamlessly..... That would be fantastic....

 

MarkO

Link to comment
Share on other sites

  • 1 month later...

A disk image has been uploaded to Asimov called "Cool Demos.2mg".

Not quite completed as still figuring out how Split Personality and a Ram disk driver can play nice with each other. This version will work on any computer with one bank of Aux memory including the IIc/IIGS/laser 128ex.

The final version will only work on a IIe with Ramworks and a IIc and any other computer that recognizes the softswitch $C073 as a bank switch memory.

The final version will leave Bank# 0 of Aux mem alone and you will be able to set how many banks to use for both Split Personality (1-255) and a Ram disk (2-16 Mb) and still have some left over for other uses.

Some Notes before using:

The driver is installed between Basic.system and its buffers. Do not launch a system program or binary program that disables Basic.system while in Aux memory. This will crash your system. Launching a system file from Main memory will just disable the driver.

Some code got left in this demo that may prevent it from working on certain computers. Load the program called SPLIT and change the bytes at $21EF to 21EF:EA EA EA. Then BSAVE the program back to disk.

Feel free to drop me some feedback.

Link to comment
Share on other sites

Some Notes before using:

 

Some code got left in this demo that may prevent it from working on certain computers. Load the program called SPLIT and change the bytes at $21EF to 21EF:EA EA EA. Then BSAVE the program back to disk.

 

I don't see a program called SPLIT... there's SPLIT.NOTES, SPLIT.HELP, and SPLIT.LOGO.

 

Testing on GSport (I assumed you targeted a GS, since it's an 800k disk image... which would be very unusual for a plain Apple II)

  • Startup seems to make some odd assumptions about the screen starting in 80 columns - the screen viewer look a little funky in 40.
  • Boot the disk, hit 0 to quit, then run TEST.MAIN. Program says to hit Ctrl-A... do that, and you get SYNTAX ERROR IN 30. The same thing happens if you run TEST.AUX.
Link to comment
Share on other sites

SPLIT is a binary program that immediately follows SPLIT.NOTES. I uploaded the disk image that I am currently using, so don't know what gives.

 

The 80 column card needs to be activated to use SPLIT. The STARTUP programs needs a ? D$ "PR#3". I originally was using a highly modified Basic.system and instead of explaining all the extras in it, I decided to revert to the original Basic.system. One of the extras was to always initialize the 80 column card on Boot.

 

SPLIT.HELP should detail how to use 40 columns in Main memory. The 80 column card needs to always be active, so to use 40 columns, use ? CHR$(17); in your programs. And 80STORE (POKE 49153,0) or (STA $C001) needs to be turned off if you wish to use Hires Page #2 or Text Screen #2.

 

For SPLIT to work, it is assumed to always be in 80 column mode and 40 columns needs to be activated.

 

The files that should be on disk are:

 

SYS PRODOS

SYS BASIC.SYSTEM

BAS STARTUP

BIN SCRN801

TXT SPLIT.NOTES

BIN SPLIT

DIR DEMOS

TXT SPLIT.HELP

TXT SPLIT.LOGO

BAS TEST.MAIN

BAS TEST.AUX

 

 

The STARTUP program is a little text viewer/editor. Use ? to CATALOG and "L" to Load and read the other text files.

 

This demo will work on a IIe with 80 col card, IIc(+), IIGS, Laser 128 series and Franklin if it has 128kb by means of an Auxilliary memory

Link to comment
Share on other sites

I could have swore that I copied an original Basic.system to the disk image. You encountered another one of my enhancements. Putting the cursor back on the same line as the prefix allowed me to back up one directory by copying over the prefix. I hated using ESC I to go back up one line.

 

I booted my disk image and it came up in 80 columns.

 

Load Basic.system and check address $2064. There is a LDA #$15 - JSR $FDED, which disables 80 col firmware. Change that to LDA #$8E - JSR $C300, which will initialize the 80 col card.

 

Also note (another swear word) I thought I had installed Prodos v1.9 on this disk, but it is 2.0.3. The unenhanced IIe would need v1.9 to be able to use it.

 

I also ran into a problem launching SPLIT after I run the STARTUP program when I boot from this image (works ok when I boot another image using the same PRODOS and BS). I isolated it to the DIM B$(21,9) in line 3. Now, why would Dimensioning a variable crash anything? I am using SWEET16.

 

Let me know of any other discrepancies, please.

Link to comment
Share on other sites

FRIG.

 

What happened to making the emulators run like the real thing. Now, me as a software writer has to be compatible with all the emulators.

 

This is almost impossible. What works on Sweet16 doesn't work on ActiveGS and Applewin and what works on ActiveGS does not work on the other two, and what works on Applewin does not work on the other two, and even the other two don't work on the other two.

 

Although I haven't really figured out what is the problem, since my code is sound, I was able to find an entry point that works on all three. Rather, it is an exit point, and even then I get the odd crash under certain circumstances. One will have to load the TEST files, then type RUN, instead of typing RUN TESTfile.

 

Once I get my IIc+ out of storage and get it working on it, then THWTR.

Link to comment
Share on other sites

I have uploaded a fixed disk image and all demos have been tested and works under Sweet16, Applewin, ActiveGS and GSPort.

Now it's probably broken for the real thing :)

The demo "Cable.tv" got a big upgrade.

I have also successfully loaded a modified applesoft in Aux memory's Language Card. Now you can modify applesoft to your hearts content while working under Prodos. But if your break it, I take no responsibility.

Rob

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...