Jump to content
IGNORED

Atari DMD (Dot Matrix Display)


ZZTOP SOFT

Recommended Posts

After some days I've Been working on this.

 

dmd1.jpg

 

dmd4.jpg

 

For years I want to make this Dot Matrix Display.

 

I'm going do the first tests on basic. I know... it is to slow, but, is just for testing. :)

 

dmd5.jpg

 

The heart of this operation is a decoder (74LS259) chip , which allow me select between 8 outputs. This outputs manage a bunch of serial shift registers chips (74LS595): Serial Input, Output Enable, Latch, Clock and Reset. The state of each are controlled by the Atari itself (no other processor needed).
So, the idea is showing text, scroll text, and frames (some animations). What for? I'm going to use it in a pinball machine that I building.
Tech stuff
This kind of matrix displays working more than less at the same way: They drive on column at the time meanwhile they send the data to the row. On my design I have 8 serial shift register in chain to do that, RST clear all outputs, OE Enable or disable all outputs, Latch keep the data, CLOCK advance one step, SERIAL IN must be 1 at the first step, but immediatly must be 0, or every colums are 1 in 48 clocks (that is very bad). The idea is drive just one column at the time, from right to left. The ROW data come from the joystick port, so we have to set them as OUTPUT POKE 54018,43 (must set just at the start ) and the data we want to send POKE 54016,DATA
The decoder 74LS259 are managed this way:
when a adress between 54600~54608 are POKEd the cartridge line CCTL are activated, and in conjunction with the clock signal O2 (NAND) makes the chip are Enabled. So, if we did POKE 54600,1 A0=0 A1=0 A2=0 then output Q0 (pin 4) is selected and the data we send, in this case 1, are carry to this pin. This chip have latch, so the state remains stored until we change it.
For last, every column must be drived by one ULN 2003 chip. And every ROW with a 220 ohms resistor. I pass the ROWs data thru an 74LS245 buffer chip, to protect the PIA.
Schematic:
Edited by ZZTOP SOFT
  • Like 9
Link to comment
Share on other sites

I did my tests and as supposed BASIC is too slow to scan 48 columns. But they can scan 8 or 16 without trouble (one or two 8X8 displays).
So, I did my first test on assembler to display the word Retrogames:

 

*=$4000
start
lda #43
sta 54018 ; set joy port as output
ldx #255
stx 54016 ; joy port all outputs OFF
setups
lda #0
sta 54604 ; start reset
lda #0
sta 54602 ; latch
lda #1
sta 54604 ; reset end
lda #0
sta 54601 ; OE Output Enable = 0
lda #1
sta 54600 ; serial data = 1
lda #48
sta 6001 ; clock = 48
ldx #48
stx 6005 ; index = 48
ini1
lda #255
sta 54016 ; joy port, all outputs ON
lda #1
sta 54603 ; CK ON
lda #0
sta 54603 ; CK OFF
lda #1
sta 54602 ; Latch ON
lda #0
sta 54602 ; Latch OFF
lda #0
sta 54600 ; SERIAL DATA = 0
rbytes
lda retrogames,x
sta 54016
ldx 6005
dex
stx 6005
jsr delay
xtimes
ldx 6001
dex
stx 6001
lda 6001
cmp #0
bne ini1
jmp setups
delay
lda #5
sta 6002
paddle
lda 624
sta 6000
loop
ldx 6000
dex
stx 6000
lda 6000
cmp #0
bne loop
loop2
ldx 6002
dex
stx 6002
lda 6002
cmp #0
bne paddle
rts
retrogames
.byte 255,1,237,237,19 ; R
.byte 255,1,109,109,125 ; E
.byte 255,253,1,253 ; T
.byte 255,1,237,237,19 ; R
.byte 255,131,125,131 ; O
.byte 255,131,109,109,139 ; G
.byte 255,3,221,221,3 ; A
.byte 255,1,251,247,251,1 ; M
.byte 255,1,109,109,125 ; E
.byte 255,179,109,109,155 ; S
*=$02E0
.word start
Edited by ZZTOP SOFT
  • Like 2
Link to comment
Share on other sites

Scrolling text:

 

 

:grin:

 

 

*=$4000
inicio
lda #43
sta 54018
ldx #255
stx 54016
setups
lda #0
sta 54604 ; reset
lda #0
sta 54602 ; latch
lda #1
sta 54604 ; reset end
lda #0
sta 54601 ; OE 0
lda #1
sta 54600 ; data 1
ldx #59 ; clock
stx 6005
inicio1
lda #255
sta 54016
lda #1
sta 54603
lda #0
sta 54603
lda #1
sta 54602
lda #0
sta 54602
lda #0
sta 54600
leetabla
ldx 6005
lda atariage,x
sta 54016
ldx 6005
dex
stx 6005
cpx #0
bne t1
ldx #60 ; tabla
stx 6005
t1
jsr tiempo
veces
ldx 6004
dex
stx 6004
lda 6004
cmp #0
bne t2
lda #59
sta 6004
lda #1
sta 54600
t2
jmp inicio1
tiempo
; rutina de tiempo
lda #5
sta 6002
paddle
lda 624
sta 6000
loop
ldx 6000
dex
stx 6000
lda 6000
cmp #0
bne loop
loop2
ldx 6002
dex
stx 6002
lda 6002
cmp #0
bne paddle
; fin rutina de tiempo
rts
atariage
.byte 255,255,255,255,255 ; sp
.byte 255,255,192,6,245 ; logo Atariage
.byte 235,215,175,255,255 ; logo Atariage
.byte 255,255,255,255,255 ; sp
.byte 255,3,221,221,3 ; A
.byte 255,253,1,253 ; T
.byte 255,3,221,221,3 ; A
.byte 255,1,237,237,19 ; R
.byte 255,255,1,255 ; I
.byte 255,3,221,221,3 ; A
.byte 255,131,109,109,139 ; G
.byte 255,1,109,109,125 ; E
.byte 255,255,255 ; sp
*=$02E0
.word inicio
Edited by ZZTOP SOFT
  • Like 4
Link to comment
Share on other sites

zztop, will you put this inside your williams/bally pinball machine?

Maybe you're thinking in the centigrade 37 pinball, which originaly is a Gottlieb machine. This DMD goes for a Star Wars pinball, custom design. But the development of this one probably take me a little more time than the other. :(

 

At least I have the cabinet, Star Wars Data East, with the artwork intact, this save me a lot of time and money in paint work.
By the way, today I'm working in the cabinet spray of my centigrade 37. :D
Edited by ZZTOP SOFT
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...