[b]Befehls Syntax[/b] Die Befehle können direkt im Terminal Programm eingegeben werden und werden direkt vom Controller ausgeführt. Dadurch ist man komplett unabhängig von der Hardware. Das funktioniert auf jedem PC, unter Windows, Linux oder Apple OS, es muß nicht mal ein PC sein. Optional kann natürlich auch ein Programm am PC erstellt werden, mit dem man komfortabel auf den XS1541 Adapter zugreifen kann. Dazu kann man jede beliebige Programmiersprache benutzen, die auf den seriellen Port zugreifen kann. Einige Befehle kontrollieren direkt das Protokoll oder sogar die Portleitungen. Diese "low level" Befehle sind zum Test des Adapter bzw. für PC Programme gedacht. Jeder Befehl hat einen [b]Mussteil[/b] und einen [b]Kannteil[/b]. Der Kannteil kann ganz oder teilweise weggelassen werden. Der Kannteil steht in rechteckigen Klammern. Manche Befehle haben mehrere Kürzel. [b]h[elp][/b] Listet alle Befehle die in der Firmware des Controller implementiert sind. Es kann 'h', 'he', 'hel' oder 'help' eingegeben werden. [b]co[nfig][/b] obj [par1] [par2] ... Dient zur Konfiguration der Grundeinstellungen. Als kommen folgend Schlüsselworte zum tragen: [b]config LED[/b] p1# [p2#] Der Parameter LED steuert die Funktion der Board LED. Wird EIN numerischer Parameter angegeben, dann wird die Gundfunktion eingestellt: 0=LED aus, 1=LED ein, 2=auto Werden zwei numerische Parameter angegeben kann man das Pulse/Pausen Verhältnis des Blinken der LED einstellen. Die Parameter geben hundertstel Sekunden an. Beispiele config led 1 LED einschalten. co led 0 LED ausschalten. co led 2 LED blinkt. Im IEEE Modus blinkt die LED gleichmäßig (30/30). Im IEC Modus ist die LED nur kurz hell (10/90). co led 20 80 LED blinkt. Die erste Zahl ist die Zeit in hundertstel Sekunden für die Hellphase. Die zweite Zahl ist die Zeit für die Dunkelphase. [b]config ECHO[/b] p1# Der Parameter ECHO steuert die Echo Funktion der Eingabeschleife. Ein numerischer Parameter 0 schaltet das Echo aus. Alle anderen Zahlen schalten das Echo ein, dann werden alle eingegebenen Zeichen zum Terminal zurück gesendet [b]iee[e][/b] Der aktive Bus wird zum parallelen IEEE-488 Bus geschalten. Alle Nachfolgenden Befehle (außer IEC) beziehen sich nun auf den IEEE-488 Bus. Dieser Modus ist die Standard Einstellung nach einem Controller Reset. [b]iec[/b] Der aktive Bus wird zum seriellen IEC Bus geschalten. Alle Nachfolgenden Befehle (außer IEEE) beziehen sich nun auf den IEC Bus. [b]dev[ice][/b] oder [b]#[/b] [d#] [floppy-typ] Damit wird die aktive Gerätenummer und der Floppy Typ des aktiven Bus festgelegt oder abgefragt. Dem Befehl folgt ein numerischer Parameter (Gerätenummer 8 - 12) und/oder ein Floppytyp. Der Befehl alleine ohne Parameter listet die aktuelle Einstellung. Für beide Bus Systeme ist die voreingestellte Adresse nach einem Reset 8. Beispiele: #9 setzt die Gerätenummer 9. #1571 setzt den Floppytyp 1571. #10 1581 setzt die Gerätenummer 10 und den Floppytyp 1581. [b]@[/b] Dieser Befehl sendet einen Befehl an die aktive Floppy (Befehlskanal 15) oder fragt den Fehlerkanal / Status ab wenn der Befehl alleine (ohne Parameter) gesendet wird. Beispiele: @ fragt den Fehlerkanal ab und zeigt den Floppystatus an @I1 sendet den befehl I (inquire) and die Floppy (Laufwerk 1) @N:TESTDISK,I2 formatiert die Diskette im Laufwerk, setzt den Namen "TESTDISK" und die ID "I2". [b]res[et][/b] Wenn auf IEC gestellt ist, werden alle IEC Floppy zurückgesetzt indem die Reset Leitung für 250ms auf low gesetzt wird. Wenn auf IEEE gestellt ist, wird der Bus zurückgesetzt indem ein IFC gesendet wird. [b]loadm[c][/b] oder [b]lm[c][/b] par1 [par2] ... [parn] Lädt einen Maschinencode in den Floppy RAM. Als Parameter 1 kann ein Programmname oder eine Programm Startadresse eingegeben werden. Wird eine Startadresse angegeben folgen bis zu 32 Byte Werte die direkt per M-W Befehl in das Floppyram geschrieben werden. Vielen Dank an das [b]OpenCBM Team[/b] für den Democode Flash und Morse, es macht Spass diesen Code in die Floppy zu laden und damit rumzuspielen. Beispiele: lmc flash @U3 Lädt den OpenCBM Demo Code "Flash" in die Floppy und führt in aus. Die LED in der Floppy 1541 oder 1571 beginnt rythmisch zu blinken, dabei wird die Helligkeit der LED sanft per PWM geregelt. lmc morse @U3:SOS Lädt den OpenCBM Demo Code "Morse" in die Floppy und führt in aus. Die LED in der Floppy morst den Text "SOS" ... lmc $500 1 2 3 Beschreibt die Speicherzellen in der Floppy an der Adresse 0x500, 0x501 und 0x502 mit den Werten 1, 2 und 3. [b]dir[ectory][/b] oder [b]ca[talog][/b] oder [b]$[/b] Listet das Verzeichnis der eingelegten Diskette. Als Parameter kann optional ein String mitgegeben werden. Das Format entspricht dem des Floppy DOS (load "$....",8). Bei Doppelfloppy sollte man als Parameter zumindest das Laufwerk (0 oder 1) mitgeben, sonst wird das Verzeichnis beider Laufwerke ausgegeben, was zu einem Fehler führt wenn nicht beide Laufwerke formatierte Disketten eingelegt haben. Beispiele: $0 listet das Directory der Diskette im Laufwerk 0. $1:A* listet alle Dateien der Diskette im Laufwerk 1 die mit "A" beginnen. [b]filec[opy][/b] oder [b]fc[/b] *** noch nicht implementiert Kopiert Dateien von Floppy zu Floppy. IEC zu IEEE oder umgekehrt ist möglich, aber auch von einem Gerät zum anderen am selben Bus. [b]listb[am][/b] oder [b]lb[/b] [all|bam] [slow|burst|parallel|s1|s2|warp] [drive] [imagetyp] Liest die BAM der Diskette und zeigt die Mappe der belegten und freien Blöcke an. Wichtig ist hier dass der Laufwerkstyp [b]bac[kup][/b] oder [b]bu[/b] [all|bam] [slow|burst|parallel|s1|s2|warp] [drive] [imagetyp] Damit kopiert man eine ganze Diskette zum PC. Es wird eine Image Datei erstellt von einer Diskette (.d64, .d72, .d80, .d81, .d82). Die Image Datei wird per Y-Modem Protokoll direkt auf die Festplatte des PC gespeichert. Als Laufwerk kann "D0" oder "D1" angegeben werden. Man wählt ob alle Blöcke kopiert werden sollen [all] oder nur die Belegten [bam]. Für jedes Laufwerk gibt es eine Standard Einstellung für den Busverkehr, man kann aber ein bestimmtes Protokoll erzwingen [burst, parallel]. Natürlich nur wenn die Floppy das auch unterstützt. Beispiel: bu D0 d64 all burst Kopiert eine Diskette im Laufwerk 0. Der Imagetyp ist D64. Es werden alle Blöcke gelesen. Die Übertragung der Daten erfolgt im schnellen burst Modus. bu Erstellt ein Image der Diskette im Laufwerk 0. Gelesen werden nur belegte Blöcke. Der Imagetyp ist der Standardwert für das eingestellte Laufwerk (d64 bei 1541, d71 bei 1571, d81 bei 1581, d80 bei 8050, d82 bei 8250 und SFD1001). [b]res[tore][/b] *** noch nicht implementiert Schreibt eine Image Datei auf eine Diskette zurück (d64, d72, d80, d81, d82). Die Image Datei wird per Y-Modem Protokoll vom PC zum Adapter übertragen. [b]dumpf[ile][/b] oder [b]df[/b] [filenam] [drive] [slow|burst|parallel|s1|s2|warp] Erstellt einen Hexdump von der angegebenen Datei. Als Laufwerk kann "D0" oder "D1" angegeben werden. Für jedes Laufwerk gibt es eine Standard Einstellung für den Busverkehr, man kann aber ein bestimmtes Protokoll erzwingen [burst, parallel]. Natürlich nur wenn die Floppy das auch unterstützt. Beispiele: df "DATEI1" D1 erstellt einen HEX Dump der Datei "DATEI1" am Laufwerk 1. [b]dumpb[lock][/b] oder [b]db[/b] track# sector# [anz#] [drive] [slow|burst|parallel|s1|s2|warp] Erstellt einen Dump von einem oder mehereren Blöcken einer Diskette. Als Laufwerk kann "D0" oder "D1" angegeben werden. Für jedes Laufwerk gibt es eine Standard Einstellung für den Busverkehr, man kann aber ein bestimmtes Protokoll erzwingen [burst, parallel]. Natürlich nur wenn die Floppy das auch unterstützt. Beispiele: db 18 0 Liest den Block auf Spur 18 Sektor 0 und zeigt die Daten als Hex Dump an. db 18 3 3 par Liest die Blöcke auf Spur 18 Sektor 3, 4, und 5 und zeigt die Daten als Hex Dump an. Gelesen werden die Daten über das parallele SpeedDos Kabel (PARALLEL WIRD ERST IMPLEMENTIERT). [b]dumpn[ext][/b] oder [b]dn[/b] [slow|burst|parallel|s1|s2|warp] Der Befehl liest den Folgeblock ein und zeigt die Daten an. Der Befehl funktioniert nur nach einem Dumpblock Befehl, natürlich auch mehrfach bis die Blockfolge zu Ende ist. Wird der Befehl Dumpblock ausgeführt merkt sich die Firmware den Folgeblock. Die ersten beiden Bytes eines Blocks verweisen in der Regel auf den nächsten (Spur/Sektor). Beispiele: db 18 1 dn dn dn [b]dumpt[rack][/b] oder [b]dt[/b] track# [interleave#] [drive] [slow|burst|parallel|s1|s2|warp] Erstellt einen Dump von einer ganzen Spur einer Diskette. Man kann einen Soft Interleave erzwingen, es gibt aber Standard EInstellungen pro Floppytyp/Bustyp. Als Laufwerk kann "D0" oder "D1" angegeben werden. Für jedes Laufwerk gibt es eine Standard Einstellung für den Busverkehr, man kann aber ein bestimmtes Protokoll erzwingen [burst, parallel]. Natürlich nur wenn die Floppy das auch unterstützt. (DIESER BEFEHL WIRD GERADE IMPLEMENTIERT) Beispiele: dt 18 Liest alle Sektoren der Spur 18 Sektor 0 und zeigt die Daten als Hex Dump an. dt 18 3 par Liest die Spur 18 mit interleave 3 im parallelen Bus Modus. Weil der Mega 644 nur 4 KB RAM hat sind nur 13 Buffer vorhanden. Deshalb ist nicht jeder Interleave Blockaufsteigend zu machen. Wenn die Buffer ausgehen dann werden die Blöcke in der falschen Reihenfolge gesendet (die Blöcke kommen nicht mehr in strickt aufsteigender Reihe nach). [b]dumpm[em][/b] oder [b]dm[/b] Erstellt einen Dump vom Floppyspeicher. Als Laufwerk kann "D0" oder "D1" angegeben werden. Für jedes Laufwerk gibt es eine Standard Einstellung für den Busverkehr, man kann aber ein bestimmtes Protokoll erzwingen [burst, parallel]. Natürlich nur wenn die Floppy das auch unterstützt. Beispiel: dm $a000 200 Erstellt einen HEX Dump des Floppy Speicher ab Adresse 0xa000 (40960) mit der Länge von 200 Bytes. [b]dow[nload][/b], [b]load[/b] oder [b]dl[/b] [filenam] [drive] [filetyp] [slow|burst|parallel|s1|s2|warp] Erstellt einen Hexdump von der angegebenen Datei. Als Laufwerk kann "D0" oder "D1" angegeben werden. Die Datei wird per Y-Modem Protokoll zum PC übertragen und direkt auf die Festplatte gespeichert. Als Dateityp kann man PRG, T64 oder P00 angeben. Für jedes Laufwerk gibt es eine Standard Einstellung für den Busverkehr, man kann aber ein bestimmtes Protokoll erzwingen [burst, parallel]. Natürlich nur wenn die Floppy das auch unterstützt. Beispiele: dl "DATEI2" D0 P00 burst Lädt die Datei "DATEI2" am Laufwerk 0 im P00 Format zum PC. Es wird der schnelle Burst Mode erzwungen. [b]upl[oad][/b], [b]sa[ve][/b] oder [b]ul[/b] [filenam] [drive] [filetyp] [slow|burst|parallel|s1|s2|warp] *** noch nicht implementiert Schreibt eine Datei auf eine Diskette zurück (PRG, P00, T64). Die Datei wird per X-Modem Protokoll vom PC zum Adapter übertragen. [b]listf[iletypes][/b] oder [b]lft[/b] Zeigt alle Dateitypen an (Image Dateien und Programmdateien.) [b]PROTOKOLL BEFEHLE[/b] Ein Assembler Programmiererwird sich mit folgenden Befehlen gleich zuhause fühlen. Die Befehle spiegeln das IEEE-488 / IEC Protokoll von Commodore wieder. Die Namen sind angelehnt an das Commodore Kernel API. [b]li[sten][/b] Gerät zum 'Listener' erklären. [b]ta[lk][/b] Gerät zum 'Talker' erklären. [b]unl[isten][/b] Listen Modus beenden. [b]unt[alk][/b] Talk Modus beenden. [b]op[en][/b] Datei öffnen. [b]cl[ose][/b] Datei schliessen. [b]ba[sin][/b] Ein oder mehrere Bytes vom Bus lesen (vom Talker). [b]bs[out][/b] Ein oder mehrere Bytes zum Bus schreiben (zum Listener). [b]st[/b] Die alt bekannte Status Variable ST. Nach Bus Operationen werden u.U. Bits in der Variable gesetzt. Durch das Lesen des Status mit diesem Befehl wird die Variable ST auf 0 zurückgesetzt. Bit0=Timeout beim Lesen, Bit1=Timeout beim Schreiben, Bit6=EOI: letztes Byte wurde gesendet, Bit7="device not present error". [b]LOW LEVEL BEFEHLE[/b] [b]set[pin][/b] oder [b]sp[/b] Der Befehl setzt einen Ausgang auf den Pegel high. Als Parameter muß ein gültiger Pin angegeben werden. Für den IEEE-488 Bus sind folgende Namen erlaubt: a[tn], d[av], e[oi], nr[fd], nd[ac]. [b]resetp[in][/b] oder [b]rp[/b] Der Befehl setzt einen Ausgang auf den Pegel low. Als Parameter muß ein gültiger Pin angegeben werden. Für den IEEE-488 Bus sind folgende Namen erlaubt: a[tn], d[av], e[oi], nr[fd], nd[ac]. [b]listp[in][/b] oder [b]lp[/b] Der Befehl listet den Zustand des aktiven Bus. Der momentane Zustand aller Signalleitungen wird angezeigt. Signalleitungen die den Pegel "high" haben werden mit Großbuchstaben und die mit dem Pegel low durch Kleinbuchstaben dargestellt.[/quote]