Help needed debugging TmpCreat128!
From
Harry Potter@3:770/3 to
All on Mon Dec 23 11:32:37 2019
Hi! I have yet to find the bug with my Template Creator 128 program. The Add Template module seems to work up to the call to Fields. The debug code I placed
just after the call seems to run. But then, it does not display the New Format prompt--even
though it is supposed to, as it is a new template disk--and displays an Insert Templates Disk message. I insert it and get the C128 Monitor. The PC is at F4433, where there is no code there. Following is the erroneous code: -------------------------
void tmp_add_main (void)
{
.//unsigned char i;
.//unsigned char /*i,*/ j;
//char c;
.//struct dbentry* cur;
.//bzero (&tmp_db, sizeof(tmp_db));
.//bzero (&input, sizeof(input));
.//cleardb ();
//bordercolor (0);cgetc ();
.//bzero (&input, sizeof(input));
//bordercolor (1);cgetc ();
.instmpdiskp();
tmpdb_open ();
//bgcolor (2);
./*curtemplate.name[0]=*///input.fmt[0]=0; .//fName.data.text=curtemplate.name;//input.name; .fTmp.data.text=input.out;//input.tmp;
.//fType.data.sel.sel=(cur->filetype=0);
.fType.data.sel.num=4;
.fType.data.sel.values=filetypes;
.//input.type=0;
.fType.data.sel.sel=&input.type;
.//fFmt.data.text=curtemplate.fmt;//input.fmt;
.//FillFmt();
.i=fFmt.data.sel.num=input.fmtnum=input.type=0;
//bgcolor (3);
.for (; i<8; ++i) {
..//if (tmp_db.usedfmts&(1<<i)) {
..if ((tmp_db.usedfmts>>i)&1) {
...//usedfmts[j]=tmp_db.fmts[i];
...//*getfmt(fFmt.data.sel.num)=getfmt (usedfmtsnums[fFmt.data.sel.num]=i); ...usedfmts[fFmt.data.sel.num]=tmp_db.fmts[ (usedfmtsnums[fFmt.data.sel.num]=i)];
...//usedfmtsnums[j]=i;
...++fFmt.data.sel.num;
..}
.}
//bgcolor (4);
.if (fFmt.data.sel.num<8) {
..//*getfmt(fFmt.data.sel.num)=snone;
..usedfmts[fFmt.data.sel.num]=snone;
..++fFmt.data.sel.num;
.}
.//numfmtsavail=j;
.//input.fmtnum=0;
.fFmt.data.sel.sel=&input.fmtnum;
.//fFmt.data.sel.num=numfmtsavail;
.fFmt.data.sel.values=usedfmts;
//cclearxy(i=0,23,39); cclearxy(0,24,39); .i=j=input.tmp[0]=input.out[0]=0;
.//clearline (23); clearline (24);
.//gotoxy (0,24); prints ("Insert template disk...");
.//cgetc();
.//promptdisk (instmpdisk);
.//for (; i<32 && (tmp_db.usedentries[i>>3]&(1<<(i&7))); ++i);
.//for (; i<32 && *(unsigned long*)(&tmp_db.usedentries)&(1<<i); ++i); //bgcolor (1);
.for (; j<32 && (*(unsigned long*)(&tmp_db.usedentries)>>j)&1; ++j);
.if (j==32) {
..//gotoxy (0, 23); printscr ("Template disk full!\n"
..//... "Press any key to continue...");
..///cgetc(); return;
..promptdisk ("Template disk full!"); return;
.}
.//cur=getdbent(j);//&tmp_db.entry[i]; .//fName.data.text=(cur=getent(j))->name; .//fName.data.text=(cur=getdbent(j))->name;
.//cur=getdbent(j);
.//cur=getent(j);
.//input.type=0;
.//fFmt.data.text=&(cur=getent(j))->filetype;
.fTmp.data.text=input.tmp;
.fName.data.text=input.out;//cur->name;
//bgcolor (1);
.if (dialog(&fInTemp)) return;
bgcolor (3); cgetc ();
.cur=getent(j);
.//strcpy (cur->name, input.tmp);
.//cur->filetype=input.type;
//bgcolor (3); cgetc ();
.if (!strcmp(usedfmts[input.fmtnum], snone))
.//if (usedfmts[input.fmtnum]==snone)
.{
//bgcolor (4); cgetc ();
..for (i=0; (tmp_db.usedfmts>>i)&1; ++i);
//bgcolor (5); cgetc ();
..gotoy (17);
//bgcolor (6); cgetc ();
..printf ("\nNew format name");
..GetInput (getfmt(i), 17);
..tmp_db.usedfmts|=1<<i;
.} else {
..//for (; strcmp(getfmt(i), getfmt(input.fmtnum)); ++i); ..i=usedfmts[input.fmtnum];
.} cur->fmt=i;
.//gotoxy (0,24); prints ("Insert input disk... ");
.//cgetc();
.promptdisk ("Insert input disk...");
.//strcpy (curtemplate.name, input.tmp);
.//strcpy (curtemplate.fmt, input.fmt);
.//sprintf (fi,"0:%s,%c,r", input.name, filetypes[input.type][0]);
.//strcpy (curtemplate.name, input.tmp);
.//strcpy (curtemplate.fmt, input.fmt);
.//j=filetypes[input.type][0];
.//sprintf (fi,"%s,%c", curtemplate.name, filetypes[input.type][0]);
.//sprintf (fi, "%s,%c", curtemplate.name, j=filetypes[input.type][0]); .//sprintf (fi, &qfilename[2], curtemplate.name, j=filetypes[cur->filetype=input.type][0]);
//cputsxy (0,1, fi); cgetc();
.//cbm_open (filenum, 8, CBM_READ, fi);
.//openfile (CBM_READ);
.//openfile (curtemplate.name, CBM_READ);
.//openfile (cur->name, CBM_READ);
//promptdisk (input.tmp);
bgcolor (4); cgetc();//
.openfile (input.out, CBM_READ);
bgcolor (2);
#ifdef __C128__
.cur->size=/*curtemplate.size=*/bank1_cbm_read(filenum, 0x400, 0xF000);
#else
.cur->size=/*curtemplate.size=*/h_cbm_read(filenum, templatedata, 0x9800); #endif
.//cur->size=h_cbm_read(filenum, curtemplate.data, 32767); .//curtemplate.size=cbm_read(filenum, curtemplate.data, 32767);
bgcolor (3);
.cbm_close (filenum);
//chn15();
//clrscr(); printf ("size = %d\n", curtemplate.size); cgetc();
.//if ((signed) curtemplate.size<0) {
.if ((signed) cur->size==-1) {
..//gotobottom (); puts ("Error loading template!");
..//cgetc(); return;
..promptdisk ("Error loading template!");
..return;
.}
.//if (curtemplate.size==32767) {
.//if ((int)curtemplate.size<0) {
.if (!cbm_k_readst()&0x40) {
..//gotobottom (); puts ("Template too large!");
..//cgetc(); return;
..promptdisk ("Template too large!");
..return;
.}
.//strcpy (tmp_db.entry[i].name, curtemplate.name);
.strcpy (cur->name, input.tmp);
.//strcpy (cur->name, input.tmp);
.//cur->size=curtemplate.size;
.cur->filetype=input.type;
.//tmp_db.usedentries[i>>3]|=(1<<(i&7));
.__asm__ ("\tlda\t_j\n"
.. //"\tpha\n"
.. "\tand\t#7\n"
.. "\ttay\n"
.. //"\tpla\n"
.. "\tlda\t_j\n"
.. "\tlsr\n"
.. "\tlsr\n"
.. "\tlsr\n"
.. "\ttax\n"
.. //"\tlda\t_tmp_db+17,x\n"
.. "\tlda\t#1\n"
.. "\tcpy\t#0\n"
.. "\tbeq\t@zz12\n"
.. "@zz11:\n"
.. "\tasl\n"
.. "\tdey\n"
.. "\tbne\t@zz11\n"
.. "@zz12:\n"
.. "\tora\t_tmp_db+18,x\n"
.. "\tsta\t_tmp_db+18,x\n"
.. );
.//*(unsigned long*)(&tmp_db.usedentries)|=(1<<i);
.//gotoxy (0,24); prints ("Insert template disk...");
.//cgetc();
.//promptdisk (instmpdisk);
.instmpdiskp ();
.//sprintf (fi, "@:%s,%c", input.tmp, j);
.//sprintf (fi, qfilename, input.tmp, j);
//cputsxy (0,1, fi); cgetc();
.//cbm_open (filenum, 8, CBM_WRITE, fi);
.//openfile (CBM_WRITE);
.tmpdb_save();
.openfile (cur->name, CBM_WRITE);
//printf ("ST: %d\n", (unsigned) cbm_k_readst()); cgetc();
.//h_cbm_write (filenum, curtemplate.data, cur->size=curtemplate.size);
#ifdef __C128__
.bank1_cbm_write (filenum, 0x400, cur->size);
#else
.h_cbm_write (filenum, templatedata, cur->size);
#endif
.//cbm_write (filenum, curtemplate.data, curtemplate.size);
//chn15();
.cbm_close (filenum);
}
-------------------------
--- SoupGate-Win32 v1.05
* Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3)