File: SZEIL.MA of Tape: Various/Decus/decus-2
(Source file text) 

.TITLE	L I N K - L I B R A R Y
.SBTTL SZEIL :EINLESEN EINES KOMMANDOS

.INCLUDE SYS:MACLIB.MA


/******* SZEIL ********
/15.09.81    BR,RMO,1.7.83  VH
/(L,AC)=?,?
/CIF SZEIL
/JMS SZEIL
/FELD DES BUFFERS
/ADRESSE DES BUFFERS
/1.RUECKSPRUNG FALLS NUR CR,ESCAPE,RUB,SPACE ODER CONTROL-ZEICHEN (L,A)=0,0
/2.RUECKSPRUNG FALLS EIN STRING MIT RETURN ODER ESCAPE ABGESCHLOSEN (L,A)=0,0
/***************************


/UNTERPROGRAMM ZUM EINLESEN EINER ZEILE (MAX 50 ZEICHEN)
/PARAMETER HINTER DEM AUFRUF GIBT AN, WO DER TEXT AB-
/GELEGT WERDEN SOLL (FELD + ADRESSE)
/JEDES EINGEGEBENE ZEICHEN WIRD ABGESPEICHERT

OPEN "SZEIL","F"

.ENTRY	SZEIL

	DEFMER ATEMP$,ZEICH$,BUFFZ$,BUFF1$,TEMP1$

SZEIL,	OPNSUB RT:ZEILE0,AC:ATEMP$,UM1$,BUFF1$

	RESMER CAL:BUFFZ$

	DCAADD UM2$,AC+UM1$
	DCAADD UM3$,AC+UM1$

ZEIL1$:	LIESTT

	DCA ZEICH$

	JMX AC+BUFFZ$,NE:ZEIL2$		/1.ZEICHEN ?

	VERGLE ZEICH$,<"!>,LT:ZEIL9$	/1.ZEICHEN = CONTROL,SPACE ODER CR
	VERGLE ZEICH$,(RUB),NE:ZEIL6$	/1.ZEICHEN KEIN RUB

ZEIL9$:	TAD ZEICH$
UM1$:	V			/1.ZEICHEN = CONTROL,SPACE,CR ODER RUB
	DCA I BUFF1$	
	CDF .FLD
	JMP ZEILE0	
/-------------------------------------------------------------

ZEIL2$:	VERGLE ZEICH$,(RUB),NE:ZEIL5$

	DEC BUFFZ$			/ZEICHEN LOESCHEN
	DCAADD TEMP1$,AC+BUFFZ$,BUFF1$

UM2$:	V
	TAD I TEMP1$
	CDF .FLD

	VERGLE AC,(SPACE),LT:ZEIL1$

ZEIL7$:	RUBOUT
	JMP ZEIL1$	
/----------------------------------------------------------

ZEIL5$:	VERGLE AC+BUFFZ$,(49.),LT:ZEIL6$

	VERGLE AC+ZEICH$,(SPACE),EQ:ZEIL7$,GT:ZEIL7$,LT:ZEIL8$

ZEIL6$:	DCAADD TEMP1$,AC+BUFFZ$,BUFF1$

	TAD ZEICH$
UM3$:	V
	DCA I TEMP1$	/ZEICHEN IN DEN STRINGBUFFER ABLEGEN
	CDF .FLD

	INC BUFFZ$

ZEIL8$:	TAD ZEICH$		/ABSCHLUSSZEICHEN EINGEGEBEN ?
	VERZWG	<CR>	,<ESC>
	SPRUNG	ZEILE4	,ZEILE4
	CAL
	JMP ZEIL1$

/---------------------------------------------------------------
ZEILE4:	INC SZEIL,0
	CAL

ZEILE0: V
	JMP I SZEIL	

CLOSE	"SZEIL"

	ENDPR