I wrote this program in Qbasic to title tracks on Sharp's MD-MT15. My program is based upon the (Sharp titling system from Thomas Meier) and requires his hardware. There is only one problem: Everytime the PC enters a character for you, you have to press the Enter/sync button on the MD. (Everytime you have to press it, the program gives you an audible signal.)
' TitleAid MD-MT15 ' Program for remote control and title input on the ' Sharp MD-Recorder MD-MT15 ' Trucki, Germany, M�nchen, 10.07.2000 / QuickBasic 1.1 ' with help of Thomas H. Meier�s TitleAid 70x ' ' 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 CONST none% = &HF8 CONST mode% = &HF7 CONST disp% = &HF6 CONST bass% = &HF5 CONST minus% = &HF4 CONST plus% = &HF3 CONST rew% = &HF2 CONST forw% = &HF1 CONST stopp% = &HF0 ' Get PrinterPort Address DEF SEG = 64 ' BIOS - DataSegment lptdat% = PEEK(&H9) * 256 + PEEK(&H8) ' get address of LPT1: DEF SEG = 0 ' Return to 0-Segment maxloop = 10 PRINT "Please stand by !" PRINT "Calibrating delay loop "; calib: PRINT "."; 'du$ = INKEY$ start = TIMER FOR i = 1 TO maxloop: NEXT i finish = TIMER gone = finish - start ' choose a good period: IF gone < 3! THEN maxloop = maxloop * 10: GOTO calib cycles = maxloop / gone delay = INT(cycles / 20) ' one keytouch takes 2*1/10sec ' Init hardware of MD-Remote ' none% = &HF8 send% = none% ' &HFx for voltage supply GOSUB sendremote ' &Hx8 for "No key pressed" char$ = "X" WHILE char$ <> "E" CLS PRINT "Minimal Control (Delay="; delay; ")" PRINT "===============" PRINT "Stop s Playmode p" PRINT "Forward -> v Bass b" PRINT "Back <- z Display d" PRINT "Plus + Minus -" PRINT "End E Write Title w" IF silent = 0 THEN PRINT "Quiet Mode is off: press q "; IF silent = 1 THEN PRINT "Quiet Mode is on: press q "; DO ' wait for key char$ = INKEY$ LOOP UNTIL char$ <> "" SELECT CASE char$ CASE "s" send% = stopp% GOSUB sendremote CASE "v" send% = forw% GOSUB sendremote CASE "z" send% = rew% GOSUB sendremote CASE "+" send% = plus% GOSUB sendremote CASE "-" send% = minus% GOSUB sendremote CASE "b" send% = bass% GOSUB sendremote CASE "d" send% = disp% GOSUB sendremote CASE "p" send% = mode% GOSUB sendremote CASE "w" GOSUB WriteTitle CASE "q" IF silent = 0 THEN silent = 1 ELSE silent = 0 CASE "E" send% = &HF8 GOSUB sendremote CLS END END SELECT WEND ' end of main loop ' *************** subroutines ********************* sendremote: OUT (lptdat%), send% ' press key ... FOR i = 1 TO delay: NEXT i OUT (lptdat%), none% ' ... and release it ! FOR i = 1 TO delay: NEXT i RETURN WriteTitle: name$ = "" CLS PRINT CHR$(7) PRINT "Press MDs EDIT key for Track/Disk name" PRINT "Press MDs ENTER key for start input" PRINT "Press MDs ENTER key if you hear / see signal" PRINT "Please type in the name (max. 100 chars)" PRINT "---------- (Display length)" DO DO du$ = INKEY$ LOOP UNTIL du$ <> "" 'PRINT du$, 'a$ = du$ + " " 'PRINT ASC(a$) IF du$ = CHR$(8) THEN name$ = LEFT$(name$, LEN(name$) - 1): GOTO backout IF du$ = CHR$(13) THEN GOTO goon '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$ backout: LOCATE , 1 PRINT name$ + " "; END IF LOOP UNTIL LEN(name$) = 100 goon: PRINT PRINT "Sending (look at Sharps display!)"; char% = 0 FOR i% = 1 TO LEN(name$) oldchar% = char% display% = 0 du% = ASC(MID$(name$, i%, 1)) ' blank char IF du% = 32 THEN char% = 5: GOTO further ' Numbers 0 to ` IF du% > 47 AND du% < 58 THEN num% = du% - 49: char% = 0: display% = 2: GOTO further IF du% > 32 AND du% < 45 THEN num% = du% - 23: char% = 0: display% = 2: GOTO further IF du% > 58 AND du% < 65 THEN num% = du% - 33: char% = 0: display% = 2: GOTO further IF du% > 94 AND du% < 97 THEN num% = du% - 63: char% = 0: display% = 2: GOTO further IF du% = 46 THEN num% = 4: char% = 2: GOTO further IF du% = 47 THEN num% = 2: char% = 2: GOTO further IF du% = 45 THEN num% = 3: char% = 2: GOTO further ' Capitals A to Z IF du% > 64 AND du% < 91 THEN num% = du% - 65: char% = 0: GOTO further ' small chars a to z IF du% > 96 AND du% < 123 THEN display% = 1 num% = du% - 97 char% = 0 GOTO further END IF further: IF display% > 0 THEN FOR j% = 1 TO display% send% = disp% GOSUB sendremote NEXT j% END IF IF char% = 0 THEN FOR j% = 1 TO num% send% = forw% GOSUB sendremote NEXT j% END IF IF char% = 2 THEN FOR j% = 1 TO num% send% = rew% GOSUB sendremote NEXT j% END IF IF char% = 5 THEN send% = plus% GOSUB sendremote END IF REM +++++++++++++++++R�ckstellen IF char% = 5 THEN GOTO 210 PRINT MID$(name$, i%, 1); IF silent = 1 GOTO 190 ELSE PLAY "L21cl21d" 190 a = TIMER + .7 200 IF TIMER > a THEN GOTO 210 ELSE GOTO 200 210 IF char% = 0 THEN FOR j% = 1 TO num% send% = rew% GOSUB sendremote NEXT j% END IF IF char% = 2 THEN FOR j% = 1 TO num% send% = forw% GOSUB sendremote NEXT j% END IF IF display% = 2 THEN send% = disp% GOSUB sendremote END IF IF display% = 1 THEN FOR j% = 1 TO 2 send% = disp% GOSUB sendremote NEXT j% END IF REM +++++++++++++++++Ende R�ckstellen NEXT i% PRINT PRINT CHR$(7) PRINT "Press Edit on Sharp, then any key on PC"; SLEEP RETURN