MSX Computer as USB Keyboard for several devices / machines (aka Raspberry Pi, Pc Compatible, etc)

Página 2/3
1 | | 3

Por AxelStone

Prophet (2703)

Imagen del AxelStone

08-07-2015, 14:33

Emic wrote:

As I liked the idea, that's why I opened this threat, trying to create a cheaper - (I am not saying better , I am saying cheaper) solution for the same problem. I think everybody then would be able to create its own interface and test its new possibilities .

Wish me luck! Smile Thank you!

Good luck! It should be really interesting a cheap solution for this Wink

Por Ramones

Champion (264)

Imagen del Ramones

18-03-2016, 10:20

Very interesting thread.

I made a solution for this, using arduino nano + MSX printer port + software controller on MSX. The interface turns the MSX in a USB Keyboard and/or GamePad with this features:

[] GamePad/Joystick

2 analog axis (X / Y). Handled, really like digital. Smile
1 hat switch (d-pad)
12 buttons.

The gamepad is mapped to the keyboard as:

- Cursor -> X/Y axis
- Space/SHIFT/TAB: Button 1
- CTRL/Code/Graph: Button 2
- BS: Button 3
- SELECT: Button 4
- F1: Button 5
- F2: Button 7
- F4: Button 8
- F5: Button 6
- Return: Button 9

You can plug, also, MSX joystick on any port (1/2) and it's converted to USB Gamepad. (Only with 2 buttons).

[] Keyboard: Standard USB Keyboard.

With the MSX Software you can select:

Keyboard + Gamepad, Gamepad only, Keyboard Only.

Writing post on MRC:

Interface:

Now I'm working on new interface: USB Keyboard/Mouse/Joystick/Gamepad to MSX Joystick or Mouse (via Joystick port).

Here an example controlling Zanac ^^ with a USB Keyboard and the USB2Joy prototype.

Sorry for the quality of the video. ^^:

Por anonymous

incognito ergo sum (109)

Imagen del anonymous

18-03-2016, 16:07

That seems to be a nice idea. Being able to play PC games using the MSX keyboard (which is far better than most PC keyboards to play) or even an MSX joystick is great!

Also, I think using the printer port is good: you don't need the speed of cartridge slots for this task and you leave the joystick port free to plug... a joystick! Smile

The second interface you mention seems even more interesting to me. Nice MSX joysticks may be harder to find than nice USB joysticks or gamepads, so being able to play MSX games in a real MSX using a modern gamepad is exciting. Smile

By the way: is this just a device for your own use, or will you sell it in some way?

Por Ramones

Champion (264)

Imagen del Ramones

18-03-2016, 18:30

Hi MrSpock!

MrSpock wrote:

That seems to be a nice idea. Being able to play PC games using the MSX keyboard (which is far better than most PC keyboards to play) or even an MSX joystick is great!

I made the hardware because I love the 20p keyboard. ^^ You are right. Surely, there are users that prefer play PC games with a real MSX cursor keys. Or MSX Joystick.

I don't play modern PC games but I added the gamepad feature thinking in this users. Really I only want write (this post is writing with my MSX and the interface).

MrSpock wrote:

Also, I think using the printer port is good: you don't need the speed of cartridge slots for this task and you leave the joystick port free to plug... a joystick! Smile

Indeed! Smile

MrSpock wrote:

The second interface you mention seems even more interesting to me. Nice MSX joysticks may be harder to find than nice USB joysticks or gamepads, so being able to play MSX games in a real MSX using a modern gamepad is exciting. Smile

Yes. Even you can use a "big keys" keyboard like as this.

I'm sure that 90% of MSX users prefer cursor keys instead joystick. The idea with USB2Joy prevent damaging MSX keyboard and "simulate" a cursor keys.

Anyway this new interface add new features, like use USB mouses and modern PC gamepads.

MrSpock wrote:

By the way: is this just a device for your own use, or will you sell it in some way?

If there are enough interested people, I could sell the interfaces, yes. But I don't know, in this moment, the final price.
Surely I will send to AAM a couple of interfaces to show them on the next MSX users meeting.

Por Emic

Rookie (22)

Imagen del Emic

19-03-2016, 14:21

Hi Ramones, and sorry about the delay aswering.

What a surprise! This is a real parallel development example of performing two parallel different solutions, with almost the same behavior and results, using different technologies and with no contact between us!

First of all, good work! It's hard-working mapping MSX-Keyboard&Joysticks to PC-keycodes. I know it first hand!

The next image is showing my last MSX2USB prototipes (taken yesterday Wink ) . I am not using ARDUINO nor ATMEL-ATMEGA or any other ARDUINO processor, but a different microcontroller. (Not placed yet at the moment of taking the picture):

Link to image

That's the only (needs more editing work, sorry,sorry) edited photo in this answer, as I was planning to upload to website.

Here an example of the working phase II prototype. (Very, very (very sorry about the quality of the video, taken with my mobile phone.

In this Video,my MSX is connected to my MEDIA CENTER PC (Media Center-Windows XP Operating System).
The Joystick1 is Mapped to: Axis X,Y=PC Cursor Keys, Button1=Space Bar, Button2=N key.
The game chosen:OUTRUN. Not the PC one, but the TurboGrafx (or was it Mame??) one.
As you can redefine Keys or Buttons in most PC Games, and in most PC Emulators,you can suit your mapped MSX keyboard to the mapped game or emulator Keys, sou you can play all the games in the world :D knowing that your MSX Joystick Mapped Button 1 will be the PC Game Button 1 & your MSX Joystick Mapped Button 2 will be the PC Game Button 2 ;)

(By your description, your interface can do Exactly the same!)

The Toshiba MSX1 is placed above the Media Center Computer in this example.
If you are able to see the detail (Very low quality video,sorry,sorry) the MSX software that makes the interface work it is placed in the 16k ROM Cartridge that is plugged in the MSX1 CARTRIDGE SLOT 1.

Your interface case is wonderful! , WE(*) are looking for a new one; in the meantime, here you have the (non-professional-photos-sorry) images of the provisional!! cases:

Top View:
Top View Image Link

Front View:
Front View Image Link

In the next picture, I was using the TOSHIBA MSX1 as Windows 2012-IntelI7-PC Keyboard.
I've mapped all Windows Keys, so you can program or navigate through internet or whatever you do with your PC, using the much better MSX keyboard.
The MSX Software to use the interface is stored in a 16k Cartridge ROM. The cartridge case was open at the moment of taking the picture (sorry!). In your example, you are using a MEGAFLASHROM SCC+ SD cartridge for the same purpose. (Same problem, different solution again! . The software for our interface can be stored and executed using your method as well (Megaflashrom SD cartridge), and of course, sure that the software for your interface can be stored in a regular 16k-64k cartridge ROM, as ours.

And in both cases the software can be loaded using any other method (diskdrive if you do have one, IDE/SCSI harddrive, even cassete tape as Binary Load (BLOAD). Am I right?

The picture:

Toshiba MSX1 as Windows 2012 Keyboard

To end my answer, two more pictures and its links, showing two simply MSX Basic Programs that can control our interface without loading any program in the MSX machine:

To work as a PC Keyboard:

Minimun software (MSX BASIC Program) needed to use the MSX2USB interface as a PC Keyboard

To use the MSX Joystick:

Minimum software (MSX BASIC Program) to use MSX2USB interface to use MSX Joystick as Mapped PC-Keyboard to use MSX Joystick in PC Games

Finally, we all are in the same situation as you have commented: We do not know yet the price, but we are doing our best effort to made it as cheap as possible.

We' created a webpage to show the features of the product, didn't say anything until now as we needed to be sure that the hardware was completely reliable. It is now (at a good percentage we hope). So it is time now.

So , anybody interested, please visit our website and place a reservation by clicking 'Contact Us' on the website , or send us an email at: EHR_2ndf@outlook.com

http://msx2usb.tk/

MSX2USB (2NDF Version) website for ordering and for information.

Well, long answer!. I think,ramones that, at this point,, we should made our PC keyboard & Joysticks mapping compatible to create an standard for future similar devices that we, or any other people, could develop over the same concept.

For example, I am mapping Joystick2 too, and we probably have assigned different keys o combination of keys to map the MSX keyboard to the PC keys that do not exist in MSX. (Like F11,F12, Windows Key)

So, that's all! :D

Looking forward for your answer,
kind regards,

EMIC.

*NOTE: WE are my brother and me ;) , known in the 90's as the MSX1 Software Development Group " The Second Foundation" . We did some games too under the name "Electromagic Software" , (you may have played any!, nothing from another world, but, well, I was sixteen , or less! :D )

Por Ramones

Champion (264)

Imagen del Ramones

19-03-2016, 18:32

Hi Emic!

Emic wrote:

Hi Ramones, and sorry about the delay aswering.

Apologies accepted. Wink

Emic wrote:

What a surprise! This is a real parallel development example of performing two parallel different solutions, with almost the same behavior and results, using different technologies and with no contact between us!

You are right. I did not know your development! Yesterday, causality, I saw your thread. LOL!

Emic wrote:

First of all, good work! It's hard-working mapping MSX-Keyboard&Joysticks to PC-keycodes. I know it first hand!

Yep. Really, still, I have no a perfect solution. My first idea was use BIOS/BASIC scan codes and translate to USB keystrokes. (I think this is your solution) But I had a problem: how handle different keys at the same time.

So, finally, I send to arduino all keyboard rows (11) and the arduino code translate to USB keystrokes. The keyboard rows are handled in "raw mode". The arduino does not know about international keyboards. And the arduino convert to the USB code... finally the Operating System you are using, maps this key codes to "real" key codes according to your keyboard layout (UK, Spanish, etc...).

Emic wrote:

The next image is showing my last MSX2USB prototipes (taken yesterday Wink ) .

Cool! Smile

Emic wrote:

I am not using ARDUINO nor ATMEL-ATMEGA or any other ARDUINO processor, but a different microcontroller. (Not placed yet at the moment of taking the picture):

I wonder if your uC it's ultra secret. LOL!

Emic wrote:

Here an example of the working phase II prototype. (Very, very (very sorry about the quality of the video, taken with my mobile phone.

Don't worry, I know the mobile phone video quality! LOL! Good job!

Emic wrote:

In this Video,my MSX is connected to my MEDIA CENTER PC (Media Center-Windows XP Operating System).
The Joystick1 is Mapped to: Axis X,Y=PC Cursor Keys, Button1=Space Bar, Button2=N key.
(By your description, your interface can do Exactly the same!)

Hmm... I don't know if it's the same. I send to PC a HID descriptor with a keyboard and/or gamepad. When the interface is working in "Gamepad" mode, PC receives a reportBuffer like as Gamepad. And if is working like keyboard, then PC receives a reportBuffer with the keyboard keystrokes and modifier keys byte.

Emic wrote:

If you are able to see the detail (Very low quality video,sorry,sorry) the MSX software that makes the interface work it is placed in the 16k ROM Cartridge that is plugged in the MSX1 CARTRIDGE SLOT 1.

Perfect!

Emic wrote:

Your interface case is wonderful! , WE(*) are looking for a new one; in the meantime, here you have the (non-professional-photos-sorry) images of the provisional!! cases:

Have you looked at Mouser?
Enclosures and cases at Mouser

Emic wrote:

The MSX Software to use the interface is stored in a 16k Cartridge ROM. The cartridge case was open at the moment of taking the picture (sorry!). In your example, you are using a MEGAFLASHROM SCC+ SD cartridge for the same purpose. (Same problem, different solution again! . The software for our interface can be stored and executed using your method as well (Megaflashrom SD cartridge), and of course, sure that the software for your interface can be stored in a regular 16k-64k cartridge ROM, as ours.

You are right. My software is a 8k ROM. ;) My idea, if people is interested with this hardware, is build a .COM and .CAS versions of the driver.

Emic wrote:

And in both cases the software can be loaded using any other method (diskdrive if you do have one, IDE/SCSI harddrive, even cassete tape as Binary Load (BLOAD). Am I right?

You are right! :)

Emic wrote:

Finally, we all are in the same situation as you have commented: We do not know yet the price, but we are doing our best effort to made it as cheap as possible.

Yep. I thought in the parallel port to save money. Build the interface in a cartridge, yes, has the advantage the to have the soft and hard in the same cartridge, but, I think, it's more expensive (needs a extra TTL logic, etc...).

Emic wrote:

So , anybody interested, please visit our website and place a reservation by clicking 'Contact Us' on the website , or send us an email at: EHR_2ndf@outlook.com

I hope you can sell many interfaces. ;) If I had known that you was working on this interface, surely, I probably never would have done.

I would want use my 20p as keyboard, and I would want learn a bit of arduino and ATMEL... I could focus my work in the USB2Joy.

Emic wrote:

Well, long answer!. I think,ramones that, at this point,, we should made our PC keyboard & Joysticks mapping compatible to create an standard for future similar devices that we, or any other people, could develop over the same concept.

I think, this is very easy.

Emic wrote:

For example, I am mapping Joystick2 too, and we probably have assigned different keys o combination of keys to map the MSX keyboard to the PC keys that do not exist in MSX. (Like F11,F12, Windows Key)

As I said, I'm using other method for the joysticks and gamepad simulation.

Emic wrote:

Looking forward for your answer,
kind regards,

Hmm... I think that if you are spanish, I'm spanish, you have my e-mail and I have your e-mail, we should write via e-mail. For me, answer in English it's a problem. ^^!

Emic wrote:

*NOTE: WE are my brother and me ;) , known in the 90's as the MSX1 Software Development Group " The Second Foundation" . We did some games too under the name "Electromagic Software" , (you may have played any!, nothing from another world, but, well, I was sixteen , or less! :D )

Cabrera Bros?

Por Emic

Rookie (22)

Imagen del Emic

19-03-2016, 21:44

Hi again Ramones! ,

I am not answering your questions in order, but in RANDOM mode: Wink

Quote:

Ramones wrote: Cabrera Bros?

Answering your last question, yes, I am Cabrera Bros. Wink I think that we know each other, from the last MadriSX, or before, from the very first MSX meetings in Madrid??...

Quote:

Ramones wrote:
Hmm... I think that if you are spanish, I'm spanish, you have my e-mail and I have your e-mail, we should write via e-mail. For me, answer in English it's a problem. ^^!

Please send me an Email to: ehr_2ndf@outlook.com with your E-mail address, problem solved! :)

Quote:

Ramones wrote:
I hope you can sell many interfaces. ;) If I had known that you was working on this interface, surely, I probably never would have done.

Thank you Ramones, I hope so!.
I think that we can collaborate. If you think the same, let's talk about that by direct email (In Spanish ;) )

I think that, by doing your interface, you've surely enjoyed a lot, as I have doing mine. So I think that is a good thing that you didn't know that we were doing the same interface with different solutions. And I am sure as well, that we have both learned a lot , so no worries. It could have happened the opposite, and then I would never have done mine or tried to.

Quote:

Ramones wrote:
I would want use my 20p as keyboard, and I would want learn a bit of arduino and ATMEL... I could focus my work in the USB2Joy.

As I said, don't worry. I think that, in this case, it is better no to compete but collaborate. We will talk a lot more by email. Out interface is using ordered PCBs designed (by me ;) ) , that (I hope) will result in a lower cost.

I think that you are using a standard ARDUINO Kit (Am I right?) If you are not interested in commercialize, your device could be an alternative, for all the people that would like to do it by themselves. If this is the case, we could work together so both devices would be reliable an more compatible with each other.

Quote:

Emic wrote:
Your interface case is wonderful!
Ramones wrote:
Have you looked at Mouser?
Enclosures and cases at Mouser

Thank you, Ramones, lots of cases! Sure that we can find the right ones there!

Quote:

Ramones wrote:
I wonder if your uC it's ultra secret. LOL!

Yes It is. Military.T800 /T101 provided by SKYNET. ;)

Joking apart, . . . we will discuss the technical details by email ;)

Quote:

Emic wrote:
(By your description, your interface can do Exactly the same!)
Hmm... I don't know if it's the same. I send to PC a HID descriptor with a keyboard and/or gamepad. When the interface is working in "Gamepad" mode, PC receives a reportBuffer like as Gamepad. And if is working like keyboard, then PC receives a reportBuffer with the keyboard keystrokes and modifier keys byte.

Then it is not the same. In fact, I didn't know that such thing like a Keyboard-Joystick combo device existed, only the usual Keyboard-Mouse Device Combo. To avoid compatibility issues, I decided to send Standard PC Keyboard HID only.

As all the PC Games and PC Emulators can be played using the keyboard, the playability is the same.The PC Computer or Emulator thinks that you (and your friend if using both Joysticks) are playing with the keyboard, but in reality you are playing with your MSX Joysticks.

Quote:

Emic wrote:
(...) we are doing our best effort to made it as cheap as possible.
Ramones wrote:
Yep. I thought in the parallel port to save money. Build the interface in a cartridge, yes, has the advantage the to have the soft and hard in the same cartridge, but, I think, it's more expensive (needs a extra TTL logic, etc...).

