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

.TITLE	L I N K - L I B R A R Y
.SBTTL	STEXAU:TEXTAUSGABE GEPACKTER TEXTE


.INCLUDE SYS:MACLIB.MA


/**** STEXAU ****
/04.09.81  /31.5.83 PMO, 17.8.83  VH
/(L,AC)=?,?
/CALL	STEXAU
/TEXTART
/TEXTFELD
/TEXTADRESSE
/(L,AC)=0,0
/**************


/DIESES UNTERPROGRAMM WIRD VERWENDET VON DEN 
/MACRO'S    PRINT
/	    TEXAUS
/WEITERE BESCHREIBUNGEN SIEHE UNTER DIESEN MACRO'S

/PARAMETER: (HINTER DEM AUFRUF)
/1. ANGABE DER TEXTART
/2. ANGABE DES TEXTFELDES (CDF TEXTX)
/3. ANGABE DER TEXTADRESSE

/TEXTARTEN:
/      0: 6BIT ASCII-TEXT
/      1: WIE 0, ZUSAETZLICH SIND ZEICHEN GLEICHER ART ZUSAMMENGEFASST
/         + & FUER BELL
/      2: AUSDRUCK WIE 1 ABER MIT SONDERZEICHEN
/         # UND $
/     -1: ZEILENNUMMERN FUER AUSDRUCK
/     -2: ZEILENNUMMERN FUER EDITOR
/4. PARAMETER ALS ALLGEMEINE VARIABLE
/   SPHSR = 0  : NUR AUF TTY
/   SPHSR = 1  : AUF TTY + LPT
/   SPHSR = -1 : NUR AUF LPT

/AUFBAU DER SONDERZEICHEN "$"=IST, "#"=SOLL
/DIE SONDERZEICHEN SIND ALS ALLVA'S ABGELEGT

/IST  COUNA0 1.TEIL
/     COUNB0 2.TEIL
/     COUNA1 1.TEIL
/     COUNB1 2.TEIL
/SOLL VERGA0 1 TEIL
/     VERGB0 2.TEIL
/     VERGA1 1.TEIL
/     VERGB1 2.TEIL


OPEN	"STEXAU","F"

.ENTRY	STEXAU

	DEFMER	TCCNT	,TECCR	,TCHSP	,TCYSP	,TECNR	,TEMP	,ZTEXT	,TCASPE

STEXAU,	OPNSUB RT:EXIT,TCASPE,FLDUMS,ZTEXT

	RESMER AC+TCHSP,TECNR

/---------------- ZEICHEN AUS DEM TEXTDATENFELD HOLEN ---------------------

FLDUMS:	V		/UMSCHALTEN AUF TEXT-DATENFELD
	TAD I ZTEXT
	CDF .FLD
	DCA TEMP
	TAD TEMP
	BSW
	AND (77)
	SNA
	JMP EXIT	/TEXTENDE
	CALL ZEIVER	/LINKES ZEICHEN VERARBEITEN

	TAD TEMP
	AND (77)
	SNA
	JMP EXIT
	CALL ZEIVER	/RECHTES ZEICHEN VERARBEITEN
	ISZ ZTEXT
	JMP FLDUMS

	CALL FLDHO	/FELD ERHOEHEN

	JMP FLDUMS	/WIEDERHOLUNG

/-------------------- RUECKSPRUNG ------------------------------------------

EXIT:	V
	CAL
	JMP I STEXAU

CLOSE  "STEXAU"

.SBTTL ZEIVER:EIN ZEICHEN VERARBEITEN

OPEN "STX00","F",STEXAU

ZEIVER,	OPNSUB RT:ZEIEX,AC:TCYSP

	JMX AC+TCASPE,EQ:TEC21		/NORMALAUSDRUCK ?

	JMX AC+TCHSP,NE:GEPTEX		/AUSDRUCK GEPACKTER TEXT, SONDERZEICHEN ?

	VERGLE AC+TCYSP,(36),EQ:TEC33	/ GEPACKTER TEXT ?

	VERGLE AC+TCASPE,(2),NE:TEC20

	TAD TCYSP
	TAD (^O200-"#)
	SNA
	JMP TEC32	/SONDERZEICHEN
	TAD ("#-"$)
	SNA CLA
	JMP TEC32	/SONDERZEICHEN
TEC20:	TAD TCYSP
	TAD (^O200-"&)
	SNA CLA
	JMP TEC7	/BELL
TEC21:	JMS TEC22	/NORMAL AUSDRUCK
	JMP ZEIEX

TEC3:	SPA
	TAD (100)
	TAD (237)
TEC31:	TYPECL		/AUSDRUCK
	JMP ZEIEX

TEC32:	TAD TCASPE
	SPA CLA
	JMP TEC21
TEC33:	TAD TCYSP	/ZEICHENZAEHLER SETZEN FUER
	DCA TCZSP	/GEPACKTER TEXT + SONDERZEICHEN
	INC TCHSP

	CALL ZEILNR

	JMP ZEIEX

/---------------- AUSDRUCK GEPACKTER TEXT ODER SONDERZEICHEN --------------

GEPTEX:	VERGLE AC+TCZSP,(36),NE:TEC81 	/ ^ ?

	CMA
	TAD TCHSP	/GEPACKTER TEXT
	SNA CLA
	JMP TEC83	/ZEICHENSPEICHER = 1
	JMP TEC82


TEC7:	CAL CMA		/BELL
	TAD TCASPE
	SPA CLA
	JMP TEC21	/AUSDRUCK &
	TAD (BELL)	/BELL
	JMP TEC31

ZEIEX:	V
	JMP I ZEIVER

CLOSE "STX00"

OPEN "STX01","F",STEXAU

	DEFMER TCZSP

TEC82,	TAD TCYSP	/ZEICHENSPEICHER=2
	TAD (-37)
	SPA
	TAD (100)
	TAD (237)
			/AUSDRUCKFORMATIERUNG
	TYPECL		/AUSDRUCK
	ISZ TCCNT
	JMP TEC82	/ZEICHENANZAHL ERREICHT
	DCA TCHSP
	JMP ZEIEX	/RUECKSPRUNG

TEC83:	TAD TCYSP	/ZEICHENZAEHLER SETZEN
	CIA
	DCA TCCNT

TEC84:	INC TCHSP
	JMP ZEIEX	/RUECKSPRUNG

TEC81:	DCA TCHSP

	VERGLE AC+TCZSP,(43),EQ:TEC85	/ # ?

	TAD (COUNA0)	/SETZEN IST
	SKP
TEC85:	TAD (VERGA0)	/SETZEN SOLL
	DCA TCZSP
	TAD TCYSP	/ZAEHLERNR. HOLEN
	AND (1)
	CLL RAL
	TAD TCZSP
	DCA TCZSP
	CDF COUNA0
	TAD I TCZSP	/ZAEHLERINHALT HOLEN, 1.TEIL
	VADCA ZAHIGH
	INC TCZSP
	CDF COUNA0
	TAD I TCZSP	/ZAEHLERINHALT HOLEN 2.TEIL
	VADCA ZALOW
	DECPRT 5	/ZAEHLERINHALT AUSDRUCK

	JMP ZEIEX	/RUECKSPRUNG

CLOSE "STX01"
.SBTTL ZEILNR:ZEILEN-NUMMERN AUSGEBEN

OPEN "STX02","F",STEXAU


ZEILNR,	OPNSUB RT:EXIT$

	JMX AC+TECNR,EQ:TC222

	JMX AC+TECCR,EQ:EXIT$

TC222:	DCA TECCR
	TAD TCASPE
	IAC
	SNA
	JMP TC225	/TECART= -1
	IAC
	SNA CLA
	JMP TC224	/TECART= -2
	JMP EXIT$	/TECART = 0 ODER 1

TC225:	JMX VA:SPHSR,EQ:TC224	/AUSDRUCK NUR AUF LPT ?

      	TAD (-24)	/TECART = -1
	DCA TCCNT	/LEERPLAETZE ZUM DRUCKER SENDEN

TC225A:	TYPE LPT,0,<" >
	ISZ TCCNT
	JMP TC225A

TC224:	TAD TECNR	/TECART -2 ODER -1
	DECPRT 2	/AUSDRUCK ZEILENNUMMER
	INC TECNR
	TYPECL <":>

EXIT$:	V		/RUECKSPRUNG
	JMP I ZEILNR

CLOSE "STX02"
OPEN "STX03","F",STEXAU


TEC22,	OPNSUB

	VERGLE AC+TCASPE,(0),GT:TC220,EQ:TC220

	CALL ZEILNR	/TECARTSP NEGATIV

TC220:	TAD TCYSP
	TAD (-37)	/ABFRAGE AUF CR
	SZA
	JMP TC223

	CRLF

	TAD TCASPE
	SMA CLA
	JMP I TEC22	/TECART POSITIV, RUECKSPRUNG

	ISZ TECCR
	TAD TCASPE
	IAC
	SNA CLA
	JMP TECWT	/TECART = -1
	DCAADD TCCNT,(3)/TECART -2

TECWT:	WAIT EXIT
	SKP
TC223:	INC TEC22,0
	JMP I TEC22


CLOSE "STX03"
.SBTTL FLDHO :FELD ERHOEHEN

OPEN "STX04","F"

FLDHO,	OPNSUB RT:FLDHR$

	VATAD FLDUMS
	TAD (10)
	BSW
	CLL RAR
	SZL
	TAD (200)
	CLL RAL
	BSW
	VADCA FLDUMS

FLDHR$:	V
	JMP I FLDHO


CLOSE	"STX04"

	ENDPR