Code hidden after file name on tapes

From: Marko Mäkelä <msmakela_at_gmail.com>
Date: Fri, 8 Nov 2019 16:04:55 +0200
Message-ID: <20191108140455.GB35890_at_jyty>
On Thu, Nov 07, 2019 at 11:12:57PM +0100, Rhialto wrote:
>On Thu 07 Nov 2019 at 16:27:18 -0500, Bill Degnan wrote:
>>Unfortunately I don't think we have the same model, here is what I 
>>have not mine but same transformer)
>>http://www.8bit-homecomputermuseum.at/repair/bluepet/bluepet.html
>
>The pictures of Space Invaders remind me of our school computer club, 
>where we had one cassette with that game, and it had a clever copy 
>protection. It only worked if you loaded it from the first (internal) 
>cassette recorder. The trick was that there was code in the first 
>cassette buffer, which got there because the program was saved with a 
>name of some 188 characters...
>
>When loading from tape, the FOUND... messages show only the first 16 of 
>the buffer, so you never notice.

I used this trick in the c2nload program for my C2N232 adapter. It would 
load the fastloader in the obligatory 192-byte buffer, and then load a 
2-byte "program" that overwrites the CHROUT vector, for autostarting the 
loader in the tape buffer. For the newer PETs, I created a separate 
loader version for cassette port 2, because the tape buffer is at a 
different address. For the older PETs that do not support redirecting 
the CHROUT vector, the loader included a longer program that would jump 
to the appropriate tape buffer.

On the 264 series of computers, 17 bytes of the file name will be 
displayed. That is not the oddity of those machines; the tape encoding 
is somewhat different, and even slower than before.

>After I found out, I became the proud owner of another copy.

Normally, the 192-byte file name buffer is padded with spaces, so an 
attempt to copy with plain SAVE should not work. Back in the 1980s, I 
came across a copying program for the C64 that was written in BASIC. It 
invoked the low-level tape routines by SYS statements.

Back in the early 2000s, someone advocated the .cas or .csm format for 
encoding the actual raw payload of tapes. It would consist of 192-byte 
blocks, and for blocks that describe programs, the actual length of the 
program, as identified by the preceding 192-byte block. On disk (.prg 
files), programs are 2+N bytes (without including file name), while on 
tape they would be 192+N bytes.

I implemented the support for that format in cbmconvert. At that time, 
the popular tape archival formats were .tap (raw pulse streams) and .t64 
(introduced by Miha Peternel's emulator; no connection with any real 
format).

	Marko
Received on 2020-05-29 23:36:04

Archive generated by hypermail 2.3.0.