nedoPC.org

Community for electronics hobbyists, established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 10 Dec 2024 03:54



Reply to topic  [ 25 posts ]  Go to page 1, 2  Next
SlothPC (8080A) 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
У меня уже какое-то время имеется голая плата "ISA 8-Bit Backplane" от Сергея Киселёва:

Attachment:
ISA-8-Bit-Backplane-PCB.jpg
ISA-8-Bit-Backplane-PCB.jpg [ 253.56 KiB | Viewed 1041 times ]
https://github.com/skiselev/isa8_backplane

 плата в сборе
Attachment:
Screenshot from 2024-09-08 00-09-17.png
Screenshot from 2024-09-08 00-09-17.png [ 1.15 MiB | Viewed 1025 times ]

И я подумал, а почему бы не сделать для неё процессорную плату на 8080A (КР580ВМ80А) раз уж все нужные напряжения тут уже имеются? :lol:

Пусть такой концепт называется SlothPC :mrgreen:

Attachment:
SlothPC.jpg
SlothPC.jpg [ 123.26 KiB | Viewed 1094 times ]

Мне гугловский AI Gemini даже предложил девиз для этого концепта: Relax, it's a SlothPC :lol:

SlothPC можно будет использовать в качестве отладочного стенда для ISA-плат типа Sprinternet-а или каких-то новодельных звуковух...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


08 Sep 2024 00:21
Profile WWW
Maniac

Joined: 01 Jan 2022 04:34
Posts: 206
Location: USSR, Tashkent
Reply with quote
нуууууу, не прошло и 2х лет как
в теме по z80 или 180 или 280 я уже предлагал такой вариант

но все сказали - нафиг надо


08 Sep 2024 00:27
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
imsushka wrote:
нуууууу, не прошло и 2х лет как
в теме по z80 или 180 или 280 я уже предлагал такой вариант

но все сказали - нафиг надо
да ничо не сказали :)
viewtopic.php?p=170737#p170737
наоборот человек как раз и начал городить всё на этой ISA8 плате :lol:


_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


08 Sep 2024 00:45
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Память этого компика можно совсем по простому разбить:

#0000...#7FFF - RAM 32KB
#8000...#9FFF - Cartridge nedoMem (RAM/ROM/etc)
#A000...#BFFF - ROM 8KB
#C000...#FFFF - ISA-bus (подключение как в Спринтере через окно 16KB)

Если воткнуть туда SRAM-картридж, то объём сплошного ОЗУ будет 40КБ (причём область картриджа сможет переключаться страницами по 8КБ и в пределе допускать наличие до полумега памяти). Вывод можно сделать через nedoText/SX (текст 80x25 на NTSC телек) - скажем с помощью отдельной ISA-платки. Ввод - через PC-клаву подцепленную к микроконтроллеру PIC (PS/2 или USB). Но для начала можно последовательный порт на 6850 типа как в RC2014 организовать.

