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