Electronics > Projects, Designs, and Technical Stuff
D8085AC ROM and 8279 finding keycodes
Dom87:
From my last post https://www.eevblog.com/forum/projects/d8085ac-and-d27128d-extracting-program-from-eprom/, I have managed to extract the ROM from the 27128D.
What I'm trying to do now is work out where the lookup table is for the 8279 Keyboard/Display interface that is used.
I know what all the keycodes are in binary/hex, I just don't really know what I'm looking for in the disassembled ROM (using Dasmx140).
The keyboard is in 2-key lockout encoded scan. CTRL + SHFT are not used, therefore always high.
Any tips would be greatly appreciated.
Thanks!
An example list of the button codes:
ButtonBinaryHex4811000011C34711000100C44911000101C54411001001C94311001010CA4111001100CC4211001101CD4511001110CE4611001111CF4011010000D03611010001D13511010010D23911010011D3
greenpossum:
If you can work out from the circuit where in the 8085 I/O space the 8279 is located you might be able to find the IN and OUT instructions that talk to it and go from there.
duak:
As greenpossum says, look for the in and out instructions to the 8279. With any luck, they will be localized to a few routines; initialization, check_for_keypressed, and get_key. The 8279 may also be connected to generate an interrupt request to the 8085. If so, the last two routines above may not read directly from the 8279 but from flag variables and buffers. The actual in and out instructions will be in Interrupt Service Routines that will set and reset the flag variables and place keypress codes in the buffers. The look-up table might be referenced at this level.
if the above functions are localized to a few routines, then look for where those routines are called from. Hopefully, your disassembler can generate a symbol table, maybe with your help.
Dom87:
Thanks the replies. :)
I believe it is using an interrupt (IRQ), so your response on the flag variables and buffers helps. As one thing I noticed is that my ROM doesn't have any IN/OUT commands.
The IRQ (pin 4) of the 8279 goes to RST 5.5 of the 8085 (pin 9).
I did think finding the prescaler might help as well, since I know this is set to 15 to achieve the 100KHz clock frequency.
duak:
Dom87, it's interesting that there are no in/out opcodes. Perhaps the 8279 is memory mapped and is accessed by memory reference instructions? Are you able to figure out where the 8279 CS (Chip Select) line comes from? Is the 8279 on the same board as the 8085 and are the data busses common?
In the software listing, have you looked at the ISR that RST5.5 jumps to? If memory serves, the processor pushes the Program Counter contents on the stack then executes the code starting from 002CH.
Are there any text strings in the ROM? eg., "Firmware V2.0" or "Compiled by x.y.z" It might give a hint on how to decipher the ROM contents. If the source code was written in a high level language and then compiled to give the machine code it might have been more convenient to memory map the peripheral device registers. This is because the 8085 does not have indirect input/ouput instructions where the port address is variable.
Navigation
[0] Message Index
[#] Next page
Go to full version