; Orange programmer module v1.6 ; (c) 2003 CnCLab ; CHIP=S29530,1Kx16,S29530.HPL ; read tested SOCKET=2 ;"MW" PINO=CLK,0 PINO=DI,1 PINO=CS,2 PINO=ORG,3 PINO=NC,4 PINI=DO,1 CDELAY=4 ; one set delay [_WAITWR] LOOP=(0,10000){ DO?1{BREAK} P=10 } [INIT] ORG=1,NC=0 [READ] CS=0 CLK=0 CS=1 DI=1,CLK=1,CLK=0 ; start bit DI=1,CLK=1,CLK=0 ; \ read instruction DI=0,CLK=1,CLK=0 ; / LOOP=(9,0){DI=ADR[I],CLK=1,CLK=0} ; out adr DI=1 LOOP=(15,0){CLK=1,CLK=0,DATA[I]=DO} ; read data word CS=0 [WRITEINIT] CS=0 CLK=0 ;CS=1 ;R0=1001100000000b ;LOOP=(12,0){DI=R0[I],CLK=1,CLK=0} ; out EWEN ;CS=0 ;P=1000 [WRITE] CS=0 CLK=0 CS=1 R0=1001100000000b LOOP=(12,0){DI=R0[I],CLK=1,CLK=0} ; out EWEN CS=0 P=100 CLK=0 CS=1 DI=1,CLK=1,CLK=0 ; start bit DI=0,CLK=1,CLK=0 ; \ write instruction DI=1,CLK=1,CLK=0 ; / LOOP=(9,0){DI=ADR[I],CLK=1,CLK=0} ; out adr LOOP=(15,0){DI=DATA[I],CLK=1,CLK=0} ; write data word CS=0,P=1000,DI=1,CS=1 P=10000 _WAITWR DO?1 ; check status CS=0