Co nowego

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania

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 na taśmie perforowanej
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:

-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