]> 4ch.mooo.com Git - 16.git/blob - src/sega.c
== major changes and experimentation and improvements here and there! ww ==
[16.git] / src / sega.c
1 #include <stdio.h>\r
2 #include <stdlib.h>\r
3 #include <malloc.h>\r
4 \r
5 struct list {\r
6     struct list __based(__self) *next;\r
7     int         value;\r
8 };\r
9 \r
10 void main(int argc, char *argv[])\r
11   {\r
12     int         i;\r
13     __segment   segu;\r
14     struct list __based(segu) *head;\r
15     struct list __based(segu) *p;\r
16 \r
17     /* allocate based heap */\r
18     segu = _bheapseg( 1024 );\r
19     if( segu == _NULLSEG ) {\r
20       printf( "Unable to allocate based heap\n" );\r
21       exit( 1 );\r
22     }\r
23 \r
24     /* create a linked list in the based heap */\r
25     head = 0;\r
26     for( i = 1; i < 10; i++ ) {\r
27       p = _bmalloc( segu, sizeof( struct list ) );\r
28       if( p == _NULLOFF ) {\r
29         printf( "_bmalloc failed\n" );\r
30         break;\r
31       }\r
32       p->next = head;\r
33       p->value = i;\r
34       head = p;\r
35     }\r
36 \r
37     /* traverse the linked list, printing out values */\r
38     for( p = head; p != 0; p = p->next ) {\r
39         printf("Segu = %04X %FP", p, p);\r
40       printf( " Value = %d\n", p->value );\r
41     }\r
42 \r
43     /* free all the elements of the linked list */\r
44     for( ; p = head; ) {\r
45       head = p->next;\r
46       _bfree( segu, p );\r
47     }\r
48     /* free the based heap */\r
49     _bfreeseg( segu );
50         printf("program=%P\n", *argv[0]);
51         printf("seg=%P\n", segu);\r
52 }\r