]> 4ch.mooo.com Git - 16.git/commitdiff
== major changes and experimentation and improvements here and there! ww ==
authorsparky4 <sparky4@cock.li>
Thu, 30 Jul 2015 20:21:52 +0000 (15:21 -0500)
committersparky4 <sparky4@cock.li>
Thu, 30 Jul 2015 20:21:52 +0000 (15:21 -0500)
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

34 files changed:
16.exe
16/exmmtest/16_head.c
16/exmmtest/16_head.h
16/exmmtest/DEBUG.16 [new file with mode: 0644]
16/exmmtest/EXMMTEST.DSK
16/exmmtest/EXMMTEST.EXE
16/exmmtest/EXMMTEST.MAP
16/exmmtest/EXMMTEST.PRJ
16/exmmtest/MMDUMP.16
16/exmmtest/exmmtest.c
bakapi.exe
exmmtest.exe
fmemtest.exe
fontgfx.exe
fonttest.exe
inputest.exe
makefile
maptest.exe
palettec.exe
pcxtest.exe
scroll.exe
sega.exe [new file with mode: 0644]
sountest.exe
src/exmmtest.c
src/lib/16_head.c
src/lib/16_head.h
src/lib/16_mm.c
src/lib/nyan/kitten.c [new file with mode: 0644]
src/lib/nyan/kitten.h [new file with mode: 0644]
src/scroll.c
src/sega.c
test.exe
test2.exe
tsthimem.exe

diff --git a/16.exe b/16.exe
index 4097801115fd74e1472aadba1e3857ac0b79c35a..93f6c82fa13472f2927814535717cd4f1303ce80 100644 (file)
Binary files a/16.exe and b/16.exe differ
index b80ee542c365170efaa59ef4ee05d5d4ee3b9d39..dc14ac6388d357692c305a9e913d41c831a60364 100644 (file)
@@ -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;
index 9e7bc93a0f59548bac0429242595cb1eb92f2b72..1a2c74842f9f355f7224a0d3964d94eded20ac99 100644 (file)
@@ -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 (file)
index 0000000..a1ecff4
--- /dev/null
@@ -0,0 +1,16 @@
+Seg:0  Size:7000       Owner:0x11ca\r
+Seg:1b58       Size:256        Owner:0x64a2\r
+Seg:21de       Size:34 Owner:0xc211\r
+Seg:23b5       Size:44108      Owner:0xc514\r
+Seg:d022       Size:4294967263 Owner:0xcf18\r
+Seg:d022       Size:4294967263 Owner:0x11c5\r
+Seg:d022       Size:4294967263 Owner:0x6482\r
+Seg:d022       Size:4294967263 Owner:0xc414\r
+Seg:d022       Size:4294967263 Owner:0x19c3\r
+Seg:d022       Size:4294967263 Owner:0xce18\r
+Seg:d022       Size:4294967263 Owner:0x1403\r
+Seg:d022       Size:4294967263 Owner:0x1114\r
+Seg:d022       Size:4294967263 Owner:0xc214\r
+Seg:d022       Size:4294967263 Owner:0xc20a\r
+Seg:d022       Size:419        Owner:0xc419\r
+Seg:e000       Size:4294909951 Owner:0xc21a\r
index f68caf799761f7a0e67f4a4c69ccf5e487d25946..449303dcdcaa9f9fdc18e75068d34bfa3f3b7a12 100644 (file)
Binary files a/16/exmmtest/EXMMTEST.DSK and b/16/exmmtest/EXMMTEST.DSK differ
index c2cb4b2d28913fdaf48f88cab5e3113dca8fef0c..dea7d963ae89f83ef4b74c74cb05c43c68dd0621 100644 (file)
Binary files a/16/exmmtest/EXMMTEST.EXE and b/16/exmmtest/EXMMTEST.EXE differ
index 5e2339bd6d3e95f8e08fcf7b20034f5c640e69d4..d564f574ec379f6a6d052f8915043593c1f78145 100644 (file)
 \r
  Start  Stop   Length Name               Class\r
 \r
- 00000H 04F63H 04F64H _TEXT              CODE\r
- 04F70H 04F70H 00000H _FARDATA           FAR_DATA\r
- 04F70H 04F70H 00000H _FARBSS            FAR_BSS\r
- 04F70H 04F70H 00000H _OVERLAY_          OVRINFO\r
- 04F70H 04F70H 00000H _1STUB_            STUBSEG\r
- 04F70H 060BDH 0114EH _DATA              DATA\r
- 060BEH 060BFH 00002H _CVTSEG            DATA\r
- 060C0H 060C5H 00006H _SCNSEG            DATA\r
- 060C6H 060C6H 00000H _CONST             CONST\r
- 060C6H 060D7H 00012H _INIT_             INITDATA\r
- 060D8H 060D8H 00000H _INITEND_          INITDATA\r
- 060D8H 060D8H 00000H _EXIT_             EXITDATA\r
- 060D8H 060D8H 00000H _EXITEND_          EXITDATA\r
- 060D8H 06139H 00062H _BSS               BSS\r
- 0613AH 0613AH 00000H _BSSEND            BSSEND\r
- 06140H 061BFH 00080H _STACK             STACK\r
+ 00000H 04FBBH 04FBCH _TEXT              CODE\r
+ 04FC0H 04FC0H 00000H _FARDATA           FAR_DATA\r
+ 04FC0H 04FC0H 00000H _FARBSS            FAR_BSS\r
+ 04FC0H 04FC0H 00000H _OVERLAY_          OVRINFO\r
+ 04FC0H 04FC0H 00000H _1STUB_            STUBSEG\r
+ 04FC0H 06163H 011A4H _DATA              DATA\r
+ 06164H 06165H 00002H _CVTSEG            DATA\r
+ 06166H 0616BH 00006H _SCNSEG            DATA\r
+ 0616CH 0616CH 00000H _CONST             CONST\r
+ 0616CH 0617DH 00012H _INIT_             INITDATA\r
+ 0617EH 0617EH 00000H _INITEND_          INITDATA\r
+ 0617EH 0617EH 00000H _EXIT_             EXITDATA\r
+ 0617EH 0617EH 00000H _EXITEND_          EXITDATA\r
+ 0617EH 061DFH 00062H _BSS               BSS\r
+ 061E0H 061E0H 00000H _BSSEND            BSSEND\r
+ 061E0H 0625FH 00080H _STACK             STACK\r
 \r
 \r
 Detailed map of segments\r
 \r
  0000:0000 028F C=CODE   S=_TEXT          G=(none)  M=c0.ASM     ACBP=28\r
