User Tag List

Показано с 1 по 5 из 5

Тема: Программирование на free Pascal в OS4.1

  1. #1

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    928
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Программирование на free Pascal в OS4.1

    Написал такую программку( выводит текст в окно, стрелками влево-вправо можно его подвигать):
    Код:
    Program Window;
    uses  exec, sysutils, utility, intuition,agraphics,diskfont;
    procedure Paint(AWin:PWindow;x:SmallInt;y:SmallInt);
    var
            str:AnsiString;
    begin
            SetRast(AWin^.RPort,0);
            str:='Amiga text';
            SetAPen(AWin^.RPort,1);
            SetDrMd(AWin^.RPort,JAM1);
            GFXMove(AWin^.RPort,x,y);
            GFXText(AWin^.RPort,PChar(str), Length(str));
    end;
    var
            win:PWindow;
            done:Boolean=False;
            Msg:PMessage;
            tatr:TTextAttr;
            pfont:PTextFont;
            fname:AnsiString;
            key:Word;
            x:SmallInt=50;
            y:SmallInt=50;
    begin
            win:=OpenWindowTags(nil,
            [WA_Width,AsTag(300),
            WA_Height,AsTag(200),
            WA_MaxWidth,AsTag(640),
            WA_MaxHeight,AsTag(256),
            WA_MinWidth,AsTag(100),
            WA_MinHeight,AsTag(100),
            WA_Title,AsTag('My Window'),
            WA_DepthGadget,AsTag(True),
            WA_SizeGadget,AsTag(True),
            WA_DragBar,AsTag(True),
            WA_Activate,ASTag(True),
            WA_Flags,WFLG_Closegadget or WFLG_GIMMEZEROZERO,
            WA_IDCMP,IDCMP_CLOSEWINDOW or IDCMP_REFRESHWINDOW or IDCMP_RAWKEY ,
            TAG_END]);
            fname:='topaz.font';
            tatr.ta_Name:=PChar(fname);
            tatr.ta_YSize:=8;
            tatr.ta_Flags:=0;
            tatr.ta_Style:=0;
            //IF OpenDiskFont(@tatr)<>nil then write('OK!');
            pfont:= OpenDiskFont(@tatr);
            SetFont(Win^.RPort,pfont);
            Paint(win,x,y);
            repeat
                    key:=0;
                    //WaitPort(Win^.UserPort);
                    Msg:=GetMsg(Win^.UserPort);
                    if Msg<>nil then
                            begin
                                    case PIntuiMessage(Msg)^.IClass of
                                            IDCMP_CloseWindow:
                                                    begin
                                                            done:=True;
                                                            continue;
                                                    end;
                                            IDCMP_REFRESHWINDOW:
                                                    Paint(Win,x,y);
                                            IDCMP_RAWKEY:
                                                    key:= PIntuiMessage(Msg)^.Code;
                                    end;
                            ReplyMsg(Msg);
                            end;
            if (key<>0) and (key=$4F) or (key=$4E) then
                    begin
                            case key of
                                    $4f:
                                            x:=x-1;
                                    $4E:
                                            x:=x+1;
                            end;
                          Paint(Win,x,y);
                    end;
    
            Until done;
            CloseWindow(Win);
    end.
    В общем окно с текстом появилось. Заметил странность с обработкой событий для нажатия клавиш. После нажатия и удержания клавиши( стрелка влево или вправо) текст сразу смещается на один пиксель, а затем дальнейшее смещение текста происходит через паузу в одну секунду. Нет ли в ОС какой настройки автоповтора для клавиатуры? Если такая настройка есть, как поменять её программно?
    Пробовал менять палитру функцией SetRGB4. При смене палитры цвета меняются для всего экрана. И вопрос, какие индексы цветов использует система? Я хочу настроить палитру для окна, но что бы не изменять цветовые настройки вокбенча.
    Последний раз редактировалось Smalovsky; 02.09.2023 в 16:46.
    ¡Un momento, señor fiscal!


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

  3. #2

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    928
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кодеров под амигу не осталось?
    Разобрался с воркбенчем. Он использует первые 16 индексов в таблице цветов. Но ,всё равно, программировать графику через битовые плоскости с ограничением в 256 индексированных цветов это не то, что мне хочется на PPC. Полюбому нужно оваивать cybergraphics.librarry, в которой есть 24-32 битные цвета и пиксельные массивы.
    Осваиваю ассемблер. Пока научился получать доступ к переменным. Для примера программа, в которой к переменной x прибавляется 55:
    Код:
    Program Test_FPC;
    var
    i:LongInt;
    begin
    i:=680000;
    
    asm
    addis r2,r0,i@hi
    ori r2,r2,i@l
    lwz r3,(r2)
    addi r3,r3,55
    stw r3,(r2)
    end;
    
    write('result'#10#13'');
    write('i=', i,''#10#13'');
    
    end.
    Так кодеров вообще не осталось?..
    ¡Un momento, señor fiscal!


  4. #3

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,644
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Так кодеров вообще не осталось?
    Я только писал эмулятор Спектрума под совместимый процессор. В качестве справочника использовал книгу для Амиги.
    С уважением, Станислав.

  5. #4

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    928
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    73 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    CityAceE, я использую другой ассемблер и другой процессор( PowerPC 604e Phase5 CyberStorm).
    Последний раз редактировалось Smalovsky; 18.09.2023 в 14:18.
    ¡Un momento, señor fiscal!


  6. #5

    Регистрация
    30.03.2005
    Адрес
    minsk
    Сообщений
    115
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    37
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Под Паскаль точно не найдешь кодеров на ОС4, все только C/C++

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

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

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

Похожие темы

  1. Софт для PC : Pascal, Object Pascal, Delphi
    от hobot в разделе PC-совместимые компьютеры
    Ответов: 0
    Последнее: 02.02.2021, 01:36
  2. The Oliver Twins games are free
    от morcar1975 в разделе Игры
    Ответов: 9
    Последнее: 17.04.2018, 09:44
  3. Программирование в Pascal (сишники идут лесом)
    от Smalovsky в разделе Творчество
    Ответов: 22
    Последнее: 29.12.2016, 23:09
  4. New Free Spectrum Game
    от Jonathan в разделе RST#38
    Ответов: 4
    Последнее: 21.06.2007, 21:33

Ваши права

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