Welcome, Guest. Please login or register.

Author Topic: ABasic  (Read 4281 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline olsen

Re: ABasic
« on: September 03, 2010, 09:28:27 AM »
Quote from: ferrellsl;577464
I'm looking for a copy of ABasic.  It's the version of BASIC that shipped on the Amiga Workbench Extras Disk v1.0.  This version of BASIC was written by Metacomco and isn't related to the AmigaBASIC written by Microsoft.

Does anyone know where I can get ABasic or an ADF of Extras Disk?  Googled around for quite a while and found the patches that enable it to work under KS/WB 2.0 or greater, but no luck finding ABasic itself.

As far as I know ABasiC shipped only with the very, very first Workbench disk sets. At the time Microsoft's AmigaBASIC was not ready to ship, so Commodore went with Metacomco's offering as a stop-gap measure.

From what I remember, ABasiC was not quite of the same quality and power as AmigaBASIC. For example, AmigaBASIC had a full-screen editor for entering your programs, but ABasiC only had a line editor. There was no support for calling operating system functions through the .fd file offsets, etc.

So if you don't manage to find it, you are not actually missing that much ;-)

Um, after some more digging, here's some bonus info: ABasiC came out of Tenchstar, Ltd. "BASIC 68000", and unlike Microsoft's AmigaBASIC, ABasiC was written almost entirely in 'C', with some assembly language code to aid it.

As for Microsoft AmigaBASIC, I believe that it may have been a P-Code interpreter for the actual BASIC implementation. The Amiga platform-specific portions of it were written in plain assembly language, which would have been hard to justify if the remainder of the AmigaBASIC implementation were written in 'C'. It would explain why AmigaBASIC was often so surprisingly slow, and why it didn't work on a machine with a 32 bit address space. I suspect that the P-Code interpreter came from the Apple Macintosh BASIC Microsoft wrote, which would explain the 32 bit address space issues.
« Last Edit: September 03, 2010, 11:04:02 AM by olsen »
 

Offline olsen

Re: ABasic
« Reply #1 on: September 03, 2010, 01:36:00 PM »
Quote from: Hattig;577510
I believe that Microsoft thought it was a good idea to store some state in the upper 8 bits of the address of a variable in AmigaBasic, which naturally broke on any CPU with a 32-bit bus where those bits became significant.


This was a common practice on the Apple Macintosh operating system, which used the top 8 bits of each memory manager handle address to store information about the handle.

Of course, the fun only lasted until Apple built a machine with a 32 bit address bus. Rather than updating the software, they "crippled" the machine to have the topmost 8 bits of each address ignored. The operating system took much longer to fix...

Anyway, this strange practice of playing with the topmost 8 bits of addresses is what lead me to believe that core of AmigaBASIC is a P-Code interpreter, with all the bad habits of its origin migrated to the Amiga.
 

Offline olsen

Re: ABasic
« Reply #2 on: September 04, 2010, 07:41:49 PM »
Quote from: Kronos;577753
@olsen

Weren't there also some really really early Amiga-includes that defined APTR as 24bit ?


I think that was something different. There's something like a "macro opcode language" in exec which could be used to save space when initializing library and device data structures. Instead of writing code to do that, you'd set up a list of opcodes with information detailing what to modify and where. One of these opcodes dealt with pointers, and the pointer type was only 24 bits wide.