home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1993 #2
/
Image.iso
/
sound2
/
modshell.zip
/
MODSHELL.BAS
next >
Wrap
BASIC Source File
|
1993-07-02
|
3KB
|
137 lines
'ModShell by T. Wendell Martin, Jr.
'Public domain 7/2/93
DECLARE SUB PlayShell ()
DECLARE SUB Display (Disp1%)
DECLARE SUB Pick ()
DECLARE SUB GetMods ()
DEFINT A-Z
COMMON SHARED ModNum
COMMON SHARED ModNextPick
COMMON SHARED ModDir$
COMMON SHARED Player$
DIM SHARED ModName$(1024)
DIM SHARED ModDesc$(1024)
DIM SHARED ModPick(1024)
DIM SHARED ModPlayList$(1024)
ModNextPick = 1
space = INSTR(COMMAND$, " ")
IF space = 0 THEN
PRINT : PRINT "ModShell <ModPath> <PlayerPath,Name,&Parameters>"
PRINT "(ex: ModShell \mod \dmp\dmp -s20000 -c2 -q @ModList)"
PRINT "(The list of selected Mods is stored in ModList)"
END
END IF
ModDir$ = LEFT$(COMMAND$, space - 1)
Player$ = MID$(COMMAND$, space + 1)
CALL GetMods
DO
CALL Display(1)
CALL Pick
CALL PlayShell
ERASE ModPick, ModPlayList$
ModNextPick = 1
LOOP
SUB Display (Disp1)
Disp2 = Disp1 + 20
CLS
FOR c = Disp1 TO Disp2
IF ModPick(c) THEN COLOR 15, 1 ELSE COLOR 7, 1
IF ModName$(c) <> "" THEN PRINT ModPick(c); TAB(5); ModName$(c); TAB(19); ModDesc$(c)
NEXT c
END SUB
DEFSNG A-Z
SUB GetMods
COLOR 15, 1: CLS
PRINT "TWM's .Mod Shell"
COLOR 7, 1
PRINT : INPUT "Do you want descriptions (y/N)"; yn$
IF yn$ = "" THEN yn$ = "n"
yn$ = UCASE$(LEFT$(yn$, 1))
IF yn$ = "Y" THEN PRINT "Loading descriptions, "; ELSE PRINT "Finding modules . . ."
SHELL "dir " + ModDir$ + "\*.mod >ModPath.$$$ /b/l/on"
OPEN "ModPath.$$$" FOR INPUT AS #1
ModNum = 1
DO WHILE NOT EOF(1)
LINE INPUT #1, ModName$(ModNum)
IF yn$ = "Y" THEN
PRINT "o";
OPEN ModDir$ + "\" + ModName$(ModNum) FOR BINARY AS #2
ModDesc$(ModNum) = SPACE$(20)
GET #2, , ModDesc$(ModNum)
CLOSE #2
END IF
ModNum = ModNum + 1
LOOP
CLOSE #1
KILL "ModPath.$$$"
END SUB
DEFINT A-Z
SUB Pick
Posit = 1
Disp1 = 1
DO
LOCATE Posit, 1, 1
DO
DO
A$ = INKEY$
LOOP UNTIL A$ <> ""
IF LEN(A$) = 2 THEN A$ = MID$(A$, 2)
SELECT CASE ASC(A$)
CASE 72: IF Posit <> 1 THEN Posit = Posit - 1: Change$ = "up"
CASE 80: IF Posit <> 21 THEN Posit = Posit + 1: Change$ = "dn"
CASE 73: IF Disp1 <> 1 THEN Disp1 = Disp1 - 20: Change$ = "pgup"
CASE 81: IF Disp1 <> 1001 THEN Disp1 = Disp1 + 20: Change$ = "pgdn"
CASE 32: Change$ = "pick"
CASE 13: Change$ = "play"
CASE 27: Change$ = "quit"
END SELECT
LOOP UNTIL Change$ <> ""
IF Change$ = "pgup" OR Change$ = "pgdn" THEN CALL Display(Disp1)
IF Change$ = "pick" THEN
IF ModPick(Posit + Disp1 - 1) = 0 THEN 'set a new one
ModPick(Posit + Disp1 - 1) = ModNextPick
ModPlayList$(ModNextPick) = ModName$(Posit + Disp1 - 1)
ModNextPick = ModNextPick + 1
ELSE 'remove an old one
DeletedNum = ModPick(Posit + Disp1 - 1)
ModPick(Posit + Disp1 - 1) = 0
FOR cc = DeletedNum TO ModNextPick
ModPlayList$(cc) = ModPlayList$(cc + 1)
NEXT
FOR cc = 1 TO 1024
IF ModPick(cc) > DeletedNum THEN ModPick(cc) = ModPick(cc) - 1
NEXT
ModNextPick = ModNextPick - 1
END IF
CALL Display(Disp1)
END IF
LOOP UNTIL Change$ = "play" OR Change$ = "quit"
IF Change$ = "quit" THEN
OPEN "o", #1, "ModPlay.Bat"
CLOSE #1
OPEN "o", #1, "ModList"
CLOSE #1
KILL "ModList"
COLOR 7, 0
CLS
END
END IF
END SUB
SUB PlayShell
COLOR 7, 1: CLS : PRINT "Loading player . . ."
OPEN "ModList" FOR OUTPUT AS #1
FOR c = 1 TO ModNextPick - 1
PRINT #1, ModDir$ + "\" + ModPlayList$(c)
NEXT
CLOSE #1
SHELL Player$
END SUB