media/paint: Post-SVN tidy
- Move source code from `trunk` into root directory. - Update ASM include paths. - Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden.
This commit is contained in:
@@ -1,331 +1,337 @@
|
|||||||
;*********************************
|
; SPDX-License-Identifier: NOASSERTION
|
||||||
;* *
|
;
|
||||||
;* PAINT 0.02 ¤«ï MenuetOS *
|
|
||||||
;* *
|
; Text encoded with Code Page 866 - Cyrillic
|
||||||
;* Š®¬¯¨«¨à®¢ âì FASM'®¬ *
|
|
||||||
;* *
|
|
||||||
;*********************************
|
;*********************************
|
||||||
|
;* *
|
||||||
;******************************************************************************
|
;* PAINT 0.02 ¤«ï MenuetOS *
|
||||||
; <20>âã ¯à®£à ¬¬ã ¥ 㦮 á¥à쥧® à áᬠâਢ âì - íâ® ¢á¥£® «¨èì ¯à¨¬¥à,
|
;* *
|
||||||
; ¢ ª®â®à®¬ ¯®ª § ®, ª ª à ¡®â âì á ¥ª®â®à묨 á¨á⥬묨 äãªæ¨ï¬¨ Œ¥Ž‘,
|
;* Š®¬¯¨«¨à®¢ âì FASM'®¬ *
|
||||||
; ® ¨ª ª ¥ ®à¬ «ìë© £à ä¨ç¥áª¨© । ªâ®à. Š®¤ ¯à®£à ¬¬ë Ž—…<E28094>œ ¯à®á⮩,
|
;* *
|
||||||
; ¨ ® ¯à¥¤ § ç¥ ¤«ï â¥å, ªâ® ⮫쪮 ç¨ ¥â ¨§ãç âì áᥬ¡«¥à,
|
;*********************************
|
||||||
; ¯®í⮬ã ï áâ६¨«áï ᤥ« âì ¥£® ª ª ¬®¦® ¡®«¥¥ ¯®ïâë¬.
|
|
||||||
; ’¥¬ ¥ ¬¥¥¥, ª®¤ ¤®¢®«ì® ¥¯«®å® ®¯â¨¬¨§¨à®¢ , å®âï íâ® ¥¬®£®
|
;******************************************************************************
|
||||||
; ¬®¦¥â § âà㤨âì ¥£® ¯®¨¬ ¨¥. Ÿ ¯®áâ à «áï âé â¥«ì® ¯à®ª®¬¬¥â¨à®¢ âì
|
; <EFBFBD>âã ¯à®£à ¬¬ã ¥ 㦮 á¥à쥧® à áᬠâਢ âì - íâ® ¢á¥£® «¨èì ¯à¨¬¥à,
|
||||||
; á«®¦ë¥ ¬¥áâ . Šáâ â¨, ¨¤¥ï ¯à®£à ¬¬ë ¯à¨ ¤«¥¦¨â ¥ ¬¥, Sniper'ã, ¤«ï
|
; ¢ ª®â®à®¬ ¯®ª § ®, ª ª à ¡®â âì á ¥ª®â®à묨 á¨á⥬묨 äãªæ¨ï¬¨ Œ¥Ž‘,
|
||||||
; ª®â®à®£® ¢®¡é¥¬-â® ¢á¥ ¨ ¯¨á «®áì.
|
; ® ¨ª ª ¥ ®à¬ «ìë© £à ä¨ç¥áª¨© । ªâ®à. Š®¤ ¯à®£à ¬¬ë Ž—…<E28094>œ ¯à®á⮩,
|
||||||
; “¤ ç¨ ¢ ¨§ã票¨ ᬠ!
|
; ¨ ® ¯à¥¤ § ç¥ ¤«ï â¥å, ªâ® ⮫쪮 ç¨ ¥â ¨§ãç âì áᥬ¡«¥à,
|
||||||
; ˆ¢ <20>®¤¤ã¡ë©, ivan-yar@bk.ru
|
; ¯®í⮬ã ï áâ६¨«áï ᤥ« âì ¥£® ª ª ¬®¦® ¡®«¥¥ ¯®ïâë¬.
|
||||||
;******************************************************************************
|
; ’¥¬ ¥ ¬¥¥¥, ª®¤ ¤®¢®«ì® ¥¯«®å® ®¯â¨¬¨§¨à®¢ , å®âï íâ® ¥¬®£®
|
||||||
|
; ¬®¦¥â § âà㤨âì ¥£® ¯®¨¬ ¨¥. Ÿ ¯®áâ à «áï âé â¥«ì® ¯à®ª®¬¬¥â¨à®¢ âì
|
||||||
; <EFBFBD>®¤ª«îç ¥¬ ¥®¡å®¤¨¬ë¥ ¬ ªà®áë
|
; á«®¦ë¥ ¬¥áâ . Šáâ â¨, ¨¤¥ï ¯à®£à ¬¬ë ¯à¨ ¤«¥¦¨â ¥ ¬¥, Sniper'ã, ¤«ï
|
||||||
include '../../../macros.inc'
|
; ª®â®à®£® ¢®¡é¥¬-â® ¢á¥ ¨ ¯¨á «®áì.
|
||||||
|
; “¤ ç¨ ¢ ¨§ã票¨ ᬠ!
|
||||||
;******************************************************************************
|
; ˆ¢ <20>®¤¤ã¡ë©, ivan-yar@bk.ru
|
||||||
|
;******************************************************************************
|
||||||
; <20>€—€‹Ž <20><>Žƒ<C5BD>€ŒŒ›
|
|
||||||
use32
|
; <20>®¤ª«îç ¥¬ ¥®¡å®¤¨¬ë¥ ¬ ªà®áë
|
||||||
org 0x0
|
include '../../macros.inc'
|
||||||
db 'MENUET01' ; 8 byte id
|
|
||||||
dd 0x01 ; title version
|
;******************************************************************************
|
||||||
dd START ; start of code
|
|
||||||
dd I_END ; size of image
|
; <20>€—€‹Ž <20><>Žƒ<C5BD>€ŒŒ›
|
||||||
dd E_END ; memory for app
|
use32
|
||||||
dd E_END ; esp
|
org 0x0
|
||||||
dd 0x0,0x0 ; I_Param , I_Icon
|
db 'MENUET01' ; 8 byte id
|
||||||
|
dd 0x01 ; title version
|
||||||
; Ž<>‹€‘’œ ŠŽ„€
|
dd START ; start of code
|
||||||
START:
|
dd I_END ; size of image
|
||||||
mov eax,40 ; á®®¡é¨¬ á¨á⥬¥, ª ª¨¥ ᮡëâ¨ï ¡ã¤¥¬ ®¡à ¡ âë¢ âì
|
dd E_END ; memory for app
|
||||||
mov ebx,0100101b ; ¬ ᪠ᮡë⨩ - ¯¥à¥à¨á®¢ª (1) + ª®¯ª (3) + ¬ëèì (6
|
dd E_END ; esp
|
||||||
int 0x40 ; íâ ª®¬ ¤ ¢ë§ë¢ ¥â á¨á⥬ãî äãªæ¨î
|
dd 0x0,0x0 ; I_Param , I_Icon
|
||||||
|
|
||||||
mov [workarea.cx],5 ; ª®®à¤¨ âë à ¡®ç¥© (ª«¨¥â᪮©) ®¡« áâ¨
|
; Ž<>‹€‘’œ ŠŽ„€
|
||||||
mov [workarea.cy],30 ; ¤«ï à¨á®¢ ¨ï
|
START:
|
||||||
|
mov eax,40 ; á®®¡é¨¬ á¨á⥬¥, ª ª¨¥ ᮡëâ¨ï ¡ã¤¥¬ ®¡à ¡ âë¢ âì
|
||||||
red:
|
mov ebx,0100101b ; ¬ ᪠ᮡë⨩ - ¯¥à¥à¨á®¢ª (1) + ª®¯ª (3) + ¬ëèì (6
|
||||||
call draw_window ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª
|
int 0x40 ; íâ ª®¬ ¤ ¢ë§ë¢ ¥â á¨á⥬ãî äãªæ¨î
|
||||||
|
|
||||||
still: ; ƒ‹€‚<EFBFBD>›‰ –ˆŠ‹ <20><>Žƒ<C5BD>€ŒŒ› - –ˆŠ‹ Ž<><C5BD>€<EFBFBD>Ž’Šˆ ‘ŽŽ<C5BD>™…<E284A2>ˆ‰
|
mov [workarea.cx],5 ; ª®®à¤¨ âë à ¡®ç¥© (ª«¨¥â᪮©) ®¡« áâ¨
|
||||||
|
mov [workarea.cy],30 ; ¤«ï à¨á®¢ ¨ï
|
||||||
mov eax,10 ; äãªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï; ¯à®£à ¬¬ ®áâ ¢«¨¢ ¥âáï
|
|
||||||
int 0x40 ; á«¥¤ãîé ï ª®¬ ¤ ¥ ¡ã¤¥â ¢ë¯®«¥ ¤® â¥å ¯®à, ¯®ª
|
red:
|
||||||
; ¥ ¯à®¨§®©¤ñâ ᮡë⨥
|
call draw_window ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª
|
||||||
|
|
||||||
; ⥯¥àì ॣ¨áâà eax ᮤ¥à¦¨â ®¬¥à ᮡëâ¨ï
|
still: ; ƒ‹€‚<E282AC>›‰ –ˆŠ‹ <20><>Žƒ<C5BD>€ŒŒ› - –ˆŠ‹ Ž<><C5BD>€<EFBFBD>Ž’Šˆ ‘ŽŽ<C5BD>™…<E284A2>ˆ‰
|
||||||
; ¯®®ç¥à¥¤® áà ¢¨¬ ¥£® á® ¢á¥¬¨ ¢®§¬®¦ë¬¨ § 票ﬨ, çâ®¡ë ¢ë§¢ âì
|
|
||||||
; ã¦ë© ®¡à ¡®â稪
|
mov eax,10 ; äãªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï; ¯à®£à ¬¬ ®áâ ¢«¨¢ ¥âáï
|
||||||
|
int 0x40 ; á«¥¤ãîé ï ª®¬ ¤ ¥ ¡ã¤¥â ¢ë¯®«¥ ¤® â¥å ¯®à, ¯®ª
|
||||||
cmp eax,1 ; ¯¥à¥à¨á®¢ âì ®ª® ?
|
; ¥ ¯à®¨§®©¤ñâ ᮡë⨥
|
||||||
je red ; ¥á«¨ ॣ¨áâà eax à ¢¥ ¥¤¨¨æ¥, â® ¯¥à¥å®¤¨¬ ¬¥âªã red
|
|
||||||
cmp eax,3 ; ¦ â ª®¯ª ?
|
; ⥯¥àì ॣ¨áâà eax ᮤ¥à¦¨â ®¬¥à ᮡëâ¨ï
|
||||||
je button
|
; ¯®®ç¥à¥¤® áà ¢¨¬ ¥£® á® ¢á¥¬¨ ¢®§¬®¦ë¬¨ § 票ﬨ, çâ®¡ë ¢ë§¢ âì
|
||||||
cmp eax,6 ; ¬ëèì?
|
; ã¦ë© ®¡à ¡®â稪
|
||||||
je mouse
|
|
||||||
|
cmp eax,1 ; ¯¥à¥à¨á®¢ âì ®ª® ?
|
||||||
jmp still ; ¥á«¨ ¯à®¨§®è«® ᮡë⨥, ª®â®à®¥ ¬ë ¥ ®¡à ¡ âë¢ ¥¬,
|
je red ; ¥á«¨ ॣ¨áâà eax à ¢¥ ¥¤¨¨æ¥, â® ¯¥à¥å®¤¨¬ ¬¥âªã red
|
||||||
; ¯à®áâ® ¢®§¢à é ¥¬áï ª ç «ã æ¨ª« , å®âï â ª®£® ¡ëâì
|
cmp eax,3 ; ¦ â ª®¯ª ?
|
||||||
; ¥ ¤®«¦®! ’.¥. ¥á«¨ íâã ª®¬ ¤ã ®âáî¤ ã¡à âì, â®
|
je button
|
||||||
; ¨ç¥£® áâà 讣® ¥ á«ãç¨âáï.
|
cmp eax,6 ; ¬ëèì?
|
||||||
|
je mouse
|
||||||
;******************************************************************************
|
|
||||||
|
jmp still ; ¥á«¨ ¯à®¨§®è«® ᮡë⨥, ª®â®à®¥ ¬ë ¥ ®¡à ¡ âë¢ ¥¬,
|
||||||
button: ; ®¡à ¡®â稪 ¦ â¨ï ª®¯ª¨ ¢ ®ª¥ ¯à®£à ¬¬ë
|
; ¯à®áâ® ¢®§¢à é ¥¬áï ª ç «ã æ¨ª« , å®âï â ª®£® ¡ëâì
|
||||||
mov eax,17 ; äãªæ¨ï N17 - ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨
|
; ¥ ¤®«¦®! ’.¥. ¥á«¨ íâã ª®¬ ¤ã ®âáî¤ ã¡à âì, â®
|
||||||
int 0x40
|
; ¨ç¥£® áâà 讣® ¥ á«ãç¨âáï.
|
||||||
|
|
||||||
; ⥯¥àì ¢ ॣ¨áâॠah ᮤ¥à¦¨âáï ¨¤¥â¨ä¨ª â®à.
|
;******************************************************************************
|
||||||
|
|
||||||
shr eax,8 ; ah -> al (ᤢ¨£ 8 ¡¨â ¢¯à ¢®)
|
button: ; ®¡à ¡®â稪 ¦ â¨ï ª®¯ª¨ ¢ ®ª¥ ¯à®£à ¬¬ë
|
||||||
|
mov eax,17 ; äãªæ¨ï N17 - ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨
|
||||||
dec al ; ¨¤¥â¨ä¨ª â®à_ª®¯ª¨--;
|
int 0x40
|
||||||
jnz .noclose ; ¥á«¨ १ã«ìâ ⠯।ë¤ã饩 ª®¬ ¤ë à ¢¥ ã«î, § ªàë¢ ¥¬áï
|
|
||||||
; ¨ ç¥ - ¨¤ñ¬ ¬¥âªã noclose
|
; ⥯¥àì ¢ ॣ¨áâॠah ᮤ¥à¦¨âáï ¨¤¥â¨ä¨ª â®à.
|
||||||
|
|
||||||
or eax,-1 ; ¢ë室 ¨§ ¯à®£à ¬¬ë
|
shr eax,8 ; ah -> al (ᤢ¨£ 8 ¡¨â ¢¯à ¢®)
|
||||||
int 0x40
|
|
||||||
|
dec al ; ¨¤¥â¨ä¨ª â®à_ª®¯ª¨--;
|
||||||
.noclose:
|
jnz .noclose ; ¥á«¨ १ã«ìâ ⠯।ë¤ã饩 ª®¬ ¤ë à ¢¥ ã«î, § ªàë¢ ¥¬áï
|
||||||
; ¥á«¨ ¬ë áî¤ ¯®¯ «¨, § ç¨â ¨¤¥â¨ä¨ª â®à ª®¯ª¨ ¥ ¡ë« à ¢¥ ã«î...
|
; ¨ ç¥ - ¨¤ñ¬ ¬¥âªã noclose
|
||||||
; ⥯¥àì ã á ¢ eax ᮤ¥à¦¨âáï (®¬¥à 梥⮩ ª®¯ª¨ - 1),
|
|
||||||
; â.¥ ¨«¨ 1, ¨«¨ 2, ... ,¨«¨ 5
|
or eax,-1 ; ¢ë室 ¨§ ¯à®£à ¬¬ë
|
||||||
|
int 0x40
|
||||||
; 㬥ì訬 1:
|
|
||||||
dec eax
|
.noclose:
|
||||||
|
; ¥á«¨ ¬ë áî¤ ¯®¯ «¨, § ç¨â ¨¤¥â¨ä¨ª â®à ª®¯ª¨ ¥ ¡ë« à ¢¥ ã«î...
|
||||||
; ¢®â íâ ¢®â ª®¬ ¤ ¨§¢«¥ª ¥â ¢ eax ¤¢®©®¥ á«®¢® ¯® ¤à¥áã colors+eax*4
|
; ⥯¥àì ã á ¢ eax ᮤ¥à¦¨âáï (®¬¥à 梥⮩ ª®¯ª¨ - 1),
|
||||||
; £¤¥ colors - ᬥ饨¥ ¬¥âª¨ colors, ¯®á«¥ ª®â®à®© ¨¤¥â ¯®á«¥¤®¢ ⥫ì®áâì
|
; â.¥ ¨«¨ 1, ¨«¨ 2, ... ,¨«¨ 5
|
||||||
; 梥⮢, eax*4 - ®¬¥à 梥â , 㬮¦¥ë© 4, â.ª. ®¤¨ 梥â 㦮
|
|
||||||
; ç¥âëॠ¡ ©â .
|
; 㬥ì訬 1:
|
||||||
mov eax,[colors+eax*4]
|
dec eax
|
||||||
|
|
||||||
; ⥯¥àì ¬ë ãáâ ®¢¨¬ 梥â, ᮤ¥à¦ 騩áï ¢ ॣ¨áâॠeax ª ª ®á®¢®©:
|
; ¢®â íâ ¢®â ª®¬ ¤ ¨§¢«¥ª ¥â ¢ eax ¤¢®©®¥ á«®¢® ¯® ¤à¥áã colors+eax*4
|
||||||
mov [active_color],eax
|
; £¤¥ colors - ᬥ饨¥ ¬¥âª¨ colors, ¯®á«¥ ª®â®à®© ¨¤¥â ¯®á«¥¤®¢ ⥫ì®áâì
|
||||||
|
; 梥⮢, eax*4 - ®¬¥à 梥â , 㬮¦¥ë© 4, â.ª. ®¤¨ 梥â 㦮
|
||||||
; ã ¢®â, ᮡá⢥®, ¨ ¢áñ, çâ® ®â á âॡ®¢ «®áì ;)
|
; ç¥âëॠ¡ ©â .
|
||||||
; ¢¥àñ¬áï ª ç «ã æ¨ª« ®¡à ¡®âª¨ ᮡë⨩
|
mov eax,[colors+eax*4]
|
||||||
jmp still
|
|
||||||
|
; ⥯¥àì ¬ë ãáâ ®¢¨¬ 梥â, ᮤ¥à¦ 騩áï ¢ ॣ¨áâॠeax ª ª ®á®¢®©:
|
||||||
;******************************************************************************
|
mov [active_color],eax
|
||||||
|
|
||||||
mouse: ; ®¡à ¡®â稪 ¬ëè¨
|
; ã ¢®â, ᮡá⢥®, ¨ ¢áñ, çâ® ®â á âॡ®¢ «®áì ;)
|
||||||
mov eax,37 ; á ç « ¯®«ã稬 ⥪ã騥 ª®®à¤¨ âë ¬ëè¨
|
; ¢¥àñ¬áï ª ç «ã æ¨ª« ®¡à ¡®âª¨ ᮡë⨩
|
||||||
mov ebx,1
|
jmp still
|
||||||
int 0x40
|
|
||||||
|
;******************************************************************************
|
||||||
mov ebx,eax ; ¯à¥®¡à §ã¥¬ ¨å
|
|
||||||
shr eax,16 ; eax=x;
|
mouse: ; ®¡à ¡®â稪 ¬ëè¨
|
||||||
and ebx,0xffff ; ebx=y;
|
mov eax,37 ; á ç « ¯®«ã稬 ⥪ã騥 ª®®à¤¨ âë ¬ëè¨
|
||||||
|
mov ebx,1
|
||||||
cmp ebx,22
|
int 0x40
|
||||||
jb save_canvas
|
|
||||||
|
mov ebx,eax ; ¯à¥®¡à §ã¥¬ ¨å
|
||||||
sub eax,[workarea.cx] ; x-=[workarea.cx]
|
shr eax,16 ; eax=x;
|
||||||
cmp eax,0 ; ¥á«¨ ¬ëèì «¥¢¥¥ ª«¨¥â᪮© ®¡« áâ¨,
|
and ebx,0xffff ; ebx=y;
|
||||||
jle .not_pressed ; ¨ç¥£® ¥ à¨á㥬
|
|
||||||
cmp eax,[workarea.sx] ; ¥á«¨ ¬ëèì ¯à ¢¥¥...
|
cmp ebx,22
|
||||||
jae .not_pressed
|
jb save_canvas
|
||||||
|
|
||||||
sub ebx,[workarea.cy]
|
sub eax,[workarea.cx] ; x-=[workarea.cx]
|
||||||
cmp ebx,0 ; ...¢ëè¥...
|
cmp eax,0 ; ¥á«¨ ¬ëèì «¥¢¥¥ ª«¨¥â᪮© ®¡« áâ¨,
|
||||||
jle .not_pressed
|
jle .not_pressed ; ¨ç¥£® ¥ à¨á㥬
|
||||||
cmp ebx,[workarea.sy] ; ...¨¦¥...
|
cmp eax,[workarea.sx] ; ¥á«¨ ¬ëèì ¯à ¢¥¥...
|
||||||
jae .not_pressed
|
jae .not_pressed
|
||||||
|
|
||||||
; ª ª¨¥ ª®¯ª¨ ¦ âë?
|
sub ebx,[workarea.cy]
|
||||||
mov eax,37
|
cmp ebx,0 ; ...¢ëè¥...
|
||||||
mov ebx,2
|
jle .not_pressed
|
||||||
int 0x40
|
cmp ebx,[workarea.sy] ; ...¨¦¥...
|
||||||
|
jae .not_pressed
|
||||||
; ¥á«¨ «¥¢ ï ª®¯ª (â.¥. eax = 1), ⥠¯®©¤ñ¬ ¤ «ìè¥
|
|
||||||
cmp eax,1
|
; ª ª¨¥ ª®¯ª¨ ¦ âë?
|
||||||
je .leftbtn
|
mov eax,37
|
||||||
|
mov ebx,2
|
||||||
.not_pressed:
|
int 0x40
|
||||||
; ‹¥¢ ï ª®¯ª ¥ ¦ â , § ¯®¬¨¬ ⥪ã騥 ª®®à¤¨ âë ¨ ¡ã¤¥¬ ¦¤ âì ᮡëâ¨ï
|
|
||||||
mov [mouse_pressed],0 ; ¬ëèì ¥ ¦ â
|
; ¥á«¨ «¥¢ ï ª®¯ª (â.¥. eax = 1), ⥠¯®©¤ñ¬ ¤ «ìè¥
|
||||||
mov eax,37 ; ¯®«ã稬 ª®®à¤¨ âë
|
cmp eax,1
|
||||||
mov ebx,1
|
je .leftbtn
|
||||||
int 0x40
|
|
||||||
mov ebx,eax
|
.not_pressed:
|
||||||
shr eax,16
|
; ‹¥¢ ï ª®¯ª ¥ ¦ â , § ¯®¬¨¬ ⥪ã騥 ª®®à¤¨ âë ¨ ¡ã¤¥¬ ¦¤ âì ᮡëâ¨ï
|
||||||
and ebx,0xffff
|
mov [mouse_pressed],0 ; ¬ëèì ¥ ¦ â
|
||||||
mov [old_x],eax ; § ¯®¬¨¬ ¨å
|
mov eax,37 ; ¯®«ã稬 ª®®à¤¨ âë
|
||||||
mov [old_y],ebx
|
mov ebx,1
|
||||||
jmp still
|
int 0x40
|
||||||
|
mov ebx,eax
|
||||||
.leftbtn:
|
shr eax,16
|
||||||
; ‹¥¢ ï ª®¯ª ¦ â , ¤® íâ® § ¯¨á âì!
|
and ebx,0xffff
|
||||||
mov [mouse_pressed],1
|
mov [old_x],eax ; § ¯®¬¨¬ ¨å
|
||||||
|
mov [old_y],ebx
|
||||||
; <20>®«ã稬 ª®®à¤¨ âë ªãàá®à ¬ëè¨ (®â®á¨â¥«ì® ®ª )
|
jmp still
|
||||||
mcall 37,1 ; ¯®«ãç¨âì á®áâ®ï¨¥ ¬ëè¨
|
|
||||||
|
.leftbtn:
|
||||||
; <EFBFBD>¥à¥¤¥« ¥¬ ¨å â ª, çâ®¡ë ®¨ ¡ë«¨ ¢ à §ëå ॣ¨áâà å, â.¥. eax ¨ ebx
|
; ‹¥¢ ï ª®¯ª ¦ â , ¤® íâ® § ¯¨á âì!
|
||||||
mov ebx,eax
|
mov [mouse_pressed],1
|
||||||
shr eax,16
|
|
||||||
and ebx,0xffff
|
; <20>®«ã稬 ª®®à¤¨ âë ªãàá®à ¬ëè¨ (®â®á¨â¥«ì® ®ª )
|
||||||
|
mcall 37,1 ; ¯®«ãç¨âì á®áâ®ï¨¥ ¬ëè¨
|
||||||
; <20>®¤£®â®¢¨¬ ¯ à ¬¥âàë ¤«ï äãªæ¨¨ à¨á®¢ ¨ï «¨¨¨
|
|
||||||
mov ecx,[old_x] ; ¤«ï ç « § £à㧨¬ áâ àë¥ ª®®à¤¨ âë
|
; <20>¥à¥¤¥« ¥¬ ¨å â ª, çâ®¡ë ®¨ ¡ë«¨ ¢ à §ëå ॣ¨áâà å, â.¥. eax ¨ ebx
|
||||||
mov edx,[old_y]
|
mov ebx,eax
|
||||||
mov [old_x],eax ; ⥯¥àì á®åà ¨¬ ⥪ã騥 ¢ áâ àë¥
|
shr eax,16
|
||||||
mov [old_y],ebx
|
and ebx,0xffff
|
||||||
shl ecx,16 ; ¢ ¢¥à奥 á«®¢® ç «ìë¥ (⥪ã騥) ª®®à¤¨ âë
|
|
||||||
shl edx,16
|
; <20>®¤£®â®¢¨¬ ¯ à ¬¥âàë ¤«ï äãªæ¨¨ à¨á®¢ ¨ï «¨¨¨
|
||||||
add eax,ecx ; ¢ ¨¦¥¥ á«®¢® ª®¥çë¥, â.¥. áâ àë¥
|
mov ecx,[old_x] ; ¤«ï ç « § £à㧨¬ áâ àë¥ ª®®à¤¨ âë
|
||||||
add ebx,edx
|
mov edx,[old_y]
|
||||||
|
mov [old_x],eax ; ⥯¥àì á®åà ¨¬ ⥪ã騥 ¢ áâ àë¥
|
||||||
mov ecx,ebx ; ¯®¬¥ï¥¬ ॣ¨áâàë â ª, ª ª íâã 㦮 38 äãªæ¨¨
|
mov [old_y],ebx
|
||||||
mov ebx,eax
|
shl ecx,16 ; ¢ ¢¥à奥 á«®¢® ç «ìë¥ (⥪ã騥) ª®®à¤¨ âë
|
||||||
mov eax,38 ; ®¬¥à äãªæ¨¨ ¢ eax
|
shl edx,16
|
||||||
mov edx,[active_color] ; ¢ edx 梥â
|
add eax,ecx ; ¢ ¨¦¥¥ á«®¢® ª®¥çë¥, â.¥. áâ àë¥
|
||||||
int 0x40
|
add ebx,edx
|
||||||
|
|
||||||
; - ¯®¯à®¡ã©â¥ ¯®áâ ¢¨âì ¤à㣨¥ § 票ï (00090001)
|
mov ecx,ebx ; ¯®¬¥ï¥¬ ॣ¨áâàë â ª, ª ª íâã 㦮 38 äãªæ¨¨
|
||||||
mov edi,0x00010001 ; çâ®¡ë «¨¨ï ¥ ¡ë« ᫨誮¬ ⮪®©,
|
mov ebx,eax
|
||||||
add ebx,edi ; à¨á㥬 à冷¬ ¥é¥ 3!
|
mov eax,38 ; ®¬¥à äãªæ¨¨ ¢ eax
|
||||||
int 0x40
|
mov edx,[active_color] ; ¢ edx 梥â
|
||||||
add ecx,edi
|
int 0x40
|
||||||
int 0x40
|
|
||||||
sub ebx,edi
|
; - ¯®¯à®¡ã©â¥ ¯®áâ ¢¨âì ¤à㣨¥ § 票ï (00090001)
|
||||||
int 0x40
|
mov edi,0x00010001 ; çâ®¡ë «¨¨ï ¥ ¡ë« ᫨誮¬ ⮪®©,
|
||||||
|
add ebx,edi ; à¨á㥬 à冷¬ ¥é¥ 3!
|
||||||
sub ebx,edi ; ã ç⮡ë ᬮâ५®áì ᮢᥬ ªàãâ®,
|
int 0x40
|
||||||
int 0x40 ; ¤®à¨á㥬 ¥é¥ 5!
|
add ecx,edi
|
||||||
sub ecx,edi
|
int 0x40
|
||||||
int 0x40
|
sub ebx,edi
|
||||||
sub ecx,edi
|
int 0x40
|
||||||
int 0x40
|
|
||||||
add ebx,edi
|
sub ebx,edi ; ã ç⮡ë ᬮâ५®áì ᮢᥬ ªàãâ®,
|
||||||
int 0x40
|
int 0x40 ; ¤®à¨á㥬 ¥é¥ 5!
|
||||||
add ebx,edi
|
sub ecx,edi
|
||||||
int 0x40
|
int 0x40
|
||||||
|
sub ecx,edi
|
||||||
jmp still
|
int 0x40
|
||||||
|
add ebx,edi
|
||||||
;******************************************************************************
|
int 0x40
|
||||||
|
add ebx,edi
|
||||||
save_canvas:
|
int 0x40
|
||||||
mov eax,[proc_info.box.width]
|
|
||||||
add eax,[workarea.cx]
|
jmp still
|
||||||
mov ebx,[proc_info.box.height]
|
|
||||||
add ebx,[workarea.cy]
|
;******************************************************************************
|
||||||
|
|
||||||
jmp still
|
save_canvas:
|
||||||
|
mov eax,[proc_info.box.width]
|
||||||
;******************************************************************************
|
add eax,[workarea.cx]
|
||||||
|
mov ebx,[proc_info.box.height]
|
||||||
; *********************************************
|
add ebx,[workarea.cy]
|
||||||
; ******* Ž<><C5BD>…„…‹…<E280B9>ˆ… ˆ Ž’<C5BD>ˆ‘ނЀ ŽŠ<C5BD>€ *******
|
|
||||||
; *********************************************
|
jmp still
|
||||||
|
|
||||||
draw_window:
|
;******************************************************************************
|
||||||
|
|
||||||
mcall 48,3,sc,sizeof.system_colors ; <20>Ž„ƒ<E2809E>“†€…Œ ‘ˆ‘’…Œ<E280A6>›… –‚…’€
|
; *********************************************
|
||||||
mcall 12, 1 ; ç «® ®âà¨á®¢ª¨ ®ª
|
; ******* Ž<><C5BD>…„…‹…<E280B9>ˆ… ˆ Ž’<C5BD>ˆ‘ނЀ ŽŠ<C5BD>€ *******
|
||||||
mov edx, [sc.work]
|
; *********************************************
|
||||||
or edx, 0x33000000
|
|
||||||
mcall 0, (100 shl 16)+400, (100 shl 16)+300, , , title ; à¨á㥬 ®ª®
|
draw_window:
|
||||||
mcall 12, 1
|
|
||||||
|
mcall 48,3,sc,sizeof.system_colors ; <20>Ž„ƒ<E2809E>“†€…Œ ‘ˆ‘’…Œ<E280A6>›… –‚…’€
|
||||||
mcall 9,proc_info,-1 ; ¯®«ã稬 ¨ä®à¬ æ¨î ® ᢮¥¬ ¯®â®ª¥
|
mcall 12, 1 ; ç «® ®âà¨á®¢ª¨ ®ª
|
||||||
|
mov edx, [sc.work]
|
||||||
mov eax,[proc_info.box.width] ; áâந¬ à §¬¥à à ¡®ç¥© ®¡« áâ¨
|
or edx, 0x33000000
|
||||||
sub eax,20 ; (å à §¬¥à ®ª - 20)
|
mcall 0, (100 shl 16)+400, (100 shl 16)+300, , , title ; à¨á㥬 ®ª®
|
||||||
mov [workarea.sx],eax
|
mcall 12, 1
|
||||||
mov eax,[proc_info.box.height]
|
|
||||||
sub eax,63 ; (ã à §¬¥à - 63)
|
mcall 9,proc_info,-1 ; ¯®«ã稬 ¨ä®à¬ æ¨î ® ᢮¥¬ ¯®â®ª¥
|
||||||
mov [workarea.sy],eax
|
|
||||||
|
mov eax,[proc_info.box.width] ; áâந¬ à §¬¥à à ¡®ç¥© ®¡« áâ¨
|
||||||
cmp [proc_info.box.height],80
|
sub eax,20 ; (å à §¬¥à ®ª - 20)
|
||||||
jb .finish
|
mov [workarea.sx],eax
|
||||||
|
mov eax,[proc_info.box.height]
|
||||||
mov eax, 8
|
sub eax,63 ; (ã à §¬¥à - 63)
|
||||||
mov edx, 1
|
mov [workarea.sy],eax
|
||||||
; á®§¤ ñ¬ ª®¯ª¨ ¢ë¡®à 梥â :
|
|
||||||
mov ebx,10*65536+15 ; ç «ì ï x ª®®à¤¨ â ¨ à §¬¥à
|
cmp [proc_info.box.height],80
|
||||||
mov ecx, 7*65536+15 ; ç «ì ï y ª®®à¤¨ â & size
|
jb .finish
|
||||||
.new_button:
|
|
||||||
inc edx ; ¨¤¥â¨ä¨ª â®à++;
|
mov eax, 8
|
||||||
mov esi,[btn_colors-8+edx*4] ; 梥⠪®¯ª¨
|
mov edx, 1
|
||||||
int 0x40 ; áâ ¢¨¬ ª®¯ªã
|
; á®§¤ ñ¬ ª®¯ª¨ ¢ë¡®à 梥â :
|
||||||
add ebx,18*65536 ; á«¥¤ãîé ï ª®¯ª ¯à ¢¥¥ 12
|
mov ebx,10*65536+15 ; ç «ì ï x ª®®à¤¨ â ¨ à §¬¥à
|
||||||
cmp edx,9 ; áà ¢¨¢ ¥¬ edx (¨¤¥â¨ä¨ª â®à) á 9
|
mov ecx, 7*65536+15 ; ç «ì ï y ª®®à¤¨ â & size
|
||||||
jbe .new_button ; ¥á«¨ ¬¥ìè¥ ¨«¨ à ¢® -> ¥éñ ®¤ã ª¯®ªã
|
.new_button:
|
||||||
|
inc edx ; ¨¤¥â¨ä¨ª â®à++;
|
||||||
mov eax,13 ; ç¨á⨬ "宫áâ" - ª«¨¥âáªãî ®¡« áâì
|
mov esi,[btn_colors-8+edx*4] ; 梥⠪®¯ª¨
|
||||||
mov ebx,[workarea.cx]
|
int 0x40 ; áâ ¢¨¬ ª®¯ªã
|
||||||
mov ecx,[workarea.cy]
|
add ebx,18*65536 ; á«¥¤ãîé ï ª®¯ª ¯à ¢¥¥ 12
|
||||||
shl ebx,16
|
cmp edx,9 ; áà ¢¨¢ ¥¬ edx (¨¤¥â¨ä¨ª â®à) á 9
|
||||||
shl ecx,16
|
jbe .new_button ; ¥á«¨ ¬¥ìè¥ ¨«¨ à ¢® -> ¥éñ ®¤ã ª¯®ªã
|
||||||
add ebx,[workarea.sx]
|
|
||||||
add ecx,[workarea.sy]
|
mov eax,13 ; ç¨á⨬ "宫áâ" - ª«¨¥âáªãî ®¡« áâì
|
||||||
mov edx,0xffffff
|
mov ebx,[workarea.cx]
|
||||||
mcall 13
|
mov ecx,[workarea.cy]
|
||||||
|
shl ebx,16
|
||||||
.finish:
|
shl ecx,16
|
||||||
ret
|
add ebx,[workarea.sx]
|
||||||
|
add ecx,[workarea.sy]
|
||||||
;******************************************************************************
|
mov edx,0xffffff
|
||||||
; ç «® ®¡« á⨠¨¨æ¨ «¨§¨à®¢ ëå ¤ ëå
|
mcall 13
|
||||||
; ¥á«¨ ªâ® ¥éñ ¥ § ¥â, çâ® § ç¨â "¨¨æ¨ «¨§¨à®¢ ë¥", â® ¯®ïáïî:
|
|
||||||
; í⮠⥠¤ ë¥, ª®â®àë¬ ¯à¨á¢®¥® ç «ì®¥ § 票¥
|
.finish:
|
||||||
|
ret
|
||||||
;data
|
|
||||||
|
;******************************************************************************
|
||||||
title db 'Simple Paint v0.3',0
|
; ç «® ®¡« á⨠¨¨æ¨ «¨§¨à®¢ ëå ¤ ëå
|
||||||
|
; ¥á«¨ ªâ® ¥éñ ¥ § ¥â, çâ® § ç¨â "¨¨æ¨ «¨§¨à®¢ ë¥", â® ¯®ïáïî:
|
||||||
mouse_pressed db 0 ; ¯®ª §ë¢ ¥â, ¦ â «¨ ¡ë« ¬ëèì ¢ ¯à¥¤ë¤ã騩 ¬®¬¥â
|
; í⮠⥠¤ ë¥, ª®â®àë¬ ¯à¨á¢®¥® ç «ì®¥ § 票¥
|
||||||
|
|
||||||
; 梥⠪®¯®ª
|
;data
|
||||||
btn_colors:
|
|
||||||
dd 0xdddddd ; white
|
title db 'Simple Paint v0.3',0
|
||||||
dd 0x444444 ; black
|
|
||||||
dd 0x00dd00 ; green
|
mouse_pressed db 0 ; ¯®ª §ë¢ ¥â, ¦ â «¨ ¡ë« ¬ëèì ¢ ¯à¥¤ë¤ã騩 ¬®¬¥â
|
||||||
dd 0x0000dd ; blue
|
|
||||||
dd 0xdd0000 ; red
|
; 梥⠪®¯®ª
|
||||||
dd 0xdd00dd ; magenta
|
btn_colors:
|
||||||
dd 0xdddd00 ; yellow
|
dd 0xdddddd ; white
|
||||||
dd 0x00dddd ; cyan
|
dd 0x444444 ; black
|
||||||
dd 0x559955 ; warm green
|
dd 0x00dd00 ; green
|
||||||
|
dd 0x0000dd ; blue
|
||||||
; 梥⠪¨á⨠(¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ 梥⠪®¯®ª)
|
dd 0xdd0000 ; red
|
||||||
colors:
|
dd 0xdd00dd ; magenta
|
||||||
dd 0xffffff ; ¡¥«ë©
|
dd 0xdddd00 ; yellow
|
||||||
dd 0x000000 ; ç¥àë©
|
dd 0x00dddd ; cyan
|
||||||
dd 0x00ff00 ; §¥«¥ë©
|
dd 0x559955 ; warm green
|
||||||
dd 0x0000ff ; ᨨ©
|
|
||||||
dd 0xff0000 ; ªà áë©
|
; 梥⠪¨á⨠(¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ 梥⠪®¯®ª)
|
||||||
dd 0xff00ff ; ¯ãà¯ãàë©
|
colors:
|
||||||
dd 0xffff00 ; ¦¥«âë©
|
dd 0xffffff ; ¡¥«ë©
|
||||||
dd 0x00ffff ; £®«ã¡®©
|
dd 0x000000 ; ç¥àë©
|
||||||
dd 0x77bb77 ; ⥯«ë© §¥«¥ë©
|
dd 0x00ff00 ; §¥«¥ë©
|
||||||
|
dd 0x0000ff ; ᨨ©
|
||||||
;******************************************************************************
|
dd 0xff0000 ; ªà áë©
|
||||||
; ¢®â âãâ ç¨ ¥âáï ®¡« áâì <20>…¨¨æ¨ «¨§¨à®¢ ëå ¤ ëå, â.¥.
|
dd 0xff00ff ; ¯ãà¯ãàë©
|
||||||
; §¤¥áì ¤ ë¬ § ç¥¨ï ¥ ¯à¨á¢®¥ë. ‚ ®â«¨ç¨¥ ®â ¨¨æ., ¥ 㢥«¨ç¨¢ îâ à §¬¥à
|
dd 0xffff00 ; ¦¥«âë©
|
||||||
; ä ©«
|
dd 0x00ffff ; £®«ã¡®©
|
||||||
|
dd 0x77bb77 ; ⥯«ë© §¥«¥ë©
|
||||||
I_END:
|
|
||||||
|
;******************************************************************************
|
||||||
active_color dd ? ; ªâ¨¢ë© 梥â
|
; ¢®â âãâ ç¨ ¥âáï ®¡« áâì <20>…¨¨æ¨ «¨§¨à®¢ ëå ¤ ëå, â.¥.
|
||||||
|
; §¤¥áì ¤ ë¬ § ç¥¨ï ¥ ¯à¨á¢®¥ë. ‚ ®â«¨ç¨¥ ®â ¨¨æ., ¥ 㢥«¨ç¨¢ îâ à §¬¥à
|
||||||
old_x dd ? ; áâ àë¥ ª®®à¤¨ âë ¬ëè¨
|
; ä ©«
|
||||||
old_y dd ?
|
|
||||||
|
I_END:
|
||||||
workarea: ; ª®®à¤¨ âë ¨ à §¬¥àë ª«¨¥â᪮© ®¡« áâ¨
|
|
||||||
.cx dd ? ; c - ª®®¤¨ âë
|
active_color dd ? ; ªâ¨¢ë© 梥â
|
||||||
.cy dd ?
|
|
||||||
.sx dd ? ; s - à §¬¥àë
|
old_x dd ? ; áâ àë¥ ª®®à¤¨ âë ¬ëè¨
|
||||||
.sy dd ?
|
old_y dd ?
|
||||||
|
|
||||||
sc system_colors ; á¨áâ¥¬ë¥ æ¢¥â
|
workarea: ; ª®®à¤¨ âë ¨ à §¬¥àë ª«¨¥â᪮© ®¡« áâ¨
|
||||||
proc_info process_information ; ¨ä®à¬ æ¨ï ® ¯à®æ¥áá¥
|
.cx dd ? ; c - ª®®¤¨ âë
|
||||||
|
.cy dd ?
|
||||||
restflag dd ?
|
.sx dd ? ; s - à §¬¥àë
|
||||||
canvas rb 800*600*3
|
.sy dd ?
|
||||||
|
|
||||||
E_END:
|
sc system_colors ; á¨áâ¥¬ë¥ æ¢¥â
|
||||||
|
proc_info process_information ; ¨ä®à¬ æ¨ï ® ¯à®æ¥áá¥
|
||||||
|
|
||||||
|
restflag dd ?
|
||||||
|
canvas rb 800*600*3
|
||||||
|
|
||||||
|
E_END:
|
Reference in New Issue
Block a user