; Orange programmer module v3.3 ; (c) 2000 Alex Plusov, Victor Makcimov ; CHIP=Rohm BR90X0 series ; CHIP=BR9010,64x16;BR9020,128x16;BR9040,256x16 ; tested BR9020F SOCKET=2 PINO=CS,2 ;1 PINO=CLK,0 ;2 PINO=DI,1 ;3 PINO=WC,3 ;6 PINO=RBI,4 ;7 input - not used PINI=DO,1 ;4 CDELAY=2 ; one set delay (1 MHz Max!) [INIT] WC=1,RBI=1,CS=1,CLK=0 [READ] CS=0 R0=10101000B LOOP=(7,0){DI=R0[I],CLK=P} ; start+READ opcode LOOP=(0,7){DI=ADR[I],CLK=P} ; out adr DI=1 LOOP=(0,15){CLK=1,DATA[I]=DO,CLK=0} ; read data word CS=1 [WRITEINIT] WC=0 ;enable write CS=0 R0=10100011B LOOP=(7,0){DI=R0[I],CLK=P} ; EWEN opcode LOOP=(7,0){CLK=P} ; empty CS=1 [WRITE] CS=0 R0=10100100B LOOP=(7,0){DI=R0[I],CLK=P} ; start+WRITE opcode LOOP=(0,7){DI=ADR[I],CLK=P} ; out adr LOOP=(0,15){DI=DATA[I],CLK=P} ; write data word P=10000 ; tE/W 10 ms max CS=1 [WRITEEND] CS=0 R0=10100000B LOOP=(7,0){DI=R0[I],CLK=P} ; EWDS opcode LOOP=(7,0){CLK=P} ; empty CS=1 WC=1