Ein paar soft switches kennen wir ja schon: zum einen die von Siddl genannten $1000 und $0800 direkt vor bzw. nach Einsprung in die Sprungleiste ab $8000, die alle nach dem Motto: sta $1000: jsr $80xx: sta $0800 genutzt werden. Mutmaßung: Freigabe/Sperrung des ROM, bzw. Freigabe des 8k-RAM...
Dann die Routine ab $8C25 die ich für die zentrale 'Sektor in Cache schreiben' halte; zusammen mit dem mystery counter würde Folgendes Sinn ergeben:
. 08c25 20 65 85 jsr $8565
. 08565 78 sei
. 08566 8d 00 28 sta $2800 ; refresh abschalten
. 08569 8d 00 48 sta $4800 ; counter reset
. 0856c 60 rts
. 08c28 a2 00 ldx #$00
. 08c2a a0 00 ldy #$00
. 08c2c bd 00 03 lda $0300,x ; byte aus Sektorpuffer
. 08c2f 91 3b sta ($3b),y ; byte in Cache; y ist _immer_ 0!
. 08c31 8d 00 50 sta $5000 ; counter increment
. 08c34 e8 inx
. 08c35 d0 f5 bne $8c2c
. 08c37 8d 00 30 sta $3000 ; refresh einschalten
. 08c3a 58 cli
. 08c3b e6 3b inc $3b
. 08c3d d0 02 bne $8c41
. 08c3f e6 3c inc $3c
. 08c41 60 rts
Alles anzeigen
Der Counter zählt also die Bytes innerhalb des Sektors! Wo das Cache-RAM in den Speicher eingeblendet wird (also der Wert von $3b/$3c) bleibt noch herauszufinden. Das würde also bedeuten, bei Nichtbenutzung des Cache erzeugt das PAL CAS-before-RAS-Refreshes (aus dem RC-verzögerten Phi2-Derivat) und zählt den Counter hoch (wobei ich nicht drauf wetten möchte ob das konkret verbaute RAM die externen Refresh-Adressen nicht komplett ignoriert?). Wird Cache-Zugriff eingeschaltet, werden die CAS-Signale als Chip Select aus dem gerade adressierten Speicherbereich gewonnen- mit dem Timing des 'anderen' Phi2 direkt aus der netten Gatter-Kette. Den Zähler muß man jetzt 'zu Fuß' bedienen.
...und dann gibts noch ein paar Zugriffe auf $6bfc, $6bfd und $73fc, denen ich bislang noch keinen Sinngehalt abringen konnte. Wenns gelegentlich etwas weniger heiß ist, versuch ich mich mal an einer näheren Untersuchung, welche Routine überhaupt von wo angesprungen wird
Übrigens: Derlei Tricks wie Verzögerung um x Gatterlaufzeiten oder mittels RC-Gliedern am Schmitt-Trigger waren damals durchaus üblich. Wobei 'damals' zumindest die zweite Hälfte der 70er meint; selbst der ZX-Spectrum macht das noch für die Ansteruerung des 'fast RAM'. Natürlich war das nicht 'rock solid', aber man ging auch in der regel nicht so eng toleriert zu werke wie heutzutage- wenn das letzte Quentchen Speed gefordert war, war der Rechner zwei bis drei Zehnerpotenzen teurer und wurde in klimatisierten Räumen betrieben. Problematisch war eher, wenn ein Hersteller 'bessere' Chips auf den Markt brachte, zum Beispiel schnellere, und dastimng plötzlich nicht mehr stimmte.