008
09.05.2010, 18:17 Uhr
holm
|
Ich habe im Endeffekt ein Testprogramm selber geschrieben gehabt, das mir die RAMs debuggt hat. Dazu habe ich einen Logikanalyzer an den BUS geklemmt und bei einer Ausgabe auf eine Fake-IO Adresse getriggert. Anders wird man da irgendwie nicht Herr der Lage. Es gibt hier einfach zu viele Wenns und Abers.
Fakt ist, das der 16Bit Teil Etwas in den RAM des WDC scheiben möchte und das dann wieder ausliest. Der WDC scheint ja dieses Kommando auch abzuarbeiten, nur die Daten sind halt nicht das Gelbe vom Ei.
Ich stehe jetzt auch nicht mehr so in der Materie das ich da wirklich noch wüßte was da los war.
Das hier habe ich noch auf meiner Pladde gefunden:
Quellcode: | ; Title "WDC Test" org 00000h stacktop equ 037ffh ramend equ 037ffh ram equ 02000h stat equ 018h bloed equ 0eeh ; start di jr st0
org 080h st0 ld sp,stacktop ; ld a,07h out (stat),a ; Ruecksetzen Statusbits auf High
ld hl,02000h ld de,02001h ld bc,ramend-ram ld a,55h ld (hl),a ldir st1 ld hl,02000h ld bc,ramend-ram ld e,055h st2 ld a,(hl) cp e jr nz,err inc hl dec bc ld a,b or c jr nz,st2 ld hl,02000h ld de,02001h ld bc,ramend-ram ld a,0aah ld (hl),a ldir st3 ld hl,02000h ld bc,ramend-ram ld e,0aah st4 ld a,(hl) cp e jr nz,err inc hl dec bc ld a,b or c jr nz,st4 ld a,3 out (stat),a halt
err ld b,a ld a,05h out (stat),a ld a,b out (bloed),a ld a,e : out (bloed),a ld a,l out (bloed),a ld a,h out (bloed),a end halt
org ram
end
|
"bloed" is dabei die eigentlich nicht existierende Ausgabeadresse. Ich habe mir da der Reihe nach die Inhalte und die Adresse ausgeben lassen und auf dem LA angeguckt. "stat" ist wohl der Statusport des WDC.
WDCs reparieren is EKLIG, ich reiße mich nicht darum..
Gruß,
Holm
Edit: vergiß bitte nicht, das eine PIO für Eingabe sehr wohl funktionieren kann, wenn sie für Ausgabe auf dem selben Port defekt ist. Ich habe speziell diese PIO zum WDC auch schon auf den 16bit Platinen wechseln müssen. Das ist ein externer Anschluß und so ESD-fest sind die Dinger nicht. Paulotto sucht auch noch Jemanden, der ihm die PIO zum Epromer wechselt :-) -- float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v; {s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+ (r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&& (A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;} Dieser Beitrag wurde am 09.05.2010 um 18:32 Uhr von holm editiert. |