]> 4ch.mooo.com Git - 16.git/commitdiff
[16_ca needs huge amounts of work and I should remember what needs to be done soon...
authorsparky4 <sparky4@cock.li>
Mon, 3 Apr 2017 20:19:08 +0000 (15:19 -0500)
committersparky4 <sparky4@cock.li>
Mon, 3 Apr 2017 20:19:08 +0000 (15:19 -0500)
20 files changed:
EXMMTEST.LOG [new file with mode: 0755]
bcexmm.dsk
bcexmm.exe
bcexmm.mah [new file with mode: 0755]
bcexmm.prj
makefile
src/exmmtest.c
src/lib/16_in.c
src/lib/16_mm.c
src/lib/16_mm.h
src/lib/16_tail.c
src/lib/16_tail.h
src/lib/16_tdef.h
src/lib/16_vl.c
src/lib/16_vl.h
src/lib/16_vl_1.c [new file with mode: 0755]
src/lib/bakapee.c
src/lib/hb/democ3.c [new file with mode: 0755]
src/lib/hb/democ6.c [new file with mode: 0755]
src/lib/scroll16.c

diff --git a/EXMMTEST.LOG b/EXMMTEST.LOG
new file mode 100755 (executable)
index 0000000..c6688f3
--- /dev/null
@@ -0,0 +1,113 @@
+NOVID\r
+======================================load=====================================\r
+====================================load end===================================\r
+contents of the buffer\r
+[\r
+\r
+\ 5\ 1\b\r
+]\r
+\r
+yay!\r
+======================================read=====================================\r
+====================================read end===================================\r
+contents of the buffer\r
+[\r
+{ "backgroundcolor":"#000000",\r
+ "height":30,\r
+ "layers":[\r
+        {\r
+         "data":[1, 2, 3, 4, 0, 3, 3, 3, 3, 3, 3, 3, 3, 4, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 0, 1, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 5, 6, 7, 8, 9, 10, 11, 12, 4, 1, 0, 1, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 9, 10, 11, 12, 13, 14, 15, 16, 0, 1, 1, 1, 5, 8, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 13, 14, 15, 16, 0, 0, 4, 0, 0, 0, 0, 0, 8, 8, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 8, 8, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 39, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 3, 1, 2, 3, 4, 3, 3, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 5, 6, 7, 8, 6, 6, 6, 6, 6, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 11, 11, 11, 11, 11, 9, 10, 11, 12, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 13, 14, 15, 16, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 3, 3, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 11, 11, 11, 11, 11, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 11, 0, 0, 0, 11, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 0, 11, 0, 11, 11, 11, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 11, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 1, 2, 3, 4, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 11, 11, 11, 11, 11, 11, 11, 11, 1, 2, 3, 4, 5, 6, 7, 8, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 11, 5, 6, 7, 8, 9, 10, 11, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 9, 10, 11, 12, 13, 14, 15, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 13, 14, 15, 16],\r
+         "height":30,\r
+         "name":"bg",\r
+         "opacity":1,\r
+         "type":"tilelayer",\r
+         "visible":true,\r
+         "width":40,\r
+         "x":0,\r
+         "y":0\r
+        }, \r
+        {\r
+         "data":[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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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],\r
+         "height":30,\r
+         "name":"fg",\r
+         "opacity":1,\r
+         "type":"tilelayer",\r
+         "visible":true,\r
+         "width":40,\r
+         "x":0,\r
+         "y":0\r
+        }, \r
+        {\r
+         "data":[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, 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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],\r
+         "height":30,\r
+         "name":"top",\r
+         "opacity":1,\r
+         "type":"tilelayer",\r
+         "visible":true,\r
+         "width":40,\r
+         "x":0,\r
+         "y":0\r
+        }, \r
+        {\r
+         "height":30,\r
+         "name":"ob",\r
+         "objects":[\r
+                {\r
+                 "height":16,\r
+                 "name":"trunk",\r
+                 "properties":\r
+                    {\r
+                     "walkable":"0"\r
+                    },\r
+                 "type":"nonc",\r
+                 "visible":true,\r
+                 "width":32,\r
+                 "x":128,\r
+                 "y":32\r
+                }, \r
+                {\r
+                 "height":16,\r
+                 "name":"stump",\r
+                 "properties":\r
+                    {\r
+                     "walkable":"0"\r
+                    },\r
+                 "type":"nonc",\r
+                 "visible":true,\r
+                 "width":16,\r
+                 "x":144,\r
+                 "y":128\r
+                }],\r
+         "opacity":1,\r
+         "type":"objectgroup",\r
+         "visible":true,\r
+         "width":40,\r
+         "x":0,\r
+         "y":0\r
+        }],\r
+ "orientation":"orthogonal",\r
+ "properties":\r
+    {\r
+\r
+    },\r
+ "tileheight":16,\r
+ "tilesets":[\r
+        {\r
+         "firstgid":1,\r
+         "image":"ed.png",\r
+         "imageheight":64,\r
+         "imagewidth":64,\r
+         "margin":0,\r
+         "name":"wwww",\r
+         "properties":\r
+            {\r
+\r
+            },\r
+         "spacing":0,\r
+         "tileheight":16,\r
+         "tilewidth":16\r
+        }, \r
+        {\r
+         "firstgid":17,\r
+         "image":"forest.gif",\r
+         "imageh
\ No newline at end of file
index c37ee82b40e4be6ce232499c7f6e097b22361542..6238e6eb01f0a40f60a82e73d416296fd6a079df 100755 (executable)
Binary files a/bcexmm.dsk and b/bcexmm.dsk differ
index a23eaf701de7015735f204616bf261991f9e5257..78240e17435cefa372565be1f85a0b382dd6417b 100755 (executable)
Binary files a/bcexmm.exe and b/bcexmm.exe differ
diff --git a/bcexmm.mah b/bcexmm.mah
new file mode 100755 (executable)
index 0000000..c229513
--- /dev/null
@@ -0,0 +1,1040 @@
+\r
+ Start  Stop   Length Name               Class\r
+\r
+ 00000H 03180H 03181H _TEXT              CODE\r
+ 03181H 04C28H 01AA8H 16_PM_TEXT         CODE\r
+ 04C29H 052D9H 006B1H KITTEN_TEXT        CODE\r
+ 052DAH 056EBH 00412H 16_HC_TEXT         CODE\r
+ 056ECH 05A25H 0033AH EXMMTEST_TEXT      CODE\r
+ 05A26H 06394H 0096FH 16_CA_TEXT         CODE\r
+ 06395H 0686EH 004DAH 16_HEAD_TEXT       CODE\r
+ 0686FH 0856EH 01D00H 16_MM_TEXT         CODE\r
+ 0856FH 0971CH 011AEH 16_IN_TEXT         CODE\r
+ 0971DH 0992DH 00211H 16_DBG_TEXT        CODE\r
+ 0992EH 09E9CH 0056FH 16_TAIL_TEXT       CODE\r
+ 09E9DH 0A61AH 0077EH 16_VL_1_TEXT       CODE\r
+ 0A620H 0A620H 00000H _FARDATA           FAR_DATA\r
+ 0A620H 0A69FH 00080H 16_IN5_DATA        FAR_DATA\r
+ 0A6A0H 0A71FH 00080H 16_IN6_DATA        FAR_DATA\r
+ 0A720H 0A79FH 00080H 16_IN7_DATA        FAR_DATA\r
+ 0A7A0H 0A7C3H 00024H 16_IN8_DATA        FAR_DATA\r
+ 0A7D0H 0A7D0H 00000H _FARBSS            FAR_BSS\r
+ 0A7D0H 0A7D0H 00000H _OVERLAY_          OVRINFO\r
+ 0A7D0H 0A7D0H 00000H _1STUB_            STUBSEG\r
+ 0A7D0H 0C6DFH 01F10H _DATA              DATA\r
+ 0C6E0H 0C6E1H 00002H _CVTSEG            DATA\r
+ 0C6E2H 0C6E7H 00006H _SCNSEG            DATA\r
+ 0C6E8H 0C6E8H 00000H _CONST             CONST\r
+ 0C6E8H 0C6FFH 00018H _INIT_             INITDATA\r
+ 0C700H 0C700H 00000H _INITEND_          INITDATA\r
+ 0C700H 0C700H 00000H _EXIT_             EXITDATA\r
+ 0C700H 0C700H 00000H _EXITEND_          EXITDATA\r
+ 0C700H 11DEDH 056EEH _BSS               BSS\r
+ 11DEEH 11DEEH 00000H _BSSEND            BSSEND\r
+ 11DF0H 11E6FH 00080H _STACK             STACK\r
+\r
+\r
+Detailed map of segments\r
+\r
+ 0000:0000 0295 C=CODE   S=_TEXT          G=(none)  M=c0.ASM     ACBP=28\r
+ 0000:0295 002D C=CODE   S=_TEXT          G=(none)  M=ATEXIT     ACBP=28\r
+ 0000:02C2 0000 C=CODE   S=_TEXT          G=(none)  M=CTYPE      ACBP=28\r
+ 0000:02C2 003D C=CODE   S=_TEXT          G=(none)  M=DOSFATTR   ACBP=28\r
+ 0000:02FF 0093 C=CODE   S=_TEXT          G=(none)  M=EXIT       ACBP=28\r
+ 0000:0392 0000 C=CODE   S=_TEXT          G=(none)  M=FILES      ACBP=28\r
+ 0000:0392 0000 C=CODE   S=_TEXT          G=(none)  M=FILES2     ACBP=28\r
+ 0000:0392 0000 C=CODE   S=_TEXT          G=(none)  M=FMODE      ACBP=28\r
+ 0000:0392 0020 C=CODE   S=_TEXT          G=(none)  M=GETVECT    ACBP=28\r
+ 0000:03B2 00AE C=CODE   S=_TEXT          G=(none)  M=H_LDIV     ACBP=28\r
+ 0000:0460 0021 C=CODE   S=_TEXT          G=(none)  M=H_LLSH     ACBP=28\r
+ 0000:0481 0021 C=CODE   S=_TEXT          G=(none)  M=H_LURSH    ACBP=28\r
+ 0000:04A2 0060 C=CODE   S=_TEXT          G=(none)  M=H_PADD     ACBP=28\r
+ 0000:0502 0028 C=CODE   S=_TEXT          G=(none)  M=H_PSBP     ACBP=28\r
+ 0000:052A 004B C=CODE   S=_TEXT          G=(none)  M=IOERROR    ACBP=28\r
+ 0000:0575 0011 C=CODE   S=_TEXT          G=(none)  M=ISATTY     ACBP=28\r
+ 0000:0586 00A2 C=CODE   S=_TEXT          G=(none)  M=LONGTOA    ACBP=28\r
+ 0000:0628 0029 C=CODE   S=_TEXT          G=(none)  M=LSEEK      ACBP=28\r
+ 0000:0651 00B6 C=CODE   S=_TEXT          G=(none)  M=MKNAME     ACBP=28\r
+ 0000:0707 0021 C=CODE   S=_TEXT          G=(none)  M=N_PCMP     ACBP=28\r
+ 0000:0728 002F C=CODE   S=_TEXT          G=(none)  M=READA      ACBP=28\r
+ 0000:0757 00BA C=CODE   S=_TEXT          G=(none)  M=SETUPIO    ACBP=28\r
+ 0000:0811 0000 C=CODE   S=_TEXT          G=(none)  M=STKLEN     ACBP=28\r
+ 0000:0811 002C C=CODE   S=_TEXT          G=(none)  M=TOLOWER    ACBP=28\r
+ 0000:083D 0018 C=CODE   S=_TEXT          G=(none)  M=UNLINK     ACBP=28\r
+ 0000:0855 04DB C=CODE   S=_TEXT          G=(none)  M=VPRINTER   ACBP=28\r
+ 0000:0D30 009F C=CODE   S=_TEXT          G=(none)  M=VRAM       ACBP=28\r
+ 0000:0DCF 0000 C=CODE   S=_TEXT          G=(none)  M=WSCROLL    ACBP=28\r
+ 0000:0DCF 0034 C=CODE   S=_TEXT          G=(none)  M=_STPCPY    ACBP=28\r
+ 0000:0E03 0029 C=CODE   S=_TEXT          G=(none)  M=CLRSCR     ACBP=28\r
+ 0000:0E2C 0006 C=CODE   S=_TEXT          G=(none)  M=CORELEFT   ACBP=28\r
+ 0000:0E32 014E C=CODE   S=_TEXT          G=(none)  M=CPRINTF    ACBP=28\r
+ 0000:0F80 01A5 C=CODE   S=_TEXT          G=(none)  M=CRTINIT    ACBP=28\r
+ 0000:1125 001F C=CODE   S=_TEXT          G=(none)  M=CVTFAK     ACBP=28\r
+ 0000:1144 0432 C=CODE   S=_TEXT          G=(none)  M=FARHEAP    ACBP=28\r
+ 0000:1576 0140 C=CODE   S=_TEXT          G=(none)  M=FBRK       ACBP=28\r
+ 0000:16B6 0050 C=CODE   S=_TEXT          G=(none)  M=FCORELFT   ACBP=28\r
+ 0000:1706 005E C=CODE   S=_TEXT          G=(none)  M=GETCH      ACBP=28\r
+ 0000:1764 0049 C=CODE   S=_TEXT          G=(none)  M=GOTOXY     ACBP=28\r
+ 0000:17AD 00AC C=CODE   S=_TEXT          G=(none)  M=GPTEXT     ACBP=28\r
+ 0000:1859 0029 C=CODE   S=_TEXT          G=(none)  M=IOCTL      ACBP=28\r
+ 0000:1882 0012 C=CODE   S=_TEXT          G=(none)  M=KBHIT      ACBP=28\r
+ 0000:1894 009D C=CODE   S=_TEXT          G=(none)  M=MOVETEXT   ACBP=28\r
+ 0000:1931 0017 C=CODE   S=_TEXT          G=(none)  M=PUTCH      ACBP=28\r
+ 0000:1948 0004 C=CODE   S=_TEXT          G=(none)  M=REALCVT    ACBP=28\r
+ 0000:194C 01C7 C=CODE   S=_TEXT          G=(none)  M=SCREEN     ACBP=28\r
+ 0000:1B13 018E C=CODE   S=_TEXT          G=(none)  M=SCROLL     ACBP=28\r
+ 0000:1CA1 012B C=CODE   S=_TEXT          G=(none)  M=SETARGV    ACBP=28\r
+ 0000:1DCC 001C C=CODE   S=_TEXT          G=(none)  M=SETBLOCK   ACBP=28\r
+ 0000:1DE8 0058 C=CODE   S=_TEXT          G=(none)  M=SETENVP    ACBP=28\r
+ 0000:1E40 002C C=CODE   S=_TEXT          G=(none)  M=WHEREXY    ACBP=28\r
+ 0000:1E6C 001D C=CODE   S=_TEXT          G=(none)  M=CHMODA     ACBP=28\r
+ 0000:1E89 0028 C=CODE   S=_TEXT          G=(none)  M=CLOSE      ACBP=28\r
+ 0000:1EB1 001E C=CODE   S=_TEXT          G=(none)  M=CLOSEA     ACBP=28\r
+ 0000:1ECF 00B8 C=CODE   S=_TEXT          G=(none)  M=FCLOSE     ACBP=28\r
+ 0000:1F87 00CD C=CODE   S=_TEXT          G=(none)  M=FFLUSH     ACBP=28\r
+ 0000:2054 0041 C=CODE   S=_TEXT          G=(none)  M=FLENGTH    ACBP=28\r
+ 0000:2095 0042 C=CODE   S=_TEXT          G=(none)  M=FLUSHALL   ACBP=28\r
+ 0000:20D7 020C C=CODE   S=_TEXT          G=(none)  M=FOPEN      ACBP=28\r
+ 0000:22E3 001C C=CODE   S=_TEXT          G=(none)  M=FPRINTF    ACBP=28\r
+ 0000:22FF 01E2 C=CODE   S=_TEXT          G=(none)  M=FSEEK      ACBP=28\r
+ 0000:24E1 0070 C=CODE   S=_TEXT          G=(none)  M=GETENV     ACBP=28\r
+ 0000:2551 0070 C=CODE   S=_TEXT          G=(none)  M=LTOA1      ACBP=28\r
+ 0000:25C1 0024 C=CODE   S=_TEXT          G=(none)  M=MEMCPY     ACBP=28\r
+ 0000:25E5 0022 C=CODE   S=_TEXT          G=(none)  M=MOVEDATA   ACBP=28\r
+ 0000:2607 019C C=CODE   S=_TEXT          G=(none)  M=OPEN       ACBP=28\r
+ 0000:27A3 004F C=CODE   S=_TEXT          G=(none)  M=OPENA      ACBP=28\r
+ 0000:27F2 001B C=CODE   S=_TEXT          G=(none)  M=PRINTF     ACBP=28\r
+ 0000:280D 03C8 C=CODE   S=_TEXT          G=(none)  M=PUTC       ACBP=28\r
+ 0000:2BD5 00D1 C=CODE   S=_TEXT          G=(none)  M=READ       ACBP=28\r
+ 0000:2CA6 0003 C=CODE   S=_TEXT          G=(none)  M=READU      ACBP=28\r
+ 0000:2CA9 011D C=CODE   S=_TEXT          G=(none)  M=SETVBUF    ACBP=28\r
+ 0000:2DC6 0083 C=CODE   S=_TEXT          G=(none)  M=SPRINTF    ACBP=28\r
+ 0000:2E49 003F C=CODE   S=_TEXT          G=(none)  M=STRCAT     ACBP=28\r
+ 0000:2E88 0046 C=CODE   S=_TEXT          G=(none)  M=STRDUP     ACBP=28\r
+ 0000:2ECE 001F C=CODE   S=_TEXT          G=(none)  M=STRLEN     ACBP=28\r
+ 0000:2EED 0151 C=CODE   S=_TEXT          G=(none)  M=WRITE      ACBP=28\r
+ 0000:303E 003C C=CODE   S=_TEXT          G=(none)  M=WRITEA     ACBP=28\r
+ 0000:307A 0003 C=CODE   S=_TEXT          G=(none)  M=WRITEU     ACBP=28\r
+ 0000:307D 003D C=CODE   S=_TEXT          G=(none)  M=XFCLOSE    ACBP=28\r
+ 0000:30BA 0038 C=CODE   S=_TEXT          G=(none)  M=XFFLUSH    ACBP=28\r
+ 0000:30F2 0028 C=CODE   S=_TEXT          G=(none)  M=FMEMCMP    ACBP=28\r
+ 0000:311A 0024 C=CODE   S=_TEXT          G=(none)  M=FMEMCPY    ACBP=28\r
+ 0000:313E 0043 C=CODE   S=_TEXT          G=(none)  M=FMEMSET    ACBP=28\r
+ 0318:0001 1AA8 C=CODE   S=16_PM_TEXT     G=(none)  M=SRC\LIB\16_PM.C ACBP=28\r
+ 04C2:0009 06B1 C=CODE   S=KITTEN_TEXT    G=(none)  M=SRC\LIB\NYAN\KITTEN.C ACBP=28\r
+ 052D:000A 0412 C=CODE   S=16_HC_TEXT     G=(none)  M=SRC\LIB\16_HC.C ACBP=28\r
+ 056E:000C 033A C=CODE   S=EXMMTEST_TEXT  G=(none)  M=SRC\EXMMTEST.C ACBP=28\r
+ 05A2:0006 096F C=CODE   S=16_CA_TEXT     G=(none)  M=SRC\LIB\16_CA.C ACBP=28\r
+ 0639:0005 04DA C=CODE   S=16_HEAD_TEXT   G=(none)  M=SRC\LIB\16_HEAD.C ACBP=28\r
+ 0686:000F 1D00 C=CODE   S=16_MM_TEXT     G=(none)  M=SRC\LIB\16_MM.C ACBP=28\r
+ 0856:000F 11AE C=CODE   S=16_IN_TEXT     G=(none)  M=SRC\LIB\16_IN.C ACBP=28\r
+ 0971:000D 0211 C=CODE   S=16_DBG_TEXT    G=(none)  M=SRC\LIB\16_DBG.C ACBP=28\r
+ 0992:000E 056F C=CODE   S=16_TAIL_TEXT   G=(none)  M=SRC\LIB\16_TAIL.C ACBP=28\r
+ 09E9:000D 077E C=CODE   S=16_VL_1_TEXT   G=(none)  M=SRC\LIB\16_VL_1.C ACBP=28\r
+ 0A62:0000 0000 C=FAR_DATA S=_FARDATA       G=(none)  M=c0.ASM     ACBP=68\r
+ 0A62:0000 0080 C=FAR_DATA S=16_IN5_DATA    G=(none)  M=SRC\LIB\16_IN.C ACBP=68\r
+ 0A6A:0000 0080 C=FAR_DATA S=16_IN6_DATA    G=(none)  M=SRC\LIB\16_IN.C ACBP=68\r
+ 0A72:0000 0080 C=FAR_DATA S=16_IN7_DATA    G=(none)  M=SRC\LIB\16_IN.C ACBP=68\r
+ 0A7A:0000 0024 C=FAR_DATA S=16_IN8_DATA    G=(none)  M=SRC\LIB\16_IN.C ACBP=68\r
+ 0A7D:0000 0000 C=FAR_BSS S=_FARBSS        G=(none)  M=c0.ASM     ACBP=68\r
+ 0A7D:0000 0000 C=OVRINFO S=_OVERLAY_      G=(none)  M=c0.ASM     ACBP=68\r
+ 0A7D:0000 0000 C=STUBSEG S=_1STUB_        G=(none)  M=c0.ASM     ACBP=68\r
+ 0A7D:0000 0093 C=DATA   S=_DATA          G=DGROUP  M=c0.ASM     ACBP=68\r
+ 0A7D:0094 054F C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_PM.C ACBP=48\r
+ 0A7D:05E4 0045 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\NYAN\KITTEN.C ACBP=48\r
+ 0A7D:062A 0016 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_HC.C ACBP=48\r
+ 0A7D:0640 02BD C=DATA   S=_DATA          G=DGROUP  M=SRC\EXMMTEST.C ACBP=48\r
+ 0A7D:08FE 0117 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_CA.C ACBP=48\r
+ 0A7D:0A16 0011 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_HEAD.C ACBP=48\r
+ 0A7D:0A28 0A64 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_MM.C ACBP=48\r
+ 0A7D:148C 04A7 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_IN.C ACBP=48\r
+ 0A7D:1934 0066 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_DBG.C ACBP=48\r
+ 0A7D:199A 0155 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_TAIL.C ACBP=48\r
+ 0A7D:1AF0 0018 C=DATA   S=_DATA          G=DGROUP  M=SRC\LIB\16_VL_1.C ACBP=48\r
+ 0A7D:1B08 0002 C=DATA   S=_DATA          G=DGROUP  M=ATEXIT     ACBP=48\r
+ 0A7D:1B0A 0101 C=DATA   S=_DATA          G=DGROUP  M=CTYPE      ACBP=48\r
+ 0A7D:1C0C 0000 C=DATA   S=_DATA          G=DGROUP  M=DOSFATTR   ACBP=48\r
+ 0A7D:1C0C 000C C=DATA   S=_DATA          G=DGROUP  M=EXIT       ACBP=48\r
+ 0A7D:1C18 0190 C=DATA   S=_DATA          G=DGROUP  M=FILES      ACBP=48\r
+ 0A7D:1DA8 002A C=DATA   S=_DATA          G=DGROUP  M=FILES2     ACBP=48\r
+ 0A7D:1DD2 0004 C=DATA   S=_DATA          G=DGROUP  M=FMODE      ACBP=48\r
+ 0A7D:1DD6 0000 C=DATA   S=_DATA          G=DGROUP  M=GETVECT    ACBP=48\r
+ 0A7D:1DD6 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LDIV     ACBP=48\r
+ 0A7D:1DD6 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LLSH     ACBP=48\r
+ 0A7D:1DD6 0000 C=DATA   S=_DATA          G=DGROUP  M=H_LURSH    ACBP=48\r
+ 0A7D:1DD6 0000 C=DATA   S=_DATA          G=DGROUP  M=H_PADD     ACBP=48\r
+ 0A7D:1DD6 0000 C=DATA   S=_DATA          G=DGROUP  M=H_PSBP     ACBP=48\r
+ 0A7D:1DD6 005B C=DATA   S=_DATA          G=DGROUP  M=IOERROR    ACBP=48\r
+ 0A7D:1E32 0000 C=DATA   S=_DATA          G=DGROUP  M=ISATTY     ACBP=48\r
+ 0A7D:1E32 0000 C=DATA   S=_DATA          G=DGROUP  M=LONGTOA    ACBP=48\r
+ 0A7D:1E32 0000 C=DATA   S=_DATA          G=DGROUP  M=LSEEK      ACBP=48\r
+ 0A7D:1E32 0009 C=DATA   S=_DATA          G=DGROUP  M=MKNAME     ACBP=48\r
+ 0A7D:1E3C 0000 C=DATA   S=_DATA          G=DGROUP  M=N_PCMP     ACBP=48\r
+ 0A7D:1E3C 0000 C=DATA   S=_DATA          G=DGROUP  M=READA      ACBP=48\r
+ 0A7D:1E3C 0000 C=DATA   S=_DATA          G=DGROUP  M=SETUPIO    ACBP=48\r
+ 0A7D:1E3C 0002 C=DATA   S=_DATA          G=DGROUP  M=STKLEN     ACBP=48\r
+ 0A7D:1E3E 0000 C=DATA   S=_DATA          G=DGROUP  M=TOLOWER    ACBP=48\r
+ 0A7D:1E3E 0000 C=DATA   S=_DATA          G=DGROUP  M=UNLINK     ACBP=48\r
+ 0A7D:1E3E 0067 C=DATA   S=_DATA          G=DGROUP  M=VPRINTER   ACBP=48\r
+ 0A7D:1EA6 0000 C=DATA   S=_DATA          G=DGROUP  M=VRAM       ACBP=48\r
+ 0A7D:1EA6 0002 C=DATA   S=_DATA          G=DGROUP  M=WSCROLL    ACBP=48\r
+ 0A7D:1EA8 0000 C=DATA   S=_DATA          G=DGROUP  M=_STPCPY    ACBP=48\r
+ 0A7D:1EA8 0000 C=DATA   S=_DATA          G=DGROUP  M=CLRSCR     ACBP=48\r
+ 0A7D:1EA8 0000 C=DATA   S=_DATA          G=DGROUP  M=CORELEFT   ACBP=48\r
+ 0A7D:1EA8 0000 C=DATA   S=_DATA          G=DGROUP  M=CPRINTF    ACBP=48\r
+ 0A7D:1EA8 0018 C=DATA   S=_DATA          G=DGROUP  M=CRTINIT    ACBP=48\r
+ 0A7D:1EC0 0031 C=DATA   S=_DATA          G=DGROUP  M=CVTFAK     ACBP=48\r
+ 0A7D:1EF2 0000 C=DATA   S=_DATA          G=DGROUP  M=FARHEAP    ACBP=48\r
+ 0A7D:1EF2 0002 C=DATA   S=_DATA          G=DGROUP  M=FBRK       ACBP=48\r
+ 0A7D:1EF4 0000 C=DATA   S=_DATA          G=DGROUP  M=FCORELFT   ACBP=48\r
+ 0A7D:1EF4 0000 C=DATA   S=_DATA          G=DGROUP  M=GETCH      ACBP=48\r
+ 0A7D:1EF4 0000 C=DATA   S=_DATA          G=DGROUP  M=GOTOXY     ACBP=48\r
+ 0A7D:1EF4 0000 C=DATA   S=_DATA          G=DGROUP  M=GPTEXT     ACBP=48\r
+ 0A7D:1EF4 0000 C=DATA   S=_DATA          G=DGROUP  M=IOCTL      ACBP=48\r
+ 0A7D:1EF4 0002 C=DATA   S=_DATA          G=DGROUP  M=KBHIT      ACBP=48\r
+ 0A7D:1EF6 0000 C=DATA   S=_DATA          G=DGROUP  M=MOVETEXT   ACBP=48\r
+ 0A7D:1EF6 0000 C=DATA   S=_DATA          G=DGROUP  M=PUTCH      ACBP=48\r
+ 0A7D:1EF6 0000 C=DATA   S=_DATA          G=DGROUP  M=REALCVT    ACBP=48\r
+ 0A7D:1EF6 0000 C=DATA   S=_DATA          G=DGROUP  M=SCREEN     ACBP=48\r
+ 0A7D:1EF6 0000 C=DATA   S=_DATA          G=DGROUP  M=SCROLL     ACBP=48\r
+ 0A7D:1EF6 0010 C=DATA   S=_DATA          G=DGROUP  M=SETARGV    ACBP=48\r
+ 0A7D:1F06 0000 C=DATA   S=_DATA          G=DGROUP  M=SETBLOCK   ACBP=48\r
+ 0A7D:1F06 0004 C=DATA   S=_DATA          G=DGROUP  M=SETENVP    ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=WHEREXY    ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=CHMODA     ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOSE      ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=CLOSEA     ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=FCLOSE     ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=FFLUSH     ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=FLENGTH    ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=FLUSHALL   ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=FOPEN      ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=FPRINTF    ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=FSEEK      ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=GETENV     ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=LTOA1      ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=MEMCPY     ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=MOVEDATA   ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=OPEN       ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=OPENA      ACBP=48\r
+ 0A7D:1F0A 0000 C=DATA   S=_DATA          G=DGROUP  M=PRINTF     ACBP=48\r
+ 0A7D:1F0A 0001 C=DATA   S=_DATA          G=DGROUP  M=PUTC       ACBP=48\r
+ 0A7D:1F0C 0000 C=DATA   S=_DATA          G=DGROUP  M=READ       ACBP=48\r
+ 0A7D:1F0C 0000 C=DATA   S=_DATA          G=DGROUP  M=READU      ACBP=48\r
+ 0A7D:1F0C 0004 C=DATA   S=_DATA          G=DGROUP  M=SETVBUF    ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=SPRINTF    ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=STRCAT     ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=STRDUP     ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=STRLEN     ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITE      ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITEA     ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=WRITEU     ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=XFCLOSE    ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=XFFLUSH    ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=FMEMCMP    ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=FMEMCPY    ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_DATA          G=DGROUP  M=FMEMSET    ACBP=48\r
+ 0A7D:1F10 0000 C=DATA   S=_CVTSEG        G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0A7D:1F10 0002 C=DATA   S=_CVTSEG        G=DGROUP  M=CVTFAK     ACBP=48\r
+ 0A7D:1F12 0000 C=DATA   S=_CVTSEG        G=DGROUP  M=REALCVT    ACBP=48\r
+ 0A7D:1F12 0000 C=DATA   S=_SCNSEG        G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0A7D:1F12 0006 C=DATA   S=_SCNSEG        G=DGROUP  M=CVTFAK     ACBP=48\r
+ 0A7D:1F18 0000 C=CONST  S=_CONST         G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0A7D:1F18 0000 C=INITDATA S=_INIT_         G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0A7D:1F18 0006 C=INITDATA S=_INIT_         G=DGROUP  M=SETUPIO    ACBP=48\r
+ 0A7D:1F1E 0006 C=INITDATA S=_INIT_         G=DGROUP  M=CRTINIT    ACBP=48\r
+ 0A7D:1F24 0006 C=INITDATA S=_INIT_         G=DGROUP  M=SETARGV    ACBP=48\r
+ 0A7D:1F2A 0006 C=INITDATA S=_INIT_         G=DGROUP  M=SETENVP    ACBP=48\r
+ 0A7D:1F30 0000 C=INITDATA S=_INITEND_      G=DGROUP  M=c0.ASM     ACBP=28\r
+ 0A7D:1F30 0000 C=EXITDATA S=_EXIT_         G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0A7D:1F30 0000 C=EXITDATA S=_EXITEND_      G=DGROUP  M=c0.ASM     ACBP=28\r
+ 0A7D:1F30 0000 C=BSS    S=_BSS           G=DGROUP  M=c0.ASM     ACBP=48\r
+ 0A7D:1F30 0016 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_PM.C ACBP=48\r
+ 0A7D:1F46 0004 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\NYAN\KITTEN.C ACBP=48\r
+ 0A7D:1F4A 0000 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_HC.C ACBP=48\r
+ 0A7D:1F4A 50D5 C=BSS    S=_BSS           G=DGROUP  M=SRC\EXMMTEST.C ACBP=48\r
+ 0A7D:7020 000C C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_CA.C ACBP=48\r
+ 0A7D:702C 0000 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_HEAD.C ACBP=48\r
+ 0A7D:702C 000C C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_MM.C ACBP=48\r
+ 0A7D:7038 0124 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_IN.C ACBP=48\r
+ 0A7D:715C 000E C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_DBG.C ACBP=48\r
+ 0A7D:716A 0423 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_TAIL.C ACBP=48\r
+ 0A7D:758E 0000 C=BSS    S=_BSS           G=DGROUP  M=SRC\LIB\16_VL_1.C ACBP=48\r
+ 0A7D:758E 0080 C=BSS    S=_BSS           G=DGROUP  M=ATEXIT     ACBP=48\r
+ 0A7D:760E 0000 C=BSS    S=_BSS           G=DGROUP  M=DOSFATTR   ACBP=48\r
+ 0A7D:760E 0000 C=BSS    S=_BSS           G=DGROUP  M=GETVECT    ACBP=48\r
+ 0A7D:760E 0000 C=BSS    S=_BSS           G=DGROUP  M=IOERROR    ACBP=48\r
+ 0A7D:760E 0000 C=BSS    S=_BSS           G=DGROUP  M=ISATTY     ACBP=48\r
+ 0A7D:760E 0000 C=BSS    S=_BSS           G=DGROUP  M=LONGTOA    ACBP=48\r
+ 0A7D:760E 0000 C=BSS    S=_BSS           G=DGROUP  M=LSEEK      ACBP=48\r
+ 0A7D:760E 000D C=BSS    S=_BSS           G=DGROUP  M=MKNAME     ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=READA      ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=SETUPIO    ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=UNLINK     ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=VPRINTER   ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=VRAM       ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=CORELEFT   ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=CRTINIT    ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=GETCH      ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=IOCTL      ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=KBHIT      ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=SETBLOCK   ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=CHMODA     ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=CLOSEA     ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=FLENGTH    ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=GETENV     ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=MEMCPY     ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=MOVEDATA   ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=OPEN       ACBP=48\r
+ 0A7D:761C 0000 C=BSS    S=_BSS           G=DGROUP  M=OPENA      ACBP=48\r
+ 0A7D:761C 0001 C=BSS    S=_BSS           G=DGROUP  M=PUTC       ACBP=48\r
+ 0A7D:761E 0000 C=BSS    S=_BSS           G=DGROUP  M=READ       ACBP=48\r
+ 0A7D:761E 0000 C=BSS    S=_BSS           G=DGROUP  M=STRCAT     ACBP=48\r
+ 0A7D:761E 0000 C=BSS    S=_BSS           G=DGROUP  M=STRLEN     ACBP=48\r
+ 0A7D:761E 0000 C=BSS    S=_BSS           G=DGROUP  M=WRITEA     ACBP=48\r
+ 0A7D:761E 0000 C=BSS    S=_BSS           G=DGROUP  M=FMEMCMP    ACBP=48\r
+ 0A7D:761E 0000 C=BSS    S=_BSS           G=DGROUP  M=FMEMCPY    ACBP=48\r
+ 0A7D:761E 0000 C=BSS    S=_BSS           G=DGROUP  M=FMEMSET    ACBP=48\r
+ 0A7D:761E 0000 C=BSSEND S=_BSSEND        G=DGROUP  M=c0.ASM     ACBP=28\r
+ 11DF:0000 0080 C=STACK  S=_STACK         G=(none)  M=c0.ASM     ACBP=74\r
+\r
+  Address         Publics by Name\r
+\r
+ 0A7D:0000 idle  DATASEG@\r
+ 0000:0291 idle  DGROUP@\r
+ 0000:03B5       F_LDIV@\r
+ 0000:03C4 idle  F_LMOD@\r
+ 0000:03BC idle  F_LUDIV@\r
+ 0000:03CC idle  F_LUMOD@\r
+ 0000:0463       F_LXLSH@\r
+ 0000:0484       F_LXURSH@\r
+ 0000:04A5 idle  F_PADD@\r
+ 0000:0505 idle  F_PSBP@\r
+ 0000:04D4 idle  F_PSUB@\r
+ 04C2:0009 idle  KITTENGETS\r
+ 0000:03B5 idle  LDIV@\r
+ 0000:03C4 idle  LMOD@\r
+ 0000:03BC idle  LUDIV@\r
+ 0000:03CC idle  LUMOD@\r
+ 0000:0463 idle  LXLSH@\r
+ 0000:0484 idle  LXURSH@\r
+ 0000:03B2 idle  N_LDIV@\r
+ 0000:03C1 idle  N_LMOD@\r
+ 0000:03B9 idle  N_LUDIV@\r
+ 0000:03C9 idle  N_LUMOD@\r
+ 0000:0460       N_LXLSH@\r
+ 0000:0481 idle  N_LXURSH@\r
+ 0000:04A2       N_PADD@\r
+ 0000:0707       N_PCMP@\r
+ 0000:0502       N_PSBP@\r
+ 0000:04D1 idle  N_PSUB@\r
+ 0000:04A5 idle  PADD@\r
+ 0000:0505 idle  PSBP@\r
+ 0000:04D4 idle  PSUB@\r
+ 0000:027A       _abort\r
+ 0A7D:7030 idle  _aftersort\r
+ 0000:0295 idle  _atexit\r
+ 0A7D:7034 idle  _beforesort\r
+ 0992:0500 idle  _booleantest\r
+ 0992:042D idle  _boolean_to_binary\r
+ 0A7D:703C idle  _btnstate\r
+ 05A2:042D idle  _CAL_CarmackExpand\r
+ 05A2:032D idle  _CAL_HuffExpand\r
+ 05A2:02BC idle  _CAL_OptimizeNodes\r
+ 05A2:0722 idle  _CAL_SetupMapFile\r
+ 04C2:0286 idle  _catread\r
+ 05A2:0857 idle  _CA_ClearAllMarks\r
+ 05A2:0822 idle  _CA_ClearMarks\r
+ 05A2:0031       _CA_CloseDebug\r
+ 05A2:07F5 idle  _CA_DownLevel\r
+ 05A2:0046       _CA_FarRead\r
+ 05A2:00C0 idle  _CA_FarWrite\r
+ 05A2:0225       _CA_LoadFile\r
+ 05A2:0006       _CA_OpenDebug\r
+ 05A2:013A       _CA_ReadFile\r
+ 05A2:057D idle  _CA_RLEWCompress\r
+ 05A2:066F idle  _CA_RLEWexpand\r
+ 05A2:08DB idle  _CA_SetAllPurge\r
+ 05A2:0884 idle  _CA_SetGrPurge\r
+ 05A2:07A6       _CA_Shutdown\r
+ 05A2:075A       _CA_Startup\r
+ 05A2:07CB idle  _CA_UpLevel\r
+ 05A2:01B7 idle  _CA_WriteFile\r
+ 0992:025B idle  _ClearMemory\r
+ 0000:1E89       _close\r
+ 0000:0E03       _clrscr\r
+ 0000:0E2C       _coreleft\r
+ 0000:0F64 idle  _cprintf\r
+ 0A7D:193C idle  _dbg_delayanimation\r
+ 0A7D:7166 idle  _dbg_mapdata\r
+ 0A7D:193A idle  _dbg_maptext\r
+ 0A7D:1938       _dbg_nointest\r
+ 0A7D:1936       _dbg_testcontrolnoisy\r
+ 0A7D:1934       _dbg_testkeyin\r
+ 04C2:0597 idle  _db_fetch\r
+ 04C2:05FF idle  _db_insert\r
+ 0992:00BC       _DebugMemory_\r
+ 0639:0499       _dirchar\r
+ 0A7D:1EB7       _directvideo\r
+ 0A7D:7028 idle  _drawcachebox\r
+ 0A7D:1F06       _environ\r
+ 0A7D:007F       _errno\r
+ 0000:0357       _exit\r
+ 0000:16B6       _farcoreleft\r
+ 0000:1284       _farfree\r
+ 0000:1398       _farmalloc\r
+ 0000:14FC idle  _farrealloc\r
+ 0000:1ECF       _fclose\r
+ 0000:1F87       _fflush\r
+ 0000:2054       _filelength\r
+ 0639:0005 idle  _filesize\r
+ 0A7D:7020 idle  _finishcachebox\r
+ 0000:2095       _flushall\r
+ 0000:22AE       _fopen\r
+ 0000:22E3       _fprintf\r
+ 0000:2829 idle  _fputc\r
+ 0000:29BE idle  _fputchar\r
+ 0000:1284       _free\r
+ 0000:2381       _fseek\r
+ 0000:2401       _ftell\r
+ 0000:1706       _getch\r
+ 0000:1722 idle  _getche\r
+ 0000:24E1       _getenv\r
+ 0000:17AD       _gettext\r
+ 0000:0392       _getvect\r
+ 04C2:0540 idle  _get_line\r
+ 0A7D:738D idle  _global_temp_status_text\r
+ 0A7D:718D idle  _global_temp_status_text2\r
+ 0000:1764       _gotoxy\r
+ 052D:0407 idle  _HC_CloseDebug\r
+ 052D:01B5 idle  _HC_coreleft\r
+ 052D:000A       _HC_farcoreleft\r
+ 052D:030A idle  _HC_farcoreleft_\r
+ 052D:0245 idle  _HC_LargestFarFreeBlock\r
+ 052D:00F9 idle  _HC_LargestFreeBlock\r
+ 052D:03DC idle  _HC_OpenDebug\r
+ 0856:0268 idle  _INL_GetJoyDelta\r
+ 0856:000F idle  _INL_KeyService\r
+ 0856:0182 idle  _INL_Mouse\r
+ 0856:0FD7       _IN_Ack\r
+ 0856:0F51 idle  _IN_CheckAck\r
+ 0856:1122       _IN_ClearKey\r
+ 0856:08D2 idle  _IN_ClearKeysDown\r
+ 0856:07D3 idle  _IN_Default\r
+ 0856:1199 idle  _IN_GetCurCode\r
+ 0856:01CB idle  _IN_GetJoyAbs\r
+ 0856:042A idle  _IN_GetJoyButtonsDB\r
+ 0856:1195 idle  _IN_GetLastScan\r
+ 0856:0E53 idle  _IN_GetScanName\r
+ 0856:0FFA idle  _IN_IsUserInput\r
+ 0856:10D3 idle  _IN_JoyButtons\r
+ 0856:119D idle  _IN_KbdLED\r
+ 0856:10F0 idle  _IN_KeyDown\r
+ 0856:10AA idle  _IN_MouseButtons\r
+ 0856:1144 idle  _IN_qb\r
+ 0856:09F2 idle  _IN_ReadControl\r
+ 0856:0922 idle  _IN_ReadCursor\r
+ 0856:0E44 idle  _IN_SetControlType\r
+ 0856:08C0 idle  _IN_SetKeyHook\r
+ 0856:05BC idle  _IN_SetupJoy\r
+ 0856:087B       _IN_Shutdown\r
+ 0856:0EE8 idle  _IN_StartAck\r
+ 0856:06EE       _IN_Startup\r
+ 0856:1061 idle  _IN_UserInput\r
+ 0856:0ECB idle  _IN_WaitForASCII\r
+ 0856:0EAD idle  _IN_WaitForKey\r
+ 0000:1859       _ioctl\r
+ 0000:0575       _isatty\r
+ 0000:2551 idle  _itoa\r
+ 0000:1882       _kbhit\r
+ 04C2:033E idle  _kittenclose\r
+ 04C2:005C idle  _kittenopen\r
+ 0000:0628       _lseek\r
+ 0000:2599 idle  _ltoa\r
+ 056E:002E       _main\r
+ 0000:138E       _malloc\r
+ 0000:25C1       _memcpy\r
+ 0686:000F       _MML_CheckForEMS\r
+ 0686:00B5       _MML_CheckForXMS\r
+ 0686:035F idle  _MML_ClearBlock\r
+ 0686:00E1 idle  _MML_UseSpace\r
+ 0686:1CDC       _MM_BombOnError\r
+ 0686:143C       _MM_DumpData\r
+ 0686:18AF       _MM_EMSerr\r
+ 0686:09C9       _MM_FreePtr\r
+ 0686:06AA       _MM_GetPtr\r
+ 0686:16BB       _MM_Report_\r
+ 0686:0B81       _MM_SetLock\r
+ 0686:0ACC       _MM_SetPurge\r
+ 0686:0DE3       _MM_ShowMemory\r
+ 0686:1294 idle  _MM_ShowMemoryVidVer\r
+ 0686:0670       _MM_Shutdown\r
+ 0686:0C3B       _MM_SortMem\r
+ 0686:03D4       _MM_Startup\r
+ 0686:1623       _MM_TotalFree\r
+ 0686:15A9       _MM_UnusedMemory\r
+ 0992:0568       _modexPalOverscan\r
+ 0000:25E5       _movedata\r
+ 0000:1894       _movetext\r
+ 04C2:0345 idle  _mystrtoul\r
+ 0992:0498 idle  _nibbletest\r
+ 0992:03C2 idle  _nibble_to_binary\r
+ 0000:2634       _open\r
+ 0318:0AF8 idle  _PML_ClosePageFile\r
+ 0318:1054 idle  _PML_GetAPageBuffer\r
+ 0318:0B53 idle  _PML_GetEMSAddress\r
+ 0318:11D0 idle  _PML_GetPageFromXMS\r
+ 0318:0D03 idle  _PML_GiveLRUPage\r
+ 0318:0DBF idle  _PML_GiveLRUXMSPage\r
+ 0318:127E idle  _PML_LoadPage\r
+ 0318:0001 idle  _PML_MapEMS\r
+ 0318:085B idle  _PML_OpenPageFile\r
+ 0318:0E51 idle  _PML_PutPageInXMS\r
+ 0318:07B1 idle  _PML_ReadFromFile\r
+ 0318:0201 idle  _PML_ShutdownEMS\r
+ 0318:0768 idle  _PML_ShutdownMainMem\r
+ 0318:0465 idle  _PML_ShutdownXMS\r
+ 0318:0096 idle  _PML_StartupEMS\r
+ 0318:068D idle  _PML_StartupMainMem\r
+ 0318:0289 idle  _PML_StartupXMS\r
+ 0318:0F43 idle  _PML_TransferPageSpace\r
+ 0318:0394 idle  _PML_XMSCopy\r
+ 0318:051E       _PM_CheckMainMem\r
+ 0318:12E3       _PM_GetPage\r
+ 0318:0C95       _PM_GetPageAddress\r
+ 0318:17B4 idle  _PM_NextFrame\r
+ 0318:1461 idle  _PM_Preload\r
+ 0318:18B4 idle  _PM_Reset\r
+ 0318:04B6       _PM_SetMainMemPurge\r
+ 0318:1425 idle  _PM_SetPageLock\r
+ 0318:1A60       _PM_Shutdown\r
+ 0318:194E       _PM_Startup\r
+ 0000:27F2       _printf\r
+ 0639:022B idle  _printmeminfoline\r
+ 04C2:03E1 idle  _processEscChars\r
+ 0000:1931       _putch\r
+ 0000:1803       _puttext\r
+ 0992:0280       _Quit\r
+ 0000:2CA6       _read\r
+ 0000:14F5 idle  _realloc\r
+ 0639:006C idle  _remove_ext\r
+ 0639:01D4 idle  _rotateL\r
+ 0639:017D idle  _rotateR\r
+ 0000:1DCC       _setblock\r
+ 0000:2CA9       _setvbuf\r
+ 0000:03A1       _setvect\r
+ 0971:000D idle  _ShapeTest_\r
+ 0992:0080 idle  _Shutdown16\r
+ 0000:2E06       _sprintf\r
+ 0992:000E idle  _Startup16\r
+ 0000:2E49       _strcat\r
+ 0000:2E88       _strdup\r
+ 0000:2ECE       _strlen\r
+ 0992:00AF idle  _TL_VidInit\r
+ 0000:0811       _tolower\r
+ 0000:257C       _ultoa\r
+ 0000:1746 idle  _ungetch\r
+ 0000:083D       _unlink\r
+ 0A7D:7024 idle  _updatecachebox\r
+ 0639:03C6       _US_CheckParm\r
+ 09E9:075C idle  _VGAMAPMASK\r
+ 056E:000C idle  _VGAmodeX\r
+ 09E9:077D idle  _VGAREADMAP\r
+ 09E9:076A idle  _VGAWRITEMODE\r
+ 09E9:0601 idle  _VL_Bar\r
+ 09E9:025E       _VL_FadeIn\r
+ 09E9:00F0 idle  _VL_FadeOut\r
+ 09E9:000D idle  _VL_FillPalette\r
+ 09E9:0056 idle  _VL_GetColor\r
+ 09E9:00C4 idle  _VL_GetPalette\r
+ 09E9:046E       _VL_Hlin\r
+ 09E9:0407       _VL_Plot\r
+ 09E9:003B idle  _VL_SetColor\r
+ 09E9:0080 idle  _VL_SetPalette\r
+ 09E9:0378 idle  _VL_TestPaletteSet\r
+ 09E9:057D idle  _VL_Vlin\r
+ 09E9:0744 idle  _VL_WaitVBL\r
+ 0000:2E28 idle  _vsprintf\r
+ 0000:1E4A idle  _wherex\r
+ 0000:1E59 idle  _wherey\r
+ 0992:0357 idle  _word_to_binary\r
+ 0000:307A       _write\r
+ 0A7D:702C idle  _XMSaddr\r
+ 0A7D:1F42       _XMSDriver\r
+ 0A7D:1F40       _XMSVer\r
+ 0686:1CEC idle  _xms_call\r
+ 0000:1000 idle  __AHINCR\r
+ 0000:000C idle  __AHSHIFT\r
+ 0A7D:1EF6       __argc\r
+ 0A7D:1EF8       __argv\r
+ 0A7D:1B08       __atexitcnt\r
+ 0A7D:758E       __atexittbl\r
+ 0000:15EC       __brk\r
+ 0A7D:008B       __brklvl\r
+ 0A7D:006B       __C0argc\r
+ 0A7D:006D       __C0argv\r
+ 0000:1046 idle  __c0crtinit\r
+ 0A7D:0071       __C0environ\r
+ 0A7D:1EF5       __cChar\r
+ 0000:0378 idle  __cexit\r
+ 0A7D:1EF4       __cFlag\r
+ 0000:016A       __checknull\r
+ 0000:1E6C       __chmod\r
+ 0000:0157       __cleanup\r
+ 0000:1EB1       __close\r
+ 0000:0E32       __CPUTN\r
+ 0000:1063 idle  __crtinit\r
+ 0A7D:1B0A       __ctype\r
+ 0000:0000  Abs  __cvtfak\r
+ 0000:0386 idle  __c_exit\r
+ 0A7D:1DD6       __doserrno\r
+ 0000:0563       __DOSERROR\r
+ 0A7D:1DD8 idle  __dosErrorToSV\r
+ 0000:02C2       __dos_getfileattr\r
+ 0000:02E2 idle  __dos_setfileattr\r
+ 0A7D:0075       __envLng\r
+ 0A7D:0077       __envseg\r
+ 0A7D:0079       __envSize\r
+ 0000:0366       __exit\r
+ 0A7D:1C0C       __exitbuf\r
+ 0A7D:1C10       __exitfopen\r
+ 0A7D:1C14 idle  __exitopen\r
+ 0000:30F2       __fmemcmp\r
+ 0000:311A       __fmemcpy\r
+ 0000:3162       __fmemset\r
+ 0A7D:1DD2       __fmode\r
+ 0000:280D idle  __fputc\r
+ 0000:29D2       __FPUTN\r
+ 0000:313E idle  __fsetmem\r
+ 0000:2264 idle  __GETFP\r
+ 0A7D:0087       __heapbase\r
+ 0A7D:008F       __heaptop\r
+ 0A7D:005B idle  __Int0Vector\r
+ 0A7D:005F idle  __Int4Vector\r
+ 0A7D:0063 idle  __Int5Vector\r
+ 0A7D:0067 idle  __Int6Vector\r
+ 0000:052A       __IOERROR\r
+ 0A7D:05E4 idle  __kitten_catalog\r
+ 0000:0586       __LONGTOA\r
+ 0000:0651       __MKNAME\r
+ 0000:0293 idle  __MMODEL\r
+ 0A7D:1DA8       __nfile\r
+ 0000:171F idle  __Ngetche\r
+ 0A7D:1DD4       __notUmask\r
+ 0000:1743 idle  __Nungetch\r
+ 0000:27A3       __open\r
+ 0A7D:1DAA       __openfd\r
+ 0000:2193 idle  __OPENFP\r
+ 0A7D:007D       __osmajor\r
+ 0A7D:007E idle  __osminor\r
+ 0A7D:007D idle  __osversion\r
+ 0A7D:007B       __psp\r
+ 0000:0728       __read\r
+ 0000:1948       __REALCVT\r
+ 0A7D:1F10       __RealCvtVector\r
+ 0000:01C0       __restorezero\r
+ 0000:162B       __sbrk\r
+ 0A7D:1F12 idle  __ScanTodVector\r
+ 0000:1A82       __SCREENIO\r
+ 0000:1B35       __SCROLL\r
+ 0000:0000  Abs  __setargv__\r
+ 0000:0000 idle  __setenvp__\r
+ 0000:0757       __setupio\r
+ 0A7D:0081 idle  __StartTime\r
+ 0A7D:1E3C       __stklen\r
+ 0000:0DCF       __stpcpy\r
+ 0A7D:1C18       __streams\r
+ 0000:016B       __terminate\r
+ 0000:06AE idle  __TMPNAM\r
+ 0000:0000 idle  __turboCrt\r
+ 0000:0608       __UTOA\r
+ 0000:1ABE       __VALIDATEXY\r
+ 0A7D:007D idle  __version\r
+ 0A7D:1EA8       __video\r
+ 0000:0FBB       __VideoInt\r
+ 0000:086D       __VPRINTER\r
+ 0000:0D30       __VPTR\r
+ 0000:0D55       __VRAM\r
+ 0000:1E40       __wherexy\r
+ 0000:303E       __write\r
+ 0A7D:1EA6       __wscroll\r
+ 0000:307D       __xfclose\r
+ 0000:30BA       __xfflush\r
+ 0A7D:0085 idle  ___brklvl\r
+ 0000:1144 idle  ___first\r
+ 0000:1146 idle  ___last\r
+ 0000:2BD5       ___read\r
+ 0000:1148 idle  ___rover\r
+ 0000:2EED       ___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:0157       __cleanup\r
+ 0000:016A       __checknull\r
+ 0000:016B       __terminate\r
+ 0000:01C0       __restorezero\r
+ 0000:027A       _abort\r
+ 0000:0291 idle  DGROUP@\r
+ 0000:0293 idle  __MMODEL\r
+ 0000:0295 idle  _atexit\r
+ 0000:02C2       __dos_getfileattr\r
+ 0000:02E2 idle  __dos_setfileattr\r
+ 0000:0357       _exit\r
+ 0000:0366       __exit\r
+ 0000:0378 idle  __cexit\r
+ 0000:0386 idle  __c_exit\r
+ 0000:0392       _getvect\r
+ 0000:03A1       _setvect\r
+ 0000:03B2 idle  N_LDIV@\r
+ 0000:03B5       F_LDIV@\r
+ 0000:03B5 idle  LDIV@\r
+ 0000:03B9 idle  N_LUDIV@\r
+ 0000:03BC idle  F_LUDIV@\r
+ 0000:03BC idle  LUDIV@\r
+ 0000:03C1 idle  N_LMOD@\r
+ 0000:03C4 idle  F_LMOD@\r
+ 0000:03C4 idle  LMOD@\r
+ 0000:03C9 idle  N_LUMOD@\r
+ 0000:03CC idle  LUMOD@\r
+ 0000:03CC idle  F_LUMOD@\r
+ 0000:0460       N_LXLSH@\r
+ 0000:0463       F_LXLSH@\r
+ 0000:0463 idle  LXLSH@\r
+ 0000:0481 idle  N_LXURSH@\r
+ 0000:0484       F_LXURSH@\r
+ 0000:0484 idle  LXURSH@\r
+ 0000:04A2       N_PADD@\r
+ 0000:04A5 idle  F_PADD@\r
+ 0000:04A5 idle  PADD@\r
+ 0000:04D1 idle  N_PSUB@\r
+ 0000:04D4 idle  F_PSUB@\r
+ 0000:04D4 idle  PSUB@\r
+ 0000:0502       N_PSBP@\r
+ 0000:0505 idle  PSBP@\r
+ 0000:0505 idle  F_PSBP@\r
+ 0000:052A       __IOERROR\r
+ 0000:0563       __DOSERROR\r
+ 0000:0575       _isatty\r
+ 0000:0586       __LONGTOA\r
+ 0000:0608       __UTOA\r
+ 0000:0628       _lseek\r
+ 0000:0651       __MKNAME\r
+ 0000:06AE idle  __TMPNAM\r
+ 0000:0707       N_PCMP@\r
+ 0000:0728       __read\r
+ 0000:0757       __setupio\r
+ 0000:0811       _tolower\r
+ 0000:083D       _unlink\r
+ 0000:086D       __VPRINTER\r
+ 0000:0D30       __VPTR\r
+ 0000:0D55       __VRAM\r
+ 0000:0DCF       __stpcpy\r
+ 0000:0E03       _clrscr\r
+ 0000:0E2C       _coreleft\r
+ 0000:0E32       __CPUTN\r
+ 0000:0F64 idle  _cprintf\r
+ 0000:0FBB       __VideoInt\r
+ 0000:1000 idle  __AHINCR\r
+ 0000:1046 idle  __c0crtinit\r
+ 0000:1063 idle  __crtinit\r
+ 0000:1144 idle  ___first\r
+ 0000:1146 idle  ___last\r
+ 0000:1148 idle  ___rover\r
+ 0000:1284       _free\r
+ 0000:1284       _farfree\r
+ 0000:138E       _malloc\r
+ 0000:1398       _farmalloc\r
+ 0000:14F5 idle  _realloc\r
+ 0000:14FC idle  _farrealloc\r
+ 0000:15EC       __brk\r
+ 0000:162B       __sbrk\r
+ 0000:16B6       _farcoreleft\r
+ 0000:1706       _getch\r
+ 0000:171F idle  __Ngetche\r
+ 0000:1722 idle  _getche\r
+ 0000:1743 idle  __Nungetch\r
+ 0000:1746 idle  _ungetch\r
+ 0000:1764       _gotoxy\r
+ 0000:17AD       _gettext\r
+ 0000:1803       _puttext\r
+ 0000:1859       _ioctl\r
+ 0000:1882       _kbhit\r
+ 0000:1894       _movetext\r
+ 0000:1931       _putch\r
+ 0000:1948       __REALCVT\r
+ 0000:1A82       __SCREENIO\r
+ 0000:1ABE       __VALIDATEXY\r
+ 0000:1B35       __SCROLL\r
+ 0000:1DCC       _setblock\r
+ 0000:1E40       __wherexy\r
+ 0000:1E4A idle  _wherex\r
+ 0000:1E59 idle  _wherey\r
+ 0000:1E6C       __chmod\r
+ 0000:1E89       _close\r
+ 0000:1EB1       __close\r
+ 0000:1ECF       _fclose\r
+ 0000:1F87       _fflush\r
+ 0000:2054       _filelength\r
+ 0000:2095       _flushall\r
+ 0000:2193 idle  __OPENFP\r
+ 0000:2264 idle  __GETFP\r
+ 0000:22AE       _fopen\r
+ 0000:22E3       _fprintf\r
+ 0000:2381       _fseek\r
+ 0000:2401       _ftell\r
+ 0000:24E1       _getenv\r
+ 0000:2551 idle  _itoa\r
+ 0000:257C       _ultoa\r
+ 0000:2599 idle  _ltoa\r
+ 0000:25C1       _memcpy\r
+ 0000:25E5       _movedata\r
+ 0000:2634       _open\r
+ 0000:27A3       __open\r
+ 0000:27F2       _printf\r
+ 0000:280D idle  __fputc\r
+ 0000:2829 idle  _fputc\r
+ 0000:29BE idle  _fputchar\r
+ 0000:29D2       __FPUTN\r
+ 0000:2BD5       ___read\r
+ 0000:2CA6       _read\r
+ 0000:2CA9       _setvbuf\r
+ 0000:2E06       _sprintf\r
+ 0000:2E28 idle  _vsprintf\r
+ 0000:2E49       _strcat\r
+ 0000:2E88       _strdup\r
+ 0000:2ECE       _strlen\r
+ 0000:2EED       ___write\r
+ 0000:303E       __write\r
+ 0000:307A       _write\r
+ 0000:307D       __xfclose\r
+ 0000:30BA       __xfflush\r
+ 0000:30F2       __fmemcmp\r
+ 0000:311A       __fmemcpy\r
+ 0000:313E idle  __fsetmem\r
+ 0000:3162       __fmemset\r
+ 0318:0001 idle  _PML_MapEMS\r
+ 0318:0096 idle  _PML_StartupEMS\r
+ 0318:0201 idle  _PML_ShutdownEMS\r
+ 0318:0289 idle  _PML_StartupXMS\r
+ 0318:0394 idle  _PML_XMSCopy\r
+ 0318:0465 idle  _PML_ShutdownXMS\r
+ 0318:04B6       _PM_SetMainMemPurge\r
+ 0318:051E       _PM_CheckMainMem\r
+ 0318:068D idle  _PML_StartupMainMem\r
+ 0318:0768 idle  _PML_ShutdownMainMem\r
+ 0318:07B1 idle  _PML_ReadFromFile\r
+ 0318:085B idle  _PML_OpenPageFile\r
+ 0318:0AF8 idle  _PML_ClosePageFile\r
+ 0318:0B53 idle  _PML_GetEMSAddress\r
+ 0318:0C95       _PM_GetPageAddress\r
+ 0318:0D03 idle  _PML_GiveLRUPage\r
+ 0318:0DBF idle  _PML_GiveLRUXMSPage\r
+ 0318:0E51 idle  _PML_PutPageInXMS\r
+ 0318:0F43 idle  _PML_TransferPageSpace\r
+ 0318:1054 idle  _PML_GetAPageBuffer\r
+ 0318:11D0 idle  _PML_GetPageFromXMS\r
+ 0318:127E idle  _PML_LoadPage\r
+ 0318:12E3       _PM_GetPage\r
+ 0318:1425 idle  _PM_SetPageLock\r
+ 0318:1461 idle  _PM_Preload\r
+ 0318:17B4 idle  _PM_NextFrame\r
+ 0318:18B4 idle  _PM_Reset\r
+ 0318:194E       _PM_Startup\r
+ 0318:1A60       _PM_Shutdown\r
+ 04C2:0009 idle  KITTENGETS\r
+ 04C2:005C idle  _kittenopen\r
+ 04C2:0286 idle  _catread\r
+ 04C2:033E idle  _kittenclose\r
+ 04C2:0345 idle  _mystrtoul\r
+ 04C2:03E1 idle  _processEscChars\r
+ 04C2:0540 idle  _get_line\r
+ 04C2:0597 idle  _db_fetch\r
+ 04C2:05FF idle  _db_insert\r
+ 052D:000A       _HC_farcoreleft\r
+ 052D:00F9 idle  _HC_LargestFreeBlock\r
+ 052D:01B5 idle  _HC_coreleft\r
+ 052D:0245 idle  _HC_LargestFarFreeBlock\r
+ 052D:030A idle  _HC_farcoreleft_\r
+ 052D:03DC idle  _HC_OpenDebug\r
+ 052D:0407 idle  _HC_CloseDebug\r
+ 056E:000C idle  _VGAmodeX\r
+ 056E:002E       _main\r
+ 05A2:0006       _CA_OpenDebug\r
+ 05A2:0031       _CA_CloseDebug\r
+ 05A2:0046       _CA_FarRead\r
+ 05A2:00C0 idle  _CA_FarWrite\r
+ 05A2:013A       _CA_ReadFile\r
+ 05A2:01B7 idle  _CA_WriteFile\r
+ 05A2:0225       _CA_LoadFile\r
+ 05A2:02BC idle  _CAL_OptimizeNodes\r
+ 05A2:032D idle  _CAL_HuffExpand\r
+ 05A2:042D idle  _CAL_CarmackExpand\r
+ 05A2:057D idle  _CA_RLEWCompress\r
+ 05A2:066F idle  _CA_RLEWexpand\r
+ 05A2:0722 idle  _CAL_SetupMapFile\r
+ 05A2:075A       _CA_Startup\r
+ 05A2:07A6       _CA_Shutdown\r
+ 05A2:07CB idle  _CA_UpLevel\r
+ 05A2:07F5 idle  _CA_DownLevel\r
+ 05A2:0822 idle  _CA_ClearMarks\r
+ 05A2:0857 idle  _CA_ClearAllMarks\r
+ 05A2:0884 idle  _CA_SetGrPurge\r
+ 05A2:08DB idle  _CA_SetAllPurge\r
+ 0639:0005 idle  _filesize\r
+ 0639:006C idle  _remove_ext\r
+ 0639:017D idle  _rotateR\r
+ 0639:01D4 idle  _rotateL\r
+ 0639:022B idle  _printmeminfoline\r
+ 0639:03C6       _US_CheckParm\r
+ 0639:0499       _dirchar\r
+ 0686:000F       _MML_CheckForEMS\r
+ 0686:00B5       _MML_CheckForXMS\r
+ 0686:00E1 idle  _MML_UseSpace\r
+ 0686:035F idle  _MML_ClearBlock\r
+ 0686:03D4       _MM_Startup\r
+ 0686:0670       _MM_Shutdown\r
+ 0686:06AA       _MM_GetPtr\r
+ 0686:09C9       _MM_FreePtr\r
+ 0686:0ACC       _MM_SetPurge\r
+ 0686:0B81       _MM_SetLock\r
+ 0686:0C3B       _MM_SortMem\r
+ 0686:0DE3       _MM_ShowMemory\r
+ 0686:1294 idle  _MM_ShowMemoryVidVer\r
+ 0686:143C       _MM_DumpData\r
+ 0686:15A9       _MM_UnusedMemory\r
+ 0686:1623       _MM_TotalFree\r
+ 0686:16BB       _MM_Report_\r
+ 0686:18AF       _MM_EMSerr\r
+ 0686:1CDC       _MM_BombOnError\r
+ 0686:1CEC idle  _xms_call\r
+ 0856:000F idle  _INL_KeyService\r
+ 0856:0182 idle  _INL_Mouse\r
+ 0856:01CB idle  _IN_GetJoyAbs\r
+ 0856:0268 idle  _INL_GetJoyDelta\r
+ 0856:042A idle  _IN_GetJoyButtonsDB\r
+ 0856:05BC idle  _IN_SetupJoy\r
+ 0856:06EE       _IN_Startup\r
+ 0856:07D3 idle  _IN_Default\r
+ 0856:087B       _IN_Shutdown\r
+ 0856:08C0 idle  _IN_SetKeyHook\r
+ 0856:08D2 idle  _IN_ClearKeysDown\r
+ 0856:0922 idle  _IN_ReadCursor\r
+ 0856:09F2 idle  _IN_ReadControl\r
+ 0856:0E44 idle  _IN_SetControlType\r
+ 0856:0E53 idle  _IN_GetScanName\r
+ 0856:0EAD idle  _IN_WaitForKey\r
+ 0856:0ECB idle  _IN_WaitForASCII\r
+ 0856:0EE8 idle  _IN_StartAck\r
+ 0856:0F51 idle  _IN_CheckAck\r
+ 0856:0FD7       _IN_Ack\r
+ 0856:0FFA idle  _IN_IsUserInput\r
+ 0856:1061 idle  _IN_UserInput\r
+ 0856:10AA idle  _IN_MouseButtons\r
+ 0856:10D3 idle  _IN_JoyButtons\r
+ 0856:10F0 idle  _IN_KeyDown\r
+ 0856:1122       _IN_ClearKey\r
+ 0856:1144 idle  _IN_qb\r
+ 0856:1195 idle  _IN_GetLastScan\r
+ 0856:1199 idle  _IN_GetCurCode\r
+ 0856:119D idle  _IN_KbdLED\r
+ 0971:000D idle  _ShapeTest_\r
+ 0992:000E idle  _Startup16\r
+ 0992:0080 idle  _Shutdown16\r
+ 0992:00AF idle  _TL_VidInit\r
+ 0992:00BC       _DebugMemory_\r
+ 0992:025B idle  _ClearMemory\r
+ 0992:0280       _Quit\r
+ 0992:0357 idle  _word_to_binary\r
+ 0992:03C2 idle  _nibble_to_binary\r
+ 0992:042D idle  _boolean_to_binary\r
+ 0992:0498 idle  _nibbletest\r
+ 0992:0500 idle  _booleantest\r
+ 0992:0568       _modexPalOverscan\r
+ 09E9:000D idle  _VL_FillPalette\r
+ 09E9:003B idle  _VL_SetColor\r
+ 09E9:0056 idle  _VL_GetColor\r
+ 09E9:0080 idle  _VL_SetPalette\r
+ 09E9:00C4 idle  _VL_GetPalette\r
+ 09E9:00F0 idle  _VL_FadeOut\r
+ 09E9:025E       _VL_FadeIn\r
+ 09E9:0378 idle  _VL_TestPaletteSet\r
+ 09E9:0407       _VL_Plot\r
+ 09E9:046E       _VL_Hlin\r
+ 09E9:057D idle  _VL_Vlin\r
+ 09E9:0601 idle  _VL_Bar\r
+ 09E9:0744 idle  _VL_WaitVBL\r
+ 09E9:075C idle  _VGAMAPMASK\r
+ 09E9:076A idle  _VGAWRITEMODE\r
+ 09E9:077D idle  _VGAREADMAP\r
+ 0A7D:0000 idle  DATASEG@\r
+ 0A7D:005B idle  __Int0Vector\r
+ 0A7D:005F idle  __Int4Vector\r
+ 0A7D:0063 idle  __Int5Vector\r
+ 0A7D:0067 idle  __Int6Vector\r
+ 0A7D:006B       __C0argc\r
+ 0A7D:006D       __C0argv\r
+ 0A7D:0071       __C0environ\r
+ 0A7D:0075       __envLng\r
+ 0A7D:0077       __envseg\r
+ 0A7D:0079       __envSize\r
+ 0A7D:007B       __psp\r
+ 0A7D:007D idle  __osversion\r
+ 0A7D:007D       __osmajor\r
+ 0A7D:007D idle  __version\r
+ 0A7D:007E idle  __osminor\r
+ 0A7D:007F       _errno\r
+ 0A7D:0081 idle  __StartTime\r
+ 0A7D:0085 idle  ___brklvl\r
+ 0A7D:0087       __heapbase\r
+ 0A7D:008B       __brklvl\r
+ 0A7D:008F       __heaptop\r
+ 0A7D:05E4 idle  __kitten_catalog\r
+ 0A7D:1934       _dbg_testkeyin\r
+ 0A7D:1936       _dbg_testcontrolnoisy\r
+ 0A7D:1938       _dbg_nointest\r
+ 0A7D:193A idle  _dbg_maptext\r
+ 0A7D:193C idle  _dbg_delayanimation\r
+ 0A7D:1B08       __atexitcnt\r
+ 0A7D:1B0A       __ctype\r
+ 0A7D:1C0C       __exitbuf\r
+ 0A7D:1C10       __exitfopen\r
+ 0A7D:1C14 idle  __exitopen\r
+ 0A7D:1C18       __streams\r
+ 0A7D:1DA8       __nfile\r
+ 0A7D:1DAA       __openfd\r
+ 0A7D:1DD2       __fmode\r
+ 0A7D:1DD4       __notUmask\r
+ 0A7D:1DD6       __doserrno\r
+ 0A7D:1DD8 idle  __dosErrorToSV\r
+ 0A7D:1E3C       __stklen\r
+ 0A7D:1EA6       __wscroll\r
+ 0A7D:1EA8       __video\r
+ 0A7D:1EB7       _directvideo\r
+ 0A7D:1EF4       __cFlag\r
+ 0A7D:1EF5       __cChar\r
+ 0A7D:1EF6       __argc\r
+ 0A7D:1EF8       __argv\r
+ 0A7D:1F06       _environ\r
+ 0A7D:1F10       __RealCvtVector\r
+ 0A7D:1F12 idle  __ScanTodVector\r
+ 0A7D:1F40       _XMSVer\r
+ 0A7D:1F42       _XMSDriver\r
+ 0A7D:7020 idle  _finishcachebox\r
+ 0A7D:7024 idle  _updatecachebox\r
+ 0A7D:7028 idle  _drawcachebox\r
+ 0A7D:702C idle  _XMSaddr\r
+ 0A7D:7030 idle  _aftersort\r
+ 0A7D:7034 idle  _beforesort\r
+ 0A7D:703C idle  _btnstate\r
+ 0A7D:7166 idle  _dbg_mapdata\r
+ 0A7D:718D idle  _global_temp_status_text2\r
+ 0A7D:738D idle  _global_temp_status_text\r
+ 0A7D:758E       __atexittbl\r
+\r
+Program entry point at 0000:0000\r
+\r
index 252a14fff6f29155a993081e7bb972c4551896a5..5b6c7b5364692de6e01f109b939ba90cb040bba3 100755 (executable)
Binary files a/bcexmm.prj and b/bcexmm.prj differ
index 3e73a7cb84649237ff8787bbe2269cdfd78c4afe..69486b5b6f15f0f40d768ca0fb44208e47d9f6e8 100755 (executable)
--- a/makefile
+++ b/makefile
@@ -134,7 +134,7 @@ LIBFLAGS=$(WLIBQ) -b -n
 #
 VGMSNDOBJ = vgmSnd.$(OBJ) 16_snd.$(OBJ)
 #OLDLIBOBJS=bitmap.$(OBJ) 16render.$(OBJ)
-GFXLIBOBJS = 16_vl.$(OBJ) 16_vlpal.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16_vrs.$(OBJ) 16_spri.$(OBJ) $(OLDLIBOBJS)
+GFXLIBOBJS = 16_vl.$(OBJ) 16_vl_1.$(OBJ) 16_vlpal.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16_vrs.$(OBJ) 16_spri.$(OBJ) $(OLDLIBOBJS)
 16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_tail.$(OBJ) 16_head.$(OBJ) 16_enti.$(OBJ) 16_dbg.$(OBJ) 16_in.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) 16_wcpu.$(OBJ) 16_timer.$(OBJ) jsmn.$(OBJ) 16_map.$(OBJ) 16text.$(OBJ)
 DOSLIBOBJ = adlib.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(OBJ)
 !ifeq DEBUGSERIAL 1
@@ -276,7 +276,7 @@ pcxtest2.exe:        pcxtest2.$(OBJ) gfx.lib $(DOSLIB)
 #planrpcx.exe: planrpcx.$(OBJ) gfx.lib
 maptest.exe:   maptest.$(OBJ) 16_map.$(OBJ) 16_head.$(OBJ) gfx.lib $(DOSLIB) $(16LIB)
 fmemtest.exe:   fmemtest.$(OBJ)
-exmmtest.exe:   exmmtest.$(OBJ) $(16LIB) $(DOSLIB)
+exmmtest.exe:   exmmtest.$(OBJ) $(16LIB) gfx.lib $(DOSLIB)
 vgmtest.exe:   vgmtest.$(OBJ) vgmsnd.lib $(16LIB) $(DOSLIB) gfx.lib
 db.exe:                db.$(OBJ)
 wcpu.exe:              wcpu.$(OBJ) $(16LIB) $(DOSLIB)
@@ -345,6 +345,7 @@ joytest.exe:
        $(COPYCOMMAND) $(DOSLIB_JOYSTICK:$(to_os_path))$(DIRSEP)$(DOSLIB_MEMMODE)$(DIRSEP)test.exe joytest.exe
 
 16_vl.$(OBJ):  $(SRCLIB)/16_vl.c $(SRCLIB)/16_vl.h
+16_vl_1.$(OBJ):        $(SRCLIB)/16_vl_1.c $(SRCLIB)/16_vl.h
 16_vlpal.$(OBJ):       $(SRCLIB)/16_vlpa_.c    $(SRCLIB)/16_vlpal.c $(SRCLIB)/16_vlpal.h
 bakapee.$(OBJ):$(SRCLIB)/bakapee.c $(SRCLIB)/bakapee.h
 16render.$(OBJ):$(SRCLIB)/16render.c $(SRCLIB)/16render.h
index 3c440c17bab9863ca8a8d307597c3ede394e2762..945aa95427f4946baf0fa8d875f573e5eababc58 100755 (executable)
@@ -45,6 +45,9 @@
 //#define EXMMVERBOSE__\r
 //     #define PRINTBBDUMP\r
 #define BUFFDUMP\r
+#define NOVID\r
+\r
+#define KEYP IN_Shutdown(&gvar); printf("\n\npress any key to continue!\n"); getch(); IN_Startup(&gvar);\r
 \r
 #define BBUFNAME bigbuffer//gvar.ca.tinf[0]\r
 #define INITBBUF static memptr BBUFNAME;\r
 #endif\r
 \r
 ////////////////////////////////////////////////////////////////////////////\r
-\r
+#ifdef __BORLANDC__\r
 void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv)\r
 {\r
        printf("VGAmodeX dummy:\n       %Fp     %Fp     %Fp\n", &vq, &cmem, gv);\r
 }\r
+#endif\r
 \r
 //printf("*    %Fp\t", *BBUF);\r
 //printf("*         %04x\t", *BBUF);\r
@@ -101,8 +105,7 @@ void segatesuto()
 //\r
 //     }\r
 //     printf("]\n");\r
-//     printf("press any key to continue!\n");\r
-//     getch();\r
+//     KEYP\r
 }\r
 #endif\r
 \r
@@ -110,6 +113,10 @@ void
 main(int argc, char *argv[])\r
 {\r
        byte w;\r
+#ifndef NOVID\r
+       boolean                 done;\r
+       ScanCode                scan;\r
+#endif\r
        static global_game_variables_t gvar;\r
 #ifdef INITBBUF\r
        INITBBUF\r
@@ -139,7 +146,7 @@ main(int argc, char *argv[])
        dbg_debugca=1;\r
 #endif\r
 #ifdef PRINTBBDUMP\r
-//0000PRINTBB; printf("press any key to continue!\n"); getch();\r
+//0000PRINTBB; KEYP\r
 #endif\r
        if(argv[1]){ bakapee1 = argv[1];\r
        if(argv[2]) bakapee2 = argv[2]; }\r
@@ -148,6 +155,12 @@ main(int argc, char *argv[])
                bakapee1 = "data/koishi~.pcx";\r
                bakapee2 = "data/test.map";\r
        }\r
+#ifndef NOVID\r
+       Startup16(&gvar);\r
+\r
+       // save the palette\r
+       modexPalSave(&gvar.video.dpal); modexFadeOff(4, &gvar.video.dpal); //modexPalBlack();\r
+#else  //NOVID\r
        //printf("main()=%Fp    start MM\n", *argv[0]);\r
        MM_Startup(&gvar); //printf("ok\n");\r
 #ifdef __16_PM__\r
@@ -156,12 +169,13 @@ main(int argc, char *argv[])
        {\r
 #endif\r
                PM_Startup(&gvar); PM_CheckMainMem(&gvar); PM_UnlockMainMem(&gvar);\r
-//0000         printf("PM Started\n"); printf("press any key to continue!\n"); getch();\r
+//0000         printf("PM Started\n"); KEYP\r
 #ifdef __DEBUG_PM__\r
        }\r
 #endif\r
 #endif\r
 \r
+#endif //NOVID\r
 #ifdef __DEBUG_MM__\r
        dbg_debugmm=0;\r
 #endif\r
@@ -169,7 +183,7 @@ main(int argc, char *argv[])
 //     printf("                done!\n");\r
 #ifdef PRINTBBDUMP\r
 //0000\r
-PRINTBB; printf("\n\npress any key to continue!\n"); getch();\r
+PRINTBB; KEYP\r
 #endif\r
 #ifdef __DEBUG_MM__\r
        dbg_debugmm=1;\r
@@ -203,33 +217,63 @@ PRINTBB; printf("\n\npress any key to continue!\n"); getch();
 #ifdef PRINTBBDUMP\r
                PRINTBB;\r
 #endif\r
+\r
 //endif // BUFFDUMP\r
 \r
                //printf("dark purple = purgable\n");\r
                //printf("medium blue = non purgable\n");\r
                //printf("red = locked\n");\r
-       //      printf("press any key to continue!\n");\r
+       //      KEYP\r
        //      DebugMemory_(&gvar, 1);\r
                if(baka) printf("\nyay!\n");\r
                else printf("\npoo!\n");\r
 #ifdef BUFFDUMPPAUSE\r
-               printf("press any key to continue!\n"); getch();\r
+               KEYP\r
 #endif\r
 #ifdef FILEREAD\r
        }\r
 #endif\r
 #ifndef BUFFDUMPPAUSE\r
-       printf("press any key to continue!\n"); getch();\r
+       KEYP\r
 #endif\r
 #endif //filereadload\r
 \r
 \r
-/*#ifdef __WATCOMC__\r
-       IN_Startup(&gvar);\r
-       ShapeTest_(&gvar);\r
-       IN_Shutdown(&gvar);\r
-#endif*/\r
+#ifdef __WATCOMC__\r
+#ifndef NOVID\r
+       VGAmodeX(1, 0, &gvar);\r
+       modexPalUpdate0(&gvar.video.palette);\r
+//     ShapeTest_(&gvar);\r
 \r
+       for (done = false;!done;)\r
+       {\r
+               while (!(scan = gvar.in.inst->LastScan))\r
+               {}\r
+       //                      SD_Poll();\r
+\r
+               IN_ClearKey(scan);\r
+               switch (scan)\r
+               {\r
+                       case sc_Space:\r
+                               MM_ShowMemoryVidVer(&gvar);\r
+                       break;\r
+                       case sc_O:\r
+                               modexPalUpdate0(&gvar.video.palette); modexpdump(&gvar.video.page);\r
+                       break;\r
+                       case sc_P:\r
+                               modexpdump(&gvar.video.page[0]);\r
+                       break;\r
+                       case sc_V:\r
+                               VL_PatternDraw(&gvar.video, 0, 1, 1);\r
+                       break;\r
+                       default:\r
+                       //case sc_Escape:\r
+                               done = true;\r
+                       break;\r
+               }\r
+       }\r
+#endif\r
+#endif\r
 \r
        DebugMemory_(&gvar, 1);\r
        MM_DumpData(&gvar);\r
@@ -237,6 +281,9 @@ PRINTBB; printf("\n\npress any key to continue!\n"); getch();
        //printf("bakapee1=%s\n", bakapee1);\r
        //printf("bakapee2=%s\n", bakapee2);\r
        MM_FreePtr(BBUFPTR, &gvar);\r
+#ifndef NOVID\r
+       Shutdown16(&gvar);\r
+#else\r
 #ifdef __16_PM__\r
 #ifdef __DEBUG_PM__\r
        if(dbg_debugpm>0)\r
@@ -245,6 +292,8 @@ PRINTBB; printf("\n\npress any key to continue!\n"); getch();
 #endif\r
        CA_Shutdown(&gvar);\r
        MM_Shutdown(&gvar);\r
+#endif //NOVID\r
+       IN_Shutdown(&gvar);\r
        free(bakapee1); free(bakapee2);\r
        printf("========================================\n");\r
        printf("near=   %Fp ", gvar.mm.nearheap);\r
@@ -299,6 +348,7 @@ PRINTBB; printf("\n\npress any key to continue!\n"); getch();
 #endif\r
        printf("\n");\r
 #endif\r
+       printf("old_mode=%u     VL_Started=%u", gvar.video.old_mode, gvar.video.VL_Started);\r
        //printf("based core left:                      %lu\n", (dword)_basedcoreleft());\r
        //printf("huge core left:                       %lu\n", (dword)_hugecoreleft());\r
 }\r
