|
|
28.03.2024 | Archiv # Recherche # Links # Kontakt # Gästebuch # Impressum |
Index Login Die Anzeige des Archivs erfolgt grafisch. Ändern |
Kurs: GeoProgrammer (Teil 8)Die Seriennummer Mit dem letzten Kursteil wurde das letzte Demo aus dem GEOS Programmierkurs aus dem 64er Sonderheft 28 "Alles über GEOS" behandelt. Daher streben wir nun zu neuen Ufern, Thema dieses Kurses ist die Seriennummer. Jedes GEOS Startsystem hat eine eigene Seriennummer, dabei gibt es 65536 verschiedene. Anhand dieser kann ein Anwendungsprogramm wie z. B. GeoWrite, welches installiert werden mußte, erkennen ob es von dem richtigen Startsystem aufgerufen wurde. In unserem Beispielprogramm wird die Seriennummer durch die Routine 'PutDecimal' dargestellt. Durch 'jsr PutDecimal' wird die in Register r0 vorhandene Zahl ausgegeben. Es ist nur möglich, Zahlen bis zu 16 Bit (2 Byte), also ein Wort auszugeben. Dabei muß vorher in Register r11 die X-Postion und in Register r1H die Y-Position, an der die Zahl dargestellt werden soll, angegeben werden. Mit Hilfe des Akkumulators kann man noch eine Formatierung der dargestellten Zahl erreichen. Dies ist in unserem Beispiel nicht eingesetzt, probiert es mal aus. Folgende Regel gilt hierzu: Ist Bit 7 gesetzt, wird linksbündig ausgegeben, anderfalls rechtsbündig. Ist Bit 6 gesetzt, werden führende Nullen unterdrückt, andernfalls ausgegeben. Ein Beispiel: LoadW r11,40 ;X-Position und LoadB r1H,40 ;Y-Position für Zahlausgabe lda #%11000000 ;linksbündig ohne führende Nullen jsr PutDecimal ; Zahl ausgeben Abgerundet wird das Programm durch die schon bekannte Routine zum löschen des Bildschirms und eine Dialogbox mit einem OK-Feld. Dieses wurde in den vorangegangenen Kursen bereits genügend behandelt. Wo liest die Routine GetSerialNumber aber nun die Seriennummer aus. Irgendwo muß sie ja schon im RAM stehen. Bei GEOS 1.2 steht sie in $9f27/$9f28, bei GEOS 1.3 in $9ea7/$9ea8, bei GEOS 2.0 und allen GEOS 128 Versionen in $9f54/$9f55. Mit diesen Informationen versorgt, könn Ihr nun auf eigene Ideen für Experimente kommen. Viel Spaß beim programmieren.
-Jürgen Heinisch-
;Dieses PGM ermittelt die Seriennummer der aktuellen Geosversion .if Pass1 ;Dem Assembler mitteilen welche .include geosSym ;Dateien eingebunden werden .include geosMac ;müssen. .endif .psect ;Programmanfangsadresse ProgStart: LoadW r0,ClearScreen ;Zeiger auf Bildschirmlöschroutine jsr GraphicsString ;Bildschirm löschen jsr i_PutString ;Textausgabe vorbereiten .word 20 ;X-Position des Cursers .byte 20 ;Y-Position des Cursers .byte "Seriennummer:" ;Text ausgeben .byte NULL ;Ende der Textausgabe jsr GetSerialNumber;Seriennummer lesen LoadW r11,40 ;X-Position und LoadB r1H,40 ;Y-Position für Zahlausgabe jsr PutDecimal ;Zahl ausgeben LoadW r0,Dialogbox1 ;Zeiger auf Dialogboxtabelle jsr DoDlgBox ;Dialogbox aufbauen jmp EnterDesktop ;Programm beenden Dialogbox1: ;Dialogboxtabelle .byte $1f,100,180 ;Muster und Y-Begrenzung .word 200,300 ;X-Begrenzung .byte OK,3,50 ;OK-Feld an X/Y Position .byte NULL ; Ende der Tabelle ClearScreen: ;Tabelle für Bildschirm löschen .byte NEWPATTERN,2 ;Füllmuster bestimmen .byte MOVEPENTO ;Punktcursor auf X/Y .word 0 .byte 0 .byte RECTANGLETO ;Rechteck zeichnen bis X/Y .word 319 .byte 199 .byte NULL ;Ende der Tabelle ProgEnd: ;Programmendekennzeichen
= = = = = = = = = = = = = = = = = = = = =
-Marcus Siemens/J. Heinisch-
Kurzlink hierhin: http://geos-printarchiv.de/931 |
Letzte Änderung am 01.11.2019 |