- 0000:028F 022B C=CODE   S=_TEXT          G=(none)  M=EXMMTEST.C ACBP=28\r
- 0000:04BA 1947 C=CODE   S=_TEXT          G=(none)  M=16_MM.C    ACBP=28\r
- 0000:1E01 0442 C=CODE   S=_TEXT          G=(none)  M=16_HEAD.C  ACBP=28\r
- 0000:2243 0232 C=CODE   S=_TEXT          G=(none)  M=16_CA.C    ACBP=28\r
- 0000:2475 0024 C=CODE   S=_TEXT          G=(none)  M=ATEXIT     ACBP=28\r
- 0000:2499 0049 C=CODE   S=_TEXT          G=(none)  M=CLOCK      ACBP=28\r
- 0000:24E2 0000 C=CODE   S=_TEXT          G=(none)  M=CTYPE      ACBP=28\r
- 0000:24E2 003D C=CODE   S=_TEXT          G=(none)  M=DOSFATTR   ACBP=28\r
- 0000:251F 0089 C=CODE   S=_TEXT          G=(none)  M=EXIT       ACBP=28\r
- 0000:25A8 0000 C=CODE   S=_TEXT          G=(none)  M=FILES      ACBP=28\r
- 0000:25A8 0000 C=CODE   S=_TEXT          G=(none)  M=FILES2     ACBP=28\r
- 0000:25A8 0000 C=CODE   S=_TEXT          G=(none)  M=FMODE      ACBP=28\r
- 0000:25A8 00AE C=CODE   S=_TEXT          G=(none)  M=H_LDIV     ACBP=28\r
- 0000:2656 0021 C=CODE   S=_TEXT          G=(none)  M=H_LLSH     ACBP=28\r
- 0000:2677 0021 C=CODE   S=_TEXT          G=(none)  M=H_LURSH    ACBP=28\r
- 0000:2698 0060 C=CODE   S=_TEXT          G=(none)  M=H_PADD     ACBP=28\r
- 0000:26F8 0028 C=CODE   S=_TEXT          G=(none)  M=H_PSBP     ACBP=28\r
- 0000:2720 004B C=CODE   S=_TEXT          G=(none)  M=IOERROR    ACBP=28\r
- 0000:276B 0011 C=CODE   S=_TEXT          G=(none)  M=ISATTY     ACBP=28\r
- 0000:277C 00A2 C=CODE   S=_TEXT          G=(none)  M=LONGTOA    ACBP=28\r
- 0000:281E 0029 C=CODE   S=_TEXT          G=(none)  M=LSEEK      ACBP=28\r
- 0000:2847 00B0 C=CODE   S=_TEXT          G=(none)  M=MKNAME     ACBP=28\r
- 0000:28F7 0021 C=CODE   S=_TEXT          G=(none)  M=N_PCMP     ACBP=28\r
- 0000:2918 00B2 C=CODE   S=_TEXT          G=(none)  M=SETUPIO    ACBP=28\r
- 0000:29CA 0000 C=CODE   S=_TEXT          G=(none)  M=STKLEN     ACBP=28\r
- 0000:29CA 002C C=CODE   S=_TEXT          G=(none)  M=TOLOWER    ACBP=28\r
- 0000:29F6 0018 C=CODE   S=_TEXT          G=(none)  M=UNLINK     ACBP=28\r
- 0000:2A0E 04DB C=CODE   S=_TEXT          G=(none)  M=VPRINTER   ACBP=28\r
- 0000:2EE9 009F C=CODE   S=_TEXT          G=(none)  M=VRAM       ACBP=28\r
- 0000:2F88 0000 C=CODE   S=_TEXT          G=(none)  M=WSCROLL    ACBP=28\r
- 0000:2F88 0030 C=CODE   S=_TEXT          G=(none)  M=_STPCPY    ACBP=28\r
- 0000:2FB8 0004 C=CODE   S=_TEXT          G=(none)  M=CORELEFT   ACBP=28\r
- 0000:2FBC 014E C=CODE   S=_TEXT          G=(none)  M=CPRINTF    ACBP=28\r
- 0000:310A 01A5 C=CODE   S=_TEXT          G=(none)  M=CRTINIT    ACBP=28\r
- 0000:32AF 001F C=CODE   S=_TEXT          G=(none)  M=CVTFAK     ACBP=28\r
- 0000:32CE 042D C=CODE   S=_TEXT          G=(none)  M=FARHEAP    ACBP=28\r
- 0000:36FB 013E C=CODE   S=_TEXT          G=(none)  M=FBRK       ACBP=28\r
- 0000:3839 0050 C=CODE   S=_TEXT          G=(none)  M=FCORELFT   ACBP=28\r
- 0000:3889 0054 C=CODE   S=_TEXT          G=(none)  M=GETCH      ACBP=28\r
- 0000:38DD 00AC C=CODE   S=_TEXT          G=(none)  M=GPTEXT     ACBP=28\r
- 0000:3989 0029 C=CODE   S=_TEXT          G=(none)  M=IOCTL      ACBP=28\r
- 0000:39B2 0012 C=CODE   S=_TEXT          G=(none)  M=KBHIT      ACBP=28\r
- 0000:39C4 009D C=CODE   S=_TEXT          G=(none)  M=MOVETEXT   ACBP=28\r
- 0000:3A61 0017 C=CODE   S=_TEXT          G=(none)  M=PUTCH      ACBP=28\r
- 0000:3A78 0004 C=CODE   S=_TEXT          G=(none)  M=REALCVT    ACBP=28\r
- 0000:3A7C 01C7 C=CODE   S=_TEXT          G=(none)  M=SCREEN     ACBP=28\r
- 0000:3C43 0184 C=CODE   S=_TEXT          G=(none)  M=SCROLL     ACBP=28\r
- 0000:3DC7 0129 C=CODE   S=_TEXT          G=(none)  M=SETARGV    ACBP=28\r
- 0000:3EF0 001C C=CODE   S=_TEXT          G=(none)  M=SETBLOCK   ACBP=28\r
- 0000:3F0C 002C C=CODE   S=_TEXT          G=(none)  M=WHEREXY    ACBP=28\r
- 0000:3F38 001D C=CODE   S=_TEXT          G=(none)  M=CHMODA     ACBP=28\r
- 0000:3F55 0026 C=CODE   S=_TEXT          G=(none)  M=CLOSE      ACBP=28\r
- 0000:3F7B 001E C=CODE   S=_TEXT          G=(none)  M=CLOSEA     ACBP=28\r
- 0000:3F99 00B0 C=CODE   S=_TEXT          G=(none)  M=FCLOSE     ACBP=28\r
- 0000:4049 00C6 C=CODE   S=_TEXT          G=(none)  M=FFLUSH     ACBP=28\r
- 0000:410F 0041 C=CODE   S=_TEXT          G=(none)  M=FLENGTH    ACBP=28\r
- 0000:4150 0040 C=CODE   S=_TEXT          G=(none)  M=FLUSHALL   ACBP=28\r
- 0000:4190 01FE C=CODE   S=_TEXT          G=(none)  M=FOPEN      ACBP=28\r
- 0000:438E 001C C=CODE   S=_TEXT          G=(none)  M=FPRINTF    ACBP=28\r
- 0000:43AA 01D8 C=CODE   S=_TEXT          G=(none)  M=FSEEK      ACBP=28\r
- 0000:4582 0070 C=CODE   S=_TEXT          G=(none)  M=LTOA1      ACBP=28\r
- 0000:45F2 0024 C=CODE   S=_TEXT          G=(none)  M=MEMCPY     ACBP=28\r
- 0000:4616 0022 C=CODE   S=_TEXT          G=(none)  M=MOVEDATA   ACBP=28\r
- 0000:4638 018D C=CODE   S=_TEXT          G=(none)  M=OPEN       ACBP=28\r
- 0000:47C5 004F C=CODE   S=_TEXT          G=(none)  M=OPENA      ACBP=28\r
- 0000:4814 001B C=CODE   S=_TEXT          G=(none)  M=PRINTF     ACBP=28\r
- 0000:482F 03A4 C=CODE   S=_TEXT          G=(none)  M=PUTC       ACBP=28\r
- 0000:4BD3 0111 C=CODE   S=_TEXT          G=(none)  M=SETVBUF    ACBP=28\r
- 0000:4CE4 003F C=CODE   S=_TEXT          G=(none)  M=STRCAT     ACBP=28\r
- 0000:4D23 0029 C=CODE   S=_TEXT          G=(none)  M=STRCPY     ACBP=28\r
- 0000:4D4C 001F C=CODE   S=_TEXT          G=(none)  M=STRLEN     ACBP=28\r
- 0000:4D6B 0149 C=CODE   S=_TEXT          G=(none)  M=WRITE      ACBP=28\r
- 0000:4EB4 003C C=CODE   S=_TEXT          G=(none)  M=WRITEA     ACBP=28\r
- 0000:4EF0 0003 C=CODE   S=_TEXT          G=(none)  M=WRITEU     ACBP=28\r
- 0000:4EF3 003B C=CODE   S=_TEXT          G=(none)  M=XFCLOSE    ACBP=28\r
- 0000:4F2E 0036 C=CODE   S=_TEXT          G=(none)  M=XFFLUSH    ACBP=28\r
- 04F7:0000 0000 C=FAR_DATA S=_FARDATA       G=(none)  M=c0.ASM     ACBP=68\r
- 04F7:0000 0000 C=FAR_BSS S=_FARBSS        G=(none)  M=c0.ASM     ACBP=68\r
- 04F7:0000 0000 C=OVRINFO S=_OVERLAY_      G=(none)  M=c0.ASM     ACBP=68\r
- 04F7:0000 0000 C=STUBSEG S=_1STUB_        G=(none)  M=c0.ASM     ACBP=68\r
- 04F7:0000 0093 C=DATA   S=_DATA          G=DGROUP  M=c0.ASM     ACBP=68\r
- 04F7:0094 018C C=DATA   S=_DATA          G=DGROUP  M=EXMMTEST.C ACBP=48\r
- 04F7:0220 0AFF C=DATA   S=_DATA          G=DGROUP  M=16_MM.C    ACBP=48\r
- 04F7:0D20 0004 C=DATA   S=_DATA          G=DGROUP  M=16_HEAD.C  ACBP=48\r
- 04F7:0D24 002C C=DATA   S=_DATA          G=DGROUP  M=16_CA.C    ACBP=48\r
- 04F7:0D50 0002 C=DATA   S=_DATA          G=DGROUP  M=ATEXIT     ACBP=48\r
- 04F7:0D52 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOCK      ACBP=48\r
- 04F7:0D52 0101 C=DATA   S=_DATA          G=DGROUP  M=CTYPE      ACBP=48\r
- 04F7:0E54 0000 C=DATA   S=_DATA          G=DGROUP  M=DOSFATTR   ACBP=48\r
- 04F7:0E54 0006 C=DATA   S=_DATA          G=DGROUP  M=EXIT       ACBP=48\r
- 04F7:0E5A 0190 C=DATA   S=_DATA          G=DGROUP  M=FILES      ACBP=48\r
- 04F7:0FEA 002A C=DATA   S=_DATA          G=DGROUP  M=FILES2     ACBP=48\r
- 04F7:1014 0004 C=DATA   S=_DATA          G=DGROUP  M=FMODE      ACBP=48\r
- 04F7:1018 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LDIV     ACBP=48\r
- 04F7:1018 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LLSH     ACBP=48\r
- 04F7:1018 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LURSH    ACBP=48\r
- 04F7:1018 0000 C=DATA   S=_DATA          G=DGROUP  M=H_PADD     ACBP=48\r
- 04F7:1018 0000 C=DATA   S=_DATA          G=DGROUP  M=H_PSBP     ACBP=48\r
- 04F7:1018 005B C=DATA   S=_DATA          G=DGROUP  M=IOERROR    ACBP=48\r
- 04F7:1074 0000 C=DATA   S=_DATA          G=DGROUP  M=ISATTY     ACBP=48\r
- 04F7:1074 0000 C=DATA   S=_DATA          G=DGROUP  M=LONGTOA    ACBP=48\r
- 04F7:1074 0000 C=DATA   S=_DATA          G=DGROUP  M=LSEEK      ACBP=48\r
- 04F7:1074 0009 C=DATA   S=_DATA          G=DGROUP  M=MKNAME     ACBP=48\r
- 04F7:107E 0000 C=DATA   S=_DATA          G=DGROUP  M=N_PCMP     ACBP=48\r
- 04F7:107E 0000 C=DATA   S=_DATA          G=DGROUP  M=SETUPIO    ACBP=48\r
- 04F7:107E 0002 C=DATA   S=_DATA          G=DGROUP  M=STKLEN     ACBP=48\r
- 04F7:1080 0000 C=DATA   S=_DATA          G=DGROUP  M=TOLOWER    ACBP=48\r
- 04F7:1080 0000 C=DATA   S=_DATA          G=DGROUP  M=UNLINK     ACBP=48\r
- 04F7:1080 0067 C=DATA   S=_DATA          G=DGROUP  M=VPRINTER   ACBP=48\r
- 04F7:10E8 0000 C=DATA   S=_DATA          G=DGROUP  M=VRAM       ACBP=48\r
- 04F7:10E8 0002 C=DATA   S=_DATA          G=DGROUP  M=WSCROLL    ACBP=48\r
- 04F7:10EA 0000 C=DATA   S=_DATA          G=DGROUP  M=_STPCPY    ACBP=48\r
- 04F7:10EA 0000 C=DATA   S=_DATA          G=DGROUP  M=CORELEFT   ACBP=48\r
- 04F7:10EA 0000 C=DATA   S=_DATA          G=DGROUP  M=CPRINTF    ACBP=48\r
- 04F7:10EA 0018 C=DATA   S=_DATA          G=DGROUP  M=CRTINIT    ACBP=48\r
- 04F7:1102 0031 C=DATA   S=_DATA          G=DGROUP  M=CVTFAK     ACBP=48\r
- 04F7:1134 0000 C=DATA   S=_DATA          G=DGROUP  M=FARHEAP    ACBP=48\r
- 04F7:1134 0002 C=DATA   S=_DATA          G=DGROUP  M=FBRK       ACBP=48\r
- 04F7:1136 0000 C=DATA   S=_DATA          G=DGROUP  M=FCORELFT   ACBP=48\r
- 04F7:1136 0000 C=DATA   S=_DATA          G=DGROUP  M=GETCH      ACBP=48\r
- 04F7:1136 0000 C=DATA   S=_DATA          G=DGROUP  M=GPTEXT     ACBP=48\r
- 04F7:1136 0000 C=DATA   S=_DATA          G=DGROUP  M=IOCTL      ACBP=48\r
- 04F7:1136 0002 C=DATA   S=_DATA          G=DGROUP  M=KBHIT      ACBP=48\r
- 04F7:1138 0000 C=DATA   S=_DATA          G=DGROUP  M=MOVETEXT   ACBP=48\r
- 04F7:1138 0000 C=DATA   S=_DATA          G=DGROUP  M=PUTCH      ACBP=48\r
- 04F7:1138 0000 C=DATA   S=_DATA          G=DGROUP  M=REALCVT    ACBP=48\r
- 04F7:1138 0000 C=DATA   S=_DATA          G=DGROUP  M=SCREEN     ACBP=48\r
- 04F7:1138 0000 C=DATA   S=_DATA          G=DGROUP  M=SCROLL     ACBP=48\r
- 04F7:1138 0010 C=DATA   S=_DATA          G=DGROUP  M=SETARGV    ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=SETBLOCK   ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=WHEREXY    ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=CHMODA     ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOSE      ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOSEA     ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=FCLOSE     ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=FFLUSH     ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=FLENGTH    ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=FLUSHALL   ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=FOPEN      ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=FPRINTF    ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=FSEEK      ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=LTOA1      ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=MEMCPY     ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=MOVEDATA   ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=OPEN       ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=OPENA      ACBP=48\r
- 04F7:1148 0000 C=DATA   S=_DATA          G=DGROUP  M=PRINTF     ACBP=48\r
- 04F7:1148 0001 C=DATA   S=_DATA          G=DGROUP  M=PUTC       ACBP=48\r
- 04F7:114A 0004 C=DATA   S=_DATA          G=DGROUP  M=SETVBUF    ACBP=48\r
- 04F7:114E 0000 C=DATA   S=_DATA          G=DGROUP  M=STRCAT     ACBP=48\r
- 04F7:114E 0000 C=DATA   S=_DATA          G=DGROUP  M=STRCPY     ACBP=48\r
- 04F7:114E 0000 C=DATA   S=_DATA          G=DGROUP  M=STRLEN     ACBP=48\r
- 04F7:114E 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITE      ACBP=48\r
- 04F7:114E 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITEA     ACBP=48\r
- 04F7:114E 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITEU     ACBP=48\r
- 04F7:114E 0000 C=DATA   S=_DATA          G=DGROUP  M=XFCLOSE    ACBP=48\r
- 04F7:114E 0000 C=DATA   S=_DATA          G=DGROUP  M=XFFLUSH    ACBP=48\r
- 04F7:114E 0000 C=DATA   S=_CVTSEG        G=DGROUP  M=c0.ASM     ACBP=48\r
- 04F7:114E 0002 C=DATA   S=_CVTSEG        G=DGROUP  M=CVTFAK     ACBP=48\r
- 04F7:1150 0000 C=DATA   S=_CVTSEG        G=DGROUP  M=REALCVT    ACBP=48\r
- 04F7:1150 0000 C=DATA   S=_SCNSEG        G=DGROUP  M=c0.ASM     ACBP=48\r
- 04F7:1150 0006 C=DATA   S=_SCNSEG        G=DGROUP  M=CVTFAK     ACBP=48\r
- 04F7:1156 0000 C=CONST  S=_CONST         G=DGROUP  M=c0.ASM     ACBP=48\r
- 04F7:1156 0000 C=INITDATA S=_INIT_         G=DGROUP  M=c0.ASM     ACBP=48\r
- 04F7:1156 0006 C=INITDATA S=_INIT_         G=DGROUP  M=SETUPIO    ACBP=48\r
- 04F7:115C 0006 C=INITDATA S=_INIT_         G=DGROUP  M=CRTINIT    ACBP=48\r
- 04F7:1162 0006 C=INITDATA S=_INIT_         G=DGROUP  M=SETARGV    ACBP=48\r
- 04F7:1168 0000 C=INITDATA S=_INITEND_      G=DGROUP  M=c0.ASM     ACBP=28\r
- 04F7:1168 0000 C=EXITDATA S=_EXIT_         G=DGROUP  M=c0.ASM     ACBP=48\r
- 04F7:1168 0000 C=EXITDATA S=_EXITEND_      G=DGROUP  M=c0.ASM     ACBP=28\r
- 04F7:1168 0000 C=BSS    S=_BSS           G=DGROUP  M=c0.ASM     ACBP=48\r
- 04F7:1168 0000 C=BSS    S=_BSS           G=DGROUP  M=EXMMTEST.C ACBP=48\r
- 04F7:1168 0006 C=BSS    S=_BSS           G=DGROUP  M=16_MM.C    ACBP=48\r
- 04F7:116E 0000 C=BSS    S=_BSS           G=DGROUP  M=16_HEAD.C  ACBP=48\r
- 04F7:116E 000A C=BSS    S=_BSS           G=DGROUP  M=16_CA.C    ACBP=48\r
- 04F7:1178 0040 C=BSS    S=_BSS           G=DGROUP  M=ATEXIT     ACBP=48\r
- 04F7:11B8 0001 C=BSS    S=_BSS           G=DGROUP  M=CLOCK      ACBP=48\r
- 04F7:11BA 0000 C=BSS    S=_BSS           G=DGROUP  M=DOSFATTR   ACBP=48\r
- 04F7:11BA 0000 C=BSS    S=_BSS           G=DGROUP  M=IOERROR    ACBP=48\r
- 04F7:11BA 0000 C=BSS    S=_BSS           G=DGROUP  M=ISATTY     ACBP=48\r
- 04F7:11BA 0000 C=BSS    S=_BSS           G=DGROUP  M=LONGTOA    ACBP=48\r
- 04F7:11BA 0000 C=BSS    S=_BSS           G=DGROUP  M=LSEEK      ACBP=48\r
- 04F7:11BA 000D C=BSS    S=_BSS           G=DGROUP  M=MKNAME     ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=SETUPIO    ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=UNLINK     ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=VPRINTER   ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=VRAM       ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=CORELEFT   ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=CRTINIT    ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=GETCH      ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=IOCTL      ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=KBHIT      ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=SETBLOCK   ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=CHMODA     ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=CLOSEA     ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=FLENGTH    ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=MEMCPY     ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=MOVEDATA   ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=OPEN       ACBP=48\r
- 04F7:11C8 0000 C=BSS    S=_BSS           G=DGROUP  M=OPENA      ACBP=48\r
- 04F7:11C8 0001 C=BSS    S=_BSS           G=DGROUP  M=PUTC       ACBP=48\r
- 04F7:11CA 0000 C=BSS    S=_BSS           G=DGROUP  M=STRCAT     ACBP=48\r
- 04F7:11CA 0000 C=BSS    S=_BSS           G=DGROUP  M=STRCPY     ACBP=48\r
- 04F7:11CA 0000 C=BSS    S=_BSS           G=DGROUP  M=STRLEN     ACBP=48\r
- 04F7:11CA 0000 C=BSS    S=_BSS           G=DGROUP  M=WRITEA     ACBP=48\r
- 04F7:11CA 0000 C=BSSEND S=_BSSEND        G=DGROUP  M=c0.ASM     ACBP=28\r
- 0614:0000 0080 C=STACK  S=_STACK         G=(none)  M=c0.ASM     ACBP=74\r
+ 0000:028F 0283 C=CODE   S=_TEXT          G=(none)  M=EXMMTEST.C ACBP=28\r
+ 0000:0512 1947 C=CODE   S=_TEXT          G=(none)  M=16_MM.C    ACBP=28\r
+ 0000:1E59 0442 C=CODE   S=_TEXT          G=(none)  M=16_HEAD.C  ACBP=28\r
+ 0000:229B 0232 C=CODE   S=_TEXT          G=(none)  M=16_CA.C    ACBP=28\r
+ 0000:24CD 0024 C=CODE   S=_TEXT          G=(none)  M=ATEXIT     ACBP=28\r
+ 0000:24F1 0049 C=CODE   S=_TEXT          G=(none)  M=CLOCK      ACBP=28\r
+ 0000:253A 0000 C=CODE   S=_TEXT          G=(none)  M=CTYPE      ACBP=28\r
+ 0000:253A 003D C=CODE   S=_TEXT          G=(none)  M=DOSFATTR   ACBP=28\r
+ 0000:2577 0089 C=CODE   S=_TEXT          G=(none)  M=EXIT       ACBP=28\r
+ 0000:2600 0000 C=CODE   S=_TEXT          G=(none)  M=FILES      ACBP=28\r
+ 0000:2600 0000 C=CODE   S=_TEXT          G=(none)  M=FILES2     ACBP=28\r
+ 0000:2600 0000 C=CODE   S=_TEXT          G=(none)  M=FMODE      ACBP=28\r
+ 0000:2600 00AE C=CODE   S=_TEXT          G=(none)  M=H_LDIV     ACBP=28\r
+ 0000:26AE 0021 C=CODE   S=_TEXT          G=(none)  M=H_LLSH     ACBP=28\r
+ 0000:26CF 0021 C=CODE   S=_TEXT          G=(none)  M=H_LURSH    ACBP=28\r
+ 0000:26F0 0060 C=CODE   S=_TEXT          G=(none)  M=H_PADD     ACBP=28\r
+ 0000:2750 0028 C=CODE   S=_TEXT          G=(none)  M=H_PSBP     ACBP=28\r
+ 0000:2778 004B C=CODE   S=_TEXT          G=(none)  M=IOERROR    ACBP=28\r
+ 0000:27C3 0011 C=CODE   S=_TEXT          G=(none)  M=ISATTY     ACBP=28\r
+ 0000:27D4 00A2 C=CODE   S=_TEXT          G=(none)  M=LONGTOA    ACBP=28\r
+ 0000:2876 0029 C=CODE   S=_TEXT          G=(none)  M=LSEEK      ACBP=28\r
+ 0000:289F 00B0 C=CODE   S=_TEXT          G=(none)  M=MKNAME     ACBP=28\r
+ 0000:294F 0021 C=CODE   S=_TEXT          G=(none)  M=N_PCMP     ACBP=28\r
+ 0000:2970 00B2 C=CODE   S=_TEXT          G=(none)  M=SETUPIO    ACBP=28\r
+ 0000:2A22 0000 C=CODE   S=_TEXT          G=(none)  M=STKLEN     ACBP=28\r
+ 0000:2A22 002C C=CODE   S=_TEXT          G=(none)  M=TOLOWER    ACBP=28\r
+ 0000:2A4E 0018 C=CODE   S=_TEXT          G=(none)  M=UNLINK     ACBP=28\r
+ 0000:2A66 04DB C=CODE   S=_TEXT          G=(none)  M=VPRINTER   ACBP=28\r
+ 0000:2F41 009F C=CODE   S=_TEXT          G=(none)  M=VRAM       ACBP=28\r
+ 0000:2FE0 0000 C=CODE   S=_TEXT          G=(none)  M=WSCROLL    ACBP=28\r
+ 0000:2FE0 0030 C=CODE   S=_TEXT          G=(none)  M=_STPCPY    ACBP=28\r
+ 0000:3010 0004 C=CODE   S=_TEXT          G=(none)  M=CORELEFT   ACBP=28\r
+ 0000:3014 014E C=CODE   S=_TEXT          G=(none)  M=CPRINTF    ACBP=28\r
+ 0000:3162 01A5 C=CODE   S=_TEXT          G=(none)  M=CRTINIT    ACBP=28\r
+ 0000:3307 001F C=CODE   S=_TEXT          G=(none)  M=CVTFAK     ACBP=28\r
+ 0000:3326 042D C=CODE   S=_TEXT          G=(none)  M=FARHEAP    ACBP=28\r
+ 0000:3753 013E C=CODE   S=_TEXT          G=(none)  M=FBRK       ACBP=28\r
+ 0000:3891 0050 C=CODE   S=_TEXT          G=(none)  M=FCORELFT   ACBP=28\r
+ 0000:38E1 0054 C=CODE   S=_TEXT          G=(none)  M=GETCH      ACBP=28\r
+ 0000:3935 00AC C=CODE   S=_TEXT          G=(none)  M=GPTEXT     ACBP=28\r
+ 0000:39E1 0029 C=CODE   S=_TEXT          G=(none)  M=IOCTL      ACBP=28\r
+ 0000:3A0A 0012 C=CODE   S=_TEXT          G=(none)  M=KBHIT      ACBP=28\r
+ 0000:3A1C 009D C=CODE   S=_TEXT          G=(none)  M=MOVETEXT   ACBP=28\r
+ 0000:3AB9 0017 C=CODE   S=_TEXT          G=(none)  M=PUTCH      ACBP=28\r
+ 0000:3AD0 0004 C=CODE   S=_TEXT          G=(none)  M=REALCVT    ACBP=28\r
+ 0000:3AD4 01C7 C=CODE   S=_TEXT          G=(none)  M=SCREEN     ACBP=28\r
+ 0000:3C9B 0184 C=CODE   S=_TEXT          G=(none)  M=SCROLL     ACBP=28\r
+ 0000:3E1F 0129 C=CODE   S=_TEXT          G=(none)  M=SETARGV    ACBP=28\r
+ 0000:3F48 001C C=CODE   S=_TEXT          G=(none)  M=SETBLOCK   ACBP=28\r
+ 0000:3F64 002C C=CODE   S=_TEXT          G=(none)  M=WHEREXY    ACBP=28\r
+ 0000:3F90 001D C=CODE   S=_TEXT          G=(none)  M=CHMODA     ACBP=28\r
+ 0000:3FAD 0026 C=CODE   S=_TEXT          G=(none)  M=CLOSE      ACBP=28\r
+ 0000:3FD3 001E C=CODE   S=_TEXT          G=(none)  M=CLOSEA     ACBP=28\r
+ 0000:3FF1 00B0 C=CODE   S=_TEXT          G=(none)  M=FCLOSE     ACBP=28\r
+ 0000:40A1 00C6 C=CODE   S=_TEXT          G=(none)  M=FFLUSH     ACBP=28\r
+ 0000:4167 0041 C=CODE   S=_TEXT          G=(none)  M=FLENGTH    ACBP=28\r
+ 0000:41A8 0040 C=CODE   S=_TEXT          G=(none)  M=FLUSHALL   ACBP=28\r
+ 0000:41E8 01FE C=CODE   S=_TEXT          G=(none)  M=FOPEN      ACBP=28\r
+ 0000:43E6 001C C=CODE   S=_TEXT          G=(none)  M=FPRINTF    ACBP=28\r
+ 0000:4402 01D8 C=CODE   S=_TEXT          G=(none)  M=FSEEK      ACBP=28\r
+ 0000:45DA 0070 C=CODE   S=_TEXT          G=(none)  M=LTOA1      ACBP=28\r
+ 0000:464A 0024 C=CODE   S=_TEXT          G=(none)  M=MEMCPY     ACBP=28\r
+ 0000:466E 0022 C=CODE   S=_TEXT          G=(none)  M=MOVEDATA   ACBP=28\r
+ 0000:4690 018D C=CODE   S=_TEXT          G=(none)  M=OPEN       ACBP=28\r
+ 0000:481D 004F C=CODE   S=_TEXT          G=(none)  M=OPENA      ACBP=28\r
+ 0000:486C 001B C=CODE   S=_TEXT          G=(none)  M=PRINTF     ACBP=28\r
+ 0000:4887 03A4 C=CODE   S=_TEXT          G=(none)  M=PUTC       ACBP=28\r
+ 0000:4C2B 0111 C=CODE   S=_TEXT          G=(none)  M=SETVBUF    ACBP=28\r
+ 0000:4D3C 003F C=CODE   S=_TEXT          G=(none)  M=STRCAT     ACBP=28\r
+ 0000:4D7B 0029 C=CODE   S=_TEXT          G=(none)  M=STRCPY     ACBP=28\r
+ 0000:4DA4 001F C=CODE   S=_TEXT          G=(none)  M=STRLEN     ACBP=28\r
+ 0000:4DC3 0149 C=CODE   S=_TEXT          G=(none)  M=WRITE      ACBP=28\r
+ 0000:4F0C 003C C=CODE   S=_TEXT          G=(none)  M=WRITEA     ACBP=28\r
+ 0000:4F48 0003 C=CODE   S=_TEXT          G=(none)  M=WRITEU     ACBP=28\r
+ 0000:4F4B 003B C=CODE   S=_TEXT          G=(none)  M=XFCLOSE    ACBP=28\r
+ 0000:4F86 0036 C=CODE   S=_TEXT          G=(none)  M=XFFLUSH    ACBP=28\r
+ 04FC:0000 0000 C=FAR_DATA S=_FARDATA       G=(none)  M=c0.ASM     ACBP=68\r
+ 04FC:0000 0000 C=FAR_BSS S=_FARBSS        G=(none)  M=c0.ASM     ACBP=68\r
+ 04FC:0000 0000 C=OVRINFO S=_OVERLAY_      G=(none)  M=c0.ASM     ACBP=68\r
+ 04FC:0000 0000 C=STUBSEG S=_1STUB_        G=(none)  M=c0.ASM     ACBP=68\r
+ 04FC:0000 0093 C=DATA   S=_DATA          G=DGROUP  M=c0.ASM     ACBP=68\r
+ 04FC:0094 01E2 C=DATA   S=_DATA          G=DGROUP  M=EXMMTEST.C ACBP=48\r
+ 04FC:0276 0AFF C=DATA   S=_DATA          G=DGROUP  M=16_MM.C    ACBP=48\r
+ 04FC:0D76 0004 C=DATA   S=_DATA          G=DGROUP  M=16_HEAD.C  ACBP=48\r
+ 04FC:0D7A 002C C=DATA   S=_DATA          G=DGROUP  M=16_CA.C    ACBP=48\r
+ 04FC:0DA6 0002 C=DATA   S=_DATA          G=DGROUP  M=ATEXIT     ACBP=48\r
+ 04FC:0DA8 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOCK      ACBP=48\r
+ 04FC:0DA8 0101 C=DATA   S=_DATA          G=DGROUP  M=CTYPE      ACBP=48\r
+ 04FC:0EAA 0000 C=DATA   S=_DATA          G=DGROUP  M=DOSFATTR   ACBP=48\r
+ 04FC:0EAA 0006 C=DATA   S=_DATA          G=DGROUP  M=EXIT       ACBP=48\r
+ 04FC:0EB0 0190 C=DATA   S=_DATA          G=DGROUP  M=FILES      ACBP=48\r
+ 04FC:1040 002A C=DATA   S=_DATA          G=DGROUP  M=FILES2     ACBP=48\r
+ 04FC:106A 0004 C=DATA   S=_DATA          G=DGROUP  M=FMODE      ACBP=48\r
+ 04FC:106E 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LDIV     ACBP=48\r
+ 04FC:106E 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LLSH     ACBP=48\r
+ 04FC:106E 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LURSH    ACBP=48\r
+ 04FC:106E 0000 C=DATA   S=_DATA          G=DGROUP  M=H_PADD     ACBP=48\r
+ 04FC:106E 0000 C=DATA   S=_DATA          G=DGROUP  M=H_PSBP     ACBP=48\r
+ 04FC:106E 005B C=DATA   S=_DATA          G=DGROUP  M=IOERROR    ACBP=48\r
+ 04FC:10CA 0000 C=DATA   S=_DATA          G=DGROUP  M=ISATTY     ACBP=48\r
+ 04FC:10CA 0000 C=DATA   S=_DATA          G=DGROUP  M=LONGTOA    ACBP=48\r
+ 04FC:10CA 0000 C=DATA   S=_DATA          G=DGROUP  M=LSEEK      ACBP=48\r
+ 04FC:10CA 0009 C=DATA   S=_DATA          G=DGROUP  M=MKNAME     ACBP=48\r
+ 04FC:10D4 0000 C=DATA   S=_DATA          G=DGROUP  M=N_PCMP     ACBP=48\r
+ 04FC:10D4 0000 C=DATA   S=_DATA          G=DGROUP  M=SETUPIO    ACBP=48\r
+ 04FC:10D4 0002 C=DATA   S=_DATA          G=DGROUP  M=STKLEN     ACBP=48\r
+ 04FC:10D6 0000 C=DATA   S=_DATA          G=DGROUP  M=TOLOWER    ACBP=48\r
+ 04FC:10D6 0000 C=DATA   S=_DATA          G=DGROUP  M=UNLINK     ACBP=48\r
+ 04FC:10D6 0067 C=DATA   S=_DATA          G=DGROUP  M=VPRINTER   ACBP=48\r
+ 04FC:113E 0000 C=DATA   S=_DATA          G=DGROUP  M=VRAM       ACBP=48\r
+ 04FC:113E 0002 C=DATA   S=_DATA          G=DGROUP  M=WSCROLL    ACBP=48\r
+ 04FC:1140 0000 C=DATA   S=_DATA          G=DGROUP  M=_STPCPY    ACBP=48\r
+ 04FC:1140 0000 C=DATA   S=_DATA          G=DGROUP  M=CORELEFT   ACBP=48\r
+ 04FC:1140 0000 C=DATA   S=_DATA          G=DGROUP  M=CPRINTF    ACBP=48\r
+ 04FC:1140 0018 C=DATA   S=_DATA          G=DGROUP  M=CRTINIT    ACBP=48\r
+ 04FC:1158 0031 C=DATA   S=_DATA          G=DGROUP  M=CVTFAK     ACBP=48\r
+ 04FC:118A 0000 C=DATA   S=_DATA          G=DGROUP  M=FARHEAP    ACBP=48\r
+ 04FC:118A 0002 C=DATA   S=_DATA          G=DGROUP  M=FBRK       ACBP=48\r
+ 04FC:118C 0000 C=DATA   S=_DATA          G=DGROUP  M=FCORELFT   ACBP=48\r
+ 04FC:118C 0000 C=DATA   S=_DATA          G=DGROUP  M=GETCH      ACBP=48\r
+ 04FC:118C 0000 C=DATA   S=_DATA          G=DGROUP  M=GPTEXT     ACBP=48\r
+ 04FC:118C 0000 C=DATA   S=_DATA          G=DGROUP  M=IOCTL      ACBP=48\r
+ 04FC:118C 0002 C=DATA   S=_DATA          G=DGROUP  M=KBHIT      ACBP=48\r
+ 04FC:118E 0000 C=DATA   S=_DATA          G=DGROUP  M=MOVETEXT   ACBP=48\r
+ 04FC:118E 0000 C=DATA   S=_DATA          G=DGROUP  M=PUTCH      ACBP=48\r
+ 04FC:118E 0000 C=DATA   S=_DATA          G=DGROUP  M=REALCVT    ACBP=48\r
+ 04FC:118E 0000 C=DATA   S=_DATA          G=DGROUP  M=SCREEN     ACBP=48\r
+ 04FC:118E 0000 C=DATA   S=_DATA          G=DGROUP  M=SCROLL     ACBP=48\r
+ 04FC:118E 0010 C=DATA   S=_DATA          G=DGROUP  M=SETARGV    ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=SETBLOCK   ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=WHEREXY    ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=CHMODA     ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOSE      ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOSEA     ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=FCLOSE     ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=FFLUSH     ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=FLENGTH    ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=FLUSHALL   ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=FOPEN      ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=FPRINTF    ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=FSEEK      ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=LTOA1      ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=MEMCPY     ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=MOVEDATA   ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=OPEN       ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=OPENA      ACBP=48\r
+ 04FC:119E 0000 C=DATA   S=_DATA          G=DGROUP  M=PRINTF     ACBP=48\r
+ 04FC:119E 0001 C=DATA   S=_DATA          G=DGROUP  M=PUTC       ACBP=48\r
+ 04FC:11A0 0004 C=DATA   S=_DATA          G=DGROUP  M=SETVBUF    ACBP=48\r
+ 04FC:11A4 0000 C=DATA   S=_DATA          G=DGROUP  M=STRCAT     ACBP=48\r
+ 04FC:11A4 0000 C=DATA   S=_DATA          G=DGROUP  M=STRCPY     ACBP=48\r
+ 04FC:11A4 0000 C=DATA   S=_DATA          G=DGROUP  M=STRLEN     ACBP=48\r
+ 04FC:11A4 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITE      ACBP=48\r
+ 04FC:11A4 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITEA     ACBP=48\r
+ 04FC:11A4 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITEU     ACBP=48\r
+ 04FC:11A4 0000 C=DATA   S=_DATA          G=DGROUP  M=XFCLOSE    ACBP=48\r
+ 04FC:11A4 0000 C=DATA   S=_DATA          G=DGROUP  M=XFFLUSH    ACBP=48\r
+ 04FC:11A4 0000 C=DATA   S=_CVTSEG        G=DGROUP  M=c0.ASM     ACBP=48\r
+ 04FC:11A4 0002 C=DATA   S=_CVTSEG        G=DGROUP  M=CVTFAK     ACBP=48\r
+ 04FC:11A6 0000 C=DATA   S=_CVTSEG        G=DGROUP  M=REALCVT    ACBP=48\r
+ 04FC:11A6 0000 C=DATA   S=_SCNSEG        G=DGROUP  M=c0.ASM     ACBP=48\r
+ 04FC:11A6 0006 C=DATA   S=_SCNSEG        G=DGROUP  M=CVTFAK     ACBP=48\r
+ 04FC:11AC 0000 C=CONST  S=_CONST         G=DGROUP  M=c0.ASM     ACBP=48\r
+ 04FC:11AC 0000 C=INITDATA S=_INIT_         G=DGROUP  M=c0.ASM     ACBP=48\r
+ 04FC:11AC 0006 C=INITDATA S=_INIT_         G=DGROUP  M=SETUPIO    ACBP=48\r
+ 04FC:11B2 0006 C=INITDATA S=_INIT_         G=DGROUP  M=CRTINIT    ACBP=48\r
+ 04FC:11B8 0006 C=INITDATA S=_INIT_         G=DGROUP  M=SETARGV    ACBP=48\r
+ 04FC:11BE 0000 C=INITDATA S=_INITEND_      G=DGROUP  M=c0.ASM     ACBP=28\r
+ 04FC:11BE 0000 C=EXITDATA S=_EXIT_         G=DGROUP  M=c0.ASM     ACBP=48\r
+ 04FC:11BE 0000 C=EXITDATA S=_EXITEND_      G=DGROUP  M=c0.ASM     ACBP=28\r
+ 04FC:11BE 0000 C=BSS    S=_BSS           G=DGROUP  M=c0.ASM     ACBP=48\r
+ 04FC:11BE 0000 C=BSS    S=_BSS           G=DGROUP  M=EXMMTEST.C ACBP=48\r
+ 04FC:11BE 0006 C=BSS    S=_BSS           G=DGROUP  M=16_MM.C    ACBP=48\r
+ 04FC:11C4 0000 C=BSS    S=_BSS           G=DGROUP  M=16_HEAD.C  ACBP=48\r
+ 04FC:11C4 000A C=BSS    S=_BSS           G=DGROUP  M=16_CA.C    ACBP=48\r
+ 04FC:11CE 0040 C=BSS    S=_BSS           G=DGROUP  M=ATEXIT     ACBP=48\r
+ 04FC:120E 0001 C=BSS    S=_BSS           G=DGROUP  M=CLOCK      ACBP=48\r
+ 04FC:1210 0000 C=BSS    S=_BSS           G=DGROUP  M=DOSFATTR   ACBP=48\r
+ 04FC:1210 0000 C=BSS    S=_BSS           G=DGROUP  M=IOERROR    ACBP=48\r
+ 04FC:1210 0000 C=BSS    S=_BSS           G=DGROUP  M=ISATTY     ACBP=48\r
+ 04FC:1210 0000 C=BSS    S=_BSS           G=DGROUP  M=LONGTOA    ACBP=48\r
+ 04FC:1210 0000 C=BSS    S=_BSS           G=DGROUP  M=LSEEK      ACBP=48\r
+ 04FC:1210 000D C=BSS    S=_BSS           G=DGROUP  M=MKNAME     ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=SETUPIO    ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=UNLINK     ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=VPRINTER   ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=VRAM       ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=CORELEFT   ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=CRTINIT    ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=GETCH      ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=IOCTL      ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=KBHIT      ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=SETBLOCK   ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=CHMODA     ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=CLOSEA     ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=FLENGTH    ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=MEMCPY     ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=MOVEDATA   ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=OPEN       ACBP=48\r
+ 04FC:121E 0000 C=BSS    S=_BSS           G=DGROUP  M=OPENA      ACBP=48\r
+ 04FC:121E 0001 C=BSS    S=_BSS           G=DGROUP  M=PUTC       ACBP=48\r
+ 04FC:1220 0000 C=BSS    S=_BSS           G=DGROUP  M=STRCAT     ACBP=48\r
+ 04FC:1220 0000 C=BSS    S=_BSS           G=DGROUP  M=STRCPY     ACBP=48\r
+ 04FC:1220 0000 C=BSS    S=_BSS           G=DGROUP  M=STRLEN     ACBP=48\r
+ 04FC:1220 0000 C=BSS    S=_BSS           G=DGROUP  M=WRITEA     ACBP=48\r
+ 04FC:1220 0000 C=BSSEND S=_BSSEND        G=DGROUP  M=c0.ASM     ACBP=28\r
+ 061E:0000 0080 C=STACK  S=_STACK         G=(none)  M=c0.ASM     ACBP=74\r
 \r
   Address         Publics by Name\r
 \r
- 04F7:0000 idle  DATASEG@\r
+ 04FC:0000 idle  DATASEG@\r
  0000:028B idle  DGROUP@\r
- 0000:25AB idle  F_LDIV@\r
- 0000:25BA idle  F_LMOD@\r
- 0000:25B2 idle  F_LUDIV@\r
- 0000:25C2 idle  F_LUMOD@\r
- 0000:2659 idle  F_LXLSH@\r
- 0000:267A idle  F_LXURSH@\r
- 0000:269B idle  F_PADD@\r
- 0000:26FB idle  F_PSBP@\r
- 0000:26CA idle  F_PSUB@\r
- 0000:25AB idle  LDIV@\r
- 0000:25BA idle  LMOD@\r
- 0000:25B2 idle  LUDIV@\r
- 0000:25C2 idle  LUMOD@\r
- 0000:2659 idle  LXLSH@\r
- 0000:267A idle  LXURSH@\r
- 0000:25A8 idle  N_LDIV@\r
- 0000:25B7 idle  N_LMOD@\r
- 0000:25AF       N_LUDIV@\r
- 0000:25BF idle  N_LUMOD@\r
- 0000:2656       N_LXLSH@\r
- 0000:2677       N_LXURSH@\r
- 0000:2698       N_PADD@\r
- 0000:28F7       N_PCMP@\r
- 0000:26F8       N_PSBP@\r
- 0000:26C7 idle  N_PSUB@\r
- 0000:269B idle  PADD@\r
- 0000:26FB idle  PSBP@\r
- 0000:26CA idle  PSUB@\r
+ 0000:2603 idle  F_LDIV@\r
+ 0000:2612 idle  F_LMOD@\r
+ 0000:260A idle  F_LUDIV@\r
+ 0000:261A idle  F_LUMOD@\r
+ 0000:26B1 idle  F_LXLSH@\r
+ 0000:26D2 idle  F_LXURSH@\r
+ 0000:26F3 idle  F_PADD@\r
+ 0000:2753 idle  F_PSBP@\r
+ 0000:2722 idle  F_PSUB@\r
+ 0000:2603 idle  LDIV@\r
+ 0000:2612 idle  LMOD@\r
+ 0000:260A idle  LUDIV@\r
+ 0000:261A idle  LUMOD@\r
+ 0000:26B1 idle  LXLSH@\r
+ 0000:26D2 idle  LXURSH@\r
+ 0000:2600 idle  N_LDIV@\r
+ 0000:260F idle  N_LMOD@\r
+ 0000:2607       N_LUDIV@\r
+ 0000:2617 idle  N_LUMOD@\r
+ 0000:26AE       N_LXLSH@\r
+ 0000:26CF       N_LXURSH@\r
+ 0000:26F0       N_PADD@\r
+ 0000:294F       N_PCMP@\r
+ 0000:2750       N_PSBP@\r
+ 0000:271F idle  N_PSUB@\r
+ 0000:26F3 idle  PADD@\r
+ 0000:2753 idle  PSBP@\r
+ 0000:2722 idle  PSUB@\r
  0000:0276       _abort\r
- 04F7:116A idle  _aftersort\r
- 0000:1FA3 idle  _AllocateLargestFarFreeBlock\r
- 0000:1E40 idle  _AllocateLargestFreeBlock\r
- 0000:2475 idle  _atexit\r
- 04F7:116C idle  _beforesort\r
- 0000:23D9 idle  _CAL_OptimizeNodes\r
- 0000:2264       _CA_CloseDebug\r
- 0000:2271 idle  _CA_FarRead\r
- 0000:22AF idle  _CA_FarWrite\r
- 0000:2354       _CA_LoadFile\r
- 0000:2243       _CA_OpenDebug\r
- 0000:22ED idle  _CA_ReadFile\r
- 0000:2468       _CA_Shutdown\r
- 0000:2447       _CA_Startup\r
- 0000:2499       _clock\r
- 0000:3F55       _close\r
- 0000:2FB8       _coreleft\r
- 0000:30EE idle  _cprintf\r
- 04F7:1174       _debughandle\r
- 04F7:10F9       _directvideo\r
- 04F7:1172 idle  _drawcachebox\r
- 04F7:007F       _errno\r
- 0000:256D       _exit\r
- 0000:3839       _farcoreleft\r
- 0000:340E       _farfree\r
- 0000:3522       _farmalloc\r
- 0000:3683 idle  _farrealloc\r
- 0000:3F99       _fclose\r
- 0000:4049       _fflush\r
- 0000:410F       _filelength\r
- 0000:2112 idle  _filesize\r
- 04F7:116E idle  _finishcachebox\r
- 0000:4150       _flushall\r
- 0000:4359       _fopen\r
- 0000:438E       _fprintf\r
- 0000:4849 idle  _fputc\r
- 0000:49D2 idle  _fputchar\r
- 0000:340E       _free\r
- 0000:442C       _fseek\r
- 0000:44A8       _ftell\r
- 0000:3889       _getch\r
- 0000:38A2 idle  _getche\r
- 0000:2045 idle  _GetFarFreeSize\r
- 0000:1ED6 idle  _GetFreeSize\r
- 0000:38DD       _gettext\r
- 0000:3989       _ioctl\r
- 0000:276B       _isatty\r
- 0000:4582 idle  _itoa\r
- 0000:39B2       _kbhit\r
- 0000:281E       _lseek\r
- 0000:45CA idle  _ltoa\r
+ 04FC:11C0 idle  _aftersort\r
+ 0000:1FFB idle  _AllocateLargestFarFreeBlock\r
+ 0000:1E98 idle  _AllocateLargestFreeBlock\r
+ 0000:24CD idle  _atexit\r
+ 04FC:11C2 idle  _beforesort\r
+ 0000:2431 idle  _CAL_OptimizeNodes\r
+ 0000:22BC       _CA_CloseDebug\r
+ 0000:22C9 idle  _CA_FarRead\r
+ 0000:2307 idle  _CA_FarWrite\r
+ 0000:23AC       _CA_LoadFile\r
+ 0000:229B       _CA_OpenDebug\r
+ 0000:2345 idle  _CA_ReadFile\r
+ 0000:24C0       _CA_Shutdown\r
+ 0000:249F       _CA_Startup\r
+ 0000:24F1       _clock\r
+ 0000:3FAD       _close\r
+ 0000:3010       _coreleft\r
+ 0000:3146 idle  _cprintf\r
+ 04FC:11CA       _debughandle\r
+ 04FC:114F       _directvideo\r
+ 04FC:11C8 idle  _drawcachebox\r
+ 04FC:007F       _errno\r
+ 0000:25C5       _exit\r
+ 0000:3891       _farcoreleft\r
+ 0000:3466       _farfree\r
+ 0000:357A       _farmalloc\r
+ 0000:36DB idle  _farrealloc\r
+ 0000:3FF1       _fclose\r
+ 0000:40A1       _fflush\r
+ 0000:4167       _filelength\r
+ 0000:216A idle  _filesize\r
+ 04FC:11C4 idle  _finishcachebox\r
+ 0000:41A8       _flushall\r
+ 0000:43B1       _fopen\r
+ 0000:43E6       _fprintf\r
+ 0000:48A1 idle  _fputc\r
+ 0000:4A2A idle  _fputchar\r
+ 0000:3466       _free\r
+ 0000:4484       _fseek\r
+ 0000:4500       _ftell\r
+ 0000:38E1       _getch\r
+ 0000:38FA idle  _getche\r
+ 0000:209D       _GetFarFreeSize\r
+ 0000:1F2E       _GetFreeSize\r
+ 0000:3935       _gettext\r
+ 0000:39E1       _ioctl\r
+ 0000:27C3       _isatty\r
+ 0000:45DA idle  _itoa\r
+ 0000:3A0A       _kbhit\r
+ 0000:2876       _lseek\r
+ 0000:4622 idle  _ltoa\r
  0000:028F       _main\r
