Memory Map

Differences Atari 400/800 - 1200XL - 600/800XL

Page 0#

addresshexaddressNAMEdescriptionOS
0,1$0000,$0001LINZBS A
0$0000LINFLG X
1$0001NGFLAG X
2,3$0002,$0003CASINI
4,5$0004,$0005RAMLO
6$0006TRAMSZ A
6$0006TRNSMZ X
7$0007TSTDAT A
7$0007TSTDAT X
8$0008WARMST 
9$0009BOOT? 
10,11$000A,$000BDOSVEC 
12,13$000C,$000DDOSINI
14,15$000E,$000FAPPMHI
16$0010POKMSK 
17$0011BRKKEY
18-20$0012-$0014RTCLOK 
21,22$0015,$0016BUFADR 
23$0017ICCOMT 
24,25$0018,$0019DSKFMS 
26,27$001A,$001BDSKUTL
28$001CPTIMOT A
29$001DPBPNT A
30$001EPBUFSZ A
31$001FPTEMP A
28-31$001C-$001FABUFPT X
32$0020ICHIDZ
33$0021ICDNOZ
34$0022ICCOMZ
35$0023ICSTAZ
36,37$0024,$0025ICBALZ,ICBAHZ
38,39$0026,$0027ICPTLZ,ICPTHZ
40,41$0028,$0029ICBLLZ,ICBLHZ
42$002AICAX1Z
43$002BICAX2Z
44,45$002C,$002DICAX3Z,ICAX4Z
46$002EICAX5Z
47$002FICAX6Z
48$0030STATUS
49$0031CHKSUM
50,51$0032,$0033BUFRLO,BUFRHI
52,53$0034,$0035BFENLO,BFENHI
54$0036CRETRY A
55$0037DRETRY A
54,55$0036,$0037LTEMP X
56$0038BUFRFL
57$0039RECVDN
58$003AXMTDON
59$003BCHKSNT
60$003CNOCKSM
61$003DBPTR
62$003EFTYPE
63$003FFEOF
64$0040FREQ
65$0041SOUNDR
66$0042CRITIC
67-73$0043-$0049FMZSPG
67,68$0043,$0044ZBUFP
69,70$0045,$0046ZDRVA
71,72$0047,$0048ZSBA
73$0049ERRNO
74$004ACKEY A
75$004BCASSBT A
74,75$004A,$004BZCHAIN X
76$004CDSTAT
77$004DATRACT
78$004EDRKMSK
79$004FCOLRSH
80$0050TEMP
81$0051HOLD1
82$0052LMARGN
83$0053RMARGN
84$0054ROWCRS
85,86$0055,$0056COLCRS
87$0057DINDEX
88,89$0058,$0059SAVMSC
90$005AOLDROW
91,92$005B,$005COLDCOL
93$005DOLDCHR
94,95$005E,$005FOLDADR
96$0060NEWROW A
96,97$0060,$0061FKDEF X
97,98$0061,$0062NEWCOL A
98$0062PALNTS X
99$0063LOGCOL
100,101$0064;$0065ADRESS
102,103$0066,$0067MLTTMP
104,105$0068,$0069SAVADR
106$006ARAMTOP
107$006BBUFCNT
108,109$006C,$006DBUFSTR
110$006EBITMSK
111$006FSHFAMT
112,113$0070,$0071ROWAC
114,115$0072,$0073COLAC
116,117$0074,$0075ENDPT
118$0076DELTAR
119,120$0077,$0078DELTAC
121$0079ROWINC A
122$007ACOLINC A
121,122$0079,$007AKEYDEF X
123$007BSWPFLG
124$007CHOLDCH
125$007DINSDAT
126,127$007E,$007FCOUNTR
128,129$0080,$0081LOMEM
130,131$0082,$0083VNTP
132,133$0084,$0085VNTD
134,135$0086,$0087VVTP
136,137$0088,$0089STMTAB
138,139$008A,$008BSTMCUR
140,141$008C,$008DSTARP
142,143$008E,$008FRUNSTK
144,145$0090,$0091MEMTOP
146-202$0092-$00CA reserved for BASIC ROM
186,187$00BA,$00BBSTOPLN
195$00C3ERRSAVE
201$00C9PTABW
203-207$00CB-$00CF unused by BASIC and ASSEMBLER
208,209$00D0,$00D1 unused by BASIC
210,211$00D2,$00D3 reserved for BASIC or cartridge use
212-217$00D4-$00D9FR0Floating point register zero; holds a six-byte internal form of the FP number
218-223$00D1-$00DFFREFP extra register
224-229$00E0-$00E5FR1Floating point register one; holds a six-byte internal form of the FP number as does FR0
230-235$00E6-$00EBFR2FP register two
236$00ECFRXFP spare register
237$00EDEEXPThe value of E (the exponent)
238$00EENSIGNThe sign of the FP number
239$00EFESIGNThe sign of the exponent
240$00F0FCHRFLGThe first character flag
241$00F1DIGRTThe number of digits to the right of the decimal
242$00F2CIXCharacter (current input) index. Used as an offset to the input text buffer pointed to by INBUFF below.
243,244$00F3,$00F4INBUFFInput ASCII text buffer pointer
245,246$00F5,$00F6ZTEMP1Temporary register
247,248$00F7,$00F8ZTEMP4Temporary register
249,250$00F9,$00FAZTEMP3Temporary register
251$00FBRADFLGAlso called DEGFLG. When 0 all functions are performed in radians; when set to 6, they are done in degrees
252,253$00FC,$00FDFLPTRPoints to the user's FP number
254,255$00FE,$00FFFPTR2Pointer to the user's second FP operation.
^

