arduino, początki, inny edytor

I czasem sie robi. Ale NT (czyli XP też) jest cwany i bywa, że nawet to nie spowoduje sprawdzenia dysku, nawet ręczne popchnięcie wiele nie da.

Tylko teraz, jaki to miało bufor, coby profilaktycznie dopchnąć tyle (później się obetnie) tyle, aby wszystko, co nas interesuje, znalazło się w pliku. Już w C64 ten problem występował, tyle, że wiadomo było, ile dać nadmiaru, żeby było z czego obcinać. No i ręczne zamknięcie pliku bardziej skomplikowane, bo całkowicie ręcznie, bądź odpowiednim programem (ja zwykle ręcznie załatwiałem, wspomagając się jedynie programikiem, który sczytywał mi odpowiedni sektor, a to tylko po to, żeby w ogóle wiedzieć, gdzie jest wpis, który trzeba zmodyfikować, potem przestawienie bitu 7 (jego znaczenie

0 - plik otwarty, 1 - zamknięty) w znaczniku rodzaju pliku i już, na koniec "validate" dla odświeżenia BAM. NTFS, jako system z atomowymi operacjami zapisu, średnio daje się sprowokować do zrobienia automatycznie chkdsk, zwykłym wyłączeniem zasilania. Ale jest prosty sposób, z wiersza poleceń/okna "DOS"owego zapodać: fsutil dirty set <volumin>

gdzie <volumin>, to litera, albo ścieżka zamontowania zasobu. I wtedy pyk hebel... Przyznam, że muszę poćwiczyć, choć jak wtedy próbowałem, to chyba nawet nie bardzo trzeba, bo przy zapisie sekwencyjnym nie ma zadeklarowanej długości pliku i nie jest ona rezerwowana, jak w sytuacji, gdy wiadomo (no, system musi wiedzieć przecież, sama nasza wiedza nie styknie), że "zapisujemy

4294967295 bajtów danych". A to się wiąże z tym, że do pliku dane dopisuje się (nasz QBasic DOSowy) na bieżąco (i nawet nie wiem, czy to się w przerwach między porcjami samo nie jakby nie zamyka... (nie chodzi o BASICowe CLOSE, bo to się zrobić nie daje)) i tylko ten bufor, aby nadmiarem zepchnąć jego zawartość na nośnik. A dopilnować trzeba, bo czasem ten ostatni bajt najbardziej znaczy... taka przewrotność losu, jak np. archiwum rozpakować nie zechce...
Reply to
HF5BS
Loading thread data ...

Producentem BASICa doa Commodore był MS. Historia sięga PETa i jest ciekawa:

formatting link
Inne popularne maszyny jak Atari i Zx Spectrum miały wlasny basic, ale Microsoft zdominował wtedy rynek komputerów 8-bit swoim basicem i wiele maszyn go miało jako standardowy. Dodatkowo Atari miało feler (wszystko na floating point) i zx (tokenizacja jednostka białkową).

Reply to
Sebastian Biały

No to jasne, że wtedy jakoś trzeba temat zaznaczyć, żeby się kuku nie stało. Wtedy jest to zdecydowanie potrzebne, coś jak znak "Zwolnij" na prostej szosie postawiony, bo np. dzikie zwierzęta, czy śliska nawierzchnia, a zrobi co zechce, tylko konsekwencje mogą być, że okoliczne drzewo zmieni się w drewnianą jesionkę. Jak ja to rozumiem, obrazowo, nie w języku programowania, czyli pseudokodem, mniejsza o elegancję i prawidłowość.

najprościej: NAPISZ 2+2

Nieco bardziej: a=2 b=2 NAPISZ a+b

Bardziej: Deklaracja zmiennych: a - zmiennoprzecinkowa pojedyncza b - całkowita REM (czasem tak trzeba, niektóre kompilatory dają radę) a=2 b=2 NAPISZ a+b

I już przerost formy nad treścią: Program dodający dwie różne liczby, "a" i "b" Deklaracja zmiennych: a - zmienna zmiennoprzecinkowa podwójnej precyzji b - zmienna zmiennoprzecinkowa podwójnej precyzji REM dobra, już nie dziwaczę, niech typy będą jednakowe a=2 REM zmiennej a nadano wartość 2, aby następnie poddać ją działaniu dodawania b=2 REM zmiennej b nadano wartość 2, aby następnie poddać ją działaniu dodawania NAPISZ a+b REM dodano zmienne a oraz b, aby uzyskać wynik ich dodawania, w wyniku działania dodawania wyprowadzona została ich suma, ukazująca wynik dodawania.

Ja głosuję za przykładem pierwszym. Ewentualnie drugim, jeśli wartości będą sie zmieniać. Mogę też, zamiast wpisywania w treść programu, zapodać komendę przyjmującą dane z zewnątrz, za każdym odpaleniem programu. W przypadkach, o jakich mówisz, zgadzam się na opcję nr 3, bo jesli mamy uniknąć konfliktu interesów, to trzeba to zaznaczyć. Ale już nr 4 wydaje się być przegięciem, gdzie przykład drugi obrósł nadmiernie, wręcz zaciemniając program.

Domyślam się, że konsekwencje potrafiły być bolesne...?

To załatano. Ale wiele innych rzeczy "od narodzin po śmierć" było pokrzywione i nadal jest, mniej, lub bardziej... o ile o tej samej "dziedzinie" gadamy.

Reply to
HF5BS

No, faktycznie... WIem, że do Komody cuda podłączano. Podobno kiedyś komuś udało się (chyba w Bajtku pisali) podłączyć dwużyłowo dalekopis bezpośrednio z portu rozszerzeń, sterując jakąś linię. (co wobec C64 jest raczej nieostrożnością... ale skoro ruszyło, o ile to nie była bajka)

W sumie RS chyna jest standardem, więc przepompować, czemu nie?

Owszem, choć nie tak najprościej. FAT jest bardzo prostym algorytmem (tak go teraz określę), każda część ma swoje miejsce w strukturach, więc w sasadzie wystarczy umiejętnie powachlować wektorami, wskaźnikami i jedziemy. FS, jako wyższy w warstwie, dawał się załatwiać przez działanie zwykłego programu. Sama stacja 1541 nie umiała sektorów MFM i jesli, to trzeba by to realizować maszynowo, ale nie wiem, czy komuś się to udało, kodowała jedynie GCR. Natomiast 1570/-1/-2, umiały już MFM, przełączało się jedną komendą (miały OIDP kontroler, który umie MFM) i dawało się ponoc czytać dyskietki 360 kB, w stacji 157x. Jednak między dyskietkami MFM dla PC i GCR dla Commodore była inna, istotna różnica, dyskietki PC miały sektory 512 bajtów, a Commodore

256, przy czym jedynie 254 było dla danych, a dwa pierwsze bajty były wektorem, wskazującym na następny w pliku sektor z jego zawartością. Bajt zerowy na pozycji zero oznaczał, że to ostatni sektor, a bajt 1, był lokalnym wektorem wskazującym, który bajt sektora jest ostatnim bajtem pliku. Komenda validate powodowała skan wszystkich plików, wylistowanie wektorów i odpowiednią modyfikację BAM, co zapobiegało uszkodzeniu dabych w przypadku niezgodności. Nie wolno było wykonywać porządkowania na plikach o dostępie swobodnym, gdyż powodowało ich uszkodzenie (nie udało mi się rozkminić, jak działał mechanizm plików "REL", resztę rozgryzłem).

Bayerische HackerPost, wirus na komodę... Nie trafił mnie, podobno u Niemców, jak nazwa wskazuje, roznosił się, w programach maszynowych. W BASICu, rzecz jasna, nie miał jak się roznieść, ale wystarczyło coś maszynowego i jedziem, nie pamiętam, jak się doklejał. A to nie jedyny na C64.

formatting link
Tu coś mam, ale na razie nie zbadam, czy to ma jakiś związek z rzeczywistym zagrożeniem.

Reply to
HF5BS

Użytkownik "HF5BS" snipped-for-privacy@t.pl napisał w wiadomości news:oec7ev$nlq$ snipped-for-privacy@node1.news.atman.pl...

"CHYBA"... rany, jak ja nie cierpię robić literówek...

Reply to
HF5BS

fajnie się Was czyta, ale co powiecie na takie coś:

char key = keypad.waitForKey(); //czekaj na naciśnięcie klawisza Serial.println(key); //wyświetl co zostało naciśnięte

no i działa pięknie. wciskam 1 na klawiaturce, na ekranie pojawia się 1. jak wcisnę 2 to na ekranie "wyskoczy" 2. Niestety na wyświetlaniu się kończy. Problem pojawia się przy próbie wykorzystania zmiennej "Key" w matematyce, gdyż "1" z klawiatury, zapamiętuje się jako key = 48. Chwała Bogu że 2 to 49, 3 to 50, więc szybko problem "obszedłem", ale nie rozwiązałem. nie wiem dlaczego arduino tak "robi"

ToMasz

Reply to
ToMasz

formatting link
mylisz reprezentację graficzna z wartością. Zastanów sie przez chwile co miało by sie pojawić jak wciśniejsz a.

Reply to
Sebastian Biały

W dniu 2017-05-03 o 14:03, ToMasz pisze:

Tak robi bo mu tak kazałeś ;) W definicji klawiszy prawdopodobnie użyłeś znaków a nie cyfr, więc funkcja zwraca numer znaku w tabeli ASCII. Przykład z tutoriala: char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'#','0','*'} }; Zgodnie z tablicą ASCII jedynka ma numer 49 i taka liczba jest zapisana w zmiennej key. Gdyby w tablicy keys była 1 zamiast '1' to łatwiej byłoby liczyć, ale na porcie szeregowym byłyby krzaki.

Reply to
Piotr Dmochowski

Użytkownik "ToMasz" snipped-for-privacy@poczta.fm.com.pl> napisał w wiadomości news:oecgor$2du$ snipped-for-privacy@dont-email.me...

Wszędzie tak masz. Na szybko, więc mało eleganckie i ze znienawidzonym GOTO, ale prościej się nie da:

10 a$=INKEY$: REM w różnych dialektach jest to bardzo różnie 20 PRINT a$;: GOTO 10

A jeszcze prościej, nie wszystkie dialekty pozwalają tak łatwo:

10 PRINT INKEY$: GOTO 10

Z "debagiem":

10 a$=INKEY$: IF a$="" THEN 10:REM lub GOTO 10, powinno być, aby tekst nie latał po ekranie 20 PRINT "Znakowi ";a$;" odpowiada kod ASCII";ASC(a$+CHR$(0)) 30 GOTO 10

Tak wygląda sprawa, dlaczemu tu i tam widzisz inne wartości.

Reply to
HF5BS

  1. dzięki za naprowadzenie. klawiaturę numeryczną, bez literek, więc nie pomyślałem o ascii....

ToMasz

Reply to
ToMasz

W dniu 03.05.2017 o 15:55, HF5BS pisze:

tyle że to mi wygląda na program z zx specrtum. a przy okazji, czy dałoby się pisać programy w basicu na arduino? ToMasz

