1. Си / Говнокод #9475

    +142

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    #include <dos.h>
    #include <conio.h>
    #include <graphics.h>
    
    
    void pix(unsigned int x, unsigned int  y, unsigned char c){
        unsigned char nb, ms, bt;                     //nomerbit maska bite
        unsigned int ofs;                      //sdvig
        unsigned char *pb;                //ukazatel na bit
    
        ofs= x/8 + y*80;
        nb=7-(x % 8);
        pb=(unsigned char *)MK_FP(0xA000, ofs);
        bt=*pb;
        ms=1<<nb;
    
        if( c !=0  ){
            bt=bt |  ms;
        }else{
            bt=bt&(~ms);
        };
    
        *pb=bt;
    };
    
    void main(){
        int drDriver, grMode;
        drDriver=VGA;
        grMode=VGAHI;
        initgraph(&drDriver, &grMode, "C:\\BORLANDC\\BGI");
        pix(60,30,15);
        getch();
    };

    13: где взял адрес
    28,29: с чего ты решил, что для паскалевского драйвера подходят определения сишного драйвера?
    30: почему драйвер паскалевский?

    all: ебанный пиздец, кто ж так пишет...

    Запостил: d4rw1n1s7, 17 Февраля 2012

    Комментарии (22) RSS

    • С чего ты взял, что драйвер поцкальский ?
      ТурбоЦ / БорландЦ точ также графику инициализировали.
      Ответить
    • Ты сам-то под доску никогда штоле не писал, умник хренов ?
      Ответить
      • показать все, что скрытоПисал, да только когда мне надо было писать под дос, то я брал си с асмом, а не борланд с кривыми руками не оттуда растущими! и да, на асме эта лаба будет няшней!
        Ответить
        • Турбо-паскакаль был самым кавайным творением Борланда. А ты не песди, для того, чтобы писать большие софтины на ассемблере нужно побольше мозгов, чем твои "640 грамм, которых должно быть достаточно каждому".
          Ответить
          • > большие софтины на ассемблере
            ммм... мусье знает толк в извращениях
            Ответить
            • http://en.wikipedia.org/wiki/Virtual_Pascal
              То был мой любимый компилятор Паскаля. Большей частью написан на асме.
              P.S. Целиком писать что-либо на ассемблере у меня тоже кишка тонка.
              Ответить
        • Смотри сюда, кривой борланд, заводишь
          screen: array [0..199,0..319] of byte absolute $A000:$0000
          и всё, "работа с памятью напрямую" (с) становится лёгкой и приятной, и никаких новых трудностей турбопас по сревнения с сишкой или асмом не вызывает.
          Ответить
    • Да ну это ж лаба, епт
      Ответить
    • с чего ты взял что паскалевский?
      сишный драйвер, епт ты наверное вообще под дос никогда не писал
      Ответить
    • Насчет "где взял адрес" убило) автор сего поста : ты прежде чем выложить хоть почитал бы чтоли про видеопамять чтонить..... на адреса A000h:0000h - 0A000h:0FFFFh отображается видеопамять в VGA графических режимах, причем не только в реальном режиме, для защищенного все что поменяется это то что для любого режима всю видеопамять можно будет отобразить благодаря 4Гб сегментам...
      Ответить
    • void main(){
      /* ... */
      };
      Зачем точка с запятой в конце?
      Ответить
      • Вам сюда http://govnokod.ru/9434
        Ответить
        • Если уж на то пошло, то эта лишняя точка с запятой принципиально отличается от той. В том случае лишняя точка с запятой представляла собой пустой statement - фичу, существовавшую и в С, и в С++ с начала времен. В том случае она лишняя, но тем не мнеее совершенно легальная.

          В этом случае лишняя точка с запятой располагается вне тела функции. Такая точка с запятой уже никак не может представлять пустой statement. Она может представлять лишь пустую декларацию. Однако формально ни С++, ни C не разрешают использование пустых деклараций. Несмотря на то, что большинство компиляторов "смотрят сквозь пальцы" на пустые декларации (даже Comeau ограничивается лишь предупреждением), вышеприведенный код - ошибочен.

          Последнее время шли разговоры о возможной легализации пустых деклараций, но навскидку не скажу, чем все это закончилось.
          Ответить
    • >где взял адрес
      Это шутка такая?
      Про "паскалевский драйвер" то же довольно интересное умозаключение.
      Ответить
      • это зависит от того, для чего багланды изобрели свой bgi, для tp или tc
        Ответить
    • В чём разница между "сишным" и "паскалеским" драйвером? Типа одни можно вызвать только из сишкопроги, а другие - только из паскалопроги? А откуда прога знает, на чём она написана?
      Ответить
      • #define lang c
        Ответить
      • Мне вот что-то вспомнилось: у паскаля другой порядок передачи параметров через стек, вроде. Да, в паскале можно было указать stdcall у функции, чтобы она принимала параметры как сишная. Или это тут ни при чем?
        Ответить
        • И чё, какую конвенцию задашь, такой порядок и будет.
          Но это тут действительно ни при чём, просто автор школьник.
          Ответить
    • http://www.youtube.com/watch?v=XHosLhPEN3k
      Ответить
    • Афтар, прежде чем доепываться, сначала изучи тему. Во первых прямая работа с видеопамятью и адрес взят из документации, во вторых borland помимо pascal и delphi разрабатывала среды разработки под названием Borland C и Borland Builder.

      А код вменяемый, разве что древнющих времен, когда компьютеры были тупые и тормозные с процами так на 5 МГц.
      Ответить
    • Вы уж либо put_pixel (или как там она называлась), либо _asm mov ax, 12h; int 10h , а то как-то... эклектичненько.
      Ответить

    Добавить комментарий