Neueste Beiträge

Seiten: [1] 2 3 ... 10
1
Anwendungen / iMPdraw - iMPdos und und und.... Hammer Release vom AST
« Letzter Beitrag von TFM am 26. Oktober 2020, 19:13:26 »
 :) :) :)
2
Programmierung / Re: Reverse-Engineering Problem: Wie laedt man beim Z80 Assembler Dateien?
« Letzter Beitrag von TFM am 25. Oktober 2020, 18:19:33 »
Die System Calls sind im Systembuch beschrieben, hier ist irgendwo ein Thread in dem man sich sehr viel Dokum zum CPC als PDF herunterladen kann.

Um Dateien von DSKs zu extrahieren eignet sich z.B. CPCDiskXP oder die Tools des JavaCPC Emulator.
3
Emulatoren / Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Letzter Beitrag von TFM am 25. Oktober 2020, 18:09:47 »
Persönlich gefällt mir der WinCPC am besten zum debuggen etc. WinApe ist mMn nicht so toll. Der JavaCPC kann wohl noch mehr, aber ich muss mir das erst noch ansehen.  :)
4
Emulatoren / Re: Den KC Compakt emulieren...
« Letzter Beitrag von TFM am 25. Oktober 2020, 18:04:27 »
Mit den ROMs ist es ja nun nicht getan. Der KCc hat ja ein paar andere Chips mit anderen Fähigkeiten. Und wie ich bei der Entwicklung der LambdaSpeak Software gesehen habe gibt's da Unterschiede zum CPC. Die Fragen sind also:
- Gibt es einen KCc Emulator (nicht nur CPC-Emus mit KCc ROMs)
- Wie genau ist der?

Ich würde mit ja gerne einen zulegen um Software kompatibler zu machen bzw. auf die Fähigkeiten des KCc einzugehen, aber die kriegt man nicht und wenn dann 10-fach unbezahlbar.
5
Hardware / Re: CPC 6128 Darstellungsfehler
« Letzter Beitrag von AndiCPC am 25. Oktober 2020, 17:42:58 »
Der 6845 (IC108) ist schon getauscht (sitzt auf Sockel). Ich werde da nochmal wenn ich Zeit habe das Board genauer unter die Lupe nehmen.
6
Hardware / Re: CPC 6128 Darstellungsfehler
« Letzter Beitrag von slartibartfast am 25. Oktober 2020, 11:08:34 »
Hallo AndiCPC,

schätze, Du hast die Leitung des Sync-Signals von der DIN-Buchse zum GA schon getestet ....

Eine andere Fehlerquelle kann natürlich auch der CRTC sein (UM6845).
Er macht u.a. auch die Timings für den Border, der bei Dir komplett abhanden gekommen ist.

Dieser scheint bei Dir direkt verlötet zu sein. Evtl. ist dieser Baustein defekt. Wäre noch einen Versuch wert, wenn Du an einen Ersatz kommst (Hier sind allerdings die Chancen etwas höher, da der 6845 mal ein Standard-Baustein war).
Der 8255 macht "nur" IO und hat mit der Bildschirmausgabe nichts zu tun. Der 40015 ist ein ROM und hat mit den Timings auch nichts am Hut (genauso wenig wie die CPU, die auch offensichtlich funktioniert).

Wenn es das GA (40010) nicht ist, bleibt eigentlich nur noch der CRTC.

Wie oben im Bild vom Board sind die oberen IC die gesockelt sind gewechselt. Der untere Amstrad 40010 habe ich gegen einen anderen vom 6128 getestet. Der Zilog und Amstrad 40015 habe ich auch getauscht. Eigentlich alles was Sockel hat :-) die Kondis / Elkos sind auch erneuert. Der ein oder andere eigentlich nur weil ich gerade dabei war aber ersthaft dachte ich eigentlich der  IC108 (UM6845), IC107(NEC D8255AC-5) und der IC116 (Amstrad 40010). Bin mir gerade nicht so sicher ob die Tastatur funktioniert hat.

LG,

slarti
7
Emulatoren / Re: Den KC Compakt emulieren...
« Letzter Beitrag von Devilmarkus am 25. Oktober 2020, 03:15:03 »
Im JavaCPC sind auch die KC-Compact ROMs enthalten.
Inkl. dem DOS Rom von Denen ;)

Gibts in den ROM-Settings sogar als Preset.
8
Programmierung / Re: Reverse-Engineering Problem: Wie laedt man beim Z80 Assembler Dateien?
« Letzter Beitrag von dettus am 24. Oktober 2020, 22:05:36 »
Okay... was ich bis jetzt gefunden habe ist das hier:

https://www.cpcwiki.eu/index.php/Programming:Reading_a_sector_from_a_disc

Ich habe schon gemerkt, dass bei dem Spiel, welches ich reverse engineere, anscheinend die Lesezugriffe am BIOS vorbei getaegigt werden.
Ansonsten haette ein Breakpoint auf die entsprechende Funktion getriggert.

Anscheinend ist es wohl so, dass beim Amstrad einige RST Vektoren ueberschrieben werden koennen?
Das geht wohl so:

1. Man laedt die "Nummer"(keine Ahnung wie die Nomenklatur genau ist... sorry) in den speicher. Und legt die Adresse auf diese "Nummer" in das Register HL.
2. Man fuehrt einen CALL BCD4 aus
3. Man erhaelt eine Adresse im Register HL zurueck.
4. Man speichert die drei bytes ab diesem Register an einer anderen Stelle im Speicher, sagen wir 1337.
5. Man fuehrt anschliessend irgendwann spaeter ein RST 3 1337 aus.

Das ruft dann direkt den entsprechenden Interrupt zum Sektorenlesen aus.
Soweit so gut....

NUR: Wo sind diese "Nummern" dokumentiert?
Im Disassembler habe ich folgendes gesehen:

l0040h:
        ld a,040h               ;0040   3e 40   > @
        ld (la127h+1),a         ;0042   32 28 a1        2 ( .
        xor a                   ;0045   af      .
        ld (l0df7h),a           ;0046   32 f7 0d        2 . .
l0049h:
        ld (l0538h),a           ;0049   32 38 05        2 8 .
        ld hl,l0e04h            ;004c   21 04 0e        ! . .
        ld (l0534h),hl          ;004f   22 34 05        " 4 .
        call sub_bb4eh          ;0052   cd 4e bb        . N .
        xor a                   ;0055   af      .
        call 0bd5bh             ;0056   cd 5b bd        . [ .
        ld a,0c3h               ;0059   3e c3   > .
        ld (l0030h),a           ;005b   32 30 00        2 0 .
        ld hl,l093ah            ;005e   21 3a 09        ! : .
        ld (l0030h+1),hl                ;0061   22 31 00        " 1 .
l0064h:
        jr l008eh               ;0064   18 28   . (
        ld hl,l0df8h            ;0066   21 f8 0d        ! . .
        call sub_bcd4h          ;0069   cd d4 bc        . . .
        ld (l0e06h),hl          ;006c   22 06 0e        " . .
        ld hl,l0e08h            ;006f   21 08 0e        ! . .
        ld (hl),c                       ;0072   71      q
        ld c,0c1h               ;0073   0e c1   . .
        ld b,07fh               ;0075   06 7f   . ^?
        di                      ;0077   f3      .
        out (c),c               ;0078   ed 49   . I
        ld de,lfe00h            ;007a   11 00 fe        . . .
        ld hl,l1130h            ;007d   21 30 11        ! 0 .

was machen diese beiden anderen obskuren funktionen bb4e und bd5b?

Weiterhin: In dem Beispiel oben habe ich einen rst 3 gesehen, in meinem Disassemblierten code taucht aber nirgendwo ein RST 3 auf. Was hat es damit auf sich?
9
Emulatoren / Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Letzter Beitrag von dettus am 24. Oktober 2020, 12:32:44 »
Zitat
Selbstverständlich könnte man am Betriebssystem vorbei direkt auf die Diskette zugreifen, so bietet AMSDOS die Möglichkeit, einzelne Sektoren zu lesen.
Ich vermute, dass genau das bei dem Spiel passiert.

Jetzt suche ich einen Weg, herauszufinden wie das geht. Und wie ich die Stelle im Code mit dem Emulator finde.

10
Emulatoren / Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Letzter Beitrag von almasys am 24. Oktober 2020, 12:12:07 »
Eine Beschreibung der Firmware-Calls findest Du im Schneider CPC Systembuch. Dass da die Kassettenroutinen beschrieben sind ist egal, AMSDOS patcht diese und sie sind genauso zu behandeln.

An &BC77 CAS IN OPEN wird die Länge des Dateinamens in Register B, die Adresse des Strings in HL übergeben.

Anschließend kann die Datei Byte für Byte mit &BC80 CAS IN CHAR eingelesen oder am Stück mit &BC83 CAS IN DIRECT gelesen werden.

Da AMSDOS immer nur jeweils eine Datei zum Lesen und eine zum Schreiben geöffnet haben kann, gehen diese Zugriffe immer auf die zuletzt geöffnete Datei.

Selbstverständlich könnte man am Betriebssystem vorbei direkt auf die Diskette zugreifen, so bietet AMSDOS die Möglichkeit, einzelne Sektoren zu lesen.
Seiten: [1] 2 3 ... 10