C 64
Tips & Tricks

Neues vom Hypra-Basic

Zehn anwenderbezogene Befehle erwarten Sie diesmal. Sie unterstützen die Menüprogrammierung und das Diskettenhandling.

Auch in dieser Ausgabe sollen Hypra-Basic, dem Listing des Monats aus der Ausgabe 4/86, neue Befehle angehängt werden. Alle Module halten sich diesmal an die Philosophie des Hypra-Basic, in sich geschlossen und frei verschiebbar zu sein. Bei Modul 30 ist zu beachten, daß es sich in den Interrupt hängt. Vor dem Aufrufen einiger Befehle muß der Interrupt ausgeschaltet werden. Es ist übrigens aus dem Sonderheft Tips & Tricks 2/86 entnommen.

Der Cursor wird auf Spalte 12 und Zeile 10 positioniert und die angehängte Liste gePRINTet.
Ab der nächsten Ausgabe erwarten Sie die ersten Module unserer Leser — darunter könnten auch Sie sich befinden. Denn die besten der uns eingesandten Module werden natürlich veröffentlicht. Dazu werden wir in der nächsten Ausgabe das Erstellen und Einbauen eines eigenen Befehls ausführlich erklären, um Anfängern die Arbeit mit Hypra-Basic zu erleichtern.

