100 REM *******************************
105 REM *                             *
110 REM * MAYA-GRAB V0.2.0 (DE)       *
115 REM *                             *
120 REM * GAME REMAKE BY:             *
125 REM * VLADIMIR IGNJATIJEVIC       *
130 REM * (C) 2016 GARAGE APPS        *
135 REM *     WWW.GARAGEAPPS.ORG      *
140 REM *                             *
145 REM * ORIGINAL GAME BY:           *
150 REM * THOMAS LANGENKAMP           *
155 REM * (C) 1986 HEISE VERLAG       *
160 REM *     INPUT 64 ISSUE (7/86)   *
165 REM *                             *
170 REM *******************************

1000 :
1005 REM ******************************
1010 REM * DATA INITIALIZATION        *
1015 REM ******************************
1020 :

1500 :
1505 REM - DEFINES --------------------
1510 :

1515 M=49152: V=53248: S=54272
1520 C=646: B=832 
1525 CB=12: CF=0: FC=2: FW=27: FH=19
1530 PI=1: PD=11: PE=20: PM=22
1535 SL=100: SH=180: K=1
1540 L$=CHR$(127): R$=CHR$(169)

2000 :
2005 REM - GAME DEFINES ---------------
2010 :

2015 IS=16: RS=16

2500 :
2505 REM - GAME LOCALIZATION ----------
2510 :

2515 DIM RO$(RS,4): DIM RD$(RS,4)
2520 DIM RM$(RS,10)
2525 DIM IM$(14): DIM IV$(37)
2530 DIM IA$(40): DIM IN$(69)
2535 :

2600 RO$( 0, 0)="EULE"
2601 RO$( 0, 1)="FAST NICHTS"
2602 RO$( 0, 2)="TUER       "
2603 RO$( 0, 3)="           "
2604 :
2610 RD$( 0, 0)=""
2611 :
2620 RM$(0,0)=".I.N.P.U.T .6.4"
2621 RM$(0,1)=".PRAESENTIERT :"
2622 RM$(0,2)=".EIN SPANNENDES ABENTEUERSPIEL"
2623 RM$(0,3)=".VON THOMAS LANGENKAMP  (1986)"
2624 RM$(0,4)=".REMAKE VON GARAGE APPS (2016)"
2625 :
2626 :
2627 :

2650 RO$( 1, 0)="NICHTS MEHR"
2651 :
2660 RD$( 1, 0)="NIRGENDWO"
2661 :
2670 RM$( 1, 0)="  R.IN P.  "
2671 RM$( 1, 1)="ICH HABE MIR DEN HALS GEBROCHEN !"
2672 RM$( 1, 2)="ES WAR EINE GIFTSPINNE,BIN LEIDER TOT !"
2673 RM$( 1, 3)="SCHAEDELBRUCH - ES WAR HALT ZU DUNKEL !"
2674 RM$( 1, 4)="HABE MICH HOFFNUNGSLOS VERLAUFEN !"
2675 RM$( 1, 5)="DIE RACHE DES CUCUMATZ WAR TOEDLICH !"
2676 :
2677 :
2678 :

2700 RO$( 2, 0)="TUER STOCK"
2701 RO$( 2, 1)="SCHRANK"
2702 RO$( 2, 2)="SCHALE"
2703 RO$( 2, 3)="FACKEL"
2704 :
2710 RD$( 2, 0)="OSTEN"
2711 :
2720 RM$( 2, 0)="EINE EICHENTUER !"
2721 RM$( 2, 1)="MIR GEFAELLT ER GUT !"
2722 RM$( 2, 2)="ER IST SCHOEN !"
2723 RM$( 2, 3)="SIE IST VOLL OBST !"
2724 RM$( 2, 4)="ES IST FRISCH GEPFLUECKT !"
2725 RM$( 2, 5)="ER SIEHT GUT AUS !"
2726 RM$( 2, 6)="KRUMM WIE ALLE BANANEN !"
2727 RM$( 2, 7)="SIE BRENNT UND STINKT !"
2728 RM$( 2, 8)="SIE IST VERSCHLOSSEN !"
2729 RM$( 2, 9)="SIEHT WIE EIN STOCK AUS !"
2730 :
2731 :
2732 :

2750 RO$( 3, 0)="BILD BETT"
2751 RO$( 3, 1)="TEPPICH"
2752 RO$( 3, 2)="INSCHRIFT"
2753 :
2760 RD$( 3, 0)="WESTEN"
2761 :
2770 RM$( 3, 0)="KOENNTE EIN PICASSO SEIN !"
2771 RM$( 3, 1)="ES LAEDT ZUM SCHLAFEN EIN !"
2772 RM$( 3, 2)="ES IST EIN ECHTER PERSER !"
2773 RM$( 3, 3)="OK.SIE IST MERKWUERDIG !"
2774 RM$( 3, 4)="OK.ICH RUHE MICH AUS"
2775 RM$( 3, 5)="ICH WILL NICHT STEHLEN !"
2776 RM$( 3, 6)="ICH SEHE EINE LEITER !"
2777 :
2778 :
2779 :

2800 RO$( 4, 0)="SCHRANK"
2801 RO$( 4, 1)="KERZE"
2802 RO$( 4, 2)="KANNE"
2803 :
2810 RD$( 4, 0)="OBEN"
2811 :
2820 RM$( 4, 0)="DIE FALLTUER IST ZU !"
2821 RM$( 4, 1)="SIE FUEHRT NACH OBEN !"
2822 RM$( 4, 2)="ICH SEHE EINE GEHEIMTUER !"
2823 RM$( 4, 3)="ER HAT EINE SCHUBLADE !"
2824 RM$( 4, 4)="SIE BRENNT UND STINKT !"
2825 RM$( 4, 5)="SIE IST LEER !"
2826 RM$( 4, 6)="ES IST EIN TUER SCHLUESSEL !"
2827 :
2828 :
2829 :

2850 RO$( 5, 0)="TREPPE"
2851 RO$( 5, 1)="SCHALE"
2852 RO$( 5, 2)="FENSTER"
2853 RO$( 5, 3)="FACKEL"
2854 :
2860 RD$( 5, 0)="WESTEN"
2861 RD$( 5, 1)="OBEN"
2862 :
2870 RM$( 5, 0)="AUSGANG"
2871 RM$( 5, 1)="SIE FUEHRT NACH OBEN !"
2872 RM$( 5, 2)="SIE IST VOLL WASSER !"
2873 RM$( 5, 3)="ES IST VERGITTERT !"
2874 RM$( 5, 4)="SIE FLACKERT HEFTIG !"
2875 RM$( 5, 5)="DIE BRAUCHE ICH NICHT !"
2876 RM$( 5, 6)="OK.SIE IST VOLL !"
2877 :
2878 :
2879 :

2900 RO$( 6, 0)="MAUER"
2901 RO$( 6, 1)="WAECHTER"
2902 RO$( 6, 2)="STRAUCH"
2903 :
2910 RD$( 6, 0)="SUEDEN"
2911 RD$( 6, 1)="OSTEN"
2912 :
2920 RM$( 6, 0)="DER WAECHTER BEWACHT SIE !"
2921 RM$( 6, 1)="ES IST EINE OEKOWIESE MIT BLUMEN !"
2922 RM$( 6, 2)="ER LAESST MICH NICHT DURCH !"
2923 RM$( 6, 3)="ER HAT HUNGER !"
2924 RM$( 6, 4)="ER IST ZIEMLICH WINZIG !"
2925 RM$( 6, 5)="OK.DA HAENGEN BEEREN"
2926 RM$( 6, 6)="ICH HABE KEIN WASSER !"
2927 RM$( 6, 7)="OK.ER LAESST MICH DURCH !"
2928 :
2929 :
2930 :

2950 RO$( 7, 0)="HAUS"
2951 :
2960 RD$( 7, 0)="WESTEN"
2961 :
2970 RM$( 7, 0)="DORT HAENGT EINE GLOCKE !"
2971 RM$( 7, 1)="ES HAT EINE EISENGITTER !"
2972 RM$( 7, 2)="SIE IST ZU !"
2973 RM$( 7, 3)="SIE IST OFFEN !"
2974 RM$( 7, 4)="SIE IST VERSCHLOSSEN !"
2975 RM$( 7, 5)="OK.ABER NICHTS RUEHRT SICH !"
2976 :
2977 :
2978 :

3000 RO$( 8, 0)="BILD"
3001 RO$( 8, 1)="TISCH"
3002 RO$( 8, 2)="BLUMEN"
3003 :
3010 RD$( 8, 0)="SUEDEN"
3011 :
3020 RM$( 8, 0)="ICH SEHE NICHTS BESONDERES !"
3021 RM$( 8, 1)="SIE DUFTEN GUT !"
3022 RM$( 8, 2)="DA LIEGT EIN ZETTEL !"
3023 RM$( 8, 3)="WARNUNG : CUCUMATZ TOETET DICH !"
3024 :
3025 :
3026 :

3050 RO$( 9, 0)="KAMIN"
3051 RO$( 9, 1)="LATERNE"
3052 RO$( 9, 2)="RAUCH"
3053 :
3060 RD$( 9, 0)="UNTEN"
3061 :
3070 RM$( 9, 0)="ER RAUCHT STARK, UMWELTVERPESTUNG !"
3071 RM$( 9, 1)="ES STINKT HIER !"
3072 RM$( 9, 2)="SIE IST AUS !"
3073 RM$( 9, 3)="SIE IST SCHWER !"
3074 :
3075 :
3076 :

3100 RO$(10, 0)="ZIEGE"
3101 RO$(10, 1)="ZAUN"
3102 RO$(10, 2)="WIESE"
3103 :
3110 RD$(10, 0)="SUEDEN"
3111 RD$(10, 1)="OSTEN"
3112 RD$(10, 2)="NORDEN"
3113 :
3120 RM$(10, 0)="SIE SIEHT MICH GRIMMIG AN !"
3121 RM$(10, 1)="SIE SAGT NICHTS !"
3122 RM$(10, 2)="WAS SOLL ICH IHR GEBEN ?"
3123 RM$(10, 3)="SIE FRISST DIE BLUMEN !"
3124 RM$(10, 4)="SIE FRISST DEN APFEL"
3125 RM$(10, 5)="SIE SAGT : DREH DIE INSCHRIFT !"
3126 RM$(10, 6)="DA BEGINNT NACHBARS GRUNDSTUECK !"
3127 RM$(10, 7)="SIE IST GRUEN, WIE ALLE WIESEN !"
3128 :
3129 :
3130 :

3150 RO$(11, 0)="BAUM"
3151 :
3160 RD$(11, 0)="WESTEN"
3161 :
3170 RM$(11, 0)="ER HAENGT VOLLER AEPFEL !"
3171 RM$(11, 1)="EINE GESUNDE ROTE FARBE !"
3172 RM$(11, 2)="SIE HAENGEN ZU HOCH !"
3173 RM$(11, 3)="BAUM AB - NEIN DANKE !"
3174 RM$(11, 4)="OK.DA LIEGT EIN APFEL !"
3175 :
3176 :
3177 :

3200 RO$(12, 0)="BAUM"
3201 RO$(12, 1)="SPINNE"
3202 :
3210 RD$(12, 0)="SUEDEN"
3211 :
3220 RM$(12, 0)="DA SITZT EINE GEFAEHRLICHE SPINNE !"
3221 RM$(12, 1)="SIE SIEHT GEFAEHRLICH AUS !"
3222 RM$(12, 2)="IST VERBOTEN,SPINNEN SIND NUETZLICH !"
3223 RM$(12, 3)="ES IST MIR ZU KALT UND ZU NASS !"
3224 :
3225 :
3226 :

3250 RO$(13, 0)="WALD"
3251 RO$(13, 1)="EULE"
3252 :
3260 RD$(13, 0)="NORDEN"
3261 RD$(13, 1)="SUEDEN"
3262 RD$(13, 2)="OSTEN"
3263 RD$(13, 3)="WESTEN"
3264 :
3270 RM$(13, 0)="ES IST UNHEIMLICH !"
3271 RM$(13, 1)="SIE HAT GROSSE AUGEN !"
3272 RM$(13, 2)="EIN SO NUETZLICHES TIER - NEIN !"
3273 RM$(13, 3)="OK.SIE FRISST IHN !"
3274 RM$(13, 4)="BRICH EINEN AST !"
3275 :
3276 :
3277 :

3300 RO$(14, 0)="WAECHTER"
3301 RO$(14, 1)="HOEHLE"
3302 :
3310 RD$(14, 0)="SUEDEN"
3311 :
3320 RM$(14, 0)="ER HAT EINE HELLEBARDE !"
3321 RM$(14, 1)="ER VERLANGT DIE LOESUNG !"
3322 RM$(14, 2)="SIEHT UNHEIMLICH AUS !"
3323 RM$(14, 3)="OK.ER LAESST MICH DURCH !"
3324 :
3325 :
3326 :

3350 RO$(15, 0)="FAST NICHTS"
3351 :
3360 RD$(15, 0)="SUEDEN"
3361 :
3370 RM$(15, 0)="OK.ES WIRD HELL !"
3371 RM$(15, 1)="SIE HAT EINEN KNAUF !"
3372 RM$(15, 2)="DANKE !"
3373 RM$(15, 3)="INPUT64"
3374 :
3375 :
3376 :

3400 RO$(16, 0)="SARG FACKEL"
3401 RO$(16, 1)="BILD"
3402 :
3410 RD$(16, 0)="OSTEN"
3411 :
3420 RM$(16, 0)="CUCUMATZ"
3421 RM$(16, 1)="DA RUHT EIN TOTER !"
3422 RM$(16, 2)="LIEBER NICHT !"
3423 RM$(16, 3)="ES IST EIN TOTENLICHT !"
3424 RM$(16, 4)="ES IST DER GEFIEDERTE SCHLANGENGOTT !"
3425 RM$(16, 5)="DA IST EIN RING !"
3426 RM$(16, 6)="HERZLICHEN GLUECKWUNSCH !!!"
3427 RM$(16, 7)="WIR HABEN DEN SCHATZ DER MAYA GEFUNDEN !"
3428 :
3429 :
3430 :

3450 RO$(17, 0)=""
3451 :
3460 RD$(17, 0)=""
3461 :
3470 RM$(17, 0)=""
3471 :
3472 :
3473 :

3600 IM$( 0)="ICH SEHE  :"
3601 IM$( 1)="WEGE NACH :"
3602 IM$( 2)="WAS NUN ? "
3603 IM$( 3)="WIE ???"
3604 IM$( 4)="OK."
3605 IM$( 5)="KENNE ICH NICHT"
3606 IM$( 6)="DAS GEHT JETZT NICHT !"
3607 IM$( 7)="KANN ICH JETZT NICHT"
3608 IM$( 8)="NEHMEN !"
3609 IM$( 9)="HINGEHEN !"
3610 IM$(10)="ANSEHEN !"
3611 IM$(11)="OEFFNEN !"
3612 IM$(12)="SPIELZEIT"
3613 IM$(13)="PROGRESS"
3614 :
3615 :
3616 :

3700 IV$( 0)="NIMM"
3701 IV$( 1)="GEH"
3702 IV$( 2)="SIEH"
3703 IV$( 3)="KLETTER"
3704 IV$( 4)="WIRF"
3705 IV$( 5)="RIECH"
3706 IV$( 6)="SCHNUPPER"
3707 IV$( 7)="ZERSCHLAGE"
3708 IV$( 8)="OEFFNE"
3709 IV$( 9)="SCHLIESSE"
3710 IV$(10)="ZERBRECHE"
3711 IV$(11)="HEB"
3712 IV$(12)="FRAG"
3713 IV$(13)="FUETTERE"
3714 IV$(14)="PFLUECKE"
3715 IV$(15)="FAELLTE"
3716 IV$(16)="TOETE"
3717 IV$(17)="VERJAGE"
3718 IV$(18)="ZIEH"
3719 IV$(19)="LIES"
3720 IV$(20)="GIESS"
3721 IV$(21)="FUELLE"
3722 IV$(22)="BESTECHE"
3723 IV$(23)="ENTZUENDE"
3724 IV$(24)="STECKE"
3725 IV$(25)="DREH"
3726 IV$(26)="ISS"
3727 IV$(27)="FRISS"
3728 IV$(28)="GIB"
3729 IV$(29)="SPRING"
3730 IV$(30)="HAU"
3731 IV$(31)="DRUECKE"
3732 IV$(32)="SCHLAGE"
3733 IV$(33)="BENUTZE"
3734 IV$(34)="SCHUETTLE"
3735 IV$(35)="SAG"
3736 IV$(36)="BRICH"
3737 :
3738 :
3739 :

