From d4cb5e8aed0bedbd4c0c83006d0d384a67a9b761 Mon Sep 17 00:00:00 2001 From: Leo Broukhis Date: Fri, 13 Feb 2015 09:33:40 -0800 Subject: [PATCH] BESM6: Clarified terminology, TAB char fix. --- BESM6/besm6_cpu.c | 14 +++---- BESM6/besm6_defs.h | 16 ++++---- BESM6/besm6_disk.c | 12 +++--- BESM6/besm6_drum.c | 2 +- BESM6/besm6_mmu.c | 94 +++++++++++++++++++++---------------------- BESM6/besm6_printer.c | 2 +- BESM6/besm6_sys.c | 8 ++-- 7 files changed, 74 insertions(+), 74 deletions(-) diff --git a/BESM6/besm6_cpu.c b/BESM6/besm6_cpu.c index b0423f22..7ebed536 100644 --- a/BESM6/besm6_cpu.c +++ b/BESM6/besm6_cpu.c @@ -344,9 +344,9 @@ t_stat cpu_deposit (t_value val, t_addr addr, UNIT *uptr, int32 sw) /* Deposited values for the switch register address range * always go to switch registers. */ - pult [0][addr] = SET_CONVOL (val, CONVOL_INSN); + pult [0][addr] = SET_PARITY (val, PARITY_INSN); } else - memory [addr] = SET_CONVOL (val, CONVOL_INSN); + memory [addr] = SET_PARITY (val, PARITY_INSN); return SCPE_OK; } @@ -518,13 +518,13 @@ static void cmd_002 () else RUU &= ~RUU_AVOST_DISABLE; if (Aex & 2) - RUU |= RUU_CONVOL_RIGHT; + RUU |= RUU_PARITY_RIGHT; else - RUU &= ~RUU_CONVOL_RIGHT; + RUU &= ~RUU_PARITY_RIGHT; if (Aex & 4) - RUU |= RUU_CONVOL_LEFT; + RUU |= RUU_PARITY_LEFT; else - RUU &= ~RUU_CONVOL_LEFT; + RUU &= ~RUU_PARITY_LEFT; break; case 0200: case 0201: case 0202: case 0203: case 0204: case 0205: case 0206: case 0207: @@ -826,7 +826,7 @@ void check_initial_setup () (d->tm_year % 10) << 20 | ((d->tm_year / 10) % 10) << 16 | (memory[YEAR] & 7); - memory[YEAR] = SET_CONVOL (date, CONVOL_NUMBER); + memory[YEAR] = SET_PARITY (date, PARITY_NUMBER); /* приказ ВРЕ: ТР6 = 016, ТР5 = 9-14 р.-часы, 1-8 р.-минуты */ pult[0][6] = 016; pult[0][4] = 0; diff --git a/BESM6/besm6_defs.h b/BESM6/besm6_defs.h index 7695c5f0..b2f9f912 100644 --- a/BESM6/besm6_defs.h +++ b/BESM6/besm6_defs.h @@ -106,12 +106,12 @@ enum { * 11 - числовая свертка * В памяти биты свертки имитируют четность полуслов. */ -#define CONVOL_INSN 1 -#define CONVOL_NUMBER 2 -#define SET_CONVOL(x, c) (((x) & BITS48) | (((c) & 3LL) << 48)) -#define IS_INSN(x) (((x) >> 48) == CONVOL_INSN) -#define IS_NUMBER(x) (((x) >> 48) == CONVOL_INSN || \ - ((x) >> 48) == CONVOL_NUMBER) +#define PARITY_INSN 1 +#define PARITY_NUMBER 2 +#define SET_PARITY(x, c) (((x) & BITS48) | (((c) & 3LL) << 48)) +#define IS_INSN(x) (((x) >> 48) == PARITY_INSN) +#define IS_NUMBER(x) (((x) >> 48) == PARITY_INSN || \ + ((x) >> 48) == PARITY_NUMBER) /* * An attempt to approximate instruction execution times. @@ -170,8 +170,8 @@ extern jmp_buf cpu_halt; /* * Искусственный регистр режимов УУ, в реальной машине отсутствует. */ -#define RUU_CONVOL_RIGHT 000001 /* ПКП - признак контроля правой половины */ -#define RUU_CONVOL_LEFT 000002 /* ПКЛ - признак контроля левой половины */ +#define RUU_PARITY_RIGHT 000001 /* ПКП - признак контроля правой половины */ +#define RUU_PARITY_LEFT 000002 /* ПКЛ - признак контроля левой половины */ #define RUU_EXTRACODE 000004 /* РежЭ - режим экстракода */ #define RUU_INTERRUPT 000010 /* РежПр - режим прерывания */ #define RUU_MOD_RK 000020 /* ПрИК - модификация регистром М[16] */ diff --git a/BESM6/besm6_disk.c b/BESM6/besm6_disk.c index 4ad10280..fcc0786f 100644 --- a/BESM6/besm6_disk.c +++ b/BESM6/besm6_disk.c @@ -195,17 +195,17 @@ t_stat disk_attach (UNIT *u, char *cptr) if (!sim_quiet && !(sim_switches & SWMASK ('Q'))) sim_printf ("%s: formatting disk volume %d\n", sim_uname (u), diskno); - control[1] = SET_CONVOL(0, CONVOL_NUMBER); - control[2] = SET_CONVOL(0, CONVOL_NUMBER); - control[3] = SET_CONVOL(0, CONVOL_NUMBER); + control[1] = SET_PARITY(0, PARITY_NUMBER); + control[2] = SET_PARITY(0, PARITY_NUMBER); + control[3] = SET_PARITY(0, PARITY_NUMBER); control[1] |= 01370707LL << 24; /* Magic mark */ control[1] |= diskno << 12; for (blkno = 0; blkno < DISK_TOTBLK; ++blkno) { - control[0] = SET_CONVOL((t_value)(2*blkno) << 36, CONVOL_NUMBER); + control[0] = SET_PARITY((t_value)(2*blkno) << 36, PARITY_NUMBER); sim_fwrite(control, sizeof(t_value), 4, u->fileref); - control[0] = SET_CONVOL((t_value)(2*blkno+1) << 36, CONVOL_NUMBER); + control[0] = SET_PARITY((t_value)(2*blkno+1) << 36, PARITY_NUMBER); sim_fwrite(control, sizeof(t_value), 4, u->fileref); for (word = 0; word < 02000; ++word) { sim_fwrite(control+2, sizeof(t_value), 1, u->fileref); @@ -446,7 +446,7 @@ void disk_read_header (UNIT *u) /* Кодируем гребенку. */ for (i=0; i<4; i++) - sysdata[i] = SET_CONVOL (collect (sysdata[i]), CONVOL_NUMBER); + sysdata[i] = SET_PARITY (collect (sysdata[i]), PARITY_NUMBER); } /* diff --git a/BESM6/besm6_drum.c b/BESM6/besm6_drum.c index e4a6bbab..00d630f2 100644 --- a/BESM6/besm6_drum.c +++ b/BESM6/besm6_drum.c @@ -259,7 +259,7 @@ void drum_read_sector (UNIT *u) static void clear_memory (t_value *p, int nwords) { while (nwords-- > 0) - *p++ = SET_CONVOL (0, CONVOL_NUMBER); + *p++ = SET_PARITY (0, PARITY_NUMBER); } /* diff --git a/BESM6/besm6_mmu.c b/BESM6/besm6_mmu.c index 2db7bcb3..54a325a9 100644 --- a/BESM6/besm6_mmu.c +++ b/BESM6/besm6_mmu.c @@ -73,13 +73,13 @@ t_value pult[11][8] = { { 0 }, /* Hardwired program 1, a simple CU test */ { 0376, - SET_CONVOL(01240000007100002LL, CONVOL_INSN), /* 1: vtm (2), vjm 2(1) */ - SET_CONVOL(00657777712577777LL, CONVOL_INSN), /* 2: utm -1(1), utm -1(2) */ - SET_CONVOL(00444000317400007LL, CONVOL_INSN), /* 3: mtj 3(1), vzm 7(3) */ - SET_CONVOL(01045000317500007LL, CONVOL_INSN), /* 4: j+m 3(2), v1m 7(3)*/ - SET_CONVOL(00650000107700002LL, CONVOL_INSN), /* 5: utm 1(1), vlm 2(1) */ - SET_CONVOL(01257777713400001LL, CONVOL_INSN), /* 6: utm -1(2), vzm 1(2) */ - SET_CONVOL(00330000003000001LL, CONVOL_INSN) /* 7: stop, uj 1 */ + SET_PARITY(01240000007100002LL, PARITY_INSN), /* 1: vtm (2), vjm 2(1) */ + SET_PARITY(00657777712577777LL, PARITY_INSN), /* 2: utm -1(1), utm -1(2) */ + SET_PARITY(00444000317400007LL, PARITY_INSN), /* 3: mtj 3(1), vzm 7(3) */ + SET_PARITY(01045000317500007LL, PARITY_INSN), /* 4: j+m 3(2), v1m 7(3)*/ + SET_PARITY(00650000107700002LL, PARITY_INSN), /* 5: utm 1(1), vlm 2(1) */ + SET_PARITY(01257777713400001LL, PARITY_INSN), /* 6: utm -1(2), vzm 1(2) */ + SET_PARITY(00330000003000001LL, PARITY_INSN) /* 7: stop, uj 1 */ }, /* Hardwired program 2, RAM write test. The "arx" insn (cyclic add) * in word 3 could be changed to "atx" insn (load) to use a constant @@ -87,52 +87,52 @@ t_value pult[11][8] = { * The bit pattern to use is taken from switch register 7. */ { 0176, - SET_CONVOL(00770000306400012LL, CONVOL_INSN), /* 1: vlm 3(1), vtm 12(1) */ - SET_CONVOL(00010000000000010LL, CONVOL_INSN), /* 2: xta 0, atx 10 */ - SET_CONVOL(00010001000130007LL, CONVOL_INSN), /* 3: xta 10, arx 7 */ - SET_CONVOL(00500777700000010LL, CONVOL_INSN), /* 4: atx -1(1), atx 10 */ - SET_CONVOL(00512777702600001LL, CONVOL_INSN), /* 5: aex -1(1), uza 1 */ - SET_CONVOL(00737777703000001LL, CONVOL_INSN) /* 6: stop -1(1), uj 1 */ + SET_PARITY(00770000306400012LL, PARITY_INSN), /* 1: vlm 3(1), vtm 12(1) */ + SET_PARITY(00010000000000010LL, PARITY_INSN), /* 2: xta 0, atx 10 */ + SET_PARITY(00010001000130007LL, PARITY_INSN), /* 3: xta 10, arx 7 */ + SET_PARITY(00500777700000010LL, PARITY_INSN), /* 4: atx -1(1), atx 10 */ + SET_PARITY(00512777702600001LL, PARITY_INSN), /* 5: aex -1(1), uza 1 */ + SET_PARITY(00737777703000001LL, PARITY_INSN) /* 6: stop -1(1), uj 1 */ }, /* Hardwired program 3, RAM read test to use after program 2, arx/atx applies */ { 0176, - SET_CONVOL(00770000306400012LL, CONVOL_INSN), /* 1: vlm 3(1), vtm 12(1) */ - SET_CONVOL(00010000000000010LL, CONVOL_INSN), /* 2: xta 0, atx 10 */ - SET_CONVOL(00010001000130007LL, CONVOL_INSN), /* 3: xta 10, arx 7 */ - SET_CONVOL(00000000000000010LL, CONVOL_INSN), /* 4: atx 0, atx 10 */ - SET_CONVOL(00512777702600001LL, CONVOL_INSN), /* 5: aex -1(1), uza 1 */ - SET_CONVOL(00737777703000001LL, CONVOL_INSN) /* 6: stop -1(1), uj 1 */ + SET_PARITY(00770000306400012LL, PARITY_INSN), /* 1: vlm 3(1), vtm 12(1) */ + SET_PARITY(00010000000000010LL, PARITY_INSN), /* 2: xta 0, atx 10 */ + SET_PARITY(00010001000130007LL, PARITY_INSN), /* 3: xta 10, arx 7 */ + SET_PARITY(00000000000000010LL, PARITY_INSN), /* 4: atx 0, atx 10 */ + SET_PARITY(00512777702600001LL, PARITY_INSN), /* 5: aex -1(1), uza 1 */ + SET_PARITY(00737777703000001LL, PARITY_INSN) /* 6: stop -1(1), uj 1 */ }, /* Hardwired program 4, RAM write-read test to use after program 2, arx/atx applies */ { 0176, - SET_CONVOL(00640001200100011LL, CONVOL_INSN), /* 1: vtm 12(1), xta 11 */ - SET_CONVOL(00000001005127777LL, CONVOL_INSN), /* 2: atx 10, aex -1(1) */ - SET_CONVOL(00260000407377777LL, CONVOL_INSN), /* 3: uza 4, stop -1(1) */ - SET_CONVOL(00010001000130007LL, CONVOL_INSN), /* 4: xta 10, arx 7 */ - SET_CONVOL(00500777707700002LL, CONVOL_INSN), /* 5: atx -1(1), vlm 2(1) */ - SET_CONVOL(00300000100000000LL, CONVOL_INSN) /* 6: uj 1 */ + SET_PARITY(00640001200100011LL, PARITY_INSN), /* 1: vtm 12(1), xta 11 */ + SET_PARITY(00000001005127777LL, PARITY_INSN), /* 2: atx 10, aex -1(1) */ + SET_PARITY(00260000407377777LL, PARITY_INSN), /* 3: uza 4, stop -1(1) */ + SET_PARITY(00010001000130007LL, PARITY_INSN), /* 4: xta 10, arx 7 */ + SET_PARITY(00500777707700002LL, PARITY_INSN), /* 5: atx -1(1), vlm 2(1) */ + SET_PARITY(00300000100000000LL, PARITY_INSN) /* 6: uj 1 */ }, /* Hardwired program 5, ALU test; switch reg 7 should contain a normalized f. p. value, e.g. 1.0 = 4050 0000 0000 0000 */ { 0176, - SET_CONVOL(00004000700000011LL, CONVOL_INSN), /* 1: a+x 7, atx 11 */ - SET_CONVOL(00025001100000010LL, CONVOL_INSN), /* 2: e-x 11, atx 10 */ - SET_CONVOL(00017001000160010LL, CONVOL_INSN), /* 3: a*x 10, a/x 10 */ - SET_CONVOL(00005001000340145LL, CONVOL_INSN), /* 4: a-x 10, e+n 145 */ - SET_CONVOL(00270000603300000LL, CONVOL_INSN), /* 5: u1a 6, stop */ - SET_CONVOL(00010001103000001LL, CONVOL_INSN) /* 6: xta 11, uj 1*/ + SET_PARITY(00004000700000011LL, PARITY_INSN), /* 1: a+x 7, atx 11 */ + SET_PARITY(00025001100000010LL, PARITY_INSN), /* 2: e-x 11, atx 10 */ + SET_PARITY(00017001000160010LL, PARITY_INSN), /* 3: a*x 10, a/x 10 */ + SET_PARITY(00005001000340145LL, PARITY_INSN), /* 4: a-x 10, e+n 145 */ + SET_PARITY(00270000603300000LL, PARITY_INSN), /* 5: u1a 6, stop */ + SET_PARITY(00010001103000001LL, PARITY_INSN) /* 6: xta 11, uj 1*/ }, /* Hardwired program 6, reading from punch tape (originally) or a disk (rework); * various bit groups not hardwired, marked [] (TODO). Disk operation is encoded. */ { 0376, - SET_CONVOL(00640000300100006LL, CONVOL_INSN), /* 1: vtm [3](1), xta 6 */ - SET_CONVOL(00433002004330020LL, CONVOL_INSN), /* 2: ext 20(1), ext 20(1) */ - SET_CONVOL(00036015204330020LL, CONVOL_INSN), /* 3: asn 152, ext 20(1) */ - SET_CONVOL(00010000704330000LL, CONVOL_INSN), /* 4: xta 7, ext (1) */ - SET_CONVOL(00036014404330020LL, CONVOL_INSN), /* 5: asn 144, ext 20(1) */ - SET_CONVOL(00330000000002401LL, CONVOL_INSN), /* 6: stop, =24[01] */ - SET_CONVOL(04000000001400000LL, CONVOL_NUMBER) /* 7: bits 37-47 not hardwired */ + SET_PARITY(00640000300100006LL, PARITY_INSN), /* 1: vtm [3](1), xta 6 */ + SET_PARITY(00433002004330020LL, PARITY_INSN), /* 2: ext 20(1), ext 20(1) */ + SET_PARITY(00036015204330020LL, PARITY_INSN), /* 3: asn 152, ext 20(1) */ + SET_PARITY(00010000704330000LL, PARITY_INSN), /* 4: xta 7, ext (1) */ + SET_PARITY(00036014404330020LL, PARITY_INSN), /* 5: asn 144, ext 20(1) */ + SET_PARITY(00330000000002401LL, PARITY_INSN), /* 6: stop, =24[01] */ + SET_PARITY(04000000001400000LL, PARITY_NUMBER) /* 7: bits 37-47 not hardwired */ }, /* Hardwired program 7, RAM peek/poke, bits 1-15 of word 1 not hardwired (TODO) */ { 0176, @@ -142,12 +142,12 @@ t_value pult[11][8] = { }, /* Hardwired program 9, drum I/O */ { 0176, - SET_CONVOL(00647774100100007LL, CONVOL_INSN), /* 1: vtm -31(1), xta 7 */ - SET_CONVOL(00033000212460000LL, CONVOL_INSN), /* 2: ext 2, vtm 60000(2) */ - SET_CONVOL(00040000013700003LL, CONVOL_INSN), /* 3: ati, vlm 3(2) */ - SET_CONVOL(00013000607700002LL, CONVOL_INSN), /* 4: arx 6, vlm 2(1) */ - SET_CONVOL(00330000103000005LL, CONVOL_INSN), /* 5: stop 1, uj 5 */ - SET_CONVOL(00000000000010001LL, CONVOL_NUMBER) /* 6: =10001 */ + SET_PARITY(00647774100100007LL, PARITY_INSN), /* 1: vtm -31(1), xta 7 */ + SET_PARITY(00033000212460000LL, PARITY_INSN), /* 2: ext 2, vtm 60000(2) */ + SET_PARITY(00040000013700003LL, PARITY_INSN), /* 3: ati, vlm 3(2) */ + SET_PARITY(00013000607700002LL, PARITY_INSN), /* 4: arx 6, vlm 2(1) */ + SET_PARITY(00330000103000005LL, PARITY_INSN), /* 5: stop 1, uj 5 */ + SET_PARITY(00000000000010001LL, PARITY_NUMBER) /* 6: =10001 */ }, /* Hardwired program 10, magtape read */ { 0176, @@ -425,7 +425,7 @@ void mmu_store (int addr, t_value val) if (addr > 0100000 && addr < 0100010) return; - BRZ[faked] = SET_CONVOL (val, RUU ^ CONVOL_INSN); + BRZ[faked] = SET_PARITY (val, RUU ^ PARITY_INSN); BAZ[faked] = addr; mmu_flush (faked); return; @@ -440,7 +440,7 @@ void mmu_store (int addr, t_value val) matching = mmu_match(addr, OLDEST); - BRZ[matching] = SET_CONVOL (val, RUU ^ CONVOL_INSN); + BRZ[matching] = SET_PARITY (val, RUU ^ PARITY_INSN); BAZ[matching] = addr; set_wins (matching); @@ -738,7 +738,7 @@ void mmu_setprotection (int idx, t_value val) void mmu_setcache (int idx, t_value val) { - BRZ[idx] = SET_CONVOL (val, RUU ^ CONVOL_INSN); + BRZ[idx] = SET_PARITY (val, RUU ^ PARITY_INSN); } t_value mmu_getcache (int idx) diff --git a/BESM6/besm6_printer.c b/BESM6/besm6_printer.c index 6cfddad8..f6152833 100644 --- a/BESM6/besm6_printer.c +++ b/BESM6/besm6_printer.c @@ -159,7 +159,7 @@ void printer_control (int num, uint32 cmd) case 2: /* ribbon off */ dev->rampup = cmd == 2 ? FAST_START : SLOW_START; sim_cancel (u); - fflush (u->fileref); + fflush (u->fileref); break; } } diff --git a/BESM6/besm6_sys.c b/BESM6/besm6_sys.c index 442a8b52..96251f97 100644 --- a/BESM6/besm6_sys.c +++ b/BESM6/besm6_sys.c @@ -656,16 +656,16 @@ t_stat besm6_load (FILE *input) break; case '=': /* word */ if (addr < 010) - pult [0][addr] = SET_CONVOL (word, CONVOL_NUMBER); + pult [0][addr] = SET_PARITY (word, PARITY_NUMBER); else - memory [addr] = SET_CONVOL (word, CONVOL_NUMBER); + memory [addr] = SET_PARITY (word, PARITY_NUMBER); ++addr; break; case '*': /* instruction */ if (addr < 010) - pult [0][addr] = SET_CONVOL (word, CONVOL_INSN); + pult [0][addr] = SET_PARITY (word, PARITY_INSN); else - memory [addr] = SET_CONVOL (word, CONVOL_INSN); + memory [addr] = SET_PARITY (word, PARITY_INSN); ++addr; break; case '@': /* start address */