]> 4ch.mooo.com Git - 16.git/blob - src/sega.c
doslib update
[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 {
6 #ifdef __WATCOMC__\r
7         struct list __based(__self) *next;
8 #endif
9 #ifdef __BORLANDC__
10         struct list _seg *next;
11 #endif\r
12         int         value;\r
13 };\r
14 \r
15 void main(int argc, char *argv[])\r
16 {\r
17         int         i;
18 #ifdef __WATCOMC__\r
19         __segment   segu;
20         void __based(__self) *pee;\r
21         struct list __based(segu) *head;\r
22         struct list __based(segu) *p;
23 #endif
24 #ifdef __BORLANDC__
25         void _seg *pee;\r
26         struct list _seg *head;\r
27         struct list _seg *p;
28 #endif\r
29 \r
30     /* allocate based heap */\r
31     segu = _bheapseg( 65536 );\r
32     if( segu == _NULLSEG ) {\r
33       printf( "Unable to allocate based heap\n" );\r
34       exit( 1 );\r
35     }\r
36 \r
37     /* create a linked list in the based heap */\r
38     head = 0;\r
39     for( i = 1; i < 4096; i++ ) {\r
40       p = _bmalloc( segu, sizeof( struct list ) );\r
41       if( p == _NULLOFF ) {\r
42         printf( "_bmalloc failed\n" );\r
43         break;\r
44       }\r
45       p->next = head;\r
46       p->value = i;\r
47       head = p;\r
48     }\r
49 \r
50     /* traverse the linked list, printing out values */\r
51     for( p = head; p != 0; p = p->next ) {\r
52                 if(p==head || p->next==0 || p==pee){
53                         printf("Segu = %04X", p); printf( "     Value = %d\n", p->value );
54                 }\r
55     }\r
56
57         printf("program=%FP\n", *argv[0]);
58         printf("seg=%04X\n", segu);
59 \r
60     /* free all the elements of the linked list */\r
61     for( ; p = head; ) {\r
62       head = p->next;\r
63       _bfree( segu, p );\r
64     }\r
65     /* free the based heap */\r
66     _bfreeseg( segu );
67 }\r