home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best Objectech Shareware Selections
/
UNTITLED.iso
/
boss
/
util
/
cdro
/
001
/
romplay2.bas
< prev
next >
Wrap
BASIC Source File
|
1989-07-15
|
17KB
|
316 lines
1 REM SAVE"ROMPLAY2.bas",A
10 GOSUB 10000:GOTO 9000
1000 ACK=INP(PRTB) AND 3:IF ACK=2 THEN RETURN ELSE L=L+1:IF L<1400 THEN 1000 ELSE 8070
1050 ACK=INP(PRTB) AND 3:IF ACK=2 THEN OUT PRTC,NOCMD:RETURN
1060 L=L+1:IF L<1025 THEN 1050 ELSE 8070
2000 OUT DIRPRT,OTCMD:RETURN :' \ OutDir
2999 ' \ ClrCmdC
3000 L=0:OUT PRTC,NOCMD:OUT PRTA,255:OUT PRTC,CMD:GOSUB 1050:RETURN
3010 GOSUB 3500:BUSY=CSTAT AND 1:IF BUSY<1 THEN RETURN ELSE 3010
3199 ' \ TracPlay
3200 GOSUB 3000:OUT PRTA,232 OR CHANNELS:OUT PRTC,CMD:GOSUB 1050
3210 OUT PRTA,STRAC:OUT PRTC,CMD:GOSUB 1050
3220 OUT PRTA,ETRAC:OUT PRTC,CMD:GOSUB 1050:GOSUB 3010:RETURN
3299 ' \ TimePlay
3300 GOSUB 3000:OUT PRTA,224 OR CHANNELS:OUT PRTC,CMD:GOSUB 1050:FOR X=1 TO 6
3310 OUT PRTA,PTIM(X):OUT PRTC,CMD:GOSUB 1050:NEXT X:GOSUB 3010:RETURN
3399 ' \ DStat
3400 GOSUB 3000:OUT PRTA,96:OUT PRTC,CMD:GOSUB 1050:OUT DIRPRT,NCMD
3410 OUT PRTC,DMC:GOSUB 1000:DSTAT=INP(PRTA):OUT PRTC,NOCMD:GOSUB 2000:RETURN
3499 ' \ CStat
3500 GOSUB 3000:OUT PRTA,112:OUT PRTC,CMD:GOSUB 1050:OUT DIRPRT,NCMD
3510 OUT PRTC,DMC:GOSUB 1000:CSTAT=INP(PRTA):OUT PRTC,NOCMD:GOSUB 2000:RETURN
3549 ' \ LStat
3550 GOSUB 3000:OUT PRTA,160:OUT PRTC,CMD:GOSUB 1050:OUT DIRPRT,NCMD
3560 OUT PRTC,DMC:GOSUB 1000:LSTAT=INP(PRTA):OUT PRTC,NOCMD:GOSUB 2000:RETURN
3599 ' \ Q@
3600 GOSUB 3000:OUT PRTA,80:OUT PRTC,CMD:GOSUB 1050:OUT DIRPRT,NCMD
3650 FOR Q=1 TO 10:OUT PRTC,DMC:GOSUB 1000:QCODE(Q)=INP(PRTA):OUT PRTC,NODMC:NEXT Q:GOSUB 2000:RETURN
3699 ' \ ID@
3700 GOSUB 3000:OUT PRTA,48:OUT PRTC,CMD:GOSUB 1050
3710 OUT PRTA,144:OUT PRTC,CMD:GOSUB 1050:OUT PRTA,144:OUT PRTC,CMD:GOSUB 1050
3720 OUT PRTA,133:OUT PRTC,CMD:GOSUB 1050:OUT DIRPRT,NCMD:FOR Q=1 TO 52
3730 OUT PRTC,DMC:GOSUB 1000:ID(Q)=INP(PRTA):OUT PRTC,NODMC:NEXT Q:GOSUB 2000:RETURN
3800 GOSUB 3000:OUT PRTA,24:OUT PRTC,CMD:GOSUB 1050:GOSUB 3010:RETURN:' \ Paws
3810 GOSUB 3000:OUT PRTA,16:OUT PRTC,CMD:GOSUB 1050:' \ Seek
3820 FOR X=1 TO 3:OUT PRTA,PTIM(X):OUT PRTC,CMD:GOSUB 1050:NEXT X:GOSUB 3010:RETURN
3900 GOSUB 3000:OUT PRTA,0:OUT PRTC,CMD:GOSUB 1050:RETURN:' \ Reset
3910 GOSUB 3000:OUT PRTA,169:OUT PRTC,CMD:GOSUB 1050:RETURN:' Lock
3920 GOSUB 3000:OUT PRTA,48:OUT PRTC,CMD:GOSUB 1050:' \ Eat
3930 OUT PRTA,129:OUT PRTC,CMD:GOSUB 1050:GOSUB 3010:RETURN
3950 GOSUB 3000:OUT PRTA,168:OUT PRTC,CMD:GOSUB 1050:RETURN:' \ Kcol
3960 GOSUB 3000:OUT PRTA,48:OUT PRTC,CMD:GOSUB 1050:' \ Eject
3970 OUT PRTA,128:OUT PRTC,CMD:GOSUB 1050:GOSUB 3010:RETURN
4000 GOSUB 3400:K$=INKEY$:IF K$<>"" OR DSTAT>7 THEN RETURN
4100 GOSUB 3600:NQ=QCODE(9):IF NQ=TQ THEN 4000
4110 QMODE=QCODE(1) AND 15:IF QMODE=1 THEN TQ=NQ:GOSUB 4200
4120 GOTO 4000
4200 QCTL=QCODE(1) AND 240:IF QCTL<64 THEN TINK=INK ELSE TINK=YELLOW
4210 COLOR TINK:LOCATE 9,41:BCD=QCODE(2):GOSUB 5050:PRINT DEC;" ";
4220 LOCATE 10,41:BCD=QCODE(3):GOSUB 5050
4230 PRINT DEC;" ";
4240 BCD=QCODE(8):GOSUB 5050:NPOS=DEC:IF NPOS>MPOS THEN NPOS=MPOS
4250 LOCATE 11,41:PRINT DEC;" ";
4260 LOCATE 12,41:BCD=QCODE(9):GOSUB 5050:PRINT DEC;" ";
4400 COLOR WHITE,HOLE:IF NPOS<>OPOS THEN LOCATE SPOS,OPOS+1:PRINT SCALE$;
4410 COLOR TIP:LOCATE SPOS,NPOS+1:PRINT TIP$;:OPOS=NPOS:COLOR TINK,PAPER:RETURN
4999 ' \ >BCD
5000 D1=INT(DEC/10):D1=D1*16:D2=DEC MOD 10:BCD=D1 OR D2:RETURN
5049 ' \ <BCD Mask 240=11110000 15=00001111
5050 D1=BCD AND 240:D1=D1/16:D1=D1*10:D2=BCD AND 15:DEC=D2+D1:RETURN
5100 FOR X=1 TO 6:PTIM(X)=MTIM(X):NEXT:RETURN
5200 GOSUB 3600:QMODE=QCODE(1) AND 15:IF QMODE>1 THEN 5200:' \ Gtime
5210 RETURN
5500 GOSUB 9600:IF OLDDISC=1 THEN RETURN: ' \ >MaxMin
5502 GOSUB 9860:GOSUB 3910:GOSUB 5100:GOSUB 9460:MQUE=1:QUE(1)=0:QFLAG=0:OPOS=0
5510 GOSUB 9740:CHANNELS=3:MAXM=0:C=94:INC=-5:COLOR INK
5520 DEC=C:GOSUB 5000:PTIM(1)=BCD:GOSUB 5550:IF INC=1 AND DSTAT=8 THEN 5570
5530 LOCATE 6,41:PRINT C;:C=C+INC:IF C<0 THEN C=0:INC=1
5532 IF C>99 THEN RETURN
5540 GOTO 5520
5550 GOSUB 3300:GOSUB 3400:IF DSTAT=4 THEN INC=1:' ?Play
5560 RETURN
5570 IF C>1 THEN MAXM=C-1
5580 DEC=MAXM:GOSUB 5000:PTIM(1)=BCD:MPOS=MAXM:IF MAXM>79 THEN MPOS=79
5590 COLOR WHITE,HOLE:FOR X=0 TO MPOS:LOCATE SPOS,X+1:PRINT SCALE$;:NEXT:COLOR INK,PAPER
5600 INC=-3:C=56:MAXS=0:' >MaxSec
5610 DEC=C:GOSUB 5000:PTIM(2)=BCD:LOCATE 7,41:PRINT C;" ";
5620 GOSUB 5550:IF INC=1 AND DSTAT=8 THEN 5650
5630 C=C+INC:IF C<0 THEN C=0:INC=1
5632 IF C>60 THEN RETURN
5640 GOTO 5610
5650 IF C>1 THEN MAXS=C-1
5660 ASEC=C-2:IF ASEC<0 THEN ASEC=ASEC+59:DEC=MAXM-1:GOSUB 5000:PTIM(1)=BCD
5670 DEC=ASEC:GOSUB 5000:PTIM(2)=BCD:GOSUB 3300
5680 GOSUB 5200:BCD=QCODE(2):GOSUB 5050:MAXTRAC=DEC
5690 LOCATE 5,41:PRINT MAXTRAC;" ";:CHANNELS=0:OLDDISC=1
5692 IF HTIM(1)>0 THEN FOR X=1 TO 3:PTIM(X)=HTIM(X):NEXT:GOSUB 3300
5694 RETURN
6000 K$=INKEY$:IF K$="" THEN 6000
6010 K=ASC(K$):RETURN
6200 IF K>47 AND K<58 THEN WK$=K$ ELSE WK$=""
6210 LOCATE 23,48:PRINT WK$;" ";
6220 GOSUB 6000:IF K=8 THEN WK$="" ELSE IF K=13 THEN RETURN
6230 IF K>47 AND K<58 THEN WK$=WK$+K$:IF LEN(WK$)>2 THEN 6200
6240 IF K=32 THEN K$="":RETURN
6250 GOTO 6210
6300 GOSUB 7060:' \ SlideCue
6310 IF LEN(K$)<2 THEN GOSUB 6400:RETURN
6320 K$=RIGHT$(K$,1):IF K$="M" THEN NPOS=OPOS+1:IF NPOS>MPOS THEN NPOS=0
6330 IF K$="K" THEN NPOS=OPOS-1:IF NPOS<0 THEN NPOS=MPOS
6350 DEC=NPOS:GOSUB 4400:LOCATE 11,41:PRINT NPOS;" ";
6360 IF K$="P" THEN GOSUB 6400:RETURN
6370 IF K$="H" THEN GOSUB 6390
6380 GOSUB 6000:GOTO 6310
6390 GOSUB 5000:GOSUB 5100:PTIM(1)=BCD:PTIM(2)=1:GOSUB 3810:GOSUB 7050:GOSUB 5200:T=NPOS:GOSUB 4200::NPOS=T:GOSUB 9990:RETURN
6400 K$="":GOSUB 5000:GOSUB 5100:PTIM(1)=BCD:PTIM(2)=0:GOSUB 3300:GOSUB 5200:GOSUB 7060:GOSUB 9990:RETURN
7050 WF=1:LOCATE 23,37:PRINT "PAUSED":RETURN
7060 IF QFLAG=1 THEN GOSUB 8700:RETURN
7070 TIP=YELLOW:GOSUB 4400:FINFLAG=0:RFLAG=0:WF=0:GOSUB 9560:RETURN
7100 GOSUB 5200:BCD=QCODE(2):GOSUB 5050:DEC=DEC+SKIPDIR:' \ Skip
7110 IF DEC>MAXTRAC THEN DEC=1 ELSE IF DEC<1 THEN DEC=MAXTRAC
7120 GOSUB 5000:STRAC=BCD:ETRAC=153:GOSUB 3200:GOSUB 7060:GOSUB 9990:RETURN
7300 QMODE=QCODE(1) AND 15:IF QMODE>1 THEN GOSUB 5200:' \ SectionPlayBegin
7310 FOR Q=1 TO 3:RTIM(Q)=QCODE(Q+7):NEXT Q:RETURN
7400 QMODE=QCODE(1) AND 15:IF QMODE>1 THEN GOSUB 5200:' \ Finish
7410 FOR Q=4 TO 6:RTIM(Q)=QCODE(Q+4):NEXT Q:FINFLAG=1
7420 IF RTIM(1)>RTIM(4) THEN GOSUB 7060:RETURN
7430 IF RTIM(1)=RTIM(4) THEN IF RTIM(2)>=RTIM(5) THEN GOSUB 7060:RETURN
7440 TIP=LCYAN:GOSUB 4400:FOR Q=1 TO 6:PTIM(Q)=RTIM(Q):NEXT Q:RETURN
7710 IF WF=1 THEN GOTO 7750:' \ Pause
7720 GOSUB 5200:GOSUB 3800:GOSUB 7050:GOSUB 5100
7730 PTIM(1)=QCODE(8):PTIM(2)=QCODE(9):PTIM(3)=QCODE(10):RETURN
7750 GOSUB 3300:GOSUB 7060:RETURN
7760 IF AFRAME<0 THEN AFRAME=AFRAME+74:ASEC=ASEC-1
7770 IF ASEC<0 THEN ASEC=ASEC+59:AMIN=AMIN-1
7780 IF AMIN<0 THEN AMIN=0
7790 RETURN
7800 IF WF=1 THEN 7750:' \ Cue
7810 GOSUB 5200:BCD=QCODE(8):GOSUB 5050:AMIN=DEC:BCD=QCODE(9):GOSUB 5050
7820 ASEC=DEC:BCD=QCODE(10):GOSUB 5050:AFRAME=DEC
7830 BCD=QCODE(4):GOSUB 5050:CMIN=DEC:BCD=QCODE(5):GOSUB 5050:CSEC=DEC
7840 BCD=QCODE(6):GOSUB 5050:CFRAME=DEC
7850 AMIN=AMIN-CMIN:ASEC=ASEC-CSEC:AFRAME=AFRAME-CFRAME:GOSUB 7760
7860 GOSUB 5100:DEC=AMIN:GOSUB 5000:PTIM(1)=BCD:DEC=ASEC:GOSUB 5000:PTIM(2)=BCD
7870 DEC=AFRAME:GOSUB 5000:PTIM(3)=BCD
7880 GOSUB 3810:GOSUB 7050:GOSUB 4100:RETURN
7900 GOSUB 5100:GOSUB 5200:BCD=QCODE(8):GOSUB 5050:CMIN=DEC:BCD=QCODE(9):GOSUB 5050:' >>
7910 DEC=DEC+INC:IF DEC<0 THEN DEC=DEC+59:CMIN=CMIN-1:IF CMIN<0 THEN CMIN=MAXM:IF DEC>MAXS THEN DEC=MAXS-10:IF DEC<0 THEN DEC=DEC+59:CMIN=CMIN-1
7920 IF DEC>59 THEN DEC=DEC-59:CMIN=CMIN+1
7922 IF CMIN>MAXM OR CMIN<0 THEN CMIN=0
7930 GOSUB 5000:PTIM(2)=BCD:DEC=CMIN:GOSUB 5000:PTIM(1)=BCD
7940 GOSUB 3300:GOSUB 7060:GOSUB 9990:RETURN
7950 GOSUB 5100:GOSUB 5200:BCD=QCODE(8):GOSUB 5050:AMIN=DEC+INC:IF AMIN<0 THEN AMIN=MAXM:BCD=QCODE(9):GOSUB 5050:IF DEC>MAXS+1 THEN AMIN=AMIN-1:' >>>
7970 IF AMIN>MAXM OR AMIN<0 THEN AMIN=0
7980 DEC=AMIN:GOSUB 5000:PTIM(1)=BCD:PTIM(2)=QCODE(9):GOSUB 3300:GOSUB 7060:GOSUB 9990:RETURN
8000 L=0:ACK=INP(PRTB) AND 3:IF ACK>0 THEN 8100:' \ Drive?
8002 OUT PRTC,NOCMD:OUT PRTA,255
8010 L=L+1:IF L=2 THEN GOSUB 8080
8020 OUT PRTC,CMD
8030 ACK=INP(PRTB) AND 3:IF ACK=2 THEN GOSUB 8090:RETURN
8050 IF L<200 THEN 8010
8060 IF DF=