Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

DOS not compute!

Wyobraźcie sobie, że oglądacie kiepski film sci-fi, w którym robot przechodzi poważne spięcie. Dostał sprzeczne instrukcje, spotkał niecodzienny problem, został fizycznie uszkodzony. Co wykrzykuje taki robot?

Przypominam, to kiepski film a nie Odyseja Kosmiczna 2001. To nie HAL 9000 (I'm sorry, Dave. I'm afraid I can't do that.), nie wysublimowana maszyna, która stara się pogodzić etykę robotów ukutą przez Asimova z zaprogramowanymi procedurami, a nieskomplikowany obiekt z aluminiowych rur i z żarówkami zamiast oczu. Gapimy się w ekran telewizora i nie mamy wątpliwości, że w środku tej puszki siedzi człowiek. Biedny aktor, który nie dostał roli dzięki urodzie Brada Pitta, a dlatego, że jako jedyny mieścił się w kostiumie.

Trochę odbiegłem chyba od tematu. :-) Co powtarza taki robot? Does. Not. Compute. Jest to także reakcja jakiej oczekiwałbym od większości użytkowników vortalu, jeśli dostaną kod w assemblerze x86 do rąk. Dlatego zachowując odrobinę zdrowego rozsądku, postanowiłem oprzeć nowe zadanie o coś, co zapewne każdy użytkownik vortalu potrafi: uruchamianie programów. Prześledźmy zatem jak dzisiejsze wyzwanie powstawało.

Przygotowanie zadania opartego o ASM dla użytkowników różnych systemów jest stosunkowo problematyczne. W końcu nie bez powodu dobreprogramy oferują osobne pliki dla Linuksa i Mac OS X. Gdyby program odpalał się na czymkolwiek, nie mielibyśmy odpowiednich działów na stronie. Co zatem zrobić, żeby na każdej platformie dało się uruchomić aplikację? Oprzeć o DOS, platformę, której nie ma nikt!

A nie, przepraszam, nie chcę się wystawić na krytykę z cyklu "czyli nikt nie był w stanie tego zadania zrobić!". Rzecz w tym, że aplikacje pod DOS można uruchamiać w takim świetnym emulatorze jakim jest DOSBox. Wolne oprogramowanie, popularne, szalenie użyteczne. Mam je nawet od dawna w ulubionych. :-)

Pozostaje tylko znalezienie kompilatora, po który może sięgnąć każdy (dostępnego w sieci za darmo) i który pod DOSem działa. Dobrze, gdyby istniała też wersja na inne systemy. Pierwotnie kod był pisany dla Turbo Assemblera, ale komercyjny status tej aplikacji powodowałby, że zadanie byłoby wyłącznie "dla wybranych". A nie o to przecież chodzi. Wybór padł na flat assembler (znany także jako FASM), którego autorem jest Tomasz Grysztar. FASM dostępny jest zarówno pod DOS, Linuksa jak i Windows. Jest to stosunkowo istotne, bo daje większy wybór użytkownikom.

Czas na drobną uwagę. Dróg dojścia do wynikowego programu jak i sposobów uruchomienia go jest kilka. Jeśli mamy szczęście i pracujemy na 32-bitowym Windowsie, zarówno FASM pod Windows jak i FASM pod DOS powinny bez problemu skompilować kod, a wynikowa aplikacja uruchomi się w gołym systemie. Powinna być poprzedzona błędem, ale będzie działała. Jeśli użyjemy DOSBoksa, możemy w nim uruchomić kompilator i program wynikowy albo sam program wynikowy. Bez względu na system operacyjny!

Istnienie obu możliwości jest dosyć ważne, bo start FASM na "czystym" DOSBoksie może wymagać dodatkowego kroku - uruchomienia extendera takiego jak CWSDPMI. Nie jest to wiedza dzisiaj specjalnie powszechna, zdaję sobie z tego sprawę. Ale podkreślam, że nie jest to jedyna droga do rozwiązania. Ta elastyczność jednak, jak dowodzą komentarze, okazała się być dosyć osobliwym utrudnieniem dla części z grających.

Warto także dodać, że istnieje szereg innych opcji, których nie będę szerzej opisywał, jak np. wirtualizacja innego systemu, XP Mode w Windows 7 czy rzeczy, o których nie mam pojęcia, że są możliwe, ale na które wpadli zapobiegliwi użytkownicy vortalu. :-] Kawał dobrej roboty!

Bo widzicie, do tego zadania potrzeba kilku zdolności. Część z nich wydaje mi się typowa dla odwiedzających vortal: umiejętność instalowania aplikacji i podstawy obsługi Notatnika. No i są jeszcze te dwie szalenie ważne, bez których zadania nie da się rozwiązać: pomysłowość i upór.

Zadanie skonstruowane jest mniej więcej tak: weź F16, naklej w kokpicie karteczkę o treści "spytaj bufetową o godzinę, żeby wygrać" i postaw koło samolotu biorących udział w konkursie. Część powie: "zobaczę co jest w kokpicie, może mnie olśni". Część krzyknie "skandal! wymagają pilotowania myśliwca!" i z odpowiedzi zrezygnuje. Nie czuję się specjalnie winny, że właśnie tak skonstruowane jest to zadanie. Nie bez powodu ma w nazwie słowo "specjalne". :->

Zatem przepis na rozwiązanie jest tym razem stosunkowo prosty: pobrać DOSBox, pobrać FASM, pobrać program, kompilować i kombinować. Ale przede wszystkim: czytać treść zadania!

Fantastycznie! Lubię ASMa, Tato!
Powiedziała ruda Karolinka
Prosty jest ten szyfr - dodała - ale za to
Widzę, że we flincie flinta

Wierszyk może nie najwyższych lotów, ale jako rodzony Częstochowianin ponad rymy częstochowskie się raczej nie wzniosę. ;-) Wierszyk ma za zadanie informować o trzech rzeczach. Po pierwsze: podpowiada jaki kompilator jest potrzebny poprzez pierwsze litery słów z pierwszego wersu. Dla ułatwienia pogrubiłem je tutaj. Na stronie konkursowej były one wyróżnione kursywą. Po drugie: informuje, że mamy do czynienia z szyfrem. Po trzecie: podpowiada, że zadanie nie jest złożone z jednej tylko fazy.

"Flinta we flincie" to określenie (które wedle mojej wiedzy - proszę o sprostowanie w razie czego) pochodzi z magazynu Magia i Miecz, w którym to służyło do opisu przygód, w których wykorzystano więcej niż jeden zwrot fabularny. Flinta we flincie, strzelba ukryta w strzelbie, ostrze w ostrzu, zagadka w zagadce. Bo taki charakter ma dołączony do zadania kod.

format MZ push cs pop ds mov cl, 77 mov si, MAGIC2 foo: mov al, [si] cmp cl, al je bar inc si add bl, al xor bh, bh mov ah, 06h mov dl, [MAGIC1+bx] int 21h jmp foo bar: mov ax,4C00h int 21h MAGIC1 db "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789, " MAGIC2 db 12,244,6,2,250,26,9,222,254,36,246,7,2,248,1 db 5,2,247,2,7,252,4,248,1,4,3,249,4,3,248,0,255 db 9,255,1,248,2,1,5,247,6,3,248,1,6,1,253,0,77

