Changeset 40 for trunk/BOOTCODE/REGULAR
- Timestamp:
- Apr 11, 2014, 9:58:17 PM (12 years ago)
- Location:
- trunk/BOOTCODE/REGULAR
- Files:
-
- 8 edited
-
BOOTMENU.ASM (modified) (7 diffs)
-
DRIVEIO.ASM (modified) (10 diffs)
-
OTHER.ASM (modified) (3 diffs)
-
PARTMAIN.ASM (modified) (10 diffs)
-
PARTSCAN.ASM (modified) (11 diffs)
-
PASSWORD.ASM (modified) (1 diff)
-
STD_TEXT.ASM (modified) (1 diff)
-
VIDEOIO.ASM (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BOOTCODE/REGULAR/BOOTMENU.ASM
r38 r40 718 718 ; Will Set some Vars after user selected entry to boot... 719 719 ; ...don't select Straight View ! 720 BOOTMENU_SetVarsAfterMenu Proc Near Uses720 BOOTMENU_SetVarsAfterMenu Proc Near 721 721 ; No Straight View in here...we got filtered view since BootMenu-Startup... 722 722 mov al, CFG_RememberTimed … … 780 780 jz BME_NoTimedBoot 781 781 ; ------------------------------------------------ TIMED BOOT 782 push ax dx 782 push ax 783 push dx 783 784 call TIMER_GetTicCount 784 785 mov dx, word ptr [TimedTimeOut] … … 793 794 cmp al, 0 794 795 jne BME_NoTimeOut 795 pop dx ax 796 pop dx 797 pop ax 796 798 mov dl, Menu_EntryDefault 797 799 and CFG_TimedBootLast, 1 … … 805 807 806 808 BME_NoTimeOut: 807 pop dx ax 809 pop dx 810 pop ax 808 811 BME_NoTimedBoot: 809 812 ; ------------------------------------------------ FLOPPY-NAME TIMER … … 811 814 jz BME_NoFloppyNameTimer 812 815 ; Wait 2 Seconds everytime 813 push ax dx 816 push ax 817 push dx 814 818 call TIMER_GetTicCount 815 819 cmp dx, wptr [FloppyGetNameTimer+2] … … 819 823 BME_ExpiredGetFloppy: 820 824 call BOOTMENU_ResetGetFloppy 821 pop dx ax 825 pop dx 826 pop ax 822 827 jmp BME_RefreshFloppyName 823 828 BME_NoFloppyNameExpired: 824 pop dx ax 829 pop dx 830 pop ax 825 831 BME_NoFloppyNameTimer: 826 832 ; ------------------------------------------------ KEYBOARD … … 848 854 int 16h 849 855 pop dx 850 cmp ah, Keys_E nter856 cmp ah, Keys_ENTER 851 857 je BME_KeyEnter 852 858 cmp ah, Keys_F10 -
trunk/BOOTCODE/REGULAR/DRIVEIO.ASM
r38 r40 153 153 154 154 DriveIO_GetHardDriveCount Proc Near Uses ds si 155 push ds si 155 push ds 156 push si 156 157 push 0040h 157 158 pop ds 158 159 mov si, 0075h 159 160 mov dh, ds:[si] ; 40:75 -> POST: Total Harddiscs == DL 160 pop si ds 161 pop si 162 pop ds 161 163 mov TotalHarddiscs, dh 162 164 ret … … 173 175 mov dl, 80h 174 176 DIOILUT_DriveLoop: 175 push dx di 177 push dx 178 push di 176 179 mov ah, 08h 177 180 int 13h ; DISK - GET DRIVE PARAMETERS … … 190 193 ; bit 16-23 of the LBA address 191 194 DIOILUT_Error: 192 pop di dx 195 pop di 196 pop dx 193 197 mov bptr ds:[di], ah ; Save that value 194 198 inc di ; Go to next BYTE … … 206 210 ; Rousseau: Enhanced to handle sector-numbers 127 and 255 besides 63 for LVM-info sectors. 207 211 ; Ugly, need to cleanup. 208 DriveIO_LVMAdjustToInfoSector Proc Near Uses212 DriveIO_LVMAdjustToInfoSector Proc Near 209 213 210 214 … … 471 475 DriveIO_LVMAdjustToInfoSector EndP 472 476 473 drive :db 'drive : ',0474 before_lvm_adjust :db 'before lvm adjust : ',0475 after_lvm_adjust :db 'after lvm adjust : ',0476 before_lvm_adjust_log :db 'before lvm logical adjust: ',0477 after_lvm_adjust_log :db 'after lvm logical adjust : ',0478 spt_used :db 'spt used : ',0477 drive db 'drive : ',0 478 before_lvm_adjust db 'before lvm adjust : ',0 479 after_lvm_adjust db 'after lvm adjust : ',0 480 before_lvm_adjust_log db 'before lvm logical adjust: ',0 481 after_lvm_adjust_log db 'after lvm logical adjust : ',0 482 spt_used db 'spt used : ',0 479 483 480 484 … … 551 555 552 556 ; Keeps DS:SI for caller 553 DriveIO_LoadTmpSector Proc Near Uses557 DriveIO_LoadTmpSector Proc Near 554 558 mov si, offset TmpSector 555 559 call DriveIO_LoadSector ; Uses INT13X if needed … … 558 562 559 563 ; Keeps DS:SI for caller 560 DriveIO_SaveTmpSector Proc Near Uses564 DriveIO_SaveTmpSector Proc Near 561 565 mov si, offset TmpSector 562 566 call DriveIO_SaveSector … … 626 630 627 631 ; Memory-Block that holds information for LBA-access via INT 13h 628 DriveIO_DAP :db 10h ; Size of paket632 DriveIO_DAP db 10h ; Size of paket 629 633 db 0 ; Reserved 630 634 DriveIO_DAP_NumBlocks dw 0 ; Number of blocks … … 652 656 mov bptr [si+5], dl 653 657 call MBR_Teletype 654 jmp MBRLE_Halt 658 659 ; JWasm: cannot jump to local label in procedure. 660 ; Changed to halt here. 661 ;jmp MBRLE_Halt 662 DriveIO_GotLoadError_halt: 663 jmp DriveIO_GotLoadError_halt 655 664 DriveIO_GotLoadError EndP 656 665 … … 1237 1246 1238 1247 ; Values for sectors per track table corresponding to DriveIO_IsHugeDrive return value. 1239 secs_per_track_table :db 63,127,255,255,255,2551248 secs_per_track_table db 63,127,255,255,255,255 1240 1249 1241 1250 ;db_lmlvm: db 'Load Master LVM -- disk: ',0 -
trunk/BOOTCODE/REGULAR/OTHER.ASM
r38 r40 83 83 GetLenOfStrings EndP 84 84 85 PRECRAP_Main Proc Near Uses85 PRECRAP_Main Proc Near 86 86 ; First initialize Variable-Area (everything with NUL) 87 87 mov di, offset BeginOfVariables … … 264 264 265 265 MBR_Main_BootThrough: 266 call MBR_Tele Type266 call MBR_Teletype 267 267 xor si,si 268 268 call MBR_TeletypeNL … … 357 357 358 358 359 AFTERCRAP_Main Proc Near Uses359 AFTERCRAP_Main Proc Near 360 360 ; =================================================== 361 361 ; Now get volume label of FloppyDrive, if wanted... -
trunk/BOOTCODE/REGULAR/PARTMAIN.ASM
r38 r40 114 114 call PART_GetPartitionPointer ; Gets SI for partition DL 115 115 mov al, ds:[si+LocIPT_Flags] 116 and al, Flags_Boot Able116 and al, Flags_Bootable 117 117 jnz PFUPN_Found 118 118 dec cl … … 290 290 ; In: DL - Number of partition in filtered view 291 291 ; Out: DL - Number of partition in straight view 292 PART_ConvertToStraight Proc Near Uses292 PART_ConvertToStraight Proc Near 293 293 ;movzx bx, dl 294 294 mov bl,dl ; partition number to bl … … 928 928 929 929 PSP_ForceI13X: 930 push es di si 930 push es 931 push di 932 push si 931 933 932 934 ; Setup ES and FS. … … 952 954 mov wptr es:[di+06], ax 953 955 954 pop si di es 956 pop si 957 pop di 958 pop es 955 959 956 960 … … 1151 1155 jz PSP_NoMBRprotect 1152 1156 ; -------------------------------------------------- INSTALLS MBR-PROTECTION 1153 push ds si ; We need DS:SI later... 1157 ; We need DS:SI later... 1158 push ds 1159 push si 1154 1160 ; First subtract 1024 bytes from Base-Memory... 1155 1161 push ds … … 1195 1201 mov ds:[si+2], dx ; Vector hardcoded at DS:0009 1196 1202 ; MBR-Protection now active :) 1197 pop si ds ; Restore DS:SI 1203 ; Restore DS:SI 1204 pop si 1205 pop ds 1198 1206 1199 1207 … … 1279 1287 mov ax,bx 1280 1288 call VideoIO_PrintHexWord 1289 mov ax,[si+LocIPT_AbsolutePartTable+02] 1290 call VideoIO_PrintHexWord 1291 mov ax,[si+LocIPT_AbsolutePartTable+00] 1292 call VideoIO_PrintHexWord 1293 mov al,[ExtendedAbsPosSet] 1294 call VideoIO_PrintHexByte 1281 1295 popa 1282 1296 … … 1294 1308 1295 1309 ; 1296 ; Update the phys-drive field 1310 ; Update the phys-disk field 1311 ; DI points to PartitionSector 1312 ; BX holds index to phys-disk field 1297 1313 ; 1298 1314 mov al,byte ptr [si+LocIPT_Drive] … … 1667 1683 ;popa 1668 1684 1669 1670 ; About 1.5 seconds 1671 mov al,30 1685 ;~ jmp skip_delay 1686 1687 1688 ; 1689 ; Show "wait dots" 1690 ; 1691 pusha 1692 ; Color white on black 1693 mov ch,7 1694 mov cl,0 1695 call VideoIO_Color 1696 ; Locate cursor for output of debug-info 1697 mov ch,8 1698 mov cl,1 1699 call VideoIO_Locate 1700 1701 ; Print dots with interval. 1702 mov cx,10 1703 print_next_dot: 1704 mov al,'.' 1705 call VideoIO_PrintSingleChar 1706 ; Value 30 is about 1.5 seconds 1707 mov al,1 1672 1708 call TIMER_WaitTicCount 1709 loop print_next_dot 1710 popa 1711 1712 ; 1713 ; Enter here to skip delay. 1714 ; 1715 skip_delay: 1716 1717 1673 1718 1674 1719 ; … … 2077 2122 ; CY = Set if BOOTMGR found, clear if not 2078 2123 ; 2079 PART_IsWinBMGR Proc Near Uses ax bx cx dx si di ds es2080 2081 ; Load specified LBA sector (BX:CX) from the disk in DL2082 mov di,ds2083 mov si,offset [TmpSector]2084 call DriveIO_LoadSectorLBA2085 2086 ; Point to location of 'BOOTMGR' signature.2087 add si,169h2088 2089 ; DL holds equality status2090 xor dl,dl2091 cld2092 2093 ; Load letter into AL, xor with letter will result 0 if the same.2094 ; Then or to DL.2095 ; If at the end of the sequence DL is zero, the signature is present.2096 lodsb2097 xor al,'B'2098 or dl,al2099 lodsb2100 xor al,'O'2101 or dl,al2102 lodsb2103 xor al,'O'2104 or dl,al2105 lodsb2106 xor al,'T'2107 or dl,al2108 lodsb2109 xor al,'M'2110 or dl,al2111 lodsb2112 xor al,'G'2113 or dl,al2114 lodsb2115 xor al,'R'2116 or dl,al2117 2118 ; Assume not present2119 clc2120 jnz PART_IsWinBMGR_exit2121 2122 ; BOOTMGR signature found2123 stc2124 2125 PART_IsWinBMGR_exit:2126 ret2127 PART_IsWinBMGR Endp2124 ;PART_IsWinBMGR Proc Near Uses ax bx cx dx si di ds es 2125 ; 2126 ; ; Load specified LBA sector (BX:CX) from the disk in DL 2127 ; mov di,ds 2128 ; mov si,offset [TmpSector] 2129 ; call DriveIO_LoadSectorLBA 2130 2131 ; ; Point to location of 'BOOTMGR' signature. 2132 ; add si,169h 2133 2134 ; ; DL holds equality status 2135 ; xor dl,dl 2136 ; cld 2137 2138 ; ; Load letter into AL, xor with letter will result 0 if the same. 2139 ; ; Then or to DL. 2140 ; ; If at the end of the sequence DL is zero, the signature is present. 2141 ; lodsb 2142 ; xor al,'B' 2143 ; or dl,al 2144 ; lodsb 2145 ; xor al,'O' 2146 ; or dl,al 2147 ; lodsb 2148 ; xor al,'O' 2149 ; or dl,al 2150 ; lodsb 2151 ; xor al,'T' 2152 ; or dl,al 2153 ; lodsb 2154 ; xor al,'M' 2155 ; or dl,al 2156 ; lodsb 2157 ; xor al,'G' 2158 ; or dl,al 2159 ; lodsb 2160 ; xor al,'R' 2161 ; or dl,al 2162 2163 ; ; Assume not present 2164 ; clc 2165 ; jnz PART_IsWinBMGR_exit 2166 2167 ; ; BOOTMGR signature found 2168 ; stc 2169 2170 ; PART_IsWinBMGR_exit: 2171 ; ret 2172 ;PART_IsWinBMGR Endp 2128 2173 2129 2174 -
trunk/BOOTCODE/REGULAR/PARTSCAN.ASM
r38 r40 28 28 ; here. 29 29 30 PARTSCAN_ScanForPartitions Proc Near Uses30 PARTSCAN_ScanForPartitions Proc Near 31 31 ; Reset X-Reference 32 32 call PARTSCAN_ResetXref … … 120 120 ; Falls eine fehlerhafte Partition gefunden wird, wird abgebrochen. 121 121 ; falls eine Extended Partition (DOS) gefunden wird, wird erneut gescannt. 122 PARTSCAN_ScanDriveForPartitions Proc Near Uses122 PARTSCAN_ScanDriveForPartitions Proc Near 123 123 xor ax, ax 124 124 xor bx, bx ; Location Absoluter Sektor 0 … … 283 283 ; First check, if LVM Information Sector is available and this partition 284 284 ; is supported. 285 push ax dx si di 285 push ax 286 push dx 287 push si 288 push di 286 289 mov si, wptr [PartPtr] 287 290 mov ax, wptr [si+LocBRPT_RelativeBegin] ; Absolute Sector … … 335 338 336 339 PCCTP_NoIbmBm: 337 pop di si dx ax 340 pop di 341 pop si 342 pop dx 343 pop ax 338 344 mov si, offset MBR_NoName_Patched 339 345 xor ah, ah ; no Flags_NoPartName … … 341 347 342 348 PCCTP_CheckBootRecord: 343 pop di si dx ax 349 pop di 350 pop si 351 pop dx 352 pop ax 344 353 test ah, FileSysFlags_NoName ; No-Name-Flag ? -> No Partition Name 345 354 … … 391 400 ; Now compare IPT with current Partition 392 401 mov cx, 15 ; Serial&Name (15-Bytes) 393 push si di 402 push si 403 push di 394 404 repz cmpsb 395 pop di si 405 pop di 406 pop si 396 407 397 408 jne PCCTP_NoMatchYet … … 415 426 ; Now compare IPT with current Partition 416 427 mov cx, 11 ; Name only (11-Bytes) 417 push si di 428 push si 429 push di 418 430 add si, 4 419 431 add di, 4 ; Skip over Serial-Field 420 432 repz cmpsb 421 pop di si 433 pop di 434 pop si 422 435 jne PCCTP_NameNoMatch 423 436 mov cx, [si+0] ; Get Serial … … 488 501 ; Build a standard-Volume Label from FileSystemNamePtr 489 502 ; We have to call SearchFileSysName again because of NTFS 490 push ax cx 503 push ax 504 push cx 491 505 mov al, dh 492 506 call PART_SearchFileSysName ; We want SI here <- FileSystemNamePtr … … 501 515 stosb ; Fill last 3 bytes with "NUL" 502 516 mov si, offset MBR_NoName_Patched 503 pop cx ax 517 pop cx 518 pop ax 504 519 ;======================================================= 505 520 ; LOCATION SEARCH in IPT-Table … … 712 727 rep stosb 713 728 mov di, offset NewHidePartTable ; Temporary Hide-Config Table 714 mov cx, 450 ; Size is 900715 rep stos w; Fill up with FFFFh729 mov cx, LocIPT_MaxPartitions * LocIPT_LenOfIPT 730 rep stosb ; Fill up with FFFFh 716 731 mov di, offset NewDriveLetters 717 mov cx, 15; Temporary Logical-Drive Letter Table718 xor ax, ax ; Size is 30719 rep stos w; Fill up with 0000h732 mov cx, LocIPT_MaxPartitions ; Temporary Logical-Drive Letter Table 733 xor ax, ax 734 rep stosb ; Fill up with 0000h 720 735 ret 721 736 PARTSCAN_ResetXref EndP … … 812 827 PARTSCAN_SyncHideConfigWithXref EndP 813 828 814 ibm_bm_name :db 'OS2 BootMgr',0815 ;win_bm_name: db 'BOOTMGR',0829 ibm_bm_name db 'OS2 BootMgr',0 830 ;win_bm_name: db 'BOOTMGR',0 -
trunk/BOOTCODE/REGULAR/PASSWORD.ASM
r38 r40 142 142 PASSWORD_AskSpecifiedPassword EndP 143 143 144 PasswordSpace :db 16 dup (0) ; Space for Password-Encoding...144 PasswordSpace db 16 dup (0) ; Space for Password-Encoding... 145 145 dw 0BABEh ; All of these 8 bytes are insider 146 146 dw 0FC77h ; jokes. I bet no one will solve -
trunk/BOOTCODE/REGULAR/STD_TEXT.ASM
r38 r40 40 40 ;Copyright db ' AiR-BOOT v1.0.8-internal-beta - ** !! NOT FOR DISTRIBUTION !! **', 0 41 41 ;Copyright db ' AiR-BOOT v1.0.8 - (c) 2012 M. Kiewitz <<Release Candidate>> (build: #18)', 0 42 Copyright db ' AiR-BOOT v1.0.8 - (c) 2012 M. Kiewitz <<Release Candidate 1>> (bld: 20120124)', 0 42 ;Copyright db ' AiR-BOOT v1.0.8 - (c) 2012 M. Kiewitz <<Release Candidate 1>> (bld: 20120124)', 0 43 ;Copyright db ' AiR-BOOT v1.0.8 - (c) 2012 M. Kiewitz <<Release Candidate 2>> (bld: 20120214)', 0 44 Copyright db ' AiR-BOOT v1.0.8 - (c) 2012 M. Kiewitz <<Internal Release 2b>> (bld: 20120215)', 0 43 45 ;Copyright db ' AiR-BOOT v1.0.8 - (c) 1998-2012 M. Kiewitz, Dedicated to Gerd Kiewitz', 0 46 47 ; Message in case the user wants to edit the label of a type 0x35 partition 48 TXT_SETUP_NoEditType35 db 'The label of an LVM-Data partition cannot be edited', 0 49 ; Message in case the user wants to make a type 0x35 partition bootable 50 TXT_SETUP_NoBootType35 db 'An LVM-Data partition cannot be set bootable', 0 44 51 45 52 ; Rousseau: switch around -
trunk/BOOTCODE/REGULAR/VIDEOIO.ASM
r38 r40 24 24 ENDIF 25 25 26 VideoIO_WaitRetrace Proc Near Uses ax dx27 mov dx, 3DAh28 VIOWR_Jump1:29 in al, dx30 test al, 831 jnz VIOWR_Jump132 VIOWR_Jump2:33 in al, dx34 test al, 835 jz VIOWR_Jump236 ret37 VideoIO_WaitRetrace EndP26 VideoIO_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 37 VideoIO_WaitRetrace EndP 38 38 39 39 … … 41 41 ; Holds the current position. Yeah, I know this is in the code area, but who 42 42 ; cares :)) 43 TextPosY db0h44 TextPosX db0h45 TextColorFore db7h46 TextColorBack db0h43 TextPosY db 0h 44 TextPosX db 0h 45 TextColorFore db 7h 46 TextColorBack db 0h 47 47 48 48 ; In: CH - Cursor Column, CL - Cursor Row (Start at 1,1) 49 49 ; Destroyed: None 50 VideoIO_Locate Proc Near Uses cx51 or ch, ch52 jz VIOL_IgnoreY53 dec ch54 mov TextPosY, ch55 VIOL_IgnoreY:56 or cl, cl57 jz VIOL_IgnoreX58 dec cl59 mov TextPosX, cl60 VIOL_IgnoreX:61 ret62 VideoIO_Locate EndP50 VideoIO_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 62 VideoIO_Locate EndP 63 63 64 64 ; In: CH - Cursor Column, CL - Center Cursor Row (Start at 1,1) … … 549 549 cmp ah, Keys_ESC 550 550 je VIOLUES_KeyESC 551 cmp ah, Keys_E nter551 cmp ah, Keys_ENTER 552 552 je VIOLUES_KeyENTER 553 553 cmp ah, Keys_Backspace … … 836 836 837 837 ; Disk Info to Dump to AB LogScreen 838 Disk :db "DISK ",0839 ;BiosCyls :db "Cyls :",0840 BiosHeads :db "Heads :",0841 BiosSecs :db "Secs :",0842 LvmSecs :db "SecsLVM :",0843 BiosLBA :db "LBA Secs:",0844 845 846 HugeBootDisk :db "Boot Disk is Huge : ",0847 DisksFound :db "Disks Found : ",0848 PartitionsFound :db "Partitions Found : ",0849 ;AutoStartPart :db "Auto Start Partition : ",0850 851 Phase1 :db "eCS Install Phase 1 : ",0852 853 854 ShowMenu :db "Press TAB to return to the AiR-BOOT Menu",0855 ;ShowBootLog :db "Press TAB to see the Boot Log...",0856 857 Yes :db "YES",0858 No :db "NO",0859 On :db "ON",0860 Off :db "OFF",0861 None :db "NONE",0862 Active :db "ACTIVE",0863 NotActive :db "NOT ACTIVE",0838 Disk db "DISK ",0 839 ;BiosCyls db "Cyls :",0 840 BiosHeads db "Heads :",0 841 BiosSecs db "Secs :",0 842 LvmSecs db "SecsLVM :",0 843 BiosLBA db "LBA Secs:",0 844 845 846 HugeBootDisk db "Boot Disk is Huge : ",0 847 DisksFound db "Disks Found : ",0 848 PartitionsFound db "Partitions Found : ",0 849 ;AutoStartPart db "Auto Start Partition : ",0 850 851 Phase1 db "eCS Install Phase 1 : ",0 852 853 854 ShowMenu db "Press TAB to return to the AiR-BOOT Menu",0 855 ;ShowBootLog db "Press TAB to see the Boot Log...",0 856 857 Yes db "YES",0 858 No db "NO",0 859 On db "ON",0 860 Off db "OFF",0 861 None db "NONE",0 862 Active db "ACTIVE",0 863 NotActive db "NOT ACTIVE",0 864 864 865 865 ; New Line for use by MBR_Teletype 866 NL :db 0dh, 0ah, 0866 NL db 0dh, 0ah, 0
Note:
See TracChangeset
for help on using the changeset viewer.
