Logo: Geos Online Print Archiv
G.O.P.A. - Geos Online Print Archiv
18.11.2018 Archiv  #  Recherche  #  Links  #  Kontakt  #  Gästebuch  #  Impressum

Index
Register
Login

Die Anzeige des Archivs erfolgt grafisch. Ändern

GeoCom Workshop #6 - Etwas über Hilfsmittel und Drucker

Autor: Olaf Dzwiza

Es geht ans Drucken!
Zuvor jedoch ein genereller Hinweis: Wer unter GeoCom druckt, muß wissen, daß er sehr viel Variablenspeicher braucht (genau 2560 Byte = 2,5 kByte). Wie man hier durch Auslagerung in Module Speicherplatz sparen kann, soll uns erst später beschäftigen.

Wir brauchen: 1920 Byte für den Druckertreiber als zusätzlichen Speicher und 640 Byte Puffer für Grafikdaten. Also definieren wir:

   ROW 640 BYTEVAR datenpuffer
   ROW 1920 BYTEVAR treiberpuffer

Alles weitere folgt nun ab dem Label r_print zwischen FIRSTMENU und RETURN:
Erstmal brauchen wir eine Abfrage, ob bereits Daten vorhanden sind. Im Fall "Daten vorhanden", bekommt der User eine Möglichkeit, den Drucker bereitzumachen:
   STRNBOX "/BBitte Drucker einschalten","und Papier einlegen/P".""
sonst wird eine entsprechende Fehlermeldung ausgegeben.

Gibt es keine Probleme, wird der Druckertreiber auf dem aktuellen Laufwerk gesucht und initialisiert:
   PRINTINIT treiberpuffer

Fortgeschrittene können hier soweit eine Ergänzung schreiben, das auf allen aktiven Laufwerken gesucht wird. Dies ist jedoch nicht GEOS-typisch. Eine nähere Ausführung werde ich hierzu nicht machen, da noch die Grundlagen zur Diskettenprogrammierung fehlen.

Wenn das Laden fehlerfrei war, folgt der Druck, sonst eine entsprechende Meldung. Die Grafikbefehle sind dazu da, die nicht benötigten Bildschirmteile zu verdecken, da wir nur eine Bildschirmhardcopy machen:

   @r_print
   FIRSTMENU
   IF   (schongewürfelt==1) THEN
          STRNBOX "/BBitte Drucker einschalten","und Papier einlegen./P",""
        PRINTINIT treiberpuffer
        IF (iostat==0) THEN
          PATTERN 0
          RECT 0,0,319,39  :  RECT 0,176,319,199
          RECT 0,0,44,199  :  RECT 276,0,319,199
          STARTPRINT
               HARDCOPY 0,(128+20), 25, datenpuffer
          STOPPRINT
          PRINTDONE
          PATTERN  2
          RECT 0,0,319,199
          grafik_aufbauen
          MENU h_menü,0
          IMPRINT 0,0,74,14
        ELSE
          ERROR
        ENDIF
      ELSE
        STRNBOX "/BZunächst muß eine Zahlenreihe","erzeugt werden!/P",""
      ENDIF
      RETURN

Die Zahlen bei "HARDCOPY" haben folgende Funktionen:

 0:   Drucken ab der 0.ten Bildschirmzeile

 (128+20):   120 entspricht Bit7 gesetzt - wenn dies so ist, werden
             Bit0 bis Bit6 als Abstand in Bildpunkten (hier: 20 -
             %0010100) interpretiert, also ist diese Zahl für den
             linken Druckrand zuständig.

 25:   zu druckende Zeilen

Hilfe - oder die Suche nach den DeskAccessoires
Wir brauchen zunächst drei Variablen:

   BYTEVAR pos,last
   ROW 8 STRVAR16;tools

"pos" ist die Position des angeklickten Hilfsmittels im GEOS-Menü, "last" das letzte vorhandene Programm und "tools" die Liste der ersten acht DAs auf dem Startlaufwerk von unserem Programm.

Erst einmal sind dieses Hilfsmittel zu suchen (einfügen direkt nach @hauptprogramm):

   FCLASS"",5,8,tools
   ("" = keine bestimmte Dateiklasse, 5 = GEOS-filetyp,
   8 = Max. Anzahl der zu suchenden Files)
   last=backbyte

