User Tag List

Страница 14 из 22 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя
Показано с 131 по 140 из 215

Тема: Восстановление Специалистов.

  1. #131
    HardWareMan
    Гость

    По умолчанию

    Именно.

  2. #132

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сегодня сил нет паять.

  3. #133
    HardWareMan
    Гость

    По умолчанию

    Ну дык тяпница же!

  4. #134

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Мухаха! А я советую не редровить весь экран, а только строку с курсором. Я в свое время на кружке писал уже драйвер ROM диска с менюшкой. Все на отлично шустро прорисовывалось на стандартном тормозном выводе символа, т.к. рисовал только то, что нужно (т.н. "дифф"). Т.е., стираем курсор пропечатывая строку, где он был, рисуем новый опять же печатая где он должен быть. Весь скрин редровить только при тотальной смене картинки. Ну а с шустрым выводом должно просто летать.

    Касаемо:

    Мы этим пользовались еще на стандартном спеце 23 года назад в кружке. Именно поэтому, в быстром выводе 4 ветки вывода символа, а в оригинальном работа через сдвиг с помощью команды DAD и сохранением результата в стеке. Это же решает проблему хранения координаты Х, которая имеет 384 точки и не влазит в байт. Храним ее как X/2. Такие дела.
    Цитата Сообщение от vinxru Посмотреть сообщение
    Я даже курсор xor fillRect рисую.
    Робяты, а почему вы не хотите сделть отдельный драйвер с быстрым выводом? Допилить его до совместимости с VT52 и пользовать _общий_ драйвер из множества разных программ. А то fifan лепит прямо по экрану, vinxru лепит прямо по экрану, а используют одни и те же идеи вывода символа.

    vinxru, если вы не принципиальный писатель исключительно своего кода, то может пригодится мой оконный драйвер? Я вот частенько заимствую из OpenSource - не всегда код (и не всегда он сомпилируем на наших слабых машинках) иногда идеи, и не. Мой драйвер теоретически для VT52, но оттуда используется только позиционирование курсора, очистка экрана и собственно вывод на экран - те п\п что у вас уже есть. Драйвер при вводе символа автоматически поддерживает "текстовый экранный буфер" (SCREEN.C), что при окрытии окна требует в 8 раз меньше места для сохранения подоконного содержимого (т.к. сохраняются коды символов, а не память), а при закрытии окна происходит перевывод на экран этого содержимого (при вашей быстрой п\п вывода символа будет очень симпатично, даже на тормозном Орионовском драйвере было терпимо), а самое главное дает оконные функции без переписывания всего экрана и лазания в экранную память в сугубой псевдографике, т.е. аппаратно независимо - хоть на Апогее с его текстовым экраном, хоть на Орионе с его графическим экраном. Написаны оконные функции (WINDOWS.C), несколько базовых контролов (CONTROL.C) поддерживается некая система псевдообъектных сущностей, связанных сообщениями/событиями. Двухпанельный коммандер как с картинки отрисовывался бы вызовом 2-х подпрограмм создания 2-х объектов (собственно такой коммандер на этих библиотеках и сделан - п\п do_menu() в MENU2.C). А все скроллинги внутри контролов уже реализованы, количество столбцов - это тупо свойство и может переключаться и т.п.
    Написано на С. Либа минималистическая (компромисно с удобством), и эффективным компилятором компилируется в несколько килобайт.
    Вложения Вложения
    • Тип файла: zip fat.zip (178.1 Кб, Просмотров: 198)
    Последний раз редактировалось Error404; 03.03.2013 в 00:18.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  5. #135

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию





    Все, с пайкой вроде покончено! Оcталось программы доделать.

    ---------- Post added at 02:17 ---------- Previous post was at 02:11 ----------

    Процессоры кончились Один на 4 компьютера.

    ---------- Post added at 02:19 ---------- Previous post was at 02:17 ----------

    Программатор шьет теперь только флешки на MX28F1000. Жду программатор из Китая.

  6. #136
    HardWareMan
    Гость

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Робяты, а почему вы не хотите сделть отдельный драйвер с быстрым выводом? Допилить его до совместимости с VT52 и пользовать _общий_ драйвер из множества разных программ.
    Я со временем допилю свой вывод до VT52, я уже вроде об этом говорил уже.

  7. #136
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #137

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я посмотрю, даже попытаюсь скомпилировать. Но выводить графику напрямую на экран быстрее, чем через VT52

  9. #138
    HardWareMan
    Гость

    По умолчанию

    Надо определиться6 графику или псевдографику. Второе быстро и через вывод символа.

  10. #139

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Время, время. Сегодня все мои родные заболели гриппом и ушли спать, поэтому у меня появилось время доделать Спец.



    Сделал чтение каталога. Остается это прикрутить к коммандеру.

    Хотя есть еще мысль, сделать стандартные точки входа в BIOS. Запуск программы, чтение файла, чтение каталога. Что бы разделить коммандер и SD-контроллер.

    Код:
    #include <spec/bios.h>
    
    typedef struct {
    	ulong	fsize;		/* File size */
    	ushort	fdate;		/* Last modified date */
    	ushort	ftime;		/* Last modified time */
    	uchar	fattrib;	/* Attribute */
    	char	fname[13];	/* File name */
    } FILINFO;
    
    #define CLC_PORT  (*(char*)0xF001)
    #define DATA_PORT (*(char*)0xF002)
    #define CTL_PORT  (*(char*)0xF003)
    #define CLC_BIT   0x80
    #define SEND_MODE 0x90     // Настройка: 1 0 0 A СH 0 B CL   1=ввод 0=вывод
    #define RECV_MODE 0x99
    
    void pulse() {
      CLC_PORT = CLC_BIT;
      CLC_PORT = 0;
    }
         
    void cmdStart() {
      // Начало передачи
      CTL_PORT = SEND_MODE;
    
      // Передаем код команды
      DATA_PORT = 0x13;
      pulse();
      DATA_PORT = 0xB4;
      pulse();
      DATA_PORT = 0x57;
      pulse();
    }
    
    uchar wait() {
      for(;;) { 
        pulse();
        if(DATA_PORT == 0) continue;
        if(DATA_PORT == 1) return 0;
        return 1;
      }  
    }
    
    uchar openDir(char* path) {
      cmdStart();
    
      // Код команды
      DATA_PORT = 3;
      pulse();
    
      // Передаем путь
      for(;;) {
        DATA_PORT = *path; 
        pulse();
        if(*path==0) break;
        ++path;
      }
    
      // Переключаемся в режим приема
      CTL_PORT = RECV_MODE;
    
      // МК должен ответить кодом 12h
      pulse();
      if(DATA_PORT != 0x12) return 0xEF;
    
      // Ожидание готовности
      if(wait()) return 0xEE;
    
      // Результат выполнения
      pulse();
      return DATA_PORT;
    }
    
    void recvBuffer(void* b, uchar l) {
      while(l) {
        pulse();
        *(uchar*)b = DATA_PORT;
        ++((uchar*)b);
        --l;
      }
    }
    
    uchar readDir(FILINFO* dir) {
      uchar r;
    
      cmdStart();
    
      // Код команды
      DATA_PORT = 4;
      pulse();
    
      // Переключаемся в режим приема
      CTL_PORT = RECV_MODE;
    
      // МК должен ответить кодом 12h
      pulse();
      if(DATA_PORT != 0x12) return 0xEF; // Ошибка
    
      // Ожидание готовности
      if(wait()) return 0xEE; // Ошибка
    
      // МК должен ответить кодом ??
      pulse();
      r = DATA_PORT;
    
      // Принимаем файл
      recvBuffer(dir, sizeof(FILINFO));
    
      // Последний файл
      if(dir->fname[0]==0) return 0xEC;
    
      return r;
    }
    
    void main() {
      FILINFO dir;
      uchar i;
      uchar n;
    
      puts("OPENDIR & READDIR TEST\r\n");
     
      if(i=openDir("")) {
        puts("OPENDIR RESULT ");
        puthex(i);
        puts("\r\n");
        while(1);    
      }
    
      puts("OPENED\r\n");
    
      n=0;  
      for(;;) {
        i=readDir(&dir);
        if(i) break;
        puthex(n);  
        putch(' ');  
        for(i=0; i<13 && dir.fname[i]; ++i) putch(dir.fname[i]);
        for(; i<13; ++i) putch(' ');
        putch(' ');  
        puthex(((char*)&dir.fsize)[3]);  
        puthex(((char*)&dir.fsize)[2]);  
        puthex(((char*)&dir.fsize)[1]);  
        puthex(((char*)&dir.fsize)[0]);  
        putch(' ');  
        puthex(((char*)&dir.fdate)[1]);  
        puthex(((char*)&dir.fdate)[0]);  
        putch(' ');  
        puthex(((char*)&dir.ftime)[1]);  
        puthex(((char*)&dir.ftime)[0]);  
        putch(' ');  
        puthex(dir.fattrib);  
        puts("\r\n");  
        ++n;
      }
    
      puts("READDIR RESULT ");
      puthex(i);
      puts("\r\n");
    
      while(1);    
    }

  11. #140

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Сделал чтение каталога. Остается это прикрутить к коммандеру.

    Хотя есть еще мысль, сделать стандартные точки входа в BIOS. Запуск программы, чтение файла, чтение каталога. Что бы разделить коммандер и SD-контроллер.
    Собственно, это и будет операционная система, пускай и в первом приближении. А раз речь зашла об операционной системе, то может выбрать из имеющихся и допилить к ним BIOS с новыми фишками? Хоть какая-то совместимость с чем-то получится.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

Страница 14 из 22 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Восстановление Scorpion ZS-256
    от AlexMik в разделе Scorpion
    Ответов: 127
    Последнее: 15.08.2013, 19:30
  2. восстановление Орион-128
    от sergey2b в разделе Орион
    Ответов: 1
    Последнее: 05.02.2011, 15:32
  3. Восстановление ПК Мастер-128
    от PKZX в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 3
    Последнее: 13.03.2010, 22:10
  4. Хочу выслушать мнения специалистов...
    от ILoveSpeccy в разделе Музыка
    Ответов: 23
    Последнее: 29.08.2008, 04:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •