Monday, June 20, 2011

Wacom tablet

At last I decided to buy a tablet for drawing. My hands are, of course, from wrong place to grow, but I'm still happy =)) Easy stuff, get used quickly, but needs a place to work. And I have drawn some trash within 10 minutes. My patience goes out fast when dealing with uncertain objects, engineering experience and years of work in vector editors affects.

Friday, June 10, 2011

Шахматные роботы =)

Поностальгировал. Запустил из-под дос-бокса игрушку, которую я писал в школе еще, в 1998 году. На, прости господи, бейсике. Работает! Роботы ходят, стреляют, шахматные правила там анализируются, даже рекордер есть и проигрыватель.



UPD. 11/Jun/2010.
Из той же оперы первая демка на ассемблере... 2229 байт =) На первом курсе универа.


Можно даже все два килобайта машинного кода распечатать, на страницу a4 поместятся.

Оттуда, мега-крутой алгоритм сжатия картинки =)))

UnPack macro
; Макрос восстанавливает рисунок из сжатого состояния.
mov bx,offset picture
mov si,offset pack
mov dh,y ; Принцип работы:
mov dl,halfx ; Каждая последовательность пикселов
goloop: mov al,[si] ; представляется в виде байта (!)
mov ah,al ; где старшие 4 бита указывают на
mov cl,4 ; длину последовательности, а младшие
shr ah,cl ; - на цвет. Причем цвет надо еще
mov cl,ah ; умножить на 4 чтобы получить весь
and al,0fh ; диапазон (исключая не кратные 4).
shl al,1 ; Таким образом, максимальная длина
shl al,1 ; последовательности = 15, но для
sml: mov [bx],al ; указания последовательности большей
inc bx ; длины можно использовать два байта.
dec dl
jnz nxl
mov dl,halfx ; Процедура оставляет место
add bx,halfx ; в памяти для работы Mirror.
dec dh
jz ext
nxl: loop sml
inc si
jmp goloop
ext: Mirror ; Делаем зеркальное отображение.
endm