Memory map
The ATW800/2 memory-map
All services of the ATW800/2 are memory mapped. So, reading/writing to a specific address in memory, you can e.g. communicate with the Transputer(s) or draw to the screen. This is the memory map depending on the Atari system used
ATW800/2 | Mega-ST | Mega-STe | TT |
---|---|---|---|
VidMem | 0xFEC00000 | 0xFEA00000 | 0xFEC00000 |
SharedMem | 0xFEDF4000 | 0xFEBF4000 | 0xFEDF4000 |
ATWinfo | 0xFEDFDC00 | 0xFEBFDC00 | 0xFEDFDC00 |
CLUT shadow | 0xFEDFDE00 | 0xFEBFDE00 | 0xFEDFDE00 |
VDI caches | 0xFEDFE000 | Exa0xFEBFE000ple | 0xFEDFE000 |
FPGA LUT | 0xFEDFF000 | 0xFEBFF000 | 0xFEDFF000 |
FPGA Info | 0xFEDFF200 | 0xFEBFF200 | 0xFEDFF200 |
FPGA VTG | 0xFEDFF800 | 0xFEBFF800 | 0xFEDFF800 |
FPGA Blit | 0xFEDFF900 | 0xFEBFF900 | 0xFEDFF900 |
FPGA link | 0xFEDFFAC0 | 0xFEBFFAC0 | 0xFEDFFAC0 |
C011 Link | 0xFEFFFAC0 | 0xFEBFFA80 | 0xFEFFFAC0 |
CPLD version | 0xFEFFFAD8 | 0xFEBFFA98 | 0xFEFFFAD8 |
VidMem
This is where ATW800/2’s video memory starts. For the default firmware, this covers a range of 2 megabytes.
Serves for fast data exchange between Atari and the synthetic Transputer in parallel operation.
ATWInfo
An info structure, created by NVDI/XVDI. Helios, for example, can use it to calculate its video RAM or to exit a Transputer program in an orderly manner.
struct nanoxk_atwinfo { long kennung_a; /*[0] 'ATW8' -> 0x41545738 */ long kennung_b; /*[4] 'XVDI' -> 0x58564449 / 'NVDI' -> 0x4E564449 */ long version; /*[8] z.B '0100' -> 0x30313030 , bezogen auf die struktur, nicht die VDI-Version */ long version_fpga; /*[12] z.B '0106' -> 0x30313036 */ long vdi_memstart; /*[16] Startadresse Videomem für VDI */ long vdi_memsize; /*[20] von Atari genutzter Videomemory, meist vdi_stride * vdi_height * byteperpixel */ int vdi_vstride; /*[24] Anzahl bytes je Zeile */ int vdi_bpp; /*[26] bit per pixel 1(monochrom), 8, 15, 16 */ int vdi_width; /*[28] breite, welche VDI nutzt */ int vdi_height; /*[30] höhe, welche VDI nutzt */ int vtg[16]; /*[32] Schatten-Register VTG, wie sie VDI setzt, dienen für Reinit nach Transputerprogramm */ int endmagic; /*[64] beinhaltet 0x4711 Verfahren noch unbestimmt (crc?), soll verhindern, das korrupte daten genutzt werden */ int stuffing /*[66] wegen ausrichtung auf 32-Bit, erstmal auch auf 0x4711 setzen */ /* rest vorerst reserviert , bis Byte 511*/ };
CLUT shadow
This contains a shadow of the VDI color look-up table (CLUT). It needs to be kept up-to-date by the VDI. It’s important if the Transputer is used e.g as an accelerator for the Atari.
VDI caches
This can be used for e.g. fill patterns for VDI acceleration - currently only used by XVDI - total size: 4kB
FPGA LUT / VTG / Blit
These addresses provide means to control the video-output.
FPGA Link / C011 Link
These are the addresses which can be used to communicate with the virtual Transputer inside the FPGA or a real Transputer(s) plugged into the ATW800/2 TRAM sockets.
FPGA Info / CPLD Version
These addresses return information about the currently programmed firmware inside the FPGA and CPLD.