amos-professional/AMOSPro Sources/includes/hardware/cia.i
2020-04-26 02:58:13 +02:00

174 lines
4.4 KiB
OpenEdge ABL

IFND HARDWARE_CIA_I
HARDWARE_CIA_I SET 1
**
** $Filename: hardware/cia.i $
** $Release: 1.3 $
**
** registers and bits in the Complex Interface Adapter (CIA) chip
**
** (C) Copyright 1985,1986,1987,1988 Commodore-Amiga, Inc.
** All Rights Reserved
**
*
* _ciaa is on an ODD address (e.g. the low byte) -- $bfe001
* _ciab is on an EVEN address (e.g. the high byte) -- $bfd000
*
* do this to get the definitions:
* XREF _ciaa
* XREF _ciab
*
* cia register offsets
ciapra EQU $0000
ciaprb EQU $0100
ciaddra EQU $0200
ciaddrb EQU $0300
ciatalo EQU $0400
ciatahi EQU $0500
ciatblo EQU $0600
ciatbhi EQU $0700
ciatodlow EQU $0800
ciatodmid EQU $0900
ciatodhi EQU $0A00
ciasdr EQU $0C00
ciaicr EQU $0D00
ciacra EQU $0E00
ciacrb EQU $0F00
* interrupt control register bit numbers
CIAICRB_TA EQU 0
CIAICRB_TB EQU 1
CIAICRB_ALRM EQU 2
CIAICRB_SP EQU 3
CIAICRB_FLG EQU 4
CIAICRB_IR EQU 7
CIAICRB_SETCLR EQU 7
* control register A bit numbers
CIACRAB_START EQU 0
CIACRAB_PBON EQU 1
CIACRAB_OUTMODE EQU 2
CIACRAB_RUNMODE EQU 3
CIACRAB_LOAD EQU 4
CIACRAB_INMODE EQU 5
CIACRAB_SPMODE EQU 6
CIACRAB_TODIN EQU 7
* control register B bit numbers
CIACRBB_START EQU 0
CIACRBB_PBON EQU 1
CIACRBB_OUTMODE EQU 2
CIACRBB_RUNMODE EQU 3
CIACRBB_LOAD EQU 4
CIACRBB_INMODE0 EQU 5
CIACRBB_INMODE1 EQU 6
CIACRBB_ALARM EQU 7
* interrupt control register bit masks
CIAICRF_TA EQU (1<<0)
CIAICRF_TB EQU (1<<1)
CIAICRF_ALRM EQU (1<<2)
CIAICRF_SP EQU (1<<3)
CIAICRF_FLG EQU (1<<4)
CIAICRF_IR EQU (1<<7)
CIAICRF_SETCLR EQU (1<<7)
* control register A bit masks
CIACRAF_START EQU (1<<0)
CIACRAF_PBON EQU (1<<1)
CIACRAF_OUTMODE EQU (1<<2)
CIACRAF_RUNMODE EQU (1<<3)
CIACRAF_LOAD EQU (1<<4)
CIACRAF_INMODE EQU (1<<5)
CIACRAF_SPMODE EQU (1<<6)
CIACRAF_TODIN EQU (1<<7)
* control register B bit masks
CIACRBF_START EQU (1<<0)
CIACRBF_PBON EQU (1<<1)
CIACRBF_OUTMODE EQU (1<<2)
CIACRBF_RUNMODE EQU (1<<3)
CIACRBF_LOAD EQU (1<<4)
CIACRBF_INMODE0 EQU (1<<5)
CIACRBF_INMODE1 EQU (1<<6)
CIACRBF_ALARM EQU (1<<7)
* control register B INMODE masks
CIACRBF_IN_PHI2 EQU 0
CIACRBF_IN_CNT EQU (CIACRBF_INMODE0)
CIACRBF_IN_TA EQU (CIACRBF_INMODE1)
CIACRBF_IN_CNT_TA EQU (CIACRBF_INMODE0!CIACRBF_INMODE1)
*
* Port definitions -- what each bit in a cia peripheral register is tied to
*
* ciaa port A (0xbfe001)
CIAB_GAMEPORT1 EQU (7) * gameport 1, pin 6 (fire button*)
CIAB_GAMEPORT0 EQU (6) * gameport 0, pin 6 (fire button*)
CIAB_DSKRDY EQU (5) * disk ready*
CIAB_DSKTRACK0 EQU (4) * disk on track 00*
CIAB_DSKPROT EQU (3) * disk write protect*
CIAB_DSKCHANGE EQU (2) * disk change*
CIAB_LED EQU (1) * led light control (0==>bright)
CIAB_OVERLAY EQU (0) * memory overlay bit
* ciaa port B (0xbfe101) -- parallel port
* ciab port A (0xbfd000) -- serial and printer control
CIAB_COMDTR EQU (7) * serial Data Terminal Ready*
CIAB_COMRTS EQU (6) * serial Request to Send*
CIAB_COMCD EQU (5) * serial Carrier Detect*
CIAB_COMCTS EQU (4) * serial Clear to Send*
CIAB_COMDSR EQU (3) * serial Data Set Ready*
CIAB_PRTRSEL EQU (2) * printer SELECT
CIAB_PRTRPOUT EQU (1) * printer paper out
CIAB_PRTRBUSY EQU (0) * printer busy
* ciab port B (0xbfd100) -- disk control
CIAB_DSKMOTOR EQU (7) * disk motorr*
CIAB_DSKSEL3 EQU (6) * disk select unit 3*
CIAB_DSKSEL2 EQU (5) * disk select unit 2*
CIAB_DSKSEL1 EQU (4) * disk select unit 1*
CIAB_DSKSEL0 EQU (3) * disk select unit 0*
CIAB_DSKSIDE EQU (2) * disk side select*
CIAB_DSKDIREC EQU (1) * disk direction of seek*
CIAB_DSKSTEP EQU (0) * disk step heads*
* ciaa port A (0xbfe001)
CIAF_GAMEPORT1 EQU (1<<7)
CIAF_GAMEPORT0 EQU (1<<6)
CIAF_DSKRDY EQU (1<<5)
CIAF_DSKTRACK0 EQU (1<<4)
CIAF_DSKPROT EQU (1<<3)
CIAF_DSKCHANGE EQU (1<<2)
CIAF_LED EQU (1<<1)
CIAF_OVERLAY EQU (1<<0)
* ciaa port B (0xbfe101) -- parallel port
* ciab port A (0xbfd000) -- serial and printer control
CIAF_COMDTR EQU (1<<7)
CIAF_COMRTS EQU (1<<6)
CIAF_COMCD EQU (1<<5)
CIAF_COMCTS EQU (1<<4)
CIAF_COMDSR EQU (1<<3)
CIAF_PRTRSEL EQU (1<<2)
CIAF_PRTRPOUT EQU (1<<1)
CIAF_PRTRBUSY EQU (1<<0)
* ciab port B (0xbfd100) -- disk control
CIAF_DSKMOTOR EQU (1<<7)
CIAF_DSKSEL3 EQU (1<<6)
CIAF_DSKSEL2 EQU (1<<5)
CIAF_DSKSEL1 EQU (1<<4)
CIAF_DSKSEL0 EQU (1<<3)
CIAF_DSKSIDE EQU (1<<2)
CIAF_DSKDIREC EQU (1<<1)
CIAF_DSKSTEP EQU (1<<0)
ENDC ; HARDWARE_CIA_I