A Pre-Rogue-Like: Fixing 1979's DUNGEON for the Commodore PET

แชร์
ฝัง

ความคิดเห็น • 322

  • @MichaelSchgowiz
    @MichaelSchgowiz 4 ปีที่แล้ว +42

    Hi! I'm Michael Chicago-Wiz (chgowiz), I did the python code that you linked to, thanks for the shout out! I sure wish we had talked before I spent a couple of weeks trying to relearn PET Basic :) I'm glad you had fun and yes, it sparked my imagination and fostered a love for fantasy/CRPGs that has never gone away.
    Cheers!

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +8

      I had intended to let you know I had posted the video, but you found it before I got a chance! :)

    • @MichaelSchgowiz
      @MichaelSchgowiz 4 ปีที่แล้ว +4

      @@8_Bit The power of the Internet, someone has already made a "pull" on my python code and suggested some changes! ;) They linked me to your video.

    • @tomk3682
      @tomk3682 4 ปีที่แล้ว +1

      Hi downloaded your python code but its stating ModuleNotFoundError: No module named '_curses' when I try to run it, any idea why ? Is there something wrong with the library as '_curses' doesn't seem to be in your code. Thank you

    • @tomk3682
      @tomk3682 4 ปีที่แล้ว +2

      nm sorted it out.. Had to install windows-curses though pip

    • @Malephex
      @Malephex 3 ปีที่แล้ว +2

      Small world; I used to read your OSR blog :)

  • @The8BitGuy
    @The8BitGuy 4 ปีที่แล้ว +94

    Neat. I actually never really understood what garbage collection was. I had heard the name but didn't really get it.

    • @polluks2
      @polluks2 4 ปีที่แล้ว +1

      Bill did a good job, however Commodore improved it.

    • @pikadroo
      @pikadroo 4 ปีที่แล้ว +1

      No big surprise to me.

    • @Controllerhead
      @Controllerhead 4 ปีที่แล้ว

      No need for those silly modern programming gadgets when your LDA (LB), y 'in here and STA $ ,x 'in there wherever you dang well please! I like playing electron traffic cop =)

    • @elfenmagix8173
      @elfenmagix8173 4 ปีที่แล้ว

      There's garbage men to collect the trash in Dallas?

    • @huntabadday2663
      @huntabadday2663 3 ปีที่แล้ว

      I also didn't understand what garbage collection it was

  • @robintst
    @robintst 4 ปีที่แล้ว +45

    When you say it sparked your imagination, that's such an understated notion that I share too. There's just something about the simple graphics of old games, especially the ones that use the plain black of the screen as a background (or lack of a background) that gets the brain firing. When your imagination has to fill in the blanks, it becomes a more personal experience. Bravo!

  • @RonLauzon
    @RonLauzon 4 ปีที่แล้ว +19

    I remember that glitch! I played Dungeon a lot in high school. When the school got the 8032 PETs, we noticed the glitch.

  • @briansawyer2543
    @briansawyer2543 4 ปีที่แล้ว +11

    Hi I wrote this game a very long time ago :) Thank you for covering it, hadn't seen it in years!

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +5

      Hi Brian! It's great to hear from you. Dungeon was a hugely influential game for me, one of the very first that captured my imagination. I'm curious if you remember your inspiration for making this game; had you played Beneath Apple Manor before?

    • @briansawyer2543
      @briansawyer2543 4 ปีที่แล้ว +5

      @@8_Bit No-- I'd played Zork which was text-based so Dungeon was my attempt at making a zork-like game that was visual. Nice to hear you still remember it!

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +5

      That's fantastic - did you get the idea for the "fog of war" reveal of the dungeon from (paper) war games? It's amazing how similar Dungeon is to Rogue. I'm also curious if you did any game development afterwards. Were you the author of that Modula 2 book I showed? I also found a Coleco ADAM book written by a Brian Sawyer, was that you?

    • @briansawyer2543
      @briansawyer2543 4 ปีที่แล้ว +6

      @@8_Bit I originally coded the game so you'd see the whole map from the start, but then it seemed to give it all away, so I changed it to just show your immediate surroundings so you sort of discover it as you go which is more fun-- and only involves drawing 8 characters so was fast. I haven't seen rogue but it's possible they thought the same thing-- was that later or earlier? And yes I wrote those books--you're one of the few people who ever bought them! I didn't do any more games but drifted to AI stuff, but it was AI of the 1980s and didn't really do much compared to todays AI which amazes me.

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +5

      @@briansawyer2543 Rogue seems to have been released in 1980 so it seems you had the idea a year earlier, and Beneath Apple Manor (for the Apple II) was released in 1978. The developers of Beneath Apple Manor and Rogue are all on the record saying they had no knowledge of each other's games, and you're in the same situation too - it's pretty amazing really!

  • @seanleas6780
    @seanleas6780 4 ปีที่แล้ว +36

    I just love how these text-based/low-resolution simple graphics RPGs give me more enjoyment than modern games. I think its because of the imagination needed to fill in the gaps.

    • @FeelingShred
      @FeelingShred 4 ปีที่แล้ว +5

      when I'm playing Angband and come across these monsters that can spit acid and melt all your armor, I always stop on my tracks for a minute thinking what will I do, if I may be able to turn back and escape without waking him up, or if I try to stealth walk around him and move on without alerting him... I'm not aware of any other game that brings me that level of interaction and awe out there... Maybe "Xcom Terror From The Deep" which also features randomized maps. Dungeon crawlers rock

    • @Chaaaaaaaalie
      @Chaaaaaaaalie ปีที่แล้ว

      Yep, like books are often better than movies based on them.

    • @keithparker1346
      @keithparker1346 ปีที่แล้ว +1

      I think there's a tendency in modern games to keep adding more and more forgetting about simplicity

  • @Asterra2
    @Asterra2 4 ปีที่แล้ว +5

    I learned about the Commodore Pet only a few years ago. I grew up owning a Vic-20 and making crappy little 2fps games in Basic. It blew me away to know that there was a platform _before_ the Vic-20 that was like a Vic-20 with a much, much higher resolution. Footnote: About 33% of the games I made on the Vic-20 were instantly destroyed because of the low quality of the tapes used to save them. But I managed to rescue a couple of them with painstaking editing in an audio app. If only one of those WAV-to-TAP type apps were designed to continue reading the WAV even after discovering a corrupt byte, I'd have rescued everything. Still don't know why every last one of them couldn't handle corrupt data in a format that was destined to be inherently prone to corruption. Somebody should take a modern stab at redoing those.

  • @dennisp.2147
    @dennisp.2147 4 ปีที่แล้ว +9

    Chuck Hutchens is a youtuber who needs more viewers. I've been watching him for a while. His stuff is great!

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +7

      I'm a fan of Chuck's, and I'm really glad he helped out with this video!

  • @jjeeeekk
    @jjeeeekk 4 ปีที่แล้ว +4

    Congratulations to Robin with his method of visualization how the string heap is populated by means of the screen memory. This was really clever and was my high-light on this show. :)

  • @NeilRoy
    @NeilRoy 4 ปีที่แล้ว +22

    LMAO, love the ending song. Those old dungeon crawlers really sparked the imagination. The game that really fascinated me was Dungeons of Daggorath on the COCO2. One of the first "3D" dungeon games with similar mechanics. I think that is the main problem with modern day graphics. As amazing as they are, they can also take away from the whole imagination generating simple graphics. I have noticed some simple indy games that look like some of the really old ones. I think they are popular for this very reason.

    • @napomania
      @napomania 4 ปีที่แล้ว +1

      Robin is a lot Neil Young inspired

    • @FeelingShred
      @FeelingShred 4 ปีที่แล้ว +2

      Someone made a video playing Rogue, from what I remember fairly unedited video for that livestream feel, in the middle of the video it started pouring rain outside the guy's house, the microphone captured the rain sound and provided the PERFECT ambiance sound to go along with Rogue. Really amazing video... Since then I always keep a "rain sounds" mp3 file around to listen while playing, or just to isolate external noise sometimes. Also, there's an entire genre of music called Dungeon Synth of ambient calm percussion-less music, I'm not sure if its origins have any relation to the games, but it goes well while playing too. Classics like "Depressive Silence I & II" and "Secret Stairways" are my first recommendation to newcomers.

  • @LivingInAVan
    @LivingInAVan 4 ปีที่แล้ว +4

    I am so impressed with your knowledge, Robin!

  • @davidbale8495
    @davidbale8495 4 ปีที่แล้ว +6

    That Dungeon game is the FIRST computer game I ever played. It's what started my whole trek down the computer programmer trail. Such memories.

  • @richardperritt
    @richardperritt 4 ปีที่แล้ว +16

    Oh so close. 😁
    I too grew up in Northern Ontario and had a teacher named Mr. Hall. He was an elementary teacher though.
    We played this Dungeon on our HS PETs. Um, I mean, we did homework assignments on our HS PETs.

    • @sizzaleenmean
      @sizzaleenmean 4 ปีที่แล้ว +1

      Small world! Northern Ontario as well and played Dungeon on the PET.

  • @pfalstad
    @pfalstad ปีที่แล้ว +1

    I found a bug while reading the annotated source code. When you see gold, if you don't get it right away, but instead just move around next to it or press 5, then the potential amount of gold keeps going up. At the start, if you move 10 times next to the G, you'll get 10 gold pieces when you finally grab it. The effect is greatly compounded if you have some gold. If you have x gold already, then it will add a random amount from 1 to x to the pot for each move. The potential amount never goes down, either. I was easily able to get more than 700 billion gold pieces, enough so that the amount was displayed in scientific notation. I wish I'd known that back when we were playing this game in school.

  • @1FroogleScout
    @1FroogleScout 3 ปีที่แล้ว +1

    Thank you Chuck! Fixed it on my PET, works great!

  • @HPPalmtopTube
    @HPPalmtopTube ปีที่แล้ว +1

    Wow, I was born 16 days after that first CURSOR tape was released :)

  • @robjeanbras1130
    @robjeanbras1130 4 ปีที่แล้ว +1

    My first computer experience was on a PET in our high school computer science class. I played lunar lander and was hooked. I took BASIC and then got a VIC20, upgraded to a C64 and in 1986 or 87 I got a C128. I learned by typing games in from magazines and then got a book on 6502 machine language and taught myself that. So glad I grew up during this time because I became a software developer.

  • @TheEmbeddedHobbyist
    @TheEmbeddedHobbyist 4 ปีที่แล้ว +3

    Got my 4016 back up and running this year, the mains filter of my disk drive let out the magic smoke. The pet had video memory chip failure but after replacement and a strip and clean back up and running fine. Got a pile of disks to work through to see if they still work after being stored in the loft.?
    Great to see pets still being used and new hardware being made. If you visit my channel your get to see my one owner pet, I've had it since new and it has survived many house move clear outs.
    Keep the pet videos coming 👍

  • @Enfors
    @Enfors 4 ปีที่แล้ว +7

    As I sit her grinning to myself like an idiot while watching, I'm struck by how absolutely useless but at the same time UTTERLY AWESOME this is. I'm absolutely fascinated by this, especially when Robin visualized how the garbage collection worked. Very nice video, thanks guys!

    • @RetroDawn
      @RetroDawn 3 ปีที่แล้ว +1

      Useless? Now people can play Dungeon without the glitch on all BASIC 4.0 PET's.

  • @FeelingShred
    @FeelingShred 4 ปีที่แล้ว +2

    Someone made a video playing Rogue, from what I remember a fairly unedited video for that livestream feel. In the middle of the video it started pouring rain outside the guy's house, the microphone captured the rain sound and provided the PERFECT ambiance sound to go along with Rogue. Really amazing video... Since then I always keep a "rain sounds" mp3 file around to listen while playing, or just to isolate external noise sometimes, it's good for concentrating while working. Also, there's an entire genre of music called Dungeon Synth of ambient calm percussion-less music, I'm not sure if its origins have any relation to the games, but it goes well while playing too. Classics like "Depressive Silence I & II" and "Secret Stairways" are my first recommendation to newcomers.
    Very few games can evoke the same feelings that these ASCII Rogue-likes bring, the only one that comes close might be Xcom Terror From The Deep which also relies on randomized levels, the foundation of that game is really a dungeon crawler with a futuristic sci-fi coat of paint on top instead of medieval weapons.

  • @crab-dogjones4659
    @crab-dogjones4659 3 ปีที่แล้ว +2

    Wow, your channel has so much content now. You've just been steadily churning it out this whole time. Excellent work, great subject choices. I'm going to watch em all. In a row.

    • @8_Bit
      @8_Bit  3 ปีที่แล้ว +1

      Haha, thanks Mike! I wonder how many hours that is in total now. I think it's around 80 episodes. And then I've got more on my 2nd channel now, in case you haven't discovered that yet. Thanks for sticking around and watching!

  • @glonch
    @glonch 4 ปีที่แล้ว +4

    I'm not a Commodore guy (Apple II Forever baby)... anyways, this was awesome. I love it when old programs are fixed 40 years later. Too cool.

    • @fnjesusfreak
      @fnjesusfreak 4 ปีที่แล้ว

      FPBASIC is pretty similar to Commodore BASIC (they share most of their code) so maybe it could run on an Apple ][+...

  • @donnierussellii4659
    @donnierussellii4659 4 ปีที่แล้ว +3

    There seems to be some lost history about early Roguelikes, and its great to see some of that fog cleared away. I used to write BASIC programs on the C64. I still have one game on tape from 1985 that uses string functions (a clone of Q-Bert). How I figured all that out at such a young age I can't imagine.

    • @greendryerlint
      @greendryerlint 4 ปีที่แล้ว

      If you did it right, you could possibly display PETSCI graphics and maybe even animate with a couple of preliminary pokes and setting the values of strings. Though it would probably be gawdawful slow.. It would definitely confuse most people looking at your program listing though.

  • @Mr_ToR
    @Mr_ToR 4 ปีที่แล้ว +1

    8:48 OMG a 2031 and an original commodore IEEE-488 cable. What a rare sight this is.

  • @Cubik303
    @Cubik303 4 ปีที่แล้ว +1

    Very nice code analysis and explanation!

  • @barryguff6893
    @barryguff6893 ปีที่แล้ว +1

    I love your hand. :) It has so much personality and makes your videos so enjoyable to watch.

  • @IvanEngler
    @IvanEngler 4 ปีที่แล้ว +1

    very informative & quite interesting to see the inner workings of basic memory handling.

  • @Uterr
    @Uterr 4 ปีที่แล้ว +1

    thank you for sharing this sweet retro past that i did not have

  • @CobraTheSpacePirate
    @CobraTheSpacePirate 4 ปีที่แล้ว +4

    My friend's name was Ian, too. His Dad was the computer teacher at their high school. He had Commodore PETs in the basement!

  • @markallison8108
    @markallison8108 4 ปีที่แล้ว +2

    I remember playing text games on my Vic 20. Good times!

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว

      I still remember the first time I got to play a Scott Adams game on a VIC-20, it was amazing!

  • @MarvelousLXVII
    @MarvelousLXVII 4 ปีที่แล้ว

    Telengard was the first C-64 game I bought--similar type. Loved getting into the BASIC and making changes. Great fun and great times.

  • @TheodoreWard
    @TheodoreWard 4 ปีที่แล้ว +2

    Nice video. I was able to ascend in Nethack on a Linux machine years ago! Okay I had to cheat via a scam where I would save then back up my save file.
    So much easier :)

  • @mzsharpworks
    @mzsharpworks 4 ปีที่แล้ว +1

    Really a very cool video :) And love all the explanations. I know I mentioned on Twitter but when you re-routed the string memory into screen memory that was excellent and really helped me to understand what the garbage collection is (had often heard that term in the past).

  • @PeterRichardsandYoureNot
    @PeterRichardsandYoureNot 3 ปีที่แล้ว

    I remember one of my first “official” computer classes in the 70s/early 80s. It was with mr Kashner at south shore middle school in Seattle, ,Washington. He has a couple of the PETs modded with a switch on the front that essentially flipped the rom chip and gave the user a completely different user interface. It also included a different rom set adding instructions that were not available in standard rom, and as such, not available to most of the class. He also had a couple machines setup with the Logo Graphics’s language which allowed you to program movements of the “turtle”. Mr. Kashner was way ahead of his time and a complete nerd’s nerd. He taught us binary base 2 math and machine language in 7th grade. Something no other teacher would try to tackle.
    Amazingly, I also ended up with a new Timex Sinclair from the local K-mart. Then, Atari 400xl....the. 800...then the ever expandable TI99/4a which had a cartridge slot allowing for programming in basic and access to the speech module. Programs still stored on cassette tape where you essentially hit record on the device, and then play the code out through the audio out to save the encoded sounds to the cassette. The TI had great sprite support and was super simple to program.
    Later moved on to Apple ][e, the ][c then the last home computer I ended up with was the Apple ][gs with sider 40 meg hard drive and a 9600 baud usrobotics modem through the Sysop deal. A steal at exactly 505 bucks! Because I ran a BBS I eventually updated the hard drive to the cartridge system with scsi interface allowing me to swap our 40 megs at a time to allow users to download stuff. Can’t remember the name of drive. But using carts was way ahead of its time. It did have drawbacks though cause if any dust got in there, you were screwed. I lost more than one whole platter of data to this issue! Great system and great memories.

  • @Mr_ToR
    @Mr_ToR 4 ปีที่แล้ว +1

    30:01 That drive I believe is the petSD+ but this one here has an awesome looking custom case.
    I mounted mine under the 'hood' so mine does not require a case at all.

  • @trwijbenga
    @trwijbenga 4 ปีที่แล้ว +1

    I love how you explain your garbage collection theory about what goes wrong in the different versions. You explain it so well that it’s easy to understand, but I still feel smart that I “get” it now, because you definitely kneed some knowledge to figure this out. You would be a great teacher.

  • @OmeedNOuhadi
    @OmeedNOuhadi 4 ปีที่แล้ว +2

    Awesome, that game box actually represents the game. Funny how little CHR can go a long way, but on the NES they made some nice looking games that are very bad, or aggravating to play.
    Thank you for sharing.

  • @greendryerlint
    @greendryerlint 4 ปีที่แล้ว +2

    Does anyone remember the freeware PET game "Toker", with the object being to smoke a bong as quickly as possible? It was a very popular underground program in my school and possibly got some of the stoner kids interested in programming. I remember one of the REM statements in first few lines of the listing as saying "Copy me I want to travel!"

  • @blatherskite3009
    @blatherskite3009 2 ปีที่แล้ว

    This takes me back... The first computer game I ever played was something called "The Valley" on a green-screen Commodore PET at my school. This was back in the days when computers lived in "the computer room" and you had to book time on them! :) It looked and played similarly to this "Dungeon" game, and even though it would be considered incredibly simple BASIC-coded fare by modern standards, it was a major leap in depth and complexity over the relatively simplistic action games that I was used to playing at home on my Atari VCS.

  • @chromosundrift
    @chromosundrift 4 ปีที่แล้ว

    my first roguelikes were Hack and Larn on the Amiga from about 1987. Larn was so good. The character graphics were just enough to keep the feel of the roguelikes but make it a bit easier to remember what you're looking at when you explore the dungeon.

  • @osgrov
    @osgrov 4 ปีที่แล้ว +1

    Sweet, glad for the fixed version. :)
    My addiction to Rogue started on the Amiga. I got the Epyx game you have for my Amiga 1000 in early 1986 and was completely hooked! There aren't many games since that have beaten the feeling of finding the elusive Amulet of Yendor.. That took quite awhile, jeez. Brutal game. :)

  • @Walczyk
    @Walczyk 4 ปีที่แล้ว +1

    >Ending credits song is "Rogue" from Bedford Level Experiment's album "Place Without A Computer"
    badass old school punk sound

    • @robsku1
      @robsku1 3 ปีที่แล้ว

      Bedford Level Experiment's :D Love the name of the band, I'll have to check it out sometime :DD

  • @ulrichs.3228
    @ulrichs.3228 4 ปีที่แล้ว +2

    For those of your viewers interested in the history of roguelikes, there's David Craddock's "Dungeon Hacks: How NetHack, Angband, and Other Roguelikes Changed the Course of Video Games". I got my (audiobook) copy cheap in a humble bundle a couple of years back, but it's still around as an ebook, too.

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว

      Thanks for the suggestion, I just found a copy of the expanded edition from 2019. Looking forward to reading it.

  • @frocks6562
    @frocks6562 4 ปีที่แล้ว +1

    so cool to see how much gaming has evolved in the past 40 years

  • @MichaelPohoreski
    @MichaelPohoreski 4 ปีที่แล้ว +6

    @17:47 You can see the same visual representation of strings in Applesoft BASIC with:
    HOME:POKE 104,4:POKE 1024,0
    NEW
    HIMEM:2040
    A$="CAT"
    B$="DOG"
    A$="HORSE"
    ? FRE(0)

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +1

      Very cool!

  • @james5583
    @james5583 4 ปีที่แล้ว

    tnx for a instructive video of how it works and the fixed version. i just have to try to play it when my Pet screen is fixed again.

  • @JustWasted3HoursHere
    @JustWasted3HoursHere 4 ปีที่แล้ว +3

    I remember many many years ago in one of those great 8-bit computer magazines for the Commodore 64 (I think it was "Compute! Gazette") they were talking about garbage collection (though they may have used a different name at the time) and they had a very short BASIC program to type in (less than a dozen lines if I remember correctly) to demonstrate it. It forced a situation where the system would do a garbage collection which totally "froze" the computer for at least a full minute. They also gave several tips on how to eliminate or at least minimize garbage collection in your BASIC programs.
    Some languages allow you to turn off automatic garbage collection or even require you to do it yourself manually. Not doing it correctly can lead to memory leaks, which can be hard to track down or even notice except under certain situations (like the program running for a very long time).

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +1

      Yes, I believe Jim Butterfield did a couple articles on the subject. I was going to get even deeper into garbage collection in this episode, but reigned it in to try to stay on the main topic. Hopefully in another video.

    • @JustWasted3HoursHere
      @JustWasted3HoursHere 4 ปีที่แล้ว +1

      @@8_Bit Sounds great. I think a lot of people would find that interesting, and especially why garbage collection on those older systems was so much more crucial than today (though still necessary) because of the far more limited RAM available in the first place. I wonder how the Atari 2600, with its microscopic 128 bytes of RAM, handled GC, if at all?

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +1

      @@JustWasted3HoursHere The Atari 2600 doesn't have any built-in firmware/operating system at all, the only software it executes is on the game cartridges plugged in. I'm almost certain no commercial 2600 cartridge ever implemented garbage collection; even the BASIC Programming cartridge for it didn't allow dynamic strings so there would be no need, and the tiny amount of RAM made it impractical. Coincidentally I now have a working BASIC Programming cartridge and keyboard controller pair with overlays for the Atari 2600 so I hope to make a video about it soon-ish.

    • @jjeeeekk
      @jjeeeekk 4 ปีที่แล้ว

      Not only minutes, on a C64 using the whole BASIC memory it will take hours! The time increases in quadratic manner according to the count of non-empty strings.
      Try (add line numbers to use it as a program)
      C$=CHR(65):DIMI,A$(9600)
      FORI=0TO9600:A$(I)=C$:NEXT
      PRINT"COLLECTING..."
      TI$="000000":PRINTFRE(0)
      PRINTTI$
      To shorten the run-time the warp-mode of an emulator could be helpful. ;)

    • @jjeeeekk
      @jjeeeekk 4 ปีที่แล้ว +3

      @@8_Bit There are a lot snake oil tips around in magazines those days (even until today). I saw so many discussion which showed a huge misunderstanding on how useful and effective such tips are. However, if you are using strings into the hundreds you are helplessly delivered to the GC whatever you will do (even with all the things honorable Jim is telling us). In the end, the time consumption depends on the number of non-empty strings and increases quadratically.
      Anyone who wants a deterministic behavior for a serious application or game which handles large string arrays is urged to use an alternate implementation. Such a requirement led me to develope Super Garbage Collection back in 1985 (mentioned on www.c64-wiki.com/wiki/Garbage_Collection).

  • @peterlinddk
    @peterlinddk 3 ปีที่แล้ว

    Very interesting! There are still sooo many features and underlying “interesting” implementations of the Commodore Basic, that I am only slowly starting to understand, here 35+ years later. I think there could be a great video-series in simply going through the source code, and with examples show how various parts were implemented! I would love to watch something like that!

  • @GiammarcoZacheo
    @GiammarcoZacheo 4 ปีที่แล้ว +1

    Great job Robin! It's incredible how much one can still learn from good-old Basic these days.

    • @greendryerlint
      @greendryerlint 4 ปีที่แล้ว +3

      A tip of the hat to Bill Gates for PET BASIC, one of the best of the era, and one of the only with on-screen editing. A pity some of the subsequent MS products have been kind of a letdown.

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +1

      Yes, I'm still amazed how much there is to learn from these old machines, even just within BASIC.

    • @robsku1
      @robsku1 3 ปีที่แล้ว

      @@greendryerlint I recall the on-screen editing feature was still there in DOS - not in QBASIC but in the earlier GW-BASIC :) You're right about the other products though, that's why I left the MS world in 2002 (yes, kinda late, although I did try to leave earlier in 1997 with OS/2 WARP 4 but I couldn't run the software and games I *needed* so I went back for couple of years. OS/2 was technically far superior to Windows though).

  • @mechaform
    @mechaform 4 ปีที่แล้ว

    I had totally forgotten about playing this game back in HS until seeing this. Thanks for the memories!

  • @kupakai5
    @kupakai5 4 ปีที่แล้ว

    I used to play that Dungeon game so much in my middle school computer lab PET's. Now I have to set up a PET emulator to try this. I think I remember typing in that Shark! game and Bat! game from a book or a magazine to save to a disk and play. That is some collection you have! The explanation and debugging you did brings back all kinds of memories about programming Commodore machines. Thank you!

    • @greendryerlint
      @greendryerlint 4 ปีที่แล้ว

      Bat! was a lot more fun as I recall if you changed the gravity coefficient variable. I miss the way BASIC was so simple to comprehend and modify. Python captures a lot of the feel of those early days of programming.

  • @TheHighlander71
    @TheHighlander71 4 ปีที่แล้ว +2

    Wow Robin. I learned many things about Commodore Basic I'd never even thought of. I didn't realise there was such a thing as garbage collection in Basic. What I wondered though: after garbage collection is finished, would the first "HOR" characters in your example be reused when you reserve another string?
    Thanks for the link to Chuck's channel. Almost makes me want to get a PET again :)

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +1

      Definitely get a PET ;) Yes, the "HOR" would be overwritten by the next string used.

    • @TheHighlander71
      @TheHighlander71 4 ปีที่แล้ว

      @@8_Bit A looong time ago my uncle gave me one. I had it for a while and then gave it to a friend. Dumb.

  • @Sharklops
    @Sharklops 4 ปีที่แล้ว +10

    Rogue really should be called a "Dungeon-like"
    EDIT: I guess they both should be "BAM-likes"

  •  4 ปีที่แล้ว +1

    This PET is awesome! BRAND NEW!
    I respect this channel

  • @kobe3576
    @kobe3576 4 ปีที่แล้ว +1

    And yet, the Amulet of Yendor might easily be the rarest piece of hardware ever. As always, loving your content.

  • @MrAl67
    @MrAl67 4 ปีที่แล้ว

    I played it at school back in the day. What a blast!

  • @jbevren
    @jbevren 4 ปีที่แล้ว +1

    Happy to help, 8BST! :)

  • @TheStuffMade
    @TheStuffMade 4 ปีที่แล้ว +2

    Nice work on patching this old game making it compatible with other BASIC versions. Made me think, maybe I should get a PET, checking ebay $1000 - $3000, well perhaps not, I guess VICE will do for now. At least I have my old HP-150 with touch screen and dual floppy drives.

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +2

      PETs still sell locally for $300 or so sometimes, if you're lucky. But yeah, they're getting more expensive all the time.

  • @MrRobbyvent
    @MrRobbyvent 4 ปีที่แล้ว +1

    The first time I put my hands on a computer was at the school, on a Apple II . Then imagine how I was hooked when I saw the first ads of the VIC 20 ! It had colors, the pet-scii graphic characters on the keyboard, one million units sold! I knew little of computers but yet I was sure that it was possible to put that graphics into my basic programs, well somehow. With the young and fresh mind of the time I was already wondering of the things I could create. Maybe the games I saw only at the arcade halls. So much more than the professional looking Apple, and so cheaper too! I also thought that it was not possible and I had doubts about its real possibilities. So, just to make sure, in 1983 my first computer was another one: the mighty Commodore 64!!! And I was already launched over the skies.

  • @Woodenflutes
    @Woodenflutes 4 ปีที่แล้ว

    Thank you so much for fixing this bug! I remembered this game fondly from the 1970s/80s and tried several times to play it again. Though I might be misremembering things! Why did this strange "magical staircase" appear in every version I could find? Now I can play the original version again!

  • @greendryerlint
    @greendryerlint 4 ปีที่แล้ว +1

    I loved that game and most of the Cursor offerings. My school subscribed to them and were pretty liberal about allowing copies. (though I didn't usually tell them) I still have a 3032 PET and 8050 disk, and both work well, not bad for 40 year-old electronics. I remember modding Dungeon and adding sound, a secret key to double hit points for those days you wanted to cheat, or just didn't want to lose when the game stingily didn't raise your HP, and other mods. I think I might have added a 'hyperspace' button to it at one point. I never did fix the graphics issue as my machine was not susceptible to it. Two of my other old favorites from Cursor: Miner! and Ouranos! I might have to shell out some money for a mini-PET too, though I wish it was both a little cheaper and came with a keyboard that didn't make you long for the chiclet keys of the original PET. Good work on fixing this annoyance to BASIC 4.0 users and great explanation of why the bug exists.

  • @csbruce
    @csbruce 4 ปีที่แล้ว +8

    2:03 Modula-2… he might have bet on the wrong horse!
    5:52 Maybe the "Y" means "You".
    14:05 It's also why the strings from « 90 PG$="DUNGEON : NM$="15" » don't end up at the top of the heap.
    15:29 More specifically, BASIC 4.0 puts two bytes after the end of each string in the heap that point back to its string descriptor. This allows garbage collection to take O(n) time instead of O(n²) time. Both algorithms find the next-highest live string in the heap and move it to the highest available space. In BASIC 2.0, each search for the next-highest live string takes O(n) time, while it essentially takes O(1) time in BASIC 4.0 since it can just follow the pointers and gap lengths.
    22:16 One question is why both "DOG" and "CAT" have "c▞" as a pointer when A$ and B$ are separate variables that would be 7 bytes apart in memory. I'll assume that "▞" = 255 is a special value that indicates the string is unreferenced junk and gives the gap length in the low byte. But they shouldn't be unreferenced since A$ and B$ are both still live.
    Same in the game: most of the pointers point to the same descriptor, "⎼!" or "G!", despite the array elements being 3 bytes apart. Also, the game appears to POKE over some of these pointers, which which should make the garbage collection malfunction or crash if it's ever invoked.
    29:10 One problem with your method is that it will reduce the amount of RAM by 1024 every time you run the program. You should at least restore the memory on exit from the program. A STOP exit would still remove this RAM from use if the user goes on to load a different program.

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +7

      Aha, it's You, You, You. Now I have Blues Brothers stuck in my head.
      Yes, I also have questions about why those string pointers are the same. If I figure it out, I'd like to do an episode dedicated to garbage collection.
      Ah, good point about the RAM pointer moving down. It's true that STOPing, LOADing, and RUNing on a single boot are much more common on the PET. On the C64, especially in the game world, everybody's been trained to reset or power cycle between games. Do you have a suggestion about what the best way to deal with this is? Certainly setting the pointers back on exit is a good start.

    • @csbruce
      @csbruce 4 ปีที่แล้ว +3

      @@8_Bit: You can increase the top-of-RAM pointer by 4 pages when the user does a clean exit (7:54 "Want to play again?"). Not much you can do about a STOP exit before loading another program. On startup, you could normalize the PEEK() value to either 4096, 8192, 16384, or 32768 (divided by 256) before subtracting 1 KB, to handle the user (or yourself when debugging) STOPping the program and then rerunning it.

    • @recycledsteel3693
      @recycledsteel3693 4 ปีที่แล้ว

      @@8_Bit Could they be different numbers but rendered the same? like with the "DOG" "dog" hack but in reverse. Are some of the chrs the same at the high end maybe?

  • @quantass
    @quantass 4 ปีที่แล้ว +1

    I thoroughly enjoyed that!

  • @ShaneBro
    @ShaneBro 4 ปีที่แล้ว

    Wow, not a programmer, and never will be, but I do like how you go through and show how things are broken and then the fixes. Wish we were back in more simple times.

  • @oldofftime
    @oldofftime 4 ปีที่แล้ว +1

    You just got Chuck a new subscriber.

  • @necronom
    @necronom ปีที่แล้ว

    Well done doing this. I finally got round to playing it properly on my 4032.
    It still has a few other bugs. An @ sign (and other things) sometimes appears on the second line, one time I cleared the whole map of gold and enemies but it didn't end, and there is a gold bug mentioned in these comments that just increases the gold all the time. Still fun though.
    I added some sound effects to it to make it more interesting.

    • @necronom
      @necronom ปีที่แล้ว

      The @ is coming from line 970. It's the poke e+ax,v1 (48+32768,0). But I don't understand what's it's for, so I can't fix it. It seems to appear at the top left char on earlier PETs, then get overwritten by the "H" from HIT. I might just blank the line to get rid of it.
      The gold problem seems to work better by moving line 680 to the 1200 area when you actually get the gold.

  • @lion123
    @lion123 4 ปีที่แล้ว +2

    Notch has a great taste in TH-cam videos :D

  • @ShaunBebbington
    @ShaunBebbington 4 ปีที่แล้ว +2

    *PLEASE* could you review all of your Cursor tapes from issue one? Many thanks.

  • @Dorff_Meister
    @Dorff_Meister 3 ปีที่แล้ว

    Back in the day I was a big fan of Telengard. I fixed several bugs in the source code and even added a bit of additional functionality (neither of which was easy because it already used most of the memory). I wish I still had my modified code (along with the rest of my C64 discs) - I'd love to look at the changes all these years later.

  • @GreenTeaViewer
    @GreenTeaViewer 3 ปีที่แล้ว

    The amazing thing is that in 1979, the board game Dungeon! from TSR and the Dungeons and Dragons RPG which introduced the staple gameplay concepts, were themselves only 3-4 years old.

  • @williamgallop9425
    @williamgallop9425 ปีที่แล้ว

    In early 80's found listing of Othello writen for Pet. It worked also in C64.

  • @tonymason6686
    @tonymason6686 4 ปีที่แล้ว +1

    Does anyone else remember a PET game that was kind of like this, except you were trying to get to a Sword & Jewels in the center of a maze...once you got them TONS of monsters would jump out at you. Was it called Sword Quest or something like that..???

    • @pepstein
      @pepstein 3 ปีที่แล้ว +1

      Yes! It was indeed called Swordquest, and I played it quite a bit. This video brought back memories because it has the same fog of war effect. You could shoot magic arrows that would expose parts of the dungeon far away from you. It was written by P. O'Donovan, copyright 1979 Fantasy Games Software P.O. Box 1683 Madison, Wisconsin 53701. I managed to read it off an old cassette tape a decade or so ago, producing a .T64 tape image that runs on VICE! If you look at my channel you'll see some videos of PET software, but for some reason I didn't make one for Swordquest.

    • @tonymason6686
      @tonymason6686 3 ปีที่แล้ว

      @@pepstein Any idea where I might find a dump of the game? I'd love to play it again - it played a big part of 7th grade :-)

    • @pepstein
      @pepstein 3 ปีที่แล้ว

      @@tonymason6686 I uploaded a short video: th-cam.com/video/9CGrQSbZLKg/w-d-xo.html. I can't find the game anywhere online.

  • @ChristiRich
    @ChristiRich 2 ปีที่แล้ว

    What a fantastic video tutorial! Thanks.

  • @FeelingShred
    @FeelingShred 4 ปีที่แล้ว

    10:10 Dungeon layout revealed when the player dies? Pretty neat little bonus :)
    And Shift to move through walls also an interesting concept. Really cool to see how the simplicity of this genre of game seemed to stimulate the developers' creativity for what could be done more.

  • @shelby3822
    @shelby3822 4 ปีที่แล้ว +2

    Don't feel bad...I have some house projects that have gone on longer

  • @LambdaHalbe
    @LambdaHalbe 3 ปีที่แล้ว

    Thank you. Runs on my 1979 CBM 3032. Okay it's Basic 2...

  • @0fend0
    @0fend0 4 ปีที่แล้ว

    I loved everything about this video, thanks as always!

  • @peterpro9284
    @peterpro9284 4 ปีที่แล้ว +1

    loved sword of fargol - you could break into it and easily figure out the varbiable he used - like str for strength or h for health or whatever it was - but it allowed us to really play it far longer than we could - the game could be quite unforgiving. By breaking into the game and changing variables it helped me understand programming more - i was only 9 years old at the time.

    • @robsku1
      @robsku1 3 ปีที่แล้ว +1

      Unfortunately I didn't have the luck of getting into computer programming when the 8-bit systems were all around, but my family bought a 286 PC (IBM PS/1 it was) with DOS (we upgraded the crappy version to MS-DOS 5.0 which had two BASIC interpreters, the older GW-BASIC and newer QBASIC... I remember digging around NIBBLES.BAS and making the worm grow to totally insane lengths :D Me and my little sisters had some giggle filled fun playing it in 2 player mode :D

  • @TheFanOrTheMask
    @TheFanOrTheMask 4 ปีที่แล้ว +2

    love these vids, great work

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว

      thanks!

  • @LegendBegins
    @LegendBegins 3 ปีที่แล้ว

    Very cool video. I'm glad I came across this channel!

  • @madmodders
    @madmodders 4 ปีที่แล้ว +1

    What about Temple of Apshai? It was released in 1979 for TRS-80 and PET, by Automated Simulations, later renamed to Epyx. :)

  • @r000tbeer
    @r000tbeer 4 ปีที่แล้ว +2

    I still to this day fire up the C64 emu for Sword of Fargoal.

  • @cbmeeks
    @cbmeeks 4 ปีที่แล้ว +1

    I really enjoy your coding videos. I think you and Shallan are some of the best C64 coders on TH-cam (and Twitch for Shallan). You two should pair up and code some stuff. :-)

  • @tripperdonnie
    @tripperdonnie 3 ปีที่แล้ว

    I loved this game, I thought it was the best thing in the world at the time. We had one chicklet style pet computer with tape drive built in, then the style you are using. Shortly after i got a VIC 20 that I still have

  • @brucetungsten5714
    @brucetungsten5714 4 ปีที่แล้ว

    Awesome video! Love the clunky keyboard.

  • @patriklindahl4991
    @patriklindahl4991 4 ปีที่แล้ว

    I love the catchy tune at the end!!

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +1

      Thanks, the whole album can be heard here: bedfordlevelexperiment.bandcamp.com/album/place-without-a-computer

    • @robsku1
      @robsku1 3 ปีที่แล้ว

      @@8_Bit Thank you SO much =)

  • @rockosgaminglogic
    @rockosgaminglogic 3 ปีที่แล้ว

    It's just composite-out but internal. You can use a unity-gain opamp to copy the signal without affecting the original monitor, then use a USB device that takes composite for video recording to PC.

  • @standupmackan
    @standupmackan 4 ปีที่แล้ว

    This was REALLY cool! Thanks!

  • @ronaldrico3208
    @ronaldrico3208 2 ปีที่แล้ว

    I'm sure you'd love Telengard for the C64. By Avalon Hill in 1983. Amazing game written mostly in C64 Basic.

  • @chaoslab
    @chaoslab 4 ปีที่แล้ว

    Awesome work Robin. :-)

  • @darthbukowski6894
    @darthbukowski6894 4 ปีที่แล้ว

    I keep hoping I’m going to find a PET cheap in one of the thrift stores I shop at from time to time. Oh, I also ordered the Vic 20 PSU I needed today. The PSU is a custom build.

  • @mikegarland4500
    @mikegarland4500 ปีที่แล้ว

    If you had typed in the second A$ definition as "turtle" I was going to howl with laughter. As it was, my "turtle" and your "horse" elicited only a wry chuckle.
    Great episode!!

  • @neilloughran4437
    @neilloughran4437 4 ปีที่แล้ว +1

    This is great, I recall being in the computer lab around 1982 and playing PET space invaders and Nightmare Park. I thought the games on the TRS80 were better though... loved Star Trek and also there was some galaxia like game for the TRS80 that I've never been able to find. The comp lab was full of people just wanting to play that game. :D

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +1

      I've got a TRS-80 Model III here but not really any software for it. That PET Space Invaders was amazing for the time. I want to know who programmed it; I have a theory it was one of the HAL Laboratory guys.

    • @neilloughran4437
      @neilloughran4437 4 ปีที่แล้ว +1

      @@8_Bit That would make a show unto itself! Great stuff.... all machine code right? I recall Nightmare park was in BASIC... I remember loading the tape into my C64 and changing some poke/peek addresses and I think I got it to work... long time ago! :D

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว +2

      @@neilloughran4437 Yes, when all the other PET games we had were BASIC, that all machine language Space Invaders stood out above all the others. It even had the attract mode with an invader coming onto the screen to change the PLAV typo to PLAY. It's suspiciously good. And yeah, Nightmare Park was BASIC and ahead of its time in some ways too.

    • @neilloughran4437
      @neilloughran4437 4 ปีที่แล้ว +1

      @@8_Bit Hopefully you can find out who programmed it! Maybe some easter egg in the memory even! I used to list the contents of memory maps in my C64 and find all kinds of things back in the day... swear words in Monty on the Run for example (used to stop people entering rude words in the high score table!).

    • @neilloughran4437
      @neilloughran4437 4 ปีที่แล้ว

      @@8_Bit just checked a PRG file for the ASCII... no easter egg as such...
      only readable chars I see are amongst this lot....
       1 GAME OVERˇÌLõ   OêÔ∞⁄ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄġÿ¿0ÔhêãÖ}reUPJPUbmxÇàzhVD2((6@HMP  X,Y)X),Y,X,YPLAVùùùùùùùùùSPACE INVADERS
      ˇ
      ....... ?MYSTERY
      ....... 30 POINTS
      ....... 20 POINTS
      ....... 10 POINTS
      TOP 1500 POINTS FOR EXTRA BASE.ˇùùùùùùùùùSPACE INVADERS
      KEYBOARD CCOMMANDSùùùùùùùùùùùùùùù4í-MOVE LEFT
      6í-MOVE RIGHT
      Aí-FIRE BEAMˇ*** ***È---flJKJKÈÚflbôbÏb˚ˇ„ˇ˘..... ?MYSTERY

  • @m.p.jallan2172
    @m.p.jallan2172 4 ปีที่แล้ว

    I was surprised when you showed the Sinclair/timex z81 machine, did you program anything on that ? in basic perhaps. Sinclair48k was my first machine and due to the amount of great cheep games available (UK) i only played games on it. So many great z80 based micros, i would love a Sharp mz80k or even a TRS80. Thanks.

  • @jimmywright5029
    @jimmywright5029 4 ปีที่แล้ว +2

    He kind of sounds like Emo Phillips.

  • @n.h.s.a.d.m.
    @n.h.s.a.d.m. 4 ปีที่แล้ว

    Very informative! I just found my old VIC20 in storage and pulled it out, got it working with some difficulty. Was there ever a version of Dungeon for VIC20 BASIC, or any of the other Rogue-likes? And more importantly, how does one put the programs onto a cassette? I remember in high school seeing an ad in a computer magazine for Rogue: power in my hand, people at my feet...ROGUE! lol

    • @8_Bit
      @8_Bit  4 ปีที่แล้ว

      I don't think this Dungeon got ported to the VIC-20. Sword of Fargoal is probably the best Rogue-like for the VIC-20; I'm sure it requires a RAM expander though, probably 8 or 16K extra. There are PC tools for converting Commodore .prg files into .wav files which could then be saved on cassette, but that's a big pain. You're better off to buy a uIEC or SD2IEC type device so you can load directly off SD cards.

    • @n.h.s.a.d.m.
      @n.h.s.a.d.m. 4 ปีที่แล้ว +1

      @@8_Bit Thanks! I was looking at SD2IEC and likely will get one along with a Penultimate cartridge for the RAM expander.

    • @robsku1
      @robsku1 3 ปีที่แล้ว

      Back in early 2000's I transferred some programs by converting the TAP (Tape image files for Commodore computers) to WAV file and playing it with Goldwave or Winamp on my PC which was hooked to stereos where I had placed an empty cassette and pressed record before starting to play it. Wasn't that painful to me, I got all of them working on the first try. Just turn the volume on the stereo way down; I turned it right down to complete silence, it only affects the volume output from the speakers, not the recording volume.
      I might have been lucky getting them all done so easy.

  • @dougjohnson4266
    @dougjohnson4266 4 ปีที่แล้ว

    Nice work sir!.

  • @ropersonline
    @ropersonline 4 ปีที่แล้ว

    16:59: The location vs page thing could have been explained better, because many of the rest of us may not know that the C64 had 256 pages that were 256 bytes each. I had to look that up myself. It wasn't immediately obvious that this was about changing the pointer stored at location 648 (= page 2, address 136 = 2*256 + 136 = $0288 in hex) from saying page 4 (= location 1024 = 4*256 = $0400 in hex) to saying page 60 (= location 15,360 = 60*256 = $3C00 in hex). I hope I got that right.

    • @robsku1
      @robsku1 3 ปีที่แล้ว +1

      Yeah, the pointer, as I understand it is basically just a 16-bit integer, but then Commodore's are 8-bit machines.... You can use 16-bit values as address in BASIC with PEEK and POKE commands to address 64K of continuous RAM just as well, but the 16-bit address space can also be described to be 256 pages of 256 bytes. I don't know what if any difference does it make when dealing with calculating addresses in a program written in BASIC though as it's math capabilities are not limited to 8-bit registers.

  • @Longuncattr
    @Longuncattr 4 ปีที่แล้ว

    Fascinating stuff!

  • @BenInSeattle
    @BenInSeattle 4 ปีที่แล้ว

    What a fabulous mystery and satisfying solution! I've got a few questions that maybe you'll address in your episode on Commodore BASIC Garbage Collection.
    *①* Did the pointers at the end of the string in BASIC 4.0 also signal the end of the string as a NULL character would in C? Or, was every byte a valid character in a BASIC string and so the length still had to be kept somewhere?
    *②* What did BASIC store on the heap? Only variable length data types like strings and arrays?
    *③* I loved how you demonstrated the heap by moving video memory. That was brilliant and made understanding simple. Is it possible to do the same for the stack on a PET?
    *④* Does your fixed version, DUNGEON40, work with BASIC 2.0? I presume it does, but the video only shows Chuck testing BASIC 4.0.
    And, finally, *⑤* Did you ever beat DUNGEON?
    Thanks!

    • @robsku1
      @robsku1 3 ปีที่แล้ว

      I can answer some of these...
      1) From what I understood of the video, the string length is stored in string descriptor. According to the video this is where the pointer in the end points to.
      3) I'd have to check the video again and am too lazy to do that, but didn't he actually later show the same thing on PET?
      4) Someone else also asked this and he replied that yes, t does work with both versions.
      The second question I have no idea about - all my answers were based on the content of this very video :D