-
Details on keyboard
04/09/2018 at 01:24 • 4 commentsKeyboard is connected similarly to ZX-Spectrum - 8 bits from address bus ( other bits by the way ; ) trough diodes goes to key matrix and come back through data bus (if address space is 0x8000...0x9FFF):
data bus bits ======> 0 1 2 3 4 5 6 7 bit 0 from address bus [S] [F] ENTER + - Home End RESET bit 1 from address bus O ; P , . 3 6 9 * (reserved) bit 2 from address bus L ANS 2 5 8 / PgUp PgDn bit 3 from address bus = EE 0 1 4 7 AC (reserved) bit 4 from address bus STOP INS DEL MODE Up Down Left Right bit 5 from address bus Q ! W " E # R $ T ( Y ) U ? I : bit 6 from address bus A S D F G H J K bit 7 from address bus Z X C V B N M SPACE Scanning is done by reading from memory range 0x8000...0x9FFF and "0" in any address bits 0...7 will be retranslated into data bus if any key in that row is pressed. Recommended way to read from keyboard is reading from 8 address locations - 0x9FFE (bit 0 is zero), 0x9FFD (but 1 is zero), 0x9FFB (bit 2 is zero), 0x9FF7 (bit 3 is zero), 0x9FEF (bit 4 is zero), 0x9FDF (bit 5 is zero), 0x9FBF (bit 6 is zero) and 0x9F7F (bit 7 is zero). If nothing is pressed byte FF will be read. Otherwise proper bit will be reset to indicate which particular key was pressed. For example:
LDA 9F7F ; read 7th row (bit 7 is zero) to A ANI 80H ; mask 7th bit in response JZ SPACE ; jump if zero - SPACE pressed
-
8085 code to display static text
04/05/2018 at 06:56 • 0 commentsIn order to show something on the screen (something static as READY P0 from one of the pictures) we need to repeat below code 8 times - for every horizontal of the screen (LEDs and 7-segment indicators are horizontal 0):
3E MVI A,10h ; write XXXXO to 1st register 10 D3 OUT 1 01 3E MVI A,00h ; write XXXXX to 2nd register 00 D3 OUT 2 02 3E MVI A,11h ; write OXXXO to 3rd register 11 D3 OUT 3 03 3E MVI A,18h ; write XXXOO to 4th register 18 D3 OUT 4 04 3E MVI A,0Eh ; write XOOOX to 5th register 0E D3 OUT 5 05 3E MVI A,1Fh ; write OOOOO to 6th register 1F D3 OUT 6 06 3E MVI A,10h ; write XXXXO to 7th register 10 D3 OUT 7 07 3E MVI A,11h ; write OXXXO to 8th register 11 D3 OUT 8 08 3E MVI A,1Fh ; write OOOOO to 9th register 1F D3 OUT 9 09 3E MVI A,1Fh ; write OOOOO to 10th register 1F D3 OUT 10 0A 3E MVI A,1Fh ; write OOOOO to 11th register 1F D3 OUT 11 0B 3E MVI A,1Fh ; write OOOOO to 12th register 1F D3 OUT 12 0C 3E MVI A,0FDh ; 11111101 <<<< highlight proper horizontal line (here it's 1st one) FD D3 OUT 0 00 3E MVI A,100 ; wait 100 times (1400 cycles or 0.56 ms in case of 2.5 MHz clock) 64 3D DCR A <---\ CZ JNZ ------/ XX XX 3E MVI A,0FFh ; 11111111 <<<< remove indication FF D3 OUT 0 00 ; and so on for FB,F7,EF,DF,BF,7F and FE (LEDs and 7-segments)
As you can see this code works from ROM and doesn't need RAM at all, so all displayed text (that's actually graphics) is hard-coded into the code
It's refreshing whole screen about 190 times per second
P.S. I created a public chat for this project: https://hackaday.io/messages/room/229637
-
External memory connector?
04/01/2018 at 01:34 • 4 commentsAs you can see I plan to have 8K of external memory (like a cartridge or something) in the address range 0x6000...0x7FFF, so question is - what should it be physically? Connector must have 2 power signals (+5V and GND), 13 address signals (to cover 8K address range), 8 data signals and also 3 control signals: /CS, /RD, /WR, so total is 26.
Should it be 1 row of pins? 2 rows of pins? Male? Female? D-SUB connector? Edge connector? Or may be something else? Please share you thoughts in comments below! Thank you ;)
-
Keyboard test
03/28/2018 at 05:26 • 2 commentsNow time to print something:
and test keyboard :)
-
More lights
03/24/2018 at 07:43 • 0 commentsall 5x7 LED matrix installed:
and it's working :)
video:
it executes this program (and eats 500-900 mA):
.i8080 org 0 mvi a,0FFh out 0 mvi b,0 loop: mov a,b rrc rrc rrc out 1 out 2 out 3 out 4 out 5 out 6 out 7 out 8 out 9 out 10 out 11 out 12 inr b nop mvi c,9 mvi d,7Fh loop1: mov a,d out 0 stc rar mov d,a lxi h,100 loop2: ; total 24 dcx h ; 5 mov a,h ; 5 ora l ; 4 jnz loop2 ; 10 dcr c jnz loop1 jmp loop
-
Lights
03/18/2018 at 23:03 • 2 commentsAnd it's time to fire some lights :)
This test eats up to 450 mA
P.S. Still waiting for other components to finish all 12 characters of the display...
-
Cherry MX
03/14/2018 at 05:51 • 0 commentsHere I use Cherry MX keyswitches:
Where can I order "custom" Cherry MX caps? Handwriting doesn't look right :)
P.S. It looks like I've just found the way:
-
nedoPC-85-MK v1.0 boards received
03/13/2018 at 02:14 • 0 commentsNow it's time to build something cool ;)
Unfortunately I don't have schematics for this one - I drew PCB as is (using pcb from GEDA) based on original nedoPC-85-A schematics with some thoughts from my mind regarding MK85 cloning - so the thing is I started to forget my ideas, so I think now I need to reverse-engineer my own board to re-create schematics from it...
-
nedoPC-85-MK v1.0
02/04/2018 at 19:27 • 0 commentsThis one could be a standalone 8085-based computer with Cherry-MX keyboard on board, 12 5x7 LED matrices and 6 7-segment indicators with some additional indication and stereo-audio output (2 channels with 4 bit per channel):
Intended to resemble look of Elektronika MK-85 and CASIO FX-700P (also known as CASIO PB-100 or "RadioShack TRS-80 pocket computer"), but my board is slightly bigger (14x6") and it has more PC-like keyboard layout to make it looks like a real computer with optional backlight :)
P.S. There is a possibility to make a true Elektronika MK-85 clone from it with help of additional board with PDP-11 compatible Soviet processor 1801VM2 (still available on ebay) with original firmware (MK-85 was PDP-11 compatible pocket computer produced from 1986 to 2000 that run BASIC interpreter similar to CASIO FX-700P)...