Difference between revisions of "Burstnibbler Protection"

From Software Archive
Jump to navigation Jump to search
Line 2: Line 2:
  
 
===== Disk layout =====
 
===== Disk layout =====
 
+
Track 10 is written with the data area of three sectors at lower speed 0 instead of 3 (default for track 10). The sectors 1, 6 and 11 are missing, probably to compensate the track length for the three longer sectors. All sectors except 0, 5 and 10 are filled with zero.
Track 10 is written with a different speed. The sectors 1, 6 and 11 are missing. All sectors except 0, 5 and 10 are filled with zero.
 
  
 
Burstnibbler, Turbonibbler 4.0 and Filemaster check the existence of sector 0, 5, 10 on track 10. The track is read at speed 3, including the headers of sector 0, 5 and 10, except the data of sector 0, 5 and 10 is read at speed 0.
 
Burstnibbler, Turbonibbler 4.0 and Filemaster check the existence of sector 0, 5, 10 on track 10. The track is read at speed 3, including the headers of sector 0, 5 and 10, except the data of sector 0, 5 and 10 is read at speed 0.
  
 
Example sector:
 
Example sector:
   sync 32  ; we are at default speed 3 here
+
   sync 32  ; decoded at default speed 3 here
 
   ; header
 
   ; header
 
   gcr 08
 
   gcr 08
Line 28: Line 27:
 
   bits 1111
 
   bits 1111
  
   speed 0  ; speed change here
+
   speed 0  ; decode speed change here
   sync 200 ; at speed 3 this sync shrinks to sync 160
+
   sync 200 ; at decode speed 3 this sync shrinks to sync 160
 
   ; data
 
   ; data
 
   gcr 07
 
   gcr 07
Line 42: Line 41:
 
   bits 111
 
   bits 111
  
This pattern applies to sector 0, 5 and 10 of track 10.
+
This pattern applies to sector 0, 5 and 10 of track 10. Also note that the default sync length is between 32 and ~40, wheras the sync length of the "special" sectors is 160 (at speed 3).
  
 
===== Burstnibbler =====
 
===== Burstnibbler =====
 
 
A autostart routine is used. After program start the drive seeks to  
 
A autostart routine is used. After program start the drive seeks to  
 
* BurstNibbler 1.5 : track 2 sector 0
 
* BurstNibbler 1.5 : track 2 sector 0
Line 60: Line 58:
  
 
===== Turbonibbler 4.0 =====
 
===== Turbonibbler 4.0 =====
 
 
In Turbonibbler 4.0 the protection is similar but different implemented. The file itself is just 1 block in size and using autostart starts a Mini-Loader. The Mini-Loader executes block track 18 sector 4 (and 18/3) using command "B-E" in the floppy drive. This code contains the actual loader that transfers Turbonibbler 4.0 to the C64. It starts at a fixed encoded block number. If following the block chain the loader reaches track 10 the same algorithm as for loading the blocks of Burstnibbler 1.5/1.9 is used: data block in speed $00, sync length check (without explicit upper limit) while the transfer to C64 is running.
 
In Turbonibbler 4.0 the protection is similar but different implemented. The file itself is just 1 block in size and using autostart starts a Mini-Loader. The Mini-Loader executes block track 18 sector 4 (and 18/3) using command "B-E" in the floppy drive. This code contains the actual loader that transfers Turbonibbler 4.0 to the C64. It starts at a fixed encoded block number. If following the block chain the loader reaches track 10 the same algorithm as for loading the blocks of Burstnibbler 1.5/1.9 is used: data block in speed $00, sync length check (without explicit upper limit) while the transfer to C64 is running.
  
Line 70: Line 67:
  
 
===== Filemaster =====
 
===== Filemaster =====
 
 
Filemaster uses the same copy protection method as Turbonibbler 4.0.
 
Filemaster uses the same copy protection method as Turbonibbler 4.0.
  
Line 76: Line 72:
  
 
===== Notes =====
 
===== Notes =====
 
 
* Turbonibbler 2.2 has no copy protection.
 
* Turbonibbler 2.2 has no copy protection.
  

Revision as of 23:53, 17 March 2023

Burstnibbler Disk Protection

Disk layout

Track 10 is written with the data area of three sectors at lower speed 0 instead of 3 (default for track 10). The sectors 1, 6 and 11 are missing, probably to compensate the track length for the three longer sectors. All sectors except 0, 5 and 10 are filled with zero.

Burstnibbler, Turbonibbler 4.0 and Filemaster check the existence of sector 0, 5, 10 on track 10. The track is read at speed 3, including the headers of sector 0, 5 and 10, except the data of sector 0, 5 and 10 is read at speed 0.

Example sector:

  sync 32  ; decoded at default speed 3 here
  ; header
  gcr 08
  begin-checksum
     checksum 15
     ; sector
     gcr 05
     ; track
     gcr 0a
     ; id2
     gcr 4e
     ; id1
     gcr 54
  end-checksum
  gcr 0f
  gcr 0f
  ; Trk 10 Sec 5
  bytes 55 55 55 55 55 55 55 50 1f
  bits 1111
  speed 0  ; decode speed change here
  sync 200 ; at decode speed 3 this sync shrinks to sync 160
  ; data
  gcr 07
  begin-checksum
     gcr 0d 0c 85 ae b0 ...
     checksum d7
  end-checksum
  gcr 00
  gcr 04
  bytes 55 55 55 55 55 55 55 55 55
  speed 3 ; start of header sync of next sector
  bits 111

This pattern applies to sector 0, 5 and 10 of track 10. Also note that the default sync length is between 32 and ~40, wheras the sync length of the "special" sectors is 160 (at speed 3).

Burstnibbler

A autostart routine is used. After program start the drive seeks to

  • BurstNibbler 1.5 : track 2 sector 0
  • BurstNibbler 1.9 : track 2 sector 0
  • BurstNibbler other version : location not verified

After the detection of the block header the read speed is set to $00 and the block is read. It is checked if the Sync length is sufficiently long and if no read error is present. If both checks succeed the protection assumes a original disk.

The test for a too long sync happens implicitly: If the sync length measurement has an overflow and the resulting value is too small the internal result is a too short sync.

Since these tracks are rather empty compared to normal written ones it could happen that a copy has too large gaps between the sectors (if they are not evenly distributed). In this case the regular DOS routine that waits for the next sync times out (20 ms).

  • Burstnibbler 1.9: Read data of sector 5 track 10 at speed 0
Turbonibbler 4.0

In Turbonibbler 4.0 the protection is similar but different implemented. The file itself is just 1 block in size and using autostart starts a Mini-Loader. The Mini-Loader executes block track 18 sector 4 (and 18/3) using command "B-E" in the floppy drive. This code contains the actual loader that transfers Turbonibbler 4.0 to the C64. It starts at a fixed encoded block number. If following the block chain the loader reaches track 10 the same algorithm as for loading the blocks of Burstnibbler 1.5/1.9 is used: data block in speed $00, sync length check (without explicit upper limit) while the transfer to C64 is running.

Thus, Turbonibbler 4.0 appears in the memory of the C64 without any code related to copy protection.

Compared to the Burstnibbler protection the sector on track 10 with the different speed is part of the loaders block chain and thus part of the Turbonibbler program data.

  • Reads data sector 10 on track 10 at speed 0
Filemaster

Filemaster uses the same copy protection method as Turbonibbler 4.0.

  • Reads data sector 5 track 10 at speed 0
Notes
  • Turbonibbler 2.2 has no copy protection.

A copy may file due to three things:

  • multiple speeds used per track
  • sync length check
  • distribution of sector gaps

How To create a working copy of Burstnibbler (german)

Description contributed by markusC64 from Forum-64, translated by enigma.

Pages that refer to this protection