WonderWitch/FreyaBIOS/Timer: Difference between revisions
From WSdev Wiki
Jump to navigationJump to search
(Created page with "The Timer interrupt provides an abstraction layer for the WonderSwan's timers, as well as the on-cartridge RTC. == Types == === RTC fields === The RTC field indexes match the order of fields returned by the RTC chip. Note that FreyaBIOS transparently converts the values to and from BCD. {| class="wikitable" |- ! Index !! Data !! Format |- | 0 || Year || 0 - 99; 0 is assumed to be the year 2000. |- | 1 || Month || 1 - 12 |- | 2 || Date...") |
mNo edit summary |
||
Line 5: | Line 5: | ||
=== RTC fields === | === RTC fields === | ||
The RTC field indexes match the order of fields returned by the | The RTC field indexes match the order of fields returned by the S-3511A chip. Note that the values returned by FreyaBIOS are binary numbers rather than BCD numbers - they are transparently converted when communicating with the on-cartridge RTC. | ||
Note that FreyaBIOS transparently | |||
{| class="wikitable" | {| class="wikitable" |
Revision as of 15:19, 13 December 2024
The Timer interrupt provides an abstraction layer for the WonderSwan's timers, as well as the on-cartridge RTC.
Types
RTC fields
The RTC field indexes match the order of fields returned by the S-3511A chip. Note that the values returned by FreyaBIOS are binary numbers rather than BCD numbers - they are transparently converted when communicating with the on-cartridge RTC.
Index | Data | Format |
---|---|---|
0 | Year | 0 - 99; 0 is assumed to be the year 2000. |
1 | Month | 1 - 12 |
2 | Date (day of month) | 1 - 31 |
3 | Day of week | 0 - 6; 0 = Sunday, 1 = Monday, ..., 6 = Saturday |
4 | Hour | 0 - 23 |
5 | Minute | 0 - 59 |
6 | Second | 0 - 59 |
RTC struct
The RTC struct is a seven-byte memory structure, containing all RTC fields consecutively, taking up one unsinged byte each.
Interrupts
INT $16/AH=$00 - rtc_reset
- AH = $00
INT $16/AH=$01 - rtc_set_datetime
- AH = $01
- BX = Field
- CX = Value of field
INT $16/AH=$02 - rtc_get_datetime
- AH = $02
- BX = Field
Return:
- AX = Value of field
INT $16/AH=$03 - rtc_set_datetime_struct
- AH = $03
- DS:DX = Pointer to RTC struct
INT $16/AH=$04 - rtc_get_datetime_struct
- AH = $04
- DS:DX = Pointer to RTC struct
INT $16/AH=$05 - rtc_enable_alarm
- AH = $05
- BL = Hour
- BH = Minute
INT $16/AH=$06 - rtc_disable_alarm
- AH = $06
INT $16/AH=$07 - timer_enable
- AH = $07
- AL = Type (0 = HBlank, 1 = VBlank)
- BL = Reload mode (0 = one-shot, 1 = repeating)
- CX = Time, in lines or frames, to wait.
INT $16/AH=$08 - timer_disable
- AH = $08
- AL = Type (0 = HBlank, 1 = VBlank)
INT $16/AH=$09 - timer_get_count
- AH = $09
- AL = Type (0 = HBlank, 1 = VBlank)
Return:
- AX = The current counter value, from the time set in
timer_enable
down.