Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Swirl by k06a
- ; Dedicated to my wife 9ka
- org 100h
- main:
- mov di, kruch
- ; ????????? ????? ?????? 320x200x256
- mov al, 13h
- int 10h
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; ?????????? ??? ????? ?????? ????????? ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- paint:
- push cx
- ; ??????? ES ????????? ?? ???????????
- push 0A000h
- pop es
- mov bh, 0FAh ;mov bx, 320*200
- mov ax, 100
- lp1:
- mov cx, 160
- lp2:
- ; ?????? ? DX ????? ??????? ?? K1
- push ax cx
- imul ax
- xchg ax, cx
- imul ax
- add ax, cx
- div word [di]
- push ax
- mov si,sp
- ; ?????? ? [sin] ??????? ???? ?? K2
- fninit
- fild word [si+4] ; COS
- fild word [si+2] ; SIN
- fpatan
- fimul word [di+vnum-kruch]
- fmul dword [di+glad-kruch]
- fiadd word [si]
- fist word [si]
- pop dx
- pop cx ax
- ; ?????? ???????
- dec bx
- mov byte [es:bx], dl
- dec cx
- cmp cx, -160
- jg lp2
- dec ax
- cmp al, -100
- jg lp1
- pop cx
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; ??????????? ????? ???????
- ; CL - ???????, ???????? ??????? ?? ?????
- ; CH - ?????!!! ???????? ????????
- loop_pal_out:
- add cl, ch ; [DELTA]
- ;;;;;;;;;;;;;;;;;;;;;;;;
- ; CL - Cycled Shifting ;
- ; AL := 0, AH := XXh ;
- ;;;;;;;;;;;;;;;;;;;;;;;;
- setPalette:
- mov al, 0 ; ??? ????????? ?????
- setPalette_loop:
- mov ah, al
- cmp al, 0 ; was ah!!
- jl no_inv
- not ah
- no_inv:
- shr ah, 1
- ;call setColor
- ;;;;;;;;;;;;;;;;;;;;;;;;
- ; AL - ????? ? ??????? ;
- ; AH - Grayscale color ;
- ;;;;;;;;;;;;;;;;;;;;;;;;
- setColor:
- pusha
- add al, cl ; + ??????
- mov dx, 03c8h
- out dx, al
- inc dx
- mov cx, 3
- mmm:
- mov al, ah
- and al, byte [di+RRR-kruch]
- out dx, al
- inc di
- loop mmm
- popa
- ;;;;;;;;;;;;;;;;;;;;;;;;
- inc al
- jnz setPalette_loop
- ;;;;;;;;;;;;;;;;;;;;;;;;
- ; ???????? ?? ??????? ???????
- mov ah, 0Bh ; AX := 0B00h
- int 21h
- cmp al, 0ffh
- jmp_loop_pal_out:
- jne loop_pal_out
- ; ??????? ???????
- mov ah, 08h
- int 21h
- label_push_space:
- cmp al, ' '
- jne label_push_left
- mov ch, 0
- label_push_left:
- cmp al, 75
- jne label_push_right
- dec ch
- label_push_right:
- cmp al, 77
- jne label_push_down
- inc ch
- label_push_down:
- cmp al, 80
- jne label_push_up
- dec word [di]
- jnz paint_me
- inc_kruch_paint_me:
- inc word [di]
- paint_me:
- jmp paint
- label_push_up:
- cmp al, 72
- je inc_kruch_paint_me
- label_push_R:
- cmp al, 'r'
- jne label_push_G
- not byte [di+RRR-kruch]
- label_push_G:
- cmp al, 'g'
- jne label_push_B
- not byte [di+GGG-kruch]
- label_push_B:
- cmp al, 'b'
- jne label_push_digit
- not byte [di+BBB-kruch]
- label_push_digit:
- sub al, '0'
- cmp al, 9
- ja label_push_esc
- mov byte [vnum], al
- jmp paint_me
- label_push_esc:
- cmp al, 27-'0'
- jne jmp_loop_pal_out
- ret
- ;main endp
- RRR db 0
- GGG db 255
- BBB db 0
- glad dd 40.75 ; 163/4
- vnum dw 3
- kruch dw 13
- ;sign db 'Dedicated to my wife 9'
Add Comment
Please, Sign In to add comment