view defs/atari.d @ 2898:28ed72477814 lwtools-port

Dummy merge of default branch into lwtools hg -y merge --tool=internal:fail default hg revert --all --no-backup --rev . hg resolve -a -m This dummy merge discards any changes from the default branch so that the result is the same as what lwtools already had. When merging back to default branch later, the discarded changes will be discarded there also, so the result will be that the default branch will contain what the lwtools branch had before these merges. Only scripts/burst was "rescued" from default branch.
author Tormod Volden <debian.tormod@gmail.com>
date Sat, 11 Jan 2014 18:40:44 +0100
parents ca65720ee373
children 1c75a05d3304
line wrap: on
line source

               ifne      ATARI.D-1
ATARI.D        set       1

********************************************************************
* AtariDefs - NitrOS-9 System Definitions for the Atari XE/XL
*
* This is a high level view of the Atari XE/XL memory map as setup by
* NitrOS-9.
*
*     $0000----> ================================== 
*               |                                  |
*               |      NitrOS-9 Globals/Stack      |
*               |                                  |
*     $0500---->|==================================|
*               |                                  |
*               |               Atari              |
*  $0500-$08BF  |           Screen Memory          |
*               |              (40x24)             |
*               |                                  |
*               |----------------------------------|
*  $08C0-$08FF  |         ANTIC Display List       |
*     $9000---->|----------------------------------|
*               |                                  |
*                 . . . . . . . . . . . . . . . . .
*               |                                  |
*               |   RAM available for allocation   |
*               |       by NitrOS-9 and Apps       |
*               |                                  |
*                 . . . . . . . . . . . . . . . . .
*               |                                  |
*     $C000---->|==================================|
*               |                                  |
*  $C000-$CFFF  |               ROM                |
*               |                                  |
*     $D000---->|==================================|
*               |                                  |
*               |   XEGS Memory Mapped I/O Region  |
*               |(may differ in location on others)|
*               |                                  |
*     $D800---->|==================================|
*               |                                  |
*  $D800-$FFFF  |               ROM                |
*               |                                  |
*               |==================================|
*
* Note that ROM above becomes RAM if booting from DriveWire.
*
* Atari Hardware is documented here:
*   http://user.xmission.com/~trevin/atari/pokey_regs.html
*
* $Id$
*
* Edt/Rev  YYYY/MM/DD  Modified by
* Comment
* ------------------------------------------------------------------
*          2012/02/23  Boisy G. Pitre
* Started

               nam       AtariDefs
               ttl       NitrOS-9 System Definitions for the Atari XE/XL



**********************************
* Power Line Frequency Definitions
*
Hz50           equ       1                   Assemble clock for 50 hz power
Hz60           equ       2                   Assemble clock for 60 hz power
               IFNDEF    PwrLnFrq
PwrLnFrq       set       Hz60                Set to Appropriate freq
               ENDC


**********************************
* Ticks per second
*
               IFNDEF    TkPerSec
               ifeq      PwrLnFrq-Hz50
TkPerSec       set       50
               else      
TkPerSec       set       60
               endc      
               ENDC


*************************************************
*
* NitrOS-9 Level 1 Section
*
*************************************************

HW.Page        set       $FF                 Device descriptor hardware page


********************************************************************
* NitrOS-9 Memory Definitions for the Atari XE/XL
*
* The Atari's support chips have certain alignment restrictions for
* things like screen memory, display lists and character maps.  For this
* reason, we reserve some low memory for the screen.
*
* Screen memory range is $0500-$08FF (1K).  Of that, 40*24 (960) bytes
* are for the screen buffer and the remaining 64 bytes are for the
* ANTIC's Display List
G.Cols         equ       40
G.Rows         equ       24
G.ScrStart     equ       $0500
G.ScrEnd       equ       G.ScrStart+(G.Cols*G.Rows)

* The Character Set must be aligned to a 4K address.  We can really only
* guarnatee that in the Krn module, which is always at the end of RAM.  So
* for now, the character set is located at $F800
G.CharSetAddr  equ       $F800

* POKEY requires shadow registers.  We allocate them in the kernel's DP
* (Yes, we are stealing an existing variable that is so old it should be
*  removed from os9defs)
D.IRQENShdw    equ       $02               ; was D.WDBtDr
D.SKCTLShdw    equ       $03               ; was D.SWPage

* The clock interrupt is driven by the unmaskable NMI.  Therefore,
* the rbdw3 driver uses the DWIOSEMA flag in the D.ATARIFLAGS field as
* a signal, setting it before doing an DW operation and clearing it after.
* The clock ISR checks if this flag is set, and, if so, defers the OP_TIME
* command to the server.
DWIOSEMA       equ       %10000000


********************************************************************
* Atari XE/XL Hardware Definitions
*
* These were lifted from the Atari OS disassembly, and represents all
* of the hardware registers available on the Atari XE/XL
*


*************************************************
**	CTIA/GTIA Address Equates
CTIA           equ       $D000               ;CTIA/GTIA area

*	Read/Write Addresses
CONSOL         equ       CTIA+$1F            ;console switches and speaker control

*	Read Addresses
M0PF           equ       CTIA+$00            ;missle 0 and playfield collision
M1PF           equ       CTIA+$01            ;missle 1 and playfield collision
M2PF           equ       CTIA+$02            ;missle 2 and playfield collision
M3PF           equ       CTIA+$03            ;missle 3 and playfield collision

P0PF           equ       CTIA+$04            ;player 0 and playfield collision
P1PF           equ       CTIA+$05            ;player 1 and playfield collision
P2PF           equ       CTIA+$06            ;player 2 and playfield collision
P3PF           equ       CTIA+$07            ;player 3 and playfield collision

M0PL           equ       CTIA+$08            ;missle 0 and player collision
M1PL           equ       CTIA+$09            ;missle 1 and player collision
M2PL           equ       CTIA+$0A            ;missle 2 and player collision
M3PL           equ       CTIA+$0B            ;missle 3 and player collision

P0PL           equ       CTIA+$0C            ;player 0 and player collision
P1PL           equ       CTIA+$0D            ;player 1 and player collision
P2PL           equ       CTIA+$0E            ;player 2 and player collision
P3PL           equ       CTIA+$0F            ;player 3 and player collision

TRIG0          equ       CTIA+$10            ;joystick trigger 0
TRIG1          equ       CTIA+$11            ;joystick trigger 1

TRIG2          equ       CTIA+$12            ;cartridge interlock
TRIG3          equ       CTIA+$13            ;ACMI module interlock

PAL            equ       CTIA+$14            ;PAL/NTSC indicator

* Write Addresses
HPOSP0         equ       CTIA+$00            ;player 0 horizontal position
HPOSP1         equ       CTIA+$01            ;player 1 horizontal position
HPOSP2         equ       CTIA+$02            ;player 2 horizontal position
HPOSP3         equ       CTIA+$03            ;player 3 horizontal position

HPOSM0         equ       CTIA+$04            ;missle 0 horizontal position
HPOSM1         equ       CTIA+$05            ;missle 1 horizontal position
HPOSM2         equ       CTIA+$06            ;missle 2 horizontal position
HPOSM3         equ       CTIA+$07            ;missle 3 horizontal position

SIZEP0         equ       CTIA+$08            ;player 0 size
SIZEP1         equ       CTIA+$09            ;player 1 size
SIZEP2         equ       CTIA+$0A            ;player 2 size
SIZEP3         equ       CTIA+$0B            ;player 3 size

SIZEM          equ       CTIA+$0C            ;missle sizes

GRAFP0         equ       CTIA+$0D            ;player 0 graphics
GRAFP1         equ       CTIA+$0E            ;player 1 graphics
GRAFP2         equ       CTIA+$0F            ;player 2 graphics
GRAFP3         equ       CTIA+$10            ;player 3 graphics

GRAFM          equ       CTIA+$11            ;missle graphics

COLPM0         equ       CTIA+$12            ;player-missle 0 color/luminance
COLPM1         equ       CTIA+$13            ;player-missle 1 color/luminance
COLPM2         equ       CTIA+$14            ;player-missle 2 color/luminance
COLPM3         equ       CTIA+$15            ;player-missle 3 color/luminance

COLPF0         equ       CTIA+$16            ;playfield 0 color/luminance
COLPF1         equ       CTIA+$17            ;playfield 1 color/luminance
COLPF2         equ       CTIA+$18            ;playfield 2 color/luminance
COLPF3         equ       CTIA+$19            ;playfield 3 color/luminance

COLBK          equ       CTIA+$1A            ;background color/luminance

PRIOR          equ       CTIA+$1B            ;priority select
VDELAY         equ       CTIA+$1C            ;vertical delay
GRACTL         equ       CTIA+$1D            ;graphic control
HITCLR         equ       CTIA+$1E            ;collision clear


*************************************************
** POKEY Address Equates
POKEY          equ       $D200               ;POKEY area

*Read Addresses
POT0           equ       POKEY+$00           ;potentiometer 0
POT1           equ       POKEY+$01           ;potentiometer 1
POT2           equ       POKEY+$02           ;potentiometer 2
POT3           equ       POKEY+$03           ;potentiometer 3
POT4           equ       POKEY+$04           ;potentiometer 4
POT5           equ       POKEY+$05           ;potentiometer 5
POT6           equ       POKEY+$06           ;potentiometer 6
POT7           equ       POKEY+$07           ;potentiometer 7

ALLPOT         equ       POKEY+$08           ;potentiometer port state
KBCODE         equ       POKEY+$09           ;keyboard code
RANDOM         equ       POKEY+$0A           ;random number generator
SERIN          equ       POKEY+$0D           ;serial port input
IRQST          equ       POKEY+$0E           ;IRQ interrupt status
IRQST.BREAKDOWN equ       %10000000
IRQST.KEYDOWN  equ       %01000000
IRQST.SERINRDY equ       %00100000
IRQST.SEROUTNEEDED equ       %00010000
IRQST.SEROUTDONE equ       %00001000
IRQST.TIMER4   equ       %00000100
IRQST.TIMER2   equ       %00000010
IRQST.TIMER1   equ       %00000001

