[HN Gopher] Freespin: C64 demo running on 1541 floppy drive ___________________________________________________________________ Freespin: C64 demo running on 1541 floppy drive Author : matthiaskramm Score : 143 points Date : 2021-07-03 18:41 UTC (2 days ago) (HTM) web link (www.quiss.org) (TXT) w3m dump (www.quiss.org) | ChrisGranger wrote: | I used to connect the line-out from my CD player to my Commodore | 1702 monitor's RCA luma jack (I think) to make a primitive | visualization that changed with the music, but _this_ is amazing. | Tommek wrote: | This! is! hacking! Making something new, out of the technology | you have at your hands. Probably he did not even had to use any | JavaScript. | ithkuil wrote: | it would be fun to try to fit a JavaScript interpreter into | that. | | I did write a very small once but far from fitting in 2k ram | stevep98 wrote: | 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 | bloqs wrote: | As someone younger... how did a teenager in that time period | possibly get that level of technical introduction to things at | that level? | ithkuil wrote: | There were magazines, and manuals were not too hard to find. | (These things had real technical manuals, with lots of | internals described) | | My personal experience as a kid is more oriented towards the | Amiga, but I suspect it was quite similar. | | One fun fact, the place I grew up was a minority language | region, so specialized magazines/books were only available in | the dominant language of the country which was not yet part | of my of my school curriculum. | | I ended up reading most of that stuff in German having | absolutely no idea what that meant; a double puzzle to solve. | przemub wrote: | Oh, I'm very curious, what language is that? Sorbian? | Romansh? | ithkuil wrote: | Italian in southern Switzerland. Big enough so you can | grow up listening and speaking it 100% of the time with | little and no exposure to german/french, not big enough | for newspaper/magazine distribution network to care about | it (I'm pretty sure some fashon and general culture | magazines were imported from italy, but not the Amazing | Computing magazine...) | | (Yes, I could have gone a few dozen kilometers cross the | border to Italy to buy some, but I was a kid and my | parents didn't indulge me further with this "toy") | mech422 wrote: | Actually, 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! | vidarh wrote: | To add to the "simplicity" aspect, I'd add: They were | _tiny_. | | You could read the entire OS ("KERNAL") and BASIC | disassembly start to finish (there were books listing them, | with comments added). You could systematically test what | changing registers would do - I remember pestering my | parents at work by calling them to let them hear what | sounds I managed to make by randomly POKE'ing things into | the sound registers just to experiment. | | And of course the manuals. While I agree with you books | were hard to get, the C64 manual was fantastic. | mech422 wrote: | Oh! I should probably mention - Assembly was one of only 2 | languages you were sure would be supported: you got ROM | Basic, and an assembler. Later, you might get | Forth,C,Pascal,Logo... especially if you could afford the | 'big' CP/M or Apple ][ machines...Though those probably | didn't have the ROM basic. | stevep98 wrote: | I 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. | reaperducer wrote: | _how did a teenager in that time period possibly get that | level of technical introduction to things at that level?_ | | Commodore published very detailed documentation for its | computers, including schematics. You could buy these in most | large book stores. | | There was also lots of information available through local | user groups, BBSes, BBS networks, and online services like | GEnie, Delphi, The Source, and CompuServe. | | Many local computer stores had regular meetings of their | customers where people would exchange programs and | information. | rasz wrote: | > 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 | 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 | | Real state of the art is pushed by Krill using technique you | describe, and is capable of 20x: | | 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.... | stevep98 wrote: | Thanks for the info. I had remembered something like a 17x | number but that just seemed like my mind was misremembering. | egypturnash wrote: | Krill's 50x loader (requires nonstandard format that's still | copiable by normal copiers): | https://csdb.dk/release/?id=197710 | arsenkay wrote: | Super impressive!!! This is SO much work! This brings back great | memories from the past when I was installing Doom from, like 12 | floppies. | jmull wrote: | This is crazy. | krallja wrote: | Yeah, I watched the whole video straight through with my mouth | wide open. What in the heck! | vidarh wrote: | Same here. I'd consider myself pretty jaded about C64 demo | effects. I've seen many impressive ones over the years, but | it's extremely rare to see one this original, that isn't | "just" a stepwise refinement of known effects but a massive | leap. | | At the same time it's a massive "d'oh" moment given the | technique of having the CPU generate the video signal on | 8-bit computers is much older than the C64, and running code | on the 1541 is also well established. | | [same approach on the C64 itself to do multi-monitor effects, | anyone? Wire up the user port, tape and/or serial port.... | Resolution would suffer, of course - but it'd be fun to see | attempts...] | | Given how heavily people have hacked it, both in terms of | software and hardware it's amazing that it's been overlooked | (and impressive to think of it). Then to get the idea, and | not just leave it at a proof of concept but producing | something this high quality... | LocalH wrote: | Very impressive. I wonder if the burst mode of the 1571 would be | useful at all | basementcat wrote: | Yes. The 6502 processor in the 1571 could run at 2 MHz (as | opposed to 1 MHz in the 1541) so it has the potential to | generate higher fidelity video and audio. | peter_d_sherman wrote: | >"Freespin is a Commodore 1541 demo, released in 2021. It runs on | the Commodore floppy drive. It is is the first demo on this | device. [ _Without_ the C64 attached!] | | [...] | | Freespin generates sound/music using the floppy drive mechanic | (in particular, the stepper motor responsible for moving the head | to the right track). | | _Video is generated through the [1541 's] serial bus._" | | PDS: _Absolutely amazing!_ | | I have never seen this done before! | | Related: | | "How freespin bit bangs the video signal" | | http://www.quiss.org/freespin/raster.html | ac29 wrote: | Floppy drive music is pretty impressive, see also Floppotron: | https://www.youtube.com/c/Pawe%C5%82Zadro%C5%BCniak | | (they've got some non-floppy devices like scanners too) ___________________________________________________________________ (page generated 2021-07-05 23:00 UTC)