Jump to content
IGNORED

New versions available


F.G. Kaal

Recommended Posts

12 hours ago, MikeV said:

Hi Fred - I had a peculiar occurrence using the Notepad viewer in your TIDir, namely everything locked up when attempting to view a particular the file.  The file itself appears to be corrupt in that it will not load into XB either. You can see it in the hex viewer, but not the notepad viewer. Thank you.

To be able to do something about this I need that particular file.

  • Like 1
Link to comment
Share on other sites

8 hours ago, F.G. Kaal said:

To be able to do something about this I need that particular file.

Please see attached. It opens in your hex viewer and Windows Notepad (tokenized), but not in TIDir Notepad. I understand that yours is more sophisticated as it can unravel the tokens, line numbers etc. As I said, it crumps when trying to load in XB, so it is the program itself. First and only time after many hundreds of TIDir uses that this has ever happened. Thank you. MV.

 

 

SPIDER

Link to comment
Share on other sites

39 minutes ago, MikeV said:

Please see attached. It opens in your hex viewer and Windows Notepad (tokenized), but not in TIDir Notepad. I understand that yours is more sophisticated as it can unravel the tokens, line numbers etc. As I said, it crumps when trying to load in XB, so it is the program itself. First and only time after many hundreds of TIDir uses that this has ever happened. Thank you. MV.

 

 

SPIDER 17.63 kB · 1 download

I can load the program on the Geneve in Advanced Basic 4.08.  When I go to list, it locks up after line 300.

 

Beery

Link to comment
Share on other sites

On 3/12/2022 at 6:04 PM, MikeV said:

Please see attached. It opens in your hex viewer and Windows Notepad (tokenized), but not in TIDir Notepad. I understand that yours is more sophisticated as it can unravel the tokens, line numbers etc. As I said, it crumps when trying to load in XB, so it is the program itself. First and only time after many hundreds of TIDir uses that this has ever happened. Thank you. MV.

 

 

SPIDER 17.63 kB · 14 downloads

Thanks,

 

The stack arround the de-token-ized basic line gets corrupt. This is a line with a length of 512 characters and it is completely filled with the phrase "EXPEXPEXPEXPEXPEXPEXP...".

A can't fix this, but I can protect the basic line so that there are no more characters placed than the maximum size ;-)

 

Link to comment
Share on other sites

On 3/12/2022 at 6:04 PM, MikeV said:

Please see attached. It opens in your hex viewer and Windows Notepad (tokenized), but not in TIDir Notepad. I understand that yours is more sophisticated as it can unravel the tokens, line numbers etc. As I said, it crumps when trying to load in XB, so it is the program itself. First and only time after many hundreds of TIDir uses that this has ever happened. Thank you. MV.

 

 

SPIDER 17.63 kB · 14 downloads

Added a stupid if fix but it did the trick. The file is corrupt, but you allready know this. I think a little about this fix before a release a new version. But the SPIDER program contains:

10 ,28) :: B=0 :: IN=B :: LN=100 :: X1,X2=B :: T$=""
20 D=IM :: GOSUB 1870
22 B=XA :: XC=B :: XD=IM :: GOSUB 1870
24 FOR I=B TO 7 :: READ N$(I) :: NEXT I :: NEXT L
30 2 :: XA=5 :: XB=XA :: XC=B :: XD=IM :: GOSUB 1870
32 2
34 ,3)="" :: NEXT I
36 L=1 :: PRINT : :: GOSUB 1900
40 (L)))THEN 80 ELSE PRINT "IT'S TOO DARK TO SEE!!"
42 L>0 AND(O$(12,3)="1" OR O$(12,2)=STR$(L)))THEN 80 ELSE PRINT "IT'S TOO DARK TO SEE!!"
50 13 OR(CL>0 AND(O$(12,3)="1" OR O$(12,2)=STR$(L)))THEN 80 ELSE PRINT "IT'S TOO DARK TO SEE!!"
60 OISE!
70 13 THEN PRINT "YOU HEAR A STRANGE NOISE!"
80 1 :: 
90 =1 :: PRINT "  YOU SEE: "; :: PRINT :: RETURN
91 LN<1 THEN CL=0
92 LN=LN-1 :: IF LN<1 THEN CL=0
93 FOR I=0 TO 7 :: READ N$(I) :: NEXT I :: NEXT L1
94 L1=L
100 1 THEN 92 ELSE 100
102 =0 TO L
104 IF J=22 THEN 140 ELSE IF VAL(O$(J,2))<>L THEN 180 ELSE IF B=0 THEN GOSUB 70
110 0 TO 32
120 ELSE IF O$(J,3)="-9" THEN PRINT "DEAD ";
130 ))=L THEN IF O$(J,3)="" THEN PRINT "UNTIED ";ELSE IF O$(J,3)="-9" THEN PRINT "DEAD "
140 IF B=0 THEN GOSUB 70
150 180 ELSE IF VAL(O$(J,2))<>L THEN 180
160  ORC. ; :: IF VAL(O$(J,2))<>L THEN 180 ELSE IF VAL(O$(J,2))<>L THEN 180
170 ,3)=STR$(L)THEN PRINT "DEAD ORC. "; :: IF VAL(O$(J,2))<>L THEN 180 ELSE IF VAL(O$(J,2))<>L THEN 180
180 O$(J,3)=STR$(L)THEN PRINT "DEAD ORC. "; :: IF VAL(O$(J,2))<>L THEN 180 ELSE IF VAL(O$(J,2))<>L THEN 180
182 0)
190 IF N$(1)="" THEN PRINT :: GOTO 240 ELSE IF B=0 THEN GOSUB 70
200 1 AND
210 =0 THEN PRINT "LOCKED ";ELSE PRINT "UNLOCKED ";
220 ELSE PRINT "SEALED ";
230 (2),1,3)&" "
240 1);"." :: IF(L=21 OR L=22)AND U=0 THEN N$(2)=SEG$(N$(2),1,3)&" "
242 RE: ;
244  ELSE PRINT "OBVIOUS EXITS ARE: ";
246 EAST ;ELSE IF P$="W" THEN PRINT "WEST ";
250 "E" THEN PRINT "EAST ";ELSE IF P$="W" THEN PRINT "WEST ";
260 OISE UP AHEAD,:"SOUNDS LIKE ORCS"
270 INPUT "WHAT DO YOU WANT TO DO NOW? ":QM$ :: IF LN<10 AND CL=1 THEN PRINT "YOUR TORCH IS BURNING LOW."
280 THEN J=1 :: IN=IN+1 :: GOSUB 1000 :: GOTO 1560
290 $ :: IF SEG$(QM$,1,1)<>"Y" THEN 1560 ELSE 2020
300  IN THE WRONG LOCATION! :: GOTO 1560 ELSE Z=0
302 EXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXP
304 IF O$(I,2)="6" EXPEXPEXPEXPEXPEXPEXPEXPEXPEXP
306 NEXT I
310 PRINT "YOU HAVE";Z;"TREASURES, TOTALING";(Z/4)*100;"%" :: IF Z=4 THEN PRINT "YOU MADE IT !!!" :: GOTO 1770 ELSE T$="YOU MISSED SOME OF THE TREASURES." :: GOTO 1560
320 THEN 330 ELSE 340
330 UARDIAN OF SPIDER  MOUNTAIN.  HER VENOM IS A   POWERFUL NEUROTOXIN:"YOU'RE DEAD!"
340 IF QM$="HELP" THEN X=VAL(N$(3)) :: ON X GOSUB 1680,1690,1700,1710,1720,1730,1740,1750,1760 :: GOTO 40
350 X1=LEN(QM$) :: IF X1<3 THEN T$="WHAT?" :: GOTO 1560
352 FOR X2=3 TO X1
354 M1$=SEG$(QM$,X2,1) :: IF M1$=CHR$(32)THEN 360
356 NEXT X2 :: X2=X1
360 PP$=SEG$(QM$,1,3)
361 IF X2<>X1 AND X2+3>X1 THEN 460
362 FOR I=0 TO 42
363 IF PP$<>R$(I)THEN 365 ELSE 370
364 IF X1=X2 THEN T$="WHAT?" :: GOTO 1560
365 NEXT I
366 T$="SORRY, BUT YOU CANNOT       "&SEG$(QM$,1,X2)
368 IF X2<X1 THEN T$=T$&SEG$(QM$,LEN(QM$)-(X1-X2)+1,X1-X2)&"." :: GOTO 1560
370 1630 :: GOTO 1560
380 h,1640,1820,510,1650,1570,1630 :: GOTO 1560
382 FOR J=0 TO 32
383 IF M1$=SEG$(O$(J,0),1,3)THEN 470
384 NEXT J
385 IF M1$="OAK" AND U=1 THEN N$(4)="21" ELSE IF I=36 THEN 630
390 IF N$(1)="" THEN 400 ELSE Z=1 :: A=Z :: X1=LEN(N$(1))
392 ON I+1 GOSUB 1640,1640,1640,1820,510,1650,1570,1630 :: GOTO 1560
394 IF SEG$(N$(1),X2,1)<>CHR$(46)AND X2<>X1 THEN 399
395 IF M2$<>M1$ THEN Z=X2+2 :: A=A+1 :: GOTO 399 ELSE B=A
396 IF I=10 THEN PRINT "YOU SEE NOTHING SPECIAL." :: GOTO 90 ELSE 470
398 2=5 TO X1
399 NEXT X2
400 FOR X=43 TO 46 :: IF M1$=R$(X)THEN 490
402 NEXT X
410 EL THEN PRINT "OK" :: GOTO 1820
420 IF I=32 THEN GOSUB 560 :: GOTO 1560
430 IF I=33 THEN GOSUB 600 :: GOTO 1560
440 HERE ARE ORCS NEAR HERE! :: GOTO 1560 ELSE T$="YOU HEAR NOTHING UNUSUAL." :: GOTO 1560
450 ABS(VAL(O$(22,2))-L)=1 THEN T$="I THINK THERE ARE ORCS NEAR HERE!" :: GOTO 1560 ELSE T$="YOU HEAR NOTHING UNUSUAL." :: GOTO 1560
460  :: GOTO 1560
470 IF I<9 THEN 490 ELSE IF J<33 THEN B=VAL(O$(J,2)) :: IF B<>L AND B>0 THEN 1550 ELSE J=29
480 IF I>33 THEN 484 ELSE IF I<9 THEN 490
482 ON I-8 GOSUB 900,1030,1030,1030,900,1330,1330,1330,1330,1490,1490,900,530,530,760,740,750,620,840,870,880,540,540,560,600 :: GOTO 490
484 ON I-33 GOSUB 900,1330,630,1330,1320,1000,1010,1000,1830
490 NUMERIC
500 1630,1000
510 IF O$(3,3)<>"1" THEN 1550 ELSE PRINT "OK" :: IF VAL(O$(17,2))=-L THEN T$="THERE'S SOMETHING BURIED HERE!" :: O$(17,2)=STR$(L)ELSE T$="THERE'S NOTHIN' HERE!"
520 RETURN
530 IF J<>13 THEN 740 ELSE IF O$(J,3)<>"" THEN T$="IT'S BROKEN." :: RETURN :: ELSE IF I=21 THEN T$="NOTHING HAPPENED." :: RETURN
532 IF I=22 AND O$(J,2)="6" THEN T$="SOMETHING IS HAPPENING!!!" :: U1=1 :: RETURN
540 IF J=3 OR J=4 OR J=6 OR J=8 OR J=9 OR J=11 OR J=12 OR J=13 OR J=19 OR J=27 OR J=28 THEN O$(J,3)="-3" :: GOTO 60 ELSE 730
550 T$="IT'S ALREADY UNLOCKED." :: RETURN
560 IF L=22 THEN IF U=0 THEN IF O$(10,3)="1" THEN U=1 :: GOTO 60 ELSE 1550 ELSE 550
570 IF L=26 THEN IF ;U1=0 THEN IF O$(10,3)="1" THEN U1=1 :: RETURN ELSE 1550 ELSE 550
580 IF O$(1,3)="1" AND O$(0,3)="2" THEN O$(0,3)="" :: O$(0,2)=STR$(L) :: GOTO 60 ELSE 730
590 IF CL=1 AND O$(12,3)="1" THEN CL=0 :: GOTO 60
600 IF L=22 AND U=1 THEN U=0 :: GOTO 60
610 GOTO 730
620 IF VAL(O$(22,2))<>L OR O$(9,3)<>"1" THEN 1000 ELSE PRINT "THEY TOOK THE AMBROSIA,"
622 IF RND<.2 THEN PRINT "BUT KILLED YOU ANYWAY." :: GOTO 1820 ELSE PRINT "AND RAN OFF." :: IN=IN-1 :: O$(9,2),O$(9,3)="" :: O$(22,2)=STR$(INT(RND*25+1) :: RETURN
630 IF M1$="YOH" THEN CALL SCREEN(10) :: PRINT "EVERYTHING SPINS AROUND AND SUDDENLY.......YOU'RE DEAD!!" :: GOTO 1820
640 IF M1$="HOM" AND O$(17,3)="1" THEN L=1 :: PRINT "OK   HOME." :: T$="THERE IS A BRIGHT FLASH OF LIGHT..." :: GOTO 1560
650 GOSUB 60 :: T$=T$&"                            "&SEG$(QM$,LEN(QM$)-(X1-X2)+1,X1-X2);"." :: GOTO 1560
660 IF B<>0 THEN L=VAL(N$(B+3)) :: IF O$(1,3)="1" AND L=6 THEN T$="THE BURDENBEAST WON'T GO." :: L=L1 :: RETURN
662 IF L=22 AND U=0 THEN L=L1 :: GOTO 1550 ELSE IF L=21 AND U=0 THEN L=L1 :: GOTO 1550 ELSE 740
670 IF U1=1 AND L=6 AND M1$="TRA" THEN L=10 :: GOTO 60
680 IF U1=1 AND M1$="TRA" AND L=10 THEN L=6 :: RETURN
690 REM
700 REM
710 IF L=28 THEN L=29 :: RETURN
720 IF L=29 THEN L=28 :: RETURN
730 T$="SORRY, BUT YOU CAN'T DO THAT." :: RETURN
740 B=0 :: GOTO 60
750 IF L=6 AND J=32 THEN U1=0 :: GOTO 740
760 IF O$(4,3)<>"1" AND O$(6,3)<>"1" THEN 1000
770 INPUT "WITH WHAT? ":QM$ :: QM$=SEG$(QM$,1,3) :: IF QM$="WEA" THEN IF XC=1 THEN XC=0 ELSE T$="IT'S NOT LOADED!!" :: RETURN
780 IF QM$="HAN" THEN IF XC>0 THEN XD=XD-1 ELSE T$="IT'S NOT LOADED!" :: RETURN
790 IF J<>1 THEN 810 ELSE IF O$(J,3)="1" THEN Z=99 ELSE Z=0
800 O$(J,3)="-9" :: O$(1,2)=STR$(L) :: IF Z=99 THEN IN=IN-1
810 IF J=22 THEN O$(22,3)=STR$(L) :: PRINT " NICE SHOT! YOU HIT ONE OF  THEM BETWEEN THE EYES."
812 IF RND<.3 PRINT "BUT HIS COMRADES ATTACKED   AND KILLED YOU INSTANTLY." :: GOTO 1820 ELSE O$(22,2)=STR$(INT(RND*29+1)) :: T$="THE REST, THE COWARDS, RAN OFF." :: RETURN
820 IF J=9 THEN T$="YOU HIT ONE." :: RETURN
830 GOTO 60
840 IF O$(18,3)<>"1" THEN 1550 ELSE IF J=4 OR(J>5 AND J<11)OR(J>14 AND J<18)OR J=22 OR J=25 OR J=29 OR J>30 THEN 730 ELSE O$(J,3)="-7" :: O$(J,2)=STR$(L)
850 IF O$(0,3)="-7" THEN O$(0,2)=STR$(L)
852 FOR J=5 TO 21
854 IF O$(J,2)="-1" THEN O$(J,3)="-7"
856 NEXT J
860 GOTO 740
870 IF J<>12 THEN 840 ELSE IF O$(J,3)<>"1" OR O$(18,3)<>"1" THEN 840 ELSE CL=1 :: GOTO 60
880 IF J=9 THEN T$="WHEEEEE!                    YOU GOT PLASTERED AND LOST ADAY." :: IF CL=1 THEN LN=LN-10 :: RETURN ELSE RETURN
890 GOTO 730
900 IF J<33 THEN B=VAL(O$(J,2)) :: IF O$(J,3)<>"2" AND B<>L AND B<>-1 THEN IF J<22 THEN 1550 ELSE T$="IT'S NOT HERE." :: RETURN
910 IF J>21 OR J=1 THEN T$="? YOU HAVE NOT THE STRENGTH TO DO THAT, SIR KNIGHT." :: RETURN
920 IF O$(J,3)="-7" THEN T$="IT'S BURNED UP AND RUINED." :: RETURN
930 IF IN>4 THEN T$="YOU CAN'T, YOUR HANDS ARE FULL." :: RETURN :: ELSE IF O$(J,3)="1" THEN PRINT "YOU ALREADY HAVE IT!" :: RETURN
932 IF VAL(O$(J,1))<>0 OR I=16 THEN IN=IN+1 :: IF O$(J,2)="-1" THEN IM=IM-1 :: O$(J,2)="" :: O$(J,3)="1" ELSE O$(J,3)="1" :: O$(J,2)=""
940 IF J<>13 AND J<>9 AND J<>11 AND J<>2 AND J<>8 THEN 60 ELSE IF J=9 THEN IF O$(8,2)="-6" THEN O$(8,2)="6"
950 IF J=11 THEN IF O$(12,2)="-8" THEN O$(12,2)="8"
960 IF J=2 THEN IF O$(18,2)="-10" THEN O$(18,2)="10"
970 IF J=8 THEN IF O$(13,2)="-6" THEN O$(13,2)="6"
980 GOSUB 60 :: RETURN
990 IN=IN+1
1000 IF O$(J,3)<>"1" THEN T$="YOU DON'T HAVE IT!" :: RETURN ELSE T$="OK" :: IN=IN-1 :: O$(J,3)="" :: O$(J,2)=STR$(L) :: RETURN
1010 IF O$(5,3)<>"1" THEN 1550
1020 GOTO 60
1030 GOSUB 60
1032 IF J>23 THEN 1036
1034 ON J+1 GOTO 1040,1070,1080,1100,1110,1130,1140,1100,1160,1180,1190,1100,1200,1100,1100,1100,1100,1210,1100,1230,1240,1250,1260,1270
1036 GOTO 1100
1040 IF VAL(O$(0,3))<1 THEN T$="IT IS A WELL WORN DOUBLE    CARRYSACK.  IT APPEARS TO HAVE SOMETHINGIN IT,                      MAYBE YOU SHOULD GET IT." :: RETURN
1050 PRINT "THEY CONTAIN: ";
1052 FOR I=6 TO 22
1054 IF O$(I,2)="-1" THEN PRINT O$(I,0);"."
1056 NEXT I
1058 T$="" :: RETURN
1070 T$="YOU SEE A FLOP-EARED ILL-   TEMPERED QUADRUPEDAL ANIMAL." :: RETURN
1080 T$="IT'S AN OLD TORN SACK." :: IF O$(18,2)="-8" THEN O$(18,2)="8"
1090 RETURN
1100 T$="YOU CAN SEE NOTHING SPECIAL." :: RETURN
1110 T$="IT'S A SINGLE SHOT CROSSBOW" :: IF XC=0 THEN T$=T$&", UNLOADED." ELSE T$=T$&",LOADED."
1120 RETURN
1130 IF I=11 THEN T$="THE RUNES SAY:              THERE'S SOMETHING MAGIC ABOUT HOME." :: RETURN ELSE 1132
1132 T$="IT SMELLS OF CHAOS, AND APPEARS TO BE MADE OF HUMAN SKIN.  THERE ARE SOME RUNES WRITTEN UPON IT." :: RETURN
1140 T$="IT'S A MULTI-SHOT SPRING LOADED DART SHOOTER, WITH"&STR$(XD)&" DARTS." :: IF XD=1 THEN T$=SEG$(T$,1,(LEN(T$)-2)&"."
1150 RETURN
1160 IF O$(13,2)="-6" THEN T$="THERE'S SOMETHING ELSE HERE TOO." :: RETURN ELSE T$="YOU SEE"&STR$(XA)&" QUARRELS AND"&STR$(XB)&" DARTS."
1170 RETURN
1180 IF O$(8,2)="-6" THEN T$="THERE APPEARS TO BE SOMETHING BEHIND THE BOTTLES." :: RETURN ELSE 1100
1190 T$="THERE IS A SET OF FIVE KEYS, ON A METAL RING." :: RETURN
1200 T$="IT'S AN OLD TORCH.  IT'S BURNED DOWN TO A MARK THAT SAYS "&CHR$(34)&STR$(LN)&CHR$(34)&" TURNS LEFT." :: RETURN
1210 T$="IT'S A RING OF TELEPORTATION.  THE INSCRIPTION READS 'SAYING THE MAGIC WORD GETS ONE HOME'." :: RETURN
1220 T$="THERE'S SOME WRITING ON IT." :: RETURN
1230 IF O$(20,2)="-17" THEN O$(20,2)="17" :: T$="IT'S A MESSAGE!" :: RETURN ELSE 1100
1240 IF I=11 THEN T$="IT SAYS:                    BRING *TREASURES* TO TAVERN,AND SAY SCORE." :: RETURN ELSE 1220
1250 IF I=11 THEN T$="IT SAYS:                    WATCH FOR MORE R F C ADVENTURES!" :: RETURN ELSE 1220
1260 T$="THEY ARE A SAVAGE LOOKING   BAND.  AND THEY'VE SEEN YOU." :: RETURN
1270 T$="IT'S AN ANCIENT JEWEL ENCRUSTED COFFIN." :: IF VAL(O$(16,2))=-21 THEN T$=T$&"                            AND ONE JEWEL IS LOOSE !" :: O$(16,2)="21" :: U=0
1280 RETURN
1290 IF O$(5,2)="-25" THEN O$(5,2)="1" :: T$="THERE'S SOMETHIN' IN HERE!!" :: RETURN ELSE 1100
1300 IF I=11 THEN T$="IT SAYS DANGER -ORC TERRITORY" :: RETURN ELSE 1220
1310 IF O$(12,2)="-6" THEN O$(12,2)="6" :: T$="THERE'S A TORCH HERE!" :: RETURN ELSE 1100
1320 IF(J=4 OR J=6)AND I=38 THEN 1420
1330 IF J<>1 OR VAL(O$(1,3))<0 THEN T$="SORRY, BUT THAT'S NOT POSSIBLE." :: RETURN
1340 IF I=38 THEN IF O$(1,3)="" THEN T$="YOU HAVE TA FEED 'IM FIRST." :: RETURN ELSE 1420
1350 IF O$(7,3)="1" THEN IF I<>17 THEN T$="NOW, TRY TO RIDE/LOAD HIM." :: O$(1,3)="7" :: RETURN
1360 ON I-13 GOTO 1370,1380,1390,1400
1370 T$="YOU'RE TOO SLOW, HE GOT AWAY" :: RETURN
1380 T$="THE BURDENBEAST GOT AWAY    FROM YOU." :: RETURN
1390 T$="TOUGH LUCK, YOU TRIPPED AND THE BURDENBEAST RAN OFF." :: RETURN
1400 IF O$(7,3)<>"1" THEN T$="TOUGH LUCK. HE THREW YOU OFF" :: O$(3,3)="" :: O$(1,2)=STR$(INT(RND*5+1)) :: RETURN ELSE IF O$(1,3)="7" THEN O$(1,3)="1" :: O$(1,2)="" :: GOSUB 60 :: RETURN ELSE 1370
1410 GOTO 930
1420 INPUT "WITH WHAT? ":QM$ :: IF J=4 OR J=6 THEN 1440 ELSE IF SEG$(QM$,1,3)<>"CAR" THEN T$="IT FELL OFF. THE BURDENBEAST GOT AWAY."
1422 O$(1,3)="" :: IN=IN-1 :: O$(1,2)=STR$(INT(RND*5+1)) :: RETURN
1430 IF O$(0,3)="1" THEN O$(0,3)="2" :: IN=IN-1 :: GOTO 740 ELSE 1000
1440 QM$=SEG$(QM$,1,3) :: IF QM$="DAR" OR QM$="QUA" THEN IF O$(8,3)<>"1" AND VAL(O$(8,2))<>L THEN 1000 ELSE 1450 ELSE 730
1450 IF J=4 AND O$(J,3)="1" AND QM$="QUA" THEN IF XA>0 THEN SC=1 :: XA=XA-1 :: GOTO 60 ELSE 1470
1460 IF J=6 AND O$(J,3)="1" AND QM$="DAR" THEN IF XD>0 THEN T$="IT'S NOT EMPTY YET." :: RETURN ELSE IF XB>0 THEN XD=XB :: XB=0 :: GOTO 60 ELSE 1480
1470 T$="WHAT?" :: RETURN
1480 T$="YOU DON'T HAVE ANY." :: RETURN
1490 IF O$(J,3)<>"1" THEN 1000 ELSE INPUT "ON OR IN WHAT? (I.E., ON TABLE) ":QM$
1492 P$=SEG$(QM$,1,2) :: IF P$<>"IN" AND P$<>"ON" THEN T$="HUH?" :: RETURN
1500 M1$=SEG$(QM$,4,3) :: IF P$="ON" THEN IF "BUR"=M1$ THEN 1430 ELSE 1000
1510 IF M1$="CAR" THEN IF O$(0,3)<>"1" THEN 900 ELSE IF J<5 OR J=19 OR J=22 THEN T$="SORRY, IT WON'T FIT." :: RETURN
1512 IF IM>6 THEN T$="THE "&O$(0,0)&" ARE FULL." :: RETURN ELSE O$(J,2)="-1" :: O$(J,3)="" :: IN=IN-1 :: IM=IM+1 :: T="OK" :: RETURN
1520 IF "BUR"=M1$ THEN T$="YOU GOT KICKED!" :: RETURN
1530 IF M1$="QUA" OR M1$="DAR" THEN QM$=M1$ :: GOTO 1450
1540 GOTO 730
1550 T$="YOU CAN'T DO THAT... YET!"
1560 PRINT T$ :: T$="" :: GOTO 40
1570 PRINT "YOU HAVE WITH YOU : "; :: IF IN=0 AND O$(1,3)<>"1" THEN T$="NOTHING." :: RETURN
1580 PRINT :: X1,IN=0
1582 FOR I=2 TO 22
1584 IF VAL(O$(I,3))<>1 THEN 1600 ELSE IF CL=1 AND I=12 THEN PRINT "LIT ";
1590 PRINT O$(I,0);"."; :: IN=IN+1
1600 NEXT I
1602 B=VAL(O$(0,3)) :: X1=B :: IF B=1 THEN PRINT :: IN=IN+1 :: PRINT O$(0,0);", WHICH CONTAIN: ";
1604 FOR I=2 TO 22
1606 IF O$(I,2)="-1" THEN PRINT O$(I,0)&"."; :: X1=2
1608 NEXT I
1609 IF X1<>2 THEN PRINT "NOTHING!";
1610 IF O$(1,3)="1" THEN PRINT :: PRINT "THE "&O$(1,0)&", WHICH YOU'RE RIDING. "; :: IF B=2 THEN PRINT "AND IS CARRYING THE CARRY-SACK."
1620 T$="" :: RETURN
1630 IF L=14 THEN CALL CLEAR :: PRINT :"YOU HAVEFE FALLEN 1000 FEET.": :"YOU LANDED ON SHELOB'S WEB.": :"YOU ARE DOOMED."
1632 IF J=23 OR J=32 OR M1$="P$" THEN T$="OK" :: RETURN ELSE 730
1640 T$="WHERE?" :: RETURN
1650 IF L=25 THEN L=26
1660 IF L=26 THEN L=25
1670 GOTO 60
1680 PRINT "EXAMINING THINGS SOMETIMES  HELPS." :: RETURN
1690 PRINT "ROADS USUALLY GO PLACES." :: RETURN
1700 PRINT "MAYBE THE TRAIL GOES SOME-  WHERE." :: RETURN
1710 PRINT "BETTER BE CAREFUL, IT'S DAN-GEROUS UP AHEAD." :: RETURN
1720 IF VAL(O$(1,2))=L THEN PRINT "MAYBE THE BURDENBEAST HASN'TBEEN FED RECENTLY" :: RETURN ELSE GOTO 1680
1730 PRINT "KEEP GOING." :: RETURN
1740 PRINT "IT'S SLIPPERY, BUT YOU MIGHT BE ABLE TO CLIMB DOWN." :: RETURN
1750 PRINT "YOU HAVE A DIGTOOL, DON'T YOU?" :: RETURN
1760 IF O$(17,3)<>"1" AND ;U=0 THEN PRINT "YOU ARE DOOMED, THERE IS NO WAY OUT." :: RETURN ELSE 1680
1770 PRINT :: IF Z1<88 PRINT "EXCELLENT,";
1780 IF Z1<149 AND Z1>87 PRINT "WELL DONE,";
1790 IF Z1>150 AND Z1<200 PRINT "NOT BAD,";
1800 IF Z1>199 PRINT "SO-SO,";
1810 PRINT " FINISHED IN ONLY";Z1;" MOVES."
1820 INPUT "PLAY AGAIN? ":QM$ :: IF SEG$(QM$,1,1)="Y" THEN RESTORE :: GOTO 10 ELSE END
1830 IF J=7 THEN T$="THEY TASTE PRETTY GOOD." :: RETURN
1840 IF J=30 THEN PRINT "OH NO! YOU'VE JUST BEEN POISONED." :: GOTO 1820
1850 T$="CAN'T DO THAT...            YOU LOSE 3 POINTS ON KARMA !" :: RETURN
1860 REM
1870 CALL SCREEN(8) :: PRINT "##RIDER FANTASY CREATIONS##": :
1880 PRINT TAB(9);"ADVENTURE #2": :
1890 PRINT :: PRINT TAB(2);"SPIDER MOUNTAIN ADVENTURE" :: PRINT :: PRINT TAB(4);"WORLD COPYRIGHT 1979": : :: PRINT "  BY BOB LIDDIL & TERI LI": : :: RETURN
1900 PRINT "WELCOME TO THE SPIDER MOUN- TAIN ADVENTURE": :
1910 PRINT "I AM YOUR PSYCHIC 6TH SENSE,WISDOM, YOUR GUIDE ON THIS  ADVENTURE.  YOU MAY USE TWO"
1920 PRINT "WORD COMMANDS TO FIND CLUES AND EXECUTE MOVEMENT.  SUCH WORDS AS: ";CHR$(34)&"GO"&CHR$(34);",";CHR$(34)&"DROP"&CHR$(34);",";CHR$(34)&"INVENTORY"&CHR$(34)
1940 PRINT "AND ABOUT A HUNDRED MORE AREAVAILABLE TO YOU. ";CHR$(34);"HELP";CHR$(34);"WILL GIVE YOU HINTS WHEN YOU ARE STUCK.": :
1942 PRINT "GOOD LUCK, SIR KNIGHT, ON   YOUR NOBLE SPIDER MOUNTAIN  QUEST.": :
1960 INPUT "PRESS <ENTER> TO CONTINUE: ":A$ :: CALL CLEAR
1970 INPUT "DO YOU WANT TO RESTORE A    PREVIOUS GAME? ":A$ :: IF SEG$(A$,1,1)<>"Y" THEN RETURN
1980 INPUT "IS THIS DISK OR TAPE? (D/T) ":A$ :: IF SEG$(A$,1,1)<>"T" THEN 2050
1990 INPUT "IS THE TAPE RECORDER READY? ":QM$ :: IF SEG$(QM$,1,1)<>"Y" THEN RETURN
2000 PRINT #1:L,CL,LN,IN,U,U1,IM,XA,XB,XC,XD
2002 FOR I=0 TO 32
2003 FOR A=1 TO 3 :: PRINT #1:O$(I,A) :: NEXT A :: NEXT I
2004 RETURN
2010 RETURN
2020 INPUT "IS THIS DISK OR TAPE? (D/T)":A$ :: IF SEG$(A$,1,1)<>"T" THEN 2080
2030 INPUT "IS THE TAPE RECORDER READY? ":QM$
2040 IF SEG$(QM$,1,1)="Y" THEN PRINT #1:L,CL,LN,IN,U,U1,IM,XA,XB,XC,XD
2042 FOR I=0 TO 32
2043 FOR A=0 TO 3 :: PRINT #1:O$(I,A) :: NEXT A :: NEXT I
2044 T$="FINISHED WITH SAVE." :: GOTO 1560
2050 INPUT "IS THE DISK READY? ":A$ :: IF SEG$(A$,1,1)<>"Y" THEN RETURN
2060 INPUT "WHAT IS YOUR NAME? ":A$ :: PRINT #1:L,CL,LN,IN,U,U1,IM,XA,XB,XC,XD
2062 FOR I=0 TO 32
2063 FOR A=0 TO 3 :: PRINT #1:O$(I,A) :: NEXT A :: NEXT I :: RETURN
2080 INPUT "IS THE DISK READY? ":A$ :: IF SEG$(A$,1,1)<>"Y" THEN RETURN
2120 2,2,IN THE OUTBACK,ROAD. MOUNTAINS. DESERT TERRAIN,WNES,2,4,2,2,2,ON A DIRT PATH
2130 2
2140 DATA ON A DIRT ROAD,MOUNTAINS. PATH. DESERT OUT-BACK. VILLAGE IN THE DISTANCE,NE S,2,7,3,2,5,IN AN ABANDONED GRAYLOCK VILLAGE
2150 W,
2160 ,S N,4,4,2,8,2,IN HELL'S GATE PASS,,NS,1,9,7,,
2170 RUSH,E NS,1,11,,12,8,"IN A VERY, VERY LONG CORRIDOR",,W
2180 AT THE ENTRANCE TO A GORGE,IMPASSABLE LANDSLIDE. BOULDERS,"   S",1,12,12,12,9
2190 RT," N  ",8,13,15,,
2200 FLASHING IN FRONT OF YOUR EYES," S  "
2210  CRUMBLING LEDGE,YOUR LIFE FLASHING IN FRONT OF YOUR EYES," S  "
2220 E CHASM,NS,1,14,27,,,IN A LOW CRAWLWAY,VERY LITTLE," WE ",1,17
2230 AGMITES. CAVE MOSS,EW,1,17,19,18,,IN A HUGE CAVERN,POOL. BOULDERS
2240  CLEAR WATER,STALACTITES. STAGLAGMITES. CAVE MOSS,EW,1,17,19,
2250 ANCIENT CRYPT,STATUES,"   N",9
2260 SMOOTH MARBLE WALLS. DIRT FLOOR,S,8,25,23,,
2270 ,25,,,IN AN INTERSECTION,CORRIDORS IN FOUR DIRECTIONS
2280 ON IN THE DISTANCE,WE,6,25,10,,
2290 NSE,
2300 DATA EW,7,25,29,,,AT THE BOTTOM OF A STAIRCASE,CAVERN ENTRANCE,EW,1,28,19,,
2310  CLOTH BAG,4,8,DIGTOOL,4,12,WEAPON,4,11,LEATHER PIECE,1
2320 RRELS AND DARTS,1,-6,AMBROSIA BOTTLES,2,6,KEYS,1,18
2330 OLD DUCATS *,1,19,* MYTHRILL ARMING DOUBLETS *,1,14,# JEWEL #
2340 EXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPTORCH,2,-6,LEVER,1,-6,* SACK OF GOLD DUCATS *,1,19,* MYTHRILL ARMING DOUBLETS *,1,14,# JEWEL #,1,-21,# GOLD RING #
2350 DATA COFFIN,,21,CAMPFIRE,,1,SIGN,,5,BROKEN GLASS,,6,TABLES,,6,CHAIRS,,6,ROCKS,,10,SPIDER WEBS,,16,CACTUS,,2,TRAP DOOR,,10
2360 DATA "GO ",ENT,RUN,QUI,DIG,CLI,INV,JUM,DRO,GET,EXA,REA,LOO,MOV,CAT,CHA,LEA,RID,PUT,PLA,PIC,PUS,PUL,SHO,OPE,CLO
2365 EXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPTORCH,2,-6,LEVER,1,-6,* SACK OF GOLD DUCATS *,1,19,* MYTHRILL ARMING DOUBLETS *,1,14,# JEWEL #,1,-21,# GOLD RING #
2370 EXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXPEXP

and "EXP" is token >CE (206) as can be found at offset >3380 in the SPIDER file.

  • Like 1
Link to comment
Share on other sites

>Added a stupid if fix but it did the trick. The file is corrupt, but you allready know this. I think a little about this fix before a release a new version. But >

>the SPIDER program contains:

 

>and "EXP" is token >CE (206) as can be found at offset >3380 in the SPIDER file.

 

 

I do not really understand how you figured this out!

 

The XB listing is a bonus, especially as this was a gaming classic. Many thanks! (Do not know how you did that either?)

Link to comment
Share on other sites

6 hours ago, MikeV said:
I do not really understand how you figured this out!

 

The XB listing is a bonus, especially as this was a gaming classic. Many thanks! (Do not know how you did that either?)

I just run Ti99Dir in debug mode and let it crash ... that is why I need the file that shows the problem. The Visual Studio debugger will tel me what is wrong and where and then I just have to create something to catch the problem so that the Ti99Dir program does not crash anymore but just show all what it could do in the viewer window. ?

 

 

 

  • Like 1
Link to comment
Share on other sites

23 hours ago, F.G. Kaal said:

I just run Ti99Dir in debug mode and let it crash ... that is why I need the file that shows the problem. The Visual Studio debugger will tel me what is wrong and where and then I just have to create something to catch the problem so that the Ti99Dir program does not crash anymore but just show all what it could do in the viewer window. ?

 

 

 

You are a very talented individual! Thank you for supporting the TI.

  • Like 3
Link to comment
Share on other sites

@F.G. Kaal

 

I have found an issue with GDM2K that should have an easy resolution.

 

I went to backup files from my HRD to the TIPI.  If one launches GDM2K and hits <ENTER>, then the source and destination paths are the same.  I selected all the files, and when I hit C to copy, it started copying from source to the same destination.  I pretty much lost all my files at the source path.  I would suggest destination path not be populated if nothing is provided on the command line.


Beery

Link to comment
Share on other sites

13 minutes ago, arcadeshopper said:

ALSO I can't seem to copy from this path:  TIPI.GENEVE.MDOS730.MDOS730.*  (subfolders) 

 

had to move the last mdos730 folder to the root to get it to work

 

Greg,

 

This does not appear to be a GDM2K issue, rather a limitation on the 40 character maximum pab length within MDOS.

 

Link to comment
Share on other sites

1 hour ago, arcadeshopper said:

*shakes fist at mdos*

 

It's not an arbitrary value that we can easily change, as most programs enforce this 40 byte limitation imposed by the HFDC standard and implemented in many of the other storage cards (and MDOS) over time.

 

Please note this limitation in the MDOS/Geneve OS development thread and I'll review whether the internal structures can be changed to accommodate a larger path going forward.  

  • Like 1
Link to comment
Share on other sites

On 3/19/2022 at 6:59 PM, 9640News said:

@F.G. Kaal

 

I have found an issue with GDM2K that should have an easy resolution.

 

I went to backup files from my HRD to the TIPI.  If one launches GDM2K and hits <ENTER>, then the source and destination paths are the same.  I selected all the files, and when I hit C to copy, it started copying from source to the same destination.  I pretty much lost all my files at the source path.  I would suggest destination path not be populated if nothing is provided on the command line.


Beery

That doesn't help. A user can still select the same device.directory on both sides and pretty much loose all their files again.

 

Gdm2k Version 3.3 checks if source and destination device.directory are the same when doing a copy or move and throws an error "Illegal operation" if it is.

 

Fred ;-)

 

gdm2k_v33.zip

  • Like 5
  • Thanks 4
Link to comment
Share on other sites

3 hours ago, F.G. Kaal said:

That doesn't help. A user can still select the same device.directory on both sides and pretty much loose all their files again.

 

Gdm2k Version 3.3 checks if source and destination device.directory are the same when doing a copy or move and throws an error "Illegal operation" if it is.

 

Fred ;-)

 

gdm2k_v33.zip 13.67 kB · 4 downloads

Fred,

 

Thanks for the quick update.  It is very much appreciated.


Beery

  • Like 1
Link to comment
Share on other sites

  • 3 months later...

This might be a case of the long file names....

 

I received:

Received an error 4: Opendir [Out of buffers] when copying an emulated hard drive connected to an emulated HFDC to a real TIPI.
 
Seems like once error 4 is hit, it's game over.
 
I've also ran into similar problems when on a real geneve when copying from a SCSI hard drive to another SCSI hard drive.
 
Fred - would it be possible to change the logic this program uses?  When this error happens, it is very hard to tell how much was / wasn't copied.
 
If you could implement the logic, and admittedly it's a lot, take directories in alphabetical order, finish all the files in it, recurse on sub-directories inside the top directory until finished and work downward? That would allow for doing a dir and you could see immediately where the copy failed. I'm guessing you do something like just work through the file allocation table?
 
This appears to be a non-recoverable error, would it be possible to sort recoverable/non-recoverable - and if non-recoverable:
  Non-Recoverable Error: Press Q to quit, try to close all files and quit to GeneveOS?
 
image.png.0b060930d792b147ec528d7011eb1727.png
 
PS.. I have some MAME disk images I can send if you'd like to try to re-create.
Link to comment
Share on other sites

