System sterowania RT15 został napisany w języku maszynowym (wewnętrznym) minikomputera składającym się z około 30 elementarnych poleceń 8-bitowego procesora. Z czasem obsługa sterowania ruchem teleskopu została poszerzona o obsługę innych urządzeń zewnętrznych (w tym pamięci taśmowej i plottera XY) i do synchronicznego z okresem pulsara zbierania i wyświetlania danych z takich radioźródeł. Szybkość tej maszyny była taka, że wykonanie najprostszych poleceń (np. wyzerowanie akumulatora) zajmowało 2 mikrosekundy (zatem, porównując do dzisiejszych gigahercowych PC, miał on szybkość rzędu 1 MHz).
Fot. 1: System sterowania RT15 na dziurkowanej taśmie. Początkowa część taśmy zawiera tzw. bootstrap (na zdjęciu widać jego pełny kod stanowiący pętlę inicjującą automatyczne wczytywanie: 616 400 000 711 103 702 400 000), który wprowadzało się z czytnika ręcznie, za pomocą kluczy na pulpicie minikomputera, na początek strony 000 pamięci operacyjnej (PAO). Po uruchomieniu, programik ten już sam 'wciągał' (stąd nazwa bootstrap) dalsze słowa (bajty) z taśmy, gdzie znajdowały się modyfikacje bootstrapu oraz właściwy program wczytujący (zapisywany na końcowych stronach PAO), który to dopiero wczytywał sam system sterowania. Tak przemyślny sposób wczytywania podyktowany był potrzebą możliwie maksymalnego ułatwienia życia użytkownikowi – by wczytać system, musiał ręcznie wprowadzić na początek PAO jedynie 8 pierwszych bajtów z taśmy (mógł 'z rozpędu' wprowadzić nawet do 5 słow więcej, gdyż 5 poleceń po bootstrapie to 703, czyli "nie rób nic"). |
Skan 1: Kod maszynowy w obszarze pamięci operacyjnej zawierającej początek (miejsce startowe) jednej z prostszych wersji systemu sterowania oraz blokowy schemat operacji. W tabelce kolejne miejsca pamięci operacyjnej (PAO) występują w wierszach (na stronach) od lewej do prawej – w tej też kolejności procesor wykonywał podane tu polecenia (ich spis zawiera Tabela 1). Cały taki kod za pierwszym razem był wprowadzany do PAO ręcznie, bajt po bajcie (zachowała się też inna wersja tego kodu z wydrukiem w postaci tabel ze stronami PAO w kolumnach). Na powyższym schemacie blokowym adresy PAO sa zapisane w postaci dwucyfrowego miejsca na stronie i trzycyfrowego numeru strony w kodzie 8b (ósemkowobinarnym). Np. 26-405 oznacza miejsce 22 (= 2*8 + 6*1) i stronę 133 (= 4*32 + 0*8 + 5*1), czyli 4278 (= 133*32 + 22) bajt PAO (która miała całkowitą pojemność 8192 bajty). |
Skan 2 i 3: Elementarne procedury systemu sterowania (działania arytmetyczne, konwersja kodowania między systemami: binarnym i dziesiętnym, czytanie i przepisywanie współrzędnych). W tych tabelkach kolejne miejsca PAO występują w kolumnach (na stranach) od góry do dołu. |
Tabela 1: Wykaz poleceń procesora minikomputera Mera 302. Zapis Ao oznacza zerowy bit 8-bitowego akumulatora (to najbardziej znaczący bit). Wskaźniki to: CI – skoku warunkowego, P – przelania akumulatora (po operacji przesuwania A), Z – strony zerowej oraz S – aktualnej strony (dla rozkazów od 0## do 3## i 5##). |
Razkaz Znaczenie 0## Dodaj do akumulatora (A) zawartość miejsca ## PAO; jeśli wystąpił nadmiar, CI = 0; przelanie, P = 1 1## Zapisz A w miejscu ## i zeruj A, 2## Mnóż logicznie A przez zawartość miejsca ## 3## Dodaj 1 do miejsca ##; jeśli ## = 0, ustaw CI = 1 4## STR Jeśli CI = O, skocz do miejsca ## na stronie STR 5## Wykonaj rozkaz w miejscu ## 6## Zainicjuj operację wejścia/wyjścia jednostki steru- jącej numer ## 700 Przerwanie programowe 701 Zeruj akumulator (A = 0) 702 Zgaś wskaźnik CI (CI = 0) 703 Nic nie rób 704 Powróć z przerwania 705 Pamiętaj ślad 706 Powróć według śladu 710 Zgaś wskaźnik Z (Z = 0) 711 Zapal wskaźnik Z (Z = 1) 712 Prześlij A do S (S — rejestr strony) 713 " S do A 714 Czytaj klucze (KL) z pulpitu minikomputera 715 Jeśli P = 1, ustaw CI = 0, inaczej CI = 1 716 Czekaj na przerwanie 717 S = S + 1 720 Neguj akumulator 721 Dodaj 1 do A i ustaw CI i P jak w poleceniu 0## 722 A = A + P 725 Przesuń A cyklicznie w lewo 724 " A w lewo (A = 2A), P = Ao 725 " A w prawo (A = A/2), Ao = P, P = 0 726 Jeśli A = 0, ustaw CI = 0, inaczej CI = 1 727 " Ao = 0, ustaw CI = 0, inaczej CI = 1 730 OBE S = OBE 731 Ustaw maski przerwań według miejsca 04 na str. 000 732 MSK Testuj A z MSK; jeśli A = 0, CI = 0, inaczej CI = 1 734 Stop |