FreeCalypso > hg > fc-tourmaline
annotate src/cs/services/fcbm/fcbm_textout.c @ 268:f2e52cab0a73
abb_inth.c: check all interrupt causes, not just one
The original code used if - else if - else if etc constructs, thus
the first detected interrupt was the only one handled. However,
Iota ITSTATREG is a clear-on-read register, thus if we only handle
the first detected interrupt and skip checking the others, then the
other interrupts will be lost, if more than one interrupt happened
to occur in one ABB interrupt handling cycle - a form of rare race
condition. Change the code to check all interrupts that were read
in this cycle.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 13 Jun 2021 18:17:53 +0000 |
parents | 35474f3a1782 |
children |
rev | line source |
---|---|
243
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * In this module we are going to implement functions for |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * displaying FCBM text strings on the LCD, abstracting |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * the messy Condat display driver for our purposes. |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 */ |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include "rv/rv_general.h" |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include "fcbm/fcbm_func_i.h" |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include "typedefs.h" |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include "dspl.h" |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #ifdef LSCREEN |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #define FONT_HEIGHT 16 |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 #define FAR_END_X 175 |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 #else |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 #define FONT_HEIGHT 8 |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 #define FAR_END_X 95 |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 #endif |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 void fcbm_display_init(void) |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 { |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 dspl_Init(); |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 dspl_set_char_type(DSPL_TYPE_ASCII); |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 } |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 void fcbm_display_line(UINT16 row, char *text) |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 { |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 dspl_Clear(0, row * FONT_HEIGHT, FAR_END_X, |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 (row + 1) * FONT_HEIGHT - 1); |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 dspl_ScrText(0, row * FONT_HEIGHT, text, TXT_STYLE_NORMAL); |
35474f3a1782
FCBM: beginning of display output
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 } |