ANAIIS, acronym for Another Native Amiga IO Interface Stack, is a software
solution that brings the possibilities of the Universal Serial Bus (USB) to
the old vintage Amiga, with 68000 at 7.09MHz, and the ZorroII card Highway or
clockport Subway from E3B.
At minimum, you need:
- an Amiga 68000 at 7.09MHz (PAL or 7.16MHz in NTSC ;) )
- a Highway or a Subway card
- some RAM (70 Ko for a mouse and a keyboard)
- should operate from WB1.1 to AmigaOS4.0 (680x0 cpu required).
ANAIIS, Another acronym with hidden parts:
Native because it is all written in C language (some parts are in Assembly).
Amiga because this computer worths this kind of program.
Input/Output because it works for mice, keyboards, thumbs and printers.
Interface because it translates usb transactions into Intuition events.
Stack because this kind of program is called like that.
ANAIIS controls internaly :
- (9,0,0) alias hub
- (3,1,1) alias keyboard (boot keyboard)
- (3,1,2) alias mouse (boot mouse)
- (7,1,1), (7,1,2) alias printer (uni and bi-directional)
- (8,6,80) alias massstorage (bulk only with embedded scsi commands)
SATA disk, sticks, keys, thumbs, card readers...
- (3,0,0) vendor=0x044f 1103 product=0xb320 45856 ThrustMaster (joypad with
- all external program by using a Sirion like API.
- like pl2303 vendor=0x067b 1659 product=0x2303 8963...
A little graphic user interface is given to control the stack.
You can also control it via CLI commands: usbstart, usbreset, usbstop.
You can send files to printer with the usbprint <file> command.
A redirection helper translates parallel.device unit 0 into ieee1284.device.
You only need a compatible printer driver to print via standard system.
(i.e. Deskjet560C for HPSC2210, or a PCL compatible driver)
External programs can be used with ANAIIS stack, such HID (extra buttons),
ThrustMaster (joystick with rumble) and massive (keys with (8,6,80) interface).
These programs are not delivered with this package.
For games, demos or some tools, you must keep original mouse and keyboard.
ANAIIS translates usb transactions into system events, so programs that
use hardware directly won't work.
ANAIIS is not yet resident and doesn't survive at boot time.
Tested with success with Brilliance, Deluxe Paint, Aegis Sonix, Ced
(I wrote this text with it :) ) most of well written Workbench tools.
The Settlers, Indy4 (and the fate of Atlantis) work fine...
It is possible to plug and unplug devices without reseting the stack.
But be careful with disks.
Requirement & Installation
See Install.readme file.
- Make this stuff romable, or reset proof.
- Internal drivers support.
- Reduce code size, suppress debug data.
- Improve gui.
- Improve speed and reactivity.
- crash on 68000 + ucode and utf_8 catalogs
V1.18 18-Dec-2018 Bump rev
10-Sep-2018 NSD commands
24-Apr-2018 68080 detection
27-Dec-2017 PeekQualifier for WB 1.x
V1.12 14-May-2017 Fix FFS unmount
11-Apr-2017 remove unused strings
resident 80368 -> 61496 bytes
usbstart 79844 -> 61708 bytes
26-Mar-2017 try to mount an already mounted partition (by changing the
20-Mar-2017 Bump rev
V1.11 09-Mar-2016 ObtainSemaphoreShared and AttemptSemaphoreShared
05-Mar-2016 Save prefs guru fixed
03-Mar-2016 Load usbhcd in a more compatible way...
03-Feb-2016 cli window still open on WB 1.x
30-Dec-2014 Unmount issues...
29-Dec-2014 Bump rev
V1.10 10-Feb-2014 Add XSurf (0x1212:0x0017) clockport(s) detection
08-Jan-2014 Fix internal function pointers
09-Dec-2013 Fix issue with input and lowlevel.library (right and left
08-Dec-2013 Bump rev
V1.09 10-Oct-2013 Reset proof !
26-Sep-2013 Fix info_13 (unit name and volume name)
25-Sep-2013 Fix colors for 2.04 and menus
21-Sep-2013 Fix massive for 1.2 (mount DOS)
19-Sep-2013 Bump rev
V1.08 06-Apr-2013 Fix reset for Highway (sometimes don't start)
Add usbctrl command (usbctrl start will launch
24-Mar-2013 Lights numlock led at start (keyboard)
18-Feb-2013 Fix USBEPGetDescriptor
11-Feb-2013 Wheel up and wheel down are inverted
04-Feb-2013 Bump rev
V1.07 02-Feb-2013 Function Driver names
27-Jan-2013 Cosmetic changes
Add libusbx support for WinUAE/Windows
12-Jan-2013 Fix iConfig and iInterface unicode strings
05-Jan-2013 Add usbctrl command (usbstop and usbreset in a single command)
02-Jan-2013 Remove the spanish catalog (after a complaint to the Aminet
Lo siento por las pequeñas y los pequeños usuarios de
Para consolarla, le añadí otros idiomas.
Be careful 'Advanced mode' freeze all stuff... you have been
27-Dec-2012 Fix guru 4 (deluxe paint IV, about...)
16-Dec-2012 Ajust enumeration timing (too fast now)
15-Dec-2012 Rewrite all core for Subway in 680x0 assembly
08-Dec-2012 Rewrite all core for Highway in 680x0 assembly
Remove some unused functions
V1.06 11-Nov-2012 Fix issues with PFS3 all in one.
16-Oct-2012 Add utf_8 and compose for ucode.
08-Oct-2012 Swap alt and amiga keys
Add anaiis.cd for the brave translators :)
22-Sep-2012 Add catalogs (with translation bugs... :) )
15-Sep-2012 Avail flush can remove anaiis libraries (it's bad!)
18-Aug-2012 Add install menu
05-Aug-2012 Bump rev
18-Jul-2012 Add libusb support for WinUAE
V1.05 28-May-2012 Fix Massive detection delay. Now massive can be launched
before the stack
27-May-2012 Fix Highway and subway detection
20-May-2012 Open icon.library only when it's necessary
15-Apr-2012 Fix delay recovery into massive
13-Apr-2012 Fix lowlevel into input stuff
04-Mar-2012 Test program for lowlevel_ext (rumble)
21-Feb-2012 info_13 for c:info replacement
V1.04 18-Feb-2012 Fix SetAddress (gimme more chance)
16-Feb-2012 Fix hub display on gui (spaghetti form...)
14-Feb-2012 Fix Massive
29-Jan-2012 Cosmetic changes on interfaces (info & detach)
25-Jan-2012 Fix potential bug on windows
24-Jan-2012 Fix notifications (bad message)
08-Jan-2012 Fix Mount/Unmount with WB1.3
04-Jan-2012 Subway detection at 0x00d80001, 0x00d90001 (A604)
01-Jan-2012 Fix hasardeous thing with timeout/partial BULK IN request
V1.03 25-Dec-2011 PTP don't work at all...
11-Dec-2011 Fix Taskpri (now, mouse and massstorage can mix transactions)
28-Nov-2011 Fix DumpX gui (edit/cursor/save/tests)
26-Nov-2011 Fix (BULK IN/BULK OUT/INT) thumbs.
19-Nov-2011 Ignore automount set to false partitions
11-Nov-2011 Command line for massive was disabled...
09-Nov-2011 Add a semaphore in massive, to prevent damages.
06-Nov-2011 NAK issue (not an error, but normal busy device)
19-Oct-2011 MaxTransfer and Mask.
V1.02 28-Sep-2011 Detach notification from GUI
22-Sep-2011 USBGetStackAttrs was wrong (A0 instead A1)
24-Aug-2011 Add SFS... (not working with 68000)
02-Aug-2011 Add RDB partition decoding and mount/unmount
26-Jul-2011 Fix usbscsi.device and FFS crashes
17-Jul-2011 Cosmetics in DumpX
V1.01 15-May-2011 Fix Massive, mount goes nearly fine
14-May-2011 Changes in uhc124 core
15-Apr-2011 Fix Function and Interface dependence (claim & declaim)
08-Apr-2011 Fix Massive 4GB startup (sometimes fails)
Add menus in DumpX.
29-Mar-2011 Add 64 bit routines (Add, Sub, LShift, RShift, Divu, Mulu).
V1.00 18-Mar-2011 Fix Anaiis hangup (notify never removed)
Fix ieee1284.device, now it prints!
Fix Massive, now all keys should work (up to 4GB)
Be patient, a 4GB key takes 5 minutes to mount ;(, but after,
you can copy! (fat95 limitation?)
V0.99 07-Mar-2011 Fix port 4 detection, fix grap of hubs removal
Massive can mount/unmount devices and the speed has passed
from 3500B/s to 6500B/s
Too lazy to bump the revision ;)
06-Feb-2011 Massive !
09-Jan-2011 Fix speed issue (keyboard wont SetAddress).
17-Nov-2010 Stack issue (CLI only, set stack 8000 before launching).
02-Nov-2010 Cosmetics in GUI.
14-May-2010 GUI now works with WB1.1.
11-Apr-2010 Mighty crash when closing fixed.
23-Mar-2010 GUI improvement (fusion of usbstat + anaiis)
07-Mar-2010 Remove all demo code (all is in demo.usbhcd now)
27-Feb-2010 DoIO for usbhcd interface.
21-Feb-2010 Reduce code, Anaiis gui goes from usbstat now
18-Feb-2010 Can load external drivers (#?.hcd or #?.usbhcd)
04-Feb-2010 Bump rev
V0.98 15-Oct-2009 registers everywhere (Thanks Cosmos)
15-Jun-2009 GUI improvement (sliders + values)
22-Apr-2009 playHID improvement (HID decoding!? still in progress...)
18-Mar-2009 playHID fixes, hope it works better (Thanks Cammy)
15-Mar-2009 usbstat fixes (Thanks Raziel for testing it on OS4.1)
13-Mar-2009 Localization in french (the file was missing...)
22-Feb-2009 Bump rev, plug and unplug working fine with notification.
V0.97 15-Feb-2009 Fix lowlevel.library keyboard, dead keys.
07-Feb-2009 Fix some desastrous bugs in 1.1 and 1.3
21-Dec-2008 ieee1284.device is now fully compliant with USBSysBase.
14-Dec-2008 Safer traces
(remove references to DOSBase, simple tasks like devices
don't call DOSBase API)
30-Nov-2008 Less size.
20-Nov-2008 Keyboard led report and printing are now working correctly.
capslock, numlock, scrolllock=>help.
11-Nov-2008 Remove maybe hub crashes, now build complete interfaces.
31-Oct-2008 Remove possible endless wait (speed up the mouse!).
20-Oct-2008 Notification now working.
05-Oct-2008 usbresource.library or anaiisresource.library.
21-Sep-2008 Add semaphore protection, printing is desactivated.
18-Sep-2008 Early version...
26-Jul-2008 Cosmetic changes
15-Mar-2008 PANDORA (usbsys.device or anaiis.device)
14-Feb-2008 Boost core code (registers use, global optimizer)
Device vector is now anaiis.device.
V0.96 10-Feb-2008 Fix Highway ugly bug, due to a wrong and looooong code
generation. Silly compiler and lazy coder...
21-Jan-2008 OS4.0 Mousewheel? what!? Yes for Subway and OS4.O under
Core modification, standard message structure for future use.
V0.95 13-Jan-2008 Add Host+manufacturer+product+offset for clockport
V0.94 23-Dec-2007 Fix Subway detection that sometimes fails.
Many thanks for the brave beta testers!
18-Dec-2007 some little GUI improvement.
V0.93 15-Dec-2007 Subway now works with ANAIIS!
12-Dec-2007 Merge code for Highway and Subway.
02-Dec-2007 Printing doesn't work...
V0.92 18-Nov-2007 Most hub will work now. I have implemented 2.0 mode, but
old 1.1 style doesn't work. Now it fixed.
23-May-2007 Additional code to simply manage mousewheel. ANAIIS will
send 0x7a for up, 0x7b for down, 0x7c for left and 0x7d for
right, as keyboard events. Strange for a mouse!
Strange multiselection: Qualifiers key was wrong on repeat
state, but good on key up and key down.
I use inputdev tool (Robert A. Peck 1985) to check that.
Now you can move cursor with keyboard keys:
lalt+window key = lalt+lamiga = left click.
ralt+context menu = ralt+ramiga = right click.
window key+cursor up = lamiga+up = mouse move up.
window key+cursor down = lamiga+down = mouse move down.
window key+cursor left = lamiga+left = mouse move left.
window key+cursor right = lamiga+right = mouse move right.
V0.91 13-May-2007 WB1.3: suppress ugly console windows.
V0.90 09-May-2007 First working release.
V0.10 10-Jun-2006 Mouse!!
Any mail, comments, suggestions, documentations are welcome!
Please send a mail with the title "ANAIIS" at the following mail address
gilles dot pelletier at live dot fr
Enjoy USB on old classic Amiga.
And remember: Only Amiga makes it possible!