Jump to content
IGNORED

reconsidering MS BASIC


hloberg

Recommended Posts

OK, 1st off, I know that only 21k is available. ;) Now that's out of the way, I have started re-messing with with Atari Microsoft BASIC. Why, may you ask. Well, I have several BASIC programs from other systems that I want to port over and MS BASIC is a much closer port (don't have to deal with lack of string arrays). But, it requires a cartridge? No, not really. I have come across a version of MS BASIC called MS BASIC 2.7that loads off of disk with all it's extras. Personally I think it compares nicely to BASIC XL and TurboBASIC (except having only 21k). Now if it only had a compiler (Humm, a future project?)

attached is the MS BASIC 2.7.

MS_BASIC_27.zip

Edited by hloberg
Link to comment
Share on other sites

Here is version 3. It works in SpartaDOS X too.

MSBASIC3.ARC

 

Keep in mind this was ARCed on an Atari. I've found that many modern unpackers for PCs do not understand this format, even though they may claim to support ARC. I used SpartaDOS X ARC, but Bob Puff's Super UnARC would probably work too. On the PC, one program I found that does handle it is Universal Extractor.

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

OK, 1st off, I know that only 21k is available. ;) Now that's out of the way, I have started re-messing with with Atari Microsoft BASIC. Why, may you ask. Well, I have several BASIC programs from other systems that I want to port over and MS BASIC is a much closer port (don't have to deal with lack of string arrays). But, it requires a cartridge? No, not really. I have come across a version of MS BASIC called MS BASIC 2.7that loads off of disk with all it's extras. Personally I think it compares nicely to BASIC XL and TurboBASIC (except having only 21k). Now if it only had a compiler (Humm, a future project?)

attached is the MS BASIC 2.7.

 

 

I used to convert quite a few programs from other systems to Atari MSB, even GW-Basic programs for PC/MS Dos. It made many of the conversions very simple. Ditto about the compiler. I even tried to convert an Applesoft compiler, but I was completely in over my head. Other than for conversions, once OSS released Basic XL with its own string arrays, that really gave Atari Basic (style) "the" key feature that most folks really liked about MSB (and without the gyrations of trying to do it inside long strings).

 

-Larry

Link to comment
Share on other sites

Not up on spartados or Atari memory locations but I'm guessing that is so it can run under spartdos X?

Both posted versions appear to run under SpartaDOS X, and as noted there are only three differences between the two executables, and two of those belong to the version number in the copyright notice.

Link to comment
Share on other sites

Hi!

 

Both posted versions appear to run under SpartaDOS X, and as noted there are only three differences between the two executables, and two of those belong to the version number in the copyright notice.

This is the disassembly of the two versions at address $5572.

 

Code in "version 2.7":

L5572:  lda     $EF
        ldx     #$20
        ldy     #$00
        bit     $D0
        bvc     L5583
        ldx     #$2A
        cmp     #$20
        bne     L5583
        txa
L5583:  pha
        txa
L5585:  sta     $EF,y
        iny
        ldx     $EF,y
Code in "version 3.0":

L5572:  lda     $EF
        ldx     #$20
        ldy     #$00
        bit     $D0
        bvc     L5583
        ldx     #$2A
        iny
        jsr     $01D0
        txa
L5583:  pha
        txa
L5585:  sta     $EF,y
        iny
        ldx     $EF,y
So, the "CMP" got changed to an "INY", causing the "JSR" to jump to an invalid address. Certainly that version should crash there.

 

So, use the "2.7" version.

  • Like 2
Link to comment
Share on other sites

 

I don't know. I'm sure there must be other differences too though, else Microsoft wouldn't have increased the version number. :P

 

 

And then RDEA6's posted and it turns out every evil deed I had attributed to Microsoft is actually true.

They changed the version and added a bug. Classic.

  • Like 1
Link to comment
Share on other sites

 

 

And then RDEA6's posted and it turns out every evil deed I had attributed to Microsoft is actually true.

They changed the version and added a bug. Classic.

 

If I remember right the 2.7 version was a homebrew modified after the fact. I'm guessing the 3.0 is the same. all the 2.7 version did was take the code from the cartridge and merge with the expansion disk then turn it into a .exe which made MSB II portable.