Page 1#

adresshexaddressNAMEdescriptionOS
256-511$0100-$01FF The OS/DOS/BASIC stack
^

Page 2 #

addresshexaddressNAMEdescriptionOS
512,513$0200,$0201VDSLSTVector to Display List Interrupt routine
514,515$0202,$0203VPRCED
516,517$0204,$0205VINTER
518,519$0206,$0207VBREAK
520,521$0208,$0209VKEYBD
522,523$020A,$020BVSERIN
524,525$020C,$020DVSEROR
526,527$020E,$020FVSEROC
528,529$0210,$0211VTIMR1
530,531$0212,$0213VTIMR2
532,533$0214,$0215VTIMR4
534,535$0216,$0217VIMIRQ
536,537$0218,$0219CDTMV1
538,539$021A,$021BCDTMV2
540,541$021C,$021DCDTMV3
542,543$021E,$021FCDTMV4
544,545$0220,$0221CDTMV5
546,547$0222,$0223VVBLKIVector to Vertical Blank I_MMEDIATE Routine
548,549$0224,$0225VVBLKDVector to Vertical Blank D_EFERRED Routine
550,551$0226,$0227CDTMA1
552,553$0228,$0229CDTMA2
554$022ACDTMF3
555$022BSRTIMR
556$022CCDTMF4
557$022DINTEMP
558$022ECDTMF5
559$022FSDMCTLShadow of DMACTL
560,561$0230,$0231SDLSTL,SDLSTHShadow Pointer to Display List
562$0232SSKCTL
563$0233SPARE A
563$0233LCOUNT X
564$0234LPENHShadow Light Pen Horizontal Value
565$0235LPENVShadow Light Pen Vertical Value
566,567$0236,$0237BRKKYBreak key Interrupt vectorOS B/X?
568,569$0238,$0239 two spare bytesA
568,569$0238,$0239VPIRQ X
570$023ACDEVIC
571$023BCCOMND
572$023CCAUX1
573$023DCAUX2
574$023ETEMP
575$023FERRFLG
576$0240DFLAGS
577$0241DESECT
578,579$0242,$0243BOOTAD
580$0244COLDST
581$0245 spare A
581$0245RECLEN X
582$0246DSKTIM
583-622$0247-$026ELINBUF A
583$0247PDVMSK X
584$0248SHPDVS X
585$0249PDIMSK X
586,587$024A,$024BRELADR X
588$024CPPTMPA X
589$024DPPTMPX X
590-618$024E-$026A reserved X
619$026BCHSALT X
620$026CVSFLAG X
621$026DKEYDIS X
622$026EFINEFine Scroll FlagX
623$026FGPRIORShadow of PRIOR
624$0270PADDL0Shadow Paddle 0
625$0271PADDL1Shadow Paddle 1
626$0272PADDL2Shadow Paddle 2
627$0273PADDL3Shadow Paddle 3
628$0274PADDL4Shadow Paddle 4 (nur 400/800)
629$0275PADDL5Shadow Paddle 5 (nur 400/800)
630$0276PADDL6Shadow Paddle 6 (nur 400/800)
631$0277PADDL7Shadow Paddle 7 (nur 400/800)
632$0278STICK0Shadow Stick 0
633$0279STICK1Shadow Stick 1
634$027ASTICK2Shadow Stick 2 (nur 400/800)
635$027BSTICK3Shadow Stick 3 (nur 400/800)
636$027CPTRIG0Shadow Paddle Trigger 0
637$027DPTRIG1Shadow Paddle Trigger 1
638$027EPTRIG2Shadow Paddle Trigger 2
639$027FPTRIG3Shadow Paddle Trigger 3
640$0280PTRIG4Shadow Paddle Trigger 4 (nur 400/800)
641$0281PTRIG5Shadow Paddle Trigger 5 (nur 400/800)
642$0282PTRIG6Shadow Paddle Trigger 6 (nur 400/800)
643$0283PTRIG7Shadow Paddle Trigger 7 (nur 400/800)
644$0284STRIG0Shadow Stick Trigger 0
645$0285STRIG1Shadow Stick Trigger 1
646$0286STRIG2Shadow Stick Trigger 2 (nur 400/800)
647$0287STRIG3Shadow Stick Trigger 3 (nur 400/800)
648$0288CSTAT A
648$0288HIBZTE A
649$0289WMODE
650$028ABLIM
651-655$028B-$028F unusedA
651$028BIMASK X
652,653$028C,$028DJVECK X
654,655$028E,$028FNEWADR X
656$0290TXTROW
657,658$0291,$0292TXTCOL
659$0293TINDEX
660,661$0294,$0295TXTMSC
662-667$0296-$029BTXTOLD
668$029CTMPX1 A
668$029CCRETRY X
669$029DHOLD3
670$029ESUBTMP
671$029FHOLD2
672$02A0DMASK
673$02A1TMPLBT
674$02A2ESCFLG
675-689$02A3-$02B1TABMAP
690-693$02B2-$02B5LOGMAP
694$02B6INVFLG
695$02B7FILFLG
696$02B8TMPROW
697,698$02B9,$02BATMPCOL
699$02BBSCRFLG
700$02BCHOLD4
701$02BDHOLD5 A
701$02BDDRETRY X
702$02BESHFLOK
703$02BFBOTSCR
704$02C0PCOLR0Color of Player 0 and Missile 0 both
705 $02C1 PCOLR1 Color of Player 1 and Missile 1 both
706 $02C2 PCOLR2 Color of Player 3 and Missile 2 both
707 $02C3 PCOLR3 Color of Player 3 and Missile 3 both
708 $02C4 COLOR0 Color Register 0 both
709 $02C5 COLOR1 Color Register 1 both
710 $02C6 COLOR2 Color Register 2 both
711 $02C7 COLOR3 Color Register 3 both
712 $02C8 COLOR4 Color Register 4 both
713,714$02C9,$02CARUNADR X
715,716$02CB,$02CCHIUSED X
717,718$02CD,$02CEZHIUSE X
719,720$02CF,$02D0GBYTEA X
721,722$02D1,$02D2LOADAD X
723,724$02D3,$02D4ZLOADA X
725,726$02D5,$02D6DSCTLN X
727,728$02D7,$02D8ACMISR X
729$2D9KRPDEL X
730$2DAKEYREP X
731$2DBNOCLIK X
732$02FCHELPFG X
733$02DDDMASAV X
734$02DEPBPNT X
735$02DFPBUFSZ X
736,737$02E0,$02E1RUNAD both
738,739$02E2,$02E3INITAD both
740$02E4RAMSIZ both
741,742$02E5,$02E6MEMTOP both
743,744$02E7,$02E8MEMLO both
745$02E9HNDLOD X
746-749$02EA-$02EDDVSTAT both
750,751$02EE,$02EFCBAUDL,CBAUDH both
752$02F0CRSINHCursor visibilityboth
753$02F1KEYDEL both
754$02F2CH1 both
755$02F3CHACT both
756$02F4CHBASPointer to base address (high byte) of charsetboth
757$02F5NEWROW X
758,759$02F6,$02F7NEWCOL X
760$02F8ROWINC X
761$02F9COLINC X
762$02FACHAR both
763$02FBATACHR both
764$02FCCH both
765$02FDFILDAT both
766$02FEDSPFLG both
767$02FFSSFLAG both
^

Page 3#

adresshexaddressNAMEdescriptionOS
768$0300DDEVIC both
769$0301DUNIT both
770$0302DCOMND both
771$0303DSTATS both
772,773$0304,$0305DBUFLO,DBUFHI both
774$0306DTIMLO both
775$0307DUNUSE both
776,777$0308,$0309DBYTLO,DBYTHI both
778,779$030A,$030BDAUX1,DAUX2 both
780,781$030C,$030DTIMER1 both
782$030EADDCOR A
782$030EJMPERS X
783$030FCASFLG both
784,785$0310,$0311TIMER2 both
786,787$0312,$0313TEMP1 both
788$0314TEMP2 A
788$0314PTIMOT X
789$0315TEMP3 both
790$0316SAVIO both
791$0317TIMFLG both
792$0318STACKP both
793$0319TSTAT both
794-831$031A-$033FHATABS38 Bytes Handler Address Tableboth
829$033DPUPBT1 X
830$033EPUPBT2 X
831$033FPUPBT3 X
832-847$0340-$034FIOCB0 both
848-863$0350-$035FIOCB1 both
864-879$0360-$036FIOCB2 both
880-895$0370-$037FIOCB3 both
896-911$0380-$038FIOCB4 both
912-927$0390-$039FIOCB5 both
928-943$03A0-$03AFIOCB6 both
944-959$03B0-$03BFIOCB7 both
960-999$03C0-$03E7PRNBUF both
1000-1020$03E8-$03FC reserved bufferboth
1000$03E8SUPERFFlag for function keys1200XL
1001$03E9CKEY X
1002$03EACASSBT X
1003$03EBCARTCK X
1004$03ECDEERF X
1005-1015$03ED-$03F7ACMVAR X
1016$03F8BASICF X
1017$03F9MINTLK X
1018$03FAGINTLK X
1019,1020$3FB,$3FCCHLINK X
^

