Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
homecomputer:ac1:kassetteninterface [2023/01/26 08:08] – [AC1-Standard] volkerp | homecomputer:ac1:kassetteninterface [2024/12/05 12:49] (aktuell) – [USB .Z80-Dateien] volkerp | ||
---|---|---|---|
Zeile 12: | Zeile 12: | ||
Das Prinzip entspricht dem in [12] | Das Prinzip entspricht dem in [12] | ||
vorgestellten Kassetteninterface. Die dort angegebene Interfaceschaltung wurde | vorgestellten Kassetteninterface. Die dort angegebene Interfaceschaltung wurde | ||
- | dem Grundmodul des " | + | dem Grundmodul des " |
Aufzeichnungsformat entspricht etwa den in [10] verwendeten. | Aufzeichnungsformat entspricht etwa den in [10] verwendeten. | ||
+ | |||
+ | Achtung: Das Kassettenaufzeichnungsformat des AC1 enthält nicht nur Speicherbereiche. Vielmehr ist es ein Containerformat mit verschiedenen Abschnitten (so gibt es z.B. auch Ladebilder). BASIC-Programme zum großen Basic V1.1 müssen als Audio-Datei geladen werden, ein Laden eines binären Dumps ist nicht direkt möglich. | ||
Aufbau: | Aufbau: | ||
Zeile 28: | Zeile 30: | ||
Datei: | Datei: | ||
- | <ditaa noedgesep> | + | <a2s> |
- | +--------+----+--------+--------+---------+---------+---------+ | + | #--------#----#--------#--------#---------#---------#---------# |
| vorton | E6 | U Name | vorton | < Block | < Block | < Block | ... | < Block | x sadr | | | vorton | E6 | U Name | vorton | < Block | < Block | < Block | ... | < Block | x sadr | | ||
- | +--------+----+--------+--------+---------+---------+---------+ | + | #--------#----#--------#--------#---------#---------#---------# |
- | </ditaa> | + | </a2s> |
Daten-Block '<': | Daten-Block '<': | ||
Zeile 39: | Zeile 41: | ||
hat nur der letzte Block < 256 Bytes | hat nur der letzte Block < 256 Bytes | ||
- | <ditaa noedgesep> | + | <a2s> |
- | +---+------+--------+-----+--------+------+ | + | #---#------#--------#-----#---------#-----# |
| < | len | byte 0 | ... | byte255 | cks | | | < | len | byte 0 | ... | byte255 | cks | | ||
- | +---+------+--------+-----+--------+------+ | + | #---#------#--------#-----#---------#-----# |
- | </ditaa> | + | </a2s> |
Beispielprogramm CLIST@ von der Musterkassette. Der Datenstrom besteht aus 4 Blöcken (Name + 256x00, 256 Datenbytes, 224 Datenbytes, Startadresse). Das ist Dump des Bytestreams, | Beispielprogramm CLIST@ von der Musterkassette. Der Datenstrom besteht aus 4 Blöcken (Name + 256x00, 256 Datenbytes, 224 Datenbytes, Startadresse). Das ist Dump des Bytestreams, | ||
Zeile 49: | Zeile 51: | ||
{{: | {{: | ||
- | :!: Das 8K-Basic verwendet einen eigenen Dateiaufbau !!! | + | :!: Das **8K-Basic |
- 512 x 00-Byte Vorton | - 512 x 00-Byte Vorton | ||
Zeile 58: | Zeile 60: | ||
- xxx Bytes | - xxx Bytes | ||
- | <ditaa noedgesep> | + | <a2s> |
- | +--------+----+------+----+--------+----------+ | + | #--------#----#------#----#--------#----------# |
| vorton | E6 | Name | D3 | laenge | Programm | | | vorton | E6 | Name | D3 | laenge | Programm | | ||
- | +--------+----+------+----+--------+----------+ | + | #--------#----#------#----#--------#----------# |
- | </ditaa> | + | </a2s> |
Beispielprogramm LOCATO von der Musterkassette, | Beispielprogramm LOCATO von der Musterkassette, | ||
{{: | {{: | ||
+ | |||
+ | **Beschreibung aus dem FA:** | ||
Die Aufzeichnungsgeschwindigkeit beträgt 1500 bit/s. Das bedeutet, daß bei einer | Die Aufzeichnungsgeschwindigkeit beträgt 1500 bit/s. Das bedeutet, daß bei einer | ||
Zeile 181: | Zeile 186: | ||
Datei: | Datei: | ||
- | <ditaa noedgesep> | + | <a2s> |
- | +--------+--------+--------+-------+-------+-------+ | + | #--------#--------#--------#-------#-------#-------# |
| vorton | Header | vorton | Block | Block | Block | ... | Block | | | vorton | Header | vorton | Block | Block | Block | ... | Block | | ||
- | +--------+--------+--------+-------+-------+-------+ | + | #--------#--------#--------#-------#-------#-------# |
- | </ditaa> | + | </a2s> |
Block: | Block: | ||
- | <ditaa noedgesep> | + | <a2s> |
- | +------+-------+-----+--------+-----+ | + | #------#-------#-----#--------#-----# |
- | | 0000 | word0 | ... | word15 | cks | | + | | 0000 | word0 | ... | word15 | cks | |
- | +------+-------+-----+--------+-----+ | + | #------#-------#-----#--------#-----# |
- | </ditaa> | + | </a2s> |
Kopfblock: | Kopfblock: | ||
Zeile 200: | Zeile 205: | ||
Eine Startadresse gibt es nicht! | Eine Startadresse gibt es nicht! | ||
- | <ditaa noedgesep> | + | <a2s> |
- | +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | + | #----#----#----#----#----#----#----#----#----#----#----#----#----#----#----#----# |
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | | | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | | ||
- | |' | + | |' |
- | +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | + | #----#----#----#----#----#----#----#----#----#----#----#----#----#----#----#----# |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1F | | | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1F | | ||
| .. aufgefüllt (16 Zeichen) | | .. aufgefüllt (16 Zeichen) | ||
- | +-------------------------------------------------------------------------------+ | + | #-------------------------------------------------------------------------------# |
- | </ditaa> | + | </a2s> |
Aufbau des Kopfblocks: | Aufbau des Kopfblocks: | ||
Zeile 231: | Zeile 236: | ||
Im Kopfblock gibt es keine Startadresse. Nach dem Laden überprüft der Computer aber das Programm auf eine **Autostart-Sequenz**. Ist diese vorhanden, erfolgt der Autostart auf entsprechender Adresse. Die Autostartsequenz muss an der Anfangsadresse stehen (5 Byte): | Im Kopfblock gibt es keine Startadresse. Nach dem Laden überprüft der Computer aber das Programm auf eine **Autostart-Sequenz**. Ist diese vorhanden, erfolgt der Autostart auf entsprechender Adresse. Die Autostartsequenz muss an der Anfangsadresse stehen (5 Byte): | ||
53 43 48 xx xx ; xx xx = Startadresse. | 53 43 48 xx xx ; xx xx = Startadresse. | ||
+ | |||
+ | ===== Autostart-Tape ===== | ||
+ | |||
+ | Speichern eines Programms auf Kassette (mit optionalem Startbild) und selbstständigem Start nach dem Einlesen, B.Nickel, 1988 | ||
+ | |||
+ | Es wird nicht nur der reine Speicherbereich auf Kassette gespeichert. Das Aufzeichnungsformat ist ein sog. Container-Format, | ||
+ | |||
+ | !TODO! | ||
+ | |||
+ | ===== Super-Tape ===== | ||
+ | |||
+ | E.Ludwig | ||
+ | |||
+ | !TODO! | ||
+ | |||
+ | ===== USB .Z80-Dateien ===== | ||
+ | |||
+ | Von Ralph Hänsel stammt Software zur Nutzung eines VDIP-Moduls + USB-Stick. Hier werden Dateien im Z1013-.Z80-Format abgelegt. Auch der JKCEMU nutzt dieses Format zum Speichern und Laden von AC1-Programmen. | ||
+ | |||
+ | Es gibt einen Kopfblock (Header), der zum Z1013-Headersave kompatibel ist. | ||
+ | |||
+ | <a2s> | ||
+ | # | ||
+ | | Header | Programm | | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | Kopfblock: | ||
+ | |||
+ | Im Kopfblock ist Dateiname (16 Zeichen), Anfangs- und End-Adresse und der Dateityp (1 Zeichen) enthalten. | ||
+ | |||
+ | <a2s> | ||
+ | # | ||
+ | | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | | ||
+ | | | ||
+ | # | ||
+ | | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1F | | ||
+ | | | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | der freie Bereich ist mit " | ||
+ | |||
+ | Es werden 4 Dateitypen unterschieden: | ||
+ | * P Lauffähiges Maschinenprogramm (z1013: C !!) | ||
+ | * D Maschinendatei | ||
+ | * B Basicprogramm | ||
+ | * F Datenfeld (BASIC) | ||