source: xtideuniversalbios/trunk/Assembly_Library/Src/LibraryTests.asm@ 59

Last change on this file since 59 was 58, checked in by Tomi Tilli, 14 years ago

Changes to Assembly Library:

  • Exiting menu with ESC can now be canceled.
File size: 16.3 KB
Line 
1; File name : LibraryTests.asm
2; Project name : Assembly Library
3; Created date : 27.6.2010
4; Last update : 12.10.2010
5; Author : Tomi Tilli
6; Description : Tests for Assembly Library.
7; This file should not be included when using the library on
8; some other project.
9
10; Include .inc files
11%define INCLUDE_MENU_DIALOGS
12%include "AssemblyLibrary.inc" ; Assembly Library. Must be included first!
13
14
15; Section containing code
16SECTION .text
17
18; Program first instruction.
19ORG 100h ; Code starts at offset 100h (DOS .COM)
20Start:
21 jmp LibraryTests_Start
22
23; Include library sources
24%include "AssemblyLibrary.asm"
25
26
27;--------------------------------------------------------------------
28; Program start
29;--------------------------------------------------------------------
30ALIGN JUMP_ALIGN
31LibraryTests_Start:
32 CALL_DISPLAY_LIBRARY InitializeDisplayContext
33 CALL_DISPLAY_LIBRARY ClearScreen
34
35 ;call LibraryTests_Sort
36 ;call LibraryTests_ForDisplayLibrary
37 ;call LibraryTests_ForKeyboardLibrary
38 call LibraryTests_ForMenuLibrary
39
40 ; Exit to DOS
41 ;mov ax, CURSOR_XY(1, 1)
42 ;CALL_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
43 CALL_DISPLAY_LIBRARY SynchronizeDisplayContextToHardware
44 mov ax, 4C00h ; Exit to DOS
45 int 21h
46
47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
48ALIGN JUMP_ALIGN
49LibraryTests_ForMenuLibrary:
50 mov [cs:g_dialogInputOutput+DIALOG_INPUT.fszTitle+2], cs
51 mov [cs:g_dialogInputOutput+DIALOG_INPUT.fszItems+2], cs
52 mov [cs:g_dialogInputOutput+DIALOG_INPUT.fszInfo+2], cs
53
54 mov bx, .MenuEventHandler
55 call MenuInit_DisplayMenuWithHandlerInBXandUserDataInDXAX
56 ret
57
58ALIGN JUMP_ALIGN
59.MenuEventHandler:
60 jmp [cs:bx+.rgfnMenuEvents]
61.NotHandled:
62 clc ; Not handled so clear
63 ret
64
65ALIGN JUMP_ALIGN
66.InitializeMenu:
67 mov WORD [si+MENUINIT.wTimeoutTicks], 10000 / 55 ; 10 seconds
68 mov WORD [si+MENUINIT.wItems], 51
69 mov BYTE [si+MENUINIT.bWidth], 40
70 mov BYTE [si+MENUINIT.bHeight], 20
71 mov BYTE [si+MENUINIT.bTitleLines], TEST_MENU_TITLE_LINES
72 mov BYTE [si+MENUINIT.bInfoLines], TEST_MENU_INFO_LINES
73 mov WORD [si+MENUINIT.wHighlightedItem], 1
74 stc
75 ret
76
77ALIGN JUMP_ALIGN
78.RefreshTitle:
79 mov si, .szMenuTitle
80 CALL_DISPLAY_LIBRARY PrintNullTerminatedStringFromCSSI
81 stc
82 ret
83.szMenuTitle:
84 db "Simple test program for Assembly Library. Can be used to find bugs.",NULL
85
86ALIGN JUMP_ALIGN
87.RefreshInformation:
88 push bp
89 mov bp, sp
90 mov si, .szInfoTitle
91 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
92 pop bp
93 stc
94 ret
95.szInfoTitle:
96 db "Information line 1,",LF,CR,
97 db "Information line 2. ",
98 db "This comes (12) right after Information line 2.",NULL
99
100ALIGN JUMP_ALIGN
101.RefreshItemFromCX:
102 cmp cx, TEST_MENU_VALID_ITEMS
103 jb SHORT .PrintKnownItem
104
105 push bp
106 mov si, .szItem
107 mov bp, sp
108 push cx ; Item index
109 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
110 pop bp
111 stc
112 ret
113.szItem:
114 db "This is item %d.",NULL
115.PrintKnownItem:
116 mov si, cx
117 shl si, 1
118 mov si, [cs:si+.rgszItems]
119 CALL_DISPLAY_LIBRARY PrintNullTerminatedStringFromCSSI
120 stc
121 ret
122
123ALIGN JUMP_ALIGN
124.ItemSelectedFromCX:
125 push cs
126 pop ds
127 cmp cx, TEST_MENU_VALID_ITEMS
128 jae SHORT .ReturnWithoutHandling
129 mov bx, cx
130 shl bx, 1
131 jmp [bx+.rgfnSelectionHandler]
132.ReturnWithoutHandling:
133 stc
134 ret
135
136ALIGN WORD_ALIGN
137.rgfnSelectionHandler:
138 dw .ExitMenuByItem
139 dw .ToggleTitle
140 dw .ToggleInfo
141 dw .ShowMessageDialogWithUnformattedText
142 dw .AskWordFromUser
143 dw .AskStringFromUser
144 dw .AskSelectionFromUser
145 dw .AskFileFromUser
146 dw .TestProgressBar
147
148
149ALIGN JUMP_ALIGN
150.ExitMenuByItem:
151 CALL_MENU_LIBRARY Close
152.ExitMenuByMenuLibrary:
153 stc
154 ret
155
156ALIGN JUMP_ALIGN
157.ToggleTitle:
158 mov al, [bp+MENUINIT.bTitleLines]
159 xor al, TEST_MENU_TITLE_LINES
160 CALL_MENU_LIBRARY SetTitleHeightFromAL
161 jmp SHORT .RefreshMenuWindow
162ALIGN JUMP_ALIGN
163.ToggleInfo:
164 mov al, [bp+MENUINIT.bInfoLines]
165 xor al, TEST_MENU_INFO_LINES
166 CALL_MENU_LIBRARY SetInformationHeightFromAL
167.RefreshMenuWindow:
168 CALL_MENU_LIBRARY RestartTimeout
169 CALL_MENU_LIBRARY RefreshWindow
170 stc
171 ret
172
173ALIGN JUMP_ALIGN
174.ShowMessageDialogWithUnformattedText:
175 mov di, g_szVeryLongString
176 jmp .ShowDialogWithStringInCSDI
177
178ALIGN JUMP_ALIGN
179.AskWordFromUser:
180 mov si, g_dialogInputOutput
181 mov BYTE [si+WORD_DIALOG_IO.bNumericBase], 10
182 mov WORD [si+WORD_DIALOG_IO.wMin], 10
183 mov WORD [si+WORD_DIALOG_IO.wMax], 20
184 CALL_MENU_LIBRARY GetWordWithIoInDSSI
185
186 mov ax, [si+WORD_DIALOG_IO.wReturnWord]
187 mov di, g_szBuffer
188 call .FormatWordFromAXtoStringBufferInCSDI
189 call .ShowDialogWithStringInCSDI
190 stc
191 ret
192
193ALIGN JUMP_ALIGN
194.AskStringFromUser:
195 mov si, g_dialogInputOutput
196 mov WORD [si+STRING_DIALOG_IO.fnCharFilter], NULL
197 mov WORD [si+STRING_DIALOG_IO.wBufferSize], 17
198 mov WORD [si+STRING_DIALOG_IO.fpReturnBuffer], g_szBuffer
199 mov [si+STRING_DIALOG_IO.fpReturnBuffer+2], cs
200 CALL_MENU_LIBRARY GetStringWithIoInDSSI
201
202 mov di, g_szBuffer
203 call .ShowDialogWithStringInCSDI
204 stc
205 ret
206
207ALIGN JUMP_ALIGN
208.AskSelectionFromUser:
209 mov si, g_dialogInputOutput
210 mov WORD [si+DIALOG_INPUT.fszItems], .szSelections
211 CALL_MENU_LIBRARY GetSelectionToAXwithInputInDSSI
212
213 mov di, g_szBuffer
214 call .FormatWordFromAXtoStringBufferInCSDI
215 call .ShowDialogWithStringInCSDI
216 stc
217 ret
218.szSelections:
219 db "Cancel",LF
220 db "Yes",LF
221 db "No",NULL
222
223ALIGN JUMP_ALIGN
224.AskFileFromUser:
225 mov si, g_dialogInputOutput
226 mov WORD [si+FILE_DIALOG_IO.fszItemBuffer], g_szBuffer
227 mov BYTE [si+FILE_DIALOG_IO.bDialogFlags], FLG_FILEDIALOG_DIRECTORY | FLG_FILEDIALOG_NEW | FLG_FILEDIALOG_DRIVES
228 mov BYTE [si+FILE_DIALOG_IO.bFileAttributes], FLG_FILEATTR_DIRECTORY | FLG_FILEATTR_ARCHIVE
229 mov WORD [si+FILE_DIALOG_IO.fpFileFilterString], .szAllFiles
230 mov [si+FILE_DIALOG_IO.fpFileFilterString+2], cs
231 CALL_MENU_LIBRARY GetFileNameWithIoInDSSI
232 cmp BYTE [g_dialogInputOutput+FILE_DIALOG_IO.bUserCancellation], TRUE
233 je SHORT .FileSelectionCancelled
234
235 mov di, g_dialogInputOutput + FILE_DIALOG_IO.szFile
236 call .ShowDialogWithStringInCSDI
237.FileSelectionCancelled:
238 stc
239 ret
240.szAllFiles:
241 db "*.*",NULL
242
243
244ALIGN JUMP_ALIGN
245.FormatWordFromAXtoStringBufferInCSDI:
246 push bp
247 push di
248 mov si, di
249 xchg cx, ax
250 CALL_DISPLAY_LIBRARY PushDisplayContext
251
252 mov bx, cs
253 mov ax, si
254 CALL_DISPLAY_LIBRARY SetCharacterPointerFromBXAX
255 mov bl, ATTRIBUTES_NOT_USED
256 mov ax, BUFFER_OUTPUT_WITH_CHAR_ONLY
257 CALL_DISPLAY_LIBRARY SetCharOutputFunctionFromAXwithAttribFlagInBL
258 lea ax, [si+STRING_BUFFER_SIZE]
259 CALL_DISPLAY_LIBRARY SetCharacterOutputParameterFromAX
260
261 mov si, .szFormatWord
262 mov bp, sp
263 push cx
264 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
265 mov al, NULL
266 CALL_DISPLAY_LIBRARY PrintCharacterFromAL ; Terminate buffer with NULL
267
268 CALL_DISPLAY_LIBRARY PopDisplayContext
269 pop di
270 pop bp
271 ret
272.szFormatWord:
273 db "Integer %d selected!",NULL
274
275
276ALIGN JUMP_ALIGN
277.ShowDialogWithStringInCSDI:
278 push cs
279 pop ds
280 mov si, g_dialogInputOutput
281 mov WORD [si+DIALOG_INPUT.fszItems], di
282 CALL_MENU_LIBRARY DisplayMessageWithInputInDSSI
283 stc
284 ret
285
286
287ALIGN JUMP_ALIGN
288.TestProgressBar:
289 push cs
290 pop ds
291 mov si, g_dialogInputOutput
292 mov WORD [si+PROGRESS_DIALOG_IO.wCurrentProgressValue], 0
293 mov WORD [si+PROGRESS_DIALOG_IO.wMaxProgressValue], 500
294 mov WORD [si+PROGRESS_DIALOG_IO.wMinProgressValue], 0
295 mov WORD [si+PROGRESS_DIALOG_IO.fnTaskWithParamInDSSI], .ProgressTaskWithParamInDSSI
296 mov ax, 500 ; Counter for progress task
297 CALL_MENU_LIBRARY StartProgressTaskWithIoInDSSIandParamInDXAX
298 stc
299 ret
300
301ALIGN JUMP_ALIGN
302.ProgressTaskWithParamInDSSI:
303 mov ax, 50000 ; 50 millisec delay
304 call Delay_MicrosecondsFromAX
305 dec si
306 CALL_MENU_LIBRARY SetUserDataFromDSSI
307 mov ax, 500
308 sub ax, si
309 push si
310 CALL_MENU_LIBRARY SetProgressValueFromAX
311 pop si
312 test si, si
313 jnz .ProgressTaskWithParamInDSSI
314 ret
315
316
317
318ALIGN WORD_ALIGN
319.rgfnMenuEvents:
320 dw .InitializeMenu ; .InitializeMenuinitToDSSI
321 dw .ExitMenuByMenuLibrary ; .ExitMenu
322 dw .NotHandled ; .IdleProcessing
323 dw .NotHandled ; .ItemHighlightedFromCX
324 dw .ItemSelectedFromCX ; .ItemSelectedFromCX
325 dw .NotHandled ; .KeyStrokeInDX
326 dw .RefreshTitle ; .RefreshTitle
327 dw .RefreshInformation ; .RefreshInformation
328 dw .RefreshItemFromCX ; .RefreshItemFromCX
329
330.rgszItems:
331 dw .szExitMenu
332 dw .szToggleTitle
333 dw .szToggleInfo
334 dw .szShowMessage
335 dw .szAskWord
336 dw .szAskString
337 dw .szAskSelection
338 dw .szAskFile
339 dw .szTestProgress
340.szExitMenu: db "Exit menu",NULL
341.szToggleTitle: db "Toggle title",NULL
342.szToggleInfo: db "Toggle information",NULL
343.szShowMessage: db "Display unformatted message",NULL
344.szAskWord: db "Input word",NULL
345.szAskString: db "Input string",NULL
346.szAskSelection:db "Display selection dialog",NULL
347.szAskFile: db "Display file dialog",NULL
348.szTestProgress:db "Display progress bar",NULL
349TEST_MENU_VALID_ITEMS EQU 9
350TEST_MENU_TITLE_LINES EQU 2
351TEST_MENU_INFO_LINES EQU 3
352
353
354
355;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
356ALIGN JUMP_ALIGN
357LibraryTests_ForKeyboardLibrary:
358 mov ax, CURSOR_XY(0, 6)
359 CALL_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
360 call ReadUnsignedDecimalInteger
361 call ReadHexadecimalWord
362 ret
363
364
365ReadUnsignedDecimalInteger:
366 mov si, .szEnterUnsignedWord
367 CALL_DISPLAY_LIBRARY PrintNullTerminatedStringFromCSSI
368 CALL_DISPLAY_LIBRARY SynchronizeDisplayContextToHardware ; Move hardware cursor
369
370 mov bx, 10 ; Numeric base
371 call Keyboard_ReadUserInputtedWordWhilePrinting
372
373 mov si, .szWordEntered
374 mov bp, sp
375 push ax
376 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
377 ret
378.szWordEntered:
379 db ". Word entered: %u",LF,CR,NULL
380.szEnterUnsignedWord:
381 db "Enter unsigned word: ",NULL
382
383
384ReadHexadecimalWord:
385 mov si, .szEnterHexadecimalWord
386 CALL_DISPLAY_LIBRARY PrintNullTerminatedStringFromCSSI
387 CALL_DISPLAY_LIBRARY SynchronizeDisplayContextToHardware ; Move hardware cursor
388
389 mov bx, 16 ; Numeric base
390 call Keyboard_ReadUserInputtedWordWhilePrinting
391
392 mov si, .szWordEntered
393 mov bp, sp
394 push ax
395 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
396 ret
397.szWordEntered:
398 db ". Word entered: %x",LF,CR,NULL
399.szEnterHexadecimalWord:
400 db "Enter hexadecimal word: ",NULL
401
402
403
404;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
405ALIGN JUMP_ALIGN
406LibraryTests_ForDisplayLibrary:
407 CALL_DISPLAY_LIBRARY PushDisplayContext
408 call PrintHorizontalRuler
409 call PrintVerticalRuler
410
411 mov al, COLOR_ATTRIBUTE(COLOR_BRIGHT_WHITE, COLOR_BLACK)
412 CALL_DISPLAY_LIBRARY SetCharacterAttributeFromAL
413
414 mov ax, CURSOR_XY(0, 1)
415 CALL_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
416 call PrintFormattedStrings
417
418 CALL_DISPLAY_LIBRARY PopDisplayContext
419 ret
420
421
422PrintHorizontalRuler:
423 mov ax, CURSOR_XY(0, 0)
424 CALL_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
425 CALL_DISPLAY_LIBRARY GetColumnsToALandRowsToAH
426 eMOVZX cx, al
427 mov bx, 10<<8 ; Divider 10 to BH
428.ColumnNumberLoop:
429 eMOVZX ax, bl ; Column index to AX (0...79)
430 div bh ; AH = 0...9, AL = attribute
431 mov dx, ax
432 inc ax ; Increment attribute for non-black foreground
433 CALL_DISPLAY_LIBRARY SetCharacterAttributeFromAL
434 xchg ax, dx
435 mov al, '0'
436 add al, ah ; AL = '0'...'9'
437 CALL_DISPLAY_LIBRARY PrintCharacterFromAL
438 inc bx ; Increment column index
439 loop .ColumnNumberLoop
440 ret
441
442
443PrintVerticalRuler:
444 CALL_DISPLAY_LIBRARY GetColumnsToALandRowsToAH
445 eMOVZX cx, ah ; Number of rows to CX
446 dec ax ; Last column
447 xor ah, ah
448 CALL_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
449
450 dec cx ; Decrement rows to print last row outside loop
451 mov bx, 10<<8 ; BH = 10 (divider), BL = 0 (row index)
452 mov si, .szVerticalRulerCharacter
453.RowNumberLoop:
454 call .PrintRowNumberFromBL
455 inc bx ; Increment row index
456 loop .RowNumberLoop
457
458 ; Last row
459 mov si, .szLastVerticalRulerCharacter
460.PrintRowNumberFromBL:
461 eMOVZX ax, bl ; Row index to AX (0...24)
462 div bh ; AH = 0...9, AL = attribute
463 add al, COLOR_GRAY ; Start from color GRAY
464 mov bp, sp ; Prepare BP for string formatting
465 push ax ; Push attribute
466 eMOVZX ax, ah
467 push ax ; Push row index
468 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
469 ret
470
471.szVerticalRulerCharacter:
472 db "%A%u",LF,NULL
473.szLastVerticalRulerCharacter:
474 db "%A%u",NULL
475
476
477PrintFormattedStrings:
478 call .PrintIntegers
479 call .PrintHexadecimals
480 call .PrintCharacters
481 call .PrintStrings
482 call .RepeatChar
483 ret
484
485.PrintIntegers:
486 mov si, .szIntegers
487 mov bp, sp
488 ePUSH_T ax, COLOR_ATTRIBUTE(COLOR_RED, COLOR_BLACK)
489 ePUSH_T ax, -32768
490 ePUSH_T ax, -1
491 ePUSH_T ax, 0
492 ePUSH_T ax, 1
493 ePUSH_T ax, 65535
494 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
495 ret
496.szIntegers:
497 db "Integers -32768, -1, 0, 1, 65535: %A|%6-d|%6-d|%6-d|%6-d|%6-u|",LF,CR,NULL
498
499.PrintHexadecimals:
500 mov si, .szHexadecimals
501 mov bp, sp
502 ePUSH_T ax, COLOR_ATTRIBUTE(COLOR_RED, COLOR_BLACK)
503 ePUSH_T ax, 0CACAh
504 ePUSH_T ax, 0FFFFh
505 ePUSH_T ax, 0
506 ePUSH_T ax, 5A5Ah
507 ePUSH_T ax, 0A5A5h
508 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
509 ret
510.szHexadecimals:
511 db "Hexadecimals CACAh, FFFFh, 0, 5A5Ah, A5A5h:%A|%6-x|%6-x|%6-x|%6-x|%6-x|",LF,CR,NULL
512
513.PrintCharacters:
514 mov si, .szCharacters
515 mov bp, sp
516 ePUSH_T ax, COLOR_ATTRIBUTE(COLOR_RED, COLOR_BLACK)
517 ePUSH_T ax, 'a'
518 ePUSH_T ax, 'B'
519 ePUSH_T ax, 'c'
520 ePUSH_T ax, 'D'
521 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
522 ret
523.szCharacters:
524 db "Characters a, B, c, D, percent: %A|%6c|%6c|%6c|%6c|%6%|",LF,CR,NULL
525
526.PrintStrings:
527 mov si, .szStrings
528 mov bp, sp
529 ePUSH_T ax, COLOR_ATTRIBUTE(COLOR_RED, COLOR_BLACK)
530 ePUSH_T ax, .szCSSI
531 ePUSH_T ax, .szFar
532 push cs
533 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
534 ret
535.szStrings:
536 db "Strings ",'"',"Hello CSSI",'"'," and ",'"',"Far",'"',": %A|%20s|%13S|",LF,CR,NULL
537.szCSSI:
538 db "Hello CSSI",NULL
539.szFar:
540 db "Far",NULL
541
542.RepeatChar:
543 mov si, .szRepeat
544 mov bp, sp
545 ePUSH_T ax, COLOR_ATTRIBUTE(COLOR_RED, COLOR_BLACK)
546 ePUSH_T ax, '-'
547 ePUSH_T ax, 36
548 CALL_DISPLAY_LIBRARY FormatNullTerminatedStringFromCSSI
549 ret
550.szRepeat:
551 db "Repeating character '-': %A%t",LF,CR,NULL
552
553
554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
555LibraryTests_Sort:
556 call .PrintWords
557 push cs
558 pop ds
559 mov si, .rgwItems
560 mov dx, 7
561 mov cx, 2
562 mov bx, .Comparator
563 call Sort_ItemsFromDSSIwithCountInDXsizeInCXandComparatorInBX
564 call .PrintWords
565 ret
566
567
568.Comparator:
569 push ax
570 mov ax, [si]
571 DISPLAY_DEBUG_CHARACTER 'I'
572 DISPLAY_DEBUG_WORD_AND_WAIT_ANY_KEY ax, 16
573 DISPLAY_DEBUG_CHARACTER ','
574 DISPLAY_DEBUG_WORD_AND_WAIT_ANY_KEY [es:di], 16
575 DISPLAY_DEBUG_CHARACTER ' '
576 cmp ax, [es:di]
577 pop ax
578 ret
579
580.PrintWords:
581 CALL_DISPLAY_LIBRARY PrintNewlineCharacters
582 mov cx, 7
583 push cs
584 pop ds
585 mov si, .rgwItems
586 mov bx, 16
587.Loop:
588 lodsw
589 CALL_DISPLAY_LIBRARY PrintSignedWordFromAXWithBaseInBX
590 CALL_DISPLAY_LIBRARY PrintNewlineCharacters
591 loop .Loop
592 ret
593
594
595.rgwItems:
596 dw '['
597 dw 'n'
598 dw '5'
599 dw '.'
600 dw ']'
601 dw 'a'
602 dw 'A'
603
604
605
606; Section containing initialized data
607;SECTION .data
608
609g_szDialogTitle:
610 db "This is a generic title for all dialogs.",NULL
611g_szDialogInfo:
612 db "This is a generic information for all dialogs.",NULL
613g_szVeryLongString:
614 db "This is a very long string containing multiple lines of text. This is needed "
615 db "so scroll bars and message dialog can be tested. This string does not use "
616 db "formatting so it should be simple to display this correctly. This string "
617 db "does, however, use newline characters. Lets change line right now!",LF,CR,
618 db "Well did it work? Let's try line feed alone",LF,"Well? "
619 db "Now two LFs:",LF,LF,"What happened? "
620 db "We could also see what two spaces does _ _. There was two spaces between "
621 db "underscores. Lets try three this time _ _. Well, did they work correctly? "
622 db "Too bad that LF, CR and BS (backspace) are the only supported control "
623 db "characters. Others don't either work or they break line splitting. "
624 db "This is the last sentence of this long string!",NULL
625
626g_dialogInputOutput:
627istruc DIALOG_INPUT
628 at DIALOG_INPUT.fszTitle, dw g_szDialogTitle
629 at DIALOG_INPUT.fszInfo, dw g_szDialogInfo
630iend
631 times 20 db 0
632
633
634; Section containing uninitialized data
635SECTION .bss
636
637STRING_BUFFER_SIZE EQU 100
638g_szBuffer:
Note: See TracBrowser for help on using the repository browser.