FreeCalypso > hg > freecalypso-hwlab
annotate lunalcd/common.c @ 94:b84df973cd8b
fc-simtool: parse_ef_select_response() function added
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 24 Jan 2021 20:35:23 +0000 |
| parents | cdf2c99e5025 |
| children |
| rev | line source |
|---|---|
|
65
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 #include <stdio.h> |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 #include <stdlib.h> |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 #include <string.h> |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 #include <strings.h> |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 static enum { |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 MODE_L8, |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 MODE_U8, |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 MODE_16, |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 MODE_USB |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 } mode; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 set_output_mode(kw) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 char *kw; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 { |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 if (!strcmp(kw, "l8")) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 mode = MODE_L8; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 else if (!strcmp(kw, "u8")) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 mode = MODE_U8; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 else if (!strcmp(kw, "16")) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 mode = MODE_16; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 else if (!strcmp(kw, "usb")) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 mode = MODE_USB; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 else { |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 fprintf(stderr, "error: mode \"%s\" not understood\n", kw); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 exit(1); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 } |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 } |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 write_ir(val16) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 unsigned val16; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 { |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 if (mode != MODE_USB) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 printf("w16 fffe4802 200\n"); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 switch (mode) { |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 case MODE_L8: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 printf("w16 02000000 %02x\n", val16 >> 8); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 printf("w16 02000000 %02x\n", val16 & 0xFF); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 break; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 case MODE_U8: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 printf("w16 02000000 %02x00\n", val16 >> 8); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 printf("w16 02000000 %02x00\n", val16 & 0xFF); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 break; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 case MODE_16: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 printf("w16 02000000 %04x\n", val16); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 break; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 case MODE_USB: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 printf("wi %04x\n", val16); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 } |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 } |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 write_dr(val16) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 unsigned val16; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 { |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 if (mode != MODE_USB) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 printf("w16 fffe4802 600\n"); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 switch (mode) { |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 case MODE_L8: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 printf("w16 02000002 %02x\n", val16 >> 8); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 printf("w16 02000002 %02x\n", val16 & 0xFF); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 break; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 case MODE_U8: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 printf("w16 02000002 %02x00\n", val16 >> 8); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 printf("w16 02000002 %02x00\n", val16 & 0xFF); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 break; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 case MODE_16: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 printf("w16 02000002 %04x\n", val16); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 break; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 case MODE_USB: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 printf("wd %04x\n", val16); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 } |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 } |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 bulk_wd_prep() |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 { |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 if (mode != MODE_USB) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 printf("w16 fffe4802 600\n"); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 } |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 bulk_wd(val16) |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 unsigned val16; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 { |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 switch (mode) { |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 case MODE_L8: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 printf("w16 02000002 %02x\n", val16 >> 8); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 printf("w16 02000002 %02x\n", val16 & 0xFF); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 break; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 case MODE_U8: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 printf("w16 02000002 %02x00\n", val16 >> 8); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 printf("w16 02000002 %02x00\n", val16 & 0xFF); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 break; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 case MODE_16: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 printf("w16 02000002 %04x\n", val16); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 break; |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 case MODE_USB: |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 printf("wd %04x\n", val16); |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 } |
|
cdf2c99e5025
lunalcd project started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 } |
