добро пожаловать в наш клуб )
Вид для печати
Спасибо! :)
Как не странно, но БК, УКНЦ, ДВК и им подобные прошли мимо меня от слова совсем. Мой первый комп рк-86, в виде конструктора купленный в магазине Электроника, потом самосборный Ленинград и такой же АТМ-Турбо, а потом сразу 486 (вернее была еще Искра и Ассистент, но Ассистент школьный а Искра университетская, так что это не в счет).. Поэтому о ДВК-подобных машинах толком ни чего не знаю, в клубе пока я наблюдатель.
Странно. Во-первых, такие вещи, обычно, актуальны для КМОП. Тех, у которых изоляция элементов выполнена обратносмещенными pn-переходами. В структуре таких (Б)ИС присутствуют паразитные тиристоры, обычно, запертые. А вот подача на выходы (входы-выходы) напряжений выше питающего или ниже нуля может открыть кого-то из них. После чего открывается некоторое количество соседних с ними паразитных тиристоров и все они дружно пытаются закоротить источник питания. Результат, обычно, неутешительный. А при обесточенных микросхемах, обычно, особых проблем от прозвонки не бывает. Ну, конечно, если не звонить советской Цешкой с током полного отклонения миллиампер, так, 30-50, тут никто не сдюжит. А цифровые мультиметры, в большинстве своём, гораздо деликатнее: у них ток при прозвонке не более 1 мА.
Ну, и 1801 - ни разу не КМОП. Так, что в тот факт, что кто-то убивал их советской Цешкой я, конечно, охотно верю, а чтобы их можно было убить мультиметром DT830 - нет, не верю...
Сделал на SMM32L476 нечто подобное Ремулятора.. Вернее прослушку которая сидит на шине, слушает сигнал Sync и AD и отправляет в уарт около 128 первых адресов на ШД, вот что я получаю:
Скрытый текст
160000 160002 160300 160302 172660 160304 160306 160310 160312 160314 160316 177716 446 444 4 6 442 440 14 16 0 2 436 434 10 12 0 2 432 430 10 12 0 2 426 424 10 12 0 2 422 420 10 12 0 2 416 414 10 12 0 2 412 410 10 12 0 2 406 404 10 12 0 2 402 400 10 12 0 2 376 374 10 12 0 2 372 370 10 12 0 2 366 364 10 12 0 2 362 360 10 12 0 2 356 354 10 12 0 2 352 350 10 12 0 2 346 344 10 12 0 2 342 340 10 12 0 2 336 334 342 340 10 12 0 2 336 334[свернуть]
Все это адреса, начиная со включения питания.
Если я правильно понимаю, то вот это:
Скрытый текст
BMI 160464$ ; Запуск в ЦП
BIT #20,@#177716 ; ЦП в режиме HALT ?
BEQ 160332$ ; Нет[свернуть]
У меня ЦП в режиме HALT.. Я не знаю, как с этим бороться..
- - - Добавлено - - -
Посмотрел 29 ногу Д3 там высокий уровень, те ЦП физически не в HALT.
- - - Добавлено - - -
Вот здесь https://ibb.co/HnYzCmz скриншот с большим количеством адресов, адреса идут последовательно, как их выставляет ПП на шине с РЕшками, различие в адресах из-за того, что в первом случае запись сразу после включения, а на скриншоте после Сброса.
Тут внешний вид моей поделки: https://ibb.co/8dZBhnD
Дописал чтение данных:
Скрытый текст
160000:C0E0 160002:8000 160300:C417 160302:B0F5 172660:2801 160304:000A 160306:0611 160310:3581 160312:DF35 160314:1000 160316:CEFF 177716:0126 444:0004 177777:0006 177777:0122 440:000C 0:000E 0:0000 177777:0002 177777:011E 434:0008 0:000A 10020:011A 430:000C 0:000E 0:0000 177777:0002 177777:0116 424:0008 0:000A 10020:0112 420:000C 0:000E 0:0000 177777:0002 177777:010E 414:0008 0:000A 10020:010A 410:000C 0:000E 0:0000 177777:0002 177777:0106 404:0008 0:000A 10020:0102 400:000C 0:000E 0:0000 177777:0002 177777:00FE 374:0008 0:000A 10020:00FA 370:000C 0:000E 0:0000 177777:0002 177777:00F6 364:0008 0:000A 10020:00F2 360:000C 0:000E 0:0000 177777:0002 177777:00EE 354:0008 0:000A 10020:00EA 350:000C 0:000E 0:0000 177777:0002 177777:00E6 344:0008 0:000A 10020:00E2 340:000C 0:000E 0:0000 177777:0002 177777:00DE 334:0008 0:000A 10020:00DA 330:000C 0:000E 0:0000 177777:0002 177777:00D6 324:0008 0:000A 10020:00D2 320:000C 0:000E 0:0000 177777:0002 177777:00CE 314:0008 0:000A 10020:00CA 310:000C 0:000E 0:0000 177777:0002 177777:00C6 304:0008 0:000A 10020:00C2 300:000C 0:000E 0:0000 177777:0002 177777:00BE 274:0008 0:000A 10020:00BA 270:000C 0:000E 0:0000 177777:0002 177777:00B6 264:0008 0:000A 10020:00B2 260:000C 0:000E 0:0000 177777:0002 177777:00AE 254:0008 0:000A 10020:00AA 250:000C 0:000E 0:0000 177777:0002 177777:00A6 244:0008 0:000A 10020:00A2 240:000C 0:000E 0:0000 177777:0002 177777:009E 234:0008 0:000A 10020:009A 230:000C 0:000E 0:0000 177777:0002 177777:0096 224:0008 0:000A 10020:0092 220:000C 0:000E 0:0000 177777:0002 177777:008E 214:0008 0:000A 10020:008A 210:000C 0:000E 0:0000 177777:0002 177777:0086 204:0008 0:000A 10020:0082 200:000C 0:000E 0:0000 177777:0002 177777:007E 174:0008 0:000A 10020:007A 170:000C 0:000E 0:0000 177777:0002 177777:0076 164:0008 0:000A 10020:0072 160:000C 0:000E 0:0000 177777:0002 177777:006E 154:0008 0:000A 10020:006A 150:000C 0:000E 0:0000 177777:0002 177777:0066 144:0008 0:000A 10020:0062 140:000C 0:000E 0:0000 177777:0002 177777:005E 134:0008 0:000A 10020:005A 130:000C 0:000E 0:0000 177777:0002 177777:0056 124:0008 0:000A 10020:0052 120:000C 0:000E 0:0000 177777:0002 177777:004E 114:0008 0:000A 10020:004A 110:000C 0:000E 0:0000 177777:0002 177777:0046 104:0008 0:000A 10020:0042 100:000C 0:000E 0:0000 177777:0002 177777:003E 74:0008 0:000A 10020:003A 70:000C 0:000E 0:0000 177777:0002 177777:0036 64:0008 0:000A 10020:0032 60:000C 0:000E 0:0000 177777:0002 177777:002E 54:0008 0:000A 10020:002A 50:000C 0:000E 0:0000 177777:0002 177777:0026 44:0008 0:000A 10020:0022 40:000C 0:000E 0:0000 177777:0002 177777:001E 34:0008 0:000A 10020:001A 30:000C 0:000E 0:0000 177777:0002 177777:0016 24:0008 0:000A 10020:0012 20:000C 0:000E 0:0000 177777:0002 177777:000E 14:0008 0:000A 10020:000A 10:000C 1000:000E 0:0002 177777:0004 177777:0006 4:0008 0:000A 10000:0002 0:000C 1000:000E 0:0002 10000:0004 2000:FFFE 177772:E07C 124340:E07E 100001:E0A8 177425:E0AA 143747:E0AC 2025:F5B2 40001:0140 160256:6E01 160260:FF15 160614:3F0A 160616:2414 172664:3A01 472:E190 37420:E192 16024:F5B0 24001:0128 160624:C017 160626:B0F5 172660:2801 160630:D00B 160632:5010 450:0000 160634:9010 452:E19E 150020:012C 160640:1011 456:E1A2 50021:0130 160644:9011 462:E1A6 420:0134 160650:1200 160652:1110 160654:0310 466:E1AE 12000:E1B0 10420:E1B2 140427:0138 160664:B0F5 172660:2801 160666:4410 160670:076D 160672:1C00 504:1010 160674:1301 170714:7700 170716:B403 172604:C015 172606:0100 172610:8700 172612:0C01 177770:E004 114340:E006 100001:E098 177425:E09A 113747:E09C 12025:F5B2 40001:0140 160236:6E01 160240:FF15 160574:3301 160576:E615 160744:C417 160746:B0F5 172660:2801 160750:0611 160752:0381 160754:DF15 160756:0200 160760:6825 22550:E1F2 172025:E1F4 34000:E1F6 13000:013E 160770:3461 160772:013E 34000:E1FC 17615:E1FE 134365:F5B8 0:E200 33411:E202 1004:0126 163006:0115 163010:0201 161004:3EE7 163012:F709 163016:4094 163020:FC02 163476:1BBD 163022:8400
[свернуть]
вот такая вот красота..
160000 160002 - читается вектор начального пуска
160300 160302 172660 - выполнение команды MOV @#172660$,R4
160304 - выполнение команды CLR R0
160306 - выполнение команды MOV R4,SP
160310 - выполнение команды BMI 160464$
160312 160314 160316 177716 - выполнение команды BIT #20,@#177716
А вот при исполнении этой команды не удается прочитать регистр 0177716, возникает прерывание TRAP4, сперва в стек ложатся текущие PC и PSW, это 446 444. Читается значение вектора TRAP4, это 4 6. Ну а так как ОЗУ ещё не инициализировано и после включения питания там всякий мусор, то уже дальнейшее исполнение не имеет смысла.
ZPilot, а можете подсоединится к выводам с 1 по 16 буфера 1801ВП1-055 и посмотреть что творится за буфером.
- - - Добавлено - - -
Некорректно сделано. Байты перепутаны местами, да и лучше представлять в восьмеричном виде. Чтение будет только если при активном SYNC и DIN есть ответ RPLY. Так как при чтении регистра 0177716 ответа RPLY нет, то далее всякий бред. А там есть и запись в ОЗУ сигналом DOUT.
Блин, я ж это специально сделал, открыл прошивку в хекседиторе и там был именно такой порядок, думал, что так нужно. Переделаю, не вопрос, к тому же -1 операция на Асме, все быстрее будет.
Я так понимаю что выводы есть не что иное как XS1 и XS2 - разъемы, куда вставляется, например, контроллер дисковода? Если да, то вот, что я уже сделал: https://ibb.co/MM2dkVb, осталось только подпаять провода от STMки.
Кстати, а что я увижу на этой шине? Увижу как читаются ПЗУ или через буфер данные не пройдут?
Вообще логгер МПИ для слотов расширения УКНЦ - вполне востребованная вещь будет, ИМХО.
А файл выходных данных потом можно будет открывать в DESS.SAV в эмуле ДВК господина Патрона.
Да уж.. Какое громкое название для вот этого:
Скрытый текст
__asm__(
".equ SYNC, (0x1UL << (7U)) \n\t"
".equ RPLY, (0x1UL << (1U)) \n\t"
".equ RE, (0x1UL << 0) \n\t"
".equ INVERT, 0xFFFF \n\t"
"movw r3,#0x7FF \n\t" //cycle 0 to 0x7FF step 1, number get data
"movw r4,#0x0 \n\t" //cycle 0 to 0xFF step 2, 2 byte get data (16-bit)
"movw r2,INVERT \n\t"
"start: \n\t"
//wait sync to hight
"sync_h: \n\t"
"ldr r1,[%[porta]] \n\t"
"tst r1,SYNC \n\t"
"beq sync_h \n\t"
//wait sync to low
"sync_l: \n\t"
"ldr r1,[%[porta]] \n\t"
"tst r1,SYNC \n\t"
"bne sync_l \n\t"
//save port C to mass
"ldrh r1,[%[portc]] \n\t"
"eor r1,r2 \n\t" //invert address
"strh r1,[%[mass],r4] \n\t" //save adress to mass
"add r4,#2 \n\r" //add shift to nember of mass
"sub r3,#1 \n\r" //increment number
"cmp r3,0x0 \n\r" //if end to mass goto end
"beq end \n\r"
//wait RE, if first Sync, then no data, then goto start
"re_sync_l: \n\t"
"ldr r1,[%[porta]] \n\t"
"tst r1,SYNC \n\t"
"bne start \n\t" //if SYNC is high then no data goto start
"tst r1,RE \n\t" //wait low RE
"bne re_sync_l \n\t"
//Wait RPLE
"rply_l: \n\t"
"ldr r1,[%[porta]] \n\t"
"tst r1,RPLY \n\t" //wait low RE
"bne rply_l \n\t"
//
"ldrh r1,[%[portc]] \n\t"
"eor r1,r2 \n\t" //invert data
"rev16 r1,r1 \n\t" //converts 16-bit big-endian data into little-endian data
"strh r1,[%[mass],r4] \n\t"
"add r4,#2 \n\r"
"sub r3,#1 \n\r"
"cmp r3,0x0 \n\r"
"bne start \n\r"
//"str r0,[%[mass]]\n\t"
//"strh r8,[%[porta]]\n\t"
//"str r9,[%[porta]]\n\t"
//"b start\n\t"
"end: \n\r"
:
:[mass]"r"(mass),[portc]"r"(portc),[porta]"r"(porta)
:"memory","r0","r1","r2","r3","r4"
);
[свернуть]
- - - Добавлено - - -
Я читал при активном SYNC, EDIN и RPLY, STMка подключена вместо 205 ПЗУ, это не правильно?
Да, разъемы XS1 и XS2 тоже стоят за буфером. Здесь просто интересно, как за буфер проходят сигналы линий адреса-данных. Ведь D24 (1515ХМ1-031) тоже стоит за буфером. Тут данных читать не надо. Надо видеть какие адреса проходят. Ибо если буфер или схема управления буфером неисправны, то на D24 не будет поступать адрес и он не сможет ответить на команду чтения, то и возникнет прерывание TRAP4. Если же адрес с SYNC поступают нормально, надо проверить нет ли разрывов в сигналах DIN и RPLY.