; Orange programmer module v3.1 ; (c) 2001 Victor Makcimov, Alex Plusov ; CHIP=BR9016 (1Kx16) Rohm ; tested - ok 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=101010B LOOP=(5,0){DI=R0[I],CLK=1,CLK=0} ; start+READ opcode LOOP=(0,9){DI=ADR[I],CLK=1,CLK=0} ; 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=1,CLK=0} ; EWEN opcode LOOP=(7,0){CLK=1,CLK=0} ; empty CS=1 [WRITE] CS=0 R0=101001B LOOP=(5,0){DI=R0[I],CLK=1,CLK=0} ; start+WRITE opcode LOOP=(0,9){DI=ADR[I],CLK=1,CLK=0} ; out adr LOOP=(0,15){DI=DATA[I],CLK=1,CLK=0} ; write data word P=10000 ; tE/W 10 ms max CS=1 [WRITEEND] CS=0 R0=10100000B LOOP=(7,0){DI=R0[I],CLK=1,CLK=0} ; EWDS opcode LOOP=(7,0){CLK=1,CLK=0} ; empty CS=1 WC=1