Subversion Repositories Kolibri OS

Rev

Rev 109 | Rev 135 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 109 Rev 131
Line 3... Line 3...
3
;
3
;
4
;   See f63
4
;   See f63
5
;
5
;
6
;   Compile with FASM for Menuet
6
;   Compile with FASM for Menuet
7
;
7
;
-
 
8
LMARGIN equ (15+5)
-
 
9
TMARGIN equ (35+5)
-
 
10
HSPACE  equ 16		
-
 
11
VSPACE  equ 12
-
 
12
IPC_BUF equ 160
-
 
13
DR_GRID equ 0;1
-
 
14
 
-
 
15
FL_KRNL equ 1
Line 8... Line 16...
8
 
16
 
9
include 'lang.inc'
-
 
Line 10... Line 17...
10
include 'macros.inc'
17
include 'lang.inc'
11
 
18
 
12
   use32
19
   use32
13
   org    0x0
20
   org    0x0
14
   db     'MENUET01'              ; 8 byte id
21
   db     'MENUET01'              ; 8 byte id
15
   dd     0x01                    ; header version
22
   dd     0x01                    ; header version
16
   dd     START                   ; start of code
23
   dd     START                   ; start of code
17
   dd     I_END                   ; size of image
24
   dd     I_END                   ; size of image
18
   dd     0x2000                  ; memory for app (4 Kb)
25
   dd     i_end+0x2000                  ; memory for app (4 Kb)
-
 
26
   dd     i_end+0x2000                  ; esp
-
 
27
   dd     0x0 , 0x0               ; I_Param , I_Icon
19
   dd     0x2000                  ; esp
28
include 'MACROS.INC'
20
   dd     0x0 , 0x0               ; I_Param , I_Icon
29
include 'debug.inc'
21
 
-
 
22
MAXSTRINGS = 16
30
purge newline
23
 
-
 
24
xpos  dd 0x0
-
 
Line 25... Line 31...
25
ypos  dd 0
31
MAXSTRINGS = 16
Line -... Line 32...
-
 
32
TMP = 80*(MAXSTRINGS+1)
-
 
33
 
-
 
34
START:                          ; start of execution
26
 
35
 
27
 
36
     mcall 60,1,ipcbuff,IPC_BUF+20
28
START:                          ; start of execution
37
     mcall 40,1000111b
29
 
38
     mov  [ipcbuff+4],8
30
     mov  ecx,1024
39
     mov  ecx,1024
31
    flush:
40
    flush:
Line 32... Line 41...
32
     mov  eax,63
41
     mov  eax,63
33
     mov  ebx,2
42
     mov  ebx,2
34
     int  0x40
43
     int  0x40
35
     loop flush
44
     loop flush
Line -... Line 45...
-
 
45
 
36
 
46
     mov  ecx, TMP
Line 37... Line 47...
37
     mov  ecx, 80*(MAXSTRINGS+1)
47
     xor  eax, eax
38
     xor  eax, eax
48
     mov  edi, [targ]
39
     mov  edi, text
49
     rep  stosb
40
     rep  stosb
50
 
41
 
51
     mov  [tmp1],'x'
42
     mov  [tmp],'x'
52
     mov  [tmp2],'x'
43
 
53
 
44
     mov  eax,14
54
     mov  eax,14
Line 45... Line 55...
45
     int  0x40
55
     int  0x40
Line 46... Line 56...
46
     and  eax,0xffff0000
56
     and  eax,0xffff0000
Line 60... Line 70...
60
    je   red
70
    je   red
61
    cmp  eax,2                  ; key in buffer ?
71
    cmp  eax,2                  ; key in buffer ?
62
    je   key
72
    je   key
63
    cmp  eax,3                  ; button in buffer ?
73
    cmp  eax,3                  ; button in buffer ?
64
    je   button
74
    je   button
-
 
75
    cmp  eax,7
65
 
76
    je   ipc
66
    mov  eax,63
77
    mov  eax,63
67
    mov  ebx,2
78
    mov  ebx,2
68
    int  0x40
79
    int  0x40
Line 69... Line 80...
69
 
80
 
70
    cmp  ebx,1
81
    cmp  ebx,1
Line 71... Line 82...
71
    jne  still
82
    jne  still
-
 
83
		
72
 
84
  new_data:
73
  new_data:
85
    mov  ebp,[targ]
74
 
86
  .no4:
75
    cmp  al,13
87
    cmp  al,13
76
    jne  no13
88
    jne  no13
77
    mov  [xpos],0
89
    and  dword[ebp-8],0
78
    jmp  new_check
90
    jmp  new_check
79
   no13:
91
   no13:
80
    cmp  al,10
92
    cmp  al,10
81
    jne  no10
93
    jne  no10
82
    inc  [ypos]
94
    inc  dword[ebp-4]
83
    cmp  [ypos],MAXSTRINGS
95
    cmp  dword[ebp-4],MAXSTRINGS
84
    jbe  noypos
96
    jbe  .noypos
85
    mov  [ypos],MAXSTRINGS
97
    mov  dword[ebp-4],MAXSTRINGS
86
    mov  esi,text+80
98
    lea  esi,[ebp+80]
87
    mov  edi,text
99
    mov  edi,ebp
88
    mov  ecx,80*(MAXSTRINGS)
100
    mov  ecx,80*(MAXSTRINGS)
Line 89... Line 101...
89
    cld
101
    cld
90
    rep  movsb
102
    rep  movsb
91
 
103
 
92
    mov  esi,[ypos]
104
    mov  esi,[ebp-4]
93
    imul esi,80
105
    imul esi,80
94
    add  esi,[xpos]
106
    add  esi,[ebp-8]
95
    add  esi,text
107
    add  esi,ebp
96
    mov  ecx,80
108
    mov  ecx,80
-
 
109
    xor  al,al
-
 
110
    rep  stosb
97
    xor  al,al
111
  .noypos:
98
    rep  stosb
112
    mov  [targ],text2
-
 
113
    and  [krnl_cnt],0
-
 
114
    jmp  new_check
-
 
115
  no10:
-
 
116
    cmp  ebp,text1
-
 
117
    je   add2
-
 
118
  		mov  ecx,[krnl_cnt]
-
 
119
		  cmp  al,[krnl_msg+ecx]
-
 
120
  		jne  .noknl
-
 
121
		  inc  [krnl_cnt]
99
  noypos:
122
  		cmp  [krnl_cnt],4
100
    jmp  new_check
123
  		jne  new_check
101
  no10:
124
    mov  [targ],text1
102
 
125
  	.noknl:
103
    mov  esi,[ypos]
126
    mov  ebp,[targ]
-
 
127
	   jecxz .add
104
    imul esi,80
128
    push eax
105
    add  esi,[xpos]
129
    mov  esi,krnl_msg
-
 
130
   .l1:
106
    mov  [text+esi],al
131
    lodsb
-
 
132
    call add_char
107
    inc  [xpos]
133
    loop .l1
108
    cmp  [xpos],80
134
    pop  eax
-
 
135
   .add:
Line 109... Line 136...
109
    jb   xposok
136
    and  [krnl_cnt],0
Line 110... Line 137...
110
    mov  [xpos],79
137
  add2:
111
  xposok:
138
    call add_char
112
 
139
 
Line 113... Line 140...
113
  new_check:
140
  new_check:
114
 
141
 
Line -... Line 142...
-
 
142
    mov  eax,63
-
 
143
    mov  ebx,2
115
    mov  eax,63
144
    int  0x40
Line 116... Line 145...
116
    mov  ebx,2
145
 
Line 117... Line 146...
117
    int  0x40
146
    cmp  ebx,1
-
 
147
    je   new_data
-
 
148
 
-
 
149
    cmp  [vmode],2
-
 
150
    je   still
-
 
151
    call draw_window
118
 
152
 
119
    cmp  ebx,1
153
    jmp  still
-
 
154
 
-
 
155
  ipc:
-
 
156
    mov  [vmode],2
-
 
157
    mov  eax,ipcbuff
-
 
158
    mov  esi,[eax+8]
-
 
159
    mov  byte[eax],1
-
 
160
    push dword[eax+12]
120
    je   new_data
161
    pop  [dump_len]
121
 
162
    mcall 9,work,-1
-
 
163
    mov  ecx,eax
-
 
164
   .lp:
-
 
165
    mcall 9
-
 
166
    cmp  [ebx+30],esi
-
 
167
    je   .ok
-
 
168
    loop .lp
122
    call draw_window
169
    and  [dump_len],0
123
 
170
    jmp  red
124
    jmp  still
171
  .ok:
-
 
172
    mov  [pid],esi
-
 
173
    lea  esi,[ebx+10]
