Jump to content

ZZTOP SOFT

Members
  • Content Count

    184
  • Joined

  • Last visited

Posts posted by ZZTOP SOFT


  1. Here the schematic for a extra PIA:

     

    pia10.jpg

     

    Here the interaction between the 800XL and PIA and how I connect the second one. Dashed line for D500 or D100 to choose. both address work fine for me, but if D500 is used, you can't run the cartridge. So, you can put another PIA! One in D100, two in D300 (standard) and three at D500.

     

    Also two extra outputs at CA2 and CB2!

     

     

    __________________________________________

     

    Here PIA 2 setup at D500

     

    ALL PORT-A INPUT
    1 POKE 54530,56
    2 POKE 54528,0
    3 POKE 54530,60
    Now PIA is ready to GET data
    4 DATA=PEEK(54528)
    ALL PORT-A OUTPUT
    1 POKE 54530,56
    2 POKE 54528,255
    3 POKE 54530,60
    Now PIA is ready to PUT data
    4 POKE 54528,DATA
    ---------------------
    ALL PORT-B INPUT
    1 POKE 54531,56
    2 POKE 54529,0
    3 POKE 54531,60
    Now PIA is ready to GET data
    4 DATA=PEEK(54529)
    ALL PORT-B OUTPUT
    1 POKE 54531,56
    2 POKE 54529,255
    3 POKE 54531,60
    Now PIA is ready to PUT data
    4 POKE 54529,DATA

  2. With the original PIA, if you want more output or inputs, you are in trouble.


    I solve this problem like this:


    I take a good look at the 800XL schematic and see how the PIA talk with the CPU. Adress A0 A1 Data Bus D0 to D7, Clock 02, Reset, R/W, IRQ and...... CS2. There's the magic. (CS means Chip Select).


    The 800XL have a small 74LS138 chip at U2. This one decodes three adress (A8 A9 A10) to eight outputs. Each one to select chips from D000 to D700. Like this:


    PIN 15 D000 select GTIA

    PIN 14 D100 free

    PIN 13 D200 select POKEY

    PIN 12 D300 select PIA

    PIN 11 D400 free

    PIN 10 D500 cartridge (cctl)

    PIN 9 D600 free

    PIN 7 D700 free


    I already use D500 for many other mods, so, I know is a very safe direction to make anything. I use D500 U2 pin10 to pin 23 of the second PIA.


    Here is the equivalence between the standard PIA addressing mode and the second one:


    PORTA D300 54016 ==> D500 54528

    PORTB D301 54017 ==> D501 54529

    PACTL D302 54018 ==> D502 54530

    PBCTL D303 54019 ==> D503 54531




    All signals can be taken directly from the existing PIA (piggback) or from parallel port or cartridge port. The only exeption is CS2 (pin 23), this one must be connected to U2 pìn 10.


    Now, you can use both ports of this second PIA to have 16 extra outputs, or 8 inputs and 8 output... or what you want. And notice, you still having the PORTA free.



    The only issue: you cant use the cartridge and the second PIA at the same time. But if you dont use the cartridge.... no problem.


    Now I'm testing D100, aparently is absolute free and let me use the cartridge at the same time... testing.





    ZZT


  3. The Atari PIA


    PORTA Adr. D300 (54016) PORTA

    PACTL Adr. D302 (54018) PACTL



    Note: Don't mess with PORTB or your Atari may crash because three ouputs makes subcontrol between PIA and MMU (memory management).




    ALL PORT-A INPUT


    1 POKE 54018,56

    2 POKE 54016,0

    3 POKE 54018,60

    Now PIA is ready to GET data

    4 DATA=PEEK(54016)



    ALL PORT A OUTPUT


    1 POKE 54018,56

    2 POKE 54016,255

    3 POKE 54018,60

    Now PIA is ready to PUT data

    4 POKE 54016,DATA





    In booting process, PORT-A is set all input to read joysticks. If you want the oposite, type "all output routine". To back, type "all input routine", or just press reset.


    Warning, if you set PIA as all output, don't short any line to ground or Vcc or may damage the PIA.


    This is for the Atari PIA.




  4. The page cannot be found

     

    Thanks David_P, but I don't need instructions. I already have another PIA running very smooth on my 800XL.
    Just want to share the experience with other AA users.

  5. Hi folks. Few years ago I made an Atari controlled pinball. All works fine. I make a couple of custom cards to have more outputs, specifically to control the cpu lamps.


    All ok, but from the start I did'nt like the "comunication" method, too many wires, too many chips... I dream seeing outputs directly from the Atari guts, winning order and less electrical noise. As real pinballs are.


    Now I want to improve that issue for my next pinball.


    The Atari PIA let just 8 bits free (PORT A). Too short for big proyects. On pinballs some of the outputs must remain locked (on), dinamic scan not allowed. For that reason more outputs are needed.


    I made my research, focus on add a second PIA to my Atari, winning two 8-bits ports for a total of 16 outputs, or inputs.


    Now, I'm wondering if anyone has done this mod before (add another PIA), and the method used. I want to compare experiences and see if I did well or not.


  6. 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

  7. 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
    • Like 4

  8. Check the PSU voltaje as first. If is good, take off the cover of your Atari, remove the shield, and looking for overheat chips. Overheat means that you can't keep your finger over the chip surface.


    A bad PSU (over 5V) typically fried some RAMS as first target. But, this is just a russian roulette. Years ago a bad PSU fried me two RAMS and the SO ROM. Have luck. ;)


  9. 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
    • Like 2

  10. 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:
    • Like 9

  11. And, I was using a Williams pinball driver board to drive coils, but this one has 27 darlington transistors, and my pinball just need 6. I cant allow to my self that kind of waste, even if the board has 3 PIA and a lot of other parts which I dont use on my pinball.

    zenty86.jpg

    At the left side you can see several darlington transistors. Williams pinball use 22 to drive coils, and 5 to drive the sound board. I just need 6 of them, and noting more. Now, this board goes to another pinball.:-)

     

    To replace this board, I build two PCB of my own design:

    zenty85.jpg

    Every of this boards can drive up to 4 coils, enough for the requirements of my pinball.

    At the left side you can see the logic, and at rigth side the power: four darlington transistors, every one with its own pre-driver transistor. Every chip are TTL-LS, and mounted on socket for easy repairs.

    .

    • Like 4

  12. Now, I will do a few improvements.

     

    Finally I found a new led's for the thermometer, more close to the look of the original pinball.

     

    zenty79.jpg

    Some friend give me a lot of these boards. In our country we can found some Chinese slot machines (a real plague). They are completely electronic, and in the main board we'll see several square leds, exactly one centimeter per side.

     

    zenty83.jpg

    So, with 21 leds I build this new led bar.

     

    zenty84.jpg

    Really more nice that the old white leds.

     

    They could be a easy task, but every square led really have four leds inside, and for that reason the board are not able to drive them. To solve that I fit one ULN2003 driver between the serial decoder chips and the leds. Pretty cool.

    • Like 2

  13. possibly there is no intrest in resurecting such old thread, but since i've already put 3 days of my time into this, maybe it would be good for someone somewhere if i shared the results

     

    i've developed simple SNES to 3DO adaptor, currently supporting only one controller - its not that its complicated when you've basics covered, but i would like to get some feedback or buttons mappings first

     

     

    Sebastian

    Hi Sebastian, I have a couple of questions. I need a 3DO pad, but where I'm livin it's already impossible to buy one.

    So ¿why they can't adapt the snes pad directly to the 3DO? ¿What's the difference between both pads?

    I'm asking because both pads looks almost identical.

     

    ZZT

×
×
  • Create New...