Emma II

Topics pertaining to the emulation or simulation of the 65xx microprocessors and their peripheral chips.
Post Reply
garynewport
Posts: 3
Joined: 16 Dec 2013

Emma II

Post by garynewport »

I have been working on this simulator of the Emma II and have it working with some basic instruction sets.

However, the display routine only works through standard VB instructions and not as part of the actual addresses of the Emma. I want to build the 7 segment displays into the actual code but this requires understanding how these displays worked and the addresses relevant to send data to.

Does anyone have any knowledge of this system?

I have a working Emma to develop from but am now getting to the point where I could do with someone to help clarify or explain points.

For example, once i have restructured the displays to work as part of the board I'd like to work on the IO ports (A and B) to enable future expansion possibilities.

I have included in the zip the original user manual in case someone needs a refresher.

Oh, and I would appreciate comments from anyone who cannot help but wishes to give any constructive commentary.
Attachments
Emma III.zip
This file is a zipped copy of the user manual and an installable simulator of the Emma (called the Emma III). I have full permission from LJ Electronics to make this.
(7.32 MiB) Downloaded 165 times
garynewport
Posts: 3
Joined: 16 Dec 2013

Re: Emma II

Post by garynewport »

Okay, I have made some progress.

&H0010 through to &H0017 hold the values used on the display. The values are nibble values with 01, 02, 04 and 08 being low byte whilst 10, 20, 40 and 80 are high byte. Since it runs 01, 02, 04, 08, 10, 20, 40, 80 from top to right to bottom to left to centre then dp (80), the letter A would be 01 + 02 + 04 = 7 and 10 + 20 + 40 = 70 / 10 = 7; making it &H77. With the decimal point it would become &HF7.

&H0010 holds the value for the left most segment and &H0017 holds the right-most one.

Stepping through each of the memory locations I conclude with the following on the display: A.0017.xx where xx is the data for the segment.

I get F7 3F 3F 06 66 80 7F 71: which gives me A.0014.8F

Now if the final position is A.0017.71 (71 gives me the final F) I can see that the data being given in the final two segments is for the image previously (the F from 7F) rather than the current data (the 1 from 71). This makes sense since to display the current data would require a different segment code and since no segment code ever reflects the actual letter or number being displayed this would be a circular problem. However, if this is true then the display is showing a different set of values from that stored in the memory location used for display; so where is this being stored?

Could it be that the data currently stored is sent to the display segments and only then the new data value stored? If so, is this always true? Is the display always 1 step behind the actual memory?

When is the trigger for showing the data? It cannot be when the 8 addresses are altered since you would enter the circular issue. Yet there is no normal delay in memory display.

This is not very clear. if my display is showing me 7 1, which tells me the last segment is F then where is the data that tells the display to show me the 1????
Post Reply