; Orange programmer module v3.5 ; (c) 2000-2001 Alex Plusov ; CHIP=ER1400,100x14 ; Use ER1400 adaper external power 35V ; For Orange-2 Only! ; Chip Pin Programmer ; 1 Vss (Vcc +5V) ; 2 Vd -35V (external) ; 6 CLK P0 ; 7 C1 P3 ; 8 C2 P4 ; 9 C3 P5 ; 12 I/O P1 ; Other Pins NC SOCKET=0 ALLPINS=14 INFO="ER1400 Adapter" PINO=CLK,0,6 PINO=DO,1,12 PINO=DI,2 PINO=C1,3,7 PINO=C2,4,8 PINO=C3,5,9 PINI=DO,1,12 PINO=Vss,255,1 PINO=Vgg,0,2 CDELAY = 1 ; 14kHz Max (for CLK used BIG delay ) [INIT] C1=0,C2=0,C3=0 ;StandBy CLK=0,DI=0,P=100 DO=Z P=1000 [END] C1=0,C2=0,C3=0 ;StandBy CLK=1,DI=1 [_CLKPULSE] CLK=1,P=100,CLK=0,P=100 ; 14kHz Max [READ] R0=ADR ; копируем адрес DI=1 C1=0,C2=0,C3=0,_CLKPULSE ;StandBy C1=0,C2=1,C3=1 ; Accept address Mode R1=0 ; fill address word R2=R0,R2=/10 ; Hi R1[R2]=1 ; reset bit LOOP=(9,0){DI=R1[I],_CLKPULSE} ; send Hi word R1=0 ; fill address word R2=R0,R2=%10 ; Lo R1[R2]=1 ; reset bit LOOP=(9,0){DI=R1[I],_CLKPULSE} ; send Lo word C1=0,C2=0,C3=0,_CLKPULSE ;StandBy C1=1,C2=0,C3=0,_CLKPULSE ; Read Mode C1=0,C2=0,C3=0,_CLKPULSE ;StandBy DI=1 ; !!!!!! C1=1,C2=0,C3=1 ; Shift data output Mode P=200 LOOP=(0,13){DATA[I]=DO,CLK=1,P=100,CLK=0,P=100} C1=0,C2=0,C3=0,_CLKPULSE ;StandBy ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [WRITE] R0=ADR ; копируем адрес DI=1 C1=0,C2=0,C3=0,_CLKPULSE ;StandBy C1=0,C2=1,C3=1 ; Accept address Mode R1=0 ; fill address word R2=R0,R2=/10 ; Hi R1[R2]=1 ; reset bit LOOP=(9,0){DI=R1[I],_CLKPULSE} ; send Hi word R1=0 ; fill address word R2=R0,R2=%10 ; Lo R1[R2]=1 ; reset bit LOOP=(9,0){DI=R1[I],_CLKPULSE} ; send Lo word C1=0,C2=0,C3=0,_CLKPULSE ;StandBy C1=0,C2=1,C3=0,_CLKPULSE ;Erase LOOP=(0,250){CLK=1,P=100,CLK=0,P=100} C1=0,C2=0,C3=0,_CLKPULSE ;StandBy ;_CLKPULSE,_CLKPULSE C1=1,C2=1,C3=1 ;DATA LOOP=(0,13){DI=DATA[I],_CLKPULSE} C1=0,C2=0,C3=0,_CLKPULSE ;StandBy ;_CLKPULSE,_CLKPULSE C1=1,C2=1,C3=0,_CLKPULSE ; write LOOP=(0,250){CLK=1,P=100,CLK=0,P=100} C1=0,C2=0,C3=0,_CLKPULSE ;StandBy [Erase] ADR=0 R9=1 LOOP=(R9,RF){ R0=ADR ; копируем адрес DI=1 C1=0,C2=0,C3=0,_CLKPULSE ;StandBy C1=0,C2=1,C3=1 ; Accept address Mode R1=0 ; fill address word R2=R0,R2=/10 ; Hi R1[R2]=1 ; reset bit LOOP=(9,0){DI=R1[I],_CLKPULSE} ; send Hi word R1=0 ; fill address word R2=R0,R2=%10 ; Lo R1[R2]=1 ; reset bit LOOP=(9,0){DI=R1[I],_CLKPULSE} ; send Lo word C1=0,C2=0,C3=0,_CLKPULSE ;StandBy C1=0,C2=1,C3=0,_CLKPULSE ;Erase LOOP=(0,250){CLK=1,P=100,CLK=0,P=100} C1=0,C2=0,C3=0,_CLKPULSE ;StandBy ADR=+1 PRINT=S("Erase: %lu",ADR) }