Junior Computer ][

  • Hallo klaly


    1. welcher IO-Bereich sollte an den Lötjumpern gesetzt werden: K2/K3/K4 ?

    nimm einfach K2.


    2. Was ist EhBasic eigentlich ?

    Enhanced Basic wurde von Lee Davison entwickelt, der leider bereits 2013 im Alter von 49 Jahren verstorben ist. Sein Basic wurde seit dem nur wenig weiterentwickelt. Ich habe mich für sein Basic entschieden, da es gut (auch im Source Code) dokumentiert ist. Die EhBasic Dokumentation hatte ich jetzt in meiner letzten ZIP leider nicht dazugepackt, was ich jetzt aber hiermit nachhole.

    HansOtten hat auf seiner Seite auch einiges dazu gesammelt. http://retro.hansotten.nl/6502-sbc/lee-davison-web-site/

    Ich habe übrigens gleich den Patch für Groß-/Kleinschrift mit eingepflegt. Zu beachten ist hier, dass Variablen somit case sensitive sind. M und m sind also verschiedene Variablen.

    Ich habe mir auch erlaubt, die bestehende Version 2.22 auf 2.23 zu erhöhen, um einen Unterschied zu den im Inernet erhältlichen anderen Versionen zu verdeutlichen. Ich hoffe Lee verzeiht mir das.


    3. Gibt es dort auch PEEK und POKE ?

    Ja gibt es. Und ebenfalls DEEP und DOKE für 16 Bit Werte.


    4. Mit welchem Befehl komme ich zum Monitor zurück ?

    Du kannst entweder die ST(op) Taste auf dem Junior drücken, oder im Basic CALL $E003 eingeben, was den Kaltstartvektor des Monitors aufruft. Um dann ohne Datenverluste wieder zurück zum Basic zu kommen springst du zu Adresse $0000 in dem du 0G am Prompt eingibst. Wenn du Basic aber komplett neu starten und initialisieren möchtest gibst du B000G ein.



    Übrigens ist leider ein Nachteil von EhBasic, dass die Befehls Token ab dem Wert $80 beginnen und somit nur 128 Befehle möglich sind. Ich habe jetzt bereits einige Befehle für eine zukünftig geplante Grafikkarte reserviert und eingefügt, damit sich bei den Token später nichts mehr verschiebt, sonst sind gespeicherte Programme nicht mehr startbar, da diese nicht im Klartext sondern tokenized gesichert werden. Man muss da leider für die Befehle, Funktionen und Operatoren eine bestimmte Reihenfolge einhalten, sonst könnte man einfach nach dem letzten Befehl einen weiteren dranhängen.

    Wie auch immer, jetzt sind leider nur noch eine Hand voll freier Token übrig, so dass eine weitere Befehlsvergrößerung fast unmöglich wird.


    Ein weiterer Nachteil ist, dass EhBasic leider manchmal Murks macht, wenn eine Zeile mit den Pfeiltasten editiert wird. Ausserdem war (ist) von mir geplant, noch einen MOD(ulo) Operator einzufügen, was sich leider als höchst kompliziert herausgestellt hat, da man, wegen verschiedener Ergebnistypen nicht so einfach im Assembler Code verschiedene Befehle (+ / * Int() ) aneinander reihen kann. Ich werde mich da aber noch irgendwie durchbeißen.

  • @2ee,
    danke für die ausführliche Erklrärung.
    Zum Ausstig in den Monitor wäre es nett eine extra Befehl, wie z.B. MON oder SYS zu haben.
    OK wenn der natürlich (auch bei Diektbefehl) einen Token verbraucht, dann ist das schlecht.

    Zur Token Thematik,
    könnte man eine Art ESC Token definieren, wo dann neue Befehle halt aus zwei Tokens bestehen würden, ...
    Aber vermutlich würde dies tiefgreifende Änderung nötig machen.

    Und dann noch ein Wunsch zum Monitor:
    Mir würde es sehr gut gefallen, wenn man diese "verdammte" Baudraten Erkennung abschalten könnte, notfalls würde ich sie einfach raus patchen. Evtl. könnte man eine Art Setup machen, wo man Baudrate und auch anderes abspeichern und in den Clock Chip legen könnte.

    Mir würde es aber bereits reichen, die Baudrate fix einzupatchen.



    mfG. Klaus Loy

  • Zum Ausstig in den Monitor wäre es nett eine extra Befehl, wie z.B. MON oder SYS zu haben.
    OK wenn der natürlich (auch bei Diektbefehl) einen Token verbraucht, dann ist das schlecht.

    Man kann mit CALL den Befehlssatz noch erweitern. Dann könnte man z.B. mit CALL MON den Monitor aufrufen.


    Auf diese Art möchte ich auch später DOS Kommandos unterstützen, da auch hier die wenigen verbleibenden Token ein Problem darstellen. Dabei hatte ich im speziellen aber auch über einen CALL alias namens DOS nachgedacht, um dann eben DOS DIR oder DOS CD nutzen zu können. Ist aber alles noch völlig offen und hier diskutabel.


    Mir würde es sehr gut gefallen, wenn man diese "verdammte" Baudraten Erkennung abschalten könnte, notfalls würde ich sie einfach raus patchen. Evtl. könnte man eine Art Setup machen, wo man Baudrate und auch anderes abspeichern und in den Clock Chip legen könnte.

    Das war tatsächlich bereits eine Überlegung von mir, bei vorhandener RTC die aktuelle Baudrate im gepufferten RAM abzulegen und die "verdammte" Erkennung erst wieder laufen zu lassen, wenn das Terminal dann nicht adäquat antwortet.


    Ich muss aber erst mal meinen grippalen Infekt auskurieren, den ich mir am Wochenende zugezogen habe, dann werde ich mich mal dransetzen. Gerade sind dazu nicht genügend funktionsfähige Hirnzellen eingeschaltet :) .


    Enhanced 6502 BASIC – Retro Computing (hansotten.nl) may help with EHBasic.

    Vielen Dank Hans , den Link auf deine Seite kannte ich noch nicht. Sehr hilfreich vor allem die gegenüber dem Handbuch stark erweiterte Liste der Hilfsroutinen :):thumbup: . Da werde ich mich mal schlau machen.

  • Dort gibt es mit "USR" dann auch schon gleich eine Lösung für das "beliebiges codefragment starten können" Thema/Wunsch von klaly.


    Das mit den Subaufrufen unter einem Hauptaufruf, um Token zu sparen, klingt schon sinnvoll. Aber bei Grafik macht das bestimmt die Sache nicht schneller, weshalb man da evtl doch noch eine andere Variante finden könnte. Unter RISCOS und auch beim BBC Micro war es lange üblich die OS Routine "Plot" direkt zu benutzen. Die bekam dann als erstes eine Zahl mit, die sagte, was genau nun gezeichnet werden soll. Also z.B. 1 für Punkt, 2 für Line usf. - prinzipiell läßt sich sowas, wenn man es ein bißchen umstrickt, dann auch entweder direkt vom Interpreter übersetzen - womit man Aufrufe und Tokenplätze gespart hätte. D.h. in der Form, daß lediglich der Interpreter das anzeigt als "LINE", "RECTANGLE" o.ä. - im Programmtext da aber immer der Zahlenwert steht. Eine ganz einfache Variante für sowas ist möglich, wenn man Textersetzungen (wie die #defines in C) hat oder Konstanten. Dann kann man statt "PLOT 1,100,100,50,50" auch schreiben "PLOT LINE,100,100,50,50".


    Für DOS Aufrufe gilt das gleiche. Oder auch für andere "Bibliotheken". Besonders Charme hätte das nämlich evtl. wenn der Wert für den eigentlichen Aufruf ("PLOT" oder "DOS") quasi dynamisch vergeben werden kann (also das Token sich ändern darf). Dann wäre das schon fast ein LibraryKonzept und man würde nur die Sachen nachladen, die man benutzen will.



    Apropos Grafik: man will da beides schreiben können, sowohl neue absolute Koordinaten als auch relative. Und außerdem sollte von vorneherein die Möglichkeit da sein, daß man das Ganze "Grafiksystem" auch als "state-machine" benutzen kann. Soll heißen, daß der z.B. der letzte Koordinatenpunkt aufgehoben wird und automatisch als neuer Startpunkt genommen werden kann, Also "PLOT LINE,,,300,300" oder "PLOT LINE TO 300,300" möglich werden. (Stichwort LOGO) Gleiches gilt auch für Parameter wie Stiftfarbe etc., die man nicht jedesmal als Parameter mit übergeben muß. Wenns trotzdem geht, umso besser.


    Bitte nur als Anregungen sehen/lesen.


    Ansonsten Gute Besserung ! Kamillentee mit Honig wird irgendwann auch lecker. :)

  • Hallo ThoralfAsmussen


    als Grafik Befehle hatte ich mir jetzt einfach SCREEN (zum Umschalten zwischen verschiedenen Text/Grafikmodi), PIXEL, OVAL, RECT, LINE und COLOR reserviert. Zuerst hatte ich auch überlegt, den Farbparameter direkt im jeweiligen Befehl (also z.B. PIXEL x,y,color) anzugeben. Fand dann aber die Variante mit eigenem Farbbefehl besser, da ich dann nicht so viele Parameter übergeben muss, sich die Farbe vermutlich auch nicht ständig bei einem LINE Befehl ändert und da ich es einfach beim Apple II Basic auch so kannte. Einen LINETO Befehl könnte ich mir auch noch gut vorstellen, da dies zum Vektor Zeichnen natürlich klasse ist. Fand ich bei Turtle Grafik auch immer sehr schick. Ich wollte aber auch erst mal nur die wichtigsten Befehle schon einbinden, da ich evtl. noch ein, zwei Befehle für Sprites brauche (möchte). Bei den Grafikbefehlen wollte ich auch unbedingt direkte Aufrufe, eben wegen der Geschwindigkeitsproblematik.


    Ich habe jetzt in EhBasic alle noch zur Verfügung stehenden Token bereits mit Res1, Res2,... vordefiniert, um eben weitere Verschiebungen (wegen der Save/Load Problematik) zu vermeiden. Da stehen jetzt noch zwei für Schlüsselwörter und drei für Funktionen zur Verfügung. Das ist auch der Grund, weshalb es jetzt dann doch keine Befehle für Datum und Uhrzeit gab. Die könnte man aber mit den CALL XYZ Befehlen nachlegen, genauso wie für die Sound Ausgabe und den oben erwähnten noch fehlenden SPRITE Befehlen.


    Bei genauer Betrachtung könnte man ja den Befehl SCREEN ja auch via CALL machen, der ist ja nicht zeitkritisch :/ .


    Dort gibt es mit "USR" dann auch schon gleich eine Lösung für das "beliebiges codefragment starten können" Thema/Wunsch von klaly.

    Der USR Befehl kann in EhBasic (und meines Wissens nach auch bei TRS80 Basic) leider nur eine einzige spezielle Unterfunktion aufrufen, deren Vektor ich in der Zero Page bei $0B,$0C abspeichere. Somit disqualifiziert sich USR eigentlich, da ich hier ja auch immer erst mal den Vektor Poken (oder Doken) muss.


    Kamillentee mit Honig wird irgendwann auch lecker.

    Ist jetzt schon mein "Lieblingsgetränk". Der Mittagskaffee hatte nämlich nicht wirklich gut geschmeckt <X . Liegt wahrscheinlich auch an den (hoffentlich nur) temporär ausgeknipsten Hirnzellen :| .

  • Hallo zusammen,


    ich hab nun mal ein neues Paket mit ROM Images, Dokumentationen und ein paar Demo Programmen geschnürt.

    Ausserdem ist mir ein Fehler im EhBasic Basic aufgefallen, der in meinem PORT Befehl steckte. Hier wurde leider sowohl bei PORT 0,... als auch PORT 1,... jeweils nur Port B angesprochen. Der Fehler ist in der beigelegten EhBasic Version behoben.


    Auf meiner Seite hab ich jetzt mal ein paar eurer Junior ][ Bilder in die Gallery gestellt. Ich hoffe das ist für alle OK. Wer auch noch ein schönes Foto hat, das ich da reinstellen soll, schickt es mir bitte.

  • Ich hatte jetzt mal ein wenig über klaly s Frage, ob man die automatische Baudrate Erkennung nicht umgehen kann, nachgedacht. Rausnehmen möchte ich das Feature nicht, da sie bei mir (und vermutlich den meisten anderen) ziemlich gut läuft. Klar ist aber auch, dass es dann problematisch wird, wenn das Terminal nicht adäquat antwortet, denn dann wird einfach in den Ur-Junior-Modus geschaltet.


    Meine (erst mal gedankliche) Lösung wäre folgende: Ich frage beim Start das Hexkeyboard des Juniors auf gedrückte Tasten der untersten Reihe ab. Wird keine gedrückt, so läuft die automatische Erkennung los. Bei "1" wird eine Baudrate von 19200, bei "2" 9600 und "3" 4800 Baud eingestellt und wenn möglich bei vorhandener IO Karte dieser Wert im gepufferten RAM der Uhr gespeichert. Wenn "0" gedrückt wird, wird dieser Wert dort wieder gelöscht und die Auto-Erkennung läuft wieder los. Kleinere Baudraten könnte man auf diese Art natürlich auch vorwählen, ich weiss aber nicht ob das sinnvoll ist, da wohl die wenigten mit 2400 oder weniger Baud arbeiten wollen. Ausserdem vergrößert das wiederrum den zusätzlichen Code. Da ich noch keine SD-Kartenunterstützung drinnen habe, bin ich mit dem "Rest-ROM" gerade etwas knausrig.


    Übrigens kam gestern im ARD zu Unzeiten und möglichst versteckt (wie sollte es auch anders sein) die Doku "Alles ist Eins ausser der 0" über Wau Holland, den CCC (Mit)Begründer.

    Auf alle Fälle sehenswert und noch in der Mediathek abrufbar.


    Die Gallery hab ich nun noch ein klein wenig erweitert, nachdem mir beim zweiten durchklickern aller Thread Seiten noch ein paar schöne Bilder aufgefallen sind. IO Boards sind jetzt auch ein paar dabei.


    Cheers

  • Hallo Jörg,
    gute Idee was du da oben geschrieben hast.


    Aber für mich bräuchte es gar keinen so großen Automatismus zu sein.
    Weil mir würde es reichen, wenn ich diese Erkennung einfach heraus patchen könnte, d.h. abklemmen.
    Ich möchte für mich einfach nur Terminal mit fixer Baudrate, fix ins EPROM rein gepatcht.

    Dann würde mit diesem EPROM halt der HexMonitor gar nicht angesprungen werden.


    Oder (sponat Idee) evtl. könne ich mir hierzu vorstellen, den Display Schalter auf zweipolig umzustellen und den zweiten Kontakt auf einen Port zu legen.
    Oder als Wechsler einen Port Pin der HexTastatur im Disp-Off Mode fix auf +5V zu legen und dadurch Terminal Mode einzuschalten.
    Ein Draht und ein bisschen Firmware Änderung und die Baudrate auf die sinnvoll höchste Stufe setzen.
    Da weiß ich nicht ob 19200 stabil läuft, ansonsten halt 9600.

    ... und an dieser Stelle ein großes Lob für deine Arbeit und das tolle Projekt.


    Leider finde ich gerade auch nur wenig Zeit für den Junior ][.


    mfG. Klaus Loy

  • Mir ist jetzt ein ganz einfacher Weg eingefallen, um klaly s Problem zu lösen.


    Die 6532 Leitung PB0 wird ja einzig für den Lautsprecher genutzt.



    Durch einen zusätzlichen 1kOhm Widerstand in der Verstärkerschaltung (zwischen PB0 und GND) kann ich dann beim Initialisieren des Rechners, PB0 als Eingang schalten, abfragen, ob dieser nun auf LOW hängt und dann die Standard Baudrate von z.B. 9600 Baud einstellen, ohne vorher die automatische Erkennung zu starten. Falls der 1K Widerstand - wie üblich - fehlt, hängt PB0 beim Lesen über den Spannungsteiler an +5V und ich starte die normale Initialisierung.

    Sowohl die Code- als auch die Hardware-Änderungen wären minimal. Ausserdem kann ich dann die Standard Baudrate z.B. aus einer festen ROM Adresse laden, die dann jeder nach belieben patchen kann, sprich z.B. auf 19200 Baud setzen.

  • Der Patch für die feste Baud Rate ist fertig.

    1. In der passenden ROM Image Datei (8K oder 32K) das siebt letzte Byte (endgültige ROM Adresse $FFF9) entsprechend der Tabelle anpassen. Z.Zt. sind 19200 Baud eingestellt.



    $1F 19600 Baud

    $1E 9600 Baud

    $1D 7200 Baud

    $1C 4800 Baud

    $1B 3600 Baud

    $1A 2400 Baud

    $19 1800 Baud

    $18 1200 Baud

    $17 600 Baud

    $16 300 Baud

    $15 150 Baud


    2. Neues BIOS ROM flashen.

    3. 1kOhm Widerstand zwischen Port Pin PB0 und GND einlöten. Am Besten geht das direkt am vorderen Port Anschluss.




    Durch den Patch wird die Funktion des Lautsprechers nicht beeinträchtigt. Wenn der Jumper Speaker_Enable nicht gesteckt ist, funktioniert der Patch auch. D.h. bei nicht gelöteten 1K Widerstand hält der 6551 den Port Pin selbst auf High und somit läuft dann die automatische Baud Raten Erkennung wie erwartet los.


    Edit: Wer die feste Baudrate nicht benötigt, lässt natürlich einfach den Widerstand weg.

  • ... alles super.
    > Wer die feste Baudrate nicht benötigt, lässt natürlich einfach den Widerstand weg.
    Aber Einspruch, wenn der Jumper nicht steckt und der Widerstand fehlt, dann ist der Eingang offen und evtl. undefiniert, bzw. ein Random Generator.

    Ansonsten finde ich die Idee super.

    mfG. Klaus Loy

  • Hallo Klaus,


    meines Wissens werden beim 6532, genauso wie beim 6522 offene Ausgänge über einen interne Widerstand auf +5V gezogen, daher sollte alles gut sein.

    Es gibt aber leider ein Problem mit meinem Patch, den ich hier nicht verschweigen möchte:

    Da bei eingebauten (Patch) Pulldown-Widerstand die Terminalerkennung umgangen wird, kann der Junior bei nicht Vorhandensein des Terminals auch nicht mehr automatisch in das ursprüngliche Junior ROM springen. Der Widerstand impliziert hier nämlich, Terminal ist vorhanden.

    Eine einfache Lösung ist natürlich, zwischen z.B. Masse und Widerstand einen kleinen Schiebeschalter einzubauen, so dass man noch in den alten Modus wechseln kann. Ansonsten geht natürlich auch vom Terminal Monitor aus, den Befehl M einzugeben, um den Junior im Originalzustand zu nutzen.

  • Ein kleines Problemchen wäre auch die Dauer-Bestromung des Lautsprechers, falls der Port Pin nicht als Ausgang auf High geschaltet wird... Aber ich nehme mal an, dies macht die Software grundsätzlich?

    Und.. kann der Pin 5mA High-Level-Ausgangsstrom?

  • ...
    1. Terminal Only wäre ja OK
    2. Dauer Bestromung, ist bei solcheiner Schaltung eher schlecht, da wäre eine Schaltung mit eine Kondensator z.B. in der Basisleitung gut. So ein Piepser Lautsprecher ist schon schön, wenn einen der Computer beim Einschalten begrüst.

    Das mit dem C soll keine Kritik, sondern eine Anregung sein für die nächste HW Version, falls es nochmal eine geben sollte.


    mfG. Klaus Loy

  • Reinhards Bedenken bzgl. der 5mA Ausgangsstrom sind absolut berechtigt. Ich hatte tatsächlich bei den PortB Ausgängen im Kopf gehabt, dass die 5mA aushalten sollten (auch da wäre ein 1,2kOhm Widerstand die bessere Wahl gewesen). Tatsache ist aber, es sind nur 3mA. Ich kann den Pulldown aber auf max. 1700 Ohm setzen, um noch die 0,4V Low Pegel einzuhalten. Dann fließen gerade so 2,94mA. Ich weiss, schön ist das auch nicht, allerdings bliebe sonst tatsächlich nur die Lösung, über die Startabfrage einer Taste oder einer dauerhaften Abschaltung der Terminalerkennung für Klaus. Was anderes fällt mir spontan nicht ein. Hat jemand von euch eine adäquatere Idee?


    Edit: Im Normalfall ist PB0 als Eingang geschaltet, was den Lautsprecher also unbestromt lässt.

  • Hat jemand von euch eine adäquatere Idee?

    Commodore hatte mal ein ähnliches Problem, auch da ging es um die Abfrage einer Konfiguration beim Systemstart, und es waren keine Ports mehr frei.

    Die haben das in der 2031 Floppy so gelöst:


    Bei der Initalisierung werden PB0 und PB1 über die beiden Dioden von CA2 auf low gezogen.

    Im Betrieb ist CA2 dann high und beeinflusst PB0 und PB1 nicht mehr.

    Durch trennen der Dioden kann man die Geräteadresse einstellen, die bei der Initialisierung gesetzt wird.

  • Edit: Im Normalfall ist PB0 als Eingang geschaltet, was den Lautsprecher also unbestromt lässt.

    Eben nicht, wenn der Widerstand bestückt ist und damit PB0 auf low gezogen wird. Deswegen sollte dann, falls der Widerstand erkannt wurde, PB0 auf Ausgang und High geschaltet werden.

    Commodore hatte mal ein ähnliches Problem, auch da ging es um die Abfrage einer Konfiguration beim Systemstart, und es waren keine Ports mehr frei.

    naja, da war aber dann schon noch CA2 frei gewesen ;)

  • Nur nichts übereilen.
    Vielleicht gibt es noch bessere Ideen.
    Was den Dauerstrom, da meinte ich den Dauerstrom durch den Lautsprecher.
    Der dann fließen täte, wenn der "neue Pulldown" rein käme und der Port auf Input geschaltet würde und der Jumper steckt.
    Aber das muss nun hier nicht ausdiskutiert werden.


    mfG. Klaus Loy

  • Eben nicht, wenn der Widerstand bestückt ist und damit PB0 auf low gezogen wird. Deswegen sollte dann, falls der Widerstand erkannt wurde, PB0 auf Ausgang und High geschaltet werden.

    Sorry, diese Aussage hat sich tatsächlich auf den bisherigen Ist-Zustand ohne den zusätzlichen Widerstand bezogen, ich dachte du wolltest wissen wie das ursprünglich gehandhabt wurde. Mit dem Patch wird jetzt allerdings PB0 nach der Abfrage zum Ausgang und Normal H um den Lautsprecher eben nicht zu triggern.


    Bei der Initalisierung werden PB0 und PB1 über die beiden Dioden von CA2 auf low gezogen.

    Im Betrieb ist CA2 dann high und beeinflusst PB0 und PB1 nicht mehr.

    Ja, bei der 6522 ist so ein Trick natürlich durch CA2 eventuell noch möglich. Ich hätte ja durchaus ohne IO-Board auch noch andere freie Leitungen am 6532 zur Verfügung, wo man dann eventuell via DIP-Switches verschiedene Baud Rate Vorgaben hätte machen können. Das gilt aber nicht mehr, wenn das IO-Board vorhanden ist, da diese dann für weitere IO Abfragen/Um/Abschaltungen verwendet werden und dann auch eine solche Dioden Trick-Schaltung wieder Einfluss auf die anderen Port Leitungen hätte. PB0 wäre beim Junior ][ hier leider noch die einzige bidirektional mögliche Leitung gewesen.


    Irgendwie präferiere ich ja gerade eine Abfrage von z.B. der gedrückten "0" beim Start, um dann die fest programmierte Baudrate zu verwenden, da es sich bei dem Problem eigentlich auch um eine echte Niesche handelt, die bisher nur bei Klaus und seinem Terminal Programm aufgetreten ist. Ich möchte aber auch keine Sonderversion des BIOS einführen, die dann bei den Betroffenen eingesetzt wird. Das splittet mir die Code Versionen schon wieder auf.

    Wenn klaly also mit dieser Möglichkeit leben könnte, beim Start die "0" zu drücken, wäre das Problem schnell vom Tisch.

  • Meine Idee war ja irgendeine Taste zu misbrauchen, bzw. für diesn Fall da eine Brücke oder einen Widersatand über die betreffende Taste drüber zu löten.
    Dann wäre sie immer gedrückt und der JC2 wäre im Terminal only Mode, mit "fixer" Baudrate.

    mfG. Klaus Loy

  • Meine Idee war ja irgendeine Taste zu misbrauchen, bzw. für diesn Fall da eine Brücke oder einen Widersatand über die betreffende Taste drüber zu löten.

    Dann würde aber eine der PA Leitungen besetzt, welche ich für den Bidirektionalen IO für Drucker und Tastatur/Papertape-Reader benötige.

    Wie ich es also drehe und wende, es gibt sonst keine allgemeingültige Konstellation, die mit und ohne IO-Board für alle befriedigend funktionieren würde.


    Ich schau mir aber nochmal die Schaltpläne genauer an. Vielleicht finde ich noch eine andere Lösung.

  • ok, da wohl meiner Einer nicht nachgedacht.
    Jetzt verstehe ich es trotzdem nicht.
    Es läuft doch über den Tastatur Multiplexer.

    Wenn ich da eine Drahtbrücke über den Taster 0 (Pin1 <---> Pin2) Löte sollte das doch nur dymisch blockieren, ...
    weiß jetzt nicht.

  • Es läuft doch über den Tastatur Multiplexer.

    Wenn ich da eine Drahtbrücke über den Taster 0 (Pin1 <---> Pin2) Löte sollte das doch nur dymisch blockieren, ...

    Da die Tastatur-Spalten über einen 74LS145 BCD Decoder einzeln auf Low gezogen werden und bei gedrückter Taste dann über PA0 bis PA6 auf Low abgefragt werden, ist das keine gute Idee. Der BCD-Decoder hat ja nicht die Möglichkeit seine Ausgänge hochohmig zu schalten, sondern würde dann die von dir gebrückte PA Leitung je nach Decoder Zustand immer auf Low oder High ziehen.


    Letztlich kannst du dir ja auch erst mal einen 1,7kOhm Widerstand zusammenbasteln (oder schauen, ob die Low Erkennung von PB0 mit einem 1,8kOhm Widerstand noch funktioniert) und den Patch nutzen. Damit sollten die 3mA wie gesagt knapp nicht überschritten werden.


    Ich überlege mir aber trotzdem noch eine Alternative.

  • Vielleicht ist einfach die Terminal-Abfrage eine ungeschickte Lösung, nicht alle "echten" Terminals können dies überhaupt. Beim KIM muss ich ja auch nach Reset eine "ungerade" Taste drücken, um die Baudrate zu erkennen (RUBOUT oder CR gehen da prima.)

    Eine schöne Option wäre hier sicherlich, dann die nächstliegende klassische Bitrate zu nehmen. Ich kenne die Schaltung nicht, aber wenn RxD nur über einen UART geht, dann wird das schon schwierig bis unmöglich.

    Ist denn die Tastaturmatrix voll ausgereizt? An jedem freien Kreuzungspunkt kann ich ja eine Diode einbauen, ohne dass der Rest dann Probleme bekommt.

  • Man soll doch einfach keine technischen Fragen mit Kopfschmerzen überdenken. Ich hab so einen Sch€i$$ erzählt. Natürlich hat der 74LS145 Open Collector Ausgänge. Sorry.


    Edit: Nur schnell, bevor ich weg muss. Da der Decoder eben doch OC Ausgänge hat, kann man tatsächlich über eine Lösung mit z.B. den Ausgängen 0..2 - welche die Spalten (eigentlich die Reihen) der Tastaturmatrix auswählen, nachdenken. Ausgang 3 ist nämlich unbelegt, also für mich der Safe Value, wenn Tastatur und Display nicht genutzt werden sollen. Ausserdem werden vom IO-Board, die mit dem Decoder Verbundenen Port B Leitungen PB1...PB4 nicht genutzt, um weiterhin die Hextastatur und das 7-Segment Display ansteuern zu können. Man könnte also Q0..Q2 und PB0 mit Dioden verbinden, bzw. offen lassen, beim Start die Werte 0..2 über den Decoder laufen lassen und dann immer PB0 abfragen, ob dieser jetzt auf LOW liegt. Also genau der Vorschlag von Toast_r . Ich kann dann so auch meine gewünschte Baudrate schon vorkonfektionieren.

    Falls ich da jetzt irgendwas übersehen haben sollte, einfach melden.