|
|
| version 1.11, 2004/03/04 17:36:06 | version 1.17, 2005/05/20 13:59:47 |
|---|---|
| Line 8 | Line 8 |
| typedef struct { | typedef struct { |
| BYTE x1[2]; | UINT8 x1[2]; |
| BYTE y1[2]; | UINT8 y1[2]; |
| BYTE x2[2]; | UINT8 x2[2]; |
| BYTE y2[2]; | UINT8 y2[2]; |
| BYTE off[2]; | UINT8 off[2]; |
| BYTE seg[2]; | UINT8 seg[2]; |
| BYTE leng[2]; | UINT8 leng[2]; |
| } GGET; | } GGET; |
| typedef struct { | typedef struct { |
| BYTE x[2]; | UINT8 x[2]; |
| BYTE y[2]; | UINT8 y[2]; |
| BYTE off[2]; | UINT8 off[2]; |
| BYTE seg[2]; | UINT8 seg[2]; |
| BYTE leng[2]; | UINT8 leng[2]; |
| BYTE mode; | UINT8 mode; |
| BYTE colorsw; | UINT8 colorsw; |
| BYTE fg; | UINT8 fg; |
| BYTE bg; | UINT8 bg; |
| } GPUT1; | } GPUT1; |
| typedef struct { | typedef struct { |
| BYTE x[2]; | UINT8 x[2]; |
| BYTE y[2]; | UINT8 y[2]; |
| BYTE chr[2]; | UINT8 chr[2]; |
| BYTE mode; | UINT8 mode; |
| BYTE colorsw; | UINT8 colorsw; |
| BYTE fg; | UINT8 fg; |
| BYTE bg; | UINT8 bg; |
| } GPUT2; | } GPUT2; |
| typedef struct { | typedef struct { |
| Line 53 typedef struct { | Line 53 typedef struct { |
| } LIOPUT; | } LIOPUT; |
| typedef struct { | typedef struct { |
| BYTE *baseptr; | UINT8 *baseptr; |
| UINT addr; | UINT addr; |
| UINT sft; | UINT sft; |
| UINT width; | UINT width; |
| Line 61 typedef struct { | Line 61 typedef struct { |
| } GETCNTX; | } GETCNTX; |
| typedef struct { | typedef struct { |
| BYTE *baseptr; | UINT8 *baseptr; |
| UINT addr; | UINT addr; |
| UINT sft; | UINT sft; |
| UINT width; | UINT width; |
| Line 69 typedef struct { | Line 69 typedef struct { |
| UINT8 maskr; | UINT8 maskr; |
| UINT8 masklr; | UINT8 masklr; |
| UINT8 mask; | UINT8 mask; |
| BYTE pat[84]; | UINT8 pat[84]; |
| } PUTCNTX; | } PUTCNTX; |
| static void getvram(const GETCNTX *gt, BYTE *dst) { | static void getvram(const GETCNTX *gt, UINT8 *dst) { |
| BYTE *baseptr; | UINT8 *baseptr; |
| UINT addr; | UINT addr; |
| UINT width; | UINT width; |
| UINT dat; | UINT dat; |
| Line 116 static void setdirty(UINT addr, UINT wid | Line 116 static void setdirty(UINT addr, UINT wid |
| static void putor(const PUTCNTX *pt) { | static void putor(const PUTCNTX *pt) { |
| BYTE *baseptr; | UINT8 *baseptr; |
| UINT addr; | UINT addr; |
| const BYTE *src; | const UINT8 *src; |
| UINT width; | UINT width; |
| UINT dat; | UINT dat; |
| Line 150 const BYTE *src; | Line 150 const BYTE *src; |
| static void putorn(const PUTCNTX *pt) { | static void putorn(const PUTCNTX *pt) { |
| BYTE *baseptr; | UINT8 *baseptr; |
| UINT addr; | UINT addr; |
| const BYTE *src; | const UINT8 *src; |
| UINT width; | UINT width; |
| UINT dat; | UINT dat; |
| Line 184 const BYTE *src; | Line 184 const BYTE *src; |
| static void putand(const PUTCNTX *pt) { | static void putand(const PUTCNTX *pt) { |
| BYTE *baseptr; | UINT8 *baseptr; |
| UINT addr; | UINT addr; |
| const BYTE *src; | const UINT8 *src; |
| UINT width; | UINT width; |
| UINT dat; | UINT dat; |
| Line 218 const BYTE *src; | Line 218 const BYTE *src; |
| static void putandn(const PUTCNTX *pt) { | static void putandn(const PUTCNTX *pt) { |
| BYTE *baseptr; | UINT8 *baseptr; |
| UINT addr; | UINT addr; |
| const BYTE *src; | const UINT8 *src; |
| UINT width; | UINT width; |
| UINT dat; | UINT dat; |
| Line 252 const BYTE *src; | Line 252 const BYTE *src; |
| static void putxor(const PUTCNTX *pt) { | static void putxor(const PUTCNTX *pt) { |
| BYTE *baseptr; | UINT8 *baseptr; |
| UINT addr; | UINT addr; |
| const BYTE *src; | const UINT8 *src; |
| UINT width; | UINT width; |
| UINT dat; | UINT dat; |
| Line 286 const BYTE *src; | Line 286 const BYTE *src; |
| static void putxorn(const PUTCNTX *pt) { | static void putxorn(const PUTCNTX *pt) { |
| BYTE *baseptr; | UINT8 *baseptr; |
| UINT addr; | UINT addr; |
| const BYTE *src; | const UINT8 *src; |
| UINT width; | UINT width; |
| UINT dat; | UINT dat; |
| Line 371 static REG8 putsub(GLIO lio, const LIOPU | Line 371 static REG8 putsub(GLIO lio, const LIOPU |
| flag >>= 1; | flag >>= 1; |
| if (flag & 8) { | if (flag & 8) { |
| pt.baseptr = mem + lio->draw.base + lioplaneadrs[pl]; | pt.baseptr = mem + lio->draw.base + lioplaneadrs[pl]; |
| MEML_READSTR(lput->seg, off, pt.pat, datacnt); | MEMR_READS(lput->seg, off, pt.pat, datacnt); |
| if (lput->sw) { | if (lput->sw) { |
| off += datacnt; | off += datacnt; |
| } | } |
| Line 469 REG8 lio_gget(GLIO lio) { | Line 469 REG8 lio_gget(GLIO lio) { |
| UINT datacnt; | UINT datacnt; |
| UINT mask; | UINT mask; |
| GETCNTX gt; | GETCNTX gt; |
| BYTE pat[84]; | UINT8 pat[84]; |
| UINT pl; | UINT pl; |
| lio_updatedraw(lio); | lio_updatedraw(lio); |
| MEML_READSTR(CPU_DS, CPU_BX, &dat, sizeof(dat)); | MEMR_READS(CPU_DS, CPU_BX, &dat, sizeof(dat)); |
| x = (SINT16)LOADINTELWORD(dat.x1); | x = (SINT16)LOADINTELWORD(dat.x1); |
| y = (SINT16)LOADINTELWORD(dat.y1); | y = (SINT16)LOADINTELWORD(dat.y1); |
| x2 = (SINT16)LOADINTELWORD(dat.x2); | x2 = (SINT16)LOADINTELWORD(dat.x2); |
| Line 509 REG8 lio_gget(GLIO lio) { | Line 509 REG8 lio_gget(GLIO lio) { |
| if (leng < (size + 4)) { | if (leng < (size + 4)) { |
| return(LIO_ILLEGALFUNC); | return(LIO_ILLEGALFUNC); |
| } | } |
| i286_memword_write(seg, off, (REG16)x2); | MEMR_WRITE16(seg, off, (REG16)x2); |
| i286_memword_write(seg, off+2, (REG16)y2); | MEMR_WRITE16(seg, off+2, (REG16)y2); |
| off += 4; | off += 4; |
| gt.addr = (x >> 3) + (y * 80); | gt.addr = (x >> 3) + (y * 80); |
| if (lio->draw.flag & LIODRAW_UPPER) { | if (lio->draw.flag & LIODRAW_UPPER) { |
| Line 526 REG8 lio_gget(GLIO lio) { | Line 526 REG8 lio_gget(GLIO lio) { |
| if (mask & 8) { | if (mask & 8) { |
| gt.baseptr = mem + lio->draw.base + lioplaneadrs[pl]; | gt.baseptr = mem + lio->draw.base + lioplaneadrs[pl]; |
| getvram(>, pat); | getvram(>, pat); |
| MEML_WRITESTR(seg, off, pat, datacnt); | MEMR_WRITES(seg, off, pat, datacnt); |
| off += datacnt; | off += datacnt; |
| } | } |
| } | } |
| Line 547 REG8 lio_gput1(GLIO lio) { | Line 547 REG8 lio_gput1(GLIO lio) { |
| UINT size; | UINT size; |
| lio_updatedraw(lio); | lio_updatedraw(lio); |
| MEML_READSTR(CPU_DS, CPU_BX, &dat, sizeof(dat)); | MEMR_READS(CPU_DS, CPU_BX, &dat, sizeof(dat)); |
| lput.x = (SINT16)LOADINTELWORD(dat.x); | lput.x = (SINT16)LOADINTELWORD(dat.x); |
| lput.y = (SINT16)LOADINTELWORD(dat.y); | lput.y = (SINT16)LOADINTELWORD(dat.y); |
| lput.off = (UINT16)(LOADINTELWORD(dat.off) + 4); | lput.off = (UINT16)(LOADINTELWORD(dat.off) + 4); |
| lput.seg = LOADINTELWORD(dat.seg); | lput.seg = LOADINTELWORD(dat.seg); |
| lput.mode = dat.mode; | lput.mode = dat.mode; |
| leng = LOADINTELWORD(dat.leng); | leng = LOADINTELWORD(dat.leng); |
| lput.width = i286_memword_read(lput.seg, lput.off - 4); | lput.width = MEMR_READ16(lput.seg, lput.off - 4); |
| lput.height = i286_memword_read(lput.seg, lput.off - 2); | lput.height = MEMR_READ16(lput.seg, lput.off - 2); |
| size = ((lput.width + 7) >> 3) * lput.height; | size = ((lput.width + 7) >> 3) * lput.height; |
| if (leng < (size + 4)) { | if (leng < (size + 4)) { |
| return(LIO_ILLEGALFUNC); | return(LIO_ILLEGALFUNC); |
| Line 594 REG8 lio_gput2(GLIO lio) { | Line 594 REG8 lio_gput2(GLIO lio) { |
| GPUT2 dat; | GPUT2 dat; |
| LIOPUT lput; | LIOPUT lput; |
| UINT16 jis; | UINT16 jis; |
| int pat; | |
| REG16 size; | REG16 size; |
| lio_updatedraw(lio); | lio_updatedraw(lio); |
| MEML_READSTR(CPU_DS, CPU_BX, &dat, sizeof(dat)); | MEMR_READS(CPU_DS, CPU_BX, &dat, sizeof(dat)); |
| lput.x = (SINT16)LOADINTELWORD(dat.x); | lput.x = (SINT16)LOADINTELWORD(dat.x); |
| lput.y = (SINT16)LOADINTELWORD(dat.y); | lput.y = (SINT16)LOADINTELWORD(dat.y); |
| lput.off = 0x104e; | |
| lput.seg = CPU_DS; | |
| jis = LOADINTELWORD(dat.chr); | jis = LOADINTELWORD(dat.chr); |
| if (jis & 0xff00) { | pat = 0; |
| lput.off = 0x104e; | if (jis < 0x200) { |
| lput.seg = CPU_DS; | if (jis < 0x80) { |
| if (jis < 0x200) { // 1/4ANK | if (jis == 0x7c) { |
| pat = 1; | |
| } | |
| else if (jis == 0x7e) { | |
| pat = 2; | |
| } | |
| else { | |
| jis += 0x2900; | |
| } | |
| } | |
| else if (jis < 0x100) { | |
| if ((jis - 0x20) & 0x40) { | |
| pat = (jis & 0x3f) + 3; | |
| } | |
| else { | |
| jis += 0x2980; | |
| } | |
| } | |
| else { | |
| jis &= 0xff; | jis &= 0xff; |
| } | } |
| } | |
| if (!pat) { | |
| size = bios0x18_14(lput.seg, 0x104c, jis); | size = bios0x18_14(lput.seg, 0x104c, jis); |
| lput.width = (size & 0xff00) >> (8 - 3); | |
| lput.height = (size & 0xff) << 3; | |
| } | } |
| else { | else { |
| return(0); | MEMR_WRITES(lput.seg, lput.off, mem + (LIO_SEGMENT << 4) + |
| LIO_FONT + ((pat - 1) << 4), 0x10); | |
| size = 0x0102; | |
| } | } |
| lput.width = (size & 0xff00) >> (8 - 3); | |
| lput.height = (size & 0xff) << 3; | |
| lput.mode = dat.mode; | lput.mode = dat.mode; |
| lput.sw = 0; | lput.sw = 0; |
| if (dat.colorsw) { | if (dat.colorsw) { |