/*********************************************** * TESTSTK - Test stkswp() from stacks library * ***********************************************/ #include #include #include #include #include #include #include #include char c,f,g,i; char aa,xx,yy; char 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); puts("Getting Stack Pointer Address\t"); puts("stkptr()\t"); aa, hi, lo = stkptr(); setdst(""); cklohi(0,&$7FFF); 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); chkptr(&$8004); puts("Swapping with only one Entry\t"); puts("stkswp()\t"); f=stkswp(); printf(f,"bytes=%d:"); g=(f==0) ? #TRUE : #FALSE; psorfl(g); 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); chkptr(&$8011); puts("Setting Stack End Address\t"); puts("stkend($8013)\t"); stkend(&$8013 ); lo=stkelo; hi=stkehi; setdst("stke"); cklohi(&$8013); puts("Swapping w/ Unsufficient Space\t"); puts("stkswp()\t"); f=stkswp(); printf(f,"bytes=%d:"); g=(f==0) ? #TRUE : #FALSE; psorfl(g); chkptr(&$8011); puts("Setting Stack End Address\t"); puts("stkend($807E)\t"); stkend(&$807E); lo=stkelo; hi=stkehi; setdst("stke"); cklohi(&$807E); puts("Swapping Top and Second Entry\t"); puts("stkswp()\t"); f=stkswp(); printf(f,"bytes=%d:"); g=(f==4) ? #TRUE : #FALSE; psorfl(f & g); 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); 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); chkptr(&$7FFF); puts("Swapping with no entries\t"); puts("stkswp()\t"); f=stkswp(); printf(f,"bytes=%d:"); g=(f==0) ? #TRUE : #FALSE; psorfl(g); chkptr(&$7FFF); putln("Tests Complete"); 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