SlothPC (8080A)

8-битные микроконтроллеры и микропроцессоры от Intel и их клоны, а также компьютеры на них построенные

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23662
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

SlothPC (8080A)

Post by Shaos »

У меня уже какое-то время имеется голая плата "ISA 8-Bit Backplane" от Сергея Киселёва:

ISA-8-Bit-Backplane-PCB.jpg
ISA-8-Bit-Backplane-PCB.jpg (253.56 KiB) Viewed 1229 times

https://github.com/skiselev/isa8_backplane

 плата в сборе

Screenshot from 2024-09-08 00-09-17.png
Screenshot from 2024-09-08 00-09-17.png (1.15 MiB) Viewed 1213 times


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

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

SlothPC.jpg
SlothPC.jpg (123.26 KiB) Viewed 1282 times

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

SlothPC можно будет использовать в качестве отладочного стенда для ISA-плат типа Sprinternet-а или каких-то новодельных звуковух...
Я тут за главного - если что шлите мыло на me собака shaos точка net
imsushka
Maniac
Posts: 209
Joined: 01 Jan 2022 11:34
Location: USSR, Tashkent

Re: SlothPC (8080A)

Post by imsushka »

нуууууу, не прошло и 2х лет как
в теме по z80 или 180 или 280 я уже предлагал такой вариант

но все сказали - нафиг надо
User avatar
Shaos
Admin
Posts: 23662
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: SlothPC (8080A)

Post by Shaos »

imsushka wrote:нуууууу, не прошло и 2х лет как
в теме по z80 или 180 или 280 я уже предлагал такой вариант

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

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23662
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: SlothPC (8080A)

Post by Shaos »

Память этого компика можно совсем по простому разбить:

#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 с часами где в конце сидят:
#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 за один чип)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23662
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: SlothPC (8080A)

Post by Shaos »

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: Select all

   |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 с учётом изменённой частоты)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
imsushka
Maniac
Posts: 209
Joined: 01 Jan 2022 11:34
Location: USSR, Tashkent

Re: SlothPC (8080A)

Post by imsushka »

есть 14,1818 стандарт для исы
вот и используй ее для уарта, ну будет не 115200 и 115100 и что ?
на вс современых чипах подстройка скорости

я на пике 675 делал программый уарт и все читалось без проблем
User avatar
Shaos
Admin
Posts: 23662
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: SlothPC (8080A)

Post by Shaos »

на 115200 программно делал? и кстати при 14.1818 МГц оно будет 110795...
Я тут за главного - если что шлите мыло на me собака shaos точка net
imsushka
Maniac
Posts: 209
Joined: 01 Jan 2022 11:34
Location: USSR, Tashkent

Re: SlothPC (8080A)

Post by imsushka »

Shaos wrote:на 115200 программно делал? и кстати при 14.1818 МГц оно будет 110795...
нет канешно, 19200 или гдето там рядом


3% ошибки не проблема
User avatar
Shaos
Admin
Posts: 23662
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: SlothPC (8080A)

Post by Shaos »

Ну вот, а мне 115200 надо :lol:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23662
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: SlothPC (8080A)

Post by Shaos »

Ещё такая идея есть, что хочется из старья иметь только сам проц, а все остальные микрухи будут относительно новыми (90e-00e), поэтому никакого другого околоинтеловского барахла типа ГФ24, ВК28, ВН59 и т.д. тут не будет. Для прерываний наверное надо на мелкой логике каких-то триггерочков нагородить, чтобы они ловили запросы на прерывания по IRQ-ам и защёлкивали, пока проц не дойдёт до их обработки - на проц в итоге может идти одно прерывание по #FF (RST 7) и обработчик уже сам будет смотреть какие битики опрокинулись (причём INTA из слова состояния мне доставать не очень хочется поэтому триггерочки можно сбрасывать по INTE) - вобщем как-то так...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23662
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: SlothPC (8080A)

Post by Shaos »

Интересная схема формирования фаз на мелкой логике попалась мне в старом интеловском мануале:

Screenshot from 2024-09-09 22-51-18.png
Screenshot from 2024-09-09 22-51-18.png (54.67 KiB) Viewed 1119 times

Тут счёт начинается с 3 и перезагрузка происходит синхронно на счёте 12, т.е. считаются 10 тактов:

Code: Select all

          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: Select all

           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: Select all

   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 перестанет быть чисто симметричным, что некрасиво...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23662
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: SlothPC (8080A)

Post by Shaos »

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).
Я тут за главного - если что шлите мыло на me собака shaos точка net
Mildi
Novelist
Posts: 49
Joined: 25 Aug 2022 06:08

Re: SlothPC (8080A)

Post by Mildi »

Можно уже готовую плату найти на 6-8 isa16 разъемов используя неисправную чипсетную материнку 286/386. Типа М219/TD70AN/M396 и подобную просто обрезав лишние проводники и удалив чипсет с процессором и обвязкой.
Mondx
Doomed
Posts: 449
Joined: 10 Aug 2022 14:27

Re: SlothPC (8080A)

Post by Mondx »

Shaos wrote:Интересная схема формирования фаз на мелкой логике попалась мне в старом интеловском мануале...
А ещё интересна схема БП, формирующая 2 доп. напряжения из +5-ти... Почему такая любовь к 8080? Ну работай с тем же z80, как с 8080, чем плохо? Или даже с 8085. Всяко лучше.
User avatar
Shaos
Admin
Posts: 23662
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: SlothPC (8080A)

Post by Shaos »

в z80 много лишнего и некоторые программы написанные для 8080 неправильно работают на z80, к тому же он теперь такой же труп как и 8080/8085 - так зачем же тогда отходить от истоков?…

P.S. блок питания ATX уже имеет все напряжения, а если вдруг -5 отсутствует, то на плате Киселёва есть преобразователь из -12 в -5...
Я тут за главного - если что шлите мыло на me собака shaos точка net
Post Reply