Super-Cipher 2068 V2.2

Developer(s): Imre Auersbacher
Date: 1985
Type: Program
Platform(s): TS 2068
    1 GO TO 9500
    2 LET l=1: ON ERR GO TO 4
    3 DIM m$(2500): POKE 23692,0
    4 IF INKEY$<>"" THEN GO TO 4
    5 IF INKEY$="" THEN GO TO 5
    6 LET q$=INKEY$: IF CODE q$=13 THEN LET m$(l)=q$: ON ERR RESET : RETURN 
    7 IF CODE q$=12 THEN PRINT CHR$ 8;: LET l=l-1: PRINT PAPER 6;" ";CHR$ 8;: GO TO 4
    8 IF CODE q$=0 THEN GO TO 4
    9 LET m$(l)=q$: LET l=l+1: PRINT PAPER 3; INK 7;q$;: GO TO 4
   20 CLS : PRINT PAPER 6;"Coded message --> ": PRINT :
   22 LET y=1: POKE 23692,0
   25 FOR z=1 TO LEN m$
   30 IF y>LEN y$ THEN LET y=1
   35 LET t=CODE m$(z): IF t=13 THEN LET l=z-1: RETURN 
   40 LET x=z(y)+t+9
   45 LET q$=CHR$ (x-59*INT (x/59)+32): LET m$(z)=q$: PRINT q$;
   50 LET y=y+1: NEXT z: RETURN 
   60 CLS : PRINT PAPER 6;"Decoded Message --> ": PRINT :
   62 LET y=1: POKE 23692,0
   65 FOR z=1 TO LEN m$
   70 IF y>LEN y$ THEN LET y=1
   75 LET t=CODE m$(z): IF t=13 THEN LET l=z-1: RETURN 
   80 LET X=t-z(y)-42
   85 IF x>=31 THEN GO TO 95
   90 LET x=x+59: GO TO 85
   95 LET q$=CHR$ (x+1): LET m$(z)=q$: PRINT q$;: LET y=y+1
  100 NEXT z: RETURN 
  110 PRINT : PRINT "Password? ";
  120 INPUT y$: IF LEN y$<=1 THEN BEEP 0.6,-22: GO TO 120
  125 PRINT FLASH 1;" Secret "
  130: LET t=LEN y$: DIM z(t)
  140 FOR z=1 TO t: LET x=CODE y$(1)+CODE y$(z)+CODE y$(t)+t-32
  150 LET z(z)=x-59*INT (x/59)
  160 NEXT z: PRINT : RETURN 
  200 BORDER 5: POKE 23658,8: PAPER 3: CLS : POKE 23609,10
  210 PRINT PAPER 6;AT 2,3;"\:'\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\':";AT 3,3;"\:  SUPER-CIPHER 2068 V2.2 \ :";AT 4,3;"\:                         \ :";AT 5,3;"\:  \* 1985  I. AUERSBACHER \ :";AT 6,3;"\:.\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\.:"
  220 PRINT PAPER 7;AT 9,12;" MENU "; PAPER 3;AT 10,12;"\''\''\''\''\''\''"; PAPER 7;AT 12,4;"1-Code a message on screen";AT 13,4;"2-Decode message on screen";AT 14,4;"3-Decode message from tape";AT 15,4;"4-Terminate the program   "; PAPER 6;AT 21,3;"Please Choose Option (1-4)"
  230 LET q$=INKEY$: IF q$="" THEN GO TO 230
  240 LET l=CODE q$-48: IF (l<1)+(l>4) THEN BEEP 0.5,-15: BEEP 0.5,-20: GO TO 230
  245 BEEP 0.05,25
  250 PRINT INK 0;AT 11+l,1;CHR$ 144; INK 6;CHR$ 145: PAUSE 60
  260 BEEP 0.04,20: BEEP 0.04,20
  270 PAPER 7: GO TO 1000*l
 1000 CLS : PRINT PAPER 6;"   1. Code Message on Screen    "
 1010 GO SUB 110: PRINT PAPER 6;"Enter Message-->": GO SUB 2
 1020 GO SUB 20: PRINT 
 1030 PRINT : PRINT FLASH 1;" Coding Complete ": PRINT : PRINT 
 1040 PRINT PAPER 6;AT 21,3;"Press any key to continue"
 1050 IF INKEY$="" THEN GO TO 1050
 1055 BEEP 0.1,25: PAPER 3: CLS : PRINT PAPER 1; INK 7;AT 2,4;" Super-Cipher Sub-MENU "
 1060 PRINT PAPER 7;AT 6,10;" Options "; PAPER 3;AT 7,10;"\''\''\''\''\''\''\''\''\''"; PAPER 7;AT 9,4;"1-Copy Message to Printer";AT 10,4;"2-Save Message to Tape   ";AT 11,4;"3-Code to Higher Level   ";AT 12,4;"4-Decode to Lower Level  ";AT 13,4;"5-Return to Main Menu    "; PAPER 6;AT 21,3;"Please Enter Option (1-5)"
 1065 LET q$=INKEY$: IF q$="" THEN GO TO 1065
 1070 LET x=CODE q$-48: IF (x<1)+(x>5) THEN BEEP 0.5,-15: BEEP 0.6,-20: GO TO 1065
 1075 BEEP 0.05,25: PRINT INK 0;AT 8+x,1;CHR$ 144; INK 6;CHR$ 145
 1080 PAUSE 60: PAPER 7: BEEP 0.05,22: IF x=5 THEN GO TO 200
 1085 GO SUB 1000+100*INT x
 1090 GO TO 1055
 1100 LPRINT : LPRINT m$( TO l): LPRINT : LPRINT : RETURN 
 1200 CLS : PRINT PAPER 6;AT 2,2;"Name of this message file? "
 1205 POKE 23658,0
 1210 INPUT x$: IF LEN x$>10 OR x$="" THEN BEEP 1,-20: GO TO 1210
 1215 PRINT "  ";x$: POKE 23658,8
 1220 SAVE x$ DATA m$()
 1230 BEEP 0.1,22: PRINT AT 5,2;"File ";x$;" Saved."; FLASH 1;AT 8,8;" Stop Recorder "
 1240 PAUSE 500: RETURN 
 1300 CLS : GO SUB 110: GO SUB 20
 1310 PRINT : PRINT : PRINT FLASH 1;" Coding Complete ": PRINT : PRINT : PAUSE 2000: RETURN 
 1400 CLS : GO SUB 110: GO SUB 60
 1410 PRINT : PRINT : PRINT FLASH 1;" Decoding Complete ": PRINT : PRINT : PAUSE 2000: RETURN 
 2000 CLS : PRINT PAPER 6;"  2. Decode Message on Screen   "
 2010 GO SUB 110: PRINT PAPER 6;"Enter Message-->": GO SUB 2
 2020 GO SUB 60: PRINT 
 2030 PRINT : PRINT FLASH 1;" Decoding Complete ": PRINT : PRINT 
 2040 GO TO 1040
 3000 CLS : PRINT PAPER 6;"  3. Decode Message from Tape   "
 3010 GO SUB 110: PRINT "What is file name? ";: POKE 23658,0
 3020 INPUT x$: IF LEN x$>10 OR x$="" THEN BEEP 1,-20: GO TO 3020
 3030 PRINT x$: POKE 23658,8
 3035 INPUT "Press ENTER & Start Recorder "; LINE q$
 3040 PRINT : PRINT FLASH 1;AT 6,2;" Loading ";x$;" "
 3045 LOAD x$ DATA m$()
 3050 BEEP 0.1,22: PRINT : PRINT FLASH 1;" Please Stop Recorder "
 3060 PAUSE 300: CLS : PRINT m$( TO 672): PAUSE 120: GO TO 2020
 4000 CLEAR : SOUND 7,62;8,15
 4020 FOR l=40 TO 120: SOUND 0,l
 4025 LET x=l-6*INT (l/6)+1
 4028 PAPER x: BORDER 7-x: CLS 
 4030 PAUSE 1: NEXT l
 4040 SOUND 6,6;7,7;8,16;9,16;10,16;12,56;13,8
 4045 BORDER 0: PAPER 0: CLS 
 4050 PAUSE 30: BORDER 7: PAPER 7: CLS : PAUSE 30: BORDER 0
 4055 PAPER 0: CLS : PAUSE 30
 4058 BORDER 7: PAPER 7: CLS 
 4060 SOUND 8,0;9,0;10,0
 4070 PRINT FLASH 1;AT 10,5;" Program Terminated "
 4080 PRINT PAPER 6;AT 14,6;" Security Risk = 0 ": DELETE 0,4000
 4090 PAUSE 300: NEW 
 9500 BEEP 0.05,22: BEEP 0.06,20: POKE 23609,10: POKE 23658,8
 9600 RESTORE 9900: FOR l=0 TO 7: READ x,y: POKE USR "a"+l,x: POKE USR "b"+l,y: NEXT l: GO TO 200
 9900 DATA 0,24,0,48,127,96,127,255,127,255,115,248,115,248,127,240
 9990 SAVE "cipher" LINE 9500
Scroll to Top