Mercurial > repos > blastem
annotate megawifi.c @ 1515:3fc129eb0653
Cleanup MegaWiFi command implementation
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 16 Jan 2018 19:21:37 -0800 |
parents | 4f94e0f90c83 |
children | aaab852803ac |
rev | line source |
---|---|
1513
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #include <stdlib.h> |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 #include <stdint.h> |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 #include <string.h> |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 #include "genesis.h" |
1514
4f94e0f90c83
Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
1513
diff
changeset
|
5 #include "net.h" |
1513
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 enum { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 TX_IDLE, |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 TX_LEN1, |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 TX_LEN2, |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 TX_PAYLOAD, |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 TX_WAIT_ETX |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 }; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 #define STX 0x7E |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 #define ETX 0x7E |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 #define E(N) N |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 enum { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 #include "mw_commands.c" |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 CMD_ERROR = 255 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 }; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 #undef E |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 #define E(N) #N |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 static const char *cmd_names[] = { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 #include "mw_commands.c" |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 [255] = "CMD_ERROR" |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 }; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 enum { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 STATE_IDLE=1, |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 STATE_AP_JOIN, |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 STATE_SCAN, |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 STATE_READY, |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 STATE_TRANSPARENT |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 }; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 #define FLAG_ONLINE |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 typedef struct { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 uint32_t transmit_bytes; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 uint32_t expected_bytes; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 uint32_t receive_bytes; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
43 uint32_t receive_read; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
44 uint16_t channel_flags; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 uint8_t scratchpad; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 uint8_t transmit_channel; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
47 uint8_t transmit_state; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
48 uint8_t module_state; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 uint8_t flags; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 uint8_t transmit_buffer[4096]; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 uint8_t receive_buffer[4096]; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
52 } megawifi; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
54 static megawifi *get_megawifi(void *context) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
55 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 m68k_context *m68k = context; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 genesis_context *gen = m68k->system; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
58 if (!gen->extra) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
59 gen->extra = calloc(1, sizeof(megawifi)); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
60 ((megawifi *)gen->extra)->module_state = STATE_IDLE; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
61 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
62 return gen->extra; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
63 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
64 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
65 static void mw_putc(megawifi *mw, uint8_t v) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
66 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
67 if (mw->receive_bytes == sizeof(mw->receive_buffer)) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
68 return; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
69 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
70 mw->receive_buffer[mw->receive_bytes++] = v; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
71 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
72 |
1515
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
73 static void mw_set(megawifi *mw, uint8_t val, uint32_t count) |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
74 { |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
75 if (count + mw->receive_bytes > sizeof(mw->receive_buffer)) { |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
76 count = sizeof(mw->receive_buffer) - mw->receive_bytes; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
77 } |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
78 memset(mw->receive_buffer + mw->receive_bytes, val, count); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
79 mw->receive_bytes += count; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
80 } |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
81 |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
82 static void mw_copy(megawifi *mw, const uint8_t *src, uint32_t count) |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
83 { |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
84 if (count + mw->receive_bytes > sizeof(mw->receive_buffer)) { |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
85 count = sizeof(mw->receive_buffer) - mw->receive_bytes; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
86 } |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
87 memcpy(mw->receive_buffer + mw->receive_bytes, src, count); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
88 mw->receive_bytes += count; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
89 } |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
90 |
1513
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
91 static void mw_puts(megawifi *mw, char *s) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
92 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
93 uint32_t len = strlen(s); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
94 if ((mw->receive_bytes + len) > sizeof(mw->receive_buffer)) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
95 return; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
96 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
97 memcpy(mw->receive_buffer + mw->receive_bytes, s, len); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
98 mw->receive_bytes += len; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
99 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
100 |
1515
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
101 static void start_reply(megawifi *mw, uint8_t cmd) |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
102 { |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
103 mw_putc(mw, STX); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
104 //reserve space for length |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
105 mw->receive_bytes += 2; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
106 //cmd |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
107 mw_putc(mw, 0); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
108 mw_putc(mw, cmd); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
109 //reserve space for length |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
110 mw->receive_bytes += 2; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
111 } |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
112 |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
113 static void end_reply(megawifi *mw) |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
114 { |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
115 uint32_t len = mw->receive_bytes - 3; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
116 //LSD packet length |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
117 mw->receive_buffer[1] = len >> 8; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
118 mw->receive_buffer[2] = len; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
119 //command length |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
120 len -= 4; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
121 mw->receive_buffer[5] = len >> 8; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
122 mw->receive_buffer[6] = len; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
123 mw_putc(mw, ETX); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
124 } |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
125 |
1513
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
126 static void process_packet(megawifi *mw) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
127 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
128 if (mw->transmit_channel == 0) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
129 uint32_t command = mw->transmit_buffer[0] << 8 | mw->transmit_buffer[1]; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
130 uint32_t size = mw->transmit_buffer[2] << 8 | mw->transmit_buffer[3]; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
131 if (size > mw->transmit_bytes - 4) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
132 size = mw->transmit_bytes - 4; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
133 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
134 mw->receive_read = mw->receive_bytes = 0; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
135 switch (command) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
136 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
137 case CMD_VERSION: |
1515
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
138 start_reply(mw, CMD_OK); |
1513
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
139 mw_putc(mw, 1); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
140 mw_putc(mw, 0); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
141 mw_puts(mw, "blastem"); |
1515
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
142 end_reply(mw); |
1513
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
143 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
144 case CMD_ECHO: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
145 mw->receive_bytes = mw->transmit_bytes; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
146 memcpy(mw->receive_buffer, mw->transmit_buffer, mw->transmit_bytes); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
147 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
148 case CMD_AP_JOIN: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
149 mw->module_state = STATE_READY; |
1515
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
150 start_reply(mw, CMD_OK); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
151 end_reply(mw); |
1513
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
152 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
153 case CMD_SYS_STAT: |
1515
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
154 start_reply(mw, CMD_OK); |
1513
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
155 mw_putc(mw, mw->module_state); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
156 mw_putc(mw, mw->flags); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
157 mw_putc(mw, mw->channel_flags >> 8); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
158 mw_putc(mw, mw->channel_flags); |
1515
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
159 end_reply(mw); |
1513
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
160 break; |
1514
4f94e0f90c83
Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
1513
diff
changeset
|
161 case CMD_IP_CURRENT: { |
4f94e0f90c83
Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
1513
diff
changeset
|
162 iface_info i; |
1515
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
163 if (get_host_address(&i)) { |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
164 start_reply(mw, CMD_OK); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
165 //config number and reserved bytes |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
166 mw_set(mw, 0, 4); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
167 //ip |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
168 mw_copy(mw, i.ip, sizeof(i.ip)); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
169 //net mask |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
170 mw_copy(mw, i.net_mask, sizeof(i.net_mask)); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
171 //gateway guess |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
172 mw_putc(mw, i.ip[0] & i.net_mask[0]); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
173 mw_putc(mw, i.ip[1] & i.net_mask[1]); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
174 mw_putc(mw, i.ip[2] & i.net_mask[2]); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
175 mw_putc(mw, (i.ip[3] & i.net_mask[3]) + 1); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
176 //dns |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
177 static const uint8_t localhost[] = {127,0,0,1}; |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
178 mw_copy(mw, localhost, sizeof(localhost)); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
179 mw_copy(mw, localhost, sizeof(localhost)); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
180 |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
181 } else { |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
182 start_reply(mw, CMD_ERROR); |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
183 } |
3fc129eb0653
Cleanup MegaWiFi command implementation
Michael Pavone <pavone@retrodev.com>
parents:
1514
diff
changeset
|
184 end_reply(mw); |
1514
4f94e0f90c83
Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
1513
diff
changeset
|
185 break; |
4f94e0f90c83
Added support for MegaWiFi command IP_CURRENT
Michael Pavone <pavone@retrodev.com>
parents:
1513
diff
changeset
|
186 } |
1513
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
187 default: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
188 printf("Unhandled MegaWiFi command %s(%d) with length %X\n", cmd_names[command], command, size); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
189 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
190 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
191 } else { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
192 printf("Unhandled receive of MegaWiFi data on channel %d\n", mw->transmit_channel); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
193 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
194 mw->transmit_bytes = mw->expected_bytes = 0; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
195 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
196 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
197 void *megawifi_write_b(uint32_t address, void *context, uint8_t value) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
198 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
199 if (!(address & 1)) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
200 return context; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
201 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
202 megawifi *mw = get_megawifi(context); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
203 address = address >> 1 & 7; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
204 switch (address) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
205 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
206 case 0: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
207 switch (mw->transmit_state) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
208 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
209 case TX_IDLE: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
210 if (value == STX) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
211 mw->transmit_state = TX_LEN1; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
212 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
213 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
214 case TX_LEN1: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
215 mw->transmit_channel = value >> 4; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
216 mw->expected_bytes = value << 8 & 0xF00; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
217 mw->transmit_state = TX_LEN2; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
218 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
219 case TX_LEN2: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
220 mw->expected_bytes |= value; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
221 mw->transmit_state = TX_PAYLOAD; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
222 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
223 case TX_PAYLOAD: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
224 mw->transmit_buffer[mw->transmit_bytes++] = value; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
225 if (mw->transmit_bytes == mw->expected_bytes) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
226 mw->transmit_state = TX_WAIT_ETX; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
227 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
228 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
229 case TX_WAIT_ETX: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
230 if (value == ETX) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
231 mw->transmit_state = TX_IDLE; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
232 process_packet(mw); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
233 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
234 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
235 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
236 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
237 case 7: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
238 mw->scratchpad = value; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
239 break; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
240 default: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
241 printf("Unhandled write to MegaWiFi UART register %X: %X\n", address, value); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
242 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
243 return context; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
244 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
245 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
246 void *megawifi_write_w(uint32_t address, void *context, uint16_t value) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
247 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
248 return megawifi_write_b(address | 1, context, value); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
249 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
250 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
251 uint8_t megawifi_read_b(uint32_t address, void *context) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
252 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
253 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
254 if (!(address & 1)) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
255 return 0xFF; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
256 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
257 megawifi *mw = get_megawifi(context); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
258 address = address >> 1 & 7; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
259 switch (address) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
260 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
261 case 0: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
262 if (mw->receive_read < mw->receive_bytes) { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
263 return mw->receive_buffer[mw->receive_read++]; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
264 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
265 return 0xFF; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
266 case 5: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
267 //line status |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
268 return 0x60 | (mw->receive_read < mw->receive_bytes); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
269 case 7: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
270 return mw->scratchpad; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
271 default: |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
272 printf("Unhandled read from MegaWiFi UART register %X\n", address); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
273 return 0xFF; |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
274 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
275 } |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
276 |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
277 uint16_t megawifi_read_w(uint32_t address, void *context) |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
278 { |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
279 return 0xFF00 | megawifi_read_b(address | 1, context); |
8f3b6a64b658
Initial work on MegaWiFi support
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
280 } |