1: DECLARE FUNCTION ReadLn$ (ln!) 2: DECLARE FUNCTION FGF! (tt!) 3: DECLARE SUB GetTxt () 4: DECLARE FUNCTION Dateint$ (dtt$) 5: DECLARE SUB TskBrPrn (r$) 6: DECLARE SUB TopPrn () 7: DECLARE SUB ReadKey (t$, prm$, chrs!) 8: DECLARE FUNCTION Encptyd$ (aa!, enc$) 9: DECLARE FUNCTION LastByte! (tt$) 10: DIM SHARED txt$(1 TO 6) 11: DIM SHARED fg, bg 12: ps = 0 13: und$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 14: Cipher$ = STRING$(26, 32) 15: ON TIMER(1) GOSUB PrnTop: TIMER ON 16: t$ = STRING$(26, 32) 17: 100 CLS 18: TopPrn 19: LOCATE 2, 1: PRINT CHR$(186) + STRING$(78, 32) + CHR$(186) 20: FOR q = 3 TO 23 21: LOCATE q, 1: PRINT CHR$(186): LOCATE q, 80: PRINT CHR$(186) 22: NEXT q 23: TskBrPrn " F1=HELP F5=NEW CIPHER" 24: LOCATE 25, 1: PRINT CHR$(200) + STRING$(78, 205) + CHR$(188); 25: bg = 1: fg = 7 26: COLOR fg, bg: 27: LOCATE 3, 2: PRINT " Plaintext "; : bg = 4: fg = 15: COLOR fg, bg: PRINT Cipher$; : bg = 1: fg = 7: COLOR fg, bg: PRINT STRING$(39, 32) 28: LOCATE 4, 2: PRINT " Cipher "; : bg = 1: fg = 3: COLOR fg, bg: PRINT "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; : bg = 1: fg = 7: COLOR fg, bg: PRINT STRING$(39, 32) 29: LOCATE 5, 2: PRINT " Unused "; und$; STRING$(39, 32) 30: FOR qq = 7 TO 23 STEP 3 31: LOCATE qq, 2: bg = 1: fg = 7: COLOR fg, bg: PRINT " "; : bg = 4: fg = 15: COLOR fg, bg: PRINT Encptyd$(((qq - 7) / 3) + 1, t$); STRING$(76 - LEN(Encptyd$(((qq - 7) / 3) + 1, t$)), 32); : bg = 1: fg = 7: COLOR fg, bg: PRINT " " 32: LOCATE qq - 1, 2: fg = 7: bg = 1: COLOR fg, bg: PRINT STRING$(78, 32) 33: LOCATE qq + 1, 2: fg = 7: bg = 1: COLOR fg, bg: PRINT " "; txt$(((qq - 7) / 3) + 1); STRING$(78 - LEN(txt$(((qq - 7) / 3) + 1)) - 1, 32) 34: NEXT qq 35: 10 bg = 4: fg = 15: COLOR fg, bg: LOCATE 3, 15, 1: LOCATE , , 0: LOCATE 3, 15, 1: bg = 4: fg = 15: COLOR fg, bg: PRINT UCASE$(t$); : LOCATE 3, 15 + ps 36: 20 a$ = INKEY$ 37: IF a$ = "" THEN 20 38: a$ = UCASE$(a$) 39: IF (a$ = CHR$(0) + "K" OR a$ = CHR$(8)) AND ps > 0 THEN ps = ps - 1: LOCATE 3, 15 + ps, 1: FOR qq = 7 TO 23 STEP 3: LOCATE qq, 3, 0: bg = 4: fg = 15: COLOR fg, bg: PRINT Encptyd$(((qq - 7) / 3) + 1, t$); STRING$(76 - LEN(Encptyd$(((qq - 7) / 3) + 1, t$)), 32); : NEXT qq: GOTO 30 40: IF a$ = CHR$(8) AND LEN(t$) = 0 THEN GOTO 10 41: IF a$ = CHR$(27) THEN END 42: IF a$ = CHR$(0) + "?" THEN GetTxt: GOTO 100 43: IF a$ = CHR$(0) + "M" AND ps < 25 THEN ps = ps + 1: LOCATE 3, 15 + ps, 1: GOTO 10 44: IF (ASC(a$) > 64 AND ASC(a$) < 91) OR ASC(a$) = 32 THEN ELSE GOTO 10 45: IF INSTR(und$, a$) = 0 AND ASC(a$) <> 32 THEN LOCATE , , 0: bg = 6: fg = 15: COLOR fg, bg: x% = CSRLIN: y% = POS(0): LOCATE 24, 2: msg$ = "Letter already used.": PRINT msg$; STRING$(78 - LEN(msg$), 32); : SLEEP: TskBrPrn " F1=HELP F5=NEW CIPHER": LOCATE x%, y%, 1: bg = 4: fg = 15: COLOR fg, bg: GOTO 10 46: IF ps >= 26 THEN LOCATE 3, 15 + 26, 1 ELSE MID$(t$, ps + 1, 1) = a$ 47: IF ASC(a$) <> 32 THEN PRINT "hi": MID$(und$, INSTR(und$, a$), 1) = " " ELSE MID$(und$, INSTR(und$, a$), 1) = MID$(t$, ps + 1, 1): MID$(und$, ASC(MID$(t$, ps + 1, 1)) - 64, 1) = MID$(t$, ps + 1, 1): MID$(t$, ps + 1, 1) = " " 48: FOR qq = 7 TO 23 STEP 3: LOCATE qq, 3, 0: bg = 4: fg = 15: COLOR fg, bg: PRINT Encptyd$(((qq - 7) / 3) + 1, t$); STRING$(76 - LEN(Encptyd$(((qq - 7) / 3) + 1, t$)), 32); : NEXT qq 49: 30 bg = 1: fg = 7: COLOR fg, bg: LOCATE 5, 2: PRINT " Unused "; und$; STRING$(39, 32) 50: GOTO 10 51: END 52: 53: PrnTop: 54: IF TIME$ <> oltm$ THEN TopPrn: oltm$ = TIME$ 55: COLOR fg, bg 56: RETURN 57: 58: 230 RESUME NEXT 59: 60: FUNCTION Dateint$ (dtt$) 61: Dateint$ = MID$(dtt$, 1, 2) + "/" + MID$(dtt$, 4, 2) + "/" + MID$(dtt$, 9, 2) 62: END FUNCTION 63: 64: FUNCTION Encptyd$ (aa, enc$) 65: FOR mm = 1 TO LEN(txt$(aa)) 66: IF ASC(MID$(txt$(aa), mm, 1)) > 64 AND ASC(MID$(txt$(aa), mm, 1)) < 91 THEN ELSE m$ = m$ + MID$(txt$(aa), mm, 1): GOTO 101 67: IF MID$(enc$, ASC(MID$(txt$(aa), mm, 1)) - 64, 1) = "" THEN m$ = m$ + " " ELSE m$ = m$ + MID$(enc$, ASC(MID$(txt$(aa), mm, 1)) - 64, 1) 68: 101 NEXT mm 69: Encptyd$ = m$ 70: END FUNCTION 71: 72: FUNCTION FGF (tt) 73: FOR f = 15 TO 0 STEP -1 74: IF FIX((tt - f) / 16) = (tt - f) / 16 THEN FGF = f 75: NEXT f 76: END FUNCTION 77: 78: SUB GetTxt 79: bg = 7: fg = 14: COLOR fg, bg 80: LOCATE 8, 2: PRINT CHR$(218) + STRING$(76, 196) + CHR$(191) 81: FOR mma = 9 TO 15 82: LOCATE mma, 2: PRINT CHR$(179) + STRING$(76, 32) + CHR$(179) 83: NEXT mma 84: LOCATE 16, 2: PRINT CHR$(192) + STRING$(76, 196) + CHR$(217) 85: LOCATE 9, 3 86: FOR nq = 1 TO 6 87: ReadKey txt$(nq), "", 76 88: IF INSTR(txt$(nq), CHR$(219)) THEN txt$(nq) = LEFT$(txt$(nq), LEN(txt$(nq)) - 1): EXIT SUB 89: LOCATE , 3 90: NEXT nq 91: END SUB 92: 93: FUNCTION LastByte (tt$) 94: IF LEN(tt$) = 0 THEN LastByte = 32: EXIT FUNCTION ELSE LastByte = ASC(RIGHT$(tt$, 1)) 95: END FUNCTION 96: 97: SUB ReadKey (t$, prm$, chrs) 98: t$ = "" 99: PRINT prm$; 100: DO UNTIL i$ = CHR$(13) OR i$ = CHR$(27) 101: IF i$ = CHR$(8) THEN IF LEN(t$) = 0 THEN i$ = "": GOTO 60 ELSE t$ = MID$(t$, 1, LEN(t$) - 1): LOCATE CSRLIN, POS(0) - 1: PRINT " "; : LOCATE CSRLIN, POS(0) - 1 102: i$ = INKEY$ 103: IF i$ = CHR$(0) + "?" THEN t$ = t$ + CHR$(219): PRINT : EXIT SUB 104: IF i$ = "" THEN GOTO 60 105: q = 0 106: IF (ASC(i$) > -1 AND ASC(i$) < 32) THEN GOTO 60 107: IF ASC(i$) > 200 THEN GOTO 60 108: IF i$ = CHR$(13) OR i$ = CHR$(27) THEN GOTO 70 109: IF ASC(i$) < 123 AND ASC(i$) > 96 THEN i$ = CHR$(ASC(i$) - 32): PRINT i$; ELSE PRINT i$; 110: t$ = t$ + i$ 111: IF LEN(t$) >= chrs THEN t$ = MID$(t$, 1, LEN(t$) - 1): LOCATE CSRLIN, POS(0) - 1: PRINT " "; : LOCATE CSRLIN, POS(0) - 1 112: 60 LOOP 113: 70 PRINT "" 114: END SUB 115: 116: FUNCTION ReadLn$ (ln) 117: x% = CSRLIN: y% = POS(0) 118: FOR q = 1 TO 80 119: bgf = (SCREEN(ln, q, 1) - FGF(SCREEN(ln, q, 1))) / 16 120: mm$ = mm$ + CHR$(SCREEN(ln, q)) + CHR$(bgf) + CHR$(FGF(SCREEN(ln, q, 1))) 121: NEXT q 122: ReadLn$ = mm$ 123: END FUNCTION 124: 125: SUB TopPrn 126: x = CSRLIN: y = POS(0) 127: COLOR 15, 3 128: ttl$ = "CRYPTOMATIC V1.1" 129: dt$ = Dateint$(DATE$) + " " + TIME$ 130: LOCATE 1, 1: PRINT CHR$(201) + CHR$(205) + "[" + ttl$ + "]" + STRING$(80 - (LEN(ttl$) + 8 + LEN(dt$)), 205) + "[" + dt$ + "]" + CHR$(205) + CHR$(187) 131: LOCATE x, y 132: END SUB 133: 134: SUB TskBrPrn (r$) 135: COLOR 15, 3 136: LOCATE 24, 1: PRINT CHR$(186) + r$ + STRING$(78 - LEN(r$), 32) + CHR$(186); 137: END SUB 138: 139: SUB WriteLn (ln, tt$) 140: LOCATE ln, 1 141: FOR q = 1 TO LEN(tt$) STEP 3 142: 'bgf = (ASC(MID$(tt$, q + 1, 1)) - FGF(ASC(MID$(tt$, q + 1, 1)))) / 16 143: 'PRINT ASC(MID$(tt$, q + 2, 1)); ASC(MID$(tt$, q + 1, 1)) 144: COLOR ASC(MID$(tt$, q + 2, 1)), ASC(MID$(tt$, q + 1, 1)) 145: PRINT MID$(tt$, q, 1); 146: NEXT q 147: END SUB 148: |