Author |
Message |
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Да там не маленькая прошивка-то. Весь килобайт кодом занят..... Наверное лучше самому разобраться, как с этим индикатором работать.
|
28 Feb 2014 09:39 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Как хочешь... но замучаешься больше, чем прочитать оригинальное ПЗУ.
Раньше у всех этих старых недо-компов типа РК-86 и Микроши ПЗУ читали как нефиг делать!
А там - по 2Кбайт минимум было...
Кстати, ПЗУ-ху слей куда-нибуть, чтобы булО...
_________________ iLavr
|
28 Feb 2014 09:51 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Слил сюда: http://zx.pk.ru/showpost.php?p=680408&postcount=588
Как я понял нужно "бежать" по С2 - С5 (выставлять ноль), затем писать в PORT1 маску символа и тд...
|
28 Feb 2014 10:03 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Да принцип-то - да, несложный... просто неприятное занятие подбор временн Ых интервалов,
чтобы оно нормально было видно.
Я так думаю - в оригинале там всё сделано по прерыванию, чтобы периодически индикатор
сканировать, ну и на этом фоне заниматься прочими делами.
Ну и все интервалы нужные уже подобраны.
За ПЗУ-ху спасибо! У меня у самогО дома такая печка и что-то уже с год как не работает...
_________________ iLavr
|
28 Feb 2014 10:19 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Ну да, в интервале весь замес идет. Для меня просто ассемблер этот непривычен, поэтому читать на лету не получается. Но разбираюсь...
Last edited by Tronix on 28 Feb 2014 12:04, edited 1 time in total.
|
28 Feb 2014 11:50 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Привыкнешь быстро. Там просто адресация и банки несколько непривычны.
А так-то это по сути урезанный-обрезанный i8080, которому на кристалл добавили
порты и память программ.
А блок регистров общего назначения сделали 8-битным сугубо, удлиннили до 64 ячеек,
и назвали памятью данных.
Только будь осторожен - если я правильно помню, у этих микро-ЭВМ нет инструкции вычитания.
Это несколько озадачивает по первому разу...
_________________ iLavr
|
28 Feb 2014 12:03 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Испугали ежа иголкой Уж чего чего, а вычитание то я могу запилить через сложение с NOT. Да и вообще, при наличии стольких свободных килобайт можно вообще полную таблицу значений держать.
Но оно мне пока все не нужно.
Решил значит делать отрисовку в таймере. Нужно ему задать вектор прерывания (по адресу 0x007), потом задать интервал (mov a,#??; mov t,a) и запустить таймер STRT T
Немного не вкуриваю с RAM памятью. Мне нужен массив из 4 байт (ну для 4 символов). Че, какие адреса, почему такие... Вот смотрю в дизасм основной прошивки, там так:
Что за 02dh? Почему? И дальше по тексту уже так:
Тут уже на ~100h больше адрес. Странно..
|
28 Feb 2014 21:51 |
|
|
VituZz
God
Joined: 13 Nov 2010 04:06 Posts: 1345
|
У меня какое-то дежавю в этой теме...
Сташин, Урусов, Мологонцева. Проектирование цифровых устройств на однокристальных микроконтроллерах. Отличная книга по 1816, со схемами, алгоритмами и готовыми кусочками кода.
|
02 Mar 2014 00:25 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
С памятью более-менее разобрался вроде. Первые 8 байт отображаются на регистры R0-R7, следующие 8 байт вроде для стека (для запоминания адреса возврата CALL), остальные 16 байт можно юзать по усмотрению. Ну и второй банк SEL RB1 - так же. Ну мне 16 байт хватит за глаза.
|
02 Mar 2014 01:03 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Сделал вывод через таймер. Тайминги подсмотрел в оригинальной прошивке, как и советовал Lavr. Все работает
Говнокодес:
| | | | Code: ;DATA .equ disp_buf, 030h ; 4 bytes buffer
;;; reset vector .org 0 dis i ; disable interrupts jmp main
;;; external interrupt vector--trap .org 3 jmp $ ; nop
;;; timer interrupt vector .org 7 sel rb1 mov a,#0d5h mov t,a mov a,#00FH orld p5,a
mov a,disp_buf-1 add a,r5 mov r0,a mov a,@r0
outl p1,a
mov a,r4 movd p5,a rl a mov r4,a
djnz r5,exit_tmr mov r4,#0feh mov r5,4
exit_tmr: sel rb0 mov a,#0d8h mov t,a ; strt t retr
;MAIN main: ;initialize
dis tcnti ; turn off counter
mov r0,disp_buf ; Fill disp_buf mov a,#0c0h ; O mov @r0,a inc r0 mov a,#0c7h ; L mov @r0,a inc r0 mov a,#086h ; E mov @r0,a inc r0 mov a,#089h ; H mov @r0,a
sel rb1 ; timer variables mov r4,#0feh ; 1110h - CT position mov r5,4 ; R5 = buf offset sel rb0
mov a,#0e5h mov t,a strt t en tcnti
main_loop: jmp main_loop
| | | | |
|
02 Mar 2014 03:41 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
_________________ iLavr
|
02 Mar 2014 13:15 |
|
|
petrenko
Doomed
Joined: 10 Mar 2012 16:21 Posts: 598 Location: РФ
|
Не совсем так - скорее это "урезанный-обрезанный i8085" ибо забыли упомянуть генератор, и ещё всяко разно. Да и питание одно, что тоже как у 8085 а не как у 8080 ..
|
02 Mar 2014 13:42 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ага... щаззз... а 8085 - это кто? Это продвинутый 8080. И раз ты сам говоришь, "урезанный-обрезанный i8085" - это как раз и будет "обрезанный 8080". Но весь этот словесный бредятник никак не влияет на основную подчеркнутую мной мысль:
_________________ iLavr
|
02 Mar 2014 14:12 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Радует другое, что у сабжа есть шина BUS. Это почти как Parallel slave port у некоторых PIC. Правда конкретно у 8035 она занята ПЗУ, а у какого-нить 8048 можно юзать по своему усмотрению. Плюс ко всему очень просто подключить динамическую память типа РУ7, можно тестер сделать для РУ5, РУ7.... Да и камни стоят копейки.
|
02 Mar 2014 21:45 |
|
|
Mixa64
Doomed
Joined: 25 Aug 2009 07:02 Posts: 460 Location: Москва
|
...Теперь только остается сыграть на девайсе «в лесу родилась елочка»...
А "Мурку" смогёшь?
|
03 Mar 2014 01:51 |
|
|