pitch-dark/notes/mm4.bas
2018-02-01 15:27:33 -05:00

98 lines
4.3 KiB
QBasic

0 IF PEEK (104) = 8 THEN POKE 104,96: POKE 24576,0: PRINT CHR$ (4)"RUN MM4"
1 GOSUB 990: REM initialize weegui
2 READ L: DIM DESC$(L): FOR I = 1 TO L: READ DESC$(I): NEXT I: REM box blurb
10 & HOME
18 & WINDW(0,0,0,0,79,1,79,1): & SEL(0): & CURSR(0,0)
19 INVERSE : & PRINT ("Pitch Dark "): NORMAL
20 GOSUB 1000: & BUTTN(14,1,2,12,800,B$): & STRW(1): REM Previous
25 GOSUB 1000: & BUTTN(15,65,2,13,900,B$): & STRW(1): REM Next game
40 GOSUB 1000: & BUTTN(1,34,10,13,200,B$): & STRW(1): REM Play game
41 GOSUB 1000: & BUTTN(2,66,7,11,300,B$): & STRW(1): REM Clues
42 GOSUB 1000: & BUTTN(3,66,9,11,400,B$): & STRW(1): REM Box art
43 GOSUB 1000: & BUTTN(4,66,11,11,500,B$): & STRW(1): REM Options
49 & WINDW(12,0,31,2,18,7,18,7)
50 & CURSR(0,0): & PRINT ("ZORK I: THE GREAT")
51 & CURSR(0,1): & PRINT ("UNDERGROUND EMPIRE")
52 & CURSR(0,3): & PRINT ("1980 Fantasy")
53 & CURSR(0,5): & PRINT ("Difficulty: ")
54 & PRINT (64): & PRINT (64): & PRINT (64): & PRINT (65): & PRINT (65)
90 & WINDW(13,2,1,15,77,8,77,17)
93 & STACT(700)
94 GOSUB 700
99 & MOUSE(1)
100 REM run loop
101 & PDACT
102 & GET (A%)
103 IF A% = 10 THEN & SEL(13): & SCRBY(0, - 1): GOSUB 700
104 IF A% = 11 THEN & SEL(13): & SCRBY(0,1): GOSUB 700
105 IF A% = 9 THEN & FOCN
106 IF A% = 27 THEN 995
107 IF A% = 13 THEN & ACT
109 B = - 1
111 IF A% = 80 OR A% = 112 THEN B = 1
113 IF A% = 66 OR A% = 98 THEN B = 3
125 IF A% = 78 OR A% = 110 THEN B = 15
195 IF B < 0 THEN 100
196 & SEL(B)
197 & FOC
198 & ACT
199 GOTO 100
200 REM play
205 GOSUB 997
210 PRINT CHR$ (4)"BLOAD INTERPP.SYSTEM,A$2000,TSYS"
220 F$ = "ZORK1.Z3": POKE 8198, LEN (F$): FOR I = 1 TO LEN (F$): POKE 8198 + I, ASC ( MID$ (F$,I,1)): NEXT I
230 CALL 8192: REM never returns
300 REM clues
399 RETURN
400 REM box art
420 GOSUB 997
430 PRINT CHR$ (4)"BRUN ZORK1.PIC"
440 RUN
500 REM options
700 REM redraw box blurb
701 & SEL(13)
705 NORMAL
706 & ERASE(0)
710 FOR I = 1 TO L: & CURSR(1,I): & PRINT (DESC$(I)): NEXT I
799 RETURN
800 REM previous button
899 RETURN
900 REM next button
910 GOSUB 997
920 PRINT CHR$ (4)"chain mm.zork.ii"
930 RUN
990 REM initialize and return
991 PRINT CHR$ (4)"BRUN WEEGUI"
992 RETURN
995 REM clean up and exit
996 GOSUB 997: END
997 REM clean up and return
998 & MOUSE(0): & EXIT
999 RETURN
1000 REM build button title
1010 B$ = "": READ L: FOR I = 1 TO L: READ C:B$ = B$ + CHR$ (C): NEXT I
1020 RETURN
9999 DATA 15
10000 DATA "Welcome to ZORK! You are about to experience a classic interactive fantasy,"
10001 DATA "set in a magical universe. The ZORK trilogy takes place in the ruins of an"
10002 DATA "ancient empire lying far underground. You, a dauntless treasure-hunter, are"
10003 DATA "venturing into this dangerous land in search of wealth and adventure."
10004 DATA "Because each part of the ZORK saga is a completely independent story, you"
10005 DATA "can explore them in any order. However, since ZORK I is the least difficult,"
10006 DATA "it is usually the best place to begin."
10007 DATA ""
10008 DATA "Many strange tales have been told of the fabulous treasures, exotic"
10009 DATA "creatures and diabolical puzzles in the Great Underground Empire. As an"
10010 DATA "aspiring adventurer you will undoubtedly want to locate the treasures and"
10011 DATA "deposit them in your trophy case. You'd better equip yourself with a source"
10012 DATA "of light (for the caverns are dark) and weapons (for some of the inhabitants"
10013 DATA "are unfriendly -- especially the thief, a skilled pickpocket and ruthless"
10014 DATA "opponent)."
19000 REM button titles (length byte + high ASCII characters)
19001 DATA 10,188,160,208,242,229,118,233,239,245,243 : REM "< Previous" with inverse "v"
19002 DATA 11, 14,229,248,244,160,231,225,237,229,160,190: REM "Next game >" with inverse "N"
19003 DATA 9,16,236,225,249,160,231,225,237,229: REM "Play game" with inverse "P"
19004 DATA 5,3,236,245,229,243: REM "Clues" with inverse "C"
19005 DATA 7,2,239,248,160,225,242,244: REM "Box art" with inverse "B"
19006 DATA 7,15,240,244,233,239,238,243: REM "Options" with inverse "O"