misc/include/rtc.equ
	.nlist
  .ifndef __rtc_equ__
__rtc_equ__	equ	1

;----------------------------------------------------------------
;
;	RP5C15 RTC
;
;----------------------------------------------------------------

;----------------------------------------------------------------
;レジスタバンク0
;----------------------------------------------------------------

;秒カウンタ
;	00~59 (BCD)
RTC_0_ONE_SECOND	equ	$00E8A001	;bit3-0  1秒カウンタ
RTC_0_TEN_SECONDS	equ	$00E8A003	;bit2-0  10秒カウンタ

;分カウンタ
;	00~59 (BCD)
RTC_0_ONE_MINUTE	equ	$00E8A005	;bit3-0  1分カウンタ
RTC_0_TEN_MINUTES	equ	$00E8A007	;bit2-0  10分カウンタ

;時カウンタ
;	00~31 (BCD)
;	           0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
;	12時間計  00 01 02 03 04 05 06 07 08 09 10 11 20 21 22 23 24 25 26 27 28 29 30 31 (BCD)
;	24時間計  00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 (BCD)
RTC_0_ONE_HOUR		equ	$00E8A009	;bit3-0  1時カウンタ
RTC_0_TEN_HOURS		equ	$00E8A00B	;bit1    12時間計のとき12時カウンタ(0=AM,1=PM)
						;        24時間計のとき20時カウンタ
						;bit0    10時カウンタ

;曜日カウンタ
;	0~6
;	7日でオーバーフローする日カウンタ
;	日カウンタと同時に初期化する必要があり、日カウンタと同時にカウントアップする
;	0~6のどれが日曜日なのかは初期化したときに決まる
;	X68000では0=日曜日で初期化されるが、RTC側で0=日曜日と決まっているわけではない
RTC_0_DAY_OF_WEEK	equ	$00E8A00D	;bit2-0  曜日カウンタ

;日カウンタ
;	01~31 (BCD)。01=1日
;	年カウンタが4の倍数になっているかどうかとは関係なく、閏年カウンタが0のときに2月を29日までカウントする
;	閏年カウンタ  月カウンタ  01 02 03 04 05 06 07 08 09 10 11 12
;	      0                   31 29 31 30 31 30 31 31 30 31 30 31
;	      1       日カウンタ  31 28 31 30 31 30 31 31 30 31 30 31
;	      2         の上限    31 28 31 30 31 30 31 31 30 31 30 31
;	      3                   31 28 31 30 31 30 31 31 30 31 30 31
RTC_0_ONE_DAY		equ	$00E8A00F	;bit3-0  1日カウンタ
RTC_0_TEN_DAYS		equ	$00E8A011	;bit1-0  10日カウンタ

;月カウンタ
;	01~12 (BCD)。01=1月
RTC_0_ONE_MONTH		equ	$00E8A013	;bit3-0  1月カウンタ
RTC_0_TEN_MONTHS	equ	$00E8A015	;bit0    10月カウンタ

;年カウンタ
;	00~99 (BCD)
;	ただの12ヶ月カウンタ
;	閏年カウンタと同時に初期化する必要があり、閏年カウンタと同時にカウントアップする
;	00が西暦何年なのかは初期化したときに決まる
;	X68000では00=1980年で初期化されるが、RTC側で00=1980年と決まっているわけではない
RTC_0_ONE_YEAR		equ	$00E8A017	;bit3-0  1年カウンタ
RTC_0_TEN_YEARS		equ	$00E8A019	;bit3-0  10年カウンタ

;----------------------------------------------------------------
;レジスタバンク1
;----------------------------------------------------------------

;CLKOUTセレクタ
;	0~7。0=点灯,1=16384Hz,2=1024Hz,3=128Hz,4=16Hz,5=1Hz,6=1/64Hz,7=消灯
;	X68000ではRP5C15のCLKOUT信号がTIMER-LEDに接続されており、このレジスタはTIMER-LEDの状態を制御するために使われている
;	IOCS _ALARMMODやIOCS _ALARMSETでアラームを許可したとき、0が書き込まれてTIMER-LEDが点灯する
;	IOCS _ALARMMODでアラームを禁止したとき、7が書き込まれてTIMER-LEDが消灯する
;	アラームで起動したとき、5が書き込まれてTIMER-LEDが点滅する
;	KRAMD.SYSは転送開始時と転送終了時に7をEORすることでTIMER-LEDをRAMディスクのアクセスランプにしている
;	#1000ではCLKOUTがMFPのGPIP5にも接続されることになっていたが、X68000では接続されていない
RTC_1_CLKOUT		equ	$00E8A001	;bit2-0  CLKOUTセレクタ

