/******************************************** * TESTSTKX - Test Extended Stack Functions * * Assumes free RAM from $7FFF to $807E * ********************************************/ //use -h option on command line when compiling #include #include #include #include #include #include #include #include char c,f,g,i; char aa,xx,yy; char zz,lo,hi; const char r={6,7,8,9}; const char s="Test String"; char t[255]; main: for (i=0;i<$20;i++) srclo[i]=0; //Initialize Pointers puts("Setting Stack Start Address\t"); puts("stkbgn($7FFF)\t"); stkbgn(&$7FFF); lo=stkslo; hi=stkshi; setdst("stks"); cklohi(&$7FFF); puts("Setting Stack End Address\t"); puts("stkend($807E)\t"); stkend(&$807E); lo=stkelo; hi=stkehi; setdst("stke"); cklohi(&$807E); puts("Resetting Stack Pointer\t\t"); puts("stkrst()\t"); stkrst(); lo=stklo; hi=stkhi; setdst("stk"); cklohi(0,&$7FFF); chksiz(#FALSE, &0); puts("Pushing Array onto Stack\t"); puts("stkpsh(@r,$r)\t"); aa,hi,lo=stkptr(); //Save Stack Pointer f=stkpsh(@r,&r); printf(f,"bytes=%d:"); setdst(*,hi,lo); g=(memcmp(@r, &r)==0) ? #TRUE : #FALSE; psorfl(f & g); chksiz(#TRUE, &5); chkptr(&$8004); puts("Pushing String onto Stack\t"); puts("stkstr(&s)\t"); aa,hi,lo=stkptr(); //Save Stack Pointer f=stkstr(&s); printf(f,"bytes=%d:"); setdst(*,hi,lo); g=(strcmp(&s)==0) ? #TRUE : #FALSE; psorfl(f & g); chksiz(#TRUE, &18); chkptr(&$8011); puts("Swapping Top and Second Entry\t"); puts("stkswp()\t"); f=stkswp(); printf(f,"bytes=%d:"); g=(f==4) ? #TRUE : #FALSE; psorfl(f & g); chksiz(#TRUE, &18); chkptr(&$8011); puts("Popping Array off Stack\t\t"); puts("stkpop(&t)\t"); f=stkpop(&t); prtary(f); puts(": "); g=(memcmp(f,&r)==0) ? #TRUE : #FALSE; psorfl(f & g); chksiz(#TRUE, &13); chkptr(&$800C); puts("Popping String off Stack\t"); puts("stkpop(&t)\t"); f=stkpop(&t); setdst(&t); printf("\"%s\":"); g=(strcmp(&s)==0) ? #TRUE : #FALSE; psorfl(f & g); chksiz(#FALSE, &0); chkptr(&$7FFF); putln("Tests Complete"); goto exit; if (anykey() == #esckey) goto exit; void chkptr(aa,yy,xx) { puts("\tChecking Stack Pointer\t\t\t"); puts("address=$"); prbyte(stkhi); prbyte(stklo); putc(':'); xx = (stklo == xx) ? #TRUE : #FALSE; yy = (stkhi == yy) ? #TRUE : #FALSE; psorfl(xx & yy); } void prtary(aa) { putc('{'); for (i=0;i