home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
disks
/
disk379.lzh
/
FileEncrypt
/
FileEncrypt.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-10-11
|
31KB
|
700 lines
/***************************************************************************
* *
* FILEENCRYPT *
* *
* Encrypts & Decrypts any file, you like to hide from curiosity... *
* *
* Public Domain, by Lorenz Wiest during 30th Jul - 7th Aug '90 *
* *
***************************************************************************/
#define TOPY 11
#define WIDTH 272
#define HEIGHT 155
#define ENCRYPT 0
#define DECRYPT 1
#include "exec/types.h"
#include "exec/memory.h"
#include "intuition/intuition.h"
#include "graphics/gfx.h"
#include "graphics/gfxmacros.h"
#include "libraries/dos.h"
struct IntuitionBase *IntuitionBase = NULL;
struct GfxBase *GfxBase = NULL;
struct IntuiMessage *Nachricht = NULL;
struct Window *Window = NULL;
struct Remember *MyRememberKey = NULL;
struct RastPort *WRast = NULL;
struct NewWindow NewWindow = { 130,30,WIDTH,HEIGHT,0,1,CLOSEWINDOW|GADGETUP,
WINDOWDEPTH|WINDOWDRAG|WINDOWCLOSE|ACTIVATE,
0,0," FileEncrypt ",0,0,0,0,0,0,WBENCHSCREEN };
ULONG Copy2Chip();
#define INTRO 1
#define MODUS 2
#define READ 3
#define WRITE 4
#define KEYWD 5
#define ERROR 6
char ReadFile[50]="DF1:\0";
char WriteFile[50]="DF1:\0";
char KeyWord[40]="\0";
char UndoString[40];
int CurrentMode = ENCRYPT;
int Frame=INTRO;
int NextFrame;
struct Gadget *Adr;
struct Gadget *FirstGad = NULL;
int GadgetNumber= 0;
UWORD SleepD[] = { 0x0000,0x0000,0x0600,0x0600,0x0f40,0x0f40,0x3fe0,0x3fe0,
0x7fe0,0x7fe0,0x61f0,0x7ff0,0x7bf8,0x7ff8,0xf7f8,0xfff8,
0x61fc,0x7ffc,0x7f0c,0x7ffc,0x3fde,0x3ffe,0x7fbc,0x7ffc,
0x3f0c,0x3ffc,0x1ff8,0x1ff8,0x07f0,0x07f0,0x01c0,0x01c0,
0x0700,0x0700,0x0fc0,0x0fc0,0x0680,0x0680,0x0000,0x0000,
0x00c0,0x00c0,0x00e0,0x00e0,0x0040,0x0040,0x0000,0x0000 };
UWORD Icon1D[] = { 0xE310,0x0001,0x0000,0x0000,0x0000,0x0000,0x003D,0x0017,
0x0005,0x0003,0x0001,0x00C0,0xBFC0,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0400,0x00C4,0x5DC6,0x0001,0x8C88,0x8000,0x0000,0x8000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x003D,0x0017,0x0002,0x0001,0x68E8,0x0300,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0007,0xFFFF,0xF980,
0x0000,0x0007,0xFFFF,0xF9E0,0x0000,0x0000,0x07FF,0xF9F8,
0x0000,0x003F,0xF07F,0xF9FE,0x0000,0x01D5,0x5E3F,0xF800,
0x0000,0x06BF,0xEB81,0xFFFF,0x8000,0x0FFF,0xFDDC,0x0000,
0x0000,0x181F,0xFEFF,0xFFFF,0xFF80,0x300F,0xFF60,0x0000,
0x03E0,0x300F,0xFF7F,0xFFFF,0xFFC0,0x300F,0xFF7F,0xFFFF,
0xFE00,0x181F,0xFEFF,0xCE47,0x3000,0x0FFF,0xFDDC,0x0000,
0x0000,0x06BF,0xEB81,0xFFFF,0x8000,0x01D5,0x5E3F,0xFFFF,
0x8000,0x003F,0xF0FF,0xC00F,0x8000,0x0000,0x07FF,0xFFFF,
0x8000,0x0007,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x001F,0xFFFF,0xFF80,
0x0000,0x0018,0x0000,0x0660,0x0000,0x0018,0x0000,0x0618,
0x0000,0x003F,0xF800,0x0606,0x0000,0x03FF,0xFF80,0x0601,
0x8000,0x0FFF,0xFFC0,0x07FF,0xE000,0x1FFF,0xFFFE,0x0000,
0x6000,0x3FFF,0xFFFF,0xFFFF,0xFFC0,0x7FFF,0xFFFF,0xFFFF,
0xFFF0,0xFF7F,0xFFFF,0xFFFF,0xFFF8,0xFE3F,0xFFFF,0xFFFF,
0xFFF0,0xFF7F,0xFFFF,0xFFFF,0xFFE0,0x7FFF,0xFFFF,0xFFFF,
0xFF00,0x3FFF,0xFFFF,0xFFFF,0xF800,0x1FFF,0xFFFE,0x0000,
0x6000,0x0FFF,0xFFC0,0x0000,0x6000,0x03FF,0xFF00,0x3FF0,
0x6000,0x007F,0xF800,0x0000,0x6000,0x0018,0x0000,0x0000,
0x6000,0x001F,0xFFFF,0xFFFF,0xE000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0001,0x0000,0x0000,0x0800,0x0000,0x0100 };
UWORD Icon2D[] = { 0xE310,0x0001,0x0000,0x0000,0x0000,0x0000,0x0028,0x0016,
0x0005,0x0003,0x0001,0x00C0,0xD5B8,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0400,0x00C8,0x7B4E,0x0001,0x7D40,0x8000,0x0000,0x8000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0028,0x0016,0x0002,0x0001,0x6A58,0x0300,0x0000,
0x0000,0x0000,0x0000,0x0000,0x3FFF,0xFFCC,0x0000,0x3FFF,
0xFFCF,0x0000,0x3FFF,0xFFCF,0xC000,0x3803,0xFFCF,0xF000,
0x3FFF,0xFFC0,0x0000,0x3803,0xFFFF,0xFC00,0x3FFF,0xFFFF,
0xFC00,0x3FFF,0xFFFF,0xFC00,0x3F84,0x00C0,0x7C00,0x3FFF,
0xFFFF,0xFC00,0x3900,0x8000,0x7C00,0x3FFF,0xFFFF,0xFC00,
0x3800,0x0040,0x7C00,0x3FFF,0xFFFF,0xFC00,0x3FFF,0xFFFF,
0xFC00,0x3FFF,0xFE00,0x7C00,0x3FFF,0xFFFF,0xFC00,0x3FFF,
0xFFFF,0xFC00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0xFFFF,0xFFFC,0x0000,0xC000,0x0033,
0x0000,0xC000,0x0030,0xC000,0xC000,0x0030,0x3000,0xC7FC,
0x0030,0x0C00,0xC000,0x003F,0xFF00,0xC7FC,0x0000,0x0300,
0xC000,0x0000,0x0300,0xC000,0x0000,0x0300,0xC07B,0xFF3F,
0x8300,0xC000,0x0000,0x0300,0xC6FF,0x7FFF,0x8300,0xC000,
0x0000,0x0300,0xC7FF,0xFFBF,0x8300,0xC000,0x0000,0x0300,
0xC000,0x0000,0x0300,0xC000,0x01FF,0x8300,0xC000,0x0000,
0x0300,0xC000,0x0000,0x0300,0xFFFF,0xFFFF,0xFF00,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,
0x0000,0x0800,0x0000,0x0100 };
UWORD CheckOnD[2][12][2] = {
{ 0xffff,0x0fff,0xf80c,0xf3ff,0xc3e3,0xe2ff,0x9dcf,0x057f,
0x1ebc,0x2aff,0x2f72,0x55ff,0x37ee,0x2fff,0x9bdc,0x57ff,
0xc1a0,0xafff,0xf805,0x5fff,0xfeaa,0xbfff,0xffd5,0xffff },
{ 0x0000,0xf000,0x07f3,0xfc00,0x3c1f,0xfd00,0x7e3f,0xfa80,
0xff7f,0xd500,0xdffd,0xaa00,0xcff1,0xd000,0x67e3,0xa800,
0x3fdf,0x5000,0x07fa,0xa000,0x0155,0x4000,0x002a,0x0000 }, };
UWORD CheckOffD[2][12][2] = {
{ 0xffff,0xffff,0xf80f,0xffff,0xc3e1,0xffff,0x9ffc,0xffff,
0x3ffe,0x3fff,0x3ffe,0x5fff,0x3ffe,0x2fff,0x9ffc,0x57ff,
0xc3e0,0xafff,0xf805,0x5fff,0xfeaa,0xbfff,0xffd5,0xffff },
{ 0x0000,0x0000,0x07f0,0x0000,0x3c1e,0x0000,0x6003,0x0000,
0xc001,0xc000,0xc001,0xa000,0xc001,0xd000,0x6003,0xa800,
0x3c1f,0x5000,0x07fa,0xa000,0x0155,0x4000,0x002a,0x0000 }, };
UWORD KeyDottedD[2][17][5] = {
{ 0xaabf,0xffaa,0xaaaa,0xaaaa,0x8000,0x55f0,0x01f5,0x5555,
0x5555,0x0000,0xaf0f,0xfc3a,0xaaaa,0xaaaa,0x8000,0x5c75,
0x578f,0xd555,0x5555,0x0000,0xb9af,0xfae0,0x7fff,0xfffa,
0x8000,0x73ff,0xff77,0x0000,0x000f,0x0000,0xe607,0xffbf,
0xffff,0xffe3,0x8000,0xcc73,0xffd8,0x0000,0x00f9,0x8000,
0xccfb,0xffdf,0xffff,0xfff3,0x8000,0xcc73,0xffdf,0xffff,
0xff87,0x0000,0xe607,0xffbf,0xf391,0xcc3e,0x8000,0x73ff,
0xff77,0x0000,0x01f5,0x0000,0xb9af,0xfae0,0x7fff,0xffaa,
0x8000,0x5c75,0x578f,0xd555,0x5555,0x0000,0xaf0f,0xfc3a,
0xaaaa,0xaaaa,0x8000,0x55e0,0x01f5,0x5555,0x5555,0x0000,
0xaabf,0xffaa,0xaaaa,0xaaaa,0x8000 },
{ 0x5540,0x0055,0x5555,0x5555,0x0000,0xaa0f,0xfe0a,0xaaaa,
0xaaaa,0x8000,0x50ff,0xffc5,0x5555,0x5555,0x0000,0xa3ff,
0xfff0,0x2aaa,0xaaaa,0x8000,0x47ff,0xffff,0x8000,0x0005,
0x0000,0x8fff,0xffff,0xffff,0xfff0,0x8000,0x1fff,0xffff,
0xffff,0xfffc,0x0000,0x3f8f,0xffff,0xffff,0xfffe,0x0000,
0x3f07,0xffff,0xffff,0xfffc,0x0000,0x3f8f,0xffff,0xffff,
0xfff8,0x8000,0x1fff,0xffff,0xffff,0xffc1,0x0000,0x8fff,
0xffff,0xffff,0xfe0a,0x8000,0x47ff,0xffff,0x8000,0x0055,
0x0000,0xa3ff,0xfff0,0x2aaa,0xaaaa,0x8000,0x50ff,0xffc5,
0x5555,0x5555,0x0000,0xaa1f,0xfe0a,0xaaaa,0xaaaa,0x8000,
0x5540,0x0055,0x5555,0x5555,0x0000 }, };
UWORD NoKeyDottedD[2][29][4] = {
{ 0x5555,0x557f,0xff55,0x5555,0xaaaa,0xafc0,0x01fa,0xaaaa,
0x5555,0x783f,0xfe0f,0x5555,0xaaab,0xc7ff,0xfff1,0xeaaa,
0x5557,0x3fff,0xfffe,0x7555,0xaaac,0xffff,0xffff,0x9eaa,
0x555b,0xfff8,0x03ff,0xe755,0xabf0,0x0ffd,0xfc3f,0xfbaa,
0x570f,0xfffe,0xffc7,0xfdd5,0xac75,0x57ff,0x7ff9,0xfeea,
0x59af,0xffff,0xbffe,0xff3d,0xb3ff,0xffff,0xc000,0x000e,
0x6607,0xffff,0xefff,0xffe3,0xcc73,0xffff,0xf000,0x00f9,
0xccfb,0xffff,0xfbff,0xfff3,0xcc73,0xffdf,0xfdff,0xff86,
0x6607,0xffbf,0xfe11,0xcc3d,0xb3ff,0xff7d,0xff00,0x016a,
0x59af,0xfae0,0xffbe,0xff75,0xac75,0x578f,0x7fd9,0xfeea,
0x570f,0xfc3f,0xbfe7,0xfdd5,0xabe0,0x001f,0xdfff,0xfbaa,
0x557b,0xffe0,0x07ff,0xe755,0xaaac,0xffff,0xffff,0x9eaa,
0x5557,0x3fff,0xfffe,0x7555,0xaaab,0xc7ff,0xfff1,0xeaaa,
0x5555,0x783f,0xfe0f,0x5555,0xaaaa,0xafc0,0x01fa,0xaaaa,
0x5555,0x557f,0xff55,0x5555 },
{ 0xaaaa,0xaa80,0x00aa,0xaaaa,0x5555,0x503f,0xfe05,0x5555,
0xaaaa,0x87ff,0xfff0,0xaaaa,0x5554,0x3fff,0xfffe,0x1555,
0xaaa8,0xffff,0xffff,0x8aaa,0x5553,0xffff,0xffff,0xe155,
0xaaa7,0xffff,0xffff,0xf8aa,0x540f,0xf7fe,0x03ff,0xfc55,
0xa8f0,0x03ff,0x003f,0xfe2a,0x538a,0xa9ff,0x8007,0xff15,
0xa650,0x00ff,0xc001,0xffc2,0x4c00,0x007f,0xffff,0xfff1,
0x99f8,0x003f,0xf000,0x001c,0x33fc,0x001f,0xffff,0xff06,
0x33fc,0x000f,0xfc00,0x000c,0x33fc,0x0027,0xfe00,0x0079,
0x99f8,0x0043,0xffee,0x33c2,0x4c00,0x0083,0xffff,0xff95,
0xa650,0x051f,0xffc1,0xff8a,0x538a,0xa870,0xffe7,0xff15,
0xa8f0,0x03c0,0x7fff,0xfe2a,0x541f,0xffe0,0x3fff,0xfc55,
0xaa87,0xffff,0xffff,0xf8aa,0x5553,0xffff,0xffff,0xe155,
0xaaa8,0xffff,0xffff,0x8aaa,0x5554,0x3fff,0xfffe,0x1555,
0xaaaa,0x87ff,0xfff0,0xaaaa,0x5555,0x503f,0xfe05,0x5555,
0xaaaa,0xaa80,0x00aa,0xaaaa }, };
UWORD KeyBlankD[2][15][4] = {
{ 0xffc0,0x07ff,0xffff,0xfff8,0xfc3f,0xf0ff,0xffff,0xfff8,
0xf1d5,0x5e3f,0xffff,0xfff8,0xe6bf,0xeb81,0xffff,0xfff8,
0xcfff,0xfddc,0x0000,0x0038,0x981f,0xfeff,0xffff,0xff88,
0x31cf,0xff60,0x0000,0x03e0,0x33ef,0xff7f,0xffff,0xffc8,
0x31cf,0xff7f,0xffff,0xfe18,0x981f,0xfeff,0xce47,0x30f8,
0xcfff,0xfddc,0x0000,0x07f8,0xe6bf,0xeb81,0xffff,0xfff8,
0xf1d5,0x5e3f,0xffff,0xfff8,0xfc3f,0xf0ff,0xffff,0xfff8,
0xff80,0x07ff,0xffff,0xfff8 },
{ 0x003f,0xf800,0x0000,0x0000,0x03ff,0xff00,0x0000,0x0000,
0x0fff,0xffc0,0x0000,0x0000,0x1fff,0xfffe,0x0000,0x0000,
0x3fff,0xffff,0xffff,0xffc0,0x7fff,0xffff,0xffff,0xfff0,
0xfe3f,0xffff,0xffff,0xfff8,0xfc1f,0xffff,0xffff,0xfff0,
0xfe3f,0xffff,0xffff,0xffe0,0x7fff,0xffff,0xffff,0xff00,
0x3fff,0xffff,0xffff,0xf800,0x1fff,0xfffe,0x0000,0x0000,
0x0fff,0xffc0,0x0000,0x0000,0x03ff,0xff00,0x0000,0x0000,
0x007f,0xf800,0x0000,0x0000 }, };
UWORD NoKeyBlankD[2][27][4] = {
{ 0xffff,0xff00,0x07ff,0xfff8,0xffff,0xe0ff,0xf83f,0xfff8,
0xffff,0x1fff,0xffc7,0xfff8,0xfffc,0xffff,0xfff9,0xfff8,
0xfff3,0xffff,0xfffe,0x7ff8,0xffef,0xffe0,0x0fff,0x9ff8,
0xffc0,0x3ff7,0xf0ff,0xeff8,0xfc3f,0xfffb,0xff1f,0xf7f8,
0xf1d5,0x5ffd,0xffe7,0xfbf8,0xe6bf,0xfffe,0xfffb,0xfcf8,
0xcfff,0xffff,0x0000,0x0038,0x981f,0xffff,0xbfff,0xff88,
0x31cf,0xffff,0xc000,0x03e0,0x33ef,0xffff,0xefff,0xffc8,
0x31cf,0xff7f,0xf7ff,0xfe18,0x981f,0xfeff,0xf847,0x30f8,
0xcfff,0xfdf7,0xfc00,0x05f8,0xe6bf,0xeb83,0xfefb,0xfdf8,
0xf1d5,0x5e3d,0xff67,0xfbf8,0xfc3f,0xf0fe,0xff9f,0xf7f8,
0xff80,0x007f,0x7fff,0xeff8,0xffef,0xff80,0x1fff,0x9ff8,
0xfff3,0xffff,0xfffe,0x7ff8,0xfffc,0xffff,0xfff9,0xfff8,
0xffff,0x1fff,0xffc7,0xfff8,0xffff,0xe0ff,0xf83f,0xfff8,
0xffff,0xff00,0x07ff,0xfff8 },
{ 0x0000,0x00ff,0xf800,0x0000,0x0000,0x1fff,0xffc0,0x0000,
0x0000,0xffff,0xfff8,0x0000,0x0003,0xffff,0xfffe,0x0000,
0x000f,0xffff,0xffff,0x8000,0x001f,0xffff,0xffff,0xe000,
0x003f,0xdff8,0x0fff,0xf000,0x03c0,0x0ffc,0x00ff,0xf800,
0x0e2a,0xa7fe,0x001f,0xfc00,0x1940,0x03ff,0x0007,0xff00,
0x3000,0x01ff,0xffff,0xffc0,0x67e0,0x00ff,0xc000,0x0070,
0xcff0,0x007f,0xffff,0xfc18,0xcff0,0x003f,0xf000,0x0030,
0xcff0,0x009f,0xf800,0x01e0,0x67e0,0x010f,0xffb8,0xcf00,
0x3000,0x020f,0xffff,0xfe00,0x1940,0x147f,0xff07,0xfe00,
0x0e2a,0xa1c3,0xff9f,0xfc00,0x03c0,0x0f01,0xffff,0xf800,
0x007f,0xff80,0xffff,0xf000,0x001f,0xffff,0xffff,0xe000,
0x000f,0xffff,0xffff,0x8000,0x0003,0xffff,0xfffe,0x0000,
0x0000,0xffff,0xfff8,0x0000,0x0000,0x1fff,0xffc0,0x0000,
0x0000,0x00ff,0xf800,0x0000 }, };
UWORD ObenRechtsD[2][4][1] = {
{ 0x2a00,0x0400,0xc200,0xf000 },{ 0xd400,0xfa00,0x3c00,0x0e00 }, };
UWORD ObenLinksD[2][4][1] = {
{ 0xa800,0x5000,0x8600,0x1e00 },{ 0x5600,0xae00,0x7800,0xe000 }, };
UWORD UntenLinksD[2][4][1] = {
{ 0x9e00,0x4600,0xa000,0x5400 }, { 0x6000,0xb800,0x5e00,0xaa00 }, };
UWORD UntenRechtsD[2][4][1] = {
{ 0xf200,0xc400,0x0a00,0x5400 }, { 0x0c00,0x3a00,0xf400,0xaa00 }, };
UWORD SprechZapfenD[2][9][2] = {
{ 0x0001,0xffc0,0xaaa9,0xffc0,0x5551,0xffc4,0xaaa9,0xff88,
0x5553,0xfe14,0xaa87,0xf828,0x551f,0xc154,0xa878,0x0aa8,
0x0000,0x5554 },
{ 0xfffe,0x003c,0x5556,0x003c,0xaaae,0x0038,0x5556,0x0074,
0xaaac,0x01e8,0x5578,0x07d4,0xaae0,0x3ea8,0x5787,0xf554,
0xffff,0xaaa8 }, };
UWORD FileEncryptLabelD[2][15][10] = {
{ 0x060e,0x1e0f,0xfffc,0x183f,0xffff,0xffff,0xffff,0xffff,
0xffc7,0xc000,0x878e,0x1f0f,0xfffe,0x1e3f,0xffff,0xffff,
0xffff,0xffff,0xff87,0xc000,0x87cf,0xff0f,0xfffe,0x1f3f,
0xffff,0xffff,0xffff,0xffff,0xff87,0xc000,0x87fc,0x1f0f,
0xc61e,0x1ff0,0x61f8,0x6383,0x1c0e,0x060c,0x1e06,0x0000,
0x873e,0x1f0f,0x8f0e,0x1cf8,0x70f0,0xe1c3,0x0e1f,0x0f0f,
0x0f87,0xc000,0x863e,0x1f0f,0x0f0e,0x18f8,0x70e1,0xffc3,
0xfe1f,0x0f0f,0x8787,0xc000,0x863e,0x1f0f,0x0f0e,0x18f8,
0x70e1,0xffc3,0xff0f,0x0f0f,0x8787,0xc000,0x873e,0x1f0f,
0x0e0e,0x1cf8,0x70e1,0xffc3,0xff8f,0x0f0f,0x8787,0xc000,
0x87fe,0x1f0f,0x0ffe,0x1ff8,0x70e1,0xffc3,0xff87,0x1f0f,
0x8787,0xc000,0x87fe,0x1f0f,0x0ffe,0x1f38,0x70e1,0xf1c3,
0xffc3,0x1f0f,0x8787,0xc000,0x87fe,0x1f0f,0x8f0e,0x1e38,
0x70f0,0xe1c3,0xffe6,0x1f0f,0x0f86,0x0000,0x03fc,0x0e07,
0xc61c,0x1830,0x2078,0x6381,0xfffe,0x3f0c,0x1fc6,0x4000,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xff8c,0x3f0f,
0xffff,0xc000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xff80,0x7f0f,0xffff,0xc000,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffc0,0xfe03,0xffff,0xc000 },
{ 0xf9f1,0xe1f0,0x0003,0xe7c0,0x0000,0x0000,0x0000,0x0000,
0x0038,0x0000,0x7871,0xe0f0,0x0001,0xe1c0,0x0000,0x0000,
0x0000,0x0000,0x0078,0x0000,0x7830,0x00f0,0x0001,0xe0c0,
0x0000,0x0000,0x0000,0x0000,0x0078,0x0000,0x7803,0xe0f0,
0x39e1,0xe00f,0x9e07,0x9c7c,0xe3f1,0xf9f3,0xe1f9,0xc000,
0x78c1,0xe0f0,0x70f1,0xe307,0x8f0f,0x1e3c,0xf1e0,0xf0f0,
0xf078,0x0000,0x79c1,0xe0f0,0xf0f1,0xe707,0x8f1e,0x003c,
0x01e0,0xf0f0,0x7878,0x0000,0x79c1,0xe0f0,0xf0f1,0xe707,
0x8f1e,0x003c,0x00f0,0xf0f0,0x7878,0x0000,0x78c1,0xe0f0,
0xf1f1,0xe307,0x8f1e,0x003c,0x0070,0xf0f0,0x7878,0x0000,
0x7801,0xe0f0,0xf001,0xe007,0x8f1e,0x003c,0x0078,0xe0f0,
0x7878,0x0000,0x7801,0xe0f0,0xf001,0xe0c7,0x8f1e,0x0e3c,
0x003c,0xe0f0,0x7878,0x0000,0x7801,0xe0f0,0x70f1,0xe1c7,
0x8f0f,0x1e3c,0x0019,0xe0f0,0xf079,0xc000,0xfc03,0xf1f8,
0x39e3,0xe7cf,0xdf87,0x9c7e,0x0001,0xc0f3,0xe039,0x8000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0073,0xc0f0,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x007f,0x80f0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x003f,0x01fc,0x0000,0x0000 }, };
struct Image CheckOn ={0,-1,25,12,2,NULL,3,0,NULL};
struct Image CheckOff ={0,-1,25,12,2,NULL,3,0,NULL};
struct Image KeyDotted ={0,0,65,17,2,NULL,3,0,NULL};
struct Image NoKeyDotted ={1,0,64,29,2,NULL,3,0,NULL};
struct Image KeyBlank ={9,10,61,15,2,NULL,3,0,NULL};
struct Image NoKeyBlank ={11,4,61,27,2,NULL,3,0,NULL};
struct Image FileEncryptLabel={0,0,146,15,2,NULL,3,0,NULL};
struct Image SprechZapfen ={ 83,118,30,9,2,NULL,3,0,NULL};
struct Image UntenRechts ={249,115, 7,4,2,NULL,3,0,&SprechZapfen};
struct Image UntenLinks ={ 15,115, 7,4,2,NULL,3,0,&UntenRechts};
struct Image ObenRechts ={249, 19, 7,4,2,NULL,3,0,&UntenLinks};
struct Image ObenLinks ={ 15, 19, 7,4,2,NULL,3,0,&ObenRechts};
UWORD *SleepPointer;
OpenImages()
{
CheckOn.ImageData =Copy2Chip(sizeof(CheckOnD)/2 ,&CheckOnD[0]);
CheckOff.ImageData =Copy2Chip(sizeof(CheckOffD)/2 ,&CheckOffD[0]);
KeyDotted.ImageData =Copy2Chip(sizeof(KeyDottedD)/2 ,&KeyDottedD[0]);
NoKeyDotted.ImageData =Copy2Chip(sizeof(NoKeyDottedD)/2 ,&NoKeyDottedD[0]);
KeyBlank.ImageData =Copy2Chip(sizeof(KeyBlankD)/2 ,&KeyBlankD[0]);
NoKeyBlank.ImageData =Copy2Chip(sizeof(NoKeyBlankD)/2 ,&NoKeyBlankD[0]);
FileEncryptLabel.ImageData=Copy2Chip(sizeof(FileEncryptLabelD)/2,&FileEncryptLabelD[0]);
SprechZapfen.ImageData =Copy2Chip(sizeof(SprechZapfenD)/2 ,&SprechZapfenD[0]);
UntenRechts.ImageData =Copy2Chip(sizeof(UntenRechtsD)/2 ,&UntenRechtsD[0]);
UntenLinks.ImageData =Copy2Chip(sizeof(UntenLinksD)/2 ,&UntenLinksD[0]);
ObenLinks.ImageData =Copy2Chip(sizeof(ObenLinksD)/2 ,&ObenLinksD[0]);
ObenRechts.ImageData =Copy2Chip(sizeof(ObenRechtsD)/2 ,&ObenRechtsD[0]);
SleepPointer =Copy2Chip(sizeof(SleepD)/2 ,&SleepD[0]);
}
#define CANCELB 0
#define OKB 1
#define ENCRYPTB 2
#define DECRYPTB 3
#define TEXTB 4
#define CREATEB 5
#define ITEXT(x,y,text,n) {2,0,JAM1,(x),(y),NULL,(text),(n)}
#define DEFGADGET(x,y,w,h,text,id) {0,(x),(y),(w),(h),GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,0,0,(text),0,0,(id),0}
struct IntuiText OKText = ITEXT(21,2,"OK",NULL);
struct Gadget OKButton = DEFGADGET(105,100,57,11,&OKText,OKB);
struct IntuiText CANCELText = ITEXT(6,2,"Cancel",NULL);
struct Gadget CANCELButton = DEFGADGET(173,100,57,11,&CANCELText,CANCELB);
struct StringInfo TEXTInfo = {NULL, &UndoString[0], 4, 40,0, 0,0,0,0,0,0,0,0};
struct Gadget TEXTButton = {NULL, 31, 58, 208, 8, GADGHCOMP, GADGIMMEDIATE|RELVERIFY,
STRGADGET, NULL, NULL, NULL, 0, &TEXTInfo, TEXTB, NULL};
struct IntuiText ENCRYPTText = ITEXT(11,33,"Encrypt",NULL),
DECRYPTText = ITEXT(11,33,"Decrypt",NULL);
struct Gadget DECRYPTButton = {0,147,54,79,45,GADGIMAGE|GADGHCOMP,GADGIMMEDIATE|RELVERIFY,
BOOLGADGET,&NoKeyBlank,0,&DECRYPTText,0,0,DECRYPTB,0};
struct Gadget ENCRYPTButton = {0, 41,54,79,45,GADGIMAGE|GADGHCOMP,GADGIMMEDIATE|RELVERIFY,
BOOLGADGET,&KeyBlank,0,&ENCRYPTText,0,0,ENCRYPTB,0};
struct IntuiText CREATEText = ITEXT(31,1,"Create Icon",NULL);
struct Gadget CREATEButton = {NULL, 77, 78, 16, 8, GADGHIMAGE|GADGIMAGE|SELECTED,
TOGGLESELECT|GADGIMMEDIATE|RELVERIFY,
BOOLGADGET, &CheckOff, &CheckOn, &CREATEText, 0, NULL, CREATEB, NULL};
Encrypt(Buffer, Length)
UBYTE *Buffer;
ULONG Length;
{
/*** TOP SECRET ***/
}
Decrypt(Buffer, Length)
UBYTE *Buffer;
ULONG Length;
{
/*** TOP SECRET ***/
}
#define ERROR_MEMORY_IS_LOW 71
#define ERROR_CANT_OPEN_FILE 72
#define ERROR_CANT_CREATE_FILE 73
struct IntuiText TextErr3 = ITEXT(38,71,NULL,NULL);
struct IntuiText TextErr2 = ITEXT(37,71,NULL,&TextErr3);
struct IntuiText TextErr = ITEXT(37,43,"Sorry, an error happened:",&TextErr2);
Error(Number, Frame)
int Number, Frame;
{ static char ErrMemory[] = "Not Enough Memory.\0",
ErrNoOpen[] = "Can't Open File.\0",
ErrNoCrea[] = "Can't Create File.\0",
ErrNotFou[] = "File Not Found.\0";
NextFrame=Frame;
switch(Number)
{ case ERROR_MEMORY_IS_LOW : TextErr2.IText=TextErr3.IText=&ErrMemory[0]; break;
case ERROR_CANT_OPEN_FILE : TextErr2.IText=TextErr3.IText=&ErrNoOpen[0]; break;
case ERROR_CANT_CREATE_FILE: TextErr2.IText=TextErr3.IText=&ErrNoCrea[0]; break;
break;
}
switch(IoErr())
{ case ERROR_OBJECT_NOT_FOUND: TextErr2.IText=TextErr3.IText=&ErrNotFou[0]; break;
break;
}
SwitchToFrame(ERROR);
}
FileLoadAndSave(Mode)
int Mode;
{ struct FileLock *MyLock;
struct FileInfoBlock *MyFIB;
struct FileHandle *MyReadHandle;
struct FileHandle *MyWriteHandle;
char *MyBuffer;
char IconFile[45];
register int i;
ULONG DataPtr, DataSize;
SetPointer(Window, SleepPointer, 22, 15, 0,0);
MyLock = Lock(&ReadFile[0], ACCESS_READ);
if(MyLock==NULL)
{ Error(ERROR_OBJECT_NOT_FOUND, READ); goto LeaveIt3; }
if((MyFIB=AllocMem(sizeof(struct FileInfoBlock), MEMF_CLEAR))==NULL)
{ Error(ERROR_MEMORY_IS_LOW, MODUS); goto LeaveIt2; }
Examine(MyLock, MyFIB);
if((MyReadHandle=Open(&ReadFile[0], MODE_OLDFILE))==NULL)
{ Error(ERROR_CANT_OPEN_FILE, READ); goto LeaveIt2; }
if((MyBuffer=AllocMem(MyFIB->fib_Size, MEMF_CLEAR))==NULL)
{ Error(ERROR_MEMORY_IS_LOW, MODUS); goto LeaveIt2; }
if((Read(MyReadHandle, MyBuffer, MyFIB->fib_Size))==-1)
{ Close(MyReadHandle);
Error(ERROR_CANT_OPEN_FILE, READ);
goto LeaveIt; }
Close(MyReadHandle);
if(Mode==ENCRYPT) Encrypt(MyBuffer, MyFIB->fib_Size);
else Decrypt(MyBuffer, MyFIB->fib_Size);
if((MyWriteHandle=Open(&WriteFile[0], MODE_NEWFILE))==NULL)
{ Error(ERROR_CANT_CREATE_FILE, WRITE); goto LeaveIt; }
if((Write(MyWriteHandle, MyBuffer, MyFIB->fib_Size))==-1)
{ Close(MyWriteHandle);
DeleteFile(&WriteFile[0]);
Error(ERROR_CANT_CREATE_FILE, WRITE);
goto LeaveIt; }
Close(MyWriteHandle);
/**** Here we create the Icon - if desired - ****/
if(CREATEButton.Flags & SELECTED)
{ for(i=0; WriteFile[i]!=0; i++) IconFile[i]=WriteFile[i];
CopyMem(".info\0",&IconFile[i],5);
if((MyWriteHandle=Open(&IconFile[0], MODE_NEWFILE))==NULL)
{ Error(ERROR_CANT_CREATE_FILE, WRITE); goto LeaveIt; }
DataPtr = &Icon1D[0]; DataSize = sizeof(Icon1D);
if(Mode==DECRYPT) { DataPtr = &Icon2D[0]; DataSize = sizeof(Icon2D); }
if((Write(MyWriteHandle, DataPtr, DataSize))==-1)
{ Close(MyWriteHandle);
DeleteFile(&IconFile[0]);
DeleteFile(&WriteFile[0]);
Error(ERROR_CANT_CREATE_FILE, WRITE);
goto LeaveIt; }
Close(MyWriteHandle);
}
/**** Finish of Icon section ****/
SwitchToFrame(MODUS);
LeaveIt:
FreeMem(MyBuffer,MyFIB->fib_Size);
LeaveIt2:
FreeMem(MyFIB,sizeof(struct FileInfoBlock));
LeaveIt3:
UnLock(MyLock);
}
Do_Gadget(FrameNr, Button)
int FrameNr, Button;
{ static struct IntuiText Text4e={2,1,JAM2,24,35,0," What about your Keyword ? " ,NULL};
register int i;
switch(FrameNr)
{ case INTRO : SwitchToFrame(MODUS); break;
case MODUS : CurrentMode=ENCRYPT;
if(Button==DECRYPTB) CurrentMode=DECRYPT;
SwitchToFrame(READ); break;
case READ : if(Button==OKB) { for(i=0; ReadFile[i]!=0; i++)
WriteFile[i]=ReadFile[i];
CopyMem(".ENCRYPT\0",&WriteFile[i],9);
if(CurrentMode==DECRYPT)
CopyMem("DE",&WriteFile[i+1],2);
SwitchToFrame(KEYWD);
};
if(Button==CANCELB) SwitchToFrame(MODUS);
break;
case KEYWD : if(Button==OKB) { if(TEXTInfo.NumChars<1)
{ PrintIText(WRast, &Text4e, 0, 0);
ActivateGadget(&TEXTButton, Window, NULL);
}
else SwitchToFrame(WRITE);
};
if(Button==CANCELB) SwitchToFrame(READ);
break;
case WRITE : if(Button==CANCELB) SwitchToFrame(KEYWD);
if(Button==OKB) FileLoadAndSave(CurrentMode);
break;
case ERROR : if(Button==OKB) SwitchToFrame(NextFrame);
break;
break;
}
}
LinkGadgets(Nr, Gad1, Gad2, Gad3, Gad4)
int Nr;
struct Gadget *Gad1, *Gad2, *Gad3, *Gad4;
{
if(Nr>=1) AddGadget(Window, Gad1, 1);
if(Nr>=2) AddGadget(Window, Gad2, 2);
if(Nr>=3) AddGadget(Window, Gad3, 3);
if(Nr>=4) AddGadget(Window, Gad4, 4);
FirstGad=Gad1;
GadgetNumber=Nr;
}
SwitchToFrame(NewFrame)
int NewFrame;
{ static struct IntuiText
Text15 = {3,0,JAM1,35,82,0,"Copy me, I want to travel!",NULL},
Text14 = ITEXT(37,82,"Copy me, I want to travel!" ,&Text15),
Text13 = ITEXT(77,67,"D-7958 Laupheim" ,&Text14),
Text12 = ITEXT(85,57,"R\366ntgenweg 12" ,&Text13),
Text11 = ITEXT(87,47,"Lorenz Wiest" ,&Text12),
Text22 = {3,0,JAM1,186,36,0,"YOU" ,NULL},
Text21 = ITEXT(44,36,"What can I do for YOU ?" ,&Text22),
Text31b = ITEXT(24,35,"Which file shall I decrypt ?" ,0),
Text31a = ITEXT(24,35,"Which file shall I encrypt ?" ,0),
Text41 = ITEXT(24,35,"Tell me your secret KeyWord." ,0),
Text52b = ITEXT(24,40,"the decrypted file ?" ,0),
Text52a = ITEXT(24,40,"the encrypted File ?" ,0),
Text51 = ITEXT(24,29,"To which fille shall I write" ,0);
ClearPointer(Window);
Frame=NewFrame;
FillBox( 1,22,23,248,114);
FillBox(-1,20,120,83,148);
if(FirstGad!=NULL) RemoveGList(Window, FirstGad, GadgetNumber);
switch(Frame)
{ case INTRO : DrawImage(WRast,&FileEncryptLabel,59+8,26);
PrintIText(WRast,&Text11,0,0);
SetUpButton(&OKButton, 1, 3);
LinkGadgets(1, &OKButton, 0, 0, 0);
break;
case MODUS : CurrentMode=ENCRYPT;
PrintIText(WRast,&Text21,0,0);
SetUpButton(&ENCRYPTButton, 1, 2);
SetUpButton(&DECRYPTButton, 1, 2);
LinkGadgets(2, &ENCRYPTButton, &DECRYPTButton, 0, 0);
break;
case READ : if(CurrentMode==ENCRYPT) PrintIText(WRast,&Text31a,0,0);
else PrintIText(WRast,&Text31b,0,0);
SetUpButton(&TEXTButton, 0, 2);
SetUpButton(&OKButton, 1, 3);
SetUpButton(&CANCELButton, 1, 2);
TEXTInfo.Buffer=&ReadFile[0];
LinkGadgets(3, &TEXTButton, &OKButton, &CANCELButton, 0);
break;
case KEYWD : PrintIText(WRast,&Text41,0,0);
SetUpButton(&TEXTButton, 0, 2);
SetUpButton(&OKButton, 1, 3);
SetUpButton(&CANCELButton, 1, 2);
TEXTInfo.Buffer=&KeyWord[0];
LinkGadgets(3, &TEXTButton, &OKButton, &CANCELButton, 0);
break;
case WRITE : PrintIText(WRast, &Text51, 0, 0);
if(CurrentMode==ENCRYPT) PrintIText(WRast,&Text52a,0,0);
else PrintIText(WRast,&Text52b,0,0);
SetUpButton(&TEXTButton, 0, 2);
SetUpButton(&OKButton, 1, 3);
SetUpButton(&CANCELButton, 1, 2);
TEXTInfo.Buffer=&WriteFile[0];
LinkGadgets(4, &TEXTButton, &OKButton, &CANCELButton, &CREATEButton);
break;
case ERROR : PrintIText(WRast,&TextErr,0,0);
SetUpButton(&OKButton, 1, 3);
LinkGadgets(1, &OKButton, 0, 0, 0);
break;
break;
} /* end of switch */
if(CurrentMode==ENCRYPT) DrawImage(WRast,&KeyDotted,20,126);
else DrawImage(WRast,&NoKeyDotted,20,120);
RefreshGadgets(FirstGad,Window,NULL);
if(FirstGad->GadgetType==STRGADGET) ActivateGadget(FirstGad,Window,NULL);
}
main()
{ ULONG NachArt;
USHORT Code;
if ((IntuitionBase=(struct IntuitionBase *)
OpenLibrary("intuition.library",0))==NULL) Schluss();
if ((GfxBase=(struct GfxBase *)
OpenLibrary("graphics.library",0))==NULL) Schluss();
if ((Window=(struct Window *)OpenWindow(&NewWindow))==NULL) Schluss();
WRast=Window->RPort;
OpenImages();
SketchWindow();
SwitchToFrame(INTRO);
for (;;)
{ WaitPort(Window->UserPort);
while(Nachricht=(struct IntuiMessage *)GetMsg(Window->UserPort))
{ NachArt=Nachricht->Class;
Code =Nachricht->Code;
Adr =Nachricht->IAddress;
ReplyMsg(Nachricht);
switch(NachArt)
{ case CLOSEWINDOW : Schluss(); break;
case GADGETUP : Do_Gadget(Frame,Adr->GadgetID);
} /* end of switch */
} /* end of if */
} /* end of for */
} /* end of main */
SketchWindow()
{
FillBox( 1, 0, TOPY, WIDTH, HEIGHT-1);
FillBox( 2, 2, TOPY+1, WIDTH-3, HEIGHT-2);
FillBox(-1, 4, TOPY+2, WIDTH-5, HEIGHT-3);
FillBox( 2,15, 19, 256-1,118);
FillBox( 1,17, 20, 256-1-2,118-1);
DrawImage(WRast,&ObenLinks,0,0);
}
SetUpButton(Gadget, AreaCol, BorderCol)
struct Gadget *Gadget;
int BorderCol, AreaCol;
{ register int X1, Y1, X2, Y2;
X1 = Gadget->LeftEdge;
Y1 = Gadget->TopEdge;
X2 = Gadget->LeftEdge+Gadget->Width-1;
Y2 = Gadget->TopEdge+Gadget->Height-1;
if(Gadget->GadgetType==STRGADGET) {X1-=2; Y1-=1; X2+=2; Y2+=1; };
FillBox(-1, X1+4-2, Y1+2-1, X2+4+2, Y2+2+1); /* RasterFill as Shadow */
FillBox(AreaCol, X1, Y1, X2, Y2); /* FrontArea is cleared */
SetAPen(WRast, BorderCol);
Move(WRast, X1+1-2, Y1-1); /* Draw a Button Border */
Draw(WRast, X2-1+2, Y1-1);
Draw(WRast, X2-1+2, Y2+1);
Draw(WRast, X1+1-2, Y2+1);
Draw(WRast, X1+1-2, Y1-1);
Move(WRast, X1-2, Y1+1-1);
Draw(WRast, X1-2, Y2-1+1);
Move(WRast, X2+2, Y1+1-1);
Draw(WRast, X2+2, Y2-1+1);
}
FillBox(Color, X1, Y1, X2, Y2)
int Color, X1, Y1, X2, Y2;
{ static UWORD Pattern[]={0xaaaa,0x5555,0x5555,0xaaaa};
if(Color>=0)
{ SetAPen(WRast, Color);
SetBPen(WRast, Color);
SetAfPt(WRast, NULL, 0); }
else
{ SetAPen(WRast, 3);
SetBPen(WRast, 0);
SetAfPt(WRast, &Pattern, -1); }
RectFill(WRast, X1, Y1, X2, Y2);
}
ULONG Copy2Chip(WordCount, ArrayPnt)
int WordCount;
UWORD *ArrayPnt;
{ UWORD *Zeiger;
Zeiger=AllocRemember(&MyRememberKey,WordCount<<1,MEMF_CHIP|MEMF_CLEAR);
CopyMem(ArrayPnt,Zeiger,WordCount<<1);
return(Zeiger);
}
Schluss()
{
FreeRemember(&MyRememberKey, TRUE);
if(Window!=NULL) CloseWindow(Window);
if(GfxBase!=NULL) CloseLibrary(GfxBase);
if(IntuitionBase!=NULL) CloseLibrary(IntuitionBase);
exit(0);
}