atarionline.pl "Bajtek" - nowe wydania! - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthorsun
    • CommentTime1 Dec 2020 zmieniony
     
    Ja już mam a Ty? :)
    • 2:
       
      CommentAuthorPecus
    • CommentTime1 Dec 2020
     
    A ja jeszcze czekam....
    • 3:
       
      CommentAuthorsun
    • CommentTime1 Dec 2020
     
    Kto czeka ten się doczeka, warto ;)
    • 4:
       
      CommentAuthorCOR/ira4
    • CommentTime1 Dec 2020
     
    ... to są nowe wydania starych numerów ?
    • 5:
       
      CommentAuthorsun
    • CommentTime1 Dec 2020 zmieniony
     
    Owszem. Poprawione teksty, zdjęcia po obróbce lub nowe, lepsze odpowiedniki, poprawione listingi programów (przetestowane).
    Być może będą udostępnione w formie tekstów, plików tap, prg tudzież w formie kasety.
    Zwracam uwagę na słowa "być może", ale w tejże formie są już przygotowane.
    • 6:
       
      CommentAuthorCOR/ira4
    • CommentTime2 Dec 2020
     
    to chyba trza taki projekt wesprzeć i zakupić choć sztukę ...,ciekawe rzeczy były w Bajtkach a nawet nie pamiętam ile mi starych Bajtków zostało ...
    • 7:
       
      CommentAuthorKaz
    • CommentTime25 Feb 2021 zmieniony
     
    Przy okazji omawiania nowych "Bajtków" koledze Mono spodobał się taki oto program na ZX Spectrum (pismo 3-4/1986, str.22). Kolega Sun udostępnił mu ten program, bo jako korektor przepisał i przetestował wszystkie programy, a Mono zrobił wersję Atari.

    Z kolei zdjęcie z działania programu w wersji na prawdziwym Atari - Misza.

    Program na ZX Spectrum - Michał Szuniewicz (lat 16 w 1986 roku)
    Program na Atari - Jerzy Kut (lat 10 w 1986 roku)

    - wersja 1, dokładna translacja oryginalnego programu:

    5 GRAPHICS 8: COLOR 1: H=159
    10 X=128: Y=88: REM PIERWSZY PUNKT
    15 K=2: REM KROK RYSOWANIA
    20 P=INT(RND(0)*4)+1: REM LICZBA PRZYPADKOWA
    25 A=PEEK(764)
    30 IF P=1 THEN X=X+K
    35 IF P=2 THEN X=X-K
    40 IF P=3 THEN Y=Y+K
    45 IF P=4 THEN Y=Y-K
    50 IF A<>255 THEN POKE 764,255: GOSUB 1000: REM ZMIANA KOLORU
    54 REM POZA EKRANEM ?
    55 IF X>319 OR X<0 OR Y>H OR Y<0 THEN X=INT(RND(0)*319)+1: Y=INT(RND(0)*H)+1
    60 PLOT X,Y: REM RYSUJ PUNKT
    65 POKE 77,0
    70 GOTO 20: REM KOLEJNY CYKL
    1000 PRINT "KOLOR MORZA (0-15) ";: INPUT KT
    1010 PRINT "KOLOR ZIEMI (0-15) ";: INPUT KU
    1020 SETCOLOR 1,0,KT
    1030 SETCOLOR 2,0,KU
    1040 RETURN


    - wersja 2, rysuje na większym ekranie, nie ma wpisywania parametrów koloru:

    5 GRAPHICS 8+16: COLOR 1: H=191
    10 X=128: Y=88: REM PIERWSZY PUNKT
    15 K=2: REM KROK RYSOWANIA
    20 P=INT(RND(0)*4)+1: REM LICZBA PRZYPADKOWA
    25 A=PEEK(764)
    30 IF P=1 THEN X=X+K
    35 IF P=2 THEN X=X-K
    40 IF P=3 THEN Y=Y+K
    45 IF P=4 THEN Y=Y-K
    50 IF A<>255 THEN POKE 764,255: END: GOSUB 1000: REM ZMIANA KOLORU
    54 REM POZA EKRANEM ?
    55 IF X>319 OR X<0 OR Y>H OR Y<0 THEN X=INT(RND(0)*319)+1: Y=INT(RND(0)*H)+1
    60 PLOT X,Y: REM RYSUJ PUNKT
    65 POKE 77,0
    70 GOTO 20: REM KOLEJNY CYKL
    1000 PRINT "KOLOR MORZA (0-15) ";: INPUT KT
    1010 PRINT "KOLOR ZIEMI (0-15) ";: INPUT KU
    1020 SETCOLOR 1,0,KT
    1030 SETCOLOR 2,0,KU
    1040 RETURN
    • 8:
       
      CommentAuthorsun
    • CommentTime25 Feb 2021
     
    Nie ma okna na wpisywanie ale obsługa została, linia 50?
    • 9: CommentAuthormono
    • CommentTime25 Feb 2021 zmieniony
     
    Tak. W wersji 2 GOSUB można wyrzucić, jak również linie 1000+.
    • 10:
       
      CommentAuthorKaz
    • CommentTime25 Feb 2021
     
    Czyli tak:

    5 GRAPHICS 8+16: COLOR 1: H=191
    10 X=128: Y=88: REM PIERWSZY PUNKT
    15 K=2: REM KROK RYSOWANIA
    20 P=INT(RND(0)*4)+1: REM LICZBA PRZYPADKOWA
    25 A=PEEK(764)
    30 IF P=1 THEN X=X+K
    35 IF P=2 THEN X=X-K
    40 IF P=3 THEN Y=Y+K
    45 IF P=4 THEN Y=Y-K
    54 REM POZA EKRANEM ?
    55 IF X>319 OR X<0 OR Y>H OR Y<0 THEN X=INT(RND(0)*319)+1: Y=INT(RND(0)*H)+1
    60 PLOT X,Y: REM RYSUJ PUNKT
    65 POKE 77,0
    70 GOTO 20: REM KOLEJNY CYKL


    A optymalizacja, żeby to działało szybciej?
    • 11: CommentAuthormono
    • CommentTime25 Feb 2021 zmieniony
     
    Samo GOSUB a nie całą linię 50.

    Edit: Jakieś optymalizacje wersji 2:
    5 GRAPHICS 8+16: COLOR 1
    10 X=128: Y=88: K=2: W=319: H=191
    20 P=INT(RND(0)*4)+1
    30 IF P=1 THEN X=X+K: IF X>W THEN X=INT(RND(0)*W)+1
    35 IF P=2 THEN X=X-K: IF X<0 THEN X=INT(RND(0)*W)+1
    40 IF P=3 THEN Y=Y+K: IF Y>H THEN Y=INT(RND(0)*H)+1
    45 IF P=4 THEN Y=Y-K: IF Y<0 THEN Y=INT(RND(0)*H)+1
    60 PLOT X,Y: GOTO 20
    • 12:
       
      CommentAuthorKaz
    • CommentTime25 Feb 2021
     
    I ile procent szybsze? Ktoś zmierzył? :)
    • 13:
       
      CommentAuthorbocianu
    • CommentTime25 Feb 2021 zmieniony
     
    zoptymalizowałem jeszcze bardziej :D

    program map;
    uses fastgraph;

    const
    K = 2;
    W = 319;
    H = 191;

    var
    x: smallInt = 128;
    y: smallInt = 88;
    p: byte;

    begin
    Randomize;
    InitGraph(8 + 16);
    SetColor(1);
    repeat
    p := Random(4) + 1;
    case p of
    1: x := x + K;
    2: x := x - K;
    3: y := y + K;
    4: y := y - K;
    end;
    if (x < 0) or (x > W) then x := Random(W);
    if (y < 0) or (y > H) then y := Random(H);
    PutPixel(x, y);
    until false;
    end.
    • 14:
       
      CommentAuthorKaz
    • CommentTime25 Feb 2021
     
    O! A przy okazji piękny przykład, jak program w Atari Basic przenieść do MadPascal. Dzięki Bocianu.

    PS. I to nieźle zaiwania! :D
    • 15:
       
      CommentAuthorbocianu
    • CommentTime25 Feb 2021
     
    zmieniłem bibliotekę graph na fastgraph i zaiwania jeszcze szybciej ;)
    • 16:
       
      CommentAuthorsun
    • CommentTime25 Feb 2021
     
    Ja zmienię na CUDA i zobaczymy ;)
    • 17:
       
      CommentAuthorKaz
    • CommentTime25 Feb 2021
     
    CUDA to jakaś nowa biblioteka?
    • 18: CommentAuthorpin
    • CommentTime25 Feb 2021
     
    ... aaa, ja sobie to tak rozpisałem. TBXL:

    10 K=%2:W=319:H=191:GRAPHICS 8+16:COLOR %1
    20 DO
    30 P=RAND(4)+%1
    40 ON P GOSUB 60,70,80,90
    50 GO# NXT
    60 X=X+K:RETURN
    70 X=X-K:RETURN
    80 Y=Y+K:RETURN
    90 Y=Y-K:RETURN
    100 # NXT
    110 IF X<0 OR X>W THEN X=RAND(W)
    120 IF Y<0 OR Y>H THEN Y=RAND(H)
    130 PLOT X,Y
    140 LOOP

    • 19: CommentAuthorpin
    • CommentTime25 Feb 2021
     
    wersja dla VBXE i sterownika S2: dla Sparta DOS X. Rozdzielczość 640x192, 16 kolorów.

    10 K=%2:W=619:H=191:OPEN #6,12,4,"S2:":C=%1
    20 DO
    30 P=RAND(4)+%1
    40 ON P GOSUB 60,70,80,90
    50 GO# NXT
    60 X=X+K:RETURN
    70 X=X-K:RETURN
    80 Y=Y+K:RETURN
    90 Y=Y-K:RETURN
    100 # NXT
    110 IF X<0 OR X>W THEN X=RAND(W):C=C+%1
    120 IF Y<0 OR Y>H THEN Y=RAND(H):C=C+%1
    125 IF C>254 THEN C=%1
    130 COLOR C:PLOT X,Y
    140 LOOP
    • 20:
       
      CommentAuthorKaz
    • CommentTime25 Feb 2021
     
    Pinek, dawaj filmik z tego! W 16 kolorach na VBXE nie widziałem.
    • 21: CommentAuthorpin
    • CommentTime25 Feb 2021
     
    w nocy może wrzucę. 320x192/256 i 640x192/16
    • 22: CommentAuthorpin
    • CommentTime25 Feb 2021
     
    ... z tym, że widzę że moja "interpretacja" rysuje to inaczej. Chwila.
    • 23: CommentAuthorpin
    • CommentTime25 Feb 2021 zmieniony
     
    Nie wiem, coś ten "random" jest tendencyjny ;)

    • 24:
       
      CommentAuthorKaz
    • CommentTime26 Feb 2021
     
    Bomba, wyszło jak demo :)
    • 25: CommentAuthorpin
    • CommentTime26 Feb 2021
     
    Sorry, coś mnie zamroczyło z tym #L1 :))
    • 26:
       
      CommentAuthorsun
    • CommentTime26 Feb 2021
     
    prócz vbxe zapewne całość goni Rapidus :)
    • 27: CommentAuthorpin
    • CommentTime26 Feb 2021
     
    Zapewne i albowiem :)
    • 28: CommentAuthorpin
    • CommentTime26 Feb 2021
     
    kurła, myślałem że to może ten RAND z TBXL daje tu popalić, ale te moje wypociny z RND zachowują się dokładnie tak samo.
    • 29: CommentAuthorpin
    • CommentTime26 Feb 2021
     
    zmieniłem oczywiście konstrukcję ON/GOSUB na EXEC, z dziwnych rzeczy nie działa EXIT#etykieta.
    • 30: CommentAuthorpin
    • CommentTime26 Feb 2021
     
    10 # L1:CLOSE :K=%2:W=619:H=191:OPEN #6,12,4,"S2:":C=%1
    20 DO
    30 P=INT(RND(0)*4)+%1
    40 ON P EXEC X1,X2,Y1,Y2
    50 GO# NXT
    60 PROC X1:X=X+K:ENDPROC
    70 PROC X2:X=X-K:ENDPROC
    80 PROC Y1:Y=Y+K:ENDPROC
    90 PROC Y2:Y=Y-K:ENDPROC
    100 # NXT
    110 IF X<0 OR X>W THEN X=INT(RND(0)*W):C=C+%1:K=RAND(8)+%1
    120 IF Y<0 OR Y>H THEN Y=INT(RND(0)*H):C=C+%1:K=RAND(8)+%1
    125 IF C>254 THEN EXIT
    130 COLOR C:PLOT X,Y
    140 LOOP
    150 POKE 77,%0:GO# L1
    • 31: CommentAuthorpin
    • CommentTime26 Feb 2021
     
    Reasumując ciekawostka: RAND/RND pod TBXL głupieje przy 20Mhz, w programach pisanych w MP jest ok.
    • 32: CommentAuthorpin
    • CommentTime26 Feb 2021 zmieniony
     
    • 33: CommentAuthorpin
    • CommentTime26 Feb 2021
     
    ehhh, to dodawanie plików to niezła masakra.
    • 34:
       
      CommentAuthorjhusak
    • CommentTime26 Feb 2021
     
    @Pin, nie narzekaj, i tak nikt nie zmieni :)
    • 35: CommentAuthorpin
    • CommentTime26 Feb 2021
     
    wystarczy wystarczająco długo narzekać ;)
    • 36:
       
      CommentAuthorbocianu
    • CommentTime27 Feb 2021 zmieniony
     
    jak już lecimy z offtopikiem z mapą, to zrobiłem też wersję kolorową w trybie 15

    program map;
    uses graph;

    const
    K = 1;
    W = 159;
    H = 191;

    var
    x: smallInt = 79;
    y: smallInt = 95;
    p: byte;

    procedure rndColor;
    begin
    SetColor(Random(4));
    end;

    begin
    Randomize;
    InitGraph(15 + 16);
    poke(708,$b4);
    poke(709,$c8);
    poke(710,$da);
    poke(712,$84);

    rndColor;
    repeat
    p := Random(4) + 1;
    case p of
    1: x := x + K;
    2: x := x - K;
    3: y := y + K;
    4: y := y - K;
    end;
    if (x < 0) or (x > W) then begin
    x := Random(W);
    rndColor;
    end;
    if (y < 0) or (y > H) then begin
    y := Random(H);
    rndColor;
    end;
    PutPixel(x, y);
    until false;
    end.
    • 37:
       
      CommentAuthorKaz
    • CommentTime27 Feb 2021 zmieniony
     
    Bocianu - fajne cacko. A jak się wystarczająco długo poczeka, to włącza się tryb przyciągania uwagi i są nowe wersje kolorystyczne :)

    Pin:

    ehhh, to dodawanie plików to niezła masakra.


    Pinek - naucz się dodawać obrazki to nie bedziesz masakrowany :)
    Proszę bardzo, wstawione (nota bene - świetny efekt Ci wyszedł):
    • 38: CommentAuthorpin
    • CommentTime27 Feb 2021 zmieniony
     
    Poprawki spowalniające program na Rapidusie, przy @20Mhz "głupieje" RAND. Teraz rysuje dobrze. Wersja VBXE, 320x192.

    • 39:
       
      CommentAuthorKaz
    • CommentTime27 Feb 2021
     
    Piękne wzorki... Faktycznie, coś zostawia dużo wolnego z prawej i z dołu, ale ma to swój urok i odmienność.
    • 40: CommentAuthorpin
    • CommentTime27 Feb 2021
     
    z tym, to bywa różnie. Akurat jak to nagrywałem to tak jakoś bardziej w lewo poszło.
    • 41: CommentAuthormono
    • CommentTime27 Feb 2021 zmieniony
     
    @bocianu: No piękne. Ciekawe jak wygląda w 5-ciokolorowym :) Albo w 9-cio...

    @pin: Draco ze 2 lata temu opisywał tą sytuację. Przy robieniu RND jeden po drugim Rapidus czyta RANDOM przed upływem 8 taktów zegara 1.77 MHz, co skutkuje mocnym skorelowaniem "wylosowanych" wartości. Poprawiał to na pewno w U-BASIC-u, ale stare programy typu TBXL, czy inne programy nie uruchamiane z cartridge'a będą pod ten przypadek podpadać. Nie mogę znaleźć tego wątku :(

    Edit 2: Zbyti podrzucił linka: ->link<-
    • 42:
       
      CommentAuthorKaz
    • CommentTime28 Feb 2021 zmieniony
     
    No i jeszcze AtariFan podrzucił mi "Mapę" w wersji dla języka Action!

    ;generator mapy, AtariFan, 210227

    BYTE
    X,Y,K,R,
    KEY =$02FC,
    COLPF0S =$02C4,
    COLPF1S =$02C5,
    COLPF2S =$02C6

    PROC MAIN()
    GRAPHICS(31)
    COLOR=1
    COLPF0S=$B4
    COLPF1S=$C8
    COLPF2S=$DA
    K=2
    X=79 Y=95
    KEY=255

    WHILE KEY=255
    DO
    R=RAND(5)
    IF R=1 THEN X==-K FI
    IF R=2 THEN X==+K FI
    IF R=3 THEN Y==-K FI
    IF R=4 THEN Y==+K FI
    IF X<0 OR X>159 THEN
    X=RAND(159) COLOR=RAND(4) FI
    IF Y<0 OR Y>191 THEN
    Y=RAND(191) COLOR=RAND(4) FI
    PLOT(X,Y)
    OD
    RETURN


    A Sun podrzucił lepszej jakości oryginał z ZX Spectrum, oczywiście z reedycji:
    • 43: CommentAuthormono
    • CommentTime28 Feb 2021
     
    @pin: Zbyti podrzucił mi linka właśnie do dracowego posta: ->link<-
    • 44:
       
      CommentAuthorKaz
    • CommentTime28 Feb 2021 zmieniony
     
    AtariFan podrzucił Action! skompilowany do xex:
    • 45: CommentAuthorpin
    • CommentTime28 Feb 2021
     
    Fast Basic mnie intryguje, spróbuję w najbliższym czasie ;)
    • 46:
       
      CommentAuthorbocianu
    • CommentTime28 Feb 2021 zmieniony
     
    Ciekawe jak wygląda w 5-ciokolorowym :) Albo w 9-cio...


    w 9cio wygląda tak:
    program map;
    uses atari, graph, gr10pp;

    const
    K = 1;
    W = 79;
    H = 69;
    DISPLAY_LIST_ADDRESS = $5000;
    var
    x: smallInt = 39;
    y: smallInt = 34;
    p: byte;

    procedure rndColor;
    begin
    SetColor(Random(9));
    end;

    begin
    Randomize;
    InitGraph(10);
    Gr10Init(DISPLAY_LIST_ADDRESS, savmsc, H + 1, 3, 2);
    pcolr0 := $84; // background
    pcolr3 := $a4;
    pcolr1 := $b6;
    color2 := $c8;
    pcolr2 := $da;
    color1 := $ec;
    color0 := $fa;
    color4 := $18;
    color3 := $26;

    rndColor;
    repeat
    p := Random(4) + 1;
    case p of
    1: x := x + K;
    2: x := x - K;
    3: y := y + K;
    4: y := y - K;
    end;
    if (x < 0) or (x > W) then begin
    x := Random(W);
    rndColor;
    end;
    if (y < 0) or (y > H) then begin
    y := Random(H);
    rndColor;
    end;
    PutPixel(x, y);
    until false;
    end.


    nietypowa rozdzielczość 80x70 px :D
    • 47: CommentAuthorpin
    • CommentTime1 Mar 2021
     
    Dobra zabawa się z tego zrobiła :)
    • 48:
       
      CommentAuthorKaz
    • CommentTime1 Mar 2021 zmieniony
     
    Przedwczoraj jeszcze Mono przygotował trzy listingi, do GR.9, GR.10 i GR.11, które oglądaliśmy na zoomie. Oto one:

    5 GRAPHICS 9
    10 C=8: X=64: Y=88: K=1: W=79: H=191: N=15
    20 COLOR C: PLOT X,Y: P=INT(RND(0)*4)+1: ON P GOTO 30,40,50,60
    30 X=X+K: IF X>W THEN X=INT(RND(0)*W)+1: C=INT(RND(0)*N)+1
    35 GOTO 20
    40 X=X-K: IF X<0 THEN X=INT(RND(0)*W)+1: C=INT(RND(0)*N)+1
    45 GOTO 20
    50 Y=Y+K: IF Y>H THEN Y=INT(RND(0)*H)+1: C=INT(RND(0)*N)+1
    55 GOTO 20
    60 Y=Y-K: IF Y<0 THEN Y=INT(RND(0)*H)+1: C=INT(RND(0)*N)+1
    65 GOTO 20


    5 GRAPHICS 10: SETCOLOR 4,1,4: POKE 704,16*0+0: POKE 705,16*7+8: POKE 706,16*11+10: POKE 707,16*14+4
    10 C=1: X=64: Y=88: K=1: W=79: H=191: N=8
    20 COLOR C: PLOT X,Y: P=INT(RND(0)*4)+1: ON P GOTO 30,40,50,60
    30 X=X+K: IF X>W THEN X=INT(RND(0)*W)+1: C=INT(RND(0)*N)
    35 GOTO 20
    40 X=X-K: IF X<0 THEN X=INT(RND(0)*W)+1: C=INT(RND(0)*N)
    45 GOTO 20
    50 Y=Y+K: IF Y>H THEN Y=INT(RND(0)*H)+1: C=INT(RND(0)*N)
    55 GOTO 20
    60 Y=Y-K: IF Y<0 THEN Y=INT(RND(0)*H)+1: C=INT(RND(0)*N)
    65 GOTO 20


    5 GRAPHICS 11
    10 C=1: X=64: Y=88: K=1: W=79: H=191: N=16
    20 COLOR C: PLOT X,Y: P=INT(RND(0)*4)+1: ON P GOTO 30,40,50,60
    30 X=X+K: IF X>W THEN X=INT(RND(0)*W)+1: C=INT(RND(0)*N)
    35 GOTO 20
    40 X=X-K: IF X<0 THEN X=INT(RND(0)*W)+1: C=INT(RND(0)*N)
    45 GOTO 20
    50 Y=Y+K: IF Y>H THEN Y=INT(RND(0)*H)+1: C=INT(RND(0)*N)
    55 GOTO 20
    60 Y=Y-K: IF Y<0 THEN Y=INT(RND(0)*H)+1: C=INT(RND(0)*N)
    65 GOTO 20
    • 49:
       
      CommentAuthorsun
    • CommentTime1 Mar 2021
     
    Wystarczająco ładne bez Vbxe :)
    • 50: CommentAuthormono
    • CommentTime1 Mar 2021
     
    @bocianu: Piękne! A skąd Ci się wzięło 70?