source: trunk/BOOTCODE/REGULAR/VIDEOIO.ASM@ 30

Last change on this file since 30 was 30, checked in by Ben Rietbroek, 15 years ago

AiR-BOOT v1.07 -- As released with eCS v2.1. [2011-05-06]
Signature-date: 2006-03-13. (incorrect)
Trunk contains buildable v1.07 version as distributed with eCS v2.1.
Directory 'tags' contains v1.06 & v1.07 reference versions
built for all languages. Note that language ID for 'Dutch' changed
from 'DT' to 'NL' in v1.07 and that the v1.06 reference version also
uses 'NL' for 'Dutch'.
Also note that helper programs like the installer and setaboot are
are only modified for the OS/2 versions in v1.07.
The signature-date for v1.07 incorrectly states the same
date as for v1.06. The signature-version is correct.
Removed other binaries. (cd-rom images, old releases, etc.)
The tags serve as reference versions:

  • v1.06: rebuilt from source. (tags/v1.06r)
  • v1.07: built as released with eCS v2.1. (tags/v1.07r)
File size: 22.7 KB
Line 
1; AiR-BOOT (c) Copyright 1998-2008 M. Kiewitz
2;
3; This file is part of AiR-BOOT
4;
5; AiR-BOOT is free software: you can redistribute it and/or modify it under
6; the terms of the GNU General Public License as published by the Free
7; Software Foundation, either version 3 of the License, or (at your option)
8; any later version.
9;
10; AiR-BOOT is distributed in the hope that it will be useful, but WITHOUT ANY
11; WARRANTY: without even the implied warranty of MERCHANTABILITY or FITNESS
12; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13; details.
14;
15; You should have received a copy of the GNU General Public License along with
16; AiR-BOOT. If not, see <http://www.gnu.org/licenses/>.
17;
18;---------------------------------------------------------------------------
19; AiR-BOOT / VIDEO I/O
20;---------------------------------------------------------------------------
21
22IFDEF ModuleNames
23DB 'VIDEOIO',0
24ENDIF
25
26VideoIO_WaitRetrace Proc Near Uses ax dx
27 mov dx, 3DAh
28 VIOWR_Jump1:
29 in al, dx
30 test al, 8
31 jnz VIOWR_Jump1
32 VIOWR_Jump2:
33 in al, dx
34 test al, 8
35 jz VIOWR_Jump2
36 ret
37VideoIO_WaitRetrace EndP
38
39
40
41; Holds the current position. Yeah, I know this is in the code area, but who
42; cares :))
43TextPosY db 0h
44TextPosX db 0h
45TextColorFore db 7h
46TextColorBack db 0h
47
48; In: CH - Cursor Column, CL - Cursor Row (Start at 1,1)
49; Destroyed: None
50VideoIO_Locate Proc Near Uses cx
51 or ch, ch
52 jz VIOL_IgnoreY
53 dec ch
54 mov TextPosY, ch
55 VIOL_IgnoreY:
56 or cl, cl
57 jz VIOL_IgnoreX
58 dec cl
59 mov TextPosX, cl
60 VIOL_IgnoreX:
61 ret
62VideoIO_Locate EndP
63
64; In: CH - Cursor Column, CL - Center Cursor Row (Start at 1,1)
65; DX - Length to use for centering
66; Destroyed: None
67VideoIO_LocateToCenter Proc Near Uses cx dx
68 shr dl, 1 ; Length / 2
69 sub cl, dl
70 call VideoIO_Locate
71 ret
72VideoIO_LocateToCenter EndP
73
74; In: CH - Color Fore, CL - Color Back
75; Destroyed: None
76VideoIO_Color Proc Near Uses cx
77 mov TextColorFore, CH
78 mov TextColorBack, CL
79 ret
80VideoIO_Color EndP
81
82VideoIO_CursorOff Proc Near Uses ax cx
83 mov ax, 0102h ; 02 for fixup on AMI BIOS
84 mov cx, 1000h
85 int 10h ; Clears cursor
86 ret
87VideoIO_CursorOff EndP
88
89VideoIO_CursorOn Proc Near Uses ax cx
90 mov ax, 0102h ; 02 for fixup on AMI BIOS
91 mov cx, 0F0Eh
92 int 10h ; Builds cursor
93 ret
94VideoIO_CursorOn EndP
95
96VideoIO_CursorSet Proc Near Uses ax bx dx
97 mov ah, 02h
98 xor bh, bh
99 mov dh, TextPosY
100 mov dl, TextPosX
101 int 10h
102 ret
103VideoIO_CursorSet EndP
104
105VideoIO_Internal_SetRegs Proc Near Uses bx
106 mov ax, VideoIO_Segment
107 mov es, ax
108 ;movzx ax, TextPosY
109 mov al,TextPosY
110 mov ah,0
111
112 mov bl, 160
113 mul bl
114 xor bh, bh
115 mov bl, TextPosX
116 shl bl, 1
117 add ax, bx
118 mov di, ax ; Location at ES:DI
119 mov ah, TextColorFore
120 mov al, TextColorBack
121 shl al, 4
122 or ah, al ; Color Attribute in AH
123 ret
124VideoIO_Internal_SetRegs EndP
125
126; In: SI - String to Print (EOS is 0)
127; Destroyed: SI
128VideoIO_Print Proc Near Uses es di
129 call VideoIO_Internal_SetRegs
130 VIOP_Loop:
131 lodsb
132 or al, al
133 jz VIOP_End
134 mov es:[di], al
135 mov es:[di+1], ah
136 add di, 2
137 inc TextPosX
138 jmp VIOP_Loop
139 VIOP_End:
140 ret
141VideoIO_Print EndP
142
143; In: SI - String to Print (EOS is 0)
144; Destroyed: SI
145VideoIO_PrintLikeLenOfName Proc Near Uses es di
146 push si
147 xor cx, cx
148 VIOPLLON_Loop:
149 lodsb
150 inc cx
151 or al, al
152 jnz VIOPLLON_Loop
153 pop si
154 call GetLenOfName ; Gets the real length...tricky ;)
155 jz VIOPLLON_Nul
156 call VideoIO_FixedPrint ; we are lazy :)
157 VIOPLLON_Nul:
158 ret
159VideoIO_PrintLikeLenOfName EndP
160
161; In: SI - String to Print
162; CL - Len Of String
163; Destroyed: SI
164VideoIO_FixedPrint Proc Near Uses es di
165 or cl, cl
166 jz VIOFP_NoString
167 call VideoIO_Internal_SetRegs
168 VIOFP_Loop:
169 lodsb
170 mov es:[di], al
171 mov es:[di+1], ah
172 add di, 2
173 inc TextPosX
174 dec cl
175 jnz VIOFP_Loop
176 VIOFP_NoString:
177 ret
178VideoIO_FixedPrint EndP
179
180; Rousseau:
181; Turn off blinking
182; http://www.ctyme.com/intr/rb-0088.htm does not mention this
183VideoIO_NoBlinking Proc Near Uses ax bx
184 mov bx,0
185 mov ax,1003h
186 int 10h
187 ret
188VideoIO_NoBlinking EndP
189
190; In: AL - Single Char to Print
191; Destroyed: None
192VideoIO_PrintSingleChar Proc Near Uses ax es di
193 mov bl, al
194 call VideoIO_Internal_SetRegs
195 mov es:[di], bl
196 mov es:[di+1], ah
197 inc TextPosX
198 ret
199VideoIO_PrintSingleChar EndP
200
201
202
203; Print hex-byte to screen
204; This outputs two characters
205; In: AL - byte to send
206; Out: AL - byte sent
207; Destroyed: None
208VideoIO_PrintHexByte Proc Near Uses ax
209 call CONV_BinToAsc ; Returns high hex-nibble in AH, low hex-nibble in AL
210 xchg al,ah ; High hex-nibble first
211 call VideoIO_PrintSingleChar ; Output to screen
212 xchg al,ah ; Low hex-nibble next
213 call VideoIO_PrintSingleChar ; Output to screen
214 ret
215VideoIO_PrintHexByte EndP
216
217
218; Print hex-word to screen
219; This outputs four characters
220; In: AX - word to send
221; Out: AX - word sent
222; Destroyed: None
223VideoIO_PrintHexWord Proc Near
224 xchg al,ah ; High byte first
225 call VideoIO_PrintHexByte ; Output to screen
226 xchg al,ah ; low byte next
227 call VideoIO_PrintHexByte ; Output to screen
228 ret
229VideoIO_PrintHexWord EndP
230
231
232; Print hex-dword to screen
233; This outputs eight characters
234; In: DX:AX - dword to send
235; Out: DX:AX - dword sent
236; Destroyed: None
237VideoIO_PrintHexDWord Proc Near
238 xchg ax,dx
239 call VideoIO_PrintHexWord ; High word first
240 xchg ax,dx
241 call VideoIO_PrintHexWord ; Low word next
242 ret
243VideoIO_PrintHexDWord EndP
244
245
246; Print hex-qword to screen
247; This outputs sixteen characters
248; In: BX:CX:DX:AX - qword to send
249; Out: BX:CX:DX:AX - qword sent
250; Destroyed: None
251VideoIO_PrintHexQWord Proc Near
252 xchg dx,bx
253 xchg ax,cx
254 call VideoIO_PrintHexDWord ; High dword first
255 xchg dx,bx
256 xchg ax,cx
257 call VideoIO_PrintHexDWord ; Low dword next
258 ret
259VideoIO_PrintHexQWord EndP
260
261
262
263
264
265; In: AL - Single Char to Print
266; CL - Times to print it
267; Destroyed: None
268VideoIO_PrintSingleMultiChar Proc Near Uses ax cx es di
269 or cl, cl
270 jz VIOPSMC_NoChars
271 mov bl, al
272 call VideoIO_Internal_SetRegs
273 VIOPSMC_Loop:
274 mov es:[di], bl
275 mov es:[di+1], ah
276 add di, 2
277 inc TextPosX
278 dec cl
279 jnz VIOPSMC_Loop
280 VIOPSMC_NoChars:
281 ret
282VideoIO_PrintSingleMultiChar EndP
283
284; Will print a number to screen (2 bytes t.m. 0-99)
285; In: AL - Single Byte to Print
286; Destroyed: None
287VideoIO_PrintByteNumber Proc Near Uses ax bx dx es di
288 cmp al, 99
289 ja VIOPBN_DoNotWriteAnything
290 ;movzx bx, al
291 mov bl,al
292 mov bh,0
293
294 call VideoIO_Internal_SetRegs
295 cmp bl, 10
296 jb VIOPBN_Lower10
297 push ax
298 ;movzx ax, bl
299 mov al,bl
300 mov ah,0
301
302 mov dl, 10
303 div dl
304 mov bh, al ; BH = Upper Number
305 mov bl, ah ; BL = Rest
306 pop ax
307 VIOPBN_Lower10:
308 add bh, 30h
309 add bl, 30h
310 mov es:[di], bh
311 mov es:[di+1], ah
312 mov es:[di+2], bl
313 mov es:[di+3], ah
314 VIOPBN_DoNotWriteAnything:
315 add TextPosX, 2
316 ret
317VideoIO_PrintByteNumber EndP
318
319; Will print a number to screen (dynamic bytes from 0 to 255)
320; In: AL - Single Byte to Print
321; Destroyed: None
322VideoIO_PrintByteDynamicNumber Proc Near Uses ax bx cx dx es di ; Rousseau: cx was missing from push-list
323 xor cl, cl
324 mov bh, al
325 call VideoIO_Internal_SetRegs
326 xchg bh, ah ; Exchange backgroundcolor with Number
327 cmp ah, 10
328 jb VIOPBDN_Lower10
329 cmp ah, 100
330 jb VIOPBDN_Lower100
331 ;movzx ax, ah
332 mov al,ah
333 mov ah,0
334
335 mov dl, 100
336 div dl
337 add al, 30h
338 mov es:[di], al
339 mov es:[di+1], bh
340 inc TextPosX
341 add di, 2
342 VIOPBDN_Lower100:
343 ;movzx ax, ah
344 mov al,ah
345 mov ah,0
346
347 mov dl, 10
348 div dl
349 add al, 30h
350 mov es:[di], al
351 mov es:[di+1], bh
352 inc TextPosX
353 add di, 2
354 VIOPBDN_Lower10:
355 add ah, 30h
356 mov es:[di], ah
357 mov es:[di+1], bh
358 inc TextPosX
359 add di, 2
360 ret
361VideoIO_PrintByteDynamicNumber EndP
362
363
364; In: AL - Zeichen zum Zeichnen, CL - Wie oft
365; Destroyed: None Important
366VideoIO_Internal_MakeWinDown Proc Near Uses dx di
367 ;movzx dx, cl
368 mov dl,cl
369 mov dh,0
370
371 mov bl, al
372 call VideoIO_Internal_SetRegs
373 mov al, bl
374 VIOIMWD_Loop:
375 mov es:[di], al
376 mov es:[di+1], ah
377 add di, 160
378 inc TextPosY
379 dec dx
380 jnz VIOIMWD_Loop
381 ret
382VideoIO_Internal_MakeWinDown EndP
383
384; In: AL - Zeichen zum Zeichnen, CL - Wie oft
385; Destroyed: None Important
386VideoIO_Internal_MakeWinRight Proc Near Uses dx di
387 ;movzx dx, cl
388 mov dl,cl
389 mov dh,0
390
391 mov bl, al
392 call VideoIO_Internal_SetRegs
393 mov al, bl
394 VIOIMWR_Loop:
395 mov es:[di], al
396 mov es:[di+1], ah
397 add di, 2
398 inc TextPosX
399 dec dx
400 jnz VIOIMWR_Loop
401 ret
402VideoIO_Internal_MakeWinRight EndP
403
404WinBeginPosY db 0h
405WinBeginPosX db 0h
406WinEndPosY db 0h
407WinEndPosX db 0h
408WinCharRight db 0CDh
409WinCharDown db 0B3h
410WinCharBB db 0D5h
411WinCharBE db 0B8h
412WinCharEB db 0D4h
413WinCharEE db 0BEh
414
415; In: BX - Begin Position, DX - End Position
416; Destroyed: BX DX
417VideoIO_MakeWindow Proc Near Uses ax bx cx es di
418 mov WinBeginPosY, bh
419 mov WinBeginPosX, bl
420 mov WinEndPosY, dh
421 mov WinEndPosX, dl
422 mov cx, bx
423 inc ch
424 call VideoIO_Locate ; StartPos left line
425 mov cl, WinEndPosY
426 sub cl, WinBeginPosY
427 dec cl
428 mov al, WinCharDown
429 push cx
430 call VideoIO_Internal_MakeWinDown
431 mov ch, WinBeginPosY
432 mov cl, WinEndPosX
433 inc ch
434 call VideoIO_Locate ; StartPos right line
435 pop cx
436 mov al, WinCharDown
437 call VideoIO_Internal_MakeWinDown
438 ; Left & Right are already done...
439 mov ch, WinBeginPosY
440 mov cl, WinBeginPosX
441 call VideoIO_Locate ; StartPos upper line
442 mov al, WinCharBB
443 call VideoIO_PrintSingleChar
444 mov cl, WinEndPosX
445 sub cl, WinBeginPosX
446 dec cl
447 mov al, WinCharRight
448 push cx
449 call VideoIO_Internal_MakeWinRight
450 mov al, WinCharBE
451 call VideoIO_PrintSingleChar
452 mov ch, WinEndPosY
453 mov cl, WinBeginPosX
454 call VideoIO_Locate ; StartPos lower line
455 mov al, WinCharEB
456 call VideoIO_PrintSingleChar
457 pop cx
458 mov al, WinCharRight
459 call VideoIO_Internal_MakeWinRight
460 mov al, WinCharEE
461 call VideoIO_PrintSingleChar
462 ; Frame done, now just filling...
463 mov bh, WinEndPosY
464 sub bh, WinBeginPosY
465 dec bh
466 mov bl, WinEndPosX
467 sub bl, WinBeginPosX
468 dec bl
469
470 VIOIMW_Loop:
471 mov ch, WinBeginPosY
472 add ch, bh
473 mov cl, WinBeginPosX
474 inc cl
475 call VideoIO_Locate
476
477 mov al, 20h
478 mov cl, bl
479 push bx
480 call VideoIO_Internal_MakeWinRight
481 pop bx
482 dec bh
483 jnz VIOIMW_Loop
484 ret
485VideoIO_MakeWindow EndP
486
487; In: AX - Segment to copy B800 to...
488; Destroyed: BX DX
489VideoIO_BackUpTo Proc Near Uses cx ds si es di
490 mov es, ax
491 mov ax, 0B800h
492 mov ds, ax
493 xor si, si
494 xor di, di
495 mov cx, 800h ; Copy 1000h bytes
496 rep movsw
497 ret
498VideoIO_BackUpTo EndP
499
500VideoIO_RestoreFrom Proc Near Uses cx ds si es di
501 mov ds, ax
502 mov ax, 0B800h
503 mov es, ax
504 xor si, si
505 xor di, di
506 mov cx, 800h ; Copy 1000h bytes
507 rep movsw
508 ret
509VideoIO_RestoreFrom EndP
510
511; In: CL - Total Length of String
512; DS:SI - Actual String
513; Out: Carry Set if String was ENTERd
514; Destroyed: *none*
515VideoIO_LetUserEditString Proc Near Uses ax bx cx dx si es di
516 local StartPosX:byte, LastPosX:byte
517 local StringLen:byte
518
519 or cl, cl
520 jnz VIOLUES_LenNotNUL
521 clc
522 ret
523
524 VIOLUES_LenNotNUL:
525 mov al, TextPosX
526 inc al
527 mov StartPosX, al
528 mov StringLen, cl
529
530 push cx
531 call VideoIO_Internal_SetRegs ; ES:DI - Pos on Screen at Start
532
533 xor ch, ch
534 call GetLenOfName ; CX - Actual Length of String
535 mov dl, cl
536
537 ; Set Cursor behind String and turn it on...
538 add cl, StartPosX
539 call VideoIO_Locate
540 call VideoIO_CursorSet
541 call VideoIO_CursorOn ; Set and turn cursor on
542
543 ; ES:DI - Screen-Position to Start of String
544 ; DL - Position in String (relative to begin, base=0)
545
546 VIOLUES_Loop:
547 mov ah, 0
548 int 16h
549 cmp ah, Keys_ESC
550 je VIOLUES_KeyESC
551 cmp ah, Keys_Enter
552 je VIOLUES_KeyENTER
553 cmp ah, Keys_Backspace
554 je VIOLUES_KeyBACKSPACE
555 ; Check for valid char...
556 cmp al, 32
557 jb VIOLUES_Loop
558 cmp al, 166
559 ja VIOLUES_Loop
560 ; Okay, Character to add to string
561 cmp dl, StringLen ; String "full" ?
562 jae VIOLUES_Loop
563 ;movzx bx, dl
564 mov bl,dl
565 mov bh,0
566
567 shl bx, 1
568 mov es:[di+bx], al
569 inc dl
570 VIOLUES_UpdateCursor:
571 mov cl, dl
572 add cl, StartPosX
573 call VideoIO_Locate
574 call VideoIO_CursorSet
575 jmp VIOLUES_Loop
576
577 VIOLUES_KeyBACKSPACE:
578 or dl, dl ; String "empty" ?
579 jz VIOLUES_Loop
580 mov al, ' '
581 dec dl
582 ;movzx bx, dl
583 mov bl,dl
584 mov bh,0
585
586 shl bx, 1
587 mov es:[di+bx], al
588 jmp VIOLUES_UpdateCursor
589
590 VIOLUES_KeyESC:
591 pop cx
592 call VideoIO_CursorOff ; Bye Bye cursor
593 clc
594 ret
595
596 VIOLUES_KeyENTER:
597 pop cx
598 ; ENTERd, so copy data to String-Pointer...
599 VIOLUES_CopyLoop:
600 mov al, es:[di]
601 add di, 2
602 mov ds:[si], al
603 inc si
604 dec cl
605 jnz VIOLUES_CopyLoop
606 ; Finally Cursor off-line...
607 call VideoIO_CursorOff
608 stc
609 ret
610VideoIO_LetUserEditString EndP
611
612
613
614;
615; Rousseau Additions.
616;
617
618
619; Function Template
620;ProcName Proc Near Uses ax bx cx dx si es di
621;ProcName EndP
622
623
624;
625; Clear the current page
626;
627VideoIO_ClearScreen Proc Near Uses ax bx cx dx si es di
628 mov al, 0 ; clear entire window
629 mov bh,07h ; Attribute for new lines
630 xor cx,cx ; Row, Column ULC
631 xor dx,dx
632 dec dx ; Row, Column LRC (does this corrupt other pages ?)
633 mov ah, 06h ; Function Code
634 int 10h ; Do It !
635 ret
636VideoIO_ClearScreen EndP
637
638;
639; Rousseau: added
640; Set poosition to teletype cursor
641;
642VideoIO_SyncPos Proc Near Uses ax bx cx dx
643 pushf
644 mov bh, 0
645 mov ah, 03h
646 int 10h
647 mov [TextPosX], dl
648 mov [TextPosY], dh
649 popf
650 ret
651VideoIO_SyncPos EndP
652
653
654
655VideoIO_DBG_WriteString Proc Near Uses ax bx cx dx si es di
656 mov ch, [CFG_Partitions] ; y
657 add ch, 7
658 add ch, [CFG_IncludeFloppy]
659 push cx
660 mov cl, 1 ; x
661 call VideoIO_Locate
662 mov ch, 15 ; fgc
663 mov cl, 0 ; bgc
664 call VideoIO_Color
665 mov si, offset ShowBootLog
666 call VideoIO_Print
667 pop cx
668 inc ch
669
670 ;mov ch, 21 ; y
671 mov cl, 1 ; x
672 call VideoIO_Locate
673 mov ch, 15 ; fgc
674 mov cl, 0 ; bgc
675 call VideoIO_Color
676
677
678 ; Rousseau:
679 mov al, [NewPartitions]
680 ;call VideoIO_PrintByteDynamicNumber
681 mov al, [CFG_Partitions]
682 ;call VideoIO_PrintByteDynamicNumber
683 ret
684VideoIO_DBG_WriteString EndP
685
686
687; Dump the disk-info.
688; Disk number is in DL.
689VideoIO_DumpDiskInfo Proc Near
690
691 VideoIO_DumpDiskInfo_next_disk:
692 push dx
693 xor ax,ax
694 mov al,[TextPosY]
695 push ax
696
697 mov ax,21
698 mov dh,dl
699 and dh,01111111b
700 mul dh
701 mov dh,al
702
703 mov [TextPosX],dh
704
705 mov si, offset Disk
706 call VideoIO_Print
707 mov al,dl
708
709 ; NIET GOED, GAAT FOUT > 9, HEX PRINT GEBRUIKEN !!
710 shr al,4
711 add al,'0'
712 call VideoIO_PrintSingleChar
713 mov al,dl
714 and al,01111111b
715 add al,'0'
716 call VideoIO_PrintSingleChar
717 mov al,'h'
718 call VideoIO_PrintSingleChar
719
720 inc [TextPosY]
721 mov [TextPosX],dh
722
723 mov al,'-'
724 mov cl,17
725 call VideoIO_PrintSingleMultiChar
726
727 inc [TextPosY]
728 mov [TextPosX],dh
729 mov si, offset BiosCyls
730 call VideoIO_Print
731
732 push dx
733 mov bx,offset BIOS_Cyls
734 xor dh,dh
735 and dl,01111111b
736 shl dx,1
737 shl dx,1
738 add bx,dx
739 mov ax,[bx]
740 mov dx,[bx+02]
741 call VideoIO_PrintHexDWord
742 pop dx
743
744 inc [TextPosY]
745 mov [TextPosX],dh
746 mov si, offset BiosHeads
747 call VideoIO_Print
748
749 push dx
750 mov bx,offset BIOS_Heads
751 xor dh,dh
752 and dl,01111111b
753 shl dx,1
754 shl dx,1
755 add bx,dx
756 mov ax,[bx]
757 mov dx,[bx+02]
758 call VideoIO_PrintHexDWord
759 pop dx
760
761 inc [TextPosY]
762 mov [TextPosX],dh
763 mov si, offset BiosSecs
764 call VideoIO_Print
765
766 push dx
767 mov bx,offset BIOS_Secs
768 xor dh,dh
769 and dl,01111111b
770 shl dx,1
771 shl dx,1
772 add bx,dx
773 mov ax,[bx]
774 mov dx,[bx+02]
775 call VideoIO_PrintHexDWord
776 pop dx
777
778 inc [TextPosY]
779 mov [TextPosX],dh
780 mov si, offset LvmSecs
781 call VideoIO_Print
782
783 push dx
784 mov bx,offset TrueSecs
785 xor dh,dh
786 and dl,01111111b
787 shl dx,1
788 shl dx,1
789 add bx,dx
790 mov ax,[bx]
791 mov dx,[bx+02]
792 call VideoIO_PrintHexDWord
793 pop dx
794
795 inc [TextPosY]
796 mov [TextPosX],dh
797 mov si, offset BiosLBA
798 call VideoIO_Print
799
800 push dx
801 mov bx,offset BIOS_TotalSecs
802 xor dh,dh
803 and dl,01111111b
804 shl dx,1
805 shl dx,1
806 shl dx,1
807 add bx,dx
808 mov ax,[bx]
809 mov dx,[bx+02]
810 call VideoIO_PrintHexDWord
811 pop dx
812
813 inc [TextPosY]
814 mov [TextPosX],dh
815
816 pop ax
817 mov [TextPosY],al
818 pop dx
819
820 inc dl
821 mov al,dl
822 and al,01111111b
823 cmp al,[TotalHarddiscs]
824 jae VideoIO_DumpDiskInfo_end
825 jmp VideoIO_DumpDiskInfo_next_disk
826
827 VideoIO_DumpDiskInfo_end:
828 mov [TextPosX],0
829 add [TextPosY],6
830 ret
831VideoIO_DumpDiskInfo EndP
832
833
834
835; Disk Info to Dump to AB LogScreen
836Disk: db "DISK ",0
837BiosCyls: db "Cyls :",0
838BiosHeads: db "Heads :",0
839BiosSecs: db "Secs :",0
840LvmSecs: db "SecsLVM :",0
841BiosLBA: db "LBA Secs:",0
842
843
844HugeBootDisk: db "Boot Disk is Huge : ",0
845DisksFound: db "Disks Found : ",0
846PartitionsFound: db "Partitions Found : ",0
847;AutoStartPart: db "Auto Start Partition : ",0
848
849Phase1: db "eCS Install Phase 1 : ",0
850
851
852ShowMenu: db "Press TAB to return to the AiR-BOOT Menu",0
853ShowBootLog: db "Press TAB to see the Boot Log...",0
854
855Yes: db "YES",0
856No: db "NO",0
857On: db "ON",0
858Off: db "OFF",0
859None: db "NONE",0
860Active: db "ACTIVE",0
861NotActive: db "NOT ACTIVE",0
862
863; New Line for use by MBR_Teletype
864NL: db 0dh, 0ah, 0
Note: See TracBrowser for help on using the repository browser.