TI-BASIC Wiki
Advertisement
SPLHSCRNPIC

The picture to be saved as PIC1 on your calculator (required)

Note This program is breakable by the [ON] key.


This password protection program, which I titled TI84OSST (TI 84 Operating System Startup) is a program for calculator startup. There are several other subprograms and pictures that you need to add for this to work. First, you must set defaults and have your calculator's time set correctly. Next, you have to create the other programs listed below and set the picture to the right as PIC1 on your calculator. it's not an easy program to make (about 50 KB worth of data!), but it was worth it for me. This program will only execute on startup if you have Texas Instruments' StartUp app. The app can be downloaded here.

TI84OSST Code[]

ClrHome
If S≠1 and S≠0
1→S
If S=1
prgmSPLHSCRN
 0→C
  If F≠1 and F≠2 and F≠3
 Then
  1→F
 :1→C
 :End
 :If F=1 and C=0
 :Then
 :2→F
 :1→C
 :End
 :If F=2 and C=0
 :Then
 :3→F
 :1→C
 :End
 :If F=3 and C=0
 :Then
 :1→F
 :1→C
 :End
 :0→Z
 :Lbl M
 :0→G
 :ClrHome
 :If P≠1
 :Menu("TI84+ SE STARTUP","BEGIN",G,"SETTINGS",S,"TIMECHECK",TC
:If P=1
 :Menu("TI84+ SE STARTUP","LOGIN",G,"SETTINGS",S,"TIMECHECK",TC
:Lbl TC
 :ClrHome
 :If E=0
 :prgmCLOCK
 :If E=1
 :prgmCLOCKDIG
 :ClrHome
 :Goto M
 :Lbl S
 :ClrHome
 :If P=1 and Z=0
 :Then
 :If H=1
 :Then
 :Disp "PASSWORD HINT:"
:Disp Str4
 :End
 :Disp "PASSWORD?:"
:Input "",Str3
 :If Str3="FP"
 :Then
 :ClrHome
 :Disp "USE PRGMPSFRGT"
:Disp "AND ENTER"
:If F=1
 :Pause "AP35QR7"
:If F=2
 :Pause "MPG368P"
:If F=3
 :Pause "PLM69PR"
:End
 :If Str3="PC"
 :Then
 :Disp "ENTER CODE"
:Input "",Str5
 :If Str5="EMAN" and F=2
:Then
 :ClrHome
 :Disp "NEW PASS:"
:Input "",Str2
 :ClrHome
 :Goto M
 :End
 :If Str5="EGUY" and F=3
:Then
 :ClrHome
 :Disp "NEW PASS:"
:Input "",Str2
 :ClrHome
 :Goto M
 :End
 :If Str5="ESOM" and F=1
:Then
 :ClrHome
 :Disp "NEW PASS:"
:Input "",Str2
 :ClrHome
 :Goto M
 :End
 :End
 :If Str3≠Str2
 :Then
 :1→G
 :Pause "WRONG PASS."
:End
 :ClrHome
 :End
 :If G=1
 :Goto M
 :If G=0
 :Then
 :1→Z
 :Menu("SETTINGS","SET USERNAME",ST,"SET PASSWORD",PS,"VERSION INFO",V,"SPLASH SCREEN I/O",SC,"TIME OPTIONS",TO,"MAIN MENU",MM
:End
 :Lbl TO
 :Menu("TIME VERSION","12-HOUR",OO,"24-HOUR",OT,"SETTINGS MENU",S
:Lbl OO
 :0→E
 :Pause "DONE SETTING"
:Goto TO
 :Lbl OT
 :1→E
 :Pause "DONE SETTING"
:Goto TO
 :Lbl SC
 :0→Y
 :If S=1
 :Then
 :0→S
 :Pause "SS IS OFF"
:1→Y
 :ClrHome
 :Goto S
 :End
 :If S=0 and Y=0
 :Then
 :1→S
 :Pause "SS IS ON"
:ClrHome
 :Goto S
 :End
 :Lbl V
 :Disp "VERSION:"
:Disp "V. 2.8"
 :Disp "DEVELOPER:"
:Pause "[ERIT] INC"
:ClrHome
 :Goto S
 :Lbl ST
 :Disp "SET USERNAME:"
:Input "",Str1
 :ClrHome
 :Goto S
 :Lbl PS
 :ClrHome
 :0→C
 :Menu("PASSWORD OPTIONS","PASS ON/OFF",O,"CHANGE PASS",P,"PASS HINTS",PH,"WHEN WRONG PASS",WP,"SETTINGS MENU",MU
:Lbl WP
 :ClrHome
 :Menu("WRONG PASS...","MESSUP ANS",MA,"REPEAT PRGM",RP,"PASS MENU",PS
:Lbl MA
 :1→L
 :Pause "DONE SETTING"
:ClrHome
 :Goto WP
 :Lbl RP
 :0→L
 :Pause "DONE SETTING"
:ClrHome
 :Goto WP
 :Lbl O
 :ClrHome
 :If P≠1
 :Then
 :1→P
 :1→C
 :Pause "PASS IS ON"
:End
 :If P=1 and C=0
 :Then
 :0→P
 :Pause "PASS IS OFF"
:End
 :ClrHome
 :Goto PS
 :Lbl P
 :Disp "SET PASS:"
:Input "",Str2
 :ClrHome
 :Goto PS
 :Lbl MM
 :ClrHome
 :Goto M
 :Lbl MU
 :ClrHome
 :Goto S
 :Lbl PH
 :ClrHome
 :0→C
 :Menu("PASS HINTS OPT.","PASS HINTS I/O",H,"CHANGE HINT",CH,"PASS MENU",PM
:Lbl H
 :If H≠1
 :Then
 :1→H
 :1→C
 :Pause "PASS HINT ON"
:End
 :If H=1 and C=0
 :Then
 :0→H
 :Pause "PASS HINT OFF"
:End
 :ClrHome
 :Goto PH
 :Lbl CH
 :Disp "NEW HINT:"
:Input "",Str4
 :ClrHome
 :Goto PH
 :Lbl PM
 :ClrHome
 :Goto PS
 :Lbl G
 :0→G
 :If P=1
 :Then
 :If H=1
 :Then
 :Disp "PASSWORD HINT:"
:Disp Str4
 :End
 :Disp "PASSWORD?:"
:Input "",Str3
 :If Str3≠Str2
 :Then
 :Pause "WRONG PASS."
:1→G
 :End
 :ClrHome
 :End
 :If G=0
 :Then
 :Disp "WELCOME BACK,"
:Disp Str1
 :Disp "PRESS ENTER TO"
:Pause "CONTINUE"
:End
 :If G=1 and L=1
 :prgmGAME
 :If G=1 and L=0
 :Goto M
 :If G=1 and L≠1 and L≠0
:Goto M
 :ClrHome
 :

SubProgram 1 (PSFRGT)[]

Program PSFRGT allows you to recover and change your password.


:ClrHome
:AxesOff
:For(X,1,30
:RecallPic 1
:End
:AxesOn
:ClrDraw
:Disp "ENTER CODE:"
:Input "",Str6
:If Str6="AP35QR7"
:Pause "CODE: EMAN"
:If Str6="MPG368P"
:Pause "CODE: EGUY"
:If Str6="PLM69PR"
:Pause "CODE: ESOM"
:If Str6≠"AP35QR7" and Str6≠"MPG368P" and Str6≠"PLM69PR"
:Pause "NOT A VALID CODE"
:ClrHome
:

SubProgram 2 (CLOCK)[]

This is a basic analog and digital clock (at the same time).


:ClrHome
:ClrDraw
:AxesOff
:For(X,1,30
:RecallPic 1
:End
:ClrDraw
:0→N
:Line({-}8,0,{-}7.5,0
:Line(8,0,7.5,0
:Line({-}4,8,4,8
:Line(4,8,8,4
:Line(8,4,8,{-}4
:Line(8,{-}4,4,{-}8
:Line(4,{-}8,{-}4,{-}8
:Line({-}4,{-}8,{-}8,{-}4
:Line({-}8,{-}4,{-}8,4
:Line({-}8,4,{-}4,8
:Line(0,8,0,7.5
:Line(4,8,3.5,7.5
:Line(8,4,7.5,3.5
:Line(0,8,0,7.5
:Line(8,{-}4,7.5,{-}3.5
:Line(4,{-}8,3.5,{-}7.5
:Line(0,{-}8,0,{-}7.5
:Line({-}4,{-}8,{-}3.5,{-}7.5
:Line({-}8,{-}4,{-}7.5,{-}3.5
:Line(0,{-}8,0,{-}7.5
:Line({-}8,4,{-}7.5,3.5
:Line({-}3.5,7.5,{-}4,8
:Line({-}2,{-}1.5,2.5,{-}1.5
:Line(2.5,{-}1.5,2.5,{-}4.5
:Line({-}2,{-}1.5,{-}2,{-}4.5
:Line({-}2,{-}4.5,2.5,{-}4.5
:getTime→{L1}
:If {L1}(1)≥12
:Then
:{L1}(1)-12→{L1}(1)
:1→N
:End
:If {L1}(1)=1
:Line(0,0,2,5
:If {L1}(1)=2
:Line(0,0,5,2
:If {L1}(1)=3
:Line(0,0,5,0
:If {L1}(1)=4
:Line(0,0,5,{-}2
:If {L1}(1)=5
:Line(0,0,2,{-}5
:If {L1}(1)=6
:Line(0,0,0,{-}5
:If {L1}(1)=7
:Line(0,0,{-}2,{-}5
:If {L1}(1)=8
:Line(0,0,{-}5,{-}2
:If {L1}(1)=9
:Line(0,0,{-}5,0
:If {L1}(1)=10
:Line(0,0,{-}5,2
:If {L1}(1)=11
:Line(0,0,{-}2,5
:If {L1}(1)=0
:Line(0,0,0,5
:If {L1}(2)=0
:Line(0,0,0,7
:If {L1}(2)=1
:Line(0,0,.8,7
:If {L1}(2)=2
:Line(0,0,1.6,7
:If {L1}(2)=3
:Line(0,0,2.4,7
:If {L1}(2)=4
:Line(0,0,3.2,7
:If {L1}(2)=5
:Line(0,0,4,7
:If {L1}(2)=6
:Line(0,0,4.6,6.4
:If {L1}(2)=7
:Line(0,0,5.2,5.6
:If {L1}(2)=8
:Line(0,0,5.6,5.2
:If {L1}(2)=9
:Line(0,0,6.4,4.6
:If {L1}(2)=10
:Line(0,0,7,4
:If {L1}(2)=11
:Line(0,0,7,3.2
:If {L1}(2)=12
:Line(0,0,7,2.4
:If {L1}(2)=13
:Line(0,0,7,1.6
:If {L1}(2)=14
:Line(0,0,7,.8
:If {L1}(2)=15
:Line(0,0,7,0
:If {L1}(2)=16
:Line(0,0,7,{-}.8
:If {L1}(2)=17
:Line(0,0,7,{-}1.6
:If {L1}(2)=18
:Line(0,0,7,{-}2.4
:If {L1}(2)=19
:Line(0,0,7,{-}3.2
:If {L1}(2)=20
:Line(0,0,7,{-}4
:If {L1}(2)=21
:Line(0,0,6.4,{-}4.6
:If {L1}(2)=22
:Line(0,0,5.6,{-}5.2
:If {L1}(2)=23
:Line(0,0,5.2,{-}5.6
:If {L1}(2)=24
:Line(0,0,4.6,{-}6.4
:If {L1}(2)=25
:Line(0,0,4,{-}7
:If {L1}(2)=26
:Line(0,0,3.2,{-}7
:If {L1}(2)=27
:Line(0,0,2.4,{-}7
:If {L1}(2)=28
:Line(0,0,1.6,{-}7
:If {L1}(2)=29
:Line(0,0,.8,{-}7
:If {L1}(2)=30
:Line(0,0,0,{-}7
:If {L1}(2)=31
:Line(0,0,{-}.8,{-}7
:If {L1}(2)=32
:Line(0,0,{-}1.6,{-}7
:If {L1}(2)=33
:Line(0,0,{-}2.4,{-}7
:If {L1}(2)=34
:Line(0,0,{-}3.2,{-}7
:If {L1}(2)=35
:Line(0,0,{-}4,{-}7
:If {L1}(2)=36
:Line(0,0,{-}4.6,{-}6.4
:If {L1}(2)=37
:Line(0,0,{-}5.2,{-}5.6
:If {L1}(2)=38
:Line(0,0,{-}5.6,{-}5.2
:If {L1}(2)=39
:Line(0,0,{-}6.4,{-}4.6
:If {L1}(2)=40
:Line(0,0,{-}7,{-}4
:If {L1}(2)=41
:Line(0,0,{-}7,{-}3.2
:If {L1}(2)=42
:Line(0,0,{-}7,{-}2.4
:If {L1}(2)=43
:Line(0,0,{-}7,{-}1.6
:If {L1}(2)=44
:Line(0,0,{-}7,{-}.8
:If {L1}(2)=45
:Line(0,0,{-}7,0
:If {L1}(2)=46
:Line(0,0,{-}7,.8
:If {L1}(2)=47
:Line(0,0,{-}7,1.6
:If {L1}(2)=48
:Line(0,0,{-}7,2.4
:If {L1}(2)=49
:Line(0,0,{-}7,3.2
:If {L1}(2)=50
:Line(0,0,{-}7,4
:If {L1}(2)=51
:Line(0,0,{-}6.4,4.6
:If {L1}(2)=52
:Line(0,0,{-}5.8,5.2
:If {L1}(2)=53
:Line(0,0,{-}5.2,5.8
:If {L1}(2)=54
:Line(0,0,{-}4.6,6.4
:If {L1}(2)=55
:Line(0,0,{-}4,7
:If {L1}(2)=56
:Line(0,0,{-}3.2,7
:If {L1}(2)=57
:Line(0,0,{-}2.4,7
:If {L1}(2)=58
:Line(0,0,{-}1.6,7
:If {L1}(2)=59
:Line(0,0,{-}.8,7
:If {L1}(1)=0
:12→{L1}(1)
:If {L1}(2)=0
:Text(37,40,{L1}(1),":00"
:If {L1}(2)=1
:Text(37,40,{L1}(1),":01"
:If {L1}(2)=2
:Text(37,40,{L1}(1),":02"
:If {L1}(2)=3
:Text(37,40,{L1}(1),":03"
:If {L1}(2)=4
:Text(37,40,{L1}(1),":04"
:If {L1}(2)=5
:Text(37,40,{L1}(1),":05"
:If {L1}(2)=6
:Text(37,40,{L1}(1),":06"
:If {L1}(2)=7
:Text(37,40,{L1}(1),":07"
:If {L1}(2)=8
:Text(37,40,{L1}(1),":08"
:If {L1}(2)=9
:Text(37,40,{L1}(1),":09"
:If {L1}(2)>9
:Text(37,40,{L1}(1),":",{L1}(2)
:If N=0
:Text(37,63,"AM"
:If N=1
:Text(37,63,"PM"
:Text(57,20,"PRESS ENTER TO QUIT"
:0→D
:L→N
:While D=0
:getKey→L
:If L=105
:1→D
:End
:ClrDraw
:AxesOn
:Disp ""
:N→L
:


SubProgram 3 (CLOCKDIG)[]

This is a digital clock.


}.5,.5,{-}1
Line(.5,{-}1,0,{-}1
ClrDraw
Line(0,{-}1,{-}.5,{-}1
Line({-}.5,{-}1,{-}1,{-}.5
Line({-}1,{-}.5,{-}1,0
ClrDraw
Line({-}1,0,{-}1,.5
Line({-}1,.5,{-}.5,1
Line({-}.5,1,0,1
ClrDraw
End
For(B,10,1,{-}1
Line({-}3,B,3,B
Line({-}3,B,{-}3,B-1
Line(3,B,3,B-1
Line(3,{-}B,{-}3,{-}B
Line(3,{-}B,3,{-}B+1
Line({-}3,{-}B,{-}3,{-}B+1
If B=5 or B=3 or B=1 or B=7 or B=9
ClrDraw
End
Line({-}2.5,3.5,2.5,{-}1.5
Line({-}2.5,3.5,{-}3.5,2.5
Line(2.5,{-}1.5,1.5,{-}2.5
Line({-}2.5,1.5,2.5,{-}3.5
Line({-}2.5,1.5,{-}1.5,2.5
Line(2.5,{-}3.5,3.5,{-}2.5
ClrDraw
For(B,1,5
Line(B,3,B,{-}3
Line(B,3,B-1,3
Line(B,{-}3,B-1,{-}3
Line({-}B,3,{-}B,{-}3
Line({-}B,3,{-}B+1,3
Line({-}B,{-}3,{-}B+1,{-}3
If B=1 or B=3 or B=5
ClrDraw
End
For(B,1,7
Line({-}5,3,{-}5,{-}3
Line({-}5,3,{-}4,3
Line({-}5,{-}3,{-}4,{-}3
Line(5,3,5,{-}3
Line(5,3,4,3
Line(5,{-}3,4,{-}3
Line({-}3.5,3,{-}3.5,{-}3
Line({-}3.5,3,{-}2.5,3
Line({-}3.5,0,{-}3,0
Line({-}3.5,{-}3,{-}2.5,{-}3
If B=7
ClrDraw
End
For(B,1,7
Line({-}5,3,{-}5,{-}3
Line({-}5,3,{-}4,3
Line({-}5,{-}3,{-}4,{-}3
Line(5,3,5,{-}3
Line(5,3,4,3
Line(5,{-}3,4,{-}3
Line({-}2,3,{-}2,{-}3
Line({-}2,3,{-}.5,2
Line({-}.5,2,{-}.5,1
Line({-}.5,1,{-}2,0
Line({-}2,0,{-}.5,{-}3
If B=7
ClrDraw
End
For(B,1,7
Line({-}5,3,{-}5,{-}3
Line({-}5,3,{-}4,3
Line({-}5,{-}3,{-}4,{-}3
Line(5,3,5,{-}3
Line(5,3,4,3
Line(5,{-}3,4,{-}3
Line(1,3,1,{-}3
Line(0,3,2,3
Line(0,{-}3,2,{-}3
If B=7
ClrDraw
End
For(B,1,7
Line({-}5,3,{-}5,{-}3
Line({-}5,3,{-}4,3
Line({-}5,{-}3,{-}4,{-}3
Line(5,3,5,{-}3
Line(5,3,4,3
Line(5,{-}3,4,{-}3
Line(3,3,3,{-}3
Line(2.5,3,3.5,3
If B=7
ClrDraw
End
For(B,1,15
Line({-}5,3,{-}5,{-}3
Line({-}5,3,{-}4,3
Line({-}5,{-}3,{-}4,{-}3
Line(5,3,5,{-}3
Line(5,3,4,3
Line(5,{-}3,4,{-}3
Line({-}3.5,3,{-}3.5,{-}3
Line({-}3.5,3,{-}2.5,3
Line({-}3.5,0,{-}3,0
Line({-}3.5,{-}3,{-}2.5,{-}3
Line({-}2,3,{-}2,{-}3
Line({-}2,3,{-}.5,2
Line({-}.5,2,{-}.5,1
Line({-}.5,1,{-}2,0
Line({-}2,0,{-}.5,{-}3
Line(1,3,1,{-}3
Line(0,3,2,3
Line(0,{-}3,2,{-}3
Line(3,3,3,{-}3
Line(2.5,3,3.5,3
Text(43,26,"PROGRAMMING"
If B=15
ClrDraw
End
AxesOn
Disp ""


SubProgram 5 (GAME)[]

This program will mess up a person's answer on their calculator if they try to get past password protection and get the password wrong. This is the last subprogram!


:ClrHome
:0→D
:1→T
:While D=0
:Input "",N
:If N=2
:Then
:If T=1
:Then
:Output(2,11,"WINDOW"
:Disp ""
:End
:If T=2
:Then
:Output(4,11,"WINDOW"
:Disp ""
:End
:If T=3
:Then
:Output(6,11,"WINDOW"
:Disp ""
:End
:If T≥4
:Then
:Output(8,11,"WINDOW"
:Disp ""
:End
:End
:If N≠2
:Then
:int(5*rand+4)→R
:N+R→N
:Disp N
:End
:T+1→T
:If T=51
:Then
:1→D
:Pause ""
:End
:End
:ClrHome
:


Password Recovery[]

This is a built in security feature in TI84OSST that allows you to recover your password if you forget it. Go to the options subscreen and type "FP" (stands for FORGOT PASSWORD). It will give you a code. Use the PSFRGT program by quitting out of the TI84OSST program and type in the code it gave you. It will give you a second code based on the first one you got. Go back to TI84OSST's options menu, and type "PC" (stands for PASS CODE). TI84OSST will prompt you for PSFRGT's code. When you type in the code, you will be able to set a new password.


Tips[]

  • Almost all features of TI84OSST are customizable from displaying the splash screen to using regular or military time
  • Try not to change the variables used by the TI84OSST program.
  • It may be a lot of code, but it's definitely worth it!
  • This shows the use of loops, variables, menus and input.
Advertisement