FantasyFive/Laderoutine2

Aus C64-Wiki
Zur Navigation springenZur Suche springen

<< zurück zu Save Me Brave Knight

Fantasy_Five/Laderoutine2: Das folgende BASIC-Programm wird vom Schnelllader "Novaload" in den Speicher übertragen und gestartet, wenn die zweite Kassette der Spielesammlung "Fantasy Five" geladen wird. Mit Hilfe von SYS-Befehlen ruft dieses Programm anschließend seinerseits die Routinen des Schnellladers auf und lädt auf diese Weise alle Dateien, die zu dem vom Benutzer gewählten Spiel gehören.

Zwecks besserer Lesbarkeit sind in diesem Listing alle BASIC-Befehle und Variablen in Großbuchstaben, die Stringkonstanten dagegen in Groß- und Kleinbuchstaben geschrieben. Das Sonderzeichen "" repräsentiert den PETSCII-Code 156 (hexadezimal $9C, Umschaltung auf Bildschirmfarbe "Purple").

0 CLR
10 BL$="":FORI=1TO38:BL$=BL$+" ":NEXT
11 CD$="s":FORI=1TO25:CD$=CD$+"q":NEXT
12 C$="? ":REM WILD CARD + SHIFT SPACE
30 R=57812:A=780:L=65493:REM VARS FOR LOAD
900 FORI=0TO3:POKE53280+I,1:NEXT
950 POKE809,255:POKE808,237
1000 PRINT"“ShnqqW"SPC(10)"Fantasy Five Tape 2."
1010 PRINTSPC(10)"—―—―—―—―—―—―—―—―—―—―qqq"
1110 PRINTSPC(8)"—―—"
1120 PRINTSPC(8)"r 1 R   ZBuffalo Roundup."
1130 PRINTSPC(8)"——————————————————————"
1140 PRINTSPC(8)"———"
1150 PRINTSPC(8)"r 2 R   VSave Me Brave Knight."
1160 PRINTSPC(8)"——————————————————————"
1200 PRINTLEFT$(CD$,20)"W    Press a number to select program."
2000 GETE$:E=VAL(E$)
2010 IFE<1ORE>2THEN2000
2500 ONEGOTO6000,7000
6000 REM *** BUFFALO ROUNDUP ***
6010 PRINT"S"LEFT$(CD$,12)"  Loading BUFFALO ROUNDUP, please wait.e"
6050 POKE45,84:POKE46,72:CLR
6100 LOAD "BUFFALO.08-48"
7000 REM *** SAVE ME BRAVE KNIGHT ***
7010 PRINT"S"LEFT$(CD$,12)"      Loading SAVE ME BRAVE KNIGHT,"
7020 PRINTSPC(12)"please wait.e"
7100 SYSR"SAVE ME.48-4F",1,1:POKEA,0:SYSL
7110 SYSR"SAVE ME.54-5F",1,1:POKEA,0:SYSL
7120 SYSR"SAVE ME.80-8B",1,1:POKEA,0:SYSL
7130 SYSR"SAVE ME.8D-96",1,1:POKEA,0:SYSL
7140 SYSR"SAVE ME.AB-C0",1,1:POKEA,0:SYSL
7150 LOAD"SAVE ME.08-3B"
8000 REM *** WAIT FOR SPACE ***
8100 PRINTLEFT$(CD$,22)SPC(8)"Press rspaceR when ready."
8110 GETE$:IFE$<>" "THEN8110
8120 PRINTLEFT$(CD$,22)BL$
8140 RETURN
9000 REM *** ERROR ROUTINE ***
9100 IF ST>=0 THEN9200
9110 PRINTLEFT$(CD$,20)"     Please reconnect the tape unit."
9130 GOSUB8100
9140 EN=1
9150 GOTO9260
9200 CLOSE1:EN=ST
9210 IF EN=0 OR EN=64 THEN 9260
9220 PRINTLEFT$(CD$,20)BL$
9230 PRINTLEFT$(CD$,20)SPC(8)"Wtape error."
9240 GOSUB8100
9260 RETURN

Auffallend an dieser Laderoutine ist, dass zahlreiche Programmzeilen keine Funktion haban und wohl nur während der Entwicklungs- und Testphase benötigt wurden; der Ladevorgang hätte sich also beschleunigen lassen, indem man sie vor dem Zusammenstellen der Endversion entfernt hätte. So werden die in Zeile 10―12 definierten Variablen während des Ladens nicht verwendet, und die Programmzeilen ab Zeilennummer 8000 sind unerreichbar und somit überflüssig.