001
26.08.2016, 10:31 Uhr
Olli
|
<06> sollte das 7. Segment sein. Der Wert danach (0xB712) Die defekte (relative) RAM Adresse.
https://github.com/OlliL/P8000/blob/master/firmware/MON16/p.test.s
Quellcode: |
ld ERRPAR_ID, #%00EA !Fehlerparameter fuer Fehler 73, 74 <r6>, r7, r5, r4 !
[..........]
!----------------------------------------------- Testschritt 74 (0102, 0103) Test auf fehlerhafte '%AAAA'- bzw. '%5555'-Daten -----------------------------------------------!
!Das ganze betrachtete Segment wird mit dem Datenwert %AAAA bzw. %5555 beschrieben und wieder rueckgelesen. --- Fehler 74, wenn ein %AAAA- bzw. %5555-Wert fehlerhaft rueckgelesen wurde ---!
RATE5: ld r8, #%74 !Fehler 74: 'A' or '5' Data Fault! andb rh1, #%03 !Loeschen Bit2-7(rh1)! calr WR_TESTNR !Ausgabe der Testschrittnummer!
ld r5, #%AAAA !zuerst %AAAA in RAM eintragen! RATE6: ld r12, r6 !r12=Segnr. Zieladresse:=Segnr. Quelladresse! ld r13, #%0002 !r13=Offset Zieladresse:= %0002! xor r7, r7 !r7=Offset Quelladresse:= %0000! ld r0, #%7FFF !r0=WORD-Anzahl fuer ldir! set r9, #%0F ldctl FCW, r9 !segmentierten Mode einstellen! ld @r6, r5 ldir @r12, @r6, r0 !ganzes Segment mit r5 beschreiben!
xor r7, r7 !r7=Anfangs-Offset-Adresse fuer Vergleich:=%0! ld r0, #%8000 !r0=Anzahl der Worte fuer Vergleich! cpir r5, @r6, r0, nz !Test ab Adr. 0 (max. bis Segmentende), bis zu einer Stelle, wo r5 nicht im RAM steht! dec r7, #2 !r7 zeigt auf fehlerhafte RAM-Adresse! ld r4, @r6 !fehlerhafte Adresse lesen! res r9, #%0F ldctl FCW, r9 !nichtsegmentierten Mode einstellen! calr BY_WO_CMP !Vergleich r4/r5; ggf. Fehler 74! cpb rl5, #%55 jr z, RATE7 !naechster Testschritt! ld r5, #%5555 !Test mit Datenwort %5555! jr RATE6
|
-- P8000 adventures: http://pofo.de/blog/?/categories/1-P8000 Dieser Beitrag wurde am 26.08.2016 um 10:31 Uhr von Olli editiert. |