10 REM"_(C2SLFF4

(beej.us)

45 points | by ingve 2 hours ago

4 comments

  • summa_tech 18 minutes ago
    It always feels a bit like lost magic. But at the same time, it's also something that was only enabled by the very high determinism of these old home systems. The design relies on having fixed RAM locations, no multiprocessing, etc.

    Incredible to find out that typing the paper program would not have worked, though. And in such a disappointing way no less.

    • reaperducer 11 minutes ago
      It always feels a bit like lost magic.

      I sometimes wonder if there is still a lot of that magic in the tech world, but were so used to having everything abstracted away from us in multiple layers that we've lost the ability to look for it.

      I think about the TLA hackers who do seemingly impossible things. Surely they must operate on this level.

      • summa_tech 0 minutes ago
        It certainly tarnishes the shine to have a per-OS-version table of offsets to patch ;(
  • ErroneousBosh 48 minutes ago
    This is exactly how we used to do machine code on the Sinclair ZX81, too, where there was no way to declare a block of memory as "off limits" to BASIC, and no DATA statements like in the later (and much bigger) ZX Spectrum BASIC.

    Then you'd do "RANDOMISE USR 16514" to start it. Actually USR was interesting because it would pass back the contents of BC when your machine code routine returned to BASIC.

  • classified 41 minutes ago
    Those were the times when programming a computer was an adventure in and of itself, bastardizing BASIC with assembler. Doubtlessly the first Make Your Own Adventure setting!
  • aa-jv 1 hour ago
    The Oric Atmos won the 10-line BASIC Programming Competition in 2022 with a 1000-room dungeon crawler named "SNAKE TEMPLE":

    https://bunsen.itch.io/the-snake-temple-by-rax

    IN 10 LINES OF BASIC!!

    I thought it was cute that it used the RND() function to seed things necessary to generate each room .. so I used that technique in my own Oric game, which generates a large blob of graphics data using the RND() seed, meaning I don't have to ship that data in the program itself. I find the pseudo-ness of the RNG infinitely resourceful in that regard ..

    Another cute trick on the Oric Atmos is to seed the 14 registers of its synth chip with ROM data .. meaning the Oric Atmos has literally THOUSANDS of onboard sound presets to choose from - once you find them, of course. So I wrote a program to find the most interesting ones and have been accruing a list of "synth presets" that come onboard with the Oric, for use in my game.

    Its quite rewarding to go back to these machines and use such techniques to generate nearly-infinite levels/sounds/etc.

    • ErroneousBosh 45 minutes ago
      > I find the pseudo-ness of the RNG infinitely resourceful in that regard

      I can't remember how the ORIC BASIC does it but a cool property of LFSRs as PRNGs is that if you pick the right taps and length they must cycle through every possible number from 1 to (2^length)-1 exactly once, excluding zero. That's how the Wolfenstein "Fizzle Fade" effect worked - set up an LFSR long enough that every possible pixel can be visited once, with a few left over, and then throw away any that don't fit.