Hallo,
ich wollte ein von mir geschriebenes BASIC-Programm im BASCOM-eigenen Simulator testen.
Meine BASCOM-Version ist eine Demoversion, die aktuellste, die im Moment zum Download angeboten wird.
Nun zum Problem:
Der Simulator scheint ziemlich langsam zu sein, eine Sekunde im Timer verbraucht circa 3 Sekunden auf dem Rechner, wobei 99% CPU-Leistungbenutzt werden (selbst, wenn der Simulator wieder steht (?))
Mit zunehmender Komplexität des Programms dauert die Verarbeitungszeit immer länger.
Im Simulatorfenster erscheint häufig die Meldung "Stack pointer and software stack overlap".
Hier der Code des Programms (ist nicht der schönste, ist das erste mal, dass ich BASIC lerne):

Code:
'$sim
 $regfile = "m8def.dat"
 $crystal = 8000000

 $framesize = 16
 $swstack = 8
 $hwstack = 32

 Config Lcd = 16 * 2
 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
 Config Lcdbus = 4
 Config Timer1 = Timer , Prescale = 256                     'Konfiguriere Timer1
 Enable Timer1                                              'schalte den Timer1 ein
 On Timer1 Isr_von_timer1                                   'verzweige bei Timer1 überlauf zu   Isr_von_Timer1
 Enable Interrupts
 Timer1 = 34285                                             'Timer1 soll schon von 34285 wegzählen

 Dim Hours As Integer
 Dim Mins As Integer
 Dim Secs As Integer
 Dim Dchge As Integer


' Hours = 24
' Mins = 60
' Secs = 60
' Dchge = 0

 Hours = 0
 Mins = 0
 Secs = 5
 Dchge = 0

 Cls


Do
 If Dchge = 0 Then
  Locate 1 , 1
  Lcd "Verbleibend:"
 End If
 If Dchge = 1 Then
  Locate 1 , 1
  Lcd "Wechsel!"
 End If

  If Hours = 0 Then
  If Mins = 0 Then
   If Secs = 0 Then
    Hours = 24
    Dchge = 1
   End If
  End If
 End If

 If Mins = 0 Then
  If Secs = 0 Then
   If Hours > 0 Then
     Mins = 60
     Decr Hours
   End If
  End If
 End If

 If Secs = 0 Then
  Secs = 59
  Decr Mins
 End If

 Locate 2 , 1
 Lcd Hours ; "h:" ; Mins ; "m:" ; Secs ; "s :)"

Loop
End

Isr_von_timer1:                                             'ISR von Timer1
 Timer1 = 34285                                             'Timer1 soll wieder von 34285 wegzählen
 Decr Secs
Return
Der Code macht eigentlich nix schwieriges:
Auf dem Display steht die verbleibende Zeit bis zum "Wechsel", ich habe das im Programm so eingestellt, dass es nur noch 5 sekunden sind, die bis zum wehcsel verbleiben.

Ich finde leider nichts entsprechendes zu diesem Problem weder im Forum noch im Internet.
Habt ihr eine Idee?
Vielen Dank,
grüße Simon