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