I worked at MECC when that was built. My recollection is that it was written by Anders McCarthy and possibly with the help of Eric Rantapa. It was the best of times. We had a cadre of young brilliant coders with a love of technology. I learned many amazing things from those days. They were mostly also attending UofM and way ahead of where the college curriculum was.
@RussErickson_v1 thank you so much for chiming in! If you have any way to reach Anders or Eric, I'd love to reach out to them to interview them. Let me know. Best way to contact me is to reach me on Mastodon at @peterb@mathstodon.xyz.
An ad appear the exact moment you pressed enter on the keyboard, and for a second I was utterly confused and had no idea what had happened. The timing was just too perfect.
I can confirm that the 6502 simulator existed in the 80‘s. During my time as a student, around 1982…1984 I was lucky to get my hands on an Apple ][ owned by the university and also came across this really amazing piece of software. It helped me in understanding machine language and not much longer I started to write assembler and BASIC applications for the Apple ][. Memories, memories!
@@TeaLeavesProgramming I had a project to implement graphics characters in parallel to the normal upper case character set of the Apple ][, like the ones used in the Commodore machines (PET, C64, CBM xxxx). For this I wrote a BASIC program for creating and modifying the Apple’s character ROM contents (a copy in RAM of course). In the end I could burn an EPROM that contained upper/lowercase and graphics characters much like Commodore machines. Then I wrote a machine language/assembler routine that parsed the BASIC command input of a running program and intercepted the „GRAPHICS“ command that enabled the changed character set - voila, graphics on the text screen! Wrote some BASIC games as well, like a „Sokoban“ clone, using my enhanced graphics charset, so it was just for my purposes and would show funny characters on an unmodified Apple machine. The most ambitious project, with some friends, was a modified and enhanced DOS that supported 40/80 track floppy drives and offered a much faster R/W speed. Listed programs could be started by bringing a cursor into the line with the up/down arrow keys and pressing „Enter“. That‘s the kind of stuff we did in these days - was great fun!
I love the idea of the Data pulsing from point to point. I may add something like this in my C64 Blitzmax Emulator which also shows how the 6502/6510 runs step by step.
Interesting...not quite emulating the 6502 properly. Once the LSB of the address of LDA $0800,X has been loaded, while the processor loads the MSB (08) the X is simultaneously being added to the LSB. During the next cycle the created address (read MSB plus modified LSB) is read whilst internally the processor checks the carry flag and increases the MSB if necessary. If the MSB was increased the read data is thrown away and the read of the correct address is done on the next clock cycle. This is why crossing page boundaries on reads take an extra cycle. On a write to avoid potentially splatting memory the 6502 does not do a write before it has checked the carry flag (it possibly does a read) and so a write (on an indexed address) always takes the extra cycle. Being little endian it means the 6502 can start modifying an indexed address whilst the address is still loading, thus improving efficiency.
Wow, you know a lot about that old stuff :) I built a simple, 5 bit CPU in the PC program Logic World. And I gained a lot of appreciation for the skills of early microprocessors designers, working out all that logic, with no assists. And getting all the timing correct, etc.
@@michaelbauers8800 The first processor I learnt to program was the 6502 (then the Z80, 68000 and GEC 4000 series [this latter in Babbage though I was starting to transition to direct assembler]). As the machines I started on had no assembler I learnt 6502 machine code ops and could read/write directly in hex.
Why does the very naming of Endian ridicule this technical detail? All Intel processors are little Endian, too. Later RISC CPUs had a data bus of the same size as their registers. Only Motorola uses big Endian for no reason. I mean I could understand if the top 16 bit would be written first onto the address bus, and used to select pages or chips. But why would a page be as large as 64 kB, or a chip as small ( ROM ? ). Maybe internet router read the 128 bit tcp/ip address Bit by Bit and can start to route early. But I am pretty sure that thanks to error correction and clock synthesis the physical layer delivers long words despite a serial data input.
@@ArneChristianRosenfeldt The only rationale I have ever heard for big-endian ordering is that it lets you read memory dumps from left to right. That’s it. They forget that there is no “left” or “right” (or indeed, “up” or “down”) in computer memory. And really, little-endian layout makes more logical sense overall. But as a result of this early prejudice, big-endian layout has become baked into our very TCP/IP networking protocols.
I started programming in 1985 on an Apple ][ knock off (I was living on the other side of the iron curtain). I've seen this, or a very similar thing a couple of years later. Back then I was only programming in BASIC, so this looked like magic to me. Unfortunately, I didn't make a copy and when I started dabbling in assembly a couple of years later, I couldn't find it. It is an amazing piece of software and I don't know why it wasn't more popular. Thanks for the memories! :)
@@TeaLeavesProgramming We were using Pravetz 82 and its predecessor IMKO-2. As far as I know they were pretty close to the originals. I think even the CPU and the other chips were full copies, but manufactured in Bulgaria. They were pretty expensive so it was very rarely people actually owned them. We had to go to schools and other places to be able to use them.
Yeah I remember those times, I was obsessed with machine code, knew the instructions of a few CPU-s (6502, z80, 6800) as codes - crazy times. As for the simulator, I am pretty sure I saw it in the mid 80's or at least something looking quite similar.
I saw this program back in the 80's running on an actual Apple IIe. I don't know who wrote it. A few years ago I wrote a 6502 emulator, and then when on to write an Apple II emulator on top of it. Once I got the graphics and the Disk II emulation running, I went and found this simulator and ran it. I realized that I was watching a 6502 simulator running on a 6502 emulator! How meta is that???
This disk is listed in the 1986 MECC catalog: Apple Assembly Language | Advanced Programming | These comprehensive materials provide the basis for an introductory course in Apple assembly language. In addition to lesson outlines, handouts, and 36 sequenced student exercises, this package features six utility programs to aid the beginning or advanced assembly language programmer. Among these utilities are a powerful debugging tool and an animated simulation of the 6502 microprocessor. Apple 48K* No. T-691 .................. $49.00
Yep! I have been unable to find a copy of the actual instructional materials - a few libraries had them, but no longer do. And I found one person online who had been selling a physical copy years ago, but I was unable to connect with him. What a shame.
After over a decade of watching 8bit retro computing videos on RUclips, how have I never seen this before? Since I finally got the recommendation you get a belated sub. Looking forward to catching up on the rest of your content.
I imagine some people wonder why anyone would care about such old tech. But the beauty of the Apple II, was you could understand everything it did for the most part. Read the Reference manual, the DOS manual, and other manuals, and you know what it's doing. I am a software engineer since the 80s, who got his start with time shared BASIC and Apple II, and since then, programming has gotten increasingly black box. In fact, the HP 2000, not sure?) Something doesn't work, and you don't really know why, you can't necessarily debug what's wrong. I think some people love an environment where you can still understand what the computer is doing. Consider a modern Windows computer. You type something into a console window. And it seems simple, except who knows how many APIs, system calls, device drivers, and whatnot, had to happen, just to print out those characters. I often thought it would be interesting to write a book whose only goal, was to explain what happened, when you type in a command to the console, in terms of how the characters are displayed in the window, programs are run, and output is funneled back to window. If you understood all that stuff from Windows calls, lower level system calls, device drivers, etc. you would understand a modern computer really well. But I couldn't even write that book with my current knowledge ( I would come closer, if it was Linux.) Anyway, my point is even stuff that looks simple, is due to a complex pyramid of code on top of code. Where in the Apple II days, much simpler. Harder in a lot of ways as so little code was available to leverage, but also a lot simpler too.
Or consider the Raspberry Pi, which is probably the closest you can come to that old-school hacker experience with modern technology. Everything about it is based on off-the-shelf technology, including the open-source Linux OS. One major improvement, though: instead of typing in BASIC with line numbers, you can type multiple lines of code in Python and other languages into a Jupyter notebook. That is just as interactive as any vintage BASIC interpreter, and more.
Impressive and funny. This 6502 simulator clearly shows how 6502's registers work. I wish I could have seen it working when I started to learn 6502 machine language. Thank you!
I got my programming start in 1988 with a surplus Rockwell AIM 65. I wrote an algorithm to detect engine knock from a knock sensor. It's still in use today in all my ignition timing controllers. The target processor was the MC68SEC811E2FN, which had 2k of securable EEPROM. I had a "Fat Mac" and used Red Ryder to communicate with the 6811 dev system. I eventually ported it to a 9s12C32. I'm still using assembly. I have tried a few times to learn C but always give up.
Anyone with assembly experience should be able to pick up C relatively easily. I would recommend starting with procedural code and not initially attempting event driven code like Windows.
Sure looks like visual computer 6502. Looks exactly like what I remember from early 80s. I loved it as a kid learning to program. Likely found on some pirate board, I don't think I ever saw the retail package. You had me laughing when you couldn't use assembly. I had no problem reading the hex as you typed it in... decades later and most of the machine code hex values are still available.
Dan Patch was a famous harness horse from the early 1900's. So I'm guessing the name was used as a pseudonym for this program. Side note: He is referenced in the song 'Ya Got Trouble' from 'The Music Man', which is how I have heard of him.
Great video! The size of each file in the catalog is reported in sectors. In DOS 3.3 there are sixteen of them per track and each holds 256 bytes. At 35 tracks per disk that's 143,360 bytes or 140 kilobytes per disk.
Found this video few days ago and played around with the 6502 Simulator. It crashes when tracing itself (start address $4000) and that ALU line in the upper left of the screen doesn't look right as well. It's my first time using an Apple II emulator or getting in touch with an Apple 8bit system at all, and I was curious to see if this program would port to the C64. The screen size fits nicely, but the Apple seems to blit characters at any pixel position, not limited to the 40x24 character grid. All characters in strings have the high bit set, I ran the program through an AND $7F filter to make all text readable in the hex editor. Other than that, the Simulator calls the dis/assembler in the Monitor ROM which isn't a lot of code (but copyrighted by an existing company). Most of the Simulator code is updating the screen, the real work is done by Woz.
Another clue that this may be fairly old is that the second diskette you found ("The 6502 Simulator Monitor Tutorial") appears to include EDASM, which is one of the earliest editor/assembler packages for the Apple II, dating back to 1979. By the mid-80s there were much better assemblers available (Merlin, for example) and I'd imagine any post-80s system would use something that also offered a screen editor, rather than a line editor. (Then again, maybe the Apple II crowd never got into screen editing outside of word processors; Merlin's editor was also a line editor.) If you want to see a bit more about EDASM, I wrote an article about it a while back: "Going Back to EDASM, the 1980 Apple II Editor/Assembler." It should come up at or near the top of any web search; I don't include the URL here because RUclips seems to quietly kill any comments where I do.
Thank you, Curt! If you reach out to me with the URL by DM at @peterb@mathstodon.xyz, I will add it to the description of the video. I look forward to reading it.
Ok, this is blowing my mind. I have been looking for this program (kind of) for decades. I had something like this for my Commodore 64 when I was a kid. I can't for the life of me remember the name. I am almost sure I got it out of a bargain bin at K-Mart. Every few years I go on a hunt for it and come up empty. In my memory, it was very similar to what you showed here. Except you could edit the code in it, and it had sound effects. I feel like I can still hear it 40 years later. If anyone has any idea what that program was or any clues, I am desperately interested in seeing it run again. I feel like there's a chance they are related or one is inspired by the other.
Hi! I just came across this video and your channel. This program is very intriguing and looks awesome! I'm more of a C64 guy, but this program could have been very helpful to me in a lot of my projects. Obviously there are some great modern tools, but it's fascinating seeing an old tool like this. Thanks for the great watch. Subbed!
Glad you liked it! I don’t know much about the C64 but it seems to me there’s no conceptual reason a similar app shouldn’t exist there. If you find one, please let us know!
I have a vague recolection of having this disk. Would have been around 83-85. It made it out to Seattle by then at least. I wouldnt have bought it. Maybe downloaded it from a BBS?
You may have invoked the mini Assembler with "!", depending on your Apple model. Modern Apples (//c, //e Enhanced, //c+, //gs) all allowed "!" to invoke it. I've seen this simulator on a Disk from someone in the UK. I'm not really sure who made this.
This is great and even passes as suitable for kids. Back then it really took an adolescent to grok it all, but here everything is openly visible and can teach the basics to much younger kids.
Got started in 79 with an 'Exidy' system that used a Z80. Only later in the late 80's did I shift to the 6510 (very similar to 6502) on the C-64. Those were some heady days, going to swap meets and stuff, trading printouts of programs and cassette tapes. My how the world has changed. lol
@@TeaLeavesProgrammingYeah, was interesting. They put small board with ROM in a case that basically looked like an 8-track tape cartridge. One had a BASIC interpreter but I sprang for a second one that had an assembler/ monitor/ debugger. Power it off, pop out one cartridge and pop in the other. Of course later on that was ubiquitous with Nintendo and all, but at the time it was innovative. Friend had a TRS-80 and we managed to interconnect so we could share BASIC programs (with a few minor edits and POKE instruction changes) And the old 'Kansas CIty' audio tape interface to save your work. (When I got a C-64 with actual floppies, I thought I was in heaven. lol)
So, where can I download it? Are there any similar visual simulators out there you know of? I couldn't find any... I think such visualization is great for learning the assembly and the architecture (and for writing an 6502 emulator).
Neat. I guess this means that the 6502 has a debug interrupt? Might be fun to implement something like that now for x86's. I've seen a couple of projects wrap gdb and that would probably be the easier approach than writing something from scratch, but using the terminal and having the interface be purely textual would certainly be a cool aesthetic. Although, I wouldn't want it to be monochromatic, even just two or three colors would be great.
No, this is just a simulator in software. No interrupts or traps or anything. There are tons of simulators for the 6502, Z80, 68K, and what have you. Most of them written later than 1982 though.
@@herrbonk3635 But how is it implemented? If it's running through the program without the aid of a debug interrupt, then I wouldn't call that a simulator but rather an emulator, though I can't imagine it running at this speed on period correct hardware. The only way I can see it running at this kind of speed is if it was running as a debugger. I'll have to download a copy and disassemble it I guess.
@@anon_y_mousse Where in the video does it run at high speed? I only saw a very slow speed, but I might have missed it. Not sure how you mean, but a simulator does not have to be fast. An emulator on the other hand is usually full speed, as it _emulates_ (replaces) a CPU or computer. Back in the days, emulators were usually hardware based (such as in development systems for embedded system and such). Simulators were more like this, i.e. used to study flags, registers and internal status in a slower pace.
@@herrbonk3635 Unless he wasn't running it on the actual hardware it was fast. Because if it was running on period correct hardware and it was emulating or simulating then it should have been much slower. You might be using the incorrect definition for one or both of those terms, though.
@@anon_y_mousse How do you mean? How can a few instructions per second or something like that be considered "fast"? Do you think this is an analog spice simulation at the transistor level or something? That would be expensive. But this is a simple digital simulation. (There are no formal "definitions" of emulator or simulator. Perhaps some attempt in your favourite textbook, but certainly not in the 1980s.)
Yeah, that was my first step (but walking through with a hex editor and not finding anything doesn't make for compelling video :-) It makes sense that there wouldn't be anything, though - this software shipped in a box, with a 111 page manual, and was expected to be used in schools. No need to be clever or hide messages in that case.
@@TeaLeavesProgrammingI'll see if I can dig them up, I'm not a great note taker but I probably have some material from the class. Not only that, what were the nine Microprocessor classes at my school when I went there have been consolidated down to a single class. I have been teaching that class for the last 24 years. When I took over the class was Z80 assembly. I converted the class to C on a PIC18 a few years in, then we switched to C/C++ on a PIC32 (chipKIT) and this year I just changed to Pico Pi.
I had that software, but I do not remember the time. Should be in the early 80's cause I remember mine is on cassette tape. I did not own any floppy drive at that moment. I just loaded it up and run it a couple times. I found it was interesting but not very useful at all. I can CALL -151 and go to the monitor program, then I can enter assemble code instead.
I think the value of it is showing the concepts of how data is fetched (and stored) into addresses. Imagine you didn't know how the CPU worked; that's what they're trying to explain.
Reminds me, I copied the monitor ROM and then the mini-asm and ported them to my Atari 800XL too. I'd spent months typing in programs in hex before realizing I could use asm mnemonics...
@@TeaLeavesProgrammingSOmeone posted all those great episode of BITS and Bytes on youtube. You'll probably have to go through them. Of course, it won't show up on episodes on sound or music or graphics so you can skip those, but I'm pretty sure there was an episode on assembly and showed some 6502 emulator.
Interesting video but...... It'd be a lot better if you'd add the URL for the disk into the description instead of only having it in the video. It's kinda hard to copy-and-paste from the screen like that :) Also a link to the blog article would be helpful.
I was definitely an Apple ][ hacker back in the day. Would hand code asm programs into hex during class and take them to the Apple ][ lab at the nearby community College that let me use it after school and spend a long time in the monitor debugging my little program. I would have killed for this and have never seen anything like it before. Males me want to get back at Apple ][ hacking again!
apl6502 sim bsc This is a small (but interesting) program that I picked up off a bulletin board a while back but thought it may still be of interest. It will take a program, piece of code, or just start from an address in memory and visually step through its execution. Might be helpful to someone learning assembly or maybe even as a low-level (where does my program go?) debugger. The BBS didn't have any docs for it nor do I have any information on the author, but it appears to be public domain and I am fairly sure that it will run on any II {+,e,c,gs}. It is a bit fast on an 8MHz //c however ;-). Packaged with binscii but not shrinkit'ed. PS. This was meant to be run from DOS, but will function from Prodos basic except that it will crash into the monitor when you quit. Maybe someone out there can patch it to alleviate this minor problem.
Wow. I can't believe this existed in 1982 and nothing like this became a part of everyone's 6502 educational tools for another decade or two.
I know. This would have been so helpful for me back then.
I worked at MECC when that was built. My recollection is that it was written by Anders McCarthy and possibly with the help of Eric Rantapa. It was the best of times. We had a cadre of young brilliant coders with a love of technology. I learned many amazing things from those days. They were mostly also attending UofM and way ahead of where the college curriculum was.
@RussErickson_v1 thank you so much for chiming in! If you have any way to reach Anders or Eric, I'd love to reach out to them to interview them. Let me know. Best way to contact me is to reach me on Mastodon at @peterb@mathstodon.xyz.
@@TeaLeavesProgramming Eric is still living in the Minneapolis area. I will pass along your contact information.
An ad appear the exact moment you pressed enter on the keyboard, and for a second I was utterly confused and had no idea what had happened. The timing was just too perfect.
I wish I could say it was intentional!
I can confirm that the 6502 simulator existed in the 80‘s. During my time as a student, around 1982…1984 I was lucky to get my hands on an Apple ][ owned by the university and also came across this really amazing piece of software. It helped me in understanding machine language and not much longer I started to write assembler and BASIC applications for the Apple ][. Memories, memories!
That's a great story, Henry! I'd love to hear about what some of your applications were, if you're willing to talk about them.
@@TeaLeavesProgramming I had a project to implement graphics characters in parallel to the normal upper case character set of the Apple ][, like the ones used in the Commodore machines (PET, C64, CBM xxxx). For this I wrote a BASIC program for creating and modifying the Apple’s character ROM contents (a copy in RAM of course). In the end I could burn an EPROM that contained upper/lowercase and graphics characters much like Commodore machines. Then I wrote a machine language/assembler routine that parsed the BASIC command input of a running program and intercepted the „GRAPHICS“ command that enabled the changed character set - voila, graphics on the text screen! Wrote some BASIC games as well, like a „Sokoban“ clone, using my enhanced graphics charset, so it was just for my purposes and would show funny characters on an unmodified Apple machine. The most ambitious project, with some friends, was a modified and enhanced DOS that supported 40/80 track floppy drives and offered a much faster R/W speed. Listed programs could be started by bringing a cursor into the line with the up/down arrow keys and pressing „Enter“. That‘s the kind of stuff we did in these days - was great fun!
Looks like a good system, but I wrote in assembly (Z80, 6502, 8086, 68K) for decades before I understood what a (or this) "monitor" was :D
I love the idea of the Data pulsing from point to point. I may add something like this in my C64 Blitzmax Emulator which also shows how the 6502/6510 runs step by step.
Interesting...not quite emulating the 6502 properly.
Once the LSB of the address of LDA $0800,X has been loaded, while the processor loads the MSB (08) the X is simultaneously being added to the LSB.
During the next cycle the created address (read MSB plus modified LSB) is read whilst internally the processor checks the carry flag and increases the MSB if necessary. If the MSB was increased the read data is thrown away and the read of the correct address is done on the next clock cycle.
This is why crossing page boundaries on reads take an extra cycle.
On a write to avoid potentially splatting memory the 6502 does not do a write before it has checked the carry flag (it possibly does a read) and so a write (on an indexed address) always takes the extra cycle.
Being little endian it means the 6502 can start modifying an indexed address whilst the address is still loading, thus improving efficiency.
Thanks for the color on that!
Wow, you know a lot about that old stuff :) I built a simple, 5 bit CPU in the PC program Logic World. And I gained a lot of appreciation for the skills of early microprocessors designers, working out all that logic, with no assists. And getting all the timing correct, etc.
@@michaelbauers8800
The first processor I learnt to program was the 6502 (then the Z80, 68000 and GEC 4000 series [this latter in Babbage though I was starting to transition to direct assembler]).
As the machines I started on had no assembler I learnt 6502 machine code ops and could read/write directly in hex.
Why does the very naming of Endian ridicule this technical detail? All Intel processors are little Endian, too. Later RISC CPUs had a data bus of the same size as their registers.
Only Motorola uses big Endian for no reason. I mean I could understand if the top 16 bit would be written first onto the address bus, and used to select pages or chips. But why would a page be as large as 64 kB, or a chip as small ( ROM ? ).
Maybe internet router read the 128 bit tcp/ip address Bit by Bit and can start to route early. But I am pretty sure that thanks to error correction and clock synthesis the physical layer delivers long words despite a serial data input.
@@ArneChristianRosenfeldt The only rationale I have ever heard for big-endian ordering is that it lets you read memory dumps from left to right. That’s it. They forget that there is no “left” or “right” (or indeed, “up” or “down”) in computer memory. And really, little-endian layout makes more logical sense overall.
But as a result of this early prejudice, big-endian layout has become baked into our very TCP/IP networking protocols.
I started programming in 1985 on an Apple ][ knock off (I was living on the other side of the iron curtain). I've seen this, or a very similar thing a couple of years later. Back then I was only programming in BASIC, so this looked like magic to me. Unfortunately, I didn't make a copy and when I started dabbling in assembly a couple of years later, I couldn't find it.
It is an amazing piece of software and I don't know why it wasn't more popular. Thanks for the memories! :)
I have seen some of those Soviet-era Apple II clones and have always been curious about what it was like to use them. Thanks for the reminiscence.
@@TeaLeavesProgramming We were using Pravetz 82 and its predecessor IMKO-2. As far as I know they were pretty close to the originals. I think even the CPU and the other chips were full copies, but manufactured in Bulgaria.
They were pretty expensive so it was very rarely people actually owned them. We had to go to schools and other places to be able to use them.
Yeah I remember those times, I was obsessed with machine code, knew the instructions of a few CPU-s (6502, z80, 6800) as codes - crazy times. As for the simulator, I am pretty sure I saw it in the mid 80's or at least something looking quite similar.
To Keep the population dumb
This simulator dates back to the '80s. I had it and I did Apple II stuff just until I got my Atari Mega ST in 1988.
I never had an Atari ST, but always loved it.
I saw this program back in the 80's running on an actual Apple IIe. I don't know who wrote it.
A few years ago I wrote a 6502 emulator, and then when on to write an Apple II emulator on top of it. Once I got the graphics and the Disk II emulation running, I went and found this simulator and ran it. I realized that I was watching a 6502 simulator running on a 6502 emulator! How meta is that???
That's awesome!
Was your emulator ever released to the wild?
This disk is listed in the 1986 MECC catalog: Apple Assembly Language | Advanced Programming | These comprehensive materials provide the basis for an introductory course in Apple assembly language. In addition to lesson outlines, handouts, and 36 sequenced student exercises, this package features six utility programs to aid the beginning or advanced assembly language programmer. Among these utilities are a powerful debugging tool and an animated simulation of the 6502 microprocessor.
Apple 48K*
No. T-691 .................. $49.00
Yep! I have been unable to find a copy of the actual instructional materials - a few libraries had them, but no longer do. And I found one person online who had been selling a physical copy years ago, but I was unable to connect with him. What a shame.
After over a decade of watching 8bit retro computing videos on RUclips, how have I never seen this before? Since I finally got the recommendation you get a belated sub. Looking forward to catching up on the rest of your content.
Thanks so much for the kind words, Mike!
I have also just subscribed but not for the content that i dont know but for the correct approach in solving mysteries :)
I imagine some people wonder why anyone would care about such old tech. But the beauty of the Apple II, was you could understand everything it did for the most part. Read the Reference manual, the DOS manual, and other manuals, and you know what it's doing. I am a software engineer since the 80s, who got his start with time shared BASIC and Apple II, and since then, programming has gotten increasingly black box. In fact, the HP 2000, not sure?) Something doesn't work, and you don't really know why, you can't necessarily debug what's wrong. I think some people love an environment where you can still understand what the computer is doing. Consider a modern Windows computer. You type something into a console window. And it seems simple, except who knows how many APIs, system calls, device drivers, and whatnot, had to happen, just to print out those characters. I often thought it would be interesting to write a book whose only goal, was to explain what happened, when you type in a command to the console, in terms of how the characters are displayed in the window, programs are run, and output is funneled back to window. If you understood all that stuff from Windows calls, lower level system calls, device drivers, etc. you would understand a modern computer really well. But I couldn't even write that book with my current knowledge ( I would come closer, if it was Linux.) Anyway, my point is even stuff that looks simple, is due to a complex pyramid of code on top of code. Where in the Apple II days, much simpler. Harder in a lot of ways as so little code was available to leverage, but also a lot simpler too.
Thanks for the insight.
Or consider the Raspberry Pi, which is probably the closest you can come to that old-school hacker experience with modern technology. Everything about it is based on off-the-shelf technology, including the open-source Linux OS.
One major improvement, though: instead of typing in BASIC with line numbers, you can type multiple lines of code in Python and other languages into a Jupyter notebook. That is just as interactive as any vintage BASIC interpreter, and more.
Some very cool stuff is out there for people to play with@@lawrencedoliveiro9104
@@lawrencedoliveiro9104 Yeah, but you can always use a better language like C and one of the C shells if you want immediate interactivity.
@@anon_y_mousse Speaking of which, you can enter and run C++ code incrementally in a Jupyter notebook. Not sure if a C kernel is available.
Impressive and funny. This 6502 simulator clearly shows how 6502's registers work. I wish I could have seen it working when I started to learn 6502 machine language. Thank you!
You and me both!
I was student from 1984 to 1989. Probably second year in university I saw this program. For 5 min. I learn as much as 5-6 lectures for computer CPU's.
I got my programming start in 1988 with a surplus Rockwell AIM 65. I wrote an algorithm to detect engine knock from a knock sensor. It's still in use today in all my ignition timing controllers. The target processor was the MC68SEC811E2FN, which had 2k of securable EEPROM. I had a "Fat Mac" and used Red Ryder to communicate with the 6811 dev system. I eventually ported it to a 9s12C32. I'm still using assembly. I have tried a few times to learn C but always give up.
Anyone with assembly experience should be able to pick up C relatively easily. I would recommend starting with procedural code and not initially attempting event driven code like Windows.
That's beautiful. I can imagine this running on a monitor in the background of my office because ... it's beautiful.
I'm c64 guy, and I like this symulator a lot.
I would love to learn more about the development environment on the C64.
Would be super cool to port the simulator to the C64!
@@AdamSommer70 And the PET/CBM.
Maybe this is something to show The 8bit Guy. He has written a bit of code for the C64 and this might be something he would tackle?
Sure looks like visual computer 6502. Looks exactly like what I remember from early 80s. I loved it as a kid learning to program.
Likely found on some pirate board, I don't think I ever saw the retail package.
You had me laughing when you couldn't use assembly. I had no problem reading the hex as you typed it in... decades later and most of the machine code hex values are still available.
It does look like that, but is actually a different package.
Wow! I'm impressed. I will use this when I create a new 6502 tutorial.
Excellent - please drop by and link it here once you go!
This channel is a gem keep it up mate.
Thanks!
Dan Patch was a famous harness horse from the early 1900's. So I'm guessing the name was used as a pseudonym for this program. Side note: He is referenced in the song 'Ya Got Trouble' from 'The Music Man', which is how I have heard of him.
Yeah, I think in retrospect this was a pseudonym for someone who pirated the program.
Dan Patch (the horse) was from the Minneapolis area and that name appears in many business and street names.
Thank you,@@dnwheeler !
Wow. Seeing it in action, makes all that learning visual. I gotta have this. 😁
Enjoy!
Great video! The size of each file in the catalog is reported in sectors. In DOS 3.3 there are sixteen of them per track and each holds 256 bytes. At 35 tracks per disk that's 143,360 bytes or 140 kilobytes per disk.
Awesome that you managed to solve the mystery at the last second!
I agree!
Found this video few days ago and played around with the 6502 Simulator. It crashes when tracing itself (start address $4000) and that ALU line in the upper left of the screen doesn't look right as well. It's my first time using an Apple II emulator or getting in touch with an Apple 8bit system at all, and I was curious to see if this program would port to the C64. The screen size fits nicely, but the Apple seems to blit characters at any pixel position, not limited to the 40x24 character grid. All characters in strings have the high bit set, I ran the program through an AND $7F filter to make all text readable in the hex editor. Other than that, the Simulator calls the dis/assembler in the Monitor ROM which isn't a lot of code (but copyrighted by an existing company). Most of the Simulator code is updating the screen, the real work is done by Woz.
Thanks for your comments!
Another clue that this may be fairly old is that the second diskette you found ("The 6502 Simulator Monitor Tutorial") appears to include EDASM, which is one of the earliest editor/assembler packages for the Apple II, dating back to 1979. By the mid-80s there were much better assemblers available (Merlin, for example) and I'd imagine any post-80s system would use something that also offered a screen editor, rather than a line editor. (Then again, maybe the Apple II crowd never got into screen editing outside of word processors; Merlin's editor was also a line editor.)
If you want to see a bit more about EDASM, I wrote an article about it a while back: "Going Back to EDASM, the 1980 Apple II Editor/Assembler." It should come up at or near the top of any web search; I don't include the URL here because RUclips seems to quietly kill any comments where I do.
Thank you, Curt! If you reach out to me with the URL by DM at @peterb@mathstodon.xyz, I will add it to the description of the video. I look forward to reading it.
Ok, this is blowing my mind. I have been looking for this program (kind of) for decades.
I had something like this for my Commodore 64 when I was a kid. I can't for the life of me remember the name. I am almost sure I got it out of a bargain bin at K-Mart. Every few years I go on a hunt for it and come up empty.
In my memory, it was very similar to what you showed here. Except you could edit the code in it, and it had sound effects. I feel like I can still hear it 40 years later.
If anyone has any idea what that program was or any clues, I am desperately interested in seeing it run again. I feel like there's a chance they are related or one is inspired by the other.
Wow, how interesting! If you ever do track it down please come back and link to it!
Hi! I just came across this video and your channel. This program is very intriguing and looks awesome! I'm more of a C64 guy, but this program could have been very helpful to me in a lot of my projects. Obviously there are some great modern tools, but it's fascinating seeing an old tool like this. Thanks for the great watch. Subbed!
Glad you liked it! I don’t know much about the C64 but it seems to me there’s no conceptual reason a similar app shouldn’t exist there. If you find one, please let us know!
I think it was me asking about it few days ago. Thanks for quick video. :D
Your question was absolutely the inspiration for this, so thank you!
I have a vague recolection of having this disk. Would have been around 83-85. It made it out to Seattle by then at least. I wouldnt have bought it. Maybe downloaded it from a BBS?
You may have invoked the mini Assembler with "!", depending on your Apple model. Modern Apples (//c, //e Enhanced, //c+, //gs) all allowed "!" to invoke it. I've seen this simulator on a Disk from someone in the UK. I'm not really sure who made this.
This is great and even passes as suitable for kids. Back then it really took an adolescent to grok it all, but here everything is openly visible and can teach the basics to much younger kids.
That is nifty simulator indeed, this would be so useful to debug.
Got started in 79 with an 'Exidy' system that used a Z80. Only later in the late 80's did I shift to the 6510 (very similar to 6502) on the C-64. Those were some heady days, going to swap meets and stuff, trading printouts of programs and cassette tapes. My how the world has changed. lol
I always wanted to learn more about the Exidy Sorcerer than I did. Really interesting company.
@@TeaLeavesProgrammingYeah, was interesting. They put small board with ROM in a case that basically looked like an 8-track tape cartridge. One had a BASIC interpreter but I sprang for a second one that had an assembler/ monitor/ debugger. Power it off, pop out one cartridge and pop in the other. Of course later on that was ubiquitous with Nintendo and all, but at the time it was innovative.
Friend had a TRS-80 and we managed to interconnect so we could share BASIC programs (with a few minor edits and POKE instruction changes)
And the old 'Kansas CIty' audio tape interface to save your work. (When I got a C-64 with actual floppies, I thought I was in heaven. lol)
So, where can I download it?
Are there any similar visual simulators out there you know of? I couldn't find any...
I think such visualization is great for learning the assembly and the architecture (and for writing an 6502 emulator).
It’s on the Asimov Apple II archive
this shows how animation helps for an emulation
Yes, exactly!
Of COURSE it was from MECC. ;). Those guys rocked.
They did!
I remember there was a similar stepper tool but much more compact and text only. No idea of its name.
Neat. I guess this means that the 6502 has a debug interrupt? Might be fun to implement something like that now for x86's. I've seen a couple of projects wrap gdb and that would probably be the easier approach than writing something from scratch, but using the terminal and having the interface be purely textual would certainly be a cool aesthetic. Although, I wouldn't want it to be monochromatic, even just two or three colors would be great.
No, this is just a simulator in software. No interrupts or traps or anything. There are tons of simulators for the 6502, Z80, 68K, and what have you. Most of them written later than 1982 though.
@@herrbonk3635 But how is it implemented? If it's running through the program without the aid of a debug interrupt, then I wouldn't call that a simulator but rather an emulator, though I can't imagine it running at this speed on period correct hardware. The only way I can see it running at this kind of speed is if it was running as a debugger. I'll have to download a copy and disassemble it I guess.
@@anon_y_mousse Where in the video does it run at high speed? I only saw a very slow speed, but I might have missed it. Not sure how you mean, but a simulator does not have to be fast. An emulator on the other hand is usually full speed, as it _emulates_ (replaces) a CPU or computer. Back in the days, emulators were usually hardware based (such as in development systems for embedded system and such). Simulators were more like this, i.e. used to study flags, registers and internal status in a slower pace.
@@herrbonk3635 Unless he wasn't running it on the actual hardware it was fast. Because if it was running on period correct hardware and it was emulating or simulating then it should have been much slower. You might be using the incorrect definition for one or both of those terms, though.
@@anon_y_mousse How do you mean? How can a few instructions per second or something like that be considered "fast"? Do you think this is an analog spice simulation at the transistor level or something? That would be expensive. But this is a simple digital simulation.
(There are no formal "definitions" of emulator or simulator. Perhaps some attempt in your favourite textbook, but certainly not in the 1980s.)
Just in case did you try checking the binary for any ascii strings that might be hidden?
Yeah, that was my first step (but walking through with a hex editor and not finding anything doesn't make for compelling video :-)
It makes sense that there wouldn't be anything, though - this software shipped in a box, with a 111 page manual, and was expected to be used in schools. No need to be clever or hide messages in that case.
Nice find! Thanks for sharing!
Thanks for watching!
Wow, that's cool. Never seen anything like that for Apple II.
Now I'm wondering if something like this existed on other platforms. Is there a Z-80 version?
The simulator is super cool!! Great video!
Thank you 👍
This is not new. it's old. I definitely saw this in the 80's.
thanks!
Do did I. I used this, or something that looked very much like it in the 80's.
A few years back I found something similar online (but recently written). It was hugely helpful! Unfortunately, I lost the website address.
Isn't that frustrating when that happens?
This program makes thinking in 6502 less abstract.
Glad you liked it!
I swear I saw that as as teen in france, I had it in the early 80s, I can guarantee that!
Merci beaucoup!
I used this simulator in my 6502 assembly class I took in 1989.
If you still have the class notes, please share them with us!
@@TeaLeavesProgrammingI'll see if I can dig them up, I'm not a great note taker but I probably have some material from the class. Not only that, what were the nine Microprocessor classes at my school when I went there have been consolidated down to a single class. I have been teaching that class for the last 24 years. When I took over the class was Z80 assembly. I converted the class to C on a PIC18 a few years in, then we switched to C/C++ on a PIC32 (chipKIT) and this year I just changed to Pico Pi.
This reminds me of the "Visible Computer: 6502" but that doesn't have as much detailed tracing.
Yes, very much so - I even had a clip comparing it to that, but decided that it interfered with the flow of the video too much, so I left it out.
What're the 2 bits just to the left of the word "Accumulator"?
Those are the 8-bit contents of the accumulator, otherwise known as the A register.
Very cool! Thank you
Thanks for watching!
That is cool. Thanks for sharing.
You bet!
That is seriously cool
Glad you liked it!
Very nice :) the first Vixual Studio :), probably somebody bought it :)
I had that software, but I do not remember the time. Should be in the early 80's cause I remember mine is on cassette tape. I did not own any floppy drive at that moment. I just loaded it up and run it a couple times. I found it was interesting but not very useful at all. I can CALL -151 and go to the monitor program, then I can enter assemble code instead.
I think the value of it is showing the concepts of how data is fetched (and stored) into addresses. Imagine you didn't know how the CPU worked; that's what they're trying to explain.
I remember using this back in high school, would've been 1982-1984.
Reminds me, I copied the monitor ROM and then the mini-asm and ported them to my Atari 800XL too. I'd spent months typing in programs in hex before realizing I could use asm mnemonics...
You ported the mini-assembler? That's fantastic!
*I thought this was shown on that BIT & BYTES TV show back in 1984?*
I wasn't aware of that, John - Do you have a link to a specific episode?
@@TeaLeavesProgrammingSOmeone posted all those great episode of BITS and Bytes on youtube. You'll probably have to go through them. Of course, it won't show up on episodes on sound or music or graphics so you can skip those, but I'm pretty sure there was an episode on assembly and showed some 6502 emulator.
very cool indeed, i just found microm8, it is such a good emulator!
I haven’t tried that one yet, but I will look it up!
that is beautiful
Interesting video but......
It'd be a lot better if you'd add the URL for the disk into the description instead of only having it in the video. It's kinda hard to copy-and-paste from the screen like that :) Also a link to the blog article would be helpful.
That is a nifty simulator
I wish I had found it back in 1982!
They probably used it to debug their Polybius arcade game lol
11:33 You are simulating an 8086 PC on a 6502 😉
Nice eye - 8086!
It's 8bit data bus, so if use 8088 , it's more match.
I LOVE 6502 👍🥂🎩
You and me both!
😱👍👍👍
Thanks!
I was definitely an Apple ][ hacker back in the day. Would hand code asm programs into hex during class and take them to the Apple ][ lab at the nearby community College that let me use it after school and spend a long time in the monitor debugging my little program. I would have killed for this and have never seen anything like it before. Males me want to get back at Apple ][ hacking again!
No time like the present!
Amarzing
🙀
Perhaps it's an early version of WozMon.
I watched half way, started searching and only now i read its solved - i started looking for two budhe games edit prodos and found one bbs info:
apl6502 sim bsc
This is a small (but interesting) program that I picked up off a bulletin
board a while back but thought it may still be of interest. It will take a
program, piece of code, or just start from an address in memory and visually
step through its execution. Might be helpful to someone learning assembly
or maybe even as a low-level (where does my program go?) debugger.
The BBS didn't have any docs for it nor do I have any information on the
author, but it appears to be public domain and I am fairly sure that it will
run on any II {+,e,c,gs}. It is a bit fast on an 8MHz //c however ;-).
Packaged with binscii but not shrinkit'ed.
PS. This was meant to be run from DOS, but will function from Prodos basic
except that it will crash into the monitor when you quit. Maybe someone
out there can patch it to alleviate this minor problem.