[comp.sources.misc] v18i057: ql_tools - programs for SINCLAIR QL, Part01/01

Beppe (Giuseppe Zanetti <beppe@alessia.dei.unipd.it>) (04/19/91)

Submitted-by: Beppe(Giuseppe Zanetti <beppe@alessia.dei.unipd.it>
Posting-number: Volume 18, Issue 57
Archive-name: ql_tools/part01

The following are 4 programs for the Sinclair QL.

   Program 1: SuperBasic to Pascal Converter for Sinclair QL
   Program 2: QL Interlaced-like colors effects.
   Program 3: QL screens reader for MS-DOS computers.
   Program 4: Buffin & Serbuffer for QL

Please refer to the Readme for more details.

This is a shar file with three uuencoded files included.
After unsharing this posting, 

    for i in *.uu; do uudecode $i; done
    rm *.uu

beppe@alessia.dei.unipd.it
----------------------------
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then feed it
# into a shell via "sh file" or similar.  To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix@uunet.uu.net if you want that tool.
# Contents:  BOOT.BTP BUFFIN.ASM COLORS.ASM INDENTER.BAS NEWQL.C Readme
#   SERBUFFE.ASM TEST1.PAS TEST2.PAS TEXTPROC.BAS coder.bas.uu
#   rlan.bas.uu token.bas.uu
# Wrapped by kent@sparky on Sat Apr 13 17:37:36 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
echo If this archive is complete, you will see the following message:
echo '          "shar: End of archive 1 (of 1)."'
if test -f 'BOOT.BTP' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'BOOT.BTP'\"
else
  echo shar: Extracting \"'BOOT.BTP'\" \(779 characters\)
  sed "s/^X//" >'BOOT.BTP' <<'END_OF_FILE'
X100 MODE 4
X110 OPEN#1,CON
X120 BORDER 1,5
X130 INK 7:PAPER 0
X140 CSIZE 3,1:INK 4
X150 PRINT 'PASS';:INK 7:PRINT 'PORT:';:CSIZE 2,0:PRINT 'THE BASIC TO PASCAL PORT'\\\:INK 4
X160 PRINT '       (C) 1989 BY HTAT SOFT'\\
X170 PRINT '               by GZ'\\\
X180 CSIZE 2,0
X190 INK 7:PRINT '             MAIN MENU'\\
X200 PRINT '1) TOKENIZE PROGRAM'
X210 PRINT '2) CREATE CODE'
X220 PRINT '3) DIR OF FLP1_'
X225 PRINT '4) TO BORLAND TURBOPASCAL'
X230 PRINT '5) END OF JOB'
X240 PRINT \'MAKE YOUR CHOICE:'
X250 A$=INKEY$(-1):IF A$='' THEN GO TO 250
X260 IF A$='1' THEN EXEC_W FLP1_TOKEN_TASK:RUN
X270 IF A$='2' THEN EXEC_W FLP1_CODER_TASK:RUN
X280 IF A$='3' THEN CLS:DIR FLP1_:PAUSE:RUN
X285 IF A$='4' THEN EXEC_W FLP1_TOBORLAND_TASK:RUN
X290 IF A$='5' THEN CLS:PRINT 'BYE, TANK YOU':STOP
X300 GO TO 250
END_OF_FILE
  if test 779 -ne `wc -c <'BOOT.BTP'`; then
    echo shar: \"'BOOT.BTP'\" unpacked with wrong size!
  fi
  # end of 'BOOT.BTP'
fi
if test -f 'BUFFIN.ASM' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'BUFFIN.ASM'\"
else
  echo shar: Extracting \"'BUFFIN.ASM'\" \(2044 characters\)
  sed "s/^X//" >'BUFFIN.ASM' <<'END_OF_FILE'
X; << BUFFIN >> FUNZIONE BASIC PER LEGGERE UN DATO CONTENUTO IN UN BUFFER
X; in 163840 e' contenuto l' indirizzo del Buffer: RESPR(10000)
X
X; Copyright by Giuseppe Zanetti
X
X; Dichiarazione costanti
X
XBV_RIP    EQU       $58
X
X; linkaggio funzione
X
XSTART     LEA       PROCDEF,A1          ; a1 punta tabella definizione
X          MOVE.W    $110,A2             ;BP.INIT
X          JSR       (A2)
X
X          CLR.L     D0                  ;no errors
X          RTS                           ;torna al basic
X
X; tabella definizione proc/fn
X
XPROCDEF   DC.W      0                   ;0 procedure
X          DC.W      0                   ;fine procs
X          DC.W      1                   ;1 funzione
X          DC.W      ROUTINE-*           ;punta all' inizio
X          DC.B      6                   ;numero caratteri nome
X          DC.B      'BUFFIN'            ;nome
X          DC.B      0                   ;allinea
X          DC.W      0                   ;fine fn
X
X          DC.B      '(C) by GZ'         ;Copyright by Giuseppe Zanetti
X
X; codice macchina funzione
X
XROUTINE   MOVE.L    #163840,A1          ;punt. buffer
X          MOVE.L    (A1),A2             ;indirizzo del  buffer
X          MOVE.W    $E2,A1              ;entry IO.QOUT
X          JSR       (A1)                ;legge un byte
X          CMP.L     #0,D0               ;errori ?
X          BEQ       TUTTO_OK            ;no: continua
X
X          MOVE.W    #-1,D1              ;si: restituisci il valore 0
X
X;ritorna al basic un valore intero
X;il valore del bytes, se lo legge
X;oppure -1 se non ci sono caratteri da leggere
X
XTUTTO_OK  MOVE.L    BV_RIP(A6),A1       ;facciamo spazio nel buffer
X          SUBQ      #2,A1               ;2 bytes per un intero
X          MOVE.L    A1,BV_RIP(A6)       ;ripristino il puntatore allo stack aritmetico
X          MOVE.W    D1,(A6,A1.L)        ;metto il valore nello stack
X          MOVEQ     #3,D4               ;dico al basic che e' un intero
X
X          MOVEQ     #0,D0               ;no errors
X          RTS                           ;torno al basic
X
XEND
X
END_OF_FILE
  if test 2044 -ne `wc -c <'BUFFIN.ASM'`; then
    echo shar: \"'BUFFIN.ASM'\" unpacked with wrong size!
  fi
  # end of 'BUFFIN.ASM'
fi
if test -f 'COLORS.ASM' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'COLORS.ASM'\"
else
  echo shar: Extracting \"'COLORS.ASM'\" \(1005 characters\)
  sed "s/^X//" >'COLORS.ASM' <<'END_OF_FILE'
X; alterna i due screen 50 volte al secondo
X
X; riserva lo screen
X
XSTART     MOVEQ     #$18,d0             ;MT_ALCHP
X          MOVE.L    #$6BE0,D1
X          TRAP      #$1
X          TST.L     D0
X          BNE.S     EXIT
X
X
X; COLLEGA UN GESTORE DELLE INTERRUZIONI
X
X          LEA       INT_SERVE(PC),A1
X          MOVEQ     #$1C,D0                        ;MT_POLL
X          LEA       INT_LINK(PC),A0
X          MOVE.L    A1,4(A0)
X          TRAP      #1
X
XEXIT      RTS
X
X; INTERRUPT
X
XINT_LINK  DS.L      2
XINT_SERVE MOVE.L    #163840,A1
X          MOVE.L    #98683,A2
X          MOVE.B    #8,0(A2)            ;MODE 8 SCREEN 1
X          MOVE.B    0(A1),D1
X          CMP.L     #8,D1
X          BNE.S     POKE_8
X          MOVE.B    #136,D2
X          BRA.S     CONTINUA
XPOKE_8    MOVE.B    #8,D2
XCONTINUA  MOVE.W    #1360,D0            ;LOOP DI RITARDO
X          DBRA      D0,*                ;
X          MOVE.B    D2,0(A2)            ;CAMBIA SCREEN
X          MOVE.B    D2,0(A1)            ;E VARIABILE
X          RTS
XEND
X
END_OF_FILE
  if test 1005 -ne `wc -c <'COLORS.ASM'`; then
    echo shar: \"'COLORS.ASM'\" unpacked with wrong size!
  fi
  # end of 'COLORS.ASM'
fi
if test -f 'INDENTER.BAS' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'INDENTER.BAS'\"
else
  echo shar: Extracting \"'INDENTER.BAS'\" \(1215 characters\)
  sed "s/^X//" >'INDENTER.BAS' <<'END_OF_FILE'
X100 MODE 4
X110 OPEN#1,CON
X120 PAPER 0:INK 4:CLS
X130 CSIZE 3,1
X140 PRINT 'PASS';
X150 INK 7:PRINT 'PORT INDENTER';
X160 CSIZE 1,0:INK 4:PRINT '(C)1989 BY HTAT'\\\\\\
X170 CSIZE 2,0:INK 7
X180 PRINT 'INPUT FILENAME WITHOUT FLP1_..._PAS'\\'?>';
X190 INPUT SF$:IF SF$='' THEN GO TO 120
X200 CLS:CSIZE 0,1
X210 OPEN_IN#3,'FLP1_'&SF$&'_PAS'
X220 DELETE 'FLP1_'&SF$&'_ID_PAS'
X230 OPEN_NEW#4,'FLP1_'&SF$&'_ID_PAS'
X240 :
X250 S=0:L=0:B=0
X260 REPeat LOOP
X270 IF EOF(#3) THEN EXIT LOOP
X280 INPUT#3,A$:P=0:D=0:L=L+1
X290 IF ('PROGRAM' INSTR A$)=1 THEN S=0:P=0:D=2
X300 IF ('LABEL' INSTR A$)=1 THEN S=4:P=0:D=2
X310 IF ('VAR' INSTR A$)=1 THEN S=4:P=0:D=2
X320 IF ('CONST' INSTR A$)=1 THEN S=4:P=0:D=2
X330 IF ('TYPE' INSTR A$)=1 THEN S=4:P=0:D=2
X340 IF ('BEGIN' INSTR A$)=1 THEN P=1:D=1:B=B+1
X350 IF ('BEGIN (* THE PROGRAM *)' INSTR A$)=1 THEN S=0:P=0:D=1
X360 IF (': (* GOTO' INSTR A$) THEN D=S:S=0:P=0
X370 IF ('END;' INSTR A$) THEN P=-1:D=-1
X380 IF ('END.' INSTR A$) THEN S=0:P=0:D=1
X400 :
X410 S=S+P
X415 L$=L:L$=L$&'      ':PRINT L$(1 TO 4);' |';
X420 PRINT#4,FILL$(' ',S);A$:PRINT FILL$(' ',S);A$
X430 S=S+D
X440 END REPeat LOOP
X450 CLOSE#3
X460 CLOSE#4
X470 CSIZE 2,0
X480 PRINT \\\'END OF INDENTATION'\\B;' STRUCTURE(S)'\\L;' LINES OF CODE'\\\
END_OF_FILE
  if test 1215 -ne `wc -c <'INDENTER.BAS'`; then
    echo shar: \"'INDENTER.BAS'\" unpacked with wrong size!
  fi
  # end of 'INDENTER.BAS'
fi
if test -f 'NEWQL.C' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'NEWQL.C'\"
else
  echo shar: Extracting \"'NEWQL.C'\" \(3201 characters\)
  sed "s/^X//" >'NEWQL.C' <<'END_OF_FILE'
X/* lettore di schermate del QL        */
X/* Copyright 1990 by Giuseppe Zanetti */
X/* telefono 049-638225 Padova (Italy) */
X
X#define		VERSIONE	"QLSCR VERSION 2.00 \n=============\n\n"
X
X/* grafica in EGA  M&P 91-92  pag 128 */
X/* per QL screen reader               */
X
X#define	VIDEO	0x10
X#include	<stdio.h>
X#include	<dos.h>
X#include	<string.h>
X
XModo(modalita,colonne,pagina)
Xint *modalita, *colonne, *pagina;
X{
X	union REGS regs;
X	regs.h.ah = 15;
X	int86(VIDEO,&regs,&regs);
X	*modalita=regs.h.al;
X	*colonne=regs.h.ah;
X	*pagina=regs.h.bh;
X}
X
XSetModo(modalita)
Xint modalita;
X{
X	union REGS regs;
X	regs.h.ah=0;
X	regs.h.al=modalita;
X	int86(VIDEO,&regs,&regs);
X}
X
XEgaRegistro(indirizzo,valore)
Xint indirizzo,valore;
X{
X	outp(0x3CE,indirizzo);
X	outp(0x3CF,valore);
X}
X
XEgaPunto(x,y,colore,booleano)
Xint x,y,colore,booleano;
X{
X	unsigned char bool=0x80;
X	char far *base;
X
X	base=(char far *)(0xA0000000+((long)y*80+((long)x/8)));
X	bool=bool >> (x%8);
X	EgaRegistro(0,colore);
X	EgaRegistro(1,0x0F);
X	EgaRegistro(3,booleano);
X	EgaRegistro(8,bool);
X	*base=*base & 0xFF;
X}
X
XFineEga()
X{
X	EgaRegistro(0,0);
X	EgaRegistro(1,0);
X	EgaRegistro(3,0);
X	EgaRegistro(8,0xFF);
X}
X
Xmain(argc,argv)
Xint	argc;
Xchar	*argv[];
X{
X	FILE	*ql;
X	int	x,y,b;
X	unsigned char	h,l,c;
X	int	mode,ega,lines;
X
X	int color[]={0,1,4,3,2,5,14,15};
X
X
X	if (argc<2)
X		{ fprintf(stderr,VERSIONE);
X		  fprintf(stderr,"QL scr reader: use QLSCR file [4|8|16] [e|v]\n");
X		  fprintf(stderr,"                              ql mode  ega mode\n");
X		  fprintf(stderr,"\nQL screen reader by Giuseppe Zanetti tel. 049-638225 Abano Terme, Padova (Italy)\n\n");
X		  fprintf(stderr,"4 ... use 4 colors mode\n8 ... use 8 colors mode\n16 .. use double size 8 colors mode\n");
X		  fprintf(stderr,"\n\n/e .. EGA (16 colors)\n/v .. VGA (16 colors)\n\n");
X		  fprintf(stderr,"This program is SHAREWARE: copy for non amatorial use is prohibited !!!\n\n");
X		  exit (1);
X		}
X
X	if (argc>1)
X		mode=atoi(argv[2]);
X
X	if ((mode != 4) && (mode != 8) && (mode != 16))
X		mode = 4;
X
X	if (argc>2)
X		{ if ((strcmp(argv[3],"/v") == 0) || (strcmp(argv[3],"-v") == 0))
X			ega=18;
X		  else  if ((strcmp(argv[3],"/e") == 0) || (strcmp(argv[3],"-e") == 0))
X				ega=16;
X		}
X
X	if ((ega != 18) && (ega != 16))
X		ega=16;
X
X	if (ega==6)
X		lines=200;
X	else	lines=256;
X
X	ql=fopen (argv[1],"rb");
X
X	if (ql == NULL)
X		{ fprintf(stderr,"QL scr reader: not valid file\n");
X		  exit (1);
X		}
X
X	SetModo(ega);
X
Xif (mode==4)
X	{ for (y=0;(y<lines) && (!(feof(ql)));y++)
X		for (x=0;x<64;x++)
X			{ h=fgetc(ql);
X			  l=fgetc(ql);
X			  	for (b=7;b>=0;b--)
X					{ c = (h & 0x01)*2 + (l & 0x01);
X					  EgaPunto (x*8+b,y,color[c*2+1*(c==3)],0x18);
X					  h>>=1;
X					  l>>=1;
X					}
X			}
X	}
X
Xif ((mode==8) || (mode == 16))
X	{ for (y=0;(y<lines) && (!(feof(ql)));y++)
X		for (x=0;x<64;x++)
X			{ h=fgetc(ql);
X			  l=fgetc(ql);
X			  	for (b=3;b>=0;b--)
X					{ c = (h & 0x01)*0 + (l & 0x01);
X					  h>>=1;
X					  l>>=1;
X					  c = c + (h & 0x01)*4 + (l & 0x01)*2;
X					  if (mode==8)
X						EgaPunto (x*4+b,y,color[c],0x18);
X					  else 	{ EgaPunto ((x*4+b)*2,y,color[c],0x18);
X						  EgaPunto ((x*4+b)*2+1,y,color[c],0x18);
X						}
X					  h>>=1;
X					  l>>=1;
X					}
X			}
X	}
X
X	fclose (ql);
X	getch();
X	FineEga();
X	SetModo(2);
X
X}
END_OF_FILE
  if test 3201 -ne `wc -c <'NEWQL.C'`; then
    echo shar: \"'NEWQL.C'\" unpacked with wrong size!
  fi
  # end of 'NEWQL.C'
fi
if test -f 'Readme' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Readme'\"
else
  echo shar: Extracting \"'Readme'\" \(2398 characters\)
  sed "s/^X//" >'Readme' <<'END_OF_FILE'
X----------------------------------------------------------
XProgram 1: SuperBasic to Pascal Converter for Sinclair QL
X
XThis simple program converts SB to Pascal.
X
XFiles: 
X    BOOT.BFP     INDENTER.BAS     CODER.BAS
X    TEST1.PAS    TEST2.PAS        TOBORLAN.BAS 
X    TOKEN.BAS
X
X----------------------------------------------------------
XProgram 2: QL Interlaced-like colors effects.
X
XThis program alternate QL's screens 1 and 2 50 times 
Xper second.  The resulting effect is too 16 colors.
XFlickering is normal.
X
XFiles: 
X    COLORS.ASM
X
X----------------------------------------------------------
XProgram 3: QL screens reader for MS-DOS computers.
X
XThis is the Turbo C source file of my QL screens reader.
XEGA or VGA card is required.
XThis program works in both ql's modes (4-8 colors).
XPlease redistribuite this program complete and unmodified !!!
X
XFiles: 
X    NEWQL.C
X	
X----------------------------------------------------------
XProgram 4: Buffin & Serbuffer for QL
X
XSerbuff is a RS232 full multitasking buffer.
Xbuffin() read caracters from Serbuff buffer.
X
XFiles: 
X    BUFFIN.ASM     SERBUFFE.ASM
X
X-----------------------------------------------------
XProgram 4: TEXTPROCESSOR split Quill files in Columns and justify text.
X
XFiles: 
X    TEXTPROC.BAS
X-----------------------------------------------------
X
XBeppe's Shareware Software Production
X
XThis program is shareware: if you want send me your contribution.
X
XGiuseppe Zanetti, via Vergani,11 - 35031 Abano Terme (Padova) ITALY
X
Xphone ++39-(0)49-638225 (italian language only, sorry)
X
XE-mail: INTERNET beppe@alessia.dei.unipd.it  (130.186.12.101)
X
XThere are other programs available on request. A list of them 
Xappears below.
X
XSoftware List
X=============
X
XTitle		Computer	Description
X------------------------------------------------------------------------------
XNEWQL		MS-DOS		Read QL screens (not disks !) on EGA/VGA
XCUT2QL		MS-DOS		Convert from Dr Halo *.cut to QL bit mapped
XFANTASTIC-OCR	MS-DOS		PD OCR for ScanMan+ and TIFF files
XIMPRESS DTP	SINCLAIR QL	Superbe DTP for 128K QL (with fonts & clip art)
XHTPAINTER	SINCLAIR QL	The natural complement for Impress Dtp
XBIGCOPIER	SINCLAIR QL	Simplify your live in files management
XSOCCER MANAGER	SINCLAIR QL	Italian Soccer Championship
XCBM2QL		SINCLAIR QL	Convert screens from Commodore C=64
XQSCANNED	SINCLAIR QL	Clip Art from ScanMan+ converted to QL
XISCANNED	MS-DOS		QSCANNED for MS-DOS (TIFF)
X
END_OF_FILE
  if test 2398 -ne `wc -c <'Readme'`; then
    echo shar: \"'Readme'\" unpacked with wrong size!
  fi
  # end of 'Readme'
fi
if test -f 'SERBUFFE.ASM' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'SERBUFFE.ASM'\"
else
  echo shar: Extracting \"'SERBUFFE.ASM'\" \(1941 characters\)
  sed "s/^X//" >'SERBUFFE.ASM' <<'END_OF_FILE'
X; TASK PER GESTIRE UN BUFFER SERIALE SER2
X; in 163840 e' contenuto l' indirizzo del Buffer: RESPR(10000)
X
X; Copyright by Giuseppe Zanetti
X
X
X; BLOCCO IDENTIFICAZIONE JOB
X
XSTART     BRA.S     START_TSK           ;salta all' inizio del Job
X          DC.L      0                   ;inutilizzata
X          DC.W      $4AFB               ;codice riconoscimento task
X          DC.W      9                   ;num caratteri nome
X          DC.B      'SERBUFFER',0       ;nome+allineamento
X
X          DC.B      '(C)1989 by GZ'     ;copyright
X
X; setta priorita' del Job
X
XSTART_TSK MOVEQ     #MT_PRIOR,D0        ;setta priorita' Job
X          MOVEQ     #-1,D1              ;Job padre:IO
X          MOVEQ     #30,D2              ;priorita' 30
X          trap      #1                  ;esegui
X
X; alloca un buffer da 10'000 bytes all' ind puntato da 163840
X
X          MOVE.L    #10000,D1           ;buffer da 10000 bytes
X          MOVE.L    #163840,A1          ;indirizzo del puntatore al buffer
X          MOVE.L    (A1),A2             ;indirizzo buffer in A2
X          MOVE.W    $DC,A1              ;entry IO.QSET
X          JSR       (A1)                ;crea la coda
X
X; LOOP che legge dal buffer della SER2 e trasferisce nel mio Buffer
X
XLOOP      MOVE.L    #163996,A1          ;punt. coda ricezione SER2
X          MOVE.L    (A1),A2             ;indirizzo della coda
X          MOVE.W    $E2,A1              ;entry IO.QOUT
X          JSR       (A1)                ;legge un bytes da SER2
X          CMP.L     #0,D0               ;errori ?
X          BNE       LOOP                ;si, rileggi
X
X; scrive il bytes (che e' in D1) nella mia coda
X
X
XLOOP1     MOVE.L    #163840,A1          ;punt. alla mia coda
X          MOVE.L    (A1),A2             ;indirizzo della coda
X          MOVE.W    $E0,A1              ;entry IO.QIN
X          JSR       (A1)                ;scrive il bytes nel buffer
X
X; ripete il ciclo
X
X          BRA       LOOP                ;ripeti
X
XEND
X
END_OF_FILE
  if test 1941 -ne `wc -c <'SERBUFFE.ASM'`; then
    echo shar: \"'SERBUFFE.ASM'\" unpacked with wrong size!
  fi
  # end of 'SERBUFFE.ASM'
fi
if test -f 'TEST1.PAS' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'TEST1.PAS'\"
else
  echo shar: Extracting \"'TEST1.PAS'\" \(536 characters\)
  sed "s/^X//" >'TEST1.PAS' <<'END_OF_FILE'
XPROGRAM test1(input,output);
X
XTYPE
XSTRING = ARRAY [1..255] OF CHAR;
X
XVAR
Xfib1 : REAL;
Xfib2 : REAL;
Xfib : REAL;
Xt : INTEGER;
X
XBEGIN (* THE PROGRAM *)
X
X(* COMPILER IS (C)1989 BY HTAT SOFT *)
X
X
XWRITE (CHR(26));
XWRITELN ('Questo programma calcola i primi 10 numeri di Fibonacci.');
XWRITELN;
XWRITE (CHR(26));
Xfib1 := 1;
Xfib2 := 1;
Xfib := 0;
XWRITELN (fib1);
XWRITELN (fib2);
X
XFOR t := TRUNC(1) TO  TRUNC(10) DO 
XBEGIN (* FOR LOOP *)
Xfib := fib1+fib2;
Xfib1 := fib2;
Xfib2 := fib;
XWRITELN (fib);
XEND; (* LOOP t *)
X
X
XEND. (* OF PROGRAM BY HTAT *)
END_OF_FILE
  if test 536 -ne `wc -c <'TEST1.PAS'`; then
    echo shar: \"'TEST1.PAS'\" unpacked with wrong size!
  fi
  # end of 'TEST1.PAS'
fi
if test -f 'TEST2.PAS' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'TEST2.PAS'\"
else
  echo shar: Extracting \"'TEST2.PAS'\" \(536 characters\)
  sed "s/^X//" >'TEST2.PAS' <<'END_OF_FILE'
XPROGRAM test2(input,output);
X
XTYPE
XSTRING = ARRAY [1..255] OF CHAR;
X
XVAR
Xfib1 : REAL;
Xfib2 : REAL;
Xfib : REAL;
Xt : INTEGER;
X
XBEGIN (* THE PROGRAM *)
X
X(* COMPILER IS (C)1989 BY HTAT SOFT *)
X
X
XWRITE (CHR(26));
XWRITELN ('Questo programma calcola i primi 10 numeri di Fibonacci.');
XWRITELN;
XWRITE (CHR(26));
Xfib1 := 1;
Xfib2 := 1;
Xfib := 0;
XWRITELN (fib1);
XWRITELN (fib2);
X
XFOR t := TRUNC(1) TO  TRUNC(10) DO 
XBEGIN (* FOR LOOP *)
Xfib := fib1+fib2;
Xfib1 := fib2;
Xfib2 := fib;
XWRITELN (fib);
XEND; (* LOOP t *)
X
X
XEND. (* OF PROGRAM BY HTAT *)
END_OF_FILE
  if test 536 -ne `wc -c <'TEST2.PAS'`; then
    echo shar: \"'TEST2.PAS'\" unpacked with wrong size!
  fi
  # end of 'TEST2.PAS'
fi
if test -f 'TEXTPROC.BAS' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'TEXTPROC.BAS'\"
else
  echo shar: Extracting \"'TEXTPROC.BAS'\" \(5591 characters\)
  sed "s/^X//" >'TEXTPROC.BAS' <<'END_OF_FILE'
X100 REMark <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
X110 REMark << DOC converter by  Giuseppe Zanetti <<
X120 REMark << phone 049/638225 Abano Terme ITALY <<
X130 REMark <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
X140 :
X150 :
X160 MODE 4
X170 WINDOW 512,256,0,0
X180 PAPER 0:INK 7
X190 CLS
X200 WINDOW 484,204,(512-484)/2,0
X210 PAPER 0:INK 7:CLS
X220 PAPER 2
X230 PRINT "RealText Processor versione 4.0                    (C)1989-90 by Project Future "\\
X240 PAPER 0
X250 WINDOW 484,14,(512-484)/2,12:CLS:INK 2:FOR t=1 TO 8:PRINT "....:....";t;:NEXT t:INK 7
X260 WINDOW 484,204-20,(512-484)/2,25
X270 PRINT \\
X280 AT 2,0:PRINT "Device ";:UNDER 1:PRINT "sorgente:";:UNDER 0
X290 INK 2:INPUT DEV$:INK 7
X300 IF LEN(DEV$)<>5 THEN BEEP 1000,1:GO TO 280
X310 IF DEV$ INSTR "flp1_flp2_mdv1_mdv2_win1_win2_"=0 THEN BEEP 1000,1:GO TO 280
X320 AT 4,0:PRINT "Device ";:UNDER 1:PRINT "destinazione:";:UNDER 0
X330 INK 2:INPUT DEST$:INK 7
X340 IF DEST$=='scr' THEN GO TO 370
X350 IF LEN(DEST$)<>5 THEN BEEP 1000,1:GO TO 320
X360 IF DEST$ INSTR "flp1_flp2_mdv1_mdv2_win1_win2_ram1_ram2_scr"=0 THEN BEEP 1000,1:GO TO 320
X370 AT 6,0:PRINT "Nome ";:UNDER 1:PRINT "file (senza _DOC):";:UNDER 0
X380 INK 2:INPUT FILE$:INK 7
X390 IF FILE$="" THEN BEEP 1000,1:GO TO 370
X400 IF DEST$ INSTR "flp1_flp2_mdv1_mdv2_win1_win2_ram1_ram2_scr"=0 THEN BEEP 1000,1:GO TO 320
X410 :
X420 CLS:AT 2,0:INPUT 'Larghezza testo      :';N$:MAX='0'&N$
X430 IF MAX<30  OR MAX>80 THEN GO TO 420
X440 AT 4,0:INPUT 'Spazio tra le linee  :';N$:GAP='0'&N$
X450 IF GAP<0 OR GAP>3 THEN BEEP 1000,1:GO TO 440
X460 GAP$=FILL$(CHR$(10),GAP)
X470 AT 6,0:INPUT 'IGNORA RETURNS (N)  :';RE$
X480 AT 8,0:PRINT 'GIUSTIFICAZIONE (Left,Indent,Right,All)   :':J$=INKEY$(-1):IF NOT(J$ INSTR 'LIRA') THEN GO TO 480
X490 :
X500 CLS
X510 PRINT 'CONVERTO ';DEV$;FILE$;'_DOC  A ';
X520 IF DEST$=='scr' THEN PRINT 'SCR':ELSE PRINT DEV$;DEST$;'_LIS'
X530 PRINT \'COLONNE:';MAX,'GIUSTIFICAZIONE A ';
X540 IF J$=='L' THEN PRINT 'SINISTRA'
X550 IF J$=='I' THEN PRINT 'INDENT'
X560 IF J$=='R' THEN PRINT 'DESTRA'
X570 IF J$=='A' THEN PRINT 'DESTRA&SINISTRA'
X580 PRINT  'SPAZI   :';GAP,'RETURNS  ';
X590 IF RE$=='S' THEN PRINT 'IGNORATI':ELSE PRINT 'NON IGNORATI'
X600 PRINT \\\:PAUSE 400:CLS
X610 :
X620 OPEN_IN#3,DEV$&FILE$&'_DOC'
X630 IF NOT(DEST$=='scr') THEN 
X640  DELETE DEV$&FILE$&'_LIS'
X650  OPEN_NEW#4,DEST$&FILE$&'_LIS'
X660 END IF 
X670 RIGHE=0
X680 FOR I=1 TO 30:W$=INKEY$(#3)
X690 L$='':CA=256
X700 REPeat MAIN
X710 IF CA=14 THEN BEEP 1000,0:CLOSE_FILES:COLONNE:RUN
X720 W$=''
X730  REPeat LOOP
X737  IF EOF(#3) THEN CLOSE_FILES:COLONNE:RUN
X740  CA=CODE(INKEY$(#3))
X750 IF INKEY$(#1)=CHR$(27) THEN CA=14
X760   SELect ON CA
X770    =33 TO 256:W$=W$&CHR$(CA)
X780    =10,13,0:IF NOT(RE$=='Y') THEN CA=0:EXIT LOOP:ELSE W$=W$&' ':CA=256:EXIT LOOP
X790    =14:EXIT LOOP
X800    =REMAINDER :W$=W$&' ':EXIT LOOP
X810   END SELect 
X820  END REPeat LOOP
X830 IF (LEN(L$)+LEN(W$))>MAX THEN L$=DELSPC$(L$):PPRINT L$:L$=W$:ELSE L$=L$&W$
X840 IF CA=0 THEN L$=DELSPC$(L$):FPRINT L$:L$=''
X850 AT#0,0,0:PRINT#0,RIGHE
X860 END REPeat MAIN
X870 :
X880 :
X890 DEFine FuNction DELSPC$(T$)
X900 LOCal R$,LOOP,F
X910 R$=T$
X920 REPeat LOOP
X930 F=0
X940 IF R$='' THEN EXIT LOOP
X950 IF R$(1)=' ' THEN R$=R$(2 TO ):F=1
X960 IF R$(LEN(R$))=' ' THEN R$=R$(1 TO LEN(R$)-1):F=1
X970 IF NOT(F) THEN EXIT LOOP
X980 END REPeat LOOP
X990 RETurn R$
X1000 END DEFine DELSPC$
X1010 :
X1020 DEFine PROCedure PPRINT(T$)
X1030 LOCal R$,S,A$,I
X1040  IF J$=='L' THEN R$=T$:GO TO 1150
X1050  IF J$=='I' THEN R$=FILL$(' ',(MAX-LEN(T$))/2)&T$:GO TO 1150
X1060  IF J$=='R' THEN R$=FILL$(' ',MAX-LEN(T$))&T$:GO TO 1150
X1070 IF NOT(' ' INSTR T$) THEN R$=T$:GO TO 1150
X1080 R$='':A$=T$
X1090 S=MAX-LEN(A$)
X1100 FOR I=1 TO LEN(A$)
X1110  R$=R$&A$(I)
X1120   IF A$(I)=' ' AND S>0 THEN S=S-1:R$=R$&' '
X1130 NEXT I
X1140 IF LEN(R$)<MAX THEN A$=R$:R$='':GO TO 1090
X1150 R$=R$&GAP$
X1160 PRINT R$
X1170 IF NOT(DEST$=='scr') THEN PRINT#4,R$
X1180 RIGHE=RIGHE+1
X1190 END DEFine PPRINT
X1200 :
X1210 DEFine PROCedure FPRINT(T$)
X1220 LOCal R$
X1230 IF J$=='L' THEN R$=T$
X1240 IF J$=='I' THEN R$=FILL$(' ',(MAX-LEN(T$))/2)&T$
X1250 IF J$=='R' THEN R$=FILL$(' ',MAX-LEN(T$))&T$
X1260 IF J$=='A' THEN R$=T$
X1270 R$=R$&GAP$
X1280 PRINT R$
X1290 IF NOT(DEST$=='scr') THEN PRINT#4,R$
X1300 RIGHE=RIGHE+1
X1310 END DEFine FPRINT
X1320 :
X1330 DEFine PROCedure CLOSE_FILES
X1340 CLOSE#3
X1350 IF NOT(DEST$=='scr') THEN CLOSE#4
X1360 PRINT \\\'BYE'\\
X1370 END DEFine CLOSE_FILES
X1380 :
X1390 :
X1400 :
X1410 DEFine PROCedure LOOK(F$)
X1420 OPEN_IN#3,'FLP1_'&F$&'_DOC':CLS
X1430 FOR L=1 TO 100000
X1440 IF EOF(#3) THEN CLOSE#3:STOP
X1450 A$=INKEY$(#3)
X1460 IF CODE(A$)<32 THEN PRINT \\L,A$,CODE(A$)\\:ELSE PRINT A$;
X1470 END FOR L
X1480 END DEFine LOOK
X1490 :
X1500 DEFine PROCedure COLONNE
X1510 LOCal LUN,GAP,COL,A$,PAGE
X1520 CLS
X1530 IF DEST$=='SCR' THEN PRINT 'ERRORE':PAUSE 50:GO TO 1750
X1540 INPUT 'SPAZIO FRA LE COLONNE:';GAP
X1550 LUN=(RIGHE+1) DIV 2
X1560 PRINT 'LUNGHEZZA PAGINA:';LUN
X1570 INPUT 'NUOVA LUNGHEZZA (<END> PER FINIRE):';A$:IF A$=='END' THEN GO TO 1750
X1580 IF NOT(A$='') THEN LUN='0'&A$:IF LUN=0 THEN PRINT 'ERRORE':PAUSE 50:GO TO 1750
X1590 DIM TEXT$(LUN,MAX*2+GAP):PAGE=1
X1600 SL=MAX
X1610 OPEN_IN#3,DEST$&FILE$&'_LIS'
X1620 DELETE DEST$&FILE$&'_PAG'&PAGE&'_COL'
X1630 OPEN_NEW#4,DEST$&FILE$&'_PAG'&PAGE&'_COL'
X1640 FOR LOOP=0 TO LUN:TEXT$(LOOP)=''
X1650 FOR COL=1 TO 2
X1660  FOR LOOP=0 TO LUN
X1670   IF EOF(#3) THEN EXIT COL
X1680   INPUT#3,L$
X1690   L$=L$&FILL$(' ',80):L$=L$(1 TO SL+GAP)
X1700   TEXT$(LOOP)=TEXT$(LOOP)&L$
X1710  END FOR LOOP
X1720 END FOR COL
X1730 CLS:FOR I=0 TO LUN:PRINT TEXT$(I):PRINT#4,TEXT$(I)
X1740 IF EOF(#3) THEN CLOSE#4:CLOSE#3:ELSE CLOSE#4:PAGE=PAGE+1:GO TO 1620
X1750 END DEFine COLONNE
END_OF_FILE
  if test 5591 -ne `wc -c <'TEXTPROC.BAS'`; then
    echo shar: \"'TEXTPROC.BAS'\" unpacked with wrong size!
  fi
  # end of 'TEXTPROC.BAS'
fi
if test -f 'coder.bas.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'coder.bas.uu'\"
else
  echo shar: Extracting \"'coder.bas.uu'\" \(7166 characters\)
  sed "s/^X//" >'coder.bas.uu' <<'END_OF_FILE'
Xbegin 666 CODER.BAS
XM,3 P($U!24X*,3$P($A%041%4@HQ,C @4U1/4 HQ,S @.@HQ-# @.@HQ-3 @
XM.@HQ-C @1$5&:6YE(%!23T-E9'5R92!605),25-4*$-!3BD*,3<P($Q/0V%L
XM($Q/3U L5E0*,3@P($E&($-!3CTQ(%1(14X@34]$12 T.D-,4PHQ.3 @1D]2
XM($Q/3U ],2!43R!605)054Y4"C(P,"!04DE.5"-#04X[5D%23D%-120H3$]/
XM4"D[)R Z("<["C(Q,"!65#U605)465!%)2A,3T]0*0HR,C @4T5,96-T($].
XM(%94"C(S," ],3I04DE.5"-#04X[)TE.5$5'15([)PHR-# @/3(Z4%))3E0C
XM0T%..R=35%))3D<[)PHR-3 @/3,Z4%))3E0C0T%..R=214%,.R<*,C8P(#U2
XM14U!24Y$15(@.E!224Y4(S0L)S\_/S\_/SLG"C(W,"!%3D0@4T5,96-T( HR
XM.# @3D585"!,3T]0"C(Y,"!%3D0@1$5&:6YE(%9!4DQ)4U0*,S P(#H*,S$P
XM(#H*,S(P($1%1FEN92!04D]#961U<F4@2$5!1$52"C,S,"!,3T-A;"!!)"Q,
XM3T]0"C,T,"!$14Q%5$4@)T9,4#%?)R931B0F)U]005,G"C,U,"!/4$5.7TY%
XM5R,T+"=&3% Q7R<F4T8D)B=?4$%3)PHS-C @4%))3E0C-"PG4%)/1U)!32 G
XM.U-&)#LG*&EN<'5T+&]U='!U="D[)PHS-S @4%))3E0C- HS.# @4%))3E0C
XM-"PG5%E012<*,SDP(%!224Y4(S0L)U-44DE.1R ]($%24D%9(%LQ+BXR-35=
XM($]&($-(05([)PHT,# @4%))3E0C- HT,3 @4%))3E0C-"PG5D%2)PHT,C @
XM5D%23$E35",T"C0S,"!04DE.5",T"C0T,"!04DE.5",T+"="14=)3B H*B!4
XM2$4@4%)/1U)!32 J*2<*-#4P(%!224Y4(S0*-#8P($]014Y?24XC,RPG1DQ0
XM,5\G)E-&)"8G7U!3,2<*-#<P(%)%4&5A="!,3T]0"C0X,"!)1B!%3T8H(S,I
XM(%1(14X@15A)5"!,3T]0"C0Y,"!)3E!55",S+$$D.E!224Y4(S0L020*-3 P
XM($5.1"!215!E870@3$]/4 HU,3 @4%))3E0C-#I04DE.5",T+"=%3D0N("@J
XM($]&(%!23T=204T@0ED@2%1!5" J*2<*-3(P($-,3U-%(S,Z0TQ/4T4C-#I0
XM4DE.5" G14Y$($]&(%!(05-%(#(G"C4S,"!%3D0@1$5&:6YE($A%041%4@HU
XM-# @.@HU-3 @.@HU-C @.@HU-S @.@HU.# @1$5&:6YE(%!23T-E9'5R92!-
XM04E."C4Y,"!$24T@5D%23D%-120H,C P+#(P*3I$24T@5D%25%E0124H,C P
XM*3I605)054Y4/3 Z3$%35"0])R<*-C P($U/1$4@-#I005!%4B P.D-,4PHV
XM,3 @24Y+(#0Z0U-)6D4@,BPQ.E!224Y4("=005-3)SLZ24Y+(#<Z4%))3E0@
XM)U!/4E0@4$%30T%,($-/3E9%4E1%4B<[.D-325I%(#$L,#I)3DL@-#I04DE.
XM5" G("!_,3DX.2!"62!(5$%4)SI#4TE:12 R+# Z24Y+(#<Z4%))3E0@7%Q<
XM"C8R,"!04DE.5" G24Y0550@1DE,14Y!344@5TE42$]55"!&3% Q7RXN+E]4
XM3TLG7%PG/SXG.SI)3E!55"!31B0Z248@4T8D/2<G(%1(14X@0TQ3.D=/(%1/
XM(#8Q, HV,S @0TQ3"C8T,"!/4$5.7TE.(S,L)T9,4#%?)R931B0F)U]43TLG
XM"C8U,"!$14Q%5$4@)T9,4#%?)R931B0F)U]04S$G"C8V,"!/4$5.7TY%5R,T
XM+"=&3% Q7R<F4T8D)B=?4%,Q)PHV-S @.@HV.# @14],/3 *-CDP(%!224Y4
XM(S0L)R@J($-/35!)3$52($E3("A#*3$Y.#D@0ED@2%1!5"!33T94("HI)UQ<
XM7 HW,# @4D5096%T($U!24Y?3$]/4 HW,3 @248@14],(%1(14X@15A)5"!-
XM04E.7TQ/3U *-S(P(% D/4E.4"0*-S,P($E&(%194$4],"!42$5.($=/(%1/
XM(#<Q, HW-# @248@5%E013TQ(%1(14X@7U!23T,Z1T\@5$\@-S$P"C<U,"!)
XM1B!465!%/3(@5$A%3B!?05-324=..D=/(%1/(#<Q, HW-C @14Y$(%)%4&5A
XM="!-04E.7TQ/3U *-S<P($-,3U-%(S,Z0TQ/4T4C-#I04DE.5"!<7%PG14Y$
XM($]&(%!(05-%(#$G"C<X,"!%3D0@1$5&:6YE($U!24X*-SDP(#H*.# P(#H*
XM.#$P(#H*.#(P($1%1FEN92!&=4YC=&EO;B!)3E D"C@S,"!,3T-A;"!,3T]0
XM+$$D+$(D"C@T,"!!)#U,05-4)#I")#TG)SI%3TP], HX-3 @4D5096%T($Q/
XM3U *.#8P($E&($-/1$4H020I/#$P(%1(14X@5%E013U#3T1%*$$D*3I%6$E4
XM($Q/3U *.#<P($E&($5/1B@C,RD@5$A%3B!%3TP],3I'3R!43R Y-S *.#@P
XM($$D/4E.2T59)"@C,RD*.#DP($5.1"!215!E870@3$]/4 HY,# @4D5096%T
XM($Q/3U *.3$P($E&($5/1B@C,RD@5$A%3B!%3TP],3I'3R!43R Y-S *.3(P
XM($$D/4E.2T59)"@C,RDZ3$%35"0]020*.3,P($E&($-/1$4H020I/#TQ,"!4
XM2$5.($58250@3$]/4 HY-# @0B0]0B0F020*.34P($5.1"!215!E870@3$]/
XM4 HY-C @248@5%E013TP(%1(14X@4%))3E0@7%P*.3<P(%!224Y4($(D(3L*
XM.3@P(%)%5'5R;B!") HY.3 @14Y$($1%1FEN92!)3E D"C$P,# @.@HQ,#$P
XM(#H*,3 R,"!$149I;F4@1G5.8W1I;VX@3D575D%2)"A6)"Q462D*,3 S,"!,
XM3T-A;"!,3T]0+$$D+$DL5"Q65B0*,3 T,"!)/3 *,3 U,"!65B0]5B0H3$5.
XM*%8D*2D*,3 V,"!)1B!65B0@24Y35%(@)R0E)R!42$5.(%96)#U6)"@Q(%1/
XM($Q%3BA6)"DM,2DZ14Q312!65B0]5B0*,3 W,"!&3U(@3$]/4#TQ(%1/(%9!
XM4E!53E0*,3 X,"!)1B!605).04U%)"A,3T]0*3U65B0@5$A%3B!)/4Q/3U Z
XM15A)5"!,3T]0"C$P.3 @14Y$($9/4B!,3T]0"C$Q,# @248@23P^,"!42$5.
XM($=/(%1/(#$Q-C *,3$Q,"!605)054Y4/59!4E!53E0K,0HQ,3(P(%0]5B0H
XM3$5.*%8D*2D@24Y35%(@)R0E)PHQ,3,P(%9!4DY!344D*%9!4E!53E0I/596
XM) HQ,30P(%9!4E194$4E*%9!4E!53E0I/3,*,3$U,"!)1B!462!/4B!4/3(@
XM5$A%3B!605)465!%)2A605)054Y4*3TQ.D5,4T4@248@5#TQ(%1(14X@5D%2
XM5%E0124H5D%24%5.5"D],@HQ,38P(%)%5'5R;B!65B0*,3$W,"!%3D0@1$5&
XM:6YE($Y%5U9!4@HQ,3@P(#H*,3$Y," Z"C$R,# @.@HQ,C$P($1%1FEN92!0
XM4D]#961U<F4@7T%34TE'3@HQ,C(P($Q/0V%L($$D"C$R,S @020]3D575D%2
XM)"A0)"PP*0HQ,C0P(%!224Y4(S0L020[)R Z/2 G.TE.4"0[)SLG"C$R-3 @
XM14Y$($1%1FEN92!?05-324=."C$R-C @.@HQ,C<P(#H*,3(X,"!$149I;F4@
XM4%)/0V5D=7)E(%]04D]#"C$R.3 @3$]#86P@3$]/4 HQ,S P(%!224Y4(%Q<
XM"C$S,3 @4D5096%T($Q/3U *,3,R,"!)1B!0)#T])T9/4B<@5$A%3B!04DE.
XM5",T.E]&3U(Z15A)5"!,3T]0"C$S,S @248@4"0]/2=#3%,G(%1(14X@4%))
XM3E0C-"PG5U))5$4@*$-(4B@R-BDI.R<Z15A)5"!,3T]0"C$S-# @248@4"0]
XM/2=04DE.5"<@5$A%3B!?4%))3E0Z15A)5"!,3T]0"C$S-3 @248@4"0]/2=2
XM14TG(%1(14X@4%))3E0C-"PG*"H@)SM)3E D.R<@*BDG.D58250@3$]/4 HQ
XM,S8P($E&(% D/3TG3D585"<@5$A%3B!04DE.5",T+"=%3D0[("@J($Q/3U @
XM)SLZ4"0]24Y0)#I04DE.5",T.U D.R<@*BDG.E!224Y4(S0Z15A)5"!,3T]0
XM"C$S-S @15A)5"!,3T]0"C$S.# @14Y$(%)%4&5A="!,3T]0"C$S.3 @14Y$
XM($1%1FEN92!?4%)/0PHQ-# P(#H*,30Q," Z"C$T,C @1$5&:6YE(%!23T-E
XM9'5R92!?4%))3E0*,30S,"!,3T-A;"!!)"Q")"Q,3T]0"C$T-# @4D5096%T
XM($Q/3U *,30U,"!)1B!,05-4)#U#2%(D*#$P*2!42$5.(%!224Y4(S0L)U=2
XM251%3$X[)SI%6$E4($Q/3U *,30V,"!!)#U)3E D"C$T-S @248@5%E013TT
XM(%1(14X@0B0]020Z020](B<G(CI'3R!43R Q-3,P"C$T.# @248@5%E013TS
XM(%1(14X@020](B<B)D$D)B(G(CI%3%-%($$D/41/3$Q!4B0H020I"C$T.3 @
XM248@020])R<@5$A%3B!!)#TB)R<B"C$U,# @248@3$%35"0]0TA2)"@Q,"D@
XM5$A%3B!04DE.5",T+"=74DE414Q.("@G.T$D.R<I.R<Z1T\@5$\@,38P, HQ
XM-3$P($(D/4E.4"0*,34R,"!)1B!!)#TG)R!42$5.($$D/2(G)R(*,34S,"!)
XM1B!")#TG(2<@5$A%3B!04DE.5",T+")74DE412 H(CM!)#LB+"<@)RD[(CI'
XM3R!43R Q-3<P"C$U-# @248@0B0])RPG(%1(14X@4%))3E0C-"PB5U))5$4@
XM*"([020[(BPG(" @(" @(" G*3LB.D=/(%1/(#$U-S *,34U,"!)1B!")#TG
XM.R<@5$A%3B!04DE.5",T+")74DE412 H(CM!)#LB*3LB.D=/(%1/(#$U-S *
XM,34V,"!)1B!")#TG7"<@5$A%3B!04DE.5",T+")74DE414Q.("@B.T$D.R(I
XM.R(Z1T\@5$\@,34W, HQ-3<P($E&($Q!4U0D/4-(4B0H,3 I(%1(14X@1T\@
XM5$\@,38P, HQ-3@P($$D/4E.4"0Z248@020])R<@04Y$(%194$4]-2!!3D0@
XM3$%35"0]0TA2)"@Q,"D@5$A%3B!'3R!43R Q-C P"C$U.3 @14Y$(%)%4&5A
XM="!,3T]0"C$V,# @14Y$($1%1FEN92!?4%))3E0*,38Q," Z"C$V,C @.@HQ
XM-C,P(#H*,38T,"!$149I;F4@1G5.8W1I;VX@1$],3$%2)"A3)"D*,38U,"!,
XM3T-A;"!!)"Q)"C$V-C @020])R<*,38W,"!)1B!,14XH4R0I/3 @5$A%3B!'
XM3R!43R Q-S$P"C$V.# @1D]2($D],2!43R!,14XH4R0I"C$V.3 @248@3D]4
XM*%,D*$DI($E.4U12("<D)2<I(%1(14X@020]020F4R0H22D*,3<P,"!.15A4
XM($D*,3<Q,"!2151U<FX@020*,3<R,"!%3D0@1$5&:6YE($1/3$Q!4B0*,3<S
XM," Z"C$W-# @.@HQ-S4P(#H*,3<V,"!$149I;F4@4%)/0V5D=7)E(%]&3U(*
XM,3<W,"!214UA<FL@+BXN+BXN+BXN03 D/2=605(G($$Q)#TG24Y)6B<@03(D
XM/2=&24Y%)R!!,R0])U-415 G"C$W.# @3$]#86P@020L03 D+$$Q)"Q!,B0L
XM03,D+%-4) HQ-SDP($$P)#U)3E D"C$X,# @020]24Y0)#I214UA<FL@5$]'
XM3$E%(" ]"C$X,3 @03$D/41/3$Q!4B0H24Y0)"D*,3@R,"!!)#U)3E D.D$D
XM/4E.4"0Z020]24Y0)#I214UA<FL@3U9615)/.B!?5$]?"C$X,S @03(D/41/
XM3$Q!4B0H24Y0)"D*,3@T,"!)1B!,05-4)#U#2%(D*#$P*2!42$5.(%-4)#TG
XM(%1/("<Z03,D/2<Q)SI'3R!43R Q.#@P"C$X-3 @020]24Y0)#I!)#U)3E D
XM.D$D/4E.4"0Z4D5-87)K($]65D523SH@7U-415!?"C$X-C @03,D/4E.4"0*
XM,3@W,"!)1B!!,R0])RTQ)R!42$5.(%-4)#TG($1/5TY43R G.D5,4T4@4U0D
XM/2<@5$\@)PHQ.#@P($E&($$S)#TG,2<@3U(@03,D/2<M,2<@5$A%3B!!,"0]
XM3D575D%2)"A!,"0L,2DZ4%))3E0C-"PG1D]2("<[03 D.R<@.CT@5%)53D,H
XM)SM!,20[)RDG.U-4)#LG(%1254Y#*"<[03(D.R<I($1/("<Z4%))3E0C-"PG
XM0D5'24X@*"H@1D]2($Q/3U @*BDG.D=/(%1/(#$Y,# *,3@Y,"!!,"0]3D57
XM5D%2)"A!,"0L,"DZ4%))3E0C-"Q!,"0[)R Z/2 G.T$Q)#LG.R<Z4%))3E0C
XM-"PG5TA)3$4@)SM!,"0[)R \/2 G.T$R)#LG($1/("<Z4%))3E0C-"PG0D5'
XM24X@*"H@5TA)3$4@3$]/4" J*2<Z4%))3E0C-"Q!,"0[)R Z/2 G.T$P)#LG
XM("L@*"<[03,D.R<I.R<*,3DP,"!%3D0@1$5&:6YE(%]&3U(*,3DQ," Z"C$Y
X%,C @.@H[
X 
Xend
END_OF_FILE
  if test 7166 -ne `wc -c <'coder.bas.uu'`; then
    echo shar: \"'coder.bas.uu'\" unpacked with wrong size!
  fi
  # end of 'coder.bas.uu'
fi
if test -f 'rlan.bas.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'rlan.bas.uu'\"
else
  echo shar: Extracting \"'rlan.bas.uu'\" \(955 characters\)
  sed "s/^X//" >'rlan.bas.uu' <<'END_OF_FILE'
Xbegin 666 TOBORLAN.BAS
XM,3 P($U/1$4@- HQ,3 @3U!%3B,Q+$-/3@HQ,C @4$%015(@,#I)3DL@-#I#
XM3%,*,3,P($-325I%(#(L,3I04DE.5" G4$%34R<[.DE.2R W.E!224Y4("=0
XM3U)4)SLZ0U-)6D4@,"PP.E!224Y4("<@?R!(5$%4)SLZ0U-)6D4@,RPQ.E!2
XM24Y4("<@5$\@5%520D]005-#04PG.SI#4TE:12 P+# Z4%))3E0@)W\@0D]2
XM3$%.1"<*,30P($-325I%(#(L, HQ-3 @4%))3E0@7%P*,38P(%!224Y4("=)
XM3E!55"!33U520T4@*%=)5$A/550@1DQ0,5\N+BY?4$%3*2=<7"<_/B<["C$W
XM,"!)3E!55"!31B0Z248@4T8D/2<G(%1(14X@1T\@5$\@,3(P"C$X,"!#3%,*
XM,3DP(#H*,C P($]014Y?24XC,RPG1DQ0,5\G)E-&)"8G7U!!4R<*,C$P($1%
XM3$5412 G1DQ0,5]_)R931B0F)U]005,G"C(R,"!/4$5.7TY%5R,T+"=&3% Q
XM7W\G)E-&)"8G7U!!4R<*,C,P(#H*,C0P(%)%4&5A="!,3T]0"C(U,"!)1B!%
XM3T8H(S,I(%1(14X@15A)5"!,3T]0"C(V,"!!)#U)3DM%620H(S,I.E!224Y4
XM($$D.PHR-S @248@0T]$12A!)"D],3 @5$A%3B!04DE.5",T+$-(4B0H,3,I
XM.T-(4B0H,3 I.SI%3%-%(%!224Y4(S0L020["C(X,"!%3D0@4D5096%T($Q/
XM3U *,CDP(%!224Y4(S0L1DE,3"0H0TA2)"@R-BDL,3 I"C,P,"!#3$]312,S
XH"C,Q,"!#3$]312,T"C,R,"!04DE.5"!<7%PG14Y$($]&(%1!4TLG"D]3
X 
Xend
END_OF_FILE
  if test 955 -ne `wc -c <'rlan.bas.uu'`; then
    echo shar: \"'rlan.bas.uu'\" unpacked with wrong size!
  fi
  # end of 'rlan.bas.uu'
fi
if test -f 'token.bas.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'token.bas.uu'\"
else
  echo shar: Extracting \"'token.bas.uu'\" \(3788 characters\)
  sed "s/^X//" >'token.bas.uu' <<'END_OF_FILE'
Xbegin 666 TOKEN.BAS
XM,3 P(%10)#TG)B ](CLZ+"%<)R8B)R(F0TA2)"@Q,"D*,3$P($U/1$4@-#I/
XM4$5.(S$L0T]..E!!4$52(# Z24Y+(#0Z0TQ3"C$R,"!#4TE:12 S+#$Z4%))
XM3E0@)U!!4U,G.SI)3DL@-SI04DE.5" G4$]25"!43TM%3DE315(G.SI#4TE:
XM12 P+# Z24Y+(#0Z4%))3E0@)R!_,3DX.2!"62!(5$%4($E404Q9)UQ<7#I)
XM3DL@-PHQ,S @0U-)6D4@,BPP"C$T,"!04DE.5" G24Y315)4($Y!3453(%=)
XM5$A/550@1DQ0,5\N+BY?15A4("$G7%P*,34P($E.4%54("="05-)0R @4T]5
XM4D-%.B<[4T8D"C$V,"!)3E!55" G4$%30T%,($]"2D5#5#HG.T]&) HQ-S @
XM248@4T8D/2<G($]2($]&)#TG)R!42$5.($=/(%1/(#$Q, HQ.# @0TQ3"C$Y
XM,"!/4$5.7TE.(S,L)T9,4#%?)R931B0*,C P($E&($]&)#P^)R<@5$A%3B!$
XM14Q%5$4@)T9,4#%?)R9/1B0F)U]43TLG.D]014Y?3D57(S0L)T9,4#%?)R9/
XM1B0F)U]43TLG.D5,4T4@3U!%3B,T+$-/3CI724Y$3U<C-"PU,3(L-3 L,"PQ
XM-3 *,C$P(%!224Y4("=43TM%3DE:12 N("X@+B=<7 HR,C @5$]+14X*,C,P
XM($-,3U-%(S,Z0TQ/4T4C-#I#3%,Z4%))3E0@)T9)3D4@3$%63U)/)SI"1450
XM(#$P,# P+# *,C0P(%-43U *,C4P(#H*,C8P(#H*,C<P($1%1FEN92!&=4YC
XM=&EO;B!)3B0H5"0I"C(X,"!,3T-A;"!,3T]0+$$D+$(D"C(Y,"!!)#TG)SI"
XM)#TG)SI%3TP], HS,# @4D5096%T($Q/3U *,S$P($E&($5/1B@C,RD@5$A%
XM3B!415)-)#TG14]&)SI%6$E4($Q/3U *,S(P($$D/4E.2T59)"@C,RDZ4%))
XM3E0@020[.DE&($$D/4-(4B0H,3 I(%1(14X@14],/3$Z5$52320]020Z15A)
XM5"!,3T]0"C,S,"!)1B!!)"!)3E-44B!4)"!42$5.(%1%4DTD/4$D.D58250@
XM3$]/4 HS-# @0B0]0B0F020*,S4P($5.1"!215!E870@3$]/4 HS-C @4D54
XM=7)N($(D"C,W,"!%3D0@1$5&:6YE($E.) HS.# @.@HS.3 @1$5&:6YE(%!2
XM3T-E9'5R92!43TM%3@HT,# @3$]#86P@3$]/4"Q!) HT,3 @020]24XD*"<@
XM)RDZ4D5-87)K($Y532!,24Y%00HT,C @248@5$52320])T5/1B<@5$A%3B!'
XM3R!43R V-3 *-#,P(%!224Y4(S0L0TA2)"@P*3M!)#L*-#0P($DD/4E.)"@G
XM(#H](R<I.E)%36%R:R!)4U1255H@3R!!4U-%1TX*-#4P($E&(%1%4DTD/2=%
XM3T8G(%1(14X@1T\@5$\@-C4P"C0V,"!)1B!415)-)#TG/2<@5$A%3B!04DE.
XM5",T+$-(4B0H,BD[220[.E D/4E.)"@G.B<I.E!224Y4(S0L0TA2)"@U*3M0
XM)#LZ1T\@5$\@-3$P"C0W,"!)1B!))#T])U)%32<@3U(@220]/2=214U!4DLG
XM(%1(14X@4%))3E0C-"Q#2%(D*#$I.R=214TG.T-(4B0H,RD[24XD*"<G*3I'
XM3R!43R T,3 *-#@P($E&($DD/3TG248G(%1(14X@4%))3E0C-"Q#2%(D*#$I
XM.R=)1B<[.E D/4E.)"@G("<I.E!224Y4(S0L0TA2)"@U*3M0)#LZ1T\@5$\@
XM-#0P"C0Y,"!04DE.5",T+$-(4B0H,2D[220["C4P,"!$245325,D/2<G.DE&
XM(%1%4DTD/2(C(B!42$5.($1)15-)4R0])R,G"C4Q,"!&24Y%"C4R,"!)1B!4
XM15)-)#TG14]&)R!42$5.($=/(%1/(#8U, HU,S @248@2T594D]7*#$I/3@@
XM5$A%3B!'3R!43R V-3 *-30P(#H*-34P(% D/4E.)"@G)B A7#TL.SHB)R8B
XM)R(I.E)%36%R:R!005)!34544DD*-38P(% D/41)15-)4R0F4"0Z1$E%4TE3
XM)#TG)PHU-S @248@5$52320])R(G($]2(%1%4DTD/2(G(B!42$5.(% D/4E.
XM)"A415)-)"DZ4%))3E0C-"Q#2%(D*#,I.U D.SI0)#U)3B0H5% D*3I)1B!4
XM15)-)#P^0TA2)"@Q,"D@5$A%3B!04DE.5",T+$-(4B0H-"D[5$52320[.D=/
XM(%1/(#4Q,#HZ14Q312!'3R!43R U,3 Z4D5-87)K(%-44DE.1T$*-3@P($E&
XM(% D/3TG5$A%3B<@5$A%3B!04DE.5",T.E!224Y4(S0L0TA2)"@Q*3LG5$A%
XM3B<Z1T\@5$\@-#0P"C4Y,"!)1B!0)#T])T5,4T4G(%1(14X@4%))3E0C-#I0
XM4DE.5",T+$-(4B0H,2D[)T5,4T4G.D=/(%1/(#0T, HV,# @248@5$52320]
XM0TA2)"@Q,"D@5$A%3B!04DE.5",T+$-(4B0H-2D[4"0Z1T\@5$\@-#$P"C8Q
XM,"!)1B!415)-)#P^)SHG(%1(14X@4%))3E0C-"Q#2%(D*#4I.U D.T-(4B0H
XM-"D[5$52320["C8R,"!)1B!415)-)#TG.B<@5$A%3B!04DE.5",T+$-(4B0H
XM-2D[4"0Z1T\@5$\@-#0P"C8S,"!)1B!415)-)#TG14]&)R!42$5.($=/(%1/
XM(#8U, HV-# @1T\@5$\@-3$P"C8U,"!%3D0@1$5&:6YE(%1/2T5."C8V," Z
XM"C8W,"!$149I;F4@4%)/0V5D=7)E($9)3D4*-C@P($E&(%1%4DTD/2<Z)R!4
XM2$5.(%!224Y4(S0Z1T\@5$\@-#0P"C8Y,"!)1B!415)-)#U#2%(D*#$P*2!4
XM2$5.(%!224Y4(S0Z1T\@5$\@-#$P"C<P,"!%3D0@1$5&:6YE($9)3D4*-S$P
XM(#H*-S(P($1%1FEN92!04D]#961U<F4@3$]/2RA&)"D*-S,P($Q/0V%L($$D
XM+$Q/3U *-S0P($U/1$4@- HW-3 @3U!%3E])3B,S+"=&3% Q7R<F1B0F)U]4
XM3TLG"C<V,"!215!E870@3$]/4 HW-S @248@14]&*",S*2!42$5.($58250@
XM3$]/4 HW.# @020]24Y+15DD*",S*3I)1B!+15E23U<H,2D]."!42$5.($58
XM250@3$]/4 HW.3 @248@0T]$12A!)"D\,3 @5$A%3B!35%))4" W.DE.2R P
XM.E!224Y4(%PG3$E.15!23T-!4U-)5$585%-%4%)%6%!24$%212<H*$-/1$4H
XM020I*2HT*S$@5$\@*$-/1$4H020I*2HT*S0I+#LZ4U1225 @,#I)3DL@-SI'
XM3R!43R X,C *.# P($E&($$D/4-(4B0H,3 I(%1(14X@4%))3E0@)[XG.D=/
XM(%1/(#@R, HX,3 @4%))3E0@020["C@R,"!%3D0@4D5096%T($Q/3U *.#,P
X=($-,3U-%(S,*.#0P($5.1"!$149I;F4@3$]/2PH@
X 
Xend
END_OF_FILE
  if test 3788 -ne `wc -c <'token.bas.uu'`; then
    echo shar: \"'token.bas.uu'\" unpacked with wrong size!
  fi
  # end of 'token.bas.uu'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    rm -f ark[1-9]isdone
else
    echo You still must unpack the following archives:
    echo "        " ${MISSING}
fi
exit 0
exit 0 # Just in case...
-- 
Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
Sterling Software, IMD           UUCP:     uunet!sparky!kent
Phone:    (402) 291-8300         FAX:      (402) 291-4362
Please send comp.sources.misc-related mail to kent@uunet.uu.net.