Оказалась перерезанная дорожка в схеме включения буферов ОЗУ. Буферы были всегда включены и мешали выводить графику не экран.
До этого она была залита припоем, но я сдул феном припой.
Вид для печати
Оказалась перерезанная дорожка в схеме включения буферов ОЗУ. Буферы были всегда включены и мешали выводить графику не экран.
До этого она была залита припоем, но я сдул феном припой.
Теперь надо бы ROM-диск собрать. Хотелось бы сделать SD-карту, что бы быстро и непринуждённо записывать свой софт. Так же хотелось бы всё это оформить в виде маленькой съемной платы.
Это даже проще, чем сделать плату с ПЗУ. Но у меня нет деталей для этого сейчас и в магазине нет.
Нет SD-карт, нет держателей под них, нет разъемов на плату. И всего этого нет в магазине, поэтому буду думать.
(Можно конечно купить микро-сд с переходником, и подпаяться к переходнику)
Я думал даже запаять на плату разъем LPT-порта. Но там 25 контактов, а надо 3*8+земля+питание = 26.
Так что пока думаю.
Я сделал прошивку для Специалиста с упомянутой мною программой для работы с Flash-диском. Разместил в конце области ПЗУ - D800.
Я решил сделать разъем из контактов ISA-слотов (и т.п.). Контактная часть у них позолоченная. На печатной плате я сделаю возможность впаять стандартный разъем, так и набор отдельных контактов. А можно и провода впаять и установить держатель на передней стенке корпуса.
Помимо контактов на плате установлены 5 штырьков, которые центрируют и удерживают карту.
На фото макет сделанный крайне небрежно, ибо макет.
http://ic.pics.livejournal.com/vinxr...57835_1000.jpg
http://ic.pics.livejournal.com/vinxr...57902_1000.jpg
---------- Post added at 14:12 ---------- Previous post was at 14:10 ----------
А ты на асме её писал? На Си умеешь писать?
---------- Post added at 15:59 ---------- Previous post was at 14:12 ----------
Как то так.
http://s018.radikal.ru/i500/1301/cf/b8ddf5a562df.jpg
---------- Post added at 16:05 ---------- Previous post was at 15:59 ----------
Общается с компьютером по 6 проводам.
D0,D1,D2,D3 - двунаправленная шина данных
DIR - направление (от компа)
CLC - тактовый сигнал (от компа)
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:\\>");