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

/CURLIB.MA
.NOLIST

/****************************************************************
/CURSOR - LIBRARY
/11. APRIL 1983 VH/JBU


/DAS FILE CURLIB.MA  MUSS MIT

/ .INCLUDE SYS:CURLIB.MA

/ZUSAMMEN MIT MACLIB AM ANFANG DES HAUPTPROGRAMMES STEHEN



.ENABLE EXPUNGE		/FREIGABE VON EXPUNGE FUER ALLE DURCHLAEUFE


/***************************************************************






/****************************************************************
/****************************************************************
/****************** H A U N I  H A M B U R G ********************
/****************************************************************
/****************************************************************








/***************************************************************
/************************ CURLIB.MA ****************************
/********************* CURSOR LIBRARY **************************
/***************************************************************
/************** ERSTELLT VON V.HENNINGSEN,J.BUSSE **************
/***************************************************************




/AENDERUNGEN IN DIESER LIBRARY DUERFEN NUR IN ABSPRACHE
/MIT HERRN
/		HENNINGSEN  ABT.281
/
/VORGENOMMEN WERDEN !



/AUSFERTIGUNGSDATUM:  11. APRIL 1983

/											PAGE 1

/PAGE	TITLE



/  1		 INHALTSVERZEICHNIS

/  2	CURSAB:	CURSORABFRAGE
/  3	ESCZEI:	ESCAPE + ZEICHEN AUSGEBEN
/  4	SCFILL:	SCREEN FILL
/  5	TERESE:	TERMINAL RESET
/  6	CURSOR:	SAVE AND RESTORE
/  7	CURELA:	CURSOR RELATIV VERSCHIEBEN
/  8	CLEAR:	LINE OR SCREEN DELETE
/  9	CURPOS:	ABSOLUTE CURSOR-POSITION
/ 10	CULINE:	CURRENT LINE MANIPULATION
/ 11	CUCHAR:	CURRENT CHARACTER MANIPULATION
/ 12	WINDOW:	SCROLLING WINDOW SETZEN
/ 13	STAZEI:	STATUS-ZEILE SETZEN
/ 14	STAZIN:	STATUSZEILE INITIALISIEREN
/ 15	MODE:	TERMINAL-MODE SETZEN
/											    PAGE 2

/============ CURSAB ======================

/14.12.82 VH

/DAS MACRO CURSAB DIENT ZUR IDENTIFIZIERUNG EINES SICHTGERAETES
/UND MUSS AM ANFANG DES HAUPTPROGRAMMES STEHEN
/DIR GLOBALE VARIABLE ADM3A ZEIGT DIE GERAETEART AN:
/		ADM3A = 1	VT100 TERMINAL
/		ADM3A = 0	KEIN VT100 TERMINAL
/FUER EIN NICHT KOMPATIBLES VT100 TERMINAL KANN EIN SPRUNGZIEL OPTIONAL
/ANGEGEBEN WERDEN

/DES WEITEREN KANN MIT CURSAB DIE CURSOR POSITION ABGEFRAGT WERDEN
/DIE X-KOORDINATE STEHT NACH DER ABFRAGE IN ZALOW
/DIE Y-KOORDINATE IN ZAHIGH
/FUER UEBERTRAGUNGSFEHLER KANN EIN SPRUNGZIEL ANGEGEBEN WERDEN

/AUFRUF:	CURSAB SPRUNGZIEL



.MACRO CURSAB A
	.EXTERNAL SCURA
	CALL SCURA
	.IF NB A<	JMP A>
	.IF BL A<	NOP>
.ENDM CURSAB
/			                                                               PAGE 3


/================ ESCZEI ===================
/82-03-03/JBU

/DAS MACRO ESCZEI SENDET ESCAPE UND EIN ZEICHEN ZUR TTY

/AUFRUF:	ESCZEI	A
/			MIT A:	RK	RUNDE KLAMMER AUF "(
/				EK	ECKIGE KLAMMER AUF "[
/				GA	GATTER "#
/				BA	BACKSLASH "\
/				HT	"H"
/				GL	GLEICHHEITSZEICHEN
/			OHNE A:	SENDET NUR ESCAPE

.MACRO	ESCZEI	A
	TAD (ESC)
	TYPECL 
	.IF BL A <.MEXIT>
	.IF IDN A,RK<	ESCM="(>
	.IF IDN A,EK<	ESCM="[>
	.IF IDN A,GA<	ESCM="#>
	.IF IDN A,BA<	ESCM="\>
	.IF IDN A,HT<	ESCM="H>
	.IF IDN A,GL<	ESCM="=>
	.IF NDF ESCM <.MEXIT>
	TAD (ESCM)
	TYPECL
	EXPUNGE ESCM
.ENDM	ESCZEI
/											PAGE 4

/============= SCFILL ============
/82-09-17/JBU

/FUELLT DEN BILDSCHIRM MIT KONTROLL-ZEICHEN (DT80/1: E)
/DIE ANGEGEBENE ZEIT, UND MACHT DANN CLEAR SCREEN
/NICHT FUER ADM3A VERWENDBAR

/AUFRUF:	SCFILL	A
/		MIT A:	ANGABE DER ZEIT IN ZEHNTEL-SEC.
/			OHNE ANGABE WIRD 1 SEC. ANGEZEIGT


.MACRO	SCFILL	A
	.EXTERNAL SSCFIL
	.IF BL A <		SCF=10.>
	.IF NBL A <		SCF=A>
	CALL SSCFIL
	SCF
	EXPUNGE SCF
.ENDM	SCFILL
/											PAGE 5

/=============== TERESE ===============
/82-09-17/JBU


/AUFRUF:	TERESE

/MACHT EINEN ALLGEMEINEN RESET DES TERMINALS AUF DEN LETZTEN
/GESAVETEN (!) ZUSTAND SOWIE DEN POWER-UP SELF-TEST 
/NICHT FUER ADM3A VERWENDBAR


.MACRO	TERESE
	.EXTERNAL STERES
	CALL STERES
.ENDM	TERESE
/											PAGE 6

/============= CURSOR ==============
/28.06.82/JBU

/NICHT FUER ADM3A VERWENDBAR
/CURSOR SICHERN ODER ZURUECKHOLEN

/AUFRUF:	CURSOR	A
/		MIT:	A = SAVE
/			A = RESTORE



.MACRO	CURSOR	A
	.EXTERNAL SCURSO
	.IF IDN A,SAVE<		CURS="7>
	.IF IDN A,RESTORE<	CURS="8>
	.IF NDF CURS<		.MEXIT>
	CALL SCURSO
	CURS
	EXPUNGE CURS
.ENDM	CURSOR
/											PAGE 7


/============= CURELA ===============
/03.05.82/JBU

/DAS MACRO "CURELA" VERSCHIEBT DEN CURSOR RELATIV
/ZUM BISHERIGEN STAND.

/AUFRUF:	CURELA	A,	B

/MIT	: A = QUANTITATIVE ANGABE DER VERSCHIEBUNG
/	  B = RICHTUNG DER VERSCHIEBUNG	: HOEHER
/					  TIEFER
/					  RECHTS
/					  LINKS

/OHNE ANGABE VON B : VERSCHIEBUNG NACH RECHTS


.MACRO	CURELA	Y, Z
	.EXTERNAL SCUREL
	.IF BL Y <	.MEXIT>
	.IF IDN Z,HOEHER<	CURM="A>
	.IF IDN Z,TIEFER<	CURM="B>
	.IF IDN Z,RECHTS<	CURM="C>
	.IF IDN Z,LINKS<	CURM="D>
	.IF BL Z <		CURM="C>
	.IF NDF CURM <	.MEXIT>
	CALL SCUREL
	Y
	CURM
	EXPUNGE CURM
.ENDM	CURELA
/											PAGE 8

/================ CLEAR =============
/03.05.82/JBU

/AUFRUF:	CLEAR	A
/		MIT A = TO END OF LINE          ) BEI ADM3A
/			FROM BEGINNING OF LINE  ) GANZE ZEILE
/			ENTIRE LINE             ) LOESCHEN
/			TO END OF SCREEN        ) BEI ADM3A
/			FROM BEGINNING OF SCREEN) GANZEN BILD-
/			ENTIRE SCREEN           ) SCHIRM LOESCHEN


.MACRO	CLEAR	A
	.EXTERNAL SCLEAR
	.IF IDN A,TO END OF LINE<		CLE1="0
						CLE2="K>
	.IF IDN A,FROM BEGINNING OF LINE<	CLE1="1
						CLE2="K>
	.IF IDN A,ENTIRE LINE<			CLE1="2
						CLE2="K>
	.IF IDN A,TO END OF SCREEN<		CLE1="0
						CLE2="J>
	.IF IDN A,FROM BEGINNING OF SCREEN<	CLE1="1
						CLE2="J>
	.IF IDN A,ENTIRE SCREEN<		CLE1="2
						CLE2="J>
	.IF NDF CLE1<			.MEXIT>
	.IF NDF CLE2<			.MEXIT>
	CALL SCLEAR
	CLE1
	CLE2
	EXPUNGE CLE1, CLE2
.ENDM	CLEAR
/											PAGE 9

/============== CURPOS =============
/03.05.82/JBU

/DAS MACRO CURPOS POSITIONIERT DEN CURSOR ABSOLUT


/AUFRUF:	CURPOS	A, B

/MIT:	A = ZEILEN-NR.
/	B = SPALTEN-NR.

/BEISPIEL: CURPOS 1,1	ENTSPRICHT CURSOR AUF 1.ZEILE, 1.SPALTE


.MACRO	CURPOS	A, B
	.EXTERNAL SCURPO
	.IF BL A <		.MEXIT>
	.IF BL B <		.MEXIT>
	CALL SCURPO
	A
	B
.ENDM	CURPOS
/											PAGE 10

/================ CULINE ==============
/82-08-27/JBU

/DAS MACRO CULINE ERMOEGLICHT MANIPULATIONEN AN DER AKTUELLEN ZEILE
/NICHT FUER ADM3A VERWENDBAR

/AUFRUF:	CULINE	A
/MIT:	A =	TOP	:CURRENT LINE TO DOUBLE HIGH TOP HALF
/		BOTTOM	:   "      "   "    "    "   BOTTOM "
/		NORMAL	:   "      "   " NORMAL MODE
/		WIDE	:   "      "   " WIDE MODE

/OHNE ANGABE VON A	:   "      "   " NORMAL MODE



.MACRO	CULINE	A
	.EXTERNAL SCULIN
	.IF BL A<		CUM="5>
	.IF IDN A,TOP<		CUM="3>
	.IF IDN A,BOTTOM<	CUM="4>
	.IF IDN A,NORMAL<	CUM="5>
	.IF IDN A,WIDE<		CUM="6>
	.IF NDF CUM<		.MEXIT>
	CALL SCULIN
	CUM
	EXPUNGE CUM
.ENDM CULINE
/											PAGE 11

/============== CUCHAR ===============
/82-08-27/JBU


/NICHT FUER ADM3A VERWENDBAR
/CURRENT CHARACTER MANIPULATION

/AUFRUF:	CUCHAR	A
/MIT:	   	   A = NORMAL; CANCEL PREVIOUS
/			A = BOLD ON
/			A = UNDERSCORE ON
/			A = BLINK ON
/			A = INVERSE ON

/	OHNE ANGABE VON A : NORMAL



.MACRO	CUCHAR	A
	.EXTERNAL SCUCHA
	.IF BL A<			CUC="0>
	.IF IDN A,NORMAL<		CUC="0>
	.IF IDN A,BOLD ON<		CUC="1>
	.IF IDN A,UNDERSCORE ON<	CUC="4>
	.IF IDN A,BLINK ON<		CUC="5>
	.IF IDN A,INVERSE ON<		CUC="7>
	.IF NDF CUC<			.MEXIT>
	CALL SCUCHA
	CUC
	EXPUNGE CUC
.ENDM	CUCHAR
/											PAGE 12

/=============== WINDOW ==============
/02.06.82/JBU


/DAS MACRO WINDOW SETZT EIN SCROLLING WINDOW ZWISCHEN
/DEN ZEILEN A UND B (EINSCHLIESSLICH).
/NICHT FUER ADM3A VERWENDBAR

/AUFRUF:	WINDOW	A, B

/MIT:	A = OBERE GRENZE
/	B = UNTERE GRENZE

/BEISPIEL:	WINDOW 1,5 SETZT DAS DURCHLAUFENDE FENSTER ZWISCHEN
/		DIE ZEILEN 1 UND 5


.MACRO	WINDOW	A, B
	.EXTERNAL SWINDO
	.IF BL A <	.MEXIT>
	.IF BL B <	.MEXIT>
	CALL SWINDO
	A
	B
.ENDM	WINDOW
/											PAGE 13

/=============== STAZEI ============
/19.08.82/JBU

/NICHT FUER ADM3A VERWENDBAR

/AUFRUF:	STAZEI	A, B
/MIT:	A = BESCHRIFT, EINZEL, MESSEN, PROGRAMM, LAEUFT,
/	    STEP, WARTET, AUFNAHME, EDITIEREN, ZEIT:, KASSETTE
/	    EX: CTRL F, EX: ESC, EX: RETURN
/	B = INVERSE ON, NORMAL
/		(NUR JEWEILS 1 ANGABE ERLAUBT)
/OHNE ANGABE VON B WIRD NORMAL GESETZT


.MACRO	STAZEI	A, B
	.EXTERNAL SSTAZE,TESTA1,TESTA2,TESTA3,TESTA4,TESTA5,TEST5A
	.EXTERNAL TEST5B,TEST5C,TEST5D,TESTA6,TESTA7,TEST8A,TEST8B
	.EXTERNAL TEST8C,VERZOE
	CALL SSTAZE
	.IF IDN A,BESCHRIFT<		1
					TESTA1>
	.IF IDN A,EINZEL<		11.
					TESTA2>
	.IF IDN A,MESSEN<		21.
					TESTA3>
	.IF IDN A,PROGRAMM<		31.
					TESTA4>
	.IF IDN A,LAEUFT<		41.
					TESTA5>
	.IF IDN A,STEP<			41.
					TEST5A>
	.IF IDN A,WARTET<		41.
					TEST5B>
	.IF IDN A,AUFNAHME<		41.
					TEST5C>
	.IF IDN A,EDITIEREN<		41.
					TEST5D>
	.IF IDN A,ZEIT:<		51.
					TESTA6>
	.IF IDN A,KASSETTE<		61.
					TESTA7>
	.IF IDN A,EX: CTRL F<		71.
					TEST8A>
	.IF IDN A,EX: ESC<		71.
					TEST8B>
	.IF IDN A,EX: RETURN<		71.
					TEST8C>
	.IF IDN B,INVERSE ON<		"7>
	.IF IDN B,NORMAL<		"0>
	.IF BL B<			"0>
.ENDM	STAZEI

/											PAGE 14

/=============== STAZIN ============
/17.12.82/JBU

/NICHT FUER ADM3A VERWENDBAR

/DAS MACRO STAZIN INITIALISIERT DIE STATUS-ZEILE MIT HILFE
/DER ROUTINE STATUZ.

/AUFRUF:	STAZIN


.MACRO	STAZIN
	.EXTERNAL STATUZ,TESTA1,TESTA2,TESTA3,TESTA4,TESTA5,TEST5A
	.EXTERNAL TEST5B,TEST5C,TEST5D,TESTA6,TESTA7,TEST8A,TEST8B
	.EXTERNAL TEST8C
	CALL STATUZ
.ENDM	STAZIN


/									PAGE 15

/=============== MODE ============
/28.01.83/JBU

/NICHT FUER ADM3A VERWENDBAR
/KEINE REAKTION AN EINEM ANGESCHLOSSENEM DRUCKER

/DAS MACRO MODE SETZT DIE TERMINAL-MODES (SEITE 4-26 DER
/DT80/1 BESCHREIBUNG).

/AUFRUF:	MODE	A


.MACRO	MODE	A
	.EXTERNAL SMODE, SMOD1
	.IF IDN A,AUTO REPEAT ON<		MO1="8
						MO2="h>
	.IF IDN A,AUTO REPEAT OFF<		MO1="8
						MO2="l>
	.IF IDN A,COLUMN 132.<			MO1="3
						MO2="h>
	.IF IDN A,COLUMN 80.<			MO1="3
						MO2="l>
	.IF IDN A,CURSOR APPLICATION<		MO1="1
						MO2="h>
	.IF IDN A,CURSOR KEY<			MO1="1
						MO2="l>
	.IF IDN A,INTERLACE ON<			MO1="9
						MO2="h>
	.IF IDN A,INTERLACE OFF<		MO1="9
						MO2="l>
	.IF IDN A,ORIGIN RELATIVE<		MO1="6
						MO2="h>
	.IF IDN A,ORIGIN ABSOLUTE<		MO1="6
						MO2="l>
	.IF IDN A,SCREEN REVERSE<		MO1="5
						MO2="h>
	.IF IDN A,SCREEN NORMAL<		MO1="5
						MO2="l>
	.IF IDN A,SCROLLING SMOOTH<		MO1="4
						MO2="h>
	.IF IDN A,SCROLLING JUMP<		MO1="4
						MO2="l>
	.IF IDN A,ATS<				MO1="2
						MO2="l>
	.IF IDN A,WRAPAROUND ON<		MO1="7
						MO2="h>
	.IF IDN A,WRAPAROUND OFF<		MO1="7
						MO2="l>
	.IF IDN A,LINE FEED<		CALL SMOD1
					"h
					.MEXIT>
	.IF IDN A,NEW LINE<		CALL SMOD1
					"l
					.MEXIT>
	.IF IDN A,KEY PAD APPLICATION<	ESCZEI GL
					.MEXIT>
	.IF IDN A,KEY PAD NUMERIC<	ESCZEI GT
					.MEXIT>
	.IF NDF MO1<		.MEXIT>
	.IF NDF MO2<		.MEXIT>
	CALL SMODE
	MO1
	MO2
	EXPUNGE MO1, MO2
.ENDM	MODE


.LIST