Программирование на Си в MS-DOS

Всё, что касается программирования на старых языках или для старых систем

Re: Программирование на Си в MS-DOS

Сообщение uav » 07 авг 2026, 19:00

Prizrak писал(а):Вы имеете в виду Паскаль? Там-то именно sound и nosound...

Так в Borland'овских компиляторах C аналогично, вот скриншот справки Turbo C 2.00:
tc_000.png
tc_000.png (6.64 Кб) Просмотров: 2517

В принципе, особой разницы при работе с PC Speaker в Turbo C и Turbo Pascal в этом отношении нет.
Prizrak писал(а):В той программе есть прямые обращения к API спикера?

Я бы не назвал это API, это прямое программирование микросхем PPI и системного таймера.
Аватара пользователя
uav
Мастер Даунгрейда
 
Сообщения: 3365
Зарегистрирован: 22 дек 2008, 14:21

Re: Программирование на Си в MS-DOS

Сообщение Prizrak » 07 авг 2026, 20:38

uav писал(а):
Prizrak писал(а):Вы имеете в виду Паскаль? Там-то именно sound и nosound...

Так в Borland'овских компиляторах C аналогично, вот скриншот справки Turbo C 2.00:
В принципе, особой разницы при работе с PC Speaker в Turbo C и Turbo Pascal в этом отношении нет.
Prizrak писал(а):В той программе есть прямые обращения к API спикера?

Я бы не назвал это API, это прямое программирование микросхем PPI и системного таймера.

А, понятно: это удобно, не надо учить лишнюю семантику...

Это тоже своего рода API, насколько я понимаю, только уже микросхемы и таймера, точнее специальный ассемблер, напоминающий ассемблер встраиваемых систем всякой электро-механики и электро-техники (не важно, как именно это реализовано на уровне инструкций C), только он не какие-нибудь механические или термодинамические операции совершает, а чисто электронные...
Аватара пользователя
Prizrak
Мастер Даунгрейда
 
Сообщения: 398
Зарегистрирован: 09 окт 2024, 19:20
Откуда: Минск
Железо: Ноутбук HP, планшетник Android

Re: Программирование на Си в MS-DOS

Сообщение .::. Typucm .::. » 10 авг 2026, 23:35

Самый необычный пример применения спикера. MIDI-плеер с собственным синтезатором; lxmidi 1.71 из 1998 года, для HP 100LX/200LX работавших под MS-DOS. Исходный код прилагается, С+ASM.

Для тестов - можно запустить demo.bat (сконвертируется файл zelda.mid), а go.bat использовать совместно с названием файла (можно без расширения), например go indiana. Программа работает с базовой памятью (для данных доступно всего 512кб), поэтому в случае навороченного полноценного мидифайла ресурсов у плеера может не хватить чтобы воспроизвести все нотные такты и звучать всеми доступными голосами для синтезатора. Банк муз.инструментов есть и они слышны, то есть не один бипер-бипером звучит, но еще с иммитацией инструментов General MIDI.
Вложения
lxmidi.zip
(253.61 Кб) Скачиваний: 42
«Не стесняйтесь думать. Неэффективно пытаться помочь людям, которые не желают помогать себе сами. Нормально чего-то не знать, прикидываться идиотом — нет.» (Слава С.ПО.)
Аватара пользователя
.::. Typucm .::.
ㅤ
 
Сообщения: 1032
Зарегистрирован: 28 янв 2022, 22:43

Re: Программирование на Си в MS-DOS

Сообщение IBMForever » 18 авг 2026, 11:14

В интернете нашёл интересную звуковую программу на спикер:
Sound.c
 Развернуть:
/*This program Displays Colourful Characters in Text Mode
and Initialises speaker & Plays Sound of Random Frequencies.
Program contributed by: Akhilesh Dhar Dubey */
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
int count=50;
clrscr();
while(count--)
{
sound(10*random(100));
delay(75);
nosound();
textattr(random(16)+'a'+BLINK);
cprintf("*");
}
}

Если запустить в DosBox скомпилированный exe файл, можно услышать мелодию и увидеть появляющиеся разноцветные символы.
Аватара пользователя
IBMForever
Мастер Даунгрейда
 
Сообщения: 323
Зарегистрирован: 24 авг 2022, 00:23
Железо: IBM PC 286 AT

Re: Программирование на Си в MS-DOS

Сообщение IBMForever » 02 окт 2026, 16:46

Обычно команды препроцессора заканчиваются расширением .h. Однако в книге встретилось расширение .с :
# include "fil2.c" Это опечатка или же можно и с расширением .с проограммировать на Си?
Аватара пользователя
IBMForever
Мастер Даунгрейда
 
Сообщения: 323
Зарегистрирован: 24 авг 2022, 00:23
Железо: IBM PC 286 AT

Re: Программирование на Си в MS-DOS

Сообщение StoYazykov » 02 окт 2026, 17:26

Размер расширение не имеет значения :)
Можно назвать как угодно. Хоть .exe... (если там будет Сишный код).
Так-то да, можно.
Самое тёмное дело - это строки в C

Объектно-ориентированное программирование -- метод изготовления граблей по принципу матрешки.


Изображение / Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 374
Зарегистрирован: 25 дек 2023, 11:25
Откуда: Казань
Железо: Intel Pentium MMX 166 MHz, 8 и 2 ГБ HDD, 80 MB RAM; AMD A8-6410 APU with Radeon R5 Graphics, 16 ГБ

Re: Программирование на Си в MS-DOS

Сообщение Barvinok » 02 окт 2026, 17:53

Если любите бардак, назовите краковяк. В книге может опечатка, или мысли бездны длань.
Barvinok
Мастер Даунгрейда
 
Сообщения: 130
Зарегистрирован: 29 июл 2025, 12:25

Re: Программирование на Си в MS-DOS

Сообщение Ayola » 03 окт 2026, 12:47

IBMForever писал(а):Обычно команды препроцессора заканчиваются расширением .h. Однако в книге встретилось расширение .с :
# include "fil2.c" Это опечатка или же можно и с расширением .с проограммировать на Си?



на самом деле обычно .h это макросы и декларации прототипов функций
в .c обычно содержатся сами функции, но,
никто не мешает поступать 1) не так
2) вместо прототипов включать сам код (особенно для маленьких проектов, где бардак можно контролировать без особого труда))

3) вариант конкатенации, когда практически весь проект объединяют в один файл и компилируют одной командой, получая так называемую "амальгамацию" или jumbo-build
использовалось ранее в KDE (0.9 - 1.x - возможно 2.x), используется сейчас в sqlite, firefox, webkit-gtk
разумеется ни один компьютер пока не соберет firefox или webkit-gtk из одного исходника, там потребление памяти будет колоссально и преимущества от многоядерности - ноль, но там делается группировка файлов и вместо тысяч вызовов компилятора получается несколько сотен, что заметно ускоряет процесс.
Вариант не особенно для DOS, т.к. конкатенация - памятезатратна, но по мелочи можно сделать, например включить какую-то библиотеку в виде исходника как один .c файл
у каждого программиста есть свой "велосипед" с функциями, вот можно его таким образом включить, не вынося компиляцию отдельно или компоновку
Аватара пользователя
Ayola
Матерый даунгрейдер
 
Сообщения: 95
Зарегистрирован: 02 май 2026, 10:58

Пред.

Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1