===========#==#=======#===============================================#=====
----------------------|TT MFP Vectors |-----
===========#==#=======#===============================================#=====
$00000140.L|RW|TTMFP00|GPI 0 |TT
$00000144.L|RW|TTMFP01|GPI 1 |TT
$00000148.L|RW|TTMFP02|SCC-DMA Controller |TT
$0000014C.L|RW|TTMFP03|Ring Indicator SCC B |TT
$00000150.L|RW|TTMFP04|Timer D (RS232 baud rate generator) |TT
$00000154.L|RW|TTMFP05|Timer C (SCC TRxCB) |TT
$00000158.L|RW|TTMFP06|Reserved, GPI 4 |TT
$0000015C.L|RW|TTMFP07|SCSI DMA Controller |TT
$00000160.L|RW|TTMFP08|Timer B |TT
$00000164.L|RW|TTMFP09|Send Error |TT
$00000168.L|RW|TTMFP10|Send buffer empty |TT
$0000016C.L|RW|TTMFP11|Receive error |TT
$00000170.L|RW|TTMFP12|Receive buffer full |TT
$00000174.L|RW|TTMFP13|Timer A |TT
$00000178.L|RW|TTMFP14|TT Clock (MC146818A) |TT
$0000017C.L|RW|TTMFP15|TT-SCSI Drive Controller NCR 5380 |TT
===========#==#=======#===============================================#=====
----------------------|SCC Interrupt Vectors |-----
===========#==#=======#===============================================#=====
$00000180.L|RW| - |SCC Channel B Transmit Buffer Empty |SCC
$00000184.L|RW| - |SCC Channel B External Status Change |SCC
$00000188.L|RW| - |SCC Channel B Receive Character Available |SCC
$0000018C.L|RW| - |SCC Channel B Special Receive Condition |SCC
$00000190.L|RW| - |SCC Channel A Transmit Buffer Empty |SCC
$00000194.L|RW| - |SCC Channel A External Status Change |SCC
$00000198.L|RW| - |SCC Channel A Receive Character Available |SCC
$0000019C.L|RW| - |SCC Channel A Special Receive Condition |SCC
$000001A0.L|RW| - |Reserved |SCC
...........|RW| - |........ |SCC
$000001BC.L|RW| - |Reserved |SCC
===========#==#=======#===============================================#=====
----------------------|Exception Crash Save Area |-----
===========#==#=======#===============================================#=====
$00000380.L|RW|PRCLIVE|Validates crash page, if $12345678 |
$00000384. |RW|PRCDREG|Saved registers D0-D7 (32 bytes) |
$000003A4. |RW|PRCAREG|Saved registers A0-A7 (32 bytes) |
$000003C4.L|RW|PRCENUM|Vector number of crash exception |
$000003C8.L|RW|PRC_USP|Saved user stack pointer |
$000003CC. |RW|PRC_STK|16 words from exception stack (32 bytes) |
===========#==#=======#===============================================#=====
----------------------|GEM Vectors |-----
===========#==#=======#===============================================#=====
$00000400.L|RW|ETVTIMR|etv_timer - GEM event timer vector |
$00000404.L|RW|ETVCRIT|etv_critic - GEM critical error handler |
$00000408.L|RW|ETVTERM|etv_term - GEM program termination vector |
$0000040C.L|RW|ETVXTRA|etv_xtra - 5 additional vectors, unused |
===========#==#=======#===============================================#=====
----------------------|System Variables |-----
===========#==#=======#===============================================#=====
$00000420.L|RW|MEMVALD|memvalid - memory conf valid if $752019F3 |
$00000424.B|RW|MEMCTRL|memcntlr - copy of $FFFF8001 %____xxxx |
| | | Bank 0 size 00:128k,01:512k,10:2Mb-------+||| |
| | | Bank 1 size 00:128k,01:512k,10:2Mb---------+| |
$00000426.L|RW|RESVALD|resvalid - resvector valid if $31415926 |
$0000042A.L|RW|RESVECT|resvector - system reset bailout vector |
$0000042E.L|RW|PHYSTOP|phystop - physical top of ST RAM |
$00000432.L|RW|_MEMBOT|_membot - bottom of TPA (user memory) |
$00000436.L|RW|_MEMTOP|_memtop - top of TPA (user memory) |
$0000043A.L|RW|MEMVAL2|memval2 - validates memcntlr if $237698AA |
$0000043E.W|RW|_FLOCK |flock - if <>0, VBL floppy routine is off |
$00000440.W|RW|SEEKRAT|seekrate - floppy step rate %______xx |
| | | 0:6ms 1:12ms 2:2ms 3:3ms (WD1772)----------+| |
| | | NOTE: these are WD1772 values. The WD1770 |
| | | uses 6, 12, 20 and 30 ms for the same |
| | | encodings; do not carry values between them. |
$00000442.W|RW|TIMR_MS|_timr_ms - system timer calibration, ms |
$00000444.W|RW|FVERIFY|_fverify - if <>0, verify floppy writes |
$00000446.W|RW|BOOTDEV|_bootdev - default boot drive |
$00000448.W|RW|PALMODE|palmode - 0:NTSC(60Hz), else PAL(50Hz) |
$0000044A.B|RW|DEFSHFT|defshiftmd - default video resolution |
$0000044C.B|RW|SSHIFTM|sshiftmd - copy of $FFFF8260 %_____xxx |
| | | 0:low 1:medium 2:high resolution----------+|| |
$0000044E.L|RW|V_BAS_A|_v_bas_ad - screen base address |
$00000452.W|RW|_VBLSEM|vblsem - if >0, VBL routine is executed |
$00000454.W|RW|_NVBLS |nvbls - number of VBL routines |
$00000456.L|RW|VBLQUEU|_vblqueue - pointer to list of VBL routines |
$0000045A.L|RW|COLORPT|colorptr - palette to load at next VBL |
$0000045E.L|RW|SCREENP|screenpt - video RAM base for next VBL |
$00000462.L|RW|VBCLOCK|_vbclock - count of VBL interrupts |
$00000466.L|RW|FRCLOCK|frclock - count of unblocked VBL interrupts |
$0000046A.L|RW|HDVINIT|hdv_init - hard disk initialisation vector |
$0000046E.L|RW|SWV_VEC|swv_vec - resolution change vector |
$00000472.L|RW|HDV_BPB|hdv_bpb - hard disk Getbpb vector |
$00000476.L|RW|HDV_RW |hdv_rw - hard disk read/write vector |
$0000047A.L|RW|HDVBOOT|hdv_boot - hard disk boot vector |
$0000047E.L|RW|HDVMEDC|hdv_mediach- hard disk media change vector |
$00000482.W|RW|CMDLOAD|_cmdload - if <>0, load COMMAND.PRG at boot |
$00000484.B|RW|CONTERM|conterm - console attributes %____SBRK |
| | | Bconin returns shift status--------------+||| |
| | | System bell 0:off,1:on--------------------+|| |
| | | Key repeat 0:off,1:on----------------------+| |
| | | Key click 0:off,1:on------------------------+ |
$00000486.L|RW|TRP14RT|trp14ret - trap #14 return address, unused |
$0000048A.L|RW|CRITRET|criticret - critical error handler return |
$0000048E. |RW|_THEMD |themd - first memory descriptor (16 bytes)|
$0000049E.L|RW|___MD |_md - space for additional descriptor |
$000004A2.L|RW|SAVPTR |savptr - pointer to BIOS register save area|
$000004A6.W|RW|_NFLOPS|nflops - number of floppy drives attached |
$000004A8.L|RW|CONSTAT|con_state - vector for screen output |
$000004AC.W|RW|SAVEROW|save_row - temporary cursor line storage |
$000004AE.L|RW|SAVCTXT|sav_context- exception processing save area |
$000004B2. |RW|_BUFL |bufl - 2 GEMDOS buffer list heads(8bytes)|
$000004BA.L|RW|_HZ_200|hz_200 - 200 Hz system clock counter |
$000004BE.L|RW|THE_ENV|the_env - default environment string |
$000004C2.L|RW|DRVBITS|_drvbits - bit map of mounted drives |
| | | Bit 0 = drive A, through to bit 25 = drive Z |
$000004C6.L|RW|DSKBUFP|_dskbufp - pointer to 1K disk buffer |
$000004CA.L|RW|AUTOPAT|_autopath - pointer to autoexec path |
$000004CE. |RW|VBLLIST|_vbl_list - 8 VBL routine pointers (32 bytes) |
$000004EE.W|RW|DUMPFLG|_dumpflg - screen dump flag |
$000004F0.W|RW|_PRTABT|prtabt - printer abort flag |
$000004F2.L|R-|SYSBASE|_sysbase - pointer to start of OS |
$000004F6.L|RW|SHELL_P|_shell_p - pointer to shell |
$000004FA.L|R-|_END_OS|end_os - pointer to end of OS in RAM |
$000004FE.L|R-|EXEC_OS|exec_os - pointer to OS entry point |
$00000502.L|RW|SCR_DMP|scr_dump - pointer to screen dump routine |
$00000506.L|RW|PRTSTAT|prt_stat - pointer to prv_lsto |
$0000050A.L|RW|PRT_VEC|prt_vec - pointer to prv_lst |
$0000050E.L|RW|AUXSTAT|aux_stat - pointer to prv_auxo |
$00000512.L|RW|AUX_VEC|aux_vec - pointer to prv_aux |
$00000516.L|RW|PUN_PTR|pun_ptr - pointer to pun_info if AHDI |
$0000051A.L|RW|MEMVAL3|memval3 - memory conf valid if $5555AAAA |
$0000051E. |RW|BCONSTA|bconstat_vec - 8 input status vectors(32 bytes)|
$0000053E. |RW|BCONIN |bconin_vec - 8 input vectors (32 bytes) |
$0000055E. |RW|BCOSTAT|bcostat_vec - 8 output status vectors(32bytes)|
$0000057E. |RW|BCONOUT|bconout_vec - 8 output vectors (32 bytes) |
| | | Indexed by BIOS device: 0 PRT, 1 AUX, 2 CON, |
| | | 3 MIDI, 4 IKBD, 5 RAW, 6 and 7 unused on most|
| | | machines. |
$0000059E.W|R-|LNGFRAM|_longframe - if <>0, CPU uses long stack frames|
$000005A0.L|R-|P_COOKI|_p_cookie - pointer to cookie jar |1.06+
$000005A4.L|RW|_RAMTOP|ramtop - top of alternative (Fast) RAM |TT,F
$000005A8.L|RW|RAMVALD|ramvalid - validates ramtop if $1357BD13 |TT,F
$000005AC.L|RW|BELHOOK|bell_hook - vector for system bell |1.06+
$000005B0.L|RW|KCLHOOK|kcl_hook - vector for keyclick |1.06+
===========#==#=======#===============================================#=====
----------------------|STBook |-----
===========#==#=======#===============================================#=====
$00000889.B|RW|LCDPSHD|Shadow of LcdPowerControl ($FFFF827F) |STB
===========#==#=======#===============================================#=====
Magic validation values, collected for reference:
memvalid $420 = $752019F3
resvalid $426 = $31415926
memval2 $43A = $237698AA
memval3 $51A = $5555AAAA
ramvalid $5A8 = $1357BD13
proc_lives $380 = $12345678
flock ($43E) must be non-zero before any direct FDC or DMA access, so
the VBL floppy routine does not deselect the drive or disturb the DMA
mid-transfer. Clear it again afterwards.
Sources: addresses and labels from Atari's own TOS source
(th-otto/tos1x, common/tosvars.inc), cross-checked against EmuTOS
(bios/tosvars.S) and The Atari Compendium Appendix B. Sizes are
inferred from address spacing and the Compendium; the byte-versus-word
calls on memcntlr, defshiftmd and sshiftmd are judgement rather than
documented. Read-only marks reflect convention, not hardware
enforcement.
Back to Memory Map for Atari ST,STE,TT and Falcon