Hacker News new | ask | show | jobs
by mdf 634 days ago
I remember, as a child, attempting to reproduce the BASIC program in one of the MAD magazine issues. Somewhere, I had made a typo, which completely screwed the output. I guessed that the tediousness of the whole exercise was part of the joke, shrugged, and moved on.

Luckily, someone else succeeded: https://meatfighter.com/mad/

5 comments

It was pretty common to distribute code as "listing" like this. Typically it came with a checksum for every line and a small program to compute and print that for your own program that you had typed over, which you could then use to fairly quickly(-ish) spot any typos.

All of this is how I learned to program by the way. Kids these days don't know how easy they have it.

Huh, we used to type in BASIC programs from magazines back in the 1980s and I don’t ever recall seeing any kinds of checksum. We would often resort to printing out the code and visually comparing line by line against the magazine.
The first edition of MSX Computer Magazine from 1985 has them, and I doubt they were the first or invented it: https://www.msxcomputermagazine.nl/archief/bladen/msx_comput...

Perhaps it was less common in other countries? Things were a lot less global back then and things operated more on a local level.

We mostly had Family Computing magazine. I looked up an issue from 1985 with one of my favorite type-by-hand games, Hit or Miss [0], and no sight of a helpful checksum.

To be honest, the idea of it would have blown my mind back then; the idea that your BASIC code is just a text file that can be processed by other programs is something that would never have occurred to me.

https://archive.org/details/FamilyComputingIssue041983Dec/Fa...

Checksums became popular at some point in the 80s. I remember when COMPUTE! first added them they were a godsend. Especially for the machine language programs that were just pages of data statements.
In the early 80s I never saw checksums on code listings but by the mid-80s it was fairly common, although certainly not universal.
Checksums! Bah, I used to have to code uphill both ways in the snow, and I liked it!
Checksums were a great idea but I just could never resist the temptation to make changes to the program as I was typing it in.
> Kids these days don't know how easy they have it.

Maybe it’s rose-colored glasses, but I have much fonder memories of programming basic on a Ti-84 calculator than debugging an import incompatibility between. Es5 and CommonJS modules

I would take typing a program by hand from printed paper over dealing with npm, any day.

Thankfully I have to do neither.

Excellent link, thank you for posting this.

In case there are any other Sergio Aragones superfan weirdos like me here, who only click MAD-related stories in order to command-f for "Sergio Aragones" and then move on when inevitably there are no results: today's your lucky day, click that link above!

nice. I'm a Groo fan.
The Commodore version of the source in the magazine never worked. I probably typed it in at least five times in whole thinking I'd screwed something up. It wasn't until a few years ago (from an HN post, no less) that I found the link above and finally, finally got to see what the code did.
dedication to create an svg version...

https://meatfighter.com/mad/mad.svg