3800 IA$( 0)="DEN"
3801 IA$( 1)="DIE"
3802 IA$( 2)="DAS"
3803 IA$( 3)="DEM"
3804 IA$( 4)="EINEN"
3805 IA$( 5)="EINE"
3806 IA$( 6)="EIN"
3807 IA$( 7)="DER"
3808 IA$( 8)="UND"
3809 IA$( 9)="BITTE"
3810 IA$(10)="MAL"
3811 IA$(11)="JETZT"
3812 IA$(12)="VOM"
3813 IA$(13)="ZUM"
3814 IA$(14)="AM"
3815 IA$(15)="IM"
3816 IA$(16)="ZUR"
3817 IA$(17)="INS"
3818 IA$(18)="AUFS"
3819 IA$(19)="NACH"
3820 IA$(20)="DURCHS"
3821 IA$(21)="VOR"
3822 IA$(22)="ZWISCHEN"
3823 IA$(23)="IHR"
3824 IA$(24)="IHM"
3825 IA$(25)="AUS"
3826 IA$(26)="VON"
3827 IA$(27)="ZU"
3828 IA$(28)="MIT"
3829 IA$(29)="DURCH"
3830 IA$(30)="GEGEN"
3831 IA$(31)="OHNE"
3832 IA$(32)="UM"
3833 IA$(33)="AN"
3834 IA$(34)="AUF"
3835 IA$(35)="HINTER"
3836 IA$(36)="NEBEN"
3837 IA$(37)="IN"
3838 IA$(38)="UEBER"
3839 IA$(39)="UNTER"
3840 :
3841 :
3842 :

3900 IN$( 0)="SPAZI"
3901 IN$( 1)="STOCK"
3902 IN$( 2)="TUER"
3903 IN$( 3)="SCHRANK"
3904 IN$( 4)="WAND"
3905 IN$( 5)="BODEN"
3906 IN$( 6)="DECKE"
3907 IN$( 7)="FACKEL"
3908 IN$( 8)="KLINGEL"
3909 IN$( 9)="OBST"
3910 IN$(10)="APFEL"
3911 IN$(11)="BANANE"
3912 IN$(12)="SCHALE"
3913 IN$(13)="SCHUBLADE"
3914 IN$(14)="BETT"
3915 IN$(15)="BILD"
3916 IN$(16)="TEPPICH"
3917 IN$(17)="INSCHRIFT"
3918 IN$(18)="FALLTUER"
3919 IN$(19)="TREPPE"
3920 IN$(20)="LEITER"
3921 IN$(21)="WASSER"
3922 IN$(22)="KANNE"
3923 IN$(23)="SCHLUESSEL"
3924 IN$(24)="FENSTER"
3925 IN$(25)="GEHEIMTUER"
3926 IN$(26)="KERZE"
3927 IN$(27)="TISCH"
3928 IN$(28)="BLUMEN"
3929 IN$(29)="GRAS"
3930 IN$(30)="TIER"
3931 IN$(31)="VASE"
3932 IN$(32)="LATERNE"
3933 IN$(33)="DACH"
3934 IN$(34)="KAMIN"
3935 IN$(35)="RAUCH"
3936 IN$(36)="GLOCKE"
3937 IN$(37)="HAUS"
3938 IN$(38)="BAUM"
3939 IN$(39)="WAECHTER"
3940 IN$(40)="MAUER"
3941 IN$(41)="EULE"
3942 IN$(42)="ZIEGE"
3943 IN$(43)="SPINNE"
3944 IN$(44)="BERG"
3945 IN$(45)="HOEHLE"
3946 IN$(46)="WALD"
3947 IN$(47)="WIESE"
3948 IN$(48)="ZAUN"
3949 IN$(49)="TOR"
3950 IN$(50)="HELLEBARDE"
3951 IN$(51)="OSTEN"
3952 IN$(52)="WESTEN"
3953 IN$(53)="NORDEN"
3954 IN$(54)="SUEDEN"
3955 IN$(55)="OBEN"
3956 IN$(56)="UNTEN"
3957 IN$(57)="ZETTEL"
3958 IN$(58)="BRUECKE"
3959 IN$(59)="CUCUMATZ"
3960 IN$(60)="KNAUF"
3961 IN$(61)="SARG"
3962 IN$(62)="RING"
3963 IN$(63)="BEEREN"
3964 IN$(64)="AST"
3965 IN$(65)="STRAUCH"
3966 IN$(66)="STATISTIK"
3967 IN$(67)="INVENTAR"
3968 IN$(68)="NEUSTART"
3969 :
3970 :
3971 :
3980 N$=IV$(0)+" "
3981 G$=IV$(1)+" "
3982 S$=IV$(2)+" "
3983 O$=IV$(8)+" "
3984 :
3985 :
3986 :

4000 :
4005 REM - GAME VARIABLES -------------
4010 :

4015 DIM PI$(IS): DIM RF(RS)
4020 PR=0: PT=0: PC=0: PP=0
4025 RO$(13,1)=RO$(0,0): RO$(15,0)=RO$(0,1):RO$(15,1)=RO$(0,3):POKE S+24,15
4030 :
4035 FOR I=0 TO IS-1: PI$(I)="": NEXT
4040 FOR I=0 TO RS-1: RF(I)=0: NEXT

4500 :
4505 REM - COMMON VARIABLES -----------
4510 :

4515 A%=0: X%=0: Y%=0
4520 A$="": X$="": Y$=""

5000 :
5005 REM ******************************
5010 REM * MAIN GAME LOOP             *
5015 REM ******************************
5020 :

5025 IF PR=0 THEN 5100: REM TITLE
5030 IF PR=1 THEN 5200: REM RIP
5035 GOTO 5300        : REM ROOMS

5100 :
5105 REM - TITLE SCREEN ---------------
5110 :

5115 GOSUB 10500: REM INIT SCREEN
5120 GOSUB 30500: REM DRAW TITLE
5125 GOSUB 55100: REM INIT SPRITES
5130 GOSUB 60000: REM INIT MACHINE CODE
5135 PR=2       : REM SET ROOM TO 2
5140 PT=TIME/60 : REM RESET TIMER
5145 GOSUB 10600: REM INIT SCREEN
5150 GOSUB 11500: REM DRAW FRAME
5155 GOTO   5300: REM ROOMS

5200 :
5205 REM - RIP SCREEN -----------------
5210 :

5215 GOSUB 12000: REM CLEAR ROOM
5220 GOSUB 12500: REM CLEAR PANEL
5225 GOSUB 31000: REM DRAW RIP
5230 GOSUB 13000: REM DRAW ITEMS
5235 GOSUB 13500: REM DRAW DIRECTIONS
5340 GOSUB 14000: REM CLEAR INPUT
5245 GOSUB 16000: REM DRAW RIP MESSAGE
5250 GOSUB 16500: REM CALC STATS
5255 GOSUB 15000: REM PRINT MESSAGE
5260 GOSUB 19000: REM WAIT FOR KEY
5265 GOTO   4020: REM INIT GAME

5300 :
5305 REM - ROOMS ----------------------
5310 :

5315 GOSUB 12000: REM CLEAR ROOM
5320 GOSUB 12500: REM CLEAR PANEL
5325 GOSUB 30000: REM DRAW ROOM
5330 GOSUB 13000: REM DRAW ITEMS
5335 GOSUB 13500: REM DRAW DIRECTIONS
5340 GOSUB 14000: REM CLEAR INPUT
5345 GOSUB 15000: REM DRAW MESSAGE
5350 GOSUB 14500: REM WAIT FOR INPUT
5355 GOSUB 20000: REM INTERPRETER
5360 ON A GOTO 5415,5420,5425,5430,5435,5440,5445,5500

