Indeks | English version |
UZUPEŁNIENIE: Struktury danych okazują się być zgodne organizacją plików systemu operacyjnego RT-11.
Zakres adresów | Zawartość |
---|---|
0x0000-0x03FF | Obszar loadera |
0x0400-0x07FF | Obszar katalogu |
0x0800-0x27FF | Obszar danych |
Menu startowe mikrokomputera MK-90 udostępnia trzy opcje: BASIC, SMP0, SMP1. Wybór SMP0 (lub SMP1) powoduje załadowanie i wykonanie kodu loadera z modułu pamięci 0 (lub 1). Moduły sformatowane komendą INIT zawierają kod wyświetlający komunikat w języku rosyjskim oznaczający "moduł bez loadera":
000000: nop 000002: jsr r7, @#153700 000006: jsr r7, @#120536 000012: mov @#034022, @#164000 000020: mov #104306, @#164002 000026: jsr r0, 000062 000032: .asciz "\016\r\n smp BEZ ZAGRUZ^IKA" 000061: .even 000062: movb (r0)+, r2 000064: beq 000064 000066: jsr r7, @#116542 000072: br 000062
Wydruk szesnastkowy przykładowego katalogu (z pliku MK90.BIN znajdującego się w archiwum mk90prog.zip):
0400: 01 00 00 00 01 00 00 00 04 00 040A: 00 02 EA 27 00 00 BB 0C 01 00 00 00 36 89 ;pierwszy wpis katalogu 0418: 00 04 3A 14 A5 14 BB 0C 01 00 00 00 36 89 ;drugi wpis katalogu 0426: 00 04 9B 54 B8 38 BB 0C 01 00 00 00 36 89 ;trzeci wpis katalogu 0434: 00 02 20 20 20 20 20 20 0D 00 20 20 20 20 ;czwarty wpis katalogu 0442: 00 08
Każdy wpis katalogu zajmuje 7 słów (czyli 14 bajtów). Kolejność bajtów w słowie - najpierw bajt mniej znaczący, potem bardziej znaczący.
Ofset | Rozmiar | Zawartość |
---|---|---|
0 | 1 | Atrybut |
1 | 2 | Nazwa pliku (2 grupy po 3 znaki), uzupełniona na końcu spacjami |
3 | 1 | Rozszerzenie nazwy pliku (grupa 3 znaków), domyślnie BAS |
4 | 1 | Ilość bloków (sektorów) przypisanych do wpisu katalogu.
Suma tych wartości dla wszystkich wpisów katalogu musi być równa 16. 0x0001 + 0x0001 + 0x0001 + 0x000D = 16 |
5 | 1 | Nieznana |
6 | 1 | Nieznana |
Kod | Znaczenie |
---|---|
0x0200 | Wpis wolny lub skasowany |
0x0400 | Wpis zajęty przez plik |
0x0800 | Koniec katalogu |
Nazwy plików i rozszerzenia są przechowywane w postaci skompresowanej - 3 znaki w 2 bajtach.
| |||||||||||||||||||
|
|
|
|
Przykładowo, drugi wpis katalogu pod adresem 0x0418 zawiera nazwę pliku CIRCLE.BAS. Każda grupa trzech znaków jest kodowana w następujący sposób:
Te trzy słowa są widoczne pod adresem 0x041A do 0x041F.
Można traktować ten sposób kodowania jako liczby przy podstawie 40.
Znany jest również pod nazwą Radix-50 (co zauważył Alec Voropay, dziękuję!).
Obszar danych składa się z 16 bloków (sektorów), każdy po 512 bajtów. Programy są zapisywane jako pliki tekstowe ASCII (brak tokenizacji słów kluczowych). Zaczynają się pustym wierszem (sekwencja CR,LF) i kończą się znacznikiem 0x00.
System nie obsługuje sfragmentowanych plików, tzn. do zapisania pliku musi dysponować dostatecznie dużą ciągłą grupą wolnych bloków pamięci.