Polecenie sterujące "TESTUJ"

Z MERA 400 wiki
Skocz do: nawigacja, szukaj

MULTIX i PLIX przyjmują polecenia sterujące TESTUJ. Argumentem tego polecenia jest adres pola sterującego testu.

Pole sterujące testu jest umieszczone w bloku 0 pamięci MERY i ma nastepująca zawartość:

  • +0 adres słowowy testu
  • +1 długość testu w słowach
  • +2 adres umieszczenia testu w pamięci mikroprocesora
  • +3 liczba powtórzeń testu
  • +4 adres pola parametrów w pamięci MERY
  • +5 długość pola parametrów w słowach (0-brak parametrów)
  • +6 adres umieszczenia parametrów w pamięci mikroprocesora
  • +7 adres startowy testu
  • +8 parametr dodatkowy testu
  • +9 tabela przerwań testu: po 3 bajty na przerwanie

UWAGA: Na wszystkich pozycjach słowowych młodszy bajt słowa jest zapisany na starszym bajcie słowa MERY, a starszy - na młodszym.

Tabela przerwań testu składa się z rozkazów obsługi przerwań kolejno dla RST1, RST2, RST3, RST4, RST4.5, RST5, RST5.5, RST6, RST6.5, RST7, RST7.5 . Na każde przerwanie są przeznaczone 3 bajty (zwykle na rozkaz JMP <adres>). Jeżeli pierwszy bajt pozycji tabeli ma wartość 0, to obsługa odpowiedniego przerwania pozostaje bez zmian.

Program testujący jest wynikowym programem binarnym dla mikroprocesora INTEL 8085. Test oraz jego parametry mogą być umieszczone w RAM w dowolnym obszarze poza RAM-RAM+7FH. Test powinien kończyć działanie rozkazem RET (jeżeli nie niszczy stosu) lub JMP 64. Sygnalizacja błędow, przesyłanie wyników do MERY itp. powinny być wykonywane przez test.

Polecenie TESTUJ powoduje:

  • przepisanie testu z pamięci MERY do RAM mikroprocesora
  • przepisanie parametrów z pamięci MERY do RAM
  • zmianę obsługi przerwań wg tabeli przerwań testu
  • umieszczenie w RAM danych:
    • RAM+33 - numer procesora wysyłającego polecenie TESTUJ (bit 7)
    • RAM+34(mlb), RAM+35 - adres początkowy pola parametrów w RAM
    • RAM+36(mlb), RAM+37 - adres startowy testu
    • RAM+38(mlb), RAM+39 - parametr dodatkowy testu
    • RAM+40(mlb), RAM+41 - licznik powtórzeń testu
  • ustawienie wskaźnika stosu SP=RAM+100H
  • wystartowanie testu od adresu startowego rozkazem CALL; rejestry nie sa zerowane, układ przerwań jest zablokowany.

Obsługa przerwań testu:

  1. W RAM na pierwszych 33 bajtach jest miejsce na obsługę przerwań RST1-RST7.5.
  2. RST0 powoduje regenerację obsługi przerwań.
  3. Polecenie TESTUJ powoduje zmianę obsługi przerwań na tych pozycjach, którym odpowiadają niezerowe pozycje tabeli przerwań testu.
  4. Przed skokiem do obslugi, przerwania są zapisywane na rejestry. Dla przerwań RST1, RST2 i RST3 są zapisywane kolejno: PSW, BC, DE i HL. W przypadku pozostałych przerwań na stos jest zapisywany tylko PSW.

Po zakończeniu testu rozkazem RET, test jest wykonywany ponownie, jeżeli licznik powtórzeń testu nie został wyzerowany. Przy ponownym wykonaniu testu nie są przepisywane z pamięci MERY ani test, ani parametry testu. Po wyzerowaniu licznika powtórzeń następuje skok do adresu 64.

Skok do adresu 64 powoduje regenerację obsługi przerwań oraz wysłanie do MERY przerwania KONIEC TESTU.

Źródło: Polecenie sterujace TESTUJ, Amepol