1. Pascal / Говнокод #3373

    +100

    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
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    procedure WriteCharXY(_bx,by:integer; ch:char; tcol:word);
    var buf:array[1..18,1..12] of word;
    XOfs:longint;
    x,y,px,py:integer;
    begin
    XOfs:=GetCharOffset(ch);
    if xofs=0 then fillchar(buf,sizeof(buf),200) else
    fromXMS(XOfs,addr(buf),432);
    for y:=1 to 18 do
    for x:=1 to 12 do begin
    if buf[y,x]=0 then begin
       px:=_bx+x; py:=by+y;
       asm
       mov   bx,px;  add   bx,actviewport.x1;  cmp   bx,fillviewport.x1;
       jl    @end;  cmp   bx,fillviewport.x2; jg    @end;
       mov   cx,currentmode.scanline;  cmp   bx,cx;  jnb   @end;
       mov   ax,py;  add   ax,actviewport.y1;  cmp   ax,fillviewport.y1;
       jl    @end;  cmp   ax,fillviewport.y2;  jg    @end;
       add   ax,pageadd;  mul   cx;  add   bx,bx;
       add   ax,bx;  adc   dx,0;  mov   si,ax;
       cmp   dx,lastbank;  je    @next;  push  dx;
       call  nearsetbank2;  @next:  mov   es,[currentmode.writeptr];
       mov   ax,tcol;  {cmp   writemode,0;  jne   @doxor;}
       mov   es:[si],ax;  {jmp   @end;  @doxor: xor   es:[si],ax;}  @end:
       end;
    end;
    end;
    end;
    
    procedure WriteStringXY(x,y,maxx:integer; s:string; col:word);
    var tx,ty:integer; i:word;
    begin tx:=x; ty:=y;
    for i:=0 to length(s) do begin
    writecharXY(tx,ty,s[i],col);
    inc(tx,GetCharWidth(s[i]));
    if (tx>=maxx) and (s[i]=' ') then begin inc(ty,18); tx:=x; end;
    end;
    end;
    
    procedure Write5Strings(x,y,maxx:integer; col:word; s1,s2,s3,s4,s5:string;
    letterdelay:byte);
    var tx,ty:integer; t,i:word;
    st:array[1..5] of string;
    begin tx:=x; ty:=y;
    st[1]:=s1; st[2]:=s2; st[3]:=s3; st[4]:=s4; st[5]:=s5;
    for t:=1 to 5 do begin
    if length(st[t])=0 then exit;
       for i:=1 to length(st[t]) do begin
       writecharXY(tx,ty,st[t][i],col);
       if letterdelay>0 then pdel(letterdelay);
       inc(tx,GetCharWidth(st[t][i]));
       if (tx>=maxx-100) and (st[t][i]=' ') then begin
       inc(ty,18); tx:=x; end;
       end;
    end;
    end;

    Молодость.

    Запостил: runewalsh, 01 Июня 2010

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

    • скока прыщей
      Ответить
    • Это Трубо Поскакаль? Да, я до XMS не дошёл...
      Ответить
      • >я до XMS не дошёл
        Лузер.
        Ответить
      • >не дошёл
        Прежде чем лезть в языки программирования - научись хотя-бы ходить...
        Ответить
        • "лезть в языки программирования"
          Ты хоть в курсе, что такое XMS?
          Ответить
    • Что-то эти процедуры делают, жопой чувствую.
      Ответить
    • да, я в децтве тоже любил делать асемблерные вставки в тубро паскале, и написал модуль для отключения курсора в текстовом режиме. Потом оказалось что его все написали
      Ответить
    • Че-то говно я заметил только в procedure Write5Strings. С этими циклами и массивами...
      Остальное, ну вывод в видеопамять, и че?
      Ну форматирование убийственное еще...
      Ответить
      • Говнокод в том, что это дельфи.
        Ответить
        • Нет, Pascal
          Ответить
        • Делфи я использую. У меня свой сайт о делфи. Так что * ты * * *.
          Ответить
          • как на вкус кактус? солишь-перчишь али так поглощаешь? :)
            Ответить
          • Смех смехом, а Delphi 1.0 может компилировать программы для DOS. Надо только модуль System перекомпилировать. Есть инструкция, но в ней автор забывает перед выходом закрыть файлы Input и Output. Могу поискать у себя доработанную версию, если надо.
            Ответить
            • Да не надо. Кому ДОС сейчас нужен, тот может спокойно использовать микроконтроллеры AVR. Но говоря о микроконтроллерах - не использовать C, Paskal! - писать только на ассемблере, на родной AVR Studio. Я умею, а ты?
              Ответить
            • давай, наверняка получилось ароматно
              Ответить
    • За такой Asm убил бы.......
      Жесть, молодость всоминаю...........................
      Ответить

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