From: sparky4 Date: Wed, 22 Jul 2015 19:33:53 +0000 (-0500) Subject: facking sega.exe added for learning X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=6706a67fb8176362055d99c4b0b34294d53a852c;p=16.git facking sega.exe added for learning modified: 16.hed modified: makefile modified: src/lib/16_mm.h new file: src/sega.c --- diff --git a/16.hed b/16.hed index 5d24fc79..4c83af50 100644 Binary files a/16.hed and b/16.hed differ diff --git a/makefile b/makefile index 7e24fab5..68c74339 100644 --- a/makefile +++ b/makefile @@ -42,6 +42,10 @@ scroll.exe: scroll.$(OBJ) 16.lib mapread.$(OBJ) jsmn.$(OBJ) dos_kb.$(OBJ) wcl $(FLAGS) scroll.$(OBJ) 16.lib mapread.$(OBJ) jsmn.$(OBJ) dos_kb.$(OBJ) scroll.$(OBJ): $(SRC)scroll.c wcl $(FLAGS) -c $(SRC)scroll.c +sega.exe: sega.$(OBJ) + wcl $(FLAGS) -c sega.$(OBJ) +sega.$(OBJ): $(SRC)sega.c + wcl $(FLAGS) -c $(SRC)sega.c test.exe: test.$(OBJ) gfx.lib wcl $(FLAGS) test.$(OBJ) gfx.lib diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index ccf1a59b..9daee338 100644 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -85,10 +85,10 @@ //========================================================================== //I hope this is correct! -typedef void __based(void)* memptr; +// void __segment(void)* memptr; //__segment sega; //__self -//typedef void __based( sega ) * memptr; +typedef void __based(__self) * memptr; typedef struct { diff --git a/src/sega.c b/src/sega.c new file mode 100644 index 00000000..a460ff52 --- /dev/null +++ b/src/sega.c @@ -0,0 +1,36 @@ +#include +#include +#include + +typedef struct { + struct a __based( __self ) *next; + int number; +}a_t; + +void PrintLastTwo( a_t far *list ); + +void +main(int argc, char *argv[]) +{ + a_t far *list; + PrintLastTwo(list); +} + + void PrintLastTwo( a_t far *list ) + { + __segment seg; + a_t __based( seg ) *aptr; + + seg = FP_SEG( list ); + aptr = FP_OFF( list ); + for( ; aptr != _NULLOFF; aptr = aptr->next ) { + if( aptr->next == _NULLOFF ) { + printf( "Last item is %d\n", + aptr->number ); + } else if( aptr->next->next == _NULLOFF ) { + printf( "Second last item is %d\n", + aptr->number ); + } + } + } + \ No newline at end of file