Countdown?

  • Telespielator schrieb:

    Was genau liegt den in den Speicherstellen 160-162?
    Programmierer und kennt Google nicht? :gruebel
    z.B. Guckstduhier: sta.c64.org/cbm64mem.html

    Oder hier ausführlicher: unusedino.de/ec64/technical/project64/mapping_c64.html
    ___________________________________________________________
    Meine Kreationen: Deviant Art | Toonsup | Flickr | Youtube
    | Twitter
    Avatar: Copyright 2017 by Saiki
  • @syshack:

    Nach meiner Rechnung benötigt das 22 Bytes mehr im Speicher, wenn man pro Befehl eine Zeile nimmt.
    Der Doppelpunkt ist daher speichermäßig effizienter.

    Eine Zeile benötigt 5 Byte, ein Doppelpunkt nur 1 Byte.

    Schönen Gruß.
  • BIF schrieb:

    @syshack:

    Nach meiner Rechnung benötigt das 22 Bytes mehr im Speicher, wenn man pro Befehl eine Zeile nimmt.
    Der Doppelpunkt ist daher speichermäßig effizienter.

    Eine Zeile benötigt 5 Byte, ein Doppelpunkt nur 1 Byte.

    Schönen Gruß.
    Das bezweifle ich ja auch nicht. Nur muss man abwägen ob man hier etwas veröffentlichen will welches
    • zur verständlichen Veranschaulichung eines Prinzips dient
    • auf gute Lesbarkeit geachtet wird
    • dokumentierten Code enthält
    vs.
    • alles in einer Zeile unleserlich packen
    • null Dokumentation der Funktion bereistellt
    • keine Nachvollziehbarkeit enthält
    • Pseudo-Speedcode ist
    ___________________________________________________________
    Meine Kreationen: Deviant Art | Toonsup | Flickr | Youtube
    | Twitter
    Avatar: Copyright 2017 by Saiki
  • syshack schrieb:

    Telespielator schrieb:

    Was genau liegt den in den Speicherstellen 160-162?
    Programmierer und kennt Google nicht? :gruebelz.B. Guckstduhier: sta.c64.org/cbm64mem.html

    Oder hier ausführlicher: unusedino.de/ec64/technical/project64/mapping_c64.html
    Haha... "Programmierer"! "BASIC-Amateur" trifft's wohl eher... Klar kenne ich Google, aber ich bin derzeit nicht zu hause und kann hier nicht ewig den Rechner blockieren, daher danke für die hilfreichen Links! Vor allem der zweite, ich zitiere mal:

    160-162 $A0-$A2 TIMESoftware Jiffy ClockThese three locations are updated 60 times a second, and serve as asoftware clock which counts the number of jiffies (sixtieths of asecond) that have elapsed since the computer was turned on.The value of location 162 ($A2) is increased every jiffy (0.1667second), 161 ($A1) is updated every 256 jiffies (4.2267 seconds), and160 ($A0) changes every 65536 jiffies (or every 18.2044 minutes).After 24 hours, these locations are set back to 0.The jiffy clock is used by the BASIC reserved variables TI and TI$.These are not ordinary variables that are stored in the RAM variablearea, but are functions that call the Kernal routines RDTIM (63197,$F6DD), and SETTIM (63204, $F6E4). Assigning the value of TI or TI$to another variable reads these locations, while assigning a givenvalue to TI$ alters these locations.To illustrate the relationship between these locations and TI$, trythe following program. The program sets the jiffy clock to 23 hours,50 minutes. After the program has been running for one minute, allthese locations will be reset to 0.100 TI$="235900"110 PRINT TI$,PEEK(160),PEEK(161),PEEK(162)120 GOTO 110Since updating is done by the IRQ interrupt that reads the keyboard,anything which affects the operation of that interrupt routine willalso interfere with this clock. A typical example is tape I/Ooperations, which steal the IRQ vector for their own use, and restoreit afterwards. Obviously, user routines which redirect the IRQ and donot send it back to the normal routine will upset software clockoperation as well.
    Damit sollte sich doch was anfangen lassen, ich gucke nachher mal... :) Wie ist das denn mit dem IRQ Interrupt zu verstehen? Das bezieht sich nur auf Assembler-Subroutinen, oder? Oder bremsen Tastatureingaben und Joystickbewegungen etwa die interne Uhr ab?
    Bitte beachten: Telespielatorgesetz (TspG)
    Verstöße gegen das TspG werden umgehend und gnadenlos von Supererdbeeregeahndet!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Telespielator ()

  • Noch eine ganz kurze Version:

    Quellcode

    1. 10 ti$="001800" : rem 12 sekunden zu '001812', wo Speicherstelle 160 erstmals gesetzt wird
    2. 20 on peek(160) goto 40 : rem ueberschritten
    3. 30 goto 20
    4. 40 print "yes!"
    Da müsste man ggf. etwas mit ti$ jonglieren, weil das schlimmstenfalls um 4,x Sekunden schwankt.
    Read'n'Blast my jump'n'stop-text-sprite-scroller Select A Move

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?
  • Telespielator schrieb:

    Wie ist das denn mit dem IRQ Interrupt zu verstehen? Das bezieht sich nur auf Assembler-Subroutinen, oder? Oder bremsen Tastatureingaben und Joystickbewegungen etwa die interne Uhr ab?
    Umgekehrt - der IRQ fragt die Tastatur ab und zählt TI hoch. Genau deshalb zählt TI ja in sechzigstel Sekunden: eben weil das System den CIA-Timer so einstellt, dass 60mal pro Sekunde ein IRQ ausgelöst wird.

    Wenn nun aber mal der IRQ eine Zeitlang unterdrückt wird, z.B. während Lade- oder anderer Bus-Operationen, dann zählt eben auch TI in dieser Zeit nicht hoch - die TI$-Uhr geht dann etwas nach.
    Yes, I'm the guy responsible for the ACME cross assembler
  • "Etwas" ist gut! Wenn drei Minuten von der Datassette geladen wird, dann müssten das doch auch drei Minuten sein, die einem nachher fehlen, oder?
    Aber im normalen Betrieb, also durch Tastatureingaben und Joystickabfragen wird TI$ nicht verzögert, oder?
    Bitte beachten: Telespielatorgesetz (TspG)
    Verstöße gegen das TspG werden umgehend und gnadenlos von Supererdbeeregeahndet!
  • Telespielator schrieb:

    "Etwas" ist gut! Wenn drei Minuten von der Datassette geladen wird, dann müssten das doch auch drei Minuten sein, die einem nachher fehlen, oder?
    Nur wenn der Interrupt während der kompletten Ladezeit gesperrt ist. Von der Datassette weiß ich es nicht, aber beim seriellen Bus wird der IRQ zwischendurch immer wieder aktiviert - es fehlt also nur ein Teil der Zeit.

    Telespielator schrieb:

    Aber im normalen Betrieb, also durch Tastatureingaben und Joystickabfragen wird TI$ nicht verzögert, oder?
    Nein.
    Yes, I'm the guy responsible for the ACME cross assembler