Jump to content


Atari Dev Studio (VS Code) for Developers [Annoucement]

7 replies to this topic

#1 mksmith OFFLINE  


    Chopper Commander

  • 113 posts
  • Location:Melbourne, Australia

Posted Mon Apr 15, 2019 6:35 PM

Hi everyone,

As some of you may know I've been working on a extension for batari Basic in Visual Studio Code (VS Code) a cross-platform IDE developed by Microsoft (further information available here) to code and test homebrew games.  After starting this I also had some urgings from a few people to also include 7800basic.  Now that I've got the bB extension working fully cross-platform (Windows, Linux, macOS) I thought i'd make a start on a new extension to cover off all the homebrew languages available to the Atari 8-bit consoles starting with dasm, bB and 7800basic.


Some of the features will include:

  • Syntax highlighting and basic intellisense
  • Compilation of each language and optional launching of Stella (thanks StephenA!) for the 2600 and A7800 for 7800basic.
  • Configurable settings so you can provide your own dasm, bB, 7800basic, Stella and A7800 compiler variants

The idea will be to get the basics in providing a one-stop-shop for users of any platform the ability to start creating their homebrew games in their lanuage of choice.  Additional features such as color charts, sprite editors etc will hopefully added in the future to extend the fuctionality bearing in mind VS Code is great for cross-platform use but brings a reasonably low-level of extensibility - the only real way to extend is via HTML within a document window.


This extension will always be freely available to all developers via the VS Code Marketplace and the source in Github.  In my time here the AtariAge community has always been very helpful and supportative and I want to give something back in return.

Attached Thumbnails

  • vscode-ubuntu.png
  • vscode-A7800.png

Edited by mksmith, Fri Apr 19, 2019 4:01 AM.

#2 mksmith OFFLINE  


    Chopper Commander

  • Topic Starter
  • 113 posts
  • Location:Melbourne, Australia

Posted Wed Apr 17, 2019 4:29 AM

Spent some more time today completing out the features.  I've just about managed to add everything back in from the batari Basic extension but in a manner which is much more extensible.


the following language compilers are currently available:

  • batari Basic (using Stella for emulation)
  • 7800basic (using A7800 for emulation)
  • dasm (defaults to Stella but can be optionally changed in the settings to A7800 - this may require further work around the 7800 header)


The following emulators are currently available:

  • Stella
  • A7800

Language Selection
When you load a file the initial laguage will be chosen based on the file extension.  For example:

  • batari Basic (.bas, .bb)
  • 7800basic (.bas, .78b)
  • dasm (.dasm, .asm, .a, .h)

In the instance of .bas files this will default to batari Basic.


To change a language you can click on the status bar Language selector (see above) and a list will be shown allowing you to choose another language. Optionally in the settings you will be able to either let the extension choose based on the active language or set a specific language to always compile against:


I wasn't previous sure how this might work but now that I've had a play around I think this will be the most optimal and easiest way to do what you want. Some people may work exclusively with a particular language so you can force this as required.


Status Bar

Apart from using the Command Palette to select compilation, I've also added some buttons to the Status Bar (see above) allowing you to:

  • Display the extension version (might be useful at times)
  • Open the Welcome page
  • Compile source code
  • Compile source code and run


Hopefully might be able to get this into the VS Code marketplace over the weekend or early next week depending on my workload.

Edited by mksmith, Wed Apr 17, 2019 5:19 PM.

#3 4ever2600 OFFLINE  



  • 790 posts

Posted Wed Apr 17, 2019 4:44 PM


#4 eizner23 OFFLINE  


    Combat Commando

  • 9 posts

Posted Thu Apr 18, 2019 10:05 AM

nice work! as a C# programmer this may help me get into homebrews someday soon.

#5 Lillapojkenpćön OFFLINE  


    Chopper Commander

  • 195 posts

Posted Fri Apr 19, 2019 1:54 AM

You should do tower of rubble in 7800 basic! I would love to collaborate on it, seems alot more fun sending stuff back and forth then being all alone on a project.

#6 mksmith OFFLINE  


    Chopper Commander

  • Topic Starter
  • 113 posts
  • Location:Melbourne, Australia

Posted Fri Apr 19, 2019 3:59 AM

You should do tower of rubble in 7800 basic! I would love to collaborate on it, seems alot more fun sending stuff back and forth then being all alone on a project.

Haha! I've certainly been thinking about it as you could get it a lot closer to the PC release visually most likely. We've got the base code there ready to go really (with obviously some changes required) - feel free to make a start if you want! Give me a few weeks to have a play around in 7800basic and I'll get back to you.  Collaboration across GitHub would be a fun experience - I remember a long time ago joining into one on the Blitz Basic forum but back then there were no online repository to share code into.  Would be very easy today!


I'm getting Atari Dev Studio ready for release (very) shortly. Looking forward to having a real play.



    River Patroller

  • 2,101 posts

Posted Fri Apr 19, 2019 8:21 AM

This is awesome! :)


Since you are planning to include all of the new Atari programming languages, SuperCharger BASIC and Atari Flashback BASIC compilers are ready as Powershell scripts you can easily connect to VS code, and PowerShell is supported on Linux (I used 3.0 for broadest compatibility).


I see a lot of potential in your IDE with regard to the educational initiatives Microsoft has been pursing for Programming languages and IDE's:


1. A return to immediate ease of use for learning without turning the language and IDE into Logo.

This is equivalent to Nolan Bushnell's mantra of easy to learn but difficult to master.


2. Gammification because it makes learning fun which equals learning better and faster with better retention.


Microsoft Small BASIC is one example of trying to make VS Code easier to learn and understand, but it falls short of the initial Dartmouth  concept where you could type in a few lines of BASIC from a science text book and produce graphs, do equations, learn math and physics.


And the student could start even more simply typing just a single PRINT statement, and were motivated to learn by gamification as short (sometimes not so short) game listings abounded in Books and magazines.


SuperCharger BASIC and Flashback BASIC have a more modern mode like bB that supports ASCII GUI designers in the code, but they also support the initial Dartmout concepts in the initiative - there are a few examples of 10 line BASIC games on the official site http://RelationalFramework.com


The single statement programs in the manual perhaps best illustrate the initiative (GUI designers and directives are handled transparently by the compiler as ASCII art like the bB compiler but are optional).


I'm also working on a compiler for the A-8 that is cross compatible with the SuperCharger and Flashback BASIC compilers for the 2600, and there are many new A-8 compilers that support the initial Dartmout concepts, take a look at some of the 10 line BASIC games entered in this years 10 liner contest on the A-8 forum for examples of these BASIC's.


IDE specifics for the initiative -


Tiny BASIC (all BASIC is Tiny Fortran) implementations tend to fit the initiatives very well and many of these BASIC's including bB are. The statement markup is excellent and also dynamic indentation for the logic which I think your IDE also does.


Surfacing Errors in the IDE -


Error output in Tiny BASIC is limited to three; syntax error, what? and out of memory. Since the languages are compile time but VS Studio can offer JIT compilation it should be possible to hook a transparent behind the scenes call to the compilers (without the emu launch) every line or few lines and surface one of these errors immediately as they are encountered. bitd Atari BASIC took this too far and threw annoying JIT errors before you had the rest of the code written so the front end would have to handle waiting for next after for, etc and there would still be phantom errors like that self resolving (calling a label before you write it, etc), still think it would be useful in an output window. 


Want to discuss this topic and ideas on this thread, but anyone involved in the development can also PM me to discuss these initiatives in more detail; lots of fun stuff! :)


#8 mksmith OFFLINE  


    Chopper Commander

  • Topic Starter
  • 113 posts
  • Location:Melbourne, Australia

Posted Fri Apr 19, 2019 3:36 PM

@Mr SQL,

Certainly happy to include anything related to Atari 2600, 5200 or 7800 homebrew development. Once I get the current languages bedded in over the next week or so I'll PM you about adding these in.

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users