]> 4ch.mooo.com Git - 16.git/commitdiff
I am understanding why the memory management system is not working now!!
authorsparky4 <sparky4@cock.li>
Wed, 5 Aug 2015 03:40:52 +0000 (22:40 -0500)
committersparky4 <sparky4@cock.li>
Wed, 5 Aug 2015 03:40:52 +0000 (22:40 -0500)
modified:   16.exe
modified:   16/exmmtest/EXMMTEST.DSK
modified:   16/exmmtest/EXMMTEST.EXE
modified:   16/exmmtest/EXMMTEST.MAP
modified:   16/exmmtest/EXMMTEST.PRJ
new file:   16/exmmtest/HEAP.16
new file:   16/exmmtest/TC0000.SWP
modified:   16/exmmtest/src/exmmtest.c
modified:   16/exmmtest/src/lib/16_ca.c
modified:   16/exmmtest/src/lib/16_hc.c
modified:   16/exmmtest/src/lib/16_head.c
modified:   16/exmmtest/src/lib/16_head.h
modified:   16/exmmtest/src/lib/16_mm.c
new file:   16/exmmtest/src/lib/nyan/kitten.c
new file:   16/exmmtest/src/lib/nyan/kitten.h
modified:   exmmtest.exe
modified:   inputest.exe
modified:   makefile
modified:   scroll.exe
modified:   sountest.exe
modified:   src/exmmtest.c
modified:   src/lib/16_ca.c
modified:   src/lib/16_hc.c
modified:   src/lib/16_head.c
modified:   src/lib/16_head.h
modified:   src/lib/16_mm.c
modified:   src/lib/nyan/kitten.c
modified:   src/lib/nyan/kitten.h

28 files changed:
16.exe
16/exmmtest/EXMMTEST.DSK
16/exmmtest/EXMMTEST.EXE
16/exmmtest/EXMMTEST.MAP
16/exmmtest/EXMMTEST.PRJ
16/exmmtest/HEAP.16 [new file with mode: 0644]
16/exmmtest/TC0000.SWP [new file with mode: 0644]
16/exmmtest/src/exmmtest.c
16/exmmtest/src/lib/16_ca.c
16/exmmtest/src/lib/16_hc.c
16/exmmtest/src/lib/16_head.c
16/exmmtest/src/lib/16_head.h
16/exmmtest/src/lib/16_mm.c
16/exmmtest/src/lib/nyan/kitten.c [new file with mode: 0644]
16/exmmtest/src/lib/nyan/kitten.h [new file with mode: 0644]
exmmtest.exe
inputest.exe
makefile
scroll.exe
sountest.exe
src/exmmtest.c
src/lib/16_ca.c
src/lib/16_hc.c
src/lib/16_head.c
src/lib/16_head.h
src/lib/16_mm.c
src/lib/nyan/kitten.c
src/lib/nyan/kitten.h

diff --git a/16.exe b/16.exe
index dae2e20e9f0fb67696a32bee2d42f09eac22a84e..d045861962f5036193a4cf088b0704b68d3cdc1e 100644 (file)
Binary files a/16.exe and b/16.exe differ
index af8fa1879c190579c053002d3eb0f90c800666b2..b6525f912d9e431efbf614db9f4567cba611908c 100644 (file)
Binary files a/16/exmmtest/EXMMTEST.DSK and b/16/exmmtest/EXMMTEST.DSK differ
index dea7d963ae89f83ef4b74c74cb05c43c68dd0621..70a92eec0b10f5c3617d62e97d6e40ad4b062106 100644 (file)
Binary files a/16/exmmtest/EXMMTEST.EXE and b/16/exmmtest/EXMMTEST.EXE differ
index d564f574ec379f6a6d052f8915043593c1f78145..70abacfef1a8b33a7596a547511b86b376b97d2b 100644 (file)
 \r
  Start  Stop   Length Name               Class\r
 \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
