|
|
| version 1.13, 2004/02/21 20:48:52 | version 1.20, 2005/02/07 14:46:12 |
|---|---|
| Line 7 | Line 7 |
| #include "biosmem.h" | #include "biosmem.h" |
| #include "vram.h" | #include "vram.h" |
| #include "lio.h" | #include "lio.h" |
| #include "lio.res" | |
| void lio_initialize(void) { | void lio_initialize(void) { |
| UINT i; | CopyMemory(mem + (LIO_SEGMENT << 4), liorom, sizeof(liorom)); |
| mem[0xf9900] = 0x11; | |
| for (i=0; i<0x11; i++) { | |
| mem[0xf9904 + i*4] = 0xa0 + i; | |
| mem[0xf9905 + i*4] = 0x00; | |
| SETBIOSMEM16(0xf9906 + i*4, 0x100 + i*4); | |
| SETBIOSMEM32(0xf9a00 + i*4, 0xcf90fb90); | |
| } | |
| mem[0xf9944] = 0xce; | |
| } | } |
| void bios_lio(REG8 cmd) { | void bios_lio(REG8 cmd) { |
| Line 29 void bios_lio(REG8 cmd) { | Line 21 void bios_lio(REG8 cmd) { |
| UINT8 ret; | UINT8 ret; |
| // TRACEOUT(("lio command %.2x", cmd)); | // TRACEOUT(("lio command %.2x", cmd)); |
| i286_memstr_read(CPU_DS, 0x0620, &lio.work, sizeof(lio.work)); | MEML_READSTR(CPU_DS, 0x0620, &lio.work, sizeof(lio.work)); |
| lio.palmode = i286_membyte_read(CPU_DS, 0x0a08); | lio.palmode = MEML_READ8(CPU_DS, 0x0a08); |
| lio.wait = 500; | lio.wait = 0; |
| switch(cmd) { | switch(cmd) { |
| case 0x00: // a0: GINIT | case 0x00: // a0: GINIT |
| ret = lio_ginit(&lio); | ret = lio_ginit(&lio); |
| Line 65 void bios_lio(REG8 cmd) { | Line 57 void bios_lio(REG8 cmd) { |
| ret = lio_gline(&lio); | ret = lio_gline(&lio); |
| break; | break; |
| // case 0x08: // a8: GCIRCLE | case 0x08: // a8: GCIRCLE |
| // break; | ret = lio_gcircle(&lio); |
| break; | |
| // case 0x09: // a9: GPAINT1 | // case 0x09: // a9: GPAINT1 |
| // break; | // break; |
| Line 101 void bios_lio(REG8 cmd) { | Line 94 void bios_lio(REG8 cmd) { |
| break; | break; |
| } | } |
| CPU_AH = ret; | CPU_AH = ret; |
| gdcsub_setslavewait(lio.wait); | if (lio.wait) { |
| gdcsub_setslavewait(lio.wait); | |
| } | |
| } | } |
| Line 173 void lio_updatedraw(GLIO lio) { | Line 168 void lio_updatedraw(GLIO lio) { |
| static void pixed8(const _GLIO *lio, UINT addr, REG8 bit, REG8 pal) { | static void pixed8(const _GLIO *lio, UINT addr, REG8 bit, REG8 pal) { |
| BYTE *ptr; | UINT8 *ptr; |
| addr = LOW15(addr); | addr = LOW15(addr); |
| vramupdate[addr] |= lio->draw.sbit; | vramupdate[addr] |= lio->draw.sbit; |
| Line 220 static void pixed8(const _GLIO *lio, UIN | Line 215 static void pixed8(const _GLIO *lio, UIN |
| void lio_pset(const _GLIO *lio, SINT16 x, SINT16 y, REG8 pal) { | void lio_pset(const _GLIO *lio, SINT16 x, SINT16 y, REG8 pal) { |
| UINT addr; | UINT addr; |
| BYTE bit; | UINT8 bit; |
| if ((lio->draw.x1 > x) || (lio->draw.x2 < x) || | if ((lio->draw.x1 > x) || (lio->draw.x2 < x) || |
| (lio->draw.y1 > y) || (lio->draw.y2 < y)) { | (lio->draw.y1 > y) || (lio->draw.y2 < y)) { |
| Line 235 void lio_pset(const _GLIO *lio, SINT16 x | Line 230 void lio_pset(const _GLIO *lio, SINT16 x |
| pixed8(lio, addr, bit, pal); | pixed8(lio, addr, bit, pal); |
| } | } |
| #if 0 | |
| void lio_line(const _GLIO *lio, SINT16 x1, SINT16 x2, SINT16 y, REG8 pal) { | void lio_line(const _GLIO *lio, SINT16 x1, SINT16 x2, SINT16 y, REG8 pal) { |
| UINT addr; | UINT addr; |
| BYTE bit, dbit; | UINT8 bit, dbit; |
| SINT16 width; | SINT16 width; |
| if ((lio->draw.y1 > y) || (lio->draw.y2 < y)) { | if ((lio->draw.y1 > y) || (lio->draw.y2 < y)) { |
| Line 284 void lio_line(const _GLIO *lio, SINT16 x | Line 280 void lio_line(const _GLIO *lio, SINT16 x |
| pixed8(lio, addr, dbit, pal); | pixed8(lio, addr, dbit, pal); |
| } | } |
| } | } |
| #endif | |
| #if 0 | #if 0 |
| void lio_look(UINT vect) { | void lio_look(UINT vect) { |
| BYTE work[16]; | UINT8 work[16]; |
| TRACEOUT(("lio command %.2x [%.4x:%.4x]", vect, CPU_CS, CPU_IP)); | TRACEOUT(("lio command %.2x [%.4x:%.4x]", vect, CPU_CS, CPU_IP)); |
| if (vect == 0xa7) { | if (vect == 0xa7) { |