Author: scruss

  • Taxman – a BASIC game from 1973

    Back in 1973, the future definitely wasn’t equally distributed. While in Scotland we had power cuts, the looming three-day week and Miners’ Strike I, in California, the People’s Computer Company (PCC) was giving distributed computer access, teaching programming and publishing computer magazines. I don’t think we got that kind of access until (coincidentally) Miners’ Strike II a little over 10 years later.

    taxman drawn image from People's Computer Company magazine (1973) , with "1 for you 19 for me" quote from The Beatles song "Taxman"
    flares? platforms? centre parting? bow tie? It was 1973 after all

    But the People’s Computer Company magazine archive is a sunny thing, overfilled with joyful amateur enthusiasm and thousands of lines of code fit to make Edsger Dijkstra explode. Of course it was written for the local few who had access to mainframes and terminals, but it hardly seems to come from the same world as the dark evenings in Scotland spent cursing the smug neighbours’ house with all the lights on, their diesel generator putt-putting into the night.

    Lots of these games from the PCC era are forgettable now. The raw challenge of guessing a number on a text screen has paled somewhat in the face of 4K photo-realistic rendering. One game I found is still a little challenging, at least until you work out the trick of it: Taxman (or as the authors tried to rename it later, Factor Monster). Here’s a tiny sample game transcript:

    Hi, I'm the taxman
    Do you want the regulations?
    (1=Yes, 0=No)? 0
    
    How many numbers do you want
    in the list? 6
    
    The list is: 1  2  3  4  5  6 
    
    You take? 5
    Your total is  5 
    I get  1 
    My total is  1 
    
    New list:  2  3  4  6 
    
    You take? 6
    Your total is  11 
    I get  2  3 
    My total is  6 
    
    New list:  4 
    I get  4 
    because no factors of any number
    are left.
    My total is  10 
    
    You  11  Taxman  10 
    You win !!!
    
    Again (1=yes, 0=no)?

    Seems I sneaked a lucky win there, but it’s harder than it looks. The rules are simple:

    • Start with a list of consecutive numbers
    • You choose a number, but it has to have some factors in the list
    • The taxman (or the factor monster, a concept I much prefer as it doesn’t reinforce the Helmsley Doctrine) takes all the remaining factors of your number from the list
    • You get to choose a number from the list, which is now missing your previous choice and all of its factors, and repeat
    • Once the list has no multiples of any other number, the taxman/FM takes the rest
    • The winner is whoever has the largest sum.

    For such a simple game (or perhaps, such a simple me) the computer wins surprisingly often. Since I find it fun to play, I thought I’d share the 1973 love as much as possible by porting to all of the BASIC dialects that I knew.

    Plain text BASICtaxman.bas – runs under interpreters such as bas. Almost verbatim from the 1973 publication. May not allow you to play again on some interpreters; you might want to try my slightly rearranged 40 column version that should run on systems that don’t allow a variable to be dimensioned twice.

    taxman on Amstrad CPC: starting with numbers 1-6, player has taken 4, so taxman takes 1 & 2, leaving 3, 5 and 6
    taxman on Amstrad CPC: how BASIC programs look to me, yellow on blue 4 lyfe

    Amstrad CPC Locomotive BASICtaxman.dsk – or as I call it, BASIC. 40 columns yellow on blue is how BASIC should look.

    taxman on BBC Micro, showing games tart for 1-6. Adjacent numbers are a full column apart
    taxman on BBC, Mode 7: dig the weird spacing

    BBC BASICtaxman.ssd – for all the boopBeep fans out there. You can actually play this one in your browser, too. Yes, the number formatting is weird, but BBC BASIC was always its own master.

    taxman: Commodore 64 showing the instructions
    taxman on C64

    Commodore 64taxman.prg – very very upper case for this dinosaur of a BASIC.

    taxman running on Apple II: loaded from disk, started with 6 numbers
    taxman running on Apple II

    Apple II AppleSoft BASICTAXMAN.DSK – lots of fiddling with import tools and dialect weirdness because Apple.

    taxman: end of game on ZX spectrum
    taxman: end of game on ZX spectrum

    ZX Spectrum (Sinclair BASIC)taxman.tap – 32 columns plus a very special dialect (no END, GOTO and GOSUB are GO TO and GO SUB) meant this took a while, but it was quite rewarding to get going.

    taxman - BASIC program listing on ZX-81 running under sz81 emulator, Linux window borders visible
    Taxman on ZX81: more SCROLLs than the Dead Sea

    Sinclair ZX81 (16 K) – taxman.p – this one was a fight. The ZX81 didn’t scroll automatically, so you have to invoke SCROLL before every newline-generating PRINT or else your program will stop. For some reason this version gets unbearably slow near the end of long games, but it does complete.

  • Six Bog Rolls: an installation

    Six Bog Rolls: an installation

    Six Bog Rolls: an installation

    Instagram filter used: Normal

    Photo taken at: Akin Collective Sunrise Studios

    View in Instagram ⇒

  • Nionics Atto – Arduino on a dime #smol

    Nionics Atto – Arduino on a dime #smol

    Nionics Atto – Arduino on a dime #smolUnfortunately — and you can see it here on the completely dry five USB pins — the soldering on the USB connector of the Nionics Atto I just got wasn’t good. When I soldered on the weentsy pitch headers the heat of the iron melted the one joint that was holding the connector on. It’s impossible to repair without thermal rework equipment.

    I really wish that Nionics had pre-soldered those 1.27 mm / 1⁄2₀″ headers as it was a nice board. Since it breaks out only a few of the ATmega32U4‘s pins, instead of a single LED it has an RGB LED for an indicator. Otherwise, program it like an Arduino Leonardo.

    Instagram filter used: Lo-fi

    View in Instagram ⇒

  • at the sign of the pleasingly spicy dinner

    at the sign of the pleasingly spicy dinner

    at the sign of the pleasingly spicy dinner

    Instagram filter used: Lo-fi

    Photo taken at: Scotty Bons Caribbean Grill

    View in Instagram ⇒

  • crude lithophane with OpenSCAD

    small lithophane made from photographic portrait of Muhammad Ali in 1967. World Journal Tribune photo by Ira Rosenberg (source)

    After reading I didn’t know lithophanes were so simple. They were hiding in Cura all along. : 3Dprinting, I thought I’d give OpenSCAD a shot at generating a lithophane image. It did not badly at all, considering this was my first try.

    This isn’t a fast process and generates huge STL files, but it’s fairly simple. Here’s how I did it:

    1. Download your image. I used this 479 × 599 pixel preview.
    2. Convert your image to PNG, preferably grey scale
    3. Run it through the OpenSCAD script below, changing the parameters according to the instructions
    4. Render it in OpenSCAD (slow)
    5. 3D print the resultant STL in 0.05 mm layers (very slow)
    //  somewhat rough OpenSCAD lithophane - scruss, 2019-10
     infile  = "479px-Muhammad_Ali_NYWTS.png";    // input image, PNG greyscale best
     x_px    = 479;  // input image width,  pixels
     y_px    = 599;  // input image height, pixels
     z_min   = 0.8;  // minimum output thickness, mm
     z_max   = 3;    // maximum output thickness, mm
     y_size  = 50;   // output image height, mm
     // don't need to modify anything below here
     translate([0, 0, z_max])scale([y_size / y_px, y_size / y_px, (z_max - z_min)/100])surface(file = infile, invert = true);
     cube([x_px * y_size / y_px, y_size, z_min]);

    I used Makerbot warm white PLA. It looks decent at viewing distance, but close up it’s a bit stringy.

    closeup of lithophane eye

    There are better packages, but OpenSCAD does this better than I expected.

  • Crushing It (Your Head, That is) in Commerce Court

    Crushing It (Your Head, That is) in Commerce Court

    Crushing It (Your Head, That is) in Commerce Court

    Instagram filter used: Lo-fi

    Photo taken at: Commerce Court

    View in Instagram ⇒

  • brownian

    brownian

    brownian

    Instagram filter used: Normal

    View in Instagram ⇒

  • Lovely automata: bbcbasicbot

    bbcbasicbot rendering of my one-liner

    BBC BASIC bot [beta2] on Twitter is lovely. You tweet a BBC BASIC program to it and it replies with an animation rendering of what your program would look like on a BBC Micro.

    I sent it this:

    1MODE4:VDU23,224,24,48,96,193,131,6,12,24:VDU23,225,24,12,6,131,193,96,48,24
    2PRINTCHR$(224.5+RND(1));:GOTO2

    which readers might recognize as 10 PRINT, the endless random maze one-liner for the C64. This program even inspired its own book – also called 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 – about simple generative art.

    You can run it in your browser thanks to the amazing JSBeeb.

  • semibuilding

    semibuilding

    semibuilding

    Instagram filter used: Lo-fi

    View in Instagram ⇒

  • proper fish tea

    proper fish tea

    proper fish tea

    Instagram filter used: Lo-fi

    Photo taken at: Thistle Fish and Chips

    View in Instagram ⇒

  • knotwork + strapwork

    three corner knot
    lots of trial and error in OpenSCAD to get this interleaving even slightly bearable