Not sure what the 3.0 version was trying to accomplish if 2.7 worked with Spartdos X too. the only problem I ever had was that 2.7 won't work with APE running. memhi seems to be messed up and it gives more memory then there actually is available.

Edit: I'm going to test it with APE to see if that was where they were going. Of course DNSC says that JSR is jumping to an illegal address? whats at $01d0?

Edited by hloberg
Link to comment
Share on other sites

 

Both posted versions appear to run under SpartaDOS X, and as noted there are only three differences between the two executables, and two of those belong to the version number in the copyright notice.

 

The 2.7 one didn't run for me under SDX. Got memory conflict. No, BASIC was not enabled.

Link to comment
Share on other sites

 

The 2.7 one didn't run for me under SDX. Got memory conflict. No, BASIC was not enabled.

 

The pre-empted question isn't the one I was going to ask. :) Do you have many drivers installed? It's more likely that your MEMLO is too high for SDX to successfully load the segment at $1E00. Quite why 3.0 would load in an identical environment to the one in which 2.7 fails is a mystery, since the binaries are identical apart from the apparent bug already identified in version 3.0.

Link to comment
Share on other sites

Hi!,

 

If I remember right the 2.7 version was a homebrew modified after the fact. I'm guessing the 3.0 is the same. all the 2.7 version did was take the code from the cartridge and merge with the expansion disk then turn it into a .exe which made MSB II portable.

Not sure what the 3.0 version was trying to accomplish if 2.7 worked with Spartdos X too. the only problem I ever had was that 2.7 won't work with APE running. memhi seems to be messed up and it gives more memory then there actually is available.

The "2.7" version has minimal changes to the given "1.0", the cartridge based "Basic II v2.0" changes a lot.

 

In fact, it appears that the "2.7" version is earlier than the "1.0" version, as it does not clear the "DSPFLG" flags after the program ends. Try the following program:

 

   10 POKE 766,1
   RUN
After program end, try pressing the arrow keys. In the "2.7" version, the arrow graphics are printed instead of moving the cursor.

 

Also, there are two "1.0" versions, one is copy-protected. I suspect that the copy-protected one is the original.

 

Edit: I'm going to test it with APE to see if that was where they were going. Of course DNSC says that JSR is jumping to an illegal address? whats at $01d0?

The stack...

Link to comment
Share on other sites

All these so called versions are getting a bit confusing. Wasn't there a cart based one and a disk based one?

the only two 'official' versions was version 1.0 (which is disk based) and version 2.0 which is cart and disk based (some added commands were on the disk). like I said 2.7 was probably a homebrew and looks like all they did was either consolidate and unprotected the 1.0 version to make it portable OR took 2.0 an merged in the supplemental disk of the extra commands to the ROM and turned it into an .exe. I have no idea where the 3.0 original origins came from. probably someone's attempt to fix some perceived problem in 2.7 (my guess).

So far I haven't had a issue with 2.7 which I run in MYIDEII.

Link to comment
Share on other sites

  • 3 weeks later...

what's the deal with XEX files as opposed to .exe files?

 

Because the world stupidly chose Microsoft products. DOS and Windows are morons that think the file extension identifies the contents of the file.

 

On the Atari .COM or .EXE is a matter of convention. An Atari executable program could be named anything.

On DOS/Windows .COM and .EXE mean executable programs.

 

So, to prevent DOS/Windows from being confused by Atari files people have taken to changing the file extension of Atari programs, because the Atari doesn't care.

  • Like 1
Link to comment
Share on other sites

Me personally, I don't worry about confusing an Atari executable with one for MS OS. On the Atari, I continue to use .EXE for general binary executables, and .COM for SpartaDOS external commands. I never have issues confusing between systems.

  • Like 2
Link to comment
Share on other sites

originally, in the MSDOS world, .com were small files (I believe less then 256k) and .exe were larger files. Personally I have continued the tradition in the Atari world with small utilities as .com and applications as .exe. I was out of the Atari world a while and just got back into it. I'll add .xex into the mix.

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