1811 - FPU works, it contains at least: Trans KH1811BM1 = DEC DC302E – 21-15541-AB Data Chip (16-bit ALU etc) 7922 KH1811BU1 = DEC DC303E – 23-001C7-AA standard instruction set, CS = 0 12537 KH1811BU2 = DEC DC303E – 23-203C7-AA FP instruction set, CS = 2 ? KH1811BU3 = DEC DC303E – 23-002C7-AA FP instruction set, CS = 1 ? KH1811BT1 = DEC DC304E - 21-15542-01 - MMU ? DEC 57-00000-01 - DC302:21-15541-AB + DC303:23-001C7-AA //______________________________________________________________________________________ // High clock duration is not limited (stable) Clock High Low Control Microinstruction from MicROM MIB[15] ~MME MMU enable, by MMU chip, or by board in ODT mode to access beyond 32K MIB[14] ~INIT generate BUS INIT MIB[13] IAK interrupt acknowledge u MIB[12,9,8] AIO address/input-output, high is active 000 AWO - address, write only 001 ARW - address, read-modify-write 010 unused 011 ARO - address, read only 100 DOUTB - data, write byte 101 DOUT - data, write word 110 DIN - data, read word 111 NOP MIB[11] ~BR branch enable, low level if branch is taken MIB[10] ~TEST read next address field on MIB in next cycle, DC302 never activates MIB[7] ~SYNC bus cycle MIB[6:4] CTRL 000 - load PLM register address from return register (affects MC/NA/AXT) 001 - load PLM register or MMU control register 010 - set stack overflow in Control 011 - enable address conversion mode in Control 100 - transfer priority and T-bit to Control 101 - transfer priority to Control 110 - transfer T-bit to Control 111 - no operation MIB[3:0] GPO[3:0] general purpose output (TTL) 0001 - SRUN 0101 - clear timer event 0110 - clear ACLO event 0111 - address extension load (ODT mode) //______________________________________________________________________________________ // Service word (on low Clock): priority DAL15* - WAIT command 16 DAL14* - T-bit 7 DAL13* - stack overflow 8 DAL12 - timer event request 11 DAL11 - IRQ[4] 14 DAL10 - IRQ[5] 13 DAL9 - IRQ[6] 12 DAL8 - IRQ[7] 10 DAL7 - ACLO (power down) request 9 DAL6 - ground (always asserted) 6 DAL5 - HALT 15 DAL4 - Control Chip Error 2 DAL3 - MMU requests abort 3 DAL2 - parity error 5 DAL1 - bus timeout 4 DAL0 - DCLO 1 //______________________________________________________________________________________ // Fast Data Input: fdin[15:9] - start address 15:9 (lower bits are zero) fdin[8] - E8 - 1 - start from 173000 - 0 - start from fdin[15:9] fdin[2] - E7 - 1 - HALT causes exception 10 - 0 - HALT invokes ODT E6, E5 - выбор начального старта нет нет - старт из вектора 24 нет есть - выход в ODT есть нет - стартовый адрес задан E15-E9 или 173000 (E8) есть есть - старт из расширенного MiCROM (если нет - исключение 10) E7 есть - HALT вызывает исключение 10 нет - HALT переходит в ODT E8 есть - старт с адреса 173000 нет - старт с адреса E15-E9 E15-E9 - стартовый адрес (умножается на 1000 - xxx) vu1 special addresses: 000001x00 ~MA_1X00 000001xxx ~MA_1XXX 000001000 ~MA_1000 opcode decoder: D15-12 dcop3: xx10 2,6 x10x 4,5 x0x1 1,3 dcop2: src_mode = 0 dcop1: 302F 21-15541 AB 570000001A1 302H 21-15541-AB 570000001A1 303D 23-001C7 AA 570000001A1 303E 23-001C7-AA 570000001A1 303D 23-002C7 AA 570000101A1 303E 23-002C7 AA 570000101A1 303D 23-002C7 AA 57-00000-00 303E 23-003C7 AA 570000101A1 303D 23-003C7 AA 57-00000-00 304E 21-15542 01 303E 23-008C7-AA 5700006B1 303E 23-009C7-AA 303E 23-105C7-AA 303E 23-106C7-AA 303E 23-107C7-AA 303E 23-204C7-AA Checkpoints: - microm pages: 200-777 - no microm dependency on data - axt dependency only highest 10 addresses 766-777 - pla pages 000-177 - special address range for opcodes - clr_nax - D-reg opcode decode matrix (dcopxxx) - MI decode matrix (dcxx) read jmp non-existing CS - reset AXT, check no CS if (addr >= 0x40) jmp to jmp chip, adr set data reg //______________________________________________________________________________ // always @(*) if (clk) dc[7:0] <= {mi[7:4], pin_m[9], pin_m[6:4]}; assign pri_stb = ~clk & dc_cmp(dc, 4'bxxxx, 4'bx10x); // transfer prio assign tbit_stb = ~clk & dc_cmp(dc, 4'bxxxx, 4'bx1x0); // transfer tbit assign tgl_axt = ~clk & dc_cmp(dc, 4'bxx0x, 4'bx000); assign mc_dt = ~clk & dc_cmp(dc, 4'bxx10, 4'bx000); // data to mc assign na_dt = ~clk & dc_cmp(dc, 4'bxxx1, 4'bx000); // data to na assign set_sof = ~clk & dc_cmp(dc, 4'bxxxx, 4'bx010) & set_soft; // stack ovf assign set_nusd = ~clk & dc_cmp(dc, 4'bx1xx, 4'b0100); assign set_lplm = ~clk & dc_cmp(dc, 4'b000x, 4'b1001) & tbit; assign set_wpsw = ~clk & dc_cmp(dc, 4'bxx1x, 4'b0100); assign clr_lplm = ~clk & dc_cmp(dc, 4'bxxx1, 4'bx1x0); MIB[6:4] CTRL 000 - load PLM register address from return register (affects MC/NA/AXT) 001 - load PLM register or MMU control register 010 - set stack overflow in Control 011 - enable address conversion mode in Control 100 - transfer priority and T-bit to Control 101 - transfer priority to Control 110 - transfer T-bit to Control 111 - no operation /* + сканировать на предмет валидных CS + выбрать один из нескольких CS (первый или по +) + найти невалидный чип (для сброса AXT и CS) - пока всегда максимальный + найти пустой адрес, позволяющий прямое задание произвольного значения целевого адреса (0x1FF в поле следующего адреса) + читать все ROM 0-0x3FF, пропуская страницу PLA, чтение делать для всего диапазона data, выдать метки адресов где есть вариабельность по данным и адресам + сканировать все адреса 0-0x3FF, выдать данные по вариабельности по data - это будет таблица na_clr + проверить тестовый адрес и AXT дял всего диапазона + вычислить длину ma[8:n] для генерации RNI + сканировать найденные вариабельные адреса 0..7, выдать данные по вариабельности по data - это будет таблица na_clr 8*0x10000x4-> 2M + читать все PLA 0-7F/data all 128*0x10000*4bytes -> 32Mbytes + преобразовать PLA в формат для Minilog/Espresso + преобразовать NA_CLR + получить PLA от Espresso - запустить вторую считывалку - написать ВМ1 - декодировать команды ВМ1 - дизассемблер ВМ1 - запуск ВМ1 - добавить ВТ1 - отшлифовать ВУ2/ВУ3 - сфотографировать ВУ2/ВУ3 - верифицировать - запустить ВУ2/ВУ3 Отличия: CS RNI na_clr ВУ1 00 ma[8:0] + ВУ2 02 ma[8:4] - ВУ3 01 ma[8:0] - qmc: - загрузить PLA из бинарного файла - -o - задает слова данных. выравнивание на 1/2/4/ байт - вычислить prime implicants - вычислить essential D28/D29 Qbus FDIN SVC ODT Total 00 + D44 D39 D23 D17 7 01 + D44 D39 D42 D17 7 02 + D44 D39 D23 - 6 03 + D44 - D23 - 5 04 + D45 - D23 - 5 05 + D45 - D42 - 5 06 + D45 - D54 - 5 07 + D45 D39 D42 - 6 08 + D55 D40 D42 - 6 09 + D55 D40 D42 - 6 10 + D55 D40 D42 - 6 11 + D55 D40 D42 - 6 12 + D46 D40 D42 - 6 13 + D46 D40 - - 14 + D46 D40 - - 15 + D46 D40 - -