home *** CD-ROM | disk | FTP | other *** search
- /*
- * miscE.c © by Martin Steppler
- */
-
- struct Device *ConsoleDevice = NULL;
- struct IOStdReq ConsoleMsg;
-
- extern void ReleaseFileSelect();
- char *BriefText[] = {
- "LETTER", "ASCII ", "AUT", " "
- };
-
- #define OFFSET 431
- #define KLOTZ 10240
-
- DeadKeyConvert(Message, KeyBuffer, BufferSize, KeyMap)
- struct IntuiMessage *Message;
- UBYTE *KeyBuffer;
- int BufferSize;
- struct KeyMap *KeyMap;
- {
- static struct InputEvent InputEvent =
- {
- NULL, /* struct InputEvent *ie_NextEvent; */
- IECLASS_RAWKEY, /* UBYTE ie_Class; */
- 0, /* UBYTE ie_SubClass; */
- 0, /* UWORD ie_Code; */
- 0 /* UWORD ie_Qualifier; */
- /* union */
- /* { */
- /* struct */
- /* { */
- /* WORD ie_x; */
- /* WORD ie_y; */
- /* } ie_xy; */
- /* APTR ie_addr; */
- /* } ie_position; */
- /* struct timeval ie_TimeStamp; */
- };
-
- if (Message->Class != RAWKEY) return(-2);
- if (Message->Code & IECODE_UP_PREFIX) return(0);
-
- InputEvent.ie_Code = Message->Code;
- InputEvent.ie_Qualifier = Message->Qualifier;
- InputEvent.ie_position.ie_addr = (APTR)*(Message->IAddress);
-
- return(RawKeyConvert(&InputEvent, KeyBuffer, BufferSize, KeyMap));
- }
-
- OpenReadConsole()
- {
- if (OpenDevice("console.device", -1L, &ConsoleMsg, 0) != 0)
- return(-1);
- ConsoleDevice = (struct Device *)ConsoleMsg.io_Device;
- return(0);
- }
-
- Meldung()
- {
- UBYTE string[80];
-
- StilAus();
- strcpy(string, " ");
- Move(RP, 6, 20);
- Text(RP, string, strlen(string));
- Move(RP, 6, 20);
- Text(RP, buffer, strlen(buffer));
- sprintf(buffer, "PGE %-3d LIN %-3d COL %-3d", s+1, z+1, x);
- Move(RP, OFFSET, 20);
- Text(RP, buffer, strlen(buffer));
- if(ein==TRUE) ein=FALSE; else ein=TRUE;
- StilAn();
- Einfuegen();
- }
- Brief()
- {
- br++;
- if(br==2) br=0;
- ZSDisplay();
- MenueUeberwachung(3);
- }
- Auto()
- {
- au++; if(au==2) au=0; ZSDisplay();
- MenueUeberwachung(3);
- }
- Backup()
- {
- if(++bak==2) bak=0; MenueUeberwachung(3);
- if(bak) sprintf(buffer, "Backup mode switched ON!");
- else sprintf(buffer, "Backup mode switched OFF!");
- }
- NamenSetzen(FName)
- UBYTE *FName;
- {
- UBYTE string[80];
-
- StilAus();
- strcpy(string, " ");
- Move(RP, 6, 9);
- Text(RP, string, strlen(string));
- Move(RP, 6, 9);
- Text(RP, FName, strlen(FName));
- strcpy(titel, FName);
- StilAn();
- }
- Einfuegen()
- {
- StilAus();
- if(ein==FALSE) {
- sprintf(buffer, "INS %s %s LN %-5d", BriefText[au+2],
- BriefText[br], s*(SEITE+1)+z+1);
- ein = TRUE;
- }
- else {
- sprintf(buffer, " %s %s LN %-5d", BriefText[au+2],
- BriefText[br],s*(SEITE+1)+z+1);
- ein = FALSE;
- }
- Move(RP, OFFSET, 9);
- Text(RP, buffer, strlen(buffer));
- StilAn();
- MenueUeberwachung(3);
- }
- LadeConfig(fn)
- char *fn;
- {
- struct FileHandle *handle;
- int ende = FALSE, x1, ln, trans, zaehler=0, alt, weiter=FALSE, durch=FALSE;
- UBYTE buf[256];
-
- if(!(handle=Open(fn,MODE_OLDFILE))) return(FALSE);
- FOREVER {
- if(ende) break;
- if((ln = Read(handle,buffer,GROESSE))<GROESSE) {
- Close(handle); ende=TRUE;
- }
- trans = ln; ln=0;
- hops: if(weiter) {
- FOREVER {
- if(ln==trans) break;
- if(buffer[ln++] == LF) { weiter=FALSE; break; }
- }
- if(ln==trans) continue;
- }
- if(zaehler<3 || zaehler==9) { zaehler++; weiter=TRUE; goto hops; }
- if(zaehler<=18 && !durch ) x1=0;
- alt=zaehler;
- do {
- if((buf[x1++] = buffer[ln++]) == 32) {
- buf[--x1] = EOS; zaehler++;
- }
- } while(ln<trans && zaehler==alt);
- durch=FALSE;
- if(zaehler>alt) {
- switch(zaehler) {
- case 4:
- if((MAX=atoin(buf))>ABSMAX) MAX=ABSMAX; else if(MAX<10) MAX=10;
- break; /* Textbreite */
- case 5:
- if((SEITE=atoin(buf)-1)>71) SEITE=71; else if(SEITE<9) SEITE=9;
- break; /* Seitenlänge */
- case 6:
- ein = (atoin(buf)) ? FALSE:TRUE;
- break; /* Einfügen Modus */
- case 7:
- br = (atoin(buf)) ? FALSE:TRUE;
- break; /* Brief Modus */
- case 8:
- au = (atoin(buf)) ? FALSE:TRUE;
- break; /* Auto-Trenn Modus */
- case 9:
- if((schrift=atoin(buf))<0 || schrift>3) schrift=1;
- break; /* Druck Modus */
- case 11:
- if((zg3=atoin(buf))<0) zg3=0;
- break; /* linker Rand */
- case 12:
- if((zg4=atoin(buf))<zg3) zg4=zg3+1;
- break; /* rechter Rand */
- case 13:
- if((zg5=atoin(buf))>72) zg5=72; else if(zg5<10) zg5=10;
- break; /* Papierlänge */
- case 14:
- znum = (atoin(buf)) ? 4:5;
- break; /* Zeilennummerierung */
- case 15:
- snum = (atoin(buf)) ? FALSE:TRUE;
- break; /* Seitennummerierung */
- case 16:
- bak = (atoin(buf)) ? TRUE:FALSE;
- break; /* Backup */
- case 17:
- iconx = atoin(buf);
- break; /* Iconify x-Koordinate */
- case 18:
- icony = atoin(buf);
- break; /* Iconify y-Koordinate */
- case 22:
- if(strlen(buf)==77) strcpy(tab,buf);
- break; /* Tabulator */
- }
- weiter=TRUE; goto hops;
- }
- else durch=TRUE;
- }
- return(TRUE);
- }
- Laden(fn) /* fn = Filename */
- char *fn;
- {
- struct FileHandle *handle;
- register int ln, s1=se, x1=0, z1=ze;
- int trans = KLOTZ-1, zaehler=0, flaggy=FALSE, st=0, txp=FALSE;
- UBYTE *Buf;
-
- if((ln=strlen(fn))>=4) { /* File im Briefformat <- `.txp` - Endung */
- if((fn[ln-1]==80||fn[ln-1]==112)&&(fn[ln-2]==120||fn[ln-2]==88)&&
- (fn[ln-3]==84||fn[ln-3]==116)&&fn[ln-4]==46) txp=TRUE;
- }
- if(!br && !txp) { strcat(fn, ".txp"); txp=TRUE; }
- if(!(handle=Open(fn,MODE_OLDFILE)))
- {
- sprintf(buffer, "Can't open %s!", fn); strcpy(str,buffer);
- Meldung();
- return(FALSE);
- }
- if(!(Buf = (UBYTE *)AllocMem(KLOTZ, MEMF_CLEAR))) {
- Close(handle); return(FALSE);
- }
- FOREVER {
- if((ln = Read(handle,Buf,KLOTZ))<KLOTZ) {
- trans = ln-1;
- if(!ln) { /* EOF */
- Close(handle);
- break;
- }
- }
- zaehler += trans+1; /* Textlänge mitzählen */
- ln = 0;
- lab1: do {
- if((buffer[x1++] = Buf[ln++]) <=9) {
- if(buffer[x1-1]<9) st++; /* Steuercode im Text */
- else { x1--; /* TAB im Text */
- /* if(x1 & 8) { buffer[x1++] = 32; } */
- if(x1<MAX+st) {
- do {
- buffer[x1++] = 32;
- } while((x1 & 15) && x1<MAX+st);
- }
- }
- }
- } while(x1<MAX+st && Buf[ln-1]!=LF && ln<=trans);
- if(Buf[ln-1]==LF || x1==MAX+st || trans<KLOTZ-1) {
- if(Buf[ln-1]==LF) --x1;
- while(x1 && buffer[x1-1] == 32) x1--; /* Rand-Spaces weg damit */
- buffer[x1] = EOS; /* LineFeed oder Zeilenende */
- if(x1==MAX+st) { /* LineFeed und Zeilenende */
- if(ln<KLOTZ) { if(Buf[ln]==LF) ln++; }
- }
- if(!(a[s1] [z1] = (UBYTE *)AllocMem(x1+2, MEMF_CLEAR))) {
- flaggy=TRUE; Close(handle); SpeicherMangel();
- break; /* Out of memory */
- }
- strcpy(a[s1] [z1], buffer);
- a[s1] [z1] [x1+1] = (txp==TRUE) ? st : 0; /* Steuercodes abspei. */
- if(ln>trans && trans<KLOTZ-1) { Close(handle); break; } /* EOF */
- x1=st=0; z1++;
- if(s1==MAS && z1>sei) {
- z1=sei; flaggy=TRUE; Close(handle);
- break;
- }
- if(z1>SEITE) {
- z1=0;
- if(++s1>MAS) {
- s1=MAS; z1=SEITE; flaggy=TRUE; Close(handle);
- break;
- }
- }
- if(ln>trans) continue; /* Weiter von disk lesen */
- goto lab1;
- } /* else Weiter von disk lesen */
- }
- FreeMem(Buf, KLOTZ);
- se = s1; ze = z1;
- if(flaggy == TRUE) {
- if(blo)
- sprintf(buffer, "Out of memory! Block-length: %d!", zaehler);
- else
- sprintf(buffer, "Out of memory! Text-length: %d!",zaehler);
- }
- else {
- if(blo)
- sprintf(str, "Length: %d End of block:", zaehler);
- else
- sprintf(buffer, "Length: %d End: page %d line %d!",
- zaehler, se+1, ze+1);
- }
- if(!blo || flaggy) { strcpy(str, buffer); Meldung(); }
- return(TRUE);
- }
- XPlus()
- {
- if((++x)>MAX) {
- x=MIX; Flagge = TRUE+off; off=0;
- YZPlus();
- Flagge=spe=zpe= FALSE;
- }
- else if(x-MAX1==off) {
- off+=OFF1; SText(); meld=FALSE;
- }
- }
- YZPlus()
- {
- int len=0;
-
- y++;
- if(++z>SEITE) {
- z = 0;
- if(++s>MAS) {
- s=MAS; z=SEITE; y--;
- if(Flagge >= TRUE) x = MAX;
- if(Flagge > TRUE) off=Flagge-1;
- sprintf(buffer, "%s", FehlerText[2]);
- meld = TRUE;
- }
- if(s>se) {
- s = se; z = ze; y=y-1;
- if(Flagge >= TRUE) x = MAX;
- if(Flagge > TRUE) off=Flagge-1;
- sprintf(buffer, "%s", FehlerText[1]);
- meld = TRUE;
- }
- }
- if(s==se){
- if(z>ze) {
- z = ze; y-- ;
- if(Flagge >= TRUE) x = MAX;
- if(Flagge > TRUE) off=Flagge-1;
- sprintf(buffer, "%s", FehlerText[1]);
- meld = TRUE;
- }
- }
- if(Flagge>TRUE && x==MIX) {
- if(y>MAY) y=MAY; Flagge=FALSE; SText(); meld=FALSE;
- }
- if(y>MAY) {
- y = MAY; Hochrollen();
- }
- else if(blo==2) {
- if(BloRel(0)) { y--; if(--z<0) { z=SEITE; s--; } len=1; blo=0; }
- SetAPen(RP, 0); RectFill(RP, 0, y*8-8, RRAND, y*8-1);
- SetAPen(RP, 1);
- Rolling();
- if(len) { y++; blo=2; if(++z>SEITE) { z=0; s++; } }
- }
- }
- XMinus()
- {
- if(--x<MIX) {
- x=MAX;
- if(MAX>=MAX1) off=((MAX-MAX1)/OFF1+1)*OFF1;
- Flagge = TRUE+off;
- YZMinus();
- Flagge=spe=zpe=FALSE;
- }
- else if(x==off) {
- off-=OFF1; SText(); meld=FALSE;
- }
- }
- YZMinus()
- {
- int len=0;
-
- y--;
- if(--z<0) {
- z = SEITE;
- if(--s<0) {
- s=0; z=0; y=MIY;
- if(Flagge>=TRUE) { x=MIX; off=0; }
- sprintf(buffer,"%s", FehlerText[0]);
- meld = TRUE;
- }
- }
- if(Flagge>TRUE && x==MAX) {
- if(y<MIY) y=MIY; Flagge=FALSE; SText(); meld=FALSE;
- }
- if(y<MIY) {
- y=MIY;
- Runterrollen();
- }
- else if(blo==2) {
- if(BloRel(0)) { y++; if(++z>SEITE) { z=0; s++; } len=1; blo=0; }
- SetAPen(RP, 0); RectFill(RP, 0, y*8-8, RRAND, y*8-1);
- SetAPen(RP, 1);
- Rolling();
- if(len) { y--; blo=2; if(--z<0) { z=SEITE; s--; } }
- }
- }
-
- TitelZeile()
- {
- int h, var;
-
- SetAPen(RP, 1);
- Move(RP, 0, 30);
- Draw(RP, 640, 30);
- for(h = 2; h <= 79; h++) {
- var = (h-1) * 8;
- if(h==10||h==20||h==30||h==40||h==50||h==60||h==70) {
- Move(RP, var, 24);
- Draw(RP, var, 30);
- }
- else {
- if(h==5||h==15||h==25||h==35||h==45||h==55||h==65||h==75) {
- Move(RP, var, 26);
- Draw(RP, var, 30);
- }
- else {
- Move(RP, var, 27);
- Draw(RP, var, 30);
- }
- }
- }
- }
- Tabulator(ganz,var,yk)
- int ganz, var, yk;
- {
-
- if(ganz==TRUE) {
- for(var=0; var<=77; var++) {
- if(tab[var]=='1') {
- Move(RP, (var*8)+1, 25); Draw(RP, (var*8)+5, 25);
- Move(RP, (var*8)+3, 26); Draw(RP, (var*8)+3, 28);
- }
- }
- }
- else {
- var = var/8; if(var<0) var=0; if(var>77) var=77;
- if(yk>30 || ganz==2) {
- yk = yk/8+1; if(yk<MIY) yk=MIY; if(yk>MAY) yk=MAY;
- if(ganz!=2) x=var+off+1;
- if(yk>y) {
- for(ganz=y; ganz<yk; ganz++) YZPlus();
- }
- else if(y>yk) {
- for(ganz=y; ganz>yk; ganz--) YZMinus();
- }
- ZSDisplay(); /* y=yk */
- }
- else {
- if(tab[var]=='1') {
- tab[var]='0';
- SetAPen(RP, 0);
- RectFill(RP, (var*8)+1,25, (var*8)+5, 28);
- SetAPen(RP, 1);
- }
- else {
- tab[var]='1';
- Move(RP, (var*8)+1, 25); Draw(RP, (var*8)+5, 25);
- Move(RP, (var*8)+3, 26); Draw(RP, (var*8)+3, 28);
- }
- }
- }
- }
-
- ZSDisplay()
- {
- StilAus();
- sprintf(buffer, "PGE %-3d LIN %-3d COL %-3d", s+1, z+1, x);
- Move(RP, OFFSET, 20);
- Text(RP, buffer, strlen(buffer));
- sprintf(buffer, " ");
- Move(RP, 6, 20);
- Text(RP, buffer, strlen(buffer));
- if(ein==TRUE) ein=FALSE; else ein=TRUE;
- StilAn();
- Einfuegen();
- }
-
- Schluss()
- {
- register int si, zi;
- int i;
-
- if(se>=0) {
- for(si=0; si<=se; si++) {
- for(zi=0; zi<=SEITE; zi++) {
- FreeMem(a[si] [zi], SL(si,zi)+2);
- if(si==se && zi==ze) break;
- }
- }
- }
- ReleaseFileSelect();
- if(Fenster->MenuStrip && icfy) ClearMenuStrip(Fenster, &Menus[0]);
- if(Fenster) CloseWindow(Fenster);
- if(Scheibe && icfy) CloseScreen(Scheibe);
- if(ConsoleDevice) CloseDevice(&ConsoleMsg);
- if(DosBase) CloseLibrary(DosBase);
- if(GfxBase) CloseLibrary(GfxBase);
- if(IntuitionBase) CloseLibrary(IntuitionBase);
- }
- Oeffnen()
- {
- if(!(IntuitionBase=(struct IntuitionBase *)
- OpenLibrary("intuition.library",INTUITION_REV)))
- Und_tschuess("Can't open intuition-library!\n");
-
- if(!(GfxBase=(struct GfxBase *)
- OpenLibrary("graphics.library",GRAPHICS_REV)))
- Und_tschuess("Can't open graphics-library!\n");
-
- if(!(DosBase=(struct DosLibrary *) OpenLibrary("dos.library",0)))
- Und_tschuess("Can't open dos-library!\n");
-
- if(OpenReadConsole() != 0)
- Und_tschuess("Can't open console.device!\n");
- return(TRUE);
- }
- Und_tschuess(bye)
- char *bye;
- {
- if(DosBase) CloseLibrary(DosBase);
- if(GfxBase) CloseLibrary(GfxBase);
- if(IntuitionBase) CloseLibrary(IntuitionBase);
- printf(bye);
- exit(FALSE);
- }
-