POCZTA PROGRAMISTY1. 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 |