- 0000:3518       _malloc\r
- 0000:45F2       _memcpy\r
- 0000:04BA idle  _MML_CheckForEMS\r
- 0000:0788 idle  _MML_CheckForXMS\r
- 0000:0A48 idle  _MML_ClearBlock\r
- 0000:04FF idle  _MML_SetupEMS\r
- 0000:07BF idle  _MML_SetupXMS\r
- 0000:0605 idle  _MML_ShutdownEMS\r
- 0000:0865 idle  _MML_ShutdownXMS\r
- 0000:0898 idle  _MML_UseSpace\r
- 0000:1D5D idle  _MM_BombOnError\r
- 0000:180A       _MM_DumpData\r
- 0000:1DC2 idle  _MM_FreeBlock\r
- 0000:1229       _MM_FreePtr\r
- 0000:1D6C idle  _MM_GetNewBlock\r
- 0000:0F75       _MM_GetPtr\r
- 0000:0646 idle  _MM_MapEMS\r
- 0000:06DF idle  _MM_MapXEMS\r
- 0000:1A51       _MM_Report\r
- 0000:13C7 idle  _MM_SetLock\r
- 0000:1303 idle  _MM_SetPurge\r
- 0000:1607       _MM_ShowMemory\r
- 0000:0EF0       _MM_Shutdown\r
- 0000:1490 idle  _MM_SortMem\r
- 0000:0AAE       _MM_Startup\r
- 0000:19B8 idle  _MM_TotalFree\r
- 0000:1946 idle  _MM_UnusedMemory\r
- 0000:4616       _movedata\r
- 0000:39C4       _movetext\r
- 0000:4665       _open\r
- 0000:4814       _printf\r
- 04F7:1176 idle  _profilehandle\r
- 0000:3A61       _putch\r
- 0000:3933       _puttext\r
- 0000:367C idle  _realloc\r
- 0000:3EF0       _setblock\r
- 0000:4BD3       _setvbuf\r
- 0000:4CE4       _strcat\r
- 0000:4D23       _strcpy\r
- 0000:4D4C       _strlen\r
- 0000:29CA       _tolower\r
- 0000:45AD       _ultoa\r
- 0000:38BF idle  _ungetch\r
- 0000:29F6       _unlink\r
- 04F7:1170 idle  _updatecachebox\r
- 0000:2171       _US_CheckParm\r
- 0000:1E01 idle  _wait\r
- 0000:3F16 idle  _wherex\r
- 0000:3F25 idle  _wherey\r
- 0000:4EF0       _write\r
- 04F7:1168 idle  _XMSaddr\r
+ 0000:3570       _malloc\r
+ 0000:464A       _memcpy\r
+ 0000:0512 idle  _MML_CheckForEMS\r
+ 0000:07E0 idle  _MML_CheckForXMS\r
+ 0000:0AA0 idle  _MML_ClearBlock\r
+ 0000:0557 idle  _MML_SetupEMS\r
+ 0000:0817 idle  _MML_SetupXMS\r
+ 0000:065D idle  _MML_ShutdownEMS\r
+ 0000:08BD idle  _MML_ShutdownXMS\r
+ 0000:08F0 idle  _MML_UseSpace\r
+ 0000:1DB5 idle  _MM_BombOnError\r
+ 0000:1862       _MM_DumpData\r
+ 0000:1E1A idle  _MM_FreeBlock\r
+ 0000:1281       _MM_FreePtr\r
+ 0000:1DC4 idle  _MM_GetNewBlock\r
+ 0000:0FCD       _MM_GetPtr\r
+ 0000:069E idle  _MM_MapEMS\r
+ 0000:0737 idle  _MM_MapXEMS\r
+ 0000:1AA9       _MM_Report\r
+ 0000:141F idle  _MM_SetLock\r
+ 0000:135B idle  _MM_SetPurge\r
+ 0000:165F       _MM_ShowMemory\r
+ 0000:0F48       _MM_Shutdown\r
+ 0000:14E8 idle  _MM_SortMem\r
+ 0000:0B06       _MM_Startup\r
+ 0000:1A10 idle  _MM_TotalFree\r
+ 0000:199E idle  _MM_UnusedMemory\r
+ 0000:466E       _movedata\r
+ 0000:3A1C       _movetext\r
+ 0000:46BD       _open\r
+ 0000:486C       _printf\r
+ 04FC:11CC idle  _profilehandle\r
+ 0000:3AB9       _putch\r
+ 0000:398B       _puttext\r
+ 0000:36D4 idle  _realloc\r
+ 0000:3F48       _setblock\r
+ 0000:4C2B       _setvbuf\r
+ 0000:4D3C       _strcat\r
+ 0000:4D7B       _strcpy\r
+ 0000:4DA4       _strlen\r
+ 0000:2A22       _tolower\r
+ 0000:4605       _ultoa\r
+ 0000:3917 idle  _ungetch\r
+ 0000:2A4E       _unlink\r
+ 04FC:11C6 idle  _updatecachebox\r
+ 0000:21C9       _US_CheckParm\r
+ 0000:1E59 idle  _wait\r
+ 0000:3F6E idle  _wherex\r
+ 0000:3F7D idle  _wherey\r
+ 0000:4F48       _write\r
+ 04FC:11BE idle  _XMSaddr\r
  0000:1000 idle  __AHINCR\r
  0000:000C idle  __AHSHIFT\r
- 04F7:1138       __argc\r
- 04F7:113A       __argv\r
- 04F7:0D50       __atexitcnt\r
- 04F7:1178       __atexittbl\r
- 0000:376F       __brk\r
- 04F7:008B       __brklvl\r
- 04F7:006B       __C0argc\r
- 04F7:006D       __C0argv\r
- 0000:31D0 idle  __c0crtinit\r
- 04F7:0071 idle  __C0environ\r
- 04F7:1137       __cChar\r
- 0000:258E idle  __cexit\r
- 04F7:1136       __cFlag\r
+ 04FC:118E       __argc\r
+ 04FC:1190       __argv\r
+ 04FC:0DA6       __atexitcnt\r
+ 04FC:11CE       __atexittbl\r
+ 0000:37C7       __brk\r
+ 04FC:008B       __brklvl\r
+ 04FC:006B       __C0argc\r
+ 04FC:006D       __C0argv\r
+ 0000:3228 idle  __c0crtinit\r
+ 04FC:0071 idle  __C0environ\r
+ 04FC:118D       __cChar\r
+ 0000:25E6 idle  __cexit\r
+ 04FC:118C       __cFlag\r
  0000:0166       __checknull\r
- 0000:3F38       __chmod\r
+ 0000:3F90       __chmod\r
  0000:0153       __cleanup\r
- 0000:3F7B       __close\r
- 0000:2FBC       __CPUTN\r
- 0000:31ED idle  __crtinit\r
- 04F7:0D52       __ctype\r
+ 0000:3FD3       __close\r
+ 0000:3014       __CPUTN\r
+ 0000:3245 idle  __crtinit\r
+ 04FC:0DA8       __ctype\r
  0000:0000  Abs  __cvtfak\r
- 0000:259C idle  __c_exit\r
- 04F7:1018       __doserrno\r
- 0000:2759       __DOSERROR\r
- 04F7:101A idle  __dosErrorToSV\r
- 0000:24E2       __dos_getfileattr\r
- 0000:2502 idle  __dos_setfileattr\r
- 04F7:0075       __envLng\r
- 04F7:0077       __envseg\r
- 04F7:0079 idle  __envSize\r
- 0000:257C       __exit\r
- 04F7:0E54       __exitbuf\r
- 04F7:0E56       __exitfopen\r
- 04F7:0E58 idle  __exitopen\r
- 04F7:1014       __fmode\r
- 0000:482F idle  __fputc\r
- 0000:49E5       __FPUTN\r
- 0000:430F idle  __GETFP\r
- 04F7:0087       __heapbase\r
- 04F7:008F       __heaptop\r
- 04F7:005B idle  __Int0Vector\r
- 04F7:005F idle  __Int4Vector\r
- 04F7:0063 idle  __Int5Vector\r
- 04F7:0067 idle  __Int6Vector\r
- 0000:2720       __IOERROR\r
- 0000:277C       __LONGTOA\r
- 0000:2847       __MKNAME\r
+ 0000:25F4 idle  __c_exit\r
+ 04FC:106E       __doserrno\r
+ 0000:27B1       __DOSERROR\r
+ 04FC:1070 idle  __dosErrorToSV\r
+ 0000:253A       __dos_getfileattr\r
+ 0000:255A idle  __dos_setfileattr\r
+ 04FC:0075       __envLng\r
+ 04FC:0077       __envseg\r
+ 04FC:0079 idle  __envSize\r
+ 0000:25D4       __exit\r
+ 04FC:0EAA       __exitbuf\r
+ 04FC:0EAC       __exitfopen\r
+ 04FC:0EAE idle  __exitopen\r
+ 04FC:106A       __fmode\r
+ 0000:4887 idle  __fputc\r
+ 0000:4A3D       __FPUTN\r
+ 0000:4367 idle  __GETFP\r
+ 04FC:0087       __heapbase\r
+ 04FC:008F       __heaptop\r
+ 04FC:005B idle  __Int0Vector\r
+ 04FC:005F idle  __Int4Vector\r
+ 04FC:0063 idle  __Int5Vector\r
+ 04FC:0067 idle  __Int6Vector\r
+ 0000:2778       __IOERROR\r
+ 0000:27D4       __LONGTOA\r
+ 0000:289F       __MKNAME\r
  0000:028D idle  __MMODEL\r
- 04F7:0FEA       __nfile\r
- 0000:38A2 idle  __Ngetche\r
- 04F7:1016       __notUmask\r
- 0000:38BF idle  __Nungetch\r
- 0000:47C5       __open\r
- 04F7:0FEC       __openfd\r
- 0000:4246 idle  __OPENFP\r
- 04F7:007D       __osmajor\r
- 04F7:007E idle  __osminor\r
- 04F7:007D idle  __osversion\r
- 04F7:007B       __psp\r
- 0000:3A78       __REALCVT\r
- 04F7:114E       __RealCvtVector\r
+ 04FC:1040       __nfile\r
+ 0000:38FA idle  __Ngetche\r
+ 04FC:106C       __notUmask\r
+ 0000:3917 idle  __Nungetch\r
+ 0000:481D       __open\r
+ 04FC:1042       __openfd\r
+ 0000:429E idle  __OPENFP\r
+ 04FC:007D       __osmajor\r
+ 04FC:007E idle  __osminor\r
+ 04FC:007D idle  __osversion\r
+ 04FC:007B       __psp\r
+ 0000:3AD0       __REALCVT\r
+ 04FC:11A4       __RealCvtVector\r
  0000:01BC       __restorezero\r
- 0000:37AE       __sbrk\r
- 04F7:1150 idle  __ScanTodVector\r
- 0000:3BB2       __SCREENIO\r
- 0000:3C65       __SCROLL\r
+ 0000:3806       __sbrk\r
+ 04FC:11A6 idle  __ScanTodVector\r
+ 0000:3C0A       __SCREENIO\r
+ 0000:3CBD       __SCROLL\r
  0000:0000  Abs  __setargv__\r
- 0000:2918       __setupio\r
- 04F7:0081       __StartTime\r
- 04F7:107E       __stklen\r
- 0000:2F88       __stpcpy\r
- 04F7:0E5A       __streams\r
+ 0000:2970       __setupio\r
+ 04FC:0081       __StartTime\r
+ 04FC:10D4       __stklen\r
+ 0000:2FE0       __stpcpy\r
+ 04FC:0EB0       __streams\r
  0000:0167       __terminate\r
- 0000:28A0 idle  __TMPNAM\r
+ 0000:28F8 idle  __TMPNAM\r
  0000:0000 idle  __turboCrt\r
- 0000:27FE       __UTOA\r
- 0000:3BEE       __VALIDATEXY\r
- 04F7:007D idle  __version\r
- 04F7:10EA       __video\r
- 0000:3145       __VideoInt\r
- 0000:2A26       __VPRINTER\r
- 0000:2EE9       __VPTR\r
- 0000:2F0E       __VRAM\r
- 0000:3F0C       __wherexy\r
- 0000:4EB4       __write\r
- 04F7:10E8       __wscroll\r
- 0000:4EF3       __xfclose\r
- 0000:4F2E       __xfflush\r
- 04F7:0085 idle  ___brklvl\r
- 0000:32CE idle  ___first\r
- 0000:32D0 idle  ___last\r
- 0000:32D2 idle  ___rover\r
- 0000:4D6B       ___write\r
+ 0000:2856       __UTOA\r
+ 0000:3C46       __VALIDATEXY\r
+ 04FC:007D idle  __version\r
+ 04FC:1140       __video\r
+ 0000:319D       __VideoInt\r
+ 0000:2A7E       __VPRINTER\r
+ 0000:2F41       __VPTR\r
+ 0000:2F66       __VRAM\r
+ 0000:3F64       __wherexy\r
+ 0000:4F0C       __write\r
+ 04FC:113E       __wscroll\r
+ 0000:4F4B       __xfclose\r
+ 0000:4F86       __xfflush\r
+ 04FC:0085 idle  ___brklvl\r
+ 0000:3326 idle  ___first\r
+ 0000:3328 idle  ___last\r
+ 0000:332A idle  ___rover\r
+ 0000:4DC3       ___write\r
 \r
   Address         Publics by Value\r
 \r
@@ -476,223 +476,223 @@ Detailed map of segments
  0000:028B idle  DGROUP@\r
  0000:028D idle  __MMODEL\r
  0000:028F       _main\r
- 0000:04BA idle  _MML_CheckForEMS\r
- 0000:04FF idle  _MML_SetupEMS\r
- 0000:0605 idle  _MML_ShutdownEMS\r
- 0000:0646 idle  _MM_MapEMS\r
- 0000:06DF idle  _MM_MapXEMS\r
- 0000:0788 idle  _MML_CheckForXMS\r
- 0000:07BF idle  _MML_SetupXMS\r
- 0000:0865 idle  _MML_ShutdownXMS\r
- 0000:0898 idle  _MML_UseSpace\r
- 0000:0A48 idle  _MML_ClearBlock\r
- 0000:0AAE       _MM_Startup\r
- 0000:0EF0       _MM_Shutdown\r
- 0000:0F75       _MM_GetPtr\r
+ 0000:0512 idle  _MML_CheckForEMS\r
+ 0000:0557 idle  _MML_SetupEMS\r
+ 0000:065D idle  _MML_ShutdownEMS\r
+ 0000:069E idle  _MM_MapEMS\r
+ 0000:0737 idle  _MM_MapXEMS\r
+ 0000:07E0 idle  _MML_CheckForXMS\r
+ 0000:0817 idle  _MML_SetupXMS\r
+ 0000:08BD idle  _MML_ShutdownXMS\r
+ 0000:08F0 idle  _MML_UseSpace\r
+ 0000:0AA0 idle  _MML_ClearBlock\r
+ 0000:0B06       _MM_Startup\r
+ 0000:0F48       _MM_Shutdown\r
+ 0000:0FCD       _MM_GetPtr\r
  0000:1000 idle  __AHINCR\r
