	;This program translates between Esperanto and English
	;Version: V1.4 - now also from Workbench working

	incdir  "DH1:Monitoroj/DevPac/Include/"
	include	"exec/exec_lib.i"
	include	"libraries/dos_lib.i"
	include	"libraries/dosextens.i"

				;Konstanten
mitte	equ	25			;Trennung auf Pos 25
MaxLine	equ	13			;Maximalzahl der Zeilen


	movem.l	d0-d6/a0-a6,-(sp)	;WBench-Additive
	clr.l	_WBenchMsg		;Lösche Zeiger
	sub.l	a1,a1			;Zgr auf Null 'eigener Task'
	move.l	4,a6			;_SysBase setzen
	jsr	_LVOFindTask(a6)	;Ptr auf Prozeß Leit Block zurück
	move.l	d0,a4			;Rette Ptr PLB
	tst.l	pr_CLI(a4)		;Ist es unter WB gestartet?
	beq	WB			;>zum WB-Start
CLI:	movem.l	(sp)+,d0-d6/a0-a6	;Hole wieder die Komm.-Zeile
	bsr.s	Start			;Hauptprogramm aufrufen
	rts				;Ende mit dem CLI-Aufruf

WB:	lea	pr_MsgPort(a4),a0	;Start-Code setzen
	move.l	4,a6			;_SysBase setzen
	jsr	_LVOWaitPort(a6)	;Warte auf Freigabe der WB
	lea	pr_MsgPort(a4),a0	;Msg-Port Ptr laden
	move.l	4,a6			;_SysBase setzen
	jsr	_LVOGetMsg(a6)		;Hole Msg für später
	move.l	d0,_WBenchMsg		;und sichern
	movem.l	(sp)+,d0-d6/a0-a6	;Hole wieder die Komm.-Zeile
	bsr.s	Start			;Hauptprogramm aufrufen
	move.l	d0,-(sp)		;End-Code setzen
	move.l	4,a6			;Rette Return-Code
	jsr	_LVOForbid(a6)		;Jetzt will ich sprechen
	movem.l	_WBenchMsg(pc),a1	;Msg wieder zurückschicken
	movem.l 4,a6			;_SysBase setzen
	jsr	_LVOReplyMsg(a6)	;Forbid hebt sich nach Task wieder auf
	movem.l	(sp)+,d0		;Hole den Return-Code zurück
	rts				;Ende mit dem WB-Aufruf


				;Hauptprogramm
Start:
	movem.l	d0-d6/a0-a6,-(sp)	;Register auf Stapel retten
	movem.l d0/a0,-(sp)		;retten fuer OpenLib
	bsr	OpenLib			;Output oeffnen
	movem.l	(sp)+,d0/a0		;Register zurueck
	move.l	a0,EinAdr		;Daten erhalten fuer 2. Lauf
	move.l	d0,EinLae		;Daten erhalten fuer 2. Lauf
	cmp.w	#1,d0			;Keine Eingabe?
	beq	TypeInfo		;Help ausgeben
	cmp.b	#'*',(a0)		;Eingabe eines * ?
	beq	TypeInfo		;>auch dann Info wegen ListEnd
	clr.b	FndWrd			;'Wort-vorhanden' Schalter
	clr.b	BrkAdr			;BRKADR fuer Ctrl-C auf normal
	move.b	#2,DirInd		;DirInd fuer Wort=Eng-/Weitwahl
					;DirInd=2 Eng, =3 Weit
	clr.b	StMach			;StrichMach-Flag nullsetzen
	clr.b	LineZlr			;Zeilen-Zaehler auf null setzen
GoIn:	move.l	#Daten-1,a0		;Zeiger DatenListe -1
	clr.b	espdt			;Esp/Dt Schalter
	move.l	EinAdr,a2		;Zgr Eingabe speichern
	move.l	EinLae,d2		;Lng Eingabe speichern
Loop:
	bsr	FndWrdSt		;Suche nach WordStart,setzt ESP/DT
	cmp.b	#1,d3			;Listenende?
	beq	EndSearch		;>Suche abbrechen
	bsr	CmpWrd			;Pruefe ob Wort uebereinstimmt
	cmp.b	DirInd,d3		;korrekt (volle Uebereinstimmung)?
	bne	Loop			;Wort nicht gleich, von vorn

TakeWrd:
	addq.b	#1,LineZlr		;Zeilenzaehler Increment +1
	cmp.b	#MaxLine,LineZlr	;Zeilenzaehler MaxLine?
	bmi	Tak03			;>nein, normal weiter und keine Abfr.
Tak01:	bsr	OutLine			;Bildschirmende anzeigen
	clr.b	FndWrd			;Woerter gefunden wieder null
	move.b	#1,LineZlr		;Zeilenzaehler wieder loeschen
	bsr	BreakRQ			;Wartet auf Eing,schaut nach Ctrl-C 
	tst.b	BrkAdr			;Ist BRKADR <>0?
	bne	Break			;Break ausfuehren
Tak03:	bsr	TopOut			;Ausgabe von TopZeile beim 1. mal
	move.b	#1,FndWrd		;Mind. 1 Wort gefunden
	bsr	SetStMach		;StMach setzen oder zeichnen
	bsr	OutPrep1		;AusgabeZeiger ermitteln,ben. ESP/DT
	bsr	Output			;Ausgabe in CLI bis '|'
	bsr	OutPrep2		;AusgabeZeiger ermitteln,ben. ESP/DT
	bsr	Output			;Ausgabe in CLI Spaces bis '|'
	bsr	OutPrep3		;AusgabeZeiger ermitteln,ben. ESP/DT
	bsr	Output			;Ausgabe in CLI ab '|'
	bsr	LfOut			;Lf-Ausgabe (neue Zeile)
Tak02:	bsr	FndWrdSt		;Suche naechstes Wort
	cmp.b	#1,d3			;Ende List?
	beq	Ret 			;>Suche abbrechen
	cmp.b	#1,espdt		;DT  Wort?
	beq	Tak02			;>Weiter suchen
	sub.l	#1,a0			;1 Zeichen wieder zurueck
	bra	Loop			;Wieder in Schleife


				;Nebenprogramme
TypeInfo:
	bsr	HelpFind		;Zeiger auf HelpFile stellen
	bsr	Output			;Ausgabe HelpText
	bra	Ret			;Verlassen des PRGs

EndSearch:
	move.l	#DirInd,a4		;Adresse bereitstellen
	cmp.b	#3,(a4)			;fertig?
	beq	Eds01			;>weitermachen
	move.b	#3,DirInd		;auf Weit stellen
	bra	GoIn			;2. Leben und ReEinsprung
Eds01:	cmp.b	#1,FndWrd		;Mind. 1 Wort gefunden?
	beq	Ret			;>Dann hier verkehrt
	bsr	OutInfoPrep		;AusgabeZeiger fuer "kein Eintr."
	bsr	Output			;Ausgabe in CLI

Ret:
	cmp.b	#1,FndWrd		;Mind. 1 Wort gefunden?
	beq	Ret01			;>Mit Schlusszeichen
	bsr	LfOut			;sonst nur LF
	bra	Ret02			;weiter in der Ausfuehrung
Ret01	bsr	EndLine			;Ausgabe von 2 LF+Endlinie
Ret02	bsr	CloseLib		;Library schliessen
	movem.l	(sp)+,d0-d6/a0-a6	;Register zurueck
	rts

Break:
	bsr	PrepBreak		;'*** Break' ausgeben
	bsr	Output			;mit Output
	move.b	#0,FndWrd		;Loesche Ausgabekennung
	bra	Ret			;Beende PRG

Quit:
	rts				;Zurueck zum DOS


				;Unterprogramme
OpenLib:
	move.l	#dosname,a1		;Zgr auf DosName in a1
	moveq	#0,d0			;Version unbestimmt
	move.l	4,a6			;SysBase in a6
	jsr	_LVOForbid(a6)		;Tasks abschalten
	move.l	4,a6			;nochmal holen
	jsr	_LVOOpenLibrary(a6)	;OpenLibrary
	tst.l	d0			;Fehler?
	beq	Quit			;>ja, dann zurueck zum DOS
	move.l	d0,dosbase		;DosBaseZgr ablegen
	move.l	d0,a6			;und nach a6 kopieren
	jsr	_LVOInput(a6)		;Input-Handle holen
	move.l	d0,inp			;und ablegen
	jsr	_LVOOutput(a6)		;Output-Handle holen
	move.l	d0,outp			;in beide Richtungen
	rts				;Zurueck zur Hauptroutine

CloseLib:
	move.l	4,a6			;und SysBase in a6
	jsr	_LVOPermit(a6)		;Tasks wieder zulassen
	move.l	4,a6			;noch mal holen
	move.l	dosbase,a1		;DosBaseZgr in a1
	jsr	_LVOCloseLibrary(a6)	;CloseLibrary
	rts				;Zurueck zur Hauptroutine

FndWrdSt:
	move.b	(a0),d0			;1 Zeichen der Liste in d0
	tst.b	d0			;Nullbyte?
	beq	clrflag			;>Richte Zeiger, loesche ESPdt
	cmp.b	#' ',d0			;Spacezeichen?
	beq	setflag			;>Suche StartWort, setze espDT
	cmp.b	#'|',d0			;Trennzeichen in Zeile?
	beq	setflag			:>Suche StartWort, setze espDT
	cmp.b	#'*',d0			;Listenende?
	beq	endlist			;>
	addq	#1,a0			;1 Zeichen weiter
	bra	FndWrdSt		;>naechstes Zeichen ueberpruefen
clrflag:
	add.l	#1,a0			;Richte ZeigerStartWort (ESPdt)
	move.b	(a0),d0			;Zeichen in d0 uebernehmen
	cmp.b	#'*',d0			;Listenende?
	beq	endlist			;>
	move.b	#0,espdt		;Loesche ESPdt
	move.l	#0,d3			;Kein Fehler (nicht ListEnd)
	rts				;Zurueck zur Hauptroutine
setflag:
	add.l	#1,a0			;Naechstes Zeichen ueberpruefen
	move.b	(a0),d0			;und in d0 uebernehmen
	cmp.b	#' ',d0			;Immer noch Space?
	beq	setflag			;>nochmal ein Zeichen weiter
	move.b	#1,espdt		;Setzt espDT, ListZ auf WrdSt
	move.l	#0,d3			;kein Fehler (kein ListEnd)
	rts				;Zurueck zur Hauptroutine
endlist:
	move.l	#1,d3			;Fehler=1 zeigt ListEnd an
	rts				;Zurueck zur Hauptroutine

CmpWrd:
	move.l	EinAdr,a2		;Erinnerung A2
	move.l	EinLae,d2		;Erinnerung D2
	cmp.b	#"?",(a2)		;Eingabe eines "?" ?
	bne	Cmp01			;>nein, weiter zur Opt-Prüfung
	cmp.b	#2,d2			;Nur ein Zeichen?
	bne	Cmp01			;>nein, weiter zur Opt-Prüfung
	addq	#1,a0			;ZeichenPtr korrigieren
	bra	setbit			;Alles ausgeben > Wort gef.
Cmp01:	cmp.b	#"-",(a2)		;Eingabe einer Option ?
	bne	Cmp02			;>nein, normal weiter
	cmp.b	#3,d2			;Zwei Zeichen (fr Option) ?
	beq	OptionCheck		;OptionCheck anspringen
Cmp02:	move.l	a2,a1			;EingabeZeiger in a1
	move.l	d2,d1			;EingabeLaenge (+1 wegen NByte)
	subq	#2,d1			;-2 fuer Schlaufe
testloop:
	cmp.b	#"*",(a1)		;Joker eingesetzt?
	bne 	tes01			;>nicht, normal weiter
	tst.b	espdt			;Esperanto Tabelle?
	bne	setbitsp		;>nein, alles ok
	addq.l	#1,a0			;Tabelle korrigieren
	bra	setbitsp		;Wort ok ab Position
tes01:	move.b	(a0),d0			;1 Zeichen von der Liste in d0
	and.b	#$df,d0			;Zeichen auf Kleinschreibung
	and.b	#$df,(a1)		;Zeichen auf Kleinschreibung
	cmp.b	(a1),d0			;Vergleich mit 1 Zeichen Eingabe
	bne	notsame			;>
	addq.l	#1,a0			;1 Zeichen weiter in Liste
	addq.l	#1,a1			;1 Zeichen weiter in Eingabe
	dbra	d1,testloop		;Noch nicht alle Zeichen durch? >
	move.b	(a0),d0			;1 Zeichen der L nach Wort in d0
	tst.b	d0			;Ist es Nullbyte?
	beq	setbit			;>auch Laenge stimmt, gl Wort
	cmp.b	#'|',d0			;Ist es das Trennungszeichen?
	beq	setbit			;>dann auch ok
	cmp.b	#' ',d0			;oder das Space?
	beq	setbit			;>dann auch ok
	cmp.b	#0,d0			;oder das Zeilenende?
	beq	setbit			;>dann auch ok
	bra	notsame			;>sonst, Wort nicht ganz richtig	
setbitsp:
	movem.l	a0/d0,-(sp)		;A0/D0 sichern
sbs03:	sub.l	#1,a0			;Tabellenzeiger decrementieren
	move.b	(a0),d0			;und Vergleichwort in D0 holen
	cmp.b	#' ',d0			;ist es SPACE?
	bne	sbs01			;>nein, dann weiter vergleichen
	move.l	#3,d3			;es ist sinngemaesse Auswahl 
	bra	sbs04			;und zum Ende der R. springen
sbs01:	cmp.b	#0,d0			;ist es Null-Byte?
	beq	sbs02			;>ja, dann Wortuebersetzung
	cmp.b	#'|',d0			;oder ist es Trennzeichen '|'
	bne	sbs03			;>nein, dann weiter suchen
sbs02:	move.l	#2,d3			;es ist eine Wortuebersetzung
sbs04:	movem.l (sp)+,a0/d0
	rts
setbit:
	cmp.b	#'(',1(a0)		;Ist es eine Erlaeuterung?
	beq	set02			;>Dann Wort auch alleinestehend
	cmp.b	#' ',(a0)		;Leerzeichen nach Wort?
	beq	set01			;>Weiter nach Wortzusammenhangfund
	move.l	a0,a4			;a4 vorbereiten
	sub.l	d2,a4			;und vor das Wort stellen, d2=Lng
	cmp.b	#' ',(a4)		;ist dort Space?
	beq	set01			;>Weiter nach Wortzusammenhangfund	
set02:	move.l	#2,d3			;Wort gefunden alleinestehend
	rts				;Zurueck zur Hauptroutine
set01:
	move.l	#3,d3			;Wort gefunden Wortzusammenhang
	rts
notsame:
	move.l	#0,d3			;Wort nicht gleich
	rts				;Zurueck zur Hauptroutine

SetStMach:
	movem.l	d4,-(sp)		;D4 retten
	cmp.b	#2,DirInd		;fuer Vergleich ob 1. Durchlauf
	beq	ssm01			;>setze normal StM.-Flag Stufe1
	cmp.b	#1,StMach		;war schon eine Ausgabe in 1?
	bne	ssm02			;>nein, keine Trennzeile
	bsr	LfOut			;Leerzeile
	bsr	LnOut			;gestrichelte Linie
	bsr	LfOut			;Leerzeile
	move.b	#2,StMach		;Ab jetzt keine Trennzeile mehr!
	bra 	ssm02			;zurueck zur Hauptroutine
ssm01:	move.b	#1,StMach		;StM.-Flag Stufe 1 setzen
ssm02:	movem.l	(sp)+,d4		;D4 vom Stapel holen
	rts				;zurueck zur Hauptroutine

OptionCheck:
	addq.l	#4,sp			;Stapel richten da nicht SUB-PRG
	addq.l	#1,a2			;Eingabe-Zeiger auf Option stellen
	cmp.b	#"h",(a2)		;Ist es eine HELP-Esp-Text-Anf. ?
	beq	HelpPrintEsp		;>ja, HelpPrintEsp anspringen
	cmp.b	#"H",(a2)		;Ist es eine HELP-Dt -Text-Anf. ?
	beq	HelpPrintDt		;>ja, HelpPrintDt  anspringen
	bra	Ret			;Abbruch und PRG beenden

BreakRQ:
	movem.l	a0-a2/d0-d3,-(sp)	;Register sichern
	move.l	inp,d1			;Handle setzen
	move.l	#inpbuf,d2		;InputBuffer setzen
	move.l	#2,d3			;Max-Zeichen 2
	jsr	_LVORead(a6)		;2 Zeichen einlesen von Tast.
	move.b	inpbuf,d1		;Zeichen in d1
	cmp.b	#32,d1			;Zeichen = SPACE ?
	bne	brk1			;>weiter
	move.b	#1,BrkAdr		;Ja, Signal setzen
brk1:	movem.l	(sp)+,a0-a2/d0-d3	;Register wieder holen
	rts

PrepBreak:
	move.l	#BRKTxtEnd-BRKTxt,d3	;Laenge des InfoTextes in d3
	move.l	#BRKTxt,d2		;Zgr auf InfoText in d2
	move.l	outp,d1			;OutputHandle in d1
	rts				;Zurueck zur Hauptroutine

Output:
	movem.l a0-a2/d0-d3,-(sp)	;Register sichern
	move.l	dosbase,a6		;DosBase in a6
	jsr	_LVOWrite(a6)		;Write
	movem.l	(sp)+,a0-a2/d0-d3	;Register zurueckholen
	rts				;Zurueck zur Hauptroutine

OutPrep1:
out1:
	cmp.b	#0,-(a0)		;Suche Nullbyte am Anfang
	bne	out1			;>Nicht gefunden, nochmal
	add.l	#1,a0			;Wieder auf das 1. Zeichen stellen
	move.l	a0,a1			;Endzeiger auf Start
out2:	cmp.b	#'|',(a1)+		;Endzeiger Mitte erreicht?
	bne	out2			;>Weiter suchen
	sub.l	#1,a1			;und wieder eins zurueck
	move.l	a1,d3			;Laenge vorbereiten
	sub.l	a0,d3			;Lst Zgr auf Trennz-Anfang Zeile
	move.l	a0,d2			;Startzeiger fuer Output
	move.l	outp,d1			;OutputHandle setzen
	rts				;Zurueck zur Hauptroutine

OutPrep2:
	move.l	d3,d2			;und kurzfristig sichern
	move.l	#mitte,d3		;Zeilenmitte
	sub.l	d2,d3			;und Anzahl Spaces ausrechnen
	move.l	#SpaceL,d2		;Spacezeile
	move.l	outp,d1			;OutputHandle setzen
	rts				;Zurueck zur Hauptroutine

OutPrep3:
	move.l	a1,a0			;Lst Zgr mit Inhalt Mitte in Links
out3:	cmp.b	#0,(a1)+		;Suche Endzeichen Rechts
	bne	out3			;>Weiter suchen	
	add.l	#1,a0			;Linker Zgr auf 1. Zeichen
	move.l	a1,d3			;Errechne Laenge
	sub.l	a0,d3			;Zgr Endzeichen-Zgr Mitte
	move.l	a0,d2			;Startzeiger uebergeben
	move.l	outp,d1			;OutputHandle suchen
	rts				;Zurueck zur Hauptourtine

EndLine:
	move.l	#LfStart,d2		;LF-ZeichenZgr in d2
	move.l	#LfEnd-LfStart,d3	;LF-Laenge in d3
	move.l	outp,d1			;OutputHandle in d1
	bsr	Output			;Ausgabe
	rts				;Zurueck zur Hauptroutine

OutLine:
	move.l	#LINTxt,d2		;LF-ZeichenZgr in d2
	move.l	#LINTxtEnd-LINTxt,d3	;LF-Laenge in d3
	move.l	outp,d1			;OutputHandle in d1
	bsr	Output			;Ausgabe
	rts				;Zurueck zur Hauptroutine

OutInfoPrep:
	move.l	#NoFndEnd-NoFnd,d3	;Laenge in d3
	move.l	#NoFnd,d2		;StartZgr des Textes NoFind
	move.l	outp,d1			;OutputHandle setzen
	rts				;Zurueck zur Hauptroutine

HelpPrintEsp:
	move.l	#HlpEnd1-Hlp1,d3	;Laenge in d3
	move.l	#Hlp1,d2		;StartZgr des Textes NoFind
	move.l	outp,d1			;OutputHandle setzen
	bsr	Output			;Ausgabe
	bra	Ret			;PRG beenden

HelpPrintDt:
	move.l	#HlpEnd2-Hlp2,d3	;Laenge in d3
	move.l	#Hlp2,d2		;StartZgr des Textes NoFind
	move.l	outp,d1			;OutputHandle setzen
	bsr	Output			;Ausgabe
	bra	Ret			;PRG beenden

TopOut:
	cmp.b	#1,FndWrd		;Schon Wörter drausen?
	beq	Top01			;>keine Titelzeile mehr
	move.l	#TopStart,d2		;TopZeileZgr in d2
	move.l	#TopEnd-TopStart,d3	;TopLaenge in d3
	move.l	outp,d1 		;OutputHandle in d1
	bsr	Output			;Ausgabe
Top01:	rts				;Zurueck zur Hauptroutine

LfOut:
	move.l	#LfStart,d2		;LF-ZeichenZgr in d2
	move.l	#1,d3			;LF-Laenge in d3
	move.l	outp,d1			;OutputHandle in d1
	bsr	Output			;Ausgabe
	rts				;Zurueck zur Hauptroutine

LnOut:
	add.b	#3,LineZlr		;Zeilenzaehler +2
	move.l	#LnStart,d2		;Line-ZeichenZgr in d2
	move.l	#LnEnd-LnStart,d3	;Line-Laenge in d3
	move.l	outp,d1			;OutputHandle in d1
	bsr	Output			;Ausgabe
	rts				;Zurueck zur Hauptroutine

HelpFind:
	move.l	#HelpTxtEnd-HelpTxt,d3	;Laenge des InfoTextes in d3
	move.l	#HelpTxt,d2		;Zgr auf InfoText in d2
	move.l	outp,d1			;OutputHandle in d1
	rts				;Zurueck zur Hauptroutine


				;Textvorlagen
SpaceL:
	dc.b	'                                                                               ',0

NoFnd:
	dc.b	12,10,$9b,'0;33m          +---------------------------------------------------------+'
	dc.b	10,'          | Beda»rinde ¬i tiu vorto ne estas en la tradukregistro   |'
	dc.b	10,'          | Sorry, but this word is not in the translation register |'
	dc.b	10,'          +---------------------------------------------------------+',10,10
	dc.b	$9b,'0;31;40m',0
NoFndEnd:
		
HelpTxt:
	dc.b	12,10,$9b,'1',$43,$9b,'7;33m         +-------------------------------------------------------+          '
	dc.b	10,$9b,'1',$43,'         | esperanta/angla     angla/esperanta - vorttradukilo   |          '
	dc.b	10,$9b,'1',$43,'         | Esperanto/English English/Esperanto - word translator |          '
	dc.b	10,$9b,'1',$43,'         +-------------------------------------------------------+          '
	dc.b    10,$9b,'1',$43,'          V 1.4   angla           92/05          registraµoj:2994           ',10
	dc.b	10
	dc.b	10,$9b,'0;31m UZADO    : VortaroAngV1.4 [angla   / esperanta vorto]',10
	dc.b	10,'            Por informi vin pri la eblecoj de la programo uzu "-h"',10,10
	dc.b	10
	dc.b	10,' USAGE    : VortaroAngV1.4 [English / Esperanto word ]',10
	dc.b	10,'            Use "-H" to get informations about the facilities of that program',10
	dc.b	10,10,10,$9b,'1',$43,$9b,'3;31mPublic Domain skribita de Ulrich Habel, membro de Germana Esperanto Junularo',10
	dc.b	$9b,'1',$43,'                                                    kaj   La Komputila Rondo',$9b,'0;31;40m',10,13,0
