Tajemnice ATARI

PROCENTY


    Otrzymałem kiedyś do oceny program. Po jego uruchomieniu na ekranie ukazało się "Please wait", co w wolnym tłumaczeniu oznacza "Proszę czekać". Poczekałem więc nieco, ale nic się nie wydarzyło. Poczekałem jeszcze trochę, bez efektu. Wreszcie, po pięciu minutach, uznałem, że program się zawiesił, przeto z westchnieniem zawodu wyłączyłem komputer.

   Jakiś czas później okazało się, że program ten rozpoczynał normalne działanie po pięciu minutach i dziesięciu sekundach. Po tym pouczającym doświadczeniu przyjęło się nazywać pewien gatunek programów programami typu "please wait" (czytane fonetycznie po polsku).

    Typowy przedstawiciel tego gatunku przepisuje generator znakówz pamięci ROM do RAM dla uzyskania pewnych ciekawych efektów:

10 CHB1=57344:CHB2=38912:N=1023
20 CHBA=756:POKE 752,1:LIST
30 FOR I=0 TO N
40 POKE CHB2+I,PEEK(CHB1+I)*Z:Z=1-Z
50 NEXT I:POKE CHBA,CHB2/256
60 POKE 752,0:END
   Aby przekonać użytkownika, że program żyje i czyni w swej pracy postępy, proponuje dopisać wywołanie procedury informującej o stopniu zaawansowania prac:

35 GOSUB 100

   Poniższa procedura służy jako taki własnie wskaźnik wykonania pracochłonnej pętli w programie. Zakłada ona, że zmienną licznikową jest I (z wartościa początkową O lub 1), N zawiera wartośc końcowa, zaś K i Q$nie są używane w głównym programie.
100 ON K<>0 GOTO 130:DIM Q$(50):?
110 Q$="o":Q$(50)="":Q$(2)=Q$
120 Q$(25,25)=".":Q$(26)=Q$(25)
130 ? INT(I/N*100);"%  ";CHR$(28)
140 K=25-INT(24*I/N)
150 ? CHR$(127);Q$(K,K+24-1);CHR$(28)
160 RETURN

   Teraz oczywiście program wykonuje się nieco wolniej, ale przynajmniej widać, na co da śię wykorzystać czas oczekiwania: na ziewnięcie, na obiad, czy może na dłużsy spacer? Jeżeli pętla w programie (jak w tym) wykonuje się setki lub tysiące razy, wystarczy zwykle wywoływać procedurę co któryś raz, np.
35 P=P+1:IF P>15 THEN P=0:GOSUB 100


Janusz B. Wiśniewski

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

Pixel 2001