5 ms·
The processor in the 1541 was identical to the c64… 6502. (Or 6510C) The serial link between them was notoriously slow. I studied them extensively as a teenage
by stevep98 5y ago
The processor in the 1541 was identical to the c64… 6502. (Or 6510C)
The serial link between them was notoriously slow. I studied them extensively as a teenager, and had reams of disassembly printed out in fanfold dot matrix, with my own scribbles. This is how I learned 80% of my computing skill set.
The signaling between the drive and computer used a clock line and a data line. When reading from the drive, the drive would set the data bit then invert the clock. The
CPU would be polling the clock line, and when it changed, it would read the data bit. There wasn’t any fancy hardware like DMA. It was basically two cpus connected to get her with a couple of I/O pins.
I can’t remember where I saw it, but there was an extremely fast driver going around, and sure enough I disassembled it to find out what they were doing.
Before each 256-byte sector was transferred there was a loop which synchronized the cpus in the drive and host computer, down the the clock cycle. Then they used both clock line and data line to blast all the data, two bits at a time down the lines. The cpus didn’t wait for any clock to change, they just read the data as fast as possible. Wrapped with a bit of error detection to top it off.. in the end it was about a 10x speedup with the same hardware…. Which at the time was totally mind blowing
- rasz 5y ago> in the end it was about a 10x speedup 10x speedup is what every disk Turbo was doing back in the day, with ActionReplay6 topping off at 5KB/s https://www.c64-wiki.com/wiki/Comparison_of_fast_loaders https://www.c64-wiki.com/wiki/Comparison_of_fast_loaders standard C64+1541: SAVE/LOAD: 374/407 bytes/sec SEQ write/read: 349/395 bytes/sec Data transfer: 455 bytes/sec http://tech.guitarsite.de/fastloader.html http://tech.guitarsite.de/fastloader.html Real state of the art is pushed by Krill using technique you describe, and is capable of 20x: https://csdb.dk/release/?id=189130 https://csdb.dk/release/?id=189130 Article about one aspect of modern fastloaders - decoding GCR on the fly: https://www.linusakesson.net/programming/gcr-decoding/index.php https://www.linusakesson.net/programming/gcr-decoding/index....
- stevep98 5y agoThanks for the info. I had remembered something like a 17x number but that just seemed like my mind was misremembering.
- egypturnash 5y agoKrill’s 50x loader (requires nonstandard format that’s still copiable by normal copiers): https://csdb.dk/release/?id=197710 https://csdb.dk/release/?id=197710
- bloqs 5y agoAs someone younger... how did a teenager in that time period possibly get that level of technical introduction to things at that level?
- stevep98 5y agoI wasn’t bad with programming BASIC, but the true epiphany came when I went on vacation to Spain (very common for UK kids). I took the programmers reference manual which not only had info about BASIC, which I already understood, but it included info on all the 6502 opcodes and all the c64 registers. It really took me a long time to understand what this was. It would have been much easier to have a mentor to help me through this… it was a reference, not a tutorial. But at some point, it clicked, and I started writing out the assembly… there was a register to control the screen background color… so I just blasted 0 into that register to make it black. In what was probably my greatest ever fear of engineering, I then hand-assembled my two-line assembly into 5 bytes of machine code. But I had to wait until I got back from vacation to try it. It worked… it changed the background color, but it crashed the machine… I had forgotten to add ‘return from subroutine’, after that it worked, and that was the beginning of my journey. I regret not spending more on proper tooling early on. But all the good assemblers were cross-assemblers that ran on pc’s. There’s was also a really good book by Raeto Collin West that went into more details, and that’s where I got some of the drive register info. There is a command you can send to the printer to dump its memory, so that’s what I did. (To get it’s ROM to see what it’s drivers are doing) The printer was critical to being able to read through the assembly and annotate it. You learn how to read ASCII in your head, etc.
- mech422 5y agoActually, unless you lived in a big city or near a university getting any level of programming books was tough... However, assembly was more common back then and really wasn't consider a 'black art'. It was just what you did. Also, 8 bits were a lot simpler to program (flat address space, no protected mode, etc) - at most, you might have to deal with some bank switching.. Even hobbyist mags like Compute! would run articles on assembly - and DDJ would have that fancy 'C' stuff too!
- 5y ago
- canadianfella 5y agoTo get her?