SKSTAT         equ       POKEY+$0F           ;serial port and keyboard status

* Write Addresses
AUDF1          equ       POKEY+$00           ;channel 1 audio frequency
AUDC1          equ       POKEY+$01           ;channel 1 audio control

AUDF2          equ       POKEY+$02           ;channel 2 audio frequency
AUDC2          equ       POKEY+$03           ;channel 2 audio control

AUDF3          equ       POKEY+$04           ;channel 3 audio frequency
AUDC3          equ       POKEY+$05           ;channel 3 audio control

AUDF4          equ       POKEY+$06           ;channel 4 audio frequency
AUDC4          equ       POKEY+$07           ;channel 4 audio control

AUDCTL         equ       POKEY+$08           ;audio control
STIMER         equ       POKEY+$09           ;start timers
SKRES          equ       POKEY+$0A           ;reset SKSTAT status
POTGO          equ       POKEY+$0B           ;start potentiometer scan sequence
SEROUT         equ       POKEY+$0D           ;serial port output
IRQEN          equ       POKEY+$0E           ;IRQ interrupt enable
IRQEN.BREAKDOWN equ       %10000000
IRQEN.KEYDOWN  equ       %01000000
IRQEN.SERINRDY equ       %00100000
IRQEN.SEROUTNEEDED equ       %00010000
IRQEN.SEROUTDONE equ       %00001000
IRQEN.TIMER4   equ       %00000100
IRQEN.TIMER2   equ       %00000010
IRQEN.TIMER1   equ       %00000001

SKCTL          equ       POKEY+$0F           ;serial port and keyboard control
SKCTL.FORECEBREAK equ       %10000000
SKCTL.SERMODECTRLMASK equ       %01110000
SKCTL.SERMODEOUT equ       %00100000
SKCTL.SERMODEIN  equ       %00010000
SKCTL.TWOTONEMODE equ       %00001000
SKCTL.FASTPOTSCAN equ       %00000100
SKCTL.KEYBRDSCAN equ       %00000010
SKCTL.KEYDEBOUNCE equ       %00000001


*************************************************
** PIA Address Equates
PIA            equ       $D300               ;PIA area

* Read/Write Addresses
PORTA          equ       PIA+$00             ;port A direction register or jacks 0 and 1
PORTB          equ       PIA+$01             ;port B direction register or memory control

PACTL          equ       PIA+$02             ;port A control
PBCTL          equ       PIA+$03             ;port B control

* PIA bit assignments for XEGS:
* bit 7 0 = Self-Test switched in, but only if OS Rom is also switched in
* bit 6 0 = Missile Command @ $A000 but ony if Basic Rom is switched out
* 
* bit 1 0 = Basic switched in
* bit 0 1 = OS Rom switched in, opposite behaviour for this bit vs all the others relating to Rom. 


*************************************************
** ANTIC Address Equates
ANTIC          equ       $D400               ;ANTIC area

* Read Addresses
VCOUNT         equ       ANTIC+$0B           ;vertical line counter
PENH           equ       ANTIC+$0C           ;light pen horizontal position
PENV           equ       ANTIC+$0D           ;light pen vertical position
NMIST          equ       ANTIC+$0F           ;NMI interrupt status

* Write Addresses
DMACTL         equ       ANTIC+$00           ;DMA control
CHACTL         equ       ANTIC+$01           ;character control
DLISTL         equ       ANTIC+$02           ;low display list address
DLISTH         equ       ANTIC+$03           ;high disply list address
HSCROL         equ       ANTIC+$04           ;horizontal scroll
VSCROL         equ       ANTIC+$05           ;vertical scroll
PMBASE         equ       ANTIC+$07           ;player-missle base address
CHBASE         equ       ANTIC+$09           ;character base address
WSYNC          equ       ANTIC+$0A           ;wait for HBLANK synchronization
NMIEN          equ       ANTIC+$0E           ;NMI enable
NMIRES         equ       ANTIC+$0F           ;NMI interrupt status reset


*************************************************
** Display List Equates
ADLI           equ       $80                 ;display list interrupt
AVB            equ       $40                 ;vertical blank
ALMS           equ       $40                 ;set screen data address
AVSCR          equ       $20
AHSCR          equ       $10
AJMP           equ       $01                 ;jump
AEMPTY1        equ       $00
AEMPTY2        equ       $10
AEMPTY3        equ       $20
AEMPTY4        equ       $30
AEMPTY5        equ       $40
AEMPTY6        equ       $50
AEMPTY7        equ       $60
AEMPTY8        equ       $70
AMODE2         equ       $02
AMODE3         equ       $03
AMODE4         equ       $04
AMODE5         equ       $05
AMODE6         equ       $06
AMODE7         equ       $07
AMODE8         equ       $08
AMODE9         equ       $09
AMODEA         equ       $0A
AMODEB         equ       $0B
AMODEC         equ       $0C
AMODED         equ       $0D
AMODEE         equ       $0E
AMODEF         equ       $0F

               endc