Демки для DOS

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

Демки для DOS

Сообщение StoYazykov » 25 авг 2026, 13:31

Демки для DOS'а на ассемблере.
Что такое демка - это программа, которая делает максимально красивую и богатую картинку (или что-то иное), и при этом, очень мало весит.

Альтернативная страница: http://pmmx166.byethost8.com/?page=intro




Muching Squares (60 байт)

Изображение
Демка даёт красивое движущееся изображение, что-то вроде мозаики.

Изображение



Blink (16 байт)

Демка просто мерцает всеми 256-ю цветами. Прикол в том, что она умещается в 16 байт.
Изображение

Изображение



Snow (52/54 байт)

Демка показывает падающий снег. По умолчанию (снег белый) она весит 54 байта. Если же закомментировать инструкцию mov al, 0Fh, то снег будет цветным и демка будет весить соответственно 52 байта.
Изображение

Изображение


Ocean (56 байт)
Эта демка при работе даёт тёмно-синий и чёрный "шум" на экране. Если издали посмотреть, можно заметить как будто плавающий "планктон" в тёмно-синей воде.
Размер её в скомпилированном виде - всего 56 байт (за счёт самомодификации).

Первая моя работа в демосцене...

Изображение

Изображение
Последний раз редактировалось StoYazykov 30 авг 2026, 14:28, всего редактировалось 5 раз(а).
Самое тёмное дело - это строки в C

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

http://revival.narod.ws

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

Демка - подводный мир

Сообщение StoYazykov » 25 авг 2026, 13:33

Эта демка при работе даёт тёмно-синий и чёрный "шум" на экране. Если издали посмотреть, можно заметить как будто плавающий "планктон" в тёмно-синей воде.
Размер её в скомпилированном виде - всего 56 байт (за счёт самомодификации)!
Демка работает из-под DOS'а.
ПРЕДУПРЕЖДЕНИЕ! Выйти из демки невозможно - для добавления возможности выхода, потребовалось бы побольше байт.

Код: Выделить всё
org 100h
mov al, 13h
int 10h
push 0A000h
pop es
a:
mov ax, 0A89Eh
rol ax, 1
add ax, 0ABCDh
mov [a+1], ax
xor dx, dx
mov cx, 141h
div cx
mov di, dx
mov ax, [a+1]
shr ax, 1
xor dx, dx
mov bx, 00C8h
div bx
xchg ax, dx
mov bx, 140h
mul bx
add di, ax
in al, 40h
shr al, 7
stosb
jmp a
Последний раз редактировалось StoYazykov 25 авг 2026, 16:36, всего редактировалось 1 раз.
Самое тёмное дело - это строки в C

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

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 297
Зарегистрирован: 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: Демки для DOS

Сообщение iAPX286 » 25 авг 2026, 15:50

Аватара пользователя
iAPX286
Опытный даунгрейдер
 
Сообщения: 43
Зарегистрирован: 09 фев 2026, 01:59

Падал белый (или разноцветный) снег...

Сообщение StoYazykov » 26 авг 2026, 07:18

Демка - падающий снег.
Занимает 54 байта, если закомментировать инструкцию mov al, 0Fh - снег будет разноцветным, но зато будет весить уже 52 байта! :lol:
Работает очень просто - на первой строке рисуются белые точки по псевдослучайному X, потом вся видеопамять сдвигается на 320 байт, и верхняя строка затирается (чтобы были не струи, а снег).

Код: Выделить всё
org 100h
mov al, 13h
int 10h
mov    ax,    0A000h
mov    ds,    ax
mov    es,    ax
cycle:
in    al,   40h
rol    ax,    04h
xor    dx,   dx
mov   bx,    141h
div    bx
mov    bx,    dx
mov    al,    0Fh ; если эту инструкцию закомментировать,
; снег будет разноцветным, и сэкономится 2 байта :)
mov    [es:bx],al
mov    si,    0F8BFh
mov    di,    0F9FFh
mov    cx,    0F8C0h
std
rep    movsb
cld
xor    di,    di
xor    al,    al
mov    cx,    320
rep    stosb
jmp    cycle
Самое тёмное дело - это строки в C

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

http://revival.narod.ws

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

Blink - мерцание

Сообщение StoYazykov » 26 авг 2026, 16:21

Просто мерцание экрана всеми 256 цветами. Занимает ровно 16 байт :lol: и так же не имеет возможности выйти.
Код: Выделить всё
org 100h
mov al, 13h
int 10h
push 0A000h
pop es
a:
mov ch, 0FAh
inc al
rep stosb
jmp a
Самое тёмное дело - это строки в C

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

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 297
Зарегистрирован: 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: Демки для DOS

