Welcome, Guest! Log In | Create Account

Gnusim8085 Ideas

Generic Simulation Infrastructure

Pre requisites: C, ASM, Gtk+ will be an added advantage
Level: Advanced

Gnusim8085 will benefit from a more generic simulation infrastructure, that would eventually facilitate implementing backends for various different architectures/processor targets, i.e. the 8086, 8051 and possibly other related processors. This would increase the user base as well as be a very useful tool for students to learn an entire coursework on Controllers and also try out new concepts and programs.


Assembler Enhancements

Pre-requisites: C, ASM, Gtk+ will be an added advantage
Level: Intermediate

Error messages while assembling the code are currently not very useful or does not provide proper info so as to easily rectify the mistake. In this sense, assuming that it would be difficult to improve such things in the short run, it might make sense to provide a separate, more detailed, log that contains more information about the assembly process. So that each step of the assembler is interactively shown.

Eg as below:

- found comment, skipping to next line
- found supported mnemonic "mvi", (expecting reg,immediate): found reg,reg
- found unknown token "foo"


Something like this would at least have the potential to allow users to see clearly where the assembler stopped succeeding with assembling the file. Also, other 8085 assemblers often support direct ways to provide numbers using a different notation:

mvi a,14h

mvi a,14d

mvi a,01110011b

Also, the "db" directive usually also supports providing the corresponding bytes as quoted strings of characters:

data: db 'hello world',0A,0D,'$'

dat2\: db "foo"

In its current form the assembler also isn't able to compute offsets for labels defined after the position of the current instruction:

mvi a,5

start: nop

cmp 5

jz exit ;ERROR: exit not known because no multipass support in assembler

exit:


Peripheral Interfacing via loadable plugins

Pre requisite: C, ASM, GTk+ experience an added advantage, Any kind of plugin development will also be helpful
Level: Intermediate

The goal is to develop a generic way to model simple peripherals such as for example I/O hardware, i.e. by mapping a certain region of memory to a corresponding grid on screen to simulate an LCD or even simple VGA screen, something like this would preferably be pretty flexible and allow for different types of hardware to be modeled,possibly using a scripting language such as lua. This interface shall help Runtime loading of any plugin which needs to be tested. We believe this feature would greatly help students to test their code related to external devices also using the simulator.


GUI Enhancements

Pre requisite: C, ASM, GTk+ experience an added advantage
Level: Beginner

- Implementation of a grid that shows memory address, io ports, and its values.
- The UI could benefit from some minor rearrangements to make it more intuitive and less cluttered. For example, for debugging/runtime purposes there could be one comprehensive tab that provides all relevant information at a glance.

  • registers & flags
  • memory
  • stack
  • I/O ports

- Possiblility to customise font size
- Provide the option to switch to an opcode view of the assembled file by using a corresponding separate tab above the editor area, i.e. two tabs that allow the user to switch between source" and (annotated) "opcode" view, the latter of which probably should be set readonly by default.
- Likewise, it would be helpful if there were dedicated tabs for viewing/manipulation of memory & I/O ports.