Uruchomienie FASM jest naprawdę proste: w linii komend wpisujemy nazwę kompilatora (np. fasm.exe) i za nią nazwę pliku z kodem. Voila! Uruchamiamy wynikowy program i naszym oczom ukazuje się tekst:MAGIC2 DB 18,238,13,6,237,37,221,9,245,17,239,77

Wystarczy rzut oka na kompilowany kod, by wpaść na przynajmniej kilka potencjalnych sposobów na wykorzystanie tego. Można podmienić jedną linię, a można podmienić trzy. Można też usiąść i płakać, ale zadania mają premiować wytrwałych, pomysłowych i chętnych do eksperymentowania a nie tych, których zaangażowanie kończy się na odczytaniu pierwszego wyniku z wyszukiwarki.

Nie wnikając w sposób działania tego kodu (jeśli istnieje takie zapotrzebowanie, mogę opisać w osobnej notce) dodam tylko, że zarówno podmiana jednej linii jak i trzech ostatnich dają oczekiwany rezultat. Bo jeżeli podmienimy odpowiedni fragment kodu, ponownie skompilujemy i uruchomimy program, naszym oczom pokaże się ostateczne rozwiązanie. Jakie? To nazwa miasta, w którym znajduje się główna siedziba Intela.

SANTA CLARA

I to jest odpowiedź na drugie zadanie specjalne. Wszystkim, którzy do niego dotarli gratuluję wzorowego podejścia do postawionego problemu. :-)

Na koniec jeszcze kilka uwag. Nie będę tym razem pisał jakie losowe odpowiedzi trafiły się nam. Dość powiedzieć, że procent poprawnych odpowiedzi jest wyższy niż w przypadku poprzedniego zadania. To świadczy wprost o tym, że było ono dużo bardziej strawne niż poprzednie zakodowane pytanie.

Z komentarzy na stronie wynika, że grający "rozbijali" się na różnych etapach tego zadania. Część nie zauważyła podpowiedzi w wierszyku i używała innego kompilatora. Podejrzewam, że najczęściej kończyło się to błędem na linijce "format MZ". Część ta jest w przypadku FASM kluczowa, by wygenerowany program uruchomił się pod DOSBoksem, a zatem by użytkownicy wszystkich najpopularniejszych systemów operacyjnych (Win, Linux, Mac OS X) mogli wynikowy kod uruchomić.

Część zignorowała podpowiedź o zadaniu w zadaniu, lub nie zadała sobie trudu eksperymentowania z kodem. Stąd m.in. odpowiedzi pod postacią przepisanej magicznej wartości z pierwszego uruchomienia. Uprzedzając pytania: takie odpowiedzi nie będą nagradzane punktami.

Część rozbiła się o schody do kokpitu F16: czy to o przerażający fakt istnienia kodu jako części zadania, czy to przy próbie uruchomienia kompilatora albo programu wynikowego. Uważam jednak, że moje oczekiwania wobec grających nie były szczególnie wygórowane; DOSBox to nie jest jakaś szalenie ezoteryczna aplikacja. Jest w dziale pobierania vortalu, pojawiał się w aktualnościach. Zdobycie i uruchomienie jego jak i FASM nie powinno wykraczać poza umiejętności grających.

Cieszę się, że - jak wnioskuję po komentarzach - części z Was podobało się zadanie. Całej reszcie pozostaje mi życzyć więcej szczęścia w następnym zadaniu specjalnym. Może lepiej trafię w Wasz gust. :-) Ale ostrzegam, że następne zadanie specjalne naprawdę będzie trudniejsze. ;-> 

Komentarze

0 nowych
treker   4 #1 17.10.2010 00:02

Już się nie mogę doczekać kolejnego zadania specjalnego.
Świetny konkurs ;)

FaUst   12 #2 17.10.2010 00:05

Gdyby nie jedno z pytań 'na czas' byłbym w pierwszej setce, a tak połowa drugiej :]

SinTom   8 #3 17.10.2010 00:06

No kurna!!!!!!!!! Gdybym miał więcej niż nie cała godzinka na rozwiązanie mógłbym dać radę. Tak już myślałem, żeby podmienić no bo co z tą flinta mogło chodzić, ehhh szkoda.

ppsx   4 #4 17.10.2010 00:07

Kolejne ciekawe zadanko. Dzięki!
Ale... już to miało być trudniejsze ;)
No nic, nadal czekam na wyzwanie przez duże W!
Dzięki za kupę dobrej zabawy.

SinTom   8 #5 17.10.2010 00:07

BTW> Zadanko zaj***te, każdy mógł zrobić, chociaż gdybym nie miał zainstalowanej wirtualnej wcześniej to bym nawet fasma nie udało się użyć.

nawon   7 #6 17.10.2010 00:13

Nawet na maku wszystko ładnie wyszło tylko ponieważ zacząłem dopiero przed 12.00 to nie wiem nadal jak magic2 zmienił się w clare :P

Ryan   15 #7 17.10.2010 00:14

@ppsx: Pierwotnie było sporo trudniejsze. :) Ale postanowiliśmy je odrobinę uprościć.

Przy okazji taka ciekawostka: pierwszą planowaną odpowiedzią na zadanie miało być słowo "BRAWO". Doszliśmy jednak do wniosku, że nie dość, że słabo nawiązuje do Intela, to jeszcze będziemy musieli walczyć z komentarzami w stylu "Brawa dla wszystkich, którzy już rozwiązali". Masa niepotrzebnej moderacji na naszych barkach. ;]

matzu   5 #8 17.10.2010 00:14

Czy jest jakiś debugger do fasm-a pod windows-a? Jeśli tak to prosiłbym o jakiś link (tak na przyszłość) :P

Ryan   15 #9 17.10.2010 00:15

@nawon: Faktycznie niedostatecznie jasno to wyjaśniłem. Zmieniamy MAGIC2 w pliku z kodem, kompilujemy ponownie, dostajemy ostateczną odpowiedź. Za chwilę poprawię wpis, dzięki za zwrócenie na to uwagi! :)

Igloczek   8 #10 17.10.2010 00:15

Gratki dla tych którzy na to wpadli.
Ja niestety licząc na szczęście wkleiłem tylko "magiczny kod" :)

Ryan   15 #11 17.10.2010 00:17

@matzu: DOSowy fasm ma fasmd.exe, które jest debuggerem właśnie. W DOSBox działa z tego co sprawdzałem (ale nie ręczę za funkcjonalność programu, bo interesowało mnie przede wszystkim, czy działa). Wersja pod Windows ma chyba debugger pod postacią fasmw.exe, ale nie dam sobie w tej chwili za to ręki uciąć. ;)

FlashMan   4 #12 17.10.2010 00:20

Brawo za pomysł z zadaniem! Bardzo mi się podobało takie szyfrowanie w wierszyku :)

A, że mi się udało zaskoczyć, dlatego, że przypomniało mi się o drugiej podpowiedzi w wierszu - otrzymany wynik trzeba było jeszcze raz skompilować. I już :)

Assembler, miałem to na studiach, na Wydz. Inf. Politechniki Szczecińskiej. Więc, zapamiętałem podstawy - stąd łatwo mi było rozszyfrować wierszyk.

Lizard   5 #13 17.10.2010 00:21

To ja opiszę moje perypetie. Na początku: WTF !? Wygląda jak kod, ale jakoś tak dziwnie... pewnie pseudo kod.. kurde co to jest...

Dobra, szukamy co to ASM... Wśrod wielu odpowiedzi na angielskiej wikipedii, poszełem na polską i... Asembler. Dobra, czyli jednak kod. No to google -> asembler kompilator, pierwszy wynik, wyskakuje jakaś strona, chyba z 10 albo więcej tego... a moim oczom rzuca się Flat Asembler Compilator. Nie wiem czy podświadomie czy mi się poszczęściło, ale wybrałem właśnie ten.

Przeklejam kod, Compile, Run... nie działa. Trzeba Ci 32 bity... no to wyrywam starego laptopa, gołego tak, że poza notatnikiem nic nie ma. Przerzucam skompilowany program "aaa.exe" na dysk sieciowy, biorę na starym lapku odpalam... i zniknęło. No to kopiuje na C, włączam "cmd" i odpalam. Dostaję kod i od razu "flinta we flincie" czyli podmiana na "dużym kompie" MAGIC2 i powstaje program "bbb.exe". Kopiowanie na dysk sieciowy odpalam i "SANTA CLARA"... zegarki tykają, psy szczekają... Wyślij.

I wylądowałem na 3 miejscu 10-dniowego, a generalka jak zamurowana. Znowu netbook koło nosa i nawet bez plecaka.

Ale satysfakcja szlachetnego gatunku :)

SinTom   8 #14 17.10.2010 00:22

Choć ostatecznie nie wpadłem na pomysł podmiany kodu, to myślę, że mniejsze szanse miałbym wpaść na pomysł użycia DOS boxa. Całe szczęście że z wirtualnymi maszynami jestem obeznany. Żałuję żałuje, że nie miałem więcej czasu. Cóż cioci imieniny:) Trochę spamuję ale powiem wam, że dawno się tak nie podnieciłem:) (teraz pod tym zdaniem może pojawić się garstka szyderczych komentarzy). Cóż gratuluję wszystkim a ja tymczasem udaję się na drzemkę.

matzu   5 #15 17.10.2010 00:23

fasmw to coś w stylu IDE, a na to żeby ściągać wersję fasm-a na DOS-a nie wpadłem :D Później zerknę, czy ten DOS-owy debugger faktycznie działa. Szkoda, że nie miałem dziś dostępu do żadnego linuxa :(. Składni asemblera zupełnie nie pamiętam, więc liczyłem na to, że sobie to przedebuguję i przypomnę co i jak. Niestety żadnego nie znalazłem na windę.

Igloczek   8 #16 17.10.2010 00:26

@Lizard

W 13 min tyle "operacji" nieźle :) GZ!

matzu   5 #17 17.10.2010 00:27

@Lizard

No ja niestety nie wpadłem na to flinta we flincie :D

Ryan   15 #18 17.10.2010 00:28

@matzu: Wersja pod DOS jest pierwsza na liście plików do pobrania FASM. Założyłem, że większość po nią sięgnie. Ale najwyraźniej tylko ja mam sentyment. ;)

obelisk4   2 #19 17.10.2010 00:28

Nie wpadlem na to o czym mowila ostatnia linijka - nie spotkalem sie z tym okresleniem, google widocznie tez ;P Osobiscie udalo mi sie uporac z zadaniem tylko przy uzyciu jednego programu - flat asemblera a by odczytac rezultat, zwyczajnie posluzylem sie windowsowa konsola ;)
Gratuluje pomyslowosci autorowi zadania, i licze na wiecej takich w przyszlosci ;P

FlashMan   4 #20 17.10.2010 00:28

Próbowałem skompilować kod zadania w Win7 64bit z wykorzystaniem z include (win64a.inc i jego pochodne) - skompilował się prawidłowo, ale uruchamiać się już nie chciał. W katalagu Examples są kody źródłowe i programiki, które bez problemu działały. Ciekawe.

tores1977   9 #21 17.10.2010 00:29

ja na wirtualnym XP użyłem tego
http://flatassembler.net/download.php

Ryan   15 #22 17.10.2010 00:30

@Lizard: Miałeś sporo szczęścia, bo potraktowany innym kompilatorem kod poczęstowałby Cię komunikatem błędu. Ale jak widać można było odpowiedzieć także napotkawszy praktycznie każdą możliwą przeszkodę stawianą przez zadanie. Wystarczy konsekwencja. :-) Wielkie gratsy za czas!

Lizard   5 #23 17.10.2010 00:31

Trochę się pospinałem :)

Ale chciałbym podkreślić, że:
1. pierwszy raz w życiu widziałem kod asemblera
2. na co dzień nie zajmuję się informatyką
3. Magia i Miecz... mhm... pamiętam :)

Lizard   5 #24 17.10.2010 00:32

@Ryan
dzięki :) zadanie równie udane co ostatnio.

Już pamiętam jakie zadanie mi się śniło kilka dni temu - "Szyfr Cezara".

dembus   1 #25 17.10.2010 00:33

dokładnie fasmw.exe, XP mode i nieco zbyt ambitny nauczyciel informatyki w przeszłości ;-))) na netbooka nie mam szans już ale plecak miły gest :) dzięki za zadanie specjalne

Ryan   15 #26 17.10.2010 00:35

@FlashMan: pewnie odpalałeś aplikacje konfigurowane "format PE", czyli windowsowe. Problem w tym, że gdybym dał taki kod np. użytkownicy Linuksa mieliby dużo trudniejsze zadanie - musieliby dodatkowo użyć Wine. Psułoby to moim zdaniem zabawę.

Zależało mi na tym, żeby szanse były jak najbardziej wyrównane i nie faworyzowały specjalnie nikogo. Po komentarzach pod aktualnością wnioskuję jednak, że choćbym stanął na uszach, wszystkich nie zadowolę. Bo zdaniem niektórych faworyzuję konkretne grupy, albo utrudniam granie komuś.

Strach pomyśleć co by to było, gdybym stworzył zadanie wymagające np. HTML5. Toż to dyskryminacja IE6! W momencie przestanie mieć znaczenie, że przeważająca większość grających i tak używa Fx, Chrome albo Opery. Takie życie. ;-]

nawon   7 #27 17.10.2010 00:42

zostaje tylko java :D

reanek   8 #28 17.10.2010 00:42

I tak nic z tego nie kumam.Ale konkurs mi się podoba.W sumie też byłem blisko bo napisałem że "AMD musi odejść"-chociaż wcale tak nie myślę:)) Pozdrawiam

FlashMan   4 #29 17.10.2010 00:51

Wiadomo, nie ma możliwości zadowolenia wszystkich i wszystkiego :)

No i zaletą Flat Assemblera jest wieloplatformowe, to raz. A i trzeba czytać informacje płynące z uruchomionej informacji, to dwa (dzięki temu przygotowałem laptopa z systemem 32-bitowym (MS Vista). No i internet daje praktycznie nieograniczone możliwości (wirtualizacja, winxp w wersji trial itd).

A tam dyskryminacja IE6, wręcz to profanacja! ;) Nikt o zdrowych zmysłach nie przygotowałby zadania z wykorzystaniem tej aplikacji :D Jedynie w biznesie z specyficznymi aplikacjami ten IE6 się przydaje.

kjackiew   4 #30 17.10.2010 00:53

@reanek
gratuluje odpowiedzi

@Ryan
Mógłbyś przedstawić pierwotna wersję tego zadania oprócz tego że odpowiedź była BRAWO

Ryan   15 #31 17.10.2010 01:02

@kjackiew: Kod robił prawie to samo - wypluwał nowe MAGIC2, tyle że ono dawało w wyniku BRAWO. Poza tym był pisany pod Turbo Assemblera pod architekturę 8086. TASM ma trochę inną składnię adresowania. No i kod był odrobinę dłuższy, bo używałem inaczej rejestrów. Mogę wrzucić pierwszą wersję (jeśli ją znajdę), ale niespecjalnie widzę sens. :-)

przemor25   14 #32 17.10.2010 01:02

Ale nadal nie rozumiem skąd wyszła Santa Clara

GL1zdA   12 #33 17.10.2010 01:08

Udało się odrobić trochę strat (+49), ale samo zadanie jakoś mi się nie podobało (niby assembler, ale jedyne co trzeba zrobić to uruchomić - fajniejsza byłaby analiza kodu i coś w stylu crackme ;) ). Poprzednie zadanie specjalne było ciekawsze, już nie mogę się doczekać kolejnego.

Ryan   15 #34 17.10.2010 01:13

@przemor25: Kompilujesz i odpalasz program. Dostajesz informację co trzeba w programie zmienić. Kompilujesz zmieniony program i uruchamiasz go. Dostajesz rozwiązanie.

GL1zdA   12 #35 17.10.2010 01:32

@przemor
Wyszła tak:
MAGIC1 to znaki z których 'coś wychodzi'. Zawartość bx to indeks tej tablicy (0=A, 1=B, 2=C itd). MAGIC2 to tablica z liczbami, jej indeks to si. Kod który jest napisany robi coś takiego:
1) (mov cl, 77) wpisz do zmiennej cl (rejestru) liczbę 77
2) (mov si, MAGIC2) Na starcie indeks si jest równy 0 (w rzeczywistości jest tam adres, ale przyjmijmy, że adresujemy względem początku tablicy MAGIC2).
3) (mov al, [si]) Do zmiennej al (to jest rejestr procesora) wpisz to co znajduje się w tablicy MAGIC2 pod indeksem si.
4) (cmp cl, al) Jeśli al jest równa cl (gdzie jest na stałe wpisane 77), to (je bar) przejdź do zakończenia programu
5) (inc si) Przesuń indeks si na kolejną liczbę w tablicy MAGIC2
6) (add bl, al) Dodaj do zmiennej bl to co jest w tablicy MAGIC2 pod indeksem si.
7) (xor bh, bh) Wykonaj dzielenie modulo 256 (to ta linijka z XOR) na tym co jest w zmiennej bx (bx to rejestr będący sklejeniem bh i bl, jeśli do bl dodamy coś co spowoduje, że będzie więcej niż 255 to zacznie być używane bh i popsuje w kolejnym kroku użycie bx).
8) (mov ah, 06h; mov dl, [MAGIC1+bx]; int 21h) Wypisz na ekran znak z tablicy MAGIC1 pod indeksem bx.
9) (jmp foo) przejdź do punktu 3)

Uruchamiamy:
-Wszysto na początku jest równe 0.
-Do cl wstawiamy 77, si wskazuje na początek MAGIC2.
-Do al wstawiamy więc pierwszą liczbę z MAGIC2, czyli 12.
-12 nie jest równe 77, więc lecimy dalej.
-Przesuwamy indeks si o jedno oczko i wskazuje on na 244.
-Dodajemy do bl al czyli 0 + 12 = 12.
-Robimy 12 modulo 256 = 12.
-Wypisujemy co jest na 12 pozycji w MAGIC1 (indeksowanie od 0) czyli 'M'
-Pobieramy do al kolejną liczbę spod si czyli 244.
-244 nie jest równe 77, lecimy dalej.
-Przesuwamy si na 6.
-Dodajemy do bl al czyli 12 + 244 = 256
-Robimy 256 modulo 256 = 0
-Wypisujemy zawartość MAGIC1 pod indeksem 0, czyli 'A'
.......
Kontynuując dostaniemy:
MAGIC2 DB 18,238,13,6,237,37,221,9,245,17,239,77

I to jest właśnie flinta w flincie. Kopiujemy to i zamieniamy linijki z tablicą MAGIC2. Wykonując ten sam algorytm z tym co jest w MAGIC2 otrzymujemy "SANTA CLARA".

przemor25   14 #36 17.10.2010 01:39

Właśnie przed chwilą zrobiłem to. Trzy minuty i po sprawie.

Po pierwszej kompilacji odpalałem plik ale on od razu znikał więc myślałem że to jakiś błąd i że o coś innego chodzi. Dopiero przed chwilą we właściwościach tego pliku zauważyłem że po zakończeniu zamyka się i nie miałem nawet szans odczytać tego co wychodzi po kompilacji (Gdyby nie ten mały szkopuł to wpadłbym na to że potem trzeba zamienić jedną linijkę kodu). To jest takie proste... :)

przemor25   14 #37 17.10.2010 01:40

I kolejne 500 pkt za zadanie specjalne uciekło sprzed nosa :)

Ryan   15 #38 17.10.2010 01:57

@wozniak.daniel: Zadania specjalne są trzy. Wszystko, absolutnie wszystko można w życiu zrobić fartem. Rzecz w tym, że rozwiązanie trzech zadań specjalnych przypadkiem jest bardzo, ale to bardzo nieprawdopodobne. :) O *to* chodzi. Zresztą Twój zarzut można zastosować do każdego pytania: można odpowiedzieć w 2 sekundy (czas niezbędny do złamania captchy) jeśli ma się szczęście.

Mogę wobec tego jedynie zapytać: co Twoim zdaniem powinien taki konkurs testować? :)

ppsx   4 #39 17.10.2010 02:15

BTW. Na placu boju pozostało jedynie 21 osób z kompletem poprawnych odpowiedzi :)

dsp32bit   6 #40 17.10.2010 04:13

ha o ile pod dosboxem skompilowalem o tyle XD flinta w flincie pominalem reszte aspektu w wygenerowaniu ponownie pliku :)
fajna zagadaka :) gratuluje pomyslo pomimo ze nie wpadlem by ponownie wkleic wygenerowany magic2 i szukalem algorytmow jak base64 i inne :) + za inwencje :)

MartinMax   3 #41 17.10.2010 07:43

Do autora tego genialnego pytania. Po komplikacji tego programiku komendą
fasm.exe dobre.asm

i uruchomieniu z linii poleceń otrzymałem takie coś:
ë ë ë   P ć L ! 3 Í 3
zarówno pod windowsem 7 32-bit jak i windowsem XP
Pytanie dlaczego?

command-dos   18 #42 17.10.2010 08:25

@SinTom - ja wróciłem do domu po 23 i to rozwiązałem - przynajmniej o tyle było łatwiejsze od poprzedniego, że nie było wątpliwości dla kogo ono jest ;)

NanoXen   4 #43 17.10.2010 08:30

a ja mam pytanko: czy poprostu kompilując i uruchamiajać pod winXP (bez zadnego dosboxa) nie uruchomi sie program ? bo mi tylko mrugneło okno komend i tyle go widziałem.... :/
po południu jeszcze to sprawdze, teraz czasu brak...

przemor25   14 #44 17.10.2010 08:53

Nawet nie trzeba było wpisywać komend tylko kompilować za pomocą tego programu, który był we wskazówce w pierwszej linijce. Mi się ładnie wszystko skompilowało... po północy :) Nie mogę sobie darować, że takie proste to było... jeszcze prostsze niż tydzień temu :(

StawikPiast   11 #45 17.10.2010 09:26

niestety zadanie niesprawdzone wczesniej. Ja dotarlem do FASM-a ale mam win 7 64 bit i nanim ten kod sie nie kompiluje!!!
A ze pod reka nie mialem 32 bit Windows to nie dzialal :(

command-dos   18 #46 17.10.2010 09:40

@StawikPiast - to nie wiesz, że nie odpalisz żadnego programu 16 bitowego pod "pure" 64bit win7? Co mówi wiki: "...FASM originally only ran in 16-bit flat real mode...", a dalej mamy: "...which later was changed to 32-bit one, and then supplemented with optional DPMI support." - czy przed kompilacją uruchomiłeś CWSDPMI, o którym wspomniał @Ryan? Tak na marginesie - pod ręką nie miałem ani windowsa, ani dos'a, a zadanie rozwiązane...

Kecarg   5 #47 17.10.2010 09:42

Nie no zadanie masakryczne. Ja akurat dobrze trafiłem na flat assembler (rozszyfrowałem z wierszyka), ale nic mi nie wychodziło. W końcu klikałem w menu w co popadnie, aż mi się ukazało słowo "Hello!" pomiędzy jakimiś oznaczeniami i pomyślałem, że o to chodzi tym bardziej, że nic innego i konkretnego mi nie wychodziło.

Ale i tak jestem zadowolony, że chociaż trochę odgadłem zadanie :)

Już się boję następnego zadania.

4lpha   10 #48 17.10.2010 10:13

Wiedziałem jak to zrobić, jednak problemem okazał się DOSBox. Zaskoczył mnie obsługą jedynie 32-bitowych procesorów. Dodam, że posiadam Linucha x64. Albo robiłem coś źle, albo zadanie nie było do końca fair.

StawikPiast   11 #49 17.10.2010 10:42

@command-dos

w tresci zadania nie bylo nic o CWSDPMI, zadanie tez bym pewnie rozwiazal, ale nie chcialo mi sie juz ani dosbox-a ani nic innego instalowac.

ppsx   4 #50 17.10.2010 10:51

@StawikPiast
A widzisz, niektórym się chciało...
Jak napisał Ryan: upór i kombinowanie.
Banda malkontentów.
Kropka.

NanoXen   4 #51 17.10.2010 11:00

wogole to rozbawił mnie fragment: "Warto także dodać, że istnieje szereg innych opcji, których nie będę szerzej opisywał, jak np. wirtualizacja innego systemu, XP Mode w Windows 7 czy rzeczy, o których nie mam pojęcia"
tak, jesli ktoś ma akurat zainstolwany tryb XP, albo wirtualizuje inny system to fajnie, a co jesli nie ? pobierać pół GB danych z sieci do zadania w którym ważny jest CZAS ? hmm...

plumber   3 #52 17.10.2010 11:01

Czy nie cudownie czyta się takich komentarzy które dotyczą tematu? Nie ma zabijania się o pierdaty. Ja niestety nie posiadam jeszcze takiej wiedzy a może po prostu za mało nad tym posiedziałem, pewnie p. Google by coś podpowiedział odnośnie ASM ;)
Pozdrawiam wszystkich którzy mieli odwagę do tego usiąść nie znając tematu programowania.

StawikPiast   11 #53 17.10.2010 11:02

@ppsx
Moze to bedzie dla ciebie szok, ale nie wszyscy maja czas na takie zabawy. Pewnie dlatego coraz zadziej biore udzial w konkursach, bo po pierwsze nie mam czasu siedziec i wyczekiwac pojawienia sie migajacej diody, a po drugie siedziesz i szukac rozwiazania na kiepsko napisane pytanie. na trop wpadlem, ale jako ze na systemie 64 bit to nie dziala to sobie po prostu odpuscilem, zwyczajnie z braku czasu. Ale jak dla mnie jest to po prostu zwalone pytanie, szczegolnie ze chyba juz wiekszosc komputerow z Windows 7 jest w wersji 64 bit.

Ryan   15 #54 17.10.2010 11:13

@MartinMax: A możesz nagrać zrzut pulpitu z poszczególnymi krokami, które wykonujesz i udostępnić gdzieś? Nadaje się do tego celu np. Windows Media Encoder. Z samego wyniku ciężko mi zgadywać o co chodzi.

@NanoXen: Uruchamiając program z linii komend albo zaznaczając we właściwościach pliku, żeby okno pozostało aktywne zobaczysz wynik.

@wozniak.daniel: Ale ja nie pytam "co mamy poprawić?" tylko "co by się Tobie podobało?". Jestem najzwyczajniej ciekaw, bo lubię rzeczową dyskusję. :)

Śmiem natomiast twierdzić, że stworzone przez biorących udział w konkursie programy na x86 mają całkiem sporo wspólnego z Intelem. A i podróż w czasie i sięgnięcie do historii komputerów PC (DOS) nie byłaby możliwa, gdyby nie istnienie Intela.

Zarzut o to, że nikogo nie interesuje Santa Clara ponownie można przypiąć do praktycznie każdego pytania. Uważasz, że ktoś po wyguglaniu odpowiedzi dotyczącej HT, QPI czy, bo ja wiem?, ilości rdzeni w konkretnych modelach, wzbogaci się o jakąś oszałamiającą wiedzę i będzie dalej drążył temat? Będzie, jeśli ma głód wiedzy. Tak samo jednak postąpi z tą odpowiedzią, więc niespecjalnie związek z Intelem jest mniejszy w przypadku zadań specjalnych niż przy normalnych pytaniach. :)

@NanoXen: Nadal walczysz o przynajmniej 500 punktów. Jeśli ignorujesz 500, bo to nie 750, to ja niespecjalnie się czuję winny w sytuacji, w której Ty nie masz woli walki. Poza tym powtarzam: opcji jest kilka. DOSBox waży 2MB, pobiera się i instaluje kilka sekund. :)

Ryan   15 #55 17.10.2010 11:21

@StawikPiast: Idąc dalej Twoim tokiem rozumowania dotyczącym czasu, nie każdy ma ochotę brać udział w tym konkursie i to niesprawiedliwe, bo powinien mieć szansę wygrać. Na własnych warunkach. To tak nie działa. :) Co do 64-bitowej windy: dało się rozwiązać na niej zadanie na kilka sposobów. Tak samo jak na Linuksie czy Mac OS X.

