Jump to content
Mr SQL

Disk Extended SuperCharger BASIC

Recommended Posts

Disk Extended SuperCharger BASIC
-----------------------------------------

 

Adding DOS commands to BASIC on the Atari 2600! :) 

c64directory.jpg.118abf052fbc2c178c337f9bf0c3fc56.jpg

 

How it works:
----------------

Disk Extended SuperCharger BASIC turns an ordinary cassette deck into an indexed filesystem with a directory structure for the Atari 2600 much like the ADAM Home Computers indexed Tape Drive advanced design.

 

For full support, an auto-flipping Tape deck or an endless loop tape like this one can be used to make a regular cassette player function as a slow disk drive like the Commodore 1541.
 

1541manual.jpg.a39dd3759fd04dc60e3201c8cf9450df.jpg

Or the player can manually rewind an ordinary tape to the beginning and keep pressing play, which can also be fun :) 

 

Ultra fast SuperCharger DOS - Fast Loader options
-----------------------------------------------------------

450749079_EpyxFastLoadCart.jpg.bc433003f48f44f23e3a60ffc713a074.jpg

The SuperCharger cart features built-in fast loading technology similar to Epyx fast loader and the ADAM high speed Tape drive in functionality, the buad rate can be increased to make SuperCharger DOS load faster.

 

With Flashcarts and Emulators the SuperCharger Indexed File System can run lightning fast - many times faster than even the fastest Apple II disk drive!
spartan_commodore_really_is_as_fast_as_an_Apple_II.jpg.73edb003ed972202704dc8c27554bfc1.jpg

 

SuperCharger Disk Extended BASIC Backward Compatibility: 

-----------------------------------------------------------------------
100% Backward compatible with SuperCharger vwBASIC, and cross compatible with Flashback BASIC (CBS RAM).

 

Atari 2600 platform compatibility

---------------------------------------

SuperCharger Disk Extended BASIC runs on classic Atari 2600 hardware with a SuperCharger and via any multicart that supports the SuperCharger format (such as the Harmony/Encore UnoCart and PlusCart) and all emulators.

 

Performance:

---------------------

Performance can vary depending upon the emulator or flashcart being used because some also emulate wait time via the loading bars. For best performance loading bars should be avoided by flashcarts or minimized to eliminate the wait time allowing the SuperCharger FS to load faster (this will emulate the Epyx Fast Loader effect like Harmony is currently doing).

 

Variable Sharing:

---------------------
BASIC variables are shared between programs.

 

Capacity (Floppy Disk size):

-------------------------------

The PlusCart and UnoCart support a very large capacity - large supercharger Disk Extended BASIC games can have 256 directory entries, for a 2 MB Atari 2600 game! :) 

 

Harmony currently is limited to four directory entries but I will send batari my samples and beta so we can increase the number of entries -


Even older edition Harmony carts like mine from 2011 may be able to support 30 directory entries in the SuperCharger FS, and the newer Harmonies and Encores can support even more.

  
A good analogy is that the 2011 Harmony is expandable to have a bit more capacity than an original C64 5 1/4 inch floppy. The newer models have the Capacity of a 720K 3.5 " floppy disk and the later models and the Uno and Plus have SuperCharger disk capacity of a 1.44 MB floppy.
 

variablediskcapacity.jpg.17622e65105940c051a12f7ac8de19cf.jpg

 

Programmers may wish to take into account the varying SuperCharger "disk size" capacities of the multicarts when creating large SuperCharger Disk BASIC games so that the games can run on them all.

 

Availability:

--------------

SuperCharger_Disk_BASIC.zip

Disk Extended SuperCharger BASIC is currently in Beta will be available free for download soon on the SuperCharger BASIC site

 

Edited by Mr SQL
SuperCharger Disk BASIC released
  • Like 4

Share this post


Link to post
Share on other sites
15 hours ago, Voxel said:

That's some nice development work.

Thank you Voxel! :) 

 

I had a lot of help from @Al_Nafuur , @batari and many other programmers on the forum getting disk basic to boot up! :) 

 

I'm going to demo it at the SillyVenture2020 compo in December!  Hope to release it before then, as soon as it is out of Beta.

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Honestly, I keep looking at SuperCharger BASIC.  Need to get my coding head on, it's a great environment that's seeing some good development.

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, Voxel said:

Honestly, I keep looking at SuperCharger BASIC.  Need to get my coding head on, it's a great environment that's seeing some good development.

That's awesome I'm looking forward to seeing what you create! :) 

 

PM me if you have any questions on anything or have any issues setting up SuperCharger BASIC so that it compiles the examples and launches them in Stella when you click the Play button if you are using the IDE, or creating the ROM binary if you are using the compiler from the command line.

 

  • Thanks 1

Share this post


Link to post
Share on other sites

SuperCharger Disk BASIC released, download is in the first post but not on my site yet.

 

Here are some excerpts from the Manual with a classic BASIC example that shares ZeroPage variables between two BASIC programs and lets you inspect the ZeroPage visually:

 

SuperCharger Disk BASIC DOS Commands
-----------------------------------------------
SuperCharger Disk BASIC adds two DOS commands "load" and "SUPERCHARGERID"

SUPERCHARGERID specifies the current programs ID in the directory, the default is 0 for the main program if not specified.
The "program directory" consists of an ISAM file made from concatenated SuperCharger ROM's, or multiple SuperCharger audio files on a cassette tape.

Supercharger games on cassette have identifying headers allowing the tape drive to function as a disk drive like the ADAM Family home computer.
This feature made the multiload games like Dragon Stomper and Survival Island possible in the early 80's and is now available in BASIC!

 

example setting a modules SUPERCHARGERID to 2:
10 SUPERCHARGERID=2

Note that any number between 0 and 255 can be specified as the programs SuperCharger ID and that all ID's must be unique in the multiload.

example using the load command to load a program module with a SUPERCHARGER ID of 2:
10 load 2

 

SuperCharger DOS security system:
---------------------------------------
Note: any program with a supercharger ID other than 0 will be blocked from loading directly and will brick up -
this is a security feature, another program must load it by specifying it's non-zero ID via the load command.

 

Sharing variables between SuperCharger Disk BASIC programs:
-----------------------------------------------------------------------
The following variables are preserved when programs are loaded:
k,l,m,n,o,p,q,r,s and score
player0x, player0y, player1x, player1y
missile0x,missile0y,missile1x,missile1y

 

Note that reloading the main program (SUPERCHARGERID 0) from another program will clear all the variables.
If data needs to be preserved for programs reloading the main program, an initial loader program can be used to circumvent this feature. 

 

Total number of modules allowed:
-----------------------------------------

Up to 256 6K programs may be loaded and can cross reference one another within a single ISAM file up to 2 MB in size.
Harmony flashcart limitation: currently only 4 SuperCharger programs may participate in an ISAM but there is a project underway to increase this number to 40 or more via a firmware update.
PlusCart Encore and UnoCart flashcarts support 256 SuperCharger programs in an ISAM up to 2 MB in size.
The SuperCharger and a standard cassette tape can support modular games just like the classic multiload games Survival Island and Dragon Stomper.

Development Note for testing individual modules in large games:
Once a SUPERCHARGERID other than zero is specified, the participating module can no longer autostart in Stella so use "SUPERCHARGERID=0" for debugging and change the ID back for loading once ready to put the modules together.

 

Example combining multiple game modules to create a single large game ROM binary:
--------------------------------------------------------------------------------------------------------
Here is an example of combining 2 program modules into a single file for the Harmony flashcart (after they have been compiled individually and renamed).
The first module will autostart (SUPERCHARGERID=0) but the other module with SUPERCHARGERID=3 can only be loaded using the DOS load command.

10 rem testing load command sharing BASIC variables in loaded program
20 SUPERCHARGERID=3:rem program 3 (program will brick-up if not loaded by another)
25 COLUBK=q:rem set the background color to variable q, some variables are preserved!
26 vwpixel(19,10,flip):vwpixel(1,1,flip)
35 if joy0right=1 and BITIndex <92 then BITIndex=BITIndex+1:scrollvirtualworldtoggle=1
36 if joy0left=1 and BITIndex >0 then BITIndex=BITIndex-1:scrollvirtualworldtoggle=1
37 if joy0down=1 then BYTErowoffset=BYTErowoffset+12:scrollvirtualworldtoggle=1
38 if joy0up=1 then BYTErowoffset=BYTErowoffset-12:scrollvirtualworldtoggle=1
45 if k=1 then return
46 for x= 0 to 239
47 virtualworld(x)=MUSICINDEX(x)
48 next x
50 BITIndex=0:BYTErowoffset=0:k=1

After compiling this program you will notice it will brick up upon launching - 
that's expected until it is combined, rename the compiled program.bin to program3.bin

Now compile the program which will load that program when the button is pushed:

5 rem this program loads another program when the button is pushed
6 rem and transfers variable k for the others screen color
7 rem button initializes Tiny BASIC vars in ZeroPage RAM 
8 rem and displays the entire zeropage (almost, 240 of 255 bytes) visually - 
9 rem Then pushing Right and Down will scroll through the ZeroPage to inspect
20 SUPERCHARGERID=0:not necessary since this is the main program
25 z=100:COLUBK=z:q=116
26 rem change the background color by sharing variable q
27 vwpixel(19,9,flip):vwpixel(0,0,flip)
35 if joy0right=1 and BITIndex< 92 then BITIndex=BITIndex+1:scrollvirtualworldtoggle=1
36 if joy0left=1 and BITIndex >0 then BITIndex=BITIndex-1:scrollvirtualworldtoggle=1
37 if joy0down=1 then BYTErowoffset=BYTErowoffset+12:scrollvirtualworldtoggle=1
38 if joy0up=1 then BYTErowoffset=BYTErowoffset-12:scrollvirtualworldtoggle=1
44 rem Press button to set all BASIC variables for visual scroll test:
45 if joy0fire=0 then return
47 a=255:b=255:c=255:d=255
50 e=255:f=255:g=255:h=255:i=255:j=255:k=255:l=255:m=255:n=255:o=255:p=255:q=116:r=255:s=255:t=255:u=255:v=255:w=255
55 x=255:y=255:z=255:var1=255:var2=255:score=255:missile1y=255:missile0y=255:player1y=255:player0y=255:player1x=255:player0x=255
56 missile1x=255:missile0x=255:score=255:px=255:py=255:bx=255:by=255
58 for x= 0 to 239
59 virtualworld(x)=MUSICINDEX(x):rem load ZeroPage into virtualworld
60 next x
64 BITIndex=0:BYTErowoffset=0:rem move CAM to upper left corner
65 load 3: rem loads program with supercharger ID 3 from ISAM file or Magnetic Tape

Command line example of combining those two SuperCharger Disk BASIC programs into a single ISAM multiload file:
c:\vwBASIC>copy /b program.bin + program3.bin

Program.bin now contains both programs, when run pressing the button will launch the other program and pass in variables.
 

Testing_Load_command.bin

 

Pressing the button seeds the ZeroPage variables and launches the second program.

Both programs can visually navigate the ZeroPage RAM much like the Stella debugger display, but displays the bits rather than the bytes and you have to scroll to see them all.

 

It's possible to write your own debugging programs in BASIC (Tron) that may find differences between emulation and the native hardware. 

 

For anyone who would like to preview the graphical KC Operating System written in SuperCharger Disk BASIC it is available in the GameModem/PlusCart club (the club is open and you don't need a game modem to join):

 

  • Like 2

Share this post


Link to post
Share on other sites
5 hours ago, Al_Nafuur said:

grafik.thumb.png.37e82fa1ce0ef79af3056201dbd63665.png

🤔

 

 

 

That's interesting I have the same settings and it runs, I think it could be because it's a downloaded script:

 

Try right-clicking the file and goto properties and unblock.

 

Unblock can also be done in PowerShell (this compiler needs 3.0 or higher).

Unblock-File -Path 'C:\vwBASIC\SuperCharger_Disk_BASIC.ps1'

SamePolicySettings.thumb.JPG.759ced3d91b4480d95cdcb4e9efbcde4.JPG

  • Like 1

Share this post


Link to post
Share on other sites
2 hours ago, Mr SQL said:

 

Unblock can also be done in PowerShell (this compiler needs 3.0 or higher).

Unblock-File -Path 'C:\vwBASIC\SuperCharger_Disk_BASIC.ps1'

 

👍

That did the trick !

  • Like 1

Share this post


Link to post
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.

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...