Недокомпьютер nedoPC-85-MK

Публичный форум для http://www.nedopc.org/nedopc

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

Shaos wrote:P.S. теперь осталось клаву проверить - если заработает, то избыток плат могу распродать по себестоимости ;)
Заработало - себестоимость плюс пересылка будет $50 с хвостиком - хвостик отбросим - кто готов приобресть сию платку (в голом несобранном виде) для экспериментов? :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

Вот есть видео где объясняется разница в ощущениях от разных Cherry MX кнопок, которые отличаются цветом:


https://youtu.be/L-xfY66-EsA

У меня в своей конструкции припаяны синие кнопки плюс одна красная (под прозрачной крышкой в верхнем ряду "красная функция S")
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

Надо что-то придумать для быстрой загрузки программ, а то прошивать ПЗУ для каждого мало-мальского изменения тестовой программы сильно муторно :roll:

P.S. А вот не представить ли мне себя на месте авторов, которым дали задание сделать клон CASIO FX-700P, но сказали, что процессором должен стать 580ВМ80А (точнее 1821ВМ85А)? ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Re: Недокомпьютер nedoPC-85-MK

Post by shoorick »

сэмулируй ISP ;)
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

shoorick wrote:сэмулируй ISP ;)
Не практично
Надо либо сдкард, либо сеть, либо RS-232 на худой конец...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Re: Недокомпьютер nedoPC-85-MK

Post by shoorick »

sd-card - тоже перетыкаться, хотя и перспективно. можно как Лавр - "печатать" прогу, тем более что есть китайский конвертор CH341A с режимом ЮСБ-ЛПТ (я такой купил, но еще не дошли руки попробовать)
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

SD-card сильно быстрее будет, чем прошивка ПЗУ-хи с перетыканием...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

Shaos wrote:Вобщем распределение адресов такое (жирным выделяю то, что досталось по наследству от nedoPC-85-A):

#0000...#1FFF - ROM8K (основное ПЗУ)
#2000...#3FFF - RAM8K (основное ОЗУ)
#4000...#5FFF - RAM8K' (необязательная вторая микросхема ОЗУ)
#6000...#7FFF - external memory (должно возвращать #FF при чтении если ничего не подключено)
#8000...#9FFF - keyboard (область памяти для опроса клавиатуры)
#A000...#BFFF - NI15 (внешняя шина расширения)
#C000...#DFFF - RAM8K (копия области памяти с адреса #2000)
#E000...#FFFF - ROM8K (копия области памяти с адреса #0000)

Кроме того в nedoPC-85-MK существуют ПОРТЫ :o

#00 - REG0 (регистр подсветки строк)
#01 - REG1 (регистр подсветки колонок первого знакоместа)
#02 - REG2 (регистр подсветки колонок второго знакоместа)
#03 - REG3 (регистр подсветки колонок третьего знакоместа)
#04 - REG4 (регистр подсветки колонок четвёртого знакоместа)
#05 - REG5 (регистр подсветки колонок пятого знакоместа)
#06 - REG6 (регистр подсветки колонок шестого знакоместа)
#07 - REG7 (регистр подсветки колонок седьмого знакоместа)
#08 - REG8 (регистр подсветки колонок восьмого знакоместа)
#09 - REG9 (регистр подсветки колонок девятого знакоместа0
#0A - REG10 (регистр подсветки колонок десятого знакоместа)
#0B - REG11 (регистр подсветки колонок одиннадцатого знакоместа)
#0C - REG12 (регистр подсветки колонок двенадцатого знакоместа)
#0D - OUT1 (первый байт вывода 8 бит)
#0E - OUT2 (второй байт вывода 8 бит)
#0F - SND (звуковой порт для выдачи стерео сигнала 4 бита на канал)

Это было на вывод (все неиспользуемые биты выводятся наружу), а вот на ввод (рекомендованные номера):

#00 - VADR (адресный порт для связи с управляющим устройством)
#01 - VDAT (порт данных для связи с управляющим устройством)
...
#0D - IN1 (первый байт ввода 8 бит)
#0E - IN2 (второй байт ввода 8 бит)
#0F - SYS (биты состояния системы)

