18.03.2015, 20:18
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Будете смеяться, но программирую на РК до сих пор
Даже и улыбки нет. Я ведь тоже на i80 собирал свои ЭВМ, писал свой BIOS, тогда когда BIOS РК де-факто стал стандартным. Какой смех, вычислительная техника увлекательна, начиная от дискретной логики кончая программируемыми контроллерами. Посмотрел по ссылкам, для меня, это "похвально", для тех кто не любит возиться с "железом" может быть и удивительно.
И в HEX-дампах есть свое волшебство. Был у меня когда-то товарищ, майор, и тоже болеющий РК-86, но поздно начал, да и логики в мышлении у него, скажем так, желательно бы иметь более для такого занятия. Лично я не занимался РК-86, она меня бы не удовлетворяла, ибо не было в ней нормальной графики. Почему и собирал свой, который имел под цветную графику четыре страницы памяти, который потом подарил тоже военному, его сын увлекался тоже этим, и это уже при наличии дома полноценного компьютера. Это наоборот приветствовать надо.
Так вот пришел майор, где-то откопал в архивах об обновлении РК, и что-то связанное с новым знакогенератором, если мне только память не изменяет. В общем помню, что я рассказывал ему о работе знакогенератора. Он мне задает вопрос:
- А как ты по этой фиге (дампу) понял, что это так работает?
Ну я ему и показал на листочке в клеточку как работает. Он смотрел на меня так, словно я Христос открывший ему глаза на мироздание.
А контроллерами желания нет заняться? У них ведь на борту сейчас чего только нет, и таймеры, и АЦП, и порт последовательный, и порт I2C, да чего только в них уже не втихивают. С минимальными затратами можно создавать все что угодно.
|
|
18.03.2015, 20:49
|
|
Профессор
|
|
Регистрация: 16.09.2009
Сообщений: 253
|
|
Заготовка для ассемблера: Извлечение корня
Сообщение от laimas
|
А контроллерами желания нет заняться? У них ведь на борту сейчас чего только нет, и таймеры, и АЦП, и порт последовательный, и порт I2C, да чего только в них уже не втихивают. С минимальными затратами можно создавать все что угодно.
|
1. Имею мечту спроектировать свой процессор;
2. Имею мечту спроектировать свой компьютер;
Но:
1. Идея процессора очень сыра и недоработана;
2. Архитектура компьютера туманна и призрачна;
3. Не имею финансовой и физической возможно достигнуть этого опытным путём... (купить Terasic Altera DE0)
4. То же самое и с PIC...
|
|
18.03.2015, 21:18
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Из написанного:
Тем самым, это уже не 64кб, а 192кб памяти, без всяких переключений страниц.
В любом случае это страницы, ибо процессор не может адресовать более 64КБ, просто представлять страницы можно по разному. В 80С48 ПЗУ программ имеет организацию, которую можно назвать страницами, а обращение к ним определяется командами. В контроллерах постарше можно задействовать разряды какого либо порта, расширив диапазон адресов, но ведь код все равно будет по границе разрядности, нельзя разбить байт на тетрады поместив одну в конец первой страницы, а вторую в начало второй. Да и у страничной организации есть и плюсы.
Вот до создания своего процессора я как-то не додумался. В Сколково вам надо.
PIC это немного иная архитектура МК, минимум портов, ну тоже интересная. Я уже лет 10 как не занимаюсь этим, но с запчастями, от кнопок до процессоров проблем нет, и покупать не надо, а что-то собирать нет времени. Была болезнь, ходили скупали позолоченное, достали, отдавал им. Но память, процессоры, микро ЭВМ, чего только нет, валяется, то ли выбросить, то ли ...
|
|
19.03.2015, 18:48
|
|
Профессор
|
|
Регистрация: 16.09.2009
Сообщений: 253
|
|
Заготовка для ассемблера: Извлечение корня
Берём извлечения квадратного корня, ассемблер и переводим на язык 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...
Последний раз редактировалось Paguo-86PK, 19.03.2015 в 18:52.
|
|
20.03.2015, 08:35
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Нет, я бы такого никогда не стал делать - писать на JS, но с учетом другого языка распиливая код под него, типа писать под CISC процессор, но командами RISC процессора. )
Наверное и слава богу, что в свое время мне не попался этот Verilog. Cи, а критические места Ассемблер, и этого хватает по самые уши, и удобно, и проще, и без посредников. Ну с другой стороны дело вкуса и привычки.
|
|
20.03.2015, 20:48
|
|
Профессор
|
|
Регистрация: 16.09.2009
Сообщений: 253
|
|
Ага. Мой друг как-то сказал: Ё-моё! Я иду вверх (изучаю Phyton и т.д.) на уровень абстракции, а ты спускаешься всё ниже (от ассемблера до vhdl/verilog) до уровня вентилей и электрических связей...
Вот тут есть симулятор. Весит очень мало, но вполне годен для симуляции (разрабатываю свой процессор и видео узел на нём)...
Последний раз редактировалось Paguo-86PK, 20.03.2015 в 20:53.
|
|
21.03.2015, 00:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Ваш друг просто не задумывается о том, что без знаний базовой логики не появились бы и процессоры, а появление последних никак не означает смерть первых. Как и без наличия логики в мышлении никакой язык не поможет создать приложение.
Надо будет найти архив всего что у меня накопилось, вспомнить что там есть, можно было бы скинуть что-то полезное из библиотек. Правда только, если, не пропало, многое писалось на CD-R Princo, жутко кошмарная штуковина.
Если бы можно было передать компоненты через http/ftp протокол, мог бы подарить и массу различных комплектующих.
|
|
21.03.2015, 02:23
|
|
Профессор
|
|
Регистрация: 16.09.2009
Сообщений: 253
|
|
Сообщение от laimas
|
Ваш друг просто не задумывается о том, что без знаний базовой логики не появились бы и процессоры, а появление последних никак не означает смерть первых. Как и без наличия логики в мышлении никакой язык не поможет создать приложение.
Надо будет найти архив всего что у меня накопилось, вспомнить что там есть, можно было бы скинуть что-то полезное из библиотек. Правда только, если, не пропало, многое писалось на 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Ц (кажется), ламповые видеокамеры, прибор ночного виденья от танка, прожектор от самолёта...
Не устали читать?
А вот близкие - давно всё выбросить хотят, будь их воля...
А сейчас отец носит запчасти оргтехники...
|
|
21.03.2015, 03:06
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Это проблема всех, кто занимается подобным - наличие дома приличной барахолки.
Нет, я имел ввиду комплектующие как раз под микроэлектронику - сопротивления, конденсаторы, полупроводники в чип исполнении, светодиоды различные, от миниатюрных, 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 градусов. Вот такая у меня сейчас "электроника" на текущий момент.
Последний раз редактировалось laimas, 21.03.2015 в 03:10.
|
|
21.03.2015, 15:39
|
|
Профессор
|
|
Регистрация: 16.09.2009
Сообщений: 253
|
|
Сообщение от laimas
|
Прикинул, что если перенести верхний бокс HDD вниз, где есть место, а вместо него сделать бокс под 2.5" устройства (ОС у меня на SSD, плюс еще два HDD 2.5"), то вполне можно поставить вот такого монстра - http://catalog.onliner.by/fan/coolermaster/rrb2puv10gp, и еще свободнее станет.
|
Что-то черезчур дороговат
|
|
|
|