10 REM SDF.ECB 15 LET B=51440: LET O=3 20 DIM A$(50) 30 LET A$=" ": LET A$=A$+A$ 40 PRINT "&K" 50 CURSOR 1,10: PRINT "*#* SDF Sound Generator Program *#*"; 60 CURSOR O,1 70 PRINT " 0 1 2 3 4 5 6 7 8 9 A B C D E F" 80 FOR X=B TO B+15 90 LET M=PEEK(X) 100 IF M>15 THEN LET U=INT(M/16) ELSE LET U=0 110 IF U>0 THEN LET L=M-(U*16) ELSE LET L=M 120 IF U>9 THEN LET U=U+7 130 IF L>9 THEN LET L=L+7 140 CURSOR 1+O,(3*(X-B))+1: PRINT CHR(U+48);CHR(L+48); 150 NEXT X 160 CURSOR 11,10: PRINT A$; 170 CURSOR 12,10: PRINT A$; 180 CURSOR 10,10 190 INPUT ,(1,0)"Select BASE + ? ---=>",I$ 200 SET DS=0 210 IF LEN(I$)=0 THEN 80 220 LET I=ASC(I$(1,1))-48 230 IF I<0 OR I>22 THEN 10 240 IF I>9 AND I<17 THEN 10: REM ...Only keep 0-9,A-F 250 IF I>16 AND I<23 THEN LET I=I-7 260 CURSOR 2+O,1: PRINT A$; 270 CURSOR 2+O,3*(I)+1: PRINT "=^="; 280 LET R=B+I: REM .....BASE Address for SDF memory 290 CURSOR 11,10 300 INPUT ,(1,0)"Input top 1/2 of DATA byte ---=>",B$ 310 GOSUB 370: IF I>0 THEN LET U=(I*16) ELSE LET U=0 320 CURSOR 12,10 330 INPUT ,(1,0)"Input bottom 1/2 of DATA byte ---=>",B$ 340 GOSUB 370: LET L=I 350 POKE R,U+L 360 GOTO 60 370 IF LEN(I$)=0 THEN RETURN 380 LET I=ASC(B$(1,1))-48 390 IF I<0 OR I>22 THEN RETURN 400 IF I>9 AND I<17 THEN RETURN : REM ...Only keep 0-9,A-F 410 IF I>16 AND I<23 THEN LET I=I-7 420 RETURN 430 END