	IFND	HARDWARE_CIA_I
HARDWARE_CIA_I	EQU	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
