The Durango architecture
The Durango project attempts to make a 80s-style home computer based on readily available components: besides CPU and memory, everything else is just ordinary logic circuits (74xx series) -- no PIA, VIA, CRTC, ACIA etc.
Since the Durango·X computer was designed with modularity in mind, you may choose the desired set of features, or deal with alternative models:
- Durango·X: Fully featured computer with both HIRES and colour video modes.
- Durango·S: No HIRES, only colour video mode (128 x 128 px, 16 colours).
- Durango·R: No colour, just HIRES video mode (256 x 256 px, monochrome) and somewhat reduced component count.
- Durango·C: Simplified, GAL-based version of ·X with a lot less soldering. (under development)
- Durango Pocket: Handheld 2 MHz version, although not ~~fully~~ compatible. (under development)
As previously mentioned, this is a 80s-style home computer made out of readily available components, with no computer-specific chips besides CPU and RAM.
Main specs for the original (v1) version of this computer are:
- CPU: 65C02 @ 1.536 MHz
- ROM: on external cartridge, up to 32 KiB (more with bankswitching)
- RAM: 32 KiB (static)
- Expansion: parallel 8-bit bus with 16 addresses for keyboards, joysticks, storage devices...
- Video output: RGB SCART connector for a CCIR (PAL) TV, composite greyscale, composite PAL or Sync-on-green (options available).
- Controls: Power switch (optional),
- Connectivity: nanoLink input (synchronous serial) for reception of data & code.
- Footprint: 5.1" x 7", rounded corners (129.54 x 177.8 mm)
Improvements for v2
Both issues are essentially 100% compatible, but some improvements were made in v2:
- CPU: now at 1.75 MHz with switchable turbo mode (3.5 MHz)
- Video output: RGB SCART connector for a CCIR (PAL) TV or component video options (PAL and sync-on-green deprecated).
- Controls: Built-in power switch,
Otherwise, they are the same (including the footprint). v2.1 is essentially an alternative, improved routing for the v2 PCB, thus they're based on the very same schematic.
Whithin the same board, you may choose from several building options:
- Supported video modes:
- Colour only (Durango·S)
- HIRES only (Durango·R)
- Both modes (Durango·X, recommended option)
- Monitor output:
- SCART (colour via RGB, recommended option)
- Sync-on-green (v1) / Component video (v2+)
- Second audio/video output
- Composite encoding:
- Greyscale (standard in v1)
- Luminance (standard in v2+, recommended option)
- PAL encoder (for composite output, v1 only, NOT recommended)
- Piezo buzzer for audio
- Debug port
Together with the v2.1 issue, there is an alternative PCB for EIA (NTSC) 60 Hz countries. Main differences include an 1.57 MHz clock speed (3.15 with turbo option) and a button for momentarily displaying the bottom 64 rasters, which normally cannot be displayed on a 60 Hz screen.
In colour mode, Durango·X uses a 16-colour fixed palette, where 2 bits are assigned to green, while the remaining two bits of each nybble represent the red and blue values in full.
Durango·X has a switchable interrupt generator, working at a fixed rate of 250 Hz (4 ms period). These are not latched in any way, thus lost interrupts do not queue up.
This document deploys detailed information about the Durango·X computer operation.
Some modifications for improved functionality:
This is pretty simple: the 6502's
RDY line (which was intended to allow synchronisation
with slow memory chips) is not used in Durango·X, and simply connected to a
pull-up resistor (on RN1). But the pin itself is available in the
(J10), thus halting the CPU is as simple as grounding this pin; you might
use the ground pin (labelled
G) on the nearby nanoLink connector (J1).
No debouncing or any additional hardware is needed, and no ill effects are to be expected.
While most components on Durango·X are way faster than actually needed (except the U3 SRAM, because of multiplexing), overclocking this computer is not as simple as changing the oscillator (X1) as all video timings come from this, and would be thrown off otherwise.
issue v2+ includes a TURBO jumper as a built-in overclocking feature and doesn't need anything else, as long as your CPU and RAM are fast enough to cope with it!
v2 issue (for CCIR/PAL/50 Hz countries) is based on a 28 MHz crystal oscillator intended for perfectly square pixels; but being a relatively odd frequency, it could be difficult to source. An alternative oscillator (of a very common 25.175 MHz frequency) can be used instead, with a bit of rewiring. The newly designed EIA/NTSC/60 Hz version already uses this readily available oscillator.
Durango's 65C02 CPU can be replaced with a more advanced 65C816 -- an adapter board is needed because pinout and signals aren't fully compatible. From the software side, the 65C816 is able to run 65C02 with 100% compatibility, but not the opposite.
In order to get any performance improvement with the 65C816, specific native code must be used -- which won't be compatible with the regular 65C02. The computer's architecture also limits the memory map to 64 KiB, mirrored to fill the whole 16 MiB address space of the '816.
Since there's no ROM in Durango·X, it's essential the use of a cartridge with suitable firmware. In case you want to load software off an SD card, you'll need at least a cartridge with a suitable bootloader.
A readily available 36-pin edge connector is used for the cartridge. Most cartridge boards can be fitted inside a Commodore 64 cartridge box.
Height constraints inside the C64 cartridge preclude the use of sockets for the cartridge's ICs.
Basic cartridge to supply a ROM (8 - 64 KiB, up to 32 KiB simultaneously). It's a very small and inexpensive board but won't fit inside a C64 cartridge.
This Development Cartridge is able to supply a 16 KiB ROM, but sports 32 KiB of shadow RAM which can be loaded from the supplied SD card interface and be used to emulate ROM, for maximum convenience. This board is very tall and, once again, won't fit inside a C64 cartridge.
The so-called ShadowRAM cartridge is the same but, thanks to the use of Surface Mount Devices and a pluggable SD card reader, reduced in size, so it does actually fit inside a C64 cartridge. Otherwise, it's functionally identical to the devCart, although it allows to access up to 32 KiB of ROM.
Bankswitching was a common technique in the 8-bit era, extending beyond the 64 KiB addressing limit. With bigger EPROM/EEPROM/Flash chips (128 KiB - 1 MiB) available in a still hobbyist-friendly DIP-32 package, we developed a board that fits inside a C64 cartridge and splits the ROM into 16 or 32 KiB banks which are switched by software (bank size is configurable via a jumper)
The whole cartridge space is swapped when switching banks so, in case you're switching from the ROM code itself, care must be taken.
Another bankswitching cartridge is not controlled by software, but triggers a counter
RESET signal. Once again configurable for 16 or 32 KiB banks, allows
the combination of several software titles in one single cartridge.
A newly designed cartridge which allows the use of almost any EPROM/EEPROM/Flash on 24, 28 or 32-pin package, from 2 KiB to 1 MiB. It also includes options for both bankswitching and a Programmable Sound Generator like the one available as a riser card (see below), with improved audio output. Fits inside a standard C64 cartridge, as well.
These boards go between a regular cartridge and the Durango·X computer, passing thru all signals but adding extra functionality. As of December 2023 they are:
- Extra sound capabilities with the SN76489A Programmable Sound Generator.
- A breakout board for easier probing of all of the cartridge's signals.
Veracruz cartridge format
Veracruz will be a much more advanced 65C816-based computer with huge memory and built-in firmware, although extendable thru cartridges with a new 44-pin format. However, it will be possible to fit a Durango (36-pin) cartridge into Veracruz's 44-pin slot, although actual compatibility is unknown. Will physically fit inside a C64 cartridge as well.
Durango·X has some ports for peripheral connection:
This is an input port, simply connected to the
IRQ interrupt lines
thru discrete open collector drivers. Its main use is to form a synchronous serial port
to receive code from a Raspberry Pi via its GPIO pins.
nanoLink is also the name of a communications protocol (under development) which, by adding a suitable output port, will allow data transfers between Durangos.
This is the main Peripheral Bus with inexpensive IDC-16 connectors, allowing daisy-chaining up to 16 devices.
This keyboard is based on the ZX Spectrum layout and matrix, and is indeed electrically compatible. However, no single-key commands are available, and it has been adapted to support Spanish characters.
Extended keyboard (under development)
An improved, separate keyboard for more comfortable typing.
Thanks to the versatility of the IOx Peripheral Bus, several devices have been developed -- with many more to come!
Allows intercommunication between Durangos.
FastSPI & I2C
Experimental board with much faster SPI for improved SD card performance. Now with an I2C port as well.
A semi-intelligent keyboard that never materialised, but did set some standards. Used for a Raspberry Pi-based keyboard emulator, might be considered as a bidirectional paralell port.
Similar to the above, but with non-latching input. Jumper-selected pin directions.
Mechanically speaking, sidecar devices are boards that fit on Durango's left side. Electrically, is just another IOx port with a different connector (2x8 pin socket).
SD + RTC
This is essentially the FastSPI board in the sidecar form factor. The built-in I2C port allows the connection of an inexpensive Real Time Clock, particularly useful when dealing with storage devices.
Things not necessarily computer-related, but they can account for a better experience:
A Minstrel-inspired board with bigger, clearer silkscreen atop the keyboard.
Component Video output
Compatibility with modern TVs lacking the SCART connector!
This accessory allows Durango·X (or almost any 6502-based computer) the use of a much more powerful 65C816 CPU, albeit limited to the usual 64 KiB address space.