XEX-Files in Boot-Cassette wandeln
1,
2XEX-Files in Boot-Cassette wandeln
von freetz » So 19. Jun 2016, 20:40
Hallo zusammen,
klingt seltsam, aber wäre mir wichtig: Ich möchte gerne ein XEX-File (also mit Standard-DOS Fileheader FF FF ...) in eine bootfähige Cassette umwandeln. Folgende Besonderheiten gibt es dabei für zu beachten:
- Das Programm besteht aus mehreren Teilen, die an verschiedene Speicherstellen geladen werden. Im XEX-File gibt es daher mehrere FF FF Header-Blöcke. Lässt sich sowas 1:1 auf Cassette übertragen?
- Ein Programmblock wird gleich zu Anfang in die obere Page zero geladen ($80-$FF). Gibt es da Adressen, die wegen des Cassette-Loaders tabu wären und die ich verlegen müsste?
Ideal wäre es, wenn ich WUDSN / mads dazu kriegen könnte, statt eines XEX-Files ein passendes Cassette-Boot-File zu generieren - gäbe es eine solche Möglichkeit oder muss ich auf externe Tools ausweichen?
Wichtig wäre für mich, dass sich die Länge des Programms nicht (oder nur minimal) verändert, deswegen wären Umwege wie XEX->Boot-Disk->Boot-Cassette oder ein extra Loader-Programm keine Option.
Würde mich freuen, wenn mir jemand Tipps geben könnte!
Viele Grüße
F.
Re: XEX-Files in Boot-Cassette wandeln
von freetz » Mo 20. Jun 2016, 09:43
...okay, habe nun selber die Hälfte lösen können: Wenn ich das Programm so umschreibe, dass es nur noch aus einem Speichersegment besteht, lässt sich mit MADS mit folgendem Header ein entsprechendes XEX-File erstellen, das dann mit xex2cas.exe in ein entsprechendes CAS-File umwandeln lässt:
- Code: Alles auswählen
opt h-f+
org $2000
start
.byte 0, [endofcode-start+127]/128 ; cassette header
.word start
.word bootcont
bootcont [Beginn des eigentlichen Programms]
[...]
endofcode [Ende des eigentlichen Programms]
Anscheinend könnte man auch mit Cassetten einen multi-stage loader nutzen, der die Daten dann in verschiedenen Speicherbereichen ablegt, aber vermutlich würde das bei 3-4 Segmenten mehr Code (und damit Ladezeit) kosten, als die Daten monolithisch abzulegen und dann mit einer entsprechenden Kopierroutine am Anfang des Programms an die richtigen Speicherstellen zu legen.
Vielleicht hilft's ja noch jemand anderem.
Gruß,
F.
Re: XEX-Files in Boot-Cassette wandeln
von slx » Di 21. Jun 2016, 11:58
Du könntest Dir ein kleines Bootprogramm schreiben, das dann die restlichen Teile von der Cassette nachlädt. Dann sparst Du Dir evt. das Laden von "Leerstellen", die Du sonst zwischen den Segmenten laden musst.
Re: XEX-Files in Boot-Cassette wandeln
von Montezuma » Di 21. Jun 2016, 13:30
Re: XEX-Files in Boot-Cassette wandeln
von freetz » Di 21. Jun 2016, 13:44
@Montezuma: Danke! Die Seite hatte ich auch als Teil meiner Recherche gefunden und habe daraus dann auch die Struktur des Cassetten-Boot-Loaders abgeleitet.
@six: Ein Bootloader wäre sicher eine Möglichkeit, aber vermutlich verbraucht der mehr Bytes als mich das Umkopieren von Daten aus dem single-segment Programm an die entsprechenden Speicherstellen kostet, denn neben des Ladens der Daten müsste ich ja auch da sagen, wohin sie kommen sollen. Ich dachte halt, es gäbe analog etwas zu den FF FF Headern, die ja dann auch einfach schnörkellos Ziel und Init-Adressen mitliefern.
Jetzt habe ich sowohl den ATASCII Blaster als auch Floppy Bird auf 8 Blöcke eingedampft, und eine weitere Einsparung müsste dann schon 128 Byte betragen, das wird wohl nix
...
Viele Grüße
F.
Re: XEX-Files in Boot-Cassette wandeln
von Bernd » Mi 22. Jun 2016, 00:26
Es gibt das Game "Ghost Busters" auf Kassette, es hat einem besonderen Bootloader. Nach dem ersten Ladevorgang (Töne werden zyklisch unterbrochen) wird der zweite Teil gestartet. Hier gibt es keine Auszeit mehr, der Ladeton ist bis zum Schluss dauerhaft zu hören. Teile vom Ladeprogramm sind aus meinem Code, war damals ein böser Hacker und hatte meinem Bruder das Game auf Kassette gebracht. Es wurde verteilt und machte die Runde bis hin zum Distributor. Der änderte den Bootloader und veröffentlichte es, so sparte man sich die Entwicklungskosten. Leider habe ich die Diskette nicht mehr, man müßte den Bootloader noch mal laden und disassemblieren. Er spart viel Zeit beim booten.
Bernd
Re: XEX-Files in Boot-Cassette wandeln
von freetz » Mi 22. Jun 2016, 01:22
Krasse Geschichte! So ein Loader wäre ja von daher noch aus ganz anderen Gründen spannend
...
Re: XEX-Files in Boot-Cassette wandeln
von Bernd » Mi 22. Jun 2016, 20:23
Yep, ich sollte doch mal die Story schreiben, wie ich zum Atari kam. Da kommen einige Seiten zusammen.
Wenn ich das Game habe und es noch funktioniert, poste ich den Loader hier dissasembliert. Leider fehlt mir momentan die Zeit dazu, die Kassetten befinden sich in einem Karton in einer Ecke, der funktionierende Player in einer Kiste und darauf liegt meine komplette Atari Sammlung. Du bist der erste User, der was mit Tapes machen will. Bislang waren es Disketten, ATR-Files und Module.
Ich wünsche dir schon vorab viel Erfolg,
Bernd
Re: XEX-Files in Boot-Cassette wandeln
von freetz » Mi 22. Jun 2016, 22:10
Ja, mach' das, würde sicher nicht nur mich interessieren (sowohl die Story als auch der Loader) - ich bin mit der jetzigen Lösung halbwegs zufrieden und habe jetzt auch einen Producer in England gefunden. Wenn alles klappt, wird es das Spiel dann auf der JHV zu kaufen geben
...
Re: XEX-Files in Boot-Cassette wandeln
von Bernd » Do 23. Jun 2016, 19:56
Das Game "Ghostbusters" gibt es auf Atarimania als Tape!
Ich hoffe du kommst mit dem Assemblercode klar.
5D7E JSR $5DA1 -> Öffnet den Kanal
5D83 JSR $5DCA -> Läuft die Schleife 5 mal durch, erhöhter Ladeblock
5D8B JSR $5DFD -> Kanal wird geschlossen
Ich habe den Rest davor mitgenommen, weil im unteren Programmteil bei einem Fehler zurückgesprungen wird.
Warum willst du dein Game nicht auf Diskette veröffentlichen?
Eine Floppystation hat so ziemlich jeder, bei vielen Tapes sind die Antriebsriemen am Ende, da könnte es zu Problemen kommen.
Servus,
Bernd
- Code: Alles auswählen
5C3C LDA #$40
5C3E STA $10 ;POKMSK
5C40 STA $D20E ;IRQEN
5C43 LDA #$FF
5C45 STA $D301 ;PORTB
5C48 LDA #$01
5C4A STA $03F8 ;BASICF
5C4D STA $0244 ;COLDST
5C50 LDY #$00
5C52 STY $41 ;SOUNDR
5C54 STY $06 ;TRAMSZ
5C56 LDA $BFFE
5C59 CMP $BFFE
5C5C BNE $5C72
5C5E DEY
5C5F BNE $5C56
5C61 INC $BFFE
5C64 CMP $BFFE
5C67 BEQ $5C81
5C69 LDA $6A ;RAMTOP
5C6B CMP #$A0
5C6D BCC $5C72
5C6F JMP $5D7E ----> Alles OK dann geht es hier weiter
5C72 LDA #$54
5C74 STA $0230 ;SDLSTL
5C77 LDA #$04
5C79 STA $D404 ;HSCROL
5C7C LDA #$5D
5C7E JMP $5C88
5C81 LDA #$41
5C83 STA $0230 ;SDLSTL
5C86 LDA #$5D
5C88 STA $0231 ;SDLSTH
5C8B JMP $5C9E
5C8E LDA #$68
5C90 STA $0230 ;SDLSTL
5C93 STA $D402 ;DLISTL
5C96 LDA #$5D
5C98 STA $0231 ;SDLSTH
5C9B STA $D403 ;DLISTH
5C9E LDA #$E0
5CA0 STA $02F4 ;CHBAS
5CA3 LDA $14 ;RTCLOK+2
5CA5 SEC
5CA6 SBC $D40B ;VCOUNT
5CA9 STA $D016 ;COLPF0
5CAC AND #$F0
5CAE ADC #$0A
5CB0 STA $D018 ;COLPF2
5CB3 LDA $D40B ;VCOUNT
5CB6 AND #$F4
5CB8 STA $D40A ;WSYNC
5CBB STA $D01A ;COLBK
5CBE JMP $5CA3
5D7E JSR $5DA1
5D81 LDY #$00
5D83 JSR $5DCA
5D86 INY
5D87 CPY #$05
5D89 BNE $5D83
5D8B JSR $5DFD
5D8E LDX #$00
5D90 STX $022F ;SDMCTL
5D93 STX $14 ;RTCLOK+2
5D95 LDA #$32
5D97 CMP $14 ;RTCLOK+2
5D99 BNE $5D95
5D9B STX $D40E ;NMIEN
5D9E JMP $647F
5DA1 LDX #$10
5DA3 LDA #$03
5DA5 STA $0342,X ;B0-ICCOM
5DA8 LDA #$7C
5DAA STA $0344,X ;B0-ICBAL
5DAD LDA #$5D
5DAF STA $0345,X ;B0-ICBAH
5DB2 LDA #$04
5DB4 STA $034A,X ;B0-ICAX1
5DB7 LDA #$80
5DB9 STA $034B,X ;B0-ICAX2
5DBC LDA #$0C
5DBE STA $02FC ;CH
5DC1 JSR $E456 ;CIOV
5DC4 BPL $5DC9
5DC6 JMP $5C8E
5DC9 RTS
5DCA LDX #$10
5DCC STX $14 ;RTCLOK+2
5DCE LDA #$07
5DD0 STA $0342,X ;B0-ICCOM
5DD3 LDA $5E08,Y
5DD6 STA $0344,X ;B0-ICBAL
5DD9 LDA $5E0D,Y
5DDC STA $0345,X ;B0-ICBAH
5DDF LDA $5E12,Y
5DE2 STA $0348,X ;B0-ICBLL
5DE5 LDA $5E17,Y
5DE8 STA $0349,X ;B0-ICBLH
5DEB TYA
5DEC PHA
5DED LDA #$3F
5DEF CMP $14 ;RTCLOK+2
5DF1 BNE $5DEF
5DF3 JSR $E456 ;CIOV
5DF6 BMI $5DC6
5DF8 STY $4D ;ATRACT
5DFA PLA
5DFB TAY
5DFC RTS
5DFD LDX #$10
5DFF LDA #$0C
5E01 STA $0342,X ;B0-ICCOM
5E04 JSR $E456 ;CIOV
5E07 RTS
5E08 : 80 00 00 00 00 04 1B 2B 60 A7 80 00 80 00 00 0F
5E18 : 10 30 47 19 00 00 00 00 00 00 00 00 00 00 00 00
Re: XEX-Files in Boot-Cassette wandeln
von Bunsen » Do 23. Jun 2016, 21:17
Klasse! ich freue mich schon auf den Kassettten-Release!
Aber auch in Deutschland würde man einen Publisher finden ... Powersoft kann professionelle Kassetten fertigen und sie auch vertreiben (
https://proc-atari.de/). Auch polyplay (
https://www.polyplay.xyz/) klingt vielversprechend.
Re: XEX-Files in Boot-Cassette wandeln
von freetz » Do 23. Jun 2016, 22:37
@Bernd: Danke! Ich vermute aber mal, dass ich zum Verstehen etwas länger brauchen werde
...
Ein Cassetten-Release deswegen, weil es eben "richtig" Retro ist, und bei einem (bzw. zwei) Spielen mit je 1KB gerade mal 45 Sekunden zum Laden braucht. Wenn man eben mal seinen Kindern oder Neffen und Nichten zeigen möchte, wie man in den 80er Jahren Spiele geladen hat, dann sind Cassetten einfach exotischer als Disketten, die man ja noch im neuen Jahrtausend verwendet hat. Und der Sound der Ladeblöcke ist beim Atari ja schon auch etwas ganz Besonderes...
@Bunsen: Danke für die weiteren Tipps, ich bin jetzt bei einem britischen Vertrieb gelandet, weil dort die Preise auch für alle Zusatzfeatures einsehbar waren, auch was Coverdrucke, Zellophanverpackung etc. angeht. Und Ziel soll es sein, das Teil (zumindest für ABBUC-Mitglieder) für unter 10 Euro anzubieten. So wie ich die Beispiele gesehen habe, scheint auch die Qualität zu stimmen. Ich hoffe, ich kann die Exemplare dann zur JHV mitbringen
...
Viele Grüße
F.
Re: XEX-Files in Boot-Cassette wandeln
von Bunsen » Fr 24. Jun 2016, 10:04
Re: XEX-Files in Boot-Cassette wandeln
von FlorianD » So 10. Jul 2016, 01:10
Re: XEX-Files in Boot-Cassette wandeln
von freetz » So 10. Jul 2016, 14:34
Danke!
Sehr interessant, obwohl mir der Sinn des Programms nicht ganz klar wird: So wie ich die Anleitung verstehe, kann man ein DOS-File in den Speicher laden und dann wird der Cassetten-Boot-Header beim Schreiben auf Cassette vorangestellt. Was das Programm einem also abnimmt, ist, dass man selber zuerst den Header generiert (der aber als Source im Anhang gelistet ist) und dann die DOS-Programmdaten hinterher schreibt (minus DOS-Header)?
Letztlich habe ich das ja jetzt bei einem Fall so gemacht; toll wäre natürlich noch gewesen, wenn MANTIS multi-stage DOS-Files entsprechend schreiben könnte (wie es bei mir nötig gewesen wäre), aber so wie ich die Anleitung verstanden habe, muss der Programmcode in einem Stück stehen - zumindest habe ich keinen Parameter beim Speichern gefunden, bei dem man angeben könnte, wo sich die jeweiligen Datenblöcke befinden...
Trotzdem danke noch mal,
F.
Re: XEX-Files in Boot-Cassette wandeln
von freetz » So 10. Jul 2016, 14:59
...hab's jetzt doch einmal direkt ausprobiert, nur falls jemand anderes auch vor der Frage stehen sollte: Mantis erwartet den Programmcode von Disk schon in dem Format, wie ich es am 20. Juni beschrieben hatte. Es erwartet den Code auch anscheinend zwingend ab $700 - zwar kann das Programm durch den im Beispiel angegebenen JMP-Befehl auch woanders stehen, aber dann würden ungenutze leere Speicherbereiche zwischen $700 und dem Beginn des eigentlichen Programms ebenfalls mit auf Cassette geschrieben. Damit ist es also (mit Mantis) nicht möglich, Speicherplatz zu sparen, indem man analog zu DOS über einen entsprechend gesetzten File-Header Datenblöcke gleich an die richtige(n) Stelle(n) im RAM laden lässt.
Trotzdem eine interessante Exkursion in die Vorgehensweisen, welche Formen von Produktivsystemen es damals gab, bevor man sich wie heute z.B. über die a8cas-tools gleich die fertigen Audio-Daten erzeugen lassen kann...
Re: XEX-Files in Boot-Cassette wandeln
von CharlieChaplin » So 10. Jul 2016, 17:56
Hmmm,
es ist immer schwer Tipps zu geben, wenn jemand etwas ganz Spezielles will. Für XEX-Files nimmt man bei Diskette ja entweder ein DOS oder ein Gamedos oder einen Bootloader (oder man wandelt die Datei ggf. in eine Bootdisk). Für Tapes gibt es ebenfalls div. Möglichkeiten:
- Bootloader: div. Tape Bootloader z.B. als Abtipplistings in Homecomputer und Computronic oder im PD-Bereich, Länge ca. 128-512 Bytes. Man kann damit COM/XEX/EXE Files laden, ob damit nur einteilige (monolithische) oder auch mehrteilige Files von Tape geladen werden können, habe ich nie getestet. Die Rotkäppchen (RK) lagen früher halt zumeist als einteilige Files vor...
- DOS/Gamedos: heißen beim Tape entweder COS (Cassette Operating System, z.B. von Happy Computer und von Computer Kontakt) oder aber BL/C (Binary Load Cassette, sehr beliebt damals bei Tape-RKs). COS und BLC sind ca. 1kbyte lang, vermutlich zu lang für deine Zwecke, sie beinhalten dafür mehrere Lademöglichkeiten. Und wieder der Spruch: Man kann damit COM/XEX/EXE Files laden, ob damit nur einteilige (monolithische) oder auch mehrteilige Files von Tape geladen werden können, habe ich nie getestet. Die Rotkäppchen (RKs) lagen früher halt zumeist als einteilige Files vor...
- File2Tape-Konverter: gibt es recht viele z.B. aus Osteuropa, aber auch aus England und USA. Sie "konvertieren" ein XEX-File in eine Tape-Datei, zumeist hängen sie einfach einen Bootloader vor das Programm (Teil eins = Bootloader, unterschiedliche Länge, je nach Konverter-Programm; manche zeigen während des Ladens auch einen Titel an; Teil zwei = Programm). Ob damit nur einteilige (monolithische) oder auch mehrteilige Files von Tape geladen werden können, habe ich nie getestet. Vielleicht kann man ja einfach den ersten Programmteil damit umwandeln und die weiteren Teile dann mittels C/D Kopierer (auf Tape) daran anhängen ?!?
- File2Boot: einige Konverter erstellen Bootdisks, einige wenige Programme auch Boottapes (Bootloader und Programm in einem Teil); zumeist sind sie für einteilige XEX-Dateien, man müsste ausprobieren, ob man einfach weitere Dateien daran anhängen kann und ob diese dann auch geladen werden (Bsp: Super-Copy von P.Jakubek).
Es gibt noch viele weitere Tools und Utilities in diesem Bereich. Da es momentan wieder beliebt scheint kurze Programme auf Tapes herauszubringen, will man natürlich auch einen Loader (oder Bootcode), der sehr kurz ist. Als nicht-Programmierer kann ich damit nicht dienen, sondern nur anbieten, was bereits vorhanden ist. Zur Not codest du halt deinen eigenen Tape Bootloader oder kontaktierst mich per E-Mail, damit ich dir meine vorhandenen Tools zuschicke...
Re: XEX-Files in Boot-Cassette wandeln
von freetz » So 10. Jul 2016, 18:56
Danke für die sehr umfrangreiche Übersicht!
Es tut mir leid, wenn der Eindruck entstanden sein sollte, dass ich hier Spezialwünsche unklar formuliert hätte. Mein Hauptanliegen war es, herauszufinden, ob es zu den multi-stage DOS-Files bzw. Boot-Disks ein Pendant auf Cassette gibt, mit dem Hauptinteresse, den Code und dadurch die Ladezeit so gering wie möglich zu halten. So wie es aussieht, scheint es wohl nur bei letzterem der Fall zu sein, denn die einzige Variante scheint - auch nach Deiner Übersicht - das Laden in mehreren Abschnitten zu sein.
Wenn es nur darum geht, Code an die richtige Stelle zu laden, habe ich jetzt - auch dank der Hilfe der anderen User hier - gemerkt, dass es speicherplatz- und ladezeitentechnisch günstiger ist, den Code monolithisch zu generieren und dann mittels kleiner Umschicht-Routinen an die richtige Stelle zu verschieben. Bei drei Segmenten ist der Code meines 1K-Shooters dann von 999 auf 1023 Byte angewachsen (man spart ja auf der anderen Seite durch jeden Header jeweils sechs Byte ein). Kürzer wäre es also mit einem multi-stage Loader auf Cassette nicht gegangen, auch wenn dadurch natürlich andere Dinge möglich wären, wie ein Ladebild etc.
Woran mich Deine Liste aber auch noch erinnert hat, waren die guten, alten Zeiten, in denen ich Spiele von Cassette mit BL/C geladen habe. Leider finde ich das Programm nicht mehr, falls Du es also in Deinem Fundus haben solltest, würde ich mich darüber sehr freuen
...
Vielen Dank noch mal an alle und beste Grüße
F.
Re: XEX-Files in Boot-Cassette wandeln
von cpg » Mi 13. Jul 2016, 20:10
freetz hat geschrieben:Ideal wäre es, wenn ich WUDSN / mads dazu kriegen könnte, statt eines XEX-Files ein passendes Cassette-Boot-File zu generieren
Ein bischen spät, scheint ja schon alles gelöst zu sein, aber zur Info: Mit dem "atari-cassette.cfg" Linker Konfigfile kann mit cc65 Cassetten-Boot-Images erzeugen.
Re: XEX-Files in Boot-Cassette wandeln
von freetz » Do 14. Jul 2016, 10:18
Danke, weißt Du (oder jemand anderes), wie das dann umgesetzt wird? Das .cfg-File, das ich dazu gefunden habe, lässt das für mich nicht erkennen. Interessant wäre, ob daraus dann einfach ein monolithisches File mit dem Code von weiter oben erzeugt wird oder ob der cc65 erkennen würde, dass es sich um mehrere Speichersegmente handelt und dann entsprechenden Cassetten-Boot-Code generieren würde.
1,
2