'=========================================================================== ' Subject: ENCODE/DECODE MESSAGE Date: 07-17-96 (19:37) ' Author: Darryl Schneider Code: QB, QBasic, PDS ' Origin: fish2@datanet.ab.ca Packet: TEXT.ABC '=========================================================================== 'QCode - Version 1.0 ' 'Messages can be encoded and decoded 'with QCode. A password is required to 'view a message, and is specified when 'writing a message. Make sure everything 'is in the C:\ directory and you will 'have no problem. Enjoy! ' 'Written by Darryl Schneider 'fish2@datanet.ab.ca 'The QBasic Zone 'http://www.geocities.com/SiliconValley/8191/ ' SCREEN 12 'set screen mode to 12 and DEFSTR A-B, D-M, R, U 'give some standard variable DEFINT N-Q, S-T, V-W 'settings DEFLNG X-Z DIM CURSOR(1 TO 500) 'draw the triangle cursor LINE (50, 50)-(50, 66), 3 LINE (50, 50)-(66, 58), 3 LINE (50, 66)-(66, 58), 3 PAINT (55, 55), 6, 3 GET (50, 50)-(66, 66), CURSOR ENTER = CHR$(13) 'define all of the arrow keys UP = CHR$(0) + CHR$(72) DOWN = CHR$(0) + CHR$(80) LEFT = CHR$(0) + CHR$(75) RIGHT = CHR$(0) + CHR$(77) MAINMENU: 'just look at the label to CLS 'find out what this section LINE (160, 48)-(480, 230), 11, BF 'is about LINE (160, 48)-(480, 63), 12, BF LOCATE 4, 38: COLOR 14: PRINT "QCode" COLOR 15 LOCATE 7, 35: PRINT "Write a message" LOCATE 9, 35: PRINT "View a message" LOCATE 11, 35: PRINT "About QCode" LOCATE 13, 35: PRINT "Quit" MM1: 'write a message LINE (240, 70)-(270, 220), 11, BF PUT (250, 95), CURSOR DO A1 = INKEY$ IF A1 = ENTER THEN GOSUB WRITEMESSAGE IF A1 = UP THEN GOSUB MM4 IF A1 = DOWN THEN GOSUB MM2 LOOP MM2: 'view a message LINE (240, 70)-(270, 220), 11, BF PUT (250, 126), CURSOR DO A2 = INKEY$ IF A2 = ENTER THEN GOSUB VIEWMESSAGE IF A2 = UP THEN GOSUB MM1 IF A2 = DOWN THEN GOSUB MM3 LOOP MM3: 'go to the about screen LINE (240, 70)-(270, 220), 11, BF PUT (250, 159), CURSOR DO A3 = INKEY$ IF A3 = ENTER THEN GOSUB ABOUT IF A3 = UP THEN GOSUB MM2 IF A3 = DOWN THEN GOSUB MM4 LOOP MM4: 'quit LINE (240, 70)-(270, 220), 11, BF PUT (250, 191), CURSOR DO A4 = INKEY$ IF A4 = ENTER THEN GOSUB QUIT IF A4 = UP THEN GOSUB MM3 IF A4 = DOWN THEN GOSUB MM1 LOOP WRITEMESSAGE: CLS MNAME = "" MPASSWORD = "" MESSAGE = "" MESSAGE1 = "" SSAVE = 0 OPEN "C:\UNTITLED.MSG" FOR OUTPUT AS #1 WRITE #1, MPASSWORD WRITE #1, MESSAGE CLOSE #1 OPEN "C:\UNTITLED.MSG" FOR OUTPUT AS #2 LINE (0, 0)-(640, 17), 12, BF COLOR 14 LOCATE 1, 28: PRINT "QCode - Writing a Message" COLOR 15 LOCATE 3, 10: INPUT "Message Name (max. 8 characters): ", MNAME LOCATE 4, 10: INPUT "Message Password: ", MPASSWORD MNAME = UCASE$(MNAME) MPASSWORD = UCASE$(MPASSWORD) 'create a message name and WRITE #2, MPASSWORD 'password LOCATE 6, 10: PRINT "Enter Message: " N1 = 8 N2 = 1 NEXTLETTER1: DO 'message is entered B1 = UCASE$(INKEY$) IF B1 = "A" THEN B2 = "^" 'these are all of the character IF B1 = "B" THEN B2 = "Z" 'representations IF B1 = "C" THEN B2 = "<" IF B1 = "D" THEN B2 = ":" IF B1 = "E" THEN B2 = "W" IF B1 = "F" THEN B2 = "Y" IF B1 = "G" THEN B2 = "~" IF B1 = "H" THEN B2 = "#" IF B1 = "I" THEN B2 = "N" IF B1 = "J" THEN B2 = "F" IF B1 = "K" THEN B2 = "I" IF B1 = "L" THEN B2 = "." IF B1 = "M" THEN B2 = "P" IF B1 = "N" THEN B2 = "X" IF B1 = "O" THEN B2 = "*" IF B1 = "P" THEN B2 = "&" IF B1 = "Q" THEN B2 = "V" IF B1 = "R" THEN B2 = "H" IF B1 = "S" THEN B2 = "C" IF B1 = "T" THEN B2 = "-" IF B1 = "U" THEN B2 = "%" IF B1 = "V" THEN B2 = "L" IF B1 = "W" THEN B2 = "E" IF B1 = "X" THEN B2 = "A" IF B1 = "Y" THEN B2 = "B" IF B1 = "Z" THEN B2 = "?" IF B1 = "1" THEN B2 = "9" IF B1 = "2" THEN B2 = "6" IF B1 = "3" THEN B2 = "4" IF B1 = "4" THEN B2 = "3" IF B1 = "5" THEN B2 = "1" IF B1 = "6" THEN B2 = "7" IF B1 = "7" THEN B2 = "8" IF B1 = "8" THEN B2 = "2" IF B1 = "9" THEN B2 = "5" IF B1 = "." THEN B2 = "G" IF B1 = "," THEN B2 = "$" IF B1 = "!" THEN B2 = "(" IF B1 = "$" THEN B2 = ")" IF B1 = "@" THEN B2 = "=" IF B1 = "-" THEN B2 = "+" IF B1 = "*" THEN B2 = "\" IF B1 = "?" THEN B2 = "/" IF B1 = "0" THEN B2 = "S" IF B1 = " " THEN B2 = " " IF B1 = "'" THEN B2 = "K" IF B1 = ENTER THEN GOSUB SAVEMESSAGE LOOP UNTIL B1 <> "" LOCATE N1, N2: PRINT B1 N2 = N2 + 1 IF N2 = 60 THEN N2 = 1 N1 = N1 + 1 END IF MESSAGE1 = MESSAGE1 + B1 'puts all of the letters into MESSAGE = MESSAGE + B2 'one string B1 = "" GOSUB NEXTLETTER1 SAVEMESSAGE: CLS LINE (0, 0)-(640, 17), 12, BF COLOR 14 LOCATE 1, 28: PRINT "QCode - Writing a Message" COLOR 15 LOCATE 3, 10: PRINT MESSAGE1 LINE (100, 405)-(540, 440), 11, BF LINE (100, 405)-(540, 440), 12, B LOCATE 27, 18: PRINT "Save Message" LOCATE 27, 36: PRINT "Print Message" LOCATE 27, 55: PRINT "Main Menu" WM1: 'saves the message in .msg format PUT (115, 415), CURSOR DO E1 = INKEY$ IF E1 = ENTER THEN WRITE #2, MESSAGE CLOSE #2 FILENAME = "C:\" + MNAME + ".MSG" NAME "C:\UNTITLED.MSG" AS FILENAME CLOSE #2 SSAVE = 1 GOSUB WM1 END IF IF E1 = LEFT THEN LINE (115, 415)-(131, 431), 11, BF GOSUB WM3 END IF IF E1 = RIGHT THEN LINE (115, 415)-(131, 431), 11, BF GOSUB WM2 END IF LOOP WM2: 'prints the message PUT (260, 415), CURSOR DO E2 = INKEY$ IF E2 = ENTER THEN LPRINT "QCode Message" LPRINT "" IF SSAVE = 1 THEN LPRINT "File: "; FILENAME LPRINT "" LPRINT "Original Message:" LPRINT "" LPRINT " "; MESSAGE1 LPRINT "" LPRINT "Coded Message:" LPRINT "" LPRINT " "; MESSAGE LPRINT "" LPRINT "" LPRINT "QCode was written by Darryl Schneider" LPRINT "" LPRINT "" LPRINT "" GOSUB WM2 END IF IF E2 = LEFT THEN LINE (260, 415)-(276, 431), 11, BF GOSUB WM1 END IF IF E2 = RIGHT THEN LINE (260, 415)-(276, 431), 11, BF GOSUB WM3 END IF LOOP WM3: 'return to main menu PUT (412, 415), CURSOR DO E3 = INKEY$ IF E3 = ENTER THEN IF SSAVE = 0 THEN CLOSE #2 KILL "C:\UNTITLED.MSG" END IF GOSUB MAINMENU END IF IF E3 = LEFT THEN LINE (412, 415)-(428, 431), 11, BF GOSUB WM2 END IF IF E3 = RIGHT THEN LINE (412, 415)-(428, 431), 11, BF GOSUB WM1 END IF LOOP VIEWMESSAGE: CLS N3 = 8 N4 = 1 N5 = 8 N6 = 1 MNAME = "" MPASSWORD = "" MESSAGE = "" MP1 = "" MP2 = "" LINE (0, 0)-(640, 17), 12, BF COLOR 14 LOCATE 1, 28: PRINT "QCode - Viewing a Message" COLOR 15 LOCATE 3, 10: INPUT "Message Name (max. 8 characters): ", DNAME LOCATE 4, 10: INPUT "Message Password: ", DPASSWORD DNAME = UCASE$(DNAME) DPASSWORD = UCASE$(DPASSWORD) JFILE = "C:\" + DNAME + ".MSG" OPEN JFILE FOR INPUT AS #3 'opens a QCode file for INPUT #3, MPASSWORD 'viewing VIEWME: LOCATE 6, 10: PRINT "Message: "; JFILE INPUT #3, MESSAGE Y = LEN(MESSAGE) S = 1 IF DPASSWORD = MPASSWORD THEN 'if password is correct, DO 'displays decoded message B3 = MID$(MESSAGE, S, 1) IF B3 = "^" THEN B4 = "A" 'these are all of the IF B3 = "Z" THEN B4 = "B" 'character representations IF B3 = "<" THEN B4 = "C" IF B3 = ":" THEN B4 = "D" IF B3 = "W" THEN B4 = "E" IF B3 = "Y" THEN B4 = "F" IF B3 = "~" THEN B4 = "G" IF B3 = "#" THEN B4 = "H" IF B3 = "N" THEN B4 = "I" IF B3 = "F" THEN B4 = "J" IF B3 = "I" THEN B4 = "K" IF B3 = "." THEN B4 = "L" IF B3 = "P" THEN B4 = "M" IF B3 = "X" THEN B4 = "N" IF B3 = "*" THEN B4 = "O" IF B3 = "&" THEN B4 = "P" IF B3 = "V" THEN B4 = "Q" IF B3 = "H" THEN B4 = "R" IF B3 = "C" THEN B4 = "S" IF B3 = "-" THEN B4 = "T" IF B3 = "%" THEN B4 = "U" IF B3 = "L" THEN B4 = "V" IF B3 = "E" THEN B4 = "W" IF B3 = "A" THEN B4 = "X" IF B3 = "B" THEN B4 = "Y" IF B3 = "?" THEN B4 = "Z" IF B3 = "9" THEN B4 = "1" IF B3 = "6" THEN B4 = "2" IF B3 = "4" THEN B4 = "3" IF B3 = "3" THEN B4 = "4" IF B3 = "1" THEN B4 = "5" IF B3 = "7" THEN B4 = "6" IF B3 = "8" THEN B4 = "7" IF B3 = "2" THEN B4 = "8" IF B3 = "5" THEN B4 = "9" IF B3 = "S" THEN B4 = "0" IF B3 = "G" THEN B4 = "." IF B3 = "$" THEN B4 = "," IF B3 = "(" THEN B4 = "!" IF B3 = ")" THEN B4 = "$" IF B3 = "=" THEN B4 = "@" IF B3 = "+" THEN B4 = "-" IF B3 = "\" THEN B4 = "*" IF B3 = "/" THEN B4 = "?" IF B3 = " " THEN B4 = " " IF B3 = "K" THEN B4 = "'" LOCATE N3, N4: PRINT B4 MP1 = MP1 + B4 N4 = N4 + 1 S = S + 1 IF N4 = 60 THEN N4 = 1 N3 = N3 + 1 END IF LOOP UNTIL S = Y + 1 END IF IF NOT DPASSWORD = MPASSWORD THEN 'if password is incorrect, DO 'displays encoded message B5 = MID$(MESSAGE, S, 1) LOCATE N5, N6: PRINT B5 MP2 = MP2 + B5 N6 = N6 + 1 S = S + 1 IF N6 = 60 THEN N6 = 1 N5 = N5 + 1 END IF LOOP UNTIL S = Y + 1 END IF CLOSE #3 LINE (170, 405)-(470, 440), 11, BF LINE (170, 405)-(470, 440), 12, B LOCATE 27, 28: PRINT "Print Message" LOCATE 27, 48: PRINT "Main Menu" VM1: 'prints the message PUT (195, 415), CURSOR DO E4 = INKEY$ IF E4 = ENTER THEN LPRINT "QCode Message" LPRINT "" IF SSAVE = 1 THEN LPRINT "File: "; FILENAME LPRINT "" LPRINT "Original Message:" LPRINT "" IF MP1 <> "" THEN LPRINT " "; MP1 IF MP2 <> "" THEN LPRINT " Sorry, you need the password!" LPRINT "" LPRINT "Coded Message:" LPRINT "" LPRINT " "; MESSAGE LPRINT "" LPRINT "" LPRINT "QCode was written by Darryl Schneider" LPRINT "" LPRINT "" LPRINT "" GOSUB VM1 END IF IF E4 = LEFT THEN LINE (195, 415)-(211, 431), 11, BF GOSUB VM2 END IF IF E4 = RIGHT THEN LINE (195, 415)-(211, 431), 11, BF GOSUB VM2 END IF LOOP VM2: 'returns to main menu PUT (355, 415), CURSOR DO E5 = INKEY$ IF E5 = ENTER THEN GOSUB MAINMENU END IF IF E5 = LEFT THEN LINE (355, 415)-(371, 431), 11, BF GOSUB VM1 END IF IF E5 = RIGHT THEN LINE (355, 415)-(371, 431), 11, BF GOSUB VM1 END IF LOOP ABOUT: 'the infamous about screen CLS LINE (0, 0)-(640, 17), 12, BF COLOR 14 LOCATE 1, 35: PRINT "About QCode" COLOR 15 PRINT "" PRINT "" PRINT "QCode was written in Microsoft QuickBasic by Darryl Schneider. The" PRINT "program is a message encoder/decoder. To use the program, first write" PRINT "a message. All message files are saved to the C:\ drive. The message" PRINT "name that you choose can be a maximum of 8 characters. No file extension" PRINT "or drive specification is required in the message name. The password" PRINT "is the key to opening the message. You must know the password to that" PRINT "particular message in order to decode it. Once you have finished writing" PRINT "the message, you may view it by selecting the option at the main menu." PRINT "Then just type in the message name and the password for that message," PRINT "and it will be decoded. I included a print option so you can print" PRINT "out each of the messages. I hope you like the program. Enjoy!" PRINT "" PRINT "Darryl Schneider" PRINT "fish2@datanet.ab.ca" PRINT "The QBasic Zone" PRINT "http://www.geocities.com/SiliconValley/8191/" LINE (270, 405)-(370, 440), 11, BF 'draw the box at the LINE (270, 405)-(370, 440), 12, B 'bottom of the screen LOCATE 27, 38: PRINT "Main Menu" PUT (275, 415), CURSOR DO G1 = INKEY$ IF G1 = ENTER THEN GOSUB MAINMENU 'return to the main menu LOOP QUIT: END 'End of QCode