-
 
174
    mov  edi,dump_title+10
-
 
175
    mov  ecx,12
-
 
176
    rep  movsb
-
 
177
    jmp  red
-
 
178
  key:                          ; key
-
 
179
    mov  eax,2                  ; just read it and ignore
-
 
180
    int  0x40
-
 
181
    cmp  ah,' '
-
 
182
    je   button.no_krnl_flt
-
 
183
    cmp  [vmode],2
-
 
184
    jne  still
-
 
185
    cmp  ah,176 ;left
-
 
186
    jb   still
-
 
187
    cmp  ah,179 ;right
125
 
188
    ja  still
Line -... Line 189...
-
 
189
    mov  ecx,[offs]
-
 
190
    shr  eax,8
126
 
191
    sub  eax,176
127
  red:                          ; redraw
192
    add  ecx,[arrows+eax*4]
128
    call draw_window
193
    shl  ecx,12
Line 129... Line 194...
129
    jmp  still
194
    shr  cx,12
130
 
195
    jmp  button.check_sel
Line 131... Line 196...
131
  key:                          ; key
196
  .nol:
132
    mov  eax,2                  ; just read it and ignore
197
    jmp  still
133
    int  0x40
198
 
-
 
199
arrows dd -1,16,-16,1
-
 
200
 
-
 
201
  button:                       ; button
-
 
202
    mov  eax,17                 ; get id
-
 
203
    int  0x40
-
 
204
 
-
 
205
    cmp  ah,1                   ; button id=1 ?
-
 
206
    jne  .noclose
-
 
207
 
-
 
208
    mov  eax,-1                 ; close this program
-
 
209
    int  0x40
-
 
210
  .noclose:
-
 
211
   	shr  eax,8
-
 
212
  		cmp  eax,10
-
 
213
  		jb   .nodump
-
 
214
		  lea  edi,[eax-10]
-
 
215
  		mcall 37,1
-
 
216
		  sub  eax,[edi*4+dump_cell_marg]
-
 
217
  		sub  eax,TMARGIN+VSPACE
-
 
218
  		push eax
-
 
219
    and  eax,0xffff
-
 
220
		  xor  edx,edx
-
 
221
  		div  word[edi*4+dump_cell_size+2]
-
 
222
		  mov  ecx,eax
-
 
223
    shl  ecx,16
-
 
224
  		xor  edx,edx
-
 
225
		  pop  eax
-
 
226
  		shr  eax,16
-
 
227
  		div  word[edi*4+dump_cell_size]
134
    jmp  still
228
  		mov  cx,ax
-
 
229
  .check_sel:
-
 
230
  		mov  eax,ecx
-
 
231
    shl  ax,12
-
 
232
    shr  eax,12
135
 
233
    inc  eax
-
 
234
    cmp  eax,[dump_len]
-
 
235
    ja   still;.nosel
-
 
236
    mov  dword[sel_byte],ecx
-
 
237
    dec  eax
-
 
238
    mov  [offs],eax
-
 
239
    jmp  red
-
 
240
 
-
 
241
  .nodump:
-
 
242
    cmp  eax,2
136
  button:                       ; button
243
    jne  .no_krnl_flt
-
 
244
    xor  [flag],FL_KRNL
-
 
245
    jmp  still
-
 
246
  .no_krnl_flt:
-
 
247
    mov  [ipcbuff+4],8
-
 
248
    and  byte[ipcbuff],0
-
 
249
    inc  [vmode]
-
 
250
    cmp  [vmode],3
-
 
251
    jb   .vmok
-
 
252
    and  [vmode],0
-
 
253
  .vmok:
137
    mov  eax,17                 ; get id
254
    jmp  red
-
 
255
 
138
    int  0x40
256
add_char:
Line 139... Line 257...
139
 
257
    push esi
140
    cmp  ah,1                   ; button id=1 ?
258
    mov  esi,[ebp-4]
141
    jne  noclose
259
    imul esi,80
Line 168... Line 286...
168
 
286
 
169
                                   ; DRAW WINDOW
287
                                   ; DRAW WINDOW
170
    mov  eax,0                     ; function 0 : define and draw window
288
    mov  eax,0                     ; function 0 : define and draw window
171
;   mov  ebx,50*65536+400          ; [x start] *65536 + [x size]
289
;   mov  ebx,50*65536+400          ; [x start] *65536 + [x size]
172
    mov  ebx,[xstart]
