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

Index
Register
Login

Die Anzeige des Archivs erfolgt grafisch. Ändern

Kurs: GeoProgrammer (Teil 8)

Autoren: Jürgen Heinisch, Marcus Siemens

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.
Um dies auszutesten stellt uns GEOS eine eigene Routine zur Verfügung:
GetSerialNumber. Beim Aufruf durch 'jsr GetSerialNumber' wird die Seriennummer aus dem RAM in das Register r0 übertragen. Aus diesem kann man es nun leicht auslesen.

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

 

 

= = = = = = = = = = = = = = = = = = = = =


   Fehler in GeoChart
Bei umbenennen eines Dokuments im Chart-Modus bleibt der alte Name sichtbar unter dem neuen stehen. In diesem Modus können auch keine kleinen deutschen Umlaute bei verändern des Textes eingegeben werden.

 

-Marcus Siemens/J. Heinisch-

 

 

 




Dieser Artikel ist Bestandteil von:

Ausgabe 09

! - - - - - M I C R O F I L M - - - - - ! | Editorial | Hardware - Reparaturservice | Regionalgruppen | Druckerhilfen | Arbeiten mit GEOS | GEOS - Echtzeituhr | Ersatz der 1764 | 1 MegaByte RAM und Festplatte für GEOS | Anschluß C128 an TV | Drucken mit Interface | MegaAssembler - Kurzbericht | MegaFonts #2, Schon gewußt? | Der Schlüssel zum Layout: Das Seitenraster | Kurs: GeoProgrammer (Teil 8) | Anschluß des C128/C128 D | Disk-Label 3,5 " | Allgemeines | Drucker-Info


GeoProgrammer

Kurs: GeoProgrammer (Teil 1) | Kurs: GeoProgrammer (Teil 2) | Kurs: GeoProgrammer (Teil 3) | Kurs: GeoProgrammer (Teil 4) | Kurs: GeoProgrammer (Teil 5) | Kurs: GeoProgrammer (Teil 6) | Kurs: GeoProgrammer (Teil 7) | Kurs: GeoProgrammer (Teil 8) | Kurs: GeoProgrammer (Teil 9)


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


letzte Änderung am 01.01.1970