Co nowego
27 sierpnia 2013
W emulatorze EM400 został uruchomiony system operacyjny MERY-400, CROOK-5! Poprawne funkcjonowanie tak skomplikowanego oprogramowania jest ostatecznym dowodem wiernej emulacji minikomputera. Ten ważny moment zbiega się z rocznicą istnienia http://mera400.pl - doskonały prezent na pierwsze urodziny serwisu. Wydarzenie zostało odnotowane na stronach PTI.
To oczywiśnie nie koniec prac. Wciąż pozostają do zaimplementowania brakujące urządzenia zewnętrzne, jest też kilka pomysłów na usprawnienie emulatora. W kolejce na implementację czekają również narzędzia ułatwiające pracę z plikami MERY-400.
11 sierpnia 2013
Nieprzerwanie trwają prace nad emulacją urządzeń zewnętrznych, niezbędnych do uruchomienia systemu CROOK-5. Większość funkcjonalności procesora peryferyjnego MULTIX jest już zaimplementowana, działa również dysk Winchester, a "w drodze" jest emulacja napędu MERA 9425 w kanale pamięciowym. Warto też odnotować, że emulacja procesora jest już kompletna: zaimplementowane zostały ostatnie brakujące instrukcje - operacje na liczbach zmiennoprzecinkowych.
30 kwietnia 2013
ASSEM, skrośny asembler dla MERY-400, poprawnie zbudował jądro systemu operacyjnego CROOK-5. To kolejny, po udanych testach procesora, ważny krok na drodze do uruchomienia systemu CROOK-5 w emulatorze EM400.
27 kwietnia 2013
W dziale Czytelnia pojawiły się teksty autorstwa Elżbiety Jezierskiej-Ziemkiewicz i Andrzeja Ziemkiewicza opowiadające o historii oraz budowie projektowanych przez nich komputerów K-202 i MERA-400.
30 marca 2013
Dostępny jest już raport z odczytu Winchestera z informacją o tym, jakie oprogramowanie i inne dane udało się odnaleźć, oraz slajdy z prezentacji na IV Seminarium Historii Informatyki.
26 lutego 2013
Jest już działający asembler generujący kod binarny MERY-400, a pracujący na komputerze PC. Dzięki temu emulator mógł po raz pierwszy uruchomić program dla MERY-400 napisany i zasemblowany na zupełnie innej architekturze.
15 lutego 2013
W trzeciej próbie odczytany został dysk Winchester MERY-400. Szczegółowy przebieg procesu odczytywania danych oraz opis zawartości dysku pojawią się niebawem.
11 stycznia 2013
Przeprowadzona została druga próba odczytu dysku Winchester działającego kiedyś w MERZE-400. Próba nieudana - dwa różne kontrolery odmówiły współpracy z dyskiem. Udało się natomiast namierzyć układ, który w minikomputerze użyty został do sprzęgnięcia Winchestera z systemem (na zdjęciu obok). To pozwoli ukierunkować toczące się już prace nad zbudowaniem kontrolera, dzięki któremu dane, miejmy nadzieję, uda się ostatecznie odczytać.
12 grudnia 2012
Zdigitalizowana została wypożyczona, brakująca dokumentacja kanału pamięciowego i znakowego, AWP, oraz kilku innych elementów systemu. Łącznie około 50 dokumentów, które obecnie są w fazie obróbki. Tym samym kompletna jest już dokumentacja pozwalająca na stworzenie funkcjonalnej emulacji MERY-400.
Kontroler, dzięki któremu będzie można odczytać zawartość Winchestera jest w drodze zza Wielkiej Wody. Prace nad odczytem zostaną podjęte na początku stycznia.
1 grudnia 2012
Powstał zestaw prostych narzędzi pozwalających zinterpretować zawartość systemu plików systemu CROOK-5. Przykładowy rezultat wywołania narzędzi:
amo:tools> ./label.py ../varia/cn 96 Disk image : ../varia/cn LABEL sector : 96 ----------------------------------------------- Label : SYS DICDIC offset : 96 FILDIC offset : 99 MAP offset : 106 MAP end : 107 Disk end : 760 Disk name : ......
amo:tools> ./dicdic.py ../varia/cn 96 98 Disk image : ../varia/cn DICDIC start : 96 DICDIC end : 98 data len : 1536 ------------------------------------------------------------- Name Code Sect. Pas Budg. Top Acc. OSL OSLarg LIBRAR 0 1 ... 32767 0 32767 ...... ...... BOSS.. 32 0 ... 32767 32 32767 ...... X2.... MAGAZ1 65532 0 ... 0 0 0 ...... ...... KSIEMA 65532 0 ... 0 0 0 ...... ...... EMPTY
amo:tools> ./fildic.py ../varia/cn 99 105 Disk image : ../varia/cn FILDIC start : 99 FILDIC end : 105 data len : 3584 ------------------------------------------------------------- name dir typ typei arg1 arg2 acc attr mem user res beg end len SYSTEM 48 P8G 27007 0 0 OW 0 0 4 0 1 96 95 FILDIC 48 SYS 31419 0 0 OR 0 0 4 0 99 106 7 CH.... 32 1F. 45040 0 1799 AR 19 3 32 3323 202 210 8 COPFIL 32 27C 47763 0 2450 AR 19 5 32 3176 210 220 10 INIT1. 32 CHR 5138 65213 0 OR 32 0 32 10070 392 393 1 LIST.. 32 16G 46127 0 1605 AR 16 0 32 3323 406 413 7 OSL... 32 7D. 54560 8 3073 AR 19 0 32 3323 428 441 13 PINF.. 32 1C. 44920 0 475 AR 8 0 32 3323 445 447 2 BOOTL. 48 L5. 20480 0 255 LR 8 0 32 3323 459 460 1 BOSS.. 48 4E. 49800 8 4542 LR 19 3 32 3323 460 478 18 CLEAD. 48 12A 45961 0 1349 LR 19 3 32 3323 478 484 6 EXM... 32 55C 52483 0 6938 AR 48 3 32 10070 484 551 67 MWORDS 32 CHR 5138 65145 1 AR 0 0 32 10070 551 553 2 ...
16 listopada 2012
Przeprowadzona została pomyślna próba uruchomienia dysku Winchester używanego w jednej z MER-400. Dysk, po dwudziestu z górą latach, okazał się być sprawny. Talerze się kręcą, głowice pracują bez zarzutu, a elektronika dysku odpowiada na polecenia. Próba odczytu danych będzie miała miejsce jak tylko zestaw uruchomieniowy zostanie wyposażony w odpowiedni kontroler.
21 października 2012
Debuger emulatora em400 został wyposażony w nowy, wygodny interfejs użytkownika (zrzut ekranu obok). Pozwala on na bieżąco oglądać zawartość pamięci, wykonywany program i rejestry, pozostawiając przestrzeń linii poleceń do celów sterowania. Układ okien automatycznie dostosowuje się do rozmiarów terminala. Dalsze usprawnienia będą obejmować n.im.:
- zawartość okna dynamicznie dostosowaywaną do jego rozmiarów
- automatyczne przesuwanie obszaru pamięci do miejsc, w których nastąpił zapis/odczyt
- graficzne wyróżnianie słów/bitów w pamięci i rejestrach, które w wyniku działania instrukcji zostały zmienione lub ocztytane
16 października 2012
Zawartość odczytanej dyskietki jest następująca (w kolumnach kolejno: początkowy i końcowy sektor zbioru, nazwa zbioru, opis):
000 2f8 GLOBAL : cały dysk 000 001 LABEL : etykieta dysku 001 060 SYSTEM : jądro systemu 060 063 DICDIC : słownik skorowidzów 063 06a FILDIC : słownik zbiorów 06a 06b MAP : mapa zajętości dysku 06b 076 NDIREC 076 0a6 XOSL : interpreter zleceń 0a6 0b8 ASSK : assembler K-202 0b8 0ca ASSM : assembler MERY-400 0ca 0d2 CH : porównywanie zbiorów 0d2 0dc COPFIL : szybkie kopiowanie zbiorów (dużymi rekordami) 0dc 0e1 COPY : znakowe kopiowanie zbiorów 0e1 109 DEBU : debuger 109 165 HELP : pomoc systemu 165 176 INI 176 188 INI5 188 189 INIT1 189 196 LIF : listowanie zawartości skorowidzu 196 19d LIST : wyświetlanie zawartości zbioru 19d 1a0 LOAD : wczytanie taśmy binarnej 1a0 a18 MACRO 1a8 a1c MAIL 1ac 1b9 OSL 1b9 1bd PER : utrwalanie zbiorów 1bd 1bf PINF 1bf 1c9 SET 1c9 1ca TM : wyświetl czas 1ca 1cb BOOT : bootloader (zapisywany na taśmie perforowanej) 1cb 1cc BOOTL : bootloader (zapisywany na pierwszym sektorze dysku) 1cc 1de BOSS : interpreter zleceń administatora 1de 1e4 CLEAD : zlecenie kompresji zbiorów 1e4 227 EXM : edytor tekstowy 227 229 MWORDS 229 22b NWORDS 22b 22d MNAMES 22d 22f NNAMES 22f 231 MAGIC 231 233 NOMAG 233 234 COPEXM 234 238 COPLIB 238 239 REWR 239 23b X2 23b 23d MBWG
14 października 2012
Dyskietka "CROOK-5" faktycznie zawiera system operacyjny. Wskazują na to zarówno łańcuchy znaków, disassemblacja, jak i analiza struktury systemu plików. Na załączonym zrzucie ekranu proces odkrywania jej zawartości. Od lewej do prawej widać:
- binarny podgląd fragmentu
- ten sam fragment, zdekodowany z kodu R40 do ASCII, pokazujący część opisu systemu plików
- disassemblacja wcześniejszego obszaru
4 października 2012
Serwis mera400.pl został przeniesiony na nowy sprzęt.
3 października 2012
Emulator ma już funkcjonalny, podstawowy debuger. Przykład użycia:
Pokazanie zawartości rejestrów procesora (rejestr zgłoszeń przerwań pokazuje przerwanie timera):
em400 [0 00 0x0000]> regs iiiiiiDAAABBBCCC RM________QBNB__ IR: 0x0000 0000000000000000 SR: 0x0000 0000000000000000 IC: 0x0000 P: 0 01234567012345670123456701234567 ZMVCLEGYX....... RZ: 00000100000000000000000000000000 R0: 0000000000000000 hex... dec... bin.....|....... hex... dec... bin.....|....... R00: 0x0000 0 0000000000000000 R01: 0x0000 0 0000000000000000 R02: 0x0000 0 0000000000000000 R03: 0x0000 0 0000000000000000 R04: 0x0000 0 0000000000000000 R05: 0x0000 0 0000000000000000 R06: 0x0000 0 0000000000000000 R07: 0x0000 0 0000000000000000
Deassemblacja trzech kolejnych rozkazów, od bieżącej pozycji IC:
em400 [0 00 0x0000]> dasm 3 0x0000: (2) LWI r1, 16 0x0002: (2) AWI r1, 17 0x0004: (2) RWD r1, 18
Wyświetlenie zawartości pamięci pod adresami 16 do 17:
em400 [0 00 0x0000]> mem 0 0x10 0x12 addr: +000 +001 +002 +003 +004 +005 +006 +007 +008 +009 +00a +00b +00c +00d +00e +00f 0x0010: 202 202 15 ......
Wykonanie trzech kolejnych instrukcji:
em400 [0 00 0x0000]> step em400 [0 00 0x0002]> step em400 [0 00 0x0004]> step
Ponowne pokazanie zawartości pamięci:
em400 [0 00 0x0006]> mem 0 0x10 0x12 addr: +000 +001 +002 +003 +004 +005 +006 +007 +008 +009 +00a +00b +00c +00d +00e +00f 0x0010: 202 202 404 ......
Deasemblacja kolejnego (nieprawidłowego) rozkazu i próba jego wykonania:
em400 [0 00 0x0006]> dasm 0x0006: (1) ILLEGAL: 0x0002 (dec: 2, bin: 0000000000000010) em400 [0 00 0x0006]> step
Wyświetlenie zawartości rejestrów (rejestr zgłoszeń przerwań pokazuje przerwanie generowane przy próbie wykonania niewłaściwiej instrukcji):
em400 [0 00 0x0007]> regs iiiiiiDAAABBBCCC RM________QBNB__ IR: 0x0002 0000000000000010 SR: 0x0000 0000000000000000 IC: 0x0007 P: 0 01234567012345670123456701234567 ZMVCLEGYX....... RZ: 00000110000000000000000000000000 R0: 0000000000000000 hex... dec... bin.....|....... hex... dec... bin.....|....... R00: 0x0000 0 0000000000000000 R01: 0x0404 1028 0000010000000100 R02: 0x0000 0 0000000000000000 R03: 0x0000 0 0000000000000000 R04: 0x0000 0 0000000000000000 R05: 0x0000 0 0000000000000000 R06: 0x0000 0 0000000000000000 R07: 0x0000 0 0000000000000000 em400 [0 00 0x0007]>
4 września 2012
EM400 - emulator MERY-400, jeszcze w zupełnych powijakach (1694 linie), wykonuje poprawnie pierwszy, testowy kod maszynowy, który w assemblerze wygląda tak:
LWI r1, 16 AWI r1, 17 RWI r1, 18
23 sierpnia 2012
Pod adresem http://mera400.pl powstaje wiki poświęcone MERZE-400. Powstaje też disassembler kodu maszynowego, który pozwala zweryfikować, że na dyskietce faktycznie są binaria dla MERY-400 (fragment zdissassemblowanego INSTALL.EXE):
0x0125: BCD r4, 256 # 0 100 000 000 (4 0 0) m=100 # Branch if not all Conditions 0x0127: IRB r1, -12 # 1 001 001 100 (1 1 4) t=-c # Increment Register and Branch 0x0128: LWD r6, 65522+r3 # 0 110 011 000 (6 3 0) m=fff2 # Load Word 0x012a: CWT r4, 0 # 0 100 000 000 (4 0 0) t=0 # Compare Word to parameTer 0x012b: JER r7 # 0 010 000 111 (2 0 7) m=0 # Jump if Equal 0x012c: LWT r3, 16 # 0 011 010 000 (3 2 0) t=10 # Load to Word paremeTer 0x012d: SRZ r4 # 1 100 001 000 (4 1 0) # Shift Right, add Zero 0x012e: JYS 1 # 0 110 000 001 (6 0 1) t=1 # Jump if Y Short 0x012f: DRB r3, -3 # 1 011 000 011 (3 0 3) t=-3 # Decrease Register and Branch 0x0130: LWI r3, [4569+r3] # 1 011 011 000 (3 3 0) m=11d9 # Load Word 0x0132: UJD 730 # 0 000 000 000 (0 0 0) m=2da # Unconditional Jump
31 lipca 2012
Udało się odczytać dyskietkę 5.25" opisaną "CROOK-5". Zawartość wygląda obiecująco: Późniejsze prace pokazały, że ta lista plików nie ma nic wspólnego z faktyczną zawartością dyskietki
-rwxr-xr-x 1 amo amo 1572 Aug 4 20:22 E14X8.PAK -rwxr-xr-x 1 amo amo 32060 Aug 4 20:22 HASLA.PAK -rwxr-xr-x 1 amo amo 8496 Aug 4 20:22 INSTALL.EXE -rwxr-xr-x 1 amo amo 9496 Aug 4 20:22 KLUCZE.PAK -rwxr-xr-x 1 amo amo 72 Aug 4 20:22 KOLORY.DTA -rwxr-xr-x 1 amo amo 72 Aug 4 20:22 KOLORYH.DTA -rwxr-xr-x 1 amo amo 72 Aug 4 20:22 KOLORYM.DTA -rwxr-xr-x 1 amo amo 9034 Aug 4 20:22 MAKEPLIK.PAK -rwxr-xr-x 1 amo amo 24384 Aug 4 20:22 PTV.SKR -rwxr-xr-x 1 amo amo 89164 Aug 4 20:22 PTVX.PAK -rwxr-xr-x 1 amo amo 16442 Aug 4 20:22 TEKSTY.PAK -rwxr-xr-x 1 amo amo 21406 Aug 4 20:22 UNPAK.EXE -rwxr-xr-x 1 amo amo 12715 Aug 4 20:22 UNSKR.EXE -rwxr-xr-x 1 amo amo 1649 Aug 4 20:22 V16X9.PAK -rwxr-xr-x 1 amo amo 76277 Aug 4 20:22 ZAKLADY.SKR