User Tag List

Показано с 1 по 10 из 531

Тема: ZX Like Pascal

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    blackmirror, конкретно на этом паскале вот:
    Код:
    procedure DrawLine;
    begin
      dx:=0;
      if (x1-x2)<$8000 then dx:=x1-x2;
      if (x2-x1)<$8000 then dx:=x2-x1;
      dy:=0;
      if (y1-y2)<$8000 then dy:=y1-y2;
      if (y2-y1)<$8000 then dy:=y2-y1;
    
      if (x2-x1)<$8000 then dx1:=1 else dx1:=$FFFF;
      if (y2-y1)<$8000 then dy1:=1 else dy1:=$FFFF;
    
      if dx>dy then begin
        y:=dx / 2;
        for i:=dx downto 0 do begin
          asm(PUTPIXELA);
          y:=y+dy;
          if y>dx then begin
            y1:=y1+dy1;
            y:=y-dx;
          end;
          x1:=x1+dx1;
        end;
      end else begin
        y:=dy / 2;
        for i:=dy downto 0 do begin
          asm(PUTPIXELA);
          y:=y+dx;
          if y>dy then begin
            x1:=x1+dx1;
            y:=y-dy;
          end;
          y1:=y1+dy1;
        end;
      end;
    end;
    От привычного паскаля отличается тем, что в функции и процедуры параметры не передаются (надеюсь, что только пока не передаются) и для этого используются глобальные переменные X1,Y1,X2,Y2. Процедура адаптирована на использование целочисленных переменных с разрядностью 16 бит, хотя, наверное хватит и 8 бит, если координаты не превышают 0-255. Позже попробую.
    Процедура точки PUTPIXELA на асме, берёт координаты из переменных X1 и Y1.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    AzAtom, получается, что алгоритмы почти совпадают, а меньшая эффективность только из-за использования паскаля и 16 разрядных переменных. Вообще отсутствие указателей и оператора goto сильно мешает написать эффективный алгоритм рисования линии на чистом паскале. В такой ситуации проще весь алгоритм делать на асме, а не только рисование точки.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. PASCAL + MACRO11 (УКНЦ-ДВК).
    от hobot в разделе ДВК, УКНЦ
    Ответов: 341
    Последнее: 15.01.2022, 17:30
  2. Turbo Pascal для msx/msx2
    от Оззя в разделе MSX
    Ответов: 4
    Последнее: 23.02.2020, 23:59
  3. в розыске дисковая версия Pascal.
    от goblinish в разделе Программирование
    Ответов: 18
    Последнее: 16.08.2011, 16:30
  4. Pascal
    от Andrew771 в разделе Программирование
    Ответов: 22
    Последнее: 24.05.2011, 21:20
  5. Скопировать/вставить из/в HiSoft Pascal в эмуляторе
    от kit в разделе Программирование
    Ответов: 1
    Последнее: 05.02.2010, 15:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •