Copy Link
Add to Bookmark
Report

Commodore 64: Palace Tape F1 F2 loader

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

Palace Tape F1


Found on Antiriad and Rimrunner

Bit 0 : $30
Bit 1 : $5A
Endianess : MSbF

Tapes contain a number of separate files separated by pauses, each file is a series of 256 byte data blocks, each block has some additional bytes.

Load Address and Data Size (Stored as a block count) for each file is hard-coded inside the loader program.

This is the file structure....

  • File Pilot : 01 (x100, loader requires only 15)
  • File Header : 4A,50,47,29 (the values are meaningless, its just a sync sequence)

  • Block Header : 4A,50,47,10,XX (XX begins at 0 for the first block and increments by 1 for each new block)

  • Block Data (256 bytes)
  • Block Checkbyte (0 XOR all data bytes)
  • 1 Byte. (loader reads it but ignores)


if there is another block it follows immediately with its header.

etc.. til the end of file.

Notes :

  • Each block is 263 bytes long. (5+256+1+1).
  • On my TAPs the last pulses of all files final trailing bytes cause read errors and must be manually corrected.


Palace Tape F2


Found on Barbarian.

The same as Palace Tape F1 but there is no additional (unused) byte following checkbytes.

Antiriad for the commodore 64
Pin it
Antiriad for the commodore 64

Palace loader

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

Used by Barbarian, Rimrunner, Antiriad...


Encoding:
Threshold: 469 clock cycles
Data Endianess: MOST Significant bit First


Structure:
The header for bit synchronization is made by

  • a 1 bit
  • 15 bytes with value $01
  • an arbitrary sequence of bytes (that is, the loader accepts any sequence of bytes after the first fifteen 1's. In practical cases, there are all 1's)
  • 4 bytes: the sequence $4A $50 $47 $29.

Then follows a series of 256-byte blocks, whose structure is like that:

  • an arbitrary sequence of bytes (typically all $01)
  • 4 bytes: the sequence $4A $50 $47 $10
  • 1 byte: block number (first in the series is 0, then increments by 1)
  • 256 bytes: data
  • 1 byte: the EOR checksum of the 256 data bytes.

Each block starts immediately after the previous one has finished (no bit resync between blocks) and are stored in memory one after the other (first byte of a block is stored just after last byte of previous block).

Before calling the loading routine, the caller fills locations $80 and $81 with the memory location (low byte, high byte) where to put the first byte of the first block, and location $101 with the total number of blocks in the series. After the series of blocks is loaded, a new bit resync is needed.

← 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