Reply to
ToMasz

Arduino czyli co? Przecież to jakiś AVR - z całą pewnością robi co mu kompilator kazał.

Reply to
Pcimol

Bascom?

Reply to
slawek

Użytkownik "HF5BS" napisał w wiadomości grup dyskusyjnych:oebbpb$tf2$ snipped-for-privacy@node1.news.atman.pl...

Ta liczba to tak naprawde float 32-bit z 24-bit mantysy ?

Byly jeszcze skryptowe java i basic, jscript i ... wscript ?

J.

Reply to
J.F.

Użytkownik "slawek" napisał w wiadomości grup dyskusyjnych: snipped-for-privacy@news.v.pl...

To mi przypomnialo przyklad z PL/1, nie pamietam dokladnie cos typu

I=1 ; IF (I=1) THEN ...

i ... nie wykonuje sie.

Tlumaczenie bylo zawile - poniewaz I nie zadeklarowano, to przyjmuje typ integer. Ale 1 to typ float. Przy podstawieniu zamieniamy float na integer. Ale przy porownaniu zamieniamy oba typy na jakis tam jeden wspolny, czyli robimy dwie konwersje ... i juz nie jest rowno.

Przyklad z jakiejs ksiazki Bieleckiego.

J.

Reply to
J.F.

Użytkownik "slawek" snipped-for-privacy@fakeemail.com napisał w wiadomości news: snipped-for-privacy@news.v.pl...

No, dokładnie. Składnia niemal identyczna. Zresztą, co się zaprogramuje, to się użyje, choćby Malbolge, czy Brainfuck, bądź jakiś inny ezoteryk. Albo zwykły BASIC, co komu wygodniej.

Reply to
HF5BS

Użytkownik "J.F." <jfox snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:590ac85e$0$658$ snipped-for-privacy@news.neostrada.pl...

Pojęcia nie mam, czemu QB64 tak się zachowuje.

(QBASIC)

Był, a jakże! Tylko, że nie razem z instalką, a dokładał się w WU. Ale WU dla NT4 nie tyle może wyłączono, ile spieprzono i tak, jak system widzi stronę (jak sprawdzałem, tak było, na maszynie wirtualnej), tak kontrolka WU ładuje się z którejś wyższej wersji chyba i potem nie chce pokazać się WU dla NT4, rozumiem, że już się poprawek nie pisze, ale to, co powstało, to znów chyba nie zajmuje aż tyle miejsca, a nie wszędzie da się pójść wyżej. JScript był chyba jakiś szczątkowy, a w SP6, była okrojona wersja DirectX 6, dzięki czemu chodziły niektóre gry. Niektórzy manipulowali w Rejestrze, udając wyższy numer DX i im więcej jeszcze gier chodziło. Java... Chyba wchodziła z WU. BASIC... Nie pomnę.

Reply to
HF5BS

Użytkownik "HF5BS" napisał w wiadomości grup dyskusyjnych:oef6dr$nlu$ snipped-for-privacy@node1.news.atman.pl... Użytkownik "J.F." <jfox snipped-for-privacy@poczta.onet.pl> napisał w wiadomości

A zmienna jest jakiego typu ?

Jesli dobrze czytam, to on kompiluje do C, moze da sie podejrzec.

Albo

formatting link
wyraznie jako Double, Long, czy _FLOAT

Jesli dobrze czytam - zmienna bez przyrostka bedzie domyslnie Single - i masz odpowiedz.

J.

Reply to
J.F.

Użytkownik "J.F." <jfox snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:590b2a7d$0$5154$ snipped-for-privacy@news.neostrada.pl...

To zależy od sposobu wywołania, jeśli wcześniej nie nastąpiłą jawna deklaracja, to pojedynczej precyzji, czyli normalna. Mnie nawet nie o to chodzi, że przestaje dalej liczyć. Stan taki jednak uważam za błędny i program powinien się w jakikolwiek sposób wyburaczyć, czy to komunikatem, czy z błędem wykonania, nic, cisza i zmienna, która stała się stałą. (ale słowa zagrały) :)

W każdym razie jest masa źródeł w C.

Spróbuję, jak najbardziej, albowiem nie zamierzam tego zostawić przynajmniej bez zbadania. Spróbuję wszystkich deklaracji, przynajmniej wykorzystam jakoś rozrzutność kompilatora i szybkość systemu, zaniedbując (z konieczności) ściślejsze pisanie programu. Jak któraś ruszy, to może zostanę?

Zadanie by się zmieściło z pojedyńczą precyzją, a nawet stałoprzecinkową (-32768 - 32767 OIDP, jakby się dało unsigned, to jeszcze lepiej, ale nie wiem, czy kompilator to umożliwi). Martwi mnie raczej to, że powyżej pewnej wartości licznik się zatrzymuje i mimo dostawania kolejnych wartości do dodania, licznik stoi i nie sygnalizuje błędów, a przecież sygnalizacja nie została wyłączona, jak przekroczę zakres, to błąd jak najbardziej, wyskakuje. Oby nie był to problem z podziałem cecha/mantysa (bo wtedy jawnie będę musiał posiłkować się jakimś nieekonomicznym trybem, kiedy normalnie nie powinno to być potrzebne)... ale nie będę rozkminiać teraz, dziwnie się dziś czuję (pijany bez kropli alkoholu), nie mam siły myśleć. Może w nocy, jak się trochę rozkręcam...? A rozkminić chcę, 5 MB na sekundę, to żaden problem dla QB64, może MP3 po swojemu zrobię? :))

Reply to
HF5BS

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.