MCPcopy Create free account
hub / github.com/CE-Programming/CEmu / rtc_read

Function rtc_read

core/realclock.c:70–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

68}
69
70static uint8_t rtc_read(const uint16_t pio, bool peek) {
71 uint8_t index = pio & 0xFF;
72 uint8_t bit_offset = (index & 3) << 3;
73
74 uint8_t value = 0;
75 (void)peek;
76
77 switch (index) {
78 case 0x00:
79 value = (rtc.control & 128) ? rtc.readSec : rtc.holdSec;
80 break;
81 case 0x04:
82 value = (rtc.control & 128) ? rtc.readMin : rtc.holdMin;
83 break;
84 case 0x08:
85 value = (rtc.control & 128) ? rtc.readHour : rtc.holdHour;
86 break;
87 case 0x0C: case 0x0D:
88 value = read8((rtc.control & 128) ? rtc.readDay : rtc.holdDay, bit_offset);
89 break;
90 case 0x10:
91 value = rtc.alarmSec;
92 break;
93 case 0x14:
94 value = rtc.alarmMin;
95 break;
96 case 0x18:
97 value = rtc.alarmHour;
98 break;
99 case 0x20:
100 value = rtc.control;
101 break;
102 case 0x24:
103 value = rtc.writeSec;
104 break;
105 case 0x28:
106 value = rtc.writeMin;
107 break;
108 case 0x2C:
109 value = rtc.writeHour;
110 break;
111 case 0x30: case 0x31:
112 value = read8(rtc.writeDay, bit_offset);
113 break;
114 case 0x34:
115 value = rtc.interrupt;
116 break;
117 case 0x3C: case 0x3D: case 0x3E: case 0x3F:
118 value = read8(rtc.revision, bit_offset);
119 break;
120 case 0x44: case 0x45: case 0x46: case 0x47:
121 value = read8(rtc.readSec | (rtc.readMin<<6) | (rtc.readHour<<12) | (rtc.readDay<<17), bit_offset);
122 break;
123 default:
124 break;
125 }
126
127 return value;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected