С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В долгосрочных планах у меня вообще всю документацию отсканировать. Пока неспешно идёт процесс по Наири.
Прочитаны ROM и PLM
PLM является декодером инструкции PDP-11 для начального адреса процедуры микрокода:
Видно какие инструкции оно подерживает. Есть EIS и, возможно - FIS (если это не точка генерации исключения)Код:// // Copyright (c) 2014-2020 by 1801BM1@gmail.com // // M4 processor PDP-11 instruction decoding PLM (D123, D136) //______________________________________________________________________________ // module plm_dec ( input [15:0] ins, // PDP-11 instruction opcode output reg bf, // byte operation flag output reg [6:0] ad // address of microcode ); always @(*) casex(ins) // clrb/comb/incb/decb 16'o105xxx: bf = 1'b1; // negb/adcb/sbcb/tstb 16'o1060xx: bf = 1'b1; // rorb 16'o1061xx: bf = 1'b1; // rolb 16'o1062xx: bf = 1'b1; // asrb 16'o1063xx: bf = 1'b1; // aslb 16'o1064xx: bf = 1'b1; // mtps 16'o1067xx: bf = 1'b1; // mfps 16'o11xxxx: bf = 1'b1; // movb 16'o12xxxx: bf = 1'b1; // cmpb 16'o13xxxx: bf = 1'b1; // bitb 16'o14xxxx: bf = 1'b1; // bicb 16'o15xxxx: bf = 1'b1; // bisb default: bf = 1'b0; endcase always @(*) casex(ins) 16'o000000: ad = 7'h00; // halt 16'o000001: ad = 7'h03; // wait 16'o000002: ad = 7'h02; // rti 16'o000003: ad = 7'h04; // bpt 16'o000004: ad = 7'h07; // iot 16'o000005: ad = 7'h06; // reset 16'o000006: ad = 7'h02; // rtt 16'o0001xx: ad = 7'h0E; // jmp 16'o00020x: ad = 7'h36; // rts 16'o00024x: ad = 7'h40; // clx 16'o00025x: ad = 7'h40; // clx 16'o00026x: ad = 7'h43; // sex 16'o00027x: ad = 7'h43; // sex 16'o00030x: ad = 7'h44; // swab Rd 16'o0003xx: ad = 7'h41; // swab 16'o0004xx: ad = 7'h1F; // br 16'o0005xx: ad = 7'h1F; // 16'o0006xx: ad = 7'h1F; // 16'o0007xx: ad = 7'h1F; // 16'o001xxx: ad = 7'h1F; // bne/beq 16'o002xxx: ad = 7'h1F; // bge/blt 16'o003xxx: ad = 7'h1F; // bgt/ble 16'o004xxx: ad = 7'h37; // jsr // 16'o00500x: ad = 7'h22; // clr Rd 16'o0050xx: ad = 7'h12; // clr 16'o00510x: ad = 7'h24; // com Rd 16'o0051xx: ad = 7'h14; // com 16'o00520x: ad = 7'h26; // inc Rd 16'o0052xx: ad = 7'h16; // inc 16'o00530x: ad = 7'h28; // dec Rd 16'o0053xx: ad = 7'h18; // dec 16'o00540x: ad = 7'h2A; // neg Rd 16'o0054xx: ad = 7'h1A; // neg 16'o00550x: ad = 7'h4D; // adc Rd 16'o0055xx: ad = 7'h0D; // adc 16'o00560x: ad = 7'h4A; // sbc Rd 16'o0056xx: ad = 7'h53; // sbc 16'o00570x: ad = 7'h6C; // tst Rd 16'o0057xx: ad = 7'h2C; // tst 16'o00600x: ad = 7'h55; // ror Rd 16'o0060xx: ad = 7'h15; // ror 16'o00610x: ad = 7'h56; // rol Rd 16'o0061xx: ad = 7'h17; // rol 16'o00620x: ad = 7'h5B; // asr Rd 16'o0062xx: ad = 7'h1B; // asr 16'o00630x: ad = 7'h5C; // asl Rd 16'o0063xx: ad = 7'h1D; // asl 16'o0064xx: ad = 7'h09; // mark 16'o0067xx: ad = 7'h08; // sxt // 16'o010x0x: ad = 7'h30; // mov Rs, Rd 16'o01xxxx: ad = 7'h31; // mov 16'o020x0x: ad = 7'h3A; // cmp Rs, Rd 16'o02xxxx: ad = 7'h13; // cmp 16'o030x0x: ad = 7'h3C; // bit Rs, Rd 16'o03xxxx: ad = 7'h1C; // bit 16'o040x0x: ad = 7'h3E; // bic Rs, Rd 16'o04xxxx: ad = 7'h1E; // bic 16'o050x0x: ad = 7'h20; // bis Rs, Rd 16'o05xxxx: ad = 7'h10; // bis 16'o060x0x: ad = 7'h74; // add Rs, Rd 16'o060xxx: ad = 7'h34; // add Rs, xx 16'o06xxxx: ad = 7'h35; // add 16'o070xxx: ad = 7'h47; // mul 16'o071xxx: ad = 7'h48; // div 16'o072xxx: ad = 7'h42; // ash 16'o073xxx: ad = 7'h45; // ashc 16'o074xxx: ad = 7'h0B; // xor 16'o07500x: ad = 7'h0F; // fadd 16'o07501x: ad = 7'h0F; // fsub 16'o07502x: ad = 7'h0F; // fmul 16'o07503x: ad = 7'h0F; // fdiv 16'o077xxx: ad = 7'h0A; // sob // 16'o100xxx: ad = 7'h1F; // bpl/bmi 16'o101xxx: ad = 7'h1F; // bhi/blos 16'o102xxx: ad = 7'h1F; // bvc/bvs 16'o103xxx: ad = 7'h1F; // bcc/bcs 16'o1040xx: ad = 7'h39; // emt 16'o1041xx: ad = 7'h39; // 16'o1042xx: ad = 7'h39; // 16'o1043xx: ad = 7'h39; // 16'o1044xx: ad = 7'h38; // trap 16'o1045xx: ad = 7'h38; // 16'o1046xx: ad = 7'h38; // 16'o1047xx: ad = 7'h38; // 16'o1050xx: ad = 7'h25; // clrb 16'o1051xx: ad = 7'h27; // comb 16'o1052xx: ad = 7'h29; // incb 16'o1053xx: ad = 7'h2B; // decb 16'o1054xx: ad = 7'h2D; // negb 16'o1055xx: ad = 7'h51; // adcb 16'o1056xx: ad = 7'h52; // sbcb 16'o1057xx: ad = 7'h2F; // tstb 16'o1060xx: ad = 7'h54; // rorb 16'o1061xx: ad = 7'h59; // rolb 16'o1062xx: ad = 7'h5A; // asrb 16'o1063xx: ad = 7'h5F; // aslb 16'o1064xx: ad = 7'h2E; // mtps 16'o1067xx: ad = 7'h0C; // mfps 16'o110x0x: ad = 7'h32; // movb Rd, Rs 16'o11xxxx: ad = 7'h33; // movb 16'o12xxxx: ad = 7'h3D; // cmpb 16'o13xxxx: ad = 7'h3F; // bitb 16'o14xxxx: ad = 7'h21; // bicb 16'o15xxxx: ad = 7'h23; // bisb 16'o160x0x: ad = 7'h3B; // sub Rd, Rs 16'o16xxxx: ad = 7'h19; // sub default: ad = 7'h01; // undefined endcase endmodule
- - - Добавлено - - -
Поскольку написание модели М4 в процессе, то документация неплохо бы ускорила это дело
- - - Добавлено - - -
В микрокоде есть нюансик - микросхемы 1656РЕ1 имеют размерность 8x2K, так вот первый и второй килобайт полностью совпадают. Я предварительно микрокод перебрал - вроде нигде оно на второй килобайт не прыгает, так что возможно таки микрокод 56x1K. Будет написан дизассемблер под формат amdasm, станет виднее.
Кстати, а оригинальный amdasm никому не попадался? Свой-то на питоне я быстренько напишу, но оригинал есть оригинал.
Выкладываю документацию на М4 !
Скачать с radon.suКод:МИКРО-ЭВМ "ЭЛЕКТРОНИКА МС 1280" ТЕХНИЧЕСКОЕ ОПИСАНИЕ И ИНСТРУКЦИЯ ПО ЭКСПЛУАТАЦИИ 2.791.007 ТО
Скачать с Яндекс.Диска
Скачать с radon.suКод:МИКРО-ЭВМ "ЭЛЕКТРОНИКА МС 1280" СИСТЕМА КОМАНД 2.791.007 ТО1 ВРЕМЯ ВЫПОЛНЕНИЯ КОМАНД 2.791.007 ТО2
Скачать с Яндекс.Диска
Скачать с radon.suКод:МИКРОЭВМ "ЭЛЕКТРОНИКА МС 1280" 2.791.007 ЭД 2.791.007 ЗИ 2.791.007 ПЭЗ 2.791.007 ЭЗ 3.858.112 СБ 3.858.113 СБ
Скачать с Яндекс.Диска
Схемы и сборочные чертежи отдельно:
Скачать с radon.su
Скачать с Яндекс.Диска
Это всё, что у меня есть на М4. Если какие-то страницы плохо получились, выложу исходники и/или пересканирую.
Нашлась документация на другие платы для корзины М4!
Репрограммируемое ПЗУ РП2 (МС 3501)
Реальных фото платы к сожалению не видел.
В папке Паспорт, ТО, перечень элементов, принципиальные и монтажные схемы.
Скачать с radon.su
Скачать с Яндекс.Диска
Программно-управляемый таймер ТМ1 (МС 94100.1)
Название по "старому" стандарту МС, не знаю есть у этой платы "новое".
На этот раз есть фото, правда разломанной платы. Если у кого-то есть эта и другие платы в целом виде, сфотографируйте пожалуйста!
![]()
![]()
На этот раз всё в одном файле т.к. исходно это одна книжка.
Извините, не стал пока серьёзно заморачиваться с обработкой, просто обрезал и сшил "как есть". Если есть необходимость, обработаю нормально.
Скачать с radon.su
Скачать с Яндекс.Диска
Параллельный интерфейс ИМ1 (МС 4603)
Обращаю внимание, что в ТО и Э3 плата ошибочно именуется как МС 4601, в паспорте же - МС 4603.
Как известно, МС 4601 это И12 и может возникнуть путаница. Возможно это какая-то ошибка или возник конфликт при регистрации по системе МС. А в более позднем паспорте это поправили.
![]()
![]()
Что интересно, на плате название написано латиницей как NM1, и это долгое время вводило меня в заблуждение. И только после нахождения документации (конкретно сборочного чертежа) я понял, что это ИМ1.
Шрифты в САПРе что ли не успели заменить
Собственно, документация. Такой же набор - Паспорт, ТО, ЭД, ПЭ3, схема монтажная, схемы принципиальные.
Скачать с radon.su
Скачать с Яндекс.Диска
Последовательный интерфейс ИМ2 (МС 4602)
![]()
![]()
В одной папке с документацией на ИМ2 также было ТО на И12, но оно такое же, как уже лежит в сети. Сканировать не стал.
IM2_test.pdf это исходники теста 037101.BIC (с комментариями на русском). Его можно иногда встретить на дискетах с ТМОС-2.
Что интересно, тест озаглавлен как ИМ2/И12, т.е. подходит для обеих плат. Хотя даже выполнены они на разных микросхемах. И12 на К581ВА1, ИМ2 - на 1002ХЛ1. Видимо с программной стороны они видятся одинаково.
Собственно, сама документация. Паспорт, ТО+схемы, Тест.
Скачать с radon.su
Скачать с Яндекс.Диска
Всё, больше у меня документации на заводские платы в корзину М4 нет. К сожалению не нашлась документация на плату ОЗУ П6![]()
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)