; Orange programmer module v1.3
; (c) 1999-2002 Victor Filipyev,Valery Fomin
; CHIP=TC89101P (64x16), TC89102P (128x16)

SOCKET=2 ;"MW"

PINO=CLK,0
PINO=DI,1
PINO=CS,2
PINO=ORG,3
PINI=DO,1

CDELAY=5 ; one set delay

[READ]
ORG=1,CS=1,CLK=1
CS=0
LOOP=(0,6){CLK=0,DI=ADR[I],CLK=1}    ; out adr
CLK=0,DI=0,CLK=1
R0=10000000B
LOOP=(7,0){CLK=0,DI=R0[I],CLK=1}  ; READ instr
DI=1
LOOP=(0,15){CLK=0,CLK=1,DATA[I]=DO}  ; read data word
CS=1,CLK=1

[WRITEINIT]
ORG=1,CS=1,CLK=1,CS=0
R0=255
LOOP=(7,0){CLK=0,DI=R0[I],CLK=1} ; Dimmy
R0=10010000B
LOOP=(7,0){CLK=0,DI=R0[I],CLK=1} ; E/W Enable
CS=1,CLK=1

[WRITE]
CS=0
LOOP=(0,6){CLK=0,DI=ADR[I],CLK=1}    ; out adr
DI=0,CLK=0,CLK=1
R0=01100000B
LOOP=(7,0){CLK=0,DI=R0[I],CLK=1}  ; PROGRAM instr
LOOP=(0,15){CLK=0,DI=DATA[I],CLK=1}  ; write data word
CS=1
P=40000

[WRITEEND]
CLK=1,CS=0
R0=255
LOOP=(7,0){CLK=0,DI=R0[I],CLK=1} ; Dimmy
R0=11010000B
LOOP=(7,0){CLK=0,DI=R0[I],CLK=1} ; E/W Disable
CS=1,CLK=1