|
|
|
07.12.2024 | Archiv # Recherche # Links # Kontakt # Gästebuch # Impressum | |
Index Login Die Anzeige des Archivs erfolgt grafisch. Ändern |
GeoCom Workshop #7VLIR und Overlay-Module Jedes größere GEOS-Programm ist in einer sog. VLIR-Struktur gespeichert. Ohne nun groß auf das Diskettenformat dieser Struktur einzugehen, dürfte der Sinn jedem GEOS-User bekannt sein: Viele Programme sind so groß, daß sie nicht in einem Rutsch in den Speicher passen. Daher wird immer erst ein Hauptteil, der für die Steuerung und Abfrage benötigt wird, geladen und dann je nach Befehl des Nutzer ein Programmteil, der in der Regel mit "Modul" bezeichnet wird, nachgeladen, er enthält dann auch die nötigen Befehle. Dazu gibt es im wesentlichen drei Befehle: GLOBALEND, OVERLAYMOD und GOTOMOD. Sie haben im einzelnen folgende Aufgaben: Die Verwendung der einzelnen Befehle werde ich weiter unten erläutern. Zuvor noch ein paar Besonderheiten:
Doch nun zu unserem Statistikprogramm. Der globale Teil soll die Menüabfrage, die Tastaturroutine und die Hilfsmittelverwaltung enthalten. Bei der Menüabfrage sollen jedoch nur noch Sprungadressen zu den jeweiligen Nachlademodule stehen. Dies sieht im einzelnen so aus (Auslassungen sind durch (...) gekennzeichnet und bereits aus den anderen Teilen bekannt): (...) BYTEVAR schongewürfelt, pos, action (...) ROW 8 STRVAR16; tools (drei Zeilen entfallen) LABEL hauptprogramm, keyrout (eine Zeile entfällt) LABEL r_info, r_sim, r_load, r_save, r_print, r_end (...) @hauptprogramm (...) @r_info (...) @r_sim FIRSTMENU action=1 GOTOMOD 1 RETURN @r_load FIRSTMENU GOTOMOD 2 RETURN @r_save FIRSTMENU GOTOMOD 3 RETURN @r_print FIRSTMENU action=2 GOTOMOD 1 RETURN @r_end (...) @keyrout (...) @hilfsmittel (...) GLOBALEND Modul 0 werden wir für die Programminitialisierung verwenden. Modul 1 enthält die Routinen zur Simulation und zum Drucken, Modul 2 wird zusammen mit Modul 3 erst in der nächsten Folge ergänzt werden, hier kommen die Diskettenbefehle hinein. Wofür ist die neue Variable "action" da? Der Hauptteil wäre damit abgeschlossen, wenden wir uns also dem Modul 0 - der Programminitialisierung - zu: BYTEVAR last FCLASS "",5,8,tools last=backbyte POKE ((ADR m_geos)+1),(((9 - last)*14)+15) POKE ((ADR m_geos)+6),((9 - last)OR%10000000) (würfelzahl<0>)=0 (...u.s.w. bis Index "5" ...) gesamtwert=0 schongewürfelt=0 GOTO hauptprogramm OVERLAYMOD "GOTO hauptprogramm" springt in die Programmschleife, die alles steuert, und OVERLAYMOD beendet diesen Teil. Also folgt nun Modul 1: BYTEVAR zähler, würfelwert, zufallszahl INTVAR AT $850a; random ROW 640 BYTEVAR datenpuffer ROW 1920 BYTEVAR treiberpuffer LABEL simulation, drucken, zahlenreihe_erzeugen, grafik_aufbauen, würfel_darstellen IF (action==1) THEN : GOTO simulation : ENDIF IF (action==2) THEN : GOTO drucken : ENDIF @simulation (... hier steht der Programmcode aus @r_sim nach dem Befehl FIRSTMENU, siehe GUP 38...) RETURN @drucken (... hier steht der Programmcode aus @r_print nach dem Befehl FIRSTMENU, siehe GUP 38...) RETURN @zahlenreihe_erzeugen (...) @grafik_aufbauen (...) @würfel_darstellen (...) OVERLAYMOD Nun wird deutlich, warum die Simulation und das Drucken in ein Modul kommen: Beide brauchen die gleichen Grafikunterroutinen. Natürlich könnte man nun den Abschnitt @grafik_aufbauen auch zweimal implementieren, doch wäre dies Verschwendung von Diskettenspeicherplatz. Auch könnte sich dieses Label im Hauptprogramm befinden, nur ist es ratsam, jenes immer so kurz wie möglich zu gestalten. Eine kurze Vorbereitung für den nächsten Teil treffen wir noch, dann ist für diese Ausgabe alles fertig: Overlaymodul 2 - Laden von alten Daten RETURN OVERLAYMOD Overlaymodul 3 - Speichern von Datenreihen RETURN Durch diese Befehlsfolge haben wir noch die Module 1 und 3 auf Diskette vorbereitet. So das war's erstmal. Viel Spaß beim Programmieren.
Olaf Dzwiza
Kurzlink hierhin: http://geos-printarchiv.de/2083 |
|
Letzte Änderung am 01.11.2019 |