From: sparky4 Date: Thu, 30 Jul 2015 20:21:52 +0000 (-0500) Subject: == major changes and experimentation and improvements here and there! ww == X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=f46812eee344744353471ae7dfd56abd9cb56ec4;p=16.git == major changes and experimentation and improvements here and there! ww == modified: 16.exe modified: 16/exmmtest/16_head.c modified: 16/exmmtest/16_head.h new file: 16/exmmtest/DEBUG.16 modified: 16/exmmtest/EXMMTEST.DSK modified: 16/exmmtest/EXMMTEST.EXE modified: 16/exmmtest/EXMMTEST.MAP modified: 16/exmmtest/EXMMTEST.PRJ modified: 16/exmmtest/MMDUMP.16 modified: 16/exmmtest/exmmtest.c modified: bakapi.exe modified: exmmtest.exe modified: fmemtest.exe modified: fontgfx.exe modified: fonttest.exe modified: inputest.exe modified: makefile modified: maptest.exe modified: palettec.exe modified: pcxtest.exe modified: scroll.exe new file: sega.exe modified: sountest.exe modified: src/exmmtest.c modified: src/lib/16_head.c modified: src/lib/16_head.h modified: src/lib/16_mm.c new file: src/lib/nyan/kitten.c new file: src/lib/nyan/kitten.h modified: src/scroll.c modified: src/sega.c modified: test.exe modified: test2.exe modified: tsthimem.exe --- diff --git a/16.exe b/16.exe index 40978011..93f6c82f 100644 Binary files a/16.exe and b/16.exe differ diff --git a/16/exmmtest/16_head.c b/16/exmmtest/16_head.c index b80ee542..dc14ac63 100644 --- a/16/exmmtest/16_head.c +++ b/16/exmmtest/16_head.c @@ -111,7 +111,7 @@ size_t GetFreeSize(void) return total; } -void far* AllocateLargestFarFreeBlock(size_t far* Size) +void far* AllocateLargestFarFreeBlock(size_t* Size) { size_t s0, s1; void far* p; diff --git a/16/exmmtest/16_head.h b/16/exmmtest/16_head.h index 9e7bc93a..1a2c7484 100644 --- a/16/exmmtest/16_head.h +++ b/16/exmmtest/16_head.h @@ -167,7 +167,7 @@ typedef struct void wait(clock_t wait); void* AllocateLargestFreeBlock(size_t* Size); size_t GetFreeSize(void); -void far *AllocateLargestFarFreeBlock(size_t far* Size); +void far *AllocateLargestFarFreeBlock(size_t* Size); size_t GetFarFreeSize(void); long int filesize(FILE *fp); int US_CheckParm(char *parm,char **strings); diff --git a/16/exmmtest/DEBUG.16 b/16/exmmtest/DEBUG.16 new file mode 100644 index 00000000..a1ecff46 --- /dev/null +++ b/16/exmmtest/DEBUG.16 @@ -0,0 +1,16 @@ +Seg:0 Size:7000 Owner:0x11ca +Seg:1b58 Size:256 Owner:0x64a2 +Seg:21de Size:34 Owner:0xc211 +Seg:23b5 Size:44108 Owner:0xc514 +Seg:d022 Size:4294967263 Owner:0xcf18 +Seg:d022 Size:4294967263 Owner:0x11c5 +Seg:d022 Size:4294967263 Owner:0x6482 +Seg:d022 Size:4294967263 Owner:0xc414 +Seg:d022 Size:4294967263 Owner:0x19c3 +Seg:d022 Size:4294967263 Owner:0xce18 +Seg:d022 Size:4294967263 Owner:0x1403 +Seg:d022 Size:4294967263 Owner:0x1114 +Seg:d022 Size:4294967263 Owner:0xc214 +Seg:d022 Size:4294967263 Owner:0xc20a +Seg:d022 Size:419 Owner:0xc419 +Seg:e000 Size:4294909951 Owner:0xc21a diff --git a/16/exmmtest/EXMMTEST.DSK b/16/exmmtest/EXMMTEST.DSK index f68caf79..449303dc 100644 Binary files a/16/exmmtest/EXMMTEST.DSK and b/16/exmmtest/EXMMTEST.DSK differ diff --git a/16/exmmtest/EXMMTEST.EXE b/16/exmmtest/EXMMTEST.EXE index c2cb4b2d..dea7d963 100644 Binary files a/16/exmmtest/EXMMTEST.EXE and b/16/exmmtest/EXMMTEST.EXE differ diff --git a/16/exmmtest/EXMMTEST.MAP b/16/exmmtest/EXMMTEST.MAP index 5e2339bd..d564f574 100644 --- a/16/exmmtest/EXMMTEST.MAP +++ b/16/exmmtest/EXMMTEST.MAP @@ -1,466 +1,466 @@ Start Stop Length Name Class - 00000H 04F63H 04F64H _TEXT CODE - 04F70H 04F70H 00000H _FARDATA FAR_DATA - 04F70H 04F70H 00000H _FARBSS FAR_BSS - 04F70H 04F70H 00000H _OVERLAY_ OVRINFO - 04F70H 04F70H 00000H _1STUB_ STUBSEG - 04F70H 060BDH 0114EH _DATA DATA - 060BEH 060BFH 00002H _CVTSEG DATA - 060C0H 060C5H 00006H _SCNSEG DATA - 060C6H 060C6H 00000H _CONST CONST - 060C6H 060D7H 00012H _INIT_ INITDATA - 060D8H 060D8H 00000H _INITEND_ INITDATA - 060D8H 060D8H 00000H _EXIT_ EXITDATA - 060D8H 060D8H 00000H _EXITEND_ EXITDATA - 060D8H 06139H 00062H _BSS BSS - 0613AH 0613AH 00000H _BSSEND BSSEND - 06140H 061BFH 00080H _STACK STACK + 00000H 04FBBH 04FBCH _TEXT CODE + 04FC0H 04FC0H 00000H _FARDATA FAR_DATA + 04FC0H 04FC0H 00000H _FARBSS FAR_BSS + 04FC0H 04FC0H 00000H _OVERLAY_ OVRINFO + 04FC0H 04FC0H 00000H _1STUB_ STUBSEG + 04FC0H 06163H 011A4H _DATA DATA + 06164H 06165H 00002H _CVTSEG DATA + 06166H 0616BH 00006H _SCNSEG DATA + 0616CH 0616CH 00000H _CONST CONST + 0616CH 0617DH 00012H _INIT_ INITDATA + 0617EH 0617EH 00000H _INITEND_ INITDATA + 0617EH 0617EH 00000H _EXIT_ EXITDATA + 0617EH 0617EH 00000H _EXITEND_ EXITDATA + 0617EH 061DFH 00062H _BSS BSS + 061E0H 061E0H 00000H _BSSEND BSSEND + 061E0H 0625FH 00080H _STACK STACK Detailed map of segments 0000:0000 028F C=CODE S=_TEXT G=(none) M=c0.ASM ACBP=28 - 0000:028F 022B C=CODE S=_TEXT G=(none) M=EXMMTEST.C ACBP=28 - 0000:04BA 1947 C=CODE S=_TEXT G=(none) M=16_MM.C ACBP=28 - 0000:1E01 0442 C=CODE S=_TEXT G=(none) M=16_HEAD.C ACBP=28 - 0000:2243 0232 C=CODE S=_TEXT G=(none) M=16_CA.C ACBP=28 - 0000:2475 0024 C=CODE S=_TEXT G=(none) M=ATEXIT ACBP=28 - 0000:2499 0049 C=CODE S=_TEXT G=(none) M=CLOCK ACBP=28 - 0000:24E2 0000 C=CODE S=_TEXT G=(none) M=CTYPE ACBP=28 - 0000:24E2 003D C=CODE S=_TEXT G=(none) M=DOSFATTR ACBP=28 - 0000:251F 0089 C=CODE S=_TEXT G=(none) M=EXIT ACBP=28 - 0000:25A8 0000 C=CODE S=_TEXT G=(none) M=FILES ACBP=28 - 0000:25A8 0000 C=CODE S=_TEXT G=(none) M=FILES2 ACBP=28 - 0000:25A8 0000 C=CODE S=_TEXT G=(none) M=FMODE ACBP=28 - 0000:25A8 00AE C=CODE S=_TEXT G=(none) M=H_LDIV ACBP=28 - 0000:2656 0021 C=CODE S=_TEXT G=(none) M=H_LLSH ACBP=28 - 0000:2677 0021 C=CODE S=_TEXT G=(none) M=H_LURSH ACBP=28 - 0000:2698 0060 C=CODE S=_TEXT G=(none) M=H_PADD ACBP=28 - 0000:26F8 0028 C=CODE S=_TEXT G=(none) M=H_PSBP ACBP=28 - 0000:2720 004B C=CODE S=_TEXT G=(none) M=IOERROR ACBP=28 - 0000:276B 0011 C=CODE S=_TEXT G=(none) M=ISATTY ACBP=28 - 0000:277C 00A2 C=CODE S=_TEXT G=(none) M=LONGTOA ACBP=28 - 0000:281E 0029 C=CODE S=_TEXT G=(none) M=LSEEK ACBP=28 - 0000:2847 00B0 C=CODE S=_TEXT G=(none) M=MKNAME ACBP=28 - 0000:28F7 0021 C=CODE S=_TEXT G=(none) M=N_PCMP ACBP=28 - 0000:2918 00B2 C=CODE S=_TEXT G=(none) M=SETUPIO ACBP=28 - 0000:29CA 0000 C=CODE S=_TEXT G=(none) M=STKLEN ACBP=28 - 0000:29CA 002C C=CODE S=_TEXT G=(none) M=TOLOWER ACBP=28 - 0000:29F6 0018 C=CODE S=_TEXT G=(none) M=UNLINK ACBP=28 - 0000:2A0E 04DB C=CODE S=_TEXT G=(none) M=VPRINTER ACBP=28 - 0000:2EE9 009F C=CODE S=_TEXT G=(none) M=VRAM ACBP=28 - 0000:2F88 0000 C=CODE S=_TEXT G=(none) M=WSCROLL ACBP=28 - 0000:2F88 0030 C=CODE S=_TEXT G=(none) M=_STPCPY ACBP=28 - 0000:2FB8 0004 C=CODE S=_TEXT G=(none) M=CORELEFT ACBP=28 - 0000:2FBC 014E C=CODE S=_TEXT G=(none) M=CPRINTF ACBP=28 - 0000:310A 01A5 C=CODE S=_TEXT G=(none) M=CRTINIT ACBP=28 - 0000:32AF 001F C=CODE S=_TEXT G=(none) M=CVTFAK ACBP=28 - 0000:32CE 042D C=CODE S=_TEXT G=(none) M=FARHEAP ACBP=28 - 0000:36FB 013E C=CODE S=_TEXT G=(none) M=FBRK ACBP=28 - 0000:3839 0050 C=CODE S=_TEXT G=(none) M=FCORELFT ACBP=28 - 0000:3889 0054 C=CODE S=_TEXT G=(none) M=GETCH ACBP=28 - 0000:38DD 00AC C=CODE S=_TEXT G=(none) M=GPTEXT ACBP=28 - 0000:3989 0029 C=CODE S=_TEXT G=(none) M=IOCTL ACBP=28 - 0000:39B2 0012 C=CODE S=_TEXT G=(none) M=KBHIT ACBP=28 - 0000:39C4 009D C=CODE S=_TEXT G=(none) M=MOVETEXT ACBP=28 - 0000:3A61 0017 C=CODE S=_TEXT G=(none) M=PUTCH ACBP=28 - 0000:3A78 0004 C=CODE S=_TEXT G=(none) M=REALCVT ACBP=28 - 0000:3A7C 01C7 C=CODE S=_TEXT G=(none) M=SCREEN ACBP=28 - 0000:3C43 0184 C=CODE S=_TEXT G=(none) M=SCROLL ACBP=28 - 0000:3DC7 0129 C=CODE S=_TEXT G=(none) M=SETARGV ACBP=28 - 0000:3EF0 001C C=CODE S=_TEXT G=(none) M=SETBLOCK ACBP=28 - 0000:3F0C 002C C=CODE S=_TEXT G=(none) M=WHEREXY ACBP=28 - 0000:3F38 001D C=CODE S=_TEXT G=(none) M=CHMODA ACBP=28 - 0000:3F55 0026 C=CODE S=_TEXT G=(none) M=CLOSE ACBP=28 - 0000:3F7B 001E C=CODE S=_TEXT G=(none) M=CLOSEA ACBP=28 - 0000:3F99 00B0 C=CODE S=_TEXT G=(none) M=FCLOSE ACBP=28 - 0000:4049 00C6 C=CODE S=_TEXT G=(none) M=FFLUSH ACBP=28 - 0000:410F 0041 C=CODE S=_TEXT G=(none) M=FLENGTH ACBP=28 - 0000:4150 0040 C=CODE S=_TEXT G=(none) M=FLUSHALL ACBP=28 - 0000:4190 01FE C=CODE S=_TEXT G=(none) M=FOPEN ACBP=28 - 0000:438E 001C C=CODE S=_TEXT G=(none) M=FPRINTF ACBP=28 - 0000:43AA 01D8 C=CODE S=_TEXT G=(none) M=FSEEK ACBP=28 - 0000:4582 0070 C=CODE S=_TEXT G=(none) M=LTOA1 ACBP=28 - 0000:45F2 0024 C=CODE S=_TEXT G=(none) M=MEMCPY ACBP=28 - 0000:4616 0022 C=CODE S=_TEXT G=(none) M=MOVEDATA ACBP=28 - 0000:4638 018D C=CODE S=_TEXT G=(none) M=OPEN ACBP=28 - 0000:47C5 004F C=CODE S=_TEXT G=(none) M=OPENA ACBP=28 - 0000:4814 001B C=CODE S=_TEXT G=(none) M=PRINTF ACBP=28 - 0000:482F 03A4 C=CODE S=_TEXT G=(none) M=PUTC ACBP=28 - 0000:4BD3 0111 C=CODE S=_TEXT G=(none) M=SETVBUF ACBP=28 - 0000:4CE4 003F C=CODE S=_TEXT G=(none) M=STRCAT ACBP=28 - 0000:4D23 0029 C=CODE S=_TEXT G=(none) M=STRCPY ACBP=28 - 0000:4D4C 001F C=CODE S=_TEXT G=(none) M=STRLEN ACBP=28 - 0000:4D6B 0149 C=CODE S=_TEXT G=(none) M=WRITE ACBP=28 - 0000:4EB4 003C C=CODE S=_TEXT G=(none) M=WRITEA ACBP=28 - 0000:4EF0 0003 C=CODE S=_TEXT G=(none) M=WRITEU ACBP=28 - 0000:4EF3 003B C=CODE S=_TEXT G=(none) M=XFCLOSE ACBP=28 - 0000:4F2E 0036 C=CODE S=_TEXT G=(none) M=XFFLUSH ACBP=28 - 04F7:0000 0000 C=FAR_DATA S=_FARDATA G=(none) M=c0.ASM ACBP=68 - 04F7:0000 0000 C=FAR_BSS S=_FARBSS G=(none) M=c0.ASM ACBP=68 - 04F7:0000 0000 C=OVRINFO S=_OVERLAY_ G=(none) M=c0.ASM ACBP=68 - 04F7:0000 0000 C=STUBSEG S=_1STUB_ G=(none) M=c0.ASM ACBP=68 - 04F7:0000 0093 C=DATA S=_DATA G=DGROUP M=c0.ASM ACBP=68 - 04F7:0094 018C C=DATA S=_DATA G=DGROUP M=EXMMTEST.C ACBP=48 - 04F7:0220 0AFF C=DATA S=_DATA G=DGROUP M=16_MM.C ACBP=48 - 04F7:0D20 0004 C=DATA S=_DATA G=DGROUP M=16_HEAD.C ACBP=48 - 04F7:0D24 002C C=DATA S=_DATA G=DGROUP M=16_CA.C ACBP=48 - 04F7:0D50 0002 C=DATA S=_DATA G=DGROUP M=ATEXIT ACBP=48 - 04F7:0D52 0000 C=DATA S=_DATA G=DGROUP M=CLOCK ACBP=48 - 04F7:0D52 0101 C=DATA S=_DATA G=DGROUP M=CTYPE ACBP=48 - 04F7:0E54 0000 C=DATA S=_DATA G=DGROUP M=DOSFATTR ACBP=48 - 04F7:0E54 0006 C=DATA S=_DATA G=DGROUP M=EXIT ACBP=48 - 04F7:0E5A 0190 C=DATA S=_DATA G=DGROUP M=FILES ACBP=48 - 04F7:0FEA 002A C=DATA S=_DATA G=DGROUP M=FILES2 ACBP=48 - 04F7:1014 0004 C=DATA S=_DATA G=DGROUP M=FMODE ACBP=48 - 04F7:1018 0000 C=DATA S=_DATA G=DGROUP M=H_LDIV ACBP=48 - 04F7:1018 0000 C=DATA S=_DATA G=DGROUP M=H_LLSH ACBP=48 - 04F7:1018 0000 C=DATA S=_DATA G=DGROUP M=H_LURSH ACBP=48 - 04F7:1018 0000 C=DATA S=_DATA G=DGROUP M=H_PADD ACBP=48 - 04F7:1018 0000 C=DATA S=_DATA G=DGROUP M=H_PSBP ACBP=48 - 04F7:1018 005B C=DATA S=_DATA G=DGROUP M=IOERROR ACBP=48 - 04F7:1074 0000 C=DATA S=_DATA G=DGROUP M=ISATTY ACBP=48 - 04F7:1074 0000 C=DATA S=_DATA G=DGROUP M=LONGTOA ACBP=48 - 04F7:1074 0000 C=DATA S=_DATA G=DGROUP M=LSEEK ACBP=48 - 04F7:1074 0009 C=DATA S=_DATA G=DGROUP M=MKNAME ACBP=48 - 04F7:107E 0000 C=DATA S=_DATA G=DGROUP M=N_PCMP ACBP=48 - 04F7:107E 0000 C=DATA S=_DATA G=DGROUP M=SETUPIO ACBP=48 - 04F7:107E 0002 C=DATA S=_DATA G=DGROUP M=STKLEN ACBP=48 - 04F7:1080 0000 C=DATA S=_DATA G=DGROUP M=TOLOWER ACBP=48 - 04F7:1080 0000 C=DATA S=_DATA G=DGROUP M=UNLINK ACBP=48 - 04F7:1080 0067 C=DATA S=_DATA G=DGROUP M=VPRINTER ACBP=48 - 04F7:10E8 0000 C=DATA S=_DATA G=DGROUP M=VRAM ACBP=48 - 04F7:10E8 0002 C=DATA S=_DATA G=DGROUP M=WSCROLL ACBP=48 - 04F7:10EA 0000 C=DATA S=_DATA G=DGROUP M=_STPCPY ACBP=48 - 04F7:10EA 0000 C=DATA S=_DATA G=DGROUP M=CORELEFT ACBP=48 - 04F7:10EA 0000 C=DATA S=_DATA G=DGROUP M=CPRINTF ACBP=48 - 04F7:10EA 0018 C=DATA S=_DATA G=DGROUP M=CRTINIT ACBP=48 - 04F7:1102 0031 C=DATA S=_DATA G=DGROUP M=CVTFAK ACBP=48 - 04F7:1134 0000 C=DATA S=_DATA G=DGROUP M=FARHEAP ACBP=48 - 04F7:1134 0002 C=DATA S=_DATA G=DGROUP M=FBRK ACBP=48 - 04F7:1136 0000 C=DATA S=_DATA G=DGROUP M=FCORELFT ACBP=48 - 04F7:1136 0000 C=DATA S=_DATA G=DGROUP M=GETCH ACBP=48 - 04F7:1136 0000 C=DATA S=_DATA G=DGROUP M=GPTEXT ACBP=48 - 04F7:1136 0000 C=DATA S=_DATA G=DGROUP M=IOCTL ACBP=48 - 04F7:1136 0002 C=DATA S=_DATA G=DGROUP M=KBHIT ACBP=48 - 04F7:1138 0000 C=DATA S=_DATA G=DGROUP M=MOVETEXT ACBP=48 - 04F7:1138 0000 C=DATA S=_DATA G=DGROUP M=PUTCH ACBP=48 - 04F7:1138 0000 C=DATA S=_DATA G=DGROUP M=REALCVT ACBP=48 - 04F7:1138 0000 C=DATA S=_DATA G=DGROUP M=SCREEN ACBP=48 - 04F7:1138 0000 C=DATA S=_DATA G=DGROUP M=SCROLL ACBP=48 - 04F7:1138 0010 C=DATA S=_DATA G=DGROUP M=SETARGV ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=SETBLOCK ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=WHEREXY ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=CHMODA ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=CLOSE ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=CLOSEA ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=FCLOSE ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=FFLUSH ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=FLENGTH ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=FLUSHALL ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=FOPEN ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=FPRINTF ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=FSEEK ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=LTOA1 ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=MEMCPY ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=MOVEDATA ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=OPEN ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=OPENA ACBP=48 - 04F7:1148 0000 C=DATA S=_DATA G=DGROUP M=PRINTF ACBP=48 - 04F7:1148 0001 C=DATA S=_DATA G=DGROUP M=PUTC ACBP=48 - 04F7:114A 0004 C=DATA S=_DATA G=DGROUP M=SETVBUF ACBP=48 - 04F7:114E 0000 C=DATA S=_DATA G=DGROUP M=STRCAT ACBP=48 - 04F7:114E 0000 C=DATA S=_DATA G=DGROUP M=STRCPY ACBP=48 - 04F7:114E 0000 C=DATA S=_DATA G=DGROUP M=STRLEN ACBP=48 - 04F7:114E 0000 C=DATA S=_DATA G=DGROUP M=WRITE ACBP=48 - 04F7:114E 0000 C=DATA S=_DATA G=DGROUP M=WRITEA ACBP=48 - 04F7:114E 0000 C=DATA S=_DATA G=DGROUP M=WRITEU ACBP=48 - 04F7:114E 0000 C=DATA S=_DATA G=DGROUP M=XFCLOSE ACBP=48 - 04F7:114E 0000 C=DATA S=_DATA G=DGROUP M=XFFLUSH ACBP=48 - 04F7:114E 0000 C=DATA S=_CVTSEG G=DGROUP M=c0.ASM ACBP=48 - 04F7:114E 0002 C=DATA S=_CVTSEG G=DGROUP M=CVTFAK ACBP=48 - 04F7:1150 0000 C=DATA S=_CVTSEG G=DGROUP M=REALCVT ACBP=48 - 04F7:1150 0000 C=DATA S=_SCNSEG G=DGROUP M=c0.ASM ACBP=48 - 04F7:1150 0006 C=DATA S=_SCNSEG G=DGROUP M=CVTFAK ACBP=48 - 04F7:1156 0000 C=CONST S=_CONST G=DGROUP M=c0.ASM ACBP=48 - 04F7:1156 0000 C=INITDATA S=_INIT_ G=DGROUP M=c0.ASM ACBP=48 - 04F7:1156 0006 C=INITDATA S=_INIT_ G=DGROUP M=SETUPIO ACBP=48 - 04F7:115C 0006 C=INITDATA S=_INIT_ G=DGROUP M=CRTINIT ACBP=48 - 04F7:1162 0006 C=INITDATA S=_INIT_ G=DGROUP M=SETARGV ACBP=48 - 04F7:1168 0000 C=INITDATA S=_INITEND_ G=DGROUP M=c0.ASM ACBP=28 - 04F7:1168 0000 C=EXITDATA S=_EXIT_ G=DGROUP M=c0.ASM ACBP=48 - 04F7:1168 0000 C=EXITDATA S=_EXITEND_ G=DGROUP M=c0.ASM ACBP=28 - 04F7:1168 0000 C=BSS S=_BSS G=DGROUP M=c0.ASM ACBP=48 - 04F7:1168 0000 C=BSS S=_BSS G=DGROUP M=EXMMTEST.C ACBP=48 - 04F7:1168 0006 C=BSS S=_BSS G=DGROUP M=16_MM.C ACBP=48 - 04F7:116E 0000 C=BSS S=_BSS G=DGROUP M=16_HEAD.C ACBP=48 - 04F7:116E 000A C=BSS S=_BSS G=DGROUP M=16_CA.C ACBP=48 - 04F7:1178 0040 C=BSS S=_BSS G=DGROUP M=ATEXIT ACBP=48 - 04F7:11B8 0001 C=BSS S=_BSS G=DGROUP M=CLOCK ACBP=48 - 04F7:11BA 0000 C=BSS S=_BSS G=DGROUP M=DOSFATTR ACBP=48 - 04F7:11BA 0000 C=BSS S=_BSS G=DGROUP M=IOERROR ACBP=48 - 04F7:11BA 0000 C=BSS S=_BSS G=DGROUP M=ISATTY ACBP=48 - 04F7:11BA 0000 C=BSS S=_BSS G=DGROUP M=LONGTOA ACBP=48 - 04F7:11BA 0000 C=BSS S=_BSS G=DGROUP M=LSEEK ACBP=48 - 04F7:11BA 000D C=BSS S=_BSS G=DGROUP M=MKNAME ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=SETUPIO ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=UNLINK ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=VPRINTER ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=VRAM ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=CORELEFT ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=CRTINIT ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=GETCH ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=IOCTL ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=KBHIT ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=SETBLOCK ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=CHMODA ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=CLOSEA ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=FLENGTH ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=MEMCPY ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=MOVEDATA ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=OPEN ACBP=48 - 04F7:11C8 0000 C=BSS S=_BSS G=DGROUP M=OPENA ACBP=48 - 04F7:11C8 0001 C=BSS S=_BSS G=DGROUP M=PUTC ACBP=48 - 04F7:11CA 0000 C=BSS S=_BSS G=DGROUP M=STRCAT ACBP=48 - 04F7:11CA 0000 C=BSS S=_BSS G=DGROUP M=STRCPY ACBP=48 - 04F7:11CA 0000 C=BSS S=_BSS G=DGROUP M=STRLEN ACBP=48 - 04F7:11CA 0000 C=BSS S=_BSS G=DGROUP M=WRITEA ACBP=48 - 04F7:11CA 0000 C=BSSEND S=_BSSEND G=DGROUP M=c0.ASM ACBP=28 - 0614:0000 0080 C=STACK S=_STACK G=(none) M=c0.ASM ACBP=74 + 0000:028F 0283 C=CODE S=_TEXT G=(none) M=EXMMTEST.C ACBP=28 + 0000:0512 1947 C=CODE S=_TEXT G=(none) M=16_MM.C ACBP=28 + 0000:1E59 0442 C=CODE S=_TEXT G=(none) M=16_HEAD.C ACBP=28 + 0000:229B 0232 C=CODE S=_TEXT G=(none) M=16_CA.C ACBP=28 + 0000:24CD 0024 C=CODE S=_TEXT G=(none) M=ATEXIT ACBP=28 + 0000:24F1 0049 C=CODE S=_TEXT G=(none) M=CLOCK ACBP=28 + 0000:253A 0000 C=CODE S=_TEXT G=(none) M=CTYPE ACBP=28 + 0000:253A 003D C=CODE S=_TEXT G=(none) M=DOSFATTR ACBP=28 + 0000:2577 0089 C=CODE S=_TEXT G=(none) M=EXIT ACBP=28 + 0000:2600 0000 C=CODE S=_TEXT G=(none) M=FILES ACBP=28 + 0000:2600 0000 C=CODE S=_TEXT G=(none) M=FILES2 ACBP=28 + 0000:2600 0000 C=CODE S=_TEXT G=(none) M=FMODE ACBP=28 + 0000:2600 00AE C=CODE S=_TEXT G=(none) M=H_LDIV ACBP=28 + 0000:26AE 0021 C=CODE S=_TEXT G=(none) M=H_LLSH ACBP=28 + 0000:26CF 0021 C=CODE S=_TEXT G=(none) M=H_LURSH ACBP=28 + 0000:26F0 0060 C=CODE S=_TEXT G=(none) M=H_PADD ACBP=28 + 0000:2750 0028 C=CODE S=_TEXT G=(none) M=H_PSBP ACBP=28 + 0000:2778 004B C=CODE S=_TEXT G=(none) M=IOERROR ACBP=28 + 0000:27C3 0011 C=CODE S=_TEXT G=(none) M=ISATTY ACBP=28 + 0000:27D4 00A2 C=CODE S=_TEXT G=(none) M=LONGTOA ACBP=28 + 0000:2876 0029 C=CODE S=_TEXT G=(none) M=LSEEK ACBP=28 + 0000:289F 00B0 C=CODE S=_TEXT G=(none) M=MKNAME ACBP=28 + 0000:294F 0021 C=CODE S=_TEXT G=(none) M=N_PCMP ACBP=28 + 0000:2970 00B2 C=CODE S=_TEXT G=(none) M=SETUPIO ACBP=28 + 0000:2A22 0000 C=CODE S=_TEXT G=(none) M=STKLEN ACBP=28 + 0000:2A22 002C C=CODE S=_TEXT G=(none) M=TOLOWER ACBP=28 + 0000:2A4E 0018 C=CODE S=_TEXT G=(none) M=UNLINK ACBP=28 + 0000:2A66 04DB C=CODE S=_TEXT G=(none) M=VPRINTER ACBP=28 + 0000:2F41 009F C=CODE S=_TEXT G=(none) M=VRAM ACBP=28 + 0000:2FE0 0000 C=CODE S=_TEXT G=(none) M=WSCROLL ACBP=28 + 0000:2FE0 0030 C=CODE S=_TEXT G=(none) M=_STPCPY ACBP=28 + 0000:3010 0004 C=CODE S=_TEXT G=(none) M=CORELEFT ACBP=28 + 0000:3014 014E C=CODE S=_TEXT G=(none) M=CPRINTF ACBP=28 + 0000:3162 01A5 C=CODE S=_TEXT G=(none) M=CRTINIT ACBP=28 + 0000:3307 001F C=CODE S=_TEXT G=(none) M=CVTFAK ACBP=28 + 0000:3326 042D C=CODE S=_TEXT G=(none) M=FARHEAP ACBP=28 + 0000:3753 013E C=CODE S=_TEXT G=(none) M=FBRK ACBP=28 + 0000:3891 0050 C=CODE S=_TEXT G=(none) M=FCORELFT ACBP=28 + 0000:38E1 0054 C=CODE S=_TEXT G=(none) M=GETCH ACBP=28 + 0000:3935 00AC C=CODE S=_TEXT G=(none) M=GPTEXT ACBP=28 + 0000:39E1 0029 C=CODE S=_TEXT G=(none) M=IOCTL ACBP=28 + 0000:3A0A 0012 C=CODE S=_TEXT G=(none) M=KBHIT ACBP=28 + 0000:3A1C 009D C=CODE S=_TEXT G=(none) M=MOVETEXT ACBP=28 + 0000:3AB9 0017 C=CODE S=_TEXT G=(none) M=PUTCH ACBP=28 + 0000:3AD0 0004 C=CODE S=_TEXT G=(none) M=REALCVT ACBP=28 + 0000:3AD4 01C7 C=CODE S=_TEXT G=(none) M=SCREEN ACBP=28 + 0000:3C9B 0184 C=CODE S=_TEXT G=(none) M=SCROLL ACBP=28 + 0000:3E1F 0129 C=CODE S=_TEXT G=(none) M=SETARGV ACBP=28 + 0000:3F48 001C C=CODE S=_TEXT G=(none) M=SETBLOCK ACBP=28 + 0000:3F64 002C C=CODE S=_TEXT G=(none) M=WHEREXY ACBP=28 + 0000:3F90 001D C=CODE S=_TEXT G=(none) M=CHMODA ACBP=28 + 0000:3FAD 0026 C=CODE S=_TEXT G=(none) M=CLOSE ACBP=28 + 0000:3FD3 001E C=CODE S=_TEXT G=(none) M=CLOSEA ACBP=28 + 0000:3FF1 00B0 C=CODE S=_TEXT G=(none) M=FCLOSE ACBP=28 + 0000:40A1 00C6 C=CODE S=_TEXT G=(none) M=FFLUSH ACBP=28 + 0000:4167 0041 C=CODE S=_TEXT G=(none) M=FLENGTH ACBP=28 + 0000:41A8 0040 C=CODE S=_TEXT G=(none) M=FLUSHALL ACBP=28 + 0000:41E8 01FE C=CODE S=_TEXT G=(none) M=FOPEN ACBP=28 + 0000:43E6 001C C=CODE S=_TEXT G=(none) M=FPRINTF ACBP=28 + 0000:4402 01D8 C=CODE S=_TEXT G=(none) M=FSEEK ACBP=28 + 0000:45DA 0070 C=CODE S=_TEXT G=(none) M=LTOA1 ACBP=28 + 0000:464A 0024 C=CODE S=_TEXT G=(none) M=MEMCPY ACBP=28 + 0000:466E 0022 C=CODE S=_TEXT G=(none) M=MOVEDATA ACBP=28 + 0000:4690 018D C=CODE S=_TEXT G=(none) M=OPEN ACBP=28 + 0000:481D 004F C=CODE S=_TEXT G=(none) M=OPENA ACBP=28 + 0000:486C 001B C=CODE S=_TEXT G=(none) M=PRINTF ACBP=28 + 0000:4887 03A4 C=CODE S=_TEXT G=(none) M=PUTC ACBP=28 + 0000:4C2B 0111 C=CODE S=_TEXT G=(none) M=SETVBUF ACBP=28 + 0000:4D3C 003F C=CODE S=_TEXT G=(none) M=STRCAT ACBP=28 + 0000:4D7B 0029 C=CODE S=_TEXT G=(none) M=STRCPY ACBP=28 + 0000:4DA4 001F C=CODE S=_TEXT G=(none) M=STRLEN ACBP=28 + 0000:4DC3 0149 C=CODE S=_TEXT G=(none) M=WRITE ACBP=28 + 0000:4F0C 003C C=CODE S=_TEXT G=(none) M=WRITEA ACBP=28 + 0000:4F48 0003 C=CODE S=_TEXT G=(none) M=WRITEU ACBP=28 + 0000:4F4B 003B C=CODE S=_TEXT G=(none) M=XFCLOSE ACBP=28 + 0000:4F86 0036 C=CODE S=_TEXT G=(none) M=XFFLUSH ACBP=28 + 04FC:0000 0000 C=FAR_DATA S=_FARDATA G=(none) M=c0.ASM ACBP=68 + 04FC:0000 0000 C=FAR_BSS S=_FARBSS G=(none) M=c0.ASM ACBP=68 + 04FC:0000 0000 C=OVRINFO S=_OVERLAY_ G=(none) M=c0.ASM ACBP=68 + 04FC:0000 0000 C=STUBSEG S=_1STUB_ G=(none) M=c0.ASM ACBP=68 + 04FC:0000 0093 C=DATA S=_DATA G=DGROUP M=c0.ASM ACBP=68 + 04FC:0094 01E2 C=DATA S=_DATA G=DGROUP M=EXMMTEST.C ACBP=48 + 04FC:0276 0AFF C=DATA S=_DATA G=DGROUP M=16_MM.C ACBP=48 + 04FC:0D76 0004 C=DATA S=_DATA G=DGROUP M=16_HEAD.C ACBP=48 + 04FC:0D7A 002C C=DATA S=_DATA G=DGROUP M=16_CA.C ACBP=48 + 04FC:0DA6 0002 C=DATA S=_DATA G=DGROUP M=ATEXIT ACBP=48 + 04FC:0DA8 0000 C=DATA S=_DATA G=DGROUP M=CLOCK ACBP=48 + 04FC:0DA8 0101 C=DATA S=_DATA G=DGROUP M=CTYPE ACBP=48 + 04FC:0EAA 0000 C=DATA S=_DATA G=DGROUP M=DOSFATTR ACBP=48 + 04FC:0EAA 0006 C=DATA S=_DATA G=DGROUP M=EXIT ACBP=48 + 04FC:0EB0 0190 C=DATA S=_DATA G=DGROUP M=FILES ACBP=48 + 04FC:1040 002A C=DATA S=_DATA G=DGROUP M=FILES2 ACBP=48 + 04FC:106A 0004 C=DATA S=_DATA G=DGROUP M=FMODE ACBP=48 + 04FC:106E 0000 C=DATA S=_DATA G=DGROUP M=H_LDIV ACBP=48 + 04FC:106E 0000 C=DATA S=_DATA G=DGROUP M=H_LLSH ACBP=48 + 04FC:106E 0000 C=DATA S=_DATA G=DGROUP M=H_LURSH ACBP=48 + 04FC:106E 0000 C=DATA S=_DATA G=DGROUP M=H_PADD ACBP=48 + 04FC:106E 0000 C=DATA S=_DATA G=DGROUP M=H_PSBP ACBP=48 + 04FC:106E 005B C=DATA S=_DATA G=DGROUP M=IOERROR ACBP=48 + 04FC:10CA 0000 C=DATA S=_DATA G=DGROUP M=ISATTY ACBP=48 + 04FC:10CA 0000 C=DATA S=_DATA G=DGROUP M=LONGTOA ACBP=48 + 04FC:10CA 0000 C=DATA S=_DATA G=DGROUP M=LSEEK ACBP=48 + 04FC:10CA 0009 C=DATA S=_DATA G=DGROUP M=MKNAME ACBP=48 + 04FC:10D4 0000 C=DATA S=_DATA G=DGROUP M=N_PCMP ACBP=48 + 04FC:10D4 0000 C=DATA S=_DATA G=DGROUP M=SETUPIO ACBP=48 + 04FC:10D4 0002 C=DATA S=_DATA G=DGROUP M=STKLEN ACBP=48 + 04FC:10D6 0000 C=DATA S=_DATA G=DGROUP M=TOLOWER ACBP=48 + 04FC:10D6 0000 C=DATA S=_DATA G=DGROUP M=UNLINK ACBP=48 + 04FC:10D6 0067 C=DATA S=_DATA G=DGROUP M=VPRINTER ACBP=48 + 04FC:113E 0000 C=DATA S=_DATA G=DGROUP M=VRAM ACBP=48 + 04FC:113E 0002 C=DATA S=_DATA G=DGROUP M=WSCROLL ACBP=48 + 04FC:1140 0000 C=DATA S=_DATA G=DGROUP M=_STPCPY ACBP=48 + 04FC:1140 0000 C=DATA S=_DATA G=DGROUP M=CORELEFT ACBP=48 + 04FC:1140 0000 C=DATA S=_DATA G=DGROUP M=CPRINTF ACBP=48 + 04FC:1140 0018 C=DATA S=_DATA G=DGROUP M=CRTINIT ACBP=48 + 04FC:1158 0031 C=DATA S=_DATA G=DGROUP M=CVTFAK ACBP=48 + 04FC:118A 0000 C=DATA S=_DATA G=DGROUP M=FARHEAP ACBP=48 + 04FC:118A 0002 C=DATA S=_DATA G=DGROUP M=FBRK ACBP=48 + 04FC:118C 0000 C=DATA S=_DATA G=DGROUP M=FCORELFT ACBP=48 + 04FC:118C 0000 C=DATA S=_DATA G=DGROUP M=GETCH ACBP=48 + 04FC:118C 0000 C=DATA S=_DATA G=DGROUP M=GPTEXT ACBP=48 + 04FC:118C 0000 C=DATA S=_DATA G=DGROUP M=IOCTL ACBP=48 + 04FC:118C 0002 C=DATA S=_DATA G=DGROUP M=KBHIT ACBP=48 + 04FC:118E 0000 C=DATA S=_DATA G=DGROUP M=MOVETEXT ACBP=48 + 04FC:118E 0000 C=DATA S=_DATA G=DGROUP M=PUTCH ACBP=48 + 04FC:118E 0000 C=DATA S=_DATA G=DGROUP M=REALCVT ACBP=48 + 04FC:118E 0000 C=DATA S=_DATA G=DGROUP M=SCREEN ACBP=48 + 04FC:118E 0000 C=DATA S=_DATA G=DGROUP M=SCROLL ACBP=48 + 04FC:118E 0010 C=DATA S=_DATA G=DGROUP M=SETARGV ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=SETBLOCK ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=WHEREXY ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=CHMODA ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=CLOSE ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=CLOSEA ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=FCLOSE ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=FFLUSH ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=FLENGTH ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=FLUSHALL ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=FOPEN ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=FPRINTF ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=FSEEK ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=LTOA1 ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=MEMCPY ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=MOVEDATA ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=OPEN ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=OPENA ACBP=48 + 04FC:119E 0000 C=DATA S=_DATA G=DGROUP M=PRINTF ACBP=48 + 04FC:119E 0001 C=DATA S=_DATA G=DGROUP M=PUTC ACBP=48 + 04FC:11A0 0004 C=DATA S=_DATA G=DGROUP M=SETVBUF ACBP=48 + 04FC:11A4 0000 C=DATA S=_DATA G=DGROUP M=STRCAT ACBP=48 + 04FC:11A4 0000 C=DATA S=_DATA G=DGROUP M=STRCPY ACBP=48 + 04FC:11A4 0000 C=DATA S=_DATA G=DGROUP M=STRLEN ACBP=48 + 04FC:11A4 0000 C=DATA S=_DATA G=DGROUP M=WRITE ACBP=48 + 04FC:11A4 0000 C=DATA S=_DATA G=DGROUP M=WRITEA ACBP=48 + 04FC:11A4 0000 C=DATA S=_DATA G=DGROUP M=WRITEU ACBP=48 + 04FC:11A4 0000 C=DATA S=_DATA G=DGROUP M=XFCLOSE ACBP=48 + 04FC:11A4 0000 C=DATA S=_DATA G=DGROUP M=XFFLUSH ACBP=48 + 04FC:11A4 0000 C=DATA S=_CVTSEG G=DGROUP M=c0.ASM ACBP=48 + 04FC:11A4 0002 C=DATA S=_CVTSEG G=DGROUP M=CVTFAK ACBP=48 + 04FC:11A6 0000 C=DATA S=_CVTSEG G=DGROUP M=REALCVT ACBP=48 + 04FC:11A6 0000 C=DATA S=_SCNSEG G=DGROUP M=c0.ASM ACBP=48 + 04FC:11A6 0006 C=DATA S=_SCNSEG G=DGROUP M=CVTFAK ACBP=48 + 04FC:11AC 0000 C=CONST S=_CONST G=DGROUP M=c0.ASM ACBP=48 + 04FC:11AC 0000 C=INITDATA S=_INIT_ G=DGROUP M=c0.ASM ACBP=48 + 04FC:11AC 0006 C=INITDATA S=_INIT_ G=DGROUP M=SETUPIO ACBP=48 + 04FC:11B2 0006 C=INITDATA S=_INIT_ G=DGROUP M=CRTINIT ACBP=48 + 04FC:11B8 0006 C=INITDATA S=_INIT_ G=DGROUP M=SETARGV ACBP=48 + 04FC:11BE 0000 C=INITDATA S=_INITEND_ G=DGROUP M=c0.ASM ACBP=28 + 04FC:11BE 0000 C=EXITDATA S=_EXIT_ G=DGROUP M=c0.ASM ACBP=48 + 04FC:11BE 0000 C=EXITDATA S=_EXITEND_ G=DGROUP M=c0.ASM ACBP=28 + 04FC:11BE 0000 C=BSS S=_BSS G=DGROUP M=c0.ASM ACBP=48 + 04FC:11BE 0000 C=BSS S=_BSS G=DGROUP M=EXMMTEST.C ACBP=48 + 04FC:11BE 0006 C=BSS S=_BSS G=DGROUP M=16_MM.C ACBP=48 + 04FC:11C4 0000 C=BSS S=_BSS G=DGROUP M=16_HEAD.C ACBP=48 + 04FC:11C4 000A C=BSS S=_BSS G=DGROUP M=16_CA.C ACBP=48 + 04FC:11CE 0040 C=BSS S=_BSS G=DGROUP M=ATEXIT ACBP=48 + 04FC:120E 0001 C=BSS S=_BSS G=DGROUP M=CLOCK ACBP=48 + 04FC:1210 0000 C=BSS S=_BSS G=DGROUP M=DOSFATTR ACBP=48 + 04FC:1210 0000 C=BSS S=_BSS G=DGROUP M=IOERROR ACBP=48 + 04FC:1210 0000 C=BSS S=_BSS G=DGROUP M=ISATTY ACBP=48 + 04FC:1210 0000 C=BSS S=_BSS G=DGROUP M=LONGTOA ACBP=48 + 04FC:1210 0000 C=BSS S=_BSS G=DGROUP M=LSEEK ACBP=48 + 04FC:1210 000D C=BSS S=_BSS G=DGROUP M=MKNAME ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=SETUPIO ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=UNLINK ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=VPRINTER ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=VRAM ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=CORELEFT ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=CRTINIT ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=GETCH ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=IOCTL ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=KBHIT ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=SETBLOCK ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=CHMODA ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=CLOSEA ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=FLENGTH ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=MEMCPY ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=MOVEDATA ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=OPEN ACBP=48 + 04FC:121E 0000 C=BSS S=_BSS G=DGROUP M=OPENA ACBP=48 + 04FC:121E 0001 C=BSS S=_BSS G=DGROUP M=PUTC ACBP=48 + 04FC:1220 0000 C=BSS S=_BSS G=DGROUP M=STRCAT ACBP=48 + 04FC:1220 0000 C=BSS S=_BSS G=DGROUP M=STRCPY ACBP=48 + 04FC:1220 0000 C=BSS S=_BSS G=DGROUP M=STRLEN ACBP=48 + 04FC:1220 0000 C=BSS S=_BSS G=DGROUP M=WRITEA ACBP=48 + 04FC:1220 0000 C=BSSEND S=_BSSEND G=DGROUP M=c0.ASM ACBP=28 + 061E:0000 0080 C=STACK S=_STACK G=(none) M=c0.ASM ACBP=74 Address Publics by Name - 04F7:0000 idle DATASEG@ + 04FC:0000 idle DATASEG@ 0000:028B idle DGROUP@ - 0000:25AB idle F_LDIV@ - 0000:25BA idle F_LMOD@ - 0000:25B2 idle F_LUDIV@ - 0000:25C2 idle F_LUMOD@ - 0000:2659 idle F_LXLSH@ - 0000:267A idle F_LXURSH@ - 0000:269B idle F_PADD@ - 0000:26FB idle F_PSBP@ - 0000:26CA idle F_PSUB@ - 0000:25AB idle LDIV@ - 0000:25BA idle LMOD@ - 0000:25B2 idle LUDIV@ - 0000:25C2 idle LUMOD@ - 0000:2659 idle LXLSH@ - 0000:267A idle LXURSH@ - 0000:25A8 idle N_LDIV@ - 0000:25B7 idle N_LMOD@ - 0000:25AF N_LUDIV@ - 0000:25BF idle N_LUMOD@ - 0000:2656 N_LXLSH@ - 0000:2677 N_LXURSH@ - 0000:2698 N_PADD@ - 0000:28F7 N_PCMP@ - 0000:26F8 N_PSBP@ - 0000:26C7 idle N_PSUB@ - 0000:269B idle PADD@ - 0000:26FB idle PSBP@ - 0000:26CA idle PSUB@ + 0000:2603 idle F_LDIV@ + 0000:2612 idle F_LMOD@ + 0000:260A idle F_LUDIV@ + 0000:261A idle F_LUMOD@ + 0000:26B1 idle F_LXLSH@ + 0000:26D2 idle F_LXURSH@ + 0000:26F3 idle F_PADD@ + 0000:2753 idle F_PSBP@ + 0000:2722 idle F_PSUB@ + 0000:2603 idle LDIV@ + 0000:2612 idle LMOD@ + 0000:260A idle LUDIV@ + 0000:261A idle LUMOD@ + 0000:26B1 idle LXLSH@ + 0000:26D2 idle LXURSH@ + 0000:2600 idle N_LDIV@ + 0000:260F idle N_LMOD@ + 0000:2607 N_LUDIV@ + 0000:2617 idle N_LUMOD@ + 0000:26AE N_LXLSH@ + 0000:26CF N_LXURSH@ + 0000:26F0 N_PADD@ + 0000:294F N_PCMP@ + 0000:2750 N_PSBP@ + 0000:271F idle N_PSUB@ + 0000:26F3 idle PADD@ + 0000:2753 idle PSBP@ + 0000:2722 idle PSUB@ 0000:0276 _abort - 04F7:116A idle _aftersort - 0000:1FA3 idle _AllocateLargestFarFreeBlock - 0000:1E40 idle _AllocateLargestFreeBlock - 0000:2475 idle _atexit - 04F7:116C idle _beforesort - 0000:23D9 idle _CAL_OptimizeNodes - 0000:2264 _CA_CloseDebug - 0000:2271 idle _CA_FarRead - 0000:22AF idle _CA_FarWrite - 0000:2354 _CA_LoadFile - 0000:2243 _CA_OpenDebug - 0000:22ED idle _CA_ReadFile - 0000:2468 _CA_Shutdown - 0000:2447 _CA_Startup - 0000:2499 _clock - 0000:3F55 _close - 0000:2FB8 _coreleft - 0000:30EE idle _cprintf - 04F7:1174 _debughandle - 04F7:10F9 _directvideo - 04F7:1172 idle _drawcachebox - 04F7:007F _errno - 0000:256D _exit - 0000:3839 _farcoreleft - 0000:340E _farfree - 0000:3522 _farmalloc - 0000:3683 idle _farrealloc - 0000:3F99 _fclose - 0000:4049 _fflush - 0000:410F _filelength - 0000:2112 idle _filesize - 04F7:116E idle _finishcachebox - 0000:4150 _flushall - 0000:4359 _fopen - 0000:438E _fprintf - 0000:4849 idle _fputc - 0000:49D2 idle _fputchar - 0000:340E _free - 0000:442C _fseek - 0000:44A8 _ftell - 0000:3889 _getch - 0000:38A2 idle _getche - 0000:2045 idle _GetFarFreeSize - 0000:1ED6 idle _GetFreeSize - 0000:38DD _gettext - 0000:3989 _ioctl - 0000:276B _isatty - 0000:4582 idle _itoa - 0000:39B2 _kbhit - 0000:281E _lseek - 0000:45CA idle _ltoa + 04FC:11C0 idle _aftersort + 0000:1FFB idle _AllocateLargestFarFreeBlock + 0000:1E98 idle _AllocateLargestFreeBlock + 0000:24CD idle _atexit + 04FC:11C2 idle _beforesort + 0000:2431 idle _CAL_OptimizeNodes + 0000:22BC _CA_CloseDebug + 0000:22C9 idle _CA_FarRead + 0000:2307 idle _CA_FarWrite + 0000:23AC _CA_LoadFile + 0000:229B _CA_OpenDebug + 0000:2345 idle _CA_ReadFile + 0000:24C0 _CA_Shutdown + 0000:249F _CA_Startup + 0000:24F1 _clock + 0000:3FAD _close + 0000:3010 _coreleft + 0000:3146 idle _cprintf + 04FC:11CA _debughandle + 04FC:114F _directvideo + 04FC:11C8 idle _drawcachebox + 04FC:007F _errno + 0000:25C5 _exit + 0000:3891 _farcoreleft + 0000:3466 _farfree + 0000:357A _farmalloc + 0000:36DB idle _farrealloc + 0000:3FF1 _fclose + 0000:40A1 _fflush + 0000:4167 _filelength + 0000:216A idle _filesize + 04FC:11C4 idle _finishcachebox + 0000:41A8 _flushall + 0000:43B1 _fopen + 0000:43E6 _fprintf + 0000:48A1 idle _fputc + 0000:4A2A idle _fputchar + 0000:3466 _free + 0000:4484 _fseek + 0000:4500 _ftell + 0000:38E1 _getch + 0000:38FA idle _getche + 0000:209D _GetFarFreeSize + 0000:1F2E _GetFreeSize + 0000:3935 _gettext + 0000:39E1 _ioctl + 0000:27C3 _isatty + 0000:45DA idle _itoa + 0000:3A0A _kbhit + 0000:2876 _lseek + 0000:4622 idle _ltoa 0000:028F _main - 0000:3518 _malloc - 0000:45F2 _memcpy - 0000:04BA idle _MML_CheckForEMS - 0000:0788 idle _MML_CheckForXMS - 0000:0A48 idle _MML_ClearBlock - 0000:04FF idle _MML_SetupEMS - 0000:07BF idle _MML_SetupXMS - 0000:0605 idle _MML_ShutdownEMS - 0000:0865 idle _MML_ShutdownXMS - 0000:0898 idle _MML_UseSpace - 0000:1D5D idle _MM_BombOnError - 0000:180A _MM_DumpData - 0000:1DC2 idle _MM_FreeBlock - 0000:1229 _MM_FreePtr - 0000:1D6C idle _MM_GetNewBlock - 0000:0F75 _MM_GetPtr - 0000:0646 idle _MM_MapEMS - 0000:06DF idle _MM_MapXEMS - 0000:1A51 _MM_Report - 0000:13C7 idle _MM_SetLock - 0000:1303 idle _MM_SetPurge - 0000:1607 _MM_ShowMemory - 0000:0EF0 _MM_Shutdown - 0000:1490 idle _MM_SortMem - 0000:0AAE _MM_Startup - 0000:19B8 idle _MM_TotalFree - 0000:1946 idle _MM_UnusedMemory - 0000:4616 _movedata - 0000:39C4 _movetext - 0000:4665 _open - 0000:4814 _printf - 04F7:1176 idle _profilehandle - 0000:3A61 _putch - 0000:3933 _puttext - 0000:367C idle _realloc - 0000:3EF0 _setblock - 0000:4BD3 _setvbuf - 0000:4CE4 _strcat - 0000:4D23 _strcpy - 0000:4D4C _strlen - 0000:29CA _tolower - 0000:45AD _ultoa - 0000:38BF idle _ungetch - 0000:29F6 _unlink - 04F7:1170 idle _updatecachebox - 0000:2171 _US_CheckParm - 0000:1E01 idle _wait - 0000:3F16 idle _wherex - 0000:3F25 idle _wherey - 0000:4EF0 _write - 04F7:1168 idle _XMSaddr + 0000:3570 _malloc + 0000:464A _memcpy + 0000:0512 idle _MML_CheckForEMS + 0000:07E0 idle _MML_CheckForXMS + 0000:0AA0 idle _MML_ClearBlock + 0000:0557 idle _MML_SetupEMS + 0000:0817 idle _MML_SetupXMS + 0000:065D idle _MML_ShutdownEMS + 0000:08BD idle _MML_ShutdownXMS + 0000:08F0 idle _MML_UseSpace + 0000:1DB5 idle _MM_BombOnError + 0000:1862 _MM_DumpData + 0000:1E1A idle _MM_FreeBlock + 0000:1281 _MM_FreePtr + 0000:1DC4 idle _MM_GetNewBlock + 0000:0FCD _MM_GetPtr + 0000:069E idle _MM_MapEMS + 0000:0737 idle _MM_MapXEMS + 0000:1AA9 _MM_Report + 0000:141F idle _MM_SetLock + 0000:135B idle _MM_SetPurge + 0000:165F _MM_ShowMemory + 0000:0F48 _MM_Shutdown + 0000:14E8 idle _MM_SortMem + 0000:0B06 _MM_Startup + 0000:1A10 idle _MM_TotalFree + 0000:199E idle _MM_UnusedMemory + 0000:466E _movedata + 0000:3A1C _movetext + 0000:46BD _open + 0000:486C _printf + 04FC:11CC idle _profilehandle + 0000:3AB9 _putch + 0000:398B _puttext + 0000:36D4 idle _realloc + 0000:3F48 _setblock + 0000:4C2B _setvbuf + 0000:4D3C _strcat + 0000:4D7B _strcpy + 0000:4DA4 _strlen + 0000:2A22 _tolower + 0000:4605 _ultoa + 0000:3917 idle _ungetch + 0000:2A4E _unlink + 04FC:11C6 idle _updatecachebox + 0000:21C9 _US_CheckParm + 0000:1E59 idle _wait + 0000:3F6E idle _wherex + 0000:3F7D idle _wherey + 0000:4F48 _write + 04FC:11BE idle _XMSaddr 0000:1000 idle __AHINCR 0000:000C idle __AHSHIFT - 04F7:1138 __argc - 04F7:113A __argv - 04F7:0D50 __atexitcnt - 04F7:1178 __atexittbl - 0000:376F __brk - 04F7:008B __brklvl - 04F7:006B __C0argc - 04F7:006D __C0argv - 0000:31D0 idle __c0crtinit - 04F7:0071 idle __C0environ - 04F7:1137 __cChar - 0000:258E idle __cexit - 04F7:1136 __cFlag + 04FC:118E __argc + 04FC:1190 __argv + 04FC:0DA6 __atexitcnt + 04FC:11CE __atexittbl + 0000:37C7 __brk + 04FC:008B __brklvl + 04FC:006B __C0argc + 04FC:006D __C0argv + 0000:3228 idle __c0crtinit + 04FC:0071 idle __C0environ + 04FC:118D __cChar + 0000:25E6 idle __cexit + 04FC:118C __cFlag 0000:0166 __checknull - 0000:3F38 __chmod + 0000:3F90 __chmod 0000:0153 __cleanup - 0000:3F7B __close - 0000:2FBC __CPUTN - 0000:31ED idle __crtinit - 04F7:0D52 __ctype + 0000:3FD3 __close + 0000:3014 __CPUTN + 0000:3245 idle __crtinit + 04FC:0DA8 __ctype 0000:0000 Abs __cvtfak - 0000:259C idle __c_exit - 04F7:1018 __doserrno - 0000:2759 __DOSERROR - 04F7:101A idle __dosErrorToSV - 0000:24E2 __dos_getfileattr - 0000:2502 idle __dos_setfileattr - 04F7:0075 __envLng - 04F7:0077 __envseg - 04F7:0079 idle __envSize - 0000:257C __exit - 04F7:0E54 __exitbuf - 04F7:0E56 __exitfopen - 04F7:0E58 idle __exitopen - 04F7:1014 __fmode - 0000:482F idle __fputc - 0000:49E5 __FPUTN - 0000:430F idle __GETFP - 04F7:0087 __heapbase - 04F7:008F __heaptop - 04F7:005B idle __Int0Vector - 04F7:005F idle __Int4Vector - 04F7:0063 idle __Int5Vector - 04F7:0067 idle __Int6Vector - 0000:2720 __IOERROR - 0000:277C __LONGTOA - 0000:2847 __MKNAME + 0000:25F4 idle __c_exit + 04FC:106E __doserrno + 0000:27B1 __DOSERROR + 04FC:1070 idle __dosErrorToSV + 0000:253A __dos_getfileattr + 0000:255A idle __dos_setfileattr + 04FC:0075 __envLng + 04FC:0077 __envseg + 04FC:0079 idle __envSize + 0000:25D4 __exit + 04FC:0EAA __exitbuf + 04FC:0EAC __exitfopen + 04FC:0EAE idle __exitopen + 04FC:106A __fmode + 0000:4887 idle __fputc + 0000:4A3D __FPUTN + 0000:4367 idle __GETFP + 04FC:0087 __heapbase + 04FC:008F __heaptop + 04FC:005B idle __Int0Vector + 04FC:005F idle __Int4Vector + 04FC:0063 idle __Int5Vector + 04FC:0067 idle __Int6Vector + 0000:2778 __IOERROR + 0000:27D4 __LONGTOA + 0000:289F __MKNAME 0000:028D idle __MMODEL - 04F7:0FEA __nfile - 0000:38A2 idle __Ngetche - 04F7:1016 __notUmask - 0000:38BF idle __Nungetch - 0000:47C5 __open - 04F7:0FEC __openfd - 0000:4246 idle __OPENFP - 04F7:007D __osmajor - 04F7:007E idle __osminor - 04F7:007D idle __osversion - 04F7:007B __psp - 0000:3A78 __REALCVT - 04F7:114E __RealCvtVector + 04FC:1040 __nfile + 0000:38FA idle __Ngetche + 04FC:106C __notUmask + 0000:3917 idle __Nungetch + 0000:481D __open + 04FC:1042 __openfd + 0000:429E idle __OPENFP + 04FC:007D __osmajor + 04FC:007E idle __osminor + 04FC:007D idle __osversion + 04FC:007B __psp + 0000:3AD0 __REALCVT + 04FC:11A4 __RealCvtVector 0000:01BC __restorezero - 0000:37AE __sbrk - 04F7:1150 idle __ScanTodVector - 0000:3BB2 __SCREENIO - 0000:3C65 __SCROLL + 0000:3806 __sbrk + 04FC:11A6 idle __ScanTodVector + 0000:3C0A __SCREENIO + 0000:3CBD __SCROLL 0000:0000 Abs __setargv__ - 0000:2918 __setupio - 04F7:0081 __StartTime - 04F7:107E __stklen - 0000:2F88 __stpcpy - 04F7:0E5A __streams + 0000:2970 __setupio + 04FC:0081 __StartTime + 04FC:10D4 __stklen + 0000:2FE0 __stpcpy + 04FC:0EB0 __streams 0000:0167 __terminate - 0000:28A0 idle __TMPNAM + 0000:28F8 idle __TMPNAM 0000:0000 idle __turboCrt - 0000:27FE __UTOA - 0000:3BEE __VALIDATEXY - 04F7:007D idle __version - 04F7:10EA __video - 0000:3145 __VideoInt - 0000:2A26 __VPRINTER - 0000:2EE9 __VPTR - 0000:2F0E __VRAM - 0000:3F0C __wherexy - 0000:4EB4 __write - 04F7:10E8 __wscroll - 0000:4EF3 __xfclose - 0000:4F2E __xfflush - 04F7:0085 idle ___brklvl - 0000:32CE idle ___first - 0000:32D0 idle ___last - 0000:32D2 idle ___rover - 0000:4D6B ___write + 0000:2856 __UTOA + 0000:3C46 __VALIDATEXY + 04FC:007D idle __version + 04FC:1140 __video + 0000:319D __VideoInt + 0000:2A7E __VPRINTER + 0000:2F41 __VPTR + 0000:2F66 __VRAM + 0000:3F64 __wherexy + 0000:4F0C __write + 04FC:113E __wscroll + 0000:4F4B __xfclose + 0000:4F86 __xfflush + 04FC:0085 idle ___brklvl + 0000:3326 idle ___first + 0000:3328 idle ___last + 0000:332A idle ___rover + 0000:4DC3 ___write Address Publics by Value @@ -476,223 +476,223 @@ Detailed map of segments 0000:028B idle DGROUP@ 0000:028D idle __MMODEL 0000:028F _main - 0000:04BA idle _MML_CheckForEMS - 0000:04FF idle _MML_SetupEMS - 0000:0605 idle _MML_ShutdownEMS - 0000:0646 idle _MM_MapEMS - 0000:06DF idle _MM_MapXEMS - 0000:0788 idle _MML_CheckForXMS - 0000:07BF idle _MML_SetupXMS - 0000:0865 idle _MML_ShutdownXMS - 0000:0898 idle _MML_UseSpace - 0000:0A48 idle _MML_ClearBlock - 0000:0AAE _MM_Startup - 0000:0EF0 _MM_Shutdown - 0000:0F75 _MM_GetPtr + 0000:0512 idle _MML_CheckForEMS + 0000:0557 idle _MML_SetupEMS + 0000:065D idle _MML_ShutdownEMS + 0000:069E idle _MM_MapEMS + 0000:0737 idle _MM_MapXEMS + 0000:07E0 idle _MML_CheckForXMS + 0000:0817 idle _MML_SetupXMS + 0000:08BD idle _MML_ShutdownXMS + 0000:08F0 idle _MML_UseSpace + 0000:0AA0 idle _MML_ClearBlock + 0000:0B06 _MM_Startup + 0000:0F48 _MM_Shutdown + 0000:0FCD _MM_GetPtr 0000:1000 idle __AHINCR - 0000:1229 _MM_FreePtr - 0000:1303 idle _MM_SetPurge - 0000:13C7 idle _MM_SetLock - 0000:1490 idle _MM_SortMem - 0000:1607 _MM_ShowMemory - 0000:180A _MM_DumpData - 0000:1946 idle _MM_UnusedMemory - 0000:19B8 idle _MM_TotalFree - 0000:1A51 _MM_Report - 0000:1D5D idle _MM_BombOnError - 0000:1D6C idle _MM_GetNewBlock - 0000:1DC2 idle _MM_FreeBlock - 0000:1E01 idle _wait - 0000:1E40 idle _AllocateLargestFreeBlock - 0000:1ED6 idle _GetFreeSize - 0000:1FA3 idle _AllocateLargestFarFreeBlock - 0000:2045 idle _GetFarFreeSize - 0000:2112 idle _filesize - 0000:2171 _US_CheckParm - 0000:2243 _CA_OpenDebug - 0000:2264 _CA_CloseDebug - 0000:2271 idle _CA_FarRead - 0000:22AF idle _CA_FarWrite - 0000:22ED idle _CA_ReadFile - 0000:2354 _CA_LoadFile - 0000:23D9 idle _CAL_OptimizeNodes - 0000:2447 _CA_Startup - 0000:2468 _CA_Shutdown - 0000:2475 idle _atexit - 0000:2499 _clock - 0000:24E2 __dos_getfileattr - 0000:2502 idle __dos_setfileattr - 0000:256D _exit - 0000:257C __exit - 0000:258E idle __cexit - 0000:259C idle __c_exit - 0000:25A8 idle N_LDIV@ - 0000:25AB idle LDIV@ - 0000:25AB idle F_LDIV@ - 0000:25AF N_LUDIV@ - 0000:25B2 idle F_LUDIV@ - 0000:25B2 idle LUDIV@ - 0000:25B7 idle N_LMOD@ - 0000:25BA idle F_LMOD@ - 0000:25BA idle LMOD@ - 0000:25BF idle N_LUMOD@ - 0000:25C2 idle LUMOD@ - 0000:25C2 idle F_LUMOD@ - 0000:2656 N_LXLSH@ - 0000:2659 idle LXLSH@ - 0000:2659 idle F_LXLSH@ - 0000:2677 N_LXURSH@ - 0000:267A idle LXURSH@ - 0000:267A idle F_LXURSH@ - 0000:2698 N_PADD@ - 0000:269B idle F_PADD@ - 0000:269B idle PADD@ - 0000:26C7 idle N_PSUB@ - 0000:26CA idle F_PSUB@ - 0000:26CA idle PSUB@ - 0000:26F8 N_PSBP@ - 0000:26FB idle PSBP@ - 0000:26FB idle F_PSBP@ - 0000:2720 __IOERROR - 0000:2759 __DOSERROR - 0000:276B _isatty - 0000:277C __LONGTOA - 0000:27FE __UTOA - 0000:281E _lseek - 0000:2847 __MKNAME - 0000:28A0 idle __TMPNAM - 0000:28F7 N_PCMP@ - 0000:2918 __setupio - 0000:29CA _tolower - 0000:29F6 _unlink - 0000:2A26 __VPRINTER - 0000:2EE9 __VPTR - 0000:2F0E __VRAM - 0000:2F88 __stpcpy - 0000:2FB8 _coreleft - 0000:2FBC __CPUTN - 0000:30EE idle _cprintf - 0000:3145 __VideoInt - 0000:31D0 idle __c0crtinit - 0000:31ED idle __crtinit - 0000:32CE idle ___first - 0000:32D0 idle ___last - 0000:32D2 idle ___rover - 0000:340E _free - 0000:340E _farfree - 0000:3518 _malloc - 0000:3522 _farmalloc - 0000:367C idle _realloc - 0000:3683 idle _farrealloc - 0000:376F __brk - 0000:37AE __sbrk - 0000:3839 _farcoreleft - 0000:3889 _getch - 0000:38A2 idle __Ngetche - 0000:38A2 idle _getche - 0000:38BF idle __Nungetch - 0000:38BF idle _ungetch - 0000:38DD _gettext - 0000:3933 _puttext - 0000:3989 _ioctl - 0000:39B2 _kbhit - 0000:39C4 _movetext - 0000:3A61 _putch - 0000:3A78 __REALCVT - 0000:3BB2 __SCREENIO - 0000:3BEE __VALIDATEXY - 0000:3C65 __SCROLL - 0000:3EF0 _setblock - 0000:3F0C __wherexy - 0000:3F16 idle _wherex - 0000:3F25 idle _wherey - 0000:3F38 __chmod - 0000:3F55 _close - 0000:3F7B __close - 0000:3F99 _fclose - 0000:4049 _fflush - 0000:410F _filelength - 0000:4150 _flushall - 0000:4246 idle __OPENFP - 0000:430F idle __GETFP - 0000:4359 _fopen - 0000:438E _fprintf - 0000:442C _fseek - 0000:44A8 _ftell - 0000:4582 idle _itoa - 0000:45AD _ultoa - 0000:45CA idle _ltoa - 0000:45F2 _memcpy - 0000:4616 _movedata - 0000:4665 _open - 0000:47C5 __open - 0000:4814 _printf - 0000:482F idle __fputc - 0000:4849 idle _fputc - 0000:49D2 idle _fputchar - 0000:49E5 __FPUTN - 0000:4BD3 _setvbuf - 0000:4CE4 _strcat - 0000:4D23 _strcpy - 0000:4D4C _strlen - 0000:4D6B ___write - 0000:4EB4 __write - 0000:4EF0 _write - 0000:4EF3 __xfclose - 0000:4F2E __xfflush - 04F7:0000 idle DATASEG@ - 04F7:005B idle __Int0Vector - 04F7:005F idle __Int4Vector - 04F7:0063 idle __Int5Vector - 04F7:0067 idle __Int6Vector - 04F7:006B __C0argc - 04F7:006D __C0argv - 04F7:0071 idle __C0environ - 04F7:0075 __envLng - 04F7:0077 __envseg - 04F7:0079 idle __envSize - 04F7:007B __psp - 04F7:007D idle __osversion - 04F7:007D __osmajor - 04F7:007D idle __version - 04F7:007E idle __osminor - 04F7:007F _errno - 04F7:0081 __StartTime - 04F7:0085 idle ___brklvl - 04F7:0087 __heapbase - 04F7:008B __brklvl - 04F7:008F __heaptop - 04F7:0D50 __atexitcnt - 04F7:0D52 __ctype - 04F7:0E54 __exitbuf - 04F7:0E56 __exitfopen - 04F7:0E58 idle __exitopen - 04F7:0E5A __streams - 04F7:0FEA __nfile - 04F7:0FEC __openfd - 04F7:1014 __fmode - 04F7:1016 __notUmask - 04F7:1018 __doserrno - 04F7:101A idle __dosErrorToSV - 04F7:107E __stklen - 04F7:10E8 __wscroll - 04F7:10EA __video - 04F7:10F9 _directvideo - 04F7:1136 __cFlag - 04F7:1137 __cChar - 04F7:1138 __argc - 04F7:113A __argv - 04F7:114E __RealCvtVector - 04F7:1150 idle __ScanTodVector - 04F7:1168 idle _XMSaddr - 04F7:116A idle _aftersort - 04F7:116C idle _beforesort - 04F7:116E idle _finishcachebox - 04F7:1170 idle _updatecachebox - 04F7:1172 idle _drawcachebox - 04F7:1174 _debughandle - 04F7:1176 idle _profilehandle - 04F7:1178 __atexittbl + 0000:1281 _MM_FreePtr + 0000:135B idle _MM_SetPurge + 0000:141F idle _MM_SetLock + 0000:14E8 idle _MM_SortMem + 0000:165F _MM_ShowMemory + 0000:1862 _MM_DumpData + 0000:199E idle _MM_UnusedMemory + 0000:1A10 idle _MM_TotalFree + 0000:1AA9 _MM_Report + 0000:1DB5 idle _MM_BombOnError + 0000:1DC4 idle _MM_GetNewBlock + 0000:1E1A idle _MM_FreeBlock + 0000:1E59 idle _wait + 0000:1E98 idle _AllocateLargestFreeBlock + 0000:1F2E _GetFreeSize + 0000:1FFB idle _AllocateLargestFarFreeBlock + 0000:209D _GetFarFreeSize + 0000:216A idle _filesize + 0000:21C9 _US_CheckParm + 0000:229B _CA_OpenDebug + 0000:22BC _CA_CloseDebug + 0000:22C9 idle _CA_FarRead + 0000:2307 idle _CA_FarWrite + 0000:2345 idle _CA_ReadFile + 0000:23AC _CA_LoadFile + 0000:2431 idle _CAL_OptimizeNodes + 0000:249F _CA_Startup + 0000:24C0 _CA_Shutdown + 0000:24CD idle _atexit + 0000:24F1 _clock + 0000:253A __dos_getfileattr + 0000:255A idle __dos_setfileattr + 0000:25C5 _exit + 0000:25D4 __exit + 0000:25E6 idle __cexit + 0000:25F4 idle __c_exit + 0000:2600 idle N_LDIV@ + 0000:2603 idle LDIV@ + 0000:2603 idle F_LDIV@ + 0000:2607 N_LUDIV@ + 0000:260A idle F_LUDIV@ + 0000:260A idle LUDIV@ + 0000:260F idle N_LMOD@ + 0000:2612 idle F_LMOD@ + 0000:2612 idle LMOD@ + 0000:2617 idle N_LUMOD@ + 0000:261A idle LUMOD@ + 0000:261A idle F_LUMOD@ + 0000:26AE N_LXLSH@ + 0000:26B1 idle LXLSH@ + 0000:26B1 idle F_LXLSH@ + 0000:26CF N_LXURSH@ + 0000:26D2 idle LXURSH@ + 0000:26D2 idle F_LXURSH@ + 0000:26F0 N_PADD@ + 0000:26F3 idle F_PADD@ + 0000:26F3 idle PADD@ + 0000:271F idle N_PSUB@ + 0000:2722 idle F_PSUB@ + 0000:2722 idle PSUB@ + 0000:2750 N_PSBP@ + 0000:2753 idle PSBP@ + 0000:2753 idle F_PSBP@ + 0000:2778 __IOERROR + 0000:27B1 __DOSERROR + 0000:27C3 _isatty + 0000:27D4 __LONGTOA + 0000:2856 __UTOA + 0000:2876 _lseek + 0000:289F __MKNAME + 0000:28F8 idle __TMPNAM + 0000:294F N_PCMP@ + 0000:2970 __setupio + 0000:2A22 _tolower + 0000:2A4E _unlink + 0000:2A7E __VPRINTER + 0000:2F41 __VPTR + 0000:2F66 __VRAM + 0000:2FE0 __stpcpy + 0000:3010 _coreleft + 0000:3014 __CPUTN + 0000:3146 idle _cprintf + 0000:319D __VideoInt + 0000:3228 idle __c0crtinit + 0000:3245 idle __crtinit + 0000:3326 idle ___first + 0000:3328 idle ___last + 0000:332A idle ___rover + 0000:3466 _free + 0000:3466 _farfree + 0000:3570 _malloc + 0000:357A _farmalloc + 0000:36D4 idle _realloc + 0000:36DB idle _farrealloc + 0000:37C7 __brk + 0000:3806 __sbrk + 0000:3891 _farcoreleft + 0000:38E1 _getch + 0000:38FA idle __Ngetche + 0000:38FA idle _getche + 0000:3917 idle __Nungetch + 0000:3917 idle _ungetch + 0000:3935 _gettext + 0000:398B _puttext + 0000:39E1 _ioctl + 0000:3A0A _kbhit + 0000:3A1C _movetext + 0000:3AB9 _putch + 0000:3AD0 __REALCVT + 0000:3C0A __SCREENIO + 0000:3C46 __VALIDATEXY + 0000:3CBD __SCROLL + 0000:3F48 _setblock + 0000:3F64 __wherexy + 0000:3F6E idle _wherex + 0000:3F7D idle _wherey + 0000:3F90 __chmod + 0000:3FAD _close + 0000:3FD3 __close + 0000:3FF1 _fclose + 0000:40A1 _fflush + 0000:4167 _filelength + 0000:41A8 _flushall + 0000:429E idle __OPENFP + 0000:4367 idle __GETFP + 0000:43B1 _fopen + 0000:43E6 _fprintf + 0000:4484 _fseek + 0000:4500 _ftell + 0000:45DA idle _itoa + 0000:4605 _ultoa + 0000:4622 idle _ltoa + 0000:464A _memcpy + 0000:466E _movedata + 0000:46BD _open + 0000:481D __open + 0000:486C _printf + 0000:4887 idle __fputc + 0000:48A1 idle _fputc + 0000:4A2A idle _fputchar + 0000:4A3D __FPUTN + 0000:4C2B _setvbuf + 0000:4D3C _strcat + 0000:4D7B _strcpy + 0000:4DA4 _strlen + 0000:4DC3 ___write + 0000:4F0C __write + 0000:4F48 _write + 0000:4F4B __xfclose + 0000:4F86 __xfflush + 04FC:0000 idle DATASEG@ + 04FC:005B idle __Int0Vector + 04FC:005F idle __Int4Vector + 04FC:0063 idle __Int5Vector + 04FC:0067 idle __Int6Vector + 04FC:006B __C0argc + 04FC:006D __C0argv + 04FC:0071 idle __C0environ + 04FC:0075 __envLng + 04FC:0077 __envseg + 04FC:0079 idle __envSize + 04FC:007B __psp + 04FC:007D idle __osversion + 04FC:007D __osmajor + 04FC:007D idle __version + 04FC:007E idle __osminor + 04FC:007F _errno + 04FC:0081 __StartTime + 04FC:0085 idle ___brklvl + 04FC:0087 __heapbase + 04FC:008B __brklvl + 04FC:008F __heaptop + 04FC:0DA6 __atexitcnt + 04FC:0DA8 __ctype + 04FC:0EAA __exitbuf + 04FC:0EAC __exitfopen + 04FC:0EAE idle __exitopen + 04FC:0EB0 __streams + 04FC:1040 __nfile + 04FC:1042 __openfd + 04FC:106A __fmode + 04FC:106C __notUmask + 04FC:106E __doserrno + 04FC:1070 idle __dosErrorToSV + 04FC:10D4 __stklen + 04FC:113E __wscroll + 04FC:1140 __video + 04FC:114F _directvideo + 04FC:118C __cFlag + 04FC:118D __cChar + 04FC:118E __argc + 04FC:1190 __argv + 04FC:11A4 __RealCvtVector + 04FC:11A6 idle __ScanTodVector + 04FC:11BE idle _XMSaddr + 04FC:11C0 idle _aftersort + 04FC:11C2 idle _beforesort + 04FC:11C4 idle _finishcachebox + 04FC:11C6 idle _updatecachebox + 04FC:11C8 idle _drawcachebox + 04FC:11CA _debughandle + 04FC:11CC idle _profilehandle + 04FC:11CE __atexittbl Program entry point at 0000:0000 diff --git a/16/exmmtest/EXMMTEST.PRJ b/16/exmmtest/EXMMTEST.PRJ index 5cadc6bf..26edd1f1 100644 Binary files a/16/exmmtest/EXMMTEST.PRJ and b/16/exmmtest/EXMMTEST.PRJ differ diff --git a/16/exmmtest/MMDUMP.16 b/16/exmmtest/MMDUMP.16 index e69de29b..60e2d7af 100644 Binary files a/16/exmmtest/MMDUMP.16 and b/16/exmmtest/MMDUMP.16 differ diff --git a/16/exmmtest/exmmtest.c b/16/exmmtest/exmmtest.c index bec5a15d..bbbc32bb 100644 --- a/16/exmmtest/exmmtest.c +++ b/16/exmmtest/exmmtest.c @@ -147,4 +147,11 @@ main(int argc, char *argv[]) printf("&bigbuffer= %Fp\n", &bigbuffer); printf("bigbuffer= %04x\n", bigbuffer); printf("&bigbuffer= %04x\n", &bigbuffer); + printf("\n\n"); + printf("Total free: %lu\n", (dword)(GetFreeSize())); + //printf("Total near free: %zu\n", GetNearFreeSize()); + printf("Total far free: %lu\n", (dword)(GetFarFreeSize())); + printf("\n"); + printf("core left: %u\n", coreleft()); + printf("far core left: %lu\n", farcoreleft()); } diff --git a/bakapi.exe b/bakapi.exe index f9447403..2936de4f 100644 Binary files a/bakapi.exe and b/bakapi.exe differ diff --git a/exmmtest.exe b/exmmtest.exe index eaaf113a..94efc0f8 100644 Binary files a/exmmtest.exe and b/exmmtest.exe differ diff --git a/fmemtest.exe b/fmemtest.exe index fddfc4b5..cfaeb569 100644 Binary files a/fmemtest.exe and b/fmemtest.exe differ diff --git a/fontgfx.exe b/fontgfx.exe index 8da2cc7f..559ba884 100644 Binary files a/fontgfx.exe and b/fontgfx.exe differ diff --git a/fonttest.exe b/fonttest.exe index b8d8bd9a..f3807cef 100644 Binary files a/fonttest.exe and b/fonttest.exe differ diff --git a/inputest.exe b/inputest.exe index f655971d..5bc4678f 100644 Binary files a/inputest.exe and b/inputest.exe differ diff --git a/makefile b/makefile index ea0c9b84..44984d64 100644 --- a/makefile +++ b/makefile @@ -15,24 +15,28 @@ TARGET_OS = dos SRC=src$(DIRSEP) SRCLIB=$(SRC)lib$(DIRSEP) JSMNLIB=$(SRCLIB)jsmn$(DIRSEP) +NYANLIB=$(SRCLIB)nyan$(DIRSEP) #EXMMLIB=$(SRCLIB)exmm$(DIRSEP) DOSLIB=$(SRCLIB)doslib$(DIRSEP) WCPULIB=$(SRCLIB)wcpu$(DIRSEP) 16FLAGS=-fh=16.hed BAKAPIFLAGS=-fh=bakapi.hed -ZFLAGS=-zk0 -zu -zc# -zm# -zdp# -zp16 -zq -DFLAGS=-DTARGET_MSDOS=16 -DMSDOS=1 -CFLAGS=-ei -wo -x -r -mc -k57344 +SEGAFLAGS=-0 -d2 -lr $(OFLAGS) + +SFLAGS=-k32768#51200#49152 +DFLAGS=-DTARGET_MSDOS=16 -DMSDOS=1 $(SFLAGS) +ZFLAGS=-zk0 -zq# -zu -zm# -zc# -zdp# -zp16 -zq +CFLAGS=-ei -wo -x -r -mc OFLAGS=-ot -ox -ob -oh -or -om -ol# -ol+ FLAGS=-0 -d2 -lr $(OFLAGS) $(CFLAGS) $(DFLAGS) $(ZFLAGS) DOSLIBEXMMOBJ = himemsys.$(OBJ) emm.$(OBJ) DOSLIBOBJ = adlib.$(OBJ) midi.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(OBJ) -16LIBOBJS = bakapee.$(OBJ) 16_in.$(OBJ) 16_mm.$(OBJ) wcpu.$(OBJ) 16_head.$(OBJ) scroll16.$(OBJ) 16_ca.$(OBJ) timer.$(OBJ) +16LIBOBJS = bakapee.$(OBJ) 16_in.$(OBJ) 16_mm.$(OBJ) wcpu.$(OBJ) 16_head.$(OBJ) scroll16.$(OBJ) 16_ca.$(OBJ) timer.$(OBJ) kitten.$(OBJ) GFXLIBOBJS = modex16.$(OBJ) bitmap.$(OBJ) planar.$(OBJ) 16text.$(OBJ) -TESTEXEC = exmmtest.exe test.exe pcxtest.exe test2.exe palettec.exe maptest.exe fmemtest.exe fonttest.exe fontgfx.exe sountest.exe tsthimem.exe inputest.exe scroll.exe +TESTEXEC = exmmtest.exe test.exe pcxtest.exe test2.exe palettec.exe maptest.exe fmemtest.exe fonttest.exe fontgfx.exe sountest.exe tsthimem.exe inputest.exe scroll.exe sega.exe #testemm.exe testemm0.exe fonttes0.exe miditest.exe EXEC = 16.exe bakapi.exe $(TESTEXEC) @@ -42,7 +46,7 @@ all: $(EXEC) #game and bakapi executables # 16.exe: 16.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) 16.lib - wcl $(FLAGS) $(16FLAGS) 16.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) 16.lib + wcl $(FLAGS) $(16FLAGS) 16.$(OBJ) mapread.$(OBJ) jsmn.$(OBJ) 16.lib bakapi.exe: bakapi.$(OBJ) 16.lib wcl $(FLAGS) $(BAKAPIFLAGS) bakapi.$(OBJ) 16.lib @@ -55,9 +59,9 @@ scroll.$(OBJ): $(SRC)scroll.c wcl $(FLAGS) -c $(SRC)scroll.c sega.exe: sega.$(OBJ) - wcl $(FLAGS) -c sega.$(OBJ) + wcl $(SEGAFLAGS) sega.$(OBJ) sega.$(OBJ): $(SRC)sega.c - wcl $(FLAGS) -c $(SRC)sega.c + wcl $(SEGAFLAGS) -c $(SRC)sega.c test.exe: test.$(OBJ) gfx.lib wcl $(FLAGS) test.$(OBJ) gfx.lib @@ -268,6 +272,9 @@ emm.$(OBJ): $(DOSLIB)emm.h $(DOSLIB)emm.c jsmn.$(OBJ): $(JSMNLIB)jsmn.h $(JSMNLIB)jsmn.c wcl $(FLAGS) -c $(JSMNLIB)jsmn.c +kitten.$(OBJ): $(NYANLIB)kitten.h $(NYANLIB)kitten.c + wcl $(FLAGS) -c $(NYANLIB)kitten.c + #farjsmn.$(OBJ): $(JSMNLIB)farjsmn.h $(JSMNLIB)farjsmn.c # wcl $(FLAGS) $(MFLAGS) -c $(JSMNLIB)farjsmn.c diff --git a/maptest.exe b/maptest.exe index ba1abdf2..bca3fdb9 100644 Binary files a/maptest.exe and b/maptest.exe differ diff --git a/palettec.exe b/palettec.exe index 948a90f7..70ad36f8 100644 Binary files a/palettec.exe and b/palettec.exe differ diff --git a/pcxtest.exe b/pcxtest.exe index ddd61350..9bbdaeec 100644 Binary files a/pcxtest.exe and b/pcxtest.exe differ diff --git a/scroll.exe b/scroll.exe index c4392e5e..31111a65 100644 Binary files a/scroll.exe and b/scroll.exe differ diff --git a/sega.exe b/sega.exe new file mode 100644 index 00000000..4ec072e2 Binary files /dev/null and b/sega.exe differ diff --git a/sountest.exe b/sountest.exe index 970ccf12..b5a81f32 100644 Binary files a/sountest.exe and b/sountest.exe differ diff --git a/src/exmmtest.c b/src/exmmtest.c index d036b838..fccbacb7 100644 --- a/src/exmmtest.c +++ b/src/exmmtest.c @@ -117,7 +117,7 @@ main(int argc, char *argv[]) printf("dark purple = purgable\n"); printf("medium blue = non purgable\n"); printf("red = locked\n"); - getch(); +// getch(); //++++modexEnter(); //++++modexShowPage(&screen); MM_ShowMemory(/*&screen, */&mm); @@ -143,4 +143,15 @@ main(int argc, char *argv[]) printf("&bigbuffer= %Fp\n", &bigbuffer); printf("bigbuffer= %04x\n", bigbuffer); printf("&bigbuffer= %04x\n", &bigbuffer); + printf("\n\n"); + printf("Total free: %lu\n", (dword)(GetFreeSize())); + printf("Total near free: %lu\n", (dword)(GetNearFreeSize())); + printf("Total far free: %lu\n", (dword)(GetFarFreeSize())); + getch(); + printf("\n"); + heapdump(); + printf("core left: %lu\n", (dword)_coreleft()); + printf("far core left: %lu\n", (dword)_farcoreleft()); + //printf("based core left: %lu\n", (dword)_basedcoreleft()); + //printf("huge core left: %lu\n", (dword)_hugecoreleft()); } diff --git a/src/lib/16_head.c b/src/lib/16_head.c index 2aca4bb7..8e70082e 100644 --- a/src/lib/16_head.c +++ b/src/lib/16_head.c @@ -38,80 +38,70 @@ void wait(clock_t wait){ while((goal > clock()) && !kbhit()) ; } /* End of wait */ -void* AllocateLargestFreeBlock(size_t* Size) +void __near* LargestFreeBlock(size_t* Size) { - size_t s0, s1; - void* p; - - s0 = ~(size_t)0 ^ (~(size_t)0 >> 1); - - while (s0 && (p = malloc(s0)) == NULL) - s0 >>= 1; - - if (p) - free(p); + size_t s0, s1; + void __near* p; - s1 = s0 >> 1; + s0 = ~(size_t)0 ^ (~(size_t)0 >> 1); + while (s0 && (p = _nmalloc(s0)) == NULL) + s0 >>= 1; - while (s1) - { - if ((p = malloc(s0 + s1)) != NULL) - { - s0 += s1; - free(p); - } - s1 >>= 1; - } + if (p) + _nfree(p); - while (s0 && (p = malloc(s0)) == NULL) - s0 ^= s0 & -s0; + s1 = s0 >> 1; + while (s1) + { + if ((p = _nmalloc(s0 + s1)) != NULL) + { + s0 += s1; + _nfree(p); + } + s1 >>= 1; + } + while (s0 && (p = _nmalloc(s0)) == NULL) + s0 ^= s0 & -s0; - *Size = s0; - return p; + *Size = s0; + return p; } -size_t GetFreeSize(void) +size_t _coreleft(void) { - size_t total = 0; - void* pFirst = NULL; - void* pLast = NULL; - - for (;;) - { - size_t largest; - void* p = AllocateLargestFreeBlock(&largest); - - if (largest < sizeof(void*)) - { - if (p != NULL) - free(p); - break; - } - - *(void**)p = NULL; - - total += largest; - - if (pFirst == NULL) - pFirst = p; - - if (pLast != NULL) - *(void**)pLast = p; - - pLast = p; - } + size_t total = 0; + void __near* pFirst = NULL; + void __near* pLast = NULL; + for(;;) + { + size_t largest; + void __near* p = LargestFreeBlock(&largest); + if (largest < sizeof(void __near*)) + { + if (p != NULL) + _nfree(p); + break; + } + *(void __near* __near*)p = NULL; + total += largest; + if (pFirst == NULL) + pFirst = p; - while (pFirst != NULL) - { - void* p = *(void**)pFirst; - free(pFirst); - pFirst = p; - } + if (pLast != NULL) + *(void __near* __near*)pLast = p; + pLast = p; + } - return total; + while (pFirst != NULL) + { + void __near* p = *(void __near* __near*)pFirst; + _nfree(pFirst); + pFirst = p; + } + return total; } -void far* AllocateLargestFarFreeBlock(size_t far* Size) +void far* LargestFarFreeBlock(size_t* Size) { size_t s0, s1; void far* p; @@ -140,7 +130,7 @@ void far* AllocateLargestFarFreeBlock(size_t far* Size) return p; } -size_t GetFarFreeSize(void) +size_t _farcoreleft(void) { size_t total = 0; void far* pFirst = NULL; @@ -148,7 +138,7 @@ size_t GetFarFreeSize(void) for(;;) { size_t largest; - void far* p = AllocateLargestFarFreeBlock(&largest); + void far* p = LargestFarFreeBlock(&largest); if (largest < sizeof(void far*)) { if (p != NULL) @@ -174,68 +164,195 @@ size_t GetFarFreeSize(void) return total; } -//near versions -void __near* AllocateLargestNearFreeBlock(size_t* Size) +void huge* LargestHugeFreeBlock(size_t* Size) { size_t s0, s1; - void __near* p; + void huge* p; s0 = ~(size_t)0 ^ (~(size_t)0 >> 1); - while (s0 && (p = _nmalloc(s0)) == NULL) + while (s0 && (p = halloc((dword)s0, 1)) == NULL) s0 >>= 1; if (p) - _nfree(p); + hfree(p); s1 = s0 >> 1; while (s1) { - if ((p = _nmalloc(s0 + s1)) != NULL) + if ((p = halloc((dword)(s0 + s1), 1)) != NULL) { s0 += s1; - _nfree(p); + hfree(p); } s1 >>= 1; } - while (s0 && (p = _nmalloc(s0)) == NULL) + while (s0 && (p = halloc((dword)s0, 1)) == NULL) s0 ^= s0 & -s0; *Size = s0; return p; } -size_t GetNearFreeSize(void) +size_t _hugecoreleft(void) { size_t total = 0; - void __near* pFirst = NULL; - void __near* pLast = NULL; + void huge* pFirst = NULL; + void huge* pLast = NULL; for(;;) { size_t largest; - void __near* p = AllocateLargestNearFreeBlock(&largest); - if (largest < sizeof(void __near*)) + void huge* p = LargestHugeFreeBlock(&largest); + if (largest < sizeof(void huge*)) { if (p != NULL) - _nfree(p); + hfree(p); break; } - *(void __near* __near*)p = NULL; + *(void huge* huge*)p = NULL; total += largest; if (pFirst == NULL) pFirst = p; if (pLast != NULL) - *(void __near* __near*)pLast = p; + *(void huge* huge*)pLast = p; pLast = p; } while (pFirst != NULL) { - void __near* p = *(void __near* __near*)pFirst; - _nfree(pFirst); + void huge* p = *(void huge* huge*)pFirst; + hfree(pFirst); + pFirst = p; + } + return total; +} + +/*void __based(__self)* LargestBasedFreeBlock(size_t* Size) +{ + __segment segu; + size_t s0, s1; + void __based(__self)* p; + + s0 = ~(size_t)0 ^ (~(size_t)0 >> 1); + while (s0 && (p = _bmalloc(segu, s0)) == NULL) + s0 >>= 1; + + if (p) + _ffree(p); + + s1 = s0 >> 1; + while (s1) + { + if ((p = _bmalloc(segu, s0 + s1)) != NULL) + { + s0 += s1; + _ffree(p); + } + s1 >>= 1; + } + while (s0 && (p = _bmalloc(segu, s0)) == NULL) + s0 ^= s0 & -s0; + + *Size = s0; + return p; +} + +size_t _basedcoreleft(void) +{ + __segment segu; + size_t total = 0; + void __based(segu)* pFirst = NULL; + void __based(segu)* pLast = NULL; + // allocate based heap + segu = _bheapseg( 1024 ); + if( segu == _NULLSEG ) { + printf( "Unable to allocate based heap\n" ); + return 0; + //exit( 1 ); + } + else + + for(;;) + { + size_t largest; + void __based(segu)* p = LargestBasedFreeBlock(&largest); + if (largest < sizeof(void far*)) + { + if (p != NULL) + _ffree(p); + break; + } + *(void far* far*)p = NULL; + total += largest; + if (pFirst == NULL) + pFirst = p; + + if (pLast != NULL) + *(void far* far*)pLast = p; + pLast = p; + } + + while (pFirst != NULL) + { + void far* p = *(void far* far*)pFirst; + _ffree(pFirst); pFirst = p; } return total; +}*/ + +size_t GetFreeSize(void) +{ + struct _heapinfo h_info; + int heap_status; + size_t h_free=0, h_total=0, h_used=0; + + h_info._pentry = NULL; + for(;;) { + heap_status = _heapwalk( &h_info ); + if( heap_status != _HEAPOK ) break; + if((h_info._useflag == _USEDENTRY ? "USED" : "FREE")=="FREE") h_free += h_info._size; + if((h_info._useflag == _USEDENTRY ? "USED" : "FREE")=="USED") h_used += h_info._size; + h_total += h_info._size; + } + heapstat(heap_status); + return h_free; +} + +size_t GetFarFreeSize(void) +{ + struct _heapinfo fh_info; + int heap_status; + size_t fh_free=0, fh_total=0, fh_used=0; + + fh_info._pentry = NULL; + for(;;) { + heap_status = _fheapwalk( &fh_info ); + if( heap_status != _HEAPOK ) break; + if((fh_info._useflag == _USEDENTRY ? "USED" : "FREE")=="FREE") fh_free += fh_info._size; + if((fh_info._useflag == _USEDENTRY ? "USED" : "FREE")=="USED") fh_used += fh_info._size; + fh_total += fh_info._size; + } + heapstat(heap_status); + return fh_free; +} + +size_t GetNearFreeSize(void) +{ + struct _heapinfo nh_info; + int heap_status; + size_t nh_free=0, nh_total=0, nh_used=0; + + nh_info._pentry = NULL; + for(;;) { + heap_status = _nheapwalk( &nh_info ); + if( heap_status != _HEAPOK ) break; + if((nh_info._useflag == _USEDENTRY ? "USED" : "FREE")=="FREE") nh_free += nh_info._size; + if((nh_info._useflag == _USEDENTRY ? "USED" : "FREE")=="USED") nh_used += nh_info._size; + nh_total += nh_info._size; + } + heapstat(heap_status); + return nh_free; } long int @@ -250,6 +367,139 @@ filesize(FILE *fp) return(size_of_file); } +void print_normal_entry(char *text, dword total, dword used, dword free) +{ + printf("%-17s", text); + convert("%8sB ", total); + convert("%9sB ", used); + convert("%9sB\n", free); +} + +/* + * As for printf(), but format may only contain a single format specifier, + * which must be "%s" and is replaced with the string form of num with commas + * separating groups of three digits. + * + * e.g. convert("%s bytes", 1234567) -> "1,234,567 bytes" + */ +void convert(const char *format, dword num) +{ + int c, i, j, n; + char des[4*sizeof(dword)+3]; + union REGS regs; + struct SREGS sregs; + char mycountry[48]; /* probably 34 bytes are enough... */ + char ksep = ','; /* or . */ + + regs.x.ax = 0x3800; + sregs.ds = FP_SEG(&mycountry); + regs.x.dx = FP_OFF(&mycountry); + intdosx(®s,®s,&sregs); + if (regs.x.cflag == 0) { + ksep = mycountry[7]; /* 1000's separator */ + /* dsep = mycountry[9]; ** decimal separator */ + } + + n = sprintf(des, "%lu", num); + /* insert commas in the string */ + c = 3; + for (i = n - 3; i > 0; i--) { + if (c%3==0) { + for (j = n; j >= i; j--) + des[j+1] = des[j]; + des[i]=ksep; /* ',' */ + n++; + } + c++; + } + printf(format, des); +} + +void heapdump(void) +{ + struct _heapinfo fh_info, nh_info, h_info; + int heap_status; + size_t h_free, nh_free, fh_free, h_total, nh_total, fh_total, h_used, nh_used, fh_used; + + printf("\n == default ==\n\n"); + h_info._pentry = NULL; + h_free=0; h_total=0; h_used=0; + for(;;) { + heap_status = _heapwalk( &h_info ); + if( heap_status != _HEAPOK ) break; + printf( " %s block at %Fp of size %4.4X\n", +(h_info._useflag == _USEDENTRY ? "USED" : "FREE"), +h_info._pentry, h_info._size ); + if((h_info._useflag == _USEDENTRY ? "USED" : "FREE")=="FREE") h_free += h_info._size; + if((h_info._useflag == _USEDENTRY ? "USED" : "FREE")=="USED") h_used += h_info._size; + h_total += h_info._size; + } + heapstat(heap_status); + + //near + printf("\n == near ==\n\n"); + nh_info._pentry = NULL; + nh_free=0; nh_total=0; nh_used=0; + for(;;) { + heap_status = _nheapwalk( &nh_info ); + if( heap_status != _HEAPOK ) break; + printf( " %s block at %Fp of size %4.4X\n", +(nh_info._useflag == _USEDENTRY ? "USED" : "FREE"), +nh_info._pentry, nh_info._size ); + if((nh_info._useflag == _USEDENTRY ? "USED" : "FREE")=="FREE") nh_free += nh_info._size; + if((nh_info._useflag == _USEDENTRY ? "USED" : "FREE")=="USED") nh_used += nh_info._size; + nh_total += nh_info._size; + } + heapstat(heap_status); + + //far + printf("\n == far ==\n\n"); + fh_info._pentry = NULL; + fh_free=0; fh_total=0; fh_used=0; + for(;;) { + heap_status = _fheapwalk( &fh_info ); + if( heap_status != _HEAPOK ) break; + printf( " %s block at %Fp of size %4.4X\n", +(fh_info._useflag == _USEDENTRY ? "USED" : "FREE"), +fh_info._pentry, fh_info._size ); + if((fh_info._useflag == _USEDENTRY ? "USED" : "FREE")=="FREE") fh_free += fh_info._size; + if((fh_info._useflag == _USEDENTRY ? "USED" : "FREE")=="USED") fh_used += fh_info._size; + fh_total += fh_info._size; + } + heapstat(heap_status); + +printf("\n"); +printf(kittengets(2,0,"Memory Type Total Used Free\n")); +printf( "---------------- -------- -------- --------\n"); +print_normal_entry(kittengets(2,1,"Default"), (dword)h_total, (dword)h_used, (dword)h_free); +print_normal_entry(kittengets(2,1,"Near"), (dword)nh_total, (dword)nh_used, (dword)nh_free); +print_normal_entry(kittengets(2,1,"Far"), (dword)fh_total, (dword)fh_used, (dword)fh_free); +printf( "---------------- -------- -------- --------\n"); +//printf("memavl = %lu\n", (dword)_memavl()); +printf("stackavail = %u\n", stackavail()); +} + +void heapstat(int heap_status) +{ + switch( heap_status ) { + case _HEAPEND: + //printf( "OK - end of heap\n" ); + break; + case _HEAPEMPTY: + //printf( "OK - heap is empty\n" ); + break; + case _HEAPBADBEGIN: + printf( "ERROR - heap is damaged\n" ); + break; + case _HEAPBADPTR: + printf( "ERROR - bad pointer to heap\n" ); + break; + case _HEAPBADNODE: + printf( "ERROR - bad node in heap\n" ); + } +} + + /////////////////////////////////////////////////////////////////////////// // // US_CheckParm() - checks to see if a string matches one of a set of diff --git a/src/lib/16_head.h b/src/lib/16_head.h index 6c5f9b0b..db6c4262 100644 --- a/src/lib/16_head.h +++ b/src/lib/16_head.h @@ -42,8 +42,15 @@ #include #include #include +#include +#include "src/lib/nyan/kitten.h" #include "src/lib/types.h" +struct list { + struct list __based(__self) *next; + int value; +}; + /* Control codes for all keys on the keyboard */ //here temperarly /* @@ -169,13 +176,22 @@ typedef struct /* local function */ void wait(clock_t wait); -void* AllocateLargestFreeBlock(size_t* Size); +void __near* LargestFreeBlock(size_t* Size); +size_t _coreleft(void); +void far* LargestFarFreeBlock(size_t* Size); +size_t _farcoreleft(void); +void huge* LargestHugeFreeBlock(size_t* Size); +size_t _hugecoreleft(void); +//void __based(__self)* LargestBasedFreeBlock(size_t* Size); +//size_t _basedcoreleft(void); size_t GetFreeSize(void); -void far *AllocateLargestFarFreeBlock(size_t far* Size); size_t GetFarFreeSize(void); -void __near *AllocateLargestNearFreeBlock(size_t* Size); size_t GetNearFreeSize(void); long int filesize(FILE *fp); +void print_normal_entry(char *text, dword total, dword used, dword free); +void convert(const char *format, dword num); +void heapdump(void); +void heapstat(int heap_status); int US_CheckParm(char *parm,char **strings); extern void CA_OpenDebug (void); diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 3ba93d32..38754e10 100644 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -1561,8 +1561,7 @@ void MM_FreeBlock(mmblocktype *x, mminfo_t *mm) void MM_seguin(void) { - __asm - { + __asm { push ds mov ax,ds inc ax @@ -1572,8 +1571,7 @@ void MM_seguin(void) void MM_segude(void) { - __asm - { + __asm { pop ds } } diff --git a/src/lib/nyan/kitten.c b/src/lib/nyan/kitten.c new file mode 100644 index 00000000..49cb7474 --- /dev/null +++ b/src/lib/nyan/kitten.c @@ -0,0 +1,613 @@ + +/* Functions that emulate UNIX catgets */ + +/* Copyright (C) 1999,2000,2001 Jim Hall */ + +/* + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include /* sprintf */ +#include /* getenv */ +#include /* strchr */ +#include + +#include "src/lib/nyan/kitten.h" + + +/* DB stuff */ + +struct db_list{ + struct db_list *next; + char *key; + char *value; +}; + +typedef struct db_list db_t; + +db_t *db_insert (char *key, char *value); +db_t *db_fetch (char *key); + + +/* External functions */ + +int get_line (int file, char *buffer, int size); + + +/* Local prototypes */ + +int catread (char *catfile); /* Reads a catfile into the hash */ +char *processEscChars(char *line); /* Converts c escape sequences to chars */ + +/* Globals */ + +nl_catd _kitten_catalog = 0; /* _kitten_catalog descriptor, either 0 or 1 */ + + + +#if defined(__SMALL__) /* it's not very portable ;) */ + +#include +/* assert we are running in small model */ +/* else pointer below has to be done correctly */ +char verify_small_pointers[sizeof(void*) == 2 ? 1 : -1]; + + +int dos_open(char *filename, int mode); +#define open(filename,mode) dos_open(filename,mode) + +int dos_read(int file, void *ptr, unsigned count); +#define read(file, ptr, count) dos_read(file,ptr,count) + +void dos_close(int file); +#define close(file) dos_close(file) + +#ifdef __WATCOMC__ + +#pragma aux dos_open = \ +"mov ax, 0x3d00" \ +"int 0x21" \ +"jnc noerror" \ +"mov ax, 0xffff" \ +"noerror:" \ +parm [dx] [ax] value [ax]; + +#pragma aux dos_read = \ +"mov ah, 0x3f" \ +"int 0x21" \ +"jnc noerror" \ +"xor ax, ax" \ +"noerror:" \ +parm [bx] [dx] [cx] value [ax]; + +#pragma aux dos_close = \ +"mov ah, 0x3e" \ +"int 0x21" \ +parm [bx]; + +#else + +int dos_open(char *filename, int mode) +{ + union REGS r; + + if (mode); /* mode ignored - readonly supported */ + + r.h.ah = 0x3d; + r.h.al = 0; /* read mode only supoported now !! */ + r.x.dx = (unsigned)filename; + intdos(&r,&r); + + if (r.x.cflag) + return -1; + return r.x.ax; +} + +int dos_read(int file, void *ptr, unsigned count) +{ + union REGS r; + + r.h.ah = 0x3f; + r.x.bx = file; + r.x.cx = count; + r.x.dx = (unsigned)ptr; + intdos(&r,&r); + + if (r.x.cflag) + return 0; + return r.x.ax; +} + +void dos_close(int file) +{ + union REGS r; + + r.h.ah = 0x3e; + r.x.bx = file; + intdos(&r,&r); +} + +#endif +#endif + +#ifndef NOCATS + +/* Functions */ + +char * +pascal kittengets(int set_number, int message_number, char *message) +{ + /* get message from a message _kitten_catalog */ + + /* 'message' should really be const, but not when it is returned */ + + /* On success, catgets() returns a pointer to an internal buffer + area containing the null-terminated message string. On failure, + catgets() returns the value 'message'. */ + + char key[10]; + db_t *ptr; + + + /* fetch the message that goes with the set/message number */ + + sprintf (key, "%d.%d", set_number, message_number); + ptr = db_fetch (key); + + /* printf("\ncatgets %s\n",message); */ + + if (ptr) + { + /* printf("------> %s\n",ptr->value); */ + + return (ptr->value); + } + + /* else */ + + return (message); +} + +nl_catd +kittenopen(char *name) +{ + /* catopen() returns a message _kitten_catalog descriptor of type nl_catd on + success. On failure, it returns -1. */ + + /* 'flag' is completely ignored here. */ + + char catfile[256]; /* full path to the msg _kitten_catalog */ + char *nlsptr; /* ptr to NLSPATH */ + char *lang; /* ptr to LANG */ + + + + /* Open the _kitten_catalog file */ + + /* The value of `_kitten_catalog' will be set based on catread */ + + if (_kitten_catalog) + { + /* Already one open */ + + printf("cat already open\n"); + return (-1); + } + + /* If the message _kitten_catalog file name contains a directory separator, + assume that this is a real path to the _kitten_catalog file. Note that + catread will return a true or false value based on its ability + to read the catfile. */ + + if (strchr (name, '\\')) + { + /* first approximation: 'name' is a filename */ + + printf("found \\\n"); + + _kitten_catalog = catread (name); + return (_kitten_catalog); + } + + /* If the message _kitten_catalog file name does not contain a directory + separator, then we need to try to locate the message _kitten_catalog on + our own. We will use several methods to find it. */ + + /* We will need the value of LANG, and may need a 2-letter abbrev of + LANG later on, so get it now. */ + + lang = getenv ("LANG"); + + if (lang == NULL) + { + /* printf("no lang= found\n"); */ + + /* Return failure - we won't be able to locate the cat file */ + return (-1); + } + + + /* step through NLSPATH */ + + nlsptr = getenv ("NLSPATH"); + + + if (nlsptr == NULL) + { + /* printf("no NLSPATH= found\n"); */ + + /* Return failure - we won't be able to locate the cat file */ + return (-1); + } + + /* printf("nlsptr:%s\n",nlsptr); */ + + while (*nlsptr) + { + char *tok = strchr(nlsptr, ';'); + int toklen; + + + if (tok == NULL) tok = nlsptr + strlen(nlsptr); + toklen=tok-nlsptr; + /* Try to find the _kitten_catalog file in each path from NLSPATH */ + + /* Rule #1: %NLSPATH%\%LANG%\cat */ + + memcpy(catfile,nlsptr,toklen); + sprintf(catfile+toklen,"\\%s\\%s",lang,name); + + _kitten_catalog = catread (catfile); + if (_kitten_catalog) + { + return (_kitten_catalog); + } + + /* Rule #2: %NLSPATH%\cat.%LANG% */ + + sprintf(catfile+toklen,"\\%s.%s",name, lang); + + _kitten_catalog = catread (catfile); + + if (_kitten_catalog) + { + return (_kitten_catalog); + } + + /* Rule #3: if LANG looks to be in format "en-UK" then + %NLSPATH%\cat.EN */ + + if (lang[2] == '-') + { + lang[2] = 0; + sprintf(catfile+toklen,"\\%s.%s",name,lang); + lang[2] = '-'; + + _kitten_catalog = catread (catfile); + if (_kitten_catalog) + { + return (_kitten_catalog); + } + } + + /* Grab next tok for the next while iteration */ + nlsptr = tok; + if (*nlsptr) nlsptr++; + + } /* while tok */ + + /* We could not find it. Return failure. */ + + return (0); +} + +int +catread (char *catfile) +{ + int file; /* pointer to the catfile */ + char *key; /* part of key-value for hash */ + char *value; /* part of key-value for hash */ + char inBuffer[256]; /* the string read from the file */ + + /* Open the catfile for reading */ + + /*printf("catread %s\n",catfile); */ + + file = open (catfile, O_RDONLY | O_TEXT); + if (file < 0) + { + /* Cannot open the file. Return failure */ + /* printf("catread: cant read %s\n",catfile); */ + return (0); + } + + /*printf("catread %s success\n",catfile);*/ + + /* Read the file into memory */ + + while (get_line (file, inBuffer, sizeof(inBuffer))) + { + /* Break into parts. Entries should be of the form: + "1.2:This is a message" */ + + /* A line that starts with '#' is considered a comment, and will + be thrown away without reading it. */ + + if (inBuffer[0] == '#') /* comment */ + continue; + + if ((key = strchr (inBuffer, ':')) != NULL) + { + *key = 0; + + value = processEscChars(key+1); + + db_insert (inBuffer, value); + } + + } /* while */ + + close (file); + + /* Return success */ + + return (1); +} + +void +kittenclose (void) +{ + /* close a message _kitten_catalog */ + + _kitten_catalog = 0; +} + + + +/** + * Process strings, converting \n, \t, \v, \b, \r, \f, \\, \ddd, \xdd and \x0dd + * to actual chars. (Note: \x is an extension to support hexadecimal) + * This method is used to allow the message _kitten_catalog to use c escape sequences. + * Modifies the line in-place (always same size or shorter). + * Returns a pointer to input string. + */ + +int mystrtoul(char *src, int base, int size, int *error) +{ + int ret = 0; + + *error = 1; + + for (; size > 0; size--) + { + int digit; + int ch = *src++; + + if (ch >= '0' && ch <= '9') digit = ch - '0'; + else if (ch >= 'A' && ch <= 'Z') digit = ch - 'A' + 10; + else if (ch >= 'a' && ch <= 'z') digit = ch - 'a' + 10; + else + { + return 0; + } + + if (digit >= base) + { + return 0; + } + + ret = ret * base + digit; + } + + *error = 0; + + return ret; +} + + +char *processEscChars(char *line) +{ + register char *src = line, *dst = line; + + /* used when converting \xdd and \ddd (hex or octal) characters */ + char ch; + + if (line == NULL) return NULL; + + /* cycle through copying characters, except when a \ is encountered. */ + for ( ; *src != '\0'; src++, dst++) + { + ch = *src; + + if (ch == '\\') + { + src++; /* point to char following slash */ + switch (ch = *src) + { + case '\\': /* a single slash */ + ch = '\\'; + break; + case 'n': /* a newline (linefeed) */ + ch = '\n'; + break; + case 'r': /* a carriage return */ + ch = '\r'; + break; + case 't': /* a horizontal tab */ + ch = '\t'; + break; + case 'v': /* a vertical tab */ + ch = '\v'; + break; + case 'b': /* a backspace */ + ch = '\b'; + break; + case 'a': /* alert */ + ch = '\a'; + break; + case 'f': /* formfeed */ + ch = '\f'; + break; + case 'x': /* extension supporting hex numbers \xdd or \x0dd */ + { + int error; + ch = mystrtoul(src+1,16,2, &error); /* get value */ + if (!error) /* store character */ + { + src += 2; + } + else /* error so just store x (loose slash) */ + { + ch = *src; + } + } + + break; + default: /* just store letter (loose slash) or handle octal */ + + { + int error; + ch = mystrtoul(src,8,3, &error); /* get value */ + if (!error) /* store character */ + { + src += 3; + } + else + ch = *src; + } + + break; + } + } + + *dst = ch; + } + + /* ensure '\0' terminated */ + *dst = '\0'; + + return line; +} + + + +int +get_line (int file, char *str, int size) +{ + int success = 0; + + /* now, read the string */ + + for ( ; size > 0; ) + { + if (read(file,str,1) <= 0) + break; + + success = 1; + + if (*str == '\r') + continue; + + if (*str == '\n') + break; + + str++; + size--; + + } /* while */ + + *str = 0; + + return success; +} + +/* Function prototypes */ + + +/* Global variables */ + +static db_t *hashtab[1]; + + +/* Functions */ + + +/* db_fetch() - Query the hash and return a struct that contains the + key and the pointer. The calling function should not look beyond + that. */ + +db_t * +db_fetch (char *s) +{ + db_t *db_ptr; + + for (db_ptr = hashtab[0]; db_ptr != NULL; db_ptr = db_ptr->next) + { + if (strcmp (s, db_ptr->key) == 0) + { + break; + + } + } + + + return (db_ptr); +} + +/* db_insert() - Inserts a key,value pair into the hash. If the key + already exists in the hash, the new value is NOT inserted. */ + +db_t * +db_insert (char *key, char *value) +{ + db_t *db_ptr; + + if ((db_ptr = db_fetch (key)) == NULL) + { + /* not found */ + + db_ptr = (db_t *) malloc (sizeof (*db_ptr)); + + if (db_ptr == NULL || (db_ptr->key = strdup (key)) == NULL) + { + return (NULL); + } + + /* insert the key,value into the hash. */ + + db_ptr->next = hashtab[0]; + hashtab[0] = db_ptr; + } + + else + { + /* already there */ + + free ((void *) db_ptr->value); + } + + if ((db_ptr ->value = strdup (value)) == NULL) + { + return (NULL); + } + + /* else */ + + return (db_ptr); +} + + + +#endif /* NOCATS */ diff --git a/src/lib/nyan/kitten.h b/src/lib/nyan/kitten.h new file mode 100644 index 00000000..62c5bc7b --- /dev/null +++ b/src/lib/nyan/kitten.h @@ -0,0 +1,75 @@ +/* $Id: kitten.h,v 1.1 2004/09/19 10:01:26 bartoldeman Exp $ */ + +/* Functions that emulate UNIX catgets */ + +/* Copyright (C) 1999,2000 Jim Hall */ + +/* + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + + +#ifndef _CATGETS_H +#define _CATGETS_H + +#include + +#ifdef NOCATS + +/* #define NOCATS to disable that stuff completely */ +#define nl_catd int +#define catopen(x,y) 1 +#define catclose(x) +#define catgets(c,x,y,s) s + +#else + + + + +#ifdef __cplusplus +extern "C" { +#endif + + /* Data types */ + + typedef int nl_catd; + + /* Symbolic constants */ + +#define MCLoadBySet 0 /* not implemented */ +#define MCLoadAll 0 /* not implemented */ + + + /* Functions */ + +#define catgets(catalog, set,message_number,message) kittengets(set,message_number,message) +#define catopen(name,flag) kittenopen(name) +#define catclose(catalog) kittenclose() + + + char * pascal kittengets( int set_number, int message_number,char *message); + nl_catd kittenopen(char *name); + void kittenclose (void); + + + +#ifdef __cplusplus +} +#endif + +#endif /* NOCATS */ + +#endif /* _CATGETS_H */ diff --git a/src/scroll.c b/src/scroll.c index 6bd40c83..c262ec5e 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -62,7 +62,7 @@ void main() printf("Total free @ before map load: %zu\n", GetFreeSize()); printf("Total near free @ before map load: %zu\n", GetNearFreeSize()); printf("Total far free @ before map load: %zu\n", GetFarFreeSize()); - getch(); +// getch(); //0000 fprintf(stderr, "testing~\n"); // loadmap("data/test.map", &map); map.width=0; diff --git a/src/sega.c b/src/sega.c index 276b3e83..d4d04d27 100644 --- a/src/sega.c +++ b/src/sega.c @@ -1,36 +1,52 @@ -#include -#include -#include - -typedef struct { - a_t __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 ); - } - } - } - +#include +#include +#include + +struct list { + struct list __based(__self) *next; + int value; +}; + +void main(int argc, char *argv[]) + { + int i; + __segment segu; + struct list __based(segu) *head; + struct list __based(segu) *p; + + /* allocate based heap */ + segu = _bheapseg( 1024 ); + if( segu == _NULLSEG ) { + printf( "Unable to allocate based heap\n" ); + exit( 1 ); + } + + /* create a linked list in the based heap */ + head = 0; + for( i = 1; i < 10; i++ ) { + p = _bmalloc( segu, sizeof( struct list ) ); + if( p == _NULLOFF ) { + printf( "_bmalloc failed\n" ); + break; + } + p->next = head; + p->value = i; + head = p; + } + + /* traverse the linked list, printing out values */ + for( p = head; p != 0; p = p->next ) { + printf("Segu = %04X %FP", p, p); + printf( " Value = %d\n", p->value ); + } + + /* free all the elements of the linked list */ + for( ; p = head; ) { + head = p->next; + _bfree( segu, p ); + } + /* free the based heap */ + _bfreeseg( segu ); + printf("program=%P\n", *argv[0]); + printf("seg=%P\n", segu); +} diff --git a/test.exe b/test.exe index dd07d442..4a0080c5 100644 Binary files a/test.exe and b/test.exe differ diff --git a/test2.exe b/test2.exe index 56899e6f..8e07f0b2 100644 Binary files a/test2.exe and b/test2.exe differ diff --git a/tsthimem.exe b/tsthimem.exe index e0b5545c..4489e404 100644 Binary files a/tsthimem.exe and b/tsthimem.exe differ