|
|
| version 1.5, 2004/02/20 15:20:30 | version 1.7, 2004/02/21 04:48:35 |
|---|---|
| Line 9 typedef struct { | Line 9 typedef struct { |
| BYTE pal; | BYTE pal; |
| } GPSET; | } GPSET; |
| typedef struct { | |
| BYTE x[2]; | |
| BYTE y[2]; | |
| } GPOINT2; | |
| // ---- CLS | // ---- CLS |
| Line 16 REG8 lio_gcls(LIOWORK lio) { | Line 21 REG8 lio_gcls(LIOWORK lio) { |
| SINT16 y; | SINT16 y; |
| lio_updaterange(lio); | lio_updatedraw(lio); |
| for (y=lio->range.y1; y<=lio->range.y2; y++) { | for (y=lio->draw.y1; y<=lio->draw.y2; y++) { |
| lio_line(lio, lio->range.x1, lio->range.x2, y, lio->gcolor1.bgcolor); | lio_line(lio, lio->draw.x1, lio->draw.x2, y, lio->mem.bgcolor); |
| } | } |
| return(LIO_SUCCESS); | return(LIO_SUCCESS); |
| } | } |
| Line 32 REG8 lio_gpset(LIOWORK lio) { | Line 37 REG8 lio_gpset(LIOWORK lio) { |
| SINT16 x; | SINT16 x; |
| SINT16 y; | SINT16 y; |
| lio_updaterange(lio); | lio_updatedraw(lio); |
| i286_memstr_read(CPU_DS, CPU_BX, &dat, sizeof(dat)); | i286_memstr_read(CPU_DS, CPU_BX, &dat, sizeof(dat)); |
| if (dat.pal >= lio->gcolor1.palmax) { | x = (SINT16)LOADINTELWORD(dat.x); |
| if (CPU_AH == 2) { | y = (SINT16)LOADINTELWORD(dat.y); |
| dat.pal = lio->gcolor1.bgcolor; | if (dat.pal == 0xff) { |
| if (CPU_AH == 1) { | |
| dat.pal = lio->mem.fgcolor; | |
| } | } |
| else { | else { |
| dat.pal = lio->gcolor1.fgcolor; | dat.pal = lio->mem.bgcolor; |
| } | } |
| } | } |
| lio_pset(lio, x, y, dat.pal); | |
| return(LIO_SUCCESS); | |
| } | |
| // ---- GPOINT2 | |
| REG8 lio_gpoint2(LIOWORK lio) { | |
| GPOINT2 dat; | |
| SINT16 x; | |
| SINT16 y; | |
| REG8 ret; | |
| UINT32 addr; | |
| UINT sft; | |
| UINT pl; | |
| const BYTE *ptr; | |
| lio_updatedraw(lio); | |
| i286_memstr_read(CPU_DS, CPU_BX, &dat, sizeof(dat)); | |
| x = (SINT16)LOADINTELWORD(dat.x); | x = (SINT16)LOADINTELWORD(dat.x); |
| y = (SINT16)LOADINTELWORD(dat.y); | y = (SINT16)LOADINTELWORD(dat.y); |
| lio_pset(lio, x, y, dat.pal); | if ((lio->draw.x1 > x) || (lio->draw.x2 < x) || |
| (lio->draw.y1 > y) || (lio->draw.y2 < y)) { | |
| ret = 0xff; | |
| } | |
| else { | |
| ret = 0; | |
| addr = (x >> 3) + (y * 80); | |
| if (lio->draw.flag & LIODRAW_UPPER) { | |
| addr += 16000; | |
| } | |
| addr += lio->draw.base; | |
| sft = (~x) & 7; | |
| if (!(lio->draw.flag & LIODRAW_MONO)) { | |
| for (pl=0; pl<3; pl++) { | |
| ptr = mem + addr + lioplaneadrs[pl]; | |
| ret += (((*ptr) >> sft) & 1) << pl; | |
| } | |
| if (lio->palmode == 2) { | |
| ptr = mem + addr + lioplaneadrs[3]; | |
| ret += (((*ptr) >> sft) & 1) << 3; | |
| } | |
| } | |
| else { | |
| ptr = mem + addr + lioplaneadrs[lio->draw.flag & LIODRAW_PMASK]; | |
| ret = ((*ptr) >> sft) & 1; | |
| } | |
| } | |
| CPU_AL = ret; | |
| return(LIO_SUCCESS); | return(LIO_SUCCESS); |
| } | } |