Source Code
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