XEX-Files in Boot-Cassette wandeln

1, 2

XEX-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
Vielleicht hilft Dir das weiter:
http://www.atariarchives.org/dere/chaptC.php

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! :D

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
:thumbup:

Re: XEX-Files in Boot-Cassette wandeln

von FlorianD » So 10. Jul 2016, 01:10
vielleicht hilft das hier auch weiter:

APX-20143

http://data.atariwiki.org/DATA/APX_Mant ... tem_v2.pdf

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