Page 4#

adresshexaddressNAMEdescriptionOS
1021-1151$03FD-$047FCASBUF both
1152-1279$0480-$04FF 128 free bytes 
^

Page 5#

addresshexaddressNAMEdescriptionOS
1280-1405$0500-$057D  
1406$057ELBPR1LBUFF prefix one
1407$057FLBPR2LBUFF prefix two
1408-1535$0580-$05FFLBUFFBASIC line Buffer
1504$05E0PLYARGPolynominal arguments
1510-1515$05E6-$05EBFPSCRFloating Point scratch pad use
1516-1535$05EC-$05FFFPSCR1Floating Point scratch pad use
^

Page 6#

addresshexaddressNAMEdescriptionOS
1536-1791$0600-$06FF "Page 6" free for userboth
^

Right Cartridge (B) 8K#

addresshexaddressNAMEdescriptionOS
32768-40959$8000-$9FFF
40954$9FFA Cartridge Start Address low
40955$9FFB Cartridge Start Address high
40956$9FFC Cartridge present?
40957$9FFD Option Byte
40958$9FFE Cartridge Initialization Address low
40959$9FFF Cartridge Initialization Address high
^

Left Cartridge (A) 8K#

addresshexaddressNAMEdescriptionOS
40960-49151$A000-$BFFF
43234$A8E2 shows revision of BASIC
49146$BFFA Cartridge Start Address low
49147$BFFB Cartridge Start Address high
49148$BFFC Cartridge present?
49149$BFFD Option Byte
49150$BFFE Cartridge Initialization Address low
49151$BFFF Cartridge Initialization Address high
^

GTIA (CTIA)#

adresshexaddressNAMEdescriptionOS
53248$D000HPOSP0,M0PF both
53249$D001HPOSP1,M1PF both
53250$D002HPOSP2,M2PF both
53251$D003HPOSP3,M3PF both
53252$D004HPOSM0,P0PF both
53253$D005HPOSM1,P1PF both
53254$D006HPOSM2,P2PF both
53255$D007HPOSM3,P3PF both
53256$D008SIZEP0,M0PL both
53257$D009SIZEP1,M1PL both
53258$D00ASIZEP2,M2PL both
53259$D00BSIZEP3,M3PL both
53260$D00CSIZEM,P0PL both
53261$D00DGRAFP0,P1PL both
53262$D00EGRAFP1,P2PL both
53263$D00FGRAFP2,P3PL both
53264$D010GRAFP3,TRIG0 both
53265$D011GRAFM,TRIG1 both
53266$D012COLPM0,TRIG2 both
53267$D013COLPM1,TRIG3 both
53268$D014COLPM2,PAL both
53269$D015COLPM3 both
53270$D016COLPF0 both
53271$D017COLPF1 both
53272$D018COLPF2 both
53273$D019COLPF3 both
53274$D01ACOLBK both
53275$D01BPRIOR both
53276$D01CVDELAY both
53277$D01DGRACTL both
53278$D01EHITCLR both
53279$D01FCONSOL both
53280-53503$D020-$D0FF repeats 53248-53279, do not use 
^
53504-53759$D100-$D1FF reserved for future useB
^

POKEY#

addresshexaddressNAMEdescriptionOS
53760$D200AUDF1,POT0 
53761$D201AUDC1,POT1
53762$D202AUDF2,POT2
53763$D203AUDC2,POT3
53764$D204AUDF3,POT4
53765$D205AUDC3,POT5
53766$D206AUDF4,POT6
53767$D207AUDC4,POT7
53768$D208AUDCTL,ALLPOT
53769$D209STIMER,KBCODE
53770$D20ASKREST,RANDOM
53771$D20BPOTGO
53772$D20C unused
53773$D20DSEROUT,SERIN
53774$D20EIRQEN,IRQST
53775$D20FSKCTL,SKSTAT
53776-54015$D210-$D2FF repeats 53760-53775, no special use
^

PIA#

addresshexaddressNAMEdescriptionOS
54016$D300PORTA  
54017$D301PORTB
54018$D302PACTL
54019$D303PBCTL
54020-54271$D304-$D3FF repeats 54016-54019, no special use 
^

ANTIC#

adresshexaddressNAMEdescriptionOS
54272$D400DMACTL
54273$D401CHACTL 
54274,54275$D402,$D403DLISTL,DLISTH
54276$D404HSCROL
54277$D405VSCROL
54278$D406 unused
54279$D407PMBASE
54280$D408 unused
54281$D409CHBASE
54282$D40AWSYNC
54283$D40BVCOUNT
54284$D40CPENH
54285$D40DPENV
54286$D40ENMIEN
54287$D40FNMIST,NMIRES
54288-54303$D410-$D41F repeats 54272-54287
^
addresshexaddressNAMEdescriptionOS
$D500-$D5FF Any read or write to an address in this range enables the cartridge control line CCNTL on the cartridge interface (same as ATARI 400 and ATARI 800)B
^
addresshexaddressNAMEdescriptionOS
$D600-$D6FF reserved for future useB
^
addresshexaddressNAMEdescriptionOS
$D700-$D7FF reserved for future useB
^

OS ROM#

addresshexaddressNAMEdescriptionOS
55296$D800AFPASCII to Floating Point (FP) conversion
55526$D8E6FASCFP value to ASCII conversion
55722$D9AAIFPInteger to FP conversion
55762$D9D2FPIFP to integer conversion
55876$DA44ZFR0Clear FR0 at 212 to 217 ($d$-$DB) by setting all bytes to zero
55878$DA46ZF1Clear the FP number from FR1, locations 224 to 229 ($E0 to $E5), by setting all bytes to zero.
55904$DA60FSUBFP subtract routine, the value in FR0 minus the value in FR1.
55910$DA66FADDFP addition routine; FR0 plus FR1.
56027$DADBFMULFP multiplication routine; FR0 times FR1.
56104$DB28FDIVFP division routine; FR0 divided by FR1.
56640$DD40PLYEVLFP polynomial evaluation.
56713$DD89FLD0RLoad the FP number into FR0 from the 6502 X,Y registers.
56717$DD8DFLD0PLoad the FP number into FR0 from user routine, using FLPTR at 252 ($FC).
56728$DD98FLD1RLoad the FP number into FR1 from the 6502 X,Y registers.
56732$DD9CFLD1PLoad the FP number into FR1 from user program, using FLPTR.
56743$DDA7FSTORStore the FP number into the 6502 X,Y registers from FR0.
56747$DDABFSTOPStore the FP number from FR0, using FLPTR.
56758$DDB6FMOVEMove the FP number from FR0 to FR1.
56768$DDC0EXPFP base e exponentiation.
56780$DDCCEXP10FP base 10 exponentiation.
57037$DECDLOGFP natural logarithm.
57041$DED1LOG10FP base 10 logarithm.
    
57344$E000 Standard ATARI character set, beginning with punctuations and numbers
57600$E100 capital letters
57856$E200 special graphics
58112$E300 lower case letters
58367$E3FF end of ATARI standard charset
    
58368$E400EDITRVScreen editor (E:) entry point table
58348$E410SCRENVDisplay handler (television screen) (S:)
58400$E420KEYBDVJump Table for Keyboard driver "K:"OSA/OSB/XL
58416$E430PRINTVPrinter handler (P:)
58432$E440CASETVCassette handler (C:)
58448$E450DISKIVDisk handler initialization vector, initialized to 60906 ($EDEA)
58451$E453DSKINVDisk handler (interface) entry; checks the disk status. Initialized to 60912 ($EDF0).
58454$E456CIOV
58457$E459SIOV
58460$E45CSETVBV
58463$E45FSYSVBV
58466$E462XITVBVExit from the VBLANK routine
58469$E465SIOINVSIO utility initialisation, OS use only
58472$E468SENDEVSend enable routine, OS use only
58475$E46BINTINVInterrupt handler initialisation, OS use only
58478$E46ECIOINVCIO utility initialisation, OS Use only
58481$E471BLKBDVBlackbaord Mode Entry
58484$E474WARMSVWarm Start Vector
58487$E477COLDSVCold Start Vector
58490$E47ARBLOKVreads block from C:
58493$E47DCSOPIVopens channel for C:
58496$E480PUPDIVVector for Self TestX
58499$E483SLFTSV X
58502$E486PHENTV X
58505$E489PHULNV X
58508$E48CPHINIV X
58511$E48FGPDVV X
to be completed ...
59310$E7AESYSVBLX
59345$E7D1SYSVBLA
65527$FFF7 can be used to identify OS version
65528$FFF8CHKSUNcan be used to identify OS version
65530,65531$FFFA,$FFFBPVECT