5400 :
5405 REM - PARSE INTERPRETER RESPONSE -
5410 :

5415 GOSUB 30000: GOTO 5330: REM ROOM 1
5420 GOTO   5300           : REM ALL  2
5425 PR=1       : GOTO 5200: REM RIP  3
5430 GOTO   5330           : REM MSG  4
5435 GOSUB 16500: GOTO 5340: REM STA  5
5440 GOSUB 17000: GOTO 5340: REM INV  6
5445 GOTO   4020           : REM NEW  7

5500 :
5505 GOSUB 30000: REM DRAW ROOM
5510 GOSUB 14000: REM CLEAR INPUT
5515 A$=RM$(16,6):GOSUB 16000
5520 A$=RM$(16,7):GOSUB 15000
5525 GOSUB 19000: REM WAIT FOR KEY
5530 GOSUB 16500: GOSUB 15000
5535 GOSUB 19000: REM WAIT FOR KEY
5540 GOTO   4020: REM INIT GAME
5545 :

10000 :
10005 REM *****************************
10010 REM * SUBROUTINES               *
10015 REM *****************************
10020 :

10500 :
10505 REM - INIT SCREEN ---------------
10510 :

10515 PRINT CHR$(147)
10520 POKE V+21,0
10525 POKE 53280,0: POKE 53281,0
10530 RETURN
10535 :

10600 PRINT CHR$(147)
10605 POKE V+21,0
10610 POKE 53280,CB: POKE 53281,CF
10615 RETURN

11000 :
11005 REM - POSITION CURSOR -----------
11010 :

11015 POKE 211,X :POKE 214,Y
11020 SYS 58640
11025 RETURN

11500 :
11505 REM - DRAW FRAME ----------------
11510 :

11515 SYS 49152
11520 RETURN

12000 :
12005 REM - CLEAR ROOM ---------------
12010 :

12015 POKE V+21,0: SYS 49234
12020 RETURN

12500 :
12505 REM - CLEAR PANEL ---------------
12510 :

12515 SYS 49274
12520 RETURN

13000 :
13005 REM - PRINT ITEMS ---------------
13010 :

13015 X=FW+1: Y=PI: GOSUB 11000
13020 POKE C,14
13025 PRINT IM$(0)
13030 :
13035 POKE C,1
13040 FOR I=0 TO 4
13045 PRINT "[CRDx2][CRLx12]";
13050 PRINT RO$(PR,I)
13055 NEXT
13060 RETURN

13500 :
13505 REM - PRINT DIRECTIONS ----------
13510 :

13515 X=FW+1: Y=PD: GOSUB 11000
13520 POKE C,14
13525 PRINT IM$(1)
13530 :
13535 POKE C,1
13540 FOR I=0 TO 4
13545 PRINT "[CRDx2][CRLx12]";
13550 PRINT RD$(PR,I)
13555 NEXT
13560 RETURN

14000 :
14005 REM - CLEAR INPUT ---------------
14010 :

14015 SYS 49254
14020 RETURN

14500 :
14505 REM - WAIT FOR INPUT ------------
14510 :

14515 A$="": X$="": Y$=" "
14520 A=40-2-LEN(IM$(2))
14525 :
14530 X=0: Y=PE: GOSUB 11000
14535 POKE C,7: PRINT IM$(2);
14540 POKE C,10
14545 POKE 204,0
14550 :
14600 GET X$: IF X$="" THEN 14600
14605 X=ASC(X$): Y=LEN(A$)
14610 IF X>=65 AND X<=90 THEN 14800
14615 IF X=20 AND Y>0 THEN 14700
14620 IF X=32 AND ASC(Y$)<>32 THEN 14800
14625 IF X=13 AND A$<>"" THEN 14900
14630 IF X=133 THEN K=K*-1
14635 GOTO 14600
14640 :
14700 A$=LEFT$(A$,Y-1)
14705 Y$=X$
14710 PRINT X$;
14715 GOSUB 14950
14720 GOTO 14600
14725 :
14800 IF Y=A THEN 14600
14805 A$=A$+X$
14810 Y$=X$
14815 PRINT X$;
14820 GOSUB 14950
14825 GOTO 14600
14830 :
14900 PRINT " "
14905 POKE 204,255
14910 GOSUB 14950
14915 RETURN
14920 :
14950 IF K=1 THEN POKE S+1,SH: POKE S+4,21: POKE S+5,9: POKE S+15,30: POKE S+4,20
14955 RETURN

15000 :
15005 REM - PRINT MESSAGE -------------
15010 :

15015 X=0: Y=PM: GOSUB 11000
15020 POKE C,10: PRINT A$
15025 RETURN

16000 :
16005 REM - PRINT RIP MESSAGE ---------
16010 :

16015 X=0: Y=PE: GOSUB 11000
16020 POKE C,14: PRINT A$
16025 RETURN

16500 :
16505 REM - PRINT STATISTICS ----------
16510 :

16515 A=INT(TIME/60-PT)
16520 X=INT(A/60): Y=INT(A-X*60)
16525 X$=STR$(X): Y$=STR$(Y)
16530 X$=RIGHT$(X$,LEN(X$)-1): Y$=RIGHT$(Y$,LEN(Y$)-1)
16535 IF X<10 THEN X$="0"+X$
16540 IF Y<10 THEN Y$="0"+Y$
16545 A$=IM$(12)+": "+X$+":"+Y$
16600 :
16605 X=0
16615 IF (RF(2) AND 2)=2 THEN X=X+1
16620 IF (RF(3) AND 2)=2 THEN X=X+3
16625 IF (RF(3) AND 4)=4 THEN X=X+2
16630 IF (RF(4) AND 4)=4 THEN X=X+1
16635 IF (RF(4) AND 8)=8 THEN X=X+2
16640 IF (RF(4) AND 16)=16 THEN X=X+1
16645 IF (RF(4) AND 32)=32 THEN X=X+3
16650 IF (RF(4) AND 64)=64 THEN X=X+2
16655 IF (RF(5) AND 2)=2 THEN X=X+2
16660 IF (RF(6) AND 2)=2 THEN X=X+3
16665 IF (RF(6) AND 4)=4 THEN X=X+3
16670 IF (RF(6) AND 8)=8 THEN X=X+5
16675 IF (RF(7) AND 4)=4 THEN X=X+5
16680 IF (RF(8) AND 2)=2 THEN X=X+1
16685 IF (RF(8) AND 4)=4 THEN X=X+2
16690 IF (RF(8) AND 8)=8 THEN X=X+3
16695 IF (RF(9) AND 2)=2 THEN X=X+1
16700 IF (RF(10) AND 2)=2 THEN X=X+3
16705 IF (RF(10) AND 4)=4 THEN X=X+5
16710 IF (RF(11) AND 2)=2 THEN X=X+5
16715 IF (RF(11) AND 4)=4 THEN X=X+1
16720 IF (RF(12) AND 2)=2 THEN X=X+5
16725 IF (RF(13) AND 2)=2 THEN X=X+3
16730 IF (RF(13) AND 4)=4 THEN X=X+5
16735 IF (RF(14) AND 2)=2 THEN X=X+3
16740 IF (RF(14) AND 4)=4 THEN X=X+5
16745 IF (RF(15) AND 2)=2 THEN X=X+2
16750 IF (RF(16) AND 2)=2 THEN X=X+3
16755 IF (RF(16) AND 4)=4 THEN X=X+5
16800 Z$=STR$(PP+X): Z$=RIGHT$(Z$,LEN(Z$)-1)
16805 X$=STR$(PC): X$=RIGHT$(X$,LEN(X$)-1)
16810 A$=A$+", "+IM$(13)+": "+Z$+"%, ("+X$+")"
16815 RETURN

17000 :
17005 REM - PRINT INVENTORY -----------
17010 :

17015 RETURN

19000 :
19005 REM - WAIT FOR KEY --------------
19010 :

19015 GET X$: IF X$="" THEN 19015
19020 RETURN

19500 :
19505 REM - PRINT FREE MEMORY ---------
19510 :

19515 PRINT FRE(0)-65536*(FRE(0)<0)
19520 END

20000 :
20005 REM *****************************
20010 REM * INTERPRETER               *
20015 REM *****************************
20020 :
20025 REM * MODIFIES:
20030 REM * PR  - PLAYER ROOM
20035 REM * PC  - PLAYER COMMANDS
20040 REM * PP  - PLAYER POINTS
20045 REM * PI$ - PLAYER INVENTORY
20050 REM * RF  - ROOM FLAGS
20055 :
20060 REM * PARAMETERS:
20065 REM * A$ - USER COMMAND
20070 :
20075 REM * RETURNS:
20080 REM * A$ - MESSAGE TO SHOW
20085 REM * A  - INTERPRETER RESPONSE:
20090 REM *    - 1) REDRAW ROOM
20095 REM *    - 2) CHANGE ROOM
20100 REM *    - 3) PLAYER DIED
20105 REM *    - 4) SHOW MESSAGE
20110 REM *    - 5) SHOW STATISTICS
20115 REM *    - 6) SHOW INVENTORY
20120 REM *    - 7) NEW GAME
20125 REM *    - 8) END GAME
20130 :

20200 :
20205 REM - SPECIAL COMMANDS ----------
20210 :

20215 IF A$=IN$(66) THEN A=5: RETURN
20220 IF A$=IN$(67) THEN A=6: RETURN
20225 IF A$=IN$(68) THEN A=7: RETURN
20230 PC=PC+1: IF PC>999 THEN PC=999

20235 IF A$=S$+IN$(1) AND (RF(2) AND 2)=2 THEN A$=RM$(2,9): A=4: RETURN
20240 IF A$=S$+IN$(23) AND (RF(4) AND 16)=16 THEN A$=RM$(4,6): A=4: RETURN
20245 IF A$=S$+IN$(22) AND (RF(5) AND 2)=2 THEN A$=RM$(5,2): A=4: RETURN
20250 IF A$=S$+IN$(22) AND (RF(4) AND 4)=4 THEN A$=RM$(4,5): A=4: RETURN
20255 IF A$=S$+IN$(32) AND (RF(15) AND 2)=2 THEN A$=RM$(9,3): A=4: RETURN
20260 IF A$=S$+IN$(32) AND (RF(9) AND 2)=2 THEN A$=RM$(9,2): A=4: RETURN
20265 IF A$=S$+IN$(10) AND (RF(11) AND 4)=4 THEN A$=RM$(11,1): A=4: RETURN

20300 :
20305 REM - ROOM SPECIFIC -------------
20310 :

20315 X=PR: Y=PR-10
20320 ON X GOTO 28500,20500,21000,21500,22000,22500,23000,23500,24000,24500
20325 ON Y GOTO 25000,25500,26000,26500,27000,27500

20500 :
20505 REM - ROOM 02 -------------------
20510 :

20515 IF A$=S$+IN$( 2) THEN A$=RM$(2,0): A=4: RETURN
20520 IF A$=S$+IN$( 1) THEN A$=RM$(2,1): A=4: RETURN
20525 IF A$=S$+IN$( 3) THEN A$=RM$(2,2): A=4: RETURN
20530 IF A$=S$+IN$(12) THEN A$=RM$(2,3): A=4: RETURN
20535 IF A$=S$+IN$( 9) THEN A$=RM$(2,4): A=4: RETURN
20540 IF A$=S$+IN$(10) THEN A$=RM$(2,5): A=4: RETURN
20545 IF A$=S$+IN$(11) THEN A$=RM$(2,6): A=4: RETURN
20550 IF A$=S$+IN$( 7) THEN A$=RM$(2,7): A=4: RETURN
20555 IF A$=N$+IN$( 1) THEN A$=IM$(4): RF(2)=RF(2) OR 2: A=1: RETURN
20560 IF A$=G$+" "+IN$(51) THEN A$=IM$(4): PR=3: A=2: RETURN
20565 X$=O$+IN$(2): X=RF(4) AND 16
20570 IF A$=X$ AND X=16 THEN A$=IM$(4): PR=6: A=2: RETURN
20575 IF A$=X$ THEN A$=RM$(2,8): A=4: RETURN
20580 GOTO 28500

21000 :
21005 REM - ROOM 03 -------------------
21010 :

21015 IF A$=S$+IN$(15) THEN A$=RM$(3,0): A=4: RETURN
21020 IF A$=S$+IN$(14) THEN A$=RM$(3,1): A=4: RETURN
21025 IF A$=S$+IN$(16) THEN A$=RM$(3,2): A=4: RETURN
21030 IF A$=G$+IN$(14) THEN A$=RM$(3,4): A=4: RETURN
21035 IF A$=N$+IN$(15) THEN A$=RM$(3,5): A=4: RETURN
21040 IF A$=IV$(11)+" "+IN$(16) THEN A$=RM$(3,6): RF(3)=RF(3) OR 2: A=1: RETURN
21045 IF A$=IV$(19)+" "+IN$(17) THEN A$=RM$(3,3): RF(3)=RF(3) OR 4: A=4: RETURN
21050 IF A$=G$+IN$(52) THEN A$=IM$(4): PR=2: A=2: RETURN
21055 IF (RF(3) AND 2)<>2 THEN 28500
21060 IF A$=G$+IN$(20) THEN A$=IM$(4): PR=4: A=2: RETURN
21065 IF A$=G$+IN$(56) THEN A$=IM$(4): PR=4: A=2: RETURN
21070 GOTO 28500

21500 :
21505 REM - ROOM 04 -------------------
21510 :

21515 IF (RF(4) AND 2)<>2 THEN A$=RM$(4,0): RF(4)=RF(4) OR 2: A=4: RETURN
21520 IF A$=S$+IN$(20) THEN A$=RM$(4,1): A=4: RETURN
21525 IF A$=S$+IN$( 3) THEN A$=RM$(4,3): A=4: RETURN
21530 IF A$=S$+IN$(26) THEN A$=RM$(4,4): A=4: RETURN
21535 IF A$=N$+IN$(22) THEN A$=IM$(4): RF(4)=RF(4) OR 4: A=1: RETURN
21540 IF A$=O$+IN$(13) THEN A$=IM$(4): RF(4)=RF(4) OR 8: A=1: RETURN
21545 IF A$=S$+IN$( 4) THEN A$=RM$(4,2):RF(4)=RF(4) OR 32: A=4:RETURN
21550 X$=N$+IN$(23): X=RF(4) AND 8
21555 IF A$=X$ AND X=8 THEN A$=IM$(4): RF(4)=RF(4) OR 16: A=1: RETURN
21560 X$=O$+IN$(25): X=RF(4) AND 32
21565 IF A$=X$ AND X=32 THEN A$=IM$(4): RF(4)=RF(4) OR 64: A=1: RETURN
21570 X$=G$+IN$(25): X=RF(4) AND 64
21575 IF A$=X$ AND X=64 THEN A$=IM$(4): PR=5: A=2: RETURN
21580 GOTO 28500

22000 :
22005 REM - ROOM 05 -------------------
22010 :

22015 IF A$=S$+IN$(19) THEN A$=RM$(5,1): A=4: RETURN
22020 IF A$=S$+IN$(12) THEN A$=RM$(5,2): A=4: RETURN
22025 IF A$=S$+IN$(24) THEN A$=RM$(5,3): A=4: RETURN
22030 IF A$=S$+IN$( 7) THEN A$=RM$(5,4): A=4: RETURN
22035 IF A$=N$+IN$( 7) THEN A$=RM$(5,5): A=4: RETURN
22040 X$=IV$(21)+" "+IN$(22): X=RF(4) AND 4
22045 IF A$=X$ AND X=4 THEN A$=RM$(5,6): RF(5)=RF(5) OR 2: A=4: RETURN
22050 IF A$=G$+IN$(52) THEN A$=IM$(4): PR=4: A=2: RETURN
22055 IF A$=G$+IN$(55) THEN A$=IM$(4): PR=2: A=2: RETURN
22060 GOTO 28500

22500 :
22505 REM - ROOM 06 -------------------
22510 :

22515 IF A$=S$+IN$(40) THEN A$=RM$(6,0): A=4: RETURN
22520 IF A$=S$+IN$(47) THEN A$=RM$(6,1): A=4: RETURN
22525 IF A$=S$+IN$(39) THEN A$=RM$(6,2): A=4: RETURN
22530 IF A$=IV$(12)+" "+IN$(39) THEN A$=RM$(6,3): A=4: RETURN
22535 IF A$=S$+IN$(65) THEN A$=RM$(6,4): A=4: RETURN
22540 X$=IV$(20)+" "+IN$(65): X=RF(4) AND 4
22545 IF A$=X$ AND X=4 THEN A$=RM$(6,5): RF(6)=RF(6) OR 2: A=1: RETURN
22550 IF A$=X$ THEN A$=RM$(6,6): A=4: RETURN
22555 X$=IV$(14)+" "+IN$(63): X=RF(6) AND 2
22560 IF A$=X$ AND X=2 THEN A$=IM$(4): RF(6)=RF(6) OR 4: A=1: RETURN
22565 X$=IV$(28)+" "+IN$(63): X=RF(6) AND 4
22570 IF A$=X$ AND X=4 THEN A$=RM$(6,7): RF(6)=RF(6) OR 8: A=1: RETURN
22575 X$=G$+IN$(49): X=RF(6) AND 8
22580 IF A$=X$ AND X=8 THEN A$=IM$(4): PR=10: A=2: RETURN
22585 IF A$=G$+" "+IN$(54) THEN A$=IM$(4): PR=2: A=2: RETURN
22590 IF A$=G$+" "+IN$(51) THEN A$=IM$(4): PR=7: A=2: RETURN
22595 GOTO 28500

23000 :
23005 REM - ROOM 07 -------------------
23010 :

23015 IF A$=S$+IN$(37) THEN A$=RM$(7,0): A=4: RETURN
23020 IF A$=S$+IN$(24) THEN A$=RM$(7,1): A=4: RETURN
23025 X$=S$+IN$(2): X=RF(7) AND 4
23030 IF A$=X$ AND X=4 THEN A$=RM$(7,3): A=4: RETURN
23035 IF A$=X$ THEN A$=RM$(7,2): A=4: RETURN
23040 X$=O$+IN$(2)
23045 IF A$=X$ AND X<>4 THEN A$=RM$(7,4): A=4: RETURN
23050 IF A$=X$ THEN A$=RM$(7,3): A=4: RETURN
23055 Y$=IV$(18)+" "+IN$(36): Y=RF(7) AND 2
23060 IF A$=Y$ AND Y=2 THEN RF(7)=RF(7) OR 4: A$=IM$(4): A=1: RETURN
23065 IF A$=Y$ THEN RF(7)=RF(7) OR 2:A$=RM$(7,5): A=4: RETURN
23070 IF A$=G$+" "+IN$(37) AND X=4 THEN A$=IM$(4): PR=8: A=2: RETURN
23075 IF A$=G$+" "+IN$(52) THEN A$=IM$(4): PR=6: A=2: RETURN
23080 IF A$=IV$( 3)+" "+IN$(33) THEN A$=IM$(4): PR=9: A=2: RETURN
23085 GOTO 28500

23500 :
23505 REM - ROOM 08 -------------------
23510 :

23515 IF A$=S$+IN$(15) THEN A$=RM$(8,0): A=4: RETURN
23520 IF A$=S$+IN$(28) THEN A$=RM$(8,1): A=4: RETURN
23525 IF A$=IV$( 5)+" "+IN$(28) THEN A$=RM$(8,1): A=4: RETURN
23530 IF A$=S$+IN$(27) THEN A$=RM$(8,2): RF(8)=RF(8) OR 4: A=4: RETURN
23535 X$=IV$(19)+" "+IN$(57): X=RF(8) AND 4
23540 IF A$=X$ AND X=4 THEN A$=RM$(8,3): RF(8)=RF(8) OR 8: A=4: RETURN
23545 IF A$=N$+IN$(28) THEN A$=IM$(4): RF(8)=RF(8) OR 2: A=1: RETURN
23550 IF A$=G$+IN$(54) THEN A$=IM$(4): PR=7: A=2: RETURN
23555 GOTO 28500

24000 :
24005 REM - ROOM 09 -------------------
24010 :

24015 IF A$=S$+IN$(34) THEN A$=RM$(9,0): A=4: RETURN
24020 IF A$=S$+IN$(35) THEN A$=RM$(9,1): A=4: RETURN
24025 IF A$=IV$( 5)+" "+IN$(35) THEN A$=RM$(9,1): A=4: RETURN
24030 IF A$=S$+IN$(32) THEN A$=RM$(9,2): A=4: RETURN
24035 IF A$=N$+IN$(32) THEN A$=IM$(4): RF(9)=RF(9) OR 2: A=1: RETURN
24040 IF A$=G$+IN$(56) THEN A$=IM$(4): PR=7: A=2: RETURN
24045 GOTO 28500

24500 :
24505 REM - ROOM 10 -------------------
24510 :

24515 IF A$=S$+IN$(42) THEN A$=RM$(10,0): A=4: RETURN
24520 IF A$=S$+IN$(48) THEN A$=RM$(10,6): A=4: RETURN
24525 IF A$=S$+IN$(47) THEN A$=RM$(10,7): A=4: RETURN
24530 IF A$=IV$(28)+" "+IN$(42) THEN A$=RM$(10,2): A=4: RETURN
24535 X$=IV$(12)+" "+IN$(42): X=RF(10) AND 2
24540 IF A$=X$ AND X=2 THEN A$=RM$(10,5): RF(10)=RF(10) OR 4: A=4: RETURN
24545 IF A$=X$ THEN A$=RM$(10,1): A=4: RETURN
24550 X$=IV$(28)+" "+IN$(28): X=RF(8) AND 2
24555 IF A$=X$ AND X=2 THEN A$=RM$(10,3): RF(10)=RF(10) OR 2: A=4: RETURN
24560 X$=IV$(28)+" "+IN$(10): X=RF(11) AND 4
24565 IF A$=X$ AND X=4 THEN A$=RM$(10,4): RF(10)=RF(10) OR 2: A=4: RETURN
24570 IF A$=G$+IN$(54) THEN A$=IM$(4): PR=6: A=2: RETURN
24575 IF A$=G$+IN$(51) THEN A$=IM$(4): PR=11: A=2: RETURN
24580 IF A$=G$+IN$(53) THEN A$=IM$(4): PR=12: A=2: RETURN
24585 GOTO 28500

25000 :
25005 REM - ROOM 11 -------------------
25010 :

25015 IF A$=S$+IN$(38) THEN A$=RM$(11,0): A=4: RETURN
25020 IF A$=S$+IN$(10) THEN A$=RM$(11,1): A=4: RETURN
25025 IF A$=IV$(15)+" "+IN$(38) THEN A$=RM$(11,3): A=4: RETURN
25030 IF A$=IV$( 3)+" "+IN$(38) THEN A$=RM$(1,1): A=3: RETURN
25035 IF A$=IV$(34)+" "+IN$(38) THEN A$=RM$(11,4):RF(11)=RF(11) OR 2:A=1:RETURN
25040 X$=N$+IN$(10): X=RF(11) AND 2
25045 IF A$=X$ AND X=2 THEN A$=IM$(4): RF(11)=RF(11) OR 4: A=1: RETURN
25050 IF A$=X$ THEN A$=RM$(11,2): A=4: RETURN
25055 IF A$=G$+IN$(52) THEN A$=IM$(4): PR=10: A=2: RETURN
25060 GOTO 28500

25500 :
25505 REM - ROOM 12 -------------------
25510 :

25515 IF A$=S$+IN$(58) THEN A$=RM$(12,0): A=4: RETURN
25520 IF A$=S$+IN$(43) THEN A$=RM$(12,1): A=4: RETURN
25525 IF A$=IV$(16)+" "+IN$(43) THEN A$=RM$(12,2): A=4: RETURN
25530 IF A$=G$+IN$(21) THEN A$=RM$(12,3): A=4: RETURN
25535 IF A$=IV$(17)+" "+IN$(43) THEN A$=RM$( 1,2): A=3: RETURN
25540 X$=IV$(4)+" "+IN$(1): X=RF(2) AND 2
25545 IF A$=X$ AND X=2 THEN A$=IM$(4):POKE V+21,0:RF(12)=RF(12) OR 2:A=4:RETURN
25550 X$=IV$(1)+" "+IN$(58): X=RF(12) AND 2
25555 IF A$=X$ AND X=2 THEN RESTORE: GOSUB 56000: A$=IM$(4): PR=13: A=2: RETURN
25560 IF A$=G$+IN$(54) THEN A$=IM$(4): PR=10: A=2: RETURN
25565 GOTO 28500

26000 :
26005 REM - ROOM 13 -------------------
26010 :

26015 IF A$=S$+IN$(46) THEN A$=RM$(13,0): A=4: RETURN
26020 IF A$=S$+IN$(41) THEN A$=RM$(13,1): A=4: RETURN
26025 IF A$=IV$(16)+" "+IN$(41) THEN A$=RM$(13,2): A=4: RETURN
26030 X$=IV$(28)+" "+IN$(10): X=RF(11) AND 4
26035 IF A$=X$ AND X=4 THEN A$=RM$(13,3): RF(13)=RF(13) OR 2: A=4: RETURN
26040 X$=IV$(12)+" "+IN$(41): X=RF(13) AND 2
26045 IF A$=X$ AND X=2 THEN A$=RM$(13,4): RF(13)=RF(13) OR 4: A=4: RETURN
26050 X$=IV$(36)+" "+IN$(64): X=RF(13) AND 4
26055 IF A$=X$ AND X=4 THEN A$=IM$(4): PR=14: A=2: RETURN
26060 IF A$=G$+IN$(51) THEN 26100
26065 IF A$=G$+IN$(52) THEN 26100
26070 IF A$=G$+IN$(53) THEN 26100
26075 IF A$=G$+IN$(54) THEN 26100
26080 GOTO 28500
26100 RO$(13,1)=RO$(0,3)
26105 IF (RF(13) AND 8)<>8 THEN A$=IM$(4): RF(13)=RF(13) OR 8: A=1: RETURN
26110 IF (RF(13) AND 16)<>16 THEN A$=IM$(4): RF(13)=RF(13) OR 16: A=1: RETURN
26115 IF (RF(13) AND 32)<>32 THEN A$=IM$(4): RF(13)=RF(13) OR 32: A=1: RETURN
26120 A$=RM$(1,4): A=3: RETURN

26500 :
26505 REM - ROOM 14 -------------------
26510 :

26515 IF A$=S$+IN$(39) THEN A$=RM$(14,0): A=4: RETURN
26520 IF A$=S$+IN$(45) THEN A$=RM$(14,2): A=4: RETURN
26525 IF A$=IV$(12)+" "+IN$(39) THEN A$=RM$(14,1):RF(14)=RF(14) OR 2:A=4:RETURN
26530 X$=IV$(35)+" "+IN$(59): X=RF(14) AND 2: Y=RF(3) AND 4
26535 IF A$=X$ AND X=2 AND Y=4 THEN A$=RM$(14,3): RF(14)=RF(14) OR 4:A=1:RETURN
26540 X$=G$+IN$(45): X=RF(14) AND 4
26545 IF A$=X$ AND X=4 THEN A$=IM$(4): PR=15: A=2: RETURN
26550 IF A$=G$+IN$(54) THEN A$=IM$(4): PR=13: A=2: RETURN
26555 GOTO 28500

27000 :
27005 REM - ROOM 15 -------------------
27010 :

27015 X$=IV$(23)+" "+IN$(32): X=RF(9) AND 2
27020 IF A$=X$ AND X=2 THEN A$=RM$(15,0): RF(15)=RF(15) OR 2: RO$(15,0)=RO$(0,2): A=1: RETURN
27025 X$=S$+IN$( 2): X=RF(15) AND 2
27030 IF A$=X$ AND X=2 THEN A$=RM$(15,1): A=4: RETURN
27035 X$=IV$(25)+" "+IN$(60): X=RF(15) AND 2
27040 IF A$=X$ AND X=2 THEN A$=IM$(4): PR=16: A=2: RETURN
27045 IF A$=G$+IN$(54) THEN A$=IM$(4): PR=14: A=2: RETURN
27050 GOTO 28500

27500 :
27505 REM - ROOM 16 -------------------
27510 :

27515 IF A$=S$+IN$(61) THEN A$=RM$(16,1): A=4: RETURN
27520 IF A$=O$+IN$(61) THEN A$=RM$(16,2): A=4: RETURN
27525 IF A$=S$+IN$( 7) THEN A$=RM$(16,3): A=4: RETURN
27530 IF A$=N$+IN$( 7) THEN A$=RM$(16,3): A=4: RETURN
27535 IF A$=S$+IN$(15) THEN A$=RM$(16,4): A=4: RETURN
27540 IF A$=IV$(16)+" "+IN$(59) THEN A$=RM$( 1,5): A=3: RETURN
27545 IF A$=S$+IN$( 4) THEN A$=RM$(16,5):RF(16)=RF(16) OR 2:A=4:RETURN
27550 X$=IV$(11)+" "+IN$(62): X=RF(16) AND 2
27555 IF A$=X$ AND X=2 THEN A$=IM$(4): RF(16)=RF(16) OR 4: A=8: RETURN
27560 IF A$=G$+IN$(51) THEN A$=IM$(4): PR=15: A=2: RETURN
27565 GOTO 28500

28500 :
28505 REM - COMMON --------------------
28510 :

28515 IF LEFT$(A$,LEN(N$))=N$ THEN A$=IM$(7)+" "+IM$(8): RETURN
28520 IF LEFT$(A$,LEN(G$))=G$ THEN A$=IM$(7)+" "+IM$(9): RETURN
28525 IF LEFT$(A$,LEN(S$))=S$ THEN A$=IM$(7)+" "+IM$(10): RETURN
28530 IF LEFT$(A$,LEN(O$))=O$ THEN A$=IM$(7)+" "+IM$(11): RETURN
28535 :
28550 X=0: Y=0: Y$="": Z$=""
28555 FOR I=1 TO LEN(A$)
28556 IF X>0 AND Y>0 THEN 28600
28560 X$=MID$(A$,I,1)
28565 IF X$=" " AND X=0 THEN X=I: GOTO 28575
28570 REMX$=" " AND Y=0 THEN Y=I
28575 NEXT I
28580 :
28600 IF X=0 THEN X$=A$: GOTO 28625
28605 IF X>0 THEN X$=LEFT$(A$,X-1)
28610 IF Y=0 THEN Y$=RIGHT$(A$,LEN(A$)-X): GOTO 28625
28615 REMY>0 THEN Y$=MID$(A$,X+1,Y-X-1)
28620 :
28625 IF LEN(X$)>10 THEN Z$=LEFT$(X$,40-3-LEN(IM$(5))): GOTO 29505
28630 IF LEN(Y$)>10 THEN Z$=LEFT$(Y$,40-3-LEN(IM$(5))): GOTO 29505
28695 X=0: Y=0
28700 FOR I=0 TO 66
28703 IF X=1 AND Y=1 THEN 28800
28704 IF X=1 THEN 28715
28705 IF I<38 THEN Z$=IV$(I)
28710 IF X$=Z$ OR X$=IN$(I) THEN X=1
28715 IF Y$=Z$ OR Y$=IN$(I) THEN Y=1
28720 NEXT I
28725 :
28800 IF X=0 THEN Z$=X$: GOTO 29505
28805 IF Y=0 AND Y$<>"" THEN Z$=Y$: GOTO 29505
28810 IF X=1 AND Y$="" THEN A$=IM$(3): RETURN
28835 A$=IM$(6): RETURN
29500 A$=IM$(3): RETURN
29505 A$=CHR$(34)+Z$+CHR$(34)+" "+IM$(5): PC=PC-1: RETURN

30000 :
30005 REM *****************************
30010 REM * ROOM DRAWING              *
30015 REM *****************************
30020 :

