Заработало - себестоимость плюс пересылка будет $50 с хвостиком - хвостик отбросим - кто готов приобресть сию платку (в голом несобранном виде) для экспериментов?Shaos wrote:P.S. теперь осталось клаву проверить - если заработает, то избыток плат могу распродать по себестоимости
Недокомпьютер nedoPC-85-MK
Moderator: Shaos
-
Shaos
- Admin
- Posts: 24458
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Недокомпьютер nedoPC-85-MK
-
Shaos
- Admin
- Posts: 24458
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Недокомпьютер nedoPC-85-MK
Вот есть видео где объясняется разница в ощущениях от разных Cherry MX кнопок, которые отличаются цветом:
https://youtu.be/L-xfY66-EsA
У меня в своей конструкции припаяны синие кнопки плюс одна красная (под прозрачной крышкой в верхнем ряду "красная функция S")
https://youtu.be/L-xfY66-EsA
У меня в своей конструкции припаяны синие кнопки плюс одна красная (под прозрачной крышкой в верхнем ряду "красная функция S")
-
Shaos
- Admin
- Posts: 24458
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Недокомпьютер nedoPC-85-MK
Надо что-то придумать для быстрой загрузки программ, а то прошивать ПЗУ для каждого мало-мальского изменения тестовой программы сильно муторно 
P.S. А вот не представить ли мне себя на месте авторов, которым дали задание сделать клон CASIO FX-700P, но сказали, что процессором должен стать 580ВМ80А (точнее 1821ВМ85А)?
P.S. А вот не представить ли мне себя на месте авторов, которым дали задание сделать клон CASIO FX-700P, но сказали, что процессором должен стать 580ВМ80А (точнее 1821ВМ85А)?
-
shoorick
- Doomed
- Posts: 487
- Joined: 05 Nov 2007 05:08
- Location: Украина
Re: Недокомпьютер nedoPC-85-MK
сэмулируй ISP 
-
Shaos
- Admin
- Posts: 24458
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Недокомпьютер nedoPC-85-MK
Не практичноshoorick wrote:сэмулируй ISP
Надо либо сдкард, либо сеть, либо RS-232 на худой конец...
-
shoorick
- Doomed
- Posts: 487
- Joined: 05 Nov 2007 05:08
- Location: Украина
Re: Недокомпьютер nedoPC-85-MK
sd-card - тоже перетыкаться, хотя и перспективно. можно как Лавр - "печатать" прогу, тем более что есть китайский конвертор CH341A с режимом ЮСБ-ЛПТ (я такой купил, но еще не дошли руки попробовать)
-
Shaos
- Admin
- Posts: 24458
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Недокомпьютер nedoPC-85-MK
SD-card сильно быстрее будет, чем прошивка ПЗУ-хи с перетыканием...
-
Shaos
- Admin
- Posts: 24458
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Недокомпьютер nedoPC-85-MK
#6000...#7FFF - external memory это типа сокет для картриджа - к нему будет подключено 2 сигнала питания, 3 сигнала управления (/CS,/RD,/WR), 8 сигналов с шины данных и 13 сигналов адреса (чтобы покрыть адресное пространство в 8К) - это как минимум.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 существуют ПОРТЫ![]()
#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)
Кроме того туда же можно подать 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
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
-
Shaos
- Admin
- Posts: 24458
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Недокомпьютер nedoPC-85-MK
Кстати можно программно сделать "оттенки серого" ( точнее красного ; ) на моём светодиодном дисплее
Для этого вместо показа одного байта на каждую 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 уровня яркости на пиксел
Для этого вместо показа одного байта на каждую 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 уровня яркости на пиксел
-
Mixa64
- Doomed
- Posts: 498
- Joined: 25 Aug 2009 07:02
- Location: Москва
Re: Недокомпьютер nedoPC-85-MK
ЦАП со сглаживающим фильтром прям в глазу 
Хотя, такое на задних фонарях машин тоже можно видеть, если он типа стоп, то светит ровно, если типа он габарит, то при движении глазами рассыпается на черточки.
Хотя, такое на задних фонарях машин тоже можно видеть, если он типа стоп, то светит ровно, если типа он габарит, то при движении глазами рассыпается на черточки.
-
angry_troll
- Doomed
- Posts: 449
- Joined: 08 Apr 2013 04:04
- Location: 213.247.249.139
Re: Недокомпьютер nedoPC-85-MK
А вот кстати кнопочки эти, они с кликом? Или просто нажимаешь пружинку?
привет засранцу лавру :)
-
Shaos
- Admin
- Posts: 24458
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Недокомпьютер nedoPC-85-MK
Видео последнее посмотри с включённым звукомangry_troll wrote:А вот кстати кнопочки эти, они с кликом? Или просто нажимаешь пружинку?
https://youtu.be/ovbWamS7imU
-
angry_troll
- Doomed
- Posts: 449
- Joined: 08 Apr 2013 04:04
- Location: 213.247.249.139
Re: Недокомпьютер nedoPC-85-MK
Вот уж насколько не люблю инфу в виде видео... Теперь придётся втыкать :-]
привет засранцу лавру :)
-
Shaos
- Admin
- Posts: 24458
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Недокомпьютер nedoPC-85-MK
Ну на самом деле, чтобы получить всеобъемлющую инфу по звуку, надо послушать звукangry_troll wrote:Вот уж насколько не люблю инфу в виде видео... Теперь придётся втыкать :-]
-
Shaos
- Admin
- Posts: 24458
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Недокомпьютер nedoPC-85-MK
Теперь надо наверное изложить исходники последних тестов (которые пишут текст и опрашивают клаву) - по сути там 8 раз повторяется один и тот же кусок кода (программу я вбивал прямо в шестнадцатиричных кодах в редакторе досовской утилиты для программатора ПЗУ):
как видим выводимый текст зашит прямо в код (точнее картинка текста по 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
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
; и т.д.
для вывода состояния нажатых клавиш меняется код после 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