Najszybsza odpowiedź to 5minut, można było znaleźć się w pierwszej dziesiątce z czasem 20 minut. Pobranie i zainstalowanie DOSBoksa nie jest tutaj decydującym czynnikiem czasowym. Na mojej radiówce od wpisania w przeglądarkę dobreprogramy.pl do uruchomienia DOSBoksa potrzeba niespełna 45 sekund. Po starcie program informuje jak udostępnić katalog - wystarczy przeczytać kilka linii tekstu na ekranie. Masz w minutę gotowe środowisko uruchomieniowe. Nie pisz proszę, że system jest kluczowy w rozwiązaniu zadania. Jest ono zbyt wielopoziomowe, żeby jeden czynnik zmieniał czas o rząd wielkości.

Blotny   8 #56 17.10.2010 12:13

To było przyjemne zadanie. Zabawne jest to, że akurat nie wiedziałem, że potrzebny jest ten kompilator. Wklepałem w google "kompilator assembler", kliknął pierwszy z brzega, ale był spakowany, a ja chciałem taki, co od razu po ściągnięciu się uruchomi. Drugi też był spakowany, więc doszedłem do wniosku, że i 3 i 4 pewnie też, to sobie ściągnąłem ten drugi. No i właśnie to był ów FASM. Kłopot sprawił kod będący efektem programu i dałem za wygraną, bo myślałem, że jest to jakiś zapis systemu znaków i nie potrafiłem zgadnąć jaki.

Jakby nie było, mi się podobało. Mam nadzieję, że kolejne zadanie będzie równie sympatyczne.

ppsx   4 #57 17.10.2010 12:26

@StawikPiast
Może to Cię zdziwi, ale jakoś specjalnie nie poświęcam czasu na ten konkurs. Tak jak wielu, robię to z tzw. "doskoku".
Mam swoje życie prywatne, żonę, dzieci i 10 godzin pracy dziennie, więc niespecjalnie mam ochotę poświęcać zbyt dużo czasu.
Jest mrugająca dioda, to odpowiadam. Zwykłe pytanie zabiera nie więcej niż parę minut googlania, a te dwa zadania specjalne zabrały +/- "całe" pół godzinki (każde), wliczając w to wszystkie operacje - ściągnięcie paru megabajtów z netu i zrobieniu z tym co trzeba.

Powtarzam - banda malkontentów i wiecznie niezadowolonych dzieciaków.
Dajcie sobie spokój z konkursami, skoro nie możecie wykrzesać z siebie krzty zainteresowania, bo czasu wcale nie potrzeba tak wiele, to już wasz problem. Nie piję tu konkretnie do ciebie, tylko do wszystkich tych, którzy uważają, że wszystko w życiu muszą mieć podane na tacy.

ppsx   4 #58 17.10.2010 12:30

Aha, zapomniałem dodać, że mam Win7-x64, więc nie ominął mnie problem DOSBoxa.
Jak się chce, to można.

Dimatheus   22 #59 17.10.2010 13:07

Hej,

Zadanie naprawdę świetne... Kompilator z wierszyka odczytałem - z asystą żony :) - bez problemu. Wrzuciliśmy kod, skompilowaliśmy i... nic. Pojawiało się na chwilę czarne okienko i koniec. Więc zaczęliśmy kombinować z "flintą we flincie" skojarzoną z soczewkami - "Może to trzeba poodwracać...". Więc obracaliśmy, choć za każdym razem dostawaliśmy albo "krzaczki", albo przerwanie procesu. Dopiero później olśniło nas, że może trzeba zablokować znikanie okna po uruchomieniu - strzał w 10. Później pierwszy wynik z powrotem do kompilatora i mamy rozwiązanie. Choć przyznam szczerze, że zadanie pierwsze było zdecydowanie bardziej do kombinowania.

Pozdrawiam,
Dimatheus

LORDEK   5 #60 17.10.2010 13:09

A byłem tak blisko.. Miałem tego FLAT assemblera i po kompilacji i uruchomieniu pliku okienko znikało w ułamek sekundy. Teraz doszedłem do tego, że wystarczyło odpalić skompilowany w wierszu poleceń i jesteśmy w domu. Nie wiedziałem jak to zrobić dalej po skompilowaniu pliku wiec wpisałem byle jaką odpowiedź.. Taki błąd.. :/ Najwyraźniej nie należę do tych najwytrwalszych.. :D

WombaT   2 #61 17.10.2010 14:10

no ludzie, nie kazdy jest przeciez programistą...... Myslalem ze konkurs jest dla kazdego, a nie dla jakichs nocnych geniuszy bez zycia....

smiech na sali nie konkurs, mozna poswiecic cale dnie na to, nie poddawać sie, walczyc niemal do ostatniej sekundy, a i tak wygra znajomy redakcji....

Ryan   15 #62 17.10.2010 14:43

@wozniak.daniel: Mimo iż piszę z XP, MUSIAŁEM użyć DOSBoksa. Żeby mieć pewność, że zadanie może wykonać każdy. Powtórzę to, co napisałem wcześniej: czas potrzebny na użycie DOSBoksa nie jest kluczowy w uzyskaniu dobrego wyniku. Czasy z top 10 mają rozstrzał rzędu 15 minut a poprawna odpowiedź padła dopiero po 5 minutach. Gdybyśmy mówili o czasach minuta do dwóch (albo 10 do 20 sekund jak się dzieje w przypadku pytań), jasne, platforma nabierałaby kolosalnego znaczenia. Ale tak najzwyczajniej w świecie nie jest.

NanoXen   4 #63 17.10.2010 15:44

@Ryan
tak, straciłem wole walki po półtorej godzinie zastanawiania się o co chodzi, a później czemu mi to nie działa. Najbardziej mnie zdziwiło (i pewnie najbardziej odwiodło od dalszego szukania) czemu przykładowe programy zamieszczeone wraz z Flat assemblerem działały bez problemu, a Wasz jakoś nie chciał działać normalnie...

NanoXen   4 #64 17.10.2010 15:52

ogólnie wydaje mi się że za dużo mozliwych "pułapek" było w tym zadaniu i nie każdy na starcie miał równe szanse. No cóż Wasz konkurs, Wasze zasady :D

acha, nie pogardziłem 500 punktami, bo mogłem wziąć udział w konkursie dopiero pare godzin po ogłoszeniu, wiec tych bonusowych już było nie wiele, ale przystąpiłem do zadania. No ale cóż, nic z tego nie wyszło

FIREFENIKS   5 #65 17.10.2010 20:36

Totalna porazka takie latwe to bylo a niewpadlem na to zeby podmienic ta ostatnia linijke wpadlem na to zeby pobrac FASMw "W BREW TEMU CO MOWIA INNI MOZNA GO ODPALIC NA 7-mce" wpisujecie w program FASM to co zapisane w .txt kompilujecie albo po prostu wybieracie "run" odpala na sekunde ;) no dobra ale ja sprawdzilem cos innego, skomplilowany text (juz jako .exe) wzucilem do cmd razem z power shellem wystarczylo przeciagnac na terminal i upuscic wcisnac enter i wychodzila ta wlasciwa linijka wystarczylo jedynie ta linijke podmienic i jeszcze raz to puscic szczerze mowiac mialem pierwszy kontakt z asm i to mnie troche pogubilo strzelilem bo niewpadlem ze moze byc to takie proste pomysl z pytaniem byl genialny jak moglem na to nie wpasc takie proste i tak blisko tego bylem, gratuluje tym co na to wpadlii pozdro.

Ryan   15 #66 17.10.2010 21:09

@wozniak.daniel: Na to pytanie już odpowiedziałem. Bo sample w FASM na Windows to aplikacje Windows 32-bit. Dokładnie takie, jakie nie ruszą na Linuksie i Mac OS X bez jeszcze większych utrudnień.

ppsx   4 #67 17.10.2010 21:46

@wozniak.daniel
"W USA już dawno użytkownicy podali by Was do sądu za lekceważenie i straty."
Weź się, człowieku, nie ośmieszaj...

ppsx   4 #68 18.10.2010 01:51

@wozniak.daniel

"Powiedz mi gdzie napisałem coś głupiego?"
Zacytowałem. Twój tekst o ciąganiu po sądach jest żałosny, wyraziłem się chyba jasno.
Redakcja nikogo nie zmusza do udziału w konkursie. Poza tym, jak to zwykle w konkursach bywa, trzeba się czymś wykazać. Jeśli nie ma się elementarnej wiedzy, odrobiny samozaparcia i nie umie się rozwiązywać problemów, to się udziału nie bierze. Nie startuję w konkursach na logo serwisu XYZ, bo nijak nie potrafię się wypowiedzieć plastycznie. Czy mam przez to mieć do kogokolwiek pretensję?
I owszem, uważam, że ten konkurs jest DLA WSZYSTKICH (w odróżnieniu od powyższego przykładu). Bo każdy może wyszukać stosowne informacje. Tu nie ma nic twórczego - ot, zwykła spostrzegawczość, kojarzenie faktów i czasem trochę szczęścia, żeby być przy klawiaturze, gdy mrugnie legendarna dioda. Nic więcej.

"Tyle, że można napisać aplikację żeby działało wszędzie."
W asemblerze? Ciekawa koncepcja.
Poza tym chyba mówimy o króciutkim programiku, żeby nie powiedzieć "algorytmie", a nie o "aplikacji"... Wyobrażasz sobie reakcje użytkowników, gdy zamiast kilkunastu linijek dostaliby kilka-kilkanaście różnych plików albo, nie daj Boże, jeden plik źródłowy na parę ładnych stron? Myślisz, że wtedy byłoby więcej "trafień"? Przy takiej magii, to dopiero byłaby chryja, bo prawie każdy stuknąłby CTRL+W w tempie sprinterskim. A tak przynajmniej parę osób SPRÓBOWAŁO. Nawet jeśli nie wyszło. Ale przy odrobinie zacięcia, to nie stanowiło przecież problemu, co zostało już wcześniej przez kilka osób potwierdzone.
NIKT NIE MUSIAŁ PISAĆ ŻADNEGO PROGRAMU.
Procedura była (przepraszam, Ryan) debilnie prosta:
1) przeczytaj podpowiedź
2) ściągnij FLATa w wersji odpowiedniej dla swojego OSa, odpal go, WKLEJ kod programu, wybierz z menu opcję kompilacji i uruchom programik wynikowy
3) jeśli program się nie odpalił, to sprawdź dlaczego - PRZECZYTAJ, co OS wypisał i zapytaj Wujka, po czym zrób to, co zaleca
4) oglądając wynik działania programu (linijkę zaczynającą się TAK SAMO, jak fragment kompilowany przed chwilą) nie potrzeba było nawet ponownie czytać wierszyka (zresztą ja nie złapałem sensu sformułowania "flinta we flincie"), żeby skojarzyć podobieństwo i spróbować pociągnąć sprawę dalej. SPRÓBOWAĆ, łapiesz? Google w tym przypadku w zupełności wystarcza.
A to, że ktoś spina pośladki, bo mu się nie chce myśleć i kombinować, to nie powód, żeby wieszać psy na kimkolwiek innym niż na sobie samym. Bo to nie redakcja odpowiada za tumiwisizm czytelników.
Przy takim podejściu do sprawy, to rację bytu mają jedynie takie konkursy, w których wszyscy uczestnicy dostają główną nagrodę.

To tyle w tym temacie.

Pozdrawiam i życzę więcej obiektywizmu i zdroworozsądkowego podejścia do życia.

wiesios1   4 #69 18.10.2010 10:06

Programowałem swego czasu w assemblerze, dzięki czemu mogłem zrozumieć ten kod i rozwiązać zadanie z pomocą arkusza kalkulacyjnego (Calc). Jednak nigdy nie zetknąłem się z FASMem, słowo FLAT z wierszyka odczytałem jako tzw. model pamięci, a "we flincie flinta" zrozumiałem już po rozwiązaniu.
Nie mniej zadanko ciekawe.

Karach   3 #70 18.10.2010 12:38

Windows 7 x86 i nie trzeba było żadnego DosBoxa. ;) FLAT zadziałał nadspodziewanie dobrze, tylko okienko z wynikiem nieco za szybko znikało. Nic, czemu sprawny PrintScreen nie zaradził. :P

Miszkurka2000   16 #71 18.10.2010 12:38

A ja się nadal dobrze bawię. Programista ze mnie żaden ale przy zadaniach można się dowiedzieć kilku ciekawych rzeczy.

Ryan   15 #72 18.10.2010 14:18

@wozniak.daniel: Wiesz co? Twoje początkowe komentarze mimo iż krytyczne były konstruktywne i celne. Ale jak widzę teksty o programach, które działają na wszystkim albo że (o zgrozo!) płaski model pamięci jest nieciekawy na dłuższą metę, to zaczynam się zastanawiać kiedy Ci się to trollowanie znudzi.

Ryan   15 #73 19.10.2010 11:59

@wozniak.daniel: Każda natywna aplikacja pod Windows czy Linuksa ma płaski dostęp do pamięci i korzysta z płaskiego adresowania. Alternatywą dla płaskiego modelu pamięci jest segmentacja, taka jak pod DOSem w trybie rzeczywistym pracy procesora. Mechanizmy translacji adresów logicznych do fizycznych są niezależne względem trybu adresowania. To pewnie do nich się odnosiłeś. Mimo wszystko błędnie.

O systemach operacyjnych mam pojęcie przynajmniej podstawowe - pisałem sterowniki dla systemów sterujących urządzeniami wbudowanymi (głównie NutOS) na studiach a później trzy lata zajmowałem się komponentem systemowym i build systemem w Core File Services, Storage Solutions Division oraz Core Operating Systems Division w Microsofcie. Sądzę, że to podpada pod "bawienie się w tworzenie OSów". Ale fajnie, że dostrzegasz coś przeciwnego. Miło usłyszeć od kogoś obcego, kto nie ma pojęcia o mnie, że jestem niekompetentny.

Ciekaw też jestem jak Twoja propozycja wykorzystania Javy ma się do Twojej wcześniejszej krytyki braku związku zadania z Intelem. Rozumiem, że C# i Java są bliższe tematycznie Intelowi niż assembler na procesory Intela, tak?

Metoda kija i marchewki (pewnie nie jesteś w stanie tego zrobić...) na mnie nie działa, bo mam całkiem dobre pojęcie na temat tego co potrafię, a czego nie i nie muszę spekulować na własny temat tak jak to robisz Ty.

