Morse Code Converter for QB64 Demo 5

by 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

Posted on Jan 27, 2008, 9:14 AM

Respond to this message   

Return to Index