; Orange programmer module v1.2 ; (c) 1999 Alex Plusov ; CHIP=S2430 (8x8) Xicor/Seiko ; Software RECALL,STORE SOCKET=2 ;"MW" PINO=SK,0 PINO=DI,1 PINO=CE,2 PINO=RECALL,3 PINO=STORE,4 PINI=DO,1 CDELAY=4 ; one set delay [READ] CE=0 STORE=1 RECALL=1 SK=0 CE=1 DI=1,SK=1,SK=0 ; LOOP=(2,0){DI=ADR[I],SK=1,SK=0} ; out adr DI=0,SK=1,SK=0 ; DI=1,SK=1,SK=0 ; \ read instruction DI=1,SK=1,SK=0 ; / DI=1,SK=1,SK=0 ; x DI=1 LOOP=(0,7){DATA[I]=DO,SK=1,SK=0} ; read data word CE=0 [WRITEINIT] RECALL=1 STORE=1 CE=0 SK=0 [WRITE] CE=1 R0=10000100b LOOP=(7,0){DI=R0[I],SK=1,SK=0} ; out WREN CE=0 DI=0,SK=1,SK=0 CE=1 DI=1,SK=1,SK=0 LOOP=(2,0){DI=ADR[I],SK=1,SK=0} ; out adr DI=0,SK=1,SK=0 ; DI=0,SK=1,SK=0 ; \ write instruction DI=1,SK=1,SK=0 ; / DI=1,SK=1,SK=0 ; x LOOP=(0,7){DI=DATA[I],SK=0,SK=1,SK=0} ; write data word CE=0 CE=1 R0=10000001b LOOP=(7,0){DI=R0[I],SK=1,SK=0} ; out soft STO CE=0 DI=0,SK=1,SK=0 P=10000 CE=1 R0=10000101b LOOP=(7,0){DI=R0[I],SK=1,SK=0} ; out soft RECALL CE=0 DI=0,SK=1,SK=0 P=6000