При старте всё адресное пространство будет занимать копии ПЗУ 8KB, в первых трёх байтах которого будет прошито C3 03 A0 (JMP #A003) - при передаче управления на адрес #A003 (по факту перехода A15 из 0 в 1) триггер начального старта будет сброшен в нормальное состояние (типа как на РК) и карта памяти будет установлена в том виде, как описано выше. Можно сделать на мелкой логике выборку IO/MEM и на порты повесить 6850, а также пару регистров задающих старшие биты адреса для nedoMem (A13...A18) и ISA (A14...A19), которые также будут управлять индикацией на двух 7-сегментных индикаторах (пусть будет). А можно и в общее адресное пространство их воткнуть - скажем в конец области ПЗУ...

P.S. Вместо обычного срама 32КБ можно поставить энергонезависимую память M48T35 с часами где в конце сидят:
Quote:
#7FF8 - управление (Write-bit,Read-bit,Sign-bit,Calibration)
#7FF9 - секунды в BCD (STOP-bit,seconds/10,seconds%10)
#7FFA - минуты в BCD (0,minutes/10,minutes%10)
#7FFB - часы в BCD (0,0,hours/10,hours%10)
#7FFC - век и день недели (0, FT-must be 0, Century Enable Bit, Century Bit, 0, day 1-7)
#7FFD - день месяца в BCD (0,0,day/10,day%10)
#7FFE - месяц в BCD (0,0,0,month/10,month%10)
#7FFF - год в BCD (year/10,year%10)
https://www.digikey.com/en/products/detail/stmicroelectronics/M48T35-70PC1/606269 (тут просят $33.73 за один чип)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


08 Sep 2024 03:19
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
68B50 занимает 2 байта на чтение и запись
регистры для задания старших адресов картриджа и ISA можно сделать только на запись - ещё 2 байта
ещё наверное понадобится чтение состояния IRQ-ов (IRQ2-IRQ7), а режим DMA мы пока проигнорируем - ещё 1 байт (можно совместить с одним из тех, что на запись)
чтобы получить скорость в COM-порту 115200 бод частота для 68B50 должна быть 7.3728МГц (как в RC2014)
кроме этого на шине ISA должна быть частота 14.1818МГц (например для AdLib, который делит эту частоту на 4, чтобы подать затем на OPL2 чип)
частоту для проца можно получить от частоты, идущей на 68B50 - скажем можно взять осциллятор 14.7456МГц и поделить его частоту на 2 для 68B50, а для 8080 поделить на 6, сформировав "красивые" непересекающиеся фазы на счётчике считающем до 6:
Code:
   |0|1|2|3|4|5|
    _
F1 / \_________
        _____
F2 ____/     \_
я знаю можно проще, но тогда будет деление входной частоты на 4, а хотелось бы на 6, чтобы получить частоту процессора близкую к идеальной - 2.4576МГц (по всем длинам и отступам сюда отлично вписывается не только старый-добрый КР580ВМ80А, но и классический 8080A-1 и может быть даже чуть более медленный 8080A-2)

P.S. Наверно можно эти же 14.7456МГц подать на OSC вход ISA шины, но AdLib без коррекции при этом станет фальшивить на 4% (сдвиг между соседними нотами напомню составляет 5.95%) так что наверное для ISA надо будет отдельно стоящий осциллятор 14.1818МГц воткнуть (либо программировать OPL2 с учётом изменённой частоты)...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


08 Sep 2024 22:30
Profile WWW
Maniac

Joined: 01 Jan 2022 04:34
Posts: 206
Location: USSR, Tashkent
Reply with quote
есть 14,1818 стандарт для исы
вот и используй ее для уарта, ну будет не 115200 и 115100 и что ?
на вс современых чипах подстройка скорости

я на пике 675 делал программый уарт и все читалось без проблем


08 Sep 2024 23:59
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
на 115200 программно делал? и кстати при 14.1818 МГц оно будет 110795...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Sep 2024 00:01
Profile WWW
Maniac

Joined: 01 Jan 2022 04:34
Posts: 206
Location: USSR, Tashkent
Reply with quote
Shaos wrote:
на 115200 программно делал? и кстати при 14.1818 МГц оно будет 110795...


нет канешно, 19200 или гдето там рядом


3% ошибки не проблема


09 Sep 2024 01:21
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Ну вот, а мне 115200 надо :lol:

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Sep 2024 08:43
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Ещё такая идея есть, что хочется из старья иметь только сам проц, а все остальные микрухи будут относительно новыми (90e-00e), поэтому никакого другого околоинтеловского барахла типа ГФ24, ВК28, ВН59 и т.д. тут не будет. Для прерываний наверное надо на мелкой логике каких-то триггерочков нагородить, чтобы они ловили запросы на прерывания по IRQ-ам и защёлкивали, пока проц не дойдёт до их обработки - на проц в итоге может идти одно прерывание по #FF (RST 7) и обработчик уже сам будет смотреть какие битики опрокинулись (причём INTA из слова состояния мне доставать не очень хочется поэтому триггерочки можно сбрасывать по INTE) - вобщем как-то так...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Sep 2024 19:06
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Интересная схема формирования фаз на мелкой логике попалась мне в старом интеловском мануале:

Attachment:
Screenshot from 2024-09-09 22-51-18.png
Screenshot from 2024-09-09 22-51-18.png [ 54.67 KiB | Viewed 931 times ]

Тут счёт начинается с 3 и перезагрузка происходит синхронно на счёте 12, т.е. считаются 10 тактов:
Code:
          XOR1 XOR2 NAND1 NAND2 F1 F2
0011 (3)   0    0   00=1    1   0  0
0100 (4)   0    0   10=1    1   0  0
0101 (5)   1    0   11=0    1   1  0
0110 (6)   1    0   11=0    1   1  0
0111 (7)   0    0   10=1    1   0  0
1000 (8)   0    1   00=1    0   0  1
1001 (9)   1    1   01=1    0   0  1
1010 (10)  1    1   01=1    0   0  1
1011 (11)  0    1   00=1    0   0  1
1100 (12)  0    1   10=1    0   0  1
Красиво :)

В моём случае можно начинать с 5 и считать до 10 - при этом старший бит счётчика сразу становится F2, а F1 должен быть в единице только при 0110:
Code:
           F1   F2
0101 (5)   0    0
0110 (6)   1    0
0111 (7)   0    0
1000 (8)   0    1
1001 (9)   0    1
1010 (10)  0    1
При частоте 14.7456 МГц длительность активной части F1 (а также пауза между F1 и F2 и пауза между F2 и F1) в данном случае будет составлять 67.8 нс, а длительность активной части F2 - 203.5 нс (т.е. частота процессора будет 2.46 МГц), что подпадает под тайминги 8080A-1, но чуть-чуть выходит за пределы таймингов 8080A-2 и 8080A:
Code:
   SlothPC 8080A   8080A-2 8080A-1
TF1  67.8  min 60  min 60  min 50  - front F1 to fall F1
TF2 203.5  min 220 min 175 min 145 - front F2 to fall F2
TD1  67.8  min 0   min 0   min 0   - fall F1 to front F2
TD2  67.8  min 70  min 70  min 60  - fall F2 to front F1
TD3 135.6  min 80  min 70  min 60  - front F1 to front F2

P.S. Если считать не 6 тактов, а 5 (убрав паузу между F1 и F2), то частота процессора поднимется до 2.95 МГц, но 8080A скорее всего выпадет т.к. TD3 тоже станет 67.8 нс и F2 перестанет быть чисто симметричным, что некрасиво...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Sep 2024 23:02
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Shaos wrote:
Ещё такая идея есть, что хочется из старья иметь только сам проц, а все остальные микрухи будут относительно новыми (90e-00e), поэтому никакого другого околоинтеловского барахла типа ГФ24, ВК28, ВН59 и т.д. тут не будет. Для прерываний наверное надо на мелкой логике каких-то триггерочков нагородить, чтобы они ловили запросы на прерывания по IRQ-ам и защёлкивали, пока проц не дойдёт до их обработки - на проц в итоге может идти одно прерывание по #FF (RST 7) и обработчик уже сам будет смотреть какие битики опрокинулись (причём INTA из слова состояния мне доставать не очень хочется поэтому триггерочки можно сбрасывать по INTE) - вобщем как-то так...
Можно ещё сделать прерывание от кнопки (назовём его IRQ0) и от встроенного RS232-контроллера 68B50 (назовём его IRQ1), а контроллер клавы (и мыши?) сделать отдельной ISA-платкой и соответственно оно задействует одно из прерываний ISA-шины (IRQ2-IRQ7). Также сделать отдельной ISA-платкой текстовый видеовыход nedoText/SX, который тоже задействует одно из прерываний. В итоге у нас получается 8 "виртуальных" прерываний IRQ0-IRQ7, которые можно будет побитно маскировать.

