8-Bit-Nirvana Startseite  
?IDIOT IN FRONT OF COMPUTER ERROR IN 8370
[ Home | Index | Werbung | Forum | Flohmarkt | Gästebuch | Links | Info ]

8-Bit-Forum

"Re: Zusammenfassung" von Max
(1.2.2008, 21:08)

(Dieser Artikel wurde 2806 mal aufgerufen)

Bezugsnachricht: Zusammenfassung (James)

[ Antwort schreiben | Übersicht | Thema ]

James schrieb am 1.2.2008, 17:08:

> LOAD "xyz",8 geht

Klasse! Allein das ist es IMHO wert, das Projekt zu veröffentlichen...

> DLOAD "xyz" sendet "0:xyz" an Adresse 8 und geht auch
> mit DLOAD kann man somit anscheinend nur auf Laufwerk 0, adresse 8 zugreifen. oder?

Doch: DLOAD "name", U9, D1
Komplifiziert wird die Sache erst, wenn Du Variablen verwenden willst- das ist aber dann ein Problem des BASIC V4, nicht des IEC-Bus ;-)

Siehe auch http://www.cbmmanuals1.de

[...]
> DIRECTORY sendet "$" an Adresse 8 und soll dann das Directory gleich anzeigen. Allerdings
> erwartet dieser Befehl anscheinend, dass die Daten irgendwie anders formatiert sind und somit
> funktioniert das noch nicht.

Hmmm... eigentlich nicht, siehe unten... eigentlich sollte DIRECTORY sich zum IEC-Bus hin genau wie ein LOAD "$",8 verhalten (zuzüglich eventueller Paramezter, siehe Manual)

Stutzig macht mich vor allem, daß Du einen Device Not Present Error bekommst. Den hagelt es bei Problemen mit dem Handshake- noch bevor er der Floppy den Dateinamen übergeben hat, geschweige denn daß die mit irgendwas geantwortet hätte. Du weißt, daß auch die parallelen Peripheriegeräte eine automatische Answer-to-ATN-Schaltung haben, die auch bei beschäftigter Floppy ein device-not-present verhindert? Dein uC müßte also einen schnell reagiernden Interrupt bereitstellen- sollte heutzutage kein Problem mehr sein, man muß aber dran denken.

Schmöker Dich mal durch Folgendes:

http://www.trikaliotis.net/Book das Buch zur 1571. Besonders Kapitel 5.4 ;-) (geht zwar nicht auf den parallelen IEC-Bus ein, liefert aber ganz gut die Grundlagen)

Immer nocoh serieller IEC-Bus, aber die einzelnen Sachverhalte des Protokolls sind dieselben, Du wirst sie nur auf anderen Leitungen finden... zudem ist es das knappste, und eigentlich auch das einzige Dokument, das sich dieser aller-untersten Ebene des Protokolls widmet. In den ROM-Listings zu Floppys und Computern steckt zwar auch einiges, aber gut verteilt und oft eher mäßig kommentiert.
http://server.zimmers.net/[...]/serial-bus.txt

Ans Eingemachte gehts dann hier:
http://baltissen.org/htm/cbmhd.htm
http://baltissen.org/htm/ieee.htm
http://www.6502.org/[...]/index.html

Die cbm-hackers hatte ich ja schon erwähnt; aktuell widmet sich jemand in einer Forschungsstation am Südpol dem selben Problem:
http://www.softwolves.pp.se/[...]/12810.html

(Ruud hatte dort ium Lauf der Jahre immer wieder mal über sein Projekt diskutiert, teils auch unter dem Namen XIEEE... leider find ich auf die Schnelle nicht den Beitrag, wo es genau um das Problem geht, daß CBM sich ein paar heftoge Freiheiten beim parallelen IEC-Bus geleistet hat...)

Hilfreich der VICE-Emulator, einerseits zum Ausprobieren und vergleichen, andererseits dürfte im Quellcode schon ziemlich viel von dem stehen, was Du brauchst. Ist natürlich eine steile Lernkurve:
http://www.viceteam.org

