Ahh, the memories...

This was what you typed into a Commodore 64 to load the first program on the floppy disk.

Followed by RUN...

                         **** COMMODORE 64 BASIC V2 ****
                     64K RAM SYSTEM  38911 BASIC BYTES FREE.

READY.
FASTLOAD
LOAD"*",8,1

SEARCHING FOR *
LOADING

LOAD "*",8,1
In the version of Microsoft BASIC provided with Commodore 64, 64c, 128, and 128-D, this line was intended to load the first program on the first 5.25" Floppy Disk Drive into memory for immediate execution. If immediate execution was not supported by the program in question,
LOAD "*",8
would suffice. In either case, if the program did not automatically execute,
RUN
would usually execute the program.

Ah, such memories indeed! Although I hate to say that you all have got it slightly wrong...

LOAD "*",8, without the comma-one, will load the first file on the disk to the beginning of BASIC memory, at location 2049 (decimal) in the C64's address space, regardless of where the file was MEANT to be loaded, stored in the file's header. (C64 programs were generally not relocatable.) This broke some code, most particularly that which was intended to run in the cassette buffer or in the "safe zone" of memory, protected from BASIC, at 49152. It also tended to assume the program in question was a tokenized BASIC program. If it was a binary file, such as machine code, then if you tried to LIST in the computer's Immediate Mode BASIC interpreter you tended to mess up your screen, and sometimes lock up the machine.

LOAD "*",8,1 would load a file directly to the portion of memory from which it was saved. Now, since the SAVE command in C64 BASIC didn't support the saving of raw data, only BASIC programs, this presented a bit of a problem for would-be coders of machine language. To actually cause the necessary data in the file to load where it was supposed to, you had to either directly hack the saved file to change its load address in the header, or you had to make direct use of a few I/O routines in the C64's BIOS-like ROM (the "Kernal," and this is the correct spelling in this context).

Some programs managed to automatically run themselves, when loaded using this method, by way of a neat little trick. Some people figured out that the C64 BASIC's LOAD command, in ,8,1 mode, would actually load the file's data directly to the location specified in the file's header, no questions asked, even if it overwrote important areas in the first 2K of memory. The screen defaulted to 1024, the cassette buffer was at 828, and everything before was Soft Underbelly. The stack, if memory serves, was 256 bytes beginning at 512, and before that came the essential system variables. Overwrite the right values in these places, and you can make the machine do any arbitrary thing you want, if you understand it well enough. Since the C64's soul was entirely in its ROM, open to disassembly by all, eventually many people came to understand it well enough.

Final notes: If you use the ,8,1 suffix to load an ordinary BASIC program it won't work right, because while the data will be loaded where it's supposed to go, the pointer to the end of the BASIC program (I think it was at memory 44-45) will not be updated, and that can cause Problems.
Some machine language programs were designed so they could be loaded with a ,8 suffix. They masqueraded as a one-line BASIC program, usually something like SYS 2067, immediately transferring execution to the machine code that was loaded right after, but still requiring the user to type RUN. In particular, I believe Infocom's Z machine games for the C64 had to be started in this way.

Loading the "asterisk" file from a CBM floppy drive means that you want to "load the previous file again."

First load any file you want, then clear the BASIC mem by typing NEW and then load asterisk from the drive. You'll get your previous piece of software.

Some people mistakenly assume it always gives the first file of the disk. This only happens if the drive was just reset or switched on.

The method for getting the first file is:

LOAD ":*",8

Add a colon in front of the asterisk and the drive will know to load the first file.

Log in or register to write something here or to contact authors.