290
    mov  ebx,[xstart]
173
    mov  ecx,MAXSTRINGS*10+40      ; [y start] *65536 + [y size]
291
    mov  ecx,MAXSTRINGS*10+45      ; [y start] *65536 + [y size]
174
    mov  edx,[sc.work]             ; color of work area RRGGBB,8->color gl
292
    mov  edx,[sc.work]             ; color of work area RRGGBB,8->color gl
175
    or   edx,0x03000000
293
    or   edx,0x03000000
Line 176... Line 294...
176
    int  0x40
294
    int  0x40
Line 182... Line 300...
182
    or   ecx,0x10000000
300
    or   ecx,0x10000000
183
    mov  edx,header                ; pointer to text beginning
301
    mov  edx,header                ; pointer to text beginning
184
    mov  esi,header.len            ; text length
302
    mov  esi,header.len            ; text length
185
    int  0x40
303
    int  0x40
Line -... Line 304...
-
 
304
 
-
 
305
    mov  ecx,4
-
 
306
    mov  esi,[sc.work]
-
 
307
    mov  ebx,316 shl 16+5*6
-
 
308
    mov  edx,3;+1 shl 30
-
 
309
    mcall 8,,<5,12>
-
 
310
    mov  edx,[vmode]
-
 
311
    lea  edx,[edx*4+duk]
-
 
312
    mcall 4,<320,8>,,,4
-
 
313
 
-
 
314
    cmp  [vmode],2
186
 
315
    je   no_mdbg
187
    mov  ebx,15*65536+33           ; draw info text with function 4
316
    mov  ebx,15*65536+33           ; draw info text with function 4
188
    mov  ecx,[sc.work_text]
317
    mov  ecx,[sc.work_text]
-
 
318
    mov  edx,text1
-
 
319
    cmp  [vmode],0
-
 
320
    je   .kern
-
 
321
    mov  edx,text2
189
    mov  edx,text
322
  .kern:
190
    mov  esi,80
323
    mov  esi,80
191
  newline:
324
  newline:
192
    mov  eax,4
325
    mov  eax,4
193
    int  0x40
326
    int  0x40
194
    add  ebx,10
327
    add  ebx,10
195
    add  edx,80
328
    add  edx,80
196
    cmp  [edx],byte 'x'
329
    cmp  [edx],byte 'x'
-
 
330
    jne  newline
-
 
331
    jmp  enddraw
-
 
332
  no_mdbg:
-
 
333
  if DUMP_TEST eq 1
-
 
334
    mov  esi,0
197
    jne  newline
335
    mov  [dump_len],100;IPC_BUF
-
 
336
  else
-
 
337
    mov  esi,ipcbuff+16
-
 
338
  end if
-
 
339
    mov  ecx,[dump_len]
-
 
340
    call dump_btn
-
 
341
  		call draw_dump
198
 
342
		enddraw:
199
    mov  eax,12                    ; function 12:tell os about windowdraw
343
    mov  eax,12                    ; function 12:tell os about windowdraw
200
    mov  ebx,2                     ; 2, end of draw
344
    mov  ebx,2                     ; 2, end of draw
Line 201... Line 345...
201
    int  0x40
345
    int  0x40
Line -... Line 346...
-
 
346
 
-
 
347
    ret
-
 
348
 
-
 
349
if DR_GRID eq 1
-
 
350
draw_grid:
-
 
351
  mov  ecx,11
-
 
352
  mov  edi,(TMARGIN+VSPACE)shl 16+TMARGIN+VSPACE
-
 
353
 .l1:
-
 
354
  push ecx
-
 
355
  mov  ebx,LMARGIN shl 16+LMARGIN+16*HSPACE
-
 
356
  mcall 38,,edi,0
-
 
357
  add  edi,VSPACE shl 16+VSPACE
-
 
358
  pop  ecx
-
 
359
  loop .l1
-
 
360
  mov  ecx,17
-
 
361
  mov  edi,(TMARGIN+VSPACE)shl 16+TMARGIN+VSPACE*10
-
 
362
  mov  ebx,LMARGIN shl 16+LMARGIN
-
 
363
 .l2:
-
 
364
  push ecx
-
 
365
  mcall 38,,edi,0
-
 
366
  add  ebx,HSPACE shl 16+HSPACE
-
 
367
  pop  ecx
-
 
368
  loop .l2
-
 
369
  ret
-
 
370
end if
-
 
371
 
-
 
372
draw_numbers:
-
 
373
  mcall 4,(LMARGIN+2) shl 16+180,0,numb,numb_len-numb
-
 
374
  mov  eax,dword[sel_byte]
-
 
375
  shl  ax,12
-
 
376
  shr  eax,12
-
 
377
  mov  edi,eax
-
 
378
if ~ DUMP_TEST eq 1
-
 
379
  add  edi,ipcbuff+16
-
 
380
end if
-
 
381
  mov  edx,(LMARGIN+2+6*6)shl 16+180
-
 
382
  mov  ebx,0x30000
-
 
383
  movzx ecx,byte[edi]
-
 
384
  mcall 47,,,,0x4e00e7
-
 
385
  add  ebx,0x20000
-
 
386
  add  edx,(6*10)shl 16
-
 
387
  movzx ecx,word[edi]
-
 
388
  mcall
-
 
389
  add  ebx,0x50000
-
 
390
  add  edx,(6*13)shl 16
-
 
391
  mov  ecx,[edi]
-
 
392
  mcall
-
 
393
  mov  ebx,0x80100
-
 
394
  add  edx,(6*19)shl 16
-
 
395
  mcall
-
 
396
.ex:
-
 
397
  ret
-
 
398
 
-
 
399
draw_dump:
-
 
400
; esi - data ptr, ecx - length
-
 
401
  jecxz draw_numbers.ex
-
 
402
  pusha
-
 
403
  call draw_numbers
-
 
404
  mcall 4,(LMARGIN+2) shl 16+27,0,dump_title,dump_t_len-dump_title
-
 
405
  mcall 47,0x30101,ipcbuff+8,(LMARGIN+2+6*29)shl 16+27
-
 
406
  add   edx,(6*27) shl 16
-
 
407
  mov   ecx,offs
-
 
408
  mcall
-
 
409
  sub   edx,(5*6)shl 16
-
 
410
  mcall ,0x30001
-
 
411
  mov  ecx,16
-
 
412
  mov  edi,HSPACE shl 16
-
 
413
  mov  ebx,(LMARGIN+5)shl 16+42
-
 
414
  call draw_marks
-
 
415
  mov  ecx,[esp+24]
-
 
416
  dec  ecx
-
 
417
  shr  ecx,4
-
 
418
  inc  ecx
-
 
419
  mov  ebx,(LMARGIN-10)shl 16+TMARGIN+2+VSPACE
-
 
420
  mov  edi,VSPACE
-
 
421
  call draw_marks
-
 
422
  popa
-
 
423
		mov  edx,TMARGIN+2
-
 
424
		mov  edi,ecx
-
 
425
	.lp:	
-
 
426
		add  edx,(LMARGIN+2) shl 16+VSPACE
-
 
427
		mov  ecx,16
-
 
428
		cmp  edi,ecx
-
 
429
		jae  .less
-
 
430
		mov  ecx,edi
-
 
431
	.less:	
-
 
432
		sub  edi,ecx
-
 
433
		push esi ecx
-
 
434
		mov  ebx,0x20100
-
 
435
	.lp1:	
-
 
436
		push ecx esi
-
 
437
		movzx ecx,byte[esi]
-
 
438
		mcall 47,,,,0
-
 
439
		add  edx,HSPACE shl 16
-
 
440
		pop  esi ecx
-
 
441
		inc  esi
-
 
442
		loop .lp1
-
 
443
		pusha
-
 
444
		mov  ebx,edx
-
 
445
		and  ebx,0xffff
-
 
446
		add  ebx,(LMARGIN+16*HSPACE+15)shl 16
-
 
447
		mov  edx,[esp+36]
-
 
448
		mov  esi,[esp+32]
-
 
449
		mcall 4,,0
-
 
450
		popa
-
 
451
		add  esp,8
-
 
452
		and  edx,0xffff
-
 
453
		test edi,edi
-
 
454
		jnz  .lp
-
 
455
.ex:
-
 
456
		ret
-
 
457
 
-
 
458
draw_marks:
-
 
459
; ebx -xy, edi-addition, ecx -cycles
-
 
460
		pusha
-
 
461
  mov  edx,__hexdigits
-
 
462
  mov  eax,4
-
 
463
  mov  esi,1
-
 
464
.tt:
-
 
465
  push ecx
-
 
466
  mcall ,,0xffffff
