007
30.05.2006, 16:35 Uhr
Olli
|
Nun... Problem ist, das ich nicht weiss wo im WEGA Kern das geprueft wird (hab ich beim druebergucken jetzt nicht gesehn).
Auf Hardwareseite wissen wir ja, das die MMU 16MB kann. der Teil im Monitor ist
Quellcode: | !--------------------------------------------- Testschritt 70 (0000 'P') Test auf externen Speicher (hoechstes Segment) ---------------------------------------------!
!Beginnend bei Segment 0 wird jeweils bei den Offsetadressen %8000 und %FFFE getestet, ob RAM vorhanden ist (auf der Adresse wird die Segmentnummer des betrachteten Segments eingetragen und rueckgelesen). Wenn auf beiden Adressen kein RAM vorhanden ist, ist die vorherige Segmentadresse die hoechste. --- Fehler 70, wenn kein Segment vorhanden ist ---! ld r8, #%70 !Fehler 70: NO EXTERNAL MEMORY! ld ERRPAR_ID, #%0000 !Fehlerparameter fuer Fehler 70: keine Parameter! xorb rh1, rh1 !Flagbyte rh1 loeschen! calr WR_TESTNR !Ausgabe der Testschrittnummer! xor r6, r6 !r6 (rh6) := Segmentnummer (=0)! ld MAX_SEGNR, r6 !hoechste Segmentnummer initialisieren (:=0)! ldb rl5, #%A5 C_SEG: ldb rl0, #%02 !Schleifenzaehler (2 Adressen testen)! ldb rh5, rh6 !rh5:=Segmentnummer des zu testenden Segments! ld r7, #%8000 !1. betrachtete Offsetadresse des Segments! C_SEGL: sc #SC_SEGV ld @r6, r5 !r5 (rh5=akt.Segnr./rl5=%A5) in RAM eintragen! ld r4, @r6 !ruecklesen! sc #SC_NSEGV cp r5, r4 !ruecklesbar! jr z, INC_SEG !Sprung wenn Segment vorhanden! ld r7, #%FFFE !2. betrachtete Offsetadresse des Segments! dbjnz rl0, C_SEGL
decb rh6, #%01 !betrachtetes Segment nicht vorhanden; rh6:=hoechstes vorhandenes Segment! cpb rh6, #0 jr ge, _SEG_IO !mindestens Segment 0 vorhanden! jp FAT_ERR !Fehler: kein Segment vorhanden!
INC_SEG: ld MAX_SEGNR, r6 !hoechste Segmentnummer retten! incb rh6, #1 !Segmentadresse erhoehen! jr C_SEG !naechstes Segment testen!
|
Nur kann ich leider kein ASM, geschweige denn Zilogs PLZ/SYS Dialekt -- P8000 adventures: http://pofo.de/blog/?/categories/1-P8000 Dieser Beitrag wurde am 30.05.2006 um 16:42 Uhr von Olli editiert. |