|
13 | 13 | // ------ // |
14 | 14 |
|
15 | 15 | #define joybus_wrap_target 0 |
16 | | -#define joybus_wrap 22 |
| 16 | +#define joybus_wrap 23 |
| 17 | +#define joybus_pio_version 1 |
17 | 18 |
|
18 | 19 | #define joybus_T1 10 |
19 | 20 | #define joybus_T2 20 |
20 | 21 | #define joybus_T3 10 |
21 | 22 |
|
22 | 23 | #define joybus_offset_read 0u |
23 | | -#define joybus_offset_write 5u |
| 24 | +#define joybus_offset_write 6u |
24 | 25 |
|
25 | 26 | static const uint16_t joybus_program_instructions[] = { |
26 | 27 | // .wrap_target |
27 | | - 0xe080, // 0: set pindirs, 0 |
28 | | - 0x3320, // 1: wait 0 pin, 0 [19] |
29 | | - 0x4001, // 2: in pins, 1 |
30 | | - 0x20a0, // 3: wait 1 pin, 0 |
31 | | - 0x0001, // 4: jmp 1 |
32 | | - 0xe081, // 5: set pindirs, 1 |
33 | | - 0xe001, // 6: set pins, 1 |
34 | | - 0x80e0, // 7: pull ifempty block |
35 | | - 0x6021, // 8: out x, 1 |
36 | | - 0x00ee, // 9: jmp !osre, 14 |
37 | | - 0x00b3, // 10: jmp x != y, 19 |
38 | | - 0x80e0, // 11: pull ifempty block |
39 | | - 0x6021, // 12: out x, 1 |
40 | | - 0x000f, // 13: jmp 15 |
41 | | - 0xa342, // 14: nop [3] |
42 | | - 0xa142, // 15: nop [1] |
43 | | - 0xe900, // 16: set pins, 0 [9] |
44 | | - 0xb201, // 17: mov pins, x [18] |
45 | | - 0x0006, // 18: jmp 6 |
46 | | - 0xa442, // 19: nop [4] |
47 | | - 0xe900, // 20: set pins, 0 [9] |
48 | | - 0xf201, // 21: set pins, 1 [18] |
49 | | - 0x0000, // 22: jmp 0 |
| 28 | + 0xe080, // 0: set pindirs, 0 |
| 29 | + 0x20a0, // 1: wait 1 pin, 0 |
| 30 | + 0x3320, // 2: wait 0 pin, 0 [19] |
| 31 | + 0x4001, // 3: in pins, 1 |
| 32 | + 0x20a0, // 4: wait 1 pin, 0 |
| 33 | + 0x0002, // 5: jmp 2 |
| 34 | + 0xe081, // 6: set pindirs, 1 |
| 35 | + 0xe001, // 7: set pins, 1 |
| 36 | + 0x80e0, // 8: pull ifempty block |
| 37 | + 0x6021, // 9: out x, 1 |
| 38 | + 0x00ef, // 10: jmp !osre, 15 |
| 39 | + 0x00b4, // 11: jmp x != y, 20 |
| 40 | + 0x80e0, // 12: pull ifempty block |
| 41 | + 0x6021, // 13: out x, 1 |
| 42 | + 0x0010, // 14: jmp 16 |
| 43 | + 0xa342, // 15: nop [3] |
| 44 | + 0xa142, // 16: nop [1] |
| 45 | + 0xe900, // 17: set pins, 0 [9] |
| 46 | + 0xb201, // 18: mov pins, x [18] |
| 47 | + 0x0007, // 19: jmp 7 |
| 48 | + 0xa442, // 20: nop [4] |
| 49 | + 0xe900, // 21: set pins, 0 [9] |
| 50 | + 0xf201, // 22: set pins, 1 [18] |
| 51 | + 0x0000, // 23: jmp 0 |
50 | 52 | // .wrap |
51 | 53 | }; |
52 | 54 |
|
53 | 55 | #if !PICO_NO_HARDWARE |
54 | 56 | static const struct pio_program joybus_program = { |
55 | 57 | .instructions = joybus_program_instructions, |
56 | | - .length = 23, |
| 58 | + .length = 24, |
57 | 59 | .origin = -1, |
| 60 | + .pio_version = joybus_pio_version, |
| 61 | +#if PICO_PIO_VERSION > 0 |
| 62 | + .used_gpio_ranges = 0x0 |
| 63 | +#endif |
58 | 64 | }; |
59 | 65 |
|
60 | 66 | static inline pio_sm_config joybus_program_get_default_config(uint offset) { |
|
0 commit comments