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