5 Linii1 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,-1Nastę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 2Ostatni (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ł. |