|
|
| 04.12.2025 | Archiv # Recherche # Links # Kontakt # Gästebuch # Impressum |
|
Index Login Die Anzeige des Archivs erfolgt grafisch. Ändern |
Kurs: GeoProgrammer (Teil 9)INPUT Jedem, der schon einmal unter BASIC programmiert hat, ist der Befehl INPUT ein Begriff. Er dient zur Eingabe von Zahlen oder Texten in Variablen. GEOS ist da nicht so komfortabel. Für die Eingabe von Text steht uns die Dialogbox als recht einfache Möglichkeit zur Verfügung, siehe dazu im Kursteil 6 nach. Aber mit Zahlen sieht es ganz schlecht aus.
jsr DoDlgBox ; Dialogbox aufbauen
ldx #CANCEL ; Register mit Wert für
; Abbruch-Feld laden
cpx sysDBData ; Vergleichen mit
; Mausklickstatus
bne Weiter ; Bei Return Taste
; gehe zu Weiter
jmp EnterDesktop ; Bei Abbruchklick
; zum Desktop
Weiter:
Zur Überprüfung der Zahlumrechnung wird die ermittelte Zahl mit PutDecimal ausgegeben. An dieser Stelle wird der GeoProgrammerKurs beendet, um auch für andere Kurse Platz zu machen. Von nun ab werden in unregelmäßigen Abständen in einer neuen Rubrik, GeoProgrammmer Tips, Tricks und weitere Hilfen vorgestellt. Der gesamte GeoProgrammerKurs ist auf einer Diskette zusammengefaßt worden. Diese Disk, GUP Spezial 1, kann innerhalb der GeoThek bestellt werden. Auf der Disk finden sich die Texte zu allen Kursteilen, die Listings der Demoprogramme und die lauffähigen Programme selbst. Außerdem befindet sich ein kompletter allgemeiner Assemblerkurs für den C=64 auf der Diskette.
; Umrechnung der Textzahl in einen 2 Byte-Wert
Weiter:
LoadB a2,48 ; Variable a2 mit Wert für "0" laden
LoadW a9,1 ; In Variable a9 Dezimalposition
LoadB a3,10 ; Variable a3 Faktor für Dezimalposition
LoadW AusgabeZahl,0; Ergebnisvariable mit NULL laden
LoadB a8L,4 ; Variable a8L = Größe des Textes - 1
jmp Schleife ; Einsprung in die Berechnungsschleife
Mal_10: ; Dezimalposition mit 10 multiplizieren
ldy #$72 ; Register Y und X zeigen auf die
ldx #$7e ; Faktoren (Variablen a6L und a9)
jsr BMult ; Ergebnis im Zeiger von X
Leerstelle: ; Geprüfte Stelle war keine Zahl
dec a8L ; Reduziere a8L um 1
bcs Ende ; Wenn aSL <0 also 255 dann ENDE
Schleife: ; Ermittlung ob Zahl oder Text
Idx a8L ; X Register mit der zu untersuchenden
; Stelle laden
lda EingabeZahl,x; In Akku den Wert der zu
; untersuchenden Stelle laden
cmp #48 ; Vergleiche mit Wert für "0"
bmi Leerstelle ; Wenn kleiner dann zu LEERSTELLE
cmp #58 ; Vergleiche mit Wert für ":"
bpl Leerstelle ; Wenn größer dann zu LEERSTELLE
sec ; Übertragsbit setzen für Subtraktion
sbc a2 ; Von AkKu Wert für "0" abziehen
sta a6L ; Ergebnis in a6L festhalten
MoveW a9,a5 ; Variable a9 nach a5 retten
ldy #$78 ; Register Y und X auf die Faktoren
ldx #$7e ; zeigen lassen
jsr BMult ; Ermittelten Wert mit Dezimalposition
; Multiplizieren
AddW a9,AusgabeZahl; Dieses Ergebnis zu Ausgabezahl addieren
MoveW a5,a9 ; Variable a9 mit alten Wert versehen
jmp Mal_10 ; Dezimalposition nach links verschieben
Ende: ; Ende der Berechnungen
Jürgen Heinisch
Kurzlink hierhin: http://geos-printarchiv.de/953 |
|
Letzte Änderung am 01.11.2019 |
|