> Es werden bis jetzt nur PRG-Dateien übertragen. Byte 0 und 1 sind die Startadresse, wohin das
> Programm im Computer geladen wird.

Jupp.

> Für was stehen Byte 2 und 3?

Normalerweise ist das die Adresse der nächsten BASIC-Zeile; die Floppy leistet sich beim Directory-Listing den Luxus hier ein Dummy-$0101 einzusetzen. Dem LIST-Befehl macht das nix; die Verkettung wird nur von Sprungbefehlen verwendet. Auf den neuen Maschinen (die Heimcomputer ab VC 20) wird die Verkettung nach dem LOAD sogar neu berechnet, das tun die PET und CBM nicht. Hier könnte also ein GOTO bei geladenem Directory fatal sein ;o) aber das wollen wir ja eh nicht machen.

> Der Rest ist dann das
> BASIC-Programm.

Ja, nein, halt moment! Byte 2 und 3 sind bereits Teil der ersten Programmzeile. Dann kommt ein Wort (wieder Lowbyte, Highbyte) der Zeilennummer- von der Floppy als Drivenummer in der Titelzeile und Zahl der Blöcke in den weiteren Zeilen benutzt. Danach kommen 25 Bytes Text, ein Nullbyte, und dann geht es mit dem Dummy-$0101 der nächsten Zeile weiter. Nur nach der letzten Zeile des Listings steht stattdessen ein $0000 (also insgesamt drei Nullbytes hintereinander) die dem LIST das Programmende signalisieren.

Aufbau der einzelnen Programm-Zeilen: Jede ist genau 25 Zeichen lang.

Titel: $12 (für Invers), der Diskettenname (max 16 Zeichen) in Anführungszeichen, ein bis x Leerzeichen sowie ganz am ENde der 25 Zeichen die Zeichenkette "ID 2A". Wobei ID zwei beim Formatieren frei wählbare Zeichen sind und 2A DOS-Version und Diskettenformat bezeichnen. "2A" ist die Kennung der 1541, die sich IIRC auch auf der 4040 findet. Keine Ahnung ob sich irgendein Programm wirklich dafür interessiert...

Programmzeile: ein bis drei Leerzeichen (je nachdem ob die Zahl der Blöcke drei-, zwei- oder einstellig ist- die Dateinamen sollen halt am Bildscirm sauber untereinander stehen) gefolgt vom Dateinamen in Anführungszeichen. Danach wieder variable Leerzeichen und "yxxx " (zwei Leerzeichem) am Ende der 25 Zeichen. y ist der Dateistatus (Leerzeichen für normal, Sternchen für nicht ordentlich geschlossen, Größer-Zeichen für schreibgeschützt... oder wars umgekehrt?) und xxx die Dateiart: PRG für Programm, SEQ für sequentielles File, USR für User-File (eine Variante von sequentiellen Dateien, solange man nicht unter GEOS arbeitet) und dann gibts noch REL für relative Dateien. Die möchte man nicht unterstützen, wenn man das Projekt in endlicher Zeit fertigstellen will...

Fußzeile: Der Text BLOCKS FREE." mit Leerzeichen auf 25 Bytes aufgefüllt.

Kurzes Beispieldirectory hier: http://mitglied.lycos.de/[...]/dir.gif

> Jetzt muss ich noch herausfinden wie SEQ-Dateien funktionieren

Im Prinzip genau wie LOAD und SAVE. Nur hast Du Sekundäradressen von 2 bis 14 (anstatt 0 für LOAD und 1 für SAVE) und am Dateinamen hängt noch der Dateityp und die Zugriffsart dran. Ein Anhängsel ,r steht für lesen, ,w für schreiben, ,s für sequentielle Datei, ,p für Ürogrammdatei und ,u für Userdatei. Gibt noch paar mehr, aber das sind die wichtigsten. Beispiel: Programmdatei zum schreiben öffnen: OPEN 2,8,2,"name,p,w" (Achtung: Die Reihenfolge von Typ und Modus it nicht festgelegt- es kann also genausogut name,w,p da stehen oder auch die Langform name,program,write!)