+ 00000H 05880H 05881H _TEXT              CODE\r
+ 05890H 05890H 00000H _FARDATA           FAR_DATA\r
+ 05890H 05890H 00000H _FARBSS            FAR_BSS\r
+ 05890H 05890H 00000H _OVERLAY_          OVRINFO\r
+ 05890H 05890H 00000H _1STUB_            STUBSEG\r
+ 05890H 06941H 010B2H _DATA              DATA\r
+ 06942H 06943H 00002H _CVTSEG            DATA\r
+ 06944H 06949H 00006H _SCNSEG            DATA\r
+ 0694AH 0694AH 00000H _CONST             CONST\r
+ 0694AH 06961H 00018H _INIT_             INITDATA\r
+ 06962H 06962H 00000H _INITEND_          INITDATA\r
+ 06962H 06962H 00000H _EXIT_             EXITDATA\r
+ 06962H 06962H 00000H _EXITEND_          EXITDATA\r
+ 06962H 069C9H 00068H _BSS               BSS\r
+ 069CAH 069CAH 00000H _BSSEND            BSSEND\r
+ 069D0H 06A4FH 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 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
+ 0000:028F 05F7 C=CODE   S=_TEXT          G=(none)  M=SRC\LIB\NYAN\KITTEN.C ACBP=28\r
+ 0000:0886 0290 C=CODE   S=_TEXT          G=(none)  M=SRC\LIB\16_HC.C ACBP=28\r
+ 0000:0B16 0235 C=CODE   S=_TEXT          G=(none)  M=SRC\EXMMTEST.C ACBP=28\r
+ 0000:0D4B 0232 C=CODE   S=_TEXT          G=(none)  M=SRC\LIB\16_CA.C ACBP=28\r
+ 0000:0F7D 0242 C=CODE   S=_TEXT          G=(none)  M=SRC\LIB\16_HEAD.C ACBP=28\r
+ 0000:11BF 1992 C=CODE   S=_TEXT          G=(none)  M=SRC\LIB\16_MM.C ACBP=28\r
+ 0000:2B51 0024 C=CODE   S=_TEXT          G=(none)  M=ATEXIT     ACBP=28\r
+ 0000:2B75 0049 C=CODE   S=_TEXT          G=(none)  M=CLOCK      ACBP=28\r
+ 0000:2BBE 0000 C=CODE   S=_TEXT          G=(none)  M=CTYPE      ACBP=28\r
+ 0000:2BBE 003D C=CODE   S=_TEXT          G=(none)  M=DOSFATTR   ACBP=28\r
+ 0000:2BFB 0089 C=CODE   S=_TEXT          G=(none)  M=EXIT       ACBP=28\r
+ 0000:2C84 0000 C=CODE   S=_TEXT          G=(none)  M=FILES      ACBP=28\r
+ 0000:2C84 0000 C=CODE   S=_TEXT          G=(none)  M=FILES2     ACBP=28\r
+ 0000:2C84 0000 C=CODE   S=_TEXT          G=(none)  M=FMODE      ACBP=28\r
+ 0000:2C84 0021 C=CODE   S=_TEXT          G=(none)  M=H_LLSH     ACBP=28\r
+ 0000:2CA5 0021 C=CODE   S=_TEXT          G=(none)  M=H_LURSH    ACBP=28\r
+ 0000:2CC6 0060 C=CODE   S=_TEXT          G=(none)  M=H_PADD     ACBP=28\r
+ 0000:2D26 0028 C=CODE   S=_TEXT          G=(none)  M=H_PSBP     ACBP=28\r
+ 0000:2D4E 004B C=CODE   S=_TEXT          G=(none)  M=IOERROR    ACBP=28\r
+ 0000:2D99 0011 C=CODE   S=_TEXT          G=(none)  M=ISATTY     ACBP=28\r
+ 0000:2DAA 00A2 C=CODE   S=_TEXT          G=(none)  M=LONGTOA    ACBP=28\r
+ 0000:2E4C 0029 C=CODE   S=_TEXT          G=(none)  M=LSEEK      ACBP=28\r
+ 0000:2E75 00B0 C=CODE   S=_TEXT          G=(none)  M=MKNAME     ACBP=28\r
+ 0000:2F25 0021 C=CODE   S=_TEXT          G=(none)  M=N_PCMP     ACBP=28\r
+ 0000:2F46 002F C=CODE   S=_TEXT          G=(none)  M=READA      ACBP=28\r
+ 0000:2F75 00B2 C=CODE   S=_TEXT          G=(none)  M=SETUPIO    ACBP=28\r
+ 0000:3027 0000 C=CODE   S=_TEXT          G=(none)  M=STKLEN     ACBP=28\r
+ 0000:3027 002C C=CODE   S=_TEXT          G=(none)  M=TOLOWER    ACBP=28\r
+ 0000:3053 0018 C=CODE   S=_TEXT          G=(none)  M=UNLINK     ACBP=28\r
+ 0000:306B 04DB C=CODE   S=_TEXT          G=(none)  M=VPRINTER   ACBP=28\r
+ 0000:3546 009F C=CODE   S=_TEXT          G=(none)  M=VRAM       ACBP=28\r
+ 0000:35E5 0000 C=CODE   S=_TEXT          G=(none)  M=WSCROLL    ACBP=28\r
+ 0000:35E5 0030 C=CODE   S=_TEXT          G=(none)  M=_STPCPY    ACBP=28\r
+ 0000:3615 0004 C=CODE   S=_TEXT          G=(none)  M=CORELEFT   ACBP=28\r
+ 0000:3619 014E C=CODE   S=_TEXT          G=(none)  M=CPRINTF    ACBP=28\r
+ 0000:3767 01A5 C=CODE   S=_TEXT          G=(none)  M=CRTINIT    ACBP=28\r
+ 0000:390C 001F C=CODE   S=_TEXT          G=(none)  M=CVTFAK     ACBP=28\r
+ 0000:392B 042D C=CODE   S=_TEXT          G=(none)  M=FARHEAP    ACBP=28\r
+ 0000:3D58 013E C=CODE   S=_TEXT          G=(none)  M=FBRK       ACBP=28\r
+ 0000:3E96 0050 C=CODE   S=_TEXT          G=(none)  M=FCORELFT   ACBP=28\r
+ 0000:3EE6 0054 C=CODE   S=_TEXT          G=(none)  M=GETCH      ACBP=28\r
+ 0000:3F3A 00AC C=CODE   S=_TEXT          G=(none)  M=GPTEXT     ACBP=28\r
+ 0000:3FE6 0029 C=CODE   S=_TEXT          G=(none)  M=IOCTL      ACBP=28\r
+ 0000:400F 0012 C=CODE   S=_TEXT          G=(none)  M=KBHIT      ACBP=28\r
+ 0000:4021 009D C=CODE   S=_TEXT          G=(none)  M=MOVETEXT   ACBP=28\r
+ 0000:40BE 0017 C=CODE   S=_TEXT          G=(none)  M=PUTCH      ACBP=28\r
+ 0000:40D5 0004 C=CODE   S=_TEXT          G=(none)  M=REALCVT    ACBP=28\r
+ 0000:40D9 01C7 C=CODE   S=_TEXT          G=(none)  M=SCREEN     ACBP=28\r
+ 0000:42A0 0184 C=CODE   S=_TEXT          G=(none)  M=SCROLL     ACBP=28\r
+ 0000:4424 0129 C=CODE   S=_TEXT          G=(none)  M=SETARGV    ACBP=28\r
+ 0000:454D 001C C=CODE   S=_TEXT          G=(none)  M=SETBLOCK   ACBP=28\r
+ 0000:4569 0054 C=CODE   S=_TEXT          G=(none)  M=SETENVP    ACBP=28\r
+ 0000:45BD 002C C=CODE   S=_TEXT          G=(none)  M=WHEREXY    ACBP=28\r
+ 0000:45E9 001D C=CODE   S=_TEXT          G=(none)  M=CHMODA     ACBP=28\r
+ 0000:4606 0026 C=CODE   S=_TEXT          G=(none)  M=CLOSE      ACBP=28\r
+ 0000:462C 001E C=CODE   S=_TEXT          G=(none)  M=CLOSEA     ACBP=28\r
+ 0000:464A 00B0 C=CODE   S=_TEXT          G=(none)  M=FCLOSE     ACBP=28\r
+ 0000:46FA 00C6 C=CODE   S=_TEXT          G=(none)  M=FFLUSH     ACBP=28\r
+ 0000:47C0 0041 C=CODE   S=_TEXT          G=(none)  M=FLENGTH    ACBP=28\r
+ 0000:4801 0040 C=CODE   S=_TEXT          G=(none)  M=FLUSHALL   ACBP=28\r
+ 0000:4841 01FE C=CODE   S=_TEXT          G=(none)  M=FOPEN      ACBP=28\r
+ 0000:4A3F 001C C=CODE   S=_TEXT          G=(none)  M=FPRINTF    ACBP=28\r
+ 0000:4A5B 01D8 C=CODE   S=_TEXT          G=(none)  M=FSEEK      ACBP=28\r
+ 0000:4C33 0070 C=CODE   S=_TEXT          G=(none)  M=GETENV     ACBP=28\r
+ 0000:4CA3 0070 C=CODE   S=_TEXT          G=(none)  M=LTOA1      ACBP=28\r
+ 0000:4D13 0024 C=CODE   S=_TEXT          G=(none)  M=MEMCPY     ACBP=28\r
+ 0000:4D37 0022 C=CODE   S=_TEXT          G=(none)  M=MOVEDATA   ACBP=28\r
+ 0000:4D59 018D C=CODE   S=_TEXT          G=(none)  M=OPEN       ACBP=28\r
+ 0000:4EE6 004F C=CODE   S=_TEXT          G=(none)  M=OPENA      ACBP=28\r
+ 0000:4F35 001B C=CODE   S=_TEXT          G=(none)  M=PRINTF     ACBP=28\r
+ 0000:4F50 03A4 C=CODE   S=_TEXT          G=(none)  M=PUTC       ACBP=28\r
+ 0000:52F4 00CB C=CODE   S=_TEXT          G=(none)  M=READ       ACBP=28\r
+ 0000:53BF 0003 C=CODE   S=_TEXT          G=(none)  M=READU      ACBP=28\r
+ 0000:53C2 0111 C=CODE   S=_TEXT          G=(none)  M=SETVBUF    ACBP=28\r
+ 0000:54D3 0081 C=CODE   S=_TEXT          G=(none)  M=SPRINTF    ACBP=28\r
+ 0000:5554 003F C=CODE   S=_TEXT          G=(none)  M=STRCAT     ACBP=28\r
+ 0000:5593 003D C=CODE   S=_TEXT          G=(none)  M=STRCHR     ACBP=28\r
+ 0000:55D0 0030 C=CODE   S=_TEXT          G=(none)  M=STRCMP     ACBP=28\r
+ 0000:5600 0029 C=CODE   S=_TEXT          G=(none)  M=STRCPY     ACBP=28\r
+ 0000:5629 0040 C=CODE   S=_TEXT          G=(none)  M=STRDUP     ACBP=28\r
+ 0000:5669 001F C=CODE   S=_TEXT          G=(none)  M=STRLEN     ACBP=28\r
+ 0000:5688 0149 C=CODE   S=_TEXT          G=(none)  M=WRITE      ACBP=28\r
+ 0000:57D1 003C C=CODE   S=_TEXT          G=(none)  M=WRITEA     ACBP=28\r
+ 0000:580D 0003 C=CODE   S=_TEXT          G=(none)  M=WRITEU     ACBP=28\r
+ 0000:5810 003B C=CODE   S=_TEXT          G=(none)  M=XFCLOSE    ACBP=28\r
+ 0000:584B 0036 C=CODE   S=_TEXT          G=(none)  M=XFFLUSH    ACBP=28\r
+ 0589:0000 0000 C=FAR_DATA S=_FARDATA       G=(none)  M=c0.ASM     ACBP=68\r
+ 0589:0000 0000 C=FAR_BSS S=_FARBSS        G=(none)  M=c0.ASM     ACBP=68\r
+ 0589:0000 0000 C=OVRINFO S=_OVERLAY_      G=(none)  M=c0.ASM     ACBP=68\r
+ 0589:0000 0000 C=STUBSEG S=_1STUB_        G=(none)  M=c0.ASM     ACBP=68\r
+ 0589:0000 0093 C=DATA   S=_DATA          G=DGROUP  M=c0.ASM     ACBP=68\r
+ 0589:0094 0045 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\NYAN\KITTEN.C ACBP=48\r
+ 0589:00DA 0014 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_HC.C ACBP=48\r
+ 0589:00EE 0187 C=DATA   S=_DATA          G=DGROUP  M=SRC\EXMMTEST.C ACBP=48\r
+ 0589:0276 002C C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_CA.C ACBP=48\r
+ 0589:02A2 0010 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_HEAD.C ACBP=48\r
+ 0589:02B2 09FD C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_MM.C ACBP=48\r
+ 0589:0CB0 0002 C=DATA   S=_DATA          G=DGROUP  M=ATEXIT     ACBP=48\r
+ 0589:0CB2 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOCK      ACBP=48\r
+ 0589:0CB2 0101 C=DATA   S=_DATA          G=DGROUP  M=CTYPE      ACBP=48\r
+ 0589:0DB4 0000 C=DATA   S=_DATA          G=DGROUP  M=DOSFATTR   ACBP=48\r
+ 0589:0DB4 0006 C=DATA   S=_DATA          G=DGROUP  M=EXIT       ACBP=48\r
+ 0589:0DBA 0190 C=DATA   S=_DATA          G=DGROUP  M=FILES      ACBP=48\r
+ 0589:0F4A 002A C=DATA   S=_DATA          G=DGROUP  M=FILES2     ACBP=48\r
+ 0589:0F74 0004 C=DATA   S=_DATA          G=DGROUP  M=FMODE      ACBP=48\r
+ 0589:0F78 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LLSH     ACBP=48\r
+ 0589:0F78 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LURSH    ACBP=48\r
+ 0589:0F78 0000 C=DATA   S=_DATA          G=DGROUP  M=H_PADD     ACBP=48\r
+ 0589:0F78 0000 C=DATA   S=_DATA          G=DGROUP  M=H_PSBP     ACBP=48\r
+ 0589:0F78 005B C=DATA   S=_DATA          G=DGROUP  M=IOERROR    ACBP=48\r
+ 0589:0FD4 0000 C=DATA   S=_DATA          G=DGROUP  M=ISATTY     ACBP=48\r
+ 0589:0FD4 0000 C=DATA   S=_DATA          G=DGROUP  M=LONGTOA    ACBP=48\r
+ 0589:0FD4 0000 C=DATA   S=_DATA          G=DGROUP  M=LSEEK      ACBP=48\r
+ 0589:0FD4 0009 C=DATA   S=_DATA          G=DGROUP  M=MKNAME     ACBP=48\r
+ 0589:0FDE 0000 C=DATA   S=_DATA          G=DGROUP  M=N_PCMP     ACBP=48\r
+ 0589:0FDE 0000 C=DATA   S=_DATA          G=DGROUP  M=READA      ACBP=48\r
+ 0589:0FDE 0000 C=DATA   S=_DATA          G=DGROUP  M=SETUPIO    ACBP=48\r
+ 0589:0FDE 0002 C=DATA   S=_DATA          G=DGROUP  M=STKLEN     ACBP=48\r
+ 0589:0FE0 0000 C=DATA   S=_DATA          G=DGROUP  M=TOLOWER    ACBP=48\r
+ 0589:0FE0 0000 C=DATA   S=_DATA          G=DGROUP  M=UNLINK     ACBP=48\r
+ 0589:0FE0 0067 C=DATA   S=_DATA          G=DGROUP  M=VPRINTER   ACBP=48\r
+ 0589:1048 0000 C=DATA   S=_DATA          G=DGROUP  M=VRAM       ACBP=48\r
+ 0589:1048 0002 C=DATA   S=_DATA          G=DGROUP  M=WSCROLL    ACBP=48\r
+ 0589:104A 0000 C=DATA   S=_DATA          G=DGROUP  M=_STPCPY    ACBP=48\r
+ 0589:104A 0000 C=DATA   S=_DATA          G=DGROUP  M=CORELEFT   ACBP=48\r
+ 0589:104A 0000 C=DATA   S=_DATA          G=DGROUP  M=CPRINTF    ACBP=48\r
+ 0589:104A 0018 C=DATA   S=_DATA          G=DGROUP  M=CRTINIT    ACBP=48\r
+ 0589:1062 0031 C=DATA   S=_DATA          G=DGROUP  M=CVTFAK     ACBP=48\r
+ 0589:1094 0000 C=DATA   S=_DATA          G=DGROUP  M=FARHEAP    ACBP=48\r
+ 0589:1094 0002 C=DATA   S=_DATA          G=DGROUP  M=FBRK       ACBP=48\r
+ 0589:1096 0000 C=DATA   S=_DATA          G=DGROUP  M=FCORELFT   ACBP=48\r
+ 0589:1096 0000 C=DATA   S=_DATA          G=DGROUP  M=GETCH      ACBP=48\r
+ 0589:1096 0000 C=DATA   S=_DATA          G=DGROUP  M=GPTEXT     ACBP=48\r
+ 0589:1096 0000 C=DATA   S=_DATA          G=DGROUP  M=IOCTL      ACBP=48\r
+ 0589:1096 0002 C=DATA   S=_DATA          G=DGROUP  M=KBHIT      ACBP=48\r
+ 0589:1098 0000 C=DATA   S=_DATA          G=DGROUP  M=MOVETEXT   ACBP=48\r
+ 0589:1098 0000 C=DATA   S=_DATA          G=DGROUP  M=PUTCH      ACBP=48\r
+ 0589:1098 0000 C=DATA   S=_DATA          G=DGROUP  M=REALCVT    ACBP=48\r
+ 0589:1098 0000 C=DATA   S=_DATA          G=DGROUP  M=SCREEN     ACBP=48\r
+ 0589:1098 0000 C=DATA   S=_DATA          G=DGROUP  M=SCROLL     ACBP=48\r
+ 0589:1098 0010 C=DATA   S=_DATA          G=DGROUP  M=SETARGV    ACBP=48\r
+ 0589:10A8 0000 C=DATA   S=_DATA          G=DGROUP  M=SETBLOCK   ACBP=48\r
+ 0589:10A8 0004 C=DATA   S=_DATA          G=DGROUP  M=SETENVP    ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=WHEREXY    ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=CHMODA     ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOSE      ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOSEA     ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=FCLOSE     ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=FFLUSH     ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=FLENGTH    ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=FLUSHALL   ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=FOPEN      ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=FPRINTF    ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=FSEEK      ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=GETENV     ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=LTOA1      ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=MEMCPY     ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=MOVEDATA   ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=OPEN       ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=OPENA      ACBP=48\r
+ 0589:10AC 0000 C=DATA   S=_DATA          G=DGROUP  M=PRINTF     ACBP=48\r
+ 0589:10AC 0001 C=DATA   S=_DATA          G=DGROUP  M=PUTC       ACBP=48\r
+ 0589:10AE 0000 C=DATA   S=_DATA          G=DGROUP  M=READ       ACBP=48\r
+ 0589:10AE 0000 C=DATA   S=_DATA          G=DGROUP  M=READU      ACBP=48\r
+ 0589:10AE 0004 C=DATA   S=_DATA          G=DGROUP  M=SETVBUF    ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=SPRINTF    ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=STRCAT     ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=STRCHR     ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=STRCMP     ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=STRCPY     ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=STRDUP     ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=STRLEN     ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITE      ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITEA     ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITEU     ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=XFCLOSE    ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_DATA          G=DGROUP  M=XFFLUSH    ACBP=48\r
+ 0589:10B2 0000 C=DATA   S=_CVTSEG        G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0589:10B2 0002 C=DATA   S=_CVTSEG        G=DGROUP  M=CVTFAK     ACBP=48\r
+ 0589:10B4 0000 C=DATA   S=_CVTSEG        G=DGROUP  M=REALCVT    ACBP=48\r
+ 0589:10B4 0000 C=DATA   S=_SCNSEG        G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0589:10B4 0006 C=DATA   S=_SCNSEG        G=DGROUP  M=CVTFAK     ACBP=48\r
+ 0589:10BA 0000 C=CONST  S=_CONST         G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0589:10BA 0000 C=INITDATA S=_INIT_         G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0589:10BA 0006 C=INITDATA S=_INIT_         G=DGROUP  M=SETUPIO    ACBP=48\r
+ 0589:10C0 0006 C=INITDATA S=_INIT_         G=DGROUP  M=CRTINIT    ACBP=48\r
+ 0589:10C6 0006 C=INITDATA S=_INIT_         G=DGROUP  M=SETARGV    ACBP=48\r
+ 0589:10CC 0006 C=INITDATA S=_INIT_         G=DGROUP  M=SETENVP    ACBP=48\r
+ 0589:10D2 0000 C=INITDATA S=_INITEND_      G=DGROUP  M=c0.ASM     ACBP=28\r
+ 0589:10D2 0000 C=EXITDATA S=_EXIT_         G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0589:10D2 0000 C=EXITDATA S=_EXITEND_      G=DGROUP  M=c0.ASM     ACBP=28\r
+ 0589:10D2 0000 C=BSS    S=_BSS           G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0589:10D2 0004 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\NYAN\KITTEN.C ACBP=48\r
+ 0589:10D6 0002 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_HC.C ACBP=48\r
+ 0589:10D8 0000 C=BSS    S=_BSS           G=DGROUP  M=SRC\EXMMTEST.C ACBP=48\r
+ 0589:10D8 000A C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_CA.C ACBP=48\r
+ 0589:10E2 0000 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_HEAD.C ACBP=48\r
+ 0589:10E2 0006 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_MM.C ACBP=48\r
+ 0589:10E8 0040 C=BSS    S=_BSS           G=DGROUP  M=ATEXIT     ACBP=48\r
+ 0589:1128 0001 C=BSS    S=_BSS           G=DGROUP  M=CLOCK      ACBP=48\r
+ 0589:112A 0000 C=BSS    S=_BSS           G=DGROUP  M=DOSFATTR   ACBP=48\r
+ 0589:112A 0000 C=BSS    S=_BSS           G=DGROUP  M=IOERROR    ACBP=48\r
+ 0589:112A 0000 C=BSS    S=_BSS           G=DGROUP  M=ISATTY     ACBP=48\r
+ 0589:112A 0000 C=BSS    S=_BSS           G=DGROUP  M=LONGTOA    ACBP=48\r
+ 0589:112A 0000 C=BSS    S=_BSS           G=DGROUP  M=LSEEK      ACBP=48\r
+ 0589:112A 000D C=BSS    S=_BSS           G=DGROUP  M=MKNAME     ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=READA      ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=SETUPIO    ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=UNLINK     ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=VPRINTER   ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=VRAM       ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=CORELEFT   ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=CRTINIT    ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=GETCH      ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=IOCTL      ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=KBHIT      ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=SETBLOCK   ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=CHMODA     ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=CLOSEA     ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=FLENGTH    ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=GETENV     ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=MEMCPY     ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=MOVEDATA   ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=OPEN       ACBP=48\r
+ 0589:1138 0000 C=BSS    S=_BSS           G=DGROUP  M=OPENA      ACBP=48\r
+ 0589:1138 0001 C=BSS    S=_BSS           G=DGROUP  M=PUTC       ACBP=48\r
+ 0589:113A 0000 C=BSS    S=_BSS           G=DGROUP  M=READ       ACBP=48\r
+ 0589:113A 0000 C=BSS    S=_BSS           G=DGROUP  M=STRCAT     ACBP=48\r
+ 0589:113A 0000 C=BSS    S=_BSS           G=DGROUP  M=STRCHR     ACBP=48\r
+ 0589:113A 0000 C=BSS    S=_BSS           G=DGROUP  M=STRCMP     ACBP=48\r
+ 0589:113A 0000 C=BSS    S=_BSS           G=DGROUP  M=STRCPY     ACBP=48\r
+ 0589:113A 0000 C=BSS    S=_BSS           G=DGROUP  M=STRLEN     ACBP=48\r
+ 0589:113A 0000 C=BSS    S=_BSS           G=DGROUP  M=WRITEA     ACBP=48\r
+ 0589:113A 0000 C=BSSEND S=_BSSEND        G=DGROUP  M=c0.ASM     ACBP=28\r
+ 069D:0000 0080 C=STACK  S=_STACK         G=(none)  M=c0.ASM     ACBP=74\r
 \r
   Address         Publics by Name\r
 \r
- 04FC:0000 idle  DATASEG@\r
+ 0589:0000 idle  DATASEG@\r
  0000:028B idle  DGROUP@\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:2C87 idle  F_LXLSH@\r
+ 0000:2CA8 idle  F_LXURSH@\r
+ 0000:2CC9 idle  F_PADD@\r
+ 0000:2D29 idle  F_PSBP@\r
+ 0000:2CF8 idle  F_PSUB@\r
+ 0000:028F idle  KITTENGETS\r
+ 0000:2C87 idle  LXLSH@\r
+ 0000:2CA8 idle  LXURSH@\r
+ 0000:2C84       N_LXLSH@\r
+ 0000:2CA5       N_LXURSH@\r
+ 0000:2CC6       N_PADD@\r
+ 0000:2F25       N_PCMP@\r
+ 0000:2D26       N_PSBP@\r
+ 0000:2CF5 idle  N_PSUB@\r
+ 0000:2CC9 idle  PADD@\r
+ 0000:2D29 idle  PSBP@\r
+ 0000:2CF8 idle  PSUB@\r
  0000:0276       _abort\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: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
+ 0589:10E4 idle  _aftersort\r
+ 0000:2B51 idle  _atexit\r
+ 0589:10E6 idle  _beforesort\r
+ 0000:0EE1 idle  _CAL_OptimizeNodes\r
+ 0000:04AF idle  _catread\r
+ 0000:0D6C       _CA_CloseDebug\r
+ 0000:0D79 idle  _CA_FarRead\r
+ 0000:0DB7 idle  _CA_FarWrite\r
+ 0000:0E5C       _CA_LoadFile\r
+ 0000:0D4B       _CA_OpenDebug\r
+ 0000:0DF5 idle  _CA_ReadFile\r
+ 0000:0F70       _CA_Shutdown\r
+ 0000:0F4F       _CA_Startup\r
+ 0000:2B75       _clock\r
+ 0000:4606       _close\r
+ 0000:3615       _coreleft\r
+ 0000:374B idle  _cprintf\r
+ 0000:078D idle  _db_fetch\r
+ 0000:07DD idle  _db_insert\r
+ 0589:10DE       _debughandle\r
+ 0589:1059       _directvideo\r
+ 0589:10DC idle  _drawcachebox\r
+ 0589:10A8       _environ\r
+ 0589:007F       _errno\r
+ 0000:2C49       _exit\r
+ 0000:3E96       _farcoreleft\r
+ 0000:3A6B       _farfree\r
+ 0000:3B7F       _farmalloc\r
+ 0000:3CE0 idle  _farrealloc\r
+ 0000:464A       _fclose\r
+ 0000:46FA       _fflush\r
+ 0000:47C0       _filelength\r
+ 0000:0FBC idle  _filesize\r
+ 0589:10D8 idle  _finishcachebox\r
+ 0000:4801       _flushall\r
+ 0000:4A0A       _fopen\r
+ 0000:4A3F       _fprintf\r
+ 0000:4F6A idle  _fputc\r
+ 0000:50F3 idle  _fputchar\r
+ 0000:3A6B       _free\r
+ 0000:4ADD       _fseek\r
+ 0000:4B59       _ftell\r
+ 0000:3EE6       _getch\r
+ 0000:3EFF idle  _getche\r
+ 0000:4C33       _getenv\r
+ 0000:3F3A       _gettext\r
+ 0000:0738 idle  _get_line\r
+ 0000:0B09 idle  _HC_CloseDebug\r
+ 0000:0AE8 idle  _HC_OpenDebug\r
+ 0589:10D6 idle  _heaphandle\r
+ 0000:3FE6       _ioctl\r
+ 0000:2D99       _isatty\r
+ 0000:4CA3 idle  _itoa\r
+ 0000:400F       _kbhit\r
+ 0000:0546 idle  _kittenclose\r
+ 0000:02DE idle  _kittenopen\r
+ 0000:0979 idle  _LargestFarFreeBlock\r
+ 0000:0886 idle  _LargestFreeBlock\r
+ 0000:2E4C       _lseek\r
+ 0000:4CEB idle  _ltoa\r
+ 0000:0B16       _main\r
+ 0000:3B75       _malloc\r
+ 0000:4D13       _memcpy\r
+ 0000:11BF idle  _MML_CheckForEMS\r
+ 0000:148D idle  _MML_CheckForXMS\r
+ 0000:1747 idle  _MML_ClearBlock\r
+ 0000:1204 idle  _MML_SetupEMS\r
+ 0000:14C4 idle  _MML_SetupXMS\r
+ 0000:130A idle  _MML_ShutdownEMS\r
+ 0000:156A idle  _MML_ShutdownXMS\r
+ 0000:159D idle  _MML_UseSpace\r
+ 0000:2A47 idle  _MM_BombOnError\r
+ 0000:24F4       _MM_DumpData\r
+ 0000:2AFA idle  _MM_FreeBlock\r
+ 0000:1F64       _MM_FreePtr\r
+ 0000:2A56 idle  _MM_GetNewBlock\r
+ 0000:1BEB       _MM_GetPtr\r
+ 0000:134B idle  _MM_MapEMS\r
+ 0000:13E4 idle  _MM_MapXEMS\r
+ 0000:273B       _MM_Report\r
+ 0000:2B4B idle  _MM_segude\r
+ 0000:2B40 idle  _MM_seguin\r
+ 0000:2105 idle  _MM_SetLock\r
+ 0000:203E idle  _MM_SetPurge\r
+ 0000:2348       _MM_ShowMemory\r
+ 0000:1B69       _MM_Shutdown\r
+ 0000:21D1 idle  _MM_SortMem\r
+ 0000:17AD       _MM_Startup\r
+ 0000:26A2 idle  _MM_TotalFree\r
+ 0000:2630 idle  _MM_UnusedMemory\r
+ 0000:4D37       _movedata\r
+ 0000:4021       _movetext\r
+ 0000:0551 idle  _mystrtoul\r
+ 0000:4D86       _open\r
+ 0000:4F35       _printf\r
+ 0000:101B idle  _printmeminfoline\r
+ 0000:05DE idle  _processEscChars\r
+ 0589:10E0 idle  _profilehandle\r
+ 0000:40BE       _putch\r
+ 0000:3F90       _puttext\r
+ 0000:53BF       _read\r
+ 0000:3CD9 idle  _realloc\r
+ 0000:454D       _setblock\r
+ 0000:53C2       _setvbuf\r
+ 0000:5511       _sprintf\r
+ 0000:5554       _strcat\r
+ 0000:5593       _strchr\r
+ 0000:55D0       _strcmp\r
+ 0000:5600       _strcpy\r
+ 0000:5629       _strdup\r
+ 0000:5669       _strlen\r
+ 0000:3027       _tolower\r
+ 0000:4CCE       _ultoa\r
+ 0000:3F1C idle  _ungetch\r
+ 0000:3053       _unlink\r
+ 0589:10DA idle  _updatecachebox\r
+ 0000:10ED       _US_CheckParm\r
+ 0000:5533 idle  _vsprintf\r
+ 0000:0F7D idle  _wait\r
+ 0000:45C7 idle  _wherex\r
+ 0000:45D6 idle  _wherey\r
+ 0000:580D       _write\r
+ 0589:10E2 idle  _XMSaddr\r
  0000:1000 idle  __AHINCR\r
  0000:000C idle  __AHSHIFT\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
+ 0589:1098       __argc\r
+ 0589:109A       __argv\r
+ 0589:0CB0       __atexitcnt\r
+ 0589:10E8       __atexittbl\r
+ 0000:3DCC       __brk\r
+ 0589:008B       __brklvl\r
+ 0589:006B       __C0argc\r
+ 0589:006D       __C0argv\r
+ 0000:382D idle  __c0crtinit\r
+ 0589:0071       __C0environ\r
+ 0589:1097       __cChar\r
+ 0000:2C6A idle  __cexit\r
+ 0589:1096       __cFlag\r
  0000:0166       __checknull\r
- 0000:3F90       __chmod\r
+ 0000:45E9       __chmod\r
  0000:0153       __cleanup\r
- 0000:3FD3       __close\r
- 0000:3014       __CPUTN\r
- 0000:3245 idle  __crtinit\r
- 04FC:0DA8       __ctype\r
+ 0000:462C       __close\r
+ 0000:0906 idle  __coreleft\r
+ 0000:3619       __CPUTN\r
+ 0000:384A idle  __crtinit\r
+ 0589:0CB2       __ctype\r
  0000:0000  Abs  __cvtfak\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:2C78 idle  __c_exit\r
+ 0589:0F78       __doserrno\r
+ 0000:2D87       __DOSERROR\r
+ 0589:0F7A idle  __dosErrorToSV\r
+ 0000:2BBE       __dos_getfileattr\r
+ 0000:2BDE idle  __dos_setfileattr\r
+ 0589:0075       __envLng\r
+ 0589:0077       __envseg\r
+ 0589:0079       __envSize\r
+ 0000:2C58       __exit\r
+ 0589:0DB4       __exitbuf\r
+ 0589:0DB6       __exitfopen\r
+ 0589:0DB8 idle  __exitopen\r
+ 0000:0A1B idle  __farcoreleft\r
+ 0589:0F74       __fmode\r
+ 0000:4F50 idle  __fputc\r
+ 0000:5106       __FPUTN\r
+ 0000:49C0 idle  __GETFP\r
+ 0589:0087       __heapbase\r
+ 0589:008F       __heaptop\r
+ 0589:005B idle  __Int0Vector\r
+ 0589:005F idle  __Int4Vector\r
+ 0589:0063 idle  __Int5Vector\r
+ 0589:0067 idle  __Int6Vector\r
+ 0000:2D4E       __IOERROR\r
+ 0589:0094 idle  __kitten_catalog\r
+ 0000:2DAA       __LONGTOA\r
+ 0000:2E75       __MKNAME\r
  0000:028D idle  __MMODEL\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
+ 0589:0F4A       __nfile\r
+ 0000:3EFF idle  __Ngetche\r
+ 0589:0F76       __notUmask\r
+ 0000:3F1C idle  __Nungetch\r
+ 0000:4EE6       __open\r
+ 0589:0F4C       __openfd\r
+ 0000:48F7 idle  __OPENFP\r
+ 0589:007D       __osmajor\r
+ 0589:007E idle  __osminor\r
+ 0589:007D idle  __osversion\r
+ 0589:007B       __psp\r
+ 0000:2F46       __read\r
+ 0000:40D5       __REALCVT\r
+ 0589:10B2       __RealCvtVector\r
  0000:01BC       __restorezero\r
- 0000:3806       __sbrk\r
- 04FC:11A6 idle  __ScanTodVector\r
- 0000:3C0A       __SCREENIO\r
- 0000:3CBD       __SCROLL\r
+ 0000:3E0B       __sbrk\r
+ 0589:10B4 idle  __ScanTodVector\r
+ 0000:420F       __SCREENIO\r
+ 0000:42C2       __SCROLL\r
  0000:0000  Abs  __setargv__\r
- 0000:2970       __setupio\r
- 04FC:0081       __StartTime\r
- 04FC:10D4       __stklen\r
- 0000:2FE0       __stpcpy\r
- 04FC:0EB0       __streams\r
+ 0000:0000 idle  __setenvp__\r
+ 0000:2F75       __setupio\r
+ 0589:0081       __StartTime\r
+ 0589:0FDE       __stklen\r
+ 0000:35E5       __stpcpy\r
+ 0589:0DBA       __streams\r
  0000:0167       __terminate\r
- 0000:28F8 idle  __TMPNAM\r
+ 0000:2ECE idle  __TMPNAM\r
  0000:0000 idle  __turboCrt\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
+ 0000:2E2C       __UTOA\r
+ 0000:424B       __VALIDATEXY\r
+ 0589:007D idle  __version\r
+ 0589:104A       __video\r
+ 0000:37A2       __VideoInt\r
+ 0000:3083       __VPRINTER\r
+ 0000:3546       __VPTR\r
+ 0000:356B       __VRAM\r
+ 0000:45BD       __wherexy\r
+ 0000:57D1       __write\r
+ 0589:1048       __wscroll\r
+ 0000:5810       __xfclose\r
+ 0000:584B       __xfflush\r
+ 0589:0085 idle  ___brklvl\r
+ 0000:392B idle  ___first\r
+ 0000:392D idle  ___last\r
+ 0000:52F4       ___read\r
+ 0000:392F idle  ___rover\r
+ 0000:5688       ___write\r
 \r
   Address         Publics by Value\r
 \r
  0000:0000  Abs  __setargv__\r
  0000:0000 idle  __turboCrt\r
  0000:0000  Abs  __cvtfak\r
+ 0000:0000 idle  __setenvp__\r
  0000:000C idle  __AHSHIFT\r
  0000:0153       __cleanup\r
  0000:0166       __checknull\r
@@ -475,224 +519,238 @@ Detailed map of segments
  0000:0276       _abort\r
  0000:028B idle  DGROUP@\r
  0000:028D idle  __MMODEL\r
- 0000:028F       _main\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:028F idle  KITTENGETS\r
+ 0000:02DE idle  _kittenopen\r
+ 0000:04AF idle  _catread\r
+ 0000:0546 idle  _kittenclose\r
+ 0000:0551 idle  _mystrtoul\r
+ 0000:05DE idle  _processEscChars\r
+ 0000:0738 idle  _get_line\r
+ 0000:078D idle  _db_fetch\r
+ 0000:07DD idle  _db_insert\r
+ 0000:0886 idle  _LargestFreeBlock\r
+ 0000:0906 idle  __coreleft\r
+ 0000:0979 idle  _LargestFarFreeBlock\r
+ 0000:0A1B idle  __farcoreleft\r
+ 0000:0AE8 idle  _HC_OpenDebug\r
+ 0000:0B09 idle  _HC_CloseDebug\r
+ 0000:0B16       _main\r
+ 0000:0D4B       _CA_OpenDebug\r
+ 0000:0D6C       _CA_CloseDebug\r
+ 0000:0D79 idle  _CA_FarRead\r
+ 0000:0DB7 idle  _CA_FarWrite\r
+ 0000:0DF5 idle  _CA_ReadFile\r
+ 0000:0E5C       _CA_LoadFile\r
+ 0000:0EE1 idle  _CAL_OptimizeNodes\r
+ 0000:0F4F       _CA_Startup\r
+ 0000:0F70       _CA_Shutdown\r
+ 0000:0F7D idle  _wait\r
+ 0000:0FBC idle  _filesize\r
  0000:1000 idle  __AHINCR\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
+ 0000:101B idle  _printmeminfoline\r
+ 0000:10ED       _US_CheckParm\r
+ 0000:11BF idle  _MML_CheckForEMS\r
+ 0000:1204 idle  _MML_SetupEMS\r
+ 0000:130A idle  _MML_ShutdownEMS\r
+ 0000:134B idle  _MM_MapEMS\r
+ 0000:13E4 idle  _MM_MapXEMS\r
+ 0000:148D idle  _MML_CheckForXMS\r
+ 0000:14C4 idle  _MML_SetupXMS\r
+ 0000:156A idle  _MML_ShutdownXMS\r
+ 0000:159D idle  _MML_UseSpace\r
+ 0000:1747 idle  _MML_ClearBlock\r
+ 0000:17AD       _MM_Startup\r
+ 0000:1B69       _MM_Shutdown\r
+ 0000:1BEB       _MM_GetPtr\r
+ 0000:1F64       _MM_FreePtr\r
+ 0000:203E idle  _MM_SetPurge\r
+ 0000:2105 idle  _MM_SetLock\r
+ 0000:21D1 idle  _MM_SortMem\r
+ 0000:2348       _MM_ShowMemory\r
+ 0000:24F4       _MM_DumpData\r
+ 0000:2630 idle  _MM_UnusedMemory\r
+ 0000:26A2 idle  _MM_TotalFree\r
+ 0000:273B       _MM_Report\r
+ 0000:2A47 idle  _MM_BombOnError\r
+ 0000:2A56 idle  _MM_GetNewBlock\r
+ 0000:2AFA idle  _MM_FreeBlock\r
+ 0000:2B40 idle  _MM_seguin\r
+ 0000:2B4B idle  _MM_segude\r
+ 0000:2B51 idle  _atexit\r
+ 0000:2B75       _clock\r
+ 0000:2BBE       __dos_getfileattr\r
+ 0000:2BDE idle  __dos_setfileattr\r
+ 0000:2C49       _exit\r
+ 0000:2C58       __exit\r
+ 0000:2C6A idle  __cexit\r
+ 0000:2C78 idle  __c_exit\r
+ 0000:2C84       N_LXLSH@\r
+ 0000:2C87 idle  LXLSH@\r
+ 0000:2C87 idle  F_LXLSH@\r
+ 0000:2CA5       N_LXURSH@\r
+ 0000:2CA8 idle  LXURSH@\r
+ 0000:2CA8 idle  F_LXURSH@\r
+ 0000:2CC6       N_PADD@\r
+ 0000:2CC9 idle  F_PADD@\r
+ 0000:2CC9 idle  PADD@\r
+ 0000:2CF5 idle  N_PSUB@\r
+ 0000:2CF8 idle  F_PSUB@\r
+ 0000:2CF8 idle  PSUB@\r
+ 0000:2D26       N_PSBP@\r
+ 0000:2D29 idle  PSBP@\r
+ 0000:2D29 idle  F_PSBP@\r
+ 0000:2D4E       __IOERROR\r
+ 0000:2D87       __DOSERROR\r
+ 0000:2D99       _isatty\r
+ 0000:2DAA       __LONGTOA\r
+ 0000:2E2C       __UTOA\r
+ 0000:2E4C       _lseek\r
+ 0000:2E75       __MKNAME\r
+ 0000:2ECE idle  __TMPNAM\r
+ 0000:2F25       N_PCMP@\r
+ 0000:2F46       __read\r
+ 0000:2F75       __setupio\r
+ 0000:3027       _tolower\r
+ 0000:3053       _unlink\r
+ 0000:3083       __VPRINTER\r
+ 0000:3546       __VPTR\r
+ 0000:356B       __VRAM\r
+ 0000:35E5       __stpcpy\r
+ 0000:3615       _coreleft\r
+ 0000:3619       __CPUTN\r
+ 0000:374B idle  _cprintf\r
+ 0000:37A2       __VideoInt\r
+ 0000:382D idle  __c0crtinit\r
+ 0000:384A idle  __crtinit\r
+ 0000:392B idle  ___first\r
+ 0000:392D idle  ___last\r
+ 0000:392F idle  ___rover\r
+ 0000:3A6B       _free\r
+ 0000:3A6B       _farfree\r
+ 0000:3B75       _malloc\r
+ 0000:3B7F       _farmalloc\r
+ 0000:3CD9 idle  _realloc\r
+ 0000:3CE0 idle  _farrealloc\r
+ 0000:3DCC       __brk\r
+ 0000:3E0B       __sbrk\r
+ 0000:3E96       _farcoreleft\r
+ 0000:3EE6       _getch\r
+ 0000:3EFF idle  __Ngetche\r
+ 0000:3EFF idle  _getche\r
+ 0000:3F1C idle  __Nungetch\r
+ 0000:3F1C idle  _ungetch\r
+ 0000:3F3A       _gettext\r
+ 0000:3F90       _puttext\r
+ 0000:3FE6       _ioctl\r
+ 0000:400F       _kbhit\r
+ 0000:4021       _movetext\r
+ 0000:40BE       _putch\r
+ 0000:40D5       __REALCVT\r
+ 0000:420F       __SCREENIO\r
+ 0000:424B       __VALIDATEXY\r
+ 0000:42C2       __SCROLL\r
+ 0000:454D       _setblock\r
+ 0000:45BD       __wherexy\r
+ 0000:45C7 idle  _wherex\r
+ 0000:45D6 idle  _wherey\r
+ 0000:45E9       __chmod\r
+ 0000:4606       _close\r
+ 0000:462C       __close\r
+ 0000:464A       _fclose\r
+ 0000:46FA       _fflush\r
+ 0000:47C0       _filelength\r
+ 0000:4801       _flushall\r
+ 0000:48F7 idle  __OPENFP\r
+ 0000:49C0 idle  __GETFP\r
+ 0000:4A0A       _fopen\r
+ 0000:4A3F       _fprintf\r
+ 0000:4ADD       _fseek\r
+ 0000:4B59       _ftell\r
+ 0000:4C33       _getenv\r
+ 0000:4CA3 idle  _itoa\r
+ 0000:4CCE       _ultoa\r
+ 0000:4CEB idle  _ltoa\r
+ 0000:4D13       _memcpy\r
+ 0000:4D37       _movedata\r
+ 0000:4D86       _open\r
+ 0000:4EE6       __open\r
+ 0000:4F35       _printf\r
+ 0000:4F50 idle  __fputc\r
+ 0000:4F6A idle  _fputc\r
+ 0000:50F3 idle  _fputchar\r
+ 0000:5106       __FPUTN\r
+ 0000:52F4       ___read\r
+ 0000:53BF       _read\r
+ 0000:53C2       _setvbuf\r
+ 0000:5511       _sprintf\r
+ 0000:5533 idle  _vsprintf\r
+ 0000:5554       _strcat\r
+ 0000:5593       _strchr\r
+ 0000:55D0       _strcmp\r
+ 0000:5600       _strcpy\r
+ 0000:5629       _strdup\r
+ 0000:5669       _strlen\r
+ 0000:5688       ___write\r
+ 0000:57D1       __write\r
+ 0000:580D       _write\r
+ 0000:5810       __xfclose\r
+ 0000:584B       __xfflush\r
+ 0589:0000 idle  DATASEG@\r
+ 0589:005B idle  __Int0Vector\r
+ 0589:005F idle  __Int4Vector\r
+ 0589:0063 idle  __Int5Vector\r
+ 0589:0067 idle  __Int6Vector\r
+ 0589:006B       __C0argc\r
+ 0589:006D       __C0argv\r
+ 0589:0071       __C0environ\r
+ 0589:0075       __envLng\r
+ 0589:0077       __envseg\r
+ 0589:0079       __envSize\r
+ 0589:007B       __psp\r
+ 0589:007D idle  __osversion\r
+ 0589:007D       __osmajor\r
+ 0589:007D idle  __version\r
+ 0589:007E idle  __osminor\r
+ 0589:007F       _errno\r
+ 0589:0081       __StartTime\r
+ 0589:0085 idle  ___brklvl\r
+ 0589:0087       __heapbase\r
+ 0589:008B       __brklvl\r
+ 0589:008F       __heaptop\r
+ 0589:0094 idle  __kitten_catalog\r
+ 0589:0CB0       __atexitcnt\r
+ 0589:0CB2       __ctype\r
+ 0589:0DB4       __exitbuf\r
+ 0589:0DB6       __exitfopen\r
+ 0589:0DB8 idle  __exitopen\r
+ 0589:0DBA       __streams\r
+ 0589:0F4A       __nfile\r
+ 0589:0F4C       __openfd\r
+ 0589:0F74       __fmode\r
+ 0589:0F76       __notUmask\r
+ 0589:0F78       __doserrno\r
+ 0589:0F7A idle  __dosErrorToSV\r
+ 0589:0FDE       __stklen\r
+ 0589:1048       __wscroll\r
+ 0589:104A       __video\r
+ 0589:1059       _directvideo\r
+ 0589:1096       __cFlag\r
+ 0589:1097       __cChar\r
+ 0589:1098       __argc\r
+ 0589:109A       __argv\r
+ 0589:10A8       _environ\r
+ 0589:10B2       __RealCvtVector\r
+ 0589:10B4 idle  __ScanTodVector\r
+ 0589:10D6 idle  _heaphandle\r
+ 0589:10D8 idle  _finishcachebox\r
+ 0589:10DA idle  _updatecachebox\r
+ 0589:10DC idle  _drawcachebox\r
+ 0589:10DE       _debughandle\r
+ 0589:10E0 idle  _profilehandle\r
+ 0589:10E2 idle  _XMSaddr\r
+ 0589:10E4 idle  _aftersort\r
+ 0589:10E6 idle  _beforesort\r
+ 0589:10E8       __atexittbl\r
 \r
 Program entry point at 0000:0000\r
 \r
index 13a00527053641a20e6501f9b8a3a231b7b2c284..752cc1cf98a5d24bdaf12de68c1b95402d65c37b 100644 (file)
Binary files a/16/exmmtest/EXMMTEST.PRJ and b/16/exmmtest/EXMMTEST.PRJ differ
diff --git a/16/exmmtest/HEAP.16 b/16/exmmtest/HEAP.16
new file mode 100644 (file)
index 0000000..b346451
--- /dev/null
@@ -0,0 +1,45 @@
+\r
+       == default ==\r
+\r
+  USED block at 1d1d0016 of size 136\r
+  USED block at 1d1d009e of size 66\r
+  FREE block at 1d1d00e0 of size 7966\r
+  USED block at 1d1d1ffe of size 20\r
+  FREE block at 1d1d2012 of size 8170\r
+OK - end of heap\r
+\r
+       == near ==\r
+\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+OK - end of heap\r
+\r
+       == far ==\r
+\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+  USED block at 0 of size 0\r
+OK - end of heap\r
+\r
+Memory Type         Total      Used       Free\r
+----------------  --------   --------   --------\r
+Default                   16358        222     16136\r
+Near              31318        880     30438\r
+Far               16358        222     16136\r
+----------------  --------   --------   --------\r
+coreleft = 30434\r
+farcoreleft = 38182\r
+GetFreeSize = 7768\r
+GetNearFreeSize = 30438\r
+GetFarFreeSize = 7768\r
+memavl = 30434\r
+stackavail = 17107\r
diff --git a/16/exmmtest/TC0000.SWP b/16/exmmtest/TC0000.SWP
new file mode 100644 (file)
index 0000000..200380e
Binary files /dev/null and b/16/exmmtest/TC0000.SWP differ
index e4f56528c2c1ef3a58d1b7c66f82aa56b9998703..c93e902afeaaef45a2fae1f3513416f65848231d 100644 (file)
@@ -48,7 +48,7 @@ main(int argc, char *argv[])
        void __based(sega)* bigbuffer;\r
 #endif\r
 #ifdef __BORLANDC__\r
-       void memptr* bigbuffer;\r
+       memptr bigbuffer;\r
 #endif\r
 #ifdef FILERL\r
        char *bakapee;\r
@@ -72,7 +72,7 @@ main(int argc, char *argv[])
        else bakapee = "data/koishi~.pcx";\r
 #endif\r
 \r
-       textInit();\r
+//     textInit();\r
 \r
        /* setup camera and screen~ */\r
        //bug!!!\r
@@ -108,7 +108,9 @@ main(int argc, char *argv[])
                baka=0;\r
 //     close(bakapeehandle);\r
        //hmm functions in cache system use the buffered stuff\r
+#ifdef __WATCOMC__\r
        printf("size of big buffer~=%u\n", _bmsize(sega, bigbuffer));\r
+#endif\r
 #endif\r
        printf("dark purple = purgable\n");\r
        printf("medium blue = non purgable\n");\r
@@ -144,7 +146,9 @@ main(int argc, char *argv[])
        printf("Total far free:                 %lu\n", (dword)(GetFarFreeSize()));\r
        getch();*/\r
        printf("\n");\r
+#ifdef __WATCOMC__\r
        heapdump();\r
+#endif\r
        //printf("core left:                    %lu\n", (dword)_coreleft());\r
        //printf("far core left:                        %lu\n", (dword)_farcoreleft());\r
        //printf("based core left:                      %lu\n", (dword)_basedcoreleft());\r
index f74a5710a4349999c819f619c959e02f890c7f2d..5eb2d16bdd6231cc1e1e0baa98546fde118d0df8 100644 (file)
@@ -218,22 +218,21 @@ void CAL_GetGrChunkLength (int chunk)
 boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm)\r
 {\r
        boolean flag;\r
-       /*dword fat=0;
-       word segm=0;
+       /*dword fat=0;\r
+       word segm=0;\r
        //if(mm->EMSVer<0x40)\r
-       if(length>0xfffflu)
-       {
-               printf("File is a fat bakapee\n");
-               segm=(length%0xfffflu)-1;
-               fat=segm*0xfffflu;
+       if(length>0xfffflu)\r
+       {\r
+               printf("File is a fat bakapee\n");\r
+               segm=(length%0xfffflu)-1;\r
+               fat=segm*0xfffflu;\r
                length-=fat;\r
 //             printf("CA_FarRead doesn't support 64K reads yet!\n");\r
-       }
-
-       if(!fat&&!segm)
+       }\r
+\r
+       if(!fat&&!segm)\r
        {*/\r
-               __asm\r
-               {\r
+               __asm {\r
                        push    ds\r
                        mov     bx,[handle]\r
                        mov     cx,[WORD PTR length]\r
@@ -246,17 +245,34 @@ boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm)
                        mov     errno,ax\r
                        mov     flag,0\r
                        jmp End\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 good:\r
+#ifdef __BORLANDC__\r
+               __asm {\r
+#endif\r
                        cmp     ax,[WORD PTR length]\r
                        je      done\r
 //                     errno = EINVFMT;                        // user manager knows this is bad read\r
                        mov     flag,0\r
                        jmp End\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 done:\r
+#ifdef __BORLANDC__\r
+               __asm {\r
+#endif\r
                        mov     flag,1\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 End:\r
+#ifdef __WATCOMC__\r
                }\r
-       return flag;
+#endif\r
+       return flag;\r
        //}else return 0;//todo: EXPAND!!!\r
 }\r
 \r
@@ -274,22 +290,21 @@ End:
 boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm)\r
 {\r
        boolean flag;\r
-       /*dword fat=0;
-       word segm=0;
+       /*dword fat=0;\r
+       word segm=0;\r
        //if(mm->EMSVer<0x40)\r
-       if(length>0xfffflu)
-       {
-               printf("File is a fat bakapee\n");
-               segm=(length%0xfffflu)-1;
-               fat=segm*0xfffflu;
+       if(length>0xfffflu)\r
+       {\r
+               printf("File is a fat bakapee\n");\r
+               segm=(length%0xfffflu)-1;\r
+               fat=segm*0xfffflu;\r
                length-=fat;\r
 //             printf("CA_FarRead doesn't support 64K reads yet!\n");\r
        }\r
-
-       if(!fat&&!segm)
+\r
+       if(!fat&&!segm)\r
        {*/\r
-               __asm\r
-               {\r
+               __asm {\r
                        push    ds\r
                        mov     bx,[handle]\r
                        mov     cx,[WORD PTR length]\r
@@ -302,17 +317,34 @@ boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm)
                        mov     errno,ax\r
                        mov flag,0\r
                        jmp End\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 good:\r
+#ifdef __BORLANDC__\r
+               __asm {\r
+#endif\r
                        cmp     ax,[WORD PTR length]\r
                        je      done\r
                        //errno = ENOMEM;                               // user manager knows this is bad write\r
                        mov     flag,0\r
                        jmp End\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 done:\r
+#ifdef __BORLANDC__\r
+               __asm {\r
+#endif\r
                        mov     flag,1\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 End:\r
+#ifdef __WATCOMC__\r
                }\r
-       return flag;
+#endif\r
+       return flag;\r
        //}else return 0;\r
 }\r
 \r
@@ -330,7 +362,7 @@ End:
 boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)\r
 {\r
        int handle;\r
-       dword size;
+       dword size;\r
        //long size;\r
 \r
        if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
@@ -361,7 +393,7 @@ boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)
 boolean CA_LoadFile(char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi)\r
 {\r
        int handle;\r
-       dword size;
+       dword size;\r
        //long size;\r
 \r
        if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
index f9f4948c08c4d987e8e926f87affd1c78d7f27d2..df9602d8542e10e39bab97ff7146978caf0c7756 100644 (file)
@@ -33,23 +33,48 @@ void __near* LargestFreeBlock(size_t* Size)
        void __near* p;
 
        s0 = ~(size_t)0 ^ (~(size_t)0 >> 1);
+#ifdef __BORLANDC__
+       while (s0 && (p = malloc(s0)) == NULL)
+#endif
+#ifdef __WATCOMC__
        while (s0 && (p = _nmalloc(s0)) == NULL)
+#endif
                s0 >>= 1;
 
        if (p)
+#ifdef __BORLANDC__
+               free(p);
+#endif
+#ifdef __WATCOMC__
                _nfree(p);
+#endif
 
        s1 = s0 >> 1;
        while (s1)
        {
+#ifdef __BORLANDC__
+               if ((p = malloc(s0 + s1)) != NULL)
+#endif
+#ifdef __WATCOMC__
                if ((p = _nmalloc(s0 + s1)) != NULL)
+#endif
                {
                        s0 += s1;
+#ifdef __BORLANDC__
+                       free(p);
+#endif
+#ifdef __WATCOMC__
                        _nfree(p);
+#endif
                }
        s1 >>= 1;
        }
+#ifdef __BORLANDC__
+       while (s0 && (p = malloc(s0)) == NULL)
+#endif
+#ifdef __WATCOMC__
        while (s0 && (p = _nmalloc(s0)) == NULL)
+#endif
                s0 ^= s0 & -s0;
 
        *Size = s0;
@@ -68,7 +93,12 @@ size_t _coreleft(void)
                if (largest < sizeof(void __near*))
                {
                        if (p != NULL)
+#ifdef __BORLANDC__
+                       free(p);
+#endif
+#ifdef __WATCOMC__
                        _nfree(p);
+#endif
                        break;
                }
                *(void __near* __near*)p = NULL;
@@ -84,7 +114,12 @@ size_t _coreleft(void)
        while (pFirst != NULL)
        {
                void __near* p = *(void __near* __near*)pFirst;
+#ifdef __BORLANDC__
+               free(pFirst);
+#endif
+#ifdef __WATCOMC__
                _nfree(pFirst);
+#endif
                pFirst = p;
        }
        return total;
@@ -153,6 +188,7 @@ size_t _farcoreleft(void)
        return total;
 }
 
+#ifdef __WATCOMC__
 void huge* LargestHugeFreeBlock(size_t* Size)
 {
        size_t s0, s1;
@@ -367,7 +403,7 @@ void heapdump(void)
                write(heaphandle,scratch,strlen(scratch));
        }
        heapstat(heap_status, &scratch);
-       
+
        //near
        strcpy(scratch,"\n      == near ==\n\n");
        write(heaphandle,scratch,strlen(scratch));
@@ -432,7 +468,7 @@ void heapstat(int heap_status, byte *str)
                break;
                case _HEAPEMPTY:
                        strcpy((str),"OK - heap is empty\n");
-                       
+
                break;
                case _HEAPBADBEGIN:
                        strcpy((str),"ERROR - heap is damaged\n");
@@ -454,7 +490,7 @@ void heapstat0(int heap_status)
                break;
                case _HEAPEMPTY:
                        //printf("OK - heap is empty\n");
-                       
+
                break;
                case _HEAPBADBEGIN:
                        printf("ERROR - heap is damaged\n");
@@ -466,7 +502,7 @@ void heapstat0(int heap_status)
                        printf("ERROR - bad node in heap\n");
        }
 }
-
+#endif
 /*
 ============================
 =
index df0b31c7bdc7c1a061eb1736799dba9ae578bf43..7dd538669d6bd04c5be8dc215063a06801413684 100644 (file)
@@ -1,27 +1,27 @@
-/* Project 16 Source Code~
- * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669
- *
- * This file is part of Project 16.
- *
- * Project 16 is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Project 16 is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>, or
- * write to the Free Software Foundation, Inc., 51 Franklin Street,
- * Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include "src/lib/16_head.h"
-
+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669\r
+ *\r
+ * This file is part of Project 16.\r
+ *\r
+ * Project 16 is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Project 16 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\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
+ * Fifth Floor, Boston, MA 02110-1301 USA.\r
+ *\r
+ */\r
+\r
+#include "src/lib/16_head.h"\r
+\r
 /* Function: Wait **********************************************************\r
 *\r
 *     Parameters:    wait - time in microseconds\r
@@ -36,9 +36,9 @@ void wait(clock_t wait){
 \r
        goal = wait + clock();\r
        while((goal > clock()) && !kbhit()) ;\r
-} /* End of wait */
-
-long int
+} /* End of wait */\r
+\r
+long int\r
 filesize(FILE *fp)\r
 {\r
        long int save_pos, size_of_file;\r
@@ -48,63 +48,15 @@ filesize(FILE *fp)
        size_of_file = ftell(fp);\r
        fseek(fp, save_pos, SEEK_SET);\r
        return(size_of_file);\r
-}
-
-void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free)
-{
-       byte str[64];
-       strcat(strc,pee); strcat(strc,"            "); ultoa((dword)h_total,str,10); strcat(strc,str); strcat(strc,"    "); ultoa((dword)h_used,str,10); strcat(strc,str); strcat(strc,"        "); ultoa((dword)h_free,str,10); strcat(strc,str);
-       strcat(strc,"\n");
-}
-
-void print_normal_entry(char *text, dword total, dword used, dword free, byte *str)
-{
-       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);
-}
-
+}\r
+\r
+void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free)\r
+{\r
+       byte str[64];\r
+       strcat(strc,pee); strcat(strc,"            "); ultoa((dword)h_total,str,10); strcat(strc,str); strcat(strc,"    "); ultoa((dword)h_used,str,10); strcat(strc,str); strcat(strc,"        "); ultoa((dword)h_free,str,10); strcat(strc,str);\r
+       strcat(strc,"\n");\r
+}\r
+\r
 ///////////////////////////////////////////////////////////////////////////\r
 //\r
 //      US_CheckParm() - checks to see if a string matches one of a set of\r
@@ -138,8 +90,8 @@ US_CheckParm(char *parm,char **strings)
                }\r
        }\r
        return(-1);\r
-}
-
+}\r
+\r
 /*\r
 ==========================\r
 =\r
@@ -201,4 +153,4 @@ US_CheckParm(char *parm,char **strings)
 #endif\r
 \r
        exit(exit_code);\r
-}*/
+}*/\r
index f74e8823435e9566d01110e52989de664cfd3c33..e6e590b425a787167dc33155ae5f1e8bb3fb794a 100644 (file)
 #define _LIBHEAD_H_\r
 #include <dos.h>\r
 #include <stdio.h>\r
+#include <stdlib.h>\r
 #include <conio.h> // just for wait\r
 #include <time.h> // just for wait\r
-#include <stdlib.h>\r
 #include <malloc.h>\r
 #include <ctype.h>\r
 #include <fcntl.h>\r
+#include <io.h>\r
 #include <sys/stat.h>\r
 #include <mem.h>\r
+#include <string.h>\r
 #ifdef __WATCOMC__\r
 #include <i86.h>\r
 #include <unistd.h>\r
 #include <alloca.h>\r
-#include "src/lib/nyan/kitten.h"\r
 #endif\r
+#include "src/lib/nyan/kitten.h"\r
 #include "src/lib/types.h"\r
 \r
 //0000 test type def wwww\r
-struct list {\r
+/*struct list {\r
        struct list __based(__self) *next;\r
        int         value;\r
-};\r
+};*/\r
 \r
 /* Control codes for all keys on the keyboard */\r
 //here temperarly\r
@@ -186,8 +188,6 @@ void wait(clock_t wait);
 \r
 long int filesize(FILE *fp);\r
 void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free);\r
-void print_normal_entry(char *text, dword total, dword used, dword free, byte *str);\r
-void convert(const char *format, dword num);\r
 int US_CheckParm(char *parm,char **strings);\r
 \r
 extern void CA_OpenDebug (void);\r
index ba0b8bfed783062ca394fa68fc0a0103f15c664f..90439b1d18f860bc644f0ad33b7da85226d38a56 100644 (file)
@@ -120,13 +120,24 @@ boolean MML_CheckForEMS(void)
                //
                mov     emmcfems,1
                jmp End
+#ifdef __BORLANDC__
+       }
+#endif
                error:
+#ifdef __BORLANDC__
+       __asm {
+#endif
                //
                // EMS is bad
                //
                mov     emmcfems,0
+#ifdef __BORLANDC__
+       }
+#endif
                End:
+#ifdef __WATCOMC__
        }
+#endif
        return(emmcfems);
 }
 
@@ -150,8 +161,7 @@ byte MML_SetupEMS(mminfo_t *mm)
        unsigned        totalEMSpages,freeEMSpages,EMSpageframe,EMSpagesmapped,EMShandle;
        totalEMSpages = freeEMSpages = EMSpageframe = EMSpagesmapped = 0;
 
-       __asm
-               {
+       __asm {
                mov     ah,EMS_STATUS
                int     EMS_INT                                         // make sure EMS hardware is present
                or      ah,ah
@@ -187,13 +197,23 @@ byte MML_SetupEMS(mminfo_t *mm)
                jle     getpages
                mov     bx,[freeEMSpages]
                jmp     getpages
-
-low:
+#ifdef __BORLANDC__
+       }
+#endif
+       low:
+#ifdef __BORLANDC__
+       __asm {
+#endif
                cmp     bx,4
                jle     getpages                                        // there is only 1,2,3,or 4 pages
                mov     bx,4                                            // we can't use more than 4 pages
-
-getpages:
+#ifdef __BORLANDC__
+       }
+#endif
+       getpages:
+#ifdef __BORLANDC__
+       __asm {
+#endif
                mov     [EMSpagesmapped],bx
                mov     ah,EMS_ALLOCPAGES                       // allocate up to 64k of EMS
                int     EMS_INT
@@ -201,19 +221,30 @@ getpages:
                jnz     error
                mov     [EMShandle],dx
                jmp End
-error:
+#ifdef __BORLANDC__
+       }
+#endif
+       error:
+#ifdef __BORLANDC__
+       __asm {
+#endif
                mov     err,ah
                mov     errorflag,1
                jmp End
+#ifdef __BORLANDC__
+       }
+#endif
 noEMS:
 End:
+#ifdef __WATCOMC__
        }
+#endif
        if(errorflag==true)
        {
                //err = CPURegs.h.ah;
                strcpy(str,"MM_SetupEMS: EMS error ");
                //itoa(err,str2,16);
-               MM_EMSerr(&str, err);
+               MM_EMSerr(str, err);
                printf("%s\n",str);
                return err;
        }
@@ -242,16 +273,20 @@ void MML_ShutdownEMS(mminfo_t *mm)
 
        if(!EMShandle)
                return;
-       __asm
-       {
+       __asm {
                mov     ah,EMS_FREEPAGES
                mov     dx,[EMShandle]
                int     EMS_INT
                or      ah,ah
                jz      ok
                mov     errorflag,1
+#ifdef __BORLANDC__
+       }
+#endif
                ok:
+#ifdef __WATCOMC__
        }
+#endif
        if(errorflag==true) printf("MML_ShutdownEMS: Error freeing EMS!\n");    //++++ add something
 }
 
@@ -278,8 +313,7 @@ byte MM_MapEMS(mminfo_t *mm, mminfotype *mmi)
 
        for (i=0;i<4/*MAPPAGES*/;i++)
        {
-               __asm
-               {
+               __asm {
                        mov     ah,EMS_MAPPAGE
                        mov     bx,[i]                  // logical page
                        mov     al,bl                   // physical page
@@ -288,11 +322,22 @@ byte MM_MapEMS(mminfo_t *mm, mminfotype *mmi)
                        or      ah,ah
                        jnz     error
                        jmp End
+#ifdef __BORLANDC__
+               }
+#endif
                        error:
+#ifdef __BORLANDC__
+               __asm {
+#endif
                        mov     err,ah
                        mov     errorflag,1
+#ifdef __BORLANDC__
+               }
+#endif
                        End:
+#ifdef __WATCOMC__
                }
+#endif
                if(errorflag==true)
                {
                        //err = CPURegs.h.ah;
@@ -344,8 +389,7 @@ byte MM_MapXEMS(mminfo_t *mm, mminfotype *mmi)
 
        for (i=0;i<MAPPAGES;i++)
        {
-               __asm
-               {
+               __asm {
                        mov     ah,EMS_MAPXPAGE
                        mov     cx,[i]                  // logical page
                        mov     al,bl                   // physical page
@@ -354,18 +398,29 @@ byte MM_MapXEMS(mminfo_t *mm, mminfotype *mmi)
                        or      ah,ah
                        jnz     error
                        jmp End
+#ifdef __BORLANDC__
+               }
+#endif
                        error:
+#ifdef __BORLANDC__
+               __asm {
+#endif
                        mov     err,ah
                        mov     errorflag,1
+#ifdef __BORLANDC__
+               }
+#endif
                        End:
+#ifdef __WATCOMC__
                }
+#endif
                if(errorflag==true)
                {
                        //err = CPURegs.h.ah;
                        //strcpy(str,"MM_MapXEMS: EMS error 0x");
                        strcpy(str,"MM_MapXEMS: EMS error ");
                        //itoa(err,str2,16);
-                       MM_EMSerr(&str, err);
+                       MM_EMSerr(str, err);
                        printf("%s\n",str);
                        //printf("%s%x\n",str, err);
                        //printf("FACK! %x\n", err);
@@ -393,15 +448,19 @@ boolean MML_CheckForXMS(mminfo_t *mm)
        boolean errorflag=false;
        mm->numUMBs = 0;
 
-       __asm
-       {
+       __asm {
                mov     ax,0x4300
                int     0x2f                            // query status of installed diver
                cmp     al,0x80
                je      good
                mov     errorflag,1
+#ifdef __BORLANDC__
+       }
+#endif
                good:
+#ifdef __WATCOMC__
        }
+#endif
        if(errorflag==true) return false;
        else return true;
 }
@@ -422,8 +481,7 @@ void MML_SetupXMS(mminfo_t *mm, mminfotype *mmi)
        unsigned        base,size;
 
 getmemory:
-       __asm
-       {
+       __asm {
                mov     ax,0x4310
                int     0x2f
                mov     [WORD PTR XMSaddr],bx
@@ -443,12 +501,22 @@ getmemory:
                call    [DWORD PTR XMSaddr]             // DX holds largest available UMB
                or      ax,ax
                jz      done                                            // another error...
-
-gotone:
+#ifdef __BORLANDC__
+       }
+#endif
+               gotone:
+#ifdef __BORLANDC__
+       __asm {
+#endif
                mov     [base],bx
                mov     [size],dx
-done:
+#ifdef __BORLANDC__
        }
+#endif
+               done:
+#ifdef __WATCOMC__
+       }
+#endif
        printf("base=%u ", base); printf("size=%u\n", size);
        MML_UseSpace(base,size, mm);
        mmi->XMSmem += size*16;
@@ -475,8 +543,7 @@ void MML_ShutdownXMS(mminfo_t *mm)
        for (i=0;i<mm->numUMBs;i++)
        {
                base = mm->UMBbase[i];
-               __asm
-               {
+               __asm {
                        mov     ah,XMS_FREEUMB
                        mov     dx,[base]
                        call    [DWORD PTR XMSaddr]
@@ -672,27 +739,36 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi)
 //
 // get all available near conventional memory segments
 //
-//---- length=coreleft();
-       printf("                nearheap making!\n");
+//     printf("                nearheap making!\n");
+#ifdef __WATCOMC__
        _nheapgrow();
        length=(dword)_memmax();//(dword)GetFreeSize();
        start = (void huge *)(mm->nearheap = _nmalloc(length));
+#endif
+#ifdef __BORLANDC__
+       length=coreleft();
+       start = (void huge *)(mm->nearheap = malloc(length));
+#endif
        length -= 16-(FP_OFF(start)&15);
        length -= SAVENEARHEAP;
        seglength = length / 16;                        // now in paragraphs
        segstart = FP_SEG(start)+(FP_OFF(start)+15)/16;
        MML_UseSpace(segstart,seglength, mm);
        mmi->nearheap = length;
-       printf("start=%FP       segstart=%X     seglen=%lu      len=%lu\n", start, segstart, seglength, length);
+       printf("start=%Fp       segstart=%x     seglen=%l       len=%l\n", start, segstart, seglength, length);
        //heapdump();
 
 //
 // get all available far conventional memory segments
 //
-//---- length=farcoreleft();
-       printf("                farheap making!\n");
+//     printf("                farheap making!\n");
+#ifdef __WATCOMC__
        _fheapgrow();
        length=(dword)GetFarFreeSize();//0xffffUL*4UL;
+#endif
+#ifdef __BORLANDC__
+       length=farcoreleft();
+#endif
        //start = mm->farheap = halloc(length, 1);
        start = mm->farheap = _fmalloc(length);
        length -= 16-(FP_OFF(start)&15);
@@ -701,7 +777,7 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi)
        segstart = FP_SEG(start)+(FP_OFF(start)+15)/16;
        MML_UseSpace(segstart,seglength, mm);
        mmi->farheap = length;
-       printf("start=%FP       segstart=%X     seglen=%lu      len=%lu\n", start, segstart, seglength, length);
+       printf("start=%Fp       segstart=%x     seglen=%l       len=%l\n", start, segstart, seglength, length);
        //heapdump();
 
        mmi->mainmem = mmi->nearheap + mmi->farheap;
@@ -716,9 +792,23 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi)
 //printf("             EMS1\n");
 //printf("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");  //bug!
        mmi->EMSmem = 0;
-       for(i = 1;i < __argc;i++)
+       for(i = 1;i <
+#ifdef __WATCOMC__
+       __argc
+#endif
+#ifdef __BORLANDC__
+       _argc
+#endif
+       ;i++)
        {
-               if(US_CheckParm(__argv[i],ParmStringsexmm) == 0)
+               if(US_CheckParm(
+#ifdef __WATCOMC__
+       __argv[i]
+#endif
+#ifdef __BORLANDC__
+       _argv[i]
+#endif
+                       ,ParmStringsexmm) == 0)
                        goto emsskip;                           // param NOEMS
        }
 //printf("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");  //bug!
@@ -747,9 +837,23 @@ goto xmsskip;
 //
 emsskip:
        mmi->XMSmem = 0;
-       for(i = 1;i < __argc;i++)
+       for(i = 1;i <
+#ifdef __WATCOMC__
+       __argc
+#endif
+#ifdef __BORLANDC__
+       _argc
+#endif
+       ;i++)
        {
-               if(US_CheckParm(__argv[i],ParmStringsexmm) == 0)
+               if(US_CheckParm(
+#ifdef __WATCOMC__
+       __argv[i]
+#endif
+#ifdef __BORLANDC__
+       _argv[i]
+#endif
+                       ,ParmStringsexmm) == 0)
                        goto xmsskip;                           // param NOXMS
        }
 //printf("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");  //bug!
@@ -787,7 +891,12 @@ void MM_Shutdown(mminfo_t *mm)
                return;
 
        _ffree(mm->farheap);    printf("                far freed\n");
+#ifdef __WATCOMC__
        _nfree(mm->nearheap);   printf("                near freed\n");
+#endif
+#ifdef __BORLANDC__
+       free(mm->nearheap);     printf("                near freed\n");
+#endif
        if(MML_CheckForEMS()){ MML_ShutdownEMS(mm); printf("            EMS freed\n"); }
        if(MML_CheckForXMS(mm)){ MML_ShutdownXMS(mm); printf("          XMS freed\n"); }
 }
@@ -898,7 +1007,9 @@ printf("\n");
 
        if (mm->bombonerror)
        {
+#ifdef __WATCOMC__
                heapdump();
+#endif
                printf(OUT_OF_MEM_MSG,(size-mmi->nearheap));
                printf("for stability reasons the program will shut down! wwww\n");
                printf("                endid=%u\n",(mm->endid));
@@ -1151,9 +1262,10 @@ void MM_SortMem(mminfo_t *mm)
 void MM_ShowMemory(/*page_t *page, */mminfo_t *mm)
 {
        mmblocktype huge *scan;
-       word color,temp;
+//++++ word color;
+       word temp;
        long    end,owner;
-       word chx,chy;
+//++++ word chx,chy;
        byte    scratch[160],str[16];
 
 //**** VW_SetDefaultColors();
@@ -1168,17 +1280,17 @@ void MM_ShowMemory(/*page_t *page, */mminfo_t *mm)
 
 CA_OpenDebug ();
 
-       chx=0;
-       chy=0;
+//++++ chx=0;
+//++++ chy=0;
 
        while(scan)
        {
-               if(scan->attributes & PURGEBITS)
+/*++++         if(scan->attributes & PURGEBITS)
                        color = 5;              // dark purple = purgable
                else
                        color = 9;              // medium blue = non purgable
                if(scan->attributes & LOCKBIT)
-                       color = 12;             // red = locked
+                       color = 12;             // red = locked*/
                if(scan->start<=end)
                {
                        //printf(");
@@ -1187,8 +1299,8 @@ CA_OpenDebug ();
                        return;
                }
                end = scan->start+scan->length-1;
-               chy = scan->start/320;
-               chx = scan->start%320;
+//++++         chy = scan->start/320;
+//++++         chx = scan->start%320;
                                //modexhlin(page, scan->start, (unsigned)end, chy, color);
                                //for(chx=scan->start;chx+4>=(word)end;chx+=4)
                                //{
diff --git a/16/exmmtest/src/lib/nyan/kitten.c b/16/exmmtest/src/lib/nyan/kitten.c
new file mode 100644 (file)
index 0000000..4e501de
--- /dev/null
@@ -0,0 +1,615 @@
+\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 <sys/stat.h>\r
+#include <io.h>\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/16/exmmtest/src/lib/nyan/kitten.h b/16/exmmtest/src/lib/nyan/kitten.h
new file mode 100644 (file)
index 0000000..2cec22f
--- /dev/null
@@ -0,0 +1,73 @@
+/* $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
+\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 f21d78761fc07db166173f1303ce113d36752a63..25791ee7792d1d9fcdb5c677846678cdd000ecb5 100644 (file)
Binary files a/exmmtest.exe and b/exmmtest.exe differ
index b2f4d6ffcd234554a13b59b5fbe054b2e405a95c..803e7d68ccf1d65df7f07019965b0d7ab8726b03 100644 (file)
Binary files a/inputest.exe and b/inputest.exe differ
index 6cca691a1c375a0d7ede96ef5a5cfa35b1bb052f..f470820e5d6449a4b61bc491552dc740ad47e580 100644 (file)
--- a/makefile
+++ b/makefile
@@ -308,4 +308,5 @@ clean: .symbolic
        @$(COPYCOMMAND) $(SRCLIB)16_head.* $(EXMMTESTDIR)$(SRCLIB)
        @$(COPYCOMMAND) $(SRCLIB)16_ca.* $(EXMMTESTDIR)$(SRCLIB)
        @$(COPYCOMMAND) $(SRCLIB)16_hc.* $(EXMMTESTDIR)$(SRCLIB)
-       @$(COPYCOMMAND) $(SRCLIB)types.h* $(EXMMTESTDIR)$(SRCLIB)
+       @$(COPYCOMMAND) $(SRCLIB)types.h $(EXMMTESTDIR)$(SRCLIB)
+       @$(COPYCOMMAND) $(NYANLIB)* $(EXMMTESTDIR)$(NYANLIB)
index bd999b9e474aab07b71a8a8ff627dd74fa1959b7..a1a636ad2a85c98859964bb700c3960234792e76 100644 (file)
Binary files a/scroll.exe and b/scroll.exe differ
index f45d964c32c32f140dfc8b61db31ef7c08275eb0..68c1dc9d5fea4e8ac705a8b6a614a6c0dc68af10 100644 (file)
Binary files a/sountest.exe and b/sountest.exe differ
index e4f56528c2c1ef3a58d1b7c66f82aa56b9998703..c93e902afeaaef45a2fae1f3513416f65848231d 100644 (file)
@@ -48,7 +48,7 @@ main(int argc, char *argv[])
        void __based(sega)* bigbuffer;\r
 #endif\r
 #ifdef __BORLANDC__\r
-       void memptr* bigbuffer;\r
+       memptr bigbuffer;\r
 #endif\r
 #ifdef FILERL\r
        char *bakapee;\r
@@ -72,7 +72,7 @@ main(int argc, char *argv[])
        else bakapee = "data/koishi~.pcx";\r
 #endif\r
 \r
-       textInit();\r
+//     textInit();\r
 \r
        /* setup camera and screen~ */\r
        //bug!!!\r
@@ -108,7 +108,9 @@ main(int argc, char *argv[])
                baka=0;\r
 //     close(bakapeehandle);\r
        //hmm functions in cache system use the buffered stuff\r
+#ifdef __WATCOMC__\r
        printf("size of big buffer~=%u\n", _bmsize(sega, bigbuffer));\r
+#endif\r
 #endif\r
        printf("dark purple = purgable\n");\r
        printf("medium blue = non purgable\n");\r
@@ -144,7 +146,9 @@ main(int argc, char *argv[])
        printf("Total far free:                 %lu\n", (dword)(GetFarFreeSize()));\r
        getch();*/\r
        printf("\n");\r
+#ifdef __WATCOMC__\r
        heapdump();\r
+#endif\r
        //printf("core left:                    %lu\n", (dword)_coreleft());\r
        //printf("far core left:                        %lu\n", (dword)_farcoreleft());\r
        //printf("based core left:                      %lu\n", (dword)_basedcoreleft());\r
index f74a5710a4349999c819f619c959e02f890c7f2d..5eb2d16bdd6231cc1e1e0baa98546fde118d0df8 100644 (file)
@@ -218,22 +218,21 @@ void CAL_GetGrChunkLength (int chunk)
 boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm)\r
 {\r
        boolean flag;\r
-       /*dword fat=0;
-       word segm=0;
+       /*dword fat=0;\r
+       word segm=0;\r
        //if(mm->EMSVer<0x40)\r
-       if(length>0xfffflu)
-       {
-               printf("File is a fat bakapee\n");
-               segm=(length%0xfffflu)-1;
-               fat=segm*0xfffflu;
+       if(length>0xfffflu)\r
+       {\r
+               printf("File is a fat bakapee\n");\r
+               segm=(length%0xfffflu)-1;\r
+               fat=segm*0xfffflu;\r
                length-=fat;\r
 //             printf("CA_FarRead doesn't support 64K reads yet!\n");\r
-       }
-
-       if(!fat&&!segm)
+       }\r
+\r
+       if(!fat&&!segm)\r
        {*/\r
-               __asm\r
-               {\r
+               __asm {\r
                        push    ds\r
                        mov     bx,[handle]\r
                        mov     cx,[WORD PTR length]\r
@@ -246,17 +245,34 @@ boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm)
                        mov     errno,ax\r
                        mov     flag,0\r
                        jmp End\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 good:\r
+#ifdef __BORLANDC__\r
+               __asm {\r
+#endif\r
                        cmp     ax,[WORD PTR length]\r
                        je      done\r
 //                     errno = EINVFMT;                        // user manager knows this is bad read\r
                        mov     flag,0\r
                        jmp End\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 done:\r
+#ifdef __BORLANDC__\r
+               __asm {\r
+#endif\r
                        mov     flag,1\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 End:\r
+#ifdef __WATCOMC__\r
                }\r
-       return flag;
+#endif\r
+       return flag;\r
        //}else return 0;//todo: EXPAND!!!\r
 }\r
 \r
@@ -274,22 +290,21 @@ End:
 boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm)\r
 {\r
        boolean flag;\r
-       /*dword fat=0;
-       word segm=0;
+       /*dword fat=0;\r
+       word segm=0;\r
        //if(mm->EMSVer<0x40)\r
-       if(length>0xfffflu)
-       {
-               printf("File is a fat bakapee\n");
-               segm=(length%0xfffflu)-1;
-               fat=segm*0xfffflu;
+       if(length>0xfffflu)\r
+       {\r
+               printf("File is a fat bakapee\n");\r
+               segm=(length%0xfffflu)-1;\r
+               fat=segm*0xfffflu;\r
                length-=fat;\r
 //             printf("CA_FarRead doesn't support 64K reads yet!\n");\r
        }\r
-
-       if(!fat&&!segm)
+\r
+       if(!fat&&!segm)\r
        {*/\r
-               __asm\r
-               {\r
+               __asm {\r
                        push    ds\r
                        mov     bx,[handle]\r
                        mov     cx,[WORD PTR length]\r
@@ -302,17 +317,34 @@ boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm)
                        mov     errno,ax\r
                        mov flag,0\r
                        jmp End\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 good:\r
+#ifdef __BORLANDC__\r
+               __asm {\r
+#endif\r
                        cmp     ax,[WORD PTR length]\r
                        je      done\r
                        //errno = ENOMEM;                               // user manager knows this is bad write\r
                        mov     flag,0\r
                        jmp End\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 done:\r
+#ifdef __BORLANDC__\r
+               __asm {\r
+#endif\r
                        mov     flag,1\r
+#ifdef __BORLANDC__\r
+               }\r
+#endif\r
 End:\r
+#ifdef __WATCOMC__\r
                }\r
-       return flag;
+#endif\r
+       return flag;\r
        //}else return 0;\r
 }\r
 \r
@@ -330,7 +362,7 @@ End:
 boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)\r
 {\r
        int handle;\r
-       dword size;
+       dword size;\r
        //long size;\r
 \r
        if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
@@ -361,7 +393,7 @@ boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)
 boolean CA_LoadFile(char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi)\r
 {\r
        int handle;\r
-       dword size;
+       dword size;\r
        //long size;\r
 \r
        if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1)\r
index f9f4948c08c4d987e8e926f87affd1c78d7f27d2..df9602d8542e10e39bab97ff7146978caf0c7756 100644 (file)
@@ -33,23 +33,48 @@ void __near* LargestFreeBlock(size_t* Size)
        void __near* p;
 
        s0 = ~(size_t)0 ^ (~(size_t)0 >> 1);
+#ifdef __BORLANDC__
+       while (s0 && (p = malloc(s0)) == NULL)
+#endif
+#ifdef __WATCOMC__
        while (s0 && (p = _nmalloc(s0)) == NULL)
+#endif
                s0 >>= 1;
 
        if (p)
+#ifdef __BORLANDC__
+               free(p);
+#endif
+#ifdef __WATCOMC__
                _nfree(p);
+#endif
 
        s1 = s0 >> 1;
        while (s1)
        {
+#ifdef __BORLANDC__
+               if ((p = malloc(s0 + s1)) != NULL)
+#endif
+#ifdef __WATCOMC__
                if ((p = _nmalloc(s0 + s1)) != NULL)
+#endif
                {
                        s0 += s1;
+#ifdef __BORLANDC__
+                       free(p);
+#endif
+#ifdef __WATCOMC__
                        _nfree(p);
+#endif
                }
        s1 >>= 1;
        }
+#ifdef __BORLANDC__
+       while (s0 && (p = malloc(s0)) == NULL)
+#endif
+#ifdef __WATCOMC__
        while (s0 && (p = _nmalloc(s0)) == NULL)
+#endif
                s0 ^= s0 & -s0;
 
        *Size = s0;
@@ -68,7 +93,12 @@ size_t _coreleft(void)
                if (largest < sizeof(void __near*))
                {
                        if (p != NULL)
+#ifdef __BORLANDC__
+                       free(p);
+#endif
+#ifdef __WATCOMC__
                        _nfree(p);
+#endif
                        break;
                }
                *(void __near* __near*)p = NULL;
@@ -84,7 +114,12 @@ size_t _coreleft(void)
        while (pFirst != NULL)
        {
                void __near* p = *(void __near* __near*)pFirst;
+#ifdef __BORLANDC__
+               free(pFirst);
+#endif
+#ifdef __WATCOMC__
                _nfree(pFirst);
+#endif
                pFirst = p;
        }
        return total;
@@ -153,6 +188,7 @@ size_t _farcoreleft(void)
        return total;
 }
 
+#ifdef __WATCOMC__
 void huge* LargestHugeFreeBlock(size_t* Size)
 {
        size_t s0, s1;
@@ -367,7 +403,7 @@ void heapdump(void)
                write(heaphandle,scratch,strlen(scratch));
        }
        heapstat(heap_status, &scratch);
-       
+
        //near
        strcpy(scratch,"\n      == near ==\n\n");
        write(heaphandle,scratch,strlen(scratch));
@@ -432,7 +468,7 @@ void heapstat(int heap_status, byte *str)
                break;
                case _HEAPEMPTY:
                        strcpy((str),"OK - heap is empty\n");
-                       
+
                break;
                case _HEAPBADBEGIN:
                        strcpy((str),"ERROR - heap is damaged\n");
@@ -454,7 +490,7 @@ void heapstat0(int heap_status)
                break;
                case _HEAPEMPTY:
                        //printf("OK - heap is empty\n");
-                       
+
                break;
                case _HEAPBADBEGIN:
                        printf("ERROR - heap is damaged\n");
@@ -466,7 +502,7 @@ void heapstat0(int heap_status)
                        printf("ERROR - bad node in heap\n");
        }
 }
-
+#endif
 /*
 ============================
 =
index df0b31c7bdc7c1a061eb1736799dba9ae578bf43..7dd538669d6bd04c5be8dc215063a06801413684 100644 (file)
@@ -1,27 +1,27 @@
-/* Project 16 Source Code~
- * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669
- *
- * This file is part of Project 16.
- *
- * Project 16 is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Project 16 is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>, or
- * write to the Free Software Foundation, Inc., 51 Franklin Street,
- * Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include "src/lib/16_head.h"
-
+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669\r
+ *\r
+ * This file is part of Project 16.\r
+ *\r
+ * Project 16 is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Project 16 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\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
+ * Fifth Floor, Boston, MA 02110-1301 USA.\r
+ *\r
+ */\r
+\r
+#include "src/lib/16_head.h"\r
+\r
 /* Function: Wait **********************************************************\r
 *\r
 *     Parameters:    wait - time in microseconds\r
@@ -36,9 +36,9 @@ void wait(clock_t wait){
 \r
        goal = wait + clock();\r
        while((goal > clock()) && !kbhit()) ;\r
-} /* End of wait */
-
-long int
+} /* End of wait */\r
+\r
+long int\r
 filesize(FILE *fp)\r
 {\r
        long int save_pos, size_of_file;\r
@@ -48,63 +48,15 @@ filesize(FILE *fp)
        size_of_file = ftell(fp);\r
        fseek(fp, save_pos, SEEK_SET);\r
        return(size_of_file);\r
-}
-
-void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free)
-{
-       byte str[64];
-       strcat(strc,pee); strcat(strc,"            "); ultoa((dword)h_total,str,10); strcat(strc,str); strcat(strc,"    "); ultoa((dword)h_used,str,10); strcat(strc,str); strcat(strc,"        "); ultoa((dword)h_free,str,10); strcat(strc,str);
-       strcat(strc,"\n");
-}
-
-void print_normal_entry(char *text, dword total, dword used, dword free, byte *str)
-{
-       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);
-}
-
+}\r
+\r
+void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free)\r
+{\r
+       byte str[64];\r
+       strcat(strc,pee); strcat(strc,"            "); ultoa((dword)h_total,str,10); strcat(strc,str); strcat(strc,"    "); ultoa((dword)h_used,str,10); strcat(strc,str); strcat(strc,"        "); ultoa((dword)h_free,str,10); strcat(strc,str);\r
+       strcat(strc,"\n");\r
+}\r
+\r
 ///////////////////////////////////////////////////////////////////////////\r
 //\r
 //      US_CheckParm() - checks to see if a string matches one of a set of\r
@@ -138,8 +90,8 @@ US_CheckParm(char *parm,char **strings)
                }\r
        }\r
        return(-1);\r
-}
-
+}\r
+\r
 /*\r
 ==========================\r
 =\r
@@ -201,4 +153,4 @@ US_CheckParm(char *parm,char **strings)
 #endif\r
 \r
        exit(exit_code);\r
-}*/
+}*/\r
index f74e8823435e9566d01110e52989de664cfd3c33..e6e590b425a787167dc33155ae5f1e8bb3fb794a 100644 (file)
 #define _LIBHEAD_H_\r
 #include <dos.h>\r
 #include <stdio.h>\r
+#include <stdlib.h>\r
 #include <conio.h> // just for wait\r
 #include <time.h> // just for wait\r
-#include <stdlib.h>\r
 #include <malloc.h>\r
 #include <ctype.h>\r
 #include <fcntl.h>\r
+#include <io.h>\r
 #include <sys/stat.h>\r
 #include <mem.h>\r
+#include <string.h>\r
 #ifdef __WATCOMC__\r
 #include <i86.h>\r
 #include <unistd.h>\r
 #include <alloca.h>\r
-#include "src/lib/nyan/kitten.h"\r
 #endif\r
+#include "src/lib/nyan/kitten.h"\r
 #include "src/lib/types.h"\r
 \r
 //0000 test type def wwww\r
-struct list {\r
+/*struct list {\r
        struct list __based(__self) *next;\r
        int         value;\r
-};\r
+};*/\r
 \r
 /* Control codes for all keys on the keyboard */\r
 //here temperarly\r
@@ -186,8 +188,6 @@ void wait(clock_t wait);
 \r
 long int filesize(FILE *fp);\r
 void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free);\r
-void print_normal_entry(char *text, dword total, dword used, dword free, byte *str);\r
-void convert(const char *format, dword num);\r
 int US_CheckParm(char *parm,char **strings);\r
 \r
 extern void CA_OpenDebug (void);\r
index ba0b8bfed783062ca394fa68fc0a0103f15c664f..90439b1d18f860bc644f0ad33b7da85226d38a56 100644 (file)
@@ -120,13 +120,24 @@ boolean MML_CheckForEMS(void)
                //
                mov     emmcfems,1
                jmp End
+#ifdef __BORLANDC__
+       }
+#endif
                error:
+#ifdef __BORLANDC__
+       __asm {
+#endif
                //
                // EMS is bad
                //
                mov     emmcfems,0
+#ifdef __BORLANDC__
+       }
+#endif
                End:
+#ifdef __WATCOMC__
        }
+#endif
        return(emmcfems);
 }
 
@@ -150,8 +161,7 @@ byte MML_SetupEMS(mminfo_t *mm)
        unsigned        totalEMSpages,freeEMSpages,EMSpageframe,EMSpagesmapped,EMShandle;
        totalEMSpages = freeEMSpages = EMSpageframe = EMSpagesmapped = 0;
 
-       __asm
-               {
+       __asm {
                mov     ah,EMS_STATUS
                int     EMS_INT                                         // make sure EMS hardware is present
                or      ah,ah
@@ -187,13 +197,23 @@ byte MML_SetupEMS(mminfo_t *mm)
                jle     getpages
                mov     bx,[freeEMSpages]
                jmp     getpages
-
-low:
+#ifdef __BORLANDC__
+       }
+#endif
+       low:
+#ifdef __BORLANDC__
+       __asm {
+#endif
                cmp     bx,4
                jle     getpages                                        // there is only 1,2,3,or 4 pages
                mov     bx,4                                            // we can't use more than 4 pages
-
-getpages:
+#ifdef __BORLANDC__
+       }
+#endif
+       getpages:
+#ifdef __BORLANDC__
+       __asm {
+#endif
                mov     [EMSpagesmapped],bx
                mov     ah,EMS_ALLOCPAGES                       // allocate up to 64k of EMS
                int     EMS_INT
@@ -201,19 +221,30 @@ getpages:
                jnz     error
                mov     [EMShandle],dx
                jmp End
-error:
+#ifdef __BORLANDC__
+       }
+#endif
+       error:
+#ifdef __BORLANDC__
+       __asm {
+#endif
                mov     err,ah
                mov     errorflag,1
                jmp End
+#ifdef __BORLANDC__
+       }
+#endif
 noEMS:
 End:
+#ifdef __WATCOMC__
        }
+#endif
        if(errorflag==true)
        {
                //err = CPURegs.h.ah;
                strcpy(str,"MM_SetupEMS: EMS error ");
                //itoa(err,str2,16);
-               MM_EMSerr(&str, err);
+               MM_EMSerr(str, err);
                printf("%s\n",str);
                return err;
        }
@@ -242,16 +273,20 @@ void MML_ShutdownEMS(mminfo_t *mm)
 
        if(!EMShandle)
                return;
-       __asm
-       {
+       __asm {
                mov     ah,EMS_FREEPAGES
                mov     dx,[EMShandle]
                int     EMS_INT
                or      ah,ah
                jz      ok
                mov     errorflag,1
+#ifdef __BORLANDC__
+       }
+#endif
                ok:
+#ifdef __WATCOMC__
        }
+#endif
        if(errorflag==true) printf("MML_ShutdownEMS: Error freeing EMS!\n");    //++++ add something
 }
 
@@ -278,8 +313,7 @@ byte MM_MapEMS(mminfo_t *mm, mminfotype *mmi)
 
        for (i=0;i<4/*MAPPAGES*/;i++)
        {
-               __asm
-               {
+               __asm {
                        mov     ah,EMS_MAPPAGE
                        mov     bx,[i]                  // logical page
                        mov     al,bl                   // physical page
@@ -288,11 +322,22 @@ byte MM_MapEMS(mminfo_t *mm, mminfotype *mmi)
                        or      ah,ah
                        jnz     error
                        jmp End
+#ifdef __BORLANDC__
+               }
+#endif
                        error:
+#ifdef __BORLANDC__
+               __asm {
+#endif
                        mov     err,ah
                        mov     errorflag,1
+#ifdef __BORLANDC__
+               }
+#endif
                        End:
+#ifdef __WATCOMC__
                }
+#endif
                if(errorflag==true)
                {
                        //err = CPURegs.h.ah;
@@ -344,8 +389,7 @@ byte MM_MapXEMS(mminfo_t *mm, mminfotype *mmi)
 
        for (i=0;i<MAPPAGES;i++)
        {
-               __asm
-               {
+               __asm {
                        mov     ah,EMS_MAPXPAGE
                        mov     cx,[i]                  // logical page
                        mov     al,bl                   // physical page
@@ -354,18 +398,29 @@ byte MM_MapXEMS(mminfo_t *mm, mminfotype *mmi)
                        or      ah,ah
                        jnz     error
                        jmp End
+#ifdef __BORLANDC__
+               }
+#endif
                        error:
+#ifdef __BORLANDC__
+               __asm {
+#endif
                        mov     err,ah
                        mov     errorflag,1
+#ifdef __BORLANDC__
+               }
+#endif
                        End:
+#ifdef __WATCOMC__
                }
+#endif
                if(errorflag==true)
                {
                        //err = CPURegs.h.ah;
                        //strcpy(str,"MM_MapXEMS: EMS error 0x");
                        strcpy(str,"MM_MapXEMS: EMS error ");
                        //itoa(err,str2,16);
-                       MM_EMSerr(&str, err);
+                       MM_EMSerr(str, err);
                        printf("%s\n",str);
                        //printf("%s%x\n",str, err);
                        //printf("FACK! %x\n", err);
@@ -393,15 +448,19 @@ boolean MML_CheckForXMS(mminfo_t *mm)
        boolean errorflag=false;
        mm->numUMBs = 0;
 
-       __asm
-       {
+       __asm {
                mov     ax,0x4300
                int     0x2f                            // query status of installed diver
                cmp     al,0x80
                je      good
                mov     errorflag,1
+#ifdef __BORLANDC__
+       }
+#endif
                good:
+#ifdef __WATCOMC__
        }
+#endif
        if(errorflag==true) return false;
        else return true;
 }
@@ -422,8 +481,7 @@ void MML_SetupXMS(mminfo_t *mm, mminfotype *mmi)
        unsigned        base,size;
 
 getmemory:
-       __asm
-       {
+       __asm {
                mov     ax,0x4310
                int     0x2f
                mov     [WORD PTR XMSaddr],bx
@@ -443,12 +501,22 @@ getmemory:
                call    [DWORD PTR XMSaddr]             // DX holds largest available UMB
                or      ax,ax
                jz      done                                            // another error...
-
-gotone:
+#ifdef __BORLANDC__
+       }
+#endif
+               gotone:
+#ifdef __BORLANDC__
+       __asm {
+#endif
                mov     [base],bx
                mov     [size],dx
-done:
+#ifdef __BORLANDC__
        }
+#endif
+               done:
+#ifdef __WATCOMC__
+       }
+#endif
        printf("base=%u ", base); printf("size=%u\n", size);
        MML_UseSpace(base,size, mm);
        mmi->XMSmem += size*16;
@@ -475,8 +543,7 @@ void MML_ShutdownXMS(mminfo_t *mm)
        for (i=0;i<mm->numUMBs;i++)
        {
                base = mm->UMBbase[i];
-               __asm
-               {
+               __asm {
                        mov     ah,XMS_FREEUMB
                        mov     dx,[base]
                        call    [DWORD PTR XMSaddr]
@@ -672,27 +739,36 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi)
 //
 // get all available near conventional memory segments
 //
-//---- length=coreleft();
-       printf("                nearheap making!\n");
+//     printf("                nearheap making!\n");
+#ifdef __WATCOMC__
        _nheapgrow();
        length=(dword)_memmax();//(dword)GetFreeSize();
        start = (void huge *)(mm->nearheap = _nmalloc(length));
+#endif
+#ifdef __BORLANDC__
+       length=coreleft();
+       start = (void huge *)(mm->nearheap = malloc(length));
+#endif
        length -= 16-(FP_OFF(start)&15);
        length -= SAVENEARHEAP;
        seglength = length / 16;                        // now in paragraphs
        segstart = FP_SEG(start)+(FP_OFF(start)+15)/16;
        MML_UseSpace(segstart,seglength, mm);
        mmi->nearheap = length;
-       printf("start=%FP       segstart=%X     seglen=%lu      len=%lu\n", start, segstart, seglength, length);
+       printf("start=%Fp       segstart=%x     seglen=%l       len=%l\n", start, segstart, seglength, length);
        //heapdump();
 
 //
 // get all available far conventional memory segments
 //
-//---- length=farcoreleft();
-       printf("                farheap making!\n");
+//     printf("                farheap making!\n");
+#ifdef __WATCOMC__
        _fheapgrow();
        length=(dword)GetFarFreeSize();//0xffffUL*4UL;
+#endif
+#ifdef __BORLANDC__
+       length=farcoreleft();
+#endif
        //start = mm->farheap = halloc(length, 1);
        start = mm->farheap = _fmalloc(length);
        length -= 16-(FP_OFF(start)&15);
@@ -701,7 +777,7 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi)
        segstart = FP_SEG(start)+(FP_OFF(start)+15)/16;
        MML_UseSpace(segstart,seglength, mm);
        mmi->farheap = length;
-       printf("start=%FP       segstart=%X     seglen=%lu      len=%lu\n", start, segstart, seglength, length);
+       printf("start=%Fp       segstart=%x     seglen=%l       len=%l\n", start, segstart, seglength, length);
        //heapdump();
 
        mmi->mainmem = mmi->nearheap + mmi->farheap;
@@ -716,9 +792,23 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi)
 //printf("             EMS1\n");
 //printf("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");  //bug!
        mmi->EMSmem = 0;
-       for(i = 1;i < __argc;i++)
+       for(i = 1;i <
+#ifdef __WATCOMC__
+       __argc
+#endif
+#ifdef __BORLANDC__
+       _argc
+#endif
+       ;i++)
        {
-               if(US_CheckParm(__argv[i],ParmStringsexmm) == 0)
+               if(US_CheckParm(
+#ifdef __WATCOMC__
+       __argv[i]
+#endif
+#ifdef __BORLANDC__
+       _argv[i]
+#endif
+                       ,ParmStringsexmm) == 0)
                        goto emsskip;                           // param NOEMS
        }
 //printf("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");  //bug!
@@ -747,9 +837,23 @@ goto xmsskip;
 //
 emsskip:
        mmi->XMSmem = 0;
-       for(i = 1;i < __argc;i++)
+       for(i = 1;i <
+#ifdef __WATCOMC__
+       __argc
+#endif
+#ifdef __BORLANDC__
+       _argc
+#endif
+       ;i++)
        {
-               if(US_CheckParm(__argv[i],ParmStringsexmm) == 0)
+               if(US_CheckParm(
+#ifdef __WATCOMC__
+       __argv[i]
+#endif
+#ifdef __BORLANDC__
+       _argv[i]
+#endif
+                       ,ParmStringsexmm) == 0)
                        goto xmsskip;                           // param NOXMS
        }
 //printf("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");  //bug!
@@ -787,7 +891,12 @@ void MM_Shutdown(mminfo_t *mm)
                return;
 
        _ffree(mm->farheap);    printf("                far freed\n");
+#ifdef __WATCOMC__
        _nfree(mm->nearheap);   printf("                near freed\n");
+#endif
+#ifdef __BORLANDC__
+       free(mm->nearheap);     printf("                near freed\n");
+#endif
        if(MML_CheckForEMS()){ MML_ShutdownEMS(mm); printf("            EMS freed\n"); }
        if(MML_CheckForXMS(mm)){ MML_ShutdownXMS(mm); printf("          XMS freed\n"); }
 }
@@ -898,7 +1007,9 @@ printf("\n");
 
        if (mm->bombonerror)
        {
+#ifdef __WATCOMC__
                heapdump();
+#endif
                printf(OUT_OF_MEM_MSG,(size-mmi->nearheap));
                printf("for stability reasons the program will shut down! wwww\n");
                printf("                endid=%u\n",(mm->endid));
@@ -1151,9 +1262,10 @@ void MM_SortMem(mminfo_t *mm)
 void MM_ShowMemory(/*page_t *page, */mminfo_t *mm)
 {
        mmblocktype huge *scan;
-       word color,temp;
+//++++ word color;
+       word temp;
        long    end,owner;
-       word chx,chy;
+//++++ word chx,chy;
        byte    scratch[160],str[16];
 
 //**** VW_SetDefaultColors();
@@ -1168,17 +1280,17 @@ void MM_ShowMemory(/*page_t *page, */mminfo_t *mm)
 
 CA_OpenDebug ();
 
-       chx=0;
-       chy=0;
+//++++ chx=0;
+//++++ chy=0;
 
        while(scan)
        {
-               if(scan->attributes & PURGEBITS)
+/*++++         if(scan->attributes & PURGEBITS)
                        color = 5;              // dark purple = purgable
                else
                        color = 9;              // medium blue = non purgable
                if(scan->attributes & LOCKBIT)
-                       color = 12;             // red = locked
+                       color = 12;             // red = locked*/
                if(scan->start<=end)
                {
                        //printf(");
@@ -1187,8 +1299,8 @@ CA_OpenDebug ();
                        return;
                }
                end = scan->start+scan->length-1;
-               chy = scan->start/320;
-               chx = scan->start%320;
+//++++         chy = scan->start/320;
+//++++         chx = scan->start%320;
                                //modexhlin(page, scan->start, (unsigned)end, chy, color);
                                //for(chx=scan->start;chx+4>=(word)end;chx+=4)
                                //{
index 49cb74744e3c8e7e26d378be080786a57cccc5c2..4e501decfbe15d9ef9e5725d830f177f277e94fd 100644 (file)
@@ -22,6 +22,8 @@
 #include <stdio.h>                     /* sprintf */\r
 #include <stdlib.h>                    /* getenv  */\r
 #include <string.h>                    /* strchr */\r
+#include <sys/stat.h>\r
+#include <io.h>\r
 #include <fcntl.h>\r
 \r
 #include "src/lib/nyan/kitten.h"\r
index 62c5bc7b3e2e20f57f9dea2692d77b723dcca1bf..2cec22fec3c7333386d0498db5beefb9906a6bb9 100644 (file)
 \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 catclose(x)\r
 #define catgets(c,x,y,s) s\r
 \r
 #else\r