C02/test/loops.c02

121 lines
2.2 KiB
Plaintext

/************************************
* LOOPS - Test C02 Loop Structures *
************************************/
//Specify System Header using -H option
#include <stddef.h02>
#include <stdio.h02>
char aa,ii; //Function Variables
char b; //Comparison Variable
char i; //Loop Counter
void putlin() {putstr(); newlin();}
void failed() {putlin(" FAILED");}
void passed() {putlin(" PASSED");}
main:
putlin("TESTING LOOPS");
/* Test If/Goto Loop */
putstr("IF ");
i = 0;
ifloop:
putchr('0'+i);
i++;
if (i < 8) goto ifloop;
if (i=8) passed(); else failed();
/* Test Block If */
putstr("BLOCK ");
b = 1;
if (b>0) {
prhex(b);
putstr(" > ");
prhex(0);
passed();
}
else failed();
putstr(" IF ");
b = 0;
if (b>0) failed();
else {
putchr('0'+i);
putstr(" = ");
prhex(0);
passed();
}
/* Test While Loop */
putstr("WHILE ");
i = 0;
while (i < 8) {
putchr('0'+i);
i++;
}
if (i=8) passed(); else failed();
/* Test Do Loop */
putstr("DO ");
i = 0;
do {
putchr('0'+i);
i++;
} while (i<8);
if (i=8) passed(); else failed();
/* Test For Loop */
putstr("FOR ");
i = 0;
for (i=0;i<8;i++) {
putchr('0'+i);
}
if (i=8) passed(); else failed();
/* While with Break */
putstr("BREAK ");
i = 0;
while ($FF) {
if (i = 8) break;
putchr('0'+i);
i++;
}
if (i=8) passed(); else failed();
/* For with Continue */
putstr("CONT ");
for (i=0;i<16;i++) {
if (i & 1) { continue; i=$FF;}
putchr('A'+i);
}
if (i=16) passed(); else failed();
/* Test Do with Break and Continue*/
i = 0;
putstr("DO BC ");
do {
i++;
if (!i&1) {continue; i=$FF;}
if (i>16) break;
putchr('A'+i);
} while ($FF);
if (i=17) passed(); else failed();
/* Test If/Else, Select in For Loop */
for(i = 0;i<4;i++) {
select (i) {
case 0: putstr("FOR "); b=0;
case 1: putstr(" IF "); b=1;
case 2: putstr(" ELSE "); b=2;
case 3: putstr(" SELECT "); b=3;
default: putstr(" ERROR! "); b=$FF;
}
putchr('0'+i);
if (i & 1) putstr("-ODD "); else putstr("-EVEN");
if (i=b) passed(); else failed();
}
putlin("ALL TESTS COMPLETE");
goto exit;