PROG : 16509
D-FILE: 20019
VARS : 20812
E-LINE: 21390
STKBOT: 21390
STKEND: 21390
9999 means line number
PRINT means treat as KEYWORD P
5 REM THE WOLF, THE GOAT AND
THE CABBAGE
6 REM COMPUTER PUZZLES: FOR
SPECTRUM AND ZX81
7 REM BY IAN STEWART AND
ROBIN JONES, (C) 1982
8 REM UPDATED FOR ZX81 BY STE
VEN REID(C) 2024
9 REM TITLE BY STEVEN REID,(C
) 2026
10 LET B$=" ´ººº÷ "
20 LET BC=0
30 LET QUERY=500
40 LET CHECK=1000
50 LET BOAT=2000
60 LET BK=1
70 LET OUT=2500
80 LET IN=3000
82 LET ERROR=5000
85 LET EAT=4000
86 LET DONE=5030
87 LET KEY=5500
90 LET C$=" "
93 DIM D$(2,3)
95 LET D$(1)="WGC"
100 PRINT AT 15,0;" ³³³
³³³"
110 PRINT AT 16,0;" úúúúúúú
úúúúúúúúúúúúúúú "
120 PRINT AT 14,2;D$(1)
130 PRINT AT 15,5;B$
200 REM MOVE
210 GOSUB QUERY
220 GOSUB BOAT
230 GOTO 200
400 REM QUERY
505 IF BC=0 THEN GOTO 540
510 PRINT AT 2,0;"TAKE OUT OF B
OAT?"
520 GOSUB KEY
525 LET O$=K$
530 GOSUB OUT
535 IF D$(BK)=" " THEN GOTO 5
70
540 PRINT AT 2,0;"PUT INTO BOAT
? "
550 GOSUB KEY
555 LET I$=K$
560 GOSUB IN
570 RETURN
1000 REM CHECK
1010 IF D$(2)="WGC" THEN PRINT
AT 2,0;" WELL DONE "
1020 IF D$(2)="WGC" THEN GOTO DO
NE
1030 RETURN
2000 REM BOAT
2010 FOR T=5*(BK=1)+20*(BK<>1)
TO 20*(BK=1)+5*(BK<>1) STEP 1-2
*(BK<>1)
2020 PRINT AT 15,T;B$
2025 PRINT AT 14,T;C$
2030 NEXT T
2035 GOSUB EAT
2040 LET BK=3-BK
2050 RETURN
2500 REM OUT
2505 IF O$="" THEN RETURN
2510 FOR F=3 TO 5
2520 IF C$(F)=O$ THEN GOTO 2540
2530 NEXT F
2535 RETURN
2540 LET C$(F)=" "
2550 LET D$(BK,F-2)=O$
2560 PRINT AT 14,2*(BK=1)+27*(BK
<>1);D$(BK)
2570 PRINT AT 14,5*(BK=1)+20*(BK
<>1);C$
2580 LET BC=BC-1
2590 GOSUB CHECK
2600 RETURN
3000 REM IN
3005 IF I$="" THEN RETURN
3010 FOR F=1 TO 3
3020 IF D$(BK,F)=I$ THEN GOTO 30
40
3030 NEXT F
3035 RETURN
3040 LET D$(BK,F)=" "
3050 LET C$(F+2)=I$
3060 PRINT AT 14,2*(BK=1)+27*(BK
<>1);D$(BK)
3070 PRINT AT 14,5*(BK=1)+20*(BK
<>1);C$
3080 LET BC=BC+1
3085 IF BC=2 THEN GOTO ERROR
3090 GOSUB CHECK
4000 REM EAT
4010 LET X$=D$(BK)
4020 IF X$="WG " OR X$=" GC"
THEN GOTO 4040
4030 RETURN
4040 PRINT AT 2,0;" WOOPS..
.EATEN "
4050 GOTO DONE
5000 REM ERROR
5010 PRINT AT 2,0;"SORRY, TOO MA
NY IN BOAT. TRY"
5020 PRINT "AGAIN"
5030 PRINT AT 20,0;"PRESS A KEY
TO CONTINUE..."
5040 IF INKEY$="" THEN GOTO 5040
5050 CLS
5060 RUN
5500 REM KEY
5510 LET K$=INKEY$
5520 IF K$="" THEN GOTO 5510
5530 RETURN
5900 REM **SCREEN+SAVE
6000 GOSUB 7000
6010 SAVE "WGCS"
6020 PRINT AT 21,4;"PRESS ANY KE
Y TO PLAY..."
6030 GOSUB 5500
6040 CLS
6050 RUN
7000 REM **DECODE
7010 FAST
7020 LET READ=7500
7025 LET DATA=8000
7030 GOSUB DATA
7040 LET R=1
7050 GOSUB READ
7060 IF A$>="A" THEN GOTO 7090
7070 LET R=VAL A$
7075 IF R=0 THEN PRINT
7076 IF R=0 THEN GOTO 7120
7080 GOSUB READ
7090 FOR A=1 TO R
7100 PRINT G$(CODE A$-37);
7110 NEXT A
7120 IF L<=LEN D$ THEN GOTO 7040
7130 SLOW
7140 RETURN
7500 REM **READ
7510 LET A$=D$(L)
7520 LET L=L+1
7530 RETURN
8000 REM **DATA
8010 LET G$=" ñò·ôõ³óµ±²÷´ö¶ !úù
º¹¸"
8015 LET L=1
8020 LET D$="JB2AME3AJBJME0"
8030 LET D$=D$+"PAGEIFDGAPDPG3AJ
2PK9ADL0"
8040 LET D$=D$+"MJ2PJOLIFPAP3AJL
2AHBAGEADGADJKE0"
8050 LET D$=D$+"CPBMLIFPIFIFDEAP
2AJMEJBPDLIFAIF0"
8060 LET D$=D$+"AHACBAHBHAHAJBAM
K2GJBPIFIFJFAPAP0"
8070 LET D$=D$+"9A7A3HBACH2AHBHC
BCB0"
8080 LET D$=D$+"AAJ2PK5ADL2AJB9A
3ADPE0"
8090 LET D$=D$+""
8100 LET D$=D$+"AJL2AHBDG2AIF2AP
3AGE2AGEADGAIPF0"
8110 LET D$=D$+"AP4ADLIFAJMEDLKA
JBPAJBPDLIFIPF0"
8120 LET D$=D$+"AMKGJLIFJFAPAPIF
IFPDPAPIPILHACP0"
8130 LET D$=D$+"2A3H2AHBHC2HB3HA
CHCBCHPA2H2AG0"
8140 LET D$=D$+"9A9A4AGIF4ACL0"
8150 LET D$=D$+"5AJ9A2AKG3ACH0"
8160 LET D$=D$+"5ALME6A2GJBNK0"
8170 LET D$=D$+"4AJ2BM5AJB3AGJ0"
8180 LET D$=D$+"AKAJBCLH4ANF3ADF
8AGG0"
8190 LET D$=D$+"AIJBEI7AFLHFL8AI
LIF0"
8200 LET D$=D$+"GCPJMIE6AFFAFF8A
CKPBGV0"
8220 LET D$=D$+"4VT2VG2AC7PB6AGT
4VU0"
8230 LET D$=D$+"UV2T4VA2SC5PB2S2
A2SA2V2U3V0"
8240 LET D$=D$+"VU3V2TUR2A7R2A2R
2ARUTVT2UV0"
8500 RETURN