I had an "Out of Buffers" issue as well, however it was due to insufficient disk space on the destination.  It took me quite some time before I realized I was out of disk space.

 

I'm now sure if GDM2K is treating all error codes as a single error message, or if it has distinguished among the various codes the error.

Link to comment
Share on other sites

I don't think TIPI is suppose to respond with df/du like a hard drive, I've checked free /  used from tipi:
root@tipi:/home/tipi/tipi_disk# df .
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        3516512 2400604    940792  72% /
root@tipi:/home/tipi/tipi_disk#
 
So the out of buffers in my usage case wasn't physically filling up the drive.
Link to comment
Share on other sites

37 minutes ago, dhe said:
I don't think TIPI is suppose to respond with df/du like a hard drive, I've checked free /  used from tipi:
root@tipi:/home/tipi/tipi_disk# df .
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        3516512 2400604    940792  72% /
root@tipi:/home/tipi/tipi_disk#
 
So the out of buffers in my usage case wasn't physically filling up the drive.

were there a lot of subdirs? I think the max length of a filename including directories and drive is like 72 chars..

 

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Fred, for TI99Dir do you plan to add the way to choose a file viewer of our choice?
The file copy from a directory to an other directory while displaying simultaneously two windows list is very practical. But it is only one of the multiple (great) features of TI99Dir. So maybe, you could offer the possibility for users to choose the function of the right side window, like the viewing the text, Hex, char or picture contain of the selected file in the left window. That would be great.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Fred,

 

