home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best Objectech Shareware Selections
/
UNTITLED.iso
/
boss
/
util
/
cdro
/
001
/
romplay3.bas
< prev
Wrap
BASIC Source File
|
1989-07-15
|
18KB
|
349 lines
1 REM SAVE"romplay3.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,HOLE:BCD=QCODE(2):GOSUB 5050:NHPOS=19:GOSUB 4420
4220 BCD=QCODE(3):GOSUB 5050:NHPOS=30:GOSUB 4420
4240 BCD=QCODE(8):GOSUB 5050:NHPOS=41:GOSUB 4420:NPOS=DEC
4250 IF NPOS>MPOS THEN NPOS=MPOS
4260 BCD=QCODE(9):GOSUB 5050:NHPOS=52:GOSUB 4420
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
4420 IF D1=0 THEN GOSUB 5300 ELSE ON D1 GOSUB 5310,5320,5330,5340,5350,5360,5370,5380,5390
4440 NHPOS=NHPOS+4:IF D2=0 THEN GOSUB 5300:RETURN
4450 ON D2 GOSUB 5310,5320,5330,5340,5350,5360,5370,5380,5390
4452 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:D3=D1*10:D2=BCD AND 15:DEC=D2+D3: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
5300 LOCATE NVPOS,NHPOS:PRINT "┌─┐"
5302 LOCATE ,NHPOS:PRINT "│ │"
5304 LOCATE ,NHPOS:PRINT "└─┘":RETURN
5310 LOCATE NVPOS,NHPOS:PRINT " ┐ "
5312 LOCATE ,NHPOS:PRINT " │ "
5314 LOCATE ,NHPOS:PRINT " ┴ ":RETURN
5320 LOCATE NVPOS,NHPOS:PRINT "┌─┐"
5322 LOCATE ,NHPOS:PRINT "┌─┘"
5324 LOCATE ,NHPOS:PRINT "└──":RETURN
5330 LOCATE NVPOS,NHPOS:PRINT "┌─┐"
5332 LOCATE ,NHPOS:PRINT " ─┤"
5333 LOCATE ,NHPOS:PRINT "└─┘":RETURN
5340 LOCATE NVPOS,NHPOS:PRINT "┬ ┌"
5342 LOCATE ,NHPOS:PRINT "└─┼"
5344 LOCATE ,NHPOS:PRINT " ┴":RETURN
5350 LOCATE NVPOS,NHPOS:PRINT "┌─ "
5352 LOCATE ,NHPOS:PRINT "└─┐"
5354 LOCATE ,NHPOS:PRINT "──┘":RETURN
5360 LOCATE NVPOS,NHPOS:PRINT "┌─ "
5362 LOCATE ,NHPOS:PRINT "├─┐"
5364 LOCATE ,NHPOS:PRINT "└─┘":RETURN
5370 LOCATE NVPOS,NHPOS:PRINT "┌─┐"
5372 LOCATE ,NHPOS:PRINT " │"
5374 LOCATE ,NHPOS:PRINT " ┴":RETURN
5380 LOCATE NVPOS,NHPOS:PRINT "┌─┐"
5382 LOCATE ,NHPOS:PRINT "├─┤"
5384 LOCATE ,NHPOS:PRINT "└─┘":RETURN
5390 LOCATE NVPOS,NHPOS:PRINT "┌─┐"
5392 LOCATE ,NHPOS:PRINT "└─┤"
5394 LOCATE ,NHPOS:PRINT " ─┘":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,HOLE
5520 DEC=C:GOSUB 5000:PTIM(1)=BCD:GOSUB 5550:IF INC=1 AND DSTAT=8 THEN 5570
5530 LOCATE 13,62: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
5600 INC=-3:C=56:MAXS=0:' >MaxSec
5610 DEC=C:GOSUB 5000:PTIM(2)=BCD:LOCATE 14,62: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 12,62: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 COLOR INK,PAPER: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
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=GREEN: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