;アジャスト
;	1=秒を29捨30入する
RTC_1_ADJUST		equ	$00E8A003	;bit0    アジャスト

;アラームレジスタ
;	1分カウンタ~10日カウンタがアラーム1分レジスタ~アラーム10日レジスタとすべて一致したときアラーム出力が始まる
;	アラームリセット後に一度も書き込まれていないアラームレジスタはdon't careで常に一致していると見なされる
;	アラームリセットすると全項目がdon't careになりアラーム出力が始まってしまうので、
;	通常はアラーム出力をOFFにしてからアラームリセットする
RTC_1_ONE_MINUTE	equ	$00E8A005	;bit3-0  アラーム1分レジスタ
RTC_1_TEN_MINUTES	equ	$00E8A007	;bit2-0  アラーム10分レジスタ
RTC_1_ONE_HOUR		equ	$00E8A009	;bit3-0  アラーム1時レジスタ
RTC_1_TEN_HOURS		equ	$00E8A00B	;bit2-0  アラーム10時レジスタ
RTC_1_DAY_OF_WEEK	equ	$00E8A00D	;bit2-0  アラーム曜日レジスタ
RTC_1_ONE_DAY		equ	$00E8A00F	;bit3-0  アラーム1日レジスタ
RTC_1_TEN_DAYS		equ	$00E8A011	;bit1-0  アラーム10日レジスタ

;12時間計/24時間計セレクタ
;	0~1。0=12時間計,1=24時間計
RTC_1_TWENTY_FOUR	equ	$00E8A015	;bit0    12時間計/24時間計セレクタ

;閏年カウンタ
;	0~3。0=今年が閏年,1=3年後が閏年,2=2年後が閏年,3=来年が閏年
;	4年でオーバーフローする年カウンタ
;	年カウンタと同時に初期化する必要があり、年カウンタと同時にカウントアップする
;	曜日カウンタと違ってRTC側で0=閏年と決まっている
;	年カウンタが4の倍数になっているかどうかとは関係なく、閏年カウンタが0のときに2月を29日までカウントする
RTC_1_LEAP_YEAR		equ	$00E8A017	;bit1-0  閏年カウンタ

;----------------------------------------------------------------
;バンク0/1共通
;----------------------------------------------------------------

;モードレジスタ
RTC_MODE		equ	$00E8A01B	;bit3    0=秒以後のカウンタ停止,1=計時開始
						;bit2    0=アラーム出力OFF,1=アラーム出力ON
						;bit0    0=バンク0,1=バンク1
RTC_MODE_CLOCK_BIT	equ	     3
RTC_MODE_CLOCK_MASK	equ	%00001000
RTC_MODE_ALARM_BIT	equ	      2
RTC_MODE_ALARM_MASK	equ	%00000100
RTC_MODE_BANK_BIT	equ	        0
RTC_MODE_BANK_MASK	equ	%00000001

;テストレジスタ(write-only)
RTC_TEST		equ	$00E8A01D	;bit3    1=1年カウンタに16384Hzを入力する
						;bit2    1=1日カウンタに16384Hzを入力する
						;bit1    1=1分カウンタに16384Hzを入力する
						;bit0    1=1秒カウンタに16384Hzを入力する
RTC_TEST_YEAR_BIT	equ	     3
RTC_TEST_YEAR_MASK	equ	%00001000
RTC_TEST_DAY_BIT	equ	      2
RTC_TEST_DAY_MASK	equ	%00000100
RTC_TEST_MINUTE_BIT	equ	       1
RTC_TEST_MINUTE_MASK	equ	%00000010
RTC_TEST_SECOND_BIT	equ	        0
RTC_TEST_SECOND_MASK	equ	%00000001

;リセットレジスタ(write-only)
RTC_RESET		equ	$00E8A01F	;bit3    0=1Hz ON
						;bit2    0=16Hz ON
						;bit1    1=秒以前の分周段リセット
						;bit0    1=アラームリセット
RTC_RESET_1HZ_BIT	equ	     3
RTC_RESET_1HZ_MASK	equ	%00001000
RTC_RESET_16HZ_BIT	equ	      2
RTC_RESET_16HZ_MASK	equ	%00000100
RTC_RESET_CLOCK_BIT	equ	       1
RTC_RESET_CLOCK_MASK	equ	%00000010
RTC_RESET_ALARM_BIT	equ	        0
RTC_RESET_ALARM_MASK	equ	%00000001

  .endif  ;__rtc_equ__
	.list