Kann hier jemand 8086er Assembler?

  • Zitat

    The hardware clock only counts up to 4095 days from the
    "zero" date, which was previously set at 1984.01.01. This
    release changes the "zero" date to 1992.01.01. M24CLK will
    therefore fail again after 2003.03.18.

    Nun, wer kann die ASM im Anhang so anpassen, dass es ab 2016 für wieder 4095 Tage funktioniert und mir ggf. sagen was er geändert hat?
    m24clk11.zip (Größe: 11,78 KB / Downloads: 1)



    nun, nimmer so wichtig. hab was von at&t gefunden, geht bei mir auch
    das wurde vorausschauend gemacht, man kann in der config.sys die aktuelle jahrszahl angeben.
    CLOCKFIX.ZIP (Größe: 3,01 KB / Downloads: 0)

  • Kurz darüber geflogen scheint die Hardware intern den 1.1.80 als Nullpunkt zu verwenden (steht so bisschen im Widerspruch zu 1984 aus dem Zitat?). Der Code verwendet einen BIAS Offset von 12 Jahren, der wird beim Auslesen dazuaddiert, beim Schreiben wieder davon abgezogen. Beispiel INPUT und OUTPUT:

    Code
    INPUT:
              mov       ah,-2               ; Use INT 1A.FE
              int       1ah                 ;   to read from hardware clock
              add       bx,cs:BIAS
              mov       [di],bx             ; bx: # days since 80.01.01

    Du kannst versuchen das selber anzupassen, siehe Zeile 143:

    Code
    BIAS      dw        (366+3*365)*3       ; # days between 1980.01.01
                                            ;            and 1992.01.01

    = 3 * 366 + 9 * 365 = 3 Schaltjahre und 9 normale Jahre. Für 2016 als Nullpunkt musst du also 9 Schaltjahre und 27 normale Jahre nehmen, also lustigerweise genau 3x länger.

    Code
    BIAS      dw        (366+3*365)*9

    Da ist jetzt eine 9 anstatt eine 3, weil 3*3 = 9. Ansonsten 9*366+27*365. Das liegt immer noch im 16-Bit Range und sollte daher keine Probleme machen, wobei ich mir den Rest vom Source-Code noch nicht angeschaut habe..

    Wie du den Source-Code kompilierst kann ich dir aber spontan nicht gerade sagen, da der Offset aber fix ist könnte man evtl. auch das Binary patchen..

    Nachtrag: Der ursprüngliche BIAS war offenbar 4 Jahre, darum die Multiplikation mit 3..

    Einmal editiert, zuletzt von gandro (7. August 2016 um 12:24)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!