; Orange programmer module v1.4 ; (c) 1999-2002 CnCLab ; CHIP=S2444 (16x16) Xicor/Seiko ; Hardware RECALL ; Software STORE ; Tested SOCKET=2 ;"MW" PINO=SK,0 PINO=DI,1 PINO=CE,2 PINO=RECALL,3 PINO=STORE,4 PINI=DO,1 CDELAY=5 ; one set delay [INIT] STORE=1 RECALL=1 CE=0 SK=0 RECALL=0,P=10 RECALL=1,P=1000 [READ] SK=0 CE=1 DI=1,SK=1,SK=0 ; 1 LOOP=(3,0){DI=ADR[I],SK=1,SK=0} ; out adr 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,15){DATA[I]=DO,SK=1,SK=0} ; read data word CE=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=(3,0){DI=ADR[I],SK=1,SK=0} ; out adr DI=0,SK=1,SK=0 ; \ write instruction DI=1,SK=1,SK=0 ; / DI=1,SK=1,SK=0 ; x LOOP=(0,15){DI=DATA[I],SK=0,SK=1,SK=0} ; write data word CE=0 ;[WRITEEND] 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=3000 RECALL=0,P=10 RECALL=1,P=10000