games: Add the Scott Adams and Brian Howarth games
authorAlan Cox <alan@linux.intel.com>
Sat, 19 Mar 2016 18:53:49 +0000 (18:53 +0000)
committerAlan Cox <alan@linux.intel.com>
Sat, 19 Mar 2016 18:53:49 +0000 (18:53 +0000)
28 files changed:
Applications/games/Makefile
Applications/games/README.adv [new file with mode: 0644]
Applications/games/adv01.c [new file with mode: 0644]
Applications/games/adv02.c [new file with mode: 0644]
Applications/games/adv03.c [new file with mode: 0644]
Applications/games/adv04.c [new file with mode: 0644]
Applications/games/adv05.c [new file with mode: 0644]
Applications/games/adv06.c [new file with mode: 0644]
Applications/games/adv07.c [new file with mode: 0644]
Applications/games/adv08.c [new file with mode: 0644]
Applications/games/adv09.c [new file with mode: 0644]
Applications/games/adv10.c [new file with mode: 0644]
Applications/games/adv11.c [new file with mode: 0644]
Applications/games/adv12.c [new file with mode: 0644]
Applications/games/adv13.c [new file with mode: 0644]
Applications/games/adv14a.c [new file with mode: 0644]
Applications/games/adv14b.c [new file with mode: 0644]
Applications/games/myst01.c [new file with mode: 0644]
Applications/games/myst02.c [new file with mode: 0644]
Applications/games/myst03.c [new file with mode: 0644]
Applications/games/myst04.c [new file with mode: 0644]
Applications/games/myst05.c [new file with mode: 0644]
Applications/games/myst06.c [new file with mode: 0644]
Applications/games/myst07.c [new file with mode: 0644]
Applications/games/myst08.c [new file with mode: 0644]
Applications/games/myst09.c [new file with mode: 0644]
Applications/games/myst10.c [new file with mode: 0644]
Applications/games/myst11.c [new file with mode: 0644]

index e3e1c2b..5f2b236 100644 (file)
@@ -16,10 +16,12 @@ BINMAN = ../../Library/tools/binman
 
 .SUFFIXES: .c .rel
 
-SRCSNS = \
-       qrun.c
+SRCSNS = qrun.c
 
-SRCS  = 
+SRCS  = adv01.c adv02.c adv03.c adv04.c adv05.c adv06.c adv07.c \
+        adv08.c adv09.c adv10.c adv11.c adv12.c adv13.c adv14a.c adv14b.c \
+        myst01.c myst02.c myst03.c myst04.c myst05.c myst06.c myst07.c \
+        myst08.c myst09.c myst10.c myst11.c
 
 SRCSBAD = 
 
diff --git a/Applications/games/README.adv b/Applications/games/README.adv
new file mode 100644 (file)
index 0000000..6b65a91
--- /dev/null
@@ -0,0 +1,149 @@
+See below for the game copyright. The adv*.c and myst*c files were generated by
+ScottFree6800
+
+https://github.com/EtchedPixels/ScottAdams6800
+
+The game engine can also play Gremlins, Robin Of Sherwood, Seas of Blood,
+Supergran and a few other games. You will need a legitimately obtained database
+for these games as they unlike the earlier games have not been re-released
+for free public consumption.
+
+--------------
+
+adv*c:
+
+These Scott Adams original text Adventure games are still copyrighted by
+Scott Adams and are not Public Domain. They may be freely downloaded and
+enjoyed though. They are shareware but the contribution is strictly
+voluntary and the amount left to your own discretion.
+
+Please note that international checks (in small amounts) are usually more
+expensive to cash than their face value is worth so please do not send same.
+
+If you are unable or unwilling to pay for these games you may still freely
+enjoy them.
+
+Please send any payments to
+
+Scott Adams
+845 Badland Road
+Platteville WI USA 53818-9760
+
+Homepage: http://www.msadams.com/
+Email: msadams@msadams.com
+November 24, 1997
+
+
+myst*c:
+
+THE BRIAN HOWARTH COLLECTION 2.0
+--------------------------------
+(c) Brian Howarth, 1981-83
+
+Brian Howarth wrote his "Mysterious Adventures" in 1981-83, originally
+as text-only games (the way they are presented here).  Later versions
+(Spectrum, C-64) had line-drawing graphics.  
+
+All datafiles are conversions from Spectrum/C-64 versions of the games
+(but minus the graphics, as "ScottAdams6800" does not support graphics at
+the moment).  Brian Howarth gave his permission to upload the 11
+Mysterious Adventures to the IF Archive.
+
+Have fun, and happy nostalgia!
+
+----------------------------------------------------------------------\r
+
+The 11 Mysterious Adventures
+
+01 The Golden Baton
+02 The Time Machine
+03 Arrow of Death Part 1
+04 Arrow of Death Part 2
+05 Escape from Pulsar 7
+06 Circus
+07 Feasibility Experiment
+08 The Wizard of Akyrz
+09 Perseus and Andromeda
+10 Ten Little Indians
+11 Waxworks
+
+#1:  The Golden Baton
+
+Your mission is to recover the Golden Baton, a priceless artefact that
+holds within it a kind of life force that maintains the equilibrium
+between good and evil.  Stolen from the Palace of King Ferrenuil, the
+kingdom is already beginning to feel the effects of drought and
+pestilence.
+
+#2:  The Time Machine
+
+Trapped in a thick fog on the moors whilst searching for the house of
+Dr Potter, you begin to wonder just what sort of a story will unfold
+for your newspaper about the strange goings on that have been
+witnessed at this home... that's if you ever find it.
+
+#3:  Arrow of Death Part 1
+
+Although restored to its rightful place in the throne room over 5
+years ago the Golden Baton which usually shines brighter than normal
+gold has suddenly become tarnished, at the same time gloom and despair
+settles over the whole kingdom.  Find the source of this evil
+influence before it is too late.
+
+#4:  Arrow of Death Part 2
+
+Having successfully completed Arrow of Death Part 1, you now have the
+components to make a magical arrow with which you will be able to
+destroy Zerdon, the evil accomplice of the Wizard Akyrz, the real
+mastermind behind the evil that has befallen the Golden Baton.
+
+#5:  Escape from Pulsar 7
+
+As last surviving crew member of this ill-fated space freighter you
+must somehow manage to make your escape in the frail shuttle craft
+without being eaten by the mutant monster now roaming free.
+
+#6:  Circus
+
+What appears to be a circus in full swing from the distance suddenly
+becomes as silent as the grave as you open the gate into the field.
+Never the less you must find some petrol for your car, so here goes...
+
+#7:  Feasibility Experiment
+
+A human guinea-pig for a race of super intelligent beings that have no
+bodily form.  Plucked from your bed in order to satisfy their craving
+for life force that will sustain them.  A warrior that can live up to
+the image of Alexander the Great.
+
+#8:  The Wizard of Akyrz
+
+Twice defeated by a mere mortal it has taken the evil wizard some time
+to recover his powers.  Now he forms a new plan to trap and utterly
+destroy the earthly being that dares to thwart him.
+
+#9:  Perseus and Andromeda
+
+Take on the role of Perseus, son of Zeus and Danae.  Bring back the
+head of Medusa the gorgon, whose very glance can turn a man to stone.
+Otherwise King Polydectes will have his wicked way.
+
+#10:  Ten Little Indians
+
+A train journey begins your quest for the golden idol left by Major
+Johnston-Smythe when he died.  Other treasure hunters have tried
+before you, most of them have never been seen again...
+
+#11:  Waxworks
+
+A nightmare comes true, you must find your way out of the wax works
+factory in which all the exhibits mysteriously come alive.
+
+(c) 1981,1982,1983
+
+All games written by Brian Howarth. #5-7 were co-written by Wherner
+Barnes. #8 and #11 were co-written by Cliff J. Ogden.
+
+Database extraction and this README file by Paul David Doherty.
+<h0142kdd@rz.hu-berlin.de> but revised by Alan Cox to reflect the Fuzix
+packaged versions.
diff --git a/Applications/games/adv01.c b/Applications/games/adv01.c
new file mode 100644 (file)
index 0000000..35d9087
--- /dev/null
@@ -0,0 +1,2839 @@
+#define NUM_OBJ 65
+#define WORDSIZE 3
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 125;
+const uint8_t lightfill = 125;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 3;
+const uint8_t treasures = 13;
+const uint8_t lastloc = 33;
+const uint8_t startloc = 11;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+100, 105, 115, 109, 97, 108, 32, 115, 119, 97, 109, 112, 0 };
+const uint8_t loctxt_2[] = {
+116, 111, 112, 32, 111, 102, 32, 97, 32, 116, 97, 108, 108, 32, 99, 121, 112, 114, 101, 115, 115, 32, 116, 114, 101, 101, 0 };
+const uint8_t loctxt_3[] = {
+100, 97, 109, 112, 32, 104, 111, 108, 108, 111, 119, 32, 115, 116, 117, 109, 112, 32, 105, 110, 32, 116, 104, 101, 32, 115, 119, 97, 109, 112, 0 };
+const uint8_t loctxt_4[] = {
+114, 111, 111, 116, 32, 99, 104, 97, 109, 98, 101, 114, 32, 117, 110, 100, 101, 114, 32, 116, 104, 101, 32, 115, 116, 117, 109, 112, 0 };
+const uint8_t loctxt_5[] = {
+115, 101, 109, 105, 45, 100, 97, 114, 107, 32, 104, 111, 108, 101, 32, 98, 121, 32, 116, 104, 101, 32, 114, 111, 111, 116, 32, 99, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_6[] = {
+108, 111, 110, 103, 32, 100, 111, 119, 110, 32, 115, 108, 111, 112, 105, 110, 103, 32, 104, 97, 108, 108, 0 };
+const uint8_t loctxt_7[] = {
+108, 97, 114, 103, 101, 32, 99, 97, 118, 101, 114, 110, 0 };
+const uint8_t loctxt_8[] = {
+108, 97, 114, 103, 101, 32, 56, 32, 115, 105, 100, 101, 100, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_9[] = {
+114, 111, 121, 97, 108, 32, 97, 110, 116, 101, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_10[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 115, 104, 111, 114, 101, 32, 111, 102, 32, 97, 32, 108, 97, 107, 101, 0 };
+const uint8_t loctxt_11[] = {
+102, 111, 114, 101, 115, 116, 0 };
+const uint8_t loctxt_12[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 112, 105, 116, 115, 0 };
+const uint8_t loctxt_13[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 112, 105, 116, 115, 0 };
+const uint8_t loctxt_14[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 112, 105, 116, 115, 0 };
+const uint8_t loctxt_15[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 112, 105, 116, 115, 0 };
+const uint8_t loctxt_16[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 112, 105, 116, 115, 0 };
+const uint8_t loctxt_17[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 112, 105, 116, 115, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 98, 111, 116, 116, 111, 109, 32, 111, 102, 32, 97, 32, 118, 101, 114, 121, 32, 100, 101, 101, 112, 32, 99, 104, 97, 115, 109, 46, 32, 72, 105, 103, 104, 32, 97, 98, 111, 118, 101, 32, 109, 101, 32, 105, 115, 10, 97, 32, 112, 97, 105, 114, 32, 111, 102, 32, 108, 101, 100, 103, 101, 115, 46, 32, 79, 110, 101, 32, 104, 97, 115, 32, 97, 32, 98, 114, 105, 99, 107, 101, 100, 32, 117, 112, 32, 119, 105, 110, 100, 111, 119, 32, 97, 99, 114, 111, 115, 115, 32, 105, 116, 115, 32, 102, 97, 99, 101, 10, 116, 104, 101, 32, 111, 116, 104, 101, 114, 32, 102, 97, 99, 101, 115, 32, 97, 32, 84, 104, 114, 111, 110, 101, 45, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_19[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 110, 97, 114, 114, 111, 119, 32, 108, 101, 100, 103, 101, 32, 98, 121, 32, 97, 32, 99, 104, 97, 115, 109, 46, 32, 65, 99, 114, 111, 115, 115, 32, 116, 104, 101, 32, 99, 104, 97, 115, 109, 32, 105, 115, 10, 116, 104, 101, 32, 84, 104, 114, 111, 110, 101, 45, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_20[] = {
+114, 111, 121, 97, 108, 32, 99, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_21[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 110, 97, 114, 114, 111, 119, 32, 108, 101, 100, 103, 101, 32, 98, 121, 32, 97, 32, 84, 104, 114, 111, 110, 101, 45, 114, 111, 111, 109, 10, 65, 99, 114, 111, 115, 115, 32, 116, 104, 101, 32, 99, 104, 97, 115, 109, 32, 105, 115, 32, 97, 110, 111, 116, 104, 101, 114, 32, 108, 101, 100, 103, 101, 0 };
+const uint8_t loctxt_22[] = {
+116, 104, 114, 111, 110, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_23[] = {
+115, 117, 110, 110, 121, 32, 109, 101, 97, 100, 111, 119, 0 };
+const uint8_t loctxt_24[] = {
+42, 73, 32, 116, 104, 105, 110, 107, 32, 73, 39, 109, 32, 105, 110, 32, 114, 101, 97, 108, 32, 116, 114, 111, 117, 98, 108, 101, 32, 110, 111, 119, 46, 32, 84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 102, 101, 108, 108, 111, 119, 32, 104, 101, 114, 101, 32, 119, 105, 116, 104, 10, 97, 32, 112, 105, 116, 99, 104, 102, 111, 114, 107, 32, 97, 110, 100, 32, 112, 111, 105, 110, 116, 101, 100, 32, 116, 97, 105, 108, 46, 32, 46, 46, 46, 79, 104, 32, 72, 101, 108, 108, 33, 0 };
+const uint8_t loctxt_25[] = {
+104, 105, 100, 100, 101, 110, 32, 103, 114, 111, 118, 101, 0 };
+const uint8_t loctxt_26[] = {
+113, 117, 105, 99, 107, 45, 115, 97, 110, 100, 32, 98, 111, 103, 0 };
+const uint8_t loctxt_27[] = {
+77, 101, 109, 111, 114, 121, 32, 99, 104, 105, 112, 32, 111, 102, 32, 97, 32, 67, 79, 77, 80, 85, 84, 69, 82, 33, 10, 73, 32, 116, 111, 111, 107, 32, 97, 32, 119, 114, 111, 110, 103, 32, 116, 117, 114, 110, 33, 0 };
+const uint8_t loctxt_28[] = {
+116, 111, 112, 32, 111, 102, 32, 97, 110, 32, 111, 97, 107, 46, 10, 84, 111, 32, 116, 104, 101, 32, 69, 97, 115, 116, 32, 73, 32, 115, 101, 101, 32, 97, 32, 109, 101, 97, 100, 111, 119, 44, 32, 98, 101, 121, 111, 110, 100, 32, 116, 104, 97, 116, 32, 97, 32, 108, 97, 107, 101, 46, 0 };
+const uint8_t loctxt_29[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 101, 100, 103, 101, 32, 111, 102, 32, 97, 32, 66, 79, 84, 84, 79, 77, 76, 69, 83, 83, 32, 104, 111, 108, 101, 0 };
+const uint8_t loctxt_30[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 108, 101, 100, 103, 101, 32, 106, 117, 115, 116, 32, 98, 101, 108, 111, 119, 32, 116, 104, 101, 32, 114, 105, 109, 32, 111, 102, 32, 116, 104, 101, 32, 66, 79, 84, 84, 79, 77, 76, 69, 83, 83, 32, 104, 111, 108, 101, 46, 32, 73, 10, 100, 111, 110, 39, 116, 32, 116, 104, 105, 110, 107, 32, 73, 32, 119, 97, 110, 116, 32, 116, 111, 32, 103, 111, 32, 100, 111, 119, 110, 0 };
+const uint8_t loctxt_31[] = {
+108, 111, 110, 103, 32, 116, 117, 110, 110, 101, 108, 46, 32, 73, 32, 104, 101, 97, 114, 32, 98, 117, 122, 122, 105, 110, 103, 32, 97, 104, 101, 97, 100, 0 };
+const uint8_t loctxt_32[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 101, 110, 100, 108, 101, 115, 115, 32, 99, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_33[] = {
+108, 97, 114, 103, 101, 32, 109, 105, 115, 116, 121, 32, 114, 111, 111, 109, 32, 119, 105, 116, 104, 32, 115, 116, 114, 97, 110, 103, 101, 10, 117, 110, 114, 101, 97, 100, 97, 98, 108, 101, 32, 108, 101, 116, 116, 101, 114, 115, 32, 111, 118, 101, 114, 32, 97, 108, 108, 32, 116, 104, 101, 32, 101, 120, 105, 116, 115, 46, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 7, 10, 1, 0, 24 } }, 
+               { loctxt_1,  { 23, 0, 29, 25, 0, 0 } }, 
+               { loctxt_2,  { 0, 0, 0, 0, 0, 1 } }, 
+               { loctxt_3,  { 0, 0, 0, 0, 1, 4 } }, 
+               { loctxt_4,  { 0, 0, 0, 0, 3, 0 } }, 
+               { loctxt_5,  { 0, 0, 0, 0, 4, 0 } }, 
+               { loctxt_6,  { 0, 0, 0, 0, 5, 7 } }, 
+               { loctxt_7,  { 31, 9, 0, 27, 6, 12 } }, 
+               { loctxt_8,  { 0, 31, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 7, 0, 0, 0, 20, 0 } }, 
+               { loctxt_10,  { 26, 29, 0, 23, 0, 0 } }, 
+               { loctxt_11,  { 11, 11, 23, 11, 0, 0 } }, 
+               { loctxt_12,  { 13, 15, 15, 0, 0, 13 } }, 
+               { loctxt_13,  { 0, 0, 0, 14, 12, 0 } }, 
+               { loctxt_14,  { 17, 12, 13, 16, 16, 17 } }, 
+               { loctxt_15,  { 12, 0, 13, 12, 13, 0 } }, 
+               { loctxt_16,  { 0, 17, 0, 0, 14, 17 } }, 
+               { loctxt_17,  { 17, 12, 12, 15, 14, 18 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 17, 0 } }, 
+               { loctxt_19,  { 0, 0, 0, 20, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 0, 0, 9 } }, 
+               { loctxt_21,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_22,  { 0, 0, 0, 21, 0, 0 } }, 
+               { loctxt_23,  { 0, 1, 10, 11, 0, 0 } }, 
+               { loctxt_24,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_25,  { 11, 0, 1, 0, 0, 0 } }, 
+               { loctxt_26,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_27,  { 0, 0, 7, 0, 0, 0 } }, 
+               { loctxt_28,  { 0, 0, 0, 0, 0, 11 } }, 
+               { loctxt_29,  { 10, 0, 0, 1, 0, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 0, 29, 24 } }, 
+               { loctxt_31,  { 8, 7, 0, 0, 0, 0 } }, 
+               { loctxt_32,  { 32, 33, 32, 32, 32, 32 } }, 
+               { loctxt_33,  { 32, 24, 11, 24, 28, 24 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       4,
+       4,
+       2,
+       0,
+       1,
+       10,
+       1,
+       10,
+       0,
+       3,
+       10,
+       3,
+       0,
+       2,
+       3,
+       5,
+       0,
+       1,
+       18,
+       0,
+       0,
+       1,
+       8,
+       8,
+       21,
+       0,
+       23,
+       30,
+       17,
+       18,
+       0,
+       20,
+       23,
+       18,
+       0,
+       0,
+       22,
+       21,
+       0,
+       9,
+       0,
+       1,
+       0,
+       0,
+       0,
+       25,
+       26,
+       0,
+       0,
+       14,
+       33,
+       0,
+       10,
+       17,
+       0,
+       0,
+       25,
+       11,
+       12,
+       0,
+       0,
+       29,
+       29,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+71, 108, 111, 119, 105, 110, 103, 32, 42, 70, 73, 82, 69, 83, 84, 79, 78, 69, 42, 0 };
+const uint8_t objtxt_1[] = {
+68, 97, 114, 107, 32, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_2[] = {
+42, 80, 111, 116, 32, 111, 102, 32, 82, 85, 66, 73, 69, 83, 42, 0 };
+const uint8_t objtxt_3[] = {
+83, 112, 105, 100, 101, 114, 32, 119, 101, 98, 32, 119, 105, 116, 104, 32, 119, 114, 105, 116, 105, 110, 103, 32, 111, 110, 32, 105, 116, 0 };
+const uint8_t objtxt_4[] = {
+45, 72, 79, 76, 76, 79, 87, 45, 32, 115, 116, 117, 109, 112, 32, 97, 110, 100, 32, 114, 101, 109, 97, 105, 110, 115, 32, 111, 102, 32, 97, 32, 102, 101, 108, 108, 101, 100, 32, 116, 114, 101, 101, 0 };
+const uint8_t objtxt_5[] = {
+67, 121, 112, 114, 101, 115, 115, 32, 116, 114, 101, 101, 0 };
+const uint8_t objtxt_6[] = {
+87, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_7[] = {
+69, 118, 105, 108, 32, 115, 109, 101, 108, 108, 105, 110, 103, 32, 109, 117, 100, 0 };
+const uint8_t objtxt_8[] = {
+42, 71, 79, 76, 68, 69, 78, 32, 70, 73, 83, 72, 42, 0 };
+const uint8_t objtxt_9[] = {
+76, 105, 116, 32, 98, 114, 97, 115, 115, 32, 108, 97, 109, 112, 0 };
+const uint8_t objtxt_10[] = {
+79, 108, 100, 32, 102, 97, 115, 104, 105, 111, 110, 101, 100, 32, 98, 114, 97, 115, 115, 32, 108, 97, 109, 112, 0 };
+const uint8_t objtxt_11[] = {
+82, 117, 115, 116, 121, 32, 97, 120, 101, 32, 40, 77, 97, 103, 105, 99, 32, 119, 111, 114, 100, 32, 34, 66, 85, 78, 89, 79, 78, 34, 32, 111, 110, 32, 105, 116, 41, 0 };
+const uint8_t objtxt_12[] = {
+87, 97, 116, 101, 114, 32, 105, 110, 32, 98, 111, 116, 116, 108, 101, 0 };
+const uint8_t objtxt_13[] = {
+69, 109, 112, 116, 121, 32, 98, 111, 116, 116, 108, 101, 0 };
+const uint8_t objtxt_14[] = {
+82, 105, 110, 103, 32, 111, 102, 32, 115, 107, 101, 108, 101, 116, 111, 110, 32, 107, 101, 121, 115, 0 };
+const uint8_t objtxt_15[] = {
+83, 105, 103, 110, 32, 34, 76, 101, 97, 118, 101, 32, 42, 84, 82, 69, 65, 83, 85, 82, 69, 83, 42, 32, 104, 101, 114, 101, 44, 32, 116, 104, 101, 110, 32, 115, 97, 121, 58, 32, 83, 67, 79, 82, 69, 34, 0 };
+const uint8_t objtxt_16[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_17[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 32, 119, 105, 116, 104, 32, 97, 32, 104, 97, 108, 108, 119, 97, 121, 32, 98, 101, 121, 111, 110, 100, 0 };
+const uint8_t objtxt_18[] = {
+83, 119, 97, 109, 112, 32, 103, 97, 115, 0 };
+const uint8_t objtxt_19[] = {
+42, 71, 79, 76, 68, 69, 78, 32, 78, 69, 84, 42, 0 };
+const uint8_t objtxt_20[] = {
+67, 104, 105, 103, 103, 101, 114, 32, 98, 105, 116, 101, 115, 0 };
+const uint8_t objtxt_21[] = {
+73, 110, 102, 101, 99, 116, 101, 100, 32, 99, 104, 105, 103, 103, 101, 114, 32, 98, 105, 116, 101, 115, 0 };
+const uint8_t objtxt_22[] = {
+80, 97, 116, 99, 104, 101, 115, 32, 111, 102, 32, 34, 79, 73, 76, 89, 34, 32, 115, 108, 105, 109, 101, 0 };
+const uint8_t objtxt_23[] = {
+42, 82, 79, 89, 65, 76, 32, 72, 79, 78, 69, 89, 42, 0 };
+const uint8_t objtxt_24[] = {
+76, 97, 114, 103, 101, 32, 97, 102, 114, 105, 99, 97, 110, 32, 98, 101, 101, 115, 0 };
+const uint8_t objtxt_25[] = {
+86, 101, 114, 121, 32, 116, 104, 105, 110, 32, 98, 108, 97, 99, 107, 32, 98, 101, 97, 114, 0 };
+const uint8_t objtxt_26[] = {
+66, 101, 101, 115, 32, 105, 110, 32, 97, 32, 98, 111, 116, 116, 108, 101, 0 };
+const uint8_t objtxt_27[] = {
+76, 97, 114, 103, 101, 32, 115, 108, 101, 101, 112, 105, 110, 103, 32, 100, 114, 97, 103, 111, 110, 0 };
+const uint8_t objtxt_28[] = {
+70, 108, 105, 110, 116, 32, 38, 32, 115, 116, 101, 101, 108, 0 };
+const uint8_t objtxt_29[] = {
+42, 84, 104, 105, 99, 107, 32, 80, 69, 82, 83, 73, 65, 78, 32, 82, 85, 71, 42, 0 };
+const uint8_t objtxt_30[] = {
+83, 105, 103, 110, 58, 32, 34, 109, 97, 103, 105, 99, 32, 119, 111, 114, 100, 39, 115, 32, 65, 87, 65, 89, 33, 32, 76, 111, 111, 107, 32, 108, 97, 46, 46, 46, 34, 10, 40, 82, 101, 115, 116, 32, 111, 102, 32, 115, 105, 103, 110, 32, 105, 115, 32, 109, 105, 115, 115, 105, 110, 103, 33, 41, 0 };
+const uint8_t objtxt_31[] = {
+68, 105, 115, 116, 101, 110, 100, 101, 100, 32, 103, 97, 115, 32, 98, 108, 97, 100, 100, 101, 114, 0 };
+const uint8_t objtxt_32[] = {
+66, 114, 105, 99, 107, 101, 100, 32, 117, 112, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_33[] = {
+83, 105, 103, 110, 32, 104, 101, 114, 101, 32, 115, 97, 121, 115, 32, 34, 73, 110, 32, 109, 97, 110, 121, 32, 99, 97, 115, 101, 115, 32, 109, 117, 100, 32, 105, 115, 32, 103, 111, 111, 100, 46, 32, 73, 110, 32, 111, 116, 104, 101, 114, 115, 46, 46, 46, 34, 0 };
+const uint8_t objtxt_34[] = {
+83, 116, 114, 101, 97, 109, 32, 111, 102, 32, 108, 97, 118, 97, 0 };
+const uint8_t objtxt_35[] = {
+66, 114, 105, 99, 107, 101, 100, 32, 117, 112, 32, 119, 105, 110, 100, 111, 119, 32, 119, 105, 116, 104, 32, 97, 32, 104, 111, 108, 101, 32, 105, 110, 32, 105, 116, 0 };
+const uint8_t objtxt_36[] = {
+76, 111, 111, 115, 101, 32, 102, 105, 114, 101, 32, 98, 114, 105, 99, 107, 115, 0 };
+const uint8_t objtxt_37[] = {
+42, 71, 79, 76, 68, 32, 67, 82, 79, 87, 78, 42, 0 };
+const uint8_t objtxt_38[] = {
+42, 77, 65, 71, 73, 67, 32, 77, 73, 82, 82, 79, 82, 42, 0 };
+const uint8_t objtxt_39[] = {
+83, 108, 101, 101, 112, 105, 110, 103, 32, 98, 101, 97, 114, 0 };
+const uint8_t objtxt_40[] = {
+69, 109, 112, 116, 121, 32, 119, 105, 110, 101, 32, 98, 108, 97, 100, 100, 101, 114, 0 };
+const uint8_t objtxt_41[] = {
+66, 114, 111, 107, 101, 110, 32, 103, 108, 97, 115, 115, 0 };
+const uint8_t objtxt_42[] = {
+67, 104, 105, 103, 103, 101, 114, 115, 0 };
+const uint8_t objtxt_43[] = {
+83, 108, 105, 103, 104, 116, 108, 121, 32, 119, 111, 111, 122, 121, 32, 98, 101, 97, 114, 0 };
+const uint8_t objtxt_44[] = {
+42, 68, 82, 65, 71, 79, 78, 32, 69, 71, 71, 83, 42, 32, 40, 118, 101, 114, 121, 32, 114, 97, 114, 101, 41, 0 };
+const uint8_t objtxt_45[] = {
+76, 97, 118, 97, 32, 115, 116, 114, 101, 97, 109, 32, 119, 105, 116, 104, 32, 98, 114, 105, 99, 107, 32, 100, 97, 109, 0 };
+const uint8_t objtxt_46[] = {
+42, 74, 69, 87, 69, 76, 69, 68, 32, 70, 82, 85, 73, 84, 42, 0 };
+const uint8_t objtxt_47[] = {
+42, 83, 109, 97, 108, 108, 32, 115, 116, 97, 116, 117, 101, 32, 111, 102, 32, 97, 32, 66, 76, 85, 69, 32, 79, 88, 42, 0 };
+const uint8_t objtxt_48[] = {
+42, 68, 73, 65, 77, 79, 78, 68, 32, 82, 73, 78, 71, 42, 0 };
+const uint8_t objtxt_49[] = {
+42, 68, 73, 65, 77, 79, 78, 68, 32, 66, 82, 65, 67, 69, 76, 69, 84, 42, 0 };
+const uint8_t objtxt_50[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 115, 99, 114, 97, 116, 99, 104, 105, 110, 103, 115, 32, 111, 110, 32, 114, 111, 99, 107, 32, 115, 97, 121, 115, 58, 32, 34, 65, 76, 65, 68, 73, 78, 32, 119, 97, 115, 32, 104, 101, 114, 101, 34, 0 };
+const uint8_t objtxt_51[] = {
+83, 105, 103, 110, 32, 115, 97, 121, 115, 32, 34, 76, 73, 77, 66, 79, 46, 32, 70, 105, 110, 100, 32, 114, 105, 103, 104, 116, 32, 101, 120, 105, 116, 32, 97, 110, 100, 32, 108, 105, 118, 101, 32, 97, 103, 97, 105, 110, 33, 34, 0 };
+const uint8_t objtxt_52[] = {
+83, 109, 111, 107, 105, 110, 103, 32, 104, 111, 108, 101, 46, 32, 112, 105, 101, 99, 101, 115, 32, 111, 102, 32, 100, 114, 97, 103, 111, 110, 32, 97, 110, 100, 32, 103, 111, 114, 101, 46, 0 };
+const uint8_t objtxt_53[] = {
+83, 105, 103, 110, 32, 115, 97, 121, 115, 32, 34, 78, 111, 32, 115, 119, 105, 109, 109, 105, 110, 103, 32, 97, 108, 108, 111, 119, 101, 100, 32, 104, 101, 114, 101, 34, 0 };
+const uint8_t objtxt_54[] = {
+65, 114, 114, 111, 119, 32, 112, 111, 105, 110, 116, 105, 110, 103, 32, 100, 111, 119, 110, 0 };
+const uint8_t objtxt_55[] = {
+68, 101, 97, 100, 32, 102, 105, 115, 104, 0 };
+const uint8_t objtxt_56[] = {
+42, 70, 73, 82, 69, 83, 84, 79, 78, 69, 42, 32, 40, 99, 111, 108, 100, 32, 110, 111, 119, 41, 0 };
+const uint8_t objtxt_57[] = {
+83, 105, 103, 110, 32, 115, 97, 121, 115, 32, 34, 80, 97, 117, 108, 39, 115, 32, 112, 108, 97, 99, 101, 34, 0 };
+const uint8_t objtxt_58[] = {
+84, 114, 101, 101, 115, 0 };
+const uint8_t objtxt_59[] = {
+83, 105, 103, 110, 32, 104, 101, 114, 101, 32, 115, 97, 121, 115, 32, 34, 79, 112, 112, 111, 115, 105, 116, 101, 32, 111, 102, 32, 76, 73, 71, 72, 84, 32, 105, 115, 32, 85, 78, 76, 73, 71, 72, 84, 34, 0 };
+const uint8_t objtxt_60[] = {
+69, 109, 112, 116, 121, 32, 108, 97, 109, 112, 0 };
+const uint8_t objtxt_61[] = {
+77, 117, 100, 100, 121, 32, 119, 111, 114, 116, 104, 108, 101, 115, 115, 32, 111, 108, 100, 32, 114, 117, 103, 0 };
+const uint8_t objtxt_62[] = {
+76, 97, 114, 103, 101, 32, 111, 117, 116, 100, 111, 111, 114, 32, 65, 100, 118, 101, 114, 116, 105, 115, 101, 109, 101, 110, 116, 0 };
+const uint8_t objtxt_63[] = {
+72, 111, 108, 101, 0 };
+const uint8_t objtxt_64[] = {
+0 };
+const uint8_t objtxt_65[] = {
+0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_2[] = {
+67, 104, 111, 112, 32, 39, 101, 114, 32, 100, 111, 119, 110, 33, 0 };
+const uint8_t msgtxt_3[] = {
+66, 79, 89, 32, 116, 104, 97, 116, 32, 114, 101, 97, 108, 108, 121, 32, 104, 105, 116, 32, 116, 104, 101, 32, 115, 112, 111, 116, 33, 0 };
+const uint8_t msgtxt_4[] = {
+68, 114, 97, 103, 111, 110, 32, 115, 109, 101, 108, 108, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 46, 32, 65, 119, 97, 107, 101, 110, 115, 32, 38, 32, 97, 116, 116, 97, 99, 107, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_5[] = {
+76, 111, 99, 107, 32, 115, 104, 97, 116, 116, 101, 114, 115, 0 };
+const uint8_t msgtxt_6[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 105, 116, 115, 32, 108, 111, 99, 107, 101, 100, 0 };
+const uint8_t msgtxt_7[] = {
+84, 73, 77, 66, 69, 82, 46, 32, 83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 102, 101, 108, 108, 32, 102, 114, 111, 109, 32, 116, 104, 101, 32, 116, 114, 101, 101, 32, 116, 111, 112, 32, 38, 32, 118, 97, 110, 105, 115, 104, 101, 100, 32, 105, 110, 32, 116, 104, 101, 32, 115, 119, 97, 109, 112, 0 };
+const uint8_t msgtxt_8[] = {
+84, 73, 77, 66, 69, 82, 33, 0 };
+const uint8_t msgtxt_9[] = {
+76, 97, 109, 112, 32, 105, 115, 32, 111, 102, 102, 0 };
+const uint8_t msgtxt_10[] = {
+76, 97, 109, 112, 32, 98, 117, 114, 110, 115, 32, 119, 105, 116, 104, 32, 97, 32, 99, 111, 108, 100, 32, 102, 108, 97, 109, 101, 108, 101, 115, 115, 32, 98, 108, 117, 101, 32, 103, 108, 111, 119, 46, 0 };
+const uint8_t msgtxt_11[] = {
+73, 39, 109, 32, 98, 105, 116, 32, 98, 121, 32, 97, 32, 115, 112, 105, 100, 101, 114, 0 };
+const uint8_t msgtxt_12[] = {
+10, 77, 121, 32, 99, 104, 105, 103, 103, 101, 114, 32, 98, 105, 116, 101, 115, 32, 97, 114, 101, 32, 110, 111, 119, 32, 73, 78, 70, 69, 67, 84, 69, 68, 33, 10, 0 };
+const uint8_t msgtxt_13[] = {
+77, 121, 32, 98, 105, 116, 101, 115, 32, 104, 97, 118, 101, 32, 114, 111, 116, 116, 101, 100, 32, 109, 121, 32, 119, 104, 111, 108, 101, 32, 98, 111, 100, 121, 33, 0 };
+const uint8_t msgtxt_14[] = {
+66, 101, 97, 114, 32, 101, 97, 116, 115, 32, 116, 104, 101, 32, 104, 111, 110, 101, 121, 32, 97, 110, 100, 32, 102, 97, 108, 108, 115, 32, 97, 115, 108, 101, 101, 112, 46, 0 };
+const uint8_t msgtxt_15[] = {
+66, 101, 101, 115, 32, 115, 116, 105, 110, 103, 32, 109, 101, 0 };
+const uint8_t msgtxt_16[] = {
+70, 105, 114, 115, 116, 32, 73, 32, 110, 101, 101, 100, 32, 97, 110, 32, 101, 109, 112, 116, 121, 32, 99, 111, 110, 116, 97, 105, 110, 101, 114, 46, 0 };
+const uint8_t msgtxt_17[] = {
+84, 104, 101, 32, 98, 101, 101, 115, 32, 97, 108, 108, 32, 115, 117, 102, 102, 111, 99, 97, 116, 101, 100, 32, 97, 110, 100, 32, 100, 105, 115, 97, 112, 112, 101, 97, 114, 101, 100, 0 };
+const uint8_t msgtxt_18[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 73, 39, 109, 32, 104, 111, 108, 100, 105, 110, 103, 32, 118, 105, 98, 114, 97, 116, 101, 115, 32, 97, 110, 100, 46, 46, 46, 0 };
+const uint8_t msgtxt_19[] = {
+110, 111, 116, 104, 105, 110, 103, 32, 116, 111, 32, 108, 105, 103, 104, 116, 32, 105, 116, 32, 119, 105, 116, 104, 0 };
+const uint8_t msgtxt_20[] = {
+71, 97, 115, 32, 98, 108, 97, 100, 100, 101, 114, 32, 98, 108, 101, 119, 32, 117, 112, 0 };
+const uint8_t msgtxt_21[] = {
+105, 110, 32, 109, 121, 32, 104, 97, 110, 100, 115, 33, 0 };
+const uint8_t msgtxt_22[] = {
+103, 97, 115, 32, 110, 101, 101, 100, 115, 32, 116, 111, 32, 98, 101, 32, 99, 111, 110, 116, 97, 105, 110, 101, 100, 32, 98, 101, 102, 111, 114, 101, 32, 105, 116, 32, 119, 105, 108, 108, 32, 98, 117, 114, 110, 0 };
+const uint8_t msgtxt_23[] = {
+71, 97, 115, 32, 100, 105, 115, 115, 105, 112, 97, 116, 101, 115, 46, 32, 40, 73, 32, 116, 104, 105, 110, 107, 32, 121, 111, 117, 32, 98, 108, 101, 119, 32, 105, 116, 41, 0 };
+const uint8_t msgtxt_24[] = {
+84, 104, 97, 116, 32, 119, 111, 110, 39, 116, 32, 105, 103, 110, 105, 116, 101, 0 };
+const uint8_t msgtxt_25[] = {
+72, 111, 119, 63, 0 };
+const uint8_t msgtxt_26[] = {
+66, 101, 97, 114, 32, 119, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 0 };
+const uint8_t msgtxt_27[] = {
+34, 68, 111, 110, 39, 116, 32, 119, 97, 115, 116, 101, 32, 104, 111, 110, 101, 121, 44, 32, 103, 101, 116, 32, 109, 97, 100, 32, 105, 110, 115, 116, 101, 97, 100, 33, 32, 68, 97, 109, 32, 108, 97, 118, 97, 33, 63, 34, 0 };
+const uint8_t msgtxt_28[] = {
+66, 101, 101, 115, 32, 109, 97, 100, 100, 101, 110, 32, 98, 101, 97, 114, 44, 32, 98, 101, 97, 114, 32, 116, 104, 101, 110, 32, 97, 116, 116, 97, 99, 107, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_29[] = {
+73, 116, 32, 115, 111, 97, 107, 115, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 103, 114, 111, 117, 110, 100, 0 };
+const uint8_t msgtxt_30[] = {
+73, 110, 32, 50, 32, 119, 111, 114, 100, 115, 32, 116, 101, 108, 108, 32, 109, 101, 32, 97, 116, 32, 119, 104, 97, 116, 46, 46, 46, 108, 105, 107, 101, 58, 32, 65, 84, 32, 84, 82, 69, 69, 0 };
+const uint8_t msgtxt_31[] = {
+79, 72, 32, 78, 79, 46, 46, 46, 32, 66, 101, 97, 114, 32, 100, 111, 100, 103, 101, 115, 46, 46, 46, 32, 67, 82, 65, 83, 72, 33, 0 };
+const uint8_t msgtxt_32[] = {
+73, 116, 115, 32, 104, 101, 97, 118, 121, 33, 0 };
+const uint8_t msgtxt_33[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 115, 32, 116, 111, 111, 32, 104, 101, 97, 118, 121, 46, 32, 73, 32, 102, 97, 108, 108, 46, 0 };
+const uint8_t msgtxt_34[] = {
+84, 111, 32, 115, 116, 111, 112, 32, 103, 97, 109, 101, 32, 115, 97, 121, 32, 81, 85, 73, 84, 0 };
+const uint8_t msgtxt_35[] = {
+77, 105, 114, 114, 111, 114, 32, 104, 105, 116, 115, 32, 102, 108, 111, 111, 114, 32, 97, 110, 100, 32, 115, 104, 97, 116, 116, 101, 114, 115, 32, 105, 110, 116, 111, 32, 97, 32, 77, 73, 76, 76, 73, 79, 78, 32, 112, 105, 101, 99, 101, 115, 0 };
+const uint8_t msgtxt_36[] = {
+77, 105, 114, 114, 111, 114, 32, 108, 97, 110, 100, 115, 32, 115, 111, 102, 116, 108, 121, 32, 111, 110, 32, 114, 117, 103, 44, 32, 108, 105, 103, 104, 116, 115, 32, 117, 112, 32, 97, 110, 100, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_37[] = {
+89, 111, 117, 32, 108, 111, 115, 116, 32, 42, 65, 76, 76, 42, 32, 116, 114, 101, 97, 115, 117, 114, 101, 115, 46, 0 };
+const uint8_t msgtxt_38[] = {
+73, 39, 109, 32, 110, 111, 116, 32, 99, 97, 114, 114, 121, 105, 110, 103, 32, 97, 120, 44, 32, 116, 97, 107, 101, 32, 105, 110, 118, 101, 110, 116, 111, 114, 121, 33, 0 };
+const uint8_t msgtxt_39[] = {
+73, 116, 32, 100, 111, 101, 115, 110, 39, 116, 32, 115, 101, 101, 109, 32, 116, 111, 32, 98, 111, 116, 104, 101, 114, 32, 104, 105, 109, 32, 97, 116, 32, 97, 108, 108, 33, 0 };
+const uint8_t msgtxt_40[] = {
+84, 104, 101, 32, 109, 117, 100, 32, 100, 114, 105, 101, 100, 32, 117, 112, 32, 97, 110, 100, 32, 102, 101, 108, 108, 32, 111, 102, 102, 46, 0 };
+const uint8_t msgtxt_41[] = {
+66, 101, 97, 114, 32, 105, 115, 32, 115, 111, 32, 115, 116, 97, 114, 116, 108, 101, 100, 32, 116, 104, 97, 116, 32, 104, 101, 32, 70, 69, 76, 76, 32, 111, 102, 102, 32, 116, 104, 101, 32, 108, 101, 100, 103, 101, 33, 0 };
+const uint8_t msgtxt_42[] = {
+34, 32, 68, 82, 65, 71, 79, 78, 32, 83, 84, 73, 78, 71, 32, 34, 32, 97, 110, 100, 32, 102, 97, 100, 101, 115, 46, 32, 73, 32, 100, 111, 110, 39, 116, 32, 103, 101, 116, 32, 105, 116, 44, 32, 73, 32, 104, 111, 112, 101, 32, 121, 111, 117, 32, 100, 111, 46, 0 };
+const uint8_t msgtxt_43[] = {
+84, 104, 101, 32, 98, 101, 101, 115, 32, 97, 116, 116, 97, 99, 107, 32, 116, 104, 101, 32, 100, 114, 97, 103, 111, 110, 32, 119, 104, 105, 99, 104, 32, 103, 101, 116, 115, 32, 115, 111, 32, 97, 110, 110, 111, 121, 101, 100, 32, 105, 116, 32, 103, 101, 116, 115, 32, 117, 112, 10, 97, 110, 100, 32, 102, 108, 121, 115, 32, 97, 119, 97, 121, 46, 46, 46, 0 };
+const uint8_t msgtxt_44[] = {
+76, 97, 109, 112, 32, 105, 115, 32, 110, 111, 119, 32, 102, 117, 108, 108, 32, 38, 32, 108, 105, 116, 0 };
+const uint8_t msgtxt_45[] = {
+10, 73, 39, 109, 32, 98, 105, 116, 116, 101, 110, 32, 98, 121, 32, 99, 104, 105, 103, 103, 101, 114, 115, 46, 10, 0 };
+const uint8_t msgtxt_46[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 116, 104, 101, 114, 101, 32, 97, 108, 108, 32, 114, 105, 103, 104, 116, 33, 32, 77, 97, 121, 98, 101, 32, 73, 32, 115, 104, 111, 117, 108, 100, 32, 103, 111, 32, 116, 104, 101, 114, 101, 63, 0 };
+const uint8_t msgtxt_47[] = {
+77, 97, 121, 98, 101, 32, 105, 102, 32, 73, 32, 116, 104, 114, 101, 119, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 63, 46, 46, 46, 0 };
+const uint8_t msgtxt_48[] = {
+84, 111, 111, 32, 100, 114, 121, 44, 32, 116, 104, 101, 32, 102, 105, 115, 104, 32, 100, 105, 101, 100, 46, 0 };
+const uint8_t msgtxt_49[] = {
+65, 32, 103, 108, 111, 119, 105, 110, 103, 32, 71, 101, 110, 105, 101, 32, 97, 112, 112, 101, 97, 114, 115, 44, 32, 100, 114, 111, 112, 115, 32, 115, 111, 109, 101, 104, 116, 105, 110, 103, 44, 32, 116, 104, 101, 110, 32, 118, 97, 110, 105, 115, 104, 101, 115, 46, 0 };
+const uint8_t msgtxt_50[] = {
+65, 32, 103, 108, 111, 119, 105, 110, 103, 32, 71, 101, 110, 105, 101, 32, 97, 112, 112, 101, 97, 114, 115, 44, 32, 115, 97, 121, 115, 32, 34, 66, 111, 121, 32, 121, 111, 117, 39, 114, 101, 32, 115, 101, 108, 102, 105, 115, 104, 34, 44, 32, 116, 97, 107, 101, 115, 10, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 97, 110, 100, 32, 116, 104, 101, 110, 32, 109, 97, 107, 101, 115, 32, 34, 77, 69, 34, 32, 118, 97, 110, 105, 115, 104, 33, 0 };
+const uint8_t msgtxt_51[] = {
+78, 111, 44, 32, 105, 116, 115, 32, 116, 111, 111, 32, 104, 111, 116, 46, 0 };
+const uint8_t msgtxt_52[] = {
+78, 111, 116, 32, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_53[] = {
+84, 114, 121, 32, 116, 104, 101, 32, 115, 119, 97, 109, 112, 0 };
+const uint8_t msgtxt_54[] = {
+83, 105, 122, 122, 108, 101, 46, 46, 46, 0 };
+const uint8_t msgtxt_55[] = {
+84, 114, 121, 32, 45, 45, 62, 32, 34, 76, 79, 79, 75, 44, 32, 74, 85, 77, 80, 44, 32, 83, 87, 73, 77, 44, 32, 67, 76, 73, 77, 66, 44, 32, 70, 73, 78, 68, 44, 32, 84, 65, 75, 69, 44, 32, 83, 67, 79, 82, 69, 44, 32, 68, 82, 79, 80, 34, 10, 97, 110, 100, 32, 97, 110, 121, 32, 111, 116, 104, 101, 114, 32, 118, 101, 114, 98, 115, 32, 121, 111, 117, 32, 99, 97, 110, 32, 116, 104, 105, 110, 107, 32, 111, 102, 46, 46, 46, 0 };
+const uint8_t msgtxt_56[] = {
+84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 111, 110, 108, 121, 32, 51, 32, 119, 97, 121, 115, 32, 116, 111, 32, 119, 97, 107, 101, 32, 116, 104, 101, 32, 68, 114, 97, 103, 111, 110, 33, 0 };
+const uint8_t msgtxt_57[] = {
+82, 101, 109, 101, 109, 98, 101, 114, 32, 121, 111, 117, 32, 99, 97, 110, 32, 97, 108, 119, 97, 121, 115, 32, 115, 97, 121, 32, 34, 72, 69, 76, 80, 34, 0 };
+const uint8_t msgtxt_58[] = {
+82, 101, 97, 100, 32, 116, 104, 101, 32, 115, 105, 103, 110, 32, 105, 110, 32, 116, 104, 101, 32, 109, 101, 97, 100, 111, 119, 33, 0 };
+const uint8_t msgtxt_59[] = {
+89, 111, 117, 32, 109, 97, 121, 32, 110, 101, 101, 100, 32, 116, 111, 32, 115, 97, 121, 32, 109, 97, 103, 105, 99, 32, 119, 111, 114, 100, 115, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_60[] = {
+65, 32, 118, 111, 105, 99, 101, 32, 66, 79, 79, 79, 79, 77, 83, 32, 111, 117, 116, 58, 0 };
+const uint8_t msgtxt_61[] = {
+112, 108, 101, 97, 115, 101, 32, 108, 101, 97, 118, 101, 32, 105, 116, 32, 97, 108, 111, 110, 101, 0 };
+const uint8_t msgtxt_62[] = {
+83, 111, 114, 114, 121, 44, 32, 73, 32, 99, 97, 110, 32, 111, 110, 108, 121, 32, 116, 104, 114, 111, 119, 32, 116, 104, 101, 32, 97, 120, 46, 0 };
+const uint8_t msgtxt_63[] = {
+77, 101, 100, 105, 99, 105, 110, 101, 32, 105, 115, 32, 103, 111, 111, 100, 32, 102, 111, 114, 32, 98, 105, 116, 101, 115, 46, 0 };
+const uint8_t msgtxt_64[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 107, 110, 111, 119, 32, 119, 104, 101, 114, 101, 32, 105, 116, 32, 105, 115, 0 };
+const uint8_t msgtxt_65[] = {
+10, 87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 110, 117, 109, 98, 101, 114, 58, 32, 49, 32, 34, 65, 68, 86, 69, 78, 84, 85, 82, 69, 76, 65, 78, 68, 34, 46, 10, 73, 110, 32, 116, 104, 105, 115, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 121, 111, 117, 39, 114, 101, 32, 116, 111, 32, 102, 105, 110, 100, 32, 42, 84, 82, 69, 65, 83, 85, 82, 69, 83, 42, 32, 38, 32, 115, 116, 111, 114, 101, 32, 116, 104, 101, 109, 32, 97, 119, 97, 121, 46, 10, 10, 84, 111, 32, 115, 101, 101, 32, 104, 111, 119, 32, 119, 101, 108, 108, 32, 121, 111, 117, 39, 114, 101, 32, 100, 111, 105, 110, 103, 32, 115, 97, 121, 58, 32, 34, 83, 67, 79, 82, 69, 34, 0 };
+const uint8_t msgtxt_66[] = {
+66, 108, 111, 119, 32, 105, 116, 32, 117, 112, 33, 0 };
+const uint8_t msgtxt_67[] = {
+70, 105, 115, 104, 32, 104, 97, 118, 101, 32, 101, 115, 99, 97, 112, 101, 100, 32, 98, 97, 99, 107, 32, 116, 111, 32, 116, 104, 101, 32, 108, 97, 107, 101, 46, 0 };
+const uint8_t msgtxt_68[] = {
+79, 75, 0 };
+const uint8_t msgtxt_69[] = {
+72, 117, 104, 63, 32, 73, 32, 100, 111, 110, 39, 116, 32, 116, 104, 105, 110, 107, 32, 115, 111, 33, 0 };
+const uint8_t msgtxt_70[] = {
+89, 111, 117, 32, 109, 105, 103, 104, 116, 32, 116, 114, 121, 32, 101, 120, 97, 109, 105, 110, 105, 110, 103, 32, 116, 104, 105, 110, 103, 115, 46, 46, 46, 0 };
+const uint8_t msgtxt_71[] = {
+87, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_72[] = {
+79, 75, 44, 32, 73, 32, 116, 104, 114, 101, 119, 32, 105, 116, 46, 0 };
+const uint8_t msgtxt_73[] = {
+10, 67, 104, 101, 99, 107, 32, 119, 105, 116, 104, 32, 121, 111, 117, 114, 32, 102, 97, 118, 111, 114, 105, 116, 101, 32, 99, 111, 109, 112, 117, 116, 101, 114, 32, 100, 101, 97, 108, 101, 114, 32, 102, 111, 114, 32, 116, 104, 101, 32, 110, 101, 120, 116, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 10, 112, 114, 111, 103, 114, 97, 109, 58, 32, 80, 73, 82, 65, 84, 69, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 46, 32, 73, 102, 32, 116, 104, 101, 121, 32, 100, 111, 110, 39, 116, 32, 99, 97, 114, 114, 121, 32, 34, 65, 68, 86, 69, 78, 84, 85, 82, 69, 34, 32, 104, 97, 118, 101, 10, 116, 104, 101, 109, 32, 99, 97, 108, 108, 58, 32, 49, 45, 51, 48, 53, 45, 56, 54, 50, 45, 54, 57, 49, 55, 32, 116, 111, 100, 97, 121, 33, 10, 0 };
+const uint8_t msgtxt_74[] = {
+84, 104, 101, 32, 97, 120, 32, 118, 105, 98, 114, 97, 116, 101, 100, 33, 0 };
+const uint8_t msgtxt_75[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  75    FISH ESCAPE*/
+       145, 75, 
+       1, 8, 6, 19, 0, 8, 0, 10, 
+       117, 62, 
+/* AUTO  10    DIE BITES*/
+       137, 10, 
+       1, 21, 7, 33, 
+       13, 61, 
+/* AUTO  10    BITE INFECT*/
+       146, 10, 
+       1, 20, 0, 21, 0, 20, 6, 7, 
+       12, 74, 59, 
+/* AUTO  8     BEES DIE*/
+       145, 8, 
+       3, 26, 0, 26, 0, 13, 9, 17, 
+       17, 72, 
+/* AUTO  100   HIT MIRROR*/
+       183, 
+       8, 5, 0, 38, 0, 41, 0, 21, 0, 5, 
+       55, 62, 60, 64, 
+/* AUTO  100   IN HADES*/
+       165, 
+       4, 24, 
+       37, 63, 
+/* AUTO  5     MUD OFF*/
+       145, 5, 
+       1, 7, 0, 7, 0, 1, 6, 12, 
+       40, 62, 
+/* AUTO  8     BIT CHIG*/
+       149, 8, 
+       6, 20, 6, 21, 0, 20, 2, 42, 6, 7, 
+       74, 45, 
+/* AUTO  8     BEE STING*/
+       137, 8, 
+       2, 24, 12, 7, 
+       15, 61, 
+/* AUTO  100   LITE*/
+       169, 
+       4, 5, 8, 15, 
+       57, 76, 
+/* AUTO  50    FISH DIE*/
+       146, 50, 
+       1, 8, 6, 12, 0, 8, 0, 55, 
+       48, 59, 52, 
+/* AUTO  100   MOVE OX*/
+       178, 
+       8, 7, 0, 7, 0, 47, 0, 25, 
+       60, 62, 66, 
+/* AUTO  30    GET CHIG*/
+       149, 30, 
+       1, 42, 6, 21, 6, 20, 0, 20, 6, 7, 
+       74, 45, 
+/* AUTO  50    MUD DRAGON*/
+       138, 50, 
+       2, 27, 3, 7, 
+       70, 4, 61, 
+/* AUTO  100   BLAST WALL*/
+       182, 
+       8, 12, 2, 32, 0, 36, 0, 32, 0, 35, 
+       53, 55, 53, 
+/* AUTO  100   BLAS DRAGON*/
+       177, 
+       8, 12, 2, 27, 0, 52, 0, 27, 
+       53, 55, 
+/* AUTO  100   1ST MIRROR CLUE*/
+       178, 
+       8, 1, 9, 2, 0, 1, 0, 2, 
+       42, 60, 58, 
+/* AUTO  100   BEAR MAD*/
+       174, 
+       8, 14, 0, 13, 0, 14, 
+       74, 60, 61, 
+/* AUTO  100   RESET BLAST*/
+       169, 
+       8, 12, 0, 12, 
+       64, 60, 
+/* AUTO  100   INTRO*/
+       171, 
+       9, 13, 0, 13, 
+       110, 58, 115, 107, 
+/* AUTO  100   2ND MIRROR CLUE*/
+       178, 
+       8, 1, 8, 2, 0, 1, 0, 2, 
+       27, 60, 60, 
+/* AUTO  100   DEAD LAMP*/
+       178, 
+       0, 16, 8, 16, 0, 60, 0, 9, 
+       60, 72, 76, 
+/* AUTO  100   MUDDY RUG*/
+       176, 
+       4, 26, 3, 29, 0, 29, 0, 61, 
+       72, 
+};
+const uint8_t actions[] = {
+/* LOO   LAV   */
+       4, 29, 54, 
+       2, 34, 
+       46, 
+/* LOO   TRE   */
+       4, 29, 57, 
+       2, 4, 
+       46, 
+/* GET   MUD   */
+       19, 10, 21, 
+       2, 7, 1, 21, 0, 21, 0, 7, 
+       59, 52, 118, 3, 
+/* GET   HON   */
+       13, 10, 42, 
+       2, 23, 6, 7, 2, 24, 
+       15, 61, 
+/* GET   MUD   */
+       19, 10, 21, 
+       2, 7, 1, 20, 0, 20, 0, 7, 
+       59, 52, 118, 3, 
+/* DRO   HON   */
+       23, 18, 42, 
+       1, 23, 0, 23, 2, 25, 0, 39, 0, 25, 
+       59, 14, 53, 55, 
+/* DRO   HON   */
+       8, 18, 42, 
+       1, 23, 0, 23, 
+       53, 
+/* GET   BEE   */
+       9, 10, 23, 
+       2, 24, 6, 7, 
+       15, 61, 
+/* GET   BEE   */
+       12, 10, 23, 
+       2, 24, 1, 7, 6, 13, 
+       16, 
+/* GET   BEE   */
+       21, 10, 23, 
+       2, 24, 1, 7, 1, 13, 0, 13, 0, 26, 
+       72, 118, 
+/* GET   INV   */
+       0, 10, 33, 
+       66, 
+/* CRO   LAV   */
+       4, 56, 54, 
+       4, 18, 
+       51, 
+/* INV   ANY   */
+       0, 34, 0, 
+       66, 
+/* SAY   AWA   */
+       15, 48, 9, 
+       1, 29, 4, 17, 0, 23, 
+       54, 18, 57, 64, 
+/* LIG   ANY   */
+       4, 14, 0, 
+       6, 28, 
+       19, 
+/* LIG   GAS   */
+       15, 14, 25, 
+       1, 31, 1, 28, 0, 31, 
+       20, 21, 61, 59, 
+/* MAK   HOL   */
+       9, 58, 16, 
+       3, 26, 0, 17, 
+       58, 118, 
+/* LIG   GAS   */
+       19, 14, 25, 
+       2, 31, 1, 28, 0, 31, 0, 12, 
+       70, 55, 58, 20, 
+/* GO    LED   */
+       14, 1, 34, 
+       4, 20, 2, 35, 0, 19, 
+       54, 70, 64, 
+/* GET   GAS   */
+       8, 10, 25, 
+       4, 1, 6, 40, 
+       16, 
+/* GET   GAS   */
+       17, 10, 25, 
+       4, 1, 1, 40, 0, 40, 0, 31, 
+       72, 118, 
+/* DRO   GAS   */
+       14, 18, 25, 
+       1, 31, 0, 31, 0, 40, 
+       72, 118, 23, 
+/* LIG   GAS   */
+       8, 14, 25, 
+       2, 18, 1, 28, 
+       22, 
+/* FIN   SWA   */
+       0, 45, 53, 
+       114, 
+/* GO    THR   */
+       4, 1, 35, 
+       4, 19, 
+       25, 
+/* GET   MIR   */
+       13, 10, 10, 
+       2, 38, 0, 38, 5, 25, 
+       52, 118, 
+/* DRO   MIR   */
+       18, 18, 10, 
+       1, 38, 0, 38, 2, 29, 0, 1, 
+       53, 36, 58, 
+/* DRI   FRU   */
+       9, 42, 43, 
+       1, 46, 0, 46, 
+       3, 59, 
+/* GET   WAT   */
+       18, 10, 13, 
+       2, 6, 1, 13, 0, 13, 0, 12, 
+       59, 52, 118, 
+/* JUM   ANY   */
+       13, 6, 0, 
+       4, 19, 0, 21, 6, 36, 
+       54, 64, 
+/* JUM   ANY   */
+       9, 6, 0, 
+       4, 21, 0, 19, 
+       54, 64, 
+/* GO    THR   */
+       8, 1, 35, 
+       4, 21, 2, 25, 
+       26, 
+/* GO    THR   */
+       14, 1, 35, 
+       4, 21, 5, 25, 0, 22, 
+       54, 70, 64, 
+/* MAK   LAV   BUILD DAM*/
+       22, 58, 54, 
+       3, 36, 0, 0, 0, 34, 0, 45, 2, 34, 
+       72, 53, 76, 
+/* GO    LAV   */
+       4, 1, 54, 
+       4, 18, 
+       51, 
+/* DRO   BEE   */
+       23, 18, 23, 
+       1, 26, 2, 25, 0, 26, 0, 24, 0, 14, 
+       28, 59, 53, 58, 
+/* GET   WAT   */
+       8, 10, 13, 
+       2, 6, 6, 13, 
+       16, 
+/* REA   WEB   */
+       4, 38, 51, 
+       2, 3, 
+       2, 
+/* GO    TRE   */
+       10, 1, 57, 
+       0, 2, 2, 5, 
+       54, 70, 64, 
+/* DRO   WAT   */
+       18, 18, 13, 
+       1, 12, 0, 12, 0, 13, 7, 18, 
+       72, 118, 29, 
+/* FIL   LAM   */
+       19, 55, 17, 
+       3, 22, 1, 60, 0, 22, 0, 60, 
+       59, 59, 44, 69, 
+/* CHO   TRE   */
+       22, 8, 57, 
+       0, 5, 2, 5, 12, 14, 0, 4, 1, 11, 
+       55, 53, 7, 
+/* OPE   DOO   */
+       12, 69, 20, 
+       4, 5, 2, 16, 6, 14, 
+       6, 
+/* UNL   DOO   */
+       12, 37, 20, 
+       4, 5, 2, 16, 6, 14, 
+       6, 
+/* THR   AXE   */
+       14, 24, 11, 
+       1, 11, 0, 3, 0, 11, 
+       30, 58, 53, 
+/* OPE   DOO   */
+       18, 69, 20, 
+       2, 16, 1, 14, 0, 16, 0, 17, 
+       55, 53, 76, 
+/* CRO   ANY   */
+       0, 56, 0, 
+       25, 
+/* JUM   ANY   */
+       9, 6, 0, 
+       4, 19, 1, 36, 
+       33, 61, 
+/* DAM   LAV   */
+       22, 57, 54, 
+       3, 36, 0, 0, 0, 34, 0, 45, 2, 34, 
+       72, 53, 76, 
+/* GET   BRI   */
+       10, 10, 37, 
+       2, 36, 0, 36, 
+       52, 118, 32, 
+/* STO   ANY   */
+       0, 32, 0, 
+       34, 
+/* QUI   ANY   */
+       1, 26, 0, 
+       65, 63, 
+/* GET   MIR   */
+       8, 10, 10, 
+       2, 38, 2, 25, 
+       26, 
+/* DRO   MIR   */
+       18, 18, 10, 
+       1, 38, 5, 29, 0, 41, 0, 38, 
+       35, 53, 59, 
+/* AT    BEA   */
+       15, 7, 38, 
+       8, 3, 5, 38, 0, 3, 
+       122, 110, 111, 60, 
+/* AT    DRA   */
+       14, 7, 39, 
+       8, 3, 0, 3, 2, 27, 
+       122, 39, 60, 
+/* SCO   ANY   */
+       0, 33, 0, 
+       65, 
+/* HEL   ANY   */
+       7, 47, 0, 
+       1, 20, 
+       70, 110, 113, 105, 
+/* HEL   ANY   */
+       7, 47, 0, 
+       1, 21, 
+       70, 110, 113, 105, 
+/* GO    LED   */
+       4, 1, 34, 
+       4, 18, 
+       102, 
+/* GET   LAV   */
+       4, 10, 54, 
+       2, 34, 
+       51, 
+/* SCR   ANY   */
+       18, 51, 0, 
+       2, 25, 0, 43, 0, 18, 0, 25, 
+       41, 62, 55, 
+/* DRO   BEE   */
+       23, 18, 23, 
+       1, 26, 2, 27, 0, 24, 0, 44, 0, 27, 
+       53, 53, 55, 43, 
+/* AT    WIN   */
+       11, 7, 19, 
+       8, 3, 0, 3, 
+       60, 1, 110, 107, 
+/* OPE   DOO   */
+       4, 69, 20, 
+       2, 17, 
+       64, 
+/* GO    HOL   */
+       10, 1, 16, 
+       2, 35, 0, 19, 
+       70, 54, 64, 
+/* AT    BEA   */
+       23, 7, 38, 
+       8, 3, 0, 38, 0, 5, 0, 4, 2, 38, 
+       55, 58, 31, 60, 
+/* FIN   AXE   */
+       1, 45, 11, 
+       110, 114, 
+/* WAK   ANY   */
+       1, 36, 0, 
+       1, 47, 
+/* GO    TRE   */
+       10, 1, 57, 
+       2, 4, 0, 3, 
+       54, 70, 64, 
+/* CHO   TRE   */
+       22, 8, 57, 
+       2, 5, 1, 11, 0, 5, 0, 4, 1, 14, 
+       55, 53, 8, 
+/* ATT   BEA   */
+       5, 39, 38, 
+       2, 25, 
+       26, 47, 
+/* ATT   DRA   */
+       5, 39, 39, 
+       2, 27, 
+       39, 47, 
+/* DRI   WAT   */
+       14, 42, 13, 
+       1, 12, 0, 12, 0, 13, 
+       3, 59, 52, 
+/* DRI   WAT   */
+       4, 42, 13, 
+       2, 6, 
+       3, 
+/* DRI   HON   */
+       9, 42, 42, 
+       3, 23, 0, 23, 
+       3, 59, 
+/* AT    DOO   */
+       23, 7, 20, 
+       2, 16, 8, 3, 0, 16, 0, 17, 0, 3, 
+       55, 53, 5, 60, 
+/* SWI   ANY   */
+       8, 27, 0, 
+       4, 26, 10, 0, 
+       33, 
+/* SWI   ANY   */
+       14, 27, 0, 
+       4, 26, 11, 0, 0, 10, 
+       54, 70, 64, 
+/* CHO   ANY   */
+       4, 8, 0, 
+       6, 11, 
+       38, 
+/* SAY   BUN   */
+       23, 48, 32, 
+       3, 47, 1, 11, 0, 11, 0, 25, 0, 7, 
+       85, 18, 62, 58, 
+/* SAY   BUN   */
+       19, 48, 32, 
+       1, 11, 7, 26, 0, 11, 0, 25, 
+       85, 18, 62, 66, 
+/* RUB   LAM   */
+       4, 28, 17, 
+       3, 9, 
+       51, 
+/* GET   MUD   */
+       9, 10, 21, 
+       2, 7, 0, 7, 
+       52, 118, 
+/* RUB   LAM   */
+       18, 28, 17, 
+       3, 10, 9, 8, 0, 48, 0, 8, 
+       49, 53, 58, 
+/* RUB   LAM   */
+       8, 28, 17, 
+       3, 10, 8, 11, 
+       1, 
+/* RUB   LAM   */
+       19, 28, 17, 
+       3, 10, 8, 10, 0, 11, 0, 48, 
+       50, 58, 61, 59, 
+/* RUB   LAM   */
+       19, 28, 17, 
+       3, 10, 8, 9, 0, 10, 0, 49, 
+       50, 58, 61, 59, 
+/* RUB   LAM   */
+       18, 28, 17, 
+       3, 10, 8, 8, 0, 49, 0, 9, 
+       49, 53, 58, 
+/* SCR   ANY   */
+       14, 51, 0, 
+       1, 20, 0, 20, 0, 21, 
+       3, 12, 72, 
+/* SCR   ANY   */
+       6, 51, 0, 
+       1, 21, 
+       3, 13, 61, 
+/* SWI   ANY   */
+       4, 27, 0, 
+       7, 26, 
+       102, 
+/* WAV   ANY   */
+       0, 60, 0, 
+       1, 
+/* SAY   BUN   */
+       6, 48, 32, 
+       2, 11, 
+       118, 85, 124, 
+/* LIG   LAM   */
+       4, 14, 17, 
+       3, 9, 
+       10, 
+/* FIN   TRE   */
+       0, 45, 57, 
+       103, 
+/* DRO   BEE   */
+       18, 18, 23, 
+       1, 26, 0, 24, 0, 26, 0, 13, 
+       53, 72, 118, 
+/* FIN   KEY   */
+       0, 45, 30, 
+       103, 
+/* FIN   MUD   */
+       0, 45, 21, 
+       103, 
+/* AT    SHO   */
+       22, 7, 60, 
+       8, 3, 0, 3, 4, 26, 0, 11, 0, 10, 
+       60, 62, 118, 
+/* GO    TRE   */
+       10, 1, 57, 
+       4, 11, 0, 28, 
+       54, 70, 64, 
+/* HEL   ANY   */
+       6, 47, 0, 
+       4, 26, 
+       110, 105, 109, 
+/* HEL   ANY   */
+       5, 47, 0, 
+       4, 11, 
+       110, 105, 
+/* HEL   ANY   */
+       5, 47, 0, 
+       4, 19, 
+       110, 105, 
+/* HEL   ANY   */
+       5, 47, 0, 
+       4, 23, 
+       110, 106, 
+/* HEL   ANY   */
+       5, 47, 0, 
+       4, 13, 
+       110, 109, 
+/* HEL   ANY   */
+       5, 47, 0, 
+       4, 17, 
+       110, 109, 
+/* HEL   ANY   */
+       5, 47, 0, 
+       4, 15, 
+       110, 109, 
+/* HEL   ANY   */
+       5, 47, 0, 
+       4, 21, 
+       110, 105, 
+/* HEL   ANY   */
+       5, 47, 0, 
+       4, 8, 
+       110, 108, 
+/* UNL   DOO   */
+       17, 37, 20, 
+       1, 14, 2, 16, 0, 17, 0, 16, 
+       53, 55, 
+/* GO    HAL   */
+       11, 1, 56, 
+       2, 17, 0, 6, 
+       54, 56, 70, 64, 
+/* LIG   LAM   */
+       14, 14, 17, 
+       3, 10, 0, 10, 0, 9, 
+       72, 10, 76, 
+/* UNL   LAM   */
+       15, 37, 17, 
+       3, 9, 0, 9, 0, 10, 
+       72, 118, 9, 76, 
+/* GET   WEB   */
+       5, 10, 51, 
+       2, 3, 
+       11, 61, 
+/* GO    HOL   */
+       10, 1, 16, 
+       2, 52, 0, 24, 
+       54, 70, 64, 
+/* GET   SIG   */
+       1, 10, 49, 
+       110, 111, 
+/* LIG   ANY   */
+       8, 14, 0, 
+       1, 28, 5, 18, 
+       24, 
+/* SCR   ANY   */
+       0, 51, 0, 
+       1, 
+/* SAY   AWA   */
+       23, 48, 9, 
+       1, 29, 7, 17, 0, 17, 7, 33, 7, 26, 
+       54, 18, 56, 64, 
+/* HEL   ANY   */
+       5, 47, 0, 
+       4, 1, 
+       110, 105, 
+/* THR   AXE   */
+       4, 24, 11, 
+       6, 11, 
+       38, 
+/* HEL   ANY   */
+       6, 47, 0, 
+       4, 20, 
+       110, 116, 103, 
+/* SAY   BUN   */
+       2, 48, 32, 
+       118, 85, 1, 
+/* GO    HOL   */
+       10, 1, 16, 
+       4, 4, 0, 5, 
+       54, 70, 64, 
+/* GET   HON   */
+       9, 10, 42, 
+       2, 23, 0, 23, 
+       52, 118, 
+/* HEL   ANY   */
+       1, 47, 0, 
+       1, 120, 
+/* CHO   ANY   */
+       1, 8, 0, 
+       1, 47, 
+/* THR   ANY   */
+       0, 24, 0, 
+       112, 
+/* AT    ANY   */
+       10, 7, 0, 
+       8, 3, 0, 3, 
+       60, 122, 1, 
+/* SAV   GAM   */
+       1, 35, 65, 
+       118, 71, 
+/* RUB   ANY   */
+       0, 28, 0, 
+       1, 
+/* SAY   ANY   */
+       2, 48, 0, 
+       118, 85, 1, 
+/* DRI   ANY   */
+       0, 42, 0, 
+       119, 
+/* DRO   WAT   */
+       18, 18, 13, 
+       1, 12, 4, 18, 0, 12, 0, 13, 
+       104, 73, 72, 
+/* AUTO  0     */
+       200, 
+       2, 0, 0, 56, 
+       72, 
+/* GET   FIR   */
+       4, 10, 59, 
+       2, 0, 
+       51, 
+/* GET   FIR   */
+       9, 10, 59, 
+       2, 56, 0, 56, 
+       118, 52, 
+/* FIN   ANY   */
+       0, 45, 0, 
+       114, 
+/* REA   ADV   */
+       5, 38, 62, 
+       3, 62, 
+       70, 123, 
+/* LOO   HOL   */
+       0, 29, 16, 
+       46, 
+/* JUM   ANY   */
+       0, 6, 0, 
+       102, 
+/* ATT   SPI   */
+       0, 39, 18, 
+       114, 
+/* ATT   ANY   */
+       0, 39, 0, 
+       25, 
+/* LOO   ANY   */
+       2, 29, 0, 
+       118, 125, 76, 
+/* AT    ANY   */
+       0, 7, 0, 
+       121, 
+/* GO    HOL   */
+       9, 1, 16, 
+       4, 29, 0, 30, 
+       54, 76, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUT */
+       65, 85, 84,
+       /* GO */
+       71, 79, 32,
+       /* *ENT */
+       197, 78, 84,
+       /* *RUN */
+       210, 85, 78,
+       /* *WAL */
+       215, 65, 76,
+       /* *CLI */
+       195, 76, 73,
+       /* JUM */
+       74, 85, 77,
+       /* AT */
+       65, 84, 32,
+       /* CHO */
+       67, 72, 79,
+       /* *CUT */
+       195, 85, 84,
+       /* GET */
+       71, 69, 84,
+       /* *TAK */
+       212, 65, 75,
+       /* *PIC */
+       208, 73, 67,
+       /* *CAT */
+       195, 65, 84,
+       /* LIG */
+       76, 73, 71,
+       /* *. */
+       174, 32, 32,
+       /* *IGN */
+       201, 71, 78,
+       /* *BUR */
+       194, 85, 82,
+       /* DRO */
+       68, 82, 79,
+       /* *REL */
+       210, 69, 76,
+       /* *SPI */
+       211, 80, 73,
+       /* *LEA */
+       204, 69, 65,
+       /* *GIV */
+       199, 73, 86,
+       /* *POU */
+       208, 79, 85,
+       /* THR */
+       84, 72, 82,
+       /* *TOS */
+       212, 79, 83,
+       /* QUI */
+       81, 85, 73,
+       /* SWI */
+       83, 87, 73,
+       /* RUB */
+       82, 85, 66,
+       /* LOO */
+       76, 79, 79,
+       /* *EXA */
+       197, 88, 65,
+       /* *DES */
+       196, 69, 83,
+       /* STO */
+       83, 84, 79,
+       /* SCO */
+       83, 67, 79,
+       /* INV */
+       73, 78, 86,
+       /* SAV */
+       83, 65, 86,
+       /* WAK */
+       87, 65, 75,
+       /* UNL */
+       85, 78, 76,
+       /* REA */
+       82, 69, 65,
+       /* ATT */
+       65, 84, 84,
+       /* *SLA */
+       211, 76, 65,
+       /* *KIL */
+       203, 73, 76,
+       /* DRI */
+       68, 82, 73,
+       /* *EAT */
+       197, 65, 84,
+       /* . */
+       46, 32, 32,
+       /* FIN */
+       70, 73, 78,
+       /* *LOC */
+       204, 79, 67,
+       /* HEL */
+       72, 69, 76,
+       /* SAY */
+       83, 65, 89,
+       /* *SPE */
+       211, 80, 69,
+       /* *CAL */
+       195, 65, 76,
+       /* SCR */
+       83, 67, 82,
+       /* *YEL */
+       217, 69, 76,
+       /* *HOL */
+       200, 79, 76,
+       /* . */
+       46, 32, 32,
+       /* FIL */
+       70, 73, 76,
+       /* CRO */
+       67, 82, 79,
+       /* DAM */
+       68, 65, 77,
+       /* MAK */
+       77, 65, 75,
+       /* *BUI */
+       194, 85, 73,
+       /* WAV */
+       87, 65, 86,
+       /* *TIC */
+       212, 73, 67,
+       /* *KIC */
+       203, 73, 67,
+       /* *KIS */
+       203, 73, 83,
+       /* *TOU */
+       212, 79, 85,
+       /* *FEE */
+       198, 69, 69,
+       /* *FUC */
+       198, 85, 67,
+       /* *HIT */
+       200, 73, 84,
+       /* *POK */
+       208, 79, 75,
+       /* OPE */
+       79, 80, 69,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89,
+       /* NORTH */
+       78, 79, 82,
+       /* SOUTH */
+       83, 79, 85,
+       /* EAST */
+       69, 65, 83,
+       /* WEST */
+       87, 69, 83,
+       /* UP */
+       85, 80, 32,
+       /* DOWN */
+       68, 79, 87,
+       /* NET */
+       78, 69, 84,
+       /* FIS */
+       70, 73, 83,
+       /* AWA */
+       65, 87, 65,
+       /* MIR */
+       77, 73, 82,
+       /* AXE */
+       65, 88, 69,
+       /* *AX */
+       193, 88, 32,
+       /* WAT */
+       87, 65, 84,
+       /* BOT */
+       66, 79, 84,
+       /* *CON */
+       195, 79, 78,
+       /* HOL */
+       72, 79, 76,
+       /* LAM */
+       76, 65, 77,
+       /* SPI */
+       83, 80, 73,
+       /* WIN */
+       87, 73, 78,
+       /* DOO */
+       68, 79, 79,
+       /* MUD */
+       77, 85, 68,
+       /* *MED */
+       205, 69, 68,
+       /* BEE */
+       66, 69, 69,
+       /* ROC */
+       82, 79, 67,
+       /* GAS */
+       71, 65, 83,
+       /* FLI */
+       70, 76, 73,
+       /* EGG */
+       69, 71, 71,
+       /* OIL */
+       79, 73, 76,
+       /* *SLI */
+       211, 76, 73,
+       /* KEY */
+       75, 69, 89,
+       /* HEL */
+       72, 69, 76,
+       /* BUN */
+       66, 85, 78,
+       /* INV */
+       73, 78, 86,
+       /* LED */
+       76, 69, 68,
+       /* THR */
+       84, 72, 82,
+       /* CRO */
+       67, 82, 79,
+       /* BRI */
+       66, 82, 73,
+       /* BEA */
+       66, 69, 65,
+       /* DRA */
+       68, 82, 65,
+       /* RUG */
+       82, 85, 71,
+       /* RUB */
+       82, 85, 66,
+       /* HON */
+       72, 79, 78,
+       /* FRU */
+       70, 82, 85,
+       /* OX */
+       79, 88, 32,
+       /* RIN */
+       82, 73, 78,
+       /* CHI */
+       67, 72, 73,
+       /* *BIT */
+       194, 73, 84,
+       /* BRA */
+       66, 82, 65,
+       /* SIG */
+       83, 73, 71,
+       /* BLA */
+       66, 76, 65,
+       /* WEB */
+       87, 69, 66,
+       /* *WRI */
+       215, 82, 73,
+       /* SWA */
+       83, 87, 65,
+       /* LAV */
+       76, 65, 86,
+       /* *DAM */
+       196, 65, 77,
+       /* HAL */
+       72, 65, 76,
+       /* TRE */
+       84, 82, 69,
+       /* *STU */
+       211, 84, 85,
+       /* FIR */
+       70, 73, 82,
+       /* SHO */
+       83, 72, 79,
+       /* *BAN */
+       194, 65, 78,
+       /* ADV */
+       65, 68, 86,
+       /* GLA */
+       71, 76, 65,
+       /* ARO */
+       65, 82, 79,
+       /* GAM */
+       71, 65, 77,
+       /* BOO */
+       66, 79, 79,
+       /* CHA */
+       67, 72, 65,
+       /* LAK */
+       76, 65, 75,
+       /* YOH */
+       89, 79, 72,
+       0,
+};
+const uint8_t automap[] = {
+       /* RUB */
+       82, 85, 66,
+       2,
+       /* MUD */
+       77, 85, 68,
+       7,
+       /* FIS */
+       70, 73, 83,
+       8,
+       /* LAM */
+       76, 65, 77,
+       9,
+       /* LAM */
+       76, 65, 77,
+       10,
+       /* AXE */
+       65, 88, 69,
+       11,
+       /* BOT */
+       66, 79, 84,
+       12,
+       /* BOT */
+       66, 79, 84,
+       13,
+       /* KEY */
+       75, 69, 89,
+       14,
+       /* NET */
+       78, 69, 84,
+       19,
+       /* OIL */
+       79, 73, 76,
+       22,
+       /* HON */
+       72, 79, 78,
+       23,
+       /* BOT */
+       66, 79, 84,
+       26,
+       /* FLI */
+       70, 76, 73,
+       28,
+       /* RUG */
+       82, 85, 71,
+       29,
+       /* BLA */
+       66, 76, 65,
+       31,
+       /* BRI */
+       66, 82, 73,
+       36,
+       /* CRO */
+       67, 82, 79,
+       37,
+       /* BLA */
+       66, 76, 65,
+       40,
+       /* GLA */
+       71, 76, 65,
+       41,
+       /* CHI */
+       67, 72, 73,
+       42,
+       /* EGG */
+       69, 71, 71,
+       44,
+       /* FRU */
+       70, 82, 85,
+       46,
+       /* OX */
+       79, 88, 32,
+       47,
+       /* RIN */
+       82, 73, 78,
+       48,
+       /* BRA */
+       66, 82, 65,
+       49,
+       /* FIS */
+       70, 73, 83,
+       55,
+       /* FIR */
+       70, 73, 82,
+       56,
+       /* LAM */
+       76, 65, 77,
+       60,
+       /* RUG */
+       82, 85, 71,
+       61,
+       /* ADV */
+       65, 68, 86,
+       62,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv02.c b/Applications/games/adv02.c
new file mode 100644 (file)
index 0000000..b4e2b29
--- /dev/null
@@ -0,0 +1,2947 @@
+#define NUM_OBJ 66
+#define WORDSIZE 3
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 150;
+const uint8_t lightfill = 150;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 1;
+const uint8_t treasures = 2;
+const uint8_t lastloc = 26;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+70, 108, 97, 116, 32, 105, 110, 32, 108, 111, 110, 100, 111, 110, 0 };
+const uint8_t loctxt_2[] = {
+97, 108, 99, 111, 118, 101, 0 };
+const uint8_t loctxt_3[] = {
+115, 101, 99, 114, 101, 116, 32, 112, 97, 115, 115, 97, 103, 101, 119, 97, 121, 0 };
+const uint8_t loctxt_4[] = {
+109, 117, 115, 116, 121, 32, 97, 116, 116, 105, 99, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 39, 109, 32, 111, 117, 116, 115, 105, 100, 101, 32, 97, 110, 32, 111, 112, 101, 110, 32, 119, 105, 110, 100, 111, 119, 10, 111, 110, 32, 116, 104, 101, 32, 108, 101, 100, 103, 101, 32, 111, 102, 32, 97, 32, 118, 101, 114, 121, 32, 116, 97, 108, 108, 32, 98, 117, 105, 108, 100, 105, 110, 103, 0 };
+const uint8_t loctxt_6[] = {
+115, 97, 110, 100, 121, 32, 98, 101, 97, 99, 104, 32, 111, 110, 32, 97, 32, 116, 114, 111, 112, 105, 99, 97, 108, 32, 105, 115, 108, 101, 0 };
+const uint8_t loctxt_7[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 99, 97, 118, 101, 115, 0 };
+const uint8_t loctxt_8[] = {
+109, 101, 97, 100, 111, 119, 0 };
+const uint8_t loctxt_9[] = {
+103, 114, 97, 115, 115, 32, 115, 104, 97, 99, 107, 0 };
+const uint8_t loctxt_10[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 111, 99, 101, 97, 110, 0 };
+const uint8_t loctxt_11[] = {
+112, 105, 116, 0 };
+const uint8_t loctxt_12[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 99, 97, 118, 101, 115, 0 };
+const uint8_t loctxt_13[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 99, 97, 118, 101, 115, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 102, 111, 111, 116, 32, 111, 102, 32, 97, 32, 99, 97, 118, 101, 32, 114, 105, 100, 100, 101, 110, 32, 104, 105, 108, 108, 44, 32, 97, 32, 112, 97, 116, 104, 119, 97, 121, 10, 108, 101, 97, 100, 115, 32, 111, 110, 32, 117, 112, 32, 116, 111, 32, 116, 104, 101, 32, 116, 111, 112, 0 };
+const uint8_t loctxt_15[] = {
+116, 111, 111, 108, 32, 115, 104, 101, 100, 0 };
+const uint8_t loctxt_16[] = {
+108, 111, 110, 103, 32, 104, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_17[] = {
+108, 97, 114, 103, 101, 32, 99, 97, 118, 101, 114, 110, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 111, 112, 32, 111, 102, 32, 97, 32, 104, 105, 108, 108, 46, 32, 66, 101, 108, 111, 119, 32, 105, 115, 32, 80, 105, 114, 97, 116, 101, 115, 32, 73, 115, 108, 97, 110, 100, 46, 32, 65, 99, 114, 111, 115, 115, 32, 116, 104, 101, 32, 115, 101, 97, 10, 119, 97, 121, 32, 111, 102, 102, 32, 105, 110, 32, 116, 104, 101, 32, 100, 105, 115, 116, 97, 110, 99, 101, 32, 73, 32, 115, 101, 101, 32, 84, 114, 101, 97, 115, 117, 114, 101, 32, 73, 115, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_19[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 99, 97, 118, 101, 115, 0 };
+const uint8_t loctxt_20[] = {
+42, 73, 39, 109, 32, 97, 98, 111, 97, 114, 100, 32, 80, 105, 114, 97, 116, 101, 32, 115, 104, 105, 112, 32, 97, 110, 99, 104, 111, 114, 101, 100, 32, 111, 102, 102, 32, 115, 104, 111, 114, 101, 0 };
+const uint8_t loctxt_21[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 98, 101, 97, 99, 104, 32, 97, 116, 32, 42, 84, 114, 101, 97, 115, 117, 114, 101, 42, 32, 73, 115, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_22[] = {
+115, 112, 111, 111, 107, 121, 32, 111, 108, 100, 32, 103, 114, 97, 118, 101, 121, 97, 114, 100, 32, 102, 105, 108, 108, 101, 100, 32, 119, 105, 116, 104, 32, 112, 105, 108, 101, 115, 10, 111, 102, 32, 101, 109, 112, 116, 121, 32, 97, 110, 100, 32, 98, 114, 111, 107, 101, 110, 32, 114, 117, 109, 32, 98, 111, 116, 116, 108, 101, 115, 0 };
+const uint8_t loctxt_23[] = {
+108, 97, 114, 103, 101, 32, 98, 97, 114, 114, 101, 110, 32, 102, 105, 101, 108, 100, 0 };
+const uint8_t loctxt_24[] = {
+115, 104, 97, 108, 108, 111, 119, 32, 108, 97, 103, 111, 111, 110, 46, 10, 116, 111, 32, 116, 104, 101, 32, 110, 111, 114, 116, 104, 32, 105, 115, 32, 116, 104, 101, 32, 111, 99, 101, 97, 110, 0 };
+const uint8_t loctxt_25[] = {
+115, 97, 99, 107, 101, 100, 32, 97, 110, 100, 32, 100, 101, 115, 101, 114, 116, 101, 100, 32, 109, 111, 110, 97, 115, 116, 97, 114, 121, 0 };
+const uint8_t loctxt_26[] = {
+42, 87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 78, 101, 118, 101, 114, 32, 78, 101, 118, 101, 114, 32, 76, 97, 110, 100, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_2,  { 0, 0, 0, 0, 0, 1 } }, 
+               { loctxt_3,  { 0, 0, 4, 2, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 0, 3, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 8, 0, 0, 0 } }, 
+               { loctxt_7,  { 0, 12, 13, 14, 0, 11 } }, 
+               { loctxt_8,  { 0, 0, 14, 6, 0, 0 } }, 
+               { loctxt_9,  { 0, 0, 0, 8, 0, 0 } }, 
+               { loctxt_10,  { 10, 24, 10, 10, 0, 0 } }, 
+               { loctxt_11,  { 0, 0, 0, 0, 7, 0 } }, 
+               { loctxt_12,  { 7, 0, 14, 13, 0, 0 } }, 
+               { loctxt_13,  { 7, 14, 12, 19, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 8, 0, 0 } }, 
+               { loctxt_15,  { 17, 0, 0, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 17, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 0, 16, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 0, 14 } }, 
+               { loctxt_19,  { 0, 14, 14, 13, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_21,  { 0, 22, 0, 0, 0, 0 } }, 
+               { loctxt_22,  { 21, 0, 23, 0, 0, 0 } }, 
+               { loctxt_23,  { 0, 0, 0, 22, 0, 0 } }, 
+               { loctxt_24,  { 10, 6, 6, 6, 0, 0 } }, 
+               { loctxt_25,  { 0, 0, 0, 23, 0, 0 } }, 
+               { loctxt_26,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       1,
+       2,
+       2,
+       0,
+       0,
+       4,
+       1,
+       0,
+       4,
+       0,
+       0,
+       6,
+       9,
+       9,
+       8,
+       24,
+       8,
+       11,
+       11,
+       0,
+       17,
+       10,
+       25,
+       25,
+       9,
+       1,
+       0,
+       0,
+       0,
+       0,
+       1,
+       15,
+       0,
+       17,
+       17,
+       16,
+       0,
+       0,
+       18,
+       17,
+       10,
+       0,
+       0,
+       4,
+       1,
+       0,
+       15,
+       0,
+       6,
+       0,
+       0,
+       6,
+       24,
+       0,
+       15,
+       0,
+       23,
+       0,
+       0,
+       6,
+       1,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+70, 108, 105, 103, 104, 116, 32, 111, 102, 32, 115, 116, 97, 105, 114, 115, 0 };
+const uint8_t objtxt_1[] = {
+79, 112, 101, 110, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_2[] = {
+66, 111, 111, 107, 115, 32, 105, 110, 32, 97, 32, 98, 111, 111, 107, 99, 97, 115, 101, 0 };
+const uint8_t objtxt_3[] = {
+76, 97, 114, 103, 101, 32, 98, 108, 111, 111, 100, 32, 115, 111, 97, 107, 101, 100, 32, 98, 111, 111, 107, 0 };
+const uint8_t objtxt_4[] = {
+66, 111, 111, 107, 99, 97, 115, 101, 32, 119, 105, 116, 104, 32, 115, 101, 99, 114, 101, 116, 32, 112, 97, 115, 115, 97, 103, 101, 32, 98, 101, 121, 111, 110, 100, 0 };
+const uint8_t objtxt_5[] = {
+80, 105, 114, 97, 116, 101, 39, 115, 32, 100, 117, 102, 102, 101, 108, 32, 98, 97, 103, 0 };
+const uint8_t objtxt_6[] = {
+83, 105, 103, 110, 32, 115, 97, 121, 115, 58, 32, 34, 66, 114, 105, 110, 103, 32, 42, 84, 82, 69, 65, 83, 85, 82, 69, 83, 42, 32, 104, 101, 114, 101, 44, 32, 115, 97, 121, 58, 32, 83, 67, 79, 82, 69, 34, 0 };
+const uint8_t objtxt_7[] = {
+69, 109, 112, 116, 121, 32, 98, 111, 116, 116, 108, 101, 0 };
+const uint8_t objtxt_8[] = {
+85, 110, 108, 105, 116, 32, 116, 111, 114, 99, 104, 0 };
+const uint8_t objtxt_9[] = {
+76, 105, 116, 32, 116, 111, 114, 99, 104, 0 };
+const uint8_t objtxt_10[] = {
+77, 97, 116, 99, 104, 101, 115, 0 };
+const uint8_t objtxt_11[] = {
+83, 109, 97, 108, 108, 32, 115, 104, 105, 112, 39, 115, 32, 107, 101, 101, 108, 32, 97, 110, 100, 32, 109, 97, 115, 116, 0 };
+const uint8_t objtxt_12[] = {
+87, 105, 99, 107, 101, 100, 32, 108, 111, 111, 107, 105, 110, 103, 32, 112, 105, 114, 97, 116, 101, 0 };
+const uint8_t objtxt_13[] = {
+84, 114, 101, 97, 115, 117, 114, 101, 32, 99, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_14[] = {
+77, 111, 110, 103, 111, 111, 115, 101, 0 };
+const uint8_t objtxt_15[] = {
+82, 117, 115, 116, 121, 32, 97, 110, 99, 104, 111, 114, 0 };
+const uint8_t objtxt_16[] = {
+71, 114, 97, 115, 115, 32, 115, 104, 97, 99, 107, 0 };
+const uint8_t objtxt_17[] = {
+77, 101, 97, 110, 32, 97, 110, 100, 32, 104, 117, 110, 103, 114, 121, 32, 108, 111, 111, 107, 105, 110, 103, 32, 99, 114, 111, 99, 111, 100, 105, 108, 101, 115, 0 };
+const uint8_t objtxt_18[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_19[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 32, 119, 105, 116, 104, 32, 104, 97, 108, 108, 32, 98, 101, 121, 111, 110, 100, 0 };
+const uint8_t objtxt_20[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 115, 97, 105, 108, 115, 0 };
+const uint8_t objtxt_21[] = {
+70, 105, 115, 104, 0 };
+const uint8_t objtxt_22[] = {
+42, 68, 85, 66, 76, 69, 79, 78, 83, 42, 0 };
+const uint8_t objtxt_23[] = {
+68, 101, 97, 100, 108, 121, 32, 109, 97, 109, 98, 97, 32, 115, 110, 97, 107, 101, 115, 0 };
+const uint8_t objtxt_24[] = {
+80, 97, 114, 114, 111, 116, 0 };
+const uint8_t objtxt_25[] = {
+66, 111, 116, 116, 108, 101, 32, 111, 102, 32, 114, 117, 109, 0 };
+const uint8_t objtxt_26[] = {
+82, 117, 103, 0 };
+const uint8_t objtxt_27[] = {
+82, 105, 110, 103, 32, 111, 102, 32, 107, 101, 121, 115, 0 };
+const uint8_t objtxt_28[] = {
+79, 112, 101, 110, 32, 116, 114, 101, 97, 115, 117, 114, 101, 32, 99, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_29[] = {
+83, 101, 116, 32, 111, 102, 32, 112, 108, 97, 110, 115, 0 };
+const uint8_t objtxt_30[] = {
+82, 117, 103, 0 };
+const uint8_t objtxt_31[] = {
+67, 108, 97, 119, 32, 104, 97, 109, 109, 101, 114, 0 };
+const uint8_t objtxt_32[] = {
+78, 97, 105, 108, 115, 0 };
+const uint8_t objtxt_33[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 112, 114, 101, 99, 117, 116, 32, 108, 117, 109, 98, 101, 114, 0 };
+const uint8_t objtxt_34[] = {
+84, 111, 111, 108, 32, 115, 104, 101, 100, 0 };
+const uint8_t objtxt_35[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_36[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 32, 119, 105, 116, 104, 32, 112, 105, 116, 32, 98, 101, 121, 111, 110, 100, 0 };
+const uint8_t objtxt_37[] = {
+80, 105, 114, 97, 116, 101, 32, 115, 104, 105, 112, 0 };
+const uint8_t objtxt_38[] = {
+82, 111, 99, 107, 32, 119, 97, 108, 108, 32, 119, 105, 116, 104, 32, 110, 97, 114, 114, 111, 119, 32, 99, 114, 97, 99, 107, 32, 105, 110, 32, 105, 116, 0 };
+const uint8_t objtxt_39[] = {
+78, 97, 114, 114, 111, 119, 32, 99, 114, 97, 99, 107, 32, 105, 110, 32, 116, 104, 101, 32, 114, 111, 99, 107, 0 };
+const uint8_t objtxt_40[] = {
+83, 97, 108, 116, 32, 119, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_41[] = {
+83, 108, 101, 101, 112, 105, 110, 103, 32, 112, 105, 114, 97, 116, 101, 0 };
+const uint8_t objtxt_42[] = {
+66, 111, 116, 116, 108, 101, 32, 111, 102, 32, 115, 97, 108, 116, 32, 119, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_43[] = {
+82, 117, 109, 32, 98, 111, 116, 116, 108, 101, 32, 115, 109, 97, 115, 104, 101, 100, 32, 105, 110, 116, 111, 32, 112, 105, 101, 99, 101, 115, 46, 10, 83, 105, 103, 110, 32, 34, 79, 112, 112, 111, 115, 105, 116, 101, 32, 111, 102, 32, 76, 73, 71, 72, 84, 32, 105, 115, 32, 85, 110, 108, 105, 103, 104, 116, 34, 0 };
+const uint8_t objtxt_44[] = {
+83, 97, 102, 101, 116, 121, 32, 115, 110, 101, 97, 107, 101, 114, 115, 0 };
+const uint8_t objtxt_45[] = {
+77, 97, 112, 0 };
+const uint8_t objtxt_46[] = {
+83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_47[] = {
+77, 111, 117, 108, 100, 121, 32, 111, 108, 100, 32, 98, 111, 110, 101, 115, 0 };
+const uint8_t objtxt_48[] = {
+83, 97, 110, 100, 0 };
+const uint8_t objtxt_49[] = {
+66, 111, 116, 116, 108, 101, 115, 32, 111, 102, 32, 114, 117, 109, 0 };
+const uint8_t objtxt_50[] = {
+42, 82, 65, 82, 69, 32, 83, 84, 65, 77, 80, 83, 42, 0 };
+const uint8_t objtxt_51[] = {
+76, 97, 103, 111, 111, 110, 0 };
+const uint8_t objtxt_52[] = {
+84, 104, 101, 32, 116, 105, 100, 101, 32, 105, 115, 32, 111, 117, 116, 0 };
+const uint8_t objtxt_53[] = {
+84, 104, 101, 32, 116, 105, 100, 101, 32, 105, 115, 32, 99, 111, 109, 105, 110, 103, 32, 105, 110, 0 };
+const uint8_t objtxt_54[] = {
+87, 97, 116, 101, 114, 32, 119, 105, 110, 103, 115, 0 };
+const uint8_t objtxt_55[] = {
+70, 108, 111, 116, 115, 97, 109, 32, 97, 110, 100, 32, 106, 101, 116, 115, 97, 109, 0 };
+const uint8_t objtxt_56[] = {
+77, 111, 110, 97, 115, 116, 97, 114, 121, 0 };
+const uint8_t objtxt_57[] = {
+87, 111, 111, 100, 101, 110, 32, 98, 111, 120, 0 };
+const uint8_t objtxt_58[] = {
+68, 101, 97, 100, 32, 115, 113, 117, 105, 114, 114, 101, 108, 0 };
+const uint8_t objtxt_59[] = {
+83, 105, 103, 110, 32, 105, 110, 32, 116, 104, 101, 32, 115, 97, 110, 100, 32, 115, 97, 121, 115, 58, 10, 34, 87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 80, 105, 114, 97, 116, 101, 115, 32, 73, 115, 108, 97, 110, 100, 44, 32, 119, 97, 116, 99, 104, 32, 111, 117, 116, 32, 102, 111, 114, 32, 116, 104, 101, 32, 116, 105, 100, 101, 33, 34, 0 };
+const uint8_t objtxt_60[] = {
+83, 97, 99, 107, 32, 111, 102, 32, 99, 114, 97, 99, 107, 101, 114, 115, 0 };
+const uint8_t objtxt_61[] = {
+78, 111, 116, 101, 0 };
+const uint8_t objtxt_62[] = {
+83, 109, 97, 108, 108, 32, 97, 100, 118, 101, 114, 116, 105, 115, 105, 110, 103, 32, 102, 108, 121, 101, 114, 0 };
+const uint8_t objtxt_63[] = {
+66, 117, 114, 110, 116, 32, 111, 117, 116, 32, 116, 111, 114, 99, 104, 0 };
+const uint8_t objtxt_64[] = {
+0 };
+const uint8_t objtxt_65[] = {
+0 };
+const uint8_t objtxt_66[] = {
+0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 115, 116, 114, 97, 110, 103, 101, 32, 115, 111, 117, 110, 100, 0 };
+const uint8_t msgtxt_2[] = {
+84, 104, 101, 32, 98, 111, 111, 107, 32, 105, 115, 32, 105, 110, 32, 98, 97, 100, 32, 99, 111, 110, 100, 116, 105, 111, 110, 32, 98, 117, 116, 32, 73, 32, 99, 97, 110, 32, 109, 97, 107, 101, 32, 111, 117, 116, 32, 116, 104, 101, 32, 116, 105, 116, 108, 101, 58, 10, 34, 84, 114, 101, 97, 115, 117, 114, 101, 32, 73, 115, 108, 97, 110, 100, 34, 46, 32, 84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 119, 111, 114, 100, 32, 119, 114, 105, 116, 116, 101, 110, 32, 105, 110, 32, 98, 108, 111, 111, 100, 32, 105, 110, 32, 116, 104, 101, 10, 102, 108, 121, 108, 101, 97, 102, 58, 32, 34, 89, 79, 72, 79, 34, 32, 97, 110, 100, 32, 97, 32, 109, 101, 115, 115, 97, 103, 101, 58, 10, 10, 34, 76, 111, 110, 103, 32, 74, 111, 104, 110, 32, 83, 105, 108, 118, 101, 114, 32, 108, 101, 102, 116, 32, 50, 32, 116, 114, 101, 97, 115, 117, 114, 101, 115, 32, 111, 110, 32, 84, 114, 101, 97, 115, 117, 114, 101, 32, 73, 115, 108, 97, 110, 100, 34, 0 };
+const uint8_t msgtxt_3[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_4[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 116, 104, 101, 114, 101, 32, 97, 108, 108, 32, 114, 105, 103, 104, 116, 46, 32, 77, 97, 121, 98, 101, 32, 73, 32, 115, 104, 111, 117, 108, 100, 0 };
+const uint8_t msgtxt_5[] = {
+84, 104, 97, 116, 39, 115, 32, 110, 111, 116, 32, 118, 101, 114, 121, 32, 115, 109, 97, 114, 116, 0 };
+const uint8_t msgtxt_6[] = {
+73, 32, 109, 97, 121, 32, 110, 101, 101, 100, 32, 116, 111, 32, 115, 97, 121, 32, 97, 32, 77, 65, 71, 73, 67, 32, 119, 111, 114, 100, 32, 104, 101, 114, 101, 33, 0 };
+const uint8_t msgtxt_7[] = {
+69, 118, 101, 114, 121, 116, 104, 105, 110, 103, 32, 115, 112, 105, 110, 115, 32, 97, 114, 111, 117, 110, 100, 32, 97, 110, 100, 32, 115, 117, 100, 100, 101, 110, 108, 121, 32, 73, 39, 109, 32, 101, 108, 115, 101, 119, 104, 101, 114, 101, 46, 46, 46, 0 };
+const uint8_t msgtxt_8[] = {
+84, 111, 114, 99, 104, 32, 105, 115, 32, 108, 105, 116, 0 };
+const uint8_t msgtxt_9[] = {
+73, 32, 119, 97, 115, 32, 119, 114, 111, 110, 103, 44, 32, 73, 32, 103, 117, 101, 115, 115, 32, 105, 116, 115, 32, 110, 111, 116, 32, 97, 32, 109, 111, 110, 103, 111, 111, 115, 101, 32, 99, 97, 117, 115, 101, 32, 116, 104, 101, 32, 115, 110, 97, 107, 101, 115, 32, 98, 105, 116, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_10[] = {
+73, 39, 109, 32, 115, 110, 97, 107, 101, 32, 98, 105, 116, 0 };
+const uint8_t msgtxt_11[] = {
+80, 97, 114, 114, 111, 116, 32, 97, 116, 116, 97, 99, 107, 115, 32, 115, 110, 97, 107, 101, 115, 32, 97, 110, 100, 32, 100, 114, 105, 118, 101, 115, 32, 116, 104, 101, 109, 32, 111, 102, 102, 0 };
+const uint8_t msgtxt_12[] = {
+80, 105, 114, 97, 116, 101, 32, 119, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 0 };
+const uint8_t msgtxt_13[] = {
+73, 116, 115, 32, 108, 111, 99, 107, 101, 100, 0 };
+const uint8_t msgtxt_14[] = {
+73, 116, 115, 32, 111, 112, 101, 110, 0 };
+const uint8_t msgtxt_15[] = {
+84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 97, 32, 115, 101, 116, 32, 111, 102, 32, 112, 108, 97, 110, 115, 32, 105, 110, 32, 105, 116, 0 };
+const uint8_t msgtxt_16[] = {
+78, 111, 116, 32, 119, 104, 105, 108, 101, 32, 73, 39, 109, 32, 99, 97, 114, 114, 121, 105, 110, 103, 32, 105, 116, 0 };
+const uint8_t msgtxt_17[] = {
+67, 114, 111, 99, 115, 32, 115, 116, 111, 112, 32, 109, 101, 0 };
+const uint8_t msgtxt_18[] = {
+83, 111, 114, 114, 121, 32, 73, 32, 99, 97, 110, 39, 116, 0 };
+const uint8_t msgtxt_19[] = {
+87, 114, 111, 110, 103, 32, 103, 97, 109, 101, 32, 121, 111, 117, 32, 115, 105, 108, 108, 121, 32, 103, 111, 111, 115, 101, 33, 0 };
+const uint8_t msgtxt_20[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 104, 97, 118, 101, 32, 105, 116, 0 };
+const uint8_t msgtxt_21[] = {
+80, 105, 114, 97, 116, 101, 32, 103, 114, 97, 98, 115, 32, 114, 117, 109, 32, 97, 110, 100, 32, 115, 99, 117, 116, 116, 108, 101, 115, 32, 111, 102, 102, 32, 99, 104, 111, 114, 116, 108, 105, 110, 103, 0 };
+const uint8_t msgtxt_22[] = {
+46, 46, 46, 73, 32, 116, 104, 105, 110, 107, 32, 105, 116, 115, 32, 109, 101, 44, 32, 72, 101, 101, 32, 72, 101, 101, 46, 0 };
+const uint8_t msgtxt_23[] = {
+73, 116, 115, 32, 110, 97, 105, 108, 101, 100, 32, 116, 111, 32, 116, 104, 101, 32, 102, 108, 111, 111, 114, 33, 0 };
+const uint8_t msgtxt_24[] = {
+89, 111, 104, 111, 32, 104, 111, 32, 97, 110, 100, 32, 97, 32, 46, 46, 46, 0 };
+const uint8_t msgtxt_25[] = {
+78, 111, 44, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 105, 115, 32, 109, 105, 115, 115, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_26[] = {
+73, 116, 32, 119, 97, 115, 32, 97, 32, 116, 105, 103, 104, 116, 32, 115, 113, 117, 101, 101, 122, 101, 33, 0 };
+const uint8_t msgtxt_27[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 119, 111, 110, 39, 116, 32, 102, 105, 116, 0 };
+const uint8_t msgtxt_28[] = {
+83, 105, 110, 99, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 105, 115, 32, 104, 97, 112, 112, 101, 110, 105, 110, 103, 0 };
+const uint8_t msgtxt_29[] = {
+73, 32, 115, 108, 105, 112, 112, 101, 100, 32, 97, 110, 100, 32, 102, 101, 108, 108, 46, 46, 46, 0 };
+const uint8_t msgtxt_30[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 102, 97, 108, 108, 115, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_31[] = {
+84, 104, 101, 121, 39, 114, 101, 32, 112, 108, 97, 110, 115, 32, 116, 111, 32, 98, 117, 105, 108, 100, 32, 116, 104, 101, 32, 74, 111, 108, 108, 121, 32, 82, 111, 103, 101, 114, 32, 40, 97, 32, 80, 105, 114, 97, 116, 101, 32, 115, 104, 105, 112, 33, 41, 10, 89, 111, 117, 39, 108, 108, 32, 110, 101, 101, 100, 58, 32, 104, 97, 109, 109, 101, 114, 44, 32, 110, 97, 105, 108, 115, 44, 32, 108, 117, 109, 98, 101, 114, 44, 32, 97, 110, 99, 104, 111, 114, 44, 32, 115, 97, 105, 108, 115, 44, 32, 97, 110, 100, 32, 97, 32, 107, 101, 101, 108, 46, 0 };
+const uint8_t msgtxt_32[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 99, 111, 110, 116, 97, 105, 110, 101, 114, 0 };
+const uint8_t msgtxt_33[] = {
+73, 116, 32, 115, 111, 97, 107, 115, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 103, 114, 111, 117, 110, 100, 0 };
+const uint8_t msgtxt_34[] = {
+84, 111, 111, 32, 100, 114, 121, 44, 32, 102, 105, 115, 104, 32, 118, 97, 110, 105, 115, 104, 46, 0 };
+const uint8_t msgtxt_35[] = {
+80, 105, 114, 97, 116, 101, 32, 97, 119, 97, 107, 101, 110, 115, 32, 97, 110, 100, 32, 115, 97, 121, 115, 32, 34, 65, 121, 101, 32, 109, 97, 116, 101, 121, 32, 119, 101, 32, 98, 101, 32, 99, 97, 115, 116, 105, 110, 103, 32, 111, 102, 102, 32, 115, 111, 111, 110, 34, 10, 72, 101, 32, 116, 104, 101, 110, 32, 86, 65, 78, 73, 83, 72, 69, 83, 33, 0 };
+const uint8_t msgtxt_36[] = {
+87, 104, 97, 116, 32, 97, 32, 119, 97, 115, 116, 101, 46, 46, 46, 0 };
+const uint8_t msgtxt_37[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 99, 114, 101, 119, 0 };
+const uint8_t msgtxt_38[] = {
+80, 105, 114, 97, 116, 101, 32, 115, 97, 121, 115, 58, 32, 34, 65, 121, 101, 32, 109, 97, 116, 101, 121, 32, 119, 101, 32, 98, 101, 32, 110, 101, 101, 100, 105, 110, 103, 32, 97, 32, 109, 97, 112, 32, 102, 105, 114, 115, 116, 34, 46, 0 };
+const uint8_t msgtxt_39[] = {
+65, 102, 116, 101, 114, 32, 97, 32, 100, 97, 121, 32, 97, 116, 32, 115, 101, 97, 32, 119, 101, 32, 115, 101, 116, 32, 97, 110, 99, 104, 111, 114, 32, 111, 102, 102, 32, 111, 102, 32, 97, 32, 115, 97, 110, 100, 121, 32, 98, 101, 97, 99, 104, 46, 10, 32, 65, 108, 108, 32, 65, 115, 104, 111, 114, 101, 32, 119, 104, 111, 39, 115, 32, 103, 111, 105, 110, 103, 32, 65, 115, 104, 111, 114, 101, 46, 46, 46, 0 };
+const uint8_t msgtxt_40[] = {
+84, 114, 121, 58, 32, 34, 87, 69, 73, 71, 72, 32, 65, 78, 67, 72, 79, 82, 34, 0 };
+const uint8_t msgtxt_41[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 109, 97, 112, 32, 105, 110, 32, 105, 116, 0 };
+const uint8_t msgtxt_42[] = {
+73, 116, 115, 32, 97, 32, 109, 97, 112, 32, 116, 111, 32, 84, 114, 101, 97, 115, 117, 114, 101, 32, 73, 115, 108, 97, 110, 100, 46, 32, 65, 116, 32, 116, 104, 101, 32, 98, 111, 116, 116, 111, 109, 32, 105, 116, 32, 115, 97, 121, 115, 58, 10, 32, 32, 32, 34, 51, 48, 32, 112, 97, 99, 101, 115, 32, 116, 104, 101, 110, 32, 100, 105, 103, 33, 34, 0 };
+const uint8_t msgtxt_43[] = {
+42, 32, 87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 110, 117, 109, 98, 101, 114, 32, 50, 58, 32, 34, 112, 105, 114, 97, 116, 101, 32, 97, 100, 118, 101, 110, 116, 117, 114, 101, 34, 10, 32, 32, 98, 121, 32, 65, 108, 101, 120, 105, 115, 32, 38, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 44, 32, 100, 101, 100, 105, 99, 97, 116, 101, 100, 58, 32, 84, 101, 100, 32, 72, 101, 101, 114, 101, 110, 32, 38, 32, 80, 97, 117, 108, 32, 83, 104, 97, 114, 108, 97, 110, 100, 10, 82, 101, 109, 101, 109, 98, 101, 114, 32, 121, 111, 117, 32, 99, 97, 110, 32, 97, 108, 119, 97, 121, 115, 32, 97, 115, 107, 32, 102, 111, 114, 32, 34, 104, 101, 108, 112, 34, 46, 10, 0 };
+const uint8_t msgtxt_44[] = {
+73, 116, 115, 32, 101, 109, 112, 116, 121, 0 };
+const uint8_t msgtxt_45[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 112, 108, 97, 110, 115, 33, 0 };
+const uint8_t msgtxt_46[] = {
+111, 112, 101, 110, 32, 105, 116, 63, 0 };
+const uint8_t msgtxt_47[] = {
+103, 111, 32, 116, 104, 101, 114, 101, 63, 0 };
+const uint8_t msgtxt_48[] = {
+73, 32, 102, 111, 117, 110, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_49[] = {
+73, 32, 100, 105, 100, 110, 39, 116, 32, 102, 105, 110, 100, 32, 97, 110, 121, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_50[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 115, 101, 101, 32, 105, 116, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_51[] = {
+79, 75, 32, 73, 32, 119, 97, 108, 107, 101, 100, 32, 111, 102, 102, 32, 51, 48, 32, 112, 97, 99, 101, 115, 46, 0 };
+const uint8_t msgtxt_52[] = {
+67, 79, 78, 71, 82, 65, 84, 85, 76, 65, 84, 73, 79, 78, 83, 32, 33, 33, 33, 10, 32, 66, 117, 116, 32, 121, 111, 117, 114, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 105, 115, 32, 110, 111, 116, 32, 111, 118, 101, 114, 32, 121, 101, 116, 46, 46, 46, 10, 0 };
+const uint8_t msgtxt_53[] = {
+82, 101, 97, 100, 105, 110, 103, 32, 101, 120, 112, 97, 110, 100, 115, 32, 116, 104, 101, 32, 109, 105, 110, 100, 0 };
+const uint8_t msgtxt_54[] = {
+84, 104, 101, 32, 80, 97, 114, 114, 111, 116, 32, 99, 114, 121, 115, 58, 0 };
+const uint8_t msgtxt_55[] = {
+34, 67, 104, 101, 99, 107, 32, 116, 104, 101, 32, 98, 97, 103, 32, 109, 97, 116, 101, 121, 34, 0 };
+const uint8_t msgtxt_56[] = {
+34, 67, 104, 101, 99, 107, 32, 116, 104, 101, 32, 99, 104, 101, 115, 116, 32, 109, 97, 116, 101, 121, 34, 0 };
+const uint8_t msgtxt_57[] = {
+102, 114, 111, 109, 32, 116, 104, 101, 32, 111, 116, 104, 101, 114, 32, 115, 105, 100, 101, 33, 0 };
+const uint8_t msgtxt_58[] = {
+79, 112, 101, 110, 32, 116, 104, 101, 32, 98, 111, 111, 107, 33, 0 };
+const uint8_t msgtxt_59[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 109, 117, 108, 116, 105, 112, 108, 101, 32, 101, 120, 105, 116, 115, 32, 104, 101, 114, 101, 33, 0 };
+const uint8_t msgtxt_60[] = {
+67, 114, 111, 99, 115, 32, 101, 97, 116, 32, 102, 105, 115, 104, 32, 97, 110, 100, 32, 108, 101, 97, 118, 101, 0 };
+const uint8_t msgtxt_61[] = {
+73, 39, 109, 32, 117, 110, 100, 101, 114, 119, 97, 116, 101, 114, 44, 32, 73, 32, 103, 117, 101, 115, 115, 32, 73, 32, 100, 111, 110, 39, 116, 32, 115, 119, 105, 109, 32, 119, 101, 108, 108, 46, 32, 66, 108, 117, 98, 32, 66, 108, 117, 98, 46, 46, 46, 0 };
+const uint8_t msgtxt_62[] = {
+34, 80, 105, 101, 99, 101, 115, 32, 111, 102, 32, 101, 105, 103, 104, 116, 34, 0 };
+const uint8_t msgtxt_63[] = {
+73, 116, 115, 32, 115, 116, 117, 99, 107, 32, 105, 110, 32, 116, 104, 101, 32, 115, 97, 110, 100, 0 };
+const uint8_t msgtxt_64[] = {
+79, 75, 0 };
+const uint8_t msgtxt_65[] = {
+80, 105, 114, 97, 116, 101, 32, 115, 97, 121, 115, 58, 32, 34, 65, 121, 101, 32, 109, 101, 32, 66, 117, 99, 107, 101, 114, 111, 111, 44, 32, 119, 101, 32, 98, 101, 32, 119, 97, 105, 116, 105, 110, 103, 32, 102, 111, 114, 32, 116, 104, 101, 32, 116, 105, 100, 101, 32, 116, 111, 10, 32, 99, 111, 109, 101, 32, 105, 110, 33, 34, 0 };
+const uint8_t msgtxt_66[] = {
+84, 104, 101, 32, 116, 105, 100, 101, 32, 105, 115, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_67[] = {
+84, 104, 101, 32, 116, 105, 100, 101, 32, 105, 115, 32, 99, 111, 109, 105, 110, 103, 32, 105, 110, 0 };
+const uint8_t msgtxt_68[] = {
+65, 98, 111, 117, 116, 32, 50, 48, 32, 112, 111, 117, 110, 100, 115, 46, 32, 84, 114, 121, 58, 32, 34, 83, 69, 84, 32, 83, 65, 73, 76, 34, 0 };
+const uint8_t msgtxt_69[] = {
+34, 84, 105, 100, 101, 115, 32, 98, 101, 32, 97, 32, 99, 104, 97, 110, 103, 105, 110, 103, 32, 109, 97, 116, 101, 121, 34, 0 };
+const uint8_t msgtxt_70[] = {
+78, 111, 116, 101, 32, 104, 101, 114, 101, 32, 115, 97, 121, 115, 58, 32, 34, 73, 32, 98, 101, 32, 108, 105, 107, 105, 110, 103, 32, 112, 97, 114, 114, 111, 116, 115, 44, 32, 116, 104, 101, 121, 32, 98, 101, 32, 115, 109, 97, 114, 116, 32, 109, 97, 116, 101, 121, 33, 34, 0 };
+const uint8_t msgtxt_71[] = {
+80, 105, 114, 97, 116, 101, 32, 102, 111, 108, 108, 111, 119, 115, 32, 109, 101, 32, 97, 115, 104, 111, 114, 101, 32, 97, 115, 32, 105, 102, 32, 101, 120, 112, 101, 99, 116, 105, 110, 103, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_72[] = {
+67, 108, 105, 109, 98, 32, 115, 116, 97, 105, 114, 115, 46, 46, 46, 0 };
+const uint8_t msgtxt_73[] = {
+71, 111, 116, 32, 97, 110, 121, 116, 104, 105, 110, 103, 32, 116, 111, 32, 101, 97, 116, 32, 109, 97, 116, 101, 121, 63, 0 };
+const uint8_t msgtxt_74[] = {
+80, 97, 114, 114, 111, 116, 32, 97, 116, 116, 97, 99, 107, 115, 32, 99, 114, 111, 99, 115, 32, 98, 117, 116, 32, 105, 115, 32, 98, 101, 97, 116, 101, 110, 32, 111, 102, 102, 0 };
+const uint8_t msgtxt_75[] = {
+66, 105, 114, 100, 32, 102, 108, 121, 115, 32, 111, 102, 102, 32, 108, 111, 111, 107, 105, 110, 103, 32, 118, 101, 114, 121, 32, 117, 110, 104, 97, 112, 112, 121, 0 };
+const uint8_t msgtxt_76[] = {
+80, 97, 114, 114, 111, 116, 32, 97, 116, 101, 32, 97, 32, 99, 114, 97, 99, 107, 101, 114, 46, 0 };
+const uint8_t msgtxt_77[] = {
+89, 117, 109, 109, 121, 0 };
+const uint8_t msgtxt_78[] = {
+73, 32, 104, 101, 97, 114, 32, 110, 111, 116, 104, 105, 110, 103, 32, 110, 111, 119, 0 };
+const uint8_t msgtxt_79[] = {
+80, 105, 114, 97, 116, 101, 32, 115, 97, 121, 115, 58, 10, 34, 70, 105, 114, 115, 116, 32, 89, 101, 101, 32, 98, 101, 32, 103, 101, 116, 116, 105, 110, 103, 32, 116, 104, 97, 116, 32, 65, 67, 67, 85, 82, 83, 69, 68, 32, 116, 104, 105, 110, 103, 32, 111, 102, 102, 32, 109, 101, 32, 115, 104, 105, 112, 33, 34, 10, 0 };
+const uint8_t msgtxt_80[] = {
+114, 101, 97, 100, 32, 105, 116, 63, 0 };
+const uint8_t msgtxt_81[] = {
+65, 115, 107, 32, 102, 111, 114, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 110, 117, 109, 98, 101, 114, 32, 51, 58, 32, 34, 77, 73, 83, 83, 73, 79, 78, 32, 73, 77, 80, 79, 83, 83, 73, 66, 76, 69, 34, 32, 97, 116, 32, 121, 111, 117, 114, 10, 32, 102, 97, 118, 111, 114, 105, 116, 101, 32, 99, 111, 109, 112, 117, 116, 101, 114, 32, 100, 101, 97, 108, 101, 114, 46, 32, 73, 102, 32, 116, 104, 101, 121, 32, 68, 79, 78, 39, 84, 32, 99, 97, 114, 114, 121, 32, 34, 65, 68, 86, 69, 78, 84, 85, 82, 69, 34, 10, 32, 104, 97, 118, 101, 32, 116, 104, 101, 109, 32, 99, 97, 108, 108, 58, 32, 49, 45, 51, 48, 53, 45, 56, 54, 50, 45, 54, 57, 49, 55, 32, 32, 84, 79, 68, 65, 89, 33, 32, 34, 65, 68, 86, 69, 78, 84, 85, 82, 69, 34, 32, 97, 108, 115, 111, 10, 32, 115, 117, 112, 112, 111, 114, 116, 115, 32, 108, 111, 119, 101, 114, 32, 99, 97, 115, 101, 33, 10, 0 };
+const uint8_t msgtxt_82[] = {
+73, 39, 109, 32, 110, 111, 116, 32, 102, 101, 101, 108, 105, 110, 103, 32, 100, 101, 115, 116, 114, 117, 99, 116, 105, 118, 101, 33, 0 };
+const uint8_t msgtxt_83[] = {
+34, 67, 104, 101, 99, 107, 32, 116, 104, 101, 32, 98, 111, 111, 107, 44, 32, 109, 97, 116, 101, 121, 33, 34, 0 };
+const uint8_t msgtxt_84[] = {
+65, 108, 108, 32, 114, 105, 103, 104, 116, 44, 32, 80, 79, 79, 70, 32, 116, 104, 101, 32, 71, 65, 77, 69, 32, 105, 115, 32, 100, 101, 115, 116, 114, 111, 121, 101, 100, 33, 0 };
+const uint8_t msgtxt_85[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_86[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 107, 110, 111, 119, 32, 119, 104, 101, 114, 101, 32, 116, 111, 32, 108, 111, 111, 107, 33, 0 };
+const uint8_t msgtxt_87[] = {
+73, 116, 115, 32, 115, 116, 117, 99, 107, 0 };
+const uint8_t msgtxt_88[] = {
+0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  80    CROCODILES*/
+       146, 80, 
+       2, 21, 2, 17, 0, 21, 0, 17, 
+       110, 59, 59, 
+/* AUTO  80    SNAKES*/
+       143, 80, 
+       2, 23, 2, 24, 0, 23, 
+       104, 112, 11, 55, 
+/* AUTO  100   RUG FLAG 11 GOT KEYS*/
+       182, 
+       1, 26, 12, 27, 0, 27, 9, 11, 0, 11, 
+       1, 53, 58, 
+/* AUTO  3     PARROT PIECES 8*/
+       133, 3, 
+       3, 24, 
+       104, 112, 
+/* AUTO  100   LITE*/
+       169, 
+       4, 14, 8, 15, 
+       57, 76, 
+/* AUTO  100   FLAG 1. BUILD BOAT. NEED SAIL/LUMBER/BEACH*/
+       176, 
+       8, 1, 3, 33, 3, 20, 0, 2, 
+       58, 
+/* AUTO  100   FLAG 2.READY TO BUILD BOAT*/
+       183, 
+       8, 2, 0, 1, 0, 33, 0, 37, 0, 11, 
+       60, 55, 72, 102, 
+/* AUTO  100   NOT READY TO BUILD*/
+       169, 
+       8, 1, 0, 1, 
+       25, 60, 
+/* AUTO  100   UNLOCK DOOR. FLAG 0*/
+       173, 
+       8, 0, 0, 35, 0, 36, 
+       72, 68, 
+/* AUTO  100   BUILDINg BOAT*/
+       183, 
+       8, 2, 0, 2, 0, 32, 0, 20, 0, 15, 
+       60, 55, 55, 55, 
+/* AUTO  19    END GAME*/
+       134, 19, 
+       4, 26, 
+       65, 28, 63, 
+/* AUTO  40    SLIPPED NO SHOES*/
+       137, 40, 
+       4, 5, 6, 44, 
+       29, 61, 
+/* AUTO  80    PIRATE RUM FLAG 0*/
+       151, 80, 
+       2, 12, 2, 25, 0, 41, 0, 4, 0, 12, 
+       62, 21, 67, 59, 
+/* AUTO  100   PIRATE RUM ATTIC FLAG 0*/
+       178, 
+       8, 0, 0, 7, 0, 4, 0, 25, 
+       68, 62, 59, 
+/* AUTO  25    FISH ESCAPE*/
+       145, 25, 
+       1, 21, 6, 42, 0, 21, 0, 10, 
+       34, 62, 
+/* AUTO  100   FLAG 6 INTRO*/
+       169, 
+       9, 6, 0, 6, 
+       43, 58, 
+/* AUTO  50    PIRATE RUM AGAIN*/
+       150, 50, 
+       2, 12, 2, 49, 0, 41, 0, 22, 0, 12, 
+       62, 21, 59, 
+/* AUTO  35    PARROT BAG*/
+       137, 35, 
+       3, 24, 9, 3, 
+       104, 105, 
+/* AUTO  7     PARROT CHEST*/
+       137, 7, 
+       3, 24, 9, 12, 
+       104, 106, 
+/* AUTO  50    TIDE IN DROWN*/
+       142, 50, 
+       4, 24, 13, 53, 6, 54, 
+       117, 111, 61, 
+/* AUTO  50    DROWN OCEAN*/
+       137, 50, 
+       4, 10, 6, 54, 
+       111, 61, 
+/* AUTO  10    TIDE WITH ANCHOR*/
+       150, 10, 
+       9, 10, 0, 52, 0, 53, 0, 15, 0, 55, 
+       72, 72, 67, 
+/* AUTO  10    TIDE NO ANCHOR NOT T.I.*/
+       145, 10, 
+       8, 10, 0, 52, 0, 53, 9, 4, 
+       72, 67, 
+/* AUTO  100   PARROT TIDE*/
+       170, 
+       3, 24, 8, 0, 
+       104, 119, 68, 
+/* AUTO  100   RESET FLAG 0*/
+       164, 
+       8, 0, 
+       68, 
+/* AUTO  100   LITE*/
+       169, 
+       4, 5, 8, 15, 
+       57, 76, 
+/* AUTO  80    MONGOOSE*/
+       145, 80, 
+       2, 23, 2, 14, 0, 14, 0, 58, 
+       9, 72, 
+/* AUTO  80    BIRD & CROCS*/
+       146, 80, 
+       2, 17, 2, 24, 0, 24, 0, 13, 
+       124, 125, 62, 
+/* AUTO  30    BIRD FOLLOWS CRACKERS*/
+       149, 30, 
+       3, 24, 12, 60, 12, 12, 0, 24, 0, 60, 
+       125, 75, 
+/* AUTO  20    PARROT EAT CRACKS*/
+       136, 20, 
+       3, 24, 3, 60, 
+       126, 
+/* AUTO  25    PARROT BOOK*/
+       141, 25, 
+       14, 61, 3, 24, 3, 3, 
+       104, 133, 
+/* AUTO  100   BURNT LAMP*/
+       178, 
+       8, 16, 0, 63, 0, 9, 0, 16, 
+       72, 60, 76, 
+};
+const uint8_t actions[] = {
+/* SAY   YOH   */
+       15, 8, 23, 
+       7, 5, 0, 5, 1, 3, 
+       70, 7, 54, 64, 
+/* SET   SAI   NO SAIL WITH BOOK*/
+       17, 50, 30, 
+       4, 20, 2, 12, 3, 3, 3, 45, 
+       18, 129, 
+/* LIG   TOR   */
+       19, 37, 20, 
+       3, 8, 3, 10, 0, 8, 0, 9, 
+       72, 70, 8, 64, 
+/* UNL   TOR   */
+       14, 41, 20, 
+       3, 9, 0, 9, 0, 8, 
+       72, 114, 76, 
+/* HEL   ANY   */
+       4, 42, 0, 
+       4, 5, 
+       6, 
+/* GET   DUB   */
+       13, 10, 29, 
+       2, 22, 5, 23, 0, 22, 
+       52, 114, 
+/* GET   DUB   */
+       10, 10, 29, 
+       2, 22, 2, 23, 
+       5, 10, 61, 
+/* GO    SHA   */
+       10, 1, 33, 
+       2, 16, 0, 9, 
+       54, 70, 64, 
+/* GET   CHE   */
+       8, 10, 38, 
+       2, 13, 2, 12, 
+       12, 
+/* GET   CHE   .*/
+       13, 10, 38, 
+       2, 13, 5, 12, 0, 13, 
+       52, 114, 
+/* OPE   CHE   */
+       8, 39, 38, 
+       2, 13, 2, 12, 
+       12, 
+/* OPE   CHE   */
+       8, 39, 38, 
+       2, 13, 5, 12, 
+       13, 
+/* UNL   CHE   */
+       22, 41, 38, 
+       2, 13, 5, 12, 1, 27, 0, 13, 0, 28, 
+       14, 55, 53, 
+/* OPE   CHE   */
+       4, 39, 38, 
+       1, 13, 
+       16, 
+/* LOO   CHE   */
+       4, 27, 38, 
+       1, 28, 
+       16, 
+/* LOO   CHE   */
+       5, 27, 38, 
+       3, 13, 
+       18, 13, 
+/* LOO   CHE   FLAG 12 CHEST EMPTY*/
+       22, 27, 38, 
+       2, 28, 0, 29, 9, 5, 0, 5, 9, 12, 
+       15, 53, 58, 
+/* LOO   CHE   CHEST MAP*/
+       22, 27, 38, 
+       9, 12, 2, 28, 8, 5, 0, 45, 0, 12, 
+       41, 53, 58, 
+/* LOO   CHE   EMPTY*/
+       8, 27, 38, 
+       8, 12, 2, 28, 
+       44, 
+/* LOO   BAG   */
+       9, 27, 18, 
+       3, 5, 9, 3, 
+       4, 46, 
+/* LOO   BAG   */
+       8, 27, 18, 
+       3, 5, 8, 3, 
+       44, 
+/* OPE   DOO   */
+       4, 39, 37, 
+       2, 17, 
+       17, 
+/* OPE   DOO   */
+       5, 39, 37, 
+       2, 18, 
+       18, 13, 
+/* OPE   DOO   */
+       4, 39, 37, 
+       2, 19, 
+       14, 
+/* GO    HAL   */
+       10, 1, 9, 
+       2, 19, 0, 16, 
+       54, 70, 64, 
+/* UNL   DOO   */
+       8, 41, 37, 
+       2, 17, 2, 18, 
+       17, 
+/* UNL   DOO   */
+       23, 41, 37, 
+       5, 17, 2, 18, 1, 27, 0, 18, 0, 19, 
+       55, 53, 67, 114, 
+/* DRI   BOT   */
+       6, 23, 11, 
+       3, 25, 
+       127, 1, 22, 
+/* INV   ANY   */
+       0, 25, 0, 
+       66, 
+/* GET   INV   */
+       0, 10, 28, 
+       66, 
+/* LOO   BOX   */
+       9, 27, 58, 
+       3, 57, 12, 50, 
+       4, 46, 
+/* SAY   AWA   */
+       1, 8, 71, 
+       19, 3, 
+/* REA   BOO   */
+       5, 30, 10, 
+       6, 3, 
+       18, 20, 
+/* SCO   ANY   */
+       0, 33, 0, 
+       65, 
+/* SAV   GAM   */
+       0, 34, 14, 
+       71, 
+/* BUI   BOA   .*/
+       5, 47, 42, 
+       12, 29, 
+       18, 45, 
+/* GO    CAV   */
+       11, 1, 35, 
+       4, 14, 0, 7, 
+       54, 56, 70, 64, 
+/* LOO   LAG   */
+       6, 27, 48, 
+       14, 52, 
+       4, 47, 117, 
+/* LOO   LAG   TIDE OUT*/
+       6, 27, 48, 
+       13, 52, 
+       4, 47, 116, 
+/* LOO   SHA   */
+       5, 27, 33, 
+       2, 16, 
+       4, 47, 
+/* LOO   CRA   */
+       5, 27, 45, 
+       2, 38, 
+       4, 47, 
+/* GO    CRA   CARRYING SHOVEL*/
+       9, 1, 45, 
+       2, 39, 1, 46, 
+       18, 27, 
+/* GO    CRA   CARRYING CHEST*/
+       9, 1, 45, 
+       2, 38, 1, 13, 
+       18, 27, 
+/* QUI   ANY   */
+       0, 46, 0, 
+       63, 
+/* GET   RUG   */
+       5, 10, 26, 
+       2, 30, 
+       18, 23, 
+/* GET   NAI   */
+       23, 10, 41, 
+       1, 31, 2, 30, 0, 32, 0, 26, 0, 30, 
+       52, 53, 55, 114, 
+/* GO    CRA   CARRYING LUMBER*/
+       9, 1, 45, 
+       2, 39, 1, 33, 
+       18, 27, 
+/* BUI   BOA   */
+       20, 47, 42, 
+       3, 31, 3, 29, 3, 15, 3, 32, 0, 1, 
+       58, 
+/* BUI   BOA   */
+       0, 47, 42, 
+       25, 
+/* GO    PIT   */
+       10, 1, 50, 
+       2, 36, 0, 11, 
+       70, 54, 64, 
+/* GO    CRA   CARRYING BOOK*/
+       9, 1, 45, 
+       2, 38, 1, 3, 
+       18, 27, 
+/* SAY   YOH   */
+       15, 8, 23, 
+       4, 5, 0, 6, 1, 3, 
+       70, 7, 54, 64, 
+/* GET   RUG   */
+       9, 10, 26, 
+       3, 26, 0, 26, 
+       52, 114, 
+/* GO    CRA   DARK*/
+       11, 1, 45, 
+       2, 38, 0, 17, 
+       54, 26, 56, 64, 
+/* GO    CRA   LITE*/
+       11, 1, 45, 
+       2, 39, 0, 18, 
+       54, 57, 70, 64, 
+/* SET   SAI   WAIT FOR FOR TIDE*/
+       16, 50, 30, 
+       4, 20, 2, 12, 13, 52, 9, 4, 
+       115, 
+/* AUTO  0     */
+/* OPE   BAG   FLAG 3 EMPTY BAG*/
+       18, 39, 18, 
+       3, 5, 0, 10, 9, 3, 0, 3, 
+       30, 53, 58, 
+/* OPE   BAG   */
+       5, 39, 18, 
+       8, 3, 
+       3, 44, 
+/* GET   WAT   */
+       4, 10, 46, 
+       6, 7, 
+       32, 
+/* GET   WAT   */
+       18, 10, 46, 
+       2, 40, 1, 7, 0, 7, 0, 42, 
+       55, 52, 114, 
+/* DRO   WAT   */
+       14, 18, 46, 
+       1, 42, 0, 42, 0, 7, 
+       55, 52, 33, 
+/* DRI   WAT   */
+       5, 23, 46, 
+       2, 40, 
+       5, 61, 
+/* DRI   WAT   */
+       15, 23, 46, 
+       1, 42, 0, 42, 0, 7, 
+       5, 61, 55, 52, 
+/* WAK   PIR   */
+       18, 49, 16, 
+       2, 41, 0, 41, 0, 12, 0, 20, 
+       35, 55, 62, 
+/* OPE   BOT   */
+       4, 39, 11, 
+       3, 25, 
+       14, 
+/* EMP   BOT   */
+       14, 56, 11, 
+       3, 25, 0, 25, 0, 7, 
+       36, 33, 72, 
+/* GO    BOA   */
+       10, 1, 42, 
+       2, 37, 0, 20, 
+       54, 70, 64, 
+/* GO    SHO   FLAG 4 WE AT TREASUE ISLE*/
+       23, 1, 51, 
+       4, 20, 8, 4, 0, 21, 0, 12, 2, 12, 
+       54, 70, 53, 121, 
+/* GO    SHO   */
+       14, 1, 51, 
+       4, 20, 9, 4, 0, 6, 
+       54, 70, 64, 
+/* SET   SAI   .*/
+       9, 50, 30, 
+       4, 20, 5, 12, 
+       18, 37, 
+/* SET   SAI   */
+       9, 50, 30, 
+       4, 20, 12, 45, 
+       18, 38, 
+/* SET   SAI   GO TREASURE ISLE*/
+       23, 50, 30, 
+       4, 20, 9, 4, 0, 4, 0, 37, 0, 21, 
+       70, 39, 58, 62, 
+/* SET   SAI   RETURN FROM TR ISLE*/
+       23, 50, 30, 
+       4, 20, 8, 4, 0, 4, 0, 37, 0, 6, 
+       70, 39, 60, 62, 
+/* CAS   OFF   */
+       0, 51, 21, 
+       40, 
+/* REA   MAP   */
+       4, 30, 53, 
+       3, 45, 
+       42, 
+/* SAI   ANY   */
+       0, 9, 0, 
+       40, 
+/* GET   BOO   */
+       9, 10, 10, 
+       2, 3, 0, 3, 
+       52, 114, 
+/* OPE   BOO   */
+       14, 39, 10, 
+       3, 3, 14, 62, 0, 62, 
+       53, 114, 30, 
+/* GO    SHO   AT T.I.*/
+       14, 1, 51, 
+       4, 20, 8, 4, 0, 21, 
+       54, 70, 64, 
+/* GO    PAT   */
+       10, 1, 68, 
+       4, 14, 0, 18, 
+       54, 70, 64, 
+/* GET   PAR   */
+       8, 10, 39, 
+       2, 24, 2, 12, 
+       12, 
+/* GET   PAR   */
+       10, 10, 39, 
+       2, 24, 0, 24, 
+       52, 104, 112, 
+/* GO    SHE   */
+       10, 1, 44, 
+       2, 34, 0, 15, 
+       54, 70, 64, 
+/* GO    30    FLAG 7. THIS IS IT*/
+       9, 1, 24, 
+       0, 7, 4, 23, 
+       58, 51, 
+/* GO    30    PACE 30 BUT WRONG PLACE*/
+       5, 1, 24, 
+       0, 7, 
+       60, 51, 
+/* DIG   ANY   BONES*/
+       19, 52, 0, 
+       4, 22, 0, 47, 1, 46, 14, 47, 
+       70, 48, 53, 64, 
+/* DRI   CRA   EAT CRACKERRS*/
+       4, 23, 45, 
+       3, 60, 
+       127, 
+/* DIG   ANY   BEACH TREASURE RUM*/
+       19, 52, 0, 
+       4, 21, 14, 49, 0, 49, 1, 46, 
+       70, 53, 48, 64, 
+/* JUM   ANY   */
+       6, 55, 0, 
+       4, 5, 
+       70, 5, 61, 
+/* DIG   ANY   GOT IT*/
+       23, 52, 0, 
+       4, 23, 8, 7, 0, 57, 1, 46, 14, 57, 
+       70, 53, 48, 64, 
+/* GET   NAI   */
+       9, 10, 41, 
+       3, 32, 0, 32, 
+       52, 114, 
+/* GO    WIN   */
+       10, 1, 13, 
+       4, 5, 0, 2, 
+       54, 70, 64, 
+/* HEL   ANY   */
+       5, 42, 0, 
+       4, 2, 
+       103, 6, 
+/* REA   PLA   */
+       4, 30, 34, 
+       3, 29, 
+       31, 
+/* UNL   DOO   */
+       10, 41, 37, 
+       2, 35, 1, 27, 
+       18, 13, 107, 
+/* OPE   DOO   */
+       5, 39, 37, 
+       2, 35, 
+       18, 13, 
+/* OPE   DOO   */
+       8, 39, 37, 
+       0, 0, 2, 36, 
+       14, 
+/* GO    LAG   */
+       10, 1, 48, 
+       2, 51, 0, 24, 
+       54, 70, 64, 
+/* GO    STA   */
+       14, 1, 66, 
+       2, 0, 4, 1, 0, 2, 
+       54, 70, 64, 
+/* GET   BOO   */
+       22, 10, 10, 
+       4, 2, 0, 3, 0, 2, 0, 4, 5, 4, 
+       52, 1, 72, 
+/* GET   ANC   */
+       13, 10, 32, 
+       2, 15, 8, 10, 0, 15, 
+       52, 114, 
+/* GET   ANC   */
+       9, 10, 32, 
+       2, 15, 9, 10, 
+       18, 113, 
+/* GET   ANC   */
+       7, 10, 32, 
+       5, 15, 
+       70, 18, 50, 64, 
+/* EMP   BOT   DROP SALT WATER*/
+       13, 56, 11, 
+       3, 42, 0, 42, 0, 7, 
+       72, 114, 
+/* GO    MON   */
+       10, 1, 15, 
+       2, 56, 0, 25, 
+       54, 70, 64, 
+/* SAI   BOA   */
+       0, 9, 42, 
+       40, 
+/* HEL   ANY   .*/
+       4, 42, 0, 
+       4, 14, 
+       109, 
+/* WEI   ANC   */
+       0, 57, 32, 
+       118, 
+/* DIG   ANY   FREE ANCHOR FLAG 10*/
+       17, 52, 0, 
+       1, 46, 9, 10, 2, 15, 0, 10, 
+       58, 114, 
+/* BUR   ANY   */
+       0, 53, 0, 
+       18, 
+/* OPE   BOX   */
+       13, 39, 58, 
+       1, 31, 3, 57, 0, 50, 
+       30, 53, 
+/* KIL   PIR   */
+       0, 35, 16, 
+       12, 
+/* HEL   ANY   */
+       4, 42, 0, 
+       2, 17, 
+       123, 
+/* SAY   ANY   */
+       2, 8, 0, 
+       114, 85, 3, 
+/* HEL   ANY   */
+       4, 42, 0, 
+       4, 6, 
+       109, 
+/* WAI   ANY   */
+       13, 63, 0, 
+       8, 10, 0, 52, 0, 53, 
+       72, 119, 
+/* HEL   ANY   */
+       8, 42, 0, 
+       4, 9, 2, 12, 
+       24, 
+/* DIG   ANY   */
+       9, 52, 0, 
+       1, 46, 0, 7, 
+       49, 60, 
+/* HEL   ANY   */
+       4, 42, 0, 
+       4, 1, 
+       122, 
+/* GO    PAS   */
+       10, 1, 8, 
+       2, 4, 0, 3, 
+       54, 70, 64, 
+/* REA   BOO   */
+       4, 30, 10, 
+       3, 3, 
+       2, 
+/* DRI   ANY   */
+       0, 23, 0, 
+       18, 
+/* HEL   ANY   .*/
+       0, 42, 0, 
+       3, 
+/* GO    WIN   */
+       10, 1, 13, 
+       2, 1, 0, 5, 
+       54, 70, 64, 
+/* FIN   ANY   */
+       1, 54, 0, 
+       18, 136, 
+/* LIS   ANY   */
+       1, 31, 0, 
+       0, 128, 
+/* GET   CHE   */
+       9, 10, 38, 
+       3, 28, 0, 28, 
+       52, 114, 
+/* OPE   BOO   */
+       18, 39, 10, 
+       13, 62, 3, 3, 0, 61, 14, 61, 
+       114, 53, 30, 
+/* LOO   BOO   */
+       6, 27, 10, 
+       3, 3, 
+       4, 130, 46, 
+/* REA   NOT   */
+       4, 30, 74, 
+       3, 61, 
+       120, 
+/* LOO   MAP   */
+       5, 27, 53, 
+       3, 45, 
+       4, 130, 
+/* REA   FLY   */
+       5, 30, 75, 
+       3, 62, 
+       70, 131, 
+/* OPE   BOO   */
+       9, 39, 10, 
+       13, 61, 3, 3, 
+       3, 44, 
+/* LOO   FLY   */
+       5, 27, 75, 
+       3, 62, 
+       4, 130, 
+/* FLY   ANY   */
+       0, 17, 0, 
+       18, 
+/* BRE   ANY   */
+       1, 59, 0, 
+       18, 132, 
+/* LOO   WIN   */
+       5, 27, 13, 
+       2, 1, 
+       4, 47, 
+/* LOO   BOA   */
+       5, 27, 42, 
+       2, 37, 
+       4, 47, 
+/* FEE   DES   */
+       1, 64, 76, 
+       134, 63, 
+/* KIL   ANY   */
+       1, 35, 0, 
+       18, 132, 
+/* GET   SNA   */
+       6, 10, 78, 
+       2, 23, 
+       5, 10, 61, 
+/* CLO   WIN   */
+       1, 67, 13, 
+       18, 137, 
+/* JUM   ANY   */
+       1, 55, 0, 
+       114, 3, 
+/* WAI   ANY   */
+       22, 63, 0, 
+       9, 10, 0, 52, 0, 53, 0, 15, 0, 55, 
+       72, 72, 114, 
+/* LOO   ANY   */
+       2, 27, 0, 
+       76, 114, 135, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUT */
+       65, 85, 84,
+       /* GO */
+       71, 79, 32,
+       /* *CLI */
+       195, 76, 73,
+       /* *WAL */
+       215, 65, 76,
+       /* *RUN */
+       210, 85, 78,
+       /* *ENT */
+       197, 78, 84,
+       /* *PAC */
+       208, 65, 67,
+       /* *FOL */
+       198, 79, 76,
+       /* SAY */
+       83, 65, 89,
+       /* SAI */
+       83, 65, 73,
+       /* GET */
+       71, 69, 84,
+       /* *TAK */
+       212, 65, 75,
+       /* *CAT */
+       195, 65, 84,
+       /* *PIC */
+       208, 73, 67,
+       /* *REM */
+       210, 69, 77,
+       /* *WEA */
+       215, 69, 65,
+       /* *PUL */
+       208, 85, 76,
+       /* FLY */
+       70, 76, 89,
+       /* DRO */
+       68, 82, 79,
+       /* *REL */
+       210, 69, 76,
+       /* *THR */
+       212, 72, 82,
+       /* *LEA */
+       204, 69, 65,
+       /* *GIV */
+       199, 73, 86,
+       /* DRI */
+       68, 82, 73,
+       /* *EAT */
+       197, 65, 84,
+       /* INV */
+       73, 78, 86,
+       /* SAI */
+       83, 65, 73,
+       /* LOO */
+       76, 79, 79,
+       /* *EXA */
+       197, 88, 65,
+       /* *WAT */
+       215, 65, 84,
+       /* REA */
+       82, 69, 65,
+       /* LIS */
+       76, 73, 83,
+       /* . */
+       46, 32, 32,
+       /* SCO */
+       83, 67, 79,
+       /* SAV */
+       83, 65, 86,
+       /* KIL */
+       75, 73, 76,
+       /* *ATT */
+       193, 84, 84,
+       /* LIG */
+       76, 73, 71,
+       /* . */
+       46, 32, 32,
+       /* OPE */
+       79, 80, 69,
+       /* *SHA */
+       211, 72, 65,
+       /* UNL */
+       85, 78, 76,
+       /* HEL */
+       72, 69, 76,
+       /* . */
+       46, 32, 32,
+       /* . */
+       46, 32, 32,
+       /* SWI */
+       83, 87, 73,
+       /* QUI */
+       81, 85, 73,
+       /* BUI */
+       66, 85, 73,
+       /* *MAK */
+       205, 65, 75,
+       /* WAK */
+       87, 65, 75,
+       /* SET */
+       83, 69, 84,
+       /* CAS */
+       67, 65, 83,
+       /* DIG */
+       68, 73, 71,
+       /* BUR */
+       66, 85, 82,
+       /* FIN */
+       70, 73, 78,
+       /* JUM */
+       74, 85, 77,
+       /* EMP */
+       69, 77, 80,
+       /* WEI */
+       87, 69, 73,
+       /*  */
+       32, 32, 32,
+       /* BRE */
+       66, 82, 69,
+       /* *SMA */
+       211, 77, 65,
+       /* . */
+       46, 32, 32,
+       /*  */
+       32, 32, 32,
+       /* WAI */
+       87, 65, 73,
+       /* FEE */
+       70, 69, 69,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /* CLO */
+       67, 76, 79,
+       /* *SHU */
+       211, 72, 85,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89,
+       /* NORTH */
+       78, 79, 82,
+       /* SOUTH */
+       83, 79, 85,
+       /* EAST */
+       69, 65, 83,
+       /* WEST */
+       87, 69, 83,
+       /* UP */
+       85, 80, 32,
+       /* DOWN */
+       68, 79, 87,
+       /* . */
+       46, 32, 32,
+       /* PAS */
+       80, 65, 83,
+       /* HAL */
+       72, 65, 76,
+       /* BOO */
+       66, 79, 79,
+       /* BOT */
+       66, 79, 84,
+       /* *RUM */
+       210, 85, 77,
+       /* WIN */
+       87, 73, 78,
+       /* GAM */
+       71, 65, 77,
+       /* MON */
+       77, 79, 78,
+       /* PIR */
+       80, 73, 82,
+       /* ARO */
+       65, 82, 79,
+       /* BAG */
+       66, 65, 71,
+       /* *DUF */
+       196, 85, 70,
+       /* TOR */
+       84, 79, 82,
+       /* OFF */
+       79, 70, 70,
+       /* MAT */
+       77, 65, 84,
+       /* YOH */
+       89, 79, 72,
+       /* 30 */
+       51, 48, 32,
+       /* LUM */
+       76, 85, 77,
+       /* RUG */
+       82, 85, 71,
+       /* KEY */
+       75, 69, 89,
+       /* INV */
+       73, 78, 86,
+       /* DUB */
+       68, 85, 66,
+       /* SAI */
+       83, 65, 73,
+       /* FIS */
+       70, 73, 83,
+       /* ANC */
+       65, 78, 67,
+       /* SHA */
+       83, 72, 65,
+       /* PLA */
+       80, 76, 65,
+       /* CAV */
+       67, 65, 86,
+       /* SIG */
+       83, 73, 71,
+       /* DOO */
+       68, 79, 79,
+       /* CHE */
+       67, 72, 69,
+       /* PAR */
+       80, 65, 82,
+       /* HAM */
+       72, 65, 77,
+       /* NAI */
+       78, 65, 73,
+       /* BOA */
+       66, 79, 65,
+       /* *SHI */
+       211, 72, 73,
+       /* SHE */
+       83, 72, 69,
+       /* CRA */
+       67, 82, 65,
+       /* WAT */
+       87, 65, 84,
+       /* *SAL */
+       211, 65, 76,
+       /* LAG */
+       76, 65, 71,
+       /* *TID */
+       212, 73, 68,
+       /* PIT */
+       80, 73, 84,
+       /* SHO */
+       83, 72, 79,
+       /* *BEA */
+       194, 69, 65,
+       /* MAP */
+       77, 65, 80,
+       /* PAC */
+       80, 65, 67,
+       /* BON */
+       66, 79, 78,
+       /* HOL */
+       72, 79, 76,
+       /* SAN */
+       83, 65, 78,
+       /* BOX */
+       66, 79, 88,
+       /* SNE */
+       83, 78, 69,
+       /* CRA */
+       67, 82, 65,
+       /* *SAC */
+       211, 65, 67,
+       /* PIE */
+       80, 73, 69,
+       /* KEE */
+       75, 69, 69,
+       /* FLO */
+       70, 76, 79,
+       /* *JET */
+       202, 69, 84,
+       /* STA */
+       83, 84, 65,
+       /* *UPS */
+       213, 80, 83,
+       /* PAT */
+       80, 65, 84,
+       /* *HIL */
+       200, 73, 76,
+       /* YOH */
+       89, 79, 72,
+       /* AWA */
+       65, 87, 65,
+       /* *BUN */
+       194, 85, 78,
+       /* PIE */
+       80, 73, 69,
+       /* NOT */
+       78, 79, 84,
+       /* FLY */
+       70, 76, 89,
+       /* DES */
+       68, 69, 83,
+       /* CRO */
+       67, 82, 79,
+       /* SNA */
+       83, 78, 65,
+       /* TRE */
+       84, 82, 69,
+       0,
+};
+const uint8_t automap[] = {
+       /* BOO */
+       66, 79, 79,
+       3,
+       /* BAG */
+       66, 65, 71,
+       5,
+       /* BOT */
+       66, 79, 84,
+       7,
+       /* TOR */
+       84, 79, 82,
+       8,
+       /* TOR */
+       84, 79, 82,
+       9,
+       /* MAT */
+       77, 65, 84,
+       10,
+       /* CHE */
+       67, 72, 69,
+       13,
+       /* MON */
+       77, 79, 78,
+       14,
+       /* ANC */
+       65, 78, 67,
+       15,
+       /* SAI */
+       83, 65, 73,
+       20,
+       /* FIS */
+       70, 73, 83,
+       21,
+       /* DUB */
+       68, 85, 66,
+       22,
+       /* PAR */
+       80, 65, 82,
+       24,
+       /* BOT */
+       66, 79, 84,
+       25,
+       /* RUG */
+       82, 85, 71,
+       26,
+       /* KEY */
+       75, 69, 89,
+       27,
+       /* CHE */
+       67, 72, 69,
+       28,
+       /* PLA */
+       80, 76, 65,
+       29,
+       /* HAM */
+       72, 65, 77,
+       31,
+       /* NAI */
+       78, 65, 73,
+       32,
+       /* LUM */
+       76, 85, 77,
+       33,
+       /* BOT */
+       66, 79, 84,
+       42,
+       /* SNE */
+       83, 78, 69,
+       44,
+       /* MAP */
+       77, 65, 80,
+       45,
+       /* SHO */
+       83, 72, 79,
+       46,
+       /* BON */
+       66, 79, 78,
+       47,
+       /* SAN */
+       83, 65, 78,
+       48,
+       /* BOT */
+       66, 79, 84,
+       49,
+       /* STA */
+       83, 84, 65,
+       50,
+       /* WIN */
+       87, 73, 78,
+       54,
+       /* BOX */
+       66, 79, 88,
+       57,
+       /* CRA */
+       67, 82, 65,
+       60,
+       /* NOT */
+       78, 79, 84,
+       61,
+       /* FLY */
+       70, 76, 89,
+       62,
+       /* TOR */
+       84, 79, 82,
+       63,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv03.c b/Applications/games/adv03.c
new file mode 100644 (file)
index 0000000..dadf6a4
--- /dev/null
@@ -0,0 +1,2675 @@
+#define NUM_OBJ 53
+#define WORDSIZE 3
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 1;
+const uint8_t maxcar = 7;
+const uint8_t treasure = 1;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 23;
+const uint8_t startloc = 2;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+0 };
+const uint8_t loctxt_2[] = {
+98, 114, 105, 101, 102, 105, 110, 103, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_3[] = {
+108, 111, 110, 103, 32, 115, 108, 111, 112, 105, 110, 103, 32, 103, 114, 101, 121, 32, 99, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_4[] = {
+103, 114, 101, 121, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 39, 109, 32, 115, 105, 116, 116, 105, 110, 103, 32, 105, 110, 32, 97, 32, 103, 114, 101, 121, 32, 99, 104, 97, 105, 114, 10, 116, 104, 101, 114, 101, 39, 115, 32, 97, 32, 98, 111, 120, 32, 112, 111, 105, 110, 116, 105, 110, 103, 32, 97, 116, 32, 109, 101, 0 };
+const uint8_t loctxt_6[] = {
+116, 119, 105, 115, 116, 105, 110, 103, 32, 119, 104, 105, 116, 101, 32, 104, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_7[] = {
+116, 119, 105, 115, 116, 105, 110, 103, 32, 121, 101, 108, 108, 111, 119, 32, 104, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_8[] = {
+116, 119, 105, 115, 116, 105, 110, 103, 32, 98, 108, 117, 101, 32, 104, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_9[] = {
+119, 104, 105, 116, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_10[] = {
+121, 101, 108, 108, 111, 119, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_11[] = {
+98, 108, 117, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_12[] = {
+109, 97, 105, 110, 116, 101, 110, 97, 110, 99, 101, 32, 114, 111, 111, 109, 32, 49, 0 };
+const uint8_t loctxt_13[] = {
+108, 97, 114, 103, 101, 32, 119, 104, 105, 116, 101, 32, 118, 105, 115, 105, 116, 111, 114, 115, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_14[] = {
+121, 101, 108, 108, 111, 119, 32, 99, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_15[] = {
+98, 108, 117, 101, 32, 97, 110, 116, 101, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_16[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 108, 101, 100, 103, 101, 32, 111, 117, 116, 115, 105, 100, 101, 32, 111, 102, 32, 97, 32, 119, 105, 110, 100, 111, 119, 10, 104, 105, 103, 104, 32, 97, 98, 111, 118, 101, 32, 116, 104, 101, 32, 114, 101, 97, 99, 116, 111, 114, 32, 99, 111, 114, 101, 0 };
+const uint8_t loctxt_17[] = {
+109, 97, 105, 110, 116, 101, 110, 97, 110, 99, 101, 32, 114, 111, 111, 109, 32, 50, 0 };
+const uint8_t loctxt_18[] = {
+112, 114, 111, 106, 101, 99, 116, 105, 111, 110, 105, 115, 116, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_19[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 114, 111, 111, 109, 32, 115, 117, 114, 114, 111, 110, 100, 105, 110, 103, 10, 116, 104, 101, 32, 114, 101, 97, 99, 116, 111, 114, 32, 99, 111, 114, 101, 0 };
+const uint8_t loctxt_20[] = {
+98, 114, 101, 97, 107, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_21[] = {
+114, 101, 97, 99, 116, 111, 114, 32, 99, 111, 114, 101, 0 };
+const uint8_t loctxt_22[] = {
+115, 109, 97, 108, 108, 32, 118, 105, 101, 119, 105, 110, 103, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_23[] = {
+115, 116, 111, 114, 97, 103, 101, 32, 114, 111, 111, 109, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_2,  { 0, 0, 0, 3, 0, 0 } }, 
+               { loctxt_3,  { 8, 4, 2, 12, 6, 7 } }, 
+               { loctxt_4,  { 3, 0, 0, 0, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_6,  { 9, 0, 8, 0, 0, 3 } }, 
+               { loctxt_7,  { 10, 0, 0, 0, 3, 0 } }, 
+               { loctxt_8,  { 11, 3, 0, 6, 0, 0 } }, 
+               { loctxt_9,  { 0, 6, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 0, 7, 0, 0, 0, 0 } }, 
+               { loctxt_11,  { 0, 8, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 3, 0, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 17, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 0, 23, 22, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 14, 0, 18, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 0, 17 } }, 
+               { loctxt_19,  { 0, 0, 20, 0, 0, 21 } }, 
+               { loctxt_20,  { 0, 0, 0, 19, 0, 0 } }, 
+               { loctxt_21,  { 0, 0, 0, 0, 19, 0 } }, 
+               { loctxt_22,  { 0, 0, 0, 0, 0, 15 } }, 
+               { loctxt_23,  { 0, 0, 15, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       0,
+       1,
+       2,
+       4,
+       4,
+       5,
+       1,
+       0,
+       255,
+       0,
+       0,
+       16,
+       9,
+       13,
+       13,
+       17,
+       0,
+       13,
+       16,
+       18,
+       0,
+       19,
+       12,
+       0,
+       23,
+       17,
+       23,
+       21,
+       21,
+       0,
+       19,
+       10,
+       19,
+       11,
+       15,
+       0,
+       0,
+       22,
+       0,
+       0,
+       0,
+       0,
+       0,
+       19,
+       14,
+       15,
+       5,
+       19,
+       0,
+       0,
+       0,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+84, 111, 114, 110, 32, 117, 112, 32, 109, 97, 112, 0 };
+const uint8_t objtxt_1[] = {
+80, 105, 99, 116, 117, 114, 101, 32, 111, 102, 32, 109, 101, 32, 115, 116, 97, 109, 112, 101, 100, 32, 45, 115, 101, 99, 117, 114, 105, 116, 121, 45, 0 };
+const uint8_t objtxt_2[] = {
+66, 111, 109, 98, 32, 100, 101, 116, 101, 99, 116, 111, 114, 32, 102, 108, 97, 115, 104, 105, 110, 103, 32, 121, 101, 108, 108, 111, 119, 32, 40, 98, 111, 109, 98, 32, 105, 115, 32, 110, 111, 119, 32, 97, 114, 109, 101, 100, 41, 0 };
+const uint8_t objtxt_3[] = {
+76, 97, 114, 103, 101, 32, 116, 97, 112, 101, 32, 114, 101, 99, 111, 114, 100, 101, 114, 0 };
+const uint8_t objtxt_4[] = {
+66, 111, 120, 32, 119, 105, 116, 104, 32, 97, 112, 112, 97, 114, 97, 116, 117, 115, 32, 112, 111, 105, 110, 116, 105, 110, 103, 32, 97, 116, 32, 99, 104, 97, 105, 114, 0 };
+const uint8_t objtxt_5[] = {
+67, 104, 97, 105, 114, 32, 98, 111, 108, 116, 101, 100, 32, 116, 111, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_6[] = {
+82, 111, 119, 32, 111, 102, 32, 52, 32, 98, 117, 116, 116, 111, 110, 115, 32, 45, 114, 101, 100, 32, 119, 104, 105, 116, 101, 32, 98, 108, 117, 101, 32, 121, 101, 108, 108, 111, 119, 45, 0 };
+const uint8_t objtxt_7[] = {
+80, 105, 99, 116, 117, 114, 101, 32, 111, 102, 32, 109, 101, 32, 115, 116, 97, 109, 112, 101, 100, 58, 32, 45, 118, 105, 115, 105, 116, 111, 114, 45, 0 };
+const uint8_t objtxt_8[] = {
+80, 105, 99, 116, 117, 114, 101, 32, 111, 102, 32, 109, 101, 32, 115, 116, 97, 109, 112, 101, 100, 32, 45, 109, 97, 105, 110, 116, 101, 110, 97, 110, 99, 101, 45, 0 };
+const uint8_t objtxt_9[] = {
+83, 117, 114, 103, 105, 99, 97, 108, 108, 121, 32, 105, 109, 112, 108, 97, 110, 116, 101, 100, 32, 98, 111, 109, 98, 32, 100, 101, 116, 101, 99, 116, 111, 114, 32, 103, 108, 111, 119, 115, 32, 103, 114, 101, 101, 110, 32, 40, 98, 111, 109, 98, 39, 115, 32, 45, 115, 97, 102, 101, 45, 41, 0 };
+const uint8_t objtxt_10[] = {
+66, 111, 109, 98, 32, 100, 101, 116, 101, 99, 116, 111, 114, 32, 103, 108, 111, 119, 105, 110, 103, 32, 114, 101, 100, 32, 40, 102, 105, 110, 97, 108, 32, 99, 111, 117, 110, 116, 100, 111, 119, 110, 32, 97, 99, 116, 105, 118, 101, 41, 0 };
+const uint8_t objtxt_11[] = {
+66, 108, 117, 101, 32, 107, 101, 121, 0 };
+const uint8_t objtxt_12[] = {
+89, 101, 108, 108, 111, 119, 32, 107, 101, 121, 0 };
+const uint8_t objtxt_13[] = {
+67, 108, 111, 115, 101, 100, 32, 119, 104, 105, 116, 101, 32, 100, 111, 111, 114, 32, 119, 105, 116, 104, 32, 116, 118, 32, 99, 97, 109, 101, 114, 97, 32, 109, 111, 117, 110, 116, 101, 100, 32, 111, 118, 101, 114, 32, 105, 116, 0 };
+const uint8_t objtxt_14[] = {
+80, 108, 97, 116, 101, 32, 103, 108, 97, 115, 115, 32, 119, 105, 110, 100, 111, 119, 32, 119, 105, 116, 104, 32, 101, 109, 98, 101, 100, 101, 100, 32, 114, 101, 100, 32, 119, 105, 114, 101, 115, 0 };
+const uint8_t objtxt_15[] = {
+80, 97, 110, 101, 108, 32, 111, 102, 32, 98, 117, 116, 116, 111, 110, 115, 32, 45, 119, 104, 105, 116, 101, 32, 103, 114, 101, 101, 110, 45, 0 };
+const uint8_t objtxt_16[] = {
+79, 108, 100, 32, 102, 97, 115, 104, 105, 111, 110, 101, 100, 32, 121, 97, 114, 110, 32, 109, 111, 112, 0 };
+const uint8_t objtxt_17[] = {
+69, 109, 112, 116, 121, 32, 119, 105, 110, 100, 111, 119, 32, 102, 114, 97, 109, 101, 0 };
+const uint8_t objtxt_18[] = {
+84, 118, 32, 99, 97, 109, 101, 114, 97, 32, 109, 111, 117, 110, 116, 101, 100, 32, 111, 118, 101, 114, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_19[] = {
+66, 114, 111, 107, 101, 110, 32, 103, 108, 97, 115, 115, 0 };
+const uint8_t objtxt_20[] = {
+69, 109, 112, 116, 121, 32, 109, 111, 118, 105, 101, 32, 112, 114, 111, 106, 101, 99, 116, 111, 114, 0 };
+const uint8_t objtxt_21[] = {
+77, 111, 118, 105, 101, 32, 112, 114, 111, 106, 101, 99, 116, 111, 114, 32, 119, 105, 116, 104, 32, 102, 105, 108, 109, 32, 99, 97, 114, 116, 114, 105, 100, 103, 101, 0 };
+const uint8_t objtxt_22[] = {
+77, 111, 118, 105, 101, 32, 102, 105, 108, 109, 32, 99, 97, 114, 116, 114, 105, 100, 103, 101, 0 };
+const uint8_t objtxt_23[] = {
+69, 109, 112, 116, 121, 32, 112, 108, 97, 115, 116, 105, 99, 32, 112, 97, 105, 108, 0 };
+const uint8_t objtxt_24[] = {
+87, 97, 116, 101, 114, 32, 102, 105, 108, 108, 101, 100, 32, 112, 108, 97, 115, 116, 105, 99, 32, 112, 97, 105, 108, 0 };
+const uint8_t objtxt_25[] = {
+86, 97, 116, 32, 111, 102, 32, 104, 101, 97, 118, 121, 32, 119, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_26[] = {
+87, 105, 114, 101, 32, 99, 117, 116, 116, 101, 114, 115, 0 };
+const uint8_t objtxt_27[] = {
+65, 110, 116, 105, 45, 114, 97, 100, 105, 97, 116, 105, 111, 110, 32, 115, 117, 105, 116, 0 };
+const uint8_t objtxt_28[] = {
+86, 101, 114, 121, 32, 108, 97, 114, 103, 101, 32, 116, 105, 109, 101, 32, 98, 111, 109, 98, 0 };
+const uint8_t objtxt_29[] = {
+82, 101, 100, 32, 119, 105, 114, 101, 32, 103, 111, 105, 110, 103, 32, 102, 114, 111, 109, 32, 98, 111, 109, 98, 32, 105, 110, 116, 111, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_30[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 108, 117, 109, 112, 32, 111, 102, 32, 103, 108, 111, 119, 105, 110, 103, 32, 112, 108, 97, 115, 116, 105, 99, 0 };
+const uint8_t objtxt_31[] = {
+83, 105, 103, 110, 32, 34, 78, 111, 32, 98, 101, 118, 101, 114, 97, 103, 101, 115, 44, 32, 80, 108, 101, 97, 115, 101, 32, 117, 115, 101, 32, 66, 114, 101, 97, 107, 32, 82, 111, 111, 109, 46, 34, 0 };
+const uint8_t objtxt_32[] = {
+89, 101, 108, 108, 111, 119, 32, 100, 111, 111, 114, 32, 119, 105, 116, 104, 32, 116, 118, 32, 99, 97, 109, 101, 114, 97, 32, 111, 118, 101, 114, 32, 105, 116, 0 };
+const uint8_t objtxt_33[] = {
+77, 101, 116, 97, 108, 32, 100, 111, 111, 114, 32, 106, 97, 109, 109, 101, 100, 32, 112, 97, 114, 116, 105, 97, 108, 108, 121, 32, 111, 112, 101, 110, 32, 98, 121, 32, 114, 101, 109, 97, 105, 110, 115, 32, 111, 102, 32, 97, 32, 116, 97, 112, 101, 32, 114, 101, 99, 111, 114, 100, 101, 114, 0 };
+const uint8_t objtxt_34[] = {
+66, 108, 117, 101, 32, 100, 111, 111, 114, 32, 119, 105, 116, 104, 32, 116, 118, 32, 99, 97, 109, 101, 114, 97, 32, 111, 118, 101, 114, 32, 105, 116, 0 };
+const uint8_t objtxt_35[] = {
+80, 108, 97, 105, 110, 32, 109, 101, 116, 97, 108, 32, 100, 111, 111, 114, 32, 119, 105, 116, 104, 32, 115, 105, 103, 110, 32, 45, 99, 111, 110, 116, 114, 111, 108, 32, 114, 111, 111, 109, 45, 0 };
+const uint8_t objtxt_36[] = {
+84, 104, 101, 32, 100, 111, 111, 114, 32, 105, 115, 32, 112, 97, 114, 116, 105, 97, 108, 108, 121, 32, 111, 112, 101, 110, 0 };
+const uint8_t objtxt_37[] = {
+69, 109, 112, 116, 121, 32, 112, 105, 108, 108, 32, 99, 97, 115, 101, 0 };
+const uint8_t objtxt_38[] = {
+54, 32, 105, 110, 99, 104, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_39[] = {
+69, 109, 112, 116, 121, 32, 109, 97, 110, 105, 108, 97, 32, 101, 110, 118, 101, 108, 111, 112, 101, 0 };
+const uint8_t objtxt_40[] = {
+80, 105, 101, 99, 101, 32, 111, 102, 32, 121, 97, 114, 110, 0 };
+const uint8_t objtxt_41[] = {
+80, 105, 99, 116, 117, 114, 101, 32, 111, 102, 32, 115, 97, 98, 111, 116, 101, 117, 114, 32, 115, 116, 97, 109, 112, 101, 100, 32, 45, 119, 105, 110, 100, 111, 119, 32, 109, 97, 105, 110, 116, 97, 110, 99, 101, 45, 0 };
+const uint8_t objtxt_42[] = {
+68, 101, 97, 100, 32, 115, 97, 98, 111, 116, 101, 117, 114, 0 };
+const uint8_t objtxt_43[] = {
+76, 111, 111, 115, 101, 32, 114, 101, 100, 32, 119, 105, 114, 101, 32, 103, 111, 105, 110, 103, 32, 105, 110, 116, 111, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_44[] = {
+83, 116, 101, 112, 115, 32, 108, 101, 97, 100, 105, 110, 103, 32, 100, 111, 119, 110, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 114, 101, 97, 99, 116, 111, 114, 32, 99, 111, 114, 101, 0 };
+const uint8_t objtxt_45[] = {
+89, 101, 108, 108, 111, 119, 32, 98, 117, 116, 116, 111, 110, 0 };
+const uint8_t objtxt_46[] = {
+66, 108, 117, 101, 32, 98, 117, 116, 116, 111, 110, 0 };
+const uint8_t objtxt_47[] = {
+75, 101, 121, 104, 111, 108, 101, 115, 32, 117, 110, 100, 101, 114, 32, 98, 117, 116, 116, 111, 110, 115, 0 };
+const uint8_t objtxt_48[] = {
+69, 120, 112, 111, 115, 101, 100, 32, 100, 105, 97, 108, 115, 32, 97, 110, 100, 32, 103, 97, 117, 103, 101, 115, 32, 101, 118, 101, 114, 121, 119, 104, 101, 114, 101, 0 };
+const uint8_t objtxt_49[] = {
+65, 32, 108, 101, 97, 102, 108, 101, 116, 0 };
+const uint8_t objtxt_50[] = {
+0 };
+const uint8_t objtxt_51[] = {
+0 };
+const uint8_t objtxt_52[] = {
+0 };
+const uint8_t objtxt_53[] = {
+0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+71, 111, 111, 100, 32, 109, 111, 114, 110, 105, 110, 103, 32, 77, 114, 46, 32, 80, 104, 101, 108, 112, 115, 46, 32, 89, 111, 117, 114, 32, 77, 105, 115, 115, 105, 111, 110, 32, 40, 115, 104, 111, 117, 108, 100, 32, 121, 111, 117, 32, 100, 101, 99, 105, 100, 101, 32, 116, 111, 10, 97, 99, 99, 101, 112, 116, 32, 105, 116, 41, 32, 105, 115, 32, 116, 111, 32, 112, 114, 101, 118, 101, 110, 116, 32, 116, 104, 105, 115, 32, 97, 117, 116, 111, 109, 97, 116, 101, 100, 32, 110, 117, 99, 108, 101, 97, 114, 32, 114, 101, 97, 99, 116, 111, 114, 10, 102, 114, 111, 109, 32, 98, 101, 105, 110, 103, 32, 100, 101, 115, 116, 114, 111, 121, 101, 100, 32, 98, 121, 32, 97, 32, 115, 97, 98, 111, 116, 101, 117, 114, 39, 115, 32, 84, 73, 77, 69, 32, 66, 79, 77, 66, 33, 10, 0 };
+const uint8_t msgtxt_2[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 101, 100, 0 };
+const uint8_t msgtxt_3[] = {
+77, 121, 32, 98, 111, 109, 98, 32, 100, 101, 116, 101, 99, 116, 111, 114, 0 };
+const uint8_t msgtxt_4[] = {
+119, 97, 105, 108, 115, 32, 65, 76, 65, 82, 77, 73, 78, 71, 76, 89, 33, 0 };
+const uint8_t msgtxt_5[] = {
+67, 76, 73, 67, 75, 33, 0 };
+const uint8_t msgtxt_6[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 100, 111, 32, 116, 104, 97, 116, 0 };
+const uint8_t msgtxt_7[] = {
+73, 116, 32, 97, 112, 112, 101, 97, 114, 115, 32, 108, 111, 99, 107, 101, 100, 0 };
+const uint8_t msgtxt_8[] = {
+98, 117, 116, 116, 111, 110, 32, 105, 115, 32, 110, 111, 119, 32, 117, 110, 108, 111, 99, 107, 101, 100, 0 };
+const uint8_t msgtxt_9[] = {
+66, 108, 117, 101, 0 };
+const uint8_t msgtxt_10[] = {
+89, 101, 108, 108, 111, 119, 0 };
+const uint8_t msgtxt_11[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 66, 114, 105, 103, 104, 116, 32, 102, 108, 97, 115, 104, 32, 38, 32, 73, 32, 104, 101, 97, 114, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 102, 97, 108, 108, 32, 116, 111, 32, 116, 104, 101, 32, 102, 108, 111, 111, 114, 46, 10, 73, 32, 99, 97, 110, 39, 116, 32, 115, 101, 101, 32, 119, 104, 97, 116, 32, 105, 116, 32, 105, 115, 32, 102, 114, 111, 109, 32, 104, 101, 114, 101, 32, 116, 104, 111, 117, 103, 104, 46, 10, 0 };
+const uint8_t msgtxt_12[] = {
+42, 32, 32, 32, 66, 32, 79, 32, 79, 32, 79, 32, 79, 32, 79, 32, 79, 32, 79, 32, 79, 32, 79, 32, 77, 32, 33, 32, 42, 32, 42, 32, 42, 32, 42, 32, 42, 32, 42, 0 };
+const uint8_t msgtxt_13[] = {
+84, 104, 101, 32, 115, 97, 98, 111, 116, 101, 117, 114, 32, 40, 119, 104, 111, 32, 97, 108, 115, 111, 32, 114, 101, 119, 105, 114, 101, 100, 32, 116, 104, 101, 32, 115, 101, 99, 117, 114, 105, 116, 121, 32, 115, 121, 115, 116, 101, 109, 41, 32, 105, 115, 32, 97, 32, 104, 101, 97, 114, 116, 10, 112, 97, 116, 105, 101, 110, 116, 46, 32, 72, 101, 32, 112, 108, 97, 110, 115, 32, 116, 111, 32, 83, 85, 73, 67, 73, 68, 69, 32, 119, 105, 116, 104, 32, 116, 104, 101, 32, 114, 101, 97, 99, 116, 111, 114, 33, 32, 72, 101, 32, 105, 115, 32, 115, 116, 105, 108, 108, 32, 108, 111, 111, 115, 101, 105, 110, 32, 116, 104, 101, 32, 98, 117, 105, 108, 100, 105, 110, 103, 46, 10, 89, 111, 117, 39, 108, 108, 32, 102, 105, 110, 100, 32, 83, 101, 99, 117, 114, 105, 116, 121, 32, 107, 101, 121, 115, 32, 38, 32, 97, 32, 109, 97, 112, 32, 105, 110, 32, 116, 104, 101, 32, 109, 97, 110, 105, 108, 97, 32, 101, 110, 118, 101, 108, 111, 112, 101, 32, 108, 121, 105, 110, 103, 10, 110, 101, 120, 116, 32, 116, 111, 32, 116, 104, 101, 32, 116, 97, 112, 101, 32, 112, 108, 97, 121, 101, 114, 46, 0 };
+const uint8_t msgtxt_14[] = {
+112, 111, 108, 105, 116, 101, 108, 121, 32, 98, 101, 101, 112, 115, 46, 46, 46, 10, 0 };
+const uint8_t msgtxt_15[] = {
+97, 110, 103, 114, 105, 108, 121, 32, 98, 117, 122, 122, 101, 115, 46, 46, 46, 10, 0 };
+const uint8_t msgtxt_16[] = {
+83, 116, 114, 97, 110, 103, 101, 46, 46, 46, 0 };
+const uint8_t msgtxt_17[] = {
+77, 111, 115, 116, 32, 100, 111, 111, 114, 115, 32, 38, 32, 119, 105, 110, 100, 111, 119, 115, 32, 97, 114, 101, 32, 117, 110, 100, 101, 114, 32, 97, 117, 116, 111, 109, 97, 116, 101, 100, 32, 115, 101, 99, 117, 114, 105, 116, 121, 32, 99, 111, 110, 116, 114, 111, 108, 46, 0 };
+const uint8_t msgtxt_18[] = {
+77, 101, 116, 97, 108, 108, 105, 99, 32, 118, 111, 105, 99, 101, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_19[] = {
+34, 83, 104, 111, 119, 32, 97, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, 32, 112, 108, 101, 97, 115, 101, 34, 10, 0 };
+const uint8_t msgtxt_20[] = {
+34, 65, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, 32, 73, 78, 83, 85, 70, 70, 73, 67, 73, 69, 78, 84, 32, 102, 111, 114, 32, 97, 99, 99, 101, 115, 115, 34, 10, 0 };
+const uint8_t msgtxt_21[] = {
+84, 104, 101, 32, 100, 111, 111, 114, 32, 111, 112, 101, 110, 115, 32, 106, 117, 115, 116, 32, 108, 111, 110, 103, 32, 101, 110, 111, 117, 103, 104, 32, 102, 111, 114, 32, 109, 101, 32, 116, 111, 32, 115, 99, 117, 114, 114, 121, 32, 116, 104, 114, 111, 117, 103, 104, 46, 0 };
+const uint8_t msgtxt_22[] = {
+73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 50, 110, 100, 32, 102, 108, 111, 111, 114, 46, 32, 66, 101, 108, 111, 119, 32, 73, 32, 115, 101, 101, 32, 116, 104, 101, 32, 99, 111, 110, 116, 114, 111, 108, 32, 114, 111, 111, 109, 32, 115, 117, 114, 114, 111, 110, 100, 105, 110, 103, 10, 116, 104, 101, 32, 114, 101, 97, 99, 116, 111, 114, 32, 99, 111, 114, 101, 46, 32, 84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 119, 105, 100, 101, 32, 108, 101, 100, 103, 101, 32, 106, 117, 115, 116, 32, 117, 110, 100, 101, 114, 32, 116, 104, 101, 32, 119, 105, 110, 100, 111, 119, 46, 0 };
+const uint8_t msgtxt_23[] = {
+73, 110, 32, 116, 104, 105, 115, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 116, 104, 101, 114, 101, 39, 115, 32, 78, 79, 32, 115, 99, 111, 114, 101, 46, 32, 69, 105, 116, 104, 101, 114, 32, 121, 111, 117, 32, 109, 97, 107, 101, 32, 105, 116, 32, 111, 114, 32, 46, 46, 46, 10, 0 };
+const uint8_t msgtxt_24[] = {
+84, 101, 108, 108, 32, 109, 101, 32, 119, 105, 116, 104, 32, 119, 104, 97, 116, 63, 32, 69, 120, 97, 109, 112, 108, 101, 58, 32, 34, 87, 73, 84, 72, 32, 70, 73, 83, 84, 34, 0 };
+const uint8_t msgtxt_25[] = {
+66, 101, 32, 115, 117, 114, 101, 32, 73, 39, 109, 32, 99, 97, 114, 114, 121, 105, 110, 103, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_26[] = {
+82, 101, 99, 111, 114, 100, 101, 114, 32, 103, 111, 101, 115, 32, 102, 108, 121, 105, 110, 103, 32, 116, 104, 114, 117, 32, 116, 104, 101, 32, 103, 108, 97, 115, 115, 32, 108, 97, 110, 100, 105, 110, 103, 32, 105, 110, 32, 116, 104, 101, 32, 99, 111, 110, 116, 114, 111, 108, 32, 114, 111, 111, 109, 46, 66, 111, 121, 32, 119, 104, 97, 116, 32, 97, 32, 77, 69, 83, 83, 33, 10, 0 };
+const uint8_t msgtxt_27[] = {
+67, 108, 105, 99, 107, 33, 10, 82, 111, 111, 109, 32, 108, 105, 103, 104, 116, 115, 32, 100, 105, 109, 32, 97, 110, 100, 32, 97, 32, 115, 99, 114, 101, 101, 110, 32, 100, 114, 111, 112, 115, 32, 102, 114, 111, 109, 32, 116, 104, 101, 32, 99, 101, 105, 108, 105, 110, 103, 46, 10, 89, 111, 117, 32, 104, 101, 97, 114, 32, 97, 32, 104, 105, 100, 100, 101, 110, 32, 112, 114, 111, 106, 101, 99, 116, 111, 114, 32, 115, 116, 97, 114, 116, 46, 0 };
+const uint8_t msgtxt_28[] = {
+84, 104, 101, 32, 115, 99, 114, 101, 101, 110, 32, 105, 108, 108, 117, 109, 105, 110, 97, 116, 101, 115, 32, 102, 111, 114, 32, 97, 119, 104, 105, 108, 101, 44, 32, 98, 117, 116, 32, 110, 111, 32, 109, 111, 118, 105, 101, 33, 63, 0 };
+const uint8_t msgtxt_29[] = {
+84, 104, 101, 32, 112, 114, 111, 106, 101, 99, 116, 111, 114, 32, 115, 116, 111, 112, 115, 44, 32, 116, 104, 101, 32, 115, 99, 114, 101, 101, 110, 32, 114, 105, 115, 101, 115, 44, 32, 97, 110, 100, 32, 116, 104, 101, 32, 108, 105, 103, 104, 116, 115, 32, 114, 101, 116, 117, 114, 110, 46, 0 };
+const uint8_t msgtxt_30[] = {
+65, 32, 109, 111, 118, 105, 101, 32, 114, 117, 110, 115, 32, 116, 101, 108, 108, 105, 110, 103, 32, 97, 98, 111, 117, 116, 32, 116, 104, 101, 32, 114, 101, 97, 99, 116, 111, 114, 32, 97, 110, 100, 32, 105, 116, 115, 32, 99, 111, 110, 115, 116, 114, 117, 99, 116, 105, 111, 110, 10, 105, 110, 116, 101, 114, 101, 115, 116, 105, 110, 103, 32, 104, 105, 103, 104, 108, 105, 103, 104, 116, 115, 58, 10, 32, 49, 41, 32, 80, 108, 97, 115, 116, 105, 99, 32, 68, 69, 70, 79, 82, 77, 83, 32, 115, 116, 114, 97, 110, 103, 101, 108, 121, 32, 105, 110, 32, 114, 97, 100, 105, 97, 116, 105, 111, 110, 10, 32, 50, 41, 32, 69, 118, 101, 110, 32, 115, 104, 111, 114, 116, 32, 101, 120, 112, 111, 115, 117, 114, 101, 32, 116, 111, 32, 72, 73, 71, 72, 32, 114, 97, 100, 105, 97, 116, 105, 111, 110, 32, 105, 115, 32, 76, 69, 84, 72, 65, 76, 44, 32, 115, 111, 32, 115, 117, 105, 116, 32, 117, 112, 10, 0 };
+const uint8_t msgtxt_31[] = {
+84, 104, 101, 32, 114, 97, 100, 105, 97, 116, 105, 111, 110, 32, 100, 105, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 116, 111, 32, 109, 121, 32, 112, 97, 105, 108, 33, 0 };
+const uint8_t msgtxt_32[] = {
+72, 111, 108, 100, 105, 110, 103, 32, 97, 32, 82, 97, 100, 105, 97, 116, 105, 111, 110, 32, 83, 117, 105, 116, 0 };
+const uint8_t msgtxt_33[] = {
+100, 111, 101, 115, 110, 39, 116, 32, 112, 114, 111, 118, 105, 100, 101, 32, 109, 117, 99, 104, 32, 112, 114, 111, 116, 101, 99, 116, 105, 111, 110, 32, 102, 111, 114, 32, 109, 101, 10, 32, 97, 115, 32, 73, 32, 102, 97, 108, 108, 32, 100, 111, 119, 110, 32, 114, 101, 116, 99, 104, 105, 110, 103, 32, 73, 32, 104, 101, 97, 114, 47, 70, 69, 69, 76, 32, 84, 72, 69, 32, 66, 79, 77, 66, 32, 101, 120, 112, 108, 111, 100, 101, 33, 10, 0 };
+const uint8_t msgtxt_34[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 110, 117, 109, 98, 101, 114, 32, 51, 32, 34, 77, 73, 83, 83, 73, 79, 78, 32, 73, 77, 80, 79, 83, 83, 73, 66, 76, 69, 34, 10, 32, 98, 121, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 44, 32, 68, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 32, 77, 97, 101, 103, 101, 110, 32, 65, 100, 97, 109, 115, 46, 10, 0 };
+const uint8_t msgtxt_35[] = {
+65, 32, 98, 117, 115, 105, 110, 101, 115, 115, 32, 115, 117, 105, 116, 0 };
+const uint8_t msgtxt_36[] = {
+73, 39, 109, 32, 87, 69, 65, 82, 73, 78, 71, 32, 97, 110, 32, 97, 110, 116, 105, 45, 114, 97, 100, 105, 97, 116, 105, 111, 110, 32, 115, 117, 105, 116, 46, 0 };
+const uint8_t msgtxt_37[] = {
+73, 116, 32, 119, 111, 110, 39, 116, 32, 98, 117, 100, 103, 101, 33, 0 };
+const uint8_t msgtxt_38[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 119, 111, 110, 39, 116, 32, 102, 105, 116, 32, 116, 104, 114, 117, 32, 116, 104, 101, 32, 100, 111, 111, 114, 46, 0 };
+const uint8_t msgtxt_39[] = {
+73, 32, 116, 117, 114, 110, 32, 116, 104, 101, 32, 107, 110, 111, 98, 32, 97, 110, 100, 32, 112, 117, 115, 104, 0 };
+const uint8_t msgtxt_40[] = {
+103, 101, 110, 116, 108, 121, 32, 111, 110, 32, 116, 104, 101, 32, 100, 111, 111, 114, 0 };
+const uint8_t msgtxt_41[] = {
+104, 97, 114, 100, 32, 111, 110, 32, 116, 104, 101, 32, 100, 111, 111, 114, 0 };
+const uint8_t msgtxt_42[] = {
+105, 116, 32, 111, 112, 101, 110, 115, 32, 115, 108, 105, 103, 104, 116, 108, 121, 0 };
+const uint8_t msgtxt_43[] = {
+105, 116, 115, 32, 99, 108, 111, 115, 101, 100, 0 };
+const uint8_t msgtxt_44[] = {
+116, 104, 101, 32, 119, 97, 116, 101, 114, 32, 115, 112, 105, 108, 108, 115, 32, 111, 110, 32, 116, 104, 101, 32, 98, 111, 109, 98, 32, 97, 110, 100, 0 };
+const uint8_t msgtxt_45[] = {
+116, 104, 101, 32, 99, 111, 110, 116, 114, 111, 108, 32, 112, 97, 110, 101, 108, 32, 119, 104, 105, 99, 104, 32, 105, 109, 109, 101, 100, 105, 97, 116, 101, 108, 121, 32, 115, 104, 111, 114, 116, 115, 32, 111, 117, 116, 32, 116, 114, 105, 103, 103, 101, 114, 105, 110, 103, 10, 116, 104, 101, 32, 98, 111, 109, 98, 0 };
+const uint8_t msgtxt_46[] = {
+100, 101, 102, 117, 115, 101, 115, 32, 105, 116, 33, 32, 70, 65, 78, 84, 65, 83, 84, 73, 67, 44, 32, 89, 111, 117, 32, 99, 111, 109, 112, 108, 101, 116, 101, 100, 32, 97, 110, 32, 73, 77, 80, 79, 83, 83, 73, 66, 76, 69, 32, 109, 105, 115, 115, 105, 111, 110, 33, 0 };
+const uint8_t msgtxt_47[] = {
+116, 104, 101, 32, 119, 97, 116, 101, 114, 32, 115, 111, 97, 107, 115, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t msgtxt_48[] = {
+115, 97, 121, 32, 97, 103, 97, 105, 110, 32, 38, 32, 117, 115, 101, 32, 97, 32, 99, 111, 108, 111, 114, 33, 0 };
+const uint8_t msgtxt_49[] = {
+73, 39, 109, 32, 108, 111, 111, 107, 105, 110, 103, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 99, 111, 110, 116, 114, 111, 108, 32, 114, 111, 111, 109, 46, 32, 73, 32, 110, 111, 116, 105, 99, 101, 32, 116, 104, 97, 116, 32, 116, 104, 101, 32, 100, 111, 111, 114, 32, 105, 115, 10, 32, 98, 108, 111, 99, 107, 101, 100, 32, 98, 121, 32, 115, 111, 109, 101, 32, 100, 101, 98, 114, 105, 115, 46, 0 };
+const uint8_t msgtxt_50[] = {
+73, 110, 32, 116, 104, 101, 32, 100, 105, 115, 116, 97, 110, 99, 101, 32, 121, 111, 117, 32, 104, 101, 97, 114, 32, 97, 32, 100, 117, 108, 108, 32, 116, 104, 117, 100, 59, 32, 97, 115, 32, 105, 102, 32, 115, 111, 109, 101, 111, 110, 101, 32, 102, 101, 108, 108, 32, 111, 114, 10, 32, 100, 114, 111, 112, 112, 101, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 104, 101, 97, 118, 121, 46, 0 };
+const uint8_t msgtxt_51[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 102, 101, 108, 108, 32, 116, 111, 32, 116, 104, 101, 32, 102, 108, 111, 111, 114, 46, 0 };
+const uint8_t msgtxt_52[] = {
+105, 116, 115, 32, 117, 110, 114, 101, 97, 100, 97, 98, 108, 101, 0 };
+const uint8_t msgtxt_53[] = {
+105, 116, 115, 32, 115, 116, 105, 108, 108, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0 };
+const uint8_t msgtxt_54[] = {
+79, 104, 32, 66, 111, 121, 46, 46, 46, 73, 32, 116, 104, 105, 110, 107, 32, 73, 32, 100, 105, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 46, 46, 46, 0 };
+const uint8_t msgtxt_55[] = {
+73, 116, 32, 109, 97, 100, 101, 32, 97, 110, 32, 111, 100, 100, 32, 115, 111, 117, 110, 100, 46, 0 };
+const uint8_t msgtxt_56[] = {
+34, 84, 86, 32, 100, 101, 97, 99, 116, 105, 118, 97, 116, 101, 100, 34, 10, 0 };
+const uint8_t msgtxt_57[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 107, 110, 111, 119, 32, 119, 104, 101, 114, 101, 32, 116, 111, 32, 108, 111, 111, 107, 0 };
+const uint8_t msgtxt_58[] = {
+84, 101, 108, 108, 32, 109, 101, 32, 104, 111, 119, 63, 0 };
+const uint8_t msgtxt_59[] = {
+84, 114, 121, 32, 115, 116, 97, 114, 116, 105, 110, 103, 32, 105, 116, 46, 0 };
+const uint8_t msgtxt_60[] = {
+77, 97, 121, 98, 101, 32, 73, 32, 115, 104, 111, 117, 108, 100, 32, 70, 82, 73, 83, 75, 32, 104, 105, 109, 63, 0 };
+const uint8_t msgtxt_61[] = {
+73, 116, 115, 32, 97, 32, 115, 101, 97, 109, 108, 101, 115, 115, 32, 98, 111, 120, 32, 119, 105, 116, 104, 32, 49, 32, 115, 109, 97, 108, 108, 32, 104, 111, 108, 101, 32, 102, 111, 114, 32, 116, 104, 101, 32, 114, 101, 100, 32, 119, 105, 114, 101, 46, 0 };
+const uint8_t msgtxt_62[] = {
+84, 86, 32, 99, 97, 109, 101, 114, 97, 32, 105, 115, 32, 115, 108, 111, 119, 32, 115, 99, 97, 110, 110, 105, 110, 103, 32, 116, 104, 101, 32, 119, 105, 110, 100, 111, 119, 32, 97, 114, 101, 97, 46, 0 };
+const uint8_t msgtxt_63[] = {
+84, 86, 32, 99, 97, 109, 101, 114, 97, 32, 105, 115, 32, 112, 111, 119, 101, 114, 101, 100, 32, 100, 111, 119, 110, 46, 10, 0 };
+const uint8_t msgtxt_64[] = {
+73, 116, 32, 115, 101, 101, 109, 115, 32, 115, 97, 102, 101, 46, 32, 83, 104, 97, 108, 108, 32, 73, 32, 115, 105, 116, 32, 100, 111, 119, 110, 63, 0 };
+const uint8_t msgtxt_65[] = {
+79, 110, 108, 121, 32, 104, 101, 108, 112, 32, 73, 32, 99, 97, 110, 32, 116, 104, 105, 110, 107, 32, 111, 102, 32, 105, 115, 32, 116, 111, 58, 32, 34, 69, 120, 97, 109, 105, 110, 101, 32, 101, 118, 101, 114, 121, 116, 104, 105, 110, 103, 32, 99, 108, 111, 115, 101, 108, 121, 33, 34, 10, 0 };
+const uint8_t msgtxt_66[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 46, 0 };
+const uint8_t msgtxt_67[] = {
+72, 85, 72, 63, 0 };
+const uint8_t msgtxt_68[] = {
+65, 32, 109, 105, 110, 117, 116, 101, 32, 97, 103, 111, 32, 115, 111, 109, 101, 111, 110, 101, 32, 114, 97, 110, 32, 111, 117, 116, 32, 111, 102, 32, 116, 104, 105, 115, 32, 114, 111, 111, 109, 33, 32, 66, 121, 32, 116, 104, 101, 32, 119, 97, 121, 32, 73, 32, 115, 101, 101, 109, 10, 116, 111, 32, 98, 101, 32, 99, 97, 114, 114, 121, 105, 110, 103, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 10, 0 };
+const uint8_t msgtxt_69[] = {
+83, 111, 109, 101, 111, 110, 101, 32, 99, 97, 109, 101, 32, 105, 110, 32, 116, 104, 101, 32, 114, 111, 111, 109, 44, 32, 104, 101, 32, 115, 97, 119, 32, 109, 101, 32, 97, 110, 100, 32, 114, 97, 110, 32, 111, 117, 116, 33, 0 };
+const uint8_t msgtxt_70[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 32, 111, 110, 101, 32, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_71[] = {
+34, 79, 119, 110, 101, 114, 32, 111, 102, 32, 98, 97, 100, 103, 101, 32, 105, 115, 32, 110, 111, 116, 32, 112, 114, 101, 115, 101, 110, 116, 33, 34, 0 };
+const uint8_t msgtxt_72[] = {
+72, 105, 33, 32, 76, 111, 111, 107, 32, 102, 111, 114, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 110, 117, 109, 98, 101, 114, 32, 52, 58, 32, 34, 86, 79, 79, 68, 79, 79, 32, 67, 65, 83, 84, 76, 69, 34, 32, 97, 116, 32, 121, 111, 117, 114, 10, 102, 97, 118, 111, 114, 105, 116, 101, 32, 99, 111, 109, 112, 117, 116, 101, 114, 32, 115, 116, 111, 114, 101, 33, 32, 40, 78, 111, 119, 32, 98, 97, 99, 107, 32, 116, 111, 32, 111, 117, 114, 32, 99, 117, 114, 114, 101, 110, 116, 32, 112, 114, 111, 103, 114, 97, 109, 46, 41, 0 };
+const uint8_t msgtxt_73[] = {
+70, 105, 110, 97, 108, 32, 99, 111, 117, 110, 116, 100, 111, 119, 110, 32, 115, 116, 97, 114, 116, 115, 32, 105, 110, 0 };
+const uint8_t msgtxt_74[] = {
+116, 117, 114, 110, 115, 33, 0 };
+const uint8_t msgtxt_75[] = {
+83, 111, 109, 101, 32, 116, 105, 109, 101, 32, 112, 97, 115, 115, 101, 115, 46, 46, 46, 0 };
+const uint8_t msgtxt_76[] = {
+84, 104, 101, 114, 101, 32, 105, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 119, 114, 105, 116, 116, 101, 110, 32, 116, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_77[] = {
+79, 87, 33, 32, 84, 104, 97, 116, 32, 72, 85, 82, 84, 33, 32, 65, 110, 121, 119, 97, 121, 0 };
+const uint8_t msgtxt_78[] = {
+34, 65, 67, 67, 69, 80, 84, 69, 68, 34, 0 };
+const uint8_t msgtxt_79[] = {
+0 };
+const uint8_t msgtxt_80[] = {
+0 };
+const uint8_t msgtxt_81[] = {
+0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  15    WIRE CUT BOOM SOON*/
+       136, 15, 
+       14, 29, 0, 9, 
+       59, 
+/* AUTO  100   BOOOM SOON*/
+       179, 
+       14, 9, 6, 10, 0, 2, 0, 10, 
+       59, 3, 4, 74, 
+/* AUTO  30    STEAL TAPE PLAYER*/
+       144, 30, 
+       12, 3, 14, 42, 0, 3, 17, 3, 
+       59, 
+/* AUTO  100   DEC COUNTER*/
+       160, 
+       77, 
+/* AUTO  9     BOOOM*/
+       135, 9, 
+       1, 10, 
+       70, 66, 12, 63, 
+/* AUTO  100   MSG DOOM*/
+       174, 
+       15, 40, 16, 0, 6, 10, 
+       123, 78, 124, 
+/* AUTO  100   FIRST IN*/
+       175, 
+       9, 12, 0, 12, 32, 44, 
+       34, 118, 58, 79, 
+/* AUTO  30    SABETOUR*/
+       149, 30, 
+       14, 42, 7, 10, 0, 42, 0, 10, 47, 19, 
+       62, 50, 
+/* AUTO  30    SABETOUR*/
+       149, 30, 
+       14, 42, 7, 4, 0, 42, 0, 4, 47, 19, 
+       62, 50, 
+/* AUTO  30    SABETOUR*/
+       149, 30, 
+       14, 42, 7, 3, 0, 42, 0, 3, 47, 19, 
+       62, 50, 
+/* AUTO  25    VOICE*/
+       133, 25, 
+       4, 10, 
+       18, 19, 
+/* AUTO  15    RAN IN AND LEFT*/
+       132, 15, 
+       14, 42, 
+       119, 
+/* AUTO  25    SHOW AUTHORIZATION*/
+       133, 25, 
+       4, 9, 
+       18, 19, 
+/* AUTO  25    SHOW AUTHORIZATION*/
+       133, 25, 
+       4, 11, 
+       18, 19, 
+/* AUTO  80    TV*/
+       136, 80, 
+       4, 13, 8, 13, 
+       112, 
+/* AUTO  40    TV*/
+       136, 40, 
+       4, 13, 9, 13, 
+       113, 
+/* AUTO  100   ALREADY SET DETECTOR*/
+       172, 
+       8, 1, 1, 9, 0, 1, 
+       60, 
+/* AUTO  100   DITTO*/
+       172, 
+       8, 2, 1, 2, 0, 2, 
+       60, 
+/* AUTO  100   SET GREEN*/
+       183, 
+       8, 1, 0, 9, 13, 9, 0, 2, 0, 1, 
+       3, 72, 14, 60, 
+/* AUTO  100   SET YELLO*/
+       183, 
+       8, 2, 13, 9, 0, 9, 0, 2, 0, 2, 
+       3, 72, 15, 60, 
+/* AUTO  80    PAIL*/
+       146, 80, 
+       4, 21, 1, 24, 0, 24, 0, 30, 
+       72, 31, 47, 
+/* AUTO  80    NO SUIT*/
+       138, 80, 
+       4, 21, 1, 27, 
+       32, 33, 63, 
+/* AUTO  80    NO SUIT*/
+       138, 80, 
+       4, 21, 13, 27, 
+       35, 33, 63, 
+/* AUTO  100   BOMB TRIGGED*/
+       168, 
+       15, 0, 0, 9, 
+       59, 
+/* AUTO  0     .*/
+};
+const uint8_t actions[] = {
+/* SHO   PIC   NEED SAB TOO*/
+       18, 34, 14, 
+       4, 13, 12, 42, 3, 41, 8, 13, 
+       18, 20, 121, 
+/* REA   LEA   .*/
+       5, 24, 52, 
+       3, 49, 
+       70, 122, 
+/* AUTO  0     .*/
+/* FRI   MOP   .*/
+       13, 54, 42, 
+       3, 16, 14, 11, 0, 11, 
+       53, 51, 
+/* AUTO  0     .*/
+/* OPE   DOO   .*/
+       6, 43, 20, 
+       7, 15, 
+       6, 7, 17, 
+/* PRE   WHI   GIVE BADGES*/
+       19, 25, 10, 
+       6, 9, 2, 6, 0, 1, 0, 1, 
+       58, 54, 73, 5, 
+/* AUTO  0     SECURITY BADGE*/
+       210, 
+       2, 1, 0, 1, 0, 4, 0, 5, 
+       62, 54, 11, 
+/* AUTO  0     MAINTANCE BADGE*/
+       210, 
+       2, 8, 0, 8, 0, 4, 0, 5, 
+       62, 54, 11, 
+/* AUTO  0     VISITOR BADGE*/
+       210, 
+       2, 7, 0, 7, 0, 4, 0, 5, 
+       62, 54, 11, 
+/* AUTO  0     NO PIC*/
+       202, 
+       4, 1, 0, 5, 
+       54, 2, 16, 
+/* CLE   ANY   */
+       9, 13, 0, 
+       3, 16, 13, 11, 
+       117, 2, 
+/* JUM   ANY   */
+       10, 32, 0, 
+       4, 16, 0, 9, 
+       104, 12, 63, 
+/* AUTO  0     */
+/* LOO   MOP   */
+       8, 40, 42, 
+       3, 16, 14, 11, 
+       105, 
+/* PRE   RED   DANGER*/
+       13, 25, 9, 
+       2, 6, 0, 2, 6, 2, 
+       58, 5, 
+/* UNL   BUT   .*/
+       0, 37, 19, 
+       48, 
+/* PRE   BLU   LOCKED*/
+       9, 25, 11, 
+       9, 4, 2, 6, 
+       6, 7, 
+/* PRE   YEL   LOCKED*/
+       9, 25, 12, 
+       9, 3, 2, 6, 
+       6, 7, 
+/* PRE   BLU   MOVE PICTURE*/
+       17, 25, 11, 
+       2, 6, 14, 1, 0, 1, 0, 1, 
+       62, 5, 
+/* PRE   BUT   */
+       0, 25, 19, 
+       48, 
+/* PRE   YEL   MOVE PIC*/
+       17, 25, 12, 
+       2, 6, 14, 8, 0, 8, 0, 1, 
+       62, 5, 
+/* PRE   RED   CLICK?*/
+       13, 25, 9, 
+       2, 6, 0, 9, 1, 2, 
+       5, 59, 
+/* PRE   ANY   .*/
+       4, 25, 0, 
+       2, 6, 
+       5, 
+/* ACT   UP    STAND UP*/
+       10, 57, 5, 
+       4, 5, 0, 4, 
+       54, 70, 64, 
+/* GET   TAP   TAPE*/
+       8, 10, 7, 
+       3, 3, 0, 3, 
+       52, 
+/* GET   UP    STAND UP*/
+       10, 10, 5, 
+       4, 5, 0, 4, 
+       54, 70, 64, 
+/* INV   ANY   */
+       5, 5, 0, 
+       13, 27, 
+       70, 66, 
+/* INV   ANY   */
+       6, 5, 0, 
+       14, 27, 
+       70, 66, 36, 
+/* LOO   TAP   */
+       4, 40, 7, 
+       3, 3, 
+       109, 
+/* SAV   GAM   */
+       0, 49, 13, 
+       71, 
+/* QUI   ANY   */
+       1, 50, 0, 
+       12, 63, 
+/* LOO   SAB   */
+       5, 40, 39, 
+       3, 42, 
+       116, 110, 
+/* PRE   GRE   MOVIE*/
+       11, 25, 46, 
+       2, 15, 13, 20, 
+       27, 16, 28, 29, 
+/* PRE   GRE   MOVIE*/
+       11, 25, 46, 
+       2, 15, 14, 20, 
+       70, 27, 30, 29, 
+/* ACT   TAP   */
+       6, 57, 7, 
+       3, 3, 
+       70, 1, 13, 
+/* UNL   ANY   */
+       18, 37, 0, 
+       2, 6, 3, 11, 0, 4, 9, 4, 
+       58, 9, 8, 
+/* UNL   ANY   UNLOCK*/
+       18, 37, 0, 
+       2, 6, 3, 12, 0, 3, 9, 3, 
+       58, 10, 8, 
+/* GET   INV   */
+       5, 10, 47, 
+       13, 27, 
+       70, 66, 
+/* GET   INV   */
+       6, 10, 47, 
+       14, 27, 
+       70, 66, 36, 
+/* PRE   WHI   */
+       10, 25, 10, 
+       4, 13, 0, 9, 
+       5, 54, 21, 
+/* PRE   YEL   */
+       11, 25, 12, 
+       4, 14, 0, 10, 
+       70, 5, 21, 54, 
+/* GO    WIN   BOOM SOON*/
+       19, 1, 21, 
+       2, 17, 8, 13, 0, 9, 0, 16, 
+       59, 54, 70, 64, 
+/* GO    WIN   THRU WINDOW SAFE*/
+       14, 1, 21, 
+       2, 17, 9, 13, 0, 16, 
+       54, 70, 64, 
+/* GO    WIN   */
+       10, 1, 21, 
+       4, 16, 0, 13, 
+       54, 70, 64, 
+/* PRE   BLU   */
+       11, 25, 11, 
+       4, 15, 0, 11, 
+       70, 5, 21, 54, 
+/* LOA   ANY   */
+       23, 29, 0, 
+       3, 22, 3, 20, 0, 20, 0, 21, 0, 22, 
+       72, 59, 70, 64, 
+/* UNL   ANY   UNLOAD MOVIE*/
+       19, 37, 0, 
+       3, 21, 0, 22, 0, 21, 0, 20, 
+       52, 72, 70, 64, 
+/* BRE   BOM   */
+       9, 45, 29, 
+       3, 28, 0, 8, 
+       24, 58, 
+/* WIT   ANY   END IS NEAR*/
+       19, 15, 0, 
+       8, 8, 0, 8, 0, 9, 3, 28, 
+       60, 105, 59, 104, 
+/* GET   BOM   */
+       12, 10, 29, 
+       2, 28, 14, 29, 0, 28, 
+       52, 
+/* CHA   ANY   */
+       0, 22, 0, 
+       120, 
+/* GET   BOM   */
+       10, 10, 29, 
+       2, 28, 14, 43, 
+       0, 6, 103, 
+/* DRO   BOM   BOOM NEAR*/
+       15, 18, 29, 
+       1, 28, 0, 9, 0, 28, 
+       105, 59, 104, 53, 
+/* POU   ANY   */
+       15, 6, 0, 
+       4, 19, 3, 24, 3, 28, 
+       70, 44, 45, 63, 
+/* POU   ANY   WON!!!*/
+       14, 6, 0, 
+       4, 20, 3, 24, 3, 28, 
+       44, 46, 63, 
+/* BRE   WIR   */
+       23, 45, 31, 
+       2, 29, 3, 26, 0, 43, 0, 29, 0, 2, 
+       72, 58, 70, 64, 
+/* DRO   MOP   */
+       14, 18, 42, 
+       1, 16, 14, 11, 0, 16, 
+       16, 105, 53, 
+/* POU   ANY   */
+       13, 6, 0, 
+       3, 24, 0, 24, 0, 23, 
+       72, 47, 
+/* SHO   PIC   */
+       15, 34, 14, 
+       4, 9, 1, 7, 0, 13, 
+       18, 128, 21, 54, 
+/* SHO   PIC   */
+       15, 34, 14, 
+       4, 9, 1, 8, 0, 13, 
+       18, 128, 21, 54, 
+/* SHO   PIC   */
+       15, 34, 14, 
+       4, 9, 1, 1, 0, 13, 
+       18, 128, 21, 54, 
+/* DRO   MOP   */
+       12, 18, 42, 
+       1, 16, 13, 11, 0, 16, 
+       53, 
+/* SHO   PIC   */
+       15, 34, 14, 
+       4, 10, 1, 1, 0, 14, 
+       18, 128, 21, 54, 
+/* SHO   PIC   */
+       15, 34, 14, 
+       4, 10, 1, 8, 0, 14, 
+       18, 128, 21, 54, 
+/* SHO   PIC   */
+       15, 34, 14, 
+       4, 11, 1, 1, 0, 15, 
+       18, 128, 21, 54, 
+/* SHO   PIC   */
+       6, 34, 14, 
+       4, 10, 
+       70, 18, 20, 
+/* SHO   PIC   */
+       6, 34, 14, 
+       4, 9, 
+       70, 18, 20, 
+/* SHO   PIC   */
+       6, 34, 14, 
+       4, 11, 
+       70, 18, 20, 
+/* CLE   ANY   */
+       9, 13, 0, 
+       3, 16, 14, 11, 
+       104, 105, 
+/* BRE   WIN   */
+       18, 45, 21, 
+       2, 14, 0, 7, 0, 10, 3, 3, 
+       24, 58, 58, 
+/* WIT   TAP   BREAK WINDOW*/
+       23, 15, 7, 
+       2, 14, 3, 3, 8, 7, 0, 3, 0, 1, 
+       73, 62, 70, 26, 
+/* AUTO  0     */
+       215, 
+       0, 7, 0, 2, 0, 17, 0, 14, 0, 13, 
+       60, 58, 72, 58, 
+/* GET   CHA   */
+       1, 10, 33, 
+       6, 37, 
+/* LOO   WIN   */
+       4, 40, 21, 
+       4, 13, 
+       22, 
+/* SCO   ANY   */
+       1, 51, 0, 
+       70, 23, 
+/* SIT   ANY   */
+       10, 36, 0, 
+       2, 5, 0, 5, 
+       70, 54, 64, 
+/* OPE   WIN   */
+       2, 43, 21, 
+       6, 7, 17, 
+/* BRE   MOP   */
+       14, 45, 42, 
+       3, 16, 0, 10, 0, 11, 
+       58, 58, 24, 
+/* WIT   CUT   */
+       23, 15, 32, 
+       3, 26, 8, 11, 0, 11, 0, 10, 0, 11, 
+       53, 51, 60, 60, 
+/* UNL   WIN   */
+       1, 37, 21, 
+       2, 17, 
+/* AUTO  0     AUT*/
+/* SHO   PIC   */
+       18, 34, 14, 
+       3, 42, 0, 13, 4, 13, 3, 41, 
+       60, 18, 106, 
+/* GO    CHA   */
+       4, 1, 33, 
+       4, 4, 
+       114, 
+/* LOO   CHA   .*/
+       4, 40, 33, 
+       4, 4, 
+       114, 
+/* LOO   BOM   */
+       4, 40, 29, 
+       3, 28, 
+       111, 
+/* LOO   DET   */
+       0, 40, 30, 
+       66, 
+/* DRO   SUI   */
+       8, 18, 48, 
+       14, 27, 0, 27, 
+       53, 
+/* DRO   SUI   */
+       8, 18, 48, 
+       1, 27, 0, 27, 
+       53, 
+/* LOO   WIN   */
+       5, 40, 21, 
+       4, 22, 
+       70, 49, 
+/* GET   WAT   */
+       16, 10, 28, 
+       3, 23, 2, 25, 0, 23, 0, 24, 
+       72, 
+/* WEA   SUI   PUT ON SUIT*/
+       8, 52, 48, 
+       3, 27, 0, 27, 
+       59, 
+/* GET   TAP   */
+       5, 10, 7, 
+       2, 33, 
+       6, 37, 
+/* OPE   DOO   */
+       5, 43, 20, 
+       2, 33, 
+       6, 37, 
+/* GO    DOO   */
+       8, 1, 20, 
+       2, 33, 1, 28, 
+       38, 
+/* GO    DOO   */
+       10, 1, 20, 
+       2, 33, 0, 15, 
+       70, 54, 64, 
+/* OPE   DOO   OPE*/
+       7, 43, 20, 
+       2, 35, 
+       16, 39, 40, 37, 
+/* PRE   DOO   */
+       7, 25, 20, 
+       2, 35, 
+       16, 39, 40, 37, 
+/* PRE   HAR   */
+       15, 25, 51, 
+       2, 35, 5, 36, 0, 36, 
+       39, 41, 42, 53, 
+/* PRE   HAR   */
+       11, 25, 51, 
+       2, 35, 2, 36, 
+       16, 39, 41, 37, 
+/* GO    DOO   */
+       14, 1, 20, 
+       2, 35, 2, 36, 0, 19, 
+       54, 70, 64, 
+/* GO    DOO   */
+       9, 1, 20, 
+       2, 35, 5, 36, 
+       6, 43, 
+/* KIC   DOO   */
+       14, 31, 20, 
+       2, 35, 5, 36, 0, 36, 
+       127, 42, 53, 
+/* CLO   DOO   */
+       0, 42, 20, 
+       37, 
+/* SUI   UP    */
+       8, 33, 5, 
+       3, 27, 0, 27, 
+       59, 
+/* SHO   PIC   */
+       9, 34, 14, 
+       4, 13, 8, 13, 
+       18, 20, 
+/* UNL   DOO   */
+       1, 37, 20, 
+       2, 17, 
+/* FRI   SAB   */
+       23, 54, 39, 
+       3, 42, 14, 39, 0, 39, 0, 40, 0, 41, 
+       53, 53, 53, 73, 
+/* AUTO  0     FRISKING SABOTEUR*/
+       207, 
+       0, 0, 0, 37, 0, 49, 
+       53, 53, 51, 53, 
+/* AUTO  0     RETURN STOLEN TAPE TOO*/
+       200, 
+       14, 3, 0, 3, 
+       53, 
+/* KNO   ANY   */
+       6, 53, 0, 
+       4, 9, 
+       70, 18, 19, 
+/* HEL   ANY   */
+       0, 9, 0, 
+       115, 
+/* PUL   ANY   */
+       0, 35, 0, 
+       37, 
+/* PRE   ANY   */
+       0, 25, 0, 
+       2, 
+/* KNO   ANY   */
+       6, 53, 0, 
+       4, 10, 
+       70, 18, 19, 
+/* KNO   ANY   */
+       6, 53, 0, 
+       4, 11, 
+       70, 18, 19, 
+/* KNO   ANY   */
+       0, 53, 0, 
+       2, 
+/* WIT   ANY   */
+       4, 15, 0, 
+       9, 10, 
+       117, 
+/* WIT   HAN   .*/
+       10, 15, 53, 
+       8, 10, 0, 10, 
+       60, 127, 2, 
+/* FRI   ANY   */
+       0, 54, 0, 
+       2, 
+/* KIC   ANY   */
+       1, 31, 0, 
+       127, 2, 
+/* SHO   ANY   */
+       1, 34, 0, 
+       16, 2, 
+/* REA   ANY   */
+       1, 24, 0, 
+       6, 102, 
+/* FIN   ANY   */
+       1, 38, 0, 
+       6, 107, 
+/* BRE   ANY   */
+       5, 45, 0, 
+       0, 10, 
+       24, 58, 
+/* WIT   ANY   */
+       11, 15, 0, 
+       8, 10, 0, 10, 
+       60, 16, 2, 25, 
+/* ACT   ANY   */
+       0, 57, 0, 
+       108, 
+/* WAI   ANY   */
+       5, 28, 0, 
+       0, 30, 
+       83, 125, 
+/* UNA   ANY   */
+       0, 16, 0, 
+       108, 
+/* LOO   LEA   */
+       4, 40, 52, 
+       3, 49, 
+       126, 
+/* LOO   CAM   */
+       8, 40, 37, 
+       4, 13, 8, 13, 
+       112, 
+/* LOO   CAM   */
+       8, 40, 37, 
+       4, 13, 9, 13, 
+       113, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* LOO   ANY   */
+       1, 40, 0, 
+       116, 76, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUT */
+       65, 85, 84,
+       /* GO */
+       71, 79, 32,
+       /* *ENT */
+       197, 78, 84,
+       /* *WAL */
+       215, 65, 76,
+       /* *RUN */
+       210, 85, 78,
+       /* INV */
+       73, 78, 86,
+       /* POU */
+       80, 79, 85,
+       /* *SPI */
+       211, 80, 73,
+       /* *EMP */
+       197, 77, 80,
+       /* HEL */
+       72, 69, 76,
+       /* GET */
+       71, 69, 84,
+       /* *TAK */
+       212, 65, 75,
+       /* *MOV */
+       205, 79, 86,
+       /* CLE */
+       67, 76, 69,
+       /* *MOP */
+       205, 79, 80,
+       /* WIT */
+       87, 73, 84,
+       /* UNA */
+       85, 78, 65,
+       /* *DIS */
+       196, 73, 83,
+       /* DRO */
+       68, 82, 79,
+       /* *PUT */
+       208, 85, 84,
+       /* *LEA */
+       204, 69, 65,
+       /* *REM */
+       210, 69, 77,
+       /* CHA */
+       67, 72, 65,
+       /* *FOL */
+       198, 79, 76,
+       /* REA */
+       82, 69, 65,
+       /* PRE */
+       80, 82, 69,
+       /* *TOU */
+       212, 79, 85,
+       /* *PUS */
+       208, 85, 83,
+       /* WAI */
+       87, 65, 73,
+       /* LOA */
+       76, 79, 65,
+       /* *INS */
+       201, 78, 83,
+       /* KIC */
+       75, 73, 67,
+       /* JUM */
+       74, 85, 77,
+       /* SUI */
+       83, 85, 73,
+       /* SHO */
+       83, 72, 79,
+       /* PUL */
+       80, 85, 76,
+       /* SIT */
+       83, 73, 84,
+       /* UNL */
+       85, 78, 76,
+       /* FIN */
+       70, 73, 78,
+       /* *LOC */
+       204, 79, 67,
+       /* LOO */
+       76, 79, 79,
+       /* *EXA */
+       197, 88, 65,
+       /* CLO */
+       67, 76, 79,
+       /* OPE */
+       79, 80, 69,
+       /* . */
+       46, 32, 32,
+       /* BRE */
+       66, 82, 69,
+       /* *SMA */
+       211, 77, 65,
+       /* *CUT */
+       195, 85, 84,
+       /* *UNB */
+       213, 78, 66,
+       /* SAV */
+       83, 65, 86,
+       /* QUI */
+       81, 85, 73,
+       /* SCO */
+       83, 67, 79,
+       /* WEA */
+       87, 69, 65,
+       /* KNO */
+       75, 78, 79,
+       /* FRI */
+       70, 82, 73,
+       /* *SEA */
+       211, 69, 65,
+       /* *SHA */
+       211, 72, 65,
+       /* ACT */
+       65, 67, 84,
+       /* *STA */
+       211, 84, 65,
+       /* *PLA */
+       208, 76, 65,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89,
+       /* NORTH */
+       78, 79, 82,
+       /* SOUTH */
+       83, 79, 85,
+       /* EAST */
+       69, 65, 83,
+       /* WEST */
+       87, 69, 83,
+       /* UP */
+       85, 80, 32,
+       /* DOWN */
+       68, 79, 87,
+       /* TAP */
+       84, 65, 80,
+       /* *REC */
+       210, 69, 67,
+       /* RED */
+       82, 69, 68,
+       /* WHI */
+       87, 72, 73,
+       /* BLU */
+       66, 76, 85,
+       /* YEL */
+       89, 69, 76,
+       /* GAM */
+       71, 65, 77,
+       /* PIC */
+       80, 73, 67,
+       /* *PAS */
+       208, 65, 83,
+       /* *BAD */
+       194, 65, 68,
+       /* *AUT */
+       193, 85, 84,
+       /* ARO */
+       65, 82, 79,
+       /* BUT */
+       66, 85, 84,
+       /* DOO */
+       68, 79, 79,
+       /* WIN */
+       87, 73, 78,
+       /* *GLA */
+       199, 76, 65,
+       /* YAR */
+       89, 65, 82,
+       /* FIL */
+       70, 73, 76,
+       /* *CAR */
+       195, 65, 82,
+       /* PRO */
+       80, 82, 79,
+       /* CAS */
+       67, 65, 83,
+       /* WAT */
+       87, 65, 84,
+       /* BOM */
+       66, 79, 77,
+       /* DET */
+       68, 69, 84,
+       /* WIR */
+       87, 73, 82,
+       /* CUT */
+       67, 85, 84,
+       /* CHA */
+       67, 72, 65,
+       /* KEY */
+       75, 69, 89,
+       /* ENV */
+       69, 78, 86,
+       /* *MAN */
+       205, 65, 78,
+       /* CAM */
+       67, 65, 77,
+       /* *BOX */
+       194, 79, 88,
+       /* SAB */
+       83, 65, 66,
+       /* *HIM */
+       200, 73, 77,
+       /* *THE */
+       212, 72, 69,
+       /* MOP */
+       77, 79, 80,
+       /* MAP */
+       77, 65, 80,
+       /* PAI */
+       80, 65, 73,
+       /* *PLA */
+       208, 76, 65,
+       /* GRE */
+       71, 82, 69,
+       /* INV */
+       73, 78, 86,
+       /* SUI */
+       83, 85, 73,
+       /* *ANT */
+       193, 78, 84,
+       /* *RAD */
+       210, 65, 68,
+       /* HAR */
+       72, 65, 82,
+       /* LEA */
+       76, 69, 65,
+       /* HAN */
+       72, 65, 78,
+       /* *FIS */
+       198, 73, 83,
+       /* *FOO */
+       198, 79, 79,
+       /* *FEE */
+       198, 69, 69,
+       /* FLO */
+       70, 76, 79,
+       /* *WAL */
+       215, 65, 76,
+       /* VAT */
+       86, 65, 84,
+       /* DIA */
+       68, 73, 65,
+       /* *GAU */
+       199, 65, 85,
+       /* DEB */
+       68, 69, 66,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       0,
+};
+const uint8_t automap[] = {
+       /* MAP */
+       77, 65, 80,
+       0,
+       /* PIC */
+       80, 73, 67,
+       1,
+       /* TAP */
+       84, 65, 80,
+       3,
+       /* PIC */
+       80, 73, 67,
+       7,
+       /* PIC */
+       80, 73, 67,
+       8,
+       /* KEY */
+       75, 69, 89,
+       11,
+       /* KEY */
+       75, 69, 89,
+       12,
+       /* MOP */
+       77, 79, 80,
+       16,
+       /* WIN */
+       87, 73, 78,
+       19,
+       /* FIL */
+       70, 73, 76,
+       22,
+       /* PAI */
+       80, 65, 73,
+       23,
+       /* PAI */
+       80, 65, 73,
+       24,
+       /* CUT */
+       67, 85, 84,
+       26,
+       /* SUI */
+       83, 85, 73,
+       27,
+       /* PAI */
+       80, 65, 73,
+       30,
+       /* CAS */
+       67, 65, 83,
+       37,
+       /* ENV */
+       69, 78, 86,
+       39,
+       /* YAR */
+       89, 65, 82,
+       40,
+       /* PIC */
+       80, 73, 67,
+       41,
+       /* SAB */
+       83, 65, 66,
+       42,
+       /* LEA */
+       76, 69, 65,
+       49,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv04.c b/Applications/games/adv04.c
new file mode 100644 (file)
index 0000000..e8c8829
--- /dev/null
@@ -0,0 +1,3037 @@
+#define NUM_OBJ 65
+#define WORDSIZE 3
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 9;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 25;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+99, 104, 97, 112, 101, 108, 0 };
+const uint8_t loctxt_2[] = {
+68, 105, 110, 103, 121, 32, 76, 111, 111, 107, 105, 110, 103, 32, 83, 116, 97, 105, 114, 119, 101, 108, 108, 0 };
+const uint8_t loctxt_3[] = {
+114, 111, 111, 109, 32, 105, 110, 32, 116, 104, 101, 32, 99, 97, 115, 116, 108, 101, 0 };
+const uint8_t loctxt_4[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_5[] = {
+114, 111, 111, 109, 32, 105, 110, 32, 116, 104, 101, 32, 99, 97, 115, 116, 108, 101, 0 };
+const uint8_t loctxt_6[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 77, 101, 100, 105, 117, 109, 32, 77, 97, 101, 103, 101, 110, 39, 115, 32, 77, 97, 100, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_7[] = {
+114, 111, 111, 109, 32, 105, 110, 32, 116, 104, 101, 32, 99, 97, 115, 116, 108, 101, 0 };
+const uint8_t loctxt_8[] = {
+114, 111, 111, 109, 32, 105, 110, 32, 116, 104, 101, 32, 99, 97, 115, 116, 108, 101, 0 };
+const uint8_t loctxt_9[] = {
+114, 111, 111, 109, 32, 105, 110, 32, 116, 104, 101, 32, 99, 97, 115, 116, 108, 101, 0 };
+const uint8_t loctxt_10[] = {
+66, 97, 108, 108, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_11[] = {
+100, 117, 110, 103, 101, 111, 110, 0 };
+const uint8_t loctxt_12[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 65, 114, 109, 111, 114, 121, 0 };
+const uint8_t loctxt_13[] = {
+116, 111, 114, 116, 117, 114, 101, 32, 99, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_14[] = {
+67, 104, 105, 109, 110, 101, 121, 0 };
+const uint8_t loctxt_15[] = {
+108, 97, 114, 103, 101, 32, 102, 105, 114, 101, 112, 108, 97, 99, 101, 0 };
+const uint8_t loctxt_16[] = {
+114, 111, 111, 109, 32, 105, 110, 32, 116, 104, 101, 32, 99, 97, 115, 116, 108, 101, 0 };
+const uint8_t loctxt_17[] = {
+76, 97, 98, 0 };
+const uint8_t loctxt_18[] = {
+110, 97, 114, 114, 111, 119, 32, 112, 97, 114, 116, 32, 111, 102, 32, 116, 104, 101, 32, 99, 104, 105, 109, 110, 101, 121, 0 };
+const uint8_t loctxt_19[] = {
+71, 114, 97, 118, 101, 121, 97, 114, 100, 0 };
+const uint8_t loctxt_20[] = {
+112, 97, 114, 108, 111, 114, 0 };
+const uint8_t loctxt_21[] = {
+74, 97, 105, 108, 32, 67, 101, 108, 108, 0 };
+const uint8_t loctxt_22[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 108, 101, 100, 103, 101, 0 };
+const uint8_t loctxt_23[] = {
+104, 105, 100, 100, 101, 110, 32, 86, 79, 79, 68, 79, 79, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_24[] = {
+114, 111, 111, 109, 32, 105, 110, 32, 116, 104, 101, 32, 99, 97, 115, 116, 108, 101, 0 };
+const uint8_t loctxt_25[] = {
+108, 111, 116, 32, 111, 102, 32, 84, 82, 79, 85, 66, 76, 69, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 9, 2, 4, 10, 0, 0 } }, 
+               { loctxt_2,  { 1, 24, 3, 11, 0, 0 } }, 
+               { loctxt_3,  { 5, 0, 0, 2, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 0, 1, 0, 0 } }, 
+               { loctxt_5,  { 0, 3, 7, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 0, 8, 0, 0 } }, 
+               { loctxt_7,  { 0, 0, 17, 5, 0, 0 } }, 
+               { loctxt_8,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 0, 1, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 1, 0, 0, 0 } }, 
+               { loctxt_11,  { 0, 13, 2, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 0, 13, 0, 0 } }, 
+               { loctxt_13,  { 11, 0, 12, 0, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 0, 0, 15 } }, 
+               { loctxt_15,  { 0, 10, 0, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 3, 0 } }, 
+               { loctxt_17,  { 0, 0, 0, 7, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 0, 14 } }, 
+               { loctxt_19,  { 0, 0, 13, 0, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 0, 0, 2 } }, 
+               { loctxt_21,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_22,  { 0, 9, 0, 0, 0, 0 } }, 
+               { loctxt_23,  { 0, 8, 0, 0, 0, 0 } }, 
+               { loctxt_24,  { 2, 0, 0, 0, 0, 0 } }, 
+               { loctxt_25,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       4,
+       0,
+       8,
+       5,
+       2,
+       3,
+       0,
+       12,
+       2,
+       0,
+       9,
+       0,
+       15,
+       0,
+       0,
+       19,
+       7,
+       1,
+       6,
+       0,
+       10,
+       14,
+       13,
+       0,
+       4,
+       0,
+       17,
+       0,
+       0,
+       0,
+       8,
+       0,
+       16,
+       12,
+       0,
+       18,
+       17,
+       0,
+       17,
+       11,
+       0,
+       0,
+       0,
+       15,
+       22,
+       0,
+       14,
+       0,
+       0,
+       19,
+       0,
+       0,
+       0,
+       20,
+       0,
+       0,
+       11,
+       12,
+       21,
+       0,
+       21,
+       8,
+       8,
+       0,
+       23,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+66, 108, 111, 111, 100, 121, 32, 75, 110, 105, 102, 101, 0 };
+const uint8_t objtxt_1[] = {
+76, 101, 100, 103, 101, 0 };
+const uint8_t objtxt_2[] = {
+80, 108, 97, 113, 117, 101, 0 };
+const uint8_t objtxt_3[] = {
+65, 110, 105, 109, 97, 108, 32, 104, 101, 97, 100, 115, 0 };
+const uint8_t objtxt_4[] = {
+66, 114, 111, 107, 101, 110, 32, 103, 108, 97, 115, 115, 0 };
+const uint8_t objtxt_5[] = {
+66, 105, 103, 32, 107, 101, 116, 116, 108, 101, 0 };
+const uint8_t objtxt_6[] = {
+68, 97, 114, 107, 32, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_7[] = {
+83, 104, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_8[] = {
+83, 116, 97, 105, 114, 115, 0 };
+const uint8_t objtxt_9[] = {
+66, 114, 105, 103, 104, 116, 108, 121, 32, 103, 108, 111, 119, 105, 110, 103, 32, 105, 100, 111, 108, 0 };
+const uint8_t objtxt_10[] = {
+79, 112, 101, 110, 32, 87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_11[] = {
+68, 97, 114, 107, 32, 67, 104, 105, 109, 110, 101, 121, 0 };
+const uint8_t objtxt_12[] = {
+67, 108, 111, 115, 101, 100, 32, 70, 108, 117, 101, 0 };
+const uint8_t objtxt_13[] = {
+79, 112, 101, 110, 32, 70, 108, 117, 101, 0 };
+const uint8_t objtxt_14[] = {
+70, 111, 117, 114, 32, 108, 101, 97, 102, 32, 99, 108, 111, 118, 101, 114, 0 };
+const uint8_t objtxt_15[] = {
+71, 114, 65, 118, 101, 115, 0 };
+const uint8_t objtxt_16[] = {
+67, 97, 115, 116, 32, 105, 114, 111, 110, 32, 112, 111, 116, 0 };
+const uint8_t objtxt_17[] = {
+67, 108, 111, 115, 101, 100, 32, 67, 111, 102, 102, 105, 110, 0 };
+const uint8_t objtxt_18[] = {
+67, 114, 121, 115, 116, 97, 108, 32, 66, 97, 108, 108, 0 };
+const uint8_t objtxt_19[] = {
+67, 108, 111, 115, 101, 100, 32, 87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_20[] = {
+76, 97, 114, 103, 101, 32, 102, 105, 114, 101, 112, 108, 97, 99, 101, 0 };
+const uint8_t objtxt_21[] = {
+83, 111, 111, 116, 0 };
+const uint8_t objtxt_22[] = {
+84, 105, 110, 121, 32, 111, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_23[] = {
+83, 112, 105, 114, 105, 116, 32, 77, 101, 100, 105, 117, 109, 0 };
+const uint8_t objtxt_24[] = {
+77, 97, 115, 115, 105, 118, 101, 32, 115, 116, 111, 110, 101, 32, 100, 111, 111, 114, 32, 119, 105, 116, 104, 32, 97, 32, 83, 65, 80, 80, 72, 73, 82, 69, 32, 115, 101, 116, 32, 105, 110, 116, 111, 32, 105, 116, 0 };
+const uint8_t objtxt_25[] = {
+83, 97, 112, 112, 104, 105, 114, 101, 32, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_26[] = {
+74, 117, 45, 74, 117, 32, 98, 97, 103, 0 };
+const uint8_t objtxt_27[] = {
+79, 112, 101, 110, 32, 67, 111, 102, 102, 105, 110, 0 };
+const uint8_t objtxt_28[] = {
+83, 108, 105, 99, 107, 32, 99, 104, 117, 116, 101, 32, 108, 101, 97, 100, 105, 110, 103, 32, 100, 111, 119, 110, 119, 97, 114, 100, 0 };
+const uint8_t objtxt_29[] = {
+74, 117, 45, 74, 117, 32, 109, 97, 110, 0 };
+const uint8_t objtxt_30[] = {
+83, 108, 105, 112, 112, 101, 114, 121, 32, 99, 104, 117, 116, 101, 32, 108, 101, 97, 100, 105, 110, 103, 32, 117, 112, 0 };
+const uint8_t objtxt_31[] = {
+87, 105, 100, 101, 32, 99, 114, 97, 99, 107, 32, 105, 110, 32, 116, 104, 101, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_32[] = {
+82, 97, 98, 98, 105, 116, 39, 115, 32, 102, 111, 111, 116, 0 };
+const uint8_t objtxt_33[] = {
+68, 117, 108, 108, 32, 38, 32, 98, 114, 111, 107, 101, 110, 32, 115, 119, 111, 114, 100, 0 };
+const uint8_t objtxt_34[] = {
+79, 112, 101, 110, 32, 83, 65, 102, 101, 0 };
+const uint8_t objtxt_35[] = {
+83, 116, 117, 99, 107, 32, 67, 104, 105, 109, 110, 101, 121, 32, 83, 119, 101, 101, 112, 0 };
+const uint8_t objtxt_36[] = {
+67, 104, 101, 109, 32, 116, 117, 98, 101, 115, 0 };
+const uint8_t objtxt_37[] = {
+67, 108, 111, 115, 101, 100, 32, 83, 65, 102, 101, 0 };
+const uint8_t objtxt_38[] = {
+76, 97, 98, 101, 108, 101, 100, 32, 99, 104, 101, 109, 105, 99, 97, 108, 115, 0 };
+const uint8_t objtxt_39[] = {
+80, 111, 99, 107, 101, 116, 32, 83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_40[] = {
+77, 105, 120, 101, 100, 32, 67, 104, 101, 109, 105, 99, 97, 108, 115, 0 };
+const uint8_t objtxt_41[] = {
+87, 105, 100, 101, 32, 111, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_42[] = {
+78, 97, 105, 108, 115, 0 };
+const uint8_t objtxt_43[] = {
+68, 117, 115, 116, 121, 32, 73, 100, 111, 108, 0 };
+const uint8_t objtxt_44[] = {
+68, 111, 108, 108, 0 };
+const uint8_t objtxt_45[] = {
+87, 111, 111, 100, 101, 110, 32, 98, 111, 97, 114, 100, 115, 0 };
+const uint8_t objtxt_46[] = {
+87, 111, 111, 100, 32, 98, 111, 97, 114, 100, 115, 32, 110, 97, 105, 108, 101, 100, 32, 116, 111, 32, 99, 104, 105, 109, 110, 101, 121, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_47[] = {
+65, 110, 116, 105, 113, 117, 101, 32, 104, 97, 109, 109, 101, 114, 0 };
+const uint8_t objtxt_48[] = {
+71, 114, 65, 116, 105, 110, 103, 0 };
+const uint8_t objtxt_49[] = {
+82, 117, 115, 116, 105, 110, 103, 32, 83, 65, 87, 0 };
+const uint8_t objtxt_50[] = {
+66, 117, 116, 116, 111, 110, 32, 105, 110, 32, 116, 104, 101, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_51[] = {
+80, 97, 112, 101, 114, 0 };
+const uint8_t objtxt_52[] = {
+86, 111, 111, 100, 111, 111, 32, 98, 111, 111, 107, 0 };
+const uint8_t objtxt_53[] = {
+74, 117, 45, 74, 117, 32, 109, 97, 110, 32, 115, 116, 97, 116, 117, 101, 0 };
+const uint8_t objtxt_54[] = {
+83, 116, 105, 99, 107, 0 };
+const uint8_t objtxt_55[] = {
+79, 112, 101, 110, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_56[] = {
+79, 112, 101, 110, 32, 106, 97, 105, 108, 32, 99, 101, 108, 108, 0 };
+const uint8_t objtxt_57[] = {
+75, 110, 105, 103, 104, 116, 39, 115, 32, 83, 117, 105, 116, 32, 111, 102, 32, 65, 114, 109, 111, 114, 0 };
+const uint8_t objtxt_58[] = {
+67, 108, 111, 115, 101, 100, 32, 99, 101, 108, 108, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_59[] = {
+66, 114, 111, 107, 101, 110, 32, 103, 114, 97, 116, 105, 110, 103, 0 };
+const uint8_t objtxt_60[] = {
+65, 100, 118, 101, 114, 116, 105, 115, 105, 110, 103, 32, 108, 101, 97, 102, 108, 101, 116, 0 };
+const uint8_t objtxt_61[] = {
+67, 114, 97, 99, 107, 32, 105, 110, 32, 116, 104, 101, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_62[] = {
+72, 111, 108, 101, 32, 105, 110, 32, 116, 104, 101, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_63[] = {
+80, 105, 101, 99, 101, 115, 32, 111, 102, 32, 114, 111, 99, 107, 0 };
+const uint8_t objtxt_64[] = {
+80, 97, 103, 101, 32, 116, 111, 114, 110, 32, 102, 114, 111, 109, 32, 97, 32, 98, 111, 111, 107, 0 };
+const uint8_t objtxt_65[] = {
+83, 109, 105, 108, 105, 110, 103, 32, 67, 111, 117, 110, 116, 32, 67, 114, 105, 115, 116, 111, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+67, 111, 117, 110, 116, 32, 67, 114, 105, 115, 116, 111, 39, 115, 32, 98, 101, 101, 110, 32, 67, 85, 82, 83, 69, 68, 33, 32, 84, 104, 101, 114, 101, 39, 115, 32, 111, 110, 101, 32, 119, 97, 121, 32, 102, 111, 114, 32, 104, 105, 109, 32, 116, 111, 32, 102, 108, 101, 101, 33, 10, 70, 105, 110, 100, 32, 105, 116, 44, 32, 97, 110, 100, 32, 104, 101, 39, 108, 108, 32, 103, 111, 32, 70, 82, 69, 69, 33, 0 };
+const uint8_t msgtxt_2[] = {
+73, 116, 32, 98, 101, 108, 111, 110, 103, 115, 32, 116, 111, 32, 116, 104, 101, 32, 109, 101, 100, 105, 117, 109, 0 };
+const uint8_t msgtxt_3[] = {
+83, 112, 105, 114, 105, 116, 32, 118, 105, 98, 114, 97, 116, 105, 111, 110, 115, 32, 100, 114, 105, 118, 101, 32, 109, 101, 32, 102, 114, 111, 109, 32, 114, 111, 111, 109, 46, 0 };
+const uint8_t msgtxt_4[] = {
+80, 114, 105, 110, 116, 115, 32, 116, 111, 111, 32, 115, 109, 97, 108, 108, 32, 102, 111, 114, 32, 116, 104, 101, 32, 117, 110, 97, 105, 100, 101, 100, 32, 101, 121, 101, 46, 0 };
+const uint8_t msgtxt_5[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 100, 111, 32, 116, 104, 97, 116, 0 };
+const uint8_t msgtxt_6[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 101, 100, 0 };
+const uint8_t msgtxt_7[] = {
+87, 105, 110, 100, 111, 119, 115, 32, 111, 112, 101, 110, 0 };
+const uint8_t msgtxt_8[] = {
+87, 105, 110, 100, 111, 119, 32, 106, 117, 115, 116, 32, 115, 108, 65, 109, 109, 101, 100, 32, 115, 104, 117, 116, 0 };
+const uint8_t msgtxt_9[] = {
+70, 111, 114, 32, 97, 32, 114, 101, 97, 100, 105, 110, 103, 32, 106, 117, 115, 116, 32, 34, 83, 85, 77, 77, 79, 78, 32, 77, 69, 68, 73, 85, 77, 32, 77, 65, 69, 71, 69, 78, 34, 32, 116, 111, 100, 97, 121, 33, 33, 0 };
+const uint8_t msgtxt_10[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 118, 101, 114, 121, 32, 115, 112, 101, 99, 105, 97, 108, 46, 0 };
+const uint8_t msgtxt_11[] = {
+80, 104, 111, 115, 112, 104, 111, 114, 101, 115, 99, 101, 110, 116, 32, 108, 101, 116, 116, 101, 114, 115, 32, 97, 114, 101, 32, 118, 101, 114, 121, 32, 104, 97, 114, 100, 32, 116, 111, 32, 114, 101, 97, 100, 32, 105, 110, 32, 98, 114, 105, 103, 104, 116, 32, 108, 105, 103, 104, 116, 33, 0 };
+const uint8_t msgtxt_12[] = {
+65, 109, 111, 110, 103, 115, 116, 32, 116, 104, 101, 32, 71, 82, 65, 86, 69, 83, 32, 105, 115, 32, 97, 32, 102, 111, 117, 114, 32, 108, 101, 97, 102, 32, 99, 108, 111, 118, 101, 114, 46, 0 };
+const uint8_t msgtxt_13[] = {
+82, 97, 118, 101, 110, 32, 99, 114, 121, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 111, 117, 116, 115, 105, 100, 101, 0 };
+const uint8_t msgtxt_14[] = {
+79, 110, 101, 32, 111, 102, 32, 116, 104, 101, 32, 116, 101, 115, 116, 32, 116, 117, 98, 101, 115, 32, 69, 88, 80, 76, 79, 68, 69, 68, 33, 0 };
+const uint8_t msgtxt_15[] = {
+84, 104, 105, 115, 32, 103, 108, 97, 115, 115, 32, 99, 97, 110, 39, 116, 32, 98, 101, 32, 98, 114, 111, 107, 101, 110, 0 };
+const uint8_t msgtxt_16[] = {
+46, 0 };
+const uint8_t msgtxt_17[] = {
+84, 104, 101, 121, 32, 97, 112, 112, 101, 97, 114, 32, 116, 111, 32, 98, 101, 32, 109, 105, 120, 97, 98, 108, 101, 46, 0 };
+const uint8_t msgtxt_18[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 119, 114, 105, 116, 116, 101, 110, 32, 116, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_19[] = {
+65, 32, 115, 101, 112, 117, 108, 99, 104, 114, 97, 108, 32, 118, 111, 105, 99, 101, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_20[] = {
+79, 75, 0 };
+const uint8_t msgtxt_21[] = {
+83, 97, 102, 101, 39, 115, 32, 99, 111, 109, 98, 105, 110, 97, 116, 105, 111, 110, 32, 108, 111, 99, 107, 32, 105, 115, 32, 110, 117, 109, 98, 101, 114, 101, 100, 32, 102, 114, 111, 109, 32, 51, 51, 32, 116, 111, 32, 51, 56, 46, 0 };
+const uint8_t msgtxt_22[] = {
+82, 105, 110, 103, 32, 103, 108, 111, 119, 115, 32, 98, 114, 105, 101, 102, 108, 121, 32, 38, 32, 100, 111, 111, 114, 32, 118, 97, 110, 105, 115, 104, 101, 115, 0 };
+const uint8_t msgtxt_23[] = {
+79, 85, 67, 72, 0 };
+const uint8_t msgtxt_24[] = {
+65, 32, 115, 105, 103, 110, 32, 104, 101, 114, 101, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_25[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 109, 97, 110, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_26[] = {
+87, 101, 97, 114, 105, 110, 103, 32, 97, 32, 115, 97, 112, 112, 104, 105, 114, 101, 32, 114, 105, 110, 103, 0 };
+const uint8_t msgtxt_27[] = {
+73, 32, 115, 108, 105, 100, 101, 32, 98, 97, 99, 107, 32, 100, 111, 119, 110, 0 };
+const uint8_t msgtxt_28[] = {
+65, 32, 98, 101, 97, 109, 32, 111, 102, 32, 108, 105, 103, 104, 116, 32, 115, 104, 105, 110, 101, 115, 32, 111, 110, 32, 103, 114, 97, 118, 101, 0 };
+const uint8_t msgtxt_29[] = {
+80, 105, 110, 115, 32, 102, 97, 108, 108, 32, 111, 117, 116, 32, 111, 102, 32, 100, 111, 108, 108, 0 };
+const uint8_t msgtxt_30[] = {
+80, 108, 97, 113, 117, 101, 32, 115, 97, 121, 115, 58, 32, 34, 115, 97, 102, 101, 32, 45, 45, 62, 32, 51, 56, 32, 51, 51, 34, 0 };
+const uint8_t msgtxt_31[] = {
+84, 104, 105, 115, 32, 103, 114, 65, 118, 101, 32, 114, 101, 115, 101, 114, 118, 101, 100, 32, 102, 111, 114, 32, 121, 111, 117, 33, 0 };
+const uint8_t msgtxt_32[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 67, 76, 65, 80, 32, 79, 70, 32, 84, 72, 85, 78, 68, 69, 82, 33, 0 };
+const uint8_t msgtxt_33[] = {
+74, 117, 45, 74, 117, 32, 109, 97, 110, 32, 115, 97, 121, 115, 58, 34, 77, 121, 32, 98, 97, 103, 32, 105, 115, 32, 110, 111, 119, 32, 121, 111, 117, 114, 115, 33, 32, 73, 116, 115, 32, 109, 97, 103, 105, 99, 32, 119, 105, 108, 108, 32, 104, 101, 108, 112, 32, 121, 111, 117, 10, 32, 45, 67, 82, 65, 67, 75, 45, 32, 116, 104, 101, 32, 99, 117, 114, 115, 101, 33, 34, 46, 0 };
+const uint8_t msgtxt_34[] = {
+72, 85, 82, 82, 65, 72, 33, 32, 76, 111, 111, 107, 32, 119, 104, 111, 32, 105, 115, 32, 105, 110, 32, 116, 104, 101, 32, 114, 111, 111, 109, 33, 0 };
+const uint8_t msgtxt_35[] = {
+73, 39, 109, 32, 110, 111, 119, 32, 52, 32, 102, 101, 101, 116, 32, 116, 97, 108, 108, 33, 0 };
+const uint8_t msgtxt_36[] = {
+73, 116, 39, 115, 32, 109, 117, 99, 104, 32, 116, 111, 32, 104, 101, 97, 118, 121, 32, 116, 111, 32, 76, 73, 70, 84, 33, 0 };
+const uint8_t msgtxt_37[] = {
+73, 39, 109, 32, 116, 111, 111, 32, 98, 105, 103, 0 };
+const uint8_t msgtxt_38[] = {
+89, 111, 117, 32, 115, 116, 97, 114, 116, 108, 101, 100, 32, 109, 101, 100, 105, 117, 109, 32, 38, 32, 115, 104, 101, 32, 118, 97, 110, 105, 115, 104, 101, 100, 0 };
+const uint8_t msgtxt_39[] = {
+79, 110, 32, 119, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_40[] = {
+77, 97, 105, 100, 32, 99, 104, 97, 115, 101, 100, 32, 109, 101, 32, 119, 105, 116, 104, 32, 98, 114, 111, 111, 109, 32, 102, 111, 114, 32, 116, 114, 97, 99, 107, 105, 110, 103, 32, 115, 111, 111, 116, 32, 116, 104, 114, 111, 117, 103, 104, 32, 116, 104, 101, 32, 66, 97, 108, 108, 45, 10, 114, 111, 111, 109, 46, 32, 73, 32, 119, 111, 110, 100, 101, 114, 32, 119, 104, 101, 114, 101, 32, 73, 32, 97, 109, 63, 0 };
+const uint8_t msgtxt_41[] = {
+83, 119, 101, 101, 112, 32, 112, 111, 112, 115, 32, 111, 117, 116, 44, 32, 116, 104, 97, 110, 107, 115, 32, 109, 101, 44, 32, 104, 97, 110, 100, 115, 32, 109, 101, 32, 97, 32, 112, 105, 101, 99, 101, 32, 111, 102, 32, 112, 97, 112, 101, 114, 32, 116, 104, 101, 110, 10, 118, 97, 110, 105, 115, 104, 101, 115, 33, 0 };
+const uint8_t msgtxt_42[] = {
+65, 115, 32, 73, 32, 100, 117, 115, 116, 32, 111, 102, 32, 116, 104, 101, 32, 73, 100, 111, 108, 32, 105, 116, 32, 98, 101, 103, 105, 110, 115, 32, 116, 111, 32, 103, 108, 111, 119, 33, 0 };
+const uint8_t msgtxt_43[] = {
+72, 101, 39, 115, 32, 119, 101, 97, 114, 105, 110, 103, 32, 97, 32, 114, 97, 98, 98, 105, 116, 39, 115, 32, 102, 111, 111, 116, 0 };
+const uint8_t msgtxt_44[] = {
+46, 0 };
+const uint8_t msgtxt_45[] = {
+72, 69, 76, 80, 32, 77, 69, 44, 32, 73, 39, 109, 32, 115, 116, 117, 99, 107, 33, 0 };
+const uint8_t msgtxt_46[] = {
+76, 117, 99, 107, 32, 119, 97, 115, 110, 39, 116, 32, 119, 105, 116, 104, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_47[] = {
+68, 111, 108, 108, 32, 108, 111, 111, 107, 115, 32, 108, 105, 107, 101, 32, 67, 111, 117, 110, 116, 32, 67, 114, 105, 115, 116, 111, 46, 32, 84, 104, 101, 114, 101, 39, 114, 101, 32, 112, 105, 110, 115, 32, 105, 110, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_48[] = {
+46, 0 };
+const uint8_t msgtxt_49[] = {
+66, 105, 114, 100, 32, 115, 97, 121, 115, 58, 32, 34, 97, 115, 107, 32, 102, 111, 114, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 32, 53, 44, 32, 45, 84, 72, 69, 32, 67, 79, 85, 78, 84, 45, 32, 97, 116, 32, 121, 111, 117, 114, 10, 32, 102, 97, 118, 111, 114, 105, 116, 101, 32, 99, 111, 109, 112, 117, 116, 101, 114, 32, 100, 101, 97, 108, 101, 114, 46, 32, 73, 116, 32, 119, 105, 108, 108, 32, 98, 101, 32, 76, 79, 86, 69, 32, 65, 84, 32, 70, 73, 82, 83, 84, 32, 66, 89, 84, 69, 33, 34, 10, 0 };
+const uint8_t msgtxt_50[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 115, 111, 109, 101, 32, 115, 111, 117, 112, 32, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_51[] = {
+73, 32, 115, 101, 101, 32, 97, 32, 104, 111, 108, 101, 32, 117, 110, 100, 101, 114, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_52[] = {
+78, 97, 105, 108, 115, 32, 119, 101, 114, 101, 32, 114, 117, 115, 116, 101, 100, 32, 98, 117, 116, 32, 73, 32, 103, 111, 116, 32, 116, 104, 101, 109, 32, 111, 117, 116, 46, 0 };
+const uint8_t msgtxt_53[] = {
+73, 116, 39, 115, 32, 104, 65, 114, 100, 32, 119, 111, 114, 107, 32, 98, 117, 116, 32, 105, 116, 32, 115, 101, 101, 109, 115, 32, 116, 111, 32, 98, 101, 32, 99, 111, 109, 105, 110, 103, 32, 108, 111, 111, 115, 101, 0 };
+const uint8_t msgtxt_54[] = {
+73, 32, 104, 101, 97, 114, 32, 115, 116, 114, 97, 110, 103, 101, 32, 115, 111, 117, 110, 100, 115, 44, 32, 97, 115, 32, 105, 102, 32, 115, 111, 109, 101, 111, 110, 101, 32, 119, 101, 114, 101, 32, 109, 111, 97, 110, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_55[] = {
+73, 39, 118, 101, 32, 103, 111, 116, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_56[] = {
+72, 101, 97, 118, 121, 32, 100, 117, 116, 121, 32, 101, 120, 104, 97, 117, 115, 116, 32, 102, 97, 110, 32, 99, 111, 109, 101, 115, 32, 111, 110, 32, 38, 32, 115, 117, 99, 107, 115, 32, 109, 101, 32, 117, 112, 33, 0 };
+const uint8_t msgtxt_57[] = {
+46, 0 };
+const uint8_t msgtxt_58[] = {
+115, 97, 121, 115, 58, 32, 34, 83, 65, 89, 32, 90, 65, 80, 32, 32, 32, 116, 111, 32, 114, 101, 115, 116, 111, 114, 101, 32, 115, 111, 109, 101, 111, 110, 101, 32, 99, 104, 97, 110, 103, 101, 100, 32, 116, 111, 32, 115, 116, 111, 110, 101, 33, 34, 0 };
+const uint8_t msgtxt_59[] = {
+83, 116, 97, 116, 117, 101, 32, 105, 115, 32, 109, 97, 100, 101, 32, 111, 102, 32, 115, 116, 111, 110, 101, 0 };
+const uint8_t msgtxt_60[] = {
+73, 32, 104, 101, 97, 114, 32, 110, 111, 116, 104, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_61[] = {
+119, 111, 110, 39, 116, 32, 98, 117, 100, 103, 101, 33, 0 };
+const uint8_t msgtxt_62[] = {
+73, 39, 108, 108, 32, 110, 101, 101, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 116, 111, 32, 112, 114, 121, 32, 105, 116, 32, 111, 102, 102, 32, 116, 104, 101, 32, 119, 97, 108, 108, 33, 0 };
+const uint8_t msgtxt_63[] = {
+73, 116, 39, 115, 32, 97, 32, 98, 111, 111, 107, 32, 111, 110, 32, 114, 101, 109, 111, 118, 105, 110, 103, 32, 99, 117, 114, 115, 101, 115, 46, 32, 83, 97, 121, 115, 58, 32, 34, 87, 105, 116, 104, 32, 107, 110, 105, 102, 101, 32, 105, 110, 32, 104, 97, 110, 100, 32, 121, 111, 117, 10, 116, 97, 107, 101, 32, 97, 32, 115, 116, 97, 110, 100, 46, 32, 67, 105, 114, 99, 108, 101, 32, 99, 111, 102, 102, 105, 110, 32, 97, 110, 100, 46, 46, 46, 34, 32, 84, 104, 101, 32, 114, 101, 115, 116, 32, 111, 102, 32, 116, 104, 101, 32, 112, 97, 103, 101, 32, 105, 115, 10, 109, 105, 115, 115, 105, 110, 103, 33, 33, 33, 0 };
+const uint8_t msgtxt_64[] = {
+73, 116, 115, 32, 118, 101, 114, 121, 32, 100, 97, 114, 107, 44, 32, 116, 104, 101, 32, 111, 110, 108, 121, 32, 108, 105, 103, 104, 116, 32, 105, 115, 32, 102, 114, 111, 109, 32, 116, 104, 101, 32, 105, 100, 111, 108, 46, 0 };
+const uint8_t msgtxt_65[] = {
+84, 104, 97, 116, 39, 115, 32, 105, 108, 108, 101, 103, 97, 108, 33, 0 };
+const uint8_t msgtxt_66[] = {
+68, 111, 117, 98, 108, 101, 32, 98, 117, 98, 98, 108, 101, 32, 116, 111, 105, 108, 32, 38, 32, 116, 114, 111, 117, 98, 108, 101, 32, 116, 104, 101, 32, 101, 110, 99, 65, 110, 116, 65, 116, 105, 111, 110, 115, 32, 65, 114, 101, 32, 65, 98, 111, 117, 116, 32, 116, 111, 32, 112, 101, 65, 107, 33, 0 };
+const uint8_t msgtxt_67[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 110, 32, 97, 110, 116, 105, 113, 117, 101, 32, 104, 97, 109, 109, 101, 114, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_68[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 67, 108, 97, 112, 32, 111, 102, 32, 84, 104, 117, 110, 100, 101, 114, 32, 38, 32, 116, 104, 101, 110, 32, 115, 117, 100, 100, 101, 110, 108, 121, 32, 116, 104, 101, 32, 115, 116, 111, 110, 101, 32, 115, 116, 97, 116, 117, 101, 10, 98, 101, 103, 105, 110, 115, 32, 116, 111, 32, 99, 114, 97, 99, 107, 46, 32, 73, 32, 109, 97, 121, 32, 98, 101, 32, 105, 110, 32, 116, 114, 111, 117, 98, 108, 101, 32, 110, 111, 119, 44, 32, 116, 104, 101, 114, 101, 39, 115, 32, 115, 111, 109, 101, 111, 110, 101, 32, 105, 110, 10, 116, 104, 101, 32, 114, 111, 111, 109, 32, 119, 105, 116, 104, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_69[] = {
+76, 111, 111, 107, 115, 32, 97, 108, 109, 111, 115, 116, 32, 108, 105, 107, 101, 32, 108, 101, 109, 111, 110, 97, 100, 101, 46, 32, 89, 117, 109, 109, 121, 33, 0 };
+const uint8_t msgtxt_70[] = {
+89, 111, 117, 39, 118, 101, 32, 98, 101, 101, 110, 32, 116, 117, 114, 110, 101, 100, 32, 105, 110, 116, 111, 32, 97, 32, 98, 114, 111, 111, 109, 115, 116, 105, 99, 107, 32, 38, 32, 97, 32, 119, 105, 116, 99, 104, 32, 114, 105, 100, 101, 115, 32, 111, 102, 102, 32, 111, 110, 32, 121, 111, 117, 33, 0 };
+const uint8_t msgtxt_71[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 119, 105, 116, 99, 104, 39, 115, 32, 98, 114, 101, 119, 32, 116, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_72[] = {
+67, 101, 108, 108, 32, 100, 111, 111, 114, 32, 115, 108, 97, 109, 115, 32, 115, 104, 117, 116, 0 };
+const uint8_t msgtxt_73[] = {
+89, 111, 117, 39, 118, 101, 32, 98, 101, 101, 110, 32, 115, 112, 114, 117, 110, 103, 0 };
+const uint8_t msgtxt_74[] = {
+46, 46, 46, 119, 97, 118, 101, 32, 116, 104, 101, 32, 115, 116, 105, 99, 107, 32, 97, 110, 100, 32, 104, 111, 108, 100, 32, 116, 104, 101, 32, 108, 97, 109, 112, 32, 97, 110, 100, 32, 100, 111, 110, 39, 116, 32, 102, 111, 114, 103, 101, 116, 32, 116, 111, 32, 121, 101, 108, 108, 10, 34, 67, 72, 65, 78, 84, 34, 33, 32, 79, 104, 32, 121, 101, 115, 44, 32, 116, 111, 32, 104, 101, 108, 112, 32, 105, 116, 32, 115, 117, 99, 99, 101, 101, 100, 44, 32, 97, 32, 100, 111, 108, 108, 32, 121, 111, 117, 39, 108, 108, 32, 110, 101, 101, 100, 46, 46, 46, 0 };
+const uint8_t msgtxt_75[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 58, 52, 44, 32, 34, 86, 79, 79, 68, 79, 79, 32, 67, 65, 83, 84, 76, 69, 34, 32, 98, 121, 32, 65, 108, 101, 120, 105, 115, 32, 65, 68, 65, 77, 83, 46, 10, 68, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 32, 97, 108, 108, 32, 77, 79, 77, 83, 33, 0 };
+const uint8_t msgtxt_76[] = {
+104, 111, 119, 63, 0 };
+const uint8_t msgtxt_77[] = {
+73, 116, 32, 97, 112, 112, 101, 97, 114, 115, 32, 115, 116, 117, 99, 107, 32, 116, 111, 32, 116, 104, 101, 32, 102, 108, 111, 111, 114, 33, 0 };
+const uint8_t msgtxt_78[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 110, 111, 32, 114, 111, 111, 109, 32, 105, 110, 32, 116, 104, 101, 114, 101, 32, 102, 111, 114, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_79[] = {
+77, 121, 32, 105, 100, 111, 108, 32, 97, 99, 116, 101, 100, 32, 115, 116, 114, 97, 110, 103, 101, 0 };
+const uint8_t msgtxt_80[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 99, 111, 110, 116, 97, 105, 110, 101, 114, 46, 0 };
+const uint8_t msgtxt_81[] = {
+83, 111, 109, 101, 32, 100, 117, 115, 116, 32, 102, 101, 108, 108, 32, 111, 102, 102, 32, 105, 116, 32, 97, 110, 100, 32, 105, 116, 32, 103, 108, 111, 119, 101, 100, 32, 98, 114, 105, 101, 102, 108, 121, 46, 0 };
+const uint8_t msgtxt_82[] = {
+73, 116, 115, 32, 118, 101, 114, 121, 32, 102, 97, 105, 110, 116, 46, 0 };
+const uint8_t msgtxt_83[] = {
+73, 116, 115, 32, 109, 117, 99, 104, 32, 108, 111, 117, 100, 101, 114, 32, 117, 112, 32, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_84[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 98, 111, 111, 107, 32, 116, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_85[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 115, 116, 105, 99, 107, 32, 116, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_86[] = {
+66, 111, 121, 32, 105, 116, 32, 108, 111, 111, 107, 115, 32, 100, 117, 115, 116, 121, 46, 0 };
+const uint8_t msgtxt_87[] = {
+73, 116, 115, 32, 103, 108, 111, 119, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_88[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 104, 111, 98, 98, 121, 32, 121, 111, 117, 32, 104, 97, 118, 101, 0 };
+const uint8_t msgtxt_89[] = {
+67, 104, 101, 99, 107, 32, 111, 117, 116, 32, 116, 104, 101, 32, 102, 105, 114, 101, 112, 108, 97, 99, 101, 46, 0 };
+const uint8_t msgtxt_90[] = {
+73, 116, 115, 32, 101, 109, 112, 116, 121, 46, 0 };
+const uint8_t msgtxt_91[] = {
+73, 32, 104, 101, 97, 114, 32, 115, 111, 109, 101, 111, 110, 101, 32, 109, 117, 109, 98, 108, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_92[] = {
+46, 0 };
+const uint8_t msgtxt_93[] = {
+83, 97, 119, 32, 103, 114, 97, 116, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_94[] = {
+73, 32, 104, 97, 118, 101, 110, 39, 116, 32, 103, 111, 116, 32, 97, 32, 107, 110, 105, 102, 101, 33, 0 };
+const uint8_t msgtxt_95[] = {
+73, 110, 115, 99, 114, 105, 112, 116, 105, 111, 110, 32, 111, 110, 32, 114, 105, 110, 103, 32, 115, 97, 121, 115, 58, 32, 34, 87, 65, 86, 69, 32, 77, 69, 33, 34, 0 };
+const uint8_t msgtxt_96[] = {
+77, 101, 100, 105, 117, 109, 32, 97, 112, 112, 101, 97, 114, 115, 44, 32, 115, 97, 121, 115, 58, 32, 34, 75, 101, 101, 112, 32, 97, 32, 103, 111, 111, 100, 32, 108, 117, 99, 107, 32, 99, 104, 97, 114, 109, 32, 111, 110, 32, 121, 111, 117, 32, 38, 32, 121, 111, 117, 114, 10, 102, 114, 105, 101, 110, 100, 46, 32, 73, 32, 97, 108, 115, 111, 32, 115, 101, 101, 32, 97, 32, 45, 109, 111, 118, 105, 110, 103, 45, 32, 98, 97, 103, 32, 104, 101, 108, 112, 105, 110, 103, 32, 121, 111, 117, 32, 116, 104, 114, 111, 117, 103, 104, 32, 97, 32, 116, 105, 103, 104, 116, 10, 115, 113, 117, 101, 101, 122, 101, 33, 34, 0 };
+const uint8_t msgtxt_97[] = {
+73, 116, 32, 119, 105, 108, 108, 32, 116, 97, 107, 101, 32, 115, 111, 109, 101, 32, 115, 116, 114, 111, 110, 103, 32, 109, 97, 103, 105, 99, 32, 116, 111, 32, 103, 101, 116, 32, 109, 101, 32, 116, 104, 114, 111, 117, 103, 104, 32, 116, 104, 97, 116, 33, 0 };
+const uint8_t msgtxt_98[] = {
+85, 115, 101, 32, 97, 32, 110, 117, 109, 98, 101, 114, 33, 0 };
+const uint8_t msgtxt_99[] = {
+75, 110, 105, 102, 101, 32, 109, 97, 100, 101, 32, 110, 111, 32, 105, 109, 112, 114, 101, 115, 115, 105, 111, 110, 32, 111, 110, 32, 105, 116, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+       msgtxt_92,
+       msgtxt_93,
+       msgtxt_94,
+       msgtxt_95,
+       msgtxt_96,
+       msgtxt_97,
+       msgtxt_98,
+       msgtxt_99,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  25    */
+       132, 25, 
+       2, 10, 
+       13, 
+/* AUTO  100   */
+       181, 
+       4, 9, 2, 10, 12, 14, 0, 10, 0, 19, 
+       8, 72, 
+/* AUTO  100   */
+       176, 
+       7, 9, 13, 19, 0, 10, 0, 19, 
+       72, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  45    */
+       136, 45, 
+       4, 19, 14, 14, 
+       28, 
+/* AUTO  30    */
+       143, 30, 
+       3, 36, 6, 7, 0, 25, 
+       54, 64, 14, 73, 
+/* AUTO  0     */
+       193, 
+       24, 31, 
+/* AUTO  30    */
+       136, 30, 
+       3, 36, 1, 7, 
+       14, 
+/* AUTO  0     */
+/* AUTO  100   */
+       169, 
+       4, 15, 8, 15, 
+       57, 76, 
+/* AUTO  50    */
+       141, 50, 
+       1, 21, 0, 11, 4, 10, 
+       40, 54, 
+/* AUTO  100   */
+       169, 
+       4, 3, 8, 15, 
+       57, 76, 
+/* AUTO  0     */
+/* AUTO  100   */
+       168, 
+       4, 18, 13, 35, 
+       104, 
+/* AUTO  35    */
+       136, 35, 
+       4, 14, 13, 35, 
+       104, 
+/* AUTO  35    */
+       136, 35, 
+       4, 15, 13, 35, 
+       104, 
+/* AUTO  100   */
+       165, 
+       4, 25, 
+       46, 63, 
+/* AUTO  100   */
+       169, 
+       9, 7, 0, 7, 
+       125, 58, 
+/* AUTO  7     */
+       133, 7, 
+       1, 43, 
+       129, 131, 
+/* AUTO  35    */
+       132, 35, 
+       3, 29, 
+       141, 
+/* AUTO  0     */
+/* AUTO  0     */
+};
+const uint8_t actions[] = {
+/* GET   SWE   */
+       4, 10, 52, 
+       2, 35, 
+       111, 
+/* GET   GRA   */
+       9, 10, 20, 
+       3, 59, 0, 59, 
+       20, 52, 
+/* WAV   BAG   */
+       23, 24, 44, 
+       4, 8, 14, 31, 3, 26, 0, 31, 0, 61, 
+       32, 88, 88, 72, 
+/* OPE   CEL   */
+       4, 38, 67, 
+       6, 14, 
+       5, 
+/* GO    CEL   */
+       15, 1, 67, 
+       2, 56, 5, 14, 0, 21, 
+       70, 122, 54, 64, 
+/* LOO   WRI   */
+       4, 42, 25, 
+       3, 2, 
+       18, 
+/* GET   INV   */
+       0, 10, 10, 
+       66, 
+/* BRE   WIN   */
+       4, 32, 15, 
+       2, 19, 
+       15, 
+/* MOV   KET   */
+       13, 29, 11, 
+       2, 5, 5, 6, 0, 6, 
+       53, 20, 
+/* GET   BAL   */
+       5, 10, 22, 
+       2, 18, 
+       19, 2, 
+/* GET   CLO   */
+       8, 10, 16, 
+       2, 14, 0, 14, 
+       52, 
+/* LOO   GRA   */
+       10, 42, 20, 
+       2, 15, 14, 14, 
+       12, 24, 31, 
+/* GET   CLO   */
+       13, 10, 16, 
+       14, 14, 4, 19, 0, 14, 
+       52, 20, 
+/* LOO   GRA   */
+       9, 42, 20, 
+       2, 15, 13, 14, 
+       24, 31, 
+/* GO    STA   */
+       10, 1, 43, 
+       2, 8, 0, 20, 
+       70, 54, 64, 
+/* LOO   SAF   */
+       4, 42, 28, 
+       2, 37, 
+       21, 
+/* LOO   SAF   */
+       13, 42, 28, 
+       2, 34, 0, 47, 14, 47, 
+       53, 117, 
+/* OPE   FLU   */
+       18, 38, 35, 
+       2, 12, 0, 12, 0, 13, 0, 11, 
+       72, 20, 53, 
+/* CLO   FLU   */
+       18, 39, 35, 
+       2, 13, 0, 12, 0, 13, 0, 11, 
+       72, 20, 59, 
+/* GO    HOL   */
+       11, 1, 12, 
+       2, 6, 0, 16, 
+       54, 56, 70, 64, 
+/* GO    FLU   */
+       15, 1, 35, 
+       4, 15, 2, 13, 0, 14, 
+       56, 54, 70, 64, 
+/* LOO   LEA   */
+       4, 42, 87, 
+       3, 60, 
+       18, 
+/* LOO   BAL   */
+       15, 42, 22, 
+       4, 6, 2, 18, 0, 4, 
+       10, 54, 76, 3, 
+/* AUTO  0     */
+/* GO    FIR   */
+       9, 1, 34, 
+       2, 20, 0, 15, 
+       54, 76, 
+/* OPE   DOO   */
+       4, 38, 17, 
+       4, 13, 
+       20, 
+/* WAV   RIN   */
+       17, 24, 32, 
+       2, 24, 1, 25, 0, 28, 0, 24, 
+       72, 22, 
+/* GO    CHU   */
+       10, 1, 18, 
+       2, 28, 0, 8, 
+       20, 54, 76, 
+/* GET   RIN   */
+       13, 10, 32, 
+       2, 27, 14, 25, 0, 25, 
+       52, 20, 
+/* DRI   BRE   */
+       7, 48, 29, 
+       3, 16, 
+       32, 88, 120, 63, 
+/* OPE   COF   */
+       13, 38, 8, 
+       2, 17, 0, 17, 0, 27, 
+       72, 20, 
+/* CLO   COF   */
+       13, 39, 8, 
+       2, 27, 0, 17, 0, 27, 
+       72, 20, 
+/* GET   ARM   */
+       5, 10, 30, 
+       2, 57, 
+       5, 36, 
+/* BRE   BAL   */
+       7, 32, 22, 
+       4, 6, 
+       61, 28, 31, 63, 
+/* OPE   DOO   */
+       5, 38, 17, 
+       2, 24, 
+       5, 111, 
+/* GET   BAG   */
+       13, 10, 44, 
+       3, 26, 13, 29, 0, 26, 
+       52, 20, 
+/* REA   WRI   */
+       12, 35, 25, 
+       3, 2, 3, 4, 8, 15, 
+       30, 
+/* GO    CHU   */
+       9, 1, 18, 
+       2, 28, 0, 8, 
+       54, 76, 
+/* GO    CHU   */
+       4, 1, 18, 
+       2, 30, 
+       27, 
+/* LOO   BAG   */
+       12, 42, 44, 
+       3, 26, 14, 52, 13, 54, 
+       134, 
+/* CIR   COF   */
+       11, 45, 8, 
+       0, 0, 4, 1, 
+       73, 20, 6, 88, 
+/* AUTO  0     */
+       211, 
+       14, 32, 3, 9, 1, 0, 0, 3, 
+       58, 32, 56, 114, 
+/* LOO   CHE   */
+       4, 42, 42, 
+       3, 40, 
+       119, 
+/* GET   HEA   */
+       23, 10, 40, 
+       9, 0, 3, 33, 0, 3, 0, 37, 2, 3, 
+       52, 53, 20, 67, 
+/* OPE   SAF   */
+       8, 38, 28, 
+       4, 5, 2, 34, 
+       20, 
+/* LOO   SAF   */
+       13, 42, 28, 
+       4, 5, 2, 34, 13, 47, 
+       20, 140, 
+/* GET   HEA   */
+       13, 10, 40, 
+       8, 0, 3, 3, 0, 3, 
+       52, 20, 
+/* TUR   38    */
+       13, 40, 37, 
+       9, 1, 2, 37, 0, 1, 
+       58, 20, 
+/* TUR   33    */
+       17, 40, 39, 
+       8, 1, 2, 37, 0, 34, 0, 37, 
+       72, 20, 
+/* LOO   BAG   */
+       17, 42, 44, 
+       3, 26, 14, 54, 14, 52, 13, 29, 
+       134, 135, 
+/* REA   BOO   */
+       4, 35, 63, 
+       3, 52, 
+       113, 
+/* YEL   MED   */
+       15, 64, 23, 
+       14, 23, 4, 6, 0, 23, 
+       20, 85, 53, 146, 
+/* GO    CHI   */
+       10, 1, 24, 
+       2, 13, 0, 14, 
+       54, 56, 76, 
+/* REA   LAB   */
+       4, 35, 19, 
+       3, 38, 
+       17, 
+/* DRI   CHE   */
+       19, 48, 42, 
+       3, 40, 0, 41, 0, 22, 0, 38, 
+       32, 73, 72, 59, 
+/* AUTO  0     */
+       199, 
+       0, 40, 
+       59, 88, 88, 35, 
+/* YEL   ZAP   */
+       15, 64, 65, 
+       3, 53, 0, 53, 0, 29, 
+       59, 53, 73, 85, 
+/* AUTO  0     */
+       193, 
+       118, 141, 
+/* SAV   GAM   */
+       0, 34, 49, 
+       71, 
+/* GET   KET   */
+       5, 10, 11, 
+       2, 5, 
+       5, 36, 
+/* GO    DOO   */
+       6, 1, 17, 
+       2, 22, 
+       5, 37, 147, 
+/* INV   ANY   */
+       0, 44, 0, 
+       66, 
+/* GET   HEA   */
+       9, 10, 40, 
+       9, 0, 3, 3, 
+       111, 112, 
+/* DRO   FOO   */
+       4, 18, 47, 
+       1, 32, 
+       39, 
+/* ON    MAN   */
+       14, 23, 53, 
+       3, 32, 0, 32, 2, 27, 
+       20, 32, 59, 
+/* GET   PIN   */
+       5, 10, 45, 
+       2, 44, 
+       5, 111, 
+/* PRE   SWE   */
+       18, 27, 52, 
+       4, 18, 2, 35, 0, 35, 0, 51, 
+       41, 55, 74, 
+/* REA   PAP   */
+       4, 35, 51, 
+       3, 51, 
+       108, 
+/* LOO   DOL   */
+       4, 42, 55, 
+       3, 44, 
+       47, 
+/* LOO   COF   */
+       7, 42, 8, 
+       2, 27, 
+       24, 1, 73, 25, 
+/* AUTO  0     */
+       196, 
+       14, 32, 
+       43, 
+/* AUTO  0     */
+       196, 
+       14, 25, 
+       26, 
+/* YEL   CHA   */
+       23, 64, 64, 
+       4, 1, 3, 9, 3, 14, 8, 6, 3, 44, 
+       73, 32, 88, 29, 
+/* AUTO  0     */
+       199, 
+       0, 65, 
+       53, 76, 34, 63, 
+/* GET   NAI   */
+       9, 10, 75, 
+       3, 42, 0, 42, 
+       20, 52, 
+/* GO    POT   */
+       4, 1, 66, 
+       2, 56, 
+       20, 
+/* LOO   CHE   */
+       4, 42, 42, 
+       3, 38, 
+       17, 
+/* LOO   POT   */
+       4, 42, 66, 
+       3, 16, 
+       121, 
+/* GET   FOO   */
+       13, 10, 47, 
+       14, 32, 2, 27, 0, 32, 
+       52, 20, 
+/* GET   FOO   */
+       9, 10, 47, 
+       3, 32, 0, 32, 
+       52, 20, 
+/* GO    WIN   */
+       10, 1, 15, 
+       2, 10, 0, 22, 
+       54, 20, 76, 
+/* DUS   IDO   */
+       14, 25, 9, 
+       3, 43, 0, 9, 0, 43, 
+       42, 72, 76, 
+/* MOV   KET   */
+       12, 29, 11, 
+       2, 6, 0, 6, 2, 6, 
+       59, 
+/* LOO   KET   */
+       14, 42, 11, 
+       2, 5, 4, 3, 14, 6, 
+       20, 51, 50, 
+/* CLO   DOO   */
+       0, 39, 17, 
+       111, 
+/* DRI   SOU   */
+       9, 48, 2, 
+       2, 5, 0, 45, 
+       20, 55, 
+/* WAV   STI   */
+       7, 24, 61, 
+       3, 44, 
+       73, 20, 6, 88, 
+/* AUTO  0     */
+       211, 
+       3, 9, 4, 1, 8, 3, 0, 6, 
+       88, 32, 116, 58, 
+/* SAW   GRA   */
+       15, 50, 20, 
+       2, 48, 1, 49, 0, 48, 
+       103, 20, 73, 55, 
+/* AUTO  0     */
+       202, 
+       0, 50, 0, 59, 
+       53, 105, 74, 
+/* PRE   BUT   */
+       10, 27, 59, 
+       2, 50, 0, 18, 
+       106, 54, 76, 
+/* QUI   ANY   */
+       0, 47, 0, 
+       63, 
+/* GO    CRA   */
+       10, 1, 77, 
+       2, 31, 0, 23, 
+       20, 54, 76, 
+/* LOO   STA   */
+       4, 42, 43, 
+       3, 53, 
+       109, 
+/* LIS   ANY   */
+       4, 56, 0, 
+       3, 29, 
+       33, 
+/* GET   HAM   */
+       9, 10, 57, 
+       3, 47, 0, 47, 
+       52, 20, 
+/* GET   HAM   */
+       18, 10, 57, 
+       2, 34, 9, 5, 0, 47, 0, 5, 
+       52, 20, 58, 
+/* REA   PAG   */
+       4, 35, 89, 
+       3, 64, 
+       124, 
+/* WAV   ANY   */
+       1, 24, 0, 
+       20, 6, 
+/* SHR   ANY   */
+       0, 54, 0, 
+       126, 
+/* REA   WRI   */
+       9, 35, 25, 
+       3, 2, 12, 4, 
+       5, 4, 
+/* OPE   BAG   */
+       8, 38, 44, 
+       13, 29, 3, 26, 
+       20, 
+/* LOO   CEL   */
+       4, 42, 67, 
+       4, 11, 
+       10, 
+/* MOV   ARM   */
+       4, 29, 30, 
+       3, 57, 
+       20, 
+/* GET   BAG   */
+       4, 10, 44, 
+       2, 26, 
+       127, 
+/* REA   WRI   */
+       9, 35, 25, 
+       3, 2, 3, 4, 
+       5, 11, 
+/* GO    LED   */
+       8, 1, 70, 
+       4, 9, 2, 1, 
+       49, 
+/* LIS   ANY   */
+       9, 56, 0, 
+       4, 15, 13, 35, 
+       104, 132, 
+/* LIS   ANY   */
+       9, 56, 0, 
+       13, 35, 4, 14, 
+       104, 133, 
+/* GO    COF   */
+       4, 1, 8, 
+       2, 27, 
+       128, 
+/* GET   SOU   */
+       4, 10, 2, 
+       2, 5, 
+       130, 
+/* GO    HOL   */
+       15, 1, 12, 
+       2, 62, 0, 6, 0, 23, 
+       54, 76, 38, 59, 
+/* LOO   RIN   */
+       4, 42, 32, 
+       3, 25, 
+       18, 
+/* CUT   IDO   */
+       9, 69, 9, 
+       3, 43, 3, 0, 
+       129, 131, 
+/* CUT   ANY   */
+       6, 69, 0, 
+       3, 0, 
+       20, 6, 149, 
+/* LOO   BAG   */
+       16, 42, 44, 
+       13, 52, 14, 54, 13, 29, 3, 26, 
+       135, 
+/* GET   BOO   */
+       17, 10, 63, 
+       3, 26, 13, 29, 0, 52, 14, 52, 
+       52, 20, 
+/* GET   BOO   */
+       9, 10, 63, 
+       3, 52, 0, 52, 
+       52, 20, 
+/* GET   STI   */
+       17, 10, 61, 
+       3, 26, 14, 54, 0, 54, 13, 29, 
+       52, 20, 
+/* GET   STI   */
+       9, 10, 61, 
+       3, 54, 0, 54, 
+       52, 20, 
+/* GO    DOO   */
+       9, 1, 17, 
+       2, 41, 0, 19, 
+       54, 76, 
+/* SHA   SWO   */
+       255, 60, 13, 
+       4, 0, 
+/* LOO   IDO   */
+       5, 42, 9, 
+       3, 43, 
+       136, 10, 
+/* LOO   IDO   */
+       4, 42, 9, 
+       3, 9, 
+       137, 
+/* DIG   GRA   */
+       5, 22, 20, 
+       3, 39, 
+       19, 138, 
+/* SAW   ANY   */
+       14, 50, 0, 
+       1, 49, 2, 58, 0, 11, 
+       123, 54, 64, 
+/* LIS   CRY   */
+       4, 56, 81, 
+       4, 9, 
+       49, 
+/* OPE   WIN   */
+       255, 38, 15, 
+       4, 0, 
+/* SLI   ANY   */
+       9, 62, 0, 
+       2, 28, 0, 8, 
+       54, 76, 
+/* LIS   ANY   */
+       4, 56, 0, 
+       2, 35, 
+       45, 
+/* HEL   ANY   */
+       4, 15, 0, 
+       4, 10, 
+       139, 
+/* DAN   ANY   */
+       1, 63, 0, 
+       20, 6, 
+/* YEL   ANY   */
+       2, 64, 0, 
+       20, 85, 6, 
+/* GET   NAI   */
+       22, 10, 75, 
+       2, 46, 1, 47, 0, 46, 0, 45, 0, 42, 
+       102, 72, 74, 
+/* ON    FLO   */
+       9, 23, 74, 
+       1, 32, 0, 32, 
+       53, 20, 
+/* GET   BOA   */
+       22, 10, 56, 
+       3, 45, 0, 45, 9, 8, 0, 48, 0, 8, 
+       52, 53, 58, 
+/* GET   BOA   */
+       9, 10, 56, 
+       3, 45, 0, 45, 
+       52, 20, 
+/* GET   BRE   */
+       0, 10, 29, 
+       130, 
+/* HEL   ANY   */
+       4, 15, 0, 
+       2, 48, 
+       143, 
+/* MIX   CHE   */
+       13, 51, 42, 
+       3, 38, 0, 40, 0, 38, 
+       72, 20, 
+/* HEL   SWE   */
+       4, 15, 52, 
+       2, 35, 
+       126, 
+/* RUB   IDO   */
+       5, 72, 9, 
+       3, 43, 
+       129, 131, 
+/* LOO   ANY   */
+       1, 42, 0, 
+       76, 10, 
+/* CUT   ANY   */
+       5, 69, 0, 
+       6, 0, 
+       5, 144, 
+/* LIS   ANY   */
+       0, 56, 0, 
+       110, 
+/* GET   RIN   */
+       9, 10, 32, 
+       2, 25, 0, 25, 
+       52, 20, 
+/* SMO   POT   */
+       0, 73, 66, 
+       115, 
+/* BRE   TUB   */
+       15, 32, 33, 
+       3, 36, 6, 7, 0, 25, 
+       54, 64, 14, 73, 
+/* SAW   ANY   */
+       5, 50, 0, 
+       1, 49, 
+       20, 6, 
+/* REA   LEA   */
+       5, 35, 87, 
+       3, 60, 
+       20, 9, 
+/* DIG   ANY   */
+       5, 22, 0, 
+       3, 39, 
+       20, 6, 
+/* GO    CRA   */
+       6, 1, 77, 
+       2, 61, 
+       5, 37, 147, 
+/* HEL   ANY   */
+       0, 15, 0, 
+       6, 
+/* OPE   SAF   */
+       4, 38, 28, 
+       2, 37, 
+       21, 
+/* BRE   STA   */
+       13, 32, 43, 
+       3, 53, 0, 53, 0, 63, 
+       20, 72, 
+/* TUR   34    */
+       9, 40, 83, 
+       2, 37, 0, 1, 
+       60, 20, 
+/* TUR   35    */
+       9, 40, 84, 
+       2, 37, 0, 1, 
+       60, 20, 
+/* TUR   36    */
+       9, 40, 85, 
+       2, 37, 0, 1, 
+       60, 20, 
+/* TUR   37    */
+       9, 40, 86, 
+       2, 37, 0, 1, 
+       60, 20, 
+/* REA   RIN   */
+       4, 35, 32, 
+       3, 25, 
+       145, 
+/* OPE   WIN   */
+       4, 38, 15, 
+       2, 19, 
+       111, 
+/* RUB   RIN   */
+       4, 72, 32, 
+       3, 25, 
+       18, 
+/* RUB   ANY   */
+       1, 72, 0, 
+       20, 6, 
+/* TUR   LOC   */
+       4, 40, 69, 
+       2, 37, 
+       148, 
+/* TUR   33    */
+       9, 40, 39, 
+       2, 37, 0, 1, 
+       60, 20, 
+/* TUR   38    */
+       9, 40, 37, 
+       2, 37, 0, 1, 
+       60, 20, 
+/* HUG   DOL   */
+       4, 75, 55, 
+       3, 44, 
+       23, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUT */
+       65, 85, 84,
+       /* GO */
+       71, 79, 32,
+       /* *ENT */
+       197, 78, 84,
+       /* *WAL */
+       215, 65, 76,
+       /* *CLI */
+       195, 76, 73,
+       /* *RUN */
+       210, 85, 78,
+       /* . */
+       46, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /* GET */
+       71, 69, 84,
+       /* *TAK */
+       212, 65, 75,
+       /* *PIC */
+       208, 73, 67,
+       /* *REM */
+       210, 69, 77,
+       /* *PUL */
+       208, 85, 76,
+       /* HEL */
+       72, 69, 76,
+       /* *RES */
+       210, 69, 83,
+       /* . */
+       46, 32, 32,
+       /* DRO */
+       68, 82, 79,
+       /* *PUT */
+       208, 85, 84,
+       /* *LEA */
+       204, 69, 65,
+       /* *THR */
+       212, 72, 82,
+       /* DIG */
+       68, 73, 71,
+       /* ON */
+       79, 78, 32,
+       /* WAV */
+       87, 65, 86,
+       /* DUS */
+       68, 85, 83,
+       /* *CLE */
+       195, 76, 69,
+       /* PRE */
+       80, 82, 69,
+       /* *PUS */
+       208, 85, 83,
+       /* MOV */
+       77, 79, 86,
+       /* *SHO */
+       211, 72, 79,
+       /* *KIC */
+       203, 73, 67,
+       /* BRE */
+       66, 82, 69,
+       /* *SMA */
+       211, 77, 65,
+       /* SAV */
+       83, 65, 86,
+       /* REA */
+       82, 69, 65,
+       /* . */
+       46, 32, 32,
+       /*  */
+       32, 32, 32,
+       /* OPE */
+       79, 80, 69,
+       /* CLO */
+       67, 76, 79,
+       /* TUR */
+       84, 85, 82,
+       /* *DIA */
+       196, 73, 65,
+       /* LOO */
+       76, 79, 79,
+       /* *EXA */
+       197, 88, 65,
+       /* INV */
+       73, 78, 86,
+       /* CIR */
+       67, 73, 82,
+       /* . */
+       46, 32, 32,
+       /* QUI */
+       81, 85, 73,
+       /* DRI */
+       68, 82, 73,
+       /* *EAT */
+       197, 65, 84,
+       /* SAW */
+       83, 65, 87,
+       /* MIX */
+       77, 73, 88,
+       /* HAM */
+       72, 65, 77,
+       /* . */
+       46, 32, 32,
+       /* SHR */
+       83, 72, 82,
+       /* . */
+       46, 32, 32,
+       /* LIS */
+       76, 73, 83,
+       /* *HEA */
+       200, 69, 65,
+       /* STA */
+       83, 84, 65,
+       /*  */
+       32, 32, 32,
+       /* SHA */
+       83, 72, 65,
+       /*  */
+       32, 32, 32,
+       /* SLI */
+       83, 76, 73,
+       /* DAN */
+       68, 65, 78,
+       /* YEL */
+       89, 69, 76,
+       /* *SCR */
+       211, 67, 82,
+       /* *SUM */
+       211, 85, 77,
+       /* *SAY */
+       211, 65, 89,
+       /* *CRY */
+       195, 82, 89,
+       /* CUT */
+       67, 85, 84,
+       /* *STA */
+       211, 84, 65,
+       /*  */
+       32, 32, 32,
+       /* RUB */
+       82, 85, 66,
+       /* SMO */
+       83, 77, 79,
+       /* . */
+       46, 32, 32,
+       /* HUG */
+       72, 85, 71,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89,
+       /* NOR */
+       78, 79, 82,
+       /* SOU */
+       83, 79, 85,
+       /* EAS */
+       69, 65, 83,
+       /* WES */
+       87, 69, 83,
+       /* UP */
+       85, 80, 32,
+       /* DOW */
+       68, 79, 87,
+       /* KNI */
+       75, 78, 73,
+       /* COF */
+       67, 79, 70,
+       /* IDO */
+       73, 68, 79,
+       /* INV */
+       73, 78, 86,
+       /* KET */
+       75, 69, 84,
+       /* HOL */
+       72, 79, 76,
+       /* SWO */
+       83, 87, 79,
+       /* PAT */
+       80, 65, 84,
+       /* WIN */
+       87, 73, 78,
+       /* CLO */
+       67, 76, 79,
+       /* DOO */
+       68, 79, 79,
+       /* CHU */
+       67, 72, 85,
+       /* LAB */
+       76, 65, 66,
+       /* GRA */
+       71, 82, 65,
+       /* WAL */
+       87, 65, 76,
+       /* BAL */
+       66, 65, 76,
+       /* MED */
+       77, 69, 68,
+       /* CHI */
+       67, 72, 73,
+       /* WRI */
+       87, 82, 73,
+       /* *PLA */
+       208, 76, 65,
+       /* SHI */
+       83, 72, 73,
+       /* SAF */
+       83, 65, 70,
+       /* BRE */
+       66, 82, 69,
+       /* ARM */
+       65, 82, 77,
+       /* GLA */
+       71, 76, 65,
+       /* RIN */
+       82, 73, 78,
+       /* TUB */
+       84, 85, 66,
+       /* FIR */
+       70, 73, 82,
+       /* FLU */
+       70, 76, 85,
+       /* *CHI */
+       195, 72, 73,
+       /* 38 */
+       51, 56, 32,
+       /* SOO */
+       83, 79, 79,
+       /* 33 */
+       51, 51, 32,
+       /* HEA */
+       72, 69, 65,
+       /* *ANI */
+       193, 78, 73,
+       /* CHE */
+       67, 72, 69,
+       /* STA */
+       83, 84, 65,
+       /* BAG */
+       66, 65, 71,
+       /* PIN */
+       80, 73, 78,
+       /* SAW */
+       83, 65, 87,
+       /* FOO */
+       70, 79, 79,
+       /* *RAB */
+       210, 65, 66,
+       /* GAM */
+       71, 65, 77,
+       /* SHO */
+       83, 72, 79,
+       /* PAP */
+       80, 65, 80,
+       /* SWE */
+       83, 87, 69,
+       /* MAN */
+       77, 65, 78,
+       /* *CRI */
+       195, 82, 73,
+       /* DOL */
+       68, 79, 76,
+       /* BOA */
+       66, 79, 65,
+       /* HAM */
+       72, 65, 77,
+       /* GRA */
+       71, 82, 65,
+       /* BUT */
+       66, 85, 84,
+       /* PUP */
+       80, 85, 80,
+       /* STI */
+       83, 84, 73,
+       /* STA */
+       83, 84, 65,
+       /* BOO */
+       66, 79, 79,
+       /* CHA */
+       67, 72, 65,
+       /* ZAP */
+       90, 65, 80,
+       /* POT */
+       80, 79, 84,
+       /* CEL */
+       67, 69, 76,
+       /* BAR */
+       66, 65, 82,
+       /* LOC */
+       76, 79, 67,
+       /* LED */
+       76, 69, 68,
+       /* WOO */
+       87, 79, 79,
+       /* VOI */
+       86, 79, 73,
+       /* SIG */
+       83, 73, 71,
+       /* FLO */
+       70, 76, 79,
+       /* NAI */
+       78, 65, 73,
+       /* MUM */
+       77, 85, 77,
+       /* CRA */
+       67, 82, 65,
+       /* SAP */
+       83, 65, 80,
+       /* ROC */
+       82, 79, 67,
+       /* ARO */
+       65, 82, 79,
+       /* CRY */
+       67, 82, 89,
+       /* *RAV */
+       210, 65, 86,
+       /* 34 */
+       51, 52, 32,
+       /* 35 */
+       51, 53, 32,
+       /* 36 */
+       51, 54, 32,
+       /* 37 */
+       51, 55, 32,
+       /* LEA */
+       76, 69, 65,
+       /* MOA */
+       77, 79, 65,
+       /* PAG */
+       80, 65, 71,
+       0,
+};
+const uint8_t automap[] = {
+       /* KNI */
+       75, 78, 73,
+       0,
+       /* WRI */
+       87, 82, 73,
+       2,
+       /* HEA */
+       72, 69, 65,
+       3,
+       /* GLA */
+       71, 76, 65,
+       4,
+       /* SHI */
+       83, 72, 73,
+       7,
+       /* IDO */
+       73, 68, 79,
+       9,
+       /* CLO */
+       67, 76, 79,
+       14,
+       /* POT */
+       80, 79, 84,
+       16,
+       /* SOO */
+       83, 79, 79,
+       21,
+       /* RIN */
+       82, 73, 78,
+       25,
+       /* BAG */
+       66, 65, 71,
+       26,
+       /* FOO */
+       70, 79, 79,
+       32,
+       /* SWO */
+       83, 87, 79,
+       33,
+       /* TUB */
+       84, 85, 66,
+       36,
+       /* CHE */
+       67, 72, 69,
+       38,
+       /* SHO */
+       83, 72, 79,
+       39,
+       /* CHE */
+       67, 72, 69,
+       40,
+       /* NAI */
+       78, 65, 73,
+       42,
+       /* IDO */
+       73, 68, 79,
+       43,
+       /* DOL */
+       68, 79, 76,
+       44,
+       /* BOA */
+       66, 79, 65,
+       45,
+       /* HAM */
+       72, 65, 77,
+       47,
+       /* SAW */
+       83, 65, 87,
+       49,
+       /* PAP */
+       80, 65, 80,
+       51,
+       /* BOO */
+       66, 79, 79,
+       52,
+       /* STA */
+       83, 84, 65,
+       53,
+       /* STI */
+       83, 84, 73,
+       54,
+       /* GRA */
+       71, 82, 65,
+       59,
+       /* LEA */
+       76, 69, 65,
+       60,
+       /* ROC */
+       82, 79, 67,
+       63,
+       /* PAG */
+       80, 65, 71,
+       64,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv05.c b/Applications/games/adv05.c
new file mode 100644 (file)
index 0000000..b051d48
--- /dev/null
@@ -0,0 +1,3116 @@
+#define NUM_OBJ 72
+#define WORDSIZE 3
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 175;
+const uint8_t lightfill = 175;
+const uint8_t startcarried = 1;
+const uint8_t maxcar = 7;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 22;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+42, 73, 39, 109, 32, 108, 121, 105, 110, 103, 32, 105, 110, 32, 97, 32, 108, 97, 114, 103, 101, 32, 98, 114, 97, 115, 115, 32, 98, 101, 100, 0 };
+const uint8_t loctxt_2[] = {
+98, 101, 100, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 65, 32, 108, 101, 100, 103, 101, 32, 111, 117, 116, 115, 105, 100, 101, 32, 65, 110, 32, 111, 112, 101, 110, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t loctxt_4[] = {
+42, 73, 39, 109, 32, 104, 97, 110, 103, 105, 110, 103, 32, 111, 110, 32, 116, 104, 101, 32, 101, 110, 100, 32, 111, 102, 32, 97, 32, 115, 104, 101, 101, 116, 44, 32, 73, 32, 109, 97, 100, 101, 32, 97, 32, 102, 111, 108, 100, 32, 105, 110, 32, 116, 104, 101, 32, 115, 104, 101, 101, 116, 10, 115, 111, 32, 73, 32, 99, 97, 110, 32, 108, 101, 97, 118, 101, 32, 116, 104, 105, 110, 103, 115, 32, 104, 101, 114, 101, 46, 32, 84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 119, 105, 110, 100, 111, 119, 32, 98, 111, 120, 32, 104, 101, 114, 101, 32, 111, 110, 32, 116, 104, 101, 10, 115, 105, 100, 101, 32, 111, 102, 32, 116, 104, 101, 32, 99, 97, 115, 116, 108, 101, 0 };
+const uint8_t loctxt_5[] = {
+102, 108, 111, 119, 101, 114, 32, 98, 111, 120, 32, 111, 117, 116, 115, 105, 100, 101, 32, 65, 110, 32, 111, 112, 101, 110, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t loctxt_6[] = {
+67, 82, 89, 80, 84, 0 };
+const uint8_t loctxt_7[] = {
+99, 108, 111, 115, 101, 116, 0 };
+const uint8_t loctxt_8[] = {
+66, 97, 116, 104, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_9[] = {
+42, 73, 39, 109, 32, 111, 117, 116, 115, 105, 100, 101, 32, 116, 104, 101, 32, 99, 97, 115, 116, 108, 101, 0 };
+const uint8_t loctxt_10[] = {
+68, 79, 79, 82, 76, 69, 83, 83, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_11[] = {
+104, 97, 108, 108, 32, 105, 110, 115, 105, 100, 101, 32, 116, 104, 101, 32, 99, 97, 115, 116, 108, 101, 0 };
+const uint8_t loctxt_12[] = {
+107, 105, 116, 99, 104, 101, 110, 0 };
+const uint8_t loctxt_13[] = {
+108, 97, 114, 103, 101, 32, 67, 79, 70, 70, 73, 78, 0 };
+const uint8_t loctxt_14[] = {
+112, 65, 110, 116, 114, 121, 0 };
+const uint8_t loctxt_15[] = {
+103, 105, 97, 110, 116, 32, 83, 79, 76, 65, 82, 32, 79, 86, 69, 78, 0 };
+const uint8_t loctxt_16[] = {
+68, 117, 110, 103, 101, 111, 110, 0 };
+const uint8_t loctxt_17[] = {
+77, 101, 97, 110, 100, 101, 114, 105, 110, 103, 32, 112, 97, 116, 104, 0 };
+const uint8_t loctxt_18[] = {
+80, 105, 116, 0 };
+const uint8_t loctxt_19[] = {
+68, 97, 114, 107, 32, 112, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t loctxt_20[] = {
+100, 117, 109, 98, 45, 119, 97, 105, 116, 101, 114, 32, 98, 121, 32, 97, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_21[] = {
+119, 111, 114, 107, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_22[] = {
+76, 79, 84, 32, 79, 70, 32, 84, 82, 79, 85, 66, 76, 69, 33, 32, 40, 65, 110, 100, 32, 115, 111, 32, 65, 114, 101, 32, 121, 111, 117, 33, 41, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_2,  { 11, 0, 0, 0, 0, 0 } }, 
+               { loctxt_3,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 19, 0, 0, 0, 0 } }, 
+               { loctxt_7,  { 0, 0, 0, 21, 0, 0 } }, 
+               { loctxt_8,  { 0, 11, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 0, 0, 17, 11, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_11,  { 8, 2, 9, 12, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 11, 0, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 0, 6, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 0, 12, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 21, 0 } }, 
+               { loctxt_17,  { 0, 0, 0, 9, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_19,  { 6, 10, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_21,  { 0, 0, 0, 0, 0, 16 } }, 
+               { loctxt_22,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       1,
+       0,
+       2,
+       1,
+       3,
+       9,
+       0,
+       0,
+       0,
+       0,
+       0,
+       5,
+       0,
+       0,
+       21,
+       0,
+       255,
+       8,
+       0,
+       0,
+       18,
+       14,
+       0,
+       0,
+       0,
+       6,
+       0,
+       0,
+       0,
+       0,
+       0,
+       14,
+       16,
+       0,
+       2,
+       0,
+       0,
+       8,
+       13,
+       13,
+       0,
+       15,
+       7,
+       15,
+       12,
+       0,
+       0,
+       0,
+       9,
+       17,
+       17,
+       0,
+       0,
+       21,
+       16,
+       0,
+       0,
+       0,
+       10,
+       10,
+       6,
+       5,
+       8,
+       12,
+       21,
+       0,
+       6,
+       0,
+       0,
+       0,
+       7,
+       21,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+83, 104, 101, 101, 116, 115, 0 };
+const uint8_t objtxt_1[] = {
+79, 112, 101, 110, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_2[] = {
+67, 108, 111, 115, 101, 100, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_3[] = {
+80, 105, 108, 108, 111, 119, 0 };
+const uint8_t objtxt_4[] = {
+70, 108, 97, 103, 32, 112, 111, 108, 101, 32, 105, 110, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_5[] = {
+67, 111, 97, 116, 45, 111, 102, 45, 97, 114, 109, 115, 0 };
+const uint8_t objtxt_6[] = {
+83, 104, 101, 101, 116, 32, 103, 111, 105, 110, 103, 32, 105, 110, 116, 111, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_7[] = {
+69, 110, 100, 32, 111, 102, 32, 115, 104, 101, 101, 116, 32, 116, 105, 101, 100, 32, 116, 111, 32, 102, 108, 65, 103, 112, 111, 108, 101, 0 };
+const uint8_t objtxt_8[] = {
+49, 32, 110, 111, 100, 111, 122, 32, 116, 97, 98, 108, 101, 116, 0 };
+const uint8_t objtxt_9[] = {
+76, 73, 84, 32, 116, 111, 114, 99, 104, 0 };
+const uint8_t objtxt_10[] = {
+76, 111, 111, 115, 101, 32, 101, 110, 100, 32, 111, 102, 32, 115, 104, 101, 101, 116, 32, 103, 111, 105, 110, 103, 32, 111, 118, 101, 114, 32, 108, 101, 100, 103, 101, 0 };
+const uint8_t objtxt_11[] = {
+69, 110, 100, 32, 111, 102, 32, 115, 104, 101, 101, 116, 32, 104, 65, 110, 103, 105, 110, 103, 32, 104, 101, 114, 101, 0 };
+const uint8_t objtxt_12[] = {
+67, 108, 111, 115, 101, 100, 32, 38, 32, 85, 78, 76, 79, 67, 75, 69, 68, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_13[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_14[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_15[] = {
+80, 97, 112, 101, 114, 32, 99, 108, 105, 112, 0 };
+const uint8_t objtxt_16[] = {
+84, 101, 110, 116, 32, 83, 84, 65, 75, 69, 0 };
+const uint8_t objtxt_17[] = {
+77, 105, 114, 114, 111, 114, 0 };
+const uint8_t objtxt_18[] = {
+66, 111, 116, 116, 108, 101, 32, 111, 102, 32, 116, 121, 112, 101, 32, 86, 32, 98, 108, 111, 111, 100, 0 };
+const uint8_t objtxt_19[] = {
+69, 109, 112, 116, 121, 32, 98, 111, 116, 116, 108, 101, 0 };
+const uint8_t objtxt_20[] = {
+85, 110, 108, 105, 116, 32, 116, 111, 114, 99, 104, 0 };
+const uint8_t objtxt_21[] = {
+83, 117, 108, 102, 117, 114, 32, 109, 65, 116, 99, 104, 101, 115, 0 };
+const uint8_t objtxt_22[] = {
+50, 32, 115, 109, 97, 108, 108, 32, 104, 111, 108, 101, 115, 32, 105, 110, 32, 109, 121, 32, 110, 101, 99, 107, 0 };
+const uint8_t objtxt_23[] = {
+51, 32, 110, 111, 45, 100, 111, 122, 32, 116, 97, 98, 108, 101, 116, 115, 0 };
+const uint8_t objtxt_24[] = {
+50, 32, 110, 111, 100, 111, 122, 32, 116, 97, 98, 108, 101, 116, 115, 0 };
+const uint8_t objtxt_25[] = {
+80, 105, 108, 101, 115, 32, 111, 102, 32, 101, 120, 116, 105, 110, 103, 117, 105, 115, 104, 101, 100, 32, 99, 105, 103, 65, 114, 101, 116, 116, 101, 115, 0 };
+const uint8_t objtxt_26[] = {
+80, 97, 99, 107, 32, 111, 102, 32, 84, 114, 97, 110, 115, 121, 108, 118, 97, 110, 105, 97, 110, 32, 99, 105, 103, 97, 114, 101, 116, 116, 101, 115, 0 };
+const uint8_t objtxt_27[] = {
+76, 73, 84, 32, 99, 105, 103, 65, 114, 101, 116, 116, 101, 0 };
+const uint8_t objtxt_28[] = {
+83, 116, 111, 110, 101, 32, 67, 79, 70, 70, 73, 78, 0 };
+const uint8_t objtxt_29[] = {
+67, 111, 102, 102, 105, 110, 32, 105, 115, 32, 111, 112, 101, 110, 0 };
+const uint8_t objtxt_30[] = {
+67, 111, 102, 102, 105, 110, 32, 105, 115, 32, 99, 108, 111, 115, 101, 100, 0 };
+const uint8_t objtxt_31[] = {
+68, 117, 115, 116, 121, 32, 99, 108, 111, 118, 101, 32, 111, 102, 32, 103, 97, 114, 108, 105, 99, 0 };
+const uint8_t objtxt_32[] = {
+68, 65, 82, 75, 32, 112, 105, 116, 0 };
+const uint8_t objtxt_33[] = {
+67, 105, 103, 97, 114, 101, 116, 116, 101, 0 };
+const uint8_t objtxt_34[] = {
+66, 114, 97, 115, 115, 32, 98, 101, 100, 0 };
+const uint8_t objtxt_35[] = {
+84, 104, 101, 32, 111, 116, 104, 101, 114, 32, 101, 110, 100, 32, 111, 102, 32, 116, 104, 101, 32, 115, 104, 101, 101, 116, 0 };
+const uint8_t objtxt_36[] = {
+83, 104, 101, 101, 116, 32, 116, 105, 101, 100, 32, 116, 111, 32, 98, 101, 100, 0 };
+const uint8_t objtxt_37[] = {
+80, 111, 99, 107, 101, 116, 32, 119, 97, 116, 99, 104, 0 };
+const uint8_t objtxt_38[] = {
+67, 111, 102, 102, 105, 110, 32, 108, 105, 100, 32, 105, 115, 32, 111, 112, 101, 110, 0 };
+const uint8_t objtxt_39[] = {
+76, 111, 99, 107, 97, 98, 108, 101, 32, 115, 108, 105, 100, 101, 32, 98, 111, 108, 116, 0 };
+const uint8_t objtxt_40[] = {
+66, 114, 111, 107, 101, 110, 32, 115, 108, 105, 100, 101, 32, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_41[] = {
+76, 97, 114, 103, 101, 32, 116, 101, 109, 112, 101, 114, 101, 100, 32, 110, 97, 105, 108, 32, 102, 105, 108, 101, 0 };
+const uint8_t objtxt_42[] = {
+83, 109, 97, 108, 108, 32, 86, 105, 97, 108, 0 };
+const uint8_t objtxt_43[] = {
+76, 97, 114, 103, 101, 32, 100, 97, 114, 107, 32, 108, 101, 110, 115, 32, 115, 101, 116, 32, 105, 110, 32, 99, 101, 105, 108, 105, 110, 103, 0 };
+const uint8_t objtxt_44[] = {
+79, 118, 101, 110, 0 };
+const uint8_t objtxt_45[] = {
+80, 97, 99, 107, 97, 103, 101, 0 };
+const uint8_t objtxt_46[] = {
+69, 109, 112, 116, 121, 32, 98, 111, 120, 0 };
+const uint8_t objtxt_47[] = {
+80, 111, 115, 116, 99, 97, 114, 100, 0 };
+const uint8_t objtxt_48[] = {
+66, 101, 108, 108, 32, 112, 117, 108, 108, 0 };
+const uint8_t objtxt_49[] = {
+67, 97, 115, 116, 108, 101, 32, 116, 111, 119, 101, 114, 105, 110, 103, 32, 97, 98, 111, 118, 101, 32, 109, 101, 0 };
+const uint8_t objtxt_50[] = {
+70, 101, 110, 99, 101, 32, 119, 105, 116, 104, 32, 97, 110, 32, 111, 112, 101, 110, 32, 103, 97, 116, 101, 32, 38, 32, 97, 32, 99, 114, 111, 119, 100, 32, 98, 101, 121, 111, 110, 100, 0 };
+const uint8_t objtxt_51[] = {
+78, 111, 116, 101, 0 };
+const uint8_t objtxt_52[] = {
+68, 82, 65, 67, 85, 76, 65, 0 };
+const uint8_t objtxt_53[] = {
+82, 117, 98, 98, 101, 114, 32, 109, 97, 108, 108, 101, 116, 0 };
+const uint8_t objtxt_54[] = {
+73, 114, 111, 110, 32, 114, 105, 110, 103, 115, 32, 105, 110, 32, 119, 65, 108, 108, 0 };
+const uint8_t objtxt_55[] = {
+83, 104, 101, 101, 116, 32, 116, 105, 101, 100, 32, 116, 111, 32, 114, 105, 110, 103, 32, 103, 111, 105, 110, 103, 32, 105, 110, 116, 111, 32, 112, 105, 116, 0 };
+const uint8_t objtxt_56[] = {
+68, 65, 82, 75, 32, 102, 111, 114, 101, 98, 111, 100, 105, 110, 103, 32, 112, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t objtxt_57[] = {
+46, 0 };
+const uint8_t objtxt_58[] = {
+70, 117, 108, 108, 32, 115, 105, 122, 101, 32, 112, 111, 114, 116, 114, 97, 105, 116, 32, 111, 102, 32, 68, 82, 65, 67, 85, 76, 65, 0 };
+const uint8_t objtxt_59[] = {
+87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_60[] = {
+86, 101, 110, 116, 0 };
+const uint8_t objtxt_61[] = {
+68, 97, 105, 115, 105, 101, 115, 0 };
+const uint8_t objtxt_62[] = {
+84, 111, 105, 108, 101, 116, 0 };
+const uint8_t objtxt_63[] = {
+68, 117, 109, 98, 45, 119, 97, 105, 116, 101, 114, 0 };
+const uint8_t objtxt_64[] = {
+86, 101, 110, 116, 0 };
+const uint8_t objtxt_65[] = {
+76, 101, 116, 116, 101, 114, 0 };
+const uint8_t objtxt_66[] = {
+83, 105, 103, 110, 32, 115, 97, 121, 115, 58, 32, 34, 80, 79, 83, 73, 84, 73, 86, 69, 76, 89, 32, 78, 79, 32, 83, 77, 79, 75, 73, 78, 71, 32, 65, 76, 76, 79, 87, 69, 68, 32, 72, 69, 82, 69, 33, 34, 32, 115, 105, 103, 110, 101, 100, 32, 68, 114, 97, 99, 117, 108, 97, 0 };
+const uint8_t objtxt_67[] = {
+77, 111, 117, 108, 100, 121, 32, 111, 108, 100, 32, 115, 107, 101, 108, 101, 116, 111, 110, 32, 119, 105, 116, 104, 32, 97, 32, 115, 116, 97, 107, 101, 32, 105, 110, 32, 116, 104, 101, 32, 114, 105, 98, 32, 99, 97, 103, 101, 0 };
+const uint8_t objtxt_68[] = {
+46, 0 };
+const uint8_t objtxt_69[] = {
+66, 114, 111, 107, 101, 110, 32, 103, 108, 97, 115, 115, 0 };
+const uint8_t objtxt_70[] = {
+67, 101, 110, 116, 117, 114, 121, 32, 119, 111, 114, 116, 104, 32, 111, 102, 32, 100, 117, 115, 116, 0 };
+const uint8_t objtxt_71[] = {
+77, 101, 109, 111, 32, 116, 97, 99, 107, 101, 100, 32, 116, 111, 32, 116, 104, 101, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_72[] = {
+46, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+       objtxt_67,
+       objtxt_68,
+       objtxt_69,
+       objtxt_70,
+       objtxt_71,
+       objtxt_72,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+83, 111, 114, 114, 121, 32, 73, 32, 99, 97, 110, 39, 116, 32, 100, 111, 32, 116, 104, 97, 116, 0 };
+const uint8_t msgtxt_2[] = {
+73, 32, 115, 101, 101, 32, 73, 32, 119, 97, 115, 32, 112, 117, 116, 32, 116, 111, 32, 98, 101, 100, 46, 32, 73, 116, 115, 32, 65, 70, 116, 101, 114, 110, 111, 111, 110, 32, 38, 32, 73, 32, 111, 118, 101, 114, 115, 108, 101, 112, 116, 33, 0 };
+const uint8_t msgtxt_3[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 68, 86, 69, 87, 78, 84, 85, 82, 69, 58, 32, 53, 32, 34, 84, 72, 69, 32, 67, 79, 85, 78, 84, 34, 46, 32, 68, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 32, 65, 108, 118, 105, 110, 32, 70, 105, 108, 101, 115, 46, 10, 0 };
+const uint8_t msgtxt_4[] = {
+73, 39, 109, 32, 117, 112, 32, 105, 110, 32, 65, 32, 99, 65, 115, 116, 108, 101, 44, 32, 105, 110, 32, 116, 104, 101, 32, 100, 105, 115, 116, 65, 110, 99, 101, 32, 73, 32, 115, 101, 101, 32, 86, 79, 79, 68, 79, 79, 32, 67, 65, 83, 84, 76, 69, 46, 32, 84, 104, 101, 114, 101, 39, 115, 115, 116, 65, 110, 100, 105, 110, 103, 32, 114, 111, 111, 109, 32, 111, 117, 116, 115, 105, 100, 101, 32, 116, 104, 101, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t msgtxt_5[] = {
+83, 111, 109, 101, 32, 116, 105, 109, 101, 32, 112, 97, 115, 115, 101, 115, 46, 46, 46, 0 };
+const uint8_t msgtxt_6[] = {
+73, 116, 32, 98, 101, 97, 114, 115, 32, 116, 104, 101, 32, 70, 97, 109, 105, 108, 121, 32, 67, 114, 101, 115, 116, 32, 111, 102, 32, 68, 82, 65, 67, 85, 76, 65, 33, 0 };
+const uint8_t msgtxt_7[] = {
+84, 101, 108, 108, 32, 109, 101, 32, 116, 111, 32, 119, 104, 97, 116, 63, 32, 105, 46, 101, 46, 32, 34, 84, 79, 32, 84, 82, 69, 69, 34, 0 };
+const uint8_t msgtxt_8[] = {
+104, 105, 103, 104, 101, 114, 0 };
+const uint8_t msgtxt_9[] = {
+73, 32, 104, 101, 97, 114, 32, 116, 104, 101, 0 };
+const uint8_t msgtxt_10[] = {
+70, 108, 97, 103, 112, 111, 108, 101, 32, 115, 112, 108, 105, 110, 116, 101, 114, 0 };
+const uint8_t msgtxt_11[] = {
+111, 102, 32, 121, 111, 117, 32, 97, 108, 119, 97, 121, 115, 32, 97, 115, 107, 105, 110, 103, 32, 102, 111, 114, 32, 104, 101, 108, 112, 33, 0 };
+const uint8_t msgtxt_12[] = {
+73, 32, 102, 97, 108, 108, 32, 116, 111, 32, 109, 121, 32, 100, 101, 97, 116, 104, 0 };
+const uint8_t msgtxt_13[] = {
+72, 111, 119, 63, 0 };
+const uint8_t msgtxt_14[] = {
+73, 39, 118, 101, 32, 116, 117, 114, 110, 101, 100, 32, 105, 110, 116, 111, 32, 65, 32, 86, 65, 77, 80, 73, 82, 69, 33, 0 };
+const uint8_t msgtxt_15[] = {
+73, 32, 116, 104, 105, 110, 107, 32, 73, 32, 99, 97, 110, 32, 111, 110, 108, 121, 32, 116, 97, 107, 101, 0 };
+const uint8_t msgtxt_16[] = {
+109, 111, 114, 101, 32, 100, 97, 121, 115, 32, 111, 102, 32, 116, 104, 105, 115, 33, 0 };
+const uint8_t msgtxt_17[] = {
+73, 32, 97, 112, 112, 101, 97, 114, 32, 112, 97, 108, 101, 32, 38, 32, 100, 114, 97, 105, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_18[] = {
+77, 121, 32, 110, 101, 99, 107, 32, 108, 111, 111, 107, 115, 32, 66, 73, 84, 84, 69, 78, 33, 0 };
+const uint8_t msgtxt_19[] = {
+73, 116, 115, 32, 103, 101, 116, 116, 105, 110, 103, 32, 68, 65, 82, 75, 32, 111, 117, 116, 115, 105, 100, 101, 33, 0 };
+const uint8_t msgtxt_20[] = {
+73, 39, 109, 32, 103, 101, 116, 116, 105, 110, 103, 32, 118, 101, 114, 121, 32, 116, 105, 114, 101, 100, 0 };
+const uint8_t msgtxt_21[] = {
+84, 104, 101, 32, 115, 117, 110, 32, 104, 97, 115, 32, 115, 101, 116, 33, 0 };
+const uint8_t msgtxt_22[] = {
+84, 79, 68, 65, 89, 32, 73, 32, 108, 111, 111, 107, 32, 104, 101, 97, 108, 116, 104, 121, 46, 46, 46, 0 };
+const uint8_t msgtxt_23[] = {
+65, 32, 98, 65, 116, 32, 102, 108, 101, 119, 32, 98, 121, 32, 38, 32, 76, 65, 85, 71, 72, 69, 68, 32, 65, 116, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_24[] = {
+73, 39, 109, 32, 114, 101, 97, 108, 32, 80, 69, 80, 80, 89, 32, 110, 111, 119, 33, 0 };
+const uint8_t msgtxt_25[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 65, 32, 67, 79, 85, 71, 72, 73, 78, 32, 40, 115, 105, 99, 41, 32, 105, 110, 32, 116, 104, 101, 32, 114, 111, 111, 109, 46, 0 };
+const uint8_t msgtxt_26[] = {
+67, 79, 85, 71, 72, 33, 0 };
+const uint8_t msgtxt_27[] = {
+84, 104, 101, 32, 99, 105, 103, 65, 114, 101, 116, 116, 101, 32, 119, 101, 110, 116, 32, 111, 117, 116, 32, 38, 32, 116, 104, 101, 32, 99, 111, 102, 102, 105, 110, 32, 86, 65, 78, 73, 83, 72, 69, 68, 0 };
+const uint8_t msgtxt_28[] = {
+72, 101, 32, 115, 109, 101, 108, 108, 101, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 38, 32, 102, 108, 101, 119, 32, 111, 110, 0 };
+const uint8_t msgtxt_29[] = {
+104, 101, 32, 115, 101, 116, 116, 108, 101, 100, 32, 111, 110, 32, 109, 121, 32, 78, 69, 67, 75, 33, 0 };
+const uint8_t msgtxt_30[] = {
+83, 104, 101, 101, 116, 32, 99, 97, 109, 101, 32, 117, 110, 116, 105, 101, 100, 0 };
+const uint8_t msgtxt_31[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 119, 97, 116, 99, 104, 32, 115, 97, 121, 115, 0 };
+const uint8_t msgtxt_32[] = {
+109, 111, 118, 101, 115, 32, 116, 105, 108, 108, 32, 115, 117, 110, 115, 101, 116, 0 };
+const uint8_t msgtxt_33[] = {
+73, 32, 99, 108, 111, 115, 101, 100, 32, 116, 104, 101, 32, 108, 105, 100, 32, 97, 110, 100, 32, 73, 32, 115, 117, 102, 102, 111, 99, 97, 116, 101, 100, 33, 0 };
+const uint8_t msgtxt_34[] = {
+73, 116, 115, 32, 76, 79, 67, 75, 69, 68, 32, 102, 114, 111, 109, 32, 73, 78, 83, 73, 68, 69, 33, 0 };
+const uint8_t msgtxt_35[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 116, 104, 101, 114, 101, 44, 32, 109, 97, 121, 98, 101, 32, 73, 32, 115, 104, 111, 117, 108, 100, 0 };
+const uint8_t msgtxt_36[] = {
+103, 111, 32, 116, 104, 101, 114, 101, 63, 0 };
+const uint8_t msgtxt_37[] = {
+101, 109, 112, 116, 121, 32, 105, 116, 63, 0 };
+const uint8_t msgtxt_38[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 46, 0 };
+const uint8_t msgtxt_39[] = {
+79, 75, 0 };
+const uint8_t msgtxt_40[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 65, 32, 116, 114, 101, 109, 101, 110, 100, 111, 117, 115, 32, 65, 109, 111, 117, 110, 116, 32, 111, 102, 32, 72, 69, 65, 84, 32, 38, 32, 83, 85, 78, 76, 73, 71, 72, 84, 32, 99, 111, 109, 105, 110, 103, 32, 111, 117, 116, 46, 0 };
+const uint8_t msgtxt_41[] = {
+68, 101, 65, 114, 32, 68, 82, 65, 67, 75, 89, 44, 32, 68, 111, 110, 39, 116, 32, 111, 112, 101, 110, 32, 116, 104, 105, 115, 32, 112, 114, 101, 115, 101, 110, 116, 32, 116, 105, 108, 108, 32, 72, 65, 76, 76, 79, 87, 69, 69, 78, 46, 10, 32, 115, 105, 103, 110, 101, 100, 32, 67, 79, 85, 78, 84, 32, 89, 79, 82, 71, 65, 46, 0 };
+const uint8_t msgtxt_42[] = {
+32, 10, 65, 32, 98, 101, 108, 108, 32, 114, 105, 110, 103, 115, 32, 115, 111, 109, 101, 119, 104, 101, 114, 101, 58, 32, 34, 68, 73, 78, 71, 45, 68, 79, 78, 71, 34, 46, 10, 0 };
+const uint8_t msgtxt_43[] = {
+80, 101, 97, 115, 97, 110, 116, 115, 32, 97, 116, 116, 97, 99, 107, 32, 109, 101, 44, 32, 73, 32, 119, 97, 115, 32, 83, 85, 80, 80, 79, 83, 69, 68, 32, 116, 111, 32, 100, 101, 115, 116, 114, 111, 121, 32, 116, 104, 101, 32, 86, 65, 77, 80, 73, 82, 69, 33, 0 };
+const uint8_t msgtxt_44[] = {
+89, 79, 85, 32, 72, 65, 86, 69, 32, 76, 79, 83, 84, 33, 0 };
+const uint8_t msgtxt_45[] = {
+73, 116, 115, 32, 102, 111, 114, 32, 68, 82, 65, 67, 85, 76, 65, 44, 32, 105, 116, 115, 32, 97, 110, 100, 32, 69, 65, 84, 73, 78, 71, 32, 38, 32, 71, 72, 79, 85, 76, 73, 78, 71, 32, 98, 105, 108, 108, 32, 102, 114, 111, 109, 32, 97, 10, 108, 111, 99, 97, 108, 32, 109, 111, 114, 116, 117, 97, 114, 121, 33, 0 };
+const uint8_t msgtxt_46[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 110, 111, 116, 101, 32, 80, 65, 80, 69, 82, 32, 67, 76, 73, 80, 80, 69, 68, 32, 116, 111, 32, 116, 104, 101, 32, 112, 111, 115, 116, 99, 97, 114, 100, 0 };
+const uint8_t msgtxt_47[] = {
+80, 111, 115, 116, 109, 97, 115, 116, 101, 114, 32, 115, 97, 121, 115, 32, 104, 101, 39, 108, 108, 32, 98, 101, 32, 100, 101, 108, 105, 118, 101, 114, 105, 110, 103, 32, 97, 32, 112, 97, 99, 107, 97, 103, 101, 32, 116, 111, 109, 111, 114, 114, 111, 119, 46, 0 };
+const uint8_t msgtxt_48[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 107, 110, 111, 119, 32, 119, 104, 101, 114, 101, 32, 116, 111, 32, 108, 111, 111, 107, 0 };
+const uint8_t msgtxt_49[] = {
+73, 32, 100, 114, 105, 118, 101, 32, 116, 104, 101, 32, 115, 116, 97, 107, 101, 32, 116, 104, 114, 111, 117, 103, 104, 32, 104, 105, 115, 32, 72, 69, 65, 82, 84, 46, 32, 84, 104, 101, 32, 116, 111, 119, 110, 115, 112, 101, 111, 112, 108, 101, 10, 99, 111, 109, 101, 32, 97, 110, 100, 32, 99, 97, 114, 114, 121, 32, 109, 101, 32, 111, 102, 102, 32, 99, 104, 101, 101, 114, 105, 110, 103, 33, 32, 40, 68, 111, 110, 39, 116, 32, 119, 111, 114, 114, 121, 44, 32, 73, 32, 116, 101, 108, 108, 32, 116, 104, 101, 109, 32, 73, 10, 111, 119, 101, 32, 105, 116, 32, 97, 108, 108, 32, 116, 111, 32, 121, 111, 117, 33, 33, 33, 33, 41, 0 };
+const uint8_t msgtxt_50[] = {
+84, 114, 121, 58, 32, 34, 67, 76, 73, 77, 66, 32, 83, 72, 69, 69, 84, 34, 0 };
+const uint8_t msgtxt_51[] = {
+73, 39, 109, 32, 65, 32, 112, 114, 101, 116, 116, 121, 32, 103, 111, 111, 100, 32, 76, 79, 67, 75, 32, 80, 73, 67, 75, 33, 0 };
+const uint8_t msgtxt_52[] = {
+73, 39, 109, 32, 110, 111, 116, 32, 97, 110, 32, 97, 114, 115, 111, 110, 105, 115, 116, 33, 0 };
+const uint8_t msgtxt_53[] = {
+84, 104, 101, 32, 116, 111, 114, 99, 104, 32, 98, 117, 114, 110, 116, 32, 116, 104, 114, 117, 32, 116, 104, 101, 32, 115, 104, 101, 101, 116, 33, 0 };
+const uint8_t msgtxt_54[] = {
+65, 104, 32, 116, 104, 97, 116, 39, 115, 32, 109, 117, 99, 104, 32, 98, 101, 116, 116, 101, 114, 33, 0 };
+const uint8_t msgtxt_55[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 119, 114, 105, 116, 105, 110, 103, 32, 111, 110, 32, 105, 116, 46, 0 };
+const uint8_t msgtxt_56[] = {
+77, 111, 98, 32, 108, 111, 111, 107, 115, 32, 65, 78, 71, 82, 89, 0 };
+const uint8_t msgtxt_57[] = {
+73, 39, 118, 101, 32, 97, 32, 104, 117, 110, 99, 104, 32, 73, 39, 118, 101, 32, 98, 101, 101, 110, 32, 114, 111, 98, 98, 101, 100, 33, 0 };
+const uint8_t msgtxt_58[] = {
+79, 100, 100, 44, 32, 73, 32, 119, 97, 115, 110, 39, 116, 32, 98, 105, 116, 116, 101, 110, 32, 108, 97, 115, 116, 32, 110, 105, 116, 101, 33, 0 };
+const uint8_t msgtxt_59[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 46, 0 };
+const uint8_t msgtxt_60[] = {
+108, 111, 119, 101, 114, 0 };
+const uint8_t msgtxt_61[] = {
+73, 39, 109, 32, 65, 116, 32, 116, 104, 101, 32, 116, 105, 112, 32, 111, 102, 32, 116, 104, 101, 32, 112, 111, 108, 101, 0 };
+const uint8_t msgtxt_62[] = {
+73, 32, 110, 111, 116, 105, 99, 101, 32, 97, 32, 68, 65, 82, 75, 32, 87, 73, 78, 68, 79, 87, 32, 85, 78, 68, 69, 82, 32, 116, 104, 101, 32, 98, 101, 100, 114, 111, 111, 109, 32, 119, 105, 110, 100, 111, 119, 32, 108, 101, 100, 103, 101, 33, 0 };
+const uint8_t msgtxt_63[] = {
+97, 115, 32, 73, 32, 102, 97, 108, 108, 0 };
+const uint8_t msgtxt_64[] = {
+69, 88, 67, 69, 80, 84, 0 };
+const uint8_t msgtxt_65[] = {
+73, 116, 32, 119, 111, 110, 39, 116, 32, 103, 111, 32, 97, 110, 121, 0 };
+const uint8_t msgtxt_66[] = {
+116, 114, 121, 32, 108, 111, 111, 107, 105, 110, 103, 32, 97, 116, 32, 105, 116, 0 };
+const uint8_t msgtxt_67[] = {
+84, 104, 101, 32, 112, 97, 112, 101, 114, 32, 99, 108, 105, 112, 32, 105, 115, 32, 105, 110, 32, 116, 104, 101, 32, 119, 97, 121, 33, 0 };
+const uint8_t msgtxt_68[] = {
+73, 32, 107, 110, 111, 119, 32, 104, 111, 119, 32, 116, 111, 32, 82, 65, 73, 83, 69, 32, 97, 110, 100, 32, 76, 79, 87, 69, 82, 32, 116, 104, 105, 115, 32, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_69[] = {
+71, 69, 84, 32, 85, 80, 32, 121, 111, 117, 32, 115, 108, 101, 101, 112, 121, 32, 104, 101, 97, 100, 33, 0 };
+const uint8_t msgtxt_70[] = {
+84, 114, 121, 32, 101, 120, 97, 109, 105, 110, 105, 110, 103, 32, 116, 104, 105, 110, 103, 115, 46, 0 };
+const uint8_t msgtxt_71[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 109, 97, 116, 99, 104, 101, 115, 33, 0 };
+const uint8_t msgtxt_72[] = {
+84, 104, 101, 32, 109, 97, 116, 99, 104, 32, 102, 108, 97, 114, 101, 115, 32, 117, 112, 32, 98, 114, 105, 101, 102, 108, 121, 32, 46, 46, 46, 0 };
+const uint8_t msgtxt_73[] = {
+73, 116, 115, 32, 97, 108, 114, 101, 97, 100, 121, 32, 111, 112, 101, 110, 46, 0 };
+const uint8_t msgtxt_74[] = {
+84, 114, 121, 58, 32, 34, 67, 76, 73, 77, 66, 32, 80, 79, 76, 69, 34, 0 };
+const uint8_t msgtxt_75[] = {
+84, 114, 121, 58, 32, 34, 83, 65, 86, 69, 32, 71, 65, 77, 69, 34, 0 };
+const uint8_t msgtxt_76[] = {
+65, 32, 98, 97, 116, 32, 109, 105, 103, 104, 116, 32, 109, 97, 107, 101, 32, 105, 116, 44, 32, 98, 117, 116, 32, 110, 111, 116, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_77[] = {
+70, 105, 114, 115, 116, 32, 73, 32, 110, 101, 101, 100, 32, 97, 110, 32, 117, 110, 108, 105, 116, 32, 99, 105, 103, 97, 114, 101, 116, 116, 101, 46, 0 };
+const uint8_t msgtxt_78[] = {
+84, 101, 108, 108, 32, 109, 101, 32, 119, 105, 116, 104, 32, 119, 104, 97, 116, 63, 32, 76, 105, 107, 101, 58, 32, 34, 87, 73, 84, 72, 32, 70, 73, 83, 84, 34, 0 };
+const uint8_t msgtxt_79[] = {
+73, 116, 32, 100, 111, 101, 115, 110, 39, 116, 32, 119, 111, 114, 107, 33, 0 };
+const uint8_t msgtxt_80[] = {
+77, 97, 121, 98, 101, 32, 73, 32, 115, 104, 111, 117, 108, 100, 32, 66, 82, 69, 65, 75, 32, 105, 116, 63, 0 };
+const uint8_t msgtxt_81[] = {
+89, 117, 99, 107, 33, 0 };
+const uint8_t msgtxt_82[] = {
+97, 110, 100, 32, 116, 104, 101, 110, 32, 103, 111, 101, 115, 32, 111, 117, 116, 33, 0 };
+const uint8_t msgtxt_83[] = {
+77, 105, 114, 114, 111, 114, 32, 115, 104, 97, 116, 116, 101, 114, 115, 33, 32, 84, 104, 97, 116, 39, 115, 32, 55, 32, 121, 101, 97, 114, 115, 32, 98, 97, 100, 32, 108, 117, 99, 107, 33, 0 };
+const uint8_t msgtxt_84[] = {
+73, 32, 115, 101, 116, 32, 116, 104, 101, 32, 109, 105, 114, 114, 111, 114, 32, 111, 110, 32, 116, 104, 101, 32, 112, 105, 108, 108, 111, 119, 46, 0 };
+const uint8_t msgtxt_85[] = {
+84, 114, 121, 58, 32, 34, 71, 79, 32, 82, 79, 79, 77, 34, 0 };
+const uint8_t msgtxt_86[] = {
+87, 104, 97, 116, 32, 97, 32, 68, 82, 69, 65, 77, 32, 73, 32, 106, 117, 115, 116, 32, 104, 97, 100, 32, 33, 33, 33, 33, 0 };
+const uint8_t msgtxt_87[] = {
+68, 101, 97, 114, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 114, 58, 10, 32, 73, 32, 119, 97, 110, 116, 101, 100, 32, 116, 111, 32, 116, 97, 107, 101, 32, 116, 104, 105, 115, 32, 116, 105, 109, 101, 32, 40, 49, 32, 109, 111, 118, 101, 33, 41, 32, 116, 111, 32, 116, 104, 97, 110, 107, 32, 65, 76, 76, 32, 111, 102, 32, 121, 111, 117, 32, 111, 117, 116, 10, 116, 104, 101, 114, 101, 32, 105, 110, 32, 65, 68, 118, 101, 110, 116, 117, 114, 101, 108, 97, 110, 100, 32, 102, 111, 114, 32, 116, 104, 101, 32, 102, 97, 110, 116, 97, 115, 116, 105, 99, 97, 108, 108, 121, 32, 119, 97, 114, 109, 32, 114, 101, 99, 101, 112, 116, 105, 111, 110, 10, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 104, 97, 115, 32, 114, 101, 99, 101, 105, 118, 101, 100, 33, 10, 72, 97, 112, 112, 121, 32, 65, 100, 118, 101, 110, 116, 117, 114, 105, 110, 103, 44, 10, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 10, 40, 67, 104, 105, 101, 102, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 114, 41, 0 };
+const uint8_t msgtxt_88[] = {
+65, 32, 99, 104, 111, 111, 111, 111, 111, 111, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   DECRMNT MINUTES*/
+       161, 
+       77, 73, 
+/* AUTO  0     INTRO*/
+       211, 
+       9, 1, 0, 3, 0, 0, 0, 65, 
+       3, 79, 81, 79, 
+/* AUTO  0     INTRO*/
+       211, 
+       9, 1, 0, 3, 0, 0, 0, 3, 
+       2, 81, 79, 81, 
+/* AUTO  0     18*/
+       212, 
+       15, 10, 16, 1, 9, 2, 7, 18, 7, 6, 
+       19, 
+/* AUTO  0     GETTING TIRED*/
+       208, 
+       15, 4, 9, 4, 16, 1, 9, 2, 
+       20, 
+/* AUTO  0     SUNSET*/
+       198, 
+       19, 1, 
+       56, 21, 64, 
+/* AUTO  100   SHEET OVER LEDGE*/
+       176, 
+       2, 35, 4, 3, 0, 35, 0, 10, 
+       72, 
+/* AUTO  100   DEC PILL*/
+       170, 
+       8, 4, 0, 1, 
+       81, 77, 73, 
+/* AUTO  0     WEARING OFF*/
+       200, 
+       15, 8, 15, 4, 
+       20, 
+/* AUTO  0     WORE OFF*/
+       200, 
+       15, 0, 0, 4, 
+       60, 
+/* AUTO  0     RESET COUNTER*/
+       196, 
+       0, 1, 
+       81, 
+/* AUTO  33    POLE BROKE*/
+       143, 33, 
+       4, 4, 13, 7, 0, 22, 
+       9, 10, 12, 54, 
+/* AUTO  100   UNTIE SHEET*/
+       178, 
+       1, 35, 4, 11, 0, 36, 0, 35, 
+       59, 72, 30, 
+/* AUTO  100   FELL ASLEEP*/
+       177, 
+       15, 0, 9, 4, 0, 2, 7, 22, 
+       58, 70, 
+/* AUTO  25    BAT AT NITE*/
+       145, 25, 
+       15, 0, 1, 31, 9, 2, 7, 22, 
+       23, 28, 
+/* AUTO  40    BAT BITE AT NITE*/
+       151, 40, 
+       15, 0, 6, 31, 9, 2, 7, 22, 0, 2, 
+       23, 29, 58, 88, 
+/* AUTO  50    BURNT SHEET*/
+       142, 50, 
+       4, 4, 3, 9, 0, 22, 
+       103, 12, 54, 
+/* AUTO  100   FELL SLEEP?*/
+       183, 
+       8, 2, 0, 7, 0, 3, 0, 2, 7, 22, 
+       73, 54, 58, 60, 
+/* AUTO  0     OPEN IF DOOR UNLOCKED*/
+       214, 
+       14, 14, 0, 0, 0, 13, 0, 21, 0, 12, 
+       54, 62, 59, 
+/* AUTO  0     STEAL STAKE*/
+       209, 
+       13, 16, 5, 16, 0, 16, 0, 9, 
+       59, 58, 
+/* AUTO  0     RETURN SHEE*/
+       211, 
+       0, 6, 0, 7, 0, 10, 0, 35, 
+       59, 59, 59, 59, 
+/* AUTO  0     CLOSE WINDOW*/
+       215, 
+       0, 1, 0, 2, 0, 2, 0, 65, 0, 55, 
+       59, 62, 79, 59, 
+/* AUTO  0     GET PACKAGE*/
+       209, 
+       13, 45, 5, 45, 0, 45, 0, 9, 
+       59, 58, 
+/* AUTO  0     GET CIGS*/
+       213, 
+       13, 26, 5, 26, 0, 26, 0, 13, 0, 9, 
+       62, 58, 
+/* AUTO  0     DREAMING?*/
+       201, 
+       4, 0, 0, 1, 
+       54, 136, 
+/* AUTO  0     RIPPED OFF?*/
+       206, 
+       8, 9, 0, 9, 0, 1, 
+       60, 54, 107, 
+/* AUTO  0     PUT TO BED*/
+       199, 
+       0, 1, 
+       54, 57, 2, 53, 
+/* AUTO  0     GET BLOOD*/
+       210, 
+       3, 18, 0, 3, 0, 18, 0, 19, 
+       60, 72, 108, 
+/* AUTO  0     SHEETS*/
+       203, 
+       0, 4, 0, 36, 
+       60, 59, 53, 64, 
+/* AUTO  100   DEC DAYS*/
+       171, 
+       8, 3, 0, 3, 
+       60, 81, 77, 73, 
+/* AUTO  0     LOST GAME*/
+       202, 
+       15, 0, 0, 22, 
+       18, 14, 54, 
+/* AUTO  0     RESET DAY + REPORT BITE*/
+       202, 
+       0, 0, 0, 22, 
+       18, 81, 74, 
+/* AUTO  50    CIGARETTE OUT*/
+       142, 50, 
+       13, 27, 7, 13, 0, 2, 
+       81, 77, 73, 
+/* AUTO  0     GONE OUT?*/
+       215, 
+       19, 0, 0, 27, 0, 28, 0, 29, 0, 30, 
+       59, 59, 59, 59, 
+/* AUTO  0     REPORT IT*/
+       200, 
+       4, 6, 19, 0, 
+       27, 
+/* AUTO  0     RESET COUNTER*/
+       196, 
+       0, 2, 
+       81, 
+/* AUTO  100   END GAME*/
+       165, 
+       4, 22, 
+       44, 63, 
+/* AUTO  30    DELIVER PACKAGE*/
+       149, 30, 
+       15, 25, 14, 45, 0, 0, 7, 9, 14, 46, 
+       73, 81, 
+/* AUTO  0     CHECK DAY*/
+       214, 
+       19, 2, 0, 45, 0, 9, 0, 65, 0, 9, 
+       62, 62, 42, 
+/* AUTO  0     RESET COUNTER*/
+       192, 
+       81, 
+/* AUTO  100   MORE INTRO*/
+       168, 
+       9, 1, 0, 1, 
+       58, 
+/* AUTO  100   SUNSET?*/
+       169, 
+       15, 1, 12, 9, 
+       56, 64, 
+/* AUTO  100   LITE DOORLW*/
+       173, 
+       4, 10, 16, 0, 8, 15, 
+       57, 76, 
+/* AUTO  29    DELIVER POSTCARD*/
+       149, 29, 
+       15, 39, 14, 47, 0, 47, 0, 9, 7, 9, 
+       62, 42, 
+};
+const uint8_t actions[] = {
+/* TIE   SHE   */
+       4, 31, 7, 
+       3, 0, 
+       7, 
+/* GO    WIN   */
+       10, 1, 9, 
+       4, 4, 0, 5, 
+       54, 76, 39, 
+/* GO    WIN   */
+       10, 1, 9, 
+       4, 5, 0, 10, 
+       54, 76, 39, 
+/* LOO   MIR   */
+       11, 8, 43, 
+       3, 17, 13, 22, 
+       73, 18, 17, 15, 
+/* AUTO  0     */
+       195, 
+       81, 78, 81, 16, 
+/* UNL   TOR   */
+       14, 43, 20, 
+       3, 9, 0, 9, 0, 20, 
+       72, 39, 64, 
+/* LIG   TOR   */
+       18, 45, 20, 
+       3, 20, 3, 21, 0, 9, 0, 20, 
+       72, 76, 39, 
+/* EMP   BOT   */
+       13, 50, 41, 
+       3, 18, 0, 18, 0, 19, 
+       72, 39, 
+/* LOO   MIR   */
+       8, 8, 43, 
+       3, 17, 14, 22, 
+       22, 
+/* LOO   WIN   */
+       4, 8, 9, 
+       4, 2, 
+       4, 
+/* CLO   WIN   CLO*/
+       14, 34, 9, 
+       2, 1, 0, 1, 0, 2, 
+       72, 76, 39, 
+/* GO    WIN   */
+       19, 1, 9, 
+       2, 1, 1, 35, 0, 3, 0, 6, 
+       54, 53, 76, 39, 
+/* TO    BED   */
+       23, 42, 33, 
+       3, 0, 2, 34, 0, 0, 0, 35, 0, 36, 
+       59, 53, 53, 76, 
+/* TO    POL   */
+       23, 42, 12, 
+       3, 0, 3, 4, 0, 0, 0, 7, 0, 10, 
+       59, 53, 53, 76, 
+/* CLI   ANY   */
+       10, 28, 0, 
+       2, 10, 0, 4, 
+       54, 76, 39, 
+/* CLI   ANY   */
+       10, 28, 0, 
+       2, 11, 0, 4, 
+       54, 76, 39, 
+/* SLE   ANY   */
+       10, 40, 0, 
+       0, 2, 0, 4, 
+       58, 70, 60, 
+/* LOO   WAT   */
+       6, 8, 46, 
+       3, 37, 
+       31, 78, 32, 
+/* GO    WIN   */
+       19, 1, 9, 
+       4, 3, 1, 35, 0, 2, 0, 6, 
+       54, 59, 76, 39, 
+/* LOO   OVE   */
+       8, 8, 44, 
+       16, 0, 3, 44, 
+       40, 
+/* LOO   OVE   */
+       9, 8, 44, 
+       3, 44, 15, 0, 
+       35, 36, 
+/* TO    RIN   */
+       23, 42, 55, 
+       2, 54, 0, 0, 0, 35, 0, 18, 0, 55, 
+       59, 62, 53, 76, 
+/* UNT   ANY   */
+       15, 32, 0, 
+       2, 55, 0, 35, 0, 55, 
+       59, 59, 53, 76, 
+/* UNT   ANY   */
+       15, 32, 0, 
+       2, 7, 0, 7, 0, 10, 
+       59, 59, 53, 76, 
+/* LOO   DUM   */
+       6, 8, 37, 
+       2, 63, 
+       39, 35, 36, 
+/* EAT   TAB   */
+       23, 58, 53, 
+       3, 23, 0, 4, 0, 23, 0, 24, 0, 1, 
+       58, 72, 81, 73, 
+/* AUTO  0     */
+       203, 
+       0, 40, 0, 1, 
+       79, 81, 39, 24, 
+/* EAT   TAB   PILL 2*/
+       23, 58, 53, 
+       3, 24, 0, 4, 0, 24, 0, 8, 0, 1, 
+       58, 72, 81, 73, 
+/* AUTO  0     */
+       203, 
+       0, 40, 0, 1, 
+       79, 81, 39, 24, 
+/* LOO   PAC   */
+       5, 8, 21, 
+       4, 4, 
+       35, 36, 
+/* SMO   ANY   */
+       22, 25, 0, 
+       3, 27, 4, 6, 0, 28, 0, 30, 14, 28, 
+       25, 53, 53, 
+/* LOO   TOI   */
+       5, 8, 54, 
+       2, 62, 
+       35, 36, 
+/* LOO   ROO   */
+       5, 8, 16, 
+       4, 20, 
+       35, 36, 
+/* LIG   CIG   */
+       23, 45, 29, 
+       3, 33, 3, 21, 0, 2, 0, 8, 0, 2, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       201, 
+       0, 33, 0, 27, 
+       72, 39, 
+/* GET   CIG   */
+       9, 10, 29, 
+       3, 33, 0, 33, 
+       52, 39, 
+/* LOO   POS   */
+       4, 8, 48, 
+       3, 47, 
+       105, 
+/* LOO   LET   */
+       4, 8, 59, 
+       3, 65, 
+       105, 
+/* GET   CIG   */
+       9, 10, 29, 
+       3, 27, 0, 27, 
+       52, 39, 
+/* LOO   GAT   */
+       4, 8, 50, 
+       3, 50, 
+       106, 
+/* LOO   COF   */
+       4, 8, 34, 
+       2, 30, 
+       38, 
+/* LOO   COF   */
+       5, 8, 34, 
+       2, 29, 
+       35, 36, 
+/* LOO   VIA   */
+       9, 8, 47, 
+       3, 42, 9, 6, 
+       35, 37, 
+/* OPE   DOO   */
+       14, 37, 19, 
+       2, 12, 0, 12, 0, 13, 
+       72, 76, 39, 
+/* CLO   DOO   */
+       14, 34, 19, 
+       2, 13, 0, 12, 0, 13, 
+       72, 76, 39, 
+/* LOC   DOO   */
+       18, 29, 19, 
+       2, 12, 3, 15, 0, 12, 0, 14, 
+       72, 76, 39, 
+/* LOO   CAS   */
+       7, 8, 28, 
+       2, 49, 
+       39, 38, 114, 112, 
+/* GET   LOC   .*/
+       18, 10, 56, 
+       2, 14, 3, 15, 0, 14, 0, 12, 
+       72, 76, 39, 
+/* REA   NOT   */
+       8, 41, 17, 
+       3, 47, 14, 51, 
+       117, 
+/* GO    BED   */
+       10, 1, 33, 
+       2, 34, 0, 1, 
+       54, 76, 39, 
+/* GO    OVE   */
+       9, 1, 44, 
+       3, 44, 16, 0, 
+       1, 40, 
+/* GO    OVE   */
+       14, 1, 44, 
+       3, 44, 15, 0, 0, 15, 
+       54, 76, 39, 
+/* WIT   FIL   */
+       18, 61, 39, 
+       3, 41, 2, 39, 0, 39, 0, 40, 
+       72, 76, 39, 
+/* OPE   WIN   */
+       14, 37, 9, 
+       2, 2, 0, 1, 0, 2, 
+       72, 76, 39, 
+/* GO    DUM   */
+       10, 1, 37, 
+       2, 63, 0, 20, 
+       54, 76, 39, 
+/* KIL   BAT   WIN*/
+       23, 22, 25, 
+       3, 52, 3, 16, 3, 53, 0, 52, 0, 67, 
+       72, 76, 49, 63, 
+/* GO    ROO   */
+       18, 1, 16, 
+       9, 8, 9, 7, 4, 20, 0, 12, 
+       54, 76, 39, 
+/* EMP   VIA   .*/
+       18, 50, 47, 
+       3, 42, 0, 23, 9, 6, 0, 6, 
+       53, 76, 58, 
+/* UNT   ANY   */
+       19, 32, 0, 
+       2, 36, 0, 36, 0, 6, 0, 35, 
+       59, 59, 59, 73, 
+/* AUTO  0     */
+       198, 
+       0, 10, 
+       59, 53, 76, 
+/* CUT   FIL   */
+       7, 52, 39, 
+       3, 41, 
+       39, 5, 77, 77, 
+/* WAI   ANY   */
+       9, 49, 0, 
+       16, 5, 0, 5, 
+       5, 83, 
+/* PUL   BEL   */
+       5, 56, 58, 
+       2, 48, 
+       39, 42, 
+/* EAT   TAB   */
+       19, 58, 53, 
+       3, 8, 0, 4, 0, 8, 0, 1, 
+       58, 59, 81, 73, 
+/* AUTO  0     */
+       203, 
+       0, 40, 0, 1, 
+       79, 81, 39, 24, 
+/* WIT   FIL   NO FILE*/
+       5, 61, 39, 
+       12, 41, 
+       1, 107, 
+/* GO    PAS   */
+       11, 1, 32, 
+       2, 56, 0, 19, 
+       54, 56, 76, 39, 
+/* FIN   ANY   */
+       1, 26, 0, 
+       1, 48, 
+/* GO    WIN   */
+       10, 1, 9, 
+       4, 10, 0, 5, 
+       54, 76, 39, 
+/* GET   POR   */
+       18, 10, 36, 
+       3, 58, 0, 58, 0, 56, 0, 10, 
+       52, 62, 39, 
+/* CLI   ANY   */
+       15, 28, 0, 
+       2, 35, 4, 18, 0, 16, 
+       54, 57, 76, 39, 
+/* CLI   ANY   */
+       11, 28, 0, 
+       2, 32, 0, 18, 
+       56, 54, 76, 39, 
+/* GO    SHE   */
+       0, 1, 7, 
+       50, 
+/* GO    PIT   */
+       11, 1, 18, 
+       2, 32, 0, 18, 
+       56, 54, 76, 39, 
+/* CLO   ANY   */
+       5, 34, 0, 
+       2, 38, 
+       33, 63, 
+/* CLO   ANY   */
+       13, 34, 0, 
+       2, 29, 0, 29, 0, 30, 
+       72, 76, 
+/* OPE   COF   */
+       13, 37, 34, 
+       2, 28, 13, 39, 16, 0, 
+       1, 34, 
+/* OPE   COF   */
+       15, 37, 34, 
+       2, 28, 0, 30, 0, 29, 
+       59, 53, 76, 73, 
+/* AUTO  0     PUT DRACKY*/
+       204, 
+       16, 0, 0, 52, 0, 13, 
+       62, 
+/* EAT   GAR   */
+       9, 58, 30, 
+       3, 31, 0, 31, 
+       39, 59, 
+/* GO    GAT   */
+       6, 1, 50, 
+       2, 50, 
+       43, 44, 63, 
+/* GO    ROO   */
+       14, 1, 16, 
+       4, 20, 8, 7, 0, 21, 
+       54, 76, 39, 
+/* REA   LET   */
+       4, 41, 59, 
+       3, 65, 
+       41, 
+/* REA   POS   */
+       8, 41, 48, 
+       3, 47, 13, 51, 
+       45, 
+/* REA   POS   */
+       9, 41, 48, 
+       3, 47, 14, 51, 
+       45, 46, 
+/* REA   NOT   */
+       4, 41, 17, 
+       3, 51, 
+       47, 
+/* GET   CLI   */
+       19, 10, 23, 
+       3, 47, 14, 15, 0, 15, 0, 51, 
+       74, 74, 70, 39, 
+/* UNC   ANY   */
+       19, 7, 0, 
+       3, 47, 14, 15, 0, 15, 0, 51, 
+       74, 74, 70, 39, 
+/* GET   NOT   */
+       9, 10, 17, 
+       3, 51, 0, 51, 
+       74, 39, 
+/* GET   CLI   */
+       9, 10, 23, 
+       3, 15, 0, 15, 
+       74, 39, 
+/* OPE   PAC   */
+       19, 37, 21, 
+       3, 45, 0, 46, 0, 26, 0, 18, 
+       53, 53, 53, 73, 
+/* AUTO  0     */
+       197, 
+       0, 45, 
+       59, 39, 
+/* HEL   ANY   */
+       4, 27, 0, 
+       2, 14, 
+       51, 
+/* LIG   MAT   */
+       11, 45, 22, 
+       3, 21, 8, 15, 
+       57, 76, 122, 73, 
+/* AUTO  0     */
+       195, 
+       88, 88, 88, 132, 
+/* AUTO  0     */
+       193, 
+       56, 76, 
+/* JUM   ANY   */
+       11, 48, 0, 
+       4, 3, 0, 22, 
+       12, 113, 112, 54, 
+/* GO    ROO   */
+       14, 1, 16, 
+       4, 20, 8, 8, 0, 14, 
+       54, 76, 39, 
+/* CLI   ANY   */
+       10, 28, 0, 
+       4, 4, 0, 3, 
+       54, 76, 39, 
+/* SAV   GAM   */
+       1, 24, 63, 
+       39, 71, 
+/* GET   SHE   */
+       5, 10, 7, 
+       3, 0, 
+       52, 39, 
+/* OPE   WIN   */
+       6, 37, 9, 
+       4, 4, 
+       1, 35, 36, 
+/* GO    TOI   */
+       5, 1, 54, 
+       2, 62, 
+       39, 104, 
+/* TO    ANY   */
+       8, 42, 0, 
+       3, 0, 7, 1, 
+       1, 
+/* GET   SHE   */
+       9, 10, 7, 
+       3, 35, 0, 35, 
+       52, 39, 
+/* REA   MEM   */
+       4, 41, 78, 
+       3, 71, 
+       137, 
+/* GET   UP    */
+       10, 10, 5, 
+       4, 1, 0, 2, 
+       54, 76, 39, 
+/* OUT   ANY   */
+       4, 16, 0, 
+       4, 20, 
+       135, 
+/* FLY   ANY   */
+       255, 33, 0, 
+       4, 0, 
+/* OPE   LET   */
+       4, 37, 59, 
+       3, 65, 
+       105, 
+/* EAT   BOT   */
+       9, 58, 41, 
+       3, 18, 0, 22, 
+       54, 14, 
+/* GO    DOO   */
+       10, 1, 19, 
+       2, 13, 0, 7, 
+       54, 76, 39, 
+/* PUL   ANY   */
+       0, 56, 0, 
+       109, 
+/* SMO   ANY   */
+       4, 25, 0, 
+       3, 27, 
+       26, 
+/* UNL   DOO   */
+       4, 43, 19, 
+       2, 14, 
+       13, 
+/* HEL   ANY   */
+       4, 27, 0, 
+       4, 20, 
+       118, 
+/* QUI   ANY   */
+       0, 6, 0, 
+       63, 
+/* CLI   POL   */
+       7, 28, 12, 
+       2, 4, 
+       70, 111, 73, 9, 
+/* AUTO  0     */
+       199, 
+       0, 22, 
+       10, 113, 54, 112, 
+/* PUT   DUM   */
+       10, 18, 37, 
+       4, 20, 8, 7, 
+       1, 115, 110, 
+/* PUT   DUM   */
+       22, 18, 37, 
+       4, 20, 8, 8, 0, 8, 0, 63, 0, 12, 
+       60, 39, 62, 
+/* PUT   DUM   */
+       18, 18, 37, 
+       4, 20, 0, 7, 0, 63, 0, 21, 
+       58, 39, 62, 
+/* OPE   DUM   OPE*/
+       10, 37, 37, 
+       4, 20, 8, 8, 
+       1, 115, 8, 
+/* OPE   DUM   RAISE DUMBWAITER*/
+       22, 37, 37, 
+       8, 7, 4, 20, 0, 7, 0, 63, 0, 12, 
+       60, 39, 62, 
+/* OPE   DUM   RAISE DUMBWAITER*/
+       18, 37, 37, 
+       4, 20, 0, 8, 0, 63, 0, 14, 
+       58, 39, 62, 
+/* GET   CIG   */
+       9, 10, 29, 
+       3, 26, 0, 33, 
+       52, 39, 
+/* GO    SLE   */
+       5, 1, 60, 
+       0, 2, 
+       58, 70, 
+/* LOO   UP    */
+       7, 8, 5, 
+       4, 9, 
+       39, 38, 114, 112, 
+/* LOO   CAS   */
+       7, 8, 28, 
+       4, 9, 
+       39, 38, 114, 112, 
+/* LOO   UP    */
+       7, 8, 5, 
+       2, 49, 
+       39, 38, 114, 112, 
+/* WAI   ANY   */
+       0, 49, 0, 
+       5, 
+/* JUM   ANY   */
+       1, 48, 0, 
+       39, 109, 
+/* GO    COF   */
+       10, 1, 34, 
+       2, 29, 0, 13, 
+       54, 76, 39, 
+/* WIT   ANY   */
+       1, 61, 0, 
+       129, 109, 
+/* OUT   ANY   */
+       1, 16, 0, 
+       36, 13, 
+/* OPE   DUM   */
+       5, 37, 37, 
+       2, 63, 
+       35, 36, 
+/* GET   INV   */
+       0, 10, 14, 
+       66, 
+/* CUT   ANY   */
+       0, 52, 0, 
+       128, 
+/* LOO   NEC   */
+       0, 8, 70, 
+       66, 
+/* LOO   MIR   */
+       4, 8, 43, 
+       12, 17, 
+       13, 
+/* HEL   ANY   */
+       4, 27, 0, 
+       4, 1, 
+       119, 
+/* HEL   ANY   */
+       10, 27, 0, 
+       0, 3, 0, 1, 
+       81, 82, 73, 
+/* AUTO  0     */
+       202, 
+       16, 4, 0, 3, 
+       20, 11, 81, 
+/* AUTO  0     */
+       201, 
+       15, 4, 0, 3, 
+       120, 81, 
+/* GET   GLA   */
+       5, 10, 74, 
+       2, 69, 
+       131, 1, 
+/* LIG   CIG   */
+       4, 45, 29, 
+       12, 33, 
+       127, 
+/* LIG   MAT   */
+       7, 45, 22, 
+       3, 21, 
+       122, 88, 88, 132, 
+/* LIG   ANY   */
+       5, 45, 0, 
+       6, 21, 
+       13, 121, 
+/* LIG   ANY   */
+       5, 45, 0, 
+       3, 21, 
+       1, 102, 
+/* OPE   OVE   */
+       0, 37, 44, 
+       123, 
+/* CLO   OVE   */
+       0, 34, 44, 
+       1, 
+/* GO    POL   */
+       4, 1, 12, 
+       4, 3, 
+       124, 
+/* FLU   TOI   */
+       4, 60, 54, 
+       2, 62, 
+       39, 
+/* SAV   ANY   */
+       0, 24, 0, 
+       125, 
+/* TIE   ANY   */
+       0, 31, 0, 
+       1, 
+/* GO    VEN   */
+       1, 1, 52, 
+       1, 126, 
+/* LOO   DOO   */
+       5, 8, 19, 
+       4, 21, 
+       35, 36, 
+/* LOO   DUS   */
+       5, 8, 76, 
+       3, 70, 
+       138, 38, 
+/* GO    WIN   */
+       14, 1, 9, 
+       2, 1, 0, 3, 6, 35, 
+       54, 76, 39, 
+/* JAM   ANY   */
+       0, 62, 0, 
+       130, 
+/* EAT   STA   DRIVE STAKE*/
+       23, 58, 24, 
+       3, 52, 3, 16, 3, 53, 0, 52, 0, 67, 
+       72, 76, 49, 63, 
+/* GO    WIN   */
+       14, 1, 9, 
+       4, 3, 0, 2, 6, 35, 
+       54, 76, 39, 
+/* SAY   ANY   */
+       1, 65, 0, 
+       39, 85, 
+/* MAK   BED   */
+       0, 67, 33, 
+       39, 
+/* SCO   ANY   */
+       0, 68, 0, 
+       13, 
+/* SME   ANY   */
+       0, 69, 0, 
+       39, 
+/* EAT   ANY   */
+       0, 58, 0, 
+       131, 
+/* FEE   ANY   */
+       1, 71, 0, 
+       39, 38, 
+/* PUT   MIR   */
+       18, 18, 43, 
+       1, 17, 5, 3, 0, 17, 0, 69, 
+       59, 53, 133, 
+/* PUT   MIR   */
+       14, 18, 43, 
+       1, 17, 2, 3, 0, 17, 
+       39, 53, 134, 
+/* LOO   COA   */
+       4, 8, 15, 
+       3, 5, 
+       6, 
+/* REA   ANY   */
+       0, 41, 0, 
+       116, 
+/* LOO   MEM   */
+       4, 8, 78, 
+       3, 71, 
+       105, 
+/* LOO   NOT   */
+       4, 8, 17, 
+       3, 51, 
+       105, 
+/* INV   ANY   */
+       0, 30, 0, 
+       66, 
+/* LOO   ANY   */
+       1, 8, 0, 
+       76, 38, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUT */
+       65, 85, 84,
+       /* GO */
+       71, 79, 32,
+       /* *RUN */
+       210, 85, 78,
+       /* *WAL */
+       215, 65, 76,
+       /* *ENT */
+       197, 78, 84,
+       /* *USE */
+       213, 83, 69,
+       /* QUI */
+       81, 85, 73,
+       /* UNC */
+       85, 78, 67,
+       /* LOO */
+       76, 79, 79,
+       /* *EXA */
+       197, 88, 65,
+       /* GET */
+       71, 69, 84,
+       /* *TAK */
+       212, 65, 75,
+       /* *PIC */
+       208, 73, 67,
+       /* *CAT */
+       195, 65, 84,
+       /* *REM */
+       210, 69, 77,
+       /* *MOV */
+       205, 79, 86,
+       /* OUT */
+       79, 85, 84,
+       /* *EXI */
+       197, 88, 73,
+       /* PUT */
+       80, 85, 84,
+       /* *DRO */
+       196, 82, 79,
+       /* *LEA */
+       204, 69, 65,
+       /* *LOW */
+       204, 79, 87,
+       /* KIL */
+       75, 73, 76,
+       /* *ATT */
+       193, 84, 84,
+       /* SAV */
+       83, 65, 86,
+       /* SMO */
+       83, 77, 79,
+       /* FIN */
+       70, 73, 78,
+       /* HEL */
+       72, 69, 76,
+       /* CLI */
+       67, 76, 73,
+       /* LOC */
+       76, 79, 67,
+       /* INV */
+       73, 78, 86,
+       /* TIE */
+       84, 73, 69,
+       /* UNT */
+       85, 78, 84,
+       /* FLY */
+       70, 76, 89,
+       /* CLO */
+       67, 76, 79,
+       /* *SHU */
+       211, 72, 85,
+       /* . */
+       46, 32, 32,
+       /* OPE */
+       79, 80, 69,
+       /* *LIF */
+       204, 73, 70,
+       /* *RAI */
+       210, 65, 73,
+       /* SLE */
+       83, 76, 69,
+       /* REA */
+       82, 69, 65,
+       /* TO */
+       84, 79, 32,
+       /* UNL */
+       85, 78, 76,
+       /* *EXT */
+       197, 88, 84,
+       /* LIG */
+       76, 73, 71,
+       /* *BUR */
+       194, 85, 82,
+       /* *IGN */
+       201, 71, 78,
+       /* JUM */
+       74, 85, 77,
+       /* WAI */
+       87, 65, 73,
+       /* EMP */
+       69, 77, 80,
+       /* *SPI */
+       211, 80, 73,
+       /* CUT */
+       67, 85, 84,
+       /* *BRE */
+       194, 82, 69,
+       /* *FIL */
+       198, 73, 76,
+       /* *TRI */
+       212, 82, 73,
+       /* PUL */
+       80, 85, 76,
+       /* *RIN */
+       210, 73, 78,
+       /* EAT */
+       69, 65, 84,
+       /* *DRI */
+       196, 82, 73,
+       /* FLU */
+       70, 76, 85,
+       /* WIT */
+       87, 73, 84,
+       /* JAM */
+       74, 65, 77,
+       /* *SMA */
+       211, 77, 65,
+       /* *BUS */
+       194, 85, 83,
+       /* SAY */
+       83, 65, 89,
+       /* *YEL */
+       217, 69, 76,
+       /* MAK */
+       77, 65, 75,
+       /* SCO */
+       83, 67, 79,
+       /* SME */
+       83, 77, 69,
+       /* *SNI */
+       211, 78, 73,
+       /* FEE */
+       70, 69, 69,
+       /* *TOU */
+       212, 79, 85,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89,
+       /* NORTH */
+       78, 79, 82,
+       /* SOUTH */
+       83, 79, 85,
+       /* EAST */
+       69, 65, 83,
+       /* WEST */
+       87, 69, 83,
+       /* UP */
+       85, 80, 32,
+       /* DOWN */
+       68, 79, 87,
+       /* SHE */
+       83, 72, 69,
+       /* *END */
+       197, 78, 68,
+       /* WIN */
+       87, 73, 78,
+       /* *BOX */
+       194, 79, 88,
+       /* *LED */
+       204, 69, 68,
+       /* POL */
+       80, 79, 76,
+       /* *FLA */
+       198, 76, 65,
+       /* INV */
+       73, 78, 86,
+       /* COA */
+       67, 79, 65,
+       /* ROO */
+       82, 79, 79,
+       /* NOT */
+       78, 79, 84,
+       /* PIT */
+       80, 73, 84,
+       /* DOO */
+       68, 79, 79,
+       /* TOR */
+       84, 79, 82,
+       /* PAC */
+       80, 65, 67,
+       /* MAT */
+       77, 65, 84,
+       /* CLI */
+       67, 76, 73,
+       /* STA */
+       83, 84, 65,
+       /* BAT */
+       66, 65, 84,
+       /* *VAM */
+       214, 65, 77,
+       /* *DRA */
+       196, 82, 65,
+       /* CAS */
+       67, 65, 83,
+       /* CIG */
+       67, 73, 71,
+       /* GAR */
+       71, 65, 82,
+       /* DAI */
+       68, 65, 73,
+       /* PAS */
+       80, 65, 83,
+       /* BED */
+       66, 69, 68,
+       /* COF */
+       67, 79, 70,
+       /* *LID */
+       204, 73, 68,
+       /* POR */
+       80, 79, 82,
+       /* DUM */
+       68, 85, 77,
+       /* MAL */
+       77, 65, 76,
+       /* FIL */
+       70, 73, 76,
+       /* *NAI */
+       206, 65, 73,
+       /* BOT */
+       66, 79, 84,
+       /* *BLO */
+       194, 76, 79,
+       /* MIR */
+       77, 73, 82,
+       /* OVE */
+       79, 86, 69,
+       /* LEN */
+       76, 69, 78,
+       /* WAT */
+       87, 65, 84,
+       /* VIA */
+       86, 73, 65,
+       /* POS */
+       80, 79, 83,
+       /* *CAR */
+       195, 65, 82,
+       /* GAT */
+       71, 65, 84,
+       /* *CRO */
+       195, 82, 79,
+       /* VEN */
+       86, 69, 78,
+       /* TAB */
+       84, 65, 66,
+       /* TOI */
+       84, 79, 73,
+       /* RIN */
+       82, 73, 78,
+       /* LOC */
+       76, 79, 67,
+       /* ARO */
+       65, 82, 79,
+       /* BEL */
+       66, 69, 76,
+       /* LET */
+       76, 69, 84,
+       /* SLE */
+       83, 76, 69,
+       /* BOL */
+       66, 79, 76,
+       /* HOL */
+       72, 79, 76,
+       /* GAM */
+       71, 65, 77,
+       /* PIL */
+       80, 73, 76,
+       /* FIS */
+       70, 73, 83,
+       /* *HAN */
+       200, 65, 78,
+       /* *FOO */
+       198, 79, 79,
+       /* *FEE */
+       198, 69, 69,
+       /* HEL */
+       72, 69, 76,
+       /* NEC */
+       78, 69, 67,
+       /* *BIT */
+       194, 73, 84,
+       /* KEY */
+       75, 69, 89,
+       /* TRE */
+       84, 82, 69,
+       /* GLA */
+       71, 76, 65,
+       /* DRE */
+       68, 82, 69,
+       /* DUS */
+       68, 85, 83,
+       /* TAC */
+       84, 65, 67,
+       /* MEM */
+       77, 69, 77,
+       /*  */
+       32, 32, 32,
+       0,
+};
+const uint8_t automap[] = {
+       /* SHE */
+       83, 72, 69,
+       0,
+       /* PIL */
+       80, 73, 76,
+       3,
+       /* COA */
+       67, 79, 65,
+       5,
+       /* TAB */
+       84, 65, 66,
+       8,
+       /* TOR */
+       84, 79, 82,
+       9,
+       /* CLI */
+       67, 76, 73,
+       15,
+       /* STA */
+       83, 84, 65,
+       16,
+       /* MIR */
+       77, 73, 82,
+       17,
+       /* BOT */
+       66, 79, 84,
+       18,
+       /* BOT */
+       66, 79, 84,
+       19,
+       /* TOR */
+       84, 79, 82,
+       20,
+       /* MAT */
+       77, 65, 84,
+       21,
+       /* TAB */
+       84, 65, 66,
+       23,
+       /* TAB */
+       84, 65, 66,
+       24,
+       /* PAC */
+       80, 65, 67,
+       26,
+       /* CIG */
+       67, 73, 71,
+       27,
+       /* GAR */
+       71, 65, 82,
+       31,
+       /* CIG */
+       67, 73, 71,
+       33,
+       /* SHE */
+       83, 72, 69,
+       35,
+       /* WAT */
+       87, 65, 84,
+       37,
+       /* FIL */
+       70, 73, 76,
+       41,
+       /* VIA */
+       86, 73, 65,
+       42,
+       /* PAC */
+       80, 65, 67,
+       45,
+       /* WIN */
+       87, 73, 78,
+       46,
+       /* POS */
+       80, 79, 83,
+       47,
+       /* NOT */
+       78, 79, 84,
+       51,
+       /* BAT */
+       66, 65, 84,
+       52,
+       /* MAL */
+       77, 65, 76,
+       53,
+       /* POR */
+       80, 79, 82,
+       58,
+       /* DAI */
+       68, 65, 73,
+       61,
+       /* LET */
+       76, 69, 84,
+       65,
+       /* KEY */
+       75, 69, 89,
+       68,
+       /* DUS */
+       68, 85, 83,
+       70,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv06.c b/Applications/games/adv06.c
new file mode 100644 (file)
index 0000000..9eb4caa
--- /dev/null
@@ -0,0 +1,3082 @@
+#define NUM_OBJ 55
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 22;
+const uint8_t treasures = 5;
+const uint8_t lastloc = 35;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+46, 0 };
+const uint8_t loctxt_1[] = {
+111, 110, 101, 32, 109, 97, 110, 32, 115, 99, 111, 117, 116, 115, 104, 105, 112, 0 };
+const uint8_t loctxt_2[] = {
+115, 109, 97, 108, 108, 32, 97, 105, 114, 108, 111, 99, 107, 0 };
+const uint8_t loctxt_3[] = {
+108, 97, 114, 103, 101, 32, 99, 97, 118, 101, 114, 110, 0 };
+const uint8_t loctxt_4[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 112, 108, 97, 110, 101, 116, 111, 105, 100, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 112, 108, 97, 110, 101, 116, 111, 105, 100, 0 };
+const uint8_t loctxt_6[] = {
+115, 116, 114, 97, 110, 103, 101, 32, 104, 101, 120, 97, 103, 111, 110, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_7[] = {
+115, 116, 111, 114, 97, 103, 101, 32, 104, 111, 108, 100, 0 };
+const uint8_t loctxt_8[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 112, 108, 97, 110, 101, 116, 111, 105, 100, 0 };
+const uint8_t loctxt_9[] = {
+76, 97, 114, 103, 101, 32, 103, 114, 97, 115, 115, 121, 32, 112, 108, 97, 105, 110, 32, 97, 116, 32, 101, 100, 103, 101, 32, 111, 102, 32, 97, 32, 106, 117, 110, 103, 108, 101, 0 };
+const uint8_t loctxt_10[] = {
+109, 101, 116, 104, 97, 110, 101, 32, 115, 110, 111, 119, 32, 115, 116, 111, 114, 109, 0 };
+const uint8_t loctxt_11[] = {
+115, 109, 97, 108, 108, 32, 100, 101, 114, 101, 108, 105, 99, 116, 32, 115, 112, 97, 99, 101, 99, 114, 97, 102, 116, 0 };
+const uint8_t loctxt_12[] = {
+42, 73, 39, 109, 32, 111, 117, 116, 115, 105, 100, 101, 32, 116, 104, 101, 32, 97, 105, 114, 108, 111, 99, 107, 32, 111, 110, 32, 97, 32, 108, 101, 100, 103, 101, 46, 10, 84, 104, 101, 32, 103, 114, 111, 117, 110, 100, 32, 105, 115, 32, 57, 48, 32, 109, 101, 116, 101, 114, 115, 32, 98, 101, 108, 111, 119, 0 };
+const uint8_t loctxt_13[] = {
+65, 108, 105, 101, 110, 32, 65, 114, 116, 32, 77, 117, 115, 101, 117, 109, 0 };
+const uint8_t loctxt_14[] = {
+100, 101, 115, 101, 114, 116, 101, 100, 32, 74, 111, 118, 105, 97, 110, 32, 109, 105, 110, 105, 110, 103, 32, 99, 111, 108, 111, 110, 121, 0 };
+const uint8_t loctxt_15[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 106, 117, 110, 103, 108, 101, 0 };
+const uint8_t loctxt_16[] = {
+46, 0 };
+const uint8_t loctxt_17[] = {
+66, 76, 65, 67, 75, 32, 69, 77, 80, 84, 73, 78, 69, 83, 83, 0 };
+const uint8_t loctxt_18[] = {
+109, 101, 116, 104, 97, 110, 101, 32, 115, 110, 111, 119, 32, 115, 116, 111, 114, 109, 0 };
+const uint8_t loctxt_19[] = {
+109, 101, 116, 104, 97, 110, 101, 32, 115, 110, 111, 119, 32, 115, 116, 111, 114, 109, 0 };
+const uint8_t loctxt_20[] = {
+109, 101, 116, 104, 97, 110, 101, 32, 115, 110, 111, 119, 32, 115, 116, 111, 114, 109, 0 };
+const uint8_t loctxt_21[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 114, 117, 105, 110, 115, 32, 111, 102, 32, 97, 110, 32, 105, 110, 116, 101, 114, 103, 97, 108, 97, 116, 105, 99, 32, 90, 79, 79, 0 };
+const uint8_t loctxt_22[] = {
+115, 116, 111, 114, 97, 103, 101, 32, 104, 111, 108, 100, 32, 111, 102, 32, 116, 104, 101, 32, 109, 111, 116, 104, 101, 114, 32, 115, 104, 105, 112, 0 };
+const uint8_t loctxt_23[] = {
+109, 97, 105, 110, 116, 101, 110, 97, 110, 99, 101, 32, 99, 114, 97, 119, 108, 32, 119, 97, 121, 0 };
+const uint8_t loctxt_24[] = {
+104, 111, 108, 108, 111, 119, 32, 105, 99, 101, 32, 109, 111, 117, 110, 100, 0 };
+const uint8_t loctxt_25[] = {
+0 };
+const uint8_t loctxt_26[] = {
+0 };
+const uint8_t loctxt_27[] = {
+0 };
+const uint8_t loctxt_28[] = {
+0 };
+const uint8_t loctxt_29[] = {
+0 };
+const uint8_t loctxt_30[] = {
+0 };
+const uint8_t loctxt_31[] = {
+0 };
+const uint8_t loctxt_32[] = {
+0 };
+const uint8_t loctxt_33[] = {
+0 };
+const uint8_t loctxt_34[] = {
+0 };
+const uint8_t loctxt_35[] = {
+108, 111, 116, 32, 111, 102, 32, 84, 82, 79, 85, 66, 76, 69, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 0, 0, 0, 7 } }, 
+               { loctxt_2,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_3,  { 0, 0, 0, 0, 8, 0 } }, 
+               { loctxt_4,  { 5, 8, 5, 8, 0, 0 } }, 
+               { loctxt_5,  { 8, 5, 8, 4, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_7,  { 0, 0, 0, 0, 1, 0 } }, 
+               { loctxt_8,  { 4, 5, 5, 4, 0, 0 } }, 
+               { loctxt_9,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 19, 19, 19, 20, 0, 0 } }, 
+               { loctxt_11,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 15, 15, 21, 9, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 19, 20, 10, 20, 0, 0 } }, 
+               { loctxt_19,  { 10, 18, 20, 18, 0, 0 } }, 
+               { loctxt_20,  { 20, 20, 20, 20, 0, 0 } }, 
+               { loctxt_21,  { 0, 15, 0, 0, 0, 0 } }, 
+               { loctxt_22,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_23,  { 0, 0, 0, 0, 7, 0 } }, 
+               { loctxt_24,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_25,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_26,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_27,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_28,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_31,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_32,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_33,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_34,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_35,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       0,
+       0,
+       7,
+       13,
+       1,
+       7,
+       0,
+       17,
+       0,
+       7,
+       0,
+       1,
+       0,
+       6,
+       8,
+       0,
+       2,
+       2,
+       0,
+       0,
+       2,
+       11,
+       0,
+       3,
+       6,
+       0,
+       6,
+       0,
+       18,
+       21,
+       0,
+       11,
+       22,
+       14,
+       23,
+       23,
+       0,
+       0,
+       0,
+       0,
+       14,
+       0,
+       24,
+       0,
+       0,
+       0,
+       13,
+       0,
+       15,
+       13,
+       6,
+       0,
+       7,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+46, 0 };
+const uint8_t objtxt_1[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 102, 108, 105, 99, 107, 101, 114, 105, 110, 103, 32, 99, 117, 114, 116, 97, 105, 110, 32, 111, 102, 32, 108, 105, 103, 104, 116, 0 };
+const uint8_t objtxt_2[] = {
+83, 99, 111, 117, 116, 115, 104, 105, 112, 0 };
+const uint8_t objtxt_3[] = {
+77, 97, 105, 110, 116, 101, 110, 97, 110, 99, 101, 32, 97, 99, 99, 101, 115, 115, 32, 104, 97, 116, 99, 104, 0 };
+const uint8_t objtxt_4[] = {
+65, 108, 105, 101, 110, 32, 115, 105, 103, 110, 0 };
+const uint8_t objtxt_5[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 99, 111, 110, 115, 111, 108, 101, 0 };
+const uint8_t objtxt_6[] = {
+83, 112, 97, 99, 101, 32, 115, 117, 105, 116, 0 };
+const uint8_t objtxt_7[] = {
+119, 104, 105, 99, 104, 32, 73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_8[] = {
+66, 108, 97, 99, 107, 32, 72, 111, 108, 101, 0 };
+const uint8_t objtxt_9[] = {
+46, 0 };
+const uint8_t objtxt_10[] = {
+80, 104, 97, 115, 101, 114, 0 };
+const uint8_t objtxt_11[] = {
+80, 104, 97, 115, 101, 114, 0 };
+const uint8_t objtxt_12[] = {
+67, 108, 111, 115, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_13[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_14[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 102, 108, 105, 99, 107, 101, 114, 105, 110, 103, 32, 99, 117, 114, 116, 97, 105, 110, 32, 111, 102, 32, 108, 105, 103, 104, 116, 0 };
+const uint8_t objtxt_15[] = {
+67, 97, 118, 101, 0 };
+const uint8_t objtxt_16[] = {
+69, 109, 112, 116, 121, 32, 102, 108, 97, 115, 107, 0 };
+const uint8_t objtxt_17[] = {
+82, 101, 100, 32, 98, 117, 116, 116, 111, 110, 32, 98, 121, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_18[] = {
+67, 108, 111, 115, 101, 100, 32, 111, 117, 116, 101, 114, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_19[] = {
+79, 80, 101, 110, 32, 111, 117, 116, 101, 114, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_20[] = {
+67, 108, 111, 115, 101, 100, 32, 105, 110, 110, 101, 114, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_21[] = {
+79, 112, 101, 110, 32, 105, 110, 110, 101, 114, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_22[] = {
+65, 108, 105, 101, 110, 32, 109, 97, 99, 104, 105, 110, 101, 0 };
+const uint8_t objtxt_23[] = {
+72, 111, 115, 101, 32, 99, 111, 110, 110, 101, 99, 116, 115, 32, 109, 121, 32, 115, 117, 105, 116, 32, 116, 111, 32, 109, 97, 99, 104, 105, 110, 101, 0 };
+const uint8_t objtxt_24[] = {
+76, 97, 114, 103, 101, 32, 98, 111, 117, 108, 100, 101, 114, 0 };
+const uint8_t objtxt_25[] = {
+83, 109, 97, 108, 108, 32, 112, 105, 101, 99, 101, 32, 111, 102, 32, 112, 108, 97, 115, 116, 105, 99, 32, 102, 108, 117, 115, 104, 32, 105, 110, 32, 116, 104, 101, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_26[] = {
+46, 0 };
+const uint8_t objtxt_27[] = {
+82, 111, 100, 32, 106, 117, 116, 116, 105, 110, 103, 32, 115, 116, 114, 97, 105, 103, 104, 116, 32, 111, 117, 116, 32, 111, 102, 32, 116, 104, 101, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_28[] = {
+66, 114, 111, 107, 101, 110, 32, 112, 105, 101, 99, 101, 32, 111, 102, 32, 114, 111, 100, 0 };
+const uint8_t objtxt_29[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 108, 105, 103, 104, 116, 32, 102, 97, 114, 32, 116, 111, 32, 116, 104, 101, 32, 78, 79, 82, 84, 72, 0 };
+const uint8_t objtxt_30[] = {
+82, 105, 103, 105, 108, 105, 97, 110, 32, 68, 105, 97, 45, 73, 99, 101, 32, 72, 111, 117, 110, 100, 0 };
+const uint8_t objtxt_31[] = {
+83, 116, 117, 110, 110, 101, 100, 32, 68, 105, 97, 45, 73, 99, 101, 32, 72, 111, 117, 110, 100, 0 };
+const uint8_t objtxt_32[] = {
+86, 105, 101, 119, 112, 111, 114, 116, 0 };
+const uint8_t objtxt_33[] = {
+83, 105, 103, 110, 58, 32, 34, 76, 101, 97, 118, 101, 32, 84, 114, 101, 97, 115, 117, 114, 101, 115, 32, 104, 101, 114, 101, 32, 115, 97, 121, 58, 32, 83, 67, 79, 82, 69, 34, 0 };
+const uint8_t objtxt_34[] = {
+42, 32, 65, 78, 67, 73, 69, 78, 84, 32, 70, 76, 65, 83, 75, 32, 83, 65, 85, 82, 73, 65, 78, 32, 66, 82, 65, 78, 68, 89, 32, 42, 0 };
+const uint8_t objtxt_35[] = {
+69, 109, 112, 116, 121, 32, 99, 114, 121, 115, 116, 97, 108, 32, 104, 111, 108, 100, 101, 114, 0 };
+const uint8_t objtxt_36[] = {
+66, 114, 111, 107, 101, 110, 32, 112, 105, 101, 99, 101, 115, 32, 111, 102, 32, 80, 111, 119, 101, 114, 32, 67, 114, 121, 115, 116, 97, 108, 0 };
+const uint8_t objtxt_37[] = {
+66, 114, 111, 107, 101, 110, 32, 114, 111, 100, 32, 105, 110, 32, 112, 111, 119, 101, 114, 32, 104, 111, 108, 100, 101, 114, 0 };
+const uint8_t objtxt_38[] = {
+76, 97, 114, 103, 101, 32, 105, 99, 101, 32, 109, 111, 117, 110, 100, 0 };
+const uint8_t objtxt_39[] = {
+65, 110, 99, 105, 101, 110, 116, 32, 105, 99, 101, 32, 112, 105, 99, 107, 0 };
+const uint8_t objtxt_40[] = {
+66, 114, 111, 107, 101, 110, 32, 105, 99, 101, 32, 112, 105, 99, 107, 0 };
+const uint8_t objtxt_41[] = {
+83, 104, 111, 114, 116, 32, 116, 119, 105, 115, 116, 101, 100, 32, 112, 105, 101, 99, 101, 32, 111, 102, 32, 109, 101, 116, 97, 108, 0 };
+const uint8_t objtxt_42[] = {
+69, 110, 116, 114, 97, 110, 99, 101, 32, 116, 111, 32, 97, 32, 99, 114, 97, 119, 108, 119, 97, 121, 0 };
+const uint8_t objtxt_43[] = {
+42, 32, 82, 73, 71, 73, 76, 73, 65, 78, 32, 73, 67, 69, 32, 68, 73, 65, 77, 79, 78, 68, 32, 42, 0 };
+const uint8_t objtxt_44[] = {
+42, 32, 83, 84, 82, 65, 78, 71, 69, 32, 65, 76, 73, 69, 78, 32, 66, 69, 76, 84, 32, 42, 0 };
+const uint8_t objtxt_45[] = {
+119, 104, 105, 99, 104, 32, 73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_46[] = {
+38, 32, 105, 116, 115, 32, 97, 99, 116, 105, 118, 97, 116, 101, 100, 0 };
+const uint8_t objtxt_47[] = {
+42, 32, 82, 65, 82, 69, 32, 65, 76, 73, 69, 78, 32, 80, 65, 73, 78, 84, 73, 78, 71, 32, 42, 0 };
+const uint8_t objtxt_48[] = {
+82, 111, 99, 107, 32, 100, 117, 115, 116, 0 };
+const uint8_t objtxt_49[] = {
+67, 101, 110, 116, 117, 114, 105, 111, 110, 32, 83, 108, 105, 109, 101, 32, 84, 114, 101, 101, 115, 0 };
+const uint8_t objtxt_50[] = {
+42, 32, 65, 76, 73, 69, 78, 32, 83, 67, 85, 76, 80, 84, 85, 82, 69, 32, 42, 0 };
+const uint8_t objtxt_51[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 108, 111, 111, 107, 105, 110, 103, 32, 103, 111, 103, 103, 108, 101, 115, 0 };
+const uint8_t objtxt_52[] = {
+119, 104, 105, 99, 104, 32, 73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_53[] = {
+83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_54[] = {
+66, 114, 111, 107, 101, 110, 32, 115, 112, 108, 105, 110, 116, 101, 114, 101, 100, 32, 115, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_55[] = {
+69, 86, 69, 82, 89, 84, 72, 73, 78, 71, 32, 72, 65, 83, 32, 65, 32, 66, 76, 85, 69, 73, 83, 72, 32, 84, 73, 78, 84, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 58, 32, 54, 32, 34, 83, 84, 82, 65, 78, 71, 69, 32, 79, 68, 89, 83, 83, 69, 89, 34, 32, 98, 121, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 46, 10, 68, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 32, 116, 104, 101, 32, 78, 111, 118, 97, 107, 115, 46, 10, 0 };
+const uint8_t msgtxt_2[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_3[] = {
+79, 75, 0 };
+const uint8_t msgtxt_4[] = {
+80, 114, 101, 115, 115, 117, 114, 101, 32, 103, 97, 117, 103, 101, 32, 115, 97, 121, 115, 0 };
+const uint8_t msgtxt_5[] = {
+109, 111, 118, 101, 115, 32, 116, 105, 108, 108, 32, 115, 117, 105, 116, 32, 97, 105, 114, 32, 101, 120, 112, 101, 110, 100, 101, 100, 46, 32, 65, 105, 114, 32, 111, 117, 116, 115, 105, 100, 101, 32, 115, 117, 105, 116, 32, 105, 115, 0 };
+const uint8_t msgtxt_6[] = {
+84, 104, 101, 32, 111, 117, 116, 115, 105, 100, 101, 32, 104, 97, 115, 32, 97, 32, 112, 114, 101, 115, 115, 117, 114, 101, 32, 103, 97, 117, 103, 101, 32, 38, 32, 97, 32, 99, 111, 110, 110, 101, 99, 116, 101, 114, 32, 102, 111, 114, 32, 97, 32, 104, 111, 115, 101, 46, 0 };
+const uint8_t msgtxt_7[] = {
+98, 114, 101, 97, 116, 104, 97, 98, 108, 101, 46, 0 };
+const uint8_t msgtxt_8[] = {
+110, 111, 116, 0 };
+const uint8_t msgtxt_9[] = {
+83, 116, 97, 108, 101, 32, 97, 105, 114, 32, 105, 115, 0 };
+const uint8_t msgtxt_10[] = {
+73, 116, 32, 105, 115, 0 };
+const uint8_t msgtxt_11[] = {
+77, 121, 32, 97, 105, 114, 32, 114, 97, 110, 32, 111, 117, 116, 33, 0 };
+const uint8_t msgtxt_12[] = {
+83, 111, 109, 101, 32, 71, 65, 83, 32, 99, 111, 109, 101, 115, 32, 111, 117, 116, 32, 111, 102, 32, 116, 104, 101, 32, 104, 111, 115, 101, 32, 102, 111, 114, 32, 97, 119, 104, 105, 108, 101, 32, 116, 104, 101, 110, 32, 115, 116, 111, 112, 115, 46, 0 };
+const uint8_t msgtxt_13[] = {
+10, 80, 104, 97, 115, 101, 114, 32, 105, 115, 32, 115, 101, 116, 32, 111, 110, 58, 0 };
+const uint8_t msgtxt_14[] = {
+68, 69, 83, 84, 82, 79, 89, 33, 0 };
+const uint8_t msgtxt_15[] = {
+115, 116, 117, 110, 46, 0 };
+const uint8_t msgtxt_16[] = {
+34, 84, 79, 32, 83, 84, 85, 78, 34, 32, 111, 114, 32, 34, 84, 79, 32, 68, 69, 83, 84, 82, 79, 89, 34, 32, 63, 0 };
+const uint8_t msgtxt_17[] = {
+40, 117, 115, 101, 32, 50, 32, 119, 111, 114, 100, 115, 41, 0 };
+const uint8_t msgtxt_18[] = {
+10, 77, 121, 32, 115, 117, 105, 116, 32, 112, 111, 112, 112, 101, 100, 32, 111, 112, 101, 110, 33, 0 };
+const uint8_t msgtxt_19[] = {
+87, 97, 114, 110, 105, 110, 103, 32, 108, 105, 103, 104, 116, 32, 115, 97, 121, 115, 58, 32, 34, 80, 79, 87, 69, 82, 32, 67, 82, 89, 83, 84, 65, 76, 32, 68, 65, 77, 65, 71, 69, 68, 34, 0 };
+const uint8_t msgtxt_20[] = {
+66, 108, 117, 101, 32, 98, 117, 116, 116, 111, 110, 32, 109, 97, 114, 107, 101, 100, 32, 34, 66, 76, 65, 83, 84, 32, 79, 70, 70, 34, 32, 38, 32, 97, 32, 117, 110, 109, 97, 114, 107, 101, 100, 32, 114, 101, 100, 32, 98, 117, 116, 116, 111, 110, 0 };
+const uint8_t msgtxt_21[] = {
+67, 111, 110, 115, 111, 108, 101, 32, 114, 101, 112, 108, 105, 101, 115, 58, 32, 34, 73, 78, 83, 85, 70, 70, 73, 67, 73, 69, 78, 84, 32, 80, 79, 87, 69, 82, 34, 0 };
+const uint8_t msgtxt_22[] = {
+65, 108, 105, 101, 110, 32, 115, 99, 114, 105, 112, 116, 32, 99, 111, 118, 101, 114, 115, 32, 105, 116, 0 };
+const uint8_t msgtxt_23[] = {
+73, 32, 102, 105, 114, 101, 32, 116, 104, 101, 32, 80, 104, 97, 115, 101, 114, 44, 0 };
+const uint8_t msgtxt_24[] = {
+73, 32, 100, 101, 115, 116, 114, 111, 121, 101, 100, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_25[] = {
+65, 105, 114, 32, 105, 115, 32, 103, 101, 116, 116, 105, 110, 103, 32, 115, 116, 97, 108, 101, 33, 32, 82, 101, 97, 100, 32, 103, 97, 117, 103, 101, 33, 0 };
+const uint8_t msgtxt_26[] = {
+119, 111, 110, 39, 116, 32, 98, 117, 100, 103, 101, 33, 0 };
+const uint8_t msgtxt_27[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 46, 0 };
+const uint8_t msgtxt_28[] = {
+73, 116, 115, 32, 115, 111, 109, 101, 32, 115, 111, 114, 116, 32, 111, 102, 32, 102, 111, 114, 99, 101, 32, 102, 105, 101, 108, 100, 46, 0 };
+const uint8_t msgtxt_29[] = {
+73, 32, 114, 117, 105, 110, 101, 100, 32, 116, 104, 101, 32, 115, 104, 105, 112, 33, 0 };
+const uint8_t msgtxt_30[] = {
+69, 105, 116, 104, 101, 114, 32, 73, 32, 109, 105, 115, 115, 101, 100, 32, 111, 114, 32, 98, 101, 97, 109, 32, 119, 97, 115, 32, 97, 98, 115, 111, 114, 98, 101, 100, 32, 119, 105, 116, 104, 111, 117, 116, 32, 118, 105, 115, 105, 98, 108, 101, 32, 101, 102, 102, 101, 99, 116, 33, 0 };
+const uint8_t msgtxt_31[] = {
+73, 116, 115, 32, 101, 109, 112, 116, 121, 46, 0 };
+const uint8_t msgtxt_32[] = {
+67, 104, 97, 114, 103, 101, 32, 108, 101, 102, 116, 32, 114, 101, 103, 105, 115, 116, 101, 114, 115, 58, 0 };
+const uint8_t msgtxt_33[] = {
+73, 116, 32, 115, 101, 101, 109, 115, 32, 116, 111, 32, 98, 101, 32, 97, 115, 32, 102, 97, 114, 0 };
+const uint8_t msgtxt_34[] = {
+111, 117, 116, 0 };
+const uint8_t msgtxt_35[] = {
+105, 110, 0 };
+const uint8_t msgtxt_36[] = {
+97, 115, 32, 105, 116, 32, 119, 105, 108, 108, 32, 103, 111, 46, 0 };
+const uint8_t msgtxt_37[] = {
+79, 100, 100, 32, 105, 116, 32, 111, 110, 108, 121, 32, 114, 101, 113, 117, 105, 114, 101, 100, 32, 118, 101, 114, 121, 32, 108, 105, 116, 116, 108, 101, 32, 102, 111, 114, 99, 101, 0 };
+const uint8_t msgtxt_38[] = {
+102, 111, 114, 32, 105, 116, 32, 116, 111, 32, 98, 114, 101, 97, 107, 32, 111, 102, 102, 32, 105, 110, 32, 109, 121, 32, 104, 97, 110, 100, 32, 119, 105, 116, 104, 32, 97, 10, 67, 82, 89, 83, 84, 65, 76, 76, 73, 78, 69, 32, 115, 110, 97, 112, 33, 0 };
+const uint8_t msgtxt_39[] = {
+72, 79, 87, 63, 0 };
+const uint8_t msgtxt_40[] = {
+84, 104, 101, 32, 112, 108, 97, 115, 116, 105, 99, 32, 71, 76, 79, 87, 69, 68, 32, 98, 114, 105, 101, 102, 108, 121, 0 };
+const uint8_t msgtxt_41[] = {
+116, 105, 109, 101, 115, 46, 0 };
+const uint8_t msgtxt_42[] = {
+102, 111, 114, 32, 105, 116, 32, 116, 111, 32, 115, 104, 97, 116, 116, 101, 114, 33, 0 };
+const uint8_t msgtxt_43[] = {
+73, 32, 102, 101, 101, 108, 32, 115, 116, 114, 97, 110, 103, 101, 108, 121, 32, 100, 105, 115, 111, 114, 105, 101, 110, 116, 101, 100, 32, 102, 111, 114, 32, 97, 32, 109, 111, 109, 101, 110, 116, 33, 0 };
+const uint8_t msgtxt_44[] = {
+116, 111, 32, 115, 108, 105, 100, 101, 0 };
+const uint8_t msgtxt_45[] = {
+73, 99, 101, 32, 72, 111, 117, 110, 100, 32, 97, 116, 116, 97, 99, 107, 115, 32, 109, 101, 32, 117, 110, 101, 120, 112, 101, 99, 116, 105, 100, 108, 121, 33, 0 };
+const uint8_t msgtxt_46[] = {
+73, 116, 32, 119, 111, 107, 101, 32, 117, 112, 33, 0 };
+const uint8_t msgtxt_47[] = {
+73, 32, 102, 111, 117, 110, 100, 32, 110, 111, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_48[] = {
+87, 101, 39, 114, 101, 32, 100, 114, 105, 102, 116, 105, 110, 103, 32, 105, 110, 32, 115, 112, 97, 99, 101, 33, 0 };
+const uint8_t msgtxt_49[] = {
+73, 32, 115, 101, 101, 58, 32, 97, 32, 98, 108, 97, 99, 107, 32, 98, 117, 116, 116, 111, 110, 44, 32, 97, 32, 119, 104, 105, 116, 101, 32, 98, 117, 116, 116, 111, 110, 44, 32, 97, 32, 104, 111, 115, 101, 46, 0 };
+const uint8_t msgtxt_50[] = {
+72, 111, 115, 101, 32, 114, 105, 112, 115, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_51[] = {
+84, 105, 103, 104, 116, 32, 102, 105, 116, 33, 0 };
+const uint8_t msgtxt_52[] = {
+76, 105, 102, 116, 32, 111, 102, 102, 33, 33, 32, 65, 102, 116, 101, 114, 32, 97, 32, 98, 114, 105, 101, 102, 32, 102, 108, 105, 103, 104, 116, 32, 119, 101, 32, 97, 114, 114, 105, 118, 101, 46, 46, 46, 0 };
+const uint8_t msgtxt_53[] = {
+84, 104, 101, 32, 73, 99, 101, 32, 72, 111, 117, 110, 100, 32, 98, 117, 114, 114, 111, 119, 115, 32, 111, 102, 102, 46, 46, 46, 0 };
+const uint8_t msgtxt_54[] = {
+73, 99, 101, 32, 102, 105, 108, 108, 115, 32, 98, 97, 99, 107, 32, 105, 110, 32, 97, 114, 111, 117, 110, 100, 32, 109, 101, 32, 97, 115, 32, 73, 32, 100, 105, 103, 32, 109, 121, 32, 119, 97, 121, 32, 105, 110, 46, 32, 84, 104, 101, 10, 112, 105, 99, 107, 32, 98, 114, 111, 107, 101, 32, 98, 117, 116, 32, 73, 32, 109, 97, 100, 101, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_55[] = {
+73, 99, 101, 32, 105, 115, 32, 118, 101, 114, 121, 32, 115, 109, 111, 111, 116, 104, 32, 38, 32, 104, 97, 114, 100, 33, 0 };
+const uint8_t msgtxt_56[] = {
+73, 32, 115, 108, 105, 100, 101, 32, 98, 97, 99, 107, 32, 100, 111, 119, 110, 46, 0 };
+const uint8_t msgtxt_57[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 107, 110, 111, 119, 32, 119, 104, 101, 114, 101, 32, 116, 111, 32, 108, 111, 111, 107, 0 };
+const uint8_t msgtxt_58[] = {
+84, 114, 121, 58, 32, 34, 83, 72, 79, 79, 84, 32, 83, 79, 77, 69, 84, 72, 73, 78, 71, 34, 0 };
+const uint8_t msgtxt_59[] = {
+83, 97, 121, 32, 97, 103, 97, 105, 110, 32, 38, 32, 117, 115, 101, 32, 97, 32, 99, 111, 108, 111, 114, 0 };
+const uint8_t msgtxt_60[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 119, 114, 105, 116, 105, 110, 103, 32, 116, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_61[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 100, 111, 32, 116, 104, 97, 116, 0 };
+const uint8_t msgtxt_62[] = {
+87, 104, 111, 111, 111, 115, 104, 33, 0 };
+const uint8_t msgtxt_63[] = {
+84, 104, 101, 32, 103, 114, 97, 118, 105, 116, 121, 32, 104, 101, 114, 101, 32, 105, 115, 32, 118, 101, 114, 121, 0 };
+const uint8_t msgtxt_64[] = {
+115, 116, 114, 111, 110, 103, 46, 0 };
+const uint8_t msgtxt_65[] = {
+119, 101, 97, 107, 46, 0 };
+const uint8_t msgtxt_66[] = {
+73, 116, 115, 32, 115, 116, 117, 99, 107, 46, 0 };
+const uint8_t msgtxt_67[] = {
+73, 39, 109, 32, 83, 81, 85, 65, 83, 72, 69, 68, 33, 0 };
+const uint8_t msgtxt_68[] = {
+84, 104, 101, 32, 112, 111, 119, 101, 114, 32, 99, 114, 121, 115, 116, 97, 108, 32, 119, 97, 115, 32, 105, 110, 32, 116, 104, 101, 32, 115, 104, 97, 112, 101, 32, 111, 102, 32, 97, 32, 116, 104, 105, 110, 32, 114, 111, 100, 46, 0 };
+const uint8_t msgtxt_69[] = {
+73, 32, 102, 101, 101, 108, 32, 76, 73, 71, 72, 84, 32, 72, 69, 65, 68, 69, 68, 33, 0 };
+const uint8_t msgtxt_70[] = {
+73, 116, 32, 102, 108, 111, 97, 116, 115, 33, 0 };
+const uint8_t msgtxt_71[] = {
+65, 32, 103, 101, 110, 116, 108, 101, 32, 116, 111, 117, 99, 104, 32, 119, 105, 108, 108, 32, 119, 111, 114, 107, 32, 119, 111, 110, 100, 101, 114, 115, 33, 0 };
+const uint8_t msgtxt_72[] = {
+73, 116, 32, 115, 104, 111, 117, 108, 100, 32, 102, 105, 116, 46, 32, 73, 116, 32, 104, 97, 115, 32, 97, 32, 108, 97, 114, 103, 101, 32, 98, 117, 99, 107, 108, 101, 46, 0 };
+const uint8_t msgtxt_73[] = {
+80, 97, 105, 110, 116, 105, 110, 103, 32, 105, 115, 32, 111, 102, 32, 97, 110, 32, 65, 108, 105, 101, 110, 32, 116, 119, 105, 115, 116, 105, 110, 103, 32, 97, 32, 98, 117, 99, 107, 108, 101, 32, 111, 110, 32, 97, 32, 98, 101, 108, 116, 46, 0 };
+const uint8_t msgtxt_74[] = {
+87, 105, 114, 105, 110, 103, 32, 98, 101, 104, 105, 110, 100, 32, 112, 108, 97, 115, 116, 105, 99, 32, 115, 104, 111, 114, 116, 115, 32, 38, 32, 73, 39, 109, 32, 101, 108, 101, 99, 116, 114, 111, 99, 117, 116, 101, 100, 33, 0 };
+const uint8_t msgtxt_75[] = {
+73, 32, 115, 101, 101, 32, 97, 32, 112, 105, 99, 116, 117, 114, 101, 32, 111, 102, 32, 97, 110, 32, 65, 76, 73, 69, 78, 32, 84, 69, 78, 84, 65, 67, 76, 69, 46, 0 };
+const uint8_t msgtxt_76[] = {
+87, 111, 110, 100, 101, 114, 102, 117, 108, 46, 32, 73, 116, 32, 65, 84, 69, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_77[] = {
+73, 116, 32, 105, 115, 32, 111, 102, 32, 97, 110, 32, 97, 108, 105, 101, 110, 32, 98, 101, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_78[] = {
+73, 116, 115, 32, 119, 101, 97, 114, 105, 110, 103, 32, 111, 110, 108, 121, 32, 97, 32, 115, 116, 114, 97, 110, 103, 101, 32, 98, 101, 108, 116, 33, 0 };
+const uint8_t msgtxt_79[] = {
+87, 97, 116, 99, 104, 32, 105, 116, 33, 32, 73, 116, 115, 32, 107, 110, 111, 119, 110, 32, 116, 111, 32, 115, 112, 105, 116, 32, 109, 111, 108, 116, 101, 110, 32, 68, 73, 65, 77, 79, 78, 68, 83, 33, 0 };
+const uint8_t msgtxt_80[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 98, 111, 120, 32, 111, 110, 32, 105, 116, 32, 119, 105, 116, 104, 32, 97, 32, 121, 101, 108, 108, 111, 119, 32, 98, 117, 116, 116, 111, 110, 46, 0 };
+const uint8_t msgtxt_81[] = {
+73, 32, 106, 117, 115, 116, 32, 115, 101, 101, 32, 115, 104, 97, 100, 101, 115, 32, 111, 102, 32, 98, 108, 97, 99, 107, 44, 32, 105, 116, 32, 109, 97, 107, 101, 115, 32, 109, 121, 32, 101, 121, 101, 115, 32, 115, 119, 105, 109, 33, 0 };
+const uint8_t msgtxt_82[] = {
+73, 32, 116, 104, 105, 110, 107, 32, 105, 116, 115, 32, 98, 114, 111, 107, 101, 110, 33, 0 };
+const uint8_t msgtxt_83[] = {
+73, 32, 102, 111, 117, 110, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_84[] = {
+79, 117, 99, 104, 33, 0 };
+const uint8_t msgtxt_85[] = {
+105, 116, 115, 32, 115, 116, 117, 110, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_86[] = {
+84, 104, 101, 32, 109, 101, 116, 97, 108, 32, 104, 101, 108, 112, 101, 100, 33, 0 };
+const uint8_t msgtxt_87[] = {
+71, 101, 116, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 55, 32, 34, 77, 89, 83, 84, 69, 82, 89, 32, 70, 85, 78, 32, 72, 79, 85, 83, 69, 34, 32, 102, 114, 111, 109, 32, 121, 111, 117, 114, 32, 102, 97, 118, 111, 114, 105, 116, 101, 32, 68, 101, 97, 108, 101, 114, 33, 10, 72, 97, 118, 101, 32, 121, 111, 117, 32, 103, 111, 116, 116, 101, 110, 32, 121, 111, 117, 114, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 84, 45, 83, 72, 73, 82, 84, 32, 121, 101, 116, 63, 10, 0 };
+const uint8_t msgtxt_88[] = {
+84, 105, 100, 97, 108, 32, 102, 111, 114, 99, 101, 32, 114, 105, 112, 115, 32, 109, 101, 32, 97, 112, 97, 114, 116, 33, 0 };
+const uint8_t msgtxt_89[] = {
+73, 39, 109, 32, 110, 111, 116, 32, 119, 101, 97, 114, 105, 110, 103, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_90[] = {
+77, 121, 32, 104, 97, 110, 100, 32, 119, 101, 110, 116, 32, 84, 72, 82, 79, 85, 71, 72, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_91[] = {
+68, 111, 110, 39, 116, 32, 104, 97, 118, 101, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_92[] = {
+0 };
+const uint8_t msgtxt_93[] = {
+0 };
+const uint8_t msgtxt_94[] = {
+0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+       msgtxt_92,
+       msgtxt_93,
+       msgtxt_94,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  100   JOVIAN SQUASH*/
+       171, 
+       4, 14, 6, 45, 
+       113, 114, 117, 63, 
+/* AUTO  100   AIR GOOD*/
+       168, 
+       2, 18, 0, 2, 
+       60, 
+/* AUTO  100   JOVIAN SQUASH*/
+       171, 
+       4, 14, 6, 46, 
+       113, 114, 117, 63, 
+/* AUTO  100   INTRO*/
+       179, 
+       9, 1, 0, 1, 0, 5, 0, 6, 
+       58, 73, 58, 58, 
+/* AUTO  0     SET PHASER*/
+       207, 
+       0, 2, 0, 28, 0, 2, 
+       81, 79, 81, 1, 
+/* AUTO  0     AIR SUIT*/
+       211, 
+       0, 1, 0, 110, 0, 1, 0, 6, 
+       81, 79, 81, 54, 
+/* AUTO  0     ROD COUNTER*/
+       207, 
+       0, 3, 0, 2, 0, 3, 
+       81, 79, 81, 80, 
+/* AUTO  0     STRT RM.GOGGLE CNTR*/
+       211, 
+       0, 1, 0, 5, 0, 20, 0, 5, 
+       54, 81, 79, 81, 
+/* AUTO  100   AIR SUIT*/
+       170, 
+       3, 7, 0, 1, 
+       81, 77, 73, 
+/* AUTO  0     */
+       196, 
+       15, 27, 
+       25, 
+/* AUTO  0     */
+       197, 
+       15, 0, 
+       11, 61, 
+/* AUTO  0     */
+       196, 
+       0, 1, 
+       81, 
+/* AUTO  100   ACT BELT*/
+       176, 
+       1, 44, 13, 46, 6, 46, 0, 46, 
+       52, 
+/* AUTO  100   ACT BELT*/
+       176, 
+       2, 44, 13, 46, 5, 46, 0, 46, 
+       53, 
+/* AUTO  30    HOUND ATTACKS*/
+       133, 30, 
+       1, 30, 
+       45, 61, 
+/* AUTO  15    HOUND ATTACKS*/
+       133, 15, 
+       2, 30, 
+       45, 61, 
+/* AUTO  100   HOUND WAKES*/
+       170, 
+       13, 31, 0, 4, 
+       81, 77, 73, 
+/* AUTO  0     */
+       204, 
+       15, 0, 0, 31, 0, 30, 
+       72, 
+/* AUTO  0     */
+       196, 
+       3, 30, 
+       46, 
+/* AUTO  0     RESET COUNTER*/
+       196, 
+       0, 4, 
+       81, 
+/* AUTO  100   PHASER FIRED*/
+       174, 
+       8, 4, 0, 4, 0, 2, 
+       73, 60, 81, 
+/* AUTO  0     STUN*/
+       205, 
+       9, 3, 0, 4, 0, 2, 
+       83, 81, 
+/* AUTO  0     KILL*/
+       205, 
+       8, 3, 0, 7, 0, 2, 
+       83, 81, 
+/* AUTO  0     */
+/* AUTO  100   DIE NO AIR*/
+       171, 
+       8, 2, 6, 7, 
+       10, 8, 7, 63, 
+/* AUTO  0     .*/
+/* AUTO  100   EMPTY PHASER*/
+       165, 
+       0, 2, 
+       81, 73, 
+/* AUTO  0     */
+       208, 
+       15, 0, 14, 11, 0, 11, 0, 10, 
+       72, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+/* AUTO  0     */
+/* AUTO  100   DROP ROD*/
+       183, 
+       2, 35, 2, 28, 0, 28, 0, 37, 0, 35, 
+       72, 59, 51, 76, 
+/* AUTO  100   ICE HOUND*/
+       164, 
+       2, 30, 
+       73, 
+/* AUTO  0     */
+       210, 
+       4, 18, 0, 38, 0, 20, 0, 30, 
+       62, 59, 103, 
+/* AUTO  0     */
+       210, 
+       4, 19, 0, 38, 0, 20, 0, 30, 
+       62, 59, 103, 
+/* AUTO  0     */
+       210, 
+       4, 20, 0, 38, 0, 20, 0, 30, 
+       62, 59, 103, 
+/* AUTO  0     */
+       210, 
+       4, 10, 0, 38, 0, 20, 0, 30, 
+       62, 59, 103, 
+/* AUTO  0     */
+       204, 
+       14, 30, 0, 30, 0, 24, 
+       62, 
+/* AUTO  100   DEAD!*/
+       164, 
+       4, 35, 
+       63, 
+/* AUTO  100   .*/
+       170, 
+       8, 9, 0, 5, 
+       81, 77, 73, 
+/* AUTO  0     BURNT OUT*/
+       205, 
+       15, 1, 0, 9, 0, 10, 
+       60, 58, 
+/* AUTO  0     WEARING GOOD*/
+       206, 
+       1, 52, 1, 51, 0, 55, 
+       57, 53, 76, 
+/* AUTO  0     */
+       196, 
+       0, 5, 
+       81, 
+/* AUTO  100   WEAR OFF GOGGLES*/
+       173, 
+       1, 52, 9, 9, 9, 15, 
+       56, 76, 
+};
+const uint8_t actions[] = {
+/* LOOK  GAUG  */
+       4, 37, 74, 
+       3, 6, 
+       110, 
+/* CHAR  ANY   */
+       23, 46, 0, 
+       3, 6, 2, 9, 0, 1, 0, 75, 0, 1, 
+       3, 81, 79, 81, 
+/* SET   PHAS  */
+       5, 55, 22, 
+       3, 10, 
+       16, 17, 
+/* TO    STUN  */
+       9, 9, 73, 
+       3, 10, 0, 3, 
+       60, 3, 
+/* TO    DEST  */
+       9, 9, 72, 
+       3, 10, 0, 3, 
+       58, 3, 
+/* DIG   ANY   */
+       5, 71, 0, 
+       4, 24, 
+       111, 105, 
+/* WAKE  HOUN  */
+       13, 32, 8, 
+       3, 31, 0, 31, 0, 30, 
+       3, 72, 
+/* PUSH  RED   */
+       13, 25, 27, 
+       4, 1, 0, 12, 0, 13, 
+       72, 3, 
+/* PUSH  RED   */
+       23, 25, 27, 
+       2, 17, 0, 18, 0, 19, 0, 20, 0, 21, 
+       3, 72, 72, 73, 
+/* AUTO  0     */
+       205, 
+       9, 7, 2, 19, 0, 2, 
+       58, 112, 
+/* AUTO  0     */
+       204, 
+       9, 7, 2, 18, 0, 2, 
+       60, 
+/* PUSH  BLAC  */
+       9, 25, 37, 
+       3, 22, 5, 23, 
+       3, 12, 
+/* PUSH  WHIT  */
+       14, 25, 79, 
+       3, 22, 0, 8, 9, 8, 
+       3, 2, 58, 
+/* PUSH  BLAC  */
+       15, 25, 37, 
+       3, 22, 3, 23, 9, 8, 
+       3, 12, 10, 73, 
+/* AUTO  0     */
+       194, 
+       8, 7, 61, 
+/* PUSH  BLAC  CHARGE SUIT*/
+       23, 25, 37, 
+       3, 22, 3, 23, 0, 1, 0, 25, 8, 8, 
+       81, 3, 73, 82, 
+/* AUTO  0     */
+       199, 
+       16, 110, 
+       12, 18, 11, 61, 
+/* AUTO  0     */
+       197, 
+       0, 1, 
+       12, 81, 
+/* GET   HOSE  */
+       13, 10, 26, 
+       2, 22, 0, 23, 14, 23, 
+       3, 53, 
+/* DROP  HOSE  */
+       9, 18, 26, 
+       2, 23, 0, 23, 
+       3, 59, 
+/* GO    DOOR  */
+       14, 1, 31, 
+       2, 19, 9, 7, 0, 12, 
+       3, 54, 76, 
+/* GO    DOOR  */
+       10, 1, 31, 
+       2, 21, 0, 1, 
+       3, 54, 76, 
+/* GO    DOOR  */
+       10, 1, 31, 
+       2, 13, 0, 2, 
+       3, 54, 76, 
+/* LOOK  CONS  .*/
+       4, 37, 30, 
+       2, 5, 
+       20, 
+/* PUSH  BLUE  */
+       11, 25, 28, 
+       2, 5, 14, 37, 
+       3, 21, 19, 2, 
+/* SHOO  BOUL  */
+       19, 51, 71, 
+       1, 10, 8, 3, 2, 24, 0, 4, 
+       23, 73, 58, 88, 
+/* AUTO  0     */
+       207, 
+       0, 24, 0, 1, 0, 48, 
+       72, 24, 53, 76, 
+/* PUSH  WHIT  */
+       14, 25, 79, 
+       3, 22, 8, 8, 0, 8, 
+       3, 2, 60, 
+/* WEAR  SUIT  */
+       14, 58, 20, 
+       3, 6, 0, 7, 0, 6, 
+       74, 74, 3, 
+/* SUIT  UP    */
+       14, 57, 5, 
+       3, 6, 0, 7, 0, 6, 
+       74, 74, 3, 
+/* DROP  SUIT  */
+       14, 18, 20, 
+       3, 6, 0, 6, 0, 7, 
+       53, 59, 3, 
+/* LOOK  CURT  */
+       4, 37, 32, 
+       2, 1, 
+       28, 
+/* SHOO  CURT  */
+       15, 51, 32, 
+       1, 10, 0, 4, 2, 1, 
+       28, 23, 30, 58, 
+/* SHOO  SHIP  */
+       23, 51, 34, 
+       1, 10, 8, 3, 2, 2, 0, 4, 0, 2, 
+       23, 58, 24, 59, 
+/* GO    CAVE  */
+       10, 1, 40, 
+       2, 15, 0, 3, 
+       3, 54, 76, 
+/* SHOO  ANY   IN SHIP*/
+       19, 51, 0, 
+       1, 10, 8, 3, 4, 1, 0, 35, 
+       23, 54, 29, 63, 
+/* SHOO  ANY   IN SHIP*/
+       19, 51, 0, 
+       1, 10, 8, 3, 4, 7, 0, 35, 
+       23, 54, 29, 63, 
+/* SHOO  ANY   IN SHIP*/
+       19, 51, 0, 
+       1, 10, 8, 3, 4, 2, 0, 35, 
+       23, 54, 29, 63, 
+/* LOOK  PHAS  */
+       15, 37, 22, 
+       3, 10, 0, 2, 9, 15, 
+       73, 81, 32, 78, 
+/* AUTO  0     */
+       202, 
+       8, 3, 0, 2, 
+       13, 14, 81, 
+/* AUTO  0     */
+       202, 
+       9, 3, 0, 2, 
+       13, 15, 81, 
+/* LOOK  PHAS  EMPTY*/
+       9, 37, 22, 
+       3, 11, 9, 15, 
+       32, 31, 
+/* GO    HOLE  */
+       5, 1, 60, 
+       2, 8, 
+       138, 61, 
+/* PULL  ROD   */
+       11, 17, 39, 
+       2, 27, 9, 5, 
+       2, 33, 34, 36, 
+/* PUSH  ROD   */
+       11, 25, 39, 
+       2, 27, 8, 5, 
+       2, 33, 35, 36, 
+/* BEND  ROD   */
+       15, 62, 39, 
+       2, 27, 0, 27, 0, 28, 
+       37, 38, 59, 74, 
+/* GET   ROD   */
+       4, 10, 39, 
+       2, 27, 
+       39, 
+/* GET   ROD   */
+       9, 10, 39, 
+       3, 28, 0, 28, 
+       3, 52, 
+/* SHOO  ROD   */
+       23, 51, 39, 
+       1, 10, 8, 3, 2, 27, 0, 27, 0, 4, 
+       23, 24, 59, 58, 
+/* SHOO  PLAS  */
+       23, 51, 41, 
+       1, 10, 8, 3, 2, 25, 0, 25, 0, 4, 
+       23, 24, 59, 58, 
+/* SHOO  PLAS  */
+       17, 51, 41, 
+       1, 10, 9, 3, 2, 25, 0, 4, 
+       40, 58, 
+/* PUSH  PLAS  */
+       7, 25, 41, 
+       2, 25, 
+       37, 42, 124, 61, 
+/* SHOO  PLAS  */
+       23, 51, 41, 
+       1, 10, 8, 3, 3, 29, 0, 29, 0, 4, 
+       23, 24, 59, 58, 
+/* TOUC  PLAS  OUT*/
+       15, 33, 41, 
+       2, 25, 9, 5, 0, 3, 
+       40, 73, 81, 79, 
+/* AUTO  0     RESET*/
+       196, 
+       0, 3, 
+       81, 
+/* PUSH  ROD   */
+       15, 25, 39, 
+       2, 27, 9, 5, 0, 3, 
+       73, 37, 44, 81, 
+/* AUTO  0     */
+       202, 
+       0, 1, 0, 5, 
+       35, 82, 58, 
+/* AUTO  0     */
+       199, 
+       0, 3, 
+       40, 78, 41, 81, 
+/* PULL  ROD   */
+       15, 17, 39, 
+       2, 27, 8, 5, 0, 5, 
+       37, 44, 34, 60, 
+/* READ  SIGN  */
+       5, 24, 78, 
+       3, 4, 
+       3, 137, 
+/* TOUC  PLAS  IN*/
+       15, 33, 41, 
+       2, 25, 8, 5, 0, 3, 
+       73, 81, 80, 3, 
+/* AUTO  0     TRANSFERS*/
+       194, 
+       43, 88, 88, 
+/* AUTO  0     */
+       205, 
+       19, 1, 0, 3, 0, 6, 
+       54, 58, 
+/* AUTO  0     */
+       205, 
+       19, 2, 0, 9, 0, 6, 
+       54, 60, 
+/* AUTO  0     */
+       205, 
+       19, 3, 0, 10, 0, 6, 
+       54, 58, 
+/* AUTO  0     */
+       205, 
+       19, 4, 0, 11, 0, 6, 
+       54, 58, 
+/* AUTO  0     */
+       205, 
+       19, 5, 0, 17, 0, 6, 
+       54, 58, 
+/* AUTO  0     */
+       204, 
+       19, 6, 0, 13, 0, 6, 
+       54, 
+/* AUTO  0     */
+       204, 
+       19, 7, 0, 14, 0, 6, 
+       54, 
+/* AUTO  0     */
+       205, 
+       16, 7, 0, 17, 0, 6, 
+       54, 58, 
+/* AUTO  0     */
+       198, 
+       0, 3, 
+       80, 76, 81, 
+/* SHOO  PHAS  */
+       0, 51, 22, 
+       108, 
+/* TOUC  CURT  */
+       5, 33, 32, 
+       2, 1, 
+       3, 140, 
+/* TOUC  CURT  */
+       5, 33, 32, 
+       2, 14, 
+       3, 140, 
+/* DIG   ANY   */
+       22, 71, 0, 
+       14, 40, 3, 53, 4, 9, 14, 39, 0, 39, 
+       53, 3, 133, 
+/* GO    CURT  OUT NO AIR*/
+       19, 1, 32, 
+       4, 6, 0, 1, 8, 6, 0, 2, 
+       80, 53, 76, 58, 
+/* GO    CURT  IN GOOD AIR*/
+       15, 1, 32, 
+       2, 1, 14, 23, 0, 2, 
+       80, 76, 60, 3, 
+/* GO    CURT  OUT AIR*/
+       19, 1, 32, 
+       4, 6, 0, 1, 9, 6, 0, 2, 
+       80, 53, 76, 60, 
+/* SHOO  HOUN  */
+       23, 51, 8, 
+       1, 10, 3, 30, 8, 3, 0, 4, 0, 30, 
+       58, 23, 24, 59, 
+/* SHOO  HOUN  STUN IT*/
+       19, 51, 8, 
+       1, 10, 0, 4, 3, 30, 9, 3, 
+       58, 23, 73, 135, 
+/* AUTO  0     */
+       215, 
+       0, 30, 0, 31, 0, 4, 0, 17, 0, 4, 
+       72, 81, 79, 81, 
+/* GO    CURT  IN HOSE*/
+       10, 1, 32, 
+       2, 1, 13, 23, 
+       50, 18, 61, 
+/* JUMP  ANY   GO SHIP*/
+       10, 69, 0, 
+       2, 2, 0, 2, 
+       3, 54, 76, 
+/* LOOK  VIEW  */
+       9, 37, 10, 
+       2, 32, 9, 15, 
+       3, 48, 
+/* SCOR  ANY   */
+       0, 60, 0, 
+       65, 
+/* LOOK  MACH  */
+       9, 37, 24, 
+       3, 22, 9, 15, 
+       3, 49, 
+/* LOOK  PAIN  */
+       17, 37, 59, 
+       3, 47, 8, 9, 1, 52, 9, 15, 
+       3, 123, 
+/* PUSH  BLUE  */
+       17, 25, 28, 
+       2, 5, 13, 37, 9, 7, 0, 7, 
+       102, 58, 
+/* PUSH  BLUE  */
+       17, 25, 28, 
+       2, 5, 13, 37, 8, 7, 0, 7, 
+       102, 60, 
+/* GO    DOOR  */
+       19, 1, 31, 
+       2, 19, 8, 7, 0, 22, 0, 2, 
+       3, 54, 53, 76, 
+/* GO    SHIP  */
+       10, 1, 34, 
+       2, 2, 0, 2, 
+       3, 54, 76, 
+/* SHOO  MOUN  */
+       23, 51, 44, 
+       1, 10, 8, 3, 2, 38, 0, 38, 0, 4, 
+       23, 24, 59, 58, 
+/* DIG   ANY   */
+       23, 71, 0, 
+       2, 38, 0, 24, 1, 39, 0, 39, 0, 40, 
+       104, 54, 72, 76, 
+/* SHOO  MOUN  */
+       23, 51, 44, 
+       4, 24, 8, 3, 1, 10, 0, 18, 0, 4, 
+       54, 58, 24, 103, 
+/* GO    MOUN  */
+       10, 1, 44, 
+       2, 38, 6, 39, 
+       39, 105, 106, 
+/* DIG   ANY   */
+       9, 71, 0, 
+       2, 38, 6, 39, 
+       39, 105, 
+/* MELT  MOUN  */
+       4, 74, 44, 
+       2, 38, 
+       39, 
+/* OPEN  DOOR  */
+       4, 68, 31, 
+       4, 1, 
+       39, 
+/* JUMP  ANY   */
+       7, 69, 0, 
+       4, 12, 
+       3, 113, 115, 73, 
+/* AUTO  0     */
+       194, 
+       88, 88, 88, 
+/* AUTO  0     */
+       202, 
+       0, 4, 0, 2, 
+       54, 53, 76, 
+/* JUMP  ANY   */
+       0, 69, 0, 
+       3, 
+/* GO    JUNG  */
+       10, 1, 9, 
+       4, 9, 0, 15, 
+       3, 54, 76, 
+/* GET   HATC  */
+       13, 10, 48, 
+       2, 3, 12, 41, 14, 42, 
+       111, 116, 
+/* GET   HATC  */
+       23, 10, 48, 
+       2, 3, 3, 41, 0, 3, 0, 42, 14, 42, 
+       52, 53, 3, 136, 
+/* GO    CRAW  */
+       9, 1, 55, 
+       2, 42, 0, 23, 
+       54, 76, 
+/* DRIN  FLAS  */
+       14, 45, 14, 
+       3, 34, 0, 34, 0, 16, 
+       72, 3, 112, 
+/* GET   HATC  */
+       13, 10, 48, 
+       3, 3, 0, 3, 13, 42, 
+       52, 3, 
+/* WEAR  BELT  */
+       15, 58, 58, 
+       3, 44, 0, 45, 0, 44, 
+       74, 3, 73, 74, 
+/* AUTO  0     */
+       201, 
+       13, 46, 0, 46, 
+       74, 119, 
+/* DROP  BELT  */
+       15, 18, 58, 
+       3, 44, 0, 45, 0, 44, 
+       59, 3, 73, 53, 
+/* AUTO  0     */
+       201, 
+       13, 46, 0, 46, 
+       53, 120, 
+/* BEND  BUCK  */
+       18, 62, 57, 
+       3, 44, 14, 46, 0, 46, 0, 44, 
+       75, 3, 120, 
+/* BEND  BUCK  */
+       13, 62, 57, 
+       3, 44, 13, 46, 0, 46, 
+       3, 59, 
+/* LOOK  BELT  */
+       8, 37, 58, 
+       3, 44, 9, 15, 
+       122, 
+/* LOOK  PAIN  */
+       9, 37, 59, 
+       3, 47, 9, 15, 
+       3, 131, 
+/* FIRE  MACH  */
+       0, 15, 24, 
+       39, 
+/* GO    BOUL  */
+       5, 1, 71, 
+       2, 24, 
+       47, 106, 
+/* LOOK  BOUL  */
+       5, 37, 71, 
+       2, 24, 
+       3, 22, 
+/* OPEN  SUIT  */
+       9, 68, 20, 
+       1, 7, 0, 7, 
+       3, 59, 
+/* CLOS  SUIT  */
+       9, 65, 20, 
+       1, 6, 0, 7, 
+       3, 74, 
+/* GO    GROU  */
+       4, 1, 63, 
+       4, 12, 
+       39, 
+/* LOOK  CRYS  */
+       8, 37, 12, 
+       3, 36, 9, 15, 
+       118, 
+/* HELP  ANY   */
+       4, 8, 0, 
+       4, 6, 
+       121, 
+/* OPEN  HATC  */
+       13, 68, 48, 
+       2, 3, 12, 41, 14, 42, 
+       111, 116, 
+/* OPEN  HATC  */
+       19, 68, 48, 
+       2, 3, 3, 41, 0, 3, 0, 42, 
+       52, 53, 3, 136, 
+/* GO    SHIP  */
+       10, 1, 34, 
+       4, 12, 0, 2, 
+       3, 54, 76, 
+/* GET   PLAS  */
+       4, 10, 41, 
+       2, 25, 
+       39, 
+/* LOOK  PLAS  */
+       8, 37, 41, 
+       2, 25, 9, 15, 
+       125, 
+/* TOUC  ANY   */
+       1, 33, 0, 
+       3, 2, 
+/* CONN  ANY   .*/
+       13, 30, 0, 
+       2, 22, 14, 23, 0, 23, 
+       53, 3, 
+/* GO    TREE  */
+       5, 1, 67, 
+       2, 49, 
+       126, 61, 
+/* LOOK  SCUL  */
+       10, 37, 69, 
+       3, 50, 9, 15, 
+       73, 3, 127, 
+/* AUTO  0     */
+       196, 
+       14, 44, 
+       128, 
+/* GET   BELT  */
+       13, 10, 58, 
+       3, 50, 14, 44, 0, 44, 
+       3, 52, 
+/* GET   BELT  */
+       9, 10, 58, 
+       3, 44, 0, 44, 
+       3, 52, 
+/* LOOK  HOUN  */
+       8, 37, 8, 
+       3, 30, 9, 15, 
+       129, 
+/* SHOO  BELT  */
+       22, 51, 58, 
+       3, 50, 1, 10, 8, 3, 0, 50, 0, 4, 
+       59, 58, 73, 
+/* AUTO  0     */
+       198, 
+       0, 44, 
+       59, 23, 24, 
+/* WEAR  GOGG  */
+       15, 58, 75, 
+       3, 51, 0, 51, 0, 52, 
+       74, 74, 3, 73, 
+/* LOOK  GOGG  */
+       8, 37, 75, 
+       3, 51, 9, 15, 
+       130, 
+/* DROP  GOGG  */
+       15, 18, 75, 
+       1, 51, 0, 51, 0, 52, 
+       53, 59, 57, 73, 
+/* AUTO  0     */
+       198, 
+       0, 55, 
+       3, 59, 76, 
+/* PUSH  YELL  */
+       17, 25, 77, 
+       3, 51, 9, 10, 9, 9, 0, 9, 
+       3, 58, 
+/* LOOK  PAIN  */
+       13, 37, 59, 
+       3, 47, 6, 52, 9, 15, 
+       3, 131, 
+/* PUSH  YELL  */
+       17, 25, 77, 
+       3, 51, 9, 10, 8, 9, 0, 9, 
+       3, 60, 
+/* PUSH  YELL  BURNT OUT*/
+       10, 25, 77, 
+       3, 51, 8, 10, 
+       3, 2, 132, 
+/* LOOK  SUIT  */
+       4, 37, 20, 
+       3, 6, 
+       6, 
+/* READ  GAUG  */
+       11, 24, 74, 
+       3, 6, 0, 1, 
+       4, 81, 78, 73, 
+/* AUTO  0     */
+       192, 
+       5, 
+/* AUTO  0     */
+       196, 
+       8, 2, 
+       8, 
+/* AUTO  0     */
+       197, 
+       0, 1, 
+       7, 81, 
+/* DIG   ANY   */
+       19, 71, 0, 
+       2, 38, 3, 53, 0, 53, 0, 54, 
+       3, 37, 42, 72, 
+/* SAY   ANY   */
+       1, 41, 0, 
+       3, 85, 
+/* PUSH  BUTT  */
+       0, 25, 29, 
+       109, 
+/* FIRE  PHAS  */
+       4, 15, 22, 
+       3, 10, 
+       108, 
+/* SHOO  ANY   */
+       7, 51, 0, 
+       3, 11, 
+       3, 23, 2, 31, 
+/* SHOO  ANY   */
+       11, 51, 0, 
+       1, 10, 0, 4, 
+       58, 23, 2, 30, 
+/* MOVE  ANY   */
+       0, 54, 0, 
+       26, 
+/* LOOK  ANY   */
+       1, 37, 0, 
+       27, 76, 
+/* INVE  ANY   */
+       0, 61, 0, 
+       66, 
+/* DIG   ANY   DIG*/
+       4, 71, 0, 
+       3, 53, 
+       47, 
+/* FIND  ANY   */
+       1, 53, 0, 
+       47, 107, 
+/* READ  ANY   */
+       0, 24, 0, 
+       111, 
+/* HELP  ANY   */
+       1, 8, 0, 
+       3, 39, 
+/* QUIT  ANY   */
+       0, 7, 0, 
+       63, 
+/* SAVE  GAME  */
+       0, 6, 51, 
+       71, 
+/* KICK  ANY   */
+       1, 29, 0, 
+       134, 2, 
+/* CLOS  ANY   */
+       0, 65, 0, 
+       39, 
+/* GO    ROD   */
+       15, 1, 39, 
+       2, 27, 0, 27, 0, 28, 
+       37, 38, 59, 74, 
+/* LIFT  GOGG  */
+       14, 77, 75, 
+       1, 52, 0, 52, 0, 55, 
+       3, 59, 59, 
+/* REMO  SUIT  */
+       9, 48, 20, 
+       1, 7, 0, 7, 
+       3, 59, 
+/* REMO  GOGG  */
+       15, 48, 75, 
+       1, 52, 0, 52, 0, 55, 
+       57, 59, 59, 76, 
+/* REMO  ANY   */
+       1, 48, 0, 
+       111, 139, 
+/* BEND  BUCK  */
+       5, 62, 57, 
+       14, 44, 
+       111, 141, 
+/* EMPT  FLAS  */
+       13, 79, 14, 
+       3, 34, 0, 34, 0, 16, 
+       72, 3, 
+/* GET   INVE  */
+       0, 10, 7, 
+       66, 
+/* GO    HATC  */
+       10, 1, 48, 
+       2, 42, 0, 23, 
+       2, 54, 76, 
+/* FIX   CRYS  */
+       255, 75, 12, 
+       4, 0, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *WALK */
+       215, 65, 76, 75,
+       /* *RUN */
+       210, 85, 78, 32,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *CLIM */
+       195, 76, 73, 77,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* HELP */
+       72, 69, 76, 80,
+       /* TO */
+       84, 79, 32, 32,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *. */
+       174, 32, 32, 32,
+       /* *UNST */
+       213, 78, 83, 84,
+       /* FIRE */
+       70, 73, 82, 69,
+       /* *ACTI */
+       193, 67, 84, 73,
+       /* PULL */
+       80, 85, 76, 76,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *DISC */
+       196, 73, 83, 67,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *THRO */
+       212, 72, 82, 79,
+       /* . */
+       46, 32, 32, 32,
+       /* READ */
+       82, 69, 65, 68,
+       /* PUSH */
+       80, 85, 83, 72,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* *BANG */
+       194, 65, 78, 71,
+       /* *HIT */
+       200, 73, 84, 32,
+       /* KICK */
+       75, 73, 67, 75,
+       /* CONN */
+       67, 79, 78, 78,
+       /* *HOOK */
+       200, 79, 79, 75,
+       /* WAKE */
+       87, 65, 75, 69,
+       /* TOUC */
+       84, 79, 85, 67,
+       /* *RUB */
+       210, 85, 66, 32,
+       /* *FEEL */
+       198, 69, 69, 76,
+       /* *PET */
+       208, 69, 84, 32,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *DESC */
+       196, 69, 83, 67,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *SEE */
+       211, 69, 69, 32,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *YELL */
+       217, 69, 76, 76,
+       /* *HOLL */
+       200, 79, 76, 76,
+       /* *SCRE */
+       211, 67, 82, 69,
+       /* DRIN */
+       68, 82, 73, 78,
+       /* CHAR */
+       67, 72, 65, 82,
+       /* *RECH */
+       210, 69, 67, 72,
+       /* REMO */
+       82, 69, 77, 79,
+       /* *UNWE */
+       213, 78, 87, 69,
+       /* AT */
+       65, 84, 32, 32,
+       /* SHOO */
+       83, 72, 79, 79,
+       /* *BLAS */
+       194, 76, 65, 83,
+       /* FIND */
+       70, 73, 78, 68,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* SET */
+       83, 69, 84, 32,
+       /* *RESE */
+       210, 69, 83, 69,
+       /* SUIT */
+       83, 85, 73, 84,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* *FAST */
+       198, 65, 83, 84,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* INVE */
+       73, 78, 86, 69,
+       /* BEND */
+       66, 69, 78, 68,
+       /* *TWIS */
+       212, 87, 73, 83,
+       /* *BREA */
+       194, 82, 69, 65,
+       /* CLOS */
+       67, 76, 79, 83,
+       /* *SHUT */
+       211, 72, 85, 84,
+       /* *SLAM */
+       211, 76, 65, 77,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* *FALL */
+       198, 65, 76, 76,
+       /* DIG */
+       68, 73, 71, 32,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* *CRA */
+       195, 82, 65, 32,
+       /* MELT */
+       77, 69, 76, 84,
+       /* FIX */
+       70, 73, 88, 32,
+       /* *REPA */
+       210, 69, 80, 65,
+       /* LIFT */
+       76, 73, 70, 84,
+       /* *RAIS */
+       210, 65, 73, 83,
+       /* EMPT */
+       69, 77, 80, 84,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORTH */
+       78, 79, 82, 84,
+       /* SOUTH */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* INVE */
+       73, 78, 86, 69,
+       /* HOUN */
+       72, 79, 85, 78,
+       /* JUNG */
+       74, 85, 78, 71,
+       /* VIEW */
+       86, 73, 69, 87,
+       /* HELL */
+       72, 69, 76, 76,
+       /* CRYS */
+       67, 82, 89, 83,
+       /* HELP */
+       72, 69, 76, 80,
+       /* FLAS */
+       70, 76, 65, 83,
+       /* *BRAN */
+       194, 82, 65, 78,
+       /* OUT */
+       79, 85, 84, 32,
+       /* IN */
+       73, 78, 32, 32,
+       /* ZOO */
+       90, 79, 79, 32,
+       /* SHOV */
+       83, 72, 79, 86,
+       /* SUIT */
+       83, 85, 73, 84,
+       /* *HELM */
+       200, 69, 76, 77,
+       /* PHAS */
+       80, 72, 65, 83,
+       /* *GUN */
+       199, 85, 78, 32,
+       /* MACH */
+       77, 65, 67, 72,
+       /* MINE */
+       77, 73, 78, 69,
+       /* HOSE */
+       72, 79, 83, 69,
+       /* RED */
+       82, 69, 68, 32,
+       /* BLUE */
+       66, 76, 85, 69,
+       /* BUTT */
+       66, 85, 84, 84,
+       /* CONS */
+       67, 79, 78, 83,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* CURT */
+       67, 85, 82, 84,
+       /* *LIGH */
+       204, 73, 71, 72,
+       /* SHIP */
+       83, 72, 73, 80,
+       /* *SCOU */
+       211, 67, 79, 85,
+       /* *AIRL */
+       193, 73, 82, 76,
+       /* BLAC */
+       66, 76, 65, 67,
+       /* SNOW */
+       83, 78, 79, 87,
+       /* ROD */
+       82, 79, 68, 32,
+       /* CAVE */
+       67, 65, 86, 69,
+       /* PLAS */
+       80, 76, 65, 83,
+       /* *FING */
+       198, 73, 78, 71,
+       /* PICK */
+       80, 73, 67, 75,
+       /* MOUN */
+       77, 79, 85, 78,
+       /* *ICE */
+       201, 67, 69, 32,
+       /* *WALL */
+       215, 65, 76, 76,
+       /* HOLD */
+       72, 79, 76, 68,
+       /* HATC */
+       72, 65, 84, 67,
+       /* TOOL */
+       84, 79, 79, 76,
+       /* CONN */
+       67, 79, 78, 78,
+       /* GAME */
+       71, 65, 77, 69,
+       /* LEDG */
+       76, 69, 68, 71,
+       /* AROU */
+       65, 82, 79, 85,
+       /* META */
+       77, 69, 84, 65,
+       /* CRAW */
+       67, 82, 65, 87,
+       /* DIAM */
+       68, 73, 65, 77,
+       /* BUCK */
+       66, 85, 67, 75,
+       /* BELT */
+       66, 69, 76, 84,
+       /* PAIN */
+       80, 65, 73, 78,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* SCRI */
+       83, 67, 82, 73,
+       /* ALIE */
+       65, 76, 73, 69,
+       /* GROU */
+       71, 82, 79, 85,
+       /* *PLAN */
+       208, 76, 65, 78,
+       /* NOVA */
+       78, 79, 86, 65,
+       /* DUST */
+       68, 85, 83, 84,
+       /* TREE */
+       84, 82, 69, 69,
+       /* *SLIM */
+       211, 76, 73, 77,
+       /* SCUL */
+       83, 67, 85, 76,
+       /*  */
+       32, 32, 32, 32,
+       /* BOUL */
+       66, 79, 85, 76,
+       /* DEST */
+       68, 69, 83, 84,
+       /* STUN */
+       83, 84, 85, 78,
+       /* GAUG */
+       71, 65, 85, 71,
+       /* GOGG */
+       71, 79, 71, 71,
+       /* BOX */
+       66, 79, 88, 32,
+       /* YELL */
+       89, 69, 76, 76,
+       /* SIGN */
+       83, 73, 71, 78,
+       /* WHIT */
+       87, 72, 73, 84,
+       0,
+};
+const uint8_t automap[] = {
+       /* HATC */
+       72, 65, 84, 67,
+       3,
+       /* SIGN */
+       83, 73, 71, 78,
+       4,
+       /* SUIT */
+       83, 85, 73, 84,
+       6,
+       /* PHAS */
+       80, 72, 65, 83,
+       10,
+       /* PHAS */
+       80, 72, 65, 83,
+       11,
+       /* FLAS */
+       70, 76, 65, 83,
+       16,
+       /* ROD */
+       82, 79, 68, 32,
+       28,
+       /* HOUN */
+       72, 79, 85, 78,
+       30,
+       /* HOUN */
+       72, 79, 85, 78,
+       31,
+       /* FLAS */
+       70, 76, 65, 83,
+       34,
+       /* CRYS */
+       67, 82, 89, 83,
+       36,
+       /* PICK */
+       80, 73, 67, 75,
+       39,
+       /* PICK */
+       80, 73, 67, 75,
+       40,
+       /* META */
+       77, 69, 84, 65,
+       41,
+       /* DIAM */
+       68, 73, 65, 77,
+       43,
+       /* BELT */
+       66, 69, 76, 84,
+       44,
+       /* PAIN */
+       80, 65, 73, 78,
+       47,
+       /* DUST */
+       68, 85, 83, 84,
+       48,
+       /* SCUL */
+       83, 67, 85, 76,
+       50,
+       /* GOGG */
+       71, 79, 71, 71,
+       51,
+       /* SHOV */
+       83, 72, 79, 86,
+       53,
+       /* SHOV */
+       83, 72, 79, 86,
+       54,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv07.c b/Applications/games/adv07.c
new file mode 100644 (file)
index 0000000..a87a841
--- /dev/null
@@ -0,0 +1,3167 @@
+#define NUM_OBJ 74
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 3;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 35;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 102, 114, 111, 110, 116, 32, 111, 102, 32, 116, 104, 101, 32, 70, 85, 78, 32, 72, 79, 85, 83, 69, 0 };
+const uint8_t loctxt_2[] = {
+77, 97, 103, 105, 99, 97, 108, 32, 77, 105, 114, 114, 111, 114, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 108, 97, 110, 100, 105, 110, 103, 0 };
+const uint8_t loctxt_4[] = {
+42, 73, 39, 109, 32, 98, 101, 115, 105, 100, 101, 32, 97, 32, 76, 65, 82, 71, 69, 32, 116, 97, 110, 107, 0 };
+const uint8_t loctxt_5[] = {
+119, 105, 110, 100, 111, 119, 101, 100, 32, 116, 97, 110, 107, 0 };
+const uint8_t loctxt_6[] = {
+104, 105, 100, 100, 101, 110, 32, 108, 97, 98, 111, 114, 97, 116, 111, 114, 121, 0 };
+const uint8_t loctxt_7[] = {
+77, 101, 114, 114, 121, 45, 71, 111, 45, 82, 111, 117, 110, 100, 32, 111, 110, 32, 97, 32, 119, 111, 111, 100, 101, 110, 32, 104, 111, 114, 115, 101, 0 };
+const uint8_t loctxt_8[] = {
+115, 109, 97, 108, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_9[] = {
+115, 108, 111, 112, 105, 110, 103, 32, 104, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_10[] = {
+114, 111, 111, 109, 32, 119, 105, 116, 104, 32, 97, 32, 108, 111, 119, 32, 99, 101, 105, 108, 105, 110, 103, 0 };
+const uint8_t loctxt_11[] = {
+108, 97, 114, 103, 101, 32, 114, 111, 108, 108, 105, 110, 103, 32, 98, 97, 114, 114, 101, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_12[] = {
+115, 116, 111, 114, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_13[] = {
+77, 97, 110, 104, 111, 108, 101, 0 };
+const uint8_t loctxt_14[] = {
+115, 104, 111, 111, 116, 105, 110, 103, 32, 103, 97, 108, 108, 101, 114, 121, 0 };
+const uint8_t loctxt_15[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 108, 101, 100, 103, 101, 32, 111, 118, 101, 114, 32, 97, 32, 100, 101, 101, 112, 32, 112, 105, 116, 0 };
+const uint8_t loctxt_16[] = {
+80, 105, 116, 0 };
+const uint8_t loctxt_17[] = {
+79, 98, 115, 101, 114, 118, 97, 116, 105, 111, 110, 32, 99, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 77, 101, 114, 114, 121, 45, 71, 111, 45, 82, 111, 117, 110, 100, 0 };
+const uint8_t loctxt_19[] = {
+87, 105, 110, 100, 121, 32, 104, 97, 108, 108, 0 };
+const uint8_t loctxt_20[] = {
+114, 105, 99, 107, 101, 116, 121, 32, 115, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t loctxt_21[] = {
+108, 97, 114, 103, 101, 32, 114, 111, 111, 109, 32, 119, 105, 116, 104, 32, 116, 97, 108, 108, 32, 99, 101, 105, 108, 105, 110, 103, 0 };
+const uint8_t loctxt_22[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 111, 112, 32, 111, 102, 32, 116, 104, 101, 32, 114, 105, 100, 101, 0 };
+const uint8_t loctxt_23[] = {
+115, 109, 97, 108, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_24[] = {
+115, 109, 97, 108, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_25[] = {
+108, 97, 114, 103, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_26[] = {
+80, 97, 114, 107, 105, 110, 103, 32, 108, 111, 116, 0 };
+const uint8_t loctxt_27[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 84, 114, 97, 109, 112, 111, 108, 105, 110, 101, 0 };
+const uint8_t loctxt_28[] = {
+83, 101, 119, 101, 114, 32, 115, 121, 115, 116, 101, 109, 0 };
+const uint8_t loctxt_29[] = {
+119, 105, 110, 100, 121, 32, 109, 97, 122, 101, 0 };
+const uint8_t loctxt_30[] = {
+119, 105, 110, 100, 121, 32, 109, 97, 122, 101, 0 };
+const uint8_t loctxt_31[] = {
+119, 105, 110, 100, 121, 32, 109, 97, 122, 101, 0 };
+const uint8_t loctxt_32[] = {
+119, 105, 110, 100, 121, 32, 109, 97, 122, 101, 0 };
+const uint8_t loctxt_33[] = {
+99, 97, 116, 119, 97, 108, 107, 0 };
+const uint8_t loctxt_34[] = {
+108, 111, 110, 103, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_35[] = {
+76, 111, 116, 32, 111, 102, 32, 84, 82, 79, 85, 66, 76, 69, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 26, 0, 0, 0 } }, 
+               { loctxt_2,  { 30, 1, 0, 0, 0, 0 } }, 
+               { loctxt_3,  { 9, 0, 19, 0, 20, 0 } }, 
+               { loctxt_4,  { 0, 0, 10, 0, 9, 0 } }, 
+               { loctxt_5,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_6,  { 25, 0, 0, 0, 0, 0 } }, 
+               { loctxt_7,  { 0, 0, 0, 0, 0, 18 } }, 
+               { loctxt_8,  { 0, 14, 0, 0, 10, 0 } }, 
+               { loctxt_9,  { 0, 0, 0, 0, 3, 4 } }, 
+               { loctxt_10,  { 0, 0, 0, 4, 0, 0 } }, 
+               { loctxt_11,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 0, 33, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 28, 0, 26, 0 } }, 
+               { loctxt_14,  { 8, 0, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 20, 11, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 2, 0, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 0, 21 } }, 
+               { loctxt_19,  { 0, 0, 30, 3, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 0, 15, 3 } }, 
+               { loctxt_21,  { 0, 23, 0, 0, 0, 0 } }, 
+               { loctxt_22,  { 0, 0, 0, 0, 0, 7 } }, 
+               { loctxt_23,  { 0, 0, 21, 0, 0, 10 } }, 
+               { loctxt_24,  { 32, 0, 0, 10, 0, 0 } }, 
+               { loctxt_25,  { 0, 6, 0, 0, 0, 34 } }, 
+               { loctxt_26,  { 0, 0, 0, 1, 0, 0 } }, 
+               { loctxt_27,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_28,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_29,  { 31, 30, 32, 24, 0, 0 } }, 
+               { loctxt_30,  { 32, 31, 2, 31, 0, 0 } }, 
+               { loctxt_31,  { 32, 31, 29, 29, 0, 0 } }, 
+               { loctxt_32,  { 31, 29, 31, 32, 0, 0 } }, 
+               { loctxt_33,  { 0, 0, 12, 0, 0, 22 } }, 
+               { loctxt_34,  { 0, 0, 0, 0, 25, 28 } }, 
+               { loctxt_35,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       5,
+       0,
+       2,
+       255,
+       0,
+       3,
+       6,
+       10,
+       12,
+       0,
+       28,
+       12,
+       10,
+       0,
+       15,
+       16,
+       0,
+       15,
+       8,
+       12,
+       33,
+       1,
+       1,
+       0,
+       0,
+       255,
+       0,
+       5,
+       11,
+       0,
+       5,
+       21,
+       21,
+       16,
+       34,
+       17,
+       0,
+       0,
+       0,
+       0,
+       11,
+       18,
+       28,
+       28,
+       0,
+       0,
+       14,
+       0,
+       23,
+       33,
+       0,
+       26,
+       5,
+       26,
+       0,
+       0,
+       255,
+       0,
+       0,
+       0,
+       0,
+       7,
+       4,
+       14,
+       23,
+       25,
+       0,
+       6,
+       26,
+       11,
+       0,
+       17,
+       17,
+       21,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+67, 108, 111, 115, 101, 100, 32, 100, 114, 97, 105, 110, 46, 32, 87, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_1[] = {
+82, 111, 112, 101, 32, 104, 97, 110, 103, 105, 110, 103, 32, 102, 114, 111, 109, 32, 99, 101, 105, 108, 105, 110, 103, 0 };
+const uint8_t objtxt_2[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 77, 105, 114, 114, 111, 114, 0 };
+const uint8_t objtxt_3[] = {
+83, 104, 111, 101, 115, 0 };
+const uint8_t objtxt_4[] = {
+119, 104, 105, 99, 104, 32, 73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_5[] = {
+83, 108, 105, 112, 112, 101, 114, 121, 32, 83, 108, 105, 100, 101, 46, 32, 83, 105, 103, 110, 32, 111, 110, 32, 115, 108, 105, 100, 101, 0 };
+const uint8_t objtxt_6[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_7[] = {
+83, 107, 101, 108, 101, 116, 111, 110, 0 };
+const uint8_t objtxt_8[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_9[] = {
+76, 105, 116, 32, 70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 0 };
+const uint8_t objtxt_10[] = {
+79, 112, 101, 110, 32, 102, 108, 111, 111, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_11[] = {
+82, 101, 100, 32, 107, 110, 111, 98, 32, 105, 110, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_12[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 107, 110, 111, 98, 115, 32, 111, 110, 32, 119, 97, 108, 108, 58, 32, 89, 101, 108, 108, 111, 119, 44, 32, 71, 114, 101, 101, 110, 44, 32, 66, 108, 117, 101, 0 };
+const uint8_t objtxt_13[] = {
+67, 108, 111, 115, 101, 100, 32, 102, 108, 111, 111, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_14[] = {
+76, 97, 100, 100, 101, 114, 32, 103, 111, 105, 110, 103, 32, 100, 111, 119, 110, 0 };
+const uint8_t objtxt_15[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_16[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 32, 119, 105, 116, 104, 32, 115, 109, 97, 108, 108, 32, 115, 104, 101, 108, 118, 101, 115, 32, 98, 101, 121, 111, 110, 100, 0 };
+const uint8_t objtxt_17[] = {
+83, 105, 103, 110, 32, 111, 110, 32, 108, 97, 100, 100, 101, 114, 0 };
+const uint8_t objtxt_18[] = {
+83, 109, 97, 108, 108, 32, 84, 114, 97, 109, 112, 111, 108, 105, 110, 101, 0 };
+const uint8_t objtxt_19[] = {
+87, 114, 101, 110, 99, 104, 0 };
+const uint8_t objtxt_20[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_21[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_22[] = {
+84, 105, 99, 107, 101, 116, 32, 67, 111, 117, 110, 116, 101, 114, 0 };
+const uint8_t objtxt_23[] = {
+84, 105, 99, 107, 101, 116, 0 };
+const uint8_t objtxt_24[] = {
+66, 111, 116, 116, 111, 109, 32, 111, 102, 32, 104, 101, 101, 108, 0 };
+const uint8_t objtxt_25[] = {
+87, 97, 116, 99, 104, 0 };
+const uint8_t objtxt_26[] = {
+68, 97, 114, 107, 32, 109, 97, 110, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_27[] = {
+77, 101, 114, 109, 97, 105, 100, 0 };
+const uint8_t objtxt_28[] = {
+67, 111, 109, 98, 0 };
+const uint8_t objtxt_29[] = {
+81, 117, 105, 101, 116, 32, 67, 97, 108, 108, 105, 111, 112, 101, 0 };
+const uint8_t objtxt_30[] = {
+82, 117, 115, 116, 121, 32, 107, 101, 121, 0 };
+const uint8_t objtxt_31[] = {
+76, 79, 85, 68, 32, 83, 116, 101, 97, 109, 32, 67, 97, 108, 108, 105, 111, 112, 101, 0 };
+const uint8_t objtxt_32[] = {
+77, 101, 114, 114, 121, 45, 71, 111, 45, 82, 111, 117, 110, 100, 0 };
+const uint8_t objtxt_33[] = {
+86, 97, 108, 118, 101, 32, 111, 110, 32, 97, 32, 108, 97, 114, 103, 101, 32, 119, 97, 114, 109, 32, 112, 105, 112, 101, 0 };
+const uint8_t objtxt_34[] = {
+72, 97, 110, 100, 108, 101, 32, 105, 115, 32, 111, 110, 32, 118, 97, 108, 118, 101, 0 };
+const uint8_t objtxt_35[] = {
+86, 97, 108, 118, 101, 32, 104, 97, 110, 100, 108, 101, 32, 119, 105, 116, 104, 32, 110, 111, 32, 118, 97, 108, 118, 101, 0 };
+const uint8_t objtxt_36[] = {
+83, 104, 111, 114, 116, 32, 102, 117, 115, 101, 0 };
+const uint8_t objtxt_37[] = {
+70, 117, 115, 101, 32, 105, 115, 32, 115, 116, 117, 99, 107, 32, 105, 110, 32, 103, 117, 109, 0 };
+const uint8_t objtxt_38[] = {
+79, 112, 101, 110, 32, 68, 114, 97, 105, 110, 0 };
+const uint8_t objtxt_39[] = {
+76, 101, 116, 116, 101, 114, 0 };
+const uint8_t objtxt_40[] = {
+69, 120, 105, 116, 0 };
+const uint8_t objtxt_41[] = {
+87, 111, 111, 100, 101, 110, 32, 104, 111, 114, 115, 101, 0 };
+const uint8_t objtxt_42[] = {
+68, 97, 114, 107, 32, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_43[] = {
+76, 97, 114, 103, 101, 32, 103, 114, 97, 116, 101, 32, 119, 101, 108, 100, 101, 100, 32, 111, 118, 101, 114, 32, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_44[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 98, 111, 110, 101, 115, 0 };
+const uint8_t objtxt_45[] = {
+76, 111, 111, 115, 101, 32, 103, 114, 97, 116, 101, 0 };
+const uint8_t objtxt_46[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 115, 112, 101, 99, 116, 97, 99, 108, 101, 115, 0 };
+const uint8_t objtxt_47[] = {
+119, 104, 105, 99, 104, 32, 73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_48[] = {
+70, 111, 114, 116, 117, 110, 101, 32, 116, 101, 108, 108, 105, 110, 103, 32, 109, 97, 99, 104, 105, 110, 101, 0 };
+const uint8_t objtxt_49[] = {
+82, 111, 112, 101, 32, 104, 97, 110, 103, 105, 110, 103, 32, 100, 111, 119, 110, 0 };
+const uint8_t objtxt_50[] = {
+71, 117, 109, 32, 105, 115, 32, 115, 116, 117, 99, 107, 32, 116, 111, 32, 103, 114, 97, 116, 101, 0 };
+const uint8_t objtxt_51[] = {
+82, 117, 115, 116, 121, 32, 99, 108, 111, 115, 101, 100, 32, 103, 114, 97, 116, 105, 110, 103, 0 };
+const uint8_t objtxt_52[] = {
+66, 111, 116, 116, 111, 109, 32, 111, 102, 32, 115, 108, 105, 100, 101, 0 };
+const uint8_t objtxt_53[] = {
+68, 101, 97, 100, 32, 116, 114, 101, 101, 0 };
+const uint8_t objtxt_54[] = {
+83, 105, 108, 118, 101, 114, 32, 68, 111, 108, 108, 97, 114, 0 };
+const uint8_t objtxt_55[] = {
+66, 114, 111, 107, 101, 110, 32, 98, 114, 97, 110, 99, 104, 0 };
+const uint8_t objtxt_56[] = {
+72, 97, 114, 100, 32, 100, 114, 121, 32, 99, 104, 101, 119, 105, 110, 103, 32, 103, 117, 109, 0 };
+const uint8_t objtxt_57[] = {
+83, 111, 102, 116, 32, 99, 104, 101, 119, 105, 110, 103, 32, 103, 117, 109, 0 };
+const uint8_t objtxt_58[] = {
+83, 116, 105, 99, 107, 32, 119, 105, 116, 104, 32, 103, 117, 109, 32, 111, 110, 32, 101, 110, 100, 0 };
+const uint8_t objtxt_59[] = {
+66, 111, 116, 116, 111, 109, 32, 111, 102, 32, 115, 116, 97, 105, 114, 115, 0 };
+const uint8_t objtxt_60[] = {
+66, 114, 111, 107, 101, 110, 32, 103, 114, 97, 116, 101, 0 };
+const uint8_t objtxt_61[] = {
+80, 111, 108, 101, 32, 99, 111, 109, 105, 110, 103, 32, 111, 117, 116, 32, 111, 102, 32, 104, 111, 114, 115, 101, 39, 115, 32, 98, 97, 99, 107, 0 };
+const uint8_t objtxt_62[] = {
+87, 105, 110, 100, 111, 119, 32, 105, 110, 32, 116, 97, 110, 107, 0 };
+const uint8_t objtxt_63[] = {
+87, 105, 110, 100, 111, 119, 46, 32, 71, 117, 110, 32, 112, 111, 105, 110, 116, 105, 110, 103, 32, 105, 110, 116, 111, 32, 38, 32, 109, 111, 117, 110, 116, 101, 100, 32, 98, 121, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_64[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_65[] = {
+67, 108, 97, 121, 32, 112, 105, 103, 101, 111, 110, 115, 0 };
+const uint8_t objtxt_66[] = {
+70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 0 };
+const uint8_t objtxt_67[] = {
+77, 105, 115, 115, 105, 110, 103, 32, 116, 111, 112, 32, 115, 101, 99, 114, 101, 116, 32, 112, 108, 97, 110, 115, 0 };
+const uint8_t objtxt_68[] = {
+53, 32, 68, 111, 108, 108, 97, 114, 32, 66, 105, 108, 108, 0 };
+const uint8_t objtxt_69[] = {
+77, 97, 116, 99, 104, 0 };
+const uint8_t objtxt_70[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 32, 105, 110, 32, 103, 108, 97, 115, 115, 0 };
+const uint8_t objtxt_71[] = {
+49, 32, 119, 97, 121, 32, 109, 105, 114, 114, 111, 114, 0 };
+const uint8_t objtxt_72[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_73[] = {
+66, 108, 117, 101, 32, 98, 117, 116, 116, 111, 110, 0 };
+const uint8_t objtxt_74[] = {
+83, 111, 103, 103, 121, 32, 102, 117, 115, 101, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+       objtxt_67,
+       objtxt_68,
+       objtxt_69,
+       objtxt_70,
+       objtxt_71,
+       objtxt_72,
+       objtxt_73,
+       objtxt_74,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+71, 111, 111, 100, 32, 116, 104, 105, 110, 103, 32, 116, 104, 105, 115, 32, 114, 111, 112, 101, 115, 32, 110, 111, 116, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0 };
+const uint8_t msgtxt_2[] = {
+79, 75, 0 };
+const uint8_t msgtxt_3[] = {
+73, 32, 115, 101, 101, 32, 97, 32, 98, 117, 110, 99, 104, 32, 111, 102, 32, 99, 108, 97, 121, 32, 112, 105, 103, 101, 111, 110, 115, 0 };
+const uint8_t msgtxt_4[] = {
+83, 112, 108, 97, 115, 104, 44, 32, 79, 104, 32, 110, 111, 32, 73, 32, 97, 109, 32, 97, 108, 108, 32, 119, 97, 115, 104, 101, 100, 32, 117, 112, 33, 0 };
+const uint8_t msgtxt_5[] = {
+84, 105, 99, 107, 101, 116, 32, 108, 97, 100, 121, 32, 114, 105, 112, 115, 32, 117, 112, 32, 98, 105, 108, 108, 32, 38, 32, 115, 97, 121, 115, 32, 34, 36, 53, 32, 103, 114, 111, 99, 101, 114, 121, 32, 98, 105, 108, 108, 10, 97, 105, 110, 39, 116, 32, 109, 111, 110, 101, 121, 32, 98, 117, 98, 33, 34, 0 };
+const uint8_t msgtxt_6[] = {
+84, 111, 111, 32, 115, 116, 101, 101, 112, 0 };
+const uint8_t msgtxt_7[] = {
+84, 101, 108, 108, 32, 109, 101, 32, 119, 104, 101, 114, 101, 32, 116, 111, 32, 108, 111, 111, 107, 33, 0 };
+const uint8_t msgtxt_8[] = {
+73, 32, 115, 101, 101, 32, 97, 32, 104, 105, 100, 100, 101, 110, 32, 100, 111, 111, 114, 32, 105, 110, 32, 105, 116, 0 };
+const uint8_t msgtxt_9[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 109, 97, 116, 99, 104, 33, 0 };
+const uint8_t msgtxt_10[] = {
+66, 111, 117, 110, 99, 101, 114, 32, 116, 104, 114, 111, 119, 115, 32, 109, 101, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_11[] = {
+80, 97, 114, 107, 32, 99, 108, 111, 115, 101, 115, 32, 97, 116, 32, 109, 105, 100, 110, 105, 103, 104, 116, 46, 32, 83, 104, 111, 101, 115, 32, 114, 101, 113, 117, 105, 114, 101, 100, 32, 97, 116, 32, 97, 108, 108, 32, 116, 105, 109, 101, 115, 46, 10, 77, 97, 110, 97, 103, 101, 109, 101, 110, 116, 32, 78, 79, 84, 32, 114, 101, 115, 112, 111, 110, 115, 105, 98, 108, 101, 32, 102, 111, 114, 32, 97, 99, 99, 105, 100, 101, 110, 116, 115, 33, 33, 10, 67, 65, 85, 84, 73, 79, 78, 32, 116, 104, 105, 115, 32, 112, 97, 114, 107, 32, 105, 115, 32, 68, 65, 78, 71, 69, 82, 111, 117, 115, 33, 10, 0 };
+const uint8_t msgtxt_12[] = {
+73, 32, 99, 97, 110, 32, 115, 101, 101, 32, 109, 121, 115, 101, 108, 102, 32, 116, 104, 105, 110, 44, 102, 97, 116, 32, 38, 32, 116, 97, 108, 108, 0 };
+const uint8_t msgtxt_13[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 115, 116, 114, 97, 110, 103, 101, 32, 109, 117, 115, 105, 99, 32, 112, 108, 97, 121, 105, 110, 103, 0 };
+const uint8_t msgtxt_14[] = {
+83, 111, 117, 110, 100, 115, 32, 108, 105, 107, 101, 32, 97, 32, 115, 112, 97, 99, 101, 32, 111, 112, 101, 114, 97, 0 };
+const uint8_t msgtxt_15[] = {
+116, 105, 108, 108, 32, 109, 105, 100, 110, 105, 103, 104, 116, 0 };
+const uint8_t msgtxt_16[] = {
+84, 104, 101, 32, 112, 97, 114, 107, 32, 105, 115, 32, 99, 108, 111, 115, 105, 110, 103, 32, 105, 110, 0 };
+const uint8_t msgtxt_17[] = {
+116, 117, 114, 110, 115, 0 };
+const uint8_t msgtxt_18[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 32, 55, 44, 32, 34, 77, 89, 83, 84, 69, 82, 89, 32, 70, 85, 78, 32, 72, 79, 85, 83, 69, 34, 32, 98, 121, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 10, 68, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 32, 77, 97, 114, 105, 110, 32, 67, 111, 109, 112, 117, 116, 101, 114, 32, 67, 101, 110, 116, 101, 114, 46, 0 };
+const uint8_t msgtxt_19[] = {
+83, 104, 101, 32, 116, 104, 97, 110, 107, 115, 32, 109, 101, 32, 38, 32, 116, 117, 114, 110, 115, 32, 97, 32, 104, 105, 100, 100, 101, 110, 32, 107, 110, 111, 98, 0 };
+const uint8_t msgtxt_20[] = {
+111, 102, 32, 111, 114, 100, 101, 114, 0 };
+const uint8_t msgtxt_21[] = {
+83, 104, 101, 39, 115, 32, 112, 114, 101, 116, 116, 121, 44, 32, 98, 117, 116, 32, 104, 97, 115, 32, 114, 101, 97, 108, 108, 121, 32, 115, 110, 97, 114, 108, 101, 100, 32, 104, 97, 105, 114, 33, 0 };
+const uint8_t msgtxt_22[] = {
+87, 104, 101, 101, 101, 101, 0 };
+const uint8_t msgtxt_23[] = {
+83, 104, 101, 39, 115, 32, 116, 111, 111, 32, 102, 97, 115, 116, 32, 102, 111, 114, 32, 109, 101, 0 };
+const uint8_t msgtxt_24[] = {
+78, 111, 116, 32, 104, 101, 114, 101, 33, 0 };
+const uint8_t msgtxt_25[] = {
+73, 32, 97, 109, 0 };
+const uint8_t msgtxt_26[] = {
+72, 111, 119, 63, 0 };
+const uint8_t msgtxt_27[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_28[] = {
+65, 32, 109, 101, 114, 109, 97, 105, 100, 32, 115, 119, 105, 109, 115, 32, 98, 121, 32, 97, 110, 100, 32, 119, 97, 118, 101, 115, 0 };
+const uint8_t msgtxt_29[] = {
+46, 0 };
+const uint8_t msgtxt_30[] = {
+83, 111, 109, 101, 111, 110, 101, 32, 115, 104, 111, 116, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_31[] = {
+65, 108, 108, 32, 116, 104, 101, 32, 119, 97, 116, 101, 114, 32, 114, 97, 110, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_32[] = {
+70, 111, 114, 32, 86, 97, 110, 100, 97, 108, 105, 115, 109, 0 };
+const uint8_t msgtxt_33[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 100, 114, 111, 112, 112, 101, 100, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_34[] = {
+79, 110, 32, 119, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_35[] = {
+65, 116, 32, 87, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_36[] = {
+83, 105, 122, 122, 108, 101, 44, 32, 105, 116, 32, 98, 117, 114, 110, 115, 32, 119, 105, 116, 104, 32, 97, 32, 100, 117, 108, 108, 32, 103, 108, 111, 119, 46, 0 };
+const uint8_t msgtxt_37[] = {
+105, 116, 115, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_38[] = {
+73, 32, 119, 97, 115, 32, 104, 111, 108, 100, 105, 110, 103, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_39[] = {
+84, 114, 121, 58, 32, 34, 83, 84, 73, 67, 75, 32, 71, 85, 77, 34, 0 };
+const uint8_t msgtxt_40[] = {
+73, 32, 115, 104, 111, 116, 32, 97, 32, 99, 108, 97, 121, 32, 112, 105, 103, 101, 111, 110, 33, 0 };
+const uint8_t msgtxt_41[] = {
+73, 116, 32, 99, 111, 108, 108, 97, 112, 115, 101, 100, 32, 105, 110, 116, 111, 32, 97, 32, 112, 105, 108, 101, 32, 111, 102, 32, 98, 111, 110, 101, 115, 0 };
+const uint8_t msgtxt_42[] = {
+67, 97, 108, 108, 105, 111, 112, 101, 32, 105, 115, 32, 115, 111, 32, 76, 79, 85, 68, 32, 73, 32, 99, 97, 110, 39, 116, 32, 104, 101, 97, 114, 32, 99, 108, 101, 97, 114, 108, 121, 33, 0 };
+const uint8_t msgtxt_43[] = {
+115, 116, 97, 114, 116, 115, 46, 0 };
+const uint8_t msgtxt_44[] = {
+84, 105, 110, 121, 32, 112, 105, 101, 99, 101, 32, 111, 102, 32, 104, 101, 109, 112, 32, 102, 97, 108, 108, 115, 32, 111, 110, 32, 109, 121, 32, 104, 101, 97, 100, 32, 97, 110, 100, 32, 118, 97, 110, 105, 115, 104, 101, 115, 33, 0 };
+const uint8_t msgtxt_45[] = {
+84, 97, 115, 116, 101, 115, 32, 72, 79, 82, 82, 73, 66, 76, 69, 33, 0 };
+const uint8_t msgtxt_46[] = {
+70, 105, 114, 101, 32, 108, 97, 100, 100, 101, 114, 32, 114, 101, 116, 114, 97, 99, 116, 115, 32, 97, 110, 100, 32, 108, 101, 97, 118, 101, 115, 32, 109, 101, 32, 104, 101, 114, 101, 33, 0 };
+const uint8_t msgtxt_47[] = {
+105, 116, 32, 115, 97, 121, 115, 0 };
+const uint8_t msgtxt_48[] = {
+84, 105, 99, 107, 101, 116, 32, 108, 97, 100, 121, 32, 97, 115, 107, 115, 32, 109, 101, 32, 119, 104, 97, 116, 32, 73, 32, 119, 97, 110, 116, 0 };
+const uint8_t msgtxt_49[] = {
+83, 104, 101, 32, 104, 97, 110, 100, 115, 32, 109, 101, 32, 97, 32, 116, 105, 99, 107, 101, 116, 0 };
+const uint8_t msgtxt_50[] = {
+73, 116, 115, 32, 116, 111, 111, 32, 116, 105, 103, 104, 116, 0 };
+const uint8_t msgtxt_51[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 46, 0 };
+const uint8_t msgtxt_52[] = {
+79, 117, 99, 104, 0 };
+const uint8_t msgtxt_53[] = {
+83, 104, 101, 32, 115, 97, 121, 115, 58, 32, 34, 84, 104, 97, 116, 39, 108, 108, 32, 98, 101, 32, 97, 32, 100, 111, 108, 108, 97, 114, 34, 0 };
+const uint8_t msgtxt_54[] = {
+73, 32, 115, 101, 101, 32, 97, 32, 115, 104, 105, 110, 121, 32, 67, 79, 73, 78, 32, 97, 116, 32, 116, 104, 101, 32, 98, 111, 116, 116, 111, 109, 32, 111, 102, 32, 116, 104, 101, 32, 100, 114, 97, 105, 110, 33, 0 };
+const uint8_t msgtxt_55[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 114, 101, 97, 99, 104, 32, 105, 116, 44, 32, 109, 121, 32, 97, 114, 109, 32, 105, 115, 32, 116, 111, 111, 32, 115, 104, 111, 114, 116, 33, 0 };
+const uint8_t msgtxt_56[] = {
+71, 111, 116, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_57[] = {
+84, 111, 111, 32, 104, 97, 114, 100, 0 };
+const uint8_t msgtxt_58[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 100, 111, 32, 116, 104, 97, 116, 0 };
+const uint8_t msgtxt_59[] = {
+79, 110, 108, 121, 32, 116, 104, 105, 110, 103, 32, 108, 101, 102, 116, 32, 105, 115, 32, 111, 110, 101, 32, 98, 97, 114, 101, 32, 98, 114, 97, 110, 99, 104, 0 };
+const uint8_t msgtxt_60[] = {
+68, 111, 101, 115, 110, 39, 116, 32, 119, 111, 114, 107, 0 };
+const uint8_t msgtxt_61[] = {
+73, 32, 106, 117, 115, 116, 32, 112, 117, 115, 104, 32, 105, 116, 32, 97, 114, 111, 117, 110, 100, 0 };
+const uint8_t msgtxt_62[] = {
+83, 97, 121, 32, 97, 103, 97, 105, 110, 32, 38, 32, 117, 115, 101, 32, 97, 32, 99, 111, 108, 111, 114, 0 };
+const uint8_t msgtxt_63[] = {
+87, 97, 108, 108, 32, 115, 119, 105, 110, 103, 115, 32, 109, 101, 32, 97, 114, 111, 117, 110, 100, 32, 38, 32, 73, 39, 109, 32, 101, 108, 115, 101, 119, 104, 101, 114, 101, 46, 46, 46, 0 };
+const uint8_t msgtxt_64[] = {
+74, 97, 109, 101, 115, 58, 10, 87, 101, 32, 109, 117, 115, 116, 32, 103, 101, 116, 32, 116, 104, 101, 32, 112, 108, 97, 110, 115, 32, 98, 97, 99, 107, 32, 98, 121, 32, 116, 111, 110, 105, 103, 104, 116, 33, 32, 87, 101, 32, 98, 101, 108, 105, 101, 118, 101, 32, 116, 104, 101, 121, 39, 114, 101, 32, 104, 105, 100, 100, 101, 110, 119, 105, 116, 104, 105, 110, 32, 104, 105, 115, 32, 70, 117, 110, 32, 72, 111, 117, 115, 101, 33, 32, 32, 83, 105, 103, 110, 101, 100, 44, 10, 77, 10, 80, 46, 83, 46, 32, 81, 32, 115, 97, 121, 115, 32, 101, 110, 106, 111, 121, 32, 116, 104, 101, 32, 103, 117, 109, 33, 0 };
+const uint8_t msgtxt_65[] = {
+84, 114, 121, 32, 69, 88, 65, 77, 73, 78, 73, 78, 71, 32, 116, 104, 105, 110, 103, 115, 33, 0 };
+const uint8_t msgtxt_66[] = {
+73, 32, 115, 97, 121, 58, 0 };
+const uint8_t msgtxt_67[] = {
+73, 39, 109, 32, 110, 111, 116, 32, 119, 101, 97, 114, 105, 110, 103, 32, 105, 116, 0 };
+const uint8_t msgtxt_68[] = {
+80, 79, 80, 0 };
+const uint8_t msgtxt_69[] = {
+72, 85, 72, 63, 32, 87, 104, 121, 32, 100, 111, 32, 121, 111, 117, 32, 119, 97, 110, 116, 32, 109, 101, 32, 116, 111, 32, 77, 65, 82, 82, 89, 63, 0 };
+const uint8_t msgtxt_70[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 110, 111, 32, 104, 97, 110, 100, 108, 101, 32, 111, 110, 32, 105, 116, 0 };
+const uint8_t msgtxt_71[] = {
+77, 121, 32, 115, 104, 111, 101, 32, 104, 101, 101, 108, 32, 105, 115, 32, 108, 111, 111, 115, 101, 0 };
+const uint8_t msgtxt_72[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 102, 101, 108, 108, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_73[] = {
+65, 85, 84, 72, 79, 82, 73, 90, 69, 68, 32, 80, 69, 82, 83, 79, 78, 78, 69, 76, 32, 79, 78, 76, 89, 33, 0 };
+const uint8_t msgtxt_74[] = {
+71, 117, 97, 114, 100, 32, 104, 101, 97, 114, 115, 32, 101, 120, 112, 108, 111, 115, 105, 111, 110, 32, 38, 32, 115, 104, 111, 111, 116, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_75[] = {
+70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 32, 116, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_76[] = {
+102, 108, 97, 116, 32, 111, 110, 32, 109, 121, 32, 102, 97, 99, 101, 33, 0 };
+const uint8_t msgtxt_77[] = {
+82, 105, 100, 101, 0 };
+const uint8_t msgtxt_78[] = {
+115, 116, 111, 112, 115, 46, 0 };
+const uint8_t msgtxt_79[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 114, 101, 100, 32, 98, 117, 116, 116, 111, 110, 0 };
+const uint8_t msgtxt_80[] = {
+98, 105, 103, 32, 98, 111, 108, 116, 115, 32, 104, 111, 108, 100, 32, 105, 116, 32, 100, 111, 119, 110, 0 };
+const uint8_t msgtxt_81[] = {
+73, 32, 99, 97, 110, 32, 111, 110, 108, 121, 32, 114, 101, 109, 111, 118, 101, 32, 49, 32, 98, 111, 108, 116, 33, 0 };
+const uint8_t msgtxt_82[] = {
+49, 0 };
+const uint8_t msgtxt_83[] = {
+50, 0 };
+const uint8_t msgtxt_84[] = {
+87, 97, 108, 108, 32, 99, 108, 111, 115, 101, 100, 32, 98, 101, 104, 105, 110, 100, 32, 109, 101, 0 };
+const uint8_t msgtxt_85[] = {
+84, 111, 111, 32, 104, 105, 103, 104, 32, 102, 111, 114, 32, 109, 101, 0 };
+const uint8_t msgtxt_86[] = {
+77, 111, 118, 105, 110, 103, 32, 114, 105, 100, 101, 32, 116, 104, 114, 111, 119, 115, 32, 109, 101, 32, 111, 102, 102, 32, 98, 97, 108, 97, 110, 99, 101, 0 };
+const uint8_t msgtxt_87[] = {
+73, 32, 102, 101, 108, 108, 0 };
+const uint8_t msgtxt_88[] = {
+71, 101, 110, 116, 108, 101, 32, 97, 105, 114, 32, 98, 108, 97, 115, 116, 32, 98, 108, 111, 119, 115, 32, 117, 112, 32, 109, 121, 32, 108, 101, 103, 46, 0 };
+const uint8_t msgtxt_89[] = {
+72, 97, 114, 100, 32, 98, 108, 97, 115, 116, 32, 111, 102, 32, 97, 105, 114, 32, 114, 105, 112, 115, 32, 109, 121, 32, 98, 111, 100, 121, 32, 97, 112, 97, 114, 116, 0 };
+const uint8_t msgtxt_90[] = {
+77, 97, 99, 104, 105, 110, 101, 32, 108, 105, 103, 104, 116, 115, 32, 117, 112, 32, 97, 110, 100, 32, 115, 97, 121, 115, 0 };
+const uint8_t msgtxt_91[] = {
+72, 85, 82, 82, 65, 72, 33, 32, 89, 111, 117, 39, 118, 101, 32, 100, 111, 110, 101, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_92[] = {
+73, 32, 115, 101, 101, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 109, 105, 114, 114, 111, 114, 32, 114, 111, 111, 109, 0 };
+const uint8_t msgtxt_93[] = {
+110, 111, 116, 32, 111, 110, 32, 105, 116, 0 };
+const uint8_t msgtxt_94[] = {
+116, 111, 111, 32, 104, 111, 116, 0 };
+const uint8_t msgtxt_95[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 99, 97, 116, 119, 97, 108, 107, 32, 97, 98, 111, 118, 101, 32, 116, 104, 101, 32, 114, 105, 100, 101, 0 };
+const uint8_t msgtxt_96[] = {
+67, 108, 105, 99, 107, 33, 0 };
+const uint8_t msgtxt_97[] = {
+0 };
+const uint8_t msgtxt_98[] = {
+0 };
+const uint8_t msgtxt_99[] = {
+0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+       msgtxt_92,
+       msgtxt_93,
+       msgtxt_94,
+       msgtxt_95,
+       msgtxt_96,
+       msgtxt_97,
+       msgtxt_98,
+       msgtxt_99,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   INTRO*/
+       175, 
+       9, 1, 64, 88, 0, 1, 
+       79, 58, 18, 66, 
+/* AUTO  100   DECREMENT COUNTER*/
+       164, 
+       16, 0, 
+       77, 
+/* AUTO  100   PARK IS CLOSING*/
+       166, 
+       15, 40, 
+       16, 78, 17, 
+/* AUTO  40    AIR BLAST*/
+       136, 40, 
+       4, 3, 9, 7, 
+       138, 
+/* AUTO  100   WALL CLOSES*/
+       173, 
+       4, 10, 9, 5, 0, 5, 
+       58, 134, 
+/* AUTO  100   WALL RESET*/
+       168, 
+       7, 10, 0, 5, 
+       60, 
+/* AUTO  5     HEEL LOOSE*/
+       136, 5, 
+       3, 4, 14, 24, 
+       121, 
+/* AUTO  100   WALL*/
+       172, 
+       4, 4, 9, 5, 0, 5, 
+       58, 
+/* AUTO  100   AUTHORIZE*/
+       168, 
+       4, 2, 0, 4, 
+       60, 
+/* AUTO  100   LOUD CALIOPE*/
+       164, 
+       2, 31, 
+       42, 
+/* AUTO  40    AIR BLAST HARD*/
+       137, 40, 
+       4, 3, 8, 7, 
+       139, 61, 
+/* AUTO  100   CLOSE PARK*/
+       174, 
+       15, 0, 9, 4, 0, 1, 
+       10, 54, 76, 
+/* AUTO  100   DOLLAR BILL*/
+       173, 
+       2, 68, 4, 1, 0, 68, 
+       59, 5, 
+/* AUTO  100   NO SHOES THROWN OUT*/
+       175, 
+       6, 4, 4, 2, 0, 1, 
+       88, 88, 10, 54, 
+/* AUTO  100   NO TICKET THROW OUT*/
+       175, 
+       6, 23, 4, 2, 0, 1, 
+       88, 88, 10, 54, 
+/* AUTO  100   COMB*/
+       182, 
+       2, 28, 2, 27, 0, 59, 0, 52, 0, 28, 
+       72, 19, 59, 
+/* AUTO  100   REMOVE STAIR*/
+       176, 
+       13, 59, 5, 59, 0, 59, 0, 52, 
+       72, 
+/* AUTO  100   PERSON IN ROOM END GAME*/
+       164, 
+       4, 35, 
+       63, 
+/* AUTO  100   GIVE DOLLAR*/
+       178, 
+       2, 54, 0, 54, 0, 23, 4, 1, 
+       49, 59, 74, 
+/* AUTO  25    HEMP FALL*/
+       136, 25, 
+       4, 22, 14, 1, 
+       44, 
+/* AUTO  100   VALVE*/
+       177, 
+       2, 35, 2, 33, 0, 34, 0, 35, 
+       53, 59, 
+/* AUTO  100   FUSE GUM*/
+       176, 
+       2, 57, 13, 37, 5, 37, 0, 37, 
+       53, 
+/* AUTO  100   FUSE GUM*/
+       172, 
+       1, 57, 13, 37, 0, 37, 
+       74, 
+/* AUTO  100   AUTHORIZ AREA*/
+       168, 
+       4, 7, 0, 4, 
+       60, 
+/* AUTO  100   SHOOTING GALLERY*/
+       169, 
+       4, 25, 0, 14, 
+       54, 73, 
+/* AUTO  0     SHOT*/
+       203, 
+       5, 64, 0, 25, 
+       118, 30, 54, 63, 
+/* AUTO  0     */
+       196, 
+       0, 25, 
+       54, 
+/* AUTO  100   WON*/
+       165, 
+       1, 67, 
+       141, 63, 
+/* AUTO  100   DARK*/
+       169, 
+       4, 34, 9, 15, 
+       56, 76, 
+/* AUTO  100   LIGHT*/
+       169, 
+       4, 26, 8, 15, 
+       57, 76, 
+/* AUTO  100   LIGHT*/
+       169, 
+       4, 25, 8, 15, 
+       57, 76, 
+/* AUTO  5     GUM HARDENS*/
+       144, 5, 
+       14, 56, 0, 56, 0, 57, 14, 37, 
+       72, 
+/* AUTO  100   OUTSIDE PARK*/
+       168, 
+       4, 1, 0, 4, 
+       58, 
+/* AUTO  100   SOGGY FUSE*/
+       176, 
+       3, 0, 3, 36, 0, 36, 0, 74, 
+       72, 
+};
+const uint8_t actions[] = {
+/* JUMP  ANY   .*/
+       18, 66, 0, 
+       4, 22, 2, 1, 0, 33, 8, 6, 
+       70, 1, 54, 
+/* GO    ROPE  */
+       9, 1, 7, 
+       4, 22, 2, 1, 
+       26, 135, 
+/* GO    SLID  */
+       19, 1, 24, 
+       2, 5, 13, 38, 0, 5, 0, 4, 
+       54, 102, 107, 58, 
+/* JUMP  ANY   */
+       10, 66, 0, 
+       4, 22, 9, 6, 
+       136, 137, 61, 
+/* PULL  BLUE  */
+       11, 35, 21, 
+       4, 10, 0, 23, 
+       146, 113, 54, 76, 
+/* PULL  YELL  */
+       11, 35, 20, 
+       4, 10, 0, 24, 
+       146, 113, 13, 54, 
+/* PULL  GREE  */
+       11, 35, 19, 
+       4, 10, 0, 8, 
+       146, 113, 54, 76, 
+/* LOOK  UP    */
+       10, 44, 5, 
+       4, 22, 0, 1, 
+       53, 76, 2, 
+/* LIST  ANY   */
+       5, 31, 0, 
+       2, 14, 
+       2, 14, 
+/* GO    TRAM  */
+       11, 1, 15, 
+       2, 18, 0, 27, 
+       2, 80, 54, 76, 
+/* LOOK  MIRR  */
+       9, 44, 10, 
+       2, 2, 3, 47, 
+       12, 8, 
+/* GET   OFF   */
+       6, 10, 67, 
+       4, 27, 
+       2, 80, 76, 
+/* GO    COUN  */
+       8, 1, 50, 
+       0, 0, 4, 1, 
+       48, 
+/* LIST  ANY   */
+       4, 31, 0, 
+       4, 24, 
+       14, 
+/* LOOK  MIRR  */
+       8, 44, 10, 
+       2, 2, 12, 47, 
+       12, 
+/* GET   DOWN  */
+       6, 10, 6, 
+       4, 27, 
+       2, 80, 76, 
+/* COMB  HAIR  */
+       8, 62, 65, 
+       3, 28, 5, 27, 
+       2, 
+/* LOOK  WIND  */
+       8, 44, 51, 
+       2, 62, 13, 27, 
+       28, 
+/* GO    SLID  */
+       19, 1, 24, 
+       2, 5, 14, 38, 0, 5, 0, 4, 
+       4, 54, 76, 58, 
+/* LOOK  MERM  */
+       13, 44, 31, 
+       2, 62, 13, 5, 13, 28, 
+       0, 21, 
+/* LIGH  FUSE  */
+       5, 40, 78, 
+       6, 69, 
+       26, 9, 
+/* GO    LADD  */
+       15, 1, 27, 
+       2, 14, 0, 16, 0, 4, 
+       54, 76, 58, 46, 
+/* BREA  BOUN  */
+       0, 48, 71, 
+       24, 
+/* DANC  ANY   */
+       0, 79, 0, 
+       2, 
+/* GO    EXIT  */
+       6, 1, 16, 
+       2, 40, 
+       26, 137, 126, 
+/* READ  SIGN  */
+       4, 47, 38, 
+       4, 1, 
+       11, 
+/* BLOW  BUBB  */
+       4, 23, 72, 
+       3, 57, 
+       118, 
+/* BLOW  BUBB  */
+       5, 23, 72, 
+       3, 56, 
+       108, 107, 
+/* LOOK  SHOE  */
+       8, 44, 9, 
+       3, 3, 14, 24, 
+       121, 
+/* REMO  HEEL  */
+       19, 25, 37, 
+       3, 3, 14, 24, 0, 24, 0, 39, 
+       2, 74, 53, 73, 
+/* AUTO  0     */
+       197, 
+       0, 36, 
+       122, 53, 
+/* SWIM  ANY   */
+       4, 50, 0, 
+       2, 0, 
+       25, 
+/* SWIM  ANY   */
+       4, 50, 0, 
+       5, 0, 
+       24, 
+/* CRAW  ANY   */
+       10, 76, 0, 
+       4, 11, 0, 15, 
+       2, 54, 76, 
+/* LOOK  WIND  */
+       4, 44, 51, 
+       2, 63, 
+       3, 
+/* LOOK  MERM  */
+       4, 44, 31, 
+       2, 27, 
+       21, 
+/* GET   MERM  */
+       4, 10, 31, 
+       2, 27, 
+       23, 
+/* LOOK  TREE  */
+       12, 44, 63, 
+       2, 53, 14, 55, 14, 58, 
+       109, 
+/* OPEN  DOOR  */
+       13, 80, 11, 
+       2, 13, 0, 13, 0, 10, 
+       72, 2, 
+/* CLOS  DOOR  */
+       13, 52, 11, 
+       2, 10, 0, 13, 0, 10, 
+       72, 2, 
+/* GO    DOOR  */
+       10, 1, 11, 
+       2, 10, 0, 13, 
+       54, 76, 2, 
+/* SHOO  ANY   .*/
+       5, 16, 0, 
+       2, 63, 
+       2, 40, 
+/* LOOK  SHEL  */
+       12, 44, 64, 
+       2, 16, 14, 9, 14, 66, 
+       125, 
+/* GET   FLAS  */
+       13, 10, 8, 
+       14, 9, 2, 16, 0, 66, 
+       52, 2, 
+/* GET   FLAS  */
+       9, 10, 8, 
+       2, 66, 0, 66, 
+       2, 52, 
+/* LIGH  MATC  */
+       11, 40, 54, 
+       3, 69, 0, 69, 
+       2, 59, 88, 37, 
+/* GET   FLAS  */
+       9, 10, 8, 
+       2, 9, 0, 9, 
+       2, 52, 
+/* HELP  ANY   */
+       0, 30, 0, 
+       115, 
+/* OPEN  ROPE  */
+       1, 80, 7, 
+       108, 50, 
+/* GO    TREE  */
+       4, 1, 63, 
+       2, 53, 
+       108, 
+/* STIC  GUM   */
+       4, 42, 59, 
+       1, 57, 
+       34, 
+/* ON    FUSE  */
+       18, 74, 78, 
+       3, 57, 0, 37, 3, 36, 0, 36, 
+       2, 53, 59, 
+/* GO    POLE  */
+       15, 1, 13, 
+       2, 61, 0, 22, 0, 4, 
+       2, 54, 44, 58, 
+/* LIGH  FLAS  */
+       14, 40, 8, 
+       3, 66, 0, 9, 0, 66, 
+       2, 72, 76, 
+/* UNLI  FLAS  */
+       14, 61, 8, 
+       3, 9, 0, 9, 0, 66, 
+       2, 72, 76, 
+/* SAY   TICK  */
+       6, 56, 35, 
+       4, 1, 
+       2, 85, 103, 
+/* USE   BRAN  */
+       13, 38, 57, 
+       9, 2, 2, 51, 3, 55, 
+       110, 111, 
+/* GUM   ANY   */
+       0, 15, 0, 
+       39, 
+/* FIX   HEEL  */
+       8, 86, 37, 
+       3, 3, 14, 24, 
+       2, 
+/* GO    MIRR  */
+       6, 1, 10, 
+       2, 2, 
+       2, 102, 27, 
+/* OPEN  GRAT  */
+       0, 80, 47, 
+       26, 
+/* READ  SIGN  */
+       4, 47, 38, 
+       2, 5, 
+       123, 
+/* LOOK  GRAT  */
+       11, 44, 47, 
+       2, 51, 9, 2, 
+       2, 104, 133, 130, 
+/* OPEN  DOOR  */
+       17, 80, 11, 
+       1, 30, 2, 8, 0, 8, 0, 16, 
+       55, 53, 
+/* GET   DOLL  */
+       9, 10, 60, 
+       14, 54, 2, 51, 
+       26, 105, 
+/* GET   DOLL  */
+       9, 10, 60, 
+       2, 54, 0, 54, 
+       2, 52, 
+/* OPEN  DRAI  */
+       19, 80, 42, 
+       0, 38, 0, 0, 0, 27, 2, 0, 
+       72, 31, 55, 73, 
+/* AUTO  0     */
+       200, 
+       2, 30, 0, 30, 
+       55, 
+/* TOUC  PIPE  */
+       6, 27, 56, 
+       2, 33, 
+       2, 102, 144, 
+/* CLOS  DOOR  */
+       14, 52, 11, 
+       2, 16, 0, 8, 0, 16, 
+       53, 55, 2, 
+/* JUMP  ANY   */
+       6, 66, 0, 
+       3, 18, 
+       26, 25, 143, 
+/* STIC  GUM   */
+       5, 42, 59, 
+       3, 56, 
+       108, 107, 
+/* LOOK  WATC  .*/
+       6, 44, 40, 
+       3, 25, 
+       78, 17, 15, 
+/* AUTO  0     */
+/* ON    BRAN  */
+       17, 74, 57, 
+       3, 57, 3, 55, 0, 55, 0, 58, 
+       2, 72, 
+/* USE   BRAN  */
+       23, 38, 57, 
+       3, 58, 9, 2, 2, 51, 0, 54, 0, 2, 
+       2, 74, 106, 58, 
+/* LOOK  MIRR  */
+       4, 44, 10, 
+       2, 71, 
+       142, 
+/* GET   BRAN  */
+       9, 10, 57, 
+       2, 58, 0, 58, 
+       2, 52, 
+/* CHEW  GUM   */
+       14, 55, 59, 
+       1, 56, 0, 56, 0, 57, 
+       2, 72, 45, 
+/* CHEW  GUM   */
+       5, 55, 59, 
+       1, 57, 
+       2, 45, 
+/* EAT   GUM   */
+       10, 54, 59, 
+       1, 56, 0, 56, 
+       2, 59, 45, 
+/* GET   BRAN  */
+       13, 10, 57, 
+       2, 53, 14, 55, 0, 55, 
+       2, 52, 
+/* GET   BRAN  */
+       9, 10, 57, 
+       2, 55, 0, 55, 
+       2, 52, 
+/* GET   GRAT  */
+       0, 10, 47, 
+       26, 
+/* EAT   GUM   */
+       10, 54, 59, 
+       1, 57, 0, 57, 
+       2, 59, 45, 
+/* BREA  BRAN  */
+       13, 48, 57, 
+       2, 53, 14, 55, 0, 55, 
+       2, 52, 
+/* GET   SKEL  */
+       14, 10, 12, 
+       2, 7, 0, 7, 0, 44, 
+       55, 53, 41, 
+/* LOOK  MACH  */
+       4, 44, 33, 
+       3, 48, 
+       129, 
+/* GO    ROPE  */
+       9, 1, 7, 
+       2, 49, 0, 22, 
+       2, 54, 
+/* ON    GRAT  */
+       18, 74, 47, 
+       3, 57, 2, 43, 0, 57, 0, 50, 
+       59, 53, 73, 
+/* AUTO  0     */
+       200, 
+       1, 37, 0, 37, 
+       53, 
+/* PRES  ANY   */
+       6, 36, 0, 
+       2, 48, 
+       140, 118, 110, 
+/* READ  SIGN  .*/
+       4, 47, 38, 
+       2, 17, 
+       123, 
+/* GO    SLID  */
+       9, 1, 24, 
+       2, 52, 2, 0, 
+       6, 4, 
+/* GO    STAI  .*/
+       15, 1, 32, 
+       2, 59, 0, 3, 0, 4, 
+       2, 54, 76, 60, 
+/* READ  LETT  */
+       4, 47, 66, 
+       3, 39, 
+       114, 
+/* GO    FUN   */
+       15, 1, 68, 
+       4, 1, 0, 2, 0, 4, 
+       2, 54, 76, 60, 
+/* GO    MERR  */
+       4, 1, 75, 
+       2, 31, 
+       119, 
+/* GO    MERR  */
+       14, 1, 75, 
+       2, 32, 2, 29, 0, 18, 
+       2, 54, 76, 
+/* TURN  ANY   */
+       9, 51, 0, 
+       2, 33, 5, 34, 
+       108, 120, 
+/* TURN  ANY   */
+       22, 51, 0, 
+       2, 34, 8, 3, 0, 3, 0, 29, 0, 31, 
+       2, 60, 72, 
+/* TURN  ANY   */
+       22, 51, 0, 
+       2, 34, 9, 3, 0, 3, 0, 29, 0, 31, 
+       2, 58, 72, 
+/* JUMP  ANY   */
+       6, 66, 0, 
+       4, 27, 
+       22, 73, 80, 
+/* AUTO  0     */
+       206, 
+       4, 16, 0, 15, 0, 4, 
+       54, 76, 60, 
+/* AUTO  0     .*/
+       204, 
+       7, 15, 0, 27, 7, 35, 
+       80, 
+/* PRES  BLUE  */
+       15, 36, 21, 
+       2, 73, 8, 6, 0, 6, 
+       60, 146, 127, 43, 
+/* REMO  SHOE  */
+       9, 25, 9, 
+       3, 4, 0, 4, 
+       2, 59, 
+/* WEAR  SPEC  */
+       14, 43, 43, 
+       3, 46, 0, 47, 0, 46, 
+       2, 74, 74, 
+/* REMO  SPEC  */
+       9, 25, 43, 
+       3, 47, 0, 47, 
+       2, 59, 
+/* DROP  SHOE  */
+       14, 18, 9, 
+       3, 3, 0, 3, 0, 4, 
+       53, 59, 2, 
+/* DROP  SPEC  */
+       14, 18, 43, 
+       3, 46, 0, 46, 0, 47, 
+       53, 59, 2, 
+/* LIGH  FUSE  */
+       7, 40, 78, 
+       3, 36, 
+       36, 73, 88, 88, 
+/* AUTO  0     */
+       202, 
+       0, 36, 0, 69, 
+       59, 37, 59, 
+/* LIGH  FUSE  */
+       7, 40, 78, 
+       3, 37, 
+       36, 73, 88, 118, 
+/* AUTO  0     */
+       197, 
+       1, 37, 
+       38, 61, 
+/* AUTO  0     */
+       208, 
+       7, 35, 2, 50, 0, 60, 0, 43, 
+       72, 
+/* AUTO  0     */
+       206, 
+       7, 35, 5, 13, 0, 35, 
+       54, 76, 124, 
+/* AUTO  0     */
+       211, 
+       0, 69, 0, 37, 0, 50, 0, 57, 
+       59, 59, 59, 59, 
+/* PRES  RED   */
+       14, 36, 26, 
+       2, 11, 8, 7, 0, 7, 
+       60, 2, 146, 
+/* PRES  BLUE  */
+       15, 36, 21, 
+       2, 73, 9, 6, 0, 6, 
+       58, 146, 127, 128, 
+/* LOOK  GRAT  */
+       5, 44, 47, 
+       2, 51, 
+       133, 130, 
+/* LOOK  GRAT  */
+       5, 44, 47, 
+       2, 45, 
+       132, 130, 
+/* MOVE  GRAT  */
+       13, 71, 47, 
+       2, 45, 0, 26, 14, 26, 
+       53, 2, 
+/* MOVE  GRAT  */
+       13, 71, 47, 
+       2, 45, 13, 26, 0, 26, 
+       59, 2, 
+/* USE   WREN  */
+       18, 38, 81, 
+       3, 19, 2, 51, 0, 51, 0, 45, 
+       72, 2, 131, 
+/* USE   WREN  */
+       9, 38, 81, 
+       3, 19, 3, 45, 
+       108, 107, 
+/* GO    WIND  GO*/
+       5, 1, 51, 
+       2, 63, 
+       108, 50, 
+/* KISS  MERM  */
+       9, 64, 31, 
+       4, 5, 2, 27, 
+       2, 22, 
+/* GO    HOLE  */
+       15, 1, 82, 
+       2, 26, 0, 13, 0, 4, 
+       2, 56, 54, 58, 
+/* GET   BOLT  */
+       0, 10, 80, 
+       26, 
+/* REMO  BOLT  */
+       0, 25, 80, 
+       26, 
+/* BREA  ANY   */
+       15, 48, 0, 
+       0, 23, 0, 1, 9, 4, 
+       10, 32, 59, 54, 
+/* PULL  KNOB  */
+       0, 35, 48, 
+       112, 
+/* PRES  KNOB  */
+       0, 36, 48, 
+       112, 
+/* PRES  ANY   */
+       1, 36, 0, 
+       2, 27, 
+/* TOUC  ANY   */
+       1, 27, 0, 
+       2, 27, 
+/* BREA  ANY   */
+       4, 48, 0, 
+       8, 4, 
+       26, 
+/* PULL  RED   */
+       14, 35, 26, 
+       2, 11, 0, 7, 9, 7, 
+       2, 58, 146, 
+/* REMO  ANY   */
+       0, 25, 0, 
+       117, 
+/* FIND  ANY   */
+       0, 83, 0, 
+       7, 
+/* INVE  ANY   */
+       0, 34, 0, 
+       66, 
+/* SAY   ANY   */
+       3, 56, 0, 
+       2, 116, 85, 27, 
+/* SAVE  GAME  */
+       0, 29, 45, 
+       71, 
+/* QUIT  ANY   */
+       0, 33, 0, 
+       63, 
+/* GET   INVE  */
+       0, 10, 44, 
+       66, 
+/* ON    ANY   */
+       0, 74, 0, 
+       108, 
+/* SCOR  ANY   */
+       0, 69, 0, 
+       27, 
+/* LOOK  CEIL  */
+       10, 44, 86, 
+       4, 22, 0, 1, 
+       2, 53, 76, 
+/* GET   SIGN  */
+       4, 10, 38, 
+       5, 64, 
+       26, 
+/* USE   ANY   */
+       1, 38, 0, 
+       108, 110, 
+/* WEAR  SHOE  */
+       14, 43, 9, 
+       3, 3, 0, 4, 0, 3, 
+       2, 74, 74, 
+/* LIST  ANY   */
+       0, 31, 0, 
+       27, 
+/* READ  SIGN  .*/
+       6, 47, 38, 
+       3, 64, 
+       47, 37, 20, 
+/* PULL  RED   */
+       4, 35, 26, 
+       2, 48, 
+       27, 
+/* GET   SIGN  */
+       9, 10, 38, 
+       2, 64, 0, 64, 
+       52, 2, 
+/* OPEN  WALL  */
+       0, 80, 52, 
+       26, 
+/* GO    SLID  */
+       9, 1, 24, 
+       2, 52, 2, 38, 
+       108, 6, 
+/* JUMP  ANY   */
+       0, 66, 0, 
+       2, 
+/* OPEN  DOOR  */
+       17, 80, 11, 
+       14, 70, 4, 2, 0, 70, 1, 47, 
+       2, 53, 
+/* CLOS  DOOR  */
+       9, 52, 11, 
+       2, 70, 0, 70, 
+       59, 2, 
+/* GO    DOOR  */
+       15, 1, 11, 
+       2, 70, 0, 17, 0, 4, 
+       2, 54, 76, 58, 
+/* WAVE  ANY   */
+       1, 26, 0, 
+       2, 27, 
+/* TURN  ANY   */
+       1, 51, 0, 
+       108, 110, 
+/* GO    PIPE  */
+       6, 1, 56, 
+       2, 33, 
+       102, 144, 108, 
+/* STAN  ANY   */
+       6, 85, 0, 
+       4, 11, 
+       26, 137, 126, 
+/* COMB  ANY   */
+       17, 62, 0, 
+       2, 27, 3, 28, 0, 59, 0, 52, 
+       72, 19, 
+/* GO    LADD  */
+       15, 1, 27, 
+       2, 14, 0, 16, 0, 4, 
+       54, 76, 46, 58, 
+/* KISS  LADY  */
+       5, 64, 85, 
+       4, 1, 
+       2, 22, 
+/* GO    HORS  */
+       10, 1, 36, 
+       2, 41, 0, 7, 
+       2, 54, 76, 
+/* LOOK  CEIL  */
+       4, 44, 86, 
+       4, 21, 
+       145, 
+/* LOOK  UP    */
+       4, 44, 5, 
+       4, 21, 
+       145, 
+/* LOOK  ANY   */
+       1, 44, 0, 
+       76, 51, 
+/* GO    HOLE  */
+       14, 1, 82, 
+       2, 42, 2, 60, 0, 34, 
+       54, 2, 76, 
+/* FIX   SHOE  */
+       4, 86, 9, 
+       3, 3, 
+       2, 
+/* AUTO  0     */
+/* AUTO  0     */
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *WALK */
+       215, 65, 76, 75,
+       /* *. */
+       174, 32, 32, 32,
+       /* *RUN */
+       210, 85, 78, 32,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *MOUN */
+       205, 79, 85, 78,
+       /* *CLIM */
+       195, 76, 73, 77,
+       /* *. */
+       174, 32, 32, 32,
+       /* *RIDE */
+       210, 73, 68, 69,
+       /* GET */
+       71, 69, 84, 32,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *CATC */
+       195, 65, 84, 67,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* GUM */
+       71, 85, 77, 32,
+       /* SHOO */
+       83, 72, 79, 79,
+       /* *FIRE */
+       198, 73, 82, 69,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *GIVE */
+       199, 73, 86, 69,
+       /* *PAY */
+       208, 65, 89, 32,
+       /* BLOW */
+       66, 76, 79, 87,
+       /* *MAKE */
+       205, 65, 75, 69,
+       /* REMO */
+       82, 69, 77, 79,
+       /* WAVE */
+       87, 65, 86, 69,
+       /* TOUC */
+       84, 79, 85, 67,
+       /* *FEEL */
+       198, 69, 69, 76,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* HELP */
+       72, 69, 76, 80,
+       /* LIST */
+       76, 73, 83, 84,
+       /* *HEAR */
+       200, 69, 65, 82,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* INVE */
+       73, 78, 86, 69,
+       /* PULL */
+       80, 85, 76, 76,
+       /* PRES */
+       80, 82, 69, 83,
+       /* *PUSH */
+       208, 85, 83, 72,
+       /* USE */
+       85, 83, 69, 32,
+       /* *WITH */
+       215, 73, 84, 72,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* *IGNI */
+       201, 71, 78, 73,
+       /* STIC */
+       83, 84, 73, 67,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *DESC */
+       196, 69, 83, 67,
+       /* READ */
+       82, 69, 65, 68,
+       /* BREA */
+       66, 82, 69, 65,
+       /* *HIT */
+       200, 73, 84, 32,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* TURN */
+       84, 85, 82, 78,
+       /* CLOS */
+       67, 76, 79, 83,
+       /* *SHUT */
+       211, 72, 85, 84,
+       /* EAT */
+       69, 65, 84, 32,
+       /* CHEW */
+       67, 72, 69, 87,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *YELL */
+       217, 69, 76, 76,
+       /* *SCRE */
+       211, 67, 82, 69,
+       /* *ASK */
+       193, 83, 75, 32,
+       /* *BUY */
+       194, 85, 89, 32,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* COMB */
+       67, 79, 77, 66,
+       /* CUT */
+       67, 85, 84, 32,
+       /* KISS */
+       75, 73, 83, 83,
+       /* *RAPE */
+       210, 65, 80, 69,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* *BOUN */
+       194, 79, 85, 78,
+       /* . */
+       46, 32, 32, 32,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* CHAS */
+       67, 72, 65, 83,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* *SLID */
+       211, 76, 73, 68,
+       /* *ROTA */
+       210, 79, 84, 65,
+       /* ON */
+       79, 78, 32, 32,
+       /* *TO */
+       212, 79, 32, 32,
+       /* CRAW */
+       67, 82, 65, 87,
+       /* *ROLL */
+       210, 79, 76, 76,
+       /* . */
+       46, 32, 32, 32,
+       /* DANC */
+       68, 65, 78, 67,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* *UNLO */
+       213, 78, 76, 79,
+       /* *UNTI */
+       213, 78, 84, 73,
+       /* FIND */
+       70, 73, 78, 68,
+       /* *LOCA */
+       204, 79, 67, 65,
+       /* STAN */
+       83, 84, 65, 78,
+       /* FIX */
+       70, 73, 88, 32,
+       /* *REPA */
+       210, 69, 80, 65,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORTH */
+       78, 79, 82, 84,
+       /* SOUTH */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* ROPE */
+       82, 79, 80, 69,
+       /* FLAS */
+       70, 76, 65, 83,
+       /* SHOE */
+       83, 72, 79, 69,
+       /* MIRR */
+       77, 73, 82, 82,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* SKEL */
+       83, 75, 69, 76,
+       /* POLE */
+       80, 79, 76, 69,
+       /* TUNN */
+       84, 85, 78, 78,
+       /* TRAM */
+       84, 82, 65, 77,
+       /* EXIT */
+       69, 88, 73, 84,
+       /* CHAR */
+       67, 72, 65, 82,
+       /* BACK */
+       66, 65, 67, 75,
+       /* GREE */
+       71, 82, 69, 69,
+       /* YELL */
+       89, 69, 76, 76,
+       /* BLUE */
+       66, 76, 85, 69,
+       /* FORT */
+       70, 79, 82, 84,
+       /* AROU */
+       65, 82, 79, 85,
+       /* SLID */
+       83, 76, 73, 68,
+       /* PLAN */
+       80, 76, 65, 78,
+       /* RED */
+       82, 69, 68, 32,
+       /* LADD */
+       76, 65, 68, 68,
+       /* MUSI */
+       77, 85, 83, 73,
+       /* TANK */
+       84, 65, 78, 75,
+       /* KEY */
+       75, 69, 89, 32,
+       /* MERM */
+       77, 69, 82, 77,
+       /* STAI */
+       83, 84, 65, 73,
+       /* MACH */
+       77, 65, 67, 72,
+       /* ROOM */
+       82, 79, 79, 77,
+       /* TICK */
+       84, 73, 67, 75,
+       /* HORS */
+       72, 79, 82, 83,
+       /* HEEL */
+       72, 69, 69, 76,
+       /* SIGN */
+       83, 73, 71, 78,
+       /* COMB */
+       67, 79, 77, 66,
+       /* WATC */
+       87, 65, 84, 67,
+       /* BILL */
+       66, 73, 76, 76,
+       /* DRAI */
+       68, 82, 65, 73,
+       /* SPEC */
+       83, 80, 69, 67,
+       /* INVE */
+       73, 78, 86, 69,
+       /* GAME */
+       71, 65, 77, 69,
+       /* HEMP */
+       72, 69, 77, 80,
+       /* GRAT */
+       71, 82, 65, 84,
+       /* KNOB */
+       75, 78, 79, 66,
+       /* *BUTT */
+       194, 85, 84, 84,
+       /* COUN */
+       67, 79, 85, 78,
+       /* WIND */
+       87, 73, 78, 68,
+       /* WALL */
+       87, 65, 76, 76,
+       /* BONE */
+       66, 79, 78, 69,
+       /* MATC */
+       77, 65, 84, 67,
+       /* HELP */
+       72, 69, 76, 80,
+       /* PIPE */
+       80, 73, 80, 69,
+       /* BRAN */
+       66, 82, 65, 78,
+       /* *STIC */
+       211, 84, 73, 67,
+       /* GUM */
+       71, 85, 77, 32,
+       /* DOLL */
+       68, 79, 76, 76,
+       /* *COIN */
+       195, 79, 73, 78,
+       /* GUN */
+       71, 85, 78, 32,
+       /* TREE */
+       84, 82, 69, 69,
+       /* SHEL */
+       83, 72, 69, 76,
+       /* HAIR */
+       72, 65, 73, 82,
+       /* LETT */
+       76, 69, 84, 84,
+       /* OFF */
+       79, 70, 70, 32,
+       /* FUN */
+       70, 85, 78, 32,
+       /* *HOUS */
+       200, 79, 85, 83,
+       /* *PARK */
+       208, 65, 82, 75,
+       /* BOUN */
+       66, 79, 85, 78,
+       /* BUBB */
+       66, 85, 66, 66,
+       /* CALL */
+       67, 65, 76, 76,
+       /* STEA */
+       83, 84, 69, 65,
+       /* MERR */
+       77, 69, 82, 82,
+       /* VALV */
+       86, 65, 76, 86,
+       /* HAND */
+       72, 65, 78, 68,
+       /* FUSE */
+       70, 85, 83, 69,
+       /* BARR */
+       66, 65, 82, 82,
+       /* BOLT */
+       66, 79, 76, 84,
+       /* WREN */
+       87, 82, 69, 78,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* *MAN */
+       205, 65, 78, 32,
+       /* *MANH */
+       205, 65, 78, 72,
+       /* LADY */
+       76, 65, 68, 89,
+       /* CEIL */
+       67, 69, 73, 76,
+       /* *CATW */
+       195, 65, 84, 87,
+       /* LOCK */
+       76, 79, 67, 75,
+       /* PIGE */
+       80, 73, 71, 69,
+       0,
+};
+const uint8_t automap[] = {
+       /* SHOE */
+       83, 72, 79, 69,
+       3,
+       /* FLAS */
+       70, 76, 65, 83,
+       9,
+       /* TRAM */
+       84, 82, 65, 77,
+       18,
+       /* WREN */
+       87, 82, 69, 78,
+       19,
+       /* TICK */
+       84, 73, 67, 75,
+       23,
+       /* HEEL */
+       72, 69, 69, 76,
+       24,
+       /* WATC */
+       87, 65, 84, 67,
+       25,
+       /* COMB */
+       67, 79, 77, 66,
+       28,
+       /* KEY */
+       75, 69, 89, 32,
+       30,
+       /* HAND */
+       72, 65, 78, 68,
+       35,
+       /* FUSE */
+       70, 85, 83, 69,
+       36,
+       /* LETT */
+       76, 69, 84, 84,
+       39,
+       /* BONE */
+       66, 79, 78, 69,
+       44,
+       /* SPEC */
+       83, 80, 69, 67,
+       46,
+       /* DOLL */
+       68, 79, 76, 76,
+       54,
+       /* BRAN */
+       66, 82, 65, 78,
+       55,
+       /* GUM */
+       71, 85, 77, 32,
+       56,
+       /* GUM */
+       71, 85, 77, 32,
+       57,
+       /* BRAN */
+       66, 82, 65, 78,
+       58,
+       /* SIGN */
+       83, 73, 71, 78,
+       64,
+       /* FLAS */
+       70, 76, 65, 83,
+       66,
+       /* PLAN */
+       80, 76, 65, 78,
+       67,
+       /* BILL */
+       66, 73, 76, 76,
+       68,
+       /* MATC */
+       77, 65, 84, 67,
+       69,
+       /* FUSE */
+       70, 85, 83, 69,
+       74,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv08.c b/Applications/games/adv08.c
new file mode 100644 (file)
index 0000000..cb57f9b
--- /dev/null
@@ -0,0 +1,3331 @@
+#define NUM_OBJ 100
+#define WORDSIZE 3
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 2;
+const uint8_t maxcar = 8;
+const uint8_t treasure = 15;
+const uint8_t treasures = 13;
+const uint8_t lastloc = 27;
+const uint8_t startloc = 3;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+100, 101, 115, 101, 114, 116, 0 };
+const uint8_t loctxt_2[] = {
+100, 101, 115, 101, 114, 116, 0 };
+const uint8_t loctxt_3[] = {
+100, 101, 115, 101, 114, 116, 0 };
+const uint8_t loctxt_4[] = {
+100, 101, 115, 101, 114, 116, 32, 110, 101, 120, 116, 32, 116, 111, 32, 97, 32, 112, 121, 114, 97, 109, 105, 100, 0 };
+const uint8_t loctxt_5[] = {
+104, 111, 108, 101, 0 };
+const uint8_t loctxt_6[] = {
+114, 111, 99, 107, 121, 32, 101, 110, 116, 114, 97, 110, 99, 101, 45, 119, 97, 121, 0 };
+const uint8_t loctxt_7[] = {
+115, 97, 114, 99, 111, 112, 104, 97, 103, 117, 115, 0 };
+const uint8_t loctxt_8[] = {
+98, 117, 114, 105, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_9[] = {
+108, 111, 110, 103, 44, 32, 110, 97, 114, 114, 111, 119, 32, 112, 97, 115, 115, 97, 103, 101, 119, 97, 121, 0 };
+const uint8_t loctxt_10[] = {
+104, 105, 100, 100, 101, 110, 32, 97, 108, 99, 111, 118, 101, 0 };
+const uint8_t loctxt_11[] = {
+116, 97, 108, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_12[] = {
+100, 105, 110, 105, 110, 103, 32, 104, 97, 108, 108, 0 };
+const uint8_t loctxt_13[] = {
+104, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_14[] = {
+114, 111, 117, 110, 100, 32, 97, 108, 116, 97, 114, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_15[] = {
+104, 105, 101, 114, 111, 103, 108, 121, 112, 104, 105, 99, 115, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_16[] = {
+115, 105, 116, 116, 105, 110, 103, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_17[] = {
+115, 108, 111, 112, 105, 110, 103, 32, 99, 114, 97, 119, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_18[] = {
+82, 101, 118, 111, 108, 118, 105, 110, 103, 32, 99, 97, 118, 101, 114, 110, 0 };
+const uint8_t loctxt_19[] = {
+112, 114, 105, 115, 111, 110, 32, 99, 101, 108, 108, 0 };
+const uint8_t loctxt_20[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 110, 97, 114, 114, 111, 119, 32, 108, 101, 100, 103, 101, 0 };
+const uint8_t loctxt_21[] = {
+116, 104, 114, 111, 110, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_22[] = {
+116, 114, 101, 97, 115, 117, 114, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_23[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 111, 112, 32, 111, 102, 32, 97, 32, 112, 121, 114, 97, 109, 105, 100, 0 };
+const uint8_t loctxt_24[] = {
+80, 111, 111, 108, 32, 111, 102, 32, 119, 97, 116, 101, 114, 0 };
+const uint8_t loctxt_25[] = {
+46, 0 };
+const uint8_t loctxt_26[] = {
+100, 114, 101, 115, 115, 105, 110, 103, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_27[] = {
+108, 111, 116, 32, 111, 102, 32, 84, 82, 79, 85, 66, 76, 69, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 4, 0, 2, 0, 0 } }, 
+               { loctxt_2,  { 0, 3, 1, 0, 0, 0 } }, 
+               { loctxt_3,  { 2, 0, 4, 0, 0, 0 } }, 
+               { loctxt_4,  { 1, 0, 0, 3, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 0, 0, 4, 0 } }, 
+               { loctxt_6,  { 12, 16, 0, 0, 0, 0 } }, 
+               { loctxt_7,  { 0, 0, 0, 6, 0, 8 } }, 
+               { loctxt_8,  { 9, 11, 0, 0, 7, 0 } }, 
+               { loctxt_9,  { 0, 8, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 0, 8, 0, 0 } }, 
+               { loctxt_11,  { 8, 0, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 6, 13, 0, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 12, 0, 0 } }, 
+               { loctxt_14,  { 13, 17, 15, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 0, 14, 0, 0 } }, 
+               { loctxt_16,  { 6, 0, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 14, 0, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 19, 20, 0, 0, 0, 11 } }, 
+               { loctxt_19,  { 0, 20, 0, 18, 0, 0 } }, 
+               { loctxt_20,  { 0, 19, 0, 18, 0, 0 } }, 
+               { loctxt_21,  { 0, 0, 0, 0, 0, 20 } }, 
+               { loctxt_22,  { 0, 0, 0, 0, 0, 21 } }, 
+               { loctxt_23,  { 0, 0, 0, 22, 0, 0 } }, 
+               { loctxt_24,  { 0, 0, 3, 0, 0, 0 } }, 
+               { loctxt_25,  { 9, 9, 26, 9, 9, 9 } }, 
+               { loctxt_26,  { 0, 0, 0, 25, 0, 0 } }, 
+               { loctxt_27,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       4,
+       0,
+       15,
+       255,
+       0,
+       0,
+       5,
+       255,
+       0,
+       3,
+       0,
+       0,
+       0,
+       3,
+       4,
+       0,
+       0,
+       24,
+       0,
+       6,
+       6,
+       0,
+       7,
+       0,
+       6,
+       0,
+       0,
+       6,
+       8,
+       8,
+       8,
+       0,
+       0,
+       26,
+       0,
+       0,
+       0,
+       9,
+       0,
+       0,
+       16,
+       16,
+       0,
+       0,
+       9,
+       0,
+       10,
+       10,
+       10,
+       0,
+       0,
+       13,
+       11,
+       11,
+       11,
+       16,
+       0,
+       0,
+       0,
+       12,
+       0,
+       0,
+       13,
+       0,
+       13,
+       14,
+       23,
+       0,
+       0,
+       0,
+       17,
+       0,
+       0,
+       0,
+       0,
+       19,
+       19,
+       19,
+       0,
+       0,
+       0,
+       0,
+       20,
+       20,
+       0,
+       21,
+       21,
+       21,
+       21,
+       0,
+       20,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       22,
+       22,
+};
+
+
+const uint8_t objtxt_0[] = {
+0 };
+const uint8_t objtxt_1[] = {
+83, 116, 111, 110, 101, 0 };
+const uint8_t objtxt_2[] = {
+68, 111, 111, 114, 32, 119, 105, 116, 104, 32, 108, 97, 114, 103, 101, 32, 107, 101, 121, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_3[] = {
+68, 114, 105, 101, 100, 32, 67, 97, 109, 101, 108, 32, 74, 101, 114, 107, 121, 0 };
+const uint8_t objtxt_4[] = {
+69, 109, 112, 116, 121, 32, 99, 97, 110, 116, 101, 101, 110, 0 };
+const uint8_t objtxt_5[] = {
+70, 117, 108, 108, 32, 99, 97, 110, 116, 101, 101, 110, 0 };
+const uint8_t objtxt_6[] = {
+72, 111, 108, 101, 0 };
+const uint8_t objtxt_7[] = {
+84, 105, 110, 121, 32, 108, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_8[] = {
+85, 110, 108, 105, 116, 32, 102, 108, 97, 115, 104, 108, 105, 116, 101, 0 };
+const uint8_t objtxt_9[] = {
+76, 105, 116, 32, 102, 108, 97, 115, 104, 108, 105, 116, 101, 0 };
+const uint8_t objtxt_10[] = {
+87, 111, 111, 100, 101, 110, 32, 112, 111, 108, 101, 32, 115, 116, 105, 99, 107, 105, 110, 103, 32, 102, 114, 111, 109, 32, 115, 97, 110, 100, 0 };
+const uint8_t objtxt_11[] = {
+83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_12[] = {
+84, 105, 110, 121, 32, 107, 101, 121, 0 };
+const uint8_t objtxt_13[] = {
+76, 117, 109, 112, 32, 111, 102, 32, 99, 111, 97, 108, 0 };
+const uint8_t objtxt_14[] = {
+80, 111, 111, 108, 32, 111, 102, 32, 108, 105, 113, 117, 105, 100, 0 };
+const uint8_t objtxt_15[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_16[] = {
+68, 111, 111, 114, 32, 119, 105, 116, 104, 32, 108, 97, 114, 103, 101, 32, 107, 101, 121, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_17[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_18[] = {
+76, 97, 114, 103, 101, 32, 107, 101, 121, 0 };
+const uint8_t objtxt_19[] = {
+73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 32, 97, 110, 32, 105, 114, 111, 110, 32, 103, 108, 111, 118, 101, 0 };
+const uint8_t objtxt_20[] = {
+67, 108, 111, 115, 101, 100, 32, 115, 97, 114, 99, 111, 112, 104, 97, 103, 117, 115, 0 };
+const uint8_t objtxt_21[] = {
+77, 111, 117, 108, 100, 121, 32, 98, 97, 110, 100, 97, 103, 101, 115, 0 };
+const uint8_t objtxt_22[] = {
+79, 112, 101, 110, 32, 115, 97, 114, 99, 111, 112, 104, 97, 103, 117, 115, 0 };
+const uint8_t objtxt_23[] = {
+83, 116, 97, 105, 114, 115, 0 };
+const uint8_t objtxt_24[] = {
+66, 111, 110, 101, 115, 0 };
+const uint8_t objtxt_25[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_26[] = {
+84, 105, 110, 121, 32, 111, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_27[] = {
+83, 109, 97, 108, 108, 32, 78, 111, 109, 97, 100, 0 };
+const uint8_t objtxt_28[] = {
+80, 105, 115, 116, 111, 108, 0 };
+const uint8_t objtxt_29[] = {
+70, 101, 97, 114, 115, 111, 109, 101, 32, 109, 117, 109, 109, 121, 0 };
+const uint8_t objtxt_30[] = {
+42, 32, 65, 78, 84, 73, 81, 85, 69, 32, 84, 65, 80, 69, 83, 84, 82, 89, 32, 42, 0 };
+const uint8_t objtxt_31[] = {
+66, 117, 114, 110, 105, 110, 103, 32, 116, 97, 110, 110, 97, 32, 108, 101, 97, 118, 101, 115, 0 };
+const uint8_t objtxt_32[] = {
+69, 110, 114, 97, 103, 101, 100, 32, 109, 117, 109, 109, 121, 0 };
+const uint8_t objtxt_33[] = {
+83, 108, 101, 101, 112, 105, 110, 103, 32, 109, 117, 109, 109, 121, 0 };
+const uint8_t objtxt_34[] = {
+42, 32, 71, 79, 76, 68, 32, 83, 67, 65, 82, 65, 66, 32, 42, 0 };
+const uint8_t objtxt_35[] = {
+46, 0 };
+const uint8_t objtxt_36[] = {
+87, 101, 116, 32, 116, 97, 110, 110, 97, 32, 108, 101, 97, 118, 101, 115, 0 };
+const uint8_t objtxt_37[] = {
+69, 110, 116, 114, 97, 110, 99, 101, 32, 116, 111, 32, 97, 110, 32, 97, 108, 99, 111, 118, 101, 0 };
+const uint8_t objtxt_38[] = {
+66, 114, 105, 99, 107, 101, 100, 32, 117, 112, 32, 100, 111, 111, 114, 119, 97, 121, 0 };
+const uint8_t objtxt_39[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_40[] = {
+42, 32, 71, 79, 76, 68, 32, 67, 79, 73, 78, 32, 42, 0 };
+const uint8_t objtxt_41[] = {
+65, 115, 104, 101, 115, 0 };
+const uint8_t objtxt_42[] = {
+66, 97, 115, 107, 101, 116, 0 };
+const uint8_t objtxt_43[] = {
+80, 97, 115, 115, 97, 103, 101, 119, 97, 121, 32, 98, 101, 104, 105, 110, 100, 32, 102, 105, 114, 101, 112, 108, 97, 99, 101, 0 };
+const uint8_t objtxt_44[] = {
+79, 112, 101, 110, 32, 116, 114, 101, 97, 115, 117, 114, 101, 32, 99, 111, 102, 102, 101, 114, 0 };
+const uint8_t objtxt_45[] = {
+82, 111, 112, 101, 0 };
+const uint8_t objtxt_46[] = {
+32, 0 };
+const uint8_t objtxt_47[] = {
+67, 104, 111, 112, 112, 105, 110, 103, 32, 98, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_48[] = {
+83, 107, 117, 108, 108, 0 };
+const uint8_t objtxt_49[] = {
+66, 111, 120, 0 };
+const uint8_t objtxt_50[] = {
+42, 32, 71, 79, 76, 68, 32, 84, 69, 69, 84, 72, 32, 42, 0 };
+const uint8_t objtxt_51[] = {
+73, 114, 111, 110, 32, 103, 108, 111, 118, 101, 0 };
+const uint8_t objtxt_52[] = {
+65, 114, 99, 104, 119, 97, 121, 0 };
+const uint8_t objtxt_53[] = {
+77, 101, 116, 97, 108, 32, 98, 97, 114, 32, 112, 114, 111, 116, 114, 117, 100, 105, 110, 103, 32, 102, 114, 111, 109, 32, 99, 101, 105, 108, 105, 110, 103, 0 };
+const uint8_t objtxt_54[] = {
+68, 101, 99, 97, 112, 105, 116, 97, 116, 101, 100, 32, 115, 107, 101, 108, 101, 116, 111, 110, 0 };
+const uint8_t objtxt_55[] = {
+83, 97, 119, 0 };
+const uint8_t objtxt_56[] = {
+70, 105, 114, 101, 112, 108, 97, 99, 101, 0 };
+const uint8_t objtxt_57[] = {
+32, 0 };
+const uint8_t objtxt_58[] = {
+76, 97, 100, 100, 101, 114, 0 };
+const uint8_t objtxt_59[] = {
+71, 108, 111, 119, 105, 110, 103, 32, 115, 107, 101, 108, 101, 116, 111, 110, 0 };
+const uint8_t objtxt_60[] = {
+84, 97, 98, 108, 101, 0 };
+const uint8_t objtxt_61[] = {
+32, 32, 0 };
+const uint8_t objtxt_62[] = {
+32, 0 };
+const uint8_t objtxt_63[] = {
+71, 105, 97, 110, 116, 32, 79, 121, 115, 116, 101, 114, 0 };
+const uint8_t objtxt_64[] = {
+42, 32, 66, 76, 65, 67, 75, 32, 80, 69, 65, 82, 76, 32, 42, 0 };
+const uint8_t objtxt_65[] = {
+70, 108, 117, 116, 101, 0 };
+const uint8_t objtxt_66[] = {
+66, 108, 111, 111, 100, 45, 115, 116, 97, 105, 110, 101, 100, 32, 97, 108, 116, 97, 114, 0 };
+const uint8_t objtxt_67[] = {
+42, 32, 80, 76, 65, 84, 73, 78, 85, 77, 32, 66, 65, 82, 32, 42, 0 };
+const uint8_t objtxt_68[] = {
+42, 32, 68, 73, 65, 77, 79, 78, 68, 32, 78, 69, 67, 75, 76, 65, 67, 69, 32, 42, 0 };
+const uint8_t objtxt_69[] = {
+83, 97, 116, 105, 115, 102, 105, 101, 100, 32, 114, 97, 116, 115, 0 };
+const uint8_t objtxt_70[] = {
+32, 0 };
+const uint8_t objtxt_71[] = {
+83, 116, 97, 114, 118, 105, 110, 103, 32, 114, 97, 116, 115, 0 };
+const uint8_t objtxt_72[] = {
+32, 0 };
+const uint8_t objtxt_73[] = {
+72, 105, 115, 115, 105, 110, 103, 32, 99, 111, 98, 114, 97, 0 };
+const uint8_t objtxt_74[] = {
+42, 32, 71, 79, 76, 68, 32, 78, 69, 67, 75, 76, 65, 67, 69, 32, 42, 0 };
+const uint8_t objtxt_75[] = {
+80, 97, 115, 115, 97, 103, 101, 119, 97, 121, 0 };
+const uint8_t objtxt_76[] = {
+68, 101, 97, 100, 32, 101, 120, 112, 108, 111, 114, 101, 114, 32, 99, 104, 97, 105, 110, 101, 100, 32, 116, 111, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_77[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 82, 117, 98, 98, 105, 115, 104, 0 };
+const uint8_t objtxt_78[] = {
+67, 108, 111, 115, 101, 100, 32, 112, 111, 114, 116, 97, 108, 0 };
+const uint8_t objtxt_79[] = {
+79, 112, 101, 110, 32, 112, 111, 114, 116, 97, 108, 0 };
+const uint8_t objtxt_80[] = {
+80, 117, 114, 112, 108, 101, 32, 87, 111, 114, 109, 0 };
+const uint8_t objtxt_81[] = {
+42, 32, 71, 79, 76, 68, 32, 80, 73, 78, 32, 42, 0 };
+const uint8_t objtxt_82[] = {
+42, 32, 74, 65, 68, 69, 32, 67, 65, 82, 86, 73, 78, 71, 32, 42, 0 };
+const uint8_t objtxt_83[] = {
+42, 32, 83, 65, 80, 80, 72, 73, 82, 69, 32, 42, 0 };
+const uint8_t objtxt_84[] = {
+72, 111, 108, 101, 32, 105, 110, 32, 116, 104, 101, 32, 99, 101, 105, 108, 105, 110, 103, 0 };
+const uint8_t objtxt_85[] = {
+82, 111, 112, 101, 32, 104, 97, 110, 103, 105, 110, 103, 32, 102, 114, 111, 109, 32, 99, 101, 105, 108, 105, 110, 103, 0 };
+const uint8_t objtxt_86[] = {
+73, 114, 111, 110, 32, 115, 116, 97, 116, 117, 101, 32, 111, 102, 32, 80, 104, 97, 114, 111, 97, 104, 32, 115, 101, 97, 116, 101, 100, 32, 111, 110, 32, 116, 104, 114, 111, 110, 101, 0 };
+const uint8_t objtxt_87[] = {
+67, 104, 97, 105, 110, 32, 104, 97, 110, 103, 105, 110, 103, 32, 102, 114, 111, 109, 32, 99, 101, 105, 108, 105, 110, 103, 0 };
+const uint8_t objtxt_88[] = {
+67, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_89[] = {
+87, 97, 108, 108, 32, 77, 117, 114, 97, 108, 0 };
+const uint8_t objtxt_90[] = {
+32, 42, 32, 82, 85, 66, 89, 32, 42, 0 };
+const uint8_t objtxt_91[] = {
+80, 111, 111, 108, 32, 111, 102, 32, 108, 105, 113, 117, 105, 100, 32, 40, 102, 97, 114, 32, 98, 101, 108, 111, 119, 32, 108, 101, 100, 103, 101, 41, 0 };
+const uint8_t objtxt_92[] = {
+83, 112, 105, 114, 97, 108, 32, 83, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t objtxt_93[] = {
+42, 32, 80, 76, 65, 84, 73, 78, 85, 77, 32, 67, 82, 79, 87, 78, 32, 42, 0 };
+const uint8_t objtxt_94[] = {
+83, 116, 97, 110, 100, 105, 110, 103, 32, 105, 114, 111, 110, 32, 115, 116, 97, 116, 117, 101, 0 };
+const uint8_t objtxt_95[] = {
+73, 114, 111, 110, 32, 83, 116, 97, 116, 117, 101, 44, 32, 115, 108, 111, 119, 108, 121, 32, 97, 100, 118, 97, 110, 99, 105, 110, 103, 46, 32, 46, 32, 46, 0 };
+const uint8_t objtxt_96[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 77, 101, 108, 116, 101, 100, 32, 105, 114, 111, 110, 0 };
+const uint8_t objtxt_97[] = {
+42, 32, 69, 77, 69, 82, 65, 76, 68, 32, 66, 82, 65, 67, 69, 76, 69, 84, 32, 42, 0 };
+const uint8_t objtxt_98[] = {
+79, 112, 101, 110, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_99[] = {
+84, 114, 101, 97, 115, 117, 114, 101, 32, 99, 111, 102, 102, 101, 114, 0 };
+const uint8_t objtxt_100[] = {
+66, 97, 114, 114, 101, 100, 32, 119, 105, 110, 100, 111, 119, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+       objtxt_67,
+       objtxt_68,
+       objtxt_69,
+       objtxt_70,
+       objtxt_71,
+       objtxt_72,
+       objtxt_73,
+       objtxt_74,
+       objtxt_75,
+       objtxt_76,
+       objtxt_77,
+       objtxt_78,
+       objtxt_79,
+       objtxt_80,
+       objtxt_81,
+       objtxt_82,
+       objtxt_83,
+       objtxt_84,
+       objtxt_85,
+       objtxt_86,
+       objtxt_87,
+       objtxt_88,
+       objtxt_89,
+       objtxt_90,
+       objtxt_91,
+       objtxt_92,
+       objtxt_93,
+       objtxt_94,
+       objtxt_95,
+       objtxt_96,
+       objtxt_97,
+       objtxt_98,
+       objtxt_99,
+       objtxt_100,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+73, 32, 115, 101, 101, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_2[] = {
+66, 97, 114, 101, 45, 104, 97, 110, 100, 101, 100, 63, 0 };
+const uint8_t msgtxt_3[] = {
+46, 0 };
+const uint8_t msgtxt_4[] = {
+73, 32, 99, 97, 110, 39, 116, 46, 0 };
+const uint8_t msgtxt_5[] = {
+78, 111, 32, 99, 111, 110, 116, 97, 105, 110, 101, 114, 46, 0 };
+const uint8_t msgtxt_6[] = {
+67, 97, 110, 116, 101, 101, 110, 32, 105, 115, 32, 102, 117, 108, 108, 46, 0 };
+const uint8_t msgtxt_7[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 58, 32, 56, 32, 34, 80, 89, 82, 65, 77, 73, 68, 32, 79, 70, 32, 68, 79, 79, 77, 34, 0 };
+const uint8_t msgtxt_8[] = {
+66, 121, 32, 65, 108, 118, 105, 110, 32, 70, 105, 108, 101, 115, 32, 38, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 32, 68, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 32, 82, 97, 121, 32, 72, 97, 114, 115, 104, 97, 119, 33, 0 };
+const uint8_t msgtxt_9[] = {
+83, 105, 103, 110, 58, 32, 72, 101, 32, 119, 104, 111, 32, 100, 101, 102, 105, 108, 101, 115, 32, 116, 104, 101, 32, 116, 111, 109, 98, 115, 32, 111, 102, 32, 69, 103, 121, 112, 116, 32, 115, 104, 97, 108, 108, 32, 115, 117, 114, 101, 108, 121, 32, 112, 101, 114, 105, 115, 104, 33, 0 };
+const uint8_t msgtxt_10[] = {
+84, 104, 101, 32, 115, 111, 117, 110, 100, 32, 111, 102, 32, 109, 97, 99, 104, 105, 110, 101, 114, 121, 46, 0 };
+const uint8_t msgtxt_11[] = {
+73, 32, 104, 101, 97, 114, 32, 115, 116, 114, 97, 110, 103, 101, 32, 110, 111, 105, 115, 101, 115, 33, 0 };
+const uint8_t msgtxt_12[] = {
+65, 82, 82, 71, 72, 33, 32, 80, 111, 105, 115, 111, 110, 32, 110, 101, 101, 100, 108, 101, 32, 105, 110, 32, 116, 104, 101, 32, 108, 111, 99, 107, 46, 0 };
+const uint8_t msgtxt_13[] = {
+84, 104, 101, 32, 114, 105, 103, 104, 116, 32, 107, 101, 121, 32, 99, 111, 117, 108, 100, 32, 104, 101, 108, 112, 32, 40, 109, 97, 121, 98, 101, 41, 46, 0 };
+const uint8_t msgtxt_14[] = {
+76, 97, 114, 103, 101, 32, 115, 116, 111, 110, 101, 32, 102, 97, 108, 108, 115, 32, 111, 110, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_15[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 119, 111, 110, 39, 116, 32, 102, 105, 116, 46, 0 };
+const uint8_t msgtxt_16[] = {
+78, 111, 105, 115, 101, 32, 115, 99, 97, 114, 101, 115, 32, 116, 104, 101, 109, 32, 111, 102, 102, 0 };
+const uint8_t msgtxt_17[] = {
+84, 104, 97, 110, 107, 115, 46, 0 };
+const uint8_t msgtxt_18[] = {
+67, 114, 97, 115, 104, 33, 33, 33, 0 };
+const uint8_t msgtxt_19[] = {
+73, 32, 104, 101, 97, 114, 32, 97, 32, 104, 111, 108, 108, 111, 119, 32, 108, 97, 117, 103, 104, 46, 32, 46, 32, 46, 0 };
+const uint8_t msgtxt_20[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 115, 101, 101, 32, 97, 110, 121, 32, 114, 101, 97, 115, 111, 110, 32, 116, 111, 32, 116, 104, 114, 111, 119, 32, 97, 32, 0 };
+const uint8_t msgtxt_21[] = {
+65, 32, 115, 109, 97, 108, 108, 32, 100, 101, 115, 101, 114, 116, 32, 110, 111, 109, 97, 100, 32, 97, 112, 112, 101, 97, 114, 115, 46, 46, 46, 0 };
+const uint8_t msgtxt_22[] = {
+84, 104, 101, 32, 110, 111, 109, 97, 100, 32, 115, 116, 117, 99, 107, 32, 111, 117, 116, 32, 104, 105, 115, 32, 116, 111, 110, 103, 117, 101, 32, 97, 116, 32, 109, 101, 46, 0 };
+const uint8_t msgtxt_23[] = {
+87, 104, 97, 116, 33, 32, 84, 104, 101, 32, 110, 111, 109, 97, 100, 32, 106, 117, 109, 112, 101, 100, 32, 109, 101, 32, 119, 104, 105, 108, 101, 32, 109, 121, 32, 98, 97, 99, 107, 32, 119, 97, 115, 32, 116, 117, 114, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_24[] = {
+78, 111, 109, 97, 100, 32, 118, 97, 110, 105, 115, 104, 101, 115, 32, 105, 110, 32, 97, 32, 112, 117, 102, 102, 32, 111, 102, 32, 121, 101, 108, 108, 111, 119, 32, 115, 109, 111, 107, 101, 46, 0 };
+const uint8_t msgtxt_25[] = {
+83, 111, 114, 114, 121, 44, 32, 119, 111, 110, 39, 116, 32, 119, 111, 114, 107, 46, 0 };
+const uint8_t msgtxt_26[] = {
+80, 105, 115, 116, 111, 108, 32, 104, 97, 115, 0 };
+const uint8_t msgtxt_27[] = {
+98, 117, 108, 108, 101, 116, 115, 0 };
+const uint8_t msgtxt_28[] = {
+78, 111, 32, 98, 117, 108, 108, 101, 116, 115, 46, 0 };
+const uint8_t msgtxt_29[] = {
+71, 111, 116, 32, 104, 105, 109, 33, 33, 0 };
+const uint8_t msgtxt_30[] = {
+84, 111, 111, 32, 104, 111, 116, 46, 0 };
+const uint8_t msgtxt_31[] = {
+77, 117, 109, 109, 121, 32, 109, 111, 118, 101, 115, 32, 116, 111, 119, 97, 114, 100, 32, 109, 101, 46, 0 };
+const uint8_t msgtxt_32[] = {
+77, 117, 109, 109, 121, 32, 104, 97, 115, 32, 109, 101, 32, 98, 121, 32, 116, 104, 101, 32, 116, 104, 114, 111, 97, 116, 33, 0 };
+const uint8_t msgtxt_33[] = {
+77, 117, 109, 109, 121, 0 };
+const uint8_t msgtxt_34[] = {
+119, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 0 };
+const uint8_t msgtxt_35[] = {
+89, 111, 117, 32, 98, 101, 32, 119, 101, 105, 114, 100, 46, 32, 67, 117, 116, 32, 116, 104, 97, 116, 32, 111, 117, 116, 46, 0 };
+const uint8_t msgtxt_36[] = {
+68, 111, 101, 115, 110, 39, 116, 32, 98, 111, 116, 104, 101, 114, 32, 104, 105, 109, 46, 0 };
+const uint8_t msgtxt_37[] = {
+67, 111, 98, 114, 97, 32, 99, 114, 97, 119, 108, 115, 32, 111, 117, 116, 44, 32, 112, 114, 101, 115, 115, 101, 115, 32, 97, 32, 108, 111, 111, 115, 101, 32, 98, 114, 105, 99, 107, 32, 97, 110, 100, 32, 116, 104, 101, 110, 32, 100, 105, 115, 97, 112, 112, 101, 97, 114, 115, 32, 105, 110, 116, 111, 97, 32, 112, 97, 115, 115, 97, 103, 101, 32, 119, 104, 105, 99, 104, 32, 97, 112, 112, 101, 97, 114, 101, 100, 46, 0 };
+const uint8_t msgtxt_38[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 102, 97, 108, 108, 115, 32, 111, 117, 116, 46, 0 };
+const uint8_t msgtxt_39[] = {
+46, 0 };
+const uint8_t msgtxt_40[] = {
+46, 0 };
+const uint8_t msgtxt_41[] = {
+80, 117, 114, 112, 108, 101, 32, 119, 111, 114, 109, 32, 100, 101, 118, 111, 117, 114, 115, 32, 109, 101, 46, 0 };
+const uint8_t msgtxt_42[] = {
+67, 104, 97, 105, 110, 32, 116, 111, 111, 32, 116, 111, 117, 103, 104, 46, 0 };
+const uint8_t msgtxt_43[] = {
+73, 116, 115, 32, 98, 108, 97, 99, 107, 44, 32, 100, 105, 114, 116, 121, 32, 38, 32, 100, 117, 115, 116, 121, 0 };
+const uint8_t msgtxt_44[] = {
+84, 104, 97, 116, 32, 102, 101, 101, 108, 115, 32, 103, 111, 111, 100, 46, 0 };
+const uint8_t msgtxt_45[] = {
+82, 97, 116, 115, 0 };
+const uint8_t msgtxt_46[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 46, 32, 46, 32, 46, 32, 78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 46, 0 };
+const uint8_t msgtxt_47[] = {
+73, 116, 115, 32, 108, 111, 99, 107, 101, 100, 46, 0 };
+const uint8_t msgtxt_48[] = {
+83, 107, 101, 108, 101, 116, 111, 110, 32, 112, 108, 97, 99, 101, 115, 32, 115, 107, 117, 108, 108, 32, 111, 110, 32, 104, 105, 115, 32, 115, 104, 111, 117, 108, 100, 101, 114, 115, 44, 32, 103, 114, 97, 115, 112, 115, 0 };
+const uint8_t msgtxt_49[] = {
+109, 101, 116, 97, 108, 32, 98, 97, 114, 44, 32, 112, 117, 108, 108, 115, 32, 100, 111, 119, 110, 32, 108, 97, 100, 100, 101, 114, 0 };
+const uint8_t msgtxt_50[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 114, 101, 97, 99, 104, 32, 105, 116, 46, 0 };
+const uint8_t msgtxt_51[] = {
+73, 39, 109, 32, 110, 111, 116, 32, 97, 110, 32, 97, 114, 115, 111, 110, 105, 115, 116, 46, 0 };
+const uint8_t msgtxt_52[] = {
+73, 116, 32, 115, 97, 121, 115, 58, 32, 34, 76, 69, 65, 86, 69, 32, 42, 84, 82, 69, 65, 83, 85, 82, 69, 83, 42, 32, 72, 69, 82, 69, 33, 34, 0 };
+const uint8_t msgtxt_53[] = {
+79, 121, 115, 116, 101, 114, 32, 109, 97, 107, 101, 115, 32, 97, 32, 115, 108, 111, 98, 98, 101, 114, 105, 110, 103, 32, 110, 111, 105, 115, 101, 0 };
+const uint8_t msgtxt_54[] = {
+79, 121, 115, 116, 101, 114, 32, 119, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 0 };
+const uint8_t msgtxt_55[] = {
+73, 116, 32, 97, 116, 116, 97, 99, 107, 115, 33, 0 };
+const uint8_t msgtxt_56[] = {
+73, 32, 106, 117, 115, 116, 32, 99, 97, 117, 103, 104, 116, 32, 100, 101, 110, 103, 117, 101, 32, 102, 101, 118, 101, 114, 46, 32, 86, 101, 114, 121, 32, 98, 97, 100, 46, 0 };
+const uint8_t msgtxt_57[] = {
+67, 111, 110, 102, 117, 115, 105, 110, 103, 46, 32, 80, 97, 114, 116, 32, 97, 112, 112, 101, 97, 114, 115, 32, 109, 105, 115, 115, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_58[] = {
+73, 39, 109, 32, 116, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_59[] = {
+80, 111, 117, 114, 32, 119, 97, 116, 101, 114, 63, 0 };
+const uint8_t msgtxt_60[] = {
+73, 116, 39, 115, 32, 115, 116, 117, 99, 107, 46, 0 };
+const uint8_t msgtxt_61[] = {
+46, 0 };
+const uint8_t msgtxt_62[] = {
+67, 111, 98, 114, 97, 0 };
+const uint8_t msgtxt_63[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 109, 97, 114, 107, 105, 110, 103, 115, 32, 97, 114, 101, 32, 112, 114, 101, 115, 101, 110, 116, 46, 0 };
+const uint8_t msgtxt_64[] = {
+97, 116, 116, 97, 99, 107, 115, 33, 0 };
+const uint8_t msgtxt_65[] = {
+77, 105, 115, 115, 101, 100, 46, 46, 46, 0 };
+const uint8_t msgtxt_66[] = {
+76, 105, 113, 117, 105, 100, 32, 105, 115, 32, 97, 99, 105, 100, 46, 0 };
+const uint8_t msgtxt_67[] = {
+67, 97, 110, 116, 101, 101, 110, 32, 100, 105, 115, 115, 111, 108, 118, 101, 115, 46, 0 };
+const uint8_t msgtxt_68[] = {
+73, 114, 111, 110, 32, 83, 116, 97, 116, 117, 101, 0 };
+const uint8_t msgtxt_69[] = {
+77, 117, 114, 97, 108, 58, 32, 83, 101, 101, 107, 32, 121, 101, 32, 119, 101, 108, 108, 32, 116, 104, 101, 32, 72, 69, 65, 82, 84, 32, 111, 102, 32, 73, 114, 111, 110, 46, 0 };
+const uint8_t msgtxt_70[] = {
+73, 114, 111, 110, 32, 83, 116, 97, 116, 117, 101, 32, 116, 101, 97, 114, 115, 32, 109, 101, 32, 97, 112, 97, 114, 116, 33, 0 };
+const uint8_t msgtxt_71[] = {
+82, 117, 98, 121, 32, 102, 97, 108, 108, 115, 32, 105, 110, 116, 111, 32, 112, 111, 111, 108, 32, 111, 102, 32, 97, 99, 105, 100, 44, 32, 98, 117, 114, 110, 115, 32, 117, 112, 46, 0 };
+const uint8_t msgtxt_72[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 46, 0 };
+const uint8_t msgtxt_73[] = {
+65, 32, 116, 105, 110, 121, 32, 118, 111, 105, 99, 101, 32, 115, 97, 121, 115, 58, 32, 34, 83, 69, 65, 82, 67, 72, 32, 65, 78, 68, 32, 89, 69, 32, 83, 72, 65, 76, 76, 32, 70, 73, 78, 68, 33, 34, 0 };
+const uint8_t msgtxt_74[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 108, 105, 102, 116, 32, 105, 116, 46, 32, 84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 98, 105, 103, 32, 111, 121, 115, 116, 101, 114, 0 };
+const uint8_t msgtxt_75[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 115, 101, 101, 32, 105, 116, 0 };
+const uint8_t msgtxt_76[] = {
+78, 111, 109, 97, 100, 58, 32, 34, 76, 111, 111, 107, 32, 117, 112, 32, 100, 101, 99, 97, 112, 105, 116, 97, 116, 101, 100, 33, 34, 0 };
+const uint8_t msgtxt_77[] = {
+78, 111, 109, 97, 100, 58, 32, 34, 82, 85, 78, 32, 89, 79, 85, 32, 70, 79, 79, 76, 33, 34, 0 };
+const uint8_t msgtxt_78[] = {
+78, 111, 109, 97, 100, 58, 32, 34, 79, 121, 115, 116, 101, 114, 32, 116, 104, 105, 114, 115, 116, 121, 63, 34, 0 };
+const uint8_t msgtxt_79[] = {
+71, 108, 111, 118, 101, 32, 102, 97, 108, 108, 115, 32, 111, 102, 102, 32, 109, 121, 32, 115, 119, 101, 97, 116, 121, 32, 104, 97, 110, 100, 0 };
+const uint8_t msgtxt_80[] = {
+65, 104, 44, 32, 39, 116, 105, 115, 32, 109, 117, 115, 105, 99, 32, 116, 111, 32, 109, 121, 32, 101, 97, 114, 115, 46, 0 };
+const uint8_t msgtxt_81[] = {
+79, 75, 0 };
+const uint8_t msgtxt_82[] = {
+73, 110, 116, 111, 32, 116, 104, 101, 32, 119, 111, 114, 109, 39, 115, 32, 109, 111, 117, 116, 104, 33, 0 };
+const uint8_t msgtxt_83[] = {
+84, 82, 89, 58, 32, 34, 84, 65, 75, 69, 32, 73, 78, 86, 69, 78, 84, 79, 82, 89, 34, 0 };
+const uint8_t msgtxt_84[] = {
+77, 105, 114, 114, 111, 114, 115, 32, 69, 86, 69, 82, 89, 87, 72, 69, 82, 69, 33, 32, 76, 105, 103, 104, 116, 32, 98, 108, 105, 110, 100, 115, 32, 109, 101, 44, 32, 115, 111, 32, 73, 32, 115, 104, 117, 116, 32, 105, 116, 32, 79, 70, 70, 33, 0 };
+const uint8_t msgtxt_85[] = {
+80, 104, 97, 114, 111, 97, 104, 39, 115, 32, 104, 101, 97, 114, 116, 32, 105, 115, 32, 114, 101, 100, 32, 108, 105, 107, 101, 32, 121, 111, 117, 114, 115, 44, 32, 121, 101, 116, 32, 101, 118, 105, 108, 32, 104, 97, 115, 32, 100, 97, 114, 107, 101, 110, 101, 100, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_86[] = {
+87, 79, 87, 44, 32, 109, 97, 110, 44, 32, 99, 114, 97, 122, 121, 46, 46, 46, 0 };
+const uint8_t msgtxt_87[] = {
+49, 48, 48, 48, 32, 121, 101, 97, 114, 115, 32, 98, 97, 100, 32, 108, 117, 99, 107, 32, 115, 116, 97, 114, 116, 115, 32, 119, 105, 116, 104, 32, 97, 32, 99, 97, 118, 101, 32, 105, 110, 33, 0 };
+const uint8_t msgtxt_88[] = {
+73, 32, 102, 101, 101, 108, 32, 97, 32, 99, 111, 105, 110, 32, 111, 110, 32, 116, 104, 101, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   INTRO*/
+       170, 
+       9, 3, 0, 3, 
+       58, 7, 8, 
+/* AUTO  50    RATS HOLD*/
+       134, 50, 
+       1, 71, 
+       45, 114, 61, 
+/* AUTO  100   */
+       177, 
+       8, 16, 13, 9, 0, 9, 0, 8, 
+       72, 76, 
+/* AUTO  2     ARAB*/
+       137, 2, 
+       14, 27, 0, 27, 
+       53, 21, 
+/* AUTO  100   AMMO*/
+       173, 
+       9, 14, 0, 14, 0, 4, 
+       58, 79, 
+/* AUTO  100   PISTOL*/
+       174, 
+       8, 12, 1, 28, 16, 1, 
+       26, 78, 27, 
+/* AUTO  100   PISTOL*/
+       168, 
+       8, 12, 0, 12, 
+       60, 
+/* AUTO  70    SHOOT ARAB*/
+       143, 70, 
+       8, 11, 0, 11, 0, 27, 
+       29, 24, 60, 55, 
+/* AUTO  100   */
+       169, 
+       8, 11, 0, 11, 
+       60, 115, 
+/* AUTO  10    */
+       141, 10, 
+       2, 29, 0, 29, 0, 32, 
+       72, 31, 
+/* AUTO  20    */
+       133, 20, 
+       2, 32, 
+       32, 61, 
+/* AUTO  10    GLOVE*/
+       142, 10, 
+       1, 19, 0, 19, 0, 51, 
+       59, 53, 129, 
+/* AUTO  25    ARAB HELP*/
+       149, 25, 
+       2, 27, 4, 11, 0, 20, 14, 59, 8, 20, 
+       126, 60, 
+/* AUTO  100   HEAD*/
+       179, 
+       2, 54, 2, 48, 0, 59, 0, 58, 
+       48, 49, 53, 53, 
+/* AUTO  100   */
+       182, 
+       2, 54, 2, 48, 0, 54, 0, 48, 0, 53, 
+       55, 55, 55, 
+/* AUTO  100   ARAB FOLLOWS*/
+       172, 
+       13, 27, 5, 27, 0, 27, 
+       53, 
+/* AUTO  100   CLAM*/
+       183, 
+       2, 63, 2, 3, 0, 3, 0, 10, 0, 64, 
+       55, 103, 58, 53, 
+/* AUTO  20    ARAB RUN*/
+       136, 20, 
+       2, 27, 4, 19, 
+       127, 
+/* AUTO  25    OYSTER CLUE*/
+       149, 25, 
+       2, 27, 2, 63, 14, 64, 8, 20, 0, 20, 
+       128, 60, 
+/* AUTO  100   STAT FINI*/
+       181, 
+       8, 17, 14, 96, 0, 96, 0, 21, 0, 86, 
+       62, 59, 
+/* AUTO  100   RATS EAT*/
+       181, 
+       2, 3, 2, 71, 0, 3, 0, 71, 0, 69, 
+       55, 72, 
+/* AUTO  30    */
+       134, 30, 
+       2, 73, 
+       112, 114, 61, 
+/* AUTO  10    RATS ATTACK*/
+       134, 10, 
+       2, 71, 
+       45, 114, 61, 
+/* AUTO  40    WORM*/
+       133, 40, 
+       2, 80, 
+       41, 61, 
+/* AUTO  20    STATUE*/
+       133, 20, 
+       2, 95, 
+       120, 61, 
+/* AUTO  100   */
+       169, 
+       4, 23, 8, 15, 
+       57, 76, 
+/* AUTO  100   MIRROR ROOM*/
+       178, 
+       4, 25, 3, 9, 0, 9, 0, 8, 
+       72, 134, 76, 
+/* AUTO  100   DEATH*/
+       165, 
+       4, 27, 
+       65, 63, 
+/* AUTO  100   AMMO USE*/
+       173, 
+       8, 1, 0, 1, 0, 1, 
+       60, 83, 
+/* AUTO  1     ARAB ATTACK*/
+       137, 1, 
+       2, 27, 6, 28, 
+       23, 61, 
+/* AUTO  0     */
+};
+const uint8_t actions[] = {
+/* LOO   HIE   */
+       5, 30, 27, 
+       4, 15, 
+       131, 113, 
+/* JUM   ANY   */
+       6, 52, 0, 
+       4, 20, 
+       131, 116, 61, 
+/* JUM   ANY   */
+       1, 52, 0, 
+       131, 46, 
+/* SAW   BAR   */
+       8, 41, 68, 
+       4, 11, 1, 55, 
+       50, 
+/* LOO   STO   */
+       5, 30, 46, 
+       3, 1, 
+       131, 113, 
+/* AUTO  0     */
+/* SWI   ANY   */
+       5, 51, 0, 
+       4, 24, 
+       131, 44, 
+/* SWI   ANY   */
+       6, 51, 0, 
+       4, 20, 
+       131, 116, 61, 
+/* THR   STO   */
+       9, 40, 46, 
+       1, 1, 0, 1, 
+       53, 131, 
+/* LOO   FIR   */
+       21, 30, 83, 
+       2, 56, 14, 13, 14, 90, 0, 13, 9, 17, 
+       1, 53, 
+/* DIG   ANY   DIG*/
+       17, 27, 0, 
+       1, 11, 14, 12, 4, 1, 0, 12, 
+       1, 53, 
+/* DIG   ANY   */
+       4, 27, 0, 
+       6, 11, 
+       2, 
+/* DIG   ANY   */
+       12, 27, 0, 
+       1, 11, 13, 12, 4, 1, 
+       122, 
+/* LOO   EXP   SEARCH*/
+       13, 30, 57, 
+       2, 76, 14, 81, 0, 81, 
+       38, 53, 
+/* GET   INV   INVENTORY*/
+       5, 10, 16, 
+       0, 12, 
+       66, 58, 
+/* INV   ANY   INVENTORY*/
+       5, 46, 0, 
+       0, 12, 
+       66, 58, 
+/* DIG   ANY   */
+       4, 27, 0, 
+       4, 2, 
+       122, 
+/* DIG   ANY   */
+       8, 27, 0, 
+       4, 2, 13, 13, 
+       122, 
+/* GET   STO   */
+       22, 10, 46, 
+       4, 4, 2, 1, 14, 16, 0, 16, 0, 1, 
+       53, 10, 52, 
+/* GET   WAT   WATER*/
+       17, 10, 7, 
+       4, 24, 1, 4, 0, 4, 0, 5, 
+       55, 52, 
+/* GET   WAT   */
+       8, 10, 7, 
+       2, 14, 6, 4, 
+       5, 
+/* GET   WAT   */
+       10, 10, 7, 
+       2, 14, 1, 5, 
+       0, 0, 6, 
+/* GO    POO   POOL*/
+       9, 1, 12, 
+       4, 3, 0, 24, 
+       54, 76, 
+/* GET   WAT   */
+       17, 10, 7, 
+       4, 3, 1, 4, 0, 4, 0, 5, 
+       55, 52, 
+/* GO    DOO   */
+       14, 1, 10, 
+       2, 17, 4, 4, 0, 6, 
+       54, 56, 76, 
+/* GO    DOO   */
+       8, 1, 10, 
+       2, 16, 4, 4, 
+       13, 
+/* DIG   ANY   */
+       16, 27, 0, 
+       1, 11, 14, 6, 4, 4, 0, 6, 
+       53, 
+/* DIG   ANY   */
+       8, 27, 0, 
+       1, 11, 2, 6, 
+       122, 
+/* GO    HOL   */
+       9, 1, 53, 
+       2, 6, 0, 5, 
+       54, 76, 
+/* UNL   DOO   */
+       20, 14, 10, 
+       2, 16, 1, 18, 8, 6, 0, 17, 0, 16, 
+       72, 
+/* UNL   DOO   */
+       8, 14, 10, 
+       2, 16, 6, 18, 
+       13, 
+/* REA   SIG   */
+       4, 12, 9, 
+       2, 15, 
+       9, 
+/* QUI   ANY   QUIT*/
+       0, 17, 0, 
+       63, 
+/* UNL   DOO   */
+       13, 14, 10, 
+       2, 16, 1, 18, 9, 6, 
+       14, 61, 
+/* UNL   DOO   TRAP OFF*/
+       23, 14, 10, 
+       4, 5, 1, 12, 0, 6, 0, 7, 0, 26, 
+       11, 10, 58, 72, 
+/* UNL   DOO   */
+       8, 14, 10, 
+       4, 5, 6, 12, 
+       13, 
+/* GO    DOO   */
+       8, 1, 10, 
+       4, 5, 8, 6, 
+       15, 
+/* DRI   WAT   */
+       13, 44, 7, 
+       1, 5, 0, 5, 0, 4, 
+       17, 72, 
+/* UNL   SAR   */
+       12, 14, 14, 
+       2, 20, 0, 22, 0, 20, 
+       72, 
+/* GO    SAR   */
+       10, 1, 14, 
+       2, 22, 0, 7, 
+       54, 76, 56, 
+/* BRE   SKE   */
+       14, 13, 13, 
+       2, 54, 0, 24, 0, 54, 
+       18, 19, 72, 
+/* ATT   SKE   */
+       14, 22, 13, 
+       2, 54, 0, 24, 0, 54, 
+       18, 19, 72, 
+/* GO    DOO   */
+       14, 1, 10, 
+       4, 6, 2, 25, 0, 4, 
+       54, 57, 76, 
+/* GO    ALC   */
+       9, 1, 23, 
+       2, 29, 2, 37, 
+       33, 34, 
+/* YES   ANY   */
+       0, 25, 0, 
+       25, 
+/* SHO   ANY   SHOOT*/
+       4, 24, 0, 
+       6, 28, 
+       2, 
+/* SHO   ANY   */
+       4, 24, 0, 
+       19, 0, 
+       28, 
+/* SHO   NOM   */
+       9, 24, 17, 
+       0, 11, 0, 1, 
+       58, 58, 
+/* POU   WAT   */
+       22, 6, 7, 
+       1, 5, 2, 31, 0, 36, 0, 31, 0, 2, 
+       72, 58, 73, 
+/* AUTO  0     */
+       205, 
+       8, 2, 0, 5, 0, 4, 
+       72, 73, 
+/* AUTO  0     */
+       214, 
+       8, 2, 2, 29, 0, 33, 0, 29, 0, 2, 
+       72, 60, 73, 
+/* AUTO  0     POU*/
+       213, 
+       8, 2, 2, 32, 0, 32, 0, 33, 0, 2, 
+       72, 60, 
+/* GET   TAP   */
+       4, 10, 20, 
+       5, 30, 
+       4, 
+/* GET   TAP   */
+       5, 10, 20, 
+       2, 29, 
+       33, 34, 
+/* GET   MUM   */
+       6, 10, 22, 
+       2, 29, 
+       33, 34, 35, 
+/* GET   LEA   */
+       4, 10, 21, 
+       2, 31, 
+       30, 
+/* SHO   MUM   */
+       18, 24, 22, 
+       2, 29, 0, 29, 0, 32, 0, 1, 
+       36, 72, 58, 
+/* SHO   MUM   */
+       9, 24, 22, 
+       2, 32, 0, 1, 
+       36, 58, 
+/* BRE   RUB   */
+       4, 13, 58, 
+       1, 90, 
+       4, 
+/* LOO   SKU   */
+       13, 30, 24, 
+       3, 48, 14, 50, 0, 50, 
+       53, 38, 
+/* LOO   BOX   */
+       22, 30, 37, 
+       3, 49, 14, 51, 0, 51, 14, 19, 13, 24, 
+       1, 38, 53, 
+/* PUN   NOM   */
+       6, 79, 17, 
+       2, 27, 
+       34, 45, 22, 
+/* SHO   MUM   */
+       9, 24, 22, 
+       2, 54, 0, 1, 
+       36, 58, 
+/* GET   POL   */
+       13, 10, 48, 
+       2, 10, 0, 10, 0, 11, 
+       55, 52, 
+/* PUL   BAR   */
+       4, 35, 68, 
+       2, 53, 
+       50, 
+/* GO    BAR   */
+       4, 1, 68, 
+       2, 53, 
+       50, 
+/* GO    LAD   */
+       9, 1, 36, 
+       2, 58, 0, 18, 
+       54, 76, 
+/* GO    ARC   */
+       8, 1, 43, 
+       4, 13, 9, 10, 
+       104, 
+/* GO    ARC   */
+       17, 1, 43, 
+       4, 13, 8, 10, 6, 63, 0, 14, 
+       54, 76, 
+/* GET   TAB   .*/
+       13, 10, 76, 
+       2, 60, 0, 60, 13, 68, 
+       131, 52, 
+/* GET   STO   */
+       9, 10, 46, 
+       2, 1, 0, 1, 
+       52, 131, 
+/* SAW   TAB   */
+       17, 41, 76, 
+       3, 55, 3, 60, 0, 68, 14, 68, 
+       1, 53, 
+/* LIG   FLA   */
+       17, 28, 77, 
+       1, 8, 9, 16, 0, 8, 0, 9, 
+       72, 76, 
+/* SCO   ANY   SCORE*/
+       0, 16, 0, 
+       65, 
+/* UNL   FLA   */
+       13, 14, 77, 
+       1, 9, 0, 8, 0, 9, 
+       72, 76, 
+/* LOO   ASH   */
+       13, 30, 55, 
+       4, 16, 14, 74, 0, 74, 
+       1, 53, 
+/* LOO   BAS   */
+       17, 30, 32, 
+       14, 73, 4, 16, 14, 43, 0, 73, 
+       53, 1, 
+/* GET   COB   */
+       6, 10, 54, 
+       2, 73, 
+       112, 114, 61, 
+/* PLA   FLU   */
+       23, 32, 42, 
+       4, 16, 14, 43, 1, 65, 0, 43, 0, 73, 
+       37, 53, 55, 73, 
+/* AUTO  0     */
+       200, 
+       0, 75, 0, 17, 
+       62, 
+/* GET   BAS   */
+       13, 10, 32, 
+       2, 42, 14, 43, 0, 73, 
+       38, 53, 
+/* GO    PAS   */
+       13, 1, 74, 
+       4, 16, 2, 43, 0, 17, 
+       54, 76, 
+/* GO    ASH   */
+       8, 1, 55, 
+       4, 16, 14, 74, 
+       1, 
+/* GO    PAS   */
+       13, 1, 74, 
+       4, 17, 2, 75, 0, 16, 
+       54, 76, 
+/* PLA   FLU   */
+       4, 32, 42, 
+       1, 65, 
+       130, 
+/* GET   TAB   */
+       14, 10, 76, 
+       2, 60, 0, 60, 14, 68, 
+       52, 131, 11, 
+/* LOO   RUB   RUBBISH*/
+       13, 30, 58, 
+       2, 77, 14, 82, 0, 82, 
+       1, 53, 
+/* LOO   RUB   */
+       9, 30, 58, 
+       2, 77, 13, 82, 
+       106, 61, 
+/* GO    POR   */
+       4, 1, 59, 
+       2, 78, 
+       13, 
+/* GO    POR   */
+       5, 1, 59, 
+       2, 79, 
+       132, 61, 
+/* UNL   POR   */
+       17, 14, 59, 
+       2, 78, 0, 80, 0, 79, 0, 78, 
+       53, 72, 
+/* SHO   WOR   WORM*/
+       9, 24, 63, 
+       2, 80, 0, 1, 
+       36, 58, 
+/* WET   ANY   */
+       0, 60, 0, 
+       109, 
+/* THR   ROP   ROPE*/
+       17, 40, 29, 
+       4, 20, 1, 45, 0, 45, 0, 85, 
+       55, 53, 
+/* GO    ROP   */
+       13, 1, 29, 
+       4, 20, 2, 85, 0, 21, 
+       54, 76, 
+/* GO    HOL   */
+       13, 1, 53, 
+       4, 20, 2, 85, 0, 21, 
+       54, 76, 
+/* GO    HOL   */
+       8, 1, 53, 
+       4, 20, 14, 85, 
+       50, 
+/* GET   LAD   */
+       4, 10, 36, 
+       2, 58, 
+       110, 
+/* BUR   ANY   */
+       9, 26, 0, 
+       4, 21, 0, 56, 
+       40, 55, 
+/* GO    POO   */
+       5, 1, 12, 
+       4, 20, 
+       116, 61, 
+/* GET   WAT   */
+       8, 10, 7, 
+       4, 20, 1, 5, 
+       6, 
+/* GET   WAT   */
+       14, 10, 7, 
+       4, 20, 1, 4, 0, 4, 
+       116, 117, 55, 
+/* GET   WAT   */
+       8, 10, 7, 
+       4, 20, 6, 4, 
+       5, 
+/* GO    CHA   */
+       14, 1, 38, 
+       2, 86, 0, 94, 0, 86, 
+       19, 72, 10, 
+/* GO    CHA   */
+       19, 1, 38, 
+       2, 94, 0, 94, 0, 95, 0, 92, 
+       10, 19, 72, 53, 
+/* PUL   CHA   */
+       14, 35, 38, 
+       2, 86, 0, 94, 0, 86, 
+       19, 72, 10, 
+/* PUL   CHA   */
+       19, 35, 38, 
+       2, 94, 0, 94, 0, 95, 0, 92, 
+       10, 19, 72, 53, 
+/* GO    STA   */
+       5, 1, 62, 
+       2, 95, 
+       118, 34, 
+/* GO    STA   */
+       13, 1, 62, 
+       2, 92, 14, 95, 0, 22, 
+       54, 76, 
+/* UNL   CHE   */
+       20, 14, 66, 
+       4, 21, 14, 86, 14, 94, 14, 95, 14, 93, 
+       73, 
+/* AUTO  0     */
+       197, 
+       0, 93, 
+       1, 53, 
+/* UNL   CHE   */
+       5, 14, 66, 
+       4, 21, 
+       118, 34, 
+/* THR   RUB   */
+       23, 40, 58, 
+       1, 90, 4, 20, 0, 90, 0, 95, 0, 94, 
+       55, 55, 55, 73, 
+/* AUTO  0     */
+       198, 
+       0, 17, 
+       58, 131, 121, 
+/* REA   MUR   */
+       4, 12, 67, 
+       4, 21, 
+       119, 
+/* GET   SIG   */
+       4, 10, 9, 
+       2, 15, 
+       110, 
+/* DRI   WAT   */
+       5, 44, 7, 
+       4, 20, 
+       116, 61, 
+/* GET   RUB   */
+       22, 10, 58, 
+       2, 90, 2, 94, 0, 90, 0, 95, 0, 94, 
+       52, 72, 10, 
+/* GET   RUB   */
+       22, 10, 58, 
+       2, 90, 2, 86, 0, 90, 0, 95, 0, 86, 
+       52, 72, 10, 
+/* GO    BAR   */
+       13, 1, 68, 
+       4, 22, 2, 98, 0, 23, 
+       54, 76, 
+/* SAW   BAR   */
+       16, 41, 68, 
+       4, 22, 1, 55, 0, 100, 0, 98, 
+       72, 
+/* UNL   BAR   */
+       16, 14, 68, 
+       4, 22, 1, 55, 0, 100, 0, 98, 
+       72, 
+/* UNL   COF   */
+       20, 14, 71, 
+       2, 99, 1, 19, 0, 99, 0, 44, 1, 12, 
+       72, 
+/* UNL   COF   */
+       13, 14, 71, 
+       2, 99, 6, 19, 1, 12, 
+       12, 61, 
+/* WEA   GLO   */
+       12, 42, 34, 
+       1, 51, 0, 51, 0, 19, 
+       72, 
+/* REM   GLO   */
+       12, 58, 34, 
+       1, 19, 0, 51, 0, 19, 
+       72, 
+/* GO    DOO   */
+       9, 1, 10, 
+       2, 39, 0, 25, 
+       54, 131, 
+/* REA   STO   */
+       8, 12, 46, 
+       3, 1, 7, 15, 
+       107, 
+/* GO    PYR   */
+       0, 1, 80, 
+       4, 
+/* RUB   ANY   */
+       0, 34, 0, 
+       35, 
+/* POU   WAT   */
+       13, 6, 7, 
+       1, 5, 0, 5, 0, 4, 
+       131, 72, 
+/* DIG   ANY   */
+       4, 27, 0, 
+       1, 11, 
+       122, 
+/* SAV   GAM   */
+       0, 45, 75, 
+       71, 
+/* PUL   CHA   */
+       21, 35, 38, 
+       4, 21, 14, 86, 14, 95, 14, 94, 0, 92, 
+       53, 1, 
+/* GO    CHA   */
+       21, 1, 38, 
+       4, 21, 14, 86, 14, 95, 14, 94, 0, 92, 
+       53, 1, 
+/* LOO   COF   */
+       13, 30, 71, 
+       2, 44, 14, 97, 0, 97, 
+       53, 1, 
+/* BRE   MIR   */
+       5, 13, 64, 
+       4, 25, 
+       137, 61, 
+/* GO    ALC   */
+       13, 1, 23, 
+       2, 37, 5, 29, 0, 10, 
+       54, 76, 
+/* POU   WAT   */
+       13, 6, 7, 
+       1, 5, 0, 4, 0, 5, 
+       72, 10, 
+/* HEL   ANY   */
+       5, 9, 0, 
+       0, 20, 
+       58, 123, 
+/* GET   OYS   */
+       4, 10, 40, 
+       2, 63, 
+       124, 
+/* GET   OYS   */
+       4, 10, 40, 
+       5, 63, 
+       125, 
+/* THR   RUB   */
+       9, 40, 58, 
+       1, 90, 0, 90, 
+       131, 53, 
+/* FEE   ANY   */
+       13, 75, 0, 
+       14, 40, 4, 25, 0, 40, 
+       138, 53, 
+/* GO    STA   */
+       9, 1, 62, 
+       4, 7, 0, 8, 
+       54, 76, 
+/* GO    ENT   */
+       4, 1, 79, 
+       4, 5, 
+       4, 
+/* GO    DOO   */
+       4, 1, 10, 
+       4, 5, 
+       4, 
+/* GET   RUB   */
+       9, 10, 58, 
+       2, 90, 0, 90, 
+       52, 131, 
+/* GET   TAP   */
+       22, 10, 20, 
+       5, 29, 5, 32, 14, 37, 0, 37, 0, 30, 
+       53, 74, 131, 
+/* GET   TAP   */
+       5, 10, 20, 
+       2, 32, 
+       33, 34, 
+/* GO    ENT   */
+       9, 1, 79, 
+       2, 37, 2, 29, 
+       33, 34, 
+/* GO    ENT   */
+       13, 1, 79, 
+       2, 37, 5, 29, 0, 10, 
+       54, 76, 
+/* LOO   SIG   */
+       4, 30, 9, 
+       2, 15, 
+       9, 
+/* LOO   MUR   */
+       4, 30, 67, 
+       4, 21, 
+       119, 
+/* SHO   RAT   */
+       23, 24, 52, 
+       2, 71, 4, 17, 0, 71, 0, 14, 0, 1, 
+       62, 115, 58, 16, 
+/* SHO   RAT   */
+       23, 24, 52, 
+       2, 71, 2, 71, 0, 71, 0, 17, 0, 1, 
+       62, 115, 58, 16, 
+/* SMO   LEA   */
+       4, 50, 21, 
+       2, 31, 
+       136, 
+/* THR   ROP   */
+       9, 40, 29, 
+       1, 45, 0, 45, 
+       53, 131, 
+/* CLO   SAR   */
+       13, 38, 14, 
+       2, 22, 0, 22, 0, 20, 
+       72, 131, 
+/* LOO   BOX   */
+       14, 30, 37, 
+       3, 49, 14, 24, 0, 24, 
+       1, 38, 53, 
+/* GET   HEA   */
+       0, 10, 81, 
+       135, 
+/* LOA   PIS   */
+       4, 49, 44, 
+       1, 28, 
+       133, 
+/* LOO   COA   */
+       4, 30, 72, 
+       3, 13, 
+       43, 
+/* THR   STO   */
+       9, 40, 46, 
+       1, 1, 0, 1, 
+       53, 46, 
+/* GET   BAR   */
+       4, 10, 68, 
+       4, 11, 
+       50, 
+/* PUN   DOO   */
+       18, 79, 10, 
+       2, 38, 0, 38, 0, 39, 1, 19, 
+       72, 131, 18, 
+/* THR   ANY   */
+       1, 40, 0, 
+       20, 85, 
+/* LOO   ANY   */
+       1, 30, 0, 
+       122, 76, 
+/* GET   BAS   */
+       9, 10, 32, 
+       2, 42, 0, 42, 
+       52, 131, 
+/* EAT   JER   */
+       10, 59, 45, 
+       1, 3, 0, 3, 
+       131, 17, 55, 
+/* SHO   ANY   */
+       6, 24, 0, 
+       0, 1, 
+       131, 58, 115, 
+/* SHA   ANY   */
+       0, 53, 0, 
+       46, 
+/* ASK   NOM   */
+       4, 61, 17, 
+       2, 27, 
+       22, 
+/* UNL   OYS   */
+       4, 14, 40, 
+       2, 63, 
+       104, 
+/* REA   HIE   */
+       8, 12, 27, 
+       4, 15, 12, 1, 
+       107, 
+/* REA   HIE   */
+       9, 12, 27, 
+       4, 15, 3, 1, 
+       131, 102, 
+/* REA   STO   */
+       9, 12, 46, 
+       3, 1, 4, 15, 
+       131, 102, 
+/* FEE   RAT   */
+       22, 75, 52, 
+       2, 71, 3, 3, 0, 71, 0, 69, 0, 3, 
+       131, 72, 55, 
+/* DRI   WAT   */
+       5, 44, 7, 
+       4, 24, 
+       131, 17, 
+/* GO    PAS   */
+       4, 1, 74, 
+       4, 9, 
+       108, 
+/* FEE   OYS   */
+       23, 75, 40, 
+       2, 63, 1, 3, 0, 3, 0, 10, 0, 64, 
+       55, 58, 53, 103, 
+/* GET   ASH   */
+       5, 10, 55, 
+       2, 41, 
+       4, 30, 
+/* GET   TAP   */
+       17, 10, 20, 
+       5, 29, 5, 32, 13, 37, 0, 30, 
+       131, 74, 
+/* SAW   CHA   */
+       8, 41, 38, 
+       1, 55, 2, 76, 
+       42, 
+/* SAW   CHA   */
+       8, 41, 38, 
+       1, 55, 2, 86, 
+       42, 
+/* UNC   EXP   */
+       4, 70, 57, 
+       2, 76, 
+       42, 
+/* ASK   ANY   */
+       0, 61, 0, 
+       46, 
+/* PUL   CHA   */
+       6, 35, 38, 
+       2, 95, 
+       131, 19, 127, 
+/* POU   CAN   */
+       0, 6, 51, 
+       109, 
+/* CLO   ANY   */
+       0, 38, 0, 
+       4, 
+/* GET   LEA   */
+       9, 10, 21, 
+       2, 36, 0, 36, 
+       52, 131, 
+/* GET   BAR   */
+       9, 10, 68, 
+       2, 67, 0, 67, 
+       52, 131, 
+/* UNL   COF   */
+       8, 14, 71, 
+       2, 99, 6, 12, 
+       47, 
+/* CLE   COA   */
+       17, 72, 72, 
+       3, 13, 0, 13, 0, 90, 3, 5, 
+       72, 131, 
+/* CLE   COA   */
+       17, 72, 72, 
+       3, 13, 0, 13, 0, 90, 4, 24, 
+       72, 131, 
+/* BRE   ANY   */
+       0, 13, 0, 
+       4, 
+/* PUN   ANY   */
+       4, 79, 0, 
+       6, 19, 
+       2, 
+/* ATT   ANY   */
+       4, 22, 0, 
+       2, 27, 
+       2, 
+/* FEE   ANY   .*/
+       0, 75, 0, 
+       35, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUT */
+       65, 85, 84,
+       /* GO */
+       71, 79, 32,
+       /* *ENT */
+       197, 78, 84,
+       /* *WAL */
+       215, 65, 76,
+       /* *RUN */
+       210, 85, 78,
+       /* *CLI */
+       195, 76, 73,
+       /* POU */
+       80, 79, 85,
+       /* *SPI */
+       211, 80, 73,
+       /* *EMP */
+       197, 77, 80,
+       /* HEL */
+       72, 69, 76,
+       /* GET */
+       71, 69, 84,
+       /* *TAK */
+       212, 65, 75,
+       /* REA */
+       82, 69, 65,
+       /* BRE */
+       66, 82, 69,
+       /* UNL */
+       85, 78, 76,
+       /* *OPE */
+       207, 80, 69,
+       /* SCO */
+       83, 67, 79,
+       /* QUI */
+       81, 85, 73,
+       /* DRO */
+       68, 82, 79,
+       /* *PUT */
+       208, 85, 84,
+       /* *LEA */
+       204, 69, 65,
+       /* PET */
+       80, 69, 84,
+       /* ATT */
+       65, 84, 84,
+       /* *KIL */
+       203, 73, 76,
+       /* SHO */
+       83, 72, 79,
+       /* YES */
+       89, 69, 83,
+       /* BUR */
+       66, 85, 82,
+       /* DIG */
+       68, 73, 71,
+       /* LIG */
+       76, 73, 71,
+       /* *FLA */
+       198, 76, 65,
+       /* LOO */
+       76, 79, 79,
+       /* *SEA */
+       211, 69, 65,
+       /* PLA */
+       80, 76, 65,
+       /* BAL */
+       66, 65, 76,
+       /* RUB */
+       82, 85, 66,
+       /* PUL */
+       80, 85, 76,
+       /* *GRA */
+       199, 82, 65,
+       /* PLA */
+       80, 76, 65,
+       /* CLO */
+       67, 76, 79,
+       /* *SHU */
+       211, 72, 85,
+       /* THR */
+       84, 72, 82,
+       /* SAW */
+       83, 65, 87,
+       /* WEA */
+       87, 69, 65,
+       /* GLO */
+       71, 76, 79,
+       /* DRI */
+       68, 82, 73,
+       /* SAV */
+       83, 65, 86,
+       /* INV */
+       73, 78, 86,
+       /* DRA */
+       68, 82, 65,
+       /* . */
+       46, 32, 32,
+       /* LOA */
+       76, 79, 65,
+       /* SMO */
+       83, 77, 79,
+       /* SWI */
+       83, 87, 73,
+       /* JUM */
+       74, 85, 77,
+       /* SHA */
+       83, 72, 65,
+       /* *. */
+       174, 32, 32,
+       /* *SME */
+       211, 77, 69,
+       /* *PUS */
+       208, 85, 83,
+       /* *WAV */
+       215, 65, 86,
+       /* REM */
+       82, 69, 77,
+       /* EAT */
+       69, 65, 84,
+       /* WET */
+       87, 69, 84,
+       /* ASK */
+       65, 83, 75,
+       /* *TAL */
+       212, 65, 76,
+       /* *YEL */
+       217, 69, 76,
+       /* *SAY */
+       211, 65, 89,
+       /* *SCR */
+       211, 67, 82,
+       /* *KIC */
+       203, 73, 67,
+       /* *TIC */
+       212, 73, 67,
+       /* . */
+       46, 32, 32,
+       /* HUG */
+       72, 85, 71,
+       /* UNC */
+       85, 78, 67,
+       /*  */
+       32, 32, 32,
+       /* CLE */
+       67, 76, 69,
+       /* *WAS */
+       215, 65, 83,
+       /*  */
+       32, 32, 32,
+       /* FEE */
+       70, 69, 69,
+       /* *TOU */
+       212, 79, 85,
+       /* *GRO */
+       199, 82, 79,
+       /*  */
+       32, 32, 32,
+       /* PUN */
+       80, 85, 78,
+       /* *HIT */
+       200, 73, 84,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       /*  */
+       32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89,
+       /* NORTH */
+       78, 79, 82,
+       /* SOUTH */
+       83, 79, 85,
+       /* EAST */
+       69, 65, 83,
+       /* WEST */
+       87, 69, 83,
+       /* UP */
+       85, 80, 32,
+       /* DOWN */
+       68, 79, 87,
+       /* WAT */
+       87, 65, 84,
+       /* *LIQ */
+       204, 73, 81,
+       /* SIG */
+       83, 73, 71,
+       /* DOO */
+       68, 79, 79,
+       /* *BRI */
+       194, 82, 73,
+       /* POO */
+       80, 79, 79,
+       /* SKE */
+       83, 75, 69,
+       /* SAR */
+       83, 65, 82,
+       /* BAN */
+       66, 65, 78,
+       /* INV */
+       73, 78, 86,
+       /* NOM */
+       78, 79, 77,
+       /* BRA */
+       66, 82, 65,
+       /* BON */
+       66, 79, 78,
+       /* TAP */
+       84, 65, 80,
+       /* LEA */
+       76, 69, 65,
+       /* MUM */
+       77, 85, 77,
+       /* ALC */
+       65, 76, 67,
+       /* SKU */
+       83, 75, 85,
+       /* CRO */
+       67, 82, 79,
+       /* FLO */
+       70, 76, 79,
+       /* HIE */
+       72, 73, 69,
+       /* THR */
+       84, 72, 82,
+       /* ROP */
+       82, 79, 80,
+       /* PLA */
+       80, 76, 65,
+       /* BLO */
+       66, 76, 79,
+       /* BAS */
+       66, 65, 83,
+       /* TEE */
+       84, 69, 69,
+       /* GLO */
+       71, 76, 79,
+       /* SAW */
+       83, 65, 87,
+       /* LAD */
+       76, 65, 68,
+       /* BOX */
+       66, 79, 88,
+       /* CHA */
+       67, 72, 65,
+       /* ARO */
+       65, 82, 79,
+       /* OYS */
+       79, 89, 83,
+       /* PEA */
+       80, 69, 65,
+       /* FLU */
+       70, 76, 85,
+       /* ARC */
+       65, 82, 67,
+       /* PIS */
+       80, 73, 83,
+       /* JER */
+       74, 69, 82,
+       /* STO */
+       83, 84, 79,
+       /* *MAR */
+       205, 65, 82,
+       /* POL */
+       80, 79, 76,
+       /* SHO */
+       83, 72, 79,
+       /* NEC */
+       78, 69, 67,
+       /* CAN */
+       67, 65, 78,
+       /* RAT */
+       82, 65, 84,
+       /* HOL */
+       72, 79, 76,
+       /* COB */
+       67, 79, 66,
+       /* ASH */
+       65, 83, 72,
+       /* KEY */
+       75, 69, 89,
+       /* EXP */
+       69, 88, 80,
+       /* RUB */
+       82, 85, 66,
+       /* POR */
+       80, 79, 82,
+       /* PIN */
+       80, 73, 78,
+       /* CAR */
+       67, 65, 82,
+       /* STA */
+       83, 84, 65,
+       /* WOR */
+       87, 79, 82,
+       /* MIR */
+       77, 73, 82,
+       /* SAP */
+       83, 65, 80,
+       /* CHE */
+       67, 72, 69,
+       /* MUR */
+       77, 85, 82,
+       /* BAR */
+       66, 65, 82,
+       /* *WIN */
+       215, 73, 78,
+       /* . */
+       46, 32, 32,
+       /* COF */
+       67, 79, 70,
+       /* COA */
+       67, 79, 65,
+       /* COI */
+       67, 79, 73,
+       /* PAS */
+       80, 65, 83,
+       /* GAM */
+       71, 65, 77,
+       /* TAB */
+       84, 65, 66,
+       /* FLA */
+       70, 76, 65,
+       /* STA */
+       83, 84, 65,
+       /* ENT */
+       69, 78, 84,
+       /* PYR */
+       80, 89, 82,
+       /* HEA */
+       72, 69, 65,
+       /* SCA */
+       83, 67, 65,
+       /* FIR */
+       70, 73, 82,
+       /* ALT */
+       65, 76, 84,
+       0,
+};
+const uint8_t automap[] = {
+       /* STO */
+       83, 84, 79,
+       1,
+       /* JER */
+       74, 69, 82,
+       3,
+       /* CAN */
+       67, 65, 78,
+       4,
+       /* CAN */
+       67, 65, 78,
+       5,
+       /* FLA */
+       70, 76, 65,
+       8,
+       /* FLA */
+       70, 76, 65,
+       9,
+       /* SHO */
+       83, 72, 79,
+       11,
+       /* KEY */
+       75, 69, 89,
+       12,
+       /* COA */
+       67, 79, 65,
+       13,
+       /* KEY */
+       75, 69, 89,
+       18,
+       /* BAN */
+       66, 65, 78,
+       21,
+       /* BON */
+       66, 79, 78,
+       24,
+       /* PIS */
+       80, 73, 83,
+       28,
+       /* TAP */
+       84, 65, 80,
+       30,
+       /* SCA */
+       83, 67, 65,
+       34,
+       /* LEA */
+       76, 69, 65,
+       36,
+       /* COI */
+       67, 79, 73,
+       40,
+       /* BAS */
+       66, 65, 83,
+       42,
+       /* ROP */
+       82, 79, 80,
+       45,
+       /* BLO */
+       66, 76, 79,
+       47,
+       /* SKU */
+       83, 75, 85,
+       48,
+       /* BOX */
+       66, 79, 88,
+       49,
+       /* TEE */
+       84, 69, 69,
+       50,
+       /* GLO */
+       71, 76, 79,
+       51,
+       /* SAW */
+       83, 65, 87,
+       55,
+       /* TAB */
+       84, 65, 66,
+       60,
+       /* PEA */
+       80, 69, 65,
+       64,
+       /* FLU */
+       70, 76, 85,
+       65,
+       /* BAR */
+       66, 65, 82,
+       67,
+       /* NEC */
+       78, 69, 67,
+       68,
+       /* RAT */
+       82, 65, 84,
+       69,
+       /* RAT */
+       82, 65, 84,
+       71,
+       /* NEC */
+       78, 69, 67,
+       74,
+       /* PIN */
+       80, 73, 78,
+       81,
+       /* CAR */
+       67, 65, 82,
+       82,
+       /* SAP */
+       83, 65, 80,
+       83,
+       /* RUB */
+       82, 85, 66,
+       90,
+       /* CRO */
+       67, 82, 79,
+       93,
+       /* BRA */
+       66, 82, 65,
+       97,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv09.c b/Applications/games/adv09.c
new file mode 100644 (file)
index 0000000..2f0e898
--- /dev/null
@@ -0,0 +1,3459 @@
+#define NUM_OBJ 77
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 175;
+const uint8_t lightfill = 175;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 7;
+const uint8_t treasure = 15;
+const uint8_t treasures = 13;
+const uint8_t lastloc = 38;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+71, 104, 111, 115, 116, 32, 84, 111, 119, 110, 0 };
+const uint8_t loctxt_2[] = {
+71, 104, 111, 115, 116, 32, 84, 111, 119, 110, 0 };
+const uint8_t loctxt_3[] = {
+71, 104, 111, 115, 116, 32, 84, 111, 119, 110, 0 };
+const uint8_t loctxt_4[] = {
+71, 104, 111, 115, 116, 32, 84, 111, 119, 110, 0 };
+const uint8_t loctxt_5[] = {
+115, 116, 97, 98, 108, 101, 0 };
+const uint8_t loctxt_6[] = {
+114, 111, 97, 100, 0 };
+const uint8_t loctxt_7[] = {
+102, 111, 114, 107, 32, 105, 110, 32, 116, 104, 101, 32, 114, 111, 97, 100, 0 };
+const uint8_t loctxt_8[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 114, 105, 100, 103, 101, 32, 97, 98, 111, 118, 101, 32, 97, 32, 110, 97, 114, 114, 111, 119, 32, 114, 97, 118, 105, 110, 101, 32, 73, 32, 115, 101, 101, 10, 109, 111, 117, 110, 116, 97, 105, 110, 115, 32, 105, 110, 32, 116, 104, 101, 32, 100, 105, 115, 116, 97, 110, 99, 101, 0 };
+const uint8_t loctxt_9[] = {
+108, 97, 114, 103, 101, 32, 102, 105, 101, 108, 100, 0 };
+const uint8_t loctxt_10[] = {
+114, 97, 118, 105, 110, 101, 0 };
+const uint8_t loctxt_11[] = {
+115, 97, 108, 111, 111, 110, 0 };
+const uint8_t loctxt_12[] = {
+104, 105, 100, 100, 101, 110, 32, 111, 102, 102, 105, 99, 101, 0 };
+const uint8_t loctxt_13[] = {
+74, 97, 105, 108, 0 };
+const uint8_t loctxt_14[] = {
+99, 101, 108, 108, 0 };
+const uint8_t loctxt_15[] = {
+68, 114, 121, 32, 71, 111, 111, 100, 115, 32, 115, 116, 111, 114, 101, 0 };
+const uint8_t loctxt_16[] = {
+66, 97, 114, 98, 101, 114, 115, 104, 111, 112, 0 };
+const uint8_t loctxt_17[] = {
+114, 111, 97, 100, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 114, 105, 100, 103, 101, 32, 97, 98, 111, 118, 101, 32, 97, 32, 114, 97, 118, 105, 110, 101, 0 };
+const uint8_t loctxt_19[] = {
+115, 116, 97, 108, 108, 0 };
+const uint8_t loctxt_20[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 66, 111, 111, 116, 32, 104, 105, 108, 108, 0 };
+const uint8_t loctxt_21[] = {
+77, 105, 110, 101, 0 };
+const uint8_t loctxt_22[] = {
+77, 105, 110, 101, 0 };
+const uint8_t loctxt_23[] = {
+77, 105, 110, 101, 0 };
+const uint8_t loctxt_24[] = {
+84, 101, 108, 101, 103, 114, 97, 112, 104, 32, 111, 102, 102, 105, 99, 101, 0 };
+const uint8_t loctxt_25[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 98, 97, 99, 107, 32, 111, 102, 32, 39, 79, 108, 101, 32, 80, 97, 105, 110, 116, 0 };
+const uint8_t loctxt_26[] = {
+119, 97, 114, 109, 32, 98, 101, 100, 0 };
+const uint8_t loctxt_27[] = {
+104, 111, 116, 101, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_28[] = {
+108, 111, 98, 98, 121, 0 };
+const uint8_t loctxt_29[] = {
+103, 114, 97, 118, 101, 0 };
+const uint8_t loctxt_30[] = {
+42, 73, 39, 109, 32, 102, 108, 97, 116, 32, 111, 110, 32, 109, 121, 32, 98, 97, 99, 107, 32, 105, 110, 32, 97, 32, 109, 97, 110, 117, 114, 101, 32, 112, 105, 108, 101, 0 };
+const uint8_t loctxt_31[] = {
+115, 116, 111, 114, 101, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_32[] = {
+109, 111, 117, 110, 116, 97, 105, 110, 32, 116, 114, 97, 105, 108, 0 };
+const uint8_t loctxt_33[] = {
+108, 105, 110, 101, 32, 115, 104, 97, 99, 107, 0 };
+const uint8_t loctxt_34[] = {
+114, 111, 111, 116, 32, 99, 101, 108, 108, 97, 114, 0 };
+const uint8_t loctxt_35[] = {
+42, 73, 39, 109, 32, 98, 101, 104, 105, 110, 100, 32, 116, 104, 101, 32, 99, 111, 117, 110, 116, 101, 114, 0 };
+const uint8_t loctxt_36[] = {
+104, 105, 100, 100, 101, 110, 32, 99, 97, 110, 121, 111, 110, 0 };
+const uint8_t loctxt_37[] = {
+116, 101, 101, 112, 101, 101, 0 };
+const uint8_t loctxt_38[] = {
+108, 111, 116, 32, 111, 102, 32, 116, 114, 111, 117, 98, 108, 101, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 17, 2, 0, 0 } }, 
+               { loctxt_2,  { 0, 0, 1, 3, 0, 0 } }, 
+               { loctxt_3,  { 0, 0, 2, 4, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 3, 6, 0, 0 } }, 
+               { loctxt_5,  { 0, 4, 0, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 4, 7, 0, 0 } }, 
+               { loctxt_7,  { 9, 8, 6, 0, 0, 0 } }, 
+               { loctxt_8,  { 7, 0, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 0, 7, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 0, 0, 8, 0 } }, 
+               { loctxt_11,  { 0, 2, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 11, 0, 0, 0 } }, 
+               { loctxt_13,  { 1, 0, 0, 0, 0, 0 } }, 
+               { loctxt_14,  { 13, 0, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 2, 0, 0, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 1, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 20, 1, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 32, 0, 0 } }, 
+               { loctxt_19,  { 0, 5, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 17, 0, 0 } }, 
+               { loctxt_21,  { 0, 0, 0, 0, 10, 22 } }, 
+               { loctxt_22,  { 0, 23, 0, 0, 21, 0 } }, 
+               { loctxt_23,  { 22, 0, 0, 0, 0, 0 } }, 
+               { loctxt_24,  { 0, 3, 0, 0, 0, 0 } }, 
+               { loctxt_25,  { 0, 0, 0, 0, 0, 19 } }, 
+               { loctxt_26,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_27,  { 0, 0, 0, 28, 0, 0 } }, 
+               { loctxt_28,  { 3, 0, 27, 0, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 0, 0, 20, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_31,  { 19, 0, 0, 0, 0, 0 } }, 
+               { loctxt_32,  { 0, 0, 18, 0, 0, 0 } }, 
+               { loctxt_33,  { 0, 32, 0, 0, 0, 0 } }, 
+               { loctxt_34,  { 0, 0, 0, 0, 33, 0 } }, 
+               { loctxt_35,  { 28, 0, 0, 0, 0, 0 } }, 
+               { loctxt_36,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_37,  { 36, 0, 0, 0, 0, 0 } }, 
+               { loctxt_38,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       1,
+       1,
+       2,
+       4,
+       5,
+       5,
+       15,
+       0,
+       0,
+       0,
+       10,
+       0,
+       10,
+       15,
+       11,
+       19,
+       0,
+       0,
+       15,
+       19,
+       0,
+       11,
+       0,
+       0,
+       0,
+       22,
+       21,
+       13,
+       0,
+       35,
+       13,
+       2,
+       15,
+       25,
+       16,
+       0,
+       0,
+       0,
+       0,
+       0,
+       3,
+       0,
+       0,
+       3,
+       20,
+       0,
+       29,
+       29,
+       0,
+       24,
+       0,
+       0,
+       0,
+       24,
+       35,
+       0,
+       12,
+       0,
+       31,
+       0,
+       0,
+       0,
+       33,
+       0,
+       32,
+       0,
+       0,
+       34,
+       28,
+       0,
+       0,
+       0,
+       14,
+       36,
+       0,
+       37,
+       37,
+};
+
+
+const uint8_t objtxt_0[] = {
+87, 111, 114, 110, 32, 111, 117, 116, 32, 102, 105, 100, 100, 108, 101, 32, 115, 116, 114, 105, 110, 103, 115, 0 };
+const uint8_t objtxt_1[] = {
+66, 97, 114, 98, 101, 114, 115, 104, 111, 112, 0 };
+const uint8_t objtxt_2[] = {
+74, 97, 105, 108, 0 };
+const uint8_t objtxt_3[] = {
+83, 97, 108, 111, 111, 110, 0 };
+const uint8_t objtxt_4[] = {
+83, 116, 97, 98, 108, 101, 0 };
+const uint8_t objtxt_5[] = {
+83, 116, 97, 108, 108, 0 };
+const uint8_t objtxt_6[] = {
+77, 97, 110, 117, 114, 101, 32, 112, 105, 108, 101, 0 };
+const uint8_t objtxt_7[] = {
+83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_8[] = {
+87, 104, 105, 116, 101, 32, 99, 114, 121, 115, 116, 97, 108, 115, 0 };
+const uint8_t objtxt_9[] = {
+76, 105, 116, 32, 99, 97, 110, 100, 108, 101, 0 };
+const uint8_t objtxt_10[] = {
+89, 101, 108, 108, 111, 119, 32, 112, 111, 119, 100, 101, 114, 0 };
+const uint8_t objtxt_11[] = {
+83, 97, 103, 101, 98, 114, 117, 115, 104, 32, 99, 104, 97, 114, 99, 111, 97, 108, 0 };
+const uint8_t objtxt_12[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 103, 117, 110, 112, 111, 119, 100, 101, 114, 0 };
+const uint8_t objtxt_13[] = {
+69, 110, 116, 114, 97, 110, 99, 101, 32, 116, 111, 32, 97, 32, 109, 105, 110, 101, 0 };
+const uint8_t objtxt_14[] = {
+77, 97, 116, 99, 104, 101, 115, 0 };
+const uint8_t objtxt_15[] = {
+77, 105, 114, 114, 111, 114, 0 };
+const uint8_t objtxt_16[] = {
+39, 111, 108, 101, 32, 80, 97, 105, 110, 116, 0 };
+const uint8_t objtxt_17[] = {
+66, 114, 111, 107, 101, 110, 32, 109, 105, 114, 114, 111, 114, 0 };
+const uint8_t objtxt_18[] = {
+72, 111, 108, 101, 32, 105, 110, 32, 116, 104, 101, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_19[] = {
+67, 111, 109, 112, 97, 115, 115, 0 };
+const uint8_t objtxt_20[] = {
+72, 111, 114, 115, 101, 115, 104, 111, 101, 0 };
+const uint8_t objtxt_21[] = {
+77, 97, 108, 101, 32, 99, 111, 119, 32, 109, 97, 110, 117, 114, 101, 0 };
+const uint8_t objtxt_22[] = {
+76, 97, 114, 103, 101, 32, 98, 101, 108, 108, 0 };
+const uint8_t objtxt_23[] = {
+87, 114, 97, 105, 116, 104, 108, 105, 107, 101, 32, 102, 105, 103, 117, 114, 101, 32, 112, 108, 97, 121, 105, 110, 103, 32, 101, 113, 117, 97, 108, 108, 121, 32, 103, 104, 111, 115, 116, 108, 121, 32, 112, 105, 97, 110, 111, 0 };
+const uint8_t objtxt_24[] = {
+80, 105, 97, 110, 111, 32, 119, 105, 116, 104, 32, 115, 101, 116, 32, 111, 102, 32, 107, 101, 121, 115, 0 };
+const uint8_t objtxt_25[] = {
+77, 97, 112, 0 };
+const uint8_t objtxt_26[] = {
+85, 110, 108, 105, 116, 32, 99, 97, 110, 100, 108, 101, 0 };
+const uint8_t objtxt_27[] = {
+42, 83, 73, 76, 86, 69, 82, 32, 66, 85, 76, 76, 69, 84, 42, 0 };
+const uint8_t objtxt_28[] = {
+42, 71, 79, 76, 68, 69, 78, 32, 68, 69, 82, 82, 73, 78, 71, 69, 82, 42, 0 };
+const uint8_t objtxt_29[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_30[] = {
+83, 105, 103, 110, 45, 34, 82, 105, 110, 103, 32, 102, 111, 114, 32, 82, 79, 79, 77, 32, 115, 101, 114, 118, 105, 99, 101, 34, 0 };
+const uint8_t objtxt_31[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_32[] = {
+68, 114, 121, 45, 71, 111, 111, 100, 115, 32, 115, 116, 111, 114, 101, 0 };
+const uint8_t objtxt_33[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_34[] = {
+42, 83, 73, 76, 86, 69, 82, 32, 83, 80, 85, 82, 83, 42, 0 };
+const uint8_t objtxt_35[] = {
+83, 116, 101, 116, 115, 111, 110, 32, 104, 97, 116, 0 };
+const uint8_t objtxt_36[] = {
+87, 104, 105, 99, 104, 32, 73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_37[] = {
+83, 109, 97, 108, 108, 32, 107, 101, 121, 0 };
+const uint8_t objtxt_38[] = {
+82, 111, 108, 108, 32, 111, 102, 32, 116, 97, 112, 101, 0 };
+const uint8_t objtxt_39[] = {
+84, 97, 112, 101, 100, 32, 117, 112, 32, 109, 105, 114, 114, 111, 114, 0 };
+const uint8_t objtxt_40[] = {
+42, 71, 79, 76, 68, 32, 78, 85, 71, 71, 69, 84, 42, 0 };
+const uint8_t objtxt_41[] = {
+84, 101, 108, 101, 103, 114, 97, 112, 104, 32, 111, 102, 102, 105, 99, 101, 0 };
+const uint8_t objtxt_42[] = {
+69, 109, 112, 116, 121, 32, 109, 97, 116, 99, 104, 98, 111, 111, 107, 0 };
+const uint8_t objtxt_43[] = {
+66, 101, 100, 0 };
+const uint8_t objtxt_44[] = {
+72, 111, 116, 101, 108, 0 };
+const uint8_t objtxt_45[] = {
+82, 97, 116, 116, 108, 101, 115, 110, 97, 107, 101, 0 };
+const uint8_t objtxt_46[] = {
+79, 112, 101, 110, 32, 103, 114, 97, 118, 101, 0 };
+const uint8_t objtxt_47[] = {
+42, 71, 79, 76, 68, 32, 67, 79, 73, 78, 42, 0 };
+const uint8_t objtxt_48[] = {
+80, 117, 114, 112, 108, 101, 32, 119, 111, 114, 109, 0 };
+const uint8_t objtxt_49[] = {
+80, 117, 114, 112, 108, 101, 32, 83, 108, 105, 109, 101, 0 };
+const uint8_t objtxt_50[] = {
+84, 101, 108, 101, 103, 114, 97, 112, 104, 32, 107, 101, 121, 0 };
+const uint8_t objtxt_51[] = {
+50, 32, 108, 111, 111, 115, 101, 32, 119, 105, 114, 101, 115, 0 };
+const uint8_t objtxt_52[] = {
+83, 112, 108, 105, 99, 101, 100, 32, 119, 105, 114, 101, 0 };
+const uint8_t objtxt_53[] = {
+80, 105, 101, 99, 101, 115, 32, 111, 102, 32, 119, 105, 114, 101, 0 };
+const uint8_t objtxt_54[] = {
+76, 97, 114, 103, 101, 32, 115, 97, 102, 101, 0 };
+const uint8_t objtxt_55[] = {
+42, 67, 65, 83, 72, 66, 79, 88, 42, 0 };
+const uint8_t objtxt_56[] = {
+42, 32, 36, 50, 48, 48, 32, 42, 0 };
+const uint8_t objtxt_57[] = {
+42, 79, 82, 73, 69, 78, 84, 65, 76, 32, 71, 79, 32, 66, 79, 65, 82, 68, 42, 0 };
+const uint8_t objtxt_58[] = {
+72, 111, 108, 101, 32, 107, 105, 99, 107, 101, 100, 32, 105, 110, 32, 119, 97, 108, 108, 32, 38, 32, 98, 97, 114, 101, 32, 104, 111, 111, 102, 32, 112, 114, 105, 110, 116, 0 };
+const uint8_t objtxt_59[] = {
+75, 101, 103, 32, 111, 102, 32, 110, 97, 105, 108, 115, 0 };
+const uint8_t objtxt_60[] = {
+69, 109, 112, 116, 121, 32, 107, 101, 103, 0 };
+const uint8_t objtxt_61[] = {
+75, 101, 103, 32, 111, 102, 32, 103, 117, 110, 112, 111, 119, 100, 101, 114, 0 };
+const uint8_t objtxt_62[] = {
+78, 97, 105, 108, 115, 0 };
+const uint8_t objtxt_63[] = {
+84, 101, 108, 101, 103, 114, 97, 112, 104, 32, 107, 101, 121, 0 };
+const uint8_t objtxt_64[] = {
+83, 109, 111, 107, 105, 110, 103, 32, 111, 112, 101, 110, 32, 115, 97, 102, 101, 0 };
+const uint8_t objtxt_65[] = {
+76, 105, 110, 101, 32, 115, 104, 97, 99, 107, 0 };
+const uint8_t objtxt_66[] = {
+80, 108, 97, 110, 107, 0 };
+const uint8_t objtxt_67[] = {
+72, 111, 108, 101, 32, 105, 110, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_68[] = {
+42, 80, 69, 76, 84, 83, 42, 0 };
+const uint8_t objtxt_69[] = {
+67, 111, 117, 110, 116, 101, 114, 0 };
+const uint8_t objtxt_70[] = {
+71, 104, 111, 115, 116, 108, 121, 32, 115, 113, 117, 97, 114, 101, 32, 100, 97, 110, 99, 101, 0 };
+const uint8_t objtxt_71[] = {
+42, 83, 73, 76, 86, 69, 82, 32, 67, 85, 80, 42, 0 };
+const uint8_t objtxt_72[] = {
+42, 66, 65, 71, 32, 71, 79, 76, 68, 32, 68, 85, 83, 84, 42, 0 };
+const uint8_t objtxt_73[] = {
+72, 97, 109, 109, 101, 114, 0 };
+const uint8_t objtxt_74[] = {
+84, 101, 101, 80, 101, 101, 0 };
+const uint8_t objtxt_75[] = {
+73, 110, 100, 105, 97, 110, 32, 103, 104, 111, 115, 116, 0 };
+const uint8_t objtxt_76[] = {
+42, 83, 65, 67, 82, 69, 68, 32, 84, 79, 77, 32, 84, 79, 77, 42, 0 };
+const uint8_t objtxt_77[] = {
+42, 84, 85, 82, 81, 85, 79, 73, 83, 69, 32, 78, 69, 67, 75, 76, 65, 67, 69, 42, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+       objtxt_67,
+       objtxt_68,
+       objtxt_69,
+       objtxt_70,
+       objtxt_71,
+       objtxt_72,
+       objtxt_73,
+       objtxt_74,
+       objtxt_75,
+       objtxt_76,
+       objtxt_77,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+79, 75, 0 };
+const uint8_t msgtxt_2[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_3[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 57, 32, 34, 71, 72, 79, 83, 84, 32, 84, 79, 87, 78, 34, 0 };
+const uint8_t msgtxt_4[] = {
+98, 121, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 32, 100, 101, 100, 105, 99, 97, 116, 101, 100, 58, 32, 116, 104, 101, 32, 67, 104, 101, 114, 101, 110, 115, 0 };
+const uint8_t msgtxt_5[] = {
+73, 39, 118, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 116, 111, 32, 100, 111, 32, 116, 104, 97, 116, 32, 119, 105, 116, 104, 0 };
+const uint8_t msgtxt_6[] = {
+83, 111, 114, 114, 121, 32, 73, 32, 99, 97, 110, 39, 116, 0 };
+const uint8_t msgtxt_7[] = {
+73, 32, 102, 111, 117, 110, 100, 0 };
+const uint8_t msgtxt_8[] = {
+87, 101, 97, 114, 63, 0 };
+const uint8_t msgtxt_9[] = {
+66, 65, 82, 70, 33, 0 };
+const uint8_t msgtxt_10[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_11[] = {
+110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_12[] = {
+114, 101, 109, 105, 110, 100, 115, 32, 109, 101, 32, 111, 102, 0 };
+const uint8_t msgtxt_13[] = {
+89, 111, 117, 39, 118, 101, 32, 109, 97, 100, 101, 0 };
+const uint8_t msgtxt_14[] = {
+66, 79, 78, 85, 83, 32, 112, 111, 105, 110, 116, 115, 32, 111, 117, 116, 32, 111, 102, 32, 97, 32, 112, 111, 115, 115, 105, 98, 108, 101, 32, 53, 48, 32, 105, 110, 0 };
+const uint8_t msgtxt_15[] = {
+105, 116, 115, 32, 102, 117, 108, 108, 32, 111, 102, 32, 115, 97, 103, 101, 32, 98, 114, 117, 115, 104, 44, 32, 116, 117, 109, 98, 108, 101, 119, 101, 101, 100, 32, 38, 32, 105, 115, 32, 105, 109, 112, 97, 115, 115, 97, 98, 108, 101, 0 };
+const uint8_t msgtxt_16[] = {
+109, 111, 118, 101, 115, 0 };
+const uint8_t msgtxt_17[] = {
+84, 104, 101, 32, 100, 114, 121, 32, 119, 97, 115, 104, 32, 105, 115, 32, 98, 117, 114, 110, 116, 32, 99, 108, 101, 97, 114, 0 };
+const uint8_t msgtxt_18[] = {
+102, 108, 121, 105, 110, 103, 32, 103, 108, 97, 115, 115, 32, 115, 108, 105, 99, 101, 115, 32, 109, 101, 32, 117, 112, 0 };
+const uint8_t msgtxt_19[] = {
+67, 114, 97, 99, 107, 33, 0 };
+const uint8_t msgtxt_20[] = {
+110, 111, 114, 116, 104, 0 };
+const uint8_t msgtxt_21[] = {
+105, 116, 115, 32, 112, 111, 105, 110, 116, 105, 110, 103, 32, 116, 111, 32, 116, 104, 101, 0 };
+const uint8_t msgtxt_22[] = {
+104, 111, 114, 115, 101, 115, 104, 111, 101, 0 };
+const uint8_t msgtxt_23[] = {
+68, 111, 111, 114, 115, 32, 99, 108, 111, 115, 101, 100, 44, 32, 119, 105, 110, 100, 111, 119, 115, 32, 98, 97, 114, 114, 101, 100, 33, 0 };
+const uint8_t msgtxt_24[] = {
+119, 105, 116, 104, 32, 119, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_25[] = {
+73, 110, 115, 105, 100, 101, 32, 98, 111, 108, 116, 32, 105, 115, 32, 108, 97, 116, 99, 104, 101, 100, 33, 0 };
+const uint8_t msgtxt_26[] = {
+77, 97, 103, 110, 101, 116, 33, 0 };
+const uint8_t msgtxt_27[] = {
+32, 100, 111, 101, 115, 110, 39, 116, 32, 115, 101, 101, 109, 32, 116, 111, 32, 100, 111, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_28[] = {
+68, 105, 110, 103, 45, 68, 105, 110, 103, 0 };
+const uint8_t msgtxt_29[] = {
+66, 101, 108, 108, 32, 114, 105, 110, 103, 115, 32, 115, 111, 109, 101, 119, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_30[] = {
+77, 121, 32, 104, 97, 110, 100, 32, 112, 97, 115, 115, 101, 115, 32, 116, 104, 114, 117, 33, 0 };
+const uint8_t msgtxt_31[] = {
+71, 104, 111, 115, 116, 32, 115, 116, 97, 110, 100, 115, 44, 32, 98, 111, 119, 115, 44, 32, 118, 97, 110, 105, 115, 104, 101, 115, 33, 0 };
+const uint8_t msgtxt_32[] = {
+83, 105, 108, 108, 121, 44, 32, 119, 114, 111, 110, 103, 32, 116, 121, 112, 101, 32, 107, 101, 121, 115, 33, 0 };
+const uint8_t msgtxt_33[] = {
+79, 100, 100, 0 };
+const uint8_t msgtxt_34[] = {
+103, 111, 101, 115, 32, 116, 104, 117, 110, 107, 33, 0 };
+const uint8_t msgtxt_35[] = {
+102, 97, 108, 108, 115, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_36[] = {
+67, 97, 110, 100, 108, 101, 32, 98, 108, 101, 119, 32, 111, 117, 116, 33, 0 };
+const uint8_t msgtxt_37[] = {
+118, 101, 114, 121, 32, 112, 114, 101, 116, 116, 121, 0 };
+const uint8_t msgtxt_38[] = {
+115, 104, 111, 111, 116, 115, 32, 115, 116, 114, 101, 97, 109, 32, 111, 102, 32, 119, 97, 116, 101, 114, 0 };
+const uint8_t msgtxt_39[] = {
+105, 116, 32, 97, 108, 114, 101, 97, 100, 121, 32, 105, 115, 0 };
+const uint8_t msgtxt_40[] = {
+68, 114, 111, 112, 32, 42, 84, 82, 69, 65, 83, 85, 82, 69, 83, 42, 32, 116, 104, 101, 110, 32, 83, 67, 79, 82, 69, 0 };
+const uint8_t msgtxt_41[] = {
+73, 32, 104, 101, 97, 114, 0 };
+const uint8_t msgtxt_42[] = {
+87, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_43[] = {
+84, 111, 111, 32, 115, 116, 101, 101, 112, 33, 0 };
+const uint8_t msgtxt_44[] = {
+102, 101, 101, 108, 115, 32, 115, 116, 114, 97, 110, 103, 101, 0 };
+const uint8_t msgtxt_45[] = {
+105, 116, 115, 32, 109, 121, 32, 115, 105, 122, 101, 0 };
+const uint8_t msgtxt_46[] = {
+68, 111, 110, 39, 116, 32, 99, 111, 108, 108, 101, 99, 116, 32, 36, 50, 48, 48, 32, 116, 104, 101, 110, 32, 100, 111, 110, 39, 116, 32, 112, 97, 115, 115, 32, 71, 79, 33, 32, 67, 79, 78, 84, 82, 65, 80, 79, 83, 73, 84, 73, 86, 69, 46, 0 };
+const uint8_t msgtxt_47[] = {
+104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_48[] = {
+72, 111, 119, 63, 0 };
+const uint8_t msgtxt_49[] = {
+73, 116, 115, 32, 109, 105, 110, 101, 44, 32, 100, 105, 103, 32, 114, 111, 111, 102, 33, 0 };
+const uint8_t msgtxt_50[] = {
+71, 104, 111, 115, 116, 108, 121, 32, 118, 111, 105, 99, 101, 32, 119, 104, 105, 115, 112, 101, 114, 115, 58, 0 };
+const uint8_t msgtxt_51[] = {
+86, 97, 105, 110, 46, 46, 46, 0 };
+const uint8_t msgtxt_52[] = {
+77, 97, 116, 99, 104, 32, 102, 108, 97, 114, 101, 115, 32, 117, 112, 46, 46, 46, 0 };
+const uint8_t msgtxt_53[] = {
+46, 46, 46, 97, 110, 100, 32, 116, 104, 101, 110, 32, 103, 111, 101, 115, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_54[] = {
+73, 116, 115, 32, 103, 101, 116, 116, 105, 110, 103, 0 };
+const uint8_t msgtxt_55[] = {
+83, 117, 110, 115, 101, 116, 33, 0 };
+const uint8_t msgtxt_56[] = {
+73, 32, 102, 101, 101, 108, 32, 114, 101, 102, 114, 101, 115, 104, 101, 100, 0 };
+const uint8_t msgtxt_57[] = {
+78, 105, 103, 104, 116, 115, 32, 97, 114, 101, 32, 99, 111, 108, 100, 33, 32, 73, 32, 99, 97, 117, 103, 104, 116, 32, 80, 110, 101, 117, 109, 111, 110, 105, 97, 0 };
+const uint8_t msgtxt_58[] = {
+84, 114, 121, 58, 32, 83, 76, 69, 69, 80, 0 };
+const uint8_t msgtxt_59[] = {
+105, 116, 32, 119, 111, 114, 107, 101, 100, 33, 0 };
+const uint8_t msgtxt_60[] = {
+105, 116, 115, 32, 103, 111, 110, 101, 0 };
+const uint8_t msgtxt_61[] = {
+115, 110, 97, 107, 101, 32, 119, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 0 };
+const uint8_t msgtxt_62[] = {
+84, 104, 97, 116, 32, 102, 101, 108, 116, 32, 103, 111, 111, 100, 33, 0 };
+const uint8_t msgtxt_63[] = {
+84, 111, 111, 32, 98, 105, 103, 33, 0 };
+const uint8_t msgtxt_64[] = {
+105, 116, 115, 32, 108, 111, 99, 107, 101, 100, 33, 0 };
+const uint8_t msgtxt_65[] = {
+71, 111, 111, 100, 32, 77, 111, 114, 110, 105, 110, 103, 0 };
+const uint8_t msgtxt_66[] = {
+71, 111, 111, 100, 32, 110, 105, 103, 104, 116, 0 };
+const uint8_t msgtxt_67[] = {
+73, 116, 115, 32, 102, 105, 114, 101, 112, 114, 111, 111, 102, 0 };
+const uint8_t msgtxt_68[] = {
+72, 101, 32, 119, 111, 110, 39, 116, 32, 98, 117, 100, 103, 101, 0 };
+const uint8_t msgtxt_69[] = {
+108, 101, 102, 116, 33, 0 };
+const uint8_t msgtxt_70[] = {
+100, 97, 114, 107, 33, 0 };
+const uint8_t msgtxt_71[] = {
+84, 104, 114, 117, 32, 116, 104, 101, 32, 72, 97, 116, 33, 0 };
+const uint8_t msgtxt_72[] = {
+73, 39, 109, 32, 115, 110, 97, 107, 101, 32, 98, 105, 116, 0 };
+const uint8_t msgtxt_73[] = {
+73, 39, 109, 32, 110, 111, 116, 32, 65, 108, 105, 99, 101, 33, 0 };
+const uint8_t msgtxt_74[] = {
+72, 101, 32, 98, 117, 99, 107, 115, 44, 32, 73, 39, 109, 32, 116, 104, 114, 111, 119, 110, 0 };
+const uint8_t msgtxt_75[] = {
+87, 104, 111, 111, 115, 104, 33, 0 };
+const uint8_t msgtxt_76[] = {
+84, 79, 79, 32, 67, 76, 79, 83, 69, 33, 32, 80, 105, 101, 99, 101, 115, 32, 111, 102, 32, 109, 101, 32, 114, 97, 105, 110, 32, 100, 111, 119, 110, 32, 102, 111, 114, 32, 100, 97, 121, 115, 33, 0 };
+const uint8_t msgtxt_77[] = {
+66, 111, 111, 109, 33, 0 };
+const uint8_t msgtxt_78[] = {
+46, 46, 46, 32, 46, 46, 46, 46, 32, 46, 45, 32, 32, 45, 46, 45, 32, 32, 46, 32, 32, 45, 32, 45, 45, 45, 32, 32, 46, 45, 45, 46, 32, 32, 46, 45, 45, 46, 32, 32, 46, 32, 32, 46, 45, 46, 0 };
+const uint8_t msgtxt_79[] = {
+83, 80, 65, 82, 75, 33, 32, 42, 32, 42, 32, 42, 32, 42, 0 };
+const uint8_t msgtxt_80[] = {
+67, 108, 105, 99, 107, 0 };
+const uint8_t msgtxt_81[] = {
+73, 115, 32, 104, 101, 32, 97, 32, 103, 104, 111, 115, 116, 63, 32, 65, 110, 121, 119, 97, 121, 32, 119, 114, 111, 110, 103, 32, 105, 100, 101, 97, 46, 0 };
+const uint8_t msgtxt_82[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 110, 111, 116, 32, 101, 118, 101, 110, 32, 97, 32, 107, 101, 121, 104, 111, 108, 101, 33, 0 };
+const uint8_t msgtxt_83[] = {
+109, 97, 115, 107, 105, 110, 103, 32, 116, 97, 112, 101, 0 };
+const uint8_t msgtxt_84[] = {
+70, 108, 111, 111, 114, 98, 111, 97, 114, 100, 115, 32, 115, 117, 114, 101, 32, 97, 114, 101, 32, 99, 114, 101, 97, 107, 121, 0 };
+const uint8_t msgtxt_85[] = {
+76, 111, 111, 115, 101, 32, 112, 108, 97, 110, 107, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_86[] = {
+115, 97, 108, 116, 32, 112, 101, 116, 101, 114, 0 };
+const uint8_t msgtxt_87[] = {
+73, 32, 119, 111, 110, 32, 97, 32, 112, 114, 105, 122, 101, 33, 0 };
+const uint8_t msgtxt_88[] = {
+114, 101, 97, 99, 104, 32, 97, 32, 110, 97, 105, 108, 0 };
+const uint8_t msgtxt_89[] = {
+109, 97, 121, 32, 110, 101, 101, 100, 32, 116, 111, 32, 115, 97, 121, 32, 97, 32, 109, 97, 103, 105, 99, 32, 119, 111, 114, 100, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_90[] = {
+97, 102, 116, 101, 114, 32, 97, 32, 108, 111, 110, 103, 32, 114, 105, 100, 101, 0 };
+const uint8_t msgtxt_91[] = {
+104, 101, 32, 114, 105, 100, 101, 115, 32, 111, 102, 102, 32, 119, 105, 116, 104, 111, 117, 116, 32, 109, 101, 0 };
+const uint8_t msgtxt_92[] = {
+71, 101, 114, 111, 110, 105, 109, 111, 32, 115, 97, 121, 115, 58, 32, 34, 73, 116, 115, 32, 101, 97, 115, 121, 33, 32, 72, 97, 112, 112, 121, 32, 76, 97, 110, 100, 105, 110, 103, 115, 33, 34, 0 };
+const uint8_t msgtxt_93[] = {
+105, 115, 32, 109, 105, 115, 115, 105, 110, 103, 0 };
+const uint8_t msgtxt_94[] = {
+114, 111, 116, 116, 101, 110, 32, 101, 103, 103, 115, 0 };
+const uint8_t msgtxt_95[] = {
+46, 0 };
+const uint8_t msgtxt_96[] = {
+105, 110, 32, 115, 97, 108, 111, 111, 110, 0 };
+const uint8_t msgtxt_97[] = {
+115, 99, 97, 114, 101, 100, 32, 116, 104, 101, 109, 32, 111, 102, 102, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+       msgtxt_92,
+       msgtxt_93,
+       msgtxt_94,
+       msgtxt_95,
+       msgtxt_96,
+       msgtxt_97,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  3     */
+       142, 3, 
+       13, 9, 0, 9, 0, 26, 
+       36, 72, 76, 
+/* AUTO  100   */
+       175, 
+       2, 70, 3, 9, 0, 70, 
+       59, 76, 10, 147, 
+/* AUTO  100   */
+       179, 
+       9, 1, 0, 0, 0, 2, 0, 12, 
+       79, 73, 81, 79, 
+/* AUTO  0     */
+       198, 
+       0, 6, 
+       81, 3, 4, 
+/* AUTO  0     */
+       211, 
+       0, 1, 0, 25, 0, 3, 0, 170, 
+       58, 79, 81, 79, 
+/* AUTO  0     */
+       207, 
+       0, 7, 0, 24, 0, 11, 
+       81, 54, 80, 54, 
+/* AUTO  0     */
+       206, 
+       0, 1, 0, 1, 0, 1, 
+       79, 87, 54, 
+/* AUTO  100   */
+       171, 
+       0, 1, 0, 7, 
+       82, 81, 73, 77, 
+/* AUTO  0     */
+       205, 
+       15, 25, 9, 15, 16, 0, 
+       104, 120, 
+/* AUTO  0     */
+       207, 
+       15, 0, 0, 17, 9, 17, 
+       105, 56, 76, 58, 
+/* AUTO  0     */
+       207, 
+       0, 7, 0, 3, 0, 3, 
+       81, 81, 77, 81, 
+/* AUTO  0     */
+       201, 
+       4, 10, 9, 17, 
+       57, 76, 
+/* AUTO  100   */
+       180, 
+       8, 17, 14, 70, 4, 11, 12, 9, 0, 70, 
+       53, 
+/* AUTO  100   */
+       180, 
+       8, 17, 7, 11, 14, 70, 0, 70, 0, 11, 
+       62, 
+/* AUTO  20    */
+       136, 20, 
+       16, 225, 0, 6, 
+       58, 
+/* AUTO  0     */
+/* AUTO  20    */
+       137, 20, 
+       0, 3, 9, 12, 
+       81, 73, 
+/* AUTO  0     */
+       206, 
+       15, 0, 0, 23, 0, 11, 
+       28, 29, 62, 
+/* AUTO  0     */
+       215, 
+       15, 0, 0, 30, 0, 4, 0, 10, 0, 4, 
+       79, 81, 79, 81, 
+/* AUTO  0     */
+       196, 
+       0, 3, 
+       81, 
+/* AUTO  100   */
+       172, 
+       9, 17, 13, 70, 0, 70, 
+       59, 
+/* AUTO  100   */
+       170, 
+       13, 23, 0, 4, 
+       81, 77, 73, 
+/* AUTO  0     */
+       201, 
+       15, 0, 0, 23, 
+       59, 70, 
+/* AUTO  0     */
+       196, 
+       0, 4, 
+       81, 
+/* AUTO  4     */
+       133, 4, 
+       14, 24, 
+       50, 51, 
+/* AUTO  100   */
+       175, 
+       8, 18, 0, 18, 0, 6, 
+       60, 81, 77, 73, 
+/* AUTO  0     */
+       204, 
+       15, 0, 0, 14, 0, 42, 
+       72, 
+/* AUTO  0     */
+       196, 
+       0, 6, 
+       81, 
+/* AUTO  100   */
+       170, 
+       1, 61, 1, 9, 
+       127, 126, 61, 
+/* AUTO  0     */
+/* AUTO  15    */
+       142, 15, 
+       4, 2, 14, 71, 13, 70, 
+       41, 10, 146, 
+/* AUTO  100   */
+       172, 
+       1, 36, 6, 35, 0, 36, 
+       55, 
+/* AUTO  100   */
+       174, 
+       8, 16, 0, 16, 0, 9, 
+       60, 59, 76, 
+/* AUTO  0     */
+/* AUTO  100   */
+       165, 
+       1, 45, 
+       122, 61, 
+/* AUTO  0     */
+/* AUTO  100   */
+       168, 
+       4, 38, 0, 8, 
+       58, 
+/* AUTO  100   */
+       168, 
+       8, 8, 0, 9, 
+       58, 
+/* AUTO  100   */
+       174, 
+       8, 9, 0, 9, 0, 2, 
+       60, 73, 81, 
+/* AUTO  0     */
+       199, 
+       0, 2, 
+       13, 78, 14, 81, 
+/* AUTO  0     */
+       194, 
+       78, 16, 65, 
+/* AUTO  100   */
+       164, 
+       8, 8, 
+       63, 
+/* AUTO  100   */
+       165, 
+       0, 2, 
+       81, 73, 
+/* AUTO  0     */
+       205, 
+       8, 6, 0, 3, 0, 6, 
+       83, 60, 
+/* AUTO  0     */
+       205, 
+       8, 2, 0, 3, 0, 2, 
+       82, 60, 
+/* AUTO  0     */
+       205, 
+       8, 3, 0, 10, 0, 3, 
+       82, 60, 
+/* AUTO  0     */
+       205, 
+       8, 5, 0, 1, 0, 5, 
+       82, 60, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+};
+const uint8_t actions[] = {
+/* MIX   FUSE  */
+       0, 40, 100, 
+       48, 
+/* GO    SLEE  */
+       0, 1, 76, 
+       108, 
+/* SAVE  GAME  */
+       15, 30, 7, 
+       0, 2, 0, 2, 0, 2, 
+       81, 83, 81, 71, 
+/* QUIT  ANY   */
+       9, 31, 0, 
+       0, 8, 0, 9, 
+       58, 58, 
+/* DIG   ANY   */
+       5, 38, 0, 
+       6, 7, 
+       6, 5, 
+/* DIG   MANU  */
+       18, 38, 10, 
+       1, 7, 2, 6, 0, 8, 14, 8, 
+       7, 10, 53, 
+/* GET   MANU  */
+       15, 10, 10, 
+       2, 6, 0, 21, 0, 6, 
+       9, 1, 52, 58, 
+/* GO    MOUN  */
+       0, 1, 107, 
+       48, 
+/* SMEL  SULF  */
+       6, 43, 15, 
+       3, 10, 
+       1, 12, 144, 
+/* MIX   ANY   */
+       23, 40, 0, 
+       3, 8, 3, 10, 3, 11, 0, 8, 0, 10, 
+       1, 73, 59, 59, 
+/* AUTO  0     */
+       201, 
+       0, 11, 0, 12, 
+       59, 53, 
+/* AUTO  0     */
+       200, 
+       15, 80, 0, 3, 
+       58, 
+/* GO    RAVI  */
+       9, 1, 103, 
+       4, 8, 9, 10, 
+       6, 15, 
+/* GO    RAVI  */
+       14, 1, 103, 
+       4, 8, 8, 10, 0, 10, 
+       1, 54, 70, 
+/* BURN  ANY   */
+       23, 46, 0, 
+       4, 8, 9, 10, 0, 10, 3, 14, 0, 18, 
+       1, 17, 58, 58, 
+/* BREA  MIRR  */
+       6, 73, 21, 
+       2, 15, 
+       19, 18, 61, 
+/* LOOK  MIRR  */
+       5, 25, 21, 
+       2, 15, 
+       1, 37, 
+/* SAY   HOW   */
+       11, 33, 117, 
+       2, 75, 0, 30, 
+       48, 142, 54, 73, 
+/* AUTO  0     */
+       201, 
+       15, 100, 0, 3, 
+       76, 58, 
+/* GO    HOLE  */
+       10, 1, 61, 
+       2, 18, 0, 12, 
+       1, 54, 76, 
+/* LOOK  COMP  */
+       10, 25, 22, 
+       3, 19, 3, 20, 
+       1, 21, 22, 
+/* GO    JAIL  */
+       9, 1, 43, 
+       2, 2, 9, 11, 
+       6, 23, 
+/* HIT   GHOS  */
+       5, 61, 26, 
+       2, 23, 
+       6, 30, 
+/* CLAP  ANY   */
+       23, 66, 0, 
+       2, 23, 0, 12, 0, 23, 0, 24, 0, 2, 
+       58, 72, 58, 31, 
+/* GET   KEY   */
+       8, 10, 31, 
+       2, 24, 5, 37, 
+       32, 
+/* GO    JAIL  */
+       18, 1, 43, 
+       2, 2, 8, 11, 0, 13, 13, 56, 
+       1, 54, 76, 
+/* PLAY  ANY   */
+       11, 64, 0, 
+       2, 24, 9, 13, 
+       1, 33, 10, 34, 
+/* PLAY  ANY   */
+       9, 64, 0, 
+       2, 24, 8, 13, 
+       1, 37, 
+/* OPEN  DOOR  */
+       9, 50, 65, 
+       2, 2, 9, 11, 
+       24, 25, 
+/* WITH  HORS  */
+       19, 58, 23, 
+       2, 2, 9, 11, 3, 20, 0, 11, 
+       73, 26, 58, 109, 
+/* AUTO  0     */
+       200, 
+       15, 30, 0, 2, 
+       58, 
+/* HIT   BELL  */
+       19, 61, 25, 
+       3, 22, 4, 27, 0, 43, 14, 43, 
+       125, 2, 10, 53, 
+/* WITH  ANY   */
+       9, 58, 0, 
+       2, 2, 9, 11, 
+       84, 27, 
+/* OPEN  PIAN  */
+       19, 50, 87, 
+       2, 24, 0, 13, 0, 25, 9, 13, 
+       10, 35, 58, 53, 
+/* BURN  CAND  */
+       23, 46, 34, 
+       3, 26, 3, 14, 0, 26, 0, 9, 0, 18, 
+       1, 72, 76, 58, 
+/* UNLI  CAND  */
+       14, 69, 34, 
+       3, 9, 0, 26, 0, 9, 
+       1, 72, 76, 
+/* LIST  ANY   */
+       4, 71, 0, 
+       2, 23, 
+       37, 
+/* HIT   BELL  */
+       7, 61, 25, 
+       3, 22, 
+       1, 28, 50, 51, 
+/* LOAD  DERR  */
+       5, 56, 39, 
+       3, 28, 
+       1, 39, 
+/* GO    STOR  */
+       10, 1, 42, 
+       2, 32, 0, 15, 
+       1, 54, 76, 
+/* READ  SIGN  */
+       5, 68, 45, 
+       3, 33, 
+       1, 40, 
+/* OPEN  DOOR  */
+       17, 50, 65, 
+       2, 31, 0, 31, 0, 29, 3, 37, 
+       1, 72, 
+/* GO    DOOR  */
+       10, 1, 65, 
+       2, 29, 0, 14, 
+       1, 54, 76, 
+/* OPEN  DOOR  */
+       4, 50, 65, 
+       2, 31, 
+       114, 
+/* SCOR  ANY   */
+       4, 32, 0, 
+       0, 9, 
+       58, 
+/* GO    STAB  */
+       10, 1, 9, 
+       2, 4, 0, 5, 
+       54, 76, 1, 
+/* GO    SALO  */
+       10, 1, 64, 
+       2, 3, 0, 11, 
+       54, 76, 1, 
+/* LOOK  COMP  */
+       6, 25, 22, 
+       3, 19, 
+       1, 21, 20, 
+/* GO    BARB  */
+       10, 1, 46, 
+       2, 1, 0, 16, 
+       54, 76, 1, 
+/* LIST  ANY   */
+       2, 71, 0, 
+       1, 41, 11, 
+/* WITH  NAIL  */
+       22, 58, 99, 
+       3, 60, 3, 62, 0, 62, 0, 60, 0, 59, 
+       59, 72, 1, 
+/* JUMP  RAVI  */
+       10, 76, 103, 
+       4, 8, 0, 18, 
+       1, 54, 76, 
+/* GO    RAVI  */
+       5, 1, 103, 
+       4, 18, 
+       6, 43, 
+/* JUMP  RAVI  */
+       10, 76, 103, 
+       4, 18, 0, 8, 
+       1, 54, 76, 
+/* OPEN  KEG   */
+       0, 50, 98, 
+       39, 
+/* SMEL  MANU  */
+       1, 43, 10, 
+       9, 6, 
+/* SHAK  HAT   */
+       19, 80, 68, 
+       3, 35, 14, 37, 0, 37, 0, 2, 
+       53, 58, 10, 35, 
+/* GET   KEY   */
+       9, 10, 31, 
+       3, 37, 0, 37, 
+       52, 1, 
+/* WEAR  HAT   */
+       10, 83, 68, 
+       1, 35, 0, 36, 
+       74, 1, 73, 
+/* AUTO  0     */
+       198, 
+       14, 37, 
+       33, 10, 44, 
+/* TAPE  MIRR  */
+       17, 82, 21, 
+       3, 38, 2, 15, 0, 15, 0, 39, 
+       1, 72, 
+/* BREA  MIRR  */
+       18, 73, 21, 
+       2, 39, 0, 39, 0, 17, 0, 18, 
+       1, 72, 53, 
+/* LOOK  HAT   */
+       6, 25, 68, 
+       3, 35, 
+       1, 2, 45, 
+/* GO    STAL  */
+       10, 1, 63, 
+       2, 5, 0, 19, 
+       1, 54, 76, 
+/* KNOC  GHOS  */
+       5, 111, 26, 
+       2, 23, 
+       6, 30, 
+/* KNOC  PIAN  */
+       5, 111, 87, 
+       2, 23, 
+       6, 30, 
+/* CROS  ANY   */
+       4, 88, 0, 
+       4, 8, 
+       48, 
+/* DIG   ROOF  */
+       19, 38, 44, 
+       3, 7, 4, 23, 14, 40, 0, 40, 
+       53, 7, 10, 73, 
+/* AUTO  0     */
+       200, 
+       15, 80, 0, 3, 
+       58, 
+/* READ  MAP   */
+       5, 68, 33, 
+       3, 25, 
+       1, 49, 
+/* GO    TELE  */
+       10, 1, 73, 
+       3, 41, 0, 24, 
+       1, 54, 76, 
+/* GO    PAIN  */
+       10, 1, 75, 
+       2, 16, 0, 25, 
+       1, 54, 76, 
+/* GET   PAIN  */
+       6, 10, 75, 
+       2, 16, 
+       42, 6, 113, 
+/* GO    HORS  */
+       10, 1, 23, 
+       2, 16, 0, 25, 
+       1, 54, 76, 
+/* BURN  MATC  */
+       14, 46, 18, 
+       3, 14, 0, 6, 0, 18, 
+       81, 73, 58, 
+/* AUTO  0     */
+       194, 
+       102, 88, 88, 
+/* AUTO  0     */
+       202, 
+       8, 15, 0, 14, 
+       57, 76, 58, 
+/* AUTO  0     */
+       198, 
+       8, 14, 
+       88, 88, 88, 
+/* AUTO  0     */
+       202, 
+       8, 14, 0, 14, 
+       60, 56, 76, 
+/* AUTO  0     */
+       197, 
+       0, 6, 
+       81, 103, 
+/* SAY   GIDD  */
+       10, 33, 55, 
+       4, 25, 9, 20, 
+       1, 85, 118, 
+/* GO    MINE  */
+       11, 1, 50, 
+       2, 13, 0, 21, 
+       56, 54, 76, 1, 
+/* SLEE  ANY   */
+       15, 89, 0, 
+       0, 7, 0, 175, 0, 7, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       199, 
+       0, 17, 
+       116, 60, 88, 88, 
+/* AUTO  0     */
+       199, 
+       4, 26, 
+       115, 106, 57, 76, 
+/* AUTO  0     */
+       197, 
+       7, 26, 
+       107, 61, 
+/* AUTO  0     */
+       204, 
+       14, 0, 0, 0, 0, 11, 
+       62, 
+/* GET   UP    */
+       10, 10, 5, 
+       4, 26, 0, 27, 
+       1, 54, 76, 
+/* GO    BED   */
+       10, 1, 52, 
+       2, 43, 0, 26, 
+       1, 54, 76, 
+/* GO    HOTE  */
+       10, 1, 53, 
+       2, 44, 0, 28, 
+       1, 54, 76, 
+/* SHOO  ANY   */
+       15, 57, 0, 
+       3, 45, 3, 28, 0, 45, 
+       59, 38, 109, 110, 
+/* KILL  SNAK  */
+       4, 65, 77, 
+       3, 45, 
+       111, 
+/* DIG   ANY   */
+       4, 38, 0, 
+       3, 45, 
+       111, 
+/* DIG   ANY   */
+       13, 38, 0, 
+       5, 45, 0, 46, 4, 20, 
+       1, 53, 
+/* GO    GRAV  */
+       10, 1, 14, 
+       2, 46, 0, 29, 
+       1, 54, 76, 
+/* KILL  WORM  */
+       19, 65, 79, 
+       3, 48, 0, 48, 0, 49, 0, 5, 
+       1, 72, 112, 58, 
+/* GET   KEY   */
+       4, 10, 31, 
+       3, 50, 
+       6, 
+/* MOVE  KEY   */
+       6, 93, 31, 
+       14, 52, 
+       1, 11, 47, 
+/* CONN  WIRE  */
+       14, 90, 41, 
+       3, 51, 0, 51, 0, 52, 
+       1, 72, 73, 
+/* AUTO  0     */
+       200, 
+       15, 30, 0, 3, 
+       58, 
+/* MOVE  SAFE  */
+       21, 93, 20, 
+       0, 51, 2, 54, 14, 51, 14, 52, 14, 53, 
+       1, 53, 
+/* GET   SAFE  */
+       5, 10, 20, 
+       2, 54, 
+       6, 113, 
+/* OPEN  SAFE  */
+       5, 50, 20, 
+       2, 54, 
+       6, 114, 
+/* GET   WIRE  */
+       9, 10, 41, 
+       3, 53, 0, 53, 
+       52, 1, 
+/* MOVE  SAFE  */
+       4, 93, 20, 
+       2, 54, 
+       1, 
+/* MOVE  PAIN  */
+       4, 93, 75, 
+       2, 16, 
+       118, 
+/* DIG   ANY   */
+       19, 38, 0, 
+       4, 9, 14, 12, 14, 10, 0, 10, 
+       1, 53, 7, 10, 
+/* GO    JAIL  */
+       19, 1, 43, 
+       2, 2, 8, 11, 14, 56, 0, 13, 
+       50, 54, 76, 46, 
+/* PASS  GO    */
+       14, 97, 89, 
+       14, 56, 0, 56, 3, 57, 
+       53, 50, 109, 
+/* MOVE  PIAN  */
+       4, 93, 87, 
+       2, 24, 
+       1, 
+/* GET   WIRE  */
+       14, 10, 41, 
+       3, 51, 0, 51, 0, 53, 
+       59, 74, 1, 
+/* OPEN  DOOR  */
+       8, 50, 65, 
+       2, 2, 8, 11, 
+       39, 
+/* WAIT  ANY   */
+       19, 98, 0, 
+       0, 45, 0, 7, 0, 45, 0, 7, 
+       82, 81, 83, 81, 
+/* WEAR  SPUR  */
+       4, 83, 67, 
+       1, 34, 
+       1, 
+/* CLEA  ANY   */
+       0, 99, 0, 
+       48, 
+/* LOOK  MATC  */
+       15, 25, 18, 
+       3, 14, 0, 6, 0, 6, 
+       81, 78, 119, 81, 
+/* JUMP  ANY   */
+       0, 76, 0, 
+       42, 
+/* BURN  MAP   */
+       18, 46, 33, 
+       3, 14, 0, 18, 0, 25, 3, 25, 
+       58, 59, 1, 
+/* BURN  MAP   */
+       13, 46, 33, 
+       3, 9, 3, 25, 0, 25, 
+       1, 59, 
+/* BURN  GUNP  */
+       14, 46, 13, 
+       2, 12, 3, 9, 0, 12, 
+       1, 59, 125, 
+/* BURN  GUNP  */
+       19, 46, 13, 
+       2, 12, 3, 14, 0, 18, 0, 12, 
+       58, 1, 59, 125, 
+/* BURN  GUNP  */
+       11, 46, 13, 
+       3, 61, 3, 9, 
+       1, 127, 126, 61, 
+/* BURN  GUNP  */
+       11, 46, 13, 
+       3, 61, 3, 14, 
+       1, 127, 126, 61, 
+/* MOVE  KEY   */
+       11, 93, 31, 
+       13, 52, 2, 50, 
+       130, 129, 128, 73, 
+/* AUTO  0     */
+       199, 
+       3, 61, 
+       129, 127, 126, 61, 
+/* AUTO  0     */
+       202, 
+       3, 12, 0, 12, 
+       129, 125, 59, 
+/* SAY   GIDD  */
+       11, 33, 55, 
+       4, 25, 8, 20, 
+       1, 85, 73, 140, 
+/* AUTO  0     */
+       198, 
+       0, 20, 
+       124, 141, 60, 
+/* AUTO  0     */
+       202, 
+       0, 36, 0, 16, 
+       54, 76, 59, 
+/* GET   INVE  */
+       0, 10, 62, 
+       66, 
+/* INVE  ANY   */
+       0, 60, 0, 
+       66, 
+/* FIND  ANY   */
+       0, 85, 0, 
+       6, 
+/* WITH  GUNP  */
+       22, 58, 13, 
+       3, 60, 3, 12, 0, 60, 0, 12, 0, 61, 
+       59, 72, 1, 
+/* SAY   ANY   */
+       1, 33, 0, 
+       1, 85, 
+/* HELP  ANY   */
+       0, 29, 0, 
+       6, 
+/* BURN  ANY   */
+       4, 46, 0, 
+       3, 14, 
+       117, 
+/* BURN  ANY   */
+       4, 46, 0, 
+       3, 9, 
+       117, 
+/* BURN  ANY   */
+       1, 46, 0, 
+       6, 5, 
+/* SHOO  ANY   */
+       5, 57, 0, 
+       3, 28, 
+       1, 38, 
+/* SPUR  ANY   */
+       22, 115, 0, 
+       1, 34, 4, 25, 0, 30, 0, 58, 0, 19, 
+       124, 54, 62, 
+/* DROP  ON    */
+       1, 18, 19, 
+       0, 8, 
+/* PLAY  PIAN  */
+       5, 64, 87, 
+       2, 23, 
+       6, 30, 
+/* COVE  SNAK  */
+       11, 100, 77, 
+       2, 45, 3, 35, 
+       1, 121, 122, 61, 
+/* MOVE  BED   */
+       18, 93, 52, 
+       2, 43, 0, 38, 9, 19, 0, 19, 
+       1, 53, 58, 
+/* GO    MIRR  */
+       1, 1, 21, 
+       6, 123, 
+/* EMPT  KEG   */
+       18, 103, 98, 
+       3, 59, 0, 60, 0, 59, 0, 62, 
+       1, 72, 53, 
+/* EMPT  KEG   */
+       18, 103, 98, 
+       3, 61, 0, 60, 0, 61, 0, 12, 
+       1, 72, 53, 
+/* GET   GUNP  */
+       4, 10, 13, 
+       3, 12, 
+       48, 
+/* CLAP  ANY   */
+       0, 66, 0, 
+       1, 
+/* MOVE  BED   */
+       4, 93, 52, 
+       2, 43, 
+       1, 
+/* MOVE  KEY   */
+       10, 93, 31, 
+       3, 63, 13, 52, 
+       130, 80, 73, 
+/* AUTO  0     */
+       210, 
+       2, 61, 0, 41, 0, 64, 0, 52, 
+       72, 127, 59, 
+/* AUTO  0     */
+       200, 
+       2, 12, 0, 12, 
+       59, 
+/* AUTO  0     */
+       193, 
+       80, 76, 
+/* MOVE  KEY   */
+       9, 93, 31, 
+       3, 63, 14, 52, 
+       11, 47, 
+/* SHAK  TOPP  */
+       0, 80, 101, 
+       131, 
+/* BREA  ANY   */
+       0, 73, 0, 
+       6, 
+/* GO    PAIN  */
+       4, 1, 75, 
+       4, 25, 
+       139, 
+/* LOOK  DOOR  */
+       4, 25, 65, 
+       2, 2, 
+       132, 
+/* KNOC  ANY   */
+       2, 111, 0, 
+       1, 11, 47, 
+/* TAPE  ANY   */
+       5, 82, 0, 
+       3, 38, 
+       133, 27, 
+/* GO    HOLE  */
+       10, 1, 61, 
+       2, 58, 0, 31, 
+       1, 54, 76, 
+/* GO    SHAC  */
+       11, 1, 105, 
+       2, 65, 0, 33, 
+       1, 54, 76, 134, 
+/* LOOK  FLOO  */
+       10, 25, 108, 
+       4, 33, 14, 66, 
+       1, 2, 135, 
+/* GET   PLAN  */
+       14, 10, 109, 
+       14, 66, 0, 66, 0, 67, 
+       74, 53, 1, 
+/* GET   PLAN  */
+       9, 10, 109, 
+       3, 66, 0, 66, 
+       52, 1, 
+/* GO    HOLE  */
+       10, 1, 61, 
+       2, 67, 0, 34, 
+       1, 54, 76, 
+/* SMEL  CRYS  */
+       6, 43, 95, 
+       3, 8, 
+       1, 12, 136, 
+/* GO    COUN  */
+       10, 1, 119, 
+       2, 69, 0, 35, 
+       1, 54, 76, 
+/* GET   UP    */
+       10, 10, 5, 
+       4, 30, 0, 5, 
+       1, 54, 76, 
+/* DANC  ANY   */
+       15, 105, 0, 
+       2, 70, 14, 71, 0, 71, 
+       1, 74, 37, 137, 
+/* DANC  ANY   */
+       3, 105, 0, 
+       1, 37, 11, 47, 
+/* LOOK  SAFE  */
+       15, 25, 20, 
+       2, 64, 14, 72, 0, 72, 
+       1, 53, 7, 10, 
+/* SHOE  ANY   */
+       22, 110, 0, 
+       3, 62, 2, 16, 3, 20, 0, 20, 3, 73, 
+       1, 59, 73, 
+/* AUTO  0     */
+       201, 
+       0, 62, 0, 20, 
+       59, 58, 
+/* SHOE  ANY   */
+       9, 110, 0, 
+       2, 16, 3, 59, 
+       6, 138, 
+/* DIG   ANY   */
+       5, 38, 0, 
+       1, 7, 
+       7, 11, 
+/* GO    TEEP  */
+       10, 1, 115, 
+       2, 74, 0, 37, 
+       1, 54, 76, 
+/* HIT   TOM   */
+       15, 61, 116, 
+       3, 76, 14, 75, 0, 75, 
+       127, 127, 53, 109, 
+/* HIT   TOM   */
+       10, 61, 116, 
+       3, 76, 13, 75, 
+       0, 127, 127, 
+/* SHOE  ANY   */
+       6, 110, 0, 
+       2, 16, 
+       6, 10, 143, 
+/* HIT   GHOS  */
+       5, 61, 26, 
+       2, 75, 
+       6, 30, 
+/* FILL  KEG   */
+       5, 107, 98, 
+       3, 60, 
+       1, 24, 
+/* LOOK  ANY   */
+       3, 25, 0, 
+       1, 2, 11, 76, 
+/* MIX   ANY   */
+       2, 40, 0, 
+       6, 10, 143, 
+/* GO    HORS  */
+       4, 1, 23, 
+       4, 25, 
+       139, 
+/* SPUR  ANY   */
+       1, 115, 0, 
+       11, 47, 
+/* WITH  ANY   */
+       2, 58, 0, 
+       6, 84, 27, 
+/* GO    MANU  */
+       1, 1, 10, 
+       9, 6, 
+/* AUTO  0     */
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *WALK */
+       215, 65, 76, 75,
+       /* *RUN */
+       210, 85, 78, 32,
+       /* *CLIM */
+       195, 76, 73, 77,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *MOUN */
+       205, 79, 85, 78,
+       /* *RIDE */
+       210, 73, 68, 69,
+       /* . */
+       46, 32, 32, 32,
+       /* . */
+       46, 32, 32, 32,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *COLL */
+       195, 79, 76, 76,
+       /* *LIFT */
+       204, 73, 70, 84,
+       /* . */
+       46, 32, 32, 32,
+       /* . */
+       46, 32, 32, 32,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *THRO */
+       212, 72, 82, 79,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *REMO */
+       210, 69, 77, 79,
+       /* *TOSS */
+       212, 79, 83, 83,
+       /* . */
+       46, 32, 32, 32,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *DESC */
+       196, 69, 83, 67,
+       /* *CHEC */
+       195, 72, 69, 67,
+       /* HELP */
+       72, 69, 76, 80,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *YELL */
+       217, 69, 76, 76,
+       /* *SCRE */
+       211, 67, 82, 69,
+       /* *WHIS */
+       215, 72, 73, 83,
+       /* *SING */
+       211, 73, 78, 71,
+       /* DIG */
+       68, 73, 71, 32,
+       /* *SHOV */
+       211, 72, 79, 86,
+       /* MIX */
+       77, 73, 88, 32,
+       /* *MAKE */
+       205, 65, 75, 69,
+       /* . */
+       46, 32, 32, 32,
+       /* SMEL */
+       83, 77, 69, 76,
+       /* *TAST */
+       212, 65, 83, 84,
+       /* *EAT */
+       197, 65, 84, 32,
+       /* BURN */
+       66, 85, 82, 78,
+       /* *IGNI */
+       201, 71, 78, 73,
+       /* *LIGH */
+       204, 73, 71, 72,
+       /* . */
+       46, 32, 32, 32,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* *UNLO */
+       213, 78, 76, 79,
+       /* LOCK */
+       76, 79, 67, 75,
+       /* . */
+       46, 32, 32, 32,
+       /* CLOS */
+       67, 76, 79, 83,
+       /* *SHUT */
+       211, 72, 85, 84,
+       /* LOAD */
+       76, 79, 65, 68,
+       /* SHOO */
+       83, 72, 79, 79,
+       /* WITH */
+       87, 73, 84, 72,
+       /* *USE */
+       213, 83, 69, 32,
+       /* INVE */
+       73, 78, 86, 69,
+       /* HIT */
+       72, 73, 84, 32,
+       /* *RING */
+       210, 73, 78, 71,
+       /* *BEAT */
+       194, 69, 65, 84,
+       /* PLAY */
+       80, 76, 65, 89,
+       /* KILL */
+       75, 73, 76, 76,
+       /* CLAP */
+       67, 76, 65, 80,
+       /* *APPL */
+       193, 80, 80, 76,
+       /* READ */
+       82, 69, 65, 68,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* *EXTI */
+       197, 88, 84, 73,
+       /* LIST */
+       76, 73, 83, 84,
+       /* *HEAR */
+       200, 69, 65, 82,
+       /* BREA */
+       66, 82, 69, 65,
+       /* *SMAS */
+       211, 77, 65, 83,
+       /* *BUST */
+       194, 85, 83, 84,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* *LEAP */
+       204, 69, 65, 80,
+       /* CUT */
+       67, 85, 84, 32,
+       /* *SLIC */
+       211, 76, 73, 67,
+       /* SHAK */
+       83, 72, 65, 75,
+       /* *WAVE */
+       215, 65, 86, 69,
+       /* TAPE */
+       84, 65, 80, 69,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* *PUTO */
+       208, 85, 84, 79,
+       /* FIND */
+       70, 73, 78, 68,
+       /* *LOCA */
+       204, 79, 67, 65,
+       /* *SEEK */
+       211, 69, 69, 75,
+       /* CROS */
+       67, 82, 79, 83,
+       /* SLEE */
+       83, 76, 69, 69,
+       /* CONN */
+       67, 79, 78, 78,
+       /* *SPLI */
+       211, 80, 76, 73,
+       /* *REPA */
+       210, 69, 80, 65,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* *PUSH */
+       208, 85, 83, 72,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* *TAP */
+       212, 65, 80, 32,
+       /* PASS */
+       80, 65, 83, 83,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* CLEA */
+       67, 76, 69, 65,
+       /* COVE */
+       67, 79, 86, 69,
+       /*  */
+       32, 32, 32, 32,
+       /* . */
+       46, 32, 32, 32,
+       /* EMPT */
+       69, 77, 80, 84,
+       /* *SPIL */
+       211, 80, 73, 76,
+       /* DANC */
+       68, 65, 78, 67,
+       /*  */
+       32, 32, 32, 32,
+       /* FILL */
+       70, 73, 76, 76,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /* SHOE */
+       83, 72, 79, 69,
+       /* KNOC */
+       75, 78, 79, 67,
+       /* *TOUC */
+       212, 79, 85, 67,
+       /* *FEEL */
+       198, 69, 69, 76,
+       /* *KISS */
+       203, 73, 83, 83,
+       /* SPUR */
+       83, 80, 85, 82,
+       /* *KICK */
+       203, 73, 67, 75,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORTH */
+       78, 79, 82, 84,
+       /* SOUTH */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* GAME */
+       71, 65, 77, 69,
+       /* AROU */
+       65, 82, 79, 85,
+       /* STAB */
+       83, 84, 65, 66,
+       /* MANU */
+       77, 65, 78, 85,
+       /* *PILE */
+       208, 73, 76, 69,
+       /* HILL */
+       72, 73, 76, 76,
+       /* GUNP */
+       71, 85, 78, 80,
+       /* GRAV */
+       71, 82, 65, 86,
+       /* SULF */
+       83, 85, 76, 70,
+       /* *POWD */
+       208, 79, 87, 68,
+       /* CHAR */
+       67, 72, 65, 82,
+       /* MATC */
+       77, 65, 84, 67,
+       /* ON */
+       79, 78, 32, 32,
+       /* SAFE */
+       83, 65, 70, 69,
+       /* MIRR */
+       77, 73, 82, 82,
+       /* COMP */
+       67, 79, 77, 80,
+       /* HORS */
+       72, 79, 82, 83,
+       /* *MAGN */
+       205, 65, 71, 78,
+       /* BELL */
+       66, 69, 76, 76,
+       /* GHOS */
+       71, 72, 79, 83,
+       /* *FIGU */
+       198, 73, 71, 85,
+       /* HAND */
+       72, 65, 78, 68,
+       /* *FEET */
+       198, 69, 69, 84,
+       /* HEAD */
+       72, 69, 65, 68,
+       /* KEY */
+       75, 69, 89, 32,
+       /* *KEYS */
+       203, 69, 89, 83,
+       /* MAP */
+       77, 65, 80, 32,
+       /* CAND */
+       67, 65, 78, 68,
+       /* *LIGH */
+       204, 73, 71, 72,
+       /* MUSI */
+       77, 85, 83, 73,
+       /* BULL */
+       66, 85, 76, 76,
+       /* STAB */
+       83, 84, 65, 66,
+       /* DERR */
+       68, 69, 82, 82,
+       /* *GUN */
+       199, 85, 78, 32,
+       /* WIRE */
+       87, 73, 82, 69,
+       /* STOR */
+       83, 84, 79, 82,
+       /* JAIL */
+       74, 65, 73, 76,
+       /* ROOF */
+       82, 79, 79, 70,
+       /* SIGN */
+       83, 73, 71, 78,
+       /* BARB */
+       66, 65, 82, 66,
+       /* TUMB */
+       84, 85, 77, 66,
+       /* *SAGE */
+       211, 65, 71, 69,
+       /* *BRUS */
+       194, 82, 85, 83,
+       /* MINE */
+       77, 73, 78, 69,
+       /* *ENTR */
+       197, 78, 84, 82,
+       /* BED */
+       66, 69, 68, 32,
+       /* HOTE */
+       72, 79, 84, 69,
+       /* ROOM */
+       82, 79, 79, 77,
+       /* GIDD */
+       71, 73, 68, 68,
+       /* *GITT */
+       199, 73, 84, 84,
+       /* *GIDY */
+       199, 73, 68, 89,
+       /* *GITY */
+       199, 73, 84, 89,
+       /* COIN */
+       67, 79, 73, 78,
+       /* TOWN */
+       84, 79, 87, 78,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* INVE */
+       73, 78, 86, 69,
+       /* STAL */
+       83, 84, 65, 76,
+       /* SALO */
+       83, 65, 76, 79,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* WIND */
+       87, 73, 78, 68,
+       /* SPUR */
+       83, 80, 85, 82,
+       /* HAT */
+       72, 65, 84, 32,
+       /* STRI */
+       83, 84, 82, 73,
+       /* TAPE */
+       84, 65, 80, 69,
+       /* *ROLL */
+       210, 79, 76, 76,
+       /* WALL */
+       87, 65, 76, 76,
+       /* TELE */
+       84, 69, 76, 69,
+       /* *OFFI */
+       207, 70, 70, 73,
+       /* PAIN */
+       80, 65, 73, 78,
+       /* SLEE */
+       83, 76, 69, 69,
+       /* SNAK */
+       83, 78, 65, 75,
+       /* *RATT */
+       210, 65, 84, 84,
+       /* WORM */
+       87, 79, 82, 77,
+       /* *SLIM */
+       211, 76, 73, 77,
+       /* SHOV */
+       83, 72, 79, 86,
+       /* BOX */
+       66, 79, 88, 32,
+       /* *CASH */
+       195, 65, 83, 72,
+       /* ROAD */
+       82, 79, 65, 68,
+       /* FORK */
+       70, 79, 82, 75,
+       /* VAIN */
+       86, 65, 73, 78,
+       /* PIAN */
+       80, 73, 65, 78,
+       /* $200 */
+       36, 50, 48, 48,
+       /* GO */
+       71, 79, 32, 32,
+       /* *BOAR */
+       194, 79, 65, 82,
+       /* PATH */
+       80, 65, 84, 72,
+       /* HELL */
+       72, 69, 76, 76,
+       /* HI */
+       72, 73, 32, 32,
+       /* FIEL */
+       70, 73, 69, 76,
+       /* CRYS */
+       67, 82, 89, 83,
+       /* GOLD */
+       71, 79, 76, 68,
+       /* *NUGG */
+       206, 85, 71, 71,
+       /* KEG */
+       75, 69, 71, 32,
+       /* NAIL */
+       78, 65, 73, 76,
+       /* FUSE */
+       70, 85, 83, 69,
+       /* TOPP */
+       84, 79, 80, 80,
+       /* LOBB */
+       76, 79, 66, 66,
+       /* RAVI */
+       82, 65, 86, 73,
+       /* *RIDG */
+       210, 73, 68, 71,
+       /* SHAC */
+       83, 72, 65, 67,
+       /* TRAI */
+       84, 82, 65, 73,
+       /* MOUN */
+       77, 79, 85, 78,
+       /* FLOO */
+       70, 76, 79, 79,
+       /* PLAN */
+       80, 76, 65, 78,
+       /* PELT */
+       80, 69, 76, 84,
+       /* CUP */
+       67, 85, 80, 32,
+       /* BAG */
+       66, 65, 71, 32,
+       /* *DUST */
+       196, 85, 83, 84,
+       /* HAMM */
+       72, 65, 77, 77,
+       /* TEEP */
+       84, 69, 69, 80,
+       /* TOM */
+       84, 79, 77, 32,
+       /* HOW */
+       72, 79, 87, 32,
+       /* NECK */
+       78, 69, 67, 75,
+       /* COUN */
+       67, 79, 85, 78,
+       0,
+};
+const uint8_t automap[] = {
+       /* STRI */
+       83, 84, 82, 73,
+       0,
+       /* SHOV */
+       83, 72, 79, 86,
+       7,
+       /* CRYS */
+       67, 82, 89, 83,
+       8,
+       /* CAND */
+       67, 65, 78, 68,
+       9,
+       /* SULF */
+       83, 85, 76, 70,
+       10,
+       /* CHAR */
+       67, 72, 65, 82,
+       11,
+       /* MATC */
+       77, 65, 84, 67,
+       14,
+       /* COMP */
+       67, 79, 77, 80,
+       19,
+       /* HORS */
+       72, 79, 82, 83,
+       20,
+       /* MANU */
+       77, 65, 78, 85,
+       21,
+       /* BELL */
+       66, 69, 76, 76,
+       22,
+       /* MAP */
+       77, 65, 80, 32,
+       25,
+       /* CAND */
+       67, 65, 78, 68,
+       26,
+       /* BULL */
+       66, 85, 76, 76,
+       27,
+       /* DERR */
+       68, 69, 82, 82,
+       28,
+       /* SIGN */
+       83, 73, 71, 78,
+       30,
+       /* SIGN */
+       83, 73, 71, 78,
+       33,
+       /* SPUR */
+       83, 80, 85, 82,
+       34,
+       /* HAT */
+       72, 65, 84, 32,
+       35,
+       /* KEY */
+       75, 69, 89, 32,
+       37,
+       /* TAPE */
+       84, 65, 80, 69,
+       38,
+       /* GOLD */
+       71, 79, 76, 68,
+       40,
+       /* MATC */
+       77, 65, 84, 67,
+       42,
+       /* SNAK */
+       83, 78, 65, 75,
+       45,
+       /* COIN */
+       67, 79, 73, 78,
+       47,
+       /* WORM */
+       87, 79, 82, 77,
+       48,
+       /* WORM */
+       87, 79, 82, 77,
+       49,
+       /* WIRE */
+       87, 73, 82, 69,
+       53,
+       /* BOX */
+       66, 79, 88, 32,
+       55,
+       /* $200 */
+       36, 50, 48, 48,
+       56,
+       /* GO */
+       71, 79, 32, 32,
+       57,
+       /* KEG */
+       75, 69, 71, 32,
+       59,
+       /* KEG */
+       75, 69, 71, 32,
+       60,
+       /* KEG */
+       75, 69, 71, 32,
+       61,
+       /* NAIL */
+       78, 65, 73, 76,
+       62,
+       /* PLAN */
+       80, 76, 65, 78,
+       66,
+       /* PELT */
+       80, 69, 76, 84,
+       68,
+       /* CUP */
+       67, 85, 80, 32,
+       71,
+       /* BAG */
+       66, 65, 71, 32,
+       72,
+       /* HAMM */
+       72, 65, 77, 77,
+       73,
+       /* TOM */
+       84, 79, 77, 32,
+       76,
+       /* NECK */
+       78, 69, 67, 75,
+       77,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv10.c b/Applications/games/adv10.c
new file mode 100644 (file)
index 0000000..3fc8c8f
--- /dev/null
@@ -0,0 +1,3279 @@
+#define NUM_OBJ 58
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 1;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 34;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+66, 101, 97, 99, 104, 32, 98, 121, 32, 111, 99, 101, 97, 110, 0 };
+const uint8_t loctxt_2[] = {
+66, 101, 97, 99, 104, 32, 98, 121, 32, 111, 99, 101, 97, 110, 44, 32, 97, 32, 99, 108, 105, 102, 102, 32, 116, 111, 119, 101, 114, 115, 32, 111, 118, 101, 114, 10, 119, 101, 115, 116, 32, 101, 110, 100, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 101, 100, 103, 101, 32, 111, 102, 32, 97, 32, 104, 111, 116, 32, 114, 111, 99, 107, 121, 32, 99, 108, 105, 102, 102, 10, 111, 117, 116, 115, 105, 100, 101, 32, 116, 104, 101, 32, 86, 111, 108, 99, 97, 110, 111, 0 };
+const uint8_t loctxt_4[] = {
+66, 101, 97, 99, 104, 32, 98, 121, 32, 111, 99, 101, 97, 110, 0 };
+const uint8_t loctxt_5[] = {
+115, 104, 97, 108, 108, 111, 119, 32, 116, 105, 100, 101, 112, 111, 111, 108, 0 };
+const uint8_t loctxt_6[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 114, 105, 109, 32, 111, 102, 32, 97, 110, 32, 101, 120, 116, 105, 110, 99, 116, 32, 118, 111, 108, 99, 97, 110, 111, 0 };
+const uint8_t loctxt_7[] = {
+108, 97, 114, 103, 101, 32, 112, 108, 97, 105, 110, 0 };
+const uint8_t loctxt_8[] = {
+118, 111, 108, 99, 97, 110, 111, 0 };
+const uint8_t loctxt_9[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 110, 101, 100, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_10[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 111, 112, 32, 111, 102, 32, 116, 104, 101, 32, 104, 101, 97, 100, 44, 32, 111, 102, 102, 115, 104, 111, 114, 101, 32, 73, 32, 115, 101, 101, 32, 97, 110, 32, 97, 116, 111, 108, 108, 0 };
+const uint8_t loctxt_11[] = {
+100, 101, 101, 112, 32, 99, 97, 118, 101, 0 };
+const uint8_t loctxt_12[] = {
+108, 97, 107, 101, 46, 32, 84, 104, 101, 114, 101, 39, 115, 32, 115, 104, 111, 114, 101, 32, 116, 111, 32, 78, 111, 114, 116, 104, 44, 10, 83, 111, 117, 116, 104, 32, 38, 32, 69, 97, 115, 116, 0 };
+const uint8_t loctxt_13[] = {
+42, 73, 39, 109, 32, 97, 98, 111, 118, 101, 32, 116, 104, 101, 32, 108, 97, 107, 101, 32, 98, 111, 116, 116, 111, 109, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 114, 97, 102, 116, 0 };
+const uint8_t loctxt_15[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 97, 116, 111, 108, 108, 0 };
+const uint8_t loctxt_16[] = {
+98, 101, 97, 99, 104, 32, 98, 121, 32, 111, 99, 101, 97, 110, 0 };
+const uint8_t loctxt_17[] = {
+97, 110, 99, 105, 101, 110, 116, 32, 99, 97, 118, 101, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 119, 101, 115, 116, 32, 111, 102, 32, 108, 97, 107, 101, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 115, 101, 99, 108, 117, 100, 101, 100, 32, 108, 101, 100, 103, 101, 10, 111, 110, 32, 118, 111, 108, 99, 97, 110, 111, 39, 115, 32, 119, 97, 108, 108, 0 };
+const uint8_t loctxt_19[] = {
+116, 111, 112, 32, 111, 102, 32, 97, 32, 112, 97, 108, 109, 32, 116, 114, 101, 101, 0 };
+const uint8_t loctxt_20[] = {
+109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_21[] = {
+109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_22[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 110, 101, 100, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_23[] = {
+100, 105, 109, 108, 121, 32, 108, 105, 116, 32, 114, 111, 99, 107, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_24[] = {
+114, 111, 99, 107, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_25[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 99, 97, 118, 101, 115, 0 };
+const uint8_t loctxt_26[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 99, 97, 118, 101, 115, 0 };
+const uint8_t loctxt_27[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 99, 97, 118, 101, 115, 0 };
+const uint8_t loctxt_28[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 99, 97, 118, 101, 115, 0 };
+const uint8_t loctxt_29[] = {
+109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_30[] = {
+115, 109, 97, 108, 108, 32, 109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_31[] = {
+115, 109, 97, 108, 108, 32, 109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_32[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 101, 100, 103, 101, 32, 111, 102, 32, 97, 32, 115, 97, 110, 100, 121, 32, 99, 108, 105, 102, 102, 32, 111, 117, 116, 115, 105, 100, 101, 10, 116, 104, 101, 32, 118, 111, 108, 99, 97, 110, 111, 0 };
+const uint8_t loctxt_33[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 99, 97, 118, 101, 115, 0 };
+const uint8_t loctxt_34[] = {
+108, 111, 116, 32, 111, 102, 32, 116, 114, 111, 117, 98, 108, 101, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 7, 4, 2, 0, 5 } }, 
+               { loctxt_2,  { 0, 0, 1, 0, 0, 0 } }, 
+               { loctxt_3,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 0, 1, 0, 0 } }, 
+               { loctxt_5,  { 0, 1, 0, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 0, 0, 0, 7 } }, 
+               { loctxt_7,  { 1, 0, 0, 0, 0, 0 } }, 
+               { loctxt_8,  { 0, 0, 0, 0, 6, 0 } }, 
+               { loctxt_9,  { 22, 17, 20, 21, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 0, 0, 0, 1 } }, 
+               { loctxt_11,  { 0, 0, 8, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 16, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 12, 0, 0, 0 } }, 
+               { loctxt_19,  { 0, 0, 0, 0, 0, 4 } }, 
+               { loctxt_20,  { 0, 0, 0, 9, 0, 0 } }, 
+               { loctxt_21,  { 0, 0, 9, 0, 0, 0 } }, 
+               { loctxt_22,  { 0, 9, 23, 29, 0, 0 } }, 
+               { loctxt_23,  { 0, 24, 0, 22, 0, 0 } }, 
+               { loctxt_24,  { 23, 0, 0, 0, 0, 0 } }, 
+               { loctxt_25,  { 25, 27, 26, 27, 0, 0 } }, 
+               { loctxt_26,  { 25, 26, 25, 27, 0, 0 } }, 
+               { loctxt_27,  { 28, 26, 27, 25, 0, 0 } }, 
+               { loctxt_28,  { 28, 26, 25, 33, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 22, 0, 0, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_31,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_32,  { 0, 0, 18, 0, 0, 0 } }, 
+               { loctxt_33,  { 28, 27, 26, 25, 0, 17 } }, 
+               { loctxt_34,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       1,
+       0,
+       4,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       11,
+       8,
+       0,
+       11,
+       0,
+       3,
+       5,
+       255,
+       11,
+       1,
+       1,
+       0,
+       0,
+       0,
+       0,
+       7,
+       0,
+       0,
+       11,
+       0,
+       8,
+       0,
+       0,
+       0,
+       0,
+       0,
+       16,
+       17,
+       0,
+       0,
+       19,
+       17,
+       0,
+       0,
+       20,
+       21,
+       11,
+       28,
+       28,
+       29,
+       29,
+       18,
+       17,
+       0,
+       0,
+       24,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+0 };
+const uint8_t objtxt_1[] = {
+83, 97, 110, 100, 0 };
+const uint8_t objtxt_2[] = {
+46, 0 };
+const uint8_t objtxt_3[] = {
+80, 97, 108, 109, 32, 116, 114, 101, 101, 115, 0 };
+const uint8_t objtxt_4[] = {
+83, 117, 114, 108, 121, 32, 112, 105, 114, 97, 116, 101, 32, 119, 97, 105, 116, 105, 110, 103, 32, 102, 111, 114, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t objtxt_5[] = {
+80, 105, 114, 97, 116, 101, 32, 115, 104, 105, 112, 0 };
+const uint8_t objtxt_6[] = {
+66, 111, 116, 116, 108, 101, 32, 111, 102, 32, 82, 117, 109, 0 };
+const uint8_t objtxt_7[] = {
+69, 109, 112, 116, 121, 32, 98, 111, 116, 116, 108, 101, 0 };
+const uint8_t objtxt_8[] = {
+66, 111, 116, 116, 108, 101, 32, 111, 102, 32, 115, 101, 97, 119, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_9[] = {
+71, 108, 111, 119, 105, 110, 103, 32, 112, 108, 97, 115, 116, 105, 99, 32, 98, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_10[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 115, 97, 108, 116, 0 };
+const uint8_t objtxt_11[] = {
+80, 117, 100, 100, 108, 101, 0 };
+const uint8_t objtxt_12[] = {
+70, 105, 115, 104, 32, 98, 111, 110, 101, 115, 0 };
+const uint8_t objtxt_13[] = {
+76, 97, 107, 101, 0 };
+const uint8_t objtxt_14[] = {
+66, 111, 116, 116, 108, 101, 32, 102, 114, 101, 115, 104, 119, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_15[] = {
+78, 97, 116, 117, 114, 97, 108, 32, 115, 116, 111, 110, 101, 32, 98, 97, 115, 105, 110, 0 };
+const uint8_t objtxt_16[] = {
+119, 105, 116, 104, 32, 114, 117, 109, 32, 105, 110, 32, 105, 116, 0 };
+const uint8_t objtxt_17[] = {
+67, 114, 101, 118, 105, 99, 101, 0 };
+const uint8_t objtxt_18[] = {
+87, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_19[] = {
+87, 97, 116, 99, 104, 0 };
+const uint8_t objtxt_20[] = {
+66, 101, 97, 114, 0 };
+const uint8_t objtxt_21[] = {
+76, 97, 114, 103, 101, 32, 115, 116, 111, 110, 101, 32, 104, 101, 97, 100, 0 };
+const uint8_t objtxt_22[] = {
+69, 100, 103, 101, 32, 111, 102, 32, 105, 109, 112, 101, 110, 101, 116, 114, 97, 98, 108, 101, 32, 106, 117, 110, 103, 108, 101, 0 };
+const uint8_t objtxt_23[] = {
+80, 105, 101, 99, 101, 115, 32, 111, 102, 32, 112, 108, 105, 97, 98, 108, 101, 32, 118, 105, 110, 101, 115, 0 };
+const uint8_t objtxt_24[] = {
+76, 97, 114, 103, 101, 32, 107, 110, 105, 102, 101, 0 };
+const uint8_t objtxt_25[] = {
+80, 97, 108, 109, 32, 108, 111, 103, 0 };
+const uint8_t objtxt_26[] = {
+83, 109, 97, 108, 108, 32, 112, 108, 97, 115, 116, 105, 99, 32, 98, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_27[] = {
+69, 120, 116, 105, 110, 99, 116, 32, 118, 111, 108, 99, 97, 110, 111, 0 };
+const uint8_t objtxt_28[] = {
+80, 97, 108, 109, 32, 108, 111, 103, 0 };
+const uint8_t objtxt_29[] = {
+82, 97, 102, 116, 32, 111, 102, 32, 118, 105, 110, 101, 115, 32, 38, 32, 108, 111, 103, 115, 0 };
+const uint8_t objtxt_30[] = {
+67, 114, 101, 118, 105, 99, 101, 0 };
+const uint8_t objtxt_31[] = {
+87, 73, 78, 68, 45, 45, 45, 45, 45, 62, 0 };
+const uint8_t objtxt_32[] = {
+67, 97, 118, 101, 0 };
+const uint8_t objtxt_33[] = {
+83, 119, 101, 97, 116, 0 };
+const uint8_t objtxt_34[] = {
+79, 99, 101, 97, 110, 0 };
+const uint8_t objtxt_35[] = {
+66, 101, 97, 99, 104, 0 };
+const uint8_t objtxt_36[] = {
+84, 105, 100, 101, 112, 111, 111, 108, 0 };
+const uint8_t objtxt_37[] = {
+65, 116, 111, 108, 108, 0 };
+const uint8_t objtxt_38[] = {
+67, 97, 118, 101, 32, 105, 110, 32, 99, 108, 105, 102, 102, 0 };
+const uint8_t objtxt_39[] = {
+80, 114, 105, 109, 105, 116, 118, 101, 32, 99, 97, 118, 101, 32, 100, 114, 97, 119, 105, 110, 103, 115, 0 };
+const uint8_t objtxt_40[] = {
+78, 111, 116, 101, 0 };
+const uint8_t objtxt_41[] = {
+66, 97, 110, 100, 97, 110, 110, 97, 0 };
+const uint8_t objtxt_42[] = {
+67, 111, 99, 111, 110, 117, 116, 115, 0 };
+const uint8_t objtxt_43[] = {
+83, 116, 97, 108, 97, 99, 116, 105, 116, 101, 32, 105, 110, 32, 114, 111, 111, 102, 0 };
+const uint8_t objtxt_44[] = {
+78, 101, 97, 110, 100, 101, 114, 116, 104, 97, 108, 0 };
+const uint8_t objtxt_45[] = {
+67, 114, 101, 118, 105, 99, 101, 32, 105, 110, 32, 114, 111, 99, 107, 0 };
+const uint8_t objtxt_46[] = {
+83, 101, 97, 108, 101, 100, 32, 100, 105, 115, 112, 108, 97, 121, 32, 99, 97, 115, 101, 0 };
+const uint8_t objtxt_47[] = {
+83, 101, 97, 108, 101, 100, 32, 100, 105, 115, 112, 108, 97, 121, 32, 99, 97, 115, 101, 0 };
+const uint8_t objtxt_48[] = {
+68, 97, 114, 107, 32, 111, 112, 101, 110, 105, 110, 103, 0 };
+const uint8_t objtxt_49[] = {
+79, 112, 101, 110, 105, 110, 103, 0 };
+const uint8_t objtxt_50[] = {
+80, 105, 108, 101, 32, 98, 97, 116, 32, 103, 117, 97, 110, 111, 0 };
+const uint8_t objtxt_51[] = {
+70, 111, 114, 99, 101, 32, 102, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_52[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 99, 111, 110, 115, 111, 108, 101, 0 };
+const uint8_t objtxt_53[] = {
+78, 97, 114, 114, 111, 119, 32, 99, 114, 101, 118, 105, 99, 101, 0 };
+const uint8_t objtxt_54[] = {
+68, 97, 114, 107, 32, 111, 112, 101, 110, 105, 110, 103, 32, 105, 110, 32, 114, 111, 111, 102, 0 };
+const uint8_t objtxt_55[] = {
+50, 32, 99, 101, 110, 116, 105, 109, 101, 116, 101, 114, 32, 112, 105, 101, 99, 101, 32, 111, 102, 32, 115, 104, 105, 110, 121, 32, 119, 105, 114, 101, 0 };
+const uint8_t objtxt_56[] = {
+79, 112, 101, 110, 32, 100, 105, 115, 112, 108, 97, 121, 32, 99, 97, 115, 101, 0 };
+const uint8_t objtxt_57[] = {
+65, 108, 105, 101, 110, 32, 109, 97, 99, 104, 105, 110, 101, 114, 121, 0 };
+const uint8_t objtxt_58[] = {
+67, 111, 99, 111, 110, 117, 116, 32, 109, 101, 97, 116, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+79, 75, 0 };
+const uint8_t msgtxt_2[] = {
+83, 111, 97, 107, 115, 32, 105, 110, 116, 111, 32, 103, 114, 111, 117, 110, 100, 46, 0 };
+const uint8_t msgtxt_3[] = {
+69, 109, 112, 116, 121, 63, 0 };
+const uint8_t msgtxt_4[] = {
+71, 101, 116, 32, 108, 105, 113, 117, 105, 100, 0 };
+const uint8_t msgtxt_5[] = {
+71, 101, 116, 116, 105, 110, 103, 32, 100, 97, 114, 107, 0 };
+const uint8_t msgtxt_6[] = {
+83, 117, 110, 115, 101, 116, 0 };
+const uint8_t msgtxt_7[] = {
+73, 32, 104, 101, 97, 114, 32, 99, 97, 110, 110, 111, 110, 32, 111, 102, 102, 115, 104, 111, 114, 101, 0 };
+const uint8_t msgtxt_8[] = {
+77, 121, 32, 98, 111, 110, 101, 115, 32, 97, 99, 104, 101, 0 };
+const uint8_t msgtxt_9[] = {
+72, 117, 114, 114, 105, 99, 97, 110, 101, 32, 65, 108, 101, 120, 105, 115, 32, 104, 105, 116, 115, 32, 105, 115, 108, 97, 110, 100, 0 };
+const uint8_t msgtxt_10[] = {
+83, 116, 111, 114, 109, 32, 112, 97, 115, 115, 101, 100, 0 };
+const uint8_t msgtxt_11[] = {
+115, 116, 111, 114, 109, 32, 108, 105, 102, 116, 115, 32, 109, 101, 32, 111, 117, 116, 32, 116, 111, 32, 115, 101, 97, 0 };
+const uint8_t msgtxt_12[] = {
+73, 39, 118, 101, 32, 98, 101, 101, 110, 32, 104, 101, 114, 101, 32, 0 };
+const uint8_t msgtxt_13[] = {
+109, 111, 118, 101, 115, 0 };
+const uint8_t msgtxt_14[] = {
+66, 101, 97, 114, 32, 115, 109, 101, 108, 108, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 111, 110, 32, 109, 101, 44, 32, 108, 105, 99, 107, 115, 32, 109, 101, 44, 0 };
+const uint8_t msgtxt_15[] = {
+73, 39, 109, 32, 97, 116, 116, 97, 99, 107, 101, 100, 32, 98, 121, 32, 119, 105, 108, 100, 32, 97, 110, 105, 109, 97, 108, 0 };
+const uint8_t msgtxt_16[] = {
+98, 101, 97, 114, 32, 101, 97, 116, 115, 0 };
+const uint8_t msgtxt_17[] = {
+115, 97, 108, 116, 0 };
+const uint8_t msgtxt_18[] = {
+109, 101, 0 };
+const uint8_t msgtxt_19[] = {
+83, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_20[] = {
+78, 111, 116, 32, 116, 105, 108, 108, 0 };
+const uint8_t msgtxt_21[] = {
+73, 32, 99, 97, 110, 0 };
+const uint8_t msgtxt_22[] = {
+103, 111, 32, 116, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_23[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_24[] = {
+97, 32, 98, 101, 97, 114, 0 };
+const uint8_t msgtxt_25[] = {
+97, 115, 104, 32, 105, 115, 32, 108, 111, 111, 115, 101, 44, 32, 73, 32, 115, 108, 105, 100, 101, 32, 100, 111, 119, 110, 0 };
+const uint8_t msgtxt_26[] = {
+73, 32, 115, 104, 97, 119, 100, 97, 32, 112, 105, 99, 107, 101, 100, 32, 97, 110, 111, 116, 104, 101, 114, 32, 112, 114, 111, 102, 102, 101, 115, 105, 111, 110, 33, 0 };
+const uint8_t msgtxt_27[] = {
+84, 114, 121, 0 };
+const uint8_t msgtxt_28[] = {
+70, 97, 114, 32, 98, 101, 108, 111, 119, 0 };
+const uint8_t msgtxt_29[] = {
+97, 32, 99, 97, 118, 101, 0 };
+const uint8_t msgtxt_30[] = {
+97, 116, 32, 115, 101, 97, 32, 108, 101, 118, 101, 108, 0 };
+const uint8_t msgtxt_31[] = {
+110, 111, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_32[] = {
+115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_33[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 49, 48, 58, 32, 34, 83, 65, 86, 65, 71, 69, 32, 73, 83, 76, 65, 78, 68, 44, 32, 80, 97, 114, 116, 32, 73, 34, 10, 98, 121, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 44, 32, 100, 101, 100, 105, 99, 97, 116, 101, 100, 58, 32, 68, 101, 110, 110, 105, 115, 32, 66, 114, 101, 110, 116, 46, 10, 0 };
+const uint8_t msgtxt_34[] = {
+115, 104, 97, 114, 107, 115, 0 };
+const uint8_t msgtxt_35[] = {
+116, 114, 101, 101, 115, 44, 32, 119, 105, 108, 100, 32, 97, 110, 105, 109, 97, 108, 115, 44, 0 };
+const uint8_t msgtxt_36[] = {
+72, 111, 119, 63, 0 };
+const uint8_t msgtxt_37[] = {
+32, 100, 111, 101, 115, 110, 39, 116, 32, 119, 111, 114, 107, 0 };
+const uint8_t msgtxt_38[] = {
+73, 32, 100, 114, 111, 119, 110, 0 };
+const uint8_t msgtxt_39[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_40[] = {
+116, 111, 111, 32, 104, 101, 97, 118, 121, 32, 111, 114, 32, 97, 119, 107, 119, 97, 114, 100, 0 };
+const uint8_t msgtxt_41[] = {
+73, 32, 98, 114, 101, 97, 116, 104, 101, 100, 33, 0 };
+const uint8_t msgtxt_42[] = {
+118, 105, 110, 101, 115, 0 };
+const uint8_t msgtxt_43[] = {
+67, 82, 65, 83, 72, 33, 0 };
+const uint8_t msgtxt_44[] = {
+73, 32, 102, 101, 101, 108, 0 };
+const uint8_t msgtxt_45[] = {
+65, 114, 103, 104, 33, 0 };
+const uint8_t msgtxt_46[] = {
+84, 104, 101, 121, 39, 114, 101, 32, 97, 116, 116, 97, 99, 104, 101, 100, 32, 116, 111, 0 };
+const uint8_t msgtxt_47[] = {
+104, 97, 114, 100, 32, 119, 111, 114, 107, 0 };
+const uint8_t msgtxt_48[] = {
+109, 97, 107, 101, 115, 32, 109, 101, 32, 110, 101, 114, 118, 111, 117, 115, 0 };
+const uint8_t msgtxt_49[] = {
+114, 101, 115, 101, 109, 98, 108, 101, 115, 0 };
+const uint8_t msgtxt_50[] = {
+87, 105, 101, 114, 100, 33, 0 };
+const uint8_t msgtxt_51[] = {
+72, 97, 114, 100, 32, 116, 111, 32, 115, 116, 101, 101, 114, 32, 116, 104, 105, 115, 32, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_52[] = {
+73, 116, 115, 32, 99, 111, 109, 105, 110, 103, 32, 97, 112, 97, 114, 116, 0 };
+const uint8_t msgtxt_53[] = {
+63, 0 };
+const uint8_t msgtxt_54[] = {
+108, 101, 100, 103, 101, 32, 105, 110, 32, 116, 104, 101, 32, 119, 97, 108, 108, 32, 111, 102, 32, 116, 104, 101, 32, 118, 111, 108, 99, 97, 110, 111, 0 };
+const uint8_t msgtxt_55[] = {
+108, 111, 111, 107, 32, 115, 105, 99, 107, 108, 121, 0 };
+const uint8_t msgtxt_56[] = {
+78, 111, 116, 32, 115, 97, 102, 101, 0 };
+const uint8_t msgtxt_57[] = {
+73, 39, 109, 32, 116, 111, 111, 32, 98, 105, 103, 0 };
+const uint8_t msgtxt_58[] = {
+77, 111, 114, 110, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_59[] = {
+10, 67, 111, 110, 103, 114, 97, 116, 115, 33, 0 };
+const uint8_t msgtxt_60[] = {
+98, 101, 97, 114, 32, 112, 97, 119, 115, 32, 103, 114, 111, 117, 110, 100, 32, 38, 32, 119, 104, 105, 110, 101, 115, 0 };
+const uint8_t msgtxt_61[] = {
+85, 70, 79, 32, 108, 97, 110, 100, 105, 110, 103, 32, 97, 109, 111, 110, 103, 32, 100, 105, 110, 111, 115, 97, 117, 114, 115, 32, 38, 32, 112, 105, 99, 116, 117, 114, 101, 32, 111, 102, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_62[] = {
+97, 115, 32, 112, 105, 114, 97, 116, 101, 32, 116, 97, 107, 101, 115, 32, 105, 116, 32, 104, 105, 115, 32, 98, 97, 110, 100, 97, 110, 110, 97, 32, 102, 97, 108, 108, 115, 32, 111, 102, 102, 10, 73, 32, 115, 101, 101, 32, 104, 101, 32, 104, 97, 115, 32, 97, 110, 116, 101, 110, 110, 97, 115, 10, 72, 101, 32, 100, 114, 111, 112, 115, 32, 97, 32, 110, 111, 116, 101, 44, 32, 108, 101, 97, 118, 105, 110, 103, 32, 99, 104, 111, 114, 116, 108, 105, 110, 103, 0 };
+const uint8_t msgtxt_63[] = {
+78, 111, 116, 101, 32, 115, 97, 121, 115, 58, 10, 34, 87, 104, 97, 116, 32, 119, 97, 115, 44, 32, 109, 117, 115, 116, 32, 98, 101, 44, 10, 115, 111, 32, 115, 101, 110, 100, 32, 116, 104, 105, 115, 32, 110, 111, 116, 101, 32, 119, 101, 10, 116, 111, 32, 116, 101, 108, 108, 32, 121, 111, 117, 32, 97, 32, 119, 111, 114, 100, 39, 115, 32, 102, 114, 101, 101, 33, 34, 0 };
+const uint8_t msgtxt_64[] = {
+115, 97, 108, 116, 121, 0 };
+const uint8_t msgtxt_65[] = {
+73, 39, 109, 32, 97, 32, 98, 111, 116, 116, 108, 101, 32, 98, 97, 98, 121, 0 };
+const uint8_t msgtxt_66[] = {
+116, 111, 32, 109, 111, 118, 101, 32, 105, 110, 32, 104, 117, 114, 114, 105, 99, 97, 110, 101, 0 };
+const uint8_t msgtxt_67[] = {
+73, 39, 109, 32, 116, 114, 101, 97, 100, 105, 110, 103, 32, 119, 97, 116, 101, 114, 0 };
+const uint8_t msgtxt_68[] = {
+99, 97, 118, 101, 109, 97, 110, 32, 115, 97, 121, 115, 0 };
+const uint8_t msgtxt_69[] = {
+73, 32, 104, 105, 116, 32, 115, 116, 111, 110, 101, 32, 119, 105, 116, 104, 0 };
+const uint8_t msgtxt_70[] = {
+105, 116, 0 };
+const uint8_t msgtxt_71[] = {
+119, 111, 110, 39, 116, 32, 98, 117, 100, 103, 101, 0 };
+const uint8_t msgtxt_72[] = {
+99, 97, 118, 101, 109, 97, 110, 0 };
+const uint8_t msgtxt_73[] = {
+105, 116, 115, 32, 104, 105, 110, 103, 101, 100, 32, 97, 116, 32, 116, 111, 112, 33, 0 };
+const uint8_t msgtxt_74[] = {
+84, 89, 114, 97, 110, 111, 115, 97, 117, 114, 117, 115, 0 };
+const uint8_t msgtxt_75[] = {
+114, 101, 112, 108, 105, 99, 97, 32, 102, 117, 108, 108, 32, 115, 105, 122, 101, 100, 33, 32, 84, 104, 101, 114, 101, 39, 115, 32, 98, 117, 116, 116, 111, 110, 32, 97, 116, 32, 98, 111, 116, 116, 111, 109, 0 };
+const uint8_t msgtxt_76[] = {
+103, 108, 111, 119, 115, 0 };
+const uint8_t msgtxt_77[] = {
+98, 117, 116, 116, 111, 110, 44, 32, 100, 105, 97, 108, 115, 44, 32, 108, 101, 118, 101, 114, 115, 0 };
+const uint8_t msgtxt_78[] = {
+98, 101, 97, 99, 104, 32, 51, 32, 109, 101, 116, 101, 114, 115, 32, 98, 101, 108, 111, 119, 0 };
+const uint8_t msgtxt_79[] = {
+68, 111, 110, 39, 116, 32, 98, 101, 32, 34, 89, 69, 83, 34, 32, 109, 97, 110, 46, 32, 68, 111, 32, 105, 116, 32, 121, 111, 117, 114, 115, 101, 108, 102, 33, 0 };
+const uint8_t msgtxt_80[] = {
+97, 32, 104, 111, 108, 101, 0 };
+const uint8_t msgtxt_81[] = {
+89, 85, 67, 75, 33, 0 };
+const uint8_t msgtxt_82[] = {
+77, 101, 116, 97, 108, 108, 105, 99, 32, 118, 111, 105, 99, 101, 32, 119, 104, 105, 115, 112, 101, 114, 115, 32, 105, 110, 32, 109, 121, 32, 109, 105, 110, 100, 58, 0 };
+const uint8_t msgtxt_83[] = {
+34, 86, 79, 67, 65, 76, 73, 90, 69, 32, 80, 65, 83, 83, 87, 79, 82, 68, 32, 80, 76, 69, 65, 83, 69, 34, 0 };
+const uint8_t msgtxt_84[] = {
+34, 82, 69, 65, 68, 89, 34, 0 };
+const uint8_t msgtxt_85[] = {
+112, 117, 115, 104, 101, 115, 32, 98, 117, 116, 116, 111, 110, 0 };
+const uint8_t msgtxt_86[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 98, 108, 105, 110, 100, 105, 110, 103, 32, 102, 108, 97, 115, 104, 32, 102, 114, 111, 109, 32, 70, 111, 114, 99, 101, 32, 70, 105, 101, 108, 100, 0 };
+const uint8_t msgtxt_87[] = {
+83, 109, 105, 108, 101, 115, 32, 38, 32, 112, 111, 105, 110, 116, 115, 32, 97, 116, 32, 109, 101, 32, 116, 104, 101, 110, 32, 116, 104, 101, 32, 102, 111, 114, 99, 101, 32, 102, 105, 101, 108, 100, 0 };
+const uint8_t msgtxt_88[] = {
+99, 97, 115, 101, 32, 111, 112, 101, 110, 115, 46, 32, 73, 116, 115, 32, 97, 108, 105, 118, 101, 33, 0 };
+const uint8_t msgtxt_89[] = {
+73, 39, 109, 32, 100, 105, 110, 111, 115, 97, 117, 114, 32, 115, 110, 97, 99, 107, 33, 0 };
+const uint8_t msgtxt_90[] = {
+110, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_91[] = {
+105, 116, 115, 32, 97, 110, 32, 97, 108, 105, 101, 110, 32, 115, 99, 114, 105, 112, 116, 33, 0 };
+const uint8_t msgtxt_92[] = {
+80, 105, 101, 99, 101, 32, 119, 105, 114, 101, 32, 109, 105, 115, 115, 105, 110, 103, 32, 102, 114, 111, 109, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_93[] = {
+116, 114, 105, 112, 112, 101, 100, 32, 38, 32, 102, 101, 108, 108, 33, 0 };
+const uint8_t msgtxt_94[] = {
+73, 102, 32, 121, 111, 117, 32, 108, 105, 107, 101, 32, 116, 111, 32, 107, 105, 108, 108, 32, 109, 111, 110, 115, 116, 101, 114, 115, 32, 112, 108, 97, 121, 32, 34, 77, 65, 67, 69, 83, 32, 38, 32, 77, 65, 71, 73, 67, 34, 33, 0 };
+const uint8_t msgtxt_95[] = {
+73, 32, 100, 114, 111, 112, 112, 101, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_96[] = {
+0 };
+const uint8_t msgtxt_97[] = {
+0 };
+const uint8_t msgtxt_98[] = {
+0 };
+const uint8_t msgtxt_99[] = {
+71, 108, 111, 119, 105, 110, 103, 32, 115, 105, 103, 110, 32, 97, 112, 112, 101, 97, 114, 115, 58, 32, 34, 83, 65, 86, 69, 32, 84, 72, 73, 83, 32, 80, 65, 83, 83, 87, 79, 82, 68, 32, 70, 79, 82, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 32, 49, 49, 58, 34, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+       msgtxt_92,
+       msgtxt_93,
+       msgtxt_94,
+       msgtxt_95,
+       msgtxt_96,
+       msgtxt_97,
+       msgtxt_98,
+       msgtxt_99,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   moves*/
+       164, 
+       0, 1, 
+       82, 
+/* AUTO  10    evaporate*/
+       141, 10, 
+       13, 11, 0, 11, 9, 2, 
+       59, 73, 
+/* AUTO  0     salt*/
+       209, 
+       8, 1, 0, 10, 0, 3, 0, 1, 
+       62, 60, 
+/* AUTO  100   WIND*/
+       180, 
+       8, 4, 5, 31, 9, 17, 9, 18, 7, 13, 
+       73, 
+/* AUTO  0     */
+       196, 
+       0, 31, 
+       53, 
+/* AUTO  100   start*/
+       179, 
+       9, 3, 0, 3, 0, 250, 0, 1, 
+       58, 73, 79, 81, 
+/* AUTO  0     */
+       211, 
+       0, 70, 0, 2, 32, 44, 0, 3, 
+       79, 81, 79, 81, 
+/* AUTO  0     */
+       194, 
+       79, 77, 33, 
+/* AUTO  0     FORCE ROOM*/
+       203, 
+       0, 30, 0, 1, 
+       54, 80, 54, 76, 
+/* AUTO  100   NO TREAD*/
+       168, 
+       7, 12, 0, 14, 
+       60, 
+/* AUTO  100   night?*/
+       166, 
+       0, 1, 
+       81, 77, 73, 
+/* AUTO  0     */
+       208, 
+       15, 30, 9, 2, 9, 17, 9, 18, 
+       5, 
+/* AUTO  0     nite!*/
+       215, 
+       15, 0, 0, 2, 9, 2, 9, 17, 9, 18, 
+       58, 6, 56, 76, 
+/* AUTO  0     */
+       202, 
+       0, 1, 0, 3, 
+       81, 81, 77, 
+/* AUTO  0     pirate here*/
+       214, 
+       15, 0, 0, 5, 0, 15, 9, 6, 0, 6, 
+       62, 7, 58, 
+/* AUTO  0     hurricane*/
+       202, 
+       0, 3, 0, 2, 
+       81, 81, 77, 
+/* AUTO  0     HURR COMING*/
+       212, 
+       15, 15, 16, 0, 9, 4, 7, 13, 9, 19, 
+       8, 
+/* AUTO  0     HUR HITS*/
+       214, 
+       9, 4, 15, 0, 0, 4, 0, 85, 9, 19, 
+       9, 58, 79, 
+/* AUTO  0     HURR PAS*/
+       214, 
+       8, 4, 15, 50, 0, 4, 0, 19, 8, 5, 
+       60, 58, 10, 
+/* AUTO  0     HURR 2 LONG*/
+       211, 
+       8, 4, 15, 0, 2, 31, 7, 3, 
+       106, 116, 11, 61, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+/* AUTO  100   NO TREAD*/
+       168, 
+       1, 25, 0, 14, 
+       60, 
+/* AUTO  100   NO TREAD*/
+       168, 
+       1, 28, 0, 14, 
+       60, 
+/* AUTO  100   PIRATE HERE*/
+       176, 
+       13, 5, 14, 4, 0, 4, 0, 15, 
+       62, 
+/* AUTO  0     .*/
+/* AUTO  100   BEAR SALT*/
+       179, 
+       2, 10, 2, 20, 0, 10, 0, 5, 
+       59, 58, 16, 17, 
+/* AUTO  30    BEAR ATTACKS*/
+       143, 30, 
+       2, 20, 9, 5, 1, 33, 
+       14, 16, 18, 61, 
+/* AUTO  40    CAVEMEN BUTT*/
+       143, 40, 
+       2, 52, 8, 22, 2, 44, 
+       122, 135, 137, 136, 
+/* AUTO  40    BEAR COMES*/
+       141, 40, 
+       4, 8, 3, 10, 0, 20, 
+       53, 14, 
+/* AUTO  10    MOVE BEAR*/
+       140, 10, 
+       0, 20, 0, 8, 9, 4, 
+       62, 
+/* AUTO  40    MOVE BEAR*/
+       144, 40, 
+       8, 18, 7, 17, 0, 20, 5, 20, 
+       53, 
+/* AUTO  35    MOVE BEAR*/
+       140, 35, 
+       0, 20, 0, 11, 8, 4, 
+       62, 
+/* AUTO  100   HOLD BREATHE*/
+       170, 
+       8, 7, 0, 4, 
+       81, 77, 73, 
+/* AUTO  0     WARNIGN AIR*/
+       196, 
+       15, 2, 
+       45, 
+/* AUTO  0     */
+       201, 
+       15, 0, 0, 7, 
+       60, 41, 
+/* AUTO  0     */
+       196, 
+       0, 4, 
+       81, 
+/* AUTO  0     .*/
+/* AUTO  100   DROP LOG*/
+       174, 
+       1, 28, 1, 25, 0, 28, 
+       19, 40, 53, 
+/* AUTO  25    TREE DOWN*/
+       149, 25, 
+       8, 4, 0, 25, 0, 4, 14, 25, 14, 29, 
+       62, 43, 
+/* AUTO  100   WIN GAME*/
+       177, 
+       4, 30, 0, 23, 8, 22, 13, 44, 
+       58, 122, 
+/* AUTO  100   WIN GAME*/
+       177, 
+       4, 31, 0, 23, 8, 22, 13, 44, 
+       58, 122, 
+/* AUTO  100   WIN GAME*/
+       167, 
+       8, 23, 
+       135, 136, 149, 73, 
+/* AUTO  0     NO BAND*/
+       203, 
+       12, 41, 32, 218, 
+       79, 78, 109, 63, 
+/* AUTO  0     GOT BAND*/
+       203, 
+       3, 41, 0, 123, 
+       79, 78, 109, 63, 
+/* AUTO  100   RAFT LASTING*/
+       170, 
+       8, 10, 0, 5, 
+       81, 77, 73, 
+/* AUTO  0     */
+       196, 
+       15, 10, 
+       102, 
+/* AUTO  0     */
+       199, 
+       15, 0, 
+       43, 34, 15, 61, 
+/* AUTO  0     */
+       196, 
+       0, 5, 
+       81, 
+/* AUTO  30    NERVOUS*/
+       142, 30, 
+       2, 20, 0, 33, 9, 5, 
+       24, 48, 52, 
+/* AUTO  15    RAFT ATOL*/
+       142, 15, 
+       8, 10, 0, 10, 0, 37, 
+       60, 53, 76, 
+/* AUTO  40    RAFT TIDEPOOL*/
+       142, 40, 
+       8, 10, 0, 10, 0, 36, 
+       60, 53, 76, 
+/* AUTO  30    RAFT BEACH*/
+       142, 30, 
+       8, 10, 0, 10, 0, 35, 
+       60, 53, 76, 
+/* AUTO  100   RAFT OCEAN*/
+       174, 
+       8, 10, 0, 10, 0, 34, 
+       60, 53, 76, 
+/* AUTO  2     TREE DOWN*/
+       149, 2, 
+       8, 4, 0, 28, 0, 4, 14, 28, 14, 29, 
+       62, 43, 
+/* AUTO  100   PIRATE RUM*/
+       183, 
+       2, 6, 2, 4, 0, 40, 0, 6, 0, 41, 
+       72, 73, 53, 112, 
+/* AUTO  0     */
+       201, 
+       0, 4, 0, 5, 
+       59, 59, 
+/* AUTO  5     STORM DEAD*/
+       147, 5, 
+       8, 4, 6, 28, 2, 31, 6, 25, 
+       106, 116, 11, 61, 
+/* AUTO  100   NO LOG*/
+       176, 
+       4, 12, 10, 0, 6, 25, 6, 28, 
+       73, 
+/* AUTO  0     DROWN*/
+       203, 
+       8, 14, 0, 13, 
+       39, 40, 54, 76, 
+/* AUTO  0     TREADING*/
+       203, 
+       9, 14, 0, 14, 
+       58, 117, 39, 40, 
+/* AUTO  100   WIND GONE*/
+       172, 
+       9, 4, 13, 31, 0, 31, 
+       59, 
+/* AUTO  100   DARK ROOM*/
+       165, 
+       4, 24, 
+       56, 76, 
+/* AUTO  100   LITE ROOM*/
+       165, 
+       4, 23, 
+       57, 76, 
+/* AUTO  100   LITE TUNNELS*/
+       165, 
+       4, 9, 
+       57, 76, 
+/* AUTO  100   OUT TUNLS LITE*/
+       178, 
+       4, 17, 0, 17, 0, 18, 9, 2, 
+       60, 60, 57, 
+/* AUTO  100   LEFT CAVES*/
+       168, 
+       4, 8, 0, 18, 
+       60, 
+/* AUTO  100   OUT TUNLS DARK*/
+       179, 
+       4, 17, 0, 17, 0, 18, 8, 2, 
+       60, 60, 56, 76, 
+/* AUTO  100   MAN FOLLOWS*/
+       181, 
+       13, 44, 5, 44, 0, 44, 7, 30, 7, 31, 
+       53, 76, 
+/* AUTO  40    CAVEMAN NO GO*/
+       143, 40, 
+       2, 52, 2, 44, 9, 22, 
+       122, 135, 73, 132, 
+/* AUTO  0     .*/
+       195, 
+       133, 118, 45, 140, 
+/* AUTO  100   DINO SNACK*/
+       169, 
+       8, 25, 14, 47, 
+       139, 61, 
+/* AUTO  100   MAN OUT*/
+       176, 
+       8, 25, 14, 46, 14, 44, 0, 44, 
+       53, 
+/* AUTO  100   ONE MOVE OK*/
+       173, 
+       8, 24, 0, 25, 0, 24, 
+       58, 60, 
+/* AUTO  100   DEAD CAVE*/
+       169, 
+       4, 33, 12, 9, 
+       143, 61, 
+/* AUTO  100   NO TREAD*/
+       172, 
+       4, 12, 11, 0, 0, 14, 
+       60, 
+/* AUTO  0     .*/
+/* AUTO  100   LAKE WATCH*/
+       176, 
+       4, 12, 2, 19, 0, 19, 0, 13, 
+       62, 
+/* AUTO  100   LAKE KNIFE*/
+       176, 
+       4, 12, 2, 24, 0, 24, 0, 13, 
+       62, 
+/* AUTO  100   LAKE BOTTLE*/
+       176, 
+       4, 12, 2, 6, 0, 6, 0, 13, 
+       62, 
+/* AUTO  100   LAKE SALT*/
+       172, 
+       4, 12, 3, 10, 0, 10, 
+       59, 
+/* AUTO  100   BLOCK GLOWS*/
+       175, 
+       13, 9, 0, 7, 0, 26, 
+       81, 77, 59, 73, 
+/* AUTO  0     BURNT OUT*/
+       205, 
+       15, 0, 0, 9, 0, 26, 
+       72, 76, 
+/* AUTO  0     */
+       196, 
+       0, 7, 
+       81, 
+/* AUTO  100   FORCE LOG*/
+       181, 
+       14, 29, 8, 19, 14, 25, 0, 25, 0, 4, 
+       62, 43, 
+/* AUTO  100   FORCE LOG*/
+       181, 
+       14, 29, 8, 19, 14, 28, 0, 28, 0, 4, 
+       62, 43, 
+/* AUTO  100   SLIP ASH*/
+       171, 
+       4, 6, 8, 12, 
+       88, 88, 88, 73, 
+/* AUTO  0     SLIP ASH*/
+       199, 
+       0, 8, 
+       19, 25, 54, 76, 
+/* AUTO  0     DROP LOG OUTSIDE*/
+       211, 
+       1, 28, 0, 28, 0, 7, 8, 28, 
+       47, 145, 62, 76, 
+/* AUTO  0     */
+       211, 
+       1, 25, 0, 25, 0, 7, 8, 28, 
+       47, 145, 62, 76, 
+/* AUTO  100   OUTSIDE VOLCANO*/
+       168, 
+       4, 7, 0, 28, 
+       60, 
+/* AUTO  100   INSIDE VOLCANO*/
+       168, 
+       4, 8, 0, 28, 
+       58, 
+/* AUTO  100   LAKE BOTTLE*/
+       176, 
+       4, 12, 2, 14, 0, 14, 0, 13, 
+       62, 
+/* AUTO  100   DROWN LAKE*/
+       169, 
+       4, 13, 9, 7, 
+       38, 61, 
+/* AUTO  100   WIND*/
+       176, 
+       4, 8, 8, 4, 0, 31, 5, 31, 
+       53, 
+/* AUTO  100   END GAME*/
+       175, 
+       4, 34, 0, 20, 0, 44, 
+       59, 59, 76, 63, 
+};
+const uint8_t actions[] = {
+/* LOOK  CLIF  */
+       7, 30, 22, 
+       4, 3, 
+       28, 23, 29, 30, 
+/* GO    RAFT  STORM DEAD*/
+       9, 1, 36, 
+       8, 4, 2, 29, 
+       11, 61, 
+/* LOOK  DOWN  */
+       7, 30, 6, 
+       4, 3, 
+       28, 23, 29, 30, 
+/* GO    HEAD  */
+       10, 1, 19, 
+       3, 21, 0, 10, 
+       1, 54, 76, 
+/* LOOK  OCEA  */
+       2, 30, 25, 
+       1, 23, 34, 
+/* LOOK  JUNG  */
+       7, 30, 26, 
+       2, 22, 
+       1, 23, 35, 73, 
+/* AUTO  0     */
+       196, 
+       14, 23, 
+       42, 
+/* CUT   VINE  */
+       17, 38, 27, 
+       2, 22, 14, 23, 0, 23, 3, 24, 
+       1, 53, 
+/* INVE  ANY   */
+       0, 44, 0, 
+       66, 
+/* GET   INVE  */
+       0, 10, 28, 
+       66, 
+/* GO    LEDG  */
+       14, 1, 34, 
+       4, 12, 0, 18, 9, 14, 
+       1, 54, 76, 
+/* SWIM  WEST  */
+       14, 46, 4, 
+       4, 12, 9, 14, 0, 18, 
+       1, 54, 76, 
+/* SWIM  DOWN  */
+       18, 46, 6, 
+       4, 12, 0, 13, 6, 28, 6, 25, 
+       1, 54, 76, 
+/* GET   BREA  */
+       15, 10, 31, 
+       7, 13, 0, 7, 0, 4, 
+       1, 58, 81, 73, 
+/* AUTO  0     */
+       201, 
+       0, 7, 0, 4, 
+       79, 81, 
+/* PET   BEAR  */
+       11, 54, 58, 
+       2, 20, 9, 5, 
+       1, 14, 15, 61, 
+/* PET   BEAR  */
+       8, 54, 58, 
+       2, 20, 8, 5, 
+       1, 
+/* GET   OUT   */
+       6, 10, 33, 
+       4, 8, 
+       19, 25, 26, 
+/* SWIM  DOWN  */
+       6, 46, 6, 
+       4, 12, 
+       103, 19, 66, 
+/* WITH  KNIF  */
+       21, 51, 41, 
+       3, 42, 3, 24, 8, 27, 0, 42, 0, 58, 
+       72, 1, 
+/* SWIM  UP    */
+       10, 46, 5, 
+       4, 13, 0, 12, 
+       1, 54, 76, 
+/* SWIM  EAST  */
+       15, 46, 3, 
+       4, 13, 0, 26, 14, 26, 
+       1, 23, 39, 53, 
+/* SWIM  NORTH */
+       15, 46, 1, 
+       4, 13, 0, 24, 14, 24, 
+       1, 23, 39, 53, 
+/* OPEN  COCO  */
+       9, 81, 68, 
+       3, 42, 0, 27, 
+       36, 58, 
+/* SWIM  ANY   */
+       4, 46, 0, 
+       4, 13, 
+       1, 
+/* GO    VOLC  */
+       15, 1, 50, 
+       2, 27, 0, 6, 0, 33, 
+       47, 54, 76, 52, 
+/* GO    OCEA  */
+       19, 1, 25, 
+       7, 8, 7, 11, 7, 12, 7, 13, 
+       1, 15, 34, 61, 
+/* BUIL  RAFT  .*/
+       17, 49, 36, 
+       3, 23, 3, 28, 3, 25, 3, 24, 
+       1, 73, 
+/* AUTO  0     */
+       211, 
+       0, 29, 0, 23, 0, 28, 0, 25, 
+       53, 59, 59, 59, 
+/* AUTO  0     BUILT RITE*/
+       209, 
+       4, 5, 0, 36, 0, 14, 0, 11, 
+       62, 58, 
+/* AUTO  0     SET MOVES*/
+       206, 
+       0, 5, 0, 25, 0, 5, 
+       81, 79, 81, 
+/* ASK   FREE  */
+       15, 72, 51, 
+       2, 52, 0, 22, 9, 22, 
+       85, 132, 134, 58, 
+/* QUIT  ANY   */
+       0, 42, 0, 
+       63, 
+/* WAIT  ANY   */
+       15, 57, 0, 
+       0, 1, 0, 50, 0, 1, 
+       81, 83, 81, 73, 
+/* AUTO  0     */
+       211, 
+       0, 3, 0, 50, 0, 3, 0, 2, 
+       81, 83, 81, 81, 
+/* AUTO  0     */
+       206, 
+       0, 50, 0, 2, 0, 50, 
+       83, 81, 82, 
+/* WITH  HAND  DIG*/
+       18, 51, 29, 
+       2, 1, 8, 20, 0, 20, 0, 21, 
+       1, 60, 58, 
+/* GO    CREV  */
+       15, 1, 38, 
+       2, 30, 0, 3, 0, 18, 
+       1, 54, 76, 60, 
+/* GO    CAVE  */
+       15, 1, 39, 
+       2, 32, 0, 11, 0, 18, 
+       1, 54, 76, 58, 
+/* GO    RAFT  */
+       14, 1, 36, 
+       2, 29, 0, 14, 8, 11, 
+       1, 54, 76, 
+/* GET   VINE  */
+       9, 10, 27, 
+       3, 23, 0, 23, 
+       1, 52, 
+/* GET   VINE  */
+       6, 10, 27, 
+       2, 22, 
+       19, 46, 35, 
+/* LOOK  HEAD  */
+       7, 30, 19, 
+       3, 21, 
+       1, 49, 18, 50, 
+/* PADD  ANY   */
+       14, 79, 0, 
+       8, 11, 4, 14, 0, 10, 
+       51, 58, 73, 
+/* AUTO  0     */
+       211, 
+       0, 37, 0, 34, 0, 35, 0, 36, 
+       59, 59, 59, 59, 
+/* AUTO  0     */
+       202, 
+       0, 5, 0, 5, 
+       81, 77, 81, 
+/* PADD  ANY   */
+       0, 79, 0, 
+       36, 
+/* GO    BEAC  */
+       15, 1, 61, 
+       2, 35, 0, 16, 0, 29, 
+       1, 54, 53, 76, 
+/* GO    ATOL  */
+       15, 1, 60, 
+       2, 37, 0, 15, 0, 29, 
+       1, 54, 53, 76, 
+/* GO    TIDE  */
+       15, 1, 52, 
+       2, 36, 0, 5, 0, 29, 
+       1, 54, 53, 76, 
+/* GO    CAVE  */
+       10, 1, 39, 
+       2, 38, 0, 17, 
+       1, 54, 76, 
+/* LOOK  WEST  */
+       6, 30, 4, 
+       4, 12, 
+       1, 23, 104, 
+/* WITH  HAND  */
+       11, 51, 29, 
+       4, 32, 0, 20, 
+       1, 60, 31, 32, 
+/* SLEE  ANY   */
+       19, 63, 0, 
+       4, 18, 0, 2, 0, 1, 0, 170, 
+       60, 81, 79, 73, 
+/* AUTO  0     */
+       199, 
+       0, 1, 
+       81, 88, 88, 88, 
+/* AUTO  0     HURR SLEEP*/
+       198, 
+       8, 4, 
+       106, 11, 61, 
+/* AUTO  0     */
+       194, 
+       57, 108, 76, 
+/* GO    BASI  */
+       5, 1, 32, 
+       2, 15, 
+       19, 107, 
+/* SLEE  ANY   */
+       6, 63, 0, 
+       7, 18, 
+       106, 15, 61, 
+/* JUMP  ANY   */
+       5, 61, 0, 
+       4, 3, 
+       1, 61, 
+/* GO    SHIP  */
+       2, 1, 11, 
+       19, 20, 109, 
+/* FILL  HOLE  */
+       9, 45, 37, 
+       2, 2, 0, 2, 
+       1, 59, 
+/* WITH  HAND  DIG GUANO*/
+       23, 51, 29, 
+       8, 20, 2, 50, 14, 55, 0, 55, 0, 20, 
+       53, 60, 1, 131, 
+/* JUMP  ANY   */
+       10, 61, 0, 
+       4, 32, 0, 2, 
+       1, 54, 76, 
+/* AUTO  0     */
+/* DROP  RUM   */
+       0, 18, 9, 
+       3, 
+/* LOOK  DRAW  */
+       7, 30, 62, 
+       2, 39, 
+       1, 23, 111, 50, 
+/* LOOK  NOTE  */
+       5, 30, 66, 
+       3, 40, 
+       1, 113, 
+/* DRIN  RUM   */
+       4, 68, 9, 
+       3, 6, 
+       1, 
+/* DRIN  WATE  */
+       6, 68, 55, 
+       3, 8, 
+       1, 45, 114, 
+/* DRIN  SWEA  */
+       6, 68, 59, 
+       3, 33, 
+       1, 45, 114, 
+/* DRIN  WATE  */
+       4, 68, 55, 
+       3, 14, 
+       1, 
+/* YOHO  ANY   SAVE GAME*/
+       1, 78, 0, 
+       1, 71, 
+/* GO    TREE  */
+       10, 1, 16, 
+       2, 3, 0, 19, 
+       1, 54, 76, 
+/* SAVE  GAME  */
+       5, 41, 57, 
+       9, 4, 
+       1, 71, 
+/* SWIM  ANY   */
+       4, 46, 0, 
+       4, 5, 
+       1, 
+/* SWIM  ANY   */
+       19, 46, 0, 
+       4, 12, 10, 0, 6, 28, 6, 25, 
+       39, 40, 38, 61, 
+/* LOOK  BEAR  */
+       8, 30, 58, 
+       2, 20, 9, 5, 
+       105, 
+/* TREA  WATE  */
+       9, 71, 55, 
+       4, 12, 0, 14, 
+       60, 1, 
+/* SWIM  ANY   OUT LAKE*/
+       10, 46, 0, 
+       4, 12, 0, 8, 
+       1, 54, 76, 
+/* ASK   ANY   */
+       7, 72, 0, 
+       2, 44, 
+       1, 85, 118, 45, 
+/* GET   STAL  */
+       4, 10, 42, 
+       2, 43, 
+       36, 
+/* WITH  COCO  */
+       15, 51, 68, 
+       2, 43, 14, 45, 1, 42, 
+       119, 120, 120, 73, 
+/* AUTO  0     HIT STAL*/
+       199, 
+       0, 45, 
+       13, 23, 39, 53, 
+/* GO    CREV  */
+       15, 1, 38, 
+       2, 45, 0, 9, 0, 17, 
+       1, 54, 76, 58, 
+/* LOOK  CASE  */
+       11, 30, 69, 
+       2, 46, 14, 44, 
+       1, 23, 122, 125, 
+/* LOOK  STAL  */
+       6, 30, 42, 
+       2, 43, 
+       50, 23, 123, 
+/* LOOK  CASE  */
+       7, 30, 69, 
+       2, 47, 
+       1, 23, 124, 125, 
+/* LOOK  META  */
+       1, 30, 44, 
+       120, 126, 
+/* LOOK  CONS  */
+       6, 30, 74, 
+       2, 52, 
+       1, 23, 127, 
+/* LOOK  HOLE  */
+       23, 30, 37, 
+       8, 21, 9, 9, 0, 9, 0, 6, 2, 1, 
+       23, 58, 53, 39, 
+/* WITH  COCO  */
+       19, 51, 68, 
+       2, 43, 13, 45, 1, 42, 0, 45, 
+       119, 120, 13, 59, 
+/* WITH  WIRE  */
+       22, 51, 20, 
+       9, 26, 2, 57, 3, 55, 0, 55, 0, 26, 
+       1, 59, 58, 
+/* WITH  HAND  DIG GUANO*/
+       15, 51, 29, 
+       8, 20, 2, 50, 0, 20, 
+       60, 23, 31, 32, 
+/* OPEN  ANY   */
+       0, 81, 0, 
+       36, 
+/* KILL  ANY   */
+       1, 59, 0, 
+       19, 144, 
+/* PET   ANY   */
+       2, 54, 0, 
+       44, 31, 32, 
+/* WITH  ANY   */
+       11, 51, 0, 
+       0, 20, 0, 27, 
+       60, 84, 37, 60, 
+/* GO    RAFT  BAD BUILT*/
+       11, 1, 36, 
+       2, 29, 9, 11, 
+       19, 120, 121, 63, 
+/* DIG   ANY   */
+       5, 58, 0, 
+       0, 20, 
+       36, 58, 
+/* HELP  ANY   */
+       2, 43, 0, 
+       45, 44, 26, 
+/* DRIN  COCO  */
+       9, 68, 68, 
+       3, 58, 0, 58, 
+       1, 59, 
+/* BREA  ANY   */
+       5, 64, 0, 
+       0, 7, 
+       36, 60, 
+/* ASK   ANY   */
+       1, 72, 0, 
+       1, 85, 
+/* YELL  ANY   */
+       7, 66, 0, 
+       2, 20, 
+       1, 85, 15, 61, 
+/* JUMP  ANY   */
+       0, 61, 0, 
+       1, 
+/* GO    OPEN  */
+       11, 1, 72, 
+       2, 48, 0, 25, 
+       1, 54, 56, 76, 
+/* GO    OPEN  */
+       11, 1, 72, 
+       2, 49, 0, 11, 
+       1, 54, 76, 73, 
+/* AUTO  0     NOT NITE*/
+       197, 
+       9, 2, 
+       57, 76, 
+/* AUTO  0     */
+/* GO    CREV  */
+       18, 1, 38, 
+       2, 53, 0, 32, 6, 28, 6, 25, 
+       1, 54, 76, 
+/* LOOK  CLIF  */
+       6, 30, 22, 
+       4, 32, 
+       1, 23, 128, 
+/* LOOK  DOWN  */
+       6, 30, 6, 
+       4, 32, 
+       1, 23, 128, 
+/* GO    CLIF  */
+       0, 1, 22, 
+       19, 
+/* GO    BEAC  */
+       0, 1, 61, 
+       36, 
+/* YES   ANY   */
+       0, 48, 0, 
+       129, 
+/* GET   GUAN  */
+       5, 10, 73, 
+       2, 50, 
+       19, 131, 
+/* MOVE  BUTT  NO WORD YET*/
+       10, 25, 54, 
+       2, 52, 9, 22, 
+       1, 132, 133, 
+/* MOVE  BUTT  OPEN CASE*/
+       22, 25, 54, 
+       2, 46, 0, 46, 0, 56, 0, 24, 8, 26, 
+       72, 73, 58, 
+/* AUTO  0     */
+       196, 
+       14, 44, 
+       138, 
+/* MOVE  BUTT  */
+       18, 25, 54, 
+       2, 47, 0, 47, 0, 56, 0, 24, 
+       72, 138, 58, 
+/* MOVE  BUTT  CLOSE*/
+       22, 25, 54, 
+       2, 56, 4, 20, 0, 46, 0, 56, 0, 24, 
+       1, 72, 60, 
+/* MOVE  BUTT  CLOSE*/
+       22, 25, 54, 
+       2, 56, 4, 21, 0, 47, 0, 56, 0, 24, 
+       72, 60, 1, 
+/* MOVE  BUTT  STILL BROKE*/
+       9, 25, 54, 
+       2, 46, 9, 26, 
+       1, 140, 
+/* DRIN  ANY   */
+       1, 68, 0, 
+       19, 115, 
+/* MOVE  LEVE  */
+       5, 25, 80, 
+       2, 52, 
+       36, 121, 
+/* LOOK  SAND  */
+       10, 30, 7, 
+       2, 1, 8, 21, 
+       1, 23, 130, 
+/* GO    VOLC  .*/
+       15, 1, 50, 
+       4, 6, 0, 8, 0, 12, 
+       25, 54, 58, 76, 
+/* SPIL  ANY   */
+       0, 47, 0, 
+       3, 
+/* EMPT  BOTT  ON ROCKS*/
+       4, 35, 8, 
+       4, 3, 
+       73, 
+/* AUTO  0     SALT*/
+       215, 
+       3, 8, 0, 8, 0, 7, 0, 11, 0, 1, 
+       1, 72, 53, 58, 
+/* AUTO  0     RUM*/
+       210, 
+       3, 6, 0, 6, 0, 7, 0, 11, 
+       1, 72, 53, 
+/* AUTO  0     */
+       210, 
+       3, 14, 0, 14, 0, 7, 0, 11, 
+       1, 72, 53, 
+/* SCOR  ANY   */
+       1, 40, 0, 
+       19, 37, 
+/* GO    FORC  */
+       11, 1, 75, 
+       2, 51, 0, 51, 
+       80, 53, 73, 1, 
+/* AUTO  0     BLOCK GLOWS*/
+       215, 
+       1, 26, 0, 9, 0, 7, 0, 85, 0, 7, 
+       74, 81, 79, 81, 
+/* GO    HOLE  */
+       9, 1, 37, 
+       2, 1, 8, 21, 
+       19, 107, 
+/* LOOK  DIAL  */
+       6, 30, 79, 
+       2, 52, 
+       1, 23, 141, 
+/* LOOK  MACH  */
+       8, 30, 81, 
+       9, 26, 2, 57, 
+       142, 
+/* FIX   MACH  */
+       8, 76, 81, 
+       9, 26, 2, 57, 
+       36, 
+/* MOVE  BUTT  */
+       11, 25, 54, 
+       8, 22, 2, 52, 
+       1, 136, 73, 80, 
+/* AUTO  0     .*/
+       202, 
+       4, 30, 0, 31, 
+       54, 80, 76, 
+/* AUTO  0     FORCE FIELD SWAP*/
+       202, 
+       4, 31, 0, 30, 
+       54, 80, 76, 
+/* CUT   VINE  */
+       23, 38, 27, 
+       2, 29, 0, 28, 0, 25, 3, 24, 7, 14, 
+       1, 53, 53, 73, 
+/* AUTO  0     BREAK RAFT*/
+       196, 
+       0, 29, 
+       59, 
+/* CUT   COCO  */
+       9, 38, 68, 
+       3, 42, 0, 27, 
+       36, 58, 
+/* GO    LAKE  */
+       11, 1, 49, 
+       2, 13, 0, 12, 
+       1, 73, 54, 76, 
+/* AUTO  0     WATCH OFF*/
+       205, 
+       1, 19, 0, 19, 0, 13, 
+       62, 145, 
+/* AUTO  0     */
+       200, 
+       1, 33, 0, 33, 
+       59, 
+/* AUTO  0     */
+/* EMPT  BOTT  IN CAVE*/
+       22, 35, 8, 
+       3, 6, 2, 15, 0, 6, 0, 7, 0, 16, 
+       1, 72, 53, 
+/* EMPT  BOTT  */
+       15, 35, 8, 
+       3, 8, 0, 8, 0, 7, 
+       1, 72, 2, 73, 
+/* AUTO  0     */
+       196, 
+       2, 20, 
+       110, 
+/* EMPT  BOTT  */
+       14, 35, 8, 
+       3, 14, 0, 14, 0, 7, 
+       1, 72, 2, 
+/* EMPT  BOTT  */
+       14, 35, 8, 
+       3, 6, 0, 6, 0, 7, 
+       1, 72, 2, 
+/* GET   WATE  FRESH WATER*/
+       17, 10, 55, 
+       4, 12, 3, 7, 0, 7, 0, 14, 
+       1, 72, 
+/* DROP  WATE  */
+       0, 18, 55, 
+       3, 
+/* GO    CREV  */
+       15, 1, 38, 
+       2, 17, 0, 11, 0, 18, 
+       1, 54, 76, 58, 
+/* SWIM  ANY   */
+       1, 46, 0, 
+       22, 103, 
+/* CUT   ANY   */
+       0, 38, 0, 
+       36, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* MOVE  ANY   */
+       0, 25, 0, 
+       36, 
+/* GET   RUM   GET*/
+       22, 10, 9, 
+       3, 7, 2, 16, 0, 16, 0, 7, 0, 6, 
+       1, 59, 72, 
+/* GET   WATE  GET*/
+       17, 10, 55, 
+       3, 7, 2, 13, 0, 14, 0, 7, 
+       1, 72, 
+/* GET   WATE  */
+       17, 10, 55, 
+       3, 7, 2, 18, 0, 8, 0, 7, 
+       1, 72, 
+/* FILL  BOTT  */
+       5, 45, 8, 
+       3, 7, 
+       27, 4, 
+/* SAVE  GAME  */
+       6, 41, 57, 
+       8, 4, 
+       19, 20, 10, 
+/* LOOK  WATC  */
+       6, 30, 21, 
+       3, 19, 
+       12, 78, 13, 
+/* AUTO  0     */
+/* LOOK  VOLC  */
+       7, 30, 50, 
+       4, 6, 
+       21, 22, 73, 28, 
+/* AUTO  0     */
+       197, 
+       18, 20, 
+       23, 24, 
+/* AUTO  0     */
+       193, 
+       23, 29, 
+/* LOOK  ANY   */
+       2, 30, 0, 
+       23, 31, 32, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *WALK */
+       215, 65, 76, 75,
+       /* *RUN */
+       210, 85, 78, 32,
+       /* *CLIM */
+       195, 76, 73, 77,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *CRAW */
+       195, 82, 65, 87,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* *HOLD */
+       200, 79, 76, 68,
+       /* *CATC */
+       195, 65, 84, 67,
+       /* . */
+       46, 32, 32, 32,
+       /* . */
+       46, 32, 32, 32,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *RELE */
+       210, 69, 76, 69,
+       /* *GIVE */
+       199, 73, 86, 69,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* *PUSH */
+       208, 85, 83, 72,
+       /* *TURN */
+       212, 85, 82, 78,
+       /* *PULL */
+       208, 85, 76, 76,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *DESC */
+       196, 69, 83, 67,
+       /* *READ */
+       210, 69, 65, 68,
+       /* *SEE */
+       211, 69, 69, 32,
+       /* EMPT */
+       69, 77, 80, 84,
+       /* . */
+       46, 32, 32, 32,
+       /* . */
+       46, 32, 32, 32,
+       /* CUT */
+       67, 85, 84, 32,
+       /*  */
+       32, 32, 32, 32,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* HELP */
+       72, 69, 76, 80,
+       /* INVE */
+       73, 78, 86, 69,
+       /* FILL */
+       70, 73, 76, 76,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* SPIL */
+       83, 80, 73, 76,
+       /* YES */
+       89, 69, 83, 32,
+       /* BUIL */
+       66, 85, 73, 76,
+       /* *MAKE */
+       205, 65, 75, 69,
+       /* WITH */
+       87, 73, 84, 72,
+       /* *USE */
+       213, 83, 69, 32,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* PET */
+       80, 69, 84, 32,
+       /* *TOUC */
+       212, 79, 85, 67,
+       /* *FEEL */
+       198, 69, 69, 76,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* DIG */
+       68, 73, 71, 32,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *DEST */
+       196, 69, 83, 84,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* . */
+       46, 32, 32, 32,
+       /* SLEE */
+       83, 76, 69, 69,
+       /* BREA */
+       66, 82, 69, 65,
+       /* *SMAS */
+       211, 77, 65, 83,
+       /* YELL */
+       89, 69, 76, 76,
+       /* *SCRE */
+       211, 67, 82, 69,
+       /* DRIN */
+       68, 82, 73, 78,
+       /* *EAT */
+       197, 65, 84, 32,
+       /* *TAST */
+       212, 65, 83, 84,
+       /* TREA */
+       84, 82, 69, 65,
+       /* ASK */
+       65, 83, 75, 32,
+       /* *SAY */
+       211, 65, 89, 32,
+       /* *TELL */
+       212, 69, 76, 76,
+       /* *YELL */
+       217, 69, 76, 76,
+       /* FIX */
+       70, 73, 88, 32,
+       /* *REPA */
+       210, 69, 80, 65,
+       /* YOHO */
+       89, 79, 72, 79,
+       /* PADD */
+       80, 65, 68, 68,
+       /* *SAIL */
+       211, 65, 73, 76,
+       /* OPEN */
+       79, 80, 69, 78,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORTH */
+       78, 79, 82, 84,
+       /* SOUTH */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* SAND */
+       83, 65, 78, 68,
+       /* BOTT */
+       66, 79, 84, 84,
+       /* RUM */
+       82, 85, 77, 32,
+       /* SALT */
+       83, 65, 76, 84,
+       /* SHIP */
+       83, 72, 73, 80,
+       /* PIRA */
+       80, 73, 82, 65,
+       /* STOR */
+       83, 84, 79, 82,
+       /* *HURR */
+       200, 85, 82, 82,
+       /* ARGH */
+       65, 82, 71, 72,
+       /* TREE */
+       84, 82, 69, 69,
+       /* *PALM */
+       208, 65, 76, 77,
+       /* LOG */
+       76, 79, 71, 32,
+       /* HEAD */
+       72, 69, 65, 68,
+       /* WIRE */
+       87, 73, 82, 69,
+       /* WATC */
+       87, 65, 84, 67,
+       /* CLIF */
+       67, 76, 73, 70,
+       /* *EDGE */
+       197, 68, 71, 69,
+       /* BAT */
+       66, 65, 84, 32,
+       /* OCEA */
+       79, 67, 69, 65,
+       /* JUNG */
+       74, 85, 78, 71,
+       /* VINE */
+       86, 73, 78, 69,
+       /* INVE */
+       73, 78, 86, 69,
+       /* HAND */
+       72, 65, 78, 68,
+       /* FEET */
+       70, 69, 69, 84,
+       /* BREA */
+       66, 82, 69, 65,
+       /* BASI */
+       66, 65, 83, 73,
+       /* OUT */
+       79, 85, 84, 32,
+       /* LEDG */
+       76, 69, 68, 71,
+       /* BONE */
+       66, 79, 78, 69,
+       /* RAFT */
+       82, 65, 70, 84,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* CREV */
+       67, 82, 69, 86,
+       /* CAVE */
+       67, 65, 86, 69,
+       /* ASH */
+       65, 83, 72, 32,
+       /* KNIF */
+       75, 78, 73, 70,
+       /* STAL */
+       83, 84, 65, 76,
+       /* NEAN */
+       78, 69, 65, 78,
+       /* META */
+       77, 69, 84, 65,
+       /* TUNN */
+       84, 85, 78, 78,
+       /* PIRA */
+       80, 73, 82, 65,
+       /* ANIM */
+       65, 78, 73, 77,
+       /* . */
+       46, 32, 32, 32,
+       /* LAKE */
+       76, 65, 75, 69,
+       /* VOLC */
+       86, 79, 76, 67,
+       /* FREE */
+       70, 82, 69, 69,
+       /* TIDE */
+       84, 73, 68, 69,
+       /* . */
+       46, 32, 32, 32,
+       /* BUTT */
+       66, 85, 84, 84,
+       /* WATE */
+       87, 65, 84, 69,
+       /* HOL */
+       72, 79, 76, 32,
+       /* GAME */
+       71, 65, 77, 69,
+       /* BEAR */
+       66, 69, 65, 82,
+       /* SWEA */
+       83, 87, 69, 65,
+       /* ATOL */
+       65, 84, 79, 76,
+       /* BEAC */
+       66, 69, 65, 67,
+       /* DRAW */
+       68, 82, 65, 87,
+       /* AROU */
+       65, 82, 79, 85,
+       /* SHAR */
+       83, 72, 65, 82,
+       /* PLAI */
+       80, 76, 65, 73,
+       /* NOTE */
+       78, 79, 84, 69,
+       /* BAND */
+       66, 65, 78, 68,
+       /* COCO */
+       67, 79, 67, 79,
+       /* CASE */
+       67, 65, 83, 69,
+       /* *DISP */
+       196, 73, 83, 80,
+       /* BLOC */
+       66, 76, 79, 67,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* GUAN */
+       71, 85, 65, 78,
+       /* CONS */
+       67, 79, 78, 83,
+       /* FORC */
+       70, 79, 82, 67,
+       /* *FIEL */
+       198, 73, 69, 76,
+       /* ROOF */
+       82, 79, 79, 70,
+       /* HELL */
+       72, 69, 76, 76,
+       /* DIAL */
+       68, 73, 65, 76,
+       /* LEVE */
+       76, 69, 86, 69,
+       /* MACH */
+       77, 65, 67, 72,
+       /* GROU */
+       71, 82, 79, 85,
+       /* ROCK */
+       82, 79, 67, 75,
+       /* PUDD */
+       80, 85, 68, 68,
+       0,
+};
+const uint8_t automap[] = {
+       /* BOTT */
+       66, 79, 84, 84,
+       6,
+       /* BOTT */
+       66, 79, 84, 84,
+       7,
+       /* BOTT */
+       66, 79, 84, 84,
+       8,
+       /* BLOC */
+       66, 76, 79, 67,
+       9,
+       /* SALT */
+       83, 65, 76, 84,
+       10,
+       /* BONE */
+       66, 79, 78, 69,
+       12,
+       /* BOTT */
+       66, 79, 84, 84,
+       14,
+       /* WATC */
+       87, 65, 84, 67,
+       19,
+       /* VINE */
+       86, 73, 78, 69,
+       23,
+       /* KNIF */
+       75, 78, 73, 70,
+       24,
+       /* LOG */
+       76, 79, 71, 32,
+       25,
+       /* BLOC */
+       66, 76, 79, 67,
+       26,
+       /* LOG */
+       76, 79, 71, 32,
+       28,
+       /* NOTE */
+       78, 79, 84, 69,
+       40,
+       /* BAND */
+       66, 65, 78, 68,
+       41,
+       /* COCO */
+       67, 79, 67, 79,
+       42,
+       /* WIRE */
+       87, 73, 82, 69,
+       55,
+       /* COCO */
+       67, 79, 67, 79,
+       58,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv11.c b/Applications/games/adv11.c
new file mode 100644 (file)
index 0000000..b1fc256
--- /dev/null
@@ -0,0 +1,3117 @@
+#define NUM_OBJ 48
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 150;
+const uint8_t lightfill = 150;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 30;
+const uint8_t startloc = 30;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+115, 109, 97, 108, 108, 32, 109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_2[] = {
+109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_3[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 110, 101, 100, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_4[] = {
+109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_5[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 110, 101, 100, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_6[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 110, 101, 100, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_7[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 110, 101, 100, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_8[] = {
+109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_9[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 110, 101, 100, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_10[] = {
+109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_11[] = {
+109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_12[] = {
+114, 101, 100, 32, 109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_13[] = {
+114, 101, 100, 32, 109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_14[] = {
+99, 114, 97, 109, 112, 101, 100, 32, 109, 101, 116, 97, 108, 32, 97, 114, 101, 97, 0 };
+const uint8_t loctxt_15[] = {
+109, 101, 116, 97, 108, 32, 115, 116, 111, 114, 97, 103, 101, 32, 104, 111, 108, 100, 0 };
+const uint8_t loctxt_16[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 116, 114, 101, 97, 100, 109, 105, 108, 108, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 111, 112, 101, 110, 32, 100, 105, 115, 112, 108, 97, 121, 32, 99, 97, 115, 101, 0 };
+const uint8_t loctxt_18[] = {
+115, 109, 97, 108, 108, 32, 109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_19[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 110, 101, 100, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_20[] = {
+109, 97, 105, 110, 32, 99, 111, 110, 116, 114, 111, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_21[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 110, 101, 100, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_22[] = {
+115, 109, 97, 108, 108, 32, 109, 101, 116, 97, 108, 32, 99, 97, 98, 105, 110, 0 };
+const uint8_t loctxt_23[] = {
+109, 101, 116, 97, 108, 32, 100, 111, 114, 109, 105, 116, 111, 114, 121, 0 };
+const uint8_t loctxt_24[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 102, 101, 98, 111, 97, 116, 32, 104, 97, 110, 103, 97, 114, 32, 111, 112, 101, 110, 32, 116, 111, 10, 111, 117, 116, 101, 114, 32, 115, 112, 97, 99, 101, 0 };
+const uint8_t loctxt_25[] = {
+109, 101, 116, 97, 108, 32, 108, 105, 110, 101, 100, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_26[] = {
+108, 97, 114, 103, 101, 32, 109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_27[] = {
+108, 97, 114, 103, 101, 32, 109, 101, 116, 97, 108, 32, 114, 111, 111, 109, 10, 119, 105, 116, 104, 32, 112, 111, 114, 99, 101, 108, 97, 105, 110, 32, 109, 97, 99, 104, 105, 110, 101, 114, 121, 0 };
+const uint8_t loctxt_28[] = {
+0 };
+const uint8_t loctxt_29[] = {
+0 };
+const uint8_t loctxt_30[] = {
+108, 111, 116, 32, 111, 102, 32, 116, 114, 111, 117, 98, 108, 101, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_2,  { 0, 0, 3, 0, 0, 0 } }, 
+               { loctxt_3,  { 0, 6, 0, 2, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 5, 0, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 6, 4, 0, 0 } }, 
+               { loctxt_6,  { 3, 0, 7, 5, 0, 0 } }, 
+               { loctxt_7,  { 9, 0, 0, 6, 0, 0 } }, 
+               { loctxt_8,  { 19, 0, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 25, 7, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 0, 25, 0, 0, 0, 0 } }, 
+               { loctxt_11,  { 21, 0, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 19, 13, 0, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 12, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 8, 0, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_19,  { 12, 8, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 21, 0, 0 } }, 
+               { loctxt_21,  { 22, 11, 20, 23, 0, 0 } }, 
+               { loctxt_22,  { 0, 21, 0, 0, 0, 0 } }, 
+               { loctxt_23,  { 0, 0, 21, 27, 0, 0 } }, 
+               { loctxt_24,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_25,  { 10, 9, 0, 0, 0, 0 } }, 
+               { loctxt_26,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_27,  { 0, 0, 23, 0, 0, 0 } }, 
+               { loctxt_28,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       26,
+       26,
+       1,
+       2,
+       0,
+       0,
+       4,
+       0,
+       0,
+       0,
+       0,
+       20,
+       0,
+       0,
+       0,
+       10,
+       12,
+       0,
+       8,
+       10,
+       20,
+       11,
+       0,
+       0,
+       11,
+       0,
+       0,
+       0,
+       16,
+       8,
+       0,
+       17,
+       15,
+       15,
+       2,
+       0,
+       2,
+       15,
+       15,
+       15,
+       11,
+       11,
+       0,
+       22,
+       23,
+       22,
+       9,
+       9,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+77, 97, 99, 104, 105, 110, 101, 114, 121, 0 };
+const uint8_t objtxt_1[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 99, 111, 110, 115, 111, 108, 101, 0 };
+const uint8_t objtxt_2[] = {
+70, 111, 114, 99, 101, 32, 102, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_3[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 99, 111, 110, 115, 111, 108, 101, 0 };
+const uint8_t objtxt_4[] = {
+80, 108, 97, 110, 116, 115, 0 };
+const uint8_t objtxt_5[] = {
+70, 108, 111, 119, 101, 114, 0 };
+const uint8_t objtxt_6[] = {
+70, 111, 114, 99, 101, 32, 102, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_7[] = {
+66, 97, 110, 100, 97, 110, 110, 97, 0 };
+const uint8_t objtxt_8[] = {
+87, 104, 105, 99, 104, 32, 73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_9[] = {
+108, 105, 116, 101, 32, 103, 111, 101, 115, 32, 104, 101, 114, 101, 46, 46, 46, 46, 46, 0 };
+const uint8_t objtxt_10[] = {
+67, 111, 114, 112, 115, 101, 0 };
+const uint8_t objtxt_11[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 99, 111, 110, 115, 111, 108, 101, 0 };
+const uint8_t objtxt_12[] = {
+78, 101, 97, 110, 100, 101, 114, 116, 104, 97, 108, 0 };
+const uint8_t objtxt_13[] = {
+119, 104, 105, 99, 104, 32, 73, 39, 109, 32, 100, 114, 97, 103, 103, 105, 110, 103, 0 };
+const uint8_t objtxt_14[] = {
+76, 111, 110, 103, 32, 103, 108, 111, 119, 105, 110, 103, 32, 109, 101, 116, 97, 108, 32, 116, 104, 114, 101, 97, 100, 0 };
+const uint8_t objtxt_15[] = {
+70, 111, 114, 99, 101, 32, 102, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_16[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 99, 111, 110, 115, 111, 108, 101, 0 };
+const uint8_t objtxt_17[] = {
+77, 101, 0 };
+const uint8_t objtxt_18[] = {
+72, 121, 100, 114, 111, 112, 111, 110, 105, 99, 115, 0 };
+const uint8_t objtxt_19[] = {
+66, 108, 105, 110, 107, 105, 110, 103, 32, 114, 101, 100, 32, 108, 105, 103, 104, 116, 32, 111, 118, 101, 114, 32, 102, 111, 114, 99, 101, 32, 102, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_20[] = {
+86, 105, 101, 119, 115, 99, 114, 101, 101, 110, 0 };
+const uint8_t objtxt_21[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 99, 111, 110, 115, 111, 108, 101, 0 };
+const uint8_t objtxt_22[] = {
+71, 108, 111, 119, 105, 110, 103, 32, 116, 104, 114, 101, 97, 100, 32, 116, 105, 101, 100, 32, 116, 111, 32, 108, 101, 118, 101, 114, 0 };
+const uint8_t objtxt_23[] = {
+76, 111, 111, 115, 101, 32, 101, 110, 100, 32, 111, 102, 32, 103, 108, 111, 119, 105, 110, 103, 32, 116, 104, 114, 101, 97, 100, 0 };
+const uint8_t objtxt_24[] = {
+84, 114, 101, 97, 100, 109, 105, 108, 108, 0 };
+const uint8_t objtxt_25[] = {
+119, 105, 116, 104, 32, 116, 104, 114, 101, 97, 100, 32, 116, 105, 101, 100, 32, 116, 111, 32, 105, 116, 0 };
+const uint8_t objtxt_26[] = {
+77, 101, 116, 101, 114, 32, 108, 111, 111, 112, 32, 111, 102, 32, 103, 108, 111, 119, 105, 110, 103, 32, 116, 104, 114, 101, 97, 100, 0 };
+const uint8_t objtxt_27[] = {
+68, 97, 114, 107, 32, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_28[] = {
+82, 97, 105, 108, 105, 110, 103, 0 };
+const uint8_t objtxt_29[] = {
+68, 105, 115, 112, 108, 97, 121, 32, 99, 97, 115, 101, 0 };
+const uint8_t objtxt_30[] = {
+119, 104, 105, 99, 104, 32, 105, 115, 32, 111, 112, 101, 110, 0 };
+const uint8_t objtxt_31[] = {
+66, 117, 116, 116, 111, 110, 0 };
+const uint8_t objtxt_32[] = {
+80, 105, 114, 97, 116, 101, 0 };
+const uint8_t objtxt_33[] = {
+119, 104, 105, 99, 104, 32, 105, 115, 32, 109, 111, 116, 105, 111, 110, 108, 101, 115, 115, 0 };
+const uint8_t objtxt_34[] = {
+76, 97, 114, 103, 101, 32, 112, 108, 97, 115, 116, 105, 99, 32, 98, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_35[] = {
+71, 76, 79, 87, 73, 78, 71, 32, 108, 97, 114, 103, 101, 32, 112, 108, 97, 115, 116, 105, 99, 32, 98, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_36[] = {
+76, 97, 114, 103, 101, 32, 114, 97, 100, 105, 97, 110, 116, 32, 103, 108, 111, 119, 105, 110, 103, 32, 110, 101, 111, 110, 32, 115, 105, 103, 110, 0 };
+const uint8_t objtxt_37[] = {
+68, 105, 115, 112, 108, 97, 121, 32, 99, 97, 115, 101, 115, 0 };
+const uint8_t objtxt_38[] = {
+71, 105, 97, 110, 116, 32, 98, 111, 120, 101, 115, 32, 38, 32, 99, 114, 97, 116, 101, 115, 0 };
+const uint8_t objtxt_39[] = {
+80, 117, 108, 115, 97, 116, 105, 110, 103, 32, 114, 101, 100, 32, 102, 111, 114, 99, 101, 32, 102, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_40[] = {
+76, 97, 114, 103, 101, 32, 109, 101, 100, 105, 99, 105, 110, 101, 32, 98, 97, 108, 108, 0 };
+const uint8_t objtxt_41[] = {
+70, 114, 101, 101, 115, 116, 97, 110, 100, 105, 110, 103, 32, 112, 117, 110, 99, 104, 105, 110, 103, 32, 98, 97, 103, 0 };
+const uint8_t objtxt_42[] = {
+83, 99, 114, 97, 112, 115, 32, 111, 102, 32, 99, 108, 111, 116, 104, 0 };
+const uint8_t objtxt_43[] = {
+83, 111, 102, 116, 32, 112, 108, 97, 116, 102, 111, 114, 109, 0 };
+const uint8_t objtxt_44[] = {
+82, 111, 119, 115, 32, 111, 102, 32, 115, 111, 102, 116, 32, 112, 108, 97, 116, 102, 111, 114, 109, 115, 0 };
+const uint8_t objtxt_45[] = {
+83, 109, 97, 108, 108, 32, 112, 108, 97, 115, 116, 105, 99, 32, 119, 97, 102, 101, 114, 0 };
+const uint8_t objtxt_46[] = {
+70, 111, 114, 99, 101, 32, 102, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_47[] = {
+119, 104, 105, 99, 104, 32, 105, 115, 32, 119, 101, 97, 107, 108, 121, 32, 102, 108, 105, 99, 107, 101, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_48[] = {
+65, 108, 105, 101, 110, 32, 100, 101, 118, 105, 99, 101, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+79, 75, 0 };
+const uint8_t msgtxt_2[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 49, 49, 32, 34, 83, 65, 86, 65, 71, 69, 32, 73, 83, 76, 65, 78, 68, 32, 80, 65, 82, 84, 32, 50, 34, 10, 98, 121, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 32, 38, 32, 82, 117, 115, 115, 32, 87, 101, 116, 109, 111, 114, 101, 46, 32, 68, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 70, 97, 110, 115, 10, 101, 118, 101, 114, 121, 119, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_3[] = {
+66, 108, 105, 110, 100, 105, 110, 103, 32, 102, 108, 97, 115, 104, 32, 111, 102, 32, 108, 105, 103, 104, 116, 0 };
+const uint8_t msgtxt_4[] = {
+73, 39, 109, 32, 115, 116, 97, 114, 107, 32, 110, 97, 107, 101, 100, 0 };
+const uint8_t msgtxt_5[] = {
+98, 117, 116, 116, 111, 110, 44, 100, 105, 97, 108, 115, 44, 108, 101, 118, 101, 114, 0 };
+const uint8_t msgtxt_6[] = {
+110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_7[] = {
+101, 120, 99, 101, 112, 116, 0 };
+const uint8_t msgtxt_8[] = {
+109, 101, 116, 97, 108, 108, 105, 99, 32, 118, 111, 105, 99, 101, 32, 119, 104, 105, 115, 112, 101, 114, 115, 32, 105, 110, 32, 109, 121, 32, 109, 105, 110, 100, 58, 0 };
+const uint8_t msgtxt_9[] = {
+111, 110, 101, 32, 105, 116, 101, 109, 0 };
+const uint8_t msgtxt_10[] = {
+119, 114, 111, 110, 103, 0 };
+const uint8_t msgtxt_11[] = {
+34, 86, 111, 99, 97, 108, 105, 122, 101, 32, 112, 97, 115, 115, 119, 111, 114, 100, 32, 80, 108, 101, 97, 115, 101, 34, 0 };
+const uint8_t msgtxt_12[] = {
+34, 82, 101, 97, 100, 121, 34, 0 };
+const uint8_t msgtxt_13[] = {
+97, 108, 105, 101, 110, 32, 115, 99, 114, 105, 112, 116, 0 };
+const uint8_t msgtxt_14[] = {
+72, 111, 119, 63, 0 };
+const uint8_t msgtxt_15[] = {
+100, 111, 101, 115, 110, 39, 116, 32, 119, 111, 114, 107, 0 };
+const uint8_t msgtxt_16[] = {
+115, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_17[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_18[] = {
+104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_19[] = {
+84, 105, 109, 101, 32, 112, 97, 114, 97, 100, 111, 120, 32, 115, 104, 97, 116, 116, 101, 114, 115, 32, 114, 101, 97, 108, 105, 116, 121, 0 };
+const uint8_t msgtxt_20[] = {
+103, 108, 111, 119, 105, 110, 103, 0 };
+const uint8_t msgtxt_21[] = {
+105, 116, 0 };
+const uint8_t msgtxt_22[] = {
+86, 97, 99, 117, 117, 109, 33, 0 };
+const uint8_t msgtxt_23[] = {
+108, 117, 110, 103, 115, 32, 101, 120, 112, 108, 111, 100, 101, 32, 105, 110, 32, 114, 101, 100, 32, 98, 117, 98, 98, 108, 105, 110, 103, 32, 114, 117, 105, 110, 0 };
+const uint8_t msgtxt_24[] = {
+65, 114, 103, 104, 0 };
+const uint8_t msgtxt_25[] = {
+65, 83, 80, 72, 89, 88, 73, 65, 84, 69, 68, 0 };
+const uint8_t msgtxt_26[] = {
+73, 32, 98, 114, 101, 97, 116, 104, 101, 100, 0 };
+const uint8_t msgtxt_27[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_28[] = {
+73, 32, 102, 101, 101, 108, 0 };
+const uint8_t msgtxt_29[] = {
+115, 101, 100, 97, 116, 101, 100, 33, 0 };
+const uint8_t msgtxt_30[] = {
+98, 114, 105, 101, 102, 108, 121, 0 };
+const uint8_t msgtxt_31[] = {
+78, 101, 97, 110, 100, 101, 114, 116, 104, 97, 108, 0 };
+const uint8_t msgtxt_32[] = {
+116, 111, 111, 32, 108, 97, 114, 103, 101, 0 };
+const uint8_t msgtxt_33[] = {
+97, 116, 116, 97, 99, 107, 115, 0 };
+const uint8_t msgtxt_34[] = {
+109, 111, 118, 101, 115, 0 };
+const uint8_t msgtxt_35[] = {
+109, 101, 116, 97, 108, 108, 105, 99, 32, 116, 104, 114, 101, 97, 100, 115, 0 };
+const uint8_t msgtxt_36[] = {
+34, 80, 114, 101, 112, 97, 114, 101, 32, 82, 97, 121, 115, 104, 105, 101, 108, 100, 44, 32, 80, 83, 89, 67, 72, 79, 84, 82, 65, 78, 83, 70, 73, 71, 85, 82, 65, 84, 73, 79, 78, 34, 0 };
+const uint8_t msgtxt_37[] = {
+116, 104, 105, 99, 107, 32, 104, 101, 97, 100, 101, 100, 0 };
+const uint8_t msgtxt_38[] = {
+34, 78, 111, 116, 34, 0 };
+const uint8_t msgtxt_39[] = {
+66, 114, 97, 105, 110, 32, 102, 114, 105, 101, 100, 33, 0 };
+const uint8_t msgtxt_40[] = {
+115, 116, 114, 97, 110, 103, 101, 0 };
+const uint8_t msgtxt_41[] = {
+98, 111, 100, 121, 0 };
+const uint8_t msgtxt_42[] = {
+115, 97, 121, 115, 0 };
+const uint8_t msgtxt_43[] = {
+73, 32, 102, 97, 105, 110, 116, 101, 100, 0 };
+const uint8_t msgtxt_44[] = {
+65, 119, 97, 107, 101, 33, 0 };
+const uint8_t msgtxt_45[] = {
+119, 111, 110, 39, 116, 32, 98, 117, 100, 103, 101, 0 };
+const uint8_t msgtxt_46[] = {
+76, 105, 103, 104, 116, 32, 109, 101, 115, 109, 101, 114, 105, 122, 101, 115, 32, 109, 101, 0 };
+const uint8_t msgtxt_47[] = {
+84, 111, 32, 119, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_48[] = {
+115, 108, 105, 112, 115, 32, 111, 102, 102, 0 };
+const uint8_t msgtxt_49[] = {
+76, 97, 114, 103, 101, 32, 84, 32, 115, 104, 97, 112, 101, 100, 32, 104, 97, 110, 100, 108, 101, 46, 0 };
+const uint8_t msgtxt_50[] = {
+117, 116, 116, 101, 114, 32, 98, 108, 97, 99, 107, 110, 101, 115, 115, 32, 105, 110, 32, 99, 101, 110, 116, 101, 114, 33, 0 };
+const uint8_t msgtxt_51[] = {
+84, 114, 121, 58, 32, 34, 71, 79, 34, 0 };
+const uint8_t msgtxt_52[] = {
+73, 39, 109, 32, 104, 111, 108, 100, 105, 110, 103, 32, 105, 116, 0 };
+const uint8_t msgtxt_53[] = {
+67, 108, 111, 115, 101, 117, 112, 115, 32, 115, 104, 111, 119, 32, 68, 105, 110, 111, 115, 97, 117, 114, 115, 32, 101, 118, 101, 114, 121, 119, 104, 101, 114, 101, 33, 0 };
+const uint8_t msgtxt_54[] = {
+66, 117, 116, 116, 111, 110, 32, 97, 116, 32, 98, 111, 116, 116, 111, 109, 46, 0 };
+const uint8_t msgtxt_55[] = {
+67, 97, 115, 101, 32, 99, 108, 111, 115, 101, 115, 44, 32, 115, 111, 109, 101, 32, 103, 97, 115, 32, 99, 111, 109, 101, 115, 32, 111, 117, 116, 32, 97, 110, 100, 32, 73, 39, 109, 32, 115, 101, 100, 97, 116, 101, 100, 33, 0 };
+const uint8_t msgtxt_56[] = {
+67, 111, 110, 103, 114, 97, 116, 117, 108, 97, 116, 105, 111, 110, 115, 33, 32, 89, 111, 117, 39, 118, 101, 32, 102, 105, 110, 105, 115, 104, 101, 100, 32, 83, 97, 118, 97, 103, 101, 32, 73, 115, 108, 97, 110, 100, 32, 115, 117, 99, 99, 101, 115, 115, 102, 117, 108, 108, 121, 33, 10, 82, 101, 102, 101, 114, 32, 116, 111, 32, 105, 110, 115, 116, 114, 117, 99, 116, 105, 111, 110, 115, 32, 102, 111, 114, 32, 102, 111, 108, 108, 111, 119, 105, 110, 103, 32, 99, 111, 100, 101, 100, 32, 109, 101, 115, 115, 97, 103, 101, 58, 10, 85, 32, 76, 32, 75, 32, 35, 32, 36, 32, 43, 32, 83, 32, 40, 32, 86, 32, 65, 32, 48, 32, 51, 32, 53, 32, 68, 32, 66, 32, 73, 32, 72, 10, 79, 32, 59, 32, 55, 32, 69, 32, 56, 32, 47, 32, 77, 32, 80, 32, 52, 32, 74, 32, 49, 32, 84, 32, 81, 32, 64, 32, 70, 32, 37, 32, 71, 10, 87, 32, 88, 32, 54, 32, 67, 32, 63, 32, 89, 32, 44, 32, 90, 32, 61, 32, 38, 32, 82, 32, 42, 32, 45, 32, 78, 32, 50, 32, 41, 32, 57, 0 };
+const uint8_t msgtxt_57[] = {
+105, 115, 32, 97, 32, 114, 111, 98, 111, 116, 33, 0 };
+const uint8_t msgtxt_58[] = {
+69, 88, 80, 76, 79, 83, 73, 79, 78, 33, 0 };
+const uint8_t msgtxt_59[] = {
+102, 108, 121, 105, 110, 103, 32, 97, 112, 97, 114, 116, 0 };
+const uint8_t msgtxt_60[] = {
+34, 67, 111, 109, 112, 97, 114, 101, 100, 32, 116, 111, 32, 119, 104, 97, 116, 32, 121, 111, 117, 39, 114, 101, 32, 97, 98, 111, 117, 116, 32, 116, 111, 32, 103, 111, 32, 116, 104, 114, 111, 117, 103, 104, 32, 121, 111, 117, 39, 108, 108, 32, 116, 104, 105, 110, 107, 32, 80, 97, 114, 116, 32, 73, 32, 119, 97, 115, 32, 97, 32, 112, 105, 101, 99, 101, 32, 111, 102, 32, 99, 97, 107, 101, 33, 32, 71, 111, 111, 100, 32, 76, 117, 99, 107, 32, 97, 110, 100, 32, 65, 100, 105, 101, 117, 34, 32, 45, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 46, 10, 0 };
+const uint8_t msgtxt_61[] = {
+84, 105, 109, 101, 109, 97, 99, 104, 105, 110, 101, 32, 115, 101, 116, 32, 102, 111, 114, 32, 49, 48, 48, 44, 48, 48, 48, 32, 121, 101, 97, 114, 115, 32, 105, 110, 32, 112, 97, 115, 116, 32, 97, 110, 100, 10, 110, 101, 97, 114, 101, 115, 116, 32, 112, 108, 97, 110, 101, 116, 97, 114, 121, 32, 98, 111, 100, 121, 46, 0 };
+const uint8_t msgtxt_62[] = {
+73, 32, 99, 97, 110, 39, 116, 0 };
+const uint8_t msgtxt_63[] = {
+114, 101, 97, 100, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_64[] = {
+73, 32, 99, 97, 110, 0 };
+const uint8_t msgtxt_65[] = {
+97, 110, 32, 97, 116, 111, 109, 0 };
+const uint8_t msgtxt_66[] = {
+34, 87, 65, 82, 78, 73, 78, 71, 32, 45, 32, 78, 111, 110, 45, 116, 114, 97, 110, 115, 102, 105, 103, 117, 114, 101, 100, 32, 99, 111, 110, 116, 114, 111, 108, 108, 101, 114, 32, 111, 102, 32, 115, 101, 101, 100, 32, 115, 112, 101, 99, 105, 109, 101, 110, 115, 10, 104, 97, 115, 32, 98, 101, 101, 110, 32, 114, 101, 108, 101, 97, 115, 101, 100, 34, 0 };
+const uint8_t msgtxt_67[] = {
+114, 111, 119, 32, 97, 102, 116, 101, 114, 32, 114, 111, 119, 32, 111, 102, 0 };
+const uint8_t msgtxt_68[] = {
+34, 80, 117, 108, 108, 32, 108, 101, 118, 101, 114, 32, 116, 111, 32, 114, 101, 118, 101, 114, 115, 101, 32, 84, 114, 97, 110, 115, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 32, 80, 114, 111, 99, 101, 115, 115, 34, 0 };
+const uint8_t msgtxt_69[] = {
+56, 32, 101, 108, 101, 99, 116, 114, 111, 110, 115, 0 };
+const uint8_t msgtxt_70[] = {
+50, 57, 51, 32, 101, 108, 101, 99, 116, 114, 111, 110, 115, 0 };
+const uint8_t msgtxt_71[] = {
+104, 97, 115, 0 };
+const uint8_t msgtxt_72[] = {
+112, 105, 99, 116, 117, 114, 101, 32, 111, 102, 0 };
+const uint8_t msgtxt_73[] = {
+116, 104, 105, 115, 32, 115, 112, 97, 99, 101, 115, 104, 105, 112, 32, 110, 111, 119, 32, 111, 114, 98, 105, 116, 105, 110, 103, 32, 69, 97, 114, 116, 104, 46, 0 };
+const uint8_t msgtxt_74[] = {
+72, 117, 114, 114, 105, 99, 97, 110, 101, 32, 119, 105, 110, 100, 115, 32, 115, 117, 99, 107, 32, 109, 101, 32, 105, 110, 116, 111, 32, 111, 117, 116, 101, 114, 115, 112, 97, 99, 101, 33, 0 };
+const uint8_t msgtxt_75[] = {
+73, 32, 113, 117, 105, 99, 107, 108, 121, 32, 102, 114, 101, 101, 122, 101, 32, 116, 111, 32, 100, 101, 97, 116, 104, 33, 0 };
+const uint8_t msgtxt_76[] = {
+69, 120, 97, 109, 105, 110, 101, 32, 105, 116, 101, 109, 115, 32, 38, 32, 114, 101, 97, 100, 32, 109, 101, 115, 115, 97, 103, 101, 115, 32, 99, 97, 114, 101, 102, 117, 108, 108, 121, 33, 0 };
+const uint8_t msgtxt_77[] = {
+84, 114, 121, 58, 32, 34, 66, 82, 69, 65, 84, 72, 69, 32, 79, 85, 84, 34, 0 };
+const uint8_t msgtxt_78[] = {
+67, 97, 112, 116, 97, 105, 110, 39, 115, 32, 76, 79, 71, 58, 10, 87, 111, 117, 110, 100, 101, 100, 32, 105, 110, 32, 109, 117, 116, 105, 110, 121, 44, 32, 115, 116, 114, 101, 110, 103, 116, 104, 32, 102, 97, 105, 108, 105, 110, 103, 46, 32, 72, 117, 109, 97, 110, 111, 105, 100, 32, 115, 101, 101, 100, 32, 99, 111, 108, 111, 110, 121, 32, 110, 111, 116, 10, 115, 116, 97, 114, 116, 101, 100, 44, 32, 103, 105, 97, 110, 116, 32, 114, 101, 112, 116, 105, 108, 101, 115, 32, 109, 117, 115, 116, 32, 98, 101, 32, 100, 101, 115, 116, 114, 111, 121, 101, 100, 32, 102, 111, 114, 32, 115, 112, 101, 99, 105, 101, 115, 32, 115, 117, 114, 118, 105, 118, 97, 108, 46, 0 };
+const uint8_t msgtxt_79[] = {
+84, 105, 109, 101, 83, 119, 97, 112, 32, 80, 108, 97, 110, 32, 105, 109, 112, 108, 101, 109, 101, 110, 116, 101, 100, 32, 119, 105, 116, 104, 32, 82, 79, 66, 79, 80, 73, 82, 65, 84, 69, 32, 97, 115, 32, 99, 97, 116, 97, 108, 121, 115, 116, 32, 97, 103, 101, 110, 116, 46, 10, 73, 102, 32, 121, 111, 117, 32, 115, 99, 97, 110, 110, 105, 110, 103, 32, 116, 104, 105, 115, 32, 97, 114, 101, 32, 110, 111, 116, 32, 111, 102, 32, 84, 72, 73, 83, 32, 84, 73, 77, 69, 32, 116, 104, 101, 110, 32, 116, 104, 101, 32, 109, 105, 115, 115, 105, 111, 110, 10, 99, 97, 110, 32, 115, 116, 105, 108, 108, 32, 115, 117, 99, 99, 101, 101, 100, 33, 0 };
+const uint8_t msgtxt_80[] = {
+73, 39, 109, 32, 106, 101, 116, 116, 105, 115, 111, 110, 105, 110, 103, 32, 115, 101, 108, 102, 32, 102, 114, 111, 109, 32, 97, 105, 114, 108, 111, 99, 107, 46, 32, 71, 111, 111, 100, 32, 108, 117, 99, 107, 32, 38, 32, 102, 111, 114, 103, 105, 118, 101, 32, 109, 101, 32, 102, 111, 114, 10, 105, 110, 118, 111, 108, 118, 105, 110, 103, 32, 121, 111, 117, 46, 0 };
+const uint8_t msgtxt_81[] = {
+34, 77, 97, 105, 110, 32, 108, 97, 110, 100, 105, 110, 103, 32, 115, 101, 113, 117, 101, 110, 99, 101, 32, 115, 101, 116, 32, 102, 111, 114, 32, 108, 101, 118, 101, 114, 32, 112, 117, 108, 108, 33, 34, 0 };
+const uint8_t msgtxt_82[] = {
+82, 111, 98, 111, 116, 32, 80, 105, 114, 97, 116, 101, 32, 108, 111, 111, 107, 115, 32, 115, 116, 114, 97, 110, 103, 101, 108, 121, 32, 97, 116, 32, 109, 101, 44, 32, 112, 105, 99, 107, 115, 32, 109, 101, 32, 117, 112, 10, 38, 32, 99, 97, 114, 114, 105, 101, 115, 32, 109, 101, 32, 111, 102, 102, 0 };
+const uint8_t msgtxt_83[] = {
+115, 104, 97, 112, 101, 100, 32, 102, 111, 114, 32, 115, 116, 114, 97, 110, 103, 101, 32, 110, 97, 114, 114, 111, 119, 32, 97, 108, 105, 101, 110, 32, 98, 111, 100, 105, 101, 115, 0 };
+const uint8_t msgtxt_84[] = {
+115, 104, 105, 112, 39, 115, 32, 101, 110, 103, 105, 110, 101, 115, 44, 32, 108, 105, 102, 101, 32, 115, 117, 112, 112, 111, 114, 116, 0 };
+const uint8_t msgtxt_85[] = {
+102, 111, 114, 99, 101, 32, 102, 105, 101, 108, 100, 32, 114, 101, 115, 101, 116, 0 };
+const uint8_t msgtxt_86[] = {
+114, 101, 100, 32, 38, 32, 98, 108, 117, 101, 32, 115, 108, 105, 100, 101, 32, 115, 119, 105, 116, 99, 104, 101, 115, 0 };
+const uint8_t msgtxt_87[] = {
+117, 115, 101, 32, 99, 111, 108, 111, 114, 0 };
+const uint8_t msgtxt_88[] = {
+97, 108, 105, 101, 110, 32, 118, 111, 105, 99, 101, 32, 115, 97, 121, 115, 32, 34, 70, 82, 69, 69, 72, 74, 76, 76, 71, 70, 82, 69, 69, 85, 89, 69, 34, 0 };
+const uint8_t msgtxt_89[] = {
+72, 105, 103, 104, 32, 112, 105, 116, 99, 104, 101, 100, 32, 101, 108, 101, 99, 116, 114, 111, 110, 105, 99, 32, 119, 104, 105, 110, 101, 0 };
+const uint8_t msgtxt_90[] = {
+38, 32, 97, 110, 111, 116, 104, 101, 114, 32, 108, 101, 115, 115, 32, 111, 98, 118, 105, 111, 117, 115, 32, 100, 101, 118, 105, 99, 101, 0 };
+const uint8_t msgtxt_91[] = {
+99, 111, 109, 98, 105, 110, 101, 100, 32, 108, 97, 118, 97, 116, 111, 114, 121, 32, 38, 32, 109, 101, 115, 115, 32, 104, 97, 108, 108, 33, 32, 82, 101, 109, 105, 110, 100, 115, 32, 109, 101, 32, 111, 102, 32, 109, 121, 10, 111, 108, 100, 32, 115, 99, 104, 111, 111, 108, 39, 115, 32, 99, 97, 102, 101, 116, 101, 114, 105, 97, 33, 32, 85, 71, 72, 33, 0 };
+const uint8_t msgtxt_92[] = {
+79, 85, 67, 72, 33, 0 };
+const uint8_t msgtxt_93[] = {
+77, 101, 32, 119, 97, 110, 100, 101, 114, 115, 32, 111, 102, 102, 33, 0 };
+const uint8_t msgtxt_94[] = {
+34, 80, 117, 108, 108, 32, 108, 101, 118, 101, 114, 32, 112, 108, 101, 97, 115, 101, 34, 0 };
+const uint8_t msgtxt_95[] = {
+0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+       msgtxt_92,
+       msgtxt_93,
+       msgtxt_94,
+       msgtxt_95,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   AIR NOW GOOD*/
+       168, 
+       8, 21, 0, 7, 
+       60, 
+/* AUTO  100   LIFEBOAT AIR*/
+       168, 
+       4, 24, 0, 7, 
+       58, 
+/* AUTO  100   GOOD AIR*/
+       176, 
+       4, 9, 13, 47, 8, 21, 0, 7, 
+       60, 
+/* AUTO  100   no pass*/
+       169, 
+       8, 1, 9, 2, 
+       10, 63, 
+/* AUTO  100   start*/
+       171, 
+       9, 1, 0, 1, 
+       2, 58, 8, 11, 
+/* AUTO  100   BLOCK SWAP*/
+       181, 
+       4, 18, 3, 34, 0, 35, 0, 34, 0, 26, 
+       72, 58, 
+/* AUTO  100   BLOCK SWAP*/
+       181, 
+       4, 8, 3, 34, 0, 35, 0, 34, 0, 26, 
+       72, 58, 
+/* AUTO  100   BLOCK SWAP*/
+       181, 
+       4, 1, 3, 34, 0, 35, 0, 34, 0, 26, 
+       72, 58, 
+/* AUTO  100   BLOCK SWAP*/
+       181, 
+       4, 11, 3, 34, 0, 35, 0, 34, 0, 26, 
+       72, 58, 
+/* AUTO  100   SET BLK CNTR*/
+       183, 
+       8, 26, 0, 26, 0, 3, 0, 5, 0, 3, 
+       60, 81, 79, 81, 
+/* AUTO  100   MEDICINE BALL*/
+       164, 
+       1, 40, 
+       24, 
+/* AUTO  100   REMOVE ABND*/
+       172, 
+       6, 7, 1, 8, 0, 8, 
+       59, 
+/* AUTO  100   breathe out*/
+       170, 
+       8, 18, 0, 1, 
+       81, 77, 73, 
+/* AUTO  0     */
+       196, 
+       15, 2, 
+       24, 
+/* AUTO  0     die*/
+       211, 
+       15, 0, 8, 7, 0, 6, 0, 18, 
+       60, 60, 88, 88, 
+/* AUTO  0     CONT DIE*/
+       199, 
+       9, 18, 
+       88, 88, 25, 61, 
+/* AUTO  0     BREATHED*/
+       214, 
+       15, 0, 0, 5, 8, 18, 0, 18, 9, 7, 
+       26, 60, 60, 
+/* AUTO  0     */
+       196, 
+       0, 1, 
+       81, 
+/* AUTO  100   HURRICANE*/
+       175, 
+       4, 10, 8, 21, 13, 47, 
+       124, 125, 61, 19, 
+/* AUTO  100   .*/
+       175, 
+       8, 6, 8, 7, 9, 5, 
+       22, 88, 88, 73, 
+/* AUTO  0     DIE VACUUM*/
+       195, 
+       88, 88, 23, 61, 
+/* AUTO  100   SET VACUUM*/
+       169, 
+       8, 7, 0, 6, 
+       22, 58, 
+/* AUTO  100   RESET VACUUM*/
+       172, 
+       8, 6, 9, 7, 0, 6, 
+       60, 
+/* AUTO  8     CAVEMAN*/
+       143, 8, 
+       8, 11, 9, 10, 3, 12, 
+       31, 33, 30, 61, 
+/* AUTO  100   CAVEMAN HERE*/
+       172, 
+       9, 11, 3, 12, 0, 11, 
+       58, 
+/* AUTO  100   CAVE COUNT*/
+       175, 
+       8, 10, 0, 11, 0, 2, 
+       60, 81, 77, 73, 
+/* AUTO  0     */
+       202, 
+       15, 4, 3, 12, 
+       31, 30, 34, 
+/* AUTO  0     WAKES*/
+       200, 
+       15, 0, 0, 10, 
+       60, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+/* AUTO  50    CAVE FOLLOWS*/
+       148, 50, 
+       7, 13, 13, 12, 9, 10, 0, 12, 14, 10, 
+       53, 
+/* AUTO  8     ME DEAD?*/
+       134, 8, 
+       13, 10, 
+       66, 19, 61, 
+/* AUTO  100   .*/
+       174, 
+       9, 28, 13, 17, 0, 4, 
+       81, 73, 77, 
+/* AUTO  0     AWAKE ME*/
+       200, 
+       15, 0, 0, 28, 
+       58, 
+/* AUTO  0     */
+       196, 
+       0, 4, 
+       81, 
+/* AUTO  30    NEAN ARGH*/
+       138, 30, 
+       3, 12, 9, 10, 
+       31, 42, 24, 
+/* AUTO  100   DROP NEAN*/
+       177, 
+       9, 10, 1, 13, 0, 13, 0, 12, 
+       59, 53, 
+/* AUTO  100   CAVE RM 13*/
+       172, 
+       4, 13, 2, 12, 0, 13, 
+       58, 
+/* AUTO  100   */
+       176, 
+       4, 13, 5, 12, 0, 13, 5, 17, 
+       60, 
+/* AUTO  100   ME IN 13*/
+       172, 
+       4, 13, 2, 17, 0, 13, 
+       58, 
+/* AUTO  100   DEAD ME*/
+       176, 
+       8, 7, 3, 17, 0, 17, 0, 10, 
+       72, 
+/* AUTO  100   DEAD NEAN*/
+       181, 
+       8, 7, 1, 13, 0, 12, 0, 10, 0, 13, 
+       72, 59, 
+/* AUTO  100   ME WANDERS*/
+       177, 
+       4, 1, 2, 17, 0, 17, 0, 2, 
+       143, 62, 
+/* AUTO  100   DROP THREAD*/
+       178, 
+       3, 23, 5, 21, 0, 23, 5, 21, 
+       75, 35, 48, 
+/* AUTO  100   ROBOT MOVES*/
+       183, 
+       14, 33, 0, 17, 7, 17, 0, 7, 7, 30, 
+       132, 54, 76, 60, 
+/* AUTO  100   BOMB*/
+       174, 
+       7, 30, 13, 35, 0, 3, 
+       81, 77, 73, 
+/* AUTO  0     */
+       198, 
+       15, 0, 
+       108, 19, 61, 
+/* AUTO  0     */
+       196, 
+       0, 3, 
+       81, 
+/* AUTO  100   CAPTAINS LOG*/
+       167, 
+       1, 45, 
+       8, 128, 88, 73, 
+/* AUTO  0     */
+       195, 
+       88, 88, 88, 129, 
+/* AUTO  0     */
+       195, 
+       88, 88, 88, 130, 
+/* AUTO  100   WIN FLAG*/
+       180, 
+       14, 33, 8, 25, 12, 17, 14, 10, 0, 22, 
+       58, 
+/* AUTO  100   ME WANDERS*/
+       177, 
+       4, 18, 2, 17, 0, 17, 0, 2, 
+       143, 62, 
+/* AUTO  100   DEAD END ROOM*/
+       168, 
+       4, 30, 8, 2, 
+       63, 
+};
+const uint8_t actions[] = {
+/* MOVE  RED   */
+       10, 58, 68, 
+       3, 48, 9, 7, 
+       1, 73, 138, 
+/* AUTO  0     */
+       206, 
+       4, 2, 9, 4, 0, 4, 
+       58, 8, 12, 
+/* AUTO  0     */
+       207, 
+       4, 12, 9, 14, 0, 14, 
+       58, 8, 36, 12, 
+/* LOOK  DEVI  */
+       10, 23, 73, 
+       3, 48, 9, 15, 
+       1, 17, 136, 
+/* MOVE  BLUE  */
+       5, 58, 12, 
+       3, 48, 
+       139, 73, 
+/* AUTO  0     */
+       203, 
+       3, 33, 0, 33, 
+       59, 88, 88, 88, 
+/* GET   DEVI  */
+       9, 10, 73, 
+       3, 48, 0, 48, 
+       1, 52, 
+/* GET   DEVI  .*/
+       13, 10, 73, 
+       4, 26, 14, 48, 0, 48, 
+       1, 52, 
+/* READ  DIAL  */
+       11, 7, 9, 
+       3, 3, 8, 12, 
+       40, 114, 113, 111, 
+/* MOVE  SLID  */
+       4, 58, 55, 
+       3, 48, 
+       137, 
+/* READ  DIAL  */
+       11, 7, 9, 
+       3, 21, 8, 12, 
+       122, 49, 122, 115, 
+/* LOOK  MACH  */
+       11, 23, 46, 
+       4, 26, 9, 15, 
+       1, 17, 134, 73, 
+/* AUTO  0     */
+       196, 
+       14, 48, 
+       140, 
+/* HELP  ANY   */
+       0, 37, 0, 
+       126, 
+/* EXHA  ANY   */
+       0, 68, 0, 
+       127, 
+/* GO    PLAT  */
+       1, 1, 70, 
+       16, 112, 
+/* WORK  OUT   */
+       0, 17, 28, 
+       14, 
+/* LOOK  CONT  */
+       10, 23, 17, 
+       2, 1, 9, 15, 
+       1, 17, 5, 
+/* LOOK  CONT  */
+       10, 23, 17, 
+       2, 11, 9, 15, 
+       1, 17, 5, 
+/* PUSH  BUTT  CONTROL ROOM*/
+       4, 27, 19, 
+       2, 11, 
+       1, 
+/* PUSH  BUTT  EXERSISE ROOM*/
+       4, 27, 19, 
+       2, 21, 
+       1, 
+/* GO    FIEL  */
+       23, 1, 11, 
+       2, 2, 4, 18, 0, 2, 0, 2, 0, 7, 
+       54, 53, 58, 73, 
+/* AUTO  0     */
+       200, 
+       3, 35, 0, 27, 
+       60, 
+/* GO    FIEL  .*/
+       5, 1, 11, 
+       3, 39, 
+       40, 112, 
+/* GO    FIEL  */
+       23, 1, 11, 
+       8, 24, 4, 2, 0, 18, 0, 2, 0, 7, 
+       54, 53, 60, 73, 
+/* AUTO  0     */
+       200, 
+       3, 34, 0, 27, 
+       58, 
+/* GO    FIEL  GOT BLOCK?*/
+       23, 1, 11, 
+       9, 24, 4, 2, 0, 1, 0, 2, 0, 7, 
+       54, 53, 60, 73, 
+/* AUTO  0     */
+       200, 
+       3, 34, 0, 27, 
+       58, 
+/* GO    FIEL  .*/
+       9, 1, 11, 
+       2, 19, 9, 15, 
+       16, 46, 
+/* GO    FIEL  */
+       23, 1, 11, 
+       2, 15, 4, 10, 0, 11, 0, 15, 0, 7, 
+       54, 53, 60, 76, 
+/* GO    FIEL  */
+       23, 1, 11, 
+       2, 15, 4, 11, 0, 10, 0, 15, 0, 7, 
+       54, 53, 58, 76, 
+/* GET   BREA  */
+       19, 10, 42, 
+       9, 7, 0, 1, 0, 5, 0, 1, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       201, 
+       0, 18, 0, 5, 
+       58, 60, 
+/* GO    FIEL  */
+       23, 1, 11, 
+       2, 6, 4, 4, 0, 8, 0, 6, 0, 7, 
+       54, 53, 60, 76, 
+/* GO    FIEL  */
+       23, 1, 11, 
+       2, 6, 4, 8, 0, 4, 0, 6, 0, 7, 
+       54, 53, 58, 76, 
+/* HYPE  ANY   */
+       15, 38, 0, 
+       8, 8, 9, 7, 0, 8, 
+       43, 60, 88, 88, 
+/* HYPE  ANY   */
+       23, 38, 0, 
+       0, 8, 9, 7, 0, 5, 0, 18, 9, 8, 
+       1, 58, 60, 60, 
+/* BREA  DEEP  */
+       19, 39, 27, 
+       0, 8, 9, 7, 0, 5, 0, 18, 
+       1, 58, 60, 60, 
+/* WEAR  BAND  */
+       6, 56, 47, 
+       1, 26, 
+       1, 32, 48, 
+/* BREA  OUT   */
+       19, 39, 28, 
+       9, 5, 0, 5, 0, 18, 0, 1, 
+       58, 58, 81, 73, 
+/* AUTO  0     */
+       206, 
+       0, 5, 0, 1, 9, 8, 
+       79, 81, 1, 
+/* AUTO  0     */
+       215, 
+       0, 7, 0, 1, 0, 8, 8, 8, 9, 12, 
+       79, 81, 60, 1, 
+/* AUTO  0     HYPER CAVE*/
+       215, 
+       0, 17, 0, 1, 0, 8, 8, 8, 8, 12, 
+       79, 81, 60, 1, 
+/* GO    FIEL  */
+       23, 1, 11, 
+       2, 2, 4, 1, 0, 2, 0, 2, 0, 7, 
+       54, 53, 58, 73, 
+/* AUTO  0     */
+       200, 
+       3, 35, 0, 27, 
+       60, 
+/* BREA  IN    */
+       19, 39, 29, 
+       9, 7, 0, 1, 0, 5, 0, 1, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       201, 
+       0, 18, 0, 5, 
+       58, 60, 
+/* SAY   123   123*/
+       19, 29, 13, 
+       0, 2, 0, 7, 9, 2, 9, 18, 
+       58, 52, 73, 3, 
+/* AUTO  0     */
+       199, 
+       0, 1, 
+       4, 7, 9, 54, 
+/* SAY   474   */
+       15, 29, 16, 
+       9, 2, 0, 2, 0, 1, 
+       3, 58, 4, 54, 
+/* PUSH  BUTT  AIRLOCK FIX*/
+       9, 27, 19, 
+       2, 1, 0, 47, 
+       1, 59, 
+/* LOOK  CONT  */
+       9, 23, 17, 
+       3, 3, 9, 15, 
+       1, 5, 
+/* PUSH  BUTT  */
+       10, 27, 19, 
+       3, 3, 9, 4, 
+       1, 8, 11, 
+/* PUSH  BUTT  */
+       17, 27, 19, 
+       2, 16, 8, 13, 8, 14, 8, 12, 
+       8, 144, 
+/* LOOK  DIAL  */
+       5, 23, 9, 
+       9, 15, 
+       1, 13, 
+/* LOOK  META  */
+       7, 23, 24, 
+       9, 15, 
+       1, 17, 21, 20, 
+/* LOOK  PLAN  */
+       23, 23, 30, 
+       9, 9, 3, 4, 0, 9, 0, 5, 0, 4, 
+       27, 58, 75, 76, 
+/* SMEL  FLOW  */
+       15, 46, 31, 
+       3, 5, 9, 7, 9, 18, 
+       1, 28, 30, 29, 
+/* EAT   FLOW  */
+       11, 40, 31, 
+       3, 5, 0, 5, 
+       29, 28, 25, 61, 
+/* CRUS  FLOW  */
+       13, 48, 31, 
+       3, 5, 0, 5, 9, 7, 
+       59, 73, 
+/* AUTO  0     */
+       199, 
+       9, 18, 
+       29, 28, 25, 61, 
+/* AUTO  0     */
+       202, 
+       2, 12, 0, 10, 
+       58, 31, 29, 
+/* AUTO  0     */
+       210, 
+       2, 12, 0, 2, 0, 40, 0, 2, 
+       81, 79, 81, 
+/* GET   NEAN  */
+       5, 10, 32, 
+       2, 12, 
+       14, 32, 
+/* DRAG  NEAN  */
+       19, 66, 32, 
+       2, 12, 0, 12, 0, 13, 8, 10, 
+       1, 52, 52, 66, 
+/* CRUS  FLOW  */
+       13, 48, 31, 
+       3, 5, 0, 5, 8, 7, 
+       1, 59, 
+/* HIT   NEAN  .*/
+       11, 51, 32, 
+       3, 12, 9, 10, 
+       31, 33, 30, 61, 
+/* GO    OUTE  */
+       6, 1, 71, 
+       4, 24, 
+       1, 125, 61, 
+/* MOVE  NEAN  */
+       4, 58, 32, 
+       3, 12, 
+       1, 
+/* LOOK  DISP  */
+       10, 23, 22, 
+       3, 37, 9, 15, 
+       17, 117, 31, 
+/* DROP  NEAN  */
+       14, 18, 32, 
+       1, 12, 0, 12, 0, 13, 
+       1, 53, 59, 
+/* WEAR  BAND  */
+       14, 56, 47, 
+       3, 7, 0, 7, 0, 8, 
+       1, 52, 52, 
+/* REMO  BAND  */
+       9, 57, 47, 
+       3, 8, 0, 8, 
+       1, 59, 
+/* UNRA  BAND  */
+       18, 59, 47, 
+       3, 7, 0, 8, 0, 7, 0, 14, 
+       1, 59, 72, 
+/* LOOK  CONT  */
+       10, 23, 17, 
+       2, 16, 9, 15, 
+       1, 17, 5, 
+/* HIT   BAG   */
+       14, 51, 66, 
+       3, 41, 0, 41, 0, 42, 
+       1, 108, 72, 
+/* PUSH  BUTT  */
+       14, 27, 19, 
+       2, 16, 8, 13, 9, 14, 
+       1, 8, 11, 
+/* PUSH  BUTT  */
+       11, 27, 19, 
+       2, 16, 9, 13, 
+       8, 36, 38, 12, 
+/* GO    HOLE  */
+       6, 1, 60, 
+       2, 27, 
+       1, 80, 76, 
+/* PUSH  BUTT  TRANSFER*/
+       23, 27, 19, 
+       2, 16, 8, 13, 8, 14, 0, 12, 9, 12, 
+       1, 3, 73, 59, 
+/* AUTO  0     */
+       198, 
+       6, 8, 
+       39, 61, 63, 
+/* AUTO  0     */
+       211, 
+       0, 17, 0, 8, 0, 7, 0, 14, 
+       53, 59, 59, 60, 
+/* AUTO  0     */
+       203, 
+       0, 13, 0, 12, 
+       54, 58, 56, 76, 
+/* AUTO  0     */
+       203, 
+       0, 19, 0, 13, 
+       28, 40, 58, 60, 
+/* AUTO  0     */
+       200, 
+       3, 4, 0, 4, 
+       59, 
+/* AUTO  0     */
+       206, 
+       0, 4, 0, 25, 0, 4, 
+       81, 79, 81, 
+/* LOOK  MACH  */
+       9, 23, 46, 
+       4, 27, 9, 15, 
+       17, 141, 
+/* OPEN  EYES  */
+       6, 61, 38, 
+       8, 15, 
+       1, 57, 76, 
+/* LOOK  SELF  */
+       11, 23, 36, 
+       9, 15, 8, 12, 
+       1, 17, 31, 41, 
+/* TIE   BAND  */
+       5, 69, 47, 
+       3, 23, 
+       1, 47, 
+/* SAY   FREE  */
+       23, 29, 34, 
+       2, 16, 8, 13, 9, 14, 9, 12, 0, 14, 
+       58, 8, 36, 12, 
+/* CLOS  EYES  */
+       2, 63, 38, 
+       1, 56, 76, 
+/* EAT   PLAN  */
+       9, 40, 30, 
+       3, 4, 0, 4, 
+       1, 59, 
+/* MOVE  RED   .*/
+       10, 58, 68, 
+       3, 48, 8, 7, 
+       1, 6, 18, 
+/* PUSH  LEVE  */
+       1, 27, 20, 
+       16, 45, 
+/* DRAG  LEVE  */
+       1, 66, 20, 
+       16, 45, 
+/* LOOK  HYDR  */
+       15, 23, 44, 
+       3, 18, 14, 4, 0, 4, 
+       17, 27, 53, 76, 
+/* TIE   BAND  TO WHAT?*/
+       5, 69, 47, 
+       3, 14, 
+       1, 47, 
+/* LOOK  CONT  */
+       9, 23, 17, 
+       3, 21, 9, 15, 
+       17, 5, 
+/* LOOK  LEVE  */
+       9, 23, 20, 
+       3, 21, 9, 15, 
+       17, 49, 
+/* TO    LEVE  */
+       23, 71, 20, 
+       3, 21, 0, 14, 0, 22, 3, 14, 0, 23, 
+       59, 53, 53, 1, 
+/* TO    LEVE  */
+       18, 71, 20, 
+       3, 21, 0, 23, 3, 23, 0, 22, 
+       59, 53, 1, 
+/* TO    TREA  */
+       18, 71, 59, 
+       3, 21, 3, 23, 0, 23, 0, 25, 
+       59, 53, 1, 
+/* TO    TREA  */
+       23, 71, 59, 
+       3, 21, 3, 14, 0, 14, 0, 25, 0, 23, 
+       59, 53, 53, 1, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* UNTI  BAND  */
+       23, 70, 47, 
+       3, 23, 0, 25, 0, 22, 0, 23, 0, 14, 
+       59, 59, 72, 1, 
+/* UNTI  BAND  */
+       23, 70, 47, 
+       3, 25, 0, 23, 0, 22, 0, 25, 0, 14, 
+       59, 59, 72, 1, 
+/* LOOK  ATOM  DIAL - AIR*/
+       11, 23, 14, 
+       3, 21, 9, 15, 
+       1, 21, 121, 119, 
+/* UNTI  BAND  */
+       13, 70, 47, 
+       3, 26, 0, 26, 0, 14, 
+       72, 1, 
+/* LOOK  ATOM  BLOCK - BOMB*/
+       11, 23, 14, 
+       3, 34, 9, 15, 
+       1, 21, 121, 120, 
+/* TO    BAND  */
+       13, 71, 47, 
+       3, 14, 0, 26, 0, 14, 
+       72, 1, 
+/* TIE   BAND  */
+       5, 69, 47, 
+       3, 26, 
+       16, 15, 
+/* TIE   BAND  */
+       5, 69, 47, 
+       3, 14, 
+       16, 15, 
+/* LOOK  BAND  */
+       10, 23, 47, 
+       3, 26, 9, 15, 
+       1, 17, 50, 
+/* GO    BAND  */
+       7, 1, 47, 
+       1, 26, 
+       1, 28, 27, 30, 
+/* GO    BAND  LOOP ROUTINE*/
+       5, 1, 47, 
+       2, 26, 
+       1, 73, 
+/* AUTO  0     IF HAVE LOOP*/
+       211, 
+       2, 26, 4, 2, 0, 15, 0, 27, 
+       80, 54, 53, 76, 
+/* AUTO  0     */
+       211, 
+       2, 26, 4, 20, 0, 26, 0, 27, 
+       80, 54, 53, 76, 
+/* AUTO  0     */
+       207, 
+       2, 26, 0, 14, 0, 27, 
+       80, 54, 53, 76, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* DRAG  NEAN  .*/
+       11, 66, 32, 
+       3, 12, 9, 10, 
+       31, 33, 30, 61, 
+/* FEEL  BAND  .*/
+       7, 42, 47, 
+       3, 26, 
+       1, 28, 27, 40, 
+/* READ  SIGN  */
+       5, 7, 58, 
+       3, 36, 
+       17, 110, 
+/* LOOK  BLOC  */
+       11, 23, 57, 
+       3, 34, 9, 15, 
+       17, 122, 115, 109, 
+/* DROP  RAIL  */
+       9, 18, 53, 
+       3, 28, 0, 20, 
+       1, 60, 
+/* LOOK  CORP  */
+       18, 23, 41, 
+       8, 19, 3, 10, 0, 19, 0, 7, 
+       9, 60, 53, 
+/* GO    TREA  */
+       10, 1, 59, 
+       2, 24, 0, 16, 
+       1, 54, 76, 
+/* GET   RAIL  */
+       10, 10, 53, 
+       3, 28, 0, 20, 
+       1, 58, 102, 
+/* WALK  ANY   */
+       14, 8, 0, 
+       4, 16, 9, 20, 0, 11, 
+       1, 54, 76, 
+/* RUN   ANY   */
+       14, 9, 0, 
+       4, 16, 9, 20, 0, 11, 
+       1, 54, 76, 
+/* WALK  ANY   WONT BUDGE*/
+       13, 8, 0, 
+       4, 16, 13, 25, 13, 22, 
+       16, 45, 
+/* RUN   ANY   */
+       23, 9, 0, 
+       4, 16, 13, 25, 13, 22, 9, 21, 0, 21, 
+       58, 49, 34, 30, 
+/* RUN   ANY   */
+       17, 9, 0, 
+       4, 16, 13, 25, 13, 22, 8, 21, 
+       16, 45, 
+/* DRAG  BAND  */
+       5, 66, 47, 
+       3, 23, 
+       16, 45, 
+/* LOOK  DISP  */
+       10, 23, 22, 
+       2, 29, 9, 15, 
+       17, 104, 73, 
+/* AUTO  0     */
+       197, 
+       9, 23, 
+       17, 31, 
+/* PUSH  BUTT  */
+       19, 27, 19, 
+       2, 29, 9, 23, 0, 23, 0, 30, 
+       58, 53, 17, 73, 
+/* AUTO  0     */
+       199, 
+       0, 12, 
+       53, 31, 8, 116, 
+/* PUSH  BUTT  */
+       10, 27, 19, 
+       2, 31, 9, 22, 
+       105, 19, 61, 
+/* PUSH  BUTT  END GAME*/
+       10, 27, 19, 
+       2, 31, 8, 22, 
+       105, 106, 63, 
+/* LOOK  PIRA  */
+       6, 23, 56, 
+       3, 32, 
+       40, 21, 107, 
+/* PUSH  BUTT  */
+       19, 27, 19, 
+       3, 3, 8, 4, 9, 24, 0, 24, 
+       1, 58, 3, 73, 
+/* AUTO  0     */
+       205, 
+       8, 27, 0, 25, 0, 35, 
+       58, 59, 
+/* LOOK  VIEW  */
+       7, 23, 54, 
+       3, 20, 
+       17, 122, 123, 73, 
+/* AUTO  0     */
+       196, 
+       9, 25, 
+       103, 
+/* PUSH  BUTT  */
+       19, 27, 19, 
+       3, 3, 8, 24, 8, 4, 0, 24, 
+       1, 60, 3, 73, 
+/* AUTO  0     */
+       205, 
+       8, 27, 0, 25, 0, 35, 
+       58, 59, 
+/* WALK  ANY   */
+       10, 8, 0, 
+       4, 16, 8, 20, 
+       1, 21, 34, 
+/* RUN   ANY   */
+       10, 9, 0, 
+       4, 16, 8, 20, 
+       1, 21, 34, 
+/* GO    DISP  */
+       10, 1, 22, 
+       2, 30, 0, 17, 
+       1, 54, 76, 
+/* LOOK  NEAN  .*/
+       15, 23, 32, 
+       3, 29, 9, 23, 9, 15, 
+       1, 17, 37, 31, 
+/* LOOK  NEAN  .*/
+       12, 23, 32, 
+       3, 12, 9, 15, 8, 10, 
+       29, 
+/* SAY   ANY   */
+       13, 29, 0, 
+       9, 7, 8, 12, 9, 18, 
+       1, 24, 
+/* LOOK  NEAN  */
+       11, 23, 32, 
+       3, 12, 9, 15, 
+       1, 17, 37, 31, 
+/* LOOK  BAND  */
+       11, 23, 47, 
+       3, 7, 9, 15, 
+       6, 7, 20, 35, 
+/* READ  DIAL  */
+       14, 7, 9, 
+       2, 1, 8, 12, 9, 15, 
+       1, 17, 135, 
+/* READ  DIAL  */
+       14, 7, 9, 
+       2, 11, 8, 12, 9, 15, 
+       1, 17, 131, 
+/* READ  DIAL  */
+       15, 7, 9, 
+       2, 16, 8, 12, 9, 15, 
+       40, 114, 113, 118, 
+/* JUMP  ANY   */
+       0, 6, 0, 
+       51, 
+/* RUN   ANY   */
+       0, 9, 0, 
+       51, 
+/* WALK  ANY   */
+       0, 8, 0, 
+       51, 
+/* TO    ANY   */
+       2, 71, 0, 
+       16, 15, 48, 
+/* HIT   ANY   */
+       1, 51, 0, 
+       16, 15, 
+/* INVE  ANY   */
+       4, 45, 0, 
+       9, 15, 
+       66, 
+/* GET   INVE  */
+       4, 10, 7, 
+       9, 15, 
+       66, 
+/* USE   ANY   */
+       1, 33, 0, 
+       16, 15, 
+/* PUSH  BUTT  */
+       13, 27, 19, 
+       2, 29, 14, 30, 0, 30, 
+       1, 53, 
+/* SAY   ANY   */
+       13, 29, 0, 
+       9, 7, 9, 12, 9, 18, 
+       1, 85, 
+/* SAVE  GAME  */
+       1, 35, 8, 
+       1, 71, 
+/* QUIT  ANY   */
+       1, 36, 0, 
+       1, 63, 
+/* FEEL  ANY   */
+       2, 42, 0, 
+       1, 28, 6, 
+/* THIN  ANY   */
+       1, 62, 0, 
+       1, 85, 
+/* READ  ANY   */
+       6, 7, 0, 
+       9, 15, 
+       16, 112, 113, 
+/* PUSH  NEAN  */
+       5, 27, 32, 
+       3, 12, 
+       21, 34, 
+/* PUSH  BUTT  */
+       9, 27, 19, 
+       3, 30, 0, 30, 
+       1, 59, 
+/* GO    FIEL  */
+       23, 1, 11, 
+       2, 47, 4, 9, 0, 24, 0, 46, 0, 47, 
+       1, 54, 53, 53, 
+/* GO    FIEL  */
+       23, 1, 11, 
+       2, 47, 4, 24, 0, 9, 0, 46, 0, 47, 
+       1, 54, 53, 53, 
+/* GO    FIEL  */
+       18, 1, 11, 
+       5, 47, 4, 9, 0, 24, 0, 46, 
+       1, 54, 53, 
+/* GO    FIEL  */
+       18, 1, 11, 
+       5, 47, 4, 24, 0, 9, 0, 46, 
+       1, 54, 53, 
+/* OPEN  ANY   */
+       1, 61, 0, 
+       16, 112, 
+/* LOOK  PLAT  */
+       4, 23, 70, 
+       9, 15, 
+       133, 
+/* LOOK  HOLE  */
+       9, 23, 60, 
+       2, 27, 9, 15, 
+       17, 50, 
+/* AUTO  0     */
+/* DRAG  BAND  */
+       18, 66, 47, 
+       3, 7, 0, 8, 0, 7, 0, 14, 
+       1, 59, 72, 
+/* GO    LIFE  */
+       5, 1, 74, 
+       4, 24, 
+       16, 112, 
+/* BREA  ANY   */
+       15, 39, 0, 
+       9, 7, 0, 5, 0, 18, 
+       1, 60, 60, 26, 
+/* KICK  BALL  */
+       5, 73, 64, 
+       3, 40, 
+       1, 142, 
+/* LOOK  ME    */
+       8, 23, 35, 
+       9, 15, 3, 17, 
+       73, 
+/* AUTO  0     */
+       196, 
+       9, 28, 
+       29, 
+/* AUTO  0     */
+       206, 
+       8, 19, 0, 7, 0, 19, 
+       9, 53, 60, 
+/* AUTO  0     */
+       196, 
+       8, 28, 
+       44, 
+/* AUTO  0     */
+/* LOOK  ANY   */
+       7, 23, 0, 
+       9, 15, 
+       1, 17, 6, 76, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *CRAW */
+       195, 82, 65, 87,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* READ */
+       82, 69, 65, 68,
+       /* WALK */
+       87, 65, 76, 75,
+       /* RUN */
+       82, 85, 78, 32,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* *HOLD */
+       200, 79, 76, 68,
+       /* *CATC */
+       195, 65, 84, 67,
+       /* . */
+       46, 32, 32, 32,
+       /* WORK */
+       87, 79, 82, 75,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *RELE */
+       210, 69, 76, 69,
+       /* *GIVE */
+       199, 73, 86, 69,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *DESC */
+       196, 69, 83, 67,
+       /* *SEE */
+       211, 69, 69, 32,
+       /* PUSH */
+       80, 85, 83, 72,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *SPEA */
+       211, 80, 69, 65,
+       /* *TALK */
+       212, 65, 76, 75,
+       /* *ASK */
+       193, 83, 75, 32,
+       /* USE */
+       85, 83, 69, 32,
+       /* *WITH */
+       215, 73, 84, 72,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* HELP */
+       72, 69, 76, 80,
+       /* HYPE */
+       72, 89, 80, 69,
+       /* BREA */
+       66, 82, 69, 65,
+       /* EAT */
+       69, 65, 84, 32,
+       /* *TAST */
+       212, 65, 83, 84,
+       /* FEEL */
+       70, 69, 69, 76,
+       /* *TOUC */
+       212, 79, 85, 67,
+       /*  */
+       32, 32, 32, 32,
+       /* INVE */
+       73, 78, 86, 69,
+       /* SMEL */
+       83, 77, 69, 76,
+       /* *SNIF */
+       211, 78, 73, 70,
+       /* CRUS */
+       67, 82, 85, 83,
+       /* *CRUM */
+       195, 82, 85, 77,
+       /* *SMAS */
+       211, 77, 65, 83,
+       /* HIT */
+       72, 73, 84, 32,
+       /* *TEAR */
+       212, 69, 65, 82,
+       /* *RIP */
+       210, 73, 80, 32,
+       /* *PUNC */
+       208, 85, 78, 67,
+       /* . */
+       46, 32, 32, 32,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* REMO */
+       82, 69, 77, 79,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* UNRA */
+       85, 78, 82, 65,
+       /* *UNDO */
+       213, 78, 68, 79,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* THIN */
+       84, 72, 73, 78,
+       /* CLOS */
+       67, 76, 79, 83,
+       /* *SHUT */
+       211, 72, 85, 84,
+       /*  */
+       32, 32, 32, 32,
+       /* DRAG */
+       68, 82, 65, 71,
+       /* *PULL */
+       208, 85, 76, 76,
+       /* EXHA */
+       69, 88, 72, 65,
+       /* TIE */
+       84, 73, 69, 32,
+       /* UNTI */
+       85, 78, 84, 73,
+       /* TO */
+       84, 79, 32, 32,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* KICK */
+       75, 73, 67, 75,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORTH */
+       78, 79, 82, 84,
+       /* SOUTH */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* INVE */
+       73, 78, 86, 69,
+       /* GAME */
+       71, 65, 77, 69,
+       /* DIAL */
+       68, 73, 65, 76,
+       /* *SCRI */
+       211, 67, 82, 73,
+       /* FIEL */
+       70, 73, 69, 76,
+       /* BLUE */
+       66, 76, 85, 69,
+       /* 123 */
+       49, 50, 51, 32,
+       /* ATOM */
+       65, 84, 79, 77,
+       /* *PICT */
+       208, 73, 67, 84,
+       /* 474 */
+       52, 55, 52, 32,
+       /* CONT */
+       67, 79, 78, 84,
+       /* *CONS */
+       195, 79, 78, 83,
+       /* BUTT */
+       66, 85, 84, 84,
+       /* LEVE */
+       76, 69, 86, 69,
+       /* *HAND */
+       200, 65, 78, 68,
+       /* DISP */
+       68, 73, 83, 80,
+       /* *CASE */
+       195, 65, 83, 69,
+       /* META */
+       77, 69, 84, 65,
+       /* *TUNN */
+       212, 85, 78, 78,
+       /* *ROOM */
+       210, 79, 79, 77,
+       /* DEEP */
+       68, 69, 69, 80,
+       /* OUT */
+       79, 85, 84, 32,
+       /* IN */
+       73, 78, 32, 32,
+       /* PLAN */
+       80, 76, 65, 78,
+       /* FLOW */
+       70, 76, 79, 87,
+       /* NEAN */
+       78, 69, 65, 78,
+       /* *CAVE */
+       195, 65, 86, 69,
+       /* FREE */
+       70, 82, 69, 69,
+       /* ME */
+       77, 69, 32, 32,
+       /* SELF */
+       83, 69, 76, 70,
+       /* *MYSE */
+       205, 89, 83, 69,
+       /* EYES */
+       69, 89, 69, 83,
+       /* FREE */
+       70, 82, 69, 69,
+       /* ARGH */
+       65, 82, 71, 72,
+       /* CORP */
+       67, 79, 82, 80,
+       /* BREA */
+       66, 82, 69, 65,
+       /* PASS */
+       80, 65, 83, 83,
+       /* HYDR */
+       72, 89, 68, 82,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* MACH */
+       77, 65, 67, 72,
+       /* BAND */
+       66, 65, 78, 68,
+       /* *THRE */
+       212, 72, 82, 69,
+       /* *LOOP */
+       204, 79, 79, 80,
+       /* *ITSE */
+       201, 84, 83, 69,
+       /* *END */
+       197, 78, 68, 32,
+       /* *CENT */
+       195, 69, 78, 84,
+       /* RAIL */
+       82, 65, 73, 76,
+       /* VIEW */
+       86, 73, 69, 87,
+       /* SLID */
+       83, 76, 73, 68,
+       /* PIRA */
+       80, 73, 82, 65,
+       /* BLOC */
+       66, 76, 79, 67,
+       /* SIGN */
+       83, 73, 71, 78,
+       /* TREA */
+       84, 82, 69, 65,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* BOXE */
+       66, 79, 88, 69,
+       /* *CRAT */
+       195, 82, 65, 84,
+       /* *BOX */
+       194, 79, 88, 32,
+       /* BALL */
+       66, 65, 76, 76,
+       /* *MEDI */
+       205, 69, 68, 73,
+       /* BAG */
+       66, 65, 71, 32,
+       /* *CLOT */
+       195, 76, 79, 84,
+       /* RED */
+       82, 69, 68, 32,
+       /* WAFE */
+       87, 65, 70, 69,
+       /* PLAT */
+       80, 76, 65, 84,
+       /* OUTE */
+       79, 85, 84, 69,
+       /* *SPAC */
+       211, 80, 65, 67,
+       /* DEVI */
+       68, 69, 86, 73,
+       /* LIFE */
+       76, 73, 70, 69,
+       /* FAST */
+       70, 65, 83, 84,
+       /* SLOW */
+       83, 76, 79, 87,
+       /* HANG */
+       72, 65, 78, 71,
+       /* ENGI */
+       69, 78, 71, 73,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t automap[] = {
+       /* PLAN */
+       80, 76, 65, 78,
+       4,
+       /* FLOW */
+       70, 76, 79, 87,
+       5,
+       /* BAND */
+       66, 65, 78, 68,
+       7,
+       /* CORP */
+       67, 79, 82, 80,
+       10,
+       /* BAND */
+       66, 65, 78, 68,
+       14,
+       /* ME */
+       77, 69, 32, 32,
+       17,
+       /* BAND */
+       66, 65, 78, 68,
+       23,
+       /* BAND */
+       66, 65, 78, 68,
+       26,
+       /* BLOC */
+       66, 76, 79, 67,
+       34,
+       /* BLOC */
+       66, 76, 79, 67,
+       35,
+       /* BALL */
+       66, 65, 76, 76,
+       40,
+       /* BAG */
+       66, 65, 71, 32,
+       41,
+       /* BAG */
+       66, 65, 71, 32,
+       42,
+       /* WAFE */
+       87, 65, 70, 69,
+       45,
+       /* DEVI */
+       68, 69, 86, 73,
+       48,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv12.c b/Applications/games/adv12.c
new file mode 100644 (file)
index 0000000..c4ace04
--- /dev/null
@@ -0,0 +1,3262 @@
+#define NUM_OBJ 79
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 100;
+const uint8_t lightfill = 100;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 7;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 37;
+const uint8_t startloc = 4;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+82, 111, 121, 97, 108, 32, 112, 97, 108, 97, 99, 101, 0 };
+const uint8_t loctxt_2[] = {
+80, 101, 114, 115, 105, 97, 110, 32, 99, 105, 116, 121, 0 };
+const uint8_t loctxt_3[] = {
+80, 101, 114, 115, 105, 97, 110, 32, 99, 105, 116, 121, 0 };
+const uint8_t loctxt_4[] = {
+80, 101, 114, 115, 105, 97, 110, 32, 99, 105, 116, 121, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 32, 97, 109, 32, 97, 116, 32, 97, 32, 80, 101, 114, 115, 105, 97, 110, 32, 98, 97, 121, 0 };
+const uint8_t loctxt_6[] = {
+42, 73, 32, 97, 109, 32, 111, 110, 32, 97, 32, 108, 97, 114, 103, 101, 32, 115, 104, 105, 112, 0 };
+const uint8_t loctxt_7[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 97, 110, 100, 121, 32, 98, 101, 97, 99, 104, 0 };
+const uint8_t loctxt_8[] = {
+0 };
+const uint8_t loctxt_9[] = {
+100, 101, 110, 115, 101, 32, 106, 117, 110, 103, 108, 101, 0 };
+const uint8_t loctxt_10[] = {
+100, 101, 110, 115, 101, 32, 106, 117, 110, 103, 108, 101, 0 };
+const uint8_t loctxt_11[] = {
+100, 97, 109, 112, 32, 99, 97, 118, 101, 0 };
+const uint8_t loctxt_12[] = {
+99, 114, 111, 119, 39, 115, 45, 110, 101, 115, 116, 0 };
+const uint8_t loctxt_13[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 105, 115, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 105, 115, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_15[] = {
+103, 114, 97, 115, 115, 32, 104, 117, 116, 0 };
+const uint8_t loctxt_16[] = {
+100, 97, 114, 107, 32, 99, 97, 118, 101, 114, 110, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 109, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 105, 115, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_19[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 114, 111, 99, 107, 121, 32, 115, 116, 114, 97, 110, 100, 0 };
+const uint8_t loctxt_20[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 108, 111, 110, 103, 32, 115, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t loctxt_21[] = {
+115, 97, 99, 114, 101, 100, 32, 116, 101, 109, 112, 108, 101, 0 };
+const uint8_t loctxt_22[] = {
+115, 97, 99, 114, 101, 100, 32, 116, 101, 109, 112, 108, 101, 0 };
+const uint8_t loctxt_23[] = {
+104, 105, 100, 100, 101, 110, 32, 99, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_24[] = {
+104, 105, 100, 100, 101, 110, 32, 99, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_25[] = {
+115, 97, 99, 114, 101, 100, 32, 116, 101, 109, 112, 108, 101, 0 };
+const uint8_t loctxt_26[] = {
+0 };
+const uint8_t loctxt_27[] = {
+109, 117, 115, 116, 121, 32, 104, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_28[] = {
+115, 109, 97, 108, 108, 32, 99, 97, 98, 105, 110, 0 };
+const uint8_t loctxt_29[] = {
+99, 111, 122, 121, 32, 99, 111, 116, 0 };
+const uint8_t loctxt_30[] = {
+100, 97, 109, 112, 32, 103, 114, 111, 116, 116, 111, 0 };
+const uint8_t loctxt_31[] = {
+0 };
+const uint8_t loctxt_32[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 103, 114, 97, 115, 115, 121, 32, 112, 108, 97, 105, 110, 0 };
+const uint8_t loctxt_33[] = {
+100, 101, 101, 112, 32, 112, 105, 116, 0 };
+const uint8_t loctxt_34[] = {
+100, 101, 101, 112, 32, 112, 105, 116, 0 };
+const uint8_t loctxt_35[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 101, 110, 111, 114, 109, 111, 117, 115, 32, 99, 97, 118, 101, 0 };
+const uint8_t loctxt_36[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 101, 110, 111, 114, 109, 111, 117, 115, 32, 99, 97, 118, 101, 0 };
+const uint8_t loctxt_37[] = {
+76, 79, 84, 32, 79, 70, 32, 84, 82, 79, 85, 66, 76, 69, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 2, 0, 0, 0 } }, 
+               { loctxt_2,  { 0, 3, 0, 0, 0, 0 } }, 
+               { loctxt_3,  { 2, 0, 4, 5, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 0, 3, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 3, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_7,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_8,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 10, 9, 9, 7, 0, 0 } }, 
+               { loctxt_10,  { 10, 9, 10, 10, 0, 0 } }, 
+               { loctxt_11,  { 0, 0, 0, 10, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 0, 0, 0, 6 } }, 
+               { loctxt_13,  { 14, 0, 0, 18, 0, 0 } }, 
+               { loctxt_14,  { 0, 13, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 14, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 0, 0, 0, 14 } }, 
+               { loctxt_18,  { 0, 0, 13, 0, 0, 0 } }, 
+               { loctxt_19,  { 0, 32, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_21,  { 0, 0, 0, 22, 0, 0 } }, 
+               { loctxt_22,  { 25, 0, 21, 0, 0, 0 } }, 
+               { loctxt_23,  { 22, 0, 0, 24, 0, 0 } }, 
+               { loctxt_24,  { 0, 0, 23, 0, 0, 0 } }, 
+               { loctxt_25,  { 0, 22, 0, 0, 0, 0 } }, 
+               { loctxt_26,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_27,  { 23, 0, 30, 0, 0, 0 } }, 
+               { loctxt_28,  { 0, 0, 0, 0, 6, 0 } }, 
+               { loctxt_29,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 27, 0, 0 } }, 
+               { loctxt_31,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_32,  { 19, 0, 0, 0, 0, 0 } }, 
+               { loctxt_33,  { 0, 34, 0, 0, 0, 0 } }, 
+               { loctxt_34,  { 33, 0, 0, 0, 0, 0 } }, 
+               { loctxt_35,  { 34, 0, 0, 36, 0, 0 } }, 
+               { loctxt_36,  { 0, 0, 35, 0, 0, 0 } }, 
+               { loctxt_37,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       1,
+       1,
+       2,
+       5,
+       6,
+       6,
+       0,
+       13,
+       0,
+       15,
+       11,
+       0,
+       7,
+       7,
+       0,
+       0,
+       10,
+       19,
+       20,
+       0,
+       0,
+       24,
+       0,
+       0,
+       19,
+       0,
+       14,
+       4,
+       3,
+       5,
+       18,
+       4,
+       0,
+       3,
+       3,
+       0,
+       0,
+       0,
+       14,
+       23,
+       25,
+       28,
+       29,
+       30,
+       34,
+       34,
+       36,
+       5,
+       0,
+       0,
+       0,
+       0,
+       8,
+       0,
+       0,
+       0,
+       0,
+       3,
+       22,
+       0,
+       0,
+       0,
+       17,
+       0,
+       0,
+       0,
+       6,
+       36,
+       0,
+       30,
+       0,
+       0,
+       0,
+       0,
+       33,
+       0,
+       6,
+       0,
+       21,
+};
+
+
+const uint8_t objtxt_0[] = {
+0 };
+const uint8_t objtxt_1[] = {
+80, 97, 108, 97, 99, 101, 32, 103, 117, 97, 114, 100, 115, 0 };
+const uint8_t objtxt_2[] = {
+65, 103, 101, 100, 32, 75, 105, 110, 103, 0 };
+const uint8_t objtxt_3[] = {
+80, 97, 108, 97, 99, 101, 0 };
+const uint8_t objtxt_4[] = {
+76, 97, 114, 103, 101, 32, 115, 104, 105, 112, 0 };
+const uint8_t objtxt_5[] = {
+77, 97, 115, 116, 0 };
+const uint8_t objtxt_6[] = {
+83, 97, 105, 108, 0 };
+const uint8_t objtxt_7[] = {
+65, 110, 99, 104, 111, 114, 0 };
+const uint8_t objtxt_8[] = {
+83, 107, 101, 108, 101, 116, 111, 110, 0 };
+const uint8_t objtxt_9[] = {
+76, 105, 116, 32, 116, 111, 114, 99, 104, 0 };
+const uint8_t objtxt_10[] = {
+79, 108, 100, 32, 98, 111, 120, 0 };
+const uint8_t objtxt_11[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 102, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t objtxt_12[] = {
+67, 114, 101, 118, 105, 99, 101, 0 };
+const uint8_t objtxt_13[] = {
+77, 97, 110, 0 };
+const uint8_t objtxt_14[] = {
+74, 117, 110, 103, 108, 101, 0 };
+const uint8_t objtxt_15[] = {
+72, 105, 100, 100, 101, 110, 32, 112, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t objtxt_16[] = {
+71, 111, 108, 100, 32, 99, 104, 97, 108, 105, 99, 101, 0 };
+const uint8_t objtxt_17[] = {
+67, 97, 118, 101, 0 };
+const uint8_t objtxt_18[] = {
+76, 111, 110, 103, 32, 115, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t objtxt_19[] = {
+70, 108, 105, 110, 116, 32, 38, 32, 115, 116, 101, 101, 108, 0 };
+const uint8_t objtxt_20[] = {
+71, 111, 108, 100, 32, 109, 97, 115, 107, 0 };
+const uint8_t objtxt_21[] = {
+73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 32, 105, 116, 0 };
+const uint8_t objtxt_22[] = {
+83, 109, 97, 108, 108, 32, 115, 116, 111, 110, 101, 0 };
+const uint8_t objtxt_23[] = {
+83, 109, 97, 108, 108, 32, 115, 116, 111, 110, 101, 0 };
+const uint8_t objtxt_24[] = {
+83, 109, 97, 108, 108, 32, 115, 116, 111, 110, 101, 0 };
+const uint8_t objtxt_25[] = {
+83, 116, 111, 110, 101, 32, 71, 111, 100, 100, 101, 115, 115, 0 };
+const uint8_t objtxt_26[] = {
+87, 104, 105, 116, 101, 32, 103, 108, 111, 98, 101, 0 };
+const uint8_t objtxt_27[] = {
+71, 114, 97, 115, 115, 32, 104, 117, 116, 0 };
+const uint8_t objtxt_28[] = {
+77, 101, 114, 99, 104, 97, 110, 116, 0 };
+const uint8_t objtxt_29[] = {
+77, 101, 114, 99, 104, 97, 110, 116, 0 };
+const uint8_t objtxt_30[] = {
+77, 101, 114, 99, 104, 97, 110, 116, 0 };
+const uint8_t objtxt_31[] = {
+83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_32[] = {
+83, 97, 110, 100, 97, 108, 115, 0 };
+const uint8_t objtxt_33[] = {
+73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 32, 116, 104, 101, 109, 0 };
+const uint8_t objtxt_34[] = {
+67, 111, 109, 112, 97, 115, 115, 0 };
+const uint8_t objtxt_35[] = {
+84, 101, 108, 101, 115, 99, 111, 112, 101, 0 };
+const uint8_t objtxt_36[] = {
+68, 101, 97, 100, 32, 109, 97, 110, 0 };
+const uint8_t objtxt_37[] = {
+75, 101, 121, 0 };
+const uint8_t objtxt_38[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 114, 117, 98, 98, 108, 101, 0 };
+const uint8_t objtxt_39[] = {
+77, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t objtxt_40[] = {
+83, 116, 111, 110, 101, 32, 98, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_41[] = {
+79, 114, 110, 97, 116, 101, 32, 99, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_42[] = {
+67, 111, 116, 0 };
+const uint8_t objtxt_43[] = {
+78, 111, 116, 101, 0 };
+const uint8_t objtxt_44[] = {
+68, 101, 101, 112, 32, 112, 105, 116, 0 };
+const uint8_t objtxt_45[] = {
+67, 121, 99, 108, 111, 112, 115, 0 };
+const uint8_t objtxt_46[] = {
+67, 97, 118, 101, 0 };
+const uint8_t objtxt_47[] = {
+77, 97, 103, 110, 105, 102, 105, 99, 101, 110, 116, 32, 102, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t objtxt_48[] = {
+79, 99, 101, 97, 110, 0 };
+const uint8_t objtxt_49[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 114, 117, 98, 98, 108, 101, 0 };
+const uint8_t objtxt_50[] = {
+0 };
+const uint8_t objtxt_51[] = {
+79, 112, 101, 110, 32, 99, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_52[] = {
+89, 111, 117, 116, 104, 102, 117, 108, 32, 75, 105, 110, 103, 0 };
+const uint8_t objtxt_53[] = {
+66, 97, 103, 32, 111, 102, 32, 103, 111, 108, 100, 0 };
+const uint8_t objtxt_54[] = {
+66, 114, 111, 107, 101, 110, 32, 103, 108, 111, 98, 101, 0 };
+const uint8_t objtxt_55[] = {
+83, 99, 111, 114, 112, 105, 111, 110, 115, 0 };
+const uint8_t objtxt_56[] = {
+84, 111, 114, 99, 104, 0 };
+const uint8_t objtxt_57[] = {
+67, 114, 111, 119, 100, 32, 111, 102, 32, 109, 111, 117, 114, 110, 101, 114, 115, 0 };
+const uint8_t objtxt_58[] = {
+83, 116, 111, 110, 101, 32, 116, 97, 98, 108, 101, 116, 0 };
+const uint8_t objtxt_59[] = {
+65, 108, 116, 97, 114, 0 };
+const uint8_t objtxt_60[] = {
+83, 99, 111, 114, 112, 105, 111, 110, 32, 115, 116, 105, 110, 103, 115, 0 };
+const uint8_t objtxt_61[] = {
+70, 101, 115, 116, 101, 114, 105, 110, 103, 32, 115, 99, 111, 114, 112, 105, 111, 110, 32, 115, 116, 105, 110, 103, 115, 0 };
+const uint8_t objtxt_62[] = {
+65, 110, 105, 109, 97, 116, 101, 100, 32, 115, 116, 97, 116, 117, 101, 0 };
+const uint8_t objtxt_63[] = {
+83, 119, 111, 114, 100, 0 };
+const uint8_t objtxt_64[] = {
+82, 111, 99, 107, 121, 32, 115, 116, 114, 97, 110, 100, 0 };
+const uint8_t objtxt_65[] = {
+83, 97, 110, 100, 121, 32, 98, 101, 97, 99, 104, 0 };
+const uint8_t objtxt_66[] = {
+83, 109, 97, 108, 108, 32, 105, 115, 108, 97, 110, 100, 0 };
+const uint8_t objtxt_67[] = {
+83, 104, 105, 112, 32, 105, 115, 32, 97, 110, 99, 104, 111, 114, 101, 100, 0 };
+const uint8_t objtxt_68[] = {
+83, 116, 111, 110, 101, 32, 116, 97, 98, 108, 101, 116, 0 };
+const uint8_t objtxt_69[] = {
+66, 108, 105, 110, 100, 32, 99, 121, 99, 108, 111, 112, 115, 0 };
+const uint8_t objtxt_70[] = {
+83, 116, 97, 108, 97, 103, 109, 105, 116, 101, 0 };
+const uint8_t objtxt_71[] = {
+82, 111, 112, 101, 0 };
+const uint8_t objtxt_72[] = {
+82, 111, 112, 101, 32, 116, 105, 101, 100, 32, 116, 111, 32, 115, 116, 97, 108, 97, 103, 109, 105, 116, 101, 0 };
+const uint8_t objtxt_73[] = {
+79, 116, 104, 101, 114, 32, 101, 110, 100, 32, 111, 102, 32, 116, 104, 101, 32, 114, 111, 112, 101, 0 };
+const uint8_t objtxt_74[] = {
+82, 111, 112, 101, 32, 108, 101, 97, 100, 105, 110, 103, 32, 100, 111, 119, 110, 32, 105, 110, 116, 111, 32, 112, 105, 116, 0 };
+const uint8_t objtxt_75[] = {
+82, 111, 112, 101, 32, 108, 101, 97, 100, 105, 110, 103, 32, 111, 117, 116, 32, 111, 102, 32, 116, 104, 101, 32, 112, 105, 116, 0 };
+const uint8_t objtxt_76[] = {
+68, 97, 114, 107, 32, 104, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t objtxt_77[] = {
+67, 97, 98, 105, 110, 0 };
+const uint8_t objtxt_78[] = {
+80, 101, 114, 115, 105, 97, 110, 32, 99, 105, 116, 121, 0 };
+const uint8_t objtxt_79[] = {
+76, 111, 110, 103, 32, 115, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+       objtxt_67,
+       objtxt_68,
+       objtxt_69,
+       objtxt_70,
+       objtxt_71,
+       objtxt_72,
+       objtxt_73,
+       objtxt_74,
+       objtxt_75,
+       objtxt_76,
+       objtxt_77,
+       objtxt_78,
+       objtxt_79,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 49, 50, 58, 32, 34, 84, 72, 69, 32, 71, 79, 76, 68, 69, 78, 32, 86, 79, 89, 65, 71, 69, 34, 10, 98, 121, 32, 87, 105, 108, 108, 105, 97, 109, 32, 68, 101, 109, 97, 115, 32, 38, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 10, 68, 101, 100, 105, 99, 97, 116, 101, 100, 58, 32, 66, 114, 105, 116, 105, 115, 104, 32, 98, 97, 110, 100, 32, 34, 81, 85, 69, 69, 78, 34, 0 };
+const uint8_t msgtxt_2[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_3[] = {
+87, 104, 101, 114, 101, 63, 0 };
+const uint8_t msgtxt_4[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 114, 97, 116, 116, 108, 101, 115, 0 };
+const uint8_t msgtxt_5[] = {
+83, 116, 97, 116, 117, 101, 32, 116, 111, 112, 112, 108, 101, 115, 32, 100, 111, 119, 110, 32, 116, 104, 101, 32, 115, 116, 97, 105, 114, 115, 0 };
+const uint8_t msgtxt_6[] = {
+73, 32, 102, 111, 117, 110, 100, 0 };
+const uint8_t msgtxt_7[] = {
+110, 111, 116, 104, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_8[] = {
+65, 112, 112, 101, 97, 114, 115, 32, 116, 111, 32, 98, 101, 32, 98, 114, 111, 107, 101, 110, 44, 32, 119, 105, 116, 104, 32, 115, 116, 114, 97, 110, 103, 101, 32, 109, 97, 114, 107, 105, 110, 103, 115, 0 };
+const uint8_t msgtxt_9[] = {
+84, 104, 101, 32, 115, 116, 111, 110, 101, 115, 32, 109, 121, 115, 116, 101, 114, 105, 111, 117, 115, 108, 121, 32, 117, 110, 105, 116, 101, 33, 0 };
+const uint8_t msgtxt_10[] = {
+67, 111, 110, 116, 97, 105, 110, 115, 32, 109, 101, 100, 105, 99, 105, 110, 101, 0 };
+const uint8_t msgtxt_11[] = {
+69, 118, 101, 114, 121, 116, 104, 105, 110, 103, 32, 108, 111, 111, 107, 115, 32, 103, 114, 101, 121, 0 };
+const uint8_t msgtxt_12[] = {
+79, 75, 0 };
+const uint8_t msgtxt_13[] = {
+79, 85, 67, 72, 33, 0 };
+const uint8_t msgtxt_14[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_15[] = {
+72, 101, 39, 115, 32, 98, 101, 101, 110, 32, 115, 116, 117, 110, 103, 32, 98, 121, 32, 115, 99, 111, 114, 112, 105, 111, 110, 115, 0 };
+const uint8_t msgtxt_16[] = {
+76, 65, 78, 68, 32, 72, 79, 33, 0 };
+const uint8_t msgtxt_17[] = {
+73, 32, 104, 101, 97, 114, 0 };
+const uint8_t msgtxt_18[] = {
+79, 110, 101, 32, 103, 114, 101, 97, 116, 32, 98, 105, 103, 32, 69, 89, 69, 32, 104, 97, 115, 32, 97, 32, 102, 111, 99, 117, 115, 32, 105, 110, 32, 109, 121, 32, 100, 105, 114, 101, 99, 116, 105, 111, 110, 33, 0 };
+const uint8_t msgtxt_19[] = {
+80, 105, 99, 116, 117, 114, 101, 32, 111, 102, 32, 97, 32, 109, 111, 117, 110, 116, 97, 105, 110, 32, 97, 110, 100, 32, 116, 104, 101, 32, 119, 111, 114, 100, 32, 34, 83, 85, 78, 34, 0 };
+const uint8_t msgtxt_20[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 116, 101, 108, 108, 32, 119, 104, 105, 99, 104, 32, 119, 97, 121, 32, 116, 104, 97, 116, 32, 105, 115, 33, 0 };
+const uint8_t msgtxt_21[] = {
+77, 101, 114, 99, 104, 97, 110, 116, 32, 99, 97, 108, 108, 115, 32, 109, 101, 32, 97, 32, 116, 104, 105, 101, 102, 32, 97, 110, 100, 32, 115, 108, 105, 116, 115, 32, 109, 121, 32, 116, 104, 114, 111, 97, 116, 33, 0 };
+const uint8_t msgtxt_22[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 116, 114, 101, 109, 101, 110, 100, 111, 117, 115, 32, 102, 108, 97, 115, 104, 32, 111, 102, 32, 108, 105, 103, 104, 116, 33, 0 };
+const uint8_t msgtxt_23[] = {
+73, 39, 109, 32, 98, 108, 105, 110, 100, 33, 0 };
+const uint8_t msgtxt_24[] = {
+72, 101, 32, 103, 105, 118, 101, 115, 32, 97, 32, 103, 114, 101, 97, 116, 32, 98, 105, 103, 32, 67, 82, 89, 0 };
+const uint8_t msgtxt_25[] = {
+72, 105, 103, 104, 32, 97, 116, 111, 112, 32, 109, 97, 115, 116, 32, 105, 115, 32, 97, 32, 99, 114, 111, 119, 39, 115, 45, 110, 101, 115, 116, 0 };
+const uint8_t msgtxt_26[] = {
+75, 73, 78, 71, 58, 32, 73, 32, 104, 97, 118, 101, 32, 98, 101, 101, 110, 32, 103, 105, 118, 101, 110, 32, 111, 110, 108, 121, 32, 51, 32, 100, 97, 121, 115, 32, 116, 111, 32, 108, 105, 118, 101, 46, 32, 89, 111, 117, 32, 109, 117, 115, 116, 32, 115, 101, 101, 107, 32, 102, 111, 114, 10, 32, 32, 32, 32, 32, 32, 97, 32, 119, 97, 121, 32, 116, 111, 32, 114, 101, 115, 116, 111, 114, 101, 32, 109, 121, 32, 118, 105, 116, 97, 108, 105, 116, 121, 46, 32, 84, 104, 101, 32, 103, 111, 108, 100, 32, 105, 115, 32, 121, 111, 117, 114, 115, 46, 32, 71, 111, 32, 110, 111, 119, 33, 0 };
+const uint8_t msgtxt_27[] = {
+79, 72, 32, 78, 79, 33, 32, 73, 32, 99, 97, 110, 39, 116, 32, 115, 119, 105, 109, 33, 0 };
+const uint8_t msgtxt_28[] = {
+67, 121, 99, 108, 111, 112, 115, 0 };
+const uint8_t msgtxt_29[] = {
+73, 116, 39, 115, 32, 108, 111, 99, 107, 101, 100, 0 };
+const uint8_t msgtxt_30[] = {
+80, 105, 99, 116, 117, 114, 101, 32, 111, 102, 32, 97, 32, 99, 97, 118, 101, 0 };
+const uint8_t msgtxt_31[] = {
+103, 114, 97, 98, 115, 32, 109, 101, 32, 97, 110, 100, 32, 101, 97, 116, 115, 32, 109, 101, 32, 97, 108, 105, 118, 101, 33, 0 };
+const uint8_t msgtxt_32[] = {
+83, 116, 97, 116, 117, 101, 32, 99, 111, 109, 101, 115, 32, 116, 111, 32, 108, 105, 102, 101, 33, 0 };
+const uint8_t msgtxt_33[] = {
+73, 116, 32, 104, 111, 108, 100, 115, 32, 97, 32, 115, 119, 111, 114, 100, 0 };
+const uint8_t msgtxt_34[] = {
+83, 111, 114, 114, 121, 44, 32, 105, 116, 32, 119, 111, 110, 39, 116, 32, 66, 85, 68, 71, 69, 33, 0 };
+const uint8_t msgtxt_35[] = {
+84, 101, 108, 108, 32, 109, 101, 32, 104, 111, 119, 63, 0 };
+const uint8_t msgtxt_36[] = {
+77, 65, 78, 58, 32, 73, 39, 109, 32, 97, 102, 114, 97, 105, 100, 32, 105, 116, 39, 115, 32, 116, 111, 111, 32, 108, 97, 116, 101, 32, 102, 111, 114, 32, 109, 101, 46, 32, 65, 112, 112, 101, 97, 108, 32, 116, 111, 32, 116, 104, 101, 10, 32, 32, 32, 32, 32, 71, 111, 100, 115, 32, 102, 111, 114, 32, 104, 101, 108, 112, 33, 0 };
+const uint8_t msgtxt_37[] = {
+84, 104, 101, 32, 103, 114, 111, 117, 110, 100, 32, 115, 104, 97, 107, 101, 115, 32, 118, 105, 111, 108, 101, 110, 116, 108, 121, 33, 0 };
+const uint8_t msgtxt_38[] = {
+73, 39, 118, 101, 32, 100, 101, 115, 101, 99, 114, 97, 116, 101, 100, 32, 116, 104, 101, 32, 104, 111, 108, 121, 32, 102, 111, 117, 110, 116, 97, 105, 110, 46, 10, 73, 39, 109, 32, 115, 116, 114, 117, 99, 107, 32, 100, 111, 119, 110, 32, 98, 121, 32, 97, 32, 84, 72, 85, 78, 68, 69, 82, 66, 79, 76, 84, 33, 0 };
+const uint8_t msgtxt_39[] = {
+75, 105, 110, 103, 32, 103, 114, 97, 98, 115, 32, 105, 116, 44, 0 };
+const uint8_t msgtxt_40[] = {
+97, 110, 100, 32, 68, 73, 69, 83, 33, 32, 71, 117, 97, 114, 100, 115, 32, 104, 97, 118, 101, 32, 109, 101, 32, 98, 101, 104, 101, 97, 100, 101, 100, 0 };
+const uint8_t msgtxt_41[] = {
+73, 32, 104, 97, 118, 101, 32, 102, 97, 105, 108, 101, 100, 32, 109, 121, 32, 109, 105, 115, 115, 105, 111, 110, 0 };
+const uint8_t msgtxt_42[] = {
+73, 116, 39, 115, 32, 103, 101, 116, 116, 105, 110, 103, 32, 100, 97, 114, 107, 33, 0 };
+const uint8_t msgtxt_43[] = {
+77, 111, 114, 110, 105, 110, 103, 33, 32, 73, 32, 104, 97, 118, 101, 0 };
+const uint8_t msgtxt_44[] = {
+71, 111, 111, 100, 110, 105, 103, 104, 116, 0 };
+const uint8_t msgtxt_45[] = {
+50, 32, 100, 97, 121, 115, 0 };
+const uint8_t msgtxt_46[] = {
+49, 32, 100, 97, 121, 0 };
+const uint8_t msgtxt_47[] = {
+108, 101, 102, 116, 32, 116, 111, 32, 99, 111, 109, 112, 108, 101, 116, 101, 32, 109, 121, 32, 109, 105, 115, 115, 105, 111, 110, 0 };
+const uint8_t msgtxt_48[] = {
+84, 104, 101, 32, 115, 117, 110, 32, 104, 97, 115, 32, 115, 101, 116, 0 };
+const uint8_t msgtxt_49[] = {
+78, 105, 103, 104, 116, 32, 97, 105, 114, 32, 105, 115, 32, 67, 79, 76, 68, 33, 10, 73, 32, 99, 97, 116, 99, 104, 32, 112, 110, 101, 117, 109, 111, 110, 105, 97, 32, 97, 110, 100, 32, 100, 105, 101, 0 };
+const uint8_t msgtxt_50[] = {
+102, 97, 105, 108, 101, 100, 32, 109, 121, 32, 109, 105, 115, 115, 105, 111, 110, 0 };
+const uint8_t msgtxt_51[] = {
+73, 39, 109, 32, 105, 110, 32, 103, 114, 101, 97, 116, 32, 80, 65, 73, 78, 33, 0 };
+const uint8_t msgtxt_52[] = {
+77, 121, 32, 98, 111, 100, 121, 32, 104, 97, 115, 32, 98, 101, 99, 111, 109, 101, 32, 105, 110, 102, 101, 99, 116, 101, 100, 0 };
+const uint8_t msgtxt_53[] = {
+83, 116, 97, 116, 117, 101, 32, 102, 111, 108, 108, 111, 119, 115, 32, 109, 101, 0 };
+const uint8_t msgtxt_54[] = {
+83, 116, 97, 116, 117, 101, 32, 115, 119, 105, 110, 103, 115, 32, 105, 116, 115, 32, 115, 119, 111, 114, 100, 0 };
+const uint8_t msgtxt_55[] = {
+73, 116, 32, 109, 105, 115, 115, 101, 100, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_56[] = {
+73, 39, 118, 101, 32, 98, 101, 101, 110, 32, 99, 117, 116, 32, 105, 110, 32, 116, 119, 111, 33, 0 };
+const uint8_t msgtxt_57[] = {
+73, 32, 102, 101, 110, 100, 32, 111, 102, 102, 32, 105, 116, 115, 32, 97, 116, 116, 97, 99, 107, 46, 0 };
+const uint8_t msgtxt_58[] = {
+73, 39, 109, 32, 108, 121, 110, 99, 104, 101, 100, 32, 98, 121, 32, 97, 110, 103, 114, 121, 32, 109, 111, 117, 114, 110, 101, 114, 115, 46, 10, 84, 104, 101, 105, 114, 32, 75, 105, 110, 103, 32, 105, 115, 32, 100, 101, 97, 100, 46, 32, 40, 65, 78, 68, 32, 83, 79, 32, 65, 77, 32, 73, 41, 33, 33, 0 };
+const uint8_t msgtxt_59[] = {
+77, 97, 110, 32, 105, 115, 32, 100, 101, 97, 100, 33, 0 };
+const uint8_t msgtxt_60[] = {
+71, 101, 116, 32, 121, 111, 117, 114, 32, 99, 111, 112, 121, 32, 111, 102, 32, 34, 70, 82, 79, 71, 34, 32, 102, 114, 111, 109, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 73, 110, 116, 101, 114, 110, 97, 116, 105, 111, 110, 97, 108, 32, 116, 111, 100, 97, 121, 33, 0 };
+const uint8_t msgtxt_61[] = {
+83, 104, 105, 112, 32, 100, 114, 105, 102, 116, 115, 32, 97, 119, 97, 121, 0 };
+const uint8_t msgtxt_62[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_63[] = {
+73, 116, 39, 115, 32, 102, 117, 108, 108, 32, 111, 102, 0 };
+const uint8_t msgtxt_64[] = {
+119, 97, 116, 101, 114, 0 };
+const uint8_t msgtxt_65[] = {
+97, 32, 115, 116, 114, 97, 110, 103, 101, 32, 108, 105, 113, 117, 105, 100, 0 };
+const uint8_t msgtxt_66[] = {
+97, 110, 100, 32, 116, 114, 97, 110, 115, 102, 111, 114, 109, 115, 32, 105, 110, 116, 111, 32, 97, 32, 121, 111, 117, 110, 103, 32, 109, 97, 110, 46, 32, 67, 79, 78, 71, 82, 65, 84, 85, 76, 65, 84, 73, 79, 78, 83, 33, 33, 10, 77, 105, 115, 115, 105, 111, 110, 32, 97, 99, 99, 111, 109, 112, 108, 105, 115, 104, 101, 100, 46, 0 };
+const uint8_t msgtxt_67[] = {
+100, 114, 105, 110, 107, 115, 32, 116, 104, 101, 32, 108, 105, 113, 117, 105, 100, 44, 0 };
+const uint8_t msgtxt_68[] = {
+97, 110, 100, 32, 121, 101, 108, 108, 115, 32, 34, 73, 116, 39, 115, 32, 69, 77, 80, 84, 89, 33, 34, 46, 0 };
+const uint8_t msgtxt_69[] = {
+119, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 0 };
+const uint8_t msgtxt_70[] = {
+67, 121, 99, 108, 111, 112, 115, 32, 115, 116, 97, 103, 103, 101, 114, 115, 32, 97, 110, 100, 32, 115, 116, 101, 112, 115, 32, 111, 110, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_71[] = {
+73, 39, 108, 108, 32, 111, 110, 108, 121, 32, 100, 101, 102, 101, 110, 100, 32, 109, 121, 115, 101, 108, 102, 0 };
+const uint8_t msgtxt_72[] = {
+77, 101, 114, 99, 104, 97, 110, 116, 0 };
+const uint8_t msgtxt_73[] = {
+80, 108, 101, 97, 115, 101, 32, 98, 101, 32, 109, 111, 114, 101, 32, 115, 112, 101, 99, 105, 102, 105, 99, 0 };
+const uint8_t msgtxt_74[] = {
+73, 32, 102, 101, 101, 108, 32, 109, 117, 99, 104, 32, 98, 101, 116, 116, 101, 114, 0 };
+const uint8_t msgtxt_75[] = {
+69, 109, 112, 116, 121, 63, 0 };
+const uint8_t msgtxt_76[] = {
+83, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_77[] = {
+72, 101, 32, 104, 97, 115, 32, 109, 101, 32, 101, 120, 101, 99, 117, 116, 101, 100, 0 };
+const uint8_t msgtxt_78[] = {
+83, 117, 114, 112, 114, 105, 115, 101, 100, 32, 109, 101, 114, 99, 104, 97, 110, 116, 32, 103, 114, 97, 98, 115, 32, 105, 116, 32, 97, 110, 100, 32, 114, 117, 110, 115, 32, 108, 105, 107, 101, 32, 97, 32, 116, 104, 105, 101, 102, 33, 0 };
+const uint8_t msgtxt_79[] = {
+83, 116, 97, 116, 117, 101, 32, 97, 116, 116, 97, 99, 107, 115, 32, 119, 104, 105, 108, 101, 32, 73, 32, 115, 108, 101, 101, 112, 33, 0 };
+const uint8_t msgtxt_80[] = {
+82, 111, 112, 101, 32, 115, 108, 105, 100, 101, 115, 32, 105, 110, 116, 111, 32, 112, 105, 116, 0 };
+const uint8_t msgtxt_81[] = {
+80, 76, 79, 79, 83, 72, 0 };
+const uint8_t msgtxt_82[] = {
+89, 85, 67, 75, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       175, 
+       9, 31, 0, 3, 0, 19, 
+       1, 79, 58, 73, 
+/* AUTO  0     */
+       211, 
+       0, 0, 0, 215, 0, 31, 0, 17, 
+       81, 79, 58, 58, 
+/* AUTO  100   */
+       160, 
+       77, 
+/* AUTO  100   */
+       168, 
+       2, 4, 0, 48, 
+       53, 
+/* AUTO  100   */
+       164, 
+       19, 0, 
+       48, 
+/* AUTO  100   */
+       168, 
+       12, 9, 15, 0, 
+       56, 
+/* AUTO  100   */
+       171, 
+       8, 14, 0, 16, 
+       58, 56, 64, 23, 
+/* AUTO  100   */
+       172, 
+       4, 22, 9, 14, 0, 8, 
+       60, 
+/* AUTO  100   */
+       176, 
+       3, 9, 8, 16, 0, 9, 0, 56, 
+       72, 
+/* AUTO  100   */
+       183, 
+       8, 29, 13, 62, 4, 29, 0, 29, 0, 62, 
+       129, 60, 61, 55, 
+/* AUTO  100   */
+       168, 
+       3, 9, 9, 14, 
+       57, 
+/* AUTO  100   */
+       165, 
+       8, 29, 
+       88, 73, 
+/* AUTO  0     */
+       199, 
+       7, 29, 
+       49, 61, 41, 63, 
+/* AUTO  100   */
+       166, 
+       8, 29, 
+       88, 57, 73, 
+/* AUTO  0     */
+       207, 
+       0, 215, 0, 0, 0, 1, 
+       79, 81, 83, 43, 
+/* AUTO  100   */
+       175, 
+       8, 29, 19, 2, 0, 29, 
+       45, 47, 60, 81, 
+/* AUTO  100   */
+       175, 
+       8, 29, 19, 1, 0, 29, 
+       46, 47, 60, 81, 
+/* AUTO  100   */
+       182, 
+       8, 29, 15, 0, 0, 0, 0, 57, 0, 2, 
+       50, 81, 62, 
+/* AUTO  50    */
+       150, 50, 
+       6, 33, 6, 61, 6, 60, 3, 55, 0, 60, 
+       13, 74, 73, 
+/* AUTO  0     */
+       211, 
+       0, 3, 0, 10, 0, 3, 0, 23, 
+       81, 79, 81, 58, 
+/* AUTO  100   */
+       170, 
+       8, 23, 0, 3, 
+       81, 77, 73, 
+/* AUTO  0     */
+       210, 
+       19, 5, 0, 60, 0, 61, 0, 3, 
+       51, 72, 73, 
+/* AUTO  0     */
+       198, 
+       15, 0, 
+       102, 61, 73, 
+/* AUTO  0     */
+       200, 
+       8, 23, 0, 3, 
+       81, 
+/* AUTO  100   */
+       173, 
+       5, 62, 13, 62, 0, 62, 
+       103, 53, 
+/* AUTO  45    */
+       139, 45, 
+       2, 62, 0, 25, 
+       104, 88, 88, 58, 
+/* AUTO  40    */
+       145, 40, 
+       14, 62, 2, 25, 0, 25, 0, 62, 
+       32, 72, 
+/* AUTO  70    */
+       141, 70, 
+       8, 25, 1, 63, 0, 25, 
+       107, 60, 
+/* AUTO  39    */
+       139, 39, 
+       8, 25, 0, 25, 
+       106, 57, 61, 60, 
+/* AUTO  100   */
+       169, 
+       8, 25, 0, 25, 
+       105, 60, 
+/* AUTO  60    */
+       143, 60, 
+       8, 18, 2, 45, 0, 26, 
+       24, 88, 88, 58, 
+/* AUTO  45    */
+       133, 45, 
+       8, 26, 
+       31, 61, 
+/* AUTO  100   */
+       168, 
+       8, 26, 0, 26, 
+       60, 
+/* AUTO  100   */
+       168, 
+       8, 29, 0, 29, 
+       60, 
+/* AUTO  100   */
+       167, 
+       2, 57, 
+       88, 88, 108, 73, 
+/* AUTO  0     */
+       193, 
+       61, 63, 
+/* AUTO  100   */
+       183, 
+       4, 6, 0, 64, 0, 65, 0, 66, 0, 78, 
+       59, 59, 59, 59, 
+/* AUTO  100   */
+       183, 
+       14, 58, 14, 68, 9, 9, 0, 30, 0, 9, 
+       37, 58, 58, 73, 
+/* AUTO  0     */
+       210, 
+       0, 38, 0, 40, 0, 76, 0, 23, 
+       72, 62, 131, 
+/* AUTO  45    */
+       137, 45, 
+       9, 6, 2, 69, 
+       120, 61, 
+/* AUTO  100   */
+       168, 
+       13, 69, 0, 6, 
+       60, 
+/* AUTO  100   */
+       183, 
+       2, 22, 2, 23, 2, 24, 0, 22, 0, 23, 
+       9, 59, 59, 73, 
+/* AUTO  0     */
+       201, 
+       0, 24, 0, 68, 
+       59, 53, 
+/* AUTO  100   */
+       169, 
+       12, 9, 8, 8, 
+       56, 64, 
+/* AUTO  100   */
+       168, 
+       15, 10, 16, 0, 
+       42, 
+/* AUTO  100   */
+       169, 
+       4, 16, 12, 9, 
+       56, 64, 
+/* AUTO  100   */
+       173, 
+       4, 14, 16, 0, 9, 14, 
+       57, 64, 
+/* AUTO  60    */
+       141, 60, 
+       9, 19, 2, 4, 0, 4, 
+       111, 55, 
+/* AUTO  100   */
+       176, 
+       8, 0, 4, 6, 8, 22, 0, 64, 
+       53, 
+/* AUTO  100   */
+       169, 
+       12, 9, 8, 15, 
+       56, 64, 
+/* AUTO  100   */
+       167, 
+       4, 37, 
+       57, 64, 41, 63, 
+/* AUTO  100   */
+       176, 
+       8, 0, 4, 12, 8, 22, 0, 64, 
+       53, 
+/* AUTO  100   */
+       176, 
+       8, 1, 4, 6, 8, 20, 0, 66, 
+       53, 
+/* AUTO  100   */
+       176, 
+       8, 1, 4, 12, 8, 20, 0, 66, 
+       53, 
+/* AUTO  100   */
+       176, 
+       8, 5, 4, 6, 8, 28, 0, 65, 
+       53, 
+/* AUTO  100   */
+       176, 
+       8, 5, 4, 12, 8, 28, 0, 65, 
+       53, 
+/* AUTO  100   */
+       169, 
+       9, 15, 9, 14, 
+       57, 64, 
+/* AUTO  100   */
+       178, 
+       4, 10, 16, 0, 9, 14, 0, 8, 
+       57, 64, 60, 
+/* AUTO  100   */
+       172, 
+       4, 6, 8, 17, 0, 78, 
+       53, 
+/* AUTO  100   */
+       172, 
+       4, 12, 8, 17, 0, 78, 
+       53, 
+/* AUTO  100   */
+       173, 
+       4, 1, 17, 53, 0, 53, 
+       26, 53, 
+/* AUTO  100   */
+       168, 
+       4, 34, 0, 18, 
+       58, 
+/* AUTO  100   */
+       169, 
+       4, 22, 16, 0, 
+       57, 64, 
+/* AUTO  100   */
+       176, 
+       4, 34, 1, 73, 0, 73, 0, 33, 
+       62, 
+/* AUTO  100   */
+       176, 
+       4, 27, 1, 73, 0, 73, 0, 30, 
+       62, 
+};
+const uint8_t actions[] = {
+/* GO    PIT   */
+       5, 1, 45, 
+       4, 30, 
+       12, 35, 
+/* GO    FOUN  */
+       6, 1, 47, 
+       2, 11, 
+       12, 38, 61, 
+/* GO    STRA  */
+       23, 1, 63, 
+       2, 64, 4, 6, 0, 19, 0, 55, 0, 4, 
+       12, 54, 53, 53, 
+/* GO    BEAC  */
+       23, 1, 64, 
+       2, 65, 4, 6, 0, 7, 0, 55, 0, 4, 
+       12, 54, 53, 53, 
+/* GO    ISLA  */
+       23, 1, 65, 
+       2, 66, 4, 6, 0, 13, 0, 55, 0, 4, 
+       12, 54, 53, 53, 
+/* GO    ASHO  */
+       23, 1, 67, 
+       4, 6, 2, 64, 0, 19, 0, 55, 0, 4, 
+       12, 54, 53, 53, 
+/* GO    ASHO  */
+       23, 1, 67, 
+       4, 6, 2, 65, 0, 7, 0, 55, 0, 4, 
+       12, 54, 53, 53, 
+/* GO    ASHO  */
+       23, 1, 67, 
+       4, 6, 2, 66, 0, 13, 0, 55, 0, 4, 
+       12, 54, 53, 53, 
+/* GO    ROPE  */
+       9, 1, 72, 
+       2, 74, 0, 33, 
+       12, 54, 
+/* GO    ROPE  */
+       9, 1, 72, 
+       2, 75, 0, 30, 
+       12, 54, 
+/* GO    PASS  */
+       15, 1, 21, 
+       2, 15, 0, 23, 0, 8, 
+       12, 54, 56, 58, 
+/* GO    HALL  */
+       9, 1, 22, 
+       2, 76, 0, 27, 
+       12, 54, 
+/* SAVE  GAME  */
+       0, 8, 68, 
+       71, 
+/* DIG   ANY   */
+       18, 9, 0, 
+       4, 32, 14, 37, 1, 31, 0, 37, 
+       6, 2, 53, 
+/* DIG   ANY   */
+       18, 9, 0, 
+       4, 9, 14, 71, 1, 31, 0, 71, 
+       6, 2, 53, 
+/* TAKE  INVE  */
+       0, 10, 60, 
+       66, 
+/* GO    PALA  */
+       9, 1, 9, 
+       4, 2, 0, 1, 
+       12, 54, 
+/* TAKE  MEDI  */
+       19, 10, 16, 
+       3, 10, 13, 60, 0, 60, 0, 23, 
+       12, 59, 124, 60, 
+/* TAKE  MEDI  */
+       19, 10, 16, 
+       3, 10, 13, 61, 0, 61, 0, 23, 
+       12, 59, 124, 60, 
+/* TAKE  MEDI  */
+       5, 10, 16, 
+       3, 10, 
+       12, 112, 
+/* TAKE  OCEA  */
+       1, 10, 18, 
+       12, 35, 
+/* DIG   ANY   */
+       22, 9, 0, 
+       4, 10, 14, 56, 14, 9, 1, 31, 0, 56, 
+       6, 2, 53, 
+/* DIG   ANY   */
+       18, 9, 0, 
+       4, 10, 14, 24, 1, 31, 0, 24, 
+       6, 2, 53, 
+/* GO    SHIP  */
+       18, 1, 11, 
+       2, 4, 8, 2, 0, 6, 0, 48, 
+       12, 54, 53, 
+/* DIG   ANY   */
+       5, 9, 0, 
+       1, 31, 
+       6, 7, 
+/* TAKE  STON  */
+       9, 10, 25, 
+       2, 22, 0, 22, 
+       52, 12, 
+/* TAKE  STON  */
+       9, 10, 25, 
+       2, 23, 0, 23, 
+       52, 12, 
+/* TAKE  STON  */
+       9, 10, 25, 
+       2, 24, 0, 24, 
+       52, 12, 
+/* TAKE  TABL  */
+       15, 10, 24, 
+       2, 58, 9, 6, 0, 58, 
+       52, 12, 21, 61, 
+/* TAKE  TABL  */
+       9, 10, 24, 
+       2, 58, 0, 58, 
+       52, 12, 
+/* TAKE  TABL  */
+       9, 10, 24, 
+       2, 68, 0, 68, 
+       52, 12, 
+/* TAKE  TELE  */
+       15, 10, 54, 
+       2, 35, 9, 7, 0, 35, 
+       52, 12, 21, 61, 
+/* TAKE  TELE  */
+       9, 10, 54, 
+       2, 35, 0, 35, 
+       52, 12, 
+/* TAKE  COMP  */
+       15, 10, 55, 
+       2, 34, 9, 3, 0, 34, 
+       52, 12, 21, 61, 
+/* TAKE  COMP  */
+       9, 10, 55, 
+       2, 34, 0, 34, 
+       52, 12, 
+/* TAKE  SAND  */
+       11, 10, 56, 
+       2, 32, 9, 4, 
+       52, 12, 21, 61, 
+/* TAKE  SAND  */
+       9, 10, 56, 
+       2, 32, 0, 32, 
+       52, 12, 
+/* EXAM  FOUN  */
+       9, 22, 47, 
+       2, 11, 9, 30, 
+       113, 115, 
+/* WAIT  ANY   */
+       6, 74, 0, 
+       0, 6, 
+       12, 88, 83, 
+/* TAKE  ROPE  */
+       9, 10, 72, 
+       2, 71, 0, 71, 
+       52, 12, 
+/* TAKE  ROPE  */
+       14, 10, 72, 
+       2, 74, 0, 74, 0, 73, 
+       12, 59, 74, 
+/* GIVE  MEDI  */
+       15, 17, 16, 
+       2, 13, 0, 13, 0, 36, 
+       86, 36, 72, 109, 
+/* GO    FOUN  */
+       6, 1, 47, 
+       4, 36, 
+       12, 38, 61, 
+/* GIVE  CHAL  */
+       15, 17, 59, 
+       4, 1, 1, 16, 8, 10, 
+       39, 117, 88, 73, 
+/* AUTO  0     */
+       195, 
+       88, 112, 127, 61, 
+/* GIVE  CHAL  */
+       15, 17, 59, 
+       4, 1, 1, 16, 8, 11, 
+       39, 117, 88, 73, 
+/* AUTO  0     */
+       194, 
+       88, 40, 61, 
+/* GIVE  CHAL  */
+       15, 17, 59, 
+       4, 1, 1, 16, 8, 12, 
+       39, 117, 88, 73, 
+/* AUTO  0     */
+       203, 
+       0, 2, 0, 52, 
+       88, 72, 116, 63, 
+/* GIVE  CHAL  */
+       10, 17, 59, 
+       4, 1, 1, 16, 
+       39, 88, 73, 
+/* AUTO  0     */
+       195, 
+       88, 118, 127, 61, 
+/* PRAY  ANY   */
+       15, 61, 0, 
+       4, 22, 5, 15, 0, 15, 
+       12, 17, 2, 53, 
+/* GIVE  BAG   */
+       23, 17, 73, 
+       3, 53, 4, 5, 0, 53, 0, 2, 0, 30, 
+       55, 128, 58, 59, 
+/* GIVE  BAG   */
+       23, 17, 73, 
+       3, 53, 4, 4, 0, 53, 0, 4, 0, 28, 
+       55, 128, 58, 59, 
+/* GIVE  BAG   */
+       19, 17, 73, 
+       3, 53, 4, 3, 0, 53, 0, 6, 
+       55, 128, 58, 73, 
+/* AUTO  0     */
+       206, 
+       0, 3, 0, 7, 0, 29, 
+       58, 58, 59, 
+/* SLEE  ANY   */
+       6, 49, 0, 
+       0, 29, 
+       44, 58, 88, 
+/* JUMP  PIT   */
+       5, 60, 45, 
+       4, 30, 
+       12, 61, 
+/* GO    ASHO  */
+       18, 1, 67, 
+       4, 6, 2, 78, 0, 5, 0, 4, 
+       12, 54, 53, 
+/* GO    CITY  */
+       17, 1, 37, 
+       2, 78, 4, 6, 0, 5, 0, 4, 
+       54, 53, 
+/* GO    CABI  */
+       9, 1, 46, 
+       4, 6, 0, 28, 
+       12, 54, 
+/* GO    SHIP  */
+       11, 1, 11, 
+       2, 4, 9, 2, 
+       12, 88, 122, 119, 
+/* GO    MAST  */
+       9, 1, 14, 
+       4, 6, 0, 12, 
+       12, 54, 
+/* GO    OCEA  */
+       6, 1, 18, 
+       2, 48, 
+       12, 27, 61, 
+/* GO    JUNG  */
+       9, 1, 44, 
+       4, 7, 0, 9, 
+       12, 54, 
+/* GO    CAVE  */
+       19, 1, 23, 
+       4, 10, 0, 11, 0, 8, 0, 11, 
+       12, 54, 58, 53, 
+/* GO    HUT   */
+       9, 1, 32, 
+       4, 14, 0, 15, 
+       12, 54, 
+/* GO    MOUN  */
+       9, 1, 33, 
+       4, 14, 0, 17, 
+       12, 54, 
+/* GO    CREV  */
+       23, 1, 34, 
+       2, 12, 4, 14, 0, 16, 0, 12, 0, 11, 
+       12, 54, 53, 53, 
+/* TAKE  UP    */
+       9, 10, 5, 
+       4, 29, 0, 28, 
+       12, 54, 
+/* FILL  CHAL  */
+       8, 16, 59, 
+       1, 16, 8, 10, 
+       126, 
+/* FILL  CHAL  */
+       8, 16, 59, 
+       1, 16, 8, 11, 
+       126, 
+/* FILL  CHAL  */
+       8, 16, 59, 
+       1, 16, 8, 12, 
+       126, 
+/* FILL  CHAL  */
+       21, 16, 59, 
+       2, 11, 1, 16, 9, 10, 9, 12, 0, 11, 
+       12, 58, 
+/* FILL  CHAL  */
+       21, 16, 59, 
+       2, 48, 1, 16, 9, 11, 9, 12, 0, 10, 
+       12, 58, 
+/* FILL  CHAL  */
+       21, 16, 59, 
+       2, 47, 1, 16, 9, 10, 9, 11, 0, 12, 
+       12, 58, 
+/* DROP  MEDI  */
+       9, 18, 16, 
+       1, 10, 0, 10, 
+       12, 53, 
+/* DRIN  OCEA  */
+       9, 52, 18, 
+       1, 16, 8, 11, 
+       12, 61, 
+/* DROP  STON  */
+       9, 18, 25, 
+       1, 22, 0, 22, 
+       12, 53, 
+/* DROP  STON  */
+       9, 18, 25, 
+       1, 23, 0, 23, 
+       12, 53, 
+/* DROP  STON  */
+       9, 18, 25, 
+       1, 24, 0, 24, 
+       12, 53, 
+/* DROP  TABL  */
+       4, 18, 24, 
+       1, 58, 
+       3, 
+/* DROP  TABL  */
+       4, 18, 24, 
+       1, 68, 
+       3, 
+/* DROP  ROPE  */
+       4, 18, 72, 
+       1, 73, 
+       3, 
+/* EXAM  MAST  */
+       4, 22, 14, 
+       4, 6, 
+       25, 
+/* EXAM  TABL  */
+       4, 22, 24, 
+       3, 68, 
+       19, 
+/* EXAM  TABL  */
+       4, 22, 24, 
+       3, 58, 
+       30, 
+/* EXAM  STON  */
+       4, 22, 25, 
+       3, 24, 
+       8, 
+/* EXAM  STON  */
+       4, 22, 25, 
+       3, 23, 
+       8, 
+/* EXAM  STON  */
+       4, 22, 25, 
+       3, 22, 
+       8, 
+/* EXAM  MAN   */
+       4, 22, 28, 
+       2, 13, 
+       15, 
+/* EXAM  BOX   */
+       4, 22, 35, 
+       3, 10, 
+       10, 
+/* EXAM  STAT  */
+       4, 22, 38, 
+       2, 25, 
+       33, 
+/* EXAM  STAT  */
+       4, 22, 38, 
+       2, 62, 
+       33, 
+/* EXAM  ALTA  */
+       14, 22, 40, 
+       4, 22, 14, 16, 0, 16, 
+       6, 2, 53, 
+/* EXAM  CHES  */
+       14, 22, 41, 
+       3, 51, 14, 20, 0, 20, 
+       6, 2, 53, 
+/* EXAM  CYCL  */
+       4, 22, 43, 
+       2, 45, 
+       18, 
+/* EXAM  NOTE  */
+       4, 22, 48, 
+       3, 43, 
+       123, 
+/* EXAM  TELE  */
+       17, 22, 54, 
+       1, 35, 4, 12, 8, 22, 14, 64, 
+       16, 58, 
+/* EXAM  TELE  */
+       21, 22, 54, 
+       1, 35, 4, 12, 8, 28, 14, 65, 0, 5, 
+       16, 58, 
+/* EXAM  TELE  */
+       21, 22, 54, 
+       1, 35, 4, 12, 8, 20, 14, 66, 0, 1, 
+       16, 58, 
+/* EXAM  RUBB  */
+       14, 22, 53, 
+       3, 49, 14, 23, 0, 23, 
+       6, 2, 53, 
+/* EXAM  CHAL  */
+       9, 22, 59, 
+       3, 16, 8, 10, 
+       113, 114, 
+/* EXAM  CHAL  */
+       9, 22, 59, 
+       3, 16, 8, 11, 
+       113, 115, 
+/* EXAM  CHAL  */
+       9, 22, 59, 
+       3, 16, 8, 12, 
+       113, 115, 
+/* GO    CAVE  */
+       11, 1, 23, 
+       4, 34, 13, 45, 
+       12, 88, 28, 119, 
+/* GO    CAVE  */
+       9, 1, 23, 
+       4, 34, 0, 35, 
+       12, 54, 
+/* TAKE  SWOR  */
+       8, 10, 62, 
+       2, 25, 5, 63, 
+       34, 
+/* TAKE  SWOR  */
+       8, 10, 62, 
+       2, 62, 5, 63, 
+       34, 
+/* TAKE  SWOR  */
+       9, 10, 62, 
+       2, 63, 0, 63, 
+       52, 12, 
+/* SAIL  ANY   */
+       8, 27, 0, 
+       4, 6, 2, 67, 
+       126, 
+/* SAIL  WEST  */
+       23, 27, 4, 
+       4, 6, 8, 17, 3, 34, 0, 17, 0, 20, 
+       12, 88, 60, 58, 
+/* SAIL  EAST  */
+       23, 27, 3, 
+       4, 6, 8, 17, 3, 34, 0, 17, 0, 27, 
+       12, 88, 60, 58, 
+/* SAIL  SOUTH */
+       23, 27, 2, 
+       4, 6, 8, 17, 3, 34, 0, 17, 0, 22, 
+       12, 88, 60, 58, 
+/* SAIL  EAST  */
+       23, 27, 3, 
+       4, 6, 8, 20, 3, 34, 0, 20, 0, 17, 
+       12, 88, 60, 58, 
+/* SAIL  SOUTH */
+       23, 27, 2, 
+       4, 6, 8, 20, 3, 34, 0, 20, 0, 21, 
+       12, 88, 60, 58, 
+/* SAIL  NORTH */
+       23, 27, 1, 
+       4, 6, 8, 21, 3, 34, 0, 21, 0, 20, 
+       12, 88, 60, 58, 
+/* SAIL  EAST  */
+       23, 27, 3, 
+       4, 6, 8, 21, 3, 34, 0, 21, 0, 22, 
+       12, 88, 60, 58, 
+/* SAIL  NORTH */
+       23, 27, 1, 
+       4, 6, 8, 22, 3, 34, 0, 22, 0, 17, 
+       12, 88, 60, 58, 
+/* SAIL  WEST  */
+       23, 27, 4, 
+       4, 6, 8, 22, 3, 34, 0, 22, 0, 21, 
+       12, 88, 60, 58, 
+/* SAIL  EAST  */
+       23, 27, 3, 
+       4, 6, 8, 27, 3, 34, 0, 27, 0, 28, 
+       12, 88, 60, 58, 
+/* SAIL  WEST  */
+       23, 27, 4, 
+       4, 6, 8, 27, 3, 34, 0, 27, 0, 17, 
+       12, 88, 60, 58, 
+/* SAIL  WEST  */
+       23, 27, 4, 
+       4, 6, 8, 28, 3, 34, 0, 28, 0, 27, 
+       12, 88, 60, 58, 
+/* SAIL  ANY   */
+       8, 27, 0, 
+       4, 6, 12, 34, 
+       20, 
+/* PUSH  STAT  */
+       4, 29, 38, 
+       2, 25, 
+       4, 
+/* PUSH  STAT  */
+       22, 29, 38, 
+       2, 62, 4, 20, 0, 62, 0, 49, 0, 19, 
+       59, 5, 62, 
+/* PUSH  STAT  */
+       0, 29, 38, 
+       112, 
+/* PUSH  ANY   */
+       0, 29, 0, 
+       35, 
+/* ON    GROU  */
+       9, 66, 70, 
+       1, 73, 0, 73, 
+       12, 53, 
+/* DROP  GLOB  */
+       19, 18, 57, 
+       1, 26, 0, 26, 0, 26, 0, 54, 
+       53, 72, 22, 73, 
+/* AUTO  0     */
+       202, 
+       6, 21, 0, 14, 
+       88, 58, 73, 
+/* AUTO  0     */
+       205, 
+       2, 45, 0, 45, 0, 69, 
+       88, 72, 
+/* OPEN  CHES  */
+       17, 33, 41, 
+       3, 41, 1, 37, 0, 41, 0, 51, 
+       12, 72, 
+/* LIGH  TORC  */
+       21, 35, 52, 
+       3, 56, 3, 19, 9, 16, 0, 56, 0, 9, 
+       12, 72, 
+/* BREA  ANY   */
+       0, 38, 0, 
+       126, 
+/* OPEN  CHES  */
+       5, 33, 41, 
+       3, 41, 
+       126, 29, 
+/* ATTA  ANY   */
+       1, 41, 0, 
+       126, 121, 
+/* EMPT  CHAL  */
+       16, 43, 59, 
+       1, 16, 9, 10, 9, 11, 9, 12, 
+       112, 
+/* POUR  OCEA  */
+       4, 44, 18, 
+       1, 16, 
+       125, 
+/* EXAM  FOUN  */
+       19, 22, 47, 
+       2, 11, 8, 30, 0, 30, 0, 26, 
+       6, 2, 60, 53, 
+/* UNTI  ROPE  */
+       18, 46, 72, 
+       2, 72, 2, 74, 0, 72, 0, 74, 
+       59, 59, 130, 
+/* UNTI  ROPE  */
+       19, 46, 72, 
+       2, 72, 0, 72, 0, 73, 0, 71, 
+       55, 55, 53, 12, 
+/* UNLI  TORC  */
+       13, 47, 52, 
+       3, 9, 0, 9, 0, 56, 
+       12, 72, 
+/* READ  NOTE  */
+       4, 48, 48, 
+       3, 43, 
+       110, 
+/* WEAR  SAND  */
+       13, 50, 56, 
+       1, 32, 6, 33, 0, 33, 
+       12, 74, 
+/* WEAR  MASK  */
+       14, 50, 58, 
+       1, 20, 6, 21, 0, 21, 
+       12, 74, 11, 
+/* TAKE  ROPE  */
+       9, 10, 72, 
+       2, 73, 0, 73, 
+       12, 74, 
+/* REMO  SAND  */
+       9, 51, 56, 
+       1, 33, 0, 33, 
+       12, 55, 
+/* REMO  MASK  */
+       9, 51, 58, 
+       1, 21, 0, 21, 
+       12, 55, 
+/* EMPT  CHAL  */
+       19, 43, 59, 
+       1, 16, 0, 10, 0, 11, 0, 12, 
+       12, 60, 60, 60, 
+/* ON    GROU  */
+       23, 66, 70, 
+       1, 58, 0, 58, 0, 58, 0, 30, 0, 38, 
+       12, 53, 62, 53, 
+/* DROP  ANCH  */
+       22, 18, 66, 
+       4, 6, 2, 7, 0, 67, 0, 7, 0, 19, 
+       12, 72, 58, 
+/* SAY   SUN   */
+       15, 54, 61, 
+       4, 14, 3, 68, 0, 12, 
+       12, 85, 37, 53, 
+/* SAY   ANY   */
+       2, 54, 0, 
+       12, 85, 112, 
+/* QUIT  ANY   */
+       1, 58, 0, 
+       41, 63, 
+/* INVE  ANY   */
+       0, 59, 0, 
+       66, 
+/* STEP  UP    */
+       9, 72, 5, 
+       4, 20, 0, 21, 
+       12, 54, 
+/* STEP  DOWN  */
+       9, 72, 6, 
+       4, 20, 0, 19, 
+       12, 54, 
+/* RAIS  ANCH  */
+       22, 69, 66, 
+       4, 6, 2, 67, 0, 67, 0, 7, 0, 19, 
+       12, 72, 60, 
+/* TIE   ROPE  */
+       5, 62, 72, 
+       1, 71, 
+       12, 3, 
+/* TO    STAL  */
+       22, 63, 69, 
+       4, 30, 3, 71, 0, 72, 0, 73, 0, 71, 
+       12, 53, 72, 
+/* DROP  ROPE  */
+       9, 18, 72, 
+       1, 71, 0, 71, 
+       12, 53, 
+/* ON    GROU  */
+       9, 66, 70, 
+       1, 68, 0, 68, 
+       12, 53, 
+/* IN    FOUN  */
+       14, 68, 47, 
+       1, 58, 4, 11, 0, 58, 
+       12, 59, 131, 
+/* IN    FOUN  */
+       14, 68, 47, 
+       1, 68, 4, 16, 0, 68, 
+       12, 59, 131, 
+/* BUY   SHIP  */
+       17, 64, 11, 
+       2, 4, 1, 53, 9, 2, 0, 2, 
+       12, 58, 
+/* BUY   SAND  */
+       17, 64, 56, 
+       2, 32, 1, 53, 9, 4, 0, 4, 
+       12, 58, 
+/* BUY   COMP  */
+       17, 64, 55, 
+       2, 34, 1, 53, 9, 3, 0, 3, 
+       12, 58, 
+/* BUY   TELE  */
+       17, 64, 54, 
+       2, 35, 1, 53, 9, 7, 0, 7, 
+       12, 58, 
+/* BUY   TABL  */
+       17, 64, 24, 
+       2, 58, 1, 53, 9, 6, 0, 6, 
+       12, 58, 
+/* GO    CREV  */
+       23, 1, 34, 
+       2, 12, 4, 16, 0, 14, 0, 12, 0, 8, 
+       12, 54, 53, 60, 
+/* GO    STAI  */
+       8, 1, 36, 
+       4, 19, 0, 20, 
+       54, 
+/* GO    STAI  */
+       8, 1, 36, 
+       4, 21, 0, 20, 
+       54, 
+/* GO    STAI  */
+       4, 1, 36, 
+       4, 20, 
+       123, 
+/* HELP  ANY   */
+       0, 53, 0, 
+       126, 
+/* IN    PIT   */
+       14, 68, 45, 
+       1, 73, 0, 73, 0, 74, 
+       12, 59, 53, 
+/* PRAY  ANY   */
+       1, 61, 0, 
+       12, 112, 
+/* IN    FOUN  */
+       18, 68, 47, 
+       1, 58, 4, 16, 0, 58, 0, 8, 
+       12, 62, 131, 
+/* IN    FOUN  */
+       18, 68, 47, 
+       1, 68, 4, 11, 0, 68, 0, 8, 
+       12, 62, 131, 
+/* DRIN  OCEA  */
+       14, 52, 18, 
+       1, 16, 8, 10, 0, 10, 
+       12, 60, 132, 
+/* DRIN  OCEA  */
+       13, 52, 18, 
+       1, 16, 8, 12, 0, 12, 
+       12, 60, 
+/* EXAM  FOUN  */
+       5, 22, 47, 
+       4, 36, 
+       113, 115, 
+/* EXAM  ANY   */
+       1, 22, 0, 
+       76, 14, 
+/* DROP  MASK  */
+       14, 18, 58, 
+       1, 20, 0, 20, 0, 21, 
+       12, 53, 55, 
+/* SAIL  ANY   */
+       5, 27, 0, 
+       4, 6, 
+       12, 88, 
+/* DROP  SAND  */
+       14, 18, 56, 
+       1, 32, 0, 32, 0, 33, 
+       12, 53, 55, 
+/* DROP  SAND  */
+       255, 18, 56, 
+       1, 32, 
+/* TAKE  SCOR  */
+       5, 10, 39, 
+       2, 55, 
+       132, 126, 
+/* GO    COT   */
+       9, 1, 49, 
+       4, 28, 0, 29, 
+       12, 54, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *PROC */
+       208, 82, 79, 67,
+       /* *RIDE */
+       210, 73, 68, 69,
+       /* *RUN */
+       210, 85, 78, 32,
+       /* *CLIM */
+       195, 76, 73, 77,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *EXIT */
+       197, 88, 73, 84,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* DIG */
+       68, 73, 71, 32,
+       /* TAKE */
+       84, 65, 75, 69,
+       /* *GET */
+       199, 69, 84, 32,
+       /* *CARR */
+       195, 65, 82, 82,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *HOLD */
+       200, 79, 76, 68,
+       /* *STEA */
+       211, 84, 69, 65,
+       /* FILL */
+       70, 73, 76, 76,
+       /* GIVE */
+       71, 73, 86, 69,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LOWE */
+       204, 79, 87, 69,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *THRO */
+       212, 72, 82, 79,
+       /* EXAM */
+       69, 88, 65, 77,
+       /* *STUD */
+       211, 84, 85, 68,
+       /* *LOOK */
+       204, 79, 79, 75,
+       /* *SEE */
+       211, 69, 69, 32,
+       /* *WATC */
+       215, 65, 84, 67,
+       /* SAIL */
+       83, 65, 73, 76,
+       /* *NAVI */
+       206, 65, 86, 73,
+       /* PUSH */
+       80, 85, 83, 72,
+       /* *SHOV */
+       211, 72, 79, 86,
+       /* *MOVE */
+       205, 79, 86, 69,
+       /* *SHAK */
+       211, 72, 65, 75,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* *UNLO */
+       213, 78, 76, 79,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* *IGNI */
+       201, 71, 78, 73,
+       /* *BURN */
+       194, 85, 82, 78,
+       /* BREA */
+       66, 82, 69, 65,
+       /* *DEST */
+       196, 69, 83, 84,
+       /* *SMAS */
+       211, 77, 65, 83,
+       /* ATTA */
+       65, 84, 84, 65,
+       /* *KILL */
+       203, 73, 76, 76,
+       /* EMPT */
+       69, 77, 80, 84,
+       /* POUR */
+       80, 79, 85, 82,
+       /* *SPIL */
+       211, 80, 73, 76,
+       /* UNTI */
+       85, 78, 84, 73,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* READ */
+       82, 69, 65, 68,
+       /* SLEE */
+       83, 76, 69, 69,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* REMO */
+       82, 69, 77, 79,
+       /* DRIN */
+       68, 82, 73, 78,
+       /* HELP */
+       72, 69, 76, 80,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *SCRE */
+       211, 67, 82, 69,
+       /* *YELL */
+       217, 69, 76, 76,
+       /* *HOLL */
+       200, 79, 76, 76,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* INVE */
+       73, 78, 86, 69,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* PRAY */
+       80, 82, 65, 89,
+       /* TIE */
+       84, 73, 69, 32,
+       /* TO */
+       84, 79, 32, 32,
+       /* BUY */
+       66, 85, 89, 32,
+       /* *PURC */
+       208, 85, 82, 67,
+       /* ON */
+       79, 78, 32, 32,
+       /* *AT */
+       193, 84, 32, 32,
+       /* IN */
+       73, 78, 32, 32,
+       /* RAIS */
+       82, 65, 73, 83,
+       /* *LIFT */
+       204, 73, 70, 84,
+       /* *WEIG */
+       215, 69, 73, 71,
+       /* STEP */
+       83, 84, 69, 80,
+       /* *WALK */
+       215, 65, 76, 75,
+       /* WAIT */
+       87, 65, 73, 84,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORTH */
+       78, 79, 82, 84,
+       /* SOUTH */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* KING */
+       75, 73, 78, 71,
+       /* GUAR */
+       71, 85, 65, 82,
+       /* PALA */
+       80, 65, 76, 65,
+       /* MERC */
+       77, 69, 82, 67,
+       /* SHIP */
+       83, 72, 73, 80,
+       /* *BOAT */
+       194, 79, 65, 84,
+       /* *ABOA */
+       193, 66, 79, 65,
+       /* MAST */
+       77, 65, 83, 84,
+       /* SAIL */
+       83, 65, 73, 76,
+       /* MEDI */
+       77, 69, 68, 73,
+       /* AROU */
+       65, 82, 79, 85,
+       /* OCEA */
+       79, 67, 69, 65,
+       /* *WATE */
+       215, 65, 84, 69,
+       /* *LIQU */
+       204, 73, 81, 85,
+       /* PASS */
+       80, 65, 83, 83,
+       /* HALL */
+       72, 65, 76, 76,
+       /* CAVE */
+       67, 65, 86, 69,
+       /* TABL */
+       84, 65, 66, 76,
+       /* STON */
+       83, 84, 79, 78,
+       /* SKEL */
+       83, 75, 69, 76,
+       /* *BONE */
+       194, 79, 78, 69,
+       /* MAN */
+       77, 65, 78, 32,
+       /* FLIN */
+       70, 76, 73, 78,
+       /* *STEE */
+       211, 84, 69, 69,
+       /* SHOV */
+       83, 72, 79, 86,
+       /* HUT */
+       72, 85, 84, 32,
+       /* MOUN */
+       77, 79, 85, 78,
+       /* CREV */
+       67, 82, 69, 86,
+       /* BOX */
+       66, 79, 88, 32,
+       /* STAI */
+       83, 84, 65, 73,
+       /* CITY */
+       67, 73, 84, 89,
+       /* STAT */
+       83, 84, 65, 84,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* ALTA */
+       65, 76, 84, 65,
+       /* CHES */
+       67, 72, 69, 83,
+       /* KEY */
+       75, 69, 89, 32,
+       /* CYCL */
+       67, 89, 67, 76,
+       /* JUNG */
+       74, 85, 78, 71,
+       /* PIT */
+       80, 73, 84, 32,
+       /* CABI */
+       67, 65, 66, 73,
+       /* FOUN */
+       70, 79, 85, 78,
+       /* NOTE */
+       78, 79, 84, 69,
+       /* COT */
+       67, 79, 84, 32,
+       /* MARK */
+       77, 65, 82, 75,
+       /* BLOC */
+       66, 76, 79, 67,
+       /* TORC */
+       84, 79, 82, 67,
+       /* RUBB */
+       82, 85, 66, 66,
+       /* TELE */
+       84, 69, 76, 69,
+       /* COMP */
+       67, 79, 77, 80,
+       /* SAND */
+       83, 65, 78, 68,
+       /* GLOB */
+       71, 76, 79, 66,
+       /* MASK */
+       77, 65, 83, 75,
+       /* CHAL */
+       67, 72, 65, 76,
+       /* INVE */
+       73, 78, 86, 69,
+       /* SUN */
+       83, 85, 78, 32,
+       /* SWOR */
+       83, 87, 79, 82,
+       /* STRA */
+       83, 84, 82, 65,
+       /* BEAC */
+       66, 69, 65, 67,
+       /* ISLA */
+       73, 83, 76, 65,
+       /* ANCH */
+       65, 78, 67, 72,
+       /* ASHO */
+       65, 83, 72, 79,
+       /* GAME */
+       71, 65, 77, 69,
+       /* STAL */
+       83, 84, 65, 76,
+       /* GROU */
+       71, 82, 79, 85,
+       /* *FLOO */
+       198, 76, 79, 79,
+       /* ROPE */
+       82, 79, 80, 69,
+       /* BAG */
+       66, 65, 71, 32,
+       /* *GOLD */
+       199, 79, 76, 68,
+       0,
+};
+const uint8_t automap[] = {
+       /* SKEL */
+       83, 75, 69, 76,
+       8,
+       /* TORC */
+       84, 79, 82, 67,
+       9,
+       /* BOX */
+       66, 79, 88, 32,
+       10,
+       /* CHAL */
+       67, 72, 65, 76,
+       16,
+       /* FLIN */
+       70, 76, 73, 78,
+       19,
+       /* MASK */
+       77, 65, 83, 75,
+       20,
+       /* GLOB */
+       71, 76, 79, 66,
+       26,
+       /* SHOV */
+       83, 72, 79, 86,
+       31,
+       /* SAND */
+       83, 65, 78, 68,
+       32,
+       /* COMP */
+       67, 79, 77, 80,
+       34,
+       /* TELE */
+       84, 69, 76, 69,
+       35,
+       /* KEY */
+       75, 69, 89, 32,
+       37,
+       /* RUBB */
+       82, 85, 66, 66,
+       38,
+       /* CHES */
+       67, 72, 69, 83,
+       41,
+       /* NOTE */
+       78, 79, 84, 69,
+       43,
+       /* RUBB */
+       82, 85, 66, 66,
+       49,
+       /* CHES */
+       67, 72, 69, 83,
+       51,
+       /* BAG */
+       66, 65, 71, 32,
+       53,
+       /* TORC */
+       84, 79, 82, 67,
+       56,
+       /* SWOR */
+       83, 87, 79, 82,
+       63,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv13.c b/Applications/games/adv13.c
new file mode 100644 (file)
index 0000000..da25d9a
--- /dev/null
@@ -0,0 +1,3454 @@
+#define NUM_OBJ 75
+#define WORDSIZE 5
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 6;
+const uint8_t maxcar = 10;
+const uint8_t treasure = 19;
+const uint8_t treasures = 13;
+const uint8_t lastloc = 32;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+102, 105, 101, 108, 100, 0 };
+const uint8_t loctxt_2[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 68, 114, 97, 119, 98, 114, 105, 100, 103, 101, 0 };
+const uint8_t loctxt_3[] = {
+99, 111, 117, 114, 116, 121, 97, 114, 100, 0 };
+const uint8_t loctxt_4[] = {
+109, 97, 103, 105, 99, 32, 102, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t loctxt_5[] = {
+115, 116, 114, 101, 97, 109, 32, 111, 102, 32, 108, 97, 118, 97, 0 };
+const uint8_t loctxt_6[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 111, 112, 32, 111, 102, 32, 116, 104, 101, 32, 102, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t loctxt_7[] = {
+98, 97, 108, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_8[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 108, 97, 114, 103, 101, 32, 99, 104, 97, 110, 100, 101, 108, 105, 101, 114, 0 };
+const uint8_t loctxt_9[] = {
+102, 111, 114, 101, 115, 116, 32, 111, 102, 32, 101, 110, 99, 104, 97, 110, 116, 109, 101, 110, 116, 0 };
+const uint8_t loctxt_10[] = {
+112, 108, 97, 105, 110, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_11[] = {
+115, 116, 111, 114, 101, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_12[] = {
+100, 117, 110, 103, 101, 111, 110, 32, 99, 101, 108, 108, 0 };
+const uint8_t loctxt_13[] = {
+97, 110, 116, 101, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_14[] = {
+115, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t loctxt_15[] = {
+108, 111, 102, 116, 32, 97, 98, 111, 118, 101, 32, 98, 97, 108, 108, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_16[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 119, 97, 116, 101, 114, 32, 111, 102, 32, 97, 32, 109, 111, 97, 116, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 117, 110, 100, 101, 114, 119, 97, 116, 101, 114, 32, 105, 110, 10, 116, 104, 105, 99, 107, 32, 109, 117, 114, 107, 121, 32, 102, 108, 117, 105, 100, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 117, 110, 100, 101, 114, 32, 116, 104, 101, 32, 115, 116, 97, 105, 114, 115, 0 };
+const uint8_t loctxt_19[] = {
+104, 111, 108, 108, 111, 119, 32, 116, 114, 101, 101, 32, 115, 105, 103, 110, 32, 115, 97, 121, 115, 32, 100, 114, 111, 112, 10, 115, 116, 97, 114, 115, 32, 104, 101, 114, 101, 0 };
+const uint8_t loctxt_20[] = {
+112, 111, 111, 108, 32, 111, 102, 32, 100, 105, 114, 116, 121, 32, 119, 97, 116, 101, 114, 0 };
+const uint8_t loctxt_21[] = {
+107, 105, 116, 99, 104, 101, 110, 0 };
+const uint8_t loctxt_22[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 98, 111, 120, 0 };
+const uint8_t loctxt_23[] = {
+98, 111, 120, 0 };
+const uint8_t loctxt_24[] = {
+100, 117, 115, 116, 121, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_25[] = {
+115, 116, 111, 110, 101, 32, 115, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t loctxt_26[] = {
+100, 97, 109, 112, 32, 99, 97, 118, 101, 114, 110, 0 };
+const uint8_t loctxt_27[] = {
+115, 116, 111, 110, 101, 32, 103, 114, 111, 116, 116, 111, 0 };
+const uint8_t loctxt_28[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 101, 110, 116, 114, 121, 119, 97, 121, 0 };
+const uint8_t loctxt_29[] = {
+100, 114, 97, 103, 111, 110, 39, 115, 32, 108, 97, 105, 114, 0 };
+const uint8_t loctxt_30[] = {
+119, 105, 122, 97, 114, 100, 39, 115, 32, 119, 111, 114, 107, 115, 104, 111, 112, 0 };
+const uint8_t loctxt_31[] = {
+118, 97, 99, 97, 110, 116, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_32[] = {
+114, 101, 97, 108, 32, 109, 101, 115, 115, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 9, 9, 0, 9, 0, 0 } }, 
+               { loctxt_2,  { 0, 0, 28, 1, 0, 0 } }, 
+               { loctxt_3,  { 21, 10, 7, 28, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_5,  { 26, 27, 0, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 0, 0, 0, 4 } }, 
+               { loctxt_7,  { 0, 0, 0, 3, 0, 0 } }, 
+               { loctxt_8,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 9, 9, 1, 9, 0, 0 } }, 
+               { loctxt_10,  { 3, 0, 0, 0, 0, 0 } }, 
+               { loctxt_11,  { 10, 0, 0, 0, 0, 14 } }, 
+               { loctxt_12,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 0, 14, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_19,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 0, 21, 0 } }, 
+               { loctxt_21,  { 0, 3, 0, 0, 0, 0 } }, 
+               { loctxt_22,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_23,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_24,  { 0, 0, 0, 10, 0, 0 } }, 
+               { loctxt_25,  { 0, 0, 0, 0, 24, 26 } }, 
+               { loctxt_26,  { 0, 0, 0, 0, 25, 0 } }, 
+               { loctxt_27,  { 5, 0, 0, 0, 0, 0 } }, 
+               { loctxt_28,  { 0, 0, 3, 0, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 0, 0, 10, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 29, 0, 0 } }, 
+               { loctxt_31,  { 0, 0, 10, 0, 0, 0 } }, 
+               { loctxt_32,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       12,
+       1,
+       1,
+       1,
+       0,
+       4,
+       8,
+       0,
+       30,
+       0,
+       11,
+       18,
+       0,
+       0,
+       0,
+       27,
+       29,
+       0,
+       3,
+       4,
+       0,
+       26,
+       6,
+       6,
+       255,
+       7,
+       0,
+       7,
+       8,
+       12,
+       0,
+       13,
+       0,
+       31,
+       255,
+       15,
+       255,
+       8,
+       0,
+       0,
+       3,
+       0,
+       0,
+       16,
+       2,
+       255,
+       21,
+       0,
+       21,
+       0,
+       3,
+       0,
+       0,
+       24,
+       0,
+       28,
+       0,
+       30,
+       29,
+       0,
+       0,
+       255,
+       17,
+       0,
+       31,
+       0,
+       0,
+       12,
+       0,
+       0,
+       27,
+       23,
+       11,
+       255,
+       28,
+       14,
+};
+
+
+const uint8_t objtxt_0[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_1[] = {
+77, 111, 97, 116, 0 };
+const uint8_t objtxt_2[] = {
+67, 97, 115, 116, 108, 101, 0 };
+const uint8_t objtxt_3[] = {
+82, 97, 105, 115, 101, 100, 32, 100, 114, 97, 119, 98, 114, 105, 100, 103, 101, 0 };
+const uint8_t objtxt_4[] = {
+76, 111, 119, 101, 114, 101, 100, 32, 100, 114, 97, 119, 98, 114, 105, 100, 103, 101, 0 };
+const uint8_t objtxt_5[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_6[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_7[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_8[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_9[] = {
+73, 39, 109, 32, 103, 108, 111, 119, 105, 110, 103, 0 };
+const uint8_t objtxt_10[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_11[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_12[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_13[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_14[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_15[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_16[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_17[] = {
+42, 83, 84, 65, 82, 0 };
+const uint8_t objtxt_18[] = {
+77, 97, 103, 105, 99, 32, 70, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t objtxt_19[] = {
+67, 111, 117, 114, 116, 121, 97, 114, 100, 0 };
+const uint8_t objtxt_20[] = {
+77, 97, 103, 105, 99, 32, 109, 105, 114, 114, 111, 114, 0 };
+const uint8_t objtxt_21[] = {
+72, 111, 116, 32, 108, 97, 118, 97, 32, 115, 116, 114, 101, 97, 109, 0 };
+const uint8_t objtxt_22[] = {
+68, 97, 114, 107, 32, 97, 105, 114, 32, 115, 104, 97, 102, 116, 0 };
+const uint8_t objtxt_23[] = {
+87, 97, 116, 101, 114, 32, 111, 117, 116, 108, 101, 116, 0 };
+const uint8_t objtxt_24[] = {
+70, 105, 114, 101, 32, 115, 112, 101, 108, 108, 0 };
+const uint8_t objtxt_25[] = {
+67, 104, 97, 110, 100, 101, 108, 105, 101, 114, 32, 110, 101, 97, 114, 32, 99, 101, 105, 108, 105, 110, 103, 0 };
+const uint8_t objtxt_26[] = {
+70, 97, 108, 108, 101, 110, 32, 67, 104, 97, 110, 100, 101, 108, 105, 101, 114, 0 };
+const uint8_t objtxt_27[] = {
+84, 105, 101, 100, 32, 101, 110, 100, 32, 111, 102, 32, 114, 111, 112, 101, 0 };
+const uint8_t objtxt_28[] = {
+66, 114, 111, 107, 101, 110, 32, 103, 108, 97, 115, 115, 0 };
+const uint8_t objtxt_29[] = {
+79, 97, 107, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_30[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_31[] = {
+79, 97, 107, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_32[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_33[] = {
+83, 112, 101, 108, 108, 32, 111, 102, 32, 77, 101, 116, 104, 117, 115, 101, 108, 97, 104, 0 };
+const uint8_t objtxt_34[] = {
+83, 101, 101, 100, 32, 115, 112, 101, 108, 108, 0 };
+const uint8_t objtxt_35[] = {
+80, 111, 116, 105, 111, 110, 0 };
+const uint8_t objtxt_36[] = {
+76, 105, 103, 104, 116, 32, 115, 113, 117, 97, 114, 101, 100, 32, 115, 112, 101, 108, 108, 0 };
+const uint8_t objtxt_37[] = {
+66, 97, 108, 108, 114, 111, 111, 109, 0 };
+const uint8_t objtxt_38[] = {
+76, 111, 102, 116, 0 };
+const uint8_t objtxt_39[] = {
+77, 111, 97, 116, 32, 98, 111, 116, 116, 111, 109, 0 };
+const uint8_t objtxt_40[] = {
+80, 101, 114, 109, 101, 97, 98, 105, 108, 105, 116, 121, 32, 115, 112, 101, 108, 108, 0 };
+const uint8_t objtxt_41[] = {
+83, 112, 101, 108, 108, 32, 111, 102, 32, 66, 108, 105, 115, 115, 0 };
+const uint8_t objtxt_42[] = {
+80, 105, 101, 99, 101, 32, 111, 102, 32, 119, 111, 111, 100, 0 };
+const uint8_t objtxt_43[] = {
+83, 108, 101, 101, 112, 105, 110, 103, 32, 109, 111, 97, 116, 32, 109, 111, 110, 115, 116, 101, 114, 0 };
+const uint8_t objtxt_44[] = {
+77, 111, 97, 116, 0 };
+const uint8_t objtxt_45[] = {
+89, 111, 104, 111, 32, 115, 112, 101, 108, 108, 0 };
+const uint8_t objtxt_46[] = {
+76, 97, 114, 103, 101, 32, 102, 108, 111, 111, 114, 32, 100, 114, 97, 105, 110, 0 };
+const uint8_t objtxt_47[] = {
+72, 111, 108, 101, 0 };
+const uint8_t objtxt_48[] = {
+87, 111, 111, 100, 101, 110, 32, 99, 114, 97, 116, 101, 0 };
+const uint8_t objtxt_49[] = {
+72, 111, 108, 101, 0 };
+const uint8_t objtxt_50[] = {
+70, 105, 114, 101, 32, 98, 114, 105, 99, 107, 115, 0 };
+const uint8_t objtxt_51[] = {
+87, 97, 116, 101, 114, 32, 100, 114, 111, 112, 108, 101, 116, 115, 0 };
+const uint8_t objtxt_52[] = {
+87, 114, 105, 110, 107, 108, 101, 115, 0 };
+const uint8_t objtxt_53[] = {
+83, 116, 111, 110, 101, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_54[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_55[] = {
+82, 97, 105, 115, 101, 100, 32, 100, 114, 97, 119, 98, 114, 105, 100, 103, 101, 0 };
+const uint8_t objtxt_56[] = {
+76, 111, 119, 101, 114, 101, 100, 32, 100, 114, 97, 119, 98, 114, 105, 100, 103, 101, 0 };
+const uint8_t objtxt_57[] = {
+70, 105, 114, 101, 102, 108, 121, 32, 115, 112, 101, 108, 108, 0 };
+const uint8_t objtxt_58[] = {
+79, 108, 100, 32, 100, 114, 97, 103, 111, 110, 0 };
+const uint8_t objtxt_59[] = {
+68, 117, 115, 116, 0 };
+const uint8_t objtxt_60[] = {
+72, 111, 108, 101, 0 };
+const uint8_t objtxt_61[] = {
+87, 105, 99, 107, 101, 100, 32, 81, 117, 101, 101, 110, 39, 115, 32, 115, 112, 101, 108, 108, 0 };
+const uint8_t objtxt_62[] = {
+83, 111, 103, 103, 121, 32, 116, 111, 119, 101, 108, 0 };
+const uint8_t objtxt_63[] = {
+65, 115, 104, 101, 115, 0 };
+const uint8_t objtxt_64[] = {
+85, 110, 114, 97, 118, 101, 108, 32, 115, 112, 101, 108, 108, 0 };
+const uint8_t objtxt_65[] = {
+68, 97, 109, 112, 32, 116, 111, 119, 101, 108, 0 };
+const uint8_t objtxt_66[] = {
+68, 114, 121, 32, 116, 111, 119, 101, 108, 0 };
+const uint8_t objtxt_67[] = {
+65, 105, 114, 32, 115, 104, 97, 102, 116, 0 };
+const uint8_t objtxt_68[] = {
+84, 105, 110, 32, 99, 97, 110, 0 };
+const uint8_t objtxt_69[] = {
+79, 112, 101, 110, 32, 99, 97, 110, 0 };
+const uint8_t objtxt_70[] = {
+68, 105, 122, 122, 121, 32, 68, 101, 97, 110, 32, 115, 112, 101, 108, 108, 0 };
+const uint8_t objtxt_71[] = {
+80, 105, 101, 99, 101, 32, 111, 102, 32, 109, 101, 116, 97, 108, 0 };
+const uint8_t objtxt_72[] = {
+83, 105, 103, 110, 58, 32, 83, 84, 65, 73, 82, 87, 65, 89, 32, 67, 79, 78, 68, 69, 77, 69, 68, 0 };
+const uint8_t objtxt_73[] = {
+76, 121, 99, 97, 110, 116, 104, 114, 111, 112, 101, 32, 115, 112, 101, 108, 108, 0 };
+const uint8_t objtxt_74[] = {
+79, 108, 100, 32, 108, 101, 118, 101, 114, 32, 105, 110, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_75[] = {
+82, 97, 98, 105, 100, 32, 114, 97, 116, 115, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+       objtxt_67,
+       objtxt_68,
+       objtxt_69,
+       objtxt_70,
+       objtxt_71,
+       objtxt_72,
+       objtxt_73,
+       objtxt_74,
+       objtxt_75,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_2[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_3[] = {
+110, 111, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_4[] = {
+115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_5[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_6[] = {
+83, 111, 114, 114, 121, 44, 0 };
+const uint8_t msgtxt_7[] = {
+73, 39, 109, 0 };
+const uint8_t msgtxt_8[] = {
+121, 101, 97, 114, 115, 32, 111, 108, 100, 44, 0 };
+const uint8_t msgtxt_9[] = {
+104, 101, 97, 108, 116, 104, 121, 44, 0 };
+const uint8_t msgtxt_10[] = {
+102, 108, 111, 97, 116, 105, 110, 103, 32, 97, 110, 32, 105, 110, 99, 104, 32, 97, 98, 111, 118, 101, 32, 115, 117, 114, 102, 97, 99, 101, 44, 0 };
+const uint8_t msgtxt_11[] = {
+105, 110, 118, 105, 115, 105, 98, 108, 101, 44, 0 };
+const uint8_t msgtxt_12[] = {
+114, 105, 103, 104, 116, 32, 110, 111, 119, 33, 0 };
+const uint8_t msgtxt_13[] = {
+65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 49, 51, 32, 98, 121, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 44, 32, 100, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 58, 10, 82, 111, 101, 32, 65, 100, 97, 109, 115, 32, 40, 110, 111, 116, 32, 97, 32, 114, 101, 108, 97, 116, 105, 118, 101, 41, 32, 97, 110, 100, 10, 82, 105, 99, 104, 97, 114, 100, 32, 65, 100, 97, 109, 115, 32, 40, 66, 114, 111, 116, 104, 101, 114, 32, 97, 110, 100, 32, 102, 97, 118, 111, 114, 105, 116, 101, 32, 66, 101, 116, 97, 32, 84, 101, 115, 116, 101, 114, 41, 33, 0 };
+const uint8_t msgtxt_14[] = {
+35, 32, 64, 32, 33, 32, 35, 32, 37, 32, 42, 32, 40, 101, 120, 112, 108, 101, 116, 105, 118, 101, 32, 100, 101, 108, 101, 116, 101, 100, 41, 32, 108, 97, 118, 97, 33, 0 };
+const uint8_t msgtxt_15[] = {
+73, 32, 98, 117, 114, 110, 116, 32, 116, 111, 32, 97, 32, 99, 114, 105, 115, 112, 46, 0 };
+const uint8_t msgtxt_16[] = {
+108, 97, 114, 103, 101, 32, 119, 97, 116, 101, 114, 32, 102, 111, 117, 110, 116, 97, 105, 110, 32, 119, 105, 116, 104, 32, 50, 32, 115, 116, 111, 114, 121, 32, 99, 101, 110, 116, 101, 114, 112, 105, 101, 99, 101, 46, 0 };
+const uint8_t msgtxt_17[] = {
+105, 110, 32, 50, 32, 119, 111, 114, 100, 115, 59, 32, 97, 116, 32, 119, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_18[] = {
+105, 116, 32, 115, 116, 97, 114, 116, 115, 32, 116, 111, 32, 98, 117, 114, 110, 46, 0 };
+const uint8_t msgtxt_19[] = {
+67, 104, 97, 110, 100, 101, 108, 105, 101, 114, 32, 102, 101, 108, 108, 32, 119, 105, 116, 104, 32, 97, 32, 99, 114, 97, 115, 104, 0 };
+const uint8_t msgtxt_20[] = {
+111, 110, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_21[] = {
+97, 110, 32, 105, 110, 97, 99, 99, 101, 115, 115, 105, 98, 108, 101, 32, 108, 111, 102, 116, 32, 97, 114, 101, 97, 46, 0 };
+const uint8_t msgtxt_22[] = {
+73, 116, 39, 115, 32, 115, 116, 114, 97, 105, 103, 104, 116, 32, 117, 112, 33, 0 };
+const uint8_t msgtxt_23[] = {
+73, 116, 32, 119, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 46, 0 };
+const uint8_t msgtxt_24[] = {
+83, 97, 121, 32, 97, 103, 97, 105, 110, 32, 119, 105, 116, 104, 32, 100, 105, 114, 101, 99, 116, 105, 111, 110, 46, 0 };
+const uint8_t msgtxt_25[] = {
+104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_26[] = {
+119, 97, 108, 108, 0 };
+const uint8_t msgtxt_27[] = {
+105, 110, 32, 116, 104, 101, 32, 119, 97, 121, 0 };
+const uint8_t msgtxt_28[] = {
+109, 111, 118, 101, 115, 46, 0 };
+const uint8_t msgtxt_29[] = {
+97, 32, 108, 111, 99, 107, 101, 100, 32, 115, 111, 108, 105, 100, 32, 100, 111, 111, 114, 46, 0 };
+const uint8_t msgtxt_30[] = {
+73, 32, 102, 97, 108, 108, 33, 0 };
+const uint8_t msgtxt_31[] = {
+79, 112, 101, 110, 32, 83, 69, 83, 65, 77, 69, 32, 83, 69, 69, 68, 33, 0 };
+const uint8_t msgtxt_32[] = {
+83, 112, 101, 108, 108, 32, 102, 97, 105, 108, 115, 33, 0 };
+const uint8_t msgtxt_33[] = {
+73, 32, 104, 105, 116, 32, 104, 97, 114, 100, 33, 0 };
+const uint8_t msgtxt_34[] = {
+71, 111, 116, 0 };
+const uint8_t msgtxt_35[] = {
+105, 116, 39, 115, 32, 101, 110, 99, 104, 97, 110, 116, 101, 100, 0 };
+const uint8_t msgtxt_36[] = {
+73, 32, 99, 97, 110, 39, 116, 44, 0 };
+const uint8_t msgtxt_37[] = {
+83, 112, 101, 108, 108, 32, 119, 111, 114, 107, 115, 33, 0 };
+const uint8_t msgtxt_38[] = {
+73, 32, 98, 114, 101, 97, 116, 104, 101, 46, 0 };
+const uint8_t msgtxt_39[] = {
+65, 114, 103, 104, 33, 0 };
+const uint8_t msgtxt_40[] = {
+73, 32, 100, 114, 111, 119, 110, 33, 0 };
+const uint8_t msgtxt_41[] = {
+65, 115, 116, 104, 109, 97, 32, 121, 111, 117, 32, 107, 110, 111, 119, 46, 0 };
+const uint8_t msgtxt_42[] = {
+87, 104, 111, 111, 115, 104, 33, 0 };
+const uint8_t msgtxt_43[] = {
+73, 116, 32, 98, 114, 101, 97, 107, 115, 33, 0 };
+const uint8_t msgtxt_44[] = {
+73, 32, 116, 114, 105, 112, 32, 38, 0 };
+const uint8_t msgtxt_45[] = {
+67, 114, 97, 115, 104, 33, 0 };
+const uint8_t msgtxt_46[] = {
+72, 111, 119, 63, 0 };
+const uint8_t msgtxt_47[] = {
+105, 116, 39, 115, 32, 100, 105, 115, 115, 111, 108, 118, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_48[] = {
+73, 32, 102, 101, 101, 108, 32, 118, 101, 114, 121, 32, 111, 100, 100, 33, 0 };
+const uint8_t msgtxt_49[] = {
+71, 114, 101, 97, 116, 33, 32, 73, 39, 109, 32, 100, 114, 97, 103, 111, 110, 32, 102, 111, 100, 100, 101, 114, 33, 0 };
+const uint8_t msgtxt_50[] = {
+51, 32, 111, 100, 100, 32, 119, 97, 108, 108, 115, 32, 38, 32, 102, 108, 111, 111, 114, 46, 0 };
+const uint8_t msgtxt_51[] = {
+115, 109, 97, 108, 108, 32, 99, 114, 97, 99, 107, 115, 32, 97, 114, 111, 117, 110, 100, 32, 101, 100, 103, 101, 115, 32, 38, 32, 101, 109, 112, 116, 121, 32, 105, 99, 111, 110, 32, 110, 105, 99, 104, 101, 115, 46, 0 };
+const uint8_t msgtxt_52[] = {
+111, 102, 32, 97, 32, 104, 111, 108, 101, 46, 0 };
+const uint8_t msgtxt_53[] = {
+65, 67, 72, 79, 79, 79, 79, 33, 0 };
+const uint8_t msgtxt_54[] = {
+68, 114, 97, 103, 111, 110, 0 };
+const uint8_t msgtxt_55[] = {
+83, 111, 117, 110, 100, 115, 32, 104, 111, 108, 108, 111, 119, 33, 0 };
+const uint8_t msgtxt_56[] = {
+104, 101, 97, 114, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_57[] = {
+73, 39, 109, 32, 100, 114, 97, 103, 103, 101, 100, 32, 117, 110, 100, 101, 114, 33, 0 };
+const uint8_t msgtxt_58[] = {
+76, 105, 103, 104, 116, 32, 108, 105, 103, 104, 116, 32, 40, 117, 110, 104, 101, 97, 118, 121, 32, 108, 97, 109, 112, 41, 32, 114, 105, 115, 101, 115, 33, 0 };
+const uint8_t msgtxt_59[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 116, 104, 114, 111, 119, 32, 116, 104, 97, 116, 33, 0 };
+const uint8_t msgtxt_60[] = {
+98, 97, 116, 116, 108, 101, 109, 101, 110, 116, 115, 32, 97, 98, 111, 118, 101, 46, 0 };
+const uint8_t msgtxt_61[] = {
+97, 32, 116, 105, 110, 32, 99, 97, 110, 32, 117, 112, 32, 116, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_62[] = {
+68, 114, 97, 116, 32, 73, 32, 109, 105, 115, 115, 101, 100, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_63[] = {
+73, 32, 104, 105, 116, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_64[] = {
+77, 117, 99, 104, 32, 116, 111, 111, 32, 104, 105, 103, 104, 32, 102, 111, 114, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_65[] = {
+97, 114, 109, 115, 32, 111, 102, 32, 115, 116, 101, 101, 108, 44, 0 };
+const uint8_t msgtxt_66[] = {
+97, 32, 115, 104, 97, 114, 112, 32, 104, 111, 111, 107, 101, 100, 32, 112, 105, 101, 99, 101, 32, 111, 102, 32, 109, 101, 116, 97, 108, 46, 0 };
+const uint8_t msgtxt_67[] = {
+116, 104, 101, 32, 117, 115, 117, 97, 108, 32, 116, 104, 105, 110, 103, 115, 46, 0 };
+const uint8_t msgtxt_68[] = {
+83, 97, 121, 32, 97, 103, 97, 105, 110, 32, 38, 32, 98, 101, 32, 115, 112, 101, 99, 105, 102, 105, 99, 46, 0 };
+const uint8_t msgtxt_69[] = {
+87, 104, 97, 116, 32, 100, 111, 32, 121, 111, 117, 32, 116, 104, 105, 110, 107, 32, 73, 39, 109, 32, 100, 111, 105, 110, 103, 63, 0 };
+const uint8_t msgtxt_70[] = {
+97, 32, 102, 101, 114, 114, 101, 116, 44, 0 };
+const uint8_t msgtxt_71[] = {
+114, 97, 116, 115, 32, 115, 99, 117, 116, 116, 108, 105, 110, 103, 32, 105, 110, 116, 111, 32, 116, 104, 101, 105, 114, 32, 104, 111, 108, 101, 46, 0 };
+const uint8_t msgtxt_72[] = {
+114, 97, 116, 115, 32, 105, 110, 32, 116, 104, 101, 32, 119, 97, 121, 33, 0 };
+const uint8_t msgtxt_73[] = {
+97, 32, 115, 109, 97, 108, 108, 32, 116, 121, 112, 101, 0 };
+const uint8_t msgtxt_74[] = {
+105, 116, 115, 32, 115, 101, 97, 108, 101, 100, 46, 0 };
+const uint8_t msgtxt_75[] = {
+69, 118, 101, 114, 121, 116, 104, 105, 110, 103, 32, 115, 112, 105, 110, 115, 32, 97, 114, 111, 117, 110, 100, 33, 0 };
+const uint8_t msgtxt_76[] = {
+67, 97, 115, 116, 32, 97, 32, 115, 112, 101, 108, 108, 33, 0 };
+const uint8_t msgtxt_77[] = {
+73, 39, 109, 32, 100, 101, 45, 109, 111, 97, 116, 101, 100, 32, 105, 110, 32, 116, 104, 101, 32, 102, 105, 101, 108, 100, 33, 0 };
+const uint8_t msgtxt_78[] = {
+83, 119, 105, 109, 32, 100, 111, 119, 110, 63, 0 };
+const uint8_t msgtxt_79[] = {
+66, 108, 117, 98, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   IN TREE*/
+       170, 
+       4, 19, 9, 15, 
+       56, 70, 76, 
+/* AUTO  100   IN BOX*/
+       174, 
+       4, 23, 5, 47, 9, 15, 
+       56, 70, 76, 
+/* AUTO  100   NOT DARK*/
+       177, 
+       8, 15, 7, 23, 7, 19, 7, 12, 
+       57, 76, 
+/* AUTO  100   WATER FOUNTAIN*/
+       172, 
+       8, 8, 6, 51, 0, 51, 
+       74, 
+/* AUTO  50    FNTN YOUTH*/
+       146, 50, 
+       1, 51, 0, 4, 0, 11, 0, 4, 
+       81, 83, 81, 
+/* AUTO  50    ELDER SPELL*/
+       142, 50, 
+       8, 7, 0, 5, 0, 5, 
+       81, 77, 73, 
+/* AUTO  0     AGING OVER*/
+       200, 
+       15, 0, 0, 7, 
+       60, 
+/* AUTO  0     AGE HIM*/
+       211, 
+       0, 5, 0, 4, 0, 19, 0, 4, 
+       81, 81, 82, 81, 
+/* AUTO  100   WET TOWEL*/
+       176, 
+       4, 17, 3, 65, 0, 65, 0, 62, 
+       72, 
+/* AUTO  100   IN CELL DARK*/
+       170, 
+       2, 29, 9, 15, 
+       56, 70, 76, 
+/* AUTO  100   INTRO*/
+       175, 
+       9, 1, 0, 1, 0, 31, 
+       58, 13, 79, 73, 
+/* AUTO  0     */
+       202, 
+       0, 4, 0, 1, 
+       81, 80, 54, 
+/* AUTO  0     SET CNTRS*/
+       211, 
+       0, 10, 0, 2, 0, 30, 0, 3, 
+       79, 81, 79, 81, 
+/* AUTO  0     */
+       211, 
+       0, 6, 0, 5, 0, 15, 0, 7, 
+       79, 81, 79, 81, 
+/* AUTO  0     */
+       206, 
+       0, 22, 0, 1, 0, 1, 
+       54, 87, 54, 
+/* AUTO  100   WET TOWEL*/
+       176, 
+       4, 17, 3, 66, 0, 66, 0, 62, 
+       72, 
+/* AUTO  75    DRY TOWEL*/
+       144, 75, 
+       4, 5, 0, 65, 0, 66, 3, 65, 
+       72, 
+/* AUTO  80    BLISS TIMER*/
+       138, 80, 
+       8, 4, 0, 3, 
+       81, 77, 73, 
+/* AUTO  0     */
+       200, 
+       15, 0, 0, 4, 
+       60, 
+/* AUTO  0     */
+       196, 
+       0, 3, 
+       81, 
+/* AUTO  100   */
+       170, 
+       0, 4, 0, 52, 
+       81, 73, 59, 
+/* AUTO  0     TOO YOUNG*/
+       196, 
+       15, 0, 
+       61, 
+/* AUTO  0     TOO OLD*/
+       196, 
+       16, 100, 
+       61, 
+/* AUTO  0     WRINKLES*/
+       206, 
+       16, 60, 0, 52, 15, 100, 
+       74, 39, 48, 
+/* AUTO  0     YOUNG*/
+       200, 
+       15, 20, 16, 0, 
+       48, 
+/* AUTO  0     .*/
+       196, 
+       0, 4, 
+       81, 
+/* AUTO  100   DRAGON FOOD*/
+       171, 
+       2, 58, 9, 3, 
+       88, 88, 49, 61, 
+/* AUTO  100   CHAND FALL*/
+       179, 
+       8, 12, 0, 25, 0, 26, 0, 12, 
+       19, 73, 72, 60, 
+/* AUTO  0     ON ME*/
+       197, 
+       2, 26, 
+       20, 61, 
+/* AUTO  50    INVIS CNTR*/
+       138, 50, 
+       8, 3, 0, 2, 
+       81, 77, 73, 
+/* AUTO  0     */
+       200, 
+       15, 0, 0, 3, 
+       60, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+/* AUTO  100   LAVA*/
+       169, 
+       4, 5, 9, 4, 
+       15, 61, 
+/* AUTO  100   TOSS BOX*/
+       182, 
+       8, 19, 0, 48, 0, 7, 0, 47, 0, 23, 
+       62, 62, 73, 
+/* AUTO  0     */
+       207, 
+       0, 49, 0, 22, 0, 19, 
+       62, 45, 60, 76, 
+/* AUTO  25    ROPE BURN*/
+       146, 25, 
+       8, 11, 0, 11, 0, 12, 0, 27, 
+       60, 58, 55, 
+/* AUTO  100   HOLD BREATH*/
+       170, 
+       8, 13, 0, 1, 
+       81, 77, 73, 
+/* AUTO  0     ARGH*/
+       196, 
+       15, 5, 
+       39, 
+/* AUTO  0     BREATH*/
+       201, 
+       15, 0, 0, 13, 
+       38, 60, 
+/* AUTO  0     */
+       196, 
+       0, 1, 
+       81, 
+/* AUTO  100   DROWN*/
+       169, 
+       4, 17, 9, 13, 
+       40, 61, 
+/* AUTO  100   HAVE BOX*/
+       183, 
+       4, 23, 1, 48, 0, 1, 0, 48, 0, 1, 
+       87, 53, 87, 76, 
+/* AUTO  45    THROW CAN*/
+       151, 45, 
+       8, 14, 0, 14, 0, 68, 0, 50, 0, 50, 
+       60, 75, 113, 59, 
+/* AUTO  100   MISSED CAN*/
+       169, 
+       8, 14, 0, 14, 
+       60, 112, 
+/* AUTO  100   OPEN DOORS*/
+       178, 
+       8, 20, 14, 32, 0, 29, 0, 30, 
+       72, 57, 73, 
+/* AUTO  0     */
+       201, 
+       0, 31, 0, 32, 
+       72, 76, 
+/* AUTO  100   RATS LEAVE*/
+       174, 
+       2, 75, 8, 23, 0, 75, 
+       2, 121, 59, 
+/* AUTO  75    DIZZY SPELL*/
+       138, 75, 
+       8, 9, 0, 7, 
+       81, 77, 73, 
+/* AUTO  0     DIZZY DONE*/
+       200, 
+       15, 0, 0, 9, 
+       60, 
+/* AUTO  0     */
+       196, 
+       0, 7, 
+       81, 
+/* AUTO  100   LYCANTHROPE*/
+       166, 
+       8, 23, 
+       81, 73, 77, 
+/* AUTO  0     */
+       200, 
+       15, 0, 0, 23, 
+       60, 
+/* AUTO  0     */
+       192, 
+       81, 
+/* AUTO  0     */
+/* AUTO  100   DEAD*/
+       165, 
+       4, 32, 
+       65, 63, 
+};
+const uint8_t actions[] = {
+/* DIVE  ANY   */
+       0, 95, 0, 
+       128, 
+/* LOOK  ROOM  */
+       5, 36, 64, 
+       4, 10, 
+       2, 50, 
+/* LOOK  UP    */
+       5, 36, 5, 
+       4, 3, 
+       2, 110, 
+/* THROW BRICK */
+       5, 22, 48, 
+       8, 2, 
+       1, 17, 
+/* OPEN  CABIN */
+       15, 55, 99, 
+       9, 22, 0, 41, 0, 22, 
+       34, 5, 74, 58, 
+/* AT    CAN   TOO HIGH*/
+       19, 25, 60, 
+       8, 2, 0, 2, 0, 50, 9, 9, 
+       60, 114, 112, 53, 
+/* LOOK  BATTL */
+       13, 36, 83, 
+       4, 3, 14, 68, 14, 69, 
+       2, 111, 
+/* LOOK  BATTL */
+       13, 36, 83, 
+       4, 2, 14, 68, 14, 69, 
+       2, 111, 
+/* LOOK  CASTL */
+       5, 36, 21, 
+       4, 3, 
+       2, 110, 
+/* LOOK  UP    */
+       5, 36, 5, 
+       4, 2, 
+       2, 110, 
+/* LOOK  CASTL */
+       5, 36, 21, 
+       4, 2, 
+       2, 110, 
+/* GO    SHAFT */
+       5, 1, 59, 
+       2, 67, 
+       6, 22, 
+/* AT    DOOR  FIRE*/
+       13, 25, 58, 
+       8, 10, 2, 31, 0, 20, 
+       37, 58, 
+/* AT    DOOR  */
+       13, 25, 58, 
+       8, 10, 2, 29, 0, 20, 
+       37, 58, 
+/* SQUEE TOWEL */
+       13, 80, 75, 
+       3, 62, 0, 65, 0, 62, 
+       1, 72, 
+/* DRY   ANY   */
+       22, 34, 0, 
+       1, 51, 3, 66, 0, 66, 0, 62, 0, 51, 
+       1, 72, 59, 
+/* AT    CAN   STRONG*/
+       19, 25, 60, 
+       8, 2, 0, 2, 8, 9, 0, 14, 
+       60, 37, 73, 58, 
+/* AUTO  0     THROW*/
+       204, 
+       4, 3, 0, 50, 0, 2, 
+       62, 
+/* AUTO  0     */
+       204, 
+       4, 2, 0, 50, 0, 3, 
+       62, 
+/* AT    DRAGO */
+       11, 25, 52, 
+       8, 2, 2, 58, 
+       104, 106, 49, 61, 
+/* AT    DRAGO */
+       11, 25, 52, 
+       8, 10, 2, 58, 
+       104, 106, 49, 61, 
+/* GO    ROPE  */
+       14, 1, 12, 
+       2, 27, 0, 12, 0, 27, 
+       1, 58, 59, 
+/* CAST  FIRE  */
+       5, 50, 11, 
+       8, 10, 
+       1, 17, 
+/* LOOK  AROUN */
+       6, 36, 29, 
+       4, 21, 
+       1, 2, 117, 
+/* GO    DOOR  */
+       10, 1, 58, 
+       2, 54, 0, 25, 
+       1, 54, 76, 
+/* CAST  BLISS FLOAT*/
+       15, 50, 33, 
+       3, 41, 0, 41, 0, 4, 
+       37, 59, 73, 58, 
+/* AUTO  0     UNDERWATER*/
+       202, 
+       4, 17, 0, 1, 
+       54, 76, 42, 
+/* PULL  LEVER */
+       15, 32, 100, 
+       2, 74, 0, 74, 0, 42, 
+       73, 59, 74, 1, 
+/* AUTO  0     */
+       211, 
+       0, 55, 0, 56, 0, 3, 0, 4, 
+       72, 72, 45, 43, 
+/* LOOK  HOLE  */
+       6, 36, 35, 
+       4, 14, 
+       2, 123, 102, 
+/* CAST  LYCAN */
+       15, 50, 57, 
+       3, 73, 0, 73, 0, 23, 
+       73, 37, 59, 58, 
+/* AUTO  0     */
+       202, 
+       0, 0, 0, 5, 
+       81, 79, 81, 
+/* AT    RAT   FIRE*/
+       10, 25, 103, 
+       8, 10, 2, 75, 
+       37, 15, 61, 
+/* LOOK  ROPE  .*/
+       10, 36, 12, 
+       2, 25, 8, 11, 
+       1, 2, 47, 
+/* CAST  YOHO  2ND TIME*/
+       15, 50, 74, 
+       1, 45, 8, 6, 0, 45, 
+       37, 80, 76, 59, 
+/* CAST  METHU AGE*/
+       14, 50, 40, 
+       1, 33, 0, 7, 0, 33, 
+       37, 58, 59, 
+/* QUIT  ANY   */
+       0, 71, 0, 
+       63, 
+/* SCORE ANY   */
+       0, 67, 0, 
+       65, 
+/* INVEN ANY   */
+       0, 72, 0, 
+       66, 
+/* GET   INVEN */
+       0, 10, 41, 
+       66, 
+/* LOOK  BOTTO */
+       15, 36, 43, 
+       2, 39, 14, 12, 0, 12, 
+       1, 74, 34, 5, 
+/* LOOK  CAN   .*/
+       6, 36, 60, 
+       3, 68, 
+       1, 2, 124, 
+/* CAST  UNRAV */
+       19, 50, 77, 
+       3, 64, 2, 25, 0, 11, 0, 64, 
+       1, 37, 58, 59, 
+/* CAST  UNRAV FAILED*/
+       10, 50, 77, 
+       3, 64, 0, 64, 
+       6, 59, 32, 
+/* GET   ROPE  */
+       14, 10, 12, 
+       2, 27, 0, 12, 0, 27, 
+       1, 58, 59, 
+/* GO    FOUNT */
+       15, 1, 8, 
+       2, 18, 0, 4, 0, 8, 
+       1, 54, 76, 58, 
+/* GO    COURT */
+       15, 1, 7, 
+       2, 19, 0, 3, 0, 8, 
+       1, 54, 76, 60, 
+/* LOOK  MIRRO */
+       11, 36, 10, 
+       3, 20, 0, 4, 
+       81, 7, 78, 73, 
+/* AUTO  0     */
+       197, 
+       0, 4, 
+       81, 8, 
+/* AUTO  0     */
+       196, 
+       8, 3, 
+       11, 
+/* AUTO  0     */
+       196, 
+       9, 9, 
+       9, 
+/* AUTO  0     */
+       196, 
+       8, 4, 
+       10, 
+/* AUTO  0     */
+       196, 
+       8, 9, 
+       115, 
+/* AUTO  0     FERRET*/
+       196, 
+       8, 23, 
+       120, 
+/* AUTO  0     */
+       192, 
+       12, 
+/* GO    LAVA  BURNT*/
+       14, 1, 36, 
+       2, 21, 9, 4, 0, 5, 
+       1, 15, 61, 
+/* DAMN  LAVA  */
+       5, 46, 36, 
+       2, 21, 
+       1, 14, 
+/* LOOK  DOOR  */
+       5, 36, 58, 
+       2, 53, 
+       2, 29, 
+/* GO    LAVA  */
+       14, 1, 36, 
+       2, 21, 8, 4, 0, 5, 
+       1, 54, 76, 
+/* LOOK  FOUNT */
+       2, 36, 8, 
+       1, 2, 16, 
+/* GO    CENTE */
+       10, 1, 9, 
+       4, 4, 0, 6, 
+       1, 54, 76, 
+/* CAST  FIRE  */
+       15, 50, 11, 
+       3, 24, 0, 10, 0, 24, 
+       1, 17, 58, 59, 
+/* AT    ROPE  */
+       19, 25, 12, 
+       2, 25, 8, 10, 0, 11, 0, 10, 
+       1, 18, 58, 60, 
+/* AT    STAIR */
+       14, 25, 50, 
+       8, 10, 4, 14, 4, 14, 
+       37, 15, 61, 
+/* CAST  SEED  */
+       23, 50, 26, 
+       1, 34, 0, 34, 2, 53, 0, 53, 0, 54, 
+       1, 59, 37, 72, 
+/* CAST  SEED  */
+       19, 50, 26, 
+       1, 34, 2, 31, 0, 20, 0, 34, 
+       31, 37, 58, 59, 
+/* LOOK  KITCH */
+       6, 36, 54, 
+       4, 21, 
+       1, 2, 117, 
+/* SWIM  DOWN  DRAIN*/
+       23, 70, 6, 
+       4, 20, 0, 6, 0, 2, 0, 6, 0, 17, 
+       81, 79, 81, 54, 
+/* CAST  SEED  */
+       19, 50, 26, 
+       1, 34, 2, 29, 0, 20, 0, 34, 
+       31, 37, 58, 59, 
+/* THROW BRICK */
+       15, 22, 48, 
+       3, 50, 0, 50, 0, 2, 
+       1, 59, 58, 17, 
+/* GO    DOOR  */
+       10, 1, 58, 
+       2, 30, 0, 13, 
+       1, 54, 76, 
+/* GO    DOOR  */
+       10, 1, 58, 
+       2, 32, 0, 12, 
+       1, 54, 76, 
+/* CAST  DIZZY */
+       15, 50, 55, 
+       3, 70, 0, 70, 0, 9, 
+       37, 59, 58, 125, 
+/* LOOK  ASHES */
+       14, 36, 76, 
+       3, 63, 14, 7, 0, 7, 
+       74, 34, 5, 
+/* PULL  WEST  */
+       11, 32, 4, 
+       4, 10, 0, 31, 
+       26, 28, 54, 76, 
+/* GO    CHAND */
+       10, 1, 13, 
+       2, 26, 0, 8, 
+       1, 54, 76, 
+/* LOOK  CEILI */
+       6, 36, 14, 
+       4, 7, 
+       1, 2, 21, 
+/* LOOK  UP    */
+       6, 36, 5, 
+       4, 7, 
+       1, 2, 21, 
+/* CHOP  TREE  */
+       4, 52, 18, 
+       4, 9, 
+       23, 
+/* GO    TREE  */
+       4, 1, 18, 
+       4, 9, 
+       23, 
+/* PUSH  WALL  */
+       4, 28, 65, 
+       4, 10, 
+       24, 
+/* PUSH  WALL  */
+       2, 28, 65, 
+       1, 3, 25, 
+/* PUSH  EAST  */
+       11, 28, 3, 
+       4, 10, 0, 24, 
+       26, 28, 54, 76, 
+/* PUSH  SOUTH */
+       11, 28, 2, 
+       4, 10, 0, 11, 
+       26, 28, 54, 76, 
+/* PUSH  WEST  */
+       6, 28, 4, 
+       4, 10, 
+       6, 3, 25, 
+/* LOOK  WALL  */
+       6, 36, 65, 
+       4, 10, 
+       1, 2, 51, 
+/* GO    DRAIN */
+       10, 1, 42, 
+       2, 46, 0, 20, 
+       1, 54, 76, 
+/* SWIM  WEST  */
+       7, 70, 4, 
+       4, 17, 
+       6, 36, 26, 27, 
+/* SWIM  EAST  BY DRAIN*/
+       9, 70, 3, 
+       4, 17, 0, 6, 
+       81, 73, 
+/* AUTO  0     */
+       202, 
+       19, 2, 0, 20, 
+       1, 54, 76, 
+/* AUTO  0     */
+       199, 
+       4, 17, 
+       6, 36, 26, 27, 
+/* AUTO  0     */
+       196, 
+       0, 6, 
+       81, 
+/* PUSH  DOWN  */
+       11, 28, 6, 
+       4, 10, 0, 29, 
+       30, 54, 76, 88, 
+/* AUTO  0     DRAGONS LAIR*/
+       195, 
+       88, 88, 88, 88, 
+/* GO    DRAWB */
+       10, 1, 38, 
+       2, 56, 0, 2, 
+       1, 54, 76, 
+/* HYPER ANY   */
+       1, 62, 0, 
+       6, 41, 
+/* BREAT DEEP  */
+       1, 61, 31, 
+       6, 41, 
+/* GO    SHAFT */
+       15, 1, 59, 
+       2, 22, 0, 12, 0, 8, 
+       1, 54, 76, 60, 
+/* CAST  SEED  */
+       23, 50, 26, 
+       2, 3, 1, 34, 0, 34, 0, 3, 0, 4, 
+       31, 73, 59, 72, 
+/* AUTO  0     */
+       201, 
+       0, 55, 0, 56, 
+       72, 37, 
+/* GO    DRAWB */
+       10, 1, 38, 
+       2, 4, 0, 2, 
+       1, 54, 76, 
+/* LOOK  DOOR  */
+       6, 36, 58, 
+       2, 29, 
+       1, 2, 29, 
+/* LOOK  DOOR  */
+       6, 36, 58, 
+       2, 31, 
+       1, 2, 29, 
+/* OPEN  DOOR  */
+       2, 55, 58, 
+       6, 36, 35, 
+/* DRINK POTIO */
+       14, 58, 28, 
+       3, 35, 0, 35, 0, 3, 
+       1, 59, 58, 
+/* DIG   ANY   */
+       15, 42, 0, 
+       4, 1, 14, 14, 0, 14, 
+       1, 74, 34, 5, 
+/* SAVE  GAME  */
+       1, 27, 39, 
+       1, 71, 
+/* CAST  LIGHT */
+       10, 50, 61, 
+       3, 36, 0, 36, 
+       59, 73, 1, 
+/* AUTO  0     */
+       206, 
+       2, 37, 0, 37, 0, 38, 
+       72, 37, 108, 
+/* AUTO  0     */
+       200, 
+       14, 38, 5, 26, 
+       32, 
+/* AUTO  0     */
+       199, 
+       2, 26, 
+       108, 19, 20, 61, 
+/* GO    LOFT  */
+       19, 1, 16, 
+       2, 38, 0, 15, 0, 37, 0, 38, 
+       54, 76, 72, 19, 
+/* GO    BALLR */
+       10, 1, 63, 
+       2, 37, 0, 7, 
+       1, 54, 76, 
+/* GO    MOAT  */
+       10, 1, 22, 
+       2, 1, 0, 16, 
+       1, 54, 76, 
+/* GET   BREAT */
+       23, 10, 30, 
+       9, 13, 0, 13, 0, 1, 0, 8, 0, 1, 
+       58, 81, 79, 81, 
+/* BREAT ANY   */
+       10, 61, 0, 
+       0, 13, 8, 13, 
+       1, 60, 38, 
+/* SWIM  DOWN  FROM SURFACE*/
+       23, 70, 6, 
+       4, 16, 9, 4, 0, 17, 0, 6, 0, 1, 
+       54, 81, 79, 73, 
+/* AUTO  0     */
+       203, 
+       0, 6, 0, 39, 
+       81, 59, 1, 76, 
+/* SWIM  DOWN  */
+       19, 70, 6, 
+       4, 17, 14, 39, 0, 6, 0, 1, 
+       1, 81, 82, 73, 
+/* AUTO  0     AT BOTTOM*/
+       201, 
+       16, 4, 0, 39, 
+       53, 76, 
+/* AUTO  0     */
+       196, 
+       0, 6, 
+       81, 
+/* CAST  FIREF GLOWING*/
+       15, 50, 51, 
+       1, 57, 0, 57, 0, 9, 
+       59, 48, 74, 76, 
+/* SWIM  UP    FROM BOTTOM*/
+       23, 70, 5, 
+       4, 17, 2, 39, 0, 39, 0, 6, 0, 6, 
+       59, 81, 77, 81, 
+/* SWIM  UP    */
+       11, 70, 5, 
+       4, 17, 0, 6, 
+       1, 81, 77, 73, 
+/* AUTO  0     AT TOP*/
+       201, 
+       15, 0, 0, 16, 
+       54, 76, 
+/* AUTO  0     */
+       196, 
+       0, 6, 
+       81, 
+/* CAST  PERME */
+       5, 50, 32, 
+       3, 40, 
+       1, 73, 
+/* AUTO  0     */
+       207, 
+       4, 13, 0, 12, 0, 40, 
+       37, 54, 76, 59, 
+/* AUTO  0     */
+       211, 
+       13, 40, 4, 12, 0, 13, 0, 40, 
+       37, 54, 76, 59, 
+/* AUTO  0     */
+       207, 
+       4, 14, 0, 18, 0, 40, 
+       37, 54, 76, 59, 
+/* AUTO  0     */
+       211, 
+       13, 40, 4, 18, 0, 14, 0, 40, 
+       37, 54, 76, 59, 
+/* AUTO  0     IN BOX*/
+       207, 
+       4, 23, 0, 22, 0, 40, 
+       37, 54, 76, 59, 
+/* AUTO  0     HAVE BOX*/
+       215, 
+       13, 40, 3, 48, 0, 1, 0, 23, 0, 40, 
+       87, 54, 37, 59, 
+/* AUTO  0     ON BOX*/
+       211, 
+       13, 40, 4, 22, 0, 23, 0, 40, 
+       37, 54, 76, 59, 
+/* AUTO  0     */
+       207, 
+       4, 9, 0, 19, 0, 40, 
+       37, 54, 76, 59, 
+/* AUTO  0     SPELL FAILED*/
+       202, 
+       13, 40, 0, 40, 
+       6, 59, 32, 
+/* JUMP  ANY   */
+       11, 60, 0, 
+       4, 15, 9, 4, 
+       1, 30, 33, 61, 
+/* JUMP  ANY   */
+       15, 60, 0, 
+       4, 15, 8, 4, 0, 7, 
+       30, 37, 54, 76, 
+/* LOOK  DRAGO */
+       15, 36, 52, 
+       2, 58, 14, 17, 0, 17, 
+       74, 1, 34, 5, 
+/* SWIM  ANY   */
+       6, 70, 0, 
+       4, 17, 
+       6, 36, 35, 
+/* GO    CRATE */
+       19, 1, 46, 
+       2, 48, 0, 1, 0, 22, 7, 17, 
+       1, 87, 54, 76, 
+/* GET   OFF   CRATE*/
+       10, 10, 45, 
+       4, 22, 0, 1, 
+       1, 87, 76, 
+/* GET   DOWN  */
+       10, 10, 6, 
+       4, 22, 0, 1, 
+       1, 87, 76, 
+/* GO    HOLE  */
+       10, 1, 35, 
+       2, 47, 0, 22, 
+       1, 54, 76, 
+/* GO    HOLE  */
+       10, 1, 35, 
+       2, 49, 0, 23, 
+       1, 54, 76, 
+/* THROW CRATE */
+       13, 22, 46, 
+       3, 48, 4, 15, 0, 19, 
+       1, 58, 
+/* THROW CRATE */
+       13, 22, 46, 
+       3, 48, 2, 38, 0, 19, 
+       1, 58, 
+/* GET   DUST  */
+       9, 10, 68, 
+       3, 59, 0, 59, 
+       1, 74, 
+/* GET   DUST  */
+       9, 10, 68, 
+       4, 24, 0, 59, 
+       1, 74, 
+/* LOOK  DRAGO */
+       11, 36, 52, 
+       2, 58, 14, 60, 
+       2, 104, 27, 102, 
+/* THROW DUST  */
+       10, 22, 68, 
+       3, 59, 0, 59, 
+       1, 59, 73, 
+/* AUTO  0     AT DRAGON*/
+       203, 
+       2, 58, 0, 60, 
+       103, 104, 28, 53, 
+/* GO    HOLE  */
+       10, 1, 35, 
+       2, 60, 0, 30, 
+       1, 54, 76, 
+/* KNOCK ANY   */
+       5, 40, 0, 
+       4, 10, 
+       1, 105, 
+/* SAY   ANY   */
+       7, 7, 0, 
+       2, 58, 
+       104, 106, 49, 61, 
+/* CAST  WICKE CAST*/
+       10, 50, 70, 
+       3, 61, 0, 61, 
+       1, 59, 73, 
+/* AUTO  0     */
+       205, 
+       3, 28, 0, 28, 0, 20, 
+       72, 37, 
+/* AUTO  0     */
+       197, 
+       14, 20, 
+       6, 32, 
+/* LOOK  CAN   */
+       15, 36, 60, 
+       3, 69, 14, 13, 0, 13, 
+       1, 34, 5, 74, 
+/* USE   METAL */
+       22, 43, 90, 
+       8, 21, 3, 71, 3, 68, 0, 68, 0, 69, 
+       1, 72, 73, 
+/* AUTO  0     */
+       196, 
+       0, 21, 
+       60, 
+/* OPEN  CAN   */
+       5, 55, 60, 
+       0, 21, 
+       46, 58, 
+/* LOOK  METAL */
+       6, 36, 90, 
+       3, 71, 
+       1, 2, 116, 
+/* OPEN  ANY   */
+       0, 55, 0, 
+       46, 
+/* BREAT ANY   */
+       0, 61, 0, 
+       119, 
+/* CAST  SPELL */
+       0, 50, 94, 
+       118, 
+/* RAISE ANY   */
+       0, 74, 0, 
+       46, 
+/* JUMP  ANY   CRATE*/
+       10, 60, 0, 
+       4, 22, 0, 1, 
+       1, 87, 76, 
+/* DIG   ANY   DIG*/
+       3, 42, 0, 
+       1, 2, 3, 4, 
+/* SWIM  ANY   DRAGGED DOWN*/
+       11, 70, 0, 
+       4, 16, 9, 4, 
+       35, 42, 107, 61, 
+/* JUMP  ANY   */
+       2, 60, 0, 
+       3, 4, 25, 
+/* CAST  SEED  */
+       17, 50, 26, 
+       1, 34, 2, 55, 0, 55, 0, 56, 
+       73, 72, 
+/* AUTO  0     */
+       206, 
+       0, 3, 0, 4, 0, 34, 
+       37, 72, 59, 
+/* CAST  SEED  */
+       9, 50, 26, 
+       1, 34, 0, 34, 
+       59, 32, 
+/* SAY   ANY   */
+       10, 7, 0, 
+       0, 13, 4, 17, 
+       1, 129, 60, 
+/* DRY   ANY   .*/
+       0, 34, 0, 
+       46, 
+/* AT    WOOD  LIGHT FIRE*/
+       14, 25, 34, 
+       8, 10, 3, 42, 0, 10, 
+       60, 73, 37, 
+/* AUTO  0     */
+       197, 
+       1, 42, 
+       15, 61, 
+/* AUTO  0     */
+       207, 
+       8, 15, 2, 42, 0, 42, 
+       59, 18, 57, 76, 
+/* AUTO  0     */
+       199, 
+       14, 42, 
+       88, 88, 88, 88, 
+/* AUTO  0     */
+       199, 
+       14, 42, 
+       88, 56, 70, 76, 
+/* AUTO  0     */
+       196, 
+       0, 42, 
+       59, 
+/* SWIM  ANY   */
+       4, 70, 0, 
+       4, 16, 
+       118, 
+/* SWIM  ANY   */
+       4, 70, 0, 
+       4, 20, 
+       118, 
+/* FEEL  ANY   */
+       3, 83, 0, 
+       1, 3, 4, 25, 
+/* AT    TREE  */
+       19, 25, 18, 
+       8, 10, 0, 10, 4, 9, 0, 63, 
+       1, 60, 53, 37, 
+/* AT    ANY   */
+       11, 25, 0, 
+       8, 10, 0, 10, 
+       60, 1, 42, 32, 
+/* THROW ANY   */
+       1, 22, 0, 
+       6, 109, 
+/* PUSH  ANY   */
+       2, 28, 0, 
+       3, 4, 25, 
+/* PULL  ANY   */
+       2, 32, 0, 
+       3, 4, 25, 
+/* SQUEE ANY   */
+       3, 80, 0, 
+       1, 3, 4, 25, 
+/* GET   SPELL */
+       0, 10, 94, 
+       118, 
+/* SAY   ANY   */
+       6, 7, 0, 
+       0, 13, 
+       1, 85, 60, 
+/* CAST  YOHO  1ST TIME*/
+       14, 50, 74, 
+       1, 45, 9, 6, 0, 6, 
+       37, 58, 73, 
+/* AUTO  0     ON BOX*/
+       200, 
+       4, 22, 0, 45, 
+       59, 
+/* AUTO  0     IN BOX*/
+       200, 
+       4, 23, 0, 45, 
+       59, 
+/* AUTO  0     MOVE HIM*/
+       193, 
+       80, 76, 
+/* WAKEN MONST */
+       11, 91, 106, 
+       3, 43, 0, 1, 
+       1, 127, 54, 76, 
+/* HELP  ANY   */
+       9, 90, 0, 
+       3, 3, 3, 34, 
+       66, 126, 
+/* HELP  ANY   */
+       2, 90, 0, 
+       6, 36, 12, 
+/* USE   ANY   */
+       2, 43, 0, 
+       6, 3, 25, 
+/* LOOK  ANY   */
+       3, 36, 0, 
+       2, 3, 4, 76, 
+/* GO    MOAT  */
+       10, 1, 22, 
+       4, 2, 0, 16, 
+       1, 54, 76, 
+/* GO    BATTL */
+       255, 1, 83, 
+       4, 0, 
+/* AT    ANY   BRICKS*/
+       15, 25, 0, 
+       8, 2, 0, 2, 0, 50, 
+       60, 53, 3, 25, 
+/* WALK  UP    */
+       10, 6, 5, 
+       4, 14, 0, 11, 
+       1, 54, 76, 
+/* WALK  DOWN  */
+       9, 6, 6, 
+       4, 14, 3, 75, 
+       6, 122, 
+/* WALK  DOWN  */
+       14, 6, 6, 
+       4, 14, 5, 75, 0, 13, 
+       1, 54, 76, 
+/* GO    HOLE  */
+       14, 1, 35, 
+       4, 14, 8, 23, 0, 18, 
+       1, 54, 76, 
+/* GO    HOLE  */
+       14, 1, 35, 
+       4, 18, 8, 23, 0, 14, 
+       1, 54, 76, 
+/* GO    STAIR */
+       0, 1, 50, 
+       118, 
+/* LIGHT ANY   */
+       0, 96, 0, 
+       46, 
+/* AUTO  0     */
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79, 32,
+       /* GO */
+       71, 79, 32, 32, 32,
+       /* *CROSS */
+       195, 82, 79, 83, 83,
+       /* *RUN */
+       210, 85, 78, 32, 32,
+       /* *ENTER */
+       197, 78, 84, 69, 82,
+       /* *CLIMB */
+       195, 76, 73, 77, 66,
+       /* WALK */
+       87, 65, 76, 75, 32,
+       /* SAY */
+       83, 65, 89, 32, 32,
+       /* *YELL */
+       217, 69, 76, 76, 32,
+       /* *SCREA */
+       211, 67, 82, 69, 65,
+       /* GET */
+       71, 69, 84, 32, 32,
+       /* *TAKE */
+       212, 65, 75, 69, 32,
+       /* *PICK */
+       208, 73, 67, 75, 32,
+       /* *CARRY */
+       195, 65, 82, 82, 89,
+       /* *HOLD */
+       200, 79, 76, 68, 32,
+       /* *UNTIE */
+       213, 78, 84, 73, 69,
+       /* *REMOV */
+       210, 69, 77, 79, 86,
+       /* *PICKU */
+       208, 73, 67, 75, 85,
+       /* DROP */
+       68, 82, 79, 80, 32,
+       /* *LEAVE */
+       204, 69, 65, 86, 69,
+       /* *PUT */
+       208, 85, 84, 32, 32,
+       /* *RELEA */
+       210, 69, 76, 69, 65,
+       /* THROW */
+       84, 72, 82, 79, 87,
+       /* *TOSS */
+       212, 79, 83, 83, 32,
+       /* *BLOW */
+       194, 76, 79, 87, 32,
+       /* AT */
+       65, 84, 32, 32, 32,
+       /* *TOWAR */
+       212, 79, 87, 65, 82,
+       /* SAVE */
+       83, 65, 86, 69, 32,
+       /* PUSH */
+       80, 85, 83, 72, 32,
+       /* *PRESS */
+       208, 82, 69, 83, 83,
+       /* *HIT */
+       200, 73, 84, 32, 32,
+       /* *KICK */
+       203, 73, 67, 75, 32,
+       /* PULL */
+       80, 85, 76, 76, 32,
+       /* *TUG */
+       212, 85, 71, 32, 32,
+       /* DRY */
+       68, 82, 89, 32, 32,
+       /* . */
+       46, 32, 32, 32, 32,
+       /* LOOK */
+       76, 79, 79, 75, 32,
+       /* *L */
+       204, 32, 32, 32, 32,
+       /* *DESCR */
+       196, 69, 83, 67, 82,
+       /* *EXAMI */
+       197, 88, 65, 77, 73,
+       /* KNOCK */
+       75, 78, 79, 67, 75,
+       /* *TAP */
+       212, 65, 80, 32, 32,
+       /* DIG */
+       68, 73, 71, 32, 32,
+       /* USE */
+       85, 83, 69, 32, 32,
+       /* *WITH */
+       215, 73, 84, 72, 32,
+       /* *USING */
+       213, 83, 73, 78, 71,
+       /* DAMN */
+       68, 65, 77, 78, 32,
+       /* *DAM */
+       196, 65, 77, 32, 32,
+       /* *CURSE */
+       195, 85, 82, 83, 69,
+       /* . */
+       46, 32, 32, 32, 32,
+       /* CAST */
+       67, 65, 83, 84, 32,
+       /* *INVOK */
+       201, 78, 86, 79, 75,
+       /* CHOP */
+       67, 72, 79, 80, 32,
+       /* *CUT */
+       195, 85, 84, 32, 32,
+       /* *SLICE */
+       211, 76, 73, 67, 69,
+       /* OPEN */
+       79, 80, 69, 78, 32,
+       /* *UNLOC */
+       213, 78, 76, 79, 67,
+       /* *CLOSE */
+       195, 76, 79, 83, 69,
+       /* DRINK */
+       68, 82, 73, 78, 75,
+       /* *TASTE */
+       212, 65, 83, 84, 69,
+       /* JUMP */
+       74, 85, 77, 80, 32,
+       /* BREAT */
+       66, 82, 69, 65, 84,
+       /* HYPER */
+       72, 89, 80, 69, 82,
+       /* FASTE */
+       70, 65, 83, 84, 69,
+       /* *REPLA */
+       210, 69, 80, 76, 65,
+       /* *TIGHT */
+       212, 73, 71, 72, 84,
+       /* *SECU */
+       211, 69, 67, 85, 32,
+       /* SCORE */
+       83, 67, 79, 82, 69,
+       /* . */
+       46, 32, 32, 32, 32,
+       /* . */
+       46, 32, 32, 32, 32,
+       /* SWIM */
+       83, 87, 73, 77, 32,
+       /* QUIT */
+       81, 85, 73, 84, 32,
+       /* INVEN */
+       73, 78, 86, 69, 78,
+       /* *INVE */
+       201, 78, 86, 69, 32,
+       /* RAISE */
+       82, 65, 73, 83, 69,
+       /* *LIFT */
+       204, 73, 70, 84, 32,
+       /* *BREAK */
+       194, 82, 69, 65, 75,
+       /* *SMASH */
+       211, 77, 65, 83, 72,
+       /* *UNRAV */
+       213, 78, 82, 65, 86,
+       /* *MOVE */
+       205, 79, 86, 69, 32,
+       /* SQUEE */
+       83, 81, 85, 69, 69,
+       /* *WRING */
+       215, 82, 73, 78, 71,
+       /* *SQUEZ */
+       211, 81, 85, 69, 90,
+       /* FEEL */
+       70, 69, 69, 76, 32,
+       /* *TOUCH */
+       212, 79, 85, 67, 72,
+       /* *DANCE */
+       196, 65, 78, 67, 69,
+       /* *WAVE */
+       215, 65, 86, 69, 32,
+       /* *LISTE */
+       204, 73, 83, 84, 69,
+       /* *SING */
+       211, 73, 78, 71, 32,
+       /* *WASH */
+       215, 65, 83, 72, 32,
+       /* HELP */
+       72, 69, 76, 80, 32,
+       /* WAKEN */
+       87, 65, 75, 69, 78,
+       /* *AWAKE */
+       193, 87, 65, 75, 69,
+       /* *WAKE */
+       215, 65, 75, 69, 32,
+       /*  */
+       32, 32, 32, 32, 32,
+       /* DIVE */
+       68, 73, 86, 69, 32,
+       /* LIGHT */
+       76, 73, 71, 72, 84,
+       /* *BURN */
+       194, 85, 82, 78, 32,
+       /* *IGNIT */
+       201, 71, 78, 73, 84,
+       /* *BUILD */
+       194, 85, 73, 76, 68,
+       /* *MAKE */
+       205, 65, 75, 69, 32,
+       /* *COOK */
+       195, 79, 79, 75, 32,
+       /* *WASH */
+       215, 65, 83, 72, 32,
+       /* *LOWER */
+       204, 79, 87, 69, 82,
+       /* *KILL */
+       203, 73, 76, 76, 32,
+       /* *SLAY */
+       211, 76, 65, 89, 32,
+       /* *CLEAN */
+       195, 76, 69, 65, 78,
+       /*  */
+       32, 32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32, 32,
+       /* NORTH */
+       78, 79, 82, 84, 72,
+       /* SOUTH */
+       83, 79, 85, 84, 72,
+       /* EAST */
+       69, 65, 83, 84, 32,
+       /* WEST */
+       87, 69, 83, 84, 32,
+       /* UP */
+       85, 80, 32, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78, 32,
+       /* COURT */
+       67, 79, 85, 82, 84,
+       /* FOUNT */
+       70, 79, 85, 78, 84,
+       /* CENTE */
+       67, 69, 78, 84, 69,
+       /* MIRRO */
+       77, 73, 82, 82, 79,
+       /* FIRE */
+       70, 73, 82, 69, 32,
+       /* ROPE */
+       82, 79, 80, 69, 32,
+       /* CHAND */
+       67, 72, 65, 78, 68,
+       /* CEILI */
+       67, 69, 73, 76, 73,
+       /* *ROOF */
+       210, 79, 79, 70, 32,
+       /* LOFT */
+       76, 79, 70, 84, 32,
+       /* FORES */
+       70, 79, 82, 69, 83,
+       /* TREE */
+       84, 82, 69, 69, 32,
+       /* *TREES */
+       212, 82, 69, 69, 83,
+       /* GLASS */
+       71, 76, 65, 83, 83,
+       /* CASTL */
+       67, 65, 83, 84, 76,
+       /* MOAT */
+       77, 79, 65, 84, 32,
+       /* *WATER */
+       215, 65, 84, 69, 82,
+       /* *DROPL */
+       196, 82, 79, 80, 76,
+       /* *POOL */
+       208, 79, 79, 76, 32,
+       /* SEED */
+       83, 69, 69, 68, 32,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       /* POTIO */
+       80, 79, 84, 73, 79,
+       /* AROUN */
+       65, 82, 79, 85, 78,
+       /* BREAT */
+       66, 82, 69, 65, 84,
+       /* DEEP */
+       68, 69, 69, 80, 32,
+       /* PERME */
+       80, 69, 82, 77, 69,
+       /* BLISS */
+       66, 76, 73, 83, 83,
+       /* WOOD */
+       87, 79, 79, 68, 32,
+       /* HOLE */
+       72, 79, 76, 69, 32,
+       /* LAVA */
+       76, 65, 86, 65, 32,
+       /* *STREA */
+       211, 84, 82, 69, 65,
+       /* DRAWB */
+       68, 82, 65, 87, 66,
+       /* GAME */
+       71, 65, 77, 69, 32,
+       /* METHU */
+       77, 69, 84, 72, 85,
+       /* INVEN */
+       73, 78, 86, 69, 78,
+       /* DRAIN */
+       68, 82, 65, 73, 78,
+       /* BOTTO */
+       66, 79, 84, 84, 79,
+       /* HOLE */
+       72, 79, 76, 69, 32,
+       /* OFF */
+       79, 70, 70, 32, 32,
+       /* CRATE */
+       67, 82, 65, 84, 69,
+       /* *BOX */
+       194, 79, 88, 32, 32,
+       /* BRICK */
+       66, 82, 73, 67, 75,
+       /* WRINK */
+       87, 82, 73, 78, 75,
+       /* STAIR */
+       83, 84, 65, 73, 82,
+       /* FIREF */
+       70, 73, 82, 69, 70,
+       /* DRAGO */
+       68, 82, 65, 71, 79,
+       /* LAIR */
+       76, 65, 73, 82, 32,
+       /* KITCH */
+       75, 73, 84, 67, 72,
+       /* DIZZY */
+       68, 73, 90, 90, 89,
+       /* *DEAN */
+       196, 69, 65, 78, 32,
+       /* LYCAN */
+       76, 89, 67, 65, 78,
+       /* DOOR */
+       68, 79, 79, 82, 32,
+       /* SHAFT */
+       83, 72, 65, 70, 84,
+       /* CAN */
+       67, 65, 78, 32, 32,
+       /* LIGHT */
+       76, 73, 71, 72, 84,
+       /* *SQUAR */
+       211, 81, 85, 65, 82,
+       /* BALLR */
+       66, 65, 76, 76, 82,
+       /* ROOM */
+       82, 79, 79, 77, 32,
+       /* WALL */
+       87, 65, 76, 76, 32,
+       /* *WALLS */
+       215, 65, 76, 76, 83,
+       /* *FLOOR */
+       198, 76, 79, 79, 82,
+       /* DUST */
+       68, 85, 83, 84, 32,
+       /* WORKS */
+       87, 79, 82, 75, 83,
+       /* WICKE */
+       87, 73, 67, 75, 69,
+       /* *QUEEN */
+       209, 85, 69, 69, 78,
+       /* AWAY */
+       65, 87, 65, 89, 32,
+       /* CRACK */
+       67, 82, 65, 67, 75,
+       /* YOHO */
+       89, 79, 72, 79, 32,
+       /* TOWEL */
+       84, 79, 87, 69, 76,
+       /* ASHES */
+       65, 83, 72, 69, 83,
+       /* UNRAV */
+       85, 78, 82, 65, 86,
+       /* SELF */
+       83, 69, 76, 70, 32,
+       /* *ME */
+       205, 69, 32, 32, 32,
+       /* *MYSEL */
+       205, 89, 83, 69, 76,
+       /* *YOU */
+       217, 79, 85, 32, 32,
+       /* SESAM */
+       83, 69, 83, 65, 77,
+       /* BATTL */
+       66, 65, 84, 84, 76,
+       /* ICON */
+       73, 67, 79, 78, 32,
+       /* NICHE */
+       78, 73, 67, 72, 69,
+       /* LOCK */
+       76, 79, 67, 75, 32,
+       /* CELL */
+       67, 69, 76, 76, 32,
+       /* *DUNGE */
+       196, 85, 78, 71, 69,
+       /* OUTLE */
+       79, 85, 84, 76, 69,
+       /* METAL */
+       77, 69, 84, 65, 76,
+       /* *CANOP */
+       195, 65, 78, 79, 80,
+       /* *OPENE */
+       207, 80, 69, 78, 69,
+       /* COUNT */
+       67, 79, 85, 78, 84,
+       /* SPELL */
+       83, 80, 69, 76, 76,
+       /* STOVE */
+       83, 84, 79, 86, 69,
+       /* *RANGE */
+       210, 65, 78, 71, 69,
+       /* *OVEN */
+       207, 86, 69, 78, 32,
+       /* GROTT */
+       71, 82, 79, 84, 84,
+       /* CABIN */
+       67, 65, 66, 73, 78,
+       /* LEVER */
+       76, 69, 86, 69, 82,
+       /* HANDS */
+       72, 65, 78, 68, 83,
+       /* *PAW */
+       208, 65, 87, 32, 32,
+       /* RAT */
+       82, 65, 84, 32, 32,
+       /* *RATS */
+       210, 65, 84, 83, 32,
+       /* SINK */
+       83, 73, 78, 75, 32,
+       /* MONST */
+       77, 79, 78, 83, 84,
+       /* EDGE */
+       69, 68, 71, 69, 32,
+       /* *EDGES */
+       197, 68, 71, 69, 83,
+       /*  */
+       32, 32, 32, 32, 32,
+       0,
+};
+const uint8_t automap[] = {
+       /* STAR */
+       83, 84, 65, 82, 32,
+       0,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       5,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       6,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       7,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       8,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       10,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       11,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       12,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       13,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       14,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       15,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       16,
+       /* STAR */
+       83, 84, 65, 82, 32,
+       17,
+       /* MIRRO */
+       77, 73, 82, 82, 79,
+       20,
+       /* FIRE */
+       70, 73, 82, 69, 32,
+       24,
+       /* GLASS */
+       71, 76, 65, 83, 83,
+       28,
+       /* METHU */
+       77, 69, 84, 72, 85,
+       33,
+       /* SEED */
+       83, 69, 69, 68, 32,
+       34,
+       /* POTIO */
+       80, 79, 84, 73, 79,
+       35,
+       /* LIGHT */
+       76, 73, 71, 72, 84,
+       36,
+       /* PERME */
+       80, 69, 82, 77, 69,
+       40,
+       /* BLISS */
+       66, 76, 73, 83, 83,
+       41,
+       /* WOOD */
+       87, 79, 79, 68, 32,
+       42,
+       /* YOHO */
+       89, 79, 72, 79, 32,
+       45,
+       /* CRATE */
+       67, 82, 65, 84, 69,
+       48,
+       /* BRICK */
+       66, 82, 73, 67, 75,
+       50,
+       /* FIREF */
+       70, 73, 82, 69, 70,
+       57,
+       /* DUST */
+       68, 85, 83, 84, 32,
+       59,
+       /* WICKE */
+       87, 73, 67, 75, 69,
+       61,
+       /* TOWEL */
+       84, 79, 87, 69, 76,
+       62,
+       /* ASHES */
+       65, 83, 72, 69, 83,
+       63,
+       /* UNRAV */
+       85, 78, 82, 65, 86,
+       64,
+       /* TOWEL */
+       84, 79, 87, 69, 76,
+       65,
+       /* TOWEL */
+       84, 79, 87, 69, 76,
+       66,
+       /* CAN */
+       67, 65, 78, 32, 32,
+       68,
+       /* CAN */
+       67, 65, 78, 32, 32,
+       69,
+       /* DIZZY */
+       68, 73, 90, 90, 89,
+       70,
+       /* METAL */
+       77, 69, 84, 65, 76,
+       71,
+       /* LYCAN */
+       76, 89, 67, 65, 78,
+       73,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv14a.c b/Applications/games/adv14a.c
new file mode 100644 (file)
index 0000000..5378b7c
--- /dev/null
@@ -0,0 +1,3479 @@
+#define NUM_OBJ 71
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 1;
+const uint8_t lightfill = 1;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 10;
+const uint8_t treasure = 13;
+const uint8_t treasures = 13;
+const uint8_t lastloc = 24;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+0 };
+const uint8_t loctxt_1[] = {
+98, 111, 116, 116, 111, 109, 32, 98, 117, 110, 107, 0 };
+const uint8_t loctxt_2[] = {
+115, 104, 105, 112, 39, 115, 32, 99, 97, 98, 105, 110, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 100, 111, 99, 107, 0 };
+const uint8_t loctxt_4[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 100, 101, 99, 107, 0 };
+const uint8_t loctxt_5[] = {
+98, 101, 97, 99, 104, 32, 98, 121, 32, 97, 32, 115, 109, 97, 108, 108, 32, 104, 105, 108, 108, 0 };
+const uint8_t loctxt_6[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 108, 101, 100, 103, 101, 32, 56, 32, 102, 101, 101, 116, 32, 98, 101, 108, 111, 119, 32, 104, 105, 108, 108, 32, 115, 117, 109, 109, 105, 116, 0 };
+const uint8_t loctxt_7[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 111, 112, 32, 111, 102, 32, 97, 32, 115, 109, 97, 108, 108, 32, 104, 105, 108, 108, 0 };
+const uint8_t loctxt_8[] = {
+99, 97, 118, 101, 114, 110, 0 };
+const uint8_t loctxt_9[] = {
+116, 111, 111, 108, 32, 115, 104, 101, 100, 0 };
+const uint8_t loctxt_10[] = {
+42, 83, 111, 114, 114, 121, 44, 32, 116, 111, 32, 101, 120, 112, 108, 111, 114, 101, 32, 80, 105, 114, 97, 116, 101, 39, 115, 32, 73, 115, 108, 101, 32, 121, 111, 117, 39, 108, 108, 32, 110, 101, 101, 100, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 35, 50, 0 };
+const uint8_t loctxt_11[] = {
+115, 101, 97, 0 };
+const uint8_t loctxt_12[] = {
+42, 73, 39, 109, 32, 117, 110, 100, 101, 114, 115, 101, 97, 0 };
+const uint8_t loctxt_13[] = {
+115, 109, 117, 103, 103, 108, 101, 114, 115, 32, 104, 111, 108, 100, 32, 105, 110, 115, 105, 100, 101, 32, 115, 104, 105, 112, 0 };
+const uint8_t loctxt_14[] = {
+104, 97, 108, 108, 0 };
+const uint8_t loctxt_15[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 114, 111, 99, 107, 121, 32, 98, 101, 97, 99, 104, 32, 98, 121, 32, 115, 101, 97, 0 };
+const uint8_t loctxt_16[] = {
+116, 111, 112, 32, 98, 117, 110, 107, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 101, 110, 103, 105, 110, 101, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 101, 110, 103, 105, 110, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_19[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 99, 97, 116, 119, 97, 108, 107, 32, 111, 110, 32, 111, 117, 116, 115, 105, 100, 101, 32, 111, 102, 32, 115, 104, 105, 112, 32, 98, 121, 32, 112, 111, 114, 116, 104, 111, 108, 101, 0 };
+const uint8_t loctxt_20[] = {
+110, 97, 114, 114, 111, 119, 32, 99, 114, 97, 119, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_21[] = {
+115, 104, 105, 112, 39, 115, 32, 104, 111, 108, 100, 0 };
+const uint8_t loctxt_22[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 98, 101, 97, 109, 32, 117, 110, 100, 101, 114, 32, 100, 111, 99, 107, 0 };
+const uint8_t loctxt_23[] = {
+115, 117, 110, 107, 101, 110, 32, 115, 104, 105, 112, 0 };
+const uint8_t loctxt_24[] = {
+78, 101, 118, 101, 114, 32, 78, 101, 118, 101, 114, 32, 76, 97, 110, 100, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_2,  { 0, 0, 0, 0, 4, 18 } }, 
+               { loctxt_3,  { 5, 0, 0, 0, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 0, 0, 0, 2 } }, 
+               { loctxt_5,  { 0, 3, 15, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 0, 0, 0, 5 } }, 
+               { loctxt_7,  { 0, 0, 0, 0, 0, 10 } }, 
+               { loctxt_8,  { 0, 0, 0, 14, 0, 0 } }, 
+               { loctxt_9,  { 8, 0, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 0, 0, 7, 0 } }, 
+               { loctxt_11,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 8, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 0, 5, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 2 } }, 
+               { loctxt_17,  { 0, 0, 0, 0, 0, 18 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 2, 0 } }, 
+               { loctxt_19,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 21, 13, 0, 0 } }, 
+               { loctxt_21,  { 0, 0, 0, 20, 0, 0 } }, 
+               { loctxt_22,  { 0, 0, 0, 0, 0, 11 } }, 
+               { loctxt_23,  { 0, 0, 0, 0, 12, 0 } }, 
+               { loctxt_24,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       7,
+       2,
+       0,
+       5,
+       0,
+       8,
+       9,
+       7,
+       0,
+       0,
+       0,
+       0,
+       2,
+       0,
+       0,
+       0,
+       2,
+       16,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       3,
+       0,
+       0,
+       0,
+       0,
+       13,
+       21,
+       4,
+       4,
+       0,
+       12,
+       0,
+       16,
+       11,
+       12,
+       0,
+       0,
+       21,
+       3,
+       0,
+       2,
+       0,
+       2,
+       0,
+       0,
+       0,
+       0,
+       0,
+       13,
+       0,
+       0,
+       0,
+       19,
+       0,
+       2,
+       0,
+       0,
+       0,
+       0,
+       23,
+       22,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+78, 97, 114, 114, 111, 119, 32, 99, 114, 97, 99, 107, 32, 105, 110, 32, 114, 111, 99, 107, 0 };
+const uint8_t objtxt_1[] = {
+71, 108, 97, 115, 115, 101, 115, 0 };
+const uint8_t objtxt_2[] = {
+119, 104, 105, 99, 104, 32, 73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_3[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_4[] = {
+73, 115, 108, 101, 32, 111, 102, 102, 32, 105, 110, 32, 100, 105, 115, 116, 97, 110, 99, 101, 0 };
+const uint8_t objtxt_5[] = {
+84, 111, 111, 108, 115, 104, 101, 100, 0 };
+const uint8_t objtxt_6[] = {
+72, 97, 109, 109, 101, 114, 0 };
+const uint8_t objtxt_7[] = {
+83, 108, 101, 101, 112, 105, 110, 103, 32, 80, 105, 114, 97, 116, 101, 0 };
+const uint8_t objtxt_8[] = {
+66, 111, 120, 0 };
+const uint8_t objtxt_9[] = {
+46, 0 };
+const uint8_t objtxt_10[] = {
+42, 82, 97, 114, 101, 32, 83, 116, 97, 109, 112, 115, 42, 0 };
+const uint8_t objtxt_11[] = {
+42, 68, 111, 117, 98, 108, 111, 111, 110, 115, 42, 0 };
+const uint8_t objtxt_12[] = {
+80, 97, 105, 110, 116, 105, 110, 103, 0 };
+const uint8_t objtxt_13[] = {
+80, 105, 99, 116, 117, 114, 101, 32, 70, 114, 97, 109, 101, 0 };
+const uint8_t objtxt_14[] = {
+80, 105, 99, 116, 117, 114, 101, 0 };
+const uint8_t objtxt_15[] = {
+77, 97, 112, 0 };
+const uint8_t objtxt_16[] = {
+66, 117, 110, 107, 32, 98, 101, 100, 0 };
+const uint8_t objtxt_17[] = {
+70, 97, 99, 101, 32, 109, 97, 115, 107, 0 };
+const uint8_t objtxt_18[] = {
+119, 104, 105, 99, 104, 32, 73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t objtxt_19[] = {
+87, 105, 114, 101, 32, 114, 105, 109, 0 };
+const uint8_t objtxt_20[] = {
+76, 101, 110, 115, 101, 115, 0 };
+const uint8_t objtxt_21[] = {
+82, 101, 100, 32, 97, 108, 103, 97, 101, 0 };
+const uint8_t objtxt_22[] = {
+71, 108, 117, 101, 0 };
+const uint8_t objtxt_23[] = {
+42, 80, 105, 101, 99, 101, 32, 111, 102, 32, 65, 109, 98, 101, 114, 42, 0 };
+const uint8_t objtxt_24[] = {
+66, 111, 111, 107, 108, 101, 116, 0 };
+const uint8_t objtxt_25[] = {
+83, 101, 97, 0 };
+const uint8_t objtxt_26[] = {
+68, 111, 99, 107, 32, 116, 111, 32, 116, 104, 101, 32, 69, 97, 115, 116, 0 };
+const uint8_t objtxt_27[] = {
+85, 110, 100, 101, 114, 115, 105, 100, 101, 32, 111, 102, 32, 68, 111, 99, 107, 0 };
+const uint8_t objtxt_28[] = {
+66, 111, 97, 116, 32, 116, 111, 32, 116, 104, 101, 32, 87, 69, 83, 84, 0 };
+const uint8_t objtxt_29[] = {
+73, 110, 115, 105, 100, 101, 32, 111, 102, 32, 98, 111, 97, 116, 0 };
+const uint8_t objtxt_30[] = {
+80, 111, 111, 108, 32, 111, 102, 32, 119, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_31[] = {
+65, 108, 97, 114, 109, 32, 99, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_32[] = {
+68, 111, 99, 107, 0 };
+const uint8_t objtxt_33[] = {
+83, 101, 97, 0 };
+const uint8_t objtxt_34[] = {
+80, 117, 109, 105, 99, 101, 32, 114, 111, 99, 107, 0 };
+const uint8_t objtxt_35[] = {
+83, 105, 108, 116, 0 };
+const uint8_t objtxt_36[] = {
+82, 111, 99, 107, 121, 32, 98, 101, 97, 99, 104, 0 };
+const uint8_t objtxt_37[] = {
+42, 68, 105, 97, 109, 111, 110, 100, 32, 119, 97, 116, 99, 104, 42, 0 };
+const uint8_t objtxt_38[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 99, 117, 114, 114, 101, 110, 116, 0 };
+const uint8_t objtxt_39[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 99, 117, 114, 114, 101, 110, 116, 0 };
+const uint8_t objtxt_40[] = {
+70, 108, 111, 116, 115, 97, 109, 32, 38, 32, 74, 101, 116, 115, 97, 109, 0 };
+const uint8_t objtxt_41[] = {
+82, 117, 109, 0 };
+const uint8_t objtxt_42[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_43[] = {
+66, 111, 97, 116, 0 };
+const uint8_t objtxt_44[] = {
+79, 121, 115, 116, 101, 114, 0 };
+const uint8_t objtxt_45[] = {
+80, 111, 114, 116, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_46[] = {
+70, 97, 110, 32, 98, 108, 97, 100, 101, 0 };
+const uint8_t objtxt_47[] = {
+72, 101, 108, 109, 0 };
+const uint8_t objtxt_48[] = {
+79, 112, 101, 110, 32, 112, 111, 114, 116, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_49[] = {
+83, 99, 114, 101, 119, 100, 114, 105, 118, 101, 114, 0 };
+const uint8_t objtxt_50[] = {
+82, 117, 105, 110, 101, 100, 32, 119, 97, 116, 101, 114, 115, 111, 97, 107, 101, 100, 32, 112, 97, 105, 110, 116, 105, 110, 103, 0 };
+const uint8_t objtxt_51[] = {
+42, 82, 101, 109, 98, 114, 97, 110, 100, 116, 32, 80, 97, 105, 110, 116, 105, 110, 103, 42, 0 };
+const uint8_t objtxt_52[] = {
+80, 105, 114, 97, 116, 101, 32, 97, 116, 32, 104, 101, 108, 109, 0 };
+const uint8_t objtxt_53[] = {
+86, 101, 114, 121, 32, 110, 97, 114, 114, 111, 119, 32, 99, 114, 97, 119, 108, 119, 97, 121, 0 };
+const uint8_t objtxt_54[] = {
+87, 97, 115, 104, 101, 100, 32, 111, 117, 116, 32, 115, 105, 103, 110, 0 };
+const uint8_t objtxt_55[] = {
+42, 71, 111, 108, 100, 32, 69, 97, 114, 114, 105, 110, 103, 42, 0 };
+const uint8_t objtxt_56[] = {
+42, 82, 97, 114, 101, 32, 66, 111, 111, 107, 42, 0 };
+const uint8_t objtxt_57[] = {
+79, 105, 108, 115, 107, 105, 110, 32, 114, 97, 105, 110, 99, 111, 97, 116, 0 };
+const uint8_t objtxt_58[] = {
+87, 97, 116, 101, 114, 112, 114, 111, 111, 102, 32, 112, 97, 105, 110, 116, 105, 110, 103, 0 };
+const uint8_t objtxt_59[] = {
+67, 101, 105, 108, 105, 110, 103, 32, 102, 97, 110, 0 };
+const uint8_t objtxt_60[] = {
+42, 68, 105, 97, 109, 111, 110, 100, 32, 66, 114, 111, 111, 99, 104, 42, 0 };
+const uint8_t objtxt_61[] = {
+83, 109, 97, 108, 108, 32, 98, 117, 116, 116, 111, 110, 32, 105, 110, 32, 99, 101, 105, 108, 105, 110, 103, 0 };
+const uint8_t objtxt_62[] = {
+87, 97, 116, 101, 114, 115, 111, 97, 107, 101, 100, 32, 98, 111, 111, 107, 0 };
+const uint8_t objtxt_63[] = {
+83, 117, 110, 107, 101, 110, 32, 83, 104, 105, 112, 0 };
+const uint8_t objtxt_64[] = {
+42, 74, 101, 119, 101, 108, 101, 100, 32, 99, 104, 101, 115, 116, 42, 0 };
+const uint8_t objtxt_65[] = {
+42, 83, 105, 108, 118, 101, 114, 32, 68, 111, 108, 108, 97, 114, 42, 0 };
+const uint8_t objtxt_66[] = {
+42, 80, 101, 97, 114, 108, 42, 0 };
+const uint8_t objtxt_67[] = {
+83, 110, 97, 105, 108, 0 };
+const uint8_t objtxt_68[] = {
+68, 101, 97, 100, 32, 115, 110, 97, 105, 108, 0 };
+const uint8_t objtxt_69[] = {
+42, 68, 105, 97, 109, 111, 110, 100, 32, 80, 105, 110, 42, 0 };
+const uint8_t objtxt_70[] = {
+42, 68, 105, 97, 109, 111, 110, 100, 32, 82, 105, 110, 103, 42, 0 };
+const uint8_t objtxt_71[] = {
+83, 109, 97, 115, 104, 101, 100, 32, 79, 121, 115, 116, 101, 114, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+       objtxt_67,
+       objtxt_68,
+       objtxt_69,
+       objtxt_70,
+       objtxt_71,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_2[] = {
+65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 49, 52, 32, 98, 121, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 46, 0 };
+const uint8_t msgtxt_3[] = {
+83, 111, 114, 114, 121, 44, 0 };
+const uint8_t msgtxt_4[] = {
+69, 118, 101, 114, 121, 116, 104, 105, 110, 103, 32, 105, 115, 0 };
+const uint8_t msgtxt_5[] = {
+110, 111, 116, 32, 101, 120, 97, 99, 116, 108, 121, 32, 100, 97, 114, 107, 44, 32, 98, 117, 116, 32, 105, 116, 39, 115, 32, 116, 111, 111, 32, 70, 85, 90, 90, 89, 32, 116, 111, 32, 115, 101, 101, 33, 0 };
+const uint8_t msgtxt_6[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 66, 97, 99, 107, 115, 105, 100, 101, 32, 111, 102, 32, 80, 105, 114, 97, 116, 101, 39, 115, 32, 73, 115, 108, 101, 46, 0 };
+const uint8_t msgtxt_7[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_8[] = {
+73, 32, 109, 97, 100, 101, 32, 105, 116, 46, 0 };
+const uint8_t msgtxt_9[] = {
+73, 32, 102, 97, 108, 108, 46, 0 };
+const uint8_t msgtxt_10[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_11[] = {
+97, 32, 102, 114, 97, 109, 101, 100, 32, 112, 97, 105, 110, 116, 105, 110, 103, 32, 111, 102, 32, 66, 108, 97, 99, 107, 98, 101, 97, 114, 100, 46, 0 };
+const uint8_t msgtxt_12[] = {
+109, 97, 112, 32, 111, 110, 32, 98, 97, 99, 107, 0 };
+const uint8_t msgtxt_13[] = {
+119, 114, 105, 116, 105, 110, 103, 0 };
+const uint8_t msgtxt_14[] = {
+83, 97, 105, 108, 105, 110, 103, 32, 114, 111, 117, 116, 101, 32, 116, 111, 32, 84, 82, 69, 65, 83, 85, 82, 69, 33, 0 };
+const uint8_t msgtxt_15[] = {
+65, 114, 103, 104, 33, 0 };
+const uint8_t msgtxt_16[] = {
+73, 32, 100, 114, 111, 119, 110, 101, 100, 46, 0 };
+const uint8_t msgtxt_17[] = {
+73, 32, 98, 114, 101, 97, 116, 104, 101, 100, 46, 0 };
+const uint8_t msgtxt_18[] = {
+108, 101, 110, 115, 101, 115, 32, 38, 32, 119, 105, 114, 101, 32, 114, 105, 109, 46, 0 };
+const uint8_t msgtxt_19[] = {
+105, 116, 39, 115, 32, 34, 71, 108, 111, 105, 111, 112, 101, 108, 116, 105, 115, 32, 70, 117, 114, 99, 97, 116, 97, 34, 32, 111, 114, 32, 70, 117, 110, 111, 114, 105, 46, 0 };
+const uint8_t msgtxt_20[] = {
+104, 111, 119, 32, 116, 111, 32, 109, 97, 107, 101, 32, 103, 108, 117, 101, 32, 102, 114, 111, 109, 32, 70, 117, 110, 111, 114, 105, 46, 0 };
+const uint8_t msgtxt_21[] = {
+73, 32, 102, 111, 117, 110, 100, 0 };
+const uint8_t msgtxt_22[] = {
+38, 32, 73, 32, 103, 111, 116, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_23[] = {
+105, 110, 32, 116, 104, 101, 32, 119, 97, 121, 46, 0 };
+const uint8_t msgtxt_24[] = {
+71, 108, 97, 115, 115, 101, 115, 32, 115, 108, 105, 112, 32, 111, 102, 102, 46, 0 };
+const uint8_t msgtxt_25[] = {
+73, 110, 32, 50, 32, 119, 111, 114, 100, 115, 32, 116, 101, 108, 108, 32, 109, 101, 32, 116, 111, 32, 111, 114, 32, 105, 110, 32, 119, 104, 97, 116, 46, 0 };
+const uint8_t msgtxt_26[] = {
+73, 32, 99, 97, 110, 39, 116, 44, 0 };
+const uint8_t msgtxt_27[] = {
+72, 85, 72, 63, 0 };
+const uint8_t msgtxt_28[] = {
+98, 111, 97, 116, 39, 115, 32, 98, 111, 116, 116, 111, 109, 46, 0 };
+const uint8_t msgtxt_29[] = {
+104, 97, 112, 112, 101, 110, 115, 46, 0 };
+const uint8_t msgtxt_30[] = {
+110, 111, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_31[] = {
+115, 112, 101, 99, 105, 97, 108, 46, 0 };
+const uint8_t msgtxt_32[] = {
+73, 32, 104, 101, 97, 114, 0 };
+const uint8_t msgtxt_33[] = {
+97, 110, 32, 97, 108, 97, 114, 109, 32, 99, 108, 111, 99, 107, 32, 114, 105, 110, 103, 105, 110, 103, 32, 115, 111, 109, 101, 119, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_34[] = {
+105, 116, 39, 115, 32, 99, 111, 118, 101, 114, 101, 100, 32, 105, 110, 32, 97, 108, 103, 97, 101, 0 };
+const uint8_t msgtxt_35[] = {
+77, 111, 118, 101, 32, 110, 117, 109, 98, 101, 114, 58, 0 };
+const uint8_t msgtxt_36[] = {
+76, 101, 97, 118, 101, 32, 42, 84, 82, 69, 65, 83, 85, 82, 69, 83, 42, 32, 104, 101, 114, 101, 46, 32, 83, 67, 79, 82, 69, 46, 0 };
+const uint8_t msgtxt_37[] = {
+112, 105, 108, 105, 110, 103, 115, 46, 0 };
+const uint8_t msgtxt_38[] = {
+77, 121, 32, 109, 97, 115, 107, 39, 115, 32, 102, 111, 103, 103, 101, 100, 32, 117, 112, 33, 0 };
+const uint8_t msgtxt_39[] = {
+73, 32, 115, 116, 105, 114, 114, 101, 100, 32, 105, 116, 32, 117, 112, 46, 0 };
+const uint8_t msgtxt_40[] = {
+73, 32, 111, 112, 101, 110, 101, 100, 32, 117, 112, 32, 97, 0 };
+const uint8_t msgtxt_41[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 107, 110, 111, 119, 32, 119, 104, 101, 114, 101, 32, 105, 116, 32, 105, 115, 46, 0 };
+const uint8_t msgtxt_42[] = {
+73, 32, 121, 97, 119, 110, 32, 38, 32, 115, 116, 114, 101, 116, 99, 104, 33, 0 };
+const uint8_t msgtxt_43[] = {
+77, 97, 116, 116, 114, 101, 115, 115, 32, 105, 115, 32, 115, 111, 102, 116, 46, 0 };
+const uint8_t msgtxt_44[] = {
+72, 111, 119, 63, 0 };
+const uint8_t msgtxt_45[] = {
+105, 116, 32, 102, 111, 108, 108, 111, 119, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_46[] = {
+73, 32, 97, 109, 46, 0 };
+const uint8_t msgtxt_47[] = {
+103, 108, 97, 115, 115, 101, 115, 0 };
+const uint8_t msgtxt_48[] = {
+83, 119, 105, 109, 32, 100, 111, 119, 110, 63, 0 };
+const uint8_t msgtxt_49[] = {
+77, 121, 32, 109, 97, 115, 107, 39, 115, 32, 102, 117, 108, 108, 32, 111, 102, 32, 119, 97, 116, 101, 114, 46, 0 };
+const uint8_t msgtxt_50[] = {
+98, 121, 32, 101, 100, 103, 101, 115, 32, 111, 116, 104, 101, 114, 32, 112, 105, 99, 116, 117, 114, 101, 32, 105, 115, 32, 118, 105, 115, 105, 98, 108, 101, 32, 98, 101, 110, 101, 97, 116, 104, 33, 32, 73, 32, 99, 108, 101, 97, 110, 101, 100, 32, 116, 111, 112, 32, 111, 110, 101, 32, 111, 102, 102, 33, 0 };
+const uint8_t msgtxt_51[] = {
+78, 111, 32, 109, 97, 112, 33, 0 };
+const uint8_t msgtxt_52[] = {
+78, 111, 32, 99, 114, 101, 119, 32, 104, 101, 114, 101, 33, 0 };
+const uint8_t msgtxt_53[] = {
+80, 105, 114, 97, 116, 101, 32, 100, 114, 105, 110, 107, 115, 32, 114, 117, 109, 32, 38, 32, 104, 101, 97, 100, 115, 32, 116, 111, 32, 119, 111, 114, 107, 46, 0 };
+const uint8_t msgtxt_54[] = {
+80, 105, 114, 97, 116, 101, 32, 108, 111, 111, 107, 115, 32, 97, 114, 111, 117, 110, 100, 32, 101, 120, 112, 101, 99, 116, 97, 110, 116, 108, 121, 32, 38, 32, 115, 97, 121, 115, 32, 34, 77, 97, 116, 101, 121, 44, 32, 121, 111, 117, 32, 98, 101, 32, 102, 111, 114, 103, 101, 116, 102, 117, 108, 32, 102, 111, 114, 32, 115, 117, 114, 101, 33, 34, 32, 38, 32, 116, 104, 101, 110, 32, 104, 101, 32, 115, 117, 108, 107, 115, 32, 111, 102, 102, 32, 97, 110, 103, 114, 105, 108, 121, 33, 0 };
+const uint8_t msgtxt_55[] = {
+80, 105, 114, 97, 116, 101, 32, 119, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 46, 0 };
+const uint8_t msgtxt_56[] = {
+82, 111, 119, 63, 0 };
+const uint8_t msgtxt_57[] = {
+116, 111, 111, 32, 104, 101, 97, 118, 121, 46, 0 };
+const uint8_t msgtxt_58[] = {
+84, 114, 121, 32, 73, 78, 86, 69, 78, 84, 79, 82, 89, 32, 111, 114, 32, 76, 79, 79, 75, 0 };
+const uint8_t msgtxt_59[] = {
+116, 104, 101, 32, 108, 105, 116, 116, 108, 101, 32, 115, 99, 114, 101, 119, 115, 33, 0 };
+const uint8_t msgtxt_60[] = {
+116, 104, 101, 114, 101, 39, 115, 32, 110, 111, 32, 109, 97, 116, 116, 114, 101, 115, 115, 32, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_61[] = {
+119, 111, 110, 39, 116, 32, 102, 105, 116, 46, 0 };
+const uint8_t msgtxt_62[] = {
+73, 39, 118, 101, 32, 115, 116, 111, 114, 101, 100, 32, 48, 32, 116, 114, 101, 97, 115, 117, 114, 101, 115, 46, 0 };
+const uint8_t msgtxt_63[] = {
+70, 111, 114, 32, 109, 121, 32, 77, 111, 109, 33, 0 };
+const uint8_t msgtxt_64[] = {
+105, 116, 39, 115, 32, 111, 110, 32, 116, 104, 101, 32, 115, 104, 105, 112, 32, 115, 111, 109, 101, 119, 104, 101, 114, 101, 46, 0 };
+const uint8_t msgtxt_65[] = {
+105, 116, 39, 115, 32, 111, 110, 32, 79, 112, 104, 116, 104, 97, 108, 109, 111, 108, 111, 103, 121, 46, 32, 83, 113, 117, 105, 110, 116, 105, 110, 103, 32, 99, 97, 110, 32, 104, 101, 108, 112, 32, 119, 105, 116, 104, 32, 77, 121, 111, 112, 105, 97, 46, 0 };
+const uint8_t msgtxt_66[] = {
+73, 116, 39, 115, 32, 111, 100, 100, 33, 0 };
+const uint8_t msgtxt_67[] = {
+71, 111, 111, 100, 32, 105, 100, 101, 97, 33, 32, 66, 117, 116, 32, 46, 46, 46, 0 };
+const uint8_t msgtxt_68[] = {
+87, 104, 121, 32, 98, 111, 116, 104, 101, 114, 63, 0 };
+const uint8_t msgtxt_69[] = {
+73, 32, 108, 111, 115, 116, 0 };
+const uint8_t msgtxt_70[] = {
+97, 32, 115, 104, 105, 112, 32, 119, 105, 116, 104, 32, 102, 108, 111, 111, 100, 108, 105, 103, 104, 116, 115, 32, 108, 105, 116, 0 };
+const uint8_t msgtxt_71[] = {
+116, 104, 101, 32, 102, 97, 110, 39, 115, 32, 116, 117, 114, 110, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_72[] = {
+108, 97, 114, 103, 101, 32, 98, 108, 97, 100, 101, 32, 102, 97, 110, 32, 104, 97, 115, 32, 115, 116, 111, 112, 112, 101, 100, 46, 0 };
+const uint8_t msgtxt_73[] = {
+98, 97, 116, 116, 101, 114, 121, 39, 115, 32, 100, 101, 97, 100, 33, 0 };
+const uint8_t msgtxt_74[] = {
+98, 114, 105, 103, 104, 116, 108, 121, 46, 0 };
+const uint8_t msgtxt_75[] = {
+100, 105, 109, 108, 121, 46, 0 };
+const uint8_t msgtxt_76[] = {
+110, 111, 116, 32, 97, 116, 32, 97, 108, 108, 33, 0 };
+const uint8_t msgtxt_77[] = {
+67, 108, 105, 99, 107, 33, 0 };
+const uint8_t msgtxt_78[] = {
+97, 109, 112, 115, 32, 108, 101, 102, 116, 46, 0 };
+const uint8_t msgtxt_79[] = {
+80, 105, 114, 97, 116, 101, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_80[] = {
+105, 116, 39, 115, 32, 85, 114, 111, 115, 97, 108, 112, 105, 110, 120, 32, 67, 105, 110, 101, 114, 97, 46, 0 };
+const uint8_t msgtxt_81[] = {
+79, 121, 115, 116, 101, 114, 32, 68, 114, 105, 108, 108, 32, 100, 111, 101, 115, 32, 116, 104, 101, 32, 116, 114, 105, 99, 107, 33, 0 };
+const uint8_t msgtxt_82[] = {
+76, 105, 100, 32, 98, 114, 111, 107, 101, 32, 111, 102, 102, 33, 0 };
+const uint8_t msgtxt_83[] = {
+73, 39, 109, 32, 110, 111, 32, 115, 97, 105, 108, 111, 114, 33, 0 };
+const uint8_t msgtxt_84[] = {
+102, 108, 111, 111, 100, 108, 105, 103, 104, 116, 115, 32, 108, 105, 116, 0 };
+const uint8_t msgtxt_85[] = {
+76, 111, 110, 103, 32, 116, 114, 105, 112, 44, 32, 110, 105, 103, 104, 116, 32, 102, 101, 108, 108, 33, 0 };
+const uint8_t msgtxt_86[] = {
+79, 117, 116, 32, 111, 102, 32, 103, 97, 115, 33, 0 };
+const uint8_t msgtxt_87[] = {
+38, 32, 108, 111, 115, 116, 32, 97, 116, 32, 115, 101, 97, 33, 0 };
+const uint8_t msgtxt_88[] = {
+76, 105, 116, 101, 114, 115, 32, 108, 101, 102, 116, 46, 0 };
+const uint8_t msgtxt_89[] = {
+108, 97, 114, 103, 101, 32, 111, 112, 101, 110, 105, 110, 103, 46, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       181, 
+       8, 3, 8, 29, 9, 16, 0, 3, 0, 31, 
+       60, 58, 
+/* AUTO  100   */
+       177, 
+       8, 31, 9, 29, 0, 3, 0, 31, 
+       58, 60, 
+/* AUTO  100   */
+       168, 
+       8, 29, 16, 0, 
+       77, 
+/* AUTO  100   */
+       176, 
+       8, 4, 1, 10, 0, 10, 0, 14, 
+       62, 
+/* AUTO  100   */
+       168, 
+       9, 2, 9, 3, 
+       57, 
+/* AUTO  8     */
+       149, 8, 
+       9, 21, 1, 18, 9, 22, 0, 22, 0, 18, 
+       58, 60, 
+/* AUTO  100   */
+       176, 
+       1, 67, 9, 5, 0, 67, 0, 68, 
+       72, 
+/* AUTO  100   */
+       174, 
+       0, 1, 0, 1, 0, 1, 
+       81, 82, 81, 
+/* AUTO  100   */
+       174, 
+       9, 1, 0, 40, 0, 3, 
+       79, 81, 73, 
+/* AUTO  0     */
+       195, 
+       56, 70, 64, 2, 
+/* AUTO  0     */
+       207, 
+       0, 1, 0, 2, 0, 18, 
+       58, 58, 58, 113, 
+/* AUTO  0     */
+       211, 
+       0, 1, 0, 0, 0, 1, 0, 20, 
+       81, 79, 81, 79, 
+/* AUTO  100   */
+       172, 
+       4, 13, 2, 42, 0, 25, 
+       58, 
+/* AUTO  100   */
+       172, 
+       8, 5, 1, 12, 0, 24, 
+       58, 
+/* AUTO  100   */
+       172, 
+       8, 5, 1, 14, 0, 24, 
+       58, 
+/* AUTO  100   */
+       172, 
+       8, 5, 1, 51, 0, 24, 
+       58, 
+/* AUTO  100   */
+       180, 
+       8, 24, 13, 51, 14, 50, 0, 50, 0, 51, 
+       72, 
+/* AUTO  100   */
+       181, 
+       3, 17, 6, 18, 8, 4, 0, 22, 0, 23, 
+       60, 58, 
+/* AUTO  100   */
+       168, 
+       1, 31, 0, 19, 
+       58, 
+/* AUTO  100   */
+       172, 
+       4, 13, 5, 42, 0, 25, 
+       60, 
+/* AUTO  100   */
+       173, 
+       9, 13, 13, 63, 0, 63, 
+       59, 76, 
+/* AUTO  100   */
+       174, 
+       8, 6, 0, 2, 0, 1, 
+       81, 83, 73, 
+/* AUTO  0     */
+       196, 
+       15, 3, 
+       15, 
+/* AUTO  0     */
+       210, 
+       15, 0, 9, 4, 0, 6, 0, 17, 
+       17, 60, 60, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+/* AUTO  100   */
+       183, 
+       8, 4, 1, 2, 0, 2, 0, 2, 0, 18, 
+       55, 58, 60, 73, 
+/* AUTO  0     */
+       193, 
+       70, 24, 
+/* AUTO  100   */
+       183, 
+       9, 4, 0, 10, 0, 11, 0, 12, 0, 13, 
+       60, 60, 60, 60, 
+/* AUTO  100   */
+       173, 
+       9, 4, 0, 14, 0, 20, 
+       60, 60, 
+/* AUTO  100   */
+       176, 
+       8, 5, 1, 42, 0, 42, 0, 54, 
+       72, 
+/* AUTO  100   */
+       181, 
+       8, 13, 8, 4, 14, 32, 4, 12, 0, 63, 
+       53, 76, 
+/* AUTO  100   */
+       183, 
+       8, 23, 1, 18, 0, 2, 0, 22, 0, 18, 
+       49, 58, 60, 60, 
+/* AUTO  100   */
+       174, 
+       8, 22, 1, 18, 0, 2, 
+       38, 58, 56, 
+/* AUTO  100   */
+       176, 
+       8, 5, 1, 56, 0, 62, 0, 56, 
+       72, 
+/* AUTO  15    */
+       136, 15, 
+       8, 2, 4, 1, 
+       42, 
+/* AUTO  100   */
+       169, 
+       8, 4, 9, 6, 
+       16, 61, 
+/* AUTO  100   */
+       182, 
+       6, 1, 1, 2, 0, 2, 0, 2, 0, 18, 
+       55, 58, 60, 
+/* AUTO  100   */
+       182, 
+       6, 17, 1, 18, 0, 18, 0, 2, 0, 18, 
+       55, 58, 60, 
+/* AUTO  100   */
+       175, 
+       9, 18, 8, 3, 0, 18, 
+       56, 58, 70, 64, 
+/* AUTO  100   */
+       169, 
+       9, 19, 9, 7, 
+       32, 33, 
+/* AUTO  100   */
+       165, 
+       8, 2, 
+       4, 5, 
+/* AUTO  100   */
+       178, 
+       8, 18, 9, 2, 0, 18, 9, 3, 
+       57, 60, 76, 
+/* AUTO  100   */
+       174, 
+       9, 18, 8, 2, 0, 18, 
+       56, 58, 76, 
+/* AUTO  25    */
+       145, 25, 
+       8, 4, 8, 20, 0, 20, 0, 13, 
+       60, 58, 
+/* AUTO  100   */
+       173, 
+       8, 29, 15, 0, 0, 29, 
+       60, 79, 
+/* AUTO  100   */
+       168, 
+       15, 6, 0, 27, 
+       58, 
+/* AUTO  100   */
+       172, 
+       16, 6, 14, 46, 0, 27, 
+       60, 
+/* AUTO  100   */
+       164, 
+       4, 24, 
+       63, 
+/* AUTO  100   */
+       175, 
+       8, 28, 0, 20, 0, 3, 
+       79, 81, 77, 73, 
+/* AUTO  0     */
+       201, 
+       15, 0, 0, 28, 
+       60, 79, 
+/* AUTO  0     */
+       196, 
+       0, 3, 
+       81, 
+};
+const uint8_t actions[] = {
+/* LOOK  IT    */
+       14, 27, 71, 
+       4, 2, 8, 2, 3, 1, 
+       1, 21, 47, 
+/* LOOK  ANY   */
+       5, 27, 0, 
+       8, 2, 
+       3, 26, 
+/* STAR  ENGI  */
+       11, 87, 64, 
+       4, 18, 15, 0, 
+       3, 26, 7, 123, 
+/* STAR  ENGI  */
+       9, 87, 64, 
+       4, 18, 0, 3, 
+       73, 81, 
+/* AUTO  0     */
+       199, 
+       15, 0, 
+       3, 30, 29, 136, 
+/* AUTO  0     */
+       201, 
+       16, 0, 0, 28, 
+       1, 58, 
+/* AUTO  0     */
+       196, 
+       0, 3, 
+       81, 
+/* LOOK  CHES  */
+       10, 27, 100, 
+       13, 56, 3, 64, 
+       1, 7, 132, 
+/* SAIL  SHIP  */
+       10, 73, 11, 
+       9, 28, 2, 52, 
+       129, 44, 106, 
+/* GO    PORT  */
+       15, 1, 43, 
+       13, 48, 10, 0, 6, 2, 
+       3, 26, 10, 111, 
+/* LOOK  PILI  */
+       19, 27, 70, 
+       8, 4, 8, 11, 14, 67, 0, 67, 
+       7, 10, 22, 74, 
+/* LOOK  PIRA  */
+       5, 27, 15, 
+       2, 52, 
+       3, 105, 
+/* LOOK  PAIN  */
+       23, 27, 24, 
+       9, 2, 13, 15, 3, 14, 0, 14, 0, 51, 
+       1, 7, 50, 72, 
+/* GET   UP    */
+       4, 10, 5, 
+       7, 1, 
+       46, 
+/* GO    PORT  */
+       14, 1, 43, 
+       4, 19, 11, 0, 0, 2, 
+       1, 54, 76, 
+/* GO    PORT  */
+       14, 1, 43, 
+       2, 48, 11, 0, 0, 19, 
+       1, 54, 76, 
+/* OPEN  PORT  */
+       13, 57, 43, 
+       0, 48, 0, 45, 2, 45, 
+       1, 72, 
+/* DIVE  ANY   */
+       4, 52, 0, 
+       8, 5, 
+       48, 
+/* CHAR  ANY   */
+       0, 92, 0, 
+       44, 
+/* FEEL  ANY   */
+       19, 24, 0, 
+       8, 2, 4, 2, 2, 1, 0, 1, 
+       21, 10, 22, 74, 
+/* RUB   EYES  */
+       11, 46, 61, 
+       6, 2, 6, 18, 
+       1, 21, 30, 23, 
+/* LOOK  BATT  */
+       7, 27, 90, 
+       9, 7, 
+       1, 7, 78, 128, 
+/* USE   HAMM  */
+       21, 59, 34, 
+       3, 6, 3, 44, 8, 30, 0, 44, 0, 71, 
+       1, 72, 
+/* EMPT  MASK  */
+       17, 77, 32, 
+       3, 17, 6, 18, 8, 23, 0, 23, 
+       1, 60, 
+/* LOOK  EAST  */
+       10, 27, 3, 
+       8, 4, 8, 10, 
+       7, 37, 23, 
+/* INVE  ANY   */
+       4, 41, 0, 
+       9, 2, 
+       66, 
+/* GET   INVE  */
+       4, 10, 51, 
+       9, 2, 
+       66, 
+/* GO    ENGI  */
+       10, 1, 64, 
+       4, 18, 0, 17, 
+       1, 54, 76, 
+/* REMO  MASK  */
+       15, 34, 32, 
+       1, 18, 0, 18, 0, 2, 
+       1, 59, 58, 56, 
+/* REMO  GLAS  */
+       15, 34, 7, 
+       1, 2, 0, 2, 0, 2, 
+       1, 59, 58, 56, 
+/* GO    CLOC  */
+       0, 1, 57, 
+       41, 
+/* CLEA  GLAS  */
+       4, 61, 7, 
+       3, 2, 
+       1, 
+/* FEEL  ANY   */
+       6, 24, 0, 
+       4, 16, 
+       1, 7, 110, 
+/* LOOK  CURR  */
+       1, 27, 52, 
+       1, 45, 
+/* GO    SHIP  */
+       14, 1, 11, 
+       2, 43, 0, 4, 0, 7, 
+       54, 76, 60, 
+/* SCOR  ANY   */
+       4, 71, 0, 
+       8, 25, 
+       65, 
+/* HELP  ANY   */
+       1, 72, 0, 
+       3, 26, 
+/* OPEN  EYES  */
+       0, 57, 61, 
+       1, 
+/* FEEL  SILT  */
+       19, 24, 62, 
+       2, 35, 8, 14, 14, 11, 0, 11, 
+       21, 10, 22, 74, 
+/* DIG   ANY   */
+       23, 43, 0, 
+       3, 46, 4, 5, 14, 41, 13, 7, 0, 41, 
+       21, 10, 22, 74, 
+/* WAKE  PIRA  */
+       10, 44, 15, 
+       2, 7, 0, 7, 
+       1, 59, 73, 
+/* AUTO  0     */
+       196, 
+       5, 41, 
+       104, 
+/* AUTO  0     */
+       210, 
+       2, 41, 0, 41, 0, 52, 0, 47, 
+       59, 72, 103, 
+/* GET   BREA  */
+       15, 10, 30, 
+       9, 6, 0, 6, 0, 2, 
+       1, 58, 73, 81, 
+/* AUTO  0     */
+       205, 
+       8, 17, 0, 8, 0, 2, 
+       79, 81, 
+/* AUTO  0     */
+       205, 
+       9, 17, 0, 3, 0, 2, 
+       79, 81, 
+/* BREA  DEEP  */
+       10, 45, 47, 
+       0, 17, 0, 6, 
+       1, 58, 60, 
+/* HYPE  ANY   */
+       10, 47, 0, 
+       0, 17, 0, 6, 
+       1, 58, 60, 
+/* BREA  ANY   */
+       11, 45, 0, 
+       0, 6, 0, 17, 
+       1, 60, 60, 17, 
+/* YAWN  ANY   */
+       2, 79, 0, 
+       1, 30, 29, 
+/* WEAR  GLAS  */
+       23, 36, 7, 
+       3, 1, 6, 18, 0, 1, 0, 2, 0, 2, 
+       1, 74, 74, 60, 
+/* READ  SIGN  */
+       6, 86, 31, 
+       3, 3, 
+       1, 7, 6, 
+/* JUMP  TOP   */
+       11, 39, 66, 
+       4, 6, 0, 7, 
+       1, 8, 54, 76, 
+/* JUMP  UP    */
+       11, 39, 5, 
+       4, 6, 0, 7, 
+       1, 8, 54, 76, 
+/* JUMP  ANY   */
+       6, 39, 0, 
+       4, 6, 
+       1, 9, 61, 
+/* JUMP  LEDG  */
+       11, 39, 9, 
+       4, 7, 0, 6, 
+       1, 54, 9, 76, 
+/* JUMP  ANY   */
+       6, 39, 0, 
+       4, 7, 
+       1, 9, 61, 
+/* JUMP  ANY   */
+       2, 39, 0, 
+       3, 30, 29, 
+/* GO    CRAC  */
+       19, 1, 13, 
+       4, 7, 0, 8, 0, 3, 0, 16, 
+       56, 54, 58, 58, 
+/* GO    CRAC  */
+       19, 1, 13, 
+       4, 8, 0, 7, 0, 3, 0, 16, 
+       54, 60, 60, 76, 
+/* GO    SHED  */
+       9, 1, 22, 
+       4, 8, 0, 9, 
+       1, 54, 
+/* STOP  CLOC  */
+       5, 75, 57, 
+       12, 31, 
+       3, 41, 
+/* LOOK  SILT  */
+       19, 27, 62, 
+       3, 18, 2, 35, 0, 22, 0, 2, 
+       7, 58, 58, 39, 
+/* CLEA  MASK  */
+       22, 61, 32, 
+       8, 5, 3, 17, 6, 18, 0, 22, 0, 21, 
+       1, 60, 60, 
+/* LOOK  PIRA  */
+       19, 27, 15, 
+       3, 7, 14, 8, 14, 10, 0, 8, 
+       7, 10, 22, 74, 
+/* LOOK  PIRA  */
+       15, 27, 15, 
+       3, 7, 14, 55, 0, 55, 
+       7, 10, 22, 74, 
+/* OPEN  BOX   */
+       19, 57, 21, 
+       3, 8, 3, 6, 0, 10, 14, 10, 
+       1, 7, 10, 53, 
+/* REMO  FRAM  */
+       22, 34, 17, 
+       3, 12, 0, 12, 0, 13, 0, 14, 3, 49, 
+       1, 72, 53, 
+/* REMO  WIRE  */
+       23, 34, 103, 
+       3, 1, 3, 49, 0, 1, 0, 20, 0, 19, 
+       72, 74, 119, 109, 
+/* LOOK  PAIN  */
+       11, 27, 24, 
+       3, 14, 0, 15, 
+       7, 12, 22, 74, 
+/* LOOK  MAP   */
+       6, 27, 76, 
+       3, 15, 
+       1, 7, 13, 
+/* SPIT  MASK  */
+       22, 78, 32, 
+       9, 4, 3, 17, 6, 18, 0, 21, 0, 22, 
+       1, 58, 60, 
+/* READ  MAP   */
+       4, 86, 76, 
+       3, 15, 
+       14, 
+/* SWIM  OPEN  */
+       5, 48, 44, 
+       9, 0, 
+       3, 26, 
+/* LOOK  PAIN  */
+       6, 27, 24, 
+       3, 12, 
+       1, 7, 11, 
+/* GO    HILL  */
+       10, 1, 10, 
+       4, 5, 0, 6, 
+       1, 54, 76, 
+/* GO    BUNK  */
+       10, 1, 28, 
+       4, 2, 0, 1, 
+       1, 54, 76, 
+/* LOOK  SIGN  */
+       2, 27, 31, 
+       1, 7, 13, 
+/* LOOK  GLAS  */
+       6, 27, 7, 
+       3, 1, 
+       1, 7, 18, 
+/* REMO  LENS  */
+       23, 34, 8, 
+       3, 1, 3, 49, 0, 1, 0, 20, 0, 19, 
+       72, 74, 119, 109, 
+/* MAKE  GLUE  */
+       14, 50, 36, 
+       3, 21, 0, 21, 0, 22, 
+       1, 72, 8, 
+/* LOOK  ALGA  */
+       15, 27, 50, 
+       3, 21, 14, 23, 0, 23, 
+       21, 10, 74, 22, 
+/* LOOK  ALGA  */
+       6, 27, 50, 
+       3, 21, 
+       1, 7, 19, 
+/* READ  BOOK  */
+       6, 86, 38, 
+       1, 24, 
+       1, 7, 20, 
+/* WEAR  MASK  */
+       7, 36, 32, 
+       1, 2, 
+       3, 26, 10, 23, 
+/* WEAR  MASK  */
+       15, 36, 32, 
+       3, 17, 0, 17, 0, 18, 
+       1, 74, 74, 73, 
+/* AUTO  0     */
+       204, 
+       8, 8, 0, 2, 9, 23, 
+       60, 
+/* GLUE  LENS  */
+       13, 32, 8, 
+       3, 22, 3, 20, 0, 9, 
+       25, 58, 
+/* TO    MASK  */
+       21, 53, 32, 
+       3, 22, 3, 20, 8, 9, 3, 17, 6, 18, 
+       1, 73, 
+/* AUTO  0     */
+       206, 
+       0, 20, 0, 8, 0, 9, 
+       55, 58, 60, 
+/* TO    ANY   */
+       10, 53, 0, 
+       8, 9, 0, 9, 
+       3, 26, 60, 
+/* LOOK  GAS   */
+       15, 27, 101, 
+       9, 7, 0, 3, 0, 3, 
+       81, 78, 81, 138, 
+/* SWIM  DOWN  */
+       10, 48, 6, 
+       8, 5, 0, 4, 
+       1, 73, 58, 
+/* AUTO  0     */
+       210, 
+       1, 46, 0, 46, 0, 11, 0, 27, 
+       53, 119, 10, 
+/* AUTO  0     */
+       211, 
+       2, 29, 0, 12, 0, 12, 0, 29, 
+       54, 58, 55, 76, 
+/* AUTO  0     */
+       211, 
+       2, 26, 0, 12, 0, 10, 0, 26, 
+       54, 58, 55, 76, 
+/* AUTO  0     */
+       210, 
+       2, 28, 0, 12, 0, 13, 0, 28, 
+       54, 58, 55, 
+/* AUTO  0     */
+       211, 
+       2, 36, 0, 12, 0, 14, 0, 36, 
+       54, 58, 55, 76, 
+/* AUTO  0     */
+       211, 
+       2, 40, 0, 12, 0, 20, 0, 40, 
+       54, 58, 55, 76, 
+/* AUTO  0     */
+       211, 
+       2, 27, 0, 12, 0, 11, 0, 27, 
+       54, 58, 55, 76, 
+/* LOOK  FAN   */
+       10, 27, 81, 
+       2, 59, 9, 27, 
+       1, 7, 121, 
+/* REMO  BLAD  */
+       22, 34, 84, 
+       14, 46, 8, 27, 2, 59, 3, 49, 0, 46, 
+       1, 22, 74, 
+/* GO    DOCK  */
+       19, 1, 45, 
+       2, 26, 0, 3, 0, 5, 0, 26, 
+       1, 54, 60, 59, 
+/* GO    SHIP  */
+       23, 1, 11, 
+       2, 29, 0, 29, 0, 13, 0, 5, 0, 7, 
+       59, 54, 60, 60, 
+/* GO    SHIP  */
+       23, 1, 11, 
+       2, 28, 0, 28, 0, 4, 0, 5, 0, 7, 
+       59, 54, 60, 60, 
+/* SWIM  UP    */
+       23, 48, 5, 
+       8, 4, 8, 20, 0, 4, 0, 11, 0, 40, 
+       60, 54, 53, 76, 
+/* SWIM  UP    */
+       23, 48, 5, 
+       8, 4, 8, 11, 0, 4, 0, 11, 0, 27, 
+       60, 54, 53, 76, 
+/* SWIM  UP    */
+       23, 48, 5, 
+       8, 4, 8, 10, 0, 4, 0, 11, 0, 26, 
+       60, 54, 53, 76, 
+/* SWIM  UP    */
+       23, 48, 5, 
+       8, 4, 8, 13, 0, 4, 0, 11, 0, 28, 
+       60, 54, 53, 76, 
+/* SWIM  UP    */
+       11, 48, 5, 
+       8, 4, 8, 12, 
+       3, 26, 10, 23, 
+/* SWIM  UP    */
+       23, 48, 5, 
+       8, 4, 8, 14, 0, 4, 0, 11, 0, 36, 
+       60, 54, 53, 76, 
+/* SWIM  OPEN  */
+       23, 48, 44, 
+       8, 4, 8, 12, 0, 4, 0, 11, 0, 29, 
+       60, 54, 53, 76, 
+/* GO    SEA   */
+       19, 1, 39, 
+       4, 3, 0, 5, 0, 11, 0, 26, 
+       58, 54, 53, 76, 
+/* GO    SEA   */
+       23, 1, 39, 
+       4, 13, 0, 5, 0, 11, 0, 29, 0, 7, 
+       58, 54, 53, 58, 
+/* SWIM  WEST  */
+       19, 48, 4, 
+       8, 4, 8, 13, 0, 13, 0, 12, 
+       1, 60, 58, 76, 
+/* SWIM  EAST  */
+       19, 48, 3, 
+       8, 4, 8, 10, 0, 10, 0, 11, 
+       1, 60, 58, 76, 
+/* SWIM  WEST  */
+       19, 48, 4, 
+       8, 4, 8, 11, 0, 11, 0, 10, 
+       1, 60, 58, 76, 
+/* SWIM  EAST  */
+       19, 48, 3, 
+       8, 4, 8, 12, 0, 12, 0, 13, 
+       1, 60, 58, 76, 
+/* SWIM  EAST  */
+       11, 48, 3, 
+       8, 4, 8, 11, 
+       3, 26, 10, 23, 
+/* LOOK  PORT  */
+       18, 27, 43, 
+       4, 2, 15, 6, 8, 29, 16, 0, 
+       7, 134, 125, 
+/* LOOK  PORT  */
+       14, 27, 43, 
+       4, 2, 16, 6, 8, 29, 
+       7, 134, 124, 
+/* SWIM  ANY   */
+       10, 48, 0, 
+       8, 4, 0, 20, 
+       1, 58, 76, 
+/* LOOK  ROCK  */
+       23, 27, 60, 
+       3, 34, 14, 21, 14, 22, 0, 21, 9, 8, 
+       7, 34, 22, 74, 
+/* GO    SEA   */
+       23, 1, 39, 
+       4, 4, 0, 5, 0, 11, 0, 28, 0, 7, 
+       58, 54, 53, 58, 
+/* GO    SEA   */
+       19, 1, 39, 
+       4, 15, 0, 5, 0, 11, 0, 36, 
+       58, 54, 53, 76, 
+/* MOVE  BUNK  */
+       15, 64, 28, 
+       14, 70, 0, 70, 2, 16, 
+       21, 10, 22, 74, 
+/* GO    LADD  */
+       10, 1, 63, 
+       4, 2, 0, 16, 
+       1, 54, 76, 
+/* GO    TOP   */
+       10, 1, 66, 
+       4, 2, 0, 16, 
+       1, 54, 76, 
+/* LOOK  WATC  */
+       15, 27, 65, 
+       3, 37, 0, 1, 0, 1, 
+       35, 81, 78, 81, 
+/* LOOK  UP    */
+       14, 27, 5, 
+       8, 4, 8, 12, 9, 0, 
+       1, 7, 28, 
+/* GO    BEAC  */
+       19, 1, 49, 
+       2, 36, 0, 36, 0, 5, 0, 15, 
+       59, 60, 54, 76, 
+/* GO    CURR  */
+       4, 1, 52, 
+       2, 39, 
+       46, 
+/* READ  SIGN  */
+       6, 86, 31, 
+       3, 42, 
+       1, 7, 36, 
+/* GET   ROCK  */
+       13, 10, 60, 
+       4, 15, 14, 34, 0, 34, 
+       74, 1, 
+/* GET   ROCK  */
+       9, 10, 60, 
+       3, 34, 0, 34, 
+       74, 1, 
+/* MOVE  MATT  */
+       15, 64, 83, 
+       14, 24, 4, 1, 0, 24, 
+       21, 10, 22, 74, 
+/* LOOK  SHIP  */
+       15, 27, 11, 
+       8, 4, 8, 12, 8, 0, 
+       7, 28, 7, 139, 
+/* SAY   ANY   */
+       3, 49, 0, 
+       1, 85, 30, 29, 
+/* LOOK  ENGI  */
+       15, 27, 64, 
+       4, 17, 14, 49, 0, 49, 
+       21, 10, 22, 74, 
+/* GO    DOCK  */
+       15, 1, 45, 
+       2, 32, 0, 3, 0, 7, 
+       1, 54, 58, 76, 
+/* SWIM  ANY   */
+       4, 48, 0, 
+       8, 5, 
+       1, 
+/* LIST  ANY   */
+       9, 16, 0, 
+       9, 7, 9, 19, 
+       32, 114, 
+/* GO    CURR  */
+       4, 1, 52, 
+       2, 38, 
+       46, 
+/* DIG   ANY   */
+       5, 43, 0, 
+       3, 46, 
+       21, 30, 
+/* SAIL  SHIP  */
+       6, 73, 11, 
+       6, 15, 
+       3, 26, 51, 
+/* QUIT  ANY   */
+       0, 9, 0, 
+       63, 
+/* SWIM  ANY   */
+       1, 48, 0, 
+       30, 29, 
+/* LOOK  EAST  */
+       10, 27, 3, 
+       8, 4, 8, 11, 
+       1, 7, 37, 
+/* GO    SHIP  */
+       10, 1, 11, 
+       2, 63, 0, 23, 
+       1, 54, 76, 
+/* SAVE  GAME  */
+       1, 55, 53, 
+       1, 71, 
+/* LOOK  SHIP  */
+       13, 27, 11, 
+       8, 4, 8, 12, 9, 0, 
+       1, 116, 
+/* FEEL  SILT  */
+       19, 24, 62, 
+       2, 35, 8, 12, 14, 44, 0, 44, 
+       21, 10, 22, 74, 
+/* SAIL  SHIP  */
+       7, 73, 11, 
+       5, 52, 
+       3, 26, 102, 133, 
+/* SLEE  ANY   */
+       1, 69, 0, 
+       3, 26, 
+/* FEEL  ANY   */
+       5, 24, 0, 
+       4, 1, 
+       1, 43, 
+/* FIND  ANY   */
+       1, 33, 0, 
+       3, 41, 
+/* LOOK  SNAI  */
+       2, 27, 95, 
+       1, 7, 130, 
+/* LIST  ANY   */
+       2, 16, 0, 
+       32, 30, 31, 
+/* GO    TOP   */
+       0, 1, 66, 
+       44, 
+/* RUB   ANY   */
+       1, 46, 0, 
+       30, 29, 
+/* OPEN  OYST  */
+       9, 57, 93, 
+       3, 44, 0, 30, 
+       44, 58, 
+/* GET   MATT  */
+       2, 10, 83, 
+       3, 26, 107, 
+/* LOOK  IT    */
+       2, 27, 71, 
+       3, 26, 108, 
+/* GO    CRAW  */
+       14, 1, 16, 
+       2, 53, 11, 0, 0, 20, 
+       1, 54, 76, 
+/* GO    CRAW  */
+       11, 1, 16, 
+       2, 53, 10, 0, 
+       3, 26, 10, 111, 
+/* SCOR  ANY   */
+       5, 71, 0, 
+       9, 25, 
+       1, 112, 
+/* WAKE  UP    */
+       0, 44, 5, 
+       46, 
+/* GET   UP    */
+       10, 10, 5, 
+       4, 1, 0, 2, 
+       1, 54, 76, 
+/* READ  BOOK  */
+       14, 86, 38, 
+       3, 56, 9, 3, 9, 2, 
+       1, 7, 115, 
+/* GO    SEA   */
+       23, 1, 39, 
+       4, 19, 0, 5, 0, 11, 0, 28, 0, 7, 
+       58, 54, 53, 58, 
+/* SQUI  ANY   */
+       23, 80, 0, 
+       8, 2, 9, 3, 9, 4, 6, 18, 0, 2, 
+       60, 57, 76, 73, 
+/* AUTO  0     */
+       203, 
+       0, 18, 0, 2, 
+       60, 88, 58, 70, 
+/* OPEN  CHES  */
+       15, 57, 100, 
+       14, 56, 3, 64, 0, 56, 
+       7, 10, 74, 73, 
+/* AUTO  0     */
+       194, 
+       22, 7, 132, 
+/* DROP  GLUE  */
+       1, 18, 36, 
+       3, 26, 
+/* FOLD  GLAS  */
+       6, 8, 7, 
+       3, 1, 
+       117, 3, 26, 
+/* SQUI  ANY   */
+       5, 80, 0, 
+       8, 4, 
+       30, 29, 
+/* GO    HILL  */
+       5, 1, 10, 
+       4, 7, 
+       3, 46, 
+/* GO    LEDG  */
+       0, 1, 9, 
+       44, 
+/* DRIN  RUM   */
+       9, 7, 56, 
+       3, 41, 0, 41, 
+       1, 59, 
+/* ROLL  PAIN  */
+       11, 81, 24, 
+       3, 51, 0, 26, 
+       1, 117, 25, 58, 
+/* TO    OILS  */
+       22, 53, 79, 
+       3, 51, 3, 57, 8, 26, 0, 58, 0, 51, 
+       1, 72, 73, 
+/* AUTO  0     */
+       201, 
+       0, 57, 0, 26, 
+       59, 60, 
+/* UNRO  PAIN  */
+       18, 83, 24, 
+       3, 58, 0, 51, 0, 58, 0, 57, 
+       1, 72, 74, 
+/* ROLL  ANY   */
+       1, 81, 0, 
+       117, 118, 
+/* GO    FAN   */
+       11, 1, 81, 
+       2, 59, 9, 27, 
+       3, 26, 117, 121, 
+/* LOOK  FAN   */
+       10, 27, 81, 
+       2, 59, 8, 27, 
+       7, 122, 73, 
+/* AUTO  0     */
+       203, 
+       14, 60, 0, 60, 
+       21, 10, 22, 74, 
+/* SAIL  SHIP  */
+       23, 73, 11, 
+       4, 2, 13, 32, 0, 32, 0, 4, 0, 3, 
+       56, 72, 58, 73, 
+/* AUTO  0     */
+       203, 
+       0, 3, 0, 15, 
+       81, 83, 1, 135, 
+/* AUTO  0     */
+       199, 
+       15, 0, 
+       3, 136, 137, 61, 
+/* AUTO  0     */
+       199, 
+       0, 3, 
+       81, 88, 88, 88, 
+/* REMO  BLAD  */
+       22, 34, 84, 
+       14, 46, 8, 27, 2, 59, 3, 49, 0, 46, 
+       1, 22, 74, 
+/* LOOK  UP    */
+       15, 27, 5, 
+       8, 4, 8, 12, 8, 0, 
+       7, 28, 7, 139, 
+/* GO    HELM  */
+       5, 1, 69, 
+       4, 2, 
+       3, 133, 
+/* STOP  ENGI  */
+       13, 75, 64, 
+       4, 18, 8, 28, 0, 28, 
+       1, 60, 
+/* LOOK  SHIP  */
+       6, 27, 11, 
+       8, 7, 
+       7, 120, 73, 
+/* AUTO  0     */
+       204, 
+       15, 6, 16, 0, 8, 29, 
+       125, 
+/* AUTO  0     */
+       200, 
+       16, 6, 8, 29, 
+       124, 
+/* AUTO  0     */
+       196, 
+       9, 29, 
+       126, 
+/* LOOK  CEIL  */
+       15, 27, 86, 
+       4, 2, 14, 61, 0, 61, 
+       53, 7, 10, 76, 
+/* MOVE  BUTT  */
+       14, 64, 85, 
+       2, 61, 8, 29, 0, 29, 
+       1, 60, 127, 
+/* MOVE  BUTT  */
+       14, 64, 85, 
+       2, 61, 9, 29, 0, 29, 
+       1, 58, 127, 
+/* WAIT  ANY   */
+       19, 89, 0, 
+       0, 4, 0, 1, 0, 4, 0, 1, 
+       83, 81, 82, 81, 
+/* FEEL  SHIP  */
+       15, 24, 11, 
+       8, 4, 8, 12, 9, 0, 
+       7, 40, 67, 139, 
+/* MOVE  ANY   */
+       1, 64, 0, 
+       30, 29, 
+/* TO    ANY   */
+       11, 53, 0, 
+       0, 9, 0, 26, 
+       60, 60, 3, 26, 
+/* SAIL  SHIP  */
+       23, 73, 11, 
+       4, 2, 14, 32, 0, 32, 0, 4, 0, 3, 
+       73, 72, 60, 57, 
+/* AUTO  0     */
+       207, 
+       0, 3, 0, 15, 0, 31, 
+       81, 83, 1, 60, 
+/* AUTO  0     */
+       199, 
+       15, 0, 
+       3, 136, 137, 61, 
+/* AUTO  0     */
+       196, 
+       0, 3, 
+       81, 
+/* USE   SNAI  */
+       23, 59, 95, 
+       8, 30, 3, 44, 3, 67, 14, 66, 0, 66, 
+       1, 74, 131, 22, 
+/* LOOK  DOCK  */
+       15, 27, 45, 
+       4, 22, 14, 69, 0, 69, 
+       7, 10, 22, 74, 
+/* LOOK  UP    */
+       15, 27, 5, 
+       4, 22, 14, 69, 0, 69, 
+       7, 10, 22, 74, 
+/* FEEL  SILT  */
+       19, 24, 62, 
+       2, 35, 0, 22, 0, 2, 0, 18, 
+       39, 58, 58, 60, 
+/* GO    DOCK  */
+       10, 1, 45, 
+       2, 27, 0, 22, 
+       1, 54, 76, 
+/* STOP  ANY   */
+       0, 75, 0, 
+       44, 
+/* FEEL  ANY   */
+       1, 24, 0, 
+       30, 29, 
+/* OPEN  ANY   */
+       0, 57, 0, 
+       44, 
+/* SQUI  ANY   */
+       0, 80, 0, 
+       1, 
+/* LOOK  ANY   */
+       3, 27, 0, 
+       7, 30, 31, 76, 
+/* USE   ANY   */
+       1, 59, 0, 
+       3, 26, 
+/* GO    PORT  */
+       15, 1, 43, 
+       1, 2, 0, 1, 0, 2, 
+       24, 53, 73, 59, 
+/* AUTO  0     */
+       197, 
+       0, 2, 
+       58, 56, 
+/* AUTO  0     */
+       199, 
+       10, 0, 
+       3, 26, 10, 111, 
+/* AUTO  0     */
+       215, 
+       11, 0, 4, 19, 0, 2, 0, 48, 0, 45, 
+       1, 54, 72, 76, 
+/* AUTO  0     */
+       206, 
+       11, 0, 2, 48, 0, 19, 
+       1, 54, 76, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *WALK */
+       215, 65, 76, 75,
+       /* *FOLL */
+       198, 79, 76, 76,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *CLIM */
+       195, 76, 73, 77,
+       /* *CRAW */
+       195, 82, 65, 87,
+       /* DRIN */
+       68, 82, 73, 78,
+       /* FOLD */
+       70, 79, 76, 68,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* *HOLD */
+       200, 79, 76, 68,
+       /* *STAN */
+       211, 84, 65, 78,
+       /* LIST */
+       76, 73, 83, 84,
+       /* *HEAR */
+       200, 69, 65, 82,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *RELE */
+       210, 69, 76, 69,
+       /* *GIVE */
+       199, 73, 86, 69,
+       /* *THRO */
+       212, 72, 82, 79,
+       /* FEEL */
+       70, 69, 69, 76,
+       /* *TOUC */
+       212, 79, 85, 67,
+       /* *PROB */
+       208, 82, 79, 66,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *L */
+       204, 32, 32, 32,
+       /* *DESC */
+       196, 69, 83, 67,
+       /* . */
+       46, 32, 32, 32,
+       /* GLUE */
+       71, 76, 85, 69,
+       /* FIND */
+       70, 73, 78, 68,
+       /* REMO */
+       82, 69, 77, 79,
+       /* *UNSC */
+       213, 78, 83, 67,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* *DON */
+       196, 79, 78, 32,
+       /* *PUTO */
+       208, 85, 84, 79,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* *LEAP */
+       204, 69, 65, 80,
+       /* INVE */
+       73, 78, 86, 69,
+       /* *I */
+       201, 32, 32, 32,
+       /* DIG */
+       68, 73, 71, 32,
+       /* WAKE */
+       87, 65, 75, 69,
+       /* BREA */
+       66, 82, 69, 65,
+       /* RUB */
+       82, 85, 66, 32,
+       /* HYPE */
+       72, 89, 80, 69,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* SAY */
+       83, 65, 89, 32,
+       /* MAKE */
+       77, 65, 75, 69,
+       /* *MIX */
+       205, 73, 88, 32,
+       /* DIVE */
+       68, 73, 86, 69,
+       /* TO */
+       84, 79, 32, 32,
+       /* *IN */
+       201, 78, 32, 32,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* WAKE */
+       87, 65, 75, 69,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* *UNLO */
+       213, 78, 76, 79,
+       /* USE */
+       85, 83, 69, 32,
+       /* *WITH */
+       215, 73, 84, 72,
+       /* CLEA */
+       67, 76, 69, 65,
+       /* *WASH */
+       215, 65, 83, 72,
+       /* *RINS */
+       210, 73, 78, 83,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* *PUSH */
+       208, 85, 83, 72,
+       /* *PULL */
+       208, 85, 76, 76,
+       /* *LIFT */
+       204, 73, 70, 84,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* SLEE */
+       83, 76, 69, 69,
+       /* *EAT */
+       197, 65, 84, 32,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* HELP */
+       72, 69, 76, 80,
+       /* SAIL */
+       83, 65, 73, 76,
+       /* *DRIV */
+       196, 82, 73, 86,
+       /* STOP */
+       83, 84, 79, 80,
+       /* *SHUT */
+       211, 72, 85, 84,
+       /* EMPT */
+       69, 77, 80, 84,
+       /* SPIT */
+       83, 80, 73, 84,
+       /* YAWN */
+       89, 65, 87, 78,
+       /* SQUI */
+       83, 81, 85, 73,
+       /* ROLL */
+       82, 79, 76, 76,
+       /* *WRAP */
+       215, 82, 65, 80,
+       /* UNRO */
+       85, 78, 82, 79,
+       /* *UNWR */
+       213, 78, 87, 82,
+       /*  */
+       32, 32, 32, 32,
+       /* READ */
+       82, 69, 65, 68,
+       /* STAR */
+       83, 84, 65, 82,
+       /* *CRAN */
+       195, 82, 65, 78,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* *PAUS */
+       208, 65, 85, 83,
+       /*  */
+       32, 32, 32, 32,
+       /* CHAR */
+       67, 72, 65, 82,
+       /* *RECH */
+       210, 69, 67, 72,
+       /* *KILL */
+       203, 73, 76, 76,
+       /* *LIGH */
+       204, 73, 71, 72,
+       /* *BURN */
+       194, 85, 82, 78,
+       /* *TEAR */
+       212, 69, 65, 82,
+       /* *RIP */
+       210, 73, 80, 32,
+       /* *STAB */
+       211, 84, 65, 66,
+       /* *SHOR */
+       211, 72, 79, 82,
+       /* *FIX */
+       198, 73, 88, 32,
+       /* *REPA */
+       210, 69, 80, 65,
+       /* . */
+       46, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* GLAS */
+       71, 76, 65, 83,
+       /* LENS */
+       76, 69, 78, 83,
+       /* LEDG */
+       76, 69, 68, 71,
+       /* HILL */
+       72, 73, 76, 76,
+       /* SHIP */
+       83, 72, 73, 80,
+       /* *BOAT */
+       194, 79, 65, 84,
+       /* CRAC */
+       67, 82, 65, 67,
+       /* *CREV */
+       195, 82, 69, 86,
+       /* PIRA */
+       80, 73, 82, 65,
+       /* CRAW */
+       67, 82, 65, 87,
+       /* FRAM */
+       70, 82, 65, 77,
+       /* AROU */
+       65, 82, 79, 85,
+       /* DOUB */
+       68, 79, 85, 66,
+       /* STAM */
+       83, 84, 65, 77,
+       /* BOX */
+       66, 79, 88, 32,
+       /* SHED */
+       83, 72, 69, 68,
+       /* *TOOL */
+       212, 79, 79, 76,
+       /* PAIN */
+       80, 65, 73, 78,
+       /* *PICT */
+       208, 73, 67, 84,
+       /* *REMB */
+       210, 69, 77, 66,
+       /* *BLAC */
+       194, 76, 65, 67,
+       /* BUNK */
+       66, 85, 78, 75,
+       /* *BED */
+       194, 69, 68, 32,
+       /* BREA */
+       66, 82, 69, 65,
+       /* SIGN */
+       83, 73, 71, 78,
+       /* MASK */
+       77, 65, 83, 75,
+       /* *FACE */
+       198, 65, 67, 69,
+       /* HAMM */
+       72, 65, 77, 77,
+       /* DECK */
+       68, 69, 67, 75,
+       /* GLUE */
+       71, 76, 85, 69,
+       /* AMBE */
+       65, 77, 66, 69,
+       /* BOOK */
+       66, 79, 79, 75,
+       /* SEA */
+       83, 69, 65, 32,
+       /* *OCEA */
+       207, 67, 69, 65,
+       /* *WATE */
+       215, 65, 84, 69,
+       /* *POOL */
+       208, 79, 79, 76,
+       /* PORT */
+       80, 79, 82, 84,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* DOCK */
+       68, 79, 67, 75,
+       /* *BEAM */
+       194, 69, 65, 77,
+       /* DEEP */
+       68, 69, 69, 80,
+       /* CABI */
+       67, 65, 66, 73,
+       /* BEAC */
+       66, 69, 65, 67,
+       /* ALGA */
+       65, 76, 71, 65,
+       /* INVE */
+       73, 78, 86, 69,
+       /* CURR */
+       67, 85, 82, 82,
+       /* GAME */
+       71, 65, 77, 69,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* SHOV */
+       83, 72, 79, 86,
+       /* RUM */
+       82, 85, 77, 32,
+       /* CLOC */
+       67, 76, 79, 67,
+       /* *ALAR */
+       193, 76, 65, 82,
+       /* TORC */
+       84, 79, 82, 67,
+       /* ROCK */
+       82, 79, 67, 75,
+       /* EYES */
+       69, 89, 69, 83,
+       /* SILT */
+       83, 73, 76, 84,
+       /* LADD */
+       76, 65, 68, 68,
+       /* ENGI */
+       69, 78, 71, 73,
+       /* WATC */
+       87, 65, 84, 67,
+       /* TOP */
+       84, 79, 80, 32,
+       /* *TOPB */
+       212, 79, 80, 66,
+       /* *SUMM */
+       211, 85, 77, 77,
+       /* HELM */
+       72, 69, 76, 77,
+       /* PILI */
+       80, 73, 76, 73,
+       /* IT */
+       73, 84, 32, 32,
+       /* *OBJE */
+       207, 66, 74, 69,
+       /* *HAND */
+       200, 65, 78, 68,
+       /* YOHO */
+       89, 79, 72, 79,
+       /* SCRE */
+       83, 67, 82, 69,
+       /* MAP */
+       77, 65, 80, 32,
+       /* BACK */
+       66, 65, 67, 75,
+       /* EARR */
+       69, 65, 82, 82,
+       /* OILS */
+       79, 73, 76, 83,
+       /* *RAIN */
+       210, 65, 73, 78,
+       /* FAN */
+       70, 65, 78, 32,
+       /* BROO */
+       66, 82, 79, 79,
+       /* MATT */
+       77, 65, 84, 84,
+       /* BLAD */
+       66, 76, 65, 68,
+       /* BUTT */
+       66, 85, 84, 84,
+       /* CEIL */
+       67, 69, 73, 76,
+       /* *CIEL */
+       195, 73, 69, 76,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* *FLOO */
+       198, 76, 79, 79,
+       /* BATT */
+       66, 65, 84, 84,
+       /* DOLL */
+       68, 79, 76, 76,
+       /* ISLE */
+       73, 83, 76, 69,
+       /* OYST */
+       79, 89, 83, 84,
+       /* PEAR */
+       80, 69, 65, 82,
+       /* SNAI */
+       83, 78, 65, 73,
+       /* FLOT */
+       70, 76, 79, 84,
+       /* *JETS */
+       202, 69, 84, 83,
+       /* PIN */
+       80, 73, 78, 32,
+       /* RING */
+       82, 73, 78, 71,
+       /* CHES */
+       67, 72, 69, 83,
+       /* GAS */
+       71, 65, 83, 32,
+       /* *FUEL */
+       198, 85, 69, 76,
+       /* WIRE */
+       87, 73, 82, 69,
+       /* *RIM */
+       210, 73, 77, 32,
+       0,
+};
+const uint8_t automap[] = {
+       /* GLAS */
+       71, 76, 65, 83,
+       1,
+       /* SIGN */
+       83, 73, 71, 78,
+       3,
+       /* HAMM */
+       72, 65, 77, 77,
+       6,
+       /* BOX */
+       66, 79, 88, 32,
+       8,
+       /* STAM */
+       83, 84, 65, 77,
+       10,
+       /* DOUB */
+       68, 79, 85, 66,
+       11,
+       /* PAIN */
+       80, 65, 73, 78,
+       12,
+       /* FRAM */
+       70, 82, 65, 77,
+       13,
+       /* PAIN */
+       80, 65, 73, 78,
+       14,
+       /* MAP */
+       77, 65, 80, 32,
+       15,
+       /* MASK */
+       77, 65, 83, 75,
+       17,
+       /* WIRE */
+       87, 73, 82, 69,
+       19,
+       /* LENS */
+       76, 69, 78, 83,
+       20,
+       /* ALGA */
+       65, 76, 71, 65,
+       21,
+       /* GLUE */
+       71, 76, 85, 69,
+       22,
+       /* AMBE */
+       65, 77, 66, 69,
+       23,
+       /* BOOK */
+       66, 79, 79, 75,
+       24,
+       /* CLOC */
+       67, 76, 79, 67,
+       31,
+       /* ROCK */
+       82, 79, 67, 75,
+       34,
+       /* WATC */
+       87, 65, 84, 67,
+       37,
+       /* RUM */
+       82, 85, 77, 32,
+       41,
+       /* SIGN */
+       83, 73, 71, 78,
+       42,
+       /* OYST */
+       79, 89, 83, 84,
+       44,
+       /* BLAD */
+       66, 76, 65, 68,
+       46,
+       /* SCRE */
+       83, 67, 82, 69,
+       49,
+       /* PAIN */
+       80, 65, 73, 78,
+       50,
+       /* PAIN */
+       80, 65, 73, 78,
+       51,
+       /* SIGN */
+       83, 73, 71, 78,
+       54,
+       /* EARR */
+       69, 65, 82, 82,
+       55,
+       /* BOOK */
+       66, 79, 79, 75,
+       56,
+       /* OILS */
+       79, 73, 76, 83,
+       57,
+       /* PAIN */
+       80, 65, 73, 78,
+       58,
+       /* BROO */
+       66, 82, 79, 79,
+       60,
+       /* BOOK */
+       66, 79, 79, 75,
+       62,
+       /* CHES */
+       67, 72, 69, 83,
+       64,
+       /* DOLL */
+       68, 79, 76, 76,
+       65,
+       /* PEAR */
+       80, 69, 65, 82,
+       66,
+       /* SNAI */
+       83, 78, 65, 73,
+       67,
+       /* SNAI */
+       83, 78, 65, 73,
+       68,
+       /* PIN */
+       80, 73, 78, 32,
+       69,
+       /* RING */
+       82, 73, 78, 71,
+       70,
+       /* OYST */
+       79, 89, 83, 84,
+       71,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/adv14b.c b/Applications/games/adv14b.c
new file mode 100644 (file)
index 0000000..b16f1d3
--- /dev/null
@@ -0,0 +1,3285 @@
+#define NUM_OBJ 60
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 35;
+const uint8_t lightfill = 35;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 5;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 35;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+83, 116, 111, 114, 101, 114, 111, 111, 109, 44, 32, 99, 97, 110, 39, 116, 32, 103, 101, 116, 32, 104, 101, 114, 101, 0 };
+const uint8_t loctxt_1[] = {
+89, 111, 121, 111, 100, 121, 110, 101, 32, 111, 102, 102, 105, 99, 101, 0 };
+const uint8_t loctxt_2[] = {
+66, 97, 115, 101, 109, 101, 110, 116, 32, 76, 97, 98, 111, 114, 97, 116, 111, 114, 121, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 99, 111, 114, 110, 101, 114, 32, 111, 102, 32, 77, 97, 105, 110, 32, 38, 32, 72, 105, 99, 107, 111, 114, 121, 0 };
+const uint8_t loctxt_4[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 99, 111, 114, 110, 101, 114, 32, 111, 102, 32, 77, 97, 105, 110, 32, 38, 32, 77, 111, 117, 110, 116, 97, 105, 110, 32, 86, 105, 101, 119, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 97, 32, 104, 105, 103, 104, 119, 97, 121, 32, 97, 99, 99, 101, 115, 115, 32, 114, 97, 109, 112, 0 };
+const uint8_t loctxt_6[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 72, 105, 99, 107, 111, 114, 121, 32, 65, 118, 101, 0 };
+const uint8_t loctxt_7[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 72, 105, 99, 107, 111, 114, 121, 32, 65, 118, 101, 0 };
+const uint8_t loctxt_8[] = {
+71, 97, 115, 32, 83, 116, 97, 116, 105, 111, 110, 0 };
+const uint8_t loctxt_9[] = {
+67, 97, 115, 104, 105, 101, 114, 115, 32, 66, 111, 111, 116, 104, 0 };
+const uint8_t loctxt_10[] = {
+67, 117, 108, 45, 100, 101, 45, 115, 97, 99, 32, 97, 116, 32, 69, 97, 115, 116, 32, 101, 110, 100, 32, 111, 102, 32, 72, 105, 99, 107, 111, 114, 121, 0 };
+const uint8_t loctxt_11[] = {
+102, 105, 101, 108, 100, 32, 111, 102, 32, 116, 97, 108, 108, 32, 103, 114, 97, 115, 115, 0 };
+const uint8_t loctxt_12[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 102, 114, 101, 101, 119, 97, 121, 0 };
+const uint8_t loctxt_13[] = {
+115, 104, 101, 100, 32, 102, 117, 108, 108, 32, 111, 102, 32, 114, 97, 100, 105, 111, 32, 101, 113, 117, 105, 112, 109, 101, 110, 116, 0 };
+const uint8_t loctxt_14[] = {
+77, 105, 110, 101, 32, 83, 104, 97, 102, 116, 0 };
+const uint8_t loctxt_15[] = {
+67, 117, 108, 45, 100, 101, 45, 115, 97, 99, 32, 97, 116, 32, 87, 101, 115, 116, 32, 101, 110, 100, 32, 111, 102, 32, 72, 105, 99, 107, 111, 114, 121, 0 };
+const uint8_t loctxt_16[] = {
+108, 105, 118, 105, 110, 103, 32, 114, 111, 111, 109, 32, 111, 102, 32, 97, 32, 108, 97, 114, 103, 101, 32, 104, 111, 117, 115, 101, 0 };
+const uint8_t loctxt_17[] = {
+104, 97, 114, 100, 119, 97, 114, 101, 32, 115, 116, 111, 114, 101, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 101, 97, 115, 116, 32, 101, 110, 100, 32, 111, 102, 32, 97, 32, 112, 97, 114, 107, 105, 110, 103, 32, 108, 111, 116, 0 };
+const uint8_t loctxt_19[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 119, 101, 115, 116, 32, 101, 110, 100, 32, 111, 102, 32, 97, 32, 112, 97, 114, 107, 105, 110, 103, 32, 108, 111, 116, 0 };
+const uint8_t loctxt_20[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 98, 101, 97, 99, 104, 0 };
+const uint8_t loctxt_21[] = {
+99, 111, 108, 100, 32, 115, 104, 97, 108, 108, 111, 119, 32, 108, 97, 107, 101, 0 };
+const uint8_t loctxt_22[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 102, 111, 111, 116, 32, 111, 102, 32, 97, 32, 109, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t loctxt_23[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 109, 111, 117, 110, 116, 97, 105, 110, 32, 108, 101, 100, 103, 101, 0 };
+const uint8_t loctxt_24[] = {
+99, 97, 118, 101, 114, 110, 32, 105, 110, 115, 105, 100, 101, 32, 116, 104, 101, 32, 109, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t loctxt_25[] = {
+108, 105, 102, 101, 103, 117, 97, 114, 100, 32, 115, 104, 97, 99, 107, 0 };
+const uint8_t loctxt_26[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 103, 97, 114, 97, 103, 101, 32, 111, 102, 32, 97, 32, 108, 97, 114, 103, 101, 32, 104, 111, 117, 115, 101, 0 };
+const uint8_t loctxt_27[] = {
+0 };
+const uint8_t loctxt_28[] = {
+42, 73, 39, 109, 32, 98, 101, 104, 105, 110, 100, 32, 116, 104, 101, 32, 109, 111, 117, 110, 116, 97, 105, 110, 32, 111, 110, 32, 77, 111, 117, 110, 116, 97, 105, 110, 32, 86, 105, 101, 119, 0 };
+const uint8_t loctxt_29[] = {
+99, 111, 99, 107, 112, 105, 116, 32, 111, 102, 32, 116, 104, 101, 32, 106, 101, 116, 32, 99, 97, 114, 0 };
+const uint8_t loctxt_30[] = {
+0 };
+const uint8_t loctxt_31[] = {
+32, 32, 32, 32, 0 };
+const uint8_t loctxt_32[] = {
+0 };
+const uint8_t loctxt_33[] = {
+0 };
+const uint8_t loctxt_34[] = {
+0 };
+const uint8_t loctxt_35[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 104, 101, 114, 101, 97, 102, 116, 101, 114, 46, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 0, 3, 0, 0 } }, 
+               { loctxt_2,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_3,  { 4, 5, 6, 7, 0, 0 } }, 
+               { loctxt_4,  { 18, 3, 28, 28, 0, 0 } }, 
+               { loctxt_5,  { 3, 12, 11, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 10, 3, 0, 0 } }, 
+               { loctxt_7,  { 0, 0, 3, 15, 0, 0 } }, 
+               { loctxt_8,  { 0, 0, 3, 0, 0, 0 } }, 
+               { loctxt_9,  { 8, 0, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 0, 6, 0, 0 } }, 
+               { loctxt_11,  { 0, 0, 0, 5, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 12, 12, 0, 0 } }, 
+               { loctxt_13,  { 7, 0, 0, 0, 0, 0 } }, 
+               { loctxt_14,  { 0, 24, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 7, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 15, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 4, 0, 0, 0 } }, 
+               { loctxt_18,  { 22, 4, 0, 19, 0, 0 } }, 
+               { loctxt_19,  { 20, 0, 18, 0, 0, 0 } }, 
+               { loctxt_20,  { 21, 19, 0, 0, 0, 0 } }, 
+               { loctxt_21,  { 0, 20, 22, 0, 0, 0 } }, 
+               { loctxt_22,  { 0, 18, 0, 21, 0, 0 } }, 
+               { loctxt_23,  { 0, 0, 0, 0, 0, 22 } }, 
+               { loctxt_24,  { 14, 0, 0, 0, 0, 0 } }, 
+               { loctxt_25,  { 0, 0, 20, 0, 0, 0 } }, 
+               { loctxt_26,  { 0, 10, 0, 0, 0, 0 } }, 
+               { loctxt_27,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_28,  { 0, 0, 4, 4, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_31,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_32,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_33,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_34,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_35,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       2,
+       3,
+       3,
+       4,
+       23,
+       7,
+       10,
+       26,
+       24,
+       0,
+       15,
+       8,
+       8,
+       8,
+       9,
+       9,
+       1,
+       1,
+       0,
+       0,
+       0,
+       0,
+       0,
+       17,
+       0,
+       17,
+       17,
+       19,
+       0,
+       20,
+       25,
+       0,
+       24,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       29,
+       13,
+       0,
+       0,
+       34,
+       2,
+       20,
+       0,
+       50,
+       17,
+       14,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+83, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t objtxt_1[] = {
+89, 111, 121, 111, 100, 121, 110, 101, 32, 98, 117, 105, 108, 100, 105, 110, 103, 0 };
+const uint8_t objtxt_2[] = {
+71, 97, 115, 32, 83, 116, 97, 116, 105, 111, 110, 0 };
+const uint8_t objtxt_3[] = {
+72, 97, 114, 100, 119, 97, 114, 101, 32, 115, 116, 111, 114, 101, 0 };
+const uint8_t objtxt_4[] = {
+81, 117, 97, 114, 116, 122, 0 };
+const uint8_t objtxt_5[] = {
+83, 104, 101, 100, 32, 119, 105, 116, 104, 32, 97, 110, 116, 101, 110, 110, 97, 0 };
+const uint8_t objtxt_6[] = {
+76, 97, 114, 103, 101, 32, 104, 111, 117, 115, 101, 0 };
+const uint8_t objtxt_7[] = {
+83, 109, 97, 108, 108, 32, 116, 111, 111, 108, 98, 111, 120, 0 };
+const uint8_t objtxt_8[] = {
+77, 105, 110, 101, 32, 115, 104, 97, 102, 116, 0 };
+const uint8_t objtxt_9[] = {
+70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 32, 40, 111, 110, 41, 0 };
+const uint8_t objtxt_10[] = {
+76, 97, 114, 103, 101, 32, 104, 111, 117, 115, 101, 0 };
+const uint8_t objtxt_11[] = {
+71, 97, 115, 32, 80, 117, 109, 112, 115, 0 };
+const uint8_t objtxt_12[] = {
+67, 97, 115, 104, 105, 101, 114, 115, 32, 66, 111, 111, 116, 104, 0 };
+const uint8_t objtxt_13[] = {
+70, 105, 108, 108, 101, 114, 32, 112, 105, 112, 101, 32, 116, 111, 32, 117, 110, 100, 101, 114, 103, 114, 111, 117, 110, 100, 32, 103, 97, 115, 32, 116, 97, 110, 107, 0 };
+const uint8_t objtxt_14[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 67, 111, 110, 115, 111, 108, 101, 0 };
+const uint8_t objtxt_15[] = {
+84, 114, 97, 115, 104, 32, 80, 105, 108, 101, 0 };
+const uint8_t objtxt_16[] = {
+83, 116, 97, 105, 114, 99, 97, 115, 101, 32, 103, 111, 105, 110, 103, 32, 100, 111, 119, 110, 0 };
+const uint8_t objtxt_17[] = {
+84, 97, 98, 108, 101, 0 };
+const uint8_t objtxt_18[] = {
+70, 108, 111, 111, 114, 32, 115, 97, 102, 101, 0 };
+const uint8_t objtxt_19[] = {
+79, 108, 100, 32, 99, 97, 114, 32, 98, 97, 116, 116, 101, 114, 121, 0 };
+const uint8_t objtxt_20[] = {
+79, 112, 101, 110, 32, 116, 111, 111, 108, 98, 111, 120, 0 };
+const uint8_t objtxt_21[] = {
+75, 101, 121, 0 };
+const uint8_t objtxt_22[] = {
+82, 111, 108, 108, 32, 111, 102, 32, 100, 117, 99, 116, 32, 116, 97, 112, 101, 0 };
+const uint8_t objtxt_23[] = {
+67, 108, 105, 109, 98, 101, 114, 115, 32, 80, 105, 99, 107, 0 };
+const uint8_t objtxt_24[] = {
+85, 110, 108, 111, 99, 107, 101, 100, 32, 102, 105, 108, 108, 101, 114, 32, 112, 105, 112, 101, 0 };
+const uint8_t objtxt_25[] = {
+72, 121, 100, 114, 111, 109, 101, 116, 101, 114, 0 };
+const uint8_t objtxt_26[] = {
+77, 97, 110, 117, 97, 108, 32, 104, 97, 110, 100, 32, 112, 117, 109, 112, 0 };
+const uint8_t objtxt_27[] = {
+74, 101, 116, 32, 67, 97, 114, 0 };
+const uint8_t objtxt_28[] = {
+75, 101, 121, 0 };
+const uint8_t objtxt_29[] = {
+76, 105, 102, 101, 103, 117, 97, 114, 100, 32, 115, 104, 97, 99, 107, 0 };
+const uint8_t objtxt_30[] = {
+83, 109, 97, 108, 108, 32, 72, 97, 109, 32, 114, 97, 100, 105, 111, 0 };
+const uint8_t objtxt_31[] = {
+70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 32, 40, 111, 102, 102, 41, 0 };
+const uint8_t objtxt_32[] = {
+66, 111, 109, 98, 32, 104, 111, 117, 115, 105, 110, 103, 0 };
+const uint8_t objtxt_33[] = {
+69, 110, 118, 101, 108, 111, 112, 101, 0 };
+const uint8_t objtxt_34[] = {
+108, 97, 114, 103, 101, 32, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_35[] = {
+65, 110, 111, 116, 104, 101, 114, 32, 108, 97, 114, 103, 101, 32, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_36[] = {
+50, 48, 32, 102, 116, 32, 111, 102, 32, 112, 104, 111, 110, 101, 32, 108, 105, 110, 101, 0 };
+const uint8_t objtxt_37[] = {
+80, 104, 111, 110, 101, 32, 108, 105, 110, 101, 32, 100, 97, 110, 103, 108, 105, 110, 103, 32, 102, 114, 111, 109, 32, 97, 98, 111, 118, 101, 0 };
+const uint8_t objtxt_38[] = {
+81, 117, 97, 114, 116, 122, 0 };
+const uint8_t objtxt_39[] = {
+83, 104, 101, 101, 116, 32, 111, 102, 32, 112, 97, 112, 101, 114, 0 };
+const uint8_t objtxt_40[] = {
+70, 117, 101, 108, 32, 104, 111, 115, 101, 0 };
+const uint8_t objtxt_41[] = {
+70, 111, 114, 109, 117, 108, 97, 0 };
+const uint8_t objtxt_42[] = {
+68, 97, 115, 104, 98, 111, 97, 114, 100, 0 };
+const uint8_t objtxt_43[] = {
+65, 110, 116, 101, 110, 110, 97, 32, 108, 101, 97, 100, 0 };
+const uint8_t objtxt_44[] = {
+66, 97, 116, 116, 101, 114, 121, 32, 97, 116, 116, 97, 99, 104, 101, 100, 32, 116, 111, 32, 114, 97, 100, 105, 111, 0 };
+const uint8_t objtxt_45[] = {
+69, 109, 112, 116, 121, 32, 99, 104, 101, 109, 105, 99, 97, 108, 32, 74, 117, 103, 0 };
+const uint8_t objtxt_46[] = {
+74, 117, 103, 32, 111, 102, 32, 103, 97, 115, 111, 108, 105, 110, 101, 0 };
+const uint8_t objtxt_47[] = {
+77, 105, 120, 105, 110, 103, 32, 118, 97, 116, 0 };
+const uint8_t objtxt_48[] = {
+83, 97, 110, 100, 0 };
+const uint8_t objtxt_49[] = {
+74, 97, 114, 32, 111, 102, 32, 103, 108, 111, 119, 105, 110, 103, 32, 70, 108, 117, 105, 100, 0 };
+const uint8_t objtxt_50[] = {
+74, 117, 103, 32, 111, 102, 32, 106, 101, 116, 32, 102, 117, 101, 108, 0 };
+const uint8_t objtxt_51[] = {
+74, 117, 109, 112, 101, 114, 32, 67, 97, 98, 108, 101, 115, 0 };
+const uint8_t objtxt_52[] = {
+72, 101, 97, 118, 121, 32, 115, 116, 111, 110, 101, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_53[] = {
+32, 0 };
+const uint8_t objtxt_54[] = {
+0 };
+const uint8_t objtxt_55[] = {
+0 };
+const uint8_t objtxt_56[] = {
+0 };
+const uint8_t objtxt_57[] = {
+0 };
+const uint8_t objtxt_58[] = {
+0 };
+const uint8_t objtxt_59[] = {
+0 };
+const uint8_t objtxt_60[] = {
+0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+};
+const uint8_t msgtxt_0[] = {
+32, 32, 32, 32, 32, 32, 0 };
+const uint8_t msgtxt_1[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_2[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_3[] = {
+110, 111, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_4[] = {
+100, 97, 114, 107, 110, 101, 115, 115, 0 };
+const uint8_t msgtxt_5[] = {
+105, 116, 39, 115, 32, 112, 97, 100, 108, 111, 99, 107, 101, 100, 46, 0 };
+const uint8_t msgtxt_6[] = {
+116, 104, 101, 105, 114, 32, 116, 117, 114, 110, 101, 100, 32, 111, 102, 102, 46, 0 };
+const uint8_t msgtxt_7[] = {
+97, 32, 115, 119, 105, 116, 99, 104, 32, 116, 111, 32, 116, 104, 101, 32, 103, 97, 115, 32, 112, 117, 109, 112, 115, 46, 0 };
+const uint8_t msgtxt_8[] = {
+115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_9[] = {
+73, 32, 103, 111, 116, 0 };
+const uint8_t msgtxt_10[] = {
+105, 116, 39, 115, 32, 97, 32, 107, 101, 121, 32, 115, 97, 102, 101, 46, 0 };
+const uint8_t msgtxt_11[] = {
+116, 104, 101, 114, 101, 39, 115, 32, 110, 111, 0 };
+const uint8_t msgtxt_12[] = {
+119, 97, 116, 101, 114, 32, 105, 110, 32, 116, 104, 101, 32, 98, 97, 116, 116, 101, 114, 121, 46, 0 };
+const uint8_t msgtxt_13[] = {
+73, 32, 99, 97, 110, 39, 116, 44, 0 };
+const uint8_t msgtxt_14[] = {
+66, 97, 116, 116, 101, 114, 121, 32, 116, 101, 115, 116, 115, 58, 0 };
+const uint8_t msgtxt_15[] = {
+87, 101, 97, 107, 0 };
+const uint8_t msgtxt_16[] = {
+68, 101, 97, 100, 0 };
+const uint8_t msgtxt_17[] = {
+109, 111, 118, 101, 115, 0 };
+const uint8_t msgtxt_18[] = {
+116, 104, 101, 32, 104, 111, 115, 101, 32, 105, 115, 0 };
+const uint8_t msgtxt_19[] = {
+65, 110, 32, 97, 116, 111, 109, 105, 99, 32, 101, 120, 112, 108, 111, 115, 105, 111, 110, 32, 101, 114, 117, 112, 116, 115, 46, 0 };
+const uint8_t msgtxt_20[] = {
+104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_21[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_22[] = {
+83, 116, 105, 99, 107, 101, 114, 32, 115, 97, 121, 115, 58, 32, 83, 97, 109, 39, 115, 32, 83, 101, 114, 118, 105, 99, 101, 32, 83, 116, 97, 116, 105, 111, 110, 46, 0 };
+const uint8_t msgtxt_23[] = {
+116, 104, 101, 32, 107, 101, 121, 32, 100, 111, 101, 115, 110, 39, 116, 32, 102, 105, 116, 46, 0 };
+const uint8_t msgtxt_24[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 110, 111, 32, 98, 97, 116, 116, 101, 114, 121, 0 };
+const uint8_t msgtxt_25[] = {
+98, 97, 116, 116, 101, 114, 121, 115, 32, 97, 114, 101, 32, 100, 101, 97, 100, 0 };
+const uint8_t msgtxt_26[] = {
+66, 111, 109, 98, 32, 97, 99, 107, 110, 111, 119, 108, 101, 100, 103, 101, 115, 32, 99, 111, 100, 101, 0 };
+const uint8_t msgtxt_27[] = {
+84, 104, 101, 32, 101, 97, 114, 116, 104, 32, 105, 115, 32, 115, 97, 102, 101, 32, 97, 103, 97, 105, 110, 46, 0 };
+const uint8_t msgtxt_28[] = {
+109, 97, 114, 107, 101, 100, 32, 39, 82, 70, 73, 32, 83, 104, 105, 101, 108, 100, 39, 32, 105, 115, 0 };
+const uint8_t msgtxt_29[] = {
+97, 32, 115, 119, 105, 116, 99, 104, 0 };
+const uint8_t msgtxt_30[] = {
+108, 105, 103, 104, 116, 0 };
+const uint8_t msgtxt_31[] = {
+111, 102, 102, 0 };
+const uint8_t msgtxt_32[] = {
+111, 110, 0 };
+const uint8_t msgtxt_33[] = {
+78, 111, 116, 32, 116, 111, 32, 116, 104, 97, 116, 46, 0 };
+const uint8_t msgtxt_34[] = {
+97, 110, 100, 32, 97, 110, 32, 101, 110, 118, 101, 108, 111, 112, 101, 0 };
+const uint8_t msgtxt_35[] = {
+119, 111, 114, 107, 0 };
+const uint8_t msgtxt_36[] = {
+83, 99, 111, 116, 116, 32, 119, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 46, 0 };
+const uint8_t msgtxt_37[] = {
+97, 32, 108, 101, 100, 103, 101, 32, 97, 98, 111, 117, 116, 32, 49, 53, 39, 32, 117, 112, 32, 119, 105, 116, 104, 32, 97, 32, 115, 109, 97, 108, 108, 32, 112, 101, 97, 107, 46, 0 };
+const uint8_t msgtxt_38[] = {
+97, 110, 32, 117, 110, 100, 101, 114, 103, 114, 111, 117, 110, 100, 32, 112, 104, 111, 110, 101, 32, 108, 105, 110, 101, 46, 0 };
+const uint8_t msgtxt_39[] = {
+116, 104, 101, 32, 108, 105, 110, 101, 32, 105, 115, 32, 115, 101, 118, 101, 114, 101, 100, 46, 0 };
+const uint8_t msgtxt_40[] = {
+78, 111, 116, 32, 119, 105, 116, 104, 32, 116, 104, 101, 115, 101, 32, 104, 97, 110, 100, 115, 46, 0 };
+const uint8_t msgtxt_41[] = {
+119, 104, 105, 108, 101, 32, 99, 97, 114, 114, 121, 105, 110, 103, 32, 97, 110, 121, 116, 104, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_42[] = {
+105, 116, 39, 115, 32, 115, 116, 105, 108, 108, 32, 97, 116, 116, 97, 99, 104, 101, 100, 46, 0 };
+const uint8_t msgtxt_43[] = {
+84, 111, 32, 119, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_44[] = {
+73, 116, 39, 115, 32, 105, 109, 98, 101, 100, 100, 101, 100, 32, 105, 110, 32, 114, 111, 99, 107, 0 };
+const uint8_t msgtxt_45[] = {
+68, 105, 115, 97, 114, 109, 32, 67, 111, 100, 101, 58, 32, 49, 61, 87, 97, 114, 102, 105, 110, 32, 50, 61, 89, 111, 121, 111, 100, 121, 110, 101, 0 };
+const uint8_t msgtxt_46[] = {
+84, 104, 101, 32, 99, 111, 99, 107, 112, 105, 116, 32, 105, 115, 0 };
+const uint8_t msgtxt_47[] = {
+111, 112, 101, 110, 0 };
+const uint8_t msgtxt_48[] = {
+99, 108, 111, 115, 101, 100, 0 };
+const uint8_t msgtxt_49[] = {
+97, 32, 102, 117, 101, 108, 32, 116, 97, 110, 107, 32, 97, 110, 100, 32, 97, 32, 106, 101, 116, 32, 101, 110, 103, 105, 110, 101, 0 };
+const uint8_t msgtxt_50[] = {
+72, 111, 119, 63, 0 };
+const uint8_t msgtxt_51[] = {
+115, 116, 97, 114, 116, 101, 114, 32, 98, 117, 116, 116, 111, 110, 32, 38, 32, 103, 108, 111, 118, 101, 32, 99, 111, 109, 112, 97, 114, 116, 109, 101, 110, 116, 46, 0 };
+const uint8_t msgtxt_52[] = {
+70, 117, 101, 108, 32, 103, 97, 117, 103, 101, 32, 114, 101, 97, 100, 115, 0 };
+const uint8_t msgtxt_53[] = {
+102, 117, 108, 108, 0 };
+const uint8_t msgtxt_54[] = {
+101, 109, 112, 116, 121, 0 };
+const uint8_t msgtxt_55[] = {
+70, 117, 101, 108, 32, 105, 115, 32, 109, 97, 100, 101, 32, 102, 114, 111, 109, 0 };
+const uint8_t msgtxt_56[] = {
+103, 97, 115, 111, 108, 105, 110, 101, 44, 32, 115, 97, 110, 100, 44, 32, 113, 117, 97, 114, 116, 122, 44, 32, 99, 97, 116, 97, 108, 121, 115, 116, 46, 0 };
+const uint8_t msgtxt_57[] = {
+97, 32, 116, 114, 97, 110, 115, 109, 105, 116, 32, 115, 119, 105, 116, 99, 104, 0 };
+const uint8_t msgtxt_58[] = {
+73, 32, 104, 101, 97, 114, 32, 116, 104, 101, 32, 98, 111, 109, 98, 32, 119, 105, 108, 108, 32, 101, 120, 112, 108, 111, 100, 101, 32, 105, 110, 0 };
+const uint8_t msgtxt_59[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 110, 111, 32, 97, 110, 116, 101, 110, 110, 97, 0 };
+const uint8_t msgtxt_60[] = {
+73, 110, 32, 50, 32, 119, 111, 114, 100, 115, 44, 32, 99, 111, 110, 110, 101, 99, 116, 32, 116, 111, 32, 119, 104, 97, 116, 63, 44, 32, 105, 46, 101, 46, 32, 67, 79, 78, 78, 69, 67, 84, 32, 80, 73, 80, 69, 0 };
+const uint8_t msgtxt_61[] = {
+73, 116, 39, 115, 32, 110, 111, 116, 32, 119, 111, 114, 107, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_62[] = {
+84, 111, 32, 116, 114, 97, 110, 115, 109, 105, 116, 32, 115, 97, 121, 32, 34, 84, 82, 65, 78, 83, 77, 73, 84, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 34, 0 };
+const uint8_t msgtxt_63[] = {
+54, 0 };
+const uint8_t msgtxt_64[] = {
+49, 48, 0 };
+const uint8_t msgtxt_65[] = {
+102, 116, 32, 108, 111, 110, 103, 0 };
+const uint8_t msgtxt_66[] = {
+105, 116, 32, 119, 111, 110, 39, 116, 32, 115, 116, 97, 121, 0 };
+const uint8_t msgtxt_67[] = {
+116, 97, 112, 101, 32, 104, 111, 108, 100, 115, 32, 105, 116, 0 };
+const uint8_t msgtxt_68[] = {
+97, 116, 116, 97, 99, 104, 101, 100, 32, 116, 111, 32, 112, 117, 109, 112, 46, 0 };
+const uint8_t msgtxt_69[] = {
+73, 116, 32, 100, 111, 101, 115, 110, 39, 116, 0 };
+const uint8_t msgtxt_70[] = {
+114, 101, 97, 99, 104, 32, 116, 104, 101, 32, 103, 97, 115, 111, 108, 105, 110, 101, 46, 0 };
+const uint8_t msgtxt_71[] = {
+73, 116, 32, 100, 111, 101, 115, 0 };
+const uint8_t msgtxt_72[] = {
+73, 32, 108, 111, 115, 101, 32, 105, 116, 32, 105, 110, 32, 116, 104, 101, 32, 116, 97, 110, 107, 46, 0 };
+const uint8_t msgtxt_73[] = {
+99, 111, 110, 110, 101, 99, 116, 101, 100, 32, 98, 121, 32, 97, 32, 104, 111, 115, 101, 46, 0 };
+const uint8_t msgtxt_74[] = {
+67, 97, 114, 32, 99, 97, 116, 99, 104, 101, 115, 32, 102, 105, 114, 101, 32, 97, 110, 100, 32, 98, 108, 111, 119, 115, 32, 117, 112, 46, 0 };
+const uint8_t msgtxt_75[] = {
+73, 39, 109, 32, 102, 114, 105, 101, 100, 32, 66, 97, 110, 122, 97, 105, 46, 0 };
+const uint8_t msgtxt_76[] = {
+69, 110, 103, 105, 110, 101, 32, 105, 115, 32, 105, 100, 108, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_77[] = {
+112, 111, 119, 101, 114, 32, 116, 101, 114, 109, 105, 110, 97, 108, 115, 44, 0 };
+const uint8_t msgtxt_78[] = {
+73, 32, 100, 114, 105, 118, 101, 32, 116, 111, 32, 77, 97, 105, 110, 32, 83, 116, 32, 102, 111, 114, 32, 97, 116, 116, 101, 109, 112, 116, 32, 116, 111, 32, 109, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t msgtxt_79[] = {
+73, 32, 103, 111, 32, 116, 104, 114, 117, 32, 100, 111, 111, 114, 46, 32, 83, 108, 97, 109, 33, 33, 33, 0 };
+const uint8_t msgtxt_80[] = {
+99, 111, 110, 116, 97, 105, 110, 101, 114, 0 };
+const uint8_t msgtxt_81[] = {
+73, 32, 100, 114, 105, 118, 101, 32, 105, 110, 116, 111, 32, 109, 111, 117, 110, 116, 97, 105, 110, 46, 0 };
+const uint8_t msgtxt_82[] = {
+117, 110, 100, 101, 114, 32, 115, 116, 97, 105, 114, 115, 44, 32, 73, 32, 103, 101, 116, 32, 105, 116, 46, 0 };
+const uint8_t msgtxt_83[] = {
+34, 66, 117, 99, 107, 97, 114, 111, 111, 32, 66, 97, 110, 122, 97, 105, 34, 0 };
+const uint8_t msgtxt_84[] = {
+65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 98, 121, 32, 83, 99, 111, 116, 116, 32, 65, 100, 97, 109, 115, 32, 38, 32, 80, 104, 105, 108, 108, 105, 112, 32, 67, 97, 115, 101, 0 };
+const uint8_t msgtxt_85[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 100, 111, 32, 116, 104, 97, 116, 46, 46, 46, 121, 101, 116, 0 };
+const uint8_t msgtxt_86[] = {
+114, 101, 115, 105, 100, 117, 101, 32, 105, 110, 115, 105, 100, 101, 32, 105, 116, 46, 0 };
+const uint8_t msgtxt_87[] = {
+105, 116, 39, 115, 32, 99, 108, 101, 97, 110, 46, 0 };
+const uint8_t msgtxt_88[] = {
+78, 111, 32, 102, 111, 114, 109, 117, 108, 97, 33, 0 };
+const uint8_t msgtxt_89[] = {
+105, 115, 32, 109, 105, 115, 115, 105, 110, 103, 46, 0 };
+const uint8_t msgtxt_90[] = {
+0 };
+const uint8_t msgtxt_91[] = {
+0 };
+const uint8_t msgtxt_92[] = {
+0 };
+const uint8_t msgtxt_93[] = {
+0 };
+const uint8_t msgtxt_94[] = {
+0 };
+const uint8_t msgtxt_95[] = {
+0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+       msgtxt_92,
+       msgtxt_93,
+       msgtxt_94,
+       msgtxt_95,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       183, 
+       7, 2, 7, 24, 8, 15, 9, 6, 7, 14, 
+       67, 0, 0, 73, 
+/* AUTO  0     */
+       203, 
+       8, 0, 0, 27, 
+       60, 68, 57, 64, 
+/* AUTO  100   */
+       178, 
+       8, 16, 9, 28, 0, 31, 0, 28, 
+       52, 58, 64, 
+/* AUTO  100   */
+       178, 
+       4, 24, 6, 9, 9, 27, 0, 27, 
+       56, 58, 64, 
+/* AUTO  100   */
+       168, 
+       1, 30, 0, 14, 
+       60, 
+/* AUTO  100   */
+       183, 
+       2, 43, 2, 44, 8, 30, 8, 14, 0, 1, 
+       108, 81, 78, 73, 
+/* AUTO  0     */
+       197, 
+       0, 1, 
+       81, 17, 
+/* AUTO  100   */
+       172, 
+       2, 30, 1, 44, 0, 44, 
+       53, 
+/* AUTO  100   */
+       172, 
+       2, 44, 1, 30, 0, 44, 
+       74, 
+/* AUTO  100   */
+       179, 
+       9, 2, 64, 238, 0, 4, 0, 1, 
+       79, 58, 81, 73, 
+/* AUTO  0     */
+       198, 
+       0, 2, 
+       58, 133, 134, 
+/* AUTO  100   */
+       164, 
+       0, 1, 
+       81, 
+/* AUTO  100   */
+       171, 
+       19, 0, 0, 35, 
+       54, 64, 19, 125, 
+/* AUTO  100   */
+       164, 
+       0, 1, 
+       81, 
+/* AUTO  100   */
+       170, 
+       0, 1, 0, 1, 
+       81, 77, 81, 
+/* AUTO  100   */
+       172, 
+       7, 8, 1, 26, 0, 12, 
+       60, 
+/* AUTO  100   */
+       164, 
+       4, 35, 
+       63, 
+/* AUTO  100   */
+       173, 
+       1, 51, 0, 9, 0, 10, 
+       60, 60, 
+/* AUTO  100   */
+       168, 
+       1, 27, 0, 10, 
+       60, 
+/* AUTO  100   */
+       180, 
+       8, 9, 8, 10, 8, 11, 8, 31, 0, 30, 
+       58, 
+/* AUTO  100   */
+       169, 
+       4, 14, 9, 9, 
+       56, 64, 
+/* AUTO  100   */
+       182, 
+       9, 3, 4, 12, 0, 3, 0, 2, 0, 1, 
+       58, 79, 81, 
+/* AUTO  100   */
+       170, 
+       4, 28, 0, 6, 
+       60, 57, 64, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+};
+const uint8_t actions[] = {
+/* PUMP  ANY   */
+       7, 50, 0, 
+       6, 45, 
+       13, 11, 104, 130, 
+/* STAR  PUMP  */
+       255, 49, 18, 
+       4, 0, 
+/* FIND  ANY   */
+       255, 51, 0, 
+       4, 0, 
+/* PUSH  COCK  */
+       9, 66, 59, 
+       4, 14, 0, 28, 
+       129, 54, 
+/* UNCO  HOSE  */
+       23, 52, 57, 
+       1, 26, 8, 13, 0, 13, 0, 12, 0, 40, 
+       60, 60, 74, 1, 
+/* PUMP  GAS   */
+       23, 50, 71, 
+       8, 12, 2, 24, 1, 45, 0, 46, 0, 45, 
+       1, 72, 67, 73, 
+/* AUTO  0     */
+       201, 
+       8, 0, 0, 20, 
+       68, 58, 
+/* PUT   HOSE  */
+       18, 43, 57, 
+       2, 24, 1, 26, 8, 13, 0, 12, 
+       121, 120, 58, 
+/* PUT   HOSE  */
+       14, 43, 57, 
+       2, 24, 1, 40, 0, 40, 
+       1, 122, 59, 
+/* PUT   HOSE  */
+       13, 43, 57, 
+       2, 24, 1, 26, 9, 13, 
+       119, 120, 
+/* CONN  HOSE  */
+       23, 38, 57, 
+       1, 40, 1, 26, 1, 22, 0, 13, 0, 40, 
+       58, 117, 118, 59, 
+/* CONN  HOSE  */
+       13, 38, 57, 
+       1, 40, 1, 26, 6, 22, 
+       116, 118, 
+/* CONN  PUMP  */
+       4, 38, 18, 
+       1, 26, 
+       110, 
+/* LOOK  PUMP  */
+       11, 5, 18, 
+       3, 26, 8, 13, 
+       2, 18, 114, 115, 
+/* LOOK  PUMP  */
+       11, 5, 18, 
+       3, 26, 9, 13, 
+       2, 18, 113, 115, 
+/* TRAN  WARF  */
+       19, 41, 70, 
+       4, 13, 8, 14, 8, 29, 8, 30, 
+       67, 0, 0, 73, 
+/* AUTO  0     */
+       203, 
+       8, 0, 9, 1, 
+       3, 8, 20, 73, 
+/* AUTO  0     */
+       203, 
+       8, 0, 9, 1, 
+       68, 0, 0, 73, 
+/* AUTO  0     */
+       202, 
+       8, 0, 0, 17, 
+       26, 68, 58, 
+/* TRAN  YOYO  */
+       23, 41, 10, 
+       4, 13, 8, 14, 8, 17, 8, 29, 8, 30, 
+       1, 26, 27, 63, 
+/* GO    STAT  */
+       9, 1, 7, 
+       2, 2, 0, 8, 
+       54, 1, 
+/* GO    BOOT  */
+       9, 1, 8, 
+       2, 12, 0, 9, 
+       54, 1, 
+/* GO    YOYO  */
+       9, 1, 10, 
+       2, 1, 0, 1, 
+       54, 1, 
+/* LOOK  STAI  */
+       5, 5, 12, 
+       2, 16, 
+       2, 4, 
+/* GO    STAI  */
+       11, 1, 12, 
+       2, 16, 0, 2, 
+       54, 1, 56, 64, 
+/* LOOK  PIPE  */
+       5, 5, 13, 
+       2, 13, 
+       2, 5, 
+/* GO    HOUS  */
+       9, 1, 15, 
+       2, 10, 0, 16, 
+       54, 1, 
+/* GO    HOUS  */
+       9, 1, 15, 
+       2, 6, 0, 26, 
+       54, 1, 
+/* GO    HARD  */
+       9, 1, 16, 
+       2, 3, 0, 17, 
+       54, 1, 
+/* LOOK  PUMP  */
+       5, 5, 18, 
+       2, 11, 
+       2, 6, 
+/* LOOK  CONS  */
+       5, 5, 19, 
+       2, 14, 
+       2, 7, 
+/* PUSH  SWIT  */
+       5, 66, 21, 
+       2, 14, 
+       3, 20, 
+/* PUSH  TABL  */
+       13, 66, 25, 
+       2, 17, 0, 18, 0, 1, 
+       62, 1, 
+/* THRO  SWIT  */
+       5, 64, 21, 
+       2, 14, 
+       3, 20, 
+/* SLID  TABL  */
+       13, 73, 25, 
+       2, 17, 0, 18, 0, 1, 
+       62, 1, 
+/* LOOK  PILE  */
+       19, 5, 23, 
+       2, 15, 17, 19, 0, 19, 0, 9, 
+       62, 1, 2, 21, 
+/* OPEN  TOOL  */
+       23, 19, 29, 
+       3, 7, 17, 22, 0, 7, 0, 20, 0, 21, 
+       72, 74, 0, 73, 
+/* AUTO  0     */
+       203, 
+       0, 22, 0, 31, 
+       74, 74, 9, 21, 
+/* LOOK  DOWN  */
+       5, 5, 6, 
+       4, 1, 
+       2, 4, 
+/* OPEN  PIPE  */
+       17, 19, 13, 
+       2, 13, 1, 21, 0, 24, 0, 13, 
+       72, 1, 
+/* LOOK  SAFE  */
+       5, 5, 35, 
+       2, 18, 
+       2, 10, 
+/* GET   BATT  */
+       18, 10, 26, 
+       2, 44, 0, 44, 0, 29, 0, 19, 
+       59, 60, 74, 
+/* GET   BATT  */
+       8, 10, 26, 
+       2, 19, 0, 19, 
+       52, 
+/* DROP  BATT  */
+       18, 18, 26, 
+       1, 44, 0, 44, 0, 19, 0, 14, 
+       59, 53, 60, 
+/* DROP  BATT  */
+       8, 18, 26, 
+       1, 19, 0, 19, 
+       53, 
+/* GO    SHAC  */
+       9, 1, 42, 
+       4, 20, 0, 25, 
+       1, 54, 
+/* FUEL  BATT  */
+       13, 46, 26, 
+       3, 19, 4, 21, 0, 31, 
+       58, 1, 
+/* LOOK  BATT  */
+       10, 5, 26, 
+       3, 19, 9, 31, 
+       2, 11, 12, 
+/* LOOK  BATT  */
+       9, 5, 26, 
+       3, 19, 8, 31, 
+       2, 12, 
+/* LOOK  TOOL  */
+       4, 5, 29, 
+       3, 7, 
+       22, 
+/* CHEC  BATT  */
+       13, 23, 26, 
+       3, 19, 1, 25, 8, 30, 
+       14, 15, 
+/* CHEC  BATT  */
+       13, 23, 26, 
+       3, 19, 1, 25, 9, 30, 
+       14, 16, 
+/* CHEC  BATT  */
+       13, 23, 26, 
+       3, 22, 1, 25, 8, 30, 
+       14, 15, 
+/* CHEC  BATT  */
+       13, 23, 26, 
+       3, 44, 1, 25, 9, 30, 
+       14, 16, 
+/* LOOK  GLOV  */
+       15, 5, 62, 
+       4, 29, 9, 18, 0, 41, 
+       9, 21, 74, 73, 
+/* AUTO  0     */
+       201, 
+       0, 18, 0, 49, 
+       58, 74, 
+/* LIGH  ON    */
+       9, 25, 44, 
+       8, 16, 3, 31, 
+       13, 25, 
+/* LIGH  ON    */
+       14, 25, 44, 
+       3, 31, 0, 9, 0, 31, 
+       72, 64, 1, 
+/* LIGH  OFF   */
+       14, 25, 45, 
+       3, 9, 0, 9, 0, 31, 
+       72, 64, 1, 
+/* LOOK  BOMB  */
+       15, 5, 48, 
+       4, 24, 1, 9, 9, 1, 
+       2, 30, 28, 73, 
+/* AUTO  0     */
+       194, 
+       32, 2, 29, 
+/* AUTO  0     */
+       196, 
+       17, 33, 
+       34, 
+/* PUSH  SWIT  */
+       15, 66, 21, 
+       4, 24, 1, 9, 0, 1, 
+       58, 2, 21, 20, 
+/* LOOK  BOMB  */
+       15, 5, 48, 
+       4, 24, 1, 9, 8, 1, 
+       30, 28, 31, 73, 
+/* AUTO  0     */
+       196, 
+       17, 33, 
+       34, 
+/* GET   ENVE  */
+       17, 10, 34, 
+       4, 24, 17, 33, 1, 9, 0, 33, 
+       1, 52, 
+/* AUTO  0     */
+/* OPEN  ENVE  */
+       14, 19, 34, 
+       1, 33, 6, 28, 0, 28, 
+       9, 21, 74, 
+/* LOOK  MOUN  */
+       5, 5, 52, 
+       4, 22, 
+       2, 37, 
+/* DIG   ANY   */
+       19, 84, 0, 
+       4, 11, 1, 23, 9, 26, 0, 26, 
+       58, 1, 0, 73, 
+/* AUTO  0     */
+       200, 
+       0, 34, 0, 11, 
+       62, 
+/* DIG   ANY   */
+       21, 84, 0, 
+       8, 26, 1, 23, 4, 11, 0, 35, 0, 11, 
+       62, 1, 
+/* LOOK  HOLE  */
+       9, 5, 54, 
+       2, 34, 17, 36, 
+       2, 38, 
+/* CUT   LINE  */
+       22, 27, 55, 
+       2, 34, 1, 23, 9, 25, 0, 25, 17, 36, 
+       2, 39, 58, 
+/* CUT   LINE  */
+       22, 27, 55, 
+       2, 35, 8, 25, 1, 23, 0, 24, 17, 36, 
+       58, 2, 39, 
+/* PUSH  LINE  */
+       19, 66, 55, 
+       2, 35, 8, 24, 17, 36, 0, 36, 
+       52, 1, 9, 21, 
+/* GET   LINE  */
+       17, 10, 55, 
+       2, 35, 8, 24, 17, 36, 0, 36, 
+       52, 1, 
+/* THRO  LINE  */
+       17, 64, 55, 
+       1, 36, 4, 22, 0, 36, 0, 37, 
+       59, 53, 
+/* CLIM  LINE  */
+       9, 34, 55, 
+       2, 37, 10, 0, 
+       13, 41, 
+/* CLIM  LINE  */
+       13, 34, 55, 
+       2, 37, 11, 0, 0, 23, 
+       54, 1, 
+/* TIE   LINE  */
+       4, 36, 55, 
+       2, 37, 
+       43, 
+/* TO    PICK  */
+       18, 37, 51, 
+       2, 37, 3, 23, 0, 23, 0, 23, 
+       1, 58, 59, 
+/* AUTO  0     */
+/* GET   QUAR  */
+       13, 10, 53, 
+       4, 23, 6, 23, 2, 4, 
+       13, 44, 
+/* GET   QUAR  */
+       22, 10, 53, 
+       1, 23, 4, 23, 2, 4, 0, 4, 0, 38, 
+       1, 59, 52, 
+/* OPEN  SAFE  */
+       15, 19, 35, 
+       1, 28, 2, 18, 0, 39, 
+       52, 1, 9, 21, 
+/* LOOK  PAPE  */
+       5, 5, 50, 
+       1, 39, 
+       2, 45, 
+/* LOOK  CAR   */
+       7, 5, 39, 
+       2, 27, 
+       2, 46, 47, 73, 
+/* AUTO  0     */
+       194, 
+       2, 127, 49, 
+/* AUTO  0     */
+       196, 
+       9, 21, 
+       123, 
+/* AUTO  0     */
+       196, 
+       8, 11, 
+       126, 
+/* GET   HOSE  */
+       22, 10, 57, 
+       2, 27, 9, 21, 9, 11, 0, 40, 0, 21, 
+       52, 58, 1, 
+/* GET   HOSE  */
+       9, 10, 57, 
+       2, 40, 0, 40, 
+       52, 1, 
+/* REPL  HOSE  */
+       18, 32, 57, 
+       1, 40, 2, 27, 0, 21, 0, 40, 
+       1, 60, 59, 
+/* GO    COCK  */
+       9, 1, 59, 
+       2, 27, 0, 29, 
+       54, 1, 
+/* CLOS  COCK  */
+       13, 35, 59, 
+       4, 29, 9, 22, 0, 22, 
+       1, 58, 
+/* LOOK  DASH  */
+       7, 5, 64, 
+       4, 29, 
+       2, 51, 46, 73, 
+/* AUTO  0     */
+       197, 
+       9, 22, 
+       47, 102, 
+/* AUTO  0     */
+       197, 
+       8, 22, 
+       48, 102, 
+/* AUTO  0     */
+       196, 
+       8, 19, 
+       103, 
+/* AUTO  0     */
+       196, 
+       8, 8, 
+       103, 
+/* AUTO  0     */
+       200, 
+       9, 19, 9, 8, 
+       104, 
+/* OPEN  GLOV  */
+       15, 19, 62, 
+       4, 29, 9, 18, 0, 41, 
+       9, 21, 74, 73, 
+/* AUTO  0     */
+       201, 
+       0, 18, 0, 49, 
+       58, 74, 
+/* LOOK  FORM  */
+       5, 5, 65, 
+       1, 41, 
+       105, 106, 
+/* LOOK  RADI  */
+       7, 5, 43, 
+       3, 30, 
+       2, 107, 0, 73, 
+/* AUTO  0     */
+       199, 
+       9, 29, 
+       24, 0, 0, 73, 
+/* AUTO  0     */
+       199, 
+       9, 14, 
+       109, 0, 0, 73, 
+/* AUTO  0     */
+       211, 
+       8, 14, 8, 29, 8, 30, 8, 31, 
+       67, 0, 0, 73, 
+/* AUTO  0     */
+       199, 
+       9, 0, 
+       111, 0, 0, 73, 
+/* AUTO  0     */
+       192, 
+       68, 
+/* CONN  RADI  */
+       4, 38, 43, 
+       3, 30, 
+       110, 
+/* CONN  ANTE  */
+       22, 38, 66, 
+       4, 13, 9, 14, 3, 30, 0, 14, 0, 30, 
+       58, 53, 1, 
+/* CONN  CABL  */
+       4, 38, 75, 
+       3, 51, 
+       43, 
+/* CONN  BATT  */
+       19, 38, 26, 
+       3, 30, 3, 19, 9, 29, 0, 29, 
+       58, 1, 0, 73, 
+/* AUTO  0     */
+       200, 
+       0, 19, 0, 44, 
+       72, 
+/* PUSH  SWIT  */
+       16, 66, 21, 
+       4, 13, 2, 44, 8, 14, 8, 30, 
+       112, 
+/* MAKE  FUEL  */
+       23, 55, 74, 
+       4, 2, 3, 9, 3, 38, 3, 49, 3, 46, 
+       0, 0, 0, 73, 
+/* AUTO  0     */
+       215, 
+       3, 48, 3, 41, 0, 38, 0, 49, 0, 48, 
+       59, 59, 59, 67, 
+/* AUTO  0     */
+       196, 
+       9, 0, 
+       135, 
+/* AUTO  0     */
+       211, 
+       8, 0, 0, 46, 0, 34, 0, 50, 
+       62, 52, 1, 68, 
+/* FUEL  CAR   */
+       22, 46, 39, 
+       2, 27, 1, 50, 0, 50, 0, 45, 0, 19, 
+       72, 58, 1, 
+/* PUSH  BUTT  */
+       10, 66, 79, 
+       4, 29, 8, 8, 
+       124, 125, 63, 
+/* PUSH  BUTT  */
+       10, 66, 79, 
+       4, 29, 9, 19, 
+       3, 8, 20, 
+/* PUSH  BUTT  */
+       10, 66, 79, 
+       4, 29, 8, 21, 
+       124, 125, 63, 
+/* PUSH  BUTT  */
+       10, 66, 79, 
+       4, 29, 8, 20, 
+       124, 125, 63, 
+/* PUSH  BUTT  */
+       14, 66, 79, 
+       4, 29, 9, 22, 0, 11, 
+       1, 126, 58, 
+/* PUSH  BUTT  */
+       18, 66, 79, 
+       4, 29, 8, 4, 0, 4, 0, 5, 
+       60, 58, 128, 
+/* PUSH  BUTT  */
+       23, 66, 79, 
+       4, 29, 8, 5, 0, 5, 0, 6, 0, 19, 
+       60, 58, 60, 73, 
+/* AUTO  0     */
+       194, 
+       131, 56, 64, 
+/* GET   HOSE  */
+       10, 10, 57, 
+       2, 27, 8, 11, 
+       124, 125, 63, 
+/* OPEN  COCK  */
+       18, 19, 59, 
+       4, 29, 8, 22, 0, 22, 0, 11, 
+       60, 60, 1, 
+/* WASH  HOSE  */
+       13, 59, 57, 
+       1, 40, 4, 21, 0, 20, 
+       60, 1, 
+/* GET   UP    */
+       6, 10, 5, 
+       8, 22, 
+       13, 46, 48, 
+/* GET   UP    */
+       22, 10, 5, 
+       4, 29, 8, 4, 0, 19, 0, 27, 0, 19, 
+       54, 62, 1, 
+/* GET   UP    */
+       22, 10, 5, 
+       4, 29, 8, 5, 0, 3, 0, 27, 0, 3, 
+       54, 62, 1, 
+/* GET   UP    */
+       22, 10, 5, 
+       4, 29, 8, 6, 0, 24, 0, 27, 0, 24, 
+       54, 62, 1, 
+/* OPEN  COCK  */
+       9, 19, 59, 
+       4, 14, 0, 28, 
+       129, 54, 
+/* TO    TERM  */
+       18, 37, 72, 
+       2, 27, 3, 51, 0, 9, 0, 51, 
+       1, 58, 53, 
+/* TO    BATT  */
+       23, 37, 26, 
+       2, 27, 3, 51, 0, 10, 0, 51, 0, 19, 
+       58, 53, 53, 1, 
+/* LOOK  VAT   */
+       7, 5, 80, 
+       4, 2, 
+       1, 2, 3, 8, 
+/* FUEL  JUG   */
+       4, 46, 73, 
+       1, 45, 
+       50, 
+/* FUEL  CAR   */
+       22, 46, 39, 
+       2, 27, 1, 46, 0, 8, 0, 46, 0, 45, 
+       58, 72, 1, 
+/* CLIM  MOUN  */
+       4, 34, 52, 
+       4, 22, 
+       50, 
+/* SAY   ANY   */
+       1, 80, 0, 
+       1, 85, 
+/* GO    CAR   */
+       9, 1, 39, 
+       2, 27, 0, 29, 
+       54, 1, 
+/* OPEN  GLOV  */
+       6, 19, 62, 
+       4, 29, 
+       3, 8, 20, 
+/* GET   OUT   */
+       6, 10, 89, 
+       8, 22, 
+       13, 46, 48, 
+/* GET   OUT   */
+       22, 10, 89, 
+       4, 29, 8, 4, 0, 19, 0, 27, 0, 19, 
+       54, 62, 1, 
+/* GET   OUT   */
+       22, 10, 89, 
+       4, 29, 8, 5, 0, 3, 0, 27, 0, 3, 
+       54, 62, 1, 
+/* GET   OUT   */
+       22, 10, 89, 
+       4, 29, 8, 6, 0, 24, 0, 27, 0, 24, 
+       54, 62, 1, 
+/* GO    SHED  */
+       8, 1, 58, 
+       4, 7, 0, 13, 
+       54, 
+/* GET   LINE  */
+       17, 10, 55, 
+       4, 23, 9, 23, 0, 36, 0, 37, 
+       52, 59, 
+/* PUSH  LINE  */
+       17, 66, 55, 
+       4, 23, 9, 23, 0, 36, 0, 37, 
+       52, 59, 
+/* GET   LINE  */
+       19, 10, 55, 
+       4, 23, 8, 23, 0, 37, 0, 36, 
+       55, 74, 67, 73, 
+/* AUTO  0     */
+       206, 
+       8, 0, 0, 23, 0, 23, 
+       68, 74, 60, 
+/* PUSH  LINE  */
+       23, 66, 55, 
+       4, 23, 8, 23, 0, 37, 0, 36, 0, 23, 
+       55, 74, 74, 73, 
+/* AUTO  0     */
+       199, 
+       0, 23, 
+       60, 1, 9, 21, 
+/* CLOS  TOOL  */
+       12, 35, 29, 
+       3, 20, 0, 20, 0, 7, 
+       72, 
+/* OPEN  TOOL  */
+       12, 19, 29, 
+       3, 7, 0, 7, 0, 20, 
+       72, 
+/* LOOK  STAI  */
+       23, 5, 12, 
+       4, 2, 6, 45, 14, 45, 3, 9, 0, 45, 
+       74, 2, 21, 132, 
+/* GO    STAI  */
+       8, 1, 12, 
+       4, 2, 0, 1, 
+       54, 
+/* LIGH  FLAS  */
+       9, 25, 46, 
+       8, 16, 3, 31, 
+       13, 25, 
+/* LIGH  FLAS  */
+       14, 25, 46, 
+       3, 31, 0, 9, 0, 31, 
+       72, 64, 1, 
+/* UNLI  FLAS  */
+       14, 15, 46, 
+       3, 9, 0, 9, 0, 31, 
+       72, 64, 1, 
+/* GET   QUAR  */
+       12, 10, 53, 
+       2, 38, 7, 23, 0, 38, 
+       52, 
+/* GET   ENVE  */
+       8, 10, 34, 
+       2, 33, 0, 33, 
+       52, 
+/* GO    COCK  */
+       8, 1, 59, 
+       4, 14, 0, 28, 
+       54, 
+/* SLEE  ANY   */
+       7, 21, 0, 
+       0, 35, 
+       54, 64, 19, 125, 
+/* LOOK  ME    */
+       2, 5, 93, 
+       1, 2, 133, 
+/* LOOK  HOSE  */
+       9, 5, 57, 
+       1, 40, 8, 20, 
+       2, 136, 
+/* LOOK  HOSE  */
+       9, 5, 57, 
+       1, 40, 9, 20, 
+       2, 137, 
+/* MAKE  FUEL  */
+       8, 55, 74, 
+       6, 41, 4, 2, 
+       138, 
+/* MAKE  FUEL  */
+       9, 55, 74, 
+       4, 2, 1, 9, 
+       21, 139, 
+/* PUT   HOSE  */
+       18, 43, 57, 
+       1, 40, 2, 27, 0, 21, 0, 40, 
+       1, 60, 59, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* CHAR  BATT  */
+       4, 42, 26, 
+       1, 19, 
+       50, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* GET   LINE  */
+       8, 10, 55, 
+       2, 36, 0, 36, 
+       52, 
+/* PUSH  SWIT  */
+       6, 66, 21, 
+       1, 30, 
+       1, 3, 20, 
+/* TRAN  ANY   */
+       255, 41, 0, 
+       4, 0, 
+/* PUSH  CAR   */
+       4, 66, 39, 
+       2, 27, 
+       40, 
+/* USE   ANY   */
+       1, 71, 0, 
+       119, 35, 
+/* SWIM  ANY   */
+       4, 57, 0, 
+       4, 21, 
+       1, 
+/* TO    ANY   */
+       0, 37, 0, 
+       33, 
+/* PUSH  LINE  */
+       9, 66, 55, 
+       2, 34, 9, 24, 
+       13, 42, 
+/* GET   LINE  */
+       9, 10, 55, 
+       2, 34, 9, 24, 
+       13, 42, 
+/* CUT   LINE  */
+       8, 27, 55, 
+       6, 23, 2, 34, 
+       40, 
+/* DIG   ANY   */
+       4, 84, 0, 
+       6, 23, 
+       40, 
+/* OPEN  PIPE  */
+       9, 19, 13, 
+       1, 28, 6, 21, 
+       13, 23, 
+/* LOOK  ANY   */
+       10, 5, 0, 
+       8, 15, 6, 9, 
+       13, 11, 30, 
+/* OPEN  SAFE  */
+       9, 19, 35, 
+       1, 21, 6, 28, 
+       13, 23, 
+/* LOOK  ANY   */
+       3, 5, 0, 
+       1, 2, 3, 8, 
+/* GET   INVE  */
+       0, 10, 27, 
+       66, 
+/* INVE  ANY   */
+       0, 62, 0, 
+       66, 
+/* QUIT  ANY   */
+       0, 22, 0, 
+       63, 
+/* SAVE  GAME  */
+       0, 17, 28, 
+       71, 
+/* HELP  ANY   */
+       0, 31, 0, 
+       36, 
+/* DIG   ANY   */
+       7, 84, 0, 
+       4, 20, 
+       1, 3, 8, 20, 
+/* AUTO  0     */
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *WALK */
+       215, 65, 76, 75,
+       /* *RUN */
+       210, 85, 78, 32,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *L */
+       204, 32, 32, 32,
+       /* *DESC */
+       196, 69, 83, 67,
+       /* *READ */
+       210, 69, 65, 68,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* *REMO */
+       210, 69, 77, 79,
+       /* UNLI */
+       85, 78, 76, 73,
+       /*  */
+       32, 32, 32, 32,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* DROP */
+       68, 82, 79, 80,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* *UNLO */
+       213, 78, 76, 79,
+       /* SLEE */
+       83, 76, 69, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* CHEC */
+       67, 72, 69, 67,
+       /* *TEST */
+       212, 69, 83, 84,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* *FLAS */
+       198, 76, 65, 83,
+       /* CUT */
+       67, 85, 84, 32,
+       /* *SLIC */
+       211, 76, 73, 67,
+       /* *HIT */
+       200, 73, 84, 32,
+       /* *CHOP */
+       195, 72, 79, 80,
+       /* HELP */
+       72, 69, 76, 80,
+       /* REPL */
+       82, 69, 80, 76,
+       /* *RECO */
+       210, 69, 67, 79,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* CLOS */
+       67, 76, 79, 83,
+       /* TIE */
+       84, 73, 69, 32,
+       /* TO */
+       84, 79, 32, 32,
+       /* CONN */
+       67, 79, 78, 78,
+       /* *TAPE */
+       212, 65, 80, 69,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* TRAN */
+       84, 82, 65, 78,
+       /* CHAR */
+       67, 72, 65, 82,
+       /* PUT */
+       80, 85, 84, 32,
+       /* *INSE */
+       201, 78, 83, 69,
+       /*   */
+       32, 32, 32, 32,
+       /* FUEL */
+       70, 85, 69, 76,
+       /* *REFU */
+       210, 69, 70, 85,
+       /* *FILL */
+       198, 73, 76, 76,
+       /* STAR */
+       83, 84, 65, 82,
+       /* PUMP */
+       80, 85, 77, 80,
+       /* FIND */
+       70, 73, 78, 68,
+       /* UNCO */
+       85, 78, 67, 79,
+       /* *DISC */
+       196, 73, 83, 67,
+       /*  */
+       32, 32, 32, 32,
+       /* MAKE */
+       77, 65, 75, 69,
+       /* *MIX */
+       205, 73, 88, 32,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* *WADE */
+       215, 65, 68, 69,
+       /* WASH */
+       87, 65, 83, 72,
+       /* *RINS */
+       210, 73, 78, 83,
+       /* *CLEA */
+       195, 76, 69, 65,
+       /* INVE */
+       73, 78, 86, 69,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* THRO */
+       84, 72, 82, 79,
+       /* *CAST */
+       195, 65, 83, 84,
+       /* PUSH */
+       80, 85, 83, 72,
+       /* *PULL */
+       208, 85, 76, 76,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* *FLIP */
+       198, 76, 73, 80,
+       /* *LIFT */
+       204, 73, 70, 84,
+       /* USE */
+       85, 83, 69, 32,
+       /* *WITH */
+       215, 73, 84, 72,
+       /* SLID */
+       83, 76, 73, 68,
+       /* *MOVE */
+       205, 79, 86, 69,
+       /* LAUG */
+       76, 65, 85, 71,
+       /* SING */
+       83, 73, 78, 71,
+       /* SMEL */
+       83, 77, 69, 76,
+       /* LIST */
+       76, 73, 83, 84,
+       /* SHAK */
+       83, 72, 65, 75,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *YELL */
+       217, 69, 76, 76,
+       /* *SCRE */
+       211, 67, 82, 69,
+       /* *TALK */
+       212, 65, 76, 75,
+       /* DIG */
+       68, 73, 71, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* STAT */
+       83, 84, 65, 84,
+       /* BOOT */
+       66, 79, 79, 84,
+       /* *CASH */
+       195, 65, 83, 72,
+       /* YOYO */
+       89, 79, 89, 79,
+       /* *BUIL */
+       194, 85, 73, 76,
+       /* STAI */
+       83, 84, 65, 73,
+       /* PIPE */
+       80, 73, 80, 69,
+       /* *PADL */
+       208, 65, 68, 76,
+       /* HOUS */
+       72, 79, 85, 83,
+       /* HARD */
+       72, 65, 82, 68,
+       /* *STOR */
+       211, 84, 79, 82,
+       /* PUMP */
+       80, 85, 77, 80,
+       /* CONS */
+       67, 79, 78, 83,
+       /* STRE */
+       83, 84, 82, 69,
+       /* SWIT */
+       83, 87, 73, 84,
+       /* CORN */
+       67, 79, 82, 78,
+       /* PILE */
+       80, 73, 76, 69,
+       /* *TRAS */
+       212, 82, 65, 83,
+       /* TABL */
+       84, 65, 66, 76,
+       /* BATT */
+       66, 65, 84, 84,
+       /* INVE */
+       73, 78, 86, 69,
+       /* GAME */
+       71, 65, 77, 69,
+       /* TOOL */
+       84, 79, 79, 76,
+       /* *BOX */
+       194, 79, 88, 32,
+       /* KEY */
+       75, 69, 89, 32,
+       /* DUCT */
+       68, 85, 67, 84,
+       /* *TAPE */
+       212, 65, 80, 69,
+       /* ENVE */
+       69, 78, 86, 69,
+       /* SAFE */
+       83, 65, 70, 69,
+       /* HYDR */
+       72, 89, 68, 82,
+       /* ROOM */
+       82, 79, 79, 77,
+       /* PUMP */
+       80, 85, 77, 80,
+       /* CAR */
+       67, 65, 82, 32,
+       /* *JET */
+       202, 69, 84, 32,
+       /* *TANK */
+       212, 65, 78, 75,
+       /* SHAC */
+       83, 72, 65, 67,
+       /* RADI */
+       82, 65, 68, 73,
+       /* ON */
+       79, 78, 32, 32,
+       /* OFF */
+       79, 70, 70, 32,
+       /* FLAS */
+       70, 76, 65, 83,
+       /* *LIGH */
+       204, 73, 71, 72,
+       /* BOMB */
+       66, 79, 77, 66,
+       /* *CANI */
+       195, 65, 78, 73,
+       /* PAPE */
+       80, 65, 80, 69,
+       /* PICK */
+       80, 73, 67, 75,
+       /* MOUN */
+       77, 79, 85, 78,
+       /* QUAR */
+       81, 85, 65, 82,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* LINE */
+       76, 73, 78, 69,
+       /* *PHON */
+       208, 72, 79, 78,
+       /* HOSE */
+       72, 79, 83, 69,
+       /* SHED */
+       83, 72, 69, 68,
+       /* COCK */
+       67, 79, 67, 75,
+       /* *WIND */
+       215, 73, 78, 68,
+       /* *DOOR */
+       196, 79, 79, 82,
+       /* GLOV */
+       71, 76, 79, 86,
+       /* *COMP */
+       195, 79, 77, 80,
+       /* DASH */
+       68, 65, 83, 72,
+       /* FORM */
+       70, 79, 82, 77,
+       /* ANTE */
+       65, 78, 84, 69,
+       /* *LEAD */
+       204, 69, 65, 68,
+       /* TUNE */
+       84, 85, 78, 69,
+       /* *DIAL */
+       196, 73, 65, 76,
+       /* WARF */
+       87, 65, 82, 70,
+       /* GAS */
+       71, 65, 83, 32,
+       /* TERM */
+       84, 69, 82, 77,
+       /* JUG */
+       74, 85, 71, 32,
+       /* FUEL */
+       70, 85, 69, 76,
+       /* CABL */
+       67, 65, 66, 76,
+       /* SAND */
+       83, 65, 78, 68,
+       /* JAR */
+       74, 65, 82, 32,
+       /* *FLUI */
+       198, 76, 85, 73,
+       /* BUTT */
+       66, 85, 84, 84,
+       /* VAT */
+       86, 65, 84, 32,
+       /* MINE */
+       77, 73, 78, 69,
+       /* *SHAF */
+       211, 72, 65, 70,
+       /*   */
+       32, 32, 32, 32,
+       /* *STON */
+       211, 84, 79, 78,
+       /* OFFI */
+       79, 70, 70, 73,
+       /* TANK */
+       84, 65, 78, 75,
+       /* FEET */
+       70, 69, 69, 84,
+       /* HAND */
+       72, 65, 78, 68,
+       /* OUT */
+       79, 85, 84, 32,
+       /* BASE */
+       66, 65, 83, 69,
+       /* LABO */
+       76, 65, 66, 79,
+       /* ENGI */
+       69, 78, 71, 73,
+       /* ME */
+       77, 69, 32, 32,
+       /* *MYSE */
+       205, 89, 83, 69,
+       /* GRAS */
+       71, 82, 65, 83,
+       /* FIEL */
+       70, 73, 69, 76,
+       /* HIGH */
+       72, 73, 71, 72,
+       /* LOT */
+       76, 79, 84, 32,
+       /* LEDG */
+       76, 69, 68, 71,
+       /* LAKE */
+       76, 65, 75, 69,
+       /* BEAC */
+       66, 69, 65, 67,
+       /* CODE */
+       67, 79, 68, 69,
+       /* *MESS */
+       205, 69, 83, 83,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t automap[] = {
+       /* TOOL */
+       84, 79, 79, 76,
+       7,
+       /* FLAS */
+       70, 76, 65, 83,
+       9,
+       /* BATT */
+       66, 65, 84, 84,
+       19,
+       /* TOOL */
+       84, 79, 79, 76,
+       20,
+       /* KEY */
+       75, 69, 89, 32,
+       21,
+       /* DUCT */
+       68, 85, 67, 84,
+       22,
+       /* PICK */
+       80, 73, 67, 75,
+       23,
+       /* HYDR */
+       72, 89, 68, 82,
+       25,
+       /* PUMP */
+       80, 85, 77, 80,
+       26,
+       /* KEY */
+       75, 69, 89, 32,
+       28,
+       /* RADI */
+       82, 65, 68, 73,
+       30,
+       /* FLAS */
+       70, 76, 65, 83,
+       31,
+       /* ENVE */
+       69, 78, 86, 69,
+       33,
+       /* LINE */
+       76, 73, 78, 69,
+       36,
+       /* QUAR */
+       81, 85, 65, 82,
+       38,
+       /* PAPE */
+       80, 65, 80, 69,
+       39,
+       /* HOSE */
+       72, 79, 83, 69,
+       40,
+       /* FORM */
+       70, 79, 82, 77,
+       41,
+       /* BATT */
+       66, 65, 84, 84,
+       44,
+       /* JUG */
+       74, 85, 71, 32,
+       45,
+       /* JUG */
+       74, 85, 71, 32,
+       46,
+       /* SAND */
+       83, 65, 78, 68,
+       48,
+       /* JAR */
+       74, 65, 82, 32,
+       49,
+       /* JUG */
+       74, 85, 71, 32,
+       50,
+       /* CABL */
+       67, 65, 66, 76,
+       51,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst01.c b/Applications/games/myst01.c
new file mode 100644 (file)
index 0000000..7593178
--- /dev/null
@@ -0,0 +1,2856 @@
+#define NUM_OBJ 48
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 200;
+const uint8_t lightfill = 200;
+const uint8_t startcarried = 1;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 31;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+40, 67, 41, 32, 49, 57, 56, 50, 32, 66, 46, 72, 46, 0 };
+const uint8_t loctxt_1[] = {
+100, 101, 110, 115, 101, 32, 83, 80, 79, 79, 75, 89, 32, 70, 111, 114, 101, 115, 116, 0 };
+const uint8_t loctxt_2[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 83, 116, 114, 101, 97, 109, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 84, 114, 101, 101, 0 };
+const uint8_t loctxt_4[] = {
+116, 97, 110, 103, 108, 101, 32, 111, 102, 32, 80, 82, 73, 67, 75, 76, 89, 32, 66, 114, 105, 97, 114, 115, 0 };
+const uint8_t loctxt_5[] = {
+99, 108, 101, 97, 114, 105, 110, 103, 32, 98, 121, 32, 97, 32, 67, 97, 98, 105, 110, 0 };
+const uint8_t loctxt_6[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 80, 97, 116, 104, 0 };
+const uint8_t loctxt_7[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 70, 111, 114, 101, 115, 116, 32, 114, 111, 97, 100, 0 };
+const uint8_t loctxt_8[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 70, 111, 114, 101, 115, 116, 32, 114, 111, 97, 100, 0 };
+const uint8_t loctxt_9[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 80, 111, 110, 100, 0 };
+const uint8_t loctxt_10[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 97, 32, 67, 97, 115, 116, 108, 101, 32, 77, 111, 97, 116, 0 };
+const uint8_t loctxt_11[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 97, 32, 80, 111, 114, 116, 99, 117, 108, 108, 105, 115, 0 };
+const uint8_t loctxt_12[] = {
+42, 73, 39, 109, 32, 97, 116, 111, 112, 32, 116, 104, 101, 32, 66, 97, 116, 116, 108, 101, 109, 101, 110, 116, 115, 0 };
+const uint8_t loctxt_13[] = {
+67, 111, 117, 114, 116, 121, 97, 114, 100, 46, 32, 73, 32, 115, 101, 101, 32, 97, 110, 32, 65, 114, 99, 104, 119, 97, 121, 0 };
+const uint8_t loctxt_14[] = {
+83, 116, 114, 97, 119, 32, 115, 116, 114, 101, 119, 110, 32, 115, 104, 101, 100, 0 };
+const uint8_t loctxt_15[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 97, 32, 72, 117, 103, 101, 32, 100, 111, 111, 114, 0 };
+const uint8_t loctxt_16[] = {
+100, 101, 114, 101, 108, 105, 99, 116, 32, 83, 116, 97, 98, 108, 101, 0 };
+const uint8_t loctxt_17[] = {
+114, 111, 111, 109, 32, 98, 101, 102, 111, 114, 101, 32, 97, 110, 32, 111, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t loctxt_18[] = {
+84, 111, 114, 116, 117, 114, 101, 32, 67, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_19[] = {
+67, 97, 98, 105, 110, 32, 119, 105, 116, 104, 32, 104, 111, 108, 101, 32, 105, 110, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t loctxt_20[] = {
+67, 97, 118, 101, 0 };
+const uint8_t loctxt_21[] = {
+67, 97, 118, 101, 0 };
+const uint8_t loctxt_22[] = {
+67, 97, 118, 101, 32, 98, 101, 102, 111, 114, 101, 32, 97, 32, 112, 97, 100, 108, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t loctxt_23[] = {
+83, 116, 111, 114, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_24[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 118, 97, 115, 116, 32, 76, 97, 107, 101, 0 };
+const uint8_t loctxt_25[] = {
+42, 73, 39, 109, 32, 115, 97, 105, 108, 105, 110, 103, 32, 116, 104, 101, 32, 76, 97, 107, 101, 0 };
+const uint8_t loctxt_26[] = {
+77, 97, 105, 100, 39, 115, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_27[] = {
+83, 111, 114, 99, 101, 114, 101, 114, 39, 115, 32, 119, 111, 114, 107, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_28[] = {
+98, 97, 114, 101, 32, 115, 108, 105, 109, 121, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_29[] = {
+99, 111, 108, 100, 32, 114, 111, 111, 109, 32, 102, 117, 108, 108, 32, 111, 102, 32, 83, 116, 97, 116, 117, 101, 115, 0 };
+const uint8_t loctxt_30[] = {
+84, 114, 101, 101, 0 };
+const uint8_t loctxt_31[] = {
+77, 69, 83, 83, 33, 33, 32, 32, 73, 39, 109, 32, 68, 69, 65, 68, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 2, 4, 0, 0, 0, 0 } }, 
+               { loctxt_2,  { 6, 1, 0, 3, 0, 0 } }, 
+               { loctxt_3,  { 5, 0, 2, 0, 0, 0 } }, 
+               { loctxt_4,  { 1, 0, 0, 0, 0, 0 } }, 
+               { loctxt_5,  { 0, 3, 0, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 2, 0, 0, 0, 0 } }, 
+               { loctxt_7,  { 8, 6, 0, 0, 0, 0 } }, 
+               { loctxt_8,  { 9, 7, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 10, 8, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 0, 9, 0, 0, 0, 0 } }, 
+               { loctxt_11,  { 0, 10, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 11, 0, 0, 0, 13 } }, 
+               { loctxt_13,  { 0, 0, 0, 0, 12, 0 } }, 
+               { loctxt_14,  { 0, 0, 15, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 13, 16, 14, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 15, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 0, 0, 14, 0 } }, 
+               { loctxt_18,  { 26, 27, 0, 17, 0, 0 } }, 
+               { loctxt_19,  { 0, 0, 0, 5, 0, 20 } }, 
+               { loctxt_20,  { 24, 22, 0, 0, 19, 0 } }, 
+               { loctxt_21,  { 20, 0, 0, 0, 0, 0 } }, 
+               { loctxt_22,  { 21, 0, 0, 0, 0, 0 } }, 
+               { loctxt_23,  { 22, 0, 0, 0, 0, 0 } }, 
+               { loctxt_24,  { 0, 20, 0, 0, 0, 0 } }, 
+               { loctxt_25,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_26,  { 0, 18, 0, 0, 0, 0 } }, 
+               { loctxt_27,  { 18, 0, 28, 0, 0, 0 } }, 
+               { loctxt_28,  { 0, 0, 0, 27, 0, 0 } }, 
+               { loctxt_29,  { 0, 15, 0, 0, 0, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 0, 0, 3 } }, 
+               { loctxt_31,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       1,
+       19,
+       18,
+       0,
+       0,
+       24,
+       16,
+       23,
+       0,
+       0,
+       0,
+       29,
+       13,
+       7,
+       16,
+       0,
+       27,
+       26,
+       1,
+       0,
+       0,
+       255,
+       0,
+       0,
+       14,
+       6,
+       21,
+       29,
+       28,
+       19,
+       22,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       30,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+83, 104, 105, 110, 121, 32, 83, 119, 111, 114, 100, 0 };
+const uint8_t objtxt_1[] = {
+79, 108, 100, 32, 67, 108, 111, 97, 107, 0 };
+const uint8_t objtxt_2[] = {
+66, 97, 114, 114, 101, 108, 0 };
+const uint8_t objtxt_3[] = {
+72, 97, 109, 109, 101, 114, 0 };
+const uint8_t objtxt_4[] = {
+83, 97, 108, 116, 0 };
+const uint8_t objtxt_5[] = {
+75, 101, 121, 0 };
+const uint8_t objtxt_6[] = {
+72, 117, 103, 101, 32, 121, 101, 108, 108, 111, 119, 32, 67, 114, 97, 98, 0 };
+const uint8_t objtxt_7[] = {
+72, 117, 110, 116, 105, 110, 103, 32, 72, 111, 114, 110, 0 };
+const uint8_t objtxt_8[] = {
+82, 97, 102, 116, 0 };
+const uint8_t objtxt_9[] = {
+76, 73, 84, 32, 79, 105, 108, 32, 76, 97, 109, 112, 0 };
+const uint8_t objtxt_10[] = {
+74, 101, 119, 101, 108, 108, 101, 100, 32, 75, 110, 105, 102, 101, 0 };
+const uint8_t objtxt_11[] = {
+71, 79, 76, 68, 69, 78, 32, 66, 65, 84, 79, 78, 0 };
+const uint8_t objtxt_12[] = {
+80, 97, 114, 99, 104, 109, 101, 110, 116, 0 };
+const uint8_t objtxt_13[] = {
+75, 110, 105, 103, 104, 116, 32, 105, 110, 32, 100, 97, 114, 107, 32, 65, 114, 109, 111, 117, 114, 0 };
+const uint8_t objtxt_14[] = {
+87, 111, 111, 100, 101, 110, 32, 83, 116, 97, 102, 102, 0 };
+const uint8_t objtxt_15[] = {
+79, 108, 100, 32, 72, 101, 108, 109, 101, 116, 0 };
+const uint8_t objtxt_16[] = {
+71, 111, 108, 100, 101, 110, 32, 82, 105, 110, 103, 0 };
+const uint8_t objtxt_17[] = {
+71, 76, 79, 87, 73, 78, 71, 32, 81, 117, 97, 114, 116, 122, 0 };
+const uint8_t objtxt_18[] = {
+77, 105, 114, 114, 111, 114, 0 };
+const uint8_t objtxt_19[] = {
+82, 111, 116, 116, 105, 110, 103, 32, 108, 101, 97, 118, 101, 115, 0 };
+const uint8_t objtxt_20[] = {
+80, 111, 111, 108, 32, 111, 102, 32, 79, 105, 108, 0 };
+const uint8_t objtxt_21[] = {
+72, 111, 108, 101, 32, 105, 110, 32, 70, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_22[] = {
+77, 97, 116, 99, 104, 101, 115, 0 };
+const uint8_t objtxt_23[] = {
+87, 69, 84, 32, 77, 97, 116, 99, 104, 101, 115, 0 };
+const uint8_t objtxt_24[] = {
+67, 111, 105, 108, 32, 111, 102, 32, 82, 111, 112, 101, 0 };
+const uint8_t objtxt_25[] = {
+79, 105, 108, 32, 76, 97, 109, 112, 0 };
+const uint8_t objtxt_26[] = {
+83, 97, 118, 97, 103, 101, 32, 87, 111, 108, 102, 0 };
+const uint8_t objtxt_27[] = {
+72, 117, 103, 101, 32, 83, 108, 117, 103, 115, 0 };
+const uint8_t objtxt_28[] = {
+72, 105, 100, 101, 111, 117, 115, 32, 71, 111, 114, 103, 111, 110, 0 };
+const uint8_t objtxt_29[] = {
+85, 103, 108, 121, 32, 76, 105, 122, 97, 114, 100, 45, 109, 97, 110, 0 };
+const uint8_t objtxt_30[] = {
+79, 105, 108, 32, 115, 111, 100, 100, 101, 110, 32, 82, 97, 103, 0 };
+const uint8_t objtxt_31[] = {
+80, 97, 100, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_32[] = {
+66, 114, 111, 107, 101, 110, 32, 80, 97, 100, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_33[] = {
+68, 114, 121, 32, 82, 97, 103, 0 };
+const uint8_t objtxt_34[] = {
+67, 108, 111, 97, 107, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_35[] = {
+72, 101, 108, 109, 101, 116, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_36[] = {
+82, 105, 110, 103, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_37[] = {
+76, 117, 109, 112, 32, 111, 102, 32, 81, 117, 97, 114, 116, 122, 0 };
+const uint8_t objtxt_38[] = {
+72, 97, 110, 103, 105, 110, 103, 32, 82, 111, 112, 101, 0 };
+const uint8_t objtxt_39[] = {
+69, 109, 112, 116, 121, 32, 76, 97, 109, 112, 0 };
+const uint8_t objtxt_40[] = {
+68, 101, 97, 100, 32, 87, 111, 108, 102, 0 };
+const uint8_t objtxt_41[] = {
+83, 97, 108, 116, 101, 100, 32, 83, 108, 117, 103, 115, 0 };
+const uint8_t objtxt_42[] = {
+71, 111, 114, 103, 111, 110, 32, 40, 115, 116, 111, 110, 101, 41, 0 };
+const uint8_t objtxt_43[] = {
+68, 101, 97, 100, 32, 76, 105, 122, 97, 114, 100, 45, 109, 97, 110, 0 };
+const uint8_t objtxt_44[] = {
+79, 112, 101, 110, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_45[] = {
+32, 0 };
+const uint8_t objtxt_46[] = {
+72, 111, 108, 108, 111, 119, 32, 105, 110, 32, 84, 114, 117, 110, 107, 0 };
+const uint8_t objtxt_47[] = {
+72, 111, 108, 101, 32, 105, 110, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_48[] = {
+71, 114, 97, 105, 110, 115, 32, 111, 102, 32, 83, 97, 108, 116, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+};
+const uint8_t msgtxt_0[] = {
+32, 0 };
+const uint8_t msgtxt_1[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 77, 89, 83, 84, 69, 82, 73, 79, 85, 83, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 83, 0 };
+const uint8_t msgtxt_2[] = {
+80, 114, 101, 112, 97, 114, 101, 32, 121, 111, 117, 114, 115, 101, 108, 102, 32, 102, 111, 114, 32, 97, 110, 121, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_3[] = {
+84, 104, 105, 115, 32, 105, 115, 39, 110, 116, 32, 97, 32, 70, 111, 111, 116, 98, 97, 108, 108, 32, 71, 97, 109, 101, 0 };
+const uint8_t msgtxt_4[] = {
+84, 114, 121, 32, 69, 88, 65, 77, 105, 110, 105, 110, 103, 32, 116, 104, 105, 110, 103, 115, 46, 46, 0 };
+const uint8_t msgtxt_5[] = {
+67, 114, 97, 98, 32, 101, 97, 116, 115, 32, 83, 108, 117, 103, 115, 32, 116, 104, 101, 110, 32, 105, 103, 110, 111, 114, 101, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_6[] = {
+72, 101, 39, 115, 32, 101, 97, 116, 101, 110, 33, 0 };
+const uint8_t msgtxt_7[] = {
+73, 116, 39, 115, 32, 116, 114, 111, 100, 100, 101, 110, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 103, 114, 111, 117, 110, 100, 33, 0 };
+const uint8_t msgtxt_8[] = {
+72, 101, 32, 111, 110, 108, 121, 32, 119, 97, 110, 116, 115, 32, 116, 111, 32, 101, 97, 116, 32, 77, 69, 33, 0 };
+const uint8_t msgtxt_9[] = {
+67, 114, 97, 98, 115, 32, 108, 105, 107, 101, 32, 83, 97, 108, 116, 101, 100, 32, 83, 108, 117, 103, 115, 0 };
+const uint8_t msgtxt_10[] = {
+84, 104, 101, 32, 67, 114, 97, 98, 32, 115, 116, 111, 112, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_11[] = {
+73, 32, 110, 101, 101, 100, 32, 97, 32, 115, 104, 97, 114, 112, 32, 111, 98, 106, 101, 99, 116, 0 };
+const uint8_t msgtxt_12[] = {
+73, 32, 110, 101, 101, 100, 32, 77, 97, 103, 105, 99, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_13[] = {
+83, 109, 97, 115, 104, 32, 116, 104, 101, 32, 76, 111, 99, 107, 33, 0 };
+const uint8_t msgtxt_14[] = {
+84, 114, 121, 32, 116, 104, 101, 32, 80, 97, 114, 99, 104, 109, 101, 110, 116, 0 };
+const uint8_t msgtxt_15[] = {
+77, 97, 121, 98, 101, 32, 116, 104, 101, 32, 67, 114, 97, 98, 32, 105, 115, 32, 104, 117, 110, 103, 114, 121, 0 };
+const uint8_t msgtxt_16[] = {
+84, 104, 101, 32, 81, 117, 97, 114, 116, 122, 32, 109, 97, 121, 32, 98, 101, 32, 111, 102, 32, 117, 115, 101, 0 };
+const uint8_t msgtxt_17[] = {
+72, 111, 108, 100, 32, 105, 116, 33, 32, 65, 32, 77, 105, 114, 114, 111, 114, 32, 116, 104, 97, 116, 32, 105, 115, 33, 0 };
+const uint8_t msgtxt_18[] = {
+84, 114, 121, 32, 71, 101, 115, 116, 117, 114, 101, 115, 32, 97, 110, 100, 32, 77, 97, 103, 105, 99, 0 };
+const uint8_t msgtxt_19[] = {
+87, 101, 97, 114, 32, 116, 104, 101, 32, 72, 101, 108, 109, 101, 116, 0 };
+const uint8_t msgtxt_20[] = {
+73, 116, 39, 115, 32, 108, 111, 99, 107, 101, 100, 33, 0 };
+const uint8_t msgtxt_21[] = {
+73, 116, 39, 115, 32, 111, 112, 101, 110, 33, 0 };
+const uint8_t msgtxt_22[] = {
+32, 0 };
+const uint8_t msgtxt_23[] = {
+84, 104, 101, 32, 72, 97, 110, 100, 32, 115, 116, 111, 112, 115, 32, 109, 111, 118, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_24[] = {
+73, 32, 115, 101, 101, 32, 119, 114, 105, 116, 105, 110, 103, 0 };
+const uint8_t msgtxt_25[] = {
+84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 82, 117, 110, 101, 115, 32, 111, 110, 32, 105, 116, 0 };
+const uint8_t msgtxt_26[] = {
+32, 0 };
+const uint8_t msgtxt_27[] = {
+73, 32, 115, 101, 101, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_28[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_29[] = {
+76, 105, 122, 97, 114, 100, 45, 109, 97, 110, 32, 115, 116, 97, 98, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_30[] = {
+77, 97, 116, 99, 104, 101, 115, 32, 97, 114, 101, 32, 97, 99, 114, 111, 115, 115, 32, 116, 104, 101, 32, 77, 111, 97, 116, 0 };
+const uint8_t msgtxt_31[] = {
+73, 116, 32, 99, 97, 116, 99, 104, 101, 115, 33, 32, 73, 116, 39, 115, 32, 115, 101, 99, 117, 114, 101, 0 };
+const uint8_t msgtxt_32[] = {
+76, 97, 109, 112, 32, 105, 115, 32, 110, 111, 119, 32, 76, 73, 84, 0 };
+const uint8_t msgtxt_33[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 116, 111, 32, 108, 105, 103, 104, 116, 32, 105, 116, 32, 119, 105, 116, 104, 0 };
+const uint8_t msgtxt_34[] = {
+32, 0 };
+const uint8_t msgtxt_35[] = {
+73, 116, 39, 115, 32, 76, 73, 84, 33, 0 };
+const uint8_t msgtxt_36[] = {
+87, 105, 116, 104, 32, 87, 69, 84, 32, 77, 97, 116, 99, 104, 101, 115, 32, 63, 0 };
+const uint8_t msgtxt_37[] = {
+73, 116, 39, 115, 32, 110, 111, 116, 32, 108, 111, 99, 107, 101, 100, 33, 0 };
+const uint8_t msgtxt_38[] = {
+76, 111, 99, 107, 32, 105, 115, 32, 116, 111, 111, 32, 114, 117, 115, 116, 121, 0 };
+const uint8_t msgtxt_39[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 107, 101, 121, 0 };
+const uint8_t msgtxt_40[] = {
+73, 116, 39, 115, 32, 110, 111, 116, 32, 108, 105, 116, 33, 0 };
+const uint8_t msgtxt_41[] = {
+81, 117, 97, 114, 116, 122, 32, 103, 108, 111, 119, 115, 32, 102, 105, 101, 114, 99, 101, 108, 121, 0 };
+const uint8_t msgtxt_42[] = {
+84, 104, 101, 32, 100, 105, 109, 115, 32, 97, 103, 97, 105, 110, 33, 0 };
+const uint8_t msgtxt_43[] = {
+32, 0 };
+const uint8_t msgtxt_44[] = {
+32, 0 };
+const uint8_t msgtxt_45[] = {
+82, 117, 110, 101, 115, 32, 115, 97, 121, 46, 46, 77, 97, 103, 105, 99, 32, 119, 111, 114, 100, 32, 65, 75, 89, 82, 90, 0 };
+const uint8_t msgtxt_46[] = {
+82, 117, 110, 101, 115, 32, 97, 114, 101, 32, 117, 110, 114, 101, 97, 100, 97, 98, 108, 101, 0 };
+const uint8_t msgtxt_47[] = {
+83, 65, 73, 76, 32, 76, 65, 75, 69, 46, 46, 66, 76, 79, 87, 32, 72, 79, 82, 78, 46, 46, 84, 72, 82, 46, 46, 84, 104, 97, 116, 115, 32, 97, 108, 108, 33, 0 };
+const uint8_t msgtxt_48[] = {
+32, 0 };
+const uint8_t msgtxt_49[] = {
+70, 117, 116, 105, 108, 101, 33, 0 };
+const uint8_t msgtxt_50[] = {
+32, 0 };
+const uint8_t msgtxt_51[] = {
+87, 105, 116, 104, 32, 98, 97, 114, 101, 32, 104, 97, 110, 100, 115, 32, 63, 0 };
+const uint8_t msgtxt_52[] = {
+32, 0 };
+const uint8_t msgtxt_53[] = {
+32, 0 };
+const uint8_t msgtxt_54[] = {
+67, 108, 105, 109, 98, 105, 110, 103, 32, 97, 32, 99, 111, 105, 108, 32, 111, 102, 32, 114, 111, 112, 101, 32, 105, 115, 32, 100, 105, 102, 102, 105, 99, 117, 108, 116, 33, 0 };
+const uint8_t msgtxt_55[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_56[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 105, 115, 32, 104, 97, 112, 112, 101, 110, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_57[] = {
+81, 117, 97, 114, 116, 122, 32, 101, 109, 105, 116, 115, 32, 97, 32, 100, 97, 122, 122, 108, 105, 110, 103, 32, 98, 101, 97, 109, 33, 0 };
+const uint8_t msgtxt_58[] = {
+73, 116, 32, 104, 105, 116, 115, 32, 116, 104, 101, 32, 76, 105, 122, 97, 114, 100, 45, 109, 97, 110, 0 };
+const uint8_t msgtxt_59[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_60[] = {
+73, 32, 99, 97, 110, 32, 111, 110, 108, 121, 32, 107, 105, 108, 108, 32, 104, 105, 109, 32, 111, 110, 99, 101, 33, 0 };
+const uint8_t msgtxt_61[] = {
+84, 104, 114, 111, 117, 103, 104, 32, 116, 104, 101, 32, 72, 101, 97, 114, 116, 33, 0 };
+const uint8_t msgtxt_62[] = {
+87, 105, 116, 104, 32, 98, 97, 114, 101, 32, 104, 97, 110, 100, 115, 32, 63, 0 };
+const uint8_t msgtxt_63[] = {
+87, 104, 121, 32, 100, 111, 32, 116, 104, 97, 116, 32, 63, 0 };
+const uint8_t msgtxt_64[] = {
+73, 32, 110, 101, 101, 100, 32, 79, 73, 76, 0 };
+const uint8_t msgtxt_65[] = {
+73, 116, 39, 115, 32, 110, 111, 116, 32, 101, 109, 112, 116, 121, 33, 0 };
+const uint8_t msgtxt_66[] = {
+73, 39, 109, 32, 110, 111, 32, 65, 114, 115, 111, 110, 105, 115, 116, 33, 0 };
+const uint8_t msgtxt_67[] = {
+84, 104, 101, 32, 83, 108, 117, 103, 115, 32, 115, 104, 114, 105, 118, 101, 108, 32, 117, 112, 33, 0 };
+const uint8_t msgtxt_68[] = {
+72, 97, 110, 100, 32, 109, 111, 118, 101, 115, 32, 97, 119, 97, 121, 33, 0 };
+const uint8_t msgtxt_69[] = {
+73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_70[] = {
+79, 85, 67, 72, 33, 32, 84, 104, 97, 116, 32, 119, 97, 115, 32, 72, 79, 84, 33, 0 };
+const uint8_t msgtxt_71[] = {
+84, 114, 121, 32, 101, 120, 112, 108, 111, 114, 105, 110, 103, 0 };
+const uint8_t msgtxt_72[] = {
+79, 105, 108, 32, 102, 108, 97, 114, 101, 115, 32, 117, 112, 33, 0 };
+const uint8_t msgtxt_73[] = {
+82, 97, 103, 32, 105, 115, 32, 116, 111, 111, 32, 100, 114, 121, 33, 0 };
+const uint8_t msgtxt_74[] = {
+65, 108, 108, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 70, 108, 111, 111, 114, 33, 0 };
+const uint8_t msgtxt_75[] = {
+76, 97, 109, 112, 32, 105, 115, 32, 110, 111, 119, 32, 102, 117, 108, 108, 0 };
+const uint8_t msgtxt_76[] = {
+32, 0 };
+const uint8_t msgtxt_77[] = {
+65, 32, 107, 101, 121, 32, 77, 97, 116, 101, 114, 105, 97, 108, 105, 115, 101, 115, 33, 0 };
+const uint8_t msgtxt_78[] = {
+84, 104, 101, 32, 119, 97, 116, 101, 114, 115, 32, 114, 105, 112, 112, 108, 101, 33, 0 };
+const uint8_t msgtxt_79[] = {
+65, 32, 72, 97, 110, 100, 32, 114, 105, 115, 101, 115, 33, 0 };
+const uint8_t msgtxt_80[] = {
+73, 116, 39, 115, 32, 105, 109, 112, 111, 115, 115, 105, 98, 108, 101, 0 };
+const uint8_t msgtxt_81[] = {
+73, 116, 39, 115, 32, 116, 111, 111, 32, 115, 109, 97, 108, 108, 33, 0 };
+const uint8_t msgtxt_82[] = {
+65, 32, 71, 101, 110, 105, 101, 32, 97, 112, 112, 101, 97, 114, 115, 46, 46, 119, 97, 118, 101, 115, 32, 104, 105, 115, 32, 104, 97, 110, 100, 0 };
+const uint8_t msgtxt_83[] = {
+32, 0 };
+const uint8_t msgtxt_84[] = {
+83, 97, 121, 115, 32, 77, 97, 116, 99, 104, 101, 115, 32, 97, 114, 101, 32, 100, 114, 121, 32, 116, 104, 101, 110, 32, 118, 97, 110, 105, 115, 104, 101, 115, 33, 0 };
+const uint8_t msgtxt_85[] = {
+83, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_86[] = {
+71, 111, 114, 103, 111, 110, 39, 115, 32, 115, 116, 97, 114, 101, 32, 116, 117, 114, 110, 115, 32, 109, 101, 32, 116, 111, 32, 115, 116, 111, 110, 101, 33, 0 };
+const uint8_t msgtxt_87[] = {
+87, 69, 76, 76, 32, 68, 79, 78, 69, 33, 32, 89, 111, 117, 32, 104, 97, 118, 101, 32, 115, 117, 99, 99, 101, 101, 100, 101, 100, 33, 0 };
+const uint8_t msgtxt_88[] = {
+89, 111, 117, 32, 97, 114, 101, 32, 97, 32, 72, 101, 114, 111, 33, 0 };
+const uint8_t msgtxt_89[] = {
+87, 111, 108, 102, 32, 115, 116, 111, 112, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_90[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 72, 111, 108, 108, 111, 119, 32, 104, 101, 114, 101, 33, 0 };
+const uint8_t msgtxt_91[] = {
+76, 97, 109, 112, 32, 105, 115, 32, 110, 111, 119, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_92[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 101, 118, 101, 110, 32, 116, 111, 117, 99, 104, 32, 104, 105, 109, 33, 0 };
+const uint8_t msgtxt_93[] = {
+68, 111, 111, 114, 32, 99, 114, 101, 97, 107, 115, 32, 111, 112, 101, 110, 46, 46, 0 };
+const uint8_t msgtxt_94[] = {
+68, 111, 111, 114, 32, 105, 115, 32, 110, 111, 119, 32, 117, 110, 108, 111, 99, 107, 101, 100, 0 };
+const uint8_t msgtxt_95[] = {
+75, 110, 105, 103, 104, 116, 32, 115, 116, 111, 112, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_96[] = {
+72, 109, 109, 46, 46, 78, 105, 99, 101, 32, 109, 101, 108, 108, 111, 119, 32, 115, 111, 117, 110, 100, 33, 0 };
+const uint8_t msgtxt_97[] = {
+72, 111, 119, 32, 114, 101, 118, 111, 108, 116, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_98[] = {
+71, 111, 32, 119, 97, 115, 104, 32, 121, 111, 117, 114, 32, 109, 111, 117, 116, 104, 32, 111, 117, 116, 33, 0 };
+const uint8_t msgtxt_99[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 101, 100, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+       msgtxt_92,
+       msgtxt_93,
+       msgtxt_94,
+       msgtxt_95,
+       msgtxt_96,
+       msgtxt_97,
+       msgtxt_98,
+       msgtxt_99,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       171, 
+       9, 1, 0, 1, 
+       58, 1, 86, 2, 
+/* AUTO  100   */
+       175, 
+       4, 29, 9, 2, 2, 28, 
+       64, 88, 136, 61, 
+/* AUTO  100   */
+       165, 
+       4, 20, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 17, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 19, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 14, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 24, 
+       57, 64, 
+/* AUTO  100   */
+       166, 
+       1, 11, 
+       137, 138, 63, 
+/* AUTO  100   */
+       183, 
+       4, 29, 8, 2, 2, 28, 0, 28, 0, 42, 
+       88, 149, 59, 53, 
+/* AUTO  100   */
+       177, 
+       8, 16, 9, 11, 0, 39, 0, 11, 
+       53, 58, 
+/* AUTO  100   */
+       169, 
+       1, 17, 0, 17, 
+       120, 53, 
+/* AUTO  100   */
+       178, 
+       4, 24, 2, 41, 0, 7, 0, 41, 
+       58, 59, 5, 
+/* AUTO  100   */
+       164, 
+       4, 31, 
+       63, 
+};
+const uint8_t actions[] = {
+/* GO    CABI  */
+       9, 1, 41, 
+       4, 5, 0, 19, 
+       54, 64, 
+/* GO    ARCH  */
+       12, 1, 65, 
+       4, 13, 1, 34, 0, 15, 
+       54, 
+/* GO    ARCH  */
+       8, 1, 65, 
+       4, 13, 6, 34, 
+       145, 
+/* LIGH  LAMP  */
+       17, 26, 16, 
+       3, 25, 1, 22, 0, 9, 0, 25, 
+       72, 32, 
+/* LIGH  LAMP  */
+       8, 26, 16, 
+       3, 25, 6, 22, 
+       33, 
+/* LIGH  LAMP  */
+       8, 26, 16, 
+       3, 25, 1, 23, 
+       36, 
+/* LOOK  STRA  */
+       17, 15, 66, 
+       4, 14, 14, 47, 0, 47, 0, 14, 
+       62, 27, 
+/* GO    HOLE  */
+       12, 1, 26, 
+       4, 14, 2, 47, 0, 17, 
+       54, 
+/* UNLI  LAMP  */
+       15, 28, 16, 
+       1, 9, 0, 9, 0, 25, 
+       72, 109, 141, 64, 
+/* LIGH  LAMP  */
+       4, 26, 16, 
+       3, 9, 
+       35, 
+/* UNLI  LAMP  */
+       8, 28, 16, 
+       6, 9, 6, 22, 
+       40, 
+/* SQUE  RAG   */
+       14, 3, 33, 
+       1, 30, 9, 16, 2, 9, 
+       122, 61, 64, 
+/* SQUE  RAG   */
+       18, 3, 33, 
+       2, 39, 1, 30, 0, 33, 0, 30, 
+       72, 125, 73, 
+/* AUTO  0     */
+       206, 
+       0, 39, 0, 25, 0, 9, 
+       72, 69, 59, 
+/* SQUE  RAG   */
+       18, 3, 33, 
+       1, 30, 0, 33, 0, 30, 0, 20, 
+       72, 53, 124, 
+/* READ  RING  */
+       8, 33, 22, 
+       1, 16, 1, 35, 
+       45, 
+/* READ  RING  */
+       4, 33, 22, 
+       1, 36, 
+       119, 
+/* REMO  RING  */
+       13, 50, 22, 
+       1, 36, 0, 36, 0, 16, 
+       109, 72, 
+/* REMO  CLOA  */
+       13, 50, 8, 
+       1, 34, 0, 34, 0, 1, 
+       109, 72, 
+/* REMO  HELM  */
+       13, 50, 76, 
+       1, 35, 0, 35, 0, 15, 
+       109, 72, 
+/* KILL  WOLF  */
+       8, 44, 29, 
+       2, 26, 6, 0, 
+       112, 
+/* FEED  WOLF  */
+       4, 9, 29, 
+       2, 26, 
+       8, 
+/* GO    DOOR  */
+       10, 1, 56, 
+       4, 17, 0, 18, 
+       54, 64, 56, 
+/* WEAR  RING  */
+       13, 48, 22, 
+       1, 16, 0, 16, 0, 36, 
+       109, 72, 
+/* READ  RING  */
+       8, 33, 22, 
+       1, 16, 6, 35, 
+       46, 
+/* WEAR  HELM  */
+       13, 48, 76, 
+       1, 15, 0, 15, 0, 35, 
+       109, 72, 
+/* READ  PARC  */
+       4, 33, 19, 
+       1, 12, 
+       47, 
+/* LOOK  BARR  */
+       21, 15, 9, 
+       3, 2, 14, 4, 14, 48, 13, 27, 0, 4, 
+       27, 53, 
+/* LOOK  RING  */
+       4, 15, 22, 
+       1, 16, 
+       25, 
+/* HOLD  MIRR  */
+       9, 52, 24, 
+       1, 18, 0, 2, 
+       109, 58, 
+/* LOOK  LEAV  */
+       13, 15, 61, 
+       4, 1, 14, 0, 14, 45, 
+       27, 53, 
+/* GO    PATH  */
+       8, 1, 44, 
+       4, 6, 2, 26, 
+       139, 
+/* GO    PATH  */
+       9, 1, 44, 
+       4, 6, 0, 7, 
+       54, 109, 
+/* KILL  WOLF  */
+       17, 44, 29, 
+       2, 26, 1, 0, 0, 26, 0, 40, 
+       72, 111, 
+/* WEAR  CLOA  */
+       18, 48, 8, 
+       3, 1, 0, 1, 0, 34, 0, 34, 
+       72, 74, 109, 
+/* THRO  ROPE  */
+       22, 22, 28, 
+       4, 3, 1, 24, 0, 24, 0, 38, 0, 38, 
+       31, 72, 53, 
+/* THRO  ROPE  */
+       22, 22, 28, 
+       4, 11, 1, 24, 0, 24, 0, 38, 0, 38, 
+       31, 72, 53, 
+/* CLIM  ROPE  */
+       14, 38, 28, 
+       4, 3, 3, 38, 0, 30, 
+       54, 64, 140, 
+/* CLIM  ROPE  */
+       13, 38, 28, 
+       4, 11, 3, 38, 0, 12, 
+       54, 64, 
+/* CLIM  ROPE  */
+       4, 38, 28, 
+       2, 24, 
+       104, 
+/* LOOK  TREE  */
+       17, 15, 38, 
+       4, 30, 14, 36, 14, 16, 0, 16, 
+       53, 27, 
+/* GET   BATO  */
+       13, 10, 18, 
+       2, 11, 8, 9, 0, 11, 
+       109, 74, 
+/* CHOP  BRIA  */
+       21, 36, 40, 
+       4, 4, 1, 0, 14, 24, 14, 38, 0, 24, 
+       53, 27, 
+/* CHOP  BRIA  */
+       8, 36, 40, 
+       4, 4, 1, 0, 
+       109, 
+/* GET   ROPE  */
+       9, 10, 28, 
+       2, 24, 0, 24, 
+       52, 109, 
+/* GET   ROPE  */
+       22, 10, 28, 
+       3, 38, 7, 30, 7, 12, 0, 24, 0, 38, 
+       109, 72, 73, 
+/* AUTO  0     */
+       196, 
+       0, 24, 
+       52, 
+/* THRO  ROPE  */
+       17, 22, 28, 
+       1, 24, 7, 3, 7, 11, 0, 24, 
+       53, 109, 
+/* RUB   RING  */
+       13, 54, 22, 
+       1, 16, 14, 5, 0, 5, 
+       53, 127, 
+/* RUB   RING  */
+       23, 54, 22, 
+       1, 16, 3, 23, 0, 23, 0, 22, 0, 22, 
+       72, 53, 132, 134, 
+/* THRO  MATC  */
+       17, 22, 27, 
+       1, 22, 4, 10, 0, 22, 0, 11, 
+       30, 62, 
+/* SWIM  ANY   */
+       13, 2, 0, 
+       4, 10, 6, 22, 0, 11, 
+       54, 64, 
+/* CLIM  TREE  */
+       14, 38, 38, 
+       4, 3, 3, 38, 0, 30, 
+       54, 64, 140, 
+/* SWIM  ANY   */
+       21, 2, 0, 
+       4, 10, 1, 22, 0, 22, 0, 23, 0, 11, 
+       72, 54, 
+/* RUB   RING  */
+       5, 54, 22, 
+       1, 16, 
+       109, 105, 
+/* LOOK  STAF  */
+       4, 15, 20, 
+       1, 14, 
+       25, 
+/* KILL  WOLF  */
+       4, 44, 29, 
+       2, 40, 
+       110, 
+/* LOOK  BRIA  */
+       0, 15, 40, 
+       51, 
+/* READ  RUNE  */
+       8, 33, 67, 
+       1, 14, 1, 35, 
+       45, 
+/* LOOK  PARC  */
+       4, 15, 19, 
+       1, 12, 
+       24, 
+/* READ  STAF  */
+       8, 33, 20, 
+       1, 14, 1, 35, 
+       45, 
+/* READ  STAF  */
+       8, 33, 20, 
+       1, 14, 6, 35, 
+       46, 
+/* READ  RUNE  */
+       8, 33, 67, 
+       1, 16, 6, 35, 
+       46, 
+/* READ  RUNE  */
+       8, 33, 67, 
+       1, 14, 6, 35, 
+       46, 
+/* READ  RUNE  */
+       8, 33, 67, 
+       1, 16, 1, 35, 
+       45, 
+/* SWIM  ANY   */
+       13, 2, 0, 
+       4, 11, 0, 10, 6, 22, 
+       54, 64, 
+/* SWIM  ANY   */
+       22, 2, 0, 
+       4, 11, 1, 22, 0, 22, 0, 23, 0, 10, 
+       72, 54, 64, 
+/* THRO  MATC  */
+       17, 22, 27, 
+       4, 11, 1, 22, 0, 22, 0, 10, 
+       30, 62, 
+/* KILL  ANY   */
+       4, 44, 0, 
+       4, 13, 
+       142, 
+/* BURN  ANY   */
+       0, 4, 0, 
+       116, 
+/* WAVE  STAF  */
+       18, 42, 20, 
+       1, 14, 4, 27, 14, 37, 0, 4, 
+       58, 109, 106, 
+/* SAY   AKYR  */
+       23, 32, 71, 
+       4, 27, 8, 4, 14, 37, 0, 37, 0, 17, 
+       72, 149, 41, 42, 
+/* WAVE  QUAR  */
+       18, 42, 23, 
+       4, 28, 2, 29, 0, 29, 0, 43, 
+       107, 108, 72, 
+/* LOOK  LIZA  */
+       17, 15, 32, 
+       4, 28, 2, 43, 14, 10, 0, 10, 
+       27, 53, 
+/* OPEN  DOOR  */
+       17, 31, 56, 
+       4, 15, 8, 5, 9, 6, 0, 6, 
+       143, 58, 
+/* UNLO  DOOR  */
+       18, 58, 56, 
+       4, 15, 1, 5, 9, 5, 0, 5, 
+       58, 109, 144, 
+/* UNLO  DOOR  */
+       8, 58, 56, 
+       4, 15, 8, 5, 
+       37, 
+/* OPEN  DOOR  */
+       8, 31, 56, 
+       4, 15, 8, 6, 
+       21, 
+/* OPEN  DOOR  */
+       8, 31, 56, 
+       4, 15, 9, 5, 
+       20, 
+/* UNLO  DOOR  */
+       12, 58, 56, 
+       4, 15, 9, 5, 6, 5, 
+       39, 
+/* GO    DOOR  */
+       14, 1, 56, 
+       4, 15, 8, 6, 0, 29, 
+       54, 109, 64, 
+/* LOOK  LIZA  */
+       10, 15, 32, 
+       4, 28, 2, 29, 
+       29, 61, 64, 
+/* FILL  LAMP  */
+       4, 74, 16, 
+       3, 25, 
+       115, 
+/* RUB   RING  */
+       18, 54, 22, 
+       1, 36, 13, 23, 0, 23, 0, 22, 
+       72, 132, 134, 
+/* RUB   RING  */
+       13, 54, 22, 
+       1, 36, 14, 5, 0, 5, 
+       127, 53, 
+/* RUB   RING  */
+       5, 54, 22, 
+       1, 36, 
+       105, 109, 
+/* BLOW  HORN  */
+       9, 7, 14, 
+       1, 7, 7, 25, 
+       146, 105, 
+/* SWEA  ANY   */
+       0, 59, 0, 
+       148, 
+/* EAT   ANY   */
+       0, 57, 0, 
+       147, 
+/* GET   SALT  */
+       4, 10, 11, 
+       2, 48, 
+       7, 
+/* GO    TREE  */
+       4, 1, 38, 
+       4, 30, 
+       131, 
+/* JUMP  ANY   */
+       0, 34, 0, 
+       113, 
+/* SPRI  SALT  */
+       23, 65, 11, 
+       5, 27, 1, 4, 0, 4, 0, 48, 0, 48, 
+       72, 53, 109, 105, 
+/* DROP  SALT  */
+       22, 18, 11, 
+       1, 4, 4, 21, 2, 27, 0, 27, 0, 41, 
+       117, 72, 73, 
+/* AUTO  0     */
+       196, 
+       0, 4, 
+       59, 
+/* SPRI  SALT  */
+       22, 65, 11, 
+       1, 4, 4, 21, 2, 27, 0, 27, 0, 41, 
+       117, 72, 73, 
+/* AUTO  0     */
+       196, 
+       0, 4, 
+       59, 
+/* CHOP  ANY   */
+       4, 36, 0, 
+       7, 4, 
+       49, 
+/* LOOK  AROU  */
+       1, 15, 72, 
+       28, 64, 
+/* OPEN  DOOR  */
+       8, 31, 56, 
+       4, 22, 2, 31, 
+       20, 
+/* SMAS  PADL  */
+       21, 66, 34, 
+       4, 22, 2, 31, 1, 3, 0, 31, 0, 32, 
+       72, 73, 
+/* AUTO  0     */
+       201, 
+       0, 44, 0, 22, 
+       62, 109, 
+/* UNLO  DOOR  */
+       9, 58, 56, 
+       4, 22, 2, 31, 
+       38, 130, 
+/* OPEN  DOOR  */
+       8, 31, 56, 
+       4, 22, 2, 32, 
+       21, 
+/* UNLO  DOOR  */
+       8, 58, 56, 
+       4, 22, 2, 32, 
+       37, 
+/* GO    DOOR  */
+       13, 1, 56, 
+       4, 22, 2, 32, 0, 23, 
+       54, 64, 
+/* FEED  CRAB  */
+       18, 9, 13, 
+       4, 24, 1, 41, 0, 7, 0, 41, 
+       58, 59, 5, 
+/* FILL  LAMP  */
+       4, 74, 16, 
+       3, 39, 
+       114, 
+/* GO    LAKE  */
+       8, 1, 58, 
+       4, 24, 9, 7, 
+       10, 
+/* GO    LAKE  */
+       17, 1, 58, 
+       4, 24, 8, 7, 1, 8, 0, 25, 
+       54, 64, 
+/* SAIL  LAKE  */
+       17, 8, 58, 
+       4, 24, 8, 7, 1, 8, 0, 25, 
+       54, 64, 
+/* FEED  CRAB  */
+       8, 9, 13, 
+       4, 24, 8, 7, 
+       6, 
+/* BLOW  HORN  */
+       23, 7, 14, 
+       4, 25, 1, 7, 14, 11, 0, 8, 0, 11, 
+       58, 53, 128, 129, 
+/* THRO  KNIF  */
+       22, 22, 17, 
+       4, 25, 1, 10, 8, 8, 0, 9, 0, 10, 
+       58, 59, 23, 
+/* AUTO  0     */
+       204, 
+       4, 25, 8, 8, 8, 9, 
+       88, 
+/* GET   SALT  */
+       13, 10, 11, 
+       4, 19, 2, 4, 0, 4, 
+       52, 109, 
+/* DROP  SALT  */
+       13, 18, 11, 
+       7, 21, 1, 4, 0, 4, 
+       53, 109, 
+/* GET   SALT  */
+       9, 10, 11, 
+       2, 4, 0, 4, 
+       52, 109, 
+/* HELP  ANY   */
+       12, 13, 0, 
+       4, 24, 9, 7, 1, 41, 
+       15, 
+/* HELP  ANY   */
+       12, 13, 0, 
+       4, 24, 9, 7, 6, 41, 
+       9, 
+/* HELP  ANY   */
+       8, 13, 0, 
+       4, 28, 2, 29, 
+       16, 
+/* HELP  ANY   */
+       12, 13, 0, 
+       4, 27, 2, 17, 9, 4, 
+       18, 
+/* HELP  ANY   */
+       8, 13, 0, 
+       4, 22, 2, 31, 
+       13, 
+/* HELP  ANY   */
+       8, 13, 0, 
+       4, 25, 9, 8, 
+       14, 
+/* HELP  ANY   */
+       12, 13, 0, 
+       4, 25, 8, 8, 9, 9, 
+       11, 
+/* HELP  ANY   */
+       4, 13, 0, 
+       4, 15, 
+       17, 
+/* HELP  ANY   */
+       8, 13, 0, 
+       1, 15, 1, 12, 
+       19, 
+/* HELP  ANY   */
+       8, 13, 0, 
+       1, 15, 1, 14, 
+       19, 
+/* HELP  ANY   */
+       9, 13, 0, 
+       1, 15, 1, 16, 
+       0, 19, 
+/* HELP  ANY   */
+       12, 13, 0, 
+       4, 27, 2, 17, 8, 4, 
+       12, 
+/* HELP  ANY   */
+       1, 13, 0, 
+       4, 121, 
+/* SAVE  ANY   */
+       0, 70, 0, 
+       71, 
+/* DROP  CLOA  */
+       4, 18, 8, 
+       1, 34, 
+       119, 
+/* DROP  HELM  */
+       4, 18, 76, 
+       1, 35, 
+       119, 
+/* DROP  RING  */
+       4, 18, 22, 
+       1, 36, 
+       119, 
+/* SCOR  ANY   */
+       0, 53, 0, 
+       3, 
+/* WAVE  ANY   */
+       1, 42, 0, 
+       109, 105, 
+/* DROP  CLOA  */
+       9, 18, 8, 
+       1, 1, 0, 1, 
+       53, 109, 
+/* DROP  RING  */
+       9, 18, 22, 
+       1, 16, 0, 16, 
+       53, 109, 
+/* DROP  HELM  */
+       9, 18, 76, 
+       1, 15, 0, 15, 
+       53, 109, 
+/* SAY   ANY   */
+       2, 32, 0, 
+       109, 85, 105, 
+/* GO    ANY   */
+       0, 1, 0, 
+       135, 
+/* GET   BATO  */
+       12, 10, 18, 
+       4, 25, 2, 11, 9, 9, 
+       118, 
+/* SQUE  RAG   */
+       4, 3, 33, 
+       1, 33, 
+       123, 
+/* SOAK  RAG   */
+       22, 73, 33, 
+       1, 33, 2, 20, 0, 30, 0, 33, 0, 20, 
+       72, 59, 109, 
+/* LOOK  ANY   */
+       0, 15, 0, 
+       28, 
+/* WEAR  ANY   */
+       0, 48, 0, 
+       135, 
+/* MOVE  ANY   */
+       0, 40, 0, 
+       135, 
+/* INVE  ANY   */
+       0, 14, 0, 
+       66, 
+/* QUIT  ANY   */
+       0, 6, 0, 
+       63, 
+/* BLOW  ANY   */
+       0, 7, 0, 
+       135, 
+/* HELP  ANY   */
+       0, 13, 0, 
+       4, 
+/* SAIL  ANY   */
+       4, 8, 0, 
+       4, 25, 
+       109, 
+/* SAIL  ANY   */
+       0, 8, 0, 
+       135, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* SQUE */
+       83, 81, 85, 69,
+       /* BURN */
+       66, 85, 82, 78,
+       /* POUR */
+       80, 79, 85, 82,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* BLOW */
+       66, 76, 79, 87,
+       /* SAIL */
+       83, 65, 73, 76,
+       /* FEED */
+       70, 69, 69, 68,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* HELP */
+       72, 69, 76, 80,
+       /* INVE */
+       73, 78, 86, 69,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *SEAR */
+       211, 69, 65, 82,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *GIVE */
+       199, 73, 86, 69,
+       /* THRO */
+       84, 72, 82, 79,
+       /* *SLIN */
+       211, 76, 73, 78,
+       /* *CHUC */
+       195, 72, 85, 67,
+       /* *HURL */
+       200, 85, 82, 76,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* *IGNI */
+       201, 71, 78, 73,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* *DOUS */
+       196, 79, 85, 83,
+       /* *EXTI */
+       197, 88, 84, 73,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* SAY */
+       83, 65, 89, 32,
+       /* READ */
+       82, 69, 65, 68,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* *LEAP */
+       204, 69, 65, 80,
+       /* CHOP */
+       67, 72, 79, 80,
+       /* *CUT */
+       195, 85, 84, 32,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* *ASCE */
+       193, 83, 67, 69,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* *SHIF */
+       211, 72, 73, 70,
+       /* WAVE */
+       87, 65, 86, 69,
+       /* *SHAK */
+       211, 72, 65, 75,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *DEST */
+       196, 69, 83, 84,
+       /* *EXTE */
+       197, 88, 84, 69,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* *DON */
+       196, 79, 78, 32,
+       /* REMO */
+       82, 69, 77, 79,
+       /* *DOFF */
+       196, 79, 70, 70,
+       /* HOLD */
+       72, 79, 76, 68,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* RUB */
+       82, 85, 66, 32,
+       /* *POLI */
+       208, 79, 76, 73,
+       /* *SHIN */
+       211, 72, 73, 78,
+       /* EAT */
+       69, 65, 84, 32,
+       /* UNLO */
+       85, 78, 76, 79,
+       /* SWEA */
+       83, 87, 69, 65,
+       /* *FUCK */
+       198, 85, 67, 75,
+       /* *BALL */
+       194, 65, 76, 76,
+       /* *BOLL */
+       194, 79, 76, 76,
+       /* *SHIT */
+       211, 72, 73, 84,
+       /* *BAST */
+       194, 65, 83, 84,
+       /* SPRI */
+       83, 80, 82, 73,
+       /* SMAS */
+       83, 77, 65, 83,
+       /* *HIT */
+       200, 73, 84, 32,
+       /* *BREA */
+       194, 82, 69, 65,
+       /* *HAMM */
+       200, 65, 77, 77,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* *STOR */
+       211, 84, 79, 82,
+       /* MOP */
+       77, 79, 80, 32,
+       /* SOAK */
+       83, 79, 65, 75,
+       /* FILL */
+       70, 73, 76, 76,
+       /* *REPL */
+       210, 69, 80, 76,
+       /* *REFI */
+       210, 69, 70, 73,
+       /*       */
+       32, 32, 32, 32,
+       /*       */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* SWOR */
+       83, 87, 79, 82,
+       /* CLOA */
+       67, 76, 79, 65,
+       /* BARR */
+       66, 65, 82, 82,
+       /* HAMM */
+       72, 65, 77, 77,
+       /* SALT */
+       83, 65, 76, 84,
+       /* KEY */
+       75, 69, 89, 32,
+       /* CRAB */
+       67, 82, 65, 66,
+       /* HORN */
+       72, 79, 82, 78,
+       /* RAFT */
+       82, 65, 70, 84,
+       /* LAMP */
+       76, 65, 77, 80,
+       /* KNIF */
+       75, 78, 73, 70,
+       /* BATO */
+       66, 65, 84, 79,
+       /* PARC */
+       80, 65, 82, 67,
+       /* STAF */
+       83, 84, 65, 70,
+       /* *WOOD */
+       215, 79, 79, 68,
+       /* RING */
+       82, 73, 78, 71,
+       /* QUAR */
+       81, 85, 65, 82,
+       /* MIRR */
+       77, 73, 82, 82,
+       /* POOL */
+       80, 79, 79, 76,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* MATC */
+       77, 65, 84, 67,
+       /* ROPE */
+       82, 79, 80, 69,
+       /* WOLF */
+       87, 79, 76, 70,
+       /* SLUG */
+       83, 76, 85, 71,
+       /* GORG */
+       71, 79, 82, 71,
+       /* LIZA */
+       76, 73, 90, 65,
+       /* RAG */
+       82, 65, 71, 32,
+       /* PADL */
+       80, 65, 68, 76,
+       /* STAT */
+       83, 84, 65, 84,
+       /* STON */
+       83, 84, 79, 78,
+       /* STRE */
+       83, 84, 82, 69,
+       /* TREE */
+       84, 82, 69, 69,
+       /* *HOLL */
+       200, 79, 76, 76,
+       /* BRIA */
+       66, 82, 73, 65,
+       /* CABI */
+       67, 65, 66, 73,
+       /* *HUT */
+       200, 85, 84, 32,
+       /* WIND */
+       87, 73, 78, 68,
+       /* PATH */
+       80, 65, 84, 72,
+       /* ROAD */
+       82, 79, 65, 68,
+       /* POND */
+       80, 79, 78, 68,
+       /* PORT */
+       80, 79, 82, 84,
+       /* BATT */
+       66, 65, 84, 84,
+       /* COUR */
+       67, 79, 85, 82,
+       /* STAB */
+       83, 84, 65, 66,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* TORT */
+       84, 79, 82, 84,
+       /* STAI */
+       83, 84, 65, 73,
+       /* PASS */
+       80, 65, 83, 83,
+       /* CAVE */
+       67, 65, 86, 69,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* STOR */
+       83, 84, 79, 82,
+       /* LAKE */
+       76, 65, 75, 69,
+       /* WORK */
+       87, 79, 82, 75,
+       /* SORC */
+       83, 79, 82, 67,
+       /* LEAV */
+       76, 69, 65, 86,
+       /* *PILE */
+       208, 73, 76, 69,
+       /* MOAT */
+       77, 79, 65, 84,
+       /* BOAR */
+       66, 79, 65, 82,
+       /* ARCH */
+       65, 82, 67, 72,
+       /* STRA */
+       83, 84, 82, 65,
+       /* RUNE */
+       82, 85, 78, 69,
+       /* KNIG */
+       75, 78, 73, 71,
+       /* *FIGU */
+       198, 73, 71, 85,
+       /* *EERI */
+       197, 69, 82, 73,
+       /* AKYR */
+       65, 75, 89, 82,
+       /* AROU */
+       65, 82, 79, 85,
+       /* *ABOU */
+       193, 66, 79, 85,
+       /* *ROUN */
+       210, 79, 85, 78,
+       /* REED */
+       82, 69, 69, 68,
+       /* HELM */
+       72, 69, 76, 77,
+       /* OFF */
+       79, 70, 70, 32,
+       /* CAST */
+       67, 65, 83, 84,
+       0,
+};
+const uint8_t automap[] = {
+       /* SWOR */
+       83, 87, 79, 82,
+       0,
+       /* CLOA */
+       67, 76, 79, 65,
+       1,
+       /* BARR */
+       66, 65, 82, 82,
+       2,
+       /* HAMM */
+       72, 65, 77, 77,
+       3,
+       /* SALT */
+       83, 65, 76, 84,
+       4,
+       /* KEY */
+       75, 69, 89, 32,
+       5,
+       /* HORN */
+       72, 79, 82, 78,
+       7,
+       /* RAFT */
+       82, 65, 70, 84,
+       8,
+       /* LAMP */
+       76, 65, 77, 80,
+       9,
+       /* KNIF */
+       75, 78, 73, 70,
+       10,
+       /* PARC */
+       80, 65, 82, 67,
+       12,
+       /* STAF */
+       83, 84, 65, 70,
+       14,
+       /* HELM */
+       72, 69, 76, 77,
+       15,
+       /* RING */
+       82, 73, 78, 71,
+       16,
+       /* QUAR */
+       81, 85, 65, 82,
+       17,
+       /* MIRR */
+       77, 73, 82, 82,
+       18,
+       /* MATC */
+       77, 65, 84, 67,
+       22,
+       /* MATC */
+       77, 65, 84, 67,
+       23,
+       /* ROPE */
+       82, 79, 80, 69,
+       24,
+       /* LAMP */
+       76, 65, 77, 80,
+       25,
+       /* SLUG */
+       83, 76, 85, 71,
+       27,
+       /* RAG */
+       82, 65, 71, 32,
+       30,
+       /* RAG */
+       82, 65, 71, 32,
+       33,
+       /* QUAR */
+       81, 85, 65, 82,
+       37,
+       /* LAMP */
+       76, 65, 77, 80,
+       39,
+       /* SLUG */
+       83, 76, 85, 71,
+       41,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst02.c b/Applications/games/myst02.c
new file mode 100644 (file)
index 0000000..faf78c6
--- /dev/null
@@ -0,0 +1,2884 @@
+#define NUM_OBJ 62
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 200;
+const uint8_t lightfill = 200;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 44;
+const uint8_t startloc = 43;
+const uint8_t loctxt_0[] = {
+42, 32, 0 };
+const uint8_t loctxt_1[] = {
+104, 111, 116, 32, 102, 101, 116, 105, 100, 32, 83, 119, 97, 109, 112, 0 };
+const uint8_t loctxt_2[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 110, 32, 65, 110, 99, 105, 101, 110, 116, 32, 83, 112, 104, 105, 110, 120, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 97, 105, 108, 105, 110, 103, 32, 66, 114, 105, 103, 0 };
+const uint8_t loctxt_4[] = {
+67, 101, 108, 108, 97, 114, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 71, 114, 97, 115, 115, 121, 32, 80, 108, 97, 105, 110, 0 };
+const uint8_t loctxt_6[] = {
+84, 105, 109, 101, 45, 87, 97, 114, 112, 0 };
+const uint8_t loctxt_7[] = {
+48, 0 };
+const uint8_t loctxt_8[] = {
+48, 0 };
+const uint8_t loctxt_9[] = {
+48, 0 };
+const uint8_t loctxt_10[] = {
+115, 116, 114, 97, 110, 103, 101, 32, 77, 97, 99, 104, 105, 110, 101, 0 };
+const uint8_t loctxt_11[] = {
+104, 111, 116, 32, 102, 101, 116, 105, 100, 32, 83, 119, 97, 109, 112, 0 };
+const uint8_t loctxt_12[] = {
+104, 111, 116, 32, 102, 101, 116, 105, 100, 32, 83, 119, 97, 109, 112, 0 };
+const uint8_t loctxt_13[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 115, 116, 101, 97, 109, 121, 32, 76, 97, 107, 101, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 67, 97, 117, 115, 101, 119, 97, 121, 0 };
+const uint8_t loctxt_15[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 116, 105, 110, 121, 32, 73, 115, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_16[] = {
+116, 114, 97, 99, 107, 108, 101, 115, 115, 32, 68, 101, 115, 101, 114, 116, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 83, 116, 111, 110, 101, 32, 87, 97, 108, 108, 0 };
+const uint8_t loctxt_18[] = {
+108, 111, 110, 103, 32, 80, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t loctxt_19[] = {
+87, 101, 97, 112, 111, 110, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_20[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 116, 111, 112, 32, 111, 102, 32, 97, 32, 83, 116, 97, 116, 117, 101, 0 };
+const uint8_t loctxt_21[] = {
+115, 109, 97, 108, 108, 32, 84, 101, 109, 112, 108, 101, 0 };
+const uint8_t loctxt_22[] = {
+119, 105, 110, 100, 105, 110, 103, 32, 84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_23[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 116, 104, 101, 32, 70, 111, 114, 101, 109, 97, 115, 116, 0 };
+const uint8_t loctxt_24[] = {
+42, 73, 39, 109, 32, 97, 102, 116, 32, 98, 121, 32, 116, 104, 101, 32, 82, 105, 103, 103, 105, 110, 103, 0 };
+const uint8_t loctxt_25[] = {
+83, 104, 105, 112, 39, 115, 32, 80, 97, 110, 116, 114, 121, 0 };
+const uint8_t loctxt_26[] = {
+68, 101, 99, 107, 104, 111, 117, 115, 101, 0 };
+const uint8_t loctxt_27[] = {
+67, 97, 98, 105, 110, 0 };
+const uint8_t loctxt_28[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 116, 104, 101, 32, 68, 101, 99, 107, 104, 111, 117, 115, 101, 0 };
+const uint8_t loctxt_29[] = {
+67, 114, 111, 119, 115, 45, 78, 101, 115, 116, 0 };
+const uint8_t loctxt_30[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 67, 97, 112, 116, 97, 105, 110, 39, 115, 32, 67, 97, 98, 105, 110, 0 };
+const uint8_t loctxt_31[] = {
+42, 73, 32, 115, 101, 101, 32, 97, 32, 72, 111, 117, 115, 101, 32, 116, 111, 32, 116, 104, 101, 32, 78, 111, 114, 116, 104, 0 };
+const uint8_t loctxt_32[] = {
+81, 117, 97, 103, 109, 105, 114, 101, 46, 46, 73, 39, 109, 32, 83, 105, 110, 107, 105, 110, 103, 33, 0 };
+const uint8_t loctxt_33[] = {
+100, 101, 110, 115, 101, 32, 70, 111, 103, 32, 111, 110, 32, 116, 104, 101, 32, 77, 111, 111, 114, 115, 0 };
+const uint8_t loctxt_34[] = {
+68, 111, 111, 114, 119, 97, 121, 0 };
+const uint8_t loctxt_35[] = {
+100, 101, 110, 115, 101, 32, 70, 111, 103, 32, 111, 110, 32, 116, 104, 101, 32, 77, 111, 111, 114, 115, 0 };
+const uint8_t loctxt_36[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 87, 105, 110, 100, 111, 119, 0 };
+const uint8_t loctxt_37[] = {
+72, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_38[] = {
+68, 69, 80, 79, 0 };
+const uint8_t loctxt_39[] = {
+83, 116, 117, 100, 121, 0 };
+const uint8_t loctxt_40[] = {
+71, 101, 110, 101, 114, 97, 116, 111, 114, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_41[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_42[] = {
+71, 117, 97, 114, 100, 45, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_43[] = {
+100, 101, 110, 115, 101, 32, 70, 111, 103, 32, 111, 110, 32, 116, 104, 101, 32, 77, 111, 111, 114, 115, 0 };
+const uint8_t loctxt_44[] = {
+42, 77, 121, 32, 84, 73, 77, 69, 32, 105, 115, 32, 117, 112, 46, 46, 46, 73, 39, 109, 32, 68, 69, 65, 68, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 11, 0, 0, 0, 0, 0 } }, 
+               { loctxt_2,  { 0, 16, 0, 0, 0, 0 } }, 
+               { loctxt_3,  { 23, 24, 28, 0, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 0, 0, 37, 0 } }, 
+               { loctxt_5,  { 5, 5, 5, 5, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_7,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_8,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_11,  { 12, 1, 11, 11, 0, 0 } }, 
+               { loctxt_12,  { 0, 11, 13, 12, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 12, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 13, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_16,  { 2, 16, 16, 16, 0, 0 } }, 
+               { loctxt_17,  { 0, 18, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 17, 19, 0, 0, 0, 0 } }, 
+               { loctxt_19,  { 18, 0, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 0, 0, 21 } }, 
+               { loctxt_21,  { 0, 0, 0, 17, 0, 0 } }, 
+               { loctxt_22,  { 21, 2, 0, 0, 0, 0 } }, 
+               { loctxt_23,  { 0, 3, 0, 0, 0, 0 } }, 
+               { loctxt_24,  { 3, 0, 0, 0, 0, 0 } }, 
+               { loctxt_25,  { 0, 0, 26, 0, 0, 0 } }, 
+               { loctxt_26,  { 0, 30, 27, 25, 28, 0 } }, 
+               { loctxt_27,  { 0, 0, 0, 26, 0, 0 } }, 
+               { loctxt_28,  { 0, 0, 0, 3, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 0, 0, 0, 24 } }, 
+               { loctxt_30,  { 26, 0, 0, 0, 0, 0 } }, 
+               { loctxt_31,  { 34, 43, 35, 31, 0, 0 } }, 
+               { loctxt_32,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_33,  { 35, 31, 33, 32, 0, 0 } }, 
+               { loctxt_34,  { 0, 31, 0, 36, 0, 0 } }, 
+               { loctxt_35,  { 35, 0, 43, 33, 0, 0 } }, 
+               { loctxt_36,  { 0, 0, 34, 0, 0, 0 } }, 
+               { loctxt_37,  { 0, 0, 0, 39, 0, 0 } }, 
+               { loctxt_38,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_39,  { 0, 0, 37, 0, 0, 0 } }, 
+               { loctxt_40,  { 0, 0, 41, 0, 0, 0 } }, 
+               { loctxt_41,  { 0, 0, 0, 40, 5, 0 } }, 
+               { loctxt_42,  { 0, 0, 41, 0, 0, 0 } }, 
+               { loctxt_43,  { 35, 32, 43, 43, 0, 0 } }, 
+               { loctxt_44,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       32,
+       34,
+       39,
+       39,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       4,
+       4,
+       0,
+       23,
+       23,
+       29,
+       0,
+       27,
+       25,
+       25,
+       30,
+       30,
+       13,
+       14,
+       2,
+       18,
+       19,
+       19,
+       0,
+       0,
+       0,
+       0,
+       42,
+       0,
+       4,
+       10,
+       0,
+       0,
+       10,
+       34,
+       0,
+       13,
+       41,
+       21,
+       28,
+       20,
+       0,
+       0,
+       2,
+       37,
+       0,
+       0,
+       0,
+       5,
+       0,
+       6,
+       0,
+       0,
+       0,
+       40,
+       41,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+83, 109, 97, 108, 108, 32, 66, 117, 115, 104, 0 };
+const uint8_t objtxt_1[] = {
+71, 108, 111, 118, 101, 115, 0 };
+const uint8_t objtxt_2[] = {
+80, 97, 105, 110, 116, 105, 110, 103, 0 };
+const uint8_t objtxt_3[] = {
+68, 114, 97, 119, 101, 114, 0 };
+const uint8_t objtxt_4[] = {
+79, 112, 101, 110, 32, 68, 114, 97, 119, 101, 114, 0 };
+const uint8_t objtxt_5[] = {
+75, 101, 121, 0 };
+const uint8_t objtxt_6[] = {
+80, 105, 115, 116, 111, 108, 0 };
+const uint8_t objtxt_7[] = {
+67, 114, 111, 119, 98, 97, 114, 0 };
+const uint8_t objtxt_8[] = {
+66, 114, 111, 107, 101, 110, 32, 71, 108, 97, 115, 115, 0 };
+const uint8_t objtxt_9[] = {
+76, 73, 84, 32, 70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 0 };
+const uint8_t objtxt_10[] = {
+70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 0 };
+const uint8_t objtxt_11[] = {
+67, 97, 115, 115, 101, 116, 116, 101, 32, 82, 101, 99, 111, 114, 100, 101, 114, 0 };
+const uint8_t objtxt_12[] = {
+71, 108, 111, 119, 105, 110, 103, 32, 80, 111, 114, 116, 97, 108, 0 };
+const uint8_t objtxt_13[] = {
+82, 111, 112, 101, 0 };
+const uint8_t objtxt_14[] = {
+84, 111, 114, 110, 32, 83, 97, 105, 108, 0 };
+const uint8_t objtxt_15[] = {
+80, 111, 117, 99, 104, 0 };
+const uint8_t objtxt_16[] = {
+71, 108, 97, 115, 115, 32, 80, 114, 105, 115, 109, 0 };
+const uint8_t objtxt_17[] = {
+67, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_18[] = {
+83, 97, 108, 116, 32, 66, 101, 101, 102, 0 };
+const uint8_t objtxt_19[] = {
+83, 101, 97, 32, 66, 105, 115, 99, 117, 105, 116, 115, 0 };
+const uint8_t objtxt_20[] = {
+78, 101, 101, 100, 108, 101, 32, 38, 32, 84, 104, 114, 101, 97, 100, 0 };
+const uint8_t objtxt_21[] = {
+83, 104, 105, 112, 39, 115, 32, 76, 111, 103, 0 };
+const uint8_t objtxt_22[] = {
+66, 114, 111, 110, 116, 111, 115, 97, 117, 114, 117, 115, 0 };
+const uint8_t objtxt_23[] = {
+79, 108, 100, 32, 66, 111, 97, 116, 0 };
+const uint8_t objtxt_24[] = {
+83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_25[] = {
+82, 111, 99, 107, 0 };
+const uint8_t objtxt_26[] = {
+83, 112, 101, 97, 114, 0 };
+const uint8_t objtxt_27[] = {
+76, 101, 118, 101, 114, 0 };
+const uint8_t objtxt_28[] = {
+79, 112, 101, 110, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_29[] = {
+83, 97, 118, 97, 103, 101, 32, 68, 111, 103, 0 };
+const uint8_t objtxt_30[] = {
+68, 101, 97, 100, 32, 68, 111, 103, 0 };
+const uint8_t objtxt_31[] = {
+68, 97, 114, 107, 32, 79, 112, 101, 110, 105, 110, 103, 0 };
+const uint8_t objtxt_32[] = {
+68, 111, 99, 116, 111, 114, 32, 80, 111, 116, 116, 101, 114, 0 };
+const uint8_t objtxt_33[] = {
+71, 108, 111, 118, 101, 115, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_34[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 77, 97, 99, 104, 105, 110, 101, 0 };
+const uint8_t objtxt_35[] = {
+51, 32, 69, 109, 112, 116, 121, 32, 83, 111, 99, 107, 101, 116, 115, 0 };
+const uint8_t objtxt_36[] = {
+50, 32, 69, 109, 112, 116, 121, 32, 83, 111, 99, 107, 101, 116, 115, 0 };
+const uint8_t objtxt_37[] = {
+69, 109, 112, 116, 121, 32, 83, 111, 99, 107, 101, 116, 0 };
+const uint8_t objtxt_38[] = {
+50, 32, 66, 117, 116, 116, 111, 110, 115, 0 };
+const uint8_t objtxt_39[] = {
+66, 101, 108, 108, 0 };
+const uint8_t objtxt_40[] = {
+72, 97, 109, 109, 101, 114, 0 };
+const uint8_t objtxt_41[] = {
+67, 97, 117, 115, 101, 119, 97, 121, 0 };
+const uint8_t objtxt_42[] = {
+82, 111, 98, 111, 116, 32, 71, 117, 97, 114, 100, 0 };
+const uint8_t objtxt_43[] = {
+72, 117, 103, 101, 32, 83, 116, 97, 116, 117, 101, 0 };
+const uint8_t objtxt_44[] = {
+68, 111, 111, 114, 0 };
+const uint8_t objtxt_45[] = {
+71, 108, 97, 115, 115, 32, 80, 114, 105, 115, 109, 0 };
+const uint8_t objtxt_46[] = {
+71, 108, 97, 115, 115, 32, 80, 114, 105, 115, 109, 0 };
+const uint8_t objtxt_47[] = {
+82, 111, 98, 111, 116, 32, 71, 117, 97, 114, 100, 32, 40, 100, 101, 102, 117, 110, 99, 116, 41, 0 };
+const uint8_t objtxt_48[] = {
+80, 114, 111, 106, 101, 99, 116, 105, 110, 103, 32, 83, 116, 111, 110, 101, 0 };
+const uint8_t objtxt_49[] = {
+68, 111, 111, 114, 0 };
+const uint8_t objtxt_50[] = {
+79, 112, 101, 110, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_51[] = {
+79, 112, 101, 110, 32, 67, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_52[] = {
+79, 112, 101, 110, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_53[] = {
+77, 101, 116, 97, 108, 32, 80, 108, 97, 116, 101, 0 };
+const uint8_t objtxt_54[] = {
+79, 112, 101, 110, 32, 83, 104, 97, 102, 116, 0 };
+const uint8_t objtxt_55[] = {
+80, 111, 108, 105, 99, 101, 32, 66, 111, 120, 0 };
+const uint8_t objtxt_56[] = {
+79, 112, 101, 110, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_57[] = {
+83, 101, 97, 119, 111, 114, 116, 104, 121, 32, 66, 111, 97, 116, 0 };
+const uint8_t objtxt_58[] = {
+68, 111, 103, 32, 40, 101, 97, 116, 105, 110, 103, 41, 0 };
+const uint8_t objtxt_59[] = {
+71, 101, 110, 101, 114, 97, 116, 111, 114, 0 };
+const uint8_t objtxt_60[] = {
+65, 114, 99, 104, 119, 97, 121, 0 };
+const uint8_t objtxt_61[] = {
+66, 114, 111, 107, 101, 110, 32, 71, 101, 110, 101, 114, 97, 116, 111, 114, 0 };
+const uint8_t objtxt_62[] = {
+68, 101, 97, 100, 32, 70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+73, 116, 39, 115, 32, 76, 111, 99, 107, 101, 100, 33, 0 };
+const uint8_t msgtxt_2[] = {
+66, 114, 111, 110, 116, 111, 115, 97, 117, 114, 117, 115, 0 };
+const uint8_t msgtxt_3[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 75, 101, 121, 33, 0 };
+const uint8_t msgtxt_4[] = {
+73, 116, 32, 110, 101, 101, 100, 115, 32, 70, 105, 120, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_5[] = {
+89, 111, 117, 39, 114, 101, 32, 74, 111, 107, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_6[] = {
+70, 114, 97, 109, 101, 32, 105, 115, 32, 82, 111, 116, 116, 101, 110, 46, 46, 87, 111, 110, 39, 116, 32, 98, 117, 100, 103, 101, 33, 0 };
+const uint8_t msgtxt_7[] = {
+77, 105, 115, 115, 105, 110, 103, 32, 80, 114, 105, 115, 109, 115, 32, 109, 117, 115, 116, 32, 98, 101, 32, 114, 101, 115, 112, 111, 110, 115, 105, 98, 108, 101, 33, 0 };
+const uint8_t msgtxt_8[] = {
+73, 116, 39, 115, 32, 79, 112, 101, 110, 33, 0 };
+const uint8_t msgtxt_9[] = {
+78, 111, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_10[] = {
+87, 79, 87, 33, 32, 87, 104, 97, 116, 32, 97, 32, 83, 104, 111, 119, 46, 46, 87, 104, 101, 114, 101, 32, 97, 114, 101, 32, 119, 101, 63, 0 };
+const uint8_t msgtxt_11[] = {
+85, 115, 101, 32, 50, 32, 119, 111, 114, 100, 115, 46, 32, 105, 46, 101, 46, 32, 80, 82, 69, 83, 83, 32, 82, 69, 86, 0 };
+const uint8_t msgtxt_12[] = {
+68, 105, 110, 103, 33, 32, 68, 111, 110, 103, 33, 0 };
+const uint8_t msgtxt_13[] = {
+73, 32, 104, 101, 97, 114, 32, 97, 32, 71, 114, 105, 110, 100, 105, 110, 103, 32, 78, 111, 105, 115, 101, 33, 0 };
+const uint8_t msgtxt_14[] = {
+73, 39, 118, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 116, 111, 32, 74, 97, 109, 32, 105, 116, 32, 119, 105, 116, 104, 33, 0 };
+const uint8_t msgtxt_15[] = {
+80, 114, 105, 115, 109, 32, 115, 108, 111, 116, 115, 32, 105, 110, 32, 116, 104, 101, 110, 32, 118, 97, 110, 105, 115, 104, 101, 115, 33, 0 };
+const uint8_t msgtxt_16[] = {
+73, 116, 32, 115, 97, 121, 115, 58, 45, 32, 0 };
+const uint8_t msgtxt_17[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_18[] = {
+75, 105, 108, 108, 101, 100, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_19[] = {
+73, 116, 39, 115, 32, 97, 108, 114, 101, 97, 100, 121, 32, 68, 101, 97, 100, 33, 0 };
+const uint8_t msgtxt_20[] = {
+85, 103, 104, 33, 0 };
+const uint8_t msgtxt_21[] = {
+84, 105, 109, 101, 32, 112, 97, 115, 115, 101, 115, 46, 46, 46, 0 };
+const uint8_t msgtxt_22[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 119, 101, 97, 112, 111, 110, 33, 0 };
+const uint8_t msgtxt_23[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_24[] = {
+73, 32, 110, 101, 101, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 104, 101, 97, 118, 121, 33, 0 };
+const uint8_t msgtxt_25[] = {
+73, 32, 99, 117, 116, 32, 109, 121, 115, 101, 108, 102, 32, 97, 110, 100, 32, 98, 108, 101, 100, 32, 116, 111, 32, 100, 101, 97, 116, 104, 33, 0 };
+const uint8_t msgtxt_26[] = {
+66, 65, 78, 71, 33, 0 };
+const uint8_t msgtxt_27[] = {
+73, 116, 39, 115, 32, 83, 104, 105, 112, 115, 104, 97, 112, 101, 32, 110, 111, 119, 33, 0 };
+const uint8_t msgtxt_28[] = {
+77, 121, 32, 114, 101, 112, 97, 105, 114, 32, 107, 105, 116, 32, 105, 115, 32, 105, 110, 99, 111, 109, 112, 108, 101, 116, 101, 33, 0 };
+const uint8_t msgtxt_29[] = {
+68, 101, 108, 105, 99, 105, 111, 117, 115, 46, 46, 46, 84, 104, 97, 110, 107, 115, 33, 0 };
+const uint8_t msgtxt_30[] = {
+72, 101, 39, 115, 32, 110, 111, 116, 32, 104, 117, 110, 103, 114, 121, 46, 46, 72, 101, 39, 115, 32, 68, 101, 97, 100, 33, 0 };
+const uint8_t msgtxt_31[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 70, 111, 111, 100, 33, 0 };
+const uint8_t msgtxt_32[] = {
+112, 111, 117, 110, 99, 101, 115, 32, 111, 110, 32, 102, 111, 111, 100, 33, 0 };
+const uint8_t msgtxt_33[] = {
+105, 115, 32, 86, 101, 103, 101, 116, 97, 114, 105, 97, 110, 0 };
+const uint8_t msgtxt_34[] = {
+109, 111, 118, 101, 115, 32, 111, 102, 102, 32, 101, 97, 116, 105, 110, 103, 32, 66, 105, 115, 99, 117, 105, 116, 115, 33, 0 };
+const uint8_t msgtxt_35[] = {
+72, 101, 32, 119, 105, 108, 108, 32, 98, 101, 32, 79, 46, 75, 46, 0 };
+const uint8_t msgtxt_36[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 67, 97, 115, 115, 101, 116, 116, 101, 32, 105, 110, 32, 105, 116, 0 };
+const uint8_t msgtxt_37[] = {
+77, 97, 121, 98, 101, 32, 73, 32, 115, 104, 111, 117, 108, 100, 32, 112, 108, 97, 121, 32, 105, 116, 63, 0 };
+const uint8_t msgtxt_38[] = {
+73, 116, 32, 104, 97, 115, 32, 110, 111, 32, 109, 101, 97, 110, 115, 32, 111, 102, 32, 80, 114, 111, 112, 117, 108, 115, 105, 111, 110, 33, 0 };
+const uint8_t msgtxt_39[] = {
+82, 111, 98, 111, 116, 32, 71, 117, 97, 114, 100, 0 };
+const uint8_t msgtxt_40[] = {
+110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_41[] = {
+73, 116, 32, 108, 111, 111, 107, 115, 32, 67, 108, 105, 109, 98, 97, 98, 108, 101, 0 };
+const uint8_t msgtxt_42[] = {
+77, 121, 32, 72, 97, 110, 100, 32, 100, 105, 115, 97, 112, 112, 101, 97, 114, 115, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 65, 117, 114, 97, 33, 0 };
+const uint8_t msgtxt_43[] = {
+73, 116, 39, 115, 32, 108, 111, 111, 115, 101, 0 };
+const uint8_t msgtxt_44[] = {
+69, 120, 97, 109, 105, 110, 101, 32, 116, 104, 105, 110, 103, 115, 32, 97, 110, 100, 32, 116, 104, 105, 110, 107, 33, 0 };
+const uint8_t msgtxt_45[] = {
+115, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_46[] = {
+73, 116, 32, 108, 111, 111, 107, 115, 32, 72, 117, 110, 103, 114, 121, 33, 0 };
+const uint8_t msgtxt_47[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_48[] = {
+73, 116, 39, 115, 32, 116, 111, 111, 32, 72, 111, 116, 33, 0 };
+const uint8_t msgtxt_49[] = {
+83, 119, 105, 109, 109, 105, 110, 103, 32, 100, 114, 97, 103, 115, 32, 109, 101, 32, 100, 101, 101, 112, 101, 114, 33, 0 };
+const uint8_t msgtxt_50[] = {
+73, 39, 100, 32, 110, 101, 101, 100, 32, 97, 110, 32, 73, 114, 111, 110, 32, 98, 97, 114, 32, 102, 111, 114, 32, 116, 104, 97, 116, 33, 0 };
+const uint8_t msgtxt_51[] = {
+68, 111, 103, 0 };
+const uint8_t msgtxt_52[] = {
+87, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_53[] = {
+65, 65, 82, 82, 71, 71, 72, 72, 33, 33, 0 };
+const uint8_t msgtxt_54[] = {
+73, 39, 109, 32, 100, 114, 111, 119, 110, 101, 100, 32, 105, 110, 32, 81, 117, 105, 99, 107, 115, 97, 110, 100, 33, 0 };
+const uint8_t msgtxt_55[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 84, 72, 69, 32, 84, 73, 77, 69, 32, 77, 65, 67, 72, 73, 78, 69, 0 };
+const uint8_t msgtxt_56[] = {
+70, 111, 114, 32, 76, 73, 90, 32, 38, 32, 77, 73, 67, 72, 65, 69, 76, 32, 109, 121, 32, 87, 105, 102, 101, 32, 38, 32, 83, 111, 110, 0 };
+const uint8_t msgtxt_57[] = {
+79, 110, 101, 32, 105, 115, 32, 109, 97, 114, 107, 101, 100, 32, 60, 70, 79, 82, 62, 32, 111, 110, 101, 32, 60, 82, 69, 86, 62, 0 };
+const uint8_t msgtxt_58[] = {
+73, 116, 39, 115, 32, 97, 108, 114, 101, 97, 100, 121, 32, 98, 114, 111, 107, 101, 110, 33, 0 };
+const uint8_t msgtxt_59[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_60[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 102, 101, 108, 108, 32, 111, 117, 116, 33, 0 };
+const uint8_t msgtxt_61[] = {
+80, 72, 69, 87, 33, 32, 66, 101, 116, 116, 101, 114, 32, 119, 97, 116, 99, 104, 32, 109, 121, 32, 115, 116, 101, 112, 33, 0 };
+const uint8_t msgtxt_62[] = {
+66, 82, 73, 76, 76, 73, 65, 78, 84, 33, 32, 89, 111, 117, 32, 114, 101, 115, 99, 117, 101, 100, 32, 116, 104, 101, 32, 68, 111, 99, 116, 111, 114, 33, 0 };
+const uint8_t msgtxt_63[] = {
+67, 79, 78, 71, 82, 65, 84, 85, 76, 65, 84, 73, 79, 78, 83, 32, 72, 69, 82, 79, 33, 0 };
+const uint8_t msgtxt_64[] = {
+79, 111, 112, 115, 33, 32, 87, 101, 39, 114, 101, 32, 114, 117, 115, 104, 105, 110, 103, 32, 104, 101, 97, 100, 108, 111, 110, 103, 0 };
+const uint8_t msgtxt_65[] = {
+116, 104, 114, 111, 117, 103, 104, 32, 84, 105, 109, 101, 32, 105, 116, 115, 101, 108, 102, 33, 0 };
+const uint8_t msgtxt_66[] = {
+73, 32, 104, 101, 97, 114, 32, 97, 32, 115, 110, 97, 114, 108, 105, 110, 103, 32, 110, 111, 105, 115, 101, 32, 98, 101, 108, 111, 119, 33, 0 };
+const uint8_t msgtxt_67[] = {
+87, 97, 108, 108, 32, 99, 108, 111, 115, 101, 100, 32, 98, 101, 104, 105, 110, 100, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_68[] = {
+70, 105, 110, 100, 32, 116, 104, 101, 32, 51, 32, 80, 114, 105, 115, 109, 115, 32, 116, 104, 97, 116, 32, 99, 111, 110, 116, 114, 111, 108, 0 };
+const uint8_t msgtxt_69[] = {
+109, 121, 32, 77, 97, 99, 104, 105, 110, 101, 46, 32, 82, 101, 115, 99, 117, 101, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_70[] = {
+73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 32, 116, 104, 101, 109, 33, 0 };
+const uint8_t msgtxt_71[] = {
+71, 111, 32, 119, 97, 115, 104, 32, 121, 111, 117, 114, 32, 109, 111, 117, 116, 104, 32, 111, 117, 116, 33, 0 };
+const uint8_t msgtxt_72[] = {
+72, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_73[] = {
+77, 65, 46, 89, 32, 46, 69, 76, 46, 83, 84, 69, 32, 32, 46, 79, 86, 32, 49, 56, 46, 49, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       175, 
+       9, 1, 0, 3, 0, 1, 
+       81, 58, 105, 73, 
+/* AUTO  0     */
+       203, 
+       0, 0, 0, 3, 
+       79, 81, 86, 106, 
+/* AUTO  100   */
+       165, 
+       4, 18, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 2, 
+       57, 64, 
+/* AUTO  100   */
+       172, 
+       4, 18, 9, 2, 0, 28, 
+       59, 
+/* AUTO  100   */
+       166, 
+       18, 32, 
+       112, 113, 63, 
+/* AUTO  100   */
+       178, 
+       7, 32, 0, 1, 0, 4, 0, 1, 
+       81, 79, 81, 
+/* AUTO  100   */
+       170, 
+       4, 32, 0, 1, 
+       81, 77, 73, 
+/* AUTO  0     */
+       198, 
+       19, 0, 
+       103, 104, 61, 
+/* AUTO  0     */
+       196, 
+       0, 1, 
+       81, 
+/* AUTO  100   */
+       179, 
+       4, 10, 8, 7, 0, 6, 0, 10, 
+       54, 64, 54, 73, 
+/* AUTO  0     */
+       203, 
+       0, 6, 0, 10, 
+       64, 54, 64, 54, 
+/* AUTO  0     */
+       192, 
+       64, 
+/* AUTO  0     */
+/* AUTO  0     */
+       198, 
+       0, 10, 
+       54, 64, 10, 
+/* AUTO  25    */
+       150, 25, 
+       4, 10, 8, 7, 9, 10, 0, 4, 0, 7, 
+       81, 60, 73, 
+/* AUTO  0     */
+       210, 
+       0, 1, 0, 12, 0, 1, 0, 4, 
+       79, 62, 81, 
+/* AUTO  30    */
+       150, 30, 
+       4, 10, 8, 7, 9, 10, 0, 4, 0, 7, 
+       81, 60, 73, 
+/* AUTO  0     */
+       210, 
+       0, 2, 0, 12, 0, 2, 0, 4, 
+       79, 62, 81, 
+/* AUTO  35    */
+       150, 35, 
+       4, 10, 8, 7, 9, 10, 0, 4, 0, 7, 
+       81, 60, 73, 
+/* AUTO  0     */
+       210, 
+       0, 3, 0, 12, 0, 3, 0, 4, 
+       79, 62, 81, 
+/* AUTO  15    */
+       150, 15, 
+       4, 10, 8, 7, 9, 10, 0, 4, 0, 7, 
+       81, 60, 73, 
+/* AUTO  0     */
+       210, 
+       0, 6, 0, 12, 0, 6, 0, 4, 
+       79, 62, 81, 
+/* AUTO  100   */
+       182, 
+       4, 10, 8, 7, 9, 10, 0, 4, 0, 7, 
+       81, 60, 73, 
+/* AUTO  0     */
+       201, 
+       0, 4, 0, 4, 
+       79, 81, 
+/* AUTO  100   */
+       178, 
+       4, 4, 0, 4, 0, 4, 0, 4, 
+       81, 79, 81, 
+/* AUTO  100   */
+       181, 
+       1, 45, 4, 20, 14, 29, 14, 58, 14, 30, 
+       116, 73, 
+/* AUTO  0     */
+       209, 
+       0, 29, 0, 21, 0, 31, 0, 21, 
+       62, 62, 
+/* AUTO  100   */
+       164, 
+       4, 44, 
+       63, 
+/* AUTO  100   */
+       180, 
+       14, 35, 14, 36, 14, 37, 9, 10, 0, 10, 
+       58, 
+/* AUTO  100   */
+       165, 
+       0, 3, 
+       81, 73, 
+/* AUTO  0     */
+       204, 
+       19, 3, 13, 37, 0, 37, 
+       59, 
+/* AUTO  0     */
+       208, 
+       19, 2, 13, 36, 0, 36, 0, 37, 
+       72, 
+/* AUTO  0     */
+       208, 
+       19, 1, 13, 35, 0, 35, 0, 36, 
+       72, 
+/* AUTO  0     */
+       196, 
+       0, 3, 
+       81, 
+/* AUTO  100   */
+       172, 
+       8, 16, 14, 62, 0, 62, 
+       53, 
+/* AUTO  100   */
+       176, 
+       7, 17, 18, 28, 0, 28, 0, 17, 
+       62, 
+/* AUTO  100   */
+       176, 
+       4, 17, 8, 6, 5, 28, 0, 28, 
+       53, 
+};
+const uint8_t actions[] = {
+/* DROP  MACH  */
+       10, 18, 19, 
+       4, 10, 0, 4, 
+       109, 81, 73, 
+/* AUTO  0     */
+       211, 
+       15, 1, 0, 1, 0, 1, 0, 12, 
+       79, 54, 53, 64, 
+/* AUTO  0     */
+       206, 
+       19, 2, 0, 2, 0, 12, 
+       54, 53, 64, 
+/* AUTO  0     */
+       206, 
+       19, 3, 0, 3, 0, 12, 
+       54, 53, 64, 
+/* AUTO  0     */
+       201, 
+       19, 4, 0, 4, 
+       54, 64, 
+/* AUTO  0     */
+       206, 
+       19, 5, 0, 5, 0, 12, 
+       54, 53, 64, 
+/* AUTO  0     */
+       211, 
+       16, 5, 0, 6, 0, 6, 0, 12, 
+       79, 54, 53, 64, 
+/* AUTO  0     */
+       202, 
+       0, 7, 0, 4, 
+       60, 81, 64, 
+/* GO    MACH  */
+       9, 1, 19, 
+       4, 4, 0, 10, 
+       54, 109, 
+/* GO    MACH  */
+       10, 1, 19, 
+       2, 12, 0, 10, 
+       109, 54, 64, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* GO    WIND  */
+       10, 1, 11, 
+       4, 39, 0, 36, 
+       109, 54, 64, 
+/* GET   GLOV  */
+       8, 10, 9, 
+       3, 1, 0, 1, 
+       52, 
+/* WEAR  GLOV  */
+       13, 34, 9, 
+       1, 1, 0, 1, 0, 33, 
+       109, 72, 
+/* DROP  GLOV  */
+       9, 18, 9, 
+       1, 1, 0, 1, 
+       53, 109, 
+/* DROP  GLOV  */
+       4, 18, 9, 
+       1, 33, 
+       120, 
+/* REMO  GLOV  */
+       13, 36, 9, 
+       1, 33, 0, 33, 0, 1, 
+       72, 109, 
+/* BREA  WIND  */
+       8, 39, 11, 
+       4, 36, 8, 3, 
+       108, 
+/* BREA  WIND  */
+       15, 39, 11, 
+       4, 36, 9, 3, 6, 33, 
+       109, 103, 25, 61, 
+/* BREA  WIND  */
+       23, 39, 11, 
+       4, 36, 9, 3, 1, 33, 0, 8, 0, 3, 
+       109, 53, 58, 64, 
+/* GO    WIND  */
+       14, 1, 11, 
+       4, 36, 8, 3, 0, 39, 
+       109, 54, 64, 
+/* PRES  BUTT  */
+       4, 63, 43, 
+       4, 10, 
+       11, 
+/* LOOK  PAIN  */
+       14, 7, 13, 
+       2, 2, 14, 5, 0, 5, 
+       109, 53, 110, 
+/* OPEN  DRAW  */
+       12, 5, 15, 
+       4, 39, 2, 3, 6, 5, 
+       3, 
+/* OPEN  DRAW  */
+       21, 5, 15, 
+       4, 39, 2, 3, 1, 5, 0, 3, 0, 4, 
+       109, 72, 
+/* LOOK  DRAW  */
+       23, 7, 15, 
+       4, 39, 2, 4, 14, 6, 0, 6, 0, 7, 
+       17, 23, 53, 53, 
+/* PRES  FOR   */
+       15, 63, 45, 
+       4, 10, 9, 10, 0, 7, 
+       109, 58, 114, 115, 
+/* PRES  REV   */
+       15, 63, 44, 
+       4, 10, 9, 10, 0, 7, 
+       109, 58, 114, 115, 
+/* OPEN  DOOR  */
+       21, 5, 7, 
+       4, 37, 2, 49, 1, 5, 0, 49, 0, 50, 
+       72, 109, 
+/* OPEN  DOOR  */
+       12, 5, 7, 
+       4, 37, 2, 49, 6, 5, 
+       3, 
+/* GO    DOOR  */
+       10, 1, 7, 
+       2, 50, 0, 4, 
+       109, 54, 64, 
+/* GRAB  BUSH  */
+       10, 68, 10, 
+       4, 32, 0, 43, 
+       54, 64, 111, 
+/* SWIM  ANY   */
+       4, 42, 0, 
+       4, 32, 
+       49, 
+/* LOOK  CASS  */
+       6, 7, 50, 
+       3, 11, 
+       17, 36, 37, 
+/* RING  BELL  */
+       5, 43, 8, 
+       4, 34, 
+       12, 12, 
+/* OPEN  WIND  */
+       8, 5, 11, 
+       4, 36, 14, 8, 
+       6, 
+/* GET   PRIS  */
+       8, 10, 77, 
+       3, 16, 0, 16, 
+       52, 
+/* GET   PRIS  */
+       8, 10, 77, 
+       3, 45, 0, 45, 
+       52, 
+/* GET   PRIS  */
+       8, 10, 77, 
+       3, 46, 0, 46, 
+       52, 
+/* DROP  PRIS  */
+       9, 18, 77, 
+       1, 16, 0, 16, 
+       53, 109, 
+/* DROP  PRIS  */
+       9, 18, 77, 
+       1, 45, 0, 45, 
+       53, 109, 
+/* DROP  PRIS  */
+       9, 18, 77, 
+       1, 46, 0, 46, 
+       53, 109, 
+/* FIT   PRIS  */
+       23, 71, 77, 
+       1, 16, 4, 10, 0, 3, 0, 16, 0, 38, 
+       81, 62, 109, 73, 
+/* AUTO  0     */
+       203, 
+       0, 1, 0, 3, 
+       88, 82, 81, 15, 
+/* FIT   PRIS  */
+       23, 71, 77, 
+       4, 10, 1, 45, 0, 3, 0, 45, 0, 38, 
+       109, 81, 62, 73, 
+/* AUTO  0     */
+       203, 
+       0, 1, 0, 3, 
+       82, 81, 88, 15, 
+/* FIT   PRIS  */
+       23, 71, 77, 
+       4, 10, 1, 46, 0, 3, 0, 46, 0, 38, 
+       109, 81, 62, 73, 
+/* AUTO  0     */
+       203, 
+       0, 1, 0, 3, 
+       88, 82, 81, 15, 
+/* EAT   BEEF  */
+       15, 60, 63, 
+       3, 18, 0, 18, 0, 38, 
+       62, 109, 29, 64, 
+/* EAT   BISC  */
+       15, 60, 65, 
+       3, 19, 0, 19, 0, 38, 
+       62, 109, 29, 64, 
+/* LOOK  MACH  */
+       4, 7, 19, 
+       2, 12, 
+       42, 
+/* CLIM  RIGG  */
+       10, 26, 31, 
+       4, 24, 0, 29, 
+       109, 54, 64, 
+/* LOOK  POUC  */
+       15, 7, 71, 
+       3, 15, 14, 46, 0, 46, 
+       53, 109, 110, 64, 
+/* LOOK  BUTT  */
+       5, 7, 43, 
+       4, 10, 
+       109, 107, 
+/* LOOK  LOG   */
+       5, 7, 68, 
+       3, 21, 
+       16, 123, 
+/* PRES  FOR   */
+       23, 63, 45, 
+       4, 10, 8, 10, 0, 4, 0, 1, 0, 4, 
+       81, 82, 81, 10, 
+/* PRES  REV   */
+       19, 63, 44, 
+       4, 10, 8, 10, 0, 4, 0, 4, 
+       81, 77, 81, 10, 
+/* OPEN  DOOR  */
+       8, 5, 7, 
+       4, 28, 2, 56, 
+       8, 
+/* OPEN  DOOR  */
+       13, 5, 7, 
+       4, 28, 2, 44, 6, 7, 
+       45, 50, 
+/* OPEN  DOOR  */
+       21, 5, 7, 
+       4, 28, 2, 44, 1, 7, 0, 44, 0, 56, 
+       109, 72, 
+/* GO    DOOR  */
+       10, 1, 7, 
+       2, 56, 0, 26, 
+       109, 54, 64, 
+/* PLAY  CASS  */
+       7, 61, 50, 
+       3, 11, 
+       109, 16, 118, 119, 
+/* LIGH  FLAS  */
+       14, 22, 48, 
+       1, 10, 0, 10, 0, 9, 
+       109, 72, 64, 
+/* UNLI  FLAS  */
+       14, 24, 48, 
+       1, 9, 0, 9, 0, 10, 
+       109, 72, 64, 
+/* FEED  BRON  */
+       23, 49, 52, 
+       2, 22, 1, 19, 0, 22, 0, 19, 0, 38, 
+       59, 62, 2, 34, 
+/* FEED  BRON  */
+       10, 49, 52, 
+       2, 22, 6, 19, 
+       45, 2, 33, 
+/* LOOK  BRON  */
+       4, 7, 52, 
+       2, 22, 
+       46, 
+/* GO    CAUS  */
+       10, 1, 39, 
+       4, 13, 2, 22, 
+       45, 2, 102, 
+/* GO    CAUS  */
+       14, 1, 39, 
+       4, 13, 14, 22, 0, 14, 
+       109, 54, 64, 
+/* GO    BOAT  */
+       8, 1, 53, 
+       4, 14, 2, 23, 
+       4, 
+/* LOOK  BOAT  */
+       4, 7, 53, 
+       2, 23, 
+       38, 
+/* GO    BOAT  */
+       19, 1, 53, 
+       2, 57, 4, 14, 0, 15, 0, 57, 
+       109, 54, 53, 64, 
+/* GO    BOAT  */
+       15, 1, 53, 
+       4, 15, 0, 14, 0, 57, 
+       109, 54, 53, 64, 
+/* MEND  BOAT  */
+       23, 50, 53, 
+       2, 23, 3, 13, 3, 14, 3, 20, 0, 13, 
+       59, 109, 27, 73, 
+/* AUTO  0     */
+       210, 
+       0, 23, 0, 57, 0, 14, 0, 20, 
+       72, 59, 59, 
+/* MEND  BOAT  */
+       5, 50, 53, 
+       2, 23, 
+       45, 28, 
+/* DIG   ANY   */
+       19, 47, 0, 
+       4, 15, 1, 24, 14, 16, 0, 16, 
+       109, 17, 23, 53, 
+/* DIG   ANY   */
+       9, 47, 0, 
+       4, 15, 1, 24, 
+       17, 9, 
+/* LOOK  STON  */
+       5, 7, 80, 
+       4, 2, 
+       17, 43, 
+/* PRES  STON  */
+       10, 63, 80, 
+       4, 2, 0, 31, 
+       109, 47, 53, 
+/* GO    OPEN  */
+       19, 1, 81, 
+       4, 2, 2, 31, 0, 18, 0, 31, 
+       109, 54, 59, 117, 
+/* PULL  LEVE  */
+       14, 56, 59, 
+       4, 19, 0, 28, 0, 17, 
+       62, 47, 13, 
+/* JAM   LEVE  */
+       18, 53, 59, 
+       4, 19, 1, 25, 0, 2, 0, 25, 
+       58, 53, 109, 
+/* JAM   LEVE  */
+       9, 53, 59, 
+       4, 19, 6, 25, 
+       45, 14, 
+/* GO    DOOR  */
+       14, 1, 7, 
+       4, 17, 2, 28, 0, 21, 
+       109, 54, 64, 
+/* LOOK  STAT  */
+       4, 7, 29, 
+       2, 43, 
+       41, 
+/* CLIM  STAT  */
+       10, 26, 29, 
+       2, 43, 0, 20, 
+       109, 54, 64, 
+/* GO    OPEN  */
+       10, 1, 81, 
+       4, 21, 2, 29, 
+       45, 51, 102, 
+/* GO    OPEN  */
+       14, 1, 81, 
+       4, 21, 2, 31, 0, 22, 
+       109, 54, 64, 
+/* FEED  DOG   */
+       23, 49, 60, 
+       2, 29, 1, 18, 0, 18, 0, 29, 0, 58, 
+       59, 72, 51, 32, 
+/* FEED  DOG   */
+       23, 49, 60, 
+       2, 29, 1, 19, 0, 19, 0, 29, 0, 58, 
+       59, 72, 51, 32, 
+/* FEED  DOG   */
+       9, 49, 60, 
+       6, 18, 6, 19, 
+       45, 31, 
+/* FEED  DOG   */
+       4, 49, 60, 
+       2, 30, 
+       30, 
+/* LOOK  DOG   */
+       4, 7, 60, 
+       2, 29, 
+       46, 
+/* KILL  DOG   */
+       18, 31, 60, 
+       2, 29, 1, 6, 0, 29, 0, 30, 
+       72, 26, 18, 
+/* KILL  DOG   */
+       22, 31, 60, 
+       2, 29, 1, 26, 0, 26, 0, 29, 0, 30, 
+       53, 72, 18, 
+/* SHOO  DOG   */
+       18, 58, 60, 
+       2, 29, 1, 6, 0, 29, 0, 30, 
+       26, 72, 18, 
+/* KILL  DOG   */
+       13, 31, 60, 
+       2, 29, 6, 6, 6, 26, 
+       45, 22, 
+/* KILL  DOG   */
+       4, 31, 60, 
+       2, 30, 
+       19, 
+/* OPEN  CHES  */
+       9, 5, 69, 
+       3, 17, 6, 7, 
+       45, 50, 
+/* OPEN  CHES  */
+       23, 5, 69, 
+       3, 17, 1, 7, 0, 17, 0, 51, 0, 40, 
+       72, 53, 17, 23, 
+/* LEVE  META  */
+       22, 79, 74, 
+       4, 5, 2, 53, 1, 7, 0, 53, 0, 54, 
+       72, 109, 64, 
+/* HELP  ANY   */
+       8, 66, 0, 
+       4, 6, 9, 10, 
+       7, 
+/* GO    SHAF  */
+       10, 1, 42, 
+       2, 54, 0, 41, 
+       54, 109, 64, 
+/* BREA  GENE  */
+       8, 39, 35, 
+       2, 59, 6, 40, 
+       24, 
+/* BREA  GENE  */
+       19, 39, 35, 
+       2, 59, 1, 40, 0, 59, 0, 61, 
+       72, 109, 47, 73, 
+/* AUTO  0     */
+       200, 
+       0, 42, 0, 47, 
+       72, 
+/* GO    ARCH  */
+       6, 1, 41, 
+       2, 42, 
+       45, 39, 102, 
+/* GO    ARCH  */
+       10, 1, 41, 
+       2, 47, 0, 42, 
+       109, 54, 64, 
+/* LOOK  ROBO  */
+       4, 7, 55, 
+       2, 42, 
+       5, 
+/* LOOK  DOCT  */
+       4, 7, 46, 
+       3, 32, 
+       35, 
+/* SHOO  ANY   */
+       4, 58, 0, 
+       1, 6, 
+       26, 
+/* GO    LAKE  */
+       4, 1, 38, 
+       4, 13, 
+       48, 
+/* HELP  ANY   */
+       0, 66, 0, 
+       44, 
+/* INVE  ANY   */
+       0, 38, 0, 
+       66, 
+/* GET   INVE  */
+       0, 10, 83, 
+       66, 
+/* SAVE  ANY   */
+       0, 57, 0, 
+       71, 
+/* QUIT  ANY   */
+       0, 44, 0, 
+       63, 
+/* LOOK  ANY   */
+       1, 7, 0, 
+       17, 40, 
+/* GO    ANY   */
+       0, 1, 0, 
+       45, 
+/* FUCK  ANY   */
+       0, 74, 0, 
+       121, 
+/* KILL  ANY   */
+       0, 31, 0, 
+       45, 
+/* EAT   ANY   */
+       0, 60, 0, 
+       20, 
+/* SAY   ANY   */
+       3, 17, 0, 
+       109, 85, 9, 122, 
+/* WAIT  ANY   */
+       2, 84, 0, 
+       21, 88, 88, 
+/* AUTO  0     */
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *RUN */
+       210, 85, 78, 32,
+       /* *WALK */
+       215, 65, 76, 75,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* *UNLO */
+       213, 78, 76, 79,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *SEAR */
+       211, 69, 65, 82,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* THRO */
+       84, 72, 82, 79,
+       /* *SLIN */
+       211, 76, 73, 78,
+       /* *CHUC */
+       195, 72, 85, 67,
+       /* *HURL */
+       200, 85, 82, 76,
+       /* SAY */
+       83, 65, 89, 32,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *GIVE */
+       199, 73, 86, 69,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* *IGNI */
+       201, 71, 78, 73,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* *DOUS */
+       196, 79, 85, 83,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* *ASCE */
+       193, 83, 67, 69,
+       /* READ */
+       82, 69, 65, 68,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* LOAD */
+       76, 79, 65, 68,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *MURD */
+       205, 85, 82, 68,
+       /* *SLAY */
+       211, 76, 65, 89,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* *DON */
+       196, 79, 78, 32,
+       /* REMO */
+       82, 69, 77, 79,
+       /* *DOFF */
+       196, 79, 70, 70,
+       /* INVE */
+       73, 78, 86, 69,
+       /* BREA */
+       66, 82, 69, 65,
+       /* *SMAS */
+       211, 77, 65, 83,
+       /* *DEST */
+       196, 69, 83, 84,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* RING */
+       82, 73, 78, 71,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* *END */
+       197, 78, 68, 32,
+       /* SAIL */
+       83, 65, 73, 76,
+       /* DIG */
+       68, 73, 71, 32,
+       /* *SHOV */
+       211, 72, 79, 86,
+       /* FEED */
+       70, 69, 69, 68,
+       /* MEND */
+       77, 69, 78, 68,
+       /* *FIX */
+       198, 73, 88, 32,
+       /* *REPA */
+       210, 69, 80, 65,
+       /* JAM */
+       74, 65, 77, 32,
+       /* *WEDG */
+       215, 69, 68, 71,
+       /* TOUC */
+       84, 79, 85, 67,
+       /* PULL */
+       80, 85, 76, 76,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* SHOO */
+       83, 72, 79, 79,
+       /* *FIRE */
+       198, 73, 82, 69,
+       /* EAT */
+       69, 65, 84, 32,
+       /* PLAY */
+       80, 76, 65, 89,
+       /* *STAR */
+       211, 84, 65, 82,
+       /* PRES */
+       80, 82, 69, 83,
+       /* *PUSH */
+       208, 85, 83, 72,
+       /* *JAB */
+       202, 65, 66, 32,
+       /* HELP */
+       72, 69, 76, 80,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* GRAB */
+       71, 82, 65, 66,
+       /* FOR */
+       70, 79, 82, 32,
+       /* REV */
+       82, 69, 86, 32,
+       /* FIT */
+       70, 73, 84, 32,
+       /* *INSE */
+       201, 78, 83, 69,
+       /* *PLUG */
+       208, 76, 85, 71,
+       /* FUCK */
+       70, 85, 67, 75,
+       /* *BOLL */
+       194, 79, 76, 76,
+       /* *BAST */
+       194, 65, 83, 84,
+       /* *BALL */
+       194, 65, 76, 76,
+       /* *SHIT */
+       211, 72, 73, 84,
+       /* LEVE */
+       76, 69, 86, 69,
+       /* *FORC */
+       198, 79, 82, 67,
+       /* *PRIS */
+       208, 82, 73, 83,
+       /* *JEMM */
+       202, 69, 77, 77,
+       /* *CROW */
+       195, 82, 79, 87,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* *STAL */
+       211, 84, 65, 76,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* BELL */
+       66, 69, 76, 76,
+       /* GLOV */
+       71, 76, 79, 86,
+       /* BUSH */
+       66, 85, 83, 72,
+       /* WIND */
+       87, 73, 78, 68,
+       /* GLAS */
+       71, 76, 65, 83,
+       /* PAIN */
+       80, 65, 73, 78,
+       /* KEY */
+       75, 69, 89, 32,
+       /* DRAW */
+       68, 82, 65, 87,
+       /* PIST */
+       80, 73, 83, 84,
+       /* CROW */
+       67, 82, 79, 87,
+       /* *BAR */
+       194, 65, 82, 32,
+       /* MACH */
+       77, 65, 67, 72,
+       /* *PORT */
+       208, 79, 82, 84,
+       /* POLI */
+       80, 79, 76, 73,
+       /* HOUS */
+       72, 79, 85, 83,
+       /* STUD */
+       83, 84, 85, 68,
+       /* CELL */
+       67, 69, 76, 76,
+       /* SPHI */
+       83, 80, 72, 73,
+       /* BOX */
+       66, 79, 88, 32,
+       /* WALL */
+       87, 65, 76, 76,
+       /* WEAP */
+       87, 69, 65, 80,
+       /* STAT */
+       83, 84, 65, 84,
+       /* DECK */
+       68, 69, 67, 75,
+       /* RIGG */
+       82, 73, 71, 71,
+       /* CABI */
+       67, 65, 66, 73,
+       /* LOCK */
+       76, 79, 67, 75,
+       /* PLAI */
+       80, 76, 65, 73,
+       /* GENE */
+       71, 69, 78, 69,
+       /* CORR */
+       67, 79, 82, 82,
+       /* SWAM */
+       83, 87, 65, 77,
+       /* LAKE */
+       76, 65, 75, 69,
+       /* CAUS */
+       67, 65, 85, 83,
+       /* ISLA */
+       73, 83, 76, 65,
+       /* ARCH */
+       65, 82, 67, 72,
+       /* SHAF */
+       83, 72, 65, 70,
+       /* BUTT */
+       66, 85, 84, 84,
+       /* REV */
+       82, 69, 86, 32,
+       /* FOR */
+       70, 79, 82, 32,
+       /* DOCT */
+       68, 79, 67, 84,
+       /* *POTT */
+       208, 79, 84, 84,
+       /* FLAS */
+       70, 76, 65, 83,
+       /* *LAMP */
+       204, 65, 77, 80,
+       /* CASS */
+       67, 65, 83, 83,
+       /* *TAPE */
+       212, 65, 80, 69,
+       /* BRON */
+       66, 82, 79, 78,
+       /* BOAT */
+       66, 79, 65, 84,
+       /* SHOV */
+       83, 72, 79, 86,
+       /* ROBO */
+       82, 79, 66, 79,
+       /* *GUAR */
+       199, 85, 65, 82,
+       /* ROCK */
+       82, 79, 67, 75,
+       /* SPEA */
+       83, 80, 69, 65,
+       /* LEVE */
+       76, 69, 86, 69,
+       /* DOG */
+       68, 79, 71, 32,
+       /* ROPE */
+       82, 79, 80, 69,
+       /* SAIL */
+       83, 65, 73, 76,
+       /* BEEF */
+       66, 69, 69, 70,
+       /* *SALT */
+       211, 65, 76, 84,
+       /* BISC */
+       66, 73, 83, 67,
+       /* NEED */
+       78, 69, 69, 68,
+       /* *THRE */
+       212, 72, 82, 69,
+       /* LOG */
+       76, 79, 71, 32,
+       /* CHES */
+       67, 72, 69, 83,
+       /* HAMM */
+       72, 65, 77, 77,
+       /* POUC */
+       80, 79, 85, 67,
+       /* *LEAT */
+       204, 69, 65, 84,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* META */
+       77, 69, 84, 65,
+       /* *PLAT */
+       208, 76, 65, 84,
+       /* FIRS */
+       70, 73, 82, 83,
+       /* PRIS */
+       80, 82, 73, 83,
+       /* OFF */
+       79, 70, 70, 32,
+       /* *YOU */
+       217, 79, 85, 32,
+       /* STON */
+       83, 84, 79, 78,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* GAME */
+       71, 65, 77, 69,
+       /* INVE */
+       73, 78, 86, 69,
+       /* TUNN */
+       84, 85, 78, 78,
+       /* MOOR */
+       77, 79, 79, 82,
+       /* SOCK */
+       83, 79, 67, 75,
+       /* SHAF */
+       83, 72, 65, 70,
+       0,
+};
+const uint8_t automap[] = {
+       /* KEY */
+       75, 69, 89, 32,
+       5,
+       /* PIST */
+       80, 73, 83, 84,
+       6,
+       /* CROW */
+       67, 82, 79, 87,
+       7,
+       /* GLAS */
+       71, 76, 65, 83,
+       8,
+       /* FLAS */
+       70, 76, 65, 83,
+       9,
+       /* FLAS */
+       70, 76, 65, 83,
+       10,
+       /* CASS */
+       67, 65, 83, 83,
+       11,
+       /* ROPE */
+       82, 79, 80, 69,
+       13,
+       /* SAIL */
+       83, 65, 73, 76,
+       14,
+       /* POUC */
+       80, 79, 85, 67,
+       15,
+       /* CHES */
+       67, 72, 69, 83,
+       17,
+       /* BEEF */
+       66, 69, 69, 70,
+       18,
+       /* BISC */
+       66, 73, 83, 67,
+       19,
+       /* NEED */
+       78, 69, 69, 68,
+       20,
+       /* LOG */
+       76, 79, 71, 32,
+       21,
+       /* SHOV */
+       83, 72, 79, 86,
+       24,
+       /* ROCK */
+       82, 79, 67, 75,
+       25,
+       /* SPEA */
+       83, 80, 69, 65,
+       26,
+       /* LEVE */
+       76, 69, 86, 69,
+       27,
+       /* DOCT */
+       68, 79, 67, 84,
+       32,
+       /* HAMM */
+       72, 65, 77, 77,
+       40,
+       /* FLAS */
+       70, 76, 65, 83,
+       62,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst03.c b/Applications/games/myst03.c
new file mode 100644 (file)
index 0000000..417ec59
--- /dev/null
@@ -0,0 +1,2886 @@
+#define NUM_OBJ 64
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 5;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 52;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+40, 67, 41, 32, 49, 57, 56, 50, 32, 66, 46, 72, 46, 0 };
+const uint8_t loctxt_1[] = {
+67, 111, 117, 114, 116, 121, 97, 114, 100, 0 };
+const uint8_t loctxt_2[] = {
+80, 97, 108, 97, 99, 101, 0 };
+const uint8_t loctxt_3[] = {
+84, 104, 114, 111, 110, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_4[] = {
+75, 105, 116, 99, 104, 101, 110, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 75, 105, 110, 103, 39, 115, 32, 67, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_6[] = {
+115, 101, 99, 114, 101, 116, 32, 86, 97, 117, 108, 116, 0 };
+const uint8_t loctxt_7[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 97, 32, 67, 114, 111, 115, 115, 114, 111, 97, 100, 115, 0 };
+const uint8_t loctxt_8[] = {
+100, 101, 110, 115, 101, 32, 70, 111, 114, 101, 115, 116, 0 };
+const uint8_t loctxt_9[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 77, 111, 117, 110, 116, 97, 105, 110, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_10[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 83, 99, 114, 101, 101, 32, 115, 108, 111, 112, 101, 0 };
+const uint8_t loctxt_11[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 77, 111, 117, 110, 116, 97, 105, 110, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_12[] = {
+67, 108, 105, 102, 102, 32, 83, 104, 101, 108, 116, 101, 114, 0 };
+const uint8_t loctxt_13[] = {
+67, 97, 118, 101, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 67, 108, 105, 102, 102, 0 };
+const uint8_t loctxt_15[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 115, 116, 114, 97, 110, 103, 101, 32, 76, 97, 107, 101, 0 };
+const uint8_t loctxt_16[] = {
+109, 121, 115, 116, 101, 114, 105, 111, 117, 115, 32, 66, 97, 114, 103, 101, 0 };
+const uint8_t loctxt_17[] = {
+100, 114, 105, 101, 100, 32, 117, 112, 32, 80, 111, 111, 108, 0 };
+const uint8_t loctxt_18[] = {
+114, 117, 105, 110, 101, 100, 32, 70, 111, 114, 101, 115, 116, 0 };
+const uint8_t loctxt_19[] = {
+67, 108, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t loctxt_20[] = {
+71, 73, 65, 78, 84, 32, 66, 117, 105, 108, 100, 105, 110, 103, 0 };
+const uint8_t loctxt_21[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 71, 73, 65, 78, 84, 32, 66, 117, 105, 108, 100, 105, 110, 103, 0 };
+const uint8_t loctxt_22[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 67, 111, 111, 107, 104, 111, 117, 115, 101, 0 };
+const uint8_t loctxt_23[] = {
+71, 73, 65, 78, 84, 39, 83, 32, 67, 111, 111, 107, 104, 111, 117, 115, 101, 0 };
+const uint8_t loctxt_24[] = {
+76, 117, 109, 98, 101, 114, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_25[] = {
+114, 105, 110, 103, 32, 111, 102, 32, 84, 111, 97, 100, 115, 116, 111, 111, 108, 115, 0 };
+const uint8_t loctxt_26[] = {
+100, 101, 101, 112, 32, 70, 111, 114, 101, 115, 116, 32, 67, 117, 116, 116, 105, 110, 103, 0 };
+const uint8_t loctxt_27[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 76, 111, 103, 32, 70, 108, 117, 109, 101, 0 };
+const uint8_t loctxt_28[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 97, 32, 82, 111, 99, 107, 32, 87, 97, 108, 108, 0 };
+const uint8_t loctxt_29[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 76, 101, 100, 103, 101, 0 };
+const uint8_t loctxt_30[] = {
+67, 97, 118, 101, 0 };
+const uint8_t loctxt_31[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 76, 111, 103, 0 };
+const uint8_t loctxt_32[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 76, 111, 103, 0 };
+const uint8_t loctxt_33[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 67, 108, 105, 102, 102, 0 };
+const uint8_t loctxt_34[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 76, 101, 100, 103, 101, 0 };
+const uint8_t loctxt_35[] = {
+71, 114, 101, 101, 110, 32, 80, 97, 115, 116, 117, 114, 101, 0 };
+const uint8_t loctxt_36[] = {
+71, 114, 101, 101, 110, 32, 80, 97, 115, 116, 117, 114, 101, 0 };
+const uint8_t loctxt_37[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 66, 114, 111, 111, 107, 0 };
+const uint8_t loctxt_38[] = {
+66, 97, 98, 98, 108, 105, 110, 103, 32, 66, 114, 111, 111, 107, 0 };
+const uint8_t loctxt_39[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 103, 114, 97, 115, 115, 121, 32, 80, 97, 116, 104, 0 };
+const uint8_t loctxt_40[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 80, 97, 116, 104, 0 };
+const uint8_t loctxt_41[] = {
+66, 117, 114, 110, 116, 45, 100, 111, 119, 110, 32, 86, 105, 108, 108, 97, 103, 101, 0 };
+const uint8_t loctxt_42[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 80, 97, 116, 104, 0 };
+const uint8_t loctxt_43[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 97, 32, 74, 117, 110, 99, 116, 105, 111, 110, 0 };
+const uint8_t loctxt_44[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 77, 97, 114, 115, 104, 121, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_45[] = {
+87, 111, 111, 100, 101, 110, 32, 72, 117, 116, 0 };
+const uint8_t loctxt_46[] = {
+66, 117, 114, 110, 116, 45, 100, 111, 119, 110, 32, 86, 105, 108, 108, 97, 103, 101, 0 };
+const uint8_t loctxt_47[] = {
+77, 97, 114, 115, 104, 0 };
+const uint8_t loctxt_48[] = {
+67, 105, 114, 99, 108, 101, 32, 111, 102, 32, 84, 114, 101, 101, 115, 0 };
+const uint8_t loctxt_49[] = {
+67, 101, 108, 108, 97, 114, 0 };
+const uint8_t loctxt_50[] = {
+87, 105, 108, 108, 111, 119, 32, 71, 114, 111, 118, 101, 0 };
+const uint8_t loctxt_51[] = {
+32, 0 };
+const uint8_t loctxt_52[] = {
+67, 114, 121, 112, 116, 32, 119, 105, 116, 104, 32, 110, 111, 32, 69, 120, 105, 116, 33, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 7, 0, 0, 2, 0, 0 } }, 
+               { loctxt_2,  { 0, 3, 1, 5, 0, 0 } }, 
+               { loctxt_3,  { 2, 0, 4, 0, 0, 0 } }, 
+               { loctxt_4,  { 0, 0, 0, 3, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 2, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 0, 5, 0, 0 } }, 
+               { loctxt_7,  { 11, 1, 8, 9, 0, 0 } }, 
+               { loctxt_8,  { 11, 8, 1, 11, 0, 0 } }, 
+               { loctxt_9,  { 0, 9, 11, 10, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 9, 0, 0, 0 } }, 
+               { loctxt_11,  { 0, 7, 8, 10, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 0, 0, 0, 10 } }, 
+               { loctxt_13,  { 0, 12, 0, 0, 0, 0 } }, 
+               { loctxt_14,  { 15, 0, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 14, 0, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 18, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 17, 21, 19, 0, 0, 0 } }, 
+               { loctxt_19,  { 0, 22, 0, 18, 0, 0 } }, 
+               { loctxt_20,  { 21, 0, 0, 0, 0, 0 } }, 
+               { loctxt_21,  { 18, 0, 22, 0, 0, 0 } }, 
+               { loctxt_22,  { 19, 26, 0, 21, 0, 0 } }, 
+               { loctxt_23,  { 0, 0, 0, 22, 0, 0 } }, 
+               { loctxt_24,  { 0, 0, 0, 27, 0, 20 } }, 
+               { loctxt_25,  { 0, 28, 26, 0, 0, 0 } }, 
+               { loctxt_26,  { 22, 0, 0, 25, 29, 0 } }, 
+               { loctxt_27,  { 0, 0, 24, 0, 0, 0 } }, 
+               { loctxt_28,  { 25, 0, 0, 0, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 0, 0, 0, 26 } }, 
+               { loctxt_30,  { 29, 0, 0, 0, 0, 0 } }, 
+               { loctxt_31,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_32,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_33,  { 0, 0, 0, 0, 34, 0 } }, 
+               { loctxt_34,  { 0, 0, 0, 0, 0, 33 } }, 
+               { loctxt_35,  { 36, 36, 35, 36, 0, 0 } }, 
+               { loctxt_36,  { 37, 35, 36, 35, 0, 0 } }, 
+               { loctxt_37,  { 38, 35, 0, 0, 0, 0 } }, 
+               { loctxt_38,  { 39, 37, 0, 0, 0, 0 } }, 
+               { loctxt_39,  { 40, 38, 0, 0, 0, 0 } }, 
+               { loctxt_40,  { 43, 39, 0, 0, 0, 0 } }, 
+               { loctxt_41,  { 42, 0, 0, 0, 0, 0 } }, 
+               { loctxt_42,  { 46, 41, 43, 0, 0, 0 } }, 
+               { loctxt_43,  { 0, 40, 44, 42, 0, 0 } }, 
+               { loctxt_44,  { 0, 0, 0, 43, 0, 0 } }, 
+               { loctxt_45,  { 0, 40, 0, 0, 0, 0 } }, 
+               { loctxt_46,  { 0, 42, 0, 0, 0, 0 } }, 
+               { loctxt_47,  { 0, 44, 48, 0, 0, 0 } }, 
+               { loctxt_48,  { 50, 0, 0, 0, 0, 0 } }, 
+               { loctxt_49,  { 0, 0, 0, 0, 46, 0 } }, 
+               { loctxt_50,  { 0, 48, 0, 0, 0, 0 } }, 
+               { loctxt_51,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_52,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       1,
+       0,
+       5,
+       5,
+       0,
+       6,
+       0,
+       0,
+       0,
+       0,
+       0,
+       3,
+       0,
+       3,
+       5,
+       0,
+       0,
+       0,
+       7,
+       24,
+       0,
+       13,
+       13,
+       15,
+       15,
+       0,
+       0,
+       18,
+       0,
+       0,
+       0,
+       0,
+       20,
+       19,
+       0,
+       23,
+       22,
+       25,
+       29,
+       20,
+       27,
+       30,
+       34,
+       0,
+       0,
+       45,
+       0,
+       0,
+       46,
+       0,
+       49,
+       49,
+       0,
+       0,
+       50,
+       50,
+       0,
+       44,
+       21,
+       32,
+       40,
+       0,
+       0,
+       10,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+68, 101, 97, 100, 32, 77, 101, 115, 115, 101, 110, 103, 101, 114, 0 };
+const uint8_t objtxt_1[] = {
+87, 105, 108, 108, 111, 119, 32, 66, 114, 97, 110, 99, 104, 0 };
+const uint8_t objtxt_2[] = {
+66, 101, 100, 0 };
+const uint8_t objtxt_3[] = {
+83, 117, 105, 116, 32, 111, 102, 32, 65, 114, 109, 111, 117, 114, 0 };
+const uint8_t objtxt_4[] = {
+65, 114, 109, 111, 117, 114, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_5[] = {
+83, 119, 111, 114, 100, 0 };
+const uint8_t objtxt_6[] = {
+80, 117, 114, 115, 101, 0 };
+const uint8_t objtxt_7[] = {
+67, 111, 105, 110, 115, 0 };
+const uint8_t objtxt_8[] = {
+65, 109, 117, 108, 101, 116, 0 };
+const uint8_t objtxt_9[] = {
+71, 108, 111, 119, 105, 110, 103, 32, 79, 114, 98, 0 };
+const uint8_t objtxt_10[] = {
+83, 101, 99, 114, 101, 116, 32, 80, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t objtxt_11[] = {
+90, 65, 82, 68, 82, 65, 32, 116, 104, 101, 32, 77, 97, 103, 105, 99, 105, 97, 110, 0 };
+const uint8_t objtxt_12[] = {
+90, 65, 82, 68, 82, 65, 32, 40, 100, 101, 97, 100, 41, 0 };
+const uint8_t objtxt_13[] = {
+84, 104, 101, 32, 71, 79, 76, 68, 69, 78, 32, 66, 65, 84, 79, 78, 0 };
+const uint8_t objtxt_14[] = {
+67, 111, 97, 116, 32, 111, 102, 32, 65, 114, 109, 115, 0 };
+const uint8_t objtxt_15[] = {
+80, 105, 108, 108, 111, 119, 0 };
+const uint8_t objtxt_16[] = {
+72, 111, 111, 107, 0 };
+const uint8_t objtxt_17[] = {
+72, 111, 111, 107, 32, 40, 116, 105, 101, 100, 32, 116, 111, 32, 82, 111, 112, 101, 41, 0 };
+const uint8_t objtxt_18[] = {
+66, 101, 103, 103, 97, 114, 0 };
+const uint8_t objtxt_19[] = {
+76, 111, 103, 0 };
+const uint8_t objtxt_20[] = {
+71, 108, 97, 115, 115, 32, 79, 114, 98, 0 };
+const uint8_t objtxt_21[] = {
+72, 117, 103, 101, 32, 83, 101, 114, 112, 101, 110, 116, 0 };
+const uint8_t objtxt_22[] = {
+65, 114, 114, 111, 119, 104, 101, 97, 100, 0 };
+const uint8_t objtxt_23[] = {
+70, 101, 114, 114, 121, 109, 97, 110, 0 };
+const uint8_t objtxt_24[] = {
+66, 97, 114, 103, 101, 0 };
+const uint8_t objtxt_25[] = {
+67, 97, 118, 101, 32, 69, 110, 116, 114, 97, 110, 99, 101, 0 };
+const uint8_t objtxt_26[] = {
+32, 0 };
+const uint8_t objtxt_27[] = {
+84, 114, 101, 101, 32, 83, 116, 117, 109, 112, 115, 0 };
+const uint8_t objtxt_28[] = {
+82, 111, 112, 101, 0 };
+const uint8_t objtxt_29[] = {
+82, 111, 112, 101, 32, 119, 105, 116, 104, 32, 72, 111, 111, 107, 32, 111, 110, 32, 101, 110, 100, 0 };
+const uint8_t objtxt_30[] = {
+32, 0 };
+const uint8_t objtxt_31[] = {
+65, 110, 103, 114, 121, 32, 71, 73, 65, 78, 84, 83, 0 };
+const uint8_t objtxt_32[] = {
+83, 108, 101, 101, 112, 105, 110, 103, 32, 71, 73, 65, 78, 84, 83, 0 };
+const uint8_t objtxt_33[] = {
+67, 104, 97, 105, 110, 101, 100, 32, 83, 108, 97, 118, 101, 0 };
+const uint8_t objtxt_34[] = {
+83, 108, 97, 118, 101, 0 };
+const uint8_t objtxt_35[] = {
+67, 97, 117, 108, 100, 114, 111, 110, 0 };
+const uint8_t objtxt_36[] = {
+67, 111, 111, 107, 104, 111, 117, 115, 101, 0 };
+const uint8_t objtxt_37[] = {
+84, 111, 97, 100, 115, 116, 111, 111, 108, 115, 0 };
+const uint8_t objtxt_38[] = {
+66, 111, 117, 108, 100, 101, 114, 0 };
+const uint8_t objtxt_39[] = {
+76, 97, 100, 100, 101, 114, 0 };
+const uint8_t objtxt_40[] = {
+76, 111, 103, 32, 70, 108, 117, 109, 101, 0 };
+const uint8_t objtxt_41[] = {
+83, 99, 114, 111, 108, 108, 0 };
+const uint8_t objtxt_42[] = {
+71, 105, 97, 110, 116, 32, 69, 97, 103, 108, 101, 0 };
+const uint8_t objtxt_43[] = {
+69, 97, 103, 108, 101, 115, 32, 70, 101, 97, 116, 104, 101, 114, 115, 0 };
+const uint8_t objtxt_44[] = {
+77, 101, 100, 97, 108, 108, 105, 111, 110, 0 };
+const uint8_t objtxt_45[] = {
+68, 101, 97, 100, 32, 68, 119, 97, 114, 102, 0 };
+const uint8_t objtxt_46[] = {
+83, 112, 101, 99, 116, 97, 99, 108, 101, 115, 0 };
+const uint8_t objtxt_47[] = {
+83, 112, 101, 99, 116, 97, 99, 108, 101, 115, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_48[] = {
+67, 104, 97, 114, 114, 101, 100, 32, 68, 101, 98, 114, 105, 115, 0 };
+const uint8_t objtxt_49[] = {
+84, 114, 97, 112, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_50[] = {
+80, 108, 97, 113, 117, 101, 32, 111, 110, 32, 87, 97, 108, 108, 0 };
+const uint8_t objtxt_51[] = {
+79, 114, 110, 97, 116, 101, 32, 67, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_52[] = {
+79, 112, 101, 110, 32, 67, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_53[] = {
+65, 110, 99, 105, 101, 110, 116, 32, 66, 111, 111, 107, 0 };
+const uint8_t objtxt_54[] = {
+83, 97, 99, 114, 101, 100, 32, 87, 105, 108, 108, 111, 119, 0 };
+const uint8_t objtxt_55[] = {
+71, 117, 97, 114, 100, 105, 97, 110, 115, 32, 111, 102, 32, 83, 97, 99, 114, 101, 100, 32, 87, 105, 108, 108, 111, 119, 0 };
+const uint8_t objtxt_56[] = {
+68, 114, 117, 103, 103, 101, 100, 32, 83, 108, 97, 118, 101, 0 };
+const uint8_t objtxt_57[] = {
+77, 97, 114, 115, 104, 0 };
+const uint8_t objtxt_58[] = {
+71, 73, 65, 78, 84, 32, 66, 117, 105, 108, 100, 105, 110, 103, 0 };
+const uint8_t objtxt_59[] = {
+66, 101, 97, 99, 104, 0 };
+const uint8_t objtxt_60[] = {
+72, 117, 116, 0 };
+const uint8_t objtxt_61[] = {
+68, 114, 117, 103, 103, 101, 100, 32, 71, 73, 65, 78, 84, 83, 0 };
+const uint8_t objtxt_62[] = {
+65, 114, 109, 111, 117, 114, 32, 111, 110, 32, 72, 111, 111, 107, 0 };
+const uint8_t objtxt_63[] = {
+76, 101, 100, 103, 101, 0 };
+const uint8_t objtxt_64[] = {
+78, 111, 116, 101, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+};
+const uint8_t msgtxt_0[] = {
+32, 0 };
+const uint8_t msgtxt_1[] = {
+71, 111, 111, 100, 32, 108, 117, 99, 107, 32, 111, 110, 32, 65, 82, 82, 79, 87, 32, 79, 70, 32, 68, 69, 65, 84, 72, 32, 40, 80, 116, 46, 49, 41, 0 };
+const uint8_t msgtxt_2[] = {
+70, 111, 114, 32, 116, 104, 111, 115, 101, 32, 119, 104, 111, 32, 106, 111, 117, 114, 110, 101, 121, 32, 105, 110, 32, 68, 114, 101, 97, 109, 115, 46, 46, 0 };
+const uint8_t msgtxt_3[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_4[] = {
+78, 111, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_5[] = {
+115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_6[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_7[] = {
+104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_8[] = {
+73, 32, 102, 111, 117, 110, 100, 0 };
+const uint8_t msgtxt_9[] = {
+83, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_10[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_11[] = {
+72, 101, 32, 115, 110, 101, 101, 114, 115, 46, 46, 0 };
+const uint8_t msgtxt_12[] = {
+73, 116, 39, 115, 32, 110, 111, 116, 32, 119, 104, 97, 116, 32, 104, 101, 32, 119, 97, 110, 116, 115, 33, 0 };
+const uint8_t msgtxt_13[] = {
+71, 111, 32, 119, 97, 115, 104, 32, 121, 111, 117, 114, 32, 77, 111, 117, 116, 104, 32, 111, 117, 116, 33, 0 };
+const uint8_t msgtxt_14[] = {
+65, 65, 82, 82, 71, 71, 72, 72, 33, 33, 0 };
+const uint8_t msgtxt_15[] = {
+73, 39, 109, 32, 100, 114, 111, 119, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_16[] = {
+72, 101, 32, 105, 115, 32, 100, 114, 117, 103, 103, 101, 100, 33, 0 };
+const uint8_t msgtxt_17[] = {
+72, 101, 32, 103, 97, 115, 112, 115, 32, 97, 110, 100, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_18[] = {
+77, 97, 103, 105, 99, 97, 108, 32, 65, 114, 114, 111, 119, 46, 46, 46, 68, 101, 115, 116, 114, 111, 121, 32, 88, 69, 82, 68, 79, 78, 46, 46, 33, 0 };
+const uint8_t msgtxt_19[] = {
+72, 101, 32, 100, 105, 101, 115, 33, 0 };
+const uint8_t msgtxt_20[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 105, 115, 32, 116, 111, 111, 32, 104, 101, 97, 118, 121, 33, 0 };
+const uint8_t msgtxt_21[] = {
+73, 32, 115, 108, 105, 100, 101, 32, 100, 111, 119, 110, 33, 0 };
+const uint8_t msgtxt_22[] = {
+83, 101, 114, 112, 101, 110, 116, 32, 101, 97, 116, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_23[] = {
+73, 116, 32, 116, 117, 114, 110, 115, 33, 0 };
+const uint8_t msgtxt_24[] = {
+71, 73, 65, 78, 84, 83, 32, 119, 97, 107, 101, 32, 97, 110, 100, 32, 107, 105, 108, 108, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_25[] = {
+84, 104, 101, 32, 66, 101, 103, 103, 97, 114, 0 };
+const uint8_t msgtxt_26[] = {
+68, 114, 111, 112, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_27[] = {
+102, 101, 101, 100, 115, 32, 84, 111, 97, 100, 115, 116, 111, 111, 108, 115, 32, 116, 111, 32, 83, 108, 97, 118, 101, 0 };
+const uint8_t msgtxt_28[] = {
+83, 108, 97, 118, 101, 32, 102, 97, 108, 108, 115, 32, 97, 115, 108, 101, 101, 112, 33, 0 };
+const uint8_t msgtxt_29[] = {
+73, 32, 116, 114, 105, 112, 112, 101, 100, 33, 0 };
+const uint8_t msgtxt_30[] = {
+69, 97, 103, 108, 101, 32, 114, 105, 112, 115, 32, 109, 101, 32, 119, 105, 116, 104, 32, 104, 105, 115, 32, 84, 97, 108, 111, 110, 115, 33, 0 };
+const uint8_t msgtxt_31[] = {
+69, 97, 103, 108, 101, 32, 99, 97, 114, 114, 105, 101, 115, 32, 109, 101, 32, 111, 102, 102, 46, 46, 46, 0 };
+const uint8_t msgtxt_32[] = {
+67, 79, 78, 71, 82, 65, 84, 85, 76, 65, 84, 73, 79, 78, 83, 33, 0 };
+const uint8_t msgtxt_33[] = {
+89, 111, 117, 32, 99, 97, 110, 32, 110, 111, 119, 32, 109, 97, 107, 101, 32, 116, 104, 101, 32, 65, 114, 114, 111, 119, 0 };
+const uint8_t msgtxt_34[] = {
+83, 101, 101, 32, 65, 82, 82, 79, 87, 32, 79, 70, 32, 68, 69, 65, 84, 72, 32, 40, 80, 116, 46, 50, 41, 0 };
+const uint8_t msgtxt_35[] = {
+67, 117, 116, 32, 104, 105, 115, 32, 67, 104, 97, 105, 110, 115, 33, 0 };
+const uint8_t msgtxt_36[] = {
+73, 116, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_37[] = {
+68, 101, 115, 116, 114, 111, 121, 32, 88, 69, 82, 68, 79, 78, 32, 116, 104, 101, 32, 69, 118, 105, 108, 0 };
+const uint8_t msgtxt_38[] = {
+119, 105, 116, 104, 32, 97, 110, 32, 65, 114, 114, 111, 119, 32, 102, 114, 111, 109, 32, 116, 104, 101, 32, 83, 97, 99, 114, 101, 100, 32, 87, 105, 108, 108, 111, 119, 0 };
+const uint8_t msgtxt_39[] = {
+84, 104, 101, 32, 71, 117, 97, 114, 100, 105, 97, 110, 115, 32, 111, 102, 32, 116, 104, 101, 32, 87, 105, 108, 108, 111, 119, 0 };
+const uint8_t msgtxt_40[] = {
+76, 117, 115, 116, 32, 102, 111, 114, 32, 83, 105, 108, 118, 101, 114, 33, 0 };
+const uint8_t msgtxt_41[] = {
+84, 104, 101, 32, 119, 114, 105, 116, 105, 110, 103, 32, 105, 115, 32, 116, 111, 111, 32, 115, 109, 97, 108, 108, 33, 0 };
+const uint8_t msgtxt_42[] = {
+70, 105, 110, 100, 32, 116, 104, 101, 32, 70, 101, 97, 116, 104, 101, 114, 115, 0 };
+const uint8_t msgtxt_43[] = {
+111, 102, 32, 116, 104, 101, 32, 77, 105, 103, 104, 116, 121, 32, 69, 97, 103, 108, 101, 0 };
+const uint8_t msgtxt_44[] = {
+79, 114, 98, 32, 103, 108, 111, 119, 115, 32, 98, 114, 105, 103, 104, 116, 108, 121, 33, 0 };
+const uint8_t msgtxt_45[] = {
+71, 117, 97, 114, 100, 105, 97, 110, 115, 0 };
+const uint8_t msgtxt_46[] = {
+87, 111, 110, 39, 116, 32, 108, 101, 116, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_47[] = {
+73, 39, 109, 32, 110, 111, 116, 32, 115, 116, 114, 111, 110, 103, 32, 101, 110, 111, 117, 103, 104, 33, 0 };
+const uint8_t msgtxt_48[] = {
+67, 104, 97, 115, 101, 32, 77, 101, 100, 97, 108, 108, 105, 111, 110, 33, 0 };
+const uint8_t msgtxt_49[] = {
+73, 32, 102, 101, 101, 108, 0 };
+const uint8_t msgtxt_50[] = {
+32, 0 };
+const uint8_t msgtxt_51[] = {
+40, 116, 111, 32, 104, 111, 111, 107, 41, 0 };
+const uint8_t msgtxt_52[] = {
+100, 111, 100, 103, 101, 115, 32, 109, 121, 32, 116, 104, 114, 117, 115, 116, 33, 0 };
+const uint8_t msgtxt_53[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 119, 101, 97, 112, 111, 110, 33, 0 };
+const uint8_t msgtxt_54[] = {
+84, 104, 114, 111, 117, 103, 104, 32, 116, 104, 101, 32, 72, 101, 97, 114, 116, 33, 0 };
+const uint8_t msgtxt_55[] = {
+115, 105, 122, 122, 108, 101, 115, 32, 97, 110, 100, 32, 86, 97, 110, 105, 115, 104, 101, 115, 33, 0 };
+const uint8_t msgtxt_56[] = {
+84, 104, 101, 32, 66, 101, 103, 103, 97, 114, 32, 86, 97, 110, 105, 115, 104, 101, 115, 33, 0 };
+const uint8_t msgtxt_57[] = {
+70, 101, 114, 114, 121, 109, 97, 110, 0 };
+const uint8_t msgtxt_58[] = {
+104, 111, 108, 100, 115, 32, 111, 117, 116, 32, 104, 105, 115, 32, 104, 97, 110, 100, 0 };
+const uint8_t msgtxt_59[] = {
+72, 101, 32, 105, 115, 32, 119, 97, 105, 116, 105, 110, 103, 32, 102, 111, 114, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_60[] = {
+72, 101, 32, 105, 115, 32, 68, 101, 97, 100, 33, 0 };
+const uint8_t msgtxt_61[] = {
+73, 116, 32, 101, 109, 105, 116, 115, 32, 97, 32, 100, 101, 97, 100, 108, 121, 32, 66, 101, 97, 109, 0 };
+const uint8_t msgtxt_62[] = {
+97, 32, 116, 104, 105, 99, 107, 32, 66, 114, 111, 116, 104, 0 };
+const uint8_t msgtxt_63[] = {
+97, 32, 112, 105, 99, 116, 117, 114, 101, 32, 111, 102, 32, 97, 32, 66, 97, 114, 103, 101, 0 };
+const uint8_t msgtxt_64[] = {
+116, 97, 107, 101, 115, 32, 65, 109, 117, 108, 101, 116, 46, 46, 97, 110, 100, 32, 109, 101, 32, 111, 110, 116, 111, 32, 66, 97, 114, 103, 101, 33, 0 };
+const uint8_t msgtxt_65[] = {
+73, 39, 118, 101, 32, 115, 108, 105, 100, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 82, 105, 118, 101, 114, 33, 0 };
+const uint8_t msgtxt_66[] = {
+65, 32, 77, 105, 115, 116, 32, 100, 101, 115, 99, 101, 110, 100, 115, 32, 97, 110, 100, 32, 116, 114, 97, 110, 115, 112, 111, 114, 116, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_67[] = {
+84, 105, 109, 101, 32, 112, 97, 115, 115, 101, 115, 46, 46, 0 };
+const uint8_t msgtxt_68[] = {
+73, 116, 39, 115, 32, 115, 111, 108, 105, 100, 32, 83, 105, 108, 118, 101, 114, 33, 0 };
+const uint8_t msgtxt_69[] = {
+78, 111, 32, 104, 101, 108, 112, 32, 105, 115, 32, 97, 108, 108, 111, 119, 101, 100, 32, 104, 101, 114, 101, 33, 0 };
+const uint8_t msgtxt_70[] = {
+84, 104, 101, 110, 32, 86, 97, 110, 105, 115, 104, 101, 115, 33, 0 };
+const uint8_t msgtxt_71[] = {
+83, 101, 114, 112, 101, 110, 116, 0 };
+const uint8_t msgtxt_72[] = {
+83, 108, 97, 118, 101, 32, 105, 115, 32, 102, 114, 101, 101, 33, 0 };
+const uint8_t msgtxt_73[] = {
+66, 114, 111, 116, 104, 32, 105, 115, 32, 110, 111, 119, 32, 100, 114, 117, 103, 103, 101, 100, 33, 0 };
+const uint8_t msgtxt_74[] = {
+73, 32, 102, 97, 108, 108, 32, 97, 115, 108, 101, 101, 112, 33, 0 };
+const uint8_t msgtxt_75[] = {
+71, 73, 65, 78, 84, 83, 32, 102, 105, 110, 100, 32, 109, 101, 32, 97, 110, 100, 32, 107, 105, 108, 108, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_76[] = {
+83, 108, 97, 118, 101, 32, 104, 101, 108, 112, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_77[] = {
+65, 82, 78, 73, 68, 32, 67, 79, 82, 82, 73, 83, 84, 65, 32, 45, 32, 77, 97, 115, 116, 101, 114, 32, 70, 108, 101, 116, 99, 104, 101, 114, 0 };
+const uint8_t msgtxt_78[] = {
+73, 32, 115, 105, 110, 107, 32, 105, 110, 32, 66, 111, 103, 33, 0 };
+const uint8_t msgtxt_79[] = {
+73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_80[] = {
+70, 105, 110, 101, 32, 70, 101, 97, 116, 104, 101, 114, 115, 33, 0 };
+const uint8_t msgtxt_81[] = {
+87, 104, 101, 110, 32, 97, 108, 108, 32, 115, 101, 101, 109, 115, 32, 108, 111, 115, 116, 46, 46, 87, 65, 73, 84, 33, 0 };
+const uint8_t msgtxt_82[] = {
+82, 85, 66, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       171, 
+       9, 1, 0, 1, 
+       1, 86, 58, 73, 
+/* AUTO  0     */
+       207, 
+       0, 1, 0, 0, 0, 1, 
+       81, 79, 81, 2, 
+/* AUTO  100   */
+       175, 
+       3, 1, 3, 22, 3, 43, 
+       32, 33, 34, 63, 
+/* AUTO  100   */
+       168, 
+       13, 34, 0, 34, 
+       53, 
+/* AUTO  100   */
+       175, 
+       4, 25, 2, 34, 0, 18, 
+       53, 64, 25, 73, 
+/* AUTO  0     */
+       194, 
+       27, 88, 88, 
+/* AUTO  0     */
+       206, 
+       0, 18, 0, 34, 0, 56, 
+       59, 72, 28, 
+/* AUTO  80    */
+       143, 80, 
+       2, 32, 0, 32, 0, 31, 
+       29, 88, 72, 73, 
+/* AUTO  0     */
+       195, 
+       24, 64, 88, 61, 
+/* AUTO  100   */
+       168, 
+       1, 17, 0, 3, 
+       60, 
+/* AUTO  100   */
+       181, 
+       7, 12, 1, 29, 8, 3, 0, 62, 0, 17, 
+       53, 53, 
+/* AUTO  100   */
+       176, 
+       7, 12, 1, 29, 6, 17, 0, 17, 
+       53, 
+/* AUTO  100   */
+       175, 
+       4, 13, 6, 4, 2, 21, 
+       88, 14, 22, 61, 
+/* AUTO  100   */
+       183, 
+       9, 2, 0, 2, 0, 2, 0, 0, 0, 2, 
+       58, 81, 79, 81, 
+/* AUTO  100   */
+       170, 
+       4, 31, 6, 19, 
+       14, 15, 61, 
+/* AUTO  100   */
+       170, 
+       4, 32, 6, 19, 
+       14, 15, 61, 
+/* AUTO  100   */
+       165, 
+       4, 13, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 12, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 30, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 29, 
+       57, 64, 
+/* AUTO  100   */
+       164, 
+       4, 52, 
+       63, 
+/* AUTO  100   */
+       172, 
+       1, 17, 6, 29, 0, 29, 
+       53, 
+};
+const uint8_t actions[] = {
+/* TURN  COAT  */
+       19, 27, 11, 
+       2, 14, 14, 10, 0, 1, 0, 1, 
+       81, 82, 10, 73, 
+/* AUTO  0     */
+       211, 
+       19, 3, 14, 10, 0, 10, 0, 1, 
+       3, 6, 53, 81, 
+/* AUTO  0     */
+       200, 
+       15, 3, 0, 1, 
+       81, 
+/* TURN  COAT  */
+       5, 27, 11, 
+       13, 10, 
+       4, 7, 
+/* GO    PASS  */
+       10, 1, 24, 
+       2, 10, 0, 6, 
+       10, 54, 64, 
+/* LOOK  BATO  */
+       5, 30, 14, 
+       2, 13, 
+       111, 61, 
+/* LOOK  MESS  */
+       14, 30, 7, 
+       14, 8, 2, 0, 0, 8, 
+       53, 3, 6, 
+/* LOOK  MESS  */
+       5, 30, 7, 
+       2, 0, 
+       10, 110, 
+/* LOOK  COUR  */
+       14, 30, 8, 
+       14, 28, 4, 1, 0, 28, 
+       53, 3, 6, 
+/* LOOK  KITC  */
+       14, 30, 73, 
+       4, 4, 14, 16, 0, 16, 
+       53, 3, 6, 
+/* TIE   ROPE  */
+       19, 47, 27, 
+       3, 28, 3, 16, 0, 17, 0, 29, 
+       53, 53, 51, 73, 
+/* AUTO  0     */
+       210, 
+       0, 28, 0, 51, 0, 16, 0, 51, 
+       62, 62, 10, 
+/* HOOK  SUIT  */
+       23, 49, 12, 
+       3, 3, 3, 17, 0, 3, 0, 17, 0, 3, 
+       59, 59, 58, 73, 
+/* AUTO  0     */
+       197, 
+       0, 62, 
+       53, 10, 
+/* GET   SUIT  */
+       14, 10, 12, 
+       2, 3, 0, 3, 0, 3, 
+       52, 60, 10, 
+/* GET   SUIT  */
+       19, 10, 12, 
+       2, 62, 0, 3, 0, 62, 0, 3, 
+       52, 59, 60, 10, 
+/* WEAR  SUIT  */
+       13, 56, 12, 
+       1, 3, 0, 3, 0, 4, 
+       72, 10, 
+/* DROP  SUIT  */
+       9, 18, 12, 
+       1, 3, 0, 3, 
+       53, 10, 
+/* REMO  SUIT  */
+       13, 58, 12, 
+       1, 4, 0, 3, 0, 4, 
+       72, 10, 
+/* GO    LEDG  */
+       15, 1, 78, 
+       4, 10, 1, 3, 0, 12, 
+       54, 64, 88, 73, 
+/* AUTO  0     */
+       199, 
+       0, 10, 
+       20, 21, 54, 64, 
+/* GO    LEDG  */
+       15, 1, 78, 
+       4, 10, 1, 4, 0, 12, 
+       54, 64, 88, 73, 
+/* AUTO  0     */
+       199, 
+       0, 10, 
+       54, 64, 20, 21, 
+/* GO    LEDG  */
+       10, 1, 78, 
+       4, 10, 0, 12, 
+       54, 64, 10, 
+/* PULL  ROPE  */
+       22, 83, 27, 
+       4, 12, 1, 29, 8, 3, 0, 62, 0, 17, 
+       10, 53, 53, 
+/* GET   HOOK  */
+       9, 10, 25, 
+       2, 17, 0, 17, 
+       52, 10, 
+/* DROP  HOOK  */
+       9, 18, 25, 
+       1, 17, 0, 17, 
+       53, 10, 
+/* GET   ROPE  */
+       9, 10, 27, 
+       2, 29, 0, 29, 
+       52, 10, 
+/* DROP  ROPE  */
+       9, 18, 27, 
+       1, 29, 0, 29, 
+       53, 10, 
+/* GIVE  AMUL  */
+       9, 5, 10, 
+       1, 8, 2, 18, 
+       12, 11, 
+/* GIVE  COIN  */
+       23, 5, 80, 
+       1, 7, 2, 18, 0, 18, 0, 7, 0, 20, 
+       59, 59, 53, 73, 
+/* AUTO  0     */
+       199, 
+       0, 64, 
+       53, 25, 26, 120, 
+/* GIVE  AMUL  */
+       23, 5, 10, 
+       1, 8, 2, 23, 0, 16, 0, 23, 0, 8, 
+       54, 53, 59, 73, 
+/* AUTO  0     */
+       195, 
+       107, 114, 64, 64, 
+/* LOOK  BEGG  */
+       18, 30, 26, 
+       2, 18, 14, 9, 14, 20, 4, 7, 
+       25, 108, 109, 
+/* LOOK  FERR  */
+       10, 30, 32, 
+       2, 23, 4, 15, 
+       107, 108, 109, 
+/* WAIT  ANY   */
+       11, 60, 0, 
+       4, 8, 0, 14, 
+       117, 88, 116, 54, 
+/* RUB   ORB   */
+       18, 41, 29, 
+       1, 20, 4, 12, 14, 25, 0, 25, 
+       6, 7, 53, 
+/* RUB   ORB   */
+       17, 41, 29, 
+       1, 20, 13, 25, 0, 20, 0, 9, 
+       72, 44, 
+/* GET   ARRO  */
+       9, 10, 31, 
+       4, 13, 2, 21, 
+       121, 46, 
+/* GET   ARRO  */
+       9, 10, 31, 
+       2, 22, 0, 22, 
+       52, 10, 
+/* DROP  ARRO  */
+       9, 18, 31, 
+       1, 22, 0, 22, 
+       53, 10, 
+/* GO    CAVE  */
+       14, 1, 34, 
+       2, 25, 4, 12, 0, 13, 
+       54, 64, 10, 
+/* KILL  SERP  */
+       18, 35, 30, 
+       1, 5, 2, 21, 0, 2, 0, 1, 
+       81, 82, 73, 
+/* AUTO  0     */
+       207, 
+       19, 3, 0, 21, 0, 2, 
+       59, 104, 121, 105, 
+/* AUTO  0     */
+       197, 
+       15, 2, 
+       121, 102, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+/* LOOK  ZARD  */
+       15, 30, 16, 
+       2, 11, 0, 11, 0, 12, 
+       17, 18, 19, 72, 
+/* LOOK  ZARD  */
+       4, 30, 16, 
+       2, 12, 
+       110, 
+/* LOOK  PURS  */
+       22, 30, 23, 
+       3, 6, 14, 7, 14, 20, 14, 9, 0, 7, 
+       53, 8, 6, 
+/* LOOK  BED   */
+       10, 30, 18, 
+       14, 15, 0, 15, 
+       53, 8, 6, 
+/* CUT   PILL  */
+       18, 44, 19, 
+       1, 5, 3, 15, 14, 6, 0, 6, 
+       53, 8, 6, 
+/* GET   ROPE  */
+       9, 10, 27, 
+       2, 28, 0, 28, 
+       52, 10, 
+/* DROP  ROPE  */
+       9, 18, 27, 
+       1, 28, 0, 28, 
+       53, 10, 
+/* GET   HOOK  */
+       9, 10, 25, 
+       2, 16, 0, 16, 
+       52, 10, 
+/* DROP  HOOK  */
+       9, 18, 25, 
+       1, 16, 0, 16, 
+       53, 10, 
+/* WAIT  ANY   */
+       7, 60, 0, 
+       4, 16, 
+       117, 88, 64, 73, 
+/* AUTO  0     */
+       199, 
+       0, 17, 
+       88, 116, 54, 64, 
+/* KILL  BEGG  */
+       11, 35, 26, 
+       2, 18, 0, 18, 
+       10, 106, 59, 64, 
+/* CUT   CHAI  */
+       18, 44, 42, 
+       2, 33, 1, 5, 0, 33, 0, 34, 
+       10, 122, 72, 
+/* GO    COOK  */
+       10, 1, 45, 
+       2, 36, 0, 23, 
+       54, 10, 64, 
+/* DRUG  CAUL  */
+       15, 71, 43, 
+       4, 23, 1, 37, 0, 37, 
+       10, 123, 59, 73, 
+/* AUTO  0     */
+       205, 
+       0, 2, 0, 32, 0, 61, 
+       58, 72, 
+/* MOVE  BOUL  */
+       19, 39, 47, 
+       2, 38, 2, 34, 5, 25, 0, 25, 
+       53, 126, 3, 6, 
+/* MOVE  BOUL  */
+       8, 39, 47, 
+       2, 38, 5, 34, 
+       47, 
+/* GO    CAVE  */
+       14, 1, 34, 
+       4, 29, 2, 25, 0, 30, 
+       54, 10, 64, 
+/* LOOK  SCRO  */
+       6, 30, 53, 
+       3, 41, 
+       36, 42, 43, 
+/* GO    BUIL  */
+       10, 1, 69, 
+       4, 21, 0, 20, 
+       54, 10, 64, 
+/* CLIM  LADD  */
+       10, 50, 48, 
+       4, 20, 0, 24, 
+       54, 10, 64, 
+/* GO    FLUM  */
+       15, 1, 49, 
+       4, 27, 1, 19, 0, 31, 
+       54, 10, 115, 64, 
+/* WAIT  ANY   */
+       11, 60, 0, 
+       4, 31, 0, 32, 
+       117, 88, 54, 64, 
+/* GO    BEAC  */
+       15, 1, 50, 
+       4, 32, 0, 33, 0, 19, 
+       10, 54, 59, 64, 
+/* CLIM  CLIF  */
+       10, 50, 66, 
+       4, 33, 0, 34, 
+       54, 10, 64, 
+/* KILL  EAGL  */
+       14, 35, 51, 
+       1, 5, 2, 42, 0, 42, 
+       10, 104, 59, 
+/* KILL  EAGL  */
+       10, 35, 51, 
+       6, 5, 2, 42, 
+       14, 30, 61, 
+/* PLUC  EAGL  */
+       15, 61, 51, 
+       2, 42, 0, 43, 0, 35, 
+       74, 31, 88, 54, 
+/* EAT   TOAD  */
+       7, 62, 46, 
+       3, 37, 
+       88, 124, 125, 61, 
+/* GO    HUT   */
+       10, 1, 58, 
+       4, 40, 0, 45, 
+       54, 10, 64, 
+/* LOOK  DWAR  */
+       14, 30, 56, 
+       2, 45, 14, 44, 0, 44, 
+       53, 8, 6, 
+/* LOOK  DWAR  */
+       8, 30, 56, 
+       2, 45, 13, 44, 
+       110, 
+/* LOOK  HUT   */
+       18, 30, 58, 
+       4, 45, 14, 46, 14, 47, 0, 46, 
+       53, 8, 6, 
+/* LOOK  MEDA  */
+       4, 30, 9, 
+       13, 41, 
+       118, 
+/* LOOK  AMUL  */
+       5, 30, 10, 
+       3, 8, 
+       3, 113, 
+/* WEAR  SPEC  */
+       13, 56, 60, 
+       3, 46, 0, 46, 0, 47, 
+       72, 10, 
+/* GET   SPEC  */
+       9, 10, 60, 
+       2, 46, 0, 46, 
+       52, 10, 
+/* DROP  SPEC  */
+       9, 18, 60, 
+       1, 46, 0, 46, 
+       53, 10, 
+/* REMO  SPEC  */
+       13, 58, 60, 
+       1, 47, 0, 47, 0, 46, 
+       72, 10, 
+/* LOOK  DEBR  */
+       15, 30, 59, 
+       4, 46, 14, 49, 0, 49, 
+       53, 8, 6, 64, 
+/* GO    TRAP  */
+       10, 1, 61, 
+       2, 49, 0, 49, 
+       54, 10, 64, 
+/* LOOK  PLAQ  */
+       5, 30, 62, 
+       2, 50, 
+       36, 127, 
+/* OPEN  CHES  */
+       19, 51, 63, 
+       2, 51, 0, 51, 0, 52, 0, 53, 
+       72, 53, 8, 6, 
+/* LOOK  BOOK  */
+       11, 30, 64, 
+       1, 53, 1, 47, 
+       37, 38, 39, 40, 
+/* LOOK  BOOK  */
+       8, 30, 64, 
+       1, 53, 6, 47, 
+       41, 
+/* GO    MARS  */
+       10, 1, 79, 
+       4, 44, 0, 47, 
+       54, 64, 10, 
+/* LOOK  MARS  */
+       7, 30, 79, 
+       4, 47, 
+       14, 128, 15, 61, 
+/* CUT   BRAN  */
+       14, 44, 20, 
+       4, 50, 1, 5, 2, 55, 
+       9, 45, 46, 
+/* CUT   BRAN  */
+       17, 44, 20, 
+       4, 50, 14, 1, 1, 5, 0, 1, 
+       10, 53, 
+/* THRO  MEDA  */
+       19, 22, 9, 
+       2, 55, 1, 44, 0, 55, 0, 44, 
+       59, 59, 45, 48, 
+/* GO    BARG  */
+       5, 1, 33, 
+       4, 15, 
+       107, 46, 
+/* LOOK  PILL  */
+       9, 30, 19, 
+       14, 6, 3, 15, 
+       49, 6, 
+/* FREE  SLAV  */
+       4, 90, 41, 
+       2, 33, 
+       35, 
+/* DROP  SUIT  */
+       5, 18, 12, 
+       1, 4, 
+       9, 129, 
+/* DROP  SPEC  */
+       5, 18, 60, 
+       1, 47, 
+       9, 129, 
+/* LOOK  SLAV  */
+       4, 30, 41, 
+       2, 56, 
+       16, 
+/* LOOK  CAUL  */
+       5, 30, 43, 
+       4, 23, 
+       3, 112, 
+/* LOOK  COAT  */
+       9, 30, 11, 
+       4, 5, 14, 10, 
+       3, 23, 
+/* KILL  SERP  */
+       9, 35, 30, 
+       2, 21, 6, 5, 
+       9, 103, 
+/* RUB   ORB   */
+       5, 41, 29, 
+       1, 9, 
+       4, 7, 
+/* RUB   ORB   */
+       5, 41, 29, 
+       1, 20, 
+       4, 7, 
+/* LOOK  EAGL  */
+       4, 30, 51, 
+       2, 42, 
+       130, 
+/* LOOK  BOOK  */
+       4, 30, 64, 
+       6, 53, 
+       9, 
+/* RUB   ORB   */
+       6, 41, 29, 
+       1, 9, 
+       10, 4, 7, 
+/* GO    LADD  */
+       10, 1, 48, 
+       2, 39, 0, 24, 
+       10, 54, 64, 
+/* LOOK  NOTE  */
+       5, 30, 57, 
+       3, 64, 
+       36, 131, 
+/* HELP  ANY   */
+       9, 16, 0, 
+       4, 12, 5, 25, 
+       10, 132, 
+/* FUCK  ANY   */
+       0, 75, 0, 
+       13, 
+/* LOOK  ANY   */
+       2, 30, 0, 
+       3, 4, 5, 
+/* KILL  ANY   */
+       0, 35, 0, 
+       9, 
+/* MOVE  ANY   */
+       0, 39, 0, 
+       9, 
+/* GIVE  ANY   */
+       0, 5, 0, 
+       9, 
+/* THRO  ANY   */
+       0, 22, 0, 
+       9, 
+/* INVE  ANY   */
+       0, 4, 0, 
+       66, 
+/* QUIT  ANY   */
+       0, 9, 0, 
+       63, 
+/* SAVE  ANY   */
+       0, 8, 0, 
+       71, 
+/* HELP  ANY   */
+       1, 16, 0, 
+       9, 119, 
+/* SAY   ANY   */
+       3, 66, 0, 
+       10, 85, 4, 7, 
+/* GO    ANY   */
+       0, 1, 0, 
+       9, 
+/* TURN  ANY   */
+       0, 27, 0, 
+       9, 
+/* WAIT  ANY   */
+       2, 60, 0, 
+       117, 88, 88, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *BOAR */
+       194, 79, 65, 82,
+       /* INVE */
+       73, 78, 86, 69,
+       /* GIVE */
+       71, 73, 86, 69,
+       /* *OFFE */
+       207, 70, 70, 69,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* *HOLD */
+       200, 79, 76, 68,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* HELP */
+       72, 69, 76, 80,
+       /* *HINT */
+       200, 73, 78, 84,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *DISC */
+       196, 73, 83, 67,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* THRO */
+       84, 72, 82, 79,
+       /* *TOSS */
+       212, 79, 83, 83,
+       /* *SLIN */
+       211, 76, 73, 78,
+       /* *CHUC */
+       195, 72, 85, 67,
+       /* *HURL */
+       200, 85, 82, 76,
+       /* TURN */
+       84, 85, 82, 78,
+       /* *ROTA */
+       210, 79, 84, 65,
+       /* *TWIS */
+       212, 87, 73, 83,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *INSP */
+       201, 78, 83, 80,
+       /* *SEAR */
+       211, 69, 65, 82,
+       /* *READ */
+       210, 69, 65, 68,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* *MURD */
+       205, 85, 82, 68,
+       /* *SLAY */
+       211, 76, 65, 89,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* *SHIF */
+       211, 72, 73, 70,
+       /* RUB */
+       82, 85, 66, 32,
+       /* *SHIN */
+       211, 72, 73, 78,
+       /* *POLI */
+       208, 79, 76, 73,
+       /* CUT */
+       67, 85, 84, 32,
+       /* *CHOP */
+       195, 72, 79, 80,
+       /* *SLIC */
+       211, 76, 73, 67,
+       /* TIE */
+       84, 73, 69, 32,
+       /* *FAST */
+       198, 65, 83, 84,
+       /* HOOK */
+       72, 79, 79, 75,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* BREA */
+       66, 82, 69, 65,
+       /* *SMAS */
+       211, 77, 65, 83,
+       /* *DEST */
+       196, 69, 83, 84,
+       /* *RUIN */
+       210, 85, 73, 78,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* *DON */
+       196, 79, 78, 32,
+       /* REMO */
+       82, 69, 77, 79,
+       /* *DOFF */
+       196, 79, 70, 70,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* PLUC */
+       80, 76, 85, 67,
+       /* EAT */
+       69, 65, 84, 32,
+       /* *TAST */
+       212, 65, 83, 84,
+       /* *NIBB */
+       206, 73, 66, 66,
+       /* *DEVO */
+       196, 69, 86, 79,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *ASK */
+       193, 83, 75, 32,
+       /* *TALK */
+       212, 65, 76, 75,
+       /* *SHOU */
+       211, 72, 79, 85,
+       /* *YELL */
+       217, 69, 76, 76,
+       /* DRUG */
+       68, 82, 85, 71,
+       /* *POIS */
+       208, 79, 73, 83,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* FUCK */
+       70, 85, 67, 75,
+       /* *BOLL */
+       194, 79, 76, 76,
+       /* *PISS */
+       208, 73, 83, 83,
+       /* *BAST */
+       194, 65, 83, 84,
+       /* *BALL */
+       194, 65, 76, 76,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* UNTI */
+       85, 78, 84, 73,
+       /* PULL */
+       80, 85, 76, 76,
+       /* *TUG */
+       212, 85, 71, 32,
+       /* PUSH */
+       80, 85, 83, 72,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* LEVE */
+       76, 69, 86, 69,
+       /* *FORC */
+       198, 79, 82, 67,
+       /* RIDE */
+       82, 73, 68, 69,
+       /* FREE */
+       70, 82, 69, 69,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* MESS */
+       77, 69, 83, 83,
+       /* COUR */
+       67, 79, 85, 82,
+       /* MEDA */
+       77, 69, 68, 65,
+       /* AMUL */
+       65, 77, 85, 76,
+       /* COAT */
+       67, 79, 65, 84,
+       /* SUIT */
+       83, 85, 73, 84,
+       /* *ARMO */
+       193, 82, 77, 79,
+       /* BATO */
+       66, 65, 84, 79,
+       /* *GOLD */
+       199, 79, 76, 68,
+       /* ZARD */
+       90, 65, 82, 68,
+       /* *MAGI */
+       205, 65, 71, 73,
+       /* BED */
+       66, 69, 68, 32,
+       /* PILL */
+       80, 73, 76, 76,
+       /* BRAN */
+       66, 82, 65, 78,
+       /* *WILL */
+       215, 73, 76, 76,
+       /* SWOR */
+       83, 87, 79, 82,
+       /* PURS */
+       80, 85, 82, 83,
+       /* PASS */
+       80, 65, 83, 83,
+       /* HOOK */
+       72, 79, 79, 75,
+       /* BEGG */
+       66, 69, 71, 71,
+       /* ROPE */
+       82, 79, 80, 69,
+       /* RATI */
+       82, 65, 84, 73,
+       /* ORB */
+       79, 82, 66, 32,
+       /* SERP */
+       83, 69, 82, 80,
+       /* ARRO */
+       65, 82, 82, 79,
+       /* FERR */
+       70, 69, 82, 82,
+       /* BARG */
+       66, 65, 82, 71,
+       /* CAVE */
+       67, 65, 86, 69,
+       /* *ENTR */
+       197, 78, 84, 82,
+       /* WHIR */
+       87, 72, 73, 82,
+       /* TREE */
+       84, 82, 69, 69,
+       /* FORE */
+       70, 79, 82, 69,
+       /* LOG */
+       76, 79, 71, 32,
+       /* GIAN */
+       71, 73, 65, 78,
+       /* SLAV */
+       83, 76, 65, 86,
+       /* CHAI */
+       67, 72, 65, 73,
+       /* CAUL */
+       67, 65, 85, 76,
+       /* *BROT */
+       194, 82, 79, 84,
+       /* COOK */
+       67, 79, 79, 75,
+       /* TOAD */
+       84, 79, 65, 68,
+       /* BOUL */
+       66, 79, 85, 76,
+       /* LADD */
+       76, 65, 68, 68,
+       /* FLUM */
+       70, 76, 85, 77,
+       /* BEAC */
+       66, 69, 65, 67,
+       /* EAGL */
+       69, 65, 71, 76,
+       /* *FEAT */
+       198, 69, 65, 84,
+       /* SCRO */
+       83, 67, 82, 79,
+       /* MEDA */
+       77, 69, 68, 65,
+       /* STON */
+       83, 84, 79, 78,
+       /* DWAR */
+       68, 87, 65, 82,
+       /* NOTE */
+       78, 79, 84, 69,
+       /* HUT */
+       72, 85, 84, 32,
+       /* DEBR */
+       68, 69, 66, 82,
+       /* SPEC */
+       83, 80, 69, 67,
+       /* TRAP */
+       84, 82, 65, 80,
+       /* PLAQ */
+       80, 76, 65, 81,
+       /* CHES */
+       67, 72, 69, 83,
+       /* BOOK */
+       66, 79, 79, 75,
+       /* GUAR */
+       71, 85, 65, 82,
+       /* CLIF */
+       67, 76, 73, 70,
+       /* WALL */
+       87, 65, 76, 76,
+       /* LAKE */
+       76, 65, 75, 69,
+       /* BUIL */
+       66, 85, 73, 76,
+       /* VILL */
+       86, 73, 76, 76,
+       /* RUIN */
+       82, 85, 73, 78,
+       /* VAUL */
+       86, 65, 85, 76,
+       /* KITC */
+       75, 73, 84, 67,
+       /* OFF */
+       79, 70, 70, 32,
+       /* *YOU */
+       217, 79, 85, 32,
+       /* GAME */
+       71, 65, 77, 69,
+       /* INVE */
+       73, 78, 86, 69,
+       /* LEDG */
+       76, 69, 68, 71,
+       /* MARS */
+       77, 65, 82, 83,
+       /* COIN */
+       67, 79, 73, 78,
+       /* PALA */
+       80, 65, 76, 65,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t automap[] = {
+       /* BRAN */
+       66, 82, 65, 78,
+       1,
+       /* SWOR */
+       83, 87, 79, 82,
+       5,
+       /* PURS */
+       80, 85, 82, 83,
+       6,
+       /* COIN */
+       67, 79, 73, 78,
+       7,
+       /* AMUL */
+       65, 77, 85, 76,
+       8,
+       /* ORB */
+       79, 82, 66, 32,
+       9,
+       /* PILL */
+       80, 73, 76, 76,
+       15,
+       /* LOG */
+       76, 79, 71, 32,
+       19,
+       /* ORB */
+       79, 82, 66, 32,
+       20,
+       /* TOAD */
+       84, 79, 65, 68,
+       37,
+       /* SCRO */
+       83, 67, 82, 79,
+       41,
+       /* FEAT */
+       70, 69, 65, 84,
+       43,
+       /* MEDA */
+       77, 69, 68, 65,
+       44,
+       /* BOOK */
+       66, 79, 79, 75,
+       53,
+       /* NOTE */
+       78, 79, 84, 69,
+       64,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst04.c b/Applications/games/myst04.c
new file mode 100644 (file)
index 0000000..1dd2d05
--- /dev/null
@@ -0,0 +1,3162 @@
+#define NUM_OBJ 90
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 4;
+const uint8_t maxcar = 9;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 65;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+40, 67, 41, 49, 57, 56, 50, 32, 66, 46, 72, 46, 0 };
+const uint8_t loctxt_1[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 109, 97, 114, 115, 104, 0 };
+const uint8_t loctxt_2[] = {
+66, 97, 114, 114, 101, 110, 32, 112, 108, 97, 105, 110, 0 };
+const uint8_t loctxt_3[] = {
+66, 97, 114, 114, 101, 110, 32, 112, 108, 97, 105, 110, 0 };
+const uint8_t loctxt_4[] = {
+66, 97, 114, 114, 101, 110, 32, 112, 108, 97, 105, 110, 0 };
+const uint8_t loctxt_5[] = {
+66, 97, 114, 114, 101, 110, 32, 112, 108, 97, 105, 110, 0 };
+const uint8_t loctxt_6[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 110, 97, 114, 114, 111, 119, 32, 103, 111, 114, 103, 101, 0 };
+const uint8_t loctxt_7[] = {
+110, 97, 114, 114, 111, 119, 32, 103, 111, 114, 103, 101, 0 };
+const uint8_t loctxt_8[] = {
+112, 111, 111, 108, 32, 111, 102, 32, 109, 117, 100, 0 };
+const uint8_t loctxt_9[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 80, 108, 97, 116, 101, 97, 117, 0 };
+const uint8_t loctxt_10[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 67, 104, 97, 115, 109, 0 };
+const uint8_t loctxt_11[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 76, 101, 100, 103, 101, 0 };
+const uint8_t loctxt_12[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 76, 101, 100, 103, 101, 0 };
+const uint8_t loctxt_13[] = {
+67, 97, 118, 101, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 66, 114, 105, 100, 103, 101, 0 };
+const uint8_t loctxt_15[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 76, 101, 100, 103, 101, 0 };
+const uint8_t loctxt_16[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 116, 111, 110, 101, 32, 83, 108, 97, 98, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 110, 32, 97, 112, 114, 111, 110, 32, 111, 102, 32, 115, 116, 111, 110, 101, 0 };
+const uint8_t loctxt_18[] = {
+100, 97, 114, 107, 32, 99, 97, 118, 101, 114, 110, 0 };
+const uint8_t loctxt_19[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_20[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 115, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t loctxt_21[] = {
+119, 105, 110, 100, 121, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_22[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 80, 108, 97, 116, 102, 111, 114, 109, 0 };
+const uint8_t loctxt_23[] = {
+68, 117, 110, 103, 101, 111, 110, 0 };
+const uint8_t loctxt_24[] = {
+100, 117, 110, 103, 101, 111, 110, 32, 97, 114, 101, 97, 0 };
+const uint8_t loctxt_25[] = {
+72, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_26[] = {
+115, 116, 111, 114, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_27[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_28[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_29[] = {
+115, 116, 111, 110, 101, 32, 99, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_30[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_31[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 115, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t loctxt_32[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_33[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 115, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t loctxt_34[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_35[] = {
+83, 116, 97, 98, 108, 101, 0 };
+const uint8_t loctxt_36[] = {
+103, 114, 117, 98, 98, 121, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_37[] = {
+103, 114, 117, 98, 98, 121, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_38[] = {
+103, 117, 97, 114, 100, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_39[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 108, 111, 102, 116, 121, 32, 112, 101, 97, 107, 0 };
+const uint8_t loctxt_40[] = {
+99, 97, 118, 101, 0 };
+const uint8_t loctxt_41[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 109, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t loctxt_42[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 109, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t loctxt_43[] = {
+77, 101, 97, 100, 111, 119, 0 };
+const uint8_t loctxt_44[] = {
+114, 111, 99, 107, 121, 32, 98, 101, 97, 99, 104, 44, 32, 73, 32, 115, 101, 101, 32, 97, 32, 116, 114, 97, 105, 108, 0 };
+const uint8_t loctxt_45[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 100, 105, 114, 116, 32, 116, 114, 97, 105, 108, 0 };
+const uint8_t loctxt_46[] = {
+84, 101, 109, 112, 108, 101, 0 };
+const uint8_t loctxt_47[] = {
+77, 97, 114, 98, 108, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_48[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 83, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t loctxt_49[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 83, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t loctxt_50[] = {
+109, 117, 115, 105, 99, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_51[] = {
+70, 105, 115, 104, 39, 115, 32, 115, 116, 111, 109, 97, 99, 104, 0 };
+const uint8_t loctxt_52[] = {
+66, 111, 97, 116, 0 };
+const uint8_t loctxt_53[] = {
+66, 111, 97, 116, 0 };
+const uint8_t loctxt_54[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 76, 97, 107, 101, 0 };
+const uint8_t loctxt_55[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 109, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t loctxt_56[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 110, 32, 97, 108, 116, 97, 114, 33, 0 };
+const uint8_t loctxt_57[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 72, 117, 116, 0 };
+const uint8_t loctxt_58[] = {
+119, 111, 111, 100, 101, 110, 32, 104, 117, 116, 0 };
+const uint8_t loctxt_59[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 119, 105, 110, 100, 111, 119, 0 };
+const uint8_t loctxt_60[] = {
+115, 101, 99, 114, 101, 116, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_61[] = {
+116, 104, 114, 111, 110, 101, 45, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_62[] = {
+80, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t loctxt_63[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_64[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 74, 101, 116, 116, 121, 0 };
+const uint8_t loctxt_65[] = {
+77, 101, 115, 115, 33, 32, 73, 39, 109, 32, 68, 69, 65, 68, 33, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 9, 0, 2, 0, 0, 0 } }, 
+               { loctxt_2,  { 3, 4, 5, 1, 0, 0 } }, 
+               { loctxt_3,  { 0, 2, 0, 0, 0, 0 } }, 
+               { loctxt_4,  { 2, 0, 0, 0, 0, 0 } }, 
+               { loctxt_5,  { 6, 0, 0, 2, 0, 0 } }, 
+               { loctxt_6,  { 7, 5, 0, 0, 0, 0 } }, 
+               { loctxt_7,  { 0, 6, 0, 0, 0, 0 } }, 
+               { loctxt_8,  { 0, 7, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 10, 1, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 0, 9, 0, 0, 0, 0 } }, 
+               { loctxt_11,  { 0, 0, 0, 0, 0, 12 } }, 
+               { loctxt_12,  { 0, 0, 0, 0, 11, 0 } }, 
+               { loctxt_13,  { 12, 0, 0, 0, 0, 0 } }, 
+               { loctxt_14,  { 15, 11, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 14, 0, 0, 16, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 15 } }, 
+               { loctxt_17,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 19, 17, 28, 0, 0, 0 } }, 
+               { loctxt_19,  { 20, 18, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 0, 19, 0, 0, 21, 29 } }, 
+               { loctxt_21,  { 0, 0, 0, 22, 0, 20 } }, 
+               { loctxt_22,  { 0, 0, 21, 0, 0, 0 } }, 
+               { loctxt_23,  { 0, 0, 0, 0, 24, 0 } }, 
+               { loctxt_24,  { 0, 0, 0, 0, 25, 0 } }, 
+               { loctxt_25,  { 0, 0, 32, 8, 0, 24 } }, 
+               { loctxt_26,  { 27, 0, 0, 0, 0, 0 } }, 
+               { loctxt_27,  { 0, 0, 0, 28, 0, 0 } }, 
+               { loctxt_28,  { 0, 18, 27, 0, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 30, 0, 20, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 29, 0, 0 } }, 
+               { loctxt_31,  { 0, 0, 0, 0, 0, 33 } }, 
+               { loctxt_32,  { 38, 0, 34, 25, 0, 0 } }, 
+               { loctxt_33,  { 34, 46, 0, 0, 31, 0 } }, 
+               { loctxt_34,  { 35, 33, 0, 32, 0, 0 } }, 
+               { loctxt_35,  { 0, 34, 0, 0, 0, 0 } }, 
+               { loctxt_36,  { 0, 0, 37, 0, 45, 0 } }, 
+               { loctxt_37,  { 0, 0, 0, 36, 0, 0 } }, 
+               { loctxt_38,  { 0, 32, 0, 0, 0, 0 } }, 
+               { loctxt_39,  { 0, 40, 0, 0, 0, 0 } }, 
+               { loctxt_40,  { 39, 0, 41, 0, 0, 0 } }, 
+               { loctxt_41,  { 0, 0, 42, 0, 0, 0 } }, 
+               { loctxt_42,  { 43, 0, 0, 41, 0, 0 } }, 
+               { loctxt_43,  { 44, 42, 0, 0, 0, 0 } }, 
+               { loctxt_44,  { 0, 43, 0, 0, 0, 0 } }, 
+               { loctxt_45,  { 0, 0, 0, 44, 0, 0 } }, 
+               { loctxt_46,  { 33, 0, 0, 0, 0, 0 } }, 
+               { loctxt_47,  { 48, 0, 0, 37, 0, 0 } }, 
+               { loctxt_48,  { 0, 47, 0, 0, 49, 0 } }, 
+               { loctxt_49,  { 50, 0, 0, 0, 0, 48 } }, 
+               { loctxt_50,  { 0, 49, 0, 0, 0, 0 } }, 
+               { loctxt_51,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_52,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_53,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_54,  { 55, 64, 57, 0, 0, 0 } }, 
+               { loctxt_55,  { 56, 54, 0, 0, 0, 0 } }, 
+               { loctxt_56,  { 0, 55, 0, 0, 0, 0 } }, 
+               { loctxt_57,  { 0, 0, 0, 54, 0, 0 } }, 
+               { loctxt_58,  { 57, 0, 0, 0, 0, 0 } }, 
+               { loctxt_59,  { 0, 60, 62, 0, 0, 0 } }, 
+               { loctxt_60,  { 59, 0, 0, 0, 0, 0 } }, 
+               { loctxt_61,  { 0, 0, 0, 63, 0, 0 } }, 
+               { loctxt_62,  { 59, 63, 0, 0, 0, 0 } }, 
+               { loctxt_63,  { 62, 49, 0, 61, 0, 0 } }, 
+               { loctxt_64,  { 54, 0, 0, 0, 0, 0 } }, 
+               { loctxt_65,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       255,
+       255,
+       255,
+       255,
+       11,
+       12,
+       13,
+       14,
+       16,
+       0,
+       7,
+       0,
+       0,
+       8,
+       0,
+       0,
+       24,
+       23,
+       38,
+       0,
+       0,
+       35,
+       0,
+       0,
+       29,
+       29,
+       26,
+       26,
+       0,
+       57,
+       58,
+       58,
+       39,
+       0,
+       0,
+       0,
+       40,
+       37,
+       64,
+       53,
+       0,
+       0,
+       0,
+       51,
+       0,
+       21,
+       44,
+       45,
+       0,
+       59,
+       60,
+       50,
+       61,
+       46,
+       17,
+       0,
+       41,
+       41,
+       49,
+       0,
+       0,
+       3,
+       15,
+       31,
+       0,
+       0,
+       21,
+       0,
+       0,
+       17,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       30,
+       27,
+       53,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+65, 114, 114, 111, 119, 104, 101, 97, 100, 0 };
+const uint8_t objtxt_1[] = {
+87, 105, 108, 108, 111, 119, 32, 98, 114, 97, 110, 99, 104, 0 };
+const uint8_t objtxt_2[] = {
+70, 101, 97, 116, 104, 101, 114, 115, 0 };
+const uint8_t objtxt_3[] = {
+83, 119, 111, 114, 100, 0 };
+const uint8_t objtxt_4[] = {
+82, 111, 112, 101, 32, 98, 114, 105, 100, 103, 101, 0 };
+const uint8_t objtxt_5[] = {
+67, 114, 101, 118, 105, 99, 101, 0 };
+const uint8_t objtxt_6[] = {
+79, 105, 108, 32, 108, 97, 109, 112, 0 };
+const uint8_t objtxt_7[] = {
+83, 117, 112, 112, 111, 114, 116, 32, 114, 111, 112, 101, 115, 0 };
+const uint8_t objtxt_8[] = {
+71, 114, 105, 108, 108, 0 };
+const uint8_t objtxt_9[] = {
+76, 105, 116, 32, 111, 105, 108, 32, 108, 97, 109, 112, 0 };
+const uint8_t objtxt_10[] = {
+87, 97, 116, 101, 114, 32, 97, 99, 114, 111, 115, 115, 32, 103, 111, 114, 103, 101, 0 };
+const uint8_t objtxt_11[] = {
+77, 117, 100, 0 };
+const uint8_t objtxt_12[] = {
+76, 101, 118, 101, 114, 0 };
+const uint8_t objtxt_13[] = {
+83, 116, 111, 110, 101, 32, 115, 108, 97, 98, 0 };
+const uint8_t objtxt_14[] = {
+68, 97, 114, 107, 32, 111, 112, 101, 110, 105, 110, 103, 0 };
+const uint8_t objtxt_15[] = {
+73, 114, 111, 110, 32, 104, 101, 108, 109, 101, 116, 0 };
+const uint8_t objtxt_16[] = {
+71, 114, 97, 116, 105, 110, 103, 32, 105, 110, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_17[] = {
+65, 82, 78, 73, 68, 32, 116, 104, 101, 32, 102, 108, 101, 116, 99, 104, 101, 114, 0 };
+const uint8_t objtxt_18[] = {
+71, 114, 111, 116, 101, 115, 113, 117, 101, 32, 97, 110, 105, 109, 97, 108, 0 };
+const uint8_t objtxt_19[] = {
+65, 32, 107, 101, 121, 0 };
+const uint8_t objtxt_20[] = {
+77, 117, 115, 105, 99, 32, 115, 104, 101, 101, 116, 0 };
+const uint8_t objtxt_21[] = {
+83, 116, 97, 114, 118, 105, 110, 103, 32, 109, 117, 108, 101, 0 };
+const uint8_t objtxt_22[] = {
+65, 108, 116, 97, 114, 0 };
+const uint8_t objtxt_23[] = {
+67, 111, 108, 117, 109, 110, 32, 111, 102, 32, 70, 105, 114, 101, 0 };
+const uint8_t objtxt_24[] = {
+73, 114, 111, 110, 32, 119, 104, 101, 101, 108, 0 };
+const uint8_t objtxt_25[] = {
+71, 117, 97, 114, 100, 0 };
+const uint8_t objtxt_26[] = {
+66, 114, 101, 97, 100, 0 };
+const uint8_t objtxt_27[] = {
+67, 104, 101, 101, 115, 101, 0 };
+const uint8_t objtxt_28[] = {
+70, 108, 105, 110, 116, 115, 116, 111, 110, 101, 0 };
+const uint8_t objtxt_29[] = {
+87, 111, 111, 100, 101, 110, 32, 104, 117, 116, 0 };
+const uint8_t objtxt_30[] = {
+66, 114, 105, 97, 114, 32, 112, 105, 112, 101, 0 };
+const uint8_t objtxt_31[] = {
+84, 111, 98, 97, 99, 99, 111, 0 };
+const uint8_t objtxt_32[] = {
+67, 97, 105, 114, 110, 32, 111, 102, 32, 115, 116, 111, 110, 101, 115, 0 };
+const uint8_t objtxt_33[] = {
+83, 109, 111, 111, 116, 104, 32, 83, 116, 111, 110, 101, 0 };
+const uint8_t objtxt_34[] = {
+79, 108, 100, 32, 98, 101, 103, 103, 97, 114, 0 };
+const uint8_t objtxt_35[] = {
+77, 97, 103, 105, 99, 32, 66, 111, 119, 0 };
+const uint8_t objtxt_36[] = {
+83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_37[] = {
+76, 97, 114, 103, 101, 32, 98, 111, 117, 108, 100, 101, 114, 0 };
+const uint8_t objtxt_38[] = {
+66, 111, 97, 116, 0 };
+const uint8_t objtxt_39[] = {
+79, 97, 114, 115, 0 };
+const uint8_t objtxt_40[] = {
+68, 121, 110, 97, 109, 105, 116, 101, 32, 119, 105, 116, 104, 32, 108, 105, 116, 32, 102, 117, 115, 101, 0 };
+const uint8_t objtxt_41[] = {
+68, 121, 110, 97, 109, 105, 116, 101, 32, 119, 105, 116, 104, 32, 115, 104, 111, 114, 116, 32, 102, 117, 115, 101, 0 };
+const uint8_t objtxt_42[] = {
+102, 108, 117, 102, 102, 121, 32, 76, 101, 97, 118, 101, 115, 0 };
+const uint8_t objtxt_43[] = {
+82, 97, 103, 103, 101, 100, 32, 99, 108, 111, 97, 107, 0 };
+const uint8_t objtxt_44[] = {
+66, 117, 116, 116, 111, 110, 32, 105, 110, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_45[] = {
+71, 105, 97, 110, 116, 32, 107, 105, 116, 101, 0 };
+const uint8_t objtxt_46[] = {
+65, 110, 105, 109, 97, 116, 101, 100, 32, 115, 107, 101, 108, 101, 116, 111, 110, 0 };
+const uint8_t objtxt_47[] = {
+77, 111, 117, 110, 100, 0 };
+const uint8_t objtxt_48[] = {
+72, 111, 108, 101, 0 };
+const uint8_t objtxt_49[] = {
+87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_50[] = {
+83, 108, 105, 116, 115, 32, 105, 110, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_51[] = {
+76, 97, 114, 103, 101, 32, 79, 114, 103, 97, 110, 0 };
+const uint8_t objtxt_52[] = {
+88, 69, 82, 68, 79, 78, 32, 116, 104, 101, 32, 69, 118, 105, 108, 0 };
+const uint8_t objtxt_53[] = {
+84, 97, 112, 101, 115, 116, 114, 121, 0 };
+const uint8_t objtxt_54[] = {
+65, 114, 99, 104, 119, 97, 121, 0 };
+const uint8_t objtxt_55[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_56[] = {
+67, 97, 118, 101, 32, 101, 110, 116, 114, 97, 110, 99, 101, 0 };
+const uint8_t objtxt_57[] = {
+82, 111, 99, 107, 0 };
+const uint8_t objtxt_58[] = {
+83, 104, 105, 109, 109, 101, 114, 105, 110, 103, 32, 118, 101, 105, 108, 0 };
+const uint8_t objtxt_59[] = {
+67, 97, 110, 100, 108, 101, 0 };
+const uint8_t objtxt_60[] = {
+72, 111, 108, 101, 32, 105, 110, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_61[] = {
+87, 101, 105, 114, 100, 32, 115, 104, 114, 117, 98, 0 };
+const uint8_t objtxt_62[] = {
+83, 116, 114, 97, 103, 103, 108, 121, 32, 119, 101, 101, 100, 0 };
+const uint8_t objtxt_63[] = {
+66, 111, 108, 116, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_64[] = {
+66, 111, 110, 101, 115, 0 };
+const uint8_t objtxt_65[] = {
+85, 110, 105, 102, 111, 114, 109, 0 };
+const uint8_t objtxt_66[] = {
+68, 101, 97, 100, 32, 87, 97, 114, 114, 105, 111, 114, 0 };
+const uint8_t objtxt_67[] = {
+84, 104, 105, 99, 107, 32, 83, 77, 79, 75, 69, 0 };
+const uint8_t objtxt_68[] = {
+77, 97, 103, 105, 99, 97, 108, 32, 65, 114, 114, 111, 119, 0 };
+const uint8_t objtxt_69[] = {
+82, 111, 112, 101, 0 };
+const uint8_t objtxt_70[] = {
+66, 114, 111, 107, 101, 110, 32, 103, 114, 97, 116, 105, 110, 103, 0 };
+const uint8_t objtxt_71[] = {
+83, 116, 117, 110, 110, 101, 100, 32, 97, 110, 105, 109, 97, 108, 0 };
+const uint8_t objtxt_72[] = {
+72, 97, 112, 112, 121, 32, 109, 117, 108, 101, 0 };
+const uint8_t objtxt_73[] = {
+70, 105, 108, 108, 101, 100, 32, 80, 105, 112, 101, 0 };
+const uint8_t objtxt_74[] = {
+108, 105, 116, 32, 112, 105, 112, 101, 0 };
+const uint8_t objtxt_75[] = {
+76, 105, 116, 32, 99, 97, 110, 100, 108, 101, 0 };
+const uint8_t objtxt_76[] = {
+85, 110, 98, 111, 108, 116, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_77[] = {
+67, 108, 111, 97, 107, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_78[] = {
+72, 101, 108, 109, 101, 116, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_79[] = {
+85, 110, 105, 102, 111, 114, 109, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_80[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_81[] = {
+66, 114, 111, 107, 101, 110, 32, 107, 105, 116, 101, 0 };
+const uint8_t objtxt_82[] = {
+72, 101, 97, 118, 121, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_83[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_84[] = {
+74, 101, 116, 116, 121, 0 };
+const uint8_t objtxt_85[] = {
+82, 111, 112, 101, 32, 116, 105, 101, 100, 32, 116, 111, 32, 103, 114, 97, 116, 105, 110, 103, 0 };
+const uint8_t objtxt_86[] = {
+79, 116, 104, 101, 114, 32, 101, 110, 100, 32, 111, 102, 32, 114, 111, 112, 101, 0 };
+const uint8_t objtxt_87[] = {
+77, 117, 108, 101, 32, 119, 105, 116, 104, 32, 114, 111, 112, 101, 32, 116, 105, 101, 100, 32, 116, 111, 32, 105, 116, 0 };
+const uint8_t objtxt_88[] = {
+76, 97, 114, 103, 101, 32, 104, 111, 108, 101, 0 };
+const uint8_t objtxt_89[] = {
+72, 111, 108, 101, 32, 105, 110, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_90[] = {
+99, 111, 114, 114, 105, 100, 111, 114, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+       objtxt_67,
+       objtxt_68,
+       objtxt_69,
+       objtxt_70,
+       objtxt_71,
+       objtxt_72,
+       objtxt_73,
+       objtxt_74,
+       objtxt_75,
+       objtxt_76,
+       objtxt_77,
+       objtxt_78,
+       objtxt_79,
+       objtxt_80,
+       objtxt_81,
+       objtxt_82,
+       objtxt_83,
+       objtxt_84,
+       objtxt_85,
+       objtxt_86,
+       objtxt_87,
+       objtxt_88,
+       objtxt_89,
+       objtxt_90,
+};
+const uint8_t msgtxt_0[] = {
+32, 0 };
+const uint8_t msgtxt_1[] = {
+65, 82, 82, 79, 87, 32, 79, 70, 32, 68, 69, 65, 84, 72, 32, 40, 80, 116, 46, 50, 41, 0 };
+const uint8_t msgtxt_2[] = {
+84, 104, 101, 114, 101, 32, 105, 115, 32, 110, 111, 32, 106, 111, 121, 32, 105, 110, 32, 114, 101, 97, 108, 105, 116, 121, 0 };
+const uint8_t msgtxt_3[] = {
+73, 32, 115, 101, 101, 32, 97, 32, 108, 101, 100, 103, 101, 32, 98, 101, 108, 111, 119, 0 };
+const uint8_t msgtxt_4[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 102, 108, 101, 119, 32, 98, 121, 44, 32, 100, 114, 111, 112, 112, 101, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_5[] = {
+73, 39, 109, 32, 107, 105, 108, 108, 101, 100, 32, 111, 110, 32, 114, 111, 99, 107, 115, 33, 0 };
+const uint8_t msgtxt_6[] = {
+87, 104, 101, 101, 101, 101, 101, 101, 33, 0 };
+const uint8_t msgtxt_7[] = {
+83, 97, 102, 101, 32, 108, 97, 110, 100, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_8[] = {
+83, 112, 108, 97, 97, 116, 33, 32, 72, 101, 97, 118, 121, 32, 108, 97, 110, 100, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_9[] = {
+73, 32, 115, 101, 101, 32, 77, 97, 99, 104, 105, 110, 101, 114, 121, 0 };
+const uint8_t msgtxt_10[] = {
+73, 32, 102, 101, 101, 108, 32, 83, 116, 114, 111, 110, 103, 101, 114, 33, 0 };
+const uint8_t msgtxt_11[] = {
+71, 117, 97, 114, 100, 0 };
+const uint8_t msgtxt_12[] = {
+73, 32, 104, 101, 97, 114, 32, 114, 117, 109, 98, 108, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_13[] = {
+73, 39, 109, 32, 116, 111, 111, 32, 119, 101, 97, 107, 33, 0 };
+const uint8_t msgtxt_14[] = {
+72, 105, 115, 32, 83, 107, 117, 108, 108, 32, 105, 115, 32, 98, 114, 111, 107, 101, 110, 33, 0 };
+const uint8_t msgtxt_15[] = {
+87, 104, 121, 63, 0 };
+const uint8_t msgtxt_16[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_17[] = {
+73, 32, 98, 97, 110, 103, 101, 100, 32, 109, 121, 32, 104, 101, 97, 100, 33, 0 };
+const uint8_t msgtxt_18[] = {
+73, 32, 104, 97, 118, 101, 32, 110, 111, 32, 108, 105, 103, 104, 116, 101, 114, 33, 0 };
+const uint8_t msgtxt_19[] = {
+73, 39, 118, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 104, 97, 114, 112, 33, 0 };
+const uint8_t msgtxt_20[] = {
+79, 46, 32, 75, 46, 0 };
+const uint8_t msgtxt_21[] = {
+73, 116, 39, 115, 32, 118, 101, 114, 121, 32, 102, 108, 117, 102, 102, 121, 33, 0 };
+const uint8_t msgtxt_22[] = {
+83, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_23[] = {
+73, 32, 102, 111, 117, 110, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_24[] = {
+73, 32, 102, 111, 117, 110, 100, 32, 110, 111, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_25[] = {
+73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_26[] = {
+84, 104, 105, 115, 32, 105, 115, 32, 121, 111, 117, 114, 32, 111, 110, 108, 121, 32, 72, 101, 108, 112, 32, 58, 0 };
+const uint8_t msgtxt_27[] = {
+70, 105, 110, 100, 32, 65, 82, 78, 73, 68, 32, 116, 104, 101, 32, 102, 108, 101, 116, 99, 104, 101, 114, 0 };
+const uint8_t msgtxt_28[] = {
+76, 101, 116, 32, 104, 105, 109, 32, 109, 97, 107, 101, 32, 97, 32, 77, 97, 103, 105, 99, 32, 65, 114, 114, 111, 119, 0 };
+const uint8_t msgtxt_29[] = {
+102, 114, 111, 109, 32, 116, 104, 101, 32, 112, 97, 114, 116, 115, 32, 121, 111, 117, 32, 98, 101, 103, 97, 110, 32, 119, 105, 116, 104, 46, 0 };
+const uint8_t msgtxt_30[] = {
+75, 105, 108, 108, 32, 88, 69, 82, 68, 79, 78, 32, 116, 104, 101, 32, 69, 118, 105, 108, 33, 0 };
+const uint8_t msgtxt_31[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_32[] = {
+73, 116, 39, 115, 32, 110, 111, 119, 32, 111, 112, 101, 110, 0 };
+const uint8_t msgtxt_33[] = {
+82, 105, 115, 107, 121, 33, 0 };
+const uint8_t msgtxt_34[] = {
+72, 101, 32, 115, 116, 97, 98, 98, 101, 100, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_35[] = {
+66, 117, 114, 114, 112, 44, 32, 116, 104, 97, 110, 107, 115, 33, 0 };
+const uint8_t msgtxt_36[] = {
+84, 111, 32, 119, 104, 111, 109, 63, 0 };
+const uint8_t msgtxt_37[] = {
+72, 101, 32, 119, 97, 107, 101, 115, 32, 97, 110, 100, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_38[] = {
+72, 111, 119, 32, 99, 97, 110, 32, 73, 32, 114, 101, 112, 97, 121, 63, 0 };
+const uint8_t msgtxt_39[] = {
+72, 101, 39, 115, 32, 117, 110, 99, 111, 110, 115, 99, 105, 111, 117, 115, 33, 0 };
+const uint8_t msgtxt_40[] = {
+72, 101, 32, 97, 119, 97, 105, 116, 115, 32, 109, 121, 32, 111, 114, 100, 101, 114, 0 };
+const uint8_t msgtxt_41[] = {
+65, 82, 78, 73, 68, 32, 109, 97, 107, 101, 115, 32, 97, 32, 77, 97, 103, 105, 99, 32, 65, 114, 114, 111, 119, 0 };
+const uint8_t msgtxt_42[] = {
+84, 104, 101, 110, 32, 115, 99, 117, 116, 116, 108, 101, 115, 32, 111, 102, 102, 33, 0 };
+const uint8_t msgtxt_43[] = {
+72, 101, 39, 115, 32, 104, 101, 108, 112, 108, 101, 115, 115, 33, 0 };
+const uint8_t msgtxt_44[] = {
+72, 101, 32, 115, 97, 121, 115, 39, 73, 39, 109, 32, 110, 111, 32, 77, 97, 103, 105, 99, 105, 97, 110, 33, 39, 0 };
+const uint8_t msgtxt_45[] = {
+84, 111, 32, 119, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_46[] = {
+84, 104, 101, 32, 103, 114, 97, 116, 105, 110, 103, 32, 98, 114, 111, 107, 101, 33, 0 };
+const uint8_t msgtxt_47[] = {
+72, 101, 32, 100, 114, 111, 112, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_48[] = {
+40, 85, 115, 101, 32, 50, 32, 119, 111, 114, 100, 115, 41, 0 };
+const uint8_t msgtxt_49[] = {
+72, 101, 39, 115, 32, 115, 116, 117, 110, 110, 101, 100, 0 };
+const uint8_t msgtxt_50[] = {
+84, 104, 101, 32, 109, 117, 108, 101, 32, 98, 111, 108, 116, 101, 100, 33, 0 };
+const uint8_t msgtxt_51[] = {
+73, 116, 32, 100, 101, 112, 105, 99, 116, 115, 32, 97, 32, 70, 105, 114, 101, 45, 87, 97, 108, 107, 101, 114, 33, 0 };
+const uint8_t msgtxt_52[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_53[] = {
+84, 104, 101, 32, 102, 108, 97, 109, 101, 115, 0 };
+const uint8_t msgtxt_54[] = {
+119, 101, 97, 107, 101, 114, 32, 110, 111, 119, 0 };
+const uint8_t msgtxt_55[] = {
+118, 101, 114, 121, 32, 104, 111, 116, 0 };
+const uint8_t msgtxt_56[] = {
+115, 101, 101, 109, 0 };
+const uint8_t msgtxt_57[] = {
+68, 101, 118, 111, 117, 114, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_58[] = {
+73, 32, 119, 97, 115, 32, 115, 119, 97, 108, 108, 111, 119, 101, 100, 33, 0 };
+const uint8_t msgtxt_59[] = {
+70, 105, 115, 104, 32, 99, 111, 117, 103, 104, 115, 32, 109, 101, 32, 111, 117, 116, 33, 0 };
+const uint8_t msgtxt_60[] = {
+83, 107, 101, 108, 101, 116, 111, 110, 0 };
+const uint8_t msgtxt_61[] = {
+115, 116, 111, 112, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_62[] = {
+71, 114, 111, 117, 110, 100, 32, 116, 111, 111, 32, 104, 97, 114, 100, 33, 0 };
+const uint8_t msgtxt_63[] = {
+73, 32, 115, 101, 101, 32, 97, 32, 112, 105, 99, 116, 117, 114, 101, 32, 111, 102, 32, 97, 32, 66, 101, 103, 103, 97, 114, 0 };
+const uint8_t msgtxt_64[] = {
+72, 101, 32, 108, 101, 97, 118, 101, 115, 32, 109, 101, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_65[] = {
+73, 32, 100, 114, 111, 112, 112, 101, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_66[] = {
+89, 101, 116, 33, 0 };
+const uint8_t msgtxt_67[] = {
+73, 116, 32, 101, 120, 112, 108, 111, 100, 101, 115, 33, 0 };
+const uint8_t msgtxt_68[] = {
+73, 39, 109, 32, 98, 108, 111, 119, 110, 32, 116, 111, 32, 98, 105, 116, 115, 33, 0 };
+const uint8_t msgtxt_69[] = {
+73, 116, 39, 115, 32, 97, 32, 100, 105, 114, 103, 101, 33, 0 };
+const uint8_t msgtxt_70[] = {
+76, 97, 110, 103, 117, 97, 103, 101, 33, 0 };
+const uint8_t msgtxt_71[] = {
+86, 97, 110, 100, 97, 108, 33, 0 };
+const uint8_t msgtxt_72[] = {
+73, 116, 39, 115, 32, 105, 110, 112, 101, 110, 101, 116, 114, 97, 98, 108, 101, 33, 0 };
+const uint8_t msgtxt_73[] = {
+86, 101, 105, 108, 0 };
+const uint8_t msgtxt_74[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_75[] = {
+88, 69, 82, 68, 79, 78, 32, 116, 104, 101, 32, 69, 86, 73, 76, 0 };
+const uint8_t msgtxt_76[] = {
+84, 104, 101, 32, 65, 114, 114, 111, 119, 32, 104, 105, 116, 115, 0 };
+const uint8_t msgtxt_77[] = {
+72, 101, 32, 100, 105, 101, 115, 32, 105, 110, 32, 97, 110, 32, 69, 118, 105, 108, 32, 103, 114, 101, 101, 110, 32, 99, 108, 111, 117, 100, 33, 0 };
+const uint8_t msgtxt_78[] = {
+66, 82, 73, 76, 76, 73, 65, 78, 84, 33, 32, 89, 111, 117, 32, 100, 105, 100, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_79[] = {
+89, 111, 117, 32, 97, 114, 101, 32, 97, 32, 116, 114, 117, 101, 32, 72, 69, 82, 79, 33, 0 };
+const uint8_t msgtxt_80[] = {
+72, 101, 97, 114, 115, 32, 109, 101, 0 };
+const uint8_t msgtxt_81[] = {
+83, 101, 101, 115, 32, 109, 101, 0 };
+const uint8_t msgtxt_82[] = {
+75, 105, 108, 108, 115, 32, 109, 101, 32, 119, 105, 116, 104, 32, 97, 110, 32, 69, 118, 105, 108, 32, 103, 108, 97, 110, 99, 101, 33, 0 };
+const uint8_t msgtxt_83[] = {
+80, 114, 105, 115, 111, 110, 101, 114, 32, 98, 101, 108, 111, 119, 0 };
+const uint8_t msgtxt_84[] = {
+84, 114, 121, 32, 74, 85, 77, 80, 0 };
+const uint8_t msgtxt_85[] = {
+73, 32, 99, 97, 110, 32, 103, 101, 116, 32, 97, 32, 103, 111, 111, 100, 32, 115, 104, 111, 116, 32, 97, 116, 0 };
+const uint8_t msgtxt_86[] = {
+72, 101, 32, 119, 97, 110, 116, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_87[] = {
+66, 79, 79, 79, 79, 79, 79, 109, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       165, 
+       4, 19, 
+       56, 64, 
+/* AUTO  100   */
+       171, 
+       9, 1, 0, 1, 
+       1, 86, 2, 58, 
+/* AUTO  100   */
+       168, 
+       4, 17, 0, 4, 
+       59, 
+/* AUTO  100   */
+       165, 
+       4, 18, 
+       57, 64, 
+/* AUTO  100   */
+       168, 
+       7, 14, 0, 3, 
+       60, 
+/* AUTO  100   */
+       165, 
+       4, 28, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 21, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 22, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 28, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 25, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 8, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 51, 
+       56, 64, 
+/* AUTO  100   */
+       173, 
+       13, 72, 0, 72, 0, 72, 
+       74, 53, 
+/* AUTO  100   */
+       174, 
+       13, 40, 0, 1, 0, 1, 
+       81, 77, 81, 
+/* AUTO  100   */
+       182, 
+       1, 86, 7, 24, 0, 86, 0, 86, 0, 24, 
+       53, 62, 115, 
+/* AUTO  100   */
+       165, 
+       4, 44, 
+       57, 64, 
+/* AUTO  100   */
+       169, 
+       13, 40, 0, 1, 
+       81, 73, 
+/* AUTO  0     */
+       215, 
+       15, 0, 8, 6, 0, 37, 0, 88, 0, 40, 
+       72, 59, 102, 117, 
+/* AUTO  0     */
+       202, 
+       15, 0, 3, 88, 
+       117, 118, 61, 
+/* AUTO  0     */
+       202, 
+       3, 40, 15, 0, 
+       117, 118, 61, 
+/* AUTO  0     */
+       205, 
+       15, 0, 12, 40, 0, 40, 
+       59, 137, 
+/* AUTO  0     */
+       196, 
+       0, 1, 
+       81, 
+/* AUTO  100   */
+       164, 
+       4, 65, 
+       63, 
+/* AUTO  100   */
+       172, 
+       4, 37, 2, 40, 0, 6, 
+       58, 
+/* AUTO  100   */
+       165, 
+       4, 61, 
+       57, 64, 
+/* AUTO  100   */
+       171, 
+       4, 61, 6, 77, 
+       125, 131, 132, 73, 
+/* AUTO  0     */
+       194, 
+       64, 64, 61, 
+};
+const uint8_t actions[] = {
+/* JUMP  ANY   */
+       9, 50, 0, 
+       4, 10, 0, 11, 
+       54, 20, 
+/* JUMP  ANY   */
+       9, 50, 0, 
+       4, 22, 6, 45, 
+       5, 61, 
+/* JUMP  ANY   */
+       13, 50, 0, 
+       4, 22, 1, 45, 6, 78, 
+       17, 61, 
+/* JUMP  ANY   */
+       18, 50, 0, 
+       4, 22, 1, 45, 1, 78, 0, 10, 
+       54, 7, 73, 
+/* AUTO  0     */
+       200, 
+       0, 45, 0, 81, 
+       72, 
+/* JUMP  ANY   */
+       0, 50, 0, 
+       15, 
+/* GO    BRID  */
+       19, 1, 11, 
+       2, 4, 0, 14, 9, 2, 0, 2, 
+       54, 58, 4, 73, 
+/* AUTO  0     */
+       201, 
+       0, 15, 0, 12, 
+       62, 64, 
+/* GO    BRID  */
+       9, 1, 11, 
+       2, 4, 0, 14, 
+       54, 20, 
+/* GO    CREV  */
+       10, 1, 12, 
+       4, 12, 0, 13, 
+       54, 20, 64, 
+/* HOLD  ROPE  */
+       9, 21, 14, 
+       4, 14, 0, 3, 
+       58, 20, 
+/* CUT   ROPE  */
+       8, 23, 14, 
+       6, 3, 4, 14, 
+       19, 
+/* CUT   ROPE  */
+       12, 23, 14, 
+       1, 3, 7, 14, 3, 69, 
+       15, 
+/* CUT   ROPE  */
+       18, 23, 14, 
+       1, 3, 4, 14, 6, 42, 8, 3, 
+       6, 8, 61, 
+/* CUT   ROPE  */
+       23, 23, 14, 
+       1, 3, 4, 14, 1, 42, 8, 3, 0, 17, 
+       6, 88, 7, 54, 
+/* CUT   ROPE  */
+       13, 23, 14, 
+       1, 3, 4, 14, 9, 3, 
+       5, 61, 
+/* GET   SHRU  */
+       18, 10, 48, 
+       2, 61, 0, 61, 0, 42, 0, 42, 
+       72, 52, 20, 
+/* EXAM  DOWN  */
+       4, 5, 6, 
+       4, 10, 
+       3, 
+/* EAT   WEED  */
+       9, 33, 50, 
+       3, 62, 0, 4, 
+       58, 10, 
+/* EXAM  SHRU  */
+       4, 5, 48, 
+       3, 61, 
+       21, 
+/* EXAM  GRIL  */
+       4, 5, 15, 
+       4, 16, 
+       9, 
+/* GO    ARCH  */
+       8, 1, 63, 
+       2, 54, 0, 18, 
+       54, 
+/* DIG   ANY   */
+       17, 58, 0, 
+       4, 4, 14, 28, 0, 28, 0, 4, 
+       62, 23, 
+/* DIG   ANY   */
+       8, 58, 0, 
+       7, 4, 6, 36, 
+       112, 
+/* TURN  WHEE  */
+       21, 9, 27, 
+       4, 29, 8, 4, 1, 79, 0, 10, 0, 11, 
+       72, 12, 
+/* TURN  WHEE  */
+       13, 9, 27, 
+       4, 29, 8, 4, 6, 79, 
+       11, 111, 
+/* TURN  WHEE  */
+       8, 9, 27, 
+       4, 29, 9, 4, 
+       13, 
+/* WEAR  UNIF  */
+       13, 31, 72, 
+       1, 65, 0, 65, 0, 79, 
+       72, 20, 
+/* EXAM  WARR  */
+       22, 5, 66, 
+       3, 66, 14, 65, 14, 79, 0, 65, 0, 66, 
+       14, 23, 75, 
+/* WEAR  HELM  */
+       13, 31, 18, 
+       1, 15, 0, 15, 0, 78, 
+       72, 20, 
+/* WEAR  CLOA  */
+       13, 31, 51, 
+       1, 43, 0, 43, 0, 77, 
+       72, 20, 
+/* REMO  UNIF  */
+       13, 32, 72, 
+       1, 79, 0, 79, 0, 65, 
+       72, 20, 
+/* REMO  HELM  */
+       13, 32, 18, 
+       1, 78, 0, 78, 0, 15, 
+       72, 20, 
+/* REMO  CLOA  */
+       13, 32, 51, 
+       1, 77, 0, 77, 0, 43, 
+       72, 20, 
+/* HELP  ANY   */
+       3, 73, 0, 
+       26, 27, 28, 73, 
+/* AUTO  0     */
+       193, 
+       29, 30, 
+/* EXAM  MUD   */
+       17, 5, 56, 
+       4, 8, 14, 12, 0, 12, 0, 8, 
+       23, 62, 
+/* GO    MUD   */
+       9, 1, 56, 
+       2, 11, 0, 8, 
+       20, 54, 
+/* PULL  LEVE  */
+       17, 65, 16, 
+       2, 12, 14, 14, 0, 14, 0, 8, 
+       20, 62, 
+/* PULL  LEVE  */
+       8, 65, 16, 
+       2, 12, 2, 14, 
+       31, 
+/* GO    OPEN  */
+       14, 1, 42, 
+       4, 8, 2, 14, 0, 25, 
+       20, 54, 64, 
+/* EXAM  WARR  */
+       4, 5, 66, 
+       3, 66, 
+       14, 
+/* DROP  UNIF  */
+       4, 18, 72, 
+       1, 79, 
+       25, 
+/* DROP  HELM  */
+       4, 18, 18, 
+       1, 78, 
+       25, 
+/* DROP  CLOA  */
+       4, 18, 51, 
+       1, 77, 
+       25, 
+/* PUSH  BUTT  */
+       17, 74, 52, 
+       2, 44, 14, 22, 0, 22, 0, 46, 
+       62, 102, 
+/* LIGH  LAMP  */
+       18, 26, 13, 
+       3, 6, 1, 28, 0, 6, 0, 9, 
+       20, 72, 64, 
+/* LIGH  LAMP  */
+       8, 26, 13, 
+       3, 6, 6, 28, 
+       18, 
+/* UNLI  LAMP  */
+       13, 29, 13, 
+       3, 9, 0, 9, 0, 6, 
+       72, 20, 
+/* UNLO  DOOR  */
+       17, 38, 64, 
+       2, 83, 1, 19, 0, 80, 0, 83, 
+       72, 32, 
+/* GO    DOOR  */
+       9, 1, 64, 
+       2, 80, 0, 26, 
+       20, 54, 
+/* UNBO  DOOR  */
+       22, 76, 64, 
+       2, 63, 0, 63, 0, 76, 0, 82, 0, 55, 
+       72, 72, 20, 
+/* EXAM  ALTA  */
+       21, 5, 25, 
+       2, 22, 14, 59, 14, 75, 0, 59, 0, 46, 
+       62, 23, 
+/* GO    DOOR  */
+       9, 1, 64, 
+       2, 55, 0, 31, 
+       54, 20, 
+/* GO    DOOR  */
+       9, 1, 64, 
+       2, 76, 0, 30, 
+       54, 20, 
+/* EXAM  GUAR  */
+       4, 5, 28, 
+       4, 29, 
+       33, 
+/* KILL  GUAR  */
+       5, 13, 28, 
+       4, 29, 
+       34, 61, 
+/* EAT   BREA  */
+       9, 33, 29, 
+       3, 26, 0, 26, 
+       35, 59, 
+/* EAT   CHEE  */
+       9, 33, 31, 
+       3, 27, 0, 27, 
+       35, 59, 
+/* GIVE  WEED  */
+       5, 48, 50, 
+       3, 62, 
+       36, 48, 
+/* TO    ARNI  */
+       19, 77, 20, 
+       2, 17, 3, 62, 0, 5, 0, 62, 
+       58, 37, 38, 59, 
+/* EXAM  ARNI  */
+       8, 5, 20, 
+       2, 17, 9, 5, 
+       39, 
+/* EXAM  ARNI  */
+       8, 5, 20, 
+       2, 17, 8, 5, 
+       40, 
+/* MAKE  ARRO  */
+       20, 78, 7, 
+       2, 17, 8, 5, 3, 0, 3, 1, 3, 2, 
+       73, 
+/* AUTO  0     */
+       202, 
+       0, 0, 0, 68, 
+       41, 42, 72, 
+/* AUTO  0     */
+       206, 
+       0, 1, 0, 2, 0, 17, 
+       59, 59, 59, 
+/* EXAM  TAPE  */
+       18, 5, 62, 
+       2, 53, 14, 44, 0, 44, 0, 46, 
+       62, 51, 23, 
+/* EXAM  TAPE  */
+       4, 5, 62, 
+       2, 53, 
+       51, 
+/* MAKE  ARRO  */
+       8, 78, 7, 
+       2, 17, 9, 5, 
+       43, 
+/* MAKE  ARRO  */
+       8, 78, 7, 
+       2, 17, 8, 5, 
+       44, 
+/* TIE   ROPE  */
+       1, 45, 14, 
+       45, 48, 
+/* TO    GRAT  */
+       23, 77, 19, 
+       1, 69, 2, 16, 0, 69, 0, 86, 0, 16, 
+       20, 72, 59, 73, 
+/* AUTO  0     */
+       200, 
+       0, 85, 0, 24, 
+       62, 
+/* TO    MULE  */
+       21, 77, 24, 
+       3, 86, 2, 72, 4, 24, 0, 72, 0, 87, 
+       72, 73, 
+/* AUTO  0     */
+       196, 
+       0, 86, 
+       59, 
+/* PULL  MULE  */
+       23, 65, 24, 
+       2, 87, 0, 85, 0, 89, 0, 70, 0, 24, 
+       72, 62, 46, 73, 
+/* AUTO  0     */
+       199, 
+       0, 87, 
+       59, 50, 64, 64, 
+/* FEED  MULE  */
+       22, 47, 24, 
+       3, 26, 2, 21, 0, 21, 0, 72, 0, 26, 
+       72, 59, 20, 
+/* FEED  MULE  */
+       22, 47, 24, 
+       3, 27, 2, 21, 0, 21, 0, 72, 0, 27, 
+       72, 59, 20, 
+/* KILL  ANIM  */
+       23, 13, 21, 
+       2, 18, 0, 19, 0, 38, 0, 71, 0, 18, 
+       62, 47, 72, 49, 
+/* GO    HOLE  */
+       9, 1, 57, 
+       2, 89, 0, 23, 
+       54, 20, 
+/* DROP  HELM  */
+       8, 18, 18, 
+       1, 15, 0, 15, 
+       53, 
+/* DROP  UNIF  */
+       8, 18, 72, 
+       1, 65, 0, 65, 
+       53, 
+/* DROP  CLOA  */
+       8, 18, 51, 
+       1, 43, 0, 43, 
+       53, 
+/* LIGH  CAND  */
+       22, 26, 69, 
+       3, 28, 2, 59, 0, 23, 0, 59, 0, 75, 
+       53, 72, 102, 
+/* PRAY  ANY   */
+       9, 41, 0, 
+       2, 75, 0, 7, 
+       58, 102, 
+/* EXAM  FLAM  */
+       10, 5, 26, 
+       8, 7, 2, 23, 
+       103, 106, 104, 
+/* EXAM  FLAM  */
+       10, 5, 26, 
+       9, 7, 2, 23, 
+       103, 106, 105, 
+/* GO    FLAM  */
+       13, 1, 26, 
+       8, 7, 2, 23, 0, 56, 
+       54, 20, 
+/* GO    FLAM  */
+       10, 1, 26, 
+       9, 7, 2, 23, 
+       103, 107, 61, 
+/* GO    BOAT  */
+       9, 1, 43, 
+       2, 38, 0, 53, 
+       54, 20, 
+/* ROW   BOAT  */
+       15, 57, 43, 
+       1, 39, 4, 53, 0, 51, 
+       20, 88, 108, 54, 
+/* GO    JETT  */
+       9, 1, 46, 
+       2, 84, 0, 64, 
+       54, 20, 
+/* GO    HUT   */
+       9, 1, 33, 
+       2, 29, 0, 58, 
+       54, 20, 
+/* FILL  PIPE  */
+       22, 59, 34, 
+       3, 30, 3, 31, 0, 30, 0, 73, 0, 31, 
+       20, 72, 59, 
+/* LIGH  PIPE  */
+       17, 26, 34, 
+       1, 73, 1, 28, 0, 73, 0, 74, 
+       20, 72, 
+/* SMOK  PIPE  */
+       21, 63, 34, 
+       1, 74, 4, 51, 5, 67, 0, 67, 0, 51, 
+       20, 62, 
+/* SMOK  PIPE  */
+       15, 63, 34, 
+       1, 74, 2, 67, 0, 44, 
+       20, 88, 109, 73, 
+/* AUTO  0     */
+       201, 
+       0, 44, 0, 74, 
+       54, 59, 
+/* SMOK  PIPE  */
+       4, 63, 34, 
+       1, 74, 
+       20, 
+/* SMAS  SKEL  */
+       17, 60, 54, 
+       1, 57, 2, 46, 0, 46, 0, 64, 
+       72, 20, 
+/* GO    TRAI  */
+       14, 1, 40, 
+       4, 44, 13, 64, 0, 45, 
+       20, 54, 64, 
+/* GO    TRAI  */
+       9, 1, 40, 
+       4, 44, 14, 64, 
+       110, 111, 
+/* GO    CAVE  */
+       9, 1, 65, 
+       2, 56, 0, 40, 
+       20, 54, 
+/* DIG   ANY   */
+       17, 58, 0, 
+       2, 47, 1, 36, 0, 47, 0, 48, 
+       72, 20, 
+/* GO    HOLE  */
+       9, 1, 57, 
+       2, 48, 0, 36, 
+       54, 20, 
+/* EXAM  CAIR  */
+       17, 5, 36, 
+       4, 39, 14, 33, 0, 33, 0, 39, 
+       62, 23, 
+/* EXAM  STON  */
+       4, 5, 37, 
+       3, 33, 
+       113, 
+/* RUB   STON  */
+       18, 16, 37, 
+       1, 33, 14, 34, 0, 34, 0, 34, 
+       74, 53, 102, 
+/* RUB   STON  */
+       4, 16, 37, 
+       1, 33, 
+       31, 
+/* GIVE  STON  */
+       22, 48, 37, 
+       1, 33, 2, 34, 0, 34, 0, 1, 0, 35, 
+       62, 74, 73, 
+/* AUTO  0     */
+       206, 
+       0, 33, 0, 1, 0, 35, 
+       62, 53, 114, 
+/* DIG   ANY   */
+       21, 58, 0, 
+       1, 36, 4, 40, 14, 41, 0, 41, 0, 40, 
+       62, 23, 
+/* DIG   ANY   */
+       0, 58, 0, 
+       24, 
+/* PUSH  BUTT  */
+       4, 74, 52, 
+       2, 44, 
+       31, 
+/* TO    MULE  */
+       5, 77, 24, 
+       1, 69, 
+       15, 116, 
+/* LIGH  FUSE  */
+       18, 26, 45, 
+       2, 41, 3, 28, 0, 40, 0, 41, 
+       72, 20, 73, 
+/* AUTO  0     */
+       206, 
+       0, 1, 0, 3, 0, 1, 
+       81, 79, 81, 
+/* WAIT  ANY   */
+       1, 52, 0, 
+       20, 88, 
+/* GO    HOLE  */
+       9, 1, 57, 
+       2, 88, 0, 47, 
+       54, 20, 
+/* EXAM  *I'm by a marsh       */
+       4, 5, 87, 
+       3, 20, 
+       119, 
+/* GO    CORR  */
+       9, 1, 30, 
+       2, 90, 0, 63, 
+       54, 64, 
+/* EXAM  VEIL  */
+       4, 5, 68, 
+       2, 58, 
+       122, 
+/* GO    VEIL  */
+       5, 1, 68, 
+       2, 58, 
+       123, 111, 
+/* EXAM  WIND  */
+       5, 5, 58, 
+       4, 59, 
+       124, 125, 
+/* PLAY  MUSI  */
+       19, 53, 81, 
+       4, 50, 3, 20, 0, 58, 0, 90, 
+       72, 102, 64, 64, 
+/* FIRE  XERD  */
+       15, 39, 61, 
+       1, 35, 1, 68, 4, 60, 
+       126, 125, 127, 73, 
+/* AUTO  0     */
+       195, 
+       128, 129, 64, 63, 
+/* FIRE  XERD  */
+       15, 39, 61, 
+       4, 61, 1, 68, 1, 35, 
+       125, 130, 132, 73, 
+/* AUTO  0     */
+       194, 
+       64, 64, 61, 
+/* OPEN  DOOR  */
+       0, 37, 64, 
+       22, 
+/* EXAM  GRAT  */
+       5, 5, 19, 
+       2, 16, 
+       124, 133, 
+/* SAY   ANY   */
+       2, 42, 0, 
+       20, 85, 31, 
+/* EAT   ANY   */
+       0, 33, 0, 
+       22, 
+/* FLY   KITE  */
+       0, 79, 53, 
+       134, 
+/* EXAM  SLIT  */
+       5, 5, 59, 
+       4, 60, 
+       135, 125, 
+/* EXAM  BEGG  */
+       4, 5, 38, 
+       2, 34, 
+       136, 
+/* SAVE  ANY   */
+       0, 4, 0, 
+       71, 
+/* QUIT  ANY   */
+       0, 3, 0, 
+       63, 
+/* INVE  ANY   */
+       0, 2, 0, 
+       66, 
+/* FUCK  ANY   */
+       0, 71, 0, 
+       120, 
+/* EXAM  ORGA  */
+       17, 5, 60, 
+       4, 50, 14, 20, 0, 20, 0, 50, 
+       62, 23, 
+/* PRAY  ANY   */
+       0, 41, 0, 
+       31, 
+/* PLAY  ANY   */
+       0, 53, 0, 
+       22, 
+/* SMAS  ANY   */
+       0, 60, 0, 
+       121, 
+/* EXAM  ANY   */
+       0, 5, 0, 
+       16, 
+/* KILL  ANY   */
+       0, 13, 0, 
+       22, 
+/* GO    ANY   */
+       0, 1, 0, 
+       22, 
+/* SWIM  ANY   */
+       0, 56, 0, 
+       22, 
+/* CLIM  ANY   */
+       0, 67, 0, 
+       22, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* INVE */
+       73, 78, 86, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* EXAM */
+       69, 88, 65, 77,
+       /* *INSP */
+       201, 78, 83, 80,
+       /* *LOOK */
+       204, 79, 79, 75,
+       /* *SEAR */
+       211, 69, 65, 82,
+       /* TURN */
+       84, 85, 82, 78,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *ACQU */
+       193, 67, 81, 85,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *DEST */
+       196, 69, 83, 84,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* RUB */
+       82, 85, 66, 32,
+       /* *POLI */
+       208, 79, 76, 73,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *DISC */
+       196, 73, 83, 67,
+       /* HOLD */
+       72, 79, 76, 68,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* CUT */
+       67, 85, 84, 32,
+       /* *CHOP */
+       195, 72, 79, 80,
+       /* *SLIC */
+       211, 76, 73, 67,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* *IGNI */
+       201, 71, 78, 73,
+       /* *BURN */
+       194, 85, 82, 78,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* *EXTI */
+       197, 88, 84, 73,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* REMO */
+       82, 69, 77, 79,
+       /* EAT */
+       69, 65, 84, 32,
+       /* *TAST */
+       212, 65, 83, 84,
+       /* *NIBB */
+       206, 73, 66, 66,
+       /* *DEVO */
+       196, 69, 86, 79,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* UNLO */
+       85, 78, 76, 79,
+       /* FIRE */
+       70, 73, 82, 69,
+       /* *SHOO */
+       211, 72, 79, 79,
+       /* PRAY */
+       80, 82, 65, 89,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *TALK */
+       212, 65, 76, 75,
+       /* *ASK */
+       193, 83, 75, 32,
+       /* TIE */
+       84, 73, 69, 32,
+       /* *WRAP */
+       215, 82, 65, 80,
+       /* FEED */
+       70, 69, 69, 68,
+       /* GIVE */
+       71, 73, 86, 69,
+       /* *OFFE */
+       207, 70, 70, 69,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* *LEAP */
+       204, 69, 65, 80,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* PLAY */
+       80, 76, 65, 89,
+       /* READ */
+       82, 69, 65, 68,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* ROW */
+       82, 79, 87, 32,
+       /* DIG */
+       68, 73, 71, 32,
+       /* FILL */
+       70, 73, 76, 76,
+       /* SMAS */
+       83, 77, 65, 83,
+       /* *BREA */
+       194, 82, 69, 65,
+       /* *RUIN */
+       210, 85, 73, 78,
+       /* SMOK */
+       83, 77, 79, 75,
+       /* *PUFF */
+       208, 85, 70, 70,
+       /* PULL */
+       80, 85, 76, 76,
+       /* *TUG */
+       212, 85, 71, 32,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* THRO */
+       84, 72, 82, 79,
+       /* *SLIN */
+       211, 76, 73, 78,
+       /* *CHUC */
+       195, 72, 85, 67,
+       /* FUCK */
+       70, 85, 67, 75,
+       /* *PISS */
+       208, 73, 83, 83,
+       /* HELP */
+       72, 69, 76, 80,
+       /* PUSH */
+       80, 85, 83, 72,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* UNBO */
+       85, 78, 66, 79,
+       /* TO */
+       84, 79, 32, 32,
+       /* MAKE */
+       77, 65, 75, 69,
+       /* FLY */
+       70, 76, 89, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORTH */
+       78, 79, 82, 84,
+       /* SOUTH */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* ARRO */
+       65, 82, 82, 79,
+       /* WILL */
+       87, 73, 76, 76,
+       /* *BRAN */
+       194, 82, 65, 78,
+       /* SWOR */
+       83, 87, 79, 82,
+       /* BRID */
+       66, 82, 73, 68,
+       /* CREV */
+       67, 82, 69, 86,
+       /* LAMP */
+       76, 65, 77, 80,
+       /* ROPE */
+       82, 79, 80, 69,
+       /* GRIL */
+       71, 82, 73, 76,
+       /* LEVE */
+       76, 69, 86, 69,
+       /* SLAB */
+       83, 76, 65, 66,
+       /* HELM */
+       72, 69, 76, 77,
+       /* GRAT */
+       71, 82, 65, 84,
+       /* ARNI */
+       65, 82, 78, 73,
+       /* ANIM */
+       65, 78, 73, 77,
+       /* KEY */
+       75, 69, 89, 32,
+       /* OFF */
+       79, 70, 70, 32,
+       /* MULE */
+       77, 85, 76, 69,
+       /* ALTA */
+       65, 76, 84, 65,
+       /* FLAM */
+       70, 76, 65, 77,
+       /* WHEE */
+       87, 72, 69, 69,
+       /* GUAR */
+       71, 85, 65, 82,
+       /* BREA */
+       66, 82, 69, 65,
+       /* CORR */
+       67, 79, 82, 82,
+       /* CHEE */
+       67, 72, 69, 69,
+       /* FLIN */
+       70, 76, 73, 78,
+       /* HUT */
+       72, 85, 84, 32,
+       /* PIPE */
+       80, 73, 80, 69,
+       /* TOBA */
+       84, 79, 66, 65,
+       /* CAIR */
+       67, 65, 73, 82,
+       /* STON */
+       83, 84, 79, 78,
+       /* BEGG */
+       66, 69, 71, 71,
+       /* BOW */
+       66, 79, 87, 32,
+       /* TRAI */
+       84, 82, 65, 73,
+       /* SHOV */
+       83, 72, 79, 86,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* BOAT */
+       66, 79, 65, 84,
+       /* OARS */
+       79, 65, 82, 83,
+       /* FUSE */
+       70, 85, 83, 69,
+       /* JETT */
+       74, 69, 84, 84,
+       /* DYNA */
+       68, 89, 78, 65,
+       /* SHRU */
+       83, 72, 82, 85,
+       /* LEAV */
+       76, 69, 65, 86,
+       /* WEED */
+       87, 69, 69, 68,
+       /* CLOA */
+       67, 76, 79, 65,
+       /* BUTT */
+       66, 85, 84, 84,
+       /* KITE */
+       75, 73, 84, 69,
+       /* SKEL */
+       83, 75, 69, 76,
+       /* MOUN */
+       77, 79, 85, 78,
+       /* MUD */
+       77, 85, 68, 32,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* WIND */
+       87, 73, 78, 68,
+       /* SLIT */
+       83, 76, 73, 84,
+       /* ORGA */
+       79, 82, 71, 65,
+       /* XERD */
+       88, 69, 82, 68,
+       /* TAPE */
+       84, 65, 80, 69,
+       /* ARCH */
+       65, 82, 67, 72,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* CAVE */
+       67, 65, 86, 69,
+       /* WARR */
+       87, 65, 82, 82,
+       /* ROCK */
+       82, 79, 67, 75,
+       /* VEIL */
+       86, 69, 73, 76,
+       /* CAND */
+       67, 65, 78, 68,
+       /* BONE */
+       66, 79, 78, 69,
+       /* FISH */
+       70, 73, 83, 72,
+       /* UNIF */
+       85, 78, 73, 70,
+       /* MARS */
+       77, 65, 82, 83,
+       /* STAI */
+       83, 84, 65, 73,
+       /* LAKE */
+       76, 65, 75, 69,
+       /* FEAT */
+       70, 69, 65, 84,
+       /* GORG */
+       71, 79, 82, 71,
+       /* LEDG */
+       76, 69, 68, 71,
+       /* WATE */
+       87, 65, 84, 69,
+       /* BOUL */
+       66, 79, 85, 76,
+       /* MUSI */
+       77, 85, 83, 73,
+       /* *DIRG */
+       196, 73, 82, 71,
+       0,
+};
+const uint8_t automap[] = {
+       /* ARRO */
+       65, 82, 82, 79,
+       0,
+       /* WILL */
+       87, 73, 76, 76,
+       1,
+       /* FEAT */
+       70, 69, 65, 84,
+       2,
+       /* SWOR */
+       83, 87, 79, 82,
+       3,
+       /* LAMP */
+       76, 65, 77, 80,
+       6,
+       /* LAMP */
+       76, 65, 77, 80,
+       9,
+       /* HELM */
+       72, 69, 76, 77,
+       15,
+       /* KEY */
+       75, 69, 89, 32,
+       19,
+       /* MUSI */
+       77, 85, 83, 73,
+       20,
+       /* BREA */
+       66, 82, 69, 65,
+       26,
+       /* CHEE */
+       67, 72, 69, 69,
+       27,
+       /* FLIN */
+       70, 76, 73, 78,
+       28,
+       /* PIPE */
+       80, 73, 80, 69,
+       30,
+       /* TOBA */
+       84, 79, 66, 65,
+       31,
+       /* STON */
+       83, 84, 79, 78,
+       33,
+       /* BOW */
+       66, 79, 87, 32,
+       35,
+       /* SHOV */
+       83, 72, 79, 86,
+       36,
+       /* OARS */
+       79, 65, 82, 83,
+       39,
+       /* DYNA */
+       68, 89, 78, 65,
+       40,
+       /* DYNA */
+       68, 89, 78, 65,
+       41,
+       /* LEAV */
+       76, 69, 65, 86,
+       42,
+       /* CLOA */
+       67, 76, 79, 65,
+       43,
+       /* KITE */
+       75, 73, 84, 69,
+       45,
+       /* ROCK */
+       82, 79, 67, 75,
+       57,
+       /* WEED */
+       87, 69, 69, 68,
+       62,
+       /* BONE */
+       66, 79, 78, 69,
+       64,
+       /* UNIF */
+       85, 78, 73, 70,
+       65,
+       /* ARRO */
+       65, 82, 82, 79,
+       68,
+       /* ROPE */
+       82, 79, 80, 69,
+       69,
+       /* PIPE */
+       80, 73, 80, 69,
+       73,
+       /* PIPE */
+       80, 73, 80, 69,
+       74,
+       /* KITE */
+       75, 73, 84, 69,
+       81,
+       /* ROPE */
+       82, 79, 80, 69,
+       86,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst05.c b/Applications/games/myst05.c
new file mode 100644 (file)
index 0000000..c7963cd
--- /dev/null
@@ -0,0 +1,3408 @@
+#define NUM_OBJ 90
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 200;
+const uint8_t lightfill = 200;
+const uint8_t startcarried = 1;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 45;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+67, 111, 112, 121, 114, 105, 103, 104, 116, 32, 40, 67, 41, 32, 49, 57, 56, 50, 32, 66, 46, 72, 79, 87, 65, 82, 84, 72, 0 };
+const uint8_t loctxt_1[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 102, 114, 101, 105, 103, 104, 116, 101, 114, 39, 115, 32, 115, 111, 99, 105, 97, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_2[] = {
+99, 114, 101, 119, 109, 97, 110, 39, 115, 32, 99, 97, 98, 105, 110, 0 };
+const uint8_t loctxt_3[] = {
+110, 105, 99, 101, 32, 119, 97, 114, 109, 32, 98, 117, 110, 107, 0 };
+const uint8_t loctxt_4[] = {
+99, 114, 101, 119, 109, 97, 110, 39, 115, 32, 99, 97, 98, 105, 110, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 99, 114, 101, 119, 109, 97, 110, 39, 115, 32, 98, 117, 110, 107, 0 };
+const uint8_t loctxt_6[] = {
+108, 97, 114, 103, 101, 32, 97, 105, 114, 32, 118, 101, 110, 116, 0 };
+const uint8_t loctxt_7[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 106, 117, 110, 99, 116, 105, 111, 110, 32, 111, 102, 32, 116, 104, 114, 101, 101, 32, 112, 97, 115, 115, 97, 103, 101, 115, 0 };
+const uint8_t loctxt_8[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 115, 104, 105, 112, 39, 115, 32, 66, 114, 105, 100, 103, 101, 0 };
+const uint8_t loctxt_9[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 65, 105, 114, 108, 111, 99, 107, 0 };
+const uint8_t loctxt_10[] = {
+42, 73, 39, 109, 32, 105, 110, 115, 105, 100, 101, 32, 116, 104, 101, 32, 99, 111, 110, 116, 114, 111, 108, 32, 99, 111, 110, 115, 111, 108, 101, 0 };
+const uint8_t loctxt_11[] = {
+112, 97, 115, 115, 97, 103, 101, 119, 97, 121, 0 };
+const uint8_t loctxt_12[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 71, 97, 108, 108, 101, 121, 0 };
+const uint8_t loctxt_13[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 67, 97, 112, 116, 97, 105, 110, 39, 115, 32, 99, 97, 98, 105, 110, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 67, 97, 112, 116, 97, 105, 110, 39, 115, 32, 98, 117, 110, 107, 0 };
+const uint8_t loctxt_15[] = {
+108, 97, 114, 103, 101, 32, 109, 101, 116, 97, 108, 32, 112, 105, 112, 101, 0 };
+const uint8_t loctxt_16[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 101, 109, 101, 114, 103, 101, 110, 99, 121, 32, 65, 105, 114, 108, 111, 99, 107, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 111, 117, 116, 32, 111, 110, 32, 116, 104, 101, 32, 72, 117, 108, 108, 0 };
+const uint8_t loctxt_18[] = {
+83, 104, 117, 116, 116, 108, 101, 32, 67, 114, 97, 102, 116, 32, 98, 97, 121, 0 };
+const uint8_t loctxt_19[] = {
+83, 104, 117, 116, 116, 108, 101, 32, 67, 114, 97, 102, 116, 0 };
+const uint8_t loctxt_20[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 118, 101, 110, 116, 105, 108, 97, 116, 105, 111, 110, 32, 100, 117, 99, 116, 115, 0 };
+const uint8_t loctxt_21[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 118, 101, 110, 116, 105, 108, 97, 116, 105, 111, 110, 32, 100, 117, 99, 116, 115, 0 };
+const uint8_t loctxt_22[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 118, 101, 110, 116, 105, 108, 97, 116, 105, 111, 110, 32, 100, 117, 99, 116, 115, 0 };
+const uint8_t loctxt_23[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 118, 101, 110, 116, 105, 108, 97, 116, 105, 111, 110, 32, 100, 117, 99, 116, 115, 0 };
+const uint8_t loctxt_24[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 118, 101, 110, 116, 105, 108, 97, 116, 105, 111, 110, 32, 100, 117, 99, 116, 115, 0 };
+const uint8_t loctxt_25[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 118, 101, 110, 116, 105, 108, 97, 116, 105, 111, 110, 32, 100, 117, 99, 116, 115, 0 };
+const uint8_t loctxt_26[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 118, 101, 110, 116, 105, 108, 97, 116, 105, 111, 110, 32, 100, 117, 99, 116, 115, 0 };
+const uint8_t loctxt_27[] = {
+109, 97, 122, 101, 32, 111, 102, 32, 118, 101, 110, 116, 105, 108, 97, 116, 105, 111, 110, 32, 100, 117, 99, 116, 115, 0 };
+const uint8_t loctxt_28[] = {
+119, 111, 114, 107, 115, 104, 111, 112, 0 };
+const uint8_t loctxt_29[] = {
+42, 73, 39, 109, 32, 117, 110, 100, 101, 114, 110, 101, 97, 116, 104, 32, 116, 104, 101, 32, 76, 97, 116, 104, 101, 0 };
+const uint8_t loctxt_30[] = {
+115, 116, 111, 114, 101, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_31[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 82, 101, 97, 99, 116, 111, 114, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_32[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 67, 82, 69, 65, 84, 85, 82, 69, 39, 83, 32, 104, 105, 100, 101, 111, 117, 116, 0 };
+const uint8_t loctxt_33[] = {
+116, 111, 116, 97, 108, 108, 121, 32, 119, 114, 101, 99, 107, 101, 100, 32, 99, 97, 98, 105, 110, 0 };
+const uint8_t loctxt_34[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 98, 117, 110, 107, 0 };
+const uint8_t loctxt_35[] = {
+99, 97, 98, 108, 101, 32, 114, 117, 110, 119, 97, 121, 0 };
+const uint8_t loctxt_36[] = {
+99, 97, 114, 103, 111, 32, 115, 116, 111, 114, 97, 103, 101, 32, 104, 111, 108, 100, 0 };
+const uint8_t loctxt_37[] = {
+108, 97, 114, 103, 101, 32, 99, 97, 103, 101, 0 };
+const uint8_t loctxt_38[] = {
+99, 97, 114, 103, 111, 32, 115, 116, 111, 114, 97, 103, 101, 32, 104, 111, 108, 100, 0 };
+const uint8_t loctxt_39[] = {
+108, 97, 114, 103, 101, 32, 99, 114, 97, 116, 101, 0 };
+const uint8_t loctxt_40[] = {
+76, 97, 114, 100, 101, 114, 0 };
+const uint8_t loctxt_41[] = {
+109, 101, 116, 97, 108, 32, 112, 97, 115, 115, 97, 103, 101, 119, 97, 121, 0 };
+const uint8_t loctxt_42[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 97, 32, 106, 117, 110, 99, 116, 105, 111, 110, 32, 111, 102, 32, 116, 104, 114, 101, 101, 32, 112, 97, 115, 115, 97, 103, 101, 115, 0 };
+const uint8_t loctxt_43[] = {
+109, 101, 116, 97, 108, 32, 112, 97, 115, 115, 97, 103, 101, 119, 97, 121, 0 };
+const uint8_t loctxt_44[] = {
+101, 115, 114, 102, 111, 116, 100, 100, 116, 99, 111, 116, 103, 0 };
+const uint8_t loctxt_45[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 77, 65, 78, 85, 82, 69, 32, 116, 104, 105, 115, 32, 116, 105, 109, 101, 32, 33, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 2, 0, 4, 0, 0 } }, 
+               { loctxt_2,  { 1, 0, 0, 0, 0, 0 } }, 
+               { loctxt_3,  { 0, 0, 0, 0, 0, 2 } }, 
+               { loctxt_4,  { 0, 0, 1, 0, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 0, 0, 0, 4 } }, 
+               { loctxt_6,  { 7, 0, 0, 0, 0, 4 } }, 
+               { loctxt_7,  { 0, 11, 8, 9, 0, 0 } }, 
+               { loctxt_8,  { 41, 7, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 0, 0, 7, 0, 0, 0 } }, 
+               { loctxt_10,  { 8, 0, 0, 0, 0, 0 } }, 
+               { loctxt_11,  { 7, 13, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 1, 42, 11, 0, 0 } }, 
+               { loctxt_13,  { 11, 0, 43, 42, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 0, 0, 13 } }, 
+               { loctxt_15,  { 0, 0, 0, 0, 16, 13 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 15 } }, 
+               { loctxt_17,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_19,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 20, 20, 21, 20, 8, 20 } }, 
+               { loctxt_21,  { 21, 23, 21, 21, 33, 21 } }, 
+               { loctxt_22,  { 20, 24, 22, 22, 32, 22 } }, 
+               { loctxt_23,  { 23, 23, 23, 22, 28, 23 } }, 
+               { loctxt_24,  { 24, 24, 25, 24, 24, 24 } }, 
+               { loctxt_25,  { 23, 27, 25, 25, 25, 25 } }, 
+               { loctxt_26,  { 24, 26, 26, 30, 26, 26 } }, 
+               { loctxt_27,  { 27, 27, 27, 26, 27, 31 } }, 
+               { loctxt_28,  { 0, 0, 0, 0, 0, 25 } }, 
+               { loctxt_29,  { 28, 0, 0, 0, 0, 0 } }, 
+               { loctxt_30,  { 0, 0, 26, 0, 0, 0 } }, 
+               { loctxt_31,  { 0, 0, 0, 0, 24, 0 } }, 
+               { loctxt_32,  { 0, 0, 0, 0, 0, 22 } }, 
+               { loctxt_33,  { 0, 0, 0, 0, 0, 22 } }, 
+               { loctxt_34,  { 0, 0, 0, 0, 0, 33 } }, 
+               { loctxt_35,  { 0, 0, 0, 36, 0, 33 } }, 
+               { loctxt_36,  { 38, 0, 35, 0, 0, 0 } }, 
+               { loctxt_37,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_38,  { 0, 36, 0, 0, 0, 0 } }, 
+               { loctxt_39,  { 0, 0, 0, 38, 0, 0 } }, 
+               { loctxt_40,  { 12, 0, 0, 0, 0, 0 } }, 
+               { loctxt_41,  { 42, 8, 0, 0, 0, 0 } }, 
+               { loctxt_42,  { 0, 41, 13, 12, 0, 0 } }, 
+               { loctxt_43,  { 0, 0, 28, 13, 0, 0 } }, 
+               { loctxt_44,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_45,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       255,
+       0,
+       1,
+       1,
+       2,
+       2,
+       0,
+       0,
+       4,
+       0,
+       0,
+       0,
+       5,
+       6,
+       8,
+       0,
+       0,
+       0,
+       9,
+       10,
+       0,
+       0,
+       11,
+       0,
+       12,
+       12,
+       0,
+       0,
+       0,
+       0,
+       13,
+       0,
+       0,
+       0,
+       15,
+       16,
+       16,
+       16,
+       0,
+       0,
+       0,
+       17,
+       18,
+       18,
+       19,
+       28,
+       29,
+       31,
+       0,
+       31,
+       0,
+       0,
+       28,
+       30,
+       0,
+       0,
+       0,
+       32,
+       0,
+       0,
+       0,
+       0,
+       32,
+       0,
+       0,
+       40,
+       12,
+       0,
+       24,
+       40,
+       0,
+       33,
+       0,
+       0,
+       35,
+       0,
+       0,
+       0,
+       36,
+       37,
+       0,
+       38,
+       39,
+       1,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+87, 97, 116, 99, 104, 0 };
+const uint8_t objtxt_1[] = {
+32, 0 };
+const uint8_t objtxt_2[] = {
+67, 111, 117, 99, 104, 0 };
+const uint8_t objtxt_3[] = {
+67, 108, 111, 115, 101, 100, 32, 115, 116, 101, 101, 108, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_4[] = {
+67, 114, 101, 119, 109, 97, 110, 39, 115, 32, 66, 117, 110, 107, 0 };
+const uint8_t objtxt_5[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_6[] = {
+67, 108, 111, 115, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_7[] = {
+65, 117, 116, 111, 32, 100, 105, 115, 112, 101, 110, 115, 101, 32, 112, 105, 108, 108, 111, 119, 0 };
+const uint8_t objtxt_8[] = {
+67, 114, 101, 119, 109, 97, 110, 39, 115, 32, 66, 117, 110, 107, 0 };
+const uint8_t objtxt_9[] = {
+71, 108, 111, 119, 105, 110, 103, 32, 73, 108, 108, 117, 109, 105, 110, 97, 110, 116, 32, 82, 111, 100, 0 };
+const uint8_t objtxt_10[] = {
+68, 117, 108, 108, 32, 73, 108, 108, 117, 109, 105, 110, 97, 110, 116, 32, 82, 111, 100, 0 };
+const uint8_t objtxt_11[] = {
+0 };
+const uint8_t objtxt_12[] = {
+76, 97, 114, 103, 101, 32, 65, 105, 114, 32, 118, 101, 110, 116, 0 };
+const uint8_t objtxt_13[] = {
+68, 117, 115, 116, 0 };
+const uint8_t objtxt_14[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 67, 111, 110, 115, 111, 108, 101, 0 };
+const uint8_t objtxt_15[] = {
+83, 109, 97, 108, 108, 32, 109, 101, 116, 97, 108, 32, 114, 105, 110, 103, 32, 105, 110, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_16[] = {
+79, 112, 101, 110, 32, 72, 97, 116, 99, 104, 0 };
+const uint8_t objtxt_17[] = {
+77, 101, 116, 97, 108, 32, 72, 111, 111, 107, 0 };
+const uint8_t objtxt_18[] = {
+79, 82, 65, 78, 71, 69, 32, 66, 117, 116, 116, 111, 110, 0 };
+const uint8_t objtxt_19[] = {
+69, 108, 101, 99, 116, 114, 105, 99, 97, 108, 32, 101, 100, 103, 101, 32, 99, 111, 110, 110, 101, 99, 116, 111, 114, 0 };
+const uint8_t objtxt_20[] = {
+67, 105, 114, 99, 117, 105, 116, 32, 66, 111, 97, 114, 100, 0 };
+const uint8_t objtxt_21[] = {
+80, 108, 117, 103, 103, 101, 100, 32, 105, 110, 32, 67, 105, 114, 99, 117, 105, 116, 32, 66, 111, 97, 114, 100, 0 };
+const uint8_t objtxt_22[] = {
+67, 108, 111, 115, 101, 100, 32, 115, 116, 101, 101, 108, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_23[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_24[] = {
+79, 118, 101, 110, 0 };
+const uint8_t objtxt_25[] = {
+76, 97, 114, 100, 101, 114, 0 };
+const uint8_t objtxt_26[] = {
+70, 114, 117, 105, 116, 32, 99, 97, 107, 101, 0 };
+const uint8_t objtxt_27[] = {
+68, 114, 117, 103, 103, 101, 100, 32, 70, 114, 117, 105, 116, 32, 99, 97, 107, 101, 0 };
+const uint8_t objtxt_28[] = {
+66, 76, 65, 67, 75, 32, 66, 117, 116, 116, 111, 110, 0 };
+const uint8_t objtxt_29[] = {
+87, 72, 73, 84, 69, 32, 66, 117, 116, 116, 111, 110, 0 };
+const uint8_t objtxt_30[] = {
+67, 97, 112, 116, 97, 105, 110, 39, 115, 32, 66, 117, 110, 107, 0 };
+const uint8_t objtxt_31[] = {
+77, 101, 116, 97, 108, 32, 80, 97, 110, 101, 108, 0 };
+const uint8_t objtxt_32[] = {
+82, 101, 116, 97, 105, 110, 105, 110, 103, 32, 67, 108, 105, 112, 115, 0 };
+const uint8_t objtxt_33[] = {
+72, 111, 108, 101, 0 };
+const uint8_t objtxt_34[] = {
+68, 117, 115, 116, 0 };
+const uint8_t objtxt_35[] = {
+82, 69, 68, 32, 66, 117, 116, 116, 111, 110, 0 };
+const uint8_t objtxt_36[] = {
+79, 112, 101, 110, 32, 105, 110, 110, 101, 114, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_37[] = {
+67, 108, 111, 115, 101, 100, 32, 111, 117, 116, 101, 114, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_38[] = {
+67, 108, 111, 115, 101, 100, 32, 105, 110, 110, 101, 114, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_39[] = {
+79, 112, 101, 110, 32, 111, 117, 116, 101, 114, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_40[] = {
+72, 97, 116, 99, 104, 0 };
+const uint8_t objtxt_41[] = {
+79, 112, 101, 110, 32, 104, 97, 116, 99, 104, 0 };
+const uint8_t objtxt_42[] = {
+83, 104, 117, 116, 116, 108, 101, 32, 67, 114, 97, 102, 116, 0 };
+const uint8_t objtxt_43[] = {
+76, 101, 118, 101, 114, 0 };
+const uint8_t objtxt_44[] = {
+89, 69, 76, 76, 79, 87, 32, 66, 117, 116, 116, 111, 110, 0 };
+const uint8_t objtxt_45[] = {
+67, 101, 110, 116, 114, 101, 32, 76, 97, 116, 104, 101, 0 };
+const uint8_t objtxt_46[] = {
+84, 111, 111, 108, 32, 67, 111, 109, 112, 97, 114, 116, 109, 101, 110, 116, 0 };
+const uint8_t objtxt_47[] = {
+72, 97, 109, 109, 101, 114, 0 };
+const uint8_t objtxt_48[] = {
+83, 99, 114, 101, 119, 100, 114, 105, 118, 101, 114, 32, 66, 108, 97, 100, 101, 0 };
+const uint8_t objtxt_49[] = {
+80, 105, 101, 99, 101, 32, 111, 102, 32, 87, 111, 111, 100, 0 };
+const uint8_t objtxt_50[] = {
+82, 111, 117, 103, 104, 32, 77, 101, 116, 97, 108, 32, 66, 97, 114, 0 };
+const uint8_t objtxt_51[] = {
+83, 99, 114, 101, 119, 100, 114, 105, 118, 101, 114, 0 };
+const uint8_t objtxt_52[] = {
+83, 111, 99, 107, 101, 116, 0 };
+const uint8_t objtxt_53[] = {
+76, 111, 99, 107, 101, 114, 0 };
+const uint8_t objtxt_54[] = {
+83, 109, 97, 115, 104, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_55[] = {
+83, 112, 97, 99, 101, 32, 83, 117, 105, 116, 0 };
+const uint8_t objtxt_56[] = {
+83, 112, 97, 99, 101, 32, 83, 117, 105, 116, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_57[] = {
+77, 97, 103, 110, 101, 116, 105, 99, 32, 66, 111, 111, 116, 115, 0 };
+const uint8_t objtxt_58[] = {
+77, 97, 103, 110, 101, 116, 105, 99, 32, 66, 111, 111, 116, 115, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_59[] = {
+67, 82, 69, 65, 84, 85, 82, 69, 0 };
+const uint8_t objtxt_60[] = {
+32, 0 };
+const uint8_t objtxt_61[] = {
+83, 108, 101, 101, 112, 105, 110, 103, 32, 67, 82, 69, 65, 84, 85, 82, 69, 0 };
+const uint8_t objtxt_62[] = {
+67, 82, 69, 65, 84, 85, 82, 69, 0 };
+const uint8_t objtxt_63[] = {
+87, 104, 105, 116, 101, 32, 84, 97, 98, 108, 101, 116, 115, 0 };
+const uint8_t objtxt_64[] = {
+67, 97, 107, 101, 32, 77, 105, 120, 0 };
+const uint8_t objtxt_65[] = {
+66, 97, 103, 32, 111, 102, 32, 70, 108, 111, 117, 114, 0 };
+const uint8_t objtxt_66[] = {
+66, 111, 116, 116, 108, 101, 32, 111, 102, 32, 87, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_67[] = {
+80, 117, 100, 100, 108, 101, 32, 111, 102, 32, 87, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_68[] = {
+67, 97, 107, 101, 32, 84, 105, 110, 0 };
+const uint8_t objtxt_69[] = {
+66, 97, 103, 32, 111, 102, 32, 82, 97, 105, 115, 105, 110, 115, 0 };
+const uint8_t objtxt_70[] = {
+79, 112, 101, 110, 32, 115, 116, 101, 101, 108, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_71[] = {
+87, 114, 101, 99, 107, 97, 103, 101, 0 };
+const uint8_t objtxt_72[] = {
+66, 117, 110, 107, 0 };
+const uint8_t objtxt_73[] = {
+83, 109, 97, 108, 108, 32, 75, 101, 121, 0 };
+const uint8_t objtxt_74[] = {
+76, 101, 110, 103, 116, 104, 32, 111, 102, 32, 67, 97, 98, 108, 101, 0 };
+const uint8_t objtxt_75[] = {
+82, 111, 117, 110, 100, 32, 66, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_76[] = {
+77, 101, 116, 97, 108, 32, 71, 114, 105, 108, 108, 101, 0 };
+const uint8_t objtxt_77[] = {
+67, 97, 98, 108, 101, 115, 0 };
+const uint8_t objtxt_78[] = {
+83, 112, 101, 99, 105, 109, 101, 110, 32, 67, 97, 103, 101, 0 };
+const uint8_t objtxt_79[] = {
+76, 111, 99, 107, 101, 100, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_80[] = {
+79, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_81[] = {
+72, 117, 103, 101, 32, 67, 114, 97, 116, 101, 0 };
+const uint8_t objtxt_82[] = {
+83, 113, 117, 97, 114, 101, 32, 66, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_83[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_84[] = {
+67, 114, 117, 109, 112, 108, 101, 100, 32, 78, 111, 116, 101, 0 };
+const uint8_t objtxt_85[] = {
+67, 97, 107, 101, 32, 84, 105, 110, 32, 40, 119, 105, 116, 104, 32, 119, 97, 116, 101, 114, 32, 105, 110, 41, 0 };
+const uint8_t objtxt_86[] = {
+72, 111, 108, 101, 0 };
+const uint8_t objtxt_87[] = {
+79, 118, 101, 110, 32, 40, 110, 111, 119, 32, 102, 117, 110, 99, 116, 105, 111, 110, 97, 108, 41, 0 };
+const uint8_t objtxt_88[] = {
+76, 97, 116, 104, 101, 32, 104, 111, 111, 107, 101, 100, 32, 117, 112, 32, 116, 111, 32, 112, 111, 119, 101, 114, 32, 115, 117, 112, 112, 108, 121, 0 };
+const uint8_t objtxt_89[] = {
+0 };
+const uint8_t objtxt_90[] = {
+0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+       objtxt_67,
+       objtxt_68,
+       objtxt_69,
+       objtxt_70,
+       objtxt_71,
+       objtxt_72,
+       objtxt_73,
+       objtxt_74,
+       objtxt_75,
+       objtxt_76,
+       objtxt_77,
+       objtxt_78,
+       objtxt_79,
+       objtxt_80,
+       objtxt_81,
+       objtxt_82,
+       objtxt_83,
+       objtxt_84,
+       objtxt_85,
+       objtxt_86,
+       objtxt_87,
+       objtxt_88,
+       objtxt_89,
+       objtxt_90,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 34, 69, 83, 67, 65, 80, 69, 32, 70, 82, 79, 77, 32, 80, 85, 76, 83, 65, 82, 32, 55, 34, 0 };
+const uint8_t msgtxt_2[] = {
+98, 121, 32, 66, 114, 105, 97, 110, 32, 72, 111, 119, 97, 114, 116, 104, 32, 38, 32, 87, 104, 101, 114, 110, 101, 114, 32, 66, 97, 114, 110, 101, 115, 0 };
+const uint8_t msgtxt_3[] = {
+68, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 32, 87, 104, 101, 114, 110, 101, 114, 39, 115, 32, 77, 111, 116, 104, 101, 114, 32, 45, 32, 77, 73, 76, 68, 82, 69, 68, 46, 0 };
+const uint8_t msgtxt_4[] = {
+84, 101, 108, 108, 32, 109, 101, 32, 104, 111, 119, 32, 63, 0 };
+const uint8_t msgtxt_5[] = {
+84, 114, 121, 32, 69, 88, 65, 77, 73, 78, 73, 78, 71, 32, 116, 104, 105, 110, 103, 115, 0 };
+const uint8_t msgtxt_6[] = {
+83, 97, 121, 115, 32, 45, 0 };
+const uint8_t msgtxt_7[] = {
+73, 32, 104, 97, 118, 101, 32, 98, 101, 101, 110, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_8[] = {
+109, 111, 118, 101, 115, 0 };
+const uint8_t msgtxt_9[] = {
+79, 46, 107, 46, 0 };
+const uint8_t msgtxt_10[] = {
+73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 32, 105, 116, 32, 33, 0 };
+const uint8_t msgtxt_11[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 111, 102, 32, 105, 110, 116, 101, 114, 101, 115, 116, 0 };
+const uint8_t msgtxt_12[] = {
+73, 39, 118, 101, 32, 102, 111, 117, 110, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_13[] = {
+67, 97, 110, 39, 116, 32, 117, 115, 101, 0 };
+const uint8_t msgtxt_14[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_15[] = {
+87, 104, 101, 114, 101, 32, 63, 0 };
+const uint8_t msgtxt_16[] = {
+83, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_17[] = {
+84, 105, 109, 101, 32, 112, 97, 115, 115, 101, 115, 46, 46, 46, 46, 46, 46, 0 };
+const uint8_t msgtxt_18[] = {
+71, 111, 32, 119, 97, 115, 104, 32, 121, 111, 117, 114, 32, 109, 111, 117, 116, 104, 32, 111, 117, 116, 33, 0 };
+const uint8_t msgtxt_19[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 0 };
+const uint8_t msgtxt_20[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_21[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_22[] = {
+84, 104, 97, 110, 107, 115, 33, 0 };
+const uint8_t msgtxt_23[] = {
+89, 111, 117, 32, 104, 97, 118, 101, 32, 69, 83, 67, 65, 80, 69, 68, 33, 0 };
+const uint8_t msgtxt_24[] = {
+34, 80, 85, 76, 83, 65, 82, 32, 55, 32, 67, 114, 101, 119, 32, 111, 110, 108, 121, 34, 0 };
+const uint8_t msgtxt_25[] = {
+65, 114, 116, 105, 102, 105, 99, 105, 97, 108, 32, 68, 97, 121, 108, 105, 103, 104, 116, 32, 104, 97, 115, 32, 101, 110, 100, 101, 100, 33, 0 };
+const uint8_t msgtxt_26[] = {
+67, 82, 69, 65, 84, 85, 82, 69, 32, 114, 105, 112, 115, 32, 109, 121, 32, 104, 101, 97, 100, 32, 111, 102, 102, 33, 0 };
+const uint8_t msgtxt_27[] = {
+73, 32, 116, 105, 101, 32, 116, 104, 101, 32, 72, 97, 110, 107, 105, 101, 32, 97, 99, 114, 111, 115, 115, 32, 109, 121, 32, 102, 97, 99, 101, 0 };
+const uint8_t msgtxt_28[] = {
+68, 117, 115, 116, 32, 114, 105, 115, 101, 115, 32, 97, 110, 100, 32, 67, 72, 79, 75, 69, 83, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_29[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 114, 101, 97, 99, 104, 32, 105, 116, 0 };
+const uint8_t msgtxt_30[] = {
+105, 116, 32, 110, 101, 101, 100, 115, 32, 114, 101, 112, 97, 105, 114, 105, 110, 103, 0 };
+const uint8_t msgtxt_31[] = {
+105, 116, 32, 102, 105, 116, 115, 32, 110, 101, 97, 116, 108, 121, 32, 105, 110, 32, 109, 121, 32, 104, 97, 110, 100, 0 };
+const uint8_t msgtxt_32[] = {
+67, 108, 97, 110, 103, 45, 103, 45, 103, 45, 103, 0 };
+const uint8_t msgtxt_33[] = {
+67, 79, 78, 71, 82, 65, 84, 85, 76, 65, 84, 73, 79, 78, 83, 32, 33, 33, 0 };
+const uint8_t msgtxt_34[] = {
+78, 111, 32, 65, 73, 82, 33, 0 };
+const uint8_t msgtxt_35[] = {
+84, 104, 101, 32, 67, 82, 69, 65, 84, 85, 82, 69, 32, 106, 117, 115, 116, 32, 115, 108, 105, 116, 104, 101, 114, 101, 100, 32, 105, 110, 33, 0 };
+const uint8_t msgtxt_36[] = {
+110, 111, 32, 112, 111, 105, 110, 116, 32, 105, 110, 32, 116, 104, 97, 116, 33, 0 };
+const uint8_t msgtxt_37[] = {
+68, 79, 79, 82, 83, 32, 97, 114, 101, 32, 99, 108, 111, 115, 101, 100, 32, 45, 32, 73, 32, 67, 82, 65, 83, 72, 33, 0 };
+const uint8_t msgtxt_38[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 109, 111, 118, 101, 33, 0 };
+const uint8_t msgtxt_39[] = {
+73, 39, 118, 101, 32, 109, 97, 100, 101, 32, 97, 32, 67, 65, 75, 69, 33, 0 };
+const uint8_t msgtxt_40[] = {
+72, 79, 84, 32, 105, 110, 32, 116, 104, 101, 114, 101, 33, 0 };
+const uint8_t msgtxt_41[] = {
+84, 104, 101, 32, 67, 82, 69, 65, 84, 85, 82, 69, 32, 97, 116, 101, 32, 116, 104, 101, 32, 108, 111, 116, 33, 0 };
+const uint8_t msgtxt_42[] = {
+73, 116, 115, 32, 111, 112, 101, 110, 33, 0 };
+const uint8_t msgtxt_43[] = {
+85, 115, 101, 32, 97, 32, 67, 111, 108, 111, 117, 114, 0 };
+const uint8_t msgtxt_44[] = {
+71, 114, 105, 108, 108, 32, 99, 111, 109, 101, 115, 32, 97, 119, 97, 121, 32, 119, 105, 116, 104, 32, 97, 32, 115, 116, 114, 111, 110, 103, 32, 112, 117, 108, 108, 33, 0 };
+const uint8_t msgtxt_45[] = {
+116, 104, 97, 116, 32, 111, 110, 101, 32, 105, 115, 32, 108, 111, 111, 115, 101, 0 };
+const uint8_t msgtxt_46[] = {
+87, 104, 101, 101, 101, 101, 101, 33, 0 };
+const uint8_t msgtxt_47[] = {
+84, 104, 117, 100, 33, 32, 32, 73, 32, 102, 97, 108, 108, 32, 98, 97, 99, 107, 32, 100, 111, 119, 110, 33, 0 };
+const uint8_t msgtxt_48[] = {
+105, 116, 39, 115, 32, 108, 97, 98, 101, 108, 108, 101, 100, 32, 34, 82, 65, 87, 32, 77, 65, 84, 69, 82, 73, 65, 76, 83, 34, 0 };
+const uint8_t msgtxt_49[] = {
+68, 111, 111, 114, 32, 111, 112, 101, 110, 115, 32, 105, 110, 32, 102, 114, 111, 110, 116, 32, 111, 102, 32, 109, 101, 0 };
+const uint8_t msgtxt_50[] = {
+68, 111, 111, 114, 32, 115, 108, 97, 109, 115, 32, 98, 101, 104, 105, 110, 100, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_51[] = {
+73, 39, 109, 32, 110, 111, 116, 32, 119, 101, 97, 114, 105, 110, 103, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_52[] = {
+76, 97, 116, 104, 101, 32, 119, 111, 114, 107, 115, 0 };
+const uint8_t msgtxt_53[] = {
+97, 32, 82, 79, 85, 78, 68, 32, 104, 111, 108, 101, 0 };
+const uint8_t msgtxt_54[] = {
+89, 111, 117, 32, 116, 104, 105, 110, 107, 32, 116, 104, 105, 115, 32, 105, 115, 32, 115, 111, 109, 101, 32, 115, 111, 114, 116, 32, 111, 102, 32, 103, 97, 109, 101, 63, 0 };
+const uint8_t msgtxt_55[] = {
+46, 46, 46, 46, 97, 115, 32, 116, 104, 101, 32, 111, 110, 108, 121, 32, 115, 117, 114, 118, 105, 118, 105, 110, 103, 32, 109, 101, 109, 98, 101, 114, 32, 111, 102, 0 };
+const uint8_t msgtxt_56[] = {
+116, 104, 101, 32, 80, 85, 76, 83, 65, 82, 32, 55, 32, 99, 114, 101, 119, 46, 46, 46, 46, 0 };
+const uint8_t msgtxt_57[] = {
+105, 116, 39, 115, 32, 105, 110, 32, 109, 121, 32, 104, 97, 110, 100, 119, 114, 105, 116, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_58[] = {
+90, 45, 122, 45, 122, 45, 122, 45, 122, 45, 122, 45, 122, 0 };
+const uint8_t msgtxt_59[] = {
+65, 114, 116, 105, 102, 105, 99, 105, 97, 108, 32, 100, 97, 121, 108, 105, 103, 104, 116, 32, 104, 97, 115, 32, 98, 101, 103, 117, 110, 33, 0 };
+const uint8_t msgtxt_60[] = {
+73, 32, 99, 111, 117, 108, 100, 32, 103, 101, 116, 32, 105, 110, 32, 116, 104, 101, 114, 101, 33, 0 };
+const uint8_t msgtxt_61[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_62[] = {
+73, 116, 39, 115, 32, 67, 108, 111, 115, 101, 100, 33, 0 };
+const uint8_t msgtxt_63[] = {
+73, 116, 32, 119, 105, 108, 108, 32, 110, 111, 116, 32, 99, 108, 111, 115, 101, 0 };
+const uint8_t msgtxt_64[] = {
+73, 32, 102, 97, 108, 108, 32, 65, 115, 108, 101, 101, 112, 33, 33, 0 };
+const uint8_t msgtxt_65[] = {
+73, 39, 109, 32, 66, 108, 97, 115, 116, 101, 100, 32, 105, 110, 116, 111, 32, 100, 101, 101, 112, 32, 115, 112, 97, 99, 101, 33, 0 };
+const uint8_t msgtxt_66[] = {
+84, 104, 101, 32, 105, 110, 103, 114, 101, 100, 105, 101, 110, 116, 115, 32, 97, 114, 101, 32, 110, 111, 119, 32, 77, 105, 120, 101, 100, 33, 0 };
+const uint8_t msgtxt_67[] = {
+97, 32, 67, 97, 98, 108, 101, 32, 105, 115, 32, 109, 105, 115, 115, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_68[] = {
+73, 32, 83, 116, 97, 114, 118, 101, 32, 116, 111, 32, 100, 101, 97, 116, 104, 33, 0 };
+const uint8_t msgtxt_69[] = {
+73, 116, 32, 119, 105, 108, 108, 32, 116, 117, 114, 110, 33, 0 };
+const uint8_t msgtxt_70[] = {
+85, 115, 101, 32, 97, 32, 115, 104, 97, 112, 101, 0 };
+const uint8_t msgtxt_71[] = {
+105, 46, 101, 46, 32, 32, 34, 71, 69, 84, 32, 83, 81, 85, 65, 82, 69, 34, 0 };
+const uint8_t msgtxt_72[] = {
+73, 32, 119, 111, 117, 108, 100, 32, 103, 101, 116, 32, 105, 110, 100, 105, 103, 101, 115, 116, 105, 111, 110, 33, 0 };
+const uint8_t msgtxt_73[] = {
+83, 116, 105, 108, 108, 32, 104, 117, 110, 103, 114, 121, 44, 32, 105, 116, 32, 112, 114, 111, 99, 101, 101, 100, 115, 32, 116, 111, 32, 101, 97, 116, 32, 77, 69, 32, 33, 33, 0 };
+const uint8_t msgtxt_74[] = {
+84, 104, 101, 110, 32, 102, 101, 108, 108, 32, 97, 115, 108, 101, 101, 112, 33, 0 };
+const uint8_t msgtxt_75[] = {
+0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       167, 
+       9, 0, 
+       1, 2, 3, 86, 
+/* AUTO  100   */
+       175, 
+       9, 0, 0, 0, 32, 244, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       206, 
+       0, 1, 0, 100, 0, 1, 
+       81, 79, 81, 
+/* AUTO  0     */
+       206, 
+       0, 2, 0, 50, 0, 2, 
+       81, 79, 81, 
+/* AUTO  0     */
+       201, 
+       0, 8, 0, 10, 
+       58, 58, 
+/* AUTO  0     */
+       206, 
+       0, 5, 0, 2, 0, 5, 
+       81, 79, 81, 
+/* AUTO  0     */
+       207, 
+       0, 3, 0, 0, 0, 3, 
+       81, 79, 81, 67, 
+/* AUTO  100   */
+       180, 
+       4, 3, 14, 5, 8, 4, 0, 5, 0, 6, 
+       72, 
+/* AUTO  100   */
+       166, 
+       0, 1, 
+       81, 77, 73, 
+/* AUTO  0     */
+       202, 
+       19, 0, 0, 2, 
+       56, 58, 25, 
+/* AUTO  0     */
+       197, 
+       0, 1, 
+       81, 64, 
+/* AUTO  100   */
+       162, 
+       81, 77, 73, 
+/* AUTO  0     */
+       199, 
+       19, 0, 
+       35, 26, 61, 63, 
+/* AUTO  0     */
+       192, 
+       81, 
+/* AUTO  100   */
+       170, 
+       4, 20, 0, 10, 
+       60, 56, 64, 
+/* AUTO  100   */
+       170, 
+       4, 21, 0, 10, 
+       60, 56, 64, 
+/* AUTO  100   */
+       170, 
+       4, 22, 0, 10, 
+       60, 56, 64, 
+/* AUTO  100   */
+       170, 
+       4, 23, 0, 10, 
+       60, 56, 64, 
+/* AUTO  100   */
+       170, 
+       4, 24, 0, 10, 
+       60, 56, 64, 
+/* AUTO  100   */
+       170, 
+       4, 25, 0, 10, 
+       60, 56, 64, 
+/* AUTO  100   */
+       170, 
+       4, 26, 0, 10, 
+       60, 56, 64, 
+/* AUTO  100   */
+       170, 
+       4, 27, 0, 10, 
+       60, 56, 64, 
+/* AUTO  100   */
+       168, 
+       4, 8, 0, 10, 
+       58, 
+/* AUTO  100   */
+       168, 
+       4, 28, 0, 10, 
+       58, 
+/* AUTO  100   */
+       168, 
+       4, 30, 0, 10, 
+       58, 
+/* AUTO  100   */
+       168, 
+       4, 31, 0, 10, 
+       58, 
+/* AUTO  100   */
+       168, 
+       4, 33, 0, 10, 
+       58, 
+/* AUTO  100   */
+       169, 
+       4, 8, 9, 2, 
+       57, 64, 
+/* AUTO  100   */
+       169, 
+       4, 28, 9, 2, 
+       57, 64, 
+/* AUTO  100   */
+       169, 
+       4, 30, 9, 2, 
+       57, 64, 
+/* AUTO  100   */
+       169, 
+       4, 31, 9, 2, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 32, 
+       57, 64, 
+/* AUTO  100   */
+       169, 
+       4, 33, 9, 2, 
+       57, 64, 
+/* AUTO  100   */
+       170, 
+       9, 10, 0, 2, 
+       81, 77, 73, 
+/* AUTO  0     */
+       199, 
+       19, 0, 
+       35, 26, 61, 63, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+/* AUTO  100   */
+       170, 
+       4, 17, 6, 58, 
+       115, 61, 63, 
+/* AUTO  100   */
+       174, 
+       0, 3, 0, 1, 0, 3, 
+       81, 82, 81, 
+/* AUTO  100   */
+       170, 
+       2, 79, 6, 73, 
+       118, 61, 63, 
+/* AUTO  100   */
+       170, 
+       2, 62, 0, 5, 
+       81, 77, 73, 
+/* AUTO  0     */
+       199, 
+       19, 0, 
+       88, 26, 61, 63, 
+/* AUTO  0     */
+       196, 
+       0, 5, 
+       81, 
+/* AUTO  100   */
+       178, 
+       5, 62, 0, 5, 0, 2, 0, 5, 
+       81, 79, 81, 
+/* AUTO  0     */
+/* AUTO  100   */
+       164, 
+       4, 45, 
+       63, 
+/* AUTO  10    */
+       135, 10, 
+       4, 6, 
+       88, 28, 61, 63, 
+};
+const uint8_t actions[] = {
+/* EXAM  ROD   */
+       5, 65, 15, 
+       1, 10, 
+       14, 119, 
+/* EXAM  COUC  */
+       21, 65, 98, 
+       2, 2, 14, 84, 14, 73, 0, 73, 0, 1, 
+       62, 73, 
+/* AUTO  0     */
+       201, 
+       0, 84, 0, 1, 
+       62, 12, 
+/* MOVE  COUC  */
+       21, 115, 98, 
+       2, 2, 14, 10, 14, 9, 0, 10, 0, 1, 
+       62, 12, 
+/* CLOS  DOOR  */
+       14, 54, 8, 
+       2, 5, 0, 5, 0, 6, 
+       72, 9, 73, 
+/* AUTO  0     */
+       206, 
+       0, 7, 0, 3, 0, 4, 
+       62, 58, 21, 
+/* CLOS  DOOR  */
+       4, 54, 8, 
+       2, 23, 
+       113, 
+/* CLOS  DOOR  */
+       13, 54, 8, 
+       2, 80, 0, 79, 0, 80, 
+       72, 9, 
+/* GO    BUNK  */
+       9, 1, 10, 
+       2, 4, 0, 3, 
+       54, 9, 
+/* GO    BUNK  */
+       9, 1, 10, 
+       2, 72, 0, 34, 
+       54, 9, 
+/* GO    BUNK  */
+       9, 1, 10, 
+       2, 30, 0, 14, 
+       54, 9, 
+/* GO    BUNK  */
+       9, 1, 10, 
+       2, 8, 0, 5, 
+       54, 9, 
+/* MOVE  PILL  */
+       21, 115, 12, 
+       2, 7, 14, 20, 14, 21, 0, 20, 0, 3, 
+       62, 12, 
+/* MOVE  PILL  */
+       4, 115, 12, 
+       2, 7, 
+       11, 
+/* EXAM  BUNK  */
+       17, 65, 10, 
+       4, 5, 14, 17, 0, 17, 0, 5, 
+       62, 12, 
+/* EXAM  BUNK  */
+       21, 65, 10, 
+       4, 14, 14, 63, 8, 8, 0, 63, 0, 14, 
+       62, 12, 
+/* EXAM  BUNK  */
+       4, 65, 10, 
+       4, 3, 
+       11, 
+/* EXAM  BUNK  */
+       4, 65, 10, 
+       4, 34, 
+       11, 
+/* EXAM  BLOC  */
+       1, 65, 87, 
+       120, 121, 
+/* GO    VENT  */
+       9, 1, 13, 
+       2, 12, 0, 6, 
+       54, 9, 
+/* TURN  BLOC  */
+       1, 67, 87, 
+       120, 121, 
+/* AUTO  0     */
+/* EXAM  CONT  */
+       17, 65, 17, 
+       2, 14, 5, 28, 0, 28, 0, 8, 
+       62, 73, 
+/* AUTO  0     */
+       201, 
+       0, 29, 0, 8, 
+       62, 12, 
+/* EXAM  CONT  */
+       5, 65, 17, 
+       2, 28, 
+       14, 110, 
+/* GO    CONT  */
+       9, 1, 17, 
+       2, 14, 0, 10, 
+       54, 9, 
+/* FIT   CIRC  */
+       22, 100, 28, 
+       1, 20, 4, 10, 0, 20, 0, 21, 0, 21, 
+       72, 53, 9, 
+/* GET   CIRC  */
+       9, 10, 28, 
+       2, 20, 0, 20, 
+       52, 9, 
+/* GET   CIRC  */
+       18, 10, 28, 
+       2, 21, 0, 20, 0, 21, 0, 20, 
+       72, 52, 9, 
+/* PRES  WHIT  */
+       13, 103, 37, 
+       2, 29, 13, 21, 0, 5, 
+       58, 21, 
+/* PRES  WHIT  */
+       8, 103, 37, 
+       2, 29, 14, 21, 
+       20, 
+/* PRES  BLAC  */
+       4, 103, 36, 
+       2, 28, 
+       20, 
+/* PRES  ORAN  */
+       6, 103, 26, 
+       2, 18, 
+       115, 61, 63, 
+/* PRES  RED   */
+       16, 103, 45, 
+       2, 35, 1, 56, 8, 5, 1, 58, 
+       73, 
+/* AUTO  0     */
+       210, 
+       0, 36, 0, 38, 0, 37, 0, 39, 
+       72, 72, 9, 
+/* PRES  RED   */
+       8, 103, 45, 
+       2, 35, 9, 5, 
+       20, 
+/* PRES  RED   */
+       14, 103, 45, 
+       2, 35, 8, 5, 6, 56, 
+       34, 61, 63, 
+/* PRES  RED   */
+       14, 103, 45, 
+       2, 35, 8, 5, 6, 58, 
+       115, 61, 63, 
+/* PRES  YELL  */
+       10, 103, 51, 
+       2, 44, 8, 6, 
+       23, 33, 63, 
+/* PRES  YELL  */
+       10, 103, 51, 
+       2, 44, 9, 6, 
+       37, 61, 63, 
+/* EXAM  FLOO  */
+       21, 65, 19, 
+       4, 8, 14, 15, 14, 16, 0, 15, 0, 8, 
+       62, 12, 
+/* PULL  RING  */
+       4, 34, 22, 
+       2, 15, 
+       4, 
+/* USE   HOOK  */
+       21, 96, 24, 
+       2, 15, 1, 17, 14, 16, 0, 15, 0, 16, 
+       72, 12, 
+/* TURN  ROD   */
+       14, 67, 15, 
+       1, 10, 0, 9, 0, 10, 
+       72, 21, 64, 
+/* TURN  ROD   */
+       14, 67, 15, 
+       1, 9, 0, 9, 0, 10, 
+       72, 21, 64, 
+/* GO    HATC  */
+       8, 1, 23, 
+       2, 16, 0, 20, 
+       54, 
+/* GO    HATC  */
+       9, 1, 23, 
+       2, 41, 0, 18, 
+       54, 9, 
+/* SEAR  WREC  */
+       17, 22, 81, 
+       2, 71, 14, 72, 0, 72, 0, 33, 
+       62, 12, 
+/* EXAM  CEIL  */
+       21, 65, 78, 
+       4, 34, 14, 76, 14, 86, 0, 76, 0, 34, 
+       62, 12, 
+/* EXAM  CEIL  */
+       21, 65, 78, 
+       4, 14, 14, 31, 14, 33, 0, 31, 0, 14, 
+       62, 12, 
+/* REMO  GRIL  */
+       13, 6, 88, 
+       2, 76, 0, 76, 0, 86, 
+       72, 44, 
+/* JUMP  ANY   */
+       9, 43, 0, 
+       2, 86, 0, 35, 
+       54, 9, 
+/* JUMP  ANY   */
+       9, 43, 0, 
+       2, 33, 0, 15, 
+       54, 9, 
+/* JUMP  ANY   */
+       11, 43, 0, 
+       5, 86, 5, 33, 
+       46, 88, 88, 47, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* PRES  BUTT  */
+       0, 103, 25, 
+       43, 
+/* GO    CRAT  */
+       9, 1, 90, 
+       2, 81, 0, 39, 
+       54, 9, 
+/* MAKE  LATH  */
+       19, 121, 52, 
+       2, 45, 1, 74, 0, 7, 0, 74, 
+       58, 59, 21, 73, 
+/* AUTO  0     */
+       206, 
+       0, 45, 0, 88, 0, 52, 
+       72, 59, 102, 
+/* TURN  SQUA  */
+       23, 67, 85, 
+       2, 88, 1, 82, 8, 7, 0, 82, 0, 75, 
+       72, 9, 21, 73, 
+/* AUTO  0     */
+       196, 
+       0, 75, 
+       53, 
+/* TURN  SQUA  */
+       5, 67, 85, 
+       9, 7, 
+       14, 117, 
+/* EXAM  LATH  */
+       5, 65, 52, 
+       2, 45, 
+       14, 30, 
+/* GO    LATH  */
+       9, 1, 52, 
+       4, 28, 0, 29, 
+       54, 9, 
+/* EXAM  TOOL  */
+       21, 65, 53, 
+       2, 46, 14, 48, 14, 51, 0, 48, 0, 29, 
+       62, 73, 
+/* AUTO  0     */
+       201, 
+       0, 50, 0, 29, 
+       62, 12, 
+/* GET   WATE  */
+       21, 10, 76, 
+       4, 12, 1, 68, 2, 67, 0, 68, 0, 85, 
+       72, 73, 
+/* AUTO  0     */
+       197, 
+       0, 67, 
+       59, 9, 
+/* SMAS  LOCK  */
+       4, 30, 64, 
+       2, 53, 
+       4, 
+/* USE   HAMM  */
+       22, 96, 55, 
+       2, 53, 1, 47, 14, 54, 0, 54, 0, 30, 
+       62, 9, 32, 
+/* USE   HAMM  */
+       5, 96, 55, 
+       5, 53, 
+       13, 84, 
+/* EXAM  LOCK  */
+       21, 65, 64, 
+       2, 54, 14, 55, 14, 56, 0, 55, 0, 30, 
+       62, 12, 
+/* AUTO  0     */
+/* EXAM  PANE  */
+       21, 65, 39, 
+       2, 31, 14, 32, 14, 33, 0, 32, 0, 14, 
+       62, 12, 
+/* MAKE  SCRE  */
+       22, 121, 61, 
+       1, 48, 1, 49, 0, 48, 0, 51, 0, 49, 
+       72, 59, 9, 
+/* REMO  PANE  */
+       23, 6, 39, 
+       2, 31, 1, 51, 0, 33, 0, 31, 0, 32, 
+       72, 59, 9, 12, 
+/* GO    OUT   */
+       8, 1, 46, 
+       2, 39, 0, 17, 
+       54, 
+/* PULL  LEVE  */
+       10, 34, 50, 
+       2, 43, 0, 6, 
+       58, 9, 21, 
+/* GO    SHUT  */
+       9, 1, 47, 
+       2, 42, 0, 19, 
+       54, 9, 
+/* OPEN  DOOR  */
+       13, 7, 8, 
+       2, 22, 0, 22, 0, 23, 
+       72, 9, 
+/* OPEN  DOOR  */
+       4, 7, 8, 
+       2, 3, 
+       16, 
+/* GO    LARD  */
+       9, 1, 33, 
+       2, 25, 0, 40, 
+       54, 9, 
+/* GO    DOOR  */
+       22, 1, 8, 
+       2, 23, 13, 3, 0, 70, 0, 3, 0, 12, 
+       72, 54, 9, 
+/* GO    DOOR  */
+       13, 1, 8, 
+       2, 23, 14, 3, 0, 12, 
+       54, 9, 
+/* GO    DOOR  */
+       4, 1, 8, 
+       2, 3, 
+       112, 
+/* GO    DOOR  */
+       9, 1, 8, 
+       2, 5, 0, 4, 
+       54, 9, 
+/* GO    DOOR  */
+       9, 1, 8, 
+       2, 36, 0, 15, 
+       54, 9, 
+/* GO    DOOR  */
+       9, 1, 8, 
+       2, 39, 0, 17, 
+       54, 9, 
+/* GO    DOOR  */
+       9, 1, 8, 
+       2, 70, 0, 12, 
+       54, 9, 
+/* GO    DOOR  */
+       9, 1, 8, 
+       2, 80, 0, 36, 
+       54, 9, 
+/* EMPT  BOTT  */
+       22, 45, 75, 
+       1, 66, 1, 68, 0, 68, 0, 85, 0, 66, 
+       72, 59, 9, 
+/* EMPT  BOTT  */
+       22, 45, 75, 
+       1, 66, 6, 68, 0, 66, 0, 67, 0, 67, 
+       72, 53, 9, 
+/* EMPT  TIN   */
+       18, 45, 77, 
+       1, 85, 0, 85, 0, 67, 0, 67, 
+       72, 53, 73, 
+/* AUTO  0     */
+       201, 
+       0, 67, 0, 68, 
+       75, 9, 
+/* MIX   ANY   */
+       16, 143, 0, 
+       12, 63, 3, 85, 3, 65, 3, 69, 
+       73, 
+/* AUTO  0     */
+       210, 
+       0, 85, 0, 64, 0, 65, 0, 69, 
+       72, 59, 59, 
+/* AUTO  0     */
+       198, 
+       0, 8, 
+       58, 9, 116, 
+/* MIX   ANY   */
+       16, 143, 0, 
+       3, 63, 3, 85, 3, 65, 3, 69, 
+       73, 
+/* AUTO  0     */
+       210, 
+       0, 85, 0, 64, 0, 65, 0, 69, 
+       72, 59, 59, 
+/* AUTO  0     */
+       203, 
+       0, 8, 0, 63, 
+       60, 59, 9, 116, 
+/* MAKE  OVEN  */
+       22, 121, 30, 
+       2, 24, 1, 75, 0, 24, 0, 87, 0, 75, 
+       72, 59, 9, 
+/* BAKE  CAKE  */
+       22, 144, 34, 
+       2, 87, 1, 64, 8, 8, 0, 64, 0, 26, 
+       72, 9, 39, 
+/* BAKE  CAKE  */
+       22, 144, 34, 
+       2, 87, 1, 64, 9, 8, 0, 64, 0, 27, 
+       72, 9, 39, 
+/* GO    CAGE  */
+       10, 1, 89, 
+       2, 78, 0, 37, 
+       54, 9, 50, 
+/* OPEN  DOOR  */
+       18, 7, 8, 
+       2, 79, 1, 73, 0, 79, 0, 80, 
+       72, 9, 49, 
+/* OPEN  DOOR  */
+       13, 7, 8, 
+       2, 6, 0, 5, 0, 6, 
+       72, 9, 
+/* READ  SIGN  */
+       5, 60, 92, 
+       2, 83, 
+       6, 24, 
+/* READ  NOTE  */
+       6, 60, 93, 
+       1, 84, 
+       6, 105, 106, 
+/* EXAM  NOTE  */
+       5, 65, 93, 
+       3, 84, 
+       14, 107, 
+/* EXAM  CRAT  */
+       4, 65, 90, 
+       2, 81, 
+       48, 
+/* EXAM  WATC  */
+       11, 65, 35, 
+       1, 0, 0, 3, 
+       81, 7, 78, 73, 
+/* AUTO  0     */
+       197, 
+       0, 3, 
+       8, 81, 
+/* WEAR  BOOT  */
+       4, 5, 67, 
+       1, 58, 
+       10, 
+/* WEAR  BOOT  */
+       13, 5, 67, 
+       1, 57, 0, 57, 0, 58, 
+       72, 9, 
+/* WEAR  SUIT  */
+       4, 5, 65, 
+       1, 56, 
+       10, 
+/* WEAR  SUIT  */
+       13, 5, 65, 
+       1, 55, 0, 55, 0, 56, 
+       72, 9, 
+/* REMO  SUIT  */
+       5, 6, 65, 
+       1, 56, 
+       14, 36, 
+/* REMO  BOOT  */
+       13, 6, 67, 
+       1, 58, 0, 58, 0, 57, 
+       72, 9, 
+/* REMO  BOOT  */
+       4, 6, 67, 
+       1, 57, 
+       51, 
+/* EXAM  OVEN  */
+       5, 65, 30, 
+       2, 24, 
+       14, 103, 
+/* EAT   TABL  */
+       7, 49, 71, 
+       1, 63, 
+       114, 26, 61, 63, 
+/* GIVE  CAKE  */
+       23, 40, 34, 
+       2, 62, 1, 27, 0, 62, 0, 61, 0, 27, 
+       72, 59, 41, 124, 
+/* GIVE  CAKE  */
+       15, 40, 34, 
+       1, 26, 2, 62, 0, 26, 
+       41, 123, 61, 63, 
+/* FEED  CREA  */
+       23, 16, 70, 
+       1, 27, 2, 62, 0, 62, 0, 61, 0, 27, 
+       72, 59, 41, 124, 
+/* FEED  CREA  */
+       11, 16, 70, 
+       1, 26, 2, 62, 
+       41, 123, 61, 63, 
+/* EAT   CAKE  */
+       7, 49, 34, 
+       1, 26, 
+       22, 88, 35, 73, 
+/* AUTO  0     */
+       195, 
+       88, 26, 61, 63, 
+/* EAT   CAKE  */
+       7, 49, 34, 
+       1, 27, 
+       114, 26, 61, 63, 
+/* EXAM  OVEN  */
+       4, 65, 30, 
+       2, 87, 
+       40, 
+/* GET   WATE  */
+       12, 10, 76, 
+       4, 12, 2, 67, 1, 68, 
+       73, 
+/* AUTO  0     */
+       206, 
+       0, 68, 0, 85, 0, 67, 
+       72, 59, 9, 
+/* SLEE  ANY   */
+       19, 134, 0, 
+       4, 3, 8, 15, 0, 1, 0, 100, 
+       81, 79, 9, 73, 
+/* AUTO  0     */
+       198, 
+       0, 1, 
+       81, 108, 88, 
+/* AUTO  0     */
+       199, 
+       0, 2, 
+       60, 109, 57, 64, 
+/* SLEE  ANY   */
+       3, 134, 0, 
+       114, 26, 61, 63, 
+/* SAVE  ANY   */
+       0, 4, 0, 
+       71, 
+/* QUIT  ANY   */
+       0, 3, 0, 
+       63, 
+/* FUCK  ANY   */
+       0, 91, 0, 
+       18, 
+/* SCOR  ANY   */
+       0, 9, 0, 
+       104, 
+/* INVE  ANY   */
+       0, 2, 0, 
+       66, 
+/* HELP  ANY   */
+       0, 132, 0, 
+       5, 
+/* MOVE  ANY   */
+       0, 115, 0, 
+       4, 
+/* CLOS  ANY   */
+       1, 54, 0, 
+       14, 36, 
+/* EXAM  ANY   */
+       0, 65, 0, 
+       11, 
+/* GO    ANY   */
+       0, 1, 0, 
+       15, 
+/* TIE   ANY   */
+       0, 37, 0, 
+       4, 
+/* SEAR  ANY   */
+       0, 22, 0, 
+       11, 
+/* TURN  ANY   */
+       1, 67, 0, 
+       14, 36, 
+/* SMAS  ANY   */
+       1, 30, 0, 
+       14, 36, 
+/* PULL  ANY   */
+       0, 34, 0, 
+       4, 
+/* USE   ANY   */
+       1, 96, 0, 
+       13, 85, 
+/* SAY   ANY   */
+       1, 87, 0, 
+       9, 85, 
+/* WAIT  ANY   */
+       3, 8, 0, 
+       9, 17, 88, 88, 
+/* GET   BLOC  */
+       1, 10, 87, 
+       120, 121, 
+/* DROP  SUIT  */
+       5, 18, 65, 
+       1, 56, 
+       16, 10, 
+/* DROP  BOOT  */
+       4, 18, 67, 
+       1, 58, 
+       16, 
+/* EAT   ANY   */
+       1, 49, 0, 
+       16, 122, 
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+/* AUTO  0     */
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* INVE */
+       73, 78, 86, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* REMO */
+       82, 69, 77, 79,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *OBTA */
+       207, 66, 84, 65,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* DIG */
+       68, 73, 71, 32,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* FEED */
+       70, 69, 69, 68,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *DEPO */
+       196, 69, 80, 79,
+       /* *DUMP */
+       196, 85, 77, 80,
+       /* SEAR */
+       83, 69, 65, 82,
+       /* *FRIS */
+       198, 82, 73, 83,
+       /* THRO */
+       84, 72, 82, 79,
+       /* *SLIN */
+       211, 76, 73, 78,
+       /* *CHUC */
+       195, 72, 85, 67,
+       /* *TOSS */
+       212, 79, 83, 83,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* SMAS */
+       83, 77, 65, 83,
+       /* *DEST */
+       196, 69, 83, 84,
+       /* *BREA */
+       194, 82, 69, 65,
+       /* *HIT */
+       200, 73, 84, 32,
+       /* PULL */
+       80, 85, 76, 76,
+       /* *TUG */
+       212, 85, 71, 32,
+       /* *DRAG */
+       196, 82, 65, 71,
+       /* TIE */
+       84, 73, 69, 32,
+       /* *FAST */
+       198, 65, 83, 84,
+       /* *WRAP */
+       215, 82, 65, 80,
+       /* GIVE */
+       71, 73, 86, 69,
+       /* *OFFE */
+       207, 70, 70, 69,
+       /* *PAY */
+       208, 65, 89, 32,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* *LEAP */
+       204, 69, 65, 80,
+       /* EMPT */
+       69, 77, 80, 84,
+       /* *SPRI */
+       211, 80, 82, 73,
+       /* *POUR */
+       208, 79, 85, 82,
+       /* FILL */
+       70, 73, 76, 76,
+       /* EAT */
+       69, 65, 84, 32,
+       /* *TAST */
+       212, 65, 83, 84,
+       /* *DEVO */
+       196, 69, 86, 79,
+       /* UNLO */
+       85, 78, 76, 79,
+       /* LOCK */
+       76, 79, 67, 75,
+       /* CLOS */
+       67, 76, 79, 83,
+       /* HOLD */
+       72, 79, 76, 68,
+       /* *GRAS */
+       199, 82, 65, 83,
+       /* WAVE */
+       87, 65, 86, 69,
+       /* *GEST */
+       199, 69, 83, 84,
+       /* PLAY */
+       80, 76, 65, 89,
+       /* READ */
+       82, 69, 65, 68,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* *PADD */
+       208, 65, 68, 68,
+       /* SMOK */
+       83, 77, 79, 75,
+       /* *PUFF */
+       208, 85, 70, 70,
+       /* EXAM */
+       69, 88, 65, 77,
+       /* *INSP */
+       201, 78, 83, 80,
+       /* TURN */
+       84, 85, 82, 78,
+       /* *ROTA */
+       210, 79, 84, 65,
+       /* *TWIS */
+       212, 87, 73, 83,
+       /* RUB */
+       82, 85, 66, 32,
+       /* *POLI */
+       208, 79, 76, 73,
+       /* *SHIN */
+       211, 72, 73, 78,
+       /* CUT */
+       67, 85, 84, 32,
+       /* *CHOP */
+       195, 72, 79, 80,
+       /* *SLIC */
+       211, 76, 73, 67,
+       /* *HACK */
+       200, 65, 67, 75,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* *IGNI */
+       201, 71, 78, 73,
+       /* *BURN */
+       194, 85, 82, 78,
+       /* *ON */
+       207, 78, 32, 32,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* *EXTI */
+       197, 88, 84, 73,
+       /* *OFF */
+       207, 70, 70, 32,
+       /* FIRE */
+       70, 73, 82, 69,
+       /* *SHOO */
+       211, 72, 79, 79,
+       /* *BLAS */
+       194, 76, 65, 83,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *SHOU */
+       211, 72, 79, 85,
+       /* *TALK */
+       212, 65, 76, 75,
+       /* ASK */
+       65, 83, 75, 32,
+       /* FUCK */
+       70, 85, 67, 75,
+       /* *PISS */
+       208, 73, 83, 83,
+       /* FORC */
+       70, 79, 82, 67,
+       /* *LEVE */
+       204, 69, 86, 69,
+       /* *PRIS */
+       208, 82, 73, 83,
+       /* USE */
+       85, 83, 69, 32,
+       /* *APPL */
+       193, 80, 80, 76,
+       /* *EXER */
+       197, 88, 69, 82,
+       /* *WITH */
+       215, 73, 84, 72,
+       /* FIT */
+       70, 73, 84, 32,
+       /* *INSE */
+       201, 78, 83, 69,
+       /* *PLUG */
+       208, 76, 85, 71,
+       /* PRES */
+       80, 82, 69, 83,
+       /* *PUSH */
+       208, 85, 83, 72,
+       /* TOUC */
+       84, 79, 85, 67,
+       /* *FEEL */
+       198, 69, 69, 76,
+       /* KICK */
+       75, 73, 67, 75,
+       /* *STAM */
+       211, 84, 65, 77,
+       /* SMEL */
+       83, 77, 69, 76,
+       /* *SNIF */
+       211, 78, 73, 70,
+       /* LIST */
+       76, 73, 83, 84,
+       /* *HEAR */
+       200, 69, 65, 82,
+       /* HIDE */
+       72, 73, 68, 69,
+       /* *CONC */
+       195, 79, 78, 67,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* *SHIF */
+       211, 72, 73, 70,
+       /* FREE */
+       70, 82, 69, 69,
+       /* *RELE */
+       210, 69, 76, 69,
+       /* *UNTI */
+       213, 78, 84, 73,
+       /* *UNDO */
+       213, 78, 68, 79,
+       /* MAKE */
+       77, 65, 75, 69,
+       /* *BUIL */
+       194, 85, 73, 76,
+       /* *FIX */
+       198, 73, 88, 32,
+       /* *REPA */
+       210, 69, 80, 65,
+       /* STAB */
+       83, 84, 65, 66,
+       /* *POKE */
+       208, 79, 75, 69,
+       /* *PROD */
+       208, 82, 79, 68,
+       /* WRIT */
+       87, 82, 73, 84,
+       /* *JOT */
+       202, 79, 84, 32,
+       /* *NOTE */
+       206, 79, 84, 69,
+       /* PRAY */
+       80, 82, 65, 89,
+       /* HELP */
+       72, 69, 76, 80,
+       /* *HINT */
+       200, 73, 78, 84,
+       /* SLEE */
+       83, 76, 69, 69,
+       /* WAKE */
+       87, 65, 75, 69,
+       /* *AWAK */
+       193, 87, 65, 75,
+       /* *ROUS */
+       210, 79, 85, 83,
+       /* TRIM */
+       84, 82, 73, 77,
+       /* *SHAV */
+       211, 72, 65, 86,
+       /* *SCRA */
+       211, 67, 82, 65,
+       /* MELT */
+       77, 69, 76, 84,
+       /* THIN */
+       84, 72, 73, 78,
+       /* MIX */
+       77, 73, 88, 32,
+       /* BAKE */
+       66, 65, 75, 69,
+       /* CHAR */
+       67, 72, 65, 82,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* HANK */
+       72, 65, 78, 75,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* *STEE */
+       211, 84, 69, 69,
+       /* BUNK */
+       66, 85, 78, 75,
+       /* *BED */
+       194, 69, 68, 32,
+       /* PILL */
+       80, 73, 76, 76,
+       /* VENT */
+       86, 69, 78, 84,
+       /* *AIR */
+       193, 73, 82, 32,
+       /* ROD */
+       82, 79, 68, 32,
+       /* DUST */
+       68, 85, 83, 84,
+       /* CONT */
+       67, 79, 78, 84,
+       /* *CONS */
+       195, 79, 78, 83,
+       /* FLOO */
+       70, 76, 79, 79,
+       /* *GROU */
+       199, 82, 79, 85,
+       /* *DECK */
+       196, 69, 67, 75,
+       /* RING */
+       82, 73, 78, 71,
+       /* HATC */
+       72, 65, 84, 67,
+       /* HOOK */
+       72, 79, 79, 75,
+       /* BUTT */
+       66, 85, 84, 84,
+       /* ORAN */
+       79, 82, 65, 78,
+       /* CONN */
+       67, 79, 78, 78,
+       /* CIRC */
+       67, 73, 82, 67,
+       /* *BOAR */
+       194, 79, 65, 82,
+       /* OVEN */
+       79, 86, 69, 78,
+       /* *STOV */
+       211, 84, 79, 86,
+       /* *COOK */
+       195, 79, 79, 75,
+       /* LARD */
+       76, 65, 82, 68,
+       /* CAKE */
+       67, 65, 75, 69,
+       /* WATC */
+       87, 65, 84, 67,
+       /* BLAC */
+       66, 76, 65, 67,
+       /* WHIT */
+       87, 72, 73, 84,
+       /* AWAY */
+       65, 87, 65, 89,
+       /* PANE */
+       80, 65, 78, 69,
+       /* *META */
+       205, 69, 84, 65,
+       /* CLIP */
+       67, 76, 73, 80,
+       /* *RETA */
+       210, 69, 84, 65,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* *PIPE */
+       208, 73, 80, 69,
+       /* RED */
+       82, 69, 68, 32,
+       /* OUT */
+       79, 85, 84, 32,
+       /* SHUT */
+       83, 72, 85, 84,
+       /* *CRAF */
+       195, 82, 65, 70,
+       /* PULS */
+       80, 85, 76, 83,
+       /* LEVE */
+       76, 69, 86, 69,
+       /* YELL */
+       89, 69, 76, 76,
+       /* LATH */
+       76, 65, 84, 72,
+       /* TOOL */
+       84, 79, 79, 76,
+       /* *COMP */
+       195, 79, 77, 80,
+       /* HAMM */
+       72, 65, 77, 77,
+       /* WOOD */
+       87, 79, 79, 68,
+       /* *HAND */
+       200, 65, 78, 68,
+       /* BLAD */
+       66, 76, 65, 68,
+       /* BAR */
+       66, 65, 82, 32,
+       /* *ROUG */
+       210, 79, 85, 71,
+       /* SCRE */
+       83, 67, 82, 69,
+       /* FILE */
+       70, 73, 76, 69,
+       /* *TRIA */
+       212, 82, 73, 65,
+       /* LOCK */
+       76, 79, 67, 75,
+       /* SUIT */
+       83, 85, 73, 84,
+       /* *SPAC */
+       211, 80, 65, 67,
+       /* BOOT */
+       66, 79, 79, 84,
+       /* *MAGN */
+       205, 65, 71, 78,
+       /* GREE */
+       71, 82, 69, 69,
+       /* CREA */
+       67, 82, 69, 65,
+       /* TABL */
+       84, 65, 66, 76,
+       /* MIX */
+       77, 73, 88, 32,
+       /* FLOU */
+       70, 76, 79, 85,
+       /* RAIS */
+       82, 65, 73, 83,
+       /* BOTT */
+       66, 79, 84, 84,
+       /* WATE */
+       87, 65, 84, 69,
+       /* TIN */
+       84, 73, 78, 32,
+       /* CEIL */
+       67, 69, 73, 76,
+       /* *ROOF */
+       210, 79, 79, 70,
+       /* WALL */
+       87, 65, 76, 76,
+       /* WREC */
+       87, 82, 69, 67,
+       /* KEY */
+       75, 69, 89, 32,
+       /* CABL */
+       67, 65, 66, 76,
+       /* *WIRE */
+       215, 73, 82, 69,
+       /* SQUA */
+       83, 81, 85, 65,
+       /* ROUN */
+       82, 79, 85, 78,
+       /* BLOC */
+       66, 76, 79, 67,
+       /* GRIL */
+       71, 82, 73, 76,
+       /* CAGE */
+       67, 65, 71, 69,
+       /* CRAT */
+       67, 82, 65, 84,
+       /* *BOX */
+       194, 79, 88, 32,
+       /* SIGN */
+       83, 73, 71, 78,
+       /* NOTE */
+       78, 79, 84, 69,
+       /* GAME */
+       71, 65, 77, 69,
+       /* YOU */
+       89, 79, 85, 32,
+       /* OFF */
+       79, 70, 70, 32,
+       /* THAT */
+       84, 72, 65, 84,
+       /* COUC */
+       67, 79, 85, 67,
+       /* FING */
+       70, 73, 78, 71,
+       /* NOSE */
+       78, 79, 83, 69,
+       /* SOCK */
+       83, 79, 67, 75,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t automap[] = {
+       /* WATC */
+       87, 65, 84, 67,
+       0,
+       /* ROD */
+       82, 79, 68, 32,
+       9,
+       /* ROD */
+       82, 79, 68, 32,
+       10,
+       /* HOOK */
+       72, 79, 79, 75,
+       17,
+       /* CIRC */
+       67, 73, 82, 67,
+       20,
+       /* LARD */
+       76, 65, 82, 68,
+       25,
+       /* CAKE */
+       67, 65, 75, 69,
+       26,
+       /* CAKE */
+       67, 65, 75, 69,
+       27,
+       /* HAMM */
+       72, 65, 77, 77,
+       47,
+       /* BLAD */
+       66, 76, 65, 68,
+       48,
+       /* WOOD */
+       87, 79, 79, 68,
+       49,
+       /* BAR */
+       66, 65, 82, 32,
+       50,
+       /* SCRE */
+       83, 67, 82, 69,
+       51,
+       /* SUIT */
+       83, 85, 73, 84,
+       55,
+       /* BOOT */
+       66, 79, 79, 84,
+       57,
+       /* TABL */
+       84, 65, 66, 76,
+       63,
+       /* MIX */
+       77, 73, 88, 32,
+       64,
+       /* FLOU */
+       70, 76, 79, 85,
+       65,
+       /* BOTT */
+       66, 79, 84, 84,
+       66,
+       /* TIN */
+       84, 73, 78, 32,
+       68,
+       /* RAIS */
+       82, 65, 73, 83,
+       69,
+       /* KEY */
+       75, 69, 89, 32,
+       73,
+       /* CABL */
+       67, 65, 66, 76,
+       74,
+       /* ROUN */
+       82, 79, 85, 78,
+       75,
+       /* SQUA */
+       83, 81, 85, 65,
+       82,
+       /* NOTE */
+       78, 79, 84, 69,
+       84,
+       /* TIN */
+       84, 73, 78, 32,
+       85,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst06.c b/Applications/games/myst06.c
new file mode 100644 (file)
index 0000000..ac02f92
--- /dev/null
@@ -0,0 +1,2910 @@
+#define NUM_OBJ 65
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 150;
+const uint8_t lightfill = 150;
+const uint8_t startcarried = 3;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 36;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+67, 111, 112, 121, 114, 105, 103, 104, 116, 32, 40, 99, 41, 32, 49, 57, 56, 50, 32, 66, 46, 72, 111, 119, 97, 114, 116, 104, 0 };
+const uint8_t loctxt_1[] = {
+102, 105, 101, 108, 100, 0 };
+const uint8_t loctxt_2[] = {
+102, 105, 101, 108, 100, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 116, 104, 101, 32, 114, 111, 97, 100, 115, 105, 100, 101, 0 };
+const uint8_t loctxt_4[] = {
+76, 97, 121, 45, 98, 121, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 39, 109, 32, 105, 110, 115, 105, 100, 101, 32, 109, 121, 32, 99, 97, 114, 0 };
+const uint8_t loctxt_6[] = {
+115, 109, 97, 108, 108, 32, 101, 110, 99, 108, 111, 115, 117, 114, 101, 0 };
+const uint8_t loctxt_7[] = {
+84, 101, 110, 116, 32, 101, 110, 116, 114, 97, 110, 99, 101, 0 };
+const uint8_t loctxt_8[] = {
+67, 105, 114, 99, 117, 115, 32, 114, 105, 110, 103, 0 };
+const uint8_t loctxt_9[] = {
+83, 116, 111, 114, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_10[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 116, 114, 97, 112, 101, 122, 101, 32, 115, 116, 97, 110, 100, 0 };
+const uint8_t loctxt_11[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 84, 114, 97, 112, 101, 122, 101, 0 };
+const uint8_t loctxt_12[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 109, 97, 105, 110, 116, 101, 110, 97, 110, 99, 101, 32, 119, 97, 103, 111, 110, 0 };
+const uint8_t loctxt_13[] = {
+67, 105, 114, 99, 117, 115, 32, 114, 105, 110, 103, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 84, 105, 103, 104, 116, 114, 111, 112, 101, 32, 115, 116, 97, 110, 100, 0 };
+const uint8_t loctxt_15[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 84, 105, 103, 104, 116, 114, 111, 112, 101, 0 };
+const uint8_t loctxt_16[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 84, 105, 103, 104, 116, 114, 111, 112, 101, 32, 115, 116, 97, 110, 100, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 114, 101, 97, 114, 32, 111, 102, 32, 109, 121, 32, 67, 97, 114, 0 };
+const uint8_t loctxt_18[] = {
+77, 97, 105, 110, 116, 101, 110, 97, 110, 99, 101, 32, 87, 97, 103, 111, 110, 0 };
+const uint8_t loctxt_19[] = {
+115, 109, 97, 108, 108, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_20[] = {
+76, 97, 114, 103, 101, 32, 84, 97, 110, 107, 0 };
+const uint8_t loctxt_21[] = {
+77, 101, 115, 115, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_22[] = {
+70, 105, 101, 108, 100, 0 };
+const uint8_t loctxt_23[] = {
+67, 105, 114, 99, 117, 115, 32, 114, 105, 110, 103, 0 };
+const uint8_t loctxt_24[] = {
+67, 105, 114, 99, 117, 115, 32, 82, 105, 110, 103, 0 };
+const uint8_t loctxt_25[] = {
+108, 97, 114, 103, 101, 32, 67, 97, 110, 110, 111, 110, 0 };
+const uint8_t loctxt_26[] = {
+67, 105, 114, 99, 117, 115, 32, 114, 105, 110, 103, 0 };
+const uint8_t loctxt_27[] = {
+84, 105, 103, 101, 114, 39, 115, 32, 99, 97, 103, 101, 0 };
+const uint8_t loctxt_28[] = {
+103, 108, 111, 111, 109, 121, 32, 112, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t loctxt_29[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 101, 113, 117, 105, 112, 109, 101, 110, 116, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_30[] = {
+42, 73, 39, 109, 32, 98, 101, 104, 105, 110, 100, 32, 97, 32, 80, 97, 110, 101, 108, 0 };
+const uint8_t loctxt_31[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 97, 108, 99, 111, 118, 101, 0 };
+const uint8_t loctxt_32[] = {
+67, 108, 111, 115, 101, 116, 0 };
+const uint8_t loctxt_33[] = {
+83, 116, 111, 114, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_34[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 104, 105, 103, 104, 32, 80, 108, 97, 116, 102, 111, 114, 109, 0 };
+const uint8_t loctxt_35[] = {
+115, 97, 102, 101, 116, 121, 32, 78, 101, 116, 0 };
+const uint8_t loctxt_36[] = {
+42, 83, 101, 110, 100, 32, 105, 110, 32, 116, 104, 101, 32, 67, 108, 111, 119, 110, 115, 33, 32, 32, 73, 39, 109, 32, 68, 69, 65, 68, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 2, 6, 12, 0, 0 } }, 
+               { loctxt_2,  { 1, 0, 0, 0, 0, 0 } }, 
+               { loctxt_3,  { 0, 4, 0, 0, 0, 0 } }, 
+               { loctxt_4,  { 3, 17, 0, 0, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 22, 1, 0, 0 } }, 
+               { loctxt_7,  { 8, 0, 19, 9, 0, 0 } }, 
+               { loctxt_8,  { 23, 7, 13, 21, 0, 0 } }, 
+               { loctxt_9,  { 0, 0, 7, 33, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 0, 0, 0, 8 } }, 
+               { loctxt_11,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 1, 0, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 26, 8, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 0, 0, 13 } }, 
+               { loctxt_15,  { 16, 14, 36, 36, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 4, 0, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 12, 0, 0, 0 } }, 
+               { loctxt_19,  { 0, 0, 20, 7, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 19, 0, 0 } }, 
+               { loctxt_21,  { 0, 0, 8, 0, 0, 0 } }, 
+               { loctxt_22,  { 0, 0, 0, 6, 0, 0 } }, 
+               { loctxt_23,  { 0, 8, 0, 24, 0, 0 } }, 
+               { loctxt_24,  { 0, 0, 23, 0, 0, 0 } }, 
+               { loctxt_25,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_26,  { 0, 0, 0, 13, 0, 0 } }, 
+               { loctxt_27,  { 0, 0, 0, 26, 0, 0 } }, 
+               { loctxt_28,  { 0, 29, 0, 0, 27, 0 } }, 
+               { loctxt_29,  { 28, 0, 0, 0, 0, 0 } }, 
+               { loctxt_30,  { 29, 0, 0, 31, 0, 0 } }, 
+               { loctxt_31,  { 0, 0, 30, 0, 0, 0 } }, 
+               { loctxt_32,  { 0, 33, 0, 0, 0, 0 } }, 
+               { loctxt_33,  { 0, 0, 9, 0, 0, 0 } }, 
+               { loctxt_34,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_35,  { 0, 0, 0, 0, 0, 26 } }, 
+               { loctxt_36,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       4,
+       0,
+       0,
+       0,
+       6,
+       12,
+       0,
+       18,
+       0,
+       0,
+       0,
+       22,
+       0,
+       0,
+       9,
+       0,
+       0,
+       0,
+       33,
+       0,
+       32,
+       21,
+       0,
+       8,
+       0,
+       0,
+       8,
+       13,
+       26,
+       19,
+       20,
+       0,
+       0,
+       27,
+       0,
+       0,
+       0,
+       0,
+       30,
+       0,
+       31,
+       14,
+       0,
+       16,
+       0,
+       10,
+       24,
+       25,
+       0,
+       23,
+       0,
+       255,
+       0,
+       16,
+       0,
+       0,
+       1,
+       2,
+       255,
+       255,
+       3,
+       34,
+       0,
+       33,
+       29,
+       17,
+};
+
+
+const uint8_t objtxt_0[] = {
+77, 121, 32, 67, 97, 114, 0 };
+const uint8_t objtxt_1[] = {
+70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 0 };
+const uint8_t objtxt_2[] = {
+68, 101, 97, 100, 32, 70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 0 };
+const uint8_t objtxt_3[] = {
+83, 112, 97, 110, 110, 101, 114, 0 };
+const uint8_t objtxt_4[] = {
+71, 101, 110, 101, 114, 97, 116, 111, 114, 0 };
+const uint8_t objtxt_5[] = {
+68, 111, 111, 114, 0 };
+const uint8_t objtxt_6[] = {
+79, 112, 101, 110, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_7[] = {
+76, 111, 99, 107, 101, 114, 0 };
+const uint8_t objtxt_8[] = {
+66, 114, 111, 107, 101, 110, 32, 76, 111, 99, 107, 101, 114, 0 };
+const uint8_t objtxt_9[] = {
+76, 73, 84, 32, 70, 108, 97, 115, 104, 108, 105, 103, 104, 116, 0 };
+const uint8_t objtxt_10[] = {
+72, 97, 99, 107, 115, 97, 119, 0 };
+const uint8_t objtxt_11[] = {
+83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_12[] = {
+83, 116, 97, 114, 116, 105, 110, 103, 32, 72, 97, 110, 100, 108, 101, 0 };
+const uint8_t objtxt_13[] = {
+72, 101, 97, 118, 121, 32, 73, 114, 111, 110, 32, 66, 97, 114, 115, 0 };
+const uint8_t objtxt_14[] = {
+67, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_15[] = {
+79, 112, 101, 110, 32, 67, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_16[] = {
+84, 104, 105, 110, 32, 83, 108, 105, 112, 112, 101, 114, 115, 0 };
+const uint8_t objtxt_17[] = {
+83, 108, 105, 112, 112, 101, 114, 115, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_18[] = {
+67, 108, 111, 119, 110, 39, 115, 32, 67, 111, 115, 116, 117, 109, 101, 0 };
+const uint8_t objtxt_19[] = {
+67, 108, 111, 119, 110, 39, 115, 32, 67, 111, 115, 116, 117, 109, 101, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_20[] = {
+84, 114, 97, 105, 110, 101, 114, 39, 115, 32, 87, 104, 105, 112, 0 };
+const uint8_t objtxt_21[] = {
+70, 114, 101, 101, 122, 101, 114, 0 };
+const uint8_t objtxt_22[] = {
+70, 105, 115, 104, 0 };
+const uint8_t objtxt_23[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 82, 111, 112, 101, 0 };
+const uint8_t objtxt_24[] = {
+83, 97, 102, 101, 116, 121, 32, 78, 101, 116, 0 };
+const uint8_t objtxt_25[] = {
+83, 97, 102, 101, 116, 121, 32, 78, 101, 116, 32, 40, 101, 114, 101, 99, 116, 101, 100, 41, 0 };
+const uint8_t objtxt_26[] = {
+76, 97, 100, 100, 101, 114, 0 };
+const uint8_t objtxt_27[] = {
+76, 97, 100, 100, 101, 114, 0 };
+const uint8_t objtxt_28[] = {
+67, 97, 103, 101, 0 };
+const uint8_t objtxt_29[] = {
+76, 97, 114, 103, 101, 32, 84, 97, 110, 107, 0 };
+const uint8_t objtxt_30[] = {
+87, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_31[] = {
+83, 101, 97, 45, 76, 105, 111, 110, 0 };
+const uint8_t objtxt_32[] = {
+83, 110, 111, 114, 107, 101, 108, 0 };
+const uint8_t objtxt_33[] = {
+83, 108, 101, 101, 112, 105, 110, 103, 32, 84, 105, 103, 101, 114, 0 };
+const uint8_t objtxt_34[] = {
+65, 110, 103, 114, 121, 32, 84, 105, 103, 101, 114, 0 };
+const uint8_t objtxt_35[] = {
+84, 114, 97, 112, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_36[] = {
+66, 117, 116, 116, 111, 110, 0 };
+const uint8_t objtxt_37[] = {
+79, 112, 101, 110, 32, 72, 97, 116, 99, 104, 0 };
+const uint8_t objtxt_38[] = {
+84, 119, 111, 32, 84, 101, 114, 109, 105, 110, 97, 108, 115, 0 };
+const uint8_t objtxt_39[] = {
+83, 104, 111, 114, 116, 101, 100, 32, 84, 101, 114, 109, 105, 110, 97, 108, 115, 0 };
+const uint8_t objtxt_40[] = {
+66, 108, 117, 101, 112, 114, 105, 110, 116, 0 };
+const uint8_t objtxt_41[] = {
+83, 116, 101, 101, 108, 32, 84, 105, 103, 104, 116, 114, 111, 112, 101, 0 };
+const uint8_t objtxt_42[] = {
+83, 116, 101, 101, 108, 32, 67, 97, 98, 108, 101, 0 };
+const uint8_t objtxt_43[] = {
+77, 101, 116, 97, 108, 32, 66, 97, 114, 0 };
+const uint8_t objtxt_44[] = {
+72, 111, 108, 101, 32, 105, 110, 32, 67, 97, 110, 118, 97, 115, 0 };
+const uint8_t objtxt_45[] = {
+84, 114, 97, 112, 101, 122, 101, 0 };
+const uint8_t objtxt_46[] = {
+72, 117, 103, 101, 32, 67, 97, 110, 110, 111, 110, 0 };
+const uint8_t objtxt_47[] = {
+83, 109, 97, 108, 108, 32, 76, 101, 118, 101, 114, 0 };
+const uint8_t objtxt_48[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_49[] = {
+67, 108, 111, 119, 110, 0 };
+const uint8_t objtxt_50[] = {
+78, 111, 116, 101, 0 };
+const uint8_t objtxt_51[] = {
+80, 101, 116, 114, 111, 108, 32, 67, 97, 110, 32, 40, 69, 109, 112, 116, 121, 41, 0 };
+const uint8_t objtxt_52[] = {
+80, 101, 116, 114, 111, 108, 32, 67, 97, 110, 32, 40, 102, 117, 108, 108, 41, 0 };
+const uint8_t objtxt_53[] = {
+84, 105, 103, 104, 116, 114, 111, 112, 101, 32, 97, 110, 99, 104, 111, 114, 97, 103, 101, 0 };
+const uint8_t objtxt_54[] = {
+67, 114, 97, 115, 104, 32, 72, 101, 108, 109, 101, 116, 0 };
+const uint8_t objtxt_55[] = {
+67, 114, 97, 115, 104, 32, 72, 101, 108, 109, 101, 116, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_56[] = {
+67, 105, 114, 99, 117, 115, 32, 84, 101, 110, 116, 0 };
+const uint8_t objtxt_57[] = {
+82, 111, 97, 100, 0 };
+const uint8_t objtxt_58[] = {
+67, 97, 114, 32, 75, 101, 121, 115, 0 };
+const uint8_t objtxt_59[] = {
+80, 101, 110, 107, 110, 105, 102, 101, 0 };
+const uint8_t objtxt_60[] = {
+70, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_61[] = {
+67, 97, 110, 118, 97, 115, 32, 114, 111, 111, 102, 0 };
+const uint8_t objtxt_62[] = {
+78, 111, 116, 101, 0 };
+const uint8_t objtxt_63[] = {
+67, 108, 111, 115, 101, 116, 0 };
+const uint8_t objtxt_64[] = {
+67, 111, 110, 116, 114, 111, 108, 32, 80, 97, 110, 101, 108, 0 };
+const uint8_t objtxt_65[] = {
+80, 101, 116, 114, 111, 108, 32, 102, 105, 108, 108, 101, 114, 32, 104, 111, 108, 101, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+82, 111, 108, 108, 32, 117, 112, 33, 32, 82, 111, 108, 108, 32, 117, 112, 33, 0 };
+const uint8_t msgtxt_2[] = {
+84, 104, 101, 32, 67, 73, 82, 67, 85, 83, 32, 105, 115, 32, 105, 110, 32, 116, 111, 119, 110, 33, 0 };
+const uint8_t msgtxt_3[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_4[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_5[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_6[] = {
+73, 116, 32, 115, 97, 121, 115, 58, 45, 0 };
+const uint8_t msgtxt_7[] = {
+83, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_8[] = {
+73, 116, 39, 115, 32, 111, 117, 116, 32, 111, 102, 32, 102, 117, 101, 108, 33, 0 };
+const uint8_t msgtxt_9[] = {
+66, 45, 111, 45, 111, 45, 111, 45, 111, 45, 109, 45, 109, 33, 0 };
+const uint8_t msgtxt_10[] = {
+83, 45, 112, 45, 108, 45, 97, 45, 97, 45, 116, 45, 116, 33, 33, 0 };
+const uint8_t msgtxt_11[] = {
+73, 116, 39, 115, 32, 108, 111, 99, 107, 101, 100, 33, 0 };
+const uint8_t msgtxt_12[] = {
+73, 39, 118, 101, 32, 110, 111, 32, 107, 101, 121, 115, 33, 0 };
+const uint8_t msgtxt_13[] = {
+78, 111, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_14[] = {
+72, 97, 112, 112, 101, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_15[] = {
+72, 101, 97, 118, 121, 32, 105, 114, 111, 110, 32, 98, 97, 114, 115, 32, 99, 114, 97, 115, 104, 32, 100, 111, 119, 110, 33, 0 };
+const uint8_t msgtxt_16[] = {
+73, 39, 109, 32, 84, 114, 97, 112, 112, 101, 100, 33, 0 };
+const uint8_t msgtxt_17[] = {
+79, 46, 107, 46, 0 };
+const uint8_t msgtxt_18[] = {
+73, 32, 115, 109, 97, 115, 104, 32, 109, 121, 32, 104, 101, 97, 100, 32, 111, 110, 32, 108, 97, 110, 100, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_19[] = {
+73, 39, 109, 32, 68, 69, 65, 68, 33, 0 };
+const uint8_t msgtxt_20[] = {
+84, 104, 101, 32, 67, 104, 101, 115, 116, 32, 108, 105, 100, 32, 102, 108, 105, 101, 115, 32, 111, 112, 101, 110, 33, 0 };
+const uint8_t msgtxt_21[] = {
+84, 104, 101, 32, 84, 105, 103, 101, 114, 0 };
+const uint8_t msgtxt_22[] = {
+99, 111, 119, 101, 114, 115, 32, 97, 119, 97, 121, 33, 0 };
+const uint8_t msgtxt_23[] = {
+84, 104, 101, 32, 83, 101, 97, 45, 76, 105, 111, 110, 32, 116, 111, 115, 115, 101, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_24[] = {
+84, 104, 101, 32, 67, 108, 111, 119, 110, 32, 114, 117, 110, 115, 32, 97, 119, 97, 121, 32, 102, 114, 111, 109, 32, 109, 101, 0 };
+const uint8_t msgtxt_25[] = {
+34, 89, 111, 117, 32, 109, 117, 115, 116, 32, 100, 101, 115, 116, 114, 111, 121, 32, 116, 104, 105, 115, 32, 112, 108, 97, 99, 101, 34, 0 };
+const uint8_t msgtxt_26[] = {
+34, 87, 101, 32, 97, 114, 101, 32, 83, 112, 105, 114, 105, 116, 115, 32, 45, 32, 68, 111, 111, 109, 101, 100, 32, 98, 121, 32, 69, 118, 105, 108, 34, 0 };
+const uint8_t msgtxt_27[] = {
+34, 68, 111, 111, 109, 101, 100, 32, 102, 111, 114, 101, 118, 101, 114, 32, 116, 111, 32, 116, 104, 105, 115, 32, 67, 105, 114, 99, 117, 115, 34, 0 };
+const uint8_t msgtxt_28[] = {
+72, 101, 32, 112, 111, 105, 110, 116, 115, 32, 116, 111, 32, 116, 104, 101, 32, 102, 108, 111, 111, 114, 33, 0 };
+const uint8_t msgtxt_29[] = {
+34, 68, 101, 116, 111, 110, 97, 116, 105, 111, 110, 32, 112, 114, 105, 109, 101, 100, 32, 119, 104, 101, 110, 32, 84, 101, 114, 109, 105, 110, 97, 108, 115, 34, 0 };
+const uint8_t msgtxt_30[] = {
+34, 79, 110, 32, 99, 111, 110, 116, 114, 111, 108, 32, 112, 97, 110, 101, 108, 32, 97, 114, 101, 32, 115, 104, 111, 114, 116, 101, 100, 34, 0 };
+const uint8_t msgtxt_31[] = {
+73, 32, 119, 97, 108, 107, 101, 100, 32, 111, 102, 102, 32, 116, 104, 101, 32, 84, 105, 103, 104, 116, 114, 111, 112, 101, 33, 0 };
+const uint8_t msgtxt_32[] = {
+34, 65, 85, 84, 79, 45, 68, 69, 84, 79, 78, 65, 84, 73, 79, 78, 32, 80, 82, 73, 77, 69, 68, 34, 0 };
+const uint8_t msgtxt_33[] = {
+66, 101, 108, 108, 115, 32, 97, 110, 100, 32, 115, 105, 114, 101, 110, 115, 32, 97, 114, 101, 32, 115, 111, 117, 110, 100, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_34[] = {
+73, 32, 115, 108, 105, 112, 112, 101, 100, 32, 111, 102, 102, 32, 116, 104, 101, 32, 84, 105, 103, 104, 116, 114, 111, 112, 101, 33, 0 };
+const uint8_t msgtxt_35[] = {
+87, 104, 101, 101, 101, 101, 101, 101, 33, 0 };
+const uint8_t msgtxt_36[] = {
+73, 39, 109, 32, 115, 112, 108, 97, 116, 116, 101, 114, 101, 100, 32, 97, 103, 97, 105, 110, 115, 116, 32, 116, 104, 101, 32, 67, 97, 110, 118, 97, 115, 33, 0 };
+const uint8_t msgtxt_37[] = {
+73, 39, 109, 32, 119, 101, 97, 114, 105, 110, 103, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_38[] = {
+73, 32, 110, 101, 101, 100, 32, 80, 101, 116, 114, 111, 108, 33, 0 };
+const uint8_t msgtxt_39[] = {
+71, 101, 110, 101, 114, 97, 116, 111, 114, 32, 119, 111, 110, 39, 116, 32, 115, 116, 97, 114, 116, 0 };
+const uint8_t msgtxt_40[] = {
+71, 101, 110, 101, 114, 97, 116, 111, 114, 32, 115, 112, 108, 117, 116, 116, 101, 114, 115, 32, 105, 110, 116, 111, 32, 108, 105, 102, 101, 33, 0 };
+const uint8_t msgtxt_41[] = {
+84, 104, 101, 32, 98, 97, 116, 116, 101, 114, 121, 32, 105, 115, 32, 102, 108, 97, 116, 33, 0 };
+const uint8_t msgtxt_42[] = {
+73, 32, 100, 114, 105, 118, 101, 32, 97, 119, 97, 121, 32, 97, 116, 32, 102, 117, 108, 108, 32, 115, 112, 101, 101, 100, 0 };
+const uint8_t msgtxt_43[] = {
+97, 110, 100, 32, 97, 118, 111, 105, 100, 32, 116, 104, 101, 32, 101, 120, 112, 108, 111, 115, 105, 111, 110, 46, 32, 73, 32, 115, 117, 99, 99, 101, 101, 100, 101, 100, 33, 0 };
+const uint8_t msgtxt_44[] = {
+67, 108, 111, 119, 110, 32, 115, 97, 121, 115, 58, 32, 34, 78, 111, 116, 32, 72, 101, 114, 101, 33, 34, 0 };
+const uint8_t msgtxt_45[] = {
+67, 108, 111, 119, 110, 32, 104, 101, 108, 112, 115, 32, 109, 101, 32, 101, 114, 101, 99, 116, 32, 116, 104, 101, 32, 78, 101, 116, 0 };
+const uint8_t msgtxt_46[] = {
+73, 116, 115, 32, 116, 111, 111, 32, 104, 101, 97, 118, 121, 33, 0 };
+const uint8_t msgtxt_47[] = {
+34, 77, 65, 82, 86, 79, 32, 45, 32, 84, 72, 69, 32, 72, 85, 77, 65, 78, 32, 67, 65, 78, 78, 79, 78, 66, 65, 76, 76, 34, 0 };
+const uint8_t msgtxt_48[] = {
+72, 117, 103, 101, 32, 101, 120, 112, 108, 111, 115, 105, 111, 110, 0 };
+const uint8_t msgtxt_49[] = {
+82, 105, 112, 115, 32, 109, 101, 32, 116, 111, 32, 112, 101, 105, 99, 101, 115, 33, 0 };
+const uint8_t msgtxt_50[] = {
+34, 68, 69, 84, 79, 78, 65, 84, 73, 79, 78, 32, 73, 78, 0 };
+const uint8_t msgtxt_51[] = {
+84, 85, 82, 78, 83, 34, 0 };
+const uint8_t msgtxt_52[] = {
+67, 108, 111, 119, 110, 32, 114, 117, 110, 115, 32, 111, 102, 102, 33, 0 };
+const uint8_t msgtxt_53[] = {
+73, 39, 109, 32, 110, 111, 116, 32, 99, 97, 114, 114, 121, 105, 110, 103, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_54[] = {
+87, 104, 97, 116, 32, 97, 32, 102, 111, 117, 108, 32, 109, 111, 117, 116, 104, 32, 121, 111, 117, 32, 104, 97, 118, 101, 33, 0 };
+const uint8_t msgtxt_55[] = {
+85, 115, 101, 32, 121, 111, 117, 114, 32, 119, 105, 116, 115, 32, 97, 110, 100, 32, 69, 88, 65, 77, 105, 110, 101, 32, 116, 104, 105, 110, 103, 115, 33, 0 };
+const uint8_t msgtxt_56[] = {
+89, 111, 117, 32, 116, 104, 105, 110, 107, 32, 116, 104, 105, 115, 32, 105, 115, 32, 97, 32, 103, 97, 109, 101, 32, 63, 0 };
+const uint8_t msgtxt_57[] = {
+85, 103, 104, 33, 0 };
+const uint8_t msgtxt_58[] = {
+73, 39, 118, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 116, 111, 32, 99, 117, 116, 32, 105, 116, 32, 119, 105, 116, 104, 33, 0 };
+const uint8_t msgtxt_59[] = {
+73, 116, 32, 102, 101, 108, 108, 32, 116, 111, 32, 116, 104, 101, 32, 103, 114, 111, 117, 110, 100, 33, 0 };
+const uint8_t msgtxt_60[] = {
+73, 116, 39, 115, 32, 97, 108, 114, 101, 97, 100, 121, 32, 108, 105, 116, 33, 0 };
+const uint8_t msgtxt_61[] = {
+73, 116, 39, 115, 32, 110, 111, 116, 32, 108, 105, 116, 33, 0 };
+const uint8_t msgtxt_62[] = {
+84, 104, 101, 32, 119, 97, 121, 32, 105, 115, 32, 98, 97, 114, 114, 101, 100, 33, 0 };
+const uint8_t msgtxt_63[] = {
+73, 116, 39, 115, 32, 97, 108, 114, 101, 97, 100, 121, 32, 114, 117, 110, 110, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_64[] = {
+73, 116, 32, 110, 101, 101, 100, 115, 32, 102, 105, 120, 105, 110, 103, 32, 45, 32, 97, 32, 99, 97, 98, 108, 101, 32, 105, 115, 32, 109, 105, 115, 115, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_65[] = {
+72, 101, 32, 108, 111, 111, 107, 115, 32, 104, 117, 110, 103, 114, 121, 33, 0 };
+const uint8_t msgtxt_66[] = {
+89, 111, 117, 39, 114, 101, 32, 106, 111, 107, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_67[] = {
+70, 111, 114, 99, 101, 100, 32, 105, 116, 32, 111, 112, 101, 110, 33, 0 };
+const uint8_t msgtxt_68[] = {
+77, 121, 32, 116, 97, 110, 107, 32, 105, 115, 32, 110, 111, 119, 32, 102, 117, 108, 108, 33, 0 };
+const uint8_t msgtxt_69[] = {
+73, 32, 99, 97, 110, 110, 111, 116, 32, 108, 101, 97, 118, 101, 32, 116, 104, 101, 32, 115, 112, 105, 114, 105, 116, 115, 32, 116, 111, 32, 115, 117, 102, 102, 101, 114, 33, 0 };
+const uint8_t msgtxt_70[] = {
+84, 114, 121, 32, 116, 111, 32, 98, 101, 32, 115, 101, 114, 105, 111, 117, 115, 33, 0 };
+const uint8_t msgtxt_71[] = {
+75, 101, 121, 115, 32, 100, 111, 110, 39, 116, 32, 102, 105, 116, 33, 0 };
+const uint8_t msgtxt_72[] = {
+72, 111, 119, 32, 100, 101, 115, 116, 114, 117, 99, 116, 105, 118, 101, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       171, 
+       9, 1, 0, 1, 
+       1, 86, 2, 58, 
+/* AUTO  100   */
+       169, 
+       4, 7, 9, 2, 
+       56, 64, 
+/* AUTO  100   */
+       169, 
+       4, 7, 8, 2, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 1, 
+       57, 64, 
+/* AUTO  100   */
+       170, 
+       8, 3, 0, 1, 
+       81, 77, 73, 
+/* AUTO  0     */
+       203, 
+       19, 0, 7, 5, 
+       9, 48, 49, 61, 
+/* AUTO  0     */
+       199, 
+       16, 0, 
+       33, 32, 50, 78, 
+/* AUTO  0     */
+       201, 
+       16, 0, 0, 1, 
+       81, 51, 
+/* AUTO  100   */
+       168, 
+       4, 15, 0, 4, 
+       58, 
+/* AUTO  100   */
+       168, 
+       4, 16, 0, 4, 
+       60, 
+/* AUTO  100   */
+       168, 
+       4, 14, 0, 4, 
+       60, 
+/* AUTO  100   */
+       178, 
+       4, 15, 6, 17, 14, 25, 0, 4, 
+       60, 61, 34, 
+/* AUTO  100   */
+       177, 
+       4, 15, 6, 17, 13, 25, 0, 35, 
+       34, 54, 
+/* AUTO  100   */
+       174, 
+       4, 36, 8, 4, 14, 25, 
+       31, 61, 63, 
+/* AUTO  100   */
+       177, 
+       4, 36, 8, 4, 13, 25, 0, 35, 
+       31, 54, 
+/* AUTO  100   */
+       173, 
+       13, 25, 13, 49, 0, 49, 
+       59, 102, 
+/* AUTO  100   */
+       182, 
+       6, 19, 2, 49, 4, 23, 0, 49, 0, 8, 
+       88, 102, 62, 
+/* AUTO  100   */
+       172, 
+       1, 19, 14, 25, 0, 49, 
+       53, 
+/* AUTO  100   */
+       168, 
+       4, 36, 9, 4, 
+       63, 
+/* AUTO  100   */
+       179, 
+       4, 7, 8, 2, 14, 13, 0, 13, 
+       53, 64, 15, 16, 
+/* AUTO  100   */
+       172, 
+       8, 16, 14, 2, 0, 2, 
+       53, 
+/* AUTO  100   */
+       182, 
+       6, 19, 2, 49, 4, 8, 0, 49, 0, 23, 
+       88, 102, 62, 
+/* AUTO  100   */
+       172, 
+       4, 16, 14, 42, 0, 41, 
+       53, 
+/* AUTO  100   */
+       172, 
+       4, 14, 14, 42, 0, 41, 
+       53, 
+};
+const uint8_t actions[] = {
+/* CUT   HOLE  */
+       21, 41, 76, 
+       4, 34, 14, 44, 1, 59, 0, 44, 0, 61, 
+       72, 17, 
+/* GET   HELM  */
+       9, 10, 71, 
+       2, 54, 0, 54, 
+       52, 17, 
+/* GET   HELM  */
+       4, 10, 71, 
+       1, 55, 
+       37, 
+/* GET   COST  */
+       9, 10, 51, 
+       2, 18, 0, 18, 
+       52, 17, 
+/* GET   COST  */
+       4, 10, 51, 
+       1, 19, 
+       37, 
+/* GET   SLIP  */
+       9, 10, 14, 
+       2, 16, 0, 16, 
+       52, 17, 
+/* GET   SLIP  */
+       4, 10, 14, 
+       1, 17, 
+       37, 
+/* DROP  HELM  */
+       4, 18, 71, 
+       1, 55, 
+       37, 
+/* DROP  HELM  */
+       9, 18, 71, 
+       1, 54, 0, 54, 
+       53, 17, 
+/* DROP  HELM  */
+       4, 18, 71, 
+       6, 54, 
+       103, 
+/* DROP  SLIP  */
+       4, 18, 14, 
+       1, 17, 
+       37, 
+/* DROP  SLIP  */
+       9, 18, 14, 
+       1, 16, 0, 16, 
+       53, 17, 
+/* DROP  SLIP  */
+       4, 18, 14, 
+       6, 16, 
+       103, 
+/* DROP  COST  */
+       4, 18, 51, 
+       1, 19, 
+       37, 
+/* DROP  COST  */
+       9, 18, 51, 
+       1, 18, 0, 18, 
+       53, 17, 
+/* DROP  COST  */
+       4, 18, 51, 
+       6, 18, 
+       103, 
+/* GO    TENT  */
+       13, 1, 7, 
+       2, 56, 14, 13, 0, 7, 
+       54, 17, 
+/* GO    ROAD  */
+       9, 1, 92, 
+       4, 2, 0, 3, 
+       54, 17, 
+/* GO    CAR   */
+       13, 1, 20, 
+       1, 58, 2, 0, 0, 5, 
+       54, 17, 
+/* GO    TIGH  */
+       9, 1, 64, 
+       2, 41, 0, 15, 
+       54, 17, 
+/* CLIM  LADD  */
+       9, 51, 60, 
+       4, 13, 0, 14, 
+       54, 17, 
+/* CLIM  LADD  */
+       9, 51, 60, 
+       4, 8, 0, 10, 
+       54, 17, 
+/* EREC  NET   */
+       8, 62, 59, 
+       7, 26, 5, 49, 
+       7, 
+/* EREC  NET   */
+       12, 62, 59, 
+       1, 24, 2, 49, 7, 26, 
+       44, 
+/* EREC  NET   */
+       12, 62, 59, 
+       1, 24, 4, 26, 5, 49, 
+       46, 
+/* EXAM  ROPE  */
+       14, 34, 58, 
+       3, 23, 0, 23, 0, 24, 
+       72, 3, 4, 
+/* GET   NET   */
+       9, 10, 59, 
+       2, 24, 0, 24, 
+       52, 17, 
+/* DROP  NET   */
+       9, 18, 59, 
+       1, 24, 0, 24, 
+       53, 17, 
+/* CUT   TIGH  */
+       8, 41, 64, 
+       2, 59, 6, 10, 
+       108, 
+/* CUT   TIGH  */
+       23, 41, 64, 
+       2, 41, 1, 10, 0, 41, 0, 42, 0, 13, 
+       59, 62, 17, 109, 
+/* EREC  NET   */
+       23, 62, 59, 
+       3, 24, 2, 49, 4, 26, 0, 24, 0, 25, 
+       59, 53, 64, 45, 
+/* WEAR  SLIP  */
+       13, 26, 14, 
+       1, 16, 0, 16, 0, 17, 
+       72, 17, 
+/* WEAR  COST  */
+       13, 26, 51, 
+       1, 18, 0, 18, 0, 19, 
+       72, 17, 
+/* WEAR  HELM  */
+       13, 26, 71, 
+       1, 54, 0, 54, 0, 55, 
+       72, 17, 
+/* LIGH  FLAS  */
+       13, 78, 29, 
+       1, 1, 0, 1, 0, 9, 
+       72, 17, 
+/* LIGH  FLAS  */
+       4, 78, 29, 
+       13, 9, 
+       110, 
+/* UNLI  FLAS  */
+       14, 79, 29, 
+       3, 9, 0, 9, 0, 1, 
+       72, 17, 64, 
+/* UNLI  FLAS  */
+       4, 79, 29, 
+       14, 9, 
+       111, 
+/* OPEN  BOOT  */
+       23, 24, 22, 
+       4, 17, 14, 3, 1, 58, 0, 3, 0, 1, 
+       53, 53, 3, 4, 
+/* OPEN  BOOT  */
+       8, 24, 22, 
+       4, 17, 6, 58, 
+       12, 
+/* DROP  TENT  */
+       8, 18, 7, 
+       4, 7, 2, 13, 
+       112, 
+/* DROP  TENT  */
+       9, 18, 7, 
+       4, 7, 0, 1, 
+       54, 17, 
+/* OPEN  CHES  */
+       5, 24, 15, 
+       2, 14, 
+       13, 14, 
+/* KICK  CHES  */
+       13, 94, 15, 
+       4, 9, 9, 8, 0, 8, 
+       20, 58, 
+/* DROP  CAR   */
+       9, 18, 20, 
+       4, 5, 0, 4, 
+       54, 17, 
+/* GO    FIEL  */
+       9, 1, 83, 
+       4, 3, 0, 2, 
+       54, 17, 
+/* DIG   ANY   */
+       4, 48, 0, 
+       6, 11, 
+       7, 
+/* DIG   ANY   */
+       14, 48, 0, 
+       4, 22, 14, 12, 0, 12, 
+       53, 3, 4, 
+/* DIG   ANY   */
+       0, 48, 0, 
+       7, 
+/* STAR  GENE  */
+       9, 45, 35, 
+       4, 6, 6, 12, 
+       7, 39, 
+/* STAR  GENE  */
+       4, 45, 35, 
+       8, 2, 
+       113, 
+/* STAR  GENE  */
+       8, 45, 35, 
+       4, 6, 9, 5, 
+       114, 
+/* STAR  GENE  */
+       8, 45, 35, 
+       4, 6, 8, 6, 
+       38, 
+/* STAR  GENE  */
+       23, 45, 35, 
+       4, 6, 1, 12, 8, 5, 9, 6, 0, 2, 
+       58, 17, 64, 40, 
+/* LIGH  FLAS  */
+       4, 78, 29, 
+       13, 2, 
+       41, 
+/* PUSH  BUTT  */
+       15, 83, 82, 
+       2, 36, 14, 37, 0, 37, 
+       53, 4, 14, 64, 
+/* PUSH  BUTT  */
+       9, 83, 82, 
+       2, 36, 13, 37, 
+       13, 14, 
+/* SHOR  TERM  */
+       23, 64, 42, 
+       2, 38, 1, 3, 0, 38, 0, 39, 0, 3, 
+       17, 72, 59, 73, 
+/* AUTO  0     */
+       211, 
+       0, 3, 0, 1, 0, 25, 0, 1, 
+       58, 81, 79, 81, 
+/* READ  BLUE  */
+       7, 33, 39, 
+       1, 40, 
+       17, 6, 29, 30, 
+/* READ  NOTE  */
+       7, 33, 94, 
+       1, 62, 
+       6, 25, 26, 27, 
+/* EXAM  CLOW  */
+       15, 34, 69, 
+       2, 49, 14, 62, 0, 62, 
+       53, 3, 4, 28, 
+/* EXAM  CLOW  */
+       4, 34, 69, 
+       2, 49, 
+       28, 
+/* SWIM  ANY   */
+       15, 65, 0, 
+       4, 20, 14, 31, 0, 31, 
+       17, 3, 4, 53, 
+/* SWIM  ANY   */
+       4, 65, 0, 
+       4, 20, 
+       17, 
+/* EXAM  SEA-  */
+       8, 34, 47, 
+       2, 31, 14, 32, 
+       115, 
+/* FEED  SEA-  */
+       14, 30, 47, 
+       1, 22, 0, 22, 0, 32, 
+       59, 53, 23, 
+/* EXAM  PANE  */
+       14, 34, 41, 
+       4, 29, 14, 36, 0, 36, 
+       53, 3, 4, 
+/* EXAM  PANE  */
+       9, 34, 41, 
+       4, 29, 13, 36, 
+       3, 5, 
+/* GO    HATC  */
+       9, 1, 81, 
+       2, 37, 0, 30, 
+       17, 54, 
+/* EXAM  TIGE  */
+       4, 34, 62, 
+       4, 27, 
+       116, 
+/* MOVE  TIGE  */
+       23, 92, 62, 
+       4, 27, 9, 7, 0, 33, 0, 34, 0, 35, 
+       72, 53, 88, 73, 
+/* AUTO  0     */
+       195, 
+       88, 21, 49, 61, 
+/* CRAC  WHIP  */
+       9, 50, 54, 
+       1, 20, 7, 27, 
+       5, 14, 
+/* CRAC  WHIP  */
+       22, 50, 54, 
+       1, 20, 9, 7, 4, 27, 0, 7, 0, 35, 
+       58, 53, 73, 
+/* AUTO  0     */
+       203, 
+       0, 33, 0, 34, 
+       72, 17, 21, 22, 
+/* GO    TRAP  */
+       9, 1, 63, 
+       2, 35, 0, 28, 
+       54, 17, 
+/* EXAM  CANN  */
+       19, 34, 73, 
+       2, 46, 14, 48, 0, 48, 0, 54, 
+       53, 53, 3, 4, 
+/* READ  SIGN  */
+       5, 33, 95, 
+       2, 48, 
+       6, 47, 
+/* GO    CANN  */
+       9, 1, 73, 
+       4, 24, 0, 25, 
+       54, 17, 
+/* PULL  LEVE  */
+       19, 81, 74, 
+       2, 47, 1, 55, 13, 44, 0, 2, 
+       9, 88, 54, 35, 
+/* PULL  LEVE  */
+       15, 81, 74, 
+       2, 47, 13, 44, 6, 55, 
+       9, 88, 18, 61, 
+/* PULL  LEVE  */
+       11, 81, 74, 
+       2, 47, 14, 44, 
+       9, 88, 36, 61, 
+/* CUT   CANV  */
+       21, 41, 75, 
+       4, 34, 14, 44, 1, 59, 0, 44, 0, 61, 
+       72, 17, 
+/* EXAM  CHES  */
+       22, 34, 15, 
+       2, 14, 14, 16, 14, 17, 8, 8, 0, 16, 
+       53, 3, 4, 
+/* GO    TANK  */
+       9, 1, 46, 
+       2, 29, 0, 20, 
+       17, 54, 
+/* EXAM  REFR  */
+       14, 34, 18, 
+       2, 21, 14, 22, 0, 22, 
+       53, 3, 4, 
+/* EXAM  GENE  */
+       9, 34, 35, 
+       4, 6, 9, 5, 
+       3, 114, 
+/* FIX   GENE  */
+       22, 95, 35, 
+       9, 5, 1, 42, 1, 3, 0, 5, 0, 42, 
+       17, 58, 59, 
+/* GO    TRAP  */
+       9, 1, 63, 
+       2, 45, 0, 11, 
+       17, 54, 
+/* SWIN  TRAP  */
+       18, 57, 63, 
+       4, 11, 17, 45, 0, 34, 0, 45, 
+       35, 54, 53, 
+/* SWIN  TRAP  */
+       18, 57, 63, 
+       4, 11, 18, 45, 0, 10, 0, 45, 
+       35, 54, 53, 
+/* JUMP  ANY   */
+       11, 66, 0, 
+       4, 16, 14, 25, 
+       35, 88, 10, 61, 
+/* JUMP  ANY   */
+       14, 66, 0, 
+       4, 16, 13, 25, 0, 35, 
+       35, 88, 54, 
+/* JUMP  ANY   */
+       11, 66, 0, 
+       4, 14, 14, 25, 
+       35, 88, 10, 61, 
+/* JUMP  ANY   */
+       14, 66, 0, 
+       4, 14, 13, 25, 0, 35, 
+       35, 88, 54, 
+/* JUMP  ANY   */
+       11, 66, 0, 
+       4, 10, 14, 25, 
+       35, 88, 10, 61, 
+/* JUMP  ANY   */
+       14, 66, 0, 
+       4, 10, 13, 25, 0, 35, 
+       35, 88, 54, 
+/* JUMP  ANY   */
+       11, 66, 0, 
+       4, 34, 14, 25, 
+       35, 88, 10, 61, 
+/* JUMP  ANY   */
+       14, 66, 0, 
+       4, 34, 13, 25, 0, 35, 
+       35, 88, 54, 
+/* JUMP  ANY   */
+       0, 66, 0, 
+       7, 
+/* GO    DOOR  */
+       8, 1, 11, 
+       2, 5, 6, 43, 
+       11, 
+/* OPEN  DOOR  */
+       18, 24, 11, 
+       2, 5, 1, 43, 0, 5, 0, 6, 
+       17, 117, 72, 
+/* GO    DOOR  */
+       9, 1, 11, 
+       2, 6, 0, 18, 
+       17, 54, 
+/* EXAM  LOCK  */
+       4, 34, 16, 
+       2, 7, 
+       11, 
+/* EXAM  LOCK  */
+       14, 34, 16, 
+       2, 8, 14, 10, 0, 10, 
+       53, 3, 4, 
+/* OPEN  LOCK  */
+       17, 24, 16, 
+       2, 7, 1, 43, 0, 7, 0, 8, 
+       72, 117, 
+/* OPEN  LOCK  */
+       8, 24, 16, 
+       2, 7, 6, 43, 
+       12, 
+/* SYPH  PETR  */
+       21, 56, 24, 
+       2, 4, 1, 51, 1, 32, 0, 51, 0, 52, 
+       72, 17, 
+/* DRIV  CAR   */
+       9, 43, 20, 
+       4, 5, 9, 9, 
+       7, 38, 
+/* DRIV  CAR   */
+       15, 43, 20, 
+       4, 5, 8, 9, 8, 3, 
+       9, 42, 43, 63, 
+/* FILL  TANK  */
+       23, 54, 46, 
+       4, 17, 1, 52, 0, 9, 0, 52, 0, 51, 
+       17, 58, 72, 118, 
+/* KICK  CHES  */
+       9, 94, 15, 
+       2, 14, 8, 8, 
+       13, 14, 
+/* GO    CLOS  */
+       9, 1, 56, 
+       2, 63, 0, 32, 
+       17, 54, 
+/* GO    CAGE  */
+       9, 1, 61, 
+       2, 28, 0, 27, 
+       17, 54, 
+/* GET   ROPE  */
+       9, 10, 58, 
+       2, 23, 0, 23, 
+       52, 17, 
+/* DROP  ROPE  */
+       8, 18, 58, 
+       1, 23, 0, 23, 
+       53, 
+/* GO    TENT  */
+       4, 1, 7, 
+       13, 13, 
+       112, 
+/* DRIV  CAR   */
+       12, 43, 20, 
+       4, 5, 8, 9, 9, 3, 
+       119, 
+/* REMO  SLIP  */
+       13, 28, 14, 
+       1, 17, 0, 16, 0, 17, 
+       72, 17, 
+/* REMO  COST  */
+       13, 28, 51, 
+       1, 19, 0, 18, 0, 19, 
+       72, 17, 
+/* REMO  HELM  */
+       13, 28, 71, 
+       1, 55, 0, 54, 0, 55, 
+       72, 17, 
+/* GO    HOLE  */
+       4, 1, 76, 
+       4, 17, 
+       120, 
+/* UNLO  DOOR  */
+       8, 25, 11, 
+       4, 12, 1, 58, 
+       121, 
+/* GO    WATE  */
+       4, 1, 48, 
+       4, 20, 
+       17, 
+/* SMAS  ANY   */
+       0, 74, 0, 
+       122, 
+/* FILL  CAN   */
+       4, 54, 93, 
+       1, 51, 
+       38, 
+/* SCOR  ANY   */
+       0, 9, 0, 
+       106, 
+/* QUIT  ANY   */
+       0, 7, 0, 
+       63, 
+/* INVE  ANY   */
+       0, 23, 0, 
+       66, 
+/* SAVE  ANY   */
+       0, 8, 0, 
+       71, 
+/* EXAM  ANY   */
+       1, 34, 0, 
+       3, 5, 
+/* GO    ANY   */
+       0, 1, 0, 
+       7, 
+/* FUCK  ANY   */
+       0, 85, 0, 
+       104, 
+/* SAY   ANY   */
+       3, 58, 0, 
+       17, 85, 5, 14, 
+/* OPEN  ANY   */
+       0, 24, 0, 
+       7, 
+/* EAT   ANY   */
+       0, 67, 0, 
+       107, 
+/* HELP  ANY   */
+       0, 6, 0, 
+       105, 
+/* KICK  ANY   */
+       0, 94, 0, 
+       122, 
+/* KILL  ANY   */
+       0, 72, 0, 
+       7, 
+/* CLIM  ANY   */
+       0, 51, 0, 
+       7, 
+/* READ  ANY   */
+       0, 33, 0, 
+       7, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *WALK */
+       215, 65, 76, 75,
+       /* *RUN */
+       210, 85, 78, 32,
+       /* *PROC */
+       208, 82, 79, 67,
+       /* HELP */
+       72, 69, 76, 80,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *SEIZ */
+       211, 69, 73, 90,
+       /* *HOLD */
+       200, 79, 76, 68,
+       /* *OBTA */
+       207, 66, 84, 65,
+       /* *SNAT */
+       211, 78, 65, 84,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *DEPO */
+       196, 69, 80, 79,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *THRO */
+       212, 72, 82, 79,
+       /* INVE */
+       73, 78, 86, 69,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* UNLO */
+       85, 78, 76, 79,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* *DON */
+       196, 79, 78, 32,
+       /* REMO */
+       82, 69, 77, 79,
+       /* *DOFF */
+       196, 79, 70, 70,
+       /* FEED */
+       70, 69, 69, 68,
+       /* GIVE */
+       71, 73, 86, 69,
+       /* *OFFE */
+       207, 70, 70, 69,
+       /* READ */
+       82, 69, 65, 68,
+       /* EXAM */
+       69, 88, 65, 77,
+       /* *LOOK */
+       204, 79, 79, 75,
+       /* *INSP */
+       201, 78, 83, 80,
+       /* *PERU */
+       208, 69, 82, 85,
+       /* *SEAR */
+       211, 69, 65, 82,
+       /* SAW */
+       83, 65, 87, 32,
+       /* *HACK */
+       200, 65, 67, 75,
+       /* CUT */
+       67, 85, 84, 32,
+       /* *SLIC */
+       211, 76, 73, 67,
+       /* DRIV */
+       68, 82, 73, 86,
+       /* *STEE */
+       211, 84, 69, 69,
+       /* STAR */
+       83, 84, 65, 82,
+       /* TURN */
+       84, 85, 82, 78,
+       /* *CRAN */
+       195, 82, 65, 78,
+       /* DIG */
+       68, 73, 71, 32,
+       /* *SHOV */
+       211, 72, 79, 86,
+       /* CRAC */
+       67, 82, 65, 67,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* *ASCE */
+       193, 83, 67, 69,
+       /* FIRE */
+       70, 73, 82, 69,
+       /* FILL */
+       70, 73, 76, 76,
+       /* *REPL */
+       210, 69, 80, 76,
+       /* SYPH */
+       83, 89, 80, 72,
+       /* SWIN */
+       83, 87, 73, 78,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *ASK */
+       193, 83, 75, 32,
+       /* *REMA */
+       210, 69, 77, 65,
+       /* *TALK */
+       212, 65, 76, 75,
+       /* EREC */
+       69, 82, 69, 67,
+       /* EMPT */
+       69, 77, 80, 84,
+       /* SHOR */
+       83, 72, 79, 82,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* EAT */
+       69, 65, 84, 32,
+       /* *TAST */
+       212, 65, 83, 84,
+       /* *NIBB */
+       206, 73, 66, 66,
+       /* MAKE */
+       77, 65, 75, 69,
+       /* *MANU */
+       205, 65, 78, 85,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* SMAS */
+       83, 77, 65, 83,
+       /* *BREA */
+       194, 82, 69, 65,
+       /* *DEST */
+       196, 69, 83, 84,
+       /* *RUIN */
+       210, 85, 73, 78,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* *EXTI */
+       197, 88, 84, 73,
+       /* PULL */
+       80, 85, 76, 76,
+       /* *TUG */
+       212, 85, 71, 32,
+       /* PUSH */
+       80, 85, 83, 72,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* FUCK */
+       70, 85, 67, 75,
+       /* *PISS */
+       208, 73, 83, 83,
+       /* *SHIT */
+       211, 72, 73, 84,
+       /* *BOLL */
+       194, 79, 76, 76,
+       /* *BAST */
+       194, 65, 83, 84,
+       /* *CUNT */
+       195, 85, 78, 84,
+       /* *BUGG */
+       194, 85, 71, 71,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* *SHIF */
+       211, 72, 73, 70,
+       /* KICK */
+       75, 73, 67, 75,
+       /* FIX */
+       70, 73, 88, 32,
+       /* *REPA */
+       210, 69, 80, 65,
+       /* *MEND */
+       205, 69, 78, 68,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* TENT */
+       84, 69, 78, 84,
+       /* *CIRC */
+       195, 73, 82, 67,
+       /* *MARQ */
+       205, 65, 82, 81,
+       /* WAGO */
+       87, 65, 71, 79,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* HACK */
+       72, 65, 67, 75,
+       /* *SAW */
+       211, 65, 87, 32,
+       /* SLIP */
+       83, 76, 73, 80,
+       /* CHES */
+       67, 72, 69, 83,
+       /* LOCK */
+       76, 79, 67, 75,
+       /* *CUPB */
+       195, 85, 80, 66,
+       /* REFR */
+       82, 69, 70, 82,
+       /* *FREE */
+       198, 82, 69, 69,
+       /* CAR */
+       67, 65, 82, 32,
+       /* *AUTO */
+       193, 85, 84, 79,
+       /* BOOT */
+       66, 79, 79, 84,
+       /* *TRUN */
+       212, 82, 85, 78,
+       /* PETR */
+       80, 69, 84, 82,
+       /* *GASO */
+       199, 65, 83, 79,
+       /* *FUEL */
+       198, 85, 69, 76,
+       /* SPAN */
+       83, 80, 65, 78,
+       /* *WREN */
+       215, 82, 69, 78,
+       /* FLAS */
+       70, 76, 65, 83,
+       /* *TORC */
+       212, 79, 82, 67,
+       /* *LAMP */
+       204, 65, 77, 80,
+       /* KEYS */
+       75, 69, 89, 83,
+       /* GAUG */
+       71, 65, 85, 71,
+       /* *METE */
+       205, 69, 84, 69,
+       /* GENE */
+       71, 69, 78, 69,
+       /* SHOV */
+       83, 72, 79, 86,
+       /* HAND */
+       72, 65, 78, 68,
+       /* *STAR */
+       211, 84, 65, 82,
+       /* BLUE */
+       66, 76, 85, 69,
+       /* ALCO */
+       65, 76, 67, 79,
+       /* PANE */
+       80, 65, 78, 69,
+       /* TERM */
+       84, 69, 82, 77,
+       /* *ELEC */
+       197, 76, 69, 67,
+       /* EQUI */
+       69, 81, 85, 73,
+       /* PASS */
+       80, 65, 83, 83,
+       /* TANK */
+       84, 65, 78, 75,
+       /* SEA- */
+       83, 69, 65, 45,
+       /* WATE */
+       87, 65, 84, 69,
+       /* SNOR */
+       83, 78, 79, 82,
+       /* BARS */
+       66, 65, 82, 83,
+       /* COST */
+       67, 79, 83, 84,
+       /* *OUTF */
+       207, 85, 84, 70,
+       /* *CLOT */
+       195, 76, 79, 84,
+       /* WHIP */
+       87, 72, 73, 80,
+       /* *TRAI */
+       212, 82, 65, 73,
+       /* CLOS */
+       67, 76, 79, 83,
+       /* FISH */
+       70, 73, 83, 72,
+       /* ROPE */
+       82, 79, 80, 69,
+       /* NET */
+       78, 69, 84, 32,
+       /* LADD */
+       76, 65, 68, 68,
+       /* CAGE */
+       67, 65, 71, 69,
+       /* TIGE */
+       84, 73, 71, 69,
+       /* TRAP */
+       84, 82, 65, 80,
+       /* TIGH */
+       84, 73, 71, 72,
+       /* CABL */
+       67, 65, 66, 76,
+       /* *HAWS */
+       200, 65, 87, 83,
+       /* TRAP */
+       84, 82, 65, 80,
+       /* *SWIN */
+       211, 87, 73, 78,
+       /* CLOW */
+       67, 76, 79, 87,
+       /* *JEST */
+       202, 69, 83, 84,
+       /* HELM */
+       72, 69, 76, 77,
+       /* *CRAS */
+       195, 82, 65, 83,
+       /* CANN */
+       67, 65, 78, 78,
+       /* LEVE */
+       76, 69, 86, 69,
+       /* CANV */
+       67, 65, 78, 86,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* BAR */
+       66, 65, 82, 32,
+       /* *CROW */
+       195, 82, 79, 87,
+       /* LAYB */
+       76, 65, 89, 66,
+       /* STAN */
+       83, 84, 65, 78,
+       /* HATC */
+       72, 65, 84, 67,
+       /* BUTT */
+       66, 85, 84, 84,
+       /* FIEL */
+       70, 73, 69, 76,
+       /* OFF */
+       79, 70, 70, 32,
+       /* *YOU */
+       217, 79, 85, 32,
+       /* AROU */
+       65, 82, 79, 85,
+       /* *ROUN */
+       210, 79, 85, 78,
+       /* RING */
+       82, 73, 78, 71,
+       /* PENK */
+       80, 69, 78, 75,
+       /* *KNIF */
+       203, 78, 73, 70,
+       /* GAME */
+       71, 65, 77, 69,
+       /* ROAD */
+       82, 79, 65, 68,
+       /* CAN */
+       67, 65, 78, 32,
+       /* NOTE */
+       78, 79, 84, 69,
+       /* SIGN */
+       83, 73, 71, 78,
+       /* ANCH */
+       65, 78, 67, 72,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t automap[] = {
+       /* FLAS */
+       70, 76, 65, 83,
+       1,
+       /* FLAS */
+       70, 76, 65, 83,
+       2,
+       /* SPAN */
+       83, 80, 65, 78,
+       3,
+       /* FLAS */
+       70, 76, 65, 83,
+       9,
+       /* HACK */
+       72, 65, 67, 75,
+       10,
+       /* SHOV */
+       83, 72, 79, 86,
+       11,
+       /* HAND */
+       72, 65, 78, 68,
+       12,
+       /* WHIP */
+       87, 72, 73, 80,
+       20,
+       /* FISH */
+       70, 73, 83, 72,
+       22,
+       /* SNOR */
+       83, 78, 79, 82,
+       32,
+       /* BLUE */
+       66, 76, 85, 69,
+       40,
+       /* CABL */
+       67, 65, 66, 76,
+       42,
+       /* BAR */
+       66, 65, 82, 32,
+       43,
+       /* NOTE */
+       78, 79, 84, 69,
+       50,
+       /* CAN */
+       67, 65, 78, 32,
+       51,
+       /* CAN */
+       67, 65, 78, 32,
+       52,
+       /* KEYS */
+       75, 69, 89, 83,
+       58,
+       /* PENK */
+       80, 69, 78, 75,
+       59,
+       /* NOTE */
+       78, 79, 84, 69,
+       62,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst07.c b/Applications/games/myst07.c
new file mode 100644 (file)
index 0000000..8d9fbc7
--- /dev/null
@@ -0,0 +1,2862 @@
+#define NUM_OBJ 65
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 200;
+const uint8_t lightfill = 200;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 54;
+const uint8_t treasures = 10;
+const uint8_t lastloc = 59;
+const uint8_t startloc = 10;
+const uint8_t loctxt_0[] = {
+40, 99, 41, 32, 49, 57, 56, 50, 32, 66, 46, 72, 46, 0 };
+const uint8_t loctxt_1[] = {
+75, 105, 116, 99, 104, 101, 110, 0 };
+const uint8_t loctxt_2[] = {
+67, 97, 115, 116, 108, 101, 32, 67, 111, 117, 114, 116, 121, 97, 114, 100, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 103, 114, 97, 115, 115, 121, 32, 112, 108, 97, 105, 110, 0 };
+const uint8_t loctxt_4[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 103, 114, 97, 115, 115, 121, 32, 112, 108, 97, 105, 110, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 77, 111, 117, 110, 116, 97, 105, 110, 115, 0 };
+const uint8_t loctxt_6[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 77, 111, 117, 110, 116, 97, 105, 110, 115, 0 };
+const uint8_t loctxt_7[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 77, 111, 117, 110, 116, 97, 105, 110, 115, 0 };
+const uint8_t loctxt_8[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 108, 105, 112, 32, 111, 102, 32, 97, 32, 67, 104, 97, 115, 109, 0 };
+const uint8_t loctxt_9[] = {
+119, 97, 114, 109, 32, 67, 97, 118, 101, 0 };
+const uint8_t loctxt_10[] = {
+42, 73, 32, 102, 101, 101, 108, 32, 97, 32, 115, 117, 114, 103, 101, 32, 111, 102, 32, 115, 116, 114, 97, 110, 103, 101, 32, 80, 111, 119, 101, 114, 0 };
+const uint8_t loctxt_11[] = {
+118, 105, 101, 119, 105, 110, 103, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_12[] = {
+119, 101, 97, 112, 111, 110, 115, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_13[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 65, 114, 101, 110, 97, 0 };
+const uint8_t loctxt_15[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_16[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_17[] = {
+76, 105, 111, 110, 115, 32, 67, 97, 103, 101, 0 };
+const uint8_t loctxt_18[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_19[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 69, 109, 112, 101, 114, 111, 114, 39, 115, 32, 98, 111, 120, 0 };
+const uint8_t loctxt_20[] = {
+71, 108, 97, 100, 105, 97, 116, 111, 114, 39, 115, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_21[] = {
+42, 73, 32, 102, 101, 101, 108, 32, 97, 32, 115, 117, 114, 103, 101, 32, 111, 102, 32, 115, 116, 114, 97, 110, 103, 101, 32, 80, 111, 119, 101, 114, 0 };
+const uint8_t loctxt_22[] = {
+115, 116, 111, 110, 101, 32, 72, 117, 116, 0 };
+const uint8_t loctxt_23[] = {
+115, 116, 111, 110, 101, 45, 97, 103, 101, 32, 86, 105, 108, 108, 97, 103, 101, 0 };
+const uint8_t loctxt_24[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 71, 108, 97, 99, 105, 101, 114, 0 };
+const uint8_t loctxt_25[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 73, 99, 101, 45, 99, 97, 118, 101, 0 };
+const uint8_t loctxt_26[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 112, 97, 116, 104, 0 };
+const uint8_t loctxt_27[] = {
+115, 116, 111, 110, 101, 32, 67, 105, 114, 99, 108, 101, 0 };
+const uint8_t loctxt_28[] = {
+115, 116, 114, 97, 119, 32, 72, 117, 116, 0 };
+const uint8_t loctxt_29[] = {
+42, 73, 32, 102, 101, 101, 108, 32, 97, 32, 115, 117, 114, 103, 101, 32, 111, 102, 32, 115, 116, 114, 97, 110, 103, 101, 32, 80, 111, 119, 101, 114, 0 };
+const uint8_t loctxt_30[] = {
+77, 105, 110, 101, 32, 121, 97, 114, 100, 0 };
+const uint8_t loctxt_31[] = {
+83, 116, 111, 114, 101, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_32[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 80, 105, 116, 104, 101, 97, 100, 0 };
+const uint8_t loctxt_33[] = {
+77, 105, 110, 101, 32, 99, 97, 103, 101, 0 };
+const uint8_t loctxt_34[] = {
+77, 105, 110, 101, 32, 99, 97, 103, 101, 0 };
+const uint8_t loctxt_35[] = {
+77, 105, 110, 101, 32, 99, 97, 103, 101, 0 };
+const uint8_t loctxt_36[] = {
+77, 105, 110, 101, 32, 99, 97, 103, 101, 0 };
+const uint8_t loctxt_37[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 97, 98, 97, 110, 100, 111, 110, 101, 100, 32, 71, 97, 108, 108, 101, 114, 121, 0 };
+const uint8_t loctxt_38[] = {
+80, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t loctxt_39[] = {
+80, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t loctxt_40[] = {
+80, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t loctxt_41[] = {
+83, 116, 111, 114, 101, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_42[] = {
+68, 105, 115, 112, 108, 97, 121, 32, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_43[] = {
+114, 111, 99, 107, 121, 32, 80, 97, 116, 104, 0 };
+const uint8_t loctxt_44[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 98, 111, 116, 116, 111, 109, 32, 111, 102, 32, 116, 104, 101, 32, 67, 104, 97, 115, 109, 0 };
+const uint8_t loctxt_45[] = {
+104, 111, 116, 32, 80, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t loctxt_46[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 68, 114, 97, 103, 111, 110, 39, 115, 32, 108, 97, 105, 114, 0 };
+const uint8_t loctxt_47[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_48[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_49[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_50[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_51[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_52[] = {
+84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_53[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 105, 99, 101, 32, 84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_54[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 105, 99, 101, 32, 86, 97, 117, 108, 116, 0 };
+const uint8_t loctxt_55[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 115, 111, 109, 101, 32, 111, 108, 100, 32, 115, 116, 111, 110, 101, 32, 83, 116, 101, 112, 115, 0 };
+const uint8_t loctxt_56[] = {
+114, 111, 99, 107, 32, 104, 101, 119, 110, 32, 84, 101, 109, 112, 108, 101, 0 };
+const uint8_t loctxt_57[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 114, 111, 99, 107, 32, 65, 108, 116, 97, 114, 0 };
+const uint8_t loctxt_58[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 109, 121, 32, 104, 111, 109, 101, 32, 80, 108, 97, 110, 101, 116, 0 };
+const uint8_t loctxt_59[] = {
+42, 73, 32, 116, 104, 105, 110, 107, 32, 73, 32, 98, 108, 101, 119, 32, 105, 116, 32, 33, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 2, 0, 0, 0 } }, 
+               { loctxt_2,  { 3, 0, 10, 0, 0, 0 } }, 
+               { loctxt_3,  { 4, 2, 0, 0, 0, 0 } }, 
+               { loctxt_4,  { 7, 3, 6, 5, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 4, 0, 0, 0 } }, 
+               { loctxt_6,  { 0, 0, 0, 4, 0, 0 } }, 
+               { loctxt_7,  { 43, 4, 0, 0, 0, 0 } }, 
+               { loctxt_8,  { 0, 43, 0, 0, 0, 0 } }, 
+               { loctxt_9,  { 45, 0, 0, 44, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 11, 2, 0, 0 } }, 
+               { loctxt_11,  { 0, 0, 0, 10, 0, 12 } }, 
+               { loctxt_12,  { 13, 0, 0, 0, 11, 0 } }, 
+               { loctxt_13,  { 14, 12, 16, 0, 0, 0 } }, 
+               { loctxt_14,  { 18, 13, 16, 15, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 14, 0, 0, 0 } }, 
+               { loctxt_16,  { 52, 13, 20, 14, 0, 0 } }, 
+               { loctxt_17,  { 0, 15, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 0, 14, 47, 0, 19, 0 } }, 
+               { loctxt_19,  { 0, 0, 0, 0, 0, 18 } }, 
+               { loctxt_20,  { 0, 0, 0, 16, 0, 0 } }, 
+               { loctxt_21,  { 50, 0, 22, 0, 0, 0 } }, 
+               { loctxt_22,  { 0, 0, 23, 21, 0, 0 } }, 
+               { loctxt_23,  { 24, 26, 28, 22, 0, 0 } }, 
+               { loctxt_24,  { 0, 23, 0, 0, 0, 0 } }, 
+               { loctxt_25,  { 0, 24, 0, 0, 0, 0 } }, 
+               { loctxt_26,  { 23, 27, 29, 0, 0, 0 } }, 
+               { loctxt_27,  { 26, 0, 0, 0, 0, 0 } }, 
+               { loctxt_28,  { 0, 0, 0, 23, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 30, 26, 0, 0 } }, 
+               { loctxt_30,  { 0, 31, 32, 29, 0, 0 } }, 
+               { loctxt_31,  { 30, 0, 0, 0, 0, 0 } }, 
+               { loctxt_32,  { 33, 0, 0, 30, 0, 0 } }, 
+               { loctxt_33,  { 0, 32, 0, 0, 0, 0 } }, 
+               { loctxt_34,  { 0, 0, 38, 0, 0, 0 } }, 
+               { loctxt_35,  { 0, 0, 39, 0, 0, 0 } }, 
+               { loctxt_36,  { 0, 0, 40, 0, 0, 0 } }, 
+               { loctxt_37,  { 0, 38, 0, 0, 0, 0 } }, 
+               { loctxt_38,  { 37, 0, 0, 34, 0, 0 } }, 
+               { loctxt_39,  { 0, 0, 0, 35, 0, 0 } }, 
+               { loctxt_40,  { 0, 0, 42, 36, 0, 0 } }, 
+               { loctxt_41,  { 0, 0, 0, 39, 0, 0 } }, 
+               { loctxt_42,  { 0, 0, 0, 40, 0, 0 } }, 
+               { loctxt_43,  { 8, 7, 0, 0, 0, 0 } }, 
+               { loctxt_44,  { 9, 0, 0, 0, 0, 0 } }, 
+               { loctxt_45,  { 0, 9, 46, 0, 0, 0 } }, 
+               { loctxt_46,  { 0, 45, 0, 0, 0, 0 } }, 
+               { loctxt_47,  { 47, 47, 48, 18, 0, 0 } }, 
+               { loctxt_48,  { 48, 51, 49, 47, 0, 0 } }, 
+               { loctxt_49,  { 49, 50, 49, 48, 0, 0 } }, 
+               { loctxt_50,  { 49, 21, 50, 51, 0, 0 } }, 
+               { loctxt_51,  { 48, 51, 50, 52, 0, 0 } }, 
+               { loctxt_52,  { 52, 16, 51, 52, 0, 0 } }, 
+               { loctxt_53,  { 0, 25, 0, 54, 0, 0 } }, 
+               { loctxt_54,  { 0, 0, 53, 0, 0, 0 } }, 
+               { loctxt_55,  { 0, 0, 0, 0, 27, 56 } }, 
+               { loctxt_56,  { 0, 0, 0, 57, 55, 0 } }, 
+               { loctxt_57,  { 0, 0, 56, 0, 0, 0 } }, 
+               { loctxt_58,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_59,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       1,
+       2,
+       2,
+       3,
+       0,
+       5,
+       0,
+       6,
+       0,
+       7,
+       8,
+       0,
+       9,
+       0,
+       11,
+       12,
+       13,
+       14,
+       15,
+       17,
+       0,
+       0,
+       0,
+       19,
+       19,
+       0,
+       20,
+       28,
+       31,
+       33,
+       34,
+       35,
+       36,
+       37,
+       41,
+       42,
+       0,
+       42,
+       0,
+       48,
+       0,
+       0,
+       46,
+       17,
+       0,
+       54,
+       0,
+       0,
+       0,
+       57,
+       24,
+       0,
+       39,
+       0,
+       44,
+       0,
+       0,
+       0,
+       57,
+       10,
+       21,
+       29,
+       23,
+       0,
+       58,
+};
+
+
+const uint8_t objtxt_0[] = {
+32, 0 };
+const uint8_t objtxt_1[] = {
+83, 109, 97, 108, 108, 32, 67, 97, 110, 0 };
+const uint8_t objtxt_2[] = {
+71, 108, 111, 119, 105, 110, 103, 32, 66, 114, 97, 122, 105, 101, 114, 0 };
+const uint8_t objtxt_3[] = {
+83, 116, 117, 100, 100, 101, 100, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_4[] = {
+82, 111, 99, 107, 115, 0 };
+const uint8_t objtxt_5[] = {
+42, 79, 114, 110, 97, 116, 101, 32, 68, 97, 103, 103, 101, 114, 42, 0 };
+const uint8_t objtxt_6[] = {
+67, 114, 101, 118, 105, 99, 101, 0 };
+const uint8_t objtxt_7[] = {
+70, 108, 105, 110, 116, 0 };
+const uint8_t objtxt_8[] = {
+83, 99, 114, 101, 101, 0 };
+const uint8_t objtxt_9[] = {
+76, 73, 84, 32, 108, 97, 109, 112, 0 };
+const uint8_t objtxt_10[] = {
+80, 97, 116, 104, 0 };
+const uint8_t objtxt_11[] = {
+67, 104, 97, 114, 114, 101, 100, 32, 84, 114, 101, 101, 0 };
+const uint8_t objtxt_12[] = {
+77, 101, 116, 97, 108, 32, 98, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_13[] = {
+66, 108, 97, 99, 107, 101, 110, 101, 100, 32, 83, 107, 101, 108, 101, 116, 111, 110, 0 };
+const uint8_t objtxt_14[] = {
+42, 71, 111, 108, 100, 32, 65, 109, 117, 108, 101, 116, 42, 0 };
+const uint8_t objtxt_15[] = {
+87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_16[] = {
+83, 104, 111, 114, 116, 32, 83, 119, 111, 114, 100, 0 };
+const uint8_t objtxt_17[] = {
+42, 76, 97, 114, 103, 101, 32, 82, 117, 98, 121, 42, 0 };
+const uint8_t objtxt_18[] = {
+70, 101, 114, 111, 99, 105, 111, 117, 115, 32, 76, 105, 111, 110, 0 };
+const uint8_t objtxt_19[] = {
+87, 111, 111, 100, 101, 110, 32, 71, 114, 105, 108, 108, 0 };
+const uint8_t objtxt_20[] = {
+76, 105, 111, 110, 115, 0 };
+const uint8_t objtxt_21[] = {
+73, 114, 111, 110, 32, 107, 101, 121, 0 };
+const uint8_t objtxt_22[] = {
+42, 66, 111, 120, 32, 111, 102, 32, 69, 109, 101, 114, 97, 108, 100, 115, 42, 0 };
+const uint8_t objtxt_23[] = {
+42, 83, 105, 108, 118, 101, 114, 32, 67, 104, 97, 108, 105, 99, 101, 42, 0 };
+const uint8_t objtxt_24[] = {
+84, 104, 101, 32, 69, 109, 112, 101, 114, 111, 114, 0 };
+const uint8_t objtxt_25[] = {
+73, 109, 112, 101, 114, 105, 97, 108, 32, 71, 117, 97, 114, 100, 115, 0 };
+const uint8_t objtxt_26[] = {
+42, 73, 120, 105, 111, 110, 32, 83, 104, 105, 101, 108, 100, 42, 0 };
+const uint8_t objtxt_27[] = {
+76, 101, 97, 116, 104, 101, 114, 32, 83, 104, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_28[] = {
+80, 108, 97, 105, 116, 101, 100, 32, 82, 111, 112, 101, 0 };
+const uint8_t objtxt_29[] = {
+82, 117, 115, 116, 121, 32, 76, 97, 109, 112, 0 };
+const uint8_t objtxt_30[] = {
+78, 117, 109, 98, 101, 114, 101, 100, 32, 98, 117, 116, 116, 111, 110, 115, 0 };
+const uint8_t objtxt_31[] = {
+78, 117, 109, 98, 101, 114, 101, 100, 32, 98, 117, 116, 116, 111, 110, 115, 0 };
+const uint8_t objtxt_32[] = {
+78, 117, 109, 98, 101, 114, 101, 100, 32, 98, 117, 116, 116, 111, 110, 115, 0 };
+const uint8_t objtxt_33[] = {
+78, 117, 109, 98, 101, 114, 101, 100, 32, 98, 117, 116, 116, 111, 110, 115, 0 };
+const uint8_t objtxt_34[] = {
+83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_35[] = {
+42, 69, 98, 111, 110, 121, 32, 83, 112, 101, 97, 114, 42, 0 };
+const uint8_t objtxt_36[] = {
+71, 117, 97, 114, 100, 0 };
+const uint8_t objtxt_37[] = {
+42, 67, 114, 121, 115, 116, 97, 108, 32, 83, 99, 105, 109, 105, 116, 97, 114, 42, 0 };
+const uint8_t objtxt_38[] = {
+68, 105, 115, 112, 108, 97, 121, 32, 67, 97, 98, 105, 110, 101, 116, 0 };
+const uint8_t objtxt_39[] = {
+42, 82, 101, 100, 32, 68, 105, 97, 109, 111, 110, 100, 42, 0 };
+const uint8_t objtxt_40[] = {
+71, 108, 97, 100, 105, 97, 116, 111, 114, 0 };
+const uint8_t objtxt_41[] = {
+69, 109, 112, 116, 121, 32, 67, 97, 110, 0 };
+const uint8_t objtxt_42[] = {
+67, 108, 111, 116, 104, 32, 115, 116, 114, 105, 112, 0 };
+const uint8_t objtxt_43[] = {
+70, 105, 114, 101, 45, 98, 114, 101, 97, 116, 104, 105, 110, 103, 32, 68, 114, 97, 103, 111, 110, 0 };
+const uint8_t objtxt_44[] = {
+42, 73, 118, 111, 114, 121, 32, 83, 116, 97, 116, 117, 101, 116, 116, 101, 42, 0 };
+const uint8_t objtxt_45[] = {
+82, 117, 115, 116, 121, 32, 76, 97, 109, 112, 0 };
+const uint8_t objtxt_46[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_47[] = {
+71, 97, 117, 110, 116, 108, 101, 116, 115, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_48[] = {
+83, 116, 111, 110, 101, 32, 83, 108, 97, 98, 0 };
+const uint8_t objtxt_49[] = {
+83, 116, 111, 110, 101, 32, 83, 116, 101, 112, 115, 0 };
+const uint8_t objtxt_50[] = {
+71, 97, 117, 110, 116, 108, 101, 116, 115, 0 };
+const uint8_t objtxt_51[] = {
+73, 99, 101, 32, 67, 97, 118, 101, 0 };
+const uint8_t objtxt_52[] = {
+79, 112, 101, 110, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_53[] = {
+68, 111, 111, 114, 0 };
+const uint8_t objtxt_54[] = {
+79, 112, 101, 110, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_55[] = {
+68, 97, 110, 103, 108, 105, 110, 103, 32, 82, 111, 112, 101, 0 };
+const uint8_t objtxt_56[] = {
+84, 105, 101, 100, 32, 82, 111, 112, 101, 0 };
+const uint8_t objtxt_57[] = {
+66, 108, 97, 99, 107, 32, 75, 101, 121, 0 };
+const uint8_t objtxt_58[] = {
+73, 99, 101, 32, 84, 117, 110, 110, 101, 108, 0 };
+const uint8_t objtxt_59[] = {
+83, 116, 111, 110, 101, 32, 65, 108, 116, 97, 114, 0 };
+const uint8_t objtxt_60[] = {
+86, 97, 103, 117, 101, 32, 83, 104, 97, 112, 101, 115, 0 };
+const uint8_t objtxt_61[] = {
+86, 97, 103, 117, 101, 32, 83, 104, 97, 112, 101, 115, 0 };
+const uint8_t objtxt_62[] = {
+86, 97, 103, 117, 101, 32, 83, 104, 97, 112, 101, 115, 0 };
+const uint8_t objtxt_63[] = {
+72, 117, 116, 115, 0 };
+const uint8_t objtxt_64[] = {
+80, 111, 111, 108, 32, 111, 102, 32, 79, 105, 108, 0 };
+const uint8_t objtxt_65[] = {
+67, 104, 101, 101, 114, 105, 110, 103, 32, 67, 114, 111, 119, 100, 115, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+};
+const uint8_t msgtxt_0[] = {
+32, 0 };
+const uint8_t msgtxt_1[] = {
+32, 0 };
+const uint8_t msgtxt_2[] = {
+70, 69, 65, 83, 73, 66, 73, 76, 73, 84, 89, 32, 69, 88, 80, 69, 82, 73, 77, 69, 78, 84, 0 };
+const uint8_t msgtxt_3[] = {
+66, 121, 32, 66, 46, 72, 111, 119, 97, 114, 116, 104, 32, 38, 32, 87, 46, 66, 97, 114, 110, 101, 115, 0 };
+const uint8_t msgtxt_4[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_5[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 111, 102, 32, 105, 110, 116, 101, 114, 101, 115, 116, 0 };
+const uint8_t msgtxt_6[] = {
+73, 32, 115, 101, 101, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_7[] = {
+84, 114, 121, 32, 69, 88, 65, 77, 105, 110, 105, 110, 103, 32, 116, 104, 105, 110, 103, 115, 33, 0 };
+const uint8_t msgtxt_8[] = {
+72, 111, 119, 63, 0 };
+const uint8_t msgtxt_9[] = {
+84, 111, 32, 119, 104, 101, 114, 101, 63, 0 };
+const uint8_t msgtxt_10[] = {
+65, 116, 32, 119, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_11[] = {
+40, 85, 115, 101, 32, 50, 32, 119, 111, 114, 100, 115, 41, 0 };
+const uint8_t msgtxt_12[] = {
+85, 115, 101, 32, 97, 32, 78, 85, 77, 66, 69, 82, 0 };
+const uint8_t msgtxt_13[] = {
+73, 32, 99, 97, 110, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_14[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_15[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_16[] = {
+73, 116, 39, 115, 32, 108, 111, 99, 107, 101, 100, 0 };
+const uint8_t msgtxt_17[] = {
+73, 116, 39, 115, 32, 111, 112, 101, 110, 0 };
+const uint8_t msgtxt_18[] = {
+84, 105, 109, 101, 32, 112, 97, 115, 115, 101, 115, 46, 46, 46, 46, 0 };
+const uint8_t msgtxt_19[] = {
+83, 97, 121, 115, 59, 0 };
+const uint8_t msgtxt_20[] = {
+42, 84, 82, 69, 65, 83, 85, 82, 69, 42, 32, 83, 116, 111, 114, 101, 0 };
+const uint8_t msgtxt_21[] = {
+65, 32, 115, 111, 102, 116, 32, 118, 111, 105, 99, 101, 32, 119, 104, 105, 115, 112, 101, 114, 115, 32, 45, 0 };
+const uint8_t msgtxt_22[] = {
+85, 108, 116, 105, 109, 97, 116, 101, 32, 87, 97, 114, 114, 105, 111, 114, 44, 32, 0 };
+const uint8_t msgtxt_23[] = {
+71, 97, 116, 104, 101, 114, 32, 116, 104, 101, 32, 42, 84, 114, 101, 97, 115, 117, 114, 101, 115, 42, 32, 111, 102, 32, 111, 117, 114, 0 };
+const uint8_t msgtxt_24[] = {
+65, 110, 99, 105, 101, 110, 116, 32, 67, 117, 108, 116, 117, 114, 101, 32, 111, 114, 32, 119, 101, 32, 97, 114, 101, 32, 68, 79, 79, 77, 69, 68, 33, 0 };
+const uint8_t msgtxt_25[] = {
+80, 104, 101, 119, 32, 33, 32, 72, 101, 97, 118, 121, 33, 0 };
+const uint8_t msgtxt_26[] = {
+73, 116, 32, 108, 111, 111, 107, 115, 32, 109, 101, 99, 104, 97, 110, 105, 99, 97, 108, 0 };
+const uint8_t msgtxt_27[] = {
+73, 116, 39, 115, 32, 118, 97, 110, 105, 115, 104, 101, 100, 33, 0 };
+const uint8_t msgtxt_28[] = {
+105, 115, 32, 117, 115, 101, 108, 101, 115, 115, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_29[] = {
+84, 104, 101, 32, 105, 99, 101, 32, 105, 115, 32, 109, 101, 108, 116, 105, 110, 103, 0 };
+const uint8_t msgtxt_30[] = {
+49, 44, 50, 44, 51, 44, 52, 32, 97, 110, 100, 32, 53, 0 };
+const uint8_t msgtxt_31[] = {
+73, 39, 109, 32, 98, 97, 100, 108, 121, 32, 98, 117, 114, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_32[] = {
+32, 0 };
+const uint8_t msgtxt_33[] = {
+32, 0 };
+const uint8_t msgtxt_34[] = {
+84, 104, 101, 32, 82, 111, 112, 101, 32, 104, 97, 110, 103, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 101, 100, 103, 101, 0 };
+const uint8_t msgtxt_35[] = {
+84, 104, 101, 32, 114, 111, 112, 101, 32, 105, 115, 32, 116, 105, 101, 100, 33, 0 };
+const uint8_t msgtxt_36[] = {
+73, 32, 99, 97, 117, 115, 101, 100, 32, 97, 110, 32, 97, 118, 97, 108, 97, 110, 99, 104, 101, 33, 0 };
+const uint8_t msgtxt_37[] = {
+65, 114, 101, 110, 39, 116, 32, 121, 111, 117, 32, 116, 104, 101, 32, 115, 116, 114, 97, 110, 103, 101, 32, 111, 110, 101, 32, 33, 0 };
+const uint8_t msgtxt_38[] = {
+76, 105, 111, 110, 115, 32, 105, 103, 110, 111, 114, 101, 32, 109, 101, 32, 102, 111, 114, 32, 116, 104, 101, 32, 109, 111, 109, 101, 110, 116, 0 };
+const uint8_t msgtxt_39[] = {
+84, 104, 105, 115, 32, 105, 115, 32, 110, 101, 105, 116, 104, 101, 114, 32, 116, 104, 101, 32, 116, 105, 109, 101, 32, 110, 111, 114, 32, 112, 108, 97, 99, 101, 0 };
+const uint8_t msgtxt_40[] = {
+84, 104, 101, 32, 73, 109, 112, 101, 114, 105, 97, 108, 32, 71, 117, 97, 114, 100, 32, 97, 116, 116, 97, 99, 107, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_41[] = {
+84, 104, 101, 32, 69, 109, 112, 101, 114, 111, 114, 32, 112, 114, 97, 105, 115, 101, 115, 32, 109, 121, 32, 99, 111, 117, 114, 97, 103, 101, 0 };
+const uint8_t msgtxt_42[] = {
+72, 101, 39, 115, 32, 103, 105, 118, 101, 110, 32, 109, 101, 32, 97, 32, 112, 114, 105, 122, 101, 33, 0 };
+const uint8_t msgtxt_43[] = {
+66, 82, 73, 76, 76, 73, 65, 78, 84, 33, 32, 87, 101, 32, 97, 114, 101, 32, 83, 65, 86, 69, 68, 33, 0 };
+const uint8_t msgtxt_44[] = {
+77, 105, 110, 101, 32, 99, 97, 103, 101, 32, 112, 108, 117, 110, 103, 101, 115, 32, 100, 111, 119, 110, 32, 116, 104, 101, 32, 115, 104, 97, 102, 116, 33, 0 };
+const uint8_t msgtxt_45[] = {
+65, 97, 114, 114, 103, 103, 103, 103, 104, 32, 33, 33, 0 };
+const uint8_t msgtxt_46[] = {
+76, 105, 111, 110, 115, 32, 114, 117, 115, 104, 32, 111, 117, 116, 32, 97, 110, 100, 32, 109, 97, 117, 108, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_47[] = {
+97, 32, 112, 114, 105, 100, 101, 32, 111, 102, 32, 76, 105, 111, 110, 115, 0 };
+const uint8_t msgtxt_48[] = {
+32, 0 };
+const uint8_t msgtxt_49[] = {
+71, 108, 97, 100, 105, 97, 116, 111, 114, 32, 116, 104, 114, 111, 119, 115, 32, 109, 101, 32, 100, 111, 119, 110, 32, 97, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t msgtxt_50[] = {
+105, 116, 32, 104, 97, 115, 32, 111, 105, 108, 32, 105, 110, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_51[] = {
+71, 117, 97, 114, 100, 32, 112, 114, 101, 118, 101, 110, 116, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_52[] = {
+76, 105, 111, 110, 32, 114, 105, 112, 115, 32, 109, 101, 32, 97, 112, 97, 114, 116, 33, 0 };
+const uint8_t msgtxt_53[] = {
+70, 105, 101, 114, 121, 32, 98, 114, 101, 97, 116, 104, 32, 119, 97, 115, 104, 101, 115, 32, 111, 118, 101, 114, 32, 109, 101, 0 };
+const uint8_t msgtxt_54[] = {
+76, 97, 110, 103, 117, 97, 103, 101, 0 };
+const uint8_t msgtxt_55[] = {
+76, 111, 111, 107, 115, 32, 118, 97, 108, 117, 97, 98, 108, 101, 0 };
+const uint8_t msgtxt_56[] = {
+105, 116, 39, 115, 32, 118, 101, 114, 121, 32, 104, 111, 116, 0 };
+const uint8_t msgtxt_57[] = {
+73, 116, 39, 115, 32, 101, 110, 103, 114, 97, 118, 101, 100, 32, 83, 84, 82, 73, 75, 69, 32, 72, 69, 82, 69, 0 };
+const uint8_t msgtxt_58[] = {
+72, 85, 82, 82, 89, 45, 68, 79, 32, 78, 79, 84, 32, 70, 65, 73, 76, 33, 0 };
+const uint8_t msgtxt_59[] = {
+65, 77, 46, 46, 46, 84, 32, 46, 78, 46, 32, 46, 73, 65, 46, 46, 46, 68, 0 };
+const uint8_t msgtxt_60[] = {
+97, 32, 119, 111, 114, 110, 32, 105, 110, 115, 99, 114, 105, 112, 116, 105, 111, 110, 0 };
+const uint8_t msgtxt_61[] = {
+105, 116, 115, 32, 119, 105, 99, 107, 32, 105, 115, 32, 109, 105, 115, 115, 105, 110, 103, 0 };
+const uint8_t msgtxt_62[] = {
+87, 104, 121, 63, 0 };
+const uint8_t msgtxt_63[] = {
+105, 116, 32, 115, 116, 114, 105, 107, 101, 115, 32, 115, 112, 97, 114, 107, 115, 0 };
+const uint8_t msgtxt_64[] = {
+73, 116, 39, 115, 32, 76, 101, 97, 116, 104, 101, 114, 0 };
+const uint8_t msgtxt_65[] = {
+105, 116, 39, 115, 32, 98, 117, 114, 110, 116, 32, 97, 116, 32, 111, 110, 101, 32, 101, 110, 100, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       167, 
+       9, 0, 
+       1, 2, 3, 73, 
+/* AUTO  0     */
+       195, 
+       21, 22, 23, 73, 
+/* AUTO  0     */
+       193, 
+       24, 73, 
+/* AUTO  0     */
+       207, 
+       0, 1, 0, 30, 0, 1, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       207, 
+       0, 2, 0, 3, 0, 2, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       207, 
+       0, 3, 0, 4, 0, 3, 
+       81, 79, 81, 67, 
+/* AUTO  100   */
+       170, 
+       4, 17, 0, 2, 
+       81, 77, 73, 
+/* AUTO  0     */
+       198, 
+       19, 0, 
+       45, 102, 61, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+/* AUTO  100   */
+       170, 
+       1, 2, 6, 47, 
+       31, 61, 63, 
+/* AUTO  100   */
+       180, 
+       4, 54, 2, 5, 2, 14, 2, 17, 0, 20, 
+       58, 
+/* AUTO  100   */
+       180, 
+       4, 54, 2, 26, 2, 41, 2, 37, 0, 21, 
+       58, 
+/* AUTO  100   */
+       180, 
+       4, 54, 2, 39, 2, 44, 2, 22, 0, 22, 
+       58, 
+/* AUTO  100   */
+       172, 
+       4, 54, 2, 23, 0, 23, 
+       58, 
+/* AUTO  100   */
+       183, 
+       8, 20, 8, 21, 8, 22, 8, 23, 0, 58, 
+       54, 64, 43, 63, 
+/* AUTO  100   */
+       169, 
+       7, 39, 8, 15, 
+       57, 64, 
+/* AUTO  100   */
+       169, 
+       7, 40, 8, 15, 
+       57, 64, 
+/* AUTO  100   */
+       169, 
+       4, 41, 9, 15, 
+       56, 64, 
+/* AUTO  100   */
+       169, 
+       4, 42, 9, 15, 
+       56, 64, 
+/* AUTO  100   */
+       169, 
+       4, 39, 9, 15, 
+       56, 64, 
+/* AUTO  100   */
+       169, 
+       4, 40, 9, 15, 
+       56, 64, 
+/* AUTO  100   */
+       166, 
+       0, 1, 
+       81, 77, 73, 
+/* AUTO  0     */
+       207, 
+       19, 0, 0, 30, 0, 1, 
+       21, 108, 79, 81, 
+/* AUTO  0     */
+       196, 
+       0, 1, 
+       81, 
+/* AUTO  100   */
+       171, 
+       2, 18, 6, 27, 
+       102, 88, 61, 63, 
+/* AUTO  100   */
+       170, 
+       2, 43, 0, 3, 
+       81, 77, 73, 
+/* AUTO  0     */
+       198, 
+       19, 0, 
+       103, 31, 61, 
+/* AUTO  0     */
+       196, 
+       0, 3, 
+       81, 
+/* AUTO  100   */
+       164, 
+       4, 59, 
+       63, 
+};
+const uint8_t actions[] = {
+/* INVE  ANY   */
+       0, 3, 0, 
+       66, 
+/* PUSH  1     */
+       4, 48, 43, 
+       4, 33, 
+       15, 
+/* PUSH  1     */
+       9, 48, 43, 
+       4, 34, 0, 33, 
+       54, 14, 
+/* PUSH  1     */
+       9, 48, 43, 
+       4, 35, 0, 33, 
+       54, 14, 
+/* PUSH  1     */
+       9, 48, 43, 
+       4, 36, 0, 33, 
+       54, 14, 
+/* PUSH  2     */
+       9, 48, 44, 
+       4, 33, 0, 34, 
+       54, 14, 
+/* PUSH  2     */
+       4, 48, 44, 
+       4, 34, 
+       15, 
+/* PUSH  2     */
+       9, 48, 44, 
+       4, 35, 0, 34, 
+       54, 14, 
+/* PUSH  2     */
+       9, 48, 44, 
+       4, 36, 0, 34, 
+       54, 14, 
+/* PUSH  3     */
+       6, 48, 45, 
+       4, 33, 
+       45, 44, 61, 
+/* PUSH  3     */
+       6, 48, 45, 
+       4, 34, 
+       45, 44, 61, 
+/* PUSH  3     */
+       6, 48, 45, 
+       4, 35, 
+       45, 44, 61, 
+/* PUSH  3     */
+       6, 48, 45, 
+       4, 36, 
+       45, 44, 61, 
+/* PUSH  4     */
+       9, 48, 46, 
+       4, 33, 0, 36, 
+       54, 14, 
+/* PUSH  4     */
+       9, 48, 46, 
+       4, 34, 0, 36, 
+       54, 14, 
+/* PUSH  4     */
+       9, 48, 46, 
+       4, 35, 0, 36, 
+       54, 14, 
+/* PUSH  4     */
+       4, 48, 46, 
+       4, 36, 
+       15, 
+/* PUSH  5     */
+       9, 48, 69, 
+       4, 33, 0, 35, 
+       54, 14, 
+/* PUSH  5     */
+       9, 48, 69, 
+       4, 34, 0, 35, 
+       54, 14, 
+/* PUSH  5     */
+       4, 48, 69, 
+       4, 35, 
+       15, 
+/* PUSH  5     */
+       9, 48, 69, 
+       4, 36, 0, 35, 
+       54, 14, 
+/* PUSH  BUTT  */
+       0, 48, 42, 
+       12, 
+/* EXAM  BUTT  */
+       5, 14, 42, 
+       4, 33, 
+       19, 30, 
+/* EXAM  BUTT  */
+       5, 14, 42, 
+       4, 34, 
+       19, 30, 
+/* EXAM  BUTT  */
+       5, 14, 42, 
+       4, 35, 
+       19, 30, 
+/* EXAM  BUTT  */
+       5, 14, 42, 
+       4, 36, 
+       19, 30, 
+/* GET   ROPE  */
+       9, 10, 40, 
+       2, 28, 0, 28, 
+       52, 4, 
+/* GET   ROPE  */
+       14, 10, 40, 
+       2, 56, 0, 28, 0, 56, 
+       52, 55, 4, 
+/* GET   ROPE  */
+       4, 10, 40, 
+       2, 55, 
+       35, 
+/* DROP  ROPE  */
+       9, 18, 40, 
+       1, 28, 0, 28, 
+       53, 4, 
+/* TIE   ROPE  */
+       5, 51, 40, 
+       1, 28, 
+       9, 11, 
+/* TO    TREE  */
+       23, 22, 17, 
+       1, 28, 4, 8, 0, 28, 0, 56, 0, 28, 
+       53, 72, 4, 34, 
+/* CLIM  ROPE  */
+       9, 52, 40, 
+       2, 56, 0, 44, 
+       54, 4, 
+/* CLIM  ROPE  */
+       9, 52, 40, 
+       2, 55, 0, 8, 
+       54, 4, 
+/* DIG   ANY   */
+       0, 13, 0, 
+       8, 
+/* USE   SHOV  */
+       22, 41, 47, 
+       1, 34, 4, 27, 14, 48, 0, 48, 0, 27, 
+       62, 4, 6, 
+/* MOVE  SLAB  */
+       19, 50, 66, 
+       2, 48, 14, 49, 0, 49, 0, 27, 
+       62, 4, 25, 6, 
+/* USE   SHOV  */
+       22, 41, 47, 
+       4, 4, 1, 34, 14, 22, 0, 22, 0, 4, 
+       62, 4, 6, 
+/* USE   SHOV  */
+       16, 41, 47, 
+       4, 4, 13, 22, 1, 34, 14, 21, 
+       73, 
+/* AUTO  0     */
+       202, 
+       0, 21, 0, 4, 
+       62, 4, 6, 
+/* USE   SHOV  */
+       17, 41, 47, 
+       4, 48, 1, 34, 2, 40, 0, 16, 
+       54, 49, 
+/* USE   SHOV  */
+       16, 41, 47, 
+       4, 48, 1, 34, 5, 40, 14, 57, 
+       73, 
+/* AUTO  0     */
+       202, 
+       0, 57, 0, 48, 
+       62, 4, 6, 
+/* GO    STEP  */
+       9, 1, 73, 
+       2, 49, 0, 55, 
+       54, 4, 
+/* WEAR  GAUN  */
+       13, 55, 72, 
+       1, 50, 0, 50, 0, 47, 
+       72, 4, 
+/* GET   GAUN  */
+       9, 10, 72, 
+       2, 50, 0, 50, 
+       52, 4, 
+/* DROP  GAUN  */
+       9, 18, 72, 
+       1, 50, 0, 50, 
+       53, 4, 
+/* DROP  GAUN  */
+       18, 18, 72, 
+       1, 47, 0, 47, 0, 50, 0, 50, 
+       72, 53, 4, 
+/* GO    CAVE  */
+       9, 1, 75, 
+       2, 51, 0, 25, 
+       54, 4, 
+/* WAIT  ANY   */
+       15, 7, 0, 
+       4, 25, 2, 2, 14, 58, 
+       4, 88, 88, 73, 
+/* AUTO  0     */
+       202, 
+       0, 58, 0, 25, 
+       62, 29, 6, 
+/* WAIT  ANY   */
+       23, 7, 0, 
+       4, 53, 2, 2, 14, 42, 0, 42, 0, 53, 
+       62, 4, 29, 6, 
+/* GET   BRAZ  */
+       13, 10, 8, 
+       2, 2, 1, 47, 0, 2, 
+       52, 4, 
+/* GET   BRAZ  */
+       10, 10, 8, 
+       2, 2, 6, 47, 
+       4, 31, 61, 
+/* DROP  BRAZ  */
+       9, 18, 8, 
+       1, 2, 0, 2, 
+       53, 4, 
+/* GO    TUNN  */
+       9, 1, 76, 
+       2, 58, 0, 53, 
+       54, 4, 
+/* OPEN  DOOR  */
+       21, 28, 9, 
+       2, 3, 1, 21, 14, 52, 0, 3, 0, 52, 
+       72, 4, 
+/* OPEN  DOOR  */
+       21, 28, 9, 
+       2, 53, 1, 57, 14, 54, 0, 53, 0, 54, 
+       72, 4, 
+/* CLOS  DOOR  */
+       0, 30, 9, 
+       8, 
+/* READ  SIGN  */
+       6, 17, 77, 
+       2, 46, 
+       4, 19, 20, 
+/* EXAM  SKEL  */
+       18, 14, 19, 
+       2, 13, 14, 14, 0, 14, 0, 9, 
+       62, 4, 6, 
+/* EXAM  CREV  */
+       18, 14, 12, 
+       2, 6, 14, 7, 0, 7, 0, 5, 
+       62, 4, 6, 
+/* EXAM  SCRE  */
+       6, 14, 14, 
+       2, 8, 
+       4, 36, 61, 
+/* EXAM  ROCK  */
+       18, 14, 10, 
+       2, 4, 14, 5, 0, 5, 0, 3, 
+       62, 4, 6, 
+/* EXAM  TREE  */
+       18, 14, 17, 
+       2, 11, 14, 12, 0, 12, 0, 8, 
+       62, 4, 6, 
+/* EXAM  CAN   */
+       6, 14, 7, 
+       1, 1, 
+       4, 13, 50, 
+/* EMPT  CAN   */
+       23, 34, 7, 
+       1, 1, 0, 1, 0, 41, 0, 64, 0, 64, 
+       4, 72, 74, 53, 
+/* FIX   LAMP  */
+       22, 39, 15, 
+       1, 29, 1, 42, 0, 29, 0, 45, 0, 42, 
+       72, 55, 4, 
+/* FILL  LAMP  */
+       18, 44, 15, 
+       1, 45, 1, 1, 0, 1, 0, 41, 
+       72, 4, 73, 
+/* AUTO  0     */
+       196, 
+       0, 7, 
+       58, 
+/* LIGH  LAMP  */
+       16, 23, 15, 
+       1, 45, 8, 7, 1, 7, 1, 12, 
+       73, 
+/* AUTO  0     */
+       201, 
+       0, 45, 0, 9, 
+       72, 4, 
+/* UNLI  LAMP  */
+       13, 24, 15, 
+       1, 9, 0, 9, 0, 45, 
+       72, 4, 
+/* KILL  GUAR  */
+       14, 26, 35, 
+       2, 36, 1, 5, 0, 36, 
+       55, 4, 27, 
+/* EXAM  CABI  */
+       8, 14, 53, 
+       2, 38, 2, 36, 
+       51, 
+/* EXAM  CABI  */
+       22, 14, 53, 
+       2, 38, 14, 36, 14, 39, 0, 39, 0, 42, 
+       62, 4, 6, 
+/* PRAY  ANY   */
+       16, 43, 0, 
+       4, 57, 14, 37, 1, 14, 1, 39, 
+       73, 
+/* AUTO  0     */
+       202, 
+       0, 37, 0, 57, 
+       62, 4, 6, 
+/* EXAM  EMPE  */
+       9, 14, 33, 
+       2, 24, 13, 18, 
+       40, 61, 
+/* EXAM  EMPE  */
+       23, 14, 33, 
+       2, 24, 14, 18, 14, 26, 0, 26, 0, 19, 
+       62, 4, 41, 42, 
+/* KILL  LION  */
+       18, 26, 25, 
+       2, 18, 1, 27, 1, 37, 0, 18, 
+       55, 4, 27, 
+/* KILL  GLAD  */
+       14, 26, 57, 
+       2, 40, 1, 16, 0, 40, 
+       55, 4, 27, 
+/* KILL  SELF  */
+       1, 26, 70, 
+       4, 61, 
+/* KILL  DRAG  */
+       22, 26, 61, 
+       2, 43, 1, 26, 1, 35, 0, 43, 0, 23, 
+       72, 4, 27, 
+/* WAIT  ANY   */
+       3, 7, 0, 
+       18, 88, 88, 15, 
+/* HELP  ANY   */
+       0, 6, 0, 
+       7, 
+/* QUIT  ANY   */
+       1, 4, 0, 
+       4, 63, 
+/* SAVE  ANY   */
+       1, 8, 0, 
+       4, 71, 
+/* SCOR  ANY   */
+       1, 5, 0, 
+       4, 65, 
+/* FUCK  ANY   */
+       1, 45, 0, 
+       13, 104, 
+/* RAPE  ANY   */
+       0, 47, 0, 
+       37, 
+/* LOOK  ANY   */
+       1, 54, 0, 
+       4, 5, 
+/* EXAM  BRAZ  */
+       5, 14, 8, 
+       3, 2, 
+       13, 106, 
+/* EXAM  DOOR  */
+       5, 14, 9, 
+       2, 3, 
+       4, 16, 
+/* EXAM  DOOR  */
+       5, 14, 9, 
+       2, 52, 
+       4, 17, 
+/* EXAM  DAGG  */
+       4, 14, 11, 
+       3, 5, 
+       105, 
+/* EXAM  WIND  */
+       6, 14, 21, 
+       2, 15, 
+       4, 13, 47, 
+/* EXAM  GRIL  */
+       6, 14, 26, 
+       2, 19, 
+       4, 13, 47, 
+/* OPEN  GRIL  */
+       7, 28, 26, 
+       2, 19, 
+       4, 45, 46, 61, 
+/* EXAM  DOOR  */
+       5, 14, 9, 
+       2, 53, 
+       4, 16, 
+/* GO    DOOR  */
+       9, 1, 9, 
+       2, 52, 0, 1, 
+       54, 4, 
+/* USE   ANY   */
+       1, 41, 0, 
+       84, 28, 
+/* SAY   ANY   */
+       1, 25, 0, 
+       4, 85, 
+/* EXAM  DOOR  */
+       5, 14, 9, 
+       2, 54, 
+       4, 17, 
+/* EXAM  ALTA  */
+       5, 14, 78, 
+       4, 57, 
+       13, 110, 
+/* READ  INSC  */
+       5, 17, 79, 
+       4, 57, 
+       19, 109, 
+/* EXAM  BLOC  */
+       5, 14, 18, 
+       1, 12, 
+       13, 107, 
+/* EXAM  LAMP  */
+       5, 14, 15, 
+       1, 29, 
+       13, 111, 
+/* GO    DOOR  */
+       9, 1, 9, 
+       2, 54, 0, 41, 
+       54, 4, 
+/* GO    WIND  */
+       10, 1, 21, 
+       2, 15, 0, 17, 
+       54, 4, 38, 
+/* EXAM  FLIN  */
+       5, 14, 13, 
+       1, 7, 
+       13, 113, 
+/* EXAM  AMUL  */
+       4, 14, 20, 
+       1, 14, 
+       105, 
+/* EXAM  RUBY  */
+       4, 14, 24, 
+       1, 17, 
+       105, 
+/* EXAM  LION  */
+       4, 14, 25, 
+       2, 18, 
+       26, 
+/* EXAM  EMER  */
+       4, 14, 29, 
+       1, 22, 
+       105, 
+/* EXAM  CHAL  */
+       4, 14, 31, 
+       1, 23, 
+       105, 
+/* EXAM  GUAR  */
+       4, 14, 35, 
+       2, 36, 
+       26, 
+/* EXAM  IXIO  */
+       4, 14, 36, 
+       1, 26, 
+       105, 
+/* EXAM  LEAT  */
+       5, 14, 38, 
+       1, 27, 
+       13, 114, 
+/* EXAM  SPEA  */
+       4, 14, 49, 
+       1, 35, 
+       105, 
+/* EXAM  CRYS  */
+       4, 14, 51, 
+       1, 37, 
+       105, 
+/* EXAM  RED   */
+       4, 14, 55, 
+       1, 39, 
+       105, 
+/* EXAM  GLAD  */
+       4, 14, 57, 
+       2, 40, 
+       26, 
+/* EXAM  CLOT  */
+       5, 14, 58, 
+       1, 42, 
+       13, 115, 
+/* EXAM  DRAG  */
+       4, 14, 61, 
+       2, 43, 
+       26, 
+/* EXAM  STAT  */
+       4, 14, 62, 
+       1, 44, 
+       105, 
+/* EXAM  ANY   */
+       0, 14, 0, 
+       5, 
+/* GO    ANY   */
+       0, 1, 0, 
+       9, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* INVE */
+       73, 78, 86, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* HELP */
+       72, 69, 76, 80,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* AWB */
+       65, 87, 66, 32,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* DIG */
+       68, 73, 71, 32,
+       /* EXAM */
+       69, 88, 65, 77,
+       /* *SEAR */
+       211, 69, 65, 82,
+       /* *INSP */
+       201, 78, 83, 80,
+       /* READ */
+       82, 69, 65, 68,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *DUMP */
+       196, 85, 77, 80,
+       /* AT */
+       65, 84, 32, 32,
+       /* TO */
+       84, 79, 32, 32,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* SAY */
+       83, 65, 89, 32,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* *UNLO */
+       213, 78, 76, 79,
+       /* CLOS */
+       67, 76, 79, 83,
+       /* *LOCK */
+       204, 79, 67, 75,
+       /* CUT */
+       67, 85, 84, 32,
+       /* *CHOP */
+       195, 72, 79, 80,
+       /* EMPT */
+       69, 77, 80, 84,
+       /* *POUR */
+       208, 79, 85, 82,
+       /* EAT */
+       69, 65, 84, 32,
+       /* MAKE */
+       77, 65, 75, 69,
+       /* *BUIL */
+       194, 85, 73, 76,
+       /* FIX */
+       70, 73, 88, 32,
+       /* *REPA */
+       210, 69, 80, 65,
+       /* USE */
+       85, 83, 69, 32,
+       /* *WITH */
+       215, 73, 84, 72,
+       /* PRAY */
+       80, 82, 65, 89,
+       /* FILL */
+       70, 73, 76, 76,
+       /* FUCK */
+       70, 85, 67, 75,
+       /* *PISS */
+       208, 73, 83, 83,
+       /* RAPE */
+       82, 65, 80, 69,
+       /* PUSH */
+       80, 85, 83, 72,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* TIE */
+       84, 73, 69, 32,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* REMO */
+       82, 69, 77, 79,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* WEAR */
+       87, 69, 65, 82,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* CAN */
+       67, 65, 78, 32,
+       /* BRAZ */
+       66, 82, 65, 90,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* ROCK */
+       82, 79, 67, 75,
+       /* DAGG */
+       68, 65, 71, 71,
+       /* CREV */
+       67, 82, 69, 86,
+       /* FLIN */
+       70, 76, 73, 78,
+       /* SCRE */
+       83, 67, 82, 69,
+       /* LAMP */
+       76, 65, 77, 80,
+       /* PATH */
+       80, 65, 84, 72,
+       /* TREE */
+       84, 82, 69, 69,
+       /* BLOC */
+       66, 76, 79, 67,
+       /* SKEL */
+       83, 75, 69, 76,
+       /* AMUL */
+       65, 77, 85, 76,
+       /* WIND */
+       87, 73, 78, 68,
+       /* SHOR */
+       83, 72, 79, 82,
+       /* *SWOR */
+       211, 87, 79, 82,
+       /* RUBY */
+       82, 85, 66, 89,
+       /* LION */
+       76, 73, 79, 78,
+       /* GRIL */
+       71, 82, 73, 76,
+       /* KEY */
+       75, 69, 89, 32,
+       /* *IRON */
+       201, 82, 79, 78,
+       /* EMER */
+       69, 77, 69, 82,
+       /* *BOX */
+       194, 79, 88, 32,
+       /* CHAL */
+       67, 72, 65, 76,
+       /* *SILV */
+       211, 73, 76, 86,
+       /* EMPE */
+       69, 77, 80, 69,
+       /* IMPE */
+       73, 77, 80, 69,
+       /* GUAR */
+       71, 85, 65, 82,
+       /* IXIO */
+       73, 88, 73, 79,
+       /* RULE */
+       82, 85, 76, 69,
+       /* LEAT */
+       76, 69, 65, 84,
+       /* *SHIE */
+       211, 72, 73, 69,
+       /* ROPE */
+       82, 79, 80, 69,
+       /* *PLAI */
+       208, 76, 65, 73,
+       /* BUTT */
+       66, 85, 84, 84,
+       /* 1 */
+       49, 32, 32, 32,
+       /* 2 */
+       50, 32, 32, 32,
+       /* 3 */
+       51, 32, 32, 32,
+       /* 4 */
+       52, 32, 32, 32,
+       /* SHOV */
+       83, 72, 79, 86,
+       /* HUTS */
+       72, 85, 84, 83,
+       /* SPEA */
+       83, 80, 69, 65,
+       /* *EBON */
+       197, 66, 79, 78,
+       /* CRYS */
+       67, 82, 89, 83,
+       /* *SCIM */
+       211, 67, 73, 77,
+       /* CABI */
+       67, 65, 66, 73,
+       /* *DISP */
+       196, 73, 83, 80,
+       /* RED */
+       82, 69, 68, 32,
+       /* *DIAM */
+       196, 73, 65, 77,
+       /* GLAD */
+       71, 76, 65, 68,
+       /* CLOT */
+       67, 76, 79, 84,
+       /* *WICK */
+       215, 73, 67, 75,
+       /* *STRI */
+       211, 84, 82, 73,
+       /* DRAG */
+       68, 82, 65, 71,
+       /* STAT */
+       83, 84, 65, 84,
+       /* *IVOR */
+       201, 86, 79, 82,
+       /* PRAY */
+       80, 82, 65, 89,
+       /* HELL */
+       72, 69, 76, 76,
+       /* SLAB */
+       83, 76, 65, 66,
+       /* STON */
+       83, 84, 79, 78,
+       /* GAME */
+       71, 65, 77, 69,
+       /* 5 */
+       53, 32, 32, 32,
+       /* SELF */
+       83, 69, 76, 70,
+       /* BLAC */
+       66, 76, 65, 67,
+       /* GAUN */
+       71, 65, 85, 78,
+       /* STEP */
+       83, 84, 69, 80,
+       /* ICE */
+       73, 67, 69, 32,
+       /* CAVE */
+       67, 65, 86, 69,
+       /* TUNN */
+       84, 85, 78, 78,
+       /* SIGN */
+       83, 73, 71, 78,
+       /* ALTA */
+       65, 76, 84, 65,
+       /* INSC */
+       73, 78, 83, 67,
+       0,
+};
+const uint8_t automap[] = {
+       /* CAN */
+       67, 65, 78, 32,
+       1,
+       /* DAGG */
+       68, 65, 71, 71,
+       5,
+       /* FLIN */
+       70, 76, 73, 78,
+       7,
+       /* LAMP */
+       76, 65, 77, 80,
+       9,
+       /* BLOC */
+       66, 76, 79, 67,
+       12,
+       /* AMUL */
+       65, 77, 85, 76,
+       14,
+       /* SHOR */
+       83, 72, 79, 82,
+       16,
+       /* RUBY */
+       82, 85, 66, 89,
+       17,
+       /* KEY */
+       75, 69, 89, 32,
+       21,
+       /* EMER */
+       69, 77, 69, 82,
+       22,
+       /* CHAL */
+       67, 72, 65, 76,
+       23,
+       /* IXIO */
+       73, 88, 73, 79,
+       26,
+       /* LEAT */
+       76, 69, 65, 84,
+       27,
+       /* LAMP */
+       76, 65, 77, 80,
+       29,
+       /* SHOV */
+       83, 72, 79, 86,
+       34,
+       /* SPEA */
+       83, 80, 69, 65,
+       35,
+       /* CRYS */
+       67, 82, 89, 83,
+       37,
+       /* RED */
+       82, 69, 68, 32,
+       39,
+       /* CAN */
+       67, 65, 78, 32,
+       41,
+       /* CLOT */
+       67, 76, 79, 84,
+       42,
+       /* STAT */
+       83, 84, 65, 84,
+       44,
+       /* LAMP */
+       76, 65, 77, 80,
+       45,
+       /* BLAC */
+       66, 76, 65, 67,
+       57,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst08.c b/Applications/games/myst08.c
new file mode 100644 (file)
index 0000000..792dbc7
--- /dev/null
@@ -0,0 +1,3027 @@
+#define NUM_OBJ 49
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 7;
+const uint8_t treasures = 4;
+const uint8_t lastloc = 40;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+83, 84, 79, 82, 69, 82, 79, 79, 77, 46, 32, 32, 67, 65, 78, 39, 84, 32, 71, 69, 84, 32, 72, 69, 82, 69, 0 };
+const uint8_t loctxt_1[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 84, 104, 114, 111, 110, 101, 45, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_2[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_3[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_4[] = {
+67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_5[] = {
+80, 114, 105, 110, 99, 101, 115, 115, 39, 32, 66, 101, 100, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_6[] = {
+68, 114, 101, 115, 115, 105, 110, 103, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_7[] = {
+82, 111, 121, 97, 108, 32, 84, 114, 101, 97, 115, 117, 114, 101, 32, 67, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_8[] = {
+80, 97, 108, 97, 99, 101, 32, 67, 111, 114, 114, 105, 100, 111, 114, 0 };
+const uint8_t loctxt_9[] = {
+42, 73, 39, 109, 32, 105, 110, 115, 105, 100, 101, 32, 116, 104, 101, 32, 67, 104, 101, 115, 116, 0 };
+const uint8_t loctxt_10[] = {
+68, 97, 114, 107, 32, 70, 111, 114, 101, 115, 116, 0 };
+const uint8_t loctxt_11[] = {
+116, 97, 108, 108, 32, 84, 114, 101, 101, 116, 111, 112, 0 };
+const uint8_t loctxt_12[] = {
+116, 97, 108, 108, 32, 84, 114, 101, 101, 116, 111, 112, 0 };
+const uint8_t loctxt_13[] = {
+68, 97, 114, 107, 32, 70, 111, 114, 101, 115, 116, 0 };
+const uint8_t loctxt_14[] = {
+99, 97, 118, 101, 32, 101, 110, 116, 114, 97, 110, 99, 101, 0 };
+const uint8_t loctxt_15[] = {
+83, 116, 105, 110, 107, 105, 110, 103, 32, 67, 97, 118, 101, 114, 110, 0 };
+const uint8_t loctxt_16[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 82, 111, 99, 107, 121, 32, 76, 101, 100, 103, 101, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 109, 111, 117, 110, 116, 97, 105, 110, 32, 112, 97, 116, 104, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 82, 97, 103, 105, 110, 103, 32, 84, 111, 114, 114, 101, 110, 116, 0 };
+const uint8_t loctxt_19[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 109, 111, 117, 110, 116, 97, 105, 110, 32, 116, 114, 97, 105, 108, 0 };
+const uint8_t loctxt_20[] = {
+70, 97, 114, 109, 45, 89, 97, 114, 100, 0 };
+const uint8_t loctxt_21[] = {
+76, 97, 114, 103, 101, 32, 72, 101, 110, 32, 72, 111, 117, 115, 101, 0 };
+const uint8_t loctxt_22[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 111, 112, 101, 110, 32, 87, 111, 111, 100, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_23[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 87, 111, 111, 100, 115, 0 };
+const uint8_t loctxt_24[] = {
+78, 97, 114, 114, 111, 119, 32, 116, 117, 110, 110, 101, 108, 32, 98, 121, 32, 97, 32, 83, 104, 97, 102, 116, 0 };
+const uint8_t loctxt_25[] = {
+110, 97, 114, 114, 111, 119, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_26[] = {
+110, 97, 114, 114, 111, 119, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_27[] = {
+110, 97, 114, 114, 111, 119, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_28[] = {
+110, 97, 114, 114, 111, 119, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_29[] = {
+86, 97, 117, 108, 116, 101, 100, 32, 99, 104, 97, 109, 98, 101, 114, 32, 98, 121, 32, 97, 32, 87, 101, 108, 108, 45, 83, 104, 97, 102, 116, 0 };
+const uint8_t loctxt_30[] = {
+76, 105, 98, 114, 97, 114, 121, 0 };
+const uint8_t loctxt_31[] = {
+83, 116, 117, 100, 121, 32, 119, 105, 116, 104, 32, 97, 32, 100, 111, 111, 114, 32, 105, 110, 32, 110, 111, 114, 116, 104, 32, 87, 97, 108, 108, 0 };
+const uint8_t loctxt_32[] = {
+42, 73, 116, 39, 115, 32, 116, 104, 101, 32, 87, 105, 122, 97, 114, 100, 39, 115, 32, 76, 97, 105, 114, 0 };
+const uint8_t loctxt_33[] = {
+68, 85, 83, 84, 66, 73, 78, 0 };
+const uint8_t loctxt_34[] = {
+110, 97, 114, 114, 111, 119, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_35[] = {
+83, 109, 101, 108, 108, 121, 32, 99, 97, 118, 101, 0 };
+const uint8_t loctxt_36[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 97, 32, 68, 101, 97, 100, 45, 69, 110, 100, 0 };
+const uint8_t loctxt_37[] = {
+110, 97, 114, 114, 111, 119, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_38[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 111, 112, 101, 110, 32, 87, 111, 111, 100, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_39[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 111, 112, 101, 110, 32, 87, 111, 111, 100, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_40[] = {
+42, 65, 108, 108, 32, 108, 105, 118, 101, 100, 32, 104, 97, 112, 112, 105, 108, 121, 46, 46, 121, 111, 117, 39, 114, 101, 32, 106, 111, 107, 105, 110, 103, 32, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 2, 6, 0, 0 } }, 
+               { loctxt_2,  { 3, 2, 2, 8, 0, 0 } }, 
+               { loctxt_3,  { 0, 1, 8, 4, 0, 0 } }, 
+               { loctxt_4,  { 3, 1, 3, 5, 5, 0 } }, 
+               { loctxt_5,  { 0, 0, 0, 0, 0, 4 } }, 
+               { loctxt_6,  { 0, 0, 1, 0, 0, 0 } }, 
+               { loctxt_7,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_8,  { 2, 0, 3, 2, 0, 0 } }, 
+               { loctxt_9,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_10,  { 10, 10, 13, 10, 0, 0 } }, 
+               { loctxt_11,  { 0, 0, 0, 0, 0, 10 } }, 
+               { loctxt_12,  { 0, 0, 0, 0, 0, 13 } }, 
+               { loctxt_13,  { 13, 14, 13, 10, 0, 0 } }, 
+               { loctxt_14,  { 13, 15, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 14, 0, 0, 35, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 37, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 18, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_19,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 19, 0, 0, 0, 0, 0 } }, 
+               { loctxt_21,  { 20, 0, 0, 0, 0, 0 } }, 
+               { loctxt_22,  { 21, 39, 23, 38, 0, 0 } }, 
+               { loctxt_23,  { 22, 0, 0, 0, 0, 0 } }, 
+               { loctxt_24,  { 0, 0, 0, 23, 0, 27 } }, 
+               { loctxt_25,  { 26, 28, 25, 25, 0, 0 } }, 
+               { loctxt_26,  { 27, 25, 27, 26, 0, 0 } }, 
+               { loctxt_27,  { 26, 37, 26, 26, 0, 0 } }, 
+               { loctxt_28,  { 27, 34, 28, 25, 0, 0 } }, 
+               { loctxt_29,  { 0, 0, 30, 0, 0, 27 } }, 
+               { loctxt_30,  { 31, 0, 0, 29, 0, 0 } }, 
+               { loctxt_31,  { 0, 30, 0, 0, 0, 0 } }, 
+               { loctxt_32,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_33,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_34,  { 26, 37, 25, 28, 0, 0 } }, 
+               { loctxt_35,  { 36, 0, 15, 0, 0, 0 } }, 
+               { loctxt_36,  { 0, 35, 0, 0, 0, 0 } }, 
+               { loctxt_37,  { 27, 34, 37, 16, 0, 0 } }, 
+               { loctxt_38,  { 39, 38, 22, 39, 0, 0 } }, 
+               { loctxt_39,  { 22, 38, 38, 38, 0, 0 } }, 
+               { loctxt_40,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       0,
+       7,
+       0,
+       0,
+       0,
+       0,
+       0,
+       1,
+       0,
+       2,
+       6,
+       4,
+       5,
+       17,
+       18,
+       18,
+       18,
+       20,
+       21,
+       22,
+       22,
+       23,
+       23,
+       10,
+       30,
+       0,
+       0,
+       0,
+       0,
+       8,
+       0,
+       15,
+       0,
+       12,
+       0,
+       0,
+       19,
+       0,
+       0,
+       19,
+       20,
+       0,
+       0,
+       0,
+       32,
+       31,
+       0,
+       7,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+32, 0 };
+const uint8_t objtxt_1[] = {
+65, 32, 82, 117, 98, 121, 32, 82, 111, 100, 0 };
+const uint8_t objtxt_2[] = {
+83, 73, 71, 78, 32, 42, 32, 84, 114, 101, 97, 115, 117, 114, 101, 32, 105, 115, 32, 83, 97, 102, 101, 32, 72, 101, 114, 101, 32, 42, 0 };
+const uint8_t objtxt_3[] = {
+42, 71, 111, 108, 100, 101, 110, 32, 83, 99, 101, 112, 116, 114, 101, 42, 0 };
+const uint8_t objtxt_4[] = {
+67, 111, 110, 116, 101, 110, 116, 101, 100, 32, 67, 104, 105, 99, 107, 101, 110, 115, 32, 105, 110, 32, 78, 101, 115, 116, 32, 66, 111, 120, 101, 115, 0 };
+const uint8_t objtxt_5[] = {
+73, 114, 111, 110, 32, 75, 101, 121, 0 };
+const uint8_t objtxt_6[] = {
+84, 114, 97, 112, 100, 111, 111, 114, 32, 105, 110, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_7[] = {
+73, 114, 111, 110, 45, 98, 111, 117, 110, 100, 32, 87, 97, 110, 100, 0 };
+const uint8_t objtxt_8[] = {
+84, 104, 101, 32, 75, 105, 110, 103, 32, 108, 111, 111, 107, 105, 110, 103, 32, 100, 105, 115, 116, 114, 97, 117, 103, 104, 116, 0 };
+const uint8_t objtxt_9[] = {
+83, 112, 101, 99, 116, 97, 99, 108, 101, 115, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_10[] = {
+79, 105, 108, 45, 80, 97, 105, 110, 116, 105, 110, 103, 0 };
+const uint8_t objtxt_11[] = {
+83, 116, 114, 97, 110, 103, 101, 32, 83, 112, 101, 99, 116, 97, 99, 108, 101, 115, 0 };
+const uint8_t objtxt_12[] = {
+83, 116, 97, 105, 114, 99, 97, 115, 101, 0 };
+const uint8_t objtxt_13[] = {
+83, 104, 101, 101, 112, 115, 107, 105, 110, 32, 82, 117, 103, 0 };
+const uint8_t objtxt_14[] = {
+67, 104, 105, 99, 107, 101, 110, 0 };
+const uint8_t objtxt_15[] = {
+72, 117, 110, 103, 114, 121, 45, 108, 111, 111, 107, 105, 110, 103, 32, 70, 111, 120, 0 };
+const uint8_t objtxt_16[] = {
+66, 97, 103, 32, 111, 102, 32, 67, 111, 114, 110, 0 };
+const uint8_t objtxt_17[] = {
+82, 105, 99, 107, 101, 116, 121, 32, 66, 114, 105, 100, 103, 101, 0 };
+const uint8_t objtxt_18[] = {
+65, 32, 70, 97, 114, 109, 101, 114, 32, 40, 99, 111, 117, 110, 116, 105, 110, 103, 32, 104, 105, 115, 32, 67, 104, 105, 99, 107, 101, 110, 115, 41, 0 };
+const uint8_t objtxt_19[] = {
+70, 108, 111, 99, 107, 32, 111, 102, 32, 104, 117, 110, 103, 114, 121, 32, 67, 104, 105, 99, 107, 101, 110, 115, 0 };
+const uint8_t objtxt_20[] = {
+72, 117, 110, 116, 101, 114, 115, 0 };
+const uint8_t objtxt_21[] = {
+66, 97, 121, 105, 110, 103, 32, 104, 111, 117, 110, 100, 115, 0 };
+const uint8_t objtxt_22[] = {
+86, 105, 120, 101, 110, 0 };
+const uint8_t objtxt_23[] = {
+70, 111, 120, 99, 117, 98, 115, 0 };
+const uint8_t objtxt_24[] = {
+83, 104, 111, 118, 101, 108, 0 };
+const uint8_t objtxt_25[] = {
+65, 110, 32, 65, 110, 99, 105, 101, 110, 116, 32, 66, 111, 111, 107, 0 };
+const uint8_t objtxt_26[] = {
+83, 116, 114, 105, 112, 32, 111, 102, 32, 80, 97, 114, 99, 104, 109, 101, 110, 116, 0 };
+const uint8_t objtxt_27[] = {
+42, 74, 101, 119, 101, 108, 108, 101, 100, 32, 79, 114, 98, 42, 0 };
+const uint8_t objtxt_28[] = {
+65, 110, 32, 111, 114, 110, 97, 116, 101, 32, 69, 108, 118, 105, 115, 104, 32, 83, 119, 111, 114, 100, 0 };
+const uint8_t objtxt_29[] = {
+65, 32, 102, 105, 110, 101, 32, 99, 104, 97, 105, 110, 0 };
+const uint8_t objtxt_30[] = {
+65, 32, 76, 111, 99, 107, 101, 100, 32, 67, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_31[] = {
+65, 32, 76, 105, 110, 101, 110, 32, 67, 104, 101, 115, 116, 0 };
+const uint8_t objtxt_32[] = {
+65, 32, 82, 101, 112, 117, 108, 115, 105, 118, 101, 32, 83, 108, 105, 109, 121, 32, 71, 111, 98, 108, 105, 110, 0 };
+const uint8_t objtxt_33[] = {
+65, 32, 110, 97, 114, 114, 111, 119, 32, 116, 117, 110, 110, 101, 108, 0 };
+const uint8_t objtxt_34[] = {
+82, 97, 118, 101, 110, 39, 115, 32, 78, 101, 115, 116, 0 };
+const uint8_t objtxt_35[] = {
+65, 32, 115, 109, 97, 108, 108, 32, 100, 111, 111, 114, 32, 40, 110, 111, 119, 32, 118, 105, 115, 105, 98, 108, 101, 41, 0 };
+const uint8_t objtxt_36[] = {
+42, 84, 104, 101, 32, 66, 101, 97, 117, 116, 105, 102, 117, 108, 32, 80, 114, 105, 110, 99, 101, 115, 115, 42, 0 };
+const uint8_t objtxt_37[] = {
+65, 32, 82, 105, 99, 107, 101, 116, 121, 32, 66, 114, 105, 100, 103, 101, 0 };
+const uint8_t objtxt_38[] = {
+65, 32, 83, 116, 101, 101, 112, 32, 112, 97, 116, 104, 0 };
+const uint8_t objtxt_39[] = {
+65, 32, 72, 97, 112, 112, 121, 32, 70, 97, 114, 109, 101, 114, 0 };
+const uint8_t objtxt_40[] = {
+65, 32, 108, 97, 114, 103, 101, 32, 114, 111, 99, 107, 32, 98, 108, 111, 99, 107, 105, 110, 103, 32, 116, 104, 101, 32, 112, 97, 116, 104, 0 };
+const uint8_t objtxt_41[] = {
+65, 32, 108, 97, 114, 103, 101, 32, 104, 101, 110, 32, 104, 111, 117, 115, 101, 0 };
+const uint8_t objtxt_42[] = {
+84, 101, 114, 114, 105, 102, 105, 101, 100, 32, 67, 104, 105, 99, 107, 101, 110, 115, 32, 40, 116, 104, 101, 121, 32, 115, 101, 101, 32, 116, 104, 101, 32, 70, 111, 120, 41, 0 };
+const uint8_t objtxt_43[] = {
+79, 112, 101, 110, 32, 84, 114, 97, 112, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_44[] = {
+42, 82, 111, 121, 97, 108, 32, 67, 114, 111, 119, 110, 42, 0 };
+const uint8_t objtxt_45[] = {
+69, 118, 105, 108, 32, 65, 107, 121, 114, 122, 32, 40, 72, 117, 114, 116, 105, 110, 103, 32, 116, 104, 101, 32, 80, 114, 105, 110, 99, 101, 115, 115, 41, 0 };
+const uint8_t objtxt_46[] = {
+65, 32, 77, 101, 110, 97, 99, 105, 110, 103, 32, 83, 116, 111, 110, 101, 32, 84, 114, 111, 108, 108, 0 };
+const uint8_t objtxt_47[] = {
+83, 99, 111, 114, 99, 104, 101, 100, 32, 83, 116, 97, 116, 117, 101, 32, 111, 102, 32, 97, 32, 84, 114, 111, 108, 108, 0 };
+const uint8_t objtxt_48[] = {
+82, 101, 103, 97, 108, 105, 97, 32, 115, 99, 97, 116, 116, 101, 114, 101, 100, 32, 97, 108, 108, 32, 97, 114, 111, 117, 110, 100, 0 };
+const uint8_t objtxt_49[] = {
+84, 104, 101, 32, 71, 114, 97, 116, 101, 102, 117, 108, 32, 75, 105, 110, 103, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+};
+const uint8_t msgtxt_0[] = {
+40, 99, 41, 32, 49, 57, 56, 51, 32, 66, 46, 72, 111, 119, 97, 114, 116, 104, 32, 38, 32, 67, 46, 74, 46, 32, 79, 103, 100, 101, 110, 0 };
+const uint8_t msgtxt_1[] = {
+84, 104, 101, 32, 75, 105, 110, 103, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_2[] = {
+39, 83, 97, 118, 101, 32, 116, 104, 101, 32, 80, 114, 105, 110, 99, 101, 115, 115, 32, 38, 32, 102, 105, 110, 100, 32, 116, 104, 101, 32, 74, 101, 119, 101, 108, 115, 0 };
+const uint8_t msgtxt_3[] = {
+73, 32, 104, 105, 100, 32, 116, 104, 101, 32, 112, 97, 114, 99, 104, 109, 101, 110, 116, 32, 105, 110, 32, 116, 104, 101, 32, 98, 111, 111, 107, 33, 0 };
+const uint8_t msgtxt_4[] = {
+89, 111, 117, 114, 32, 114, 101, 119, 97, 114, 100, 32, 119, 105, 108, 108, 32, 98, 101, 32, 32, 80, 114, 105, 99, 101, 108, 101, 115, 115, 33, 34, 0 };
+const uint8_t msgtxt_5[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_6[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 109, 105, 115, 115, 105, 110, 103, 0 };
+const uint8_t msgtxt_7[] = {
+84, 104, 101, 32, 115, 105, 100, 101, 115, 32, 97, 114, 101, 32, 108, 111, 111, 115, 101, 0 };
+const uint8_t msgtxt_8[] = {
+73, 116, 32, 104, 97, 110, 103, 115, 32, 98, 121, 32, 97, 32, 102, 105, 110, 101, 32, 99, 104, 97, 105, 110, 0 };
+const uint8_t msgtxt_9[] = {
+73, 116, 39, 115, 32, 69, 109, 112, 116, 121, 0 };
+const uint8_t msgtxt_10[] = {
+65, 32, 118, 111, 105, 99, 101, 0 };
+const uint8_t msgtxt_11[] = {
+115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_12[] = {
+34, 82, 65, 86, 69, 78, 83, 32, 71, 117, 97, 114, 100, 32, 116, 104, 101, 32, 84, 114, 101, 97, 115, 117, 114, 101, 115, 34, 0 };
+const uint8_t msgtxt_13[] = {
+73, 116, 39, 115, 32, 116, 111, 111, 32, 115, 109, 97, 108, 108, 33, 0 };
+const uint8_t msgtxt_14[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_15[] = {
+73, 32, 99, 97, 110, 32, 115, 101, 101, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_16[] = {
+83, 108, 97, 118, 101, 114, 105, 110, 103, 32, 84, 114, 111, 108, 108, 32, 112, 114, 111, 99, 101, 101, 100, 115, 32, 116, 111, 32, 101, 97, 116, 32, 77, 69, 33, 0 };
+const uint8_t msgtxt_17[] = {
+84, 114, 111, 108, 108, 32, 103, 114, 105, 109, 97, 99, 101, 115, 46, 46, 97, 110, 100, 32, 98, 97, 114, 115, 32, 116, 104, 101, 32, 119, 97, 121, 0 };
+const uint8_t msgtxt_18[] = {
+73, 116, 39, 115, 32, 79, 112, 101, 110, 0 };
+const uint8_t msgtxt_19[] = {
+73, 116, 39, 115, 32, 76, 111, 99, 107, 101, 100, 0 };
+const uint8_t msgtxt_20[] = {
+85, 117, 117, 103, 103, 104, 46, 46, 73, 32, 99, 97, 110, 32, 106, 117, 115, 116, 32, 115, 113, 117, 101, 101, 122, 101, 32, 98, 121, 32, 116, 104, 101, 32, 84, 114, 111, 108, 108, 0 };
+const uint8_t msgtxt_21[] = {
+65, 32, 84, 97, 112, 101, 115, 116, 114, 121, 32, 104, 97, 110, 103, 115, 32, 111, 110, 32, 116, 104, 101, 32, 119, 97, 108, 108, 0 };
+const uint8_t msgtxt_22[] = {
+67, 104, 97, 105, 110, 32, 99, 108, 105, 112, 115, 32, 110, 101, 97, 116, 108, 121, 32, 111, 110, 32, 115, 112, 101, 99, 115, 33, 0 };
+const uint8_t msgtxt_23[] = {
+76, 105, 103, 104, 116, 32, 105, 115, 32, 66, 108, 105, 110, 100, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_24[] = {
+84, 104, 101, 121, 32, 109, 117, 115, 116, 32, 98, 101, 32, 115, 112, 101, 99, 105, 97, 108, 32, 115, 112, 101, 99, 115, 33, 0 };
+const uint8_t msgtxt_25[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 115, 105, 99, 107, 101, 110, 105, 110, 103, 32, 99, 114, 117, 110, 99, 104, 32, 111, 102, 32, 103, 108, 97, 115, 115, 33, 0 };
+const uint8_t msgtxt_26[] = {
+89, 111, 117, 39, 114, 101, 32, 97, 32, 66, 108, 111, 111, 100, 116, 104, 105, 114, 115, 116, 121, 32, 68, 101, 118, 105, 108, 32, 97, 114, 101, 110, 39, 116, 32, 121, 111, 117, 33, 0 };
+const uint8_t msgtxt_27[] = {
+73, 32, 99, 97, 110, 32, 115, 101, 101, 32, 101, 118, 101, 114, 121, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_28[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 108, 111, 117, 100, 32, 34, 67, 108, 105, 99, 107, 34, 32, 110, 101, 97, 114, 98, 121, 33, 0 };
+const uint8_t msgtxt_29[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 110, 101, 115, 116, 32, 105, 110, 32, 116, 104, 101, 32, 110, 101, 120, 116, 32, 116, 114, 101, 101, 33, 0 };
+const uint8_t msgtxt_30[] = {
+68, 101, 108, 105, 99, 105, 111, 117, 115, 33, 32, 84, 104, 97, 110, 107, 115, 0 };
+const uint8_t msgtxt_31[] = {
+73, 32, 75, 105, 108, 108, 101, 100, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_32[] = {
+85, 103, 104, 33, 32, 89, 111, 117, 39, 114, 101, 32, 78, 97, 117, 115, 101, 97, 116, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_33[] = {
+84, 104, 101, 32, 83, 119, 111, 114, 100, 32, 103, 108, 111, 119, 115, 32, 70, 105, 101, 114, 99, 101, 108, 121, 33, 0 };
+const uint8_t msgtxt_34[] = {
+82, 117, 98, 121, 32, 82, 111, 100, 32, 118, 97, 110, 105, 115, 104, 101, 115, 32, 105, 110, 116, 111, 32, 83, 119, 111, 114, 100, 32, 104, 105, 108, 116, 33, 0 };
+const uint8_t msgtxt_35[] = {
+84, 104, 101, 32, 83, 119, 111, 114, 100, 32, 108, 97, 99, 107, 115, 32, 116, 104, 101, 32, 80, 111, 119, 101, 114, 33, 0 };
+const uint8_t msgtxt_36[] = {
+83, 119, 111, 114, 100, 32, 69, 114, 117, 112, 116, 115, 32, 105, 110, 116, 111, 32, 66, 114, 105, 108, 108, 105, 97, 110, 116, 32, 87, 104, 105, 116, 101, 32, 70, 105, 114, 101, 33, 0 };
+const uint8_t msgtxt_37[] = {
+73, 32, 99, 97, 110, 32, 104, 101, 97, 114, 32, 87, 97, 118, 101, 115, 33, 0 };
+const uint8_t msgtxt_38[] = {
+70, 111, 120, 32, 101, 97, 116, 115, 32, 67, 104, 105, 99, 107, 101, 110, 33, 0 };
+const uint8_t msgtxt_39[] = {
+67, 104, 105, 99, 107, 101, 110, 32, 101, 97, 116, 115, 32, 67, 111, 114, 110, 33, 0 };
+const uint8_t msgtxt_40[] = {
+72, 101, 32, 108, 101, 97, 100, 115, 32, 109, 101, 32, 105, 110, 116, 111, 32, 97, 32, 99, 111, 110, 99, 101, 97, 108, 101, 100, 32, 99, 97, 118, 101, 0 };
+const uint8_t msgtxt_41[] = {
+83, 110, 97, 114, 108, 105, 110, 103, 32, 72, 111, 117, 110, 100, 115, 32, 112, 114, 101, 118, 101, 110, 116, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_42[] = {
+72, 101, 32, 103, 105, 118, 101, 115, 32, 109, 101, 32, 97, 110, 32, 73, 114, 111, 110, 98, 111, 117, 110, 100, 32, 83, 116, 97, 102, 102, 0 };
+const uint8_t msgtxt_43[] = {
+73, 32, 99, 97, 110, 32, 111, 110, 108, 121, 32, 116, 97, 107, 101, 32, 111, 110, 101, 32, 97, 116, 32, 97, 32, 116, 105, 109, 101, 33, 0 };
+const uint8_t msgtxt_44[] = {
+72, 117, 110, 116, 101, 114, 32, 115, 97, 121, 115, 32, 39, 87, 101, 39, 118, 101, 32, 108, 111, 115, 116, 32, 116, 104, 101, 32, 115, 99, 101, 110, 116, 33, 39, 0 };
+const uint8_t msgtxt_45[] = {
+70, 111, 120, 32, 102, 108, 101, 101, 115, 32, 119, 105, 116, 104, 32, 72, 117, 110, 116, 32, 105, 110, 32, 102, 117, 108, 108, 32, 67, 114, 121, 46, 46, 0 };
+const uint8_t msgtxt_46[] = {
+70, 111, 120, 32, 116, 114, 111, 116, 115, 32, 97, 119, 97, 121, 44, 32, 115, 105, 116, 115, 32, 97, 110, 100, 32, 108, 111, 111, 107, 115, 32, 97, 116, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_47[] = {
+76, 97, 117, 103, 104, 115, 32, 104, 111, 114, 114, 105, 98, 108, 121, 46, 46, 84, 104, 101, 110, 32, 116, 101, 97, 114, 115, 32, 109, 101, 32, 97, 112, 97, 114, 116, 33, 0 };
+const uint8_t msgtxt_48[] = {
+116, 104, 101, 110, 32, 100, 105, 115, 97, 112, 112, 101, 97, 114, 115, 32, 105, 110, 116, 111, 32, 104, 105, 115, 32, 68, 101, 110, 0 };
+const uint8_t msgtxt_49[] = {
+73, 39, 109, 32, 102, 108, 111, 97, 116, 105, 110, 103, 32, 117, 112, 32, 116, 104, 101, 32, 83, 104, 97, 102, 116, 33, 0 };
+const uint8_t msgtxt_50[] = {
+77, 117, 115, 116, 32, 98, 101, 32, 116, 104, 101, 32, 87, 105, 122, 97, 114, 100, 39, 115, 32, 87, 97, 110, 100, 33, 0 };
+const uint8_t msgtxt_51[] = {
+65, 32, 115, 116, 114, 105, 112, 32, 111, 102, 32, 112, 97, 112, 101, 114, 32, 102, 108, 105, 101, 115, 32, 105, 110, 116, 111, 32, 109, 121, 32, 104, 97, 110, 100, 33, 0 };
+const uint8_t msgtxt_52[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 77, 89, 83, 84, 69, 82, 73, 79, 85, 83, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 32, 78, 111, 46, 32, 56, 0 };
+const uint8_t msgtxt_53[] = {
+98, 121, 32, 66, 114, 105, 97, 110, 32, 72, 111, 119, 97, 114, 116, 104, 32, 38, 32, 67, 108, 105, 102, 102, 32, 79, 103, 100, 101, 110, 32, 40, 67, 41, 32, 49, 57, 56, 51, 0 };
+const uint8_t msgtxt_54[] = {
+84, 97, 107, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 97, 116, 32, 102, 97, 99, 101, 32, 118, 97, 108, 117, 101, 33, 0 };
+const uint8_t msgtxt_55[] = {
+73, 116, 39, 115, 32, 97, 32, 112, 111, 114, 116, 114, 97, 105, 116, 32, 111, 102, 32, 116, 104, 101, 32, 80, 114, 105, 110, 99, 101, 115, 115, 0 };
+const uint8_t msgtxt_56[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 102, 105, 110, 101, 32, 104, 97, 110, 103, 105, 110, 103, 45, 99, 104, 97, 105, 110, 0 };
+const uint8_t msgtxt_57[] = {
+89, 111, 117, 32, 104, 97, 118, 101, 110, 39, 116, 32, 109, 117, 99, 104, 32, 116, 105, 109, 101, 32, 108, 101, 102, 116, 33, 0 };
+const uint8_t msgtxt_58[] = {
+84, 104, 101, 32, 98, 97, 99, 107, 32, 111, 102, 32, 116, 104, 101, 32, 67, 104, 101, 115, 116, 32, 83, 110, 97, 112, 115, 32, 111, 112, 101, 110, 33, 0 };
+const uint8_t msgtxt_59[] = {
+73, 39, 109, 32, 114, 111, 108, 108, 105, 110, 103, 32, 100, 111, 119, 110, 32, 97, 32, 112, 97, 115, 115, 97, 103, 101, 33, 0 };
+const uint8_t msgtxt_60[] = {
+84, 104, 101, 32, 83, 112, 101, 99, 116, 97, 99, 108, 101, 115, 32, 104, 97, 118, 101, 32, 102, 97, 108, 108, 101, 110, 32, 111, 102, 102, 33, 0 };
+const uint8_t msgtxt_61[] = {
+79, 104, 104, 104, 104, 33, 32, 77, 121, 32, 72, 101, 97, 100, 33, 46, 46, 46, 87, 104, 101, 114, 101, 32, 97, 109, 32, 73, 63, 0 };
+const uint8_t msgtxt_62[] = {
+84, 104, 101, 32, 108, 111, 97, 116, 104, 115, 111, 109, 101, 32, 67, 114, 101, 97, 116, 117, 114, 101, 0 };
+const uint8_t msgtxt_63[] = {
+116, 101, 97, 114, 115, 32, 109, 121, 32, 116, 104, 114, 111, 97, 116, 32, 111, 117, 116, 33, 33, 0 };
+const uint8_t msgtxt_64[] = {
+100, 101, 99, 97, 121, 115, 32, 105, 110, 116, 111, 32, 97, 32, 80, 117, 116, 114, 105, 100, 32, 71, 114, 101, 101, 110, 32, 83, 108, 105, 109, 101, 33, 0 };
+const uint8_t msgtxt_65[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 72, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_66[] = {
+73, 116, 32, 119, 97, 115, 32, 97, 32, 103, 111, 111, 100, 32, 73, 100, 101, 97, 44, 32, 98, 117, 116, 46, 46, 46, 0 };
+const uint8_t msgtxt_67[] = {
+73, 116, 39, 115, 32, 98, 101, 101, 110, 32, 97, 110, 116, 105, 99, 105, 112, 97, 116, 101, 100, 33, 0 };
+const uint8_t msgtxt_68[] = {
+67, 104, 105, 99, 107, 101, 110, 32, 102, 108, 97, 112, 115, 32, 97, 119, 97, 121, 0 };
+const uint8_t msgtxt_69[] = {
+97, 110, 100, 32, 114, 117, 115, 104, 101, 115, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 72, 101, 110, 45, 67, 97, 98, 105, 110, 33, 0 };
+const uint8_t msgtxt_70[] = {
+73, 32, 99, 97, 110, 39, 116, 33, 32, 73, 116, 39, 115, 32, 106, 97, 109, 109, 101, 100, 32, 115, 111, 108, 105, 100, 33, 0 };
+const uint8_t msgtxt_71[] = {
+73, 32, 109, 117, 115, 116, 32, 104, 97, 118, 101, 32, 108, 111, 111, 115, 101, 110, 101, 100, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_72[] = {
+73, 116, 32, 99, 114, 97, 115, 104, 101, 115, 32, 111, 102, 102, 32, 116, 104, 101, 32, 108, 101, 100, 103, 101, 33, 0 };
+const uint8_t msgtxt_73[] = {
+70, 97, 114, 109, 101, 114, 32, 116, 104, 97, 110, 107, 115, 32, 109, 101, 0 };
+const uint8_t msgtxt_74[] = {
+73, 114, 97, 116, 101, 32, 70, 97, 114, 109, 101, 114, 32, 121, 101, 108, 108, 115, 32, 39, 67, 104, 105, 99, 107, 101, 110, 32, 116, 104, 105, 101, 102, 32, 69, 104, 63, 39, 0 };
+const uint8_t msgtxt_75[] = {
+84, 104, 101, 110, 32, 104, 101, 32, 107, 110, 111, 99, 107, 115, 32, 109, 101, 32, 111, 117, 116, 32, 67, 79, 76, 68, 33, 0 };
+const uint8_t msgtxt_76[] = {
+73, 32, 104, 97, 118, 101, 32, 110, 111, 32, 119, 101, 97, 112, 111, 110, 115, 33, 0 };
+const uint8_t msgtxt_77[] = {
+73, 39, 118, 101, 32, 103, 111, 116, 32, 97, 32, 34, 70, 111, 120, 32, 105, 110, 32, 83, 104, 101, 101, 112, 39, 115, 32, 99, 108, 111, 116, 104, 105, 110, 103, 33, 34, 0 };
+const uint8_t msgtxt_78[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 104, 97, 118, 101, 32, 97, 32, 107, 101, 121, 0 };
+const uint8_t msgtxt_79[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 104, 97, 118, 101, 32, 97, 32, 87, 97, 110, 100, 33, 0 };
+const uint8_t msgtxt_80[] = {
+84, 104, 111, 117, 32, 97, 114, 116, 32, 97, 32, 70, 111, 117, 108, 32, 77, 111, 117, 116, 104, 101, 100, 32, 75, 110, 97, 118, 101, 33, 0 };
+const uint8_t msgtxt_81[] = {
+86, 105, 120, 101, 110, 32, 103, 117, 101, 115, 115, 101, 115, 32, 109, 121, 32, 105, 110, 116, 101, 110, 116, 105, 111, 110, 0 };
+const uint8_t msgtxt_82[] = {
+97, 110, 100, 32, 115, 99, 117, 114, 114, 105, 101, 115, 32, 97, 119, 97, 121, 32, 119, 105, 116, 104, 32, 104, 101, 114, 32, 67, 117, 98, 115, 33, 0 };
+const uint8_t msgtxt_83[] = {
+84, 104, 101, 32, 70, 111, 120, 32, 108, 111, 111, 107, 115, 32, 97, 116, 32, 109, 101, 32, 115, 99, 111, 114, 110, 102, 117, 108, 108, 121, 33, 46, 46, 46, 46, 0 };
+const uint8_t msgtxt_84[] = {
+72, 117, 110, 116, 101, 114, 115, 32, 97, 116, 116, 97, 99, 107, 32, 109, 101, 32, 97, 110, 103, 114, 105, 108, 121, 33, 0 };
+const uint8_t msgtxt_85[] = {
+34, 46, 46, 46, 32, 116, 111, 32, 97, 118, 111, 105, 100, 32, 99, 101, 114, 116, 97, 105, 110, 32, 68, 101, 97, 116, 104, 32, 121, 111, 117, 32, 109, 117, 115, 116, 0 };
+const uint8_t msgtxt_86[] = {
+80, 97, 115, 115, 32, 116, 104, 101, 32, 82, 117, 110, 101, 115, 32, 116, 111, 32, 116, 104, 101, 32, 69, 118, 105, 108, 32, 79, 110, 101, 0 };
+const uint8_t msgtxt_87[] = {
+98, 101, 102, 111, 114, 101, 32, 121, 111, 117, 114, 32, 81, 117, 101, 115, 116, 32, 105, 115, 32, 101, 110, 100, 101, 100, 33, 34, 0 };
+const uint8_t msgtxt_88[] = {
+73, 116, 32, 105, 115, 32, 117, 110, 100, 101, 99, 105, 112, 104, 101, 114, 97, 98, 108, 101, 0 };
+const uint8_t msgtxt_89[] = {
+84, 104, 101, 32, 87, 105, 122, 97, 114, 100, 32, 103, 114, 97, 98, 115, 32, 116, 104, 101, 32, 98, 111, 111, 107, 32, 40, 97, 110, 100, 32, 82, 117, 110, 101, 115, 41, 0 };
+const uint8_t msgtxt_90[] = {
+67, 117, 114, 115, 101, 115, 32, 109, 101, 44, 32, 116, 104, 101, 110, 32, 102, 108, 101, 101, 115, 32, 102, 114, 111, 109, 32, 97, 32, 72, 117, 103, 101, 32, 68, 101, 109, 111, 110, 0 };
+const uint8_t msgtxt_91[] = {
+40, 72, 105, 100, 101, 32, 39, 101, 109, 32, 105, 110, 32, 116, 104, 101, 32, 66, 111, 111, 107, 33, 41, 0 };
+const uint8_t msgtxt_92[] = {
+80, 97, 114, 99, 104, 109, 101, 110, 116, 32, 119, 111, 110, 39, 116, 32, 108, 101, 97, 118, 101, 32, 109, 121, 32, 104, 97, 110, 100, 33, 0 };
+const uint8_t msgtxt_93[] = {
+73, 116, 32, 104, 97, 115, 32, 115, 116, 114, 97, 110, 103, 101, 32, 82, 117, 110, 101, 115, 33, 32, 105, 116, 32, 102, 101, 101, 108, 115, 32, 65, 76, 73, 86, 69, 33, 0 };
+const uint8_t msgtxt_94[] = {
+84, 104, 101, 32, 87, 105, 122, 97, 114, 100, 39, 115, 32, 80, 111, 119, 101, 114, 32, 105, 115, 32, 110, 111, 32, 109, 111, 114, 101, 33, 0 };
+const uint8_t msgtxt_95[] = {
+84, 104, 101, 32, 80, 114, 105, 110, 99, 101, 115, 115, 32, 105, 115, 32, 70, 114, 101, 101, 33, 0 };
+const uint8_t msgtxt_96[] = {
+87, 105, 122, 97, 114, 100, 32, 115, 97, 121, 115, 32, 39, 73, 110, 32, 51, 32, 109, 111, 118, 101, 115, 32, 121, 111, 117, 32, 100, 105, 101, 33, 39, 0 };
+const uint8_t msgtxt_97[] = {
+84, 105, 109, 101, 39, 115, 32, 117, 112, 32, 77, 111, 110, 115, 116, 114, 111, 117, 115, 32, 68, 101, 109, 111, 110, 32, 97, 112, 112, 101, 97, 114, 115, 0 };
+const uint8_t msgtxt_98[] = {
+89, 111, 117, 32, 83, 117, 99, 99, 101, 101, 100, 101, 100, 32, 77, 65, 83, 84, 69, 82, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 82, 33, 0 };
+const uint8_t msgtxt_99[] = {
+39, 81, 85, 69, 83, 84, 79, 82, 39, 32, 105, 115, 32, 121, 111, 117, 114, 32, 114, 101, 119, 97, 114, 100, 32, 82, 101, 109, 101, 109, 98, 101, 114, 32, 105, 116, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+       msgtxt_92,
+       msgtxt_93,
+       msgtxt_94,
+       msgtxt_95,
+       msgtxt_96,
+       msgtxt_97,
+       msgtxt_98,
+       msgtxt_99,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       166, 
+       9, 1, 
+       102, 103, 73, 
+/* AUTO  0     */
+       199, 
+       0, 1, 
+       58, 1, 2, 4, 
+/* AUTO  0     */
+/* AUTO  100   */
+       182, 
+       8, 3, 17, 30, 0, 30, 0, 31, 0, 8, 
+       55, 62, 28, 
+/* AUTO  100   */
+       165, 
+       4, 25, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 26, 
+       56, 64, 
+/* AUTO  100   */
+       168, 
+       4, 22, 13, 20, 
+       44, 
+/* AUTO  100   */
+       178, 
+       6, 14, 6, 15, 6, 16, 0, 5, 
+       81, 79, 73, 
+/* AUTO  0     */
+       196, 
+       0, 5, 
+       81, 
+/* AUTO  100   */
+       182, 
+       7, 32, 7, 7, 0, 7, 0, 4, 0, 7, 
+       81, 79, 81, 
+/* AUTO  100   */
+       175, 
+       2, 45, 4, 32, 0, 7, 
+       81, 77, 0, 73, 
+/* AUTO  0     */
+       199, 
+       19, 0, 
+       147, 47, 61, 63, 
+/* AUTO  0     */
+       197, 
+       0, 7, 
+       81, 107, 
+/* AUTO  100   */
+       180, 
+       18, 16, 18, 14, 18, 15, 4, 19, 0, 7, 
+       58, 
+/* AUTO  100   */
+       177, 
+       4, 26, 1, 14, 0, 14, 0, 17, 
+       62, 73, 
+/* AUTO  0     */
+       206, 
+       0, 5, 0, 1, 0, 5, 
+       81, 83, 81, 
+/* AUTO  100   */
+       182, 
+       4, 26, 8, 8, 0, 8, 0, 14, 0, 17, 
+       60, 62, 111, 
+/* AUTO  100   */
+       172, 
+       4, 14, 1, 28, 13, 32, 
+       33, 
+/* AUTO  100   */
+       172, 
+       4, 35, 1, 28, 13, 32, 
+       33, 
+/* AUTO  100   */
+       165, 
+       4, 16, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 37, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 29, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 15, 
+       56, 64, 
+/* AUTO  100   */
+       178, 
+       6, 9, 0, 1, 0, 3, 0, 1, 
+       81, 79, 81, 
+/* AUTO  100   */
+       174, 
+       1, 9, 9, 4, 0, 1, 
+       81, 77, 73, 
+/* AUTO  0     */
+       207, 
+       19, 0, 0, 9, 0, 11, 
+       55, 53, 110, 73, 
+/* AUTO  0     */
+       197, 
+       0, 1, 
+       81, 64, 
+/* AUTO  50    */
+       133, 50, 
+       4, 11, 
+       15, 29, 
+/* AUTO  100   */
+       165, 
+       4, 40, 
+       0, 63, 
+/* AUTO  30    */
+       135, 30, 
+       2, 32, 
+       88, 112, 113, 73, 
+/* AUTO  0     */
+       195, 
+       88, 61, 88, 63, 
+/* AUTO  100   */
+       168, 
+       9, 15, 1, 9, 
+       23, 
+/* AUTO  100   */
+       165, 
+       4, 14, 
+       57, 64, 
+/* AUTO  100   */
+       164, 
+       4, 24, 
+       37, 
+/* AUTO  100   */
+       168, 
+       4, 23, 2, 15, 
+       46, 
+/* AUTO  100   */
+       181, 
+       7, 23, 0, 22, 0, 23, 0, 23, 0, 23, 
+       62, 62, 
+/* AUTO  100   */
+       169, 
+       4, 27, 0, 15, 
+       56, 64, 
+/* AUTO  100   */
+       183, 
+       4, 7, 2, 36, 2, 27, 2, 3, 2, 44, 
+       0, 0, 0, 73, 
+/* AUTO  0     */
+       203, 
+       0, 49, 0, 49, 
+       74, 53, 64, 86, 
+/* AUTO  0     */
+       195, 
+       1, 148, 149, 63, 
+/* AUTO  100   */
+       181, 
+       8, 11, 7, 23, 0, 15, 0, 23, 0, 11, 
+       62, 60, 
+};
+const uint8_t actions[] = {
+/* GET   FOX   */
+       19, 10, 33, 
+       4, 23, 2, 15, 0, 15, 0, 11, 
+       55, 58, 133, 48, 
+/* KILL  TROL  */
+       13, 29, 72, 
+       2, 46, 1, 28, 9, 13, 
+       35, 6, 
+/* AUTO  0     */
+/* DROP  SPEC  */
+       18, 18, 14, 
+       1, 9, 0, 9, 0, 9, 0, 11, 
+       53, 72, 5, 
+/* DROP  SPEC  */
+       9, 18, 14, 
+       1, 11, 0, 11, 
+       53, 5, 
+/* GET   CHAI  */
+       23, 10, 10, 
+       9, 2, 3, 10, 0, 29, 0, 29, 0, 2, 
+       53, 52, 58, 5, 
+/* GET   PAIN  */
+       13, 10, 8, 
+       2, 10, 8, 3, 0, 10, 
+       52, 105, 
+/* OPEN  CHES  */
+       9, 27, 12, 
+       4, 8, 2, 31, 
+       0, 18, 
+/* LOOK  CHES  */
+       4, 23, 12, 
+       2, 31, 
+       9, 
+/* LOOK  PAIN  */
+       8, 23, 8, 
+       1, 10, 8, 2, 
+       105, 
+/* LOOK  PAIN  */
+       9, 23, 8, 
+       1, 10, 9, 2, 
+       105, 8, 
+/* SAVE  ANY   */
+       0, 4, 0, 
+       71, 
+/* GO    CHES  */
+       11, 1, 12, 
+       2, 31, 0, 9, 
+       54, 108, 109, 73, 
+/* AUTO  0     */
+       199, 
+       0, 10, 
+       88, 88, 54, 64, 
+/* GET   SPEC  */
+       17, 10, 14, 
+       9, 15, 2, 11, 9, 4, 0, 11, 
+       52, 7, 
+/* REMO  SPEC  */
+       14, 15, 14, 
+       1, 9, 0, 11, 0, 9, 
+       72, 5, 64, 
+/* KILL  GOBL  */
+       19, 29, 16, 
+       2, 32, 1, 28, 0, 32, 0, 5, 
+       72, 31, 112, 114, 
+/* KILL  GOBL  */
+       4, 29, 16, 
+       6, 28, 
+       126, 
+/* EAT   CORN  */
+       19, 33, 31, 
+       1, 16, 0, 5, 0, 1, 0, 5, 
+       81, 83, 81, 73, 
+/* AUTO  0     */
+       197, 
+       0, 16, 
+       55, 30, 
+/* INVE  ANY   */
+       0, 5, 0, 
+       66, 
+/* WEAR  SPEC  */
+       23, 13, 14, 
+       1, 11, 8, 15, 0, 9, 0, 11, 0, 9, 
+       72, 74, 27, 24, 
+/* WEAR  SPEC  */
+       22, 13, 14, 
+       1, 11, 9, 15, 0, 9, 0, 11, 0, 9, 
+       72, 74, 24, 
+/* FIT   CHAI  */
+       22, 41, 10, 
+       1, 9, 1, 29, 0, 29, 0, 33, 0, 4, 
+       62, 58, 22, 
+/* FIT   CHAI  */
+       23, 41, 10, 
+       1, 11, 1, 29, 0, 29, 0, 33, 0, 4, 
+       62, 58, 0, 22, 
+/* GET   SPEC  */
+       17, 10, 14, 
+       2, 11, 9, 15, 8, 4, 0, 11, 
+       52, 106, 
+/* GET   SWOR  */
+       13, 10, 7, 
+       2, 28, 9, 13, 0, 28, 
+       52, 6, 
+/* GET   SWOR  */
+       13, 10, 7, 
+       2, 28, 8, 13, 0, 28, 
+       52, 33, 
+/* LOOK  SWOR  */
+       8, 23, 7, 
+       1, 28, 9, 13, 
+       6, 
+/* LOOK  SWOR  */
+       8, 23, 7, 
+       1, 28, 8, 13, 
+       33, 
+/* GET   PAIN  */
+       23, 10, 8, 
+       2, 10, 9, 2, 0, 10, 9, 3, 0, 3, 
+       52, 105, 8, 58, 
+/* GET   PAIN  */
+       22, 10, 8, 
+       2, 10, 8, 2, 9, 3, 0, 10, 0, 3, 
+       52, 58, 105, 
+/* GET   SPEC  */
+       13, 10, 14, 
+       8, 15, 2, 11, 0, 11, 
+       55, 25, 
+/* GET   CHAI  */
+       13, 10, 10, 
+       2, 29, 8, 2, 0, 29, 
+       52, 5, 
+/* EAT   ANY   */
+       0, 33, 0, 
+       32, 
+/* DIG   ANY   */
+       23, 62, 0, 
+       4, 36, 14, 3, 1, 24, 0, 3, 0, 36, 
+       62, 10, 11, 12, 
+/* DIG   ANY   */
+       17, 62, 0, 
+       4, 36, 13, 3, 1, 24, 0, 33, 
+       15, 53, 
+/* DIG   ANY   */
+       13, 62, 0, 
+       1, 24, 13, 33, 13, 44, 
+       5, 14, 
+/* GO    TUNN  */
+       9, 1, 41, 
+       2, 33, 0, 25, 
+       54, 64, 
+/* LOOK  NEST  */
+       14, 23, 37, 
+       4, 12, 14, 27, 0, 27, 
+       15, 53, 12, 
+/* LOOK  KING  */
+       7, 23, 18, 
+       4, 1, 
+       1, 2, 0, 4, 
+/* SAY   RAVE  */
+       13, 43, 13, 
+       7, 7, 7, 18, 7, 19, 
+       85, 73, 
+/* AUTO  0     */
+       201, 
+       0, 1, 0, 7, 
+       87, 54, 
+/* SAY   RAVE  */
+       10, 43, 13, 
+       4, 7, 0, 1, 
+       87, 85, 64, 
+/* DIG   ANY   */
+       18, 62, 0, 
+       4, 34, 1, 24, 14, 44, 0, 44, 
+       53, 15, 12, 
+/* QUIT  ANY   */
+       0, 3, 0, 
+       63, 
+/* GO    NEST  */
+       4, 1, 37, 
+       4, 12, 
+       13, 
+/* JUMP  ANY   */
+       8, 38, 0, 
+       4, 16, 0, 17, 
+       54, 
+/* GET   CHIC  */
+       23, 10, 43, 
+       2, 14, 0, 5, 0, 1, 0, 5, 0, 14, 
+       81, 82, 81, 52, 
+/* GET   FOX   */
+       23, 10, 33, 
+       2, 15, 0, 5, 0, 1, 0, 5, 0, 15, 
+       81, 82, 81, 52, 
+/* GET   CORN  */
+       23, 10, 31, 
+       2, 16, 0, 5, 0, 1, 0, 5, 0, 16, 
+       81, 82, 81, 52, 
+/* DROP  CHIC  */
+       23, 18, 43, 
+       1, 14, 7, 20, 0, 5, 0, 1, 0, 5, 
+       81, 83, 81, 73, 
+/* AUTO  0     */
+       196, 
+       0, 14, 
+       53, 
+/* DROP  FOX   */
+       21, 18, 33, 
+       1, 15, 7, 21, 7, 22, 7, 7, 0, 15, 
+       53, 73, 
+/* AUTO  0     */
+       211, 
+       0, 8, 0, 5, 0, 1, 0, 5, 
+       60, 81, 83, 81, 
+/* DROP  CORN  */
+       23, 18, 31, 
+       1, 16, 0, 5, 0, 1, 0, 5, 0, 16, 
+       81, 83, 81, 53, 
+/* GO    BRID  */
+       23, 1, 34, 
+       4, 18, 2, 14, 2, 15, 2, 16, 0, 16, 
+       55, 39, 38, 73, 
+/* AUTO  0     */
+       202, 
+       0, 14, 0, 19, 
+       55, 54, 64, 
+/* GO    BRID  */
+       23, 1, 34, 
+       4, 18, 2, 14, 2, 15, 0, 14, 0, 19, 
+       55, 54, 64, 38, 
+/* GO    BRID  */
+       23, 1, 34, 
+       4, 18, 2, 14, 2, 16, 0, 16, 0, 19, 
+       55, 54, 64, 39, 
+/* GO    BRID  */
+       9, 1, 34, 
+       4, 18, 0, 5, 
+       81, 73, 
+/* AUTO  0     */
+       204, 
+       15, 1, 0, 19, 0, 19, 
+       54, 
+/* AUTO  0     */
+       196, 
+       16, 1, 
+       43, 
+/* AUTO  0     */
+       196, 
+       0, 5, 
+       81, 
+/* SAY   RAVE  */
+       11, 43, 13, 
+       1, 14, 7, 20, 
+       85, 115, 116, 117, 
+/* GO    PATH  */
+       12, 1, 35, 
+       4, 19, 2, 38, 0, 20, 
+       54, 
+/* SAY   RAVE  */
+       7, 43, 13, 
+       4, 18, 
+       85, 115, 116, 117, 
+/* SAY   RAVE  */
+       7, 43, 13, 
+       4, 19, 
+       85, 115, 116, 117, 
+/* GO    BRID  */
+       23, 1, 34, 
+       4, 19, 2, 14, 2, 15, 2, 16, 0, 16, 
+       55, 39, 38, 73, 
+/* AUTO  0     */
+       202, 
+       0, 14, 0, 18, 
+       55, 54, 64, 
+/* GO    BRID  */
+       23, 1, 34, 
+       4, 19, 2, 14, 2, 15, 0, 14, 0, 18, 
+       55, 54, 64, 38, 
+/* GO    BRID  */
+       23, 1, 34, 
+       4, 19, 2, 14, 2, 16, 0, 16, 0, 18, 
+       55, 54, 64, 39, 
+/* GO    BRID  */
+       9, 1, 34, 
+       4, 19, 0, 5, 
+       81, 73, 
+/* AUTO  0     */
+       201, 
+       15, 1, 0, 18, 
+       54, 64, 
+/* AUTO  0     */
+       196, 
+       16, 1, 
+       43, 
+/* AUTO  0     */
+       196, 
+       0, 5, 
+       81, 
+/* MOVE  ROCK  */
+       8, 57, 63, 
+       4, 19, 9, 7, 
+       120, 
+/* MOVE  ROCK  */
+       19, 57, 63, 
+       4, 19, 8, 7, 0, 38, 0, 40, 
+       72, 121, 122, 15, 
+/* DROP  CHIC  */
+       19, 18, 43, 
+       1, 14, 4, 20, 0, 14, 0, 7, 
+       72, 118, 119, 73, 
+/* AUTO  0     */
+       211, 
+       0, 5, 0, 1, 0, 5, 0, 8, 
+       81, 83, 81, 60, 
+/* AUTO  0     */
+       207, 
+       0, 18, 0, 39, 0, 7, 
+       72, 74, 123, 42, 
+/* WAVE  WAND  */
+       19, 35, 55, 
+       1, 7, 7, 24, 7, 29, 6, 26, 
+       10, 11, 2, 137, 
+/* GO    HEN   */
+       21, 1, 64, 
+       4, 20, 13, 7, 9, 8, 1, 15, 0, 43, 
+       55, 73, 
+/* AUTO  0     */
+       215, 
+       0, 6, 0, 4, 0, 19, 0, 42, 0, 21, 
+       55, 55, 55, 62, 
+/* AUTO  0     */
+       201, 
+       0, 21, 0, 9, 
+       54, 58, 
+/* GO    HEN   */
+       20, 1, 64, 
+       4, 20, 13, 7, 8, 8, 8, 9, 9, 10, 
+       73, 
+/* AUTO  0     */
+       210, 
+       0, 42, 0, 19, 0, 21, 0, 9, 
+       72, 54, 60, 
+/* GO    HEN   */
+       20, 1, 64, 
+       4, 20, 13, 7, 9, 8, 8, 9, 9, 10, 
+       73, 
+/* AUTO  0     */
+       210, 
+       0, 42, 0, 19, 0, 21, 0, 9, 
+       72, 54, 60, 
+/* GO    HEN   */
+       20, 1, 64, 
+       4, 20, 13, 7, 9, 8, 8, 9, 8, 10, 
+       73, 
+/* AUTO  0     */
+       214, 
+       0, 42, 0, 4, 0, 9, 0, 6, 0, 21, 
+       72, 60, 62, 
+/* AUTO  0     */
+       196, 
+       0, 21, 
+       54, 
+/* GO    HEN   */
+       20, 1, 64, 
+       4, 20, 13, 7, 8, 8, 8, 9, 8, 10, 
+       73, 
+/* AUTO  0     */
+       214, 
+       0, 42, 0, 4, 0, 9, 0, 6, 0, 21, 
+       72, 60, 62, 
+/* AUTO  0     */
+       196, 
+       0, 21, 
+       54, 
+/* GO    HEN   */
+       20, 1, 64, 
+       4, 20, 13, 7, 9, 8, 9, 9, 6, 15, 
+       73, 
+/* AUTO  0     */
+       196, 
+       0, 21, 
+       54, 
+/* DROP  RUG   */
+       22, 18, 26, 
+       8, 8, 7, 21, 7, 7, 0, 8, 0, 13, 
+       60, 53, 5, 
+/* DROP  RUG   */
+       12, 18, 26, 
+       9, 8, 7, 21, 0, 13, 
+       53, 
+/* GO    HEN   */
+       16, 1, 64, 
+       4, 20, 13, 7, 8, 8, 0, 21, 
+       54, 
+/* GO    HEN   */
+       11, 1, 64, 
+       4, 20, 14, 7, 
+       124, 125, 88, 73, 
+/* AUTO  0     */
+       203, 
+       0, 8, 0, 26, 
+       58, 88, 54, 64, 
+/* RUB   ANY   */
+       5, 36, 0, 
+       10, 0, 
+       5, 115, 
+/* SCOR  ANY   */
+       0, 6, 0, 
+       65, 
+/* WRAP  FOX   */
+       17, 63, 33, 
+       1, 15, 1, 13, 7, 21, 0, 8, 
+       58, 127, 
+/* FEED  CHIC  */
+       23, 56, 43, 
+       2, 19, 1, 16, 0, 19, 0, 4, 0, 6, 
+       72, 53, 15, 73, 
+/* AUTO  0     */
+       205, 
+       0, 16, 0, 33, 0, 10, 
+       62, 58, 
+/* AUTO  0     */
+       206, 
+       0, 5, 0, 1, 0, 5, 
+       81, 83, 81, 
+/* OPEN  DOOR  */
+       19, 27, 66, 
+       2, 6, 1, 5, 0, 6, 0, 43, 
+       72, 5, 0, 18, 
+/* OPEN  DOOR  */
+       10, 27, 66, 
+       2, 6, 6, 5, 
+       0, 19, 128, 
+/* GO    DOOR  */
+       11, 1, 66, 
+       2, 43, 0, 22, 
+       109, 0, 88, 54, 
+/* WAVE  WAND  */
+       14, 35, 55, 
+       4, 24, 1, 7, 0, 29, 
+       54, 49, 50, 
+/* DROP  FOX   */
+       23, 18, 33, 
+       4, 22, 1, 15, 0, 15, 0, 20, 0, 21, 
+       55, 55, 55, 73, 
+/* AUTO  0     */
+       193, 
+       64, 45, 
+/* FOLL  FOX   */
+       19, 55, 33, 
+       4, 23, 2, 15, 0, 15, 0, 24, 
+       53, 54, 40, 48, 
+/* WAVE  WAND  */
+       15, 35, 55, 
+       1, 26, 1, 7, 7, 29, 
+       10, 11, 136, 141, 
+/* WAVE  WAND  */
+       4, 35, 55, 
+       6, 7, 
+       129, 
+/* GO    WELL  */
+       9, 1, 68, 
+       4, 29, 0, 27, 
+       54, 64, 
+/* GET   VIXE  */
+       15, 10, 61, 
+       2, 22, 0, 22, 0, 23, 
+       55, 55, 131, 132, 
+/* GET   CUB   */
+       15, 10, 47, 
+       2, 22, 0, 22, 0, 23, 
+       55, 55, 131, 132, 
+/* KILL  VIXE  */
+       15, 29, 61, 
+       2, 22, 0, 22, 0, 23, 
+       55, 55, 131, 132, 
+/* KILL  CUB   */
+       15, 29, 47, 
+       2, 22, 0, 22, 0, 23, 
+       55, 55, 131, 132, 
+/* GET   CUB   */
+       15, 10, 47, 
+       2, 22, 0, 22, 0, 23, 
+       55, 55, 131, 132, 
+/* GET   HUNT  */
+       8, 10, 46, 
+       4, 22, 13, 20, 
+       41, 
+/* KILL  HUNT  */
+       8, 29, 46, 
+       4, 22, 13, 21, 
+       41, 
+/* GET   HOUN  */
+       8, 10, 71, 
+       4, 22, 13, 21, 
+       134, 
+/* KILL  HOUN  */
+       8, 29, 71, 
+       4, 22, 13, 21, 
+       134, 
+/* GET   BOOK  */
+       19, 10, 70, 
+       2, 25, 14, 26, 0, 25, 0, 26, 
+       52, 74, 5, 51, 
+/* GET   BOOK  */
+       13, 10, 70, 
+       2, 25, 13, 26, 0, 25, 
+       52, 5, 
+/* READ  BOOK  */
+       6, 40, 70, 
+       1, 25, 
+       135, 136, 137, 
+/* READ  PARC  */
+       4, 40, 48, 
+       1, 26, 
+       138, 
+/* DROP  BOOK  */
+       23, 18, 70, 
+       2, 45, 1, 25, 8, 12, 0, 25, 0, 26, 
+       55, 55, 139, 73, 
+/* AUTO  0     */
+       207, 
+       0, 45, 0, 36, 0, 35, 
+       72, 53, 140, 144, 
+/* AUTO  0     */
+       192, 
+       145, 
+/* LOOK  NEST  */
+       18, 23, 37, 
+       4, 21, 2, 4, 14, 1, 0, 1, 
+       53, 5, 15, 
+/* FUCK  ANY   */
+       0, 49, 0, 
+       130, 
+/* LOOK  STAI  */
+       4, 23, 24, 
+       4, 4, 
+       21, 
+/* WAVE  WAND  */
+       15, 35, 55, 
+       4, 29, 1, 7, 0, 24, 
+       50, 88, 54, 64, 
+/* WRAP  PARC  */
+       14, 63, 48, 
+       1, 25, 1, 26, 0, 12, 
+       58, 5, 3, 
+/* DROP  BOOK  */
+       18, 18, 70, 
+       8, 12, 5, 45, 0, 12, 0, 25, 
+       60, 53, 5, 
+/* DROP  BOOK  */
+       9, 18, 70, 
+       9, 12, 0, 25, 
+       53, 5, 
+/* DROP  PARC  */
+       0, 18, 48, 
+       142, 
+/* CLIM  TREE  */
+       8, 17, 28, 
+       4, 10, 0, 11, 
+       54, 
+/* CLIM  TREE  */
+       8, 17, 28, 
+       4, 13, 0, 12, 
+       54, 
+/* FIT   RUBY  */
+       23, 41, 29, 
+       1, 28, 1, 1, 0, 13, 0, 1, 0, 33, 
+       58, 62, 34, 33, 
+/* KILL  TROL  */
+       23, 29, 72, 
+       2, 46, 1, 28, 8, 13, 0, 46, 0, 47, 
+       72, 36, 23, 31, 
+/* GO    DOOR  */
+       4, 1, 66, 
+       2, 46, 
+       17, 
+/* GO    DOOR  */
+       15, 1, 66, 
+       2, 47, 14, 36, 0, 32, 
+       20, 88, 54, 146, 
+/* GO    DOOR  */
+       15, 1, 66, 
+       2, 47, 13, 36, 0, 32, 
+       20, 88, 54, 64, 
+/* LOOK  TAPE  */
+       13, 23, 22, 
+       4, 4, 14, 28, 0, 28, 
+       53, 15, 
+/* GO    DOOR  */
+       9, 1, 66, 
+       2, 35, 0, 31, 
+       54, 64, 
+/* LOOK  PARC  */
+       4, 23, 48, 
+       1, 26, 
+       143, 
+/* LOOK  AROU  */
+       3, 23, 83, 
+       64, 86, 66, 14, 
+/* FEED  TROL  */
+       7, 56, 72, 
+       2, 46, 
+       86, 16, 61, 63, 
+/* SAY   BOLL  */
+       1, 43, 75, 
+       85, 130, 
+/* KILL  ANY   */
+       0, 29, 0, 
+       26, 
+/* SAY   ANY   */
+       0, 43, 0, 
+       85, 
+/* YOU   BOLL  */
+       0, 21, 75, 
+       130, 
+/* LOOK  ANY   */
+       1, 23, 0, 
+       5, 14, 
+/* HELP  ANY   */
+       0, 7, 0, 
+       104, 
+/* DROP  FOX   */
+       9, 18, 33, 
+       4, 7, 1, 15, 
+       116, 117, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* INVE */
+       73, 78, 86, 69,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* HELP */
+       72, 69, 76, 80,
+       /* *HINT */
+       200, 73, 78, 84,
+       /* *CLUE */
+       195, 76, 85, 69,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* *DON */
+       196, 79, 78, 32,
+       /* REMO */
+       82, 69, 77, 79,
+       /* *DOFF */
+       196, 79, 70, 70,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *GIVE */
+       199, 73, 86, 69,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* YOU */
+       89, 79, 85, 32,
+       /*  */
+       32, 32, 32, 32,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *FRIS */
+       198, 82, 73, 83,
+       /* *SEAR */
+       211, 69, 65, 82,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* *UNLO */
+       213, 78, 76, 79,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* BREA */
+       66, 82, 69, 65,
+       /* *SMAS */
+       211, 77, 65, 83,
+       /* EAT */
+       69, 65, 84, 32,
+       /* *DRIN */
+       196, 82, 73, 78,
+       /* WAVE */
+       87, 65, 86, 69,
+       /* RUB */
+       82, 85, 66, 32,
+       /* *POLI */
+       208, 79, 76, 73,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* *LEAP */
+       204, 69, 65, 80,
+       /* READ */
+       82, 69, 65, 68,
+       /* FIT */
+       70, 73, 84, 32,
+       /* *FIX */
+       198, 73, 88, 32,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *SPEA */
+       211, 80, 69, 65,
+       /* RIDE */
+       82, 73, 68, 69,
+       /* *PEDA */
+       208, 69, 68, 65,
+       /* SMOK */
+       83, 77, 79, 75,
+       /*  */
+       32, 32, 32, 32,
+       /* FUCK */
+       70, 85, 67, 75,
+       /* *PISS */
+       208, 73, 83, 83,
+       /* *BOLL */
+       194, 79, 76, 76,
+       /* *BAST */
+       194, 65, 83, 84,
+       /* *SHIT */
+       211, 72, 73, 84,
+       /* *CUNT */
+       195, 85, 78, 84,
+       /* FOLL */
+       70, 79, 76, 76,
+       /* FEED */
+       70, 69, 69, 68,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* *PUSH */
+       208, 85, 83, 72,
+       /* PRAY */
+       80, 82, 65, 89,
+       /* RAPE */
+       82, 65, 80, 69,
+       /* GIVE */
+       71, 73, 86, 69,
+       /* DIG */
+       68, 73, 71, 32,
+       /* WRAP */
+       87, 82, 65, 80,
+       /* *COVE */
+       195, 79, 86, 69,
+       /* *CONC */
+       195, 79, 78, 67,
+       /* *HIDE */
+       200, 73, 68, 69,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* SWOR */
+       83, 87, 79, 82,
+       /* PAIN */
+       80, 65, 73, 78,
+       /* *PORT */
+       208, 79, 82, 84,
+       /* CHAI */
+       67, 72, 65, 73,
+       /* KEY */
+       75, 69, 89, 32,
+       /* CHES */
+       67, 72, 69, 83,
+       /* RAVE */
+       82, 65, 86, 69,
+       /* SPEC */
+       83, 80, 69, 67,
+       /* *GLAS */
+       199, 76, 65, 83,
+       /* GOBL */
+       71, 79, 66, 76,
+       /* *SLIM */
+       211, 76, 73, 77,
+       /* KING */
+       75, 73, 78, 71,
+       /* PRIN */
+       80, 82, 73, 78,
+       /* AKYR */
+       65, 75, 89, 82,
+       /* *WIZA */
+       215, 73, 90, 65,
+       /* TAPE */
+       84, 65, 80, 69,
+       /* OFF */
+       79, 70, 70, 32,
+       /* STAI */
+       83, 84, 65, 73,
+       /* CORR */
+       67, 79, 82, 82,
+       /* RUG */
+       82, 85, 71, 32,
+       /* *SHEE */
+       211, 72, 69, 69,
+       /* TREE */
+       84, 82, 69, 69,
+       /* RUBY */
+       82, 85, 66, 89,
+       /* *ROD */
+       210, 79, 68, 32,
+       /* CORN */
+       67, 79, 82, 78,
+       /* *BAG */
+       194, 65, 71, 32,
+       /* FOX */
+       70, 79, 88, 32,
+       /* BRID */
+       66, 82, 73, 68,
+       /* PATH */
+       80, 65, 84, 72,
+       /* LEDG */
+       76, 69, 68, 71,
+       /* NEST */
+       78, 69, 83, 84,
+       /* SCEP */
+       83, 67, 69, 80,
+       /* SHOV */
+       83, 72, 79, 86,
+       /* LIBR */
+       76, 73, 66, 82,
+       /* TUNN */
+       84, 85, 78, 78,
+       /* PASS */
+       80, 65, 83, 83,
+       /* CHIC */
+       67, 72, 73, 67,
+       /* REGA */
+       82, 69, 71, 65,
+       /* GUAR */
+       71, 85, 65, 82,
+       /* HUNT */
+       72, 85, 78, 84,
+       /* CUB */
+       67, 85, 66, 32,
+       /* PARC */
+       80, 65, 82, 67,
+       /* *PAPE */
+       208, 65, 80, 69,
+       /* *STRI */
+       211, 84, 82, 73,
+       /* *RUNE */
+       210, 85, 78, 69,
+       /* FARM */
+       70, 65, 82, 77,
+       /* LEAD */
+       76, 69, 65, 68,
+       /* GOLD */
+       71, 79, 76, 68,
+       /* WAND */
+       87, 65, 78, 68,
+       /* *STAF */
+       211, 84, 65, 70,
+       /* JEWE */
+       74, 69, 87, 69,
+       /* *SCEP */
+       211, 67, 69, 80,
+       /* ORB */
+       79, 82, 66, 32,
+       /* CROW */
+       67, 82, 79, 87,
+       /* VIXE */
+       86, 73, 88, 69,
+       /* GAME */
+       71, 65, 77, 69,
+       /* ROCK */
+       82, 79, 67, 75,
+       /* HEN */
+       72, 69, 78, 32,
+       /* *HOUS */
+       200, 79, 85, 83,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* *TRAP */
+       212, 82, 65, 80,
+       /* WELL */
+       87, 69, 76, 76,
+       /* *SHAF */
+       211, 72, 65, 70,
+       /* BOOK */
+       66, 79, 79, 75,
+       /* HOUN */
+       72, 79, 85, 78,
+       /* TROL */
+       84, 82, 79, 76,
+       /* *STON */
+       211, 84, 79, 78,
+       /* HELL */
+       72, 69, 76, 76,
+       /* BOLL */
+       66, 79, 76, 76,
+       /* *BAST */
+       194, 65, 83, 84,
+       /* *PISS */
+       208, 73, 83, 83,
+       /* *SHIT */
+       211, 72, 73, 84,
+       /* *FUCK */
+       198, 85, 67, 75,
+       /* *BALL */
+       194, 65, 76, 76,
+       /* *CUNT */
+       195, 85, 78, 84,
+       /* *KNAC */
+       203, 78, 65, 67,
+       /* AROU */
+       65, 82, 79, 85,
+       /* *ROUN */
+       210, 79, 85, 78,
+       /* *ABOU */
+       193, 66, 79, 85,
+       0,
+};
+const uint8_t automap[] = {
+       /* RUBY */
+       82, 85, 66, 89,
+       1,
+       /* SCEP */
+       83, 67, 69, 80,
+       3,
+       /* KEY */
+       75, 69, 89, 32,
+       5,
+       /* WAND */
+       87, 65, 78, 68,
+       7,
+       /* PAIN */
+       80, 65, 73, 78,
+       10,
+       /* SPEC */
+       83, 80, 69, 67,
+       11,
+       /* RUG */
+       82, 85, 71, 32,
+       13,
+       /* CHIC */
+       67, 72, 73, 67,
+       14,
+       /* FOX */
+       70, 79, 88, 32,
+       15,
+       /* CORN */
+       67, 79, 82, 78,
+       16,
+       /* SHOV */
+       83, 72, 79, 86,
+       24,
+       /* BOOK */
+       66, 79, 79, 75,
+       25,
+       /* PARC */
+       80, 65, 82, 67,
+       26,
+       /* ORB */
+       79, 82, 66, 32,
+       27,
+       /* SWOR */
+       83, 87, 79, 82,
+       28,
+       /* CHAI */
+       67, 72, 65, 73,
+       29,
+       /* PRIN */
+       80, 82, 73, 78,
+       36,
+       /* CROW */
+       67, 82, 79, 87,
+       44,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst09.c b/Applications/games/myst09.c
new file mode 100644 (file)
index 0000000..10cb37a
--- /dev/null
@@ -0,0 +1,3078 @@
+#define NUM_OBJ 59
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 200;
+const uint8_t lightfill = 200;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 40;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+40, 67, 41, 32, 49, 57, 56, 51, 32, 66, 46, 72, 46, 0 };
+const uint8_t loctxt_1[] = {
+77, 97, 114, 98, 108, 101, 32, 72, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_2[] = {
+82, 111, 121, 97, 108, 32, 67, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 102, 114, 111, 110, 116, 32, 111, 102, 32, 116, 104, 101, 32, 82, 111, 121, 97, 108, 32, 80, 97, 108, 97, 99, 101, 0 };
+const uint8_t loctxt_4[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 108, 111, 110, 103, 44, 32, 119, 105, 110, 100, 105, 110, 103, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_5[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 84, 101, 109, 112, 108, 101, 32, 111, 102, 32, 65, 116, 104, 101, 110, 101, 0 };
+const uint8_t loctxt_6[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 83, 116, 111, 110, 101, 32, 68, 97, 105, 115, 0 };
+const uint8_t loctxt_7[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 119, 105, 110, 100, 105, 110, 103, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_8[] = {
+82, 111, 99, 107, 121, 32, 67, 108, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t loctxt_9[] = {
+108, 97, 114, 103, 101, 32, 67, 97, 118, 101, 0 };
+const uint8_t loctxt_10[] = {
+32, 0 };
+const uint8_t loctxt_11[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 84, 101, 109, 112, 108, 101, 32, 111, 102, 32, 72, 101, 114, 109, 101, 115, 0 };
+const uint8_t loctxt_12[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 44, 32, 103, 114, 97, 115, 115, 121, 32, 73, 115, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_13[] = {
+42, 73, 39, 109, 32, 104, 111, 118, 101, 114, 105, 110, 103, 32, 105, 110, 32, 116, 104, 101, 32, 65, 105, 114, 33, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 104, 111, 118, 101, 114, 105, 110, 103, 32, 105, 110, 32, 116, 104, 101, 32, 65, 105, 114, 33, 0 };
+const uint8_t loctxt_15[] = {
+112, 97, 116, 99, 104, 32, 111, 102, 32, 112, 114, 105, 99, 107, 108, 121, 32, 84, 104, 111, 114, 110, 115, 0 };
+const uint8_t loctxt_16[] = {
+71, 114, 111, 118, 101, 32, 111, 102, 32, 116, 97, 108, 108, 32, 84, 114, 101, 101, 115, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 104, 111, 118, 101, 114, 105, 110, 103, 32, 105, 110, 32, 116, 104, 101, 32, 65, 105, 114, 33, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 103, 114, 97, 115, 115, 121, 32, 80, 108, 97, 105, 110, 0 };
+const uint8_t loctxt_19[] = {
+82, 111, 99, 107, 121, 32, 67, 108, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t loctxt_20[] = {
+100, 105, 109, 108, 121, 32, 108, 105, 116, 32, 67, 97, 118, 101, 0 };
+const uint8_t loctxt_21[] = {
+110, 97, 114, 114, 111, 119, 32, 84, 117, 110, 110, 101, 108, 0 };
+const uint8_t loctxt_22[] = {
+67, 111, 108, 100, 32, 67, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_23[] = {
+104, 117, 103, 101, 32, 117, 110, 100, 101, 114, 103, 114, 111, 117, 110, 100, 32, 67, 97, 118, 101, 114, 110, 0 };
+const uint8_t loctxt_24[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 103, 114, 97, 115, 115, 121, 32, 80, 97, 116, 104, 119, 97, 121, 0 };
+const uint8_t loctxt_25[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 98, 97, 99, 107, 32, 111, 102, 32, 80, 69, 71, 65, 83, 85, 83, 0 };
+const uint8_t loctxt_26[] = {
+42, 73, 39, 109, 32, 97, 116, 32, 116, 104, 101, 32, 116, 111, 112, 32, 111, 102, 32, 97, 32, 70, 114, 117, 105, 116, 32, 84, 114, 101, 101, 0 };
+const uint8_t loctxt_27[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 115, 109, 97, 108, 108, 32, 73, 115, 108, 97, 110, 100, 32, 111, 102, 32, 82, 111, 99, 107, 0 };
+const uint8_t loctxt_28[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 104, 117, 103, 101, 32, 111, 117, 116, 99, 114, 111, 112, 32, 111, 102, 32, 82, 111, 99, 107, 0 };
+const uint8_t loctxt_29[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 100, 114, 121, 44, 32, 100, 117, 115, 116, 121, 32, 84, 114, 97, 105, 108, 0 };
+const uint8_t loctxt_30[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 100, 114, 105, 101, 100, 32, 117, 112, 32, 87, 97, 116, 101, 114, 45, 72, 111, 108, 101, 0 };
+const uint8_t loctxt_31[] = {
+119, 111, 111, 100, 101, 100, 32, 67, 108, 101, 97, 114, 105, 110, 103, 0 };
+const uint8_t loctxt_32[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 114, 117, 105, 110, 101, 100, 32, 84, 101, 109, 112, 108, 101, 0 };
+const uint8_t loctxt_33[] = {
+84, 101, 109, 112, 108, 101, 32, 119, 105, 116, 104, 32, 97, 110, 32, 111, 112, 101, 110, 32, 82, 111, 111, 102, 0 };
+const uint8_t loctxt_34[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 87, 97, 108, 108, 115, 32, 111, 102, 32, 116, 104, 101, 32, 111, 112, 101, 110, 32, 84, 101, 109, 112, 108, 101, 0 };
+const uint8_t loctxt_35[] = {
+118, 101, 114, 121, 32, 116, 105, 110, 121, 32, 67, 97, 118, 101, 0 };
+const uint8_t loctxt_36[] = {
+68, 69, 80, 79, 0 };
+const uint8_t loctxt_37[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 110, 32, 73, 118, 111, 114, 121, 32, 80, 101, 100, 101, 115, 116, 97, 108, 0 };
+const uint8_t loctxt_38[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 110, 32, 73, 118, 111, 114, 121, 32, 80, 101, 100, 101, 115, 116, 97, 108, 0 };
+const uint8_t loctxt_39[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 110, 32, 73, 118, 111, 114, 121, 32, 80, 101, 100, 101, 115, 116, 97, 108, 0 };
+const uint8_t loctxt_40[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 82, 105, 118, 101, 114, 32, 83, 84, 89, 88, 46, 46, 46, 73, 39, 109, 32, 68, 69, 65, 68, 33, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 2, 3, 0, 0, 0, 0 } }, 
+               { loctxt_2,  { 0, 1, 0, 0, 0, 0 } }, 
+               { loctxt_3,  { 0, 29, 4, 7, 0, 0 } }, 
+               { loctxt_4,  { 0, 30, 5, 3, 0, 0 } }, 
+               { loctxt_5,  { 0, 0, 0, 4, 0, 0 } }, 
+               { loctxt_6,  { 0, 5, 0, 0, 0, 0 } }, 
+               { loctxt_7,  { 0, 0, 3, 8, 0, 0 } }, 
+               { loctxt_8,  { 0, 0, 7, 0, 0, 0 } }, 
+               { loctxt_9,  { 0, 0, 8, 0, 0, 0 } }, 
+               { loctxt_10,  { 9, 0, 0, 0, 0, 0 } }, 
+               { loctxt_11,  { 0, 7, 0, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 16, 15, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 12, 0, 0, 0 } }, 
+               { loctxt_16,  { 0, 0, 0, 12, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_18,  { 24, 31, 0, 0, 0, 0 } }, 
+               { loctxt_19,  { 0, 0, 0, 24, 0, 0 } }, 
+               { loctxt_20,  { 21, 0, 0, 19, 0, 0 } }, 
+               { loctxt_21,  { 0, 20, 22, 0, 0, 0 } }, 
+               { loctxt_22,  { 0, 23, 0, 21, 0, 0 } }, 
+               { loctxt_23,  { 22, 0, 0, 0, 0, 0 } }, 
+               { loctxt_24,  { 0, 18, 19, 0, 0, 0 } }, 
+               { loctxt_25,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_26,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_27,  { 0, 28, 0, 0, 0, 0 } }, 
+               { loctxt_28,  { 27, 0, 0, 0, 0, 0 } }, 
+               { loctxt_29,  { 3, 0, 30, 0, 0, 0 } }, 
+               { loctxt_30,  { 4, 0, 0, 29, 0, 0 } }, 
+               { loctxt_31,  { 18, 0, 0, 32, 0, 0 } }, 
+               { loctxt_32,  { 0, 0, 31, 33, 0, 0 } }, 
+               { loctxt_33,  { 0, 0, 32, 0, 0, 0 } }, 
+               { loctxt_34,  { 0, 0, 0, 0, 0, 32 } }, 
+               { loctxt_35,  { 0, 0, 24, 0, 0, 0 } }, 
+               { loctxt_36,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_37,  { 0, 0, 0, 0, 0, 11 } }, 
+               { loctxt_38,  { 0, 0, 0, 0, 0, 12 } }, 
+               { loctxt_39,  { 0, 0, 0, 0, 0, 18 } }, 
+               { loctxt_40,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       2,
+       2,
+       2,
+       0,
+       3,
+       29,
+       30,
+       30,
+       0,
+       0,
+       0,
+       5,
+       0,
+       7,
+       8,
+       9,
+       0,
+       10,
+       0,
+       0,
+       12,
+       12,
+       15,
+       0,
+       16,
+       26,
+       12,
+       0,
+       0,
+       33,
+       24,
+       19,
+       19,
+       35,
+       19,
+       31,
+       0,
+       0,
+       0,
+       0,
+       0,
+       28,
+       0,
+       28,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       8,
+       0,
+       0,
+       6,
+       11,
+       12,
+       18,
+       0,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+75, 105, 110, 103, 32, 80, 111, 108, 121, 100, 101, 99, 116, 101, 115, 0 };
+const uint8_t objtxt_1[] = {
+84, 104, 114, 111, 110, 101, 0 };
+const uint8_t objtxt_2[] = {
+82, 111, 121, 97, 108, 32, 71, 117, 97, 114, 100, 115, 0 };
+const uint8_t objtxt_3[] = {
+80, 69, 71, 65, 83, 85, 83, 32, 119, 101, 97, 114, 105, 110, 103, 32, 72, 97, 108, 116, 101, 114, 0 };
+const uint8_t objtxt_4[] = {
+82, 111, 121, 97, 108, 32, 80, 97, 108, 97, 99, 101, 0 };
+const uint8_t objtxt_5[] = {
+76, 101, 97, 116, 104, 101, 114, 32, 83, 97, 99, 107, 0 };
+const uint8_t objtxt_6[] = {
+87, 105, 116, 104, 101, 114, 101, 100, 32, 84, 114, 101, 101, 32, 83, 116, 117, 109, 112, 0 };
+const uint8_t objtxt_7[] = {
+79, 108, 100, 32, 66, 101, 103, 103, 97, 114, 0 };
+const uint8_t objtxt_8[] = {
+68, 105, 115, 99, 117, 115, 0 };
+const uint8_t objtxt_9[] = {
+70, 108, 97, 109, 105, 110, 103, 32, 84, 111, 114, 99, 104, 0 };
+const uint8_t objtxt_10[] = {
+65, 110, 99, 105, 101, 110, 116, 32, 80, 97, 114, 99, 104, 109, 101, 110, 116, 0 };
+const uint8_t objtxt_11[] = {
+83, 116, 111, 110, 101, 32, 68, 97, 105, 115, 0 };
+const uint8_t objtxt_12[] = {
+72, 105, 103, 104, 108, 121, 32, 112, 111, 108, 105, 115, 104, 101, 100, 32, 83, 104, 105, 101, 108, 100, 0 };
+const uint8_t objtxt_13[] = {
+84, 101, 109, 112, 108, 101, 0 };
+const uint8_t objtxt_14[] = {
+67, 97, 118, 101, 32, 69, 110, 116, 114, 97, 110, 99, 101, 0 };
+const uint8_t objtxt_15[] = {
+77, 97, 114, 98, 108, 101, 32, 83, 116, 97, 116, 117, 101, 0 };
+const uint8_t objtxt_16[] = {
+32, 0 };
+const uint8_t objtxt_17[] = {
+32, 0 };
+const uint8_t objtxt_18[] = {
+71, 111, 108, 100, 101, 110, 32, 72, 101, 108, 109, 101, 116, 0 };
+const uint8_t objtxt_19[] = {
+87, 105, 110, 103, 101, 100, 32, 83, 97, 110, 100, 97, 108, 115, 0 };
+const uint8_t objtxt_20[] = {
+66, 108, 105, 110, 100, 32, 80, 101, 97, 115, 97, 110, 116, 0 };
+const uint8_t objtxt_21[] = {
+84, 97, 98, 108, 101, 0 };
+const uint8_t objtxt_22[] = {
+84, 104, 111, 114, 110, 32, 66, 117, 115, 104, 101, 115, 0 };
+const uint8_t objtxt_23[] = {
+68, 97, 114, 107, 32, 66, 101, 114, 114, 105, 101, 115, 0 };
+const uint8_t objtxt_24[] = {
+70, 114, 117, 105, 116, 32, 84, 114, 101, 101, 115, 0 };
+const uint8_t objtxt_25[] = {
+76, 117, 115, 99, 105, 111, 117, 115, 32, 70, 114, 117, 105, 116, 115, 0 };
+const uint8_t objtxt_26[] = {
+87, 105, 108, 100, 32, 72, 121, 101, 110, 97, 0 };
+const uint8_t objtxt_27[] = {
+68, 101, 97, 100, 32, 72, 121, 101, 110, 97, 0 };
+const uint8_t objtxt_28[] = {
+69, 118, 105, 108, 32, 72, 97, 114, 112, 105, 101, 115, 0 };
+const uint8_t objtxt_29[] = {
+83, 105, 108, 118, 101, 114, 32, 72, 97, 108, 116, 101, 114, 0 };
+const uint8_t objtxt_30[] = {
+67, 97, 118, 101, 0 };
+const uint8_t objtxt_31[] = {
+84, 104, 101, 32, 116, 104, 114, 101, 101, 32, 71, 82, 65, 73, 65, 69, 0 };
+const uint8_t objtxt_32[] = {
+69, 121, 101, 32, 111, 102, 32, 116, 104, 101, 32, 71, 82, 65, 73, 65, 69, 0 };
+const uint8_t objtxt_33[] = {
+76, 97, 114, 103, 101, 32, 78, 101, 116, 0 };
+const uint8_t objtxt_34[] = {
+67, 111, 111, 107, 105, 110, 103, 32, 70, 105, 114, 101, 0 };
+const uint8_t objtxt_35[] = {
+87, 111, 111, 100, 101, 110, 32, 84, 111, 114, 99, 104, 0 };
+const uint8_t objtxt_36[] = {
+78, 97, 114, 114, 111, 119, 32, 99, 114, 97, 99, 107, 32, 105, 110, 32, 82, 111, 99, 107, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_37[] = {
+77, 69, 68, 85, 83, 65, 0 };
+const uint8_t objtxt_38[] = {
+72, 101, 97, 100, 32, 111, 102, 32, 77, 69, 68, 85, 83, 65, 0 };
+const uint8_t objtxt_39[] = {
+80, 69, 71, 65, 83, 85, 83, 32, 116, 104, 101, 32, 87, 105, 110, 103, 101, 100, 32, 72, 111, 114, 115, 101, 0 };
+const uint8_t objtxt_40[] = {
+82, 101, 102, 108, 101, 99, 116, 105, 111, 110, 32, 111, 102, 32, 77, 69, 68, 85, 83, 65, 0 };
+const uint8_t objtxt_41[] = {
+77, 97, 105, 100, 101, 110, 32, 99, 104, 97, 105, 110, 101, 100, 32, 116, 111, 32, 82, 111, 99, 107, 0 };
+const uint8_t objtxt_42[] = {
+84, 104, 101, 32, 98, 101, 97, 117, 116, 105, 102, 117, 108, 32, 65, 78, 68, 82, 79, 77, 69, 68, 65, 0 };
+const uint8_t objtxt_43[] = {
+84, 104, 101, 32, 75, 82, 65, 75, 69, 78, 0 };
+const uint8_t objtxt_44[] = {
+84, 104, 101, 32, 75, 82, 65, 75, 69, 78, 32, 40, 116, 117, 114, 110, 101, 100, 32, 116, 111, 32, 83, 116, 111, 110, 101, 41, 0 };
+const uint8_t objtxt_45[] = {
+71, 108, 101, 97, 109, 105, 110, 103, 32, 83, 119, 111, 114, 100, 0 };
+const uint8_t objtxt_46[] = {
+87, 101, 108, 108, 32, 102, 101, 100, 32, 80, 101, 97, 115, 97, 110, 116, 0 };
+const uint8_t objtxt_47[] = {
+72, 117, 103, 101, 32, 82, 111, 99, 107, 0 };
+const uint8_t objtxt_48[] = {
+32, 0 };
+const uint8_t objtxt_49[] = {
+87, 105, 110, 103, 101, 100, 32, 83, 97, 110, 100, 97, 108, 115, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_50[] = {
+83, 97, 99, 107, 32, 102, 117, 108, 108, 32, 111, 102, 32, 87, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_51[] = {
+83, 104, 97, 108, 108, 111, 119, 32, 112, 111, 111, 108, 32, 111, 102, 32, 87, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_52[] = {
+83, 116, 97, 116, 117, 101, 32, 119, 101, 97, 114, 105, 110, 103, 32, 97, 32, 71, 111, 108, 100, 101, 110, 32, 72, 101, 108, 109, 101, 116, 0 };
+const uint8_t objtxt_53[] = {
+71, 111, 108, 100, 101, 110, 32, 72, 101, 108, 109, 101, 116, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_54[] = {
+65, 108, 116, 97, 114, 0 };
+const uint8_t objtxt_55[] = {
+73, 118, 111, 114, 121, 32, 80, 101, 100, 101, 115, 116, 97, 108, 0 };
+const uint8_t objtxt_56[] = {
+73, 118, 111, 114, 121, 32, 80, 101, 100, 101, 115, 116, 97, 108, 0 };
+const uint8_t objtxt_57[] = {
+73, 118, 111, 114, 121, 32, 80, 101, 100, 101, 115, 116, 97, 108, 0 };
+const uint8_t objtxt_58[] = {
+78, 101, 116, 32, 115, 112, 114, 101, 97, 100, 32, 97, 99, 114, 111, 115, 115, 32, 119, 97, 108, 108, 115, 0 };
+const uint8_t objtxt_59[] = {
+68, 101, 97, 100, 32, 67, 97, 114, 99, 97, 115, 115, 32, 111, 102, 32, 77, 69, 68, 85, 83, 65, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+};
+const uint8_t msgtxt_0[] = {
+32, 0 };
+const uint8_t msgtxt_1[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 77, 121, 115, 116, 101, 114, 105, 111, 117, 115, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 78, 111, 46, 57, 0 };
+const uint8_t msgtxt_2[] = {
+80, 69, 82, 83, 69, 85, 83, 32, 38, 32, 65, 78, 68, 82, 79, 77, 69, 68, 65, 0 };
+const uint8_t msgtxt_3[] = {
+68, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 32, 65, 46, 74, 46, 72, 65, 82, 68, 73, 78, 71, 32, 97, 110, 100, 32, 115, 116, 97, 102, 102, 32, 97, 116, 0 };
+const uint8_t msgtxt_4[] = {
+77, 79, 76, 73, 77, 69, 82, 88, 32, 76, 84, 68, 46, 32, 87, 104, 111, 32, 109, 97, 100, 101, 32, 116, 104, 105, 115, 32, 112, 111, 115, 115, 105, 98, 108, 101, 0 };
+const uint8_t msgtxt_5[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_6[] = {
+73, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_7[] = {
+110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_8[] = {
+115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_9[] = {
+110, 111, 116, 104, 105, 110, 103, 0 };
+const uint8_t msgtxt_10[] = {
+73, 39, 118, 101, 32, 102, 111, 117, 110, 100, 0 };
+const uint8_t msgtxt_11[] = {
+73, 32, 112, 108, 117, 109, 109, 101, 116, 32, 116, 111, 32, 116, 104, 101, 32, 71, 114, 111, 117, 110, 100, 33, 0 };
+const uint8_t msgtxt_12[] = {
+83, 80, 76, 65, 84, 33, 33, 0 };
+const uint8_t msgtxt_13[] = {
+84, 105, 109, 101, 32, 112, 97, 115, 115, 101, 115, 46, 46, 46, 46, 0 };
+const uint8_t msgtxt_14[] = {
+84, 104, 101, 32, 87, 105, 110, 103, 101, 100, 32, 83, 97, 110, 100, 97, 108, 115, 32, 102, 108, 97, 112, 32, 118, 105, 103, 111, 114, 111, 117, 115, 108, 121, 33, 0 };
+const uint8_t msgtxt_15[] = {
+77, 97, 121, 98, 101, 32, 116, 104, 101, 32, 71, 111, 100, 115, 32, 119, 105, 108, 108, 32, 104, 101, 108, 112, 46, 46, 46, 0 };
+const uint8_t msgtxt_16[] = {
+84, 104, 101, 32, 66, 101, 103, 103, 97, 114, 0 };
+const uint8_t msgtxt_17[] = {
+68, 114, 105, 110, 107, 115, 32, 104, 105, 115, 32, 102, 105, 108, 108, 32, 116, 104, 101, 110, 32, 116, 104, 97, 110, 107, 115, 32, 109, 101, 46, 46, 46, 0 };
+const uint8_t msgtxt_18[] = {
+46, 46, 46, 104, 101, 32, 103, 105, 118, 101, 115, 32, 109, 101, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_19[] = {
+72, 101, 39, 115, 32, 100, 121, 105, 110, 103, 32, 111, 102, 32, 84, 104, 105, 114, 115, 116, 33, 0 };
+const uint8_t msgtxt_20[] = {
+84, 104, 101, 32, 75, 105, 110, 103, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_21[] = {
+83, 108, 97, 121, 32, 77, 69, 68, 85, 83, 65, 32, 97, 110, 100, 32, 114, 101, 115, 99, 117, 101, 32, 65, 78, 68, 82, 79, 77, 69, 68, 65, 33, 0 };
+const uint8_t msgtxt_22[] = {
+82, 111, 121, 97, 108, 32, 71, 117, 97, 114, 100, 115, 0 };
+const uint8_t msgtxt_23[] = {
+89, 111, 117, 32, 97, 114, 101, 32, 102, 97, 114, 32, 116, 111, 111, 32, 118, 105, 111, 108, 101, 110, 116, 33, 0 };
+const uint8_t msgtxt_24[] = {
+83, 108, 97, 121, 32, 109, 101, 33, 33, 0 };
+const uint8_t msgtxt_25[] = {
+83, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_26[] = {
+84, 104, 101, 32, 83, 116, 97, 116, 117, 101, 32, 105, 115, 32, 116, 111, 111, 32, 116, 97, 108, 108, 33, 0 };
+const uint8_t msgtxt_27[] = {
+67, 82, 65, 67, 75, 33, 33, 0 };
+const uint8_t msgtxt_28[] = {
+71, 111, 111, 100, 32, 83, 104, 111, 116, 33, 0 };
+const uint8_t msgtxt_29[] = {
+84, 104, 101, 32, 72, 101, 108, 109, 101, 116, 0 };
+const uint8_t msgtxt_30[] = {
+70, 97, 108, 108, 115, 32, 116, 111, 32, 116, 104, 101, 32, 103, 114, 111, 117, 110, 100, 33, 0 };
+const uint8_t msgtxt_31[] = {
+77, 97, 107, 101, 115, 32, 109, 101, 32, 105, 110, 118, 105, 115, 105, 98, 108, 101, 33, 0 };
+const uint8_t msgtxt_32[] = {
+73, 32, 97, 109, 32, 110, 111, 119, 32, 118, 105, 115, 105, 98, 108, 101, 0 };
+const uint8_t msgtxt_33[] = {
+65, 116, 32, 119, 104, 97, 116, 63, 0 };
+const uint8_t msgtxt_34[] = {
+85, 115, 101, 32, 50, 32, 87, 111, 114, 100, 115, 0 };
+const uint8_t msgtxt_35[] = {
+84, 104, 101, 110, 32, 104, 101, 32, 108, 101, 97, 118, 101, 115, 33, 0 };
+const uint8_t msgtxt_36[] = {
+73, 32, 104, 101, 97, 114, 0 };
+const uint8_t msgtxt_37[] = {
+116, 104, 101, 32, 118, 111, 105, 99, 101, 32, 111, 102, 0 };
+const uint8_t msgtxt_38[] = {
+116, 104, 101, 32, 71, 111, 100, 100, 101, 115, 115, 32, 65, 84, 72, 69, 78, 69, 58, 0 };
+const uint8_t msgtxt_39[] = {
+84, 65, 75, 69, 32, 84, 72, 69, 32, 83, 72, 73, 69, 76, 68, 44, 32, 73, 84, 32, 87, 73, 76, 76, 32, 80, 82, 79, 84, 69, 67, 84, 32, 89, 79, 85, 0 };
+const uint8_t msgtxt_40[] = {
+73, 78, 32, 77, 79, 82, 69, 32, 87, 65, 89, 83, 32, 84, 72, 65, 78, 32, 79, 78, 69, 33, 0 };
+const uint8_t msgtxt_41[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 115, 116, 114, 97, 110, 103, 101, 32, 102, 108, 117, 116, 116, 101, 114, 115, 32, 100, 111, 119, 110, 33, 0 };
+const uint8_t msgtxt_42[] = {
+84, 114, 121, 32, 97, 32, 68, 105, 114, 101, 99, 116, 105, 111, 110, 32, 40, 105, 46, 101, 46, 32, 70, 76, 89, 32, 78, 79, 82, 84, 72, 41, 0 };
+const uint8_t msgtxt_43[] = {
+73, 39, 109, 32, 102, 108, 121, 105, 110, 103, 32, 116, 104, 114, 111, 117, 103, 104, 32, 116, 104, 101, 32, 65, 105, 114, 33, 0 };
+const uint8_t msgtxt_44[] = {
+84, 104, 101, 32, 83, 97, 99, 107, 32, 105, 115, 32, 110, 111, 119, 32, 102, 117, 108, 108, 0 };
+const uint8_t msgtxt_45[] = {
+72, 101, 32, 108, 111, 111, 107, 115, 32, 72, 117, 110, 103, 114, 121, 33, 0 };
+const uint8_t msgtxt_46[] = {
+84, 104, 101, 32, 80, 101, 97, 115, 97, 110, 116, 32, 116, 97, 107, 101, 115, 32, 116, 104, 101, 32, 70, 111, 111, 100, 46, 46, 46, 0 };
+const uint8_t msgtxt_47[] = {
+66, 101, 102, 111, 114, 101, 32, 104, 101, 32, 99, 97, 110, 32, 101, 97, 116, 44, 32, 116, 104, 101, 32, 119, 105, 108, 100, 32, 72, 121, 101, 110, 97, 0 };
+const uint8_t msgtxt_48[] = {
+80, 111, 117, 110, 99, 101, 115, 32, 97, 110, 100, 32, 101, 97, 116, 115, 32, 116, 104, 101, 32, 70, 111, 111, 100, 33, 0 };
+const uint8_t msgtxt_49[] = {
+46, 46, 46, 101, 97, 116, 115, 32, 105, 116, 44, 32, 116, 104, 101, 110, 32, 103, 114, 97, 116, 101, 102, 117, 108, 108, 121, 0 };
+const uint8_t msgtxt_50[] = {
+73, 116, 32, 115, 97, 121, 115, 58, 0 };
+const uint8_t msgtxt_51[] = {
+83, 101, 101, 107, 32, 116, 104, 101, 32, 69, 121, 101, 32, 111, 102, 32, 116, 104, 101, 32, 71, 82, 65, 73, 65, 69, 0 };
+const uint8_t msgtxt_52[] = {
+84, 104, 101, 32, 66, 101, 114, 114, 105, 101, 115, 32, 119, 101, 114, 101, 32, 112, 111, 105, 115, 111, 110, 111, 117, 115, 33, 0 };
+const uint8_t msgtxt_53[] = {
+84, 104, 101, 32, 72, 121, 101, 110, 97, 32, 100, 105, 101, 115, 33, 0 };
+const uint8_t msgtxt_54[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_55[] = {
+84, 104, 101, 32, 71, 111, 100, 115, 32, 119, 105, 108, 108, 32, 99, 117, 116, 32, 111, 117, 116, 32, 121, 111, 117, 114, 32, 84, 111, 110, 103, 117, 101, 33, 0 };
+const uint8_t msgtxt_56[] = {
+85, 103, 104, 33, 0 };
+const uint8_t msgtxt_57[] = {
+65, 104, 104, 33, 32, 84, 104, 97, 116, 39, 115, 32, 98, 101, 116, 116, 101, 114, 44, 32, 116, 104, 97, 110, 107, 115, 33, 0 };
+const uint8_t msgtxt_58[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 115, 113, 117, 101, 101, 122, 101, 32, 116, 104, 114, 111, 117, 103, 104, 33, 0 };
+const uint8_t msgtxt_59[] = {
+84, 104, 101, 32, 71, 82, 65, 73, 65, 69, 0 };
+const uint8_t msgtxt_60[] = {
+109, 111, 97, 110, 32, 97, 110, 100, 32, 119, 97, 105, 108, 44, 32, 98, 101, 103, 103, 105, 110, 103, 32, 102, 111, 114, 32, 116, 104, 101, 105, 114, 32, 69, 121, 101, 33, 0 };
+const uint8_t msgtxt_61[] = {
+115, 101, 101, 32, 109, 101, 32, 119, 105, 116, 104, 32, 116, 104, 101, 105, 114, 32, 115, 104, 97, 114, 101, 100, 32, 69, 121, 101, 32, 97, 110, 100, 0 };
+const uint8_t msgtxt_62[] = {
+83, 110, 97, 116, 99, 104, 32, 98, 97, 99, 107, 32, 116, 104, 101, 105, 114, 32, 69, 121, 101, 46, 46, 46, 0 };
+const uint8_t msgtxt_63[] = {
+116, 104, 101, 110, 32, 103, 114, 117, 100, 103, 105, 110, 103, 108, 121, 32, 114, 101, 118, 101, 97, 108, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_64[] = {
+73, 39, 109, 32, 112, 111, 105, 115, 111, 110, 101, 100, 33, 33, 0 };
+const uint8_t msgtxt_65[] = {
+69, 118, 105, 108, 32, 72, 97, 114, 112, 105, 101, 115, 0 };
+const uint8_t msgtxt_66[] = {
+115, 119, 111, 111, 112, 32, 100, 111, 119, 110, 32, 97, 110, 100, 32, 112, 114, 101, 118, 101, 110, 116, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_67[] = {
+97, 114, 101, 32, 102, 111, 105, 108, 101, 100, 32, 98, 121, 32, 116, 104, 101, 32, 78, 101, 116, 33, 0 };
+const uint8_t msgtxt_68[] = {
+65, 82, 82, 71, 71, 72, 72, 33, 33, 0 };
+const uint8_t msgtxt_69[] = {
+73, 32, 98, 101, 104, 101, 108, 100, 32, 77, 69, 68, 85, 83, 65, 0 };
+const uint8_t msgtxt_70[] = {
+73, 39, 109, 32, 116, 117, 114, 110, 101, 100, 32, 116, 111, 32, 83, 116, 111, 110, 101, 33, 0 };
+const uint8_t msgtxt_71[] = {
+73, 39, 109, 32, 108, 111, 111, 107, 105, 110, 103, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 83, 104, 105, 101, 108, 100, 0 };
+const uint8_t msgtxt_72[] = {
+73, 32, 99, 97, 110, 32, 115, 101, 101, 32, 114, 101, 102, 108, 101, 99, 116, 105, 111, 110, 115, 0 };
+const uint8_t msgtxt_73[] = {
+73, 39, 118, 101, 32, 98, 101, 104, 101, 97, 100, 101, 100, 32, 77, 69, 68, 85, 83, 65, 33, 0 };
+const uint8_t msgtxt_74[] = {
+84, 104, 101, 32, 72, 101, 97, 100, 32, 114, 111, 108, 108, 115, 32, 97, 119, 97, 121, 33, 0 };
+const uint8_t msgtxt_75[] = {
+66, 108, 111, 111, 100, 32, 116, 114, 105, 99, 107, 108, 101, 115, 32, 102, 114, 111, 109, 32, 116, 104, 101, 32, 115, 101, 118, 101, 114, 101, 100, 32, 72, 101, 97, 100, 0 };
+const uint8_t msgtxt_76[] = {
+70, 114, 111, 109, 32, 116, 104, 101, 32, 66, 108, 111, 111, 100, 32, 103, 114, 111, 119, 115, 32, 97, 32, 72, 111, 114, 115, 101, 33, 33, 0 };
+const uint8_t msgtxt_77[] = {
+66, 101, 32, 109, 111, 114, 101, 32, 115, 112, 101, 99, 105, 102, 105, 99, 32, 40, 105, 46, 101, 46, 32, 71, 73, 86, 69, 32, 70, 82, 85, 73, 84, 41, 0 };
+const uint8_t msgtxt_78[] = {
+80, 69, 71, 65, 83, 85, 83, 32, 116, 104, 114, 111, 119, 115, 32, 109, 101, 32, 111, 102, 102, 33, 0 };
+const uint8_t msgtxt_79[] = {
+80, 69, 71, 65, 83, 85, 83, 32, 112, 117, 116, 115, 32, 109, 101, 32, 100, 111, 119, 110, 32, 116, 104, 101, 110, 32, 102, 108, 105, 101, 115, 32, 111, 102, 102, 33, 0 };
+const uint8_t msgtxt_80[] = {
+84, 104, 101, 32, 75, 82, 65, 75, 69, 78, 0 };
+const uint8_t msgtxt_81[] = {
+84, 101, 97, 114, 115, 32, 109, 101, 32, 116, 111, 32, 112, 101, 105, 99, 101, 115, 33, 33, 0 };
+const uint8_t msgtxt_82[] = {
+73, 32, 104, 97, 118, 101, 32, 102, 114, 101, 101, 100, 32, 65, 78, 68, 82, 79, 77, 69, 68, 65, 33, 33, 0 };
+const uint8_t msgtxt_83[] = {
+77, 89, 32, 83, 79, 78, 32, 89, 79, 85, 32, 72, 65, 86, 69, 32, 83, 85, 67, 67, 69, 69, 68, 69, 68, 0 };
+const uint8_t msgtxt_84[] = {
+71, 79, 32, 78, 79, 87, 32, 65, 78, 68, 32, 76, 73, 86, 69, 32, 73, 78, 32, 80, 69, 65, 67, 69, 0 };
+const uint8_t msgtxt_85[] = {
+87, 73, 84, 72, 32, 65, 78, 68, 82, 79, 77, 69, 68, 65, 0 };
+const uint8_t msgtxt_86[] = {
+108, 111, 111, 107, 115, 32, 97, 116, 32, 116, 104, 101, 32, 72, 101, 97, 100, 46, 46, 46, 0 };
+const uint8_t msgtxt_87[] = {
+65, 110, 100, 32, 105, 115, 32, 116, 117, 114, 110, 101, 100, 32, 116, 111, 32, 83, 116, 111, 110, 101, 33, 33, 0 };
+const uint8_t msgtxt_88[] = {
+84, 104, 101, 32, 71, 111, 100, 115, 32, 100, 101, 115, 116, 114, 111, 121, 32, 109, 101, 32, 105, 110, 32, 100, 105, 115, 103, 117, 115, 116, 33, 0 };
+const uint8_t msgtxt_89[] = {
+84, 114, 121, 32, 97, 32, 100, 105, 102, 102, 101, 114, 101, 110, 116, 32, 68, 105, 114, 101, 99, 116, 105, 111, 110, 0 };
+const uint8_t msgtxt_90[] = {
+65, 32, 67, 97, 114, 118, 105, 110, 103, 32, 111, 102, 32, 77, 111, 117, 110, 116, 32, 79, 108, 121, 109, 112, 117, 115, 0 };
+const uint8_t msgtxt_91[] = {
+84, 104, 101, 32, 82, 111, 111, 102, 32, 105, 115, 32, 109, 105, 115, 115, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_92[] = {
+66, 101, 32, 109, 111, 114, 101, 32, 115, 112, 101, 99, 105, 102, 105, 99, 0 };
+const uint8_t msgtxt_93[] = {
+73, 39, 108, 108, 32, 104, 97, 118, 101, 32, 116, 111, 32, 99, 117, 116, 32, 116, 104, 111, 115, 101, 32, 67, 104, 97, 105, 110, 115, 33, 0 };
+const uint8_t msgtxt_94[] = {
+83, 104, 101, 32, 105, 115, 32, 115, 101, 99, 117, 114, 101, 108, 121, 32, 99, 104, 97, 105, 110, 101, 100, 33, 0 };
+const uint8_t msgtxt_95[] = {
+77, 69, 68, 85, 83, 65, 32, 115, 116, 114, 97, 110, 103, 108, 101, 115, 32, 109, 101, 33, 33, 0 };
+const uint8_t msgtxt_96[] = {
+73, 32, 104, 97, 118, 101, 32, 110, 111, 32, 83, 119, 111, 114, 100, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+       msgtxt_92,
+       msgtxt_93,
+       msgtxt_94,
+       msgtxt_95,
+       msgtxt_96,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       167, 
+       9, 0, 
+       1, 2, 86, 73, 
+/* AUTO  0     */
+       194, 
+       3, 4, 58, 
+/* AUTO  100   */
+       165, 
+       4, 35, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 24, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 21, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 20, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 25, 
+       57, 64, 
+/* AUTO  100   */
+       168, 
+       6, 12, 0, 4, 
+       60, 
+/* AUTO  100   */
+       183, 
+       2, 38, 8, 4, 14, 3, 14, 39, 0, 39, 
+       125, 88, 126, 53, 
+/* AUTO  100   */
+       169, 
+       1, 32, 4, 19, 
+       109, 110, 
+/* AUTO  100   */
+       178, 
+       5, 43, 0, 1, 0, 4, 0, 1, 
+       81, 79, 81, 
+/* AUTO  100   */
+       174, 
+       2, 43, 0, 1, 0, 1, 
+       81, 83, 73, 
+/* AUTO  0     */
+       199, 
+       19, 0, 
+       118, 130, 131, 61, 
+/* AUTO  0     */
+       196, 
+       0, 1, 
+       81, 
+/* AUTO  100   */
+       178, 
+       5, 40, 0, 2, 0, 4, 0, 2, 
+       81, 79, 81, 
+/* AUTO  100   */
+       174, 
+       2, 40, 0, 2, 0, 1, 
+       81, 83, 73, 
+/* AUTO  0     */
+       198, 
+       19, 0, 
+       118, 145, 61, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+/* AUTO  100   */
+       171, 
+       1, 38, 6, 12, 
+       118, 119, 120, 61, 
+/* AUTO  100   */
+       164, 
+       4, 40, 
+       63, 
+};
+const uint8_t actions[] = {
+/* SAVE  ANY   */
+       1, 109, 0, 
+       5, 71, 
+/* INVE  ANY   */
+       1, 9, 0, 
+       5, 66, 
+/* WEAR  SAND  */
+       13, 22, 30, 
+       1, 19, 0, 19, 0, 49, 
+       5, 72, 
+/* REMO  SAND  */
+       11, 24, 30, 
+       1, 49, 8, 1, 
+       5, 11, 12, 61, 
+/* REMO  SAND  */
+       17, 24, 30, 
+       1, 49, 9, 1, 0, 49, 0, 19, 
+       5, 72, 
+/* GET   SAND  */
+       9, 10, 30, 
+       3, 19, 0, 19, 
+       52, 5, 
+/* KILL  KRAK  */
+       7, 69, 62, 
+       2, 43, 
+       118, 130, 131, 61, 
+/* WAIT  ANY   */
+       23, 113, 0, 
+       9, 1, 4, 37, 1, 49, 0, 13, 0, 1, 
+       13, 88, 54, 73, 
+/* AUTO  0     */
+       197, 
+       0, 1, 
+       58, 14, 
+/* WAIT  ANY   */
+       23, 113, 0, 
+       9, 1, 4, 38, 1, 49, 0, 14, 0, 1, 
+       13, 88, 54, 73, 
+/* AUTO  0     */
+       197, 
+       0, 1, 
+       58, 14, 
+/* WAIT  ANY   */
+       23, 113, 0, 
+       9, 1, 4, 39, 1, 49, 0, 17, 0, 1, 
+       13, 88, 54, 73, 
+/* AUTO  0     */
+       197, 
+       0, 1, 
+       58, 14, 
+/* GO    CAVE  */
+       9, 1, 28, 
+       4, 8, 0, 9, 
+       5, 54, 
+/* EXAM  STAT  */
+       23, 102, 27, 
+       2, 15, 14, 18, 14, 53, 0, 15, 0, 52, 
+       6, 8, 72, 64, 
+/* GET   HELM  */
+       5, 10, 69, 
+       2, 52, 
+       25, 26, 
+/* THRO  DISC  */
+       5, 85, 18, 
+       1, 8, 
+       33, 34, 
+/* AT    STAT  */
+       15, 116, 27, 
+       1, 8, 2, 52, 0, 8, 
+       88, 27, 53, 73, 
+/* AUTO  0     */
+       207, 
+       0, 52, 0, 15, 0, 18, 
+       72, 53, 29, 30, 
+/* GET   HELM  */
+       9, 10, 69, 
+       2, 18, 0, 18, 
+       52, 5, 
+/* GO    CRAC  */
+       10, 1, 47, 
+       4, 19, 1, 19, 
+       25, 14, 108, 
+/* WEAR  HELM  */
+       19, 22, 69, 
+       1, 18, 0, 18, 0, 53, 0, 2, 
+       72, 58, 29, 31, 
+/* REMO  HELM  */
+       19, 24, 69, 
+       1, 53, 0, 53, 0, 18, 0, 2, 
+       5, 72, 60, 32, 
+/* EXAM  BEGG  */
+       4, 102, 15, 
+       2, 7, 
+       19, 
+/* GIVE  WATE  */
+       23, 42, 70, 
+       1, 50, 2, 7, 14, 8, 0, 50, 0, 5, 
+       72, 16, 17, 73, 
+/* AUTO  0     */
+       203, 
+       0, 8, 0, 7, 
+       53, 55, 18, 35, 
+/* GO    DAIS  */
+       9, 1, 22, 
+       4, 5, 0, 6, 
+       54, 5, 
+/* PRAY  ANY   */
+       15, 40, 0, 
+       4, 6, 14, 12, 1, 8, 
+       5, 13, 88, 73, 
+/* AUTO  0     */
+       199, 
+       0, 12, 
+       53, 36, 37, 38, 
+/* AUTO  0     */
+       195, 
+       39, 40, 64, 64, 
+/* PRAY  ANY   */
+       23, 40, 0, 
+       4, 11, 1, 8, 14, 19, 14, 49, 0, 19, 
+       13, 88, 53, 41, 
+/* FLY   NORT  */
+       15, 35, 1, 
+       1, 49, 4, 13, 0, 14, 
+       5, 43, 88, 54, 
+/* FLY   DOWN  */
+       15, 35, 6, 
+       4, 13, 0, 37, 0, 1, 
+       5, 88, 54, 60, 
+/* FLY   SOUT  */
+       15, 35, 2, 
+       8, 1, 4, 14, 0, 13, 
+       5, 43, 88, 54, 
+/* FLY   DOWN  */
+       15, 35, 6, 
+       4, 14, 0, 38, 0, 1, 
+       5, 88, 54, 60, 
+/* GET   WATE  */
+       18, 10, 70, 
+       1, 5, 4, 8, 0, 5, 0, 50, 
+       5, 72, 44, 
+/* EXAM  PEAS  */
+       8, 102, 35, 
+       2, 20, 14, 45, 
+       45, 
+/* GIVE  FRUI  */
+       19, 42, 37, 
+       2, 20, 1, 25, 14, 27, 0, 25, 
+       46, 88, 47, 73, 
+/* AUTO  0     */
+       201, 
+       0, 25, 0, 26, 
+       62, 48, 
+/* GIVE  FRUI  */
+       23, 42, 37, 
+       1, 25, 14, 26, 0, 45, 0, 10, 0, 25, 
+       46, 49, 88, 73, 
+/* AUTO  0     */
+       207, 
+       0, 45, 0, 10, 0, 25, 
+       18, 53, 53, 55, 
+/* EXAM  PARC  */
+       5, 102, 66, 
+       3, 18, 
+       50, 51, 
+/* GIVE  BERR  */
+       23, 42, 34, 
+       1, 23, 2, 20, 0, 26, 0, 27, 0, 23, 
+       46, 47, 48, 73, 
+/* AUTO  0     */
+       207, 
+       0, 26, 0, 27, 0, 23, 
+       102, 103, 72, 55, 
+/* FLY   EAST  */
+       11, 35, 3, 
+       4, 14, 0, 17, 
+       5, 43, 88, 54, 
+/* FLY   DOWN  */
+       15, 35, 6, 
+       4, 17, 0, 39, 0, 1, 
+       5, 88, 54, 60, 
+/* WAIT  ANY   */
+       19, 113, 0, 
+       1, 49, 4, 16, 0, 1, 0, 26, 
+       14, 88, 58, 54, 
+/* FLY   DOWN  */
+       19, 35, 6, 
+       8, 1, 4, 26, 0, 1, 0, 16, 
+       5, 88, 60, 54, 
+/* GO    TEMP  */
+       10, 1, 21, 
+       4, 7, 0, 11, 
+       5, 54, 64, 
+/* EXAM  KING  */
+       5, 102, 9, 
+       2, 0, 
+       20, 21, 
+/* KILL  KING  */
+       6, 69, 9, 
+       2, 0, 
+       22, 24, 61, 
+/* GO    PALA  */
+       9, 1, 13, 
+       4, 3, 0, 1, 
+       54, 5, 
+/* GO    PEDE  */
+       9, 1, 71, 
+       4, 11, 0, 37, 
+       54, 5, 
+/* GO    PEDE  */
+       9, 1, 71, 
+       4, 12, 0, 38, 
+       54, 5, 
+/* GO    PEDE  */
+       9, 1, 71, 
+       4, 18, 0, 39, 
+       54, 5, 
+/* EAT   WATE  */
+       15, 117, 70, 
+       3, 50, 0, 50, 0, 5, 
+       5, 88, 72, 107, 
+/* EXAM  SACK  */
+       6, 102, 16, 
+       1, 5, 
+       5, 10, 9, 
+/* GO    CAVE  */
+       9, 1, 28, 
+       4, 24, 0, 35, 
+       54, 5, 
+/* GO    CRAC  */
+       11, 1, 47, 
+       4, 19, 1, 49, 
+       5, 88, 14, 108, 
+/* GO    CRAC  */
+       17, 1, 47, 
+       4, 19, 6, 49, 6, 19, 0, 20, 
+       5, 54, 
+/* LIGH  TORC  */
+       18, 26, 64, 
+       1, 35, 2, 34, 0, 35, 0, 9, 
+       5, 72, 64, 
+/* UNLI  TORC  */
+       14, 29, 64, 
+       1, 9, 0, 9, 0, 35, 
+       5, 72, 64, 
+/* EXAM  GRAI  */
+       15, 102, 43, 
+       2, 31, 14, 32, 0, 32, 
+       5, 6, 8, 53, 
+/* GET   EYE   */
+       13, 10, 42, 
+       2, 32, 1, 53, 0, 32, 
+       52, 5, 
+/* GET   EYE   */
+       15, 10, 42, 
+       2, 32, 2, 31, 6, 53, 
+       109, 111, 24, 61, 
+/* GIVE  EYE   */
+       15, 42, 42, 
+       1, 32, 2, 31, 0, 32, 
+       109, 112, 113, 73, 
+/* AUTO  0     */
+       201, 
+       0, 32, 0, 36, 
+       55, 53, 
+/* GET   EYE   */
+       13, 10, 42, 
+       2, 32, 5, 31, 0, 32, 
+       52, 5, 
+/* EXAM  THOR  */
+       19, 102, 32, 
+       4, 15, 14, 23, 14, 27, 0, 23, 
+       5, 53, 10, 8, 
+/* EAT   BERR  */
+       7, 117, 34, 
+       3, 23, 
+       5, 88, 114, 61, 
+/* FLY   NORT  */
+       15, 35, 1, 
+       1, 49, 4, 14, 0, 17, 
+       5, 43, 88, 54, 
+/* FLY   DOWN  */
+       15, 35, 6, 
+       1, 49, 4, 17, 0, 39, 
+       5, 88, 54, 60, 
+/* FLY   SOUT  */
+       15, 35, 2, 
+       1, 49, 4, 17, 0, 14, 
+       5, 43, 88, 54, 
+/* GET   HALT  */
+       15, 10, 45, 
+       2, 29, 9, 3, 0, 28, 
+       5, 53, 64, 73, 
+/* AUTO  0     */
+       199, 
+       0, 28, 
+       88, 115, 116, 55, 
+/* GET   HALT  */
+       19, 10, 45, 
+       8, 3, 14, 28, 0, 28, 0, 29, 
+       5, 53, 64, 73, 
+/* AUTO  0     */
+       203, 
+       0, 29, 0, 28, 
+       88, 52, 115, 117, 
+/* SPRE  NET   */
+       23, 122, 48, 
+       4, 34, 1, 33, 0, 33, 0, 58, 0, 3, 
+       5, 55, 53, 58, 
+/* DROP  HALT  */
+       9, 18, 45, 
+       1, 29, 0, 29, 
+       53, 5, 
+/* CLIM  TEMP  */
+       9, 90, 21, 
+       4, 32, 0, 34, 
+       5, 54, 
+/* WAIT  ANY   */
+       23, 113, 0, 
+       4, 22, 14, 37, 9, 4, 14, 40, 0, 37, 
+       13, 88, 53, 73, 
+/* AUTO  0     */
+       195, 
+       64, 88, 118, 119, 
+/* AUTO  0     */
+       193, 
+       120, 61, 
+/* WAIT  ANY   */
+       19, 113, 0, 
+       4, 22, 8, 4, 14, 40, 0, 40, 
+       13, 88, 53, 64, 
+/* EXAM  SHIE  */
+       15, 102, 24, 
+       4, 22, 1, 12, 0, 4, 
+       5, 121, 122, 58, 
+/* CUT   MEDU  */
+       19, 62, 52, 
+       2, 40, 1, 45, 0, 40, 0, 36, 
+       5, 123, 62, 73, 
+/* AUTO  0     */
+       206, 
+       0, 38, 0, 23, 0, 59, 
+       62, 124, 53, 
+/* EXAM  SHIE  */
+       9, 102, 24, 
+       7, 22, 1, 12, 
+       5, 122, 
+/* FEED  PEAS  */
+       4, 121, 35, 
+       2, 20, 
+       127, 
+/* GO    PEGA  */
+       15, 1, 54, 
+       2, 39, 0, 25, 0, 23, 
+       5, 54, 64, 73, 
+/* AUTO  0     */
+       199, 
+       0, 23, 
+       88, 54, 64, 128, 
+/* GO    PEGA  */
+       10, 1, 54, 
+       2, 3, 0, 25, 
+       5, 54, 64, 
+/* GO    PEGA  */
+       11, 1, 54, 
+       4, 25, 0, 27, 
+       43, 88, 54, 129, 
+/* CUT   CHAI  */
+       15, 62, 58, 
+       2, 43, 2, 41, 1, 45, 
+       118, 130, 131, 61, 
+/* CUT   CHAI  */
+       19, 62, 58, 
+       1, 45, 2, 44, 0, 41, 0, 42, 
+       5, 72, 64, 73, 
+/* AUTO  0     */
+       195, 
+       132, 36, 37, 38, 
+/* AUTO  0     */
+       195, 
+       133, 134, 135, 63, 
+/* WAVE  HEAD  */
+       19, 124, 53, 
+       1, 38, 2, 43, 0, 43, 0, 44, 
+       130, 136, 88, 73, 
+/* AUTO  0     */
+       203, 
+       0, 43, 0, 44, 
+       72, 137, 64, 64, 
+/* RAPE  ANDR  */
+       6, 51, 60, 
+       2, 41, 
+       118, 138, 61, 
+/* DROP  ANY   */
+       4, 18, 0, 
+       4, 17, 
+       25, 
+/* DROP  ANY   */
+       4, 18, 0, 
+       4, 14, 
+       25, 
+/* DROP  ANY   */
+       4, 18, 0, 
+       4, 13, 
+       25, 
+/* DROP  ANY   */
+       4, 18, 0, 
+       4, 25, 
+       25, 
+/* DROP  DISC  */
+       9, 18, 18, 
+       1, 8, 0, 8, 
+       53, 5, 
+/* DROP  SACK  */
+       9, 18, 16, 
+       1, 5, 0, 5, 
+       53, 5, 
+/* DROP  TORC  */
+       9, 18, 64, 
+       1, 9, 0, 9, 
+       53, 5, 
+/* DROP  PARC  */
+       9, 18, 66, 
+       1, 10, 0, 10, 
+       53, 5, 
+/* DROP  SHIE  */
+       9, 18, 24, 
+       1, 12, 0, 12, 
+       53, 5, 
+/* DROP  BERR  */
+       9, 18, 34, 
+       1, 23, 0, 23, 
+       53, 5, 
+/* DROP  FRUI  */
+       9, 18, 37, 
+       1, 25, 0, 25, 
+       53, 5, 
+/* DROP  HALT  */
+       9, 18, 45, 
+       1, 29, 0, 29, 
+       53, 5, 
+/* DROP  NET   */
+       9, 18, 48, 
+       1, 33, 0, 33, 
+       53, 5, 
+/* DROP  TORC  */
+       9, 18, 64, 
+       1, 35, 0, 35, 
+       53, 5, 
+/* DROP  HEAD  */
+       9, 18, 53, 
+       1, 38, 0, 38, 
+       53, 5, 
+/* DROP  SWOR  */
+       9, 18, 26, 
+       1, 45, 0, 45, 
+       53, 5, 
+/* DROP  SACK  */
+       9, 18, 16, 
+       1, 50, 0, 50, 
+       53, 5, 
+/* DROP  SAND  */
+       9, 18, 30, 
+       1, 19, 0, 19, 
+       53, 5, 
+/* DROP  HELM  */
+       9, 18, 69, 
+       1, 18, 0, 18, 
+       53, 5, 
+/* DROP  EYE   */
+       9, 18, 42, 
+       1, 32, 0, 32, 
+       53, 5, 
+/* FLY   ANY   */
+       5, 35, 0, 
+       4, 13, 
+       25, 139, 
+/* FLY   ANY   */
+       5, 35, 0, 
+       4, 14, 
+       25, 139, 
+/* FLY   ANY   */
+       5, 35, 0, 
+       4, 17, 
+       25, 139, 
+/* GET   HALT  */
+       13, 10, 45, 
+       2, 29, 13, 28, 0, 29, 
+       52, 5, 
+/* FIT   HALT  */
+       22, 127, 45, 
+       2, 39, 1, 29, 0, 29, 0, 39, 0, 3, 
+       55, 72, 5, 
+/* EAT   FRUI  */
+       13, 117, 37, 
+       3, 25, 0, 25, 0, 36, 
+       62, 107, 
+/* EXAM  DISC  */
+       6, 102, 18, 
+       3, 8, 
+       5, 6, 140, 
+/* EXAM  TEMP  */
+       5, 102, 21, 
+       4, 32, 
+       6, 141, 
+/* KILL  MEDU  */
+       4, 69, 52, 
+       2, 40, 
+       142, 
+/* FREE  ANDR  */
+       4, 128, 60, 
+       2, 41, 
+       143, 
+/* EXAM  ANDR  */
+       4, 102, 60, 
+       2, 41, 
+       144, 
+/* QUIT  ANY   */
+       0, 93, 0, 
+       63, 
+/* CUT   MEDU  */
+       8, 62, 52, 
+       2, 40, 6, 45, 
+       146, 
+/* CUT   CHAI  */
+       8, 62, 58, 
+       4, 28, 6, 45, 
+       146, 
+/* GET   NET   */
+       9, 10, 48, 
+       2, 33, 0, 33, 
+       52, 5, 
+/* AT    ANY   */
+       0, 116, 0, 
+       25, 
+/* HELP  ANY   */
+       1, 17, 0, 
+       25, 15, 
+/* KILL  ANY   */
+       1, 69, 0, 
+       25, 23, 
+/* EXAM  HEAD  */
+       7, 102, 53, 
+       3, 38, 
+       118, 119, 120, 61, 
+/* PRAY  ANY   */
+       1, 40, 0, 
+       5, 104, 
+/* WAIT  ANY   */
+       3, 113, 0, 
+       5, 13, 88, 88, 
+/* FUCK  ANY   */
+       0, 45, 0, 
+       105, 
+/* EXAM  ANY   */
+       1, 102, 0, 
+       6, 7, 
+/* CLIM  ANY   */
+       0, 90, 0, 
+       25, 
+/* SAY   ANY   */
+       1, 77, 0, 
+       5, 85, 
+/* EAT   ANY   */
+       0, 117, 0, 
+       106, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* *PROC */
+       208, 82, 79, 67,
+       /* *RUN */
+       210, 85, 78, 32,
+       /* *WALK */
+       215, 65, 76, 75,
+       /* *RIDE */
+       210, 73, 68, 69,
+       /* *MOUN */
+       205, 79, 85, 78,
+       /* *SWIM */
+       211, 87, 73, 77,
+       /* INVE */
+       73, 78, 86, 69,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *ACQU */
+       193, 67, 81, 85,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* *SEIZ */
+       211, 69, 73, 90,
+       /* *PICK */
+       208, 73, 67, 75,
+       /* *OBTA */
+       207, 66, 84, 65,
+       /* HELP */
+       72, 69, 76, 80,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *DISC */
+       196, 73, 83, 67,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* *DON */
+       196, 79, 78, 32,
+       /* REMO */
+       82, 69, 77, 79,
+       /* *DOFF */
+       196, 79, 70, 70,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* *IGNI */
+       201, 71, 78, 73,
+       /* *BURN */
+       194, 85, 82, 78,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* *EXTI */
+       197, 88, 84, 73,
+       /* *DOUS */
+       196, 79, 85, 83,
+       /* RUB */
+       82, 85, 66, 32,
+       /* *POLI */
+       208, 79, 76, 73,
+       /* *SHIN */
+       211, 72, 73, 78,
+       /* FLY */
+       70, 76, 89, 32,
+       /* *FLUT */
+       198, 76, 85, 84,
+       /* *FLAP */
+       198, 76, 65, 80,
+       /* *WING */
+       215, 73, 78, 71,
+       /* *HOVE */
+       200, 79, 86, 69,
+       /* PRAY */
+       80, 82, 65, 89,
+       /* *WORS */
+       215, 79, 82, 83,
+       /* GIVE */
+       71, 73, 86, 69,
+       /* *OFFE */
+       207, 70, 70, 69,
+       /* *DONA */
+       196, 79, 78, 65,
+       /* FUCK */
+       70, 85, 67, 75,
+       /* *PISS */
+       208, 73, 83, 83,
+       /* *BOLL */
+       194, 79, 76, 76,
+       /* *BAST */
+       194, 65, 83, 84,
+       /* *SHIT */
+       211, 72, 73, 84,
+       /* *WANK */
+       215, 65, 78, 75,
+       /* RAPE */
+       82, 65, 80, 69,
+       /* *SEDU */
+       211, 69, 68, 85,
+       /* *UNDR */
+       213, 78, 68, 82,
+       /* *RAVA */
+       210, 65, 86, 65,
+       /* KISS */
+       75, 73, 83, 83,
+       /* *CARE */
+       195, 65, 82, 69,
+       /* *STRO */
+       211, 84, 82, 79,
+       /* *FOND */
+       198, 79, 78, 68,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* *LEAP */
+       204, 69, 65, 80,
+       /* *SPRI */
+       211, 80, 82, 73,
+       /* CUT */
+       67, 85, 84, 32,
+       /* *CHOP */
+       195, 72, 79, 80,
+       /* *HACK */
+       200, 65, 67, 75,
+       /* *SLIC */
+       211, 76, 73, 67,
+       /* *SEVE */
+       211, 69, 86, 69,
+       /* *BEHE */
+       194, 69, 72, 69,
+       /* *DECA */
+       196, 69, 67, 65,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* *DEST */
+       196, 69, 83, 84,
+       /* *BREA */
+       194, 82, 69, 65,
+       /* *RUIN */
+       210, 85, 73, 78,
+       /* *SMAS */
+       211, 77, 65, 83,
+       /* *FIGH */
+       198, 73, 71, 72,
+       /* *BATT */
+       194, 65, 84, 84,
+       /* SAY */
+       83, 65, 89, 32,
+       /* *ASK */
+       193, 83, 75, 32,
+       /* *SPEA */
+       211, 80, 69, 65,
+       /* *TALK */
+       212, 65, 76, 75,
+       /* *WHIS */
+       215, 72, 73, 83,
+       /* USE */
+       85, 83, 69, 32,
+       /* *UTIL */
+       213, 84, 73, 76,
+       /* *EMPL */
+       197, 77, 80, 76,
+       /* THRO */
+       84, 72, 82, 79,
+       /* *SLIN */
+       211, 76, 73, 78,
+       /* *CHUC */
+       195, 72, 85, 67,
+       /* *TOSS */
+       212, 79, 83, 83,
+       /* *HURL */
+       200, 85, 82, 76,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* *ASCE */
+       193, 83, 67, 69,
+       /* *SCAL */
+       211, 67, 65, 76,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* PULL */
+       80, 85, 76, 76,
+       /* *TUG */
+       212, 85, 71, 32,
+       /* PUSH */
+       80, 85, 83, 72,
+       /* *PRES */
+       208, 82, 69, 83,
+       /* *SHOV */
+       211, 72, 79, 86,
+       /* *MOVE */
+       205, 79, 86, 69,
+       /* *SHIF */
+       211, 72, 73, 70,
+       /* EXAM */
+       69, 88, 65, 77,
+       /* *LOOK */
+       204, 79, 79, 75,
+       /* *SEAR */
+       211, 69, 65, 82,
+       /* *INSP */
+       201, 78, 83, 80,
+       /* *READ */
+       210, 69, 65, 68,
+       /* *OPEN */
+       207, 80, 69, 78,
+       /* *STUD */
+       211, 84, 85, 68,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* SPIN */
+       83, 80, 73, 78,
+       /* *TURN */
+       212, 85, 82, 78,
+       /* *TWIS */
+       212, 87, 73, 83,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* *DELA */
+       196, 69, 76, 65,
+       /* *STAL */
+       211, 84, 65, 76,
+       /* AT */
+       65, 84, 32, 32,
+       /* EAT */
+       69, 65, 84, 32,
+       /* *TAST */
+       212, 65, 83, 84,
+       /* *NIBB */
+       206, 73, 66, 66,
+       /* *DRIN */
+       196, 82, 73, 78,
+       /* FEED */
+       70, 69, 69, 68,
+       /* SPRE */
+       83, 80, 82, 69,
+       /* *LAY */
+       204, 65, 89, 32,
+       /* WAVE */
+       87, 65, 86, 69,
+       /* *SHOW */
+       211, 72, 79, 87,
+       /* *DISP */
+       196, 73, 83, 80,
+       /* FIT */
+       70, 73, 84, 32,
+       /* FREE */
+       70, 82, 69, 69,
+       /* *RELE */
+       210, 69, 76, 69,
+       /* DIG */
+       68, 73, 71, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* GOLD */
+       71, 79, 76, 68,
+       /* *COIN */
+       195, 79, 73, 78,
+       /* KING */
+       75, 73, 78, 71,
+       /* *POLY */
+       208, 79, 76, 89,
+       /* CHAM */
+       67, 72, 65, 77,
+       /* HALL */
+       72, 65, 76, 76,
+       /* PALA */
+       80, 65, 76, 65,
+       /* ROAD */
+       82, 79, 65, 68,
+       /* BEGG */
+       66, 69, 71, 71,
+       /* SACK */
+       83, 65, 67, 75,
+       /* *LEAT */
+       204, 69, 65, 84,
+       /* DISC */
+       68, 73, 83, 67,
+       /* TREE */
+       84, 82, 69, 69,
+       /* *STUM */
+       211, 84, 85, 77,
+       /* TEMP */
+       84, 69, 77, 80,
+       /* DAIS */
+       68, 65, 73, 83,
+       /* ALTA */
+       65, 76, 84, 65,
+       /* SHIE */
+       83, 72, 73, 69,
+       /* STON */
+       83, 84, 79, 78,
+       /* SWOR */
+       83, 87, 79, 82,
+       /* STAT */
+       83, 84, 65, 84,
+       /* CAVE */
+       67, 65, 86, 69,
+       /* *ENTR */
+       197, 78, 84, 82,
+       /* SAND */
+       83, 65, 78, 68,
+       /* *WING */
+       215, 73, 78, 71,
+       /* THOR */
+       84, 72, 79, 82,
+       /* *BUSH */
+       194, 85, 83, 72,
+       /* BERR */
+       66, 69, 82, 82,
+       /* PEAS */
+       80, 69, 65, 83,
+       /* *BLIN */
+       194, 76, 73, 78,
+       /* FRUI */
+       70, 82, 85, 73,
+       /* HARP */
+       72, 65, 82, 80,
+       /* TABL */
+       84, 65, 66, 76,
+       /* CLEA */
+       67, 76, 69, 65,
+       /* WOOD */
+       87, 79, 79, 68,
+       /* EYE */
+       69, 89, 69, 32,
+       /* GRAI */
+       71, 82, 65, 73,
+       /* *WITC */
+       215, 73, 84, 67,
+       /* HALT */
+       72, 65, 76, 84,
+       /* *SILV */
+       211, 73, 76, 86,
+       /* CRAC */
+       67, 82, 65, 67,
+       /* NET */
+       78, 69, 84, 32,
+       /* TUNN */
+       84, 85, 78, 78,
+       /* CHAM */
+       67, 72, 65, 77,
+       /* REFL */
+       82, 69, 70, 76,
+       /* MEDU */
+       77, 69, 68, 85,
+       /* HEAD */
+       72, 69, 65, 68,
+       /* PEGA */
+       80, 69, 71, 65,
+       /* *HORS */
+       200, 79, 82, 83,
+       /* MANE */
+       77, 65, 78, 69,
+       /* ISLE */
+       73, 83, 76, 69,
+       /* CHAI */
+       67, 72, 65, 73,
+       /* *SHAC */
+       211, 72, 65, 67,
+       /* ANDR */
+       65, 78, 68, 82,
+       /* *MAID */
+       205, 65, 73, 68,
+       /* KRAK */
+       75, 82, 65, 75,
+       /* *MONS */
+       205, 79, 78, 83,
+       /* TORC */
+       84, 79, 82, 67,
+       /* *FLAM */
+       198, 76, 65, 77,
+       /* PARC */
+       80, 65, 82, 67,
+       /* HYEN */
+       72, 89, 69, 78,
+       /* GAUN */
+       71, 65, 85, 78,
+       /* HELM */
+       72, 69, 76, 77,
+       /* WATE */
+       87, 65, 84, 69,
+       /* PEDE */
+       80, 69, 68, 69,
+       /* *IVOR */
+       201, 86, 79, 82,
+       /* THRO */
+       84, 72, 82, 79,
+       /* GUAR */
+       71, 85, 65, 82,
+       /* OFF */
+       79, 70, 70, 32,
+       /* *YOU */
+       217, 79, 85, 32,
+       /* POOL */
+       80, 79, 79, 76,
+       /* FIRE */
+       70, 73, 82, 69,
+       /* *COOK */
+       195, 79, 79, 75,
+       /* CARC */
+       67, 65, 82, 67,
+       /* HELL */
+       72, 69, 76, 76,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t automap[] = {
+       /* SACK */
+       83, 65, 67, 75,
+       5,
+       /* DISC */
+       68, 73, 83, 67,
+       8,
+       /* TORC */
+       84, 79, 82, 67,
+       9,
+       /* PARC */
+       80, 65, 82, 67,
+       10,
+       /* SHIE */
+       83, 72, 73, 69,
+       12,
+       /* BERR */
+       66, 69, 82, 82,
+       23,
+       /* FRUI */
+       70, 82, 85, 73,
+       25,
+       /* TORC */
+       84, 79, 82, 67,
+       35,
+       /* HEAD */
+       72, 69, 65, 68,
+       38,
+       /* SWOR */
+       83, 87, 79, 82,
+       45,
+       /* SACK */
+       83, 65, 67, 75,
+       50,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst10.c b/Applications/games/myst10.c
new file mode 100644 (file)
index 0000000..8e92ea3
--- /dev/null
@@ -0,0 +1,2947 @@
+#define NUM_OBJ 73
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 255;
+const uint8_t lightfill = 255;
+const uint8_t startcarried = 0;
+const uint8_t maxcar = 5;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 63;
+const uint8_t startloc = 61;
+const uint8_t loctxt_0[] = {
+67, 111, 112, 121, 114, 105, 103, 104, 116, 32, 40, 67, 41, 32, 49, 57, 56, 51, 32, 32, 98, 121, 32, 66, 114, 105, 97, 110, 32, 72, 111, 119, 97, 114, 116, 104, 0 };
+const uint8_t loctxt_1[] = {
+66, 97, 116, 104, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_2[] = {
+66, 111, 105, 108, 101, 114, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_3[] = {
+71, 114, 101, 101, 110, 32, 66, 101, 100, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_4[] = {
+77, 97, 115, 116, 101, 114, 32, 66, 101, 100, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_5[] = {
+68, 114, 101, 115, 115, 105, 110, 103, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_6[] = {
+68, 105, 110, 105, 110, 103, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_7[] = {
+75, 105, 116, 99, 104, 101, 110, 0 };
+const uint8_t loctxt_8[] = {
+76, 105, 98, 114, 97, 114, 121, 0 };
+const uint8_t loctxt_9[] = {
+66, 108, 117, 101, 32, 66, 101, 100, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_10[] = {
+71, 114, 101, 101, 110, 32, 66, 97, 116, 104, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_11[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 66, 97, 99, 107, 32, 83, 116, 97, 105, 114, 115, 0 };
+const uint8_t loctxt_12[] = {
+85, 116, 101, 110, 115, 105, 108, 32, 83, 116, 111, 114, 101, 0 };
+const uint8_t loctxt_13[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 85, 112, 112, 101, 114, 32, 72, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_14[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 83, 116, 97, 105, 114, 115, 0 };
+const uint8_t loctxt_15[] = {
+72, 97, 108, 108, 119, 97, 121, 0 };
+const uint8_t loctxt_16[] = {
+76, 111, 117, 110, 103, 101, 0 };
+const uint8_t loctxt_17[] = {
+83, 116, 117, 100, 121, 0 };
+const uint8_t loctxt_18[] = {
+66, 108, 117, 101, 32, 66, 97, 116, 104, 114, 111, 111, 109, 0 };
+const uint8_t loctxt_19[] = {
+66, 117, 116, 108, 101, 114, 115, 32, 80, 97, 110, 116, 114, 121, 0 };
+const uint8_t loctxt_20[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 70, 114, 111, 110, 116, 32, 111, 102, 32, 97, 32, 77, 97, 110, 115, 105, 111, 110, 0 };
+const uint8_t loctxt_21[] = {
+67, 111, 110, 115, 101, 114, 118, 97, 116, 111, 114, 121, 0 };
+const uint8_t loctxt_22[] = {
+80, 111, 116, 116, 105, 110, 103, 32, 83, 104, 101, 100, 0 };
+const uint8_t loctxt_23[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 83, 116, 111, 110, 101, 32, 66, 97, 108, 99, 111, 110, 121, 0 };
+const uint8_t loctxt_24[] = {
+87, 97, 108, 108, 101, 100, 32, 71, 97, 114, 100, 101, 110, 0 };
+const uint8_t loctxt_25[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 111, 112, 32, 111, 102, 32, 97, 32, 70, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t loctxt_26[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 71, 114, 97, 118, 101, 108, 32, 68, 114, 105, 118, 101, 0 };
+const uint8_t loctxt_27[] = {
+87, 97, 105, 116, 105, 110, 103, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_28[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 80, 108, 97, 116, 102, 111, 114, 109, 0 };
+const uint8_t loctxt_29[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 82, 111, 111, 102, 0 };
+const uint8_t loctxt_30[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 83, 116, 111, 110, 101, 32, 66, 97, 108, 117, 115, 116, 114, 97, 100, 101, 0 };
+const uint8_t loctxt_31[] = {
+71, 114, 101, 101, 110, 104, 111, 117, 115, 101, 0 };
+const uint8_t loctxt_32[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 71, 97, 116, 101, 32, 84, 111, 119, 101, 114, 0 };
+const uint8_t loctxt_33[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 71, 97, 116, 101, 32, 72, 111, 117, 115, 101, 0 };
+const uint8_t loctxt_34[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 72, 105, 103, 104, 32, 87, 97, 108, 108, 0 };
+const uint8_t loctxt_35[] = {
+82, 97, 105, 108, 119, 97, 121, 32, 67, 97, 114, 114, 105, 97, 103, 101, 0 };
+const uint8_t loctxt_36[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 67, 104, 105, 109, 110, 101, 121, 32, 83, 116, 97, 99, 107, 0 };
+const uint8_t loctxt_37[] = {
+82, 117, 105, 110, 101, 100, 32, 65, 114, 98, 111, 117, 114, 0 };
+const uint8_t loctxt_38[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 67, 111, 117, 110, 116, 114, 121, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_39[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 82, 97, 105, 108, 119, 97, 121, 32, 76, 105, 110, 101, 115, 0 };
+const uint8_t loctxt_40[] = {
+82, 97, 105, 108, 119, 97, 121, 32, 67, 97, 114, 114, 105, 97, 103, 101, 0 };
+const uint8_t loctxt_41[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 82, 105, 118, 101, 114, 0 };
+const uint8_t loctxt_42[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 82, 105, 118, 101, 114, 32, 66, 101, 100, 0 };
+const uint8_t loctxt_43[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 82, 111, 111, 102, 0 };
+const uint8_t loctxt_44[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 67, 111, 117, 110, 116, 114, 121, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_45[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 67, 111, 117, 110, 116, 114, 121, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_46[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 80, 108, 97, 116, 102, 111, 114, 109, 0 };
+const uint8_t loctxt_47[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 116, 104, 101, 32, 87, 104, 97, 114, 102, 32, 80, 105, 108, 105, 110, 103, 115, 0 };
+const uint8_t loctxt_48[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 67, 105, 114, 99, 117, 108, 97, 114, 32, 80, 97, 116, 104, 0 };
+const uint8_t loctxt_49[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 82, 111, 111, 102, 0 };
+const uint8_t loctxt_50[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 67, 111, 117, 110, 116, 114, 121, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_51[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 67, 111, 117, 110, 116, 114, 121, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_52[] = {
+87, 97, 105, 116, 105, 110, 103, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_53[] = {
+84, 105, 99, 107, 101, 116, 32, 79, 102, 102, 105, 99, 101, 0 };
+const uint8_t loctxt_54[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 82, 105, 99, 107, 101, 116, 121, 32, 111, 108, 100, 32, 87, 104, 97, 114, 102, 0 };
+const uint8_t loctxt_55[] = {
+68, 101, 114, 101, 108, 105, 99, 116, 32, 87, 97, 114, 101, 104, 111, 117, 115, 101, 0 };
+const uint8_t loctxt_56[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 76, 97, 119, 110, 0 };
+const uint8_t loctxt_57[] = {
+83, 111, 102, 116, 32, 70, 108, 111, 119, 101, 114, 98, 101, 100, 0 };
+const uint8_t loctxt_58[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 67, 111, 117, 110, 116, 114, 121, 32, 82, 111, 97, 100, 0 };
+const uint8_t loctxt_59[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 77, 117, 100, 100, 121, 32, 82, 105, 118, 101, 114, 98, 97, 110, 107, 0 };
+const uint8_t loctxt_60[] = {
+42, 73, 39, 109, 32, 111, 110, 32, 97, 32, 67, 105, 114, 99, 117, 108, 97, 114, 32, 80, 97, 116, 104, 0 };
+const uint8_t loctxt_61[] = {
+82, 97, 105, 108, 119, 97, 121, 32, 67, 97, 114, 114, 105, 97, 103, 101, 0 };
+const uint8_t loctxt_62[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 110, 32, 69, 98, 111, 110, 121, 32, 83, 116, 97, 110, 100, 0 };
+const uint8_t loctxt_63[] = {
+42, 73, 32, 116, 104, 105, 110, 107, 32, 73, 32, 100, 105, 100, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 119, 114, 111, 110, 103, 32, 33, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 0, 0, 5, 0, 0, 0 } }, 
+               { loctxt_2,  { 0, 0, 0, 0, 7, 0 } }, 
+               { loctxt_3,  { 0, 13, 10, 0, 0, 0 } }, 
+               { loctxt_4,  { 0, 5, 13, 0, 0, 0 } }, 
+               { loctxt_5,  { 4, 0, 0, 1, 0, 0 } }, 
+               { loctxt_6,  { 0, 7, 15, 0, 0, 0 } }, 
+               { loctxt_7,  { 6, 0, 0, 0, 0, 0 } }, 
+               { loctxt_8,  { 62, 0, 17, 0, 0, 0 } }, 
+               { loctxt_9,  { 0, 0, 18, 13, 0, 0 } }, 
+               { loctxt_10,  { 0, 0, 0, 3, 0, 0 } }, 
+               { loctxt_11,  { 0, 0, 0, 0, 10, 19 } }, 
+               { loctxt_12,  { 0, 0, 19, 0, 0, 0 } }, 
+               { loctxt_13,  { 3, 0, 9, 4, 0, 14 } }, 
+               { loctxt_14,  { 0, 0, 0, 0, 13, 15 } }, 
+               { loctxt_15,  { 0, 16, 20, 6, 0, 0 } }, 
+               { loctxt_16,  { 15, 17, 21, 0, 0, 0 } }, 
+               { loctxt_17,  { 16, 0, 0, 8, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 9, 0, 0 } }, 
+               { loctxt_19,  { 0, 12, 0, 0, 11, 0 } }, 
+               { loctxt_20,  { 0, 0, 26, 0, 0, 0 } }, 
+               { loctxt_21,  { 0, 22, 0, 16, 0, 0 } }, 
+               { loctxt_22,  { 21, 0, 0, 0, 0, 0 } }, 
+               { loctxt_23,  { 0, 0, 0, 9, 0, 24 } }, 
+               { loctxt_24,  { 0, 0, 31, 0, 23, 0 } }, 
+               { loctxt_25,  { 0, 0, 0, 0, 0, 24 } }, 
+               { loctxt_26,  { 0, 48, 0, 20, 0, 0 } }, 
+               { loctxt_27,  { 0, 28, 0, 0, 0, 0 } }, 
+               { loctxt_28,  { 27, 0, 35, 0, 0, 0 } }, 
+               { loctxt_29,  { 29, 0, 36, 29, 0, 0 } }, 
+               { loctxt_30,  { 0, 0, 0, 0, 0, 23 } }, 
+               { loctxt_31,  { 0, 0, 0, 24, 0, 0 } }, 
+               { loctxt_32,  { 0, 0, 0, 0, 0, 33 } }, 
+               { loctxt_33,  { 0, 34, 38, 0, 32, 0 } }, 
+               { loctxt_34,  { 33, 0, 44, 0, 0, 0 } }, 
+               { loctxt_35,  { 0, 0, 0, 28, 0, 0 } }, 
+               { loctxt_36,  { 29, 37, 49, 0, 0, 0 } }, 
+               { loctxt_37,  { 36, 49, 43, 0, 0, 0 } }, 
+               { loctxt_38,  { 44, 45, 38, 51, 0, 0 } }, 
+               { loctxt_39,  { 0, 0, 0, 0, 46, 0 } }, 
+               { loctxt_40,  { 0, 0, 46, 0, 0, 0 } }, 
+               { loctxt_41,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_42,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_43,  { 43, 37, 43, 43, 0, 0 } }, 
+               { loctxt_44,  { 44, 44, 50, 44, 0, 0 } }, 
+               { loctxt_45,  { 44, 45, 45, 38, 0, 0 } }, 
+               { loctxt_46,  { 0, 0, 52, 0, 0, 39 } }, 
+               { loctxt_47,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_48,  { 60, 60, 56, 26, 0, 0 } }, 
+               { loctxt_49,  { 36, 49, 0, 37, 0, 0 } }, 
+               { loctxt_50,  { 50, 50, 58, 45, 0, 0 } }, 
+               { loctxt_51,  { 50, 51, 51, 51, 0, 0 } }, 
+               { loctxt_52,  { 51, 53, 0, 46, 0, 0 } }, 
+               { loctxt_53,  { 52, 0, 0, 0, 0, 0 } }, 
+               { loctxt_54,  { 0, 55, 59, 0, 0, 0 } }, 
+               { loctxt_55,  { 54, 0, 0, 0, 0, 0 } }, 
+               { loctxt_56,  { 0, 57, 60, 48, 0, 0 } }, 
+               { loctxt_57,  { 56, 0, 60, 0, 0, 0 } }, 
+               { loctxt_58,  { 58, 58, 59, 51, 0, 0 } }, 
+               { loctxt_59,  { 58, 0, 0, 54, 0, 0 } }, 
+               { loctxt_60,  { 48, 57, 48, 56, 0, 0 } }, 
+               { loctxt_61,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_62,  { 0, 8, 0, 0, 0, 0 } }, 
+               { loctxt_63,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       61,
+       35,
+       40,
+       27,
+       28,
+       39,
+       46,
+       0,
+       0,
+       52,
+       0,
+       53,
+       0,
+       42,
+       18,
+       0,
+       0,
+       2,
+       0,
+       37,
+       12,
+       25,
+       0,
+       0,
+       58,
+       38,
+       32,
+       34,
+       0,
+       59,
+       54,
+       55,
+       47,
+       41,
+       0,
+       0,
+       26,
+       20,
+       0,
+       15,
+       1,
+       3,
+       4,
+       5,
+       6,
+       7,
+       8,
+       9,
+       0,
+       15,
+       16,
+       17,
+       0,
+       19,
+       21,
+       22,
+       23,
+       24,
+       31,
+       35,
+       40,
+       61,
+       63,
+       0,
+       0,
+       0,
+       0,
+       9,
+       4,
+       3,
+       0,
+       0,
+       34,
+};
+
+
+const uint8_t objtxt_0[] = {
+0 };
+const uint8_t objtxt_1[] = {
+76, 101, 97, 116, 104, 101, 114, 32, 83, 101, 97, 116, 0 };
+const uint8_t objtxt_2[] = {
+76, 101, 97, 116, 104, 101, 114, 32, 83, 101, 97, 116, 0 };
+const uint8_t objtxt_3[] = {
+76, 101, 97, 116, 104, 101, 114, 32, 83, 101, 97, 116, 0 };
+const uint8_t objtxt_4[] = {
+68, 111, 111, 114, 0 };
+const uint8_t objtxt_5[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_6[] = {
+83, 112, 97, 110, 110, 101, 114, 0 };
+const uint8_t objtxt_7[] = {
+83, 105, 103, 110, 0 };
+const uint8_t objtxt_8[] = {
+67, 97, 110, 100, 108, 101, 0 };
+const uint8_t objtxt_9[] = {
+70, 108, 105, 99, 107, 101, 114, 105, 110, 103, 32, 67, 97, 110, 100, 108, 101, 0 };
+const uint8_t objtxt_10[] = {
+84, 97, 98, 108, 101, 0 };
+const uint8_t objtxt_11[] = {
+77, 97, 116, 99, 104, 101, 115, 0 };
+const uint8_t objtxt_12[] = {
+83, 97, 102, 101, 0 };
+const uint8_t objtxt_13[] = {
+79, 112, 101, 110, 32, 83, 97, 102, 101, 0 };
+const uint8_t objtxt_14[] = {
+86, 105, 111, 108, 101, 116, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_15[] = {
+66, 108, 117, 101, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_16[] = {
+71, 114, 101, 101, 110, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_17[] = {
+89, 101, 108, 108, 111, 119, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_18[] = {
+82, 101, 100, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_19[] = {
+66, 108, 97, 99, 107, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_20[] = {
+87, 104, 105, 116, 101, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_21[] = {
+83, 105, 108, 118, 101, 114, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_22[] = {
+80, 105, 110, 107, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_23[] = {
+71, 114, 101, 121, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_24[] = {
+71, 108, 111, 119, 105, 110, 103, 32, 71, 111, 108, 100, 101, 110, 32, 70, 105, 103, 117, 114, 105, 110, 101, 0 };
+const uint8_t objtxt_25[] = {
+82, 97, 105, 108, 119, 97, 121, 32, 83, 116, 97, 116, 105, 111, 110, 0 };
+const uint8_t objtxt_26[] = {
+71, 97, 116, 101, 32, 72, 111, 117, 115, 101, 0 };
+const uint8_t objtxt_27[] = {
+87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_28[] = {
+76, 97, 114, 103, 101, 32, 73, 114, 111, 110, 32, 71, 97, 116, 101, 115, 0 };
+const uint8_t objtxt_29[] = {
+66, 114, 97, 115, 115, 32, 75, 101, 121, 0 };
+const uint8_t objtxt_30[] = {
+77, 117, 100, 0 };
+const uint8_t objtxt_31[] = {
+82, 105, 118, 101, 114, 0 };
+const uint8_t objtxt_32[] = {
+82, 111, 116, 116, 105, 110, 103, 32, 67, 114, 97, 116, 101, 115, 0 };
+const uint8_t objtxt_33[] = {
+82, 105, 118, 101, 114, 0 };
+const uint8_t objtxt_34[] = {
+87, 97, 116, 101, 114, 0 };
+const uint8_t objtxt_35[] = {
+67, 111, 105, 108, 32, 111, 102, 32, 82, 111, 112, 101, 0 };
+const uint8_t objtxt_36[] = {
+84, 105, 101, 100, 32, 82, 111, 112, 101, 0 };
+const uint8_t objtxt_37[] = {
+68, 97, 110, 103, 108, 105, 110, 103, 32, 82, 111, 112, 101, 0 };
+const uint8_t objtxt_38[] = {
+79, 97, 107, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_39[] = {
+79, 112, 101, 110, 32, 68, 111, 111, 114, 0 };
+const uint8_t objtxt_40[] = {
+83, 116, 97, 105, 114, 115, 0 };
+const uint8_t objtxt_41[] = {
+66, 97, 116, 104, 0 };
+const uint8_t objtxt_42[] = {
+66, 101, 100, 0 };
+const uint8_t objtxt_43[] = {
+66, 101, 100, 0 };
+const uint8_t objtxt_44[] = {
+87, 97, 114, 100, 114, 111, 98, 101, 0 };
+const uint8_t objtxt_45[] = {
+84, 97, 98, 108, 101, 0 };
+const uint8_t objtxt_46[] = {
+84, 105, 108, 101, 100, 32, 70, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_47[] = {
+69, 98, 111, 110, 121, 32, 83, 116, 97, 110, 100, 0 };
+const uint8_t objtxt_48[] = {
+66, 101, 100, 0 };
+const uint8_t objtxt_49[] = {
+68, 97, 114, 107, 32, 79, 112, 101, 110, 105, 110, 103, 0 };
+const uint8_t objtxt_50[] = {
+83, 117, 105, 116, 32, 111, 102, 32, 65, 114, 109, 111, 117, 114, 0 };
+const uint8_t objtxt_51[] = {
+67, 111, 117, 99, 104, 0 };
+const uint8_t objtxt_52[] = {
+76, 97, 114, 103, 101, 32, 87, 97, 108, 108, 32, 83, 97, 102, 101, 0 };
+const uint8_t objtxt_53[] = {
+79, 112, 101, 110, 32, 87, 97, 108, 108, 32, 83, 97, 102, 101, 0 };
+const uint8_t objtxt_54[] = {
+84, 114, 111, 119, 101, 108, 0 };
+const uint8_t objtxt_55[] = {
+68, 101, 97, 100, 32, 80, 108, 97, 110, 116, 115, 0 };
+const uint8_t objtxt_56[] = {
+72, 97, 109, 109, 101, 114, 0 };
+const uint8_t objtxt_57[] = {
+66, 97, 108, 117, 115, 116, 114, 97, 100, 101, 0 };
+const uint8_t objtxt_58[] = {
+68, 114, 121, 32, 70, 111, 117, 110, 116, 97, 105, 110, 0 };
+const uint8_t objtxt_59[] = {
+67, 104, 105, 115, 101, 108, 0 };
+const uint8_t objtxt_60[] = {
+87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_61[] = {
+87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_62[] = {
+87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_63[] = {
+68, 101, 97, 100, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 114, 115, 0 };
+const uint8_t objtxt_64[] = {
+83, 108, 105, 112, 32, 111, 102, 32, 80, 97, 112, 101, 114, 0 };
+const uint8_t objtxt_65[] = {
+87, 101, 116, 32, 77, 97, 116, 99, 104, 101, 115, 0 };
+const uint8_t objtxt_66[] = {
+68, 97, 114, 107, 32, 72, 111, 108, 101, 0 };
+const uint8_t objtxt_67[] = {
+72, 101, 97, 112, 32, 111, 102, 32, 77, 101, 116, 97, 108, 0 };
+const uint8_t objtxt_68[] = {
+87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_69[] = {
+87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_70[] = {
+87, 105, 110, 100, 111, 119, 0 };
+const uint8_t objtxt_71[] = {
+83, 109, 97, 108, 108, 32, 75, 101, 121, 0 };
+const uint8_t objtxt_72[] = {
+79, 112, 101, 110, 32, 87, 97, 114, 100, 114, 111, 98, 101, 0 };
+const uint8_t objtxt_73[] = {
+73, 114, 97, 116, 101, 32, 71, 97, 109, 101, 107, 101, 101, 112, 101, 114, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+       objtxt_58,
+       objtxt_59,
+       objtxt_60,
+       objtxt_61,
+       objtxt_62,
+       objtxt_63,
+       objtxt_64,
+       objtxt_65,
+       objtxt_66,
+       objtxt_67,
+       objtxt_68,
+       objtxt_69,
+       objtxt_70,
+       objtxt_71,
+       objtxt_72,
+       objtxt_73,
+};
+const uint8_t msgtxt_0[] = {
+0 };
+const uint8_t msgtxt_1[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 77, 121, 115, 116, 101, 114, 105, 111, 117, 115, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 32, 78, 111, 46, 49, 48, 0 };
+const uint8_t msgtxt_2[] = {
+84, 69, 78, 32, 76, 73, 84, 84, 76, 69, 32, 73, 78, 68, 73, 65, 78, 83, 0 };
+const uint8_t msgtxt_3[] = {
+66, 121, 32, 66, 114, 105, 97, 110, 32, 72, 111, 119, 97, 114, 116, 104, 32, 38, 32, 87, 104, 101, 114, 110, 101, 114, 32, 66, 97, 114, 110, 101, 115, 0 };
+const uint8_t msgtxt_4[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_5[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 111, 102, 32, 105, 110, 116, 101, 114, 101, 115, 116, 0 };
+const uint8_t msgtxt_6[] = {
+73, 32, 115, 101, 101, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 32, 33, 0 };
+const uint8_t msgtxt_7[] = {
+84, 114, 121, 32, 69, 88, 65, 77, 73, 78, 73, 78, 71, 32, 116, 104, 105, 110, 103, 115, 0 };
+const uint8_t msgtxt_8[] = {
+72, 111, 119, 32, 63, 0 };
+const uint8_t msgtxt_9[] = {
+84, 111, 32, 119, 104, 101, 114, 101, 32, 63, 0 };
+const uint8_t msgtxt_10[] = {
+65, 116, 32, 119, 104, 97, 116, 32, 63, 0 };
+const uint8_t msgtxt_11[] = {
+85, 115, 101, 32, 84, 87, 79, 32, 119, 111, 114, 100, 115, 0 };
+const uint8_t msgtxt_12[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 100, 111, 32, 116, 104, 97, 116, 32, 45, 32, 83, 111, 114, 114, 121, 0 };
+const uint8_t msgtxt_13[] = {
+73, 32, 99, 97, 110, 32, 115, 101, 101, 0 };
+const uint8_t msgtxt_14[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 101, 100, 32, 33, 0 };
+const uint8_t msgtxt_15[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_16[] = {
+73, 116, 39, 115, 32, 99, 108, 111, 115, 101, 100, 0 };
+const uint8_t msgtxt_17[] = {
+73, 116, 39, 115, 32, 111, 112, 101, 110, 0 };
+const uint8_t msgtxt_18[] = {
+84, 105, 109, 101, 32, 112, 97, 115, 115, 101, 115, 46, 46, 46, 46, 46, 46, 0 };
+const uint8_t msgtxt_19[] = {
+83, 97, 121, 115, 32, 58, 0 };
+const uint8_t msgtxt_20[] = {
+32, 105, 115, 32, 117, 115, 101, 108, 101, 115, 115, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_21[] = {
+87, 104, 121, 32, 63, 0 };
+const uint8_t msgtxt_22[] = {
+110, 111, 32, 110, 101, 101, 100, 32, 102, 111, 114, 32, 116, 104, 97, 116, 32, 107, 105, 110, 100, 32, 111, 102, 32, 108, 97, 110, 103, 117, 97, 103, 101, 0 };
+const uint8_t msgtxt_23[] = {
+85, 115, 101, 32, 97, 32, 67, 79, 76, 79, 85, 82, 0 };
+const uint8_t msgtxt_24[] = {
+105, 116, 39, 115, 32, 98, 111, 108, 116, 101, 100, 32, 116, 111, 103, 101, 116, 104, 101, 114, 0 };
+const uint8_t msgtxt_25[] = {
+84, 111, 32, 119, 104, 97, 116, 32, 63, 0 };
+const uint8_t msgtxt_26[] = {
+67, 111, 110, 103, 114, 97, 116, 117, 108, 97, 116, 105, 111, 110, 115, 32, 45, 32, 89, 111, 117, 39, 118, 101, 32, 100, 111, 110, 101, 32, 105, 116, 32, 33, 33, 0 };
+const uint8_t msgtxt_27[] = {
+114, 111, 116, 116, 101, 110, 32, 112, 108, 97, 110, 107, 105, 110, 103, 0 };
+const uint8_t msgtxt_28[] = {
+73, 116, 39, 115, 32, 49, 57, 56, 51, 46, 32, 71, 101, 116, 32, 77, 121, 115, 116, 101, 114, 105, 111, 117, 115, 32, 65, 100, 118, 101, 110, 116, 117, 114, 101, 115, 0 };
+const uint8_t msgtxt_29[] = {
+102, 114, 111, 109, 32, 121, 111, 117, 114, 32, 100, 101, 97, 108, 101, 114, 32, 78, 79, 87, 32, 33, 33, 0 };
+const uint8_t msgtxt_30[] = {
+97, 32, 100, 105, 97, 108, 32, 116, 121, 112, 101, 32, 108, 111, 99, 107, 0 };
+const uint8_t msgtxt_31[] = {
+100, 97, 114, 107, 110, 101, 115, 115, 0 };
+const uint8_t msgtxt_32[] = {
+105, 116, 39, 115, 32, 97, 114, 109, 32, 112, 111, 105, 110, 116, 115, 32, 98, 97, 99, 107, 119, 97, 114, 100, 115, 0 };
+const uint8_t msgtxt_33[] = {
+73, 39, 118, 101, 32, 68, 82, 79, 87, 78, 69, 68, 32, 33, 33, 0 };
+const uint8_t msgtxt_34[] = {
+73, 39, 118, 101, 32, 98, 114, 111, 107, 101, 110, 32, 109, 121, 32, 78, 69, 67, 75, 32, 33, 33, 0 };
+const uint8_t msgtxt_35[] = {
+116, 104, 101, 32, 99, 111, 117, 110, 116, 114, 121, 115, 105, 100, 101, 0 };
+const uint8_t msgtxt_36[] = {
+97, 32, 98, 97, 114, 32, 106, 117, 116, 116, 105, 110, 103, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_37[] = {
+84, 114, 97, 105, 110, 32, 115, 116, 111, 112, 115, 32, 33, 0 };
+const uint8_t msgtxt_38[] = {
+84, 114, 97, 105, 110, 32, 115, 116, 97, 114, 116, 115, 32, 45, 32, 116, 104, 101, 110, 32, 115, 116, 111, 112, 115, 32, 33, 0 };
+const uint8_t msgtxt_39[] = {
+84, 104, 101, 32, 109, 97, 116, 99, 104, 101, 115, 32, 97, 114, 101, 32, 119, 101, 116, 0 };
+const uint8_t msgtxt_40[] = {
+79, 117, 116, 32, 111, 102, 32, 84, 73, 77, 69, 32, 33, 33, 0 };
+const uint8_t msgtxt_41[] = {
+115, 112, 97, 99, 101, 115, 32, 102, 111, 114, 32, 102, 105, 103, 117, 114, 105, 110, 101, 115, 0 };
+const uint8_t msgtxt_42[] = {
+73, 39, 118, 101, 32, 102, 97, 108, 108, 101, 110, 32, 116, 104, 114, 111, 117, 103, 104, 32, 33, 0 };
+const uint8_t msgtxt_43[] = {
+77, 97, 116, 99, 104, 32, 102, 108, 97, 114, 101, 115, 32, 117, 112, 46, 46, 46, 46, 46, 0 };
+const uint8_t msgtxt_44[] = {
+46, 46, 46, 46, 46, 116, 104, 101, 110, 32, 103, 111, 101, 115, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_45[] = {
+74, 117, 115, 116, 32, 109, 97, 100, 101, 32, 105, 116, 32, 33, 0 };
+const uint8_t msgtxt_46[] = {
+78, 105, 99, 101, 32, 115, 111, 102, 116, 32, 108, 97, 110, 100, 105, 110, 103, 0 };
+const uint8_t msgtxt_47[] = {
+76, 79, 87, 69, 82, 32, 77, 65, 83, 83, 73, 78, 71, 84, 79, 78, 0 };
+const uint8_t msgtxt_48[] = {
+85, 80, 80, 69, 82, 32, 77, 65, 83, 83, 73, 78, 71, 84, 79, 78, 0 };
+const uint8_t msgtxt_49[] = {
+97, 32, 98, 97, 108, 99, 111, 110, 121, 0 };
+const uint8_t msgtxt_50[] = {
+116, 104, 101, 32, 103, 97, 114, 100, 101, 110, 0 };
+const uint8_t msgtxt_51[] = {
+105, 116, 39, 115, 32, 112, 97, 114, 116, 32, 111, 102, 32, 97, 32, 115, 101, 116, 0 };
+const uint8_t msgtxt_52[] = {
+73, 39, 118, 101, 32, 102, 97, 108, 108, 101, 110, 32, 116, 104, 114, 111, 117, 103, 104, 32, 116, 104, 101, 32, 102, 108, 111, 111, 114, 32, 33, 0 };
+const uint8_t msgtxt_53[] = {
+110, 111, 32, 101, 120, 99, 117, 115, 101, 32, 102, 111, 114, 32, 118, 97, 110, 100, 97, 108, 105, 115, 109, 32, 33, 0 };
+const uint8_t msgtxt_54[] = {
+87, 104, 105, 99, 104, 32, 107, 101, 121, 32, 63, 0 };
+const uint8_t msgtxt_55[] = {
+71, 97, 109, 101, 107, 101, 101, 112, 101, 114, 32, 115, 104, 111, 111, 116, 115, 32, 109, 101, 32, 33, 33, 0 };
+const uint8_t msgtxt_56[] = {
+83, 111, 111, 116, 32, 99, 104, 111, 107, 101, 115, 32, 109, 101, 32, 33, 33, 0 };
+const uint8_t msgtxt_57[] = {
+73, 32, 115, 105, 110, 107, 32, 105, 110, 32, 116, 104, 101, 32, 109, 117, 100, 32, 33, 33, 0 };
+const uint8_t msgtxt_58[] = {
+84, 114, 97, 105, 110, 32, 99, 114, 97, 115, 104, 101, 115, 32, 33, 33, 0 };
+const uint8_t msgtxt_59[] = {
+73, 39, 109, 32, 104, 105, 116, 32, 98, 121, 32, 97, 32, 116, 114, 97, 105, 110, 32, 33, 33, 0 };
+const uint8_t msgtxt_60[] = {
+116, 104, 101, 32, 99, 111, 117, 110, 116, 114, 121, 115, 105, 100, 101, 32, 103, 111, 105, 110, 103, 32, 98, 121, 0 };
+const uint8_t msgtxt_61[] = {
+84, 104, 101, 32, 116, 114, 97, 105, 110, 32, 104, 97, 115, 32, 103, 111, 110, 101, 32, 33, 33, 0 };
+const uint8_t msgtxt_62[] = {
+84, 104, 105, 115, 32, 112, 108, 97, 110, 107, 105, 110, 103, 32, 99, 111, 117, 108, 100, 32, 103, 105, 118, 101, 32, 119, 97, 121, 0 };
+const uint8_t msgtxt_63[] = {
+45, 32, 105, 102, 32, 73, 32, 116, 114, 121, 32, 104, 97, 114, 100, 32, 101, 110, 111, 117, 103, 104, 32, 33, 33, 0 };
+const uint8_t msgtxt_64[] = {
+72, 97, 109, 109, 101, 114, 32, 105, 115, 110, 39, 116, 32, 101, 110, 111, 117, 103, 104, 32, 104, 101, 114, 101, 32, 33, 0 };
+const uint8_t msgtxt_65[] = {
+115, 116, 105, 99, 107, 121, 32, 109, 117, 100, 0 };
+const uint8_t msgtxt_66[] = {
+73, 116, 39, 115, 32, 116, 111, 111, 32, 116, 105, 103, 104, 116, 108, 121, 32, 116, 105, 101, 100, 32, 115, 111, 0 };
+const uint8_t msgtxt_67[] = {
+73, 32, 102, 101, 101, 108, 32, 97, 32, 108, 105, 116, 116, 108, 101, 32, 74, 117, 109, 112, 121, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       167, 
+       9, 0, 
+       1, 2, 3, 73, 
+/* AUTO  0     */
+       203, 
+       0, 0, 0, 175, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       207, 
+       0, 1, 0, 3, 0, 1, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       207, 
+       0, 2, 0, 3, 0, 2, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       207, 
+       0, 3, 0, 3, 0, 3, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       207, 
+       0, 4, 0, 9, 0, 4, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       207, 
+       0, 5, 0, 10, 0, 5, 
+       81, 79, 81, 67, 
+/* AUTO  100   */
+       174, 
+       9, 20, 9, 21, 9, 22, 
+       81, 77, 73, 
+/* AUTO  0     */
+       206, 
+       19, 0, 0, 20, 0, 175, 
+       58, 79, 81, 
+/* AUTO  0     */
+       192, 
+       81, 
+/* AUTO  100   */
+       174, 
+       8, 20, 9, 21, 9, 22, 
+       81, 77, 73, 
+/* AUTO  0     */
+       206, 
+       19, 0, 0, 21, 0, 175, 
+       58, 79, 81, 
+/* AUTO  0     */
+       192, 
+       81, 
+/* AUTO  100   */
+       174, 
+       8, 20, 8, 21, 9, 22, 
+       81, 77, 73, 
+/* AUTO  0     */
+       206, 
+       19, 0, 0, 22, 0, 175, 
+       58, 79, 81, 
+/* AUTO  0     */
+       192, 
+       81, 
+/* AUTO  100   */
+       174, 
+       8, 20, 8, 21, 8, 22, 
+       81, 77, 73, 
+/* AUTO  0     */
+       197, 
+       19, 0, 
+       40, 61, 
+/* AUTO  0     */
+       192, 
+       81, 
+/* AUTO  100   */
+       170, 
+       4, 39, 0, 1, 
+       81, 77, 73, 
+/* AUTO  0     */
+       197, 
+       19, 0, 
+       109, 61, 
+/* AUTO  0     */
+       196, 
+       0, 1, 
+       81, 
+/* AUTO  100   */
+       170, 
+       4, 34, 0, 2, 
+       81, 77, 73, 
+/* AUTO  0     */
+       197, 
+       19, 0, 
+       105, 61, 
+/* AUTO  0     */
+       196, 
+       0, 2, 
+       81, 
+/* AUTO  100   */
+       170, 
+       4, 36, 0, 3, 
+       81, 77, 73, 
+/* AUTO  0     */
+       197, 
+       19, 0, 
+       106, 61, 
+/* AUTO  0     */
+       196, 
+       0, 3, 
+       81, 
+/* AUTO  100   */
+       170, 
+       4, 59, 0, 4, 
+       81, 77, 73, 
+/* AUTO  0     */
+       197, 
+       19, 0, 
+       107, 61, 
+/* AUTO  0     */
+       196, 
+       0, 4, 
+       81, 
+/* AUTO  100   */
+       170, 
+       4, 61, 0, 5, 
+       81, 77, 73, 
+/* AUTO  0     */
+       197, 
+       19, 0, 
+       108, 61, 
+/* AUTO  0     */
+       196, 
+       0, 5, 
+       81, 
+/* AUTO  100   */
+       169, 
+       7, 2, 8, 15, 
+       57, 64, 
+/* AUTO  100   */
+       169, 
+       7, 11, 8, 15, 
+       57, 64, 
+/* AUTO  100   */
+       169, 
+       4, 2, 9, 15, 
+       56, 64, 
+/* AUTO  100   */
+       169, 
+       4, 11, 9, 15, 
+       56, 64, 
+/* AUTO  100   */
+       169, 
+       4, 12, 9, 15, 
+       56, 64, 
+/* AUTO  100   */
+       169, 
+       4, 19, 9, 15, 
+       56, 64, 
+/* AUTO  100   */
+       164, 
+       4, 63, 
+       63, 
+/* AUTO  100   */
+       167, 
+       1, 24, 
+       4, 26, 86, 63, 
+/* AUTO  100   */
+       180, 
+       4, 62, 2, 14, 2, 15, 2, 16, 0, 7, 
+       58, 
+/* AUTO  100   */
+       180, 
+       4, 62, 2, 17, 2, 18, 2, 19, 0, 8, 
+       58, 
+/* AUTO  100   */
+       180, 
+       4, 62, 2, 20, 2, 21, 2, 22, 0, 9, 
+       58, 
+/* AUTO  100   */
+       180, 
+       4, 62, 2, 23, 8, 7, 8, 8, 0, 10, 
+       58, 
+/* AUTO  100   */
+       176, 
+       4, 62, 8, 9, 8, 10, 14, 53, 
+       73, 
+/* AUTO  0     */
+       201, 
+       0, 52, 0, 53, 
+       72, 14, 
+/* AUTO  100   */
+       173, 
+       4, 1, 1, 16, 0, 16, 
+       55, 14, 
+/* AUTO  100   */
+       176, 
+       4, 41, 1, 11, 0, 11, 0, 65, 
+       72, 
+/* AUTO  100   */
+       173, 
+       4, 46, 9, 18, 0, 18, 
+       111, 58, 
+};
+const uint8_t actions[] = {
+/* INVE  ANY   */
+       0, 3, 0, 
+       66, 
+/* QUIT  ANY   */
+       1, 4, 0, 
+       4, 63, 
+/* SAVE  ANY   */
+       1, 8, 0, 
+       4, 71, 
+/* WAIT  ANY   */
+       10, 7, 0, 
+       4, 61, 0, 35, 
+       4, 37, 54, 
+/* WAIT  ANY   */
+       10, 7, 0, 
+       4, 35, 0, 40, 
+       4, 38, 54, 
+/* WAIT  ANY   */
+       3, 7, 0, 
+       4, 88, 18, 88, 
+/* DIG   ANY   */
+       0, 13, 0, 
+       8, 
+/* USE   TROW  */
+       22, 54, 19, 
+       1, 54, 4, 59, 14, 19, 0, 19, 0, 59, 
+       4, 62, 6, 
+/* EXAM  BED   */
+       18, 14, 41, 
+       2, 43, 14, 64, 0, 64, 0, 4, 
+       4, 62, 6, 
+/* EXAM  SUIT  */
+       10, 14, 64, 
+       2, 50, 14, 49, 
+       4, 13, 32, 
+/* EXAM  SAFE  */
+       5, 14, 52, 
+       2, 52, 
+       4, 16, 
+/* EXAM  SAFE  */
+       18, 14, 52, 
+       2, 53, 14, 24, 0, 24, 0, 17, 
+       4, 62, 6, 
+/* EXAM  WIND  */
+       6, 14, 9, 
+       2, 27, 
+       4, 13, 36, 
+/* EXAM  GATE  */
+       5, 14, 46, 
+       2, 28, 
+       4, 16, 
+/* EXAM  WIND  */
+       6, 14, 9, 
+       2, 62, 
+       4, 13, 110, 
+/* EXAM  WIND  */
+       6, 14, 9, 
+       2, 60, 
+       4, 13, 35, 
+/* EXAM  WIND  */
+       6, 14, 9, 
+       2, 61, 
+       4, 13, 35, 
+/* EXAM  TABL  */
+       22, 14, 51, 
+       2, 10, 14, 11, 14, 65, 0, 11, 0, 52, 
+       4, 62, 6, 
+/* EXAM  SAFE  */
+       6, 14, 52, 
+       2, 12, 
+       4, 13, 30, 
+/* EXAM  WHAR  */
+       6, 14, 31, 
+       4, 54, 
+       4, 13, 27, 
+/* HELP  ANY   */
+       5, 6, 0, 
+       4, 54, 
+       112, 113, 
+/* EXAM  CRAT  */
+       22, 14, 57, 
+       2, 32, 14, 8, 14, 9, 0, 8, 0, 55, 
+       4, 62, 6, 
+/* EXAM  CRAT  */
+       22, 14, 57, 
+       2, 32, 13, 8, 14, 35, 14, 36, 0, 35, 
+       4, 53, 6, 
+/* EXAM  SAFE  */
+       18, 14, 52, 
+       2, 13, 14, 17, 0, 17, 0, 53, 
+       4, 62, 6, 
+/* EXAM  MUD   */
+       18, 14, 54, 
+       2, 30, 14, 29, 0, 29, 0, 59, 
+       4, 62, 6, 
+/* EXAM  TROW  */
+       6, 14, 19, 
+       1, 54, 
+       4, 13, 115, 
+/* EXAM  EBON  */
+       6, 14, 62, 
+       4, 62, 
+       4, 13, 41, 
+/* TIE   ROPE  */
+       22, 41, 55, 
+       4, 32, 1, 35, 0, 35, 0, 36, 0, 36, 
+       4, 72, 53, 
+/* CLIM  ROPE  */
+       9, 57, 55, 
+       2, 36, 0, 26, 
+       4, 54, 
+/* GET   ROPE  */
+       9, 10, 55, 
+       2, 35, 0, 35, 
+       4, 52, 
+/* DROP  ROPE  */
+       9, 18, 55, 
+       1, 35, 0, 35, 
+       4, 53, 
+/* GET   ROPE  */
+       5, 10, 55, 
+       2, 36, 
+       116, 12, 
+/* GET   ROPE  */
+       5, 10, 55, 
+       2, 37, 
+       116, 12, 
+/* CLIM  ROPE  */
+       9, 57, 55, 
+       2, 37, 0, 32, 
+       4, 54, 
+/* STAM  FOOT  */
+       10, 42, 35, 
+       4, 54, 0, 47, 
+       4, 54, 42, 
+/* SWIM  ANY   */
+       9, 46, 0, 
+       4, 47, 0, 41, 
+       4, 54, 
+/* SWIM  ANY   */
+       7, 46, 0, 
+       4, 41, 
+       4, 33, 61, 63, 
+/* SWIM  ANY   */
+       9, 46, 0, 
+       4, 42, 0, 59, 
+       4, 54, 
+/* DIVE  ANY   */
+       9, 47, 0, 
+       4, 41, 0, 42, 
+       4, 54, 
+/* GO    STAI  */
+       9, 1, 59, 
+       2, 40, 0, 14, 
+       4, 54, 
+/* GO    GATE  */
+       9, 1, 46, 
+       2, 26, 0, 33, 
+       4, 54, 
+/* 1983  ANY   */
+       14, 56, 0, 
+       2, 12, 0, 12, 0, 13, 
+       4, 72, 14, 
+/* TURN  1983  */
+       14, 58, 78, 
+       2, 12, 0, 12, 0, 13, 
+       4, 72, 14, 
+/* PULL  ARM   */
+       17, 52, 65, 
+       2, 50, 14, 49, 0, 49, 0, 10, 
+       4, 62, 
+/* BREA  SUIT  */
+       18, 48, 64, 
+       2, 50, 1, 6, 0, 50, 0, 67, 
+       4, 72, 73, 
+/* AUTO  0     */
+       201, 
+       0, 23, 0, 15, 
+       6, 62, 
+/* BREA  TILE  */
+       17, 48, 56, 
+       2, 46, 1, 56, 1, 59, 14, 66, 
+       4, 73, 
+/* AUTO  0     */
+       201, 
+       0, 66, 0, 7, 
+       6, 62, 
+/* BREA  TILE  */
+       8, 48, 56, 
+       2, 46, 1, 56, 
+       114, 
+/* EXAM  OPEN  */
+       6, 14, 79, 
+       2, 49, 
+       4, 13, 31, 
+/* EXAM  HOLE  */
+       6, 14, 72, 
+       2, 66, 
+       4, 13, 31, 
+/* GO    HOLE  */
+       9, 1, 72, 
+       2, 66, 0, 2, 
+       4, 54, 
+/* GO    OPEN  */
+       9, 1, 79, 
+       2, 49, 0, 11, 
+       4, 54, 
+/* GO    WIND  */
+       9, 1, 9, 
+       2, 68, 0, 23, 
+       4, 54, 
+/* GO    STAT  */
+       9, 1, 53, 
+       2, 25, 0, 52, 
+       4, 54, 
+/* GO    DOOR  */
+       9, 1, 15, 
+       2, 39, 0, 15, 
+       4, 54, 
+/* OPEN  DOOR  */
+       17, 28, 15, 
+       2, 38, 1, 29, 0, 38, 0, 39, 
+       4, 72, 
+/* LIGH  CAND  */
+       17, 23, 44, 
+       1, 8, 1, 11, 0, 8, 0, 9, 
+       4, 72, 
+/* UNLI  CAND  */
+       13, 24, 44, 
+       1, 9, 0, 9, 0, 8, 
+       4, 72, 
+/* LIGH  CAND  */
+       8, 23, 44, 
+       1, 8, 1, 65, 
+       39, 
+/* LIGH  MATC  */
+       4, 23, 45, 
+       1, 65, 
+       39, 
+/* LIGH  MATC  */
+       15, 23, 45, 
+       1, 11, 8, 15, 0, 15, 
+       4, 60, 64, 73, 
+/* AUTO  0     */
+       195, 
+       43, 88, 88, 73, 
+/* AUTO  0     */
+       199, 
+       0, 15, 
+       88, 44, 58, 64, 
+/* LIGH  MATC  */
+       7, 23, 45, 
+       1, 11, 
+       4, 43, 88, 44, 
+/* CLIM  BALU  */
+       9, 57, 69, 
+       2, 57, 0, 30, 
+       4, 54, 
+/* CLIM  FOUN  */
+       9, 57, 70, 
+       2, 58, 0, 25, 
+       4, 54, 
+/* JUMP  ANY   */
+       10, 53, 0, 
+       4, 30, 0, 29, 
+       4, 54, 45, 
+/* JUMP  ANY   */
+       10, 53, 0, 
+       4, 49, 0, 57, 
+       4, 54, 46, 
+/* JUMP  ANY   */
+       7, 53, 0, 
+       4, 29, 
+       4, 34, 61, 63, 
+/* JUMP  ANY   */
+       7, 53, 0, 
+       4, 43, 
+       4, 34, 61, 63, 
+/* READ  SIGN  */
+       6, 17, 12, 
+       2, 5, 
+       4, 19, 47, 
+/* READ  SIGN  */
+       6, 17, 12, 
+       2, 7, 
+       4, 19, 48, 
+/* READ  PAPE  */
+       7, 17, 30, 
+       1, 64, 
+       4, 19, 28, 29, 
+/* SAY   ANY   */
+       1, 25, 0, 
+       4, 85, 
+/* GET   FIGU  */
+       0, 10, 40, 
+       23, 
+/* EXAM  PLAN  */
+       18, 14, 68, 
+       2, 55, 14, 16, 0, 16, 0, 21, 
+       4, 62, 6, 
+/* JUMP  ANY   */
+       0, 53, 0, 
+       21, 
+/* EXAM  WIND  */
+       6, 14, 9, 
+       2, 68, 
+       4, 13, 49, 
+/* GO    WARD  */
+       7, 1, 61, 
+       2, 72, 
+       4, 102, 61, 63, 
+/* READ  ANY   */
+       0, 17, 0, 
+       21, 
+/* USE   ANY   */
+       1, 54, 0, 
+       84, 20, 
+/* EXAM  WIND  */
+       6, 14, 9, 
+       2, 69, 
+       4, 13, 50, 
+/* EXAM  WIND  */
+       6, 14, 9, 
+       2, 70, 
+       4, 13, 50, 
+/* EXAM  RED   */
+       6, 14, 24, 
+       1, 18, 
+       4, 13, 51, 
+/* EXAM  VIOL  */
+       6, 14, 20, 
+       1, 14, 
+       4, 13, 51, 
+/* EXAM  BLUE  */
+       6, 14, 21, 
+       1, 15, 
+       4, 13, 51, 
+/* EXAM  GREE  */
+       6, 14, 22, 
+       1, 16, 
+       4, 13, 51, 
+/* EXAM  YELL  */
+       6, 14, 23, 
+       1, 17, 
+       4, 13, 51, 
+/* EXAM  BLAC  */
+       6, 14, 25, 
+       1, 19, 
+       4, 13, 51, 
+/* EXAM  WHIT  */
+       6, 14, 26, 
+       1, 20, 
+       4, 13, 51, 
+/* EXAM  SILV  */
+       6, 14, 27, 
+       1, 21, 
+       4, 13, 51, 
+/* EXAM  PINK  */
+       6, 14, 29, 
+       1, 22, 
+       4, 13, 51, 
+/* EXAM  GREY  */
+       6, 14, 28, 
+       1, 23, 
+       4, 13, 51, 
+/* EXAM  TABL  */
+       18, 14, 51, 
+       2, 45, 14, 71, 0, 71, 0, 6, 
+       4, 62, 6, 
+/* EXAM  WARD  */
+       5, 14, 61, 
+       2, 44, 
+       4, 16, 
+/* EXAM  WARD  */
+       6, 14, 61, 
+       2, 72, 
+       4, 13, 31, 
+/* OPEN  WARD  */
+       17, 28, 61, 
+       2, 44, 1, 71, 0, 44, 0, 72, 
+       4, 72, 
+/* OPEN  ANY   */
+       0, 28, 0, 
+       8, 
+/* GO    EBON  */
+       10, 1, 62, 
+       2, 47, 0, 62, 
+       54, 4, 64, 
+/* GO    ANY   */
+       0, 1, 0, 
+       12, 
+/* EXAM  SUIT  */
+       6, 14, 64, 
+       2, 50, 
+       4, 13, 24, 
+/* EXAM  ANY   */
+       0, 14, 0, 
+       5, 
+/* BREA  ANY   */
+       1, 48, 0, 
+       13, 103, 
+/* FUCK  ANY   */
+       1, 43, 0, 
+       13, 22, 
+/* GET   KEY   */
+       0, 10, 38, 
+       104, 
+/* DROP  KEY   */
+       0, 18, 38, 
+       104, 
+/* HELP  ANY   */
+       4, 6, 0, 
+       4, 30, 
+       117, 
+/* HELP  ANY   */
+       0, 6, 0, 
+       7, 
+/* TURN  ANY   */
+       1, 58, 0, 
+       4, 15, 
+/* DROP  FIGU  */
+       0, 18, 40, 
+       23, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* *ENTE */
+       197, 78, 84, 69,
+       /* INVE */
+       73, 78, 86, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* HELP */
+       72, 69, 76, 80,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* AWB */
+       65, 87, 66, 32,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* DIG */
+       68, 73, 71, 32,
+       /* EXAM */
+       69, 88, 65, 77,
+       /* *LOOK */
+       204, 79, 79, 75,
+       /* *INSP */
+       201, 78, 83, 80,
+       /* READ */
+       82, 69, 65, 68,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *DUMP */
+       196, 85, 77, 80,
+       /* AT */
+       65, 84, 32, 32,
+       /* TO */
+       84, 79, 32, 32,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* SAY */
+       83, 65, 89, 32,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* *UNLO */
+       213, 78, 76, 79,
+       /* CLOS */
+       67, 76, 79, 83,
+       /* *LOCK */
+       204, 79, 67, 75,
+       /* CUT */
+       67, 85, 84, 32,
+       /* *CHOP */
+       195, 72, 79, 80,
+       /* EMPT */
+       69, 77, 80, 84,
+       /* *POUR */
+       208, 79, 85, 82,
+       /* EAT */
+       69, 65, 84, 32,
+       /* MAKE */
+       77, 65, 75, 69,
+       /* *BUIL */
+       194, 85, 73, 76,
+       /* FIX */
+       70, 73, 88, 32,
+       /* *REPA */
+       210, 69, 80, 65,
+       /* TIE */
+       84, 73, 69, 32,
+       /* STAM */
+       83, 84, 65, 77,
+       /* FUCK */
+       70, 85, 67, 75,
+       /* *SHIT */
+       211, 72, 73, 84,
+       /* *PISS */
+       208, 73, 83, 83,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* DIVE */
+       68, 73, 86, 69,
+       /* BREA */
+       66, 82, 69, 65,
+       /* *UNBO */
+       213, 78, 66, 79,
+       /* *DISM */
+       196, 73, 83, 77,
+       /* *SMAS */
+       211, 77, 65, 83,
+       /* PULL */
+       80, 85, 76, 76,
+       /* JUMP */
+       74, 85, 77, 80,
+       /* USE */
+       85, 83, 69, 32,
+       /* *WITH */
+       215, 73, 84, 72,
+       /* 1983 */
+       49, 57, 56, 51,
+       /* CLIM */
+       67, 76, 73, 77,
+       /* TURN */
+       84, 85, 82, 78,
+       /* *ROTA */
+       210, 79, 84, 65,
+       /* *TWIS */
+       212, 87, 73, 83,
+       /* *SPIN */
+       211, 80, 73, 78,
+       /* *DIAL */
+       196, 73, 65, 76,
+       /* SIT */
+       83, 73, 84, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* CARR */
+       67, 65, 82, 82,
+       /* *TRAI */
+       212, 82, 65, 73,
+       /* WIND */
+       87, 73, 78, 68,
+       /* COUN */
+       67, 79, 85, 78,
+       /* PLAT */
+       80, 76, 65, 84,
+       /* SIGN */
+       83, 73, 71, 78,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* ROOM */
+       82, 79, 79, 77,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* LINE */
+       76, 73, 78, 69,
+       /* ROAD */
+       82, 79, 65, 68,
+       /* SPAN */
+       83, 80, 65, 78,
+       /* TROW */
+       84, 82, 79, 87,
+       /* VIOL */
+       86, 73, 79, 76,
+       /* BLUE */
+       66, 76, 85, 69,
+       /* GREE */
+       71, 82, 69, 69,
+       /* YELL */
+       89, 69, 76, 76,
+       /* RED */
+       82, 69, 68, 32,
+       /* BLAC */
+       66, 76, 65, 67,
+       /* WHIT */
+       87, 72, 73, 84,
+       /* SILV */
+       83, 73, 76, 86,
+       /* GREY */
+       71, 82, 69, 89,
+       /* PINK */
+       80, 73, 78, 75,
+       /* PAPE */
+       80, 65, 80, 69,
+       /* WHAR */
+       87, 72, 65, 82,
+       /* WARE */
+       87, 65, 82, 69,
+       /* RAIL */
+       82, 65, 73, 76,
+       /* RIVE */
+       82, 73, 86, 69,
+       /* FOOT */
+       70, 79, 79, 84,
+       /* PILI */
+       80, 73, 76, 73,
+       /* BANK */
+       66, 65, 78, 75,
+       /* KEY */
+       75, 69, 89, 32,
+       /* BRAS */
+       66, 82, 65, 83,
+       /* FIGU */
+       70, 73, 71, 85,
+       /* BED */
+       66, 69, 68, 32,
+       /* OFFI */
+       79, 70, 70, 73,
+       /* TICK */
+       84, 73, 67, 75,
+       /* CAND */
+       67, 65, 78, 68,
+       /* MATC */
+       77, 65, 84, 67,
+       /* GATE */
+       71, 65, 84, 69,
+       /* TOWE */
+       84, 79, 87, 69,
+       /* WALL */
+       87, 65, 76, 76,
+       /* LEAT */
+       76, 69, 65, 84,
+       /* *SEAT */
+       211, 69, 65, 84,
+       /* TABL */
+       84, 65, 66, 76,
+       /* SAFE */
+       83, 65, 70, 69,
+       /* STAT */
+       83, 84, 65, 84,
+       /* MUD */
+       77, 85, 68, 32,
+       /* ROPE */
+       82, 79, 80, 69,
+       /* TILE */
+       84, 73, 76, 69,
+       /* CRAT */
+       67, 82, 65, 84,
+       /* WATE */
+       87, 65, 84, 69,
+       /* STAI */
+       83, 84, 65, 73,
+       /* BATH */
+       66, 65, 84, 72,
+       /* WARD */
+       87, 65, 82, 68,
+       /* EBON */
+       69, 66, 79, 78,
+       /* *STAN */
+       211, 84, 65, 78,
+       /* SUIT */
+       83, 85, 73, 84,
+       /* ARM */
+       65, 82, 77, 32,
+       /* COUC */
+       67, 79, 85, 67,
+       /* HAMM */
+       72, 65, 77, 77,
+       /* PLAN */
+       80, 76, 65, 78,
+       /* BALU */
+       66, 65, 76, 85,
+       /* FOUN */
+       70, 79, 85, 78,
+       /* CHIS */
+       67, 72, 73, 83,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* OFF */
+       79, 70, 70, 32,
+       /* SMAL */
+       83, 77, 65, 76,
+       /* GAME */
+       71, 65, 77, 69,
+       /* DIAL */
+       68, 73, 65, 76,
+       /* LOCK */
+       76, 79, 67, 75,
+       /* 1983 */
+       49, 57, 56, 51,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* GOLD */
+       71, 79, 76, 68,
+       /* OFF */
+       79, 70, 70, 32,
+       /* *YOU */
+       217, 79, 85, 32,
+       /* FLOO */
+       70, 76, 79, 79,
+       /* ADVE */
+       65, 68, 86, 69,
+       /* META */
+       77, 69, 84, 65,
+       0,
+};
+const uint8_t automap[] = {
+       /* SPAN */
+       83, 80, 65, 78,
+       6,
+       /* CAND */
+       67, 65, 78, 68,
+       8,
+       /* CAND */
+       67, 65, 78, 68,
+       9,
+       /* MATC */
+       77, 65, 84, 67,
+       11,
+       /* VIOL */
+       86, 73, 79, 76,
+       14,
+       /* BLUE */
+       66, 76, 85, 69,
+       15,
+       /* GREE */
+       71, 82, 69, 69,
+       16,
+       /* YELL */
+       89, 69, 76, 76,
+       17,
+       /* RED */
+       82, 69, 68, 32,
+       18,
+       /* BLAC */
+       66, 76, 65, 67,
+       19,
+       /* WHIT */
+       87, 72, 73, 84,
+       20,
+       /* SILV */
+       83, 73, 76, 86,
+       21,
+       /* PINK */
+       80, 73, 78, 75,
+       22,
+       /* GREY */
+       71, 82, 69, 89,
+       23,
+       /* GOLD */
+       71, 79, 76, 68,
+       24,
+       /* BRAS */
+       66, 82, 65, 83,
+       29,
+       /* TROW */
+       84, 82, 79, 87,
+       54,
+       /* HAMM */
+       72, 65, 77, 77,
+       56,
+       /* CHIS */
+       67, 72, 73, 83,
+       59,
+       /* PAPE */
+       80, 65, 80, 69,
+       64,
+       /* MATC */
+       77, 65, 84, 67,
+       65,
+       /* SMAL */
+       83, 77, 65, 76,
+       71,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}
diff --git a/Applications/games/myst11.c b/Applications/games/myst11.c
new file mode 100644 (file)
index 0000000..237285c
--- /dev/null
@@ -0,0 +1,3098 @@
+#define NUM_OBJ 57
+#define WORDSIZE 4
+#include <stdint.h>
+
+struct location {
+  const uint8_t *text;
+  uint8_t exit[6];
+};
+
+const uint8_t toomuch[] = { "I am carrying too much. " };
+const uint8_t dead[] = { "I am dead.\n" };
+const uint8_t stored_msg[] = { "I have stored " };
+const uint8_t stored_msg2[] = { "treasures. On a scale of 0 to 100, that rates " };
+const uint8_t dotnewline[] = { ".\n" };
+const uint8_t newline[] = { "\n" };
+const uint8_t carrying[] = { "I am carrying:\n" };
+const uint8_t dashstr[] = { " - " };
+const uint8_t nothing[] = { "nothing" };
+const uint8_t lightout[] = { "My light has run out." };
+const uint8_t lightoutin[] = { "My light runs out in " };
+const uint8_t turns[] = { "turns" };
+const uint8_t turn[] = { "turn" };
+const uint8_t whattodo[] = { "\nTell me what to do ? " };
+const uint8_t prompt[] = { "\n> " };
+const uint8_t dontknow[] = { "You use word(s) I don't know! " };
+const uint8_t givedirn[] = { "Give me a direction too. " };
+const uint8_t darkdanger[] = { "Dangerous to move in the dark! " };
+const uint8_t brokeneck[] = { "I fell down and broke my neck. " };
+const uint8_t cantgo[] = { "I can't go in that direction. " };
+const uint8_t dontunderstand[] = { "I don't understand your command. " };
+const uint8_t notyet[] = { "I can't do that yet. " };
+const uint8_t beyondpower[] = { "It is beyond my power to do that. " };
+const uint8_t okmsg[] = { "O.K. " };
+const uint8_t whatstr[] = { "What ? " };
+const uint8_t itsdark[] = { "I can't see. It is too dark!" };
+const uint8_t youare[] = { "I am in a " };
+const uint8_t nonestr[] = { "none" };
+const uint8_t obexit[] = { "\nObvious exits: " };
+const uint8_t canalsosee[] = { "I can also see: " };
+const uint8_t playagain[] = { "Do you want to play again Y/N: " };
+const uint8_t invcond[] = { "INVCOND" };
+const uint8_t *exitmsgptr[] = {
+  (uint8_t *)"North",
+  (uint8_t *)"South",
+  (uint8_t *)"East",
+  (uint8_t *)"West",
+  (uint8_t *)"Up",
+  (uint8_t *)"Down"
+};
+
+
+
+/*
+ * 
+ *     Game database follows below. Although linked into the same asm
+ *     file to make life easier this is just "mere aggregation" for
+ *     convenience, due to limits in the tool chain and the game licence
+ *     not the GPL applies below this point
+ */
+const uint8_t startlamp = 250;
+const uint8_t lightfill = 250;
+const uint8_t startcarried = 3;
+const uint8_t maxcar = 6;
+const uint8_t treasure = 0;
+const uint8_t treasures = 0;
+const uint8_t lastloc = 41;
+const uint8_t startloc = 1;
+const uint8_t loctxt_0[] = {
+32, 0 };
+const uint8_t loctxt_1[] = {
+76, 101, 105, 115, 117, 114, 101, 32, 76, 111, 117, 110, 103, 101, 0 };
+const uint8_t loctxt_2[] = {
+87, 97, 115, 104, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_3[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 71, 114, 97, 110, 100, 32, 72, 97, 108, 108, 0 };
+const uint8_t loctxt_4[] = {
+68, 97, 114, 107, 32, 80, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t loctxt_5[] = {
+72, 97, 108, 108, 32, 111, 102, 32, 77, 105, 114, 114, 111, 114, 115, 0 };
+const uint8_t loctxt_6[] = {
+72, 97, 108, 108, 32, 111, 102, 32, 77, 105, 114, 114, 111, 114, 115, 0 };
+const uint8_t loctxt_7[] = {
+72, 97, 108, 108, 32, 111, 102, 32, 77, 105, 114, 114, 111, 114, 115, 0 };
+const uint8_t loctxt_8[] = {
+72, 97, 108, 108, 32, 111, 102, 32, 77, 105, 114, 114, 111, 114, 115, 0 };
+const uint8_t loctxt_9[] = {
+72, 97, 108, 108, 32, 111, 102, 32, 77, 105, 114, 114, 111, 114, 115, 0 };
+const uint8_t loctxt_10[] = {
+72, 97, 108, 108, 32, 111, 102, 32, 77, 105, 114, 114, 111, 114, 115, 0 };
+const uint8_t loctxt_11[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 110, 32, 65, 105, 114, 108, 111, 99, 107, 0 };
+const uint8_t loctxt_12[] = {
+108, 97, 114, 103, 101, 32, 65, 113, 117, 97, 114, 105, 117, 109, 32, 84, 97, 110, 107, 0 };
+const uint8_t loctxt_13[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 110, 32, 65, 105, 114, 108, 111, 99, 107, 0 };
+const uint8_t loctxt_14[] = {
+74, 101, 119, 101, 108, 108, 114, 121, 32, 69, 120, 104, 105, 98, 105, 116, 105, 111, 110, 0 };
+const uint8_t loctxt_15[] = {
+77, 111, 114, 103, 117, 101, 0 };
+const uint8_t loctxt_16[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 69, 120, 101, 99, 117, 116, 105, 111, 110, 32, 67, 104, 97, 109, 98, 101, 114, 0 };
+const uint8_t loctxt_17[] = {
+42, 73, 39, 109, 32, 98, 121, 32, 97, 32, 80, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t loctxt_18[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 69, 103, 121, 112, 116, 105, 97, 110, 32, 84, 101, 109, 112, 108, 101, 0 };
+const uint8_t loctxt_19[] = {
+68, 85, 83, 84, 66, 73, 78, 0 };
+const uint8_t loctxt_20[] = {
+42, 73, 39, 109, 32, 97, 98, 111, 118, 101, 32, 97, 32, 100, 101, 101, 112, 32, 80, 105, 116, 0 };
+const uint8_t loctxt_21[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 69, 110, 99, 104, 97, 110, 116, 101, 100, 32, 87, 111, 111, 100, 108, 97, 110, 100, 0 };
+const uint8_t loctxt_22[] = {
+84, 114, 101, 101, 32, 72, 111, 117, 115, 101, 32, 119, 105, 116, 104, 32, 97, 32, 104, 111, 108, 101, 32, 105, 110, 32, 114, 111, 111, 102, 0 };
+const uint8_t loctxt_23[] = {
+77, 97, 105, 110, 116, 101, 110, 97, 110, 99, 101, 32, 87, 111, 114, 107, 115, 104, 111, 112, 0 };
+const uint8_t loctxt_24[] = {
+83, 116, 111, 114, 101, 32, 82, 111, 111, 109, 0 };
+const uint8_t loctxt_25[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 111, 108, 100, 32, 83, 101, 119, 101, 114, 0 };
+const uint8_t loctxt_26[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 111, 108, 100, 32, 83, 101, 119, 101, 114, 0 };
+const uint8_t loctxt_27[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 111, 108, 100, 32, 83, 101, 119, 101, 114, 0 };
+const uint8_t loctxt_28[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 111, 108, 100, 32, 83, 101, 119, 101, 114, 0 };
+const uint8_t loctxt_29[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 111, 108, 100, 32, 83, 101, 119, 101, 114, 0 };
+const uint8_t loctxt_30[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 111, 108, 100, 32, 83, 101, 119, 101, 114, 0 };
+const uint8_t loctxt_31[] = {
+42, 73, 39, 109, 32, 98, 101, 115, 105, 100, 101, 32, 97, 32, 82, 117, 115, 116, 105, 99, 32, 87, 101, 108, 108, 0 };
+const uint8_t loctxt_32[] = {
+77, 111, 100, 101, 108, 108, 101, 114, 39, 115, 32, 83, 116, 117, 100, 105, 111, 0 };
+const uint8_t loctxt_33[] = {
+67, 114, 111, 119, 100, 101, 100, 32, 76, 101, 105, 115, 117, 114, 101, 32, 76, 111, 117, 110, 103, 101, 0 };
+const uint8_t loctxt_34[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 39, 65, 115, 99, 101, 110, 100, 32, 69, 118, 101, 114, 101, 115, 116, 39, 32, 68, 105, 115, 112, 108, 97, 121, 0 };
+const uint8_t loctxt_35[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 97, 110, 32, 39, 85, 110, 100, 101, 114, 115, 101, 97, 32, 87, 111, 114, 108, 100, 39, 32, 68, 105, 115, 112, 108, 97, 121, 0 };
+const uint8_t loctxt_36[] = {
+68, 97, 109, 112, 32, 87, 101, 108, 108, 32, 83, 104, 97, 102, 116, 0 };
+const uint8_t loctxt_37[] = {
+42, 73, 39, 109, 32, 114, 111, 112, 101, 100, 32, 116, 111, 32, 97, 32, 83, 116, 111, 110, 101, 32, 65, 108, 116, 97, 114, 46, 46, 46, 0 };
+const uint8_t loctxt_38[] = {
+42, 73, 39, 109, 32, 115, 116, 97, 110, 100, 105, 110, 103, 32, 98, 121, 32, 116, 104, 101, 32, 65, 108, 116, 97, 114, 0 };
+const uint8_t loctxt_39[] = {
+42, 73, 39, 109, 32, 97, 98, 111, 118, 101, 32, 97, 32, 100, 101, 101, 112, 32, 119, 105, 100, 101, 32, 80, 105, 116, 0 };
+const uint8_t loctxt_40[] = {
+42, 73, 39, 109, 32, 105, 110, 32, 65, 108, 97, 100, 100, 105, 110, 39, 115, 32, 67, 97, 118, 101, 0 };
+const uint8_t loctxt_41[] = {
+42, 79, 104, 33, 32, 79, 104, 33, 46, 46, 46, 73, 39, 109, 32, 105, 110, 32, 116, 104, 101, 32, 77, 101, 108, 116, 105, 110, 103, 32, 80, 111, 116, 32, 33, 0 };
+
+
+const struct location locdata[] = {
+               { loctxt_0,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_1,  { 2, 0, 0, 5, 3, 0 } }, 
+               { loctxt_2,  { 0, 1, 0, 0, 0, 0 } }, 
+               { loctxt_3,  { 34, 0, 0, 35, 0, 1 } }, 
+               { loctxt_4,  { 4, 4, 0, 9, 0, 0 } }, 
+               { loctxt_5,  { 6, 5, 6, 8, 0, 0 } }, 
+               { loctxt_6,  { 7, 5, 5, 8, 0, 0 } }, 
+               { loctxt_7,  { 6, 7, 7, 9, 0, 0 } }, 
+               { loctxt_8,  { 6, 9, 10, 8, 0, 0 } }, 
+               { loctxt_9,  { 8, 10, 4, 7, 0, 0 } }, 
+               { loctxt_10,  { 9, 10, 10, 11, 0, 0 } }, 
+               { loctxt_11,  { 0, 0, 10, 0, 0, 0 } }, 
+               { loctxt_12,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_13,  { 0, 0, 0, 23, 0, 0 } }, 
+               { loctxt_14,  { 0, 0, 16, 0, 0, 0 } }, 
+               { loctxt_15,  { 0, 0, 0, 36, 0, 0 } }, 
+               { loctxt_16,  { 0, 39, 0, 0, 0, 0 } }, 
+               { loctxt_17,  { 0, 0, 0, 15, 0, 0 } }, 
+               { loctxt_18,  { 0, 0, 0, 17, 0, 0 } }, 
+               { loctxt_19,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_20,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_21,  { 0, 0, 0, 4, 22, 0 } }, 
+               { loctxt_22,  { 0, 0, 0, 0, 3, 21 } }, 
+               { loctxt_23,  { 0, 0, 13, 0, 0, 24 } }, 
+               { loctxt_24,  { 32, 0, 0, 0, 23, 0 } }, 
+               { loctxt_25,  { 28, 25, 26, 25, 0, 0 } }, 
+               { loctxt_26,  { 27, 25, 27, 25, 0, 0 } }, 
+               { loctxt_27,  { 28, 26, 26, 28, 0, 0 } }, 
+               { loctxt_28,  { 27, 25, 27, 29, 0, 0 } }, 
+               { loctxt_29,  { 26, 30, 28, 30, 0, 0 } }, 
+               { loctxt_30,  { 29, 2, 25, 29, 0, 0 } }, 
+               { loctxt_31,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_32,  { 0, 24, 0, 0, 0, 0 } }, 
+               { loctxt_33,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_34,  { 0, 3, 0, 0, 0, 0 } }, 
+               { loctxt_35,  { 0, 0, 3, 0, 0, 0 } }, 
+               { loctxt_36,  { 0, 0, 15, 0, 0, 0 } }, 
+               { loctxt_37,  { 0, 0, 0, 0, 0, 0 } }, 
+               { loctxt_38,  { 0, 0, 0, 0, 39, 0 } }, 
+               { loctxt_39,  { 16, 0, 0, 0, 36, 38 } }, 
+               { loctxt_40,  { 0, 0, 0, 0, 0, 21 } }, 
+               { loctxt_41,  { 0, 0, 0, 0, 0, 0 } }, 
+};
+const uint8_t objinit[] = {
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       36,
+       0,
+       0,
+       0,
+       12,
+       27,
+       0,
+       0,
+       0,
+       1,
+       22,
+       0,
+       0,
+       0,
+       0,
+       255,
+       0,
+       255,
+       0,
+       37,
+       0,
+       18,
+       0,
+       38,
+       255,
+       16,
+       1,
+       1,
+       1,
+       2,
+       21,
+       0,
+       3,
+       34,
+       35,
+       21,
+       0,
+       19,
+       29,
+       0,
+       15,
+       0,
+       17,
+       0,
+       0,
+       15,
+       32,
+       0,
+       0,
+       4,
+       24,
+       0,
+};
+
+
+const uint8_t objtxt_0[] = {
+32, 0 };
+const uint8_t objtxt_1[] = {
+67, 111, 105, 110, 0 };
+const uint8_t objtxt_2[] = {
+83, 109, 97, 108, 108, 32, 75, 101, 121, 0 };
+const uint8_t objtxt_3[] = {
+67, 108, 105, 109, 98, 101, 114, 39, 115, 32, 82, 111, 112, 101, 0 };
+const uint8_t objtxt_4[] = {
+65, 112, 112, 108, 101, 0 };
+const uint8_t objtxt_5[] = {
+80, 105, 101, 99, 101, 32, 111, 102, 32, 67, 104, 101, 101, 115, 101, 0 };
+const uint8_t objtxt_6[] = {
+68, 97, 114, 107, 32, 84, 117, 110, 110, 101, 108, 0 };
+const uint8_t objtxt_7[] = {
+80, 105, 112, 101, 114, 39, 115, 32, 70, 108, 117, 116, 101, 0 };
+const uint8_t objtxt_8[] = {
+65, 110, 32, 65, 113, 117, 97, 108, 117, 110, 103, 0 };
+const uint8_t objtxt_9[] = {
+84, 111, 114, 99, 104, 32, 40, 108, 105, 116, 41, 0 };
+const uint8_t objtxt_10[] = {
+74, 97, 119, 115, 32, 73, 86, 0 };
+const uint8_t objtxt_11[] = {
+83, 101, 119, 101, 114, 32, 82, 97, 116, 115, 0 };
+const uint8_t objtxt_12[] = {
+71, 111, 108, 100, 101, 110, 32, 67, 97, 115, 107, 101, 116, 0 };
+const uint8_t objtxt_13[] = {
+84, 97, 110, 110, 97, 32, 76, 101, 97, 118, 101, 115, 0 };
+const uint8_t objtxt_14[] = {
+79, 108, 100, 32, 76, 97, 109, 112, 0 };
+const uint8_t objtxt_15[] = {
+87, 111, 111, 100, 101, 110, 32, 66, 101, 97, 109, 0 };
+const uint8_t objtxt_16[] = {
+67, 117, 112, 98, 111, 97, 114, 100, 32, 119, 105, 116, 104, 32, 107, 101, 121, 32, 105, 110, 32, 108, 111, 99, 107, 0 };
+const uint8_t objtxt_17[] = {
+80, 105, 115, 116, 111, 108, 0 };
+const uint8_t objtxt_18[] = {
+51, 32, 83, 105, 108, 118, 101, 114, 32, 66, 117, 108, 108, 101, 116, 115, 0 };
+const uint8_t objtxt_19[] = {
+84, 97, 108, 105, 115, 109, 97, 110, 0 };
+const uint8_t objtxt_20[] = {
+67, 114, 111, 119, 98, 97, 114, 0 };
+const uint8_t objtxt_21[] = {
+66, 111, 120, 32, 111, 102, 32, 77, 97, 116, 99, 104, 101, 115, 0 };
+const uint8_t objtxt_22[] = {
+69, 103, 121, 112, 116, 105, 97, 110, 32, 84, 97, 108, 105, 115, 109, 97, 110, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_23[] = {
+80, 105, 101, 99, 101, 32, 111, 102, 32, 80, 97, 112, 101, 114, 0 };
+const uint8_t objtxt_24[] = {
+83, 109, 97, 108, 108, 32, 66, 97, 114, 114, 101, 108, 0 };
+const uint8_t objtxt_25[] = {
+82, 97, 122, 111, 114, 32, 83, 104, 97, 114, 112, 32, 80, 101, 110, 100, 117, 108, 117, 109, 32, 97, 98, 111, 118, 101, 32, 109, 101, 0 };
+const uint8_t objtxt_26[] = {
+71, 111, 108, 100, 32, 75, 101, 121, 0 };
+const uint8_t objtxt_27[] = {
+83, 97, 114, 99, 111, 112, 104, 97, 103, 117, 115, 0 };
+const uint8_t objtxt_28[] = {
+83, 105, 110, 105, 115, 116, 101, 114, 32, 108, 111, 111, 107, 105, 110, 103, 32, 77, 117, 109, 109, 121, 0 };
+const uint8_t objtxt_29[] = {
+80, 101, 110, 100, 117, 108, 117, 109, 32, 98, 117, 114, 105, 101, 100, 32, 105, 110, 32, 65, 108, 116, 97, 114, 0 };
+const uint8_t objtxt_30[] = {
+67, 111, 105, 110, 0 };
+const uint8_t objtxt_31[] = {
+84, 114, 97, 112, 100, 111, 111, 114, 46, 32, 84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 100, 111, 111, 114, 32, 98, 101, 121, 111, 110, 100, 0 };
+const uint8_t objtxt_32[] = {
+80, 117, 98, 108, 105, 99, 32, 84, 101, 108, 101, 112, 104, 111, 110, 101, 0 };
+const uint8_t objtxt_33[] = {
+79, 108, 100, 45, 70, 97, 115, 104, 105, 111, 110, 101, 100, 32, 83, 108, 111, 116, 32, 77, 97, 99, 104, 105, 110, 101, 0 };
+const uint8_t objtxt_34[] = {
+83, 101, 97, 116, 115, 32, 97, 114, 111, 117, 110, 100, 32, 116, 104, 101, 32, 114, 111, 111, 109, 0 };
+const uint8_t objtxt_35[] = {
+87, 97, 115, 104, 98, 97, 115, 105, 110, 115, 32, 38, 32, 84, 111, 105, 108, 101, 116, 115, 46, 32, 71, 114, 105, 100, 32, 105, 110, 32, 102, 108, 111, 111, 114, 0 };
+const uint8_t objtxt_36[] = {
+84, 104, 101, 32, 80, 105, 101, 100, 32, 80, 105, 112, 101, 114, 32, 38, 32, 71, 117, 121, 32, 70, 97, 119, 107, 101, 115, 0 };
+const uint8_t objtxt_37[] = {
+83, 109, 97, 108, 108, 32, 84, 111, 114, 99, 104, 0 };
+const uint8_t objtxt_38[] = {
+68, 105, 115, 112, 108, 97, 121, 115, 32, 116, 111, 32, 78, 111, 114, 116, 104, 32, 38, 32, 87, 101, 115, 116, 0 };
+const uint8_t objtxt_39[] = {
+69, 100, 109, 117, 110, 100, 32, 72, 105, 108, 108, 97, 114, 121, 32, 38, 32, 84, 101, 110, 115, 105, 110, 103, 0 };
+const uint8_t objtxt_40[] = {
+74, 97, 99, 113, 117, 101, 115, 32, 67, 111, 117, 115, 116, 101, 97, 117, 32, 105, 110, 32, 83, 99, 117, 98, 97, 32, 71, 101, 97, 114, 0 };
+const uint8_t objtxt_41[] = {
+83, 105, 103, 110, 32, 39, 78, 111, 32, 87, 97, 105, 116, 105, 110, 103, 39, 0 };
+const uint8_t objtxt_42[] = {
+65, 113, 117, 97, 108, 117, 110, 103, 32, 40, 119, 111, 114, 110, 41, 0 };
+const uint8_t objtxt_43[] = {
+82, 111, 112, 101, 32, 104, 97, 110, 103, 105, 110, 103, 32, 100, 111, 119, 110, 32, 116, 104, 101, 32, 87, 101, 108, 108, 0 };
+const uint8_t objtxt_44[] = {
+72, 117, 109, 97, 110, 101, 32, 82, 97, 116, 32, 84, 114, 97, 112, 0 };
+const uint8_t objtxt_45[] = {
+74, 97, 99, 107, 101, 116, 0 };
+const uint8_t objtxt_46[] = {
+68, 101, 99, 111, 109, 112, 111, 115, 105, 110, 103, 32, 90, 111, 109, 98, 105, 101, 0 };
+const uint8_t objtxt_47[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 82, 111, 116, 116, 105, 110, 103, 32, 70, 108, 101, 115, 104, 0 };
+const uint8_t objtxt_48[] = {
+77, 97, 115, 111, 110, 114, 121, 32, 98, 108, 111, 99, 107, 105, 110, 103, 32, 116, 104, 101, 32, 80, 97, 115, 115, 97, 103, 101, 0 };
+const uint8_t objtxt_49[] = {
+68, 117, 115, 116, 32, 38, 32, 68, 101, 98, 114, 105, 115, 32, 101, 118, 101, 114, 121, 119, 104, 101, 114, 101, 0 };
+const uint8_t objtxt_50[] = {
+80, 97, 115, 115, 97, 103, 101, 32, 110, 111, 119, 32, 99, 108, 101, 97, 114, 101, 100, 0 };
+const uint8_t objtxt_51[] = {
+65, 110, 32, 111, 112, 101, 110, 32, 100, 111, 111, 114, 0 };
+const uint8_t objtxt_52[] = {
+80, 105, 108, 101, 32, 111, 102, 32, 74, 117, 110, 107, 0 };
+const uint8_t objtxt_53[] = {
+71, 111, 108, 100, 101, 110, 32, 77, 97, 115, 107, 0 };
+const uint8_t objtxt_54[] = {
+67, 117, 112, 98, 111, 97, 114, 100, 0 };
+const uint8_t objtxt_55[] = {
+78, 97, 114, 114, 111, 119, 32, 99, 114, 97, 99, 107, 32, 105, 110, 32, 119, 97, 108, 108, 0 };
+const uint8_t objtxt_56[] = {
+76, 111, 111, 115, 101, 32, 116, 114, 97, 112, 100, 111, 111, 114, 32, 105, 110, 32, 114, 111, 111, 102, 0 };
+const uint8_t objtxt_57[] = {
+84, 114, 97, 112, 100, 111, 111, 114, 32, 115, 101, 99, 117, 114, 101, 100, 32, 98, 121, 32, 98, 101, 97, 109, 0 };
+
+
+const uint8_t *objtext[] = {
+       objtxt_0,
+       objtxt_1,
+       objtxt_2,
+       objtxt_3,
+       objtxt_4,
+       objtxt_5,
+       objtxt_6,
+       objtxt_7,
+       objtxt_8,
+       objtxt_9,
+       objtxt_10,
+       objtxt_11,
+       objtxt_12,
+       objtxt_13,
+       objtxt_14,
+       objtxt_15,
+       objtxt_16,
+       objtxt_17,
+       objtxt_18,
+       objtxt_19,
+       objtxt_20,
+       objtxt_21,
+       objtxt_22,
+       objtxt_23,
+       objtxt_24,
+       objtxt_25,
+       objtxt_26,
+       objtxt_27,
+       objtxt_28,
+       objtxt_29,
+       objtxt_30,
+       objtxt_31,
+       objtxt_32,
+       objtxt_33,
+       objtxt_34,
+       objtxt_35,
+       objtxt_36,
+       objtxt_37,
+       objtxt_38,
+       objtxt_39,
+       objtxt_40,
+       objtxt_41,
+       objtxt_42,
+       objtxt_43,
+       objtxt_44,
+       objtxt_45,
+       objtxt_46,
+       objtxt_47,
+       objtxt_48,
+       objtxt_49,
+       objtxt_50,
+       objtxt_51,
+       objtxt_52,
+       objtxt_53,
+       objtxt_54,
+       objtxt_55,
+       objtxt_56,
+       objtxt_57,
+};
+const uint8_t msgtxt_0[] = {
+79, 0 };
+const uint8_t msgtxt_1[] = {
+73, 32, 109, 117, 115, 116, 32, 104, 97, 118, 101, 32, 100, 111, 122, 101, 100, 32, 111, 102, 102, 46, 32, 73, 39, 109, 32, 108, 111, 99, 107, 101, 100, 32, 105, 110, 33, 0 };
+const uint8_t msgtxt_2[] = {
+84, 104, 101, 114, 101, 39, 115, 32, 97, 32, 67, 111, 105, 110, 32, 104, 101, 114, 101, 0 };
+const uint8_t msgtxt_3[] = {
+73, 116, 32, 103, 105, 118, 101, 115, 32, 80, 114, 105, 122, 101, 115, 0 };
+const uint8_t msgtxt_4[] = {
+73, 39, 118, 101, 32, 119, 111, 110, 32, 97, 32, 102, 108, 97, 115, 104, 108, 105, 103, 104, 116, 0 };
+const uint8_t msgtxt_5[] = {
+80, 104, 111, 116, 111, 45, 101, 108, 101, 99, 116, 114, 105, 99, 32, 99, 101, 108, 108, 115, 32, 116, 114, 105, 103, 103, 101, 114, 32, 68, 105, 115, 112, 108, 97, 121, 0 };
+const uint8_t msgtxt_6[] = {
+73, 39, 118, 101, 32, 108, 111, 115, 116, 33, 0 };
+const uint8_t msgtxt_7[] = {
+67, 82, 73, 80, 69, 83, 33, 32, 84, 104, 101, 32, 83, 104, 97, 114, 107, 32, 98, 105, 116, 32, 109, 101, 32, 105, 110, 32, 72, 97, 108, 102, 0 };
+const uint8_t msgtxt_8[] = {
+79, 46, 75, 46, 0 };
+const uint8_t msgtxt_9[] = {
+73, 116, 39, 115, 32, 69, 109, 112, 116, 121, 33, 0 };
+const uint8_t msgtxt_10[] = {
+73, 32, 115, 101, 101, 32, 110, 111, 116, 104, 105, 110, 103, 32, 115, 112, 101, 99, 105, 97, 108, 0 };
+const uint8_t msgtxt_11[] = {
+73, 32, 99, 97, 110, 32, 115, 101, 101, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_12[] = {
+73, 116, 39, 115, 32, 79, 112, 101, 110, 0 };
+const uint8_t msgtxt_13[] = {
+73, 116, 39, 115, 32, 76, 111, 99, 107, 101, 100, 0 };
+const uint8_t msgtxt_14[] = {
+87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 77, 89, 83, 84, 69, 82, 73, 79, 85, 83, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 32, 35, 49, 49, 0 };
+const uint8_t msgtxt_15[] = {
+68, 101, 100, 105, 99, 97, 116, 101, 100, 32, 116, 111, 32, 77, 97, 114, 103, 97, 114, 101, 116, 0 };
+const uint8_t msgtxt_16[] = {
+72, 97, 118, 101, 32, 97, 32, 67, 111, 102, 102, 101, 101, 46, 46, 46, 97, 110, 100, 32, 84, 72, 73, 78, 75, 0 };
+const uint8_t msgtxt_17[] = {
+78, 111, 116, 104, 105, 110, 103, 32, 104, 97, 112, 112, 101, 110, 115, 0 };
+const uint8_t msgtxt_18[] = {
+83, 111, 109, 101, 116, 104, 105, 110, 103, 32, 105, 115, 32, 72, 97, 112, 112, 101, 110, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_19[] = {
+73, 32, 114, 101, 109, 101, 109, 98, 101, 114, 32, 99, 111, 109, 105, 110, 103, 32, 116, 111, 32, 116, 104, 101, 32, 87, 97, 120, 119, 111, 114, 107, 115, 46, 46, 0 };
+const uint8_t msgtxt_20[] = {
+73, 116, 39, 115, 32, 83, 80, 79, 79, 75, 89, 33, 0 };
+const uint8_t msgtxt_21[] = {
+83, 104, 97, 114, 107, 32, 115, 119, 105, 109, 115, 32, 99, 108, 111, 115, 101, 114, 46, 46, 46, 0 };
+const uint8_t msgtxt_22[] = {
+73, 32, 100, 111, 110, 39, 116, 32, 104, 97, 118, 101, 32, 97, 110, 121, 0 };
+const uint8_t msgtxt_23[] = {
+73, 32, 99, 97, 110, 39, 116, 32, 115, 113, 117, 101, 101, 122, 101, 32, 116, 104, 114, 111, 117, 103, 104, 46, 46, 46, 121, 101, 116, 0 };
+const uint8_t msgtxt_24[] = {
+82, 97, 116, 115, 32, 101, 97, 116, 32, 116, 104, 101, 32, 99, 104, 101, 101, 115, 101, 0 };
+const uint8_t msgtxt_25[] = {
+82, 97, 116, 115, 32, 102, 111, 108, 108, 111, 119, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_26[] = {
+84, 104, 101, 121, 32, 108, 111, 111, 107, 32, 104, 117, 110, 103, 114, 121, 33, 0 };
+const uint8_t msgtxt_27[] = {
+82, 97, 116, 115, 32, 97, 114, 101, 110, 39, 116, 32, 104, 117, 110, 103, 114, 121, 32, 110, 111, 119, 0 };
+const uint8_t msgtxt_28[] = {
+65, 32, 118, 111, 105, 99, 101, 32, 115, 97, 121, 115, 32, 58, 0 };
+const uint8_t msgtxt_29[] = {
+39, 83, 97, 121, 32, 116, 104, 101, 32, 89, 101, 97, 114, 32, 105, 116, 32, 104, 97, 112, 112, 101, 110, 101, 100, 39, 0 };
+const uint8_t msgtxt_30[] = {
+84, 111, 111, 116, 32, 116, 101, 32, 84, 111, 111, 116, 32, 116, 101, 32, 84, 111, 111, 116, 33, 0 };
+const uint8_t msgtxt_31[] = {
+87, 104, 101, 110, 32, 73, 32, 119, 97, 115, 32, 51, 49, 32, 109, 121, 32, 115, 111, 110, 32, 119, 97, 115, 32, 56, 0 };
+const uint8_t msgtxt_32[] = {
+32, 67, 111, 114, 114, 101, 99, 116, 33, 0 };
+const uint8_t msgtxt_33[] = {
+46, 46, 46, 46, 46, 84, 104, 97, 116, 39, 115, 32, 66, 101, 116, 116, 101, 114, 33, 0 };
+const uint8_t msgtxt_34[] = {
+73, 116, 39, 115, 32, 116, 111, 111, 32, 82, 105, 115, 107, 121, 33, 0 };
+const uint8_t msgtxt_35[] = {
+84, 111, 114, 113, 117, 101, 109, 97, 100, 97, 39, 115, 32, 103, 111, 116, 32, 109, 101, 33, 46, 46, 46, 72, 101, 32, 75, 46, 79, 46, 115, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_36[] = {
+84, 104, 97, 116, 32, 119, 97, 115, 32, 83, 84, 85, 80, 73, 68, 33, 32, 73, 39, 118, 101, 32, 100, 114, 111, 119, 110, 101, 100, 0 };
+const uint8_t msgtxt_37[] = {
+73, 116, 39, 115, 32, 116, 111, 111, 32, 115, 109, 97, 108, 108, 0 };
+const uint8_t msgtxt_38[] = {
+82, 97, 116, 115, 32, 103, 110, 97, 119, 32, 114, 111, 112, 101, 115, 46, 32, 70, 114, 101, 101, 32, 109, 101, 32, 106, 117, 115, 116, 32, 105, 110, 32, 116, 105, 109, 101, 33, 0 };
+const uint8_t msgtxt_39[] = {
+72, 117, 110, 103, 114, 121, 32, 82, 97, 116, 115, 32, 119, 105, 108, 108, 32, 99, 104, 101, 119, 32, 97, 110, 121, 116, 104, 105, 110, 103, 46, 46, 0 };
+const uint8_t msgtxt_40[] = {
+73, 32, 99, 97, 110, 32, 104, 101, 97, 114, 32, 82, 97, 116, 115, 32, 115, 99, 114, 97, 98, 98, 108, 105, 110, 103, 32, 97, 98, 111, 117, 116, 0 };
+const uint8_t msgtxt_41[] = {
+65, 97, 97, 114, 114, 103, 103, 104, 104, 46, 46, 84, 104, 101, 32, 80, 101, 110, 100, 117, 108, 117, 109, 32, 114, 101, 97, 99, 104, 101, 100, 32, 109, 101, 33, 0 };
+const uint8_t msgtxt_42[] = {
+80, 101, 110, 100, 117, 108, 117, 109, 32, 115, 119, 105, 110, 103, 115, 32, 108, 111, 119, 101, 114, 32, 97, 110, 100, 32, 108, 111, 119, 101, 114, 46, 46, 46, 0 };
+const uint8_t msgtxt_43[] = {
+84, 114, 97, 112, 100, 111, 111, 114, 32, 105, 115, 32, 108, 111, 111, 115, 101, 33, 0 };
+const uint8_t msgtxt_44[] = {
+72, 101, 39, 115, 32, 104, 105, 100, 105, 110, 103, 32, 115, 111, 109, 101, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t msgtxt_45[] = {
+73, 116, 39, 115, 32, 71, 117, 110, 112, 111, 119, 100, 101, 114, 32, 97, 110, 100, 32, 105, 116, 39, 115, 32, 70, 117, 115, 101, 100, 33, 0 };
+const uint8_t msgtxt_46[] = {
+35, 33, 42, 46, 46, 115, 115, 46, 122, 122, 122, 46, 46, 73, 116, 39, 115, 32, 108, 105, 116, 0 };
+const uint8_t msgtxt_47[] = {
+84, 105, 109, 101, 32, 112, 97, 115, 115, 101, 115, 46, 46, 46, 46, 0 };
+const uint8_t msgtxt_48[] = {
+32, 105, 115, 32, 119, 114, 111, 110, 103, 0 };
+const uint8_t msgtxt_49[] = {
+66, 32, 79, 32, 79, 32, 77, 32, 33, 46, 46, 32, 73, 32, 119, 97, 115, 32, 116, 111, 111, 32, 115, 108, 111, 119, 33, 0 };
+const uint8_t msgtxt_50[] = {
+73, 116, 32, 104, 97, 110, 103, 115, 32, 98, 101, 104, 105, 110, 100, 32, 116, 104, 101, 32, 100, 111, 111, 114, 0 };
+const uint8_t msgtxt_51[] = {
+73, 116, 39, 115, 32, 76, 111, 97, 100, 101, 100, 0 };
+const uint8_t msgtxt_52[] = {
+70, 111, 114, 32, 65, 108, 108, 32, 116, 104, 101, 32, 77, 89, 83, 84, 69, 82, 73, 79, 85, 83, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 83, 0 };
+const uint8_t msgtxt_53[] = {
+42, 32, 66, 32, 65, 32, 78, 32, 71, 32, 42, 32, 33, 0 };
+const uint8_t msgtxt_54[] = {
+73, 39, 118, 101, 32, 75, 105, 108, 108, 101, 100, 32, 105, 116, 33, 0 };
+const uint8_t msgtxt_55[] = {
+85, 117, 103, 103, 104, 104, 33, 32, 73, 116, 32, 98, 105, 116, 32, 109, 121, 32, 84, 104, 114, 111, 97, 116, 32, 79, 117, 116, 33, 0 };
+const uint8_t msgtxt_56[] = {
+73, 116, 32, 109, 111, 118, 101, 115, 32, 99, 108, 111, 115, 101, 114, 46, 46, 46, 0 };
+const uint8_t msgtxt_57[] = {
+73, 116, 32, 115, 97, 121, 115, 32, 39, 83, 101, 101, 32, 121, 111, 117, 114, 32, 76, 111, 99, 97, 108, 32, 68, 101, 97, 108, 101, 114, 0 };
+const uint8_t msgtxt_58[] = {
+71, 101, 116, 32, 111, 117, 116, 32, 70, 65, 83, 84, 33, 0 };
+const uint8_t msgtxt_59[] = {
+77, 97, 116, 99, 104, 32, 104, 97, 115, 32, 103, 111, 110, 101, 32, 111, 117, 116, 0 };
+const uint8_t msgtxt_60[] = {
+77, 97, 116, 99, 104, 32, 98, 117, 114, 110, 115, 32, 100, 105, 109, 108, 121, 0 };
+const uint8_t msgtxt_61[] = {
+85, 109, 109, 109, 109, 46, 46, 46, 86, 101, 114, 121, 32, 84, 97, 115, 116, 121, 33, 0 };
+const uint8_t msgtxt_62[] = {
+89, 111, 117, 32, 97, 114, 101, 32, 65, 66, 79, 77, 73, 78, 65, 66, 76, 69, 33, 0 };
+const uint8_t msgtxt_63[] = {
+73, 32, 110, 101, 101, 100, 32, 97, 32, 108, 101, 118, 101, 114, 0 };
+const uint8_t msgtxt_64[] = {
+84, 114, 97, 112, 100, 111, 111, 114, 32, 105, 115, 32, 115, 101, 99, 117, 114, 101, 100, 0 };
+const uint8_t msgtxt_65[] = {
+66, 32, 79, 32, 79, 32, 77, 32, 84, 104, 101, 114, 101, 39, 115, 32, 97, 110, 32, 69, 120, 112, 108, 111, 115, 105, 111, 110, 33, 0 };
+const uint8_t msgtxt_66[] = {
+87, 104, 97, 116, 32, 97, 32, 77, 101, 115, 115, 33, 0 };
+const uint8_t msgtxt_67[] = {
+73, 39, 118, 101, 32, 102, 97, 108, 108, 101, 110, 32, 100, 111, 119, 110, 32, 97, 110, 100, 32, 98, 114, 111, 107, 101, 110, 32, 109, 121, 32, 110, 101, 99, 107, 33, 0 };
+const uint8_t msgtxt_68[] = {
+77, 117, 109, 109, 121, 32, 82, 101, 118, 105, 118, 101, 115, 32, 97, 110, 100, 32, 115, 101, 101, 115, 32, 84, 97, 108, 105, 115, 109, 97, 110, 0 };
+const uint8_t msgtxt_69[] = {
+71, 105, 118, 101, 115, 32, 109, 101, 32, 97, 32, 71, 111, 108, 100, 101, 110, 32, 77, 97, 115, 107, 0 };
+const uint8_t msgtxt_70[] = {
+46, 46, 46, 73, 39, 118, 101, 32, 98, 101, 101, 110, 32, 97, 115, 108, 101, 101, 112, 46, 32, 73, 116, 32, 119, 97, 115, 32, 97, 108, 108, 32, 97, 32, 68, 114, 101, 97, 109, 33, 0 };
+const uint8_t msgtxt_71[] = {
+84, 104, 97, 110, 107, 32, 71, 111, 111, 100, 110, 101, 115, 115, 32, 73, 39, 118, 101, 32, 83, 117, 114, 118, 105, 118, 101, 100, 33, 0 };
+const uint8_t msgtxt_72[] = {
+90, 111, 109, 98, 105, 101, 32, 98, 97, 114, 115, 32, 116, 104, 101, 32, 119, 97, 121, 33, 0 };
+const uint8_t msgtxt_73[] = {
+73, 116, 39, 115, 32, 98, 101, 101, 110, 32, 86, 97, 110, 100, 97, 108, 105, 122, 101, 100, 33, 0 };
+const uint8_t msgtxt_74[] = {
+85, 103, 104, 33, 46, 46, 73, 116, 39, 115, 32, 87, 65, 88, 33, 0 };
+const uint8_t msgtxt_75[] = {
+77, 117, 109, 109, 121, 32, 82, 101, 118, 105, 118, 101, 115, 33, 46, 46, 83, 97, 121, 115, 32, 39, 85, 110, 98, 101, 108, 105, 101, 118, 101, 114, 33, 39, 0 };
+const uint8_t msgtxt_76[] = {
+97, 110, 100, 32, 116, 104, 101, 110, 32, 83, 116, 114, 97, 110, 103, 108, 101, 115, 32, 109, 101, 33, 46, 46, 79, 111, 111, 111, 111, 103, 103, 104, 33, 0 };
+const uint8_t msgtxt_77[] = {
+73, 39, 109, 32, 103, 111, 105, 110, 103, 32, 105, 110, 32, 99, 105, 114, 99, 108, 101, 115, 33, 0 };
+const uint8_t msgtxt_78[] = {
+89, 111, 117, 114, 32, 80, 105, 101, 116, 121, 32, 105, 115, 32, 78, 111, 116, 101, 119, 111, 114, 116, 104, 121, 33, 0 };
+const uint8_t msgtxt_79[] = {
+73, 116, 39, 115, 32, 76, 105, 116, 0 };
+const uint8_t msgtxt_80[] = {
+73, 116, 39, 115, 32, 110, 111, 116, 32, 76, 105, 116, 0 };
+const uint8_t msgtxt_81[] = {
+84, 104, 97, 116, 39, 115, 32, 85, 110, 110, 101, 99, 101, 115, 115, 97, 114, 121, 33, 32, 89, 111, 117, 32, 82, 97, 112, 115, 99, 97, 108, 108, 105, 111, 110, 33, 0 };
+const uint8_t msgtxt_82[] = {
+39, 32, 87, 97, 120, 119, 111, 114, 107, 115, 32, 39, 32, 40, 67, 41, 32, 49, 57, 56, 51, 0 };
+const uint8_t msgtxt_83[] = {
+98, 121, 32, 66, 114, 105, 97, 110, 32, 72, 111, 119, 97, 114, 116, 104, 32, 38, 32, 67, 108, 105, 102, 102, 32, 79, 103, 100, 101, 110, 0 };
+const uint8_t msgtxt_84[] = {
+73, 32, 97, 109, 32, 110, 111, 119, 32, 100, 111, 117, 98, 108, 101, 32, 104, 105, 115, 32, 97, 103, 101, 0 };
+const uint8_t msgtxt_85[] = {
+39, 83, 97, 121, 39, 32, 72, 111, 119, 32, 111, 108, 100, 32, 73, 32, 97, 109, 0 };
+const uint8_t msgtxt_86[] = {
+111, 114, 32, 67, 111, 110, 116, 97, 99, 116, 32, 32, 68, 73, 71, 73, 84, 65, 76, 32, 70, 65, 78, 84, 65, 83, 73, 65, 39, 0 };
+const uint8_t msgtxt_87[] = {
+83, 111, 109, 101, 111, 110, 101, 32, 99, 114, 101, 112, 116, 32, 117, 112, 32, 98, 101, 104, 105, 110, 100, 32, 109, 101, 33, 46, 46, 0 };
+const uint8_t msgtxt_88[] = {
+66, 117, 116, 32, 87, 104, 97, 116, 32, 97, 110, 32, 65, 68, 86, 69, 78, 84, 85, 82, 69, 32, 105, 116, 32, 119, 97, 115, 33, 0 };
+const uint8_t msgtxt_89[] = {
+66, 101, 97, 109, 32, 105, 115, 32, 116, 111, 111, 32, 108, 111, 110, 103, 33, 0 };
+const uint8_t msgtxt_90[] = {
+85, 115, 101, 32, 116, 104, 101, 32, 80, 105, 115, 116, 111, 108, 33, 0 };
+const uint8_t msgtxt_91[] = {
+86, 105, 111, 108, 101, 110, 99, 101, 32, 97, 99, 104, 105, 101, 118, 101, 115, 32, 78, 111, 116, 104, 105, 110, 103, 33, 0 };
+const uint8_t *msgptr[] = {
+       msgtxt_0,
+       msgtxt_1,
+       msgtxt_2,
+       msgtxt_3,
+       msgtxt_4,
+       msgtxt_5,
+       msgtxt_6,
+       msgtxt_7,
+       msgtxt_8,
+       msgtxt_9,
+       msgtxt_10,
+       msgtxt_11,
+       msgtxt_12,
+       msgtxt_13,
+       msgtxt_14,
+       msgtxt_15,
+       msgtxt_16,
+       msgtxt_17,
+       msgtxt_18,
+       msgtxt_19,
+       msgtxt_20,
+       msgtxt_21,
+       msgtxt_22,
+       msgtxt_23,
+       msgtxt_24,
+       msgtxt_25,
+       msgtxt_26,
+       msgtxt_27,
+       msgtxt_28,
+       msgtxt_29,
+       msgtxt_30,
+       msgtxt_31,
+       msgtxt_32,
+       msgtxt_33,
+       msgtxt_34,
+       msgtxt_35,
+       msgtxt_36,
+       msgtxt_37,
+       msgtxt_38,
+       msgtxt_39,
+       msgtxt_40,
+       msgtxt_41,
+       msgtxt_42,
+       msgtxt_43,
+       msgtxt_44,
+       msgtxt_45,
+       msgtxt_46,
+       msgtxt_47,
+       msgtxt_48,
+       msgtxt_49,
+       msgtxt_50,
+       msgtxt_51,
+       msgtxt_52,
+       msgtxt_53,
+       msgtxt_54,
+       msgtxt_55,
+       msgtxt_56,
+       msgtxt_57,
+       msgtxt_58,
+       msgtxt_59,
+       msgtxt_60,
+       msgtxt_61,
+       msgtxt_62,
+       msgtxt_63,
+       msgtxt_64,
+       msgtxt_65,
+       msgtxt_66,
+       msgtxt_67,
+       msgtxt_68,
+       msgtxt_69,
+       msgtxt_70,
+       msgtxt_71,
+       msgtxt_72,
+       msgtxt_73,
+       msgtxt_74,
+       msgtxt_75,
+       msgtxt_76,
+       msgtxt_77,
+       msgtxt_78,
+       msgtxt_79,
+       msgtxt_80,
+       msgtxt_81,
+       msgtxt_82,
+       msgtxt_83,
+       msgtxt_84,
+       msgtxt_85,
+       msgtxt_86,
+       msgtxt_87,
+       msgtxt_88,
+       msgtxt_89,
+       msgtxt_90,
+       msgtxt_91,
+};
+
+
+const uint8_t status[] = {
+/* AUTO  100   */
+       167, 
+       9, 1, 
+       14, 132, 133, 73, 
+/* AUTO  0     */
+       195, 
+       0, 15, 86, 73, 
+/* AUTO  0     */
+       199, 
+       0, 1, 
+       58, 19, 1, 20, 
+/* AUTO  100   */
+       182, 
+       1, 7, 12, 11, 8, 4, 0, 11, 0, 4, 
+       53, 60, 25, 
+/* AUTO  100   */
+       179, 
+       4, 34, 14, 3, 8, 6, 0, 6, 
+       5, 28, 29, 60, 
+/* AUTO  100   */
+       165, 
+       4, 2, 
+       57, 64, 
+/* AUTO  100   */
+       165, 
+       4, 31, 
+       56, 64, 
+/* AUTO  100   */
+       165, 
+       4, 3, 
+       57, 64, 
+/* AUTO  100   */
+       179, 
+       4, 35, 8, 7, 14, 8, 14, 42, 
+       5, 28, 31, 73, 
+/* AUTO  0     */
+       198, 
+       0, 7, 
+       60, 134, 135, 
+/* AUTO  100   */
+       168, 
+       7, 34, 0, 6, 
+       58, 
+/* AUTO  100   */
+       176, 
+       7, 35, 14, 8, 10, 55, 0, 7, 
+       58, 
+/* AUTO  100   */
+       171, 
+       4, 12, 6, 42, 
+       36, 88, 61, 63, 
+/* AUTO  100   */
+       165, 
+       4, 25, 
+       56, 64, 
+/* AUTO  100   */
+       164, 
+       4, 41, 
+       63, 
+/* AUTO  100   */
+       180, 
+       4, 20, 8, 4, 14, 19, 0, 11, 0, 37, 
+       62, 
+/* AUTO  100   */
+       183, 
+       4, 20, 0, 9, 0, 1, 0, 4, 0, 1, 
+       58, 81, 79, 81, 
+/* AUTO  100   */
+       171, 
+       4, 20, 14, 19, 
+       88, 35, 86, 73, 
+/* AUTO  0     */
+       199, 
+       0, 37, 
+       88, 88, 88, 54, 
+/* AUTO  100   */
+       170, 
+       4, 37, 0, 1, 
+       81, 77, 73, 
+/* AUTO  0     */
+       198, 
+       19, 3, 
+       40, 86, 86, 
+/* AUTO  0     */
+       198, 
+       19, 0, 
+       41, 61, 63, 
+/* AUTO  0     */
+       197, 
+       0, 1, 
+       81, 42, 
+/* AUTO  100   */
+       170, 
+       8, 8, 0, 2, 
+       81, 77, 73, 
+/* AUTO  0     */
+       202, 
+       19, 0, 3, 24, 
+       49, 61, 63, 
+/* AUTO  0     */
+       214, 
+       19, 0, 5, 24, 0, 24, 0, 49, 0, 2, 
+       72, 115, 81, 
+/* AUTO  0     */
+       200, 
+       19, 0, 0, 8, 
+       60, 
+/* AUTO  0     */
+       200, 
+       16, 0, 0, 2, 
+       81, 
+/* AUTO  100   */
+       168, 
+       2, 49, 7, 17, 
+       116, 
+/* AUTO  100   */
+       180, 
+       2, 49, 4, 17, 13, 48, 0, 48, 0, 50, 
+       72, 
+/* AUTO  40    */
+       145, 40, 
+       2, 46, 8, 12, 0, 46, 0, 47, 
+       72, 104, 
+/* AUTO  100   */
+       179, 
+       5, 46, 0, 4, 0, 4, 0, 4, 
+       0, 81, 79, 81, 
+/* AUTO  100   */
+       170, 
+       2, 46, 0, 4, 
+       81, 77, 73, 
+/* AUTO  0     */
+       198, 
+       19, 0, 
+       105, 61, 63, 
+/* AUTO  0     */
+       202, 
+       0, 4, 0, 12, 
+       81, 106, 60, 
+/* AUTO  100   */
+       171, 
+       8, 14, 0, 5, 
+       81, 77, 0, 73, 
+/* AUTO  0     */
+       196, 
+       16, 0, 
+       110, 
+/* AUTO  0     */
+       201, 
+       15, 0, 0, 14, 
+       109, 60, 
+/* AUTO  0     */
+       196, 
+       0, 5, 
+       81, 
+/* AUTO  100   */
+       178, 
+       7, 12, 0, 6, 0, 3, 0, 6, 
+       81, 79, 81, 
+/* AUTO  100   */
+       171, 
+       4, 12, 0, 6, 
+       81, 77, 0, 73, 
+/* AUTO  0     */
+       203, 
+       4, 12, 19, 0, 
+       7, 88, 61, 63, 
+/* AUTO  0     */
+       198, 
+       0, 6, 
+       81, 127, 21, 
+};
+const uint8_t actions[] = {
+/* INSE  COIN  */
+       19, 28, 12, 
+       4, 1, 1, 1, 14, 37, 0, 37, 
+       18, 4, 53, 73, 
+/* AUTO  0     */
+       205, 
+       0, 1, 0, 19, 0, 37, 
+       62, 74, 
+/* HELP  ANY   */
+       4, 3, 0, 
+       4, 37, 
+       39, 
+/* LOOK  PHON  */
+       8, 7, 8, 
+       4, 1, 13, 1, 
+       123, 
+/* INSE  COIN  */
+       22, 28, 12, 
+       4, 1, 1, 30, 13, 37, 0, 30, 0, 19, 
+       62, 17, 6, 
+/* INSE  COIN  */
+       22, 28, 12, 
+       4, 1, 1, 1, 13, 37, 0, 1, 0, 19, 
+       17, 6, 62, 
+/* INSE  COIN  */
+       22, 28, 12, 
+       4, 1, 1, 30, 14, 37, 0, 37, 0, 30, 
+       18, 4, 72, 
+/* LOOK  PHON  */
+       13, 7, 8, 
+       4, 1, 14, 1, 0, 1, 
+       53, 2, 
+/* INSE  COIN  */
+       13, 28, 12, 
+       4, 1, 6, 30, 6, 1, 
+       22, 85, 
+/* LOOK  SLOT  */
+       4, 7, 67, 
+       4, 1, 
+       3, 
+/* SWIM  ANY   */
+       22, 53, 0, 
+       4, 12, 1, 42, 8, 13, 0, 11, 0, 13, 
+       54, 64, 60, 
+/* WASH  ANY   */
+       5, 31, 0, 
+       4, 2, 
+       8, 33, 
+/* INVE  ANY   */
+       0, 2, 0, 
+       66, 
+/* DROP  TORC  */
+       14, 18, 13, 
+       1, 9, 0, 9, 0, 37, 
+       59, 53, 64, 
+/* DROP  TANN  */
+       15, 18, 33, 
+       2, 28, 1, 13, 6, 22, 
+       8, 125, 126, 73, 
+/* AUTO  0     */
+       194, 
+       88, 61, 63, 
+/* OPEN  GRID  */
+       8, 23, 81, 
+       1, 2, 4, 2, 
+       12, 
+/* GO    GRID  */
+       13, 1, 81, 
+       4, 2, 1, 2, 0, 25, 
+       54, 8, 
+/* GO    GRID  */
+       8, 1, 81, 
+       4, 2, 6, 2, 
+       13, 
+/* LOOK  SEAT  */
+       13, 7, 7, 
+       4, 1, 14, 2, 0, 2, 
+       53, 11, 
+/* GET   KEY   */
+       11, 10, 83, 
+       2, 2, 0, 2, 
+       52, 0, 0, 8, 
+/* LOOK  GRID  */
+       8, 7, 81, 
+       4, 2, 1, 2, 
+       12, 
+/* LOOK  GRID  */
+       9, 7, 81, 
+       4, 2, 6, 2, 
+       0, 13, 
+/* PLAY  FLUT  */
+       14, 76, 82, 
+       1, 7, 2, 11, 0, 4, 
+       58, 8, 30, 
+/* GO    CRAC  */
+       8, 1, 63, 
+       4, 4, 10, 50, 
+       23, 
+/* GO    CRAC  */
+       13, 1, 63, 
+       4, 4, 11, 50, 0, 21, 
+       54, 64, 
+/* FEED  RAT   */
+       19, 37, 25, 
+       2, 11, 9, 5, 1, 5, 7, 37, 
+       0, 8, 24, 73, 
+/* AUTO  0     */
+       205, 
+       0, 5, 0, 19, 0, 5, 
+       62, 58, 
+/* LOOK  RAT   */
+       8, 7, 25, 
+       2, 11, 9, 5, 
+       26, 
+/* LOOK  RAT   */
+       8, 7, 25, 
+       2, 11, 8, 5, 
+       27, 
+/* LOOK  PIPE  */
+       13, 7, 85, 
+       4, 21, 14, 7, 0, 7, 
+       53, 11, 
+/* LIGH  TORC  */
+       19, 25, 13, 
+       1, 37, 0, 9, 0, 37, 0, 9, 
+       72, 74, 8, 64, 
+/* UNLI  TORC  */
+       19, 66, 13, 
+       1, 9, 0, 9, 0, 37, 0, 37, 
+       72, 74, 64, 8, 
+/* PLAY  FLUT  */
+       9, 76, 82, 
+       1, 7, 7, 36, 
+       8, 30, 
+/* SAY   1953  */
+       23, 57, 39, 
+       4, 34, 14, 3, 0, 3, 0, 31, 0, 6, 
+       62, 84, 32, 58, 
+/* SAY   46    */
+       23, 57, 24, 
+       4, 35, 14, 8, 14, 42, 0, 8, 0, 10, 
+       62, 84, 32, 73, 
+/* AUTO  0     */
+       196, 
+       0, 7, 
+       58, 
+/* WAIT  ANY   */
+       11, 77, 0, 
+       4, 21, 0, 31, 
+       47, 88, 88, 54, 
+/* SIT   ANY   */
+       0, 78, 0, 
+       8, 
+/* STAN  ANY   */
+       0, 79, 0, 
+       8, 
+/* GO    TOIL  */
+       6, 1, 65, 
+       4, 2, 
+       8, 88, 33, 
+/* WEAR  AQUA  */
+       18, 13, 17, 
+       1, 8, 0, 8, 0, 42, 0, 42, 
+       72, 74, 8, 
+/* GO    AIRL  */
+       4, 1, 69, 
+       1, 15, 
+       139, 
+/* GO    AIRL  */
+       14, 1, 69, 
+       4, 13, 0, 12, 0, 13, 
+       54, 64, 58, 
+/* GO    AIRL  */
+       14, 1, 69, 
+       4, 11, 0, 12, 0, 11, 
+       54, 64, 58, 
+/* SWIM  ANY   */
+       22, 53, 0, 
+       4, 12, 1, 42, 8, 11, 0, 13, 0, 11, 
+       54, 64, 60, 
+/* OPEN  GRID  */
+       8, 23, 81, 
+       4, 2, 6, 2, 
+       13, 
+/* TIE   ROPE  */
+       22, 68, 19, 
+       4, 31, 1, 3, 0, 3, 0, 43, 0, 43, 
+       8, 72, 53, 
+/* REMO  AQUA  */
+       22, 15, 17, 
+       1, 42, 7, 12, 0, 8, 0, 42, 0, 8, 
+       72, 53, 8, 
+/* REMO  AQUA  */
+       11, 15, 17, 
+       1, 42, 4, 12, 
+       36, 88, 61, 63, 
+/* GO    WELL  */
+       8, 1, 70, 
+       4, 31, 12, 43, 
+       34, 
+/* GO    WELL  */
+       13, 1, 70, 
+       4, 31, 2, 43, 0, 36, 
+       54, 64, 
+/* GET   ROPE  */
+       18, 10, 19, 
+       2, 43, 0, 43, 0, 3, 0, 3, 
+       72, 0, 52, 
+/* GET   ROPE  */
+       8, 10, 19, 
+       2, 3, 0, 3, 
+       52, 
+/* LOOK  WELL  */
+       8, 7, 70, 
+       4, 36, 17, 11, 
+       40, 
+/* PLAY  FLUT  */
+       14, 76, 82, 
+       17, 11, 1, 7, 0, 4, 
+       8, 30, 58, 
+/* PLAY  FLUT  */
+       5, 76, 82, 
+       1, 7, 
+       8, 30, 
+/* FEED  RAT   */
+       22, 37, 25, 
+       4, 37, 9, 5, 1, 5, 0, 5, 0, 19, 
+       62, 28, 73, 
+/* AUTO  0     */
+       207, 
+       0, 38, 0, 11, 0, 19, 
+       38, 88, 54, 62, 
+/* LOOK  ALTA  */
+       13, 7, 73, 
+       4, 38, 14, 19, 0, 19, 
+       11, 53, 
+/* LOOK  TRAP  */
+       15, 7, 27, 
+       3, 44, 14, 5, 0, 5, 
+       8, 88, 11, 53, 
+/* PRAY  ANY   */
+       0, 43, 0, 
+       128, 
+/* GO    TUNN  */
+       13, 1, 48, 
+       4, 36, 9, 9, 0, 20, 
+       54, 137, 
+/* GO    TUNN  */
+       12, 1, 48, 
+       4, 36, 8, 9, 0, 39, 
+       54, 
+/* WEAR  TALI  */
+       18, 13, 66, 
+       1, 19, 0, 19, 0, 22, 0, 22, 
+       72, 74, 8, 
+/* REMO  TALI  */
+       18, 15, 66, 
+       1, 22, 0, 22, 0, 19, 0, 19, 
+       72, 53, 8, 
+/* GO    ROPE  */
+       13, 1, 19, 
+       4, 31, 2, 43, 0, 36, 
+       54, 64, 
+/* LOOK  GUY   */
+       12, 7, 37, 
+       4, 21, 14, 24, 14, 49, 
+       44, 
+/* MOVE  GUY   */
+       18, 33, 37, 
+       4, 21, 14, 24, 14, 49, 0, 24, 
+       8, 11, 53, 
+/* LOOK  BARR  */
+       4, 7, 74, 
+       1, 24, 
+       45, 
+/* LIGH  FUSE  */
+       23, 25, 23, 
+       1, 24, 8, 14, 0, 2, 0, 3, 0, 2, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       198, 
+       0, 8, 
+       46, 108, 58, 
+/* PLAY  FLUT  */
+       5, 76, 82, 
+       6, 7, 
+       22, 85, 
+/* SAY   ANY   */
+       9, 57, 0, 
+       4, 34, 9, 6, 
+       84, 48, 
+/* SAY   ANY   */
+       9, 57, 0, 
+       4, 35, 9, 7, 
+       84, 48, 
+/* SAY   1953  */
+       4, 57, 39, 
+       8, 6, 
+       85, 
+/* SAY   46    */
+       4, 57, 24, 
+       8, 7, 
+       85, 
+/* LOOK  TOIL  */
+       14, 7, 65, 
+       4, 2, 14, 45, 0, 45, 
+       11, 50, 53, 
+/* LOOK  JACK  */
+       14, 7, 21, 
+       1, 45, 14, 17, 0, 17, 
+       8, 11, 53, 
+/* LOOK  JACK  */
+       17, 7, 21, 
+       1, 45, 13, 17, 14, 18, 0, 18, 
+       11, 53, 
+/* LOOK  PIST  */
+       8, 7, 51, 
+       1, 17, 9, 10, 
+       9, 
+/* LOAD  PIST  */
+       23, 82, 51, 
+       1, 17, 1, 18, 9, 10, 0, 18, 0, 19, 
+       62, 8, 51, 73, 
+/* AUTO  0     */
+       211, 
+       0, 3, 0, 4, 0, 3, 0, 10, 
+       81, 79, 81, 58, 
+/* LOOK  PIST  */
+       8, 7, 51, 
+       1, 17, 8, 10, 
+       51, 
+/* FIRE  ANY   */
+       14, 80, 0, 
+       1, 17, 8, 10, 0, 3, 
+       81, 77, 73, 
+/* AUTO  0     */
+       201, 
+       19, 1, 0, 10, 
+       60, 73, 
+/* AUTO  0     */
+       201, 
+       19, 0, 0, 3, 
+       81, 9, 
+/* AUTO  0     */
+       200, 
+       2, 46, 0, 12, 
+       58, 
+/* AUTO  0     */
+       197, 
+       0, 3, 
+       81, 103, 
+/* RUB   LAMP  */
+       15, 64, 35, 
+       4, 40, 1, 14, 0, 1, 
+       87, 18, 88, 64, 
+/* RUB   LAMP  */
+       18, 64, 35, 
+       7, 40, 1, 14, 0, 1, 0, 40, 
+       87, 18, 54, 
+/* WEAR  JACK  */
+       4, 13, 21, 
+       1, 45, 
+       37, 
+/* LOOK  PAPE  */
+       6, 7, 76, 
+       1, 23, 
+       107, 102, 136, 
+/* READ  PAPE  */
+       6, 56, 76, 
+       1, 23, 
+       107, 102, 136, 
+/* LIGH  MATC  */
+       23, 25, 84, 
+       1, 21, 9, 14, 0, 5, 0, 2, 0, 5, 
+       81, 79, 81, 73, 
+/* AUTO  0     */
+       197, 
+       0, 14, 
+       58, 46, 
+/* EAT   CHEE  */
+       13, 34, 29, 
+       1, 5, 0, 5, 0, 19, 
+       111, 62, 
+/* EAT   APPL  */
+       6, 34, 57, 
+       1, 4, 
+       8, 88, 124, 
+/* EAT   APPL  */
+       5, 34, 57, 
+       6, 4, 
+       22, 85, 
+/* EAT   CHEE  */
+       5, 34, 29, 
+       6, 5, 
+       22, 85, 
+/* EAT   ANY   */
+       0, 34, 0, 
+       112, 
+/* GO    DOOR  */
+       4, 1, 60, 
+       2, 46, 
+       122, 
+/* GO    DOOR  */
+       9, 1, 60, 
+       2, 47, 0, 17, 
+       54, 64, 
+/* LOOK  JUNK  */
+       13, 7, 11, 
+       3, 52, 14, 20, 0, 20, 
+       53, 11, 
+/* LOOK  JUNK  */
+       14, 7, 11, 
+       3, 52, 14, 14, 0, 14, 
+       0, 53, 11, 
+/* GO    PASS  */
+       13, 1, 28, 
+       4, 17, 2, 50, 0, 18, 
+       54, 64, 
+/* OPEN  CASK  */
+       17, 23, 41, 
+       1, 12, 1, 26, 14, 13, 0, 13, 
+       53, 11, 
+/* OPEN  SARC  */
+       19, 23, 43, 
+       4, 18, 14, 28, 1, 20, 0, 28, 
+       12, 11, 53, 20, 
+/* OPEN  SARC  */
+       13, 23, 43, 
+       4, 18, 6, 20, 14, 28, 
+       13, 113, 
+/* TIE   BEAM  */
+       23, 68, 45, 
+       4, 24, 1, 15, 0, 15, 0, 56, 0, 57, 
+       8, 55, 72, 114, 
+/* TIE   TRAP  */
+       23, 68, 27, 
+       4, 24, 1, 15, 0, 15, 0, 56, 0, 57, 
+       8, 55, 72, 114, 
+/* GO    DOOR  */
+       13, 1, 60, 
+       4, 16, 13, 57, 0, 14, 
+       54, 64, 
+/* GO    DOOR  */
+       11, 1, 60, 
+       4, 16, 14, 57, 
+       43, 117, 61, 63, 
+/* DROP  TANN  */
+       23, 18, 33, 
+       2, 28, 1, 22, 1, 13, 0, 53, 0, 13, 
+       118, 119, 74, 55, 
+/* DROP  TANN  */
+       9, 18, 33, 
+       2, 28, 13, 53, 
+       8, 17, 
+/* WEAR  MASK  */
+       11, 13, 46, 
+       1, 53, 0, 33, 
+       54, 64, 86, 73, 
+/* AUTO  0     */
+       195, 
+       120, 138, 121, 63, 
+/* DROP  CHEE  */
+       22, 18, 29, 
+       4, 37, 9, 5, 1, 5, 0, 5, 0, 19, 
+       62, 18, 73, 
+/* AUTO  0     */
+       207, 
+       0, 38, 0, 11, 0, 19, 
+       38, 88, 54, 62, 
+/* DROP  CHEE  */
+       12, 18, 29, 
+       1, 5, 7, 37, 0, 5, 
+       53, 
+/* OPEN  CUPB  */
+       18, 23, 88, 
+       4, 22, 14, 4, 1, 26, 0, 4, 
+       8, 53, 11, 
+/* OPEN  CUPB  */
+       18, 23, 88, 
+       4, 22, 14, 4, 14, 26, 0, 4, 
+       8, 53, 11, 
+/* GET   KEY   */
+       22, 10, 83, 
+       4, 22, 14, 26, 0, 26, 0, 54, 0, 16, 
+       74, 72, 8, 
+/* GET   KEY   */
+       10, 10, 83, 
+       2, 26, 0, 26, 
+       52, 0, 8, 
+/* LOOK  JEWE  */
+       13, 7, 56, 
+       4, 14, 14, 12, 0, 12, 
+       11, 53, 
+/* OPEN  CASK  */
+       8, 23, 41, 
+       1, 12, 6, 26, 
+       13, 
+/* OPEN  CASK  */
+       12, 23, 41, 
+       1, 12, 1, 26, 13, 13, 
+       12, 
+/* OPEN  CUPB  */
+       8, 23, 88, 
+       4, 22, 13, 4, 
+       12, 
+/* DROP  AQUA  */
+       14, 18, 17, 
+       1, 42, 0, 42, 0, 8, 
+       8, 55, 53, 
+/* GO    HOLE  */
+       8, 1, 62, 
+       4, 22, 0, 3, 
+       54, 
+/* DROP  TORC  */
+       8, 18, 13, 
+       1, 37, 0, 37, 
+       53, 
+/* LOOK  TORC  */
+       4, 7, 13, 
+       1, 9, 
+       129, 
+/* LOOK  TORC  */
+       4, 7, 13, 
+       1, 37, 
+       130, 
+/* LOOK  MUMM  */
+       4, 7, 32, 
+       2, 28, 
+       20, 
+/* DROP  TANN  */
+       9, 18, 33, 
+       1, 13, 0, 13, 
+       53, 8, 
+/* SAY   ANY   */
+       4, 57, 0, 
+       4, 34, 
+       85, 
+/* SAY   ANY   */
+       4, 57, 0, 
+       4, 35, 
+       85, 
+/* SAY   ANY   */
+       0, 57, 0, 
+       85, 
+/* WAIT  ANY   */
+       3, 77, 0, 
+       47, 88, 88, 88, 
+/* SAVE  ANY   */
+       0, 4, 0, 
+       71, 
+/* HELP  ANY   */
+       1, 3, 0, 
+       0, 16, 
+/* QUIT  ANY   */
+       0, 5, 0, 
+       63, 
+/* LOOK  ANY   */
+       0, 7, 0, 
+       10, 
+/* USE   PHON  */
+       0, 30, 8, 
+       123, 
+/* BUGG  ANY   */
+       1, 83, 0, 
+       0, 131, 
+/* KILL  ANY   */
+       4, 46, 0, 
+       2, 46, 
+       140, 
+/* KILL  ANY   */
+       0, 46, 0, 
+       141, 
+       255,
+};
+
+
+const uint8_t verbs[] = {
+       /* AUTO */
+       65, 85, 84, 79,
+       /* GO */
+       71, 79, 32, 32,
+       /* INVE */
+       73, 78, 86, 69,
+       /* HELP */
+       72, 69, 76, 80,
+       /* SAVE */
+       83, 65, 86, 69,
+       /* QUIT */
+       81, 85, 73, 84,
+       /* SCOR */
+       83, 67, 79, 82,
+       /* LOOK */
+       76, 79, 79, 75,
+       /* *EXAM */
+       197, 88, 65, 77,
+       /* *SEAR */
+       211, 69, 65, 82,
+       /* GET */
+       71, 69, 84, 32,
+       /* *TAKE */
+       212, 65, 75, 69,
+       /* *GRAB */
+       199, 82, 65, 66,
+       /* WEAR */
+       87, 69, 65, 82,
+       /* *DON */
+       196, 79, 78, 32,
+       /* REMO */
+       82, 69, 77, 79,
+       /* *DOFF */
+       196, 79, 70, 70,
+       /*      */
+       32, 32, 32, 32,
+       /* DROP */
+       68, 82, 79, 80,
+       /* *PUT */
+       208, 85, 84, 32,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* *GIVE */
+       199, 73, 86, 69,
+       /* LOCK */
+       76, 79, 67, 75,
+       /* OPEN */
+       79, 80, 69, 78,
+       /* *UNLO */
+       213, 78, 76, 79,
+       /* LIGH */
+       76, 73, 71, 72,
+       /* *STRI */
+       211, 84, 82, 73,
+       /* *IGNI */
+       201, 71, 78, 73,
+       /* INSE */
+       73, 78, 83, 69,
+       /* MOUL */
+       77, 79, 85, 76,
+       /* USE */
+       85, 83, 69, 32,
+       /* WASH */
+       87, 65, 83, 72,
+       /* *RINS */
+       210, 73, 78, 83,
+       /* MOVE */
+       77, 79, 86, 69,
+       /* EAT */
+       69, 65, 84, 32,
+       /* *TAST */
+       212, 65, 83, 84,
+       /* *DRIN */
+       196, 82, 73, 78,
+       /* FEED */
+       70, 69, 69, 68,
+       /*      */
+       32, 32, 32, 32,
+       /*      */
+       32, 32, 32, 32,
+       /* SMAS */
+       83, 77, 65, 83,
+       /* *BREA */
+       194, 82, 69, 65,
+       /* *SHAT */
+       211, 72, 65, 84,
+       /* PRAY */
+       80, 82, 65, 89,
+       /* CLIM */
+       67, 76, 73, 77,
+       /*      */
+       32, 32, 32, 32,
+       /* KILL */
+       75, 73, 76, 76,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /*      */
+       32, 32, 32, 32,
+       /* CUT */
+       67, 85, 84, 32,
+       /* *CHOP */
+       195, 72, 79, 80,
+       /* *SLAS */
+       211, 76, 65, 83,
+       /* *HACK */
+       200, 65, 67, 75,
+       /* SWIM */
+       83, 87, 73, 77,
+       /* TURN */
+       84, 85, 82, 78,
+       /*      */
+       32, 32, 32, 32,
+       /* READ */
+       82, 69, 65, 68,
+       /* SAY */
+       83, 65, 89, 32,
+       /* LEVE */
+       76, 69, 86, 69,
+       /* *PRIS */
+       208, 82, 73, 83,
+       /*      */
+       32, 32, 32, 32,
+       /* BREA */
+       66, 82, 69, 65,
+       /*      */
+       32, 32, 32, 32,
+       /*      */
+       32, 32, 32, 32,
+       /* RUB */
+       82, 85, 66, 32,
+       /* *POLI */
+       208, 79, 76, 73,
+       /* UNLI */
+       85, 78, 76, 73,
+       /* *DOUS */
+       196, 79, 85, 83,
+       /* TIE */
+       84, 73, 69, 32,
+       /* *FIX */
+       198, 73, 88, 32,
+       /* *ATTA */
+       193, 84, 84, 65,
+       /* *FAST */
+       198, 65, 83, 84,
+       /* TO */
+       84, 79, 32, 32,
+       /* HOT */
+       72, 79, 84, 32,
+       /* COLD */
+       67, 79, 76, 68,
+       /* FILL */
+       70, 73, 76, 76,
+       /* PLAY */
+       80, 76, 65, 89,
+       /* WAIT */
+       87, 65, 73, 84,
+       /* SIT */
+       83, 73, 84, 32,
+       /* STAN */
+       83, 84, 65, 78,
+       /* FIRE */
+       70, 73, 82, 69,
+       /* *SHOO */
+       211, 72, 79, 79,
+       /* LOAD */
+       76, 79, 65, 68,
+       /* BUGG */
+       66, 85, 71, 71,
+       /* *BOG */
+       194, 79, 71, 32,
+       /* *BAST */
+       194, 65, 83, 84,
+       /* *SHIT */
+       211, 72, 73, 84,
+       /* *PISS */
+       208, 73, 83, 83,
+       /* *BALL */
+       194, 65, 76, 76,
+       /* *FUCK */
+       198, 85, 67, 75,
+       /* *CUNT */
+       195, 85, 78, 84,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       /*  */
+       32, 32, 32, 32,
+       0,
+};
+const uint8_t nouns[] = {
+       /* ANY */
+       65, 78, 89, 32,
+       /* NORT */
+       78, 79, 82, 84,
+       /* SOUT */
+       83, 79, 85, 84,
+       /* EAST */
+       69, 65, 83, 84,
+       /* WEST */
+       87, 69, 83, 84,
+       /* UP */
+       85, 80, 32, 32,
+       /* DOWN */
+       68, 79, 87, 78,
+       /* SEAT */
+       83, 69, 65, 84,
+       /* PHON */
+       80, 72, 79, 78,
+       /* *TELE */
+       212, 69, 76, 69,
+       /* ZOMB */
+       90, 79, 77, 66,
+       /* JUNK */
+       74, 85, 78, 75,
+       /* COIN */
+       67, 79, 73, 78,
+       /* TORC */
+       84, 79, 82, 67,
+       /* *FLAS */
+       198, 76, 65, 83,
+       /* 42 */
+       52, 50, 32, 32,
+       /* MIRR */
+       77, 73, 82, 82,
+       /* AQUA */
+       65, 81, 85, 65,
+       /* *SCUB */
+       211, 67, 85, 66,
+       /* ROPE */
+       82, 79, 80, 69,
+       /* DEBR */
+       68, 69, 66, 82,
+       /* JACK */
+       74, 65, 67, 75,
+       /* *COAT */
+       195, 79, 65, 84,
+       /* FUSE */
+       70, 85, 83, 69,
+       /* 46 */
+       52, 54, 32, 32,
+       /* RAT */
+       82, 65, 84, 32,
+       /* *RATS */
+       210, 65, 84, 83,
+       /* TRAP */
+       84, 82, 65, 80,
+       /* PASS */
+       80, 65, 83, 83,
+       /* CHEE */
+       67, 72, 69, 69,
+       /* CROW */
+       67, 82, 79, 87,
+       /* PEND */
+       80, 69, 78, 68,
+       /* MUMM */
+       77, 85, 77, 77,
+       /* TANN */
+       84, 65, 78, 78,
+       /* *LEAV */
+       204, 69, 65, 86,
+       /* LAMP */
+       76, 65, 77, 80,
+       /* WATE */
+       87, 65, 84, 69,
+       /* GUY */
+       71, 85, 89, 32,
+       /* *FAWK */
+       198, 65, 87, 75,
+       /* 1953 */
+       49, 57, 53, 51,
+       /* *53 */
+       181, 51, 32, 32,
+       /* CASK */
+       67, 65, 83, 75,
+       /* SIGN */
+       83, 73, 71, 78,
+       /* SARC */
+       83, 65, 82, 67,
+       /* LEVE */
+       76, 69, 86, 69,
+       /* BEAM */
+       66, 69, 65, 77,
+       /* MASK */
+       77, 65, 83, 75,
+       /* OFF */
+       79, 70, 70, 32,
+       /* TUNN */
+       84, 85, 78, 78,
+       /* DARK */
+       68, 65, 82, 75,
+       /* 52 */
+       53, 50, 32, 32,
+       /* PIST */
+       80, 73, 83, 84,
+       /* *GUN */
+       199, 85, 78, 32,
+       /* BULL */
+       66, 85, 76, 76,
+       /* *SHEL */
+       211, 72, 69, 76,
+       /* 51 */
+       53, 49, 32, 32,
+       /* JEWE */
+       74, 69, 87, 69,
+       /* APPL */
+       65, 80, 80, 76,
+       /* MODE */
+       77, 79, 68, 69,
+       /* 54 */
+       53, 52, 32, 32,
+       /* DOOR */
+       68, 79, 79, 82,
+       /* 48 */
+       52, 56, 32, 32,
+       /* HOLE */
+       72, 79, 76, 69,
+       /* CRAC */
+       67, 82, 65, 67,
+       /* CAVE */
+       67, 65, 86, 69,
+       /* TOIL */
+       84, 79, 73, 76,
+       /* TALI */
+       84, 65, 76, 73,
+       /* SLOT */
+       83, 76, 79, 84,
+       /* *MACH */
+       205, 65, 67, 72,
+       /* AIRL */
+       65, 73, 82, 76,
+       /* WELL */
+       87, 69, 76, 76,
+       /* *SHAF */
+       211, 72, 65, 70,
+       /* DUNG */
+       68, 85, 78, 71,
+       /* ALTA */
+       65, 76, 84, 65,
+       /* BARR */
+       66, 65, 82, 82,
+       /* GUNP */
+       71, 85, 78, 80,
+       /* PAPE */
+       80, 65, 80, 69,
+       /* 44 */
+       52, 52, 32, 32,
+       /* SHAR */
+       83, 72, 65, 82,
+       /* *JAWS */
+       202, 65, 87, 83,
+       /* SEWE */
+       83, 69, 87, 69,
+       /* GRID */
+       71, 82, 73, 68,
+       /* FLUT */
+       70, 76, 85, 84,
+       /* KEY */
+       75, 69, 89, 32,
+       /* MATC */
+       77, 65, 84, 67,
+       /* PIPE */
+       80, 73, 80, 69,
+       /* *PIED */
+       208, 73, 69, 68,
+       /* WORK */
+       87, 79, 82, 75,
+       /* CUPB */
+       67, 85, 80, 66,
+       /* GOLD */
+       71, 79, 76, 68,
+       /* WASH */
+       87, 65, 83, 72,
+       /* HAND */
+       72, 65, 78, 68,
+       /* FACE */
+       70, 65, 67, 69,
+       /* DISP */
+       68, 73, 83, 80,
+       /* LEIS */
+       76, 69, 73, 83,
+       /* *LOUN */
+       204, 79, 85, 78,
+       /* MORG */
+       77, 79, 82, 71,
+       /* WOOD */
+       87, 79, 79, 68,
+       /* TREE */
+       84, 82, 69, 69,
+       /* HALL */
+       72, 65, 76, 76,
+       /* FLES */
+       70, 76, 69, 83,
+       /* *ROTT */
+       210, 79, 84, 84,
+       /* HILA */
+       72, 73, 76, 65,
+       /* *TENS */
+       212, 69, 78, 83,
+       /* JACQ */
+       74, 65, 67, 81,
+       /* *COUS */
+       195, 79, 85, 83,
+       0,
+};
+const uint8_t automap[] = {
+       /* COIN */
+       67, 79, 73, 78,
+       1,
+       /* KEY */
+       75, 69, 89, 32,
+       2,
+       /* ROPE */
+       82, 79, 80, 69,
+       3,
+       /* APPL */
+       65, 80, 80, 76,
+       4,
+       /* CHEE */
+       67, 72, 69, 69,
+       5,
+       /* FLUT */
+       70, 76, 85, 84,
+       7,
+       /* AQUA */
+       65, 81, 85, 65,
+       8,
+       /* CASK */
+       67, 65, 83, 75,
+       12,
+       /* TANN */
+       84, 65, 78, 78,
+       13,
+       /* LAMP */
+       76, 65, 77, 80,
+       14,
+       /* BEAM */
+       66, 69, 65, 77,
+       15,
+       /* PIST */
+       80, 73, 83, 84,
+       17,
+       /* BULL */
+       66, 85, 76, 76,
+       18,
+       /* TALI */
+       84, 65, 76, 73,
+       19,
+       /* CROW */
+       67, 82, 79, 87,
+       20,
+       /* MATC */
+       77, 65, 84, 67,
+       21,
+       /* PAPE */
+       80, 65, 80, 69,
+       23,
+       /* BARR */
+       66, 65, 82, 82,
+       24,
+       /* KEY */
+       75, 69, 89, 32,
+       26,
+       /* COIN */
+       67, 79, 73, 78,
+       30,
+       /* TORC */
+       84, 79, 82, 67,
+       37,
+       /* TRAP */
+       84, 82, 65, 80,
+       44,
+       /* JACK */
+       74, 65, 67, 75,
+       45,
+       /* JUNK */
+       74, 85, 78, 75,
+       52,
+       /* MASK */
+       77, 65, 83, 75,
+       53,
+       0,
+};
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+
+#ifdef __linux__
+#include <stdio.h>
+#endif
+
+static jmp_buf restart;
+
+static char linebuf[81];
+static char *nounbuf;
+static char wordbuf[WORDSIZE + 1];
+
+static uint8_t verb;
+static uint8_t noun;
+static const uint8_t *linestart;
+static uint8_t linematch;
+static uint8_t actmatch;
+static uint8_t continuation;
+static uint16_t *param;
+static uint16_t param_buf[5];
+static uint8_t carried;
+static uint8_t lighttime;
+static uint8_t location;
+static uint8_t objloc[NUM_OBJ];
+static uint8_t roomsave[6];
+static uint8_t savedroom;
+static uint32_t bitflags;
+static int16_t counter;
+static int16_t counter_array[16];
+static uint8_t redraw;
+static uint8_t rows, cols;
+
+static void error(const char *p);
+
+#define VERB_GO                1
+#define VERB_GET       10
+#define VERB_DROP      18
+
+#define LIGHTOUT       16
+#define DARKFLAG       15
+#define LIGHT_SOURCE   9
+
+#define REDRAW         1
+#define REDRAW_MAYBE   2
+
+#ifdef CONFIG_IO_CURSES
+
+#include <curses.h>
+
+#define REDRAW_MASK    (REDRAW|REDRAW_MAYBE)
+
+static char wbuf[81];
+static int wbp = 0;
+static int xpos = 0, ypos = 0;
+static int bottom;
+WINDOW *topwin, *botwin, *curwin;
+
+static void flush_word(void)
+{
+  wbuf[wbp] = 0;
+  waddstr(curwin, wbuf);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void new_line(void)
+{
+  xpos = 0;
+  if (curwin == topwin)
+    ypos++;
+  else {
+    scroll(curwin);
+    ypos = bottom;
+  }
+  wmove(curwin, ypos, xpos);
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    new_line();
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols)
+    new_line();
+  flush_word();
+  waddch(curwin, ' ');
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  wrefresh(botwin);
+  return wgetch(botwin);
+}
+
+static void line_input(void)
+{
+  int c;
+  char *p = linebuf;
+
+  do {
+    wmove(botwin, ypos, xpos);
+    wrefresh(botwin);
+    c = wgetch(botwin);
+    if (c == 8 || c == 127) {
+      if (p > linebuf) {
+        xpos--;
+        mvwaddch(botwin, ypos, xpos, ' ');
+        p--;
+      }
+      continue;
+    }
+    if (c > 31 && c < 127) {
+      if (p < linebuf + 80 && xpos < cols - 1) {
+        *p++ = c;
+        mvwaddch(botwin, ypos, xpos, c);
+        xpos++;
+      }
+      continue;
+    }
+  }
+  while (c != 13 && c != 10);
+  *p = 0;
+  new_line();
+}
+
+static int saved_x;
+
+static void begin_upper(void)
+{
+  saved_x = xpos;
+  curwin = topwin;
+  werase(topwin);
+  ypos = 0;
+  xpos = 0;
+}
+
+static void end_upper(void)
+{
+  flush_word();
+  curwin = botwin;
+  xpos = saved_x;
+  ypos = bottom;
+  wrefresh(topwin);
+}
+
+static void display_init(void)
+{
+  int trow;
+
+  initscr();
+  noecho();
+  cbreak();
+  nonl();
+
+  getmaxyx(stdscr, rows, cols);
+
+  if (rows < 16)
+    error("display too small");
+
+  trow = 10;
+  if (rows / 2 < 10)
+    trow = rows / 2;
+  bottom = rows - trow;
+
+  topwin = newwin(trow, cols, 0, 0);
+  botwin = newwin(bottom--, cols, trow, 0);
+  if (!topwin || !botwin)
+    error("curses");
+  scrollok(botwin, TRUE);
+  curwin = botwin;
+  new_line();
+}
+
+static void display_exit(void)
+{
+  endwin();
+}
+
+#else
+
+#define REDRAW_MASK    REDRAW
+
+static char wbuf[80];
+static int wbp = 0;
+static int xpos = 0;
+
+static void display_init(void)
+{
+  char *c;
+#ifdef TIOCGWINSZ
+  struct winsize w;
+  if (ioctl(0, TIOCGWINSZ, &w) != -1) {
+    rows = w.ws_row;
+    cols = ws.ws_col;
+    return;
+  }
+#elif VTSIZE
+  int16_t v = ioctl(0, VTSIZE, 0);
+  if (v != -1) {
+    rows =  v >> 8;
+    cols = v;
+    return;
+  }
+#endif
+  c = getenv("COLS");
+  rows = 25;
+  cols = c ? atoi(c): 80;
+  if (cols == 0)
+    cols = 80;
+}
+
+static void display_exit(void)
+{
+}
+
+static void flush_word(void)
+{
+  write(1, wbuf, wbp);
+  xpos += wbp;
+  wbp = 0;
+}
+
+static void char_out(char c)
+{
+  if (c == '\n') {
+    flush_word();
+    write(1, "\n", 1);
+    xpos = 0;
+    return;
+  }
+  if (c != ' ') {
+    if (wbp < 80)
+      wbuf[wbp++] = c;
+    return;
+  }
+  if (xpos + wbp >= cols) {
+    xpos = 0;
+    write(1,"\n", 1);
+  }
+  flush_word();
+  write(1," ", 1);
+  xpos++;
+}
+
+static void strout_lower(const uint8_t *p)
+{
+  while(*p)
+    char_out(*p++);
+}
+
+static void strout_lower_spc(const uint8_t *p)
+{
+  strout_lower(p);
+  char_out(' ');
+}
+
+static void decout_lower(uint16_t v)
+{
+#ifdef __linux__
+  char buf[9];
+  snprintf(buf, 8, "%d", v);   /* FIXME: avoid expensive snprintf */
+  strout_lower((uint8_t *)buf);
+#else
+  strout_lower((uint8_t *)_itoa(v));
+#endif
+}
+
+static void strout_upper(const uint8_t *p)
+{
+  strout_lower(p);
+}
+
+static char readchar(void)
+{
+  char c;
+  if (read(0, &c, 1) < 1)
+    return -1;
+  return c;
+}
+
+static void line_input(void)
+{
+  int l = read(0, linebuf, sizeof(linebuf));
+  if (l < 0)
+    error("read");
+  linebuf[l] = 0;
+  if (l && linebuf[l-1] == '\n')
+    linebuf[l-1] = 0;
+}
+
+static void begin_upper(void)
+{
+  strout_upper("\n\n\n\n");
+}
+
+static void end_upper(void)
+{
+  uint8_t l = cols;
+  char_out('\n');
+  while(l--)
+    char_out('-');
+  char_out('\n');
+}
+
+
+
+#endif
+
+/******************** Common code ******************/
+
+static uint8_t yes_or_no(void)
+{
+  char c;
+  do {
+    c = readchar();
+    if (c == 'Y'  || c == 'y' || c == 'J' || c == 'j')
+      return 1;
+  } while(c != -1 && c != 'N' && c != 'n');
+  return 0;
+}
+
+static void exit_game(uint8_t code)
+{
+  display_exit();
+  exit(code);
+}
+
+static void error(const char *p)
+{
+  display_exit();
+  write(2, p, strlen(p));
+  exit(1);
+}
+
+static uint8_t random_chance(uint8_t v)
+{
+  v = v + v + (v >> 1);        /* scale as 0-249 */
+  if (((rand() >> 3) & 0xFF) <= v)
+    return 1;
+  return 0;
+}
+
+static char *skip_spaces(char *p)
+{
+  while(*p && isspace(*p))
+    p++;
+  return p;
+}
+
+static char *copyword(char *p)
+{
+  char *t = wordbuf;
+  p = skip_spaces(p);
+  memset(wordbuf, ' ', WORDSIZE+1);
+  while (*p && !isspace(*p) && t < wordbuf + WORDSIZE)
+    *t++ = *p++;
+  while(*p && !isspace(*p))
+    p++;
+  return p;
+}
+
+static int wordeq(const uint8_t *a, const char *b, uint8_t l)
+{
+  while(l--)
+    if ((*a++ & 0x7F) != toupper(*b++))
+      return 0;
+  return 1;
+}
+
+static uint8_t whichword(const uint8_t *p)
+{
+  uint8_t code = 0;
+  uint8_t i = 0;
+
+  if (*wordbuf == 0 || *wordbuf == ' ')
+    return 0;          /* No word */
+  i--;
+  
+  do {
+    i++;
+    if (!(*p & 0x80))
+      code = i;
+    if (wordeq(p, wordbuf, WORDSIZE))
+      return code;
+    p += WORDSIZE;
+  } while(*p != 0);
+  return 255;
+}
+
+static void scan_noun(char *x)
+{
+  x = skip_spaces(x);
+  nounbuf = x;
+  copyword(x);
+  noun = whichword(nouns);
+}
+
+static void scan_input(void)
+{
+  char *x = copyword(linebuf);
+  verb = whichword(verbs);
+  scan_noun(x);
+}
+
+void abbrevs(void)
+{
+  char *x = skip_spaces(linebuf);
+  const char *p = NULL;
+  if (x[1] != 0 && x[1] != ' ')
+    return;
+  switch(toupper(*x)) {
+    case 'N': 
+      p = "NORTH";
+      break;
+    case 'E':
+      p = "EAST";
+      break;
+    case 'S':
+      p = "SOUTH";
+      break;
+    case 'W':
+      p = "WEST";
+      break;
+    case 'U':
+      p = "UP";
+      break;
+    case 'D':
+      p = "DOWN";
+      break;
+    case 'I':
+      p = "INVEN";
+      break;
+  }
+  if (p)
+    strcpy(linebuf, p);
+}
+  
+static const uint8_t *run_conditions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+  
+  for (i = 0; i < n; i++) {
+    uint8_t opc = *p++;
+    uint16_t par = *p++ | ((opc & 0xE0) >> 5);
+    uint8_t op = objloc[par];
+    opc &= 0x1F;
+
+    switch(opc) {
+      case 0:
+        *param++ = par;
+        break;
+      case 1:
+        if (op != 255)
+          return NULL;
+        break;
+      case 2:
+        if (op != location)
+          return NULL;
+        break;
+      case 3:
+        if (op != 255 && op != location)
+          return NULL;
+        break;
+      case 4:
+        if (location != par)
+          return NULL;
+        break;
+      case 5:
+        if (op == location)
+          return NULL;
+        break;
+      case 6:
+        if (op == 255)
+          return NULL;
+        break;
+      case 7:
+        if (location == par)
+          return NULL;
+        break;
+      case 8:
+        if (!(bitflags & (1 << par)))
+          return NULL;
+        break;
+      case 9:
+        if (bitflags & (1 << par))
+          return NULL;
+        break;
+      case 10:
+        if (!carried)
+          return NULL;
+        break;
+      case 11:
+        if (carried)
+          return NULL;
+        break;
+      case 12:
+        if (op == 255 || op == location)
+          return NULL;
+        break;
+      case 13:
+        if (op == 0)
+          return NULL;
+        break;
+      case 14:
+        if (op != 0)
+          return NULL;
+        break;
+      case 15:
+        if (counter > par)
+          return NULL;
+        break;
+      case 16:
+        if (counter < par)
+          return NULL;
+        break;
+      case 17:
+        if (op != objinit[par]) 
+          return NULL;
+        break;
+      case 18:
+        if (op == objinit[par])
+          return NULL;
+        break;
+      case 19:
+        if (counter != par)
+          return NULL;
+        break;
+      default:
+        error("BADCOND");
+    }
+  }
+  return p;
+}
+
+uint8_t islight(void)
+{
+  uint8_t l = objloc[LIGHT_SOURCE];
+  if (!(bitflags & (1 << DARKFLAG)))
+    return 1;
+  if (l == 255 || l == location)
+    return 1;
+  return 0;
+}
+
+static void action_look(void)
+{
+  const uint8_t *e;
+  const uint8_t *p;
+  uint8_t c;
+  uint8_t f = 1;
+  const uint8_t **op = objtext;
+
+  redraw = 0;
+
+  begin_upper();
+
+  if (!islight()) {
+    strout_upper(itsdark);
+    end_upper();
+    return;
+  }
+  p = locdata[location].text;
+  e = locdata[location].exit;
+  if (*p == '*')
+    p++;
+  else
+    strout_upper(youare);
+  strout_upper(p);
+  strout_upper(newline);
+  strout_upper(obexit);
+
+  for (c = 0; c < 6; c++) {
+    if (*e++) {
+      if (f)
+        f = 0;
+      else
+        strout_upper(dashstr);
+      strout_upper(exitmsgptr[c]);
+    }
+  }
+  if (f)
+    strout_upper(nonestr);
+  strout_upper(dotnewline);
+  f = 1;
+  e = objloc;
+  while(e < objloc + NUM_OBJ) {
+    if (*e++ == location) {
+      if (f) {
+        strout_upper(canalsosee);
+        f = 0;
+      } else
+        strout_upper(dashstr);
+      strout_upper(*op);
+    }
+    op++;
+  }
+  end_upper();
+}
+
+static void action_delay(void)
+{
+  sleep(2);
+}
+
+static void action_dead(void)
+{
+  strout_lower(dead);
+  bitflags &= ~(1 << DARKFLAG);
+  location = lastloc;
+  action_look();
+}
+
+static void action_quit(void)
+{
+  strout_lower(playagain);
+  if (yes_or_no())
+    longjmp(restart, 0);
+  exit_game(0);
+}
+
+static void action_score(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t t = 0, s = 0;
+
+  while(p < objloc + NUM_OBJ) {
+    if (*m[0] == '*') {
+      t++;
+      if (*p == treasure)
+        s++;
+    }
+    m++;
+    p++;
+  }
+
+  strout_lower(stored_msg);
+  decout_lower(s);
+  strout_lower(stored_msg2);
+  decout_lower((s * (uint16_t)100) / t);
+  strout_lower(dotnewline);
+  if (s == t)
+    action_quit();
+}
+
+static void action_inventory(void)
+{
+  uint8_t *p = objloc;
+  const uint8_t **m = objtext;
+  uint8_t f = 1;
+
+  strout_lower(carrying);
+  if (carried == 0)
+    strout_lower(nothing);
+  else {  
+    while(p < objloc + NUM_OBJ) {
+      if (*p == 255) {
+        if (!f)
+          strout_lower(dashstr);
+        else
+          f = 0;
+        strout_lower(*m);
+      }
+      m++;
+      p++;
+    }
+  }
+  strout_lower(dotnewline);
+}
+
+static void moveitem(uint8_t i, uint8_t l)
+{
+  uint8_t *p = objloc + i;
+  if (*p == location)
+    redraw |= REDRAW_MAYBE;
+  if (l == location)
+    redraw |= REDRAW;
+  *p = l;
+}
+
+static void run_actions(const uint8_t *p, uint8_t n)
+{
+  uint8_t i;
+
+  for (i = 0; i < n; i++) {
+    uint8_t a = *p++;
+    uint8_t tmp;
+    uint16_t tmp16;
+
+    if (a < 50) {
+      strout_lower_spc(msgptr[a]);
+      continue;
+    }
+    if (a > 102 ) {
+      strout_lower_spc(msgptr[a - 50]);
+      continue;
+    }
+    switch(a) {
+      case 51: /* nop - check */
+        break;
+      case 52: /* Get */
+        if (carried >= maxcar)
+          strout_lower(toomuch);
+        else
+          moveitem(*param++, 255);
+        break;
+      case 53: /* Drop */
+        moveitem(*param++, location);
+        break;
+      case 54: /* Go */
+        location = *param++;
+        redraw = REDRAW;
+        break;
+      case 55: /* Destroy */
+      case 59: /* ?? */
+        moveitem(*param++, 0);
+        break;
+      case 56: /* Set dark flag */
+        bitflags |= (1 << DARKFLAG);
+        break;
+      case 57: /* Clear dark flag */
+        bitflags &= ~(1 << DARKFLAG);
+        break;
+      case 58: /* Set bit */
+        bitflags |= (1 << *param++);
+        break;
+      /* 59 see 55 */
+      case 60: /* Clear bit */
+        bitflags &= ~(1 << *param++);
+        break;
+      case 61: /* Dead */
+        action_dead();
+        break;
+      case 64: /* Look */
+      case 76: /* Also Look ?? */
+        action_look();
+        break;
+      case 62: /* Place obj, loc */
+        tmp = *param++;
+        moveitem(tmp, *param++);
+        break;
+      case 63: /* Game over */
+        action_quit();
+      case 65: /* Score */
+        action_score();
+        break;
+      case 66: /* Inventory */
+        action_inventory();
+      case 67: /* Set bit 0 */
+        bitflags |= (1 << 0);
+        break;
+      case 68: /* Clear bit 0 */
+        bitflags &= ~(1 << 0);
+        break;
+      case 69: /* Refill lamp */
+        lighttime = lightfill;
+        bitflags &= ~(1 << LIGHTOUT);
+        moveitem(LIGHT_SOURCE, 255);
+        break;
+      case 70: /* Wipe lower */
+        /* TODO */
+        break;
+      case 71: /* Save */
+        /* TODO */
+      case 72: /* Swap two objects */
+        tmp = objloc[*param];
+        moveitem(*param, objloc[param[1]]);
+        moveitem(param[1], tmp);
+        param += 2;
+        break;
+      case 73:
+        continuation = 1;
+        break;
+      case 74: /* Get without weight rule */
+        moveitem(*param++, 255);
+        break;
+      case 75: /* Put one item by another */
+        moveitem(*param, objloc[param[1]]);
+        param += 2;
+        break;
+      case 77: /* Decrement counter */
+        if (counter >= 0)
+          counter--;
+        break;
+      case 78: /* Display counter */
+        decout_lower(counter);
+        break;
+      case 79: /* Set counter */
+        counter = *param++;
+        break;
+      case 80: /* Swap player and saved room */
+        tmp = savedroom;
+        savedroom = location;
+        location = tmp;
+        redraw = REDRAW;
+        break;
+      case 81: /* Swap counter and counter n */
+        tmp16 = counter;
+        counter = counter_array[*param];
+        counter_array[*param++] = tmp16;
+        break;
+      case 82: /* Add to counter */
+        counter += *param++;
+        break;
+      case 83: /* Subtract from counter */
+        counter -= *param++;
+        if (counter < 0)
+          counter = -1;
+        break;
+      case 84: /* Print noun, newline */
+        strout_lower((uint8_t *)nounbuf);
+        /* Fall through */
+      case 86: /* Print newline */
+        strout_lower(newline);
+        break;
+      case 85: /* Print noun */ 
+        strout_lower((uint8_t *)nounbuf);
+        break;
+      case 87: /* Swap player and saveroom array entry */
+        tmp16 = *param++;
+        tmp = roomsave[tmp16];
+        roomsave[tmp16] = location;
+        if (tmp != location) {
+          location = tmp;
+          redraw = REDRAW;
+        }
+        break;
+      case 88:
+        action_delay();
+        break;
+      case 89:
+        param++;               /* SAGA etc specials */
+        break;
+      default:
+        error("BADACT");
+    }
+  }
+}
+
+void next_line(void)
+{
+  uint8_t c = *linestart++;
+  if (!(c & 0x80))
+    linestart += 2;    /* Skip verb/noun */
+  else if (!(c & 0x60))
+    linestart++;       /* Skip random value */
+  linestart += (c & 3) + 1;    /* Actions 1 - 4 */
+  c >>= 1;
+  c &= 0x0E;           /* 2 x conditions */
+  linestart += c;
+}
+
+void run_line(const uint8_t *ptr, uint8_t c, uint8_t a)
+{
+  memset(param_buf, 0, sizeof(param_buf));
+  param = param_buf;
+  if (c)
+    ptr = run_conditions(ptr, c);
+  if (ptr) {
+    actmatch = 1;
+    param = param_buf;
+    run_actions(ptr, a);
+  }
+  next_line();
+}
+
+void run_table(const uint8_t *tp)
+{
+  continuation = 0;
+  linestart = tp;
+  while(1) {
+    uint8_t hdr;
+    uint8_t c, a;
+    tp = linestart;
+    hdr = *tp++;
+    c = (hdr >> 2) & 0x07;
+    a = (hdr & 3) + 1;
+    
+/*    printf("H%02X c = %d a = %d\n", hdr, c, a); */
+    if (hdr == 255)
+      return;          /* End of table */
+    if (hdr & 0x80) {
+      if (hdr & 0x40) {        /* Auto 0 */
+        if (continuation)
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      continuation = 0;
+      if (!(hdr & 0x20)) {     /* Auto number */
+        if (random_chance(*tp++))
+          run_line(tp, c, a);
+        else
+          next_line();
+        continue;
+      }
+      run_line(tp, c, a);
+    } else {
+      if (actmatch)
+        return;
+/*      printf("VN %d %d\n", *tp, tp[1]); */
+      linematch = 1;
+      continuation = 0;
+      if (*tp++ == verb && (*tp == noun || *tp == 0))
+        run_line(tp+1, c, a);
+      else
+        next_line();
+    }
+  }
+}
+
+uint8_t autonoun(uint8_t loc)
+{
+  const uint8_t *p = automap;
+  if (*wordbuf == ' ' || *wordbuf == 0)
+    return 255;
+  while(*p) {
+    if (strncasecmp((const char *)p, wordbuf, WORDSIZE) == 0 && objloc[p[WORDSIZE]] == loc)
+      return p[WORDSIZE];
+    p += WORDSIZE + 1;
+  }
+  return 255;
+}
+  
+void run_command(void)
+{
+  uint8_t tmp;
+  run_table(actions);
+  if (actmatch)
+    return;
+  if (verb == VERB_GET) {              /* Get */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else if (carried >= maxcar)
+      strout_lower(toomuch);
+    else {
+      tmp = autonoun(location);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, 255);
+    }
+    actmatch = 1;
+    return;
+  }
+  if (verb == VERB_DROP) {             /* Drop */
+    if (noun == 0)
+      strout_lower(whatstr);
+    else {
+      tmp = autonoun(255);
+      if (tmp == 255)
+        strout_lower(beyondpower);
+      else
+        moveitem(tmp, location);
+    }
+    actmatch = 1;
+    return;
+  }
+}
+
+void process_light(void)
+{
+  uint8_t l;
+  if ((l = objloc[LIGHT_SOURCE]) == 0)
+    return;
+  if (lighttime == 255)
+    return;
+  if (!--lighttime) {
+    bitflags &= ~(1 << LIGHTOUT);      /* Check clear ! */
+    if (l == 255 || l == location) {
+      strout_lower(lightout);
+      redraw = REDRAW_MAYBE;
+      return;
+    }
+  }
+  if (lighttime > 25)
+    return;
+  strout_lower(lightoutin);
+  decout_lower(lighttime);
+  strout_lower(lighttime == 1 ? turn : turns);
+}
+
+void main_loop(void)
+{
+  uint8_t first = 1;
+  char *p;
+
+  action_look();
+  
+  while (1) {
+    if (!first)
+      process_light();
+    else
+      first = 0;
+    verb = 0;
+    noun = 0;
+    run_table(status);
+
+    if (redraw & REDRAW_MASK)
+      action_look();
+
+    strout_lower(whattodo);
+    do {
+      do {
+        strout_lower(prompt);
+        line_input();
+        abbrevs();
+        p = skip_spaces(linebuf);
+      }
+      while(*p == 0);
+
+      scan_noun(p);
+      if (noun && noun <= 6) {
+        verb = VERB_GO;
+        break;
+      }
+      scan_input();
+      if (verb == 255)
+        strout_lower(dontknow);
+    } while (verb == 255);
+    
+    if (verb == VERB_GO) {
+      if (!noun) {
+        strout_lower(givedirn);
+        continue;
+      }
+      if (noun <= 6) {
+        uint8_t light = islight();
+        uint8_t dir;
+
+        if (!light)
+          strout_lower(darkdanger);
+        dir = locdata[location].exit[noun - 1];
+        if (!dir) {
+          if (!light) {
+            strout_lower(brokeneck);
+            action_delay();
+            action_dead();
+            continue;
+          }
+          strout_lower(cantgo);
+          continue;
+        }
+        location = dir;
+        redraw = REDRAW;
+        continue;
+      }
+    }
+    linematch = 0;
+    actmatch = 0;
+    run_command();
+    if (actmatch)
+      continue;
+    if (linematch) {
+      strout_lower(notyet);
+      continue;
+    }
+    strout_lower(dontunderstand);
+  }
+}
+
+void start_game(void)
+{
+  memcpy(objloc, objinit, sizeof(objloc));
+  bitflags = 0;
+  counter = 0;
+  memset(counter_array, 0, sizeof(counter_array));
+  savedroom = 0;
+  memset(roomsave, 0, sizeof(roomsave));
+  location = startloc;
+  lighttime = startlamp;
+  carried = startcarried;
+}
+
+int main(int argc, char *argv[])
+{
+  display_init();
+  setjmp(restart);
+  start_game();
+  main_loop();
+}