MSX USB

Page 4/11
1 | 2 | 3 | | 5 | 6 | 7 | 8 | 9

By Danjovic

Master (142)

Danjovic's picture

30-01-2020, 12:47

st1mpy wrote:

USB sound device can also play MIDI which will be less data.

But you can play Midi today through the joystick port using Basic (link) (lprint command redirected).

By Pencioner

Scribe (1094)

Pencioner's picture

30-01-2020, 12:50

Danjovic wrote:
st1mpy wrote:

USB sound device can also play MIDI which will be less data.

But you can play Midi today through the joystick port using Basic (link) (lprint command redirected).

With USB MIDI support i meant not only playing MIDI's on MSX, but also receiving MIDI data (like Philips Music Module and SFG can do) to support some retro-DAW-like setups

By S0urceror

Expert (69)

S0urceror's picture

12-02-2020, 09:32

MSX USB goes UNAPI !!

To show off the new, in progress, UNAPI USB driver I have created a MSX version of the famous 'lsusb' command.
On Linux 'lsusb' interrogates the USB bus and displays all information from the various descriptors.

Now we can do the same on MSX!

See this video to see it in action.

By ducasp

Champion (273)

ducasp's picture

12-02-2020, 15:55

S0urceror wrote:

MSX USB goes UNAPI !!

To show off the new, in progress, UNAPI USB driver I have created a MSX version of the famous 'lsusb' command.
On Linux 'lsusb' interrogates the USB bus and displays all information from the various descriptors.

Now we can do the same on MSX!

See this video to see it in action.

It is quite cool that you are creating an UNAPI specification for USB controllers :) I would recommend that you send your specs (if you didn't already send it) to Nestor/Konamiman so he can review and publish it, that might help other developers wanting to create softwares for your USB interface as well as perhaps some other devices having the same interface (i.e.: Victor Trucco PIsquared, if someone takes over the idea, could implement the specification ;)) congrats for this project, it is shaping up really good :)

By S0urceror

Expert (69)

S0urceror's picture

13-02-2020, 10:46

My draft UNAPI specs are here. And yes, I've reached out to Konamiman for his input.

The first 3 functions of this implementation I have already implemented.

I am pondering about functions 4, 5 and 6. These functions should be fast. During my experiments with putting my driver in my existing Nextor driver or Memory mapper or ROM, I found out that every call adds too much overhead.

So I am thinking to replace all these functions with just 1 that will give back a jump table with call addresses, slots, pages, segment, etc. Similar to what the memory-mapper EXTBIO does in function 2.

The higher-level driver can then directly call them without going through the EXTBIO, UNAPI and context switches.

By sd_snatcher

Prophet (3258)

sd_snatcher's picture

13-02-2020, 11:56

Quote:

just 1 that will give back a jump table with call addresses, slots, pages, segment, etc. Similar to what the memory-mapper EXTBIO does in function 2.

This is a good approach. It’s one of the enhancements of the UNAPI specification I proposed to Nestor, to reduce the overhead.

By sdsnatcher73

Paladin (872)

sdsnatcher73's picture

14-02-2020, 18:25

This development surely seems to go into a great direction! Very interesting stuff!

By S0urceror

Expert (69)

S0urceror's picture

22-02-2020, 18:47

Wireless USB keyboard now working on my MSX USB Unapi driver.

The intent is to release all subsequent drivers on top of my MSX USB Unapi driver as well. This way we have a common foundation. Other hardware developers that intent to create USB cartridges can make them MSX USB Unapi compatible as well and then all client software and drivers will work straight away.

The same MSX USB Unapi driver now powers both the lsusb client program and the new USB HID keyboard driver. I tend to release all my subsequent drivers on top of this MSX USB drivers as well to create an eco system.

Also experimented with a new way of calling Unapi functions. Unapi functions are normally called through the endpoint that was extracted via the appropriate Extended Bios call. Before you call the Unapi function, with function number in register A, you have to find out where the driver is located. In ROM, RAM or Memory Mapper. Based on that you need to call it in the right way. Internally the driver then has to check if the function number exists and call the right function.

I didn't like this setup. First, the burden of calling the driver depending location is placed on the client. Second, it is slower to first do a lookup based on index and then call vs direct call. Third, register A is not available anymore.

To circumvent this I created a hybrid. Function 0 is still the information function per the UNAPI specification. But Function 1 is a function that returns a jumptable. In my case the driver was programmed to be in ROM so the driver generates the correct RST30h calls. RAM or Memory Mapper drivers would choose another appropriate method. The client does now not need to know how to call. It just invokes the appropriate entry in the jumptable, et voila. All registers are now available as well. See the readme for more information.

For compatibility reasons most functions are available both through the jumptable as through standard UNAPI. But the ones that need to be fast go only through the jumptable.

Let me know what you think of this setup.

By S0urceror

Expert (69)

S0urceror's picture

08-03-2020, 17:33

USB Ethernet is coming along nicely. I got my C based proof of concept working last week. I figured out the whole USB CDC ECM protocol and can see Ethernet packets flowing in.

I am now busy porting it to a Ethernet UNAPI. Internestor Lite (INL) already starts coming alive. But I have to still implement all the different functions.

Can’t wait to start surfing the Internet on my MSX!

P.S. I also have USB Hub support in the works. This will allow multiple devices connected to the MSX USB cartridge.

By spacemoai1973

Master (165)

spacemoai1973's picture

09-03-2020, 02:50

amazing, keep it up!

Page 4/11
1 | 2 | 3 | | 5 | 6 | 7 | 8 | 9