HelpTxtEnd:	

BRKTxt:
	dc.b	'*** Vortaro FINAS...  ¥is revido! ***',10,0
BRKTxtEnd:

LINTxt:
	dc.b	10,'< < <   Premu ENTER-klavon por plu-labori a» finu per SPACE kaj ENTER   > > >',10,0
LINTxtEnd:

LfStart:
	dc.b	10,'=============================================================================',10,10,0
LfEnd:

LnStart:
	dc.b	'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -',10,0
LnEnd:

FndWrdMor0:
	dc.b	0

TopStart:
	dc.b	12,'============================================================================='
	dc.b	10,$9b,'1;31mesperanta vorto          angla   vorto'
	dc.b	10,$9b,'1;31mEsperanto word           English word'
	dc.b	10,$9b,'0;31m-----------------------------------------------------------------------------'
	dc.b	10,10,0
TopEnd:

Hlp1:
	dc.b	12,'============================================================================'
	dc.b	10
	dc.b	10,'Jen estas la eblecoj de la programo:'
	dc.b	10,'----------------------------------- '
	dc.b	10
	dc.b	10,'"?" Vidigas ¬iujn vortojn de la Vortaro.'
	dc.b	10
	dc.b	10,'"*" Mallongigas enigaµojn ( ekz.: "¬i*" ser¬as: "¬i", "¬ie", "¬io"...)'
	dc.b	10
	dc.b	10,'Eldonaµoj estas arpartigitaj en du grupojn: Vorttradukojn kaj tradukojn,'
	dc.b	10,'kiuj enhavas la vorton. La grupoj estas separataj per linio.'
	dc.b	10
	dc.b	10,'Anka» egalas ¬u enigaµoj estas skribataj per grandaj a» malgrandaj'
	dc.b	10,'literoj. Tiel facilas laboro kun Vortaro ser¬ante parencajn vortojn.'
	dc.b	10
	dc.b	10
	dc.b	10
	dc.b	10
	dc.b	10
	dc.b	10
	dc.b	10
	dc.b	10,'============================================================================'
	dc.b	13,0
HlpEnd1:

Hlp2:
	dc.b	12,'============================================================================'
	dc.b	10
	dc.b	10,'Here is the listing about the possibilities:'
	dc.b	10,'------------------------------------------- '
	dc.b	10
	dc.b	10,'"?" Types all the words in the list to the screen.'
	dc.b	10
	dc.b	10,'"*" Shortens a word ( i.e.: "in*" searchs for: "in", "insist", "insekto"... )'
	dc.b	10
	dc.b	10,'The output consists of lines of translation-pairs and sentence-translations,'
	dc.b	10,'which contain the word. They are seperated by a broken-line.'
	dc.b	10
	dc.b	10,'Also there is no distinction between capital and small letters for the input.'
	dc.b	10,'This way you can find similar words easier.'
	dc.b	10
	dc.b	10
	dc.b	10
	dc.b	10
	dc.b	10
	dc.b	10
	dc.b	10
	dc.b	10,'============================================================================'
	dc.b	13,0
HlpEnd2:

				;Definitionen
dosname	dc.b	'dos.library',0

				;Variablenspeicher
		even
EinAdr		dc.l	0
EinLae		dc.l	0
dosbase 	dc.l	0
outp		dc.l	0
inp		dc.l	0
espdt		dc.b	0
FndWrd		dc.b	0
BrkAdr		dc.b	0
DirInd		dc.b	0
StMach		dc.b	0
LineZlr		dc.b	0
		even
_WBenchMsg	ds.l	1
inpbuf		ds.b	2


				;Vokabeln im PRG
Daten:
