A quick demo of using Supermon+64 by Jim Butterfield. It is a machine language monitor for Commodore 64. Binaries and fully commented source code available here: github.com/jbl...
Пікірлер: 22
@andlabs4 жыл бұрын
I'm pretty sure why the BASIC screen cleared after you restarted the machine and performed the SYS command is because by saving up to 033C *exclusive*, you omitted the RTS instruction, so it started executing garbage (likely the BRK instruction). I could be wrong, though; I have only ever saved from a monitor once, and it was from the Super Snapshot monitor.
@jblangston34 жыл бұрын
Yes that’s correct. I added an annotation to that effect to the video but I think KZfaq has since deprecated them and am not sure it shows up anymore.
@andlabs4 жыл бұрын
@@jblangston3 The joys of feature deprecation :D
@mnemonic65026 жыл бұрын
Absolute legend! Thanks for putting the effort into finding and putting this invaluable bit of code on GitHub. Especially grateful for the usage README, so hard to find historic docs that make much sense regarding the monitor (besides JBs seminal ML text)
@aquiderossi73667 жыл бұрын
Nice overview. Add in the T (transfer aka "copy") and F (fill) commands (I think that's what they are) and you have all the important stuff. One thing I missed back when I used this (or maybe did know and just forgot since) is the J command, which from the look of things JSRs rather than JMPs to the address you give. (I see this eliminates the need to temporarily replace RTS with BRK for routines you intend to SYS to from BASIC, which you'd need to do for the usual G (go) command to work correctly.) One thing I recommend to those who use this (if this works the same as the version I've used) is immediately after first running it, exit back to BASIC and enter NEW to delete the installer. That way if you inadvertently use RUN instead of SYS to restart it, you won't install additional copies and waste memory. This looks like the version I've used, which installs bound to the top of the section of memory BASIC is allowed to use, and moves the top-of-BASIC pointer to just below.
@jblangston37 жыл бұрын
Yes, I was doing this on the spur of the moment and didn't plan it out very well so I missed a few commands I should have covered. That's also why I messed up saving the last byte of my program. But I'm glad you found it interesting anyway. Also, if you haven't already, check out my github repo (linked in the description), where I have the original source that I fully commented. It's really interesting all the tricks that were used to save bytes or even bits of memory.
@hexasniper16112 жыл бұрын
mate can't thank you enough for this, don't know how long I had been trying to figure out how to get the machine language monitor working, thank you for this video, and for the additional commands as well
@sandcat-maurice8 ай бұрын
This is great, thanks a lot for the effort you put into this Monitor and for adding the improvements along the way! I'm 40 years late to this party, but here I am: running the C64 core on my new MEGA65, started up SuperMon+64, and with my printed and spiral bound ML for CBM by Jim Butterfield working my way through learning some ML. Something that I did not understood back in the days.
@jblangston38 ай бұрын
That’s cool and I’m glad the video and repo was helpful. After dabbling in 6502 for a while I went off in a different direction and learned Z80, and also designed my own hardware around it. I do have a lot of 6502 hardware though (Apple IIe, Original C64, Ultimate64) so maybe I will get back to it someday. How do you like your Mega65?
@sandcat-maurice8 ай бұрын
@@jblangston3 My MEGA65? Love it! Having a brand new 8-bit that is essentially a greatly improved and enhanced C65 combined with the flexibility to add multiple cores (I only installed a C64 core so far) gives best of both worlds: all the new C65/MEGA65 features (BASIC10/65, fast processor, VIC4, multiple SID's) and the huge books/software library of the C64. Also nice to play around with IEC devices like the SD2IEC that I have connected to my MEGA65. My intention is not to keep on using the MEGA65 as a C64 replacement, but it's great to have this huge library and channels like yours to learn about the CBM machines. And when I learned "enough" about the C64, I will start exploring the MEGA65 capabilities. For the coming few decades enough to learn.
@jblangston38 ай бұрын
That’s cool… it looks tempting but I have way too many computer projects right now. I just bought an AgonLight and I’m also designing a new version of my z80ctrl board as well as beta testing an FPGA video board my friend is developing for the Apple II. I have an Ultimate64 for my C64 retro needs as well as a real PAL C64 with a 1541 Ultimate. So I will probably wait but I will be following the ecosystem with interest.
@ludeksmetana86967 ай бұрын
Thank you for this video, it's very helpful :)
@0deer0se5 жыл бұрын
Fantastic program. Thanks for sharing and showing it!
@joerinaldi52 жыл бұрын
Great video and greate program I can finally start doing ML on my C64 mini (it really does work)...thanks
@JesusisJesus2 жыл бұрын
The JB is just a coincidence that Jim Butterfield wrote the machine language monitor.
@LearnAgonАй бұрын
Very very nice 🎉
@ericjumpelfeaturingjohnnyj41352 жыл бұрын
I just spent what feels like hours trying to load SUPERMON+64 into a real (not VICE) Commodore 64. I bought a datassette 1530 from eBay and a cassette adapter to 3.5mm headphone jack, converted the binaries to a wav file that could be played on my phone. I first tried it as an mp3 and got absolutely nowhere--even at a 320 bit rate. Then tried just a straight WAV file and later inverting the wav file (because I saw somewhere that might be a problem). Finally tried flipping the cassette adapter over in the player (to play in the direction it wasn't designed to) and after two or three more attempts, it loaded successfully. Can't remember if the wav file was also inverted or not when it loaded. I would now like to save the program to disk to avoid that headache again. All I know about saving programs to disk on the C64 is saving BASIC programs. How can I use the monitor to save itself onto a floppy? I'm assuming it will be a PRG file that I can execute later. Thanks in advance! -JEJ
@ericjumpelfeaturingjohnnyj41352 жыл бұрын
11 hours after the question, I figure it out. I just needed to save it as you would any BASIC program. In my case: SAVE"@0:SUPERMON+64",8 at the READY prompt. "@0:" to overwrite all the other attempts on the disk that didn't work. 🙄
@jphillq3 жыл бұрын
In the relocator, what logic went into using $36 as a sentinel value? It seems to be a legal opcode for indexed/zero-page ROL instruction. Is the idea to just avoid using any instructions or data that produce $36 inside supermon? I don't see any reason why we couldn't corrupt the program otherwise. I'm new to 6502 assembly so I'm probably missing something.
@jblangston33 жыл бұрын
Jim Butterfield chose $36 as the sentinel value in his relocator code, so I just wrote my python program to use the same value he was using. I guess since he knew he was never using this instruction in the code, he decided it was safe to use $36. He wasn't writing a general relocator, just something simple that would work for this specific program.