По поводу управления моей выводилкой текста 80x25: viewtopic.php?p=77766#p77766
Shaos wrote:
Взаимодействие с девайсом предпологается осуществлять по 10 сигналам (плюс земля): D0, D1, D2, D3, D4, D5, D6, D7, IFLAG, OFLAG (из них выходной только OFLAG, а все остальные - входы).

Внешнее устройство ждёт когда OFLAG=0, затем выводит в D0...D7 нужный код и взводит IFLAG=1, далее ждём когда OFLAG=1 и сбрасываем IFLAG=0. Пока не станет OFLAG=0 новый код засылать нельзя.
Надо превратить это в работу по прерыванию (полинг тоже можно оставить) - можно сделать так, что OFLAG=1 будет сбрасывать IFLAG автоматически - в итоге программе ничего не надо будет делать при переходе OFLAG из 0 в 1, а прерывание будет срабатывать по переходу OFLAG из 1 в 0 (т.е. IRQn=!OFLAG). Поллинг может вычитывать бит OFLAG из порта статуса (чтобы можно было без прерываний работать чисто программно) и если он 0, то программа засылает байт в порт данных - можно сделать так, что IFLAG при этом автоматически установится в 1, а изменившийся из 0 в 1 OFLAG этот IFLAG автоматически сбросит - далее изменение из 1 в 0 сигнала OFLAG приведёт к вызову прерывания (если оно не замаскировано) - такую платку даже можно будет потом в PC XT новоделах задействовать, поправив ихний опенсорсный BIOS! :lol:

Разбиение такого компа на несколько плат упростит разработку и отладку, причём главная плата SlothPC сможет работать сама по себе - даже без ISA-шины, т.к. там кроме процессора уже будет ОЗУ, ПЗУ и COM-порт. Можно джамперами выбирать как пускаться - с использованием встроенного COM-порта или с использованием ввода-вывода по ISA-шине (можно зарезервировать специальные порты и прерывания под это дело - типа для nedoText/SX взять порты 220h/221h и прерывание IRQ2, а для самодельной клавиатуры - порты 110h/111h и прерывание IRQ5?). Ну и плюс уже существующие PC-платы можно будет тут же задействовать - главное следить, чтобы оно друг с другом не конфликтовало (например AdLib разрешает выбирать прерывания IRQ2, IRQ3 или IRQ5).

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


11 Sep 2024 00:49
Profile WWW
Novelist

Joined: 24 Aug 2022 23:08
Posts: 39
Reply with quote
Можно уже готовую плату найти на 6-8 isa16 разъемов используя неисправную чипсетную материнку 286/386. Типа М219/TD70AN/M396 и подобную просто обрезав лишние проводники и удалив чипсет с процессором и обвязкой.


20 Sep 2024 10:42
Profile
Doomed

Joined: 10 Aug 2022 07:27
Posts: 416
Reply with quote
Shaos wrote:
Интересная схема формирования фаз на мелкой логике попалась мне в старом интеловском мануале...

А ещё интересна схема БП, формирующая 2 доп. напряжения из +5-ти... Почему такая любовь к 8080? Ну работай с тем же z80, как с 8080, чем плохо? Или даже с 8085. Всяко лучше.


20 Sep 2024 11:21
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
в z80 много лишнего и некоторые программы написанные для 8080 неправильно работают на z80, к тому же он теперь такой же труп как и 8080/8085 - так зачем же тогда отходить от истоков?…

P.S. блок питания ATX уже имеет все напряжения, а если вдруг -5 отсутствует, то на плате Киселёва есть преобразователь из -12 в -5...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


20 Sep 2024 12:48
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 25 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.