KA10: Updated to use DEC029 translation tables.

This commit is contained in:
Richard Cornwell 2020-11-17 22:06:22 -05:00
parent 3a7a27f651
commit d79cc4c494
2 changed files with 14 additions and 28 deletions

View file

@ -34,7 +34,7 @@
#include "sim_defs.h" #include "sim_defs.h"
#if (NUM_DEVS_CP > 0) #if (NUM_DEVS_CP > 0)
#define UNIT_CDP UNIT_ATTABLE | UNIT_DISABLE | UNIT_SEQ | MODE_026 #define UNIT_CDP UNIT_ATTABLE | UNIT_DISABLE | UNIT_SEQ | MODE_DEC29
#define CP_DEVNUM 0110 #define CP_DEVNUM 0110
@ -95,6 +95,12 @@ DIB cp_dib = { CP_DEVNUM, 1, cp_devio, NULL};
UNIT cp_unit = {UDATA(cp_srv, UNIT_CDP, 0), 2000 }; UNIT cp_unit = {UDATA(cp_srv, UNIT_CDP, 0), 2000 };
MTAB cp_mod[] = { MTAB cp_mod[] = {
{ MODE_CHAR, MODE_026, "IBM026", "IBM026", NULL, NULL, NULL,
"IBM 026 punch encoding"},
{ MODE_CHAR, MODE_029, "IBM029", "IBM029", NULL, NULL, NULL,
"IBM 029 punch encoding"},
{ MODE_CHAR, MODE_DEC29, "DEC029", "DEC029", NULL, NULL, NULL,
"DEC 029 punch encoding"},
{MTAB_XTD | MTAB_VUN, 0, "FORMAT", "FORMAT", {MTAB_XTD | MTAB_VUN, 0, "FORMAT", "FORMAT",
&sim_card_set_fmt, &sim_card_show_fmt, NULL}, &sim_card_set_fmt, &sim_card_show_fmt, NULL},
{0} {0}
@ -172,22 +178,6 @@ t_stat cp_devio(uint32 dev, uint64 *data) {
break; break;
case DATAO: case DATAO:
col = *data & 0xfff; col = *data & 0xfff;
switch(col) {
case 0x806: col = 0x482; break; /* ! - */
case 0x212: col = 0x006; break; /* " - */
case 0x20A: col = 0x042; break; /* # - */
case 0x206: col = 0x222; break; /* % - */
case 0x406: col = 0x800; break; /* & - */
case 0x00A: col = 0x012; break; /* ' - */
case 0xC00: col = 0x082; break; /* : - */
case 0x282: col = 0x40A; break; /* ; - */
case 0x40A: col = 0x20A; break; /* > - */
case 0xA00: col = 0x206; break; /* ? - */
case 0x412: col = 0xE82; break; /* [ - */
case 0x006: col = 0x282; break; /* \ - */
case 0x812: col = 0xE42; break; /* ] - */
case 0x012: col = 0x406; break; /* ^ - */
}
cp_buffer[uptr->COL++] = col; cp_buffer[uptr->COL++] = col;
uptr->STATUS &= ~DATA_REQ; uptr->STATUS &= ~DATA_REQ;
clr_interrupt(dev); clr_interrupt(dev);

View file

@ -34,7 +34,7 @@
#include "sim_defs.h" #include "sim_defs.h"
#if (NUM_DEVS_CR > 0) #if (NUM_DEVS_CR > 0)
#define UNIT_CDR UNIT_ATTABLE | UNIT_RO | UNIT_DISABLE | MODE_029 | MODE_LOWER #define UNIT_CDR UNIT_ATTABLE | UNIT_RO | UNIT_DISABLE | MODE_DEC29 | MODE_LOWER
#define CR_DEVNUM 0150 #define CR_DEVNUM 0150
@ -98,6 +98,12 @@ UNIT cr_unit = {
}; };
MTAB cr_mod[] = { MTAB cr_mod[] = {
{ MODE_CHAR, MODE_026, "IBM026", "IBM026", NULL, NULL, NULL,
"IBM 026 punch encoding"},
{ MODE_CHAR, MODE_029, "IBM029", "IBM029", NULL, NULL, NULL,
"IBM 029 punch encoding"},
{ MODE_CHAR, MODE_DEC29, "DEC029", "DEC029", NULL, NULL, NULL,
"DEC 029 punch encoding"},
{MTAB_XTD | MTAB_VUN, 0, "FORMAT", "FORMAT", {MTAB_XTD | MTAB_VUN, 0, "FORMAT", "FORMAT",
&sim_card_set_fmt, &sim_card_show_fmt, NULL}, &sim_card_set_fmt, &sim_card_show_fmt, NULL},
{0} {0}
@ -252,16 +258,6 @@ cr_srv(UNIT *uptr) {
return SCPE_OK; return SCPE_OK;
} }
data = cr_buffer[uptr->COL++]; data = cr_buffer[uptr->COL++];
switch(data) {
case 0x482: data = 0x806; break; /* ! - 12 8 7 */
case 0x006: data = 0x212; break; /* " - */
case 0xE82: data = 0x882; break; /* [ - 12 8 2 */
case 0xE42: data = 0x482; break; /* ] - 11 8 2 */
case 0x406: data = 0xa00; break; /* { - 12 0 */
case 0x806: data = 0xc00; break; /* | - 12 11 */
case 0x805: data = 0x600; break; /* } - 11 0 */
case 0xF02: data = 0x700; break; /* ~ - 11 0 1 */
}
uptr->DATA = data; uptr->DATA = data;
/* Generate upper 18 bits of data */ /* Generate upper 18 bits of data */
uptr->DATA |= ((data & 0x001) << 25) | uptr->DATA |= ((data & 0x001) << 25) |