1

Jak tego używać, poza informacją że mają być trzy parametry (poz. pozioma, pionowa i zmienna) nic nie mogę znaleźć, wpisanie LOCATE 2,2,A wywala po odpaleniu ERROR 131, jest jakaś literatura dokładniej to opisująca??

2

LOCATE działa na ekranie otwartym przez GRAPHICS (kanał #6 CIO). BASIC świeżo po uruchomieniu nie ma otwartego trybu graficznego (!). Trzeba zrobić np. GRAPHICS 0 i będzie grało :D

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

3 Ostatnio edytowany przez seban (2014-07-27 19:21:58)

przykład użycia locate w trybie graficznym:

10 GRAPHICS 7+16
20 FOR I=1 TO 50
21 COLOR 1+RND(0)*2
22 PLOT RND(0)*49,RND(0)*50
23 DRAWTO RND(0)*49,RND(0)*50
24 NEXT I
30 REM - LOCATE DEMO -
40 FOR Y=0 TO 49
41 FOR X=0 TO 49
42 LOCATE X,Y,C
43 COLOR C:PLOT 159-X,49-Y
44 NEXT X
45 NEXT Y
99 GOTO 99

aby działało w trybie TXT musisz otworzyć ekran ponownie, np. używając polecenia:

GRAPHICS 0

EDIT:

O, mono był szybszy i wszystko dokładnie wyjaśnił :D

4

Trochę do dupy bo zamierzaniu programu jest takie żeby GRAPHICS w ogóle nie używać, widać będę musiał jakąś inną metodę wymyślić.

5 Ostatnio edytowany przez seban (2014-07-27 19:32:18)

ale przecież GRAPHICS 0 otwiera tryb tekstowy, taki jak po starcie BASIC-a, gdy widzisz napis READY. Nie bardzo rozumiem w czym problem ;/

10 GRAPHICS 0:POKE 752,1
20 FOR I=1 TO 50
22 POSITION RND(0)*10,RND(0)*10
23 ? CHR$(20);
24 NEXT I
30 REM --- TEXT LOCATE DEMO ---
40 FOR Y=0 TO 10
41 FOR X=0 TO 10
42 LOCATE X,Y,A
44 COLOR A:PLOT 38-X,23-Y
45 NEXT X
46 NEXT Y
99 GOTO 99

6

Nieużycie GRAPHICS wynika z tego iż ta instrukcja czyści ekran, plan jest taki iż te moje ów gówniane dzieło nie będzie wykorzystywać całego ekranu tylko jego część, tą część którą zamaże chciałbym gdzieś przechować aby po wyjściu z gówienka nabazgrać to co było tam wcześniej, ot taki można powiedzieć śmieć w okienku ;)

7

Użyj Graphics X+32, nie będziesz czyścić ekranu. X - numer trybu, który akurat używasz.

I Ty zostaniesz big endianem...

8 Ostatnio edytowany przez seban (2014-07-27 22:07:28)

@Iron: ale BASIC sam siebie uruchamiając się czyści ekran, więc nie bardzo sobie to wyobrażam :)

9

seban napisał/a:

BASIC sam siebie uruchamiając się czyści ekran

Polemizowałbym :)

KMK
? HEX$(6670358)

10 Ostatnio edytowany przez seban (2014-07-27 23:01:33)

niezaprzeczalnie nakłamałem :) faktycznie przejście do BASIC-a np. z DOS, nie czyści ekranu :)

w takim razie może coś w tym stylu:

10 ? CHR$(125):LIST 
15 EKR=PEEK(88)+256*PEEK(89)
20 FOR Y=0 TO 10:FOR X=0 TO 10
21 A=PEEK(EKR+Y*40+X)
22 PTR=EKR+40*(Y+10)+20+X
23 POKE PTR,A
24 NEXT X:NEXT Y

ps1) ale szybkie to nie będzie, ale to tylko przykład. Można się pozbyć mnożeń, etc. :)

ps2) mój błąd polegał na tym że w np. w DOS II+ włączenie BASIC-a (komenda =ON) ponownie otwiera ekran, bo RAMTOP obniża sie do $A000 i OS musi ponownie otworzyć ekran nieco niżej w pamięci, natomiast późniejsze wywołanie CAR z poziomu DOS (gdy BASIC jest już włączony) już nie czyście ekranu, ale w przypadku DOS II+ czy My-DOS przejście z BASIC-a do DOS już czyści ekran (ale to już zachowanie danego DOS-a)

11

Dziekowac, bedzie chwilka to poeksperymentuje, dzisiaj mam dosyc, i tak wiele problemow w kodowaniu dzisiaj przeskoczylem, caly czas staram sie rozwijac tylko ciezko z tym gdy za sciana dzieciaki przewracaja wszystko do gory nogami :D

12

Problem nie polega na czyszczeniu ekranu (kanał #0), tylko na otwarciu kanału #6 do operacji graficznych, którego to kanału używa LOCATE. Jeśli chcesz zachować zawartość ekranu trzeba go jednak przepisać (wydaje mi się, że GRAPHICS 0+32 mimo, że powinno działać, to jednak nie działa :/).

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

13

Bardzo fajny pomysł na pokazanie zasady działania LOCATE przez Sebana. Szacun!

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

14

Nie GR.0 w Turbo Basic XL:

10 OP.#1,8,0,"COTAMTRZEBA"
11 BPUT #1,DPEEK(88),24*40:CL.#1
12 GR.0:OPEN #1,4,0,"COTAMTRZEBA"
13 BGET #1,DPEEK(88),24*40:CL.#1

Można usunąć kursor i przywrócić w to samo miejsce, jak trzeba.

15

Dzisiaj było troche chwili aby sie pobawic, nistety jestem za cienki do tego, pobawilem sie chwile kodem Sebana, nastepnie probowalem to wpiac w moj program, niestety albo nie potrafie rozdzielic czesci pobierajacej dane z ekranu z czescia wypluwajaca na ekran albo jak zauwazylem procedurka Sebana aby cos drukowac musi cos brac bezprosrednio z ekranu, jakos tak kminie czy jakas tablica by sie nie przydala, ogolnie to czuje ze cos logiczne myslenie ostatnio mi nie wychodzi :/

16

@Yansen Prościej instrukcją MOVE.

https://www.youtube.com/watch?v=jofNR_WkoCE