Subversion Repositories Kolibri OS

Rev

Rev 551 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. lang equ ru ; ru en fr ge fi
  2.  
  3. ;
  4. ;   Assembler
  5. ;     SMALL
  6. ;       CODE
  7. ;         Libary
  8. ;
  9. ;  Ver 0.09 By Pavlushin Evgeni (RUSSIA)
  10. ;  www.waptap@mail.ru
  11.  
  12. ;InfoList
  13. ;0.01 scank,putpix,puttxt
  14. ;0.02 label,random,colors
  15. ;0.03 window,startwd,endwd,attributes
  16. ;0.04 close,delay,scevent ~30.04.2004
  17. ;0.05 small random, ~04.05.2004
  18. ;0.06 wtevent ~09.05.2004
  19. ;0.07 timeevent ~23.05.2004
  20. ;0.08 txtput ~14.06.2004
  21. ;0.09 opendialog,savedialog ~20.06.2004
  22.  
  23. macro opendialog redproc,openoff,erroff,path,testtime
  24. {
  25. local still, dlg_file, clip_file, redwait
  26. local button, key, red, zzz, still, zzz2, incf, file_is_open, zzz3
  27.  
  28.     mov ecx,200
  29. zzz3:
  30.     mov byte [path+ecx-1],0
  31.     loop zzz3
  32.  
  33.     dec byte [clip_file+7]
  34. incf:
  35.     inc byte [clip_file+7]
  36.     mov eax,6
  37.     mov ebx,clip_file
  38.     mov ecx,0
  39.     mov edx,-1
  40.     mov esi,path
  41.     mcall
  42.     cmp byte [clip_file+7],'Z'
  43.     je  erroff
  44.     cmp eax,0xffffffff
  45.     jne incf
  46.  
  47.     mov ecx,200
  48. zzz2:
  49.     mov byte [path+ecx],0
  50.     loop zzz2
  51.  
  52.     mov ebx,clip_file
  53.     mov ecx,path
  54.     mov edx,100
  55.     mov esi,0
  56.     mov eax,33
  57.     mcall
  58.  
  59.     mov ebx,dlg_file
  60.     mov ecx,clip_file
  61.     mov eax,19
  62.     mcall
  63.  
  64. still:
  65.     scevent red,key,button
  66.     cmp byte [path],0
  67.     jne file_is_open
  68.     cmp dword [redwait],testtime ;20
  69.     jnae zzz
  70.     mov eax,6
  71.     mov ebx,clip_file
  72.     mov ecx,0
  73.     mov edx,-1
  74.     mov esi,path
  75.     mcall
  76.     cmp eax,0xffffffff
  77.     je  erroff ;errexit
  78.     mov dword [redwait],0
  79. zzz:
  80.     delay 5
  81.     inc dword [redwait]
  82.     jmp still
  83.  
  84. file_is_open:
  85.     mov eax,32
  86.     mov ebx,clip_file
  87.     mcall
  88.     jmp openoff
  89.  
  90. key:                          ; key
  91.     mcall                   ; read (eax=2)
  92.     jmp  still
  93. button:                       ; button
  94.     mov  eax,17                 ; get id
  95.     mcall
  96.     cmp  ah,1                   ; button id=1 ?
  97.     jne  still
  98.     mov  eax,-1                 ; close this program
  99.     mcall
  100.  
  101. red:
  102.     call redproc
  103.     jmp  still
  104.  
  105. dlg_file  db 'SYSXTREE   '
  106. clip_file db 'OPENCLPACLP'
  107.           db 'O'  ;Dialog type O-open S-save
  108.           db 0    ;Marker
  109. redwait dd 0
  110. }
  111.  
  112. macro savedialog redproc,openoff,erroff,path,testtime
  113. {
  114. local still, dlg_file, clip_file, redwait, zzz3
  115. local button, key, red, zzz, still, zzz2, incf, file_is_open
  116.  
  117.     mov ecx,200
  118. zzz3:
  119.     mov byte [path+ecx-1],0
  120.     loop zzz3
  121.  
  122.     dec byte [clip_file+7]
  123. incf:
  124.     inc byte [clip_file+7]
  125.     mov eax,6
  126.     mov ebx,clip_file
  127.     mov ecx,0
  128.     mov edx,-1
  129.     mov esi,path
  130.     mcall
  131.     cmp byte [clip_file+7],'Z'
  132.     je  erroff
  133.     cmp eax,0xffffffff
  134.     jne incf
  135.  
  136.     mov ecx,200
  137. zzz2:
  138.     mov byte [path+ecx],0
  139.     loop zzz2
  140.  
  141.     mov ebx,clip_file
  142.     mov ecx,path
  143.     mov edx,100
  144.     mov esi,0
  145.     mov eax,33
  146.     mcall
  147.  
  148.     mov ebx,dlg_file
  149.     mov ecx,clip_file
  150.     mov eax,19
  151.     mcall
  152.  
  153. still:
  154.     scevent red,key,button
  155.     cmp byte [path],0
  156.     jne file_is_open
  157.     cmp dword [redwait],testtime ;20
  158.     jnae zzz
  159.     mov eax,6
  160.     mov ebx,clip_file
  161.     mov ecx,0
  162.     mov edx,-1
  163.     mov esi,path
  164.     mcall
  165.     cmp eax,0xffffffff
  166.     je  erroff ;errexit
  167.     mov dword [redwait],0
  168. zzz:
  169.     delay 5
  170.     inc dword [redwait]
  171.     jmp still
  172.  
  173. file_is_open:
  174.     mov eax,32
  175.     mov ebx,clip_file
  176.     mcall
  177.     jmp openoff
  178.  
  179. key:                          ; key
  180.     mcall                   ; read (eax=2)
  181.     jmp  still
  182. button:                       ; button
  183.     mov  eax,17                 ; get id
  184.     mcall
  185.     cmp  ah,1                   ; button id=1 ?
  186.     jne  still
  187.     mov  eax,-1                 ; close this program
  188.     mcall
  189.  
  190. red:
  191.     call redproc
  192.     jmp  still
  193.  
  194. dlg_file  db 'SYSXTREE   '
  195. clip_file db 'SAVECLPACLP'
  196.           db 'S'  ;Dialog type O-open S-save
  197.           db 0    ;Marker
  198. redwait dd 0
  199. }
  200.  
  201.  
  202. ; RANDOM - generate random count (small)
  203. ; (SYNTAX)  RANDOM MaxCount,OutArgument
  204. ; (SAMPLE)  RANDOM 10000,eax
  205. ; ( NOTE )  Maxint<65536 ; use random 65536,eax for more combinations
  206.  
  207. randomuse = 0
  208.  
  209. macro random arg1,arg2
  210. {
  211. local rxproc
  212. randomuse = randomuse + 1
  213.  
  214.       jmp rxproc
  215.  
  216. if defined randomuse & randomuse = 1
  217. randomproc:
  218.       jmp rnj
  219. rsx1 dw 0x4321
  220. rsx2 dw 0x1234
  221. rnj:
  222. ;    mov eax,arg1
  223.     push bx
  224.     push cx
  225.     push dx
  226.     push si
  227.     push di
  228.     mov cx,ax
  229.     mov ax,word ptr rsx1
  230.     mov bx,word ptr rsx2
  231.     mov si,ax
  232.     mov di,bx
  233.     mov dl,ah
  234.     mov ah,al
  235.     mov al,bh
  236.     mov bh,bl
  237.     xor bl,bl
  238.     rcr dl,1
  239.     rcr ax,1
  240.     rcr bx,1
  241.     add bx,di
  242.     adc ax,si
  243.     add bx,0x62e9
  244.     adc ax,0x3619
  245.     mov word ptr rsx1,bx
  246.     mov word ptr rsx2,ax
  247.     xor dx,dx
  248.     cmp ax,0
  249.     je nodiv
  250.     cmp cx,0
  251.     je nodiv
  252.     div cx
  253. nodiv:
  254.     mov ax,dx
  255.     pop di
  256.     pop si
  257.     pop dx
  258.     pop cx
  259.     pop bx
  260. ;    mov arg2,0
  261. ;    mov arg2,eax
  262.     ret
  263. end if
  264.  
  265. rxproc:
  266.     mov eax,arg1
  267.     call randomproc
  268.     mov arg2,0
  269.     mov arg2,eax
  270. }
  271.  
  272. macro scank
  273. {
  274.     mov eax,10
  275.     mcall
  276. }
  277.  
  278. macro putpix x,y,color
  279. {
  280.     mov ebx,x
  281.     mov ecx,y
  282.     mov edx,color
  283.     mov eax,1
  284.     mcall
  285. }
  286.  
  287. macro puttxt x,y,offs,size,color
  288. {
  289.     mov ebx,x
  290.     shl ebx,16
  291.     add ebx,y
  292.     mov ecx,color
  293.     mov edx,offs
  294.     mov esi,size
  295.     mov eax,4
  296.     mcall
  297. }
  298.  
  299. ;_ equ '____'
  300.  
  301. ;macro libtest x,y,color
  302. ;{
  303. ;if x = as dword
  304. ;    mov ebx,x
  305. ;end if
  306. ;    mov ecx,y
  307. ;    mov edx,color
  308. ;    mov eax,1
  309. ;    mcall
  310. ;}
  311.  
  312.  
  313. macro outcount data, x, y, color, numtype
  314. {
  315.     mov ecx,data
  316.     mov ebx,numtype
  317.     mov bl,0
  318.     mov edx,x*65536+y
  319.     mov esi,color
  320.     mov eax,47
  321.     mcall
  322. }
  323.  
  324. ; SCEVENT - Scan event
  325.  
  326. macro scevent red,key,but
  327. {
  328.     mov eax,11
  329.     mcall
  330.     dec eax
  331.     jz  red
  332.     dec eax
  333.     jz  key
  334.     dec eax
  335.     jz  but
  336. }
  337.  
  338. ; WTEVENT - Wait event
  339.  
  340. macro wtevent red,key,but
  341. {
  342.     mov eax,10
  343.     mcall
  344.     dec eax
  345.     jz  red
  346.     dec eax
  347.     jz  key
  348.     dec eax
  349.     jz  but
  350. }
  351.  
  352. ; TIMEEVENT - Wite for event with timeout
  353.  
  354. macro timeevent xfps,noevent,red,key,but
  355. {
  356.     mov eax,23
  357.     mov ebx,xfps
  358.     mcall
  359.     cmp eax,0
  360.     je  noevent
  361.     dec eax
  362.     jz  red
  363.     dec eax
  364.     jz  key
  365.     dec eax
  366.     jz  but
  367. }
  368.  
  369.  
  370. ; CLOSE - Close program
  371.  
  372. macro close
  373. {
  374.     mov eax,-1
  375.     mcall
  376. }
  377.  
  378. ; DELAY - Create delay 1/100 sec
  379. ; (SYNTAX)  Delay time
  380. ; (SAMPLE)  Delay 100   ;delay 2 sec 1/100*200=2 sec
  381.  
  382. macro delay arg1
  383. {
  384.     mov eax,5
  385.     mov ebx,arg1
  386.     mcall
  387. }
  388.  
  389. macro colorwindow arg1,arg2,arg3,arg4,arg5,arg6,arg7
  390. {
  391.     mov ebx,arg1*65536+arg3
  392.     mov ecx,arg2*65536+arg4
  393.     mov edx,arg5
  394.     mov esi,arg6
  395.     mov edi,arg7
  396.     mov eax,0
  397.     mcall
  398. }
  399.  
  400. ; LABEL - Put text to frame
  401. ; (SYNTAX)  LABEL Xstart,Ystart,'Text',Color
  402. ; (SAMPLE)  LABEL 10,12,'Hello World!',cl_Green+font_Big
  403.  
  404. macro label arg1,arg2,arg3,arg4
  405. {
  406. local asd,lab
  407.     jmp asd
  408. lab db  arg3                 ;arg label
  409. asd:
  410.     mov ebx,arg1             ;arg1=y arg2=x
  411.     shl ebx,16
  412.     add ebx,arg2
  413.     mov ecx,arg4             ;arg4 color
  414.     mov edx,lab
  415.     mov esi,asd-lab          ;calc size
  416.     mov eax,4
  417.     mcall
  418. }
  419.  
  420. ;Key's
  421. key_Up     equ 178
  422. key_Down   equ 177
  423. key_Right  equ 179
  424. key_Left   equ 176
  425. key_Esc    equ 27
  426. key_Space  equ 32
  427. key_Enter  equ 13
  428. key_Bspace equ 8
  429. key_F1     equ 50
  430. key_F2     equ 51
  431. key_F3     equ 52
  432. key_F4     equ 53
  433. key_F5     equ 54
  434. key_F6     equ 55
  435. key_F7     equ 56
  436. key_F8     equ 57
  437. key_F9     equ 48
  438. key_F10    equ 49
  439. key_F11    equ 68
  440. key_F12    equ 255
  441. key_Home   equ 180
  442. key_End    equ 181
  443. key_PgUp   equ 184
  444. key_PgDown equ 183
  445.  
  446. ;Attributes
  447.  
  448. ;Window Attributes
  449. window_Skinned equ 0x04000000
  450. window_Type2   equ 0x02000000
  451. window_Type1   equ 0x00000000
  452. window_Reserve equ 0x01000000
  453.  
  454. ;Font Attributes
  455. font_Big  equ 0x10000000
  456.  
  457. ;Colors
  458. cl_White  equ 0x00ffffff
  459. cl_Black  equ 0x00000000
  460. cl_Grey   equ 0x00888888
  461. cl_Red    equ 0x00ff0000
  462. cl_Lime   equ 0x0000ff00
  463. cl_Green  equ 0x0000af00
  464. cl_Blue   equ 0x000000ff
  465. cl_Purple equ 0x008080ff
  466. cl_Violet equ 0x008040ff
  467. cl_Cyan   equ 0x0040e0ff
  468.