Mitch / ESI sent me a SFD-1001 disk with the sourcecode to Eagle Term II.

Since the disk was decades old, there was a risk it wouldn’t even be readable anymore. The disk density is 100 TPI meaning it couldn’t be read by just any drive, so the hunt for a SFD-1001 started. Fortunately I got held of one and connected my Zoomfloppy to it. The only thing it produced were a lot of intermittent faults. Thanks to forum64.de members, I built a IEEE-488(6522) interface and could conclude the drive was acting up. After replacing a couple chips and doing a full recap the drive started working.

I knew that this might be the only disk with the source code in existence, so I wanted to make sure to recover as much information as possible.

Before the first attempt to read the directory, I went native c64 to write a program which would save raw directory information into memory while displaying it on the screen.


Probably one of the last times the disk allowed for a directory to be read properly before giving up. All needed data was already recovered at this point.

 
After the first read, the drive started to have problems reading the directory. An ocular inspection revealed there was damage to the disk surface, this disk would not last for long.

To relief some stress on the directory track, I made another program to copy files from specific locations(TR/SE) with information on the D80/D82 diskformat and the data gathered earlier.

The process was slow, a lots of retries and a drive sounding like an old harvester. After 5 rounds of copying, the drive refused to load any files at all on the disk. I had gotten out different sizes on the same file, depending on how (un)successful the reading was.

Majority of the files were plain-text and ended with “.END” (assembler directive), which also was an indicator if the file had been fully copied. I could also verify, by reading the sources, if a file was cut in half and/or having incomplete blocks of code.

With 5 sets of files I could stitch together all data, except for one file: “IRQ.INC”.

 
IRQ.INC was missing 4 blocks of data.

;IRQ CONTROL
IRQON
SEI
LDA $0314
STA IRQVEC
LDA $0315
STA IRQVEC+1
LDA #IRQCDC
STA $0315
CLI
RTS
IRQOFF
SEI
LDA IRQVEC
STA $0314
LDA IRQVEC+1
STA $0315
CLI
RTS
;
IRQCDC
LDA $DD01 ; PORT
AND #%00010000 ; CARRIE

I reconstructed IRQ.INC by disassembling an earlier version of Eagle Term II and translated the v1.9 sourcecode into a modern cross compiler and downgraded(rewrote) it to the earlier version. That part of code was identical in both versions.
 


CBM DIRECT ASSEMBLER V080282 (C) 1982 BY COMMODORE BUSINESS MACHINES
After recreating IRQ.INC it was possible to build Eagle Term v1.9 using the original assembler.
 

 
Eagle Term II v1.9 Sourcecode:


The SFD-1001 image is identical to the original disk, whereas the 64tass file only has the files needed to compile Eagle Term.