IEChost DIY kits available for sale!

As I received all components, I am happy to announce that IECHost DIY kits are now available for sale at the selling price of 12.99 GBP + shipping.

I have yet to sort out an IECHost section in my sales page, but I shall do that in due course. If you’re interested, just drop me an email and we can take from there 🙂

Posted in Retrocomputing, Technical | Tagged , , , , , , | Leave a comment

TAPClean’s Visiload scanner: further improvements

This evening, I managed to implement functional separation between the code required for multi-title support and the core Visiload scanner in TAPClean, which also simplifies the handling of abandon/exit conditions.

I am going to do some regression testing for this scanner too before I share TAPClean binaries.

Stay tuned!

Posted in Retrocomputing, Technical | Tagged , , , , , , | Leave a comment

DC2N5-LC revision 1.1 DIY kits sold out!

It’s with a big “thank you” to all those who have supported this project that I am happy to confirm the DC2N5-LC DIY kits have sold out!

I have no plans for a further batch based on demand. However I am going to ponder whether to sell one of my own fully built DC2N5-LCs as I currently own 3 of them.

Stay tuned!

Posted in Retrocomputing, Technical | Tagged , , , , , , | 1 Comment

Bleepload scanner improved further!

The “Bleepload” scanner in TAPClean now also supports multiple titles within the same tape image! As long as the “Bleepload Trigger” is acknowledged by the “Bleepload” scanner, the scanner’s state-machine is reset and ready to look for the next chain 🙂

Compared to the work I did on the “Visiload” scanner for supporting multiple titles within the same tape image, this change was really a simple one. However, in the long term I plan to extrapolate the multi-title support from “Visiload” and make it available to all other scanners within TAPClean’s analysis framework.

Stay tuned!

Posted in Retrocomputing, Technical | Tagged , , , , , , | Leave a comment

Bleepload Special scanner rewritten too

I finally managed to rewrite the “Bleepload Special” scanner in TAPClean. Along with more maintainable code, one of the advantages of the rewrite is that the search of file chains has been greatly simplified. As long as the first block in a chain (= sequence of blocks sharing the same pilot byte) is healthy, then the recognition results will be the same as before, but the scan time will be dramatically shorter.

As example, on my own machine, for “Flying Shark” the total scan time went from 22 seconds down to just 9. To be honest, there is further room for improvement that involves sacrificing some flexibility in the general case, but I am not too worried about going that far.

Furthermore, now both “Bleepload” scanners can take advantage of the “-skewadapt” option as there are no more raw pulse/byte reads, which is a huge benefit if you ask me 🙂

Regression testing on “Bleepload” titles can now start! Thanks go to Paul and Zoë for sharing their RAW tape samples so that I can go through such testing 🙂

Posted in Retrocomputing, Technical | Tagged , , , , , , | Leave a comment

Some insight on Bleepload Trigger

The “Bleepload Trigger” is an extra piece of data attached to the last “Bleepload” file in a chain that provides instructions on the data deciphering process and on the code to execute after such process completes.

So far TAPClean’s documentation wasn’t providing any further details about the structure of the 8 bytes in a trigger segment, so I just filled in those details:

2 bytes : Start address of cipher (LSBF)
2 bytes : Start address of RAM to decipher (LSBF)
2 bytes : End+1 address of RAM to decipher (LSBF)
2 bytes : Execution address (LSBF, CPU jumps here after block is deciphered)

Furthermore now TAPClean 0.37-pre9 decodes trigger blocks accordingly. As example, from “Bubble Bobble” we have:

---------------------------------
Seq. no.: 210
File Type: BLEEPLOAD TRIGGER
Location: $52AA7 -> $52AA7 -> $52ADF -> $532DE
LA: $0000 EA: $0000 SZ: 0
Pilot/Trailer Size: 0/2040
Read Errors: 0
Unoptimized Pulses: 0
CRC32: 00000000
 - Cipher Address : $0200
 - Start Address : $1F00
 - End Address : $7B00
 - Exe Address : $4800

For the time being, I am not extracting the contents of triggers to PRG files, hence not computing their CRC-32 value, in order not to change the overall CRC-32 value for known tape images. However, I shall do so at some point in future.
What I am doing at the moment is to also flag read errors if they occur in a trigger block, which wasn’t the case before the rewrite of the “Bleepload” scanner.

Finally, here’s some code from “Bubble Bobble” (within the last “Bleepload” file) that reads in the trigger and uses it for data deciphering and code execution:

*=$BF00

        LDY #$00      
BBF02   JSR S1DA6     ; Read byte
        STA $0073,Y   ; Store in zero page, $73-$7A
        INY           
        CPY #$08      
        BNE BBF02     ; Loop on all 8 bytes in a trigger

...

BBF38   LDA ($75),Y   
        EOR ($A8),Y   ; Use the first page of the loader to decrypt
        INC $A9       
        EOR ($A8),Y   ; And the second page too
        DEC $A9       

        STY $7B       ; Save Y

        PHA           
        TYA           
        AND #$3F      
        TAY           
        PLA           
        EOR ($73),Y   ; Use the cipher too

        LDY $7B       ; Restore Y
        STA ($75),Y   

        INY           
        BNE BBF38     

        INC $76       

        LDA $76       
        CMP $78       
        BNE BBF38     

... ; Loader's source code leftover

        CLI           

        JMP ($0079)   ; Use the execution address

BTW, it’s in between two segments of code in the above listing that I found some leftover of the loader’s source code the other day.

Happy days!

Posted in Retrocomputing, Technical | Tagged , , , , , , , | Leave a comment

GTK+ 2.x filechooser settings

If you despise the fact that in the latest versions of GTK+ the filechooser widget defaults to showing recent items, you might want to read further.

Such behaviour can be changed to show the current working directory (cwd) instead. That’s done by editing the contents of the gtkfilechooser.ini settings file.

Instead of:

StartupMode=recent

Have:

StartupMode=cwd

Under Windows the above mentioned settings file is available as e.g. C:\Documents and Settings\<User>\Local Settings\Application Data\gtk-2.0\gtkfilechooser.ini

Here are the full contents of mine:

[Filechooser Settings]
LocationMode=filename-entry
ShowHidden=false
ShowSizeColumn=true
GeometryX=311
GeometryY=212
GeometryWidth=818
GeometryHeight=475
SortColumn=name
SortOrder=ascending
StartupMode=cwd
Posted in Technical | Tagged , | Leave a comment