Login
Back to forumSee the full topicGo to last reply

Posted By

SukkoPera
on 2022-09-22
05:45:46
 Re: External User Port for the C16: Let's make it!

@MMS: Well, you design the protocol, I implement it happy. I have no programming experience on 8-bit machines, so I can't help much. I can work on the "other side" (whatever must be done in my adapter) but someone else will have to write the C16/+4 driver. I can add that this is the basic data all USB mice report:

struct MouseReport {
uint8_t buttons; /**< buttons mask for currently pressed buttons in the mouse. */
int8_t x; /**< Current delta x movement of the mouse. */
int8_t y; /**< Current delta y movement on the mouse. */
};


USB reports are generally sent at 100-125 Hz. The C16/+4 would sample data at 50/60 Hz, I imagine, so some "accumulation" will be needed, right?

BTW, my adapter is based on a Raspberry Pico and is very cheap to make (~5€), so I think this is worth pursuing happy.

Just an idea: I think it would be good to base the protocol on the parallel part of the userport, without using the ACIA if possible. I have no idea if the following will work, it's just the first thing that materialized into my mind: if two buttons are enough, we only nee to transfer 18 bits of data. So maybe we could use bits 0 and 1 of as "data selector" outputs to the board, and bits 2...7 as an input from the board:

Sel Bits | Data
00 | y[5:0]
01 | x[3:0] + y[7:6]
10 | LMB + RMB + x[7:4]
11 | Spare for MMB or wheel data?


This would need 3 "pokes" and 3 "peeks" every time mouse data must be read. Again, no idea if that would be feasible, but hopefully it'll be food for thought :).

Maybe we should open a dedicated thread for this?



Back to top


Copyright © Plus/4 World Team, 2001-2024