Posts by Gerd5

    Habe 2 Dell USB-Tastaturen, bei denen beim Entsorgen das Kabel angeschnitten worden war, repariert.


    Dabei wurden 2 alte Micro-USB-Kabel, die beide am Micro-USB Stecker Wackelkontakt hatten, recycled.

    Es lohnt sich halt doch ab und zu, auch Teil-defektes zu behalten, um Dinge zu reparieren. :)


    Genau genommen waren es sogar 3 alte Micro-USB-Kabel: aber nachdem die zweite Tastatur nicht funktionieren wollte, musste ich feststellen, dass noch ein Kabelbruch am USB-A Stecker war. :fp:

    Also nochmal Tastatur auf und ein drittes teil-defektes Kabel erfolgreich verarbeitet.

    Beim Nutzen von BdosHL kann auch während einer Minute ein Überlauf erfolgen.

    Hängt halt davon ab, wann der Rechner gestartet wurde.

    Ein Ueberlauf kannst du immer bekommen. Egal ob 8, 16, 32 oder sonstwieviel Bits.

    Da stimme ich dir völlig zu.

    Jedes Zahlenformat kann überlaufen.

    Die Frage ist, wie oft und stört mich das?


    Überlauf macht Arbeit beim Berechnen von Ausführungszeiten: man kann sich zB. nicht darauf verlassen, dass die Millisekundenzahl bei der zweiten Messung größer ist als beim ersten Mal. Und ich brauche irgendwelche zusätzliche Informationen, ob da vielleicht ein oder sogar mehrere Überläufe waren.


    Im Millisekundentakt gibt es einen Überlauf:

    - bei 8 Bit (256) ca. 4x die Sekunde.

    - bei 16 Bit (65536) nach ca. 1 Minute. Wer aber zB. die Ausführungszeit von Apfelmännchen auf dem Rechner messen möchte, hat eventuell bereits nach einer Sekunde einen Überlauf; je nachdem wie lange der Rechner bereits läuft und somit der interne Millisekunden-Zähler bereits läuft.

    - bei 32 Bit (ca. 4 Milliarden): das normale Jahr hat ca. 31.5 Millionen Sekunden, in Millisekunden gerechnet gibt es also etwa 7 mal pro Jahr einen 32-Bit Überlauf, somit alle 1 bis 2 Monate.


    Für mich heißt das, dass ein 32-bit Zähler bei Zeitmessungen im Millisekundentakt für die meisten Anwendungen, zB. Apfelmännchen-Vergleich, angemessen und ausreichend sein sollte, ohne Überlauf.


    Und es macht sicher Sinn, die Komplexität möglichst einer Funktion zu bündeln und dann einfach anwenden zu können.


    Millis1 := GetMillis;

    { irgend etwas ausprobieren }

    Millis2 := GetMillis;

    MilliDauer := Millis2 - Millis1;

    { und dann mit dieser Erkenntnis etwas tun, zB. auf dem Bildschirm anzeigen :) }

    Ergänzung:

    Ich hatte oben nicht berücksichtigt, dass in Turbo Pascal 3 der Zahlentyp integer vorzeichenbehaftet ist, also nicht von 0 bis 65535 geht, sondern -32768 bis + 32767.

    Jedoch kommen von der BDOS Funktion vorzeichenlose 16-Bit Zahlen.

    Also muss noch eine Vorzeichenbehandlung bei der Umwandlung in eine Real-Zahl her.


    Function GetMillis : real;

    Var MillisHi, MillisLo : integer;

    Var Millis : real;

    Begin

    Inline(

    $3e/$f8/ { ld a,248 ; load Bdos function call number }

    $cd/$05/$00/ { call $0005 ; call Bdos function }

    $22/MillisLo/ { ld (MillisLo),hl ; store Millis lower 16 bit }

    $ed/$53/MillisHi); { ld (MillisHi),de ; store Millis higher 16 bit }

    { convert from double 16-bit integer to real }

    If MillisHi < 0

    Then Millis := 65536.0 + MillisHi

    Else Millis := MillisHi;

    If MillisLo < 0

    Then GetMillis := 65536.0 * Millis + 65536.0 + MillisLo

    Else GetMillis := 65536.0 * Millis + MillisLo;

    End;

    Hallo Guido,

    die Millisekunden werden vom BDOS Aufruf in den CPU Registern DE und HL gespeichert.

    Die sind jeweils nur 16 Bit groß und im normalen Ablauf auch ruckzuck wieder überschrieben.

    Nutzen kann man die Millisekunden wohl am ehesten als Real-Zahl.

    Hier mein Vorschlag für Turbo Pascal 3 auf CP/M mit einem kleinen Z80 Inline-Programm.

    (ohne Compiler frei getextet, nicht getestet)


    LG Gerd



    Function GetMillis : real;

    Var MillisHi, MillisLo : integer;

    Begin

    Inline(

    $3e/$f8/ { ld a,248 ; load Bdos function call number }

    $cd/$05/$00/ { call $0005 ; call Bdos function }

    $22/MillisLo/ { ld (MillisLo),hl ; store Millis lower 16 bit }

    $ed/$53/MillisHi); { ld (MillisHi),de ; store Millis higher 16 bit }

    GetMillis := 65536.0 * MillisHi + MillisLo; { convert to real }

    End;

    Ich möchte am Sonntag mit einem Tandy Color Computer Coco3 kommen.

    Der hat aber im Moment noch ein Problem mit seinem RAM. :D

    Das passt sehr gut. 1st1 kommt nur Samstags und zeigt was aus 1986/87. Und der Coco3 ist aus 1986. Dann ist Sonntags ein Tisch an der richtigen Stelle frei. Wenn Du das RAM-Problem bis dahin nicht gelöst hast, kümmern wir uns gemeinsam drum.

    Verwendet der CoCo das gleiche DIskettenformat wie der TRS-80? Dann wäre es schön, wenn Du mir eine DOS-Diskette für TRS-DOS mitbringen könntest. Damit kann ich ja dann weitere Disketten selbst formatieren.

    RAM:

    Vielen Dank für das Angebot. :thumbup:

    Mittlerweile läuft der Rechner wieder.

    Vor einigen Wochen hatte ich den aus USA gekauft als „getestet“.

    Gestern habe ich bei der 512KB RAM Erweiterungskarte die ICs geprüft mit meinem RetroChipTester: alle 16 ok.

    Allerdings ergab ein genauerer Blick, dass die Abblockkondensatoren an den DRAMs komplett falsch dimensioniert waren: 100pF (Code 101) statt den üblichen 100nF (Code 104). :fp:

    Außerdem war der 22uF Elko auf der Steckplatine defekt und hatte nur noch ca. 50nF (trocken, aber nicht gequollen). :sense:

    Da kommt mir die Vermutung, dass der Rechner zwar mal lief, aber eher instabil.

    Nachdem die Kondensatoren ersetzt wurden, funktioniert der Coco jetzt wieder :sunny:


    TRS-DOS-Diskette:

    Leider habe ich kein Diskettenlaufwerk am Coco, sondern nutze ein CoCoSDC, also ein Steckmodul mit SD-Karte.


    Freue mich auf Sonntag :)

    Hädrönn Cjölidder ist wohl ein klassisches Beispiel für ein DIY Projekt, weil es das nämlich nicht fertig zu kaufen gibt.

    Allerdings soll es dort einige Computer geben, die noch etwas reifen müssen, um im Verein als "klassisch" anerkannt zu werden.

    Passend zu Advent:

    Ich habe unserem Plasma-Kerzenanzünder einen neuen Li-Ion Akku eingebaut und er geht wieder.


    Der alte Akku war eine Spezial-Version Huahui HCC 0840 mit 3.7V und 170 mAh.

    Der Neue ist ein Standard AAA Typ ICR10440 mit 350 mAh, der etwas länger ist und etwas mehr Durchmesser hat.


    Interessanterweise ist im Gehäuse eigentlich Platz für den AAA Akku. Aber an einer Stelle wurde die Gehäusewand besonders dick gestaltet und die Platine extra lang.


    Also nichts, was man nicht mit Dremel, Zange und Lötkolben beheben könnte. :)


    In diesem Sinne:

    Eine schöne Adventszeit!

    Die andere Nummer TK 82C8635871 2J D08 bzw. UMC8631D08 findet ein ebay-Angebot:

    UMC TK 82C8635871 2J D08 VLB Multi-I/O IDE Floppy Controller (1994)

    UMC TK 82C8635871 2J D08 VLB Multi-I/O IDE Floppy Controller (1994) | eBay
    Entdecken Sie UMC TK 82C8635871 2J D08 VLB Multi-I/O IDE Floppy Controller (1994) in der großen Auswahl bei eBay. Kostenlose Lieferung für viele Artikel!
    www.ebay.de


    Sieht für mich passend aus:


    Auf der Rückseite finden sich Jumper-Bedeutungen

    (leider teils nicht so gut lesbar und teils überklebt)


    Aber vielleicht klärt das schon die eine oder andere Frage oder bringt weiter


    Viele Grüße

    Gerd

    Siehe auch

    Noch eine Info:

    Die MZ80 Board Interfacekarte passt nur beim Sharp MZ-80K in den Anschluss an der Rückseite (2x 25-pol Bus Connector).

    Die anderen Sharp-Computer haben eine Pin-Zahl / Steckerform / Belegung:

    Z.B. hat der MZ-80A einen 2x 22-pol Platinenstecker, der MZ-80B 2x 20-pol Pfosten.

    Sharp hat natürlich auch eigene Drucker angeboten, z.B. MZ-80P3 / MZ-80P4 etc.

    Epson war wohl Lieferant für Sharp.

    Die Sharp Drucker hatten nach meiner Kenntnis allerdings eine kleine Nickligkeit:

    Die Polarität des Strobe-Signals war genau umgekehrt zum Epson-Standard:

    Sharp: Strobe auf positive Flanke

    Epson: Strobe auf negative Flanke