Posts by MOS

    Ich habe einmal versucht, eine keyboard matrix zu zeichnen. (siehe attachment)


    keyboard matrix.pdf


    Die von mir gezeichnete keyboard matrix hat 8 Spalten und 8 Zeilen.


    Jede Spalte liegt ueber einen Widerstand auf +5 Volt.


    Die Ausgaenge des Decoders sind invertiert, das heisst im inaktiven Zustand liegt jede Zeile auf +5V.


    Jetzt wird durch den Decoder eine Zeile nach der anderen abgefragt, indem der fuer diese Zeile zustaendige Decoderausgang auf 0V geht.


    An jedem Schnittpunkt zwischen Spalten und Zeilen ist eine keyboard Taste.


    Ist keine Taste gedrueckt, bleiben alle Spalten auf 5 V und es wird 1111 1111 in das output latch geschrieben.


    Wird in dieser Zeile jedoch eine Taste gedrueckt, dann wird die zustaendige Spalte auf 0 V runtergezogen.


    Im output latch entsteht in dieser Spalte eine null.


    Ist etwa die zweite Spalte betroffen, so wird 1011 1111 in das output latch geschrieben.


    Erst geht also eine Zeile auf 0 V.


    Dann wird ein wert in das output latch geschrieben, der einer in dieser Zeile gedrueckten Taste entspricht.


    Jetzt wird das latch ausgelesen und es wird die Position (0-7) der gedrueckten Taste bestimmt.


    Das kann etwa mit einem rotate byte left through Carry geschehen.


    Ist das Carry an einer Stelle low, dann hat man eine gedrueckte Taste gefunden und es kann mit branch on no carry aus der Abfrage rausgesprungen werden.


    Hat man eine gedrueckte Taste gefunden, wird sodann die Tastennummer berechnet.


    Die ergibt sich aus Zeilennummer * 8 + Position der gedrueckten Taste (0-7).


    Diese Tastennummer wird jetzt in das X Register geschrieben und dient als offset um in einer Tabelle den dieser Tastennummer zugeordneten ASCII Wert zu finden.


    Das geschieht mit einem LDA absoulute, X Befehl.


    Etwa LDA $4000, X nimmt $4000 als die Anfangsadresse der Tabelle und addiert nun den offset im X Register zu dieser Anfangsadresse dazu.


    Der Inhalt der so gefundenen Speicherzelle ist der dieser Taste zugeordnete ASCII Wert.


    Dieser ASCII Wert wird nun bei den meisten Computern in den Tastaturpuffer geschrieben.


    Das alles geschieht waehrend einer Interruptroutine.


    Die C64 Interruptroutine wird durch die Netzfrequenz getriggert, sie duerfte bei einem PAL C64 also 50 mal in der Sekunde aufgerufen werden und so 50 mal in der Sekunde die Tastatur abfragen.


    Was bei Commodore Computer ebenfalls geschieht ist, dass der ASCII Wert in einen Bildschirmcode umgerechnet wird und letzterer dann in den Bildschirmspeicher geschrieben wird, wo dann der Buchstabe auf dem Bildschirm erscheint.


    Ich weiss jetzt allerdings nicht mehr, ob bei Commodore erst der ASCII Wert in den Tastaturpuffer geschrieben wird, oder ob der Wert erst in den Bildschirmspeicher geschrieben wird und dann sobald ein RETURN passiert, diese Bildschirmzeile dann erst in den Tastaturpuffer geschrieben wird....


    Cave: Der Decoder und das output latch sind keine Speicherbausteine. Sie liegen im I/O Adressraum und nicht im memory Adressraum. Ausnahme: ein memory mapped I/O Adressraum wie beim C64, da werden die I/O Bausteine in den memory Adressraum "eingeblendet".

    welchen pin meinst Du?


    ich habe in meinem Datenblatt nur pin 21 Vpp.


    Der 2764 hat ebenfalls Vpp auf pin 1.


    Ich stelle mir das so vor, dass Vpp eigentlich nur ein PROGRAMMING ENABLE signal darstellt, das richtige Programmieren aber ueber die /PGM Impulse laeuft.


    Daher die Frage, wieso der 2716 kein /PGM braucht.

    Das mit dem NICHT DIE RUN STOP taste verlegen, erspart Dir einige Arbeit.


    In der Tastaturmatrix ist jeder Taste eine Nummer zugeordnet.


    Es wird die Nummer der gedrueckten Taste ermittelt.


    Diese Nummer wird in das X Register gegeben.


    Dann wird mit LDA absolute, X der zugehoerige ASCII wert aus der Tabelle von McBacon ausgelesen.


    Die absolute Speicherzelle enthaelt die Anfangsadresse der Tabelle.


    Es wird der Inhalt des X Registers zu der Anfangsadresse der Tabelle addiert und dann wird der unter dieser Adresse gespeicherte ASCII wert aus der Tabelle ausgelesen.


    kannst Du Dir das vorstellen?


    Es mag sein, dass es mehr als eine Tabelle gibt, eben eine weitere Tabelle fuer die SHIFT und eine weitere Tabelle fuer die C= Taste.

    ich habe ein Datenblatt, in dem ein 8371, der ja nur 512 kB Chip RAM kann (so viel ich weiss) auch als ein 'fat Agnus' bezeichnet wird.


    ich habe die erste Seite des Datenblatts hochgeladen, das mit dem 'fat Agnus' steht auf der ersten Seite rechts unten.


    Das ganze Datenblatt war leider zu gross, um es hier hochzuladen.


    ich habe immer gedacht, nur ein 8372 waere ein 'fat Agnus'.


    Aber ich bin allerdings ein Anfaenger, was Amigasachen angeht.


    8371_FAT_AGNUS_(PAL)_(318071-01) FIRST PAGE.pdf

    soweit ich mich erinnere, wird die RUN STOP Taste in der Interrupt Routine abgefragt und gegebenenfalls wird ein flag gesetzt.


    Du musst Dir die Tastatur als eine Matrix aus Zeilen und Spalten vorstellen.


    Es wird jeweils eine Zeile ausgelesen, dann wird die Zeilennummer geaendert und die naechste Zeile wird ausgelesen.


    Das Problem ist , dass, wenn Du die RUN STOP Taste verlegst, die Interruptroutine erst die Zeile aendern muss, weil die neue RUN STOP Taste bestimmt in einer anderen Zeile ist.


    Also erst die Zeilennummer aendern, die Zeile mit der neuen RUN STOP Taste auslesen und dann die Zeilennummer wieder zuruecksetzen.


    Also vielleicht die RUN STOP Taste NICHT aendern, das erspart Dir einigen Programmieraufwand...

    ich habe die Tastenbelegung meiner PET geaendert.


    Erst habe ich die Tastatur zerlegt, die Tastenkappen abgezogen und anders draufgesetzt.


    Dann habe ich eine Tabelle im ROM geaendert, wo die Nummer einer Taste einem ASCII wert zugeordnet wurde.


    Das ROM mit dieser Tabelle habe ich durch ein EPROM mit meiner geaenderten Tabelle ersetzt.


    Das ist die Tabelle, von der Mac Bacon spricht.


    wo es allerdings noch ein wenig komplizierter wurde, das war die RUN STOP Taste zu aendern.


    Da musste ich in die Tastaturabfrageroutine eingreifen.


    moechtest Du das machen?


    Die RUN STOP Taste setzt ein flag.

    mir ist aufgefallen, dass das 2716 EPROM keinen /PGM input zum Programmieren des EPROMS hat.


    Ein 2764 hat einen /PGM input, wo waehrend des Programmierens Impulse an das EPROM weitergegeben werden.


    wieso hat ein 2716 keinen solchen /PGM input?

    hallo


    zunaechst muss ich zugeben, dass ich keinen Drucker habe und in Sachen Drucker unbeleckt bin.


    ich versuche unter VICE 3.1 mit dem C64 emulator einen Drucker zu emulieren.


    Folgendes Programm


    100 OPEN 4,4

    110 PRINT#4,"HELLO WORLD"

    120 CLOSE 4

    130 END


    wenn ich nachher in mein directory schaue, dann ist da das viceprnt .out file, aber wenn ich es oeffne, steht das nichts drinnen.


    was mache ich falsch?


    Die peripheral settings habe ich use IEC device aktiviert, printer emulation FILE SYSTEM, PRINTER DRIVER ASCII, ouput TEXT, output to file 1 uund ouput file # 1 name viceprnt.out

    hallo


    ich habe auf zimmers.net im ftp Bereich ein Charakter ROM image gefunden, da heisst es, das waere fuer BASIC 2 und BASIC 4.


    Eine BASIC 2 PET/CBM hat eine 8 x 8 pixel Buchstabenmatrix.


    Ein 8032 CBM unter BASIC 4 hat jedoch keine 8 x 8 Matrix. Die Buchstaben sind schmaeler.


    wie kann dieses Charakter ROM image also gleichzeitig fuer einen BASIC 2 CBM UND fuer einen 8082 CBM sein?


    Oder ist das vielleicht ein image fuer einen 4032 CBM unter BASIC 4 mit 8 x 8 Buchstabenmatrix?


    ich haenge dieses CHAR ROM image einmal an diesen post dran.

    Files

    • 901447-10.bin

      (2.05 kB, downloaded 3 times, last: )

    ich versuche mich gerade an ein Hameg 20 MHZ Digitaloszilloskop aus den 1980ern und 1990ern zu erinnern, das ich einmal gesehen habe.


    fallen Euch vielleicht irgendwelche Modellnummer von 20 MHz Digitaloszilloskopen ein, die es in den 1980ern und 1990ern gab?


    Dieses Oszilloskop hatte einen IEEE port auf der Rueckseite, den es wohl als Zubehoer gab.

    hallo


    wenn ich mich ueber Amiga 500 C Compiler schlau mache, finde ich den Aztec C und den Lattice C Compiler.


    ich habe jedoch auf ebay einmal einen Amgia C Compiler gesehen, der weder Lattice noch Aztec war.


    hier ist ein Coverfoto



    (Da steht Amiga 'C' aber das ist schlect zu lesen)


    Da habe ich gedacht, das koennte vielleicht ein Compiler fuer den Amiga 1000 sein, der ja vor dem A500 da war.


    Eben weil er auch diese Farbstreifen hat, die glaube ich eher fuer den Amiga 1000 typisch sind.


    Ich habe in der gleichen Aufmachung auch noch einen Amiga Assembler.


    Jetzt ueberlege ich, ob ich diesen Assembler auch fuer den A500 verwenden kann.


    Ich meine, beide haben ja eine 68000 CPU.


    Oder welcher Assembler ist fuer den A500 gedacht?


    Ist dieser C Compiler auch fuer den A500?


    Gerade lese ich, dass es einen C Compiler von Commodore gegeben hat, der in echt ein verkappter Lattice C Compiler war.


    Das koennte dieser Amiga 'C' Compiler sein....