Bootloader ohne BASIC
Bootloader ohne BASIC
von kfischer » Sa 22. Feb 2014, 11:20
Moin,
ich suche einen Bootloader, der mir das 1. ML-File auf der ATR-Disk lädt, aber vorher das BASIC abschaltet.
Probiert habe ich PicoBoot, aber der schaltet mir das BASIC nicht ab.
Irgendwelche Tipps?
Gruß
Klaus
P.S.: Bevor die Art von Antwort kommt ... ich weiss sehr wohl, dass man mit gedrückter OPTION-Taste das BASIC abschalten kann, aber ich möchte, dass die Software das für mich macht

Re: Bootloader ohne BASIC
von Bunsen » Sa 22. Feb 2014, 11:27
XDOS (?)
Re: Bootloader ohne BASIC
von kfischer » Sa 22. Feb 2014, 11:32
XDOS habe ich, müsste ich mal probieren. Ich fürchte nur, dass es schon was zu groß ist mit 40 Sektoren in der Fast-Version. Gibts nicht was kleiners?
Re: Bootloader ohne BASIC
von Bunsen » Sa 22. Feb 2014, 11:43
"Autostart PROGRAMM.COM ohne Basic; die erste Kommentarzeile muss, die anderen können
COP E; AUTORUN.SYS
"Benutzung des Bildschirmeditors zur Erzeugung einer Batchdatei mit dem Namen AUTORUN.SYS
NEW
"Schaltet das BASIC ab und löst auch bei resetfesten Programmen ein Reset aus
EXE PROGRAMM.COM
"Startet das gewünschte Programm
Danach CTRL-3 drücken, um die Eingabe zu beenden. XDOS schreibt nun die Datei unter dem Namen AUTORUN.SYS auf Diskette.
Re: Bootloader ohne BASIC
von Jac » Sa 22. Feb 2014, 12:53
Wenn ein ML Programm erfordert, dass das BASIC abgeschaltet ist, sollte es das selbst abschalten.
Den Benutzer zu "OPTION" zu zwingen ist "armselig" und einen eigenen Loader braucht man auch nicht.
Hierzu kannst Du z.B. am Anfang der ML Datei (z.B. per HEX Editor) folgende Bytes hinzufügen/davorhängen.
$FF, $FF, $01,$d3,$01,$d3,$ff
Entspricht POKE $D301,$ff.
Und das ganze dann einfach als "AUTORUN.SYS" speichern, damit es automatisch geladen wird.
Re: Bootloader ohne BASIC
von CharlieChaplin » Sa 22. Feb 2014, 14:28
Nun,
ich persönlich kenne keinen Bootloader, der automatisch das Basic abschaltet. Es gibt ein paar Gamedos Versionen, die das machen, aber danach wurde ja nicht gefragt. Eigentlich könnten/sollten die Programme (Spiele, Demos, Tools) das ja selber machen, denn es ist lästig stets Option zu drücken, damit das geschieht. Es sind auch nur ein paar Bytes, die man dem Programm hinzufügen muss, damit es automatisch geschieht, doch leider...
Vielleicht ist Hias ja so nett und programmiert Picodos entsprechend um, damit es das zukünftig automatisch macht. Man sollte allerdings wissen, dass dann Basic-Programme, die z.B. mittels BAS2COM (A8 Programm von Raster) oder BAS2XEX.EXE (PC-Programm von Fandal) in ein pseudo-ML-File umgewandelt wurden, mit diesem Bootloader nicht mehr laufen. Auch bei den Homesoft-Disketten sind viele pseudo-ML-Files dabei, bei denen es sich um Basic-Spiele handelt, die aber nach wie vor Atari Basic benötigen. Also nicht wundern, wenn diese Spiele dann auch nicht mehr laufen...
Bei den meisten Programmen (z.B. auch denen für den Abbuc-Software-Wettbewerb) gehe ich immer etwas umständlich vor und hänge dort das Programm manuell an einen Basic-Off-Switcher an, d.h. ich lade z.B. Superpacker auf dem A8 oder auf dem PC, lade dann den Basic-Off-Switcher von Bill Wilkinson und danach das eigentliche Programm ein. Dann wird alles neu abgepeichert bzw. die alte Version des Programmes mit der neuen Version überschrieben. Den Packer nutze ich dabei nicht unbedingt bzw. ich nutze ihn nur als Linker. Man kann diese Prozedur natürlich auch im DOS mit Copy und Append erreichen, indem man den Basic-Off-Switcher (Basoff.COM) erstmal kopiert und die Kopie umbenennt (z.B. in Game.COM), dann kopiert man das Programm und hängt es mittels "/A" append an (z.B. COP D1:Spiel.COM,D2:Game.COM/A).
Gruß, Andreas Koch.
Re: Bootloader ohne BASIC
von kfischer » Sa 22. Feb 2014, 19:41
Moinsen,
ich hab das jetzt mal mit XDOS probiert. Zu meiner Überraschung laufen alle getesteten ML-Files, was ich zuvor noch stark bezweifelt hatte, da das LOMEM in der F-Version bei $1F70 doch recht hoch ist. XDOS wird danach zwar unbrauchbar überschrieben, aber offenbar reicht die Überlebenszeit noch fürs Booten. Nicht schlecht, wenn man nur ein Programm auf der ATR-Disk hat. Vielen Dank

Trotzdem würde es für mich Sinn machen und würde ich es praktisch finden, wenn es den PicoBoot-Initializer in 2 Versionen geben würde, einmal mit und einmal ohne BASIC-Unterstützung. PicoDOS selbst schaltet ja auch das BASIC ab, zumindest habe ich das bei der Barebone-Version so gesehen. Ich hoffe Hias liest das hier mit und überlegt es sich mal

Danke auch für die anderen Tipps! Ich werde das mal bei Gelegenheit ausprobieren! Obwohl es doch recht einfach ist ein paar Bytes vorzuhängen, wundert es mich doch, warum bei der Hälfte der ML-Files, die im Umlauf sind, das BASIC nicht abgeschaltet wird, wenn es mit BASIC nicht läuft

Viele Grüße
Klaus
Re: Bootloader ohne BASIC
von HiassofT » So 23. Feb 2014, 15:05
kfischer hat geschrieben:Trotzdem würde es für mich Sinn machen und würde ich es praktisch finden, wenn es den PicoBoot-Initializer in 2 Versionen geben würde, einmal mit und einmal ohne BASIC-Unterstützung. PicoDOS selbst schaltet ja auch das BASIC ab, zumindest habe ich das bei der Barebone-Version so gesehen. Ich hoffe Hias liest das hier mit und überlegt es sich mal :roll:
Ja, hab's gelesen und mal kurz in den Picoboot code reingeschaut:
Ich hab' da ein kleines Platzproblem :) Aktuell sind nur mehr 5 Bytes frei, für die Minimalversion von "basic off" bräuchte ich aber 8 Bytes (LDA $D301; ORA #1; STA $D301).
Das ist dann auch noch nicht ganz sauber, um das Basic "richtig" abzuschalten braucht's noch etwas mehr Code:
- Speicher von $A000-$BFFF löschen
- RAMTOP auf $C0 setzen
- Bildschirm schliessen und neu öffnen
- BASICF setzen
Ganz sauber programmiert sogar noch mehr, es ist gut zu checken ob nach dem Setzen von $D301 bei $A000-$BFFF auch wirklich RAM ist - und nicht etwa eine Cart drin steckt oder wer mit einem Schalter Basic fix eingeschaltet hat (ich hab' so einen Schalter in meinem 800XL).
Muss mal schauen ob ich irgendwo noch 3 Bytes rausquetschen kann, wird aber schwer, der Code ist schon ziemlich optimiert...
Die einfache Variante ist vor das ML Programm einen kleinen "Basic off" Block zu hängen.
so long,
Hias
Re: Bootloader ohne BASIC
von HiassofT » So 23. Feb 2014, 15:45
Ganz vergessen, Du kannst auch MyPicoDos dazu bringen automatisch ein COM/BAS/... File zu laden. Brauchst aber einen Sektor/Hex Editor dafür und es darf nur ein einziges File auf der Disk sein (ausser PICODOS.SYS/PICONAME.TXT):
Zuerst ganz normal eine Disk / ein ATR mit MyPicoDos und dem zu startenden File erzeugen.
Dann mit einem Sektor Editor das 17. Byte des Boot-Sektors (Offset 16, wenn man bei 0 zu zählen beginnt) von 0 auf 1 ändern. Dadurch wird die "Autostart" Funktion von MyPicoDos aktiviert.
Die ersten Bytes des Boot Sektors sehen üblicherweise in etwa so aus:
- Code: Alles auswählen
0000: 00 03 00 10 ca 10 4c 11 10 04 00 7d 03 80 00 81 ......L....}....
0010: 00 a9 31 8d 00 03 a9 01 8d 01 03 a9 52 8d 02 03 ..1.........R...
Das "00" vor dem "a9 31 8d..." änderst Du einfach auf "01", das war's auch schon.
- Code: Alles auswählen
0000: 00 03 00 10 ca 10 4c 11 10 04 00 7d 03 80 00 81 ......L....}....
0010: 01 a9 31 8d 00 03 a9 01 8d 01 03 a9 52 8d 02 03 ..1.........R...
Bei einem ATR am PC hast Du davor noch die 16 Byte ATR Header, das zu ändernde "00" steht dann ab Offset 32 (0020 hex). zB:
- Code: Alles auswählen
0000: 96 02 80 16 80 00 00 00 00 00 00 00 00 00 00 00 ................
0010: 00 03 00 10 ca 10 4c 11 10 04 00 7d 03 80 00 81 ......L....}....
0020: 01 a9 31 8d 00 03 a9 01 8d 01 03 a9 52 8d 02 03 ..1.........R...
Ich glaub ich muss mal dir2atr ein wenig erweitern, damit es das automatisch machen kann.
so long,
Hias
Re: Bootloader ohne BASIC
von HiassofT » So 23. Feb 2014, 16:27
HiassofT hat geschrieben:Ich glaub ich muss mal dir2atr ein wenig erweitern, damit es das automatisch machen kann.
Probier bitte mal die folgende dir2atr Version aus:
http://www.horus.com/~hias/atari/ataris ... 140223.zipMit der "-a" Option kannst Du den autorun Modus von MyPicoDos 4.04 und 4.05 aktivieren. zB:
- Code: Alles auswählen
dir2atr -b MyPicoDos405 -a image.atr directory-mit-einem-file
so long,
Hias
Re: Bootloader ohne BASIC
von kfischer » So 23. Feb 2014, 20:11
Hallo Hias,
vielen, vielen Dank für deinen ausführlichen Beitrag und für das kleine Update. Ich hab mir das gefixte DIR2ATR mal angeschaut. Es funktioniert, aber was mich doch irgendwie stört, ist dass das leere Menu kurz aufblinkt. Ich denke ich werde das so machen wie CharlieChaplin beschrieben hat ... dein PicoDOS nehmen und vor dem ML-File den BASIC-Off-Switcher setzen. Das gefällt mir noch am Besten, weil es am wenigsten Platz braucht!
Kann man sich ja heute im Allgemeinen nicht mehr vorstellen, dass wir hier um jeden Byte kämpfen

Viele Grüße
Klaus
Re: Bootloader ohne BASIC
von kfischer » Fr 28. Feb 2014, 16:41
Moin,
CharlieChaplin hat geschrieben:... lade dann den Basic-Off-Switcher von Bill Wilkinson ...
ich würde das gerne mal probieren! Wo finde ich den Switcher? Via Google habe ich den nicht gefunden!
Gruß
Klaus
Re: Bootloader ohne BASIC
von CharlieChaplin » Fr 28. Feb 2014, 22:09
Nun,
du findest den Switcher auf endlos vielen Magazin-Disketten, z.B. Diskline, Lazy Finger, Computer Kontakt, Antic, Analog, Compute, Page 6, Atari User, etc. etc. Bill Wilkinson hat ihn ursprünglich im Compute! Magazin released und von dort aus hat er seine Verbreitung gefunden. Der Switcher (zumeist Basoff.OBJ) ist nur einen Sektor bzw. 55 (oder 45?) Bytes lang. Bill war übrigens einer der Programmierer von AB und auch Autor des Buches "Inside Atari Basic".
Okay, du willst die Datei, bitte sehr bis Sonntag findest du sie mit einigen anderen mini-tools hier. Neben dem Basic-off Switcher (BASOFF.COM) nutze ich noch recht häufig eine Reset=Kaltstart Routine (Coldsta.COM), eine black-screen routine (BLKSCR.COM, BS bleibt an), eine Screen-off Routine (SCROFF.COM, BS aus), eine SIO-noise off Routine (POKE65.COM), eine weitere Screen-off Routine (POKE559.COM), einen Gr.0-Titel (GR0*.COM, Platz für 40 Zeichen langen Titel), einen Gr.2-Titel (GR2*.COM, Platz für 20 Zeichen langen Titel) und weitere ultrakurze Programme. Viele dieser Tools kamen schon für die ASC-Programme zum Einsatz, damit man z.B. nicht immer seinen Rechner ausschalten muss um neu zu booten oder halt keine Option-Taste drücken muss um Basic abzuschalten.
Lade mal ein Programm vom letzten Abbuc Wettbewerb in den Superpacker ein, wenn du dort z.B. siehst $0400-042C, Init $0400 dann ist dies der Basic-off Switcher von Bill Wilkinson. Die Page 4 steht nach dem Ausschalten von Basic übrigens wieder voll zur Verfügung (das Programm oder der Packer darf also Page 4 benutzen)... -Andreas Koch.
Re: Bootloader ohne BASIC
von kfischer » Sa 1. Mär 2014, 00:21
Hallo Andreas,
vielen Dank für die Toolsammlung! Hab mal einen ersten Test gemacht und mit Copy/Append BASOFF.XEX vor das ML-File gehängt. Danach mit Hias' PicoBoot-Initializer eine Bootdisk daraus gemacht und neu gebootet. Perfekt ... genauso habe ich mir das vorgestellt!
Die anderen Tools werde ich mir bei Gelegenheit auch noch anschauen. Ich denke mal die Verfahrensweise wird die selbe sein und die gewünschen Optionen ColdStart, ScreenOff etc. werden einfach davorgehängt, oder?
Viele Grüße
Klaus
Re: Bootloader ohne BASIC
von CharlieChaplin » Sa 1. Mär 2014, 03:32
Hallo Klaus,
ja die Reihenfolge von Basoff, Coldstart, Sio-noise-off, ist egal. Die Tools black-screen, Gr.0-titel und Gr.2-titel würde ich aber immer als letztes vor das Programm hängen, also so:
1) Basoff / Coldstart / SIO-noise-off => diese Tools kann man einzeln oder alle benutzen
2) black-screen / screen-off / Gr.0-titel / Gr. 2-titel / Tit6le (Page 6, Gr. 2) / Tit4le (Page 4, Gr. 0) => nur ein Tool davon nehmen; * wenn man screen-off benutzt, muss das Programm oder der Packer am Ende den BS wieder einschalten, Code3-Cruncher und Superpacker (PC) tun das, viele andere jedoch nicht
3) Programm (Spiel, Demo, Anwendung, sonstwas)
Wenn das Programm nicht mehr laufen sollte, einfach ein anderes Tool aus 2) benutzen; wenn der BS schwarz/leer bleibt kein screen-off benutzen; den Titel in Gr. 0 oder Gr. 2 kann man manuell mit einem Disk/Sektoreditor editieren und passend abändern (z.B. Hypra-Disk, Happy-Master Quad, Sector-Spy, Watson, Sherlock, ...)
Gruß, Andreas Koch.
P.S.: Coldstart funkt. leider nicht immer, da manche Autoren ihr Programm absolut reset-fest machen, da hilft dann nur Hardware weiter (geänderts OS, Hard-Reset-Taster, Cart., Freezer, etc.) :
http://www.b-pahl.de/atari8bit/Computer ... html#coldr oder:
http://www.abbuc.de/~bernd/downloads/ka ... taster.pdf