This page (revision-8) was last changed on 03-Feb-2023 15:21 by Carsten Strotmann 

This page was created on 27-Dec-2010 14:50 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
8 03-Feb-2023 15:21 67 KB Carsten Strotmann to previous
7 27-Dec-2010 15:18 57 KB Carsten Strotmann to previous | to last
6 27-Dec-2010 15:08 48 KB Carsten Strotmann to previous | to last
5 27-Dec-2010 15:06 48 KB Carsten Strotmann to previous | to last
4 27-Dec-2010 15:04 40 KB Carsten Strotmann to previous | to last
3 27-Dec-2010 14:59 30 KB Carsten Strotmann to previous | to last
2 27-Dec-2010 14:54 20 KB Carsten Strotmann to previous | to last
1 27-Dec-2010 14:50 11 KB Carsten Strotmann to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 100 changed one line
!!Das SPEEDY-System, Teil 2
!!Teil 2
At line 158 added 109 lines
!!Teil 3
von Erwin Reuß und Peter Bee
Wenn Sie schon Besitzer einer SPEEDY sind, werden Sie die Vorteile kennen, die Ihnen dieser Hardwarezusatz für Ihr Laufwerk bietet. Vielleicht wollen Sie jetzt etwas mehr über die Möglichkeiten der Programmierung der SPEEDY erfahren.
Und genau dafür haben wir diese Serie geschrieben. Sie sollen die Möglichkeit bekommen, die speziellen Fähigkeiten der SPEEDY für Ihre eigenen Programme zu nutzen. So können Sie zum Beispiel sehr leicht die SUPER-SPEED-Routine der SPEEDY in Ihre eigenen Programme einbauen, oder eine Diskette formatieren, ohne ein DOS benutzen zu müssen, oder Sie können sich selber ein Kopierprogramm schreiben, mit dem Sie Ihre Originaldisketten kopieren können.
Sie werden dazu in dieser Serie die genaue Dokumentation des Betriebssystems, sowie eine ausführliche Dokumentation der Einsprungadressen und natürlich einige Demoprogramme finden.
Wir wenden uns mit dieser Serie an die Programmierer, die wissen, wie sie einen Floppy-Controller vom Typ 2797 oder 2793 programmieren müssen. Es würde zu weit führen, die Programmierung dieses Floppy-Controllers in dieser Serie zu erklären. Wir möchten in diesem Zusammenhang auch auf die ausgezeichnete Dokumentation des Herstellers dieses Bausteins hinweisen, die Sie in jedem guten Zubehörhandel bekommen können.
Hier also noch einmal: Diese Serie ist nicht gedacht für den Anfänger in der Maschinensprach-Programmierung! Sie ist speziell geschrieben worden für den fortgeschrittenen Programmierer.
Wichtig für einen Programmierer ist auch der folgende Hinweis: Sie brauchen an uns keine Lizenzgebühr zu zahlen, wenn Sie Software für die Speedy schreiben oder Routinen aus der SPEEDY 1050 innerhalb Ihrer Software für die SPEEDY 1050 benutzen. Sie können also Ihre Programme kommerziell vermarkten. Wir möchten Sie nur bitten, uns eine Kopie Ihres Programms zukommen zu lassen.
Und nun viel Spaß bei der Programmierung Ihrer SPEEDY 1050.
!DER AUFBAU DER SPEEDY 1050 PLATINE
Es gibt drei verschiedene Versionen der SPEEDY 1050. Die erste Version ist die Grundausführung. Die zweite Version der SPEEDY 1050 ist eine erweiterte Ausführung mit Trackanzeige und einem akustischen Fehlermelder, dem Summer. Technisch, und auf die Laufwerksleistungen bezogen, sind beide Versionen identisch.
Als dritte Version ist noch die MINI-SPEEDY zu erwähnen. Diese Version ist natürlich voll Software-kompatibel zur normalen SPEEDY 1050. Die kleinere Platine läßt lediglich nicht zu, daß die Trackanzeige aufgebaut werden kann. Wenn wir also ganz allgemein von der SPEEDY reden, sind sowohl SPEEDY 1050 als auch Mini-SPEEDY gemeint.
!DER AUFBAU DER GRUNDVERSION
Die Grundversion besteht aus der Platine, einem 8k-RAM-IC, einem 8k-EPROM mit dem Betriebssystem, dem Mikroprozessor 65C02 oder 65SC02 und diversen Kodier-ICs.
!DER AUFBAU DER ERWEITERTEN VERSION
Zusätzlich zu den Bauteilen der Grundversion kommen bei den erweiterten Versionen der SPEEDY 1050 T Serie noch die Bauteile für den Summer und die Trackanzeige hinzu. Die Grundversion der SPEEDY 1050 läßt sich leicht durch einen entsprechenden Bausatz mit Trackanzeige und Summer nachrüsten. Nicht so die Mini-SPEEDY.
DIE FUNKTIONSWEISE DER SPEEDY
Ein normales ATARI 1050-Laufwerk besitzt einen RAM-Buffer von 256 Bytes Größe. Diesen RAM-Bereich müssen sich Datenspeicher und Mikroprozessor teilen. Da für einen Sektor ja bereits 128 Bytes gebraucht werden, hat der Mikroprozessor nicht mehr viel Platz zum arbeiten. Aus diesem Grund kann bei einem ATARI 1050-Laufwerk pro Umdrehung jeweils nur ein Sektor eingelesen und zum Computer gesendet werden. In einem Track liegen bei SINGLE DENSITY 18 Sektoren. Die Diskette rotiert mit ca. 5 Umdrehungen pro Sekunde (288 Umdrehungen/Minute).
Das ergibt für einen kompletten Track eine Ladezeit von ca. 3,6 Sekunden. Das ist die Zeit, die das ATARI 1050-Laufwerk benötigt, um einen kompletten Track einzulesen.
Die SPEEDY besitzt einen 8 kByte großen RAM-Speicher. Dieser arbeitet als Datenspooler. Pro Umdrehung der Diskette kann nun ein kompletter Track in den RAM-Buffer eingelesen werden. Das ergibt eine Ladezeit für einen Track von 0,2 Sekunden. Die Geschwindigkeit ist also um den Faktor 18 erhöht worden. Diese Geschwindigkeit ist die normale Arbeitsgeschwindigkeit eines SPEEDY Laufwerkes.
Durch die Zwischenspeicherung der Daten kann nun auch die Übertragungsgeschwindigkeit zum Computer erhöht werden. Durch diesen großen RAM-Buffer können nun auch mehr als 128 Bytes in einen Sektor geschrieben werden. Es wird also echte DOUBLE DENSITY (256 Bytes pro Sektor) möglich. Auch bei dieser Speicherdichte von nun 176 kByte auf einer Diskettenseite arbeitet das SPEEDY Laufwerk mit der hohen Geschwindigkeit.
Auf der SPEEDY Platine befindet sich neben dem RAM aber auch noch ein Mikroprozessor. Dieser Mikroprozessor ist der 65C02. Gegenüber dem 6507 einer normalen ATARI 1050 bietet der 65C02 zwei große Vorteile.
Erstens kann der 65C02 bis zu 64K adressieren (der 6507 nur 8 kBytes) und zweitens besitzt der 65C02 einen erweiterten Befehlssatz mit zusätzlichen, sehr nützlichen Befehlen. Aufgrund dieser zusätzlichen Befehle konnte das Betriebssystem der SPEEDY 1050 oder Mini-SPEEDY kurz gehalten werden, und die Geschwindigkeit der Programmausführung wird durch die geschickte Ausnutzung des erweiterten Befehlssatzes gesteigert.
!DIE DATENÜBERTRAGUNG ZUM COMPUTER
Bei einem normalen ATARI 1050 Laufwerk wird, wie wir schon erwähnt haben, pro Diskettenumdrehung ein einzelner Sektor eingelesen werden und dann sofort an den Computer weitergegeben.
Diese Methode ist sehr zeitraubend. Bei einem SPEEDY Laufwerk wird bei einer Diskettenumdrehung ein kompletter Track in den RAM-Buffer eingelesen. Dadurch hat der Computer jederzeit Zugriff auf alle Sektoren die sich in diesem Track befinden. Durch diese Zwischenspeicherung der Daten ist im Normalmodus eine Übertragung der Daten ohne Pause (bedingt durch die Ladezeit zwischen den Sektoren) möglich.
Das bedeutet, daß im Normalmodus die Lesegeschwindigkeit im Laufwerk mit maximaler Geschwindigkeit läuft, die Datenübertragung zum Computer aber mit normaler Geschwindigkeit geschieht. Aber aufgrund der weggefallenen Pausen verkürzt sich die Ladezeit um ca. 50%.
Beim Aktivieren der speziellen SPEEDY Geschwindigkeit, der SUPER-SPEED, wird die Datenübertragung vom Laufwerk zum Computer auf das Maximum gesetzt. Bei einem normalen ATARI 1050-Laufwerk geschieht die Datenübertragung zum Laufwerk mit 19.200 Baud. Beim Aktivieren der SUPER-SPEED erhöht sich diese Baudrate auf das 4 fache.
!PROGRAMMIEREN DER SPEEDY
Aufgrund der besonderen Fähigkeiten der SPEEDY haben Sie nun auch die Möglichkeit das Laufwerk individuell zu programmieren.
Die Möglichkeiten, die sich Ihnen damit eröffnen, sind fast unerschöpflich. So können Sie zum Beispiel Diskettenformate nach Ihrem eigenen Bedarf erstellen, einen eigenen Kopierschutz erzeugen oder einen fremden kopieren.
Auch die SUPER-SPEED können Sie sehr leicht für Ihre eigenen Programme nutzen, wie Sie anhand eines Demoprogrammes sehen werden.
!SPEICHERAUFTEILUNG SPEEDY
Nachfolgend finden Sie ein Blockschaltbild mit der genauen Speicherbelegung der SPEEDY.
{{{
$FFFF $03FF
ROM - 8 KBYTE UNBENUTZT
$E000 $0300
$DFFF $02FF
UNBENUTZT PORT (I/O + TIMER)
$A000 $0280
$9FFF $027F
RAM - 8 KBYTE UNBENUTZT
$8000 $0200
$7FFF $01FF
UNBENUTZT STACK
$0404 $0100
$0403 $00FF
CONTROLLER 2793/97 ZERO PAGE
$0400 $0000
}}}
!ERKLÄRUNG ZUR SPEICHERBELEGUNG
* $E000 - $FFFF - BETRIEBSSYSTEM - Hier liegt das Betriebssystem Ihrer SPEEDY 1050 oder Mini-SPEEDY. Änderungen können Sie hier nicht vornehmen.
* $8000 - $9FFF - ARBEITSSPEICHER - Der 8K-RAM-Block ist in 5 Bereiche unterteilt:
** $9F80 - $9FFF - Hier liegen Einsprung- und Rücksprungvektoren für die Bereitschaftsroutine des Betriebssystems. Außerdem können Sie hier Erweiterungen der RESET-Routine vornehmen.
** $9F00 - $9FFF - Die normale und erweiterte Kommandotabelle und die entsprechenden Einsprünge sind hier zu finden. Über das Kommando $41 können Sie diese Tabelle beliebig verändern. Diesen Befehl haben wir Ihnen bereits im SPEEDY-Handbuch erklärt, Sie werden ihn aber auch noch einmal etwas später in dieser Serie finden.
** $9E00 - $9EFF - Der EXTENDED BUFFER dient zur Zwischenspeicherung von Sektordaten bei FAST WRITE oder beim SLOW MODE diverser Laufwerksfunktionen.
** $8C00 - $9DFF - In diesem Bereich liegt der Trackbuffer. Hier werden bei FAST WRITE oder FAST READ erst alle Sektordaten eines Tracks zwischengespeichert. Schalten Sie die SPEEDY mit Hilfe der Menu- Diskette (Menupunkt SLOW-MODE-CONTROL) für READ SECTOR und WRITE SECTOR in den SLOW MODUS, wird dieser Speicherbereich nicht mehr vom Betriebssystem benutzt. So können Sie auch hier eigene Routinen ablegen.
** $8000 - $8BFF - Freier Speicherbereich, der dem Programmierer zur Verfügung steht, also wo Sie Ihre eigenen Programme ablegen können!
*$0400 - $0403 - Hier liegen die Register des Disk-Controllers 2793/97:
** $0400: Lesen = Statusregister, Schreiben = Commandregister
** $0401: Lesen + Schreiben = Trackregister
** $0402: Lesen + Schreiben = Sektorregister
** $0403: Lesen + Schreiben = Datenregister
* $0280 - $02FF - Hier befinden sich die Register des Port ICs 6532 (RIOT). Die gebräuchlichsten Register:
** $0280: Port A Datenregister
** $0281: Port A Richtungsregister
** $0282: Port B Datenregister
** $0283: Port B Richtungsregister
** $0296: Timer lesen/schreiben, Timer IRQ abschalten
** $029F: Timer mit Teilerverhältnis 1:1K lesen/schreiben, Timer IRQ einschalten
* $0000 - $00FF - Die Zeropage - Die Zeropage und die Page 1 überlagern sich. Das heißt, Speicherstelle $0000 entspricht der Speicherstelle $0100, Speicherstelle $0001 entspricht der Speicherstelle $0101 usw. In der Zeropage stehen dem Benutzer die Speicherstellen $0090 bis $00CF zur freien Verfügung.
Soweit der erste Teil der Beschreibung des SPEEDY Betriebssystems. Nächsten Monat beginnen wir mit den Einsprungadressen.