Autor Wątek: Okno systemowe trybie znakowym  (Przeczytany 3084 razy)

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Okno systemowe trybie znakowym
« dnia: 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ś ...
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Okno systemowe trybie znakowym
« Odpowiedź #1 dnia: 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 :)

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Okno systemowe trybie znakowym
« Odpowiedź #2 dnia: 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.
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

Phonex

  • *****
  • Wiadomości: 1260
  • Miejsce pobytu:
    Warszawa
Odp: Okno systemowe trybie znakowym
« Odpowiedź #3 dnia: 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 '

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Okno systemowe trybie znakowym
« Odpowiedź #4 dnia: 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
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Okno systemowe trybie znakowym
« Odpowiedź #5 dnia: 2023.06.01, 23:31:00 »
#0;AT 0,0 zadziałało, dalej nie sprawdzałem, dziękuję za podpowiedzi.
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235