CreatiVision Console re-Creation

User avatar
Editor
Posts: 275
Joined: Fri Nov 17, 2023 10:36 pm
Contact:

Re: CreatiVision Console re-Creation

Post by Editor »

djrm wrote: Sun Feb 09, 2025 2:09 pm Next I'll add some protection to the rear of the keyboard PCB, maybee Acrylic or cardboard and arrange for a slight forward facing angle with short and long feet and a better cable strain relief.
I look forward to seeing your finished creation.

I had thought about designing a 3D printed case for the keyboard (eventually), but this also sits with my thoughts of creating a 3D printed case (cube?), for a finished MECB project (e.g. like the CreatiVision re-Creation).
At the moment, these thoughts have been parked, pending where I go with the possibility of making an all-in-one MECB CreatiVision Controller IO Card (as mentioned in my previous reply).

As always, lots to do!
User avatar
djrm
Posts: 98
Joined: Wed Aug 21, 2024 9:40 pm
Location: Rillington / UK
Contact:

Re: CreatiVision Console re-Creation

Post by djrm »

Well, a lot changed in the last two months, one thing was that before we went away I must have found my old joystick and brought it inside ready for my new creativision interface. I completely forgot this and today was pleasantly surprised to find it in a corner of my test bench, no wonder I couldn't find it outside in the shed. The Arari CX78+ arrived yesterday too. So I now have a joystick and a gamepad connected to my system together with the new keyboard. I found a plastic tray which more or less fits the keyboard which will give it a bit of protection against it touching things on my desk.

Maybe one of those low cost steel boxes would suit the system with an open front to slide the cards out...
IMG_20250214_194506949_HDR.jpg
User avatar
Editor
Posts: 275
Joined: Fri Nov 17, 2023 10:36 pm
Contact:

Re: CreatiVision Console re-Creation

Post by Editor »

djrm wrote: Fri Feb 14, 2025 8:07 pm ... The Arari CX78+ arrived yesterday too. So I now have a joystick and a gamepad connected to my system together with the new keyboard.
Nice!
djrm wrote: Fri Feb 14, 2025 8:07 pm I found a plastic tray which more or less fits the keyboard which will give it a bit of protection against it touching things on my desk.
Amazine fit. From the photo it almost looks like it was made for the keyboard.

I suspect you've probably sown the seed for me to get on with doing some 3D design for a case (at least a keyboard initially?).

In the meantime, your earlier post prompted me to start on an all-in-one MECB Creativision I/O Card. So far, I'm just doing a bit of PCB routing each day (as time permits), but it is progress.
I already have a pile of newly manufactured PCB designs (from over the last couple of months), all waiting for me to get back to making some videos.
User avatar
djrm
Posts: 98
Joined: Wed Aug 21, 2024 9:40 pm
Location: Rillington / UK
Contact:

Re: CreatiVision Console re-Creation

Post by djrm »

I've put together another 6502 board specially for the Creativision 2MHz CPU but I've run out of mini-dip ram chips now, since the rom socket isn't needed when using the !M expansion rom card I repurposed the rom socket to take an 8KB RAM chip. I just needed to tie pin 26 to Vcc instead of the A13 signal. The 16V8 code has been adjusted to output ram CS onto both chip select pins.
20250219_160405-COLLAGE.jpg
User avatar
Editor
Posts: 275
Joined: Fri Nov 17, 2023 10:36 pm
Contact:

Re: CreatiVision Console re-Creation

Post by Editor »

djrm wrote: Wed Feb 19, 2025 5:09 pm I've put together another 6502 board specially for the Creativision 2MHz CPU but I've run out of mini-dip ram chips now, since the rom socket isn't needed when using the !M expansion rom card I repurposed the rom socket to take an 8KB RAM chip. I just needed to tie pin 26 to Vcc instead of the A13 signal. The 16V8 code has been adjusted to output ram CS onto both chip select pins.
Awesome work! That's the kind of creative / "outside the box" thinking that drives the retro community!

I'm sure your approach will also be helpful to others. Effectively meaning (for projects like the CreatiVision re-creation, or just when using the Expansion ROM Card), the 6502 CPU Card can actually be populated with your choice of either 0.6" or 0.3" DIP RAM chips (that are, of course, pin compatible).

Kudos!
User avatar
djrm
Posts: 98
Joined: Wed Aug 21, 2024 9:40 pm
Location: Rillington / UK
Contact:

Re: CreatiVision Console re-Creation

Post by djrm »

Greetings,
When I bought your mechanical keyboard I assumed it would work as a conventional PS/2 keyboard on other systems too, this does not appear to th case. I especially wanted to use it on my other MECB board with a PS/2 keyboard but initial tests are unsuccessful and I cant make it work, it doesn't work on an old PC either. Is this expected behaviour? Looking at the s/w I think the serial interface is not bidirectional, this may be cause of the problem. I tried hot-swapping to the MECB keyboard after initialising with a normal PS/2 keyboard but this didn't help. Could it be signal voltage dependent, Any ideas?
Best regards, David.
User avatar
Editor
Posts: 275
Joined: Fri Nov 17, 2023 10:36 pm
Contact:

Re: CreatiVision Console re-Creation

Post by Editor »

djrm wrote: Fri Mar 14, 2025 1:58 pm ... I especially wanted to use it on my other MECB board with a PS/2 keyboard but initial tests are unsuccessful and I cant make it work, it doesn't work on an old PC either. Is this expected behaviour? Looking at the s/w I think the serial interface is not bidirectional, this may be cause of the problem. I tried hot-swapping to the MECB keyboard after initialising with a normal PS/2 keyboard but this didn't help. Could it be signal voltage dependent, Any ideas?
Hi David. Firstly, I haven't actually tried it out yet with another PS/2 interface. In fact, I've only ever used my CreatiVision Keyboard with its header connection to the CreatiVision Controller PCB.

I did implement the code based on the PS/2 protocol, and the receiving code (on the Controller), does work with my regular PS/2 Keyboard (which I was previously using).

I do recall also including the open-drain drivers to at least ensure general PS/2 interface electrical compatibility.

You are correct that the interface is not bi-directional, only allowing for scan-code transmission from the keyboard, but not PS/2 host acknowledgment. My understanding of the protocol was that this acknowledgement wasn't absolutely necessary.

I'll have to research this further. Although the intention was for the Keyboard to be used with the CreatiVision Controller (in place of a regular PS/2 Keyboard), it could be beneficial if it also worked with a old PC PS/2 input. Perhaps even allowing use with a PC emulator?

I'll add it to my to-do list!
User avatar
Editor
Posts: 275
Joined: Fri Nov 17, 2023 10:36 pm
Contact:

Re: CreatiVision Console re-Creation

Post by Editor »

David, you’ve got me interested in the PS/2 challenge! So, investigating this challenge seems to have jumped to the top of my list. :nerd:

So far, I’ve wired up a PS/2 plug cable for the Keyboard, and connected it to the PS/2 keyboard input on my F256K2 retro computer.
This enabled me to initially see the problem, and also gives me a system to debug with.

Initially, I am getting some keyboard input, but it is error prone, and often gets stuck on repeat (no key release received?), and also occasional incorrect characters / shifted characters (bit errors / conflicts?). So, I do agree, general PS/2 connectivity is not working correctly!

One thing that occurred to me was that, while the keyboard might make a good compact 48 key PS/2 keyboard for other custom PS/2 input projects, it’s not suitable for a general PC input keyboard. This is because some of the shifted keys are different characters than the PC standard.
e.g. The shifted ‘2’ key is the double-quote (“) character on the CreatiVision, but on a PC keyboard it is the ‘@‘ character.

So, the next step was to refresh my memory on the details of the PS/2 protocol. This has lead me to see that I do indeed need PS/2 input, to successfully communicate with a regular bi-directional PS/2 host, in order to detect (and respond to), host originating request-to-send interruptions etc.

I’ve made a start on the software changes to cater for bi-directional connectivity, and also looking at a PCB change to route a couple of the otherwise unused port C pins (C0 & C1), to use for PS/2 input sensing.

The good thing, is that for testing / using with the existing v1.0 PCB, this will just need a couple of simple jumper leads on the back of the PCB. That’s easy.

I do have a busy rest of my weekend ahead, but hopefully I can progress this further next week. So, more to follow! :ugeek:
User avatar
djrm
Posts: 98
Joined: Wed Aug 21, 2024 9:40 pm
Location: Rillington / UK
Contact:

Re: CreatiVision Console re-Creation

Post by djrm »

Hi Greg, I'll follow with interest to see what you discover. I found this interesting design: https://github.com/andykarpov/zx-unikeyboard-ps2
I also have an old chatpad360 keyboard with modified firmware to give serial output for another project but its keys are a bit too small. I think the Crativision keyboard would fit somewhere between that and a full blown PC keyboard. My initial test on the MECB was to attach the keyboard to the MECB_SYS_IO board (https://github.com/lenzjo/MECB-SYS-IO) which uses Daryl Rictor's decoder, here: https://sbc.rictor.org/pckbavr.html I have a 82c42 keyboard interface IC on another board but not tried it yet on the MECB. Best regards, David.
User avatar
Editor
Posts: 275
Joined: Fri Nov 17, 2023 10:36 pm
Contact:

Re: CreatiVision Console re-Creation

Post by Editor »

Well, I managed to spend some time yesterday on advancing the PS/2 interface completeness for the CreatiVision Keyboard. :geek:

I’m now at the point where I have evolved my original PS/2 transmission only code, to an early-alpha version of PS/2 bidirectional interface code, where I simultaneously support ScanCode transmission (from a ScanCode buffer), and Host Command reception (into a Command buffer).
This is all interrupt driven (like the original code), to provide perfectly consistent PS/2 clock cycle timing.

Then, separately, I have written a simple handler for any Host commands received into the Command buffer, so I can easily add any additional command responses needed.

I’ve also been able to use my existing generic PS/2 PC keyboard in order to directly compare how it responds (as compared to my CreatiVision Keyboard).

So far, good progress! I’m able to directly compare on the scope, the PC PS/2 keyboard’s communications, as compared to my CreatiVision Keyboard communications.

Here’s how the CreatiVision Keyboard PS/2 currently looks, following a computer reset (that it’s attached to).
Note, channel 1 (yellow) is the Clock, and channel 2 (purple) is the Data. I have the Data channel displaying at half amplitude (2V/div instead of the Clock's 1V/div), so it’s easier to see the relative transitions (but they are obviously the same 5V level).
CreatiVision_Keyboard_HostResetCommand_Ack_BAT.png
So, triggered by me resetting the computer, first you can see the Host Command “Reset” (0xFF) packet being received (clocked-in) by the Keyboard from the Host (computer).
This is followed by my Keyboard then sending back an “Ack” acknowledgement code packet (0xFA), and subsequently sending a BAT test (Basic Assurance Test), Success code packet (0xAA), back to the Host (computer).

The transmission of actual key press scan codes from the CreatiVision Keyboard (as viewed on my scope), also exactly duplicates my PC keyboard same key press transmission. Even down to the timing!

Note also, I'm coding my own PS/2 implementation from scratch, just based on descriptions of the PS/2 protocol and verification of the protocol by observing a generic PC PS/2 keyboard in operation. As a retired software developer, I find that most other code that I look at doesn't meet my own standard of "how things should be done" (I'm sure we all have different views on this). Case in point, is that other PS/2 code implementations I've seen don't impress me. Notably with hardwired code with software delay based transmission, and hardwired loop expectation of command responses (leading to infinite loop possibilities etc.). Nasty, nasty!

Anyway, so far, so good. Now that I have the groundwork done, I can hopefully progress it further in the next day or so. :geek:
Post Reply