From 9d9a964dd06cb5fd5e2f214e9f2d9f1c65f0a474 Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Sat, 3 Apr 2004 19:46:00 +0000 Subject: [PATCH] New io handler functions Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1759 --- src/hardware/gus.cpp | 51 ++++++++++++++----------------------- src/hardware/serialport.cpp | 13 +++++----- 2 files changed, 25 insertions(+), 39 deletions(-) diff --git a/src/hardware/gus.cpp b/src/hardware/gus.cpp index e4d19991..2184ba51 100644 --- a/src/hardware/gus.cpp +++ b/src/hardware/gus.cpp @@ -769,17 +769,7 @@ static void ExecuteGlobRegister(void) { } -static Bit16u read_gus16(Bit32u port) { - return ExecuteReadRegister(); -} - -static void write_gus16(Bit32u port,Bit16u val) { - myGUS.gRegData = val; - ExecuteGlobRegister(); -} - - -static Bit8u read_gus(Bit32u port) { +static Bitu read_gus(Bitu port,Bitu iolen) { switch(port - GUS_BASE) { case 0x206: @@ -828,7 +818,7 @@ static Bit8u read_gus(Bit32u port) { } -static void write_gus(Bit32u port,Bit8u val) { +static void write_gus(Bitu port,Bitu val,Bitu iolen) { switch(port - GUS_BASE) { case 0x200: myGUS.mixControl = val; @@ -1048,36 +1038,33 @@ void GUS_Init(Section* sec) { // GF1 Synthesizer - IO_RegisterWriteHandler(0x302 + GUS_BASE,write_gus,"GF1 Page Register"); - IO_RegisterReadHandler(0x302 + GUS_BASE,read_gus,"GF1 Page Register"); + IO_RegisterWriteHandler(0x302 + GUS_BASE,write_gus,IO_MB); + IO_RegisterReadHandler(0x302 + GUS_BASE,read_gus,IO_MB); - IO_RegisterWriteHandler(0x303 + GUS_BASE,write_gus,"GF1 Global Register Select"); - IO_RegisterReadHandler(0x303 + GUS_BASE,read_gus,"GF1 Global Register Select"); + IO_RegisterWriteHandler(0x303 + GUS_BASE,write_gus,IO_MB); + IO_RegisterReadHandler(0x303 + GUS_BASE,read_gus,IO_MB); - IO_RegisterWriteHandler(0x304 + GUS_BASE,write_gus,"GF1 Global Data Low Byte"); - IO_RegisterReadHandler(0x304 + GUS_BASE,read_gus,"GF1 Global Data Low Byte"); + IO_RegisterWriteHandler(0x304 + GUS_BASE,write_gus,IO_MB|IO_MW); + IO_RegisterReadHandler(0x304 + GUS_BASE,read_gus,IO_MB|IO_MW); - IO_RegisterWriteWHandler(0x304 + GUS_BASE,write_gus16); - IO_RegisterReadWHandler(0x304 + GUS_BASE,read_gus16); + IO_RegisterWriteHandler(0x305 + GUS_BASE,write_gus,IO_MB); + IO_RegisterReadHandler(0x305 + GUS_BASE,read_gus,IO_MB); - IO_RegisterWriteHandler(0x305 + GUS_BASE,write_gus,"GF1 Global Data High Byte"); - IO_RegisterReadHandler(0x305 + GUS_BASE,read_gus,"GF1 Global Data High Byte"); + IO_RegisterReadHandler(0x206 + GUS_BASE,read_gus,IO_MB); - IO_RegisterReadHandler(0x206 + GUS_BASE,read_gus,"GF1 IRQ Status Register"); + IO_RegisterWriteHandler(0x208 + GUS_BASE,write_gus,IO_MB); + IO_RegisterReadHandler(0x208 + GUS_BASE,read_gus,IO_MB); - IO_RegisterWriteHandler(0x208 + GUS_BASE,write_gus,"Timer Control Reg"); - IO_RegisterReadHandler(0x208 + GUS_BASE,read_gus,"Timer Control Reg"); + IO_RegisterWriteHandler(0x209 + GUS_BASE,write_gus,IO_MB); - IO_RegisterWriteHandler(0x209 + GUS_BASE,write_gus,"Timer Data IO"); - - IO_RegisterWriteHandler(0x307 + GUS_BASE,write_gus,"DRAM IO"); - IO_RegisterReadHandler(0x307 + GUS_BASE,read_gus,"DRAM IO"); + IO_RegisterWriteHandler(0x307 + GUS_BASE,write_gus,IO_MB); + IO_RegisterReadHandler(0x307 + GUS_BASE,read_gus,IO_MB); // Board Only - IO_RegisterWriteHandler(0x200 + GUS_BASE,write_gus,"Mix Control Register"); - IO_RegisterReadHandler(0x20A + GUS_BASE,read_gus,"GUS Undocumented"); - IO_RegisterWriteHandler(0x20B + GUS_BASE,write_gus,"IRQ/DMA Control Register"); + IO_RegisterWriteHandler(0x200 + GUS_BASE,write_gus,IO_MB); + IO_RegisterReadHandler(0x20A + GUS_BASE,read_gus,IO_MB); + IO_RegisterWriteHandler(0x20B + GUS_BASE,write_gus,IO_MB); PIC_RegisterIRQ(myGUS.irq1,0,"GUS"); PIC_RegisterIRQ(myGUS.irq2,0,"GUS"); diff --git a/src/hardware/serialport.cpp b/src/hardware/serialport.cpp index 3b7b55be..1baccaef 100644 --- a/src/hardware/serialport.cpp +++ b/src/hardware/serialport.cpp @@ -70,7 +70,7 @@ void CSerial::lowerint(INT_TYPES type){ } -void CSerial::write_port(Bit32u port, Bit8u val) { +void CSerial::write_port(Bitu port, Bitu val) { port-=base; // LOG_UART("Serial write %X val %x %c",port,val,val); @@ -152,7 +152,7 @@ void CSerial::write_port(Bit32u port, Bit8u val) { } } -void CSerial::write_serial(Bit32u port, Bit8u val) { +void CSerial::write_serial(Bitu port, Bitu val,Bitu iolen) { int i; for(i=0;i> 8, initdiv & 0x0f); for (i=8;i<=0xf;i++) { - - IO_RegisterWriteHandler(initbase+i,write_serial,"Serial Port"); - IO_RegisterReadHandler(initbase+i,read_serial,"Serial Port"); + IO_RegisterWriteHandler(initbase+i,write_serial,IO_MB); + IO_RegisterReadHandler(initbase+i,read_serial,IO_MB); } PIC_RegisterIRQ(irq,0,"SERIAL");