FantasyFive/Laderoutine2
<< 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.