Tajemnice ATARI

POCZTA PROGRAMISTY

Ponieważ wiele (ale nie tak wiele jak byśmy chcieli) programów otrzymywanych od Czytelników nie spełnia wymogów formalnych stawianych programom drukowanym w rubrykach 5 LINII i 6 STRONA, a warte są publikacji, inaugurujemy rubrykę, w której zamierzamy przedstawiać najciekawsze z nich.

1. KODOWANIE PROGRAMU - autor Marcin Cenkier z Leszna.

Program "koduje" programy w Basicu. Przekodowany program nagrywany jest na dyskietkę (lub kasetę) skąd można go odczytać dowolnym edytorem tekstów (np. E z poprzedniego numeru TA) i przesiać do drukarki. Na wydruku otrzymamy listing z kodami kontrolnymi. Program ten polecamy Czytelnikom, którzy przysyłają nam programy w formie wydruków. Dołączenie do nich kodów kontrolnych znacznie ułatwia przepisywanie ich i praktycznie uniemożliwia pomyłkę. Wersja programu przedstawiona na listingu została nieco zmieniona w redakcji, głównie pod kątem współpracy z różnymi pamięciami zewnętrznymi. Po uruchomieniu należy podać jaki plik ma zostać przetworzony. W przypadku używania magnetofonu piszemy C:, zaś w przypadku posiadania napędu dyskietek D:NAZWA. UWAGA! Plik do którego chcemy dołączyć kody kontrolne musi być uprzednio nagrany instrukcją LIST"C:" lub LIST"D:NAZWA" Analogicznie, jak w przypadku wczytywania, wygląda sprawa późniejszego nagrywania programu (już jako pliku tekstowego!).
10 REM KODOWANIE PROGRAM
12 REM Marcin Cynkier
14 REM (c) 1991 Tajemnice Atari
16 CLR 
18 DIM W$(150),PROG$(13000),Z$(1),NAZ$(20)
20 N=0:TRAP 72
21 ? "Z JAKIEGO PLIKU";
22 GOSUB 1000:OPEN #1,4,0,NAZ$
24 X=1
26 ? CHR$(125)
28 GET #1,Z:N=N+1:C=155:Z$=CHR$(Z)
30 IF Z<>C THEN W$(N,N)=Z$:GOTO 28
32 N=N-1
34 IF W$(N,N)=" " THEN N=N-1:GOTO 34
36 C=0:ODP=C
38 POSITION 2,16
40 FOR D=1 TO N
42 C=C+1:ODP=ODP+(C*ASC(W$(D,D)))
44 NEXT D
46 KOD=INT(ODP/676)
48 KOD=ODP-KOD*676
50 KODS=INT(KOD/26)
52 KODM=KOD-(KODS*26)+193
54 KODS=KODS+193
56 KODM=KODM-128
58 KODS=KODS-128
60 PROG$(X)=CHR$(KODS)
62 PROG$(X+1)=CHR$(KODM)
64 PROG$(X+2)="  "
66 PROG$(X+4)=W$(1,N)
68 X=X+N+5:PROG$(X-1)=CHR$(155)
70 N=0:GOTO 26
72 ? "NA PLIK";
74 GOSUB 1000:OPEN #1,8,128,NAZ$
76 FOR C=1 TO X-1
78 PUT #1,ASC(PROG$(C,C))
80 NEXT C:END 
1000 REM PROCEDURA NAZWA PLIKU
1010 CLOSE #1:INPUT NAZ$
1020 RETURN 


2. ZEGAR - również autorstwa Marcina Cenkiera

Program ten nie wymaga właściwie dodatkowego opisu. Napisany został w Turbo Basicu XL. Po jego uruchomieniu pyta o czas, który należy wprowadzić w formacie ggmmss.
100 REM ZEGAR
110 REM Marcin Cenkier
120 REM (c) Tajemnice Atari
130 DIM A$(6),B$(6)
140 TRAP 170:? CHR$(125):? "Podaj czas:";
150 INPUT #16;A$:TIME$= A$
160 REM PLANSZA
170 GRAPHICS 8+16:COLOR 1:DEG 
180 X=160:Y=96:R=80:P=4:PLOT X+R,Y
190 FOR I=0 TO 360 STEP 12
200   DRAWTO COS(I)*R+X,SIN(I)*R+Y
210 NEXT I:R=70:G=2:P=4
220 FOR I=0 TO 360 STEP 30:G=G+1
230   IF G=13 THEN G=1
240   Q=LEN(STR$(G))*4
250   TEXT COS(I)*R+X-Q,SIN(I)*R+Y-P,G
260 NEXT I
270 REM OBLICZENIA
280 A$=TIME$:A$(5,6)="  "
290 B$=A$:GOTO 330
300 A$=TIME$:A$(5,6)="  "
310 IF A$<>B$ THEN 330
320 GOTO 510
330 R=55:S=VAL(A$(3,4))
340 S1=S-1+((S<1)*60)
350 I=(S1>15)*(S1-15)*6
360 I=I+(S1<15)*(270+S1*6):GOSUB 570
370 I=(S>15)*(S-15)*6
380 I=I+(S<15)*(270+S*6)
390 GOSUB 540
400 A$=TIME$:R=40:A$(5,6)="  "
410 I=(G>3)*(G-3)*30
420 I=I+(G<3)*(270+G*30)+(30/60*S1)
430 GOSUB 570
440 G=VAL(A$(1,2))
450 I=(G>3)*(G-3)*30
460 I=I+(G<3)*(270+G*30)+(30/60*S1)
470 GOSUB 570
480 I=(G>3)*(G-3)*30
490 I=I+(G<3)*(270+G*30)+(30/60*S)
500 GOSUB 540
510 TEXT X-24,Y+10,TIME$:B$=A$
520 GOTO 300
530 REM RYSOWANIE WSKAZOWEK
540 COLOR 1:PLOT X,Y
550 DRAWTO COS(I)*R+X,SIN(I)*R+Y
560 RETURN 
570 COLOR 0:PLOT X,Y
580 DRAWTO COS(I)*R+X,SIN(I)*R+Y
590 RETURN 



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

Pixel 2001