Pod wpływem newsa o sterowaniu za pomocą Atari, i moich wynurzeń na temat rozkodowywania radia, otworzyła mi się w głowie klapka i z niepamięci wypłynęło kilka projekcików, które uruchomiłem na moim sprzęcie dwadzieścia lat temu: termostat do akwarium, podsłuchiwacz, miernik rezystorów, rozpoznawacz nagrań muzycznych, tester cyfrowych układów scalonych.
1. Termostat do akwarium
Wykorzystałem wejście wiosełek (A/C) do podłączenia termistora zanurzonego w akwarium. Reszta to przekaźnik podłączony przez transoptor izolujący galwanicznie sieć od komputera i prosty program w Basicu.
2. Podsłuchiwacz
W celu ułatwienia pracy na komputerze i pozbycia się delikatnego szumu z telewizora, podczas pisania programu do testowania kursantów na prawo jazdy (pisałem dwa miesiące wakacji dzień w dzień po kilka godzin), dorobiłem wzmacniacz stawiany na Atari podłączany przez DIN z tyłu komputera. Wzmacniacz był z małego rosyjskiego radyjka o nazwie Maximka (Максимка). Atari tak przerobione mogło pracować też bez telewizora i dalej miałem dźwięk. Wykorzystałem to w śmieszny sposób. Do wejścia analogowego podłączyłem mikrofon z przedwzmacniaczem, a na komputerze zapuściłem program wykorzystujący syntezator SAM. Przez kilka dni w domu było cicho „jak makiem zasiał” ponieważ po każdym głośniejszym dźwięku Atari odzywało się głośno protestując. Pamiętam nawet tekst – „Proszę o ciszę, boli mnie głowa!”
3. Miernik rezystorów
Wejście wiosełek dawało skromną, ale jednak, możliwość pomiaru rezystancji. W czasach kiedy jeszcze nie miałem miernika uniwersalnego, używałem czasem Atari do selekcji rezystorów z wytartymi oznaczeniami.
4. Rozpoznawacz utwórów muzycznych
Przez to samo wejście wprowadziłem sygnał analogowy z magnetofonu. Program w Basicu próbkował ten sygnał przez pewien czas (chyba to było 10-15 sekund) i zapisywał charakterystykę utworu w bazie wraz z jego nazwą podawaną z klawiatury. Po nauczeniu kilkunastu nagrań robiłem próby z rozpoznawaniem przez Atari puszczanego kawałka. Powiem, że byłem zaskoczony, ponieważ system DZIAŁAŁ! Fajnie było pokazać kolegom jak Atari „słucha” przez chwilę przeboju, a potem wyskakuje jego nazwa. Co ciekawe, czytałem w tym roku o podobnym patencie na telefony komórkowe. Po nagraniu kawałka utworu i przesłaniu gdzieś tam otrzymujesz zwrotnie jego nazwę. Miło wiedzieć, że byłem szybszy o jakieś 20 lat :).
5. Rozkodowywanie radia samochodowego
Sam kiedyś rozbudowałem moje 800XL o dodatkowe we/wy i rozkodowałem radio samochodowe kolegi (legalne) takim wynalazkiem. Trwało to dwa dni, prądem czasem migali, więc system zapisywał co jakiś czas postępy prac na magnetofonie. Co do schematu, to był dość prosty, do odtworzenia pewnie. Były to jakieś transoptorki podłączone do portów joysticka plus mojego dodatkowego portu joysticka (wykorzystałem nieużywane nogi PB2-PB6 z PIA). Ogólnie metoda rozkodowywania była prymitywna, ale co ciekawe skuteczna. Ponieważ radio nie blokowało się na stałe po wpisaniu błędnego kodu (chyba na kilkanaście sekund, nie pamiętam) można było zastosować metodę brute force. Podłączyłem się pod klawisze do wpisywania kodu (chyba 4 cyfry) i Atari wstukiwało pracowicie kolejne kombinacje. Wiedziałem od kolegi, że po włączeniu radia zaświecało się wszystko, łącznie z podświetleniem wyświetlacza. Zablokowane radio nie podświetlało. Co do genezy potrzeby rozkodowywania: kolega chyba po prostu nie zapisał sobie kodu i zapomniał, bo nie wyjmował radia z kieszeni. Dopiero po "padzie" akumulatora sprawa wyszła. Kontynuując... : Do jednej z żaróweczek podpiąłem się i Atari "polowało" na kod, który da "iluminację". Jak widać proste aż do bólu. Mimo tego byłem strasznie dumny z sukcesu. To w końcu moje Atari plus inwencja pokonały zabezpieczenie. A kolega jakiego respektu nabrał :-).
10 P=PEEK(54018):POKE 54018,P-4 20 POKE 54016,247 30 POKE 54018,P 40 TYS=1:SET=1:DZI=1:JED=1 50 GOSUB 1000:FOR T=1 TO 400:NEXT T 60 REM 70 FOR C=1 TO TYS:GOSUB 1010:NEXT C 80 GOSUB 1020 90 REM 100 FOR C=1 TO SET:GOSUB 1010:NEXT C 110 GOSUB 1020 120 REM 130 FOR C=1 TO DZI:GOSUB 1010:NEXT C 140 GOSUB 1020 150 REM 155 REM 160 FOR C=1 TO JED:GOSUB 1010:NEXT C 170 GOSUB 1020 180 REM 190 IF PEEK(54016)=0 THEN CZEK=CZEK+1:GOTO 200 195 CZEK=0:FOR T=1 TO 300:NEXT T:GOTO 210 200 IF CZEK>50000 THEN GOTO 10000 205 GOTO 190 210 JED=JED+1 220 IF JED=11 THEN JED=1:DZI=DZI+1 230 IF DZI=11 THEN DZI=1:SET=SET+1:POKE 764,8:OPEN #1,8,0,"C:":PUT #1,TYS:PUT #1,SET:PUT #1,DZI:PUT #1,JED:CLOSE #1 240 IF SET=11 THEN SET=1:TYS=TYS+1 250 IF TYS=11 THEN STOP 260 ? TYS;" ";SET;" ";DZI;" ";JED;" ** ";:GOTO 50 1000 POKE 54016,1:FOR T=1 TO 50:NEXT T:POKE 54016,0:RETURN 1010 POKE 54016,4:FOR T=1 TO 50:NEXT T:POKE 54016,0:FOR T=1 TO 50:NEXT T:RETURN 1020 POKE 54016,2:FOR T=1 TO 50:NEXT T:POKE 54016,0:FOR T=1 TO 150:NEXT T:RETURN 10000 ? "HURRA MAM TEN CHOLERNY KOD!!!" 10010 ? "TEN KOD TO -->";TYS;"......";SET;"......";DZI;"......";JED 10020 FOR T=1 TO 4:POKE 764,8:OPEN #1,8,0,"C:":PUT #1,TYS:PUT #1,SET:PUT #1,DZI:PUT #1,JED:CLOSE #1:NEXT T
6. Tester układów scalonych
Zgrywając program do odkodowywania radia natrafiłem na kasecie na inny mój programik w Basicu. Okazuje się, że kasety są trwalsze od dyskietek (niepowodzenie z wczytywaniem programu do testowania kierowców!), trzeba tylko sporo pokręcić głowicą w magnetofonie. Po wczytaniu i obejrzeniu zrozumiałem, do czego potrzebne mi było małe ustrojstwo, które prezentuję na fotografii poniżej. To był tester cyfrowych układów scalonych! Zupełnie zapomniałem, że coś takiego zrobiłem… Tester był używany do siedmiu typów scalaka, ale mógł z powodzeniem testować inne, wystarczyło dopisać w liniach DATA tablice prawdy. Oczywiście zasilanie musiało być na tych samych nóżkach, ale większość TTL’i wtedy tak miała. Tester używał dodatkowego portu, używającego niewykorzystane nóżki PIA, wspominałem o tym przy nowince o tokarkach.
5 POKE 54019,PEEK(54019)-4:POKE 54017,255:POKE 54019,PEEK(54019)+4:POKE 54017,129 10 DIM A$(8),B$(8),WYA$(8),WYB$(8),TA$(8),TB$(8) 20 GRAPHICS 0 30 ? "Wybierz typ scalaka :" 40 ? :? "1 - 7400,2 - 7401" 50 ? :? :INPUT NR:IF NR<1 OR NR>2 THEN 50 55 RESTORE 1000+NR*10 60 READ TA$,TB$:TA=0:TB=0 70 FOR TP=1 TO 8 80 IF TA$(TP,TP)="X" THEN 100 90 TA=TA+VAL(TA$(TP,TP))*2^(TP-1) 100 IF TB$(TP,TP)="X" THEN 120 110 TB=TB+VAL(TB$(TP,TP))*2^(TP-1) 120 NEXT TP 200 P=PEEK(54018) 210 POKE 54018,P-4 220 POKE 54016,TA 230 POKE 54018,P 240 P=PEEK(54019) 250 POKE 54019,P-4 260 POKE 54017,TB 270 POKE 54019,P 280 POKE 54017,193:REM WLACZ ZASILANIE 300 READ LT 310 FOR TEST=1 TO LT 320 READ A$,B$,WYA$,WYB$ 500 A=0:B=0:WYA=0:WYB=0 510 FOR T=1 TO 8 520 IF A$(T,T)="X" THEN 540 530 A=A+VAL(A$(T,T))*2^(T-1) 540 IF B$(T,T)="X" THEN 560 550 B=B+VAL(B$(T,T))*2^(T-1) 560 IF WYA$(T,T)="X" THEN 580 570 WYA=WYA+VAL(WYA$(T,T))*2^(T-1) 580 IF WYB$(T,T)="X" THEN 600 590 WYB=WYB+VAL(WYB$(T,T))*2^(T-1) 600 NEXT T 700 POKE 54016,A 710 POKE 54017,B 720 IF WYA=PEEK(54016) AND WYB=PEEK(54017) THEN 800 730 POKE 54016,0:POKE 54017,129 740 ? :? "SCALAK JEST BAD!!!" 750 FOR OP=1 TO 2000:NEXT OP 760 RUN 800 NEXT TEST 900 POKE 54016,0:POKE 54017,129 910 ? :? "SCALAK JEST CACY!!!!" 920 FOR OP=1 TO 2000:NEXT OP 930 RUN 1010 REM ******** 7400 ******** 1011 DATA 11011001,11101111,4 1012 DATA 00X00XX0,100X0011 1013 DATA 00100110,10010011 1014 DATA 01X01XX0,101X0111 1015 DATA 01101110,10110111 1016 DATA 10X10XX1,100X1011 1017 DATA 10110111,10011011 1018 DATA 11X11XX1,101X1111 1019 DATA 11011001,10101111
5 POKE 54019,PEEK(54019)-4:POKE 54017,255:POKE 54019,PEEK(54019)+4:POKE 54017,129 10 DIM A$(8),B$(8),WYA$(8),WYB$(8),TA$(8),TB$(8) 20 GRAPHICS 0 30 ? "Wybierz typ scalaka :" 40 ? :? " 1 - 7400, 7403, 7437, 7438 " 41 ? " 2 - 7401 " 42 ? " 3 - 7402 " 52 ? "12 - 7472 " 58 ? :? :INPUT NR:IF NR<1 OR NR>12 THEN 58 59 RESTORE 1000+NR*10 60 READ TA,TB 200 P=PEEK(54018) 210 POKE 54018,P-4 220 POKE 54016,TA 230 POKE 54018,P 240 P=PEEK(54019) 250 POKE 54019,P-4 260 POKE 54017,TB 270 POKE 54019,P 280 POKE 54017,193:REM WLACZ ZASILANIE 290 REM FOR OP=1 TO 50:NEXT OP 300 READ LT 310 FOR TEST=1 TO LT 315 ? "TEST nr ";TEST;" - "; 320 READ A,B,WYA,WYB 700 POKE 54016,A 710 POKE 54017,B 720 IF WYA=PEEK(54016) AND WYB=PEEK(54017) THEN 800 730 POKE 54016,0:POKE 54017,129 740 ? :? "SCALAK JEST BAD!!!" 750 FOR OP=1 TO 2000:NEXT OP 760 RUN 800 ? "OK" 810 NEXT TEST 900 POKE 54016,0:POKE 54017,129 910 ? :? "SCALAK JEST CACY!!!!" 920 FOR OP=1 TO 2000:NEXT OP 930 RUN 1010 REM ******** 7400 ******** 1011 DATA 155,247,4 1012 DATA 0,193,100,201 1013 DATA 18,229,118,237 1014 DATA 137,209,237,217 1015 DATA 155,245,155,245 1020 REM ******** 7401 ******** 1021 DATA 246,219,4 1022 DATA 0,193,9,229 1023 DATA 164,209,173,245 1024 DATA 82,201,91,237 1025 DATA 246,217,246,253 1030 REM ******** 7402 ******** 1031 DATA 246,219,4 1032 DATA 0,193,9,229 1033 DATA 164,209,164,209 1034 DATA 82,201,82,201 1035 DATA 246,217,246,217 1120 REM ******** 7472 ******** 1121 DATA 159,255,11 1122 DATA 0,225,32,225,2,193,66,193 1123 DATA 138,237,202,237,138,253,202,253 1124 DATA 138,237,170,237,158,233,190,233 1125 DATA 158,249,190,249,158,233,222,233 1126 DATA 158,237,222,237,158,253,222,253 1127 DATA 158,237,190,237
Załączam wszystkie posiadane źródełka dla zaspokojenia ewentualnej ciekawości. Chodzą w najzwyklejszym Atari Basic:
RADIO.BAS – rozkodowywanie radia
TTL1.BAS – tester scalaków wersja 1
TTL2.BAS – tester scalaków wersja 2
To tyle na teraz, jak jeszcze coś sobię przypomnę dam znać. Pamiętam, że sporo kombinowałem, coś jeszcze pewnie do mnie wróci z pamięci...
2008-10-13 02:13 by Różyk
komentarzy: 9
zaxon @2008-10-13 02:29:19
No to niezle jest, Dzieki serdeczne za upublicznienie
Szczegolnie podoba mi sie "Podsluchiwacz", choc bardziej pasowalaby mi tu nazwa "Opierdalacz" :). Gdyby do niego uzywac takiego polaczenia SAM-a (synteza mowy) z Eliza (podtrzymywanie rozmowy) to moglbym w pracy wysylac Atari na niektore zebrania... :P
kurcze co to ludziki nie wymysla:) Jak kiedys bylem mniejszy to wujo zrobil mi sterownik do kolejki PIKO, przelaczanie zwrotnic i semafora, szlaban i cos jeszcze.
Wtedy to byla frajda tym sie bawic.. z tym ze mialem to 2 dni;/ bo wujo zabral swoj komputer
zaxon @2008-10-13 02:42:23
no ja wariacko nawalalem w automat perkusyjny ale sobie go sam przerobilem, podstawki mialem z puszek a paleczki na kabelkach, a teraz mi moja atarka bardzo fajnie steruje silnikami, mam zamiar ja wykorzystac do frezarki CNC
xxl @2008-10-13 08:13:31
pomysl z rozpoznawaniem utworow mi sie podoba :)
eswald @2009-01-16 15:32:04
Wkorzystujac odczyt paddla wykonalem kiedys termometr na termistorze od baterii NI CD.W przedziale -25 +50 odchylka wynosila 0.5 stopnia.Mialem kontrole na kanale telewizyjnym a termometr byl zamontowany za oknem na kablu ekranowanym.
Tez ciekawy pomysl. Jak masz jakies schemaciki, rysunki, a moze zdjecia to podsylaj.
Kaczor @2011-10-24 20:44:55
Fajny bajer, muszę sobie takie coś zrobić.
@ Zaxon - dobry pomysł z tą CNC, sam pracowałem na narzędziowni w odlewni aluminium i widziałem co maszyny CNC potrafią. Troszkę roboty byś miał do przerobienia analogowej frezarki na cyfrową. Powodzenia. Dla chcącego nic trudnego.
Zresztą ten post piszę po dłuższym czasie i kto wie, może już ci ta frezarka działa :-)
kris3d @2023-04-12 00:17:49
Shazam z 1988 roku na małe Atari. W jakim formacie zbierałeś próbki? Zapisywałeś je na dyskietce/kasecie? Tak, byłeś szybszy od Googla i Apple-a o 20 lat :)