[HN Gopher] C64 OS: make a Commodore 64 feel fast and useful
       ___________________________________________________________________
        
       C64 OS: make a Commodore 64 feel fast and useful
        
       Author : cpeterso
       Score  : 125 points
       Date   : 2021-12-10 18:10 UTC (4 hours ago)
        
 (HTM) web link (c64os.com)
 (TXT) w3m dump (c64os.com)
        
       | colordrops wrote:
       | Love the design of the website, despite the difficult readability
       | of the fonts. Simple easy layout, happy vibes, reminds me of the
       | old days.
        
       | bananabernhard wrote:
       | I'm a bit bummed out that it's closed source - I would've liked
       | to look through the code.
        
       | tyingq wrote:
       | Interesting. I know some have tried to make faster versions of
       | old 8 bit computers from the hardware side instead.
       | 
       | Here's an FPGA-based drop-in replacement for 65C02 that runs at
       | 100MHz: http://www.e-basteln.de/computing/65f02/65f02/
       | 
       | Not tried in a C64 yet, but he did get it working in a Commodore
       | PET.
        
         | basementcat wrote:
         | You can't just "drop in" a faster 6502 (or 6510) into something
         | like a C64. For one, all the serial i/o routines are software
         | bit-banged so parts of the "ROM Kernal" need to be modified.
         | More importantly, the VIC-II chip is the DRAM memory controller
         | and it is tightly coupled with NTSC or PAL signal timings.
         | 
         | Most accelerator boards for the C64 need quite a bit of glue
         | logic to overcome these difficulties.
        
           | tyingq wrote:
           | It has some of that accounted for, like:
           | 
           |  _" Upon power-on, the 65F02 grabs the complete RAM and ROM
           | content from the host and copies it into the on-chip RAM,
           | except for the I/O area. Then the CPU gets going, using the
           | internal memory at 100 MHz for all bus accesses except for
           | any I/O addresses"_
           | 
           | There's also some soft cores for a Z80 that can work at the
           | stock clock speed, but do more work per cycle, which is
           | interesting.
           | 
           | Edit: Some, not all, things are covered.
        
             | basementcat wrote:
             | The reason why many 8 bit home computers put the memory
             | controller in the graphics chip was to give the graphics
             | subsystem "first dibs" over bitmap data in RAM. If the
             | microprocessor has its own copy of RAM then the graphics
             | subsystem may never update the display unless the cpu
             | "writes through" all memory write operations (resulting in
             | a significant performance slowdown).
        
       | prvc wrote:
       | I see lots of instructions on how to set up a system on the
       | website, but nothing which tells me why this software would be
       | useful.
        
         | the_af wrote:
         | "Useful" in what sense? This is retrocomputing, a hobby.
         | Nothing about it is "useful", it's about playing with old
         | computers and emulators for its own sake.
        
       | kingcharles wrote:
       | It's a GUI OS, not command-line as I expected:
       | 
       | http://c64os.com/c64os/usersguide/ (screen shot)
        
         | mastazi wrote:
         | You can see a bit more of the use interface here
         | http://c64os.com/c64os/usersguide/userinterface
        
       | z3t4 wrote:
       | If you are interested about the OS: http://c64os.com/c64os/
        
       | jazzyjackson wrote:
       | I love these projects that show what can be done with 1mhz cpu
       | and mere kilobytes of ram, really makes you wonder what we're
       | doing with the other 99% of hardware performance we've achieved
       | since then
        
         | amelius wrote:
         | Uh... watching 4k video, for example?
        
           | badsectoracula wrote:
           | You certainly don't need modern PC power even for 4k video,
           | though you may need it for doing realtime decompression of
           | some very high compression codecs (but that isn't "watching
           | 4k video", it is "doing realtime h265 decompression for 4k
           | video" or something along these lines).
           | 
           | Though codecs are one of the few cases where you see hardware
           | being taken advantage of because that is basically their
           | entire purpose.
        
             | codedokode wrote:
             | Playing video is very expensive task. Just updating 4K
             | screen at 60 frames per second requires transferring of
             | 3840x2160x60 ~ 497 million pixels or 1,49 Gbytes per second
             | (if you skip every fourth byte). It will take at least
             | several instructions (in the best case) to calculate value
             | of every byte so the CPU should be able to perform billions
             | of instructions per second.
             | 
             | I doubt you can do it without a "modern PC" with hardware
             | graphic accelerator.
             | 
             | Also modern codecs require lot of computations and lot of
             | memory. For example, codecs like VP9 require to buffer up
             | to 8 frames for reference. That would take 8x3840x2160x4 ~
             | 265 Megabytes of RAM. The program will need to extract
             | bits, decode arithmetic coding and calculate lots of IDCTs.
             | 
             | I did some research to see if it is possible to play
             | Youtube video on 8-bit CPUs. What I found is that there is
             | little hope for this. It's better to develop your own video
             | compression format.
        
               | badsectoracula wrote:
               | > Playing video is very expensive task. Just updating 4K
               | screen at 60 frames per second
               | 
               | Nobody mentioned anything about 60 fps. A _ton_ of video
               | is at 24 or 30 fps.
               | 
               | > requires transferring of 3840x2160x60 ~ 497 million
               | pixels or 1,49 Gbytes per second (if you skip every
               | fourth byte).
               | 
               | You do not need to update the entire screen all the time,
               | you can do partial updates (since very frequently not
               | 100% of the screen changes - it is the most basic fact on
               | which video codecs rely on) and you can "heal" the output
               | over time after partial updates (also important for video
               | playback where you can't guarantee a fast stream).
               | 
               | > I doubt you can do it without a "modern PC" with
               | hardware graphic accelerator.
               | 
               | Why the limitation for hardware graphics accelerators?
               | Hardware accelerators exist for decades now and even
               | hardware video decoders exist for more than a decade. If
               | anything not using those is "not taking advantage of the
               | hardware" that i mentioned.
               | 
               | > Also modern codecs require lot of computations and lot
               | of memory. For example, codecs like VP9 require to buffer
               | up to 8 frames for reference. That would take
               | 8x3840x2160x4 ~ 265 Megabytes of RAM.
               | 
               | Sure, but that is RAM computers also had for more than a
               | decade now - the PC i used in the early/mid-2000s had 2GB
               | of RAM - hell, even the cheapo EeePC netbook from the
               | late 2000s had 1GB of RAM.
               | 
               | > I did some research to see if it is possible to play
               | Youtube video on 8-bit CPUs. What I found is that there
               | is little hope for this. It's better to develop your own
               | video compression format.
               | 
               | Sure, but i never mentioned anything about 8-bit CPUs,
               | YouTube or even existing video compression (or specific
               | framerate for that matter). What i wrote is that you do
               | not need "modern PC power" to do 4K video. You _do_ need
               | more processing power than what would be found in 8-bit
               | CPUs (or at least common 8-bit CPUs you 'd find in 80s
               | home computers), but i'm certain you can have a 10 year
               | old PC play 4K video without trying that much. Perhaps
               | even a 15 year old PC with a bit of effort.
               | 
               | FWIW what i had in mind when i wrote that comment was the
               | "8088 Domination" demo which used a custom codec and
               | player to do fullscreen video and audio playback on an
               | original IBM PC and honestly i do not for one second buy
               | the notion that if you can do that on a 40 year old PC
               | you wont be able to have 4K video on a 15 year old PC -
               | if anything i might be too generous here.
        
               | rbanffy wrote:
               | > Playing video is very expensive task. Just updating 4K
               | screen at 60 frames per second requires transferring of
               | 3840x2160x60 ~ 497 million pixels or 1,49 Gbytes per
               | second
               | 
               | Or an analog signal and you do it the way TVs used to do.
               | There were analog HDTV standards before we all moved to
               | digital.
        
         | cageface wrote:
         | The Luddite sentiment common among programmers today really
         | surprises me. The software we're building today is vastly more
         | powerful and capable than anything from the C64 era.
        
           | throwaway47292 wrote:
           | As I am writing this comment my 2017 macbook is spinning
           | fans, as if it is doing protein folding.. and it has like 3
           | tabs open on chrome.
           | 
           | And for what? to edit a text box?
           | 
           | There are new capabilities around encryption and encoding,
           | things like h265 and etc, which of course help with medical
           | diagnostics and such.
           | 
           | I would take c64 software any time, look at this
           | https://www.youtube.com/watch?v=ROr8JhilPhI its from 1983.
           | 
           | Imagine what kind of software would the people from 1980s
           | write if they just had a raspberry pi 4 to work with..
        
             | philipkglass wrote:
             | On the C64 text was PETSCII [1]. On your Mac in Chrome it's
             | Unicode. Running a basic multilingual plane text editor on
             | the C64 is probably impossible due to RAM constraints. Even
             | with a RAM expansion and imagining it had a framebuffer I'm
             | doubtful that the C64 could edit Unicode text at
             | interactive speeds.
             | 
             | In the 1980s only a small portion of the developed world's
             | population used home computers. Today the majority of
             | people use computing devices. Most of them use languages
             | that cannot be represented with PETSCII or ASCII. It's
             | amazing what motivated people can do with low power
             | machines, but let's not forget how going back to the 1980s
             | would discard _valuable_ capabilities as well as bloat.
             | 
             | [1] https://en.wikipedia.org/wiki/PETSCII
        
             | sebular wrote:
             | People from the 1980s are still alive and they're not
             | making anything more impressive than anyone else.
             | 
             | These people weren't magicians only held back by a lack of
             | computer power, they were (again, "are") regular people
             | trying to maximize their output given their resources.
             | 
             | Let's say you go back and hand a powerful computer to them.
             | What would Mac Paint look like? I'm sure it would have
             | colors (assuming you also have them a monitor), probably a
             | lot more of those goofy and useless textured fills nobody
             | wants, layers, probably some filters, higher resolutions,
             | and probably simple brush strokes. But do you really think
             | they would manage to implement any of the seriously
             | impressive features that modern Photoshop has? Content
             | aware fill? AI upscaling? Of course not. It would probably
             | take them a long time to get smart selection working in a
             | halfway decent manner.
        
           | ketralnis wrote:
           | I don't think it's "Luddite sentiment" to ask why one
           | computer feels as productive with the same perceived
           | performance as one that's literally a billion times faster.
           | 
           | I believe the sibling saying that it's programmer
           | productivity is correct. That same programmer can and does
           | now spend a week whipping together a program in Python that
           | took a year under the older constraints. And users expect
           | more out of them, with whizz-bang animations and app-store
           | integration.
           | 
           | But if that same programmer _did_ spend the year instead of
           | the week, what could they do? The quality and performance
           | would probably be a lot better. Unless they depend on
           | externalities that don't also scale up their quality game,
           | like basically anything involving the web.
        
             | cageface wrote:
             | It's Luddite in that it rejects modern tools and methods in
             | the belief that there's an older, more artisanal method of
             | doing work.
             | 
             | If you believe this is the case then you can put your
             | belief to the test. Build software the way you think it
             | should be built and see if users are willing to pay for it.
        
           | [deleted]
        
           | badsectoracula wrote:
           | Luddite is someone who is opposed to new technology, which
           | doesn't apply here as the sentiment isn't about being opposed
           | to the new tech but about the new tech not being taken
           | advantage of.
           | 
           | The software we build today is "vastly" more powerful in the
           | sense that, strictly speaking, you can do more stuff, but it
           | is way less powerful - and often broken - than what it could
           | be, considering what you can see being possible on older
           | hardware and what seems to be done in modern hardware.
           | 
           | Also it isn't really something that happens today, here is a
           | nice (and funny) talk from Joe Armstrong on the topic from
           | almost 8 years ago[0]. Though this sort of sentiment goes way
           | back, e.g. Wirth's classic "Plea for lean software" article
           | from 1995[1].
           | 
           | (Joe's talk is more about the broken part and IMO he
           | misidentifies the issue being about trying to make things
           | fast when the real issue -that he also mentions- is that
           | pretty much nobody knows what is really going on with the
           | system itself)
           | 
           | [0] https://www.youtube.com/watch?v=lKXe3HUG2l4
           | 
           | [1] https://cr.yp.to/bib/1995/wirth.pdf
        
             | cageface wrote:
             | This is because people don't want to pay the cost of
             | software carefully developed to take maximum advantage of
             | modern hardware. In specific niches like audio production
             | where this is desired then prices run into hundreds of
             | dollars for a single plugin to cover the development costs.
        
               | hedgewitch wrote:
               | And even then, quite a lot of that audio production
               | software is very, very inefficient, primarily due to poor
               | GUI development. There are a few popular choices of
               | software that are very well-known for being CPU hogs,
               | even relative to more complex software.
        
               | FleaFlicker99 wrote:
               | Particularly the business often doesn't want to take on
               | the goal of improved performance when good-enough will
               | suffice. Which can often make sense when you factor in
               | increase development costs, reduced
               | flexibility/maintainability, and reduced ability to
               | recruit for people with the skillset to work on such
               | things.
               | 
               | Then again, performance is often a feature in itself. In
               | some cases it can open whole new areas of potential
               | business. Often times it isn't even particularly hard to
               | achieve, it just requires decent engineering practices.
               | 
               | Unfortunately good engineering practices can be hard to
               | find/hire for, especially among a development
               | community/culture that hasn't had to bother caring about
               | performance for a long time.
        
         | MrBuddyCasino wrote:
         | Programmer productivity. As long as this is the bottleneck in
         | determining market success of a product, this tradeoff will
         | continue.
        
           | noobermin wrote:
           | Well in between the ads and google spying I often do not feel
           | productive.
        
           | nradov wrote:
           | Programmer productivity has gotten worse. None of the
           | development tools in widespread use today is as productive as
           | Visual Basic or Delphi were back in 1996.
        
             | keyle wrote:
             | Have you ever wondered why?
             | 
             | It's because today isn't about programmer productivity.
             | 
             | It's about enabling teams to work together without tripping
             | over their own feet and killing the business.
             | 
             | So much complexity to solve essentially what is a human
             | problem.
             | 
             | It takes 5 people to do the job of 1 back then, and that's
             | what the industry wants. No one would trust an individual.
             | 
             | Too much money flowed into this industry, leading to waste,
             | as it became clearly a pillar of the future.
        
             | anyfoo wrote:
             | This needs a lot of qualifiers. I can see that for web
             | development maybe (I don't know, haven't done that for
             | almost 10 years, but I can imagine given the constraints),
             | but for system level programming for example I don't want
             | to go back to the 90s. Not that Visual Basic or Delphi
             | worked for that anyway.
        
               | badsectoracula wrote:
               | Technically Delphi could have worked but you'd need to
               | use your own RTL and aside from a few additional language
               | feature, you'd be losing 99% of what Delphi offered
               | anyway.
        
             | analognoise wrote:
             | Lazarus and FreePascal would beg to differ:
             | 
             | https://www.lazarus-ide.org
             | 
             | Everything you ever loved about Delphi 7, but with a ton of
             | modernization. LGPL, too!
        
               | beamatronic wrote:
               | Serious question: Can you make "Netflix money", er,
               | "FAANG money", as a Lazarus developer?
        
               | badsectoracula wrote:
               | No but that isn't because of Lazarus itself but because
               | "Netflix/FAANG" doesn't use it as what it does isn't
               | really in their business interests. Lazarus is mainly
               | about making desktop applications. It can do web, etc but
               | it isn't really a focus and you lose most of the visual
               | functionality anyway (yeah ok, you can set up URL routing
               | via the object inspector and connect DB components
               | together, but 99% of the work is done via code anyway so
               | it doesn't provide something better than what you'd find
               | in more popular tools).
        
               | datalus wrote:
               | No, but all those people making "Netflix money" aren't
               | really changing technology, are they? I'd argue FAANG is
               | stagnating it, and telling themselves differently.
               | 
               | I guess if you want to make gobs of cash, fine. You could
               | also just go into finance and make more than FAANG money
               | if you're talented enough.
        
               | gibolt wrote:
               | I'd argue that Microsoft, Google and Apple have enabled
               | massive growth in technology. New uses for OSs, new
               | places for them to run, and ways to make starting far
               | more accessible/collaborative.
               | 
               | Even if there is 2 step forwards, one step back, the
               | overall benefit of options available due to the vast
               | number of people contributing their creativity is only
               | possible due to these companies.
        
               | umanwizard wrote:
               | Facebook is a major contributor (sometimes the primary
               | one) to many famous open-source projects: Linux,
               | mercurial, MySQL, React, jemalloc, PyTorch, GraphQL, and
               | probably several others I'm not thinking of.
               | 
               | They're also one of the top AI/ML research institutions
               | in the world with a huge chunk of the papers published at
               | top conferences.
               | 
               | Similar statements are also true of Google.
        
               | dukeofdoom wrote:
               | Skype was originally written in delphi.
               | 
               | "Microsoft will acquire Skype, the leading Internet
               | communications company, for $8.5 billion"
        
               | baq wrote:
               | google developed golang instead of improving pascal, so
               | you probably can't. the two languages have surprisingly
               | similar goals.
        
               | vidarh wrote:
               | > the two languages have surprisingly similar goals.
               | 
               | Not so surprising, given the backgrounds of the key
               | designers of Go, I feel. Griesemer even got his PhD under
               | Mossenbock and Wirth.
        
           | pjmlp wrote:
           | Comparing Delphi and C++ Builder with modern SPAs, or dealing
           | with the Kubernetes boilerplate doesn't really sound that
           | productive to me.
        
         | codedokode wrote:
         | An expansion card is recommended for this OS, so there are
         | hundreds of kilobytes or even several megabytes, not "mere
         | kilobytes".
        
           | kaladin-jasnah wrote:
           | Even then, I think the point would still hold.
        
         | guessbest wrote:
         | Encryption for communications to include HTTPS and TLS 1.3. If
         | it wasn't for all that, you could take an early 90's computer
         | on the internet still.
        
       | hitekker wrote:
       | This is a beautiful landing page for what looks like a beautiful
       | project. Nicely done!
        
       | mrandish wrote:
       | Now if only MSFT would release a new OS that made a PC feel fast
       | and useful! [/JOKE]
        
         | gerdesj wrote:
         | I remember the first time I span up a Linux distro on a PC. The
         | console felt so bloody quick in comparison with the Win98 that
         | was shuffled out of the way to make room for something called
         | ext2. I compiled my first kernel - 1.98something I think - with
         | something called "eggs" (egcs - ooh controversial!) and the
         | text flew up the screen smoothly and fast, really, really fast.
         | 
         | This machine had DOS and W4WG 3.11 before that and prior to
         | that I had a 80486 and before that a 80286 plus a '287 co pro
         | with just DOS 3-5ish so I had a preconception on what streaming
         | text consoles should look like. I'd also used some green or
         | amber screens with something large and complicated behind them.
         | That's what IT looks like to most people (something
         | complicated) - don't forget that! My memory grows a little dim
         | but I think it was a Pentium II box that I first slapped Linux
         | on.
         | 
         | 25 years later.
         | 
         | I update my various Linux boxes in a minute or two at most. I
         | update Windows boxes in a few hours at most - normally around
         | 15 mins but several hours is not unknown.
        
       | aj7 wrote:
       | I liked the post, but why not emulate on faster, more portable
       | hardware?
        
         | noobermin wrote:
         | There was an ad for an extreme engineering show on cable
         | decades back that had a dude say something like, "Why would we
         | put a jet engine on a motorbike? Because we can!"
        
       | nradov wrote:
       | Cool project. But much of that functionality was available with
       | GEOS in 1986.
       | 
       | https://en.wikipedia.org/wiki/GEOS_%288-bit_operating_system...
        
         | the_af wrote:
         | The author mentions GEOS among those efforts that, and I quote:
         | 
         | > [...] had good intentions but pushed the machine in ways it
         | wasn't designed for, compromising on speed and usability in the
         | pursuit of features available on more powerful computers.
         | 
         | I must be honest and say the statement feels a bit puzzling,
         | since C64OS certainly wasn't something the C64 was designed
         | for...
        
           | layer8 wrote:
           | Maybe they are alluding to the fact that GEOS was using
           | graphics mode for the GUI (which makes drawing the UI slower
           | and requires more memory, thus arguably would require a more
           | powerful machine) where C64OS is using text mode (plus the
           | graphics split mode) which arguably is more suited to the
           | C64.
        
         | [deleted]
        
         | gerdesj wrote:
         | I remember switching floppy discs rather a lot when trying to
         | use GEOS back in the '80s.
         | 
         | My C64 now has a USB interface 8)
        
       | dang wrote:
       | Past related threads:
       | 
       |  _Shared Libraries for C64 OS_ -
       | https://news.ycombinator.com/item?id=26590376 - March 2021 (1
       | comment)
       | 
       |  _Rethinking the Commodore 64 Memory Map (2018)_ -
       | https://news.ycombinator.com/item?id=20317767 - June 2019 (17
       | comments)
       | 
       |  _C64 OS: A Commodore 64 OS with Modern Concepts_ -
       | https://news.ycombinator.com/item?id=17997911 - Sept 2018 (42
       | comments)
        
         | emrah wrote:
         | dang, I see you do this on a regular basis. Is it automated or
         | are you doing this manual?
        
           | dang wrote:
           | Kind of in-between. Here's a pointer to past explanations:
           | https://news.ycombinator.com/item?id=29370676
        
       ___________________________________________________________________
       (page generated 2021-12-10 23:00 UTC)