Subversion Repositories Kolibri OS

Rev

Rev 297 | Rev 327 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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