Будете смеяться, но программирую на РК до сих пор
Даже и улыбки нет. Я ведь тоже на i80 собирал свои ЭВМ, писал свой BIOS, тогда когда BIOS РК де-факто стал стандартным. Какой смех, вычислительная техника увлекательна, начиная от дискретной логики кончая программируемыми контроллерами. Посмотрел по ссылкам, для меня, это "похвально", для тех кто не любит возиться с "железом" может быть и удивительно. И в HEX-дампах есть свое волшебство. Был у меня когда-то товарищ, майор, и тоже болеющий РК-86, но поздно начал, да и логики в мышлении у него, скажем так, желательно бы иметь более для такого занятия. Лично я не занимался РК-86, она меня бы не удовлетворяла, ибо не было в ней нормальной графики. Почему и собирал свой, который имел под цветную графику четыре страницы памяти, который потом подарил тоже военному, его сын увлекался тоже этим, и это уже при наличии дома полноценного компьютера. Это наоборот приветствовать надо. Так вот пришел майор, где-то откопал в архивах об обновлении РК, и что-то связанное с новым знакогенератором, если мне только память не изменяет. В общем помню, что я рассказывал ему о работе знакогенератора. Он мне задает вопрос: - А как ты по этой фиге (дампу) понял, что это так работает? Ну я ему и показал на листочке в клеточку как работает. Он смотрел на меня так, словно я Христос открывший ему глаза на мироздание. :) А контроллерами желания нет заняться? У них ведь на борту сейчас чего только нет, и таймеры, и АЦП, и порт последовательный, и порт I2C, да чего только в них уже не втихивают. С минимальными затратами можно создавать все что угодно. |
Заготовка для ассемблера: Извлечение корня
Цитата:
2. Имею мечту спроектировать свой компьютер; Но: 1. Идея процессора очень сыра и недоработана; 2. Архитектура компьютера туманна и призрачна; 3. Не имею финансовой и физической возможно достигнуть этого опытным путём... (купить Terasic Altera DE0) 4. То же самое и с PIC... |
Из написанного:
Тем самым, это уже не 64кб, а 192кб памяти, без всяких переключений страниц. В любом случае это страницы, ибо процессор не может адресовать более 64КБ, просто представлять страницы можно по разному. В 80С48 ПЗУ программ имеет организацию, которую можно назвать страницами, а обращение к ним определяется командами. В контроллерах постарше можно задействовать разряды какого либо порта, расширив диапазон адресов, но ведь код все равно будет по границе разрядности, нельзя разбить байт на тетрады поместив одну в конец первой страницы, а вторую в начало второй. Да и у страничной организации есть и плюсы. Вот до создания своего процессора я как-то не додумался. :) В Сколково вам надо. PIC это немного иная архитектура МК, минимум портов, ну тоже интересная. Я уже лет 10 как не занимаюсь этим, но с запчастями, от кнопок до процессоров проблем нет, и покупать не надо, а что-то собирать нет времени. Была болезнь, ходили скупали позолоченное, достали, отдавал им. Но память, процессоры, микро ЭВМ, чего только нет, валяется, то ли выбросить, то ли ... |
Заготовка для ассемблера: Извлечение корня
Берём извлечения квадратного корня, ассемблер и переводим на язык JS:
// 1-в-1, как есть в ассемблере переводим в стиль Sphinx C-- // Меняем мнемонику операций в арифметические операторы function root(x) { // x86 var eax, ecx, edx, ebx, ebp, edi; ebp = x + 1; ecx = 31; while(ebp >> ecx) ++ ecx; ebx = 1 << (ecx & -2); eax = 0; do { ecx = eax + ebx; eax >>= 1; edx = ecx < ebp ? -1 : 0; edi = edx; edx &= ecx; ebp -= edx; edi &= ebx; eax |= edi; } while(ebx >>= 2); return eax; } Убераем ассемблерные трюки и в итоге получаем: function root(x) { // JS var eax, ecx, edx, ebx, ebp, edi; ebp = x + 1; ecx = 31; while(ebp >> ecx) ++ ecx; ebx = 1 << (ecx & -2); eax = 0; do { ecx = eax + ebx; eax >>= 1; if(ecx < ebp) { ebp -= ecx; eax |= ebx; } } while(ebx >>= 2); return eax; } Тем самым, с языка ассемблера всё перевели в JavaScript. Обратно, с JavaScript на язык ассемблера (i8080, Z80, 6502, 68000) перевести - дело навыков и практики. (переименовываем переменные в регистры нужного процессора, разбиваем сложные операции на кучи простейщих, заменяем математические операторы мнемониками) function root(x) { // i8080/Z80 var a, bc, de, hl, flags, sp = [], tmp; hl = x + 1; // i8080:inx h sp.push(hl); // i8080:push h bc = 32; // i8080:mvi c,16 do { bc --; // dcr c flag = !(hl & 0x80000000); hl += hl &= 0x7FFFFFFF; // dad h } while(flag); // jnc _do_ bc &= -2; // mov a,c; ani 0feh; hl = 1; // lxi h,1; jz _xchg_ while(bc --) // dad h hl += hl; // dcr a; jnz _dad_ de = hl; // xchg hl = sp.pop(); // pop h a = 0; // xra a do { sp.push(a), sp.push(flags); // push psw sp.push(hl); // push h hl = a; // mov h,0; mov l,a hl += de; // dad d; tmp = hl; hl = sp.pop(); sp.push(tmp); // xthl bc = sp.pop(); // pop b flags = sp.pop(), a = sp.pop(); // pop psw sp.push(de); // push d a >>= 1; // or a; rcr de = a; // mov e,a a = bc; // mov a,c; cmp l; mov a,b; sbb h flags = a < hl; // push psw if(flags) { // jnc _pop_psw_ a = hl; a -= bc; hl = a; // mov a,l; sub c; mov l,a; mov a,h; sbb b; mov h,a } a = de; // pop psw; mov a,e de = sp.pop(); // pop d if(flags) // jnc _mov_ a |= de; // or e de >>= 2; // mov c,a; xor a,a; mov a,d; rcr; mov d,a; mov a,e; rcr; mov e,a; } while(de); // or d; mov a,c; jnz _do_ return a; } Вот и готова адаптация под i8080/Z80... |
Нет, я бы такого никогда не стал делать - писать на JS, но с учетом другого языка распиливая код под него, типа писать под CISC процессор, но командами RISC процессора. )
Наверное и слава богу, что в свое время мне не попался этот Verilog. Cи, а критические места Ассемблер, и этого хватает по самые уши, и удобно, и проще, и без посредников. Ну с другой стороны дело вкуса и привычки. ;) |
Ага. Мой друг как-то сказал: Ё-моё! Я иду вверх (изучаю Phyton и т.д.) на уровень абстракции, а ты спускаешься всё ниже (от ассемблера до vhdl/verilog) до уровня вентилей и электрических связей...
Вот тут есть симулятор. Весит очень мало, но вполне годен для симуляции (разрабатываю свой процессор и видео узел на нём)... |
Ваш друг просто не задумывается о том, что без знаний базовой логики не появились бы и процессоры, а появление последних никак не означает смерть первых. Как и без наличия логики в мышлении никакой язык не поможет создать приложение.
Надо будет найти архив всего что у меня накопилось, вспомнить что там есть, можно было бы скинуть что-то полезное из библиотек. Правда только, если, не пропало, многое писалось на CD-R Princo, жутко кошмарная штуковина. Если бы можно было передать компоненты через http/ftp протокол, мог бы подарить и массу различных комплектующих. |
Цитата:
Четыре системных блока стоят: 1. Pentium-90MHz 48Mb-RAM Windows 98 и 2000 - в ходу... 2. Pentium-233MHz MMX - сгорел 10 лет назад... 3. Pentium-IV 2400MHz 512Mb-RAM - сгорел год назад... 4. Core 2 Duo 3GHz 4Gb-RAM - сгорел год назад... Ещё PC-XT есть! (не говоря про ZX-Spectrum, Atari-XE, Радио-86РК, Sega, Dendy, Электронника-МС, принтер-МС - пахал, "Поиск") Семь CRT-мониторов - Flatron, HP-M500, Acer, Relysis, Disonic - пашут лишь 2 и 1 полудохлый. (ещё монитор от Правца - исправен) Дохлый DVR - постоянный ребут, винта нет. Отцовские платы от ЭВМ на транзисторах, матрицы памяти на ферритовых сердечниках, видеоголовки от студийных видеомагнитофонов, гироскопы от самолётов . генераторы, аккумуляторы от АТС, моторы и пресса от шасси самолёта, радиостанция военных лет - пашет, осциллограф 1С, 15 ТВС от телевизоров, ПТК, катушечные магнитофоны / видеомагнитофон Вектор-6Ц (кажется), ламповые видеокамеры, прибор ночного виденья от танка, прожектор от самолёта... Не устали читать? А вот близкие - давно всё выбросить хотят, будь их воля... А сейчас отец носит запчасти оргтехники...:lol: |
Это проблема всех, кто занимается подобным - наличие дома приличной барахолки. :)
Нет, я имел ввиду комплектующие как раз под микроэлектронику - сопротивления, конденсаторы, полупроводники в чип исполнении, светодиоды различные, от миниатюрных, LED и LCD матрицы, кнопки со светодиодной подсветкой, в большей массе это компоненты японского производства. В общем тоже много всякого. Платы различные, процессоры, память, видео карты, HDD и DVD приводы, корпуса, это добро всегда накапливалось, но собиралось в готовый компьютер и продавалось по небольшой цене. Причем это не Pentium-90, а в основном двух-ядерные AMD. Буквально четыре дня назад был собран подобный на МП Gigabyte GA-M56S-S3. Таким вещам я даю вторую жизнь, не всем по карману купить компьютер, тем более в нынешней ситуации. Я хорошо разбираюсь в радиоэлектронике, даже работал когда-то по этой специальности, теперь все забросил, просто некогда. Так для себя, например собрал под 5" отсек УНЧ в компьютер, компактно и удобно, для контроля мне нужного более ничего и не надо. А так, это скорее слесарить приходится, чем паять. У меня AMD FX 8350, и нагружается массой объемных задач. Случайно уронил кулер - гребенки радиатора при этом даже не погнулись, тепловые трубки даже пыль не стряхнули, а вентилятор треснул. Найти новый 120 с двумя подшипниками так и не смог. Поставил что было - на 90. Перегревался проц., включалась защита и комп. выключался, и это еще лето не наступило. Корпус у меня отличный, а не красивый офисный ширпотреб. В нем боксы под HDD съемные, как и привода, на защелках. Прикинул, что если перенести верхний бокс HDD вниз, где есть место, а вместо него сделать бокс под 2.5" устройства (ОС у меня на SSD, плюс еще два HDD 2.5"), то вполне можно поставить вот такого монстра - http://catalog.onliner.by/fan/coolermaster/rrb2puv10gp, и еще свободнее станет. Так и сделал, теперь нужно бокс 2.5" хороший сделать. Загрузка по полной - паковка видео, при открытых редакторах и прочих плюшках нужных, а температура CPU не выше 40 градусов. Вот такая у меня сейчас "электроника" на текущий момент. :) |
Цитата:
|
Часовой пояс GMT +3, время: 12:40. |