Pete,
seems like I have another though:
Er, read the code again. The double-density version
only loads 2 sectors,
in *all* the versions I've seen.
40 001122 120427 CMPB R4,#3 ; sectors 1
and 3 get done
40 001124 000003
Sure enough, your version does that. But I know I have checked with my
LSI-11 manual (cited earlier), and there is a word valued 7 (not 3)
after the CMPB opcode. Maybe this is error no. 4 in this version. ;-)
Let me
continue, and we can open a contest for writing the shortest
bootstrap! ;-)
I used to do that with all sorts of small assembly-languge routines. My
best was saving 200+ bytes out of 2048, in some Z80 code that one
self-proclaimed expert (not the author) described as "a mastepiece of
conciseness".
LOL!
At the university, a practical training task was to write a bootstrap
loader for a Siemens 7xxx system (don't remember the exact type, maybe
7748 or 7751? - said to be IBM /370 compatbile, no stack etc.). We were
given a machine simulator for testing and then tried to make the
simulated console output a text message a fixed number of times. What
the "hardware" provided was only the ability to read a punched card (!)
of binary code into memory and start it. You couldn't get away with
those 80 bytes on a single card since you had to initialize channels
etc., so you first had to read a second card. Some teams even needed a
third card, but our solution was the shortest of those that had the
complete text (some "cheated" by chopping off part of the line).
IIRC, the interupt routine to be activated upon I/O completion for the
second card was read from that same second card. Don't believe Java VMs
telling you about "just in time"! ;-)
--
Andreas Freiherr
Vishay Semiconductor GmbH, Heilbronn, Germany
http://www.vishay.com