.ll 79 .pl 66 .lt 79 .de NP 'sp 2 .tl ''- % -'' 'bp 'sp 2 .tl 'Dokumentation'WEGA'U8000-Softwaremonitor' 'sp 3 .. .wh -4 NP .nf .sp 6 ******************************************************************************* ******************************************************************************* W E G A - Dokumentation (C) ZFT/KEAW Abt. Basissoftware - 1990 U8000-Softwaremonitor (MON16) Bearbeiter: J. Zabel Datum: 01.01.1990 Version: 3.1 ******************************************************************************* ******************************************************************************* 1. Module des U8000-Softwaremonitors ==================================== .fi Zur leichteren Handhabung der Quellen des U8000-Softwaremonitors wurde dieser in verschiedene Module unterteilt, wobei jeder Modul inhaltlich zusammengehoerende Proceduren enthaelt. .nf Der U8000-Softwaremonitor umfasst folgende Module: Modulbezeichnung zugehoeriger Dateiname p_init p.init.s p_term p.term.s p_comm p.comm.s p_brk p.brk.s p_test p.test.s p_gesa p.gesa.s p_ldsd p.ldsd.s p_boot p.boot.s p_disk p.disk.s p_dummy p.dummy.s p_crc p.crc.s p_ram p.ram.s .fi Der Modul p_dummy enthaelt nur eine Feldvereinbarung (array [x byte]), die so gross sein muss, dass der Modul p_crc auf der Adresse %3FF0 beginnt. Die einzelnen Module sind folgendermassen zu assemblieren und zu linken (unter WEGA): .nf as -l -o p.init.o p.init.s as -l -o p.term.o p.term.s as -l -o p.comm.o p.comm.s as -l -o p.brk.o p.brk.s as -l -o p.test.o p.test.s as -l -o p.gesa.o p.gesa.s as -l -o p.ldsd.o p.ldsd.s as -l -o p.boot.o p.boot.s as -l -o p.disk.o p.disk.s as -l -o p.dummy.o p.dummy.s as -l -o p.crc.o p.crc.s as -l -o p.ram.o p.ram.s ld p.init.o p.term.o p.comm.o p.brk.o p.test.o p.gesa.o p.ldsd.o p.boot.o p.disk.o p.dummy.o p.crc.o p.ram.o -o MON16 strip -h MON16 .fi Die Datei MON16 enthaelt dann den Maschinencode des U8000-Softwaremonitors, mit dem die EPROM's (4xE2732, Adresse %0000-%3FFF) programmiert werden koennen. .br Anschliessend sind auf den Adressen %3FF0-%3FFF die Pruefsummen der einzelnen EPROM's nachzuprogrammieren (siehe dazu Modul p_crc (Datei p.crc.s) und Dokumentation "EPROM-Pruefsummen" (Datei mon16.crc.doc)). .nf 2. Inhaltliche Uebersicht ========================= Der U8000-Softwaremonitor enthaelt Routinen - zur Speicherarbeit (D, C, F, M), - zur Ausfuehrung von Port-I/O-Operationen (PR, PRS, PW, PWS), - zur Testung von U8000-Programmen (R, B, G, N), - zum Lesen und Schreiben von Bloecken auf Hard-Disk (HR, HW), - zum Formatieren von blockorientierten Disketten im WEGA-Format (FF) und zum Lesen und Schreiben von Bloecken auf solchen Disketten (FR, FW) - zur Arbeit mit dem 8-Bit-Teil (GE, S, Q, QRES), - zur Arbeit mit einem lokalen System (RGE, RS, RQ), - zum Hardwareeigentest (T), - zum automatischen Laden des WEGA-Betriebssystems (NMI-Taste), - zum manuellen Laden des WEGA-Betriebssystems (O), - zur Arbeit mit dem LOAD/SEND-System (LOAD, SEND, QUIT). .bp 3. Beschreibung der Module des U8000-Softwaremonitors ===================================================== .fi Jeder Modul enthaelt einen Teil "allgemeine Vereinbarungen". Da dieser Teil fuer alle Module identisch ist, wurde er in den Listings der Module nicht ausgedruckt, sondern ist am Ende der Listings separat angefuegt. .nf 3.1. Modul p_init ----------------- *** Systeminitialisierung *** Prozedur ENTRY_ (Eintrittspunkt nach RESET) - U8000-Initialisierung (PSAREA,...) - Test und Initialisierung der Koppelschnittstelle (fuer Terminalbetrieb ueber SIO0_B des 8-Bit-Teils und Dateitransfer von/zu UDOS) - falls die Koppelschnittstelle inaktiv ist, Initialisierung des seriellen Kanals fuer das Terminal (SIO0_B) - Initialisierung des seriellen Kanals fuer das LOAD/SEND-System (SIO0_A) - Initialisierung des Arbeitsspeichers - Ausgabe der Systemmeldung Prozedur CMDLOP (Kommandoeingabeschleife) - Ansprung der ausgewaehlten Kommandoroutine bzw. - Fehlermeldung bei falschem Kommando Prozedur INIT_CTC0_0 - Initialisierung CTC0_0 fuer Baudrate SIO0_A Prozedur INIT_CTC0_1 - Initialisierung CTC0_1 fuer Baudrate SIO0_B Prozedur INIT_SIO0_A - Initialisierung SIO0_A fuer LOAD/SEND/QUIT Prozedur INIT_SIO0_B - Initialisierung SIO0_B fuer Terminalbetrieb Prozedur ERROR (allgemeine Fehlerroutine) - Ausgabe "?" auf Terminal und Sprung in Kommandoeingabeschleife Prozedur UINSTR_ERR (Trap-Routine fuer nichtimplementierte Befehle) - Ausgabe "UNIMPLEMENTED INSTRUCTION TRAP ID=xxxx" auf Terminal und Sprung zur Kommandoeingabeschleife Prozedur PINSTR_ERR (Trap-Routine fuer priviligierte Befehle) - Ausgabe "PRIVILEGED INSTRUCTION TRAP ID=xxxx" auf Terminal und Sprung zur Kommandoeingabeschleife Prozedur SC_ENTRY (System-Call-Routine) - Ausfuehrung des entsprechenden System-Calls: %00 - Unterbrechungspunkt ("BREAK AT xxxx") %01 - segmentierte Arbeitsweise %02 - nichtsegmentierte Arbeitsweise %04 - Prozedur TYRD Modul p_term %06 - Prozedur TYWR Modul p_term %08 - Prozedur RD_LINE_BFF Modul p_term %0A - Prozedur WR_CRLF Modul p_term %0C - Prozedur WR_MSG Modul p_term %0E - Prozedur BTOH16 Modul p_term %10 - Prozedur WR_OUTBFF_CR Modul p_term %12 - Prozedur BTOH8 Modul p_term %14 - Prozedur PUT_SEGNR Modul p_term %16 - Prozedur PUT_CHR Modul p_term %18 - Prozedur WOCF_MCZ Modul p_ldsd %1A - Prozedur TYWR_MCZ Modul p_ldsd %1C - Prozedur CMDLOP Modul p_init %1E - Prozedur DISK Modul p_disk %20 - Prozedur TYRD_UDOS_INT Modul p_term %22 - Prozedur TYWR_UDOS_INT Modul p_term %24 - Prozedur FLOPPY Modul p_gesa %26 - Prozedur WR_OUTBFF Modul p_term Prozedur MMU_ERR (Segment-Trap-Routine) - Ausgabe "MMU TRAP ID=xxxx" auf Terminal und Sprung zur Kommandoeingabeschleife Prozedur NMI_INT (NMI-Routine) - Rettung aller Register - Ausgabe CR LF "NMI" auf Terminal und Sprung zur Kommandoeingabeschleife Prozedur NVI_ERR (Interruptroutine fuer uninitialisierten nichtvektorisierten Interrupt (NVI)) - Ausgabe "UNINITIALIZED NONVECTORED INTERRUPT ENTRY ID=xxxx" auf Terminal und Sprung zur Kommandoeingabeschleife Prozedur VI_ERR (Interruptroutine fuer uninitialisierten vektorisierten Interrupt (VI)) - Ausgabe "UNINITIALIZED VECTORED INTERRUPT ENTRY ID=xxxx" auf Terminal und Sprung zur Kommandoeingabeschleife .bp 3.2. Modul p_term ----------------- *** Routinen zur Terminalarbeit *** Prozedur PTY_INT (VI-Routine zur Dateneingabe vom Terminal (SIO0_B des 16-Bit-Teils)) Prozedur PTY_ERR (VI-Routine bei Empfangsfehler vom Terminal (SIO0_B des 16-Bit-Teils)) Prozedur KOPPEL_INT (VI-Routine zur Dateneingabe von Koppelschnittstelle (Terminal bzw. UDOS)) Prozedur INCPTR (Pufferzeiger incrementieren) Prozedur TYRD (Einlesen eines Zeichens aus Terminal-Interrupt-Eingabepuffer PTYBFF) Prozedur TYWR (Ausgabe eines Zeichens auf Terminal) Prozedur TYRD_UDOS_INT (Einlesen eines Zeichens von Dateitransfer von/zu UDOS bzw. Floppy-Block- transfer aus Interrupt-Eingabepuffer UDOSBFF ueber Koppelschnittstelle) Prozedur TYRD_UDOS_POL (Einlesen eines Zeichens von Dateitransfer von/zu UDOS bzw. Floppy-Blocktransfer im Polling ueber Koppelschnittstelle) Prozedur TYWR_UDOS_INT (Ausgabe eines Zeichens fuer Dateitransfer von/zu UDOS bzw. Floppy-Block- transfer ueber Koppelschnittstelle mit Interruptausloesung auf 8-Bit-Teil) Prozedur TYWR_UDOS_POL (Ausgabe eines Zeichens fuer Dateitransfer von/zu UDOS bzw. Floppy-Block- transfer ueber Koppelschnittstelle ohne Interruptausloesung auf 8-Bit-Teil) Prozedur TYWR_KOPPEL_INT / TYWR_KOPPEL_POL (Hilfsroutine fuer Ausgabe an Koppelschnittstelle) Prozedur KP_OUTB / KP_INB (Ausgabe bzw. Eingabe an/von einem I/O-Port des 8-Bit-Teils) Prozedur TYRDWR (Einlesen eines Zeichens aus Terminal-Eingabepuffer PTYBFF und Ausgabe dieses Zeichens auf Terminal) Prozedur RD_LINE_BFF (Zeile aus Terminal-Eingabepuffer PTYBFF lesen, in Zwischenpuffer abspeichern und auf Terminal ausgeben) Prozedur RD_LINE_INBFF (Zeile aus Terminal-Eingabepuffer PTYBFF lesen, in Eingabepuffer INBFF abspeichern und auf Terminal ausgeben) Prozedur CLRCHR (Loeschen eines Zeichens auf Terminal) Prozedur WR_CRLF (Ausgabe CR LF auf Terminal) Prozedur WR_NULL (Ausgabe einer Anzahl Nullen auf Terminal (entsprechend NULLCT)) Prozedur WR_MSG (Zeichenkettenausgabe auf Terminal) Prozedur WR_OUTBFF_CR (Ausgabe des Inhalts des Ausgabepuffers OUTBFF mit CR auf Terminal) Prozedur WR_OUTBFF (Ausgabe des Inhalts des Ausgabepuffers OUTBFF auf Terminal) Prozedur HTOB (Konvertierung Hexaziffer (ASCII) in Binaerwert) Prozedur BTOH16 (Konvertierung Binaerwert (16 Bit) in Hexazahl (ASCII) und Eintragung in Ausgabepuffer OUTBFF) Prozedur BTOH8 (Konvertierung Binaerwert (8 Bit) in Hexazahl (ASCII) und Eintragung in Ausgabepuffer OUTBFF) Prozedur BTOH4 (Konvertierung Binaerwert (4 Bit) in Hexazahl (ASCII) und Eintragung in Ausgabepuffer OUTBFF) Prozedur GET_CHR (naechstes Zeichen aus Eingabepuffer INBFF bereitstellen) Prozedur GET_SIGN (naechstes Space im Eingabepuffer INBFF suchen und darauffolgendes Zeichen ungleich Space bereitstellen) Prozedur GET_SIGNW (naechstes Zeichen ungleich Space aus Eingabepuffer INBFF bereitstellen) Prozedur GET_SGNR (Konvertierung der Segmentnummer aus Eingabepuffer INBFF) Prozedur GET_HEXZ (Konvertierung einer Hexazahl aus Eingabepuffer INBFF in Binaerwert) Prozedur GET_ADR (Konvertierung einer Adresse aus Eingabepuffer INBFF in Binaerwert) Prozedur GET_PAR (Konvertierung einer Parameterfolge (adr1 adr2 word) aus Eingabepuffer INBFF in Binaerwerte) Prozedur RD_DATA (Eingabe eines Datenwertes) - Ausgabe des Zeichens ":" auf Terminal - Warten auf Dateneingabe von Terminal - Abspeichern des eingeg. Datenwertes im Eingabepuffer INBFF - Konvertierung des Datenwertes aus dem Eingabepuffer INBFF in Binaerwert Prozedur GET_DATA (Konvertierung eines Datenwertes aus dem Eingabepuffer INBFF in Binaerwert) Prozedur WR_R5_RDDATA - Konvertierung eines Binaerwertes (16 Bit) in ASCII-Hexazahl und Eintragung in Ausgabepuffer OUTBFF - Ausgabe des Inhaltes des Ausgabepuffers OUTBFF auf Terminal - Ausgabe des Zeichens ":" auf Terminal - Warten auf Dateneingabe von Terminal - Abspeichern des eingeg. Datenwertes im Eingabepuffer INBFF - Konvertierung des Datenwertes aus dem Eingabepuffer INBFF in Binaerwert Prozedur WR_OBF_RDDATA - Ausgabe des Inhaltes des Ausgabepuffers OUTBFF auf Terminal - Ausgabe des Zeichens ":" auf Terminal - Warten auf Dateneingabe von Terminal - Abspeichern des eingeg. Datenwertes im Eingabepuffer INBFF - Konvertierung des Datenwertes aus dem Eingabepuffer INBFF in Binaerwert Prozedur PUT_CHR (Eintragung eines Zeichens in Ausgabepuffer OUTBFF) Prozedur PUT_3C (Eintragung des Zeichens "<" in Ausgabepuffer OUTBFF) Prozedur PUT_1CHR (Eintragung eines Zeichens in Ausgabepuffer OUTBFF) Prozedur PUT_2CHR (Eintragung von 2 Zeichen in Ausgabepuffer OUTBFF) Prozedur PUT_SEGNR (Konvertierung der binaeren Segmentnummer in ASCII-Hexazahl (xx) und Eintragung von "" in Ausgabepuffer OUTBFF) Prozedur PUT_SGNR (Konvertierung der binaeren Segmentnummer in ASCII-Hexazahl (xx) und Eintragung von "xx>" in Ausgabepuffer OUTBFF) .bp 3.3. Modul p_comm ----------------- *** verschiedene Monitorkommandos (Speicherarbeit, Port-I/O, Block-Floppy, Hard-Disk) *** Prozedur DISPLAY (Monitorkommando "D" - Anzeigen bzw. Veraendern von Speicherbereichen) Prozedur TST_WBL (Zeichentest auf "W", "B" bzw. "L") Prozedur COMPARE (Monitorkommando "C" - Vergleichen von Speicherbereichen) Prozedur PUT_ADR_INHALT (Eintragung 'offset= inhalt' in Ausgabepuffer OUTBFF) Prozedur FILL (Monitorkommando "F" - Fuellen eines Speicherbereiches) Prozedur MOVE (Monitorkommando "M" - Verschieben eines Speicherbereiches) Prozedur PORT_READ (Monitorkommando "PR" - Port-Lese-Routine) Prozedur PORT_WRITE (Monitorkommando "PW" - Port-Schreib-Routine) Prozedur PORT_READ_SPECIAL (Monitorkommando "PRS" - Special-Port-Lese-Routine) Prozedur PORT_WRITE_SPECIAL (Monitorkommando "PWS" - Special-Port-Schreib-Routine) Prozedur PORT_RD (allgemeine Port-/Special-Port-Leseroutine) Prozedur PORT_WR (allgemeine Port-/Special-Port-Schreibroutine) Prozedur P_IN (Port-Eingabe) Prozedur PS_IN (Special-Port-Eingabe) Prozedur P_OUT (Port-Ausgabe) Prozedur PS_OUT (Special-Port-Ausgabe) Prozedur HARD_DISK_READ (Monitorkommando "HR" - Block von Hard-Disk lesen) Prozedur HARD_DISK_WRITE (Monitorkommando "HW" - Block auf Hard-Disk schreiben) Prozedur HARD_DISK (Schreib-/Leseroutine fuer Hard-Disk) Prozedur FLOPPY_FORMAT (Monitorkommando "FF" - Formatieren einer blockorientierten Diskette im WEGA-Format) Prozedur FLOPPY_READ (Monitorkommando "FR" - Block von einer blockorientierten Diskette im WEGA-Format lesen) Prozedur FLOPPY_WRITE (Monitorkommando "FW" - Block auf eine blockorientierte Diskette im WEGA-Format schreiben) Prozedur FLOPPY_BLOCK (Schreib-/Lese-/Formatierungsroutine fuer blockorientierte Disketten im WEGA-Format) .bp 3.4. Modul p_brk ---------------- *** Monitorkommandos zur Programmtestung *** Prozedur REGISTER (Monitorkommando "R" - Anzeigen und Veraendern von Registerinhalten) Prozedur WR_REGBEZ1 (Ausgabe der Registerbezeichnungen 1. Zeile) Prozedur WR_REGBEZ2 (Ausgabe der Registerbezeichnungen 2. Zeile) Prozedur WR_WERTE1 (Ausgabe der Registerwerte 1. Zeile) Prozedur WR_WERTE2 (Ausgabe der Registerwerte 2. Zeile) Prozedur SAVREG (Registerrettung) Prozedur GETREG (Registerrueckspeicherung) Prozedur BREAK (Monitorkommando "B" - Setzen bzw. Loeschen eines Unterbrechungspunktes) Prozedur GO (Monitorkommando "G" - Programmabarbeitung starten) Prozedur GO_NXT (Abarbeitung eines Befehls, auf dem Unterbrechungspunkt steht) Prozedur GO_INT (VI-Routine fuer GO) Prozedur NEXT (Monitorkommando "N" - Abarbeitung einer Anzahl von Befehlen) Prozedur NXT_INT (VI-Routine fuer NEXT) Prozedur RETI_CTC0_3 (Ruecksetzen CTC0_3 fuer GO/NEXT) .bp 3.5. Modul p_test ----------------- *** Hardwareeigentest *** Prozedur TEST_ (Monitorkommando "T" - Hardwareeigentest) Prozedur RAM_TEST_SEG0 (RAM-Test des Segments 0) Prozedur MMU_TEST (MMU-Test) Prozedur RAM_TEST_SEG (RAM-Test eines Segments) Prozedur PRIVINSTR_TRAP (Trap-Routine fuer Priv.-Instr.-Trap) Prozedur SEGMENT_TRAP (Trap-Routine bei Segment-Trap) Prozedur CODE_TRAP (Trap-Routine bei Segment-Trap fuer Test der Code-MMU) Prozedur CLR_CTL_REG (Beschreiben der MMU-Register SAR und DSCR) Prozedur LD_SDR (Fuellen der 64 SDR einer MMU) Prozedur RD_SDR (Lesen und Vergleichen der 64 SDR einer MMU) Prozedur LD_3SDR (Fuellen der 64 SDR aller 3 MMU's) Prozedur SEGMENT_TRAP_TEST (Test Segment-Trap-Ausloesung) Prozedur BY_WO_CMP (Vergleich zweier Byte- bzw. Word-Register) Prozedur FAT_ERR (Fatal Error - Fehlerabbruch) Prozedur WR_TESTNR (Ausgabe der Testschrittnummer auf Terminal) Prozedur WR_2SP (Ausgabe von 2 Space auf Terminal) Prozedur WR_2BS (Ausgabe von 2 Backspace auf Terminal) Prozedur MSG_ERROR (Ausgabe einer Fehlerzeile) Prozedur MSG_MAXSEG (Ausgabe "MAXSEG=") Prozedur CRC_TEST (Hilfsroutine fuer CRC-Pruefsummentest) Prozedur PIO_TEST1 (Hilfsroutine fuer PIO-Test) Prozedur CTC_TEST1 (Hilfsroutine fuer CTC-Test) Prozedur CTC_TEST2 (Hilfsroutine fuer CTC-Test) Prozedur CTC_TEST3 (Hilfsroutine fuer CTC-Test) Prozedur CTC_INIT (Hilfsroutine fuer CTC-Test) Prozedur CTC_ISR (Hilfsroutine fuer CTC-Test) Prozedur SIO_TEST1 (Hilfsroutine fuer SIO-Test) Prozedur SIO0_A_TEST2 (Hilfsroutine fuer SIO-Test) Prozedur SIO0_B_TEST2 (Hilfsroutine fuer SIO-Test) Prozedur SIO1_A_TEST2 (Hilfsroutine fuer SIO-Test) Prozedur SIO1_B_TEST2 (Hilfsroutine fuer SIO-Test) Prozedur SIO_INIT (Hilfsroutine fuer SIO-Test) Prozedur SIO_ISR (Hilfsroutine fuer SIO-Test) .bp 3.6. Modul p_gesa ----------------- *** Monitorkommandos zur Arbeit mit 8-Bit-Teil bzw. mit einem lokalen System ueber remote *** Prozedur GET (Monitorkommando "GE" - Einlesen einer UDOS-Datei von 8-Bit-Teil in RAM) Prozedur SAVE (Monitorkommando "S" - Auslagern eines Speicherbereiches als UDOS-Datei auf 8-Bit-Teil) Prozedur QUIT8 (Monitorkommando "Q" - Rueckkehr in 8-Bit-Teil ohne RESET U8000) Prozedur QUIT8_RESET (Monitorkommando "QRES" - Rueckkehr in 8-Bit-Teil mit RESET U8000) Prozedur FLOPPY (Treiber zur Arbeit mit einer blockorientierten Diskette im WEGA-Format auf 8-Bit-Teil ueber Koppelschnittstelle) Prozedur RM_GET (Monitorkommando "RGE" - Einlesen einer Datei von einem lokalen System in RAM) Prozedur RM_SAVE (Monitorkommando "RS" - Auslagern eines Speicherbereiches als Datei auf einem lokalen System) Prozedur RM_QUIT (Rueckkehr zum lokalen System) 3.7. Modul p_ldsd ----------------- *** Monitorkommandos zur Arbeit mit einem MCZ ueber LOAD/SEND *** Prozedur QUIT (Monitorkommando "QUIT" - Uebergang in Betriebssystem des MCZ (Transparent-Mode)) Prozedur LOAD (Monitorkommando "LOAD" - Einlesen einer Datei von MCZ in RAM) Prozedur MCZ_INT (VI-Routine fuer MCZ-Zeicheneingabe) Prozedur MCZ_ERR (VI-Routine fuer MCZ-Empfangsfehler) Prozedur INCPTR_MCZ (Zeichenzeiger incrementieren) Prozedur TYWR_MCZ (Zeichenausgabe an MCZ) Prozedur WR_OUTBFF_CR_MCZ (Ausgabe des Inhaltes des Ausgabepuffers OUTBFF mit CR an MCZ) Prozedur WR_OUTBFF_MCZ (Ausgabe des Inhaltes des Ausgabepuffers OUTBFF an MCZ) Prozedur IN_POI_IB Prozedur EKBL Prozedur EKTB_PST Prozedur EKBY_PSB Prozedur LDB_MEM Prozedur EKLA Prozedur SAW_MCZ Prozedur WOEOI_MCZ Prozedur WOEOS_MCZ Prozedur WOCF_MCZ Prozedur WOCF_MCZ_OI Prozedur F_IB_MCZ Prozedur O_FIB_MCZ Prozedur S_RPB Prozedur S_LAB Prozedur S_SNB Prozedur SEND (Monitorkommando "SEND" - Auslagern eines Speicherbereiches als Datei auf MCZ) Prozedur MIOB_CON .bp 3.8. Modul p_boot ----------------- *** Monitorkommandos zum WEGA-Start *** Prozedur AUTOBOOT (Monitorkommando "NMI-Taste" - automatischer WEGA-Start) Prozedur OS_BOOT (Monitorkommando "O" - manueller WEGA-Start) Prozedur DSK_BOOT (WEGA-Start von Hard-Disk) Prozedur FLP_BOOT (WEGA-Start von blockorientierter Diskette im WEGA-Format) Prozedur UDOS_BOOT (WEGA-Start von UDOS-Diskette) Prozedur RM_BOOT (WEGA-Start vom lokalen System ueber "Remote") 3.9. Modul p_disk ----------------- *** Hard-Disk-Treiber *** Prozedur DISK 3.10. Modul p_crc ----------------- *** Speicherplatzreservierung fuer EPROM-Pruefsummen *** 3.11. Modul p_ram ----------------- *** Arbeitsspeicher ***