add version : 2.6
This commit is contained in:
parent
219e262544
commit
e6dfaa0582
|
|
@ -9,14 +9,12 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
#define of1 "filename [-w] [-D] [-B] [-os hex] : "
|
||||
#define of2 "filename [-w] [-D] [-B] [-ose hex]: "
|
||||
#define op1 "promtype [-ol hex] : "
|
||||
#define op2 "promtype : "
|
||||
#define op3 "promtype [-ol hex] [-V volt] [-S] : "
|
||||
#define op4 "promtype [-V volt] [-S] : "
|
||||
#define des " destination "
|
||||
#define sou " source "
|
||||
#define of1 "file [-w] [-D] [-B] [-os hex] : "
|
||||
#define of2 "file [-w] [-D] [-B] [-ose hex]: "
|
||||
#define op1 "prom [-ol hex] : "
|
||||
#define op2 "prom : "
|
||||
#define op3 "prom [-ol hex] [-V volt] [-S] : "
|
||||
#define op4 "prom [-V volt] [-S] : "
|
||||
|
||||
#define true 1
|
||||
#define false 0
|
||||
|
|
@ -34,15 +32,15 @@
|
|||
#define rby "bytemode "
|
||||
#define rfi "file:\n"
|
||||
#define rco "\007copy "
|
||||
#define eprom "promtyp "
|
||||
#define fle "file :"
|
||||
#define epr " even_prom :"
|
||||
#define opr " odd_prom :"
|
||||
#define eprom " prom "
|
||||
#define fle " file :"
|
||||
#define start "start"
|
||||
#define end "end"
|
||||
#define segment "segment"
|
||||
#define entry "entry"
|
||||
#define byte " byte"
|
||||
#define lob " low byte"
|
||||
#define hib " high byte"
|
||||
|
||||
#define err1 "invalid options\n"
|
||||
#define err2 "multiple defined\n"
|
||||
|
|
@ -116,6 +114,15 @@ int tpe1, tpe2; /* type eprom
|
|||
15-e27512*/
|
||||
long begadre1, begadre2; /* begin-adr. eprom */
|
||||
long lange1, lange2; /* laenge eprom */
|
||||
long adr_even, adr_odd; /* adr even/odd prom */
|
||||
long lg_even, lg_odd; /* laenge even/odd prom */
|
||||
long zwsp; /* zwsp */
|
||||
int even_odd, beven_odd; /* 0 ... even prom
|
||||
1 ... odd prom */
|
||||
int pradr; /* 0 ... start prom even-adresse
|
||||
1 ... start prom odd-adresse*/
|
||||
|
||||
long stepw,step1,step2,stepn; /* Stepweite, adressstep */
|
||||
char Vpp; /* programmierspannung Vpp
|
||||
1-25 V
|
||||
2-21 V
|
||||
|
|
@ -131,7 +138,7 @@ long prlang;
|
|||
long bbegadrf, bbegadre1, blangf, blange1;
|
||||
|
||||
char e0[] ="e2708";
|
||||
char e1[] ="e2716";
|
||||
char e2[] ="e2716";
|
||||
char e7[] ="e2732";
|
||||
char e8[] ="e2732a";
|
||||
char e9[] ="e2764";
|
||||
|
|
@ -191,7 +198,7 @@ inoptf()
|
|||
if (*ptr!='-') {error=1; outerr(); return;}
|
||||
ptr++;
|
||||
if (*ptr!='w'&&*ptr!='D'&&*ptr!='o'&&*ptr!='s'&&*ptr!='e'&&*ptr!='B') {error=1;outerr();return;}
|
||||
if (*ptr=='w') {if (kennw==0) {kennw=1;bre='l';}
|
||||
if (*ptr=='w') {if (kennw==0) {kennw=1;bre='h';}
|
||||
else {error=2;outerr();return;}
|
||||
}
|
||||
if (*ptr=='D') {if (kennD==0) {kennD=1;sect='d';}
|
||||
|
|
@ -301,16 +308,16 @@ char *vptr;
|
|||
{ j++;
|
||||
ptr=namee1;
|
||||
switch (j) {
|
||||
case 1: for (prlang=0x400,tpe1=0,vptr=e0,i=5;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 2: for (prlang=0x800,tpe1=1,vptr=e1,i=5;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 3: for (prlang=0x1000,tpe1=7,vptr=e7,i=5;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 4: for (prlang=0x1000,tpe1=8,vptr=e8,i=6;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 5: for (prlang=0x2000,tpe1=9,vptr=e9,i=5;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 6: for (prlang=0x2000,tpe1=10,vptr=e10,i=6;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 7: for (prlang=0x4000,tpe1=11,vptr=e11,i=6;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 8: for (prlang=0x4000,tpe1=12,vptr=e12,i=7;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 9: for (prlang=0x8000,tpe1=13,vptr=e13,i=6;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 10: for (prlang=0x10000,tpe1=15,vptr=e15,i=6;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 1: for (prlang=0x400L,tpe1=0,vptr=e0,i=5;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 2: for (prlang=0x800L,tpe1=1,vptr=e2,i=5;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 3: for (prlang=0x1000L,tpe1=7,vptr=e7,i=5;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 4: for (prlang=0x1000L,tpe1=8,vptr=e8,i=6;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 5: for (prlang=0x2000L,tpe1=9,vptr=e9,i=5;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 6: for (prlang=0x2000L,tpe1=10,vptr=e10,i=6;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 7: for (prlang=0x4000L,tpe1=11,vptr=e11,i=6;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 8: for (prlang=0x4000L,tpe1=12,vptr=e12,i=7;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 9: for (prlang=0x8000L,tpe1=13,vptr=e13,i=6;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 10: for (prlang=0x10000L,tpe1=15,vptr=e15,i=6;*ptr==*vptr&&i>0;ptr++,vptr++,i--); break;
|
||||
case 11: i=0; error=1; outerr(); return;
|
||||
}
|
||||
}while (i!=0 || *ptr != '\0');
|
||||
|
|
@ -349,23 +356,78 @@ char *vptr;
|
|||
begadre1=0L;
|
||||
lange1=0x400L;}
|
||||
|
||||
if (command=='p' && bre!='s')
|
||||
{
|
||||
if (begadre1 % 2>0) { /*ungerade adresse*/
|
||||
even_odd=1;
|
||||
pradr=1;
|
||||
adr_even=(begadre1+1)/2;
|
||||
}
|
||||
else {/*gerade adresse*/
|
||||
even_odd=0;
|
||||
pradr=0;
|
||||
adr_even=begadre1/2;
|
||||
}
|
||||
adr_odd=begadre1/2;
|
||||
if ((adr_even>=prlang) || (adr_odd>=prlang))
|
||||
{error=1; outerr(); return;}
|
||||
if (lange1==0L) {
|
||||
lg_even=prlang-adr_even;
|
||||
lg_odd=prlang-adr_odd;
|
||||
}
|
||||
else {
|
||||
if (lange1 % 2>0) {/*ungerade laenge*/
|
||||
if (even_odd==1) {/*ungerade adresse*/
|
||||
lg_odd=(lange1+1)/2;
|
||||
lg_even=lange1/2;
|
||||
}
|
||||
else {/*gerade adresse*/
|
||||
lg_even=(lange1+1)/2;
|
||||
lg_odd=lange1/2;
|
||||
}
|
||||
}
|
||||
else {/*geradelaenge*/
|
||||
lg_even=lange1/2;
|
||||
lg_odd=lg_even;
|
||||
}
|
||||
}
|
||||
if ((adr_even+lg_even>prlang) || (adr_odd+lg_odd>prlang))
|
||||
{error=1; outerr(); return;}
|
||||
langf=lg_even+lg_odd;
|
||||
zwsp=begadrf+langf;
|
||||
if (zwsp>0xffffL) {
|
||||
zwsp=zwsp-0xffffL;
|
||||
zwsp=zwsp/2L;
|
||||
lg_even=lg_even-zwsp;
|
||||
lg_odd=lg_odd-zwsp;
|
||||
if (pradr==0) lg_odd--;
|
||||
else lg_even--;
|
||||
langf=lg_even+lg_odd;
|
||||
}
|
||||
if (even_odd==1) {/*odd prom*/
|
||||
begadre1=adr_odd;
|
||||
lange1=lg_odd;
|
||||
}
|
||||
else {/*even prom*/
|
||||
begadre1=adr_even;
|
||||
lange1=lg_even;
|
||||
}
|
||||
}
|
||||
if (bre=='s')
|
||||
{
|
||||
if (begadre1>=prlang) {error=1; outerr(); return;}
|
||||
|
||||
if (begadre1+lange1>prlang) {error=1; outerr(); return;}
|
||||
|
||||
if (lange1==0L) lange1=prlang-begadre1;
|
||||
|
||||
if (command=='p')
|
||||
{langf=lange1;
|
||||
if (bre!='s') {langf=langf+langf;
|
||||
if (langf>0xffffL) {langf=0xffffL;
|
||||
lange1=langf/2;}}}
|
||||
|
||||
langf=lange1;
|
||||
}
|
||||
if (command=='b') {if (kenneo==1||kennel==1)
|
||||
{error=1; outerr(); return;}}
|
||||
|
||||
bbegadrf=begadrf; bbegadre1=begadre1;
|
||||
blangf=langf; blange1=lange1; bbre=bre;
|
||||
blangf=langf; blange1=lange1; bbre=bre; beven_odd=even_odd;
|
||||
}
|
||||
|
||||
/* ausgabe ready to program...... ; ready to copy ......
|
||||
|
|
@ -397,13 +459,14 @@ long ende, endf;
|
|||
|
||||
if (answer=='r') {begadrf=bbegadrf; begadre1=bbegadre1;
|
||||
langf=blangf; lange1=blange1; bre=bbre;
|
||||
even_odd=beven_odd;
|
||||
eofseg=0;
|
||||
mofy=false;
|
||||
endf=begadrf+langf;
|
||||
ende=begadre1+lange1;
|
||||
if (ende>prlang)
|
||||
{lange1=prlang-begadre1;
|
||||
if (bre=='s') endf=begadrf+lange1;
|
||||
else endf=begadrf+lange1+lange1;
|
||||
endf=begadrf+lange1;
|
||||
langf=endf-begadrf;
|
||||
ende=lange1+begadre1;}}
|
||||
else {
|
||||
|
|
@ -417,31 +480,77 @@ long ende, endf;
|
|||
case 'l': bre='h'; break;
|
||||
case 'h': bre='l'; break;
|
||||
}
|
||||
beven_odd=even_odd;
|
||||
switch (even_odd)
|
||||
{
|
||||
case 0: even_odd=1; break;
|
||||
case 1: even_odd=0; break;
|
||||
}
|
||||
bbegadrf=begadrf; bbegadre1=begadre1;
|
||||
blangf=langf; blange1=lange1;
|
||||
if (bre!='h') {begadrf=begadrf+langf;
|
||||
if (bre=='s') {begadrf=begadrf+langf;
|
||||
begadre1=begadre1+lange1;
|
||||
if (begadre1>=prlang) {begadre1=0;
|
||||
lange1=prlang;
|
||||
if (bre=='s') langf=lange1;
|
||||
else langf=lange1+lange1;}}
|
||||
langf=lange1;
|
||||
}
|
||||
}
|
||||
if (bre=='h') {begadrf=begadrf+langf;
|
||||
adr_even=adr_even+lg_even;
|
||||
if (adr_even>=prlang)
|
||||
{adr_even=0;
|
||||
lg_even=prlang;
|
||||
}
|
||||
else {if ((adr_even+lg_even)>prlang)
|
||||
lg_even=prlang-adr_even;
|
||||
}
|
||||
adr_odd=adr_odd+lg_odd;
|
||||
if (adr_odd>=prlang)
|
||||
{adr_odd=0;
|
||||
lg_odd=prlang;
|
||||
}
|
||||
else {if ((adr_odd+lg_odd)>prlang)
|
||||
lg_odd=prlang-adr_odd;
|
||||
}
|
||||
langf=lg_even+lg_odd;
|
||||
endf=begadrf+langf;
|
||||
if (endf>0xffffL)
|
||||
{endf=endf-0xffffL;
|
||||
endf=endf/2;
|
||||
lg_even=lg_even-endf;
|
||||
lg_odd=lg_odd-endf;
|
||||
langf=lg_even+lg_odd;
|
||||
if (pradr==0) lg_odd--;
|
||||
else lg_even--;
|
||||
langf=lg_even+lg_odd;
|
||||
}
|
||||
}
|
||||
if (bre!='s') {if (even_odd==1)
|
||||
{/*odd prom*/
|
||||
begadre1=adr_odd;
|
||||
lange1=lg_odd;
|
||||
}
|
||||
else {/*even prom*/
|
||||
begadre1=adr_even;
|
||||
lange1=lg_even;
|
||||
}
|
||||
}
|
||||
|
||||
endf=begadrf+langf;
|
||||
ende=begadre1+lange1;
|
||||
if (ende>prlang)
|
||||
{lange1=prlang-begadre1;
|
||||
if (bre=='s') endf=begadrf+lange1;
|
||||
else endf=begadrf+lange1+lange1;
|
||||
endf=begadrf+lange1;
|
||||
langf=endf-begadrf;
|
||||
ende=lange1+begadre1;}
|
||||
ende=lange1+begadre1;
|
||||
}
|
||||
}
|
||||
if (command=='p')
|
||||
{if (endf>0xffffL) {langf=0xffffL - begadrf;
|
||||
if (bre != 's') lange1=langf/2;
|
||||
else lange1=langf;
|
||||
lange1=langf;
|
||||
endf=begadrf+langf;
|
||||
ende=begadre1+lange1;}
|
||||
if (endf==0xffffL && bre!='l')
|
||||
if (endf==0xffffL && bre!='h')
|
||||
{eofseg=1;
|
||||
warning=12;
|
||||
outwar();}}
|
||||
|
|
@ -458,12 +567,28 @@ long ende, endf;
|
|||
case 't': printf ("%s",rte); break;}
|
||||
|
||||
if (command=='p') {
|
||||
printf ("%s %s %s %s %X %s %X %s %X",sou,fle,namef,segment,segnr,start,begadrf,end,(endf-1));
|
||||
if (bre=='l') printf ("%s \n",lob);
|
||||
else if (bre=='h') printf ("%s \n",hib);
|
||||
else printf ("%s \n",byte);
|
||||
printf ("%s %s: %s %s %X %s %X %s",des,eprom,namee1,start,begadre1,end,(ende-1),byte);}
|
||||
else printf ("%s %s: %s %s %X %s %X %s",sou,eprom,namee1,start,begadre1,end,(ende-1),byte);
|
||||
/* adressstep */
|
||||
step1=begadrf;
|
||||
stepw=2L;
|
||||
if (bre=='s') stepw=1L;
|
||||
else if (bre=='l') step1++;
|
||||
step2=step1+stepw;
|
||||
if (step2>endf-1) step2=step1;
|
||||
stepn=endf-1;
|
||||
if (bre!='s') {if (step1 % 2 > 0) {/*ungerade begadrf*/
|
||||
if ((endf-1) % 2 <= 0) stepn--;
|
||||
}
|
||||
else {/*gerade begadrf*/
|
||||
if ((endf-1) % 2 > 0) stepn--;
|
||||
}
|
||||
}
|
||||
printf ("%s %s %s %X %s %X, %X ... %X %s\n",fle,namef,segment,segnr,start,step1,step2,stepn,end);
|
||||
if (bre=='s') printf ("%s: ",eprom);
|
||||
else {if (even_odd==0) printf ("%s ",epr);
|
||||
else printf ("%s ",opr);}
|
||||
printf ("%s %s %X %s %X %s",namee1,start,begadre1,end,(ende-1),byte);
|
||||
}
|
||||
else printf ("%s: %s %s %X %s %X %s",eprom,namee1,start,begadre1,end,(ende-1),byte);
|
||||
|
||||
if (command=='p') printf (" ?(y/r/s/m/v/l/t/q)");
|
||||
else printf (" ?(y/r/s/q)");
|
||||
|
|
@ -506,6 +631,7 @@ long ende1, ende2, endf;
|
|||
if (endf>0xffffL) {langf=0xffffL - begadrf;
|
||||
if (bre != 's') lange1=langf/2;
|
||||
else lange1=langf;
|
||||
prlang=lange1;
|
||||
endf=begadrf+langf;
|
||||
ende1=begadre1+lange1;}
|
||||
if (endf==0xffffL) {eofseg=1;
|
||||
|
|
@ -516,22 +642,22 @@ long ende1, ende2, endf;
|
|||
{printf ("%s",rdy);
|
||||
if (command=='b') {printf ("%s",rby);
|
||||
out_rpc();
|
||||
printf ("%s %s: %s",sou,eprom,namee1);
|
||||
printf ("%s: %s",eprom,namee1);
|
||||
printf (" ?(y/q)");}
|
||||
else if (command=='f') {printf ("%s",rfi);
|
||||
printf ("%s %s: %s %s %X %s %X %s",sou,eprom,namee1,start,begadre1,end,(ende1-1),byte);
|
||||
printf ("%s: %s %s %X %s %X %s",eprom,namee1,start,begadre1,end,(ende1-1),byte);
|
||||
switch (bre)
|
||||
{
|
||||
case 's': printf ("\n"); break;
|
||||
case 'l': printf (" low_address\n"); break;
|
||||
case 'h': printf (" high_address\n"); break;
|
||||
}
|
||||
printf ("%s %s %s %s %X %s %X %s %X %s %X",des,fle,namef,segment,segnr,entry,entryf,start,begadrf,end,(endf-1));
|
||||
printf ("%s %s %s %X %s %X %s %X %s %X",fle,namef,segment,segnr,entry,entryf,start,begadrf,end,(endf-1));
|
||||
printf (" ?(y/m/l/q)");}
|
||||
else if (command=='c') {printf ("%s",rco);
|
||||
out_rpc();
|
||||
printf ("%s %s: %s %s %X %s %X %s\n",sou,eprom,namee1,start,begadre1,end,(ende1-1),byte);
|
||||
printf ("%s %s: %s %s %X %s %X %s",des,eprom,namee2,start,begadre2,end,(ende2-1),byte);
|
||||
printf ("%s: %s %s %X %s %X %s\n",eprom,namee1,start,begadre1,end,(ende1-1),byte);
|
||||
printf ("%s: %s %s %X %s %X %s",eprom,namee2,start,begadre2,end,(ende2-1),byte);
|
||||
printf (" ?(y/l/m/v/r/q)");}
|
||||
gets (cmdbuf);
|
||||
if (cmdbuf[1]!='\0') answer='w';
|
||||
|
|
|
|||
Loading…
Reference in New Issue