@program prog_code,prog_name include macros.h ;************** Start of Fargo program *************** prog_code: jsr flib[clr_scr] setfont #2 writestr #1,#1,#0,name writestr #50,#30,#1,item1 writestr #50,#42,#1,item2 writestr #50,#54,#1,item3 writestr #50,#66,#1,item4 writestr #50,#78,#1,item5 writestr #50,#90,#1,item6 key_loop: jsr flib[idle_loop] cmp #49,d0 beq lock_calc cmp #50,d0 beq change_pword cmp #51,d0 beq set_safety cmp #52,d0 beq help cmp #53,d0 beq about cmp #54,d0 beq exit cmp #264,d0 beq exit bra key_loop ;***************** ; change password ;***************** change_pword: jsr flib[clr_scr] writestr #20,#40,#1,prompt move.w #9,d7 bsr clear_temp1 bsr clear_temp2 lea temp1(pc),a3 lea temp2(pc),a2 \loop_inp: jsr flib[idle_loop] cmp #13,d0 beq set cmp #263,d0 beq change_pword cmp #264,d0 beq prog_code bsr test_dig_lett cmp #0,d0 beq \loop_inp move.b d0,(a3)+ move.b #42,(a2)+ writestr #100,#40,#1,temp2 dbf d7,\loop_inp set: bsr set_pword bra prog_code set_pword: lea temp1(pc),a3 lea password(pc),a4 move.w #9,d7 \loop_set: move.b (a3)+,d1 move.b d1,(a4)+ dbf d7,\loop_set rts clear_temp1: lea temp1(pc),a3 move.w #9,d7 \loop_1: move.b #0,(a3)+ dbf d7,\loop_1 rts clear_temp2: lea temp2(pc),a3 move.w #9,d7 \loop_2: move.b #0,(a3)+ dbf d7,\loop_2 rts ;************* ; Lock calc ;************* lock_calc: jsr flib[clr_scr] trap #4 get_pword: jsr flib[clr_scr] writestr #20,#40,#1,prompt bsr clear_temp1 bsr clear_temp2 move.w #9,d7 lea temp1(pc),a3 lea temp2(pc),a2 \loop_inp: jsr flib[idle_loop] cmp safety_key,d0 beq right_pword cmp #13,d0 beq check_pword cmp #263,d0 beq get_pword bsr test_dig_lett cmp #0,d0 beq \loop_inp move.b d0,(a3)+ move.b #42,(a2)+ writestr #100,#40,#1,temp2 dbf d7,\loop_inp check_pword: lea temp1(pc),a3 lea password(pc),a4 move.w #9,d7 \loop_check: move.b (a3)+,d1 move.b (a4)+,d2 cmp.b d1,d2 bne false_pword dbf d7,\loop_check right_pword: writestr #50,#60,#1,right jsr flib[idle_loop] bra prog_code false_pword: writestr #50,#60,#1,false jsr flib[idle_loop] bra lock_calc ;******************* ; Test digit/letter ;******************* test_dig_lett: cmp #57,d0 bls digit cmp #90,d0 bls big_lett cmp #122,d0 bls small_lett bra test_false digit: cmp #48,d0 bge test_right bra test_false big_lett: cmp #65,d0 bge test_right bra test_false small_lett: cmp #97,d0 bge test_right bra test_false test_right: rts test_false: move.w #0,d0 rts ;************ ; Safety set ;************ set_safety: jsr flib[clr_scr] writestr #45,#50,#1,prompt2 setfont #1 writestr #45,#80,#1,safety_note setfont #2 jsr flib[idle_loop] cmp #264,d0 beq prog_code move.w d0,safety_key bra prog_code ;********** ; Help ;********** help: jsr flib[clr_scr] setfont #1 writestr #5,#10,#1,help1 writestr #5,#20,#1,help2 writestr #5,#40,#1,help3 writestr #5,#50,#1,help4 writestr #5,#70,#1,help5 writestr #5,#80,#1,help6 writestr #5,#90,#1,help7 writestr #5,#110,#1,help8 jsr flib[idle_loop] setfont #2 bra prog_code ;********** ; About ;********** about: jsr flib[clr_scr] writestr #1,#30,#1,name setfont #1 writestr #37,#50,#1,about1 writestr #60,#70,#1,about2 jsr flib[idle_loop] setfont #2 bra prog_code ;********** ; Exit ;********** exit: rts ;***************************************************** prog_name: dc.b "Safety 1.0ß - MarkuSoft",0 temp1: dc.b 0,0,0,0,0,0,0,0,0,0,0 temp2: dc.b 0,0,0,0,0,0,0,0,0,0,0 password: dc.b "fargo",0,0,0,0,0,0 ;Deafault="fargo" prompt: dc.b "Password :",0 prompt2: dc.b "Hit Your Safety-Key",0 name: dc.b " Safety 1.0ß ",0 about1: dc.b "By Markus Klisics - MarkuSoft",0 about2: dc.b "",0 help1: dc.b "Lock Calc turns your calc off and when",0 help2: dc.b "[ON] is hit you enter a password.",0 help3: dc.b "Change Password gives you a chance to",0 help4: dc.b "make your own privat password",0 help5: dc.b "Set Safety lets you set your safetykey",0 help6: dc.b "which you can use if the password has",0 help7: dc.b "slipped out of your mind.",0 help8: dc.b "For more info read readme.txt...",0 item1: dc.b "[1] - Lock Calc",0 item2: dc.b "[2] - Change Password",0 item3: dc.b "[3] - Set Safety",0 item4: dc.b "[4] - Help",0 item5: dc.b "[5] - About",0 item6: dc.b "[6] - Exit (ESC)",0 false: dc.b "Wrong Password!",0 right: dc.b "Correct Password!",0 safety_note: dc.b "[ESC]=Cancel",0 safety_key: dc.w 266 ;Deafault=[mode] ;*************** End of Fargo program **************** reloc_open add_library flib add_library romlib reloc_close end