Copy Link
Add to Bookmark
Report

Commodore 64: Audiogenic loader

DrWatson's profile picture
Published in 
C64 tape formats
 · 30 May 2021

Can be found on...

  • Exile
  • Loopz
  • World Cup Rugby
  • Impact
  • Emlyn Hughes Soccer


-------------

Threshold : $013F (319) clock cycles (TAP byte $27).
Bit 0 : $1A
Bit 1 : $36
Endianess : MSbF

Pilot byte : $F0 (*4)
Sync byte : $AA

Then...

1 byte : Load Address MSB (low byte is always 00)
256 bytes : Data
1 byte : Checksum (0 XOR all data bytes)


Notes : the files are typically chained one after another, each has pilot and sync but there is no pause between files of any single chain.

Tapes may contain several chains.


The following file load addresses have special meaning to the loader...

0000 - loading stops after file is loaded and code is executed.
0100 - loading continues but the following data block needn't be consecutive.
0200 - loading stops after file is loaded and code is executed.
CF00 -


Audiogenic loader


Info by Fabrizio Gennari <fabrizio.ge@tiscalinet.it>

Used by

  • Emlyn Hughes' International Soccer
  • Exile
  • Impact
  • Loopz
  • World Class Rugby
  • ...

A variant of it is used by Special Agent.

Encoding :

Threshold: $13F
Bit 0: $1A TAP byte
Bit 1: $37 TAP byte

Data Endianess: MOST Significant bit First

Structure :

This loader stores data in a sequence of blocks. Blocks can be data blocks, which contain 256 data bytes and are loaded starting at a page boundary (address multiple of 256), or empty blocks.
Each block has a pilot tone of $F0 bytes and a sync byte of $AA.
If the first byte of a block is 0, 1 or 2, the block is an empty block.
Otherwise, it is a data block: the byte is the page where the data are loaded (the start address is that byte * 256).Then come 256 data bytes and a checksum byte (XOR of the 256 data bytes). A trailing sequence of eight 0 bits ends each block. After a 1 block, loading continues but the following data block needn't be consecutive. After a 0 block or a 2 block, loading stops and code is executed. If that block is the very last, the code starts the program. Otherwise, it displays the loading screen or does other things then jumps to the loader again, so new data is loaded. Note that "empty" blocks (0, 1 and 2 blocks) are not actually empty, they are followed by 256 bytes and a checksum, but those bytes are ignored.

Data blocks are stored consecutively, i.e. the page of a block is the page of the previous block + 1.

Exception : if a block is stored in page $CF (i.e. at addresses $CF00-$CFFF), it can be followed by a data block starting anywhere.
Typically, such block is the very first data block.


Special Agent/Strike Force Cobra loader


Used by Special Agent and Strike Force Cobra. Very similar to the previous one. Differences are:

 * There are three types of pulses.  
Special Agent Strike Force Cobra
Bit 0..................~512.........~368
Bit 1.................~1088.........~816
Very long pulse.......~1360........~1448
Threshold 0-1...........712..........594
Threshold 1-very long..1256.........1151

  • Every block starts with a sequence of very long pulses (no less than 5 of them, typically 30-31 of them), followed by 3 normal pulses (0s or 1s). After that, comes the first byte of the block.
  • In Special Agent (but not in Strike Force Cobra), empty blocks cannot start with a 2 byte, only 0 and 1 are allowed

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT