Launcher
Launcher

Wenn man ein Spiel oder eine Anwendung für die Öffentlichkeit zugänglich machen will, wäre es vorteilhaft, wenn das ganze System mit einer einzigen LOAD-Anweisung hochgefahren werden könnte. Diese Anweisung müsste sowohl TSB laden und starten als auch das eigentliche Spiel bzw. die Anwendung.

Hier die dafür erforderlichen Eingaben, zusammengefasst in einer Datei, dem Launcher.

Wer TSB von der Diskette startet, kennt die Datei "TSB", den Standard-Launcher. Nach seinem Aufruf lädt er den Basic-Interpreter und startet das TSB-System. Es erscheint am Ende eine Meldung wie beim Einschalten des Computers, jetzt aber andersfarbig und mit dem Zusatz "tuned". Ab hier muss man "von Hand" weiterarbeiten und die Programme laden, mit denen man gern arbeiten möchte. Der neue Launcher müsste auch diesen Schritt automatisieren.

Und so sieht das aus (der folgende Code ist im Format des C64Studio, d.h., dass die mit einer Raute (#) beginnenden Zeilen vom C64Studio als Kommentare interpretiert werden, die nicht im lauffähigen Programm erscheinen, auch nicht als REM):

#
# this loads and starts TSB and then a program whose name starts w/ "so"
#

# preset main colors (the following sets screen to black and pen to midgrey):
100 if a=0 then poke 53280,0: poke 53281,0: poke 646,12

# clear screen, fix lower case charset:
110 if a=0 then print chr$(147)chr$(14)chr$(8);

# show 'loading' message and load TSB
120 if a=0 then a$="loading ...": x=len(a$): for i=0 to x: print: next
130 if a=0 then print tab(20-x/2)a$: a=peek(186): load"tsb.neo",a,1

# prevent TSB color change, fix boot drive number, prevent TSB start message, set key buffer address:
200 poke 49187,198: poke 32898,a: poke 34249,96: p=631: c=0

# prepare key buffer (fill w/ 'loA"so*":Shift-RUN/STOP'), set pen to black (everything now invisible)
210 read v: if v=-1 then poke 198,c: poke 646,0: sys 49152: end
220 poke p+c,v: c=c+1: goto 210

# data to fill key buffer (exposed bytes encode 'so*'):
230 data 76,79,193,34,   83,79,42,   34,58,131,-1

Nur die Zeilen mit einer Zeilennummer vorn erscheinen also im fertigen Programm. Der Name der Datei ist egal ("Booter", "Launcher", "Spiel"...) Wichtig ist, dass sie als erste Datei im Directory steht. Sie lädt in diesem Fall eine (die erste) Anwendung, deren Namen mit "SO" beginnt und startet sie sofort. Ein User muss also nichts anderes tun wie Generationen von Usern zuvor, nämlich dies hier eingeben:

load "*",8: und RUN