Area : CBM.GER Date : Feb 08 '97, 12:08 From : Wolfram Sang 2:241/1065.18 To : Ralf Beckers Subj : TicTac und so ... ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Hallo Ralf! 02 Feb 97 18:29, Ralf Beckers schrieb an Wolfram Sang: WS>> Eventuell noch ein LDA #0:STA $DC00? Nur zur Sicherheit... Kann WS>> man dann aber auch mit dem X-Register verkuerzen (siehe oben) :) RB> Was heisst zur Sicherheit? Ich habe nie ne andere Tastaturabfrage RB> programmiert. Was soll das mit dc00? Uff, ja das ist die komische Tastaturabfragematrix des C64. Das ist folgende 8*8-Matrix, in der jede Taste ihren Platz hat (ausser Shift-Lock, die ist parallel zur linken Shift-Taste geschaltet, und RESTORE, die Taste hat ihre eigene Leitung). Port B - $DC01 +-----+-----+-----+-----+-----+-----+-----+-----+ |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7| +-----+-----+-----+-----+-----+-----+-----+-----+-----+ |Bit 0| DEL | CR | *) | F7 | F1 | F3 | F5 | *) | +-----+-----+-----+-----+-----+-----+-----+-----+-----+ |Bit 1| 3 | W | A | 4 | Z | S | E | S_L | +-----+-----+-----+-----+-----+-----+-----+-----+-----+ |Bit 2| 5 | R | D | 6 | C | F | T | X | Port A +-----+-----+-----+-----+-----+-----+-----+-----+-----+ $DC00 |Bit 3| 7 | Y | G | 8 | B | H | U | V | +-----+-----+-----+-----+-----+-----+-----+-----+-----+ |Bit 4| 9 | I | J | 0 | M | K | O | N | +-----+-----+-----+-----+-----+-----+-----+-----+-----+ |Bit 5| + | P | L | - | . | : | @ | , | +-----+-----+-----+-----+-----+-----+-----+-----+-----+ |Bit 6| œ | * | ; | HOME| S_R | = | *) | / | +-----+-----+-----+-----+-----+-----+-----+-----+-----+ |Bit 7| 1 | *) | CTRL| 2 |SPACE| C= | Q | R/S | +-----+-----+-----+-----+-----+-----+-----+-----+-----+ S_L = Left Shift ; S_R = Right Shift ; R/S = RUN/STOP Die mit *) markierten Felder sind die Pfeil- und Cursortasten. Ich musste sie rausnehmen, da sie urspruenglich ASCII-Sonderzeichen enthielten. Wenn Du jetzt in $DC00 ein bestimmtes Bit auf LOW setzt, und eine Taste aus dieser Reihe gedrueckt wurde, so wird das LOW-Signal auf das entsprechende Bit in $DC01 uebertragen. Wenn Du jetzt abfragen willst, ob ueberhaupt eine Taste gedrueckt wurde ist es zweckmaessig alle Bits von $DC00 auf LOW zu setzen. Dann wird, egal welche Taste gedrueckt wurde, das Low-Signal auf $DC01 uebertragen. Standardmaessig sollte $DC00 sowieso auf $0 gesetzt sein, aber man weiss ja nie, ob da nicht doch irgendwie was veraendert wurde, wodurch auch immer. Ist vielleicht ein bischen uebervorsichtig, aber ich wuerde das LDX #0:STX $DC00 davorsetzen. (Mal sehen, ob Du die Tastaturabfrage nachvollziehen konntest, ich fand sie anfangs total verwirrend :))) WS>> Also: Allerdings musst Du dann Deine Hardscrolltabelle aendern WS>> und noch jeweils den Wert $27 dazuaddieren! RB> Ahhh .... ich hatte das erst auch so optimiert, das ich einfach per RB> bpl verzweige, allerdings gab es dann ein bischen Muell. Das ich RB> einfach $27 auf die Tabelle addieren kann hatte ich nicht bedacht ;-) :) Ich hab auch beim DYCPer wieder gemerkt, dass man durch geschickte Tabellen doch ein bischen was an Rasterzeitsparen kann ('Wieso soll eigentlich die Routine mit 4 multiplizieren???') :) RB>>> JMP $EA31 ;AB UND WECH WS>> Den Tastaturcheck machst Du da oben ja selber und einen WS>> blinkenden Cursor brauchst Du, nehm ich jetzt einfach mal so an WS>> ;), wohl auch nicht, dann reicht auch der verkuerzte IRQ mit JMP WS>> $EA81. RB> Gibts noch ne andere Adresse, wo ich hinverzweigen kann (nur die PLA RB> Dinger) ohne den Servicekrams? Klar gibts die! Liegt ab $EA81 ;)))))) RB> warum ist der sinus auf dem C64 eigentlich ungenauer als der vom PC. RB> Wir der anders berechnet? Keine Ahnung! Ich berechne meine Sinustabellen auch auf dem PC. Aber Du kannst mal im ROM-Listing stoebern. Vielleicht findet sich da was? Ciao Wolfram (AKA Ninja/Dreams) | EMail: (Ninja@bbh.fido.de) --- FMail/386 1.02 * Origin: Yip Yap Yip Yip Yap -- BANG! -- No Terrier (2:241/1065.18)