diff --git a/WEGA/src/cmd/pburn/pb.command.c b/WEGA/src/cmd/pburn/pb.command.c new file mode 100644 index 0000000..0f9e064 --- /dev/null +++ b/WEGA/src/cmd/pburn/pb.command.c @@ -0,0 +1,254 @@ +/**************************************************************** +* * +* pburn - eprom programmer * +* * +* pb1.command.c : wega p8000/16-bit-teil * +* * +****************************************************************/ + + +#define EOF "\n\n*** end of file\n" +#define re1 "\n\nread source promtyp" +#define cte "\n\nchange to destination promtyp" +#define rtr "\nready to read?" +#define rtc "\nready to copy?" +#define rtv "\nready to verify?" +#define des "destination " +#define sou "source " +#define npr "change to next prom?" +#define npl "change to next prom low_address?" +#define nph "change to next prom high_address?" +#define per "prom erased\n" +#define pne "prom not erased\n" +#define true 1 +#define false 0 + +extern int qflag, errflag, warning, mofy, answer, command, eof, next; +extern int tpe1, tpe2; +extern char bre, progbuf[0x2000]; +extern char namee1[20], namee2[20], cmdbuf[100]; +extern unsigned begadre1, begadre2, lange1, lange2, begadrf; + +/* p: programming eprom + ------------------------- */ + + +program() +{ + do { do {printf ("\n%s",sou); + outoptf(); /*ausgabe filename [options]:*/ + inoptf(); /*eingabe filename [options]*/ + if (qflag==true) return; + }while (errflag==true); + openfile(); + }while (errflag==true); + do + {printf ("%s",des); + outopte(); /*ausgabe eprom [options]*/ + inopte(); /*eingabe eprom [options]*/ + if (qflag==true) return; + }while (errflag==true); + answer=' '; + do + {ready(); /*Ready: .....*/ + if (qflag==true) return; + if (mofy==false) readfile(); + if (errflag==true) {if (qflag==true) return; + else {errflag=false; + answer=' '; + continue;}} + if (warning==true) {qflag=true; return;} + if (eof==true) {qflag=true; printf ("%s",EOF); return;} + if (answer=='y') progprom(); + else if (answer=='v') verify(); + else if (answer=='m') modify(); + else if (answer=='l') {listbuf('f',begadre1,lange1,progbuf); + mofy=true;} + else if (answer=='t') {crc ('f',progbuf,lange1); + mofy=true;} + }while (errflag==false); +} + +/* l: listing eprom + t: crc-test eprom + ---------------------- */ + +list_crc() +{ + bre='s'; + do + {printf ("\n%s",sou); + outopte(); + inopte(); + if (qflag==true) return; + }while (errflag==true); + answer=' '; + do + {ready(); + if (qflag==true) return; + readprom('c',tpe1,begadre1,lange1,progbuf); + if (errflag==true) {if (qflag==true) return; + else {errflag=false; + answer=' '; + continue;}} + if (command=='l') listprom(); + else {crcprom(); + if (warning==0) printf ("%s",per); + else printf ("%s",pne);} + }while (errflag==false); +} + + + +/* f: eprom to file + --------------------- */ + +file() +{ + do + { + if (next==true) {switch (bre) + { + case 's': printf ("\n%s",npr); break; + case 'l': printf ("\n%s",npl); break; + case 'h': printf ("\n%s",nph); break; + } + gets (cmdbuf); + if (cmdbuf[0] != 'y' || cmdbuf[1] != '\0') {qflag=true; + return;}} + do + {printf ("\n%s",sou); + outopte(); + inopte(); + if (qflag==true) return; + }while (errflag==true); + if (next==false) { + do + {printf ("%s",des); + outoptf(); + inoptf(); + if (qflag==true) return; + }while (errflag==true); + answer=' '; + } + do + {ready1(); + if (qflag==true) return; + if (mofy==false) {readprom (' ',tpe1,begadre1,lange1,progbuf); + if (errflag==true) {if (qflag==true) return; + else {errflag=false; + answer=' '; + continue;}}} + if (answer=='y') {promfile(); mofy=false; + if (warning==true) {qflag=true; return;} + next=true;} + else if (answer=='l') {listprom(); mofy=true;} + else if (answer=='m') modprom(); + }while ((errflag==false && next==false) || mofy==true); + }while (errflag==false && next==true); +} + + + +/* b: bytemode eprom + ---------------------- */ + +bytemode() +{ + bre='s'; + do + {printf ("\n%s",sou); + outopte(); + inopte(); + if (qflag==true) return; + }while (errflag==true); + answer=' '; + do + {ready1(); + if (qflag==true) return; + byte(); + }while (errflag==false); +} + +/* c: copy eprom's + -------------------- */ + +copy() +{ +int c, answer1; + + bre='s'; + do + {printf ("\n%s",sou); + outopte(); + inopte(); + if (qflag==true) return; + }while (errflag==true); + tpe2=tpe1; + lange2=lange1; + begadre2=begadre1; + for (c=0;c<20;c++) namee2[c]=namee1[c]; + do + {printf ("%s",des); + outopte(); + inopte(); + if (tpe1==0 && (begadre1 != 0 || lange1 != 0x400)) {warning=11; outwar(); + begadre1=0; lange1=0x400;} + if (qflag==true) return; + }while (errflag==true); + + if (lange1