Важная информация

User Tag List

Показано с 1 по 5 из 5

Тема: Библиотека Си для Апогея.

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

    По умолчанию Библиотека Си для Апогея.

    Я тут придумал грамотно оформить функции для компилятора 8080. И сразу встал вопрос с названиями. Общих функций у стандартной библиотеки Си и у Апогея оказалось на так много.

    Пока что вот моё предложение. Мои мысли. Принимаю критику

    Мне нравится писать loadTape, но если подобная функция есть в Си, то пишем её как в Си. То есть исключительно маленькими буквами и хрен поймешь что. (_tcscmp например)

    Код:
    // Коды клавиш
    
    #define KEY_LEFT  8
    #define KEY_RIGHT 0x18
    #define KEY_UP    0x19
    #define KEY_DOWN  0x1A
    #define KEY_SPACE 0x20
    
    // BIOS компьютера 86РК
    
    char reboot()                                  = "86rk/reboot.c";                // F800 Перезагрузка
    char getch()                                   = "86rk/getch.c";                 // F803 Ввод символа с клавиатуры с ожиданием
    char getTape(char syncFlag)                    = "86rk/gettape.c";               // F806 Чтение байта с магнитофона (FF - с поиском синхробайта, 08 - без поиска синхробайта)
    void putch(char c)                             = "86rk/putch.c";                 // F809 Вывод символа на экран
    void putTape(char c)                           = "86rk/puttape.c";               // F80C Запись байта на магнитофон
    char kbhit()                                   = "86rk/kbhit.c";                 // F812 Опрос состояния клавиатуры (FF - ни одна клавиша не нажата)
    void puthex(char)                              = "86rk/puthex.c";                // F815 Вывод на экран 16-ричного числа
    void puts(const char*)                         = "86rk/puts.c";                  // F818 Вывод на экран текстовой строки
    char bioskey()                                 = "86rk/bioskey.c";               // F81B Опрос состояния клавиатуры 2 (FF - ни одна клавиша не нажата, FE - нажата клавиша РУС/ЛАТ, иначе A - код клавиши)
    int  wherexy()                                 = "86rk/wherexy.c";               // F81E Запрос положения курсора(Н - номер строк, L - номер позиции)
    char getCharFromCursor()                       = "86rk/getcharfromcursor.c";     // F821 Запрос символа под курсором
    void loadTape(void* start)                     = "86rk/loadtape.c";              // F824 Чтение блока с магнитофона (НЕ ВСЕ АРГУМЕНТЫ ВОЗВРАЩАЮТСЯ)
    void saveTape(void* start, void* end, int crc) = "86rk/savetape.c";              // F827 Вывод блока на магнитофон
    int  crcTape(void* start, void* end)           = "86rk/crctape.c";               // F82A Подсчет контрольной суммы блока
    void initVideo()                               = "86rk/initvideo.c";             // F82D Инициализация видеоконтроллера
    int  getMemTop()                               = "86rk/getmemtop.c";             // F830 Запрос верхней границы доступной памяти
    void setMemTop(int)                            = "86rk/setmemtop.c";             // F833 Установка верхней границы доступной памяти
    
    // Расширение BIOS компьютера Апогей БК01
    
    void putTapeMSX(char c)                        = "apogey/puttapemsx.c";            // F003 Запись байта в формате MSX на магнитофон
    int  getTapeMSX()                              = "apogey/gettapemsx.c";            // F006 Чтение байта в формате MSX с магнитофона (если была ошибка, то H=1)
    void saveTapeMSX(void* start, void* end)       = "apogey/savetapemsx.c";           // F009 Запись блока в формате MSX на магнитофон
    char loadTapeMSX(void* start, void* end)       = "apogey/loadtapemsx.c";           // F00С Чтение блока в формате MSX с магнитофона (если была ошибока, то результат не ноль)
    void putTapeLongMarkerMSX()                    = "apogey/puttapelongmarkermsx.c";  // F00F Запись длинного маркера MSX
    void putTapeShortMarkerMSX()                   = "apogey/puttapeshortmarkermsx.c"; // F012 Запись коротного маркера MSX
    void getTapeLongMarkerMSX()                    = "apogey/gettapelongmarkermsx.c";  // F015 Чтение длинного маркера MSX
    
    // Эмуляция стандартной библиотеки Си
    
    char wherex()                                  = "86rk/wherex.c";             // F81E Положение курсора по оси X = (char)wherexy()
    char wherey()                                  = "86rk/wherey.c";             // F81E Положение курсора по оси Y = (char)(wherexy()>>8)
    void gotoxy(char,char)                         = "86rk/gotoxy.c";             // F809 Переместить курсор в коодринаты = putch(0x1B, 'Y', y+0x20, x+0x20)
    void clrscr()                                  = "86rk/clrscr.c";             // F809 Очистить экран = putch(0x1F)
    Код:
    #define SET_SOUND(CH, FREQ) { ((uchar*)0xEC00)[CH] = (uchar)(FREQ); ((uchar*)0xEC00)[CH] = (FREQ)>>8; }
    
    #define MUTE_SOUND(CH) { *(uchar*)0xEC03 = ((CH)==0 ? 0x3E : ((CH)==1 ? 0x7E : 0xBE)); }
    Код:
    void apogeyScreen0 () = "apogey/apogeyscreen0.c";  // 64x25, атрибут это пробел,  BPL=78, без EOL, с межстрочным отступом, без экономии, совместим с монитором
    void apogeyScreen0b() = "apogey/apogeyscreen0b.c"; // 64x25, 0-5 скрытых атрибут, BPL=78, EOL, с межстрочным отступом, без экономии, совместим с монитором	
    void apogeyScreen1 () = "apogey/apogeyscreen1.c";  // 64x25, атрибут это пробел,  BPL=78, без EOL, совместим с монитором, без экономии
    void apogeyScreen1b() = "apogey/apogeyscreen1b.c"; // 64x25, 0-5 скрытых атрибут, BPL=78, EOL, совместим с монитором, без экономии
    void apogeyScreen2a() = "apogey/apogeyscreen2a.c"; // 64x30, атрибут это пробел,  BPL=75, EOL
    void apogeyScreen2b() = "apogey/apogeyscreen2b.c"; // 64x30, 0-5 скрытых атрибут, BPL=78, EOL, использует основное ОЗУ
    void apogeyScreen2c() = "apogey/apogeyscreen2c.c"; // 64x30, 16  скрытых атрибут, BPL=94, без EOL, использует основное ОЗУ
    void apogeyScreen3a() = "apogey/apogeyscreen3a.c"; // 64x51, атрибут это пробел,  BPL=75, EOL, использует основное ОЗУ
    void apogeyScreen3b() = "apogey/apogeyscreen3b.c"; // 64x51, 1-5 скрытых атрибут, BPL=78, EOL, использует основное ОЗУ
    void apogeyScreen3c() = "apogey/apogeyscreen3c.c"; // 64x51, 16  скрытых атрибут, BPL=94, без EOL, использует основное ОЗУ
    
    // функции вывода текста на экран
    
    void print(uchar x, uchar y, char* text)             = "apogey/print.c";
    void printn(uchar x, uchar y, char* text, uchar len) = "apogey/printn.c";
    void printcn(uchar x, uchar y, char c, uchar len)    = "apogey/printcn.c";
    
    // Ожидание КСИ
    
    void waitHorzSync()                                  = "apogey/waithorzsync.c";
    Последний раз редактировалось vinxru; 16.12.2012 в 00:13.

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

  3. #2
    Member
    Регистрация
    25.06.2009
    Адрес
    Таганрог
    Сообщений
    151
    Благодарностей: 94
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    чаще всего в Си названия функций делают маленькими буквами, слова разделяются подчеркиваниями
    например, load_tape()
    слова желательно не сокращать или сокращать понятно
    ZX Spectrum 48 issue 2, A600, Балтика, Commodore 64 + 1541-II

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

    По умолчанию

    ИМХО name_name больше относится к ядру Linux. Ядро же Windows использует имена NameName.

    А в библиотеках стандартного Си нет почти ни подчеркаваний в центре, ни заглавных букв.

  5. #4
    Member
    Регистрация
    25.06.2009
    Адрес
    Таганрог
    Сообщений
    151
    Благодарностей: 94
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    четких стандартов нет, все на усмотрение автора. На фирмах обычно выпускают стандарт предприятия с требованиями - в том числе выбирают NameName или name_name Чтобы код сотрудников легче сопровождать было
    У меня лежит два неисправных Апогея, появилась желание поскорее починить. А под какой компилятор библиотеки?
    ZX Spectrum 48 issue 2, A600, Балтика, Commodore 64 + 1541-II

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

    По умолчанию

    Под свой. Я его сильно оптимизирую под 8080 архитектуру, поэтому даже в Си есть некоторые отличия.

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

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

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

Похожие темы

  1. Графическая библиотека
    от alone в разделе Программирование
    Ответов: 81
    Последнее: 31.01.2016, 21:37
  2. Библиотека нужных процедур для написания демо
    от GM BIT в разделе Программирование
    Ответов: 297
    Последнее: 14.02.2014, 08:47
  3. Орион в корпусе от Апогея.
    от vinxru в разделе Орион
    Ответов: 5
    Последнее: 01.02.2013, 21:46
  4. Продам 2 Апогея + программатор к ним
    от shapipovo в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 11.09.2010, 14:01
  5. библиотека на форум
    от sevol в разделе Форум
    Ответов: 4
    Последнее: 26.06.2010, 08:06

Ваши права

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