THE MAD COMPUTER PROGRAM

The cover of MAD magazine No. 258 from October 1985 announces a “special computer section featuring the MAD Computer Program”. Take careful note of the image displayed on the computer monitor.

“The MAD Computer Program” title spread across pages 36 and 37. Below it reads, “Here's a great way to waste time, energy and money! Enter into your computer the program below and create your own MAD logo and Alfred E. Neuman face! (Yecch!!!)”. It's filed under the, “Data All, Folks! Dept.”.

The zoom up of page 36 below reveals that Sergio Aragones drew the associated artwork and wrote the copy.

The program is written in BASIC and the programmer was kind enough to supply bootstrap code for systems by Apple, Atari, Commodore and IBM. A few comments appear near the code:

“APPLE USERS NOTE: After you finish entering the program, be sure to “save it” before calling for a printout or you're screwed! You can try this program on a MAC—but it won't work!”

“ATARI USERS NOTE: There is no Atari users note!”

If you look carefully at the bootstrap code, you'll notice that instead of wrapping long lines, the editor just pasted the overflow below and to the right of those lines. That's a brilliant way to generate syntax errors.

Sergio Aragones' artwork on this page features a man stuck on a tiny tropical island discovering a box that washed up on shore. He looks disappointed upon revealing the contents: floppy disks, useless to him and to most people today. Another panel shows a cleaning lady sweeping up ones and zeros that accumulated around a desktop computer. Another shows 2 nerds telling each other a joke in binary and inevitably laughing hysterically. Another reveals the havoc caused by a young hacker. The bottom of the page features a man that replaced his typewriter with a new desktop computer and word processor. Unfortunately, he couldn't figure out how to operate the machine and he ended up retrieving his typewriter from the trash.

The zoom up of page 37 below reveals that the MAD Computer Program was designed and programmed by Lauretta Jones and Toma.

The notes read:

“COMMODORE USERS NOTE: After entering allow 20 minutes for the graphics to fully appear. If it takes any longer, your computer probably isn't plugged in!”

Sergio Aragones' artwork on this page features a woman in an office slapping a man sitting opposite to her after he apparently sent her an offensive instant message. In another panel, a man repairing his computer is shocked to discover that it's powered by an abacus! Another shows what a child thinks about computers (video games) versus a parent (a loss of a huge chunk of cash). In another, a father brags to a friend how he replaced his entire filing cabinet with a single floppy disk. Unfortunately, his young child assumed the floppies were toys and mutilated them. The bottom of the page features an army at the mercy of a broken desktop computer.

The program continues onto page 38:

Notes on it read:

“IBM USERS NOTE: You have to spring for a “color card” for your unit or this program will not work correctly! Tough nuts!”

At the end of each bootstrap segment, there's a comment directing the person typing in the program to the common section of code. Those comments read:

“You're not finished yet! Go to line 500 on page 38!”

“OK, rotate your eyeballs and go to line 500 on page 38!”

“Still awake? Good! Now go to line 500 on page 38 and continue entering!”

“You're doing great—for a second-rate hacker! Now go to line 500 and continue entering!”

I'm kind of disappointed that the writer didn't say, “GOTO line 500 on page 38.”

Sergio Aragones' artwork on this page features a panicking man whose tie is getting sucked into an ATM machine. Another comic shows concerned parents who buy their son a new computer because he spends all his time zoning out in front of a TV. Unfortunately, the father enjoys the new machine too much, forcing his son to return to the TV. The bottom features a comic spread over 2 pages:

An old secretary is initially happy when they replace her mechanical typewriter with a new desktop computer. Unfortunately, she's then replaced with a new, young secretary.

The code listing flows into page 39:

It encourages readers to send a printout to:

MAD Hackers Department 485 MADison Avenue New York, NY 10022

It's good to know that they have a “Hackers Department”. Also, note how they took advantage of MADison Avenue. Here's what that location looks like on Google Street View, though in the mid-1990s they relocated to 1700 Broadway.

Sergio Aragones' artwork on this page features a panicking school principal whose computer malfunctioned and gave A's to students that obviously didn't earn them. Another comic shows tractor-feed paper—traditionally used in dot-matrix printers—being used in place of toilet paper in a household bathroom.

Here's the Apple version of the source:

10 HOME 20 SIZE=1.2:XC=140:YC=90 30 HGR2:HCOLOR=3:HPLOT 0,0:CALL -3082:HCOLOR=0 40 READ X,Y,X1,Y1 50 IF X=999 THEN 100 60 FX=X*SIZE+XC:FY=176-(Y+YC) 70 LX=X1*SIZE+XC:LY=176-(Y1+YC) 80 HPLOT FX,FY TO LX,LY:HPLOT FX+1,FY TO LX+1,LY 90 GOTO 40 100 POKE 50,63 110 FOR BASE=0 TO 3:LOWBASE=1618+BASE*128 120 FOR LOC=LOWBASE TO LOWBASE+36:POKE LOC,32:NEXT LOC 130 NEXT BASE 140 VTAB (23):HTAB (14):PRINT"WHAT, ME WORRY?"; 150 FOR BASE=0 TO 3:LOWBASE=1616+BASE*128 160 FOR LOC=LOWBASE TO LOWBASE+40:POKE LOC+1024,PEEK(LOC):NEXT LOC 170 NEXT BASE 180 POKE 49235,0:CALL -756 190 HOME:TEXT:VTAB (11):HTAB(3):PRINT"COPYRIGHT 1985 E.C. PUBLICATIONS"; 200 CALL -756:HOME:POKE 50,255 210 END 500 DATA -27,-11,-23,-6,-28,-13,-22,-6,-20,-5,-12,-5,-27,-14,-26,-13 510 DATA -38,-29,-42,-28,-40,-28,-50,-16,-8,13,0,13,-29,4,-29,9 520 DATA -50,-17,-41,-28,-49,-17,-50,-8,-8,12,0,12,-28,5,-28,13 530 DATA -50,-15,-49,-10,40,-26,42,-17,-4,9,-21,14,5,48,2,44 540 DATA -53,-39,-45,-48,-55,-23,-55,-28,-61,-23,-58,-22,-42,-39,-43,-39 550 DATA 36,-52,36,-55,-37,-48,-32,-56,-32,-56,-26,-60,9,-74,33,-55 560 DATA 6,-12,12,-11,14,-8,24,-11,6,-13,10,-11,20,-9,10,-8 570 DATA -23,-15,-24,-19,-26,-18,-22,-15,-25,-18,-22,-19,-23,-18,-21,-16 580 DATA -49,2,-43,10,38,-11,43,-15,7,14,7,9,-9,13,-6,8 590 DATA -5,-33,-4,-33,-6,-36,-6,-36,-5,-32,-5,-32,-7,-29,-7,-29 600 DATA -39,-32,-38,-41,-62,-25,-54,-39,-50,-29,-50,-35,-54,-33,-57,-24 610 DATA -38,-34,-39,-39,-51,-19,-60,-22,-57,-25,-50,-24,-48,-25,-46,-38 620 DATA -42,-24,-42,-19,41,-26,43,-14,-3,7,-19,14,8,48,4,42 630 DATA 27,-38,31,-47,-29,-42,-16,-37,-11,-51,10,-48,26,-38,24,-47 640 DATA -4,-73,14,-71,-3,-74,5,-74,5,-73,12,-72,8,-72,35,-57 650 DATA -2,-48,5,-54,-15,-36,-20,-42,17,-34,32,-45,-6,-53,6,-48 660 DATA 40,-51,38,-43,39,-45,38,-50,38,-46,37,-53,37,-47,37,-46 670 DATA 15,-25,18,-24,23,-18,23,-20,12,-19,19,-18 680 DATA 8,-50,20,-49,-12,-53,-3,-62,-5,-49,14,-49,4,-62,16,-53 690 DATA -41,-19,-41,-27,44,-14,43,-20,-22,13,-22,14,8,46,2,42 700 DATA -40,-23,-39,-28,42,-26,50,-19,-23,14,-24,5,3,41,2,48 710 DATA -51,-42,-39,-49,-47,-26,-49,-36,-53,-18,-59,-21,-45,-28,-53,-23 720 DATA -40,-19,-37,-7,50,-18,50,-13,-25,5,-26,14,1,41,9,40 730 DATA -22,-9,-19,-6,-21,-9,-18,-6,-21,-6,-11,-9,-19,-8,-16,-8 740 DATA -57,-26,-57,-28,-37,-41,-37,-37,-59,-31,-50,-40,-39,-36,-36,-40 750 DATA -5,-28,-6,-30,-6,-28,-7,-30,6,-28,5,-30,6,-29,6,-31 760 DATA 6,-37,9,-36,-12,-38,-2,-39,-6,-33,-2,-35,-13,-35,-8,-39 770 DATA -20,-18,-17,-17,-14,-18,-15,-17,-17,-18,-16,-18,-20,-17,-14,-17 780 DATA -39,-17,-35,-6,51,-14,48,-12,-24,8,-23,13, 1,40,12,39 790 DATA -36,-6,-36,-1,41,-14,40,-9,-23,8,-24,11,14,39,19,40 800 DATA -26,34,-32,37,-32,37,-29,32,-29,32,-30,36,-29,32,-39,34 810 DATA -35,-5,-35,-1,40,-13,41,-12,-26,7,-27,14,21,39,11,38 820 DATA -61,-29,-56,-37,-47,-35,-42,-36,-49,-39,-45,-42,-61,-24,-59,-35 830 DATA 60,-24,55,-20,60,-23,61,-32,61,-29,61,-24,60,-29,59,-33 840 DATA 17,-53,5,-62,6,-48,17,-50,8,-48,2,-54,-28,-41,-18,-48 850 DATA -14,-52,-4,-62,-5,-51,9,-51,-27,-43,-28,-47,-5,-62,8,-59 860 DATA -46,14,-42,18,-45,25,-45,15,-42,18,-42,11,-43,11,-51,0 870 DATA 15,-19,18,-16,14,-16,18,-19,7,-18,8,-16,8,-17,11,-16 880 DATA 39,-42,38,-37,39,-40,40,-32,41,-33,40,-39,39,-34,39,-36 890 DATA 42,-40,43,-42,44,-42,45,-32,46,-36,45,-41,42,-38,43,-41 900 DATA 48,-11,47,7,41,-14,40,-9,15,37,15,36,17,36,19,36 910 DATA -49,-28,-48,-37,-61,-32,-62,-27,-55,-35,-43,-49,-46,-34,-42,-35 920 DATA -14,-65,-6,-71,14,-68,32,-57,18,-65,20,-63,14,-70,23,-65 930 DATA 31,-41,32,-43,3,-42,4,-43,-22,-43,-23,-42,-9,-52,-9,-52 940 DATA 30,-40,29,-45,14,-50,21,-48,-27,-46,-25,-46,-26,-47,-27,-47 950 DATA -10,-10,-11,-15,-9,-11,-10,-15,-10,-13,-8,-13,-11,-11,-8,-12 960 DATA 21,-38,29,-44,-7,-48,-3,-48,-27,-45,-21,-47,-12,-55,-6,-61 970 DATA 48,6,49,-11,39,-10,41,-5,18,35,22,35,19,34,23,34 980 DATA 51,-3,45,8,40,-5,38,-11,23,35,43,17,45,17,27,33 990 DATA 46,-40,46,-36,43,-38,43,-39,46,-30,52,-33,47,-30,52,-32 1000 DATA 57,-32,57,-27,44,-25,49,-21 1010 DATA 7,-13,9,-8,10,-8,8,-12,23,-9,12,-7,11,-9,24,-10 1020 DATA 57,-25,53,-24,52,-25,56,-24,56,-32,55,-26,56,-27,56,-29,52,-24,57,-26 1030 DATA -13,-13,-26,-17,-12,-16,-10,-18,-15,-14,-11,-18,-21,-14,-17,-14 1040 DATA 18,-20,21,-17,12,-16,16,-19,8,-20,10,-19,13,-23,19,-23 1050 DATA -22,-22,-13,-21,-16,-22,-21,-23,-21,-21,-19,-23,-20,-21,-18,-21 1060 DATA 47,4,49,-3,41,-4,37,2,46,16,41,16,41,16,47,9 1070 DATA 37,4,41,-2,-49,-9,-48,-4,43,11,45,9,-2,11,1,11 1080 DATA -47,-4,-48,-9,-48,-3,-49,-1,2,11,8,8,4,11,9,9 1090 DATA 46,-32,48,-28,49,-38,49,-35,50,-37,51,-25,51,-37,52,-30 1100 DATA -56,-23,-57,-29,-60,-24,-60,-33,-54,-23,-46,-29,-46,-40,-44,-42 1110 DATA -44,-34,-45,-38,-44,-37,-42,-37,-44,-38,-42,-38,-48,-46,-42,-49 1120 DATA 21,-16,10,-18,22,-17,19,-25,20,-24,22,-19,10,-23,18,-25 1130 DATA -41,33,-35,34,-41,32,-38,32,-38,31,-42,31,-42,32,-45,30 1140 DATA -3,-36,-12,-37,7,-35,7,-35,-3,-37,-8,-36,-8,-38,-4,-38 1150 DATA 8,-18,9,-16 1160 DATA -35,-45,-29,-58,-36,-46,-35,-53,-38,-48,-26,-57,-35,-48,-30,-58 1170 DATA -34,-52,-25,-59,-32,-55,-25,-60,-34,-49,-14,-68,-36,-51,-22,-61 1180 DATA -49,-3,-46,5,10,9,4,15,3,15,6,10,6,11,6,14 1190 DATA 47,-22,52,-21,48,-21,56,-20,55,-21,48,-21,56,-20,59,-22 1200 DATA 24,-64,32,-60,30,-59,34,-57,33,-59,35,-52,35,-56,36,-49 1210 DATA 61,-32,42,-51,43,-51,51,-41,50,-41,45,-46,58,-37,54,-41 1220 DATA -39,30,-45,23,-38,30,-46,21,-46,24,-47,11,-46,12,-42,27 1230 DATA 7,-29,6,-31,13,-35,13,-35,4,-37,8,-35,5,-36,8,-37 1240 DATA -16,-49,-8,-50,9,-53,9,-49,20,-37,29,-39,-17,-39,-24,-41 1250 DATA 21,-36,32,-44,-2,-62,5,-61,9,-58,16,-53,-26,-44,-22,-46 1260 DATA -51,1,-43,12,7,14,15,13,13,11,17,8,20,10,27,4 1270 DATA -42,11,-49,2,8,13,19,12,19,11,10,12,22,9,27,5 1280 DATA -24,-56,-22,-59,-23,-58,-4,-74,-23,-56,-15,-67,-21,-57,-8,-72 1290 DATA -7,-73,-12,-69,-12,-68,-4,-71,-21,-58,-13,-68,-10,-71,8,-74 1300 DATA 12,-32,14,-35,13,-32,12,-37,14,-34,13,-37,11,-37,14,-36 1310 DATA -17,-6,-10,-8,-13,-9,-10,-6,-10,-7,-11,-6,-12,-6,-15,-6 1320 DATA 17,-35,21,-39,7,-62,14,-56,14,-51,-17,-48,4,-43,4,-47 1330 DATA -11,-12,-12,-14,-12,-13,-9,-15,-20,-16,-15,-16,-17,-16,-15,-16 1340 DATA -11,-22,-12,-24,-9,-22,-12,-23,-9,-20,-11,-24,-8,-20,-9,-23 1350 DATA -34,-2,-33,6,25,7,29,7,30,8,30,6,31,8,35,9 1360 DATA -33,3,-33,-1,33,8,36,8,36,7,36,2,35,4,35,7 1370 DATA -32,6,-31,11,-30,11,-29,4,3,48,-3,41,-5,41,2,48 1380 DATA -5,-59,-6,-62,12,-52,21,-47,-2,-54,-2,-53,-4,-60,3,-62 1390 DATA -44,-47,-41,-49,-54,-24,-56,-30,-36,-43,-37,-48,-47,-37,-49,-32 1400 DATA -40,-48,-45,-46,-38,-47,-35,-44,-58,-36,-51,-40,-58,-35,-48,-45 1410 DATA 24,-42,32,-42,-3,-61,-3,-61,-54,-19,-50,-18,-5,-72,9,-72 1420 DATA 10,-22,10,-22,19,-22,19,-22,13,-16,13,-16,9,-19,10,-20 1430 DATA -25,-42,-21,-41,2,-53,4,-54,29,-40,31,-46,26,-43,22,-48 1440 DATA 6,-10,18,-6,14,-6,21,-7,22,-8,6,-11 1450 DATA 1,-38,-14,-36,-13,-37,-11,-32,-14,-35,-12,-33 1460 DATA 55,-37,41,-51,46,-48,61,-33,41,-49,37,-48 1470 DATA -10,-21,-10,-24,-28,-14,-22,-7 1480 DATA -3,43,-26,35,-26,35,-5,41,-9,39,-20,36,-26,34,-26,37 1490 DATA -6,-58,1,-60,-24,-43,-21,-42,3,-45,3,-46,4,-52,4,-53 1500 DATA 72,73,72,63,71,74,70,78,71,62,70,58,69,57,65,53,70,78,65,83 1510 DATA 64,83,58,86,64,53,55,48,56,49,43,49,47,48,55,48,58,86,46,86 1520 DATA 42,84,46,85,44,50,39,52,42,50,39,51,41,85,40,85,39,86,33,86 1530 DATA 38,51,33,48,35,79,35,58,34,79,34,58,34,57,32,56,34,80,32,79 1540 DATA 32,85,30,83,31,83,31,80,30,82,30,79,31,55,29,55,33,49,23,49 1550 DATA 32,48,25,48,24,50,22,50,28,55,17,78,18,79,20,79,20,80,20,84 1560 DATA 21,51,18,48,19,50,17,48,16,48,14,48,17,49,14,49,19,85,11,86 1570 DATA 13,48,12,53,12,48,11,53,11,54,15,57,15,58,14,59,14,59,-1,59 1580 DATA 14,58,-2,58,10,85,7,83,6,84,1,86,0,86,-5,85,-6,84,-6,80,-7,83,-7,79 1590 DATA -5,79,-3,79,-2,78,-13,56,-14,56,-3,78,-2,59,-4,57,-4,56,-1,54 1600 DATA 0,55,1,55,1,54,1,50,0,50,-1,48,-2,48,-7,48,-2,49,-6,49,-6,48,-9,51 1610 DATA -7,48,-10,50,-11,49,-17,49,-12,48,-16,48,-17,48,-21,51,-18,48,-22,50 1620 DATA -15,55,-16,55,-17,56,-22,78,-21,79,-19,79,-19,80,-19,84,-23,49,-30,49 1630 DATA -24,48,-30,48,-31,48,-31,55,-32,54,-32,49,-30,55,-28,55 1640 DATA -20,85,-25,86,-26,85,-29,83,-28,55,-32,70,-28,55,-31,71 1650 DATA -28,83,-33,86,-34,86,-37,86,-32,70,-41,49,-38,85,-40,84 1660 DATA -40,83,-40,81,-41,83,-41,79,-40,80,-37,78,-37,78,-41,65 1670 DATA -42,65,-38,78,-43,64,-48,78,-47,79,-45,79,-45,80,-45,84 1680 DATA -46,85,-51,86,-42,49,-47,49,-42,48,-48,48,-48,48,-56,70 1690 DATA -48,49,-56,71,-56,71,-60,56,-52,85,-54,84,-55,83,-59,85 1700 DATA -60,86,-64,86,-59,55,-58,54,-57,54,-55,55,-55,54,-55,50 1710 DATA -56,50,-57,48,-57,49,-61,49,-58,48,-60,48,-61,48,-64,51 1720 DATA -62,48,-65,50,-65,85,-67,84,-67,83,-67,79,-68,83,-68,79,-66,79,-64,79 1730 DATA -63,78,-68,56,-69,55,-64,78,-66,49,-72,49,-68,48,-73,48 1740 DATA -69,55,-73,55,-73,55,-73,48,-74,49,-74,54 1750 DATA 61,71,61,65,60,73,60,63,59,73,59,72,60,65,58,60 1760 DATA 59,61,54,56,59,74,55,78,59,75,54,80,54,80,48,80 1770 DATA 46,79,55,79,54,56,48,56,47,57,46,57,47,78,46,78 1780 DATA 45,78,45,58,7,76,11,66,10,66,6,76,9,66,1,66,0,66,6,75 1790 DATA 999,0,0,0

Here's what it looks like when you run it in AppleWin, the Apple II emulator:

Most of the program consists of coordinate-pairs, the end-points of line-segments. It's unfortunate that the article did not describe how the numerical values were determined. They may have traced the image with a puck, a mouse-like device used for CAD work that detects absolute position. Or the image might have been printed onto a transparency and fixed to the front of a monitor to serve as a template. Then, they could have incrementally entered coordinates directly into BASIC, tweaking as necessary, until the entire transparency was covered. A third possibility is that the entire thing was worked out using nothing more than graph paper, a ruler and a pencil.

I created a Java version that generates this image file:

Below is a Scalable Vector Graphics (SVG) version. If your browser does not support SVG, tough nuts!

You can download the BASIC source, the Java source and the SVG version by clicking here.

Thanks to Lawrence D'Oliveiro for explaining one of Sergio Aragones' comics to me. Thanks to Andy Klock for helping me type in the program. And special thanks to Kris Kennaway for discovering a typo that Andy or I accidentally introduced into the copyrighted source code that owner E.C. Publications, Inc. apparently highly encourages their loyal readers to manually reproduce by keying it into a computer.