-
 
467
  add  ebx,edi
-
 
468
  inc  edx
-
 
469
  pop  ecx
-
 
470
  loop .tt
-
 
471
  popa
-
 
472
  ret
-
 
473
 
-
 
474
dump_btn: ; ecx-length
-
 
475
  jecxz draw_dump.ex
-
 
476
		pusha
-
 
477
		test ecx,0xffff
-
 
478
		je   .even
-
 
479
		add  ecx,16
-
 
480
	.even:	
-
 
481
		shr  ecx,4
-
 
482
		imul ecx,VSPACE
-
 
483
		add  ecx,(TMARGIN+VSPACE)shl 16-5
-
 
484
		mcall 8,LMARGIN shl 16+16*HSPACE-5,,10+3 shl 29,[sc.work]
-
 
485
		inc  edx
-
 
486
		mcall ,(LMARGIN+16*HSPACE+15)shl 16+6*16
-
 
487
		mov  edx,0xff0000
-
 
488
		mov  esi,dump_cell_size
-
 
489
		xor  eax,eax
-
 
490
		movzx ebx,[sel_byte]
-
 
491
		lodsw
-
 
492
		imul bx,ax
-
 
493
		shl  ebx,16
-
 
494
		lea  ebx,[ebx+eax+LMARGIN shl 16]
-
 
495
		movzx ecx,[sel_byte+2]
-
 
496
		lodsw
-
 
497
		imul cx,ax
-
 
498
		shl  ecx,16
-
 
499
		lea  ecx,[ecx+eax+(TMARGIN+VSPACE) shl 16]
-
 
500
		mcall 13
-
 
501
		movzx ebx,[sel_byte]
-
 
502
		lodsw
-
 
503
		imul bx,ax
-
 
504
		shl  ebx,16
-
 
505
		lea  ebx,[ebx+eax+(LMARGIN+16*HSPACE+15)shl 16]
-
 
506
  mcall 13
-
 
507
		popa
-
 
508
.ex:
-
 
509
		ret		
-
 
510
 
-
 
511
krnl_msg db 'K : '
-
 
512
duk db 'KernUserDump'
-
 
513
numb db 'Byte:     Word:       Dword:               Hex:'
Line 202... Line 514...
202
 
514
numb_len:
Line -... Line 515...
-
 
515
dump_title db 'Dump from              (pid=    h)         Offset:     (   h)'
-
 
516
dump_t_len:
-
 
517
 
-
 
518
; DATA AREA
203
    ret
519
 
204
 
520
dump_cell_marg dd LMARGIN shl 16,(LMARGIN+16*HSPACE+15)shl 16
205
 
521
dump_cell_size dw HSPACE,VSPACE,6,VSPACE
206
; DATA AREA
522
; 11,11 > 0,-1
207
 
523
; 5,11  > 0,-1
208
if lang eq ru
524
if lang eq ru
209
   header:
525
   header:
210
        db   '„Ž‘Š€ Ž’‹€„Šˆ ˆ ‘ŽŽ™…ˆ‰'
526
        db   '„Ž‘Š€ Ž’‹€„Šˆ ˆ ‘ŽŽ™…ˆ‰'
211
    .len = $ - header
527
    .len = $ - header
-
 
528
else
-
 
529
   header:
-
 
530
        db   'GENERAL DEBUG & MESSAGE BOARD'
212
else
531
    .len = $ - header
-
 
532
end if
-
 
533
		 krnl_cnt dd 0
-
 
534
   vmode dd 0
-
 
535
   targ  dd text2
-
 
536
I_END:
-
 
537
     offs dd ?
213
   header:
538
     flag rb 1
-
 
539
     ipcbuff rb IPC_BUF+20
-
 
540
     rd 2
-
 
541
;     x1pos  dd ?
-
 
542
;     y1pos  dd ?
-
 
543
     text1 rb 80*(MAXSTRINGS+1)
214
        db   'GENERAL DEBUG & MESSAGE BOARD'
544
     tmp1  db ?
-
 
545
     rd 2
-
 
546
;     x2pos  dd ?
-
 
547
;     y2pos  dd ?
215
    .len = $ - header
548
     text2 rb 80*(MAXSTRINGS+1)
-
 
549
     tmp2  db ?
216
end if
550
     work rb 4096
217
I_END:
551
     sel_byte  dw ?,?
-
 
552
     pid  dd ?