; Orange programmer module v1.2 ; (c) 2000 Alex+ ; CHIP=CAT35C102 Catalist (128x16) ; CHIP=S29230A Seiko (128x16) ; Like MicroWire 93XX with nonstandard address word ; Tested CAT35C102 SOCKET=2 ;"MW" PINO=CLK,0 PINO=DI,1 PINO=CS,2 PINO=TEST,3 PINI=DO,1 CDELAY=2 ; one set delay [READ] TEST=1 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=(6,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] TEST=1 CS=0 CLK=0 CS=1 R0=1001100000b LOOP=(9,0){DI=R0[I],CLK=1,CLK=0} ; out EWEN CS=0 [WRITE] CS=0 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=(6,0){DI=ADR[I],CLK=1,CLK=0} ; out adr LOOP=(15,0){CLK=0,DI=DATA[I],CLK=1} ; write data word CS=0,DI=1,CS=1 ; P=10000 ; Tpr DO?1 ; check status CS=0