P.S. На самом деле на ввод только 7 сигналов CS декодируется, составленных из 3 младших битов адреса, т.е. #0D это тоже самое что #05 и #15 и т.д. - получается, что у нас остаётся 3 свободных сигнала на ввод - порты 2,3 и 4 (или что тоже самое - #0A, #0B, #0C)
#6000...#7FFF - external memory это типа сокет для картриджа - к нему будет подключено 2 сигнала питания, 3 сигнала управления (/CS,/RD,/WR), 8 сигналов с шины данных и 13 сигналов адреса (чтобы покрыть адресное пространство в 8К) - это как минимум.

Кроме того туда же можно подать IO-СSы на вывод #0D, #0E, #0F (дублируют OUT1, OUT2 и SND) и на ввод #0A, #0B, #0C (они сейчас ни к чему не подключены) - причём так их и назвать - A,B,C,D,E,F ;)

Можно ещё один сигнал CONNECTED замкнуть на один из битов порта SYS, чтобы сигнализировать центральному процессору о том, что картридж вставлен (без картриджа оттуда будет читаться "1", а с картриджем - "0"). С другой стороны, чтобы узнать есть ли картридж, можно просто прочитать с адреса #6000 байт и если там #FF, то картридж НЕ вставлен. Хотя это ведь только для ПЗУ будет работать, а картридж может ведь быть и ОЗУ, и даже какой-то более хитрый девайс...

Итого:

Code: Select all

сигналы в 2 ряда:
 1 - A0  | D0
 2 - A1  | D1
 3 - A2  | D2
 4 - A3  | D3
 5 - A4  | D4
 6 - A5  | D5
 7 - A6  | D6
 8 - A7  | D7
 9 - A8  | /RD
10 - A9  | /WR
11 - A10 | /CS (MEMORY #6000...#7FFF)
12 - A11 | /CONNECTED (GND)
13 - A12 | /F - IO write to port F
14 - A13*| /E - IO write to port E
15 - A14*| /D - IO write to port D
16 - A15*| /C - IO read from port C
17 - A16*| /B - IO read from port B
18 - A17*| /A - IO read from port A
19 - A18*| CLK*
20 - GND | +5V
A13-A18 и CLK это на будущее...

P.S. Либо сразу подцепить A13-A18 к какому-то из выходных регистров, например к 6 младшим битам порта D (OUT1)

P.P.S. На простейшем "картридже" с 8КБ на борту можно сделать вот такой коннектор:
https://www.digikey.com/product-detail/en/sullins-connector-solutions/PRPC013DBAN-M71RC/S2111EC-13-ND/2775700
который покроет с 1 по 13 пары контактов плюс на 20-ю пару надо будет отдельно поставить ещё короткий коннектор на 2 ноги...

P.P.P.S. Также можно этот интерфейс сделать частично совместимым с моим NedoMem-интерфейсом 2006 года, чтобы задействовать уже готовые платки памяти - тогда сигналы надо будет немного переставить:

Code: Select all

 1 -  D0 | A0
 2 -  D1 | A1
 3 -  D2 | A2
 4 -  D3 | A3
 5 -  D4 | A4
 6 -  D5 | A5
 7 -  D6 | A6
 8 -  D7 | A7
 9 - _RD | A8
10 - _WR | A9
11 - _CS | A10
12 - A18*| A11
13 - A17*| A12
14 - A16*| A13*
15 - +5V | A14*
16 - GND | A15*_____ nedoMem
17 - CON | CLK      extension
18 -  /F | /A
19 -  /E | /B
20 -  /D | /C
Последние 4 пары контактов - расширение старого формата (новый интерфейс назвать скажем nedoMem+)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

Кстати можно программно сделать "оттенки серого" ( точнее красного ; ) на моём светодиодном дисплее :mrgreen:

Для этого вместо показа одного байта на каждую 5-пиксельную площадку в течении времени T (как сейчас), показываем 2 байта:
- первый в теченим времени T/2;
- второй в течении времени T.
В результате имеем, если A это логический уровень в соответствующем бите первого байта и B это логический уровень в соответствующем бите второго байта, Y=A/2+B или
A=0 B=0 -> Y=0.0
A=1 B=0 -> Y=0.5
A=0 B=1 -> Y=1.0
A=1 B=1 -> Y=1.5
т.е. 4 уровня яркости на пиксел ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
Mixa64
Doomed
Posts: 478
Joined: 25 Aug 2009 07:02
Location: Москва

Re: Недокомпьютер nedoPC-85-MK

Post by Mixa64 »

ЦАП со сглаживающим фильтром прям в глазу :)
Хотя, такое на задних фонарях машин тоже можно видеть, если он типа стоп, то светит ровно, если типа он габарит, то при движении глазами рассыпается на черточки.
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Недокомпьютер nedoPC-85-MK

