; Orange programmer module v3.2 ; (c) 2000 Victor Makcimov, Alex Plusov ; CHIP=BR9080 (512x16) Rohm ; Tested !!! 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=5 ; one set delay (2 MHz Max!) [INIT] WC=1,RBI=1,CS=1,CLK=0 [READ] CS=0 R0=1010100B LOOP=(6,0){DI=R0[I],CLK=P} ; start+READ opcode LOOP=(0,8){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=1010010B LOOP=(6,0){DI=R0[I],CLK=P} ; start+WRITE opcode LOOP=(0,8){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