Sehe irgendwie die Bilder nicht... mache ich etwas falsch?
^^
// ___
,-->|--|___|--. NPN .---O GND
| 220 \ ^
| \___/
| | ___
| `--|___|----< CAPSLOCK
5V O--+ ^^ 4.6K
| // ___
`-->|--|___|--O GND
220
Du brauchst erst mal nichts löten klemm die Widerstände/Diode/Transistor zusammen, alles an 5V. Dann lege den Collektorwiderstand gegen 5V und gegen Masse. Geht die LED AN bzw. AUS. hast du den richtigen Widerstand gefunden. Dauert keine 10 Minuten.
Was die Mehrfabige LED betrifft. Du musst die Widerstände hinter die LED zur Masse hin machen. ansonsten kannst du sie normal beschalten.(http://forum.atari-home.de/gallery/3282_20_07_12_3_48_55.bmp)
Moin,
beim Nachrüsten von HD-Floppies habe ich immer eine zweite LED zur HD-Erkennung neben die Tastatur-LED gepappt. Kann man gut erkennen.
Gruß
skul
Die in #3 von Burkhard skizzierte Schaltung ist identisch mit der der besagten Firma Lüding. Allerdings wurde dort bei einem Basisvorwiderstand von 1kOhm ein NPN-Transi "BC547 o.ä." vorgeschlagen; Es muss also kein 2N3904 sein!
Gruß soldermaSTer
Ja es kann jeder 0815 NPN-Transistor sein. Es kann sein dass du einen größeren Vorwiderstand brauchst um den Transistor nicht zu zerstören. Fang mal mit 10K an und arbeite dich nach unten vor bis er ordentlich gegen 5V schaltet.
(Edit)BTW: Die in #3 von Burkhard skizzierte Schaltung ist identisch mit der der besagten Firma Lüding. Allerdings wurde dort bei einem Basisvorwiderstand von 1kOhm ein NPN-Transi "BC547 o.ä." vorgeschlagen; Es muss also kein 2N3904 sein!
Gruß soldermaSTer
http://www.atari-forum.com/viewtopic.php?f=15&t=22968Genau diese Seite hatte mich veranlaßt, über die Möglichkeit einer CapsLock-Kontrolle zu informieren!
Wenn das irgendwann mal funktioniert wär's echt ein echt nettes Gimmick. Dann wär da noch die Frage ob die LED direckt in die CAPS LOCK-Taste kommt oder daneben oder wie bei PC-Tastaturen über den Cusor-Block? ;D
CapsLock display (as of V2.0), by Jürgen Heindel and Patrick Dubbrow.
The Mega ST keyboard has already been prepared for a LED that shows the status of the CapsLock key. It can also be built in easily in ST/STE/TT machines. The program installs a VBLANK routine.
Wie wärs auf elektronischem Weg, Tastaturmatrix auswerten, sobald die Taste gedrückt wird, sind ja genau eine Leitung auf Spalte und Zeile auf Low, alle anderen auf High. Das läst sich ganz einfach auswerten und auf ein (JK-)Flipflop schaltten, und daran die Led.
Weiß noch jemand, welches TOS 1989 aktuell war? - Ich tippe auf 1.04 und bin mir zugleich sicher, dass später unter 2.06 die rote LED dauernd leuchtete (siehe Foto-Kein Fake!).Ich habe meinen erste 1040STf in1989 oder Januar 90 (kann ich nicht mehr genau sagen) als Laden-Vorführgerät gekauft, mein Vater hat einen STfM Ende 1990 neu gekauft und ein Kamerad von mir hatte einen Mega ST2 1992 neu und einen wenig gebrauchten 520ST+ erstanden. Alle waren mit TOS 1.(0)2 bestückt! Ich vermute auch den Hintergrund - nein, ich bin mir fast sicher - bei Atari, möchte mich aber aus bestimmten Gründen hier Erläuterungen enthalten. Das Rainbow (TOS 1.(0)4) war aber spätestens 1990 auch erhältlich, meineswissens aber von Atari nur als Austausch-TOS vermarktet!
Laut Profibuch gab's in der ST-Computer 3/90..5/90 eine Artikelserie "Licht in die Geheimnisse des Tastaturprozessors" - Hat noch jemand von euch die Hefte?yes, i have ;D
Gruß soldermaSTer
Hi Burghard,
ich durchforste gerade meine 'Losblattsammlung' und habe dabei auch Titelseiten von ST-Computer-Ausgaben gefunden. - Nicht böse sein, aber die Artikel-Abfolge dort war (rückwarts geblättert) folgende:
- März 92: "TOS 2.06 für alle STs"
- Januar 91: "MegaSTE, erste Infos..." - Der MSTE hatte erst ein TOS 2.05 (Zwei-Null-Fünf!)
- Januar 90: "TOS 1.4 Patches"
- November89: "Intimes zu TOS 1.4"
Die ST-C war ziemlich aktuell und anhand dessen lässt sich ganz gut ableiten, welches TOS gerade das "Must-Have" war!
P.S.: Zwei Ausgaben der Artikelserie "Licht in die Geheimnisse des Tastaturprozessors" hab' ich gerade lokalisiert, aber jetzt braucht mich mein Arbeitgeber wegen einer Störung. :(
So long, Gruß soldermaSTer
Ich habe langsam die Schnauze voll mit Dir !!!
Ich habe klar in denm damaligen Beitrag erläutert, warum Atari sich dazu entschied die STs weiterhin mit TOS 1.(0)2 zu verkaufen und 1.(0)4 nebenbei als Austausch TOS anzubieten. Das hatte damals mit den im Umlauf befindlichen Programmen zu tun, von denen viele unter Rainbow nicht mehr richtig liefen. Das hatte was mit unsauberer Programmierung zu tun und war auch so oder ähnlich in deutscher Fachpresse beschildert. Ich weiß nur nicht mehr, ob das Heft in dem ich darüber las damals von jemendem geliehen war oder ich das in einer gekauften ST Computer gelesen habe. Da in 1992 noch NEUE Geräte mit dem sogenannten "Blitter (1.(0)2) TOS" ausgestattet waren beweist mir, daß es so ist. Was heute im Internet verbreitet wird, ist wahrscheinlich von Leuten verfaßt, die fehlinformiert sind
Wenn Du nicht aufhören kannst alles besser wissen zu wollen als jemand der Zeitgerecht belesen ist, dann halte dich zukünftig WIRKLICH aus meinen Beiträgen raus und ignoriere meine Posts!
Und ich kann deine PN nicht beantworten weil du mich geblockt hast.OFFTOPIC: Wie geht das? Hab' in meinen Einstellungen gesucht und nix gefunden... . Kann man User nur bei PMs "blacklisten" oder geht das auch für Forennachrichten?
Und ich kann deine PN nicht beantworten weil du mich geblockt hast.OFFTOPIC: Wie geht das? Hab' in meinen Einstellungen gesucht und nix gefunden... . Kann man User nur bei PMs "blacklisten" oder geht das auch für Forennachrichten?
Gruss- Georg B. aus H.
Hat, bzw. kennt jemand einen HD6301 Disassembler, mit dem wir uns das unter TOS 1.04 lauffähige Capslock.Prg einmal anschauen können?
der dreiteilige Artikel "Licht in die Geheimnisse des Tastaturprozessors"
den ST-Tastaturchip für einen der Emulatoren komplett disassembliert hat.Falls es noch was bringt und aus einer andern Quelle.
Und schon getestet? ;D
'
PROCEDURE led_on
LOCAL adr%
' Kommando, Adresse, Bytecount, Bytes
' 20, 0006, 02, FFFF
kbd$=""
adr%=VARPTR(kbd$)
dpoke(addr%,&H2000);
dpoke(addr%+2,&H0602;
dpoke(addr%+4,&HFFFF);
~XBIOS(25,5,L:adr%)
RETURN
'
PROCEDURE led_off
LOCAL adr%
' Kommando, Adresse, Bytecount, Bytes
' 20, 0006, 02, FFFE
kbd$=""
adr%=VARPTR(kbd$)
dpoke(addr%,&H2000);
dpoke(addr%+2,&H0602;
dpoke(addr%+4,&HFFFE);
~XBIOS(25,5,L:adr%)
RETURN
'
; custom IKBD vector
EVEN
dc.b "XBRA"
dc.b "IKBD"
old_ikbd: ds.l 1
ikbd:
; <ISR code omitted>
rte ; ... and terminate the ISR
Wäre schön wenn man auch PC-Keyboards unterstützen könnte. Da müsste ich aber wissen wie ich es am einfachsten heraus finden kann welches System läuft.
'
' Testprogramm fuer Capslock LED
' ueberwacht den Capslock-Status
' und setzt danach Bit0 an Port3 des IKBD
' Wenn dort ueber einen Transisor eine LED angeschlossen ist
' Kann sie den CapsLockStatus anzeigen
'
' Komando, Adresse, Bytecount, Bytes
' AN
' 20, 0006, 02, FFFF
' AUS
' 20, 0006, 02, FFFE
'
kbd$=" "
SDPOKE VARPTR(kbd$),&H2000
SDPOKE VARPTR(kbd$)+2,&H602
'
PRINT AT(1,1);"Ende mit Maustaste"
'
REPEAT
led_update
PAUSE 1
UNTIL MOUSEK
'
PROCEDURE led_update
LOCAL status!
status!=BIOS(11,-1) AND 16
led(status!)
print_status(status!)
RETURN
'
PROCEDURE print_status(on!)
PRINT AT(5,5);"Capslock: ";
IF on!
PRINT "ON "
ELSE
PRINT "OFF"
ENDIF
RETURN
'
PROCEDURE led(on!)
LOCAL adr%
adr%=VARPTR(kbd$)
IF on!
SDPOKE adr%+4,&HFFFF
ELSE
SDPOKE adr%+4,&HFFFE
ENDIF
~XBIOS(25,5,L:adr%)
RETURN
Auf dem Emulator läuft es. Wenn jemand Schon eine LED am IKBD hat kann er ja mal schauen ob das Funktioniert.Ich verstehe das so, daß Ihr eine Möglichkeit sucht, ein Programm zu schreiben, welches im Hintergrund läuft und den Tastaturprozessor abfragt, um herauszufinden, ob z.B. die CapsLock-Taste gedrückt ist oder nicht. Anhand des Status wird dann eine LED geschaltet.Nicht ganz. Am IKBD gibt es einen freien Port, der als Ausgang geschaltet ist. Auf machen MegaST-Tastatur-Schaltbildern ist an diesem über ein Transistor eine LED angeschlossen. Atari hatte also mal vorgesehen eine CapsLock LED zu verbauen (wurde wegrationalisiert). Leider ist weder das TOS noch der IKBD-Bios darauf vorbereitet diese LED selbstständig anzusteuern. Das bedeutet, man kann eine LED anschließen doch sie macht nichts von sich aus.
Leider scheine ich hier der einzige zu sein, der sich an so was heran wagt. :-)
Auf dem Emulator läuft es.
Leider kann ich nicht gut programmieren - bestenfalls im Spaghetti (GfA-BASIC)Kein Grund es nicht zu versuchen. So habe ich auch programmieren gelernt. Ich habe es einfach versucht. Mit Programmen kann man das TOS nicht kaputt bekommen. GFA-Interpreter auf eine Diskette und angefangen.
Was mache ich denn falsch?GBE zu benutzen? Mit dem ungepatchten Original funktioniert es. Ich vermute die Ausgabe Spinnt weil ich einfach auf den Bildschirm Schreibe. Kompilieren lässt es sich nicht weil ich einige Sachen dafür nicht initialisiert habe. Es handelt sich um einen einfachen Test, ohne Netz und doppelten Boden. Nur um zu schauen ob was passiert.
Wahrscheinlich nutze ich das XBIOS-Kommando 25 nicht korrekt.
'
' Testprogramm fuer Capslock LED
' ueberwacht den Capslock-Status
' und setzt danach Bit0 an Port3 des IKBD
' Wenn dort ueber einen Transisor eine LED angeschlossen ist
' Kann sie den CapsLockstatus anzeigen
'
' Komando, Adresse, Bytecount, Bytes
' AN
' 20, 0006, 01, FF
' AUS
' 20, 0006, 01, FE
'
kbd$=" "
init
'
PRINT AT(1,1);"Ende mit Maustaste"
'
REPEAT
led_update
PAUSE 1
UNTIL MOUSEK
'
PROCEDURE init
LOCAL adr%
adr%=VARPTR(kbd$)
CARD{adr%}=&H2000
CARD{adr%+2}=&H0601
RETURN
'
PROCEDURE led_update
LOCAL status!
status!=BIOS(11,-1) AND 16
led(status!)
print_status(status!)
RETURN
'
PROCEDURE print_status(on!)
PRINT AT(5,5);"Capslock: ";
IF on!
PRINT "ON "
ELSE
PRINT "OFF"
ENDIF
RETURN
'
PROCEDURE led(on!)
LOCAL adr%
adr%=VARPTR(kbd$)
IF on!
CARD{adr%+4}=&HFF
ELSE
CARD{adr%+4}=&HFE
ENDIF
~XBIOS(25,5,L:adr%)
RETURN
Pauschal fällt mir erstmal auf, dass Port 3 und damit Adresse 0x0006 nur 8 Bit breit ist.Habe ich auch gesehen.
Zudem musst Du im Data Direction Register von Port 3 (0x0004) den entsprechenden Port auch als Ausgang (High = 1) setzen. Die werden bei einem Reset erstmal alle als Eingang geschaltet.Da bin ich nicht so sicher.
Besteht ein Interesse an mehr als einer LED?
Was kann man sich unter " Allgemeine Laufwerkszugriffe" vorstellen?Alle Zugriffe auf Dateien oder Ordner laufen über TOS Funktionen, Diese Leiten die Aktionen an die passenden Treiber weiter. Wenn ich mich da einhänge, bekomme ich jede Dateiaktion mit, kann aber nicht feststellen, an welches Gerät diese Anfragen gehen.
'
' Testprogramm fuer Tastatur LEDs
' Ueberwacht den Capslock-Status
'
' Siehe beigelete Schaltung
'
' Komando, Adresse, Bytecount, Bytes
' 20, 0006, 01, 82+LEDbit
'
kbd$=" "
oldsend|=0
send|=0
init
'
PRINT AT(1,1);"Ende mit Maustaste"
PRINT AT(1,2);"CapsLock schaltet LED 0"
PRINT AT(1,3);"LED 1..4 werden mit den Nummerntasten geschaltet"
'
key$=""
REPEAT
key$=INKEY$
IF key$="1"
led_update(0)
ELSE IF key$="2"
led_update(1)
ELSE IF key$="3"
led_update(2)
ELSE IF key$="4"
led_update(3)
ENDIF
capslock_update
send
print_status
UNTIL MOUSEK OR key$=CHR$(27)
'
' ############################################
'
PROCEDURE init
LOCAL adr%
send|=&H82
oldsend|=send|
'
adr%=VARPTR(kbd$)
CARD{adr%}=&H2000
CARD{adr%+2}=&H601
CARD{adr%+4}=send|
'
~XBIOS(25,5,L:adr%)
~XBIOS(25,5,L:adr%)
RETURN
'
PROCEDURE capslock_update
LOCAL status!
IF BIOS(11,-1) AND 16
send|=BSET(send|,2)
ELSE
send|=BCLR(send|,2)
ENDIF
RETURN
'
PROCEDURE led_update(num|)
LOCAL pos|
IF num|<4
num|=num|+3
IF send| AND BSET(0,num|)
send|=BCLR(send|,num|)
ELSE
send|=BSET(send|,num|)
ENDIF
ENDIF
RETURN
'
PROCEDURE led_set(num|,on!)
IF num|<4
IF on!
send|=BSET(send|,num|+2)
ELSE
send|=BCLR(send|,num|+2)
ENDIF
ENDIF
RETURN
'
PROCEDURE print_status
PRINT AT(5,5);"LED0: ";
IF send| AND 4
PRINT "ON "
ELSE
PRINT "OFF"
ENDIF
'
PRINT AT(5,6);"LED1: ";
IF send| AND 8
PRINT "ON "
ELSE
PRINT "OFF"
ENDIF
'
PRINT AT(5,7);"LED2: ";
IF send| AND 16
PRINT "ON "
ELSE
PRINT "OFF"
ENDIF
'
PRINT AT(5,8);"LED3: ";
IF send| AND 32
PRINT "ON "
ELSE
PRINT "OFF"
ENDIF
'
PRINT AT(5,9);"LED4: ";
IF send| AND 64
PRINT "ON "
ELSE
PRINT "OFF"
ENDIF
RETURN
'
PROCEDURE send
LOCAL adr%
send|=BCLR(send|,0)
send|=BSET(send|,1)
send|=BSET(send|,7)
IF oldsend|<>send|
adr%=VARPTR(kbd$)
CARD{adr%+4}=send|
~XBIOS(25,5,L:adr%)
~XBIOS(25,5,L:adr%)
oldsend|=send|
ENDIF
RETURN
Netzteil? Commodore?Korrekt! C64 Netzteil. Jeder der ein C64 hatte kennt den Geriffelten Klotz. :)
- Capslock
- DMA-Zugriffe (ACSI,Floppy,DMA-Sound)
- IDE Zugriffe
- Allgemeine Laufwerkszugriffe
- Alive Ticker (blinkt langsam solange das System nicht Hängt)
- Working (LED ist aus wenn das System nichts zu tun hat, es blinkt also bei aktivität)
- SuperUserMode (LED geht an, wenn das System in den SuperUserMode wechselt. Das passiert bei Systemzugriffen (Adressraum bis 4096))
Was mir noch an Anzeigemöglichkeiten einfällt:
- Blitter aktiv
- 16Mhz aktiv bei Mega-STE
- ProzessorCache aktiv bei MegaSTE, Falcon, TT
Bei dem 7402 hast Du nur einen Gatter in Verwendung und die 3 anderen - ich nehme an, damit sie nicht zu "flattern" oder "schwingen" beginnen - irgendwie an Spannung angeschlossen, dabei zwei hinterheineinander und parallel zum Ersten das Dritte Gatter. Könnte man nicht das Gleiche Ziel erreichen, wenn man alle drei Gatter hintereinander schaltet, zB Vcc nur an Pin 5 und 6 anlegt und 4 mit 8/9 koppelt?Ja es geht darum das offene Eingänge instabil sind und leicht angeregt werden können. Dass kann zu sehr hohen Frequenzen führen, die auf die anderen Logikeinheiten übersprechen können. Zudem kann der IC heiß werden und viel Strom ziehen.
So ist es am einfachsten die Pins 5,6,7,8,9 zusammen zu löten. Das ich im Schaltplan gegen 5V geschaltet habe war nicht die beste Lösung. :-)
Ich habe gestern mal den 1040 zerlegl. Wenn die Tastatur in ihren Führungen, sitzt ist zwischen dem nach unten hängenden gesockelten Tastaturprozessor und dem Abschirmblech des Mainbords kaum noch Luft."kaum noch" ist übertrieben. Man kann noch mehrere lagen Papier drunter schieben. :-)
Ich denke, es ist dauerhaft keine so gute Lösung mit einer Zwischenplatine - auch wenn diese praktisch kopfüber eingesteckt wird - wie die Testplatine hier. Auch in einer Tastatur zum Mega ST scheint der Platzbedarf als Zwischensockel recht beengt!Du hast recht, mit den Flachbandkabeln wird es etwas knapp. Da kann ich aber aber die Abschirmung ein wenig eindrücken. Mit einer geätzten Platine, die man gegen Kurzschlüsse schützt ist man flacher als der IKBD in seinem Sockel. (sofern man flache Stiftsockel benutzt.)
Die Leiterbahnen werden aber vom 6301 von so gut wie jedem Pin über diverse Widerstände oder Dioden geleitet. Wenn man von der Bestückungsseite am entsprechenden Beinchen den Kontakt abgreifen könnte ...Pin8 des IKBD geht an Pin1 und Pin19 des 74ls244. Die IKBD Pins 31-35 gehen an D15-D10. Nur Pin37 muss man direkt am IKBD abnehmen
... (sofern man flache Stiftsockel benutzt.)Du darfst nicht vergessen, daß man den Tastaturprozessor vielleicht auch wieder sockeln möchte - evtl. ach die beiden IC der Zusatzschaltung!
... Nur Pin30 muss man direkt am IKBD abnehmenIn Deinem Schaltbild im Post #100 (http://forum.atari-home.de/index.php?topic=9720.msg71212#msg71212) wird Pin 30 doch gar nicht vorgesehen :
[quote author=ToPeG link=topic=9720.msg71427#msg71427 Du darfst nicht vergessen, daß man den Tastaturprozessor vielleicht auch wieder sockeln möchte - evtl. ach die beiden IC der Zusatzschaltung!Ich habe es ja auch gesockelt und die Platine (ohne die Kabel) ist vielleicht 2mm höher als der IC war. Und ich habe zur Platine noch einen mm. Wenn man geschickt ist wird die ganze Konstruktion vielleicht 2mm dicker als der Prozessor war. Soviel Spiel ist noch zwischen Abschirmung und Prozessor, denke ich.