Travaux Pratiques - Utilisation des commandes http GET et HEAD
Suite de la découverte de la bsdsocket.library
l'url http://aminet.net/driver/other/anaiis.readme
devra être décomposée en
aminet.net 80 /driver/other/anaiis.readme
Allons-y !
wget aminet.net 80 /driver/other/anaiis.readme

HTTP/1.1 302 Moved Temporarily
Server: Apache
Location: http://de4.aminet.net/driver/other/anaiis.readme
Vary: Accept-Encoding
Content-Type: text/html
Cache-Control: public
Date: Mon, 13 Aug 2018 09:54:15 GMT
X-Varnish: 434531956 434531927
Age: 24
Via: 1.1 varnish
Connection: close
Compte rendu 302, le fichier attendu ne se trouve pas sur la machine aminet mais sur une machine miroir de4.aminet.net ... (certaines fois, c'est sur se.aminet.net...) Qu'à cela ne tienne, essayons avec cette machine miroir !
wget de4.aminet.net 80 /driver/other/anaiis.readme
HTTP/1.1 200 OK
Date: Mon, 13 Aug 2018 09:56:56 GMT
Server: Apache/2.4.25 (Debian)
Last-Modified: Thu, 01 Jun 2017 04:09:29 GMT
ETag: "3401-550de34011040"
Accept-Ranges: bytes
Content-Length: 13313
Connection: close

Short:        ANAIIS USB Stack Release 1.12
Author:       Gilles Pelletier
Uploader:     gilles pelletier live fr (Gilles Pelletier)
Type:         driver/other
Version:      1.12 (31-May-2017)
Requires:     Highway or Subway from E3B or another supported usb hardware
Architecture: m68k-amigaos

Introduction
~~~~~~~~~~~~
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)

and externaly:
- (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 rumble)
- 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  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.

Future
~~~~~~
- Make this stuff romable, or reset proof.
- Internal drivers support.
- Reduce code size, suppress debug data.
- Improve gui.
- Improve speed and reactivity.

Known Bugs
~~~~~~~~~~
- crash on 68000 + ucode and utf_8 catalogs


Steps
~~~~~
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 first letter)
      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
      20-Mar-2015 Tests
      01-Jan-2015 Issues...
      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
      21-Dec-2013 Expansion.library
      09-Dec-2013 Fix issue with input and lowlevel.library (right and left click)
      08-Dec-2013 Bump rev

V1.09 10-Oct-2013 Reset proof !
      29-Sep-2013 Tests
      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 anaiisresident.library)
      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
                  Advanced mode...
      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
                  administrator)
                  Lo siento por las pequeñas y los pequeños usuarios de ANAIIS.
                  Para consolarla, le añadí otros idiomas.
                  Be careful 'Advanced mode' freeze all stuff... you have been warned
      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
                  Bump rev

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
                  Bump rev

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.
                  Wait delay.

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?)
                  Bump rev

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
                  Fix USBEPGetDescriptorA
      05-Feb-2009 anaiisprivate.library
      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
      20-Apr-2008 Localization
      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
                  68000 emulation.
                  Core modification, standard message structure for future use.

V0.95 13-Jan-2008 Add Host+manufacturer+product+offset for clockport
                  base address.

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!!


Contact address
~~~~~~~~~~~~~~~
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!


Bingo! compte-rendu 200, c'est OK, avec le contenu du fichier anaiis.readme
La ligne Last-Modified: Thu, 01 Jun 2017 04:09:29 GMT indique la date de mise à jour sur le serveur.
Cette date sera très importante si l'on veut faire un outil de mise à jour de composants depuis aminet.

On va modifier le programme wget en whead en remplaçant la commande http GET par HEAD.

On recommence avec whead...
whead aminet.net 80 /driver/other/anaiis.readme
HTTP/1.1 302 Moved Temporarily
Server: Apache
Location: http://de4.aminet.net/driver/other/anaiis.readme
Vary: Accept-Encoding
Content-Type: text/html
Cache-Control: public
Date: Thu, 06 Sep 2018 18:39:05 GMT
X-Varnish: 444057747
Age: 0
Via: 1.1 varnish
Connection: close
Erreur 302, on regarde Location: et on réessaie avec cette adresse.

whead de4.aminet.net 80 /driver/other/anaiis.readme
HTTP/1.1 200 OK
Date: Thu, 06 Sep 2018 18:40:37 GMT
Server: Apache/2.4.25 (Debian)
Last-Modified: Thu, 01 Jun 2017 04:09:29 GMT
ETag: "3401-550de34011040"
Accept-Ranges: bytes
Content-Length: 13313
Connection: close
On a juste récupéré l'entête sans ramener les 13Ko du fichier entier, et il n'a pas bougé depuis le 1 juin 2017, date de son acceptation sur le site (ce n'est pas la date de dépôt dans new!)

Conclusion
On va pouvoir jouer avec les commandes HEAD pour trouver l'emplacement exact d'un fichier (d'une ressource plus exactement) sur une machine distante et le télécharger avec la commande GET.