- 0000:1229       _MM_FreePtr\r
- 0000:1303 idle  _MM_SetPurge\r
- 0000:13C7 idle  _MM_SetLock\r
- 0000:1490 idle  _MM_SortMem\r
- 0000:1607       _MM_ShowMemory\r
- 0000:180A       _MM_DumpData\r
- 0000:1946 idle  _MM_UnusedMemory\r
- 0000:19B8 idle  _MM_TotalFree\r
- 0000:1A51       _MM_Report\r
- 0000:1D5D idle  _MM_BombOnError\r
- 0000:1D6C idle  _MM_GetNewBlock\r
- 0000:1DC2 idle  _MM_FreeBlock\r
- 0000:1E01 idle  _wait\r
- 0000:1E40 idle  _AllocateLargestFreeBlock\r
- 0000:1ED6 idle  _GetFreeSize\r
- 0000:1FA3 idle  _AllocateLargestFarFreeBlock\r
- 0000:2045 idle  _GetFarFreeSize\r
- 0000:2112 idle  _filesize\r
- 0000:2171       _US_CheckParm\r
- 0000:2243       _CA_OpenDebug\r
- 0000:2264       _CA_CloseDebug\r
- 0000:2271 idle  _CA_FarRead\r
- 0000:22AF idle  _CA_FarWrite\r
- 0000:22ED idle  _CA_ReadFile\r
- 0000:2354       _CA_LoadFile\r
- 0000:23D9 idle  _CAL_OptimizeNodes\r
- 0000:2447       _CA_Startup\r
- 0000:2468       _CA_Shutdown\r
- 0000:2475 idle  _atexit\r
- 0000:2499       _clock\r
- 0000:24E2       __dos_getfileattr\r
- 0000:2502 idle  __dos_setfileattr\r
- 0000:256D       _exit\r
- 0000:257C       __exit\r
- 0000:258E idle  __cexit\r
- 0000:259C idle  __c_exit\r
- 0000:25A8 idle  N_LDIV@\r
- 0000:25AB idle  LDIV@\r
- 0000:25AB idle  F_LDIV@\r
- 0000:25AF       N_LUDIV@\r
- 0000:25B2 idle  F_LUDIV@\r
- 0000:25B2 idle  LUDIV@\r
- 0000:25B7 idle  N_LMOD@\r
- 0000:25BA idle  F_LMOD@\r
- 0000:25BA idle  LMOD@\r
- 0000:25BF idle  N_LUMOD@\r
- 0000:25C2 idle  LUMOD@\r
- 0000:25C2 idle  F_LUMOD@\r
- 0000:2656       N_LXLSH@\r
- 0000:2659 idle  LXLSH@\r
- 0000:2659 idle  F_LXLSH@\r
- 0000:2677       N_LXURSH@\r
- 0000:267A idle  LXURSH@\r
- 0000:267A idle  F_LXURSH@\r
- 0000:2698       N_PADD@\r
- 0000:269B idle  F_PADD@\r
- 0000:269B idle  PADD@\r
- 0000:26C7 idle  N_PSUB@\r
- 0000:26CA idle  F_PSUB@\r
- 0000:26CA idle  PSUB@\r
- 0000:26F8       N_PSBP@\r
- 0000:26FB idle  PSBP@\r
- 0000:26FB idle  F_PSBP@\r
- 0000:2720       __IOERROR\r
- 0000:2759       __DOSERROR\r
- 0000:276B       _isatty\r
- 0000:277C       __LONGTOA\r
- 0000:27FE       __UTOA\r
- 0000:281E       _lseek\r
- 0000:2847       __MKNAME\r
- 0000:28A0 idle  __TMPNAM\r
- 0000:28F7       N_PCMP@\r
- 0000:2918       __setupio\r
- 0000:29CA       _tolower\r
- 0000:29F6       _unlink\r
- 0000:2A26       __VPRINTER\r
- 0000:2EE9       __VPTR\r
- 0000:2F0E       __VRAM\r
- 0000:2F88       __stpcpy\r
- 0000:2FB8       _coreleft\r
- 0000:2FBC       __CPUTN\r
- 0000:30EE idle  _cprintf\r
- 0000:3145       __VideoInt\r
- 0000:31D0 idle  __c0crtinit\r
- 0000:31ED idle  __crtinit\r
- 0000:32CE idle  ___first\r
- 0000:32D0 idle  ___last\r
- 0000:32D2 idle  ___rover\r
- 0000:340E       _free\r
- 0000:340E       _farfree\r
- 0000:3518       _malloc\r
- 0000:3522       _farmalloc\r
- 0000:367C idle  _realloc\r
- 0000:3683 idle  _farrealloc\r
- 0000:376F       __brk\r
- 0000:37AE       __sbrk\r
- 0000:3839       _farcoreleft\r
- 0000:3889       _getch\r
- 0000:38A2 idle  __Ngetche\r
- 0000:38A2 idle  _getche\r
- 0000:38BF idle  __Nungetch\r
- 0000:38BF idle  _ungetch\r
- 0000:38DD       _gettext\r
- 0000:3933       _puttext\r
- 0000:3989       _ioctl\r
- 0000:39B2       _kbhit\r
- 0000:39C4       _movetext\r
- 0000:3A61       _putch\r
- 0000:3A78       __REALCVT\r
- 0000:3BB2       __SCREENIO\r
- 0000:3BEE       __VALIDATEXY\r
- 0000:3C65       __SCROLL\r
- 0000:3EF0       _setblock\r
- 0000:3F0C       __wherexy\r
- 0000:3F16 idle  _wherex\r
- 0000:3F25 idle  _wherey\r
- 0000:3F38       __chmod\r
- 0000:3F55       _close\r
- 0000:3F7B       __close\r
- 0000:3F99       _fclose\r
- 0000:4049       _fflush\r
- 0000:410F       _filelength\r
- 0000:4150       _flushall\r
- 0000:4246 idle  __OPENFP\r
- 0000:430F idle  __GETFP\r
- 0000:4359       _fopen\r
- 0000:438E       _fprintf\r
- 0000:442C       _fseek\r
- 0000:44A8       _ftell\r
- 0000:4582 idle  _itoa\r
- 0000:45AD       _ultoa\r
- 0000:45CA idle  _ltoa\r
- 0000:45F2       _memcpy\r
- 0000:4616       _movedata\r
- 0000:4665       _open\r
- 0000:47C5       __open\r
- 0000:4814       _printf\r
- 0000:482F idle  __fputc\r
- 0000:4849 idle  _fputc\r
- 0000:49D2 idle  _fputchar\r
- 0000:49E5       __FPUTN\r
- 0000:4BD3       _setvbuf\r
- 0000:4CE4       _strcat\r
- 0000:4D23       _strcpy\r
- 0000:4D4C       _strlen\r
- 0000:4D6B       ___write\r
- 0000:4EB4       __write\r
- 0000:4EF0       _write\r
- 0000:4EF3       __xfclose\r
- 0000:4F2E       __xfflush\r
- 04F7:0000 idle  DATASEG@\r
- 04F7:005B idle  __Int0Vector\r
- 04F7:005F idle  __Int4Vector\r
- 04F7:0063 idle  __Int5Vector\r
- 04F7:0067 idle  __Int6Vector\r
- 04F7:006B       __C0argc\r
- 04F7:006D       __C0argv\r
- 04F7:0071 idle  __C0environ\r
- 04F7:0075       __envLng\r
- 04F7:0077       __envseg\r
- 04F7:0079 idle  __envSize\r
- 04F7:007B       __psp\r
- 04F7:007D idle  __osversion\r
- 04F7:007D       __osmajor\r
- 04F7:007D idle  __version\r
- 04F7:007E idle  __osminor\r
- 04F7:007F       _errno\r
- 04F7:0081       __StartTime\r
- 04F7:0085 idle  ___brklvl\r
- 04F7:0087       __heapbase\r
- 04F7:008B       __brklvl\r
- 04F7:008F       __heaptop\r
- 04F7:0D50       __atexitcnt\r
- 04F7:0D52       __ctype\r
- 04F7:0E54       __exitbuf\r
- 04F7:0E56       __exitfopen\r
- 04F7:0E58 idle  __exitopen\r
- 04F7:0E5A       __streams\r
- 04F7:0FEA       __nfile\r
- 04F7:0FEC       __openfd\r
- 04F7:1014       __fmode\r
- 04F7:1016       __notUmask\r
- 04F7:1018       __doserrno\r
- 04F7:101A idle  __dosErrorToSV\r
- 04F7:107E       __stklen\r
- 04F7:10E8       __wscroll\r
- 04F7:10EA       __video\r
- 04F7:10F9       _directvideo\r
- 04F7:1136       __cFlag\r
- 04F7:1137       __cChar\r
- 04F7:1138       __argc\r
- 04F7:113A       __argv\r
- 04F7:114E       __RealCvtVector\r
- 04F7:1150 idle  __ScanTodVector\r
- 04F7:1168 idle  _XMSaddr\r
- 04F7:116A idle  _aftersort\r
- 04F7:116C idle  _beforesort\r
- 04F7:116E idle  _finishcachebox\r
- 04F7:1170 idle  _updatecachebox\r
- 04F7:1172 idle  _drawcachebox\r
- 04F7:1174       _debughandle\r
- 04F7:1176 idle  _profilehandle\r
- 04F7:1178       __atexittbl\r
+ 0000:1281       _MM_FreePtr\r
+ 0000:135B idle  _MM_SetPurge\r
+ 0000:141F idle  _MM_SetLock\r
+ 0000:14E8 idle  _MM_SortMem\r
+ 0000:165F       _MM_ShowMemory\r
+ 0000:1862       _MM_DumpData\r
+ 0000:199E idle  _MM_UnusedMemory\r
+ 0000:1A10 idle  _MM_TotalFree\r
+ 0000:1AA9       _MM_Report\r
+ 0000:1DB5 idle  _MM_BombOnError\r
+ 0000:1DC4 idle  _MM_GetNewBlock\r
+ 0000:1E1A idle  _MM_FreeBlock\r
+ 0000:1E59 idle  _wait\r
+ 0000:1E98 idle  _AllocateLargestFreeBlock\r
+ 0000:1F2E       _GetFreeSize\r
+ 0000:1FFB idle  _AllocateLargestFarFreeBlock\r
+ 0000:209D       _GetFarFreeSize\r
+ 0000:216A idle  _filesize\r
+ 0000:21C9       _US_CheckParm\r
+ 0000:229B       _CA_OpenDebug\r
+ 0000:22BC       _CA_CloseDebug\r
+ 0000:22C9 idle  _CA_FarRead\r
+ 0000:2307 idle  _CA_FarWrite\r
+ 0000:2345 idle  _CA_ReadFile\r
+ 0000:23AC       _CA_LoadFile\r
+ 0000:2431 idle  _CAL_OptimizeNodes\r
+ 0000:249F       _CA_Startup\r
+ 0000:24C0       _CA_Shutdown\r
+ 0000:24CD idle  _atexit\r
+ 0000:24F1       _clock\r
+ 0000:253A       __dos_getfileattr\r
+ 0000:255A idle  __dos_setfileattr\r
+ 0000:25C5       _exit\r
+ 0000:25D4       __exit\r
+ 0000:25E6 idle  __cexit\r
+ 0000:25F4 idle  __c_exit\r
+ 0000:2600 idle  N_LDIV@\r
+ 0000:2603 idle  LDIV@\r
+ 0000:2603 idle  F_LDIV@\r
+ 0000:2607       N_LUDIV@\r
+ 0000:260A idle  F_LUDIV@\r
+ 0000:260A idle  LUDIV@\r
+ 0000:260F idle  N_LMOD@\r
+ 0000:2612 idle  F_LMOD@\r
+ 0000:2612 idle  LMOD@\r
+ 0000:2617 idle  N_LUMOD@\r
+ 0000:261A idle  LUMOD@\r
+ 0000:261A idle  F_LUMOD@\r
+ 0000:26AE       N_LXLSH@\r
+ 0000:26B1 idle  LXLSH@\r
+ 0000:26B1 idle  F_LXLSH@\r
+ 0000:26CF       N_LXURSH@\r
+ 0000:26D2 idle  LXURSH@\r
+ 0000:26D2 idle  F_LXURSH@\r
+ 0000:26F0       N_PADD@\r
+ 0000:26F3 idle  F_PADD@\r
+ 0000:26F3 idle  PADD@\r
+ 0000:271F idle  N_PSUB@\r
+ 0000:2722 idle  F_PSUB@\r
+ 0000:2722 idle  PSUB@\r
+ 0000:2750       N_PSBP@\r
+ 0000:2753 idle  PSBP@\r
+ 0000:2753 idle  F_PSBP@\r
+ 0000:2778       __IOERROR\r
+ 0000:27B1       __DOSERROR\r
+ 0000:27C3       _isatty\r
+ 0000:27D4       __LONGTOA\r
+ 0000:2856       __UTOA\r
+ 0000:2876       _lseek\r
+ 0000:289F       __MKNAME\r
+ 0000:28F8 idle  __TMPNAM\r
+ 0000:294F       N_PCMP@\r
+ 0000:2970       __setupio\r
+ 0000:2A22       _tolower\r
+ 0000:2A4E       _unlink\r
+ 0000:2A7E       __VPRINTER\r
+ 0000:2F41       __VPTR\r
+ 0000:2F66       __VRAM\r
+ 0000:2FE0       __stpcpy\r
+ 0000:3010       _coreleft\r
+ 0000:3014       __CPUTN\r
+ 0000:3146 idle  _cprintf\r
+ 0000:319D       __VideoInt\r
+ 0000:3228 idle  __c0crtinit\r
+ 0000:3245 idle  __crtinit\r
+ 0000:3326 idle  ___first\r
+ 0000:3328 idle  ___last\r
+ 0000:332A idle  ___rover\r
+ 0000:3466       _free\r
+ 0000:3466       _farfree\r
+ 0000:3570       _malloc\r
+ 0000:357A       _farmalloc\r
+ 0000:36D4 idle  _realloc\r
+ 0000:36DB idle  _farrealloc\r
+ 0000:37C7       __brk\r
+ 0000:3806       __sbrk\r
+ 0000:3891       _farcoreleft\r
+ 0000:38E1       _getch\r
+ 0000:38FA idle  __Ngetche\r
+ 0000:38FA idle  _getche\r
+ 0000:3917 idle  __Nungetch\r
+ 0000:3917 idle  _ungetch\r
+ 0000:3935       _gettext\r
+ 0000:398B       _puttext\r
+ 0000:39E1       _ioctl\r
+ 0000:3A0A       _kbhit\r
+ 0000:3A1C       _movetext\r
+ 0000:3AB9       _putch\r
+ 0000:3AD0       __REALCVT\r
+ 0000:3C0A       __SCREENIO\r
+ 0000:3C46       __VALIDATEXY\r
+ 0000:3CBD       __SCROLL\r
+ 0000:3F48       _setblock\r
+ 0000:3F64       __wherexy\r
+ 0000:3F6E idle  _wherex\r
+ 0000:3F7D idle  _wherey\r
+ 0000:3F90       __chmod\r
+ 0000:3FAD       _close\r
+ 0000:3FD3       __close\r
+ 0000:3FF1       _fclose\r
+ 0000:40A1       _fflush\r
+ 0000:4167       _filelength\r
+ 0000:41A8       _flushall\r
+ 0000:429E idle  __OPENFP\r
+ 0000:4367 idle  __GETFP\r
+ 0000:43B1       _fopen\r
+ 0000:43E6       _fprintf\r
+ 0000:4484       _fseek\r
+ 0000:4500       _ftell\r
+ 0000:45DA idle  _itoa\r
+ 0000:4605       _ultoa\r
+ 0000:4622 idle  _ltoa\r
+ 0000:464A       _memcpy\r
+ 0000:466E       _movedata\r
+ 0000:46BD       _open\r
+ 0000:481D       __open\r
+ 0000:486C       _printf\r
+ 0000:4887 idle  __fputc\r
+ 0000:48A1 idle  _fputc\r
+ 0000:4A2A idle  _fputchar\r
+ 0000:4A3D       __FPUTN\r
+ 0000:4C2B       _setvbuf\r
+ 0000:4D3C       _strcat\r
+ 0000:4D7B       _strcpy\r
+ 0000:4DA4       _strlen\r
+ 0000:4DC3       ___write\r
+ 0000:4F0C       __write\r
+ 0000:4F48       _write\r
+ 0000:4F4B       __xfclose\r
+ 0000:4F86       __xfflush\r
+ 04FC:0000 idle  DATASEG@\r
+ 04FC:005B idle  __Int0Vector\r
+ 04FC:005F idle  __Int4Vector\r
+ 04FC:0063 idle  __Int5Vector\r
+ 04FC:0067 idle  __Int6Vector\r
+ 04FC:006B       __C0argc\r
+ 04FC:006D       __C0argv\r
+ 04FC:0071 idle  __C0environ\r
+ 04FC:0075       __envLng\r
+ 04FC:0077       __envseg\r
+ 04FC:0079 idle  __envSize\r
+ 04FC:007B       __psp\r
+ 04FC:007D idle  __osversion\r
+ 04FC:007D       __osmajor\r
+ 04FC:007D idle  __version\r
+ 04FC:007E idle  __osminor\r
+ 04FC:007F       _errno\r
+ 04FC:0081       __StartTime\r
+ 04FC:0085 idle  ___brklvl\r
+ 04FC:0087       __heapbase\r
+ 04FC:008B       __brklvl\r
+ 04FC:008F       __heaptop\r
+ 04FC:0DA6       __atexitcnt\r
+ 04FC:0DA8       __ctype\r
+ 04FC:0EAA       __exitbuf\r
+ 04FC:0EAC       __exitfopen\r
+ 04FC:0EAE idle  __exitopen\r
+ 04FC:0EB0       __streams\r
+ 04FC:1040       __nfile\r
+ 04FC:1042       __openfd\r
+ 04FC:106A       __fmode\r
+ 04FC:106C       __notUmask\r
+ 04FC:106E       __doserrno\r
+ 04FC:1070 idle  __dosErrorToSV\r
+ 04FC:10D4       __stklen\r
+ 04FC:113E       __wscroll\r
+ 04FC:1140       __video\r
+ 04FC:114F       _directvideo\r
+ 04FC:118C       __cFlag\r
+ 04FC:118D       __cChar\r
+ 04FC:118E       __argc\r
+ 04FC:1190       __argv\r
+ 04FC:11A4       __RealCvtVector\r
+ 04FC:11A6 idle  __ScanTodVector\r
+ 04FC:11BE idle  _XMSaddr\r
+ 04FC:11C0 idle  _aftersort\r
+ 04FC:11C2 idle  _beforesort\r
+ 04FC:11C4 idle  _finishcachebox\r
+ 04FC:11C6 idle  _updatecachebox\r
+ 04FC:11C8 idle  _drawcachebox\r
+ 04FC:11CA       _debughandle\r
+ 04FC:11CC idle  _profilehandle\r
+ 04FC:11CE       __atexittbl\r
 \r
 Program entry point at 0000:0000\r
 \r
index 5cadc6bf1066f4f5f67b9b342bc041374f637e58..26edd1f1cb068b614754bfd7f07ac8b287e10f09 100644 (file)
Binary files a/16/exmmtest/EXMMTEST.PRJ and b/16/exmmtest/EXMMTEST.PRJ differ
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..60e2d7afa09e0ba9999cbc20805b54c34d0f845d 100644 (file)
Binary files a/16/exmmtest/MMDUMP.16 and b/16/exmmtest/MMDUMP.16 differ
index bec5a15d55912e6aafe86ca19e254ed8564fe08c..bbbc32bbe674ce334e9a5b44f06031f900e3b390 100644 (file)
@@ -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());
 }
index f9447403a7c1e2157625dd0cc71f8bb4ebca96fc..2936de4f0d461a6c1705ea7fe504a97aa1318669 100644 (file)
Binary files a/bakapi.exe and b/bakapi.exe differ
index eaaf113a63f77688985ee003649726a6730ab526..94efc0f8a153feff620c779d2675d6b2f1504178 100644 (file)
Binary files a/exmmtest.exe and b/exmmtest.exe differ
index fddfc4b5a2f904a4a30881676224e664ac0e7945..cfaeb569b940ad6ace47f710c66382dadd1c8439 100644 (file)
Binary files a/fmemtest.exe and b/fmemtest.exe differ
index 8da2cc7fedb3f56d24645ed135c361612a9401b7..559ba8847884e8356d3b8b1b9fd1b586f9413f5e 100644 (file)
Binary files a/fontgfx.exe and b/fontgfx.exe differ
index b8d8bd9a6ae7892674acfe720cdf01bd66adfc59..f3807cefe0924be0d35334cac8d478303ffaccd2 100644 (file)
Binary files a/fonttest.exe and b/fonttest.exe differ
index f655971def5b999e1dd27ffdb01c250be5dda8cf..5bc4678fae71b7d0631786eaedb3106e986706d8 100644 (file)
Binary files a/inputest.exe and b/inputest.exe differ
index ea0c9b84dc07fb6de37380c4a026e103cda938ba..44984d648fe15f419fa727f92282f895201db1a0 100644 (file)
--- 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
 
index ba1abdf2af6e85eac4eb5433428764d5017201d1..bca3fdb90ed17fc1aea611adb74f902daecd6047 100644 (file)
Binary files a/maptest.exe and b/maptest.exe differ
index 948a90f760831b8ee2b2eebe0af8a751c36fddf0..70ad36f8456e4b2f6edc7cfaff9e22642888b42f 100644 (file)
Binary files a/palettec.exe and b/palettec.exe differ
index ddd613509f605e13006f6e931b49610ad6e9961f..9bbdaeec4e6ee45004cc9a991bc983aeaf17a173 100644 (file)
Binary files a/pcxtest.exe and b/pcxtest.exe differ
index c4392e5ed81a97f5c94ca16a6dca854fa2bffb2a..31111a65ee6430b66e05e8602a96dc6d40b9ece6 100644 (file)
Binary files a/scroll.exe and b/scroll.exe differ
diff --git a/sega.exe b/sega.exe
new file mode 100644 (file)
index 0000000..4ec072e
Binary files /dev/null and b/sega.exe differ
index 970ccf12276252df8ea88dd691e8ccd0a933c09b..b5a81f32b569edf7331d61e11fab97ce76827f26 100644 (file)
Binary files a/sountest.exe and b/sountest.exe differ
index d036b8387bf4f594f3192e200c1f426560cef2a8..fccbacb795317443475ecbb9bbde11b0c2b2d33f 100644 (file)
@@ -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());
 }
index 2aca4bb7cdac82377624bfaf8a4da9fe81538116..8e70082e840d5f4f28dc5afa611537f78c379522 100644 (file)
@@ -38,80 +38,70 @@ void wait(clock_t wait){
        while((goal > clock()) && !kbhit()) ;\r
 } /* 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\r
+       segu = _bheapseg( 1024 );\r
+       if( segu == _NULLSEG ) {\r
+               printf( "Unable to allocate based heap\n" );
+               return 0;\r
+               //exit( 1 );\r
+       }
+       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);\r
 }
 
+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(&regs,&regs,&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" );
+       }
+}
+
+
 ///////////////////////////////////////////////////////////////////////////\r
 //\r
 //      US_CheckParm() - checks to see if a string matches one of a set of\r
index 6c5f9b0bcd2ac6880f37e76d2976b548b21e867f..db6c4262589cc5e232df99d444f08dda4a32df21 100644 (file)
 #include <fcntl.h>\r
 #include <sys/stat.h>
 #include <mem.h>
+#include <alloca.h>
+#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 */\r
 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);\r
index 3ba93d329444678c6a9beda1e6bf6ebc7983c0f6..38754e10cbbae0f570cec38df1908ae75bc09c69 100644 (file)
@@ -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 (file)
index 0000000..49cb747
--- /dev/null
@@ -0,0 +1,613 @@
+\r
+/* Functions that emulate UNIX catgets */\r
+\r
+/* Copyright (C) 1999,2000,2001 Jim Hall <jhall@freedos.org> */\r
+\r
+/*\r
+  This library is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU Lesser General Public\r
+  License as published by the Free Software Foundation; either\r
+  version 2.1 of the License, or (at your option) any later version.\r
+\r
+  This library is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+  Lesser General Public License for more details.\r
+\r
+  You should have received a copy of the GNU Lesser General Public\r
+  License along with this library; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
+*/\r
+\r
+#include <stdio.h>                     /* sprintf */\r
+#include <stdlib.h>                    /* getenv  */\r
+#include <string.h>                    /* strchr */\r
+#include <fcntl.h>\r
+\r
+#include "src/lib/nyan/kitten.h"\r
+\r
+\r
+/* DB stuff */\r
+\r
+struct db_list{\r
+  struct db_list *next;\r
+  char *key;\r
+  char *value;\r
+};\r
+\r
+typedef struct db_list db_t;\r
+\r
+db_t *db_insert (char *key, char *value);\r
+db_t *db_fetch (char *key);\r
+\r
+\r
+/* External functions */\r
+\r
+int get_line (int file, char *buffer, int size);\r
+\r
+\r
+/* Local prototypes */\r
+\r
+int catread (char *catfile);           /* Reads a catfile into the hash */\r
+char *processEscChars(char *line);  /* Converts c escape sequences to chars */\r
+\r
+/* Globals */\r
+\r
+nl_catd _kitten_catalog = 0;                   /* _kitten_catalog descriptor, either 0 or 1 */\r
+\r
+\r
+\r
+#if defined(__SMALL__)                                                 /* it's not very portable ;) */\r
+\r
+#include <dos.h>\r
+/* assert we are running in small model */\r
+/* else pointer below has to be done correctly */\r
+char verify_small_pointers[sizeof(void*) == 2 ? 1 : -1];\r
+\r
+\r
+int dos_open(char *filename, int mode);\r
+#define open(filename,mode) dos_open(filename,mode)\r
+\r
+int dos_read(int file, void *ptr, unsigned count);\r
+#define read(file, ptr, count) dos_read(file,ptr,count)\r
+\r
+void dos_close(int file);\r
+#define close(file) dos_close(file)\r
+\r
+#ifdef __WATCOMC__\r
+\r
+#pragma aux dos_open = \\r
+"mov ax, 0x3d00" \\r
+"int 0x21" \\r
+"jnc noerror" \\r
+"mov ax, 0xffff" \\r
+"noerror:" \\r
+parm [dx] [ax] value [ax];\r
+\r
+#pragma aux dos_read = \\r
+"mov ah, 0x3f" \\r
+"int 0x21" \\r
+"jnc noerror" \\r
+"xor ax, ax" \\r
+"noerror:" \\r
+parm [bx] [dx] [cx] value [ax];\r
+\r
+#pragma aux dos_close = \\r
+"mov ah, 0x3e" \\r
+"int 0x21" \\r
+parm [bx];\r
+\r
+#else\r
+\r
+int dos_open(char *filename, int mode)\r
+{\r
+  union REGS r;\r
+\r
+  if (mode);                                   /* mode ignored - readonly supported */\r
+\r
+  r.h.ah = 0x3d;\r
+  r.h.al = 0;                                  /* read mode only supoported now !! */\r
+  r.x.dx = (unsigned)filename;\r
+  intdos(&r,&r);\r
+\r
+  if (r.x.cflag)\r
+    return -1;\r
+  return r.x.ax;\r
+}\r
+\r
+int dos_read(int file, void *ptr, unsigned count)\r
+{\r
+  union REGS r;\r
+\r
+  r.h.ah = 0x3f;\r
+  r.x.bx = file;\r
+  r.x.cx = count;\r
+  r.x.dx = (unsigned)ptr;\r
+  intdos(&r,&r);\r
+\r
+  if (r.x.cflag)\r
+    return 0;\r
+  return r.x.ax;\r
+}\r
+\r
+void dos_close(int file)\r
+{\r
+  union REGS r;\r
+\r
+  r.h.ah = 0x3e;\r
+  r.x.bx = file;\r
+  intdos(&r,&r);\r
+}\r
+\r
+#endif\r
+#endif\r
+\r
+#ifndef NOCATS\r
+\r
+/* Functions */\r
+\r
+char *\r
+pascal kittengets(int set_number, int message_number, char *message)\r
+{\r
+  /* get message from a message _kitten_catalog */\r
+\r
+  /* 'message' should really be const, but not when it is returned */\r
+\r
+  /* On success, catgets() returns a pointer to an internal buffer\r
+     area containing the null-terminated message string.  On failure,\r
+     catgets() returns the value 'message'.  */\r
+\r
+  char key[10];\r
+  db_t *ptr;\r
+\r
+\r
+  /* fetch the message that goes with the set/message number */\r
+\r
+  sprintf (key, "%d.%d", set_number, message_number);\r
+  ptr = db_fetch (key);\r
+\r
+  /* printf("\ncatgets %s\n",message); */\r
+\r
+  if (ptr)\r
+    {\r
+      /*     printf("------> %s\n",ptr->value); */\r
+\r
+      return (ptr->value);\r
+    }\r
+\r
+  /* else */\r
+\r
+  return (message);\r
+}\r
+\r
+nl_catd\r
+kittenopen(char *name)\r
+{\r
+  /* catopen() returns a message _kitten_catalog descriptor of type nl_catd on\r
+     success.  On failure, it returns -1. */\r
+\r
+  /* 'flag' is completely ignored here. */\r
+\r
+  char catfile[256];                   /* full path to the msg _kitten_catalog */\r
+  char *nlsptr;                                /* ptr to NLSPATH */\r
+  char *lang;                  /* ptr to LANG */\r
+\r
+\r
+\r
+  /* Open the _kitten_catalog file */\r
+\r
+  /* The value of `_kitten_catalog' will be set based on catread */\r
+\r
+  if (_kitten_catalog)\r
+    {\r
+      /* Already one open */\r
+\r
+      printf("cat already open\n");\r
+      return (-1);\r
+    }\r
+\r
+  /* If the message _kitten_catalog file name contains a directory separator,\r
+     assume that this is a real path to the _kitten_catalog file.  Note that\r
+     catread will return a true or false value based on its ability\r
+     to read the catfile. */\r
+\r
+  if (strchr (name, '\\'))\r
+    {\r
+      /* first approximation: 'name' is a filename */\r
+\r
+      printf("found \\\n");\r
+\r
+      _kitten_catalog = catread (name);\r
+      return (_kitten_catalog);\r
+    }\r
+\r
+  /* If the message _kitten_catalog file name does not contain a directory\r
+     separator, then we need to try to locate the message _kitten_catalog on\r
+     our own.  We will use several methods to find it. */\r
+\r
+  /* We will need the value of LANG, and may need a 2-letter abbrev of\r
+     LANG later on, so get it now. */\r
+\r
+  lang = getenv ("LANG");\r
+\r
+  if (lang == NULL)\r
+    {\r
+      /* printf("no lang= found\n"); */\r
+\r
+      /* Return failure - we won't be able to locate the cat file */\r
+      return (-1);\r
+    }\r
+\r
+\r
+  /* step through NLSPATH */\r
+\r
+  nlsptr = getenv ("NLSPATH");\r
+\r
+\r
+  if (nlsptr == NULL)\r
+    {\r
+      /* printf("no NLSPATH= found\n"); */\r
+\r
+      /* Return failure - we won't be able to locate the cat file */\r
+      return (-1);\r
+    }\r
+\r
+      /* printf("nlsptr:%s\n",nlsptr); */\r
+\r
+  while (*nlsptr)\r
+    {\r
+      char *tok = strchr(nlsptr, ';');\r
+      int toklen;\r
+\r
+\r
+      if (tok == NULL) tok = nlsptr + strlen(nlsptr);\r
+      toklen=tok-nlsptr;\r
+      /* Try to find the _kitten_catalog file in each path from NLSPATH */\r
+\r
+      /* Rule #1: %NLSPATH%\%LANG%\cat */\r
+\r
+      memcpy(catfile,nlsptr,toklen);\r
+      sprintf(catfile+toklen,"\\%s\\%s",lang,name);\r
+\r
+      _kitten_catalog = catread (catfile);\r
+      if (_kitten_catalog)\r
+       {\r
+         return (_kitten_catalog);\r
+       }\r
+\r
+      /* Rule #2: %NLSPATH%\cat.%LANG% */\r
+\r
+      sprintf(catfile+toklen,"\\%s.%s",name, lang);\r
+\r
+      _kitten_catalog = catread (catfile);\r
+\r
+      if (_kitten_catalog)\r
+       {\r
+         return (_kitten_catalog);\r
+       }\r
+\r
+      /* Rule #3: if LANG looks to be in format "en-UK" then\r
+        %NLSPATH%\cat.EN */\r
+\r
+      if (lang[2] == '-')\r
+       {\r
+         lang[2] = 0;\r
+         sprintf(catfile+toklen,"\\%s.%s",name,lang);\r
+         lang[2] = '-';\r
+\r
+         _kitten_catalog = catread (catfile);\r
+         if (_kitten_catalog)\r
+           {\r
+             return (_kitten_catalog);\r
+           }\r
+       }\r
+\r
+      /* Grab next tok for the next while iteration */\r
+      nlsptr = tok;\r
+      if (*nlsptr) nlsptr++;\r
+\r
+    } /* while tok */\r
+\r
+  /* We could not find it.  Return failure. */\r
+\r
+  return (0);\r
+}\r
+\r
+int\r
+catread (char *catfile)\r
+{\r
+  int  file;                           /* pointer to the catfile */\r
+  char *key;                           /* part of key-value for hash */\r
+  char *value;                         /* part of key-value for hash */\r
+  char inBuffer[256];                  /* the string read from the file */\r
+\r
+  /* Open the catfile for reading */\r
+\r
+  /*printf("catread %s\n",catfile); */\r
+\r
+  file = open (catfile, O_RDONLY | O_TEXT);\r
+  if (file < 0)\r
+    {\r
+      /* Cannot open the file. Return failure */\r
+         /* printf("catread: cant read %s\n",catfile); */\r
+      return (0);\r
+    }\r
+\r
+  /*printf("catread %s success\n",catfile);*/\r
+\r
+  /* Read the file into memory */\r
+\r
+  while (get_line (file, inBuffer, sizeof(inBuffer)))\r
+    {\r
+      /* Break into parts.  Entries should be of the form:\r
+        "1.2:This is a message" */\r
+\r
+      /* A line that starts with '#' is considered a comment, and will\r
+        be thrown away without reading it. */\r
+\r
+      if (inBuffer[0] == '#')          /* comment */\r
+       continue;\r
+\r
+      if ((key = strchr (inBuffer, ':')) != NULL)\r
+       {\r
+         *key = 0;\r
+\r
+         value = processEscChars(key+1);\r
+\r
+         db_insert (inBuffer, value);\r
+       }\r
+\r
+    } /* while */\r
+\r
+  close (file);\r
+\r
+  /* Return success */\r
+\r
+  return (1);\r
+}\r
+\r
+void\r
+kittenclose (void)\r
+{\r
+  /* close a message _kitten_catalog */\r
+\r
+  _kitten_catalog = 0;\r
+}\r
+\r
+\r
+\r
+/**\r
+ * Process strings, converting \n, \t, \v, \b, \r, \f, \\, \ddd, \xdd and \x0dd\r
+ * to actual chars. (Note: \x is an extension to support hexadecimal)\r
+ * This method is used to allow the message _kitten_catalog to use c escape sequences.\r
+ * Modifies the line in-place (always same size or shorter).\r
+ * Returns a pointer to input string.\r
+ */\r
+\r
+int mystrtoul(char *src, int base, int size, int *error)\r
+{\r
+  int ret = 0;\r
+\r
+  *error = 1;\r
+\r
+  for (; size > 0; size--)\r
+    {\r
+      int digit;\r
+      int ch = *src++;\r
+\r
+      if (ch >= '0' && ch <= '9') digit = ch - '0';\r
+      else if (ch >= 'A' && ch <= 'Z') digit = ch - 'A' + 10;\r
+      else if (ch >= 'a' && ch <= 'z') digit = ch - 'a' + 10;\r
+      else\r
+       {\r
+         return 0;\r
+       }\r
+\r
+      if (digit >= base)\r
+       {\r
+         return 0;\r
+       }\r
+\r
+      ret = ret * base + digit;\r
+    }\r
+\r
+  *error = 0;\r
+\r
+  return ret;\r
+}\r
+\r
+\r
+char *processEscChars(char *line)\r
+{\r
+  register char *src = line, *dst = line;\r
+\r
+  /* used when converting \xdd and \ddd (hex or octal) characters */\r
+  char ch;\r
+\r
+  if (line == NULL) return NULL;\r
+\r
+  /* cycle through copying characters, except when a \ is encountered. */\r
+  for ( ; *src != '\0'; src++, dst++)\r
+    {\r
+      ch = *src;\r
+\r
+      if (ch == '\\')\r
+       {\r
+         src++; /* point to char following slash */\r
+         switch (ch = *src)\r
+           {\r
+           case '\\': /* a single slash */\r
+             ch = '\\';\r
+             break;\r
+           case 'n': /* a newline (linefeed) */\r
+             ch = '\n';\r
+             break;\r
+           case 'r': /* a carriage return */\r
+             ch = '\r';\r
+             break;\r
+           case 't': /* a horizontal tab */\r
+             ch = '\t';\r
+             break;\r
+           case 'v': /* a vertical tab */\r
+             ch = '\v';\r
+             break;\r
+           case 'b': /* a backspace */\r
+             ch = '\b';\r
+             break;\r
+           case 'a': /* alert */\r
+             ch = '\a';\r
+             break;\r
+           case 'f': /* formfeed */\r
+             ch = '\f';\r
+             break;\r
+           case 'x': /* extension supporting hex numbers \xdd or \x0dd */\r
+             {\r
+               int error;\r
+               ch  = mystrtoul(src+1,16,2, &error); /* get value */\r
+               if (!error) /* store character */\r
+                 {\r
+                   src += 2;\r
+                 }\r
+               else /* error so just store x (loose slash) */\r
+                 {\r
+                   ch = *src;\r
+                 }\r
+             }\r
+\r
+             break;\r
+           default: /* just store letter (loose slash) or handle octal */\r
+\r
+             {\r
+               int error;\r
+               ch  = mystrtoul(src,8,3, &error); /* get value */\r
+               if (!error) /* store character */\r
+                 {\r
+                   src += 3;\r
+                 }\r
+               else\r
+                 ch = *src;\r
+             }\r
+\r
+             break;\r
+           }\r
+       }\r
+\r
+      *dst = ch;\r
+    }\r
+\r
+  /* ensure '\0' terminated */\r
+  *dst = '\0';\r
+\r
+  return line;\r
+}\r
+\r
+\r
+\r
+int\r
+get_line (int file, char *str, int size)\r
+{\r
+  int success = 0;\r
+\r
+  /* now, read the string */\r
+\r
+  for ( ; size > 0; )\r
+    {\r
+      if (read(file,str,1) <= 0)\r
+       break;\r
+\r
+      success = 1;\r
+\r
+      if (*str == '\r')\r
+       continue;\r
+\r
+      if (*str == '\n')\r
+       break;\r
+\r
+      str++;\r
+      size--;\r
+\r
+    } /* while */\r
+\r
+  *str = 0;\r
+\r
+  return success;\r
+}\r
+\r
+/* Function prototypes */\r
+\r
+\r
+/* Global variables */\r
+\r
+static db_t *hashtab[1];\r
+\r
+\r
+/* Functions */\r
+\r
+\r
+/* db_fetch() - Query the hash and return a struct that contains the\r
+   key and the pointer.         The calling function should not look beyond\r
+   that. */\r
+\r
+db_t *\r
+db_fetch (char *s)\r
+{\r
+  db_t *db_ptr;\r
+\r
+  for (db_ptr = hashtab[0]; db_ptr != NULL; db_ptr = db_ptr->next)\r
+    {\r
+      if (strcmp (s, db_ptr->key) == 0)\r
+       {\r
+         break;\r
+\r
+       }\r
+    }\r
+\r
+\r
+  return (db_ptr);\r
+}\r
+\r
+/* db_insert() - Inserts a key,value pair into the hash.  If the key\r
+   already exists in the hash, the new value is NOT inserted. */\r
+\r
+db_t *\r
+db_insert (char *key, char *value)\r
+{\r
+  db_t *db_ptr;\r
+\r
+  if ((db_ptr = db_fetch (key)) == NULL)\r
+    {\r
+      /* not found */\r
+\r
+      db_ptr = (db_t *) malloc (sizeof (*db_ptr));\r
+\r
+      if (db_ptr == NULL || (db_ptr->key = strdup (key)) == NULL)\r
+       {\r
+         return (NULL);\r
+       }\r
+\r
+      /* insert the key,value into the hash. */\r
+\r
+      db_ptr->next = hashtab[0];\r
+      hashtab[0] = db_ptr;\r
+    }\r
+\r
+  else\r
+    {\r
+      /* already there */\r
+\r
+      free ((void *) db_ptr->value);\r
+    }\r
+\r
+  if ((db_ptr ->value = strdup (value)) == NULL)\r
+    {\r
+      return (NULL);\r
+    }\r
+\r
+  /* else */\r
+\r
+  return (db_ptr);\r
+}\r
+\r
+\r
+\r
+#endif /* NOCATS */\r
diff --git a/src/lib/nyan/kitten.h b/src/lib/nyan/kitten.h
new file mode 100644 (file)
index 0000000..62c5bc7
--- /dev/null
@@ -0,0 +1,75 @@
+/* $Id: kitten.h,v 1.1 2004/09/19 10:01:26 bartoldeman Exp $ */\r
+\r
+/* Functions that emulate UNIX catgets */\r
+\r
+/* Copyright (C) 1999,2000 Jim Hall <jhall@freedos.org> */\r
+\r
+/*\r
+  This library is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU Lesser General Public\r
+  License as published by the Free Software Foundation; either\r
+  version 2.1 of the License, or (at your option) any later version.\r
+\r
+  This library is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+  Lesser General Public License for more details.\r
+\r
+  You should have received a copy of the GNU Lesser General Public\r
+  License along with this library; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+*/\r
+\r
+\r
+#ifndef _CATGETS_H\r
+#define _CATGETS_H\r
+
+#include <unistd.h>\r
+\r
+#ifdef NOCATS\r
+\r
+/* #define NOCATS to disable that stuff completely */\r
+#define nl_catd int\r
+#define catopen(x,y) 1\r
+#define catclose(x) \r
+#define catgets(c,x,y,s) s\r
+\r
+#else\r
+\r
+\r
+\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+  /* Data types */\r
+\r
+  typedef int nl_catd;\r
+\r
+  /* Symbolic constants */\r
+\r
+#define MCLoadBySet 0                  /* not implemented */\r
+#define MCLoadAll   0                  /* not implemented */\r
+\r
+\r
+  /* Functions */\r
+\r
+#define catgets(catalog, set,message_number,message) kittengets(set,message_number,message)\r
+#define catopen(name,flag) kittenopen(name)\r
+#define catclose(catalog)  kittenclose()\r
+\r
+\r
+  char *  pascal kittengets( int set_number, int message_number,char *message);\r
+  nl_catd kittenopen(char *name);\r
+  void    kittenclose (void);\r
+\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* NOCATS */\r
+\r
+#endif /* _CATGETS_H */\r
index 6bd40c83e0998a5ef72bab2e4024f9fcbe3d3e4d..c262ec5e7e62c47b38fae02b5a419a3a85b53920 100644 (file)
@@ -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;
index 276b3e83fd05baf547181ed54b28cef624229cc0..d4d04d277de3f8a6768a4f9ffdca5af79a0920ac 100644 (file)
@@ -1,36 +1,52 @@
-#include <stdio.h>
-#include <dos.h>
-#include <malloc.h>
-
-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 <stdio.h>\r
+#include <stdlib.h>\r
+#include <malloc.h>\r
+\r
+struct list {\r
+    struct list __based(__self) *next;\r
+    int         value;\r
+};\r
+\r
+void main(int argc, char *argv[])\r
+  {\r
+    int         i;\r
+    __segment   segu;\r
+    struct list __based(segu) *head;\r
+    struct list __based(segu) *p;\r
+\r
+    /* allocate based heap */\r
+    segu = _bheapseg( 1024 );\r
+    if( segu == _NULLSEG ) {\r
+      printf( "Unable to allocate based heap\n" );\r
+      exit( 1 );\r
+    }\r
+\r
+    /* create a linked list in the based heap */\r
+    head = 0;\r
+    for( i = 1; i < 10; i++ ) {\r
+      p = _bmalloc( segu, sizeof( struct list ) );\r
+      if( p == _NULLOFF ) {\r
+        printf( "_bmalloc failed\n" );\r
+        break;\r
+      }\r
+      p->next = head;\r
+      p->value = i;\r
+      head = p;\r
+    }\r
+\r
+    /* traverse the linked list, printing out values */\r
+    for( p = head; p != 0; p = p->next ) {\r
+       printf("Segu = %04X %FP", p, p);\r
+      printf( "        Value = %d\n", p->value );\r
+    }\r
+\r
+    /* free all the elements of the linked list */\r
+    for( ; p = head; ) {\r
+      head = p->next;\r
+      _bfree( segu, p );\r
+    }\r
+    /* free the based heap */\r
+    _bfreeseg( segu );
+       printf("program=%P\n", *argv[0]);
+       printf("seg=%P\n", segu);\r
+}\r
index dd07d4429eb335d714f14ddadb1d3263a0beadc3..4a0080c5ffd48944ede426e80279dee2429b07df 100644 (file)
Binary files a/test.exe and b/test.exe differ
index 56899e6febe2e27bb51f0b2ee4139d3e8f4469da..8e07f0b2908a96c71b26c9573ad1df5c9984bfd0 100644 (file)
Binary files a/test2.exe and b/test2.exe differ
index e0b5545c4b3b5c60b9711a4403770c2fcbf3cfb5..4489e40439e6f5bcb981f6067e35436462c9b5bb 100644 (file)
Binary files a/tsthimem.exe and b/tsthimem.exe differ