--- /dev/null
+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
--- /dev/null
+\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
#
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
#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)
$(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
//#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
//\r
// }\r
// printf("]\n");\r
-// printf("press any key to continue!\n");\r
-// getch();\r
+// KEYP\r
}\r
#endif\r
\r
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
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
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
{\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
// 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
#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
//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
#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
#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
//\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
}\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
//\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
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;
//
SD_StopSound();*/
-// oldborder = bordercolor;
-// VW_ColorBorder (15);
+ oldborder = gvar->video.bordercolor;
+ gvar->video.bordercolor = modexPalOverscan(15);
if(beforesort)
beforesort();
//dword wwww;
byte scratch[160],scratch0[4096],str[16];//[[[[scratch1[160],
//byte d = '#';
-//[[[[ VW_SetDefaultColors();
//[[[[ VW_SetLineWidth(40);
//++++mh temp = bufferofs;
//++++mh bufferofs = 0;
//++++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;
+}
+
//==========================================================================
/*
#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
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
\r
#include "src/lib/16_tail.h"\r
#include "src/lib/16text.h"\r
-\r
/*\r
==========================\r
=\r
{\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
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
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
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
} 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
\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
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
//==========================================================================\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
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
{\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
}\r
break;\r
}\r
+ VL_SetLineWidth (cm.offset, &gv->video.ofs);\r
+ gv->video.VL_Started=1;\r
}\r
\r
void\r
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
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
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
}\r
}\r
\r
+//check 16_vl_1.c\r
\r
/* fade and flash */\r
void\r
}\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
}\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
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
\r
}\r
\r
+//===========================================================================\r
+\r
//\r
// printings of video memory information\r
//\r
#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
#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
#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
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
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
/* 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
#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
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
--- /dev/null
+/* 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
// 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
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
--- /dev/null
+/*\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
--- /dev/null
+/*\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
//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
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
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
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
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
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
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