diff --git a/BESM6/besm6_cpu.c b/BESM6/besm6_cpu.c index 646b71f9..cfe4634f 100644 --- a/BESM6/besm6_cpu.c +++ b/BESM6/besm6_cpu.c @@ -107,40 +107,42 @@ t_stat cpu_show_pult (FILE *st, UNIT *up, int32 v, void *dp); UNIT cpu_unit = { UDATA (NULL, UNIT_FIX, MEMSIZE) }; +#define ORDATAVM(nm,loc,wd) REGDATA(nm,(loc),8,wd,0,1,NULL,NULL,REG_VMIO,0,0) + REG cpu_reg[] = { - { "СчАС", &PC, 8, 15, 0, 1 }, /* счётчик адреса команды */ - { "РК", &RK, 8, 24, 0, 1 }, /* регистр выполняемой команды */ - { "Аисп", &Aex, 8, 15, 0, 1 }, /* исполнительный адрес */ - { "СМ", &ACC, 8, 48, 0, 1, NULL, NULL, REG_VMIO}, /* сумматор */ - { "РМР", &RMR, 8, 48, 0, 1, NULL, NULL, REG_VMIO}, /* регистр младших разрядов */ - { "РАУ", &RAU, 2, 6, 0, 1 }, /* режимы АУ */ - { "М1", &M[1], 8, 15, 0, 1 }, /* регистры-модификаторы */ - { "М2", &M[2], 8, 15, 0, 1 }, - { "М3", &M[3], 8, 15, 0, 1 }, - { "М4", &M[4], 8, 15, 0, 1 }, - { "М5", &M[5], 8, 15, 0, 1 }, - { "М6", &M[6], 8, 15, 0, 1 }, - { "М7", &M[7], 8, 15, 0, 1 }, - { "М10", &M[010], 8, 15, 0, 1 }, - { "М11", &M[011], 8, 15, 0, 1 }, - { "М12", &M[012], 8, 15, 0, 1 }, - { "М13", &M[013], 8, 15, 0, 1 }, - { "М14", &M[014], 8, 15, 0, 1 }, - { "М15", &M[015], 8, 15, 0, 1 }, - { "М16", &M[016], 8, 15, 0, 1 }, - { "М17", &M[017], 8, 15, 0, 1 }, /* указатель магазина */ - { "М20", &M[020], 8, 15, 0, 1 }, /* MOD - модификатор адреса */ - { "М21", &M[021], 8, 15, 0, 1 }, /* PSW - режимы УУ */ - { "М27", &M[027], 8, 15, 0, 1 }, /* SPSW - упрятывание режимов УУ */ - { "М32", &M[032], 8, 15, 0, 1 }, /* ERET - адрес возврата из экстракода */ - { "М33", &M[033], 8, 15, 0, 1 }, /* IRET - адрес возврата из прерывания */ - { "М34", &M[034], 8, 16, 0, 1 }, /* IBP - адрес прерывания по выполнению */ - { "М35", &M[035], 8, 16, 0, 1 }, /* DWP - адрес прерывания по чтению/записи */ - { "РУУ", &RUU, 2, 9, 0, 1 }, /* ПКП, ПКЛ, РежЭ, РежПр, ПрИК, БРО, ПрК */ - { "ГРП", &GRP, 8, 48, 0, 1, NULL, NULL, REG_VMIO}, /* главный регистр прерываний */ - { "МГРП", &MGRP, 8, 48, 0, 1, NULL, NULL, REG_VMIO}, /* маска ГРП */ - { "ПРП", &PRP, 8, 24, 0, 1 }, /* периферийный регистр прерываний */ - { "МПРП", &MPRP, 8, 24, 0, 1 }, /* маска ПРП */ + { ORDATA ( "СчАС", PC, 15) }, /* счётчик адреса команды */ + { ORDATA ( "РК", RK, 24) }, /* регистр выполняемой команды */ + { ORDATA ( "Аисп", Aex, 15) }, /* исполнительный адрес */ + { ORDATAVM ( "СМ", ACC, 48) }, /* сумматор */ + { ORDATAVM ( "РМР", RMR, 48) }, /* регистр младших разрядов */ + { BINRDATA ( "РАУ", RAU, 6) }, /* режимы АУ */ + { ORDATA ( "М1", M[1], 15) }, /* регистры-модификаторы */ + { ORDATA ( "М2", M[2], 15) }, + { ORDATA ( "М3", M[3], 15) }, + { ORDATA ( "М4", M[4], 15) }, + { ORDATA ( "М5", M[5], 15) }, + { ORDATA ( "М6", M[6], 15) }, + { ORDATA ( "М7", M[7], 15) }, + { ORDATA ( "М10", M[010], 15) }, + { ORDATA ( "М11", M[011], 15) }, + { ORDATA ( "М12", M[012], 15) }, + { ORDATA ( "М13", M[013], 15) }, + { ORDATA ( "М14", M[014], 15) }, + { ORDATA ( "М15", M[015], 15) }, + { ORDATA ( "М16", M[016], 15) }, + { ORDATA ( "М17", M[017], 15) }, /* указатель магазина */ + { ORDATA ( "М20", M[020], 15) }, /* MOD - модификатор адреса */ + { ORDATA ( "М21", M[021], 15) }, /* PSW - режимы УУ */ + { ORDATA ( "М27", M[027], 15) }, /* SPSW - упрятывание режимов УУ */ + { ORDATA ( "М32", M[032], 15) }, /* ERET - адрес возврата из экстракода */ + { ORDATA ( "М33", M[033], 15) }, /* IRET - адрес возврата из прерывания */ + { ORDATA ( "М34", M[034], 16) }, /* IBP - адрес прерывания по выполнению */ + { ORDATA ( "М35", M[035], 16) }, /* DWP - адрес прерывания по чтению/записи */ + { BINRDATA ( "РУУ", RUU, 9) }, /* ПКП, ПКЛ, РежЭ, РежПр, ПрИК, БРО, ПрК */ + { ORDATAVM ( "ГРП", GRP, 48) }, /* главный регистр прерываний */ + { ORDATAVM ( "МГРП", MGRP, 48) }, /* маска ГРП */ + { ORDATA ( "ПРП", PRP, 24) }, /* периферийный регистр прерываний */ + { ORDATA ( "МПРП", MPRP, 24) }, /* маска ПРП */ { 0 } }; @@ -178,73 +180,73 @@ DEVICE cpu_dev = { * REG: A pseudo-device containing Latin synonyms of all CPU registers. */ REG reg_reg[] = { - { "PC", &PC, 8, 15, 0, 1 }, /* program counter */ - { "RK", &RK, 8, 24, 0, 1 }, /* instruction register */ - { "Aex", &Aex, 8, 15, 0, 1 }, /* effective address */ - { "ACC", &ACC, 8, 48, 0, 1, NULL, NULL, REG_VMIO}, /* accumulator */ - { "RMR", &RMR, 8, 48, 0, 1, NULL, NULL, REG_VMIO}, /* LSB register */ - { "RAU", &RAU, 2, 6, 0, 1 }, /* ALU modes */ - { "M1", &M[1], 8, 15, 0, 1 }, /* index (modifier) registers */ - { "M2", &M[2], 8, 15, 0, 1 }, - { "M3", &M[3], 8, 15, 0, 1 }, - { "M4", &M[4], 8, 15, 0, 1 }, - { "M5", &M[5], 8, 15, 0, 1 }, - { "M6", &M[6], 8, 15, 0, 1 }, - { "M7", &M[7], 8, 15, 0, 1 }, - { "M10", &M[010], 8, 15, 0, 1 }, - { "M11", &M[011], 8, 15, 0, 1 }, - { "M12", &M[012], 8, 15, 0, 1 }, - { "M13", &M[013], 8, 15, 0, 1 }, - { "M14", &M[014], 8, 15, 0, 1 }, - { "M15", &M[015], 8, 15, 0, 1 }, - { "M16", &M[016], 8, 15, 0, 1 }, - { "M17", &M[017], 8, 15, 0, 1 }, /* also the stack pointer */ - { "M20", &M[020], 8, 15, 0, 1 }, /* MOD - address modifier register */ - { "M21", &M[021], 8, 15, 0, 1 }, /* PSW - CU modes */ - { "M27", &M[027], 8, 15, 0, 1 }, /* SPSW - saved CU modes */ - { "M32", &M[032], 8, 15, 0, 1 }, /* ERET - extracode return address */ - { "M33", &M[033], 8, 15, 0, 1 }, /* IRET - interrupt return address */ - { "M34", &M[034], 8, 16, 0, 1 }, /* IBP - instruction bkpt address */ - { "M35", &M[035], 8, 16, 0, 1 }, /* DWP - watchpoint address */ - { "RUU", &RUU, 2, 9, 0, 1 }, /* execution modes */ - { "GRP", &GRP, 8, 48, 0, 1, NULL, NULL, REG_VMIO}, /* main interrupt reg */ - { "MGRP", &MGRP, 8, 48, 0, 1, NULL, NULL, REG_VMIO}, /* mask of the above */ - { "PRP", &PRP, 8, 24, 0, 1 }, /* peripheral interrupt reg */ - { "MPRP", &MPRP, 8, 24, 0, 1 }, /* mask of the above*/ + { ORDATA ( "PC", PC, 15) }, /* program counter */ + { ORDATA ( "RK", RK, 24) }, /* instruction register */ + { ORDATA ( "Aex", Aex, 15) }, /* effective address */ + { ORDATAVM ( "ACC", ACC, 48) }, /* accumulator */ + { ORDATAVM ( "RMR", RMR, 48) }, /* LSB register */ + { BINRDATA ( "RAU", RAU, 6) }, /* ALU modes */ + { ORDATA ( "M1", M[1], 15) }, /* index (modifier) registers */ + { ORDATA ( "M2", M[2], 15) }, + { ORDATA ( "M3", M[3], 15) }, + { ORDATA ( "M4", M[4], 15) }, + { ORDATA ( "M5", M[5], 15) }, + { ORDATA ( "M6", M[6], 15) }, + { ORDATA ( "M7", M[7], 15) }, + { ORDATA ( "M10", M[010], 15) }, + { ORDATA ( "M11", M[011], 15) }, + { ORDATA ( "M12", M[012], 15) }, + { ORDATA ( "M13", M[013], 15) }, + { ORDATA ( "M14", M[014], 15) }, + { ORDATA ( "M15", M[015], 15) }, + { ORDATA ( "M16", M[016], 15) }, + { ORDATA ( "M17", M[017], 15) }, /* also the stack pointer */ + { ORDATA ( "M20", M[020], 15) }, /* MOD - address modifier register */ + { ORDATA ( "M21", M[021], 15) }, /* PSW - CU modes */ + { ORDATA ( "M27", M[027], 15) }, /* SPSW - saved CU modes */ + { ORDATA ( "M32", M[032], 15) }, /* ERET - extracode return address */ + { ORDATA ( "M33", M[033], 15) }, /* IRET - interrupt return address */ + { ORDATA ( "M34", M[034], 16) }, /* IBP - instruction bkpt address */ + { ORDATA ( "M35", M[035], 16) }, /* DWP - watchpoint address */ + { BINRDATA ( "RUU", RUU, 9) }, /* execution modes */ + { ORDATAVM ( "GRP", GRP, 48) }, /* main interrupt reg */ + { ORDATAVM ( "MGRP", MGRP, 48) }, /* mask of the above */ + { ORDATA ( "PRP", PRP, 24) }, /* peripheral interrupt reg */ + { ORDATA ( "MPRP", MPRP, 24) }, /* mask of the above*/ - { "BRZ0", &BRZ[0], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "BRZ1", &BRZ[1], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "BRZ2", &BRZ[2], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "BRZ3", &BRZ[3], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "BRZ4", &BRZ[4], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "BRZ5", &BRZ[5], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "BRZ6", &BRZ[6], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "BRZ7", &BRZ[7], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "BAZ0", &BAZ[0], 8, 16, 0, 1 }, - { "BAZ1", &BAZ[1], 8, 16, 0, 1 }, - { "BAZ2", &BAZ[2], 8, 16, 0, 1 }, - { "BAZ3", &BAZ[3], 8, 16, 0, 1 }, - { "BAZ4", &BAZ[4], 8, 16, 0, 1 }, - { "BAZ5", &BAZ[5], 8, 16, 0, 1 }, - { "BAZ6", &BAZ[6], 8, 16, 0, 1 }, - { "BAZ7", &BAZ[7], 8, 16, 0, 1 }, - { "TABST", &TABST, 8, 28, 0, 1 }, - { "RP0", &RP[0], 8, 48, 0, 1, NULL, NULL, REG_VMIO }, - { "RP1", &RP[1], 8, 48, 0, 1, NULL, NULL, REG_VMIO }, - { "RP2", &RP[2], 8, 48, 0, 1, NULL, NULL, REG_VMIO }, - { "RP3", &RP[3], 8, 48, 0, 1, NULL, NULL, REG_VMIO }, - { "RP4", &RP[4], 8, 48, 0, 1, NULL, NULL, REG_VMIO }, - { "RP5", &RP[5], 8, 48, 0, 1, NULL, NULL, REG_VMIO }, - { "RP6", &RP[6], 8, 48, 0, 1, NULL, NULL, REG_VMIO }, - { "RP7", &RP[7], 8, 48, 0, 1, NULL, NULL, REG_VMIO }, - { "RZ", &RZ, 8, 32, 0, 1 }, - { "FP1", &pult[0][1], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "FP2", &pult[0][2], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "FP3", &pult[0][3], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "FP4", &pult[0][4], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "FP5", &pult[0][5], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "FP6", &pult[0][6], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, - { "FP7", &pult[0][7], 8, 50, 0, 1, NULL, NULL, REG_VMIO }, + { ORDATAVM ( "BRZ0", BRZ[0], 50) }, + { ORDATAVM ( "BRZ1", BRZ[1], 50) }, + { ORDATAVM ( "BRZ2", BRZ[2], 50) }, + { ORDATAVM ( "BRZ3", BRZ[3], 50) }, + { ORDATAVM ( "BRZ4", BRZ[4], 50) }, + { ORDATAVM ( "BRZ5", BRZ[5], 50) }, + { ORDATAVM ( "BRZ6", BRZ[6], 50) }, + { ORDATAVM ( "BRZ7", BRZ[7], 50) }, + { ORDATA ( "BAZ0", BAZ[0], 16) }, + { ORDATA ( "BAZ1", BAZ[1], 16) }, + { ORDATA ( "BAZ2", BAZ[2], 16) }, + { ORDATA ( "BAZ3", BAZ[3], 16) }, + { ORDATA ( "BAZ4", BAZ[4], 16) }, + { ORDATA ( "BAZ5", BAZ[5], 16) }, + { ORDATA ( "BAZ6", BAZ[6], 16) }, + { ORDATA ( "BAZ7", BAZ[7], 16) }, + { ORDATA ( "TABST", TABST, 28) }, + { ORDATAVM ( "RP0", RP[0], 48) }, + { ORDATAVM ( "RP1", RP[1], 48) }, + { ORDATAVM ( "RP2", RP[2], 48) }, + { ORDATAVM ( "RP3", RP[3], 48) }, + { ORDATAVM ( "RP4", RP[4], 48) }, + { ORDATAVM ( "RP5", RP[5], 48) }, + { ORDATAVM ( "RP6", RP[6], 48) }, + { ORDATAVM ( "RP7", RP[7], 48) }, + { ORDATA ( "RZ", RZ, 32) }, + { ORDATAVM ( "FP1", pult[0][1], 50) }, + { ORDATAVM ( "FP2", pult[0][2], 50) }, + { ORDATAVM ( "FP3", pult[0][3], 50) }, + { ORDATAVM ( "FP4", pult[0][4], 50) }, + { ORDATAVM ( "FP5", pult[0][5], 50) }, + { ORDATAVM ( "FP6", pult[0][6], 50) }, + { ORDATAVM ( "FP7", pult[0][7], 50) }, { 0 } }; diff --git a/BESM6/besm6_disk.c b/BESM6/besm6_disk.c index fcc0786f..76db0e71 100644 --- a/BESM6/besm6_disk.c +++ b/BESM6/besm6_disk.c @@ -102,19 +102,19 @@ UNIT disk_unit [16] = { }; REG disk_reg[] = { - { "КУС_0", &controller[0].op, 8, 24, 0, 1 }, - { "УСТР_0", &controller[0].dev, 8, 3, 0, 1 }, - { "ЗОНА_0", &controller[0].zone, 8, 10, 0, 1 }, - { "ДОРОЖКА_0", &controller[0].track, 8, 2, 0, 1 }, - { "МОЗУ_0", &controller[0].memory, 8, 20, 0, 1 }, - { "РС_0", &controller[0].status, 8, 24, 0, 1 }, - { "КУС_1", &controller[1].op, 8, 24, 0, 1 }, - { "УСТР_1", &controller[1].dev, 8, 3, 0, 1 }, - { "ЗОНА_1", &controller[1].zone, 8, 10, 0, 1 }, - { "ДОРОЖКА_1", &controller[1].track, 8, 2, 0, 1 }, - { "МОЗУ_1", &controller[1].memory, 8, 20, 0, 1 }, - { "РС_1", &controller[1].status, 8, 24, 0, 1 }, - { "ОШ", &disk_fail, 8, 6, 0, 1 }, + { ORDATA ( "КУС_0", controller[0].op, 24) }, + { ORDATA ( "УСТР_0", controller[0].dev, 3) }, + { ORDATA ( "ЗОНА_0", controller[0].zone, 10) }, + { ORDATA ( "ДОРОЖКА_0", controller[0].track, 2) }, + { ORDATA ( "МОЗУ_0", controller[0].memory, 20) }, + { ORDATA ( "РС_0", controller[0].status, 24) }, + { ORDATA ( "КУС_1", controller[1].op, 24) }, + { ORDATA ( "УСТР_1", controller[1].dev, 3) }, + { ORDATA ( "ЗОНА_1", controller[1].zone, 10) }, + { ORDATA ( "ДОРОЖКА_1", controller[1].track, 2) }, + { ORDATA ( "МОЗУ_1", controller[1].memory, 20) }, + { ORDATA ( "РС_1", controller[1].status, 24) }, + { ORDATA ( "ОШ", disk_fail, 6) }, { 0 } }; diff --git a/BESM6/besm6_drum.c b/BESM6/besm6_drum.c index 00d630f2..93b0d777 100644 --- a/BESM6/besm6_drum.c +++ b/BESM6/besm6_drum.c @@ -69,11 +69,11 @@ UNIT drum_unit [] = { }; REG drum_reg[] = { - { "УС", &drum_op, 8, 24, 0, 1 }, - { "ЗОНА", &drum_zone, 8, 10, 0, 1 }, - { "СЕКТОР", &drum_sector, 8, 2, 0, 1 }, - { "МОЗУ", &drum_memory, 8, 15, 0, 1 }, - { "СЧСЛОВ", &drum_nwords, 8, 11, 0, 1 }, + { ORDATA ( "УС", drum_op, 24) }, + { ORDATA ( "ЗОНА", drum_zone, 10) }, + { ORDATA ( "СЕКТОР", drum_sector, 2) }, + { ORDATA ( "МОЗУ", drum_memory, 15) }, + { ORDATA ( "СЧСЛОВ", drum_nwords, 11) }, { 0 } }; diff --git a/BESM6/besm6_mmu.c b/BESM6/besm6_mmu.c index 54a325a9..e03a742a 100644 --- a/BESM6/besm6_mmu.c +++ b/BESM6/besm6_mmu.c @@ -154,51 +154,54 @@ t_value pult[11][8] = { }, }; +#define ORDATAVM(nm,loc,wd) REGDATA(nm,(loc),8,wd,0,1,NULL,NULL,REG_VMIO,0,0) +#define ORDATAH(nm,loc,wd) REGDATA(nm,(loc),8,wd,0,1,NULL,NULL,REG_HIDDEN,0,0) + REG mmu_reg[] = { - { "БРЗ0", &BRZ[0], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, /* Буферные регистры записи */ - { "БРЗ1", &BRZ[1], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БРЗ2", &BRZ[2], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БРЗ3", &BRZ[3], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БРЗ4", &BRZ[4], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БРЗ5", &BRZ[5], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БРЗ6", &BRZ[6], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БРЗ7", &BRZ[7], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БАЗ0", &BAZ[0], 8, 16, 0, 1 }, /* Буферные адреса записи */ - { "БАЗ1", &BAZ[1], 8, 16, 0, 1 }, - { "БАЗ2", &BAZ[2], 8, 16, 0, 1 }, - { "БАЗ3", &BAZ[3], 8, 16, 0, 1 }, - { "БАЗ4", &BAZ[4], 8, 16, 0, 1 }, - { "БАЗ5", &BAZ[5], 8, 16, 0, 1 }, - { "БАЗ6", &BAZ[6], 8, 16, 0, 1 }, - { "БАЗ7", &BAZ[7], 8, 16, 0, 1 }, - { "ТАБСТ", &TABST, 8, 28, 0, 1, NULL, NULL, REG_HIDDEN },/* Таблица старшинства БРЗ */ - { "ЗпТР", &FLUSH, 8, 4, 0, 1, NULL, NULL, REG_HIDDEN },/* Признак выталкивания БРЗ */ - { "Старш", &OLDEST, 8, 3, 0, 1 }, /* Номер вытолкнутого БРЗ */ - { "РП0", &RP[0], 8, 48, 0, 1, NULL, NULL, REG_VMIO}, /* Регистры приписки, по 12 бит */ - { "РП1", &RP[1], 8, 48, 0, 1, NULL, NULL, REG_VMIO}, - { "РП2", &RP[2], 8, 48, 0, 1, NULL, NULL, REG_VMIO}, - { "РП3", &RP[3], 8, 48, 0, 1, NULL, NULL, REG_VMIO}, - { "РП4", &RP[4], 8, 48, 0, 1, NULL, NULL, REG_VMIO}, - { "РП5", &RP[5], 8, 48, 0, 1, NULL, NULL, REG_VMIO}, - { "РП6", &RP[6], 8, 48, 0, 1, NULL, NULL, REG_VMIO}, - { "РП7", &RP[7], 8, 48, 0, 1, NULL, NULL, REG_VMIO}, - { "РЗ", &RZ, 8, 32, 0, 1 }, /* Регистр защиты */ - { "ТР1", &pult[0][1], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, /* Тумблерные регистры */ - { "ТР2", &pult[0][2], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "ТР3", &pult[0][3], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "ТР4", &pult[0][4], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "ТР5", &pult[0][5], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "ТР6", &pult[0][6], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "ТР7", &pult[0][7], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БРС0", &BRS[0], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, /* Буферные регистры слов */ - { "БРС1", &BRS[1], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БРС2", &BRS[2], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БРС3", &BRS[3], 8, 50, 0, 1, NULL, NULL, REG_VMIO}, - { "БАС0", &BAS[0], 8, 16, 0, 1 }, /* Буферные адреса слов */ - { "БАС1", &BAS[1], 8, 16, 0, 1 }, - { "БАС2", &BAS[2], 8, 16, 0, 1 }, - { "БАС3", &BAS[3], 8, 16, 0, 1 }, - { "БРСст", &BRSLRU, 8, 6, 0, 1, NULL, NULL, REG_HIDDEN}, + { ORDATAVM ( "БРЗ0", BRZ[0], 50) }, /* Буферные регистры записи */ + { ORDATAVM ( "БРЗ1", BRZ[1], 50) }, + { ORDATAVM ( "БРЗ2", BRZ[2], 50) }, + { ORDATAVM ( "БРЗ3", BRZ[3], 50) }, + { ORDATAVM ( "БРЗ4", BRZ[4], 50) }, + { ORDATAVM ( "БРЗ5", BRZ[5], 50) }, + { ORDATAVM ( "БРЗ6", BRZ[6], 50) }, + { ORDATAVM ( "БРЗ7", BRZ[7], 50) }, + { ORDATA ( "БАЗ0", BAZ[0], 16) }, /* Буферные адреса записи */ + { ORDATA ( "БАЗ1", BAZ[1], 16) }, + { ORDATA ( "БАЗ2", BAZ[2], 16) }, + { ORDATA ( "БАЗ3", BAZ[3], 16) }, + { ORDATA ( "БАЗ4", BAZ[4], 16) }, + { ORDATA ( "БАЗ5", BAZ[5], 16) }, + { ORDATA ( "БАЗ6", BAZ[6], 16) }, + { ORDATA ( "БАЗ7", BAZ[7], 16) }, + { ORDATAH ( "ТАБСТ", TABST, 28) }, /* Таблица старшинства БРЗ */ + { ORDATAH ( "ЗпТР", FLUSH, 4) }, /* Признак выталкивания БРЗ */ + { ORDATA ( "Старш", OLDEST, 3) }, /* Номер вытолкнутого БРЗ */ + { ORDATAVM ( "РП0", RP[0], 48) }, /* Регистры приписки, по 12 бит */ + { ORDATAVM ( "РП1", RP[1], 48) }, + { ORDATAVM ( "РП2", RP[2], 48) }, + { ORDATAVM ( "РП3", RP[3], 48) }, + { ORDATAVM ( "РП4", RP[4], 48) }, + { ORDATAVM ( "РП5", RP[5], 48) }, + { ORDATAVM ( "РП6", RP[6], 48) }, + { ORDATAVM ( "РП7", RP[7], 48) }, + { ORDATA ( "РЗ", RZ, 32) }, /* Регистр защиты */ + { ORDATAVM ( "ТР1", pult[0][1], 50) }, /* Тумблерные регистры */ + { ORDATAVM ( "ТР2", pult[0][2], 50) }, + { ORDATAVM ( "ТР3", pult[0][3], 50) }, + { ORDATAVM ( "ТР4", pult[0][4], 50) }, + { ORDATAVM ( "ТР5", pult[0][5], 50) }, + { ORDATAVM ( "ТР6", pult[0][6], 50) }, + { ORDATAVM ( "ТР7", pult[0][7], 50) }, + { ORDATAVM ( "БРС0", BRS[0], 50) }, /* Буферные регистры слов */ + { ORDATAVM ( "БРС1", BRS[1], 50) }, + { ORDATAVM ( "БРС2", BRS[2], 50) }, + { ORDATAVM ( "БРС3", BRS[3], 50) }, + { ORDATA ( "БАС0", BAS[0], 16) }, /* Буферные адреса слов */ + { ORDATA ( "БАС1", BAS[1], 16) }, + { ORDATA ( "БАС2", BAS[2], 16) }, + { ORDATA ( "БАС3", BAS[3], 16) }, + { ORDATA ( "БРСст", BRSLRU, 6) }, { 0 } }; diff --git a/BESM6/besm6_printer.c b/BESM6/besm6_printer.c index f6152833..56f1c641 100644 --- a/BESM6/besm6_printer.c +++ b/BESM6/besm6_printer.c @@ -64,8 +64,8 @@ struct acpu_t { #define LINEFEED_SYNC 1 /* Чтобы быстрее печатало; в жизни 20-25 мс/1.4 мс ~= 17 */ REG printer_reg[] = { - { "Готов", &READY, 2, 2, 18, 1 }, - { "Прогон", &READY, 2, 2, 22, 1 }, + { REGDATA ( "Готов", READY, 2, 2, 18, 1, NULL, NULL, 0, 0, 0) }, + { REGDATA ( "Прогон", READY, 2, 2, 22, 1, NULL, NULL, 0, 0, 0) }, { 0 } }; diff --git a/BESM6/besm6_punch.c b/BESM6/besm6_punch.c index c3d4a949..7bb3b2cd 100644 --- a/BESM6/besm6_punch.c +++ b/BESM6/besm6_punch.c @@ -64,9 +64,9 @@ char line[2][128]; unsigned char FS[2]; REG fs_reg[] = { - { "Готов", &READY, 2, 2, 14, 1 }, - { "ФС1500-1", &FS[0], 8, 8, 0, 1 }, - { "ФС1500-2", &FS[2], 8, 8, 0, 1 }, + { REGDATA ( "Готов", READY, 2, 2, 14, 1, NULL, NULL, 0, 0, 0) }, + { ORDATA ( "ФС1500-1", FS[0], 8) }, + { ORDATA ( "ФС1500-2", FS[2], 8) }, { 0 } };