Code:
If Pointer = 31 Then Pointer = 0 
Incr Pointer 
Eepointer = Pointer 
Call Gettime 
Codestring = Folge + Bcd(day) + Bcd(month) + Bcd(h) + Bcd(m) 
Ecodestring(pointer) = Codestring
Hiermit wird ganz sicher nicht auf Position 1 der neueste Eintrag abgespeichert, sondern an der Stelle Pointer. Das ganze ist ein Ringspeicher, genauso wie ich den gemacht hätte.
Schreiben scheint also klar zu sein. Lesen geht wohl so:
Code:
If Richtung = 0 Then Incr Position           'Position ist die aktuelle Lese position (z.B. 17)
If Richtung = 1 Then Decr Position 
If Position = 31 Then Position = 1           'max 30, darüber wieder bei 1
If Position = 0 Then Position = 30           'min 1, darunter wieder 30
If Position = 255 Then Position = 30       'Sinn ist mir nicht klar
Pointer = Eepointer                               'EEPointer ist die letzte SchreibPosition (z.B. 25)
Sprung = Pointer - Position                    'Sprung = 25 - 17 = 8
Sprung = Sprung + 1                            'Sprung = 9
If Sprung >= 0 Then 
    Stelle = Pointer                                'Stelle = 25
    Stelle = Stelle - Position                    'Stelle = 25 - 17 = 8
    Stelle = Stelle + 1                            'Stelle = 9
  Else 
    Stelle = Pointer                                'angenommen Pointer war 5
    Stelle = Stelle - Position                    'Stelle = 5 - 17 = -12
    Stelle = Stelle + 31                          'Stelle = -12 + 31 = 19
End If 
Codestring = Ecodestring(stelle)            'in einem Fall liest er bei 9, im anderen bei 19
Warum an diesen Stellen gelesen wird, verstehe ich nicht. Hast du das programmiert? Weißt du, warum dies so ist?