Danke für die erhellenden Anregungen!
Wenn ich eh dabei bin wir eh dabei sind*, den C64 gedanklich neu zu erfinden, und du von den Seriellen-Bus-Routinen sprichst (EOI = End or identify, eine Folge der IEEE488-Logik), da möchte ich den Gedankenfaden fortspinnen:
- eine nennenswerte EInsparung bei höherer Effizienz ergäbe sich, wenn der "neuen" C64-Firmware auch ein neues Floppy-ROM sowie runderneuerte Peripherie zur Seite gestellt wird.
Anknüpfungspunkt VC20: der hatte noch im Schaltplan klar erkennbar die Bedienung des seriellen BUS mit dem VIA-Schieberegister! und zwar ohne Daten-Puffer 7404 oder 7406 im Signalpfad.. sodass über CB1 sowohl Takteingang als auch Taktausgang bedient werden kann.
Im Gegensatz zum C128, der hier einen "Riesen-Sums" an Umschaltpuffern je nach Datenrichtung sowie zur Abwärtskompatibilität zum vermurksten C64-Software-Protokoll aufweist, könnte ich mir gut vorstellen, das "ursprünglich" beim VC20 geplante serielle Bus-Protokoll (MIT schieberegister) neu zu implementieren und in der Floppy dann konsequent CIAs statt VIAs zu verwenden.
Kennt jemand eine Prototyp-Version des VC20-ROM, wo die ursprünglich geplanten Schieberegister-Routinen drin waren? Die müssten viel simpler sein, als die im C128 (Edit: oder im historischen C64) !
Denkbar wäre, ausnahmsweise hier auch die Hardware zu verändern: entweder käme in der Floppy dann ein CIA oder ein VIA 65C22 von CMD in Betracht... nur mal so ins unreine gedacht.
MacBacon, die komische Programmierung im Bereich der Jobschleife könnte ich mir so erklären, dass Siracusa sich nicht getraut hat, den Stack stark zu belasten und daher etwas spitzfingrig zu Werke gegangen ist: der Coprozessor für Laufwerk-Lesen/Schreiben ist ja (Edit: ursprünglich; SFD 1001 oder 2031 o.ä.) ein 6504 oder 6507 mit ganz wenig Speicher und Adressraum; vermutlich hat der nur 16 Bytes für Unterprogrammverschachtelung, weil Stack und Zeropage und Jobspeicher eng miteinander verschachtelt /gespiegelt sind. Nur so eine Idee... sinnlose Rücksichtnahme freilich, da in der 1541 ja genug Stack vorhanden ist.
_____
* Edit: MacBacon hat einen dicken Hals vom Commodore-ROM-Listing-Lesen und hat sich ausgeklinkt.