The Story of The Wizard's Castle

  • warning: Creating default object from empty value in /home/buckman/public_html/neo/modules/advanced_forum/advanced_forum.module on line 492.
  • warning: Creating default object from empty value in /home/buckman/public_html/neo/modules/advanced_forum/advanced_forum.module on line 492.
  • warning: Creating default object from empty value in /home/buckman/public_html/neo/modules/advanced_forum/advanced_forum.module on line 492.
  • warning: Creating default object from empty value in /home/buckman/public_html/neo/modules/advanced_forum/advanced_forum.module on line 492.
  • warning: Creating default object from empty value in /home/buckman/public_html/neo/modules/advanced_forum/advanced_forum.module on line 492.
Matt Barton's picture

Exidy SorcererExidy SorcererOne of the great things about writing a book is that you get to hear so many interesting stories. One of the best I've heard so far involves a very, very early game for the Exidy Sorcerer named The Wizard's Castle. Although programmed by Joe Power a few years earlier (in the mid 1970s), the game wasn't officially released until 1980, when it was printed as source code in Recreational Computing magazine. It's been ported to several other platforms (by Power and others). Eventually it was played by Derell L., who prefers to go by his nickname "Derelict." Derelict converted the game for Windows and added sprite-based graphics (you can download it here). Anyway, I had the chance to talk to both Joe and Derelict about their games, and have decided to print them here for your enjoyment! Note that I haven't edited these interviews--I didn't have to!

First, Joe:

The year was 1975. I was a freshman at Michigan State University and I tagged along with some friends going to the Windycon science fiction convention in Chicago. Someone on the con committee had arranged to have some remote terminals tied into some college's time-share system upon which you could run a primitive version of Star Trek and another, very similar game with a fantasy motif (called HOBBIT). These were printing terminals, not CRTs (the ADM-3a was still about a year and a half away at that point.)

I found the game intriguing and, when someone managed to break the game I managed to get a listing of it while trying to restart it.

Up to that point I'd only learned FORTRAN IV in a batch processing environment and the program was written in a dialect of HP BASIC (1 letter variable names, 1-dimensional arrays only, if statements could only branch, etc.) Even so, I could figure out enough of the code to realize that whoever had written it must have simply sat down at a terminal and started banging away - it was a horrible pile of spaghetti code.

That summer I happened to be near a Radio Shack that sold the TRS-80s which had just come out. The owner had a model 1 (4K of RAM, integer basic, 300baud cassette tape storage) available for demonstration / experimentation. I bought a book on TRS-80 Basic and taught myself enough to write my own version of HOBBIT.
It was a much cleaner version of the code and played roughly the same as the one I'd played. Several of the other nerds hanging out at the store that summer played it a lot and enjoyed it and the store owner often used it to show off what could be done with even the entry-level machine. I, however, wasn't satisfied with it.

The problem, for me, was that there simply weren't enough ways to interact with the program and it became repetitive - wander around, kill monsters, get treasures, lather, rinse, repeat. By then I was playing Dungeons & Dragons (the original 3 book set and the Greyhawk supplement) so I was used to a much richer game experience.

I decided to re-write the game from scratch. I thought about what extra features I would put in the game and ended up with everything you see in Wizard's Castle plus one big section that I pulled from the final version (originally, you could buy a shovel from a merchant and use it to bury some or all of your possessions.
Later you could dig them up. There were monsters that stole things from you to give you a reason to do this. The amount of code needed to implement this was so large I decided it wasn't cost effective and eliminated it.)

Michigan State was still almost entirely a batch-only environment (heck, there were punch card vending machines in the computer center!) and any microcomputer of the time large enough to run what I had in mind cost a small fortune and had to be assembled by the user. As a consequence, I decided to write the program in a pascal/basic/english hybrid pseudo-code figuring I'd convert it to whatever specific language I would eventually have access to.

Long about then a few fellows got together and opened up a computer store in East Lansing. At the time there were still not that many microcomputers for sale and, like so many of the early computer stores, New Dimensions in Computing sold more magazines (Byte, Kilobaud, Creative Computing, etc.) and books than anything else. They didn't have enough capitalization to satisfy Apple's requirements to be an authorized dealer, but they did have Northstar systems for small businesses and the Exidy Sorcerer for home use.

I was friends with a couple of the owners and they didn't mind if I played with their 16K demo machine when it wasn't in use. (By the way, the "Kingdom of N'dic" was a nod to them for their kindness.)

I converted my pseudo-code into Sorcerer Basic (which was the cheaper version of Microsoft's flagship product at that time) and started typing it in. Naturally I discovered that the program wouldn't fit in the machine! I threw out all the comments, looked for common code fragments I could turn into ugly subroutines, tightened up the code overall and - most significantly - I used the Sorcerer's user-definable character memory instead of a Basic array to hold the castle array.

(The Exidy Sorcerer's characters were 8x8 bits and the top 128 character shape definitions were stored in a specific RAM location. This made the Sorcerer nearly ideal for displaying foreign character sets and - because changing the shape definition of a character changed EVERY instance of that character on the screen in a single refresh - made it a natural for games like Space Invaders, Pacman, etc. Of course, if you didn't happen to use any user-definable characters then the memory was available for other purposes. This fact will become important in a bit.)

Eventually the guys took pity on me and increased the memory in the demo model to 24K. Between that and my code squeezing Wizard's Castle finally fit. I corrected a few obvious flaws and then sat back and watched others play it, making notes and fixing bugs as needed. I continued to compress the code because I really wanted it to fit in 16K (which was the standard amount of memory the Sorcerer came with.)

I'm still somewhat amazed the store owners didn't banish the program (and me) as they seemed to get a steady stream of people wanting to play it (though I know of at least two systems sold because kids who'd been playing it dragged their parents in!)

Right about the time I finished polishing the code there was an announcement in Kilobaud magazine that they were starting up a software division and were actively seeking programs for the Exidy Sorcerer. Seeing visions of megabucks dancing before my eyes, I decided to submit Wizard's Castle but I needed to write documentation for it. I did this and sent both program and user manual in and waited to hear back from them.

Before too long I got a call indicating they really wanted to sell my program.
We went over a few things and one of the questions they asked was "could I put any user-defined graphics in it?" as they had heard that this was one of the big features of the Sorcerer. I explained that in order to make the program fit in 16K I had to use the graphics memory for another purpose. "No problem" they said. "We really want to get it out by Christmas." A contract soon arrived and I thought all was well.

Days turned into weeks turned into a couple months and I'd heard nothing from them. Finally I was able to get through to the person who'd taken over for the person who'd replaced the person with whom I'd talked. He looked at my file and told me there was a hold on doing anything with the program until they found out if I could put any user-defined graphics in. Grrrr... I explained that I'd answered that question and did so again.

By then, of course, it was too late to make the Christmas season and a few months afterwards it became clear that they were getting out of the Sorcerer market altogether. We mutually revoked the contract. Although I wasn't all that devastated I wasn't going to rake in the big bucks from it, it seemed a shame to just let Wizard's Castle die and when Recreational Computing magazine announced they were going to do a fantasy game issue I submitted a listing and the documentation I'd written. They printed it in their July/August 1980 issue.
(There were a couple other articles with comparably sized programs listed as
well.)

As I mentioned in the article, by then the program had been ported to several other systems. A small local software company sold a few of the TRS-80 ports and I later ported it to the Apple II for a friend of mine. Eventually there was a port to the Heath H8 and other CP/M systems. It was one of these that was reviewed in the first Whole Earth Software Catalog. Since then I've seen a version for the TI-83 and, of course, there was the nice version with the graphic tiles you mentioned.

Time has certainly passed it by, but Wizard's Castle seems to have been enjoyed by quite a few people. I learned a lot and had a lot of fun writing it. It appears to have influenced some subsequent games just as it was influenced by what came before it. Really, how much more can you ask of a game?

You asked about the gaming context in which I wrote Wizard's Castle. The town I grew up in was too small to support a wargaming culture so almost all of my gaming interest went into chess. When I got to college I encountered SPI and AH games and then D&D. Tunnels & Trolls never really caught on, but Runequest was a vastly more sensible game system to pirate mechanics from (by then we were almost all "rolling our own" rules.) I got hooked on some of the microgames (Ogre and WarpWar.) In fact, I liked WarpWar so much I attempted to adapt its combat system for Wizard's Castle - boy did that not work out!

Almost all the computer games available at the time I was writing Wizard's Castle were either small Basic programs, arcade-style games or stripped down Adventure clones. I tried Wizardry a few years after and liked the idea of a rat's eye view maze (even though I have no sense of direction and kept getting
lost) but the game was s-l-o-w. After I graduated from college and started working I bought my own Sorcerer and wrote a few arcade games in Basic (including a wholly original one that, even though only a handfull of people ever saw it, I was as proud of as I was of Wizard's Castle.)

I think I'll stop here for now and let you figure out what I missed and what follow-up questions you'd like to ask.

Now, Derelict!

Well, I was an engineering student at Calpoly SLO, from 1982-1986. Sometime in 1985, a fellow student of mine got himself a PC (which was quite an accomplishment for a student, back in those days!!). He had a copy of the BASIC version of the game on his PC, but I don't know where he actually got it from. I was ENTHRALLED with the game, and spent hours playing it; at first he had to keep chasing me off his machine so he could do homework. Then, once I started working on my senior project, I had access to a PC in the engineering lab, and continued playing there. The really annoying things were dealing with the map; the fact that M had to be used every few steps, and every time you entered another room you had to spend six keystrokes just looking into adjacent rooms. So my goal was to re-write it as a full-screen interactive program which *always* had the map displayed, and I wanted to make the interface keystroke-active (i.e., I didn't want to repeatedly have to hit Enter).

After I graduated from Calpoly in '86, I took a class in Pascal at a local junior college. The reason that I did this was that Borland had just revolutionized the programming world by introducing a $35 Pascal compiler, with an integrated editor!! This is why there was an explosion of games and other utilities around that time; before Turbo Pascal, compilers for any language started at $400 and went up fast!! So, I spent some time converting Wizard's Castle to Turbo Pascal, but unfortunately there weren't really any good ways of distributing software widely in those pre-internet days, and I ended up putting it on the shelf for years. I took occasional stabs at converting it to C, but it was sooooo much work that I kept putting it off until recently, when I finally got motivated enough to put in the several weeks of work that led to the current released form.

In terms of releasing it for free, vs shareware or some such, there were several issues that led to that decision:

1. it's *alot* of work to manage a shareware program; if you don't put in mechanisms to coerce people to donate,
they won't, except for an occasional token offering. And I *really* didn't feel like putting alot of work into an effort
that likely wouldn't have returned a significant amount of money in any case.

2. The original software that I derived it from was freeware; I would have felt like a real curmudgeon if I'd charged for the derivative work!!

3. Wizard's Castle is, in a sense, one of the precursors of the vast genre of Rogue-like games; these have traditionally been freeware games, and in fact some of the greatest games that I've ever played were the roguelikes, including Hack (later Nethack), Omega and Angband. It would have been a violation of that tradition for me to do otherwise...

In terms of other games, I didn't really play anything other that WC, Rogue, and later the other roguelikes, until the better graphics-based games came out much later. I never was very inspired by the text-adventures; I played most of Colossal Cave, and a little of Zork I, but got *very* tired of mapping, and ultimately passed on that genre. In terms of later graphics games, I most loved Ultima Underworld I/II, the Eye of the Beholder series, Ultima 4, Might & Magic 3-6 (didn't like 7 and later nearly as much). I played most of the "Gold Box" games from SSI, but mostly because there wasn't much else available; I found the endless random battles so annoying that I frequently considered just deleting them before I even finished!! More recently, I've been a GREAT fan of the Baldur's Gate series (especially with the magnificent user mods), and DeusEx.

BTW, After I released the Windows version of Wizard's Castle, I got a brief email from Joseph Power, the author of the original game. I tried replying to him, but never heard anything further. I'm enclosing a copy of his email in this message in case you're interested; it has a little history of the original game, which you won't find anywhere else.

Good luck on your book!! (BTW, if you do include any of my emails or other data in your book, *please* do NOT include my email address!! I get more than enough spam already...)

All in all, great stuff, and hopefully interesting reading for anyone interested in CRPGs, game development, and retro stuff.

Comments

General Error (not verified)
Thanks

It's strange, about two years ago, when I first got to know Wizard's Castle and started wondering where it came from, I completely missed this article. Anyway, BIG thanks for the information! So, the classic Wizard's Castle is also derived from a mainframe game, as so many, many other early classics...

Now, Armchair Arcade, be nice and give me some more inside information on this obscure precursor of Wizard's Castle: HOBBIT. Yes? Please!

Jeffry Johnston (not verified)
HOBBIT

I was searching for more information on the game HOBBIT, and found this page when searching around "orb of zot" and "wizard's castle". Here is the source for the game I played as a kid:


1 'COPYRIGHT (C) CLOAD 1979
2 'K. WILLIAMS, 3250 VERMONT SW, GRANDVILLE, MI 49418
5 RANDOMIZE(348)
8 DEFINT A-Z
10 DIM H(9,9),M(9,9),A(7),D(14),AC(7),Z(4)
20 A$="RUBY RED NORN STONEPALE PEARLOPAL EYE BLUE FLAMEPALANTIR SILMARILL "
30 D$="SCHLOCK YNGVI GOLLUM MARDUK LOKI AZATOTH DAGON FENRIS ABRACAX SAURON CTHULHU SATAN "
40 CLS:PRINT"H O B B I T"
45 FOR Q=1 TO 3000:NEXT Q
50 CLS
100 INPUT"DO YOU WANT INSTRUCTIONS";O$
110 IF O$="YES" OR O$="Y" THEN 2220
120 INPUT"WHAT RATING (1-NOVICE 9-EXPERT)";N
130 N=INT(ABS(N)):IF N<1 OR N>9 THEN 120
140 FOR X=1 TO 9:FOR Y=1 TO 9:H(X,Y)=5:M(X,Y)=1:NEXT Y:NEXT X
190 REM PUT WARPS
200 B=20+RND*N
210 FOR Q=1 TO B
220 X=RND*9 :Y=RND*9 :R=RND*9 :S=RND*9
230 IF X=SANDY=R THEN 220
240 H(X,Y)=R*10+S:NEXT Q
260 REM PUT DEMONS
270 B=N+3
280 FOR Q=1 TO B
290 GOSUB 2440:H(X,Y)=-Q:D(Q)=1
300 NEXT Q
310 REM PUT AMULETS
320 FOR Q=1 TO 7
330 GOSUB 2440:H(X,Y)=Q*100:A(Q)=1
340 AC(Q)=3:NEXT Q
350 REM PUT RUNESTAFF
360 GOSUB 2440:H(X,Y)=-1*(RND*(N+3)):D(13)=1:Z(3)=X:Z(4)=Y
370 REM PUT ORB
380 GOSUB 2440:H(X,Y)=10*(RND*9)+(RND*9):Z(1)=X:Z(2)=Y:D(14)=1
390 REM PUT CURSES
400 FOR Q=1 TO 3:C(Q,1)=1:C(Q,2)=10:C(Q,3)=10:NEXT Q
430 IF N<7 THEN 470
440 FOR Q=1 TO N-6:GOSUB 2440:C(Q,2)=X:C(Q,3)=Y:NEXT Q
470 REM PUT FLARES AND ORACLE
480 GOSUB 2440:H(X,Y)=4:GOSUB 2440:H(X,Y)=2
490 REM PUT HOBBIT
500 GOSUB 2440:K=X:L=Y:PRINT"ALL RIGHT FUR-FOOT "
510 P=125+RND(12-N)
511 T=1:G=0:W=0:F=10:GOTO 1530
520 IF T>P THEN 2120
530 T=T+1
540 IF N<7 OR D(14)=0 THEN 650
550 IF C(1,1)=1 THEN 570
560 T=T+1
570 IF C(2,1)=1 THEN 590
580 G=G-(RND*5)
590 IF C(3,1)=1 OR A(5)=0 OR D(14)=0 THEN 610
595 PRINT:PRINT"'YOU ARE UNDER MY POWER NOW...'":FOR Q=1 TO 500:NEXT C
600 ON (RND*4) GOTO 810,830,850,870
610 FOR Q=1 TO 3
620 IF C(Q,2)<>K OR C(Q,3)<>L THEN 640
630 C(Q,1)=0
640 NEXT Q
650 PRINT:INPUT"YOUR MOVE";O$
651 CLS
660 IF O$="WAIT" OR O$="WT" THEN 1530
670 IF O$="NORTH" OR O$="N" THEN 810
680 IF O$="SOUTH" OR O$="S" THEN 830
690 IF O$="EAST" OR O$="E" THEN 850
700 IF O$="WEST" OR O$="W" THEN 870
710 IF O$="MAP" OR O$="M" THEN 890
720 IF O$="FLARE" OR O$="F" THEN 1110
730 IF O$="KILL" OR O$="K" THEN 2030
740 IF O$="LAMP" OR O$="L" THEN 1200
750 IF O$="QUIT" OR O$="Q" THEN 1460
760 IF O$="TELEPORT" OR O$="T" THEN 1420
770 PRINT"EVEN A STUPID HOBBIT LIKE YOU"
780 PRINT"CAN DO BETTER THAN THAT"
790 GOTO 520
800 REM NORTH
810 K=K-1
811 GOSUB 2460
812 GOTO 1530
820 REM SOUTH
830 K=K+1
831 GOTO 811
840 REM EAST
850 L=L+1
851 GOTO 811
860 REM WEST
870 L=L-1
871 GOTO 811
880 REM MAP
890 CLS:PRINT " 1 2 3 4 5 6 7 8 9"
891 PRINT " +---+-----+-----+-----+-----+-----+-----+-----+-----+"
892 FOR X=1 TO 9
893 PRINT X;"-| ";
900 FOR Y=1 TO 9
910 IF M(X,Y)>99 THEN 930
920 PRINT " ";
930 PRINT M(X,Y);" ";
940 IF M(X,Y)>9 OR M(X,Y)<-9 THEN 960
950 PRINT" ";
960 NEXT Y
970 PRINT
980 NEXT X:PRINT
985 PRINT"YOU ARE AT (";L;",";K;")":GOSUB 986:GOTO 520
986 IF G>-1 THEN 990
987 G=0
990 PRINT"YOU HAVE";G;"GEMS"
1000 PRINT"AND THESE AMULETS:"
1010 FOR Q=1 TO 7
1020 IF A(Q)=1 THEN 1040
1030 PRINT" ";MID$(A$,Q*10-9,10),
1040 NEXT Q
1050 IF D(13)=1 THEN 1070
1060 PRINT" RUNESTAFF",
1070 IF D(14)=1 THEN 1090
1080 PRINT" ORB OF ZOT";
1090 RETURN
1100 REM FLARE
1110 IF F>0 THEN 1140
1120 PRINT"EVEN A SCATTER-BRAINED HOBBIT LIKE YOU"
1130 PRINT"SHOULD KNOW WHEN HE IS OUT OF FLARES":GOTO 520
1140 F=F-1:X=K:Y=L
1150 FOR Q=-1 TO 1:FOR QQ=-1 TO 1:K=Q+X:L=QQ+Y
1151 GOSUB 2460
1159 M(K,L)=H(K,L)
1160 IF M(K,L)>99 THEN 1170:PRINT" ";
1170 PRINT M(K,L);" ";:IF M(K,L)>9 OR M(K,L)<0 THEN 1180:PRINT " ";
1180 NEXT QQ:PRINT:NEXT Q:K=X:L=Y:GOTO 520
1190 REM LAMP
1200 INPUT"WHICH DIRECTION DO YOU SHINE THE LAMP";O$:X=K:Y=L
1210 IF O$<>"NORTH" AND O$<>"N" THEN 1220
1211 Q=1:GOTO 1250
1220 IF O$<>"SOUTH" AND O$<>"S" THEN 1230
1221 Q=2:GOTO 1250
1230 IF O$<>"EAST" AND O$<>"E" THEN 1240
1231 Q=3:GOTO 1250
1240 IF O$<>"WEST" AND O$<>"W" THEN 770
1241 Q=4
1250 PRINT"THE MAGIC LAMP SHINES AND AT ";
1251 ON Q GOTO 1260,1270,1280,1290
1260 K=K-1:GOTO 1300
1270 K=K+1:GOTO 1300
1280 L=L+1:GOTO 1300
1290 L=L-1
1300 GOSUB 2460
1301 PRINT"(";L;",";K;") YOU SEE ";:M(K,L)=H(K,L)
1310 IF M(K,L)<0 THEN 1380
1320 IF M(K,L)>0 THEN 1330
1321 PRINT"AN EMPTY ROOM":GOTO 1365
1330 IF M(K,L)>2 THEN 1340
1331 PRINT"THE ORACLE":GOTO 1365
1340 IF M(K,L)>4 THEN 1350
1341 PRINT"THE SPARE FLARES":GOTO 1365
1350 IF M(K,L)>5 THEN 1360
1351 PRINT"GEMS":GOTO 1365
1360 IF M(K,L)>99 THEN 1370
1361 PRINT"A WARP"
1365 K=X:L=Y:GOTO 520
1370 PRINT"THE ";MID$(A$,(M(K,L)/100)*10-9,10):GOTO 1365
1380 PRINT MID$(D$,-M(K,L)*10-9,10)
1385 IF K=Z(3) AND L=Z(4) THEN 1365
1390 PRINT"AND HE IS SO ANGRY HE COMES AFTER YOU"
1400 H(X,Y)=H(K,L):M(X,Y)=M(K,L):M(K,L)=0:H(K,L)=0:K=X:L=Y:GOTO 1530
1410 REM TELEPORT
1420 IF D(13)=0 THEN 1440
1421 PRINT"LAME-BRAIN HOBBIT MUST BE SUICIDAL"
1430 PRINT"TO TRY AND TELEPORT WITHOUT THE RUNESTAFF":GOTO 520
1440 INPUT"X-COORD ";L:IF L<0 OR L>9 THEN 1440
1441 INPUT"Y-COORD ";K:IF K<0 OR K>9 THEN 1441
1450 FOR Q=1 TO 7:A(Q)=1:NEXT Q:G=0:M(K,L)=H(K,L):GOTO 1530
1460 REM QUIT
1470 INPUT "DID YOU REALLY WANT TO QUIT";O$:IF O$="YES" OR O$="Y" THEN W=1:GOTO 1481
1480 PRINT"THEN DON'T SAY YOU DO":GOTO 520
1481 PRINT:IF D(14)=0 AND W=1 THEN PRINT"WELL, LITTLE HOBBIT, YOU WON THIS ONE" ELSE PRINT "TOO BAD YOU DIDN'T WIN, HOBBIT"
1482 PRINT:GOSUB 986
1483 PRINT:PRINT"AND YOU KILLED THESE DEMONS:":Q=0
1484 Q=Q+1:IF D(Q)=0 THEN PRINT MID$(D$,Q*10-9,10),
1485 IF Q"YES" AND O$<>"Y" THEN 1510
1500 PRINT"SOME HOBBITS NEVER LEARN":GOTO 100
1510 PRINT"MAYBE DUMB HOBBIT NOT SO DUMB AFTER ALL"
1520 GOTO 9999
1530 PRINT"YOU ARE AT (";L;",";K;")":M(K,L)=H(K,L)
1540 IF M(K,L)<0 THEN 1850
1550 IF M(K,L)=0 THEN 1650
1560 IF M(K,L)=2 THEN 1660
1570 IF M(K,L)=4 THEN 1630
1580 IF M(K,L)=5 THEN 1620
1590 IF M(K,L)<100 THEN 1790
1600 PRINT"WHERE YOU FIND ";MID$(A$,M(K,L)/10-9,10):A(M(K,L)/100)=0:GOTO 1640
1620 Q=(RND*5):H(K,L)=0:M(K,L)=0:G=G+Q:IF G>=0 THEN 1622
1621 G=Q
1622 PRINT"HERE YOU FIND";Q;"GEMS"
1623 PRINT"YOU NOW HAVE";G;"GEMS":GOTO 520
1630 F=F+10:PRINT"HERE YOU FIND THE SPARE FLARES"
1640 H(K,L)=0:M(K,L)=0:GOTO 520
1650 PRINT"LOTS OF HOBBIT TRACKS IN THE DUST":GOTO 520
1660 PRINT"YOU ARE IN THE PRESENCE OF THE ORACLE"
1670 IF A(4)=1 THEN 1690
1680 PRINT"THE OPAL EYE COMPELS IT TO ANSWER A QUESTION":GOTO 1720
1690 IF G>19 THEN 1700
1691 PRINT"BUT YOU ARE TOO POOR TO ASK ANYTHING":GOTO 520
1700 INPUT"WILL YOU SPEND 20 GEMS FOR 1 QUESTION";O$
1710 IF O$<>"YES" AND O$<>"Y" THEN 550 ELSE G=G-20
1720 PRINT"WHAT WOULD YOU KNOW THE LOCATION OF":X=0:Y=0
1730 INPUT"(EX: TO FIND THE OPAL EYE TYPE 400)";Q
1740 FOR R=1 TO 9:FOR S=1 TO 9:PRINT"MUMBLE ";:IF H(R,S)<>Q THEN 1760
1750 IF Q<>0 THEN M(R,S)=H(R,S):X=R:Y=S:Q=0
1760 NEXT S:NEXT R:PRINT:PRINT
1770 IF X<>0 THEN 1780 ELSE PRINT"EVEN THE ORACLE DOES NOT KNOW WHERE THAT IS":GOTO 550
1780 PRINT"THAT WHICH YOU DESIRE WILL BE FOUND AT (";Y;",";X;")":GOTO 550
1790 IF K<>Z(1) OR L<>Z(2) THEN 1830
1800 IF O$<>"TELEPORT" AND O$<>"T" THEN 670
1810 PRINT"OH WOW!!":PRINT"LUCKY HOBBIT NOW HAS THE MIGHTY ORB OF ZOT!"
1820 H(K,L)=0:M(K,L)=0:D(14)=0:GOTO 520
1830 Q=INT(M(K,L)/10):K=M(K,L)-(Q*10):L=Q
1831 G=G-(RND*5):IF G>-1 THEN 1530 ELSE G=0:GOTO 1530
1840 REM DEMON
1850 IF K<>Z(3) OR L<>Z(4) THEN 1870
1860 PRINT"BOLD HOBBIT THIEF NOW HAS THE RUNESTAFF":H(K,L)=0:M(K,L)=0:D(13)=0:GOTO 520
1870 M(K,L)=H(K,L):IF M(K,L)>-1 THEN 1530
1871 PRINT"UH OH - YOU JUST RAN INTO ";MID$(D$,ABS(M(K,L))*10-9,10):Q=0
1880 Q=Q+1:IF A(Q)=0 THEN 2010
1881 IF Q<7 THEN 1880
1890 INPUT"HOW MUCH OF A BRIBE DO YOU OFFER HIM";B:PRINT
1900 IF B>0 THEN 1930
1901 PRINT"NORMALLY ";MID$(D$,-M(K,L)*10-9,10);" WOULD EAT YOU,"
1910 PRINT"BUT HE IS AFRAID THAT YOU ARE SICK OR SOMETHING"
1920 PRINT"SO TEARS YOU INTO SHREDS INSTEAD":GOTO 1481
1930 IF B=INT(B) THEN 1960
1940 PRINT MID$(D$,-M(K,L)*10-9,10);" DOESN'T UNDERSTAND DECIMALS,"
1950 PRINT"SO HE EATS CONFUSING LITTLE FUR-FOOT":GOTO 1481
1960 IF B<=G THEN 1990
1970 PRINT MID$(D$,-M(K,L)*10-9,10);" DOESN'T LIKE HOBBITS WHO OFFER MORE GEMS"
1980 PRINT"THAN THEY HAVE, SO HE EATS YOU":GOTO 1481
1990 G=G-B:IF B>(RND*(-M(K,L))) THEN PRINT"HE TAKES YOUR BRIBE":GOTO 550
1991 PRINT"THAT WASN'T ENOUGH, SO HE EATS YOU":GOTO 1481
2010 PRINT"BUT THE ";MID$(A$,Q*10-9,10);" PROTECTS YOU":GOTO 520
2020 REM KILL
2030 IF M(K,L)<0 THEN 2040
2031 PRINT"YOU HAVE TO FIND A DEMON TO KILL IT":GOTO 520
2040 PRINT"WHICH AMULET DO YOU ATTACK WITH"
2050 INPUT"(EX: OPAL EYE = 400)";Q:IF Q>700 THEN 2050
2051 Q=Q/100:IF A(Q)=0 THEN 2053
2052 PRINT"YOU DON'T POSSESS THAT ONE, STUPID!":GOTO 520
2053 IF AC(Q)>0 THEN 2055
2054 PRINT "THE ";MID$(A$,Q*10-9,10);" IS RECHARGING":GOTO 520
2055 AC(Q)=AC(Q)-1
2060 REM
2070 PRINT"THE ";MID$(A$,Q*10-9,10);" ATTACKS AND ";MID$(D$,-M(K,L)*10-9,10);
2080 IF (RND*Q)+3>(RND*-M(K,L)) THEN 2090
2081 PRINT" IS STAGGERED BUT NOT DEAD":GOTO 520
2090 PRINT" DIES":B=(RND*50):D(-M(K,L))=0:G=G+B:M(K,L)=0:H(K,L)=0
2100 PRINT"AND HERE IS HIS HOARD OF";B;"GEMS":GOTO 520
2110 REM WIZBACK
2120 IF W>0 THEN 2150
2121 PRINT"OH NO!!!"
2130 PRINT"THE WIZARD HAS RETURNED": IF D(14)=1 THEN 2170
2140 PRINT"BUT THE ORB OF ZOT PROTECTS YOU - FOR NOW":W=RND(9):GOTO 650
2150 W=W-1:IF W<>0 THEN 650 ELSE PRINT "SOME HOBBITS KNOW WHEN TO QUIT"
2160 PRINT "YOU DIDN'T."
2170 PRINT "WHAT A DELICIOUS LOOKING TOAD YOU MAKE":Q=0
2180 Q=Q+1
2181 IF D(Q)=1 THEN 2190
2182 IF Q=12 THEN 2200
2183 GOTO 2180
2190 PRINT"AND YOU GET FED TO ";MID$(D$,Q*10-9,10):GOTO 1481
2200 PRINT"AND YOU GET STEPPED ON BY THE WIZARD"
2210 PRINT" S Q U I S H ! !":GOTO1481
2220 PRINT"IN THIS GAME YOU BECOME A HOBBIT THIEF"
2222 PRINT"TRYING TO STEAL THE ORB OF ZOT FROM"
2224 PRINT"THE CASTLE OF THE EVIL WIZARD."
2226 INPUT"HIT ENTER TO CONTINUE";O$:CLS
2228 PRINT"THE CASTLE IS A (9 X 9) MATRIX FILLED"
2230 PRINT"WITH MANY THINGS. AMONG THESE"
2232 PRINT"THINGS (FOLLOWED BY THEIR NUMERIC REPRESENTATION"
2234 PRINT"ON THE MAP) ARE:"
2236 PRINT"GEMS (5), WARPS (11 THRU 99), SPARE FLARES (4)"
2238 PRINT"DEMONS (-1 THRU -12), AN ORACLE (2), AND"
2240 PRINT"AMULETS (100 THRU 700)."
2242 INPUT"HIT ENTER TO CONTINUE";O$:CLS
2244 PRINT"ALSO HIDDEN IN THE CASTLE ARE THE RUNESTAFF"
2246 PRINT"AND THE ORB OF ZOT. THE ORB IS DISGUISED "
2248 PRINT"AS A WARP AND THE ONLY WAY TO GET IT IS"
2250 PRINT"TO TELEPORT INTO ITS ROOM DIRECTLY."
2252 PRINT"IF YOU TRY TO MOVE INTO ITS ROOM YOU WILL"
2254 PRINT"GO PAST IT IN THE SAME DIRECTION."
2256 PRINT"TO TELEPORT YOU MUST USE THE RUNESTAFF"
2258 PRINT"WHICH IS DISGUISED AS A DEMON. BE CAREFUL"
2260 PRINT"WHEN YOU TELEPORT, HOWEVER, BECAUSE YOU LOSE"
2262 PRINT"ALL YOUR AMULETS AND GEMS (NOTE: YOU MAY ALSO"
2263 PRINT"DROP SOME GEMS EACH TIME YOU MOVE)."
2264 INPUT"HIT ENTER TO CONTINUE ";O$:CLS
2266 PRINT"FIND THE ORB AS QUICKLY AS YOU CAN BECAUSE"
2268 PRINT"THE WIZARD WILL RETURN SHORTLY AND ONLY THE"
2270 PRINT"ORB CAN PREVENT HIM FROM DOING TERRIBLE THINGS"
2272 PRINT"TO YOU."
2280 REM
2290 INPUT"HIT ENTER TO CONTINUE";O$:CLS
2291 PRINT"THE LEGAL MOVES ARE:"
2300 PRINT"NORTH OR N"
2310 PRINT"SOUTH OR S"
2320 PRINT"EAST OR E"
2330 PRINT"WEST OR W"
2340 PRINT"WAIT OR WT"
2350 PRINT"MAP OR M"
2360 PRINT"FLARE OR F"
2370 PRINT"LAMP OR L"
2380 PRINT"TELEPORT OR T"
2390 PRINT"KILL OR K"
2400 PRINT"QUIT OR Q"
2410 INPUT"HIT ENTER TO CONTINUE";O$:CLS
2420 GOTO 120
2430 REM A
2440 X=(RND*9):Y=(RND*9):IF H(X,Y)<>5 THEN 2440:RETURN
2450 REM B
2460 IF K>0 THEN 2470
2461 K=9
2470 IF K<10 THEN 2480
2471 K=1
2480 IF L>0 THEN 2490
2481 L=9
2490 IF L<10 THEN 2500
2491 L=1
2500 RETURN
9999 END
65399 '** DONE - PRESS ENTER TO RETURN TO MENU **

Bill Loguidice
Bill Loguidice's picture
Offline
Joined: 12/31/1969
This would be fantastic to

This would be fantastic to try on my Exidy Sorcerer, assuming it's for that. Which BASIC is this for, Jeffry?

Books!
Bill Loguidice, Managing Director | Armchair Arcade, Inc.
[About Me]

n/a
Rowdy Rob
Rowdy Rob's picture
Offline
Joined: 09/04/2006
TRS-80?
Bill Loguidice wrote:

This would be fantastic to try on my Exidy Sorcerer, assuming it's for that. Which BASIC is this for, Jeffry?

I'm guessing this was for the TRS-80 (Model I). The first line says:

1 'COPYRIGHT (C) CLOAD 1979
2 'K. WILLIAMS, 3250 VERMONT SW, GRANDVILLE, MI 49418

"CLOAD" Magazine, as you know, catered to the TRS-80. Gotta go!

qoj hpmoj o+ 6uo73q 3Jv 3svq jnoh 77V

Bill Loguidice
Bill Loguidice's picture
Offline
Joined: 12/31/1969
CLOAD, aka, I'm a dummy
Rowdy Rob wrote:
Bill Loguidice wrote:

This would be fantastic to try on my Exidy Sorcerer, assuming it's for that. Which BASIC is this for, Jeffry?

I'm guessing this was for the TRS-80 (Model I). The first line says:

1 'COPYRIGHT (C) CLOAD 1979
2 'K. WILLIAMS, 3250 VERMONT SW, GRANDVILLE, MI 49418

"CLOAD" Magazine, as you know, catered to the TRS-80. Gotta go!

qoj hpmoj o+ 6uo73q 3Jv 3svq jnoh 77V

You're 100% correct, Rob. Man, I hate brain blocks like that. In looking it over in more detail, it's very clean and simple BASIC, so I'm not surprised "General Error" got it to work under BASICA. In fact, this is an excellent candidate for "porting" to nearly every classic computer with even a mediocre BASIC interpreter (which was naturally most of them, save for the VideoBrain) and limited memory.

[On an interesting side note, I have several early 80's BASIC programming books that use the BASIC in the TRS-80 as the run-time model and then just provide notes for converting to other BASICs--that could be due to the high sales at the time as well as the straightforward nature of its version of the language]

Books!
Bill Loguidice, Managing Director | Armchair Arcade, Inc.
[About Me]

n/a
Rowdy Rob
Rowdy Rob's picture
Offline
Joined: 09/04/2006
CLOAD, aka, I'm a dummy??????
Bill Loguidice wrote:
Rowdy Rob wrote:

I'm guessing this was for the TRS-80 (Model I). The first line says:

1 'COPYRIGHT (C) CLOAD 1979

You're 100% correct, Rob. Man, I hate brain blocks like that.

Geez, Bill, lighten up on yourself! "CLOAD" is a pretty obscure reference, and easily missed in a long program listing.

Bill Loguidice wrote:

In looking it over in more detail, it's very clean and simple BASIC, so I'm not surprised "General Error" got it to work under BASICA. In fact, this is an excellent candidate for "porting" to nearly every classic computer with even a mediocre BASIC interpreter (which was naturally most of them, save for the VideoBrain) and limited memory.

Indeed, and I miss these "old-school" programs. TRS-80 Basic is where I learned the BASIC language, and it was indeed easy to read and learn. I'm not surprised that it was easy to port to another relatively-standardized BASIC like BasicA or whatever.

It's when BASIC started to evolve into a modern "object-oriented" language that I largely stopped programming in Basic (or any other language). I guess I'm a curmudgeon, but I was accustomed to "stream-of-consciousness" programming that the old "line-oriented" programming allowed. Object-Oriented languages seem to require too much pre-planning to get anything to work. That's for the best, of course, but the adjustment has been too much for my old, preconditioned mind to adapt to, especially without a great "fire" to do so. AKA I'm a dummy. (Geez, lighten up on myself, Rob!)

I miss TRS-80 Basic!

qoj hpmoj o+ 6uo73q 3Jv 3svq jnoh 77V

Bill Loguidice
Bill Loguidice's picture
Offline
Joined: 12/31/1969
I agree 100%, Rob. The

I agree 100%, Rob. The switch from numbered lines to not needing lines was a bit much for me. I remember some of the transitional BASICs allowing the option of line numbers. Being old and numerically slow in the brain, I prefer the logical and linear nature of the numbered style, but certainly appreciate the "new" (now old) style. Interestingly, the last bit of major programming I did was in 2004 in QBasic for a 2K or less mini-game competition and I ended up throwing in a few line numbers to help with my referencing, which shows how weak my "skillz" are.

Books!
Bill Loguidice, Managing Director | Armchair Arcade, Inc.
[About Me]

n/a
Jeffry Johnston (not verified)
Basic version

I ran it in GW-BASIC on MS-DOS 3.30, but obviously that didn't exist in 1979. I am curious to know if this was anything like the mainframe version, or if it is simply a cheap imitation of the game. In any case it provided me with many enjoyable gaming sessions.

Jeffry Johnston (not verified)
Oops

Sorry for the double post. When I didn't see it come up after a few minutes I was afraid I had done something wrong so I tried again. Guess not!

General Error (not verified)
Grrrrreat!

Wow, Jeffrey, thanks for offering the BASIC listing for HOBBIT! I just did a quick check and it seems to run fine with BASICA under DOSBox. And it indeed is a simpler version of Wizard's Castle. Very cool.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.