; Orange programmer module v1.4
; (c) 2005 CnCLab
; CHIP=S29590,1024x16,S29690.HPL
; CHIP=S29690,2048x16,S29690.HPL

; READ tested!

SOCKET=2 ;"MW"

PINO=CLK,0
PINO=DI,1
PINO=CS,2
PINO=TEST,3
PINO=NC,4
PINI=DO,1

CDELAY=4 ; one set delay

[_WAITWR]
LOOP=(0,10000){
DO?1{BREAK}
P=10
}

[INIT]
TEST=0
CLK=0
CS=0

[READ]
CS=0
CLK=0
CS=1
R0=11000b
LOOP=(4,0){DI=R0[I],CLK=1,CLK=0}    ; read instr.
LOOP=(10,0){DI=ADR[I],CLK=1,CLK=0}    ; out adr
DI=1
LOOP=(15,0){CLK=1,CLK=0,DATA[I]=DO}  ; read data word
CS=0

[WRITEINIT]
CS=0
CLK=0
CS=1
R0=10011b
LOOP=(4,0){DI=R0[I],CLK=1,CLK=0}    ; PEN instr.
R0=0
LOOP=(10,0){DI=R0[I],CLK=1,CLK=0}    ; out dummy adr
CS=0


[WRITE]
CS=0
CLK=0
CS=1
R0=11100b
LOOP=(4,0){DI=R0[I],CLK=1,CLK=0}    ; wr instr.
LOOP=(10,0){DI=ADR[I],CLK=1,CLK=0}    ; out adr
LOOP=(15,0){DI=DATA[I],CLK=1,CLK=0}  ; write data word
CS=0,DI=1,CS=1      ; check status
P=20000
;_WAITWR
;DO?1
CS=0