$regfile = "m162def.dat"
$crystal = 8000000
$baud = 19200
$xa
$xramstart = &H500
$xramsize = &H8000

Config Lcd = 20 * 2
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
Config Keyboard = Pind.2 , Data = Pind.3 , Keydata = Keydata
Config Scl = Portb.7
Config Sda = Portb.6
Config I2cdelay = 1
Config Pine.0 = Output

Dim Napisy(30000) As Xram Byte           'ta zmienna nie dziaa :/
Dim Napis(100) As Byte                         'jak t zmienn mienisz na Napisy to dziaa
Dim Klaw As Byte
Dim Koniec As Word
Dim Licz(10) As Word
Dim Nazwa_dysku(16) As Byte
Dim Adres_eeprom As Byte
Dim Adres_1 As Word
Dim Dane(256) As Byte
Dim Nazwa(16) As Byte
Dim Liczb As Byte
Dim Wolne As Long
Dim Zajete As Long
Dim X As Bit
Dim X_1 As Byte
Dim Poj_dysk As Bit
Dim Opcja As Byte
Dim Esc As Bit
Dim Pliki As Word
Dim Kon As Bit
Dim Kon_a_1 As Byte
Dim Kon_a_2 As Byte
Dim P As Byte
Dim Wyswietlanie_40 As Word
Dim Wyswietlanie_20 As Word
Dim Kon_a_3 As Byte
Dim Kon_a_4 As Byte
Dim Kon_a_5 As Byte
Dim Kon_a_6 As Byte
Dim Wol_miej As Bit
Dim Kursor As Word
Dim P_e(8) As Word
Dim Wys_nap As Word
Dim Bajt_pod As Byte


Do

   Gosub Odczyt_klaw
   If Klaw > 31 And Klaw < 127 Then
      If Licz(10) < 31400 Then
         Incr Licz(10)
         Incr Kursor
         If Kursor < Licz(10) Then
            P_e(8) = Licz(10)
            For P_e(7) = Licz(10) To Kursor Step -1
               Incr P_e(8)
               Napisy(p_e(8)) = Napisy(p_e(7))
               P_e(8) = P_e(8) - 2
            Next
         End If
         Napisy(kursor) = Klaw
         Gosub Wyswietlanie_edytor
      End If
   Else
      Select Case Klaw
         Case 14:
         Cls
         Gosub Zerowanie_napisy
         Licz(10) = 0
         Kursor = 0
         Gosub Wyswietlanie_edytor
         Case 20:
         If Licz(10) > 0 And Kursor > 0 Then
            P_e(1) = Licz(10) - Kursor
            Incr P_e(1)
            P_e(3) = Kursor
            P_e(4) = Kursor
            For P_e(2) = 1 To P_e(1)
               Incr P_e(3)
               Napisy(p_e(4)) = Napisy(p_e(3))
               Incr P_e(4)
            Next
            Licz(10) = Licz(10) - 1
            Kursor = Kursor - 1
            Gosub Wyswietlanie_edytor
         End If
         Case 15:
         If Kursor > 20 Then
            Kursor = Kursor - 20
            Gosub Wyswietlanie_edytor
         End If
         Case 16:
         If Kursor < 31381 Then
            Kursor = Kursor + 20
            Gosub Wyswietlanie_edytor
         End If
         Case 17:
         If Kursor > 0 Then
            Kursor = Kursor - 1
            If Kursor = 0 Then Kursor = 1
            Gosub Wyswietlanie_edytor
         End If
         Case 18:
         If Kursor < 31400 Then
            Incr Kursor
            If Kursor = 31381 Then Kursor = 31400
            Gosub Wyswietlanie_edytor
         End If
         End Select
   End If

Loop
End

Wyswietlanie_edytor:
If Kursor > Licz(10) Then Kursor = Licz(10)
Wys_nap = Kursor - 20
Home Upper
For P_e(5) = 1 To 40

   If P_e(5) = 21 Then Home Lower
   If Wys_nap > 0 And Wys_nap < 31401 Then
      If Napisy(wys_nap) > 31 And Napisy(wys_nap) < 127 Then
         Lcd Chr(napisy(wys_nap))
      Else
         Lcd " "
      End If
   Else
      Lcd " "
   End If
   Wys_nap = Wys_nap + 1

Next
Select Case Kursor
   Case 0 : Locate 2 , 1
   Case 31487 : Locate 2 , 1
   Case Else : Locate 2 , 2
End Select
Return