Subversion Repositories Kolibri OS

Rev

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