7

I found some Ada compilers for CP/M machines but no luck for 6502-based C64/Apple II/BBC Micro. I'm not sure if Abacus Ada on C64 exists or how much a subset it implements for Ada.

There is, though, an Ada inspired Cowgol, and an Ada95 compiler targeting ANSI C as an intermediate language.

Is there really any implementation of a Ada compiler/cross-compiler/interpreter for 6502? Link:

1
  • You might find a cross compiler but no native compiler that will compile anything like a reasonable Ada program. My university created one of the first Ada compilers for DOS but it wasn't complete and it needed 4Mb of RAM.
    – JeremyP
    Commented Feb 6, 2023 at 8:58

1 Answer 1

3

There is an Ada for the 6502 for the Commodore 64 but it is sold out at The Computer Bargain Store: Abacus Software for Commodore 64 & 128. It looks like they once had a used copy but sold it. The Ada Training Course is still available for $69.

If you are interested in other languages that generate efficient 6502 code or are similar to Ada, try these:

The most efficient compiler is likely Action! for the Atari 8-bit computers. It's syntax is derived from ALGOL so is a bit like Ada. It doesn't have FP built in but I believe there is an FP library available.

Another efficient 6502 compiler I've seen is Betterworking's Power C for the C64 which seems to be only 40% slower than assembly, but it is only a partial implementation of C and not very good for more than small projects. Abacus' Super C is a more complete implementation but is only 25% the speed of Power C.

The closest thing to Ada would be Pascal, such as KYAN Pascal but the Commodore 64 version is 30% slower than Power C. It is also available for the Atari 8-bit computers and the Apple II.

PROMAL for the C64 is twice as fast as KYAN Pascal. PROMAL is like C except it's syntax is more like Python, although Python didn't come along until later.

3
  • 1
    PROMOL seems like an interesting language, with some features that make it convenient to write constructs which can be processed efficiently. Something like *(int*)((unsigned char*)intArray + offset) = 0x1234;, using offsets that count up by sizeof (int), can on many platforms yield vastly more efficient code than intArray[index] with an index that counts by one, but the required syntax is nasty. By contrast, if memory serves, PROMOL has an operator for just that purpose.
    – supercat
    Commented Feb 3, 2023 at 17:54
  • I used Action! on the Atari when it first came out. It was a pleasure to use - nice IDE, fast compiler, fast code. Almost like having C. I still have the cartridge.
    – mannaggia
    Commented Feb 8, 2023 at 19:39
  • Action!'s source code was released a few years ago and some bug fixes were made. There was talk on AtariAge about making a stand-alone version that doesn't require the cartridge and of making some enhancements to it.
    – Tim Locke
    Commented Feb 9, 2023 at 13:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .