Ich weiß... Anderseits: Gesplittet geht es auch nicht schneller. Man hat dabei nur Beschäftigung und kann den C64 nicht alleine die Arbeit machen lassen.
NEORAM auslesen
-
DerSchatten -
3. Juni 2011 um 22:10 -
Erledigt
Es gibt 67 Antworten in diesem Thema, welches 18.246 mal aufgerufen wurde. Der letzte Beitrag (
-
-
Das Abspeichern der 512KB und 1MB REU-Image sollten jetzt fehlerfrei funktionieren.
Es kann nun auch ein zuvor abgespeichertes 512KB REU-Image in die REU geladen werden.In einem anderen Thread ( Bitte melde dich an, um diesen Link zu sehen. ) ist die Frage aufgekommen, ob ein solches Tool auch den REU-Inhalt, den speziell Burstnibbler gefüllt hat, als G64 abspeichern könnte.
Wärst Du dazu prinzipiell bereit? Quelltext zur Umwandlung kann ich im Burstnibblerquelltext für Dich finden (ab Label sSaveG64Ultimate steht die Version für die U2). [Edit: Steht natürlich auch im g64conv, aber die Burstnibblerversion setzt geziehlt DMA der REU ein, um die Umwandlung schneller hinzubekommen].
Grundsätzlich fände ich es nämlich seh gut, die Schwelle zum G64 Erstellen herabzusetzen. -
Ja, gerne kann ich das machen. Ein Quelltext wäre auch top. Ich muss das dann nicht mehr selber machen und testen, das spart Zeit.
Ich mache mein "Ultima V GeoRam" Arbeit und die am Decopmpiler (Extensions Erkennungsroutine) noch fertig und dann witme ich mich diese Projekt wieder.
Ich konnte ein G64maker, der auf realer Hardware läuft, auch gebrauchen. In etwa so, G64maker macht G64 Image, teilt dieses beim Abspeichen, in 6 Stücke
oder belässt es als Ganzes. Die 6 Stücke können am PC wieder vereint werden. So ist es sehr einfach möglich G64-Images zu erstellen und diese zum PC zu übertragen.
Gleiches wollte ich für einige Kopierprogramme aus Maverick machen. Beim Burstnibbler muss ich zudem noch überlegen, wie mit den Floppytreiber zu verfahren ist.Gruß: Stephan
-
Ich konnte ein G64maker, der auf realer Hardware läuft, auch gebrauchen. In etwa so, G64maker macht G64 Image, teilt dieses beim Abspeichen, in 6 Stücke
Sowas wie Sixpack?
-
Ich habe mal den relevanten Teil herauskopiert aus meinem Burstnibblerpatch. Wie das nun mal so ist, jedes Programm belegt für die Datenbuffer jede Menge RAM, so dass es nicht sicher ist, ob das bei Dir so passen wird. Mein Burstnibbler hat ab $5D00 jedenfalls nur noch Daten im RAM.
Ein Hack, um da nachträglich GeoRAM-Support reinzubekommen (REU hatte ich da schon drin) ist es gewesen, statt nach $DF0x nach $CF0x zu schreiben und zu lesen, und eine Routine per "JSR ramcopy" aufzurufen, welches den in $CF0x hinterlegten Auftrag ausführt. Sollte man im Hinterkopf behalten, wenn man versucht, den Code zu lesen.
Am Anfang habe ich per [---] etwas weggelassen, das sind nur einige Besonderheiten für den Burstnibbler - etwa eine Prüfung, ob im 1541 Ultimate die Ultimate DOS aktiviert ist oder auch Bildaufbaugeschichten.
Am Ende des Codes steht das G64 1:1 in der REU (ab Adresse 0) und die Länge im C64-Speicher (24 bit).
Code
Alles anzeigensSaveG64Ultimate [... ] LDA #$00 STA $CF02 STA $CF04 STA $CF05 STA $CF06 STA $CF07 STA $CF09 STA $CF0A LDA #$5D STA $CF03 LDA #$01 STA $CF08 LDA #$FD STA $CF01 jsr ramcopy ; have loaded settungs header block to $5d00 LDX #$00 TXA - STA $8000,X STA $8100,X STA $8200,X INX BNE - LDX #$0B - LDA g64header,X STA $8000,X DEX BPL - LDA $5D00 STA $FF LDA #$02 STA $5E01 LDA #$AC STA $5E00 LDA #$00 STA $5E02 STA $5E03 bsgu1 LDA #<$8154 STA aF9 LDA #>$8154 STA aFA CLC LDA aF9 ADC aFF STA aF9 LDA aFA ADC #$00 STA aFA CLC LDA aF9 ADC aFF STA aF9 LDA aFA ADC #$00 STA aFA CLC LDA aF9 ADC aFF STA aF9 LDA aFA ADC #$00 STA aFA CLC LDA aF9 ADC aFF STA aF9 LDA aFA ADC #$00 STA aFA LDX aFF LDA $5D03,X AND #$03 LDY #$00 STA (aF9),Y LDA #$04 STA aF9 LDA #$80 STA aFA CLC LDA aF9 ADC aFF STA aF9 LDA aFA ADC #$00 STA aFA CLC LDA aF9 ADC aFF STA aF9 LDA aFA ADC #$00 STA aFA CLC LDA aF9 ADC aFF STA aF9 LDA aFA ADC #$00 STA aFA CLC LDA aF9 ADC aFF STA aF9 LDA aFA ADC #$00 STA aFA LDY #$00 - LDA $5E00,Y STA ($F9),Y INY CPY #$04 BNE - LDY aFF LDA $5E00 STA $8500,Y LDA $5E01 STA $8600,Y LDA $5E02 STA $8700,Y LDA $5E03 STA $8800,Y LDA $5E00 CLC ADC #$FA STA $5E00 LDA $5E01 ADC #$1E STA $5E01 LDA $5E02 ADC #$00 STA $5E02 LDA $5E03 ADC #$00 STA $5E03 LDA aFF CMP $5D01 BEQ bsgu2 CLC ADC $5D02 STA $FF JMP bsgu1 ; header generated: 8000-82AC (exkl.) bsgu2 LDA #$00 STA $CF02 STA $CF04 STA $CF05 STA $CF06 STA $CF09 STA $CF0A LDA #$80 STA $CF03 LDA #$AC STA $CF07 LDA #$02 STA $CF08 LDA #$FC STA $CF01 jsr ramcopy LDA $5D00 STA $FF ; Load Track from REU bsgu4 LDY aFF LDA $5D03,Y AND #$80 BEQ + JMP bsguKillertrack + LDA $FF SEC SBC $5D00 LDX $5D02 CPX #$02 BNE + LSR + TAX INX LDA #$05 STA $CF02 LDA #$00 STA $CF04 STA $CF07 STA $CF09 STA $CF0A LDA #$60 STA $CF03 TXA AND #$07 ASL ASL ASL ASL ASL STA $CF05 TXA LSR LSR LSR STA $CF06 LDA #$20 STA $CF08 LDA #$FD STA $CF01 jsr ramcopy LDA #$00 STA $6000 STA $6001 LDA #$FF STA $6002 STA $6003 STA $6004 ; Search for end mark, beginning from $8005 LDA #$05 STA aF9 LDA #$60 STA aFA LDY #$00 - LDA (aF9),Y BEQ + INC aF9 LDA aF9 BNE - INC aFA JMP - + ; $F9,$FA now contains the first adress above $6005 containing 0. LDA aF9 STA $6000 LDA aFA STA $6001 - LDA #$00 STA (aF9),Y INC aF9 LDA aF9 BNE - INC aFA LDA aFA CMP #$80 BNE - + LDA $5D03 ; Reduce SYNCS BNE ++ ; if turned off LDX aFF LDA $5D03,X AND #$40 BEQ ++++ ; If syncless track ++ SEC ; Do not add syncs LDA $6000 SBC #$05 STA $6003 LDA $6001 SBC #$60 STA $6004 LDA #$03 JMP +++ ++++ SEC ; add syncs LDA $6000 SBC #$02 STA $6000 LDA $6001 SBC #$60 STA $6001 LDA #$00 +++ ; Save Block of constant length from $6000+A bsgu5 STA $CF02 LDA #$60 STA $CF03 LDX aFF LDA $8500,X STA $CF04 LDA $8600,X STA $CF05 LDA $8700,X STA $CF06 LDA #$FA STA $CF07 LDA #$1E STA $CF08 LDA #$00 STA $CF09 STA $CF0A LDA #$FC STA $CF01 jsr ramcopy LDA aFF CMP $5D01 ; Are we ready BEQ bsgu3 CLC ADC $5D02 STA $FF JMP bsgu4 bsgu3 ; TODO SAVE image from REU to 1541U, Length in $5E00 ff. RTS g64header !byte $47, $43, $52, $2d, $31, $35, $34, $31, $00, $54, $f8, $1e ramcopy !zone { pha txa pha tya pha lda $2c cmp #$01 bne ramcopy2 ldx #$0a - lda $cf00,x sta $df00,x dex bne - ramcopydone pla tay pla tax pla rts ramcopy2 lda $cf01 cmp #$fd beq + ldx #$04 - lda c64_ram,x sta ramcopyloop,x dex bpl - jmp init + ldx #$04 - lda ram_c64,x sta ramcopyloop,x dex bpl - init lda $cf02 ; C64 sta $2e lda $cf03 sta $2f ldx $cf04 ; RAM LoByte ldy #$00 jsr dffef dec $cf07 lda $cf07 cmp #$ff bne ramcopyloop dec $cf08 lda $cf08 cmp #$ff bne ramcopyloop jmp ramcopydone ramcopyloop lda $de00,x ; wird reinkopiert von c64_ram bzw. ram_c64 sta ($2e),y iny ; $2e bne + inc $2f + inx ; $cf04 bne + jsr dff + dec $cf07 lda $cf07 cmp #$ff bne ramcopyloop dec $cf08 lda $cf08 cmp #$ff bne ramcopyloop pla tay pla tax pla rts dff inc $cf05 bne dffef inc $cf06 dffef lda $cf05 sta $cf00 and #$3f sta $dffe lda $cf06 asl $cf00 rol asl $cf00 rol sta $dfff rts c64_ram lda ($2e),y sta $de00,x ram_c64 lda $de00,x sta ($2e),y } -
Cool, danke. Ich werde mir den Code erstmal genau ansehen um diesen zu verstehen. Dann beginne ich mit den Coderarbeiten.
Unseen: Genau so wollte ich das auch machen. Um dann daraus ein G64 zu machen, gib es für den PC schon einige Tools.
Das Six-Pack Tool läuft leider nur auf dem Seriel-Port und damit kann man den Großteil der geschützten Software nicht fehlerfrei einlesen. -
Da kann es sich lohnen, den g64conv Perlcode danebenzulegen. In der Tat hatte ich zuerst den Perlcode und habe dann die 6502 Umsetzung gemacht (ja, eigentlich 6510, aber es sind ja keine 6510-Besonderheiten drin).
-
Ist zwar schon lange her, aber immer noch aktuell..............
Gibt es schon ein Update von "dumptool alpha04".
Vielleicht habe ich es ja auch irgendwo überlesen. Das auslesen/speichern von REU/GRAM/SCPU Ram Inhalt ist, glaube ich, nach wie vor ein aktuelles Thema, zu dem natürlich auch der Burstnibbler gehört.
Meine Konfig: Bitte melde dich an, um diesen Link zu sehen. CMD HD(SD) 1GB
Bitte melde dich an, um diesen Link zu sehen. CMD RL 16MB + 512MB REU
Bitte melde dich an, um diesen Link zu sehen. SD2SCSI
Bitte melde dich an, um diesen Link zu sehen. 1571 intern
Bitte melde dich an, um diesen Link zu sehen. FD4000
Geräte : C128DCR, SCPU128 16MB, bei Bedarf 1541II mit Parallelkabel #08-11 wählbar.
Habe zwar auch eine 1541 Ultimate (alt V1), die läuft aber irgendwie nicht in meiner Ramlink. Da muss ich demnächst noch mal was ausprobieren.
Gruß Jojo
-