--- np2/lio/lio.c 2004/02/21 20:48:52 1.13 +++ np2/lio/lio.c 2005/05/20 13:59:47 1.21 @@ -7,20 +7,12 @@ #include "biosmem.h" #include "vram.h" #include "lio.h" +#include "lio.res" void lio_initialize(void) { - UINT i; - - 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; + CopyMemory(mem + (LIO_SEGMENT << 4), liorom, sizeof(liorom)); } void bios_lio(REG8 cmd) { @@ -29,9 +21,9 @@ void bios_lio(REG8 cmd) { UINT8 ret; // TRACEOUT(("lio command %.2x", cmd)); - i286_memstr_read(CPU_DS, 0x0620, &lio.work, sizeof(lio.work)); - lio.palmode = i286_membyte_read(CPU_DS, 0x0a08); - lio.wait = 500; + MEMR_READS(CPU_DS, 0x0620, &lio.work, sizeof(lio.work)); + lio.palmode = MEMR_READ8(CPU_DS, 0x0a08); + lio.wait = 0; switch(cmd) { case 0x00: // a0: GINIT ret = lio_ginit(&lio); @@ -65,8 +57,9 @@ void bios_lio(REG8 cmd) { ret = lio_gline(&lio); break; -// case 0x08: // a8: GCIRCLE -// break; + case 0x08: // a8: GCIRCLE + ret = lio_gcircle(&lio); + break; // case 0x09: // a9: GPAINT1 // break; @@ -101,7 +94,9 @@ void bios_lio(REG8 cmd) { break; } CPU_AH = ret; - gdcsub_setslavewait(lio.wait); + if (lio.wait) { + gdcsub_setslavewait(lio.wait); + } } @@ -173,7 +168,7 @@ void lio_updatedraw(GLIO lio) { static void pixed8(const _GLIO *lio, UINT addr, REG8 bit, REG8 pal) { - BYTE *ptr; + UINT8 *ptr; addr = LOW15(addr); vramupdate[addr] |= lio->draw.sbit; @@ -220,7 +215,7 @@ static void pixed8(const _GLIO *lio, UIN void lio_pset(const _GLIO *lio, SINT16 x, SINT16 y, REG8 pal) { UINT addr; - BYTE bit; + UINT8 bit; if ((lio->draw.x1 > x) || (lio->draw.x2 < x) || (lio->draw.y1 > y) || (lio->draw.y2 < y)) { @@ -235,10 +230,11 @@ void lio_pset(const _GLIO *lio, SINT16 x pixed8(lio, addr, bit, pal); } +#if 0 void lio_line(const _GLIO *lio, SINT16 x1, SINT16 x2, SINT16 y, REG8 pal) { UINT addr; - BYTE bit, dbit; + UINT8 bit, dbit; SINT16 width; if ((lio->draw.y1 > y) || (lio->draw.y2 < y)) { @@ -284,31 +280,5 @@ void lio_line(const _GLIO *lio, SINT16 x pixed8(lio, addr, dbit, pal); } } - - -#if 0 -void lio_look(UINT vect) { - - BYTE work[16]; - - TRACEOUT(("lio command %.2x [%.4x:%.4x]", vect, CPU_CS, CPU_IP)); - if (vect == 0xa7) { - i286_memstr_read(CPU_DS, CPU_BX, work, 16); - TRACEOUT(("LINE %d %d %d %d - %d %d / %d : %.2x %.2x", - LOADINTELWORD(work), - LOADINTELWORD(work+2), - LOADINTELWORD(work+4), - LOADINTELWORD(work+6), - work[8], work[9], work[10], work[11], work[12])); - } - else if (vect == 0xad) { - i286_memstr_read(CPU_DS, CPU_BX, work, 16); - TRACEOUT(("GPUT2 x=%d / y=%d / chr=%.4x / %d / %d %d %d", - LOADINTELWORD(work), - LOADINTELWORD(work+2), - LOADINTELWORD(work+4), - work[6], work[7], work[8], work[9])); - } -} #endif