C 64/C 128
Listing des Monats

Vollgas für die Floppy 1570/71

Mit dem »FSD-System« können alle Besitzer eines 1570- oder 1571-Laufwerks jetzt aufatmen. Endlich wird die Diskettenstation auch am C 64 oder C 128 im C 64-Modus so schnell wie man es vom C 128 schon kennt. Zusätzlich bekommen Sie noch eine Vielzahl neuer Funktionen in Ihr Betriebssystem, wie zum Beispiel eine Centronics-Schnittstelle, die Ihnen die Arbeiten erleichtern.

Farbig beleuchteter länglicher Block mit blauer Stirnseite und Schlitz vor rotem Hintergrund

Das »FSD-System« ist ein neues Betriebssystem für den C 64 oder den C 128 (für den C 64-Modus). Es handelt sich hierbei in der Hauptsache um einen Beschleuniger für das Diskettenlaufwerk 1570 und 1571, wobei lediglich zwei Drähte zusätzlich im Computer angelötet werden müssen.

Außer der Beschleunigung sämtlicher Diskettenfunktionen (die 1570/71 arbeitet im schnellen Burst-Modus), enthält das »FSD-System« noch eine Centronics-Schnittstelle am User-Port. Weiterhin existiert eine Eingabeunterstützung für Befehle an das Diskettenlaufwerk und natürlich die Anzeige eines Directory ohne Programmverlust.

Doch mit diesen Zusätzen nicht genug. Das »FSD-System« erlaubt das LISTen von Programmen oder Textfiles direkt von der Diskette, das MERGEn von Programmteilen und das Zurückholen von Programmen nach NEW oder einem Reset.

Das Laden von Programmen von der Diskette geschieht jetzt mit der vollen Geschwindigkeit der 1570/71 im C 128-Modus und wird damit 7- bis 9mal schneller. Diese Funktion ist bei Bedarf abschaltbar, so daß auch »schwierige« Programme geladen werden können.

Interessant am »FSD-System« ist sicher, daß es sowohl auf einem C 64 als auch auf einem C 128 einwandfrei läuft. Beim C 128 im C 64-Modus bleiben dabei sämtliche Tasten weiterhin aktiviert, also auch der Zahlenblock des C 128. Auf dem C 64 werden diese Zusatztasten durch das Drücken von <CTRL> zusammen mit einer anderen Taste ersetzt.

Sehr durchdacht ist auch die Belegung des Zahlenblocks auf dem C 128. Hier hat sich der Autor an die Computer der CBM 8000-Reihe gehalten. Diese enthalten außer den Zahlen im Zahlenblock auch noch sämtliche Grafikzeichen für Tabellen und sind durch die <SHIFT>-Taste erreichbar angeordnet. Unter die Taste <+> wurde ein <*> gelegt, und die Taste <-> enthält über <SHIFT> ein </>. Ein gelungenes System also, das den Wettbewerbspreis von 2000 Mark voll verdient.

(D. Temme/ks)

Bei unserem neuen »Listing des Monats« handelt es sich um einen Floppy-Beschleuniger. Dieses Mal ist es die 1570/71, die nun auch am C 64 so schnell wird, wie am C 128.

Die schnellen Diskettenlaufwerke 1570 und 1571 in Verbindung mit einem C 128 werden wieder zur langsamen 1541, wenn man sie am C 64 oder am C 128 im C 64-Modus betreibt. Das vorliegende »FSD-System« (»FSD« steht für »Fast Serial Disk«) ermöglicht bei geringem Hardware-Aufwand einen schnellen Disketten-Betrieb. Dabei wird beim Laden bis zum Neunfachen der Originalgeschwindigkeit erreicht, und auch die übrigen Operationen werden mehr oder weniger stark beschleunigt. Zusätzlich bietet das »FSD-System« einen Befehlssatz für den Diskettenbetrieb, die volle Tastaturbenutzung beim C 128 im C 64-Modus (Zehnerblock und so weiter) und einige Sonderfunktionen sowie eine (zuschaltbare) Centronics-Schnittstelle am User-Port.

Beschleunigte serielle Übertragung

Die Einstellung für das Standardgerät bei LOAD, SAVE und VERIFY ist jetzt »"*",8,1« (siehe auch Bild 1). Das heißt die Eingabe LOAD wird vom Computer als »LOAD"*",8,1« interpretiert. Somit ist das Laden aus dem Directory jetzt ein Kinderspiel: Directory mit SYS"$" (siehe unten) anzeigen lassen, mit dem Cursor in die gewünschte Zeile »fahren« und LOAD <RETURN> eingeben oder einfach <SHIFT-RUN/STOP> drücken. Ist das absolute Laden an die Originaladresse nicht gewünscht, wird LOAD"name",8 eingegeben.

Als weiteren Zusatz im »FSD-System« kennt der LOAD/ VERIFY-Befehl jetzt die Angabe weiterer Sekundäradressen: Wird eine 9 als Sekundäradresse angegeben, so sendet der Computer nach dem Laden des Programms automatisch ein »U0>M0« an das Diskettenlaufwerk, so daß auch Programme, die den 1571-Modus der Floppy nicht vertragen, geladen werden können (Beispiel: »EX-DOS«). Wählt man die Sekundäradresse 7, so wird der Burst-Modus der Floppy nicht angesprochen. Die Lade/Vergleichsbeschleunigung beträgt jetzt nur den Faktor 3. Dabei ist die Kompatibilität jetzt aber am höchsten im Vergleich zur Original-Routine. Der Faktor 3 ist auch gleichzeitig die Beschleunigung beim Datei-Lesen in Maschinensprache; in Basic ist sie jedoch praktisch nicht erreichbar.

Eine weitere Neuerung ist der (nicht von Maschinensprache erreichbare) APPEND-Befehl, der mit LOAD"name",dv,5 ausgeführt wird. Hierbei wird das Programm "name" an das im Speicher stehende Programm angehängt. Für die ordnungsgemäße Ausführung des Programms ist darauf zu achten, daß die Zeilennummern aufsteigend angeordnet sind (gegebenenfalls auch mittels Basic-Erweiterung ein RENUMBER ausführen).

Der Befehl SAVE" @:name" wurde umgeändert in ein automatisches Löschen und Speichern (Anzeige auf dem Bildschirm: »SCRATCHING name« und danach »SAVING name«, um versehentliches Zerstören der Daten auf der Diskette zu verhindern, was durch einen Betriebssystem-Fehler der Floppystation möglich ist.

Für den interessierten Leser hier die Erklärung: Wird bei SAVE mit dem »@« keine Laufwerksnummer angegeben, so überprüft die Floppystation intern, welches Laufwerk (0 oder 1) sie ansprechen soll. Dazu muß erklärt werden, daß die 1541/70/71 intern noch als Doppellaufwerk funktioniert, da das Betriebssystem von dem CBM 4040 Doppellaufwerk abstammt und für die 1541 (und damit auch für die 1570/71) nur geringfügig geändert wurde. Der Test auf eine eingelegte Diskette in Laufwerk 1 führt (intern) zu einem Fehler, der zur Folge hat, daß auf Laufwerk 0 gespeichert wird. Nun wäre alles in Ordnung, wenn nicht für »Replace« alle verfügbaren Puffer der 1541/70/71 benötigt würden. Durch den Laufwerk-1-Test wird jedoch ein Puffer belegt und nicht wieder freigegeben. Dies führt dazu, daß dem Laufwerk ein Puffer fehlt, es aber (natürlich) nicht weiß, daß einer unnötig belegt wurde, und durch eine interne Logik einen Puffer »zufällig« auswählt. Das kann nun der BAM-Puffer sein, der dadurch zerstört wird und der Floppystation falsche Blockbelegungen vorgibt. Ein Verlust wichtiger Daten auf der Diskette ist dann kaum mehr zu vermeiden.

Vorsicht geboten ist beim Formatieren im »FSD-System« (nicht bei der 1570): Ist das Diskettenlaufwerk im 1571-Modus, so werden immer beide Disketten-Seiten formatiert, was oft nicht erwünscht ist, weil die Diskette als» Wende-Diskette« genutzt wird. Dabei würde eine genutzte Rückseite gelöscht; man sollte vor dem Formatieren erst <SHIFT+TAB> drücken: Dann wird nur eine Seite formatiert.

Umgekehrt kann es aber natürlich auch nützlich sein, beide Seiten benutzen zu können, da dann die doppelte Speicher-Kapazität zur Verfügung steht.

Befehle für das Diskettenlaufwerk

Das »FSD-System« wandelt die Verarbeitung des SYS-Befehls um. Keine Angst, die Original-Funktion des Befehls bleibt natürlich erhalten. Zusätzlich wird bei Argumenten im Bereich von 1 bis 15 jedoch automatisch mit dem Wert 4096 multipliziert, so daß eine Erweiterung zum Beispiel bei $C000 nunmehr statt mit SYS49152 auch mit SYS12 gestartet werden kann. Das erspart einem ein wenig Tipparbeit. SYS0 ergibt einen »Software-Break«, womit ein Maschinensprache-Monitor gestartet werden kann, falls er zuvor eingeladen und initialisiert wurde (Sprungvektor bei $0316/$0317).

Nun zu den Befehlen für das Diskettenlaufwerk: ein einfaches SYS ergibt die Status-Meldung des zuletzt angesprochenen Laufwerks. SYS"$" sorgt für die Ausgabe des Disketten-Inhaltsverzeichnisses des aktuellen Diskettenlaufwerks.

Zusätzlich können natürlich auch Kriterien wie »$:name*=p« angegeben werden (Näheres siehe Handbuch zum Laufwerk). Der Directory-Befehl kann mit <CTRL+S> oder <NO SCROLL> angehalten, wieder gestartet und mit der <STOP>-Taste abgebrochen werden. Zudem lassen sich mit »SYS diskbefehl« die üblichen DOS-Befehle ausgeben.

Ein besonderer Leckerbissen sind die LIST-Funktionen des SYS-Befehls: Durch SYS"LSname" wird das File "name" auf dem Bildschirm geLISTet. Diese Funktion dient zur Ansicht von ASCII-Dateien. Einen ähnlichen Befehl gibt es für Basic-Programme: SYS"LPname" LISTet das Programm-File "name" von Diskette. Das Basic-Programm im Speicher wird nicht zerstört. Mit der <STOP>-Taste besteht die Möglichkeit, das LISTen abzubrechen und die auf dem Bildschirm sichtbaren Zeilen zu übernehmen. Der LIST-Befehl ist so ausgelegt, daß sich viele Basic-Erweiterungen mit ihm vertragen (wenn diese im Speicher sind). »Exbasic Level II«, das eine eigene LIST-Routine benutzt, wurde eigens implementiert. Wird der Befehl SYS"LP..." im Direktmodus ausgeführt, so werden nachfolgende Befehle ignoriert. Wird bei den SYS"Lx.."-Befehlen das spezifizierte File nicht gefunden, so wird ein »?FILE NOT FOUND ERROR« gemeldet.

LOAD LOAD"*",8,1
LOAD"name",dv,5 APPEND (nur in BASIC)
LOAD"name", dv,7 nicht im Burst-Mode laden
LOAD/VERIFY"name",dv,9 nach Laden/Vergleichen "U0>M0" an Floppy ausgeben
SYS 0 führt BRK aus evtl. Sprung in Monitor)
SYS x (x = 1..15) führt SYS x*4096 aus
SYS zeigt Floppy-Status an
SYS"$..."(,dv) zeigt Directory an
SYS"befehl"(,dv) gibt "befehl" an Floppy
SYS"LSname"(,dv) listet Datei auf
SYS"LPname"(,dv) listet Programm auf
Bild 1. LOAD- und SYS-Befehl

