Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Дневники и блоги —› My Dos Explorer
Посл.ответ Сообщение

Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 02 марта 2010 23:58 · Поправил: Rockphorr
· Личное сообщение · #1

В связи с тем, что васм часто падает в даун - то ддос то смена хостера
заведу и тут кусочек своего блога
Дневники и блоги как демоны и боги
...
я наткнулся сегодня что директива assume может существенно сократить программу выкинув лишние префиксы
...
очередной релиз моей проги

92a0_02.03.2010_CRACKLAB.rU.tgz - MDE22.ZIP




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 03 марта 2010 17:46
· Личное сообщение · #2

помоему ранее ты исходники выкладывал тоже?!

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 04 марта 2010 02:41
· Личное сообщение · #3

В чём уникальность чего чуда?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 04 марта 2010 09:14 · Поправил: Rockphorr
· Личное сообщение · #4

mak
из сурцов выкладывал только часть самого банального кода
на васме непосредственно запостщена процедура создания списка букв дисков

Isaev
уникальность сего чуда я даже не знаю - это просто результат моего времяпровождения за домашним компом


зы:
вчера удалось закончить очередной этап технологического совершенствования, теперь lis модуля загружаются и импорт можно проводить по имени модуля
(весь мой оконный движок можно выгрузить и подгрузить)
радости было полные штаны




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 04 марта 2010 17:09
· Личное сообщение · #5

Уникальности нету , но это своеобразный фэшн программирования , так как интерес более привлекает примеры создания и расширения типо досовских оболочек , что стало щас очень модным с активным наплывом разнообразных гуи модулей. По моей памяти , все кто интересовался интересовались лишь созданием такого окна , и его расскраской.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 05 марта 2010 21:52 · Поправил: Rockphorr
· Личное сообщение · #6

в процессе работы над проектом родилась интересная тема
http://www.wasm.ru/forum/viewtopic.php?id=36611

+ на этом форуме подсчет скачиваний не ведется ???

зы как много меня убеждали что это уг



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 18 апреля 2010 21:05 · Поправил: Rockphorr
· Личное сообщение · #7

В процессе совершенствования своего "чуда" столкнулся с фокусом многомодульного программирования

пусть например пишется модуль на асме

Code:
  1. some segment
  2. somedata word ?
  3. some1proc proc
  4.  push DS
  5.  mov AX,CS
  6.  mov DS,AX
  7.  mov AX,1
  8.  mov somedata,AX
  9.  pop DS
  10. some1proc endp
  11.  
  12. some ends


так вот все это дело скомпилируется как есть за исключением

Code:
  1. mov somedata,AX


она скомпилиться в

Code:
  1. mov CS:somedata,AX


дабы избавится от лишних префиксов нужно не забивать на расстановку директив ASSUME

Code:
  1.  
  2. assume DS:some
  3. some segment
  4. somedata word ?
  5. some1proc proc
  6.  push DS
  7.  mov AX,CS
  8.  mov DS,AX
  9.  mov AX,1
  10.  mov somedata,AX
  11.  pop DS
  12.  
  13. some1proc endp
  14.  
  15. some ends





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 18 апреля 2010 21:21 · Поправил: OKOB
· Личное сообщение · #8

Rockphorr пишет:
нужно не забивать на расстановку директив ASSUME


Писая под ДОС не лишне также не пренебрегать сегментацией программы с назначением классов сегментов и соответствующим размещением кода и данных (инициализированных и нет) в соответствии с выбранной моделью памяти. А в данном случае когда и код и данные свалены в один сегмент какой смысл вообще с чехардой с доступом к данным через адресацию с использованием DS? Компилятор сделал все правильно, а вы пытаясь экономить один байт на префиксе наплодили кучу кода или пример неудачный ИМХО.

Code:
  1. some segment
  2. somedata word ?
  3. some1proc proc
  4.  mov AX,1
  5.  mov CS:somedata,AX
  6.  ...
  7. some1proc endp
  8.  
  9. some ends


Все вышеописанное справедливо для ЕХЕ исполняемых файлов. Если же у вас СОМ, то это общая практика, когда в самом начале две директивы.

Code:
  1. org 100h
  2. assume CS:some, DS:some, ES:some


А многомодульный код собирается через include.

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 19 апреля 2010 13:47 · Поправил: Rockphorr
· Личное сообщение · #9

OKOB пишет:
Писая под ДОС не лишне также не пренебрегать сегментацией программы с назначением классов сегментов и соответствующим размещением кода и данных (инициализированных и нет) в соответствии с выбранной моделью памяти. А в данном случае когда и код и данные свалены в один сегмент какой смысл вообще с чехардой с доступом к данным через адресацию с использованием DS? Компилятор сделал все правильно, а вы пытаясь экономить один байт на префиксе наплодили кучу кода или пример неудачный ИМХО.

Все вышеописанное справедливо для ЕХЕ исполняемых файлов. Если же у вас СОМ, то это общая практика, когда в самом начале две директивы.

Code:
org 100h
assume CS:some, DS:some, ES:some

А многомодульный код собирается через include.


Пиша а не писая (пишу и писаю - разные действия)

дело в том, что пример содержит лишь одну инструкцию записи, реально их естественно больше

многомодульный код собирается перечислением все obj файлов линкеру или используя inсludelib в сурце и переменной окружения lib

я, ковыряясь со своим командером, на это не обратил сразу внимания - скомпилировалось, работает, пишу дальше



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 21 апреля 2010 22:37
· Личное сообщение · #10

состряпал диалог выбор файла
функциональности никакой - только перемещение курсора(стрелками и ТАБОМ!!!), правка текста и выход по нажатию esc
движок у интерфейса тот-же что и у командера, быть может пофиксен слегка поэтому с выложенной тут версией скорее всего не совместим

3ca5_21.04.2010_CRACKLAB.rU.tgz - TF.ZIP



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 12 мая 2010 23:13 · Поправил: Rockphorr
· Личное сообщение · #11

Куски моих исходников с васма...
любителям покодить под дос и новичкам будет интересно ...


Этот код создает массив с буквами дисков в системе
Code:
  1. ;=======[ SUBROUTINE ]============================
  2. ; Set current drive
  3. ;-------------------------------------------------
  4. ; Return:
  5. ;-------------------------------------------------
  6. ; Parameters:
  7. ; AL - drive leter
  8. dos_fn\
  9.          =       0Eh
  10. ;-------------------------------------------------
  11. @Service_public\
  12.          Set_Drive
  13.          push    DX
  14.          push    AX
  15.          ;-----------------------------------------
  16.          IF      @Alone
  17. @Call_far\
  18.          wrap_bem,@AL_Case_Up_ID   
  19.          ELSE
  20.          call    AL_Case_Up
  21.          ENDIF
  22.          ;-----------------------------------------
  23.          mov     DL,'Z'
  24.          cmp     DL,AL
  25.          jb      _exit
  26.          ;-----------------------------------------
  27.          mov     DL,'A'
  28.          cmp     AL,DL
  29.          jb      _exit
  30.          ;-----------------------------------------
  31.          cmp     AH,':'
  32.          stc
  33.          jnz     _exit
  34.          ;-----------------------------------------
  35.          xchg    AL,DL
  36.          sub     DL,AL
  37.          mov     AH,dos_fn
  38.          int     21h
  39.          clc
  40.          ;-----------------------------------------
  41. _exit:
  42.          pop     AX
  43.          pop     DX
  44. @Service_end
  45.  
  46. ;=======[ SUBROUTINE ]============================
  47. ; Get current drive
  48. ;-------------------------------------------------
  49. ; Return:
  50. ; AL = drive letter
  51. ; AH = ':'
  52. ;-------------------------------------------------
  53. ; Parameters:
  54. dos_fn\
  55.          =       19h
  56. ;-------------------------------------------------
  57. @Service_public\
  58.          Get_Drive
  59.          ;-----------------------------------------
  60.          mov     AH,dos_fn
  61.          int     21h
  62.          add     AL,'A'
  63.          mov     AH,':'
  64.          ;-----------------------------------------
  65. @Service_end
  66.  
  67. ;=======[ SUBROUTINE ]============================
  68. ; Create list of drive leters
  69. ;-------------------------------------------------
  70. ; Return:
  71. ; AL = current drive
  72. ; AH = total drives
  73. ;-------------------------------------------------
  74. ; Parameters:
  75. ; ES:DI - seg:ofs(area of drive letters)
  76. dos_fn\
  77.          =       0Eh
  78. dos_fn_a\
  79.          =       19h
  80. ;-------------------------------------------------
  81. @Service_public\
  82.          Create_Drive_List
  83.          push    DI
  84.          push    CX
  85.          push    DX
  86.          ;-----------------------------------------
  87.          call    Create_floppy_list
  88.          mov     CH,AL
  89.          mov     CL,1+26-2
  90.          ;-----------------------------------------
  91.          ; CH - total floppy drives
  92.          ; DH - current drive
  93.          ;-----------------------------------------
  94. _get:
  95.          IF      @Alone
  96. @Call_far\
  97.          storage_wos,@Get_Drive_ID
  98.          ELSE
  99.          call    Get_Drive
  100.          ENDIF
  101.          ;-----------------------------------------
  102.          cmp     CL,1+26-2
  103.          je      _first
  104.          cmp     AL,DL
  105.          je      _write
  106.          ;-----------------------------------------
  107. _next:
  108.          cmp     CL,1
  109.          je      _last
  110.          mov     DL,1+26
  111.          sub     DL,CL
  112.          add     DL,'A'
  113.          ;-----------------------------------------
  114.          ; DL - drive of iteration
  115.          ;-----------------------------------------
  116. _set:
  117.          mov     AL,DL
  118.          mov     AH,':'
  119.          ;-----------------------------------------
  120.          IF      @Alone
  121. @Call_far\
  122.          storage_wos,@Set_Drive_ID
  123.          ELSE
  124.          call    Set_Drive
  125.          ENDIF
  126.          ;-----------------------------------------
  127.          dec     CL
  128.          jnz     _get
  129.          jz      _exit
  130.          ;-----------------------------------------
  131. _first:
  132.          mov     DH,AL
  133.          jmp\
  134.          short   _next
  135.          ;-----------------------------------------
  136. _last:
  137.          mov     DL,DH
  138.          jmp\
  139.          short   _set
  140.          ;-----------------------------------------
  141. _write:
  142.          stosb
  143.          inc     CH
  144.          jmp\
  145.          short   _next
  146.          ;-----------------------------------------
  147. _exit:
  148.          mov     AH,CH
  149.          mov     AL,DH
  150.          ;-----------------------------------------
  151.          pop     DX
  152.          pop     CX
  153.          pop     DI
  154. @Service_end



кусочек кода отвечающий за вывод строки в прямоуголник на экране

Code:
  1. ;=======[ SUBROUTINE ]============================
  2. ; Write field text
  3. ;-------------------------------------------------
  4. ; Parameters:
  5. ; DS:SI - seg:ofs(Widget)
  6. @Activity\; 0FFh is active, 000h is passive
  7.          =       -08h 
  8. ;-------------------------------------------------
  9. @Routine_private\
  10.          Fld_Write_Text
  11.          push    BX
  12.          push    CX
  13.          push    DX
  14.          push    AX
  15.          ;-----------------------------------------
  16.          mov     CX,(Widget PTR [SI])\
  17.                  .Widget_Total
  18.          stc
  19.          jcxz    $exit
  20.          call    Fld_Get_Capacity
  21.          mul     AH
  22.          mov     DX,AX
  23.          mov     BX,(Widget PTR [SI])\
  24.                  .Widget_Arrow
  25.          sub     BX,(Widget PTR [SI])\
  26.                  .Widget_Base
  27.          jc      $less
  28.          cmp     BX,DX
  29.          jae     $greater
  30.          jmp\
  31.          short   $tail
  32.          ;-----------------------------------------
  33. $less:
  34.          add     (Widget PTR [SI])\
  35.                  .Widget_Base,BX
  36.          mov     AX,BX
  37.          jmp\
  38.          short   $tail
  39.          ;-----------------------------------------
  40. $greater:
  41.          mov     AX,BX
  42.          sub     AX,DX
  43.          inc     AX
  44.          add     (Widget PTR [SI])\
  45.                  .Widget_Base,AX
  46.          ;-----------------------------------------
  47. $tail:
  48.          mov     CX,DX
  49. $loop:
  50.          push    [BP+@Activity]
  51.          mov     AX,DX
  52.          sub     AX,CX
  53.          push    AX
  54.          push    (Widget PTR [SI])\
  55.                  .Widget_Total
  56.          push    (Widget PTR [SI])\
  57.                  .Widget_Arrow
  58.          push    (Widget PTR [SI])\
  59.                  .Widget_Base
  60.          mov     AX,(Widget PTR [SI])\
  61.                  .Widget_Coords
  62.          push    AX
  63.          call    Fld_Write_Tail
  64.          loop    $loop
  65.          clc
  66.          ;-----------------------------------------
  67. $exit:
  68.          pop     AX
  69.          pop     DX
  70.          pop     CX
  71.          pop     BX
  72. @Routine_end
  73.  
  74. ;=======[ SUBROUTINE ]============================
  75. ; Write tail
  76. ;-------------------------------------------------
  77. ; Parameters:
  78. ; DS:SI - seg:ofs(widget)
  79. @Activity\
  80.          =       0Eh
  81. @Ordinal\
  82.          =       0Ch
  83. @Total\
  84.          =       0Ah
  85. @Arrow\
  86.          =       8
  87. @Base\
  88.          =       6
  89. @Coords\
  90.          =       4
  91. ;-------------------------------------------------
  92. @Routine_private\; my macro of std prologue
  93.          Fld_Write_Tail
  94.          push    DS
  95.          push    ES
  96.          push    SI
  97.          push    DI
  98.          push    CX
  99.          push    DX
  100.          ;-----------------------------------------
  101.          call    Fld_Seek_Style
  102.          ;-----------------------------------------
  103.          mov     AX,ES: (Field PTR [DI])\
  104.                  .Field_Symbol_Quantity
  105.          or      AL,AL
  106.          jz      $exit
  107.          or      AH,AH
  108.          jz      $exit
  109.          ;-----------------------------------------
  110.          lds     SI,(Widget PTR [SI])\
  111.                  .Widget_Stuff_Address
  112.          mov     AX,ES: (Field PTR [DI])\
  113.                  .Field_Coords
  114.          add     [BP+@Coords],AL
  115.          add     [BP+@Coords]+1,AH
  116.          ;-----------------------------------------
  117.          mov     AX,[BP+@Ordinal]
  118.          div     ES: BYTE PTR (Field PTR [DI])\
  119.                  .Field_Symbol_Quantity
  120.          xchg    AL,AH
  121.          add     AL,[BP+@Coords]
  122.          add     AH,[BP+@Coords]+1
  123.          ;-----------------------------------------
  124.          IF      @Alone
  125. @P_Locate\
  126.                  AX
  127. @Call_far\
  128.          field_dso,@Set_AX_Coords_ID
  129.          ELSE    
  130. @Locate\
  131.                  AX
  132.          ENDIF
  133.          ;-----------------------------------------
  134.          mov     DX,[BP+@Ordinal]
  135.          add     DX,[BP+@Base]
  136.          mov     CX,[BP+@Activity]
  137.          jcxz    $passive
  138.          cmp     DX,[BP+@Arrow]
  139.          jne     $active
  140.          call    ES: (Field PTR [DI])\
  141.                  .Field_Method_Cursor; set cur coord
  142.          ;-----------------------------------------
  143. $active:
  144.          mov     AX,CS:Field_Palette
  145.          xchg    AL,AH
  146.          jmp\
  147.          short   $color
  148. $passive:
  149.          mov     AX,CS:Field_Palette
  150.          ;-----------------------------------------
  151.          IF      @Alone
  152. @P_Color\
  153.                  AX,Color
  154. @Call_far\
  155.          field_dso,@Set_Color_ID
  156. @Call_far\
  157.          field_affix,@Measure_String_ID
  158.          ELSE
  159. @Color
  160.          call    Measure_String
  161.          ENDIF
  162.          ;-----------------------------------------
  163.          inc     AX
  164.          cmp     AX,[BP+@Total]
  165.          jbe     $inside
  166.          mov     AX,[BP+@Total]
  167.          ;-----------------------------------------
  168. $inside:
  169.          cmp     DX,AX
  170.          jae     $space
  171.          add     SI,DX
  172.          lodsb
  173.          or      AL,AL
  174.          jnz     $write
  175.          ;-----------------------------------------
  176. $space:
  177.          mov     AL,ES: (Field PTR [DI])\
  178.                  .Field_Space_Symbol
  179.          ;-----------------------------------------
  180. $write:
  181.          IF      @Alone
  182. @P_Out_One\
  183.                  AL
  184. @Call_far\
  185.          field_dso,@Out_AL_Symbol_ID
  186.          ELSE
  187. @Out_One
  188.          ENDIF
  189.          ;-----------------------------------------
  190. $exit:
  191.          pop     DX
  192.          pop     CX
  193.          pop     DI
  194.          pop     SI
  195.          pop     ES
  196.          pop     DS
  197. @Routine_end      0Ch




Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 12 мая 2010 23:24 · Поправил: Rockphorr
· Личное сообщение · #12

много думал я как увязать древовидную структуру с элементом управления для навигации по обычнному массиву (аля дос листбокс)

сам элемент управления пишется используя структуру

Code:
  1. wijet struc
  2. wijet_coords word ? ; коодинаты
  3. wijet_base word ? ; первый отображаемый (нужны для скрола)
  4. wijet_frame word ? ; всего элементов для отображения (нужны для скрола)
  5. wijet_arroq word ? ; индекс элелемента под курсором
  6. wijet_total word ? ; всего элементов
  7. widjet_stuff dword ? ; адрес списков узлов
  8. wijet ends


и сегодня меня посетила муза - появилась такая идея

1. строим дерево
2. проводим обзор этого дерева и строим обычный список где после каталога идут все его подкаталоги нужного уровня глубины
3. привязываем полученный список к структуре приведенной выше

зы. все оказалось так просто, а сколько творческих страданий ... щас придет SergX и все раскритикует



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 13 июня 2010 15:11
· Личное сообщение · #13

SHAMUS - игра моего детства, недавно прошел на уровне для новичков
сначала парился уворачивался бегал из комнаты в комнату а потом надоело, стал читером - четоматик 2 жизни + опция лок



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 11 августа 2010 14:44 · Поправил: Rockphorr
· Личное сообщение · #14

отладочная демка мультистрочного виджета

763d_11.08.2010_CRACKLAB.rU.tgz - NWSTL.ZIP



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 11 августа 2010 14:47 · Поправил: Rockphorr
· Личное сообщение · #15

Code:
  1.  
  2. ;=======[ SUBROUTINE ]============================
  3. ; Write Ladle text
  4. ;-------------------------------------------------
  5. ; Parameters:
  6. ; DS:SI - seg:ofs(Wijet)
  7. @Focus\; 0FFh is active, 000h is passive
  8.          =       -08h 
  9. ;-------------------------------------------------
  10. @Routine_private\
  11.          Ldl_Write_Text
  12.          push    BX
  13.          push    CX
  14.          push    DX
  15.          push    AX
  16.          ;-----------------------------------------
  17.          mov     CX,(Wijet PTR [SI])\
  18.                  .Wijet_Total; ¬ Єб. Ґ¬Є®бвм ЎгдҐа 
  19.          stc
  20.          jcxz    $exit
  21.          call    Ldl_Get_Capacity
  22.          mov     DX,AX
  23.          mov     BX,(Wijet PTR [SI])\
  24.                  .Wijet_Glint
  25.          sub     BX,(Wijet PTR [SI])\
  26.                  .Wijet_Base
  27.          jc      $less
  28.          cmp     BX,DX
  29.          jae     $greater
  30.          jmp\
  31.          short   $tail
  32.          ;-----------------------------------------
  33. $less:
  34.          add     (Wijet PTR [SI])\
  35.                  .Wijet_Base,BX
  36.          mov     AX,BX
  37.          jmp\
  38.          short   $tail
  39.          ;-----------------------------------------
  40. $greater:
  41.          mov     AX,BX
  42.          sub     AX,DX
  43.          inc     AX
  44.          add     (Wijet PTR [SI])\
  45.                  .Wijet_Base,AX
  46.          ;-----------------------------------------
  47. $tail:
  48.          ; нв  в®зЄ  ®бв ­®ў  ўбЇ«лўҐв Ї®б«Ґ
  49.          ; § ЇгбЄ  Їа®ЈЁ Ї®¤ ®в« ¤Є®©
  50.          ; зв®Ўл Їа®йҐ Ўл«® ®аЁҐ­вЁа®ў вмбп
  51.          int     3
  52.          mov     CX,DX
  53. $loop:
  54.          mov     BX,DX
  55.          sub     BX,CX
  56.          mov     AX,[BP+@Focus]
  57.          call    Ldl_Write_Slice
  58.          loop    $loop
  59.          clc
  60.          ;-----------------------------------------
  61. $exit:
  62.          pop     AX
  63.          pop     DX
  64.          pop     CX
  65.          pop     BX
  66. @Routine_end
  67.  
  68. ;=======[ SUBROUTINE ]============================
  69. ; Get capacity
  70. ;-------------------------------------------------
  71. ; Parameters:
  72. ;-------------------------------------------------
  73. @Service_private\
  74.          Ldl_Get_Capacity
  75.          push    ES
  76.          push    DI
  77.          ;-----------------------------------------
  78.          call    Ldl_Seek_Style
  79.          ;Ї®б«Ґ ES:DI гЄ §лў ов ­  Ї а ¬Ґвал бвЁ«п
  80.          ;-----------------------------------------
  81.          mov     AX,ES: (Ladle PTR [DI])\
  82.                  .Ladle_Symbol_Quantity
  83.          ;Ї®б«Ґ ў AL иЁаЁ­  Ё ў AH ўлб®в  ўЁ¤¦Ґв 
  84.          mov     DX,AX
  85.          mul     AH
  86.          ; Ґ¬Є®бвм д३¬  ўЁ¤¦Ґв 
  87.          ;-----------------------------------------
  88. $exit:
  89.          pop     DI
  90.          pop     ES
  91. @Service_end
  92.  
  93. ;=======[ SUBROUTINE ]============================
  94. ; Locate Slice in Ladle
  95. ;-------------------------------------------------
  96. ; Parameters:
  97. ; AX - glint
  98. ; BX - ordinal
  99. ;-------------------------------------------------
  100. @Service_private\
  101.          Ldl_Locate_Slice
  102.          push    ES
  103.          push    DI
  104.          push    CX
  105.          push    DX
  106.          ;-----------------------------------------
  107.          mov     CX,AX
  108.          call    Ldl_Seek_Style
  109.          ;-----------------------------------------
  110.          mov     DX,(Wijet PTR [SI])\
  111.                  .Wijet_Coords
  112.          mov     AX,ES: (Ladle PTR [DI])\
  113.                  .Ladle_Coords
  114.          add     DL,AL
  115.          add     DH,AH
  116.          ;-----------------------------------------
  117.          mov     AX,BX
  118.          div     ES: BYTE PTR (Ladle PTR [DI])\
  119.                  .Ladle_Symbol_Quantity
  120.          xchg    AL,AH
  121.          add     AL,DL
  122.          add     AH,DH
  123.          ;-----------------------------------------
  124.          IF      @Alone
  125. @P_Locate\
  126.                  AX
  127. @Call_far\
  128.          Ladle_dso,@Set_AX_Coords_ID
  129.          ELSE    
  130. @Locate\
  131.                  AX
  132.          ENDIF
  133.          ;-----------------------------------------
  134.          cmp     BX,CX
  135.          jne     $exit
  136.          call    ES: (Ladle PTR [DI])\
  137.                  .Ladle_Method_Cursor
  138.          ;-----------------------------------------
  139. $exit:   
  140.          pop     DX
  141.          pop     CX
  142.          pop     DI
  143.          pop     ES
  144. @Service_end
  145.  
  146. ;=======[ SUBROUTINE ]============================
  147. ; Measure Slice
  148. ;-------------------------------------------------
  149. ; Return:
  150. ; AX = length()
  151. ; DX = volume()
  152. ;-------------------------------------------------
  153. ; Parameters:
  154. ; AX - length()
  155. ;-------------------------------------------------
  156. @Service_private\
  157.          Ldl_Measure_Slice
  158.          push    ES
  159.          push    DI
  160.          ;-----------------------------------------
  161.          mov     DX,AX
  162.          call    Ldl_Seek_Style
  163.          ;-----------------------------------------
  164.          div     ES: BYTE PTR (Ladle PTR [DI])\
  165.                  .Ladle_Symbol_Quantity
  166.          or      AH,AH
  167.          jz      $skip
  168.          inc     AL
  169. $skip:
  170.          mul     ES: BYTE PTR (Ladle PTR [DI])\
  171.                  .Ladle_Symbol_Quantity
  172.          xchg    AX,DX
  173.          ;-----------------------------------------
  174.          pop     DI
  175.          pop     ES
  176. @Service_end
  177.  
  178. ;=======[ SUBROUTINE ]============================
  179. ; Find Next EOL
  180. ; ў®§ўа й Ґв Є®«ЁзҐбвў® бЁ¬ў®«®ў ®в Ў §л ¤®
  181. ; б«Ґ¤го饣® EOL ў да Ј¬Ґ­вҐ ЎгдҐа 
  182. ; гЄ § ­­®Ј® а §¬Ґа  (volume)
  183. ;-------------------------------------------------
  184. ; Return:
  185. ; AX = length()
  186. ; DX = volume()
  187. ;-------------------------------------------------
  188. ; Parameters:
  189. ; AX - base
  190. ; DX - volume
  191. ;-------------------------------------------------
  192. @Service_private\
  193.          Ldl_Next_EOL
  194.          push    DS
  195.          push    SI
  196.          push    CX
  197.          ;-----------------------------------------
  198.          lds     SI,(Wijet PTR [SI])\
  199.                  .Wijet_Stuff_Address
  200.          ;§ Јаг¦ Ґ¬  ¤аҐб ЎгдҐа  б ⥪б⮬ ў DS:SI
  201.          add     SI,AX
  202.          mov     CX,DX
  203.          mov     DX,SI
  204.          inc     SI
  205.          ;-----------------------------------------
  206. $loop:
  207.          dec     SI
  208.          cld
  209.          lodsw
  210.          cmp     AX,0A0Dh
  211.          je      $ready
  212.          or      AL,AL
  213.          loopnz  $loop
  214.          ;-----------------------------------------
  215.          dec     SI
  216. $ready:
  217.          lea     AX,[SI]
  218.          sub     AX,DX
  219.          ;-----------------------------------------
  220.          pop     CX
  221.          pop     SI
  222.          pop     DS
  223. @Service_end
  224.  
  225. ;=======[ SUBROUTINE ]============================
  226. ; Write Slice in Ladle
  227. ;-------------------------------------------------
  228. ; Parameters:
  229. ; BX - Ordinal
  230. ; AX - Focus
  231. @Slice\
  232.          =       -2
  233. @Base\
  234.          =       -4
  235. @Gap\
  236.          =       -6
  237. @Capacity\
  238.          =       -8
  239. ;-------------------------------------------------
  240. @Routine_private\
  241.          Ldl_Write_Slice
  242.          sub     SP,8
  243.          push    CX
  244.          push    DX
  245.          ;-----------------------------------------
  246.          mov     CX,AX
  247.          ;-----------------------------------------
  248.          call    Ldl_Get_Capacity
  249.          or      AX,AX
  250.          jz      $exit
  251.          mov     [BP+@Capacity],AX
  252.          ;-----------------------------------------
  253.          mov     AX,CS:Ladle_Palette
  254.          jcxz    $Color
  255.          xchg    AL,AH
  256.          ;-----------------------------------------
  257.          IF      @Alone
  258. @P_Color\
  259.                  AX,Color
  260. @Call_far\
  261.          Ladle_dso,@Set_Color_ID
  262.          ELSE
  263. @Color
  264.          ENDIF
  265.          ;-----------------------------------------
  266.          xor     AX,AX
  267.          mov     [BP+@Base],AX
  268.          mov     [BP+@Gap],AX
  269.          mov     [BP+@Slice],AX
  270.          ;-----------------------------------------
  271. $loop:
  272.          mov     AX,(Wijet PTR [SI])\
  273.                  .Wijet_Base
  274.          add     AX,[BP+@Base]
  275.          mov     DX,[BP+@Capacity]
  276.          sub     DX,[BP+@Slice]
  277.          call    Ldl_Next_EOL
  278.          ;-----------------------------------------
  279.          call    Ldl_Measure_Slice
  280.          add     [BP+@Slice],DX
  281.          sub     DX,AX
  282.          add     [BP+@Base],AX
  283.          ;-----------------------------------------
  284.          mov     AX,(Wijet PTR [SI])\
  285.                  .Wijet_Glint
  286.          sub     AX,(Wijet PTR [SI])\
  287.                  .Wijet_Base
  288.          add     AX,[BP+@Gap]
  289.          call    Ldl_Locate_Slice
  290.          ;-----------------------------------------
  291.          cmp     BX,[BP+@Slice]
  292.          jb      $write
  293.          add     [BP+@Gap],DX
  294.          jmp     $loop
  295.          ;-----------------------------------------
  296. $write:
  297.          mov     AX,[BP+@Base]
  298.          sub     BX,[BP+@Gap]
  299.          call    Ldl_Get_Symbol
  300.          ;-----------------------------------------
  301.          IF      @Alone
  302. @P_Out_One\
  303.                  AL
  304. @Call_far\
  305.          Ladle_dso,@Out_AL_Symbol_ID
  306.          ELSE
  307. @Out_One
  308.          ENDIF
  309.          ;-----------------------------------------
  310. $exit:
  311.          pop     DX
  312.          pop     CX
  313. @Routine_end
  314.  
  315. ;=======[ SUBROUTINE ]============================
  316. ; Get Slice Symbol
  317. ;-------------------------------------------------
  318. ; Parameters:
  319. ; AX - bound
  320. ; BX - ordinal
  321. ;-------------------------------------------------
  322. @Service_private\
  323.          Ldl_Get_Symbol
  324.          cmp     BX,AX
  325.          jl      $load
  326.          ;-----------------------------------------
  327.          push    ES
  328.          push    DI
  329.          ;-----------------------------------------
  330.          call    Ldl_Seek_Style
  331.          mov     AL,ES: (Ladle PTR [DI])\
  332.                  .Ladle_Space_Symbol
  333.          pop     DI
  334.          pop     ES
  335.          ;-----------------------------------------
  336.          jmp\
  337.          short   $exit
  338.          ;-----------------------------------------
  339. $load:
  340.          push    DS
  341.          push    SI
  342.          ;-----------------------------------------
  343.          mov     AX,BX
  344.          add     AX,(Wijet PTR [SI])\
  345.                  .Wijet_Base
  346.          lds     SI,(Wijet PTR [SI])\
  347.                  .Wijet_Stuff_Address
  348.          add     SI,AX
  349.          cld
  350.          lodsb
  351.          ;-----------------------------------------
  352.          pop     SI
  353.          pop     DS
  354.          ;-----------------------------------------
  355. $exit:
  356. @Service_end
  357.  
  358.  



