I think this magazine was named after the Transactor part of Personal Electronic Transactor. I used to borrow these from the library because I couldn't afford to purchase them.
I think the biggest and lowest hanging fruit improvement would be to not use the bottom line for memory display. Instead, change it to a status bar that shows where the cursor corresponds in both hex and decimal. Let users use the wasd keys to highlight (via alternate/blinking colors on a virtual cursor) any specific pixel and see the values/address in hex/dec.
@3vi1J There would need to be checks to prevent writing to the screen on the bottom row, which would add complexity and require updating offsets for the self-modifying code. I found an easier solution was using zero page pointers as references. See my other comment for Kick Assembler source code. Cheers.
I actually like watching you figure stuff out on the fly. Sometimes more interesting than only getting the polished answers. I move you do this more often!
Very interesting! I love going through all of the old magazines and finding the type in programs, I find it really helps in understanding how these old systems, the ones I am not overly familiar with, work! I even find tricks on the systems I do know well that I did not know about :)
This is a really cool program, Robin. Thanks for making a video on it. I did a detailed write up for it and linked to your video. It can be found on my Neocities page. Cheers.
I remember that Transactor cover! I was always amazed at how much more technically informative Transactor was than the competing magazines. Going to shut up and actually watch the video now... :)
Hi Robin, I’m aware this is an older video but I just want to mention that I remember creating a similar program but instead of copying the data and show it as characters my program copied the data in to the sprite addresses or perhaps it was just one sprite - I used this to discover how sprites where designed in games.
I think the areas that are animated are actually not reading RAM (address space intended for cartridge and so on). When you read "nothing" you usually end up with whatever was last on the data bus (usually the VIC data)
I think you might be on to something there. The 6510 and the VIC-II chip alternate for access to the bus - one on the rising edge and the other on the falling edge. So this effect could very well be the alternating set of data for each.
3:39 the more 'sophisticated' magazines of the 80s had a line by line checksum code, printed on the magazine and it was included a "wedge" real time checksum program you can type before any article input, where a number on the screen appeared as soon as you hit the RETURN key and compare it to the printed checksum in each printed line you read; that way you can instantly catch your error, because if you misstype say DATA values 142 vs 141 and then happen to misstype another value i.e. 252 instead of 253, your overall checksum will be correct yet your code will do weird things or simply hang, depending on which part your mistakes were, i.e. opcodes or program sprite/char/bitmap data etc. I've made those mistakes in multi-page long programs and the checksum real-time program saved my life several times
I'd argue The Transactor was the most sophisticated of all 8-bit magazines :) Those checksum programs were a slightly later innovation and I believe Transactor also got one in later issues. I think this issue is from early 1984 and most magazines started their checksum programs in late 1984 or in 1985; one of us would have to dig up old issues and find out exactly when.
In that same Transactor, just above the Ram Scan section you show, the 'Mirror' routine mentions that particular POKE you commented on in Ram Scan 64. It says: "However, it stops working after a Clear Screen is done, until the POKE in line 1040 is given. Can someone help us here? It's probably just some silly oversight that we can't seem to spot because of the clouds between us and the screen - you know the ones we mean, they're made of clear air? Hmm." Maybe Robin can help them out after all these years? The POKE might be needed on the Mirror program and not Ram Scan and it was just carried over.
I think you are correct in stating that line 1040 has some irrelevant code that was probably carried over from the Mirror program you alluded to. I checked the subsequent revision, which showed a couple corrections to this issue under "TransBloopers," but looks like they missed this one. 😄
Old computer magazines used to be great...alway looking forward to next months issue, typing in the listings and reading about all the new machines and games.
A good bit of detective work. Back in the pre-internet days on the Amiga, machine code in BASIC may as well have been cuneiform black magic to me. I needed to wait until I got to PC with ASM and proper documentation before I could understand machine code.
What an interesting program, a great way to visually understand what's going on. The song at the end reminded me of two excellent TV and movie characters, 'Bit' from Tron and 'Cursor ' from Automan. Whatever happened to Automan? Thanks Robin, a great start to the New Year!
Thanks, yes, the song is very much inspired by Tron, and Automan was surely inspired by Tron :) TH-cam channel Toy Galaxy did a great video about Automan if you want to check it out. Happy New Year!
Yep, I've noticed some funky behavior from time to time when using Super Snapshot with my 64C... mostly when exiting the monitor to resume a program. Thankfully the "save early, save often" approach has saved my bacon many many times. This issue of Transactor looks like it will be a wealth of knowledge for a ML n00b like me. It was instructive to see your thought process as you were examining the program, thank you for including it.
3:44 It wouldn't wrap around if you used "dA" for "data". 8:12 You might get a parallax-scrolling effect when you're character-scrolling the screen RAM. 9:14 It seems like this is displaying regions of unmapped I/O space that return random values upon being read. The adjacent stable regions with a couple of bytes changing might be the mirrors of the VIC and CIA chips with the scanline or timer counters. 17:02 If it's jumping up and down by pages, it would be much better to call GETIN for the pressed key, to control the repeat rate. 25:00 It might help to display the "home" RAM page somewhere, such as on the last byte of the screen. 26:25 It might be the original source for some of them. I remember giving 600-dpi scans of some issues to someone. I've never had my hands on any issues before Volume 4.
Ideally the BASIC program could have 3 digit lines numbers to make the data lines fit on the screen. Using the dA abbreviation would not work at it would change to DATA the next time you list the program.
8:12 Yes, I think what is happening is that when page 4 is selected with offset 1, the program is reading the contents at address $401 and writing that to address $400 and doing that repeatedly - effectively shifting every byte to the left until it scrolls out of view. I posted some Kick Assembler source in another comment that shows the selected page and offset toward the bottom of the screen. If you select page 3; offset $28 and then press cursor down to switch to page 4; offset $28, the contents of the screen should scroll vertically since it is basically reading every screen row and writing it to the previous row until it scrolls out of view. 9:14 Since the 6510 and the VIC-II chip alternate use of the bus on the rising or falling edge of the clock, I think the area of memory around page $D8 is showing the contents of the VIC-II color ram briefly, followed by the contents of shadow ram and alternating quickly between the two.
Funny how they appear to go through great lengths to make the code relocatable with this clv/bvc jumping but then use self modifying code for the copying.
The parallax effect at 25:25 is pretty neat. By drawing some of the screen memory to the screen, it overwrites what it's reading, so the effect is very much like when you hold two mirrors opposite each other to make an infinity mirror, or when you point a video camera at the screen displaying the live video feed.
I've wondered if a slightly modified version of this program could produce a "C64 inspired" Doctor Who title sequence, since it seems like it could do a version of the "howl around" effect that the show's original title sequence became so well known for. :)
That's GREAT! I've been trying to remember/find the simple PEEK I,. NEXT I program a buddy of mine taught me 40 years ago on C-64 and Tandy. It was only 5 lines long or so and out put was similar to this. Was funny because I can still remember the Conputer class teacher catching a glimpse of what we were doing and it looked CRAZY.
I had a bunch of Transactors (including that one) from 1982-1988 (gave them to TPUG some years ago). One of my favourite memories was the SAVE@ saga which went through several issues and which was finally solved for good. And yet, I never seemed to have tried this program.
The scrolling contents, the screen feedback loops, etc., it seems like this could be the basis for a game of some kind. Just add Sprites and custom characters and initialize memory locations.
This happened to me all the time, back in the 80s getting transformed into machine language was a common hazard. Often you'd hear kids explaining to the teacher they were late for school because they'd been "Assembled". It never happens these days, it was a different time, that 8 bit world.
It's likely done that way to make it easier to see where you've made mistakes during typing. It otherwise doesn't matter - I input the program to an emulator (VICE 3.6) and didn't use the spaces, and it worked fine.
Interesting find! But I think something went wrong with the execution on your machine. The program doesn't change the text color, also I couldn't reproduce that "parallax effect" on my C64. Looking at the disassembly, I have to wonder why the author would use those "clv / bvc"-constructions? He could just have used "jmp" instead. And checking for the stop key ($ffe1) has no effect if he doesn't check the zero flag either. There is also a pointless branch at $035d: "bne $0365" which was probably supposed to be "bne $036c". So to sum it up, the program, while interesting, also looks a little shaky! That doesn't explain the malfunction on your computer though. I hope we'll get an update on that. :)
The varying text colours as I demonstrate it are just from the current cursor colour when I SYS 828. I usually change my cursor colour to white for higher contrast (my viewers requested it), so it was white the first RUN. Then I hit STOP+Restore which reset it back to blue, and I ran again, so the text was blue. I think the CLV/BVC were used as a "branch always" which means the code would be easily relocatable, as branches are relative but JMPs are absolute. However, other aspects of the code (such as the self-modifying part) are not relocatable, so it's kind of a waste of a couple cycles. And yes, the check for the stop key isn't checked so it's all a little strange. I suppose this port from the PET original was hurried off right before the magazine went to press.
@@8_Bit My mistake, I actually omitted the poke command in line 1040 (because I like my colors the way they are) and later forgot about that. :-( So really that was just an odd choice of colors by the author.
The parallax effect was from copying screen memory to screen memory. The screen goes from $400 to $7E7, and your BASIC program starts at $800, so it's very easy to get the parallax effect when viewing your program. I don't know what that other stuff was. I'm kind of amazed that the C-64 is messing with RAM constantly like that. Maybe something to do with the Super Snapshot cartridge? It would be really helpful to have the address displayed.
I heard Ram Scan and then went: Whoa, Bread Binny (Bam-ba-lam) Whoa, Bread Binny (Bam-ba-lam) Got it for xmas as a child (Bam-ba-lam) That commodore was wild (Bam-ba-lam)…
Hi Robin. Thanks for all of the great videos. I have a question. Can you add labels to Assembly code using the ML monitor in the Super Snapshot or any monitor for that matter? For example, "loop LDA #05".
Unfortunately no, I'm not aware of any C64 ML monitors that support labels. I'm not sure everyone would agree on the terminology, but the way I look at it is: Machine Code is just the raw bytes like A9 05 that you'd use a hex editor for, Machine Language allows mnemonics like LDA #5 that you'd use a ML monitor for, and Assembly Language allows symbols/labels like LOOP LDA #GREEN (or whatever) that you'd use a (Symbolic) Assembler for. 3 different levels, essentially.
@@m7hacke the sort of "simple assembler" built into Super Snapshot and Action Replay, or in SuperMon for that matter, don't support things like comments or labels. They're assembling directly into memory each time you press return, so there's no place for the comments to be stored really. It's only proper symbolic assemblers that store the assembly source file on disk or in another part of RAM, and then assemble the source into actual machine code that can handle comments.
The ability to poke values into the displayed memory - IE draw art into memory - would be awesome :D also perhaps representing memory as pixels would allow for a more intuitive navigation of memory? or perhaps drawing a graphical bar using all the sprites to show an overview so you can see an indicator of where in the memory map you're currently looking - like a sprite cursor that moves along the edges of the screen to indicate the coordinates in memory when expressed as a 2D grid
Also you could add some 'bookmarks' to the function keys - move the display to specific areas of interest - like the screen buffer - OS calls and chip registers and stuff? it'd be cool to have two areas of memory stored as bookmarks that you can jump between - and then have some code that runs on an interrupt that slowly copies data over from one part to the other - then you can monitor it using this program :D
The first volume of Be an Interplanetary Spy was translated to Swedish. I bought in a supermarket out in the hicks and never saw it anywhere else. I thought it was just a one-off oddity. I I didn't now there was an entire series of them. neither did I know that they were from the US.
I love that series of books and just last year finally completed my collection. I'm not sure why you're bringing it up though, did I somehow reference it in this video? I don't remember if I did, sorry :) I'm not complaining, just curious!
@@8_Bit You don't mention it in the video, but in the caption: "strange dream after reading " "Be an Interplanetary Spy" books before bed"! Anyway, I'm tempted to go look for more books in that series, but I guess I have to look for the US originals which is fine by me :)
@@AthleticDesign Oh, haha, sorry I missed that. I actually wrote that description some months ago and I find not many people read the descriptions - apparently not even the author when I post the video! That's cool that they made a Swedish version; there are 12 total in the series but maybe just the original was translated?
@@8_Bit Haha! Well, I bought the first one while on holiday out in the countryside. I never saw it (or any other books in the series) in the bookstores and magazine stores in my university home town (Lund) where I could buy all the Fighting fantasy and Lone Wolf game books and all (and I mean all!) American and British computer magazines. But, googling now, I see that a second book also was published and that publisher was in Malmö, very close to my home town. They seem to mainly have published comics and pulp fiction and were called "Winthers förlag". The Swedish translations were called "Du är en Rymdspion: 1 Finn rymd-gangstern" and "Du är en Rymdspion: 2 Rädda Robotvärlden"
I'm always flabbergasted at the impressive recall that you have for things that happened decades ago. Do you have an eidetic memory? Any special tricks on focusing on recall?
It does seem strange how vividly I remember a lot of these 8-bit moments in my childhood. I just need to read an old magazine, or boot up a game, or even just look at the C64 keyboard and memories come back.
Surely there should have been an assembler built into Basic so that people would have no reason to enter machine code as lists of numbers. Of course that would require more precious memory, but an assembler is so broadly useful that it would surely be worth having. It might even be worth having an assembler instead of Basic if a choice must be made between the two.
Did you figure out what caused the cartridge to crash? I don't think I've ever seen Super Snapshot jump to a random monitor while in some other feature! It would have been nice to try a scavenger hunt game where you put some text in memory, then try to find it by scanning the display/memory with the cursor keys 🙂.
No, I never did figure it out that crash. Pretty bizarre! I can only guess that the program was reading/writing some magic bytes in the Super Snapshot's bank control registers. I kind of did the scavenger hunt game when showing my patron credit program's code in the scanner during the end credits. But I edited out most of the actual hunting and just showed the parts I found :)
I wrote a similar program back in 1987. It's neat getting so up-and-cozy with memory. (I tried posting a link to my program, but it doesn't seem to make it through. Is it because it's against some sort of policy?)
TH-cam is really bad now about silently deleting comments, especially ones with links, but even those without. They don't even put them in a moderation bin for me to approve, they just outright delete them. Sorry about that!
@@8_Bit That's frustrating. But it's not a big deal in this case because it's just a rinky-dink little program that I thought'd be fun to share. Still, I'm curious about how I can get a URL through. This is my seventh attempt, this time rot13ing everything and leaving out punctuation. uggc jjj cbznxvf pbz zrzbel%20qvfrpgbe cet
Hi Robin, my name Frank. I already pursue your videos for a while. I would have an inspiration because you could make a video about the SID in the C64. How to create an interrupt-powered song. I do not mean the notation, especially the technology behind it. I would like to program a game, which plays a song via interrupt. Maybe it is possible for you. Thank you ... Greetings from Germany
Wow! I had to do a double take. You read, "Be An Interplanetary Spy"? I did, too. I got 4 original copies from a friend. We first met in Bible camp as kids, and then I got to read them there. In high school, I was probably too old to be reading them, but I got the old copies from him, and got the new issues. I think that there were only 12 copies. I'm so glad that I kept these in good condition.
There are easy navigation controls on youtube for audience to skip parts they're not interested into. Just skip the part you don't wanna see and let others see if they wish to.
Very cool, thanks for that thorough walkthrough. I was wondering why they didn't get $FFE4 (GETIN) to read in the characters. Would it slow it down so much that you couldn't get that highspeed parallax effect? Perhaps raw key reads make the program more awe inspiring. :) haha btw, loved the outtro with the ram scanner of your program. :)
I think this magazine was named after the Transactor part of Personal Electronic Transactor. I used to borrow these from the library because I couldn't afford to purchase them.
I think the biggest and lowest hanging fruit improvement would be to not use the bottom line for memory display. Instead, change it to a status bar that shows where the cursor corresponds in both hex and decimal. Let users use the wasd keys to highlight (via alternate/blinking colors on a virtual cursor) any specific pixel and see the values/address in hex/dec.
Probably the c64 feature called "sprites" could be used for this -> to show some info and to highlight specific byte on the screen
@@Krzys6301 Maybe even hide the borders and display the sprite there, so as to not cover any of the on screen data.
@3vi1J There would need to be checks to prevent writing to the screen on the bottom row, which would add complexity and require updating offsets for the self-modifying code. I found an easier solution was using zero page pointers as references. See my other comment for Kick Assembler source code. Cheers.
So much love and joy in your song at the end! Greetings from germany
I like to see your raw analysis. Thats where the Eureka-Magic happens. 👍
I actually like watching you figure stuff out on the fly. Sometimes more interesting than only getting the polished answers. I move you do this more often!
I agree. I liked Robin's exploration in the video. Not every video has to be scripted and edited perfectly :)
As he says, he enjoys the journey of a project. It appears I'm not the only one who enjoys him taking that journey too.
That is the smoothest scrolling with parallax that I ever saw on the C64. Awesome!
You sir, have entered the matrix.
Very interesting! I love going through all of the old magazines and finding the type in programs, I find it really helps in understanding how these old systems, the ones I am not overly familiar with, work! I even find tricks on the systems I do know well that I did not know about :)
This is a really cool program, Robin. Thanks for making a video on it. I did a detailed write up for it and linked to your video. It can be found on my Neocities page. Cheers.
I remember that Transactor cover! I was always amazed at how much more technically informative Transactor was than the competing magazines. Going to shut up and actually watch the video now... :)
Oh man, haha, that was SO OCD making the data statements line up :) I know how it is...
Love the end sequence with the RAM display of the scrollie, happy new year!
15:50 It's called the run stop key
Hi Robin, I’m aware this is an older video but I just want to mention that I remember creating a similar program but instead of copying the data and show it as characters my program copied the data in to the sprite addresses or perhaps it was just one sprite - I used this to discover how sprites where designed in games.
I think the areas that are animated are actually not reading RAM (address space intended for cartridge and so on). When you read "nothing" you usually end up with whatever was last on the data bus (usually the VIC data)
I think you might be on to something there. The 6510 and the VIC-II chip alternate for access to the bus - one on the rising edge and the other on the falling edge. So this effect could very well be the alternating set of data for each.
Using the data in the screen buffer for the next screen buffer write can be used for some nifty procedurally evolving code, almost life like.
3:39 the more 'sophisticated' magazines of the 80s had a line by line checksum code, printed on the magazine and it was included a "wedge" real time checksum program you can type before any article input, where a number on the screen appeared as soon as you hit the RETURN key and compare it to the printed checksum in each printed line you read; that way you can instantly catch your error, because if you misstype say DATA values 142 vs 141 and then happen to misstype another value i.e. 252 instead of 253, your overall checksum will be correct yet your code will do weird things or simply hang, depending on which part your mistakes were, i.e. opcodes or program sprite/char/bitmap data etc.
I've made those mistakes in multi-page long programs and the checksum real-time program saved my life several times
I'd argue The Transactor was the most sophisticated of all 8-bit magazines :) Those checksum programs were a slightly later innovation and I believe Transactor also got one in later issues. I think this issue is from early 1984 and most magazines started their checksum programs in late 1984 or in 1985; one of us would have to dig up old issues and find out exactly when.
In that same Transactor, just above the Ram Scan section you show, the 'Mirror' routine mentions that particular POKE you commented on in Ram Scan 64.
It says:
"However, it stops working after a Clear Screen is done, until the POKE in line 1040 is given. Can someone help us here? It's probably just some silly oversight that we can't seem to spot because of the clouds between us and the screen - you know the ones we mean, they're made of clear air? Hmm."
Maybe Robin can help them out after all these years? The POKE might be needed on the Mirror program and not Ram Scan and it was just carried over.
I think you are correct in stating that line 1040 has some irrelevant code that was probably carried over from the Mirror program you alluded to. I checked the subsequent revision, which showed a couple corrections to this issue under "TransBloopers," but looks like they missed this one. 😄
Stuff like this really makes me miss my c128 .. parents got rid of it when we got a 486..don't know why tbh
Probably to help defray some of the cost for the upgrade to the evil DOS machine. 😒
Old computer magazines used to be great...alway looking forward to next months issue, typing in the listings and reading about all the new machines and games.
A good bit of detective work. Back in the pre-internet days on the Amiga, machine code in BASIC may as well have been cuneiform black magic to me. I needed to wait until I got to PC with ASM and proper documentation before I could understand machine code.
What an interesting program, a great way to visually understand what's going on. The song at the end reminded me of two excellent TV and movie characters, 'Bit' from Tron and 'Cursor ' from Automan. Whatever happened to Automan? Thanks Robin, a great start to the New Year!
Thanks, yes, the song is very much inspired by Tron, and Automan was surely inspired by Tron :) TH-cam channel Toy Galaxy did a great video about Automan if you want to check it out. Happy New Year!
Toy Galaxy: th-cam.com/video/k4DWOn_4QqQ/w-d-xo.html
Congratulations, you've discovered the Matrix on the C64.
That's actually kind of brilliant, love this kind of mini programs being included in magazines/books.
Yep, I've noticed some funky behavior from time to time when using Super Snapshot with my 64C... mostly when exiting the monitor to resume a program. Thankfully the "save early, save often" approach has saved my bacon many many times. This issue of Transactor looks like it will be a wealth of knowledge for a ML n00b like me. It was instructive to see your thought process as you were examining the program, thank you for including it.
I used to love these sorts of programs. I recall writing my own version of it and just scrolling through RAM. It was like peering into another world.
Ha, nice signoff :D Yeah, I bet that little program could have come in handy back in the day.
Happy New Year Robin.🎉
Love this stuff and the song in the end is adorable
3:44 It wouldn't wrap around if you used "dA" for "data".
8:12 You might get a parallax-scrolling effect when you're character-scrolling the screen RAM.
9:14 It seems like this is displaying regions of unmapped I/O space that return random values upon being read. The adjacent stable regions with a couple of bytes changing might be the mirrors of the VIC and CIA chips with the scanline or timer counters.
17:02 If it's jumping up and down by pages, it would be much better to call GETIN for the pressed key, to control the repeat rate.
25:00 It might help to display the "home" RAM page somewhere, such as on the last byte of the screen.
26:25 It might be the original source for some of them. I remember giving 600-dpi scans of some issues to someone. I've never had my hands on any issues before Volume 4.
You shouldn't even need to us dA. Just omit the spaces before/after DATA.
It also wouldn't wrap around if he used shorter line numbers.
Ideally the BASIC program could have 3 digit lines numbers to make the data lines fit on the screen. Using the dA abbreviation would not work at it would change to DATA the next time you list the program.
I've got the same idea about "parallax" effect, but of course someone was faster ;)
8:12 Yes, I think what is happening is that when page 4 is selected with offset 1, the program is reading the contents at address $401 and writing that to address $400 and doing that repeatedly - effectively shifting every byte to the left until it scrolls out of view. I posted some Kick Assembler source in another comment that shows the selected page and offset toward the bottom of the screen. If you select page 3; offset $28 and then press cursor down to switch to page 4; offset $28, the contents of the screen should scroll vertically since it is basically reading every screen row and writing it to the previous row until it scrolls out of view.
9:14 Since the 6510 and the VIC-II chip alternate use of the bus on the rising or falling edge of the clock, I think the area of memory around page $D8 is showing the contents of the VIC-II color ram briefly, followed by the contents of shadow ram and alternating quickly between the two.
Funny how they appear to go through great lengths to make the code relocatable with this clv/bvc jumping but then use self modifying code for the copying.
The parallax effect at 25:25 is pretty neat. By drawing some of the screen memory to the screen, it overwrites what it's reading, so the effect is very much like when you hold two mirrors opposite each other to make an infinity mirror, or when you point a video camera at the screen displaying the live video feed.
I've wondered if a slightly modified version of this program could produce a "C64 inspired" Doctor Who title sequence, since it seems like it could do a version of the "howl around" effect that the show's original title sequence became so well known for. :)
That's GREAT! I've been trying to remember/find the simple PEEK I,. NEXT I program a buddy of mine taught me 40 years ago on C-64 and Tandy. It was only 5 lines long or so and out put was similar to this. Was funny because I can still remember the Conputer class teacher catching a glimpse of what we were doing and it looked CRAZY.
It would be very interesting to use this program to look into Video Ram, especially after playing a game!
Reminds me of the old sprite / font / bitmap ripper utility's.
"I may rewrite in TMP".... I double dog dare you ;-)
Happy New Year Robin
I had a bunch of Transactors (including that one) from 1982-1988 (gave them to TPUG some years ago). One of my favourite memories was the SAVE@ saga which went through several issues and which was finally solved for good.
And yet, I never seemed to have tried this program.
So thats what The Matrix looked like in 1980s?
can I just type that into Basic on my C64 or do I need something else for that?
Of course there's a Maple leaf on it. Oh Canada.
The only two places on earth whereby a reference must be made to the nation even when completely unnecessary: Australia and Canada. 😁
The scrolling contents, the screen feedback loops, etc., it seems like this could be the basis for a game of some kind. Just add Sprites and custom characters and initialize memory locations.
9:11 Thats probably the end of colour RAM with its floating high nibbles, CIA#1 with its mirrors, CIA#2, and IO1 address space.
This happened to me all the time, back in the 80s getting transformed into machine language was a common hazard. Often you'd hear kids explaining to the teacher they were late for school because they'd been "Assembled". It never happens these days, it was a different time, that 8 bit world.
why do you make spacing in the date line. like in listing. it doesn't matter?
It's likely done that way to make it easier to see where you've made mistakes during typing. It otherwise doesn't matter - I input the program to an emulator (VICE 3.6) and didn't use the spaces, and it worked fine.
Yeah, it's just easier to spot mistakes this way, no other reason.
wow this was kinda the thing I've been looking for
Some of this reminds me of what PR#12 (without an OS) does on a Apple //c, which always seems to "diagonal scroll".
Ohhh what a great magazine! Wish we had had that here🤩
Interesting find! But I think something went wrong with the execution on your machine. The program doesn't change the text color, also I couldn't reproduce that "parallax effect" on my C64. Looking at the disassembly, I have to wonder why the author would use those "clv / bvc"-constructions? He could just have used "jmp" instead. And checking for the stop key ($ffe1) has no effect if he doesn't check the zero flag either. There is also a pointless branch at $035d: "bne $0365" which was probably supposed to be "bne $036c". So to sum it up, the program, while interesting, also looks a little shaky! That doesn't explain the malfunction on your computer though. I hope we'll get an update on that. :)
The varying text colours as I demonstrate it are just from the current cursor colour when I SYS 828. I usually change my cursor colour to white for higher contrast (my viewers requested it), so it was white the first RUN. Then I hit STOP+Restore which reset it back to blue, and I ran again, so the text was blue.
I think the CLV/BVC were used as a "branch always" which means the code would be easily relocatable, as branches are relative but JMPs are absolute. However, other aspects of the code (such as the self-modifying part) are not relocatable, so it's kind of a waste of a couple cycles. And yes, the check for the stop key isn't checked so it's all a little strange. I suppose this port from the PET original was hurried off right before the magazine went to press.
@@8_Bit My mistake, I actually omitted the poke command in line 1040 (because I like my colors the way they are) and later forgot about that. :-( So really that was just an odd choice of colors by the author.
It'd be kinda fun to print the bitmap of classic games onto t-shirts.
The parallax effect was from copying screen memory to screen memory. The screen goes from $400 to $7E7, and your BASIC program starts at $800, so it's very easy to get the parallax effect when viewing your program. I don't know what that other stuff was. I'm kind of amazed that the C-64 is messing with RAM constantly like that. Maybe something to do with the Super Snapshot cartridge? It would be really helpful to have the address displayed.
I left another comment with Kick source code that shows the selected page and offset. I hope that helps.
I heard Ram Scan and then went:
Whoa, Bread Binny (Bam-ba-lam)
Whoa, Bread Binny (Bam-ba-lam)
Got it for xmas as a child (Bam-ba-lam)
That commodore was wild (Bam-ba-lam)…
Hi Robin. Thanks for all of the great videos. I have a question. Can you add labels to Assembly code using the ML monitor in the Super Snapshot or any monitor for that matter? For example, "loop LDA #05".
Unfortunately no, I'm not aware of any C64 ML monitors that support labels. I'm not sure everyone would agree on the terminology, but the way I look at it is: Machine Code is just the raw bytes like A9 05 that you'd use a hex editor for, Machine Language allows mnemonics like LDA #5 that you'd use a ML monitor for, and Assembly Language allows symbols/labels like LOOP LDA #GREEN (or whatever) that you'd use a (Symbolic) Assembler for. 3 different levels, essentially.
@@8_Bit Okay. Thank you.
Okay, how about this. How do you add comments to Assembly code in the Super Snapshot ML monitor? I tried the semi-colon, but that did not work.
@@m7hacke the sort of "simple assembler" built into Super Snapshot and Action Replay, or in SuperMon for that matter, don't support things like comments or labels. They're assembling directly into memory each time you press return, so there's no place for the comments to be stored really. It's only proper symbolic assemblers that store the assembly source file on disk or in another part of RAM, and then assemble the source into actual machine code that can handle comments.
When hacking roms with tile layer pro you sometimes get that same parallax effect when scrolling.
The ability to poke values into the displayed memory - IE draw art into memory - would be awesome :D also perhaps representing memory as pixels would allow for a more intuitive navigation of memory? or perhaps drawing a graphical bar using all the sprites to show an overview so you can see an indicator of where in the memory map you're currently looking - like a sprite cursor that moves along the edges of the screen to indicate the coordinates in memory when expressed as a 2D grid
Also you could add some 'bookmarks' to the function keys - move the display to specific areas of interest - like the screen buffer - OS calls and chip registers and stuff? it'd be cool to have two areas of memory stored as bookmarks that you can jump between - and then have some code that runs on an interrupt that slowly copies data over from one part to the other - then you can monitor it using this program :D
The first volume of Be an Interplanetary Spy was translated to Swedish. I bought in a supermarket out in the hicks and never saw it anywhere else. I thought it was just a one-off oddity. I I didn't now there was an entire series of them. neither did I know that they were from the US.
I love that series of books and just last year finally completed my collection. I'm not sure why you're bringing it up though, did I somehow reference it in this video? I don't remember if I did, sorry :) I'm not complaining, just curious!
@@8_Bit You don't mention it in the video, but in the caption: "strange dream after reading " "Be an Interplanetary Spy" books before bed"! Anyway, I'm tempted to go look for more books in that series, but I guess I have to look for the US originals which is fine by me :)
@@AthleticDesign Oh, haha, sorry I missed that. I actually wrote that description some months ago and I find not many people read the descriptions - apparently not even the author when I post the video! That's cool that they made a Swedish version; there are 12 total in the series but maybe just the original was translated?
@@8_Bit Haha! Well, I bought the first one while on holiday out in the countryside. I never saw it (or any other books in the series) in the bookstores and magazine stores in my university home town (Lund) where I could buy all the Fighting fantasy and Lone Wolf game books and all (and I mean all!) American and British computer magazines. But, googling now, I see that a second book also was published and that publisher was in Malmö, very close to my home town. They seem to mainly have published comics and pulp fiction and were called "Winthers förlag". The Swedish translations were called "Du är en Rymdspion: 1 Finn rymd-gangstern" and "Du är en Rymdspion: 2 Rädda Robotvärlden"
I'm always flabbergasted at the impressive recall that you have for things that happened decades ago. Do you have an eidetic memory? Any special tricks on focusing on recall?
It does seem strange how vividly I remember a lot of these 8-bit moments in my childhood. I just need to read an old magazine, or boot up a game, or even just look at the C64 keyboard and memories come back.
Surely there should have been an assembler built into Basic so that people would have no reason to enter machine code as lists of numbers. Of course that would require more precious memory, but an assembler is so broadly useful that it would surely be worth having. It might even be worth having an assembler instead of Basic if a choice must be made between the two.
I REALLY LOVE C64 👍🥂🎩
this is all very cool!
Did you figure out what caused the cartridge to crash? I don't think I've ever seen Super Snapshot jump to a random monitor while in some other feature!
It would have been nice to try a scavenger hunt game where you put some text in memory, then try to find it by scanning the display/memory with the cursor keys 🙂.
No, I never did figure it out that crash. Pretty bizarre! I can only guess that the program was reading/writing some magic bytes in the Super Snapshot's bank control registers.
I kind of did the scavenger hunt game when showing my patron credit program's code in the scanner during the end credits. But I edited out most of the actual hunting and just showed the parts I found :)
10:38 Maybe this was the first computer virus... 🤣🤣🤣 (I know Creeper was the first wannabe virus in 1971.)
Very nice video
Who wrote this I wonder …
I think it was written by Richard Evers, Editor for The Transactor Magazine.
top
3:46: If you had limited yourself to three-digit line numbers, you might have avoided the line-wrapping.
Parallax effect doesn't make sense if every row moves by 1 character.
I wrote a similar program back in 1987. It's neat getting so up-and-cozy with memory.
(I tried posting a link to my program, but it doesn't seem to make it through. Is it because it's against some sort of policy?)
TH-cam is really bad now about silently deleting comments, especially ones with links, but even those without. They don't even put them in a moderation bin for me to approve, they just outright delete them. Sorry about that!
@@8_Bit That's frustrating. But it's not a big deal in this case because it's just a rinky-dink little program that I thought'd be fun to share.
Still, I'm curious about how I can get a URL through. This is my seventh attempt, this time rot13ing everything and leaving out punctuation.
uggc jjj cbznxvf pbz zrzbel%20qvfrpgbe cet
@@pomakis Maybe you could every chunk of the url on a separate line.
Google
Com
Page?asdf
Do the parallax in combination with 10 print random. An smooth would be nice 😃
Hi Robin, my name Frank. I already pursue your videos for a while.
I would have an inspiration because you could make a video about the SID in the C64. How to create an interrupt-powered song.
I do not mean the notation, especially the technology behind it.
I would like to program a game, which plays a song via interrupt.
Maybe it is possible for you.
Thank you ... Greetings from Germany
Hi Frank, I think this video I made covers the playback aspect: th-cam.com/video/EZAcD8aXVm4/w-d-xo.html
@@8_Bit Thx Robin, i saw it to late. ;-)
Probably acting weird because io mapped memory; simply reading certain addresses could have side effects.
Wow! I had to do a double take. You read, "Be An Interplanetary Spy"? I did, too.
I got 4 original copies from a friend. We first met in Bible camp as kids, and then I got to read them there. In high school, I was probably too old to be reading them, but I got the old copies from him, and got the new issues.
I think that there were only 12 copies. I'm so glad that I kept these in good condition.
You could avoid the wrap by typing D♠, remember!
But it will just come right back when the program is listed.
Ram Scam… 🙃
Why waste time, resources and patience of your audience by recording your typing?
There are easy navigation controls on youtube for audience to skip parts they're not interested into. Just skip the part you don't wanna see and let others see if they wish to.
@@ideegeniali As it happens, I skipped it at first then rewound to the typing after the end. People have varied preferences.
Very cool, thanks for that thorough walkthrough. I was wondering why they didn't get $FFE4 (GETIN) to read in the characters. Would it slow it down so much that you couldn't get that highspeed parallax effect? Perhaps raw key reads make the program more awe inspiring. :) haha
btw, loved the outtro with the ram scanner of your program. :)
Yeah, I'm not sure why they didn't use $FFE4 but your guesses are good: for speed or for awesome :)
Agree completely. I left another comment with Kick source code that uses GETIN. I hope that helps.