Сообщение iAPX286 » 27 авг 2026, 01:58

Попробовал написать munching squares в 13h режиме, примерно наполовину понимая, что делаю :mrgreen:
Я почти ничего на асме не писал, поэтому пришлось много искать инфу в интернете в процессе.
Долго не мог понять, почему у меня весь экран не зарисовывается, как ни позорно пришлось спросить LLM что не так в том месте (я запускал в обычном DOSBox, там нет дебаггера никакого типа регистры посмотреть), оказалось что DX, который я использовал для Y координаты, MUL изменяет...
Ассемблится NASM. Надо будет потом попробовать палитру зациклить или еще что :D
Код: Выделить всё
cpu 8086

org 100h

mov ax, 0013h
int 10h

mov ax, 0A000h
mov es, ax

mov cx, 0

draw_y:

mov bx, 0

draw_x:

mov ax, cx
mov si, 320
mul si
add ax, bx
mov di, ax

mov ax, bx
xor ax, cx
mov [es:di], ax

inc bx
cmp bx, 320
jl draw_x

inc cx
cmp cx, 200
jl draw_y

main_loop:

mov ah, 01h
int 16h
jz main_loop

mov ax, 0003h
int 10h

int 20h
Последний раз редактировалось iAPX286 27 авг 2026, 02:06, всего редактировалось 2 раз(а).
Аватара пользователя
iAPX286
Опытный даунгрейдер
 
Сообщения: 43
Зарегистрирован: 09 фев 2026, 01:59

Демка - Munching Squares

Сообщение StoYazykov » 27 авг 2026, 09:28

squares.zip
(6.39 Кб) Скачиваний: 254587

Движущаяся версия.
(как по мне - or ax, cx красивее, чем xor).

Добавил на Pouet: https://www.pouet.net/prod.php?which=106906
P. S. Если после xor сделать ещё sub - движение будет по горизонтали, слева направо.

Режим XOR:
Изображение
Режим XOR+SUB:
Изображение
ЗЫ: Выложил на pouet.net - https://www.pouet.net/prod.php?which=106906
Код: Выделить всё
org    100h
mov    al,    13h ; short analog of mov ax, 0013h, ah=00h
int    10h        ; set video mode
push    0A000h      ; set video segment (A000h)
pop    es
; drawing squares...
DrawY:          ; vertical
xor    bx,    bx
mov    di,    si
DrawX:          ; horizontal
mov    ax,    bx
xor    ax,    cx  ; XOR MODE
;sub    ax,    cx  ; uncomment for horizontal animation
stosb          ; write pixel
inc    bx       ; increment X counter
cmp    bx,    320 ; check of line end
jl    DrawX       ; if BX<320, continue drawing next pixel

add    si,    320 ; next line
inc    cl       ; short analog of inc cx
cmp    cl,    200 ; check of screen end
jb    DrawY       ; if CL<200, drawing next line

; animation.

Anim:
mov    dx,    3C8h ; change color
mov    al,    00h  ; color 0
out    dx,    al   ; change
inc    dx         ; dx=3C9h, change RGB (0-64)
mov    ch,    1    ; short analog of mov cx, 01??h, in CL garbage,
           ; but whatever - CL (color index) anyway in 0-FF :)
AnimLoop:
mov    al,    cl
add   ax,    bp   ; phase
out    dx,    al   ; select R
shr    al,    1    ; right-shift R value
out    dx,    al   ; select G
shr    ax,    1    ; right-shift G value
out    dx,    al   ; select B
loop    AnimLoop
inc    bp        ; increment phase
jmp    Anim
Последний раз редактировалось StoYazykov 30 авг 2026, 13:29, всего редактировалось 8 раз(а).
Самое тёмное дело - это строки в C

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

http://revival.narod.ws

Изображение
Аватара пользователя
StoYazykov
Мастер Даунгрейда
 
Сообщения: 297
Зарегистрирован: 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: Демки для DOS

Сообщение iAPX286 » 27 авг 2026, 16:50

StoYazykov писал(а):Движущаяся версия.

Прикольно :) С автоматическими циклами в DOSBox работает намного быстрее, чем демки со снегом/шумом/мерцанием цветами, пришлось уменьшать циклы :)

StoYazykov писал(а):(как по мне - or ax, cx красивее, чем xor).

Еще AND можно :)
Аватара пользователя
iAPX286
Опытный даунгрейдер
 
Сообщения: 43
Зарегистрирован: 09 фев 2026, 01:59


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

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

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