Headerless files



Ian Harris,

Old Windsor,

Berkshire.



When you use the ordinary Spectrum SAVE and LOAD commands,

the computer normally deals with the tape file in two

parts. The first is the header which contains information

about the start address and the length and name of the

file. The second is the actual block of code to be saved/

loaded.

  This short machine code program enables the user to

bypass the header, and save or load the block of code on

its own. This is achieved by typing in one of the two new

commands, the format of which is as follows.

  To save a headerless file, type:

        *SAVE start,length

To load a headerless file, type:

        *LOAD start,length

where "start" is the address at which the file is to begin,

e.g. 16384 - the start of the screen - and "length" is the

number of bytes that are to be saved/loaded, e.g. 6192 -

the length of a screen.

  Note that the program will not load the actual header of

a file; only the code block after it. You can also load a

specified amount of a file, e.g. the first third of a

screen picture. To do this, take any screen picture file,

and type:

        *LOAD 16384,2048

  16384 is the start of the screen; 2048 is the number of

bytes in the first third of the screen. The program will

stop loading part way through the tape file, i.e., when

2048 bytes have been loaded.

  If you don't know the length of a headerless file, just

set the length equal to 65535; this will load in every-

thing, no matter what length.

  To initialise the routine, type:

        RANDOMIZE USR 65356

*SAVE and *LOAD should now be accepted. If for any reason

the Spectrum fails to accept the commands but you know that

they work correctly, this is probably due to a CLEAR com-

mand or RUN command being executed; then just reinitialise

the routine using the USR statement as above. [But note

that, unusually for such extended commands, these _must_ be

typed in capitals. Typing *Load instead of *LOAD would also

result in the computer not recognising the command.]

  If you wish to use the commands in a program, make sure

that

        RANDOMIZE USR 65356

is the first line of your routine.

