Jump to content

Memory map: Difference between revisions

From GeekDotWiki
No edit summary
No edit summary
 
Line 32: Line 32:
| ||  ||  ||  
| ||  ||  ||  
|-
|-
| C011 Link|| 0xFFFAC0|| 0xBFFA80|| 0xFEFFFAC0
| C011 Link|| 0xFFFAC0|| 0xDFFA80|| 0xFEFFFAC0
|-
|-
| CPLD version|| 0xFFFAD8|| 0xBFFA98|| 0xFEFFFAD8
| CPLD version|| 0xFFFAD8|| 0xDFFA98|| 0xFEFFFAD8


|}
|}

Latest revision as of 18:30, 12 May 2025


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

As of April 2025
ATW800/2 Mega-ST Mega-STe TT
VidMem 0xC00000 0xA00000 0xFEC00000
SharedMem 0xDF4000 0xBF4000 0xFEDF4000
ATWinfo 0xDFDC00 0xBFDC00 0xFEDFDC00
CLUT shadow 0xDFDE00 0xBFDE00 0xFEDFDE00
VDI caches 0xDFE000 0xBFE000 0xFEDFE000
FPGA LUT 0xDFF000 0xBFF000 0xFEDFF000
FPGA Info 0xDFF200 0xBFF200 0xFEDFF200
FPGA VTG 0xDFF800 0xBFF800 0xFEDFF800
FPGA Blit 0xDFF900 0xBFF900 0xFEDFF900
FPGA link 0xDFFAC0 0xBFFAC0 0xFEDFFAC0
C011 Link 0xFFFAC0 0xDFFA80 0xFEFFFAC0
CPLD version 0xFFFAD8 0xDFFA98 0xFEFFFAD8
VidMem

This is where ATW800/2’s video memory starts. For the default firmware, this covers a range of 2 megabytes.

SharedMem

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 , struct version, *NOT* VDI-version */
  long version_fpga;    /*[12] z.B '0106' -> 0x30313036  */
  long vdi_memstart;    /*[16] Startaddress videomem for VDI  */
  long vdi_memsize;     /*[20] Videomemory used by Atari, often vdi_stride * vdi_height * byteperpixel  */
  int  vdi_vstride;     /*[24] # of bytes per line  */
  int  vdi_bpp;         /*[26] bit per pixel 1(monochrome), 8, 15, 16  */
  int  vdi_width;       /*[28] width used by VDI */
  int  vdi_height;      /*[30] hight used by VDI */
  int  vtg[16];         /*[32] shadow VTG register, as set by VDI - used for re-init after running a Transputer program */
  int  endmagic;        /*[64] currently 0x4711 - prevents using corrupted data */
  int  stuffing         /*[66] alignment to 32-Bit, currently also 0x4711 */
  /* everything else until byte 511 is currently reserved */
 };
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.