[#31] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #1

kolejny problem.
Bajtek 4/87, str. 30 - program "Laurka". Wersję spektrumową już okiełznałem, przyszła kolej na Atari - i tu pojawiają się schody. Aktualnym schodem, którego nie potrafię pokonać, jest kwestia przecinków w liniach DATA. Atarowski kod prezentuje się na dzień dzisiejszy tak:

5 DIM LITERA$(5)
9 REM *********** DANE ***********
10 DATA i,k,t,a,M, ,n,e,i,z,D
11 DATA i,s,u,m,a,M, ,j,e,n,a,h,c,o,K
12 DATA 22
13 DATA W,y,b,u,d,u,j,e, ,s,l,i,c,z,n,y, ,d,o,m,e,k
14 DATA 18
15 DATA z, ,c,z,e,k,o,l,a,d,y, ,s,c,i,a,n,y
16 DATA 30
17 DATA k,o,m,i,n, ,z, ,l,u,k,r,u,,, ,d,a,c,h, ,z, ,p,o,z,i,o,m,e,k
18 DATA 21
19 DATA d,y,m, ,z, ,b,i,t,e,j, ,s,m,i,e,t,a,n,y,.
20 DATA 23
21 DATA Z, ,w,a,f,l,i, ,s,u,f,i,t, ,i, ,p,o,d,l,o,g,i
22 DATA 23
23 DATA k,a,z,d,y, ,g,w,o,z,d,z, ,z, ,o,r,z,e,s,z,k,a
24 DATA 15
25 DATA t,u,,, ,w, ,t,y,m, ,d,o,m,k,u
26 DATA 10
27 DATA M,a,m,o, ,d,r,o,g,a
28 DATA 24
29 DATA b,e,d,z,i,e,s,z, ,s,o,b,i,e, ,m,i,e,s,z,k,a,c,.
30 DATA e,i,b,e,i,C, ,a,l,d, ,k,e,t,a,i,w,K
99 REM ******* PROGRAM GLOWNY *******
100 PRINT CHR$(125);
110 LET PIERWSZY=16
120 LET OSTATNI=26
130 GOSUB 1000
140 PRINT
150 PRINT
160 PRINT
170 GOSUB 4000
180 GOSUB 6000
190 GOSUB 7000
200 LET PIERWSZY=7
210 LET OSTATNI=21
220 GOSUB 2000
230 PRINT
240 PRINT
250 LET PIERWSZY=8
260 FOR K=1 TO 9
270 READ OSTATNI
280 GOSUB 3000
290 PRINT
300 NEXT K
310 PRINT
320 PRINT
330 PRINT "                     Romek"
340 GOSUB 6000
350 GOSUB 7000
360 GOSUB 5000
370 LET PIERWSZY=12
380 LET OSTATNI=29
390 GOSUB 1000
400 GOSUB 6000
410 GOSUB 7000
420 RUN
999  REM ***** SPADANIE LITEREK *****
1000  FOR I=OSTATNI TO PIERWSZY STEP -1
1010   READ LITERA$
1020    FOR J=1 TO 2
1030     POSITION 0,0
1040      FOR K=1 TO J
1050       PRINT "                        "
1060      NEXT K
1070      FOR K=1 TO I-1
1080       PRINT " ";
1090      NEXT K
1100     PRINT LITERA$;
1110    NEXT J
1120  NEXT I
1130 PRINT
1140 RETURN
1999 REM ***** BIEGNACE LITERKI *****
2000  FOR I=OSTATNI TO PIERWSZY STEP -1
2010   READ LITERA$
2020    FOR J=1 TO I-1
2030     POSITION 0,0
2040      FOR K=1 TO J
2050       PRINT " ";
2060      NEXT K
2070     PRINT LITERA$;
2080    NEXT J
2090  NEXT I
2100 RETURN
2999 REM *** DRUKOWANIE PO LITERCE ***
3000 PRINT "  ";
3010  FOR I=1 TO OSTATNI
3020   READ LITERA$
3030    FOR T=1 TO 10
3040    NEXT T
3050   PRINT LITERA$;
3060  NEXT I
3070 RETURN
3999 REM *********** SERCE ***********
4000 PRINT "                /-\  /-\"
4010 PRINT "               /   \/   \"
4020 PRINT "               |        |"
4030 PRINT "               |        |"
4040 PRINT "               \        /"
4050 PRINT "                \      /"
4060 PRINT "                 \    /"
4070 PRINT "                  \  /"
4080 PRINT "                   \/"
4090 RETURN
4999 REM ********** KWIATEK **********
5000 PRINT "                 o"
5010 PRINT "                oOo o"
5020 PRINT "                 o\oOo"
5030 PRINT "                o |/o"
5040 PRINT "               oOo|"
5050 PRINT "                o\|  o"
5060 PRINT "                  | oOo"
5070 PRINT "                  | /o"
5080 PRINT "                  |/"
5090 PRINT "                  |"
5100 RETURN
5999 REM *********** PAUZA ***********
6000  FOR T=1 TO 50
6010  NEXT T
6020 RETURN
6999 REM ********** W GORE **********
7000  FOR I=1 TO 45
7010   PRINT
7020    FOR T=1 TO 20
7030    NEXT T
7040  NEXT I
7050 RETURN


chodzi mi o linie 13+, typu:
13 DATA W,y,b,u,d,u,j,e, ,s,l,i,c,z,n,y, ,d,o,m,e,k
- tam na końcu co poniektórych powinny być przecinki. I nie mam pojęcia, jak je dopisać na końcu DATA, żeby wydrukował przecinek. Jak stawiam ",", to przecinek uznawany jest za rozdzielenie kolejnych elementów i program wykłada się z errorem 8. Wstawienie zamiast tego CHR$(cokolwiek) drukuje "CHR$(cokolwiek)". Wygląda na to, że nie ma sposobu bez posługiwania się dodatkowo jakimiś PRINT czy coś... Ale może się mylę i jednak sposób jest?

Ostatnia aktualizacja: 12.09.2023 21:13:13 przez snajper
[#32] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #31

Jesli przecinek w typie Data oznacza separator, tzn. ze nic nie zrobisz.
Dlatego ogolnie znaki wprowadza sie jako lancuchy a nie jako pojedynczne litery...
1
[#33] Re: znawca bejzika poszukiwany na gwałt

@selur, post #32

łe, no to lipa. buuu! To jeszcze został mi Amstrad, Komodor i Meritum. Może przynajmniej z jednym wyrobię się dziś.
[#34] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #31

Nie wiedziałem że Atarce przeszkadzają cudzysłowy w liniach DATA.
To może zamiast tych przecinków które mają nimi być a nie separatorami, wstaw kropki albo średniki.

Na CPC oryginalna wersja była pisana, czyli ta z cudzysami. No to chyba już ją masz.

Z tego numeru mam tylko Amstradowy program ze strony 15, działa pod emulatorem.

10 DATA cdb1bb011b00090909eb01160009eb360123732372c947cdaebbd0fe20c078e603fe03282a010003e5c5110039ebedb0c1e1fe01d8280c7ecb3fa677230b79b020f5c97ecb3fb677230b79b020f5c92b11080006601936ff10fbc9
20 SYMBOL AFTER 256:MEMORY HIMEM-91
30 s=0:READ a$
40 FOR k=1 TO 91:b=VAL("&"+MID$(a$,2*k-1,2)):POKE k+HIMEM,b:s=s+b:NEXT
50 IF s<>9773 THEN PRINT "Blad w DATA !":END
60 CALL HIMEM+1:SYMBOL AFTER 32
2
[#35] Re: znawca bejzika poszukiwany na gwałt

@ZorrO, post #34

dobry pomysł z tymi średnikami. OK
wersję CPC wczoraj przetestowałem. Teraz męczę się z C64.
zastanawiam się, po co tam te półgodzinne przerwy:
6000 FOR t=1 TO 5000
6010 NEXT t
przecież to się rusza jak ślimak... Gdyby w tle grała muzyczka, miałoby to jakiś sens, a tak?

poza tym z tych dłuższych z 4/87 został mi jeszcze "Elektron w studni".
[#36] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #35

Wszystko zależy od prędkości Basica na danym komputerze.
Program napisany uniwersalnie, więc w komentarzu do tej pętli powinna być podany czas w sekundach.
Wtedy można byłoby zastosować odpowiednią korektę.

ps.
to może jakaś semigrafika, która podobna jest do przecinka ?
[#37] Re: znawca bejzika poszukiwany na gwałt

@Norbert, post #36

Zgadza sie. Oryginał był napisany w CPC, a to 2x szybszy Basic niż w C64 i ok 3.5x szybszy od XE, ZX i MSX. Czyli na Atarce ta pauza jest 3.5 raza dłuższa niż planowana.
[#38] Re: znawca bejzika poszukiwany na gwałt

@Norbert, post #36

to może jakaś semigrafika, która podobna jest do przecinka ?


propo. Rozpoznaje ktoś, co to znowu za hieroglif? Prześledziłem komodorowską tablicę hieroglifów (https://sta.c64.org/cbm64petkey.html) i nie uświadczyłem tam niczego o zbliżonym wyglądzie.
nie wiem, czy on w ogóle jest potrzebny, czy to nie jakiś chochlik drukarski, bo program działa bez niego.



Ostatnia aktualizacja: 13.09.2023 14:05:28 przez snajper
[#39] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #38

bo program działa bez niego.


dziala bez niego, bo to przeciez zwykla instrukcja Print " "; i zadziala z dowolnym lancuchem w srodku.
Ja by wpisal "NSys" cokolwiek by to mialo znaczyc, bo masz tam wyswietlony adres z jakims przesunieciem (AD+31).
1
[#40] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #38

To jest negatyw Q

Przesuwa kursor o jedną pozycję niżej
Poczytaj

Ostatnia aktualizacja: 13.09.2023 15:05:20 przez Norbert
3
[#41] Re: znawca bejzika poszukiwany na gwałt

@selur, post #39

no tak, nie myślę. x|
@Norbert: dzięki.

ale kurła jestem z siebie dumny teraz. Kolejny programik odbudowany, w pełni własnymi siłami. Z artykułu na str. 8 Bajtka 4/87, do różnych działań dyskowych. Materiały źródłowe wyglądały tak:



na górze dostępny w internetach skan, a na dole redux. Ten pierwszy miejscami nie do rozczytania, a ten drugi w tych samych miejscach powstawiał jakieś bełkoty. x| W efekcie wklepanie programu czy to według reduxa, czy według własnych "domniemywań" skutkowało w najlepszym wypadku trudnościami w użytkowaniu. A wystarczyło trochę wczytać się ze zrozumieniem w kod oraz w różne komodoro-bejzikowe materiały.

tutaj próbka działania, z kopiowaniem pliku (plus różne inne randomowe komendy, które nie zostały w tym Bajtku opisane):

[#42] Re: znawca bejzika poszukiwany na gwałt

@QTZ, post #22

W sieci są dostępne listingi z Bajtka przepisane przez Amarok-a: https://gitlab.com/amarok8bit/atari-listings/-/blob/master/Bajtek/bajtek.zip


...no i tu mam zagadkę. Sprawdzam, czy już wszystko dopięte na ostatni guzik - żeby oszczędzić sobie studiowania, stwierdziłem, że zdam się na nieomylność tego gościa. Porównuję listing CAŁEK... I wersja z internetów różni się od tej w gazecie. Jednym drobnym szczegółem:

10 TRAP 10:GRAPHICS 0:? :? "PODAJ LICZBE RZEDNYCH ";:INPUT M:IF M<2 THEN 10
20 TRAP 20:? "PODAJ LICZBE KROKOW ";:INPUT N:IF N<1 THEN 20
30 DIM S(M):FOR I=1 TO M
40 TRAP 40:? "PODAJ ";I;" ODCIETA ";:INPUT A:S(I)=A:NEXT I:IF N>=M THEN N=M-1
50 TRAP 50:? :? "PODAJ ODSTEP MIEDZY RZEDNYMI ";:INPUT H
60 TRAP 60:? "PODAJ NUMER POCZATKOWEJ RZEDNEJ ";:INPUT L:IF L<1 OR L>M-1 OR L+N>M THEN 60
70 TRAP 40000:GOSUB 1000:? :? "CALKA JEST ROWNA ";CALKA:END 
1000 ON N GOTO 1050,1080,1090:IF N=0 OR H=0 THEN 1100
1010 SUMA=0:J=2
1020 SUMA=SUMA+(S(J+L-2)+4*S(J+L-1)+S(J+L))*H/3:IF J<>N AND N-J=1 THEN J=J+2:GOTO 1020
1030 IF J<>N THEN CALKA=SUMA+(5*S(J+L+1)+8*S(J+L))*H/12:RETURN 
1040 CALKA=SUMA:RETURN 
1050 IF M=2 THEN CALKA=(S(L)+S(L+1))*H/2:RETURN 
1060 IF M-L=1 THEN CALKA=(-S(L-1)+8*S(L)+5*S(L+1))*H/12:RETURN 
1070 CALKA=(5*S(L)+8*S(L+1)-S(L+2))*H/12:RETURN 
1080 CALKA=(S(L)+4*S(L+1)+S(L+2))*H/3:RETURN 
1090 CALKA=(S(L)+3*(S(L+1)+S(L+2))+S(L+3))*H*3/8:RETURN 
1100 ? :? "CALKOWANIE NIEWYKONALNE";CHR$(253):? "N = ";N;"H = ";H:RETURN


wiersz 1030 wygląda tak:
1030 IF J<>N THEN CALKA=SUMA+(5*S(J+L+1)+8*S(J+L))*H/12:RETURN
a w gazecie wygląda tak:
1030 IF J<>N THEN CALKA=SUMA+(5*S(J+L+1)+8*S(J+L)-S(J+L-1))*H/12:RETURN

i który jest prawidłowy? Zaraz mnie h*&% sztrzeli z tego wszystkiego.
Kto tu jest dobry z matmy?
dodam, cytując gazetkę, że:
M - liczba rzędnych całkowanej krzywej
N - liczba kroków całkowania
H - odstęp między rzędnymi
L - numer rzędnej, od której rozpoczyna się całkowanie
S(I) - wartości odciętych dla poszczególnych rzędnych

Ostatnia aktualizacja: 17.09.2023 18:32:44 przez snajper
[#43] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #42

ja nawet nie wiem co to sa calki bardziej mi sie kojarzy cycki
[#44] Re: znawca bejzika poszukiwany na gwałt

@selur, post #43

możesz je nazwać cycałki, jeśli to ma w czymś pomóc. ;)
[#45] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #42

Nie chce mi się wgryzać w tego bejzika ale Ci powiem co prawdopodobnie ten kod ma robić. ;)

Całka (oznaczona) to nic innego jak pole pod wykresem X,Y w zadanym przedziale X-ów
Jeśli dobrze pamiętam, to odcięta to X, rzędna to Y - Twoje oznaczenia wskazują na nomenklaturę jakby odwrotną (zwłaszcza S(I)).
I teraz wiadomo, dokładnie policzyć całkę to jest często rzeźnia a nawet niemożliwość, ale można sobie to przybliżać. Masz dwie metody:
- metoda prostokątów
- metoda trapezów



HE HE HE...

W prostokątach rozbijasz wykresy na prostokąty - masz przy tym większy błąd. W trapezach liczysz dokładniej ale więcej liczenia. Dx u Ciebie będzie stałe i to będzie H. N to liczba prostokątów/trapezów.
2
[#46] Re: znawca bejzika poszukiwany na gwałt

@teh_KaiN, post #45

no.... i teraz juz jak masz jasno wylozone cycalki na stole/tablicy, to mozna je dotknac osobiscie
[#47] Re: znawca bejzika poszukiwany na gwałt

@teh_KaiN, post #45

jest jeszcze metoda Simpsona. Mieliśmy to na studiach, tylko mi się nie chce teraz w tym zanurzać. x| Opis w Bajtku mówi:
Jeżeli podamy dwie rzędne, to zostanie zastosowany wzór trapezów (...). Dla większej ilości rzędnych krzywa jest przybliżana odcinkami parabol. Przy trzech rzędnych jedna z nich może znajdować się poza zakresem całkowania - stosowany jest wtedy wzór 5-8 (wtf? o_O) W pozostałych przypadkach procedura używa wzorów Simpsona.


tymczasem wyniki z mojego testu wyglądają tak:



to powyżej to wersja z internetu. (Te 1000+ itp. to moje własne wstawki - dla zorientowania się, przez które linijki on skacze w danym przypadku. ;) Żeby namierzyć linijkę 1030)

natomiast wersja z gazety:



a wyliczanie ręczne metodą trapezów daje mi w wyniku 110. To raczej wątpliwe, żeby błąd mieścił się w dopuszczalnych granicach...
/a nie, czekaj... Bo mi się pogmatwały te rzędne z odciętymi. x| To nie wiem, muszę chwilę pomyśleć. 🤔

Ostatnia aktualizacja: 17.09.2023 19:57:52 przez snajper
[#48] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #47

dobra, chyba czaję. "Liczba kroków" to nie jest liczba trapezów, tylko numer ostatniej odciętej do policzenia trapeza... Co jest mega głupie, no ale nie ja te wszystkie simpsony wymyślam. Przy takich założeniach wyliczenie całki metodą trapezów przy danych:
- liczba rzędnych: 5,
- liczba kroków: 4,
- kolejne odcięte: 1, 2, 3, 4, 5,
- odstęp: 5,
daje 37,5. Co już z grubsza pokrywa się z wynikami programu, które wynoszą:
38,(3) w mojej wersji
i właśnie 37,5 w wersji internetów.

z kolei liczenie metodą trapezów przy danych jak na poprzednich screenshotach daje 67.5... I tu dla odmiany bliższa wynikowi jest moja wersja. %| wariat? No zaraz zwariuję.

/EDIT hehe, z tego wszystkiego pogmatwały mi się wersje... Oczywiście 38,(3) to była internetowa, a moja 37,5. Czyli ŁI AR DE CZEMPJONS! jupi! i retroniks ftw!


Ostatnia aktualizacja: 17.09.2023 20:38:27 przez snajper
1
[#49] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #48

a ja nadal nic nie kumam z tych slupkow
[#50] Re: znawca bejzika poszukiwany na gwałt

@selur, post #49

słupki to pół biedy. Jak pomyślę o tych nocach z ćwiczeniami, liczeniem przykładów i stosem zapisanych papierów, żeby wkuć wzory, ile wynosi całka z sinusa czy jakichś logarytmów... o_O To dopiero były horrory. Na szczęście tylko na pierwszym roku, byle przebrnąć przez ANAL I i II. Na drugim semestrze był o tyle przyjemniejszy, że prowadzony przez opiekunkę naszego roku, która była taką niczego sobie ładną panią.
Pamiętam te emocje, kiedy odpisała mi, że moja amigowa prezentacja bardzo dobra i pińć. wub

Ostatnia aktualizacja: 18.09.2023 02:23:21 przez snajper
[#51] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #50

no dobra, już nei mogę.
program pt. PROJEKTOR FILMOWY, Bajtek 3/1987, str. 12, 13.

1 REM +---------------------+
    2 REM +  Projektor filmow   +
    3 REM +     animowanych     +
    4 REM +  MARCIN WALIGORSKI  +
    5 REM +---------------------+
    6:
    7 REM +---------------------+
    8 REM +    Inicjalizacja    +
    9 REM +---------------------+
   10 CLEAR 32755
   12 LET Petla = 0: LET Ekr = 1
   13 LET Tempo = 1
   15 LET S$ = "abcdefghijklmnop"
   16 BORDER 7: PAPER 7: INK 0: CLS 
   17 REM +---------------------+
   18 REM + Procedura maszynowa +
   19 REM +---------------------+
   20 FOR K=32756 TO 32767
   30 READ Bajt: POKE K,Bajt
   40 NEXT K
   50 DATA 33,0,128,17,0,72
   60 DATA 1,0,8,237,176,201
  107 REM +--------------------+
  108 REM +    Obsluga menu    +
  109 REM +--------------------+
  110 PRINT AT 10,2;"PROJEKTOR FILMOW ANIMOWANYCH"
  120 PRINT #0;AT 0,0,"                                                                "
  125 IF Ekr THEN PRINT #0;AT 0,0;" Parametry  Klaps!        Ekran  Tasma      Zapamietanie  Break "
  130 LET A$ = INKEY$
  135 IF A$ <> "" THEN BEEP .1,30
  140 IF A$ = "t" THEN GO TO 200
  150 IF A$ = "e" THEN GO TO 300
  160 IF A$ = "p" THEN GO TO 400
  170 IF A$ = "z" THEN GO TO 500
  180 IF A$ = "k" THEN GO TO 600
  190 GO TO 130
  197 REM +---------------------+
  198 REM + Obsluga magnetofonu +
  199 REM +---------------------+
  200 PRINT #0;AT 0,0;" Ladowanie Kadru / Filmu         Nagranie filmu             Menu"
  205 LET A$ = INKEY$
  207 IF A$ <> "" THEN BEEP .1,36
  210 IF A$ = "m" THEN GO TO 120
  220 IF A$ = "k" THEN GO SUB 270 : LOAD N$ SCREEN$ : GO TO 120
  230 IF A$ = "f" THEN GO SUB 270 : LOAD N$ CODE : GO TO 120
  240 IF A$ = "n" THEN GO SUB 270 : SAVE N$ CODE 32768,32768: GO TO 120
  250 GO TO 205
  267 REM +---------------------+
  268 REM +Pytanie o nazwe pliku+
  269 REM +---------------------+
  270 INPUT "Nazwa pliku ? ",N$
  280 RETURN 
  297 REM +---------------------+
  298 REM +     Tryb ekranu     +
  299 REM +---------------------+
  300 LET Ekr = NOT Ekr
  310 IF NOT Ekr THEN PRINT #0,AT 0,0;"                                                                "
  320 PAUSE 30
  330 GO TO 120
  397 REM +---------------------+
  398 REM +  Zmiana parametrow  +
  399 REM +---------------------+
  400 PRINT #0;AT 0,0;" Sekwencja   Tempo               Zapetlenie  Rozciecie      Menu"
  405 LET A$ = INKEY$
  410 IF A$ <> "" THEN BEEP .1,34
  420 IF A$ = "m" THEN GO TO 120
  430 IF A$ = "s" THEN INPUT "Sekwencja kadrow ? "; S$: GO TO 400
  440 IF A$ = "t" THEN INPUT "Tempo (0..9) ? "; Tempo: GO TO 400
  450 IF A$ = "z" THEN LET Petla = 1: GO TO 400
  460 IF  A$ = "r" THEN LET Petla = 0: GO TO 400
  470 GO TO 405
  497 REM +---------------------+
  498 REM +  Zapamietanie kadru +
  499 REM +---------------------+
  500 INPUT "Oznaczenie kadru (a..p)? ";Z$
  510 IF Z$<"a" OR Z$>"p" THEN GO TO 500
  515 LET Nr = CODE (Z$)- 97
  520 POKE 32758, 72
  530 POKE 32761, 128 + 8*Nr
  540 RANDOMIZE USR 32756
  550 GO TO 120
  597 REM +---------------------+
  598 REM +   Projekcja filmu   +
  599 REM +---------------------+
  600 POKE 32761,72
  610 LET A$ = S$
  620:
  630 LET Nr = CODE (A$) - 97
  640 POKE 32758, 128 + 8*Nr
  650 RANDOMIZE USR 32756
  655 BEEP .0002,45: PAUSE Tempo
  660 LET A$ = A$ (2 TO LEN (A$))
  665 IF INKEY$ = "b" THEN GO TO 120
  670 IF A$<>"" THEN GO TO 630
  680:
  690 IF Petla THEN GO TO 610
  700 GO TO 130



nagrywam to na kasetę, robię HARD RESET, LOAD "", RUN - i po zrobieniu klapsa ostatni frejm wygląda tak... jak poniżej. Co tu się odpier^$%#$???? x|

[#52] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #51

pewnie w tym kodzie maszynowym jest jakis blad no ale trzeb a by zamienic dane w data na asembler. Gdzies byla instrukcja kodow do ZX'a moze w przewodniku po ZX spectrum albo zapytac spectrumowego kodera czy moze to czyms odczytac.


20 FOR K=32756 TO 32767
30 READ Bajt: POKE K,Bajt
40 NEXT K
50 DATA 33,0,128,17,0,72
60 DATA 1,0,8,237,176,201
[#53] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #51

To zwykła pętla LDIR do przerzucania bloku pamięci spod jednego adresu do innego.

21,00,80, - wrzuć do rejestrów HL h8000 (czyli 32768) - to adres skąd będzie brał dane
11,00,48, - wrzuć do rejestrów DE h4800 (czyli 18432) - to adres dokąd będzie wrzucał
01,00,08, - wrzuć do rejestrów BC h0800 (czyli 2048) - to ile bajtów ma przerzucić
ED,B0, - LDIR czyli przerzuć dane wg podanych parametrów.
C9 - wróć do BASICa.

Cały KOD ma 12 bajtów i mieści sie dokładnie pod buforem na pierwszą klatkę.

Pamięć ekranu jest dzielona na 3 dwukilobajtowe części i adres środkowej to 18432, (starszy bajt tego adresu dziesiętnie to 72), stamtąd będzie chował do bufora kolejne klatki, a potem z bufora będzie je tu przywracał z powrotem.

A starszy bajt adresu bufora pierwszej klatki to 128, a w kolejnych klatkach ta liczba rośnie o 8. I w sumie ma być 16 klatek. W młodszych bajtach adresów są zera.

Pod adresem POKE 32758 jest starszy bajt adresu skąd bierze dane.
Pod adresem POKE 32761 jest dokąd wrzuca dane.

A czy BASIC dobrze te klatki wybiera i bajty adresów wrzuca to nie wiem, bo dawno tego dialektu nie używałem i nie chce mi sie analizować. :)
Trochę jestem zdziwiony że Spectrum w ostatnich 32KB nic nie ma, myślałem że ma tam jakieś dane systemowe, bufor drukarki czy dane UDG. Ale może jak sie nie używa to można tam wrzucać co sie chce.
I skąd ty te klatki bierzesz, przecież ten program niczego nie rysuje.

Kiedyś bawiłem sie podobnym programem na CPC, tylko że klatka to była 1/4 ekranu 160x100, a nie jak tu 256x64. I dla każdej pikselowej linijki miałem osobną 11-bajtową procedurkę w kodzie, wtedy klatki płynniej sie zmieniały jedna w drugą, a tu będzie widać jak sie kolejna klatka wyłania z co 8ej pikselowej linijki, efekt podobny jak obracanie żaluzji, na początku też tak miałem i mi sie nie podobało.
Robiłem sobie 8klatkowe filmiki w 4ech kolorach, każdy mieścił sie w dwóch obrazkach, pracujący przekrój silnika, podobnie ze sercem, i obracający sie samochodzik. Byłem z siebie dumny. :)
1
[#54] Re: znawca bejzika poszukiwany na gwałt

@ZorrO, post #53

Nie wiem które klawisze wciskałeś w tym filmiku, ale przypuszczam że te śmiotki na ekranie to mogą być domyślne dane UDG, bo 21 znaków po 8 bajtów to 168 bajtów podzielone na 32 bajty w linii ekranu daje równe 5 linii ale oddzielonych od siebie 7ma pustymi liniami.

Gdyby program rysował w kolejnych klatkach np rosnący albo przesuwający sie kwadrat czy kółko albo napis choćby w kilku klatkach zamiast w nastu, to by fajnie demonstrował działanie tego programu, a tak to nie ma skąd brać klatek bo trzeba sobie narysować.
2
[#55] Re: znawca bejzika poszukiwany na gwałt

@ZorrO, post #53

I skąd ty te klatki bierzesz, przecież ten program niczego nie rysuje.


no nie rysuje, bo "film" jest pusty. Ma tylko domyślnie ustawioną sekwencję 16 klatek. Można sobie obrazek załadować i wstawić w dowolne miejsce. Tylko trzeba go przygotować już na własną rękę. Od biedy da się i wykonać "screenshot" aktualnie wyświetlanego napisu, np. tego "PROJEKTOR FILMOWY" ("Zapamiętanie" do tego służy), i też go wykorzystać w filmie. Niemniej nie ma to wpływu na dodawane na końcu śmieci.

Ostatnia aktualizacja: 23.09.2023 10:18:21 przez snajper
[#56] Re: znawca bejzika poszukiwany na gwałt

@ZorrO, post #54

Nie wiem które klawisze wciskałeś w tym filmiku, ale przypuszczam że te śmiotki na ekranie to mogą być domyślne dane UDG


Wklepałem sobie dla testu program wyświetlający fazy księżyca: https://zxspectrumastronomy.wordpress.com/tag/user-defined-graphics/, dopisując go do bejzikowego kodu "Projektora" i robiąc GO SUB na starcie. Po uruchomieniu obrazek wygląda tak:




a po usunięciu projektorowych linii DATA:



czyli Selur miał po części rację.
teraz tylko muszę rozkminić, jak to naprawić. 🤔

Ostatnia aktualizacja: 23.09.2023 19:17:00 przez snajper
[#57] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #56

cos mi sie przypomnialo, ZX Spectrum ma poroniony system wyswietlania obrazu podzielony na 3 segmenty i ywswietlajacy co 8 linie.








Moze ten kod zle rysuje te klatki na ekran...
[#58] Re: znawca bejzika poszukiwany na gwałt

@snajper, post #56

Niby w czym miał rację?
Co te kody robią pisałem poście 53. Ten kod jest OK, choć w zależności którą klatkę w którą stronę kopiujemy bajt 3ci i 6ty są w tym kodzie zmieniane za pomocą POKE.

A fazy księżyca będziesz miał ok jeśli dopiszesz polecenie RESTORE z właściwym numerem linii. Choć i tak ostatnia 16klatka będzie nachodziła na obszar UDG, ale filmik w 15 klatkach powinien być OKi.

Selur ma mnie chyba w ignorach bo odkrywa Amerykę choć o tym pisałem.
[#59] Re: znawca bejzika poszukiwany na gwałt

@ZorrO, post #58

napisales jedynie, ze "Pamięć ekranu jest dzielona na 3 dwukilobajtowe części i adres środkowej to
18432"
a to niewiele mowi a na tym filmie jest pokazane, jak dokladnie jest zorganizowna pamiec ekranu.
[#60] Re: znawca bejzika poszukiwany na gwałt

@ZorrO, post #58

Niby w czym miał rację?

w tym, że w sprawę zamieszane są linie DATA. Nie twierdziłem, że błąd jest w samym kodzie.

@selur
cos mi sie przypomnialo, ZX Spectrum ma poroniony system wyswietlania obrazu podzielony na 3 segmenty i ywswietlajacy co 8 linie.


wiem o tym, wcześniej na potrzeby testów znalazłem na jakimś stackoverflowie programik generujący na ekranie "obrazek" i on właśnie rysował po kolei co 8 linię.

Moze ten kod zle rysuje te klatki na ekran...

rysuje dobrze, bo tak jak mówiłem - po zapisaniu "screenshota" wyświetlany jest on prawidłowo.

co dziwne, nie przypominam sobie, by problem występował kiedy testowałem ten program parę tygodni wcześniej. 🤔 Dopiero ostatnio, podczas przygotowywania paczki z gotowymi obrazami, dla pewności przeprowadzając testy, pojawiły się te śmieci. Ale może wcześniej nie sprawdzałem dokładnie albo coś mi umknęło.

Ostatnia aktualizacja: 23.09.2023 20:29:06 przez snajper
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem