rupertavery / et3400-emu Goto Github PK
View Code? Open in Web Editor NEWA Heathkit ET-3400 Emulator written in C#
License: BSD 2-Clause "Simplified" License
A Heathkit ET-3400 Emulator written in C#
License: BSD 2-Clause "Simplified" License
The ET-3400 manual, page 87, "Memory Decoding", "DISPLAY" shows address $C1GS (diGit nibble, Segment nibble) controls the 6 7-segment displays with address bits 3 and 7 "don't care". That means an emulator must decode either 0 or 1 on either of those addresses as addressing the LED. This emulator doesn't do that, as shown in the attached display_test.lst(.txt for GitHub) and display_tst.s19(.txt for GitHub) files. When run on real ET-3400 hardware the program always shows a single segment lit (with no all-blank display ever) as it writes to each possible address. More details are in the listing file.
display_test.txt
display_tst.txt
Edit after initial post: Error in display_test.asm(.txt) -- Change "digit 000 (right) to 110 (left)" to "digit 001 (right) to 110 (left)".
The heathkit debugger allows you to edit memory and continue after hitting a breakpoint. It would be a nice feature to have in the debugger as well.
In the Disassembly window after seeing "$0011: DATA" I expected something to show where it ended. Consider "$0011: DATA First" and "$00FF: DATA Last" to block off the section clearly. The transition from DATA back to code just happens, without a clear reason
The tab is called "Clock Settings" (plural) but there is only one setting. Call the tab "Clock Speed" or "Execution Speed"?
Version 1.0.7 Beta 2. Two issues in one submission. As I recall the Debugger window used to have a "Custom" choice that made it obvious any address could be typed in and that choice isn't given any more. Also, for both Memory and Disassembly I suggest that when "ROM" or "RAM" or other choices are chosen from the list that the corresponding address shows up in the entry field instead of the word ROM or RAM. Always having an address in those fields makes more sense to me than sometimes words, sometimes address values. The words in the list (ROM, RAM...) just seem like shortcuts to typing the corresponding addresses.
I wanted to shrink the Debugger window vertically more than it allows, so I could get the Emulator window underneath it. It can't be done on my monitor, even though it appears the Memory and Disassembly panes can get to about half their current size. I would like it to allow shrinking vertically until the Status pane just fits
Load fsr1.obj and its .map file. Add Comment "Test Comment" at address 0011, where a Data block starts. In the Disassembly panel the comment isn't shown.
In Memory Maps create both a data range (Type = Data) and comment (Type = Comment). To delete either one hovering the mouse pointer over the "-" button says "Remove range" and that does not apply to comments. Suggestion: To agree with the tab being "Memory Maps" and the "Add Memory Map" hover text, make the "-" button hover text be "Remove Memory Map". Likewise make the red-X hover text be "Remove All Memory Maps" and the green-arrow hover text be "Go To Address" (because "Go To Memory Map" doesn't quite work for a range with beginning and end).
I loaded fsr1.obj and its .map file, then wanted to change the Description from "DATA" to "User Data". I couldn't see any way to do so.
With default 100% clock speed, load samp123a.s19 and DO 0000. See the moving single segment. As it runs, slow clock speed to 20%. It slows down, good. Press the emulator RESET key and see CPU uP. Press "DO" and nothing happens. "Reset" the speed to 100% and press "DO". Then it works and shows "_ _ _ _ do.".
Every time I started the app it caught the image of my Desktop icons beneath it. Then they stayed with the window as I moved it around my Desktop. I've never seen anything like this before and it happens every time I start the app on my Windows 7 Desktop.
The Memory and Disassembly panels show ROM and RAM (hardware boundaries) but not all boundaries given on page 87 of the ET-3400 manual: Monitor ROM, Not Usable, Displays, Not Usable, Keyboard, Not Useable, Optional 256 bytes User RAM, 59 bytes monitor RAM, 197 bytes user RAM. A thought: Make the Memory and Disassembly fields address only (remove ROM, RAM and the entire choice selection) and instead load a default Memory Map file that includes all the ET-3400 boundaries mentioned. (I would order them from low numbered address to high, instead of as shown on page 87.) The Disassembly panel then clearly shows how close user program/data is getting to important device boundaries. Consider adding another tab, resulting in Breakpoints, Device Map, and User Map. The Device Map would be the ET-3400 (or ETA-3400?) boundaries. The User Map would be the auto-loaded same-name map functionality done already.
Added after submission: Warnings or red highlighting could be given if user program/data ever appeared in the wrong place, like the Not Usable or ROM areas.
Version 1.0.7 Beta 2. Load fsr1.obj (with no Memory Map file present), DO 0000, see the program running. View, Debugger, in the Disassembly entry type "0100". Disassembly does not show address 0100 and instead stays at 0000. (I submitted this in an earlier email and then it did work the second time the entry was done. Now it doesn't seem to work ever.)
I added the Comment "Another Comment" and see "; BEGIN - Another Comment" in the Disassembly panel. That doesn't make sense since a comment applies to only a single address. I would prefer just "; Another Comment".
This is more of a compliment than an issue: The Disassembly panel is so useful now, showing assembly code and data clearly labeled, that the Memory panel hardly seems necessary. It shows the same program bytes already shown in the Disassembly panel (redundant), merged with data bytes that are already shown in the Disassembly panel (redundant, and more clearly labeled in the Disassembly panel). So I've started viewing the Memory panel only when I want to simultaneously display the assembly code and a block of memory that it is being modified. The Disassembly panel plus Memory Maps is very useful!
Load fsr1.obj and DO 0000 so it runs.
View Debugger.
Load fsr1.map.
Disassemble RAM (see 0000-000F instructions, 0011 "DATA", good).
Then I tried to scroll the Disassembly window by rolling my mouse wheel.
It scrolls the Disassembly choice (since it is still selected) and jumps the Disassembly pane unexpectedly.
I would like to be able to scroll the Disassembly pane (and Memory too?) line-by-line using the mouse wheel.
Seeing disassembled code underneath the dark blue highlight is very difficult to read.
Once I loaded fsr1.map I expected the to see "DATA" (and my other names for addresses) appear in the Memory and Disassembly choice lists of useful addresses I can pick.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.