Mapa pamięci modułu RAM od mikrokomputera Elektronika MK-90 (BASIC V1.0)
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.
Struktura wpisu katalogu
| 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.
| Tablica kodów znaków (dziesiętnie) |
|
| Kod |
Znak |
0 1 2 3 4 5 6 7 8 9 |
spacja A B C D E F G H I |
|
| Kod |
Znak |
10 11 12 13 14 15 16 17 18 19 |
J K L M N O P Q R S |
|
| Kod |
Znak |
20 21 22 23 24 25 26 27 28 29 |
T U V W X Y Z $ . / |
|
| Kod |
Znak |
30 31 32 33 34 35 36 37 38 39 |
0 1 2 3 4 5 6 7 8 9 |
|
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:
- CIR - kody znaków: 3, 9, 18
40*40*3 + 40*9 + 18 = 5178 = 0x143A
- CLE - kody znaków: 3, 12, 5
40*40*3 + 40*12 + 5 = 5285 = 0x14A5
- BAS - kody znaków: 2, 1, 19
40*40*2 + 40*1 + 19 = 3259 = 0x0CBB
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.