Added -pie to the linking part of the makefiles;

Implemented some missing AT keyboard controller (8042) commands.
This commit is contained in:
OBattler
2017-01-03 22:15:06 +01:00
parent 120c870e67
commit 6a4ab75ae7
3 changed files with 31 additions and 3 deletions

View File

@@ -28,7 +28,7 @@ SIDOBJ = convolve.o convolve-sse.o envelope.o extfilt.o filter.o pot.o sid.o voi
SLIRPOBJ = bootp.o ip_icmp.o misc.o socket.o tcp_timer.o cksum.o ip_input.o queue.o tcp_input.o tftp.o debug.o ip_output.o sbuf.o tcp_output.o udp.o if.o mbuf.o slirp.o tcp_subr.o
LIBS = -lssp -mwindows -lwinmm -lopenal.dll -lopenal -lddraw -ldinput8 -ldxguid -ld3d9 -ld3dx9 -lwsock32 -liphlpapi -lstdc++ -static-libstdc++ -static-libgcc -static
LIBS = -lssp -pie -mwindows -lwinmm -lopenal.dll -lopenal -lddraw -ldinput8 -ldxguid -ld3d9 -ld3dx9 -lwsock32 -liphlpapi -lstdc++ -static-libstdc++ -static-libgcc -static
86Box.exe: $(OBJ) $(DBOBJ) $(LZFOBJ) $(SIDOBJ) $(SLIRPOBJ)
$(CC) $(OBJ) $(DBOBJ) $(LZFOBJ) $(SIDOBJ) $(SLIRPOBJ) -o "86Box.exe" $(LIBS)

View File

@@ -28,7 +28,7 @@ SIDOBJ = convolve.o convolve-sse.o envelope.o extfilt.o filter.o pot.o sid.o voi
SLIRPOBJ = bootp.o ip_icmp.o misc.o socket.o tcp_timer.o cksum.o ip_input.o queue.o tcp_input.o tftp.o debug.o ip_output.o sbuf.o tcp_output.o udp.o if.o mbuf.o slirp.o tcp_subr.o
LIBS = -lssp -mwindows -lwinmm -lopenal -lddraw -ldinput8 -ldxguid -ld3d9 -ld3dx9 -lwsock32 -liphlpapi -lstdc++ -static-libstdc++ -static-libgcc -static -lopenal.dll -lgcov -lPacket -lwpcap
LIBS = -lssp -pie -mwindows -lwinmm -lopenal -lddraw -ldinput8 -ldxguid -ld3d9 -ld3dx9 -lwsock32 -liphlpapi -lstdc++ -static-libstdc++ -static-libgcc -static -lopenal.dll -lgcov -lPacket -lwpcap
86Box64.exe: $(OBJ) $(DBOBJ) $(LZFOBJ) $(SIDOBJ) $(SLIRPOBJ)
$(CC) $(OBJ) $(DBOBJ) $(LZFOBJ) $(SIDOBJ) $(SLIRPOBJ) -o "86Box64.exe" $(LIBS)

View File

@@ -224,6 +224,7 @@ void keyboard_at_adddata_mouse(uint8_t val)
void keyboard_at_write(uint16_t port, uint8_t val, void *priv)
{
int i = 0;
// pclog("keyboard_at : write %04X %02X %i %02X\n", port, val, keyboard_at.key_wantdata, ram[8]);
/* if (ram[8] == 0xc3)
{
@@ -240,6 +241,8 @@ void keyboard_at_write(uint16_t port, uint8_t val, void *priv)
{
case 0x40 ... 0x5f: /* 0x40 - 0x5F are aliases for 0x60-0x7F */
keyboard_at.command |= 0x20;
goto write_register;
case 0x60: case 0x61: case 0x62: case 0x63:
case 0x64: case 0x65: case 0x66: case 0x67:
case 0x68: case 0x69: case 0x6a: case 0x6b:
@@ -248,6 +251,8 @@ void keyboard_at_write(uint16_t port, uint8_t val, void *priv)
case 0x74: case 0x75: case 0x76: case 0x77:
case 0x78: case 0x79: case 0x7a: case 0x7b:
case 0x7c: case 0x7d: case 0x7e: case 0x7f:
write_register:
keyboard_at.mem[keyboard_at.command & 0x1f] = val;
if (keyboard_at.command == 0x60)
{
@@ -473,6 +478,8 @@ void keyboard_at_write(uint16_t port, uint8_t val, void *priv)
{
case 0x00 ... 0x1f:
val |= 0x20; /* 0x00-0x1f are aliases for 0x20-0x3f */
keyboard_at_adddata(keyboard_at.mem[val & 0x1f]);
break;
case 0x20: case 0x21: case 0x22: case 0x23:
case 0x24: case 0x25: case 0x26: case 0x27:
@@ -536,6 +543,16 @@ void keyboard_at_write(uint16_t port, uint8_t val, void *priv)
keyboard_at_adddata(0x00); /*no error*/
break;
case 0xac: /*Diagnostic dump*/
for (i = 0; i < 16; i++)
{
keyboard_at_adddata(keyboard_at.mem[i]);
}
keyboard_at_adddata((keyboard_at.input_port & 0xf0) | 0x80);
keyboard_at_adddata(keyboard_at.output_port);
keyboard_at_adddata(keyboard_at.status);
break;
case 0xad: /*Disable keyboard*/
keyboard_at.mem[0] |= 0x10;
break;
@@ -587,7 +604,17 @@ void keyboard_at_write(uint16_t port, uint8_t val, void *priv)
case 0xef: /*??? - sent by AMI486*/
break;
case 0xf0 ... 0xff:
if (!(val & 1))
{
/* Pin 0 selected. */
softresetx86(); /*Pulse reset!*/
cpu_set_edx();
}
break;
#if 0
case 0xfe: /*Pulse output port - pin 0 selected - x86 reset*/
softresetx86(); /*Pulse reset!*/
cpu_set_edx();
@@ -595,6 +622,7 @@ void keyboard_at_write(uint16_t port, uint8_t val, void *priv)
case 0xff: /*Pulse output port - but no pins selected - sent by MegaPC BIOS*/
break;
#endif
default:
pclog("Bad AT keyboard controller command %02X\n", val);