BigDumbDinosaur wrote:
Ah, yes. Much more readable. For a little coding exercise, you could add to the memory dump to also display the bytes as ASCII characters, as well as hex. I've found that useful many times during debugging sessions. You can see that in the Supermon 816 memory dump.
You mean like this?
BigDumbDinosaur wrote:
You need to resist that temptation to fill the screen with “stuff.” The more you put there, especially if unrelated, the more likely you will misinterpret something at some point and drive yourself nuts. A machine language monitor is, by nature, a very low-level look into what the computer is doing. If you have to get into the M/L monitor to debug a program (I've often referred to that as “running down into the basement to check the furnace”), you will want to limit the volume of information on the screen to whatever it is relevant to the task on which you are working.
Very true. I am doubly seeing this as my 'operating system'. Computers from the 80's used BASIC, I'm wanting to stick to Assembly-only, yet still have 'macros' like loading from disk/tape/card, etc. This isn't DOS/UNIX because I'm not moving files around, but I am moving data around. Instead of 'dir/ls' I have 'page'. Instead of 'mv' I have 'move'. Etc.
BigEd wrote:
The model for me is that of the 747 cockpit or the Apollo capsule - the aim is for an expert to have complete mastery. Expect a learning curve. (The opposite idea would be the snack vending machine, where any novice can wander up and get what they want.)
Excellent distinction. Haha, I don't know if I'll ever look at snack machine the same now, lol! I'm going for something in between I suppose. A car's dashboard is probably close to what I'm thinking. Useable by most everyone, but still needing a bit of training. (I still can barely use the UI on my newer car...)
John West, checked that out and found it. I of course can't dig very deep with DuckDuckGo search images, but it's at least an idea. Thanks.
Proxy wrote:
instead of trying to squeeze everything onto the screen at once, why not have a system similar to browser tabs that you can switch between with using the F keys?
for example the default "tab" on F1 would be your fullscreen main memory viewer/editor, F2 could be the Zero Page and Stack, F3 could be your disassembler.
if you're feeling fancy you could have all of them update even when not visible, so you don't need to re-enter a command to see changes. i could imagine that being useful for single-stepping code using another function key or similar (example: sit on the ZP/Stack tab while steeping through, switch back to the Disassembler tab and see where it's executing now).
and if you're feeling really fancy you could allow the user to use the arrow keys to go through memory and edit values directly so they technically don't need to use the basic view/edit commands at all if they don't want to.
Love it! I will be really considering as I keep going forward. Right now I type "CODE" to enter into Assembly mode, but if I just hit F2 or whatever, yeah, that'd be nice. Maybe have the option for both. Right now the ESC key kind of resets, exits, and clears whatever you were doing, so I kinda have a function key for that already.
The arrow key thing I had last time. I do like it, and might go back to that. Good idea. Options without clutter.
So, attached are some new pictures. Implemented BDD's suggestion for the 'ascii' characters. Thing is, if you look close enough, they aren't ascii. They are PS/2 keyboard values. I have been rollin' without ascii this entire time, and so far it's ok. It's heck to do things in a normal assembler, but that's ok because I use C to convert everything back and forth anyways. This particular screenshot is where my assembly lookup table touches the help menu text.
I also switched the bytes and Assembly code, looks closer to BDD's examples, and then added another 'cursor' to help visually.
Lastly, I added a 'string' sequence in the Assembler. It is crude, because you cannot use the literal anywhere you want. Once you use it, it goes into a 'string mode' and that's it, no extra functions. So things like:
LDA #'Q
will not print:
LDA #$15
but will print:
$15
only.
But it's at least a step in the right direction.
Thanks for the suggestions, this is exactly what I needed, and still need more of
Chad
EDIT: Just re-added the memory 'cursor' code, using arrow keys to move it around. The new function BYTE $XX changes the byte at that location (does not increment). I also defaulted older functions to use the cursor location if no other parameters are specified. Attaching the code, again read at your own risk (dying kittens and all that).
EDIT2: Just added the FIND $XX command, which highlights (inverts) one particular byte value in the memory dump. I'm nearly approaching "done" status here. I probably aught to comment now.