' TitleAid 70X ' Program for remote control and ' title input on the ' Sharp MD-Recorder MD-MS701 ' Thomas H. Meier ' Germany, Mannheim, 20.07.1999 ' PBasic 5 ' Version 1.0 ' Hardware from www.mannheim-netz.de ' /user/meierth/MD70X.HTML ' Key: Resist. output value ' none pressed 212k &HF8 ' Play Mode 72k &HF7 ' Display 50k5 &HF6 ' Bass 35k5 &HF5 ' Minus-Key (-) 25k5 &HF4 ' Plus-Key (+) 18k6 &HF3 ' Rewind <-- 14k &HF2 ' Forward --> 10k &HF1 ' Stop 6k8 &HF0 none = &HF8 mode = &HF7 disp = &HF6 bass = &HF5 minus= &HF4 plus = &HF3 rew = &HF2 forw = &HF1 stopp= &HF0 ' PrinterPort Address lptdat = &H8078 delay = 3 ' used for interface output char = false oldchar= false disply = false ' Init hardware of remote interface ' none = &HF8 send = none ' &HFx for voltage supply GOSUB 2000 '&Hx8 for "No key pressed" 'sound 57,20: sound 41,20: sound 60,20 'sound 61,20: sound 62,20: sound 63,20 char$ = "X" WHILE char$ <> "E" CLS PRINT "TitleAid 70X (C)1999 Th. Meier" PRINT "==============================" PRINT "Stop s Playmode/Ins p" PRINT "Forward -> v Bass/Del b" PRINT "Back <- z Display d" PRINT "Plus + Minus -" PRINT "End E Write Title w"; repeat char$ = INKEY$ until char$ <> "" if char$="s" then send=stopp:GOSUB 2000 if char$="v" then send=forw :GOSUB 2000 if char$="z" then send=rew :GOSUB 2000 if char$="+" then send=plus :GOSUB 2000 if char$="-" then send=minus:GOSUB 2000 if char$="b" then send=bass :GOSUB 2000 if char$="d" then send=disp :GOSUB 2000 if char$="p" then send=mode :GOSUB 2000 if char$="w" then GOSUB 3000 if char$ = "E" then send = &HF8 ' send "no key pressed" GOSUB 2000 CLS END ENDIF WEND 'end of main loop '************ subroutines **************** 2000 OUT (lptdat), send ' press key ... FOR i2 = 1 TO delay: NEXT i2 OUT (lptdat), none ' ... and release it ! FOR i2 = 1 TO delay: NEXT i2 RETURN 'line 2000 3000 name$ = "" CLS rem sound 57,20: sound 41,20: sound 60,20 rem sound 61,20: sound 62,20: sound 63,20 PRINT "Press MDs EDIT key for Track/Disk name" PRINT "Press MDs ENTER key for start input" PRINT "Please type in the name (max. 100 char)" PRINT "---------- (Display length)" repeat repeat du$ = INKEY$ UNTIL du$ <> "" IF du$ = CHR$(8) THEN name$ = LEFT$(name$, LEN(name$) - 1) GOTO 1100 endif IF du$ = CHR$(13) THEN GOTO 1200 'Filtering Characters and Numbers: IF (ASC(UCASE$(du$)) > 31 AND ASC(UCASE$(du$)) < 91) OR (ASC(du$) = 95 OR ASC(du$) = 96) THEN name$ = name$ + du$ 1100 locate 8,1 print "Actual length of name: ";len(name$);" "; LOCATE 5,1 print spc(len(name$))+" " LOCATE 5, 1,1 PRINT name$; ENDIF UNTIL LEN(name$) = 100 1200 cls PRINT "Sending (look at Sharps display)" char = false FOR tran = 1 TO LEN(name$) disply = false : oldchar = char du = ASC(MID$(name$, tran, 1)) if du=32 then print chr$(22); else PRINT chr$(du); ' blank char : IF du = 32 THEN num = 1: char = false: GOTO 1300 ' Numbers 0 to 9 IF du > 47 AND du < 58 THEN num = du - 20: char = false: GOTO 1300 ' Capitals A to Z IF du > 64 AND du < 91 THEN num = du - 63: char = false: GOTO 1300 ' small chars a to z IF du > 96 AND du < 123 THEN disply = true : char = false num = du - 95 GOTO 1300 ENDIF IF du > 33 AND du < 38 THEN num = du - 17: char = true: GOTO 1300 ' all other chars: char = true if du = 33 then num = 14 ' ! if du = 38 then num = 11 ' & if du = 39 then num = 3 ' ' if du = 40 then num = 9 ' ( if du = 41 then num = 10 ' ) if du = 42 then num = 21 ' ) if du = 43 then num = 7 ' + if du = 44 then num = 5 ' , if du = 45 then num = 6 ' - if du = 46 then num = 4 ' . if du = 47 then num = 2 ' / if du = 58 then num = 8 ' : if du = 59 then num = 16 ' ; if du = 60 then num = 12 ' < if du = 61 then num = 22 ' = if du = 62 then num = 13 ' > if du = 63 then num = 15 ' ? if du = 64 then num = 23 ' @ if du = 95 then num = 24 ' _ if du = 96 then num = 25 ' ` 1300 IF (char AND NOT oldchar) OR (NOT char AND oldchar) THEN print sound 14,20: sound 4,20 PRINT "Press Sharp Character key, any key on PC"; wait ENDIF IF not char THEN IF num <= 18 THEN FOR j = 1 TO num send = plus GOSUB 2000 NEXT j ELSE num = 38 - num FOR j = 0 TO num send = minus GOSUB 2000 NEXT j ENDIF ENDIF IF char THEN IF num <= 12 THEN FOR j = 1 TO num send = plus GOSUB 2000 NEXT j ELSE num = 26 - num FOR j = 0 TO num send = minus GOSUB 2000 NEXT j ENDIF ENDIF IF disply THEN send = disp GOSUB 2000 ENDIF send = forw GOSUB 2000 NEXT tran PRINT sound 4,20 : sound 14,20 PRINT "Press Enter on Sharp, then any key on PC"; wait RETURN 'line 3000