Dann ist die Länge des GEOS-Menüs zu korrigieren, falls mal weniger als acht DAs gefunden werden:

   POKE ((ADR m_geos)+l),(((9-last)*14)+15)
   POKE ((ADR m_geos)+6),((9-last)OR%10000000)

Hier könntet Ihr ins Grübeln geraten... Richtig! Das Objekt "m_geos" ist noch zu ergänzen, damit die POKE-Befehle auch Ihren Zweck erfüllen.

"m_geos" muß nun 9 Einträge haben, dabei ist Eintrag 0 schon aus Teil 5 bekannt. Die Einträge 1 bis 8 enthalten die Dateinamen, die mit FCLASS gefunden wurden, also muß es "tools, position" heißen (siehe Bild), "position" ist die Länge der Namen in der Zeichenkette: 16 Zeichen plus Nullbyte pro Eintrag, also 0,17,34 u.s.w.

Als Ansprungroutine wird @hilfsmittel (definieren!!!) angegeben:

   @hilfsmittel
   pos=menunum
   FIRSTMENU
   GETFILE (tools<(pos - 1)>),0,curdrive,""
   RECOVER 0,0,319,199
   CLRCOL
   IF (iostat<>0) THEN
     ERROR
   ENDIF
   RETURN

GETFILE lädt jene Datei, deren Position durch pos/menunum von Nutzer ausgewählt wurde von aktuellen Laufwerk (curdrive); RECOVER stellt den Bildschirm nach dem Verlassen des DeskAccessoires wieder her, die Fehlerroutine dient zum Schutz vor Diskettenproblemen.

Jetzt haben wir das Programm compiliert und getestet und entdecken noch einen kleinen Schönheitsfehler: Das Menü ist nach dem Aufruf eines Hilfsmittels nicht mehr sichtbar (aber noch vorhanden!).
Ganz einfach: RECOVER holt Daten aus dem Hintergrundspeicher zurück, der Menüaufbau wird aber nur in den Vordergrund gezeichnet. Also müssen wir nach dem Befehl MENU im @hauptprogramm das Menü selber in den Hintergrund sichern:

   IMPRINT 0,0,74,14

Die letzten beiden Koordinaten sind u. U. an Eure eigene Menüleiste anzupassen, sie geben die rechte, untere Ecke des Menüs an.

So, beim nächsten Mal geht es um VLIR-Strukturen. Die Workshop-Disk wurde wieder einmal aktualisiert und ist gegen Unkostenerstattung bei mir zu haben.

Olaf Dzwiza

 

 

 




Dieser Artikel ist Bestandteil von:

Ausgabe 38

! - - - - - M I C R O F I L M - - - - - ! | Jahreshaupttreffen '95 ?! | Neu: Lastschriftverfahren | Editorial | Das Jahreshaupttreffen 1995 | Geoworks Einsteiger Kurs | System des GEOS User Club | Aktuelles | 32. Regionaltreffen in Hannover! | News Regio Baden | GUP, Zeit und Artikel... | Test CLI V3.0 | Neu: Manager-Programm | Neues GEOS Adventure Spiel -Jerry Baumwolle- in Vorbereitung! | CMD-Trackball | Test der Diskette -Erste Hilfe für Geos- | Neue Druckertreiber für GEOS 64/128 | GeoCom Workshop #6 - Etwas über Hilfsmittel und Drucker | GeoCom aktuell: - GeoCom-Update | Neues von der GeoThek #7 | Diskettenreperatur | PD Disk für GWE2 | Bindery & Book Reader = ? | Aktuelles 2 | Bindery -... erste Eindrücke | PaperClip | PatchWORKS - GEOS-Importfilter für WORKS-Datenbank-Dateien | GeoFile & GeoWrite verbinden | Die Fachpresse und Geoworks | Formen durch -Duplizieren- erstellen | DTP - aber richtig! (1) | Quintessenz | Faxen mit GWE2 & Bitfax SR | Offline Antwort mit GeoComm | KaBaBu & EA Fehlerkorrektur | Der letzte Tip ...


GeoCom Workshop

GeoCom Workshop #1 | GeoCom Workshop #2 | GeoCom Workshop #3 | GeoCom Workshop #4 | GeoCom Workshop #5 | GeoCom Workshop #6 - Etwas über Hilfsmittel und Drucker | GeoCom Workshop #7


Kurzlink hierhin: http://geos-printarchiv.de/2038


letzte Änderung am 01.01.1970