* OSASK改造パッチ
 -cmd054()の途中から、最後までを入れ替え
           (offset) gbox = cmd[ 8];
           (offset) win = gbox->window;
           TEST(AH, 0x80);
           if (== 0) {
               if (win->draw_enable != 0) {
  +                AL = gbox->mode;
  +                AL &= 0x1f;
  +                if (AL == 1)
  +                    goto mode1;
  +                if (AL == 4)
  +                    goto mode4;
  +                INT(0x03);
  +    mode1:
                   EAX = ESP;
                   PUSH((int) 0x0000);
                   PUSH(SS);
                   PUSH(EAX);
                   PUSH(ECX); /* lines(1) */
                   EAX = cmd[16];
                   ECX = cmd[20];
                   EDX = cmd[24];
                   EBX = cmd[28];
                   if (EAX > EDX)
                       XCHG(EAX, EDX);
                   if (ECX > EBX)
                       XCHG(ECX, EBX);
                   EDX++;
                   EBX++;
                   EDX -= EAX;
                   EBX -= ECX;
                   EAX -= gbox->vx0;
                   ECX -= gbox->vy0;
                   (short) [SS:ESP + 18] -= AX;
                   (short) [SS:ESP + 22] -= CX;
                   EAX += gbox->x0;
                   ECX += gbox->y0;
                   PUSH(EBX);
                   PUSH(EDX);
                   PUSH(ECX);
                   PUSH(EAX);
                   PUSH(win->slot);
                   PUSH(cmd[ 4]); /* opt */
                   PUSH((int) 0x0418); /* linear dots */
                   EBX = ESP;
                   CALL(0x0017,0); // GUIGUI統合shellcall
                   ESP += 44;
  +                goto fin;
  +    mode4:
  +                /* 面倒なので手抜きでgbox全部をflushする */
  +                ECX = gbox->x_bsize;
  +                ECX -= gbox->x_vsize;
  +                ECX *= 4;
  +                PUSH(0x0000);
  +                PUSH(DS);
  +                PUSH(gbox->vbuf0);
  +                PUSH(ECX);
  +                PUSH(gbox->y_vsize);
  +                PUSH(gbox->x_vsize);
  +                PUSH(gbox->y0);
  +                PUSH(gbox->x0);
  +                PUSH(win->slot);
  +                PUSH(gbox->mode);
  +                EAX = gbox->mode;
  +                PUSH(EAX);
  +                PUSH(0x0414);
  +                EBX = ESP;
  +                CALL(0x0017,0); // GUIGUI統合shellcall
  +                ESP += 44;
  +                goto fin;
  *            }
  *            gbox->flags |= WINFLAG_MUSTREDRAW;
           }
  +fin:
           ESP += 24;
           POP(EBP);
           (offset) cmd += 32;
           asmout("JMP nextcmd");
       }
       SAFE_CUT("DB ..$-$-1,'drawLine(GB):Invalid option ',0,'.'");
   }

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS