So… With some of my thoughts going into the direction of writing an assembler for the DWMC-16, and communicating them, someone told me I should maybe write an emulator.
And yes… I decided that I need to write an emulator. And I have decided on a low level microcode and bus based emulator, written in Python.
Some of the features it will have:
- It will work in a bus level, with nearly every module of the computer emulated on a relatively low level. The bus will carry data and address lines, as well as actual control lines the control logic has to manipulate for operations to execute.
- Every module that is connected to the bus will implement an Interface class to execute the function of the module, getting handed the signals of the bus. The function looks for the appropriate control lines to be set, and then executes the operation.
- The control logic will utilize an external data structure, initially JSON, which co trains the microcode and execute it as needed. Eventually I plan to use actual HEX code to run the logic, so that I can run the same microcode on the emulator and the hardware.
- A full GUI, made with Tk, that shows every little bit of hardware. Contents of the memory, the registers, the flags, operations and even the microcode level of the control logic. Of course it will also let the user manipulate some of the available data, especially in memory.
- Eventual integration of the Assembler and Disassembler I plan on writing.
Why Python? It’s easy. I have more experience with Python these days then Java or C#. Not to mention that Python is the BASIC of our days. Easily to learn and extremely powerful.
Why go for this approach?
The design I have in mind for the emulator allows me to model the DWMC-16 on a modul and bus level, so that I can see what is missing on the current design of the machine.
I just started out, and already I have added a bunch of control lines and consolidated others.
For anyone interested, have the gitlab repo for the emulator.