Mapa pamięci CROOK-5
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