Commodore 64: Mikro-Gen loader
Mikro-Gen Loader v1
These are amongst the first games released for the C64 and as such the loader is quite primitive. It doesn't even use CIAs for pulse timing.
Description:
(comming soon)
Mikro-Gen Loader v2 (aka Hyperload / Load'n Go)
Games using this loader aren't well known, and I'm not sure if it's a clone of the ones supported by FinalTAP, but it's a good one to begin learning about C64 tape loaders.
Description:
Short pulse = $38
Long pulse = $66
Bit 0 = Short
Bit 1 = Long
Threshold = $3F
Pilot = Bit 1 (at least*256) (exactly 2048 from TAPs)
Sync= Bit 0
Endianess : LSbF
Checksum : Yes, last byte contains complement to zero of all added bytes.
There are 2 blocks after the loader, one for the loading screen and another for the main game.
Start and end address+2 are loaded into ($00fd) and ($00f8) respectively before calling main read block routine.
These are set at the following loader addresses (they're all lowbyte/highbyte):
loading screen (all games except witch's cauldron)
-start ($082a,$082e); end+2 ($0832,$0836)
loading screen (witch's cauldron)
-start ($0822,$0826); end+2 ($082a,$082e)
main game (everyone's a wally/herbert's dummy run)
-start ($08ec,$08f0); end+2 ($08f4,$08f8)
main game (witch's cauldron)
-start ($08e4,$08e8); end+2 ($08ec,$08f0)
main game (battle of the planets/frost byte/equinox)
-start ($0908,$090c); end+2 ($0910,$0914)
The common way to indentify these addresses is searching the 2 occurrences of the following string in the loader, one for each block:
'a9 xxL 85 fd a9 xxH 85 fe a9 yyL 85 f8 a9 yyH 85 f9 ad 0e'
xxL, xxH - start address (low/high)
yyL, xxH - end address+2 (low/high)
At the end of each block there's a checksum byte.
After loading a block the checksum verification routine is called, that adds all bytes including the checksum byte containing the complement to zero of all added bytes.
Games using this loader (so far) :