randyrossi / bmc64

A bare metal Commodore 64 emulator for the Raspberry Pi with true 50hz/60hz smooth scrolling, low input latency and better audio/video sync.
GNU General Public License v3.0
491 stars 59 forks source link

Feature Request: Hardware I/O #249

Open Monotoba opened 1 year ago

Monotoba commented 1 year ago

I would love to see some kind of emulated USER PORT. Perhaps using some of the I2C or SPI to parallel interface chips. I have some old hardware projects that interfaced with the C64 that I would love to use. What I would love to see is the USER PORT emulated. No need for 9VAC. Just the I2C or SPI interface chips on a daughter board or pi-place with the 24-pin connector with original pin-outs. Of course these pins need to be addressable at the same address(s) the original user port was, and needs I/O configurable. No emulator contains anything like this. But imagine being able to use a few of the old original peripherals!

randyrossi commented 1 year ago

There is some support for configuring GPIO pins as a user port. I think it can CIA2 port B from within the C64 emulation. But you would have to look at the changes to be sure. It was added by Mark Bush for his side-project. See https://github.com/randyrossi/bmc64/blob/master/README.md#gpio-config-4--userport-and-joysticks

It has limitations though. It might be okay for turning LEDs on/off but I would not expect to be able to talk to real devices due to timing as described in the link.

On Fri, Oct 27, 2023 at 7:44 PM R Morgan @.***> wrote:

I would love to see some kind of emulated USER PORT. Perhaps using some of the I2C or SPI to parallel interface chips. I have some old hardware projects that interfaced with the C64 that I would love to use. What I would love to see is the USER PORT emulated. No need for 9VAC. Just the I2C or SPI interface chips on a daughter board or pi-place with the 24-pin connector with original pin-outs. Of course these pins need to be addressable at the same address(s) the original user port was, and needs I/O configurable. No emulator contains anything like this. But imagine being able to use a few of the old original peripherals!

— Reply to this email directly, view it on GitHub https://github.com/randyrossi/bmc64/issues/249, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAI3HKEAWWP4HWUEXRNPEULYBRBMLAVCNFSM6AAAAAA6TP3KJOVHI2DSMVQWIX3LMV43ASLTON2WKOZRHE3DMMZQGY3DONI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

-- Randy Rossi

Monotoba commented 1 year ago

Thanks! I'll look into it. I think timing issues could be dealt with. I expect the kernel does maintain a clock. And as fast as the PI is, keeping the port timing should be doable.But I am only guessing as I have not looked at the code.

On Sat, Oct 28, 2023 at 8:33 AM randyrossi @.***> wrote:

There is some support for configuring GPIO pins as a user port. I think it can CIA2 port B from within the C64 emulation. But you would have to look at the changes to be sure. It was added by Mark Bush for his side-project. See

https://github.com/randyrossi/bmc64/blob/master/README.md#gpio-config-4--userport-and-joysticks

It has limitations though. It might be okay for turning LEDs on/off but I would not expect to be able to talk to real devices due to timing as described in the link.

On Fri, Oct 27, 2023 at 7:44 PM R Morgan @.***> wrote:

I would love to see some kind of emulated USER PORT. Perhaps using some of the I2C or SPI to parallel interface chips. I have some old hardware projects that interfaced with the C64 that I would love to use. What I would love to see is the USER PORT emulated. No need for 9VAC. Just the I2C or SPI interface chips on a daughter board or pi-place with the 24-pin connector with original pin-outs. Of course these pins need to be addressable at the same address(s) the original user port was, and needs I/O configurable. No emulator contains anything like this. But imagine being able to use a few of the old original peripherals!

— Reply to this email directly, view it on GitHub https://github.com/randyrossi/bmc64/issues/249, or unsubscribe < https://github.com/notifications/unsubscribe-auth/AAI3HKEAWWP4HWUEXRNPEULYBRBMLAVCNFSM6AAAAAA6TP3KJOVHI2DSMVQWIX3LMV43ASLTON2WKOZRHE3DMMZQGY3DONI>

. You are receiving this because you are subscribed to this thread.Message ID: @.***>

-- Randy Rossi

  • "There are only two things that are hard about computer science; Naming things, Cache Invalidation, and Off-by-one errors."

— Reply to this email directly, view it on GitHub https://github.com/randyrossi/bmc64/issues/249#issuecomment-1783831141, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACEWM3WACBRMICGLKWEGTFLYBUJTRAVCNFSM6AAAAAA6TP3KJOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBTHAZTCMJUGE . You are receiving this because you authored the thread.Message ID: @.***>

-- If you ask me if it can be done. The answer is YES, it can always be done. The correct questions however are... What will it cost, and how long will it take?