Beiträge von Mac Bacon im Thema „C=128 gedächtnislücken basic ...“

    Beispielprogramme findest Du in den Laufwerkshandbüchern, z.B. Bitte melde dich an, um diesen Link zu sehen. (deutsches 1541-Handbuch, siehe Kapitel 6 für SEQ-Beispiel in Basic V2) und Bitte melde dich an, um diesen Link zu sehen. (englisches 1571-Handbuch, siehe Kapitel 5 für SEQ-Beispiele und Kapitel 6 für REL-Beispiele, jeweils in Basic V2 und V7).

    Den Laufwerken ist die Basic-Version übrigens egal - ein Basic-V7-Programm für REL-Files arbeitet mit einer 1541 genau so gut wie mit einer 1571. Dass das 1541-Handbuch keine V7-Beispiele enthält, liegt einfach nur daran, dass es älter ist als der 128er.

    EDIT: Das in Post Bitte melde dich an, um diesen Link zu sehen. verlinkte 128er-Handbuch enthält auch ein Kapitel namens "Floppy-Disk-Betrieb mit Basic" (Kapitel 6). Dieses erklärt ebenfalls die Grundschritte; und die Beschreibungen der Basic-Befehle (Seiten 4-13, 4-19, 4-24, 4-36, 4-39, 4-47, 4-52, 4-96, 4-112, 5-6, 5-22, 5-29, 5-42, 5-47, 5-62) sind ebenfalls hilfreich.

    Das ist immer noch ziemlich allgemein gehalten. ^^

    Ich skizzier mal kurz drei Möglichkeiten in aufsteigender Komplexität; vielleicht kommt Dir davon ja was bekannt vor.

    Wenn man aus einem Basic-7-Programm einfach nur mal schnell ein paar Bytes speichern und später wieder laden will (z.B. eine Highscore-Tabelle oder so), wäre BSAVE/BLOAD am einfachsten. Vor dem Speichern muss man natürlich die alte Datei mit SCRATCH löschen. Um das Interface zwischen Basic-Variablen und Speicheradressen muss man sich natürlich selber kümmern; im schlimmsten Fall läuft das auf PEEK/POKE hinaus.

    Die nächste Möglichkeit wären SEQ-Dateien, d.h. Öffnen einer Datei mit DOPEN#, dann Schreiben mit PRINT# und Lesen mit INPUT# oder GET#. Man kann zwar bestehende Dateien auch verlängern (mit APPEND), aber muss sich vor jedem Öffnen der Datei entscheiden, ob man lesen oder schreiben will - zwischendurch wechseln geht nicht. Außerdem kann man die Datei immer nur am Stück, d.h. komplett von ganz vorn bis ganz hinten lesen/schreiben, man kann den Schreibzeiger nicht beliebig setzen.

    Die flexibelste Methode sind REL-Dateien. Hier kann man beliebig zwischen lesen und schreiben wechseln, und man kann auch den Lese/Schreibzeiger beliebig verstellen (mit RECORD); muss also nicht immer die komplette Datei bearbeiten. Dafür muss man sich allerdings beim Öffnen der Datei für eine feste Datensatzlänge entscheiden (1 bis 254 Bytes).

    Es gäbe auch noch eine vierte Möglichkeit; nämlich mit Blockbefehlen direkt auf der Disk herumwursteln - aber das sollte man nur in Angriff nehmen, wenn man wirklich weiß, was man da tut.

    Hat es schon jemand geschafft, per Char-Befehl auf dem Bildschirm auch Kleinbuchstaben schreiben zu lassen?

    Du meinst auf dem Grafikbildschirm? POKE 4588, 216 schaltet auf Klein/Groß; POKE 4588, 208 schaltet zurück auf Groß/Grafik. Versuch mal

    Code
    graphic 1, 1
    for ii = 0 to 15
            poke 4588, 13 * 16 + ii
            char 1, 0, ii, "abcdefgh"
    next

    Man kann das Highbyte des Zeigers auch sonstwohin biegen, aber dann kommt natürlich nur Grütze heraus.

    Im 128er-Handbuch befindet sich die Tabelle ab Seite A-7.
    CHR$(14) schaltet auf Kleinbuchstaben, CHR$(142) auf Großbuchstaben (142 = 14 + 128 ).
    CHR$(11) verriegelt die Umschaltung per CBM-SHIFT, CHR$(12) erlaubt sie wieder.
    Die CHR$-Codes von 1 bis 26 kann man auch per CTRL und Buchstabentaste (a bis z) erzeugen: CTRL-K blockiert, CTRL-L erlaubt, CTRL-N schaltet auf Kleinbuchstaben, CTRL-M ist Carriage Return, etc.