Niekonsekwencję w krytyce wykazałem Ci już kilkukrotnie. Każdy z Twoich argumentów w izolacji broni się, ale część z nich jest sprzeczna ze sobą (choćby ten o Javie postawiony obok tego o powiązaniu zadania z Intelem) i - powtórzę to - pchanie ich jako całości śmierdzi na kilometr trolowaniem.

Co więcej moja prośba o koherentną krytykę spotkała się z wykrętem. W takiej sytuacji ciężko mi jest dalej dyskutować z Tobą, mimo najszczerszych chęci. Zakopywać nie mamy czego, bo ja nie żywię negatywnych emocji do nikogo na stronie. Czasami po prostu nie widzę sensu w marnowaniu czasu na udowadnianie, że nie jestem wielbłądem. :)

jozzy   3 #74 19.10.2010 23:34

a tak z ciekawości co trzeba było zrobić pod linuchem 64bit, żeby ten program skompilował sie poprawnie ?

Ryan   15 #75 20.10.2010 11:37

Ech. "Płaskim modelem pamięci chodziło mi o pisanie aplikacji" - słucham? Problem w komunikacji między nami może wynikać z tego, że używasz słów w sposób dla mnie niezrozumiały. Co to znaczy "pisać program w płaskim modelu pamięci"? Powtórzę: każda natywna aplikacja Windows i Linux "ma" płaski model pamięci.

Co do Javy i C# - nic Ci nie wciskam. Zadałem Ci proste pytanie: jak Twoja propozycja rozwiązania problemu "kod nie uruchamia się wszędzie" przy pomocy Javy ma się do Twoich wcześniejszych zarzutów wobec zadania?

Napiszę to jeszcze raz, żeby było jasne o co mi chodzi: wobec zadania masz szereg zarzutów. Problem w tym, że Twoje sugestie co do tego jak coś zrobić lepiej czasem sprawiają, że inne Twoje zarzuty mają jeszcze silniejszą moc. Chyba nie potrafię już tego jaśniej napisać.

Co do części Twojej wypowiedzi jakobyś nie sugerował, że zadanie ma być związane z Intelem, napisałeś:
"Tyle, że pamiętaj że tamte były pytaniami (sic!) i dotyczył Intela. Tu natomiast Twoje argumenty nie są przekonywujące." Co w takim razie miałeś na myśli jeśli nie sugestię, że moje zadanie było słabo z Intelem związane? Bo ja wyraźnie widzę że piszesz, że moje argumenty mają sens w odniesieniu do pytań związanych z intelem a nie zadań. Ma to sens wyłącznie jeśli uważasz, że moje zadanie z Intelem nie miało nic wspólnego.

I nie, nie mam problemów ze zrozumieniem pisanego tekstu. Jeśli jednak piszesz pod wpływem emocji i produkujesz teksty w których części przekazu muszę się domyślać (że przytoczę tylko: "płaskim modelem pamięci chodziło mi o pisanie aplikacji") to nie miej do mnie pretensji, że czasem moja szklana kula nie działa.

Po to zadaję pytania odnośnie tego co piszesz - żeby zrozumieć co masz na myśli. Bo często nie jest to jasne z tekstu. Ty w odpowiedzi atakujesz mnie, zamiast podjąć rozmowę. Zarzucasz mi niekompetencję i oceniasz mnie bez wiedzy na mój temat. To nie jest eleganckie i naprawdę pachnie trollowaniem.

I nie kasuję żadnych komentarzy. Szczególnie nie kasuję tych negatywnych, bo więcej problemów z cenzurą niż z odpowiedzią na absurdalne zarzuty. Takie jak np. ten, że coś kasuję. :)

Pisz na mój temat co chcesz i gdzie chcesz. Jestem przekonany, że Twoja osobista wendetta ucieszy kilka osób, ale niespecjalnie poruszy masy. :]

@jozzy: Jest kilka sposobów. Albo odpalasz całość w DOSBoksie, albo pobierasz Linuksowy FASM, kompilujesz nim program i odpalasz w DOSBoksie. Z tego co mi wiadomo większość dystrybucji pozwala na uruchamianie Linuksowych aplikacji 32-bit z kopyta (np. Ubuntu). Niektóre mogą wymagać instalacji specjalnej paczki (np. Debian).

Dimatheus   22 #76 21.10.2010 12:50

Hej,

@ Ryan

Mam pomysł na kolejne zadanie specjalne. Oto jego treść: "Procesor Intela - żeby nie było, że nie związane z konkursem - działa na FSB 266MHz z mnożnikiem 7,5. Jaką prędkością taktowany jest procesor?" I teraz zastanawiam się, ile osób po zadaniu będzie burzyć pianę z tego powodu, że na Linux'ie nie mieli zainstalowanego kalkulatora, a w Windows'ie był on domyślny obecny...

Czasami takie zarzuty totalnie osłabiają...

Pozdrawiam,
Dimatheus

jozzy   3 #77 22.10.2010 23:10

@Dimatheus - tu nie chodzi o to, że nie ktoś miał jakiś program a ktoś inny nie miał. Chodziło głównie o to, że pod systemami 64bit to nie działało lub jak u mnie pod linuksem nie kompilowało. Zwykły użytkownik windy 32 bit sciągnął sobie flat assembler kompilacja i wynik. Przy sciągnięciu miałem identyczne szanse - sciągnięcie, rozpakowanie ~4min, kompilacja i zonk oO. Patrzę 'format MZ' no to google, zmiana na ELF.
Kompilacja :
flat assembler version 1.69.25 (16384 kilobytes memory)
zad.asm [6]:
mov si, MAGIC2
error: value out of range.

No to 'format ELF64', kompilacja:
flat assembler version 1.69.25 (16384 kilobytes memory)
zad.asm [3]:
push cs
error: illegal instruction.

znów WTF..

@Ryan - kompilacja z 'format MZ' i DosBox =) ale kto to wiedział..

Radek68   18 #78 24.10.2010 23:58

Witam na Twoim blogu!
Na początku napiszę (do redakcji), że to bez sensu promować ludzi piszacych programy i znających sie na kompilatorach.
A co z hydraulikami - A co z piekarzami - czytelnikami DP?
Jak to pisała REDAKCJA?:
"Kto może uczestniczyć? Każdy użytkownik naszego serwisu, wystarczy tylko konto"

Ale konto profesora etyki jak widać różni się od profesora informatyki...

No coż...


Mam jeszcze jedną spawę:
"Co zatem zrobić, żeby na każdej platformie dało się uruchomić aplikację? Oprzeć o DOS, platformę, której nie ma nikt!"

A skąd to autorytarne stwierdzenie, że nikt? A u mnie w pracy na CZYSTYM DOSie (nie jakimś emulatorze) pracuje jeszcze kilku ludzi - dzień w dzień po kilka godzin!

Może oni zadania nie rozwiążą, ale DOSa mają... ;)

ircykk   4 #79 25.10.2010 01:51

Może i każdy mógłby to rozwiązać ale tu liczy się czas, jak myślicie kto pierwszy to rozwiąże programista asamblera czy sprzedawca w kiosku? Konkurs jest niesprawiedliwy więc zmieniam skórkę na moją ulubiona zieloną. Pozdrawiam

webnull   9 #80 03.01.2011 21:15

@wozniak.daniel
Bo tak się najczęściej zachowujesz, jak troll niestety.
Spójrz na Siebie.