10 REM 20 REM (c) TMTLOGIC 30 REM Updated 31/08/2023 by Poulette73 40 REM 50 NMAX=12:REM Number maximum of Webradios 60 REM 70 DIM NAME$(NMAX):DIM IP1(NMAX):DIM IP2(NMAX):DIM IP3(NMAX):DIM IP4(NMAX):DIM PORT(NMAX):DIM STREAM$(NMAX) 80 REM 90 FOR A=1 TO NMAX 100 READ NAME$:READ IP1:READ IP2:READ IP3:READ IP4:READ PORT:READ STREAM$ 110 NAME$(A)=NAME$:IP1(A)=IP1:IP2(A)=IP2:IP3(A)=IP3:IP4(A)=IP4:PORT(A)=PORT:STREAM$(A)=STREAM$ 120 NEXT 130 CR=0:REM CURRENT RADIO 140 CR=CR+1 150 IF CR>NMAX THEN CR=1 160 MODE 2 170 INK 1,26 180 LOCATE 19,1:PRINT"-------- TMTLOGIC R/SF3 WEBRADIO --------" 190 LOCATE 29,4:PRINT "You are listening to..." 200 LOCATE 4,9:PRINT "Number":LOCATE 27,9:PRINT "Webradio":LOCATE 60,9:PRINT "IP:PORT" 210 LOCATE 2,11:PRINT CR;" / ";NMAX:LOCATE 27,11:PRINT NAME$(CR) 220 LOCATE 50,11:PRINT IP1(CR);".";IP2(CR);".";IP3(CR);".";IP4(CR);":";PORT(CR) 230 LOCATE 20,23:PRINT "... Press for next Webradio ..." 240 TESTPORT$=HEX$(PORT(CR)):PORTHIGH$="&"+LEFT$(TESTPORT$,2):PORTLOW$="&"+RIGHT$(TESTPORT$,2) 250 IF LEN(TESTPORT$)=2 THEN porthigh$="&0" 260 PORTHIGH=VAL(PORTHIGH$):PORTLOW=VAL(PORTLOW$) 270 RP=0 280 v = 101 290 GOSUB 410:REM INIT WEBRADIO 300 GOSUB 490:REM GET SOCKET NUMBER 310 GOSUB 530:REM CHECK IF SOCKET IS ALREAY OPEN 320 IF RP = 0 THEN GOTO 340 330 GOSUB 660:REM CLOSE SOCKET 340 GOSUB 750:REM OPEN SOCKET 350 GOSUB 920:REM SEND URL 360 GOSUB 1100:REM READ SOCKET AND COPY TO MP3 370 K$=INKEY$ 380 IF K$=" " THEN GOTO 140 390 IF K$="v" THEN GOSUB 1330 400 GOTO 360 410 REM 420 REM 430 REM 440 OUT &FD41,0 450 OUT &FD42,5 460 OUT &FD41,40 470 GOSUB 1190:REM response ARM 480 RETURN 490 REM 500 REM 510 s=0 520 RETURN 530 REM 540 REM 550 REM 560 OUT &FD41,7 570 OUT &FD49,17 580 OUT &FD49,s 590 OUT &FD41,90 600 GOSUB 1190:REM response ARM 610 I = INP(&FD49) 620 IF I = 0 THEN RP=1:RETURN: REM is already open 630 IF I = 2 THEN PRINT"WIFI IS OFFLINE !!":END 640 RP=0 650 RETURN 660 REM 670 REM 680 OUT &FD41,7 690 OUT &FD49,10 700 OUT &FD49,s 710 OUT &FD41,90 720 GOSUB 1190:REM response ARM 730 GOSUB 1260:REM response wifi 740 RETURN 750 REM 760 REM 770 OUT &FD41,7 780 OUT &FD49,5 790 REM IP ADDRESS: 800 OUT &FD49,IP1(CR) 810 OUT &FD49,IP2(CR) 820 OUT &FD49,IP3(CR) 830 OUT &FD49,IP4(CR) 840 REM port number High Low in hexadeximaal (9000 decimal) 850 OUT &FD49,PORTHIGH 860 OUT &FD49,PORTLOW 870 OUT &FD49,s 880 OUT &FD41,90 890 GOSUB 1190:REM response ARM 900 GOSUB 1260:REM response wifi 910 RETURN 920 REM 930 REM 940 REM GET %s HTTP/1.1\r\nHost: %i.%i.%i.%i\r\nConnection: close\r\n\r\n 949 rem 950 d$="GET "+STREAM$(CR)+" HTTP/1.1"+CHR$(13)+CHR$(10)+CHR$(13)+CHR$(10) 950 d$="GET "+STREAM$(CR)+" HTTP/1.1"+CHR$(13)+CHR$(10)+"Host: "+str$(ip1(cr))+"."+str$(ip2(cr))+"."+str$(ip3(cr))+"."+str$(ip4(cr))+CHR$(13)+CHR$(10)+"Connection: close"+CHR$(13)+CHR$(10)+CHR$(13)+CHR$(10) 960 OUT &FD41,7 970 OUT &FD49,8 980 OUT &FD49,s 990 l = LEN(d$) 1000 FOR t = 1 TO l 1010 c = ASC(LEFT$(MID$(d$,t),1)) 1020 REM 1030 OUT &FD49,c 1040 NEXT 1050 OUT &FD41,90 1060 GOSUB 1190:REM response ARM 1070 GOSUB 1260:REM response wifi 1080 RETURN 1090 REM Audio stream loop 1100 REM copy incomming socket data to mp3 stream 1110 REM 1120 OUT &FD41,7 1130 OUT &FD49,21 1140 OUT &FD49,s 1150 OUT &FD41,90 1160 GOSUB 1190:REM response ARM 1170 GOSUB 1260:REM response wifi 1180 RETURN 1190 REM check response ARM 1200 REM 1210 I = INP(&FD41) 1220 IF I = 1 THEN GOTO 1210 1230 IF I = 0 THEN RETURN 1240 PRINT"ARM Error ":END 1250 RETURN 1260 REM check response wifi 1270 REM 1280 I = INP(&FD4E) 1290 IF I = 1 THEN GOTO 1280 1300 IF I = 0 THEN RETURN 1310 PRINT"WIFI ERROR":END 1320 RETURN 1330 v=v-1 1340 OUT &FD41,0 1350 OUT &FD42,1 1360 OUT &FD42,v 1370 OUT &FD41,41 1380 RETURN 1390 END 1400 DATA "CPCSCENE",65,21,139,147,8450,"/radio.mp3" 1410 DATA "PIGPEN",89,147,108,34,8000,"/radio.mp3" 1420 DATA "DANCE UK",80,85,84,114,8024,"/stream" 1430 DATA "ELDORADIO",81,92,238,33,80,"/stream" 1440 DATA "SUNSHINE",195,56,193,129,8100,"/stream" 1450 DATA "DANKO",185,161,204,105,80,"/mr6g.mp3" 1460 DATA "192 RADIO",194,88,105,64,8192,"/stream" 1470 DATA "MSX RADIO",134,122,53,190,8010,"/radio.mp3" 1480 DATA "CIVIL RADIO",92,119,121,107,8000,"/stream" 1490 DATA "TRAXX FM",185,74,70,25,80,"/traxx025-1.mp3" 1500 DATA "1000 HITS",91,121,155,204,8022,"/stream" 1510 DATA "ROLAND",81,90,036,133,8000,"/rolandradio"