Merge branch '86Box:master' into main
This commit is contained in:
@@ -998,7 +998,7 @@ MainWindow::processKeyboardInput(bool down, uint32_t keycode)
|
|||||||
case 0x10b: /* Microsoft scroll up normal */
|
case 0x10b: /* Microsoft scroll up normal */
|
||||||
case 0x180 ... 0x1ff: /* E0 break codes (including Microsoft scroll down normal) */
|
case 0x180 ... 0x1ff: /* E0 break codes (including Microsoft scroll down normal) */
|
||||||
/* This key uses a break code as make. Send it manually, only on press. */
|
/* This key uses a break code as make. Send it manually, only on press. */
|
||||||
if (down) {
|
if (down && (mouse_capture || !kbd_req_capture || video_fullscreen)) {
|
||||||
if (keycode & 0x100)
|
if (keycode & 0x100)
|
||||||
keyboard_send(0xe0);
|
keyboard_send(0xe0);
|
||||||
keyboard_send(keycode & 0xff);
|
keyboard_send(keycode & 0xff);
|
||||||
@@ -1011,7 +1011,7 @@ MainWindow::processKeyboardInput(bool down, uint32_t keycode)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x137: /* Print Screen */
|
case 0x137: /* Print Screen */
|
||||||
if (keyboard_recv(0x38) || keyboard_recv(0x138)) { /* Alt+ */
|
if (keyboard_recv_ui(0x38) || keyboard_recv_ui(0x138)) { /* Alt+ */
|
||||||
keycode = 0x54;
|
keycode = 0x54;
|
||||||
} else if (down) {
|
} else if (down) {
|
||||||
keyboard_input(down, 0x12a);
|
keyboard_input(down, 0x12a);
|
||||||
@@ -1022,7 +1022,7 @@ MainWindow::processKeyboardInput(bool down, uint32_t keycode)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x145: /* Pause */
|
case 0x145: /* Pause */
|
||||||
if (keyboard_recv(0x1d) || keyboard_recv(0x11d)) { /* Ctrl+ */
|
if (keyboard_recv_ui(0x1d) || keyboard_recv_ui(0x11d)) { /* Ctrl+ */
|
||||||
keycode = 0x146;
|
keycode = 0x146;
|
||||||
} else {
|
} else {
|
||||||
keyboard_input(down, 0xe11d);
|
keyboard_input(down, 0xe11d);
|
||||||
@@ -1196,6 +1196,8 @@ MainWindow::on_actionFullscreen_triggered()
|
|||||||
ui->stackedWidget->setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
|
ui->stackedWidget->setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
|
||||||
showFullScreen();
|
showFullScreen();
|
||||||
}
|
}
|
||||||
|
fs_on_signal = false;
|
||||||
|
fs_off_signal = false;
|
||||||
ui->stackedWidget->onResize(width(), height());
|
ui->stackedWidget->onResize(width(), height());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1724,9 +1724,6 @@ scsi_cdrom_request_sense(scsi_cdrom_t *dev, uint8_t *buffer, uint8_t alloc_lengt
|
|||||||
that condition. */
|
that condition. */
|
||||||
dev->unit_attention = 0;
|
dev->unit_attention = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear the sense stuff as per the spec. */
|
|
||||||
scsi_cdrom_sense_clear(dev, GPCMD_REQUEST_SENSE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1841,6 +1838,10 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
begin:
|
begin:
|
||||||
|
if (cdb[0] != GPCMD_REQUEST_SENSE) {
|
||||||
|
/* Clear the sense stuff as per the spec. */
|
||||||
|
scsi_cdrom_sense_clear(dev, cdb[0]);
|
||||||
|
}
|
||||||
switch (cdb[0]) {
|
switch (cdb[0]) {
|
||||||
case GPCMD_TEST_UNIT_READY:
|
case GPCMD_TEST_UNIT_READY:
|
||||||
scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS);
|
scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS);
|
||||||
|
|||||||
@@ -545,10 +545,6 @@ esp_do_command_phase(esp_t *dev)
|
|||||||
esp_log("ESP SCSI Start reading/writing\n");
|
esp_log("ESP SCSI Start reading/writing\n");
|
||||||
esp_do_dma(dev);
|
esp_do_dma(dev);
|
||||||
} else {
|
} else {
|
||||||
if (dev->mca && (buf[0] == 0x43) && (sd->phase == SCSI_PHASE_STATUS)) {
|
|
||||||
esp_set_phase(dev, STAT_DI);
|
|
||||||
scsi_device_command_phase1(sd);
|
|
||||||
}
|
|
||||||
esp_log("ESP SCSI Command with no length\n");
|
esp_log("ESP SCSI Command with no length\n");
|
||||||
esp_command_complete(dev, sd->status);
|
esp_command_complete(dev, sd->status);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -201,7 +201,8 @@ ega_render_graphics(ega_t *ega)
|
|||||||
const bool crtcreset = ((ega->crtc[0x17] & 0x80) == 0);
|
const bool crtcreset = ((ega->crtc[0x17] & 0x80) == 0);
|
||||||
const bool seq9dot = ((ega->seqregs[1] & 1) == 0);
|
const bool seq9dot = ((ega->seqregs[1] & 1) == 0);
|
||||||
const bool seqoddeven = ((ega->seqregs[1] & 4) != 0);
|
const bool seqoddeven = ((ega->seqregs[1] & 4) != 0);
|
||||||
const uint8_t blinkmask = (attrblink && blinked ? 0x8 : 0x0);
|
const uint8_t blinkmask = (attrblink ? 0x8 : 0x0);
|
||||||
|
const uint8_t blinkval = (attrblink && blinked ? 0x8 : 0x0);
|
||||||
uint32_t *p = &buffer32->line[ega->displine + ega->y_add][ega->x_add];
|
uint32_t *p = &buffer32->line[ega->displine + ega->y_add][ega->x_add];
|
||||||
const int dwshift = doublewidth ? 1 : 0;
|
const int dwshift = doublewidth ? 1 : 0;
|
||||||
const int dotwidth = 1 << dwshift;
|
const int dotwidth = 1 << dwshift;
|
||||||
@@ -254,8 +255,14 @@ ega_render_graphics(ega_t *ega)
|
|||||||
uint8_t dat = (edatlookup[(edat[0] >> inshift) & 3][(edat[1] >> inshift) & 3])
|
uint8_t dat = (edatlookup[(edat[0] >> inshift) & 3][(edat[1] >> inshift) & 3])
|
||||||
| (edatlookup[(edat[2] >> inshift) & 3][(edat[3] >> inshift) & 3] << 2);
|
| (edatlookup[(edat[2] >> inshift) & 3][(edat[3] >> inshift) & 3] << 2);
|
||||||
// FIXME: Confirm blink behaviour is actually XOR on real hardware
|
// FIXME: Confirm blink behaviour is actually XOR on real hardware
|
||||||
uint32_t p0 = ega->pallook[ega->egapal[((dat >> 4) & ega->plane_mask) ^ blinkmask]];
|
uint32_t c0 = (dat >> 4) & 0xF;
|
||||||
uint32_t p1 = ega->pallook[ega->egapal[(dat & ega->plane_mask) ^ blinkmask]];
|
uint32_t c1 = dat & 0xF;
|
||||||
|
c0 = ((c0 & ega->plane_mask & ~blinkmask) |
|
||||||
|
((c0 | ~ega->plane_mask) & blinkmask & blinkval)) ^ blinkmask;
|
||||||
|
c1 = ((c1 & ega->plane_mask & ~blinkmask) |
|
||||||
|
((c1 | ~ega->plane_mask) & blinkmask & blinkval)) ^ blinkmask;
|
||||||
|
uint32_t p0 = ega->pallook[ega->egapal[c0]];
|
||||||
|
uint32_t p1 = ega->pallook[ega->egapal[c1]];
|
||||||
for (int subx = 0; subx < dotwidth; subx++)
|
for (int subx = 0; subx < dotwidth; subx++)
|
||||||
p[outoffs + subx] = p0;
|
p[outoffs + subx] = p0;
|
||||||
for (int subx = 0; subx < dotwidth; subx++)
|
for (int subx = 0; subx < dotwidth; subx++)
|
||||||
|
|||||||
Reference in New Issue
Block a user