Source:Desc Edit
Jump to navigation
Jump to search
This page is a verbatim reproduction of original source material and should not be edited except for maintenance. | |
Description |
The Applesoft BASIC source code of the Eamon utility program Desc Edit |
---|---|
Source | |
Date | |
Author | |
License |
The use of this item is permitted on the grounds that it's free or in the public domain. |
1 REM EDIT DESCRIPTION PROGRAM
2 REM BY JOHN NELSON
3 REM
4 REM REV 2/19/96
5 REM
10 DK$ = CHR$ (4):D$ = DK$: HOME : FOR X = 1 TO 4: READ TYP$(X): NEXT :
20 VTAB 5: PRINT " EDITING EAMON DESCRIPTION FILE": PRINT : PRINT " INSERT DISKETTE WITH ADVENTURE"
30 PRINT : PRINT " PRESS ANY KEY TO CONTINUE...";: POKE - 16368,0: GET A$: PRINT
50 DATA ROOM,ARTIFACT,EFFECT,MONSTER
60 PRINT DK$"UNLOCK EAMON.DESC"
70 PRINT DK$;"OPEN EAMON.DESC,L256"
80 PRINT DK$;"READ EAMON.DESC,R0": FOR X = 1 TO 4: INPUT N%(X): NEXT :NR = N%(1):NA = N%(2):NE = N%(3):NM = N%(4): PRINT DK$
100 REM --- MAIN MENU ---
110 HOME : PRINT SPC( 9);"EAMON DESCRIPTION EDIT": PRINT SPC( 12);"BY JOHN NELSON"
120 VTAB 8: HTAB 4: PRINT "SELECT OPTION ...": PRINT
130 PRINT " 1. INITIALIZE BEGINNER'S CAVE": PRINT : PRINT " 2. ADD A DESCRIPTION"
140 PRINT : PRINT " 3. EDIT A DESCRIPTION": PRINT : PRINT " 4. VIEW A DESCRIPTION": PRINT : PRINT " 5. QUIT"
160 PRINT : PRINT "INPUT NUMBER (1-5) [_]"; CHR$ (8); CHR$ (8);
170 GET A$: IF A$ < "1" OR A$ > "5" THEN 170
180 PRINT A$: ON VAL (A$) GOTO 1000,2000,3000,4000,5000
600 REM ///ROUTINE TO INPUT I$, HAVING BEEN PASSED I2$
605 I$ = ""
610 PRINT I2$;: CALL - 958: IF LEN (I2$) THEN FOR A = 1 TO LEN (I2$): PRINT CHR$ (8);: NEXT
615 GET A$: IF A$ = CHR$ (13) THEN CALL - 958: PRINT : RETURN
620 IF (A$ > CHR$ (31) OR A$ = CHR$ (9) OR (A$ = CHR$ (21) AND NOT LEN (I2$))) AND LEN (I$) + LEN (I2$) > 250 THEN PRINT CHR$ (7);: GOTO 615
625 IF A$ > CHR$ (31) THEN PRINT A$;:I$ = I$ + A$:I2$ = MID$ (I2$,2): GOTO 615
630 IF A$ = CHR$ (5) THEN PRINT I2$;:I$ = I$ + I2$:I2$ = "": GOTO 615
635 IF A$ = CHR$ (2) AND LEN (I$) THEN FOR A = 1 TO LEN (I$): PRINT CHR$ (8);: NEXT :I2$ = I$ + I2$:I$ = "": GOTO 615
640 IF A$ = CHR$ (4) THEN I2$ = MID$ (I2$,2): GOTO 610
645 IF A$ = CHR$ (9) THEN I2$ = " " + I2$: GOTO 610
650 IF A$ = CHR$ (21) AND LEN (I2$) THEN A$ = LEFT$ (I2$,1): GOTO 625
655 IF A$ = CHR$ (21) THEN A$ = " ": GOTO 625
660 IF A$ = CHR$ (8) AND LEN (I$) > 1 THEN I2$ = RIGHT$ (I$,1) + I2$:I$ = LEFT$ (I$, LEN (I$) - 1): PRINT A$;: GOTO 615
665 IF A$ = CHR$ (8) AND LEN (I$) THEN I2$ = I$ + I2$: PRINT A$;: GOTO 600
670 IF A$ = CHR$ (8) THEN 600
675 IF A$ = CHR$ (27) THEN PRINT I2$:I$ = I$ + I2$: RETURN
680 GOTO 615
1000 REM --- INIT BEGIN CAVE ---
1010 READ NR,NA,NE,NM:UP = 1
1015 IF NR = 0 THEN 1025
1020 FOR REC = 1 TO NR: READ DE$: GOSUB 18000: NEXT
1025 IF NA = 0 THEN 1035
1030 FOR R = 1 TO NA:REC = 100 + R: READ DE$: GOSUB 18000: NEXT
1035 IF NE = 0 THEN 1045
1040 FOR R = 1 TO NE:REC = 200 + R: READ DE$: GOSUB 18000: NEXT
1045 IF NM = 0 THEN 1055
1050 FOR R = 1 TO NM:REC = 300 + R: READ DE$: GOSUB 18000: NEXT
1055 REM
1090 GOTO 100
2000 REM --- ADD A DESC ---
2010 UP = 1: GOSUB 10000: ON ST GOSUB 2100,2200,2300,2400
2020 GOSUB 600:DE$ = I2$: GOSUB 18000: GOTO 100
2100 REM --- ROOM ADD ---
2110 NR = NR + 1:REC = NR: RETURN
2200 REM --- ART. ADD ---
2210 NA = NA + 1:REC = NA + 100: RETURN
2300 REM --- EFF. ADD ---
2310 NE = NE + 1:REC = NE + 200: RETURN
2400 REM --- MON. ADD ---
2410 NM = NM + 1:REC = NM + 300: RETURN
3000 REM --- EDIT A DESC ---
3010 UP = 1: GOSUB 10000: GOSUB 11000
3020 ON ST GOSUB 3100,3200,3300,3400
3030 GOSUB 20000
3040 I2$ = DE$: GOSUB 600:DE$ = I$
3050 GOSUB 18000
3090 GOTO 100
3100 REM --- ROOM EDIT ---
3110 REC = NO: RETURN
3200 REM --- ART. EDIT ---
3210 REC = NO + 100: RETURN
3300 REM --- EFF. ADD ---
3310 REC = NO + 200: RETURN
3400 REM --- MON. EDT ---
3410 REC = NO + 300: RETURN
4000 REM --- VIEW A DESC ---
4005 GOSUB 10000
4010 VTAB 8: CALL - 958: PRINT "SELECT VIEW OPTIONS:": PRINT : PRINT " 1. ALL DESCRIPTIONS": PRINT : PRINT " 2. SINGLE DESCRIPTION": PRINT : PRINT "INPUT YOUR CHOICE 1-2 OR [P] ";
4020 GET A$: IF A$ = "�" THEN PRT = NOT PRT: GOTO 4020
4030 IF A$ < "1" OR A$ > "2" THEN 4020
4040 PRINT A$: IF PRT THEN PRINT D$;"PR#1"
4050 ON VAL (A$) GOTO 4100,4200
4100 FOR NO = 1 TO N%(ST):REC = 100 * (ST - 1) + NO: GOSUB 20000
4110 GOSUB 4500: NEXT : GOTO 4900
4200 GOSUB 11000:
4220 ON ST GOSUB 3100,3200,3300,3400
4230 GOSUB 20000: GOSUB 4500: GOTO 4900
4500 HOME : PRINT TYP$(ST);" ";NO: PRINT : PRINT : FOR LW = 1 TO LEN (DE$) STEP 40: PRINT MID$ (DE$,LW,40): NEXT
4530 VTAB 24: INVERSE : PRINT SPC( 7);"PRESS ANY KEY TO CONTINUE"; SPC( 7);: POKE - 16368,0: GET A$: PRINT : NORMAL
4540 IF A$ = CHR$ (27) THEN POP : GOTO 4900
4590 RETURN
4900 PRINT D$;"PR#0": GOTO 100
5000 REM --- QUIT ---
5010 IF NOT UP THEN END
5110 PRINT D$;"WRITE EAMON.DESC,R0": PRINT NR: PRINT NA: PRINT NE: PRINT NM: PRINT D$;"CLOSE": END
10000 REM --- GET TYPE ---
10010 VTAB 8: CALL - 958: PRINT "INPUT TYPE: R/A/E/M [_]"; CHR$ (8); CHR$ (8);
10020 GET A$: FOR X = 1 TO 4: IF MID$ ("RAEM",X,1) < > A$ THEN NEXT : GOTO 10020
10030 PRINT A$:ST = X:X = 4: NEXT
10040 RETURN
11000 REM --- GET NUMBER ---
11010 VTAB 8: CALL - 958: INPUT "INPUT NUMBER: ";A$
11020 IF VAL (A$) > N%(ST) OR VAL (A$) < 1 THEN 11010
11030 NO = VAL (A$): RETURN
18000 REM >> WRITE DESC
18010 PRINT DK$;"WRITE EAMON.DESC,R";REC: PRINT CHR$ (34);DE$; CHR$ (34): PRINT DK$: RETURN
20000 REM >> READ DESC
20010 PRINT DK$;"READ EAMON.DESC,R";REC: INPUT DE$: PRINT DK$
20020 RETURN
30000 REM --- INITIAL DATA ---
30010 DATA 0,0,0,0
30100 DATA " YOU ARE AT THE ENTRANCE OF A CAVE. TO THE SOUTH, OVER THE TUNNEL ENTRANCE, IS A SIGN SAYING 'BEGINNERS ONLY.' TO THE NORTH IS THE ROAD BACK TO TOWN."
30110 DATA " YOU ARE IN A DARK NORTH/SOUTH TUNNEL. TO THE NORTH YOU SEE THE BRIGHT LIGHT STREAMING IN FROM THE OUTSIDE. TO THE SOUTH YOU SEE FLICKERING TORCH LIGHT, BUT YOU CANNOT MAKE OUT ANY DETAILS."
30120 DATA " YOU ARE IN A SMALL SIDE CHAMBER TO THEWEST OF THE LARGE CHAMBER. IT IS VERY COLD HERE, AND THE ONLY LIGHT COMES IN DIMLY FROM THE LARGE CHAMBER."
30130 DATA " YOU ARE IN A HUGE CHAMBER, THE ROOF RISES OUT OF SIGHT. BURNING TORCHES LINETHE WALLS, MAKING IT EASY TO SEE.TUNNELSLEAD NORTH AND SOUTH,AND THERE ARE SMALLSIDE CHAMBERS TO BOTH THE EAST AND WEST."
30140 DATA " YOU ARE IN A SMALL SIDE CHAMBER TO THEEAST OF THE LARGE CHAMBER. IT IS VERY COLD HERE, AND THE ONLY LIGHT COMES IN DIMLY FROM THE LARGE CHAMBER."
30150 DATA " YOU ARE IN A SMALL, STARK CELL WITH A DOOR ON THE EAST SIDE OF THE ROOM."
30160 DATA " YOU ARE AT THE NORTH END OF A LONG HALL. A TUNNEL GOES NORTH. TO THE EAST AND WEST ARE DOORS THAT ARE BOLTED SHUT (LOCKING SOMETHING IN?) IN THE DIM LIGHTYOU CAN SEE THAT THE HALL GOES SOUTH,BUTYOU CANNOT MAKE OUT ANY DETAI
30170 DATA " YOU ARE IN A SMALL, STARK CELL WITH A DOOR ON THE WEST SIDE OF THE ROOM."
30180 DATA " YOU ARE IN A SMALL, STARK CELL WITH A DOOR ON THE EAST SIDE."
30190 DATA " YOU'RE IN THE MIDDLE OF THE LONG HALL.DOORS ARE BOLTED ON BOTH SIDES OF YOU (EAST AND WEST). THE HALL EXTENDS NORTHAND SOUTH."
30200 DATA " YOU ARE IN A SMALL, STARK CELL WITH A DOOR ON THE WEST SIDE."
30210 DATA " YOU ARE IN A SMALL, STARK CELL WITH A DOOR ON THE EAST SIDE."
30220 DATA " YOU ARE AT THE SOUTH END OF THE LONG HALL. TO YOUR GREAT SHOCK ARE TWO DOORS ON THE EAST AND WEST.THE HALL GOES NORTHFROM HERE, AND A BROKEN TUNNEL GOES SOUTH."
30230 DATA " YOU ARE IN A SMALL, STARK CELL WITH A DOOR ON THE WEST SIDE."
30240 DATA " YOU ARE IN A TUNNEL GOING NORTH AND SOUTH. THE SIDES OF THE TUNNEL ARE VERYBROKEN AND ROUGH. YOU SEE TORCHLIGHT TO THE SOUTH."
30250 DATA " YOU ARE IN A SECRET EAST/WEST PASSAGE.YOU HEAR A FAINT MELODY COMING FROM THE EAST."
30260 DATA " YOU ARE IN AN EAST/WEST PASSAGE. YOU CAN VERY CLEARLY HEAR RELIGIOUS MUSIC BEING PLAYED, AND CAN SMELL INCENSE FROMTHE EAST."
30270 DATA " YOU ARE IN THE TEMPLE. PICTURES OF GREAT DEEDS COVER THE WALLS. THERE ARE TWO ALTARS HERE, ONE COVERED WITH GOLD PAINT AND THE OTHER STAINED WITH BLOOD. THE ONLY EXIT LEADS TO THE WEST."
30280 DATA " YOU ARE IN WHAT WAS ONCE OBVIOUSLY A LIBRARY. MOST OF THE BOOKS HAVE BEEN DESTROYED, WITH THE SCRAPS LYING ON THE GROUND. A DOOR, TORN FROM ITS HINGES, ALSO LIES ON THE GROUND. THE EXIT IS TO THE EAST."
30290 DATA " YOU ARE IN A T-INTERSECTION.A BRIGHTLYBURNING TORCH IS BOLTED TO THE SOUTH WALL. DARK TUNNELS LEAD NORTH AND EAST. TO THE WEST IS A PLACE WHERE ONCE A DOORSTOOD, BUT IT HAS BEEN TORN FROM ITS HINGES."
30300 DATA " YOU ARE IN A DARK EAST/WEST TUNNEL. YOU CAN SEE TORCHLIGHT BOTH DIRECTIONS."
30310 DATA " YOU ARE AT THE TOP OF A FLIGHT OF STAIRS. A TORCH IS ON THE WALL. IT LOOKS VERY DARK DOWN THERE. A TUNNEL HEADS WEST."
30320 DATA " YOU ARE AT THE BOTTOM OF A FLIGHT OF A LIGHT CAN BE SEEN UP AT THE TOP OF THESTAIRS, AND A VERY DIM LIGHT CAN BE SEENDOWN THE TUNNEL TO THE EAST."
30330 DATA " YOU ARE IN AN EAST/WEST TUNNEL. DIM LIGHT CAN BE SEEN IN BOTH DIRECTIONS."
30340 DATA " YOU ARE IN AN EAST/WEST TUNNEL.YOU SEELIGHT TO THE EAST, AND FEEL A COOL WIND COMING FROM THERE. IN THE WIND YOU SMELLA HINT OF SALT."
30350 DATA " YOU ARE IN A SMALL BAY. HIGH WALLS SURROUND YOU SO THAT THE ONLY EXIT IS BACK IN THE TUNNEL TO THE WEST. TO THE EAST, ON THE BANK OF THE SEA, IS A BROKEN OLD BOAT."
30360 DATA "THERE IS A PILE OF DIAMONDS HERE!"
30370 DATA "THERE IS A STANDARD MARCOS AXE HERE."
30380 DATA "THERE IS A BOTTLE HERE WITH A STRANGE POTION INSIDE!"
30390 DATA "THERE IS A POOR QUALITY MARCOS SWORD HERE."
30400 DATA "THERE ARE 50 GOLD PIECES HERE!"
30410 DATA "THERE IS AN UNMARKED GOLD RING HERE."
30420 DATA "THERE IS A HIGH QUALITY MARCOS MACE HERE."
30430 DATA "THERE ARE SEVERAL RARE SPICES HERE."
30440 DATA "THERE IS AN OLD BOOK HERE. IT GLOWS IN THE DARKNESS AND IS REMARKABLY WELL PRESERVED."
30450 DATA "THERE IS A BEAUTIFUL SWORD HERE WITH INTRICATE CARVING ON THE HANDLE. WRITTEN ON THE BLADE IS THE NAME, 'TROLLSFIRE'."
30460 DATA "THERE IS A LARGE PILE OF JEWELS HERE!"
30470 DATA "THERE IS A LARGE CHEST IN THE CENTER OF THE ROOM."
30480 DATA "THERE IS AN EMPTY BOTTLE HERE."
30490 DATA "THERE IS A DEAD BLACK RAT HERE."
30500 DATA "THERE IS A DEAD BROWN RAT HERE."
30510 DATA "THERE IS A DEAD TAN RAT HERE."
30520 DATA "THE HERMIT'S BODY LIES DEAD HERE."
30530 DATA "THE SHAGGY CORPSE OF A GORILLA IS HERE."
30540 DATA "THE DEAD BODY OF HEINRICH LIES HERE."
30550 DATA "THE DEAD BODY OF THE CHEST-MIMIC IS SPRAWLED ON THE GROUND."
30560 DATA "THE PRIEST LIES DEAD HERE, STILL WITH A LOOK OF MANIACAL HATRED ON HIS FACE."
30570 DATA "THE DEAD BODY OF THE GIRL CYNTHIA LIES HERE."
30580 DATA "THE DEAD BODY OF THE PIRATE IS HERE."
30590 DATA "AS YOU APPROACH THE CHEST, IT SUDDENLY BECOMES ALIVE AND TWO TENTACLES COME OUTOF THE SIDE, HOLDING YOU FAST. ANOTHER TENTACLE RISES FROM THE TOP AND ATTEMPTSTO HURT YOU."
30600 DATA "AS THE PIRATE MUTTERS A WORD THAT YOU CAN'T MAKE OUT, BRIGHT GREEN FLAME SURROUNDS THE BLADE OF HIS SWORD."
30610 DATA "AS THE PIRATE CHOKES AND DIES, THE FLAMEON HIS SWORD DIES ALSO."
30620 DATA "AS YOU SAY THE SWORD'S NAME (TROLLFIRE),BRIGHT GREEN FLAME APPEARS AROUND THE SWORD'S BLADE."
30630 DATA "SINCE YOU WERE WEARING THE SWORD WHEN ITFLAMED ON, YOU TAKE SOME BURN DAMAGE UNTIL THE SWORD (HEARING YOUR CRIES OF PAIN?) EXTINGUISHES ITS FLAME."
30640 DATA "AS YOU SAY THE SWORD'S NAME, THE BRIGHT GREEN FLAME DISAPPEARS FROM THE SWORD."
30650 DATA "THERE IS A HUGE BLACK RAT WITH SHARP WHITE TEETH HERE!"
30660 DATA "THERE IS A HUGE BROWN RAT WITH SHARP WHITE TEETH HERE!"
30670 DATA "THERE IS A HUGE TAN RAT WITH SHARP WHITE TEETH HERE!"
30680 DATA "THERE IS A GRIZZLED OLD HERMIT (WHO SMELLS AS IF HE HASN'T TAKEN A BATH IN FORTY YEARS) IN THE ROOM."
30690 DATA "THERE IS A HUGE, HAIRY, STRONG AND ANGRY GORILLA IN THE ROOM WITH YOU!"
30700 DATA "A HUMAN WARRIOR STANDS BEFORE YOU, ARMED A LONG SWORD AND CARRYING A SHIELD. ON HIS SHIELD IS A STICKER WHICH SAYS, 'HI! I'M HEINRICH!'"
30710 DATA "A CHEST-SHAPED MONSTER IS IN THE ROOM, HOLDING YOU WITH TWO TENTICLES AND ATTEMPTING TO DISASSEMBLE YOU WITH A THIRD."
30720 DATA "THERE IS A HUGE MAN IN RELIGOUS GARB AND AN INSANE LOOK ON HIS FACE. IN HIS RIGHT HAND HE CARRIES A MACE."
30730 DATA "YOU SEE A BEAUTIFUL GIRL IN A FLOWING WHITE DRESS. YOU RECOGNIZE HER AS CYNTHIA, DUKE LUXOM'S NOT-TOO-BRIGHT DAUGHTER."
30740 DATA "YOU SEE A MAN WITH A BEARD AND A BRASS RING IN HIS EAR. HE IS WEARING CLOTHES MADE OUT OF SILK AND IS WEILDING A VERY FANCILY ENGRAVED SWORD."
40000 REM === FAKE INIT ===
40010 D$ = CHR$ (4):DK$ = D$: PRINT D$"OPEN EAMON.DESC,L256":CNT = 30100: PRINT D$;"READ EAMON.DESC,R0": FOR X = 1 TO 4: INPUT N%(X): NEXT : PRINT D$
40015 PRINT D$;"OPEN TEMP.TEXT": PRINT D$
40020 FOR TY = 1 TO 4
40030 FOR R = 1 TO N%(TY)
40100 REC = 100 * (TY - 1) + R: GOSUB 20000
40110 PRINT D$;"WRITE TEMP.TEXT": PRINT CNT;"DATA"; CHR$ (34);DE$; CHR$ (34):CNT = CNT + 10
40190 NEXT : NEXT : PRINT D$;"CLOSE": END