30025 PRINT CHR$(142) CHR$(19) ""
30030 IF (RF(PR) AND 1)<>1 THEN RF(PR)=RF(PR) OR 1: PP=PP+1
30035 X=PR: Y=PR-10
30040 ON X GOTO 31000,32000,33000,34000,35000,36000,37000,38000,39000,40000
30045 ON Y GOTO 41000,42000,43000,44000,45000,46000

30500 :
30505 REM - ROOM 00 -------------------
30510 :

30515 RETURN

31000 :
31005 REM - ROOM 01 -------------------
31010 :

31015 RETURN

32000 :
32005 REM - ROOM 02 -------------------
32010 :

32015 RETURN

33000 :
33005 REM - ROOM 03 -------------------
33010 :

33015 RETURN

34000 :
34005 REM - ROOM 04 -------------------
34010 :

34015 RETURN

35000 :
35005 REM - ROOM 05 -------------------
35010 :

35015 RETURN

36000 :
36005 REM - ROOM 06 -------------------
36010 :

36015 RETURN

37000 :
37005 REM - ROOM 07 -------------------
37010 :

37015 RETURN

38000 :
38005 REM - ROOM 08 -------------------
38010 :

38015 RETURN

39000 :
39005 REM - ROOM 09 -------------------
39010 :

39015 RETURN

40000 :
40005 REM - ROOM 10 -------------------
40010 :

40015 RETURN

41000 :
41005 REM - ROOM 11 -------------------
41010 :

41015 RETURN

42000 :
42005 REM - ROOM 12 -------------------
42010 :

42015 RETURN

43000 :
43005 REM - ROOM 13 -------------------
43010 :

43015 RETURN

44000 :
44005 REM - ROOM 14 -------------------
44010 :

44015 RETURN

45000 :
45005 REM - ROOM 15 -------------------
45010 :

45015 RETURN

46000 :
46005 REM - ROOM 16 -------------------
46010 :

46015 RETURN

50000 :
50005 REM *****************************
50010 REM * SOUND HANDLING            *
50015 REM *****************************
50020 :

51000 :
51005 REM - PLAY SOUND ----------------
51010 :

51015 IF K=-1 THEN RETURN
51020 POKE S+1,SH
51025 POKE S+4,21
51030 POKE S+5,9
51035 POKE S+15,30
51040 POKE S+4,20
51045 RETURN

55000 :
55005 REM *****************************
55010 REM * SPRITE HANDLING           *
55015 REM *****************************
55020 :

55100 :
55105 REM - INIT SPRITES --------------
55110 :

55115 RESTORE
55120 GOSUB 56000
55125 GOSUB 57000
55130 GOSUB 58000
55135 GOSUB 59000
55140 RETURN

55500 :
55505 REM - DRAW SPRITE ---------------
55510 :

55515 POKE V+29,7
55520 POKE V+23,15
55525 POKE V+21,A
55530 RETURN
55535 :

55600 POKE V+29,7
55605 POKE V+23,15
55610 POKE V+0,82
55615 POKE V+1,110
55620 POKE V+21,1
55625 RETURN
55630 :

55700 POKE V+29,6
55705 POKE V+23,14
55710 POKE V+0,82
55715 POKE V+1,110
55720 POKE V+21,1
55725 RETURN
55730 :

55800 POKE V+29,7
55805 POKE V+23,15
55810 POKE V+0,123
55815 POKE V+1,146
55820 POKE V+21,1
55825 RETURN
55830 :

55900 POKE V+29,3
55905 POKE V+23,15
55910 POKE V+4,180
55915 POKE V+5,114
55920 POKE V+21,4
55925 RETURN

56000 :
56005 REM - INIT OWL ------------------
56010 :

56015 POKE 2043,15
56020 FOR I=0 TO 62
56025 READ A: POKE B+128+I,A
56030 NEXT
56035 :
56040 POKE V+4,123
56045 POKE V+5,146
56050 POKE V+41,0
56055 RETURN
56060 :

56100 DATA   1,  0, 64,  2,128,160,  3,190,224,  7,255,240
56105 DATA   7, 62,112, 15, 62,120, 15,247,248, 15,247,248
56110 DATA   7,247,240,  3,255,224,  3,255,224,  7,255,240
56115 DATA  15,255,248, 31,255,252, 30,255,188, 60,255,158
56120 DATA  56,255,142, 49,255,198, 33,127, 66,  3,190,224,  2,128,160

57000 :
57005 REM - INIT GUARD ----------------
57010 :

57015 POKE 2040,13
57020 FOR I=0 TO 62
57025 READ A: POKE B+I,A
57030 NEXT
57035 :
57040 POKE V+0,82
57045 POKE V+1,110
57050 POKE V+39,9
57055 RETURN
57060 :

57100 DATA   0, 28,  0,  0,127,  0,  0,107,  0,  0,255,128
57105 DATA   0, 99,  0,  0, 62,  0,  0, 28,  0,  0,255,128
57110 DATA   1,223,192,  3,111, 96,  6,119, 48, 12,123, 24
57115 DATA  24,125, 48,112, 82,224,  0,127,128,  0,127,  0
57120 DATA   0, 54,  0,  0, 99,  0,  0, 99,  0,  0,193,128,  3,128,224

58000 :
58005 REM - INIT GOAT -----------------
58010 :

58015 POKE 2041,14
58020 FOR I=0 TO 62
58025 READ A: POKE B+64+I,A
58030 NEXT
58035 :
58040 POKE V+2,105
58045 POKE V+3,130
58050 POKE V+40,1
58055 RETURN
58060 :

58100 DATA   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
58105 DATA   0,  0, 65,  0,  0, 34,  0,  0, 34,  0,  0,119
58110 DATA   0,  0,127,  0,  0,235,  0,  1,235, 15,255,254
58115 DATA  31,255,212,127,255,136,255,255,136,159,255,128
58120 DATA  31,255,  0, 49,243,  0, 96,  1,128, 48,  0,192, 24,  0,  96

59000 :
59005 REM - INIT SPIDER ---------------
59010 :

59015 POKE 2042,15
59020 FOR I=0 TO 62
59025 READ A: POKE B+128+I,A
59030 NEXT
59035 :
59040 POKE V+4,42
59045 POKE V+5,120
59050 POKE V+41,7
59055 RETURN
59060 :

59100 DATA   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3
59105 DATA   0, 96,  3,  1,249,194,  7,255,244, 15,223,184
59110 DATA  30, 15,152, 15,223,248,  7,255,240,  3,249,192
59115 DATA   6,252,  0,  8,167,  0, 17, 16,128, 19,  8, 64
59120 DATA  18,  8, 32,102,  6, 56,  0,  0,  0,  0,  0,  0,  0,  0,  0

60000 :
60005 REM *****************************
60010 REM * MACHINE LANGUAGE CODE     *
60015 REM *****************************
60020 :

60025 IF PEEK(M)=162 THEN RETURN
60030 FOR I=0 TO 175
60035 READ A: POKE M+I,A
60040 NEXT
60045 RETURN
60050 :

60100 DATA 162,  0,169,160,157,  0,  4,157,208,  6,169,  2,157,  0,216,157
60105 DATA 208,218,232,224, 27,208,235,169,  4,133,252,169, 40,133,251,169
60110 DATA 216,133,254,169, 40,133,253,162,  0, 72,169,160,160,  0,145,251
60115 DATA 160, 26,145,251,169,  2,160,  0,145,253,160, 26,145,253,104, 24
60120 DATA 105, 40,144,  4,230,252,230,254,133,251,133,253,232,224, 17,208
60125 DATA 216, 96,169, 25,133,253,169, 17,133,254,169,  4,133,252,169, 41
60130 DATA 133,251, 32,142,192, 96,169, 40,133,253,169,  3,133,254,169,  7
60135 DATA 133,252,169, 32,133,251, 32,142,192, 96,169, 12,133,253,169, 18
60140 DATA 133,254,169,  4,133,252,169, 68,133,251, 32,142,192, 96,162,  0
60145 DATA 160,  0, 72,169, 32,145,251,200,196,253,208,247,104,232,228,254
60150 DATA 240, 12, 24,105, 40,144,  2,230,252,133,251, 76,144,192, 96,  0