Morse Code Converter for QB64 Demo 5by qbguy (no login)' This code was originally posted by me at ' http://www.network54.com/Forum/178387/message/1180559131/Morse+Code ' ' Originally, it used a real SUB rather than a GOSUB ' ' Usage: ' ' Enter the filename of a file full of English (or another language if ' you want) text. It will beep the file in Morse Code through the PC Speaker ' [Actually, QB64 uses the real speaker] ' ' ' Example data file: ' TWAS BRILLIG AND THE SILTHY TOVES ' DID GYRE AND GIMBLE IN THE WABE ' ALL MIMSY WERE THE BORROGROVES ' AND THE MOME-RATHS OUTGRABE DIM CHAR(57), SIZE(57) FOR X = 0 TO 56 READ CHAR(X) NEXT FOR X = 0 TO 56 READ SIZE(X) NEXT DATA 18,00,00,00,00,30,45 DATA 45,00,00,51,33,42, 9,31,30,28 DATA 24,16, 0, 1, 3, 7,15, 7,00,00 DATA 17,00,12,22, 2, 1, 5, 1, 0, 4 DATA 3, 0, 0,14, 5, 2, 3, 1 ,7, 6 DATA 11, 2, 0, 1, 4, 8, 6, 9,13, 3 DATA 6,00,00,00,00, 6, 6 DATA 6,00,00, 6, 6, 6, 5, 5, 5, 5 DATA 5, 5, 5, 5, 5, 5, 5, 6,00,00 DATA 5,00, 6, 6, 2, 4, 4, 3, 1, 4 DATA 3, 4, 2, 4, 3, 4, 2, 2, 3, 4 DATA 4, 3, 3, 1, 3, 4, 3, 4, 4, 4 IF COMMAND$ = "" THEN INPUT "FILE? ", FILE$ ELSE FILE$ = COMMAND$ OPEN FILE$ FOR INPUT AS #1 WHILE NOT EOF(1) INPUT #1, A$ FOR X = 1 TO LEN(A$) B$ = UCASE$(MID$(A$, X, 1)) ASCII=ASC(B$): GOSUB MORSE NEXT PRINT " " WEND END MORSE: BITS = 0 IF ASCII = 32 THEN SLEEP 1: PRINT " " RETURN END IF IF ASCII > 33 AND ASCII < 91 THEN CODE = CHAR(ASCII - 34) BITS = SIZE(ASCII - 34) END IF FOR I = 1 TO BITS IF (CODE MOD 2) THEN SOUND 500, 9: PRINT "-"; ELSE SOUND 500, 3: PRINT "."; SLEEP 1 CODE = INT(CODE / 2) NEXT IF BITS THEN T = TIMER: D = .5 WHILE T + D >= TIMER: WEND PRINT "/"; END IF RETURN |