Jump to content

Disk Extended SuperCharger BASIC


Recommended Posts

Disk Extended SuperCharger BASIC


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



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.


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


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!


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



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.





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


Commodore 64 Compatibility:


SuperCharger BASIC is cross compatible with the Commodore 64 home computer via Game Loader Atari emulation:




SuperCharger BASIC for the Commodore 64 home computer now available featuring an Atari 2600 emulator in the runtime! :) 


More details in this post


 C64Workstation.thumb.jpg.9e64e93878f0e01b61319a1e39d13dd0.jpg  Commodore_64_with_the_external_power_supply_and_Commodore_1530_(C2N)_Datasette.thumb.jpg.8f99794235a88377bf59b4512678de63.jpg

The SuperCharger can now be used as a C64 development workstation and vice versa.


Edited by Mr SQL
Commodore 64 version released! :)
  • Like 5
Link to comment
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
Link to comment
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
Link to comment
Share on other sites

  • 5 months later...

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:

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


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.



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
Link to comment
Share on other sites

5 hours ago, Al_Nafuur said:






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'


  • Like 1
Link to comment
Share on other sites

  • 1 year later...



Here is the Commodore 64 version of SuperCharger BASIC which includes an Atari 2600 Virtual Machine in the runtime!



The TIA, RIOT and Atari system bus are emulated along with the soft ANTIC chip to allow programming advanced Atari 2600 games on the C64.

The zip contains example C64 prg's and the SuperCharger BASIC IDE (for Windows and LInux) with enhanced graphics and scroll commands.


Anyone can immediately start writing BASIC programs and advanced ML programmers may enjoy exploring the transparent emulation layer in the runtime template.  


Demo coding techniques and columnar architecture transparently map the Atari 2600 graphics screen to the C64 and allow 4 levels of sprite scaling (3 directly exposed). It is even possible to overclock the emu in the runtime to double the speed of the Atari 2600 graphics rendering (clues are in the assembly template).


The TIA Tracker sequencer also upsizes standard TIA chiptune streams to the Commodore SID and adds unique analog filters to put distinctive C64 sounds on Atari games.


Hope everyone enjoys this fun technology and that the innovative design inspires more innovative technology for more Super Atari games on multiple platforms! :) 


There is an annual BASIC Programming contest with more info here you can use the old-school BASIC mode (with line numbers) to compete in on the C64 or 2600.


I'm currently working on a version for the Atari 400/800/5200 machines which are also powerful enough for dynamic Atari 2600 emulation.


Other 8-bit retro computers with advanced graphics and sound acceleration chips may also be capable of mapping Atari 2600 emulation similarly, anyone have a suggestion for another system to try this on?


@Albert please grant me access to edit the first post so I can add this release.


  • Like 2
Link to comment
Share on other sites

On 2/24/2023 at 2:05 PM, r_chase said:

I don't know if I can afford Commodore hardware, so can the C=64 DXSCBASIC work on an emulator? You're doing excellent work btw.

OH! I also would love to see this work on ZX Spectrum 128 and stuff. I would say the AY3 chip would be perfect for TIA emulation. :3

Thank you r_chase! Yes it works great with the VICE C64 emulator and it is recommended that you install it for testing program development with the IDE.  Without VICE present, the IDE will still build the C64 prg file when you click play but you will have to manually transfer the prg to the real hardware to run it.


The ZX Spectrum 128 is a really interesting machine and the AY3 sound chip could be mapped to the TIA for sound emulation like the SID.

The hardest part I think would be the lack of native sprite hardware for putting hi-res sprite graphics over semigraphics.


Everything would have to be hi-res which could make it very challenging to match the Atari 2600 speed 100%.


Here is a great technical article with example of hi-res sprites created in software with raster line programming techniques that could be applicable:


Old Machinery: ZX Sprites


The next biggest hurdle, would be the processor the ZX Spectrum 128 does not have a 6502, though it has a faster Z-80. This could still be overcome by transmeta technology to have the IDE dynamically change all the opcodes to match 6502 functionality under the Z80. There is an existing example of the kind of transmeta technology needed to do this in SuperCharger BASIC and Atari Flashback BASIC which are compatible by dynamically changing just the opcodes that use the SuperCharger to transparently work with CBS RAM for memory access and bank switching to allow interoperability with the different formats and their support chips.  This could pose another speed issue wherein some of the RISC style instruction set of the 6502 could take longer in Z-80 land.



  • Thanks 1
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.

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.

  • Recently Browsing   0 members

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