Two suggestions for GDM2K.

 

I use GDM2K quite a bit.  On real hardware, when I type GDM2K at the MDOS prompt, if I hit <ENTER> too quickly while a sound/beep is being played when the program first loads, the sound generator keeps on with a continuous beep and never ends.  I don't know if a longer timeout would be a solution, or completely disabling the beep would be best.  I find that when this happens, if I quit GDM2K with the Q key, the sound continues.  Thus, I reboot the Geneve to solve the sound issue.

 

Second suggestion if a slight modification to handling the command line launch of GDM2K.

 

If I am at the J:\MDOS path prompt, and I type:

 

J:\MDOS>GDM2K I:\

 

I would prefer to see GDM2K catalog the I:\ drive on the left window, and with a non-entry for the second path, use the current path so that the right window would show files at J:\MDOS.

 

 

Beery

 

 

 

  • Like 2
Link to comment
Share on other sites

On 8/22/2022 at 9:02 PM, fabrice montupet said:

Fred, for TI99Dir do you plan to add the way to choose a file viewer of our choice?
The file copy from a directory to an other directory while displaying simultaneously two windows list is very practical. But it is only one of the multiple (great) features of TI99Dir. So maybe, you could offer the possibility for users to choose the function of the right side window, like the viewing the text, Hex, char or picture contain of the selected file in the left window. That would be great.

Before anything is shown in the viewer the file contents is read and interpreted. If an external viewer/editor is used then the date has to be written to a temporary file (TXT or BMP) before an external viewer/editor can show this.  A bit complicated ... maybe some idea for later.

 

Displaying ther contents of a file into the left or right window seems a bit complicated to but it is an interesting idea.

 

I have made a note of both your suggestions.

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...