щас еще раз поглядел на то что запостил из ностальгических чувств и увидел, что Int3 осталась - отладочная версия функции



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 23 августа 2010 09:36
· Личное сообщение · #16

очередная сборка демки со скролом вверх и вниз

5d1d_22.08.2010_CRACKLAB.rU.tgz - NWST.ZIP



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 29 августа 2010 10:16
· Личное сообщение · #17

новый релиз 0.23 со встроенным редактором на основе демки (точнее двиг на котором работала демка был доработан по части скрола - теперь скрол более-менее работает и вврех и вниз)

планирую добавить коррекцию длинны перехода курсора чтоб курсор всегда прыгал куда ожидается - щас немного проскакивает в случаях когда строка в линии слишком короткая

http://www.wasm.ru/forum/viewtopic.php?pid=394672#p394672



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 11 января 2011 23:29 · Поправил: Rockphorr
· Личное сообщение · #18

Rockphorr пишет:
SHAMUS - игра моего детства, недавно прошел на уровне для новичков
сначала парился уворачивался бегал из комнаты в комнату а потом надоело, стал читером - четоматик 2 жизни + опция лок


уровень для продвинутых ничем не отличается просто монстров больше и они чуть быстрее и коварней
я думал будет другая карта ....


add на васме выложил новую английскую версию проги и виджета



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 11 мая 2012 19:29
· Личное сообщение · #19

В связи с тем что Rambler почта дала дубу на достаточно продолжительный период прошу когонить из администрации васма постучать мне сюда в личку чтобы сменить почтовый ящик на @yandex.ru



Ранг: 62.8 (постоянный), 11thx
Активность: 0.060
Статус: Участник

Создано: 01 сентября 2012 17:57
· Личное сообщение · #20

Rockphorr's Tools Pack
rdt version 0.25 (new version of my explorer)
takefile (демка для окна выбора файлов)

ce27_01.09.2012_EXELAB.rU.tgz - RTP25RU.ZIP

| Сообщение посчитали полезным: _ruzmaz_
 eXeL@B —› Дневники и блоги —› My Dos Explorer
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати