Seite 3 von 3

Re: Zugriffoptimierung eterner Ram

Verfasst: Di 25. Aug 2009, 22:30
von DJLinux
Danke Euch beiden
habe an die BUS Konfiguration nicht mehr gedacht jetzt geht es.

Grüsse Joshy

Re: Zugriffoptimierung eterner Ram

Verfasst: Mi 26. Aug 2009, 05:50
von DJLinux
Wenn im IOS default mäsig alle /CS Leitungen Ausgang sind und der Daten Bus Eingang
warum muss man dann im Spinteil outa:=0 benutzen ?

Das kommt doch dem Chip Select /CS gleich und selektiert kurzfristing
Administar,Bellatrix, RAM1, RAM2

ich verstehe es noch nicht wirklich

Code: Alles auswählen

PRI poke(val,adr)
  outa:=0 ' <----- was passiert hier ???
  Param1 := adr
  Param2 := val
  JobNr  := JOB_POKE
  repeat until JobNr == JOB_NONE

Code: Alles auswählen

DAT                     ORG 0

cog_loop                rdlong  _job,par wz   ' get job id
              if_z      jmp     #cog_loop
 
                        cmp     _job,#JOB_poke wz
              if_z      jmp     #cog_poke
                        ' ignore unknow job
                        jmp     #cog_loop

                        
cog_ready               mov     _ptr,par
                        mov     _job,#JOB_NONE
                        wrlong  _job,_ptr
                        jmp     #cog_loop
                                      
cog_poke                mov     _ptr,par        ' pointer of params
                        add     _ptr,#4         ' move to param 1
                        rdlong  _adr,_ptr       ' get address
                        add     _ptr,#4         ' move to param 2
                        rdlong  _val,_ptr       ' get value
                        
                        mov     _tmp,_adr       ' make a copy 
                        and     _val,#$FF       ' only D7-D0
                        ' BUS
                        mov     outa,_BUS_INIT  ' all de-selected 
                        mov     dira,_DIR_OUT   ' D7..D0 as output
                        ' ADR HI
                        and     _adr,_m_A18_A11 ' hi part
                        shr     _adr,#3         ' move to latch port
                        or      _adr,_BUS_AL_HI ' BUS + AL hi
                        mov     outa,_adr       ' BUS + AL hi + ADR
                        and     _adr,_BUS_AL_LO
                        mov     outa,_adr       ' BUS + AL lo + LATCH
                        ' ADR LO
                        mov     _adr,_tmp       ' from copy
                        and     _adr,_m_A10_A00 ' lo part
                        shl     _adr,#8         ' mov to address port
                        or      _adr,_val       ' D7-D0
                        or      _adr,_BUS_INIT  ' BUS
                        and     _tmp,_m_A19 wz  ' MSB of address
                        mov     _tmp,_adr
                        mov     outa,_adr       ' BUS + A10-A0 + D7-D0
              if_z      and     _adr,_BUS_WR_R1 ' address <= $07FFFF 
              if_nz     and     _adr,_BUS_WR_R2 ' address >= $800000
                        mov     outa,_adr       ' /WR+/RAMx + A10-A0 + D7-D0
                        mov     outa,_tmp       ' BUS + A10-A0 + D7-D0
                        mov     outa,#0 
                        mov     dira, _DIR_IN
                        
                        jmp     #cog_ready
                        

'                       __    ____    
'                       HWCL ACCRR    [Latch ]
'                       SRLE LSShlAAA AAAAAAAA DDDDDDDD
'                         kD  abioA98 76543210 76543210
_DIR_OUT      long %00000111_11111111_11111111_11111111
_DIR_IN       long %00000111_11111111_11111111_00000000
_BUS_INIT     long %00000100_01111000_00000000_00000000
_BUS_AL_HI    long %00000100_11111000_00000000_00000000
_BUS_AL_LO    long %00000100_01111000_11111111_00000000
_BUS_WR_R1    long %00000000_01110111_11111111_11111111
_BUS_WR_R2    long %00000000_01101111_11111111_11111111
_BUS_WR_OFF   long %00000100_01111111_11111111_11111111
_m_A19        long %00000000_00001000_00000000_00000000 
_m_A18_A11    long %00000000_00000111_11111000_00000000
_m_A10_A00    long %00000000_00000000_00000111_11111111

_job          res 1
_ptr          res 1
_adr          res 1
_val          res 1
_tmp          res 1

                        FIT

Re: Zugriffoptimierung eterner Ram

Verfasst: Mi 26. Aug 2009, 10:17
von drohne235
Mit "dira := 0" (nicht outa!) schaltest du das Port auf "Eingang", damit wird es inaktiv bzgl. der entsprechenden COG.