Mag sein - und v.a., wenn man dann in stromlosen(armen) Zustand verharren kann, ist das bestimmt hin und wieder sehr sinnvoll.
Ich fand es eher so aus "logischen" Gründen irgendwie "schräg". Die Idee am Interrupt ist ja eigentlich, daß man eben den laufenden Prozess unterbricht und was anderes macht. Nicht, daß der laufende Prozess so eine Art Warteschleife in Form eines einzelnen Befehls ist.
Das führt dann auch zu der spannenden Frage: was macht so eine CPU eigentlich während sie wartet. Das ist ähnlich rätselhaft, wie der Zustand in dem die Homecomputer so üblicherweise starten - READY und warten auf Eingabe; und das oft mit der besonderen Note, daß alles was passiert eigentlich im Interrupt passiert (Cursor Blinken, Keyabfrage, Time weiterschalten).
Ich wollte aber nochmal auf den WDC65C02 und was anderes raus - v.a., weil der IC ja doch relativ flott ist
. https://www.reichelt.de/8-bit-…?CCOUNTRY=445&LANGUAGE=de
mit 14 MHz.
Ist der direkt auf den JC2 steckbar ?
Und dann war da noch die Geschichte mit den illegalen Opcodes bzw. den erweiterten - für den WDC65C02 sagt WikiP
QuoteWDC W65C02S; Rockwell R65C02, R65C102, R65C112; GTE/CMD G65SC02, G65SC102, G65SC112[60][61][62][63]
- Entwickelt von Western Design Center (WDC)
- CMOS-Mikroprozessoren, kompatibel mit MCS6502
- Alle Mikroprozessoren weisen im Vergleich zum MCS6502 zusätzlich die Befehle BRA, PHX, PHY, PLX, PLY, STZ, TRB, TSB auf
- Bei den Mikroprozessoren der R65C00-Familie und dem WDC W65C02S kommen noch die Befehle BBR, BBS, RMB, SMB hinzu
- Allein der W65C02S besitzt darüber hinaus die beiden Befehle WAI und STP
- Zusätzliche Adressierungsmodi (indirekte Adressierung in der Page null; indirekte indizierte Adressierung beim JMP-Befehl)
- Keine illegalen Opcodes (jeder illegale Opcode gleicht in seiner Wirkung einem oder mehreren aufeinander folgenden NOP-Befehlen)
- ...
es gibt also die normalen illegalen NICHT beim WDC65C02, dafür aber die oben schon angesprochenen.
Nun sind die aber eigentlich fast (?) alle mit anderen Anweisungen ersetzbar. Und damit, je nach dem Assembler, der benutzt wird, wahrscheinlich auch einfach über Makros ersetzbar, wenn man sie benutzen will. Nur daß der Code für den 6502 dann evtl. bißchen größer und evtl langsamer wird. Macht natürlich eigentlich nur Sinn, wenn der 14 MHz Chip sich überhaupt mit dem Board verträgt.
Wobei: es natürlich gerad im "BIOS" / "OS" schon schön ist, wenn das auf allen Chips direkt in schnellster Variante läuft, was also dann schon heißt, daß man es so macht, wie es jetzt passiert, also daß die 6502 als "Normalstandard" genommen wird und dafür optimiert (und nicht dort dann auch noch der langsamere Code (wegen dem Makro) läuft).
Interessanter ist aber evtl die Geschichte mit den illegalen Opcodes, die ja anscheinend alle anderen Abkömmlinge vom 6502 doch noch zu haben scheinen. Und da die mittlerweile auch bekannt und beschrieben sind würd ja eigentlich nichts dagegen sprechen, die auch zumindest so zu unterstützen, daß sie frei verwendbar bleiben.
Nach (ebenfalls WikiP)
Quote...
$0F
ASO $C000
("ASL, ORA") Führt den Befehl ASL
mit dem Speicherinhalt an der AdresseC000<sub>16</sub>
aus, anschließend wird eine ODER-Verknüpfung des Akkumulators mit dem neuen Speicherinhalt durchgeführt und das Ergebnis im Akkumulator gespeichert.
...
$EF
INS $C007
("INC, SBC") Erhöht den Wert an der Speicheradresse C007<sub>16</sub>
um eins und subtrahiert anschließend den neuen Speicherinhalt vom Inhalt des Akkumulators (zusätzlich um eins, falls das Carry-Flag den Wert null besitzt).
Es wäre also evtl günstig, wenn man das ein bißchen im Hinterkopf hat, daß potentielle illegale Opcodes anscheinend die Adressen $C000 bis $C007 benutzen. Man sich also evtl bemühen sollte, da nicht gerade einen Grafikstart oder sowas hinzulegen, sondern den Bereich freizuhalten, bei allem was noch an Software kommt.