RAMBUG.EXE & Die Karte nach der Reparatur
RAMBUG.EXE & Die Karte nach der Reparatur
Die nächste Platine ist repariert.
Auf der heutigen waren 2 ICs (D28, D35 = RAS0, CASL: D1 + Parity E) defekt.
Ausgetauscht und im RAM Test danach alle Tests bestanden.
Bleibt noch eine Erweiterungsplatine.
Dort wurden quasi alle Adressen als Defekt markiert. Da ist auf jeden Fall was in der Ansteuerung defekt.
Vielleicht schaffe ich morgen den Schaltplan noch, aber mein Männerschnupfen fordert vermutlich langsam seinen Tribut. Muss erst Mal kürzer treten.
Ein Glück, dass ich gestern entschieden habe, nicht nach Hannover ins Büro zu fahren... In mehrfacher Hinsicht...
Mario
Mittlerweile bekam ich eine Diagnose Software für den RAM (nicht nur für RAM) des EC1834.
Bin gespannt, wie die läuft. Dann könnte ich die eine Platine vielleicht direkt reparieren, wenn ich weiß, welcher IC defekt ist.
Bei der anderen mache ich erst mal den Schaltplan fertig. Dann lässt sich das leichter analysieren.
Ich frage mich, warum die Software nirgendwo auf den üblichen Plattformen abgelegt oder überhaupt nirgends benannt wurde.
Das Copyright von '89 (DDR) dürfte vermutlich eher nicht mehr das Problem sein...
In meinem Code liegt das Problem irgendwo bei der Ausgabe der aktuellen Adresse.
Ohne das wird der Code ausgeführt und der Rechner wird mit Parity Error abgeschossen. Das kann man abschalten.
Ich muss nun nur noch einen Weg finden, die Ausgabe hin zu bekommen.
Beim Vergleich kann ich sehen, das RAS kurz deaktiviert wird und dann wieder aktiviert wird. Der Punkt fehlt oben.
Da scheint evtl. ein Flip Flop oder dessen Takt nicht zu schalten.
Da ich gerade mit dem Code nicht weiter kam, habe ich die Karte mit dem defekten RAM IC zur Vergleichsmessung ran genommen.
Das bestätigt erst Mal das, das RAS+CAS normal gleichzeitig aktiv sein sollte.
Das gibt mir Hinweise, wenn ich das weiter ausgewertet habe. Bei dieser Karte wäre mein Tool ganz hilfreich, den defekten zu bestimmen...
Moin,
vielleicht hat hier jemand Erfahrung mit 8086 Assembler...
Mein Testprogramm funktioniert (theoretisch) in der DOS-Box.
Praktisch nicht auf dem EC1834.
Beim Test wird der Code einfach nicht ausgeführt.
Die prozedur wird aufgerufen, der erste Text wird ausgegeben und dann springt die Routine zurück in das Hauptprogramm.
Der vollständige Code ist hier zu sehen:
Mein Code zeigt noch den Text "msg_test1_1" an. Die Zeile
wird nicht aufgerufen.
; TEST SEGMENT 4xxxx with even numbers
; set di to start offset
TEST1:
mov si, msg_test1_1
call OUTPUT_TEXT
mov BYTE [cnt_error], 0
mov BYTE [sig_abort], 0
mov BYTE [tst_byte], 0
push bx
push es
push di
cld
; init offset/data
; sub di,di
sub ax,ax
mov cx,LOOPSIZE
mov dl,8
; init start segment
mov bx,RAMEXT_START
mov es,bx
mov ah,BYTE [tst_byte] ; init compare value for test
mov al,BYTE [tst_byte] ; init value for test
call OUTPUT_HEX_DIGIT4 ; <--------- WIRD NIE ERREICHT
call OUTPUT_CR
.loop_test1:
mov al,BYTE [tst_byte] ; init value for test
mov es:[di],al
mov al,es:[di]
push ax
xor al,ah ; Zero flag set, when equal
pop ax
jz .OK1 ; zero, so value is equal
; ERROR CONDITION HERE
call PRINT_ERRADDR
call ERRORCNT_WAIT ; press "q" for abort
cmp BYTE [sig_abort], 1
jz .loop0_end ; abort requested
.OK1:
inc di
inc di ; inc by 2
mov ax, 0
loop .loop_test1
; print current test offset
sub di,2
call OUTPUT_HEX_DIGIT4
call OUTPUT_CR
add di,2
; decrease outer loop counter
dec dl
jz .loop0_end ; exit when done
mov cx, LOOPSIZE
jmp .loop_test1 ; another round
.loop0_end:
pop di
pop es
pop bx
call OUTPUT_CRLF
call OUTPUT_CRLF
ret
Alles anzeigen
Ich weiß, der Code ist alles andere als schön.
Verbesserungen nehme ich gerne an...
Ursprung ist die Testroutine vom BIOS. Die arbeitet mit dem DS Register, da ich das aber öfter zur Ausgabe benötige, habe ich das ES Register genommen.
Wie gesagt - in der DOS Box funktioniert der Code so.
Gruß
Mario
Nicht zwingend, falls es mehrere Bänke gibt, kann durchaus CAS kommen ohne RAS, weil eben diese Bank nicht selektiert ist.
Prinzipiell richtig, aber oben werden alle Bänke (RAS0, RAS2, RAS4) gleichzeitig aktiviert und CAS erst einen Zyklus später - ohne RAS und da kommt auch das Chip Select für den 8287.
Man könnte den Eindruck gewinnen, dass die Verzögerung des RAS Signals nicht passt.
Das Problem ist, dass ich die Schaltung nicht ganz durchschaue...
Hier mal die zusammengefügten Scans des Schaltplans....
Die ersten Test-Routinen für den Speichertest habe ich am laufen.
Man muss sich an Assembler erst gewöhnen...
Irgendwie sieht das nicht korrekt aus...
Ein RAS Signal müsste doch dann Aktiv sein, wenn das CASL aktiviert wird?
Die unteren 8 Bit sind vom DS8287 D3 (D0-D7)
bricht leider mit runtime error ab... Eine ältere Version finde ich nicht.
Entweder selber was programmieren, oder auf der Hardwareseite suchen...
Letzteres is Momentan einfacher. Was programmieren, hieße Assembler. Da habe ich nie mehr als Hello World gemacht. Früher oder später kommt das aber noch.
Ich glaube eher nicht dran. Wenn da ein defekter Ausgang das Signal mit geringem Widerstand gegen Masse zieht, kann der andere das vermutlich nicht auf H Pegel bringen.
Ich bin in der komfortablen Lage, das jetzt mit Software zu diagnostizieren können. Prinzipiell....
....gerade mal gesucht und c't ramtest gefunden. Das könnte evtl. auch laufen. Mal probieren...
Theoretisch könnte ich den ersten RAM IC auch einfach auslöten und in meinen RCT stecken...
ok, dass ist Blödsinn.
Die U2164 sind 64kx1.
Wenn, dann wären gleich alle 8/9 tot. Glaube ich dann eher nicht.
Ich versuche gerade zu verstehen, wie der Speichertest im 1834 BIOS arbeitet.
Weiß jemand, was passiert, wenn man von einer Speicheradresse versucht zu lesen (8086), wo kein Speicher vorhanden ist?
Vermutlich bekommt man da 0 oder FF(FF) zurück. Wollte das gerade mal in einer VM probieren, habe auf die schnelle habe ich nichts da, was weniger als 1MB zur Verfügung stellt. Evtl. geht es mit DOS Box, habe ich noch nicht weiter geprüft.
Vielleicht kann mir aber einer die Frage beantworten.
Der Code vom Test ist dieser:
RAM_TEST:
MOV_BX_CX
cld
SUB_DI_DI
SUB_AX_AX
.check_ram:
mov [di],al
mov al,[di]
XOR_AL_AH
jnz m_fed5a ; RAM ERROR
inc ah
MOV_AL_AH
jnz .check_ram
mov ax,0x55aa
MOV_DX_AX
rep stosw
in al,PPI_PORTB ; break??? NMI Parity test?
or al,0x30
out PPI_PORTB ,al
nop
and al,0xcf
out PPI_PORTB,al
dec di
dec di
std
MOV_SI_DI
MOV_CX_BX
.loop_aa55:
lodsw
XOR_AX_DX
jnz m_fed5c ; pattern not equal?
mov ax,0xaa55
stosw
loop .loop_aa55
cld
inc di
inc di
MOV_SI_DI
MOV_CX_BX
MOV_DX_AX
.loop_ffff:
lodsw
XOR_AX_DX
jnz m_fed5c
mov ax,0xffff
stosw
loop .loop_ffff
dec di
dec di
std
MOV_SI_DI
MOV_CX_BX
MOV_DX_AX
.loop_0101:
lodsw
XOR_AX_DX
jnz m_fed5c
mov ax,0x0101
stosw
loop .loop_0101
cld
inc di
inc di
MOV_SI_DI
MOV_CX_BX
MOV_DX_AX
.loop_0:
lodsw
XOR_AX_DX
jnz m_fed5c
stosw
loop .loop_0
dec di
dec di
std
MOV_SI_DI
MOV_CX_BX
MOV_DX_AX
.loop_1:
lodsw
XOR_AX_DX
jnz m_fed5c
loop .loop_1
in al,PPI_PORTC
and al,0xc0
mov al,0x0
; RAM NO ERROR
m_fed5a:
cld
ret
m_fed5c: ; pattern not equal?
cmp al,0x0
jnz m_fed5a
m_fed60:
MOV_AL_AH
jmp m_fed5a
Alles anzeigen
aufgerufen wird das z.B. so:
.start_ram_test_from_zero:
mov bx,[BIOS_OFF_Memory_Size]
sub bx,64
mov cl,0x4
shr bx,cl
MOV_CX_BX
mov bx,0x1000
.check:
mov ds,bx
mov es,bx
add bx,0x400
push dx
push cx
push bx
push ax
mov cx,WORDS_16K
call word RAM_TEST
jnz .ramtest_error
pop ax
add ax,strict RT_PLUS_16K
Alles anzeigen
Was mich konkret irritiert ist, dass laut Board DIP Sw. 640kb konfiguriert sind. Er meckert es ohne die Erweiterung nicht an und arbeitet mit seinen 256k.
Da er mit meiner Erweiterung auch nichts sagt, vermute ich, dass entweder der erste RAM IC defekt ist, oder irgendein Signal nicht korrekt arbeitet.
Deswegen möchte ich zuerst verstehen, wie der Code vom POST konkret arbeitet.
Bei dem disassemblierten BIOS fehlt leider einiges, wie z.B. die Variablendeklarationen, man muss sich das zusammenreimen oder halt aus dem Binary fischen.
Theoretisch könnte ich den ersten RAM IC auch einfach auslöten und in meinen RCT stecken...
Gruß Mario
Ein kleiner Feierabend-Spaziergang erfrischt den Geist...
Ich vermute Mal, die 2 CAS Zugriffe könnten ein Schreib- und Lesezugang sein, um zu prüfen, ob Speicher da ist.
Vermutlich klappt da was nicht.
Oh ja...
Wie ich hörte, ist bei den 1834ern über Jahre nichts passiert, was Restauration angeht.
Ich beackere was, was nicht oft gemacht wird - da liegt der Reiz.
Am Anfang war ich mir überhaupt nicht sicher, ob ich das hin bekomme.
Aber nachdem ich 2 Mainboards (ich hoffe sie sind beide... ) repariert habe, merke ich, wieviel Spaß mir das macht.
Aus dem einzelnen Board wird ein neuer Rechner auferstehen - ich habe ein ähnliches Gehäuse von einem Soemtron 286er übrig. Dank ISA Slot wird auch die Grafikkarte kein Thema sein.
Und da der DIN41612 Slot Erweiterungen schwierig macht, will ich mich später auch um andere Sachen wie Sound/RAM/VGA kümmern.
NE2000 & XT-IDE habe ich ja schon...
Ich habe ein sehr schönes Hobby gefunden.
Reparatur RAM Platine dauert noch etwas.
Digitalisiere gerade den Schaltplan. Das sind aber auch ein paar Eier drin...
Jedenfalls hat meine "auf Gut Glück" Suche noch kein Indiz gebracht, warum sie nicht erkannt wird.
2 ICs hatte ich bereits ausgetauscht.
Konnte gestern nur feststellen, dass die CAS Leitungen beim Boot nur 2x kurz aktiviert werden, dann aber nicht mehr.
Im Benutzerprofil. "Brutzelmaster" habe ich nur einen gesehen, dürfte also keine Verwechslung sein.
Eine Mail Adresse war aber nicht öffentlich hinterlegt, du könntest nur über PN via E-Mail anfragen - sofern er die Adresse auch liest.
http://www.youtube.com/channel/UCYaez6mdLmmFa1EBcOuALtg?sub_confirmation=1
Bis jetzt hat "Brutzelmaster" nichts von sich hören lassen...
mgoegel : Weißt Du ob der Kerle noch aktiv ist?
...ich befürchte ja fast das ich die Platinen reingeenieren muss.
Im RT Forum hat er das letzte Mal im Mai 2021 gepostet...
Du könntest ihm aber aus dem Forum per PN eine Mail senden. Alternativ hat er "seine" Homepage auf YT verlinkt, vielleicht bekommst du ja darüber Kontakt.
ZitatWas haltet Ihr für besser:
Eine, große Gesamtplatine oder viele Einzelplatinen wie aus dem Buch?
Eine große wäre vermutlich weniger Fehlerträchtig. Allerdings musst du die Fehlerfrei nachdesignen...
Da gibt es jetzt nicht viel dazu zu sagen...
...außer: mal schauen, was jetzt NOCH nicht geht...
Hi fanhistorie,
Ja hab ich. Ich müsste die Platine noch routen und ich mag mir gerade nicht ausdenken, was eine 6 Layer Platine kosten würde.
Selbst in China...
ok, vermutlich bekommt man das auch in weniger Layern hin. Aber ich schätze, für so ein Projekt fehlt mir dann die Erfahrung.
Das ist was anderes, als eine 2 Layer ISA Erweiterung.
Da vergleiche ich lieber mit der anderen Platine...
...ich denke, der 8286 ist es auch...
Vergleich mit dem anderen Board.
Da scheint nur ein DS8286 (bzw KR580WA86 D27) dran zu hängen...
Dann muss der womöglich auch raus... Mal eine Vergleichsmessung machen...
Ein neuer Vergleich zeigt mir, dass das /MEMW Signal am DMA still ist - außer bei einem DMA Request.
Auf dem Vergleichsboard habe ich da permanent Aktivität, auch bevor der DMA selbst los legt.
Soweit ich verstanden habe, wird der DMA DRAM Refresh ja nur mit MEMR ausgelöst.
Wofür da MEMW aktiv sein sollte, ist mir nicht klar, aber ganz klar scheint es da noch ein Thema zu geben...
ok, geht weiter...
Vergleichsmessung hat meinen Verdacht bestätigt... Löte gerade den Sockel ein
...aber leider noch nicht alles gewesen. weiter messen...
ah danke Jörg, jetzt weiß ich wo der her kommt...
Bevor ich den rausbaue mache ich noch einen Vergleich mit dem anderen Board.
Jetzt wo ich weiß, wonach ich schauen muss, geht es leichter.
ok, ich hab mir doch nochmal Zeit genommen...
Diverse Traces direkt am FDC.
Hauptfehler war: Alle Traces mit einer unformatierten Diskette waren nicht zu gebrauchen - da kommt kein DMA Zustande, weil der FDC vorher schon einen Lesefehler bringt.
Am anderen Board habe ich dann die Disk formatiert (ein Trace davon, einer mit "dir a:").
An diesem Board sah es dann nicht so sehr anders aus, also zurück auf das Board mit dem LA:
Nach diversen Prüfungen habe ich es nun wohl gefunden:
D9 ein ist DS8205 (bzw hier 74s405). Der soll Schreibzugriff auf das DMA PAGING REGISTER aktivieren (CLK auf D28 (DL295)).
Der Ausgang von D9 ist tot.
Leider schaffe ich heute keinen Tausch mehr. Das muss jetzt bis nächstes Wochenende warten...
Vielleicht kann ich dann mit den anderen defekten Platinen weiter machen...
Gruß Mario
Wird wohl ein paar Tage dauern, bis es weiter geht. Im Moment viel anderes zu tun.
Vielleicht nochmal am Wochenende - nächste Woche wieder außerhalb unterwegs.
Nachdem ich eine Runde Tetris und Sopwith gezockt habe, habe ich dann mal das Floppy unter DOS überprüft.
Es ist so, dass ich Lesefehler bekomme. Hier wird es ein Problem in Richtung DMA/Interrupt geben, schätze ich.
Leider fehlt mir hier noch das Wissen, wie der Zugriff genau stattfindet und was alles da sein muß.
Sobald ich da mehr weiß, kann ich an die Fehlersuche gehen.