(R. Aretz/og)
PROGRAMM : 21ERW .ASS     C000 C018
-----------------------------------
C000 : 20 9E B7 86 D3 20 FD AE   C2
C008 : 20 9E B7 86 D6 20 10 E5   B0
C010 : 20 FD AE 4C A4 AA 00 C0   85
Listing 1. Modulnummer: 21. Anzahl der Befehle: 1.
1) SET 49152-49173,0
Funktion: Setzt den Cursor auf eine bestimmte Position und führt einen Printbefehl aus;
Syntax: SET Spalte, Zeile, Variablenliste;
Beispiel: SET 10,12,a$;"Text";b
PROGRAMM : 22ERW .ASS     C000 C017
-----------------------------------
C000 : 4C 0B C0 20 79 00 F0 0C   79
C008 : 20 FD AE 20 9E B7 20 FF   FF
C010 : E9 18 90 EF 60 00 C0      98
Listing 2. Modulnummer: 22. Anzahl der Befehle: 1.
1) CLEARZ 49152-49172,0
Funktion: Löscht angegebene Bildschirm-Zeilen;
Syntax: CLEARZ nr (,nr,nr...)
Beispiel: CLEARZ 14,15
Die Bildschirmzeilen mit den Nummern 14 und 15 werden gelöscht. Die oberste Zeile hat hier die Nummer 0.
PROGRAMM : 23ERW .ASS     C000 C055
-----------------------------------
C000 : 20 8A AD 20 F7 B7 A0 00   94
C008 : 20 73 00 F0 06 99 3C 03   24
C010 : C8 D0 F5 A2 00 BD 4D C0   B7
C018 : 99 3C 03 C8 E8 E0 06 D0   F8
C020 : F4 A5 01 85 9B 78 A9 35   66
C028 : 85 01 A0 00 B1 14 85 02   2C
C030 : A5 9B 85 01 58 A5 7B 48   56
C038 : A5 7A 48 A9 3C 85 7A A9   8F
C040 : 03 85 7B 20 A5 A9 68 85   3D
C048 : 7A 68 85 7B 60 B2 C2 28   BE
C050 : 32 29 00 00 C0            65
Listing 3. Modulnummer: 23. Anzahl der Befehle: 1.
1) RAM 49152-49228,6
Funktion: Liest Wert aus dem RAM und weist diesen einer Variablen zu;
Syntax: RAM adresse,variable
Beispiel: RAM 40965,a
In diesem Beispiel wird der Inhalt der Adresse 40965 (ähnlich PEEK) in die Variable a geschrieben. Sie haben somit die Möglichkeit auf das »versteckte« RAM direkt zuzugreifen, da sich dieser Befehl ausschließlich auf den RAM-Bereich bezieht.
PROGRAMM : 24ERW .ASS     C000 C07F
-----------------------------------
C000 : 20 9E B7 8E 3C 03 20 FD   87
C008 : AE 20 8A AD 20 F7 B7 20   FF
C010 : FD AE 20 9E B7 8E 3D 03   2B
C018 : 20 FD AE 20 9E B7 8E 3E   45
C020 : 03 A5 14 8D 00 D4 A5 15   14
C028 : 8D 01 D4 A9 00 85 C6 A9   3B
C030 : 0F 8D 18 D4 A9 19 8D 05   4A
C038 : D4 A9 44 8D 06 D4 A9 32   B6
C040 : 8D 02 D4 A9 46 8D 03 D4   BF
C048 : AD 3E 03 8D 04 D4 AE 3D   A3
C050 : 03 20 72 C0 A9 00 8D 04   F1
C058 : D4 AE 3D 03 20 72 C0 AD   27
C060 : 3C 03 D0 06 A5 C6 F0 C7   F7
C068 : D0 05 CE 3C 03 D0 C0 60   70
C070 : A2 0A A0 00 EA EA C8 D0   0A
C078 : FB CA D0 F6 60 00 C0      FA
Listing 4. Modulnummer: 24. Anzahl der Befehle: 1.
1) BEEP 49152-49263,13
Funktion: Erzeugt einen Signalton.
Syntax: BEEP n,frequenz,tondauer,wellenform
Beispiel: BEEP 10,8000,50,33
n = wie oft soll der Ton gespielt werden.
n = 0 Ton wird so lange wiederholt, bis eine Taste gedrückt wird. Die gedrückte Taste kann mit dem GET-Befehl erkannt werden.
8000 = Frequenzparameter laut Handbuch.
50 = Tondauer: Je größer desto länger
Wellenform: 33 = Sägezahn
17 = Dreieck
65 = Rechteck
129 = Rauschen
PROGRAMM : 25ERW .ASS     C000 C05B
-----------------------------------
C000 : 20 9E B7 8A 86 9B 20 FD   70
C008 : AE 20 9E B7 20 70 E5 20   C2
C010 : FD AE 20 9E B7 86 9C 20   A3
C018 : FD AE 20 8A AD 20 F7 B7   F1
C020 : A5 01 85 02 78 A9 35 85   9C
C028 : 01 A0 00 84 9E A4 9B B1   EB
C030 : D1 85 D7 29 3F 06 D7 24   AB
C038 : D7 10 02 09 80 90 04 A6   A3
C040 : D4 D0 04 70 02 09 40 A4   3E
C048 : 9E 91 14 E6 9B E6 9E C6   8A
C050 : 9C D0 DA A5 02 85 01 58   C1
C058 : 60 00 C0                  48
Listing 5. Modulnummer: 25. Anzahl der Befehle: 1.
1) ZEILBS 49152-49240,0
Funktion: Zeile vom Bildschirm holen, in ASCII-Code wandeln und im Speicher ablegen.
Syntax: ZEILBS spalte,zeile,länge,adresse
Beispiel: ZEILBS 5,5,10,41955
Der Text in Zeile 5, ab Spalte 5, bis Spalte 15 wird nach ASCII gewandelt und in Speicher geschrieben. Auch hier kann wieder der gesamte RAM-Bereich genutzt werden.
PROGRAMM : 26ERW .ASS     C000 C04D
-----------------------------------
C000 : A5 D3 48 A5 D6 48 20 9E   C3
C008 : B7 86 D3 20 FD AE 20 9E   0E
C010 : B7 86 D6 20 10 E5 A9 0F   B9
C018 : A2 08 A0 0F A8 20 BA FF   3F
C020 : A9 00 20 BD FF 20 C0 FF   8D
C028 : A2 0F 20 C6 FF 20 CF FF   73
C030 : 20 D2 FF A5 90 C9 40 D0   68
C038 : F4 A9 0F 20 C3 FF 20 CC   1F
C040 : FF 68 85 D6 68 85 D3 20   F2
C048 : 10 E5 60 00 C0            EE
Listing 6. Modulnummer: 26. Anzahl der Befehle: 1.
1) ERCHAN 49152-49226,0
Funktion: Liest den Fehlerkanal der Floppy und zeigt die Meldung auf dem Bildschirm an.
Syntax: ERCHAN spalte,zeile
Beispiel: ERCHAN 0,10
Der Fehlerkanal der Floppy wird gelesen und der String ab Spalte 0, Zeile 10 auf dem Bildschirm ausgegeben.
PROGRAMM : 27ERW .ASS     C000 C0AC
-----------------------------------
C000 : A9 01 85 02 20 9E AD 20   B9
C008 : 82 B7 A6 22 A4 23 20 BD   B3
C010 : FF A9 00 85 F7 85 F9 A9   7B
C018 : 04 85 F8 A9 D8 85 FA A5   43
C020 : 02 F0 47 20 FD AE 20 9E   83
C028 : B7 A9 01 A0 01 20 BA FF   04
C030 : 20 C0 FF A2 01 20 C9 FF   3D
C038 : A0 00 B1 F7 20 D2 FF B1   40
C040 : F9 20 D2 FF E6 F7 E6 F9   BC
C048 : D0 04 E6 F8 E6 FA A5 F8   C2
C050 : C9 07 D0 E4 A5 F7 C9 E8   80
C058 : D0 DE 20 CC FF A9 01 20   CA
C060 : C3 FF 60 A9 00 85 02 4C   3D
C068 : 04 C0 20 FD AE 20 9E B7   6A
C070 : A9 01 A0 00 20 BA FF 20   DA
C078 : C0 FF A2 01 20 C6 FF A0   7A
C080 : 00 20 E4 FF 91 F7 20 E4   EC
C088 : FF 91 F9 E6 F7 E6 F9 D0   EB
C090 : 04 E6 F8 E6 FA A5 F8 C9   76
C098 : 07 D0 E4 A5 F7 C9 E8 D0   08
C0A0 : DE 20 CC FF A9 01 20 C3   6C
C0A8 : FF 60 00 C0               0F
Listing 7. Modulnummer: 27. Anzahl der Befehle: 2.
1) SCRNSV 49152-49250,0
Funktion: Speichert den aktuellen Bildschirminhalt inklusive Farbe auf Kassette oder Diskette ab.
Syntax: SCRNSV »name«,gerätenummer
Beispiel: SCRNSV »bild«,8
Speichert Bildschirm auf Diskette ab.
2) SCRNLD 49251-49321,0
Funktion: Gegenstück zu (1). Laden eines mit SCRNSY gespeicherten Bildschirms.
Syntax: SCRNLD »name«,gerätehummer
Beispiel: SCRNLD »bild«,8
Lädt einen Bildschirminhalt von Diskette.
PROGRAMM : 28ERW .ASS     C000 C077
-----------------------------------
C000 : 20 9E B7 86 02 20 FD AE   A4
C008 : 20 9E B7 8A D0 02 A2 FF   5E
C010 : 86 F7 A2 00 20 73 00 F0   BA
C018 : 06 9D 3C 03 E8 D0 F5 A9   9D
C020 : B2 9D 3C 03 E8 A9 22 9D   B0
C028 : 3C 03 E8 86 F8 A6 02 20   FE
C030 : C6 FF 20 CF FF C9 0D F0   5C
C038 : 0C A6 F8 9D 3C 03 E8 86   16
C040 : F8 C6 F7 D0 ED 20 CC FF   C6
C048 : A6 F8 A0 00 B9 70 C0 9D   F0
C050 : 3C 03 E8 C8 C0 05 D0 F4   C2
C058 : A5 7B 48 A5 7A 48 A9 3C   8B
C060 : 85 7A A9 03 85 7B 20 A5   ED
C068 : A9 68 85 7A 68 85 7B 60   57
C070 : 22 AA 22 22 00 00 C0      DC
Listing 8. Modulnummer: 28. Anzahl der Befehle: 1.
1) DISKIN 49152-49263,5
Funktion: Holt bestimmte Anzahl von Bytes aus einem File, das vorher geöffnet werden muß, in eine Stringvariable. Der Befehl ist schneller als die entsprechende Basic-Schleife.
Syntax: DISKIN lfnr,anz,var$
Beispiel: DISKIN 1,20,a$
Es werden 20 Byte aus dem File mit der logischen Filenummer 1 geholt. In Basic müßte hier eine Schleife 20mal durchlaufen werden, in der bei jedem Durchlauf ein GET#-Statement ausgeführt werden müßte. Diese 20 Bytes kommen in die Variable a$. Es können maximal 150 Byte geholt werden. Die Eingabe stoppt automatisch, wenn ein chr$(13) vom Laufwerk gesendet wird.
PROGRAMM : 29ERW .ASS     C000 C00D
-----------------------------------
C000 : 20 8A AD 20 F7 B7 84 37   92
C008 : 85 38 4C 44 A6            F6
Listing 9. Modulnummer: 29. Anzahl der Befehle: 1.
1) EOB 49152-49164,0
Funktion: Basic-Ende heruntersetzen (End of Basic).
Syntax: EOB wert
Beispiel: EOB 32768
Der Bereich ab 32768 ($ 8000) wird vor Überschreiben durch Basic geschützt. Dadurch wird der Basic-Speicher begrenzt. Der Parameter muß zwischen 2051 und 40960 liegen. Der Wert wird nicht überprüft.
PROGRAMM : 30ERW .ASS     C000 C09E
-----------------------------------
C000 : 4C 82 C0 78 AD 00 DC 29   6D
C008 : 01 D0 03 CE 01 D0 AD 00   59
C010 : DC 29 02 D0 03 EE 01 D0   69
C018 : AD 00 DC 29 04 D0 03 CE   92
C020 : 00 D0 AD 00 DC 29 08 D0   CD
C028 : 03 EE 00 D0 AD 10 D0 C9   EF
C030 : 01 D0 1C AD 00 D0 C9 40   84
C038 : D0 03 CE 00 D0 AD 00 D0   5A
C040 : C9 00 D0 08 CE 00 D0 A9   C2
C048 : 00 8D 10 D0 4C 68 C0 AD   93
C050 : 00 D0 C9 16 D0 03 EE 00   CE
C058 : D0 AD 00 D0 C9 FF D0 08   09
C060 : A9 01 8D 00 D0 8D 10 D0   49
C068 : AD 01 D0 C9 E6 D0 03 CE   A2
C070 : 01 D0 AD 01 D0 C9 31 D0   27
C078 : 03 EE 01 D0 4C 31 EA 4C   DF
C080 : 03 C0 78 AD 80 C0 8D 14   23
C088 : 03 AD 81 C0 8D 15 03 58   18
C090 : 60 78 A9 31 8D 14 03 A9   96
C098 : EA 8D 15 03 58 60         1E
Listing 10. Modulnummer: 30. Anzahl der Befehle: 2.
1) JSEIN 49152-49296,0
Funktion: Sprite 1 wird interruptgesteuert über einen Joystick an Port 2.
Syntax: JSEIN
Beispiel: JSEIN
Sprite 1 wird nun durch den Joystick am Port 2 kontrolliert. Seine zugehörigen Parameter, wie Farbe, Aussehen, Priorität etc. bleiben unbeeinflußt.
2) JSAUS 49297-49309,0
Funktion: Sprite 1 wird vom Joystick wieder abgekoppelt, der Interrupt normalisiert.
Syntax: JSAUS
Beispiel: JSAUS
Der Joystick beeinflußt das Sprite nicht mehr, der IRQ steht wieder auf $ EA31.
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →