; Orange programmer module v1.2 ; (c) 2000 Alex Plusov & Valery Fomin ; CHIP=77005MC (16x16), 77007MC (16x16) ; Some bytes write protected SOCKET=2 ;"MW" PINO=CLK,0 PINO=DI,1 PINO=CS,2 PINO=WP,3 PINO=MOD,4 PINI=DO,1 CDELAY=5 ; one set delay [INIT] MOD=0,WP=1 [READ] CS=0,CLK=0,DI=0,CS=1 R0=011100B LOOP=(5,0){DI=R0[I],CLK=1,CLK=0} ; READ instr LOOP=(3,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,DI=0,CS=1 R0=010111B LOOP=(5,0){DI=R0[I],CLK=1,CLK=0} ; WRITE enable ? R0=0 LOOP=(3,0){DI=R0[I],CLK=1,CLK=0} ; ??? LOOP=(15,0){CLK=0,DI=R0[I],CLK=1} ; ??? CS=0 P=40000 ; ??? [WRITE] CS=0,CLK=0,DI=0,CS=1 R0=010000B LOOP=(5,0){DI=R0[I],CLK=1,CLK=0} ; WRITE instr LOOP=(3,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 P=40000