/usb65

USB host and device drivers for the 65x02

Primary LanguageMakefile

usb65 - USB host and device drivers for the 6502
------------------------------------------------

This repository holds host and device drivers for 6502 processors. The aim is to make
them generic enough so they can be reused in many 6502 computers.

Currently supported functionalities:

- Keyboard (host+device)
- mouse (host)
- hub (as host, can enumerate devices connected via a hub! - currently sl811hs only)

Currently supported hardware:

- SL811HS (host+device) via processor bus interface
- MAX3420 (device) via an SPI interface
- MAX3421 (host+device - device is same as MAX3420) via an SPI interface

Currently supported platforms:

- CS/A "Fat40" PET replica with
	- NETUSB 1.x board (2 SL811HS for host and device)
	- NETUSB 2.x board (MAX3420 for device + MAX3421 for host)

- Commodore PET with CS/A adapter 
	- (tested only with NETUSB 1.x)

- Commodore PET with Userport USB interface using a MAX3421

- Micro-PET/UltraCPU with built-in MAX3421


Future plans:
-------------

- more functionalities
	- RS232 via USB
	- mass storage device (USB stick)
	- Network (ethernet?) via USB
- fix device driver side

Content
-------

- host/
	USB host code
- device/
	UBS device code
- common/
	separated out common code (e.g. for messages, or USB headers)
- drivers/
	hardware drivers for USB and necessary others (like SPI),
	separated by host, device, and spi
- hardware/
	description of supported hardware
	The actual hardware is described 
	here http://www.6502.org/users/andre/csa/netusb/index.html 
	and here http://www.6502.org/users/andre/csa/usb/index.html
- platform/
	hold the platform specific code.
	Here reside the main programs with the build code

Build note
----------

At this time you need the "xa65" cross assembler to build it (and its associated
"reloc65" and "ldo65" tools). The required version is 2.4.0 or up.

Using make, in the host, common, and driver directories, .o65 files are created.
These are then linked with ldo65 in the platform builds

It builds test executables for the CS/A for now. Those have a Commodore PET header,
i.e. can be LOADed and RUN to a) enumerate the USB bus or b) let the PET be a keyboard
for a PC.


Known bugs
----------

- hub enumeration on MAX3421 does not yet work. 
- keyboard mapping is preliminary
- Only few features are implemented. E.g. there is no power management
- Device driver only somewhat works

Device quirks
-------------

- (all resolved at this time with the limited amount of devices tested)