Оказалась перерезанная дорожка в схеме включения буферов ОЗУ. Буферы были всегда включены и мешали выводить графику не экран.
До этого она была залита припоем, но я сдул феном припой.
Оказалась перерезанная дорожка в схеме включения буферов ОЗУ. Буферы были всегда включены и мешали выводить графику не экран.
До этого она была залита припоем, но я сдул феном припой.
Теперь надо бы ROM-диск собрать. Хотелось бы сделать SD-карту, что бы быстро и непринуждённо записывать свой софт. Так же хотелось бы всё это оформить в виде маленькой съемной платы.
Это даже проще, чем сделать плату с ПЗУ. Но у меня нет деталей для этого сейчас и в магазине нет.
Нет SD-карт, нет держателей под них, нет разъемов на плату. И всего этого нет в магазине, поэтому буду думать.
(Можно конечно купить микро-сд с переходником, и подпаяться к переходнику)
Я думал даже запаять на плату разъем LPT-порта. Но там 25 контактов, а надо 3*8+земля+питание = 26.
Так что пока думаю.
Я сделал прошивку для Специалиста с упомянутой мною программой для работы с Flash-диском. Разместил в конце области ПЗУ - D800.
Я решил сделать разъем из контактов ISA-слотов (и т.п.). Контактная часть у них позолоченная. На печатной плате я сделаю возможность впаять стандартный разъем, так и набор отдельных контактов. А можно и провода впаять и установить держатель на передней стенке корпуса.
Помимо контактов на плате установлены 5 штырьков, которые центрируют и удерживают карту.
На фото макет сделанный крайне небрежно, ибо макет.
---------- Post added at 14:12 ---------- Previous post was at 14:10 ----------
А ты на асме её писал? На Си умеешь писать?
---------- Post added at 15:59 ---------- Previous post was at 14:12 ----------
Как то так.
---------- Post added at 16:05 ---------- Previous post was at 15:59 ----------
Общается с компьютером по 6 проводам.
D0,D1,D2,D3 - двунаправленная шина данных
DIR - направление (от компа)
CLC - тактовый сигнал (от компа)
Последний раз редактировалось vinxru; 17.01.2013 в 15:32.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
vinxru, ща должный прийти разъемы SD и я тебе несколько отправлю.
Если что-то купил и не оплатил - напомните мне плиз в лс, урегулируем вопрос. Тем много за всем и не уследишь.
Писал на ассемблере, но брал большинство подпрограмм от HardWareMan'а.
Значит так. Мониторы, знакогенераторы и всё остальное (6 кБайт) ставьте свои, а вот с адреса D800 мои коды (efd_std.bin). Перед запуском наличие Flash-диска подключенного к порту программатора ВВ55 обязательно. Хотя надпись "Нет файлов" в случае ошибки высветиться. В архиве - исходники, сам асссемблер под Z80 и бинарник до конца забитый ff. Файлы fon_spets.bin и romdisk_std.a80 необходимы для головного исходника (efd_std.a80).
Думаю, дай я перепишу твою программу на Си. За одно посмотрю, как под Специалист программировать.
Там 50% кода занимает функция вывода текста. Её не стоило переписывать, ибо тормозить будет. Мой компилятор пока не особо шустрый. Но что бы разобраться, переписал её. Работает не особо медленнее оригинала.
Обмозгую и добавлю ассемблерных вставок.
Еще фаза некорректно выбирается. Точнее не выбирается вообще. И пока только черный фон.Код:extern uchar chargen[2048]; #define LOADCHAR \ c = *text, ++text; \ if(c==0) break; \ down = (c >= 0xB0 && c < 0xF0); \ s = chargen + c*8; #define PRINTX(M,V,A) \ *d = (*d & M); if(down) *d ^= (*s V); \ ++d; \ for(i=8; i; --i) \ *d = (*d & M) ^ (*s V), ++d, ++s; \ --s; \ *d = (*d & M); if(down) *d ^= (*s V); \ d += A - 9; \ void printx(uchar* dd, char* text) { register uchar* d = dd; uchar* s; uchar c, i, down; while(1) { // Фаза 1 LOADCHAR PRINTX(0x03, << 2, 0) // Фаза 2 LOADCHAR PRINTX(0xFC, >> 4, 0x100) s -= 7; PRINTX(0x0F, << 4, 0) // Фаза 3 LOADCHAR PRINTX(0xF0, >> 2, 0x100) s -= 7; PRINTX(0x3F, << 6, 0) // Фаза 4 LOADCHAR PRINTX(0xC0, , 0x100) } } #define COORDS(x,y) (uchar*)((y)*10+(x)*256+0x9000) void main() { uchar y; memset((uchar*)(0x9000), 0, 0x3000); //1234567890123456789012345678901234567890123456789012345678901234 printx(COORDS(0, 0), "+------------ C:\\ ------------+ +------------ C:\\ ------------+"); for(y=1; y<23; y++) printx(COORDS(0, y), "\xB3 \xB3 \xB3 \xB3 \xB3 \xB3"); printx(COORDS(0, 23), "+--------------+--------------+ +--------------+--------------+"); printx(COORDS(0, 24), "C:\\>");
Последний раз редактировалось vinxru; 18.01.2013 в 12:49.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)