Tajemnice ATARI

5 Linii

    Kolejną porcję pięciolinijkowców rozpoczynamy od programu muzycznego autorstwa Adriana Ziętkiewicza z Poznania, którego inny program gościł już kiedyś w tej rubryce. Program ten wygrywa melodyjkę bez ingerencji Basica, umożliwiając w tym samym czasie wykonywanie dowolnych operacji w Basicu, jak np. pisanie programów, ich uruchamianie, sprawdzanie itp. Wygrywana przez ten program muzyczka może również służyć jako podkład muzyczny do gier w Basicu. Aby zatrzymać wygrywanie melodii należy wpisać POKE 538,0: POKE 53760,0, jeżeli zaś chcemy ją ponownie uruchomić od miejsca, w którym została zatrzymana, to musimy wpisać POKE 538,1, a od początku POKE 203,0. Program główny umieszczony jest w wierszach 1-3. Wiersze 4-6 to dane dla muzyczki, które oczywiście można zmieniać. Pierwsza wartość, to wysokość nuty według wzoru: C - 243, C# - 230, D - 217, D# - 204, E - 193, F - 182, F# - 173, G - 162, G# - 153, A - 144, A# - 136, B - 128, C' - 121, C'# - 114, D' - 108, D'# - 102, E' - 96, F' - 91, F'# - 85, G' - 81, G'# - 76, A' - 72, D'# - 68, B' - 64, C'' - 60, C''# - 57, D'' - 53, D''#60, E'' - 47, F'' - 45, F''# - 42, G'' - 40, G''# - 37, A'' - 35, A''# - 33, B'' - 31, C''' - 29. Wartość druga, to czas trwania nuty mierzona w 1/50 sekundy. Na końcu programu (za danymi dla melodii) należy umieścić daną -1, aby poinformować komputer, że to już koniec.
1 Q=1536:DATA 169,239,141,1,210,169,43
,141,40,2,166,203,189,57,6,208,12,189,
58,6,208,7,169,0,133,203,76,0,6,141,0
2 READ A:IF A=-1 THEN POKE Q,0:POKE Q+
1,0:POKE 553,6:POKE 552,0:POKE 203,0:P
OKE 538,1:END 
3 POKE Q,A:Q=Q+1:GOTO 2:DATA 210,189,5
8,6,141,26,2,232,232,134,203,96,169,0,
141,40,2,141,0,210,169,1,141,26,2,96
4 DATA 81,10,81,10,81,20,81,10,64,10,5
3,20,60,10,64,10,72,20,81,20,1,20,53,1
0,53,10,53,20,64,10,53,10,40,20
5 DATA 47,10,53,10,60,10,64,10,72,10,7
2,10,72,20,60,10,53,10,47,20,53,10,60,
10,64,10,72,10,81,10,81,10,81,20
6 DATA 81,10,64,10,53,20,60,10,64,10,7
2,20,81,20,1,20,-1
   Następny program, to Monitorek, napisany przez Adama Segerta z Piekar Śląskich. Jest to miniaturowy monitor pamięci, całkiem nieźle spełniający powierzone mu zadanie. Po podaniu adresu początkowego dla listowania pamięci wydruk podaje kolejno od lewej: adres komórki pamięci; wartość tej komórki; ustawienie bitów w kolejności bit 7,6,5,...,0, gdzie 1 oznacza bit ustawiony, a 0 bit zgaszony; słowo (dwubajtową wartość) zawarte w komórce o podanym adresie i następnej według wzoru 256*((komórka+1)]+(komórka), gdzie (komórka) oznacza zawartość pamięci o adresie komórka; znak ASCII odpowiadający wartości wpisanej do danej komórki, znak Return drukowany jest jako symbol "serca" - kod 0. W dowolnym momencie możemy nacisnąć klawisz ESC i wpisać nową wartość do danej komórki. Ze względu na dość dużą prędkość wydruku można sobie pomóc używając kombinacji klawiszy CONTROL+1. Te zaledwie 4 wiersze mogą być bardzo pomocne w czasie pisania programów. Eliminują bowiem żmudne wpisywanie ? PEEK, sprawdzanie bitów czy adresów przerwań.
1 TRAP 1:? CHR$(125);"OD ADRESU";:INPU
T A:A=INT(A):POKE 766,1:? 
2 B=PEEK(A):E=A:C=B:D=(B<>155)*B:? A;"
.<";B;">.<";:FOR I=128 TO 1 STEP -1:? 
(B>=I);:IF B>=I THEN B=B-I
3 I=I/2:NEXT I:A=A+1:A=A*(A<65536):? "
>.=";PEEK(A)*256+C;" .";CHR$(D);:IF PE
EK(764)<>28 THEN ? :GOTO 2
4 POKE 764,255:POKE 766,0:? ".";:INPUT
 L:POKE E,L:POKE 766,1:GOTO 2
    Ostatni (na dziś) pięciolinijkowiec nadesłał Robert Cherek z Gdańska. Jest to gra STRZAŁ. Zadaniem grającego jest ustawienie celownika pod takim kątem, by pocisk rysujący krzywą balistyczną trafił w cel. Współrzędne toru lotu pocisku są ustalane w odstępach czasowych co P=0.3 s., przy prędkości początkowej V=110 m/s i danym kącie strzału K. Współrzędna pionowa: X=V*T*cos(K); gdzie T - czas. Współrzędna pozioma: Y=V*T*sin(K)-1/2gT^2; gdzie g=9.8 m/s^2. Jednocześnie jest to niezły przykład do artykułu o programowaniu strukturalnym Turbo Basica XL Bowiem bez użycia konstrukcji strukturalnej program ten byłby znacznie dłuższy.
1 # START:GRAPHICS 8:POKE 710,%0:COLOR %1:V=1
10:P=0.3:DEG :XP=RND*319:PLOT XP,159:DRAWTO X
P-4,159
2 # STRZAL:XT=%0:YT=159:T=%0:TRAP #STRZAL:INP
UT "PODAJ KAT:";K:IF K=%0 THEN GO# START
3 REPEAT :T=T+P:EXEC OBLICZENIA:PLOT XT,YT:DR
AWTO X,Y:XT=X:YT=Y:UNTIL Y>159
4 IF X>=XP-4 AND X<=XP:? "WCELOWALES":GET KEY
:GO# START:ELSE :? "PUDLO":GET KEY:GO# STRZAL
:ENDIF 
5 PROC OBLICZENIA:X=(V*COS(K)*T)/4:Y=159-((V*
SIN(K)*T-(9.8*T*T)/%2)/4):ENDPROC 

   Wszystkich Czytelników naszego pisma zachęcamy do przysyłania programów do rubryki 5 LINII. Za każdy zamieszczony tutaj program autor otrzymuje 100.000 zł.




Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001