forum speccy.pl

ZX Spectrum => PROGRAMOWANIE => Wątek zaczęty przez: tdu w 2023.05.31, 12:18:29

Tytuł: Okno systemowe trybie znakowym
Wiadomość wysłana przez: tdu w 2023.05.31, 12:18:29
Wiersze o numerach 22 i 23 to okno systemowe.
Można w nich zapisać coś, przez PRINT #1;"text" lub PRINT #0;"text"

Po nadpisaniu tekstu pojawia się scroll i w końcu komunikat błędu (out of screen)

Co zrobić żeby mozna było wielokrotnie wyświetlać tekst w tym oknie, nie robiąc CLS,
a tekst ma się nadpisywać (bez scrolla)

Pamiętam że jakiegoś POKa, trzeba było zrobić ale nie mogę teraz znależć,
może ktoś coś ...
Tytuł: Odp: Okno systemowe trybie znakowym
Wiadomość wysłana przez: matofesi w 2023.05.31, 13:08:03
Hmmm... Tak jak chcesz to się raczej nie da...

Możesz wymusić pozycję wydruku robiąc
PRINT #0; AT 0,0; "tekst"

Możesz też ustawić liczbę linii w "oknie systemowym" na 0 (POKE 23659,0) i wtedy zwykły print będzie ci wypisywał dane aż do końca ekranu, ale jak wyjedziesz dalej to wyświetli się "scroll?". Żeby uniknąć tego ostatniego musisz ustawić "liczbę linii zanim wyświetli się scroll" na coś dużego - np POKE 23692,255 - tu musisz uważać, bo każde przesunięcie ekranu po wyjściu poza 24 linie zmniejsza tę wartość i po jakimś czasie jednak wyświetli ci "scroll?". Żeby tego uniknąć musisz pakować dużą wartość do 23692 co jakiś czas (co mniej linii niż twoja wartość ;)).

No i ze zmienną 23659 trzeba bardzo uważać - jak jest ustawiona na zero a system spróbuje się odwołać do "okna systemowego" w jakikolwiek sposób (INPUT, print AT itp) BASIC pójdzie w kartofle i całość się zawiesi. Dlatego też jeśli twój program na wylocie ma wracać do BASICa to musisz pamiętać, żeby tam zapisać wartość 2.

Chyba, że się całkiem nie znam i zaraz ktoś mnie naprostuje, że jednak się da :)
Tytuł: Odp: Okno systemowe trybie znakowym
Wiadomość wysłana przez: tdu w 2023.05.31, 17:00:23
Tam ma się wyświetlić tylko komunikat np. "wciśnij dowolny klawisz" i następuje częściowa wymiana ekranu i z nowu komunikat.
Tytuł: Odp: Okno systemowe trybie znakowym
Wiadomość wysłana przez: Phonex w 2023.05.31, 20:34:13
Jeżeli chodzi o wyczyszczenie tego co się napisało przez PRINT #0;"tekst" to jest kilka sposobów:

  najbardziej oczywisty
PRINT #0;AT 1,0,,
  insajderski
RANDOMIZE USR 3438
  ale najprościej
INPUT '
Tytuł: Odp: Okno systemowe trybie znakowym
Wiadomość wysłana przez: tdu w 2023.05.31, 23:28:10
Dziękuję za podpowiedzi, będę jutro testował.

A z innej beczki, testwalem program z liczbami wpisanymi prze VAL "liczba"
Spowolnienie pracy jest ogromne, daje to skrócenie kodu, ale z drugiej strony zwalnia.
Trzeba iść na kompromisy.
Jeśli liczba występuje wielokrotnie, warto zadeklarować ją w zmiennej i dalej w tej
 formie wykorzystywac, jest oszczędność miejsca i nie spowalnia
 programu tak jak VAL
Tytuł: Odp: Okno systemowe trybie znakowym
Wiadomość wysłana przez: tdu w 2023.06.01, 23:31:00
#0;AT 0,0 zadziałało, dalej nie sprawdzałem, dziękuję za podpowiedzi.