Mapa pamięci CROOK-5: Różnice pomiędzy wersjami

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania
Nie podano opisu zmian
 
(Nie pokazano 14 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 29: Linia 29:
| | zawartość nieznana
| | zawartość nieznana
|-
|-
| bgcolor="Cornsilk" | zmienna, stała, struktura
| bgcolor="Cornsilk" | Dane (zmienna, stała, struktura)
|-
|-
| bgcolor="Pink" | adres (wskaźnik)
| bgcolor="Pink" | Adres (wskaźnik)
|-
|-
| bgcolor="Lavender" | kod (procedura, cel skoku)
| bgcolor="Lavender" | Kod (procedura, funkcja, etykieta)
|}
|}


Linia 39: Linia 39:
! Adres !! Etykieta !! Długość !! Zawartość !! Opis
! Adres !! Etykieta !! Długość !! Zawartość !! Opis
|-
|-
| 0x0002 || DUMTIM || 1  ||             || ?
| 0x0002 || DUMTIM || 1  || || ?
|- style="background: Pink;"
|- style="background: Pink;"
| 0x0003 || ENDSYS || 1  || AEOV0=0x1600 || koniec właściwiej części systemu (przed nakładkami?)
| 0x0003 || ENDSYS || 1  || AEOV0=0x1600 || koniec właściwiej części systemu (przed nakładkami?)
|-
| colspan=5 | [[Tablica konfiguracji MERY-400]]
|-  style="background: Cornsilk;"
| 0x0004 || NOBUFF || 3 || || starszy bajt: różne, młodszy bajt: Number Of BUFFers (liczba buforów systemowych)
|-  style="background: Cornsilk;"
| 0x0007 || SYSSET || 1 || || SYStem SETtings? (ilość pamięci dla systemu, długość buforów końcówek)
|-  style="background: Cornsilk;"
| 0x0008 || TABMEM || 8 || || TABlica konfiguracji pamięci (MEMory)
|-  style="background: Cornsilk;"
| 0x0010 || TABDIN || 16 || || adresy talerzy dyskowych
|-  style="background: Cornsilk;"
| 0x0020 || TABMT || 4 || || pamięci taśmowe
|-  style="background: Cornsilk;"
| 0x0024 || CAMINI || 2 || || adres CAMAC
|-  style="background: Cornsilk;"
| 0x0026 || PIINI || 2 || || adres PI
|-  style="background: Cornsilk;"
| 0x0027 || IECINI || 2 || || adres IEC
|-  style="background: Cornsilk;"
| 0x0028 || TABCHL || 5 || || TABle CHanneL - tablica kanałów
|-  style="background: Cornsilk;"
| 0x002d || ADNET || 1 || || ADress NETwork - adres szybkiego łącza
|-  style="background: Cornsilk;"
| 0x002e || TABCLK || 1 || || zegar czasu rzeczywistego Amepolu
|-  style="background: Cornsilk;"
| 0x002f || ADGUN || 1 || || Numer systemowy jednostki grupowej monitorów ekranowych
|-  style="background: Cornsilk;"
|-  style="background: Cornsilk;"
| 0x0004 ||       || 60 ||             || [[Tablica konfiguracji MERY-400]]
| 0x0030 || SETDEV || 15 || || końcówki
|-
| colspan=5 | Koniec tablicy konfiguracji MERY-400
|-  style="background: Pink;"
|-  style="background: Pink;"
| 0x0040 ||        || 32 ||              || [[Przerwania]]
| 0x0040 ||        || 32 ||              || [[Przerwania]]
Linia 51: Linia 79:
| 0x0061 || STACK  || 1  || 0x2ffc      || adres stosu
| 0x0061 || STACK  || 1  || 0x2ffc      || adres stosu
|- style="background: Pink;"
|- style="background: Pink;"
| 0x0062 || BPROG  || 1  || TW          || Bieżący PROGram (wskaźnik na strukturę opisującą aktualny proces)
| 0x0062 || BPROG  || 1  || TW          || Bieżący PROGram (wskaźnik na kontekst bieżącego procesu)
|- style="background: Cornsilk;"
|- style="background: Cornsilk;"
| 0x0063 || D2M5  || 1  ||              || [[Tablica opisu dysków WINCHESTER|kwant podziału winchestera]]
| 0x0063 || D2M5  || 1  ||              || [[Tablica opisu dysków WINCHESTER|kwant podziału winchestera]]
Linia 63: Linia 91:
| 0x006d || CHCS || || || procedura licząca sumę kontrolną jądra (CHeck Control Sum)
| 0x006d || CHCS || || || procedura licząca sumę kontrolną jądra (CHeck Control Sum)
|- style="background: Lavender;"
|- style="background: Lavender;"
| 0x0088 || STOP1R || || || tracenie czasu (dlaczego tutaj co 300 cykli timera liczymy sumę kontrolną?)
| 0x0088 || STOP1R || || || tracenie czasu
|- style="background: Lavender;"
|- style="background: Lavender;"
| 0x009a || START || || || start jądra
| 0x009a || START || || || start jądra
Linia 77: Linia 105:
| 0x01e9 || EXIT || || || wyjście ze schedulera? (przywróc rejestry i wektor stanu, uruchom proces)
| 0x01e9 || EXIT || || || wyjście ze schedulera? (przywróc rejestry i wektor stanu, uruchom proces)
|- style="background: Lavender;"
|- style="background: Lavender;"
| 0x020d || EXIX || || || "załaduj" bieżący proces
| 0x020d || EXIX || || || "załaduj" bieżący proces (wyjście z przerwania?)
|- style="background: Lavender;"
|- style="background: Lavender;"
| 0x0231 || TAKE || || || wejście do schedulera?
| 0x0231 || TAKE || || || wejście do schedulera? (TAKE process?)
|-
|-
| ... || || || || system
| colspan=5 | ...
|- style="background: Lavender;"
|- style="background: Lavender;"
| 0x0368 || CLOCK || || || obsługa przerwania timera
| 0x0368 || CLOCK || || || obsługa przerwania timera
Linia 89: Linia 117:
| 0x054d || INSTX || 1 || || obsługa przerwania instrukcji nielegalnej (w tym SINT)
| 0x054d || INSTX || 1 || || obsługa przerwania instrukcji nielegalnej (w tym SINT)
|-
|-
| ... || || || || system
| colspan=5 | ...
|- style="background: Pink;"
|- style="background: Pink;"
| 0x059e || TABEXL || 65  ||              || TABlica EXtrakodów
| 0x059e || TABEXL || 65  ||              || TABlica EXtrakodów
|- style="background: Lavender;"
|- style="background: Lavender;"
| 0x05eb || QEXIT || || || wybranie następnego procesu do uruchomienia
| 0x05eb || QEXIT || || || wybranie następnego procesu do uruchomienia (Queue and EXIT?)
|- style="background: Lavender;"
| 0x101f || GENAD || || || GENerator ADresów (losowych) dla "niszczarki" pamięci
|- style="background: Lavender;"
| 0x1049 || GENOB || || || funkcja do mieszania identyfikatora systemu
|- style="background: Lavender;"
| 0x113f || PLXINX || || || PLiX INterrupt - obsługa przerwania z PLIX-a (MULTIX-a)
|- style="background: Lavender;"
| 0x1143 || MUXINX || || || MUltiX INterrupt - obsługa przerwania z MULTIX-a
|- style="background: Lavender;"
| 0x1195 || TOK || || || Transmisja OK
|- style="background: Lavender;"
| 0x11b2 || WDL || || || Wykonano Dołącz Linię
|- style="background: Lavender;"
| 0x11c7 || WZM || || || Wykonano Zerowanie Multixa
|- style="background: Lavender;"
| 0x11cf || OUKM || || || OUtput Konfiguracja Multix-a
|- style="background: Lavender;"
| 0x11d7 || WUK || || || Wykonano Ustaw Konfigurację
|- style="background: Lavender;"
| 0x11ea || OUDL || || || OUtput Dołącz Linię
|- style="background: Cornsilk;"
| 0x11f9 || DLPLIX || || || pole sterujące Dołącz Linię PLIX-a
|- style="background: Pink;"
| 0x11fc || TAMXIN || 35 || || TAble MultiX INterrupts (adresy procedur dla przerwań z multixa - ze specyfikacji przerwania)
|- style="background: Cornsilk;"
| 0x121f || TABWIN || 4 || ||
|- style="background: Cornsilk;"
| 0x1223 || WINERR || 17 || ||
|- style="background: Lavender;"
| 0x123f || MUXWIN || 35 || || MUltiX WINchester (weście do konfiguracji winchestera)
|- style="background: Lavender;"
| 0x15e4 || TAFLOP || || || Procedura sprawdzająca, czy obsłużono przerwanie, na które czekał bieżący proces
|- style="background: Lavender;"
| 0x21bc || COPSY0 || || || COPy SYstem - procedura kopiujaca system do obszaru docelowego (uruchamia się jeśli uruchomić zassemblowane jądro)
|- style="background: Lavender;"
| 0x220b || OSTART || || || "START" po doładowaniu dalszej części jądra
|- style="background: Lavender;"
| 0x2220 || INIC || || || Multix poprawnie zresetowany (programowo)
|- style="background: Lavender;"
| 0x2249 || LOM || || || Dokonfigurowanie pamięci: 3 i 4 segment
|- style="background: Lavender;"
| 0x226b || ZER || || || ZERowanie segmentu od 0x5000
|- style="background: Lavender;"
| 0x22ac || || || || Sprawdzenie sumy kontrolnej jądra
|-
|-
| ... || || || || system
| colspan=5 | ...
|-
|-
| 0x280e || ABIN  || TERM=56 ||      ||
| 0x280e || ABIN  || TERM=56 ||      ||
Linia 109: Linia 181:
| 0x2859 || RAMDIS || 1    ||            || lista zbiorow RAM\
| 0x2859 || RAMDIS || 1    ||            || lista zbiorow RAM\
|-
|-
| 0x285a || PROCNU || 1    ||            || NUMER PROCESORA
| 0x285a || PROCNU || 1    ||            || NUMER PROCESORA (unikalny identyfikator systemu)
|-
|-
| 0x285b || PGRFX  || 1    ||            || LISTA DLA GRF
| 0x285b || PGRFX  || 1    ||            || LISTA DLA GRF
|-
|-
| 0x285c || LAST  || 1    ||            || GENERATOR
| 0x285c || LAST  || 1    ||            || GENERATOR (adresów pseudolosowych)
|-
|-
| 0x285d || SCLK  || 1    ||            ||
| 0x285d || SCLK  || 1    ||            ||
Linia 199: Linia 271:
| 0x290a || ZERMLX || 1 || ||
| 0x290a || ZERMLX || 1 || ||
|- style="background: Cornsilk;"
|- style="background: Cornsilk;"
| 0x290b || TW || PIOR+1=14 || || Fragment struktury opisującej proces. Proces tracenia czasu? (Time Wait?)
| 0x290b || TW || PIOR+1=14 || || Fragment struktury opisującej proces. Kontekst procesu tracenia czasu? (Time Wait?)
|-  style="background: Pink;"
| 0x2919 || ADINI || 1 || 0x2fc5 || Adres INI (procesu pierwotnego)? (początek listy procesów aktywnych?)
|-  style="background: Pink;"
|-  style="background: Pink;"
| 0x2919 || ADINI || 1 || 0x2fc5 || Adres INI (procesu pierwotnego)?
| 0x291a || ADGUP || 1 || || Adres czegoś związanego z jednostką grupową monitorów ekranowych?
|-
|- style="background: Pink;"
| 0x291a || ADGUP || 1 || ||
| 0x291b || FREES || 1 || || Adres pierwszego wolnego slotu w tablicy procesów
|-
| 0x291b || FREES || 1 || ||
|-
|-
| 0x291c || FSART || 1 || ||
| 0x291c || FSART || 1 || ||
Linia 255: Linia 327:
| 0x2f85 || *AUKPLX || 64 || ||  
| 0x2f85 || *AUKPLX || 64 || ||  
|- style="background: Cornsilk;"
|- style="background: Cornsilk;"
| 0x2fc5 || *ADINI || TABUJB=55 || || Struktura opisu procesu pierwotnego INI?
| 0x2fc5 || *ADINI || TABUJB=55 || || Kontekst procesu pierwotnego INI?
|- style="background: Cornsilk;"
|- style="background: Cornsilk;"
| 0x2ffc || *STACK || 4 || || Stos systemowy (początkowo ADINI0)
| 0x2ffc || *STACK || 4 || || Stos systemowy (początkowo ADINI0)
|-
|-
| 02xffff || || || || ostatnie słowo 3. segmentu 4k
| 0x2fff || || || || ostatnie słowo 3. segmentu 4k
|-
| colspan=5 | ...
|- style="background: Lavender;"
| 0x6398 || LCL3 || || || Ładowanie numeru zegara (system ID) z zegara czasu rzeczywistego
|}
|}
{{source|title=Opracowanie własne}}

Aktualna wersja na dzień 16:44, 27 lut 2016

Mapa pamięci MERY-400 opisuje obszary w bloku pamięci systemowej wymagane ze względu na konstrukcję minikomputera. CROOK-5 organizuje pamięć systemową na swój sposób, zachowując oczywiście wymagania narzucone konstrukcją. Jedynym wyjątkiem są wektory niezainstalowanych opcji, które mogły zostać pominięte ze względu na fakt, że w praktyce nie występowały konfiguracje MERY-400 bez arytmometru wielokrotnej precyzji.

Ogólna organizacja pamięci systemowej CROOK-5

Adresy Zawartość
dec oct hex
0 - 1 0 - 01 0x0 - 0x1 Skok do właściwej części systemu operacyjnego
4 - 63 04 - 077 0x04 - 0x3f Tablica konfiguracji MERY-400
64 - 95 0100 - 0137 0x40 - 0x5f Wektory przerwań
96 0140 0x60 Adres procedury obsługi EXL
97 0141 0x61 Wskaźnik stosu
99 - 107 0143 - 0153 0x63 - 0x6b Tablica opisu dysków WINCHESTER
109 - 20479 0155 - 047777 0x6d - 0x4fff System operacyjny

Szczegółowa mapa pamięci CROOK-5

Poniższa mapa pamięci odnosi się do systemu CROOK-5 w wersji 8F dla maszyny nie przerobionej. Kolory komórek tabeli oznaczają zawartość komórki (komórek) pamięci pod daną etykietą (adresem):

zawartość nieznana
Dane (zmienna, stała, struktura)
Adres (wskaźnik)
Kod (procedura, funkcja, etykieta)
Adres Etykieta Długość Zawartość Opis
0x0002 DUMTIM 1 ?
0x0003 ENDSYS 1 AEOV0=0x1600 koniec właściwiej części systemu (przed nakładkami?)
Tablica konfiguracji MERY-400
0x0004 NOBUFF 3 starszy bajt: różne, młodszy bajt: Number Of BUFFers (liczba buforów systemowych)
0x0007 SYSSET 1 SYStem SETtings? (ilość pamięci dla systemu, długość buforów końcówek)
0x0008 TABMEM 8 TABlica konfiguracji pamięci (MEMory)
0x0010 TABDIN 16 adresy talerzy dyskowych
0x0020 TABMT 4 pamięci taśmowe
0x0024 CAMINI 2 adres CAMAC
0x0026 PIINI 2 adres PI
0x0027 IECINI 2 adres IEC
0x0028 TABCHL 5 TABle CHanneL - tablica kanałów
0x002d ADNET 1 ADress NETwork - adres szybkiego łącza
0x002e TABCLK 1 zegar czasu rzeczywistego Amepolu
0x002f ADGUN 1 Numer systemowy jednostki grupowej monitorów ekranowych
0x0030 SETDEV 15 końcówki
Koniec tablicy konfiguracji MERY-400
0x0040 32 Przerwania
0x0060 1 EXST adres procedury obsługi EXL
0x0061 STACK 1 0x2ffc adres stosu
0x0062 BPROG 1 TW Bieżący PROGram (wskaźnik na kontekst bieżącego procesu)
0x0063 D2M5 1 kwant podziału winchestera
0x0064 TATYWI 4 TAblica TYpów WInchesterów
0x0068 ADRPRK 4 ADResy PaRKingowe
0x006c CONSUM 1 suma kontrolna jądra (CONtrol SUM)
0x006d CHCS procedura licząca sumę kontrolną jądra (CHeck Control Sum)
0x0088 STOP1R tracenie czasu
0x009a START start jądra
0x00a1 ST0 konfiguracja pamięci
0x00db SL0 wstępna inicjalizacja obszarów pamięci
0x0104 rozpoznanie dysków podłączonych do maszyny
0x0171 NMASK 1 0xf000 kod instrukcji "JP(TAKE)" wykorzystywany w niekonwencjonalny sposób (do ustawiania Q,NB i maskowania przerwań)
0x01e9 EXIT wyjście ze schedulera? (przywróc rejestry i wektor stanu, uruchom proces)
0x020d EXIX "załaduj" bieżący proces (wyjście z przerwania?)
0x0231 TAKE wejście do schedulera? (TAKE process?)
...
0x0368 CLOCK obsługa przerwania timera
0x0510 TABSIN 6 HANGDV, IN1X...IN5X podprocedury obsługi dla SINT
0x054d INSTX 1 obsługa przerwania instrukcji nielegalnej (w tym SINT)
...
0x059e TABEXL 65 TABlica EXtrakodów
0x05eb QEXIT wybranie następnego procesu do uruchomienia (Queue and EXIT?)
0x101f GENAD GENerator ADresów (losowych) dla "niszczarki" pamięci
0x1049 GENOB funkcja do mieszania identyfikatora systemu
0x113f PLXINX PLiX INterrupt - obsługa przerwania z PLIX-a (MULTIX-a)
0x1143 MUXINX MUltiX INterrupt - obsługa przerwania z MULTIX-a
0x1195 TOK Transmisja OK
0x11b2 WDL Wykonano Dołącz Linię
0x11c7 WZM Wykonano Zerowanie Multixa
0x11cf OUKM OUtput Konfiguracja Multix-a
0x11d7 WUK Wykonano Ustaw Konfigurację
0x11ea OUDL OUtput Dołącz Linię
0x11f9 DLPLIX pole sterujące Dołącz Linię PLIX-a
0x11fc TAMXIN 35 TAble MultiX INterrupts (adresy procedur dla przerwań z multixa - ze specyfikacji przerwania)
0x121f TABWIN 4
0x1223 WINERR 17
0x123f MUXWIN 35 MUltiX WINchester (weście do konfiguracji winchestera)
0x15e4 TAFLOP Procedura sprawdzająca, czy obsłużono przerwanie, na które czekał bieżący proces
0x21bc COPSY0 COPy SYstem - procedura kopiujaca system do obszaru docelowego (uruchamia się jeśli uruchomić zassemblowane jądro)
0x220b OSTART "START" po doładowaniu dalszej części jądra
0x2220 INIC Multix poprawnie zresetowany (programowo)
0x2249 LOM Dokonfigurowanie pamięci: 3 i 4 segment
0x226b ZER ZERowanie segmentu od 0x5000
0x22ac Sprawdzenie sumy kontrolnej jądra
...
0x280e ABIN TERM=56
0x2846 QJW NOQ=16
0x2856 JOBMEM 1 LISTA PROC Z PAO DO ODEBRANIA
0x2857 FREMEM 1 LISTA WOLNEJ PAO
0x2858 BUFMEM 1 LISTA 4K - BUFOROW
0x2859 RAMDIS 1 lista zbiorow RAM\
0x285a PROCNU 1 NUMER PROCESORA (unikalny identyfikator systemu)
0x285b PGRFX 1 LISTA DLA GRF
0x285c LAST 1 GENERATOR (adresów pseudolosowych)
0x285d SCLK 1
0x285e YEAR 1
0x285f DAYS 2
0x2861 HOURS 3
0x2864 SEC 1
0x2865 CSEC 1
0x2866 DSEC 1
0x2867 MSEC 1 aktualna ilość "tyknięć" timera do obudzenia schedulera (odlicza od BMSEC do 0)
0x2868 BCSEC 1
0x2869 BMSEC 1 -10 przerwanie timera budzi scheduler 10x rzadziej
0x286a CQJTST 1
0x286b WRCS 1 odtąd aż do ADINI0 - zerowane przy starcie
0x286c NUCLK 1
0x286d LCLK 1
0x286e ACLK 1
0x286f PAXREG 7
0x2876 ARTABL ILAR*4=60 METRYKI TALERZY
0x28b2 TABND ILAR=15 NAZWY TALARZY
0x28c1 TABAD ILAR=15 TABLICA OFSETOW
0x28d0 ADSNET 1
0x28d1 INNET 2
0x28d3 NETEN 2
0x28d5 ENGCAM NOCAM+1=5
0x28da WORCAT 1
0x28db ROBCOR 1 KOM ROBOCZA DLA SIN+T.CORALE.
0x28dc ROBMEM 7
0x28e3 FIR 14
0x28e9 REJM 7 zawiera się w FIR (FIR+6)
0x28f1 TSEXL 12
0x28f8 NMFIL 5 zawiera się w TSEXL (TSEXL+7)
0x28fd STATFI 2 STATYSTYKA ZBIOROWA
0x28ff ADBFCH 1
0x2900 AUKMX 1 Adres Ustaw Konfigurację MultiX-a?
0x2901 AUKPLX 1 0x2f85 Adres Ustaw Konfigurację PLiX-a?
0x2902 CHRMUX 1
0x2903 MUXDIS 1
0x2904 MUXTAP 1
0x2905 MUXFLP 1
0x2906 MUXPLX 1
0x2907 LWINCH 1
0x2908 MUXWRK 2
0x290a ZERMLX 1
0x290b TW PIOR+1=14 Fragment struktury opisującej proces. Kontekst procesu tracenia czasu? (Time Wait?)
0x2919 ADINI 1 0x2fc5 Adres INI (procesu pierwotnego)? (początek listy procesów aktywnych?)
0x291a ADGUP 1 Adres czegoś związanego z jednostką grupową monitorów ekranowych?
0x291b FREES 1 Adres pierwszego wolnego slotu w tablicy procesów
0x291c FSART 1
0x291d FSFT 1
0x291e FLBS 1
0x291f FSBS 1
0x2920 ASYBUF 1
0x2921 ASYTAB 3
0x2924 IECENG LIEC=1
0x2925 IECADR LIEC=1
0x2926 TIECC 1
0x2927 DVOF MEMCH=72
0x296f TABMUX MEMCH=72
0x29b7 TABF MEMCH=72
0x29ff ENGDEV MEMCH+NOMT=76
0x2a47 ENGMT 4 ENGMT jest częścią ENGDEV (ENGDEV+MEMCH)
0x2a4b ST TERM=56
0x2a83 DISTAT 12
0x2a8f JW JWIEC+8=89
0x2ae8 TBAR 16
0x2af8 SYSTAB 1
0x2af9 TMEBEG 1
0x2afa TMEEND 1
0x2afb NOMEMB
...
0x2f85 *AUKPLX 64
0x2fc5 *ADINI TABUJB=55 Kontekst procesu pierwotnego INI?
0x2ffc *STACK 4 Stos systemowy (początkowo ADINI0)
0x2fff ostatnie słowo 3. segmentu 4k
...
0x6398 LCL3 Ładowanie numeru zegara (system ID) z zegara czasu rzeczywistego

Źródło: Opracowanie własne