Jump to content
IGNORED

Microsoft Basic II as an EXE, does it exist?


ACML

Recommended Posts

Is there an EXE version of the Microsoft Basic II 16K cartridge? There are disk versions, but they include the entire version and have lower free memory. The 16K cart version offers 29K of free ram as opposed to only 22K for the disk version. There are plenty of ROM files, but is there an EXE you can load into real hardware?

Edited by ACML
Link to comment
Share on other sites

Probably not on a public archive. It's not really that popular given the "better" alternatives like TBXL, Basic XL and XE.

 

The problem with running a 16K language cart from RAM - each time your press Reset, the screen will overwrite 1K of the cart, so you have to keep a copy of that 1K elsewhere and restore it.

Since you generally want to be able to use a DOS as well, it's probably worthwhile putting it under the OS, or immediately before the start of the cart (which would decrease free RAM somewhat).

 

Another alternative might be to make a version that can run from Atarimax flash - the top 8K can reside in ROM, then the bottom 8K could be copied to RAM.

Link to comment
Share on other sites

29k free is w/o DOS loaded. It could be more free memory but I am a little suspicious in that the two versions may have similar performance and the only thing different is the file/execute version needs DOS loaded to load. :)

 

Anyway, this works as a 16k cart in Altirra. I guess you could use a cassette if you really needed 29k.

MicrosoftBASIC2.bin

Link to comment
Share on other sites

Since you generally want to be able to use a DOS as well, it's probably worthwhile putting it under the OS, or immediately before the start of the cart (which would decrease free RAM somewhat).

Rybags,

I totally forgot that the 29K was w/o DOS. With DOS (2.0s) it drops to 24K. Still higher than disk version 2.7 (21K), so its not much savings. Still interesting that over 30 years, no one made an EXE out of that cartridge.

Link to comment
Share on other sites

Rybags,

I totally forgot that the 29K was w/o DOS. With DOS (2.0s) it drops to 24K. Still higher than disk version 2.7 (21K), so its not much savings. Still interesting that over 30 years, no one made an EXE out of that cartridge.

As was stated, it was probably never done because there are so many superior (and Atari BASIC compatible) BASICS out there. And any program written in Microsoft BASIC II that you want to distribute would require others to have the MBASIC II as well or have it in some type of runtime form...so there has been like exactly ZERO demand for such a thing until you came along... ;)

 

If you want it to type in and/or run old microsoft basic program listings, it's almost easier just to modify the program into one of the superior Atari BASICS like TBXL, BASIC XL/XE which have all the benefits of Microsoft BASIC like strings, etc., plus much more...

Edited by Gunstar
Link to comment
Share on other sites

Basic XE may be a better solution if you require string arrays. If you use Turbo Basic, you can store everything into one big string and access it with the standard Atari string segment. First Data = A$ (1,20), Second Data = A$(21,40), etc. Actually takes up less space. It all depends on the application you plan to run and how many pieces of data you need to store.

 

However, the original guy posting here may not need to do string arrays so lets not get off track. I prefer TurboBasic and Basic XE because they have good logic If-Then-Else-Endif. Nicely indented and can see the logic flow inside of a program. Do not believe any of these Basics have ElseIf, or Select Case structure, something I use frequently with Visual Basic on my PC.

Link to comment
Share on other sites

I wish someone would patch TurboBasic with MS Basic type string arrays, to go along with Atari Basic string handling. If I had the skills, I would....how about it flashcatjazz? :)

TB source code would be pretty cool to have, but I imagine Frank O. packed as much as he could into the available space anyway. :) String arrays aren't trivial to add either, since they necessitate a lot of extra memory management. It would also be difficult to implement standard string array notation without completely breaking the Atari BASIC string handling.

 

If you use Turbo Basic, you can store everything into one big string and access it with the standard Atari string segment. First Data = A$ (1,20), Second Data = A$(21,40), etc. Actually takes up less space. It all depends on the application you plan to run and how many pieces of data you need to store.

The only trouble with string slicing is that storage has to be allocated for n*largest possible string. I suppose proper string array implementations have a significant pointer overhead, however, so the storage requirements might even out. Once the initial surprise at the lack of string arrays has been overcome, however, it's not a big deal.

Link to comment
Share on other sites

String array would probably need to be like A$[2]

 

But really you can do without it. Doing conversion of existing MS type Basic programs is the main problem. If starting a fresh program then you can adjust your technique and do a sort of emulation.

Edited by Rybags
  • Like 1
Link to comment
Share on other sites

There are really two good alternatives. First is Basic XL and XE (as mentioned previously). Really nice, with "all the usual suspects" such as LEFT$, RIGHT$, MID$, and SORTUP and SORTDOWN. Second is to use a dedicated subroutine or procedure in TBXL to do the indexing. A bit awkward, but workable and way faster than you might think.
-Larry

Link to comment
Share on other sites

  • 1 month later...

XEX version of MS BASIC II 2.0 ROM:

 

msbasic.zip

Patches:

  • Move RAMTOP to $8000 and re-open S: to accommodate 16K ROM size
  • Write DOSINI vector to stay active when RESET is pressed (BASIC program is retained)
  • Copy 2K of ROM under OS to refresh ROM area after RESET
  • Patch two points in code that write to ROM area

I didn't perform thorough tests so there may still be problems that I haven't seen, but it seems to work pretty well.

 

Free memory is reported as follows with PRINT FRE(0):

  • 24352 under DOS 2.0
  • 24496 under DOS 2.5
  • 29980 with Altirra's "Boot Image..."

Unfortunately, it doesn't appear to work with Atari800Win's "Autoboot image" but it does work with DOS under Atari800Win.

  • Like 4
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...