C02/test/structs.c02

121 lines
2.3 KiB
Plaintext

/*********************************
* STRUCTS - Test C02 structures *
*********************************/
//Specify System Header using -H option
#include <stddef.h02>
#include <stdlib.h02>
#include <stdio.h02>
#include <stdiox.h02>
#include <memory.h02>
#include <string.h02>
char d, i;
char aa,xx,yy;
int yx;
//Define Structure
struct record { /* Sample Record */
char name[8]; //Name
char index; //Index
int addr; //Address
char data[128]; //Data
};
//Declare Structure Variable
struct record srcrec;
struct record dstrec;
//Structs Containing Structs
struct point {char x, y; };
struct point pnt;
struct rect {struct point toplft, btmrgt; };
struct rect box;
struct frame {struct rect outer, inner; };
struct frame fram;
main:
//Set Structure Members
strdst(srcrec.name); strcpy("RECNAME");
srcrec.index = 1;
srcrec.addr = &srcrec;
for (i = 0; i<=@srcrec.data; i++)
srcrec.data[i] = i;
//Clear Destination Record
memclr(@dstrec, dstrec);
prtdst();
//Copy Source Record into Destination Record
memdst(dstrec);
memcpy(@srcrec, srcrec);
prtdst();
//Clear Box
memclr(@box, box); //Clear Box Members
prtbox(""); //Print Box Members
//Set Box Members
box.toplft.x=1; box.toplft.y=2;
box.btmrgt.x=8; box.btmrgt.y=9;
prtbox("");
newlin();
//Clear Frame
memclr(@fram, fram); //Clear Frame Members
prtfrm(); //Print Frame Members
//Set Frame Members
fram.outer.toplft.x=10; fram.outer.toplft.y=11;
fram.outer.btmrgt.x=98; fram.outer.btmrgt.y=99;
fram.inner.toplft.x=22; fram.inner.toplft.y=23;
fram.inner.btmrgt.x=86; fram.inner.btmrgt.y=87;
prtfrm();
newlin();
goto exit;
//Print Destination Record
void prtdst() {
setdst(dstrec.name); printf("REC.NAME=\"%s\"%n");
printf(dstrec.index, "REC.INDEX=%d%n");
setdst(dstrec.addr); printf("REC.ADDR=$%w%n");
puts("REC.DATA=[");
for (i = 0; i<@dstrec.data; i++) {
if (i) putc(',');
putdec(dstrec.data[i]);
}
putln("]");
anykey();
}
//Print Frame
void prtfrm() {
cpybox(fram.outer); prtbox("OUTER.");
cpybox(fram.inner); prtbox("INNER.");
anykey();
}
void cpybox() {
savrxy(); setdst(box);
resrxy(); memcpy(@box);
}
//Print Box
void prtbox(yx) {
puts(yx); puts("TOPLFT."); prtpnt(box.toplft);
puts(yx); puts("BTMRGT."); prtpnt(box.btmrgt);
}
//Print Point
void prtpnt() {
savrxy(); setdst(pnt);
resrxy(); memcpy(@pnt);
printf(pnt.x,"X=%d,");
printf(pnt.y,"Y=%d%n");
}