source: trunk/bootcode/regular/debug.asm@ 86

Last change on this file since 86 was 86, checked in by Ben Rietbroek, 8 years ago

Added preliminary code for debug video page, hotkey 'd' [v1.1.1-testing]

Like the TAB-key switches between BIOS-post info and MENU, this toggles
the display of debug output to the screen. This uses video page 3.
No functionality is implemented yet.

CAUTION:
This is a testbuild !
AirBoot uses the BIOS to access disks and a small coding error can trash
partition tables or other vital disk structures. You are advised to make
backups of TRACK0 and EBRs before using this testbuild. More info at:
https://rousseaux.github.io/netlabs.air-boot/pdf/AirBoot-v1.1.0-manual.pdf

File size: 26.2 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 / DEBUG
20;---------------------------------------------------------------------------
21
22
23; -----------------------
24; Rousseau: # DEBUG.ASM #
25; -----------------------
26; This module contains functions for debugging AiR-BOOT.
27; It is only included in debug builds and the codesize of AiR-BOOT increases
28; in that case. To compensate for that, the FX code is disabled when debugging
29; is active. Also, most of the debug-routines can selectively be disabled
30; by setting the 'IF' directive to 0 or 1. Setting to 0 does an immediate
31; return, setting to 1 enables the routine.
32
33
34
35IFDEF MODULE_NAMES
36DB 'DEBUG',0
37ENDIF
38
39
40
41;
42; Display a number that was put on the stack.
43; Used to track code-flow.
44;
45dbp db '>---------->> DebugProbe: ',0
46DEBUG_Probe Proc
47 push bp
48 mov bp,sp
49 pushf
50 pusha
51
52 mov si,offset [dbp] ; Default probe-text.
53 call AuxIO_Print
54 mov ax,[bp+04] ; Get probe-number from stack.
55 call AuxIO_TeletypeHexWord
56 call AuxIO_TeletypeNL
57
58 ; Also display registers.
59 popa
60 pusha
61 call DEBUG_DumpRegisters
62
63 popa
64 popf
65 pop bp
66 ret 2
67DEBUG_Probe Endp
68
69
70
71;
72; Show help on keys.
73;
74dbh db 10
75 db 'h=HELP, d=DBGSCR-TOGGLE',10
76 db 'l=DRIVE-LETTERS, g=GEO, i=IPT, r=RESTART, v=VOL-LETTERS, x=XREF',10
77 db '0-9=disk 80h-89h info',10
78 db 10,0
79
80DEBUG_ShowHelp Proc
81 pushf
82 pusha
83 mov si, offset dbh
84 call AuxIO_Print
85 popa
86 popf
87 ret
88DEBUG_ShowHelp EndP
89
90
91
92;
93; Call list for debug hot-keys.
94;
95dbg_call_list:
96 db 't'
97 dw offset DEBUG_Test
98 db 'd'
99 dw offset DEBUG_DebugScreenToggle
100 db 'l'
101 dw offset DEBUG_DumpDriveLetters
102 db 'g'
103 dw offset DEBUG_DumpGeo
104 db 'h'
105 dw offset DEBUG_ShowHelp
106 db 'i'
107 dw offset DEBUG_DumpIPT
108 db 'r'
109 dw offset AirbootRestart
110 db 'v'
111 dw offset DEBUG_DumpVolumeLetters
112 db 'x'
113 dw offset DEBUG_DumpPartitionXref
114 db 'R'
115 dw offset AirbootRestart
116 db 0
117
118
119
120;
121; Handle keypresses when the main menu is active.
122;
123DEBUG_HandleKeypress Proc
124 pushf
125 pusha
126
127 ; Save hot-key
128 mov dl,al
129
130 ; Check for digit.
131 cmp al,'0'
132 jb DEBUG_HandleKeypress_exit
133 cmp al,'9'
134 ja DEBUG_HandleKeypress_try_alpha
135 ; It was a digit, dump disk info ('0' for 80h, '1' for 81h, etc)
136 call DEBUG_DumpDiskInfo
137 ;~ jmp DEBUG_HandleKeypress_check_it
138 jmp DEBUG_HandleKeypress_exit
139
140 ; Check for alpha.
141 DEBUG_HandleKeypress_try_alpha:
142 ; Force upper-case.
143 and al,11011111b
144 cmp al,'A'
145 jb DEBUG_HandleKeypress_exit
146 cmp al,'Z'
147 ja DEBUG_HandleKeypress_exit
148 ; It was an alpha.
149 jmp DEBUG_HandleKeypress_check_it
150
151
152 ; Check if the key is a hot-key.
153 DEBUG_HandleKeypress_check_it:
154 cld
155 mov si,offset dbg_call_list
156
157 ; Loop over jump-list.
158 DEBUG_HandleKeypress_next_entry:
159
160 ; Load the hot-key.
161 lodsb
162 ; No hot-key (not implemented) if end-of-list.
163 test al,al
164 jz DEBUG_HandleKeypress_ni
165
166 ; Compare hot-key and iterate if not the same.
167 cmp dl,al
168 lodsw
169 jne DEBUG_HandleKeypress_next_entry
170
171 ; Entry found, call corresponding routine.
172 mov bx,ax
173 call bx
174
175 ; Done.
176 jmp DEBUG_HandleKeypress_exit
177
178 ; Call not-assigned routine.
179 DEBUG_HandleKeypress_ni:
180 call DEBUG_NotAssigned
181 jmp DEBUG_HandleKeypress_exit
182
183 ; Return to caller.
184 DEBUG_HandleKeypress_exit:
185 popa
186 popf
187 ret
188DEBUG_HandleKeypress Endp
189
190
191
192;
193; Show 'not assigned' message.
194;
195dbg_na db 'This key is not assigned, press ''h'' for Help.',10,0
196DEBUG_NotAssigned Proc
197 pushf
198 pusha
199 mov si,offset dbg_na
200 call AuxIO_Print
201 popa
202 popf
203 ret
204DEBUG_NotAssigned Endp
205
206
207
208;
209; Dump information before the menu is displayed.
210;
211DEBUG_Dump1 Proc Near
212 pushf
213 pusha
214
215 ; Hello message
216 mov si, offset AuxIOHello
217 call AuxIO_Print
218
219 ; Build Info
220 ;~ mov si, offset BUILD_DATE
221 ;~ call AuxIO_Print
222 call AuxIO_PrintBuildInfo
223
224 ; Start new line
225 call AuxIO_TeletypeNL
226 ;~ call AuxIO_TeletypeNL
227
228 ;~ call DEBUG_DumpHidePartTables
229 ;~ call DEBUG_CheckMath
230 ;~ call DEBUG_DumpGeo
231 ;~ call DEBUG_CheckBitFields
232
233 popa
234 popf
235 ret
236DEBUG_Dump1 EndP
237
238
239
240;
241; Check the simple 32-bit math functions.
242;
243IF 0
244db_testmul32 db "## CHK MUL32 ##",10,0
245DEBUG_Test_MATH_Mul32 Proc Near
246 pushf
247 pusha
248
249 ; Msg check math-module
250 mov si,offset [db_testmul32]
251 call AuxIO_Print
252
253 ; Output hex-word
254 mov ax,0BABEh
255 call AuxIO_TeletypeHexWord
256
257 mov al,' '
258 call AuxIO_Teletype
259 mov al,'*'
260 call AuxIO_Teletype
261 mov al,' '
262 call AuxIO_Teletype
263
264 ; Output hex-word
265 mov ax,0BABEh
266 call AuxIO_TeletypeHexWord
267
268 mov al,' '
269 call AuxIO_Teletype
270 mov al,'='
271 call AuxIO_Teletype
272 mov al,' '
273 call AuxIO_Teletype
274
275 mov ax,0BABEh
276 mul ax
277 call AuxIO_TeletypeHexDWord
278
279 ; Start new line
280 call AuxIO_TeletypeNL
281
282 ; Output hex-dword
283 mov dx,0DEADh
284 mov ax,0FACEh
285 call AuxIO_TeletypeHexDWord
286
287 mov al,' '
288 call AuxIO_Teletype
289 mov al,'*'
290 call AuxIO_Teletype
291 mov al,' '
292 call AuxIO_Teletype
293
294 ; Output hex-dword
295 mov dx,0DEADh
296 mov ax,0FACEh
297 call AuxIO_TeletypeHexDWord
298
299 mov al,' '
300 call AuxIO_Teletype
301 mov al,'='
302 call AuxIO_Teletype
303 mov al,' '
304 call AuxIO_Teletype
305
306 mov bx,0DEADh
307 mov cx,0FACEh
308 mov dx,0DEADh
309 mov ax,0FACEh
310 call MATH_Mul32
311 call AuxIO_TeletypeHexQWord
312
313 call AuxIO_TeletypeNL
314 call AuxIO_TeletypeNL
315
316 popa
317 popf
318 ret
319DEBUG_Test_MATH_Mul32 EndP
320ELSE
321DEBUG_Test_MATH_Mul32 Proc Near
322 ret
323DEBUG_Test_MATH_Mul32 EndP
324ENDIF
325
326
327
328;
329; Toggle display of debug video page.
330;
331IF 0
332DEBUG_DebugScreenToggle Proc
333 pushf
334 pusha
335
336 mov si, offset $+5
337 jmp @F
338 db 10,'DebugScreenToggle:',10,0
339prvpg db 00h
340hdr db 10,'[Debug Console]',13,10,0
341@@: call AuxIO_Print
342
343 ; Get current page in BH
344 mov ah, 0fh
345 int 10h
346
347 ; Already debug page ?
348 cmp bh, 03h
349 je DEBUG_DebugScreenToggle_back
350
351 ; Remember page
352 mov [prvpg], bh
353
354 ; Switch to debug page
355 mov al, 03h
356 mov ah, 05h
357 int 10h
358
359 ; Get cursor position in DX (DH=row, DL=column)
360 ;~ mov ah, 03h
361 ;~ mov bh, 03h
362 ;~ int 10h
363
364 ;~ mov al, 01h
365 ;~ mov bh, 03h
366 ;~ mov bl, 07h
367 ;~ mov bp, offset [hdr]
368 ;~ mov cx, sizeof(hdr)
369 ;~ mov ah, 13h
370 ;~ int 10h
371
372 ;~ mov bh, 03h
373 ;~ mov dh, 00h
374 ;~ mov dl, 00h
375 ;~ mov ah, 02h
376 ;~ int 10h
377
378 mov si, offset [hdr]
379 call DBG_Teletype
380
381 jmp DEBUG_DebugScreenToggle_end
382
383 DEBUG_DebugScreenToggle_back:
384 ; Switch back to previous page
385 mov al, [prvpg]
386 mov ah, 05h
387 int 10h
388 jmp DEBUG_DebugScreenToggle_end
389
390 DEBUG_DebugScreenToggle_end:
391 popa
392 popf
393 ret
394DEBUG_DebugScreenToggle EndP
395ELSE
396DEBUG_DebugScreenToggle Proc
397 ret
398DEBUG_DebugScreenToggle EndP
399ENDIF
400
401
402
403;
404; Dump the geometry.
405;
406IF 0
407DEBUG_DumpGeo Proc
408 pushf
409 pusha
410
411 ; BIOS cyls
412 mov dx,word ptr [BIOS_Cyls+02]
413 mov ax,word ptr [BIOS_Cyls+00]
414 call AuxIO_TeletypeHexDWord
415 call AuxIO_TeletypeNL
416
417 ; BIOS heads
418 mov dx,word ptr [BIOS_Heads+02]
419 mov ax,word ptr [BIOS_Heads+00]
420 call AuxIO_TeletypeHexDWord
421 call AuxIO_TeletypeNL
422
423 ; BIOS secs
424 mov dx,word ptr [BIOS_Secs+02]
425 mov ax,word ptr [BIOS_Secs+00]
426 call AuxIO_TeletypeHexDWord
427 call AuxIO_TeletypeNL
428
429 ; Bytes per sector
430 mov ax,[BIOS_Bytes]
431 call AuxIO_TeletypeHexWord
432 call AuxIO_TeletypeNL
433
434 ; Total secs
435 mov bx, word ptr [BIOS_TotalSecs+06]
436 mov cx, word ptr [BIOS_TotalSecs+04]
437 mov dx, word ptr [BIOS_TotalSecs+02]
438 mov ax, word ptr [BIOS_TotalSecs+00]
439 call AuxIO_TeletypeHexDWord
440 call AuxIO_TeletypeNL
441
442 ; CHS to LBA
443 mov dx,1
444 mov ax,29e5h
445 mov bx,23h
446 mov cx,9h
447 call CONV_CHS2LBA
448 call AuxIO_TeletypeHexDWord
449 call AuxIO_TeletypeNL
450
451 popa
452 popf
453 ret
454DEBUG_DumpGeo Endp
455ELSE
456DEBUG_DumpGeo Proc
457 ret
458DEBUG_DumpGeo Endp
459ENDIF
460
461
462
463;
464; Dump the internal partition table.
465;
466IF 0
467DEBUG_DumpIPT Proc
468 pushf
469 pusha
470
471 call AuxIO_TeletypeNL
472
473 mov si,offset [BIOScontIPTentry]
474 ;~ mov si,offset [PartitionTable]
475 call AuxIO_DumpSector
476
477 popa
478 popf
479 ret
480DEBUG_DumpIPT EndP
481ELSE
482DEBUG_DumpIPT Proc
483 ret
484DEBUG_DumpIPT EndP
485ENDIF
486
487
488
489;
490; Activate zero or more test functions.
491; When a call is _not_ commented out, the test-function can still be disabled
492; if its 'IF' directive is 0.
493;
494IF 1
495DEBUG_Test Proc
496 pushf
497 pusha
498 ; Put call to test-function here...
499 popa
500 popf
501 ret
502DEBUG_Test EndP
503ELSE
504DEBUG_Test Proc
505 ret
506DEBUG_Test EndP
507ENDIF
508
509
510
511;
512; Dump the new partitions table.
513;
514IF 0
515DEBUG_DumpNewPartTable Proc
516 pushf
517 pusha
518
519 call AuxIO_TeletypeNL
520
521 mov si,offset [NewPartTable]
522 call AuxIO_DumpSector
523
524 popa
525 popf
526 ret
527DEBUG_DumpNewPartTable EndP
528DEBUG_DumpNewPartTable Proc
529 ret
530DEBUG_DumpNewPartTable EndP
531ENDIF
532
533
534
535;
536; Dump the partition pointers table.
537;
538IF 0
539DEBUG_DumpPartitionPointers Proc
540 pushf
541 pusha
542
543 call AuxIO_TeletypeNL
544
545 mov si,offset [PartitionPointers]
546 mov cx,7
547
548 DEBUG_DumpPartitionPointers_next:
549 call AuxIO_DumpParagraph
550 add si,16
551 call AuxIO_TeletypeNL
552 loop DEBUG_DumpPartitionPointers_next
553
554 popa
555 popf
556 ret
557DEBUG_DumpPartitionPointers EndP
558ELSE
559DEBUG_DumpPartitionPointers Proc
560 ret
561DEBUG_DumpPartitionPointers EndP
562ENDIF
563
564
565
566;
567; Dump the partition x-ref table.
568;
569IF 0
570xrt db 10,'XrefTable:',10,0
571DEBUG_DumpPartitionXref Proc
572 pushf
573 pusha
574
575 mov si, offset [xrt]
576 call AuxIO_Print
577 ;~ call AuxIO_TeletypeNL
578
579 mov si,offset [PartitionXref]
580 mov cx,3
581
582 DEBUG_DumpPartitionXref_next:
583 call AuxIO_DumpParagraph
584 add si,16
585 call AuxIO_TeletypeNL
586 loop DEBUG_DumpPartitionXref_next
587
588 popa
589 popf
590 ret
591DEBUG_DumpPartitionXref EndP
592ELSE
593DEBUG_DumpPartitionXref Proc
594 ret
595DEBUG_DumpPartitionXref EndP
596ENDIF
597
598
599
600;
601; Dump the dl-feature drive-letters.
602;
603IF 0
604ddl db 10,'Driveletters:',10,0
605DEBUG_DumpDriveLetters Proc
606 pushf
607 pusha
608
609 mov si, offset [ddl]
610 call AuxIO_Print
611
612 ; Dump the old drive-letters as set with the dl-feature.
613 mov si,offset [DriveLetters]
614 mov cx,3
615 DEBUG_DumpDriveLetters_next_1:
616 call AuxIO_DumpParagraph
617 add si,16
618 call AuxIO_TeletypeNL
619 loop DEBUG_DumpDriveLetters_next_1
620
621 ; Dump the new drive-letters as composed when scanning partitions
622 ; and partitions were added or removed.
623 mov si,offset [NewDriveLetters]
624 mov cx,3
625 DEBUG_DumpDriveLetters_next_2:
626 call AuxIO_DumpParagraph
627 add si,16
628 call AuxIO_TeletypeNL
629 loop DEBUG_DumpDriveLetters_next_2
630
631 popa
632 popf
633 ret
634DEBUG_DumpDriveLetters EndP
635ELSE
636DEBUG_DumpDriveLetters Proc
637 ret
638DEBUG_DumpDriveLetters EndP
639ENDIF
640
641
642
643;
644; Dump some disk information.
645;
646IF 0
647ddi db 10,'DumpDiskInfo:',10,0
648DEBUG_DumpDiskInfo Proc
649 pushf
650 pusha
651
652 add al, 50h ; ASCII '0' to BIOS 80h, '1'->81h, etc.
653
654 mov si, offset [ddi]
655 call AuxIO_Print
656
657 call AuxIO_TeletypeHexByte
658 call AuxIO_TeletypeNL
659
660 popa
661 popf
662 ret
663DEBUG_DumpDiskInfo EndP
664ELSE
665DEBUG_DumpDiskInfo Proc
666 ret
667DEBUG_DumpDiskInfo EndP
668ENDIF
669
670
671
672;
673; Dump the lvm volume drive-letters.
674;
675IF 0
676dvl db 10,'VolumeLetters:',10,0
677DEBUG_DumpVolumeLetters Proc
678 pushf
679 pusha
680
681 mov si, offset [dvl]
682 call AuxIO_Print
683
684 mov si,offset [PartitionVolumeLetters]
685 mov cx,3
686
687 DEBUG_DumpVolumeLetters_next:
688 call AuxIO_DumpParagraph
689 add si,16
690 call AuxIO_TeletypeNL
691 loop DEBUG_DumpVolumeLetters_next
692
693 popa
694 popf
695 ret
696DEBUG_DumpVolumeLetters EndP
697ELSE
698DEBUG_DumpVolumeLetters Proc
699 ret
700DEBUG_DumpVolumeLetters EndP
701ENDIF
702
703
704
705;
706; Dump the registers.
707;
708IF 1
709regAX db 'AX:',0
710regBX db ' BX:',0
711regCX db ' CX:',0
712regDX db ' DX:',0
713regSI db ' SI:',0
714regDI db ' DI:',0
715
716regBP db 'CS:',0
717regSP db ' DS:',0
718regCS db ' ES:',0
719regSS db ' SS:',0
720regDS db ' SP:',0
721regES db ' BP:',0
722
723;~ regFS db 'FS:',0
724;~ regGS db ' GS:',0
725DEBUG_DumpRegisters Proc
726 pushf
727 pusha
728
729 push si
730 mov si, offset [regAX]
731 call AuxIO_Print
732 call AuxIO_TeletypeHexWord
733 ;~ call AuxIO_TeletypeNL
734
735 call AuxIO_Print
736 mov ax,bx
737 call AuxIO_TeletypeHexWord
738 ;~ call AuxIO_TeletypeNL
739
740 call AuxIO_Print
741 mov ax,cx
742 call AuxIO_TeletypeHexWord
743 ;~ call AuxIO_TeletypeNL
744
745 call AuxIO_Print
746 mov ax,dx
747 call AuxIO_TeletypeHexWord
748 ;~ call AuxIO_TeletypeNL
749
750 call AuxIO_Print
751 pop ax
752 call AuxIO_TeletypeHexWord
753 ;~ call AuxIO_TeletypeNL
754
755 call AuxIO_Print
756 mov ax,di
757 call AuxIO_TeletypeHexWord
758 call AuxIO_TeletypeNL
759
760
761
762 call AuxIO_Print
763 mov ax,cs
764 call AuxIO_TeletypeHexWord
765 ;~ call AuxIO_TeletypeNL
766
767 call AuxIO_Print
768 mov ax,ds
769 call AuxIO_TeletypeHexWord
770 ;~ call AuxIO_TeletypeNL
771
772 call AuxIO_Print
773 mov ax,es
774 call AuxIO_TeletypeHexWord
775 ;~ call AuxIO_TeletypeNL
776
777 call AuxIO_Print
778 mov ax,ss
779 call AuxIO_TeletypeHexWord
780 ;~ call AuxIO_TeletypeNL
781
782 call AuxIO_Print
783 mov ax,sp
784 call AuxIO_TeletypeHexWord
785 ;~ call AuxIO_TeletypeNL
786
787 call AuxIO_Print
788 mov ax,bp
789 call AuxIO_TeletypeHexWord
790 call AuxIO_TeletypeNL
791
792 ;~ call AuxIO_Print
793 ;~ mov ax,fs
794 ;~ call AuxIO_TeletypeHexWord
795 ;~ call AuxIO_TeletypeNL
796
797 ;~ call AuxIO_Print
798 ;~ mov ax,gs
799 ;~ call AuxIO_TeletypeHexWord
800 ;~ call AuxIO_TeletypeNL
801
802 call AuxIO_TeletypeNL
803
804 popa
805 popf
806 ret
807DEBUG_DumpRegisters EndP
808ELSE
809DEBUG_DumpRegisters Proc
810 ret
811DEBUG_DumpRegisters EndP
812ENDIF
813
814
815
816;
817; Dump CHS values.
818;
819IF 0
820DEBUG_DumpCHS Proc Near
821 pushf
822 pusha
823 mov al,'C'
824 call AuxIO_Teletype
825 mov al,':'
826 call AuxIO_Teletype
827 mov ah,cl
828 shr ah,6
829 mov al,ch
830 call AuxIO_TeletypeHexWord
831 mov al,' '
832 call AuxIO_Teletype
833 mov al,'H'
834 call AuxIO_Teletype
835 mov al,':'
836 call AuxIO_Teletype
837 mov al,dh
838 call AuxIO_TeletypeHexByte
839 mov al,' '
840 call AuxIO_Teletype
841 mov al,'S'
842 call AuxIO_Teletype
843 mov al,':'
844 call AuxIO_Teletype
845 mov al,cl
846 and al,00111111b
847 call AuxIO_TeletypeHexByte
848 call AuxIO_TeletypeNL
849 popa
850 popf
851 ret
852DEBUG_DumpCHS EndP
853ELSE
854DEBUG_DumpCHS Proc Near
855 ret
856DEBUG_DumpCHS EndP
857ENDIF
858
859
860
861;
862; Dump BSS.
863;
864IF 0
865DEBUG_DumpBSSSectors Proc Near
866 pushf
867 pusha
868
869 mov si, offset [PartitionSector]
870 call AuxIO_DumpSector
871 call AuxIO_TeletypeNL
872
873 mov si, offset [PBRSector]
874 call AuxIO_DumpSector
875 call AuxIO_TeletypeNL
876
877 mov si, offset [LVMSector]
878 call AuxIO_DumpSector
879 call AuxIO_TeletypeNL
880
881 mov si, offset [TmpSector]
882 call AuxIO_DumpSector
883 call AuxIO_TeletypeNL
884
885 mov si, offset [NewPartTable]
886 call AuxIO_DumpSector
887 call AuxIO_TeletypeNL
888 call AuxIO_TeletypeNL
889
890 popa
891 popf
892 ret
893DEBUG_DumpBSSSectors EndP
894ELSE
895DEBUG_DumpBSSSectors Proc Near
896 ret
897DEBUG_DumpBSSSectors EndP
898ENDIF
899
900
901
902;
903; Dump 6-bit packed hide partition table.
904;
905IF 0
906DEBUG_DumpHidePartTables Proc Near
907 pushf
908 pusha
909
910 mov cx,3
911 mov si, offset [HidePartitionTable]
912 again1:
913 call AuxIO_DumpSector
914 add si,512
915 loop again1
916 call AuxIO_TeletypeNL
917
918 mov cx,3
919 mov si, offset [PartitionXref]
920 again2:
921 call AuxIO_DumpParagraph
922 call AuxIO_TeletypeNL
923 add si,16
924 loop again2
925 call AuxIO_TeletypeNL
926
927 mov cx,3
928 mov si, offset [NewHidePartTable]
929 again3:
930 call AuxIO_DumpSector
931 add si,512
932 loop again3
933 call AuxIO_TeletypeNL
934
935 popa
936 popf
937 ret
938DEBUG_DumpHidePartTables EndP
939ELSE
940DEBUG_DumpHidePartTables Proc Near
941 ret
942DEBUG_DumpHidePartTables EndP
943ENDIF
944
945
946
947;
948; Check the bitfield routines.
949;
950IF 0
951DEBUG_CheckBitFields Proc
952 pushf
953 pusha
954
955 mov bx,offset [ott]
956
957 mov al,0
958 mov dl,0
959 mov dh,6
960 DEBUG_CheckBitFields_next_write:
961 call CONV_SetBitfieldValue
962 inc al
963 inc dl
964 jnz DEBUG_CheckBitFields_next_write
965
966 mov dl,0
967 mov dh,6
968 DEBUG_CheckBitFields_next_read:
969 mov al,dl
970 call AuxIO_TeletypeHexByte
971 mov al,':'
972 call AuxIO_Teletype
973 call CONV_GetBitfieldValue
974 call AuxIO_TeletypeHexWord
975 call AuxIO_TeletypeNL
976 inc dl
977 jnz DEBUG_CheckBitFields_next_read
978
979 popa
980 popf
981 ret
982DEBUG_CheckBitFields EndP
983ELSE
984DEBUG_CheckBitFields Proc
985 ret
986DEBUG_CheckBitFields EndP
987ENDIF
988
989
990
991;
992; Dump information before the partition is booted.
993;
994IF 0
995DEBUG_Dump2 Proc Near
996 pushf
997 pusha
998
999 call AuxIO_TeletypeNL
1000 call AuxIO_TeletypeNL
1001
1002 mov si,offset db_config
1003 call AuxIO_Print
1004
1005 mov si,offset db_cfgparts
1006 call AuxIO_Print
1007 mov al,[CFG_Partitions]
1008 call AuxIO_TeletypeHexByte
1009 call AuxIO_TeletypeNL
1010
1011 mov si,offset db_cfgpartdef
1012 call AuxIO_Print
1013 mov al,[CFG_PartDefault]
1014 call AuxIO_TeletypeHexByte
1015 call AuxIO_TeletypeNL
1016
1017 mov si,offset db_cfgpartlast
1018 call AuxIO_Print
1019 mov al,[CFG_PartLast]
1020 call AuxIO_TeletypeHexByte
1021 call AuxIO_TeletypeNL
1022 call AuxIO_TeletypeNL
1023
1024 mov si,offset db_vars
1025 call AuxIO_Print
1026
1027 mov si,offset db_newpart
1028 call AuxIO_Print
1029 mov si,offset NewPartTable
1030 call AuxIO_DumpSector
1031 call AuxIO_TeletypeNL
1032 add si,512
1033 call AuxIO_DumpSector
1034 call AuxIO_TeletypeNL
1035 call AuxIO_TeletypeNL
1036
1037 mov si,offset db_newhide
1038 call AuxIO_Print
1039 mov si,offset NewHidePartTable
1040 call AuxIO_DumpSector
1041 call AuxIO_TeletypeNL
1042 add si,512
1043 call AuxIO_DumpSector
1044 call AuxIO_TeletypeNL
1045 call AuxIO_TeletypeNL
1046
1047 mov si,offset db_dletters
1048 call AuxIO_Print
1049 mov si,offset NewDriveLetters
1050 call AuxIO_DumpParagraph
1051 call AuxIO_TeletypeNL
1052 add si,16
1053 call AuxIO_DumpParagraph
1054 call AuxIO_TeletypeNL
1055 call AuxIO_TeletypeNL
1056
1057 mov si,offset db_tmpec
1058 call AuxIO_Print
1059 mov si,offset TmpSector
1060 call AuxIO_DumpSector
1061 call AuxIO_TeletypeNL
1062 call AuxIO_TeletypeNL
1063
1064 mov si,offset db_partsec
1065 call AuxIO_Print
1066 mov si,offset PartitionSector
1067 call AuxIO_DumpSector
1068 call AuxIO_TeletypeNL
1069 call AuxIO_TeletypeNL
1070
1071 popa
1072 popf
1073 ret
1074DEBUG_Dump2 EndP
1075ELSE
1076DEBUG_Dump2 Proc Near
1077 ret
1078DEBUG_Dump2 EndP
1079ENDIF
1080
1081
1082
1083;
1084; Like the MBR version, but uses video page 3
1085;
1086DBG_Teletype Proc Near Uses ax bx cx
1087 mov ah, 0Eh
1088 mov bh, 03h
1089 mov bl, 07h
1090 DBGT_Loop:
1091 lodsb
1092 or al, al
1093 jz DBGT_End
1094 int 10h
1095 jmp DBGT_Loop
1096 DBGT_End:
1097 ret
1098DBG_Teletype EndP
1099
1100
1101
1102;
1103; These strings can also be referenced outside the debug module when debugging
1104; is enabled.
1105;
1106dlra db 10,'LVM_DoLetterReassignment: ',0
1107ptetb db 10,'Partition Table Entry to boot',10,0
1108bios_reg db 10,'Registers passed by BIOS:',10,0
1109;~ diopmbr db 10,'DriveIO_ProtectMBR',10,0
1110dioss db 10,'DriveIO_SaveSector',10,0
1111
1112
1113;~ db_mbr db "## MBR ##",10,0
1114;~ db_masterlvm db "## MLVMR ##",10,0
1115
1116
1117;~ db_config db '## CFG (DMP2) ##',10,0
1118;~ db_cfgparts db 'CFG_Partitions:',0
1119;~ db_cfgpartdef db 'CFG_PartDefault:',0
1120;~ db_cfgpartlast db 'CFG_PartLast:',0
1121
1122
1123;~ db_vars db '## VARS ##',10,0
1124;~ db_partsec db 'PartitionSector:',10,0
1125;~ db_lvmsec db 'LVMSector :',10,0
1126;~ db_tmpec db 'TmpSector :',10,0
1127
1128;~ db_newpart db 'NewPartTable :',10,0
1129;~ db_newhide db 'NewHideTable:',10,0
1130;~ db_dletters db 'NewDriveLetters:',10,0
1131
1132;~ db_partsize db 'PartitionSizeTable:',10,0
1133;~ db_partpoint db 'PartitionPointers:',10,0
1134;~ db_partpointcnt db 'PartitionPointerCount:',0
1135;~ db_partxref db 'PartitionXref:',10,0
1136;~ db_partvoldl db 'PartitionVolumeLetters:',10,0
1137
1138;~ db_totaldisks db 'TotalHarddiscs:',0
1139;~ db_lbaswitchtab db 'LBASwitchTable:',10,0
1140;~ db_newparts db 'NewPartitions:',0
1141
1142;~ db_exabspos db 'ExtendedAbsPos:',0
1143;~ db_exabsposset db 'ExtendedAbsPosSet:',0
1144
1145;~ db_curpartloc db 'CurPartition_Location:',0
1146;~ db_curiox db 'CurIO_UseExtension:',0
1147
1148;~ db_curlvmsec db 'Current LVM Sector:',0
1149
1150
1151;~ drive db 'drive : ',0
1152;~ before_lvm_adjust db 'before lvm adjust : ',0
1153;~ after_lvm_adjust db 'after lvm adjust : ',0
1154;~ before_lvm_adjust_log db 'before lvm logical adjust: ',0
1155;~ after_lvm_adjust_log db 'after lvm logical adjust : ',0
1156;~ spt_used db 'spt used : ',0
Note: See TracBrowser for help on using the repository browser.