/* Manx users compile with "+l" just in case */

#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <stdio.h>

struct IntuitionBase *IntuitionBase=NULL;
struct GfxBase *GfxBase=NULL;
struct LayersBase *LayersBase=NULL;

extern struct MsgPort *ioPort;
extern struct IOStdReq *ioReq;

typedef union bits32
{
    UBYTE bytes[8];
    ULONG longword[2];
}       long_byte;

/*
 *  Ideally I would find the "Wheel of Fortune" hint book and arrange the
 *  array so that the most common letters were closest to the front.
 *
 *  I did make sure that "space" was first, since most blocks of text will
 *  contain large numbers of spaces.
 *
 */

long_byte char_bitmap [ (2*26) + 10 + 1 + 32 ] =
{

/* space */
        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

/* a */
        0x0, 0x0, 0x3c, 0x6, 0x1e, 0x66, 0x3b, 0x0,

/* b */
        0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x3c, 0x0,

/* c */
        0x0, 0x0, 0x3c, 0x66, 0x60, 0x66, 0x3c, 0x0,

/* d */
        0xe, 0x6, 0x36, 0x6e, 0x66, 0x66, 0x3b, 0x0,

/* e */
        0x0, 0x0, 0x3c, 0x66, 0x7e, 0x60, 0x3c, 0x0,

/* f */
        0x1c, 0x36, 0x30, 0x78, 0x30, 0x30, 0x78, 0x0,

/* g */
        0x0, 0x0, 0x3b, 0x66, 0x66, 0x3c, 0xc6, 0x7c,

/* h */
        0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0xe6, 0x0,

/* i */
        0x18, 0x0, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x0,

/* j */
        0x6, 0x0, 0x6, 0x6, 0x6, 0x6, 0x66, 0x3c,

/* k */
        0xe0, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0xe6, 0x0,

/* l */
        0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x0,

/* m */
        0x0, 0x0, 0x66, 0x77, 0x6b, 0x63, 0x63, 0x0,

/* n */
        0x0, 0x0, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x0,

/* o */
        0x0, 0x0, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x0,

/* p */
        0x0, 0x0, 0xdc, 0x66, 0x66, 0x7c, 0x60, 0xf0,

/* q */
        0x0, 0x0, 0x3d, 0x66, 0x66, 0x3e, 0x6, 0x7,

/* r */
        0x0, 0x0, 0xec, 0x76, 0x66, 0x60, 0xf0, 0x0,

/* s */
        0x0, 0x0, 0x3e, 0x60, 0x3c, 0x6, 0x7c, 0x0,

/* t */
        0x8, 0x18, 0x3e, 0x18, 0x18, 0x1a, 0xc, 0x0,

/* u */
        0x0, 0x0, 0x66, 0x66, 0x66, 0x66, 0x3b, 0x0,

/* v */
        0x0, 0x0, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x0,

/* w */
        0x0, 0x0, 0x63, 0x6b, 0x6b, 0x36, 0x36, 0x0,

/* x */
        0x0, 0x0, 0x63, 0x36, 0x1c, 0x36, 0x63, 0x0,

/* y */
        0x0, 0x0, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x70,

/* z */
        0x0, 0x0, 0x7e, 0x4c, 0x18, 0x32, 0x7e, 0x0,

/* A */
        0x18, 0x3c, 0x3c, 0x66, 0x7e, 0xc3, 0xc3, 0x0,

/* B */
        0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x0,

/* C */
        0x3c, 0x66, 0xc0, 0xc0, 0xc0, 0x66, 0x3c, 0x0,

/* D */
        0xf8, 0x6c, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x0,

/* E */
        0xfe, 0x66, 0x60, 0x78, 0x60, 0x66, 0xfe, 0x0,

/* F */
        0xfe, 0x66, 0x60, 0x78, 0x60, 0x60, 0xf0, 0x0,

/* G */
        0x3c, 0x66, 0xc0, 0xce, 0xc6, 0x66, 0x3e, 0x0,

/* H */
        0x66, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x0,

/* I */
        0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x0,

/* J */
        0xe, 0x6, 0x6, 0x6, 0x66, 0x66, 0x3c, 0x0,

/* K */
        0xe6, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x0,

/* L */
        0xf0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x0,

/* M */
        0x82, 0xc6, 0xee, 0xfe, 0xd6, 0xc6, 0xc6, 0x0,

/* N */
        0xc6, 0xe6, 0xf6, 0xde, 0xce, 0xc6, 0xc6, 0x0,

/* O */
        0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x0,

/* P */
        0xfc, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x0,

/* Q */
        0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x3c, 0x6,

/* R */
        0xfc, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0xe3, 0x0,

/* S */
        0x3c, 0x66, 0x70, 0x38, 0xe, 0x66, 0x3c, 0x0,

/* T */
        0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x0,

/* U */
        0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x0,

/* V */
        0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x0,

/* W */
        0xc6, 0xc6, 0xc6, 0xd6, 0xfe, 0xee, 0xc6, 0x0,

/* X */
        0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3, 0x0,

/* Y */
        0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x0,

/* Z */
        0xfe, 0xc6, 0x8c, 0x18, 0x32, 0x66, 0xfe, 0x0,

/* 0 */
        0x3c, 0x66, 0x6e, 0x7e, 0x76, 0x66, 0x3c, 0x0,

/* 1 */
        0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x0,

/* 2 */
        0x3c, 0x66, 0x6, 0x1c, 0x30, 0x66, 0x7e, 0x0,

/* 3 */
        0x3c, 0x66, 0x6, 0x1c, 0x6, 0x66, 0x3c, 0x0,

/* 4 */
        0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0xc, 0x1e, 0x0,

/* 5 */ 0x7e, 0x60, 0x7c, 0x6, 0x6, 0x66, 0x3c, 0x0,

/* 6 */
        0x1c, 0x30, 0x60, 0x7c, 0x66, 0x66, 0x3c, 0x0,

/* 7 */
        0x7e, 0x66, 0x6, 0xc, 0x18, 0x18, 0x18, 0x0,

/* 8 */
        0x3c, 0x66, 0x66, 0x3c, 0x66, 0x66, 0x3c, 0x0,

/* 9 */
        0x3c, 0x66, 0x66, 0x3e, 0x6, 0xc, 0x38, 0x0,

/* ` */
        0x18,   0x18,   0xc,    0x0,    0x0,    0x0,    0x0,    0x0,

/* ~ */
        0x72,   0x9c,   0x0,    0x0,    0x0,    0x0,    0x0,    0x0,

/* ! */
        0x18,   0x3c,   0x3c,   0x18,   0x18,   0x0,    0x18,   0x0,

/* @ */
        0x7c,   0xc6,   0xde,   0xde,   0xde,   0xc0,   0x78,   0x0,

/* # */
        0x6c,   0x6c,   0xfe,   0x6c,   0xfe,   0x6c,   0x6c,   0x0,

/* $ */
        0x18,   0x3e,   0x60,   0x3c,   0x6,    0x7c,   0x18,   0x0,

/* % */
        0x0,    0xc6,   0xcc,   0x18,   0x30,   0x66,   0xc6,   0x0,

/* ^ */
        0x10,   0x38,   0x6c,   0xc6,   0x0,    0x0,    0x0,    0x0,

/* & */
        0x38,   0x6c,   0x68,   0x76,   0xdc,   0xcc,   0x76,   0x0,

/* * */
        0x0,    0x66,   0x3c,   0xff,   0x3c,   0x66,   0x0,    0x0,

/* ( */
        0xc,    0x18,   0x30,   0x30,   0x30,   0x18,   0xc,    0x0,

/* ) */
        0x30,   0x18,   0xc,    0xc,    0xc,    0x18,   0x30,   0x0,

/* - */
        0x0,    0x0,    0x0,    0x7e,   0x0,    0x0,    0x0,    0x0,

/* = */
        0x0,    0x0,    0x7e,   0x0,    0x0,    0x7e,   0x0,    0x0,

/* \ */
        0xc0,   0x60,   0x30,   0x18,   0xc,    0x6,    0x3,    0x0,

/* _ */
        0x0,    0x0,    0x0,    0x0,    0x0,    0x0,    0x0,    0xfe,

/* + */
        0x0,    0x18,   0x18,   0x7e,   0x18,   0x18,   0x0,    0x0,

/* | */
        0x18,   0x18,   0x18,   0x18,   0x18,   0x18,   0x18,   0x0,

/* [ */
        0x3c,   0x30,   0x30,   0x30,   0x30,   0x30,   0x3c,   0x0,

/* { */
        0xe,    0x18,   0x18,   0x70,   0x18,   0x18,   0xe,    0x0,

/* ] */
        0x3c,   0xc,    0xc,    0xc,    0xc,    0xc,    0x3c,   0x0,

/* } */
        0x70,   0x18,   0x18,   0xe,    0x18,   0x18,   0x70,   0x0,

/* ; */
        0x0,    0x18,   0x18,   0x0,    0x0,    0x18,   0x18,   0x30,

/* : */
        0x0,    0x18,   0x18,   0x0,    0x0,    0x18,   0x18,   0x0,

/* ' */
        0x18,   0x18,   0x30,   0x0,    0x0,    0x0,    0x0,    0x0,

/* " */
        0x6c,   0x6c,   0x0,    0x0,    0x0,    0x0,    0x0,    0x0,

/* , */
        0x0,    0x0,    0x0,    0x0,    0x0,    0x18,   0x18,   0x30,

/* < */
        0xc,    0x18,   0x30,   0x60,   0x30,   0x18,   0xc,    0x0,

/* . */
        0x0,    0x0,    0x0,    0x0,    0x0,    0x18,   0x18,   0x0,

/* > */
        0x30,   0x18,   0xc,    0x6,    0xc,    0x18,   0x30,   0x0,

/* / */
        0x3,    0x6,    0xc,    0x18,   0x30,   0x60,   0xc0,   0x0,

/* ? */
        0x3c,   0x66,   0x6,    0xc,    0x18,   0x0,    0x18,   0x0
};

char *charcode = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()-=\\_+|[{]};:'\",<.>/?";


