Tape Recovery Case Study #4

How to recover hidden/faulty allocated data from tape?
Background: After a pre-analyse of the Signal read from the tape we know the Signal Data is either TurboTape or Anirog -Data. This isolates the process and we now can focus on the actual analys. Because of my experience and case studies I can determine the different Signal Data Types, pretty easy.

painterboy(0801-9690)_033c-0efb(turbo250_header)_analysis_
The first image shows a classic physical damage problem also known as "Audiodamaged". Many times this occurs when the Signal on the taps is worn out. As you can see the header is not looking great.

painterboy(0801-9690)_033c-0efb(turbo250_header)_analysis_end
The second image shows the end of the file, that is better looking and has a more steady Signal. The question remain - can we solve this problem?

painterboy(0801-9690)_033c-0efb(turbo250_header)2
In this case I was able to encode the Data Signal with some secret methods I won't reveal this time. You know every preserver has his/her secrets! However, when we look at the structure we can see the whole header from the Kernal which keeps track of the loader. The memory area $033c-0efb. But it's wrong and won't work even if we load this segment into $0801. We have to adjust this.

painterboy(0801-9690)_033c-0efb(turbo250_header)_area_to_delete_
This part known as "header", is not needed. Therefore we can remove it.

painterboy(0801-9690)_033c-0efb(turbo250_header)_changed_startadress_
When we have moved the data from one adress to another we need to make some changes to get this working. If we look closer we see the adress is totally wrong and we need to reallocate to the proper adress.

painterboy(0801-9690)_033c-0efb(turbo250_header)_corrected_
Now look at this, it's looking good but not great. This preserver wants to achieve perfect result in TRUE ARCHAEOLOGY.

painterboy(0801-9690)_033c-0efb(turbo250_header)_complete_
This is looking like a typical "start up sequence". The first likes indicates the "SYS" adress you see when you typically "List" from basic.
When we step further we can also see a so called "Transfer Routine". The TR is what will "move" the actual adress where the game is stored to be executed. This is normally done after the intro, when you press space.
TRANSFER SEI
LDA #$31
LDX #$EA
STA $0314
STX $0315
LDA #$00
STA $D01A
STA $D418
LDA #$81
STA $DC0D
CLI
JSR $FF81
LDX #$00
LOOPA LDA LABEL1,X
STA $0400,X
INX
BNE LOOPA
LDX #$00
DIS1 LDA $1700,X
STA $0600,X
INX
BNE DIS1
LDA #$00
STA $0800
JMP $0400
LABEL1 SEI
LDA #$34
STA $01
LABEL3 LDX #$00
LABEL2 LDA $2200,X
STA $0801,X
INX
BNE LABEL2
INC $0409
INC $040C
LDA $0409
BNE LABEL3
LDA #$37
STA $01
CLI
JSR $A659
JMP $A7AE

This transfer routine will move data from $2200 to $0801. In this case it's the gamedata, as described.

painterboy(0801-9690)_033c-0efb(turbo250_header)_intro_
After a final look in the monitor we see things are looking great and when we execute the new branded .PRG file this is what we get. Now, this was good stuff! An old classic golden nugget from Hotline! Let's press space to execute the "Transfer Routine".

painterboy(0801-9690)_033c-0efb(turbo250_header)_title_
Would you look at that! The game "Painterboy". Successfully recovered!

Conclusion:
Total time for this task: 45 minutes reading the data. 10 minutes signal analyse. 2.5 minutes Anirog Decode. 10 minutes transferring the data.
Was it worth this? Yes, of course! This will work on any kind of tape data, when you do it the proper way and not just "skip files", because you're lazy. This is also what parts a true Data Archeology from the rest. Dedication or pure madness - You decide!
This case study was made to give you a bit of an insight what it takes to get the a good job, greatly done and get to the bottom line with things.
/Xiny6581 12/01-2016