1
0
mirror of https://github.com/rcornwell/sims.git synced 2026-01-11 23:52:48 +00:00

KA10: Cleanup refersh on III display.

This commit is contained in:
Richard Cornwell 2020-02-23 00:23:42 -05:00
parent 3479d2988e
commit c779e56d7c
3 changed files with 37 additions and 32 deletions

View File

@ -129,11 +129,11 @@ int dkb_modifiers (SIM_KEY_EVENT *kev)
return 1;
case SIM_KEY_WIN_L:
case SIM_KEY_WIN_R:
dkb_kmod |= TOP;
dkb_kmod |= META;
return 1;
case SIM_KEY_ALT_L:
case SIM_KEY_ALT_R:
dkb_kmod |= META;
dkb_kmod |= TOP;
return 1;
}
return 0;
@ -151,11 +151,11 @@ int dkb_modifiers (SIM_KEY_EVENT *kev)
return 1;
case SIM_KEY_WIN_L:
case SIM_KEY_WIN_R:
dkb_kmod &= ~TOP;
dkb_kmod &= ~META;
return 1;
case SIM_KEY_ALT_L:
case SIM_KEY_ALT_R:
dkb_kmod &= ~META;
dkb_kmod &= ~TOP;
return 1;
}
return 0;
@ -173,61 +173,61 @@ int dkb_keys (SIM_KEY_EVENT *kev, UNIT *uptr)
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|TOP|SHFT) | 051; /* ( */
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 060;
uptr->DATA = dkb_kmod | 060;
return 1;
case SIM_KEY_1:
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|SHFT) | 054; /* ! */
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 061;
uptr->DATA = dkb_kmod | 061;
return 1;
case SIM_KEY_2:
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|SHFT) | 052; /* Circle Star */
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 062;
uptr->DATA = dkb_kmod | 062;
return 1;
case SIM_KEY_3:
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|SHFT) | 022; /* # */
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 063;
uptr->DATA = dkb_kmod | 063;
return 1;
case SIM_KEY_4:
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|SHFT) | 066; /* $ */
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 064;
uptr->DATA = dkb_kmod | 064;
return 1;
case SIM_KEY_5:
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|SHFT) | 067; /* % */
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 065;
uptr->DATA = dkb_kmod | 065;
return 1;
case SIM_KEY_6:
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|SHFT) | 021; /* ^ */
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 066;
uptr->DATA = dkb_kmod | 066;
return 1;
case SIM_KEY_7:
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|SHFT) | 024 ; /* & */
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 067;
uptr->DATA = dkb_kmod | 067;
return 1;
case SIM_KEY_8:
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|SHFT) | 052;
uptr->DATA = (META|CTRL|TOP|SHFT) | 052;
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 070;
uptr->DATA = dkb_kmod | 070;
return 1;
case SIM_KEY_9:
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|TOP|SHFT) | 050;
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 071;
uptr->DATA = dkb_kmod | 071;
return 1;
case SIM_KEY_A:
uptr->DATA = dkb_kmod | 001;
@ -350,13 +350,17 @@ int dkb_keys (SIM_KEY_EVENT *kev, UNIT *uptr)
uptr->DATA = (META|CTRL|SHFT) | 011;
return 1;
case SIM_KEY_BACKSLASH:
if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|SHFT) | 053;
if ((dkb_kmod & TOP) == 0)
uptr->DATA = (META|CTRL|SHFT) | 034;
else if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|SHFT) | 056;
else
uptr->DATA = (META|CTRL|TOP|SHFT) | 034;
return 1;
case SIM_KEY_LEFT_BACKSLASH:
if ((dkb_kmod & SHFT) == 0)
if ((dkb_kmod & TOP) == 0)
uptr->DATA = (META|CTRL|SHFT) | 034;
else if ((dkb_kmod & SHFT) == 0)
uptr->DATA = (META|CTRL|TOP|SHFT) | 034;
else
uptr->DATA = (META|CTRL|SHFT) | 011;

View File

