Subversion Repositories Kolibri OS

Rev

Rev 327 | Rev 592 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 327 Rev 485
1
;-----------------------------------------------------------------------------
1
;-----------------------------------------------------------------------------
2
; project name:      TINYPAD
2
; project name:      TINYPAD
3
; compiler:          flat assembler 1.67.18
3
; compiler:          flat assembler 1.67.18
4
; memory to compile: 3.0/9.0 MBytes (without/with size optimizations)
4
; memory to compile: 3.0/9.0 MBytes (without/with size optimizations)
5
; version:           4.0.4
5
; version:           4.0.4
6
; last update:       2007-02-08 (Feb 08, 2007)
6
; last update:       2007-02-08 (Feb 08, 2007)
7
; minimal kernel:    revision #270 (svn://kolibrios.org/kernel)
7
; minimal kernel:    revision #270 (svn://kolibrios.org/kernel)
8
;-----------------------------------------------------------------------------
8
;-----------------------------------------------------------------------------
9
; originally by:     Ville Michael Turjanmaa >> villemt@aton.co.jyu.fi
9
; originally by:     Ville Michael Turjanmaa >> villemt@aton.co.jyu.fi
10
; maintained by:     Mike Semenyako          >> mike.dld@gmail.com
10
; maintained by:     Mike Semenyako          >> mike.dld@gmail.com
11
;                    Ivan Poddubny           >> ivan-yar@bk.ru
11
;                    Ivan Poddubny           >> ivan-yar@bk.ru
12
;-----------------------------------------------------------------------------
12
;-----------------------------------------------------------------------------
13
; TODO (4.1.0):
13
; TODO (4.1.0):
14
;   - optimize drawing (reduce flickering)
14
;   - optimize drawing (reduce flickering)
15
;   - add vertical selection, undo, goto position, overwrite mode
15
;   - add vertical selection, undo, goto position, overwrite mode
16
;   - improve window drawing with small dimensions
16
;   - improve window drawing with small dimensions
17
;   - save settings to ini file, not to executable
17
;   - save settings to ini file, not to executable
18
;   - add prompt to save file before closing/opening
18
;   - add prompt to save file before closing/opening
19
;   - other bug-fixes and speed/size optimizations
19
;   - other bug-fixes and speed/size optimizations
20
;
20
;
21
; HISTORY:
21
; HISTORY:
22
; 4.0.4 (mike.dld)
22
; 4.0.4 (mike.dld)
23
;   bug-fixes:
23
;   bug-fixes:
24
;     - statusbar contained hint after dialog operation cancelled
24
;     - statusbar contained hint after dialog operation cancelled
25
;     - small drawing fix for gutter and line saved/modified markers
25
;     - small drawing fix for gutter and line saved/modified markers
26
;       (incorrect calculations)
26
;       (incorrect calculations)
27
;     - incorrect lines marking on Ctrl+V
27
;     - incorrect lines marking on Ctrl+V
28
;     - put filename of current tab into open/save dialog (noticed by Maxxxx32)
28
;     - put filename of current tab into open/save dialog (noticed by Maxxxx32)
29
;   changes:
29
;   changes:
30
;     - editor and other modifications to ease parts placement changing,
30
;     - editor and other modifications to ease parts placement changing,
31
;       including changes in look
31
;       including changes in look
32
;     - modified/saved colors now match those in MSVS
32
;     - modified/saved colors now match those in MSVS
33
;     - function 70 for *all* file operations (including diamond's fixes)
33
;     - function 70 for *all* file operations (including diamond's fixes)
34
;     - use memory manager instead of statically allocated region
34
;     - use memory manager instead of statically allocated region
35
;     - case-insensitive filenames input, to be able to open/save files with
35
;     - case-insensitive filenames input, to be able to open/save files with
36
;       non-latin chars in name (russian etc.)
36
;       non-latin chars in name (russian etc.)
37
;     - reduced flickering (changes checker)
37
;     - reduced flickering (changes checker)
38
;     - overall code cleanup
38
;     - overall code cleanup
39
;   new features:
39
;   new features:
40
;     - recode tables between CP866, CP1251 and KOI8-R (suggested by Victor)
40
;     - recode tables between CP866, CP1251 and KOI8-R (suggested by Victor)
41
;     - tabbed interface, ability to open several files in one app instance
41
;     - tabbed interface, ability to open several files in one app instance
42
;       (thanks IRC guys for ideas and testing)
42
;       (thanks IRC guys for ideas and testing)
43
;     - make any tab default to compile it disregarding currently active tab
43
;     - make any tab default to compile it disregarding currently active tab
44
;     - configuration dialog (colors, tabs positioning)
44
;     - configuration dialog (colors, tabs positioning)
45
; 4.0.3 (mike.dld)
45
; 4.0.3 (mike.dld)
46
;   bug-fixes:
46
;   bug-fixes:
47
;     - 1-char selection if pressing  out of real line length
47
;     - 1-char selection if pressing  out of real line length
48
;     - fault in `writepos`, added call to function 9
48
;     - fault in `writepos`, added call to function 9
49
;     - main menu items weren't highlighted if popup opened and cursor
49
;     - main menu items weren't highlighted if popup opened and cursor
50
;       isn't in main menu item's area
50
;       isn't in main menu item's area
51
;     - statusbar and textboxes drawing fixes (wrong colors)
51
;     - statusbar and textboxes drawing fixes (wrong colors)
52
;     - perform no redraw while pressing Shift, Ctrl, Alt keys
52
;     - perform no redraw while pressing Shift, Ctrl, Alt keys
53
;     - data length from DOCPAK in string representation (fixed by diamond)
53
;     - data length from DOCPAK in string representation (fixed by diamond)
54
;     - compare file extension case-insensitively (fixed by diamond)
54
;     - compare file extension case-insensitively (fixed by diamond)
55
;   changes:
55
;   changes:
56
;     - function 70 instead of 58 for files loading/saving
56
;     - function 70 instead of 58 for files loading/saving
57
;     - clientarea-relative drawing (less code)
57
;     - clientarea-relative drawing (less code)
58
;     - every line's dword is now splitted into 2 words;
58
;     - every line's dword is now splitted into 2 words;
59
;       low word - line block length, so max line length is 65535 now
59
;       low word - line block length, so max line length is 65535 now
60
;       high word - various flags. for now, only 2 of 16 bits are used:
60
;       high word - various flags. for now, only 2 of 16 bits are used:
61
;         if bit #0 is set, line was modified since file open
61
;         if bit #0 is set, line was modified since file open
62
;         if bit #1 is set, line was saved after last modification
62
;         if bit #1 is set, line was saved after last modification
63
;       high word could also be further used for code collapsing and different
63
;       high word could also be further used for code collapsing and different
64
;         line marking features (breakpoints, errors, bookmarks, etc.)
64
;         line marking features (breakpoints, errors, bookmarks, etc.)
65
;   new features:
65
;   new features:
66
;     - line markers for modified and saved lines
66
;     - line markers for modified and saved lines
67
;     - status messages for various actions
67
;     - status messages for various actions
68
; 4.0.2 (mike.dld)
68
; 4.0.2 (mike.dld)
69
;   bug-fixes:
69
;   bug-fixes:
70
;     - program terminates if started with parameters (fine for DOCPAK)
70
;     - program terminates if started with parameters (fine for DOCPAK)
71
; 4.0.1 (mike.dld)
71
; 4.0.1 (mike.dld)
72
;   bug-fixes:
72
;   bug-fixes:
73
;     - unable to run program after exiting from main menu (Alt+X)
73
;     - unable to run program after exiting from main menu (Alt+X)
74
;   new features:
74
;   new features:
75
;     - integration with DOCPAK
75
;     - integration with DOCPAK
76
; 4.0 (mike.dld)
76
; 4.0 (mike.dld)
77
;   bug-fixes:
77
;   bug-fixes:
78
;     - main menu popups' "on show" was called only for first shown popup
78
;     - main menu popups' "on show" was called only for first shown popup
79
;     - clear selection on left/right arrow keys
79
;     - clear selection on left/right arrow keys
80
;   new features:
80
;   new features:
81
;     - "replace" dialog (w/o "skip", "replace all")
81
;     - "replace" dialog (w/o "skip", "replace all")
82
;     - line numbers display
82
;     - line numbers display
83
;     - options (except "appearance" and "smart tabulation")
83
;     - options (except "appearance" and "smart tabulation")
84
;     - options saving (colors, window position, "Options" popup triggers)
84
;     - options saving (colors, window position, "Options" popup triggers)
85
; 4.0 beta 2 (mike.dld)
85
; 4.0 beta 2 (mike.dld)
86
;   bug-fixes:
86
;   bug-fixes:
87
;     - unable to start if /rd/1/example.asm is missing (from Halyavin)
87
;     - unable to start if /rd/1/example.asm is missing (from Halyavin)
88
;     - clicking on menu items draws main window in popup (from Rohan)
88
;     - clicking on menu items draws main window in popup (from Rohan)
89
;     - passed parameters aren't taken into account (from Mario79)
89
;     - passed parameters aren't taken into account (from Mario79)
90
;     - background isn't erased if text lines < screen lines after
90
;     - background isn't erased if text lines < screen lines after
91
;       selection deletion (from Rohan)
91
;       selection deletion (from Rohan)
92
; 4.0 beta 1 (mike.dld)
92
; 4.0 beta 1 (mike.dld)
93
;   menu bar and popup menu;
93
;   menu bar and popup menu;
94
;     removed buttons from the top and input fields from the bottom since
94
;     removed buttons from the top and input fields from the bottom since
95
;     now they're accesible through main/popup menu;
95
;     now they're accesible through main/popup menu;
96
;   improved keyboard handling (using 66th function);
96
;   improved keyboard handling (using 66th function);
97
;     support for almost all FASMW keyboard shourtcuts;
97
;     support for almost all FASMW keyboard shourtcuts;
98
;   added text selection ability, standard selection operations
98
;   added text selection ability, standard selection operations
99
;     (copy,cut,paste);
99
;     (copy,cut,paste);
100
;   new integrated dialogs (open, save, find)
100
;   new integrated dialogs (open, save, find)
101
;   fix to collapse SPACEs into TABs only for *.asm and *.inc files
101
;   fix to collapse SPACEs into TABs only for *.asm and *.inc files
102
; 3.78a (mike.dld)
102
; 3.78a (mike.dld)
103
;   fixed termination while typing in x positions higher than (line_length+10);
103
;   fixed termination while typing in x positions higher than (line_length+10);
104
;   improved drawing on small heights
104
;   improved drawing on small heights
105
;     don't draw window while its height = 0 (Kolibri "minimize" support)
105
;     don't draw window while its height = 0 (Kolibri "minimize" support)
106
; 3.78 (mike.dld)
106
; 3.78 (mike.dld)
107
;   now lines may be of ANY length;
107
;   now lines may be of ANY length;
108
;     optimized memory usage (less memory for internal file representation)
108
;     optimized memory usage (less memory for internal file representation)
109
;       after loading file, it's internal size equals to its real size
109
;       after loading file, it's internal size equals to its real size
110
;       plus 14 bytes for each line (4 bytes for line length
110
;       plus 14 bytes for each line (4 bytes for line length
111
;         and 10 spaced to the end - to reduce data relocations count);
111
;         and 10 spaced to the end - to reduce data relocations count);
112
;     completely rewritten keyboard handling;
112
;     completely rewritten keyboard handling;
113
;     added horizontal scrollbar;
113
;     added horizontal scrollbar;
114
;   all line feed formats are supported: WIN(CRLF),*NIX(LF),MAC(CR);
114
;   all line feed formats are supported: WIN(CRLF),*NIX(LF),MAC(CR);
115
;   etc.
115
;   etc.
116
; 3.77 (mike.dld)
116
; 3.77 (mike.dld)
117
;   changed save_string to collapse SPACEs into TABs;
117
;   changed save_string to collapse SPACEs into TABs;
118
;   rewrote drawfile from scratch (speed++)
118
;   rewrote drawfile from scratch (speed++)
119
;     through some drawing improvements  needed
119
;     through some drawing improvements  needed
120
;     (some checkups to reduce flickering);
120
;     (some checkups to reduce flickering);
121
;   writepos (size--);
121
;   writepos (size--);
122
;   fixed drawing window while height < 100px, and for non-asm files;
122
;   fixed drawing window while height < 100px, and for non-asm files;
123
;   several small fixes; speed/size optimizations
123
;   several small fixes; speed/size optimizations
124
; 3.76 (mike.dld)
124
; 3.76 (mike.dld)
125
;   changed loadfile/loadhdfile to expand TABs into SPACEs;
125
;   changed loadfile/loadhdfile to expand TABs into SPACEs;
126
;   changed TAB,ENTER,DELETE,BSPACE keys behaviour (rewritten from scratch);
126
;   changed TAB,ENTER,DELETE,BSPACE keys behaviour (rewritten from scratch);
127
;   vertical scrollbar;
127
;   vertical scrollbar;
128
;   extra window resizing capabilities (added a couple of constants);
128
;   extra window resizing capabilities (added a couple of constants);
129
;   completely new text cursor management & moving text cursor with mouse;
129
;   completely new text cursor management & moving text cursor with mouse;
130
;   improved search function, moving cursor to beginning of text found;
130
;   improved search function, moving cursor to beginning of text found;
131
;   adjustable max line width (change LINE_WIDTH & recompile) // (obsolet)
131
;   adjustable max line width (change LINE_WIDTH & recompile) // (obsolet)
132
; 3.75a
132
; 3.75a
133
;   fixed converting char to upper case in read_string
133
;   fixed converting char to upper case in read_string
134
; 3.75
134
; 3.75
135
;   rewrote save_file from scratch; bugfix in loadfile;
135
;   rewrote save_file from scratch; bugfix in loadfile;
136
; 3.74
136
; 3.74
137
;   optimisation
137
;   optimisation
138
; 3.73
138
; 3.73
139
;   completly new load_file function
139
;   completly new load_file function
140
; 3.72
140
; 3.72
141
;   speed++
141
;   speed++
142
; 3.71
142
; 3.71
143
;   error beep
143
;   error beep
144
; 3.6,3.7:
144
; 3.6,3.7:
145
;   many bugs fixed
145
;   many bugs fixed
146
;   simple toolbar
146
;   simple toolbar
147
;   compile, run applications from TINYPAD, all fasm output is in debug board
147
;   compile, run applications from TINYPAD, all fasm output is in debug board
148
;   TAB button
148
;   TAB button
149
;   auto-indent
149
;   auto-indent
150
;   Ctrl+L - insert comment string
150
;   Ctrl+L - insert comment string
151
;-----------------------------------------------------------------------------
151
;-----------------------------------------------------------------------------
152
 
152
 
153
include 'lang.inc'
153
include 'lang.inc'
154
include 'macros.inc' ; useful stuff
154
include '..\..\..\macros.inc' ; useful stuff
155
;include 'proc32.inc'
155
;include 'proc32.inc'
156
include 'tinypad.inc'
156
include 'tinypad.inc'
157
;purge mov,add,sub            ;  SPEED
157
;purge mov,add,sub            ;  SPEED
158
 
158
 
159
header '01',1,@CODE,TINYPAD_END,STATIC_MEM_END,MAIN_STACK,@PARAMS,self_path
159
header '01',1,@CODE,TINYPAD_END,STATIC_MEM_END,MAIN_STACK,@PARAMS,self_path
160
 
160
 
161
APP_VERSION equ '4.0.4'
161
APP_VERSION equ '4.0.4'
162
 
162
 
163
;include 'debug.inc'
163
;include 'debug.inc'
164
;define __DEBUG__ 1
164
;define __DEBUG__ 1
165
;define __DEBUG_LEVEL__ 1
165
;define __DEBUG_LEVEL__ 1
166
;include 'debug-fdo.inc'
166
;include 'debug-fdo.inc'
167
 
167
 
168
ASEPC = '-'  ; separator character (char)
168
ASEPC = '-'  ; separator character (char)
169
ATOPH = 19   ; menu bar height (pixels)
169
ATOPH = 19   ; menu bar height (pixels)
170
SCRLW = 16   ; scrollbar widht/height (pixels)
170
SCRLW = 16   ; scrollbar widht/height (pixels)
171
ATABW = 8    ; tab key indent width (chars)
171
ATABW = 8    ; tab key indent width (chars)
172
LINEH = 10   ; line height (pixels)
172
LINEH = 10   ; line height (pixels)
173
PATHL = 256  ; maximum path length (chars) !!! don't change !!!
173
PATHL = 256  ; maximum path length (chars) !!! don't change !!!
174
AMINS = 8    ; minimal scroll thumb size (pixels)
174
AMINS = 8    ; minimal scroll thumb size (pixels)
175
LCHGW = 3    ; changed/saved marker width (pixels)
175
LCHGW = 3    ; changed/saved marker width (pixels)
176
 
176
 
177
STATH = 16   ; status bar height (pixels)
177
STATH = 16   ; status bar height (pixels)
178
TBARH = 18   ; tab bar height (pixels)
178
TBARH = 18   ; tab bar height (pixels)
179
 
179
 
180
;-----------------------------------------------------------------------------
180
;-----------------------------------------------------------------------------
181
section @OPTIONS ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
181
section @OPTIONS ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
182
;-----------------------------------------------------------------------------
182
;-----------------------------------------------------------------------------
183
 
183
 
184
label color_tbl dword
184
label color_tbl dword
185
  .text:       RGB(  0,  0,  0)
185
  .text:       RGB(  0,  0,  0)
186
  .back:       RGB(255,255,255)
186
  .back:       RGB(255,255,255)
187
  .text.sel:   RGB(255,255,255)
187
  .text.sel:   RGB(255,255,255)
188
  .back.sel:   RGB( 10, 36,106)
188
  .back.sel:   RGB( 10, 36,106)
189
  .symbol:     RGB( 48, 48,240)
189
  .symbol:     RGB( 48, 48,240)
190
  .number:     RGB(  0,144,  0)
190
  .number:     RGB(  0,144,  0)
191
  .string:     RGB(176,  0,  0)
191
  .string:     RGB(176,  0,  0)
192
  .comment:    RGB(128,128,128)
192
  .comment:    RGB(128,128,128)
193
  .line.moded: RGB(255,238, 98)
193
  .line.moded: RGB(255,238, 98)
194
  .line.saved: RGB(108,226,108)
194
  .line.saved: RGB(108,226,108)
195
 
195
 
196
ins_mode db 1
196
ins_mode db 1
197
tab_pos  db 2
197
tab_pos  db 2
198
 
198
 
199
options  db OPTS_AUTOINDENT+OPTS_OPTIMSAVE+OPTS_SMARTTAB
199
options  db OPTS_AUTOINDENT+OPTS_OPTIMSAVE+OPTS_SMARTTAB
200
 
200
 
201
mainwnd_pos:
201
mainwnd_pos:
202
  .x dd 250
202
  .x dd 250
203
  .y dd 75
203
  .y dd 75
204
  .w dd 6*80+6+SCRLW+5	;- 220
204
  .w dd 6*80+6+SCRLW+5	;- 220
205
  .h dd 402		;- 220
205
  .h dd 402		;- 220
206
 
206
 
207
;-----------------------------------------------------------------------------
207
;-----------------------------------------------------------------------------
208
section @CODE ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
208
section @CODE ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
209
;-----------------------------------------------------------------------------
209
;-----------------------------------------------------------------------------
210
 
210
 
211
;       fninit
211
;       fninit
212
 
212
 
213
;       stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_left,50
213
;       stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_left,50
214
;       mov     [mainwnd_pos.x],eax
214
;       mov     [mainwnd_pos.x],eax
215
;       stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_top,50
215
;       stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_top,50
216
;       mov     [mainwnd_pos.y],eax
216
;       mov     [mainwnd_pos.y],eax
217
;       stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_right,350
217
;       stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_right,350
218
;       sub     eax,[mainwnd_pos.x]
218
;       sub     eax,[mainwnd_pos.x]
219
;       mov     [mainwnd_pos.w],eax
219
;       mov     [mainwnd_pos.w],eax
220
;       stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_bottom,450
220
;       stdcall ini.get_int,finfo_ini,ini_sec_window,ini_window_bottom,450
221
;       sub     eax,[mainwnd_pos.y]
221
;       sub     eax,[mainwnd_pos.y]
222
;       mov     [mainwnd_pos.h],eax
222
;       mov     [mainwnd_pos.h],eax
223
 
223
 
224
	cld
224
	cld
225
	mov	edi,@UDATA
225
	mov	edi,@UDATA
226
	mov	ecx,@PARAMS-@UDATA
226
	mov	ecx,@PARAMS-@UDATA
227
	mov	al,0
227
	mov	al,0
228
	rep	stosb
228
	rep	stosb
229
 
229
 
230
	mov	al,[tab_pos]
230
	mov	al,[tab_pos]
231
	mov	[tab_bar.Style],al
231
	mov	[tab_bar.Style],al
232
 
232
 
233
	mcall	68,11
233
	mcall	68,11
234
	or	eax,eax
234
	or	eax,eax
235
	jz	key.alt_x.close
235
	jz	key.alt_x.close
236
 
236
 
237
	mov	eax,65536
237
	mov	eax,65536
238
	call	mem.Alloc
238
	call	mem.Alloc
239
	mov	[temp_buf],eax
239
	mov	[temp_buf],eax
240
 
240
 
241
	inc	[do_not_draw]
241
	inc	[do_not_draw]
242
 
242
 
243
	mov	dword[app_start],7
243
	mov	dword[app_start],7
244
 
244
 
245
	mov	esi,s_example
245
	mov	esi,s_example
246
	mov	edi,tb_opensave.text
246
	mov	edi,tb_opensave.text
247
	mov	ecx,s_example.size
247
	mov	ecx,s_example.size
248
	mov	[tb_opensave.length],cl
248
	mov	[tb_opensave.length],cl
249
	rep	movsb
249
	rep	movsb
250
 
250
 
251
	mov	esi,s_still
251
	mov	esi,s_still
252
	mov	edi,s_search
252
	mov	edi,s_search
253
	mov	ecx,s_still.size
253
	mov	ecx,s_still.size
254
	mov	[s_search.size],ecx
254
	mov	[s_search.size],ecx
255
	rep	movsb
255
	rep	movsb
256
 
256
 
257
	cmp	byte[@PARAMS],0
257
	cmp	byte[@PARAMS],0
258
	jz	no_params
258
	jz	no_params
259
 
259
 
260
;// Willow's code to support DOCPAK [
260
;// Willow's code to support DOCPAK [
261
 
261
 
262
	cmp	byte[@PARAMS],'*'
262
	cmp	byte[@PARAMS],'*'
263
	jne	.noipc
263
	jne	.noipc
264
 
264
 
265
;// diamond [ (convert size from decimal representation to dword)
265
;// diamond [ (convert size from decimal representation to dword)
266
;--     mov     edx,dword[@PARAMS+1]
266
;--     mov     edx,dword[@PARAMS+1]
267
	mov	esi,@PARAMS+1
267
	mov	esi,@PARAMS+1
268
	xor	edx,edx
268
	xor	edx,edx
269
	xor	eax,eax
269
	xor	eax,eax
270
    @@: lodsb
270
    @@: lodsb
271
	test	al,al
271
	test	al,al
272
	jz	@f
272
	jz	@f
273
	lea	edx,[edx*4+edx]
273
	lea	edx,[edx*4+edx]
274
	lea	edx,[edx*2+eax-'0']
274
	lea	edx,[edx*2+eax-'0']
275
	jmp	@b
275
	jmp	@b
276
    @@:
276
    @@:
277
;// diamond ]
277
;// diamond ]
278
 
278
 
279
	add	edx,20
279
	add	edx,20
280
 
280
 
281
	mov	eax,edx
281
	mov	eax,edx
282
	call	mem.Alloc
282
	call	mem.Alloc
283
	mov	ebp,eax
283
	mov	ebp,eax
284
	push	eax
284
	push	eax
285
 
285
 
286
	mov	dword[ebp+0],0
286
	mov	dword[ebp+0],0
287
	mov	dword[ebp+4],8
287
	mov	dword[ebp+4],8
288
	mcall	60,1,ebp
288
	mcall	60,1,ebp
289
	mcall	40,1000000b
289
	mcall	40,1000000b
290
 
290
 
291
	mcall	23,200
291
	mcall	23,200
292
 
292
 
293
	cmp	eax,7
293
	cmp	eax,7
294
	jne	key.alt_x.close
294
	jne	key.alt_x.close
295
	mov	byte[ebp],1
295
	mov	byte[ebp],1
296
 
296
 
297
	mov	ecx,[ebp+12]
297
	mov	ecx,[ebp+12]
298
	lea	esi,[ebp+16]
298
	lea	esi,[ebp+16]
299
	call	create_tab
299
	call	create_tab
300
	call	load_from_memory
300
	call	load_from_memory
301
 
301
 
302
	pop	ebp
302
	pop	ebp
303
	mov	eax,ebp
303
	mov	eax,ebp
304
	call	mem.Free
304
	call	mem.Free
305
 
305
 
306
	jmp	@f
306
	jmp	@f
307
  .noipc:
307
  .noipc:
308
 
308
 
309
;// Willow's code to support DOCPAK ]
309
;// Willow's code to support DOCPAK ]
310
 
310
 
311
	mov	esi,@PARAMS
311
	mov	esi,@PARAMS
312
	mov	edi,tb_opensave.text
312
	mov	edi,tb_opensave.text
313
	mov	ecx,PATHL
313
	mov	ecx,PATHL
314
	rep	movsb
314
	rep	movsb
315
	mov	edi,tb_opensave.text
315
	mov	edi,tb_opensave.text
316
	mov	ecx,PATHL
316
	mov	ecx,PATHL
317
	xor	al,al
317
	xor	al,al
318
	repne	scasb
318
	repne	scasb
319
	jne	key.alt_x.close
319
	jne	key.alt_x.close
320
	lea	eax,[edi-tb_opensave.text-1]
320
	lea	eax,[edi-tb_opensave.text-1]
321
	mov	[tb_opensave.length],al
321
	mov	[tb_opensave.length],al
322
	call	load_file
322
	call	load_file
323
	jnc	@f
323
	jnc	@f
324
 
324
 
325
  no_params:
325
  no_params:
326
	call	create_tab
326
	call	create_tab
327
 
327
 
328
    @@:
328
    @@:
329
	mov	[s_status],0
329
	mov	[s_status],0
330
	dec	[do_not_draw]
330
	dec	[do_not_draw]
331
	mcall	66,1,1
331
	mcall	66,1,1
332
	mcall	40,00100111b
332
	mcall	40,00100111b
333
red:
333
red:
334
	call	drawwindow
334
	call	drawwindow
335
 
335
 
336
;-----------------------------------------------------------------------------
336
;-----------------------------------------------------------------------------
337
 
337
 
338
still:
338
still:
339
	call	draw_statusbar ; write current position & number of strings
339
	call	draw_statusbar ; write current position & number of strings
340
 
340
 
341
  .skip_write:
341
  .skip_write:
342
	mcall	10	; wait here until event
342
	mcall	10	; wait here until event
343
	cmp	[main_closed],0
343
	cmp	[main_closed],0
344
	jne	key.alt_x
344
	jne	key.alt_x
345
	dec	eax	; redraw ?
345
	dec	eax	; redraw ?
346
	jz	red
346
	jz	red
347
	dec	eax	; key ?
347
	dec	eax	; key ?
348
	jz	key
348
	jz	key
349
	dec	eax	; button ?
349
	dec	eax	; button ?
350
	jz	button
350
	jz	button
351
	sub	eax,3	; mouse ?
351
	sub	eax,3	; mouse ?
352
	jz	mouse
352
	jz	mouse
353
 
353
 
354
	jmp	still.skip_write
354
	jmp	still.skip_write
355
 
355
 
356
;-----------------------------------------------------------------------------
356
;-----------------------------------------------------------------------------
357
func start_fasm ;/////////////////////////////////////////////////////////////
357
func start_fasm ;/////////////////////////////////////////////////////////////
358
;-----------------------------------------------------------------------------
358
;-----------------------------------------------------------------------------
359
; BL = run after compile
359
; BL = run after compile
360
;-----------------------------------------------------------------------------
360
;-----------------------------------------------------------------------------
361
; FASM infile,outfile,/path/to/files[,run]
361
; FASM infile,outfile,/path/to/files[,run]
362
;-----------------------------------------------------------------------------
362
;-----------------------------------------------------------------------------
363
	cmp	[cur_editor.AsmMode],0
363
	cmp	[cur_editor.AsmMode],0
364
	jne	@f
364
	jne	@f
365
	ret
365
	ret
366
    @@:
366
    @@:
367
	mov	eax,[tab_bar.Default.Ptr]
367
	mov	eax,[tab_bar.Default.Ptr]
368
	or	eax,eax
368
	or	eax,eax
369
	jnz	@f
369
	jnz	@f
370
	mov	eax,[tab_bar.Current.Ptr]
370
	mov	eax,[tab_bar.Current.Ptr]
371
    @@: cmp	byte[eax+TABITEM.Editor.FilePath],'/'
371
    @@: cmp	byte[eax+TABITEM.Editor.FilePath],'/'
372
	je	@f
372
	je	@f
373
	ret
373
	ret
374
    @@:
374
    @@:
375
	mov	edi,fasm_parameters
375
	mov	edi,fasm_parameters
376
	push	eax
376
	push	eax
377
 
377
 
378
	cld
378
	cld
379
 
379
 
380
	lea	esi,[eax+TABITEM.Editor.FilePath]
380
	lea	esi,[eax+TABITEM.Editor.FilePath]
381
	add	esi,[eax+TABITEM.Editor.FileName]
381
	add	esi,[eax+TABITEM.Editor.FileName]
382
	push	esi esi
382
	push	esi esi
383
    @@: lodsb
383
    @@: lodsb
384
	cmp	al,0
384
	cmp	al,0
385
	je	@f
385
	je	@f
386
	stosb
386
	stosb
387
	cmp	al,'.'
387
	cmp	al,'.'
388
	jne	@b
388
	jne	@b
389
	mov	ecx,esi
389
	mov	ecx,esi
390
	jmp	@b
390
	jmp	@b
391
    @@:
391
    @@:
392
	mov	al,','
392
	mov	al,','
393
	stosb
393
	stosb
394
 
394
 
395
	pop	esi
395
	pop	esi
396
	sub	ecx,esi
396
	sub	ecx,esi
397
	dec	ecx
397
	dec	ecx
398
	jz	@f
398
	jz	@f
399
	rep	movsb
399
	rep	movsb
400
    @@:
400
    @@:
401
	mov	al,','
401
	mov	al,','
402
	stosb
402
	stosb
403
 
403
 
404
	pop	ecx esi
404
	pop	ecx esi
405
	add	esi,TABITEM.Editor.FilePath
405
	add	esi,TABITEM.Editor.FilePath
406
	sub	ecx,esi
406
	sub	ecx,esi
407
	rep	movsb
407
	rep	movsb
408
 
408
 
409
	cmp	bl,0 ; run outfile ?
409
	cmp	bl,0 ; run outfile ?
410
	je	@f
410
	je	@f
411
	mov	dword[edi],',run'
411
	mov	dword[edi],',run'
412
	add	edi,4
412
	add	edi,4
413
    @@:
413
    @@:
414
	mov	al,0
414
	mov	al,0
415
	stosb
415
	stosb
416
 
416
 
417
	mov	[app_start.filename],app_fasm
417
	mov	[app_start.filename],app_fasm
418
	mov	[app_start.params],fasm_parameters
418
	mov	[app_start.params],fasm_parameters
419
start_ret:
419
start_ret:
420
	mcall	70,app_start
420
	mcall	70,app_start
421
	ret
421
	ret
422
endf
422
endf
423
 
423
 
424
;-----------------------------------------------------------------------------
424
;-----------------------------------------------------------------------------
425
func open_debug_board ;///////////////////////////////////////////////////////
425
func open_debug_board ;///////////////////////////////////////////////////////
426
;-----------------------------------------------------------------------------
426
;-----------------------------------------------------------------------------
427
	mov	[app_start.filename],app_board
427
	mov	[app_start.filename],app_board
428
	mov	[app_start.params],0
428
	mov	[app_start.params],0
429
	jmp	start_ret
429
	jmp	start_ret
430
endf
430
endf
431
 
431
 
432
;-----------------------------------------------------------------------------
432
;-----------------------------------------------------------------------------
433
func open_sysfuncs_txt ;//////////////////////////////////////////////////////
433
func open_sysfuncs_txt ;//////////////////////////////////////////////////////
434
;-----------------------------------------------------------------------------
434
;-----------------------------------------------------------------------------
435
	mov	[app_start.filename],app_docpak
435
	mov	[app_start.filename],app_docpak
436
	mov	[app_start.params],sysfuncs_param
436
	mov	[app_start.params],sysfuncs_param
437
	call	start_ret
437
	call	start_ret
438
	cmp	eax,0xfffffff0
438
	cmp	eax,0xfffffff0
439
	jb	@f
439
	jb	@f
440
	mov	[app_start.filename],app_tinypad
440
	mov	[app_start.filename],app_tinypad
441
	mov	[app_start.params],sysfuncs_filename
441
	mov	[app_start.params],sysfuncs_filename
442
	call	start_ret
442
	call	start_ret
443
    @@: ret
443
    @@: ret
444
endf
444
endf
445
 
445
 
446
set_opt:
446
set_opt:
447
 
447
 
448
  .dialog:
448
  .dialog:
449
	mov	[bot_mode],1
449
	mov	[bot_mode],1
450
	mov	[bot_dlg_height],128
450
	mov	[bot_dlg_height],128
451
	mov	[bot_dlg_handler],optsdlg_handler
451
	mov	[bot_dlg_handler],optsdlg_handler
452
	mov	[focused_tb],tb_color
452
	mov	[focused_tb],tb_color
453
	mov	al,[tb_color.length]
453
	mov	al,[tb_color.length]
454
	mov	[tb_color.pos.x],al
454
	mov	[tb_color.pos.x],al
455
	mov	[tb_color.sel.x],0
455
	mov	[tb_color.sel.x],0
456
	mov	[tb_casesen],1
456
	mov	[tb_casesen],1
457
	mov	[cur_part],0
457
	mov	[cur_part],0
458
	m2m	[cur_color],dword[color_tbl.text]
458
	m2m	[cur_color],dword[color_tbl.text]
459
	mov	esi,color_tbl
459
	mov	esi,color_tbl
460
	mov	edi,cur_colors
460
	mov	edi,cur_colors
461
	mov	ecx,10
461
	mov	ecx,10
462
	cld
462
	cld
463
	rep	movsd
463
	rep	movsd
464
	call	drawwindow
464
	call	drawwindow
465
	ret
465
	ret
466
 
466
 
467
  .line_numbers:
467
  .line_numbers:
468
	mov	al,OPTS_LINENUMS
468
	mov	al,OPTS_LINENUMS
469
	jmp	.main
469
	jmp	.main
470
  .optimal_fill:
470
  .optimal_fill:
471
	mov	al,OPTS_OPTIMSAVE
471
	mov	al,OPTS_OPTIMSAVE
472
	jmp	.main
472
	jmp	.main
473
  .auto_indents:
473
  .auto_indents:
474
	mov	al,OPTS_AUTOINDENT
474
	mov	al,OPTS_AUTOINDENT
475
	jmp	.main
475
	jmp	.main
476
  .auto_braces:
476
  .auto_braces:
477
	mov	al,OPTS_AUTOBRACES
477
	mov	al,OPTS_AUTOBRACES
478
	jmp	.main
478
	jmp	.main
479
  .secure_sel:
479
  .secure_sel:
480
	mov	al,OPTS_SECURESEL
480
	mov	al,OPTS_SECURESEL
481
 
481
 
482
  .main:
482
  .main:
483
	xor	[options],al
483
	xor	[options],al
484
	ret
484
	ret
485
 
485
 
486
;-----------------------------------------------------------------------------
486
;-----------------------------------------------------------------------------
487
 
487
 
488
include 'tp-defines.inc'
488
include 'tp-defines.inc'
489
 
489
 
490
include 'tp-draw.asm'
490
include 'tp-draw.asm'
491
include 'tp-key.asm'
491
include 'tp-key.asm'
492
include 'tp-button.asm'
492
include 'tp-button.asm'
493
include 'tp-mouse.asm'
493
include 'tp-mouse.asm'
494
include 'tp-files.asm'
494
include 'tp-files.asm'
495
include 'tp-common.asm'
495
include 'tp-common.asm'
496
include 'tp-dialog.asm'
496
include 'tp-dialog.asm'
497
include 'tp-popup.asm'
497
include 'tp-popup.asm'
498
include 'tp-tbox.asm'
498
include 'tp-tbox.asm'
499
include 'tp-tabctl.asm'
499
include 'tp-tabctl.asm'
500
include 'tp-editor.asm'
500
include 'tp-editor.asm'
501
include 'tp-recode.asm'
501
include 'tp-recode.asm'
502
 
502
 
503
;include 'lib-ini.asm'
503
;include 'lib-ini.asm'
504
 
504
 
505
;-----------------------------------------------------------------------------
505
;-----------------------------------------------------------------------------
506
section @DATA ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
506
section @DATA ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
507
;-----------------------------------------------------------------------------
507
;-----------------------------------------------------------------------------
508
 
508
 
509
vscrl_capt dd -1
509
vscrl_capt dd -1
510
hscrl_capt dd -1
510
hscrl_capt dd -1
511
body_capt  dd -1
511
body_capt  dd -1
512
 
512
 
513
key0 db \
513
key0 db \
514
  0x00,0x00,0x02,0x03,0x04,0x05,0x06,0x07,\
514
  0x00,0x00,0x02,0x03,0x04,0x05,0x06,0x07,\
515
  0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x00,0x00,\
515
  0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x00,0x00,\
516
  0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,\
516
  0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,\
517
  0x18,0x19,0x1A,0x1B,0x00,0x00,0x1E,0x1F,\
517
  0x18,0x19,0x1A,0x1B,0x00,0x00,0x1E,0x1F,\
518
  0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,\
518
  0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,\
519
  0x28,0x29,0x00,0x2B,0x2C,0x2D,0x2E,0x2F,\
519
  0x28,0x29,0x00,0x2B,0x2C,0x2D,0x2E,0x2F,\
520
  0x30,0x31,0x32,0x33,0x34,0x35,0x00,0x00,\
520
  0x30,0x31,0x32,0x33,0x34,0x35,0x00,0x00,\
521
  0x00,0x39,0x00,0x00,0x00,0x00,0x00,0x00
521
  0x00,0x39,0x00,0x00,0x00,0x00,0x00,0x00
522
  times 12*16 db 0x00
522
  times 12*16 db 0x00
523
 
523
 
524
accel_table_main dd		    \
524
accel_table_main dd		    \
525
  0x0000000E,key.bkspace	   ,\ ; BackSpace
525
  0x0000000E,key.bkspace	   ,\ ; BackSpace
526
  0x0000000F,key.tab		   ,\ ; Tab
526
  0x0000000F,key.tab		   ,\ ; Tab
527
  0x0000001C,key.return 	   ,\ ; Return
527
  0x0000001C,key.return 	   ,\ ; Return
528
  0x0000003D,key.f3		   ,\ ; F3
528
  0x0000003D,key.f3		   ,\ ; F3
529
  0x00000043,key.f9		   ,\ ; F9
529
  0x00000043,key.f9		   ,\ ; F9
530
  0x00000147,key.home		   ,\ ; Home
530
  0x00000147,key.home		   ,\ ; Home
531
  0x00000148,key.up		   ,\ ; Up
531
  0x00000148,key.up		   ,\ ; Up
532
  0x00000149,key.pgup		   ,\ ; PageUp
532
  0x00000149,key.pgup		   ,\ ; PageUp
533
  0x0000014B,key.left		   ,\ ; Left
533
  0x0000014B,key.left		   ,\ ; Left
534
  0x0000014D,key.right		   ,\ ; Right
534
  0x0000014D,key.right		   ,\ ; Right
535
  0x0000014F,key.end		   ,\ ; End
535
  0x0000014F,key.end		   ,\ ; End
536
  0x00000150,key.down		   ,\ ; Down
536
  0x00000150,key.down		   ,\ ; Down
537
  0x00000151,key.pgdn		   ,\ ; PageDown
537
  0x00000151,key.pgdn		   ,\ ; PageDown
538
  0x00000152,key.ins		   ,\ ; Insert
538
  0x00000152,key.ins		   ,\ ; Insert
539
  0x00000153,key.del		   ,\ ; Delete
539
  0x00000153,key.del		   ,\ ; Delete
540
  0x00010043,key.shift_f9	   ,\ ; Shift+F9
540
  0x00010043,key.shift_f9	   ,\ ; Shift+F9
541
  0x00010147,key.shift_home	   ,\ ; Shift+Home
541
  0x00010147,key.shift_home	   ,\ ; Shift+Home
542
  0x00010148,key.shift_up	   ,\ ; Shift+Up
542
  0x00010148,key.shift_up	   ,\ ; Shift+Up
543
  0x00010149,key.shift_pgup	   ,\ ; Shift+PageUp
543
  0x00010149,key.shift_pgup	   ,\ ; Shift+PageUp
544
  0x0001014B,key.shift_left	   ,\ ; Shift+Left
544
  0x0001014B,key.shift_left	   ,\ ; Shift+Left
545
  0x0001014D,key.shift_right	   ,\ ; Shift+Right
545
  0x0001014D,key.shift_right	   ,\ ; Shift+Right
546
  0x0001014F,key.shift_end	   ,\ ; Shift+End
546
  0x0001014F,key.shift_end	   ,\ ; Shift+End
547
  0x00010150,key.shift_down	   ,\ ; Shift+Down
547
  0x00010150,key.shift_down	   ,\ ; Shift+Down
548
  0x00010151,key.shift_pgdn	   ,\ ; Shift+PageDown
548
  0x00010151,key.shift_pgdn	   ,\ ; Shift+PageDown
549
  0x00010153,key.del		   ,\ ; Shift+Delete
549
  0x00010153,key.del		   ,\ ; Shift+Delete
550
  0x0002000F,key.ctrl_tab	   ,\ ; Ctrl+Tab
550
  0x0002000F,key.ctrl_tab	   ,\ ; Ctrl+Tab
551
  0x00020015,key.ctrl_y 	   ,\ ; Ctrl+Y
551
  0x00020015,key.ctrl_y 	   ,\ ; Ctrl+Y
552
  0x00020018,key.ctrl_o 	   ,\ ; Ctrl+O
552
  0x00020018,key.ctrl_o 	   ,\ ; Ctrl+O
553
  0x0002001E,key.ctrl_a 	   ,\ ; Ctrl+A
553
  0x0002001E,key.ctrl_a 	   ,\ ; Ctrl+A
554
  0x0002001F,key.ctrl_s 	   ,\ ; Ctrl+S
554
  0x0002001F,key.ctrl_s 	   ,\ ; Ctrl+S
555
  0x00020020,key.ctrl_d 	   ,\ ; Ctrl+D
555
  0x00020020,key.ctrl_d 	   ,\ ; Ctrl+D
556
  0x00020021,key.ctrl_f 	   ,\ ; Ctrl+F
556
  0x00020021,key.ctrl_f 	   ,\ ; Ctrl+F
557
  0x00020022,key.ctrl_g 	   ,\ ; Ctrl+G
557
  0x00020022,key.ctrl_g 	   ,\ ; Ctrl+G
558
  0x00020023,key.ctrl_h 	   ,\ ; Ctrl+H
558
  0x00020023,key.ctrl_h 	   ,\ ; Ctrl+H
559
\;0x00020026,key.ctrl_l            ,\ ; Ctrl+L
559
\;0x00020026,key.ctrl_l            ,\ ; Ctrl+L
560
  0x0002002D,key.ctrl_x 	   ,\ ; Ctrl+X
560
  0x0002002D,key.ctrl_x 	   ,\ ; Ctrl+X
561
  0x0002002E,key.ctrl_c 	   ,\ ; Ctrl+C
561
  0x0002002E,key.ctrl_c 	   ,\ ; Ctrl+C
562
  0x0002002F,key.ctrl_v 	   ,\ ; Ctrl+V
562
  0x0002002F,key.ctrl_v 	   ,\ ; Ctrl+V
563
  0x00020031,key.ctrl_n 	   ,\ ; Ctrl+N
563
  0x00020031,key.ctrl_n 	   ,\ ; Ctrl+N
564
  0x0002003E,key.ctrl_f4	   ,\ ; Ctrl+F4
564
  0x0002003E,key.ctrl_f4	   ,\ ; Ctrl+F4
565
  0x00020043,key.ctrl_f9	   ,\ ; Ctrl+F9
565
  0x00020043,key.ctrl_f9	   ,\ ; Ctrl+F9
566
  0x00020147,key.ctrl_home	   ,\ ; Ctrl+Home
566
  0x00020147,key.ctrl_home	   ,\ ; Ctrl+Home
567
\;0x00020148,key.ctrl_up           ,\ ; Ctrl+Up
567
\;0x00020148,key.ctrl_up           ,\ ; Ctrl+Up
568
  0x00020149,key.ctrl_pgup	   ,\ ; Ctrl+PageUp
568
  0x00020149,key.ctrl_pgup	   ,\ ; Ctrl+PageUp
569
  0x0002014B,key.ctrl_left	   ,\ ; Ctrl+Left
569
  0x0002014B,key.ctrl_left	   ,\ ; Ctrl+Left
570
  0x0002014D,key.ctrl_right	   ,\ ; Ctrl+Right
570
  0x0002014D,key.ctrl_right	   ,\ ; Ctrl+Right
571
  0x0002014F,key.ctrl_end	   ,\ ; Ctrl+End
571
  0x0002014F,key.ctrl_end	   ,\ ; Ctrl+End
572
\;0x00020150,key.ctrl_down         ,\ ; Ctrl+Down
572
\;0x00020150,key.ctrl_down         ,\ ; Ctrl+Down
573
  0x00020151,key.ctrl_pgdn	   ,\ ; Ctrl+PageDown
573
  0x00020151,key.ctrl_pgdn	   ,\ ; Ctrl+PageDown
574
  0x00020153,key.del		   ,\ ; Ctrl+Del
574
  0x00020153,key.del		   ,\ ; Ctrl+Del
575
  0x0003000F,key.shift_ctrl_tab    ,\ ; Shift+Ctrl+Tab
575
  0x0003000F,key.shift_ctrl_tab    ,\ ; Shift+Ctrl+Tab
576
  0x0003001F,key.shift_ctrl_s	   ,\ ; Shift+Ctrl+S
576
  0x0003001F,key.shift_ctrl_s	   ,\ ; Shift+Ctrl+S
577
  0x00030147,key.shift_ctrl_home   ,\ ; Shift+Ctrl+Home
577
  0x00030147,key.shift_ctrl_home   ,\ ; Shift+Ctrl+Home
578
\;0x00030148,key.shift_ctrl_up     ,\ ; Shift+Ctrl+Up
578
\;0x00030148,key.shift_ctrl_up     ,\ ; Shift+Ctrl+Up
579
  0x00030149,key.shift_ctrl_pgup   ,\ ; Shift+Ctrl+PageUp
579
  0x00030149,key.shift_ctrl_pgup   ,\ ; Shift+Ctrl+PageUp
580
  0x0003014B,key.shift_ctrl_left   ,\ ; Shift+Ctrl+Left
580
  0x0003014B,key.shift_ctrl_left   ,\ ; Shift+Ctrl+Left
581
  0x0003014D,key.shift_ctrl_right  ,\ ; Shift+Ctrl+Right
581
  0x0003014D,key.shift_ctrl_right  ,\ ; Shift+Ctrl+Right
582
  0x0003014F,key.shift_ctrl_end    ,\ ; Shift+Ctrl+End
582
  0x0003014F,key.shift_ctrl_end    ,\ ; Shift+Ctrl+End
583
\;0x00030150,key.shift_ctrl_down   ,\ ; Shift+Ctrl+Down
583
\;0x00030150,key.shift_ctrl_down   ,\ ; Shift+Ctrl+Down
584
  0x00030151,key.shift_ctrl_pgdn   ,\ ; Shift+Ctrl+PageDown
584
  0x00030151,key.shift_ctrl_pgdn   ,\ ; Shift+Ctrl+PageDown
585
  0x0004002D,key.alt_x		   ,\ ; Alt+X
585
  0x0004002D,key.alt_x		   ,\ ; Alt+X
586
  0
586
  0
587
 
587
 
588
accel_table_textbox dd		    \
588
accel_table_textbox dd		    \
589
\;0x00000001,key.tb.escape         ,\ ; Escape
589
\;0x00000001,key.tb.escape         ,\ ; Escape
590
  0x0000000E,key.tb.bkspace	   ,\ ; BackSpace
590
  0x0000000E,key.tb.bkspace	   ,\ ; BackSpace
591
\;0x0000000F,key.tb.tab            ,\ ; Tab
591
\;0x0000000F,key.tb.tab            ,\ ; Tab
592
\;0x0000001C,key.tb.return         ,\ ; Return
592
\;0x0000001C,key.tb.return         ,\ ; Return
593
  0x00000147,key.tb.home	   ,\ ; Home
593
  0x00000147,key.tb.home	   ,\ ; Home
594
  0x0000014B,key.tb.left	   ,\ ; Left
594
  0x0000014B,key.tb.left	   ,\ ; Left
595
  0x0000014D,key.tb.right	   ,\ ; Right
595
  0x0000014D,key.tb.right	   ,\ ; Right
596
  0x0000014F,key.tb.end 	   ,\ ; End
596
  0x0000014F,key.tb.end 	   ,\ ; End
597
  0x00000153,key.tb.del 	   ,\ ; Delete
597
  0x00000153,key.tb.del 	   ,\ ; Delete
598
  0x00010147,key.tb.shift_home	   ,\ ; Shift+Home
598
  0x00010147,key.tb.shift_home	   ,\ ; Shift+Home
599
  0x0001014B,key.tb.shift_left	   ,\ ; Shift+Left
599
  0x0001014B,key.tb.shift_left	   ,\ ; Shift+Left
600
  0x0001014D,key.tb.shift_right    ,\ ; Shift+Right
600
  0x0001014D,key.tb.shift_right    ,\ ; Shift+Right
601
  0x0001014F,key.tb.shift_end	   ,\ ; Shift+End
601
  0x0001014F,key.tb.shift_end	   ,\ ; Shift+End
602
  0x00010153,key.tb.del 	   ,\ ; Shift+Del
602
  0x00010153,key.tb.del 	   ,\ ; Shift+Del
603
  0
603
  0
604
 
604
 
605
accel_table2 dd 	  \
605
accel_table2 dd 	  \
606
  1    ,key.alt_x	 ,\
606
  1    ,key.alt_x	 ,\
607
  'VSL',btn.vscroll_up	 ,\
607
  'VSL',btn.vscroll_up	 ,\
608
  'VSG',btn.vscroll_down ,\
608
  'VSG',btn.vscroll_down ,\
609
  'HSL',btn.hscroll_up	 ,\
609
  'HSL',btn.hscroll_up	 ,\
610
  'HSG',btn.hscroll_down ,\
610
  'HSG',btn.hscroll_down ,\
611
  'TBL',btn.tabctl_right ,\
611
  'TBL',btn.tabctl_right ,\
612
  'TBG',btn.tabctl_left  ,\
612
  'TBG',btn.tabctl_left  ,\
613
  0
613
  0
614
 
614
 
615
accel_table2_botdlg dd	   \
615
accel_table2_botdlg dd	   \
616
  1    ,key.alt_x	  ,\
616
  1    ,key.alt_x	  ,\
617
  20001,btn.bot.cancel	  ,\
617
  20001,btn.bot.cancel	  ,\
618
  20002,btn.bot.opensave  ,\
618
  20002,btn.bot.opensave  ,\
619
  20003,btn.bot.find	  ,\
619
  20003,btn.bot.find	  ,\
620
  20004,btn.bot.appearance,\
620
  20004,btn.bot.appearance,\
621
  21001,btn.bot.tabpos	  ,\
621
  21001,btn.bot.tabpos	  ,\
622
  0
622
  0
623
 
623
 
624
add_table:
624
add_table:
625
  times $1A db -$20
625
  times $1A db -$20
626
  times $25 db -$00
626
  times $25 db -$00
627
  times $10 db -$20
627
  times $10 db -$20
628
  times $30 db -$00
628
  times $30 db -$00
629
  times $10 db -$50
629
  times $10 db -$50
630
  times $04 db -$00,-$01
630
  times $04 db -$00,-$01
631
  times $08 db -$00
631
  times $08 db -$00
632
 
632
 
633
s_status dd 0
633
s_status dd 0
634
 
634
 
635
@^
635
@^
636
fasm_start:
636
fasm_start:
637
	dd	7
637
	dd	7
638
	dd	0
638
	dd	0
639
	dd	fasm_parameters
639
	dd	fasm_parameters
640
	dd	0
640
	dd	0
641
	dd	0
641
	dd	0
642
	db	'/RD/1/DEVELOP/FASM',0
642
	db	'/RD/1/DEVELOP/FASM',0
643
board_start:
643
board_start:
644
	dd	7
644
	dd	7
645
	dd	0
645
	dd	0
646
	dd	0
646
	dd	0
647
	dd	0
647
	dd	0
648
	dd	0
648
	dd	0
649
	db	'/RD/1/BOARD',0
649
	db	'/RD/1/BOARD',0
650
tinypad_start:
650
tinypad_start:
651
	dd	7
651
	dd	7
652
	dd	0
652
	dd	0
653
	dd	?
653
	dd	?
654
	dd	0
654
	dd	0
655
	dd	0
655
	dd	0
656
	db	'/RD/1/TINYPAD',0
656
	db	'/RD/1/TINYPAD',0
657
docpak_start:
657
docpak_start:
658
	dd	7
658
	dd	7
659
	dd	0
659
	dd	0
660
	dd	sysfuncs_param
660
	dd	sysfuncs_param
661
	dd	0
661
	dd	0
662
	dd	0
662
	dd	0
663
	db	'/RD/1/DOCPAK',0
663
	db	'/RD/1/DOCPAK',0
664
^@
664
^@
665
 
665
 
666
sz app_fasm    ,'/RD/1/DEVELOP/FASM',0
666
sz app_fasm    ,'/RD/1/DEVELOP/FASM',0
667
sz app_board   ,'/RD/1/BOARD',0
667
sz app_board   ,'/RD/1/BOARD',0
668
sz app_tinypad ,'/RD/1/TINYPAD',0
668
sz app_tinypad ,'/RD/1/TINYPAD',0
669
sz app_docpak  ,'/RD/1/DOCPAK',0
669
sz app_docpak  ,'/RD/1/DOCPAK',0
670
 
670
 
671
sz sysfuncs_param,'g',0
671
sz sysfuncs_param,'g',0
672
 
672
 
673
include 'tp-locale.inc'
673
include 'tp-locale.inc'
674
 
674
 
675
;// options dialog data [
675
;// options dialog data [
676
label optsdlg_editor at $-EDITOR.Bounds
676
label optsdlg_editor at $-EDITOR.Bounds
677
; rb PATHL     ; FilePath       db PATHL dup(?)
677
; rb PATHL     ; FilePath       db PATHL dup(?)
678
; dd 0         ; FileName       dd ?
678
; dd 0         ; FileName       dd ?
679
  dd ?,?,?,?   ; Bounds         RECT
679
  dd ?,?,?,?   ; Bounds         RECT
680
  dd @f        ; Lines          dd ?
680
  dd @f        ; Lines          dd ?
681
  dd ?	       ; Lines.Size     dd ?
681
  dd ?	       ; Lines.Size     dd ?
682
  dd 9	       ; Lines.Count    dd ?
682
  dd 9	       ; Lines.Count    dd ?
683
  dd 21        ; Columns.Count  dd ?
683
  dd 21        ; Columns.Count  dd ?
684
  dd 0,4       ; Caret          POINT
684
  dd 0,4       ; Caret          POINT
685
  dd 100,4     ; SelStart       POINT
685
  dd 100,4     ; SelStart       POINT
686
  dd 0,0       ; TopLeft        POINT
686
  dd 0,0       ; TopLeft        POINT
687
  dd 0,0       ; VScroll        SCROLLBAR
687
  dd 0,0       ; VScroll        SCROLLBAR
688
  dd 0,0       ; HScroll        SCROLLBAR
688
  dd 0,0       ; HScroll        SCROLLBAR
689
  dd 0	       ; Gutter.Width   dd ?
689
  dd 0	       ; Gutter.Width   dd ?
690
  db 0	       ; Gutter.Visible db ?
690
  db 0	       ; Gutter.Visible db ?
691
  db 1	       ; AsmMode        db ?
691
  db 1	       ; AsmMode        db ?
692
  db 0	       ; Modified       db ?
692
  db 0	       ; Modified       db ?
693
 
693
 
694
@@:
694
@@:
695
  dd 0x00000000+1
695
  dd 0x00000000+1
696
  db ' '
696
  db ' '
697
  dd 0x00010000+9
697
  dd 0x00010000+9
698
  db ' org 100h'
698
  db ' org 100h'
699
  dd 0x00000000+1
699
  dd 0x00000000+1
700
  db ' '
700
  db ' '
701
  dd 0x00000000+20
701
  dd 0x00000000+20
702
  db ' mov ah,09h  ; write'
702
  db ' mov ah,09h  ; write'
703
  dd 0x00000000+12
703
  dd 0x00000000+12
704
  db ' mov dx,text'
704
  db ' mov dx,text'
705
  dd 0x00000000+8
705
  dd 0x00000000+8
706
  db ' int 21h'
706
  db ' int 21h'
707
  dd 0x00030000+8
707
  dd 0x00030000+8
708
  db ' int 20h'
708
  db ' int 20h'
709
  dd 0x00000000+1
709
  dd 0x00000000+1
710
  db ' '
710
  db ' '
711
  dd 0x00000000+21
711
  dd 0x00000000+21
712
  db ' text db "Hello!",24h'
712
  db ' text db "Hello!",24h'
713
  dd 0
713
  dd 0
714
 
714
 
715
optsdlg_editor_parts:	; left,top,right,bottom,type
715
optsdlg_editor_parts:	; left,top,right,bottom,type
716
  db 0, 12, 13, 29, 22
716
  db 0, 12, 13, 29, 22
717
  db 0, 12, 33, 47, 42
717
  db 0, 12, 33, 47, 42
718
  db 0, 12, 53, 29, 72
718
  db 0, 12, 53, 29, 72
719
  db 0, 12, 83, 53, 92
719
  db 0, 12, 83, 53, 92
720
  db 2, 12, 43, 77, 52
720
  db 2, 12, 43, 77, 52
721
  db 3,  4, 43,148, 52
721
  db 3,  4, 43,148, 52
722
  db 4, 48, 33, 53, 42
722
  db 4, 48, 33, 53, 42
723
  db 4,108, 83,113, 92
723
  db 4,108, 83,113, 92
724
  db 5, 36, 13, 59, 22
724
  db 5, 36, 13, 59, 22
725
  db 5, 54, 33, 71, 42
725
  db 5, 54, 33, 71, 42
726
  db 5, 36, 53, 53, 72
726
  db 5, 36, 53, 53, 72
727
  db 5,114, 83,131, 92
727
  db 5,114, 83,131, 92
728
  db 6, 60, 83,107, 92
728
  db 6, 60, 83,107, 92
729
  db 7, 84, 33,125, 42
729
  db 7, 84, 33,125, 42
730
  db 8,  1, 13,  5, 22
730
  db 8,  1, 13,  5, 22
731
  db 9,  1, 63,  5, 72
731
  db 9,  1, 63,  5, 72
732
  db 1,  1,  1,148,105
732
  db 1,  1,  1,148,105
733
  db -1
733
  db -1
734
;// ]
734
;// ]
735
 
735
 
736
sz symbols_ex,';?.%"',"'"
736
sz symbols_ex,';?.%"',"'"
737
sz symbols   ,'#&*\:/<>|{}()[]=+-, '
737
sz symbols   ,'#&*\:/<>|{}()[]=+-, '
738
 
738
 
739
sz ini_sec_window   ,'Window',0
739
sz ini_sec_window   ,'Window',0
740
sz ini_window_top   ,'Top',0
740
sz ini_window_top   ,'Top',0
741
sz ini_window_left  ,'Left',0
741
sz ini_window_left  ,'Left',0
742
sz ini_window_right ,'Right',0
742
sz ini_window_right ,'Right',0
743
sz ini_window_bottom,'Bottom',0
743
sz ini_window_bottom,'Bottom',0
744
 
744
 
745
TINYPAD_END:	 ; end of file
745
TINYPAD_END:	 ; end of file
746
 
746
 
747
self_path rb PATHL
747
self_path rb PATHL
748
 
748
 
749
;-----------------------------------------------------------------------------
749
;-----------------------------------------------------------------------------
750
section @UDATA ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
750
section @UDATA ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
751
;-----------------------------------------------------------------------------
751
;-----------------------------------------------------------------------------
752
 
752
 
753
app_start:
753
app_start:
754
	   dd ?,?
754
	   dd ?,?
755
 .params   dd ?
755
 .params   dd ?
756
	   dd ?,?
756
	   dd ?,?
757
	   db ?
757
	   db ?
758
 .filename dd ?
758
 .filename dd ?
759
 
759
 
760
f_info.length dd ?
760
f_info.length dd ?
761
f_info.path:
761
f_info.path:
762
    times PATHL+1 db ?
762
    times PATHL+1 db ?
763
f_info70 rd 7
763
f_info70 rd 7
764
 
764
 
765
file_info FILEINFO
765
file_info FILEINFO
766
 
766
 
767
checker_ed    EDITOR
767
checker_ed    EDITOR
768
checker_ed_ll dd ?
768
checker_ed_ll dd ?
769
 
769
 
770
tab_bar      TABCTL
770
tab_bar      TABCTL
771
virtual at tab_bar.Current
771
virtual at tab_bar.Current
772
  cur_tab      TABITEM
772
  cur_tab      TABITEM
773
end virtual
773
end virtual
774
virtual at tab_bar.Current.Editor
774
virtual at tab_bar.Current.Editor
775
  cur_editor   EDITOR
775
  cur_editor   EDITOR
776
end virtual
776
end virtual
777
 
777
 
778
lines.scr     dd ?    ; number of lines on the screen
778
lines.scr     dd ?    ; number of lines on the screen
779
columns.scr   dd ?    ; number of columns on the screen
779
columns.scr   dd ?    ; number of columns on the screen
780
top_ofs       dd ?    ; height occupied by top buttons
780
top_ofs       dd ?    ; height occupied by top buttons
781
bot_ofs       dd ?    ; height occupied by bottom buttons
781
bot_ofs       dd ?    ; height occupied by bottom buttons
782
	      dw ?
782
	      dw ?
783
left_ofs      dd ?    ;
783
left_ofs      dd ?    ;
784
__rc	      dd ?,?,?,?
784
__rc	      dd ?,?,?,?
785
copy_count    dd ?    ; number of lines for copying (Ctrl+E)
785
copy_count    dd ?    ; number of lines for copying (Ctrl+E)
786
copy_size     dd ?    ; size of data to copy
786
copy_size     dd ?    ; size of data to copy
787
s_title.size  dd ?    ; caption length
787
s_title.size  dd ?    ; caption length
788
 
788
 
789
cur_line_len  dd ?
789
cur_line_len  dd ?
790
h_popup       dd ?
790
h_popup       dd ?
791
bot_dlg_handler dd ?
791
bot_dlg_handler dd ?
792
 
792
 
793
sel.begin.x   dd ?
793
sel.begin.x   dd ?
794
sel.begin.y   dd ?
794
sel.begin.y   dd ?
795
sel.end.x     dd ?
795
sel.end.x     dd ?
796
sel.end.y     dd ?
796
sel.end.y     dd ?
797
sel.selected  db ?
797
sel.selected  db ?
798
 
798
 
799
in_sel	      db ?
799
in_sel	      db ?
800
 
800
 
801
do_not_draw   db ?    ; draw top and bottom buttons?
801
do_not_draw   db ?    ; draw top and bottom buttons?
802
main_closed   db ?    ; main window closed?
802
main_closed   db ?    ; main window closed?
803
tb_casesen    db ?    ; focused textbox is case-sensitive?
803
tb_casesen    db ?    ; focused textbox is case-sensitive?
804
 
804
 
805
draw_blines   db ?
805
draw_blines   db ?
806
 
806
 
807
align 4
807
align 4
808
s_fname.size  dd ?
808
s_fname.size  dd ?
809
s_fname       rb PATHL+1
809
s_fname       rb PATHL+1
810
align 4
810
align 4
811
s_search.size dd ?
811
s_search.size dd ?
812
s_search      rb PATHL+1
812
s_search      rb PATHL+1
813
 
813
 
814
s_title       rb PATHL+11  ; window caption
814
s_title       rb PATHL+11  ; window caption
815
 
815
 
816
chr db ?
816
chr db ?
817
ext db ?
817
ext db ?
818
shi dd ?
818
shi dd ?
819
 
819
 
820
align 4
820
align 4
821
cl_3d_normal dd ?
821
cl_3d_normal dd ?
822
cl_3d_pushed dd ?
822
cl_3d_pushed dd ?
823
cl_3d_outset dd ?
823
cl_3d_outset dd ?
824
cl_3d_inset  dd ?
824
cl_3d_inset  dd ?
825
cl_3d_grayed dd ?
825
cl_3d_grayed dd ?
826
 
826
 
827
tb_color     TBOX
827
tb_color     TBOX
828
tb_opensave  TBOX
828
tb_opensave  TBOX
829
tb_find      TBOX
829
tb_find      TBOX
830
tb_replace   TBOX
830
tb_replace   TBOX
831
tb_gotorow   TBOX
831
tb_gotorow   TBOX
832
tb_gotocol   TBOX
832
tb_gotocol   TBOX
833
 
833
 
834
focused_tb   dd ?
834
focused_tb   dd ?
835
 
835
 
836
key1 rb 256
836
key1 rb 256
837
 
837
 
838
mst  db ?
838
mst  db ?
839
mst2 db ?
839
mst2 db ?
840
mev  db ?
840
mev  db ?
841
mouse_captured	db ?
841
mouse_captured	db ?
842
just_from_popup db ?
842
just_from_popup db ?
843
 
843
 
844
bot_mode db ?
844
bot_mode db ?
845
 
845
 
846
align 4
846
align 4
847
 
847
 
848
bot_dlg_height dd ?
848
bot_dlg_height dd ?
849
bot_dlg_mode2  db ?
849
bot_dlg_mode2  db ?
850
 
850
 
851
temp_buf dd ?
851
temp_buf dd ?
852
copy_buf dd ?
852
copy_buf dd ?
853
 
853
 
854
;-----------------------------------------------------------------------------
854
;-----------------------------------------------------------------------------
855
section @PARAMS ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
855
section @PARAMS ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
856
;-----------------------------------------------------------------------------
856
;-----------------------------------------------------------------------------
857
 
857
 
858
fasm_parameters:
858
fasm_parameters:
859
 
859
 
860
p_info	process_information
860
p_info	process_information
861
p_info2 process_information
861
p_info2 process_information
862
sc	system_colors
862
sc	system_colors
863
 
863
 
864
rb 1024*4
864
rb 1024*4
865
MAIN_STACK:
865
MAIN_STACK:
866
rb 1024*4
866
rb 1024*4
867
POPUP_STACK:
867
POPUP_STACK:
868
 
868
 
869
STATIC_MEM_END:
869
STATIC_MEM_END:
870
 
870
 
871
diff10 'Main memory size',0,$
871
diff10 'Main memory size',0,$