Turbo BASIC XL und VBI


Turbo BASIC XL und VBI

von slx » Di 10. Mär 2015, 22:11
Verwendet Turbo BASIC XL (zB für die TIME-Funktion oder PM-Grafik) eigene VBI-Routinen oder kann man da wie bei ATARI BASIC nach Lust und Laune eigene verwenden?

Re: Turbo BASIC XL und VBI

von tfhh » Mi 11. Mär 2015, 08:29
Moin,

slx hat geschrieben:Verwendet Turbo BASIC XL (zB für die TIME-Funktion oder PM-Grafik) eigene VBI-Routinen oder kann man da wie bei ATARI BASIC nach Lust und Laune eigene verwenden?

Meines Wissens nach installiert TBXL keine eigenen VBI Routinen, ich wüßte auch nicht, wozu. Die TIME$ Funktion nutzt die normalen drei Speicherstellen RTCLOK (dez. 18,19,20).

Im Sinne einer sauberen Programmierung (Stichwort: SDX mit "TD ON" oder soetwas in der Art) solltest Du so vorgehen, daß Dein VBI-Code vor der Installation die entsprechenden Vektoren (siehe Profibuch, Speicherplan Page 2, Vektoren VVBLKI und VVBLKD) sichert, die eigene Routine einhängt und anschließend zum vorherigen Inhalt des Vektors weiterspringst. War keine entsprechende Routine installiert, wird der VBI normal beendet (OS zeigt auf eine "Exit" Routine). Nach Möglichkeit nur den Deferred VBI verwenden und natürlich auch die Laufzeit achten, aber das merkt man sonst recht schnell 8)

Gruß, Jürgen

Re: Turbo BASIC XL und VBI

von slx » Mi 11. Mär 2015, 09:32
Danke für die Tips. Ich dachte, dass TBXL vielleicht eine eigene "richtige" Uhr mit Sekunden hat, aber wenn es nur RTCLOK ausgibt, ist das natürlich nicht nötig.

Da ich eine "korrigierte" Uhr ohne RTCLOK programmieren will, brauche ich den Immediate VBI fürs "weiterzählen", da der deferred ja bei SIO-Aktivität "auslassen" könnte und dann geht die Uhr falsch. Im Moment bin ich bei einer Genauigkeit von einer Sekunde pro Tag.

Cycle-Limit (auch kürzeres für NTSC) kenne ich, und da bin ich weit drunter. Sind nur 200 Bytes fast ohne Loops.

Re: Turbo BASIC XL und VBI

von Sleepy » Mi 11. Mär 2015, 12:37
slx hat geschrieben:Danke für die Tips. Ich dachte, dass TBXL vielleicht eine eigene "richtige" Uhr mit Sekunden hat,...


Hat es: TIME$.

TIME$ enthält eine Zeichenfolge in der Form HHMMSS, d.h. 10 Uhr 15 und 23 Sekunden wird als "101523" übergeben.

Gesetzt wird die Zeit, beispielsweise 11 Uhr 38 und 0 Sekunden, mit TIME$="113800".

Sleepy

Edit: Hier ein Beipiel: klick

Re: Turbo BASIC XL und VBI

von slx » Do 12. Mär 2015, 00:46
Danke!

Wenn ich das richtig verstanden habe, arbeitet TBXL aber mit '50 jiffies / Sekunde' und einem Fehler von ein paar Sekunden pro Tag?

Re: Turbo BASIC XL und VBI

von Jac » So 15. Mär 2015, 22:49
Hi,

TBXL verwendet innerhalb des VBI die Standard OS Vektoren und Routinen. Allerdings hat es einen besondere NMI/IRQ Routine, die aktiv ist wenn der Interrupt auftritt, solange das OS ausgeschaltet ist. Dann wird das OS für die Dauer des Interrupts wieder eingeschaltet und vor dem RTI wieder aus. Ein Programm was für das normale OS geschrieben ist merkt davon nix.

Der I/O hat keinen Einfluss auf die Uhr. Das Hochzählen von RTCLOCK/+1/+2 ist immer das Erste,was im Immediate VBI des OS passiert. Der "Fehler pro Tag" kommt schlich daher, dass die Routine "/50" rechnet. Die exakte VBI Rate unter PAL ist aber 49,861 FPS. Kannst als ruhig RTCLOCK nehmen und dann einfach genauer rechnen.

Grüße, Peter.