]> 4ch.mooo.com Git - 16.git/blob - 16/tauron30/ASM_SRC/TESTS.ASM
7401c0ee962c2a37697aa906d538f9ffffbd8f29
[16.git] / 16 / tauron30 / ASM_SRC / TESTS.ASM
1 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
2 ;=-                                                                         -=\r
3 ;=-                   Tauron VGA Utilities Version 3.0                      -=\r
4 ;=-                      Released September 20, 1998                        -=\r
5 ;=-                                                                         -=\r
6 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
7 ;=- Copyright (c) 1997, 1998 by Jeff Morgan  =-= This code is FREE provided -=\r
8 ;=- All Rights Reserved.                     =-= that you put my name some- -=\r
9 ;=-                                          =-= where in your credits.     -=\r
10 ;=- DISCLAIMER:                              =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
11 ;=- I assume no responsibility whatsoever for any effect that this package, -=\r
12 ;=- the information contained therein or the use thereof has on you, your   -=\r
13 ;=- sanity, computer, spouse, children, pets or anything else related to    -=\r
14 ;=- you or your existance. No warranty is provided nor implied with this    -=\r
15 ;=- source code.                                                            -=\r
16 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
17 \r
18 PIXEL PROC\r
19    PUSH BP\r
20    MOV BP,SP\r
21    PUSHA\r
22 \r
23    TEST Mode.attrib,TVU_PLANAR\r
24    JNZ PLANAR_PIXEL\r
25    CMP Mode.videomode,VMODE_13H\r
26    JE MODE_13H_PIXEL\r
27 \r
28 ; Unchained Modes Pixel\r
29    MOV AX,0A000H   ;    video memory segment number\r
30    MOV ES,AX       ;    place it in es\r
31 \r
32    MOV DX,03C4H\r
33    MOV AL,2\r
34    OUT DX,AL\r
35    INC DX\r
36 \r
37    MOV AL,1\r
38    MOV CX,word ptr [bp+4]\r
39    AND CX,3\r
40    SHL AL,CL\r
41    OUT DX,AL\r
42 \r
43    XOR DI,DI\r
44 \r
45 ; Calculate the Offset\r
46    mov ax,Mode.mode_width  ; width / 4\r
47    SHR AX,2\r
48    mul word ptr [bp+6]         ; (Y * (width / 4))\r
49    mov bx,word ptr [bp+4]      ; (X / 4) + (Y * (width / 4))\r
50    shr bx,2\r
51    add ax,bx\r
52 ; Done!\r
53 \r
54    ADD DI,AX\r
55    mov ah,byte ptr [bp+8]   ;    move the Color into ah\r
56    mov es:[di],ah ;    move the value to the screen\r
57    JMP PIXEL_OUT\r
58 \r
59 PLANAR_PIXEL:\r
60    MOV AX,0A000H   ;    video memory segment number\r
61    MOV ES,AX       ;    place it in es\r
62 \r
63    MOV BX,word ptr [bp+4]        ;    X Value\r
64    MOV CX,BX\r
65    MOV AX,word ptr [bp+6]        ;    Y Value\r
66    MOV SI,80\r
67    MUL SI\r
68    SHR BX,3        ;    /8\r
69    ADD AX,BX\r
70    MOV DI,AX\r
71 \r
72    AND CL,7\r
73    XOR CL,7\r
74    MOV AH,1\r
75 \r
76    SHL AH,CL\r
77 \r
78    MOV DX,03CEH\r
79    MOV AL,8\r
80    OUT DX,AX\r
81 \r
82    MOV AL,0\r
83    XCHG ES:[DI],AL\r
84 \r
85    MOV DX,03C4H\r
86    MOV AH,byte ptr [bp+8]\r
87    MOV AL,2\r
88    OUT DX,AX\r
89 \r
90    MOV BYTE PTR ES:[DI],0FFh\r
91 \r
92    MOV AX,0F02H\r
93    OUT DX,AX\r
94 \r
95    MOV DX,03CEH\r
96    MOV AX,0FF08h\r
97    OUT DX,AX\r
98    JMP PIXEL_OUT\r
99 \r
100 MODE_13H_PIXEL:\r
101 \r
102    MOV AX,0A000H   ;    video memory segment number\r
103    MOV ES,AX       ;    place it in es\r
104    XOR DI,DI\r
105 \r
106 ; Calculate the Offset\r
107    mov ax,Mode.mode_width      ; width\r
108    mul word ptr [bp+6]         ; (Y * width))\r
109    mov bx,word ptr [bp+4]      ; (X + (Y * width))\r
110    add ax,bx\r
111 ; Done!\r
112 \r
113    ADD DI,AX\r
114    mov ah,byte ptr [bp+8]   ;    move the Color into ah\r
115    mov es:[di],ah ;    move the value to the screen\r
116 \r
117 PIXEL_OUT:\r
118 \r
119    POPA\r
120    POP BP\r
121    RET 6\r
122 PIXEL ENDP\r
123 \r
124 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
125 \r
126 HLINE PROC\r
127    PUSH BP\r
128    MOV BP,SP\r
129    PUSHA\r
130 \r
131    MOV CX,WORD PTR [BP+4]\r
132 HLINE_LOOP:\r
133    PUSH WORD PTR [BP+10]   ; Color\r
134    PUSH WORD PTR [BP+8]    ; Y value\r
135    PUSH CX                 ; X value\r
136    CALL PIXEL\r
137    INC CX\r
138    CMP CX,WORD PTR [BP+6]\r
139    JLE HLINE_LOOP\r
140 \r
141    POPA\r
142    POP BP\r
143    RET 8\r
144 HLINE ENDP\r
145 \r
146 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
147 \r
148 VLINE PROC\r
149    PUSH BP\r
150    MOV BP,SP\r
151    PUSHA\r
152 \r
153    MOV CX,WORD PTR [BP+4]\r
154 VLINE_LOOP:\r
155    PUSH WORD PTR [BP+10]   ; Color\r
156    PUSH CX                 ; Y value\r
157    PUSH WORD PTR [BP+8]    ; X value\r
158    CALL PIXEL\r
159    INC CX\r
160    CMP CX,WORD PTR [BP+6]\r
161    JLE VLINE_LOOP\r
162 \r
163    POPA\r
164    POP BP\r
165    RET 8\r
166 VLINE ENDP\r
167 \r
168 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
169 \r
170 DRAWRECT PROC\r
171    PUSH BP\r
172    MOV BP,SP\r
173 \r
174    PUSH WORD PTR [BP+12]\r
175    PUSH WORD PTR [BP+6]\r
176    PUSH WORD PTR [BP+8]\r
177    PUSH WORD PTR [BP+4]\r
178    CALL HLINE\r
179 \r
180    PUSH WORD PTR [BP+12]\r
181    PUSH WORD PTR [BP+10]\r
182    PUSH WORD PTR [BP+8]\r
183    PUSH WORD PTR [BP+4]\r
184    CALL HLINE\r
185 \r
186    PUSH WORD PTR [BP+12]\r
187    PUSH WORD PTR [BP+4]\r
188    PUSH WORD PTR [BP+10]\r
189    PUSH WORD PTR [BP+6]\r
190    CALL VLINE\r
191 \r
192    PUSH WORD PTR [BP+12]\r
193    PUSH WORD PTR [BP+8]\r
194    PUSH WORD PTR [BP+10]\r
195    PUSH WORD PTR [BP+6]\r
196    CALL VLINE\r
197 \r
198    POP BP\r
199    RET 10\r
200 DRAWRECT ENDP\r
201 \r
202 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
203 \r
204 FILLRECT PROC\r
205    PUSH BP\r
206    MOV BP,SP\r
207    PUSHA\r
208 \r
209    MOV CX,WORD PTR [BP+6]\r
210 HLINE_LOOP2:\r
211    PUSH WORD PTR [BP+12]   ; Color\r
212    PUSH CX                 ; Y1 value\r
213    PUSH WORD PTR [BP+8]    ; X2 value\r
214    PUSH WORD PTR [BP+4]    ; X1 value\r
215    CALL HLINE\r
216 \r
217    INC CX\r
218    CMP CX,WORD PTR [BP+10] ; Y2 value\r
219    JLE HLINE_LOOP2\r
220 \r
221    POPA\r
222    POP BP\r
223    RET 10\r
224 FILLRECT ENDP\r
225 \r
226 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
227 \r
228 MODETEST PROC\r
229    PUSH BP\r
230    MOV BP,SP\r
231    SUB SP,2\r
232 \r
233    TEST Mode.attrib,TVU_PLANAR\r
234    JNZ PLANAR_CLEAR\r
235    CMP Mode.videomode,VMODE_13H\r
236    JNE UNCHAINED_CLEAR\r
237 \r
238    PUSH 0\r
239    CALL CLEAR13H\r
240    JMP CLEAROUT\r
241 \r
242 PLANAR_CLEAR:\r
243    PUSH 0\r
244    CALL PLANARCLEAR\r
245    JMP CLEAROUT\r
246 \r
247 UNCHAINED_CLEAR:\r
248    PUSH 0\r
249    CALL UNCHAINEDCLEAR\r
250 \r
251 CLEAROUT:\r
252 \r
253    PUSH 15\r
254 \r
255    MOV AX,Mode.mode_height\r
256    DEC AX\r
257    PUSH AX\r
258 \r
259    MOV AX,Mode.mode_width\r
260    DEC AX\r
261    PUSH AX\r
262 \r
263    PUSH 0\r
264    PUSH 0\r
265    CALL DRAWRECT\r
266 \r
267    MOV CX,50\r
268 LINE_LOOP:\r
269    PUSH 15\r
270    PUSH CX\r
271    PUSH 10\r
272    PUSH 0\r
273    CALL HLINE\r
274    ADD CX,50\r
275 \r
276    PUSH 15\r
277    PUSH CX\r
278    PUSH 25\r
279    PUSH 0\r
280    CALL HLINE\r
281    ADD CX,50\r
282 \r
283    CMP CX,Mode.mode_height\r
284    JLE LINE_LOOP\r
285 \r
286    MOV CX,40\r
287 LINE_LOOP2:\r
288    PUSH 15\r
289    PUSH CX\r
290    PUSH 15\r
291    PUSH 0\r
292    CALL VLINE\r
293    ADD CX,40\r
294 \r
295    PUSH 15\r
296    PUSH CX\r
297    PUSH 30\r
298    PUSH 0\r
299    CALL VLINE\r
300    ADD CX,40\r
301 \r
302    CMP CX,Mode.mode_width\r
303    JLE LINE_LOOP2\r
304 \r
305    CMP Mode.colors,16\r
306    JE SETBLOCK16\r
307    CMP Mode.colors,256\r
308    JE SETBLOCK256\r
309 \r
310    MOV AX,Mode.mode_width\r
311    SUB AX,420\r
312    MOV DI,AX\r
313    ADD DI,200\r
314    MOV BX,Mode.mode_height\r
315    SUB BX,220\r
316    MOV SI,BX\r
317    ADD SI,200\r
318 \r
319    PUSH 0    ; Color\r
320    PUSH SI    ; Y2\r
321    PUSH DI    ; X2\r
322    PUSH BX    ; Y1\r
323    PUSH AX    ; X1\r
324    CALL FILLRECT\r
325    ADD AX,200\r
326    ADD DI,200\r
327    PUSH 15    ; Color\r
328    PUSH SI    ; Y2\r
329    PUSH DI    ; X2\r
330    PUSH BX    ; Y1\r
331    PUSH AX    ; X1\r
332    CALL FILLRECT\r
333 \r
334    MOV AX,Mode.mode_width\r
335    SUB AX,420\r
336    MOV DI,AX\r
337    ADD DI,400\r
338    MOV BX,Mode.mode_height\r
339    SUB BX,220\r
340    MOV SI,BX\r
341    ADD SI,200\r
342 \r
343    PUSH 15    ; Color\r
344    PUSH SI    ; Y2\r
345    PUSH DI    ; X2\r
346    PUSH BX    ; Y1\r
347    PUSH AX    ; X1\r
348    CALL DRAWRECT\r
349 \r
350    JMP BLOCKOUT\r
351 SETBLOCK16:\r
352 \r
353    MOV AX,Mode.mode_width\r
354    SUB AX,522\r
355    MOV DI,AX\r
356    ADD DI,64\r
357 \r
358    MOV BX,Mode.mode_height\r
359    SUB BX,135\r
360    MOV SI,BX\r
361    ADD SI,64\r
362    MOV CX,0\r
363    MOV DX,0\r
364 LINE1_LOOP1:\r
365 \r
366    PUSH DX    ; Color\r
367    PUSH SI    ; Y2\r
368    PUSH DI    ; X2\r
369    PUSH BX    ; Y1\r
370    PUSH AX    ; X1\r
371    CALL FILLRECT\r
372    ADD AX,64\r
373    ADD DI,64\r
374    INC CX\r
375    INC DX\r
376    CMP CX,8\r
377    JL LINE1_LOOP1\r
378 \r
379    MOV AX,Mode.mode_width\r
380    SUB AX,522\r
381    MOV DI,AX\r
382    ADD DI,64\r
383    ADD SI,64\r
384    ADD BX,64\r
385    MOV CX,0\r
386 LINE1_LOOP2:\r
387 \r
388    PUSH DX    ; Color\r
389    PUSH SI    ; Y2\r
390    PUSH DI    ; X2\r
391    PUSH BX    ; Y1\r
392    PUSH AX    ; X1\r
393    CALL FILLRECT\r
394    ADD AX,64\r
395    ADD DI,64\r
396    INC CX\r
397    INC DX\r
398    CMP CX,8\r
399    JL LINE1_LOOP2\r
400 \r
401    MOV AX,Mode.mode_width\r
402    SUB AX,522\r
403    MOV DI,Mode.mode_width\r
404    SUB DI,10\r
405    MOV BX,Mode.mode_height\r
406    SUB BX,135\r
407    MOV SI,Mode.mode_height\r
408    SUB SI,7\r
409    PUSH 15    ; Color\r
410    PUSH SI    ; Y2\r
411    PUSH DI    ; X2\r
412    PUSH BX    ; Y1\r
413    PUSH AX    ; X1\r
414    CALL DRAWRECT\r
415    JMP BLOCKOUT\r
416 \r
417 SETBLOCK256:\r
418 \r
419    MOV WORD PTR [BP-2],0\r
420    MOV BX,Mode.mode_height\r
421    SUB BX,165\r
422    MOV SI,BX\r
423    ADD SI,10\r
424    MOV DX,0\r
425 LINE2_LOOP2:\r
426 \r
427    MOV AX,Mode.mode_width\r
428    SUB AX,165\r
429    MOV DI,Mode.mode_width\r
430    SUB DI,155\r
431 \r
432    MOV CX,0\r
433 LINE2_LOOP1:\r
434 \r
435    PUSH DX    ; Color\r
436    PUSH SI    ; Y2\r
437    PUSH DI    ; X2\r
438    PUSH BX    ; Y1\r
439    PUSH AX    ; X1\r
440    CALL FILLRECT\r
441    ADD AX,10\r
442    ADD DI,10\r
443    INC CX\r
444    INC DX\r
445    CMP CX,16\r
446    JL LINE2_LOOP1\r
447 \r
448    ADD BX,10\r
449    ADD SI,10\r
450    INC WORD PTR [BP-2]\r
451    CMP WORD PTR [BP-2],16\r
452    JL LINE2_LOOP2\r
453 \r
454    MOV AX,Mode.mode_width\r
455    SUB AX,165\r
456    MOV DI,Mode.mode_width\r
457    SUB DI,5\r
458    MOV BX,Mode.mode_height\r
459    SUB BX,165\r
460    MOV SI,Mode.mode_height\r
461    SUB SI,5\r
462    PUSH 15    ; Color\r
463    PUSH SI    ; Y2\r
464    PUSH DI    ; X2\r
465    PUSH BX    ; Y1\r
466    PUSH AX    ; X1\r
467    CALL DRAWRECT\r
468 \r
469 BLOCKOUT:\r
470    ADD SP,2\r
471    POP BP\r
472    RET\r
473 MODETEST ENDP\r
474 \r
475 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
476 \r
477 PUTCHAR PROC\r
478    PUSH BP\r
479    MOV BP,SP\r
480    SUB SP,2\r
481    PUSHA\r
482 \r
483    CMP Mode.videomode,VMODE_00H\r
484    JE SET2\r
485    CMP Mode.videomode,VMODE_MODE_L\r
486    JE SET2\r
487    CMP Mode.videomode,VMODE_MODE_M\r
488    JE SET2\r
489    MOV BYTE PTR [BP-2],160\r
490    JMP NOSET2\r
491 SET2:\r
492    MOV BYTE PTR [BP-2],80\r
493    JMP NOSET2\r
494 NOSET2:\r
495 \r
496    MOV AX,0B800h\r
497    MOV ES,AX\r
498 \r
499    MOV AX,WORD PTR [BP+6] ; Y value\r
500    MOV BL,BYTE PTR [BP-2]\r
501    MUL BL\r
502    SHL WORD PTR [BP+4],1\r
503    ADD AX,WORD PTR [BP+4] ; X value\r
504    MOV DI,AX\r
505    MOV AH,ATT\r
506    MOV AL,BYTE PTR [BP+8] ; character\r
507    CLD\r
508    STOSW\r
509 \r
510    POPA\r
511    ADD SP,2\r
512    POP BP\r
513    RET 6\r
514 PUTCHAR ENDP\r
515 \r
516 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
517 \r
518 PRINTSTRING PROC\r
519 \r
520 TEXT_LOOP:\r
521    XOR DX,DX\r
522    MOV DL,BYTE PTR [SI]\r
523    PUSH DX\r
524    PUSH BX\r
525    PUSH AX\r
526    CALL PUTCHAR\r
527 \r
528    INC AX\r
529    INC SI\r
530    CMP BYTE PTR [SI],0\r
531    JNE TEXT_LOOP\r
532    RET\r
533 PRINTSTRING ENDP\r
534 \r
535 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
536 \r
537 TEXTTEST PROC\r
538    PUSH 1FH\r
539    CALL TEXTCLEAR\r
540 \r
541    MOV AH,2h\r
542    MOV BH,0\r
543    MOV DX,Mode.mode_height\r
544    MOV DH,DL\r
545    MOV DL,0\r
546    INT 10h\r
547 \r
548    CMP Mode.videomode,VMODE_00H\r
549    JE SET_TEXT1\r
550    CMP Mode.videomode,VMODE_MODE_J\r
551    JE SET_TEXT2\r
552    CMP Mode.videomode,VMODE_MODE_K\r
553    JE SET_TEXT3\r
554    CMP Mode.videomode,VMODE_MODE_L\r
555    JE SET_TEXT4\r
556    CMP Mode.videomode,VMODE_MODE_M\r
557    JE SET_TEXT5\r
558    ; Mode 03h\r
559    MOV TEXTMSG_2+13,'3'\r
560    MOV TEXTMSG_3+8,'8'\r
561    MOV TEXTMSG_4+19,'4'\r
562    JMP NOSET\r
563 SET_TEXT1:\r
564    ; Mode 00h\r
565    MOV TEXTMSG_2+13,'0'\r
566    MOV TEXTMSG_3+8,'4'\r
567    MOV TEXTMSG_4+19,'2'\r
568    JMP NOSET\r
569 SET_TEXT2:\r
570    ; Mode J\r
571    MOV TEXTMSG_8+11,'J'\r
572    MOV TEXTMSG_9+21,'4'\r
573    MOV TEXTMSG_9+22,'3'\r
574    MOV TEXTMSG_A+19,'3'\r
575    MOV TEXTMSG_A+20,'4'\r
576    MOV TEXTMSG_A+21,'4'\r
577    MOV TEXTMSG_A+22,'0'\r
578    JMP NOSET\r
579 SET_TEXT3:\r
580    ; Mode K\r
581    MOV TEXTMSG_8+11,'K'\r
582    MOV TEXTMSG_9+21,'5'\r
583    MOV TEXTMSG_9+22,'0'\r
584    MOV TEXTMSG_A+19,'4'\r
585    MOV TEXTMSG_A+20,'0'\r
586    MOV TEXTMSG_A+21,'0'\r
587    MOV TEXTMSG_A+22,'0'\r
588    JMP NOSET\r
589 SET_TEXT4:\r
590    ; Mode L\r
591    MOV TEXTMSG_8+11,'L'\r
592    MOV TEXTMSG_9+8,'4'\r
593    MOV TEXTMSG_9+21,'4'\r
594    MOV TEXTMSG_9+22,'3'\r
595    MOV TEXTMSG_A+19,'3'\r
596    MOV TEXTMSG_A+20,'4'\r
597    MOV TEXTMSG_A+21,'4'\r
598    MOV TEXTMSG_A+22,'0'\r
599    JMP NOSET\r
600 SET_TEXT5:\r
601    ; Mode M\r
602    MOV TEXTMSG_8+11,'M'\r
603    MOV TEXTMSG_9+8,'4'\r
604    MOV TEXTMSG_9+21,'5'\r
605    MOV TEXTMSG_9+22,'0'\r
606    MOV TEXTMSG_A+19,'4'\r
607    MOV TEXTMSG_A+20,'0'\r
608    MOV TEXTMSG_A+21,'0'\r
609    MOV TEXTMSG_A+22,'0'\r
610 NOSET:\r
611 \r
612    CMP Mode.videomode,VMODE_00H\r
613    JE WRITE1\r
614    CMP Mode.videomode,VMODE_03H\r
615    JE WRITE1\r
616    CMP Mode.videomode,VMODE_MODE_J\r
617    JE WRITE2\r
618    JMP WRITE2\r
619 \r
620 WRITE1:\r
621    MOV BX,0\r
622    MOV AX,0\r
623    MOV SI,OFFSET TEXTMSG_1\r
624    CALL PRINTSTRING\r
625    MOV BX,1\r
626    MOV AX,0\r
627    MOV SI,OFFSET TEXTMSG_2\r
628    CALL PRINTSTRING\r
629    MOV BX,2\r
630    MOV AX,0\r
631    MOV SI,OFFSET TEXTMSG_3\r
632    CALL PRINTSTRING\r
633    MOV BX,3\r
634    MOV AX,0\r
635    MOV SI,OFFSET TEXTMSG_4\r
636    CALL PRINTSTRING\r
637    MOV BX,4\r
638    MOV AX,0\r
639    MOV SI,OFFSET TEXTMSG_5\r
640    CALL PRINTSTRING\r
641    MOV BX,5\r
642    MOV AX,0\r
643    MOV SI,OFFSET TEXTMSG_6\r
644    CALL PRINTSTRING\r
645    JMP WRITEOUT\r
646 \r
647 WRITE2:\r
648    MOV BX,0\r
649    MOV AX,0\r
650    MOV SI,OFFSET TEXTMSG_7\r
651    CALL PRINTSTRING\r
652    MOV BX,1\r
653    MOV AX,0\r
654    MOV SI,OFFSET TEXTMSG_8\r
655    CALL PRINTSTRING\r
656    MOV BX,2\r
657    MOV AX,0\r
658    MOV SI,OFFSET TEXTMSG_9\r
659    CALL PRINTSTRING\r
660    MOV BX,3\r
661    MOV AX,0\r
662    MOV SI,OFFSET TEXTMSG_A\r
663    CALL PRINTSTRING\r
664    MOV BX,4\r
665    MOV AX,0\r
666    MOV SI,OFFSET TEXTMSG_B\r
667    CALL PRINTSTRING\r
668    MOV BX,5\r
669    MOV AX,0\r
670    MOV SI,OFFSET TEXTMSG_C\r
671    CALL PRINTSTRING\r
672 WRITEOUT:\r
673    RET\r
674 TEXTTEST ENDP\r
675 \r
676 ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r