Rejestr statusowy programu apsi służy do lepszej możliwości kontroli nad biegiem programu. Jest to w ogólnie rzecz biorąc rejestr 32-bitowy bez znaku, lecz w niektórych instrukcjach np. writebyte jest używana tylko jego najmłodszy bajt. Uwaga: w instrukcjach tych nie wolno wstawiać spacji pomiędzy instrukcją stat a odpowiednimi znakami np. ‘?’. Oprócz rejestru statusowego program posiada 256 pamięć rejestru statusowego, co pozwala na zapis i odczyt tych rejestrów spod indeksów 0¸FF.
stat? – powoduje wyświetlenie aktualnej wartości rejestru statusowego
stat= wartosc (hex) – powoduje ustawienie rejestru statusowego zgodnie ze zmienną wartosc.
stat+= wartosc (hex) – powoduje dodanie do rejestru statusowego zmienną wartosc.
stat-= wartosc (hex) – powoduje odjęcie od rejestru statusowego zmienną wartosc.
stat*= wartosc (hex) – powoduje pomnożenie rejestru statusowego przez zmienną wartosc.
stat/= wartosc (hex) – powoduje podzielenie rejestru statusowego przez zmienną wartosc.
stat&= wartosc (hex) – powoduje wykonanie bitowej operacji AND rejestru statusowego oraz zmienej wartosc.
stat|= wartosc (hex) – powoduje wykonanie bitowej operacji OR rejestru statusowego oraz zmienej wartosc.
stat^= wartosc (hex) – powoduje wykonanie bitowej operacji XOR rejestru statusowego oraz zmienej wartosc.
stat=>m index(hex)– powoduje zapisanie aktualnej wartości rejestru statusowego w pamięci wewnętrznej programu pod adresem index. Uwaga na spacje pomiędzy m a indeksem.
stat<=m index (hex) – powoduje odtworzenie uprzednio zapisanej wartości rejestru statusowego z pod adresu index.
stat<=>m index (hex) – powoduje zamianę wartości rejestru statusowego i pamięci statusowej.
stat+=m index (hex) – powoduje dodanie do rejestru statusowego wartości pamięci o adresie indeks.
stat-=m index (hex) – powoduje odjęcie od rejestru statusowego wartości pamięci o adresie indeks.
Przykład: Powoduje zapisanie pamięci 20 0000 ¸ 20 00FF kolejnymi danymi 0, 1, ... FF I zapisanie jej do pliku tmp.hex
config epp2sram300 // konfiguracja układu FPGA
status= FF // zaczynany od największego adresu
:beg
status=>m 1 // wartość danej do zapisu
status+= 200000 // dodaj offset pamięci wewnętrznej
status=>m 0 // zapis pod domyślnym rejestrem adresowym
status<=m 1 // odtwórz wartość danej do zapisu
writebyte // zapis pod adres zapisany instrukcją savestatus 0 i daną w rejestrze statusowym
loop beg FF
writeblock tmp.hex 200000 2000FF