Post by angry_troll »

А вот кстати кнопочки эти, они с кликом? Или просто нажимаешь пружинку?
привет засранцу лавру :)
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

angry_troll wrote:А вот кстати кнопочки эти, они с кликом? Или просто нажимаешь пружинку?
Видео последнее посмотри с включённым звуком :lol:

https://youtu.be/ovbWamS7imU
Я тут за главного - если что шлите мыло на me собака shaos точка net
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Недокомпьютер nedoPC-85-MK

Post by angry_troll »

Вот уж насколько не люблю инфу в виде видео... Теперь придётся втыкать :-]
привет засранцу лавру :)
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

angry_troll wrote:Вот уж насколько не люблю инфу в виде видео... Теперь придётся втыкать :-]
Ну на самом деле, чтобы получить всеобъемлющую инфу по звуку, надо послушать звук :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недокомпьютер nedoPC-85-MK

Post by Shaos »

Теперь надо наверное изложить исходники последних тестов (которые пишут текст и опрашивают клаву) - по сути там 8 раз повторяется один и тот же кусок кода (программу я вбивал прямо в шестнадцатиричных кодах в редакторе досовской утилиты для программатора ПЗУ):

Code: Select all

3E MVI A,10h ; пишем XXXXO
10
D3 OUT 1
01
3E MVI A,00h ; пишем XXXXX
00
D3 OUT 2
02
3E MVI A,11h ; пишем OXXXO
11
D3 OUT 3
03
3E MVI A,18h ; пишем XXXOO
18
D3 OUT 4
04
3E MVI A,0Eh ; пишем XOOOX
0E
D3 OUT 5
05
3E MVI A,1Fh ; пишем OOOOO
1F
D3 OUT 6
06
3E MVI A,10h ; пишем XXXXO
10
D3 OUT 7
07
3E MVI A,11h ; пишем OXXXO
11
D3 OUT 8
08
3E MVI A,1Fh ; пишем OOOOO
1F
D3 OUT 9
09
3E MVI A,1Fh ; пишем OOOOO
1F
D3 OUT 10
0A
3E MVI A,1Fh ; пишем OOOOO
1F
D3 OUT 11
0B
3E MVI A,1Fh ; пишем OOOOO
1F
D3 OUT 12
0C
3E MVI A,0FDh ; 11111101 <<<< подсвечиваем ноликом нужную строку дисплея
FD
D3 OUT 0
00
3E MVI A,100 ; ждёмс 100 раз
64
3D DCR A <---\
CZ JNZ ------/
XX
XX
3E MVI A,0FFh ; 11111111 <<<< убираем индикацию
FF
D3 OUT 0
00
; и т.д.
как видим выводимый текст зашит прямо в код (точнее картинка текста по 5 пикселов на байт) - цикл задержки занимает 14 тактов, обёртка вокруг - 245, т.е. одна горизонталь выводится за 245+14*N тактов, а весь экран обновляется за 8*(245+14*N) = 1960+112*N, что при N=100 даёт 190 раз в секунду, а если увеличить константу до максимума (0 что даст 256 зацикливаний), то это будет 82 раза в секунду - что тоже должно быть ок (а чтобы получить к примеру 100 FPS надо задать константу 206 или в шестнадцатиричном виде CE, а для 200 FPS - 94 или 5E)

для вывода состояния нажатых клавиш меняется код после 8-го знакоместа (для каждого блока кода из примера сверху):

Code: Select all

3A LDA 9FFEh ; в других блоках 9FFDh, 9FFBh, 9FF7h, 9FEFh, 9FDFh, 9FBFh, 9F7Fh
FE
9F
47 MOV B,A
E6 ANI 1Fh
1F
D3 OUT 11 ; младшие 5 бит уходят в знакоместо 11
0B
78 MOV A,B
E6 ANI 0E0h
E0
07 RLC
07 RLC
07 RLC
D3 OUT 12 ; старшие 3 бита уходят в знакоместо 12
0C
вот собственно и всё :)
Я тут за главного - если что шлите мыло на me собака shaos точка net