If you're in the medium memory model, the implicit casting of (void __near*)NULL to a __far* appends the data segment register to it, so the routine you're passing it to gets something which isn't (void __far*)NULL. Sorry if you already knew this, or if you don't have a clue what I'm talking about, but I've just cured a bug caused by this and I think it's foul.
Copying thingsAs far as I'm concerned, working as a computer programmer is a bit like prostitution: those who do it do so because they don't think there's much else they can do which people would pay them for -- they'd much rather be doing it for free for the sheer love of it.
Thusly, you are welcome to copy any of these programs -- in fact, the more widely they're spread, the bigger buzz I get off it. These programs (and these Web pages) are NOT COPYRIGHTED and are NOT distributed under the GNU General Public Licence.
I do this because when I write a piece of code, I want it to STAY WRITTEN. That's to say, I write a routine only when I can't find an existing one that does the job; and once I've written it I don't want ANYONE, ANYWHERE, EVER to have to write it again. For further information see The Manifesto of the Futurist Programmers ("A Farmer's Tractor: Is it object-oriented? Is it extensible?") or consult your pineal gland.
If you run an archive site, by all means stick this stuff on it. If you run a PD/freeware disk library, or organise magazine cover disks, by all means stick this stuff on your disks. Just make sure you've got the latest versions. I know of one freeware library whose books include both Critical Mass (Automaton Wars 1.00) and Automaton Wars 2.40. That's just carelessness. Besides, the current version is 3.80 and earlier ones were just bobbins. Never mind Risc OS 3.7 -- I don't think Critical Mass worked on Risc OS 2, it was Arthur-only!
Changing thingsIn addition to this, I'd like to request that anyone who changes any of the source code in order to make a bug-fix or enhancement to a program (as opposed to including bits of it in a new program doing something substantially different) sends me the changes they have made so that I can keep the distributions here as up-to-date and definitive as is possible.
The same thing again in legaleseEveryone who has a copy of one of these programs, including ones downloaded from this site, is the owner of their copy of it, not a 'licensee'. In other words, infinite extension of rights is possessed by all who have, by any manner, acquired a copy of one of these programs: this includes unlimited rights for use, copying, modification, redistribution, resale, or any combination thereof, and excludes only the arrogation of claim of authorship.
DEF FNzero_terminate( a% ) : LOCAL a$ : SYS "XOS_GenerateError",a% TO a$ : = a$