More 6510 Commodore 64 Programming With Turbo Macro Pro

Ғылым және технология

More 6510 programming on the C128 (in C64 mode) with Turbo Macro Pro. We'll write a slightly longer program that uses the raster counter at $D012, talk about Non-Maskable Interrupts and a few other things.
I still haven't mentioned the TMP commands are back arrow S to save your source code, and back arrow L to load it back.
Links:
The REU video I made: • Commodore 64 REU (RAM ...
Turbo Macro Pro download and documentation: turbo.style64.org/
DLH's awesome collection of Commodore books: www.bombjack.org/commodore/bo...
Commodore 64 Programmer's Reference Guide:
archive.org/details/c64-progr...
www.commodore.ca/manuals/c64_...
Follow me on Twitter: / bedfordlvlexp
Check out my podcast Growing Up '80s: thecouch.website/category/gu80s/

Пікірлер: 196

  • @mikegarland4500
    @mikegarland4500 Жыл бұрын

    Thanks for this wonderful channel, Robin. I'm 53 years old, so I was there during the time this was all "exciting and new". It still is, especially at my age where the next meal can seem like a new experience. Memory being as short as it is, some days. I never got a chance as a kid to learn machine language and/or programming in any assembly program. About the time I even had the inclination and the ability to tackle it, it was right about that time that games started coming out for the Commodore 64 and I was hooked (read: lost) forever to the programming side of things and switched to pretty much gaming 100%. I played every game I could get my hands on then and for the next 30+ years, depending on the time allowed. I kept up a lot of my "programming" skills for a time when DOS was a thing and kept writing my own batch files for various repetitive tasks, but it soon got the point where I didn't have time to be programming anything if I wanted to play all the games I wanted to play. I started off with BASIC, like most I imagine, but there really wasn't a whole lot I could do with it, really. I was very limited in what books I could obtain, and there just wasn't any real way for me to find out information on what books would have been good to get. I managed to get some magazines on occasion that had even more games written in BASIC, but like I said, gaming became my sole source of software entertainment. I was pretty much limited to the original C64 manual and I did get the Programmer's Reference Guide for it, but that was about it. Now, almost 40 years later, I'm drawn back to the days of programming on 8- & 16- bit systems, and to my surprise, there are so many people that are still really into it. I've found some awesome channels dedicated to this once-cutting edge pastime... but it's now mostly a hobby. But what a serious hobby it is. I couldn't believe how much of the BASIC language I remembered, and even how it worked. With just little nudges here and there, I was soon writing simple little programs again, but spending way too much time just fixing minor stuff. I found VICE many years ago, but it was recently in March or so of this year (2023) that I realized I had never really gotten very far in machine language programming. I had heard the term "assembler" many times, but I never really knew what they were. I started out in VICE's C64 emulator and soon discovered it had a built-in monitor. I just happened to notice the keybinding in the Options for the emulator, and I pressed Alt-h and I was immediately intrigued. This looked sci-fi, almost magical. I'm sitting here looking at mesmerizing walls of text and numbers and I just started messing around with them. I remembered what the Accumulator was, and the X & Y Registers, from reading about them in the early days, but I had no inkling of what I could with them, or how to do anything. I soon found an online repository for .pdfs of old C64 manuals, as well as a ton of other Commodore (and Apple, and the list goes on) computers. With kid-like glee I started skimming through the old C64 manual.. yeah, I had done most of the programs and exercises in there a few dozen times, but it wouldn't hurt to re-work a lot of those. I soon found myself modifying the BASIC programs easily; this stuff was really coming back fast.. Wonder what sort of machine language manuals there are available...? And holy cow, what a treasure trove the internet is for this sort of "old school" stuff. Wow. We've got the 8-Bit Guy and 8-Bit Show And Tell, and quite a few dedicated to this old hobby. I couldn't believe it. In just a few months, I have discovered what an I.D.E. for cross-platform programming and assembly language is. Specifically, I've been using 'CBM prg Studio' which is an absolute godsend for working with BASIC and ML for the C64. I still open up the base C64 emulator from time to time, but anything serious just begs to have an IDE for it. It just streamlines so much of the tediousness that gets you worn out with dealing with the old actual hardware, but like I said: I still have fond memories of it. Anyways, I've rambled quite long enough. But as you can probably tell, this hobby still fascinates me and I'm blown away by the interest that still exists for it. I wish I had had all these resources back in 1986. I might not have ever stopped doing it.

  • @bobbobbity463
    @bobbobbity4634 жыл бұрын

    I'm afraid we're gonna need you to go ahead and make a few more of these

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    I made a playlist of the 7 videos I've made that have a significant amount of assembly language programming in them (although some of them also have some BASIC or whatever else seemed relevant to the subject at the time): kzread.info/head/PLvW2ZMbxgP9z9Un4LXivII_D1Hh5gZ7r9 Hopefully you find them useful, I'll try to get my 2nd sprite programming video done soon. Thanks for watching!

  • @BillAnt

    @BillAnt

    10 ай бұрын

    I'm afraid I will have to go into early retirement because these ML tutorials are really fascinating and tickles my mind. heh

  • @heidirichter
    @heidirichter5 жыл бұрын

    I only found your youtube channel yesterday, and it's safe to say, I now have a new favourite KZread channel! I had no access to any information back when I was wanting to learn all this sort of stuff, and always wanted to learn all about this. Instead, I was limited to what I could work out how to do in basic, often finding what memory locations did by experimentation. Your explainations are nice and clear and easy to understand, your pacing is perfect for me, and I'm really enjoying your videos. Thank you.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Thanks Troy, I'm glad these videos are helpful. I was fortunate that the nearby corner (convenience?) store sold C64 magazines full of programming information like Ahoy! and Transactor, so I bought those instead of candy or hockey cards with my paper route earnings.

  • @JustWasted3HoursHere
    @JustWasted3HoursHere5 жыл бұрын

    I always tell people that KZread is 99% crap and 1% awesome. Congrats on being in the 1%!

  • @fnizzelwhoop

    @fnizzelwhoop

    4 жыл бұрын

    I scanned your comment for lies, but no lies were detected. 👍

  • @jasonmartin5488

    @jasonmartin5488

    4 жыл бұрын

    Completely agree on the 1%

  • @JustWasted3HoursHere

    @JustWasted3HoursHere

    4 жыл бұрын

    @@jasonmartin5488 Yeah, this guy seems genuinely nice. I'll bet he's a great guy to hang out with and talk geeky stuff with (or anything at all probably).

  • @chultay
    @chultay4 жыл бұрын

    I'm very happy to have found your channel. You really take the time to explain everything, and it's a pleasure to watch your videos.

  • @RacerX-
    @RacerX-5 жыл бұрын

    Another excellent episode. These are really enjoyable and very much educational, keep up the good work.

  • @davidlumbreras906
    @davidlumbreras9065 жыл бұрын

    Great video again!!! I really enjoy watching them. There is something magic in our beloved C64 and its assembler and you do a great job explaining how to do it. Please keep doing it!

  • @cgraefe
    @cgraefe Жыл бұрын

    Just rewatched this video once more and I wish I could "like" it again. Thanks a lot for the great content! I would love to see you do even more assembler videos.

  • @0toleranz
    @0toleranz5 жыл бұрын

    Great video, glad I subscribed. BTW I‘m perfectly fine with increase and decrease;). Brings back a lot memories. Keep up the good work, thanks.

  • @jcook793
    @jcook7935 жыл бұрын

    Wow, what a great video! Loved the technical content about how development was done "back in the day" before all these nice cross-assemblers and emulators, and that ending was an awesome surprise. Trippy and very well done!

  • @bepstein111
    @bepstein1115 жыл бұрын

    I think it's awesome you're doing this for your son. Way to set a great example!

  • @RobUttley
    @RobUttley4 жыл бұрын

    Great stuff. Please feel encouraged to do more of this, Robin! Cheers

  • @fuzzybad
    @fuzzybad5 жыл бұрын

    Thanks for this one, I will definitely try TMP+REU if I ever find time to get back into C64 programming. Wish I'd had this video 20 years ago! haha

  • @keithstone001
    @keithstone0013 жыл бұрын

    I've been trying to learn how to program for years and everytime I fail miserably hitting brick wall after brick wall. I can't afford College so I have to teach myself. Thanks to your videos and how well you explain concepts I am finnaly able to under stand things like vectors and rasters and decimal to hex how the cpu stores memory and so many other things. Plus your channel is the perfect companion to the new TheC64 I got. Thank you so much you are awesome.

  • @samhoward8909
    @samhoward89092 жыл бұрын

    This is awesome. I had a Commodore 64 once and loved it. These videos are very informative because you take it slow for beginners and explain your code. Thanks!

  • @samhoward8909

    @samhoward8909

    2 жыл бұрын

    Did you start out in programming or a diff career? I’m very into programming in the 80s before the internet where lots of times you had to mail the floppy disk to someone to get it compiled Like a batch program I think they called it. Are my statements valid? I was a toddler at this time so this is stuff I’ve heard from programmers I’ve talked to.

  • @thosewerethegames8269
    @thosewerethegames8269 Жыл бұрын

    Just found this course and I am loving it soo much! Thank you!

  • @belovedconsole
    @belovedconsole5 жыл бұрын

    17:57 I have no idea what you just said but it's beautiful. So happy to see folks working in this realm again, fun!

  • @jasonorriss
    @jasonorriss3 жыл бұрын

    This channel is brilliant! Back in the 90's when I was a teenager, I wanted to move on from BASIC into machine code, but had no assembler available. I did have a copy of Rodney Zaks Programming the 6502, and made attempts to assemble the programs in that book with pencil and paper and manually poke the decimal values into memory, but that was such a tedious, time consuming method (and prone to errors) that I gave up on it. Now with the internet and access to tools and tutorials like this, I can dive in.

  • @10MARC
    @10MARC5 жыл бұрын

    Another great video, Mr. Disembodied hand. I just got a new REU the other day, a nice 1764. It seems to work fine in my C128. I am planning a short series on GEOS now that I have a working 1581 and 1764. Now all I need is a mouse to complete my setup.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Thanks :) Cool about the REU, make sure you @ me on Twitter when you release that video, I'll RT!

  • @NeilRoy

    @NeilRoy

    5 жыл бұрын

    LMAO @ disembodied hand. XD

  • @IshmaelTurner

    @IshmaelTurner

    7 ай бұрын

    Canadian disembodied hand even. Is it a trend?

  • @rickperez8044
    @rickperez80445 жыл бұрын

    "Always turn off your computer when you're plugging things into it, especially on the expansion port." LOL. In my early days with the C64, I would plug in game cartridges while the PC was powered on. If I did it carefully and cleanly, the bus would not lock up. The point was to "archive" the game onto a diskette. I could then disassemble the code and bypass the "killswitch" code. It worked something like this: it would write to a location and read it back; if it read back what was written then it would shut itself down because that meant it was running in RAM, not ROM. Friends thought it was amazing that I could copy a cartridge. I don't know that it was amazing, but it sure was interesting to figure it out.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    One of my friends fried his C64 by doing exactly that :) But yeah, it's definitely possible. A safer way to do it is with a cartridge port expander that has on/off switches for each slot. I've got plans to show how to copy a cartridge in a future episode.

  • @rickperez8044

    @rickperez8044

    5 жыл бұрын

    Just lucky, I guess. Yes, a cartridge port expander would have been ideal, but they did not yet exist at the time. BTW, I have forgotten how the loader works. I think It loads programs to absolute address: no linking or relocating. I think that without a cartridge, usable RAM exists in that part of the memory map used by the cartridge. I could just look all this up, but I look forward to your video to refresh my memory. Thanks.

  • @GaryCameron780
    @GaryCameron780 Жыл бұрын

    I like your visual of how the stack works; pulling and pushing.

  • @superrobber8758
    @superrobber87585 жыл бұрын

    awesome stuff! you explain it very well, i've been looking at TMP before, wanting to learn some asm. Your video's got me started, I hope you continue with this series! thanx!

  • @superrobber8758

    @superrobber8758

    5 жыл бұрын

    question, how do you capture c64 video ?

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    It's a capture box called the HDML-Cloner Box Evolve.

  • @stupossibleify
    @stupossibleify5 жыл бұрын

    This is superb. I've always wanted to know how to use interrupts

  • @jasonmartin5488
    @jasonmartin54884 жыл бұрын

    I'm loving these, i'm following along as well. I don't have the REU or Snapshot cartridges but that doesn't matter I'm just loving typing in the examples and getting them to work. I did see a comment below saying you're part of the 1% and totally agree.

  • @fnizzelwhoop
    @fnizzelwhoop4 жыл бұрын

    I'm pretty certain that your channel is the best one on KZread.

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    I'm not certain it is, but I'm not going to argue :)

  • @TheKetsa
    @TheKetsa4 жыл бұрын

    Subbed. Nice episode, Let's hope there's a neverending stream.

  • @ChristopherNelson2k
    @ChristopherNelson2k5 жыл бұрын

    You have thoroughly INCreased my understanding of the raster! Thank you for the great teaching style. Although you got a little fancy pants with some clear carry action-which might be setting the stage for the next episode? Keep up the great content!

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Thanks! Yes, will definitely be using some more CLC and even CLD next episode. Hoping to finish recording it tonight, edit it on Sunday, and release on Monday. It's a long weekend here in Ontario so I should have enough free time :)

  • @86Carrera911
    @86Carrera9113 жыл бұрын

    Having a good time learning some 6510 assembly! I'm getting my own C64 this Saturday! I can't wait to try this stuff out on actual hardware, though it will be much more difficult to come by a REU. It also doesn't have any software, so I am going to need to find a way to get software from the Internet onto a disk. Need to buy some disks too, I guess! I loved the out-tro with Bedford Level Experiment! Keep it up!

  • @TheUtuber999

    @TheUtuber999

    Жыл бұрын

    Update?

  • @twobob
    @twobob10 ай бұрын

    its great that you managed to increment your sub count so much :)

  • @poorman-trending
    @poorman-trending4 жыл бұрын

    Thank you for these!

  • @MikeMohawk
    @MikeMohawk5 жыл бұрын

    I never saw the benefits of using RAM expanders on a C=64. Now decades later the coin drops :D That would have made my coding life so much easier back then! Nice vids; they are starting an itch ;)

  • @randomscribblings

    @randomscribblings

    4 жыл бұрын

    Heh... I find myself a little late to the club, too. Back-in-the-day I didn't have coin for a RAM expander. Now days, it's free in VICE and pretty darn cheap on ebay.

  • @mikegarland4500

    @mikegarland4500

    Жыл бұрын

    Same here. I had my C64 and a tape drive (Datasette?) and that was it. And the manual of course. It was years before I ever got the Programmer's Reference Guide, picked up a few magazines like Compute! as well as others. I spent most of my time just typing in BASIC programs to see what they would do. I spent almost as much time modifying others' programs to tailor them to my needs. Now I know just how much I missed with the expanders and Assemblers; I almost feel depressed.. but, now I find all this stuff readily available for cheap, and I can just load it all up in an emulator like VICE and fight with, uh, I mean work with it all over again!! I see nothing has changed, that I spend 5% of my time writing code and the other 115% of the time trying to figure out why it's not working. Good to know that hasn't gotten any easier. 😛

  • @BillAnt

    @BillAnt

    10 ай бұрын

    ​@@mikegarland4500 - I think the 2020's are the new golden age for retro computer programming with all the wonderful and inexpensive tools available, including the great and fun tutorials by Robin. It's good to be still alive 40 years after 1983. ;)

  • @mikafoxx2717

    @mikafoxx2717

    5 ай бұрын

    ​@@BillAnt I think these days people like going back to these computers as they were popular and later computers were too complex to completely understand, and they also had operating systems that made the machine essentially useless without it. Like DOS on an IBM clone. C64 and others give you easy to use basic, and easy poking into the bare metal with great documentation.

  • @truezulu
    @truezulu3 жыл бұрын

    Very cool that your son is watching. Kids are wealth, and having an interest in programming and software has definite future value. I envy you :)

  • @bwack
    @bwack5 жыл бұрын

    Thanks for showing the REU again. Swapping the programming ram with "runtime" ram made sense. You can basically write bigger programs then :) I loved the NMINV change trick. Great episode !!

  • @fogvarious2478

    @fogvarious2478

    5 жыл бұрын

    you can save mem with cross dev.. OR using a c128 pds. so instead of having a full assembler on the c64, you have a far smaller recieve program, that uses the left port on each machine to send / receive. the assembler is in 128 mode, 80 columns, at the time it was decent..I use a PC now though instead

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Yeah, cross-development is of course very powerful and I use it myself when working on bigger projects. But I love using this setup for smaller things, it's a lot of fun.

  • @bwack

    @bwack

    5 жыл бұрын

    @@fogvarious2478 Interesting!

  • @fogvarious2478

    @fogvarious2478

    5 жыл бұрын

    @@8_Bit i used to use the monitor in the AR6 cart more , then turbo assembler on 64.. which this assembler looks like. I think using the monitor explains things that the full blown asm hide e.g. when you are using 3 spaces in mem for sta $d020 vs one for rts etc.

  • @UberRuthlessOld

    @UberRuthlessOld

    5 жыл бұрын

    8-Bit Show And Tell you are right cross assemblers are more powerful but also killing user experience of working with real hardware

  • @UberRuthlessOld
    @UberRuthlessOld5 жыл бұрын

    Great tutorial, looking forward for next episodes. I would love to see how to use TMP and link it with graphics, music or sprites. Can you also share other practical tricks for working with TMP? I would like to go back to code on real machine instead of using cross-assemblers.

  • @ZXSpectrum128K
    @ZXSpectrum128K4 жыл бұрын

    Robin your videos are fantastic...

  • @belovedconsole
    @belovedconsole5 жыл бұрын

    2:15 I think the hand talking is absolutely brilliant, seriously, I think you found a neat new way of presenting, there.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Thanks John :) I was originally going to try setting up the computer with me on camera like Jim Butterfield's "Commodore 64 Training Tape" but it was suggested that maybe it would be better if I wasn't on screen so much ;) So this is what we ended up with.

  • @belovedconsole

    @belovedconsole

    5 жыл бұрын

    @@8_Bit well I don't know about that, but what you produced was really cool, I'm inspired

  • @RobLindman
    @RobLindman5 жыл бұрын

    this is cool, thanks for taking the time to explain it.

  • @gpisic
    @gpisic3 жыл бұрын

    An easy way to remeber the adress to start TMP is to use SYS1024*32 since it's in the middle of the C64 adress space and 1024 is one kB so multiplied by 32.

  • @WilcoGroothand
    @WilcoGroothand21 күн бұрын

    thx for this vid. Brings back memories.

  • @carnright
    @carnright3 жыл бұрын

    Loved this too! More please!

  • @mechaform
    @mechaform3 жыл бұрын

    I wish that I’d had access to this level of instruction back in the 80s. My only exposure to machine-language programs was via entering Compute!Gazette listings using MLX. The Programmer’s Reference Guide offered a tantalising glimpse into the true power of the C64 but I just couldn’t wrap my head around it as a young teen.

  • @christianknechtel8683
    @christianknechtel86835 жыл бұрын

    This video was great,AGAIN!Thanks for mentioning me.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Thanks for watching and commenting, it's a pleasure to read comments from you :)

  • @napomania
    @napomania4 жыл бұрын

    what you are doing is very cool. tha'ts a nice contribuite to let us understand how it works c64 hw. thank you

  • @BillAnt
    @BillAnt10 ай бұрын

    I believe that the RESTORE key needs a very short closed contact for the NMI to trigger, that's why it needs to be "hit" quickly. There's no resistor in there just like all the keys keys. The "jumpback" code is a really clever way to switch back to TMP, making development so much quicker and easier. :)

  • @anjinmiura6708
    @anjinmiura67083 жыл бұрын

    Curse you for adding the music and the video display to the end. I was letting that play while writing my feedback and guess what happened? It went to the next video while I was writing and I lost everything! :) OK, first of all, please do more of this assembly development. The fact that you narrate what you do and what you're thinking really goes a long way into bringing your process into my thinking. That's what I need most to get me started. The famous maze gen at the end is just one of the things I'd like to do in assembly language. Or really, one of the things I want to do is create assembly language functions to call from BASIC. And also, how do we save the compiled machine code out with a "basic header" so that I can run it with a SYS command? Too many things I want to do. I'd also like to create transition effects on the text screen where one screen of text slides over to another or maybe spirals in or out. I want to create the ultimate maze maker :) I know it's useless except for the purpose of learning things... which is not useless I think. Also, huge question and I wonder if you know the answer and how to make it stop? When text flows to the last character of the last line, the system scrolls TWO lines instead of one. How do we control that? This is my BASIC version of what I'm playing with so far: (see below) I'd like to do all manner of optimizations The code I created for block size is all about optimizations. Larger block sizes means more speed for printing. I had to resort to very fake random characters but would love to improve on that by generating blocks in assembly language functions as well. I don't expect anything in particular but if there is any aspect of this you'd like to focus on, whether it's BASIC code optimizations or things which could be done in assembly language or even how to attach the assembly language code to a basic program? Any/all of it would be welcome! 10 clear$=chr$(147):rem clear screen 20 home$=chr$(19):rem home cursor 30 bs=220:rem line or block length 40 bl=int(1000/bs):ll=bl 50 rm=1000-bl*bs:if rm>0 then ll=bl+1 60 dim cl$(14):rem color array 70 dim fk$(9):rem fake random array 80 dim page$(25):rem page array 90 print clear$; 100 poke 53280,0:poke 53281,0:rem black 110 data 5,28,159,156,30,158,129,149,150,151,152,153,154,155 120 data "NMMNNMMN","NNMNMMNN","NNNMNMMN" 130 data "MNNMMNNM","MMNMNNMM","MMMNMNNM" 140 data "NMNMMMNN","NMMMNMNN","MNNNMNMM" 150 for i=1 to 14:read a:cl$(i)=chr$(a):next i 160 for i=1 to 9:read fk$(i):next i 170 for l=1 to 1:l=l-1:rem endless loop 180 print home$; 190 a=rnd(1)*14+1:print cl$(a); 200 for lc=1 to ll:rem lines/blocks 210 poke 781,12:poke 782,19: poke 783,0:sys 65520:rem set cursor to middle 220 cd=ll-lc:vn$=str$(cd) 230 vn$=right$(vn$,len(vn$)-1) 240 if cd

  • @NeilRoy
    @NeilRoy5 жыл бұрын

    I used to LOVE LoadStar, it was my favourite disk magazine for the C64. Also loved Frogs and Flies on my Atari 2600 and the C64.

  • @TheHighlander71
    @TheHighlander715 жыл бұрын

    You explain this stuff very well. Back when I had my c64 and was learning assembly I struggled to find information about how the c64 hardware actually worked. Of course there was no internet back then. How did you manage to learn the ins and outs of the c64 hardware?

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    I don't remember how I found out about it, but I bought the C64 Programmer's Reference Guide as soon as I could scrape together the $25 or whatever it was. And the convenience store a block from my house brought in both Ahoy! magazine and Transactor magazine which had lots of technical articles (especially Transactor) and I bought them with my paper route money every month. And then when I got to university in 1991 I soon learned about comp.sys.cbm and other resources online. Pretty much kept learning all along :)

  • @TheHighlander71

    @TheHighlander71

    5 жыл бұрын

    @@8_Bit By the time things like 'comp.sys.cbm' meant anything I was well into PC's. I already knew assembly well enough, but getting to know what the hardware does is key in C64 programming, I think.

  • @soapyfrog
    @soapyfrog5 жыл бұрын

    Takes me back to on-device assembler dev, although in my case, ZX81, Dragon 32, CPC464... Always preferred the 6809 to the 6502 or even the Z80. Great video, thanks!

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    The 6809 seems to be a fantastic processor. I've read up on it, and I know there's one in my Vectrex and also in my SuperPET, but I've never tried coding for it!

  • @DaveTheGM
    @DaveTheGM Жыл бұрын

    I have a commodore that's supposed to be in working condition on the way. I'll see when it arrives. But I'm learning all I can about programming on it in prep.

  • @kurtr1181
    @kurtr11814 жыл бұрын

    Would you consider doing an article on the SuperExpander64? I didnt really get into programming until that came out.

  • @da5idnz
    @da5idnz4 жыл бұрын

    Cool stuff, thanks. I seem to remember vaguely something about bypassing the regular interrupt routines by setting registers and then having to redirect to the regular interrupt at $EA31 after you'd finished your routine? I think it got a bit complicated for me at the time and I never really followed it along...

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    Yeah, check out this episode where I use that technique to play music back: kzread.info/dash/bejne/d451xaZxkbu8nZc.html (The particular part is around 21 minutes in, but it builds on stuff I show earlier in the episode)

  • @dazamad
    @dazamad4 жыл бұрын

    Really enjoying your content. Have you interest in a video of your programs you have developed. You briefly touched on it here. Maybe what your setup used to be. When was the last c64 game you made etc

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    Thanks for the suggestion. Maybe I could do an episode looking through some of my old code, and that might be useful for people to see what they shouldn't do ;)

  • @whomigazone
    @whomigazone5 жыл бұрын

    My first raster demo I called the RBW = Rainbow Wedge - It set a raster system in the main system loop so it would keep the outer border of the screen changing color at the top and every 4 or 5 character lines to create a rainbow effect continuously in the background.

  • @whomigazone

    @whomigazone

    5 жыл бұрын

    BTW: I've usually used the book, 'The Anatomy of the Commodore 64' put out by Abacus Software (ISBN 0-916439-00-3) which includes among other things, nicely commented Disassemblies of the Kernal and Basic ROMS (I have two copies - first fell apart years ago and was copied and placed in a Ring Binder - Found the second in a used bookstore in great condition - never use it as the ring binder version has my own notes in it)

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Nice, I've got that book too! There's something very satisfying about raster interrupts that play nice with the OS like that, so you can still play around BASIC while something else happens.

  • @whomigazone

    @whomigazone

    5 жыл бұрын

    @@8_Bit The routine fit quite nicely in the tape buffer, since I was using a disk drive exclusively it had no problem just sitting there. (It also used a location trick to auto run when loaded)

  • @lan5053
    @lan50534 жыл бұрын

    Great job explaining everything. If possible, it would be nice to see how to get the data from a sprite generator, such as Spritemate, into the Turbo Assembler. I’ve tried it but keep getting errors.

  • @beatchef
    @beatchef4 жыл бұрын

    I love your song at the end, reminds me of They Might Be Giants and Pixies :D

  • @tfksworldoflinux

    @tfksworldoflinux

    4 жыл бұрын

    You can find them here: bedfordlevelexperiment.com/

  • @tiger1x
    @tiger1x2 жыл бұрын

    Just awesome! Thanks a lot for the explanations and examples! I watch the video and hack the code into my C128 (in C64 with TMP) and I'm so happy if it works! ;-) I have just one questions: if I load TMP I am not able to make a LOAD"$",8 and LIST anymore. I get always ?OUT OF MEMORY ERROR Is that "normal"?...

  • @8_Bit

    @8_Bit

    2 жыл бұрын

    I'm glad they're helpful. Yeah, after loading some files the C64 will think memory is full due to the way the pointers are set. Usually you can just do a NEW command (or maybe even CLR) and then you should be able to LOAD and LIST again.

  • @00Skyfox
    @00Skyfox5 жыл бұрын

    For about 35 years now I’ve been wondering why the RESTORE key always needed to be tapped a bit harder than any of the other keys. Thanks for the explanation, although I don’t remember seeing a resistor in the schematic between the restore pin and the CPU. Even if there is I don’t know how hitting it harder would make a difference.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Apparently it's a capacitor, not a resistor. I'm hardware-challenged :) There's a bit more info here about it: ist.uwaterloo.ca/~schepers/MJK/fix_restore.html

  • @thechillhacker
    @thechillhacker Жыл бұрын

    dude, increment/decrement vs increase/decrease, it doesn't matter. don't beat yourself up. when i explain what increment and decrement mean to a new coder i'm elmering, i invariably just translate to increase and decrease. its latin vs greek roots. don't sweat it. inc and dec are short enough that it doesn't matter, and really, new programmers only need to learn both terms so when they read some lengthy article, book, or thesis by some academic they can understand it properly. thanks. you are helping to knock a lot of cobwebs loose so i can get back to doing some of the cool stuff i used to do on the already archaic systems i did it with in my youth which taught me to be a programmer to begin with.

  • @cbmeeks
    @cbmeeks5 жыл бұрын

    Do you have a 1541 Ultimate+? Would be nice to see a video on that.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Not yet, I hope to get one. I think Ms Mad Lemon has a good series about it.

  • @sanderheijselaar5687
    @sanderheijselaar56874 жыл бұрын

    Hi, I really like your video's. I'm using the vice emulator, just for convenience but also because I'm still buiilding the Pi1541 SD card drive, but I'm unable to use the "restore" key feature, which seems so handy.

  • @jack002tuber
    @jack002tuber5 жыл бұрын

    Subscribed. Just one question, on the VICE emulator, where is the restore button?

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Try Page Up, F12, or Caps Lock for the Restore key. I think it depends on the version of VICE and what OS you're using.

  • @HansTheGeek
    @HansTheGeek2 жыл бұрын

    When assembeling dont you need the memory with the source code and the memory for the assembled program at the same time? How does that work?

  • @3DPDK
    @3DPDK4 жыл бұрын

    21:50 Clarification on "increment" vs "increase" and why "increment" is the proper term - for those learning: Whether it's a register in the CPU (A, X or Y) or a memory location specifically, if it's value is $FF (#255), if you *increment* that, it actually rolls over to $00 (#00) - so in this one case, even though you increment it, the value actually decreases. The operation sets several flags so the program you write can keep track of an increase beyond 255, but it's not automatically done as a two byte operation by the CPU.

  • @phononify
    @phononify4 жыл бұрын

    Extremly nice videos -- may I ask you (maybe I missed it): What is the name of the monitor cartridge ... i try to follow you using vice -- there it is no problem, because i have a monitor. But in case I want to switch later to the real thing ;)

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    I'm using a Super Snapshot V5 cartridge. Thanks for watching!

  • @phononify

    @phononify

    4 жыл бұрын

    @@8_Bit We have to say thank you ... greetings from Zurich :)

  • @DarkoDraskovic
    @DarkoDraskovic Жыл бұрын

    Thank you for this wonderful video! I've noticed that Super Snapshot monitor won't disassemble correctly the TMP assembled program while using 512k REU. Is this normal? (My guess is it's because assembled program is swapped to REU when running monitor, so I disassemble TMP actually...)

  • @8_Bit

    @8_Bit

    Жыл бұрын

    Yes, in the REU version the code is assembled to the REU, then when you hit "S" to start, it's swapped into C64 RAM. If you want to disassemble REU memory, the command *R0 or *R1 will tell the Super Snapshot ML monitor to look at REU bank 0 or 1 respectively.

  • @infindebula
    @infindebula Жыл бұрын

    I certainly appreciate all these glimpses into assembly, and I'm hungry for more! I probably am at the point where I should stop taking in vids and documentation, and actually start coding. But ... here, in the last program you demo, you used the label "raster" before it is defined as .byte 0. From what I understand in the TMP docs you're not supposed to do this because it can create a "phase error". Perhaps I'm misunderstanding - from what I've watched it seems if you want a byte for some purpose and don't care where it is, programmers always put it at the end (bottom) of the code.

  • @8_Bit

    @8_Bit

    Жыл бұрын

    As long as the forward-referenced label is a 16-bit address, you won't get a phase error, so what I'm doing here is fine. Phase errors will happen if you try to forward reference a zero page address, so I always define those labels at the top of source code. The .byte instruction actually produces a byte so you can't put that at the very beginning of your program, as it'll be interpreted as code. If you really want storage at the top of your program, you'll need a JMP as the first instruction, then all your storage (.byte or whatever), and then your code that you JMP'd to begins.

  • @infindebula

    @infindebula

    Жыл бұрын

    @@8_Bit Robin you’ve answered alseveral noob questions for me now and I really appreciate it. Then again I probably wouldn’t be trying so hard to learn this if it wasn’t for your videos. You might also appreciate that my goal is to learn enough to make a port of Intellivision Biplanes for C64.

  • @duckyvirus
    @duckyvirus5 жыл бұрын

    love these videos. but I have a question, why are you using 2 ASM commands to clear the screen by 'printing' the clearscreen key, when you can just JSR $e544. is your way use fewer cycles? [PS "printing" the clearscreen doesnt always work for me in Vice either, which is why I'm asking]

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    I figured it made more sense to show JSR $FFD2 since viewers could use it to print any PETSCII character they wanted. I'm pretty sure $E544 would be a little faster to execute though. There's so many optimizations I could be showing, but these videos are already long enough :)

  • @duckyvirus

    @duckyvirus

    5 жыл бұрын

    @@8_Bit your reasoning makes complete sense.

  • @ChristopherNelson2k

    @ChristopherNelson2k

    5 жыл бұрын

    @@8_Bit I actually enjoy the long format. I'm sure they're tougher to edit and review but it makes for nice weekend viewing!

  • @mikegarland4500
    @mikegarland4500 Жыл бұрын

    Oh, and easier than loading the accumulator with #147 (lda #147) then using a JSR to print the Clear-Home character to the screen to clear it, there's a single JSR already built into the kernal for that: JSR $e544. Just seems more streamlined to jump straight to a clear screen subroutine than loading the accumulator then calling a subroutine. At least I think it is, anyway.

  • @spiderjuice9874
    @spiderjuice98744 жыл бұрын

    Yes, INC = increment and DEC = decrement, but your 'incorrect' terms are still clear in meaning :)

  • @PixelOutlaw
    @PixelOutlaw2 жыл бұрын

    So, even adding the _r5 flag does NOT enable additional memory? You STILL need to load the Snapshot Cart?

  • @sbaker1951
    @sbaker19512 жыл бұрын

    What is the syntax for the save and load commands inside of TMP? Examples are necessary as all I ever receive are error messages one of which is "62, file not found,00,00" when trying to save to a disk 9.

  • @8_Bit

    @8_Bit

    2 жыл бұрын

    TMP uses the current/active device for loading and saving. These can be cycled through with back-arrow D; it'll show "device: 8" near the bottom of the screen, then "device: 9" when the key combo is hit again. Back-arrow S will prompt for a filename to save (e.g. "test" without the quotes), back-arrow L will prompt for a filename to load (same thing, just a filename, no quotes or device numbers). The filename Back-arrow * will list the current device's directory.

  • @sbaker1951

    @sbaker1951

    2 жыл бұрын

    @@8_Bit Thank you! While the documentation does illustrate those command sequences, nowhere did it appear to mention the need to select the drive first before saving, though that does make obvious sense. Given the archaic nature of the load " file name",8 /list command sequence, one might reasonably conclude the need for the file name being in a parenthetical for saving and loading. While this 'documentation' does exist, it is largely useless without examples to illustrate how to use all the command options. In any case, thank you very much for your prompt reply!

  • @googleboughtmee
    @googleboughtmee3 жыл бұрын

    11:17 I tried this on my PAL C64 and I can't see any disruption to the screen when hitting the Restore key. I wonder if it only affects the slightly faster NTSC machines?

  • @8_Bit

    @8_Bit

    3 жыл бұрын

    Very interesting! It may be because the C64 KERNAL IRQ runs at ~60 Hz on both PAL and NTSC machines, but of course the screen is refreshed at 60 Hz on NTSC and 50 Hz on PAL. Since they're so closely in sync on NTSC, it might make the disruption much more visible. I'll make a note about this and hopefully investigate it sometime. Thanks!

  • @carnright
    @carnright3 жыл бұрын

    Fun song at the end, reminds me of shoegaze 🙂

  • @8_Bit

    @8_Bit

    3 жыл бұрын

    Thanks, it's kind of like hippy shoegaze I think.

  • @randomscribblings
    @randomscribblings4 жыл бұрын

    Ok. Give this video some love :). So... in vice, how does one get the "monitor" to update while using the monitor. That is... if I'm putting a character on the screen, I don't see it unless I exit the monitor mode.

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    When using the VICE monitor, the emulator is 100% frozen in time, including the emulated raster beam that refreshes the screen 50 or 60 times a second. A command like "step 4000" will approximately bump you through to the next frame so the screen will be redrawn.

  • @randomscribblings

    @randomscribblings

    4 жыл бұрын

    Not really helpful... Unless there's a time sucking routine with no side effects I can call...

  • @levijohansen2603
    @levijohansen26033 жыл бұрын

    Doesnt all stacks work like this?

  • @davedavenport8673
    @davedavenport86734 жыл бұрын

    Hey Robin, Have you had any issue with C64 crashing when running code you are working on in TMP reu when pressing the freeze button on SS? I don't have a SS cartridge and am using the image on a U64 but it crashes when I hit the freeze button if I don't have the jumpback code in there. Could that be due to the sei command? For example: *=$1000 inc $d020 jmp $1000 If I compile and run it and hit freeze on SS, the C64 crashes, but if I add your jumpback code in at the top and hit the freeze button and then hit stop/restore, I can get to the SS freeze menu. Just curious if this is something for the u64 people to address or if it happens on real hardware as well and if so, what is the reason, as I am sure there is one, and I just don't know why.

  • @googleboughtmee

    @googleboughtmee

    3 жыл бұрын

    I don't have a U64 but I have the UII+ on a real 64, and it doesn't crash when hitting the Freeze button. Although, at first I thought it did, because I was loading the TMP PRG file directly from the Ultimate menu and this seems to cause it to 'unplug' the cartridge first, so the Freeze button just gives a glitchy screen. If I load TMP from the disk image as normal then it's fine, the SS stays plugged in, or I can load the PRG directly then press Reset to make SS reappear before entering TMP. Then the Freeze button works and I haven't had any crash (no jumpback code).

  • @der.Schtefan
    @der.Schtefan11 ай бұрын

    The website is not reachable anymore. It requires username/password. Any alternates?

  • @Breakfast_of_Champions
    @Breakfast_of_Champions5 жыл бұрын

    24:49 my roflcopter goes whooshwhooshwhoosh 😁

  • @00Skyfox
    @00Skyfox5 жыл бұрын

    If it takes more CPU time to draw the screen 60 times a second in NTSC and that slows down programs, is there a way to make it draw a screen twice, reusing what’s already in memory to free up CPU cycles for more calculations and essentially needing only 30 frames a second? We can see that update rate smoothly just fine (movies are 24 FPS).

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Some games do run at 30 frames a second but for whatever reason it doesn't look as smooth to the eye, despite 24 FPS looking fine for movies. Particularly when the whole screen is scrolling or updating, it's fairly noticeable, though it might be an acceptable compromise for some games. This was an issue a generation or two ago on game consoles, when games were beginning to run at HD resolutions. Some games would controversially run at 30 FPS to give more time to render the graphics, and there was a fair bit of outcry from the players about it.

  • @00Skyfox

    @00Skyfox

    5 жыл бұрын

    I wonder if the smoothness difference is because when a movie is filmed at 24fps, that rate will pick up motion blur so it translates in the brain into a perception of smooth motion, while in games every graphic position is solid from one location to the next.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    That very well may be it, or at least a major factor.

  • @rubusroo68
    @rubusroo684 жыл бұрын

    what a great channel. programming that commodore looks a lot more difficult that the atari & amigas

  • @bierundkippen720
    @bierundkippen7203 жыл бұрын

    Easier to remember: SYS 2^15

  • @retrogamer33
    @retrogamer335 жыл бұрын

    I'm fairly certain your 2 games were added to the C64 DTV as hidden games.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Yes, I was the lead programmer on the C64 DTV and we hid a number of little games in it. That was a very fun project!

  • @TheUtuber999

    @TheUtuber999

    Жыл бұрын

    @@8_Bit That is so cool. I bought a couple of those DTVs back in 2007 and put one into an enclosure, complete with IEC connector, reset button and power LED. Project details and pics can still be found on my web page.

  • @codycbradio
    @codycbradio4 жыл бұрын

    Does anybody know where you can get a rom for turbo macro pro? When I go on their website, it just lists the different versions but doesn't give download options.

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    The .zip can be downloaded here: style64.org/release/turbo-macro-pro-sep06-style

  • @williamwade8119
    @williamwade81192 жыл бұрын

    Is it possible to get Turbo Macro Pro running on the THEC64?

  • @8_Bit

    @8_Bit

    2 жыл бұрын

    Hi, yes, check out this video I made (check the index if you want to jump right to the TMP part): kzread.info/dash/bejne/iGtht8Rmc9zbl9I.html

  • @MennoHoman
    @MennoHoman5 жыл бұрын

    now i have to fire up the old box again ;-)

  • @nightcoder5k
    @nightcoder5k3 жыл бұрын

    @26:00 Can't you use READ C(X) instead of reading it to A and assigning it to C(X) ?

  • @8_Bit

    @8_Bit

    3 жыл бұрын

    Yes, that should work, and I don't see why I didn't do that. But generally if I'm not coding something as a teaching example, or optimizing for speed or size, all I care about is if it works. If so, then it's done; on to the next task :)

  • @danpalu2308
    @danpalu23084 жыл бұрын

    I eat this kind of content raw, extremely interesting, small errors or not. Finding and fixing errors is an essential part of programming anyway, and I would much rather see content that reflects the true nature of programming rather than glorified, heavily edited content that gives the impression that you can somehow code 500 lines as fast as typing 500 lines of text. That is NOT how it works, as all programmers know. You spend most of the time starring at the screen, just thinking. But new people might not know this, and end up thinking they are not good enough. But I digress. Authentic, humble high quality content focused in the subject > rockstar content focused on the creator. Hope you son becomes a kick-ass programmer.

  • @stupossibleify
    @stupossibleify5 жыл бұрын

    Isn't it amazing that, before the era of KZread, and with everything we learnt from the printed media, we all said "S-Y-S" instead of the more obvious "SYS". Yet we all said "REM", phonetically.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    I love these little aspects of our 8-bit culture and history. You've reminded me that I once encountered a tribe of "SYS"-sayers here in my own city in the mid-'80s and I was flabbergasted.

  • @napomania

    @napomania

    4 жыл бұрын

    i always said SYS as the System word. because the sys command it often crash my machine,. so beware of that ! :-)p

  • @ChristopherNelson2k
    @ChristopherNelson2k5 жыл бұрын

    I was a little disappointed that .crt files are not compatible with Vice128. Would have been helpful to be able to match your setup without all the physical carts on hand. Still enjoying re-watching this and running it on a vanilla 64 with TMP.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Did you try using the C64 version of VICE (x64 or x64sc?). I've had both Super Snapshot v5 and REU running on that fine, so you should be able to match my setup with it.

  • @ChristopherNelson2k

    @ChristopherNelson2k

    5 жыл бұрын

    @@8_Bit yes, I switched over to that and did get it working fine!

  • @mattks1001
    @mattks10012 жыл бұрын

    Ar 17:08. I've tried this on my non-reu c64 using the $8000, but its not working. When I click restore, nothing different happens... Is there some other part I need to change, like the sta? but I'm unsure what to change it to. thanks

  • @8_Bit

    @8_Bit

    2 жыл бұрын

    Near the top of the program is a line jumpback = $0140 which is for the REU version, try changing that to jumpback = $8000 for the non-REU version. Hopefully that's all it takes.

  • @mattks1001

    @mattks1001

    2 жыл бұрын

    @@8_Bit Thats what I did, didn't work. I can use the $0140, but its a slightly different process, it restores back to basic, I have to go back into sd2iec and rerun TMP and it will actually restore. Maybe because I am running off a sd2iec? Thank you so much for the reply!

  • @8_Bit

    @8_Bit

    2 жыл бұрын

    ​@@mattks1001 Strange, it should work fine with SD2IEC; I usually run from a uIEC which is basically the same thing. Does your Restore key work otherwise? Like, if you're in BASIC, hold down the RUN/STOP key and while you continue to hold it, tap Restore. The screen should clear and you will get a READY prompt at the top of the screen. Some C64s you really need to give Restore a firm thwack to get it to register. Sorry if this is obvious! Oh, another possibility is that if your program is modifying location 1 to switch out the ROMs, then you actually need to store the jumpback into locations $FFFA and $FFFB instead of $0318 and $0319. Maybe that's it.

  • @mattks1001

    @mattks1001

    2 жыл бұрын

    @@8_Bit Thanks I’ll give those a try. But yes, the restore key works otherwise and I do give it a friendly little whack. Lol Thanks for the videos. Learning Assembly for the first time.

  • @marcusk7855
    @marcusk78554 жыл бұрын

    When I try to load with the % my screen looks the same but then all I get is a "?SYNTAX ERROR" message. Can anyone tell me why?

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    %FILE is a shortcut for LOAD"FILE",8,1 that's built into Super Snapshot and some other utility cartridges. You'll get a syntax error if you just have a plain C64 without that feature.

  • @MrGoatflakes
    @MrGoatflakes5 жыл бұрын

    Hey, thanks again for these great videos. I'm having a little trouble though, I am using VICE because I haven't been able to get my hands on the real thing (yet). Specifically the Commodore 128 emulator x128.exe I enabled the "Enable RAM Expansion Module cartridge" and set the RAM Size to 512K in Settings->I/O Extensions->RAM Expansion Module and in Settings->I/O Extensions->Super Snapshot V5 I also enabled "Enable 32KB V5 RAM Expansion" and reset and held down Left Control (mapped to chicken lips). It booted into C64 mode fine, but there was no message indicating the presence of Super Snapshot. And $ by itself gave a syntax error in BASIC D: Thanks again ^-^

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    Instead of using x128, have you tried just using x64 or x64sc? I've managed to get the Super Snapshot working in VICE with the Attach Cartridge pulldown, and even though the ROM I found is a "crt" file, you need to tell VICE it's a SSv5 cartridge, not just a .crt or it won't work.

  • @MrGoatflakes

    @MrGoatflakes

    5 жыл бұрын

    @@8_Bit Oh, I wasn't aware that you had to go and find the ROMs for these cartridges :/ I feel embarrassed for myself now :P

  • @MrGoatflakes

    @MrGoatflakes

    5 жыл бұрын

    @@8_Bit does the REU need a ROM image also?

  • @MrGoatflakes

    @MrGoatflakes

    5 жыл бұрын

    @@8_Bit ok, I got it to work, guess I'm going to have to look at your video about how to use that software :P Thanks!

  • @MrGoatflakes

    @MrGoatflakes

    5 жыл бұрын

    @@8_Bit I manged to to get the SS5 working and use it to load TPM+SEU once, but as I had forgotten to check enable the SEU as well as select 512kB with it, I had to try again SS5 for me seems a lot different to what you are showing in your videos I get a screen that says "F1 configure memory, F3 normal reset, F5 utilities and F7 install fast loader". I honestly can't remember what I pressed to get it working once, but sometimes F5 brings up a utility menu, mostly it doesn't. But anyway I got sick of that and just did LOAD "TPM+S*",8,1 SYS32768 and I got into TPM+SEU and it said 512kb memory available D: Thanks for your help :)

  • @ZXSpectrum128K
    @ZXSpectrum128K4 жыл бұрын

    Are there any flight Sims 4 the 128?

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    Not that I'm aware of. There were very few C128 mode games (if we can include 8-bit flight sims as "games") unfortunately. Eventually I'll make a video about why I think this is, because I see people arguing about it online all the time :)

  • @Pesthauch666

    @Pesthauch666

    4 жыл бұрын

    Here's a list I found about all the native and "enhanced" C128 games. But it looks like the google spreadsheet that is linked to on that page will expire soon. And it looks like there was a patched version of Flight Simulator II available for the C128 aswell as Gunship. armchairarcade.com/perspectives/2018/04/02/master-list-of-commodore-128-games-and-software/

  • @kurtr1181
    @kurtr11814 жыл бұрын

    What is the limit to how much memory the C64 hardware can handle?

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    The 6510 processor can only address 64KB at a time, but with bank switching and DMA up to 2 MB is fairly common. However, the software has to be specifically written for it. GEOS (graphical operating system like early Macs) is the main program that makes good use of extra C64 RAM.

  • @kurtr1181

    @kurtr1181

    4 жыл бұрын

    @@8_Bit Interesting. Have you demonstrated GEOS?

  • @8_Bit

    @8_Bit

    4 жыл бұрын

    @@kurtr1181 Only briefly in this TheC64 video: kzread.info/dash/bejne/amyXrLiodba5oNY.html Eventually I need to do a full episode about it.

  • @rjc199
    @rjc1995 жыл бұрын

    I don't understand why back in the day (or even now) people didn't target software for those REUs. They give you so much more capability. You could make incredible games or productivity software with that extra ram.

  • @petesapwell
    @petesapwell3 ай бұрын

    Hi Robin, pulled out the C64 this eve and been playing :) just figuered out (not using REU ver) that if I start at (*=1000) and set jumpback var to $8000 the restore key returns me to TMP, previously tried $0140 and it crashed (because Im not using REU version?) also whooping with delight like the sad geeky 60 yo that I am :)

  • @8_Bit

    @8_Bit

    3 ай бұрын

    Nice, have fun! Sorry if I didn't mention the $8000 thing in this video - I have in some but I couldn't tell you which ones :)

  • @petesapwell

    @petesapwell

    3 ай бұрын

    I did actually see it later on in text at top of screen, just pleased I thought it first :) Currently struggling to use TMP with Vice Emu.

  • @8_Bit

    @8_Bit

    3 ай бұрын

    @@petesapwellThe "tilde" ~ key is the back arrow key in most emulators by the way, in case that's where you're having trouble.

  • @petesapwell

    @petesapwell

    3 ай бұрын

    @@8_Bit :) Took me ages to find that out lol Thanks all the same :)

  • @petesapwell

    @petesapwell

    3 ай бұрын

    @@8_Bit Well this MC assembly is a hard task master!, just spent hours trying to figure out why a bit of code wasn't working (had to copy someones routine for printing 16 digit dec number to help debug, $BDCD just hung TMP) the routine helped, my code worked but the result was wrong because I cleared a location with LDA $00,sta $**** (zero page) not lda #00 now wondering if I can use X & Y as 16bit index to write a location with.

  • @jmp01a24
    @jmp01a245 жыл бұрын

    Debug TimeCruncher and explain how that works in your next video.

  • @8_Bit

    @8_Bit

    5 жыл бұрын

    An interesting subject. I've got other videos already in the works, but I've added it to my list, thanks.

  • @randomscribblings
    @randomscribblings4 жыл бұрын

    OK. I've uploaded the 4 direction screen move code to my cloud. I've put it in a directory. scrmove.s4 is the current source and scrmove is an executable that can be run. nextcloud.towernet.ca/s/F6sxtGrWGbJFSJf Now... if you look at the source, I'm doing things like "LDA screen,X" and "STA screen,Y" ... but if you look at the rest of the loop, I look for crossings of the page and modify the pointer where it sits in the program --- self modifying code. Certainly would be frowned upon today. In fact, many modern processors with separate code and data caches might not work at all without special treatment. In our case here, it's a pretty big optimization (LDA (zp),y and STA(zp),y are 6 clock instructions !?!), but on modern systems it might be quite a bit slower. Interestingly, the "down" is 2 whole comparisons slower. When using INX, I can just BNE to detect the overflow, but to detect the underflow, I have to CMP #$ff ... twice. I think I need to print this out and stare at it on a screen larger than 40x25. Great for debugging, sucky for "big picture" thinking. My next goal is to have an 8 direction scroll routine. I could do this with a jump table to 8 separate routines, but then this takes up quite a sizable chunk of memory. I'm thinking that I can do it with some evil table lookups and some even more evil self modifying code (ie: changing in-place INX to DEX and whatnot). Not sure. I'm going to have to look at what it might look like. But I think, given the machine and it's processor, self-modifying-code is a great topic for a video :).

  • @duckyvirus
    @duckyvirus5 жыл бұрын

    an UNOFFICIAL git with the code from these videos is available on GitHub. the link for the Random Code used in this one is github.com/duckyvirus/8bitshowandtell/tree/master/8-Bit%20Show%20And%20Tell%20-%20EP8

Келесі