Fehlen die Angaben, gelten folgende Standards:

Sekundäradresse 0: ,p,r (program read- ergo: LOAD!)
Sekundäradresse 1: ,p,w (program write- ergo: SAVE!)
Sekundäradresse >=2: ,s,r (sequentielle Datei schreiben oder gar User-Datei bearbeiten muß man also immer explizit angeben!)

Sonderregel wenn der Dateiname mit einem Dollarzeichen beginnt:

Sekundäradresse 0: Directory in Programmlisting umwandeln
Sekundäradresse größer null: Directory ab Sektor 18:0 in Rohdaten ausgeben. Solange Du nur Dateien unterstützt und keine Diskimages brauchst Du das nicht.

BTW: DLOAD "$" funzt deswegen nicht, weil es immer Dateinamen der Form "0:$" lädt. Das ist die richtoge Angabe der Laufwerksnummer für Dateien, aber für das Directory nicht zulässig; da lautet es "$0:"

> und wie das mit GET und INPUT hinhaut, bzw. wie den Geräten am
> IEEE488-Bus signalisiert wird, ob sie nur 1 Byte oder
> nen ganzen String übertragen sollen.

Ganz einfach: Der Computer holt eh immer nur ein Byte zur Zeit ab. Ist der GET- oder INPUT-Befehl zuende, sendet er ein UNTALK (oder bei PRINT# ein UNLISTEN) und schickt beim nächsten Befehl ein neues Pärchen aus Geräteadresse und (Sekundäradresse .or. TALK respektive LISTEN).


So...


...und wenn Du damit fertig bist, nehmen wir den Fehlerkanal durch ;-)

CONT 2:
  • Zusammenfassung (James / 1.2.2008, 17:08)
    • Re: Zusammenfassung (Max / 1.2.2008, 21:08)
CONT 1:
Lesezeichen für diesen Beitrag: del.icio.us del.icio.us Bei Mister Wong speichern Mister Wong Seite bei LinkARENA speichern LinkARENA Digg it Digg Slashdot it Slashdot StumbleUpon StumbleUpon


Antwort schreiben

Hier kannst Du auf die angezeigte Nachricht antworten. Beachte bitte die folgenden Punkte:
  • Dieses Forum befasst sich ausschließlich mit 8-Bit-Computern und Videospielen, Artikel zu anderen Themen sind off-topic und unerwünscht (für Computer mit mehr als 8 Bit gibt es hier aber auch ein eigenes Forum). Wenn der Vorschreiber schon vom Thema abweicht und Du unbedingt antworten möchtest, dann schreibe ihm lieber per e-mail.
  • Schreibe bitte so, dass sich niemand beleidigt oder angegriffen fühlt, auch wenn der Vorschreiber sich bereits im Ton vergriffen haben sollte. Solche Sachen löst man eh besser privat per e-mail.
  • Im Eingabefeld wird der komplette Text zitiert. Kürze die Zitate bitte so weit wie möglich, damit unnötiger Ballast vermieden wird. Hinweise zu richtigem und falschem Quoting findest Du hier: learn.to/quote.
Name:
E-mail:
Betreff:
Antwort:
Klicke bitte das Feld links an, falls Du Antworten auf diese Nachricht auch per E-mail bekommen möchtest.


       

Achtung: "SPAMFALLE" heißt nicht ohne Grund so, keinesfalls benutzen!



Mozilla Sidebar Opera Sidebar RSS 0.91 Newsfeed RSS 2.0 Newsfeed Add to Google Add to MyYahoo Spam Poison
Mozilla Sidebar Opera Sidebar RSS 0.91 Feed RSS 2.0 Feed Add to Google My Yahoo! Spam Poison

[ Index | Werbung | Forum | Flohmarkt | Gästebuch | Links | Info | Impressum/Datenschutz | News | Credits | Webmasters | Seitenanfang ]