You (an me) are right using the Printer Port.
As an adapter,it needs to be as simple and cheaper as possible. Building a cartridge-based adapter is far more expensive that the Printer Port Option.

MSX1 owners will need a CARTRIDGE Software, but building 16k to 64k ROM only cartridge is very cheap (no TTL for additional ports required). Several people in MSX environment are selling Flash ROM Cartridges with very nice cartridge cases from 20€ + Shipping costs, we want zero profit on this, only ask the seller to 'burn' the Software into the cartridge before sending it directly to the MSX1 user that would buy both, our MSX2USB Adapter, and the ROM Software cartridge.

Or they can always use CAS file with the software, and MP3 player :)

Quote:

Ramones wrote:
Yep. Really, still, I have no a perfect solution. My first idea was use BIOS/BASIC scan codes and translate to USB keystrokes. (I think this is your solution) But I had a problem: how handle different keys at the same time.

So, finally, I send to arduino all keyboard rows (11) and the arduino code translate to USB keystrokes. The keyboard rows are handled in "raw mode". The arduino does not know about international keyboards. And the arduino convert to the USB code... finally the Operating System you are using, maps this key codes to "real" key codes according to your keyboard layout (UK, Spanish, etc...).

Sorry, Company (my brother and me) policy, no technical details here. Ultra-Secret
Joking apart again, we will talk far more about technical details by direct email.
Anyway, I can tell you that I achieved the 'perfect' solution:

First of all,when using our MSX2USB interface with no software but those two little BASIC programs, it works as you said, BIOS/BASIC to USB Keystrokes, but using BASIC you are not getting simultaneously pressed keys.

The (our) 'perfect' solution is exactly what you did but... Is the MSX Software who is getting the keyboard rows (and joysticks), not the MSX2USB Adapter 'secret' chip.

MSX Software and Z80 (in assembler) are far powerful enough to read all simultaneously pressed MSX keys and send them to the interface as USB Keystrokes. So if you want to change the Keyboard mapping, what you have to do is to load a different software in your MSX, MSX2USB Firmware remains the same, doesn't matter what MSX Computer are you using.

If you are using the ARDUINO to do that, you are going to need to program your Arduino, not only with your MSX1 Keyboard Mapping, but with all MSX different keyboard configurations in the world!. (MSX1,MSX2,MSx2+,TurboR from every country!).

Well we do have to do the same as well for our MSX2USB Adapter, of course, but what we change is the program loaded in the MSX, nothing more. So if you have a Frech MSX AZERTY computer, you load the MSX French ROM MSX2USB software in your computer (when available ;) ), nothing more. Or if you do have a TurboR, the TurboR MSX2USB ROM Software in your computer (when available ;) ) , nothing more.

Sure you can do the same with your ARDUINO, far more powerful than my ultra-secret!! Amost forgot! chip.
In that way you keep your adapter hardware as lower and simply as possible , so you get a cheaper adapter with the same performance (Let the Z80 do all the Job!!) ;) .

I am sorry not to tell you more specific technical details here but ... "y hasta aquí puedo leer..." (and I can only read up to here.) (famous phrase from a popular old Spanish Television Show named "Un,Dos,Tres" (One, Two, Three)

Ok thats all for today,please send me a direct email!

Take care,

Emic.

Por Emic

Rookie (22)

Imagen del Emic

20-03-2016, 09:33

Hi Again!

as I have wrote you by private email, I have to quote myself, as I was wrong when answering one of your questions:

In this question:

Quote:

Ramones wrote:
Yep. Really, still, I have no a perfect solution. My first idea was use BIOS/BASIC scan codes and translate to USB keystrokes. (I think this is your solution) But I had a problem: how handle different keys at the same time.

So, finally, I send to arduino all keyboard rows (11) and the arduino code translate to USB keystrokes. The keyboard rows are handled in "raw mode". The arduino does not know about international keyboards. And the arduino convert to the USB code... finally the Operating System you are using, maps this key codes to "real" key codes according to your keyboard layout (UK, Spanish, etc...).

I answered this:

Quote:

Emic wrote:
(..)
The (our) 'perfect' solution is exactly what you did but... Is the MSX Software who is getting the keyboard rows (and joysticks), not the MSX2USB Adapter 'secret' chip.

MSX Software and Z80 (in assembler) are far powerful enough to read all simultaneously pressed MSX keys and send them to the interface as USB Keystrokes. So if you want to change the Keyboard mapping, what you have to do is to load a different software in your MSX, MSX2USB Firmware remains the same, doesn't matter what MSX Computer are you using.

If you are using the ARDUINO to do that, you are going to need to program your Arduino, not only with your MSX1 Keyboard Mapping, but with all MSX different keyboard configurations in the world!. (MSX1,MSX2,MSx2+,TurboR from every country!).

I was wrong yo don't need to modify your ARDUINO Program at all.

What you have to do (In my opinion) to use your adapter in other different MSX Computer,(Any other different models from different countries), is to TRANSLATE in your MSX Program the RAW Rows before sending them to the ARDUINO, so you will match the different position of the keys of the other MSX Computer to the position of the keys of the MSX computer you created your adapter to.

After that you can publish here, or in your website, or in our website! , the MSX Software Updates for every different model, so MSX Users will have only to download the adequate Software (.ROM/.CAS/.BIN/.COM?) for its MSX Computer Model and Adapter Yours or ours

And I was right aboout this:

Quote:

Emic wrote:
(...) MSX Software and Z80 (in assembler) are far powerful enough to read all simultaneously pressed MSX keys (...)
(...) (Let the Z80 do all the Job!!) Wink . (...)

In the case of your adapter,I have to say:, MSX Software and Z80 (in assembler) are far powerful enough to TRANSLATE its specific model RAW Rows to the Standard MSX International Keyboard ROWS that are used in both my MSX1 TOSHIBA HX-10 and in your MSX1 SONY HB-20P without any loose of performance in your adapter.

I am writing this clarification because I don't want anybody reading this post to think that one of the interfaces is better than the other. They are different, but both of then can achieve the same performance. (In my opinion).

And I can say more, while doing that, your (any) MSX are far powerful enough to Read both Joystick1 & Joystick2 and, in your case, TRANSLATE those inputs into the equivalent RAW Rows of the keys of your choice, so you can MAP your MSX Joysticks 1&2 into PC Keystrokes, allowing your interface to use both Joysticks even in your USB KEYBOARD ONLY HID mode.

By doing that, your interface will be as compatible as ours, and we will be able to create a real MSX STANDARD for both adapters.

Have a nice day!

Emic.

Por Ramones

Champion (264)

Imagen del Ramones

20-03-2016, 18:18

Hi Emic!

Emic wrote:

Hi Again!

as I have wrote you by private email, .

Answered via private e-mail. Wink

Por Ramones

Champion (264)

Imagen del Ramones

12-04-2016, 10:51

Hi Emic!

Finally I have a new version (I hope the definitive version) of the firmware and MSX ROM driver:

[] Support Keyboard HID Boot Protocol and Keyboard HID Report Protocol. Now you can to use the keyboard in old PC BIOS, embedded systems who only support Keyboards with Boot Protocol. (Only supported on "keyboard only" mode).

[] New asynchronous communication system. Now you can change the interface (from one computer to another) without synchronise with the MSX.

[] CAPS LEDs HID Boot Protocol support. The LED is handled from host.

[] Multidevice:

- Keyboard Only.
- Gamepad Only.
- Keyboard + Gamepad.

You can switch mode in “real time”. You only need reboot MSX and select the mode, without unplug the USB from computer.

[] Tested on: Linux, OSX, Raspberry Pi 2 and Windows.

[] Configuration (selected mode) is stored on the interface. Now you don’t need select the mode with the MSX driver boots. The interface use the last configuration.

[] Joystick support in Keyboard only mode. The Joystick (port#1 and port#2) is mapped to CURSOR KEYS, SPACE (button 1) and “N” (button 2).

Maybe we should open a thread in spanish forum too...

Página 2/3
1 | | 3