A port to GNU Octave...

   x = [
   -27,-11,-23,-6,-28,-13,-22,-6,-20,-5,-12,-5,-27,-14,-26,-13 ...
   -38,-29,-42,-28,-40,-28,-50,-16,-8,13,0,13,-29,4,-29,9 ...
   -50,-17,-41,-28,-49,-17,-50,-8,-8,12,0,12,-28,5,-28,13 ...
   -50,-15,-49,-10,40,-26,42,-17,-4,9,-21,14,5,48,2,44 ...
   -53,-39,-45,-48,-55,-23,-55,-28,-61,-23,-58,-22,-42,-39,-43,-39 ...
   36,-52,36,-55,-37,-48,-32,-56,-32,-56,-26,-60,9,-74,33,-55 ...
   6,-12,12,-11,14,-8,24,-11,6,-13,10,-11,20,-9,10,-8 ...
   -23,-15,-24,-19,-26,-18,-22,-15,-25,-18,-22,-19,-23,-18,-21,-16 ...
   -49,2,-43,10,38,-11,43,-15,7,14,7,9,-9,13,-6,8 ...
   -5,-33,-4,-33,-6,-36,-6,-36,-5,-32,-5,-32,-7,-29,-7,-29 ...
   -39,-32,-38,-41,-62,-25,-54,-39,-50,-29,-50,-35,-54,-33,-57,-24 ...
   -38,-34,-39,-39,-51,-19,-60,-22,-57,-25,-50,-24,-48,-25,-46,-38 ...
   -42,-24,-42,-19,41,-26,43,-14,-3,7,-19,14,8,48,4,42 ...
   27,-38,31,-47,-29,-42,-16,-37,-11,-51,10,-48,26,-38,24,-47 ...
   -4,-73,14,-71,-3,-74,5,-74,5,-73,12,-72,8,-72,35,-57 ...
   -2,-48,5,-54,-15,-36,-20,-42,17,-34,32,-45,-6,-53,6,-48 ...
   40,-51,38,-43,39,-45,38,-50,38,-46,37,-53,37,-47,37,-46 ...
   15,-25,18,-24,23,-18,23,-20,12,-19,19,-18 ...
   8,-50,20,-49,-12,-53,-3,-62,-5,-49,14,-49,4,-62,16,-53 ...
   -41,-19,-41,-27,44,-14,43,-20,-22,13,-22,14,8,46,2,42 ...
   -40,-23,-39,-28,42,-26,50,-19,-23,14,-24,5,3,41,2,48 ...
   -51,-42,-39,-49,-47,-26,-49,-36,-53,-18,-59,-21,-45,-28,-53,-23 ...
   -40,-19,-37,-7,50,-18,50,-13,-25,5,-26,14,1,41,9,40 ...
   -22,-9,-19,-6,-21,-9,-18,-6,-21,-6,-11,-9,-19,-8,-16,-8 ...
   -57,-26,-57,-28,-37,-41,-37,-37,-59,-31,-50,-40,-39,-36,-36,-40 ...
   -5,-28,-6,-30,-6,-28,-7,-30,6,-28,5,-30,6,-29,6,-31 ...
   6,-37,9,-36,-12,-38,-2,-39,-6,-33,-2,-35,-13,-35,-8,-39 ...
   -20,-18,-17,-17,-14,-18,-15,-17,-17,-18,-16,-18,-20,-17,-14,-17 ...
   -39,-17,-35,-6,51,-14,48,-12,-24,8,-23,13, 1,40,12,39 ...
   -36,-6,-36,-1,41,-14,40,-9,-23,8,-24,11,14,39,19,40 ...
   -26,34,-32,37,-32,37,-29,32,-29,32,-30,36,-29,32,-39,34 ...
   -35,-5,-35,-1,40,-13,41,-12,-26,7,-27,14,21,39,11,38 ...
   -61,-29,-56,-37,-47,-35,-42,-36,-49,-39,-45,-42,-61,-24,-59,-35 ...
   60,-24,55,-20,60,-23,61,-32,61,-29,61,-24,60,-29,59,-33 ...
   17,-53,5,-62,6,-48,17,-50,8,-48,2,-54,-28,-41,-18,-48 ...
   -14,-52,-4,-62,-5,-51,9,-51,-27,-43,-28,-47,-5,-62,8,-59 ...
   -46,14,-42,18,-45,25,-45,15,-42,18,-42,11,-43,11,-51,0 ...
   15,-19,18,-16,14,-16,18,-19,7,-18,8,-16,8,-17,11,-16 ...
   39,-42,38,-37,39,-40,40,-32,41,-33,40,-39,39,-34,39,-36 ...
   42,-40,43,-42,44,-42,45,-32,46,-36,45,-41,42,-38,43,-41 ...
   48,-11,47,7,41,-14,40,-9,15,37,15,36,17,36,19,36 ...
   -49,-28,-48,-37,-61,-32,-62,-27,-55,-35,-43,-49,-46,-34,-42,-35 ...
   -14,-65,-6,-71,14,-68,32,-57,18,-65,20,-63,14,-70,23,-65 ...
   31,-41,32,-43,3,-42,4,-43,-22,-43,-23,-42,-9,-52,-9,-52 ...
   30,-40,29,-45,14,-50,21,-48,-27,-46,-25,-46,-26,-47,-27,-47 ...
   -10,-10,-11,-15,-9,-11,-10,-15,-10,-13,-8,-13,-11,-11,-8,-12 ...
   21,-38,29,-44,-7,-48,-3,-48,-27,-45,-21,-47,-12,-55,-6,-61 ...
   48,6,49,-11,39,-10,41,-5,18,35,22,35,19,34,23,34 ...
   51,-3,45,8,40,-5,38,-11,23,35,43,17,45,17,27,33 ...
   46,-40,46,-36,43,-38,43,-39,46,-30,52,-33,47,-30,52,-32 ...
   57,-32,57,-27,44,-25,49,-21 ...
   7,-13,9,-8,10,-8,8,-12,23,-9,12,-7,11,-9,24,-10 ...
   57,-25,53,-24,52,-25,56,-24,56,-32,55,-26,56,-27,56,-29,52,-24,57,-26 ...
   -13,-13,-26,-17,-12,-16,-10,-18,-15,-14,-11,-18,-21,-14,-17,-14 ...
   18,-20,21,-17,12,-16,16,-19,8,-20,10,-19,13,-23,19,-23 ...
   -22,-22,-13,-21,-16,-22,-21,-23,-21,-21,-19,-23,-20,-21,-18,-21 ...
   47,4,49,-3,41,-4,37,2,46,16,41,16,41,16,47,9 ...
   37,4,41,-2,-49,-9,-48,-4,43,11,45,9,-2,11,1,11 ...
   -47,-4,-48,-9,-48,-3,-49,-1,2,11,8,8,4,11,9,9 ...
   46,-32,48,-28,49,-38,49,-35,50,-37,51,-25,51,-37,52,-30 ...
   -56,-23,-57,-29,-60,-24,-60,-33,-54,-23,-46,-29,-46,-40,-44,-42 ...
   -44,-34,-45,-38,-44,-37,-42,-37,-44,-38,-42,-38,-48,-46,-42,-49 ...
   21,-16,10,-18,22,-17,19,-25,20,-24,22,-19,10,-23,18,-25 ...
   -41,33,-35,34,-41,32,-38,32,-38,31,-42,31,-42,32,-45,30 ...
   -3,-36,-12,-37,7,-35,7,-35,-3,-37,-8,-36,-8,-38,-4,-38 ...
   8,-18,9,-16 ...
   -35,-45,-29,-58,-36,-46,-35,-53,-38,-48,-26,-57,-35,-48,-30,-58 ...
   -34,-52,-25,-59,-32,-55,-25,-60,-34,-49,-14,-68,-36,-51,-22,-61 ...
   -49,-3,-46,5,10,9,4,15,3,15,6,10,6,11,6,14 ...
   47,-22,52,-21,48,-21,56,-20,55,-21,48,-21,56,-20,59,-22 ...
   24,-64,32,-60,30,-59,34,-57,33,-59,35,-52,35,-56,36,-49 ...
   61,-32,42,-51,43,-51,51,-41,50,-41,45,-46,58,-37,54,-41 ...
   -39,30,-45,23,-38,30,-46,21,-46,24,-47,11,-46,12,-42,27 ...
   7,-29,6,-31,13,-35,13,-35,4,-37,8,-35,5,-36,8,-37 ...
   -16,-49,-8,-50,9,-53,9,-49,20,-37,29,-39,-17,-39,-24,-41 ...
   21,-36,32,-44,-2,-62,5,-61,9,-58,16,-53,-26,-44,-22,-46 ...
   -51,1,-43,12,7,14,15,13,13,11,17,8,20,10,27,4 ...
   -42,11,-49,2,8,13,19,12,19,11,10,12,22,9,27,5 ...
   -24,-56,-22,-59,-23,-58,-4,-74,-23,-56,-15,-67,-21,-57,-8,-72 ...
   -7,-73,-12,-69,-12,-68,-4,-71,-21,-58,-13,-68,-10,-71,8,-74 ...
   12,-32,14,-35,13,-32,12,-37,14,-34,13,-37,11,-37,14,-36 ...
   -17,-6,-10,-8,-13,-9,-10,-6,-10,-7,-11,-6,-12,-6,-15,-6 ...
   17,-35,21,-39,7,-62,14,-56,14,-51,-17,-48,4,-43,4,-47 ...
   -11,-12,-12,-14,-12,-13,-9,-15,-20,-16,-15,-16,-17,-16,-15,-16 ...
   -11,-22,-12,-24,-9,-22,-12,-23,-9,-20,-11,-24,-8,-20,-9,-23 ...
   -34,-2,-33,6,25,7,29,7,30,8,30,6,31,8,35,9 ...
   -33,3,-33,-1,33,8,36,8,36,7,36,2,35,4,35,7 ...
   -32,6,-31,11,-30,11,-29,4,3,48,-3,41,-5,41,2,48 ...
   -5,-59,-6,-62,12,-52,21,-47,-2,-54,-2,-53,-4,-60,3,-62 ...
   -44,-47,-41,-49,-54,-24,-56,-30,-36,-43,-37,-48,-47,-37,-49,-32 ...
   -40,-48,-45,-46,-38,-47,-35,-44,-58,-36,-51,-40,-58,-35,-48,-45 ...
   24,-42,32,-42,-3,-61,-3,-61,-54,-19,-50,-18,-5,-72,9,-72 ...
   10,-22,10,-22,19,-22,19,-22,13,-16,13,-16,9,-19,10,-20 ...
   -25,-42,-21,-41,2,-53,4,-54,29,-40,31,-46,26,-43,22,-48 ...
   6,-10,18,-6,14,-6,21,-7,22,-8,6,-11 ...
   1,-38,-14,-36,-13,-37,-11,-32,-14,-35,-12,-33 ...
   55,-37,41,-51,46,-48,61,-33,41,-49,37,-48 ...
   -10,-21,-10,-24,-28,-14,-22,-7 ...
   -3,43,-26,35,-26,35,-5,41,-9,39,-20,36,-26,34,-26,37 ...
   -6,-58,1,-60,-24,-43,-21,-42,3,-45,3,-46,4,-52,4,-53 ...
   72,73,72,63,71,74,70,78,71,62,70,58,69,57,65,53,70,78,65,83 ...
   64,83,58,86,64,53,55,48,56,49,43,49,47,48,55,48,58,86,46,86 ...
   42,84,46,85,44,50,39,52,42,50,39,51,41,85,40,85,39,86,33,86 ...
   38,51,33,48,35,79,35,58,34,79,34,58,34,57,32,56,34,80,32,79 ...
   32,85,30,83,31,83,31,80,30,82,30,79,31,55,29,55,33,49,23,49 ...
   32,48,25,48,24,50,22,50,28,55,17,78,18,79,20,79,20,80,20,84 ...
   21,51,18,48,19,50,17,48,16,48,14,48,17,49,14,49,19,85,11,86 ...
   13,48,12,53,12,48,11,53,11,54,15,57,15,58,14,59,14,59,-1,59 ...
   14,58,-2,58,10,85,7,83,6,84,1,86,0,86,-5,85,-6,84,-6,80,-7,83,-7,79 ...
   -5,79,-3,79,-2,78,-13,56,-14,56,-3,78,-2,59,-4,57,-4,56,-1,54 ...
   0,55,1,55,1,54,1,50,0,50,-1,48,-2,48,-7,48,-2,49,-6,49,-6,48,-9,51 ...
   -7,48,-10,50,-11,49,-17,49,-12,48,-16,48,-17,48,-21,51,-18,48,-22,50 ...
   -15,55,-16,55,-17,56,-22,78,-21,79,-19,79,-19,80,-19,84,-23,49,-30,49 ...
   -24,48,-30,48,-31,48,-31,55,-32,54,-32,49,-30,55,-28,55 ...
   -20,85,-25,86,-26,85,-29,83,-28,55,-32,70,-28,55,-31,71 ...
   -28,83,-33,86,-34,86,-37,86,-32,70,-41,49,-38,85,-40,84 ...
   -40,83,-40,81,-41,83,-41,79,-40,80,-37,78,-37,78,-41,65 ...
   -42,65,-38,78,-43,64,-48,78,-47,79,-45,79,-45,80,-45,84 ...
   -46,85,-51,86,-42,49,-47,49,-42,48,-48,48,-48,48,-56,70 ...
   -48,49,-56,71,-56,71,-60,56,-52,85,-54,84,-55,83,-59,85 ...
   -60,86,-64,86,-59,55,-58,54,-57,54,-55,55,-55,54,-55,50 ...
   -56,50,-57,48,-57,49,-61,49,-58,48,-60,48,-61,48,-64,51 ...
   -62,48,-65,50,-65,85,-67,84,-67,83,-67,79,-68,83,-68,79,-66,79,-64,79 ...
   -63,78,-68,56,-69,55,-64,78,-66,49,-72,49,-68,48,-73,48 ...
   -69,55,-73,55,-73,55,-73,48,-74,49,-74,54 ...
   61,71,61,65,60,73,60,63,59,73,59,72,60,65,58,60 ...
   59,61,54,56,59,74,55,78,59,75,54,80,54,80,48,80 ...
   46,79,55,79,54,56,48,56,47,57,46,57,47,78,46,78 ...
   45,78,45,58,7,76,11,66,10,66,6,76,9,66,1,66,0,66,6,75];

   l = reshape(x, 4, 522)';
   [x1, y1, x2, y2] = deal(l(:,1), l(:,2), l(:,3), l(:,4));
   sz = 1.2;
   xc = 140;
   yc = 90;
   fx = x1*sz + xc; fy = 176 - (y1 + yc);
   lx = x2*sz + xc; ly = 176 - (y2 + yc);
   plot([fx+1, lx+1]', [fy, ly]', '-b', [fx, lx]', [fy, ly]', '-b');
   axis tight;
   axis off;
   axis ij;
   h = title('What, me worry?');
   set(h, 'position', [140, 170]);
oh great.

the listing is missing checksums! madness!

we're in 2024, checksums are the least I can expect.

It's worse than that. It's actually an AGI seed. If you run it, you get an AI which quickly gains sentience... but it's Mad.