Bei allen SYS-Befehlen mit Parametern kann der Parameter auch ein Stringausdruck (zum Beispiel die Variable V$) sein, so daß eine universelle Anwendbarkeit in Programmen möglich wird. Zusätzlich kann hier eine Laufwerksnummer — durch Komma getrennt — angegeben werden (zum Beispiel SYS"$0",9), die fortan als aktuelle Laufwerks-Nummer angenommen wird. Die Befehlsgruppe LOAD/SAVE/VERIFY setzt jedoch die Nummer wieder auf 8 zurück, wie auch der Tasten-Befehl <CTRL+/> (siehe Bild 2).

C-128 C-64 Belegung
<ESC> <CTRL+[> CHR$(27)
<TAB>/<SHT+TAB> <CTRL++>/<-> FSD ein/aus (Floppyseitig)
<ALT>/<SHT+ALT> <C=+,>/<.> CHR$ (14)/CHR$(142)
<HLP>/<SHT+HLP> <CTRL+,>/<.> Centronics ein/aus
<CTRL+DOWN>/ <CTRL+RIGHT> Centronics-ASCII ein/aus
<LFD>/<SHT+LFD> <CTRL+=>/<RET> Centronics-LF-Ausgabe nach CR ein/aus
<NO SCROLL> <CTRL+S> Computer wartet bis Taste gedrückt wird
<CTRL+*> OLD-Befehl
<CTRL+/> löscht Anführungszeichen-Modus und setzt Floppy-Default auf 8 zurück
Bild 2. Tastaturbelegung bei den Tastenbefehlen

Ist bei den SYS-Befehlen das angesprochene (aktuelle) Laufwerk nicht ansprechbar (sprich: nicht angeschlossen), so wird mit»?DEVICE NOT PRESENT ERROR« abgebrochen.

Centronics-Schnittstelle

Die eingebaute Centronics-Schnittstelle ist wie üblich am User-Port ausgeführt und wird durch Tasten-Funktionen ein- und ausgeschaltet und programmiert. Ist der Drucker nicht angeschlossen, so kann die Ausgabe-Routine mit der <STOP>-Taste verlassen werden. Die Centronics-Schnittstelle bietet die Möglichkeit, Commodore- oder ASCII-Code auszugeben (für Grafikprogramme ungeeignet) sowie nach einem »Carriage Return« (CHR$(13)) automatisch ein »Linefeed« (CHR$(10)) hinterherzuschicken.

Softwareseitig ist die Centronics-Routine in die IEC-Routinen eingebunden, so daß selbst alle Programme, die direkt in die Routinen einspringen, funktionieren werden. Nur ein »Spooling« von der Diskette direkt auf den Drucker kann nicht erfolgen, da der Drucker nicht an demselben Bus wie das Diskettenlaufwerk angeschlossen ist.

Tastatur-Funktionen

Während beim Commodore 128 die Zehnertastatur und weitere Zusatztasten zur Verfügung stehen und das Arbeiten mit dem Computer erleichtern, sind diese im C 64-Modus nicht ansprechbar. Das »FSD-System« schafft hier Abhilfe. Fast alle Zusatzfunktionen können beim »normalen« C 64 jedoch auch durch die Kombination <CTRL>-Taste erreicht werden (Bild 2. Angaben für den C 64 sind in Klammern dargestellt).

Das Ein- und Ausschalten des »FSD-Modus« für das Laufwerk erfolgt durch <TAB> und <SHIFT-TAB> (<CTRL++> und <CTRL+->). Dabei wird an die 1570/71 der Befehl »U0>M1« beziehungsweise »U0>M0« gesendet. Ist gleichzeitig der Bus belegt, so ist die Ausgabe der Codes über den Bus gesperrt, um Fehlfunktionen (zum Beispiel beim Laden oder bei der Anzeige des Directory) zu verhindern. Sollten einmal die Tastenfunktionen außer Betrieb sein, so lassen sie sich mittels <STOP + RESTORE> wieder einschalten.

Die <ALT>-Taste (<CBM+,> und -<.>) ergibt den Code 14 (Kleinschrift), mit <SHIFT> den Code 142 (Großschrift/Grafik). Die Taste <ESC> ergibt den Code 27 und ist für die Druckerprogrammierung (siehe Druckerhandbuch) von Bedeutung.

<HELP> <CTRL+↕> und <,> schaltet den Centronics-Drucker auf Geräteadresse 4 ein, <SHIFT+HELP> (<CTRL+.>) schaltet Adresse 4 wieder auf den seriellen Bus. Mit <CTRL+CURSOR DOWN > wird der ASCII-Modus für den Centronics-Drucker ein- und mit <CTRL+CURSOR RIGHT> wieder abgeschaltet. Die <LINEFEED>-Taste (<CTRL+ = >) schaltet die automatische Linefeed-Ausgabe ein beziehungsweise mit <SHIFT> (<CTRL+RETURN>) wieder aus.

<NO SCROLL> oder <CTRL+S> hält den Computer bis zum nächsten Tastendruck an (nützlich bei schnellen Bildschirmausgaben oder zur Unterbrechung von Spielen). Wird dennoch ein <CTRL+S> benötigt und die <HOME>-Taste alleine versagt (zum Beispiel Save-Funktion beim »MSE«), so kann man sich mit <CTRL+HOME> behelfen.

Die Cursor-Tasten oberhalb des Feldes und der Zehnerblock haben jetzt die Funktion, die auf den Kappen auch draufsteht. Betätigt man eine Zahlentaste des Zehnerblocks zusammen mit <SHIFT>, so werden die Tabellen-Grafikzeichen in logischer Anordnung ausgegeben. Auf <+>, <-> und <ENTER> liegen bei gleichzeitigem Drücken von <SHIFT> die Zeichen »*«, »/« und » = «. Somit hat man alle Rechenzeichen im Zehnerblock vereint. Dies vereinfacht das Eintippen, da die Suche auf dem Tastenfeld entfällt.

Außerdem gibt es noch zwei Sonderfunktionen: Die oft vermißte OLD-Funktion wird mit <CTRL+ *> angesprochen. Wird ein Programm versehentlich mit NEW gelöscht oder der Computer per (Software- oder Hardware-) Reset in den Ausgangszustand versetzt, so steht das gelöschte Basic-Programm immer noch im Speicher. Die OLD-Funktion holt es wieder hervor.

Zum zweiten wird mit <CTRL+/> der manchmal störende Anführungszeichen-Modus zurückgesetzt und die aktuelle Adresse des Laufwerks wieder auf 8 gesetzt, womit die SYS-Befehle wieder an das Standard-Laufwerk gehen.

Installationshinweise

Das Eingeben des Programms Listing geschieht wie üblich mit dem »MSE«. Nach dem Laden und Starten (mit RUN) des gespeicherten »fsd64.obj« wird das Betriebssystem des C 64, beziehungsweise des C 128 im C 64-Modus, geändert. Das Einschalten der Erweiterung (im RAM) geschieht mit POKE 1,5, das Abschalten mit POKE 1,7 oder mit <RUN/STOP +RESTORE>. Es ist ratsam, sich das Betriebssystem in ein EPROM zu »brennen«, so daß die Erweiterung direkt nach dem Einschalten des Systems verfügbar ist. Beim Commodore 128 ist das Basic und das Kernel des C 64-Modus in einem 16-K-ROM oder -EPROM untergebracht (Steckplatz U32, ganz links, untere Reihe der ROMs). Hier kann direkt ein EPROM vom Typ 27128 eingesetzt werden. Bei einem C 64 ist Basic und Kernel getrennt in je einem ROM 2364 (Steckplatz U4) untergebracht, was zur Folge hat, daß für ein Ersatz-EPROM durch die unterschiedliche Pinbelegung ein Adapter-Sockel nötig ist, der aber zum Beispiel in der 64'er, 3/86 (Seite 63) zum Selbstbau beschrieben wurde. (Auf die Richtung der EPROM-Kerbe achten!).

Die nötige Hardware beschränkt sich auf zwei Drähte, die man im Computer an folgende Anschlüsse anlöten muß: User-Port Pin 6 an seriellen Port Pin 1 und User-Port Pin 7 an seriellen Port Pin 5 (siehe Bild 3). Der Anschluß erfolgt mit Absicht am vom C 128 nicht für den Burst-Modus benutzten CIA 6526-2, da der andere durch die hardwaremäßige Beschaltung (MMU und 74LS244) im C 64-Modus unbenutzbar geworden ist. Die Erkennung einer angeschlossenen schnellen Floppy erfolgt automatisch durch das Betriebssystem, indem vom Floppy beziehungsweise Computer entsprechende Anforderungs-Codes gesendet werden, die aber den langsamen seriellen Bus nicht beeinträchtigen. Die Centronics-Schnittstelle benötigt ein abgeschirmtes Kabel (Verdrahtung ersichtlich aus Bild 3).

User-Port serieller Port
Pin 6 CLK Pin 1
Pin 7 DATA Pin 5
User-Port Centronics-Stecker
(36-pol. Amphenol)
Pin B BUSY Pin 11
Pin C DATA1 Pin 2
Pin D DATA2 Pin 3
Pin E DATA3 Pin 4
Pin F DATA4 Pin 5
Pin H DATA5 Pin 6
Pin J DATA6 Pin 7
Pin K DATA7 Pin 8
Pin L DATA8 Pin 9
Pin M -STROBE Pin 1
Bild 3. Hardware-Änderungen

Anforderungen und Einschränkungen

Alle Betriebssystem-Erweiterungen, die Kassettenroutinen ersetzen (zum Beispiel viele Floppybeschleuniger wie Hypra-Load) sind nicht lauffähig (Ladebeschleuniger sind aber nicht mehr nötig, da das FSD-System noch schneller laden kann). Die Tastenbelegung des Zehnerblocks auf dem C 128 ist noch einmal in Bild 4 dargestellt.

Rasterzeichnung eines Zehnerblocks mit den Ziffern 0 bis 9, Rechenzeichen und ENTER-Taste
Bild 4. Belegung des Zehnerblocks der Tastatur des C 128

Zusätzlich wird im Computer die Speicherstelle 3 benutzt. Jedes Bit dieser Zeropage-Adresse hat eine eigene Bedeutung. Das Verändern durch Fremdsoftware kann die Ausgabe auf den Centronics-Drucker ein- oder ausschalten; jedoch läßt sich das nicht vermeiden, denn irgendwo muß der Computer schließlich seine Daten ablegen.

(D. Temme/ks)
PROGRAMM : FSD64.OBJ      0801 1237
-----------------------------------
0801 : 0B 08 C2 07 9E 32 30 36   4A
0809 : 31 00 00 00 A0 00 84 55   01
0811 : A2 40 A9 80 85 56 B1 55   CA
0819 : 91 55 C8 D0 F9 E6 56 CA   67
0821 : D0 F4 A2 20 A9 E0 85 56   7C
0829 : B1 55 91 55 C8 D0 F9 E6   5D
0831 : 56 CA D0 F4 A9 08 8D 87   DF
0839 : F3 A9 F7 8D B7 F4 8D F9   FE
0841 : F5 AD 94 0C 8D 2C F7 EE   AB
0849 : 43 08 D0 03 EE 44 08 EE   34
0851 : 46 08 D0 03 EE 47 08 AD   D4
0859 : 43 08 C9 37 D0 E3 AD 44   65
0861 : 08 C9 12 D0 DC A9 0B A2   79
0869 : 0B A0 01 8D D9 EC 8E DA   AB
0871 : EC 8C 35 E5 8D 20 D0 8E   E8
0879 : 21 D0 8C 86 02 A9 4C A2   DA
0881 : 32 A0 F7 8D C1 F4 8E C2   36
0889 : F4 8C C3 F4 A2 0B A0 F8   4A
0891 : 8D AA F5 8E AB F5 8C AC   B8
0899 : F5 A2 33 A0 F5 8D 27 ED   04
08A1 : 8E 28 ED 8C 29 ED A2 4F   7B
08A9 : A0 F5 8E 4A ED 8C 4B ED   7D
08B1 : A2 58 A0 F5 8D 5A ED 8E   E7
08B9 : 5B ED 8C 5C ED A2 89 A0   15
08C1 : F5 8D 94 ED 8E 95 ED 8C   C6
08C9 : 96 ED A2 9E A0 F5 8E B3   2E
08D1 : ED 8C B4 ED 48 A0 75 B9   C2
08D9 : 0A 0C 99 33 F5 88 10 F7   8A
08E1 : 68 A2 D6 A0 FB 8E 11 EE   BA
08E9 : 8C 12 EE A2 C8 A0 F2 8E   09
08F1 : 19 EE 8C 1A EE 48 A0 46   28
08F9 : B9 D2 0A 99 22 EE 88 10   AD
0901 : F7 A0 34 B9 71 0B 99 59   15
0909 : F6 88 10 F7 68 A2 99 A0   8A
0911 : F1 8D C9 ED 8E CA ED 8C   09
0919 : CB ED A2 D6 A0 F2 8E 01   3C
0921 : EE 8C 02 EE 48 A0 25 B9   45
0929 : A6 0B 99 C8 F2 88 10 F7   78
0931 : 68 A2 AE A0 F8 8D 93 EA   CA
0939 : 8E 94 EA 8C 95 EA A2 09   AB
0941 : A0 F9 8E 77 EB 8C 78 EB   4D
0949 : A2 25 A0 F9 8D E4 EA 8E   AE
0951 : E5 EA 8C E6 EA A2 F0 8E   50
0959 : 85 EC E8 8E A0 EC E8 8E   92
0961 : A3 EC E8 8E A7 EC E8 8E   29
0969 : A4 EC E8 8E 7F EC E8 8E   AF
0971 : 7A EC E8 8E AD EC E8 8E   70
0979 : 79 EC E8 8E A9 EC E8 8E   37
0981 : AF EC A2 13 8E AB EC A2   F1
0989 : 0E 8E 32 EC A2 8E 8E 2F   40
0991 : EC A2 1F 8E B1 EC A2 4A   0A
0999 : A0 FA 8D 24 ED 8E 25 ED   62
09A1 : 8C 26 ED A2 84 A0 FA 8D   64
09A9 : 41 ED 8E 42 ED 8C 43 ED   F9
09B1 : 48 A0 3A B9 CB 0B 99 93   B2
09B9 : F3 88 10 F7 68 A2 E1 A0   58
09C1 : F2 8E 7E FF 8C 7F FF A2   A4
09C9 : C3 A0 FA 8D 2A E1 8E 2B   8F
09D1 : E1 8C 2C E1 A2 97 A0 FB   A1
09D9 : 8E 06 F6 8C 07 F6 A2 F5   58
09E1 : A0 FB 8E 76 E1 8C 77 E1   15
09E9 : A2 B7 A0 E4 8D EA E8 8E   1C
09F1 : EB E8 8C EC E8 A2 CE A0   31
09F9 : F3 8D 62 E9 8E 63 E9 8C   4D
0A01 : 64 E9 A2 BE A0 E4 8D 81   45
0A09 : E9 8E 82 E9 8C 83 E9 A0   E5
0A11 : 06 B9 CB 0A 99 42 E9 88   8C
0A19 : 10 F7 A0 2D B9 15 0B 99   96
0A21 : D8 F0 88 10 F7 A0 13 B9   DA
0A29 : 80 0C 99 C2 FE 88 10 F7   D2
0A31 : A0 13 B9 41 0B 99 99 F1   B9
0A39 : 88 10 F7 A0 1B B9 55 0B   C6
0A41 : 99 B7 E4 88 10 F7 A9 80   68
0A49 : A2 EA 8D D9 E3 8E DF E3   F9
0A51 : A9 8D A2 8A A0 02 8D DC   C5
0A59 : E3 8E DD E3 8C DE E3 A2   0C
0A61 : 08 A0 01 8E DA E1 8C DC   74
0A69 : E1 A9 01 A2 A6 A0 F1 8D   06
0A71 : D5 E1 8E D7 E1 8C D8 E1   7F
0A79 : A2 08 A0 0F 8E 28 E2 8C   F8
0A81 : 2A E2 A2 C4 A0 F3 8E E7   11
0A89 : E1 8C E8 E1 8E F4 E1 8C   58
0A91 : F5 E1 A2 D5 A0 3A 8E ED   CC
0A99 : EC 8C EE EC A0 07 B9 C3   D5
0AA1 : 0A 99 9B E4 88 10 F7 A9   37
0AA9 : 3E A0 03 99 79 E4 88 10   2C
0AB1 : FA A9 3C A0 03 99 94 E4   BC
0AB9 : 88 10 FA A9 05 85 01 4C   56
0AC1 : 9A E3 44 54 45 20 46 53   FE
0AC9 : 44 2D F0 07 C9 DF F0 F5   0C
0AD1 : EA 4C 59 F6 A2 08 8A 2D   05
0AD9 : 0D DD D0 28 AD 00 DD CD   FC
0AE1 : 00 DD D0 F8 0A 10 ED 66   C9
0AE9 : A4 AD 00 DD CD 00 DD D0   16
0AF1 : F8 0A 30 F5 CA F0 18 AD   A9
0AF9 : 00 DD CD 00 DD D0 F8 0A   B8
0B01 : 10 F5 30 E3 AD 0C DD 85   52
0B09 : A4 A5 03 09 C0 85 03 A6   F3
0B11 : A3 4C 76 EE A5 BA C9 08   BD
0B19 : B0 02 A9 08 60 0D 53 43   78
0B21 : 52 41 54 43 48 49 4E 47   28
0B29 : A0 C6 B7 F0 09 E6 BB D0   91
0B31 : 02 E6 BC B1 BB 60 A2 08   65
0B39 : 4C 37 A4 A0 00 84 90 60   85
0B41 : 20 36 ED 24 90 30 03 4C   AB
0B49 : CC ED 4C 03 EE A2 D5 A0   1C
0B51 : FE 4C BD FF 78 A5 AC 48   DD
0B59 : 4C ED E8 78 A5 AC 48 4C   5E
0B61 : 84 E9 A6 90 E0 42 F0 03   7F
0B69 : E0 00 60 A2 04 4C 37 A4   7F
0B71 : A2 0D AD 00 DD 29 DF 8D   C7
0B79 : 00 DD AD 00 DD CD 00 DD   DB
0B81 : D0 F8 0A 10 1D CA D0 F2   A3
0B89 : A5 A5 D0 0F 20 A0 EE 20   1A
0B91 : 85 EE A9 40 20 1C FE E6   AC
0B99 : A5 D0 D5 A6 A3 A9 02 4C   19
0BA1 : B2 ED 4C 25 EE 2C 0D DD   42
0BA9 : 86 A3 A5 90 29 BD 85 90   34
0BB1 : 4C 85 EE 48 A5 03 29 7F   9B
0BB9 : 85 03 68 4C 11 ED 20 E9   38
0BC1 : FB 4C 8E EE 68 68 8A 4C   F0
0BC9 : F9 E0 48 A5 03 29 04 F0   65
0BD1 : 16 68 C9 40 90 10 C9 60   07
0BD9 : B0 02 69 20 C9 C0 90 06   DA
0BE1 : C9 E0 B0 02 E9 7F 48 A5   8E
0BE9 : 03 29 08 F0 16 68 C9 0D   87
0BF1 : D0 08 20 96 FA CE 03 DD   8E
0BF9 : A9 0A 60 20 79 00 C9 2C   DB
0C01 : F0 F8 68 68 60 85 AC 58   2A
0C09 : 60 AD 00 DD 29 08 D0 12   36
0C11 : 20 91 F8 A9 FF 8D 0C DD   C5
0C19 : 20 7F F8 8A A2 14 CA D0   20
0C21 : FD AA 4C 2E ED 2C 0D DD   7C
0C29 : 4C 85 EE 4C 62 ED AD 00   C9
0C31 : DD CD 00 DD D0 F8 48 AD   02
0C39 : 0D DD 29 08 F0 06 A5 03   5C
0C41 : 09 C0 85 03 68 10 E7 09   25
0C49 : 10 8D 00 DD 29 08 D0 DB   A9
0C51 : 24 03 10 D7 20 91 F8 A5   B4
0C59 : 95 8D 0C DD 20 7F F8 8A   6B
0C61 : 48 A2 22 20 A9 EE B0 04   64
0C69 : 68 AA 58 60 CA D0 F4 68   20
0C71 : AA 4C B0 ED 48 A5 03 29   3B
0C79 : 7F 85 03 68 4C 1C FE 20   6B
0C81 : CB FE 90 07 AA 4C E7 F2   63
0C89 : 20 D5 F3 60 20 D8 F0 85   34
0C91 : BA 60 2A 20 E9 FB 4C C4   43
0C99 : F4 86 0B 20 AF F5 E0 07   D3
0CA1 : F0 F1 A5 03 29 BF 09 10   28
0CA9 : 85 03 A0 00 B1 BB C9 24   40
0CB1 : F0 E1 A5 BA 20 0C ED A9   C0
0CB9 : 6F 20 B9 ED A5 90 10 06   8F
0CC1 : 20 E9 FB 4C 07 F7 A0 03   17
0CC9 : B9 7B F8 20 DD ED 88 D0   93
0CD1 : F7 20 FC F3 24 03 50 BB   A9
0CD9 : 78 20 85 EE 20 86 F8 2C   13
0CE1 : 0D DD 20 73 F8 20 2D F8   8B
0CE9 : C9 02 D0 09 20 85 EE 20   33
0CF1 : E9 FB 4C 04 F7 48 C9 1F   93
0CF9 : D0 0B 20 73 F8 20 2D F8   FD
0D01 : 85 B4 4C A5 F7 C9 02 90   9F
0D09 : 03 68 B0 76 20 D2 F5 20   EC
0D11 : E9 FB 20 73 F8 20 2D F8   A6
0D19 : 85 AE 20 73 F8 20 2D F8   A3
0D21 : 85 AF 8A D0 08 A5 C3 85   02
0D29 : AE A5 C4 85 AF 68 C9 1F   2F
0D31 : F0 2F 20 73 F8 A9 FC 85   0B
0D39 : B4 20 EA FF 20 E1 FF F0   AB
0D41 : 4D 38 4C 38 F8 20 2D F8   FC
0D49 : C9 02 90 06 C9 1F F0 09   64
0D51 : D0 30 20 73 F8 A9 FE D0   2A
0D59 : DE 20 73 F8 20 2D F8 85   9E
0D61 : B4 20 73 F8 18 4C 38 F8   D8
0D69 : A9 40 20 1C FE 20 85 EE   A3
0D71 : 58 18 08 A6 0B E0 09 D0   2A
0D79 : 03 20 6F F9 28 A6 AE A4   63
0D81 : AF 60 A9 02 20 1C FE 20   2A
0D89 : 85 EE A9 1D 38 60 20 85   A5
0D91 : EE 4C 33 F6 A9 08 2C 0D   F7
0D99 : DD F0 FB AD 0C DD 60 26   20
0DA1 : 0B A9 08 2C 0D DD F0 FB   84
0DA9 : AC 0C DD AD 00 DD 49 10   BD
0DB1 : 8D 00 DD 98 A0 00 A6 93   94
0DB9 : F0 0A D1 AE F0 08 A9 10   0F
0DC1 : 20 1C FE 2C 91 AE E6 AE   BC
0DC9 : D0 02 E6 AF C6 B4 D0 D1   43
0DD1 : 46 0B B0 03 4C 01 F8 4C   73
0DD9 : DE F7 AD 00 DD 49 10 8D   A2
0DE1 : 00 DD 60 9F 30 55 AD 0D   5A
0DE9 : DD 29 08 F0 F9 AD 0E DD   7C
0DF1 : 29 80 09 08 8D 0E DD 60   1F
0DF9 : A9 7F 8D 0D DD A9 00 8D   AD
0E01 : 05 DD A9 04 8D 04 DD AD   AB
0E09 : 0E DD 29 80 09 55 8D 0E   EE
0E11 : DD 2C 0D DD 60 8D 2F D0   D4
0E19 : A0 FF 8C 00 DC AE 01 DC   DD
0E21 : E0 FF F0 39 AD 2F D0 10   1C
0E29 : 34 A9 FE A2 08 8D 2F D0   91
0E31 : AD 01 DC CD 01 DC D0 F8   7C
0E39 : 4A CA 10 0C AD 2F D0 38   76
0E41 : 2A C9 F7 D0 E6 4C F6 F8   06
0E49 : C8 B0 ED 98 69 41 85 CB   46
0E51 : A2 FF 8E 2F D0 A0 00 8C   A7
0E59 : 00 DC 4C 9B EA A2 FF 8E   2F
0E61 : 2F D0 A9 00 8D 00 DC AE   0C
0E69 : 01 DC 4C 96 EA 4C E0 EA   29
0E71 : A6 CB E0 41 90 F7 BD D9   D0
0E79 : F9 AC 8D 02 F0 09 BD F1   9E
0E81 : F9 C0 01 F0 02 A9 FF A4   EF
0E89 : CB 4C E4 EA AA E0 F1 B0   EC
0E91 : 03 4C D6 F9 E0 FF F0 F9   75
0E99 : E0 F9 D0 18 A9 01 A8 91   15
0EA1 : 2B 20 33 A5 A5 22 A4 23   A2
0EA9 : 18 69 02 90 01 C8 85 2D   CF
0EB1 : 84 2E D0 46 E0 FA D0 10   92
0EB9 : A9 00 85 C7 85 D8 85 D4   9B
0EC1 : 85 C6 A9 08 85 BA D0 35   F1
0EC9 : A5 03 29 30 D0 2F E0 F1   2E
0ED1 : F0 07 E0 F2 D0 4D A9 30   5A
0ED9 : 2C A9 31 48 20 D8 F0 20   FC
0EE1 : 0C ED A9 6F 20 B9 ED A0   05
0EE9 : 03 B9 B8 F9 20 DD ED 88   F0
0EF1 : 10 F7 68 20 DD ED 20 FE   E7
0EF9 : ED 78 20 99 F9 4C 42 EB   40
0F01 : A9 00 8D 2F D0 8D 00 DC   27
0F09 : AD 01 DC CD 01 DC D0 F8   54
0F11 : 29 FB 49 FB D0 F2 A2 FF   39
0F19 : 8E 2F D0 8E 00 DC 60 4D   48
0F21 : 9E 30 55 A9 01 E0 F3 D0   EA
0F29 : 07 05 03 85 03 4C 42 EB   98
0F31 : E0 F4 D0 09 49 FF 25 03   10
0F39 : 85 03 4C 42 EB E0 F0 D0   C6
0F41 : 1C 20 99 F9 A9 00 8D 2F   42
0F49 : D0 8D 00 DC AD 01 DC CD   6D
0F51 : 01 DC D0 F8 29 FB 49 FB   A3
0F59 : F0 F2 4C 93 F9 A9 04 E0   07
0F61 : F5 F0 C6 E0 F6 F0 CD A9   1D
0F69 : 08 E0 F7 F0 BC E0 F8 F0   96
0F71 : C3 8A AE 8D 02 E0 05 D0   B3
0F79 : 02 09 80 AA C4 C5 4C E7   F1
0F81 : EA F3 38 35 F1 32 34 37   09
0F89 : 31 1B 2B 2D F7 0D 36 39   EC
0F91 : 33 0E 30 2E 91 11 9D 1D   F0
0F99 : F0 F4 B2 DB F2 B1 AB B0   F8
0FA1 : AD 1B 2A 2F F8 3D B3 AE   F2
0FA9 : BD 8E DD C0 91 11 9D 1D   8F
0FB1 : F0 48 A9 01 85 12 A5 03   D5
0FB9 : 29 FD 85 03 4A B0 1C 68   0E
0FC1 : 48 C9 20 90 0F C9 60 B0   2A
0FC9 : 0B 29 1F C9 1F F0 05 20   38
0FD1 : E3 FB C6 12 68 20 97 EE   69
0FD9 : 4C 27 ED 68 C9 24 D0 E0   04
0FE1 : 20 E3 FB A5 03 09 02 85   32
0FE9 : 03 18 60 A5 03 29 03 C9   DE
0FF1 : 03 D0 31 A9 FF 8D 03 DD   12
0FF9 : A5 95 20 93 F3 8D 01 DD   4F
1001 : AD 00 DD 29 FB 8D 00 DD   33
1009 : 09 04 8D 00 DD A9 7F 8D   BC
1011 : 00 DC CD 01 DC F0 08 AD   E4
1019 : 0D DD 29 10 F0 EF 18 EE   2E
1021 : 03 DD 58 60 20 97 EE 4C   48
1029 : 44 ED 20 79 00 F0 20 20   E3
1031 : 9E AD 24 0D 30 38 20 F7   86
1039 : B7 AA D0 10 C0 10 B0 0C   E3
1041 : 98 86 14 0A 0A 0A 0A D0   1D
1049 : 01 00 85 15 4C 30 E1 20   5C
1051 : FF F0 20 D8 F0 20 09 ED   FB
1059 : A9 6F 20 C7 ED A4 90 30   61
1061 : 35 20 13 EE 20 16 E7 C9   2F
1069 : 0D D0 F6 4C EF ED 20 5A   C9
1071 : E2 20 E6 E1 20 FF F0 B1   82
1079 : BB C9 24 F0 1E C9 4C D0   43
1081 : 03 4C 12 FC 20 D8 F0 20   9B
1089 : 0C ED A9 6F 20 B9 ED 24   B4
1091 : 90 30 03 4C F6 F3 A9 05   43
1099 : 4C F9 E0 84 B9 20 CF FE   84
10A1 : 20 C2 FE A5 BA 20 09 ED   43
10A9 : A9 60 20 C7 ED A0 05 2C   D4
10B1 : A0 03 20 81 FB D0 21 88   E7
10B9 : D0 F8 AA 20 13 EE 20 CD   79
10C1 : BD A9 20 20 16 E7 20 81   83
10C9 : FB D0 0D AA D0 F5 20 D7   B2
10D1 : AA 20 E1 FF F0 02 D0 D8   18
10D9 : A0 00 84 C6 4C 46 F6 A2   8B
10E1 : 01 86 D4 86 D8 4C 16 E7   43
10E9 : 20 13 EE 4C C5 E4 00 00   5B
10F1 : 00 00 00 00 00 A5 C2 85   35
10F9 : AD A5 C1 85 AC 60 A0 00   EA
1101 : B1 BB C9 40 D0 34 A9 53   06
1109 : 91 BB A5 9D 10 11 A0 24   E9
1111 : 20 2B F1 A0 01 B1 BB C9   77
1119 : 3A D0 01 C8 20 C7 F5 A9   80
1121 : 6F 85 B9 20 C2 FE A0 00   6C
1129 : A9 40 91 BB A9 61 85 B9   FD
1131 : 18 20 ED F0 B0 04 C9 3A   B9
1139 : F0 F7 4C C2 FE C6 12 D0   A0
1141 : 06 20 97 EE 20 EE FB 4C   1D
1149 : 97 EE A5 03 09 20 D0 09   08
1151 : A5 03 29 EF 2C A5 03 29   0E
1159 : DF 85 03 60 48 C9 00 D0   3C
1161 : 14 A5 B9 C9 05 D0 0E A9   52
1169 : 00 85 B9 A5 2D A4 2E E9   D3
1171 : 02 B0 01 88 AA 68 4C D5   E7
1179 : FF 20 ED F0 48 20 ED F0   41
1181 : 68 C9 50 F0 0B C9 53 F0   2E
1189 : 03 4C 08 AF 18 A9 6E 2C   8B
1191 : A9 60 08 85 B9 20 CF FE   F7
1199 : 20 C2 FE A5 BA 20 09 ED   3B
11A1 : A5 B9 20 C7 ED 28 B0 10   27
11A9 : 20 81 FB D0 08 20 78 FB   FE
11B1 : 20 E1 FF D0 F3 4C 46 F6   84
11B9 : A0 03 2C A0 02 20 81 FB   19
11C1 : D0 65 85 49 20 81 FB D0   6E
11C9 : 5E 88 D0 F1 A6 49 20 CD   AE
11D1 : BD A0 02 84 60 88 84 49   DE
11D9 : 88 84 0B 84 0F 84 5F 8C   A2
11E1 : 01 02 20 81 FB D0 40 C8   F4
11E9 : F0 3D 99 01 02 AA D0 F2   9D
11F1 : AD 00 03 8D 00 01 AD 01   D2
11F9 : 03 8D 01 01 A9 AC A0 FC   A0
1201 : 8D 00 03 8C 01 03 AD 03   C6
1209 : 03 C9 81 F0 03 4C ED A6   07
1211 : 20 23 96 AD 00 01 8D 00   5C
1219 : 03 AD 01 01 8D 01 03 20   81
1221 : D7 AA 20 E1 FF D0 94 20   AB
1229 : 46 F6 A5 7B C9 03 B0 07   49
1231 : 20 2C A8 4C 86 E3         A9
Listing. Das Programm »fsd64.obj« bitte mit dem »MSE« abtippen.
1000 rem **** fast serial disk ****
1005 rem save"@0:fsd64.src",8
1010 open1,8,15,"s0:fsd64"
1015 open8,8,1,"fsd64,p,w
1020 open4,4
1025 sys9*4096
1030 .opt o8 ;profi-ass 64
1035 ;" **** Fast Serial Disk 64 ****
1040 ;"(c)1986 by D.Temme, V: 16061986
1045 ;
1050 ;"Hardware: Userport 6&7->Serial Port 1&5
1055 ;" (Anschluss von SRQ/DATA an CNT2/SP2)
1060 ;"fuer Centronics ausserdem:
1065 ;" Userport C-L ->Centronics 2-9
1070 ;"          B->1, M->11 (DATA, -STROBE, BUSY)
1075 ;"Benutzter Bereich: Kassettenroutinen:
1080 ;"  $e4b7-$e4d2:   28 Bytes (  28 belegt)
1085 ;"  $f0d8-$f105:   46 Bytes (  41 belegt)
1090 ;"  $f199-$f1ac:   20 Bytes (  20 belegt)
1095 ;"  $f2c8-$f2ed:   38 Bytes (  38 belegt)
1100 ;"  $f393-$f3d1:   63 Bytes (  59 belegt)
1105 ;"  $f533-$f5a8:  118 Bytes ( 116 belegt)
1110 ;"  $f659-$f68d:   53 Bytes (  53 belegt)
1115 ;"  $f72c-$fcd0: 1434 Bytes (1433 belegt)
1120 ;"  $fec2-$fed5:   20 Bytes (  19 belegt)
1122 ;
1125 ;"Tastatur-Funktionen:
1130 ;"  ESC                      CHR$(27)
1135 ;"  TAB/SHT-TAB   CTRL-+/-   U0>M1/0
1140 ;"  ALT/SHT-ALT    C=-</>    CHR$(8)/CHR$(142)
1145 ;"  HLP/SHT-HLP   CTRL-,/.   Centronics ein/aus
1150 ;"   LF/SHT-LF   CTRL-=/RET  LF ein/aus
1155 ;"   NO SCROLL     CTRL-S    Stop bis Taste
1160 ;"      CTRL-DOWN/RIGHT      ASCII-Wandlung ein/aus
1165 ;"          CTRL-*           OLD-Funktion
1170 ;"          CTRL-/           Escape-Funktion
1171 ;"bei Scrolling: <C=> haelt an
1172 ;
1175 ;"Der neue SYS-Befehl:
1180 ;"  SYS               Disk-Status
1185 ;"  SYS'$...'<,dv>    Directory anzeigen
1190 ;"  SYS'befehl'<,dv>  Disk-Befehl geben
1195 ;"  SYS'LSname'<,dv>  SEQ-File listen
1200 ;"  SYS'LPname'<,dv>  PRG-File listen
1205 ;"  SYSx (x=1..15)    fuehrt SYS x*4096 aus
1210 ;"  SYS0              ergibt Soft-BRK
1211 ;
1215 ;"Der LOAD-Befehl:
1220 ;"  LOAD              LOAD"*",8,1
1225 ;"  LOAD"name",dv,7   kein Burst-Mode
1230 ;"  LOAD"name",dv,9   nach Laden U0>M0 geben
1235 ;"  LOAD"name",dv,5   APPEND (nur in BASIC)
1240 ;"------------------------------------------------------
1245 ;">>> BASIC-LOADER (ab $0801)
1250 start =$f299 ;"(nicht anders moeglich)
1255 *=start
1260 temp =$55
1265 .byt $0b,$08
1270 .wor 1986
1275 .byt $9e
1280 .asc "2061"
1285 .byt 0,0,0
1290 ldy #0
1295 sty temp
1300 ldx #$40
1305 lda #$80
1310 sta temp+1
1315 copy1 lda (temp),y
1320 sta (temp),y
1325 iny
1330 bne copy1
1335 inc temp+1
1340 dex
1345 bne copy1
1350 ldx #$20
1355 lda #$e0
1360 sta temp+1
1365 copy2 lda (temp),y
1370 sta (temp),y
1375 iny
1380 bne copy2
1385 inc temp+1
1390 dex
1395 bne copy2
1400 lda #8
1405 sta $f387 ;"Kein Tape OPEN
1410 lda #$f7
1415 sta $f4b7 ;"Kein Tape LOAD
1420 sta $f5f9 ;"Kein Tape SAVE
1425 copy3 lda begprg
1430 sta $f72c
1435 inc copy3-start+$801+1
1440 bne copy4
1445 inc copy3-start+$801+2
1450 copy4 inc copy3-start+$801+4
1455 bne copy5
1460 inc copy3-start+$801+5
1465 copy5 lda copy3-start+$801+1
1470 cmp #<endprg
1475 bne copy3
1480 lda copy3-start+$801+2
1485 cmp #>endprg
1490 bne copy3
1495 ;"Neue Farben installieren
1500 lda #11 ;d grey
1505 ldx #11
1510 ldy #1 ;white
1515 sta $ecd9 ;rom border
1520 stx $ecda ;rom ground
1525 sty $e535 ;rom cursor
1530 sta $d020 ;vic border
1535 stx $d021 ;vic ground
1540 sty $0286 ;ram cursor
1545 lda #$4c
1550 ;"LOAD installieren
1555 ldx #<newlod
1560 ldy #>newlod
1565 sta $f4c1
1570 stx $f4c2
1575 sty $f4c3
1580 ldx #<ldend
1585 ldy #>ldend
1590 sta $f5aa
1595 stx $f5ab
1600 sty $f5ac
1605 ;"TALK/LISTEN installieren
1610 ldx #<newtlk
1615 ldy #>newtlk
1620 sta $ed27
1625 stx $ed28
1630 sty $ed29
1635 ;"IECOUT installieren
1640 ldx #<no1
1645 ldy #>no1
1650 stx $ed4a
1655 sty $ed4b
1660 ldx #<no2
1665 ldy #>no2
1670 sta $ed5a
1675 stx $ed5b
1680 sty $ed5c
1685 ldx #<no3
1690 ldy #>no3
1695 sta $ed94
1700 stx $ed95
1705 sty $ed96
1710 ldx #<no4
1715 ldy #>no4
1720 stx $edb3
1725 sty $edb4
1730 ;"TALK/LISTEN/IECOUT kopieren
1735 pha
1740 ldy #117
1745 lda xnwtlk-start+$801,y
1750 sta newtlk,y
1755 dey
1760 bpl *-7
1765 pla
1770 ;"UNLISTEN/UNTALK-Ende installieren
1775 ldx #<unlend
1780 ldy #>unlend
1785 stx $ee11
1790 sty $ee12
1795 ;"ACPTR installieren+kopieren
1800 ldx #<ni1
1805 ldy #>ni1
1810 stx $ee19
1815 sty $ee1a
1820 pha
1825 ldy #70
1830 lda nacptr-start+$801,y
1835 sta $ee22,y
1840 dey
1845 bpl *-7
1850 ldy #52
1855 lda xntest-start+$801,y
1860 sta ntest,y
1865 dey
1870 bpl *-7
1875 pla
1880 ;"SECTLK installieren
1885 ldx #<newstk
1890 ldy #>newstk
1895 sta $edc9
1900 stx $edca
1905 sty $edcb
1910 ;"UNLSN installieren
1915 ldx #<nunlsn
1920 ldy #>nunlsn
1925 stx $ee01
1930 sty $ee02
1935 ;"UNLSN/ACPTR/NEWNMI kopieren
1940 pha
1945 ldy #37
1950 lda xni1-start+$801,y
1955 sta ni1,y
1960 dey
1965 bpl *-7
1970 pla
1975 ;"KEY installieren
1980 ldx #<newkey
1985 ldy #>newkey
1990 sta $ea93
1995 stx $ea94
2000 sty $ea95
2005 ldx #<newget
2010 ldy #>newget
2015 stx $eb77
2020 sty $eb78
2025 ldx #<newfnc
2030 ldy #>newfnc
2035 sta $eae4
2040 stx $eae5
2045 sty $eae6
2050 ldx #240
2055 stx $ec78+$d
2060 inx
2065 stx $ec78+$28
2070 inx
2075 stx $ec78+$2b
2080 inx
2085 stx $ec78+$2f
2090 inx
2095 stx $ec78+$2c
2100 inx
2105 stx $ec78+7
2110 inx
2115 stx $ec78+2
2120 inx
2125 stx $ec78+$35
2130 inx
2135 stx $ec78+1
2140 inx
2145 stx $ec78+$31
2150 inx
2155 stx $ec78+$37
2156 ldx #19
2157 stx $ec78+$33 ;"CTRL-HOME -> HOME
2158 ldx #14
2159 stx $ec03+$2f ;"C=-'<' -> chr$(14)
2160 ldx #14+128
2161 stx $ec03+$2c ;"C=-'>' -> chr$(142)
2162 ldx #31
2163 stx $ecb1
2164 ;"Centronics installieren
2165 ldx #<centlk
2170 ldy #>centlk
2175 sta $ed24
2180 stx $ed25
2185 sty $ed26
2190 ldx #<cenout
2195 ldy #>cenout
2200 sta $ed41
2205 stx $ed42
2210 sty $ed43
2215 ;"TOASC+NEWCHK kopieren
2220 pha
2225 ldy #58
2230 lda xtoasc-start+$801,y
2235 sta toasc,y
2240 dey
2245 bpl *-7
2250 pla
2255 ;"NMI installieren
2260 ldx #<newnmi
2265 ldy #>newnmi
2270 stx $ff7e
2275 sty $ff7f
2280 ;"SYS installieren
2285 ldx #<newsys
2290 ldy #>newsys
2295 sta $e12a
2300 stx $e12b
2305 sty $e12c
2310 ;"SAVE@ installieren
2315 ldx #<newrpl
2320 ldy #>newrpl
2325 stx $f606
2330 sty $f607
2335 ;"APPEND installieren
2340 ldx #<append
2345 ldy #>append
2350 stx $e176
2355 sty $e177
2360 ;"Scroll installieren
2365 ldx #<scrolu
2370 ldy #>scrolu
2375 sta $e8ea
2380 stx $e8eb
2385 sty $e8ec
2390 ldx #<scrole
2395 ldy #>scrole
2400 sta $e962
2405 stx $e963
2410 sty $e964
2415 ldx #<scrold
2420 ldy #>scrold
2425 sta $e981
2430 stx $e982
2435 sty $e983
2436 ldy #6
2437 lda scrhlt-start+$801,y
2438 sta $e942,y
2439 dey
2440 bpl *-7
2441 ;"Verschiedenes kopieren
2445 ldy #45
2450 lda xgetdn-start+$801,y
2455 sta getdn,y
2460 dey
2465 bpl *-7
2470 ldy #19
2475 lda xopen-start+$801,y
2480 sta open,y
2485 dey
2490 bpl *-7
2495 ldy #19
2500 lda xnewst-start+$801,y
2505 sta newstk,y
2510 dey
2515 bpl *-7
2520 ldy #27
2525 lda xscrol-start+$801,y
2530 sta scrolu,y
2535 dey
2540 bpl *-7
2545 ;"FSDFLG schuetzen+Repeat setzen
2550 lda #$80
2555 ldx #$ea
2560 sta $e3d9
2565 stx $e3df
2570 lda #$8d
2575 ldx #<650
2580 ldy #>650
2585 sta $e3dc
2590 stx $e3dd
2595 sty $e3de
2600 ;"LSV-Default auf "*",8,1 setzen
2605 ldx #8
2610 ldy #1
2615 stx $e1da
2620 sty $e1dc
2625 lda #$01
2630 ldx #<setast
2635 ldy #>setast
2640 sta $e1d5
2645 stx $e1d7
2650 sty $e1d8
2655 ;"OPEN-Default auf ,8,15 setzen
2660 ldx #8
2665 ldy #15
2670 stx $e228
2675 sty $e22a
2680 ;"Neue LSV-Get-Routine installieren
2685 ldx #<newchk
2690 ldy #>newchk
2695 stx $e1e7
2700 sty $e1e8
2705 stx $e1f4
2710 sty $e1f5
2715 ;"'RUN'-Taste aendern
2720 ldx #"U"
2725 ldy #":"
2730 stx $eced
2735 sty $ecee
2740 ;"Startmeldung installieren
2745 ldy #7
2750 lda tabtxt-start+$801,y
2755 sta $e49b,y
2760 dey
2765 bpl *-7
2770 lda #">
2775 ldy #3
2780 sta $e479,y
2785 dey
2790 bpl *-4
2795 lda #"<
2800 ldy #3
2805 sta $e494,y
2810 dey
2815 bpl *-4
2820 lda #5
2825 sta $01 ;"Kernal im RAM
2830 jmp $e39a
2835 tabtxt .asc "dte fsd-"
2840 ;"------------------------------------------------------
2845 ;">>> Variablendefinition
2850 begprg =$f72c-start+$801
2855 ;"ZEROPAGE-Bereich
2860 fsdflg =$03
2865 ;"Belegung des FSDFLG: b7   FSD aktiv
2870 ;"                     b6   FSD moeglich
2875 ;"                     b5/4 Tastatur inaktiv
2880 ;"                     b3   CENTRONICS CRLF
2885 ;"                     b2   CENTRONICS ASCII
2890 ;"                     b1   CENTRONICS aktiv
2895 ;"                     b0   CENTRONICS erlaubt
2900 numflg =$0d
2905 index =$22
2910 txttab =$2b
2915 vartab =$2d
2920 chrgot =$79
2925 status =$90
2930 ldvflg =$93
2935 iecbyt =$95
2940 ldadr =$ae
2945 cnter =$b4
2950 fnlen =$b7
2955 sa =$b9
2960 dn =$ba
2965 fnadr =$bb
2970 oldadr =$c3
2975 numkey =$c6
2980 rvsflg =$c7
2985 keynum =$cb
2990 quote =$d4
2995 insert =$d8
3000 buf =$0200
3005 shtflg =$028d
3010 ;"BASIC-Bereich
3015 error =$a437
3020 lnkprg =$a533
3025 outcr =$aad7
3030 frmevl =$ad9e
3035 snerr =$af08
3040 getadr =$b7f7
3045 linprt =$bdcd
3050 ;"I/O-Bereich
3055 vicprt =$d02f
3060 c1pra =$dc00
3065 c1prb =$dc01
3070 c1icr =$dc0d
3075 c2pra =$dd00
3080 c2prb =$dd01
3085 c2ddrb =$dd03
3090 c2t1l =$dd04
3095 c2t1h =$dd05
3100 c2sdr =$dd0c ;"Datenregister
3105 c2icr =$dd0d ;"b3: SDR voll/leer
3110 c2cra =$dd0e
3115 ;"KERNAL-Bereich
3120 outscr =$e716
3125 talk =$ed09
3130 lstn =$ed0c
3135 seclsn =$edb9
3140 sectlk =$edc7
3145 iecout =$eddd
3150 untalk =$edef
3155 unlstn =$edfe
3160 iecin =$ee13
3165 clkhig =$ee85
3170 clklow =$ee8e
3175 dathig =$ee97
3180 datlow =$eea0
3185 datain =$eea9
3190 iecopn =$f3d5
3195 getend =$f5a9
3200 outsrc =$f5af
3205 outldv =$f5d2
3210 ieccls =$f646
3215 ioerr4 =$f704
3220 ioerr5 =$f707
3225 setst =$fe1c
3230 tststp =$ffe1
3231 udtim =$ffea
3232 ;"------------------------------------------------------
3233 ;"bei Scroll und <C=> anhalten (7)
3234 scrhlt beq *+9
3235 cmp #223 ;"C=-Taste
3236 beq *-9
3237 nop
3240 ;"------------------------------------------------------
3245 ;">>> FSD: Geaenderte ACPTR-Routine (an Original-Stelle)
3250 nacptr jmp ntest
3255 nac1 ldx #8
3260 txa
3265 and c2icr
3270 bne nac6
3275 nac2 lda c2pra
3280 cmp c2pra
3285 bne nac2
3290 asl
3295 bpl nac1
3300 nac3 ror $a4
3305 nac4 lda c2pra
3310 cmp c2pra
3315 bne nac4
3320 asl
3325 bmi nac4
3330 dex
3335 beq nac7
3340 nac5 lda c2pra
3345 cmp c2pra
3350 bne nac5
3355 asl
3360 bpl nac5
3365 bmi nac3
3370 nac6 lda c2sdr
3375 sta $a4
3380 lda fsdflg
3385 ora #$c0
3390 sta fsdflg
3395 nac7 ldx $a3
3400 jmp $ee76 ;68
3405 ;"------------------------------------------------------
3410 ;">>> Verschiedenes (44/46)
3415 getdn =$f0d8
3420 xgetdn lda dn
3425 cmp #8
3430 bcs dnok
3435 lda #8
3440 dnok rts
3445 scrtxt =*-xgetdn+getdn
3450 .byt 13
3455 .asc "scratching"
3460 .byt 160
3465 incadr =*-xgetdn+getdn
3470 dec fnlen
3475 beq *+11
3480 inc fnadr
3485 bne *+4
3490 inc fnadr+1
3495 lda (fnadr),y
3500 rts
3505 ldx #8 ;"?MISS FILE NAME
3510 jmp error
3515 clrst =*-xgetdn+getdn
3520 ldy #0
3525 sty status
3530 rts
3535 ;"------------------------------------------------------
3540 ;">>> Geaenderte SECTALK-Routine (Korrektur, 13)
3545 newstk =$f199
3550 xnewst jsr $ed36
3555 bit status
3560 bmi *+5
3565 jmp $edcc
3570 jmp $ee03
3575 ;">>> LSV-Default auf "*" setzen (7)
3580 setast =*-xnewst+newstk
3585 ldx #<astric
3590 ldy #>astric
3595 jmp $ffbd
3600 ;"------------------------------------------------------
3605 ;">>> Geaenderte Scroll-Routine (14/28)
3610 scrolu =$e4b7
3615 xscrol sei
3620 lda $ac
3625 pha
3630 jmp $e8ed
3635 scrold =*-xscrol+scrolu
3640 sei
3645 lda $ac
3650 pha
3655 jmp $e984
3660 ;">>> FileNotFound-Test (14)
3665 fnftst =*-xscrol+scrolu
3670 ldx status
3675 cpx #66
3680 beq *+5
3685 cpx #0
3690 rts
3695 ldx #4 ;"?File Not Found
3700 jmp error
3705 ;"------------------------------------------------------
3710 ;">>> FSD: Teil der neuen ACPTR-Routine (52)
3715 ntest =$f659
3720 xntest ldx #13
3725 lda c2pra
3730 and #$df
3735 sta c2pra
3740 nt1 lda c2pra
3745 cmp c2pra
3750 bne nt1
3755 asl
3760 bpl ntend
3765 dex
3770 bne nt1
3775 lda $a5
3780 bne ntneoi
3785 jsr datlow
3790 jsr clkhig
3795 lda #$40
3800 jsr setst
3805 inc $a5
3810 bne xntest
3815 ntneoi ldx $a3
3820 lda #2
3825 jmp $edb2
3830 ntend jmp $ee25
3835 ;">>> FSD: Rest ACPTR-Routine (15)
3840 ni1 =$f2c8
3845 xni1 bit c2icr
3850 stx $a3
3855 lda status
3860 and #$bd
3865 sta status
3870 jmp clkhig
3875 ;">>> FSD: Neue UNTALK/UNLISTEN-Routine (11)
3880 nunlsn =*-xni1+ni1
3885 pha
3890 lda fsdflg
3895 and #$7f
3900 sta fsdflg
3905 pla
3910 jmp $ed11
3915 ;">>> Geaenderte NMI-Routine (6)
3920 newnmi =*-xni1+ni1
3925 jsr allon
3930 jmp clklow
3935 ;">>> Rest Error-Routine (6)
3940 newerr =*-xni1+ni1
3945 pla
3950 pla
3955 txa
3960 jmp $e0f9
3965 ;"------------------------------------------------------
3970 ;">>> Centronics-Umwandlung (48)
3975 toasc =$f393
3980 xtoasc pha
3985 lda fsdflg
3990 and #4
3995 beq taend
4000 pla
4005 cmp #$40 ;"ASCII-Wandlung
4010 bcc taend2
4015 cmp #$60
4020 bcs tanot
4025 adc #32
4030 tanot cmp #$c0
4035 bcc taend2
4040 cmp #$e0
4045 bcs taend2
4050 sbc #127
4055 taend2 pha
4060 taend lda fsdflg
4065 and #8 ;"bei CR auch LF senden
4070 beq taend3
4075 pla
4080 cmp #13
4085 bne taend4
4090 jsr cenprt
4095 dec c2ddrb
4100 lda #10
4105 taend4 rts
4110 ;">>> Geaenderte LSV-Get-Routine (10)
4115 newchk =*-xtoasc+toasc
4120 jsr chrgot
4125 cmp #","
4130 beq taend4
4135 pla
4140 taend3 pla
4145 rts
4150 ;">>> Rest geaenderte Scroll-Routine (4)
4155 scrole =*-xtoasc+toasc
4160 sta $ac
4165 cli
4170 rts
4175 ;"------------------------------------------------------
4180 ;">>> FSD: Neue TALK/LISTEN-Routine (26)
4185 newtlk =$f533
4190 xnwtlk lda c2pra
4195 and #8
4200 bne netend
4205 jsr setit
4210 lda #$ff
4215 sta c2sdr
4220 jsr watset
4225 txa
4230 ldx #$14
4235 net1 dex
4240 bne net1
4245 tax
4250 netend jmp $ed2e
4255 ;">>> FSD: Neue IECOUT-Routine (90)
4260 no1 =*-xnwtlk+newtlk
4265 bit c2icr
4270 jmp clkhig
4275 noold jmp $ed62
4280 no2 =*-xnwtlk+newtlk
4285 xno2 lda c2pra
4290 cmp c2pra
4295 bne xno2
4300 pha
4305 lda c2icr
4310 and #8
4315 beq notfsd
4320 lda fsdflg
4325 ora #$c0
4330 sta fsdflg
4335 notfsd pla
4340 bpl xno2
4345 ora #$10
4350 sta c2pra
4355 and #8
4360 bne noold
4365 bit fsdflg
4370 bpl noold
4375 jsr setit
4380 lda iecbyt
4385 sta c2sdr
4390 jsr watset
4395 no3 =*-xnwtlk+newtlk
4400 txa
4405 pha
4410 ldx #$22
4415 no3wat jsr datain
4420 bcs no3hig
4425 pla
4430 tax
4435 cli
4440 rts
4445 no3hig dex
4450 bne no3wat
4455 pla
4460 tax
4465 jmp $edb0
4470 no4 =*-xnwtlk+newtlk
4475 pha
4480 lda fsdflg
4485 and #$7f
4490 sta fsdflg
4495 pla
4500 jmp setst
4505 ;"------------------------------------------------------
4510 ;">>> Hilfsroutine zum Oeffnen (19/20)
4515 open =$fec2
4520 xopen jsr open+9
4525 bcc *+9
4530 tax
4535 jmp newerr
4540 jsr iecopn
4545 rts
4550 putdn =*-xopen+open
4555 jsr getdn
4560 sta dn
4565 rts
4570 astric =*-xopen+open
4575 .byt "*"
4580 ;"------------------------------------------------------
4585 ;">>> FSD: Neue LOAD-Routine (ab $f72c)
4590 nlold jsr allon
4595 jmp $f4c4
4600 newlod stx $b
4605 jsr outsrc
4610 cpx #7
4615 beq nlold
4620 lda fsdflg
4625 and #%10111111
4630 ora #16
4635 sta fsdflg
4640 ldy #0
4645 lda (fnadr),y
4650 cmp #"$"
4655 beq nlold
4660 lda dn
4665 jsr lstn
4670 lda #$6f
4675 jsr seclsn
4680 lda status
4685 bpl nldvpr
4687 jsr allon
4690 jmp ioerr5
4695 nldvpr ldy #3
4700 nl2 lda txu0ld-1,y
4705 jsr iecout
4710 dey
4715 bne nl2
4720 jsr iecopn+$27 ;"Filename ausgeben
4750 bit fsdflg
4755 bvc nlold
4760 sei
4765 jsr clkhig
4770 jsr setout
4775 bit c2icr
4780 jsr clkinv
4785 jsr nlgbyt
4790 cmp #2
4795 bne nlfnd
4800 jsr clkhig
4805 jsr allon
4810 jmp ioerr4
4815 nlfnd pha
4820 cmp #$1f
4825 bne nlnlsf
4830 jsr clkinv
4835 jsr nlgbyt
4840 sta cnter
4845 jmp nlnerr
4850 nlnlsf cmp #2
4855 bcc nlnerr
4860 pla
4865 bcs nlderr
4870 nlnerr jsr outldv
4875 jsr allon
4880 jsr clkinv
4885 jsr nlgbyt
4890 sta ldadr
4895 jsr clkinv
4900 jsr nlgbyt
4905 sta ldadr+1
4910 txa
4915 bne nlabs
4920 lda oldadr
4925 sta ldadr
4930 lda oldadr+1
4935 sta ldadr+1
4940 nlabs pla
4945 cmp #$1f
4950 beq nllstb
4955 jsr clkinv
4960 lda #$fc
4965 nlrnxt sta cnter
4970 jsr udtim
4975 jsr tststp
4980 beq nlstp
4985 sec
4990 jmp nlrblk
4995 rdends jsr nlgbyt
5000 cmp #2
5005 bcc nlok
5010 cmp #$1f
5015 beq nllst
5020 bne nlderr
5025 nlok jsr clkinv
5030 lda #$fe
5035 bne nlrnxt
5040 nllst jsr clkinv
5045 jsr nlgbyt
5050 sta cnter
5055 nllstb jsr clkinv
5060 clc
5065 jmp nlrblk
5070 rdendc lda #$40
5075 jsr setst
5080 jsr clkhig
5085 cli
5090 clc
5095 ldend php
5100 ldx $b
5105 cpx #9
5110 bne nlnom0
5115 jsr u0m0
5120 nlnom0 plp
5125 ldx $ae
5130 ldy $af
5135 rts
5140 nlderr lda #2
5145 jsr setst
5150 jsr clkhig
5155 lda #29
5160 sec
5165 rts
5170 nlstp jsr clkhig
5175 jmp $f633
5180 nlgbyt lda #8
5185 nlg1 bit c2icr
5190 beq nlg1
5195 lda c2sdr
5200 rts
5205 nlrblk rol $b
5210 lda #8
5215 nlr1 bit c2icr
5220 beq nlr1
5225 ldy c2sdr
5230 lda c2pra
5235 eor #$10
5240 sta c2pra
5245 tya
5250 ldy #0
5255 ldx ldvflg
5260 beq nlrlod
5265 cmp (ldadr),y
5270 beq nlrinc
5275 lda #$10
5280 jsr setst
5285 .byt $2c
5290 nlrlod sta (ldadr),y
5295 nlrinc inc ldadr
5300 bne nlrnoc
5305 inc ldadr+1
5310 nlrnoc dec cnter
5315 bne nlrblk+2
5320 lsr $b
5325 bcs rdend
5330 jmp rdendc
5335 rdend jmp rdends
5340 clkinv lda c2pra
5345 eor #$10
5350 sta c2pra
5355 rts
5360 txu0ld .byt 31+128,"0","u"
5365 watset lda c2icr
5370 and #8
5375 beq watset
5380 setout lda c2cra
5385 and #$80
5390 ora #8
5395 sta c2cra
5400 rts
5405 setit lda #$7f
5410 sta c2icr
5415 lda #0
5420 sta c2t1h
5425 lda #4
5430 sta c2t1l
5435 lda c2cra
5440 and #$80
5445 ora #$55
5450 sta c2cra
5455 bit c2icr
5460 rts
5465 ;">>> Erweiterte Tastatur-Routinen
5470 newkey sta vicprt
5475 ldy #$ff
5480 sty c1pra
5485 ldx c1prb
5490 cpx #$ff
5495 beq nkend
5500 lda vicprt
5505 bpl nkend ;"nur" ein normaler c-64
5510 lda #$fe
5515 nxtrow ldx #8
5520 sta vicprt
5525 nkwait lda c1prb
5530 cmp c1prb
5535 bne nkwait
5540 nxtkey lsr
5545 dex
5550 bpl nkok
5555 lda vicprt
5560 sec
5565 rol
5570 cmp #$f7
5575 bne nxtrow
5580 jmp nkend
5585 nkok iny
5590 bcs nxtkey
5595 tya
5600 adc #65
5605 sta keynum
5610 ldx #$ff
5615 stx vicprt
5620 ldy #0
5625 sty c1pra
5630 jmp $ea9b
5635 nkend ldx #$ff
5640 stx vicprt
5645 lda #0
5650 sta c1pra
5655 ldx c1prb
5660 jmp $ea96
5665 ngold jmp $eae0
5670 newget ldx keynum
5675 cpx #65
5680 bcc ngold
5685 lda ktab1-65,x
5690 ldy shtflg
5695 beq ngnorm
5700 lda ktab2-65,x
5705 cpy #1
5710 beq ngnorm
5715 lda #$ff
5720 ngnorm ldy keynum
5725 jmp $eae4
5730 newfnc tax
5732 cpx #241
5735 bcs notnrm
5740 jmp notc0
5745 notnrm cpx #255
5750 beq *-5
5755 cpx #249
5760 bne notold
5765 old lda #1
5770 tay
5775 sta (txttab),y
5780 jsr lnkprg
5785 lda index
5790 ldy index+1
5795 clc
5800 adc #2
5805 bcc *+3
5810 iny
5815 sta vartab
5820 sty vartab+1
5825 bne wat2
5830 notold cpx #250
5835 bne notesc
5840 lda #0
5845 sta rvsflg
5850 sta insert
5855 sta quote
5860 sta numkey
5865 lda #8
5870 sta dn
5875 bne endfnc
5885 notesc lda fsdflg
5890 and #48
5895 bne endfnc
5905 cpx #241 ;m1
5910 beq itsm1
5915 cpx #242 ;m0
5920 bne notm0
5925 u0m0 lda #"0"
5930 .byt $2c
5935 itsm1 lda #"1"
5940 pha
5945 jsr getdn
5950 jsr lstn
5955 lda #$6f
5960 jsr seclsn
5965 ldy #3
5970 outmod lda txu0m,y
5975 jsr iecout
5980 dey
5985 bpl outmod
5990 pla
5995 jsr iecout
6000 jsr unlstn
6005 sei
6010 wat2 jsr noscrl
6015 endfnc jmp $eb42
6020 noscrl lda #0
6025 sta vicprt
6030 sta c1pra
6035 modwat lda c1prb
6040 cmp c1prb
6045 bne modwat
6050 and #%11111011
6055 eor #%11111011
6060 bne modwat
6065 ldx #$ff
6070 stx vicprt
6075 stx c1pra
6080 rts
6085 txu0m .byt "m",158,"0","u"
6090 notm0 lda #1
6095 cpx #243 ;c1
6100 bne notc1
6105 setflg ora fsdflg
6115 sta fsdflg
6120 jmp $eb42
6125 notc1 cpx #244 ;c0
6130 bne notc0
6135 clrflg eor #$ff
6145 and fsdflg
6150 sta fsdflg
6155 jmp $eb42
6160 notc0 cpx #240
6165 bne notnsc
6170 jsr noscrl
6175 lda #0
6180 sta vicprt
6185 sta c1pra
6190 scrwat lda c1prb
6195 cmp c1prb
6200 bne scrwat
6205 and #$fb
6210 eor #$fb
6215 beq scrwat
6220 jmp wat2
6225 notnsc lda #4
6230 cpx #245 ;a1
6235 beq setflg
6240 cpx #246 ;a0
6245 beq clrflg
6250 lda #8
6255 cpx #247 ;l1
6260 beq setflg
6265 cpx #248 ;l0
6270 beq clrflg
6275 txa
6277 ldx shtflg
6280 cpx #5
6285 bne noshct
6290 ora #$80
6295 noshct tax
6300 cpy $c5
6305 jmp $eae7
6310 ktab1 .byt 243,"8","5",241,"2","4","7","1",027,"+","-",247
6315 .byt 013,"6","9","3",014,"0",".",145,017,157,029,240
6320 ktab2 .byt 244,"{CBM-R}","{SHIFT-+}",242,"{CBM-E}","{CBM-Q}","{CBM-A}","{CBM-Z}",027,"*","/",248
6325 .byt "=","{CBM-W}","{CBM-S}","{CBM-X}",142,"{SHIFT--}","{SHIFT-*}",145,017,157,029,240
6330 ;">>> CENTRONICS: Neue Druck-Routine
6335 centlk pha
6340 lda #1
6345 sta $12
6350 lda fsdflg
6351 and #$fd
6352 sta fsdflg
6365 lsr
6370 bcs ctnend
6375 pla
6380 ctend pha
6385 cmp #$20
6390 bcc ctend2
6395 cmp #$60
6400 bcs ctend2
6405 and #$1f
6410 cmp #$1f
6415 beq ctend2
6420 jsr keyoff
6425 dec $12
6430 ctend2 pla
6435 jsr dathig
6440 jmp $ed27
6449 ctnend pla
6450 cmp #$24
6455 bne ctend
6460 jsr keyoff
6465 lda fsdflg
6470 ora #2
6475 sta fsdflg
6480 clc
6485 rts
6490 cenout lda fsdflg
6495 and #3
6500 cmp #3
6505 bne coend
6510 lda #$ff
6515 sta c2ddrb
6520 lda iecbyt
6525 jsr toasc
6530 cenprt sta c2prb
6535 lda c2pra
6540 and #$fb
6545 sta c2pra
6550 ora #4
6555 sta c2pra
6560 cenwat lda #$7f
6565 sta c1pra
6570 cmp c1prb
6575 beq censtp
6580 lda c2icr
6585 and #$10
6590 beq cenwat
6595 clc
6600 censtp inc c2ddrb
6605 cli
6610 rts
6615 coend jsr dathig
6620 jmp $ed44
6625 ;">>> Geaenderter SYS-Befehl
6630 newsys jsr chrgot
6635 beq getds
6640 jsr frmevl
6645 bit numflg
6650 bmi putcmd
6655 jsr getadr
6660 tax
6665 bne oldsys
6670 cpy #16
6675 bcs oldsys
6680 tya
6685 stx $14
6690 asl
6695 asl
6700 asl
6705 asl
6710 bne *+3
6715 brk
6720 sta $15
6725 oldsys jmp $e130
6730 getds jsr clrst
6735 jsr getdn
6740 jsr talk
6745 lda #$6f
6750 jsr sectlk
6755 ldy status
6760 bmi pcmerr
6765 gds1 jsr iecin
6770 jsr outscr
6775 cmp #13
6780 bne gds1
6785 jmp untalk
6790 putcmd jsr $e25a
6795 jsr $e1e6
6800 jsr clrst
6805 lda (fnadr),y
6810 cmp #"$"
6815 beq sysdir
6820 cmp #"l"
6825 bne *+5
6830 jmp syslst
6835 jsr getdn
6840 jsr lstn
6845 lda #$6f
6850 jsr seclsn
6855 bit status
6860 bmi pcmerr
6865 jmp iecopn+$21
6870 pcmerr lda #5 ;ill dev err
6875 jmp $e0f9
6880 sysdir sty sa
6885 jsr putdn
6890 jsr open
6895 lda dn
6900 jsr talk
6905 lda #$60
6910 jsr sectlk
6915 ldy #5
6920 .byt $2c
6925 sdi1 ldy #3
6930 sdi2 jsr iecinf
6935 bne sdiend
6940 dey
6945 bne sdi2
6950 tax
6955 jsr iecin
6960 jsr linprt
6965 lda #" "
6970 sdi3 jsr outscr
6975 jsr iecinf
6976 bne sdiend
6977 tax
6980 bne sdi3
6985 jsr outcr
6990 jsr tststp
6995 beq sdiend
7000 bne sdi1
7005 sdiend ldy #0
7010 sty numkey
7015 jmp ieccls
7020 ;
7025 putscr ldx #1
7030 stx $d4 ;"Quote-Mode =1
7035 stx $d8 ;"Inserts =1
7040 jmp outscr
7045 iecinf jsr iecin
7050 jmp fnftst
7055 ;
7060 ;">>> Alte Adress-Kopierung
7065 *=$fb8e
7070 lda $c2
7075 sta $ad
7080 lda $c1
7085 sta $ac
7090 rts
7095 ;
7100 ;">>> Geaendertes SAVE@
7105 newrpl ldy #0
7110 lda (fnadr),y
7115 cmp #"@"
7120 bne oldsav
7125 lda #"s"
7130 sta (fnadr),y
7135 lda $9d
7140 bpl nrnout
7145 ldy #scrtxt-$f0bd
7150 jsr $f12b
7155 ldy #1
7160 lda (fnadr),y
7165 cmp #":"
7170 bne *+3
7175 iny
7180 jsr $f5c7
7185 nrnout lda #$6f
7190 sta sa
7195 jsr open
7200 ldy #0
7205 lda #"@"
7210 sta (fnadr),y
7215 lda #$61
7220 sta sa
7225 clc
7230 nragai jsr incadr
7235 bcs oldsav
7240 cmp #":"
7245 beq nragai
7250 oldsav jmp open
7255 ;">>> FSD: UNTALK/UNLISTEN Ende
7260 unlend dec $12
7265 bne unlok
7270 jsr dathig
7275 jsr keyon
7280 unlok jmp dathig
7285 ;">>> FSD: Tastensperrung ein/aus
7290 keyoff lda fsdflg
7295 ora #32
7300 bne keyon+4
7305 allon lda fsdflg
7310 and #$ef
7315 .byt $2c
7320 keyon lda fsdflg
7325 and #$df
7330 sta fsdflg
7335 rts
7340 ;">>> Append-Routine
7345 append pha
7350 cmp #0
7355 bne normld
7360 lda sa
7365 cmp #5 ;"Append?
7370 bne normld
7375 lda #0
7380 sta sa
7385 lda vartab ;"BASIC-Ende -2
7390 ldy vartab+1
7395 sbc #2
7400 bcs *+3
7405 dey
7410 tax
7415 normld pla
7420 jmp $ffd5 ;"LOAD-Routine
7425 ;">>> SYS-List-Routine
7430 syslst jsr incadr
7435 pha
7440 jsr incadr
7445 pla
7450 cmp #"p"
7455 beq sysprg
7460 cmp #"s"
7465 beq sysseq
7470 jmp snerr
7475 sysseq clc
7477 lda #$6e ;"Kanal 14
7478 .byt $2c
7480 sysprg lda #$60 ;"LOAD-Kanal
7482 php
7490 sta sa
7495 jsr putdn
7500 jsr open
7505 lda dn
7510 jsr talk
7515 lda sa
7520 jsr sectlk
7525 plp
7530 bcs sysp1
7535 syss1 jsr iecinf
7540 bne syscls
7545 jsr putscr
7550 jsr tststp
7555 bne syss1
7560 syscls jmp ieccls
7565 sysp1 ldy #3
7570 .byt $2c
7575 sysp2 ldy #2
7580 sysp3 jsr iecinf
7585 bne sysret
7590 sta $49
7595 jsr iecinf
7600 bne sysret
7605 dey
7610 bne sysp3
7615 ldx $49
7620 jsr linprt
7625 ldy #>buf
7630 sty $60
7635 dey
7640 sty $49
7645 dey
7650 sty $0b ;"(Exbasic-Fehler)
7655 sty $0f
7660 sty $5f
7665 sty buf+1
7670 sysp4 jsr iecinf
7675 bne sysret
7680 iny
7685 beq sysret
7690 sta buf+1,y
7695 tax
7700 bne sysp4
7705 lda $0300
7710 sta $0100
7715 lda $0301
7720 sta $0101
7725 lda #<syspx
7730 ldy #>syspx
7735 sta $0300 ;"Rueckkehr sichern
7740 sty $0301
7745 lda $0303
7750 cmp #$81 ;"Exb LII?
7755 beq *+5
7760 jmp $a6ed ;"BASIC LIST
7765 jsr $9623 ;"Exbasic LII LIST
7770 syspx lda $0100
7775 sta $0300
7780 lda $0101
7785 sta $0301
7790 jsr outcr
7795 jsr tststp
7800 bne sysp2
7805 sysret jsr ieccls
7810 lda chrgot+2 ;=txtptr+1
7815 cmp #>(buf+$100)
7820 bcs $fcd0
7825 jsr $a82c ;"<STOP>?
7830 jmp $e386
7835 endprg =*-start+$801
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →