PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #2426)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “LORD OF THE FLIES 1 OF 2 (#2427 ALSO)”

You're studying LORD OF THE FLIES by William Golding.  They say
it's a classic, that it's a statement about society.  You find it to be
an interesting, sometimes boring, sometimes fascinating, sometimes you-
can-see-yourself-in-the-character sort of book.  What is Golding really
saying?

The author of the shareware programs MACBETH and ROMEO AND JULIET sheds
some more light for the high school English literature student.  In a
captivating way and from many angles, he draws the student into the
story, familiarizes the reader with the characters, plot, and themes,
and leaves the student with a new comprehension of THE LORD OF THE
FLIES.

BOULDER.BAS

10 ON ERROR GOTO 15000
20 KEY 15,CHR$(&H4) + CHR$(70)
30 KEY 16,CHR$(&H44) + CHR$(70)
40 KEY(15) ON:KEY(16) ON
50 ON KEY(15) GOSUB 16000:ON KEY(16) GOSUB 16000
55 RANDOMIZE TIMER
60 OPEN "config.lof" FOR INPUT AS #1
70 INPUT #1,SPEED,FG,BG,MC,DD$
75 IF RIGHT$(DD$,1)<>"\" THEN DD$=DD$+"\"
80 CLOSE
90 DIM WD$(60),ROCK%(200)
100 SCREEN 0:WIDTH 80:COLOR FG,0,0:CLS
110 SCREEN ,,1,0:COLOR FG,BG:CLS:LOCATE 3,27:COLOR BG,FG:PRINT "BOULDER MENU HELP SCREEN";
120 LOCATE 6,10:COLOR FG,BG:PRINT "Use the arrow keys to move the high-lighted bar";
130 LOCATE 7,10:PRINT "up and down the menu options.";
140 LOCATE 10,10:PRINT "If you are using the arrow keys on the";
150 LOCATE 11,10:PRINT "number key-pad, be sure NUM LOCK is off.";
160 LOCATE 14,10:PRINT "Use the <Enter> key to select the high-lighted option.";
170 LOCATE 25,30:COLOR BG,FG:PRINT " ANY KEY TO CONTINUE ";
180 SCREEN ,,0,0
200 CO=0:RESTORE:FOR J=1 TO 60:READ WD$(J):NEXT:FOR J=1 TO 10:READ XPOS(J),YPOS(J):NEXT:SCREEN 0:WIDTH 80
205 M$(0)="BOULDER MENU"
210 M$(1)="PLAY THE GAME":M$(2)="INSTRUCTIONS":M$(3)="RETURN TO MAIN MENU"
240 NM=3
250 GOSUB 5000
260 CM=0
270 ON M GOTO 300,650,550
300 CO=CO+1:IF CO>60 THEN CO=0:RESTORE:GOTO 200
310 GOSUB 580:GOSUB 790
320 L=LEN(W$):LOCATE 21,27-L
330 FOR J=1 TO L:PRINT  "_ ";:SOUND 40,1/4:SOUND 32767,2:SOUND 32767,1:SOUND 50,0:NEXT
340 NL=0:NH=0:S$="":TR$="":LT$=""
350 IF NL=L OR NH=5 THEN 450
360 GOSUB 820
370 X=27-L:LOCATE 21,X:R=0
380 FOR I=1 TO L:X=X+2
390 IF G$=MID$(W$,I,1) THEN PRINT  G$;" ";:NL=NL+1:R=1:GOTO 410
400 TR$=TR$+G$:LOCATE 21,X
410 NEXT
420 IF R=1 THEN GOSUB 910
430 IF R=1 THEN 350
440 NH=NH+1:GOSUB 1140:GOTO 350
450 GOSUB 1350:LOCATE 24,2:IF NH=5 THEN  GOSUB 1010:GOTO 470
460 GOSUB 1370
470 GOSUB 1350 :LOCATE 24,13:PRINT "PLAY AGAIN?   Y/N";
480 K$=INKEY$:IF K$="" THEN 480
490 IF K$="Y" OR K$="y" THEN 300
500 IF K$<>"N" AND K$<>"n" THEN BEEP:GOTO 470
510 GOTO 200
550 CLS:LOCATE 10,10:PRINT "Just a moment...";:RUN "lof"
580 SCREEN 0,0,0:SCREEN 1,0:COLOR 0,1
590 DEF SEG = &HB800:F$=DD$+"rock":BLOAD F$,0
600 GET (247,2)-(288,35),ROCK%
610 PUT (247,2),ROCK%,PRESET
620 GET (247,2)-(288,35),ROCK%
630 PUT (247,2),ROCK%,PRESET
640 RETURN
650 WIDTH 80:COLOR FG,BG:CLS:T$="*** INSTRUCTIONS ***"
660 LOCATE 1,31
670 PRINT T$
690 LOCATE 3,1:PRINT "The tribe have stolen Piggy's glasses and he and Ralph have gone to the tribe's headquarters at Castle Rock to demand them back."
700 PRINT "However the tribe are hostile and threaten to roll a huge boulder down onto     Piggy as he argues with them."
710 PRINT:PRINT "You can save Piggy, before Roger gives the boulder its final shove, by guessing the letters in the mystery word, but be warned - if you guess wrongly, the rock rolls ever closer!"
720 PRINT "You have five chances to guess the word,before Piggy is killed so choose wisely."
730 PRINT:PRINT "One clue - the mystery word will have something to do with the novel, perhaps   the name of a character, a place or a theme."
740 PRINT:PRINT:PRINT "Remember, the fate of a true, wise friend is in your hands...";
750 LOCATE 21,30:PRINT "GOOD LUCK....."
760 LOCATE 25,30:PRINT "ANY KEY TO CONTINUE";
770 K$=INKEY$:IF K$="" THEN 770
780 GOTO 200
790 X=INT(RND(1)*60)+1:IF WD$(X)="" THEN 790
800 W$=WD$(X):WD$(X)=""
810 RETURN
820 GOSUB 1350:LOCATE 24,13:PRINT "GUESS A LETTER";
830 G$=INKEY$:IF G$="" THEN 830
840 IF G$="" THEN 830
850 IF G$=CHR$(27) THEN 510
860 AC=ASC(G$):IF AC>90 THEN G$=CHR$(AC-32)
870 FOR J=1 TO LEN(TR$)
880 IF G$=MID$(TR$,J,1) THEN BEEP:GOTO 830
890 NEXT
900 RETURN
910 IF NL=L THEN RETURN
920 GOSUB 1350
930 K=INT(RND(1)*4)+1:ON K GOTO 940,950,960,970
940 T$="Good guess!":GOTO 980
950 T$="The conch protects me.":GOTO 980
960 T$="Saved from the rock again!":GOTO 980
970 T$="Keep it up!"
980 H=INT((40-LEN(T$))/2):LOCATE 24,H
990 FOR J=1 TO LEN(T$):PRINT MID$(T$,J,1);:SOUND 45,1/2:NEXT
1000 SOUND 32767,22:SOUND 32767,1:SOUND 50,0:RETURN
1010 REM
1020 GOSUB 1350
1030 LOCATE 24,12:PRINT "CORRECT ANSWER WAS..";
1040 Z=0:V=-1
1050 FOR K=1 TO 10:Z=Z-V:COLOR 0,Z:SOUND  100,2:NEXT:COLOR 0,1
1060 FOR K=1 TO 3
1070 LOCATE 21,27-L
1080 FOR J=1 TO L
1090 PRINT MID$(W$,J,1)" ";:SOUND 65,1/2
1100 SOUND 32767,2:SOUND 32767,1:SOUND 50,0:NEXT
1110 SOUND 32767,13:SOUND 32767,1:SOUND 50,0:LOCATE 21,26-L:PRINT SPC(L*2):NEXT
1120 LOCATE 21,26-L:FOR J=1 TO L:PRINT MID$(W$,J,1)" ";:NEXT
1130 RETURN
1140 LT$=LT$+G$+" "
1150 LOCATE NH*2+1,5:PRINT G$;
1160 ON NH GOTO 1170,1180,1190,1200,1210
1170 PUT (247,2),ROCK%,OR:PUT (212,13),ROCK%,>=:GOTO 1230
1180 PUT (212,13),ROCK%,OR:PUT (195,21),ROCK%,>=:GOTO 1230
1190 PUT (195,21),ROCK%,OR:PUT (180,23),ROCK%,>=:GOTO 1230
1200 PUT (180,23),ROCK%,OR:PUT (168,28),ROCK%,>=:GOTO 1230
1210 PUT (168,28),ROCK%,OR:FOR X=1 TO 10:PUT (XPOS(X),YPOS(X)),ROCK%
1220 SOUND 7*(11-X)+30,2:PUT (XPOS(X),YPOS(X)),ROCK%:NEXT:PUT (12,132),ROCK%,PRESET:GOTO 1250
1230 FR=(15-NH)*12
1240 FOR K=FR TO FR-50 STEP-1:SOUND K,1/4:NEXT
1250 COLOR ,0:SOUND 32767,2:SOUND 60,2:COLOR ,1
1260 J= INT(RND(1)*4)+1
1270 ON J GOTO 1290,1300,1310,1320
1280 GOSUB 1350
1290 T$="I've got the conch!":GOTO 1330
1300 T$="That rock is moving!":GOTO 1330
1310 T$="Help me, Ralph!":GOTO 1330
1320 T$="I need my glasses."
1330 H=INT((40-LEN(T$))/2):LOCATE 24,H:PRINT T$;:SOUND 32767,22:SOUND 32767,1:SOUND 50,0
1340 RETURN
1350 LOCATE 24,2:FOR J=1 TO 38:PRINT " ";:NEXT
1360 RETURN
1370 LOCATE 24,16
1380 PRINT "CORRECT!";
1390 PLAY "t100mfo2l16cce8g>c4"
1400 LOCATE 21,15:PRINT SPACE$(L*2+2);
1410 PLAY "mfp16"
1420 FOR K=1 TO 3
1430 LOCATE 21,27-L
1440 FOR J=1 TO L
1450 PRINT MID$(W$,J,1)" ";:SOUND 65,1/2
1460 SOUND 32767,2:SOUND 32767,1:SOUND 50,0:NEXT
1470 SOUND 32767,13:SOUND 32767,1:SOUND 50,0:LOCATE 21,27-L:PRINT SPC(L*2):NEXT
1480 LOCATE 21,27-L:FOR J=1 TO L:PRINT MID$(W$,J,1)" ";:SOUND 65,1/2:SOUND 32767,2:SOUND 32767,1:SOUND 50,0:NEXT
1490 RETURN
1500 DATA RALPH,GOLDING,JUNGLE,PIGGY,FLIES,FRUIT
1510 DATA SIMON,ISLAND,PIGS,JACK,ROCKS,CASTLE
1520 DATA ROGER,LAGOON,CAUSEWAY,SAMNERIC,REEF,BEACH
1530 DATA CONCH,FIRE,BEAST,SPECTACLES,MASK,TUBE
1540 DATA MEAT,CHANT,MAURICE,JOHNNY,HENRY,ROBERT
1550 DATA SHIP,PALMS,HUNTERS,CHOIR,SHELTERS,DANCE
1560 DATA PILOT,PARACHUTE,ASSEMBLY,HUTS,DARKNESS,EVIL
1570 DATA LITTLUN,TRIBE,DEATH,FEAR,RESCUE,MOUNTAIN
1580 DATA SIGNAL,CHIEF,SCAR,COURAGE,HEAT,ADVENTURE
1590 DATA NOVEL,VIOLENCE,KILL,BLOOD,WILFRED,CRUISER
1600 DATA 156,37,146,46,136,53,126,64,116,71
1610 DATA 96,79,84,94,72,94,60,90,48,100
1620 RETURN
1630 CLS:PRINT "AN ERROR HAS OCCURRED";
1640 PRINT "PLEASE CHECK THE DISK DRIVE"
1650 LOCATE 10,5:PRINT "ERROR NUMBER ";ERR;
1660 LOCATE 24,4:PRINT "PRESS ANY KEY";
1670 K$=INKEY$:IF K$="" THEN 1670
1680 RESUME 1690
1690 'RUN "lof"
1700 'RUN "lof"
1710 END
5000 HC=INT((80-LEN(M$(0)))/2)
5010 COLOR 2,0,0:CLS:LOCATE 1,1:PRINT CHR$(201);:LOCATE 1,80:PRINT CHR$(187);:LOCATE 24,1:PRINT CHR$(200);:LOCATE 24,80:PRINT CHR$(188);
5020 LOCATE 3,1:PRINT CHR$(199);:LOCATE 3,80:PRINT CHR$(182);:LOCATE 22,1:PRINT CHR$(199);:LOCATE 22,80:PRINT CHR$(182);
5030 LOCATE 2,1:PRINT CHR$(186);:LOCATE 2,80:PRINT CHR$(186);:LOCATE 23,1:PRINT CHR$(186);:LOCATE 23,80:PRINT CHR$(186);
5040 LOCATE 1,2:PRINT STRING$(78,205);:LOCATE 3,2:PRINT STRING$(78,196);:LOCATE 22,2:PRINT STRING$(78,196);:LOCATE 24,2:PRINT STRING$(78,205);
5050 FOR X=4 TO 21:LOCATE X,1:PRINT CHR$(186);:NEXT:FOR X=4 TO 21:LOCATE X,80:PRINT CHR$(186);:NEXT
5060 COLOR 0,2:LOCATE 2,HC-5:PRINT "     ";M$(0);"     ";
5070 COLOR 6,0:LOCATE 25,32:PRINT "Press H for Help";
5080 HJ=NM*2+3
5090 COLOR 7,0
5100 FOR J=5 TO HJ STEP 2:M=(J-3)/2:LOCATE J,27:PRINT M$(M);:NEXT
5110 LOCATE 23,18
5120 COLOR 0,2
5130 PRINT "     USE ARROW KEYS AND <ENTER> TO SELECT     ";
5140 COLOR 7,0
5150 J=5:M=1:K=HJ:GOSUB 5280
5160 IF CM=1 THEN FOR CL=200 TO 120 STEP -5:SOUND CL,1/4:NEXT:RETURN
5170  GOSUB 5190
5180 GOTO 5160
5190 K$=INKEY$:IF K$="" THEN 5190
5200 K=J
5210 IF LEN(K$)=1 THEN 5240
5220 IF RIGHT$(K$,1)=CHR$(72) OR RIGHT$(K$,1)=CHR$(75) THEN J=J-2:IF J=3 THEN J=HJ
5230 IF RIGHT$(K$,1)=CHR$(77) OR RIGHT$(K$,1)=CHR$(80) THEN J=J+2:IF J=HJ+2 THEN J=5
5240 IF K$="h" OR K$="H" THEN GOSUB 5600
5250 IF K$=CHR$(13) THEN CM=1:RETURN
5260 SOUND 255,1
5270 M=(J-3)/2
5280 N=(K-3)/2
5290 LOCATE K,27:PRINT M$(N);
5300 COLOR 0,7
5310 LOCATE J,27:PRINT M$(M);
5320 COLOR 7,0
5330 RETURN
5340 REM *** SCREEN CLEAR ***
5350 CLS:RETURN
5500 GOSUB 5350
5510 LOCATE 10,10:PRINT "LOADING..."
5520 LOCATE 13,13:PRINT "PLEASE WAIT..."
5530 RETURN
5600 SCREEN ,,,1
5610 X$=INKEY$:IF X$="" THEN 5610
5620 SCREEN ,,,0:RETURN
14998 END
14999 'ERROR HANDLING
15000 SCREEN 0,0,0:WIDTH 80:COLOR 7,0,0:CLS
15010 LOCATE 1,30:PRINT "*** ERROR ***";
15020 IF ERR=27 THEN GOSUB 15200:GOTO 15130
15030 IF ERR=53 THEN GOSUB 15300:GOTO 15130
15040 IF ERR=70 THEN GOSUB 15400:GOTO 15130
15050 IF ERR=71 THEN GOSUB 15500:GOTO 15130
15060 IF ERR=75 OR ERR=76 THEN GOSUB 15600:GOTO 15130
15070 LOCATE 10,10:PRINT "Unexpected error"
15080 LOCATE 12,10:PRINT "Note the following information";
15090 LOCATE 14,10:PRINT "Error number ";ERR;
15100 LOCATE 16,10:PRINT "Line Number ";ERL;
15110 LOCATE 18,10:PRINT "Also remember what you were doing when the error occurred.";
15120 LOCATE 19,10:PRINT "If this error continues, call 4695784 for help."
15130 LOCATE 23,10:PRINT "ANY KEY TO CONTINUE OR <ESC> TO RETURN TO MAIN MENU";
15140 K$=INKEY$:IF K$="" THEN 15140
15150 RESUME 15160
15160 CLS:LOCATE 10,10:PRINT "Just a moment...";
15170 RUN "lof"
15200 LOCATE 4,1:PRINT "Printer error. Your printer must be loaded with paper and be turned on.";
15210 RETURN
15300 LOCATE 4,1:PRINT "Can't find the file."
15310 LOCATE 5,1:PRINT "Check that the correct disk is in Drive B and use the SETUP programme to set thecorrect Drive and Directory for the data files.";
15320 LOCATE 7,1:PRINT "If the error persists, the file may have been corrupted. Recopy it from your    back-up disk.";
15330 RETURN
15400 LOCATE 4,1:PRINT "Your diskette is write-protected.";
15410 LOCATE 6,1:PRINT "Remove the write-protect tab and try this programme again.";
15420 RETURN
15500 LOCATE 4,1:PRINT "Disk Drive Error";
15510 LOCATE 6,1:PRINT "Check that the drive door is shut and the correct disk is in the drive.:;
15520 RETURN
15600 LOCATE 4,1:PRINT "DOS Path error";
15610 LOCATE 6,1:PRINT "Run the SETUP programme from the main menu to select the correct drive and      directory.";
15620 RETURN
16000 SCREEN 0:CLS:RUN "LOF"

COMPET.BAS

2 'ON ERROR GOTO 15000
4 KEY 15,CHR$(&H4) + CHR$(70)
5  KEY 16,CHR$(&H44) + CHR$(70)
6 KEY(15) ON:KEY(16) ON
7 ON KEY(15) GOSUB 16000
8 ON KEY(16) GOSUB 16000
20 OPEN "config.lof" FOR INPUT AS #1
30 INPUT #1,SPEED,FG,BG,MC,DD$
40 CLOSE
50 IF RIGHT$(DD$,1)<>"\" THEN DD$=DD$+"\"
90 DIM T$(4,20),NL$(20),NL(20)
100 F$="code":GOTO 4000
2000 OB=FG:IF LEFT$(TEXT$,1)="*" THEN FG=15:TEXT$=RIGHT$(TEXT$,LEN(TEXT$)-1)
2040 COLOR FG,BG
2050 L=LEN(TEXT$):IF L<63 THEN LOCATE ,10:PRINT TEXT$:FG=OB:RETURN
2060 NL=INT(L/62)
2070 FOR J=1 TO NL+1
2080 L=LEN(TEXT$):IF L<63 THEN TEXT$(J)=TEXT$:GOTO 2170
2090 N=62
2100 X$=MID$(TEXT$,N+1,1)
2110 IF X$=" " THEN TEXT$(J)=LEFT$(TEXT$,62):TEXT$=RIGHT$(TEXT$,L-63):GOTO 2170
2120 IF MID$(TEXT$,62,1)=" " THEN TEXT$(J)=LEFT$(TEXT$,62):TEXT$=RIGHT$(TEXT$,L-62):GOTO 2170
2130 N=N-1
2140 X$=MID$(TEXT$,N,1)
2150 IF X$=" " THEN TEXT$(J)=LEFT$(TEXT$,N):TEXT$=RIGHT$(TEXT$,L-N):GOTO 2170
2160 GOTO 2130
2170 NEXT
2180 FOR J=1 TO NL+1
2190 LOCATE ,10:PRINT TEXT$(J)
2200 NEXT
2210 FG=OB:RETURN
4000 CLS:LOCATE 10,10:PRINT "Loading Data...";:LOCATE 13,13:PRINT "Please Wait...";:SCREEN ,,1,0:CLS:LOCATE 10,10:PRINT "Loading Data...";:LOCATE 13,13:PRINT "Please Wait...";
4002 LC=INT((80-LEN(N$))/2)
4005 F$=DD$+F$:OPEN F$ FOR INPUT AS #2
4008 INPUT #2,NS$:NS=VAL(NS$)
4010 FOR J=0 TO NS-1
4020 INPUT #2,NL$(J):NL(J)=VAL(NL$(J))
4030 FOR K=0 TO NL(J)-1
4040 INPUT #2,T$(J,K)
4050 NEXT:NEXT:CLOSE
4070 SCREEN ,,1:CLS:SCREEN ,,0,1:CLS:DEF SEG=&HB800:BLOAD"screen",0
4080 COLOR BG,FG:LOCATE 5,LC:PRINT N$:COLOR 12,0:LOCATE 2,70:PRINT "1";:LOCATE ,76:PRINT NS;:LOCATE  7,10
4090 FOR K=0 TO NL(0)
4100 TEXT$=T$(0,K)
4110 GOSUB 2000:NEXT
4120 SCREEN ,,1,0
4130 DEF SEG =&HB800:BLOAD "screen",&H1000
4140 LOCATE 5,LC:COLOR 14,12:PRINT N$;:COLOR 12,0:LOCATE 2,70:PRINT "2";:LOCATE ,76:PRINT NS;
4150 LOCATE 7,10
4160 FOR K=0 TO NL(1)
4170 TEXT$=T$(1,K):GOSUB 2000
4180 NEXT
4190 PAGE=1:SCR=1:PPAGE=0:FPAGE=2
4200 DEF SEG=0:POKE 1050,PEEK(1052):DEF SEG
4210 K$=INKEY$:IF K$="" THEN 4210
4215 IF K$="y" OR K$="Y" THEN 5000
4220 IF K$=CHR$(27) THEN SCREEN ,,0,0:COLOR FG,BG:CLS:LOCATE 10,10:PRINT "Just a moment...";:RUN "lof"
4230 IF RIGHT$(K$,1)=CHR$(81) THEN GOSUB 4260
4240 IF RIGHT$(K$,1) = CHR$(73) THEN GOSUB 4350
4250 GOTO 4210
4260 IF SCR=NS   THEN BEEP:RETURN
4270 SCREEN ,,,PAGE
4280 PAGE=PAGE+1:SCR=SCR+1
4290 IF PAGE >3 THEN PAGE=PAGE MOD 4
4300 FPAGE=FPAGE+1:IF FPAGE=4 THEN FPAGE=0
4310 PPAGE=PPAGE+1:IF PPAGE=4 THEN PPAGE=0
4320 DN=1
4330 GOSUB 4440
4340 RETURN
4350 IF SCR=1 THEN BEEP:RETURN
4360 PPPAGE=PPAGE-1:IF PPPAGE=-1 THEN PPPAGE=3
4370 SCREEN ,,,(PPPAGE)
4380 PAGE=PAGE-1:SCR=SCR-1
4390 IF PAGE<0 THEN PAGE=3
4400 FPAGE=FPAGE-1:IF FPAGE=-1 THEN FPAGE=3
4410 PPAGE=PPAGE-1:IF PPAGE=-1 THEN PPAGE=3
4420 GOSUB 4530
4430 RETURN
4440 SCREEN,,PAGE,PPAGE
4450 IF SCR=NS THEN 4520
4460 DEF SEG=&HB800:BLOAD "screen",&H1000*PAGE
4470 LOCATE 5,LC:COLOR 14,12:PRINT N$;:LOCATE 2,69:COLOR 12,0:PRINT SCR+1;:LOCATE ,76:PRINT NS;
4480 LOCATE 7,10
4490 FOR K=0 TO NL(SCR)
4500 TEXT$=T$(SCR,K):GOSUB 2000
4510 NEXT
4520 RETURN
4530 PPPAGE=PPAGE-1:IF PPPAGE=-1 THEN PPPAGE=3
4540 SCREEN ,,PPPAGE,PPAGE
4550 IF SCR=1 THEN 4620
4560 DEF SEG=&HB800:BLOAD "screen",&H1000*PPPAGE
4570 LOCATE 5,LC:COLOR 14,12:PRINT N$;:LOCATE 2,69:COLOR 12,0:PRINT SCR-1;:LOCATE ,76:PRINT NS;
4580 LOCATE 7,10
4590 FOR K=0 TO NL(SCR-2)
4600 TEXT$=T$(SCR-2,K):GOSUB 2000
4610 NEXT
4620 RETURN
5000 OPEN "check" FOR INPUT AS #3
5010 J=EOF(3):IF J<>0 THEN 5050
5020 CLOSE:SCREEN ,,0,0:COLOR FG,BG:CLS:LOCATE 10,10:PRINT "Code solution already confirmed.";:LOCATE 13,10:PRINT "Any key to return to Main Menu.";
5030 K$=INKEY$:IF K$="" THEN 5030
5040 CLS:LOCATE 10,10:PRINT "Just a moment...";:RUN "lof"
5050 CLOSE:OPEN "check" FOR OUTPUT AS #3
5060 WRITE #3,COMPLETED:CLOSE
5070 SCREEN ,,0,0:COLOR FG,BG:CLS:LOCATE 10,10:PRINT "Writing confirmation to disk.";:LOCATE 13,10:PRINT "Any key to return to Main Menu.";
5080 K$=INKEY$:IF K$="" THEN 5080
5090 CLOSE:SCREEN ,,0,0:COLOR FG,BG:CLS:LOCATE 10,10:PRINT "Just a moment...";:RUN "lof"
15000 CLS
15010 PRINT "AN ERROR HAS OCCURRED.";
15015 LOCATE 5,5:PRINT "ERROR NUMBER ";ERR;
15020 LOCATE 10,1
15030 IF ERR=53 THEN PRINT "PLEASE MAKE SURE THE CORRECT DISKS ARE  IN THE DRIVES.";
15040 IF ERR=71 THEN PRINT "PLEASE CHECK THAT THE PROGRAMME DISK IS IN DRIVE A, THE DATA DISK IS IN DRIVE B,AND THE DRIVE DOORS ARE SHUT.";
15060 IF ERR<>53 AND ERR<>70 AND ERR<>71 THEN PRINT  "UNEXPECTED ERROR";
15070 LOCATE 24,4:PRINT "ANY KEY TO RETURN TO MAIN MENU";
15080 K$=INKEY$:IF K$="" THEN 15080
15090 RESUME 15100
15100 RUN "lof"
16000 CLS:LOCATE 10,8:PRINT "TUT! TUT!":RUN "lof"

FILE2426.TXT

Disk No: 2426                                                           
Disk Title: Lord of the Flies 1 of 2 (#2427 also)                       
PC-SIG Version: S1                                                      
                                                                        
Program Title: Lord of the Flies                                        
Author Version: 1.0                                                     
Author Registration: $15.00; Site licence $60.00                        
Special Requirements: 512K RAM, CGA, and GWBASIC or BASICA.             
                                                                        
You're studying LORD OF THE FLIES by William Golding.  They say         
it's a classic, that it's a statement about society.  You find it to be 
an interesting, sometimes boring, sometimes fascinating, sometimes you- 
can-see-yourself-in-the-character sort of book.  What is Golding really 
saying?                                                                 
                                                                        
The author of the shareware programs MACBETH and ROMEO AND JULIET sheds 
some more light for the high school English literature student.  In a   
captivating way and from many angles, he draws the student into the     
story, familiarizes the reader with the characters, plot, and themes,   
and leaves the student with a new comprehension of THE LORD OF THE      
FLIES.                                                                  
                                                                        
PC-SIG                                                                  
1030D East Duane Avenue                                                 
Sunnyvale  Ca. 94086                                                    
(408) 730-9291                                                          
(c) Copyright 1989 PC-SIG, Inc.                                         

GO.TXT

╔═════════════════════════════════════════════════════════════════════════╗
║            <<<<  PC-SIG Disk #2426  LORD OF THE FLIES  >>>>             ║
║                      (Disk 1 of 2, #2427 also)                          ║
╠═════════════════════════════════════════════════════════════════════════╣
║ To print the author's documentation and installation instructions,      ║
║                type:  COPY MANUAL.TXT PRN (press Enter)                 ║
║                                                                         ║
║        (You may want to first type:  TYPE README.TXT (Enter))           ║
║                                                                         ║
║ To run the program, first run a version of Basic.  Next, type:          ║
║                       RUN "LOF" (press Enter)                           ║
║                                                                         ║
║ To exit back to DOS, type:  SYSTEM (press Enter)                        ║
║                                                                         ║
║                                                                         ║
║                                           Copyright 1990, PC-SIG, Inc.  ║
╚═════════════════════════════════════════════════════════════════════════╝

INTROD.BAS

10 ON ERROR GOTO 15000
20 KEY 15,CHR$(&H4) + CHR$(70)
30 KEY 16,CHR$(&H44) + CHR$(70)
40 KEY(15) ON:KEY(16) ON
50 ON KEY(15) GOSUB 16000:ON KEY(16) GOSUB 16000
60 OPEN "config.lof" FOR INPUT AS #1
70 INPUT #1,SPEED,FG,BG,MC,DD$
80 CLOSE
85 IF RIGHT$(DD$,1)<>"\" THEN DD$=DD$+"\"
90 DIM T$(5,20),NL$(20),NL(20)
100 F$="intro":GOTO 4000
2000 OB=FG:IF LEFT$(TEXT$,1)="*" THEN FG=15:TEXT$=RIGHT$(TEXT$,LEN(TEXT$)-1)
2040 COLOR FG,BG
2050 L=LEN(TEXT$):IF L<63 THEN LOCATE ,10:PRINT TEXT$:FG=OB:RETURN
2060 NL=INT(L/62)
2070 FOR J=1 TO NL+1
2080 L=LEN(TEXT$):IF L<63 THEN TEXT$(J)=TEXT$:GOTO 2170
2090 N=62
2100 X$=MID$(TEXT$,N+1,1)
2110 IF X$=" " THEN TEXT$(J)=LEFT$(TEXT$,62):TEXT$=RIGHT$(TEXT$,L-63):GOTO 2170
2120 IF MID$(TEXT$,62,1)=" " THEN TEXT$(J)=LEFT$(TEXT$,62):TEXT$=RIGHT$(TEXT$,L-62):GOTO 2170
2130 N=N-1
2140 X$=MID$(TEXT$,N,1)
2150 IF X$=" " THEN TEXT$(J)=LEFT$(TEXT$,N):TEXT$=RIGHT$(TEXT$,L-N):GOTO 2170
2160 GOTO 2130
2170 NEXT
2180 FOR J=1 TO NL+1
2190 LOCATE ,10:PRINT TEXT$(J)
2200 NEXT
2210 FG=OB:RETURN
4000 CLS:LOCATE 10,10:PRINT "Loading Data...";:LOCATE 13,13:PRINT "Please Wait...";:SCREEN ,,1,0:CLS:LOCATE 10,10:PRINT "Loading Data...";:LOCATE 13,13:PRINT "Please Wait...";
4002 LC=INT((80-LEN(N$))/2)
4005 F$=DD$+F$:OPEN F$ FOR INPUT AS #2
4008 INPUT #2,NS$:NS=VAL(NS$)
4010 FOR J=0 TO NS-1
4020 INPUT #2,NL$(J):NL(J)=VAL(NL$(J))
4030 FOR K=0 TO NL(J)-1
4040 INPUT #2,T$(J,K)
4050 NEXT:NEXT:CLOSE
4070 SCREEN ,,1:CLS:SCREEN ,,0,1:CLS:DEF SEG=&HB800:BLOAD"screen",0
4080 COLOR BG,FG:LOCATE 5,LC:PRINT N$:COLOR 12,0:LOCATE 2,70:PRINT "1";:LOCATE ,76:PRINT NS;:LOCATE  7,10
4090 FOR K=0 TO NL(0)
4100 TEXT$=T$(0,K)
4110 GOSUB 2000:NEXT
4120 SCREEN ,,1,0
4130 DEF SEG =&HB800:BLOAD "screen",&H1000
4140 LOCATE 5,LC:COLOR 14,12:PRINT N$;:COLOR 12,0:LOCATE 2,70:PRINT "2";:LOCATE ,76:PRINT NS;
4150 LOCATE 7,10
4160 FOR K=0 TO NL(1)
4170 TEXT$=T$(1,K):GOSUB 2000
4180 NEXT
4190 PAGE=1:SCR=1:PPAGE=0:FPAGE=2
4200 DEF SEG=0:POKE 1050,PEEK(1052):DEF SEG
4210 K$=INKEY$:IF K$="" THEN 4210
4220 IF K$=CHR$(27) THEN SCREEN ,,0,0:COLOR FG,BG:CLS:LOCATE 10,10:PRINT "Just a moment...";:RUN "lof"
4230 IF RIGHT$(K$,1)=CHR$(81) THEN GOSUB 4260
4240 IF RIGHT$(K$,1) = CHR$(73) THEN GOSUB 4350
4250 GOTO 4210
4260 IF SCR=NS   THEN BEEP:RETURN
4270 SCREEN ,,,PAGE
4280 PAGE=PAGE+1:SCR=SCR+1
4290 IF PAGE >3 THEN PAGE=PAGE MOD 4
4300 FPAGE=FPAGE+1:IF FPAGE=4 THEN FPAGE=0
4310 PPAGE=PPAGE+1:IF PPAGE=4 THEN PPAGE=0
4320 DN=1
4330 GOSUB 4440
4340 RETURN
4350 IF SCR=1 THEN BEEP:RETURN
4360 PPPAGE=PPAGE-1:IF PPPAGE=-1 THEN PPPAGE=3
4370 SCREEN ,,,(PPPAGE)
4380 PAGE=PAGE-1:SCR=SCR-1
4390 IF PAGE<0 THEN PAGE=3
4400 FPAGE=FPAGE-1:IF FPAGE=-1 THEN FPAGE=3
4410 PPAGE=PPAGE-1:IF PPAGE=-1 THEN PPAGE=3
4420 GOSUB 4530
4430 RETURN
4440 SCREEN,,PAGE,PPAGE
4450 IF SCR=NS THEN 4520
4460 DEF SEG=&HB800:BLOAD "screen",&H1000*PAGE
4470 LOCATE 5,LC:COLOR 14,12:PRINT N$;:LOCATE 2,69:COLOR 12,0:PRINT SCR+1;:LOCATE ,76:PRINT NS;
4480 LOCATE 7,10
4490 FOR K=0 TO NL(SCR)
4500 TEXT$=T$(SCR,K):GOSUB 2000
4510 NEXT
4520 RETURN
4530 PPPAGE=PPAGE-1:IF PPPAGE=-1 THEN PPPAGE=3
4540 SCREEN ,,PPPAGE,PPAGE
4550 IF SCR=1 THEN 4620
4560 DEF SEG=&HB800:BLOAD "screen",&H1000*PPPAGE
4570 LOCATE 5,LC:COLOR 14,12:PRINT N$;:LOCATE 2,69:COLOR 12,0:PRINT SCR-1;:LOCATE ,76:PRINT NS;
4580 LOCATE 7,10
4590 FOR K=0 TO NL(SCR-2)
4600 TEXT$=T$(SCR-2,K):GOSUB 2000
4610 NEXT
4620 RETURN
14998 END
14999 'ERROR HANDLING
15000 SCREEN 0,0,0:WIDTH 80:COLOR 7,0,0:CLS
15010 LOCATE 1,30:PRINT "*** ERROR ***";
15020 IF ERR=27 THEN GOSUB 15200:GOTO 15130
15030 IF ERR=53 THEN GOSUB 15300:GOTO 15130
15040 IF ERR=70 THEN GOSUB 15400:GOTO 15130
15050 IF ERR=71 THEN GOSUB 15500:GOTO 15130
15060 IF ERR=75 OR ERR=76 THEN GOSUB 15600:GOTO 15130
15070 LOCATE 10,10:PRINT "Unexpected error"
15080 LOCATE 12,10:PRINT "Note the following information";
15090 LOCATE 14,10:PRINT "Error number ";ERR;
15100 LOCATE 16,10:PRINT "Line Number ";ERL;
15110 LOCATE 18,10:PRINT "Also remember what you were doing when the error occurred.";
15120 LOCATE 19,10:PRINT "If this error continues, call 4695784 for help."
15130 LOCATE 23,10:PRINT "ANY KEY TO CONTINUE OR <ESC> TO RETURN TO MAIN MENU";
15140 K$=INKEY$:IF K$="" THEN 15140
15150 RESUME 15160
15160 CLS:LOCATE 10,10:PRINT "Just a moment...";
15170 RUN "lof"
15200 LOCATE 4,1:PRINT "Printer error. Your printer must be loaded with paper and be turned on.";
15210 RETURN
15300 LOCATE 4,1:PRINT "Can't find the file."
15310 LOCATE 5,1:PRINT "Check that the correct disk is in Drive B and use the SETUP programme to set thecorrect Drive and Directory for the data files.";
15320 LOCATE 7,1:PRINT "If the error persists, the file may have been corrupted. Recopy it from your    back-up disk.";
15330 RETURN
15400 LOCATE 4,1:PRINT "Your diskette is write-protected.";
15410 LOCATE 6,1:PRINT "Remove the write-protect tab and try this programme again.";
15420 RETURN
15500 LOCATE 4,1:PRINT "Disk Drive Error";
15510 LOCATE 6,1:PRINT "Check that the drive door is shut and the correct disk is in the drive.:;
15520 RETURN
15600 LOCATE 4,1:PRINT "DOS Path error";
15610 LOCATE 6,1:PRINT "Run the SETUP programme from the main menu to select the correct drive and      directory.";
15620 RETURN
16000 SCREEN 0:CLS:RUN "LOF"

ISLAND.BAS

10 ON ERROR GOTO 15000
20 KEY 15,CHR$(&H4) + CHR$(70)
30 KEY 16,CHR$(&H44) + CHR$(70)
40 KEY(15) ON:KEY(16) ON
50 ON KEY(15) GOSUB 16000:ON KEY(16) GOSUB 16000
55 RANDOMIZE TIMER
60 DIM RALPH%(200),TEMP%(4000)
65 OPEN "config.lof" FOR INPUT AS #1
70 INPUT #1,SPEED,FG,BG,MC,DD$
75 IF LEFT$(DD$,1)<>"\" THEN DD$=DD$+"\"
80 CLOSE
90 OPEN "check" FOR INPUT AS #1:IF EOF(1) THEN CLOSE:GOTO 100
95 DG=1:CLOSE
100 SCREEN 0:WIDTH 80:SCREEN ,,0,0:COLOR FG,0,0:CLS
110 SCREEN ,,1,0:COLOR FG,BG:CLS:LOCATE 3,29:COLOR BG,FG:PRINT "ISLAND MENU HELP SCREEN";
120 LOCATE 6,10:COLOR FG,BG:PRINT "Use the arrow keys to move the high-lighted bar";
130 LOCATE 7,10:PRINT "up and down the menu options.";
140 LOCATE 10,10:PRINT "If you are using the arrow keys on the";
150 LOCATE 11,10:PRINT "number key-pad, be sure NUM LOCK is off.";
160 LOCATE 14,10:PRINT "Use the <Enter> key to select the high-lighted option.";
170 LOCATE 25,30:COLOR BG,FG:PRINT " ANY KEY TO CONTINUE ";
180 SCREEN 0,,0,0:XX=INT(RND(1)*250)+20:YY=INT(RND(1)*130)+50
200 M$(0)="ISLAND MENU"
210 M$(1)="ISLAND (WEST)":M$(2)="ISLAND (EAST)":M$(3)="FULL VIEW"
220 M$(4)="NOTES":M$(5)="INSTRUCTIONS":M$(6)="RETURN TO MAIN MENU"
240 NM=6
250 GOSUB 5000
260 CM=0
270 ON M GOTO 300,400,500,600,700,800
300 SCREEN 1:CLS:LOCATE 10,5:PRINT "Just a moment...";
310 DEF SEG=&HB800:F$=DD$+"wisland":BLOAD F$,0:FLAG=0
320 GET (289,119)-(297,129),RALPH%
322 PUT (289,119),RALPH%,PRESET
324 GET (289,119)-(297,129),RALPH%
326 PUT (289,119),RALPH%,PRESET
330 X=289:Y=119:GOTO 1000
400 SCREEN 1:CLS:LOCATE 10,5:PRINT "Just a moment...";
410 DEF SEG=&HB800:F$=DD$+"eisland":BLOAD F$,0:FLAG=1
420 GET (289,119)-(297,129),RALPH%
422 PUT (289,119),RALPH%,PRESET
424 GET (289,119)-(297,129),RALPH%
425 LINE (289,119)-(297,129),3,BF
426 PUT (29,119),RALPH%
430 X=29:Y=119:GOTO 1000
500 SCREEN 1:CLS:LOCATE 10,5:PRINT "Just a moment...";
510 DEF SEG=&HB800:F$=DD$+"whole":BLOAD F$,0
520 K$=INKEY$:IF K$="" THEN 520
530 GOTO 100
600 F$="island":N$="THE ISLAND"
610 GOSUB 7000
620 CLS:GOTO 100
700 SCREEN 0:COLOR FG,BG:CLS
705 LOCATE 1,33:PRINT " INSTRUCTIONS ";
710 LOCATE 2,33:PRINT "==============";
715 LOCATE 4,1:PRINT "When you select the East or West end of the island, that area will be shown on  your screen, along with a blinking symbol for the character of Ralph."
720 PRINT "Use the cursor keys to move 'Ralph' around the island, or even off the edge ontothe new screen."
725 PRINT "At the top of your screen you will see instructions for speeding Ralph up,      selecting notes or enlargements of various locations, or going to an overall    view of the island."
730 PRINT "At any time, press <Esc> to leave the graphics screens and return to the Menu.":PRINT
735 PRINT "Once you have solved the Competition Code, you can use these screens to 'dig'   for buried treasure also."
740 LOCATE 25,24:COLOR BG,FG:PRINT " ANY KEY TO RETURN TO MENU ";
745 K$=INKEY$:IF K$="" THEN 745
750 GOTO 100
800 CLS:LOCATE 10,10:PRINT "Just a moment...";
810 RUN "lof"
1000 STP=1:Z=-4:KEY(11) ON:KEY(12) ON:KEY(13) ON:KEY(14) ON
1010 ON KEY(11) GOSUB 1500:ON KEY(12) GOSUB 1600:ON KEY (13) GOSUB 1700:ON KEY (14) GOSUB 1800
1020 P=POINT(X,Y):K$=INKEY$
1025 IF K$="S" OR K$="s" THEN STP=STP-Z:Z=-Z
1027 IF K$="D" OR K$="d" AND DG=1 THEN GOSUB 4000
1028 IF FOUND%=1 THEN FOUND%=0:K$=CHR$(27)
1030 IF K$=CHR$(27) THEN KEY(11) OFF:KEY(12) OFF:KEY (13) OFF:KEY (14) OFF:GOTO 100
1040 IF K$=CHR$(13) THEN GOSUB 2000
1045 IF K$="v" OR K$="V" THEN GOSUB 3600
1060 CO=CO+1:IF CO=SPEED*10 THEN GOSUB 1100:GOTO 1020
1070 GOTO 1020
1100 CO=0:KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF
1110 PUT (X,Y),RALPH%:FOR PA=1 TO SPEED*20:NEXT:PUT (X,Y),RALPH%
1120 KEY(11) ON:KEY(12) ON:KEY(13) ON:KEY(14) ON
1130 RETURN
1500 PUT (X,Y),RALPH%
1510 Y=Y-STP:IF Y<0 THEN Y=188
1520 PUT (X,Y),RALPH%
1530 FOR PA=1 TO SPEED*10:NEXT
1540 RETURN
1600 PUT (X,Y),RALPH%
1605 IF FLAG=1 AND X=0 THEN 1650
1610 X=X-STP:IF X<0 THEN X=0
1620 PUT (X,Y),RALPH%
1630 FOR PA=1 TO SPEED*10:NEXT
1640 RETURN
1650 F$=DD$+"wisland":BLOAD F$:FLAG=0
1660 PUT (289,119),RALPH%
1670 X=310:PUT (X,Y),RALPH%:RETURN
1700 PUT (X,Y),RALPH%
1705 IF FLAG=0 AND X=310 THEN 1750
1710 X=X+STP:IF X>310 THEN X=310
1720 PUT (X,Y),RALPH%
1730 FOR PA=1 TO SPEED*10:NEXT
1740 RETURN
1750 F$=DD$+"eisland":BLOAD F$:FLAG=1
1760 PUT (289,119),RALPH%
1770 X=0:PUT (X,Y),RALPH%:RETURN
1800 PUT (X,Y),RALPH%
1810 Y=Y+STP:IF Y>188 THEN Y=0
1820 PUT (X,Y),RALPH%
1830 FOR PA=1 TO SPEED*10:NEXT
1840 RETURN
2000 KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF:IF FLAG=1 THEN 2140
2005 IF X>89 AND X<161 AND Y>19 AND Y<66 THEN GOSUB 3300:RETURN 'mountain
2010 IF X>=0 AND X<91 AND Y>=0 AND Y<24 THEN RESTORE 10060:GOSUB 3000:RETURN 'title
2020 IF X>59 AND X<121 AND Y>154 AND Y<182 THEN GOSUB 3400:RETURN 'assembly
2030 IF X>144 AND X<171 AND Y>147 AND Y<184  THEN RESTORE 10040:GOSUB 3000:RETURN 'scar1
2040 IF X>184 AND X<198 AND Y>119 AND Y<158  THEN GOSUB 3000:RETURN 'scar2
2050 IF X>90 AND X<191 AND Y>=0 AND Y<20  THEN RESTORE 10030:GOSUB 3000:RETURN 'SEA
2060 IF X>=0 AND X<89 AND Y>23 AND Y<48 THEN RESTORE 10030:GOSUB 3000:RETURN 'SEA
2070 IF X>=0 AND X<31 AND Y>159  AND Y<189 THEN RESTORE 10030:GOSUB 3000:RETURN 'SEA
2080 IF X>31 AND X<53 AND Y>17 AND Y<199 THEN RESTORE 10030:GOSUB 3000:RETURN 'SEA
2090 IF X>52 AND X<113 AND Y>182 AND Y<199 THEN RESTORE:GOSUB 3000:RETURN 'SEA
2100 IF X>180 AND X<189 AND Y>63 AND Y<83 THEN RESTORE 10030:GOSUB 3000:RETURN
2110 IF X>190 AND X<320 AND Y>=0 AND Y<61 THEN RESTORE 10070:GOSUB 3000:RETURN 'BOOK
2130 RESTORE 10130:GOSUB 3000:RETURN
2140 IF X>139 AND X<271 AND Y>=0 AND Y<63 THEN RESTORE 10070:GOSUB 3000:RETURN 'book.
2150 IF X>=0 AND X<101 AND Y>=0 AND Y<29 THEN RESTORE 10060:GOSUB 3000:RETURN 'title
2160 IF X>=0 AND X<100 AND Y>28 AND Y<96 THEN RESTORE 10030:GOSUB 3000:RETURN 'Sea
2170 IF X>100 AND X<311 AND Y>=0 AND Y<116 THEN RESTORE 10030:GOSUB 3000:RETURN 'SEA
2180 IF X>=0 AND X<101 AND Y>95 AND Y<116 THEN RESTORE 10080:GOSUB 3000:RETURN 'RCOAST
2190 IF X>92 AND X<241 AND Y>114 AND Y<131 THEN RESTORE 10080:GOSUB 3000:RETURN 'RCOAST
2200 IF X>144 AND X<226 AND Y>129 AND Y<143 THEN RESTORE 10080:GOSUB 3000:RETURN 'RCOAST
2210 IF X>239 AND X<279 AND Y>142 AND Y<181 THEN GOSUB 3500:RETURN 'CROCK
2220 IF X>239 AND X<311 AND Y>114 AND Y<189 THEN RESTORE 10030:GOSUB 3000:RETURN 'SEA
2230 IF X>196 AND X<241 AND Y>143 AND Y<189 THEN RESTORE 10100:GOSUB 3000:RETURN 'FLATSTONY
2240 RESTORE 10130:GOSUB 3000:RETURN 'REST
3000 IF Y<100 THEN 3100
3010 GET (0,0)-(319,74),TEMP%:LINE (0,0)-(319,74),0,BF
3020 READ NL
3030 LOCATE 1,1:FOR J=1 TO NL:READ T$:PRINT T$:NEXT
3040 LOCATE 8,9:PRINT "ANY KEY TO CONTINUE";
3050 K$=INKEY$:IF K$="" THEN 3050
3060 PUT (0,0),TEMP%,PSET:RETURN
3100 GET (0,125)-(319,199),TEMP%:LINE (0,125)-(319,199),0,BF
3110 READ NL
3120 LOCATE 18,1:FOR J=1 TO NL:READ T$:PRINT T$:NEXT
3130 LOCATE 25,9:PRINT "ANY KEY TO CONTINUE";
3140 K$=INKEY$:IF K$="" THEN 3140
3150 PUT (0,125),TEMP%,PSET
3160 KEY(11) ON:KEY(12) ON:KEY(13) ON:KEY(14) ON:RETURN
3300 F$=DD$+"mountain"
3310 DEF SEG=&HB800:BLOAD F$,0
3320 K$=INKEY$:IF K$="" THEN 3320
3330 F$=DD$+"WISLAND"
3340 BLOAD F$,0
3350 PUT (289,119),RALPH%
3360 PUT (X,Y),RALPH%
3370 RETURN
3400 F$=DD$+"assembly"
3410 DEF SEG=&HB800:BLOAD F$,0
3420 K$=INKEY$:IF K$="" THEN 3420
3430 F$=DD$+"WISLAND"
3440 BLOAD F$,0
3450 PUT (289,119),RALPH%
3460 PUT (X,Y),RALPH%
3470 RETURN
3500 F$=DD$+"castle"
3510 DEF SEG=&HB800:BLOAD F$,0
3520 K$=INKEY$:IF K$="" THEN 3520
3530 F$=DD$+"eISLAND"
3540 BLOAD F$,0
3550 PUT (289,119),RALPH%
3560 PUT (X,Y),RALPH%
3570 RETURN
3600 F$=DD$+"whole"
3610 DEF SEG=&HB800:BLOAD F$,0
3620 K$=INKEY$:IF K$="" THEN 3620
3630 IF FLAG=1 THEN F$=DD$+"eISLAND"
3635 IF FLAG=0 THEN F$=DD$+"wISLAND"
3640 BLOAD F$,0
3650 PUT (289,119),RALPH%
3660 PUT (X,Y),RALPH%
3670 RETURN
4000 KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF
4010 GET (0,74)-(319,148),TEMP%:LINE (0,74)-(319,148),0,BF
4020 LINE (0,74)-(319,148),2,B
4030 LOCATE 11,10:PRINT "Digging for Treasure...";
4040 LOCATE 13,10:PRINT "Just a moment...";
4050 FOR J=1 TO 10:SOUND 40,2:LOCATE 14,10+J*2:PRINT "*";:FOR PA=1 TO SPEED*50:NEXT:NEXT
4070 IF ABS(XX-X)<=12 AND ABS(YY-Y)<=12 THEN 4120
4080 LOCATE 15,4:PRINT "Sorry, no treasure here today.";
4090 LOCATE 18,10:PRINT "ANY KEY TO RETURN TO PICTURE";
4100 K$=INKEY$:IF K$="" THEN 4100
4110 PUT (0,74),TEMP%,PSET:K$="":RETURN
4120 BEEP:FOR PA=1 TO SPEED*50:NEXT:BEEP:LOCATE 15,4:PRINT "I think we've hit something...";
4130 LOCATE 16,4:PRINT "Press <Enter> to see what it is.";
4140 K$=INKEY$:IF K$<>CHR$(13) THEN 4140
4150 DEF SEG=&HB800:F$=DD$+"treasure":BLOAD F$,0
4160 K$=INKEY$:IF K$="" THEN 4160
4170 FOUND%=1:KEY(11) ON:KEY(12) ON:KEY(13) ON:KEY(14) ON:RETURN
5000 HC=INT((80-LEN(M$(0)))/2)
5010 WIDTH 80:COLOR MC,0:LOCATE 1,1:PRINT CHR$(201);:LOCATE 1,80:PRINT CHR$(187);:LOCATE 24,1:PRINT CHR$(200);:LOCATE 24,80:PRINT CHR$(188);
5020 LOCATE 3,1:PRINT CHR$(199);:LOCATE 3,80:PRINT CHR$(182);:LOCATE 22,1:PRINT CHR$(199);:LOCATE 22,80:PRINT CHR$(182);
5030 LOCATE 2,1:PRINT CHR$(186);:LOCATE 2,80:PRINT CHR$(186);:LOCATE 23,1:PRINT CHR$(186);:LOCATE 23,80:PRINT CHR$(186);
5040 LOCATE 1,2:PRINT STRING$(78,205);:LOCATE 3,2:PRINT STRING$(78,196);:LOCATE 22,2:PRINT STRING$(78,196);:LOCATE 24,2:PRINT STRING$(78,205);
5050 FOR X=4 TO 21:LOCATE X,1:PRINT CHR$(186);:NEXT:FOR X=4 TO 21:LOCATE X,80:PRINT CHR$(186);:NEXT
5060 COLOR 0,MC:LOCATE 2,HC-5:PRINT "     ";M$(0);"     ";
5070 COLOR 6,0:LOCATE 25,32:PRINT "Press H for Help";
5080 HJ=NM*2+3
5090 COLOR 7,0
5100 FOR J=5 TO HJ STEP 2:M=(J-3)/2:LOCATE J,27:PRINT M$(M);:NEXT
5110 LOCATE 23,18
5120 COLOR 0,MC
5130 PRINT "     USE ARROW KEYS AND <ENTER> TO SELECT     ";
5140 COLOR 7,0
5150 J=5:M=1:K=HJ:GOSUB 5280
5160 IF CM=1 THEN FOR CL=200 TO 120 STEP -5:SOUND CL,1/4:NEXT:RETURN
5170  GOSUB 5190
5180 GOTO 5160
5190 K$=INKEY$:IF K$="" THEN 5190
5200 K=J
5210 IF LEN(K$)=1 THEN 5240
5220 IF RIGHT$(K$,1)=CHR$(72) OR RIGHT$(K$,1)=CHR$(75) THEN J=J-2:IF J=3 THEN J=HJ
5230 IF RIGHT$(K$,1)=CHR$(77) OR RIGHT$(K$,1)=CHR$(80) THEN J=J+2:IF J=HJ+2 THEN J=5
5240 IF K$="h" OR K$="H" THEN GOSUB 5600
5250 IF K$=CHR$(13) THEN CM=1:RETURN
5260 SOUND 255,1
5270 M=(J-3)/2
5280 N=(K-3)/2
5290 LOCATE K,27:PRINT M$(N);
5300 COLOR 0,7
5310 LOCATE J,27:PRINT M$(M);
5320 COLOR 7,0
5330 RETURN
5340 REM *** SCREEN CLEAR ***
5350 CLS:RETURN
5500 GOSUB 5350
5510 LOCATE 10,10:PRINT "LOADING..."
5520 LOCATE 13,13:PRINT "PLEASE WAIT..."
5530 RETURN
5600 SCREEN ,,,1
5610 X$=INKEY$:IF X$="" THEN 5610
5620 SCREEN ,,,0:RETURN
6000 OB=FG:IF LEFT$(TEXT$,1)="*" THEN FG=15:TEXT$=RIGHT$(TEXT$,LEN(TEXT$)-1)
6010 COLOR FG,BG
6020 L=LEN(TEXT$):IF L<63 THEN LOCATE ,10:PRINT TEXT$:FG=OB:RETURN
6030 NL=INT(L/62)
6040 FOR J=1 TO NL+1
6050 L=LEN(TEXT$):IF L<63 THEN TEXT$(J)=TEXT$:GOTO 6140
6060 N=62
6070 X$=MID$(TEXT$,N+1,1)
6080 IF X$=" " THEN TEXT$(J)=LEFT$(TEXT$,62):TEXT$=RIGHT$(TEXT$,L-63):GOTO 6140
6090 IF MID$(TEXT$,62,1)=" " THEN TEXT$(J)=LEFT$(TEXT$,62):TEXT$=RIGHT$(TEXT$,L-62):GOTO 6140
6100 N=N-1
6110 X$=MID$(TEXT$,N,1)
6120 IF X$=" " THEN TEXT$(J)=LEFT$(TEXT$,N):TEXT$=RIGHT$(TEXT$,L-N):GOTO 6140
6130 GOTO 6100
6140 NEXT
6150 FOR J=1 TO NL+1
6160 LOCATE ,10:PRINT TEXT$(J)
6170 NEXT
6180 FG=OB:RETURN
7000 CLS:LOCATE 10,10:PRINT "Loading Data...";:LOCATE 13,13:PRINT "Please Wait...";:SCREEN ,,1,0:CLS:LOCATE 10,10:PRINT "Loading Data...";:LOCATE 13,13:PRINT "Please Wait...";
7010 LC=INT((80-LEN(N$))/2)
7020 F$=DD$+F$:OPEN F$ FOR INPUT AS #2
7030 INPUT #2,NS$:NS=VAL(NS$)
7040 FOR J=0 TO NS-1
7050 INPUT #2,NL$(J):NL(J)=VAL(NL$(J))
7060 FOR K=0 TO NL(J)-1
7070 INPUT #2,T$(J,K)
7080 NEXT:NEXT:CLOSE
7090 SCREEN ,,1:CLS:SCREEN ,,0,1:CLS:DEF SEG=&HB800:BLOAD"screen",0
7100 COLOR BG,FG:LOCATE 5,LC:PRINT N$:COLOR 12,0:LOCATE 2,70:PRINT "1";:LOCATE ,76:PRINT NS;:LOCATE  7,10
7110 FOR K=0 TO NL(0)-1
7120 TEXT$=T$(0,K)
7130 GOSUB 6000:NEXT
7140 SCREEN ,,1,0
7150 DEF SEG =&HB800:BLOAD "screen",&H1000
7160 LOCATE 5,LC:COLOR BG,FG:PRINT N$;:COLOR 12,0:LOCATE 2,70:PRINT "2";:LOCATE ,76:PRINT NS;
7170 LOCATE 7,10
7180 FOR K=0 TO NL(1)-1
7190 TEXT$=T$(1,K):GOSUB 6000
7200 NEXT
7210 PAGE=1:SCR=1:PPAGE=0:FPAGE=2
7220 DEF SEG=0:POKE 1050,PEEK(1052):DEF SEG
7230 K$=INKEY$:IF K$="" THEN 7230
7240 IF K$=CHR$(27) THEN RETURN
7250 IF RIGHT$(K$,1)=CHR$(81) THEN GOSUB 7280
7260 IF RIGHT$(K$,1) = CHR$(73) THEN GOSUB 7370
7270 GOTO 7230
7280 IF SCR=NS   THEN BEEP:RETURN
7290 SCREEN ,,,PAGE
7300 PAGE=PAGE+1:SCR=SCR+1
7310 IF PAGE >3 THEN PAGE=PAGE MOD 4
7320 FPAGE=FPAGE+1:IF FPAGE=4 THEN FPAGE=0
7330 PPAGE=PPAGE+1:IF PPAGE=4 THEN PPAGE=0
7340 DN=1
7350 GOSUB 7460
7360 RETURN
7370 IF SCR=1 THEN BEEP:RETURN
7380 PPPAGE=PPAGE-1:IF PPPAGE=-1 THEN PPPAGE=3
7390 SCREEN ,,,(PPPAGE)
7400 PAGE=PAGE-1:SCR=SCR-1
7410 IF PAGE<0 THEN PAGE=3
7420 FPAGE=FPAGE-1:IF FPAGE=-1 THEN FPAGE=3
7430 PPAGE=PPAGE-1:IF PPAGE=-1 THEN PPAGE=3
7440 GOSUB 7550
7450 RETURN
7460 SCREEN,,PAGE,PPAGE
7470 IF SCR=NS THEN 7540
7480 DEF SEG=&HB800:BLOAD "screen",&H1000*PAGE
7490 LOCATE 5,LC:COLOR BG,FG:PRINT N$;:LOCATE 2,69:COLOR 12,0:PRINT SCR+1;:LOCATE ,76:PRINT NS;
7500 LOCATE 7,10
7510 FOR K=0 TO NL(SCR)-1
7520 TEXT$=T$(SCR,K):GOSUB 6000
7530 NEXT
7540 RETURN
7550 PPPAGE=PPAGE-1:IF PPPAGE=-1 THEN PPPAGE=3
7560 SCREEN ,,PPPAGE,PPAGE
7570 IF SCR=1 THEN 7640
7580 DEF SEG=&HB800:BLOAD "screen",&H1000*PPPAGE
7590 LOCATE 5,LC:COLOR BG,FG:PRINT N$;:LOCATE 2,69:COLOR 12,0:PRINT SCR-1;:LOCATE ,76:PRINT NS;
7600 LOCATE 7,10
7610 FOR K=0 TO NL(SCR-2)-1
7620 TEXT$=T$(SCR-2,K):GOSUB 6000
7630 NEXT
7640 RETURN
10030 DATA 1,"I know you can swim well, Ralph, but    this is ridiculous. You are in the      Pacific Ocean!!"
10040 DATA 2,"This is the 'scar' where the passenger  tube from your plane crashed."
10050 DATA "The tube was swept out to sea in the    storm (Chapter One)."
10060 DATA 1,"What are you doing, standing in the     middle of the title?"
10070 DATA 1,"Don't stand on the book. You'll get     muddy footprints on the pages!"
10080 DATA 2,"This coastline is very steep and rocky, and the forest is very thick."
10090 DATA "In Chapter Seven, you tried to go this  way, pausing to contemplate the vastnessof the ocean."
10100 DATA 1,"You had to cross this stony and grassy  area to get to Castle Rock. The tribe   could easily see you coming."
10130 DATA 2,"Most of the island was covered in dense forest. In some areas there were many   fruit trees."
10140 DATA "Simon's special place was somewhere in  the forest, and of course, it was also  the home of the wild pigs."
14998 END
14999 'ERROR HANDLING
15000 SCREEN 0,0,0:WIDTH 80:COLOR 7,0,0:CLS
15010 LOCATE 1,30:PRINT "*** ERROR ***";
15020 IF ERR=27 THEN GOSUB 15200:GOTO 15130
15030 IF ERR=53 THEN GOSUB 15300:GOTO 15130
15040 IF ERR=70 THEN GOSUB 15400:GOTO 15130
15050 IF ERR=71 THEN GOSUB 15500:GOTO 15130
15060 IF ERR=75 OR ERR=76 THEN GOSUB 15600:GOTO 15130
15070 LOCATE 10,10:PRINT "Unexpected error"
15080 LOCATE 12,10:PRINT "Note the following information";
15090 LOCATE 14,10:PRINT "Error number ";ERR;
15100 LOCATE 16,10:PRINT "Line Number ";ERL;
15110 LOCATE 18,10:PRINT "Also remember what you were doing when the error occurred.";
15120 LOCATE 19,10:PRINT "If this error continues, call 4695784 for help."
15130 LOCATE 23,10:PRINT "ANY KEY TO CONTINUE OR <ESC> TO RETURN TO MAIN MENU";
15140 K$=INKEY$:IF K$="" THEN 15140
15150 RESUME 15160
15160 CLS:LOCATE 10,10:PRINT "Just a moment...";
15170 RUN "lof"
15200 LOCATE 4,1:PRINT "Printer error. Your printer must be loaded with paper and be turned on.";
15210 RETURN
15300 LOCATE 4,1:PRINT "Can't find the file."
15310 LOCATE 5,1:PRINT "Check that the correct disk is in Drive B and use the SETUP programme to set thecorrect Drive and Directory for the data files.";
15320 LOCATE 7,1:PRINT "If the error persists, the file may have been corrupted. Recopy it from your    back-up disk.";
15330 RETURN
15400 LOCATE 4,1:PRINT "Your diskette is write-protected.";
15410 LOCATE 6,1:PRINT "Remove the write-protect tab and try this programme again.";
15420 RETURN
15500 LOCATE 4,1:PRINT "Disk Drive Error";
15510 LOCATE 6,1:PRINT "Check that the drive door is shut and the correct disk is in the drive.:;
15520 RETURN
15600 LOCATE 4,1:PRINT "DOS Path error";
15610 LOCATE 6,1:PRINT "Run the SETUP programme from the main menu to select the correct drive and      directory.";
15620 RETURN
16000 SCREEN 0:CLS:RUN "LOF"

JOURNEY.BAS

10 ON ERROR GOTO 15000
20 KEY 15,CHR$(&H4) + CHR$(70)
30 KEY 16,CHR$(&H44) + CHR$(70)
40 KEY(15) ON:KEY(16) ON
50 ON KEY(15) GOSUB 16000:ON KEY(16) GOSUB 16000
60 OPEN "config.lof"FOR INPUT AS #1
70 INPUT #1,SPEED,FG,BG,MC,DD$
80 IF RIGHT$(DD$,1)<>"\" THEN DD$=DD$+"\"
90 CLOSE
100 KEY OFF:CLS
110 SPEED=4:FG=7:BG=1
120 DIM RALPH%(250),XPOS(47),YPOS(47),A(160),B(160),C(160),D(160),E(160),F(160)
130 DIM TEMP%(2490),Q$(20,2),A$(20)
135 RESTORE:SCORE=0
140 FOR J=0 TO 47:READ XPOS(J),YPOS(J):NEXT
150 FOR J=1 TO 20:READ Q$(J,1):READ Q$(J,2):READ A$(J):NEXT
160 NUMBER=0:CM=0
200 M$(0)="RALPH'S JOURNEY"
210 M$(1)="PLAY THE GAME":M$(2)="INSTRUCTIONS"
220 M$(3)="CHANGE SPEED":M$(4)="RETURN TO MAIN MENU"
230 NM=4:GOSUB 3000
240 ON M GOSUB 570,6000,7000,8000
250 CM=0:GOTO 135
570 DEF SEG=&HB800
580 SCREEN 1:CLS:F$=DD$+"snake":BLOAD F$,0
590 GET (12,165)-(36,199),RALPH%
600 GET (76,105)-(90,130),A:GET (91,105)-(113,130),B:GET (114,105)-(133,130),C
610 GET (134,105)-(155,130),D:GET (156,105)-(179,130),E:GET (180,105)-(204,130),F
620 PUT (180,105),F:SOUND 100,1:SOUND 32767,10
630 PUT (156,105),E:SOUND 110,1:SOUND 32767,10
640 PUT (134,105),D:SOUND 120,1:SOUND 32767,10
650 PUT (114,105),C:SOUND 130,1:SOUND 32767,10
660 PUT (91,105),B:SOUND 140,1:SOUND 32767,10
670 PUT (76,105),A
800 LINE (76,104)-(224,130),2,B,&HEDDB
810 LINE (76,104)-(224,130),1,B,&H1224
820 LOCATE 15,15:PRINT "Press Space";
830 LOCATE 16,12 :PRINT "to roll the dice.";
840 K$=INKEY$:IF K$="" THEN 840
850 IF K$=CHR$(27) THEN 135
860 LINE (77,105)-(223,129),0,BF
870 LOCATE 15,15:PRINT "Rolling...";
880 LOCATE 16,13:PRINT "Any key to stop.";
890 IF INKEY$<>"" THEN LINE (77,105)-(223,129),0,BF:GOTO 1100
900 ROLL=INT(RND(1)*6+1)
910 FOR PA=1 TO SPEED*22:NEXT
920 LINE (7,62)-(28,87),0,BF
925 SOUND 40,0.1
930 FOR PA=1 TO SPEED*44:NEXT
940 ON ROLL GOTO 950,960,970,980,990,1000
950 PUT (7,62),A:GOTO 1010
960 PUT (7,62),B:GOTO 1010
970 PUT (7,62),C:GOTO 1010
980 PUT (7,62),D:GOTO 1010
990 PUT (7,62),E:GOTO 1010
1000 PUT (7,62),F
1010 GOTO 890
1100 IF INKEY$=CHR$(27) THEN 135
1105 SCORE=SCORE+1:IF NUMBER+ROLL>47 THEN GOSUB 1400:GOTO 800
1110 PUT (XPOS(NUMBER),YPOS(NUMBER)),RALPH%
1120 OLDNUM=NUMBER
1130 NUMBER=NUMBER+ROLL
1140 FOR J=OLDNUM+1 TO NUMBER-1
1150 PUT (XPOS(J),YPOS(J)),RALPH%:SOUND 200,1
1160 FOR PA=1 TO SPEED*330:NEXT
1170 PUT (XPOS(J),YPOS(J)),RALPH%:NEXT
1180 PUT (XPOS(NUMBER),YPOS(NUMBER)),RALPH%:SOUND 200,1
1190 IF NUMBER=47 THEN GOTO 1500
1200 IF NUMBER=3 OR NUMBER=8 OR NUMBER=10 OR NUMBER=14 THEN GOSUB 2000
1210 IF NUMBER=22 OR NUMBER=25 OR NUMBER=32 THEN GOSUB 2000
1220 IF NUMBER=4 OR NUMBER=11 OR NUMBER=12 OR NUMBER=15 OR NUMBER=27 OR NUMBER=28 THEN GOSUB 2500
1230 IF NUMBER=38 OR NUMBER=40 OR NUMBER=46 THEN GOSUB 2500
1240 IF NUMBER=7 OR NUMBER=19 OR NUMBER=20 OR NUMBER=35 OR NUMBER=45 THEN GOSUB 4000
1250 IF NUMBER=47 THEN 1500
1260 GOTO 800
1400 BEEP
1410 GOSUB 4230
1420 LOCATE 14,5:PRINT "You must throw the exact number.";
1430 LOCATE 16,9:PRINT "Try again!";
1440 FOR PA=1 TO 1600*SPEED:NEXT
1450 PUT (27,96),TEMP%,PSET
1460 RETURN
1500 SOUND 50,1/2:FOR PA=1 TO SPEED*200:NEXT:SOUND 50,1/2:FOR PA=1 TO SPEED*200:NEXT:SOUND 50,1/2:FOR PA=1 TO SPEED*280:NEXT:SOUND 130,3
1510 F$=DD$+"end":BLOAD F$,0
1520 LOCATE 10,30:PRINT SCORE;
1530 LOCATE 20,18
1540 IF SCORE>64 THEN 1570
1550 IF SCORE<8 THEN 1600
1560 ON INT((72-SCORE)/8) GOTO 1570,1570,1580,1580,1590,1590,1600,1600
1570 PRINT "*";:SOUND 100,1:LOCATE 22,17:PRINT "NOVICE";:GOTO 1610
1580 FOR J=1 TO 2:PRINT "* ";:SOUND 100,1:NEXT:LOCATE 22,15:PRINT "PROMISING";:GOTO 1610
1590 FOR J=1 TO 3:PRINT "* ";:SOUND 100,1:NEXT:LOCATE 22,18:PRINT "GOOD";:GOTO 1610
1600 FOR J=1 TO 4:PRINT "* ";:SOUND 100,1:NEXT:LOCATE 22,16:PRINT "EXCELLENT";:GOTO 1610
1610 K$=INKEY$:IF K$="" THEN 1610
1620 RETURN
2000 FOR J=59 TO 98 STEP 3:SOUND J,1:NEXT
2010 GOSUB 4230:LOCATE 14,5
2020 IF NUMBER=3 THEN 2090
2030 IF NUMBER=8 THEN 2130
2040 IF NUMBER=10 THEN 2170
2050 IF NUMBER=14 THEN 2220
2060 IF NUMBER=22 THEN 2270
2070 IF NUMBER=25 THEN 2310
2080 IF NUMBER=32 THEN 2360
2090 PRINT "You find the conch!";
2100 LOCATE 16,5:PRINT "Move forward 3 spaces.";
2110 OLDNUM=NUMBER:NUMBER=NUMBER+3
2120 GOSUB 4400:GOTO 2410
2130 PRINT "You are elected chief!";
2140 LOCATE 16,5:PRINT "Move forward 5 spaces.";
2150 OLDNUM=NUMBER:NUMBER=NUMBER+5
2160 GOSUB 4400:GOTO 2410
2170 PRINT "You explore the island with Jack";
2180 LOCATE 15,5:PRINT "and Simon. It's fantastic!";
2190 LOCATE 16,5:PRINT "Go forward 3 spaces
2200 OLDNUM=NUMBER:NUMBER=NUMBER+3
2210 GOSUB 4400:GOTO 2410
2220 PRINT "You light the signal fire using";
2230 LOCATE 15,5:PRINT "Piggy's specs.";
2240 LOCATE 16,5:PRINT "Move ahead 4 spaces.";
2250 OLDNUM=NUMBER:NUMBER=NUMBER+4
2260 GOSUB 4400:GOTO 2410
2270 PRINT "Simon helps to build the huts.";
2280 LOCATE 16,5:PRINT "Move forward 2 spaces.";
2290 OLDNUM=NUMBER:NUMBER=NUMBER+2
2300 GOSUB 4400:GOTO 2410
2310 PRINT "You call an assembly.";
2320 LOCATE 15,5:PRINT "You are still chief.";
2330 LOCATE 16,5:PRINT "Move on 4 spaces.";
2340 OLDNUM=NUMBER:NUMBER=NUMBER+4
2350 GOSUB 4400:GOTO 2410
2360 PRINT "You successfully hide from";
2370 LOCATE 15,5:PRINT "the tribe overnight.";
2380 LOCATE 16,5:PRINT "Go forward 2 spaces.";
2390 OLDNUM=NUMBER:NUMBER=NUMBER+2
2400 GOSUB 4400:GOTO 2410
2410 RETURN
2500 FOR J=98 TO 59 STEP -3:SOUND J,1:NEXT:FLAG=1
2510 GOSUB 4230:LOCATE 14,5
2520 IF NUMBER=4 THEN 2610
2530 IF NUMBER=11 THEN 2650
2540 IF NUMBER=12 THEN 2690
2550 IF NUMBER=15 THEN 2730
2560 IF NUMBER=27 THEN 2770
2570 IF NUMBER=28 THEN 2810
2580 IF NUMBER=38 THEN 2850
2590 IF NUMBER=40 THEN 2890
2600 IF NUMBER=46 THEN 2930
2610 PRINT "The fire burns out of control,";:LOCATE 15,5:PRINT "killing one boy.";
2620 LOCATE 16,5:PRINT "Go back 3 spaces.";
2630 OLDNUM=NUMBER:NUMBER=NUMBER-3
2640 GOSUB 4400:GOTO 2970
2650 PRINT "The hunters let the fire go out.";
2660 LOCATE 15,5:PRINT "One chance of rescue is gone.";:LOCATE 16,5:PRINT "Go back 5 spaces.";
2670 OLDNUM=NUMBER:NUMBER=NUMBER-5
2680 GOSUB 4400:GOTO 2970
2690 PRINT "You fight with Jack.";
2700 LOCATE 16,5:PRINT "Go back 3 spaces.";
2710 OLDNUM=NUMBER:NUMBER=NUMBER-3
2720 GOSUB 4400:GOTO 2970
2730 PRINT "There is talk of a beast.";:LOCATE 15,5:PRINT "Everyone is frightened.";
2740 LOCATE 16,5:PRINT "Go back 2 spaces.";
2750 OLDNUM=NUMBER:NUMBER=NUMBER-2
2760 GOSUB 4400:GOTO 2970
2770 PRINT "Samneric see the beast on the";:LOCATE 15,5:PRINT "mountain. There is terror.";
2780 LOCATE 16,5:PRINT "Go back 4 spaces.";
2790 OLDNUM=NUMBER:NUMBER=NUMBER-4
2800 GOSUB 4400:GOTO 2970
2810 PRINT "You see the beast with Jack";:LOCATE 15,5:PRINT "and Roger.";
2820 LOCATE 16,5:PRINT "Return 2 spaces.";
2830 OLDNUM=NUMBER:NUMBER=NUMBER-2
2840 GOSUB 4400:GOTO 2970
2850 PRINT "Simon is killed.";:LOCATE 15,5:PRINT "You were involved.";
2860 LOCATE 16,5:PRINT "Go back 15 spaces.";
2870 OLDNUM=NUMBER:NUMBER=NUMBER-15
2880 GOSUB 4400:GOTO 2970
2890 PRINT "The tribe kill Piggy, your only";:LOCATE 15,5:PRINT "remaining friend.";
2900 LOCATE 16,5:PRINT "Go back 10 spaces.";
2910 OLDNUM=NUMBER:NUMBER=NUMBER-10
2920 GOSUB 4400:GOTO 2970
2930 PRINT "The tribe hunt to kill you.";:LOCATE 15,5:PRINT "They light a fire....";
2940 LOCATE 16,5:PRINT "Go back 5 spaces.";
2950 OLDNUM=NUMBER:NUMBER=NUMBER-5
2960 GOSUB 4400:GOTO 2970
2970 RETURN
3000 SCREEN 0:WIDTH 80:HC=INT((80-LEN(M$(0)))/2)
3010 COLOR MC,0:CLS:LOCATE 1,1:PRINT CHR$(201);:LOCATE 1,80:PRINT CHR$(187);:LOCATE 24,1:PRINT CHR$(200);:LOCATE 24,80:PRINT CHR$(188);
3020 LOCATE 3,1:PRINT CHR$(199);:LOCATE 3,80:PRINT CHR$(182);:LOCATE 22,1:PRINT CHR$(199);:LOCATE 22,80:PRINT CHR$(182);
3030 LOCATE 2,1:PRINT CHR$(186);:LOCATE 2,80:PRINT CHR$(186);:LOCATE 23,1:PRINT CHR$(186);:LOCATE 23,80:PRINT CHR$(186);
3040 LOCATE 1,2:PRINT STRING$(78,205);:LOCATE 3,2:PRINT STRING$(78,196);:LOCATE 22,2:PRINT STRING$(78,196);:LOCATE 24,2:PRINT STRING$(78,205);
3050 FOR X=4 TO 21:LOCATE X,1:PRINT CHR$(186);:NEXT:FOR X=4 TO 21:LOCATE X,80:PRINT CHR$(186);:NEXT
3060 COLOR 0,MC:LOCATE 2,HC-5:PRINT "     ";M$(0);"     ";
3070 COLOR 6,0:LOCATE 25,32:PRINT "Press H for Help";
3080 HJ=NM*2+3
3090 COLOR 7,0
3100 FOR J=5 TO HJ STEP 2:M=(J-3)/2:LOCATE J,27:PRINT M$(M);:NEXT
3110 LOCATE 23,18
3120 COLOR 0,MC
3130 PRINT "     USE ARROW KEYS AND <ENTER> TO SELECT     ";
3140 COLOR 7,0
3150 J=5:M=1:K=HJ:GOSUB 3280
3160 IF CM=1 THEN FOR CL=200 TO 120 STEP -5:SOUND CL,1/4:NEXT:RETURN
3170  GOSUB 3190
3180 GOTO 3160
3190 K$=INKEY$:IF K$="" THEN 3190
3200 K=J
3210 IF LEN(K$)=1 THEN 3240
3220 IF RIGHT$(K$,1)=CHR$(72) OR RIGHT$(K$,1)=CHR$(75) THEN J=J-2:IF J=3 THEN J=HJ
3230 IF RIGHT$(K$,1)=CHR$(77) OR RIGHT$(K$,1)=CHR$(80) THEN J=J+2:IF J=HJ+2 THEN J=5
3240 IF K$="h" OR K$="H" THEN GOSUB 3400
3250 IF K$=CHR$(13) THEN CM=1:RETURN
3260 SOUND 255,1
3270 M=(J-3)/2
3280 N=(K-3)/2
3290 LOCATE K,27:PRINT M$(N);
3300 COLOR 0,7
3310 LOCATE J,27:PRINT M$(M);
3320 COLOR 7,0
3330 RETURN
3340 REM *** SCREEN CLEAR ***
3350 CLS:RETURN
3360 GOSUB 3350
3370 LOCATE 10,10:PRINT "LOADING..."
3380 LOCATE 13,13:PRINT "PLEASE WAIT..."
3390 RETURN
3400 SCREEN ,,,1
3410 X$=INKEY$:IF X$="" THEN 3410
3420 SCREEN ,,,0:RETURN
4000 R=INT(RND(1)*20)+1
4010 IF Q$(R,1)=""THEN 4000
4020 GOSUB 4230
4030 LOCATE 14,5:PRINT Q$(R,1);:LOCATE 15,5:PRINT Q$(R,2);
4040 LOCATE 16,5:PRINT "True or False (T/F)?";
4050 Q$(R,1)=""
4060 IF A$(R)="F" THEN 4150
4070 K$=INKEY$:IF K$="" THEN 4070
4080 IF K$<>"t" AND K$<>"T" AND K$<>"f" AND K$<>"F" THEN 4070
4090 LINE (27,96)-(292,130),0,BF:LINE (29,98)-(290,128),1,B
4100 LOCATE 14,12
4110 IF K$="t" OR K$="T" THEN PRINT "CORRECT!!";:LOCATE 16,9:PRINT "Move ahead 2 spaces.";:RIGHT=1:GOTO 4130
4120 PRINT "WRONG!";:LOCATE 16,9:PRINT "Go back 2 spaces.";:WRONG=1
4130 IF RIGHT=1 THEN OLDNUM=NUMBER:NUMBER=NUMBER+2:RIGHT=0:GOSUB 4400:RETURN
4140 OLDNUM=NUMBER:NUMBER=NUMBER-2:FLAG=1:WRONG=0:GOSUB 4400:RETURN
4150 K$=INKEY$:IF K$="" THEN 4150
4160 IF K$<>"t" AND K$<>"T" AND K$<>"f" AND K$<>"F" THEN 4070
4170 LINE (27,96)-(292,130),0,BF:LINE (29,98)-(290,128),1,B
4180 LOCATE 14,12
4190 IF K$="F" OR K$="f" THEN PRINT"CORRECT!!";:LOCATE 16,9:PRINT "Move ahead 2 spaces.";:RIGHT=1:GOTO 4210
4200 PRINT "WRONG!";:LOCATE 16,9:PRINT "Go back 2 spaces.";:WRONG=1
4210 IF RIGHT=1 THEN OLDNUM=NUMBER:NUMBER=NUMBER+2:RIGHT=0:GOSUB 4400:RETURN
4220 OLDNUM=NUMBER:NUMBER=NUMBER-2:FLAG=1:WRONG=0:GOSUB 4400:RETURN
4230 GET (27,96)-(292,130),TEMP%
4250 LINE (27,96)-(292,130),0,BF
4260 LINE (29,98)-(290,128),1,B
4270 RETURN
4400 FOR PA=1 TO SPEED*1900:NEXT
4410 PUT (27,96),TEMP%,PSET
4420 PUT (XPOS(OLDNUM),YPOS(OLDNUM)),RALPH%
4430 IF FLAG=1 THEN FLAG=0:GOTO 4500
4440 FOR J=OLDNUM+1 TO NUMBER-1
4450 PUT (XPOS(J),YPOS(J)),RALPH%:SOUND J*5+25,1
4460 FOR PA=1 TO SPEED*330:NEXT
4470 PUT (XPOS(J),YPOS(J)),RALPH%:NEXT
4480 PUT (XPOS(NUMBER),YPOS(NUMBER)),RALPH%:SOUND NUMBER*5+35,1
4490 RETURN
4500 FOR J=OLDNUM-1 TO NUMBER+1 STEP -1
4510 PUT (XPOS(J),YPOS(J)),RALPH%:SOUND J*5+35,2:FOR PA=1 TO SPEED*460:NEXT:PUT (XPOS(J),YPOS(J)),RALPH%
4520 NEXT
4530 PUT (XPOS(NUMBER),YPOS(NUMBER)),RALPH%:SOUND NUMBER*5+35,2
4540 RETURN
5000 DATA 12,165,54,165,90,165,120,165,146,165,170,165
5010 DATA 191,165,220,165,246,160,272,157,290,140
5020 DATA 279,128,255,120,229,117,200,122,163,125
5030 DATA 130,124,94,120,63,114,19,105,29,83
5040 DATA 48,73,84,66,113,62,142,61,170,62
5050 DATA 194,63,229,64,255,69,279,68,286,44
5060 DATA 260,36,235,33,207,32,180,35,150,36
5070 DATA 116,30,83,29,42,21,34,4,74,0
5080 DATA 104,0,139,0,169,0,200,0,231,0
5090 DATA 260,0,285,0
5100 DATA "Jack lights the fire with","a magnifying glass.","F"
5110 DATA "Ralph's father is a pilot.","    ","F"
5120 DATA "We never find out Piggy's","real name.","T"
5130 DATA "Piggy is the first to see","the conch.","F"
5140 DATA "None of the boys see the","parachutist clearly.","F"
5150 DATA "At the first voting","nobody votes for Jack.","F"
5160 DATA "It was Ralph's idea to","light a signal fire.","T"
5170 DATA "The beast was really","a very large pig.","F"
5180 DATA "Ralph lights the first fire","with Piggy's glasses.","T"
5190 DATA "Ralph's surname is Merridew.","    ","F"
5200 DATA "Ralph joins in the dance, in","which Simon is killed.","T"
5210 DATA "Later in the novel, the boys","vote for Jack as chief.","F"
5220 DATA "Roger first suggests painting","their faces.","F"
5230 DATA "The boys are rescued by an","aircraft carrier.","F"
5240 DATA "The tribe attack Ralph and Piggy","and steal Piggy's glasses.","T"
5250 DATA "Ralph wants to have a fort","at Castle Rock.","F"
5260 DATA "The pig's head on the stick","was still alive.","F"
5270 DATA "Piggy made a list of all","the boys' names.","F"
5280 DATA "The parachutist's body blew out","to sea, in a storm.","T"
5290 DATA "No-one knows the name of the","boy who dies in the fire.","T"
6000 COLOR FG,BG:CLS
6010 LOCATE 1,30:PRINT "INSTRUCTIONS"
6020 PRINT
6030 PRINT "This game is based on Board games such as Snakes and Ladders."
6040 PRINT
6050 PRINT "One player may play at a time, and he or she takes on the character  of Ralph   in a journey through the events of the book."
6060 PRINT
6065 PRINT "The computer will roll the dice for you, and move your character.":PRINT
6070 PRINT "Landing on spaces marked '*' indicates a bad event, and 'Ralph' must retreat thestated number of spaces.
6080 PRINT
6090 PRINT "Landing on spaces marked '!' is good luck and moves 'Ralph' forward."
6095 PRINT
6100 PRINT "Spaces marked '?' will reveal a True/False question based on the book, which    can take you forward or back a further two spaces."
6110 PRINT
6120 PRINT "Don't forget you can use the 'Change Speed' option on the menu to slow down or  speed up the game.";
6130 LOCATE 25,29:COLOR BG,FG:PRINT " ANY KEY TO CONTINUE ";
6140 K$=INKEY$:IF K$="" THEN 6140
6150 RETURN
7000 CLS:MSPEED=11-SPEED
7020 LOCATE 8,10:PRINT "You may change the speed at which this game runs,";
7030 LOCATE 9,10:PRINT "by changing the speed value below.";
7040 LOCATE 11,10:PRINT "This change only affects this game, and you will";
7050 LOCATE 12,10:PRINT "need to alter it every time you return to this menu.";
7060 LOCATE 14,10:PRINT "To make a more permanent change to all the programmes";
7070 LOCATE 15,10:PRINT "select Set-Up from the Main Menu."
7080 LOCATE 18,10:PRINT "Use the arrow keys to raise or lower the Current Speed";
7085 KEY (12) ON:KEY (13) ON
7087 ON KEY(12) GOSUB 7140
7089 ON KEY(13) GOSUB 7120
7090 LOCATE 24,20:PRINT "Current Speed: ";MSPEED;
7100 P$=INKEY$:IF P$<>CHR$(13) THEN 7090
7110 IF P$=CHR$(13) THEN SPEED=11-MSPEED:KEY (12) OFF:KEY (13) OFF:CLS:RETURN
7115 GOTO 7090
7120 MSPEED=MSPEED+1
7130 IF MSPEED=11 THEN MSPEED=1
7135 RETURN
7140 MSPEED=MSPEED-1
7150 IF MSPEED=0 THEN MSPEED=10
7155 RETURN
7160 GOTO 7090
8000 COLOR FG,BG:CLS
8010 LOCATE 10,10:PRINT "Returning to Main Menu...";
8020 LOCATE 13,13:PRINT "Just a moment...";
8030 RUN "lof"
14998 END
14999 'ERROR HANDLING
15000 SCREEN 0,0,0:WIDTH 80:COLOR 7,0,0:CLS
15010 LOCATE 1,30:PRINT "*** ERROR ***";
15020 IF ERR=27 THEN GOSUB 15200:GOTO 15130
15030 IF ERR=53 THEN GOSUB 15300:GOTO 15130
15040 IF ERR=70 THEN GOSUB 15400:GOTO 15130
15050 IF ERR=71 THEN GOSUB 15500:GOTO 15130
15060 IF ERR=75 OR ERR=76 THEN GOSUB 15600:GOTO 15130
15070 LOCATE 10,10:PRINT "Unexpected error"
15080 LOCATE 12,10:PRINT "Note the following information";
15090 LOCATE 14,10:PRINT "Error number ";ERR;
15100 LOCATE 16,10:PRINT "Line Number ";ERL;
15110 LOCATE 18,10:PRINT "Also remember what you were doing when the error occurred.";
15120 LOCATE 19,10:PRINT "If this error continues, call 4695784 for help."
15130 LOCATE 23,10:PRINT "ANY KEY TO CONTINUE OR <ESC> TO RETURN TO MAIN MENU";
15140 K$=INKEY$:IF K$="" THEN 15140
15150 RESUME 15160
15160 CLS:LOCATE 10,10:PRINT "Just a moment...";
15170 RUN "lof"
15200 LOCATE 4,1:PRINT "Printer error. Your printer must be loaded with paper and be turned on.";
15210 RETURN
15300 LOCATE 4,1:PRINT "Can't find the file."
15310 LOCATE 5,1:PRINT "Check that the correct disk is in Drive B and use the SETUP programme to set thecorrect Drive and Directory for the data files.";
15320 LOCATE 7,1:PRINT "If the error persists, the file may have been corrupted. Recopy it from your    back-up disk.";
15330 RETURN
15400 LOCATE 4,1:PRINT "Your diskette is write-protected.";
15410 LOCATE 6,1:PRINT "Remove the write-protect tab and try this programme again.";
15420 RETURN
15500 LOCATE 4,1:PRINT "Disk Drive Error";
15510 LOCATE 6,1:PRINT "Check that the drive door is shut and the correct disk is in the drive.:;
15520 RETURN
15600 LOCATE 4,1:PRINT "DOS Path error";
15610 LOCATE 6,1:PRINT "Run the SETUP programme from the main menu to select the correct drive and      directory.";
15620 RETURN
16000 SCREEN 0:CLS:RUN "LOF"

LOF.BAS

10 ON ERROR GOTO 15000
20 KEY 15,CHR$(&H4) + CHR$(70)
30 KEY 16,CHR$(&H44) + CHR$(70)
40 KEY(15) ON
45 KEY(16) ON
50 ON KEY(15) GOSUB 16000
60 ON KEY(16) GOSUB 16000
70 OPEN "REGISTER" FOR INPUT AS #1:INPUT #1,SERNO:LENGTH=LOF(1):CLOSE
80 IF LENGTH<7 THEN OPEN "REGISTER" FOR OUTPUT AS #1:GOSUB 14000
95 CLOSE
100 BOOK$="LORD OF THE FLIES"
105 OPEN "config.lof" FOR INPUT AS #1
110 INPUT #1,SPEED,FG,BG,MC,DD$
115 CLOSE
120 DEF SEG:IF PEEK(1)=4 THEN 170
125 DEF SEG:POKE 1,4
130 KEY OFF:SCREEN 1:CLS
135 DEF SEG= &HB800:BLOAD "pmlof2",0
140 PA=PA+1:IF PA=15000 THEN 150
145 K$=INKEY$:IF K$="" THEN 140
150 SCREEN 0:WIDTH 80:LOCATE 10,2:PRINT STRING$(78,205);:LOCATE 15,2:PRINT STRING$(78,205);:LOCATE 10,1:PRINT CHR$(201);:LOCATE 10,80:PRINT CHR$(187);
155 LOCATE 15,1:PRINT CHR$(200);:LOCATE 15,80:PRINT CHR$(188);:FOR J=11 TO 14:LOCATE J,1:PRINT CHR$(186);:LOCATE J,80:PRINT CHR$(186);:NEXT
160 LOCATE 12,25:PRINT "COPYRIGHT (1989) BY";:LOCATE 13,25:PRINT "STEVE HERBERT";
165 FOR PA=1 TO 2000:NEXT
170 SCREEN 0:WIDTH 80:COLOR FG,0,0:CLS
175 SCREEN ,,1,0:COLOR FG,BG:CLS:LOCATE 3,29:COLOR BG,FG:PRINT "MAIN MENU HELP SCREEN";
180 LOCATE 6,10:COLOR FG,BG:PRINT "Use the arrow keys to move the high-lighted bar";
185 LOCATE 7,10:PRINT "up and down the menu options.";
190 LOCATE 10,10:PRINT "If you are using the arrow keys on the";
195 LOCATE 11,10:PRINT "number key-pad, be sure NUM LOCK is off.";
200 LOCATE 14,10:PRINT "Use the <Enter> key to select the high-lighted option.";
205 LOCATE 25,30:COLOR BG,FG:PRINT " ANY KEY TO CONTINUE ";
210 SCREEN ,,0,0
220 M$(0)="MAIN MENU"
230 M$(1)="INTRODUCTION":M$(2)="QUIZZES AND GAMES":M$(3)="NOTES"
240 M$(4)="THE ISLAND":M$(5)="COMPETITION"
250 M$(6)="SET-UP":M$(7)="JUST FOR FUN":M$(8)="QUIT"
260 NM=8
270 GOSUB 5000
280 CM=0
290 ON M GOTO 300,310,440,490,500,510,600,520
300 GOSUB 5360:RUN "introd"
310 CLS
320 M$(0)="*** QUIZZES AND GAMES ***"
330 M$(1)="QUOTATION QUIZ":M$(2)="BOULDER DASH"
340 M$(3)="MISSING WORDS":M$(4)="RALPH'S JOURNEY":M$(5)="RETURN TO MAIN MENU"
350 NM=5:GOSUB 5000
360 CM=0
370 IF M=5 THEN CLS:GOTO 220
380 GOSUB 5360
390 ON M GOTO 400,410,420,430
400 GOSUB 5360:RUN "QUOTATIO"
410 GOSUB 5360:RUN "BOULDER"
420 GOSUB 5360:RUN "MISSING"
430 GOSUB 5360:RUN "JOURNEY"
440 GOSUB 5360:RUN "retrieve"
450 RUN "SUMMARY"
460 RUN "CHARAC"
470 RUN "GOLDING"
480 RUN "RETRIEVE
490 GOSUB 5360:RUN "ISLAND
500 GOSUB 5360:RUN "compet"
510 GOSUB 5360:RUN "SETUP"
520 COLOR FG,BG
530 CLS:LOCATE 10,10:PRINT "'Bye for now...";
540 SYSTEM
600 SCREEN 1:CLS:LOCATE 10,5:PRINT "Just a moment...";
610 DEF SEG=&HB800:BLOAD "RIDDLES",0
620 K$=INKEY$:IF K$="" THEN 620
630 BLOAD "ANSWERS",0
640 K$=INKEY$:IF K$="" THEN 640
650 GOTO 170
5000 HC=INT((80-LEN(M$(0)))/2)
5010 COLOR MC,0,0:CLS:LOCATE 1,1:PRINT CHR$(201);:LOCATE 1,80:PRINT CHR$(187);:LOCATE 24,1:PRINT CHR$(200);:LOCATE 24,80:PRINT CHR$(188);
5020 LOCATE 3,1:PRINT CHR$(199);:LOCATE 3,80:PRINT CHR$(182);:LOCATE 22,1:PRINT CHR$(199);:LOCATE 22,80:PRINT CHR$(182);
5030 LOCATE 2,1:PRINT CHR$(186);:LOCATE 2,80:PRINT CHR$(186);:LOCATE 23,1:PRINT CHR$(186);:LOCATE 23,80:PRINT CHR$(186);
5040 LOCATE 1,2:PRINT STRING$(78,205);:LOCATE 3,2:PRINT STRING$(78,196);:LOCATE 22,2:PRINT STRING$(78,196);:LOCATE 24,2:PRINT STRING$(78,205);
5050 FOR X=4 TO 21:LOCATE X,1:PRINT CHR$(186);:NEXT:FOR X=4 TO 21:LOCATE X,80:PRINT CHR$(186);:NEXT
5060 COLOR 0,MC:LOCATE 2,HC-5:PRINT "     ";M$(0);"     ";
5070 COLOR 6,0:LOCATE 25,32:PRINT "Press H for Help";
5080 HJ=NM*2+3
5090 COLOR 7,0
5100 FOR J=5 TO HJ STEP 2:M=(J-3)/2:LOCATE J,27:PRINT M$(M);:NEXT
5110 LOCATE 23,18
5120 COLOR 0,MC
5130 PRINT "     USE ARROW KEYS AND <ENTER> TO SELECT     ";
5140 COLOR 7,0
5150 J=5:M=1:K=HJ:GOSUB 5280
5160 IF CM=1 THEN FOR CL=200 TO 120 STEP -5:SOUND CL,1/4:NEXT:RETURN
5170  GOSUB 5190
5180 GOTO 5160
5190 K$=INKEY$:IF K$="" THEN 5190
5200 K=J
5210 IF LEN(K$)=1 THEN 5240
5220 IF RIGHT$(K$,1)=CHR$(72) OR RIGHT$(K$,1)=CHR$(75) THEN J=J-2:IF J=3 THEN J=HJ
5230 IF RIGHT$(K$,1)=CHR$(77) OR RIGHT$(K$,1)=CHR$(80) THEN J=J+2:IF J=HJ+2 THEN J=5
5240 IF K$="h" OR K$="H" THEN GOSUB 5400
5250 IF K$=CHR$(13) THEN CM=1:RETURN
5260 SOUND 255,1
5270 M=(J-3)/2
5280 N=(K-3)/2
5290 LOCATE K,27:PRINT M$(N);
5300 COLOR 0,7
5310 LOCATE J,27:PRINT M$(M);
5320 COLOR 7,0
5330 RETURN
5340 REM *** SCREEN CLEAR ***
5350 CLS:RETURN
5360 GOSUB 5350
5370 LOCATE 10,10:PRINT "LOADING..."
5380 LOCATE 13,13:PRINT "PLEASE WAIT..."
5390 RETURN
5400 SCREEN ,,,1
5410 X$=INKEY$:IF X$="" THEN 5410
5420 SCREEN ,,,0:RETURN
14000 KEY OFF:SCREEN 1:WIDTH 80:CLS
14010 LOCATE 1,26
14020 PRINT "*** REGISTRATION SCREEN ***";
14030 LOCATE 3,1:PRINT "As this is the first time you have used the programme, please give your name    and IC Number. This information will be written onto the disk to identify it as belonging exclusively to you."
14040 LOCATE 7,1:PRINT "Please also complete the registration card included with your manual and return it in the stamped, addressed envelope provided."
14050 LOCATE 13,13:PRINT "Programme Serial No. ";SERNO;
14060 LOCATE 16,1:PRINT "Please type your name.";
14070 LOCATE 17,10:LINE INPUT "NAME : ";NA$
14080 LOCATE  19,1:PRINT "And now your IC please.";
14090 LOCATE 20,10:INPUT "IC No. : ",IC$
14100 CLS
14110 LOCATE 5,5:PRINT "Is this information correct? (Y/N)";
14120 LOCATE 10,10:PRINT "NAME : ";NA$;
14130 LOCATE 13,10:PRINT "IC NO. : ";IC$;
14140 K$=INKEY$:IF K$="" THEN 14140
14150 IF K$="Y" OR K$="y" THEN WRITE #1,SERNO,NA$,IC$:RETURN
14160 GOTO 14000
14998 END
14999 'ERROR HANDLING
15000 SCREEN 0,0,0:WIDTH 80:COLOR 7,0,0:CLS
15010 LOCATE 1,30:PRINT "*** ERROR ***";
15020 IF ERR=27 THEN GOSUB 15200:GOTO 15130
15030 IF ERR=53 THEN GOSUB 15300:GOTO 15130
15040 IF ERR=70 THEN GOSUB 15400:GOTO 15130
15050 IF ERR=71 THEN GOSUB 15500:GOTO 15130
15060 IF ERR=75 OR ERR=76 THEN GOSUB 15600:GOTO 15130
15070 LOCATE 10,10:PRINT "Unexpected error"
15080 LOCATE 12,10:PRINT "Note the following information";
15090 LOCATE 14,10:PRINT "Error number ";ERR;
15100 LOCATE 16,10:PRINT "Line Number ";ERL;
15110 LOCATE 18,10:PRINT "Also remember what you were doing when the error occurred.";
15120 LOCATE 19,10:PRINT "If this error continues, call 4695784 for help."
15130 LOCATE 23,10:PRINT "ANY KEY TO CONTINUE OR <ESC> TO RETURN TO MAIN MENU";
15140 K$=INKEY$:IF K$="" THEN 15140
15150 RESUME 15160
15160 CLS:LOCATE 10,10:PRINT "Just a moment...";
15170 RUN "lof"
15200 LOCATE 4,1:PRINT "Printer error. Your printer must be loaded with paper and be turned on.";
15210 RETURN
15300 LOCATE 4,1:PRINT "Can't find the file."
15310 LOCATE 5,1:PRINT "Check that the correct disk is in Drive B and use the SETUP programme to set thecorrect Drive and Directory for the data files.";
15320 LOCATE 7,1:PRINT "If the error persists, the file may have been corrupted. Recopy it from your    back-up disk.";
15330 RETURN
15400 LOCATE 4,1:PRINT "Your diskette is write-protected.";
15410 LOCATE 6,1:PRINT "Remove the write-protect tab and try this programme again.";
15420 RETURN
15500 LOCATE 4,1:PRINT "Disk Drive Error";
15510 LOCATE 6,1:PRINT "Check that the drive door is shut and the correct disk is in the drive.:;
15520 RETURN
15600 LOCATE 4,1:PRINT "DOS Path error";
15610 LOCATE 6,1:PRINT "Run the SETUP programme from the main menu to select the correct drive and      directory.";
15620 RETURN
16000 SCREEN 0:CLS:RUN "LOF"

MANUAL.TXT









     ***************************************************************************
     *                                                                         *
     *                                                                         *
     *                                                                         *
     *                                                                         *
     *                                                                         *
     *                              LORD OF THE FLIES                          *
     *                                                                         *
     *                                                                         *
     *                                                                         *
     *                                                                         *
     *                                                                         *
     ***************************************************************************



                          Activities and Notes for Students




                                 Programme and Notes




                                         by





                                    Steve Herbert





















                                        (p1)









                                  Table of Contents
                                  =================






     Introduction to Lord of the Flies..........................3

     Introduction to the Programme..............................3

     System Requirements........................................4

     Installation...............................................4

     How to get Started.........................................5

     Using the Menus............................................5

     The Main Menu..............................................6

     Quizzes and Games Menu.....................................6

     Notes Menu.................................................7

     Instructions...............................................7

     The Competition............................................8

     Customising the Programme..................................9

     About the Programme........................................10

     Registration Form..........................................11

     Entry Form.................................................12



















                                        (p2)








                          INTRODUCTION TO LORD OF THE FLIES
                          =================================

     'Lord of the Flies' is the novel which made William Golding famous, and was
     responsible for his winning the Nobel Prize for Literature. It provides a
     tantalising glimpse into the depths of human nature, but in such an
     accessible way that it has long been a favourite for study in school
     literature classes.

     Whether or not one agrees with Golding's basic premise that, freed of the
     constraints of civilisation, Man will degenerate into savagery, there is a
     power and clarity in his writing that makes his story utterly believable.

     Already the inspiration for two films and many stage productions, Golding's
     story is a landmark in modern English fiction.


                            INTRODUCTION TO THE PROGRAMME
                            =============================

     The programme consists of a series of activities to assist high school
     students learning Orwell's novel 'Animal Farm'. The student can select the
     activity of his choice from a series of menus.

     Activities include several quizzes or games, notes on a wide variety of
     topics, graphics of the Farm and even a competition with the chance to win
     worthwhile prizes.

     The games are designed to be fun and at the same time to provide a fairly
     painless way to memorise quotations, learn important passages, and in
     general, to become familiar with the plot, characters and themes of the
     novel.

























                                        (p3)








                                 SYSTEM REQUIREMENTS
                                 ===================

     This programme is written in BASIC and requires GWBASIC or BASICA to run.
     The programme will run on IBM and Compatible computers with 512Kb of memory
     or more. CGA card is required, although it is not necessary to have a
     colour monitor. However, colour is recommended, especially for the games.

     The programme is normally supplied on two 5.25" floppy disks and the
     default set up is for the programme disk to be in Drive A and the data disk
     in Drive B. These defaults may be changed, however, from the SETUP option
     on the Main Menu, and the programme will also run from a single drive (of
     720Kb or more) or from a hard disk.


                                    INSTALLATION
                                    ============

     You are advised to use the DOS DISKCOPY command to back up your disks
     before you use them.

     If you intend to run the programme from the original disks, or from back-
     ups of the originals, no installation is required, although you may want to
     copy your BASIC programme (GWBASIC.EXE) onto Disk 1. Space has been left on
     the disk for this purpose. If you want to run it from a hard disk or from a
     high capacity disk, just follow the simple steps below to install it
     successfully.

     1. Create a new directory or subdirectory for the programme (if desired)
     using the DOS MKDIR or MD command (See your DOS manual).

     2. Copy all the files from the Programme Disk and the Data Disk to the
     chosen directory or sub-directory using the COPY *.* command. You may copy
     the data files to a different directory from the programme files if you
     wish.
     N.B. The Programme Disk (Disk 1) is the one containing the main programme
     file LOF.BAS

     3. When you first run the programme, select SETUP from the Main Menu, and
     alter the Drive/Directory setting to the one where you copied the data
     files. You must do this before you attempt any of the activities which load
     data from the disk. (Most of them do!).

     4. Please note that although the files from the data disk may be stored ina
     separate directory, ALL the files from the Programme Disk must be kept
     together in the same directory.











                                        (p4)








                                 HOW TO GET STARTED
                                 ==================

     A. Two 5.25" Floppy Disks

     Insert the Programme Disk in Drive A and the Data Disk in Drive B. Now turn
     on, or reboot your computer. N.B. You can reboot by pressing the Ctrl
     key,the Alt key and the Del key all at once, or by pressing the Reset
     Button if there is one.
     Alternatively, if your computer is already running and the DOS prompt is on
     the screen, insert the disks as above. Now change to Drive A if necessary
     by typing A: <<Enter>> To run the programme, type AUTOEXEC <<Enter>>
     These procedures assume that you have copied GWBASIC.EXE to Disk 1.
     A third method would be to load BASIC from the A Drive, insert Disk 1 in
     Drive A and Disk 2 in Drive B and then type RUN "LOF"  <<Enter>>

     B. One 3.5" disk

     Insert the disk in your drive and turn on, or reboot your computer.
     Alternatively, if your computer is already running and the DOS prompt is on
     the screen, make sure you are using the correct drive (Usually Drive
     A:),and then type AUTOEXEC <<Enter>>
     These procedures assume that you have copied GWBASIC.EXE to the Programme
     Disk.
     A third method would be to load BASIC from the A Drive, insert the
     Programme Disk in Drive A and then type RUN "LOF"  <<Enter>>

     C. Hard Disk

     Make sure you have followed the instructions in the previous section to
     make a directory and copy the files to it. Now change to that
     directory.(e.g. If your Hard Disk is Drive C and you created a new
     directory called LITDISK, then type CD C:\LITDISK) <<Enter>>)
     Now type AUTOEXEC <<Enter>>
     This assumes that GWBASIC is to be found in the same Directory as the BASIC
     files (Those with the extension .BAS) If it is not, you could edit the
     AUTOEXEC.BAT file to show the full Path for GWBASIC

                                   USING THE MENUS
                                   ===============
     You find your way around the different parts of the programme by using a
     very simple system of menus.
     The choices offered at each level are shown on the screen, with the first
     one high-lighted. Use the arrow keys to move the high-light to the
     selection you want. Then press the <<Enter>> key to go to that selection.If
     your computer has a numeric key-pad, you may use those arrow keys as well,
     but remember to turn off the Num Lock function.

     To Find A Menu
     If a menu is not currently showing on the screen, you can almost always get
     to one by pressing the <<Esc>> key. This will halt the current activity,and
     display the active menu.





                                        (p5)








                                    THE MAIN MENU
                                    =============

     The Main Menu Options are described briefly below.

     Introduction
     This is a welcome to the programme and a brief description of its features.

     Quizzes And Games
     Choose one of the quizzes and games available from a further menu.

     Notes
     This also leads to another menu, listing the different topics for which
     notes are available.

     Competition
     This reveals details of the competition, and gives the coded message which
     makes up Level 1 of the competition.

     The Island
     This segment reveals a map of the island as it is described in the novel,
     with enlargements of certain key areas and associated notes.

     Set-Up
     Use this selection to change the colour of the text and the menus, or to
     alter the speed at which the programme runs; also to set the drive and
     directory in which the data files are stored.

     Quit
     Return to DOS

                               QUIZZES AND GAMES MENU
                               ======================

     These are the options available on this menu.

     Quotation Quiz
     Tests your detailed knowledge of the book by asking you to choose the
     correct speaker of each quotation. Over 90 quotations to really test you.A
     good score here earns you a clue to the competition code.

     Missing Words
     Vital passages from the text can be learnt by heart, as you guess the words
     missing from the screen. Great revision value!

     Boulder Dash
     An addictive word-guessing game. To save Piggy from the threatening
     situation, you must guess the mystery word in time. Piggy's life depends on
     you!

     Ralph's Journey
     A simulated board game in the Snakes and Ladders tradition. Become Ralph as
     you follow his changing fortunes through the plot of the text. Try to beat
     your own record for completing this game!



                                        (p6)








                                     NOTES MENU
                                     ==========

     Major topics are:

     Plot Summaries
     This leads to another menu allowing you to select an overall summary or
     chapter summaries.

     Character Studies
     Another menu to select notes on any of the major characters

     Exam Questions
     A selection of notes on how to handle different exam questions.

     Themes
     Discusses the major ideas of the novel

     Background
     Brief notes on relevant points.

     Style
     A discussion of Golding's language.

     The Author
     Notes about Golding's life and a portrait.


                                    INSTRUCTIONS
                                    ============

     The programme has been designed to be as user-friendly as possible. Most of
     the activities have on-screen help. Where more detailed instructions are
     necessary, this option has been included in the menu for that particular
     activity.

     Activities which include their own instructions are:

     Quotation Quiz (Games Menu)

     Missing Words (Games Menu)

     Boulder Dash (Games Menu)

     Ralph's Journey (Games Menu)

     The Island (Main Menu)

     In addition, you can receive help on any menu by pressing <H>.








                                        (p7)








                                   THE COMPETITION
                                   ===============

     One of the unique features of this programme is the on-disk competition. To
     take part in the competition, you must first solve a code. To see the coded
     message, select COMPETITION from the Main Menu.

     Once you have cracked the code, you will be able to confirm your success
     with part one of the competition, and this confirmation will be written
     onto the disk. This will gain you access to the next level of the
     competition, a treasure hunt on the Island.

     Once the treasure is discovered, you will be able to answer a series of
     questions which make up Part Three of the competition.

     Write your solution to the coded message on the Entry Form (Included as
     page 12 of this manual), and also write the answers to the five Buried
     Treasure questions. Please note that you must be a registered user of the
     programme to be eligible to enter the competition.

     First prize is cash to the value of approximately US$50 plus computer
     products. Second prize US$15 plus computer products. Twenty consolation
     prizes of computer products. The value of the prizes may vary slightly from
     year to year, but should increase rather than decrease (assuming enough of
     you lovely people out there in Computer-land buy my programmes).

     The competition is an annual one closing at the end of November each
     year,and with the winning entries drawn at the beginning of December.

     All prize-winners will be notified by post, and all entrants in the
     competition will receive a list of results.


























                                        (p8)








                              CUSTOMIZING THE PROGRAMME
                              =========================

     With a modicum of knowledge and the ability to use a text processor, you
     should be able to customise some of the data used in the programme, if you
     so desire. The most obvious areas where this can be accomplished are as
     follows:

     QUOTATION QUIZ  - The data for this quiz is contained in the text file
     QUOTES. on Disk 2. The first item in the file is the number of quotes
     currently in the file. Don't forget to update this if you add or delete
     quotes. Each question must contain the following items: The quotation
     itself, the correct answer, 3 incorrect answers. You will need to
     experiment to get the correct formatting on the screen. A quick look at the
     file should make it clear what to do if you are still confused.

     NOTES - I don't recommend that you alter the notes, as my system for
     printing them to the screen is a little peculiar to say the least, but if
     you must experiment, then go ahead. The first item in each file is the
     number of screens or pages of data, then each 'page' has the number of data
     items on that page. Beginning an item with a * indicates that the item is
     to be high-lighted in the text. To print a blank line, include an item
     consisting of 4 or more spaces enclosed in quotation marks. You may need to
     experiment a little to find out just how much will fit on each page.

     MISSING WORDS - If you have a lot of time on your hands, and are by nature
     a patient and tolerant person like me, then you can try writing different
     passages for the Missing Words game. I'll leave you to figure out how it's
     done! Unfortunately, you won't be able to change the reference to the
     passage in the GAMES Menu.

     I guess that's about all, unless you are one of those people who can't
     resist seein what Golding looks like wearing spectacles and a false nose.
     The pictures are all in BLOAD format.

     The later programmes in the series are more suitable for customising than
     this one. This is due to the fact that I came to realise how much easier it
     would be to leave the bulk of the programme as it was and just to alter the
     data files, each time I took on the challenge of a new text.


















                                        (p9)








                                 ABOUT THE PROGRAMME
                                 ===================

     This programme began its life as a set of quizzes I programmed for my own
     Literature students at a High School here in Singapore. Over the last two
     years, the programme has grown and developed and gone through a variety of
     versions, to become what it is today. It has been quite well-received by
     students here who face the Cambridge GCE O Level examinations.

     Originally, as the new owner of an Apple II clone, I programmed in
     Applesoft Basic. My first programme (Julius Caesar) fitted easily onto one
     5.25" floppy disk,and consisted mainly of three games and a segment on the
     Globe Theatre. I believed then as I believe now, that people do not really
     want to sit and read pages of notes from a computer monitor.

     However, feedback from users indicated a desire for more notes, so the
     programme quickly grew. It also changed direction to become IBM-compatible
     to run on the computer of choice of 80% of the student population here in
     Singapore. So I put my prejudices aside and picked up a smattering of
     GWBasic.

     'Lord of the Flies' was the last programme I wrote in GWBASIC. After this,
     Microsoft QuickBasic makes its appearance. I still see room for
     improvements and additions to the programme, and each new version on each
     different text is a little more sophisticated than its predecessor. Who
     knows what the future will bring?

     Currently, available titles are:
     ANIMAL FARM
     MACBETH
     ROMEO AND JULIET
     LORD OF THE FLIES by William Golding
     WALKABOUT by James Vance Marshall
     THE GHOST OF THOMAS KEMPE by Penelope Lively

     and next on my hit-list

     TO KILL A MOCKINGBIRD by Harper Lee



















                                        (p10)








                                  REGISTRATION FORM
                                  =================

     To Steve Herbert
     154 Sixth Ave.
     Avenue Park
     Singapore 1027

     A. PERSONAL USE
     ===============
     Please enroll me as a registered user of your program 'LORD OF THE FLIES'.
     I enclose payment in the form of:
                                       *Bank Draft in Singapore currency S$20
                                       *Personal cheque in any currency to the
                                        equivalent of US$15


     B. SITE LICENCE
     ===============
     Please register my application for a Site Licence for the use of your
     programme 'LORD OF THE FLIES'. I understand that the Licence permits the
     making of as many copies as desired of the above programme for use within
     the physical boundaries of any one school or other educational institution,
     in a classroom situation only. It does not permit copying and/or
     distribution of the programme for individual use outside the classroom.
     I enclose payment in the form of:
                                       *Bank Draft in Singapore currency S$100
                                       *Personal cheque in any currency to the
                                        equivalent of US$60
     *Delete one


     NAME.............................................................

     ADDRESS....................................................................

             ...................................................................

             ...................................................................

     SCHOOL.....................................................................

     OCCUPATION ..............................AGE ............

     PROGRAMME OBTAINED FROM .........................................

     COMMENTS................................................................
          
             ................................................................

             ................................................................

             ................................................................

             ................................................................


                                        (p11)









                                     ENTRY FORM
                                     ==========

     LEVEL ONE - CODE BREAKING  Write the decoded message clearly and accurately
     on the lines below
     ...........................................................................

     ...........................................................................

     ...........................................................................

     ...........................................................................

     ...........................................................................

     ...........................................................................

     ...........................................................................

     LEVEL TWO - Buried Treasure and LEVEL THREE - Question Answers  Write your
     answers to the five buried treasure questions clearly and accurately in the
     spaces below.
     1. ........................................................................

        ....................................................................... 

     2. ........................................................................

        ....................................................................... 

     3. ........................................................................

        ........................................................................

     4..........................................................................

        ........................................................................

     5. ........................................................................

        ........................................................................


     NAME.............................................................

     ADDRESS....................................................................

             ...................................................................

             ...................................................................






                                        (p12)



MISSING.BAS

10 ON ERROR GOTO 15000
20 KEY 15,CHR$(&H4) + CHR$(70)
30 KEY 16,CHR$(&H44) + CHR$(70)
40 KEY(15) ON
45 KEY(16) ON
50 ON KEY(15) GOSUB 16000:ON KEY(16) GOSUB 16000
55 DIM T$(20,20),NL$(16),NL(16),SCR(15)
60 OPEN "config.lof" FOR INPUT AS #1
70 INPUT #1,SPEED,FG,BG,MC,DD$
75 IF RIGHT$(DD$,1)<>"\" THEN DD$=DD$+"\"
80 CLOSE
100 SCREEN ,,1,0:COLOR FG,BG:CLS:LOCATE 3,20:COLOR BG,FG:PRINT " MISSING WORDS MENU HELP SCREEN ";
110 SCREEN ,,1,0:COLOR FG,BG:CLS:LOCATE 3,20:COLOR BG,FG:PRINT " MISSING WORDS MENU HELP SCREEN ";
120 LOCATE 6,12:COLOR FG,BG:PRINT "Use the arrow keys to move the high-lighted bar";
130 LOCATE 7,18:PRINT "up and down the menu options.";
140 LOCATE 10,14:PRINT "If you are using the arrow keys on the";
150 LOCATE 11,14:PRINT "number key-pad, be sure NUM LOCK is off.";
160 LOCATE 14,10:PRINT "Use the <Enter> key to select the high-lighted option.";
170 LOCATE 25,30:COLOR BG,FG:PRINT " ANY KEY TO CONTINUE ";
180 SCREEN ,,0,0
190 FOR J=1 TO 20:FOR K=1 TO 20:T$(J,K)="":NEXT:NEXT
200 M$(0)="MISSING WORDS MENU"
210 M$(1)="DEATH OF PIGGY":M$(2)="DEATH OF SIMON":M$(3)="LORD OF THE FLIES"
220 M$(4)="ELECTION OF RALPH":M$(5)="THE END"
230 M$(6)="INSTRUCTIONS":M$(7)="RETURN TO MAIN MENU"
240 NM=7
250 GOSUB 5000
260 CM=0
270 IF M=7 THEN 1000
280 ON M GOTO 300,400,500,600,700,800
300 F$="death":N$="DEATH OF PIGGY"
310 GOSUB 4000
320 GOTO 4390
400 F$="KILL":N$="DEATH OF SIMON"
410 GOSUB 4000
420 GOTO 4390
500 F$="LORD":N$="LORD OF THE FLIES"
510 GOSUB 4000
520 GOTO 4390
600 F$="ELECTION":N$="ELECTION OF RALPH"
610 GOSUB 4000
620 GOTO 4390
700 F$="END":N$="THE END"
710 GOSUB 4000
720 GOTO 4390
800 COLOR FG,BG:CLS
810 LOCATE 1,30:PRINT "INSTRUCTIONS"
820 PRINT
830 PRINT "This quiz tests your memory of certain important passages in the novel.";
840 PRINT
850 PRINT "Select the passage you want from the Menu and you will see it printed on the    screen with a few key words missing."
860 PRINT
870 PRINT "The object of the game is to guess the missing word. To identify it, just type  in the first letter."
880 PRINT "The current missing word is indicated by flashing question marks."
890 PRINT
900 PRINT "If you guess wrongly at first, you will receive one more chance before the      correct answer is given and you move on to the next word."
910 PRINT
920 PRINT "To leave the game before completing all the words, just press <Esc>."
930 LOCATE 18,20:PRINT "Good Luck...";
950 LOCATE 25,29:COLOR BG,FG:PRINT " ANY KEY TO CONTINUE ";
960 K$=INKEY$:IF K$="" THEN 960
970 GOTO 100
1000 CLS
1010 LOCATE 10,10:PRINT "Loading Main Menu...";
1020 LOCATE 13,13:PRINT "Just a minute...";
1030 RUN "lof"
2000 OB=FG:IF LEFT$(TEXT$,1)="*" THEN FG=15:TEXT$=RIGHT$(TEXT$,LEN(TEXT$)-1)
2040 COLOR FG,BG
2050 L=LEN(TEXT$):IF L<63 THEN LOCATE ,10:PRINT TEXT$:FG=OB:RETURN
2060 NL=INT(L/62)
2070 FOR J=1 TO NL+1
2080 L=LEN(TEXT$):IF L<63 THEN TEXT$(J)=TEXT$:GOTO 2170
2090 N=62
2100 X$=MID$(TEXT$,N+1,1)
2110 IF X$=" " THEN TEXT$(J)=LEFT$(TEXT$,62):TEXT$=RIGHT$(TEXT$,L-63):GOTO 2170
2120 IF MID$(TEXT$,62,1)=" " THEN TEXT$(J)=LEFT$(TEXT$,62):TEXT$=RIGHT$(TEXT$,L-62):GOTO 2170
2130 N=N-1
2140 X$=MID$(TEXT$,N,1)
2150 IF X$=" " THEN TEXT$(J)=LEFT$(TEXT$,N):TEXT$=RIGHT$(TEXT$,L-N):GOTO 2170
2160 GOTO 2130
2170 NEXT
2180 FOR J=1 TO NL+1
2190 LOCATE ,10:PRINT TEXT$(J)
2200 NEXT
2210 FG=OB:RETURN
4000 CLS:LOCATE 10,10:PRINT "Loading Data...";:LOCATE 13,13:PRINT "Please Wait...";:SCREEN ,,1,0:CLS:LOCATE 10,10:PRINT "Loading Data...";:LOCATE 13,13:PRINT "Please Wait...";
4010 SCR=0:TQ=0:QC=0:PC=0
4020 LC=INT((80-LEN(N$))/2)
4030 F$=DD$+F$:OPEN F$ FOR INPUT AS #2
4040 INPUT #2,NS$:NS=VAL(NS$)
4050 FOR J=0 TO NS-1
4060 INPUT #2,NL$(J),NQ$(J):NL(J)=VAL(NL$(J)):NQ(J)=VAL(NQ$(J))
4070 FOR K=0 TO NL(J)-1
4080 INPUT #2,T$(J,K):NEXT
4090 FOR K=1 TO NQ(J):INPUT #2,Q$(J+1,K),V(J+1,K),H(J+1,K)
4100 NEXT:NEXT:CLOSE
4110 FOR Z=1 TO NS
4120 SCR=SCR+1
4130 SCREEN ,,1:CLS:SCREEN ,,0,1:CLS:DEF SEG=&HB800:BLOAD"screen",0
4140 COLOR BG,FG:LOCATE 5,LC:PRINT N$:COLOR 12,0:LOCATE 2,70:PRINT SCR;:LOCATE ,76:PRINT NS;:LOCATE  7,10
4150 FOR K=0 TO NL(Z-1)-1
4160 TEXT$=T$(Z-1,K)
4170 GOSUB 2000:NEXT
4175 LOCATE 24,2:PRINT SPC(77);:LOCATE 7,10
4180 SCREEN ,,0,0
4190 FOR X=1 TO NQ(SCR-1)
4195 DEF SEG=0:POKE 1050,PEEK(1052):DEF SEG
4200 COLOR BG,FG:LOCATE 25,23:PRINT "GIVE FIRST LETTER OF MISSING WORD";
4210 LOCATE V(SCR,X),H(SCR,X):PRINT "         ";
4220 FOR PA=1 TO SPEED*70:NEXT
4230 LOCATE V(SCR,X),H(SCR,X):PRINT "_?__?__?_";
4240 'IF QR=1 THEN QR=0:GOTO 4210
4250 K$=INKEY$:CO=CO+1:IF CO=SPEED*30 THEN  CO=0:GOTO 4210
4260 IF K$="" THEN 4250
4270 IF K$=CHR$(27) THEN 4390
4280 TQ=TQ+1 ':QR=1
4290 ANS$=Q$(SCR,X)
4300 IF K$=LEFT$(ANS$,1) OR ASC(K$)=ASC(LEFT$(ANS$,1)) +32 THEN GOSUB 4470:GOTO 4340
4310 IF K$<>LEFT$(ANS$,1) AND ASC(K$)<>ASC(LEFT$(ANS$,1))+32 AND WO=1 THEN GOSUB 4660:GOTO 4340
4320 IF K$<>LEFT$(ANS$,1) AND ASC(K$)<>ASC(LEFT$(ANS$,1))+32 AND WO=0 THEN GOSUB 4600
4330 IF WO=1 THEN LOCATE 23,22:FOR K=1 TO 38:PRINT " ";:NEXT:LOCATE 23,35:PRINT "TRY AGAIN";:GOTO 4250
4340 NEXT
4350 LOCATE 25,23:PRINT "      ANY KEY TO CONTINUE        ";
4360 K$=INKEY$:IF K$="" THEN 4360
4370 NEXT
4380 RETURN
4390 WIDTH 80:COLOR FG,BG:CLS:IF TQ=0 THEN PC=0:GOTO 4410
4400 PC=INT(QC/TQ*100)
4410 LOCATE 5,3:PRINT "TOTAL QUESTIONS : ";TQ
4420 LOCATE 10,3:PRINT "QUESTIONS CORRECT : ";QC
4430 LOCATE 15,3:PRINT "PERCENTAGE CORRECT : ";PC;"%";
4440 LOCATE 23,23:PRINT "ANY KEY FOR MENU"
4450 K$=INKEY$:IF K$="" THEN 4450
4460 GOTO 100
4470 SOUND 64,3:SOUND 32767,SP/5:SOUND 64,3:SOUND 99,3:SOUND 128,9
4480 QC=QC+1:WO=0
4490 LOCATE 23,21:PRINT SPACE$(36);:R=INT(RND(1)*4)+1
4500 LOCATE 23,25:COLOR BG,FG:ON R GOTO 4510,4520,4530,4540
4510 PRINT "          EXCELLENT";:GOTO 4550
4520 PRINT "         GOOD GUESS";:GOTO 4550
4530 PRINT "    WELL DONE! KEEP IT UP.";:GOTO 4550
4540 PRINT "    YOU'RE DOING JUST FINE.";
4550 LOCATE V(SCR,X),H(SCR,X)
4560 COLOR FG,BG:PRINT SPACE$(9);:LOCATE V(SCR,X),H(SCR,X)
4570 IF LEN(ANS$)<7 THEN LOCATE ,H(SCR,X)+1
4580 IF LEN(ANS$)<5 THEN LOCATE ,H(SCR,X)+2
4590 COLOR BG,FG:PRINT ANS$:FOR PA=1 TO SPEED*300:NEXT:RETURN
4600 SOUND 64,20
4610 LOCATE 23,23:COLOR BG,FG:PRINT "     SORRY --- THAT'S NOT RIGHT    ";
4620 WO=1
4630 SOUND 32767,SPEED*3
4640 TQ=TQ-1
4650 RETURN
4660 WO=0
4670 SOUND 200,2:SOUND 75,6
4680 LOCATE 23,23:PRINT "     OOPS! STILL NOT CORRECT!    ";
4690 FOR K=1 TO 2
4700 SOUND 32767,SPEED*2:LOCATE V(SCR,X),H(SCR,X):PRINT SPACE$(9);
4710 LOCATE V(SCR,X),H(SCR,X)
4720 IF LEN(ANS$)<7 THEN LOCATE ,H(SCR,X)+1
4730 IF LEN(ANS$)<5 THEN LOCATE ,H(SCR,X)+2
4740 FOR J=1 TO LEN(ANS$):SOUND 200,1/4:PRINT MID$(ANS$,J,1);:SOUND 32767,SPEED:NEXT:NEXT
4750 SOUND 32767,SPEED*3
4760 RETURN
4770 END
5000 HC=INT((80-LEN(M$(0)))/2)
5010 COLOR MC,0,0:CLS:LOCATE 1,1:PRINT CHR$(201);:LOCATE 1,80:PRINT CHR$(187);:LOCATE 24,1:PRINT CHR$(200);:LOCATE 24,80:PRINT CHR$(188);
5020 LOCATE 3,1:PRINT CHR$(199);:LOCATE 3,80:PRINT CHR$(182);:LOCATE 22,1:PRINT CHR$(199);:LOCATE 22,80:PRINT CHR$(182);
5030 LOCATE 2,1:PRINT CHR$(186);:LOCATE 2,80:PRINT CHR$(186);:LOCATE 23,1:PRINT CHR$(186);:LOCATE 23,80:PRINT CHR$(186);
5040 LOCATE 1,2:PRINT STRING$(78,205);:LOCATE 3,2:PRINT STRING$(78,196);:LOCATE 22,2:PRINT STRING$(78,196);:LOCATE 24,2:PRINT STRING$(78,205);
5050 FOR X=4 TO 21:LOCATE X,1:PRINT CHR$(186);:NEXT:FOR X=4 TO 21:LOCATE X,80:PRINT CHR$(186);:NEXT
5060 COLOR 0,MC,1:LOCATE 2,HC-5:PRINT "     ";M$(0);"     ";
5070 COLOR 6,0,0:LOCATE 25,32:PRINT "Press H for Help";
5080 HJ=NM*2+3
5090 COLOR 7,0,0
5100 FOR J=5 TO HJ STEP 2:M=(J-3)/2:LOCATE J,27:PRINT M$(M);:NEXT
5110 LOCATE 23,18
5120 COLOR 0,MC,1
5130 PRINT "     USE ARROW KEYS AND <ENTER> TO SELECT     ";
5140 COLOR 7,0,0
5150 J=5:M=1:K=HJ:GOSUB 5280
5160 IF CM=1 THEN FOR CL=200 TO 120 STEP -5:SOUND CL,1/4:NEXT:RETURN
5170  GOSUB 5190
5180 GOTO 5160
5190 K$=INKEY$:IF K$="" THEN 5190
5200 K=J
5210 IF LEN(K$)=1 THEN 5240
5220 IF RIGHT$(K$,1)=CHR$(72) OR RIGHT$(K$,1)=CHR$(75) THEN J=J-2:IF J=3 THEN J=HJ
5230 IF RIGHT$(K$,1)=CHR$(77) OR RIGHT$(K$,1)=CHR$(80) THEN J=J+2:IF J=HJ+2 THEN J=5
5240 IF K$="h" OR K$="H" THEN GOSUB 5600
5250 IF K$=CHR$(13) THEN CM=1:RETURN
5260 SOUND 255,1
5270 M=(J-3)/2
5280 N=(K-3)/2
5290 LOCATE K,27:PRINT M$(N);
5300 COLOR 0,7,0
5310 LOCATE J,27:PRINT M$(M);
5320 COLOR 7,0,0
5330 RETURN
5340 REM *** SCREEN CLEAR ***
5350 CLS:RETURN
5500 GOSUB 5350
5510 LOCATE 10,10:PRINT "LOADING..."
5520 LOCATE 13,13:PRINT "PLEASE WAIT..."
5530 RETURN
5600 SCREEN ,,,1
5610 X$=INKEY$:IF X$="" THEN 5610
5620 SCREEN ,,,0:RETURN
14998 END
14999 'ERROR HANDLING
15000 SCREEN 0,0,0:WIDTH 80:COLOR 7,0,0:CLS
15010 LOCATE 1,30:PRINT "*** ERROR ***";
15020 IF ERR=27 THEN GOSUB 15200:GOTO 15130
15030 IF ERR=53 THEN GOSUB 15300:GOTO 15130
15040 IF ERR=70 THEN GOSUB 15400:GOTO 15130
15050 IF ERR=71 THEN GOSUB 15500:GOTO 15130
15060 IF ERR=75 OR ERR=76 THEN GOSUB 15600:GOTO 15130
15070 LOCATE 10,10:PRINT "Unexpected error"
15080 LOCATE 12,10:PRINT "Note the following information";
15090 LOCATE 14,10:PRINT "Error number ";ERR;
15100 LOCATE 16,10:PRINT "Line Number ";ERL;
15110 LOCATE 18,10:PRINT "Also remember what you were doing when the error occurred.";
15120 LOCATE 19,10:PRINT "If this error continues, call 4695784 for help."
15130 LOCATE 23,10:PRINT "ANY KEY TO CONTINUE OR <ESC> TO RETURN TO MAIN MENU";
15140 K$=INKEY$:IF K$="" THEN 15140
15150 RESUME 15160
15160 CLS:LOCATE 10,10:PRINT "Just a moment...";
15170 RUN "lof"
15200 LOCATE 4,1:PRINT "Printer error. Your printer must be loaded with paper and be turned on.";
15210 RETURN
15300 LOCATE 4,1:PRINT "Can't find the file."
15310 LOCATE 5,1:PRINT "Check that the correct disk is in Drive B and use the SETUP programme to set thecorrect Drive and Directory for the data files.";
15320 LOCATE 7,1:PRINT "If the error persists, the file may have been corrupted. Recopy it from your    back-up disk.";
15330 RETURN
15400 LOCATE 4,1:PRINT "Your diskette is write-protected.";
15410 LOCATE 6,1:PRINT "Remove the write-protect tab and try this programme again.";
15420 RETURN
15500 LOCATE 4,1:PRINT "Disk Drive Error";
15510 LOCATE 6,1:PRINT "Check that the drive door is shut and the correct disk is in the drive.:;
15520 RETURN
15600 LOCATE 4,1:PRINT "DOS Path error";
15610 LOCATE 6,1:PRINT "Run the SETUP programme from the main menu to select the correct drive and      directory.";
15620 RETURN
16000 SCREEN 0:CLS:RUN "LOF"

QUOTATIO.BAS

10 ON ERROR GOTO 15000
20 KEY 15,CHR$(&H4) + CHR$(70)
30 KEY 16,CHR$(&H44) + CHR$(70)
40 KEY(15) ON:KEY(16) ON
50 ON KEY(15) GOSUB 16000:ON KEY(16) GOSUB 16000
55 RANDOMIZE TIMER
60 OPEN "config.lof" FOR INPUT AS #1
70 INPUT #1,SPEED,FG,BG,MC,DD$
75 IF RIGHT$(DD$,1)<>"\" THEN DD$=DD$+"\"
80 CLOSE
85 DIM Q$(92),A1$(92),A2$(92),A3$(92),CA$(92)
100 Q=0:QC=0:PC=0:SCREEN 0:WIDTH 80:COLOR FG,0,0:CLS
105 DEF SEG=&HB800:F$=DD$+"QUOTINST":BLOAD F$,&H2000:F$=DD$+"QUOTREV":BLOAD F$,&H3000
110 SCREEN ,,1,0:COLOR FG,BG:CLS:LOCATE 3,29:COLOR BG,FG:PRINT "MAIN MENU HELP SCREEN";
120 LOCATE 6,10:COLOR FG,BG:PRINT "Use the arrow keys to move the high-lighted bar";
130 LOCATE 7,10:PRINT "up and down the menu options.";
140 LOCATE 10,10:PRINT "If you are using the arrow keys on the";
150 LOCATE 11,10:PRINT "number key-pad, be sure NUM LOCK is off.";
160 LOCATE 14,10:PRINT "Use the <Enter> key to select the high-lighted option.";
170 LOCATE 25,30:COLOR BG,FG:PRINT " ANY KEY TO CONTINUE ";
180 SCREEN ,,0,0
200 M$(0)="QUOTATION QUIZ MENU"
210 M$(1)="QUIZ":M$(2)="INSTRUCTIONS":M$(3)="REVISION"
220 M$(4)="RETURN TO MAIN MENU"
230 M$(6)="SET-UP":M$(7)="QUIT"
240 NM=4
250 GOSUB 5000
255 IF QUICK=1 THEN QUICK=0:GOSUB 5170
260 CM=0
270 ON M GOTO 500,900,3000,4000
500 F=0:X=0:J=0:CO=0
510 F$=DD$+"quotes":OPEN F$ FOR INPUT AS #3
520 INPUT #3,CO
530 FOR X=1 TO CO:INPUT #3,Q$(X),CA$(X),A1$(X),A2$(X),A3$(X):NEXT
540 CLOSE
550 GOSUB 640:GOSUB 1130
560 RE$=INKEY$:YN$="":IF RE$="" THEN 560
570 IF RE$=CHR$(27) THEN 1290
580 IF RE$<>"A" AND RE$<>"a" AND RE$<>"B" AND RE$<>"b" AND RE$<>"C" AND RE$<>"c" AND RE$<>"D" AND RE$<>"d" THEN 560
590 Q=Q+1
600 IF RE$=ANS$ OR    ASC(RE$)=ASC(ANS$) +32 THEN GOSUB 1440
610 IF RE$<>ANS$ AND ASC(RE$)<>ASC(ANS$)+32 THEN GOSUB 1840
620 IF YN$="Y" THEN 560
630 IF Q<CO THEN 550 ELSE GOSUB 1290
640 SCREEN 0:WIDTH 40
660 COLOR 0,1,1:CLS:COLOR 0,7,1
670 LOCATE 1,2:PRINT STRING$(38,205);
680 LOCATE 4,2:PRINT STRING$(38,205);
690 LOCATE 22,2:PRINT STRING$(38,205);
700 LOCATE 24,2:PRINT STRING$(38,205);
710 LOCATE 1,1:PRINT CHR$(201);:LOCATE 2,1:PRINT CHR$(186);:LOCATE 3,1:PRINT CHR$(186);:LOCATE 4,1:PRINT CHR$(200);
720 LOCATE 1,40:PRINT CHR$(187);:LOCATE 2,40:PRINT CHR$(186);:LOCATE 3,40:PRINT CHR$(186);:LOCATE 4,40:PRINT CHR$(188);
730 LOCATE 22,1:PRINT CHR$(201);:LOCATE 23,1:PRINT CHR$(186);:LOCATE 24,1:PRINT CHR$(200);
740 LOCATE 22,40:PRINT CHR$(187);:LOCATE 23,40:PRINT CHR$(186);:LOCATE 24,40:PRINT CHR$(188);
750 IF COL>0 THEN 770
760 COLOR 0,1,1
770 LOCATE 11,1:PRINT STRING$(40,247);
780 IF COL>0 THEN 800
790 COLOR 0,7,1
800 LOCATE 2,2:PRINT "Press A,B,C or D to identify the      ";:LOCATE 3,2:PRINT "character who said these words.       ";
810 Q$=STR$(Q):Q$=RIGHT$(Q$,LEN(Q$)-1):IF LEN (Q$)=1 THEN Q$=Q$+" "
820 QC$=STR$(QC):QC$=RIGHT$(QC$,LEN(QC$)-1):IF LEN (QC$)=1 THEN QC$=QC$+" "
830 IF Q=0 THEN 850
840 PC=INT(QC/Q*100)
850 PC$=STR$(PC):PC$=RIGHT$(PC$,LEN(PC$)-1)
860 IF LEN(PC$)<3 THEN PC$=PC$+" ":GOTO 860
870 LOCATE 23,2:PRINT "QUESTIONS:";Q$;"  CORRECT:";QC$;"  PERCENT:";PC$;"%";
880 LOCATE 25,13:PRINT " <ESC> TO QUIT ";
890 RETURN
900 SCREEN ,,,2
930 K$=INKEY$:IF K$="" THEN 930
940 SCREEN,,,0:QUICK=1:GOTO 255
1070 LOCATE 25,9:PRINT " ANY KEY TO CONTINUE ";
1090 K$=INKEY$:IF K$="" THEN 1090
1100 GOTO 100
1110 FOR PA=1 TO 2000:NEXT:RETURN
1120 FOR J=1 TO LEN(T$):PRINT MID$(T$,J,1);:FOR PA=1 TO 150:NEXT:NEXT:RETURN
1130 IF COL>0 THEN 1150
1140 COLOR 7,1,1
1150 X=INT(RND(1)*92+1)
1160 IF Q$(X)="" THEN 1150
1170 LOCATE 7,1:PRINT Q$(X):Q2$=Q$(X)
1180 J=INT(RND(1)*4+1):ON J GOTO 1190,1210,1230,1250
1190 ANS$="A":LOCATE 15,1:PRINT"A. ";CA$(X);:LOCATE 15,20:PRINT "C. ";A2$(X);
1200 LOCATE 18,1:PRINT "B. ";A1$(X);:LOCATE 18,20:PRINT "D. ";A3$(X);:GOTO 1270
1210 ANS$="B":LOCATE 15,1:PRINT "A. ";A1$(X);:LOCATE 15,20:PRINT "C. ";A2$(X);
1220 LOCATE 18,1:PRINT "B. ";CA$(X);:LOCATE 18,20:PRINT "D. ";A3$(X);:GOTO 1270
1230 ANS$="C":LOCATE 15,1:PRINT"A. ";A1$(X);:LOCATE 15,20:PRINT "C. ";CA$(X);
1240 LOCATE 18,1:PRINT "B. ";A2$(X);:LOCATE 18,20:PRINT "D. ";A3$(X);:GOTO 1270
1250 ANS$="D":LOCATE 15,1:PRINT "A. ";A1$(X);:LOCATE 15,20:PRINT "C. ";A3$(X);
1260 LOCATE 18,1:PRINT "B. ";A2$(X);:LOCATE 18,20:PRINT "D. ";CA$(X);
1270 Q$(X)=""
1280 RETURN
1290 SCREEN 0,1,1,1:CLS
1300 PRINT TAB(12)"*****************"
1310 PRINT TAB(12)"*               *"
1320 PRINT TAB(12)"* SCORE SUMMARY *"
1330 PRINT TAB(12)"*               *"
1340 PRINT TAB(12)"*****************"
1350 LOCATE 8,1:PRINT "TOTAL QUESTIONS:";:PRINT Q
1360 LOCATE 13,1:PRINT "QUESTIONS CORRECT:";:PRINT QC
1370 LOCATE 18,1:PRINT "PERCENT CORRECT:";:PRINT PC
1380 LOCATE 25,10:PRINT"ANY KEY TO CONTINUE";
1390 K$=INKEY$:IF K$="" THEN 1390
1395 IF Q>=20 AND PC>=90 THEN GOSUB 6000
1400 GOTO 100
1440 QC=QC+1:F=0
1450 J=(ASC(ANS$)-64):ON J GOTO 1460,1530,1590,1650
1460 FOR J=1 TO 9:LOCATE 15,4
1480 COLOR 7,4,1
1490 PRINT CA$(X);:FOR PA=1 TO 30:NEXT:LOCATE 15,4
1500 IF COL>0 THEN 1520
1510 COLOR 4,7,1
1520 PRINT CA$(X):FOR PA=1 TO 30:NEXT:NEXT:GOTO 1710
1530 FOR J=1 TO 9:LOCATE 18,4
1540 IF COL>0 THEN 1560
1550 COLOR 7,4,1
1560 PRINT CA$(X);:FOR PA=1 TO 30:NEXT:LOCATE 18,4:IF COL>0 THEN 1580
1570 COLOR 4,7,1
1580 PRINT CA$(X);:FOR PA=1 TO 30:NEXT:NEXT:GOTO 1710
1590 FOR J=1 TO 9:LOCATE 15,23
1600 IF COL>0 THEN 1620
1610 COLOR 7,4,1
1620 PRINT CA$(X);:FOR PA=1 TO 30:NEXT:LOCATE 15,23:IF COL>0 THEN 1640
1630 COLOR 4,7,1
1640 PRINT CA$(X);:FOR PA=1 TO 30:NEXT:NEXT:GOTO 1710
1650 FOR J=1 TO 9:LOCATE 18,23
1660 IF COL>0 THEN 1680
1670 COLOR 7,4,1
1680 PRINT CA$(X);:FOR PA=1 TO 30:NEXT:LOCATE 18,23:IF COL>0 THEN 1700
1690 COLOR 4,7,1
1700 PRINT CA$(X);:FOR PA=1 TO 30:NEXT:NEXT
1710 IF COL>0 THEN 1730
1720 COLOR 7,1,1
1730 PLAY "MBMNO3L16P16CEG>MSL4CP16"
1740 GOSUB 2320
1750 J=INT(RND(1)*4+1):ON J GOTO 1760,1770,1780,1790
1760 R$="CORRECT. WELL DONE!":GOTO 1800
1770 R$="YES. GOOD ANSWER!":GOTO 1800
1780 R$="GOOD! KEEP TRYING.":GOTO 1800
1790 R$="EXCELLENT!"
1800 LOCATE 2,(INT(20-LEN(R$)/2))
1810 FOR J=1 TO LEN (R$):PRINT MID$(R$,J,1);:NEXT
1820 FOR PA=1 TO 3000:NEXT
1830 RETURN
1840 J=(ASC(RE$)-64):IF J>4 THEN J=J-32
1850 ON J GOTO 1860,1900,1990,2070
1860 LOCATE 15,4
1870 IF COL>0 THEN 1890
1880 COLOR 7,4,1
1890 PRINT A1$(X);:GOTO 2110
1900 IF ANS$="A" THEN 1950
1910 LOCATE 18,4
1920 IF COL>0 THEN 1940
1930 COLOR 7,4,1
1940 PRINT A2$(X);:GOTO 2110
1950 LOCATE 18,4
1960 IF COL>0 THEN 1980
1970 COLOR 7,4,1
1980 PRINT A1$(X);:GOTO 2110
1990 IF ANS$="D" THEN 2040
2000 LOCATE 15,23
2010 IF COL>0 THEN 2030
2020 COLOR 7,4,1
2030 PRINT A2$(X);:GOTO 2110
2040 IF COL>0 THEN 2060
2050 COLOR 7,4,1
2060 LOCATE 15,23:PRINT A3$(X);:GOTO 2110
2070 LOCATE 18,23
2080 IF COL>0 THEN 2100
2090 COLOR 7,4,1
2100 PRINT A3$(X);
2110 IF COL>0 THEN 2130
2120 COLOR 7,1,1
2130 PLAY "MBT80MNO4L16P16C<GEMSO1L2CL16P16":GOSUB 2320
2140 IF F=1 THEN 2210
2150 R$="SORRY, THAT'S NOT CORRECT."
2160 LOCATE 2,7:FOR J=1 TO LEN(R$):PRINT MID$(R$,J,1);:NEXT
2170 LOCATE 3,16:PRINT "TRY AGAIN."
2180 F=1:Q=Q-1:YN$="Y"
2190 FOR PA=1 TO 3000:NEXT
2200 RETURN
2210 F=0:YN$=""
2220 SW$="OOPS! STILL NOT CORRECT.":LOCATE 2,2
2230 FOR J=1 TO LEN(SW$):PRINT MID$(SW$,J,1);:NEXT
2240 LOCATE 3,7:PRINT "THE ANSWER WAS ";
2250 IF COL>0 THEN 2270
2260 COLOR 7,0,1
2270 PRINT CA$(X);:IF COL>0 THEN 2290
2280 COLOR 7,1,1
2290 LOCATE 25,13:PRINT " PRESS ANY KEY ";
2300 K$=INKEY$:IF K$="" THEN 2290
2310 RETURN
2320 IF COL>0 THEN 2340
2330 COLOR 0,7,1
2340 FOR J=20 TO 2 STEP -1:LOCATE 2,J:PRINT " ";:LOCATE 3,J:PRINT " ";
2350 LOCATE 2,40-J:PRINT " ";:LOCATE 3,40-J:PRINT " ";
2360 NEXT:RETURN
2370 LOCATE 6,1:FOR J=1 TO 40:PRINT "'";:NEXT
2380 RETURN
2390 PC=INT(QC/Q*100)
2400 LOCATE 23,1:PRINT "QUESTIONS:";:PRINT Q;:LOCATE 23,15:PRINT "CORRECT:";:PRINT QC;
2410 LOCATE 23,26:PRINT "PERCENT:";:PRINT PC"% ";
2420 LOCATE 25,13:PRINT "<ESC> TO QUIT";
2430 RETURN
3000 SCREEN ,,,3
3040 K$=INKEY$:IF K$="" THEN 3040
3050 SCREEN,,,0:QUICK=1:GOTO 255
4000 CLS:LOCATE 10,10
4010 PRINT "Just a moment...";
4020 RUN "lof"
5000 HC=INT((80-LEN(M$(0)))/2)
5010 COLOR MC,0,0:CLS:LOCATE 1,1:PRINT CHR$(201);:LOCATE 1,80:PRINT CHR$(187);:LOCATE 24,1:PRINT CHR$(200);:LOCATE 24,80:PRINT CHR$(188);
5020 LOCATE 3,1:PRINT CHR$(199);:LOCATE 3,80:PRINT CHR$(182);:LOCATE 22,1:PRINT CHR$(199);:LOCATE 22,80:PRINT CHR$(182);
5030 LOCATE 2,1:PRINT CHR$(186);:LOCATE 2,80:PRINT CHR$(186);:LOCATE 23,1:PRINT CHR$(186);:LOCATE 23,80:PRINT CHR$(186);
5040 LOCATE 1,2:PRINT STRING$(78,205);:LOCATE 3,2:PRINT STRING$(78,196);:LOCATE 22,2:PRINT STRING$(78,196);:LOCATE 24,2:PRINT STRING$(78,205);
5050 FOR X=4 TO 21:LOCATE X,1:PRINT CHR$(186);:NEXT:FOR X=4 TO 21:LOCATE X,80:PRINT CHR$(186);:NEXT
5060 COLOR 0,MC:LOCATE 2,HC-5:PRINT "     ";M$(0);"     ";
5070 COLOR 6,0:LOCATE 25,32:PRINT "Press H for Help";
5080 HJ=NM*2+3
5090 COLOR 7,0
5100 FOR J=5 TO HJ STEP 2:M=(J-3)/2:LOCATE J,27:PRINT M$(M);:NEXT
5110 LOCATE 23,18
5120 COLOR 0,MC
5130 PRINT "     USE ARROW KEYS AND <ENTER> TO SELECT     ";
5140 COLOR 7,0
5150 J=5:M=1:K=HJ:GOSUB 5280
5160 IF CM=1 THEN FOR CL=200 TO 120 STEP -5:SOUND CL,1/4:NEXT:RETURN
5170  GOSUB 5190
5180 GOTO 5160
5190 K$=INKEY$:IF K$="" THEN 5190
5200 K=J
5210 IF LEN(K$)=1 THEN 5240
5220 IF RIGHT$(K$,1)=CHR$(72) OR RIGHT$(K$,1)=CHR$(75) THEN J=J-2:IF J=3 THEN J=HJ
5230 IF RIGHT$(K$,1)=CHR$(77) OR RIGHT$(K$,1)=CHR$(80) THEN J=J+2:IF J=HJ+2 THEN J=5
5240 IF K$="h" OR K$="H" THEN GOSUB 5600
5250 IF K$=CHR$(13) THEN CM=1:RETURN
5260 SOUND 255,1
5270 M=(J-3)/2
5280 N=(K-3)/2
5290 LOCATE K,27:PRINT M$(N);
5300 COLOR 0,7
5310 LOCATE J,27:PRINT M$(M);
5320 COLOR 7,0
5330 RETURN
5340 REM *** SCREEN CLEAR ***
5350 CLS:RETURN
5500 GOSUB 5350
5510 LOCATE 10,10:PRINT "LOADING..."
5520 LOCATE 13,13:PRINT "PLEASE WAIT..."
5530 RETURN
5600 SCREEN ,,,1
5610 X$=INKEY$:IF X$="" THEN 5610
5620 SCREEN ,,,0:RETURN
6000 OPEN "clues" FOR INPUT AS #1
6030 INPUT #1,NC:NC=NC+1:IF NC=6 THEN NC=5:FLAG=1
6040 FOR J=1 TO 5:INPUT #1,CLUE$(J):NEXT:CLOSE
6050 OPEN "CLUES" FOR OUTPUT AS #1
6060 WRITE #1,NC:FOR J=1 TO 5:WRITE #1,CLUE$(J):NEXT
6070 CLOSE
6080 FOR K=1 TO NC
6090 TEXT$=CLUE$(K):CLUE$(K)=""
6100 FOR J=1 TO LEN(TEXT$)
6110 CLUE$(K)=CLUE$(K)+CHR$(ASC(MID$(TEXT$,J,1))+5)
6120 NEXT:NEXT
6130 SCREEN 0:WIDTH 80:COLOR FG,BG:CLS
6135 IF FLAG=1 THEN FLAG=0:GOTO 6240
6140 LOCATE 2,2:PRINT "Congratulations! You qualify for a clue.";
6150 IF NC=1 THEN 6180
6160 LOCATE 4,10:COLOR BG,FG:PRINT "The clues so far";:COLOR FG,BG
6170 FOR J=1 TO NC-1:LOCATE J*2+5,2:PRINT CLUE$(J);:NEXT
6180 LOCATE 17,10:COLOR BG,FG:PRINT "Your new clue:";
6190 LOCATE 19,2:PRINT CLUE$(NC);
6200 LOCATE 22,10:COLOR FG,BG:PRINT "Write the clues down carefully.";
6210 LOCATE 25,24:COLOR BG,FG:PRINT "ANY KEY FOR MENU";
6220 K$=INKEY$:IF K$="" THEN 6220
6230 RETURN
6240 LOCATE 2,2:PRINT "You have already seen all the clues.";
6250 LOCATE 4,2:PRINT "Here they are again:";
6260 FOR J=1 TO NC:LOCATE J*2+5,2:PRINT J;". ";CLUE$(J);:NEXT
6270 GOTO 6200
14998 END
14999 'ERROR HANDLING
15000 SCREEN 0,0,0:WIDTH 80:COLOR 7,0,0:CLS
15010 LOCATE 1,30:PRINT "*** ERROR ***";
15020 IF ERR=27 THEN GOSUB 15200:GOTO 15130
15030 IF ERR=53 THEN GOSUB 15300:GOTO 15130
15040 IF ERR=70 THEN GOSUB 15400:GOTO 15130
15050 IF ERR=71 THEN GOSUB 15500:GOTO 15130
15060 IF ERR=75 OR ERR=76 THEN GOSUB 15600:GOTO 15130
15070 LOCATE 10,10:PRINT "Unexpected error"
15080 LOCATE 12,10:PRINT "Note the following information";
15090 LOCATE 14,10:PRINT "Error number ";ERR;
15100 LOCATE 16,10:PRINT "Line Number ";ERL;
15110 LOCATE 18,10:PRINT "Also remember what you were doing when the error occurred.";
15120 LOCATE 19,10:PRINT "If this error continues, call 4695784 for help."
15130 LOCATE 23,10:PRINT "ANY KEY TO CONTINUE OR <ESC> TO RETURN TO MAIN MENU";
15140 K$=INKEY$:IF K$="" THEN 15140
15150 RESUME 15160
15160 CLS:LOCATE 10,10:PRINT "Just a moment...";
15170 RUN "lof"
15200 LOCATE 4,1:PRINT "Printer error. Your printer must be loaded with paper and be turned on.";
15210 RETURN
15300 LOCATE 4,1:PRINT "Can't find the file."
15310 LOCATE 5,1:PRINT "Check that the correct disk is in Drive B and use the SETUP programme to set thecorrect Drive and Directory for the data files.";
15320 LOCATE 7,1:PRINT "If the error persists, the file may have been corrupted. Recopy it from your    back-up disk.";
15330 RETURN
15400 LOCATE 4,1:PRINT "Your diskette is write-protected.";
15410 LOCATE 6,1:PRINT "Remove the write-protect tab and try this programme again.";
15420 RETURN
15500 LOCATE 4,1:PRINT "Disk Drive Error";
15510 LOCATE 6,1:PRINT "Check that the drive door is shut and the correct disk is in the drive.:;
15520 RETURN
15600 LOCATE 4,1:PRINT "DOS Path error";
15610 LOCATE 6,1:PRINT "Run the SETUP programme from the main menu to select the correct drive and      directory.";
15620 RETURN
16000 SCREEN 0:CLS:RUN "LOF"

README.TXT

***************************************************************************
*                                                                         *
*                                                                         *
*                                                                         *
*                                                                         *
*           This is the Shareware version of LORD OF THE FLIES            *
*                                                                         *
*                                                                         *
*     Read or print the manual MANUAL.TXT on Disk 1 for instructions      *
*     on running the programme and how to register with the author        *
*     who is a poor impoverished school teacher from Singapore            *
*                                                                         *
*                                                                         *
*                                                                         *
*     Other titles in this series include:                                *
*                       MACBETH                                           *
*                       ROMEO & JULIET                                    *
*                       ANIMAL FARM                                       *
*                       WALKABOUT                                         *
*                       THE GHOST OF THOMAS KEMPE                         *
***************************************************************************

RETRIEVE.BAS

10 ON ERROR GOTO 15000
20 KEY 15,CHR$(&H4) + CHR$(70)
30 KEY 16,CHR$(&H44) + CHR$(70)
40 KEY(15) ON:KEY(16) ON
50 ON KEY(15) GOSUB 16000:ON KEY(16) GOSUB 16000
55 DIM T$(20,20),NL$(16),NL(16),SCR(15)
60 OPEN "config.lof" FOR INPUT AS #1
70 INPUT #1,SPEED,FG,BG,MC,DD$
75 IF RIGHT$(DD$,1)<>"\" THEN DD$=DD$+"\"
80 CLOSE
100 SCREEN 0:WIDTH 80:SCREEN ,,1,0:COLOR FG,BG:CLS:LOCATE 3,29:COLOR BG,FG:PRINT " NOTES MENU HELP SCREEN ";
110 SCREEN ,,1,0:COLOR FG,BG:CLS:LOCATE 3,29:COLOR BG,FG:PRINT " NOTES MENU HELP SCREEN ";
120 LOCATE 6,12:COLOR FG,BG:PRINT "Use the arrow keys to move the high-lighted bar";
130 LOCATE 7,18:PRINT "up and down the menu options.";
140 LOCATE 10,14:PRINT "If you are using the arrow keys on the";
150 LOCATE 11,14:PRINT "number key-pad, be sure NUM LOCK is off.";
160 LOCATE 14,10:PRINT "Use the <Enter> key to select the high-lighted option.";
170 LOCATE 25,30:COLOR BG,FG:PRINT " ANY KEY TO CONTINUE ";
180 SCREEN ,,0,0
190 FOR J=1 TO 20:FOR K=1 TO 20:T$(J,K)="":NEXT:NEXT
200 M$(0)="NOTES MENU"
210 M$(1)="PLOT SUMMARIES":M$(2)="CHARACTER STUDIES":M$(6)="LANGUAGE/IMAGERY"
220 M$(4)="THEMES":M$(5)="SETTING/BACKGROUND"
230 M$(3)="EXAM QUESTIONS":M$(7)="THE AUTHOR":M$(8)="RETURN TO MAIN MENU"
240 NM=8
250 GOSUB 5000
260 CM=0
265 IF M=8 THEN 1000
270 IF M=8 THEN 1000
280 ON M GOTO 300,400,500,600,700,800,900
300 M$(0)="PLOT SUMMARIES MENU"
310 M$(1)="OVERALL":M$(2)="CHAPTERS 1-3":M$(3)="CHAPTERS 4-6"
320 M$(4)="CHAPTERS 7-9":M$(5)="CHAPTERS 10-12":M$(6)="RETURN TO NOTES MENU"
330 M$(7)="RETURN TO MAIN MENU"
340 NM=7
350 GOSUB 5000
360 CM=0
370 ON M GOTO 3000,3030,3060,3090,3120,180,1000
400 M$(0)="CHARACTER STUDIES MENU"
410 M$(1)="RALPH":M$(2)="JACK":M$(3)="PIGGY"
420 M$(4)="SIMON":M$(5)="ROGER":M$(6)="OTHERS"
430 M$(7)="RETURN TO NOTES MENU":M$(8)="RETURN TO MAIN MENU"
440 NM=8
450 GOSUB 5000
460 CM=0
470 ON M GOTO 3150,3180,3210,3240,3270,3300,180,1000
500 M$(0)="EXAM QUESTIONS MENU"
510 M$(1)="HOW TO WRITE ESSAYS":M$(2)="ESSAY TOPICS":M$(3)="MODEL ANSWERS"
520 M$(4)="EXAM TIPS":M$(5)="RETURN TO NOTES MENU":M$(6)="RETURN TO MAIN MENU"
530 NM=6
540 GOSUB 5000
550 CM=0
560 ON M GOTO 3330,3360,3390,3420,180,1000
600 F$="THEMES":N$="THEMES"
610 GOSUB 4000
620 CLS:GOTO 100
700 F$="SETTING":N$="SETTING AND BACKGROUND"
710 GOSUB 4000
720 CLS:GOTO 100
800 F$="SYMBOLS":N$="LANGUAGE AND IMAGERY"
810 GOSUB 4000
820 CLS:GOTO 100
900 M$(0)="AUTHOR MENU"
910 M$(1)="NOTES":M$(2)="PICTURE":M$(3)="RETURN TO NOTES MENU":M$(4)="RETURN TO MAIN MENU"
920 NM=4:GOSUB 5000
930 CM=0
940 ON M GOTO 950,970,180,1000
950 F$="GOLDING":N$="THE AUTHOR - WILLIAM GOLDING":GOSUB 4000
960 CLS:GOTO 100
970 SCREEN 1:DEF SEG=&HB800:F$=DD$+"GOLDING":BLOAD F$,0
980 K$=INKEY$:IF K$="" THEN 980
990 CLS:GOTO 100
1000 CLS
1010 LOCATE 10,10:PRINT "Loading Main Menu...";
1020 LOCATE 13,13:PRINT "Just a minute...";
1030 RUN "lof"
2000 OB=FG:IF LEFT$(TEXT$,1)="*" THEN FG=15:TEXT$=RIGHT$(TEXT$,LEN(TEXT$)-1)
2040 COLOR FG,BG
2050 L=LEN(TEXT$):IF L<63 THEN LOCATE ,10:PRINT TEXT$:FG=OB:RETURN
2060 NL=INT(L/62)
2070 FOR J=1 TO NL+1
2080 L=LEN(TEXT$):IF L<63 THEN TEXT$(J)=TEXT$:GOTO 2170
2090 N=62
2100 X$=MID$(TEXT$,N+1,1)
2110 IF X$=" " THEN TEXT$(J)=LEFT$(TEXT$,62):TEXT$=RIGHT$(TEXT$,L-63):GOTO 2170
2120 IF MID$(TEXT$,62,1)=" " THEN TEXT$(J)=LEFT$(TEXT$,62):TEXT$=RIGHT$(TEXT$,L-62):GOTO 2170
2130 N=N-1
2140 X$=MID$(TEXT$,N,1)
2150 IF X$=" " THEN TEXT$(J)=LEFT$(TEXT$,N):TEXT$=RIGHT$(TEXT$,L-N):GOTO 2170
2160 GOTO 2130
2170 NEXT
2180 FOR J=1 TO NL+1
2190 LOCATE ,10:PRINT TEXT$(J)
2200 NEXT
2210 FG=OB:RETURN
3000 F$="OVERALL":N$="OVERALL SUMMARY"
3010 GOSUB 4000
3020 CLS:GOTO 100
3030 F$="CH1":N$="SUMMARY OF CHAPTERS 1-3"
3040 GOSUB 4000
3050 CLS:GOTO 100
3060 F$="CH4":N$="SUMMARY OF CHAPTERS 4-6"
3070 GOSUB 4000
3080 CLS:GOTO 100
3090 F$="CH7":N$="SUMMARY OF CHAPTERS 7-9"
3100 GOSUB 4000
3110 CLS:GOTO 100
3120 F$="CH10":N$="SUMMARY OF CHAPTERS 10-12"
3130 GOSUB 4000
3140 CLS:GOTO 100
3150 F$="RALPH":N$="RALPH"
3160 GOSUB 4000
3170 CLS:GOTO 100
3180 F$="JACK":N$="JACK"
3190 GOSUB 4000
3200 CLS:GOTO 100
3210 F$="PIGGY":N$="PIGGY"
3220 GOSUB 4000
3230 CLS:GOTO 100
3240 F$="SIMON":N$="SIMON"
3250 GOSUB 4000
3260 CLS:GOTO 100
3270 F$="ROGER":N$="ROGER"
3280 GOSUB 4000
3290 CLS:GOTO 100
3300 F$="OTHERS":N$="OTHER CHARACTERS"
3310 GOSUB 4000
3320 GOTO 100
3330 F$="ESSAYS":N$="HOW TO WRITE ESSAYS"
3340 GOSUB 4000
3350 CLS:GOTO 100
3360 F$="TOPICS":N$="ESSAY TOPICS"
3370 GOSUB 4000
3380 CLS:GOTO 100
3390 F$="MODELS":N$="MODEL ANSWERS"
3400 GOSUB 4000
3410 CLS:GOTO 100
3420 F$="TIPS":N$="EXAM TIPS"
3430 GOSUB 4000
3440 CLS:GOTO 100
4000 CLS:LOCATE 10,10:PRINT "Loading Data...";:LOCATE 13,13:PRINT "Please Wait...";:SCREEN ,,1,0:CLS:LOCATE 10,10:PRINT "Loading Data...";:LOCATE 13,13:PRINT "Please Wait...";
4002 LC=INT((80-LEN(N$))/2)
4005 F$=DD$+F$:OPEN F$ FOR INPUT AS #2
4008 INPUT #2,NS$:NS=VAL(NS$)
4010 FOR J=0 TO NS-1
4020 INPUT #2,NL$(J):NL(J)=VAL(NL$(J))
4030 FOR K=0 TO NL(J)-1
4040 INPUT #2,T$(J,K)
4050 NEXT:NEXT:CLOSE
4070 SCREEN ,,1:CLS:SCREEN ,,0,1:CLS:DEF SEG=&HB800:BLOAD"screen",0
4080 COLOR BG,FG:LOCATE 5,LC:PRINT N$:COLOR 12,0:LOCATE 2,70:PRINT "1";:LOCATE ,76:PRINT NS;:LOCATE  7,10
4090 FOR K=0 TO NL(0)-1
4100 TEXT$=T$(0,K)
4110 GOSUB 2000:NEXT
4120 SCREEN ,,1,0
4130 DEF SEG =&HB800:BLOAD "screen",&H1000
4140 LOCATE 5,LC:COLOR BG,FG:PRINT N$;:COLOR 12,0:LOCATE 2,70:PRINT "2";:LOCATE ,76:PRINT NS;
4150 LOCATE 7,10
4160 FOR K=0 TO NL(1)-1
4170 TEXT$=T$(1,K):GOSUB 2000
4180 NEXT
4190 PAGE=1:SCR=1:PPAGE=0:FPAGE=2
4200 DEF SEG=0:POKE 1050,PEEK(1052):DEF SEG
4210 K$=INKEY$:IF K$="" THEN 4210
4220 IF K$=CHR$(27) THEN RETURN
4230 IF RIGHT$(K$,1)=CHR$(81) THEN GOSUB 4260
4240 IF RIGHT$(K$,1) = CHR$(73) THEN GOSUB 4350
4250 GOTO 4210
4260 IF SCR=NS   THEN BEEP:RETURN
4270 SCREEN ,,,PAGE
4280 PAGE=PAGE+1:SCR=SCR+1
4290 IF PAGE >3 THEN PAGE=PAGE MOD 4
4300 FPAGE=FPAGE+1:IF FPAGE=4 THEN FPAGE=0
4310 PPAGE=PPAGE+1:IF PPAGE=4 THEN PPAGE=0
4320 DN=1
4330 GOSUB 4440
4340 RETURN
4350 IF SCR=1 THEN BEEP:RETURN
4360 PPPAGE=PPAGE-1:IF PPPAGE=-1 THEN PPPAGE=3
4370 SCREEN ,,,(PPPAGE)
4380 PAGE=PAGE-1:SCR=SCR-1
4390 IF PAGE<0 THEN PAGE=3
4400 FPAGE=FPAGE-1:IF FPAGE=-1 THEN FPAGE=3
4410 PPAGE=PPAGE-1:IF PPAGE=-1 THEN PPAGE=3
4420 GOSUB 4530
4430 RETURN
4440 SCREEN,,PAGE,PPAGE
4450 IF SCR=NS THEN 4520
4460 DEF SEG=&HB800:BLOAD "screen",&H1000*PAGE
4470 LOCATE 5,LC:COLOR BG,FG:PRINT N$;:LOCATE 2,69:COLOR 12,0:PRINT SCR+1;:LOCATE ,76:PRINT NS;
4480 LOCATE 7,10
4490 FOR K=0 TO NL(SCR)-1
4500 TEXT$=T$(SCR,K):GOSUB 2000
4510 NEXT
4520 RETURN
4530 PPPAGE=PPAGE-1:IF PPPAGE=-1 THEN PPPAGE=3
4540 SCREEN ,,PPPAGE,PPAGE
4550 IF SCR=1 THEN 4620
4560 DEF SEG=&HB800:BLOAD "screen",&H1000*PPPAGE
4570 LOCATE 5,LC:COLOR BG,FG:PRINT N$;:LOCATE 2,69:COLOR 12,0:PRINT SCR-1;:LOCATE ,76:PRINT NS;
4580 LOCATE 7,10
4590 FOR K=0 TO NL(SCR-2)-1
4600 TEXT$=T$(SCR-2,K):GOSUB 2000
4610 NEXT
4620 RETURN
5000 HC=INT((80-LEN(M$(0)))/2)
5010 COLOR MC,0,0:CLS:LOCATE 1,1:PRINT CHR$(201);:LOCATE 1,80:PRINT CHR$(187);:LOCATE 24,1:PRINT CHR$(200);:LOCATE 24,80:PRINT CHR$(188);
5020 LOCATE 3,1:PRINT CHR$(199);:LOCATE 3,80:PRINT CHR$(182);:LOCATE 22,1:PRINT CHR$(199);:LOCATE 22,80:PRINT CHR$(182);
5030 LOCATE 2,1:PRINT CHR$(186);:LOCATE 2,80:PRINT CHR$(186);:LOCATE 23,1:PRINT CHR$(186);:LOCATE 23,80:PRINT CHR$(186);
5040 LOCATE 1,2:PRINT STRING$(78,205);:LOCATE 3,2:PRINT STRING$(78,196);:LOCATE 22,2:PRINT STRING$(78,196);:LOCATE 24,2:PRINT STRING$(78,205);
5050 FOR X=4 TO 21:LOCATE X,1:PRINT CHR$(186);:NEXT:FOR X=4 TO 21:LOCATE X,80:PRINT CHR$(186);:NEXT
5060 COLOR 0,MC:LOCATE 2,HC-5:PRINT "     ";M$(0);"     ";
5070 COLOR 6,0,0:LOCATE 25,32:PRINT "Press H for Help";
5080 HJ=NM*2+3
5090 COLOR 7,0
5100 FOR J=5 TO HJ STEP 2:M=(J-3)/2:LOCATE J,27:PRINT M$(M);:NEXT
5110 LOCATE 23,18
5120 COLOR 0,MC
5130 PRINT "     USE ARROW KEYS AND <ENTER> TO SELECT     ";
5140 COLOR 7,0
5150 J=5:M=1:K=HJ:GOSUB 5280
5160 IF CM=1 THEN FOR CL=200 TO 120 STEP -5:SOUND CL,1/4:NEXT:RETURN
5170  GOSUB 5190
5180 GOTO 5160
5190 K$=INKEY$:IF K$="" THEN 5190
5200 K=J
5210 IF LEN(K$)=1 THEN 5240
5220 IF RIGHT$(K$,1)=CHR$(72) OR RIGHT$(K$,1)=CHR$(75) THEN J=J-2:IF J=3 THEN J=HJ
5230 IF RIGHT$(K$,1)=CHR$(77) OR RIGHT$(K$,1)=CHR$(80) THEN J=J+2:IF J=HJ+2 THEN J=5
5240 IF K$="h" OR K$="H" THEN GOSUB 5600
5250 IF K$=CHR$(13) THEN CM=1:RETURN
5260 SOUND 255,1
5270 M=(J-3)/2
5280 N=(K-3)/2
5290 LOCATE K,27:PRINT M$(N);
5300 COLOR 0,7
5310 LOCATE J,27:PRINT M$(M);
5320 COLOR 7,0
5330 RETURN
5340 REM *** SCREEN CLEAR ***
5350 CLS:RETURN
5500 GOSUB 5350
5510 LOCATE 10,10:PRINT "LOADING..."
5520 LOCATE 13,13:PRINT "PLEASE WAIT..."
5530 RETURN
5600 SCREEN ,,,1
5610 X$=INKEY$:IF X$="" THEN 5610
5620 SCREEN ,,,0:RETURN
14998 END
14999 'ERROR HANDLING
15000 SCREEN 0,0,0:WIDTH 80:COLOR 7,0,0:CLS
15010 LOCATE 1,30:PRINT "*** ERROR ***";
15020 IF ERR=27 THEN GOSUB 15200:GOTO 15130
15030 IF ERR=53 THEN GOSUB 15300:GOTO 15130
15040 IF ERR=70 THEN GOSUB 15400:GOTO 15130
15050 IF ERR=71 THEN GOSUB 15500:GOTO 15130
15060 IF ERR=75 OR ERR=76 THEN GOSUB 15600:GOTO 15130
15070 LOCATE 10,10:PRINT "Unexpected error"
15080 LOCATE 12,10:PRINT "Note the following information";
15090 LOCATE 14,10:PRINT "Error number ";ERR;
15100 LOCATE 16,10:PRINT "Line Number ";ERL;
15110 LOCATE 18,10:PRINT "Also remember what you were doing when the error occurred.";
15120 LOCATE 19,10:PRINT "If this error continues, call 4695784 for help."
15130 LOCATE 23,10:PRINT "ANY KEY TO CONTINUE OR <ESC> TO RETURN TO MAIN MENU";
15140 K$=INKEY$:IF K$="" THEN 15140
15150 RESUME 15160
15160 CLS:LOCATE 10,10:PRINT "Just a moment...";
15170 RUN "lof"
15200 LOCATE 4,1:PRINT "Printer error. Your printer must be loaded with paper and be turned on.";
15210 RETURN
15300 LOCATE 4,1:PRINT "Can't find the file."
15310 LOCATE 5,1:PRINT "Check that the correct disk is in Drive B and use the SETUP programme to set thecorrect Drive and Directory for the data files.";
15320 LOCATE 7,1:PRINT "If the error persists, the file may have been corrupted. Recopy it from your    back-up disk.";
15330 RETURN
15400 LOCATE 4,1:PRINT "Your diskette is write-protected.";
15410 LOCATE 6,1:PRINT "Remove the write-protect tab and try this programme again.";
15420 RETURN
15500 LOCATE 4,1:PRINT "Disk Drive Error";
15510 LOCATE 6,1:PRINT "Check that the drive door is shut and the correct disk is in the drive.:;
15520 RETURN
15600 LOCATE 4,1:PRINT "DOS Path error";
15610 LOCATE 6,1:PRINT "Run the SETUP programme from the main menu to select the correct drive and      directory.";
15620 RETURN
16000 SCREEN 0:CLS:RUN "LOF"

SETUP.BAS

10 ON ERROR GOTO 15000
20 KEY 15,CHR$(&H4) + CHR$(70)
30 KEY 16,CHR$(&H44) + CHR$(70)
40 KEY(15) ON:KEY(16) ON
50 ON KEY(15) GOSUB 16000:ON KEY(16) GOSUB 16000
70 OPEN "CONFIG.LOF" FOR INPUT AS #1
80 INPUT #1,SPEED,FG,BG,MC,DD$
90 CLOSE
100 SCREEN 0:WIDTH 80
110 SCREEN ,,1,0:COLOR FG,BG:CLS:COLOR BG,FG:LOCATE 2,27:PRINT "SET-UP MENU HELP SCREEN";
120 LOCATE 6,10:COLOR FG,BG:PRINT "Use the arrow keys to move the high-lighted bar";
130 LOCATE 7,10:PRINT "up and down the menu options.";
140 LOCATE 10,10:PRINT "If you are using the arrow keys on the";
150 LOCATE 11,10:PRINT "number key-pad, be sure NUM LOCK is off.";
160 LOCATE 14,10:PRINT "Use the <Enter> key to select the high-lighted option.";
170 LOCATE 25,30:COLOR BG,FG:PRINT " ANY KEY TO CONTINUE ";
180 SCREEN ,,0,0
230 SCREEN 0:COLOR FG,BG:WIDTH 80
240 M$(0)="SET-UP MENU"
250 M$(1)="SPEED":M$(2)="TEXT COLOUR"
260 M$(3)="MENU COLOUR":M$(4)="DRIVE/DIRECTORY"
270 M$(5)="RETURN TO MAIN MENU"
280 NM=5:GOSUB 3000
290 CM=0
300 ON M GOSUB 7000,4000,5000,6000,8000
310 GOTO 100
3000 HC=INT((80-LEN(M$(0)))/2)
3010 COLOR MC,0,0:CLS:LOCATE 1,1:PRINT CHR$(201);:LOCATE 1,80:PRINT CHR$(187);:LOCATE 24,1:PRINT CHR$(200);:LOCATE 24,80:PRINT CHR$(188);
3020 LOCATE 3,1:PRINT CHR$(199);:LOCATE 3,80:PRINT CHR$(182);:LOCATE 22,1:PRINT CHR$(199);:LOCATE 22,80:PRINT CHR$(182);
3030 LOCATE 2,1:PRINT CHR$(186);:LOCATE 2,80:PRINT CHR$(186);:LOCATE 23,1:PRINT CHR$(186);:LOCATE 23,80:PRINT CHR$(186);
3040 LOCATE 1,2:PRINT STRING$(78,205);:LOCATE 3,2:PRINT STRING$(78,196);:LOCATE 22,2:PRINT STRING$(78,196);:LOCATE 24,2:PRINT STRING$(78,205);
3050 FOR X=4 TO 21:LOCATE X,1:PRINT CHR$(186);:NEXT:FOR X=4 TO 21:LOCATE X,80:PRINT CHR$(186);:NEXT
3060 COLOR 0,MC:LOCATE 2,HC-5:PRINT "     ";M$(0);"     ";
3070 COLOR 6,0:LOCATE 25,32:PRINT "Press H for Help";
3080 HJ=NM*2+3
3090 COLOR 7,0
3100 FOR J=5 TO HJ STEP 2:M=(J-3)/2:LOCATE J,27:PRINT M$(M);:NEXT
3110 LOCATE 23,18
3120 COLOR 0,MC
3130 PRINT "     USE ARROW KEYS AND <ENTER> TO SELECT     ";
3140 COLOR 7,0
3150 J=5:M=1:K=HJ:GOSUB 3280
3160 IF CM=1 THEN FOR CL=200 TO 120 STEP -5:SOUND CL,1/4:NEXT:RETURN
3170  GOSUB 3190
3180 GOTO 3160
3190 K$=INKEY$:IF K$="" THEN 3190
3200 K=J
3210 IF LEN(K$)=1 THEN 3240
3220 IF RIGHT$(K$,1)=CHR$(72) OR RIGHT$(K$,1)=CHR$(75) THEN J=J-2:IF J=3 THEN J=HJ
3230 IF RIGHT$(K$,1)=CHR$(77) OR RIGHT$(K$,1)=CHR$(80) THEN J=J+2:IF J=HJ+2 THEN J=5
3240 IF K$="h" OR K$="H" THEN GOSUB 3400
3250 IF K$=CHR$(13) THEN CM=1:RETURN
3260 SOUND 255,1
3270 M=(J-3)/2
3280 N=(K-3)/2
3290 LOCATE K,27:PRINT M$(N);
3300 COLOR 0,7
3310 LOCATE J,27:PRINT M$(M);
3320 COLOR 7,0
3330 RETURN
3340 REM *** SCREEN CLEAR ***
3350 COLOR FG,BG:CLS:RETURN
3360 GOSUB 3350
3370 LOCATE 10,10:PRINT "LOADING..."
3380 LOCATE 13,13:PRINT "PLEASE WAIT..."
3390 RETURN
3400 SCREEN ,,,1
3410 X$=INKEY$:IF X$="" THEN 3410
3420 SCREEN ,,,0:RETURN
4000 COLOR FG,BG:CLS
4010 LOCATE 1,31:PRINT "CHANGE TEXT COLOUR";
4020 LOCATE 3,1:PRINT "This screen allows you to change the lettering and background colour of the     notes and instructions throughout the programmes.";
4030 LOCATE 6,1:PRINT "Use the left and right arrow keys to change the values of the colours. The      bottom of the screen will show the effect of the changes.";
4040 LOCATE 9,1:PRINT "Press <Space> to switch from changing lettering colour to changing the colour   of the background, and vice versa.";
4050 LOCATE 12,1:PRINT "When you are happy with the colour combination, Press <Enter> to write the      changes to disk, and return to the Menu or <Esc> to exit.";
4060 KEY (12) ON:KEY (13) ON
4070 ON KEY (12) GOSUB 4300
4080 ON KEY (13) GOSUB 4400
4085 OF=FG:OB=BG:FLAG=0:Z=-1
4087 LOCATE 15,11:COLOR OF,OB:PRINT "Changing";
4090 LOCATE 15,20:COLOR OF,OB:PRINT "Lettering Colour:  ";FG;
4100 LOCATE 17,20:PRINT "Background Colour: ";BG
4110 LOCATE 20,10:COLOR FG,BG:PRINT " This is an example of the current colour        ";
4120 LOCATE 21,10:PRINT " combination. All text in notes and instructions ";
4130 LOCATE 22,10:PRINT " will be printed in this colour.                 ";
4140 K$=INKEY$:IF K$<>CHR$(13) AND K$<>CHR$(32) AND K$<>CHR$(27) AND CHANGE<>1 THEN 4140
4142 IF K$=CHR$(27) THEN COLOR OF,OB:CLS:RETURN
4145 IF CHANGE=1 THEN CHANGE=0:GOTO 4090
4150 IF K$=CHR$(32) THEN FLAG =FLAG-Z:Z=-Z:GOSUB 4500:GOTO 4090
4160 KEY (12) OFF:KEY (13) OFF:COLOR FG,BG:CLS
4170 LOCATE 10,10:PRINT "Writing changes to disk...";
4180 OPEN "config.lof" FOR OUTPUT AS #1
4190 WRITE #1,SPEED,FG,BG,MC,DD$
4200 CLOSE
4210 SCREEN ,,1,0:DEF SEG=&HB800:BLOAD "screen",&H1000
4220 COLOR FG,BG
4230 FOR J=6 TO 20
4240 LOCATE J,9:PRINT SPC(64);:NEXT
4244 COLOR 15,BG:LOCATE 5,8:PRINT CHR$(199);:LOCATE 21,8:PRINT CHR$(199);
4248 LOCATE 5,73:PRINT CHR$(182);:LOCATE 21,73:PRINT CHR$(182);
4252 FOR J=9 TO 72:LOCATE 5,J:PRINT CHR$(196);:LOCATE 21,J:PRINT CHR$(196);:NEXT
4256 FOR J=19 TO 59 STEP 10:LOCATE 5,J:PRINT CHR$(157);:LOCATE 21,J:PRINT CHR$(232);:NEXT
4260 FOR J=6 TO 20:LOCATE J,8:PRINT CHR$(186);:LOCATE J,73:PRINT CHR$(186);:NEXT
4264 BSAVE "screen",&H1000,&H1000
4270 COLOR FG,BG:SCREEN ,,0,0
4290 CLS:RETURN
4300 CHANGE=1:IF FLAG=1 THEN 4360
4320 FG=FG-1:IF FG<0 THEN FG=15
4330 RETURN
4360 BG=BG-1:IF BG<0  THEN BG=15
4370 RETURN
4400 CHANGE=1:IF FLAG=1 THEN 4460
4410 FG=FG+1:IF FG>15 THEN FG=0
4420 RETURN
4460 BG=BG+1:IF BG>15  THEN BG=0
4470 RETURN
4500 IF FLAG=1 THEN 4520
4510 LOCATE 15,11:COLOR OF,OB:PRINT "Changing";:LOCATE 17,11:PRINT SPC(8);:RETURN
4520 LOCATE 17,11:COLOR OF,OB:PRINT "Changing";:LOCATE 15,11:PRINT SPC(8);:RETURN
5000 COLOR FG,BG:CLS
5010 LOCATE 1,31:PRINT "CHANGE MENU COLOUR";
5020 LOCATE 3,1:PRINT "This screen allows you to change the colour of the framesin the menus used in   most of the programmes.";
5030 LOCATE 6,1:PRINT "Use the left and right arrow keys to change the values of the colours. The      bottom of the screen will show the effect of the changes.";
5050 LOCATE 12,1:PRINT "When you are happy with the colour combination, Press <Enter> to write the      changes to disk, and return to the Menu or <Esc> to exit.";
5060 KEY (12) ON:KEY (13) ON
5070 ON KEY (12) GOSUB 5300
5080 ON KEY (13) GOSUB 5400
5085 OM=MC
5087 COLOR,0:FOR X=21 TO 23:LOCATE X,2:PRINT SPC(78);:NEXT:KEY OFF:LOCATE 25,1:PRINT SPC(79);:LOCATE 25,80:PRINT " ";:KEY (12) ON:KEY (13) ON
5090 LOCATE 15,20:COLOR FG,BG:PRINT "Current Menu Colour:  ";MC;
5100 COLOR MC,0,0:LOCATE 20,1:PRINT CHR$(201);:LOCATE 20,80:PRINT CHR$(187);:LOCATE 24,1:PRINT CHR$(200);:LOCATE 24,80:PRINT CHR$(188);
5110 LOCATE 20,2:PRINT STRING$(78,205);:LOCATE 24,2:PRINT STRING$(78,205);
5120 FOR X=21 TO 23:LOCATE X,1:PRINT CHR$(186);:NEXT:FOR X=21 TO 23:LOCATE X,80:PRINT CHR$(186);:NEXT
5130 COLOR 0,MC,0:LOCATE 22,10:PRINT " This is an example of the current colour. "
5140 K$=INKEY$:IF K$<>CHR$(13) AND K$<>CHR$(27) AND CHANGE<>1 THEN 5140
5142 IF K$=CHR$(27) THEN MC=OM:COLOR FG,BG:CLS:RETURN
5150 IF CHANGE=1 THEN CHANGE=0:GOTO 5090
5160 KEY (12) OFF:KEY (13) OFF:COLOR FG,BG:CLS
5170 LOCATE 10,10:PRINT "Writing changes to disk...";
5180 OPEN "config.lof" FOR OUTPUT AS #1
5190 WRITE #1,SPEED,FG,BG,MC,DD$
5200 CLOSE
5210 CLS
5220 RETURN
5300 CHANGE=1:MC=MC-1:IF MC<0 THEN MC=15
5310 RETURN
5400 CHANGE=1:MC=MC+1:IF MC>15 THEN MC=0
5420 RETURN
6000 COLOR FG,BG:CLS
6010 LOCATE 1,28:PRINT "CHANGE DRIVE/DIRECTORY";
6020 LOCATE 3,1:PRINT "This screen allows you to change the drive and directory from which the         programmes will retrieve data.";
6030 LOCATE 6,1:PRINT "This allows you to copy all the programmes and data onto a hard disk, for       example, or onto a High Density Disk.";
6035 LOCATE 9,1:PRINT "Examples of valid settings are:";
6037 LOCATE 10,30:COLOR BG,FG:PRINT "C:\LORD";
6038 LOCATE 11,30:PRINT "A:";
6040 LOCATE 12,1:COLOR FG,BG:PRINT "The current setting is shown below.";
6045 LOCATE 14,20:COLOR BG,FG:PRINT DD$;
6050 LOCATE 16,1:COLOR FG,BG:PRINT "Do you wish to change this setting?  (Y/N)";
6060 K$=INKEY$:IF K$<>"Y" AND K$<>"y" AND K$<>"N" AND K$<>"n" THEN 6060
6070 IF K$="N" OR K$="n" THEN CLS:RETURN
6080 LOCATE 16,1:PRINT "Type the new setting carefully and press <Enter>";
6090 LOCATE 20,20:COLOR BG,FG:PRINT SPC(20);
6100 LOCATE 20,20:LINE INPUT ND$
6110 LOCATE 22,20:PRINT "New Drive and Directory:  ";ND$;"               ";
6120 LOCATE 24,20:COLOR FG,BG:PRINT "Is this correct?  (Y/N)";
6130 K$=INKEY$:IF K$<>"Y" AND K$<>"y" AND K$<>"N" AND K$<>"n" THEN 6130
6140 IF K$="n" OR K$="N" THEN COLOR FG,BG:LOCATE 22,20:PRINT SPC(40);:LOCATE 24,20:PRINT SPC((20);:GOTO 6080
6150 CLS:LOCATE 10,10:PRINT "Writing changes to disk...";
6160 DD$=ND$
6170 OPEN "config.lof" FOR OUTPUT AS #1
6180 WRITE #1,SPEED,FG,BG,MC,DD$
6190 CLOSE:CLS:RETURN
7000 COLOR FG,BG:CLS:MSPEED=11-SPEED
7020 LOCATE 8,10:PRINT "Different computers today run at different speeds.";
7030 LOCATE 9,10:PRINT "You may want to change the value below,";
7040 LOCATE 10,10:PRINT "to a more suitable speed for your system.";
7050 LOCATE 12,10:PRINT "This change will be written to disk and will affect";
7060 LOCATE 13,10:PRINT "all the programmes in this package. Some of the other";
7070 LOCATE 14,10:PRINT "programmes allow you to change the speed for that";
7080 LOCATE 15,10:PRINT "selection only.";
7082 LOCATE 18,10:PRINT "Use the arrow keys to raise or lower the speed.";
7083 LOCATE 19,10:PRINT "Press <Enter> to confirm the new speed.";
7085 KEY (12) ON:KEY (13) ON
7087 ON KEY(12) GOSUB 7240
7089 ON KEY(13) GOSUB 7210
7090 LOCATE 24,20:PRINT "Current Speed: ";MSPEED;
7100 P$=INKEY$:IF P$<>CHR$(13) THEN 7090
7110 IF P$=CHR$(13) THEN SPEED=11-MSPEED:KEY (12) OFF:KEY (13) OFF
7120 CLS:LOCATE 10,10:PRINT "Writing change to disk...";
7130 OPEN "config.lof" FOR OUTPUT AS #1
7140 WRITE #1,SPEED,FG,BG,MC,DD$
7150 CLOSE
7160 CLS:RETURN
7200 GOTO 7090
7210 MSPEED=MSPEED+1
7220 IF MSPEED=11 THEN MSPEED=1
7230 RETURN
7240 MSPEED=MSPEED-1
7250 IF MSPEED=0 THEN MSPEED=10
7260 RETURN
7270 GOTO 7090
8000 COLOR FG,BG:CLS
8010 LOCATE 10,10:PRINT "Returning to Main Menu...";
8020 LOCATE 13,13:PRINT "Just a moment...";
8030 RUN "lof"
14998 END
14999 'ERROR HANDLING
15000 SCREEN 0,0,0:WIDTH 80:COLOR 7,0,0:CLS
15010 LOCATE 1,30:PRINT "*** ERROR ***";
15020 IF ERR=27 THEN GOSUB 15200:GOTO 15130
15030 IF ERR=53 THEN GOSUB 15300:GOTO 15130
15040 IF ERR=70 THEN GOSUB 15400:GOTO 15130
15050 IF ERR=71 THEN GOSUB 15500:GOTO 15130
15060 IF ERR=75 OR ERR=76 THEN GOSUB 15600:GOTO 15130
15070 LOCATE 10,10:PRINT "Unexpected error"
15080 LOCATE 12,10:PRINT "Note the following information";
15090 LOCATE 14,10:PRINT "Error number ";ERR;
15100 LOCATE 16,10:PRINT "Line Number ";ERL;
15110 LOCATE 18,10:PRINT "Also remember what you were doing when the error occurred.";
15120 LOCATE 19,10:PRINT "If this error continues, call 4695784 for help."
15130 LOCATE 23,10:PRINT "ANY KEY TO CONTINUE OR <ESC> TO RETURN TO MAIN MENU";
15140 K$=INKEY$:IF K$="" THEN 15140
15150 RESUME 15160
15160 CLS:LOCATE 10,10:PRINT "Just a moment...";
15170 RUN "lof"
15200 LOCATE 4,1:PRINT "Printer error. Your printer must be loaded with paper and be turned on.";
15210 RETURN
15300 LOCATE 4,1:PRINT "Can't find the file."
15310 LOCATE 5,1:PRINT "Check that the correct disk is in Drive B and use the SETUP programme to set thecorrect Drive and Directory for the data files.";
15320 LOCATE 7,1:PRINT "If the error persists, the file may have been corrupted. Recopy it from your    back-up disk.";
15330 RETURN
15400 LOCATE 4,1:PRINT "Your diskette is write-protected.";
15410 LOCATE 6,1:PRINT "Remove the write-protect tab and try this programme again.";
15420 RETURN
15500 LOCATE 4,1:PRINT "Disk Drive Error";
15510 LOCATE 6,1:PRINT "Check that the drive door is shut and the correct disk is in the drive.:;
15520 RETURN
15600 LOCATE 4,1:PRINT "DOS Path error";
15610 LOCATE 6,1:PRINT "Run the SETUP programme from the main menu to select the correct drive and      directory.";
15620 RETURN
16000 SCREEN 0:CLS:RUN "LOF"

Directory of PC-SIG Library Disk #2426

 Volume in drive A has no label
 Directory of A:\

GO       TXT      1310  11-19-90   8:45a
MISSING  BAS      8002   8-12-89  11:54p
LOF      BAS      5596   8-13-89  12:40a
JOURNEY  BAS     13343   9-07-89   1:22p
SETUP    BAS      9131   8-12-89  11:50p
CONFIG   LOF        15  10-01-90   1:57a
CLUES              293   2-11-90   2:06p
RIDDLES  BAS     16391   1-04-80  12:05a
AUTOEXEC BAT       131   9-01-90   7:40p
PMLOF2   BAS     16391   9-01-90   5:56p
SCREEN   BAS      4111   1-05-80  12:29a
ISLAND   BAS     12521   8-12-89  11:51p
INTROD   BAS      5347   2-12-90   6:02p
BOULDER  BAS      8019   8-12-89  11:52p
RETRIEVE BAS      8212   8-12-89  11:52p
COMPET   BAS      3512   8-12-89  11:53p
CHECK                1   8-13-89  12:33a
QUOTATIO BAS      9446   8-12-89  11:53p
ANSWERS  BAS     16391   8-12-89  11:05p
MANUAL   TXT     24171   9-14-90  11:29p
REGISTER            16   9-01-90   7:38p
README   TXT      1617   9-14-90  11:35p
FILE2426 TXT      1999  11-19-90   5:32p
GO       BAT        40   1-01-80   6:00a
       24 file(s)     166006 bytes
                      139264 bytes free