Autor Wątek: 10 PRINT  (Przeczytany 7427 razy)

tsulej

  • *
  • Wiadomości: 25
  • Miejsce pobytu:
    Warszawa
10 PRINT
« dnia: 2012.12.05, 10:08:12 »
http://trope-tank.mit.edu/10_PRINT_121114.pdf

A dokładniej: 10 PRINT CHR$ (205.5 + RND (1)); : GOTO 10

Jest to książka o 324(sic!) stronach napisana na MIT na temat powyższego jednolinijkowca wziętego z instrukcji do Commodore64. Z opisu wynika że książka traktuje o tym jak ta linijka wpłynęła na nasze (ludzkości?) myślenie o kodzie i kulturze.
Wyjątek z artykułu: http://www.slate.com/articles/technology/books/2012/11/computer_programming_10_print_chr_205_5_rnd_1_goto_10_from_mit_press_reviewed.html

Cytuj
The book, which has also been released for free download under a Creative Commons license, unspools 10 PRINT’s strange history and dense web of cultural connections, winding its way through the histories of mazes and labyrinths, grids in modern art, minimalist music and dance, randomness, repetition, textiles, screensavers, and Greek mythology. There are forays into early computer graphics, hacking, Cold War military strategy and Pac-Man. References abound, from the Commodore 64 user’s manual to Roland Barthes’ S/Z. This is a book where Dungeons and Dragons and Abstract Expressionism get equal consideration.

Książkę przejrzałem, mimo że wygląda ciekawie to nie wiem czy przebrnę.  :)

Pytanie, które rodzi się na dzień dobry. Czy są takie jednolinijkowce w BASICU na Spectrum? (Przez "takie" rozumiem krótkie programy o ciekawych efektach)

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: 10 PRINT
« Odpowiedź #1 dnia: 2012.12.05, 11:10:53 »
Co za historia!

Na Spectrum (bez takiej historii w tle!):

10 PLOT 130,5: DRAW 0,160,788
lub
10 PLOT 130,5: DRAW 0,160,525
lub
10 PLOT 130,5: DRAW 0,160,399
itd.

andy

  • *****
  • Wiadomości: 1068
  • Miejsce pobytu:
    Kielce Wsch.
Odp: 10 PRINT
« Odpowiedź #2 dnia: 2012.12.05, 16:49:17 »
A dokładniej: 10 PRINT CHR$ (205.5 + RND (1)); : GOTO 10

RND(1) to nie na Speccy ;)

Takie coś:
10 PRINT CHR$ (205.5 + RND); : GOTO 10
wypisuje w kółko DEF FN
pzdr
a.
POKE 35899,0  ZX 81, ZX Spectrum +, +2, Harlequin, ZX Max 48 & 128, Spider 48, Chrome 128, TC 2048, divIDE, CPC 464

tsulej

  • *
  • Wiadomości: 25
  • Miejsce pobytu:
    Warszawa
Odp: 10 PRINT
« Odpowiedź #3 dnia: 2012.12.05, 17:15:49 »
Napisałem, że to na Commodore 64 :)

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: 10 PRINT
« Odpowiedź #4 dnia: 2012.12.05, 17:55:50 »
Na Spectrum linia wyglądałaby tak:

10 PRINT CHR$(128+RND*15);: GOTO 10

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: 10 PRINT
« Odpowiedź #5 dnia: 2012.12.05, 20:03:42 »
Hmmm, okazuje się że nie o to chodziło.

Według książki wersja/port na Spectrum wygląda tak:

10 PRINT CHR$(47+INT(RND*2)*45);: GOTO 10

Nie wygląda to tak ładnie jak na Commodore (ani linia, ani efekt), więc wymyśliłem taki krótki programik definiujący dłuższe kreski:

100 FOR a=0 TO 7
110 POKE a+USR "a", 2^a
120 POKE a+USR "b", 2^(7-a)
130 NEXT a

a teraz: 10 PRINT CHR$ INT (144.5+RND);: GOTO 10
« Ostatnia zmiana: 2012.12.05, 20:11:30 wysłana przez Phonex »

tsulej

  • *
  • Wiadomości: 25
  • Miejsce pobytu:
    Warszawa
Odp: 10 PRINT
« Odpowiedź #6 dnia: 2012.12.06, 00:25:19 »
Ekstra. Wariacje na temat:

Niestety nie labirynt.
10 PRINT CHR$(134+INT(RND*2)*3);: GO TO 10

lub coś dłuższego
10 LET C=17-PEEK 23688: LET L=14-PEEK 23689: PRINT CHR$ (128+INT (4+4*SIN((PI*L/10)*(PI*C/15))));: GO TO 10

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Odp: 10 PRINT
« Odpowiedź #7 dnia: 2012.12.06, 09:51:33 »
@Phonex A jak się zrobi tak:

10 PAPER 1: BORDER 1: INK 7: CLS: FOR i=0 TO 7 : POKE USR "a"+i,INT (3*2^(i-1))): POKE USR "b"+i,INT (3*(2^(6-i))): NEXT i
20 POKE 23692,255: PRINT CHR$(143.5+(RND*2));: GO TO 20

To zaczyna wyglądać prawie identycznie jak na C64 ;)

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: 10 PRINT
« Odpowiedź #8 dnia: 2012.12.06, 11:05:53 »
@Phonex A jak się zrobi tak:

10 PAPER 1: BORDER 1: INK 7: CLS: FOR i=0 TO 7 : POKE USR "a"+i,INT (3*2^(i-1))): POKE USR "b"+i,INT (3*(2^(6-i))): NEXT i
20 POKE 23692,255: PRINT CHR$(143.5+(RND*2));: GO TO 20

To zaczyna wyglądać prawie identycznie jak na C64 ;)

 :D

A jeszcze ładniej wygląda, jak się zrobi tak:

1 FOR a=0 TO 7
2 POKE a+USR "a", 3*2^(a-1)-NOT a
3 POKE a+USR "b", 3*2^(6-a)-NOT a-7
4 NEXT a

10 PRINT CHR$ INT (144.5+RND);: GOTO 10

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4540
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: 10 PRINT
« Odpowiedź #9 dnia: 2012.12.06, 11:47:23 »
No to macie już prawie gotowe intro na JH Con.   Teraz tylko dodać różne ozdobniki i miejsce na podium gwarantowane ;)

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Odp: 10 PRINT
« Odpowiedź #10 dnia: 2012.12.06, 13:32:46 »
A bez ozdobników może być na przykład tak jak w załączniku ;)

99 bajtów relokowalnego kodu i odpalacz. Całość ruszy pod warunkiem odpalenia z normalnym ROMem Spectrum - musi widzieć procedury drukujące itp. i uznawać zmienne systemowe. I to jest zasadniczo tyle na ile mam zacięcie ;)


tsulej

  • *
  • Wiadomości: 25
  • Miejsce pobytu:
    Warszawa
Odp: 10 PRINT
« Odpowiedź #11 dnia: 2012.12.06, 14:59:58 »
Funkcja rnd jest deterministyczna, widać wyraźnie że wzór układa się w cztery kolumny :)

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Odp: 10 PRINT
« Odpowiedź #12 dnia: 2012.12.06, 15:05:49 »
W moim kodzie to nawet nie jest RND tylko zawartość ROMu ;)

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: 10 PRINT
« Odpowiedź #13 dnia: 2012.12.06, 19:41:24 »
No to macie już prawie gotowe intro na JH Con.   Teraz tylko dodać różne ozdobniki i miejsce na podium gwarantowane ;)

Serio serio?

Hmmm, mam nawet jakiś pomysł na ozdobnik, ale tylko pomysł, nie wiem czy to się da szybko napisać.
Jest jakaś nagroda?
Mało casu, kruca bomba...