index f4d90dbb13907ae8445bc75aa717b8bc3280125b..a3e3fabdeffa30baf01a58bbe9f894f9cbf31bff 100755 (executable)
@@ -503,7 +503,7 @@ IN_GetJoyButtonsDB(word joy)
 //\r
 ///////////////////////////////////////////////////////////////////////////\r
 static void\r
-INL_StartKbd(global_game_variables_t *gvar)\r
+INL_StartKbd()\r
 {\r
        INL_KeyHook = NULL;     // Clear key hook\r
 \r
@@ -680,7 +680,7 @@ IN_Startup(global_game_variables_t *gvar)
                }\r
        }\r
 \r
-       INL_StartKbd(gvar);\r
+       INL_StartKbd();\r
        gvar->in.MousePresent = checkmouse? INL_StartMouse() : false;\r
 \r
        for (i = 0;i < MaxJoys;i++)\r
@@ -1183,8 +1183,13 @@ boolean IN_CheckAck (global_game_variables_t *gvar)
 //\r
 // see if something has been pressed\r
 //\r
-       if (inst.LastScan)\r
-               return true;\r
+       if(!gvar->in.IN_Started)\r
+               getch();\r
+       else\r
+       {\r
+               if (inst.LastScan)\r
+                       return true;\r
+       }\r
 \r
        buttons = IN_JoyButtons () << 4;\r
        if (gvar->in.MousePresent)\r
index fb308db63950e31230d3658e29ec93156f802cfc..f5f0770e7bb57e332ab9c202ee08e86c8d2afe78 100755 (executable)
@@ -1150,7 +1150,7 @@ void MM_SetLock(memptr *baseptr, boolean locked, global_game_variables_t *gvar)
 void MM_SortMem(global_game_variables_t *gvar)
 {
        mmblocktype far *scan,far *last,far *next;
-       unsigned        start,length,source,dest;//++++,oldborder;
+       unsigned        start,length,source,dest,oldborder;
        //++++int                       playing;
 
        //
@@ -1173,8 +1173,8 @@ void MM_SortMem(global_game_variables_t *gvar)
 
 
        SD_StopSound();*/
-//     oldborder = bordercolor;
-//     VW_ColorBorder (15);
+       oldborder = gvar->video.bordercolor;
+       gvar->video.bordercolor = modexPalOverscan(15);
 
        if(beforesort)
                beforesort();
@@ -1267,7 +1267,6 @@ void MM_ShowMemory(global_game_variables_t *gvar)
        //dword wwww;
        byte    scratch[160],scratch0[4096],str[16];//[[[[scratch1[160],
        //byte d = '#';
-//[[[[ VW_SetDefaultColors();
 //[[[[ VW_SetLineWidth(40);
 //++++mh       temp = bufferofs;
 //++++mh       bufferofs = 0;
@@ -1409,6 +1408,46 @@ void MM_ShowMemory(global_game_variables_t *gvar)
 //++++mh       bufferofs = temp;
 }
 
+void MM_ShowMemoryVidVer(global_game_variables_t *gvar)
+{
+       mmblocktype far *scan;
+       unsigned color,temp,x,y;
+       long    end;//,owner;
+       //char    scratch[80],str[10];
+
+       temp = gvar->video.ofs.bufferofs;
+       gvar->video.ofs.bufferofs = gvar->video.ofs.displayofs;
+       scan = gvar->mm.mmhead;
+
+       end = -1;
+
+       while (scan)
+       {
+               if (scan->attributes & PURGEBITS)
+                       color = 5;              // dark purple = purgable
+               else
+                       color = 9;              // medium blue = non purgable
+               if (scan->attributes & LOCKBIT)
+                       color = 12;             // red = locked
+               if (scan->start<=end)
+                       Quit (gvar, "MM_ShowMemory: Memory block order currupted!");
+               end = scan->length-1;
+               y = scan->start/320;
+               x = scan->start%320;
+               VL_Hlin(x,x+end,y,color, &gvar->video.ofs);
+               VL_Plot(x,y,15, &gvar->video.ofs);
+               if (scan->next && scan->next->start > end+1)
+                       VL_Hlin(x+end+1,x+(scan->next->start-scan->start),y,0, &gvar->video.ofs);       // black = free
+
+               scan = scan->next;
+       }
+
+       VL_FadeIn(0,255,&gvar->video.palette,10, &gvar->video);
+       IN_Ack(gvar);
+
+       gvar->video.ofs.bufferofs = temp;
+}
+
 //==========================================================================
 
 /*
index 36825c90838dbe31216926279350faea64a9eb72..bd529c030eb3f224dbd6283c943fb3a836a431ed 100755 (executable)
@@ -25,8 +25,6 @@
 #include "src/lib/16_head.h"\r
 #include "src/lib/16_hc.h"\r
 #include "src/lib/16_tail.h"\r
-//++++mh       #include "src/lib/16_in.h"\r
-\r
 \r
 #ifdef __DEBUG__               // 1 == Debug/Dev  ;  0 == Production/final\r
 #define OUT_OF_MEM_MSG "MM_GetPtr: Out of memory!\nYou were short :%lu bytes\n"\r
@@ -198,6 +196,7 @@ void MM_SetPurge(memptr *baseptr, int purge, global_game_variables_t *gvar);
 void MM_SetLock(memptr *baseptr, boolean locked, global_game_variables_t *gvar);\r
 void MM_SortMem(global_game_variables_t *gvar);\r
 void MM_ShowMemory(global_game_variables_t *gvar);\r
+void MM_ShowMemoryVidVer(global_game_variables_t *gvar);\r
 void MM_DumpData(global_game_variables_t *gvar);\r
 dword MM_UnusedMemory(global_game_variables_t *gvar);\r
 dword MM_TotalFree(global_game_variables_t *gvar);\r
index 3b1cb42c3b0c9c76887689bd9dccc4f97aed0d17..daa9fadc3192344578189bcdd8a8b762e11bb7e5 100755 (executable)
@@ -25,7 +25,6 @@
 \r
 #include "src/lib/16_tail.h"\r
 #include "src/lib/16text.h"\r
-\r
 /*\r
 ==========================\r
 =\r
@@ -40,38 +39,9 @@ void Startup16(global_game_variables_t *gvar)
 {\r
 #ifdef __WATCOMC__\r
        start_timer(gvar);\r
-\r
-       // DOSLIB: check our environment\r
-       probe_dos();\r
-\r
-       // DOSLIB: what CPU are we using?\r
-       // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.\r
-       //        So this code by itself shouldn't care too much what CPU it's running on. Except that other\r
-       //        parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for\r
-       //        the CPU to carry out tasks. --J.C.\r
-       cpu_probe();\r
-\r
-       // DOSLIB: check for VGA\r
-       if (!probe_vga()) {\r
-               printf("VGA probe failed\n");\r
-               return;\r
-       }\r
-       // hardware must be VGA or higher!\r
-       if (!(vga_state.vga_flags & VGA_IS_VGA)) {\r
-               printf("This program requires VGA or higher graphics hardware\n");\r
-               return;\r
-       }\r
-\r
-       if (_DEBUG_INIT() == 0) {\r
-#ifdef DEBUGSERIAL\r
-               //printf("WARNING: Failed to initialize DEBUG output\n");\r
-#endif\r
-       }\r
-       _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log\r
-       _DEBUGF("Serial debug output printf test %u %u %u\n",1U,2U,3U);\r
-\r
-       textInit();\r
 #endif\r
+       gvar->video.VL_Started=0;\r
+       TL_VidInit(gvar);\r
        gvar->mm.mmstarted=0;\r
        gvar->pm.PMStarted=0;\r
        MM_Startup(gvar);\r
@@ -115,7 +85,51 @@ void Shutdown16(global_game_variables_t *gvar)
        CA_Shutdown(gvar);\r
        MM_Shutdown(gvar);\r
 #ifdef __WATCOMC__\r
-       VGAmodeX(0, 1, gvar);\r
+       if(gvar->video.VL_Started)\r
+               VGAmodeX(0, 1, gvar);\r
+#endif\r
+}\r
+\r
+void   TL_VidInit(global_game_variables_t *gvar)\r
+{\r
+#ifdef __WATCOMC__\r
+       // DOSLIB: check our environment\r
+       probe_dos();\r
+\r
+       // DOSLIB: what CPU are we using?\r
+       // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.\r
+       //        So this code by itself shouldn't care too much what CPU it's running on. Except that other\r
+       //        parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for\r
+       //        the CPU to carry out tasks. --J.C.\r
+       cpu_probe();\r
+\r
+       // DOSLIB: check for VGA\r
+       if (!probe_vga()) {\r
+               printf("VGA probe failed\n");\r
+               return;\r
+       }\r
+       // hardware must be VGA or higher!\r
+       if (!(vga_state.vga_flags & VGA_IS_VGA)) {\r
+               printf("This program requires VGA or higher graphics hardware\n");\r
+               return;\r
+       }\r
+\r
+       if (_DEBUG_INIT() == 0) {\r
+#ifdef DEBUGSERIAL\r
+               //printf("WARNING: Failed to initialize DEBUG output\n");\r
+#endif\r
+       }\r
+       _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log\r
+       _DEBUGF("Serial debug output printf test %u %u %u\n",1U,2U,3U);\r
+\r
+       textInit();\r
+\r
+       // get old video mode\r
+       //in.h.ah = 0xf;\r
+       //int86(0x10, &in, &out);\r
+       gvar->video.old_mode = vgaGetMode();//out.h.al;\r
+#else\r
+       gvar->video.old_mode = 3;\r
 #endif\r
 }\r
 \r
@@ -489,3 +503,13 @@ void booleantest()
        printf("        sizeof(boolean)=%s\n", boolean_to_binary(sizeof(boolean)));\r
        printf("end of boolean test\n");\r
 }\r
+\r
+#ifdef __BORLANDC__\r
+word modexPalOverscan(word col)\r
+{\r
+       //modexWaitBorder();\r
+       outp(PAL_WRITE_REG, 0);  /* start at the beginning of palette */\r
+       outp(PAL_DATA_REG, col);\r
+       return col;\r
+}\r
+#endif\r
index 4de636c66270e65c0eb84c9eb978eeac45c18264..dc43c89599be4a22271b87b969e96bf5532ed80f 100755 (executable)
        if(gvar.in.inst->Keyboard[sc_PgUp]){ \\r
                rotateL(gvar.video.palette, sizeof(gvar.video.palette)/sizeof(gvar.video.palette[0])); \\r
                VL_UpdatePaletteWrite(&gvar.video.palette, 0);          IN_UserInput(1, &gvar); }*/\r
+#ifdef __BORLANDC__\r
+#define PAL_WRITE_REG             0x03C8   /* Color register, write address */\r
+#define PAL_DATA_REG                   0x03C9   /* Color register, data port */\r
+word modexPalOverscan(word col);\r
+#endif\r
 \r
-void DebugMemory_(global_game_variables_t *gvar, boolean q);\r
 void Shutdown16(global_game_variables_t *gvar);\r
 void Startup16(global_game_variables_t *gvar);\r
+void TL_VidInit(global_game_variables_t *gvar);\r
+void DebugMemory_(global_game_variables_t *gvar, boolean q);\r
 void ClearMemory (global_game_variables_t *gvar);\r
 void Quit (global_game_variables_t *gvar, char *error);\r
 void turboXT(byte bakapee);\r
index 2c2d0f723a115ad5f02e64862c907b770a0e1603..a3ac0ae4504e9385575c9970d9317ab987e2a92e 100755 (executable)
@@ -354,13 +354,16 @@ typedef struct
 } kurokku_t;\r
 \r
 //===================================//\r
-#define     PALSIZE            768\r
+#define PALSIZE        768\r
 #define NUMCHUNKS      416     //keen\r
+#define MAXSCANLINES   240                     // size of ylookup table\r
+\r
 //video\r
 typedef struct\r
 {\r
        unsigned int offscreen_ofs;\r
        unsigned int pattern_ofs;\r
+       unsigned        bufferofs,      ylookup[MAXSCANLINES], linewidth,displayofs;\r
 } ofs_t;       //unfinished\r
 \r
 typedef struct\r
@@ -376,8 +379,10 @@ typedef struct
 \r
 typedef struct\r
 {\r
+       boolean VL_Started;\r
        char old_mode;          //old video mode before game!\r
        byte palette[PALSIZE], dpal[PALSIZE];   //palette array\r
+       byte            far     palette1[256][3],far palette2[256][3];\r
        page_t page[MAXPAGE];   //can be used as a pointer to root page[0]\r
        word vmem_remain;       //remaining video memory\r
        byte num_of_pages;      //number of actual pages\r
@@ -392,6 +397,10 @@ typedef struct
        ofs_t   ofs;            //offset vars used for doslib\r
        word    vh;             //video combined height\r
        //0000word startclk; float clk, tickclk;        //timer\r
+       //wolf3d vars\r
+       boolean screenfaded;\r
+       word            bordercolor;\r
+       boolean fastpalette;\r
 } video_t;\r
 \r
 //from scroll16\r
@@ -642,17 +651,16 @@ typedef struct    //TODO: USE THIS!!!!
 //==========================================================================\r
 \r
 //actual global game varables!\r
-/*typedef enum {\r
-       ENGI_QUIT,\r
-       ENGI_RUN,\r
-       ENGI_MENU,\r
-       ENGI_PAUSE\r
-} engi_stat_t;*/\r
-//ENGI_INPUT,\r
+/*typedef struct {\r
+       boolean clearmem;\r
+} vidsw_t;\r
+\r
+typedef struct {\r
+       vidsw_t vsw;\r
+} sw_t;*/\r
 \r
 typedef struct\r
 {\r
-//---- engi_stat_t     engi_stat;\r
        video_t video;  // video settings variable\r
        ca_t            ca;     // ca stuff\r
        pm_t            pm;     // pm stuff\r
@@ -662,6 +670,7 @@ typedef struct
        in_info_t       in;             // 16_in info\r
        player_t        player[MaxPlayers];     // player vars\r
        map_view_t      mv[4];\r
+//     sw_t            sw;\r
 } global_game_variables_t;\r
 \r
 #ifdef __WATCOMC__\r
index 82e81375b79a804cc3ff4cc3c65b6fb1cbef0d0a..833a75a6f8f116c6c0fca834e49bc2988f4d52db 100755 (executable)
@@ -43,16 +43,18 @@ void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv)
        {\r
                case 0: // deinit the video\r
                        // change to the video mode we were in before we switched to mode 13h\r
-                       modexLeave();\r
-                       in.h.ah = 0x00;\r
-                       in.h.al = gv->video.old_mode;\r
-                       int86(0x10, &in, &out);\r
+                       if(gv->video.VL_Started)\r
+                       {\r
+                               modexLeave();\r
+                               in.h.ah = 0x00;\r
+                               in.h.al = gv->video.old_mode;\r
+                               int86(0x10, &in, &out);\r
+                       }\r
+                       gv->video.VL_Started=0;\r
                break;\r
                default: // init the video\r
-                       // get old video mode\r
-                       //in.h.ah = 0xf;\r
-                       //int86(0x10, &in, &out);\r
-                       gv->video.old_mode = vgaGetMode();//out.h.al;\r
+                       if(gv->video.VL_Started)\r
+                               return;\r
                        // enter mode\r
                        modexEnter(vq, cmem, gv);\r
                break;\r
@@ -163,6 +165,8 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv)
                }\r
                break;\r
        }\r
+       VL_SetLineWidth (cm.offset, &gv->video.ofs);\r
+       gv->video.VL_Started=1;\r
 }\r
 \r
 void\r
@@ -171,6 +175,39 @@ modexLeave() {
        vgaSetMode(TEXT_MODE);\r
 }\r
 \r
+/*\r
+====================\r
+=\r
+= VL_SetLineWidth\r
+=\r
+= Line witdh is in WORDS, 40 words is normal width for vgaplanegr\r
+=\r
+====================\r
+*/\r
+\r
+void VL_SetLineWidth (unsigned width, ofs_t *ofs)\r
+{\r
+       int i,offset;\r
+\r
+//\r
+// set wide virtual screen\r
+//\r
+       outport (CRTC_INDEX,CRTC_OFFSET+width*256);\r
+\r
+//\r
+// set up lookup tables\r
+//\r
+       ofs->linewidth = width*2;\r
+\r
+       offset = 0;\r
+\r
+       for (i=0;i<MAXSCANLINES;i++)\r
+       {\r
+               ofs->ylookup[i]=offset;\r
+               offset += ofs->linewidth;\r
+       }\r
+}\r
+\r
 page_t\r
 modexDefaultPage(page_t *p)\r
 {\r
@@ -416,8 +453,7 @@ modexClearRegion(page_t *page, int x, int y, int w, int h, byte color)
        word poffset = pageOff + y*(page->stridew) + xoff;      // starting offset\r
        word scanCount=w>>2;                                            // number of iterations per row (excluding right clip)\r
        word nextRow = page->stridew-scanCount-1;               // loc of next row\r
-       byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08};                        // clips for rectangles not on 4s\r
-       byte rclip[] = {0x00, 0x01, 0x03, 0x07};\r
+       LRCLIPDEF\r
        byte left = lclip[x&0x03];\r
        byte right = rclip[(x+w)&0x03];\r
 \r
@@ -498,8 +534,7 @@ modexCopyPageRegion(page_t *dest, page_t *src,
        word scans      = vga_state.vga_stride+8;                               //++++0000 the quick and dirty fix of the major issue with p16 video display wwww\r
        word nextSrcRow = src->stridew - scans - 1;\r
        word nextDestRow = dest->stridew - scans - 1;\r
-       byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08};                        // clips for rectangles not on 4s\r
-       byte rclip[] = {0x00, 0x01, 0x03, 0x07};\r
+       LRCLIPDEF\r
        byte left = lclip[sx&0x03];\r
        byte right = rclip[(sx+width)&0x03];\r
 \r
@@ -580,6 +615,7 @@ modexCopyPageRegion(page_t *dest, page_t *src,
        }\r
 }\r
 \r
+//check 16_vl_1.c\r
 \r
 /* fade and flash */\r
 void\r
@@ -782,14 +818,16 @@ modexPalUpdate0(byte *p)
        }\r
 }\r
 \r
-void\r
+word\r
 modexPalOverscan(word col)\r
 {\r
        //modexWaitBorder();\r
        vga_wait_for_vsync();\r
        outp(PAL_WRITE_REG, 0);  /* start at the beginning of palette */\r
        outp(PAL_DATA_REG, col);\r
+       return col;\r
 }\r
+//check 16_vl_1.c\r
 \r
 void modexputPixel(page_t *page, int x, int y, byte color)\r
 {\r
@@ -858,7 +896,7 @@ void modexDrawChar(page_t *page, int x/*for planar selection only*/, word t, wor
        }\r
 }\r
 \r
-void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col, word bgcol, const byte *str)\r
+void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col, word bgcol, boolean sw, const byte *str)\r
 {\r
        word s, o, w;\r
        word x_draw;\r
@@ -867,38 +905,46 @@ void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col,
        word addrr;\r
        byte c;\r
 \r
-       if(tlsw){ x-=page->tlx; y-=page->tly; }\r
-       x_draw = x/4;\r
-       addrq = (page->stridew) * y + (word)(x_draw) +\r
-               ((word)page->data);\r
-       addrr = addrq;\r
-       s=romFonts[t].seg;\r
-       o=romFonts[t].off;\r
-       w=romFonts[t].charSize;\r
-       romFontsData.chw=0;\r
-\r
-       for(; *str != '\0'; str++)\r
+       switch(sw)\r
        {\r
-               c = (*str);\r
-               if(c=='\n')\r
-               {\r
-                       x = x_draw;\r
-                       romFontsData.chw = 0;\r
-                       addrq += (page->stridew) * 8;\r
+               case 0:\r
+                       printf("%s\n", str);\r
+               break;\r
+               case 1:\r
+                       if(tlsw){ x-=page->tlx; y-=page->tly; }\r
+                       x_draw = x/4;\r
+                       addrq = (page->stridew) * y + (word)(x_draw) +\r
+                               ((word)page->data);\r
                        addrr = addrq;\r
-                       y += 8;\r
-                       continue;\r
-               }\r
+                       s=romFonts[t].seg;\r
+                       o=romFonts[t].off;\r
+                       w=romFonts[t].charSize;\r
+                       romFontsData.chw=0;\r
 \r
-       // load the character into romFontsData.l\r
-       // no need for inline assembly!\r
-       // NTS: It might even be faster to just let the modexDrawChar point directly at ROM font than to copy per char! --J.C.\r
-               _fmemcpy(romFontsData.l,MK_FP(s,o+(w*c))/*ROM font location*/,w/*char size*/);\r
-               modexDrawChar(page, x_draw/*for mode X planar use*/, t, col, bgcol, addrr);\r
-               x_draw += 8; /* track X for edge of screen */\r
-               addrr += 2; /* move 8 pixels over (2 x 4 planar pixels per byte) */\r
+                       for(; *str != '\0'; str++)\r
+                       {\r
+                               c = (*str);\r
+                               if(c=='\n')\r
+                               {\r
+                                       x = x_draw;\r
+                                       romFontsData.chw = 0;\r
+                                       addrq += (page->stridew) * 8;\r
+                                       addrr = addrq;\r
+                                       y += 8;\r
+                                       continue;\r
+                               }\r
+\r
+                       // load the character into romFontsData.l\r
+                       // no need for inline assembly!\r
+                       // NTS: It might even be faster to just let the modexDrawChar point directly at ROM font than to copy per char! --J.C.\r
+                               _fmemcpy(romFontsData.l,MK_FP(s,o+(w*c))/*ROM font location*/,w/*char size*/);\r
+                               modexDrawChar(page, x_draw/*for mode X planar use*/, t, col, bgcol, addrr);\r
+                               x_draw += 8; /* track X for edge of screen */\r
+                               addrr += 2; /* move 8 pixels over (2 x 4 planar pixels per byte) */\r
+                       }\r
+                       //printf("print xy:%dx%d        tlxy:%dx%d\n", x, y, page->tlx, page->tly);\r
+               break;\r
        }\r
-       //printf("print xy:%dx%d        tlxy:%dx%d\n", x, y, page->tlx, page->tly);\r
 }\r
 \r
 void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str)\r
@@ -1103,6 +1149,8 @@ modexWaitBorder_end()
 \r
 }\r
 \r
+//===========================================================================\r
+\r
 //\r
 // printings of video memory information\r
 //\r
index cec79507ad5189ec035ab3b06fe07a36ea6aabf7..c3c44c7c88db3f8610b37716f1ca93f49adf5224 100755 (executable)
 #define PLANE(x) (1 << ((x) & 3))\r
 #define SELECT_ALL_PLANES() outpw(0x03c4, 0xff02)\r
 \r
+// clips for rectangles not on 4s\r
+#define LRCLIPDEF \\r
+       byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; \\r
+       byte rclip[] = {0x00, 0x01, 0x03, 0x07};\r
+\r
+#define VCLIPDEF \\r
+       byte pclip[] = {1,2,4,8};\r
+\r
 typedef union\r
 {\r
        byte red;\r
@@ -73,12 +81,54 @@ extern byte far*  VGA;  /* The VGA Memory */
 #define VGA_256_COLOR_MODE     0x13\r
 #define TEXT_MODE              0x03\r
 \r
-#define AC_INDEX               0x03c0\r
 #define SC_INDEX               0x03c4\r
+#define SC_RESET                       0\r
+#define SC_CLOCK                       1\r
+#define SC_MAPMASK                     2\r
+#define SC_CHARMAP                     3\r
+#define SC_MEMMODE                     4\r
+\r
+#define CRTC_INDEX                     0x3D4\r
+#define CRTC_H_TOTAL           0\r
+#define CRTC_H_DISPEND         1\r
+#define CRTC_H_BLANK           2\r
+#define CRTC_H_ENDBLANK                3\r
+#define CRTC_H_RETRACE         4\r
+#define CRTC_H_ENDRETRACE      5\r
+#define CRTC_V_TOTAL           6\r
+#define CRTC_OVERFLOW          7\r
+#define CRTC_ROWSCAN           8\r
+#define CRTC_MAXSCANLINE       9\r
+#define CRTC_CURSORSTART       10\r
+#define CRTC_CURSOREND         11\r
+#define CRTC_STARTHIGH         12\r
+#define CRTC_STARTLOW          13\r
+#define CRTC_CURSORHIGH                14\r
+#define CRTC_CURSORLOW         15\r
+#define CRTC_V_RETRACE         16\r
+#define CRTC_V_ENDRETRACE      17\r
+#define CRTC_V_DISPEND         18\r
+#define CRTC_OFFSET                    19\r
+#define CRTC_UNDERLINE         20\r
+#define CRTC_V_BLANK           21\r
+#define CRTC_V_ENDBLANK                22\r
+#define CRTC_MODE                      23\r
+#define CRTC_LINECOMPARE       24\r
+\r
+#define GC_INDEX               0x03ce\r
+#define GC_SETRESET                    0\r
+#define GC_ENABLESETRESET      1\r
+#define GC_COLORCOMPARE                2\r
+#define GC_DATAROTATE          3\r
+#define GC_READMAP                     4\r
+#define GC_MODE                                5\r
+#define GC_MISCELLANEOUS       6\r
+#define GC_COLORDONTCARE       7\r
+#define GC_BITMASK                     8\r
+\r
+#define AC_INDEX               0x03c0\r
 #define SC_DATA                        0x03c5\r
-#define CRTC_INDEX             0x03d4\r
 #define CRTC_DATA              0x03d5\r
-#define GC_INDEX               0x03ce\r
 #define MISC_OUTPUT            0x03c2\r
 #define HIGH_ADDRESS           0x0C\r
 #define LOW_ADDRESS            0x0D\r
@@ -94,12 +144,33 @@ extern byte far*  VGA;  /* The VGA Memory */
 #define PAL_DATA_REG                   0x03C9   /* Color register, data port */\r
 #define PAL_SIZE                               (256 * 3)\r
 \r
+//===========================================================================\r
+\r
+#define SCREENSEG              0xa000\r
+\r
+//#define SCREENWIDTH          80                      // default screen width in bytes\r
+//#define MAXSCANLINES 240                     // size of ylookup table\r
+\r
+//#define CHARWIDTH            2\r
+//#define TILEWIDTH            4\r
+\r
+//===========================================================================\r
+\r
+//\r
+// VGA hardware routines\r
+//\r
+\r
+void VGAMAPMASK(byte x);\r
+void VGAWRITEMODE(byte x);\r
+void VGAREADMAP(byte x);\r
+\r
 /* -============================ Functions =============================- */\r
 /* mode switching, page, and plane functions */\r
 void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv);\r
 void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv);\r
 byte vgaGetMode();\r
 void modexLeave();\r
+void VL_SetLineWidth (unsigned width, ofs_t *ofs);\r
 void modexsetBaseXMode();\r
 page_t modexDefaultPage(page_t *p);\r
 page_t modexNextPage(page_t *p);\r
@@ -116,6 +187,7 @@ void modexClearRegion(page_t *page, int x, int y, int w, int h, byte color);
 void modexCopyPageRegion(page_t *dest, page_t *src, word sx, word sy, word dx, word dy, word width, word height);\r
 \r
 /* Palette fade and flash effects */\r
+void VL_FadeIn (int start, int end, byte far *palette, int steps, video_t *v);\r
 void modexFadeOn(word fade, byte *palette);\r
 void modexFadeOff(word fade, byte *palette);\r
 void modexFlashOn(word fade, byte *palette);\r
@@ -129,6 +201,7 @@ void VL_LoadPalFile(const char *filename, byte *palette);
 void VL_LoadPalFilewithoffset(const char *filename, byte *palette, word o);\r
 void VL_UpdatePaletteWrite(byte *palette, word o);\r
 void modexSavePalFile(char *filename, byte *palette);\r
+#define MenuFadeIn()   VL_FadeIn(0,255,&gamepal,10)\r
 \r
 /* fixed palette functions */\r
 void modexPalBlack();\r
@@ -137,7 +210,11 @@ void modexPalWhite();
 /* utility functions */\r
 void modexPalUpdate(byte *p);\r
 void modexPalUpdate0(byte *p);\r
-void modexPalOverscan(word col);\r
+word modexPalOverscan(word col);\r
+void VL_Plot (int x, int y, int color, ofs_t *ofs);\r
+void VL_Hlin (unsigned x, unsigned y, unsigned width, unsigned color, ofs_t *ofs);\r
+void VL_Vlin (int x, int y, int height, int color, ofs_t *ofs);\r
+void VL_Bar (int x, int y, int width, int height, int color, ofs_t *ofs);\r
 void modexputPixel(page_t *page, int x, int y, byte color);\r
 byte modexgetPixel(page_t *page, int x, int y);\r
 \r
@@ -168,7 +245,7 @@ static inline byte modexreadPixel(page_t *page, int x, int y, word addr)
 #endif\r
 \r
 void modexDrawChar(page_t *page, int x/*for planar selection only*/, word t, word col, word bgcol, word addr);\r
-void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col, word bgcol, const byte *str);\r
+void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col, word bgcol, boolean sw, const byte *str);\r
 void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str);\r
 void modexpdump(page_t *pee);\r
 void modexcls(page_t *page, byte color, byte *Where);\r
@@ -176,6 +253,7 @@ void VL_PatternDraw(video_t *video, word pn, boolean sw, boolean allsw);
 void modexWaitBorder();\r
 void modexWaitBorder_start();\r
 void modexWaitBorder_end();\r
+void VL_WaitVBL(word num);\r
 void VL_PrintmodexmemInfo(video_t *v);\r
 \r
 #endif\r
diff --git a/src/lib/16_vl_1.c b/src/lib/16_vl_1.c
new file mode 100755 (executable)
index 0000000..a6928b2
--- /dev/null
@@ -0,0 +1,580 @@
+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\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 <conio.h>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include "src/lib/16_vl.h"\r
+\r
+/*\r
+=============================================================================\r
+\r
+                                               PALETTE OPS\r
+\r
+               To avoid snow, do a WaitVBL BEFORE calling these\r
+\r
+=============================================================================\r
+*/\r
+\r
+\r
+/*\r
+=================\r
+=\r
+= VL_FillPalette\r
+=\r
+=================\r
+*/\r
+\r
+void VL_FillPalette (int red, int green, int blue)\r
+{\r
+       int     i;\r
+\r
+       outportb (PAL_WRITE_REG,0);\r
+       for (i=0;i<256;i++)\r
+       {\r
+               outportb (PAL_DATA_REG,red);\r
+               outportb (PAL_DATA_REG,green);\r
+               outportb (PAL_DATA_REG,blue);\r
+       }\r
+}\r
+\r
+//===========================================================================\r
+\r
+/*\r
+=================\r
+=\r
+= VL_SetColor\r
+=\r
+=================\r
+*/\r
+\r
+void VL_SetColor       (int color, int red, int green, int blue)\r
+{\r
+       outportb (PAL_WRITE_REG,color);\r
+       outportb (PAL_DATA_REG,red);\r
+       outportb (PAL_DATA_REG,green);\r
+       outportb (PAL_DATA_REG,blue);\r
+}\r
+\r
+//===========================================================================\r
+\r
+/*\r
+=================\r
+=\r
+= VL_GetColor\r
+=\r
+=================\r
+*/\r
+\r
+void VL_GetColor       (int color, int *red, int *green, int *blue)\r
+{\r
+       outportb (PAL_READ_REG,color);\r
+       *red = inportb (PAL_DATA_REG);\r
+       *green = inportb (PAL_DATA_REG);\r
+       *blue = inportb (PAL_DATA_REG);\r
+}\r
+\r
+//===========================================================================\r
+\r
+/*\r
+=================\r
+=\r
+= VL_SetPalette\r
+=\r
+= If fast palette setting has been tested for, it is used\r
+= (some cards don't like outsb palette setting)\r
+=\r
+=================\r
+*/\r
+\r
+void VL_SetPalette (byte far *palette, video_t *v)\r
+{\r
+//     int     i;\r
+       boolean fastpalette;\r
+       fastpalette=v->fastpalette;\r
+\r
+//     outportb (PAL_WRITE_REG,0);\r
+//     for (i=0;i<768;i++)\r
+//             outportb(PAL_DATA_REG,*palette++);\r
+\r
+       __asm {\r
+               mov     dx,PAL_WRITE_REG\r
+               mov     al,0\r
+               out     dx,al\r
+               mov     dx,PAL_DATA_REG\r
+               lds     si,[palette]\r
+\r
+               test    [ss:fastpalette],1\r
+               jz      slowset\r
+//\r
+// set palette fast for cards that can take it\r
+//\r
+               //mov   cx,768\r
+               //rep outsb\r
+               //jmp   done\r
+\r
+//\r
+// set palette slowly for some video cards\r
+//\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
+slowset:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+               mov     cx,256\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
+setloop:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+               lodsb\r
+               out     dx,al\r
+               lodsb\r
+               out     dx,al\r
+               lodsb\r
+               out     dx,al\r
+               loop    setloop\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
+done:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+               mov     ax,ss\r
+                       mov     ds,ax\r
+       }\r
+       v->fastpalette=fastpalette;\r
+}\r
+\r
+\r
+//===========================================================================\r
+\r
+/*\r
+=================\r
+=\r
+= VL_GetPalette\r
+=\r
+= This does not use the port string instructions,\r
+= due to some incompatabilities\r
+=\r
+=================\r
+*/\r
+\r
+void VL_GetPalette (byte far *palette)\r
+{\r
+       int     i;\r
+\r
+       outportb (PAL_READ_REG,0);\r
+       for (i=0;i<768;i++)\r
+               *palette++ = inportb(PAL_DATA_REG);\r
+}\r
+\r
+\r
+//===========================================================================\r
+\r
+/*\r
+=================\r
+=\r
+= VL_FadeOut\r
+=\r
+= Fades the current palette to the given color in the given number of steps\r
+=\r
+=================\r
+*/\r
+\r
+void VL_FadeOut (int start, int end, int red, int green, int blue, int steps, video_t *v)\r
+{\r
+       int             i,j,orig,delta;\r
+       byte    far *origptr, far *newptr;\r
+\r
+       VL_WaitVBL(1);\r
+       VL_GetPalette (&v->palette1[0][0]);\r
+       _fmemcpy (v->palette2,v->palette1,PALSIZE);\r
+\r
+//\r
+// fade through intermediate frames\r
+//\r
+       for (i=0;i<steps;i++)\r
+       {\r
+               origptr = &v->palette1[start][0];\r
+               newptr = &v->palette2[start][0];\r
+               for (j=start;j<=end;j++)\r
+               {\r
+                       orig = *origptr++;\r
+                       delta = red-orig;\r
+                       *newptr++ = orig + delta * i / steps;\r
+                       orig = *origptr++;\r
+                       delta = green-orig;\r
+                       *newptr++ = orig + delta * i / steps;\r
+                       orig = *origptr++;\r
+                       delta = blue-orig;\r
+                       *newptr++ = orig + delta * i / steps;\r
+               }\r
+\r
+               VL_WaitVBL(1);\r
+               VL_SetPalette (&v->palette2[0][0], v);\r
+       }\r
+\r
+//\r
+// final color\r
+//\r
+       VL_FillPalette (red,green,blue);\r
+\r
+       v->screenfaded = true;\r
+}\r
+\r
+\r
+/*\r
+=================\r
+=\r
+= VL_FadeIn\r
+=\r
+=================\r
+*/\r
+\r
+void VL_FadeIn (int start, int end, byte far *palette, int steps, video_t *v)\r
+{\r
+       int             i,j,delta;\r
+\r
+       VL_WaitVBL(1);\r
+       VL_GetPalette (&v->palette1[0][0]);\r
+       _fmemcpy (&v->palette2[0][0],&v->palette1[0][0],sizeof(v->palette1));\r
+\r
+       start *= 3;\r
+       end = end*3+2;\r
+\r
+//\r
+// fade through intermediate frames\r
+//\r
+       for (i=0;i<steps;i++)\r
+       {\r
+               for (j=start;j<=end;j++)\r
+               {\r
+                       delta = palette[j]-v->palette1[0][j];\r
+                       v->palette2[0][j] = v->palette1[0][j] + delta * i / steps;\r
+               }\r
+\r
+               VL_WaitVBL(1);\r
+               VL_SetPalette (&v->palette2[0][0], v);\r
+       }\r
+\r
+//\r
+// final color\r
+//\r
+       VL_SetPalette (palette, v);\r
+       v->screenfaded = false;\r
+}\r
+\r
+\r
+\r
+/*\r
+=================\r
+=\r
+= VL_TestPaletteSet\r
+=\r
+= Sets the palette with outsb, then reads it in and compares\r
+= If it compares ok, fastpalette is set to true.\r
+=\r
+=================\r
+*/\r
+\r
+void VL_TestPaletteSet (video_t *v)\r
+{\r
+       int     i;\r
+\r
+       for (i=0;i<768;i++)\r
+               v->palette1[0][i] = i;\r
+\r
+       v->fastpalette = true;\r
+       VL_SetPalette (&v->palette1[0][0], v);\r
+       VL_GetPalette (&v->palette2[0][0]);\r
+       if (_fmemcmp (&v->palette1[0][0],&v->palette2[0][0],768))\r
+               v->fastpalette = false;\r
+}\r
+\r
+\r
+/*\r
+=============================================================================\r
+\r
+                                                       PIXEL OPS\r
+\r
+=============================================================================\r
+*/\r
+\r
+//byte rightmasks[4] = {1,3,7,15};\r
+\r
+/*\r
+=================\r
+=\r
+= VL_Plot\r
+=\r
+=================\r
+*/\r
+\r
+void VL_Plot (int x, int y, int color, ofs_t *ofs)\r
+{\r
+       byte mask;\r
+       VCLIPDEF\r
+\r
+       mask = pclip[x&3];\r
+       VGAMAPMASK(mask);\r
+       *(byte far *)MK_FP(SCREENSEG,ofs->bufferofs+(ofs->ylookup[y]+(x>>2))) = color;\r
+       VGAMAPMASK(15);\r
+}\r
+\r
+\r
+/*\r
+=================\r
+=\r
+= VL_Hlin\r
+=\r
+=================\r
+*/\r
+\r
+void VL_Hlin (unsigned x, unsigned y, unsigned width, unsigned color, ofs_t *ofs)\r
+{\r
+       unsigned                xbyte;\r
+       byte                    far *dest;\r
+       byte                    leftmask,rightmask;\r
+       int                             midbytes;\r
+\r
+       LRCLIPDEF\r
+\r
+       xbyte = x>>2;\r
+       leftmask = lclip[x&3];\r
+       rightmask = rclip[(x+width-1)&3];\r
+       midbytes = ((x+width+3)>>2) - xbyte - 2;\r
+\r
+       dest = MK_FP(SCREENSEG,ofs->bufferofs+ofs->ylookup[y]+xbyte);\r
+\r
+       if (midbytes<0)\r
+       {\r
+       // all in one byte\r
+               VGAMAPMASK(leftmask&rightmask);\r
+               *dest = color;\r
+               VGAMAPMASK(15);\r
+               return;\r
+       }\r
+\r
+       VGAMAPMASK(leftmask);\r
+       *dest++ = color;\r
+\r
+       VGAMAPMASK(15);\r
+       _fmemset (dest,color,midbytes);\r
+       dest+=midbytes;\r
+\r
+       VGAMAPMASK(rightmask);\r
+       *dest = color;\r
+\r
+       VGAMAPMASK(15);\r
+}\r
+\r
+\r
+/*\r
+=================\r
+=\r
+= VL_Vlin\r
+=\r
+=================\r
+*/\r
+\r
+void VL_Vlin (int x, int y, int height, int color, ofs_t *ofs)\r
+{\r
+       byte    far *dest,mask;\r
+       VCLIPDEF\r
+\r
+       mask = pclip[x&3];\r
+       VGAMAPMASK(mask);\r
+\r
+       dest = MK_FP(SCREENSEG,ofs->bufferofs+ofs->ylookup[y]+(x>>2));\r
+\r
+       while (height--)\r
+       {\r
+               *dest = color;\r
+               dest += ofs->linewidth;\r
+       }\r
+\r
+       VGAMAPMASK(15);\r
+}\r
+\r
+\r
+/*\r
+=================\r
+=\r
+= VL_Bar\r
+=\r
+=================\r
+*/\r
+\r
+void VL_Bar (int x, int y, int width, int height, int color, ofs_t *ofs)\r
+{\r
+       byte    far *dest;\r
+       byte    leftmask,rightmask;\r
+       int             midbytes,linedelta;\r
+\r
+       LRCLIPDEF\r
+\r
+       leftmask = lclip[x&3];\r
+       rightmask = rclip[(x+width-1)&3];\r
+       midbytes = ((x+width+3)>>2) - (x>>2) - 2;\r
+       linedelta = ofs->linewidth-(midbytes+1);\r
+\r
+       dest = MK_FP(SCREENSEG,ofs->bufferofs+ofs->ylookup[y]+(x>>2));\r
+\r
+       if (midbytes<0)\r
+       {\r
+       // all in one byte\r
+               VGAMAPMASK(leftmask&rightmask);\r
+               while (height--)\r
+               {\r
+                       *dest = color;\r
+                       dest += ofs->linewidth;\r
+               }\r
+               VGAMAPMASK(15);\r
+               return;\r
+       }\r
+\r
+       while (height--)\r
+       {\r
+               VGAMAPMASK(leftmask);\r
+               *dest++ = color;\r
+\r
+               VGAMAPMASK(15);\r
+               _fmemset (dest,color,midbytes);\r
+               dest+=midbytes;\r
+\r
+               VGAMAPMASK(rightmask);\r
+               *dest = color;\r
+\r
+               dest+=linedelta;\r
+       }\r
+\r
+       VGAMAPMASK(15);\r
+}\r
+\r
+\r
+/*\r
+==============\r
+\r
+ VL_WaitVBL                    ******** NEW *********\r
+\r
+ Wait for the vertical retrace (returns before the actual vertical sync)\r
+\r
+==============\r
+*/\r
+\r
+void VL_WaitVBL(word num)\r
+{\r
+//PROC VL_WaitVBL  num:WORD\r
+//PUBLIC       VL_WaitVBL\r
+#ifdef __WATCOMC__\r
+       __asm {\r
+#endif\r
+       wait:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+\r
+               mov     dx,STATUS_REGISTER_1\r
+\r
+               mov     cx,[num]\r
+       //\r
+       // wait for a display signal to make sure the raster isn't in the middle\r
+       // of a sync\r
+       //\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
+       waitnosync:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+               in      al,dx\r
+               test    al,8\r
+               jnz     waitnosync\r
+\r
+\r
+#ifdef __BORLANDC__\r
+       }\r
+#endif\r
+       waitsync:\r
+#ifdef __BORLANDC__\r
+       __asm {\r
+#endif\r
+               in      al,dx\r
+               test    al,8\r
+               jz      waitsync\r
+\r
+               loop    waitnosync\r
+\r
+               ret\r
+       }\r
+}\r
+\r
+//===========================================================================\r
+\r
+void VGAMAPMASK(byte x)\r
+{\r
+       __asm {\r
+//             cli\r
+               mov     dx,SC_INDEX\r
+               mov     al,SC_MAPMASK\r
+               mov     ah,x\r
+               out     dx,ax\r
+//             sti\r
+       }\r
+}\r
+\r
+void VGAWRITEMODE(byte x)\r
+{\r
+       __asm {\r
+//             cli\r
+               mov     dx,GC_INDEX\r
+               mov     al,GC_MODE\r
+               out     dx,al\r
+               inc     dx\r
+               in      al,dx\r
+               and     al,252\r
+               or      al,x\r
+               out     dx,al\r
+//             sti\r
+       }\r
+}\r
+\r
+void VGAREADMAP(byte x)\r
+{\r
+       __asm {\r
+//             cli\r
+               mov     dx,GC_INDEX\r
+               mov     al,GC_READMAP\r
+               mov     ah,x\r
+               out     dx,ax\r
+//             sti\r
+       }\r
+}\r
+\r
+//===========================================================================\r
index 9af09403bea7d79a0efb14bd1004226e1b4b7351..bab3eba72e3e819c8b62d0e655c614991009fa9d 100755 (executable)
@@ -283,7 +283,7 @@ void ding(page_t *page, bakapee_t *pee, word q)
 //                     pee->coor = rand()%256;\r
 //                     modexcls(page, pee->coor, VGA);\r
                        colorz(page, pee);\r
-                       modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, "bakapi");\r
+                       modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, 1, "bakapi");\r
                break;\r
                case 7:\r
                        if(pee->coor <= pee->hgq)\r
@@ -294,7 +294,7 @@ void ding(page_t *page, bakapee_t *pee, word q)
                break;\r
                case 8:\r
                        colorz(page, pee);\r
-                       modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, "bakapi");\r
+                       modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, 1, "bakapi");\r
                break;\r
                case 9:\r
                        if(pee->coor <= pee->hgq)\r
diff --git a/src/lib/hb/democ3.c b/src/lib/hb/democ3.c
new file mode 100755 (executable)
index 0000000..43f581c
--- /dev/null
@@ -0,0 +1,82 @@
+/*\r
+=====================\r
+=\r
+= DemoLoop\r
+=\r
+=====================\r
+*/\r
+\r
+static char *ParmStrings[] = {"easy","normal","hard",""};\r
+\r
+void   DemoLoop (void)\r
+{\r
+       int     i,level;\r
+\r
+//\r
+// check for launch from ted\r
+//\r
+       if (tedlevel)\r
+       {\r
+               NewGame();\r
+               gamestate.mapon = tedlevelnum;\r
+               restartgame = gd_Normal;\r
+               for (i = 1;i < _argc;i++)\r
+               {\r
+                       if ( (level = US_CheckParm(_argv[i],ParmStrings)) == -1)\r
+                               continue;\r
+\r
+                       restartgame = gd_Easy+level;\r
+                       break;\r
+               }\r
+               GameLoop();\r
+               TEDDeath();\r
+       }\r
+\r
+\r
+//\r
+// main game cycle\r
+//\r
+       displayofs = bufferofs = 0;\r
+       VW_Bar (0,0,320,200,0);\r
+\r
+       while (1)\r
+       {\r
+               CA_CacheGrChunk (TITLEPIC);\r
+               bufferofs = SCREEN2START;\r
+               displayofs = SCREEN1START;\r
+               VWB_DrawPic (0,0,TITLEPIC);\r
+               MM_SetPurge (&grsegs[TITLEPIC],3);\r
+               UNMARKGRCHUNK(TITLEPIC);\r
+               FizzleFade (bufferofs,displayofs,320,200,true);\r
+\r
+               if (!IN_UserInput(TickBase*3,false))\r
+               {\r
+                       CA_CacheGrChunk (CREDITSPIC);\r
+                       VWB_DrawPic (0,0,CREDITSPIC);\r
+                       MM_SetPurge (&grsegs[CREDITSPIC],3);\r
+                       UNMARKGRCHUNK(CREDITSPIC);\r
+                       FizzleFade (bufferofs,displayofs,320,200,true);\r
+\r
+               }\r
+\r
+               if (!IN_UserInput(TickBase*3,false))\r
+               {\r
+highscores:\r
+                       DrawHighScores ();\r
+                       FizzleFade (bufferofs,displayofs,320,200,true);\r
+                       IN_UserInput(TickBase*3,false);\r
+               }\r
+\r
+               if (IN_IsUserInput())\r
+               {\r
+                       US_ControlPanel ();\r
+\r
+                       if (restartgame || loadedgame)\r
+                       {\r
+                               GameLoop ();\r
+                               goto highscores;\r
+                       }\r
+               }\r
+\r
+       }\r
+}\r
diff --git a/src/lib/hb/democ6.c b/src/lib/hb/democ6.c
new file mode 100755 (executable)
index 0000000..dcad4be
--- /dev/null
@@ -0,0 +1,59 @@
+/*\r
+=====================\r
+=\r
+= DemoLoop\r
+=\r
+=====================\r
+*/\r
+\r
+static char *ParmStrings[] = {"easy","normal","hard",""};\r
+\r
+void   DemoLoop (void)\r
+{\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// main game cycle\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+       displayofs = bufferofs = 0;\r
+       VW_Bar (0,0,320,200,0);\r
+       VW_SetScreen(0,0);\r
+\r
+//\r
+// Read in all the graphic images needed for the title sequence\r
+//\r
+               VW_WaitVBL(1);\r
+               IN_ReadControl(0,&control);\r
+\r
+//     set EASYMODE\r
+//\r
+       if (stricmp(_argv[2], "1") == 0)\r
+               EASYMODEON = true;\r
+       else\r
+               EASYMODEON = false;\r
+\r
+// restore game\r
+//\r
+       if (stricmp(_argv[3], "1") == 0)\r
+       {\r
+               VW_FadeOut();\r
+               bufferofs = displayofs = 0;\r
+               VW_Bar(0,0,320,200,0);\r
+               if (GE_LoadGame())\r
+               {\r
+                       loadedgame = true;\r
+                       playstate = ex_loadedgame;\r
+                       Keyboard[sc_Enter] = true;\r
+                       VW_Bar(0,0,320,200,0);\r
+                       ColoredPalette();\r
+               }\r
+               VW_Bar(0,0,320,200,0);\r
+               VW_FadeIn();\r
+       }\r
+\r
+       // Play a game\r
+       //\r
+               restartgame = gd_Normal;\r
+               NewGame();\r
+               GameLoop();\r
+}\r
index 0cbb7397dd35aa13ddf012e3364f72c34523e346..6f90915bb56032f4baa082ac074a224a2e98a93b 100755 (executable)
@@ -589,7 +589,7 @@ mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y)
                        //modexDrawBmpRegion    (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data));\r
 #endif\r
 #ifdef __DEBUG_MAP__\r
-                       if(dbg_maptext){ sprintf(global_temp_status_text2, "%u", i); modexprint(page, x, y, 1, 0, 1, 2, global_temp_status_text2); }\r
+                       if(dbg_maptext){ sprintf(global_temp_status_text2, "%u", i); modexprint(page, x, y, 1, 0, 1, 2, 1, global_temp_status_text2); }\r
 #endif\r
                break;\r
        }\r
@@ -604,7 +604,7 @@ if(dbg_pagedelayrendermap)          if(!y)  y+=TILEWH;      else    y-=TILEWH;
        poopoffset%=player[0].enti.speed;\r
 //printf("y: %d\n", poopoffset);\r
 #ifdef __DEBUG_RF__\r
-if(dbg_pagedelayrendermap){ sprintf(global_temp_status_text, "%-3u", mv->dx); modexprint(mv[0].page, player[0].enti.x, player[0].enti.y-28-(poopoffset*8) , 1, 0, PALMAPDRAWW, 1, global_temp_status_text); }\r
+if(dbg_pagedelayrendermap){ sprintf(global_temp_status_text, "%-3u", mv->dx); modexprint(mv[0].page, player[0].enti.x, player[0].enti.y-28-(poopoffset*8) , 1, 0, PALMAPDRAWW, 1, 1, global_temp_status_text); }\r
 #endif\r
        /* the position within the map array */\r
        i=ty * mv->map->width + tx;\r
@@ -613,7 +613,7 @@ if(dbg_pagedelayrendermap){ sprintf(global_temp_status_text, "%-3u", mv->dx); mo
                        mapDrawTile(mv->map->tiles, mv->map->layerdata[0].data[i], mv->page, mv->dx, y);\r
                        for(z=1;z<=2;z++)\r
                                if(mv->map->layerdata[z].data[i]){\r
-                                       sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, mv->dx, y, 1, 0, PALMAPDRAWW, z+2, global_temp_status_text2);\r
+                                       sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, mv->dx, y, 1, 0, PALMAPDRAWW, z+2, 1, global_temp_status_text2);\r
                                        //mapDrawTile(mv->map->tiles, mv->map->layerdata[z].data[i], mv->page, mv->dx, y);\r
                                }\r
                }\r
@@ -644,7 +644,7 @@ if(dbg_pagedelayrendermap){ sprintf(global_temp_status_text, "%-3u", mv->dy); mo
                        mapDrawTile(mv->map->tiles, mv->map->layerdata[0].data[i], mv->page, x, mv->dy);\r
                        for(z=1;z<=2;z++)\r
                                if(mv->map->layerdata[z].data[i]){\r
-                                       sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, x, mv->dy, 1, 0, PALMAPDRAWW, z+2, global_temp_status_text2);\r
+                                       sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, x, mv->dy, 1, 0, PALMAPDRAWW, z+2, 1, global_temp_status_text2);\r
                                        //mapDrawTile(mv->map->tiles, mv->map->layerdata[z].data[i], mv->page, x, mv->dy);\r
                                }\r
                }\r
@@ -666,7 +666,7 @@ void mapDrawWRow(map_view_t *mv, int tx, int ty, word y)
                        mapDrawTile(mv->map->tiles, mv->map->layerdata[0].data[i], mv->page, mv->dx, y);\r
                        for(z=1;z<=2;z++)\r
                                if(mv->map->layerdata[z].data[i]){\r
-                                       sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, mv->dx, y, 1, 0, PALMAPDRAWW, z+2, global_temp_status_text2);\r
+                                       sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, mv->dx, y, 1, 0, PALMAPDRAWW, z+2, 1, global_temp_status_text2);\r
                                        //mapDrawTile(mv->map->tiles, mv->map->layerdata[z].data[i], mv->page, mv->dx, y);\r
                                }\r
                }\r
@@ -688,7 +688,7 @@ void mapDrawWCol(map_view_t *mv, int tx, int ty, word x)
                        mapDrawTile(mv->map->tiles, mv->map->layerdata[0].data[i], mv->page, x, mv->dy);\r
                        for(z=1;z<=2;z++)\r
                                if(mv->map->layerdata[z].data[i]){\r
-                                       sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, x, mv->dy, 1, 0, PALMAPDRAWW, z+2, global_temp_status_text2);\r
+                                       sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, x, mv->dy, 1, 0, PALMAPDRAWW, z+2, 1, global_temp_status_text2);\r
                                        //mapDrawTile(mv->map->tiles, mv->map->layerdata[z].data[i], mv->page, x, mv->dy);\r
                                }\r
                }\r
@@ -722,7 +722,7 @@ void shinku(global_game_variables_t *gv)
                                gv->video.page[/*!*/(gv->video.p)].dx,\r
                                gv->video.page[/*!*/(gv->video.p)].dy,\r
                                96, 16);\r
-                       modexprint(&(gv->video.page[/*!*/(gv->video.p)]), x, y, type, 1, col, bgcol, global_temp_status_text);\r
+                       modexprint(&(gv->video.page[/*!*/(gv->video.p)]), x, y, type, 1, col, 1, bgcol, global_temp_status_text);\r
 //0000printf("dx=%u    dy=%u\n", gv->video.page[/*!*/(gv->video.p)].dx, gv->video.page[/*!*/(gv->video.p)].dy);\r
                }\r
                gv->kurokku.tiku=0;\r