dragon: initial fdc work

Now correctly loads the superblock off disk. Something is astray once we
try and seek off track 0 however
platform-dragon: floppy driver updates

It now sort of works but something isn't right in the track handling logic
so that's partly commented out. We issue excess seeks as a result.
putdigit: microoptimisations

The compiler can't assume much about the variables after the call to put
the character so do the operations the other way around
dragon: fix floppy warning
trs80: first cut at a floppy driver based upon the Dragon work
trs80: first cut at a WD1010 hard disk driver
qsort: fix _wqsort

From: Will Sowerbutts <will@sowerbutts.com>

[and changed from int to short just in case we ever do anything fun with some
 of the odder 32bit CPUs: Alan Cox]
ssh: fflush the shell prompt

From: Will Sowerbutts <will@sowerbutts.com>

The assumption that libc will fflush stdout on an fgets of stdin is not anything
the standards guarantee. Do the needed fflush
qsort: fix sort order

From: Will Sowerbutts <will@sowerbutts.com>
fcc: Fix link of start code

From: Will Sowerbutts <will@sowerbutts.com>

crt0.s has lost the 0x100 bytes of space at the start of the executable
image. Attached patch to fcc corrects the link address.
6502: typo fix
dragon: fix off by one in devfd
trs80: further work on the hd driver

Still needs a floppy boot block to begin testing
zx128: Add support for the sinclair Microdrive

Read only for the moment, but tested with the boot loader path and seems to
be doing the right thing. Something is buggy in the checksum logic either
of the mdv maker or the reader, not sure which yet.

Headers and blocks are correctly fetched, data blocks are split from the header
as they arrive to avoid double buffering.

The interface 1 ROM is not used at all (so we can use this from a cartridge
to load the rest of the OS)
zx128: put devices in the same order as other platforms, hook microdrive

We'll need some CONFIG options to select between Microdrive, floppy etc as
I don't think the average Russian Spectrum/Clone came with a Microdrive !
zx128: link and crt0

Call the microdrive init functions
Do the initializer copy (makes no odds if disk loading, matters if ROM)
Shuffle things so that the kernel is at 0x0000->0x3FFF and 0xC000+. The
common, video and other bits then live between 5B and 9F. That leaves us
with A0-BF free plus the C0-FF of the other banks, so we can run somewhat
bigger apps. Not ideal but SDCC hacking is going to be needed to do better
plus teach fuse to emulate banked cartridges.

Memory map open to discussion anyway.

BUG: right now the mdv loader doesn't load 0xFE00-0xFFFF but needs to, need
to move the boot stack first.
Makefile: add run for bintomdv
bintomdv: convert the binary into microdrive cartridge and interface 2 ROM
trs80: Fix off by one in floppy code
zx128, Makefile: add rules for mdv building, rebalance 16K blocks