'=========================================================================== ' Subject: SMALL CD PLAYER Date: 01-22-00 (16:43) ' Author: James A. Davis Code: QB, PDS ' Origin: jad@iswt.com Packet: DISK.ABC '=========================================================================== '** not responsible ** '** use at your own risk *** '** I am James Davis : email jad@iswt '** DOSEN'T LOOK LIKE MUCH,BUT IT WORKS FOR ME '** USE QB45 *** '** USE MOUSE '** MUST BE LOADED WITH QB /L QB ON THE DOS PROMPT COMMAND LINE '** WORKS IN DOS OR WIN 31, I DON'T KNOW ABOUT WIN 95 OR 98 '******************** declare ************************************** TYPE REGTYPE ax AS INTEGER bx AS INTEGER cX AS INTEGER dx AS INTEGER es AS INTEGER bp AS INTEGER si AS INTEGER di AS INTEGER FLAGS AS INTEGER END TYPE DIM inreg AS REGTYPE, outreg AS REGTYPE DECLARE SUB interrupt (intnum AS INTEGER, inreg AS REGTYPE, outreg AS REGTYPE) SCREEN 9 DIM song(200) DIM a$(550) DIM b$(200) DIM al$(200) DIM sg(200) DIM secc$(500) DIM secc(500) DIM ccc(500) DIM oldsong(200) tt = TIMER ddd = 255 '*** for volume md$ = SPACE$(75) CLS '********************** screen *************************** COLOR 11 LOCATE 1, 1 ' Top, Left PRINT CHR$(201); STRING$(37, 205); CHR$(203); STRING$(40, 205); CHR$(187) FOR row = 2 TO 24 LOCATE row, 1 PRINT CHR$(186); SPC(78); CHR$(186); NEXT row LOCATE 24, 1 'Bottom, Left PRINT CHR$(200); STRING$(37, 205); CHR$(202); STRING$(40, 205); CHR$(188); ee = 100 FOR row = 2 TO 23 'MIDDLE VERTICAL LINE LOCATE row, 39 PRINT CHR$(186): NEXT COLOR 11 LOCATE 6, 52: PRINT CHR$(24); : COLOR 3: PRINT " PREVIOUS SONG": COLOR 11 LOCATE 7, 52: PRINT CHR$(25); : COLOR 3: PRINT " NEXT SONG": COLOR 11 LOCATE 8, 52: PRINT "P"; : COLOR 3: PRINT " = PLAY": COLOR 11 LOCATE 9, 52: PRINT "S"; : COLOR 3: PRINT " = STOP": COLOR 11 LOCATE 10, 52: PRINT "E"; : COLOR 3: PRINT " = EJECT": COLOR 11 LOCATE 11, 52: PRINT "C"; : COLOR 3: PRINT " = CLOSE": COLOR 11 LOCATE 12, 52: PRINT "Q"; : COLOR 3: PRINT " = QUIT": COLOR 11 LOCATE 18, 55: PRINT "Stopped" 'LOCATE 23, 2: PRINT "TOTAL TIME" MUST PUT IN LATER AT ' AT 600 LOCATE 22, 43: COLOR 3: PRINT "LEFT MOUSE SELECTS - RIGHT PLAYS IT" COLOR 7, 0 '****************** see if there's a drive ********************** main: '****** see if mscdex is installed **** inreg.ax = &H150C inreg.bx = 0 CALL interrupt(&H2F, inreg, outreg) IF outreg.bx = 0 THEN CLS : LOCATE 12, 27: PRINT "MUST HAVE MSCDEX INSTALLED": SLEEP: END '******** Does it have a drive if so what number****** '******** bx = how many cx=drive number, 8 on mine inreg.ax = &H1500 inreg.bx = 0 inreg.cX = 0 inreg.dx = &H0 CALL interrupt(&H2F, inreg, outreg) IF outreg.bx = 0 THEN LOCATE 10, 10: PRINT "NO CD-ROM DRIVE FOUND SORRY.": SLEEP 3: END '****************** 300 setting up headers ******************** dr = outreg.cX '***** got a drive so I go on ********* ADD& = 256 * PEEK(VARPTR(md$) + 3) + PEEK(VARPTR(md$) + 2) ds = VARSEG(md$) ' 'PRINT "this is where its stored "; HEX$(DS); " : "; HEX$(ADD&); ":"; HEX$(SADD(md$)) '******print DEF SEG = ds: FOR x = 0 TO 35: POKE ADD& + x, 0: NEXT 'put 0 in md$ space ER = ADD& MOD 256 + 26 '2 right numbers of ofset rr = (ADD& + 26) \ 256 'left numbers of ofset fd = ds \ 256 'left 2 numbers of 4 seg DDS = ds MOD 256 '************** how long is the disk **************************** DEF SEG = ds: POKE ADD& + 0, &H1A 'how long header is POKE ADD& + 2, 3 ' command POKE ADD& + 3, 0 POKE ADD& + 4, 0 '****** must clear this POKE ADD& + 5, 0 '****** must clear this POKE ADD& + 14, ER ' right 2 of ofset +26 = where the command is POKE ADD& + 15, rr 'left 2 of offset POKE ADD& + 16, DDS 'right 2 of seg POKE ADD& + 17, fd 'left 2 of seg POKE ADD& + 18, 1 POKE ADD& + 26, &HB 'a=disk b=song how long is first song if not music it returns a 65 else 01 POKE ADD& + 27, 1 'which song DEF SEG inreg.ax = &H1510 inreg.bx = ADD& inreg.cX = dr 'drive # inreg.dx = &H0 inreg.es = ds CALL interrupt(&H2F, inreg, outreg) inreg.ax = &H1510 ' some times it won't work on 1 call CALL interrupt(&H2F, inreg, outreg) DEF SEG = ds fg = PEEK(ADD& + 26) pg = PEEK(ADD& + 29) ppg = PEEK(ADD& + 32) DEF SEG COLOR 3 IF pg = 0 AND ppg = 0 THEN GOSUB stp: GOSUB opn: LOCATE 10, 5: PRINT "NO DISK": LOCATE 12, 5: PRINT "PRESS C TO CLOSE": GOSUB erlines: GOSUB 800: pp = 0: GOTO clock IF pg = 2 AND ppg = 64 THEN GOSUB stp: GOSUB opn: LOCATE 10, 5: PRINT "NOT A MUSIC DISK": LOCATE 12, 5: PRINT "PRESS C TO CLOSE": GOSUB erlines: GOSUB 800: pp = 0: GOTO clock IF pg = 2 AND ppg = 65 THEN GOSUB stp: GOSUB opn: LOCATE 10, 5: PRINT "NOT A MUSIC DISK": LOCATE 12, 5: PRINT "PRESS C TO CLOSE": GOSUB erlines: GOSUB 800: pp = 0: GOTO clock DEF SEG = ds POKE ADD& + 2, 3 POKE ADD& + 3, 0 POKE ADD& + 4, 0 '****** must clear this POKE ADD& + 5, 0 '****** must clear this POKE ADD& + 26, &HA ' A how long the disk POKE ADD& + 27, 0 DEF SEG = ds inreg.ax = &H1510 inreg.bx = ADD& inreg.cX = dr 'drive # inreg.dx = &H0 CALL interrupt(&H2F, inreg, outreg) pa = PEEK(ADD& + 26) 'this is command pb = PEEK(ADD& + 27) pc = PEEK(ADD& + 28) pd = PEEK(ADD& + 29) ' lo pe = PEEK(ADD& + 30) ' mid pf = PEEK(ADD& + 31) ' hi pg = PEEK(ADD& + 32) ph = PEEK(ADD& + 33) DEF SEG hlong = (pf * 60 * 75) + (pe * 75) + pd - 150 '150 the start of song(1)in seconds.will use any extra frames later 'if the start is above 150. hlong is lenght of disk -150 . 'I can't find all of song(1)start address till songs are read wc = hlong MOD 4500 frame = wc MOD 75 MIN = (hlong - wc) / 4500 sec = (wc - frame) / 75 '*** how long LOCATE 16, 48: COLOR 3: PRINT "Total Time "; : COLOR 11: PRINT MIN; : COLOR 3: PRINT "Min"; : COLOR 11: PRINT sec; : COLOR 3: PRINT "Sec": COLOR 7'on screen '************* above how long is the disk *************** '************* below how long is each sector and how many 'sector DEF SEG = ds POKE ADD& + 2, &H3 POKE ADD& + 3, 0 POKE ADD& + 4, 0 '****** must clear this POKE ADD& + 5, 0 '****** must clear this '**** this arrary song(n) is the starting sector for each song ********** oldsong = 1 FOR N = 1 TO 100 '**** 99 songs i think POKE ADD& + 26, &HB 'b start of one song POKE ADD& + 27, N ' which song DEF SEG = ds 'take start from the next one to see how long 'the start one is, start from next start = lenght inreg.ax = &H1510 inreg.bx = ADD& 'add& inreg.cX = dr 'drive # inreg.dx = &H0 CALL interrupt(&H2F, inreg, outreg) pa = PEEK(ADD& + 26) 'this is command pb = PEEK(ADD& + 27) pc = PEEK(ADD& + 28) 'frames pd = PEEK(ADD& + 29) 'sec take the first one from total to get how long pe = PEEK(ADD& + 30) 'min pf = PEEK(ADD& + 31) pg = PEEK(ADD& + 32) ph = PEEK(ADD& + 33) song(N) = (pe * 4500) + (pd * 75) + pc - 150 'had to take off the 150 here to where song(1) starts to get right count ' makes a number for each song IF oldsong = song(N) THEN ee = N - 1: N = 100: GOTO 10 oldsong = song(N) 'if last song get out NEXT DEF SEG '******* length disk total time ******** 10 '******* start of each song ******* '******* length of each song ******* t = 1 FOR N = 1 TO ee 'got ee above it is how many songs, also must IF N = ee THEN wa = hlong - song(N): : GOTO 20 'step backward to get right wa = song(N + 1) - song(N) 'size 20 wc = wa MOD 4500 frame = wc MOD 75 MIN = (wa - wc) / 4500 sec = (wc - frame) / 75 sg(N) = wa '***** sg(n) this arrary is length of each sector MIN$ = STR$(MIN) sec$ = STR$(sec) ee$ = STR$(N) b$ = CHR$(35) secc = sec + (MIN * 60) ccc(N) = sec + (MIN * 60) secc$(N) = STR$(secc) MN$ = " " MIN$ = MN$ + MIN$ a$(N) = " MIN" + MIN$ + " SEC " + sec$ NEXT '******** MOUSE SETUP ********** inreg.ax = &H0 inreg.bx = &H0 inreg.cX = &H0 inreg.dx = &H0 GOSUB mice IF outreg.ax <> -1 THEN CLS : LOCATE 15, 30: COLOR 11: PRINT "Where is the mouse ?": SLEEP 9: END GOSUB show 'turns on cursor inreg.ax = 4 'set cursor position inreg.bx = &H0 inreg.cX = 280 inreg.dx = 30 GOSUB mice GOSUB where 'shows mouse inreg.ax = &HA inreg.bx = &H0 inreg.cX = &H0 inreg.dx = &H1D11 'shape of cursor GOSUB mice ' *************** MENU ****************************** COLOR 7 GOSUB volume a = 1 ZW = 1 COLOR 2: LOCATE 2, 70: PRINT "jad" COLOR 3, 0: LOCATE 15, 50: PRINT "Quiet "; CHR$(45) LOCATE 14, 56: PRINT "VOLUME" LOCATE 15, 61: PRINT CHR$(43); " Loud"; ': CHR$(43): COLOR 7, 0 LOCATE 15, 57: COLOR 11: PRINT ddd \ 17 'color 11 c = 0 a = 1 120 '*** display different song times ********* COLOR 3 IF ee < 21 THEN xX = ee ELSE xX = 20 FOR x = 1 TO xX LOCATE x + 2, 7: PRINT b$; x + c; LOCATE x + 2, 15: PRINT a$(x + c); IF x + c = ee THEN x = 20 NEXT V = 1 '*********** lighted line of songs selection *********** tt = TIMER 130 COLOR 11: LOCATE a + 2, 3: PRINT "--> "; b$; a + c '** print the arrow LOCATE a + 2, 12: PRINT " "; a$(a + c); GOSUB show '**** turning on mouse arrow '************* end lighten line ********* clock: GOSUB show ' calls mouse to start and show mouse COLOR 3, 0: ff = ff + 1 IF ff < 40 THEN jad = 1 IF ff > 40 AND ff < 80 THEN jad = 11 IF ff >= 80 THEN ff = 0 LOCATE 21, 59: COLOR jad: PRINT " :": COLOR 3 hr$ = LEFT$(TIME$, 2) am$ = " AM" nh = VAL(hr$) IF nh > 12 THEN nh = nh - 12: am$ = " PM" nh$ = STR$(nh) nh$ = RIGHT$(nh$, 2) LOCATE 21, 53: COLOR 3: PRINT "TIME "; : COLOR 11: PRINT nh$; : LOCATE 21, 61: PRINT MID$(TIME$, 4, 2) + am$: COLOR 3 ti = TIMER IF ccc(a + c) + tt >= ti AND pp = 1 THEN 141 ELSE GOTO 142 141 ti = TIMER sec = (ccc(a + c) + tt - ti) MOD 60 MIN = (ccc(a + c) + tt - ti) \ 60 sec$ = STR$(sec) MIN$ = STR$(MIN) sec$ = RIGHT$(sec$, 2) MIN$ = RIGHT$(MIN$, 2) LOCATE 18, 47: PRINT "Song Elasped "; MIN$; " min "; sec$; " sec" smin = hlong - song(a + c) wl = tt + (smin / 75) - ti sec = wl MOD 60 MIN = wl \ 60'(wc - frame) / 75 '*** how long MIN$ = STR$(MIN) sec$ = STR$(sec) MIN$ = RIGHT$(MIN$, 2) sec$ = RIGHT$(sec$, 2) LOCATE 19, 47: PRINT "Time Left "; MIN$; " min "; sec$; " sec"; MIN$ = STR$(MIN) sec$ = STR$(sec) GOTO 143 142 IF pp = 1 THEN a = a + 1: GOTO 503 143 nn$ = INKEY$: IF nn$ = "" THEN 144 ELSE 190 144 GOSUB where: aa = a dd = (ee * 14 + 24)'12 '******************** SELECTION OF SONGS ************* IF outreg.bx = 1 AND outreg.cX >= 6 AND outreg.cX < 244 AND outreg.dx <= dd AND outreg.dx > 14 THEN 150 '25 '********************* MENU ******************** IF outreg.bx = 1 AND outreg.cX >= 404 AND outreg.cX < 516 AND outreg.dx >= 68 AND outreg.dx < 166 THEN 180 '********************* PLAY *************************** IF outreg.bx = 1 AND outreg.cX < 303 THEN an$ = "p": GOTO 191: GOSUB stp: GOSUB pla: GOTO clock'play when enter is pressed IF outreg.bx = 2 THEN an$ = "p": GOTO 191 '******************** VOLUME ********************* IF outreg.bx = 1 AND outreg.cX >= 472 AND outreg.cX < 528 AND outreg.dx <= 208 AND outreg.dx > 193 THEN nn$ = CHR$(43): FOR x = 0 TO 9000: NEXT: GOTO 192 '42 IF outreg.bx = 1 AND outreg.cX >= 390 AND outreg.cX < 456 AND outreg.dx <= 208 AND outreg.dx > 193 THEN nn$ = CHR$(45): FOR x = 0 TO 9000: NEXT: GOTO 192 '42 GOTO clock '********** go up or down mouse ********* 150 a = outreg.dx \ 14: a = a - 1 IF a <= aa THEN GOSUB stp: GOSUB erlines: pp = 0: GOTO 160 IF a > aa THEN GOSUB stp: GOSUB erlines: pp = 0: GOTO 170 GOTO clock '************** up ***** 160 GOSUB hide ' hid arrow GOSUB stp: GOSUB erlines LOCATE 18, 55: COLOR 11: PRINT "Stopped": COLOR 7 FOR x = 0 TO 50000: NEXT '***************** speed control LOCATE 2 + aa, 2: COLOR 3: PRINT " "; b$; aa + c; : '***** up ****** LOCATE 2 + aa, 15: PRINT a$(aa + c); dd = (ee \ 20) IF a = 0 AND c >= 20 THEN c = c - 20: a = 20: GOSUB clr: GOTO 120 IF a = 0 AND ee <= 20 THEN a = ee: GOSUB clr: GOTO 120 IF a = 0 THEN c = dd * 20: a = ee - c: GOSUB clr: GOTO 120 GOTO 130 '************** down *********** 170 GOSUB hide '*** hid arrow LOCATE 18, 55: COLOR 11: PRINT "Stopped": COLOR 7 GOSUB stp: GOSUB erlines FOR x = 0 TO 50000: NEXT '****** speed control LOCATE 2 + aa, 2: COLOR 3: PRINT " "; b$; aa; : '******* down ***** LOCATE 2 + aa, 15: PRINT a$(aa): LOCATE a + 1, 3: COLOR 3: PRINT " "; b$; a + c - 1; : LOCATE a + 1, 15: PRINT a$(a + c - 1); IF c + a > ee THEN c = 0: a = 1: GOSUB clr: GOTO 120 IF c + a > 100 THEN c = 0: a = 1: GOSUB clr: GOTO 120 IF a >= 21 THEN c = c + 20: a = 1: GOSUB clr: GOTO 120 IF a >= ee + 1 THEN a = 1: GOSUB clr: GOTO 120 GOTO 130 ' *********** end of up and down mouse *********** '************ where mouse picks off of menu ************** 180 b = (outreg.dx \ 14 - 4) IF b = 2 THEN : mm$ = "P": GOTO 197 IF b = 1 THEN mm$ = "H": GOTO 210 IF b = 3 THEN an$ = "p": GOTO 191: 'play IF b = 4 THEN an$ = "s": GOTO 191' 'stop IF b = 5 THEN an$ = "e": GOTO 191: 'open IF b = 6 THEN an$ = "c": GOTO 191: 'close IF b = 7 THEN CLS : END GOTO clock '************ end of mouse **************** 190 IF LEN(nn$) = 2 THEN GOTO updown '196 an$ = RIGHT$(nn$, 1) 191 IF an$ = "s" OR an$ = "S" THEN GOSUB erlines: GOSUB 800: GOSUB stp: pp = 0: GOTO clock IF an$ = "p" OR an$ = "P" THEN GOSUB stp: GOSUB erlines: tt = TIMER: GOSUB pla: pp = 1: GOTO clock IF an$ = "e" OR an$ = "E" THEN GOSUB stp: GOSUB opn: LOCATE 12, 5: PRINT "PRESS C TO CLOSE": GOSUB erlines: GOSUB 800: pp = 0: GOTO clock IF an$ = "q" OR an$ = "Q" THEN CLS : END IF an$ = "c" OR an$ = "C" THEN GOSUB clo: : LOCATE 12, 5: PRINT "READING DISK, PLEASE WAIT": SLEEP 9: LOCATE 12, 5: PRINT SPACE$(32): a = 0: ee = 100: pp = 0: GOTO main IF an$ = CHR$(13) AND pg <> 0 THEN GOSUB stp: GOSUB erlines: tt = TIMER: GOSUB pla: pp = 1: GOTO clock '**** volume ******* below **** 192 mm$ = RIGHT$(nn$, 1) IF ASC(mm$) = 45 THEN GOTO 194 IF ASC(mm$) = 43 THEN GOTO 193 GOTO clock 193 GOSUB hide LOCATE 15, 57: COLOR 11: PRINT (ddd \ 17); IF ddd >= 255 THEN ddd = 255 ELSE ddd = ddd + 17 '** ddd is how much louder COLOR 3 GOSUB volume GOSUB show 'mouse GOTO clock 194 GOSUB hide LOCATE 15, 57: COLOR 11: PRINT (ddd \ 17): IF ddd <= 17 THEN ddd = 17 ELSE ddd = ddd - 17 '** ddd is how much quieter COLOR 3 GOSUB volume GOSUB show 'mouse GOTO clock '**************** down and up KEYS ******************* updown: 196 mm$ = RIGHT$(nn$, 1) 197 IF mm$ = "P" THEN a = a + 1: GOSUB stp: GOSUB erlines: pp = 0: ELSE 210 '***********DOWN 200 LOCATE 18, 55: COLOR 11: PRINT "Stopped": COLOR 7 FOR x = 0 TO 50000: NEXT '*** speed control LOCATE a + 1, 3: COLOR 3: PRINT " "; b$; a + c - 1; : LOCATE a + 1, 15: PRINT a$(a + c - 1); IF c + a > ee THEN c = 0: a = 1: GOSUB clr: GOTO 120 IF c + a > 100 THEN c = 0: a = 1: GOSUB clr: GOTO 120 IF a >= 21 THEN c = c + 20: a = 1: GOSUB clr: GOTO 120 IF a >= ee + 1 THEN a = 1: GOSUB clr: GOTO 120 GOTO 130 210 IF mm$ = "H" THEN a = a - 1: GOSUB stp: GOSUB erlines: pp = 0: ELSE GOTO clock'*****************UP LOCATE 18, 55: COLOR 11: PRINT "Stopped": COLOR 7 FOR x = 0 TO 50000: NEXT '** ******* speed control 220 LOCATE a + 3, 2: COLOR 3: PRINT " "; b$; a + c + 1; : LOCATE a + 3, 15: PRINT a$(a + c + 1); dd = (ee \ 20) IF a = 0 AND c >= 20 THEN c = c - 20: a = 20: GOSUB clr: GOTO 120 IF a = 0 AND ee <= 20 THEN a = ee: GOSUB clr: GOTO 120 IF a = 0 THEN c = dd * 20: a = ee - c: GOSUB clr: GOTO 120 GOTO 130 ' ******* end down and up ************* '************** down open ***************** opn: GOSUB clr 'erase POKE ADD& + 2, &HC POKE ADD& + 26, 0 '0 = open POKE ADD& + 14, ER ' right 2 of ofset +26 = where the command is POKE ADD& + 15, rr 'left 2 of offset POKE ADD& + 16, DDS 'right 2 of seg POKE ADD& + 17, fd 'left 2 of seg GOSUB 350 RETURN '*************** down close ****************** clo: GOSUB clr '**erase POKE ADD& + 2, &HC POKE ADD& + 14, ER ' right 2 of ofset +26 = where the command is POKE ADD& + 15, rr 'left 2 of offset POKE ADD& + 16, DDS 'right 2 of seg POKE ADD& + 17, fd 'left 2 of seg POKE ADD& + 26, 5 '5=close GOSUB 350 RETURN '*********** down is stop ********************** stp: POKE ADD& + 2, &H85 GOSUB 350 RETURN '************* down is play ******************** pla: w = a + c ws = song(w) ww = ws \ 256 ls = ww \ 256 cs = ww MOD 256 rs = ws MOD 256 'right 2 numbers bws = hlong - song(w) ' this is used for all the rest of the songs bww = bws \ 256 bls = bww \ 256 bcs = bww MOD 256 brs = bws MOD 256 POKE ADD& + 2, &H84 '&h84 = play &h85 = stop FOR x = 3 TO 14: POKE ADD& + x, 0: NEXT POKE ADD& + 14, rs 'start POKE ADD& + 15, cs 'start POKE ADD& + 16, ls 'start POKE ADD& + 17, 0 POKE ADD& + 18, brs POKE ADD& + 19, bcs POKE ADD& + 20, bls POKE ADD& + 21, 0 POKE ADD& + 22, 0 POKE ADD& + 26, 5 '5=close FOR x = 22 TO 32: POKE ADD& + x, 0: NEXT GOSUB 350 RETURN END 350 DEF SEG = ds POKE ADD& + 27, 0 inreg.ax = &H1510 inreg.bx = ADD& inreg.cX = dr inreg.dx = &H0 CALL interrupt(&H2F, inreg, outreg) inputreg.ax = 3 RETURN END where: inreg.ax = 3 inreg.bx = 0 inreg.cX = 0 inreg.dx = 0 CALL interrupt(&H33, inreg, outreg) RETURN 500 IF an$ = "P" OR an$ = "p" THEN 501 ELSE 130 501 RETURN 503 LOCATE a + 1, 2: COLOR 3: PRINT " "; b$; a + c - 1; : LOCATE a + 1, 15: PRINT a$(a + c - 1): IF a + c >= ee + 1 THEN a = 1: c = 0: GOSUB 515 IF a = 21 THEN c = c + 20: a = 1: GOSUB clr: GOSUB 515 IF a = 41 THEN c = c + 20: a = 1: GOSUB clr: GOSUB 515 IF a = 61 THEN c = c + 20: a = 1: GOSUB clr: GOSUB 515 IF a = 81 THEN c = c + 20: a = 1: GOSUB clr: GOSUB 515 COLOR 11: LOCATE a + 2, 3: PRINT "--> "; b$; a + c; LOCATE a + 2, 12: PRINT " "; a$(a + c): COLOR 3: tt = TIMER GOSUB stp: GOSUB pla GOTO clock 510 GOTO 130 515 COLOR 3, 0 IF ee < 21 THEN xX = ee ELSE xX = 21 FOR x = 2 TO xX: LOCATE x + 1, 7: PRINT b$; x - 1 + c LOCATE x + 1, 15: PRINT a$(x - 1 + c) NEXT RETURN clr: FOR x = 2 TO 23: LOCATE 0 + x, 2: PRINT SPACE$(34): NEXT: 'this erases the song list RETURN erlines: LOCATE 18, 45: PRINT SPACE$(34) LOCATE 19, 45: PRINT SPACE$(34) 'this erase the times of disk and song RETURN 800 LOCATE 18, 55: COLOR 11: PRINT "Stopped": COLOR 7 RETURN hide: '********** hides the cursor ************ inreg.ax = 2 CALL interrupt(&H33, inreg, outreg) RETURN show: '***** show mouse ********** inreg.ax = 1 CALL interrupt(&H33, inreg, outreg) RETURN mice: CALL interrupt(&H33, inreg, outreg) RETURN volume: POKE ADD& + 2, &HC POKE ADD& + 14, ER ' right 2 of ofset +26 = where the command is POKE ADD& + 15, rr 'left 2 of offset POKE ADD& + 16, DDS 'right 2 of seg POKE ADD& + 17, fd 'left 2 of seg POKE ADD& + 26, 3 '3 audio control POKE ADD& + 27, 0 'channel 0 POKE ADD& + 28, ddd ' how loud POKE ADD& + 29, 1 'channel 1 POKE ADD& + 30, ddd ' how loud POKE ADD& + 31, 2 'channel 2 POKE ADD& + 32, ddd ' how loud POKE ADD& + 33, 3 'channel 3 POKE ADD& + 34, ddd ' how loud GOSUB 350 ss = ss - 50 RETURN