@ -428,8 +428,9 @@ iii_svc (UNIT *uptr)
cy = (int)(6.0 * ch_sz);
lx = ox;
ly = oy + cy;
sim_debug(DEBUG_DATA, &iii_dev, "III: ch %d %d %o %o %o\n", lx, ly, ch, sz, br);
if (ch == '\t')
sim_debug(DEBUG_DETAIL, &iii_dev, "III: ch %d %d %o '%c' %o %o\n", lx, ly, ch,
(ch < ' ')? '.' : ch, sz, br);
if (ch == '\t' || ch == 0)
continue;
if (ch == '\r') {
ox = -512;
@ -472,9 +473,11 @@ iii_svc (UNIT *uptr)
nx = (nx ^ 040) - 040;
ny = (ny ^ 040) - 040;
/* Compute relative position. */
sim_debug(DEBUG_DATA, &iii_dev, "III: short %d %d %o %d\n", nx, ny, sz, br);
sim_debug(DEBUG_DETAIL, &iii_dev, "III: short %d %d %o %d\n", nx, ny, sz, br);
nx += ox;
ny += oy;
if (nx < -512 || nx > 512 || ny < -512 || ny > 512)
uptr->STATUS |= EDG_FBIT;
i = (int)((iii_instr >> 18) & 3);
if ((i & 02) == 0 && (iii_sel & 04000) != 0) { /* Check if visible */
if ((i & 01) == 0) { /* Draw a line */
@ -491,7 +494,7 @@ iii_svc (UNIT *uptr)
/* Sign extend */
nx = (nx ^ 040) - 040;
ny = (ny ^ 040) - 040;
sim_debug(DEBUG_DATA, &iii_dev, "III: short2 %d %d %o %d\n", nx, ny, sz, br);
sim_debug(DEBUG_DETAIL, &iii_dev, "III: short2 %d %d %o %d\n", nx, ny, sz, br);
/* Compute relative position. */
nx += ox;
ny += oy;
@ -534,15 +537,13 @@ iii_svc (UNIT *uptr)
ny = (iii_instr >> 14) & 03777;
nx = (nx ^ 02000) - 02000;
ny = (ny ^ 02000) - 02000;
sim_debug(DEBUG_DATA, &iii_dev, "III: long %d %d %o %o\n", nx, ny, sz, br);
if (nx < -512 || nx > 512 || ny < -512 || ny > 512)
uptr->STATUS |= EDG_FBIT;
sim_debug(DEBUG_DETAIL, &iii_dev, "III: long %d %d %o %o\n", nx, ny, sz, br);
if ((iii_instr & 0100) == 0) { /* Relative mode */
nx += ox;
ny += oy;
nx += ox;
ny += oy;
if (nx < -512 || nx > 512 || ny < -512 || ny > 512)
uptr->STATUS |= EDG_FBIT;
}
if (nx < -512 || nx > 512 || ny < -512 || ny > 512)
uptr->STATUS |= EDG_FBIT;
if ((iii_instr & 040) == 0 && (iii_sel & 04000) != 0) { /* Check if visible */
if ((iii_instr & 020) == 0) /* Draw a line */
draw_line(ox, oy, nx, ny, br, uptr);
@ -598,7 +599,7 @@ skip_up:
sim_debug(DEBUG_DETAIL, &iii_dev, "III: fetch %06o %012llo\n", uptr->MAR, iii_instr);
uptr->MAR++;
uptr->MAR &= RMASK;
sim_activate(uptr, 10);
sim_activate(uptr, 50);
}
if (((uptr->STATUS >> 3) & (uptr->STATUS & (WRAP_MSK|EDGE_MSK|LIGH_MSK))) != 0)

View File

@ -128,8 +128,8 @@ static struct phosphor p31[] = {{0.0, 1.0, 0.77, 0.5, .1}};
struct color color_p31 = { p31, ELEMENTS(p31), 25000 };
/* green phosphor for III */
static struct phosphor p39[] = {{0.2, 1.0, 0.0, 0.5, 0.10}};
struct color color_p39 = { p39, ELEMENTS(p39), 25000 };
static struct phosphor p39[] = {{0.2, 1.0, 0.0, 0.5, 0.01}};
struct color color_p39 = { p39, ELEMENTS(p39), 20000 };
static struct phosphor p40[] = {
/* P40 blue-white spot with yellow-green decay (.045s to 10%?) */