8-Bit Show And Tell

8-Bit Show And Tell

Hi, it's Robin. I'm a programmer, collector, and all-round enthusiast of vintage computers and video games. My videos focus on what I find interesting in the realm of 8-bit (and sometimes 4 or 16-bit) computing and gaming, whether it's about easter eggs, programming, bugs, history, game development, or whatever else. I usually go very in-depth with topics because I want to understand the how and why. There's still so much to learn and explore in these old systems.

Please note: you're of course welcome to email me, but the longer and less focused your email is, the less likely I am to respond. There's many of you, but just one of me, so requests to debug your code, or teach you assembly, or to phone you because "you just have some questions" all take a lot of time and energy that should be put into making more videos, and will probably not be answered. Sorry!

Пікірлер

  • @mjs28s
    @mjs28s46 минут бұрын

    Love making games on it in basic then using the C-128s basic compiler. Not pure machine language speed, but for most games it worked out pretty great! Of course the sprites were also the shiz for games.

  • @lovemadeinjapan
    @lovemadeinjapan7 сағат бұрын

    I found out the PowerCartridge solves the LOAD mess. It just allows DRUN/DLOAD "Name" and you can use wildcards. Also you get DIR that is non destructive, unlike LOAD"$",8 and LIST

  • @8_Bit
    @8_Bit4 сағат бұрын

    Yes, almost all utility cartridges (Epyx Fast Load, Super Snapshot, Action Replay, etc.) provide a non-destructive disk directory command, and often change the default device from 1 (cassette) to 8 (disk) which removes most of the reason for adding comma 8 after a load command. File wildcards already work fine on disk, it's cassette where they aren't supported, and Power Cartridge doesn't change that as far as I'm aware.

  • @DarkMoe
    @DarkMoe14 сағат бұрын

    I saw that Basil Fawlty reference. Also, Betsy Ross was known to me because she appears in Day of the Tentacle, in a very famous puzzle that involves changing the US flag design to be used as a disguise 400 years in the future

  • @fokkenhotz
    @fokkenhotzКүн бұрын

    hi I'm a 53 year old widow but I had one of these as a kid and at school. I used "Bankstreet Writer" and wrote in a different but cooperative code everytime without compiling so like ,, how what was I doing ? and how did I used to colorize the 1st my instructor had seen of color font + could make intergeres flow random non consecutive and now did I used to bust my own 16bit password so I could get my homework out? = my goal. knowing 36 ways to wipe a corrupted drives reinstall win 7- 10. + I had to learn how to undo the hood ; move the cmos pin over to reset; and hold the power button down with the battery out and pc plugged in to drain the condenser to remove a malicious power on password somehow remotely installed and took johns bitcoins. it doesn't matter because u can't do your own private in California but I'd like to not be hacked , can I use c64 for sercurity?

  • @mike_pena
    @mike_penaКүн бұрын

    Two years later, I'm still a lamer!

  • @frankmeyer9984
    @frankmeyer9984Күн бұрын

    You forgot the first Laptop, Epson HX-20 Portable Computer (released 1981, price I don't remember at the moment). Officially it could have been upgraded to 32kB RAM; but I own two special computers that were modified for the German Army, with 64kB RAM installed! But only 32kB usable at the same time, you needed to switch the memory banks with a special list of steps 😊

  • @cairsahrstjoseph996
    @cairsahrstjoseph996Күн бұрын

    Not sure how it would slow things down, but with a little adjustment to the character set, you might design some mean looking little faces for the lowest or leading block of each column, and they look meaner as they get closer. Also instead of "Game Over" I would suggest "Thou Art Doomed" or something in keeping with the theme.

  • @hai.1820
    @hai.1820Күн бұрын

    Is that chuck norries in BL II ? 😂

  • @misterdressler9345
    @misterdressler93452 күн бұрын

    Exept you're 40 years late

  • @8_Bit
    @8_Bit2 күн бұрын

    Late for what?

  • @keiichicom7891
    @keiichicom78913 күн бұрын

    I have been using chatgpt as a coding assistant for a long time now and what I found it is the same thing, it not only does stuff wrong it sometimes claims bugs are fixed but they are not. You end up having to fix all the bugs in it defeating the purpose.

  • @TheXJ12
    @TheXJ123 күн бұрын

    12:35 "R is the base register" but I don't see any use of it. Even more, I removed both occurrences of it (on Vice emulator) and the "Balloons" program seems to work just the same !

  • @8_Bit
    @8_Bit3 күн бұрын

    Looks like you're right; that must have been leftover code from when this example was being developed and I didn't notice it wasn't being used. Good catch!

  • @BubblesSmurf-vk9uj
    @BubblesSmurf-vk9uj3 күн бұрын

    I still own my Commodore 64 64c,128d, and 128. 1581 3.5inch disk drives, 1571,1541 5.25", all programs since 1979. The 1200 baud modem, printers etc. Never found support since 1990

  • @pjcnet
    @pjcnet4 күн бұрын

    I'm amazed it's that fast from an interpreter, I expected it to compile the code first. He should make a compiler too, although not sure if it could be that much faster. If only this was around back in the day.

  • @brianwild4640
    @brianwild46404 күн бұрын

    Hey Robin I realise you are not going to fix the entire code but you changed score variable then the next chapter you did not and said it was ok because you ran that chapter but the score variable was after an if then statement lol. Love the videos great work

  • @darkobelisk4076
    @darkobelisk40764 күн бұрын

    I find the official user guide/manual and the reference guide are guilty of the same thing. Using this "dumbed down" language that isn't helpful because I'd rather it tell me the proper term along with an explanation, then suddenly it launches into unexplained code. It's definitely helpful going through it though but I need other books to actually make any sense of it.

  • @Huppat
    @Huppat5 күн бұрын

    you're using a compiler. This is not really programming in assembler

  • @8_Bit
    @8_Bit5 күн бұрын

    I don't use any compilers in this video. There are four versions of "hello world" in this video, written in: interpreted BASIC, Turbo Macro Pro assembler, SuperMon 64 machine language monitor, and written in machine code bytes with a BASIC loader.

  • @ralphm786
    @ralphm7865 күн бұрын

    Awesome series of videos, Robin! I love Le Mans as it's the only racing game I know of that uses the paddles, which I think are sadly underutilised. If you ever feel like coding another game for the C64, please consider Sega's Turbo with paddle support. John Champeau of Champ Games did an amazing version for the Atari 2600 & I would love to see this on the C64. Cheers

  • @dh2032
    @dh20325 күн бұрын

    the 16K, was the address able memory space, ram rom, and else a addressable, rateable or not, even to, pc, mac, the maximum addressable memory, upper top limit, of address able space even on memory installed,

  • @cooltaylor1015
    @cooltaylor10155 күн бұрын

    I'd love to play a game like that on Atari 2600. Maybe something based on Centipede. But with no centipedes. Just more and more mushrooms, descending upon you.

  • @Hounddoggy33
    @Hounddoggy335 күн бұрын

    This game was so fun, Robin! I almost beat it on my first try :) Wish we had this in Compute's Gazette back in the day!

  • @Hounddoggy33
    @Hounddoggy335 күн бұрын

    I was thinking about buying two of those Hyperkin Atari joysticks. Are they as good as the original CX40's? Cheers from Ottawa!

  • @8_Bit
    @8_Bit5 күн бұрын

    I really like them, yeah. They're a lot like CX40s but a bit more comfortable, have a longer cord (almost too long), and seem to be a bit better constructed. So yeah, I recommend them especially if the price is still reasonable like when I bought mine a few years ago.

  • @db21362
    @db213625 күн бұрын

    Reminds me of "back in the day" when I hacked up "quick print" routines from the original basic ML routines, though this is obviously a full-features product rather than hacking. Even that made a massive improvement (mostly as I had no error checking at all and different calls for integer and string). Yet another opportunity to be famous wasted (lol). Well done to Aleski and thankyou for sharing this with us. I'll have to check it out.

  • @petersoumanis5494
    @petersoumanis54946 күн бұрын

    So I'm assuming this can't run on SuperCPU since this is a different kernel and SuperCPU has its own ?

  • @8_Bit
    @8_Bit5 күн бұрын

    I haven't tested it on my real SuperCPU but it works fine on the VICE SuperCPU emulator. Hare Basic just patches various BASIC/C64 vectors as far as I know, so it's compatible with SuperCPU and probably other well-behaved peripherals.

  • @saganandroid4175
    @saganandroid41756 күн бұрын

    11:02 Line 40. Wouldn't printing to column 40 also invoke that horrible C64 bug where the editor reacts to a 40th column print by converting the line to an 80 column logical line, thus forcing the cursor down one too many lines. And so, gaps between lines. There ought to be a way to toggle that nannying off during program execution. It's only needed for editing prior to starting the interpreter. Did they fix that in the C128 and Mega65?

  • @8_Bit
    @8_Bit5 күн бұрын

    40 columns would otherwise be fine as long as the print in the 40th column has a semicolon after it. The next print would continue on the next physical line, and there wouldn't be any double-spacing. The only problem would be the double-line scroll as it scrolls by logical lines, not physical lines. I think it's kept active during program execution as INPUT also uses the editor's logical lines to allow an input up to 80 columns. No idea if they changed that behaviour on the 128 and Mega65, I'd have to research that.

  • @saganandroid4175
    @saganandroid41754 күн бұрын

    There must be a poke or three to disable that. There is a kludge using C='s active control codes where you get to print on the 39th column, use the back(left) cursor code, then an insert code to push the last char to occupy the 40th column. Finally you print in the 39th column again to fill the gap made by in insert.

  • @lcmoura
    @lcmoura6 күн бұрын

    Hello, is there any emulator in Windows or Linux for people that don't have the Commodore hardware?

  • @8_Bit
    @8_Bit5 күн бұрын

    Yes, look up VICE Emulator, it's very good.

  • @przemekbundy
    @przemekbundy6 күн бұрын

    Hello. Your game is cool. "descending doom". this game develops decisiveness in me. you have to decide. and choose. what to shoot and what to leave for later. the game has one bug. when I break the penultimate block at the top. I will choose left. or right. and right back to kill. the block clumps together. and the game does not detect the end of the game. I can't describe this error any other way. it's happening too fast... Regards..

  • @8_Bit
    @8_Bit5 күн бұрын

    Thanks. That's interesting about the bug, I haven't seen anything like that happen. So when this bug happens, the screen is completely empty of blocks and yet the game doesn't end? It sometimes takes a few seconds to detect end of game, but you're saying it continues to run indefinitely? Or are there blocks or bullets stuck on the screen that can't be shot? If you could help me understand so I can try to replicate this.

  • @przemekbundy
    @przemekbundy5 күн бұрын

    @@8_Bit on the next error. I'll wait longer. and I'll let you know.

  • @przemekbundy
    @przemekbundy5 күн бұрын

    I had to play it a few times. I managed to record a video. Regards... kzread.info/dash/bejne/fGaeo5mBZLzbZtY.html

  • @jabuci
    @jabuci6 күн бұрын

    Can you also do it with a C program compiled with cc65?

  • @Brian-vs9sd
    @Brian-vs9sd6 күн бұрын

    Hi Robin. Thanks for the video. Have you tried Vision Basic yet?

  • @8_Bit
    @8_Bit5 күн бұрын

    I haven't. I did sort-of consider buying it when it was on sale a while ago but the high cost of shipping to Canada put me off again. I think I read a newer version is coming out in a while, maybe I'll look at it then. Hare Basic appealed to me because 1) it's written by someone I've respected for many years 2) it's free 3) it's light-weight 4) it's very effective 5) it was really easy to learn 6) it co-exists with CBM BASIC really nicely 7) it works on VIC-20 and C64 8) it has no extra requirements (beyond extra RAM on VIC-20 which I already have)

  • @Brian-vs9sd
    @Brian-vs9sd5 күн бұрын

    @@8_Bit Great points. I decided to bite the bullet and yes the shipping to Australia was crazy. Once again thanks for the great video.

  • @giuseppe74921
    @giuseppe749216 күн бұрын

    Super interesting video to watch, as always. I would have loved if C=ommodore had optimized C128 basic a bit, with true fast integers variables and other possible small things

  • @8_Bit
    @8_Bit5 күн бұрын

    Yeah, they really focused on adding loads of features to C128 BASIC, but didn't seem to look at optimization at all. Except of course many of the new commands did speed things up by eliminating many POKEs in certain programs. But yes, true integers would have been great.

  • @up2tech
    @up2tech7 күн бұрын

    Sorry the website is in DK = Denmark. I suspect the guy is Danish :)

  • @robertgaines-tulsa
    @robertgaines-tulsa7 күн бұрын

    It makes me wonder if there is an equivalent for Color Basic. The CoCo seems to get left in the dust. I get that the C64 is just far superior to the CoCo, but it's what I grew up with. Specifically, the CoCo2. It wasn't even the CoCo3.

  • @8_Bit
    @8_Bit7 күн бұрын

    My friend Ken on the channel Canadian Retro Things is very knowledgeable about the CoCo, you might want to check with him to see if he knows of anything similar.

  • @Commodore128Mode3
    @Commodore128Mode37 күн бұрын

    "Descending Doom"! That would be a fantastic title for a movie! Another great episode Robin! You have a fantastic way of making going through code line-by-line interesting. Your game in a way reminds me very much of the very popular "Astrosmash!" game for Intellivision in the 1980s! I must admit, Descending Doom looks like fun! The mark of a good game is that it is fun in spite of not having fancy graphics. There are too many junk games in this world with awesome graphics. Thanks Robin!

  • @battlemode
    @battlemode8 күн бұрын

    Bit of an offtopic comment I'm afraid but how on earth have you kept your C64 so clean and neat? Mine is all yellowed with age! It still functions though, as do both of my original ZX Spectrum computers I still have from when I was a kid in the 1980s. Wonderfully durable machines, despite their cheap production costs back then!

  • @8_Bit
    @8_Bit7 күн бұрын

    Besides cleaning it occasionally, I haven't done anything special with it. Might mostly be luck of the draw; the yellowing of the plastic apparently depends quite a bit on the mix of chemicals used and this 64 case must have been made on a day when they had the mix perfect.

  • @battlemode
    @battlemode7 күн бұрын

    Ah gotcha! Thanks for the info, and great video on Hare Basic too, very interesting

  • @theyamo7219
    @theyamo72198 күн бұрын

    To be honest, I would have been all over a game like this back in the day for my old TRS-80

  • @BG101UK
    @BG101UK8 күн бұрын

    21:40 I guess Line 77 should read "SCROLL UP (VIC 20)" ☺

  • @8_Bit
    @8_Bit8 күн бұрын

    I suspect you're right!

  • @AleksiEeben
    @AleksiEeben7 күн бұрын

    After 30 years of using real text editors, it's almost impossible to remember pressing return on every line when copying lines in the C-64 screen editor :D

  • @bluerizlagirl
    @bluerizlagirl8 күн бұрын

    Wow! That's a bit of a coincidence! I started writing a simplified (only 16-bit integer maths and limited string handling) BASIC compiler on the BBC Micro, with a syntax intentionally compatible enough to allow code to be entered in the existing BASIC editor and run in its interpreter. It compiled to an intermediate code for a dedicated virtual machine designed "in parallel" with the language; for instance, FOR and NEXT had their own single opcodes in the VM. Long variable names were supported, too; as, once the symbol table has been built up, variable names only need to be searched for at compile time, as reading a variable's value gets translated to a fixed-location memory read based on wherever the variable actually is stored. The VM was basically stack-based, but with an optimisation to save a stack push and pull when a value was specified as a right-side operand. Each instruction could potentially exist in three addressing modes: Stack (ADD on its own adds the top two numbers on the stack and leaves the total on top of the stack), Immediate (USE #&0123 places &0123 on top of the stack) or Memory (SUB &0404 subtracts the contents of address &0404 from the number on top of the stack and leaves the difference where it was). USE #&0004 places &0004 on top of the stack, USE &0424 places the contents of address &0424 on top of the stack, GET takes an operand or the value on top of the stack and places the contents of that location on top of the stack, PUT takes a value as an immediate operand, memory address or from the stack; an address from the stack; and stores the value there. PAF does the same but the other way around, Address First, for situations where the operands naturally fall that way round. It needs some more instructions adding to the VM, and I need to do more work on the instruction parser, but I think I might pick it up again now there's obviously a bit of competition in town!

  • @TheXJ12
    @TheXJ123 күн бұрын

    Forth ? HP RPL ?

  • @KrzysztofCygan
    @KrzysztofCygan8 күн бұрын

    Would 10 PRINT run faster in Hare Basic?

  • @8_Bit
    @8_Bit8 күн бұрын

    Yes, it's actually super fast. I've had so many requests, I should have shown that!

  • @relaxxxrrr
    @relaxxxrrr8 күн бұрын

    Has anyone gotten this to work on the vic20 (VICE)? It seems to just lock up on the SYS40960.

  • @8_Bit
    @8_Bit8 күн бұрын

    You'll need to enable all RAM expansion on it, I think. The extra 3K and all four 8K banks for +35K RAM, 40K total.

  • @8_Bit
    @8_Bit8 күн бұрын

    If you mean TheVIC20 "maxi" then I think rename the file to something like HareBasic_35k.d64 and it should work. Check the manual for TheC64 / TheVIC20 if that doesn't work.

  • @relaxxxrrr
    @relaxxxrrr8 күн бұрын

    @@8_Bit Yes, thanks. 35K flag works. Put it in a cjm file,"X:vic,pal,fullheight,35k".

  • @warrenbullock3165
    @warrenbullock31658 күн бұрын

    Thank you, I’m creating a BASIC game and can use this. I really enjoy your videos.

  • @jakubkrcma
    @jakubkrcma8 күн бұрын

    👍

  • @sideburn
    @sideburn8 күн бұрын

    QR code Invaders

  • @PeterRichardsandYoureNot
    @PeterRichardsandYoureNot9 күн бұрын

    I would argue that this is not really BASIC. Reducing the number of instructions and limiting the available variables and getting rid of all array functionality altogether hardly qualifies as something that is a BASIC interpreter much less something to get excited about. I’m pretty sure the 6502 and 65c02 have reached their limits as far as basic interpreters go. I get that it’s fun to visit our childhood machines that we learned on, but the power of these devices is so restricted and so outdated it is relatively useless in the big scheme of things. Why try and squeeze every last drop of performance out of a basic interpreter running on a 50 year old chip with very limited memory dory access when I can get a raspberry pi for dirt cheap, 1000x the compute performance, run powerBASIC on it (if I’m really stuck in basic) or any number of other languages including web servers with pho etc, that would make life easier from start to finish because I’d be programming in the same hardware from day one to launch.

  • @Lion_McLionhead
    @Lion_McLionhead9 күн бұрын

    That might make a good VT100 game.

  • @barcoboy2
    @barcoboy29 күн бұрын

    Oh Robin, when will you admit that you are wrong and that the key really is called the "Run/Stop" key? 😂

  • @8_Bit
    @8_Bit9 күн бұрын

    I know, it literally says RUN STOP right on it! That must be its name! And I just used the "Exclamation Mark/One" key to emphasize that point! And now I will use the "Question Mark/Slash" key to ask a question: do you really say all the words and symbols on every key when you name them? :)

  • @barcoboy2
    @barcoboy29 күн бұрын

    @@8_Bit LOL!

  • @luispieri640
    @luispieri6409 күн бұрын

    Amazing Video Robin! We want more Hare Basic games/tutorials!

  • @hotkeymuc
    @hotkeymuc9 күн бұрын

    Scary: The KZread algorithm suggested as the next video: "Solution 42" - a 4k C64 demo which mentions the 2023 screen address thing! 🙀

  • @8_Bit
    @8_Bit9 күн бұрын

    I didn't know about Solution 42 until yesterday when a commenter mentioned it, so I watched it and left a comment on that video. That coincidence alone amazed me! Is that enough to make the algorithm suggest that video as related??

  • @markjreed
    @markjreed9 күн бұрын

    Tried my hand at a Hare version of 10PRINT: 5 A=USR(10):END 10 RND:Z=15:GO9:C=205+A:?CHR$(C);:GETA:IFA=0THEN10 Pretty fast.. though I think the author missed a trick by having AND and OR be only logical ops rather than dual-purpose logical/bitwise the way they are in Microsoft's BASICs.

  • @8_Bit
    @8_Bit9 күн бұрын

    Cool, seems I really should have tried this in the video. I thought making a whole (simple) game would be good enough! ;) I think AND/OR do bitwise fine. And the STOP key works fine in Hare Basic as well so there's no need to GETA, if the only purpose of it is to stop the program. 10 RND:A=AAND1:C=205+A:?CHR$(C);:GOTO10 seems to work fine, and is very fast. The only delay seems to be scrolling the screen :)

  • @markjreed
    @markjreed9 күн бұрын

    @@8_Bit Huh, I must have had something else wrong in my test; I was getting weird answers back from AND. Glad to be wrong!

  • @AleksiEeben
    @AleksiEeben7 күн бұрын

    Here's a fast "10print": 5 a=usr(10):end 10 b=257:c=19789:y=2023:fori=0to1step0:x=1064:z=1024:go4:x=1984:a=32:go3 11 forz=xtoystep2:rnd:a=aandb:a=c+a:go6:next:next ...unfortunately, bloated to two lines!

  • @markjreed
    @markjreed7 күн бұрын

    @@AleksiEeben Shame about the two lines, sure, but super speedy. And I'm always happy to see an infinite loop done with STEP 0 instead of GOTO! Thanks for chiming in!

  • @chrisdixon5241
    @chrisdixon52419 күн бұрын

    Very impressive work! "I think it's cool and that's all that matters" :) absolutely, your channel your rules but I have to say you're not the only one that thinks it's cool! So we're in the 16 bits of unused space... that explains a lot about the world today. I guess we only have until 2040 before we'll overwrite the sprite pointers and the universe will vanish? :D

  • @cybermodo
    @cybermodo9 күн бұрын

    Unusual and cool concept. I have regards for very simplified BASICs ( like subset of V2), exactly because it may run much faster (having , for example, static string handling and purely integer arithmetic). But even more important - it might be easier to create a very efficient compiler for such little BASIC! So, next very good step for this Hare project might be producing neat compiler, that gives small and even faster machine code! And so we can have everything, the best of all worlds! Why shouldn't we? :) One more thing I noticed - AMOS Basic for Amiga has some small and very fast internal BASIC interpreter called AMAL (animation language), executed from AMOS strings. Something like this existed in Oasis Lightning BASIC/Forth for C64, I think it was also called AMAL. This Hare thing reminds me on that concept, just using regular BASIC listing for the code.

  • @botoxedballsack7391
    @botoxedballsack73919 күн бұрын

    Unless i missed it, I wish you had shown ur game in regular basic to give us an idea how truly faster Hare Basic is. Maybe u already did an example and i forget (i am watching this video over several days).

  • @8_Bit
    @8_Bit9 күн бұрын

    The game won't run as-is in regular Commodore BASIC as it uses some Hare-only features like the GO5 call to scroll the screen (to move the "doom" downwards a step) almost instantly. To test just now, I wrote the equivalent of GO5 in C64 BASIC as optimally as I could, and it took 5.5 seconds. So just imagine a 5.5 second pause to update the screen every time the doom drops down. Also, the ship's shot would move slower too.