Languages to create Durango software
Assembly language is, in other words, the only machine code that the 65C02 CPU understands; but instead of dealing with binary or hexadecimal codes, each opcode (including the 65C02 extensions) is represented by an abbreviation (a.k.a. mnemonic) to make things easier (or, at least, less difficult) to human beings.
In order to translate the source code (a text file with the desired mnemonics and their operands) into the binary code to be executed by the CPU, an assembler program is recommended; although it's possible to manually translate mnemonics into the equivalent sequence of bytes, and "poke" them into memory thru a simple monitor utility, the use of an assembler is way easier.
Unlike modern CPUs, the 65C02 was intended to be programmed in assembly by humans, thus the _Programmer's model is quite simple, and there are no intrinsics to be considered at all.
Assembly source code files usually bear a
.s extension. Most of the assembly code
for the Durango Project can be assembled with André Fachat's
XA65 cross assembler
(GitHub repository). However, for simple routines
and learning purposes, the more limited miniMoDA may be used
in situ as well.
Since this language is natively understood by the CPU, it's potentially the MOST efficient and powerful way, in both memory usage and, especially, execution speed. On the other hand, debugging and development may be harsher; but with all the tools we supply, both for Durango itself and for the host computer, this is less of an issue.
BASIC (for Beginner's All-purpose Symbolic Instruction Code) was, by far and large, the most popular language back to the 8-bit home-computer era, to which Durango·X plays homage. In use since 1964, it makes programming quite simple and accesible to newcomers and non-technical people (much like Python does today), even if it's far from being the best in code structure and, especially, execution speed, as this is an interpreted language, thus every sentence is translated into machine code on the fly.
This is the first (and as of December 2023, the only one) port of BASIC for the Durango·X computer. Developed at 6502.org by the late Lee Davidson, it's a barebones, portable version of the 6502 MS-BASIC dialect (the de facto standard in many 8-bit computers, especially Commodore); but our port adds support for Durango·X graphics, colour and sound plus LOAD and SAVE capabilities, both for the Virtual Serial Port if under Perdita emulation, or even on an actual SD card on real hardware with any supported storage interface (devCart, FastSPI...). A plug-in architecture makes supporting new storage devices an easy task.
Unlike most BASICs of the day, which saved programs in a tokenised form, our EhBASIC port saves and load in ASCII form for easier interaction with modern computers.
It's definitely a quite complex project, but you can have a look at the source code if so desired (in constant development, may be moved).
Allegedly the best dialect of this language, originally developed by Sophie Wilson for the BBC's ambitious computer education project. However, this is not yet ported to the Durango architecture, but we're willing to do so, as soon as possible. Contributions welcome!
A very nice IDE for this language from a more recent era, originally developed for the Atari ST range of computers. Once again, this is not yet ported to Durango, and definitely looks like a really ambitious project, but quite attractive as well. As always, contributions are welcome!
A popular system's programming language (and the reason behind UNIX's popularity) which is credited with fast execution plus all the advantages of a compiled language. Even if it's a bit overshadowed nowadays by more user friendly alternatives, it's a reasonable compromise of easiness of programming and execution efficiency, halfway between the fast, but hard assembly and the friendly, but slow BASIC.
This is one of the very few C compilers with 6502 CPU suport. Although the originally targeted machines were popular computers from the 8-bit era, we are developing Durango·X support, thru an user-friendly DurangoLib library.
Of course, we aren't limited to these languages; as with any other computer systems, all kind of languages can be ported to Durango·X, although sometimes its limited resources could be an issue.
There are strong plans to port LOGO to the Durango·X computer, for educational purposes.
There's even a proof-of-concept of a Python port, although no further work has been done.