Changeset 31 for trunk/BOOTCODE/AIR-BOOT.ASM
- Timestamp:
- Jan 13, 2013, 8:15:35 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BOOTCODE/AIR-BOOT.ASM
r30 r31 20 20 ; Rousseau: # Fixes # 21 21 ; ------------------- 22 ; 23 ; v1.08 24 ; ----- 25 ; - Fixed driveletter feature which was broken in v1.07. 26 ; - Reworked MBR-code to provide two I13X signatures. 27 ; - Esc from SETUP would save to disk. 28 ; It now retains the changes only for this boot and 29 ; does not write them to disk. 30 ; - Corrected contact links. 31 ; - 32 ; 33 ; v1.07 34 ; ----- 22 35 ; # Huge Drives and LVM # 23 36 ; When using disks >512GB under eComStation, the drive geometry changes to … … 48 61 49 62 50 ;--------------------------------------------------------------------------- 51 ; AiR-BOOT / MAIN-CODE52 ;--------------------------------------------------------------------------- 63 ;------------------------------------------------------------------------------ 64 ; AiR-BOOT / MAIN-CODE 65 ;------------------------------------------------------------------------------ 53 66 ; 54 67 … … 62 75 ; skipping an unconditional jump to the target on base of complementary 63 76 ; condition logic and temporary labels. 64 ; TASM also has a bug in that when the .ERR2 directive is used when the .386 directive 65 ; is in effect, the JUMPS directive is also active and cannot be turned off. 77 ; TASM also has a bug in that when the .ERR2 directive is used when 78 ; the .386 directive is in effect, the JUMPS directive is also active 79 ; and cannot be turned off. 66 80 ; NOJUMPS seems to have no effect in this situation. 67 81 ; In this case 4 NOP instructions are generated after forward referencing jump … … 87 101 ; in the BSS. 88 102 ; 89 MaxDisks equ 16103 MaxDisks equ 64 90 104 91 105 ; … … 94 108 AuxDebug equ 1 95 109 96 97 BiosComPort equ 0 ; Com-port for debugging, 0 is disabled 98 99 ; bits 7-5 = datarate (000=110,001=150,010=300,011=600,100=1200,101=2400,110=4800,111=9600 bps) 100 ; bits 4-3 = parity (00 or 10 = none, 01 = odd, 11 = even) 101 ; bit 2 = stop-bits (set = 2 stop-bits, clear = 1 stop-bit) 102 ; bits 1-0 = data-bits (00 = 5, 01 = 6, 10 = 7, 11 = 8) 103 AuxInitParms equ 11100011b ; 9600 bps, no parity, 1 stop-bit, 8 bits per char 104 105 BIOS_AuxParmsDefault equ (AuxInitParms SHL 8) OR BiosComPort ; Default word value for offset 77FEh (BIOS_AuxParms) 110 ; Com-port for debugging, 0 is disabled 111 BiosComPort equ 0 112 113 114 ; 115 ; bits 7-5 = datarate 116 ; (000=110,001=150,010=300,011=600,100=1200,101=2400,110=4800,111=9600 bps) 117 ; bits 4-3 = parity 118 ; (00 or 10 = none, 01 = odd, 11 = even) 119 ; bit 2 = stop-bits 120 ; (set = 2 stop-bits, clear = 1 stop-bit) 121 ; bits 1-0 = data-bits 122 ; (00 = 5, 01 = 6, 10 = 7, 11 = 8) 123 ; 124 125 ; 9600 bps, no parity, 1 stop-bit, 8 bits per char 126 AuxInitParms equ 11100011b 127 128 ; Default word value for BIOS_AuxParms variable 129 ; Note that is has moved since v1.07 130 BIOS_AuxParmsDefault equ (AuxInitParms SHL 8) OR BiosComPort 131 106 132 ; 107 133 ; If ReleaseCode is not defined, it will produce debug-able code... 108 134 ; 109 ReleaseCode equ -1 ; Rousseau: this should be replaced110 ; by the complementary debug logic some day. 111 ; Then instead of being on or off it would be 112 ; more handy to use positive integers with each 113 ; higher number increasing the debug functionality. 135 ReleaseCode equ -1 136 137 138 139 114 140 115 141 ; … … 117 143 ; 118 144 119 ; Use different addresses depending on whether in pre-boot or debug environment. 145 ; Use different addresses depending on whether in pre-boot 146 ; or debug environment. 120 147 IFDEF ReleaseCode 121 StartBaseSeg equ 00000h ; Pre-boot, sowe are in low memory148 StartBaseSeg equ 00000h ; Pre-boot, we are in low memory 122 149 StartBasePtr equ 07C00h ; BIOS starts our MBR at 0:7C00 123 150 ELSE 124 StartBaseSeg equ 03A98h ; Adjust to DOS segment ; Rousseau: where does this value come from ? (should be CS; rectified in actual code by ignoring this value) 125 StartBasePtr equ 00100h ; We are a .com file, some DOS is active 151 StartBaseSeg equ 03A98h ; Adjust to DOS segment 152 ; Rousseau: where does this value 153 ; come from ? 154 ; Should be CS; 155 ; Rectified in actual code by 156 ; ignoring this value. 157 StartBasePtr equ 00100h ; We are a .com file,DOS is active 126 158 ENDIF 127 159 128 160 ; Address labels after code-move 129 BootBaseSeg equ 8000h ; Pre-boot, somewherein the low 640K161 BootBaseSeg equ 08000h ; Pre-boot, in the low 640K 130 162 BootBasePtr equ 0h ; We put our MBR to this location 131 BootBaseExec equ BootBasePtr+offset MBR_RealStart132 StackSeg equ 163 BootBaseExec equ BootBasePtr+offset MBR_RealStart 164 StackSeg equ 07000h ; Put the stack below the code 133 165 134 166 ; Video pages, no INT 10h is used for menu-drawing etc. … … 154 186 155 187 ; Offsets for Partition-Entries in MBR/EPRs 156 LocBRPT_LenOfEntry equ 16 157 LocBRPT_Flags equ 0 158 LocBRPT_BeginCHS equ 1 159 LocBRPT_BeginHead equ 1 160 LocBRPT_BeginSector equ 2 161 LocBRPT_BeginCylinder equ 3 162 LocBRPT_SystemID equ 4 163 LocBRPT_EndCHS equ 5 188 LocBRPT_LenOfEntry equ 16 ; Length of a standard MBR or EPR entry 189 LocBRPT_Flags equ 0 ; Bootable, Hidden, etc. 190 LocBRPT_BeginCHS equ 1 ; Combined 10-bits cyl with 6 bits 191 LocBRPT_BeginHead equ 1 ; Start head (0<=H<255) 255 is invalid ! 192 LocBRPT_BeginSector equ 2 ; Start sector (1<=S<=255) 193 LocBRPT_BeginCylinder equ 3 ; Start cylinder (0<=C<[1024,16384,65536,n]) 194 LocBRPT_SystemID equ 4 ; Type of system using the partition 195 LocBRPT_EndCHS equ 5 ; Same for end of partition 164 196 LocBRPT_EndHead equ 5 165 197 LocBRPT_EndSector equ 6 166 198 LocBRPT_EndCylinder equ 7 167 LocBRPT_RelativeBegin equ 8 ; Where the ...168 LocBRPT_AbsoluteLength equ 12 ; ?169 170 LocBR_Magic equ 510 ; ?199 LocBRPT_RelativeBegin equ 8 200 LocBRPT_AbsoluteLength equ 12 201 202 LocBR_Magic equ 510 171 203 172 204 ; Offsets for LVM Information Sector … … 181 213 LocLVM_PartitionSize equ 8 ; is DWORD 182 214 LocLVM_PartitionStart equ 12 ; is DWORD 183 LocLVM_VolumeLetter equ 18 ; is BYTE (Letter C-Z or 0) (relative to entry) 215 LocLVM_VolumeLetter equ 18 ; is BYTE (Letter C-Z or 0) 216 ; (relative to entry) 184 217 185 218 ; Rousseau: added (index in LVM-sector) 186 LocLVM_Secs equ 20h ; Sectors per Track ; Rousseau: this one is used for the OS/2 extended geometry219 LocLVM_Secs equ 20h ; Sectors per Track (OS/2 ext-geo) 187 220 LocLVM_Heads equ 1ch ; Number of heads 188 221 LocLVM_VolumeLetter2 equ 78 ; is BYTE (Letter C-Z or 0) ; FOUT !! niet entry relative ! … … 190 223 LocLVM_OnBootMenu equ 76 ; is on bootmenu ; FOUT !! niet entry relative ! 191 224 225 ; Truncated to 11 chars when displayed in menu 192 226 LocLVM_VolumeName equ 20 ; 20 bytes 193 LocLVM_PartitionName equ 40 ; 20 bytes 227 LocLVM_PartitionName equ 40 ; 20 bytes (Used in menu) 194 228 195 229 … … 197 231 198 232 ; Offsets for IPT (Internal Partition Table) 199 LocIPT_MaxPartitions equ partition_count ; Maximum LocIPT_MaxPartitions233 LocIPT_MaxPartitions equ partition_count ; 45 in v1.07 200 234 LocIPT_LenOfSizeElement equ 6 ; Size of one Size-Element 201 235 LocIPT_LenOfIPT equ 34 ; Length of an IPT-entry 202 236 LocIPT_Serial equ 0 ; Serial from MBR ? 203 LocIPT_Name equ 4 ; Name from FS or LVM 204 LocIPT_Drive equ 15 ; Drive-ID (80h,81h etc. sub 7fh to get 1-based disk-number)205 LocIPT_SystemID equ 16 ; Partition-Type 237 LocIPT_Name equ 4 ; Name from FS or LVM (part/vol) 238 LocIPT_Drive equ 15 ; Drive-ID (80h,81h) 239 LocIPT_SystemID equ 16 ; Partition-Type (06,07,etc) 206 240 LocIPT_Flags equ 17 ; AiR-BOOT Flags for partition (see below) 207 241 LocIPT_BootRecordCRC equ 18 ; CRC of Boot-Record … … 278 312 279 313 280 ;============================================================================== =281 ; Sector 1314 ;============================================================================== 315 ; Sector 1 282 316 283 317 … … 306 340 307 341 308 ;--------------------------------------------------------------------------- 342 ;------------------------------------------------------------------------------ 309 343 AiR_BOOT: cli ; Some M$ operating systems need a CLI 310 ; here otherwise they will go beserk ; Rousseau: M$ osses are beserk by definition.344 ; here otherwise they will go beserk 311 345 ; and will do funny things during 312 346 ; boot phase, it's laughable! 313 db 0EBh ; JMP-Short -> MBR_Start ; Rousseau: uses the 'A' as the displacement ! 314 db 'AiRBOOT', 13h, 03h, 20h, 06h, 01h, 07h, TXT_LanguageID ; Rousseau: version adjusted to v1.07 347 db 0EBh ; JMP-Short -> MBR_Start 348 ; Uses the 'A' as the displacement ! 349 db 'AiRBOOT', 07h, 11h, 20h, 11h, 01h, 08h, TXT_LanguageID 315 350 316 351 ; ID String, Date and Version Number, U for US version 317 352 db 1 ; Total Sectors Count, 318 ; 353 ; Will get overwritten by FIXBSET.exe 319 354 MBR_CheckCode dw 0 ; Check-Sum for Code 320 355 321 356 ; 322 ; This label is jumped to from the jump after 'eCSRocks'.323 357 ; No single instruction below should be changed, added or removed in the code 324 358 ; below as this will cause the jump-link to go haywire. 359 ; 325 360 MBR_Start: sti ; This opcode is dedicated to: 326 361 cld ; =MICROSOFT JUMP DEPARTMENT= … … 329 364 ; AX got loaded wrongly for debug, changed the instructions 330 365 ; without modifying the number of bytes. 331 ; Don't comment-out the redundant instruction below because this *will*332 ; change the number of bytes and break the jump-chain.366 ; Don't comment-out the redundant instruction below because this 367 ; *will* change the number of bytes and break the jump-chain. 333 368 mov ax, StartBaseSeg ; The segment we are moving ourself from (NOT USED) 334 369 ;mov ds, ax … … 345 380 mov cx, 256 ; Pre-boot environment 346 381 ELSE 347 mov cx, 32700 ; Debug environment ; Rousseau: where does 32700 come from ? (30720)382 mov cx, 32700 ; Debug environment (move ~64kB) 348 383 ENDIF 349 384 … … 353 388 rep movsw 354 389 355 ; Code a jump to the390 ; Code an intersegment jump to the new location 356 391 db 0EAh 357 392 dw BootBaseExec ; This is MBR_RealStart + BootBasePtr … … 375 410 jmp MBR_HaltSys 376 411 377 ; 378 ; Never let this part change it's offset, 379 ; or the first MBR jump will go haywire. 380 ; 381 382 ; db 'FUCKMS:>' ; Sorry Martin, we had to change this. 383 db 'eCSRocks' ; Hope you like this one too :-) 384 jmp MBR_Start ; We jump here, because I needed to 385 ; insert a CLI on start and did not 386 ; want to change AiR-BOOT detection 387 ; because of Microsoft inventions... 412 413 414 ; Comport settings 415 ; It had to be moved to create room for the double I13X 416 ; signature. 417 ; It cannot be in the config-area (sector 55) 418 ; because that area 419 ; is crc-protected. 420 BIOS_AuxParms dw BIOS_AuxParmsDefault 421 422 ; 423 ; Reserved space 424 ; Should check overflow here, later... 425 ; 426 reserved db 6 dup(0) 427 428 429 ; 430 ; We jump here after the first instructions of the 431 ; AiR-BOOT signature. 432 ; So we ensure the jump is always at this offset. 433 org 044h 434 jmp MBR_Start ; We jump here, because I needed to 435 ; insert a CLI on start and did not 436 ; want to change AiR-BOOT detection 437 ; because of Microsoft inventions... 388 438 ; 389 439 ; Entry-point when loading fails. … … 461 511 ; 462 512 463 ;--------------------------------------------------------------------------- 513 ;------------------------------------------------------------------------------ 464 514 MBR_RealStart: 465 515 mov ax, StackSeg ; 07000h, below the moved code 466 516 mov ss, ax 467 ;mov sp, 7FFFh 468 mov sp, 7FFEh ; Safe value, could also be 8000h because SP is decremented by 2 before push469 mov ax, es ; ES holds segment where we moved ourself to.517 ;mov sp, 7FFFh ; Odd stack-pointer ?? 518 mov sp, 7FFEh ; Even is better 519 mov ax, es ; ES holds segment where we moved to 470 520 mov ds, ax ; Set DS==ES to Code Segment 471 521 472 522 ; If we are in debug-mode, all code is moved already, 473 523 ; so we can directly jump to it. 474 ; One difference is that in debug-mode, the whole .com image is loaded by dos while 475 ; when air-boot is active from the MBR it does the loading itself. 476 ; When active from the MBR air-boot does not load all sectors ! 477 ; This means that i.e. a value stored at 77E0h is present in the debug-version because the whole 478 ; image is loaded, but is not present in running-mode because this sector is not loaded. 524 ; One difference is that in debug-mode, the whole .com image is 525 ; loaded by dos while when air-boot is active from the MBR it 526 ; does the loading itself. 479 527 IFNDEF ReleaseCode 480 528 jmp AiR_BOOT_Start … … 483 531 484 532 ; Load missing parts from harddrive... 485 mov ax, cs ; actually obsolete486 mov es, ax ; actually obsolete533 ; mov ax, cs ; actually obsolete 534 ; mov es, ax ; actually obsolete 487 535 488 536 ; Load the configuration-sectors from disk. … … 491 539 mov cx, 0037h ; Is 55d is config-sector 492 540 493 494 495 IF image_size EQ image_size_60secs 496 mov ax, 0205h ; Read 5 sectors (55 - 59) 497 ELSE 498 mov ax, 0207h ; Read 7 sectors (55 - 61) 499 ENDIF 500 501 int 13h 541 ; Call the i/o-part 542 call MBR_LoadConfig 543 502 544 jnc MBR_ConfigCopy_NoError 503 545 … … 513 555 mov ah, 02h 514 556 515 mov al, ds:[10h] ; 34h = 52d sectors (35h in extended version)557 mov al, ds:[10h] ; Number of code sectors 516 558 int 13h 517 559 jnc MBR_RealStart_NoError 518 560 jmp MBR_ConfigCopy_LoadError 561 562 563 519 564 ; [v1.05+] 520 565 ; Signature for IBM's LVM to detect our "powerful" features ;) 521 db 'I13X' 566 ; [v1.08+] 567 ; Reworked MBR code to be able to create a double 'I13X' signature. 568 ; MBR's created with LVM eCS v1.x have the signature at 0d5h 569 ; MBR's created with LVM eCS v2.x have the signature at 0d0h 570 ; See eCS bugtracker issue #3002 571 db 0,'I13X',0,'I13X' 572 573 522 574 MBR_RealStart_NoError: 523 575 ; Now Check Code with CheckSum … … 532 584 call MBR_GetCheckOfSector 533 585 loop MBR_RealStart_CheckCodeLoop 586 587 534 588 cmp MBR_CheckCode, bx 535 589 je MBR_RealStart_CheckSuccess 590 536 591 mov si, offset TXT_ERROR_Attention 537 592 call MBR_Teletype … … 547 602 548 603 549 ;--------------------------------------------------------------------------- 550 Include TEXT\TXTMBR.asm ; All translateable Text in MBR 551 ;--------------------------------------------------------------------------- 552 553 554 555 ; Comport settings 556 ; DO NOT MOVE THIS VARIABLE !! 557 ; It cannot be in the config-area (sector 55) because that area 558 ; is crc-protected. 559 org 001B0h 560 BIOS_AuxParms dw BIOS_AuxParmsDefault ; Initialized at start when developing 604 605 ;------------------------------------------------------------------------------ 606 Include TEXT\TXTMBR.asm ; All translateable Text in MBR 607 ;------------------------------------------------------------------------------ 608 609 eot: 610 611 ; Check for overlap 612 slack00 = eos1 - eot 613 IF slack00 LT 0 614 .ERR2 "Location Overlap slack00 !" 615 ENDIF 616 617 618 ; bios aux 619 620 eos1: 621 622 ; This is an ugly kludge function to create space for the 623 ; double 'I13X' signature. 624 ; It loads the configuration sectors, but bx,cx and dx are not initialized 625 ; in this function. That's done around line 500. 626 ; Putting this few bytes here creates just enough room. 627 ; The size of this function should grow. 628 MBR_LoadConfig Proc Near 629 ; Changed from conditional assembler to calculated 630 ; Fixes issue: #2987 -- "air-boot doesn't remember drive letter" 631 mov ax, (MBR_BackUpMBR - Configuration) / 2 ; sizeof(ab-configuration) to write 632 ; TASM does not evaluate expression above corrrectly. 633 ; Listing shows correct opcode but generated opcode has imm. word byteswapped. 634 ; Casting to byte also does not work (overflow). 635 ; So we swap back here -- must be removed in JWasm version !! 636 xchg ah,al 637 mov ah,02h 638 639 int 13h 640 ret 641 MBR_LoadConfig EndP 642 643 org 001B8h 644 db 'DSIG' 645 646 dw '$$' 561 647 562 648 org 00200h 563 649 ; End of sector 1 564 eos1 :650 eos1a: 565 651 566 652 ; Check for overlap 567 slack01 = sos2 - eos1 653 slack01 = sos2 - eos1a 568 654 IF slack01 LT 0 569 655 .ERR2 "Location Overlap slack01 !" … … 571 657 572 658 573 ;============================================================================== =574 ; Sector 2659 ;============================================================================== 660 ; Sector 2 575 661 576 662 ; … … 581 667 sos2: 582 668 583 584 ; Everything beyond this point is loaded on startup and is NOT existant at first 669 ; 670 ; Everything beyond this point is loaded on startup 671 ; and is NOT existant at first 672 ; 585 673 FurtherMoreLoad: 586 674 … … 637 725 638 726 639 ;============================================================================== =640 ; Sector 3727 ;============================================================================== 728 ; Sector 3 641 729 org 00400h 642 730 ; Start of sector 3. … … 736 824 ;inc al 737 825 ;mov [Menu_EntryAutomatic],al 738 mov [CFG_PartAutomatic],al ; Rousseau: setup entry for install-volume826 mov [CFG_PartAutomatic],al ; Setup entry for install-volume 739 827 mov [CFG_PartLast],al 740 828 mov ah, [eCS_InstallVolume] ; 1st byte is 0 if no phase 1 active … … 824 912 825 913 ; 826 ; ####################### #### WAIT FOR KEY ################################914 ; ####################### WAIT FOR KEY ######################### 827 915 ; 828 916 … … 851 939 call AuxIO_TeletypeNL 852 940 941 942 ; Save configuration so phase1 boot-through is disabled 943 ; on next boot. 944 ; Moved here to fix that Esc out of SETUP would also save. 945 ; So moved above the MBR_Main_ReEnterSetup label. 946 call DriveIO_SaveConfiguration 947 948 949 853 950 ; 854 951 ; RE-ENTER SETUP 855 952 ; 856 MBR_Main_ReEnterSetup: ; Rousseau: SETUP re-enters here !953 MBR_Main_ReEnterSetup: 857 954 call SETUP_CheckEnterSETUP 858 955 859 956 ;call SOUND_Beep 860 957 861 862 863 864 ; Rousseau: Prematurely save configuration 865 call DriveIO_SaveConfiguration ; Rousseau: added SAVE CONFIG 866 867 868 call AFTERCRAP_Main ; Rousseau: Every time I see "AfterCrap" I have to laugh :-) 958 ; Rousseau: Every time I see "AfterCrap" I have to laugh :-) 959 call AFTERCRAP_Main 869 960 870 961 ; [Linux support removed since v1.02] … … 906 997 mov al, Menu_EntryAutomatic 907 998 908 ;mov al, 2 ; Rousseau: 0-based909 910 mov Menu_EntrySelected, al 911 jmp MBR_Main_NoBootMenu ; Rousseau: NO-BOOT-MENU999 ;mov al, 2 1000 1001 mov Menu_EntrySelected, al ; zero based 1002 jmp MBR_Main_NoBootMenu 912 1003 913 1004 MBR_Main_NoAutomaticBooting: … … 921 1012 call PASSWORD_AskSystemPwd 922 1013 923 ;call VideoIO_DBG_WriteString2 ; Rousseau1014 ;call VideoIO_DBG_WriteString2 924 1015 925 1016 mov al, Menu_EntryDefault 926 ;mov al,0 ; Rousseau: 0-based1017 ;mov al,0 ; zero based 927 1018 mov Menu_EntrySelected, al 928 1019 jmp MBR_Main_NoBootMenu … … 951 1042 ;call SOUND_Beep 952 1043 953 ; ------------------------------------------------- BOOTING...1044 ; ---------------------------------------------------- BOOTING 954 1045 MBR_Main_NoBootMenu: 955 1046 call FX_StartScreen … … 970 1061 call ANTIVIR_SaveBackUpMBR 971 1062 mov dl, Menu_EntrySelected 972 call PART_StartPartition ; Rousseau: START PARTITION 1063 1064 ; -------------------------------------------- START PARTITION 1065 call PART_StartPartition 973 1066 974 1067 … … 980 1073 ; 981 1074 b_std_txt: 982 Include REGULAR\STD_TEXT.asm 1075 Include REGULAR\STD_TEXT.asm ; Standard (non-translateable text) 983 1076 size_std_txt = $-b_std_txt 984 1077 985 1078 b_driveio: 986 Include REGULAR\DRIVEIO.asm 1079 Include REGULAR\DRIVEIO.asm ; Drive I/O, Config Load/Save 987 1080 size_driveio = $-b_driveio 988 1081 989 1082 b_videoio: 990 Include REGULAR\ViDEOIO.asm 1083 Include REGULAR\ViDEOIO.asm ; Video I/O 991 1084 size_videoio = $-b_videoio 992 1085 993 1086 b_timer: 994 Include REGULAR\TIMER.asm 1087 Include REGULAR\TIMER.asm ; Timer 995 1088 size_timer = $-b_timer 996 1089 997 1090 b_partmain: 998 Include REGULAR\PARTMAIN.asm 1091 Include REGULAR\PARTMAIN.asm ; Regular Partition Routines 999 1092 size_partmain = $-b_partmain 1000 1093 1001 1094 b_partscan: 1002 Include REGULAR\PARTSCAN.asm 1095 Include REGULAR\PARTSCAN.asm ; Partition Scanning 1003 1096 size_partscan = $-b_partscan 1004 1097 1005 1098 b_bootmenu: 1006 Include REGULAR\BOOTMENU.asm 1099 Include REGULAR\BOOTMENU.asm ; Boot-Menu 1007 1100 size_bootmenu = $-b_bootmenu 1008 1101 1009 1102 b_password: 1010 Include REGULAR\PASSWORD.asm 1103 Include REGULAR\PASSWORD.asm ; Password related 1011 1104 size_password = $-b_password 1012 1105 1013 1106 b_other: 1014 Include REGULAR\OTHER.asm 1107 Include REGULAR\OTHER.asm ; Other Routines 1015 1108 size_other = $-b_other 1016 1109 1017 1110 ; Rousseau: Special modules moved upwards. 1018 1111 b_main: 1019 Include SETUP\MAiN.ASM 1112 Include SETUP\MAiN.ASM ; The whole AiR-BOOT SETUP 1020 1113 size_main = $-b_main 1021 1114 … … 1023 1116 IFDEF TXT_IncludeCyrillic 1024 1117 b_ccharset: 1025 Include SPECiAL\CHARSET.asm 1118 Include SPECiAL\CHARSET.asm ; Charset Support (e.g. Cyrillic) 1026 1119 size_ccharset = $-b_ccharset 1027 1120 ENDIF 1028 1121 1029 1122 b_math: 1030 Include REGULAR\MATH.ASM 1123 Include REGULAR\MATH.ASM ; Math functions (like 32-bit multiply) 1031 1124 size_math = $-b_math 1032 1125 1033 1126 b_conv: 1034 Include REGULAR\CONV.ASM 1127 Include REGULAR\CONV.ASM ; Various conversion routines 1035 1128 size_conv = $-b_conv 1036 1129 1037 1130 IFDEF AuxDebug 1038 1131 b_debug: 1039 Include REGULAR\DEBUG.ASM ; Various debugging routines, uses AUXIO and CONV 1132 Include REGULAR\DEBUG.ASM ; Various debugging routines, 1133 ; uses AUXIO and CONV 1040 1134 size_debug = $-b_debug 1041 1135 ENDIF 1042 1136 1043 1137 b_auxio: 1044 Include REGULAR\AUXIO.ASM 1138 Include REGULAR\AUXIO.ASM ; Com-port support for debugging 1045 1139 size_auxio = $-b_auxio 1046 1140 … … 1061 1155 1062 1156 1063 ;============================================================================== =1157 ;============================================================================== 1064 1158 1065 1159 ; … … 1093 1187 1094 1188 1095 ;============================================================================== =1096 1189 ;============================================================================== 1190 ; Sector 38-x 1097 1191 ; 1098 1192 ; This section contains translatable texts. … … 1173 1267 1174 1268 1175 ;============================================================================== =1176 ; Sector 551269 ;============================================================================== 1270 ; Sector 55 1177 1271 1178 1272 ; … … 1187 1281 1188 1282 1189 Configuration: 1190 db 'AiRCFG-TABLE' ; Rousseau: THERE IS AN INVISIBLE CHAR HERE !!1283 Configuration: ; THERE IS AN INVISIBLE CHAR HERE !! 1284 db 'AiRCFG-TABLE' 1191 1285 db 01h, 07h, 'U' ; "Compressed" ID String 1192 ; This is now version 1.07 to have it in sync with the new code version for eCS. 1193 ; Version 1.02 was for code 1.06, 1.03 was internal and 1.04,1.05 and 1.06 do not exist. 1194 ; It is not required for the config to have the same version as the code, so in the future 1195 ; the code version might be higher than the config version if there are no changes to the latter. 1286 ; This is now version 1.07 to have it in sync with 1287 ; the new code version for eCS. 1288 ; Version 1.02 was for code 1.06, 1.03 was internal 1289 ; and 1.04,1.05 and 1.06 do not exist. 1290 ; It is not required for the config to have the 1291 ; same version as the code, so in the future 1292 ; the code version might be higher than the 1293 ; config version if there are no changes to the latter. 1196 1294 1197 1295 CFG_LastTimeEditLow dw 0 ; Last Time Edited Stamp (will incr every setup) … … 1205 1303 1206 1304 CFG_PartLast db 0 ; Which Partition was booted last time ? (Base=0) 1207 CFG_TimedBoot db 1; Timed Boot Enable (for REAL Enable look TimedBootEnable)1305 CFG_TimedBoot db 0 ; Timed Boot Enable (for REAL Enable look TimedBootEnable) 1208 1306 CFG_TimedSecs db 15 ; Timed Boot - How Many Seconds Till Boot 1209 1307 CFG_TimedDelay dw 123 ; Timed Boot - Delay … … 1221 1319 CFG_IgnoreWriteToMBR db 0 ; Just ignore writes to MBR, otherwise crash 1222 1320 CFG_FloppyBootGetName db 0 ; Gets floppy name for display purposes 1223 CFG_DetectVirus db 0 ; Detect Virus ? // Rousseau: disabled1224 CFG_DetectStealth db 0 ; Detect Stealth-Virus ? // Rousseau: disabled1225 CFG_DetectVIBR db 0 ; Detect BootRecord-Virus ? // Rousseau: disabled1226 CFG_AutoEnterSetup db 0 ; Automatic Enter Setup (first install!) // Rousseau: disabled1321 CFG_DetectVirus db 0 ; Detect Virus ? 1322 CFG_DetectStealth db 0 ; Detect Stealth-Virus ? 1323 CFG_DetectVIBR db 0 ; Detect BootRecord-Virus ? 1324 CFG_AutoEnterSetup db 0 ; Automatic Enter Setup (first install!) 1227 1325 CFG_MasterPassword dw 0101Fh ; Encoded Password (this is just CR) 1228 1326 dw 07A53h … … 1255 1353 CFG_AutomaticBoot db 0 ; Automatic Booting (only one bootup) 1256 1354 CFG_PartAutomatic db 0 ; Partition-No for automatic booting 1257 CFG_ForceLBAUsage db 1 ; LBA-BIOS-API forced on any HDD I/O // Rousseau: enabled config (LBA)1355 CFG_ForceLBAUsage db 1 ; LBA-BIOS-API forced on any HDD I/O 1258 1356 CFG_IgnoreLVM db 0 ; Ignores any LVM-Information 1259 1357 … … 1279 1377 soiv: 1280 1378 1281 ; Rousseau: added 1282 ;eCS_InstallVolume db 12 dup (0) ; Rousseau: new install-volume 1283 ;eCS_InstallVolume db 'HIGHLOG' ,0 ; Rousseau: new install-volume 1284 eCS_InstallVolume db 0,'NOPHASEONE' ,0 ; Rousseau: new install-volume 1285 ;eCS_InstallVolume db 'ECS-MIDDLE',0,0 ; Rousseau: new install-volume 1286 ;eCS_InstallVolume db 'ECS-HIGH',0,0,0,0 ; Rousseau: new install-volume 1287 ;eCS_InstallVolume db 'ECS-HIGH',0,'NO',0 ; Rousseau: new install-volume 1379 ; SET(A)BOOT stores the volume name of the eCS system being installed here. 1380 ; It is truncated to 11 chars because AiR-BOOT currently does not support 1381 ; longer labelnames. The name is also capitalized. 1382 ;eCS_InstallVolume db 12 dup (0) 1383 ;eCS_InstallVolume db 'HIGHLOG' ,0 1384 eCS_InstallVolume db 0,'NOPHASEONE' ,0 1385 ;eCS_InstallVolume db 'ECS-MIDDLE',0,0 1386 ;eCS_InstallVolume db 'ECS-HIGH',0,0,0,0 1387 ;eCS_InstallVolume db 'ECS-HIGH',0,'NO',0 1288 1388 1289 1389 … … 1349 1449 db 0, 1, 0 ; Location of Partition/Boot Record 1350 1450 dd 0, 0 1351 ;--------------------------------------------------------------------------- 1451 ;------------------------------------------------------------------------------ 1352 1452 1353 1453 eosvs: … … 1360 1460 1361 1461 1362 ;org 06E00h 1462 ;org 06E00h ; Sector 56-57 1363 1463 org image_size - 0a00h - (image_size - image_size_60secs) 1364 1464 sos56: … … 1416 1516 ENDIF 1417 1517 1418 ;--------------------------------------------------------------------------- 1419 ;org 07200h ; Sector 581420 org image_size - 600h - (image_size - image_size_60secs) / 2 ; Sector 581518 ;------------------------------------------------------------------------------ 1519 ;org 07200h ; Sector 58 1520 org image_size - 600h - (image_size - image_size_60secs) / 2 1421 1521 soipt: 1422 1522 sos58: … … 1461 1561 1462 1562 1463 ;--------------------------------------------------------------------------- 1464 ;org 07600h ; Sector 601465 org image_size - 200h ; Sector 601563 ;------------------------------------------------------------------------------ 1564 ;org 07600h ; Sector 60 1565 org image_size - 200h ; Sector 60 1466 1566 sohid: 1467 1567 sos60: 1568 1468 1569 MBR_BackUpMBR db 'AiR-BOOT MBR-BackUp - Just to fill this sector with something',0 1469 1570 AirBootRocks db 'AiR-BOOT Rocks!',0 … … 1482 1583 org image_size - 2 1483 1584 dw 0BABEh 1484 ;dw 01485 ;BIOS_AuxParms dw BIOS_AuxParmsDefault ; Initialized at start when developing1486 1585 1487 1586 eoab: 1488 1587 1489 1588 ; 1490 ; Rousseau:1491 1589 ; End of AiR-BOOT code and data. 1492 1590 ; … … 1494 1592 1495 1593 ; 1496 ; Rousseau:1497 1594 ; Below functions like a BSS segment, thus uninitialized data. 1498 1595 ; 1499 1596 sobss: 1500 ;--------------------------------------------------------------------------- 1501 org 0A000h 1597 ;------------------------------------------------------------------------------ 1598 org 0A000h ; Uninitialized 1502 1599 ; This space actually gets initialized in PreCrap to NUL (till EndOfVariables) 1503 1600 BeginOfVariables: … … 1507 1604 1508 1605 ; Everything used to build a new IPT and reference it to the old one 1509 NewPartTable: db 1536 dup (?) ; New Partition Table1606 NewPartTable: db 1536 dup (?) ; New Partition Table 1510 1607 NewHidePartTable: db partition_count * 30 dup (?) ; New Hide-Partition Table 1511 NewDriveLetters: db partition_count dup (?) ; Logical Drive-Letters1608 NewDriveLetters: db partition_count dup (?) ; Logical Drive-Letters 1512 1609 1513 1610 PartitionSizeTable: db partition_count * 6 dup (?) ; Size-Table (6 bytes per partition) 1514 PartitionPointers dw 52 dup (?) ; Maximum is 52 entries till now1515 PartitionPointerCount db ? ; Count of total Partition Pointers1611 PartitionPointers dw 52 dup (?) ; Maximum is 52 entries till now 1612 PartitionPointerCount db ? ; Count of total Partition Pointers 1516 1613 PartitionXref db partition_count dup (?) ; X-Reference Table 1517 1614 PartitionVolumeLetters db partition_count dup (?) ; Volume-Letters 1518 ; 0 - no LVM support 1519 ; 1 - LVM support, but no letter 1520 ; 'C'-'Z' - assigned drive letter 1521 1522 TotalHarddiscs db ? ; Total harddrives (by POST) 1523 LBASwitchTable db 128 dup (?) ; Bit 25-18 for CHS/LBA Switching 1524 NewPartitions db ? ; Freshly found partitions ; Independent of SaveConfiguration 1525 1526 VideoIO_Segment dw ? ; Segment for Video I/O 1527 1528 ExtendedAbsPos dd ? ; Extended Partition Absolute Position 1529 ExtendedAbsPosSet db ? ; If Absolute Position set 1530 1531 CurPartition_Location dw 4 dup (?) ; Where did current partition came from? 1532 CurIO_UseExtension db ? ; 1-Use INT 13h EXTENSIONS 1533 ; (filled out by PreCrap) 1534 CurIO_Scanning db ? ; 1-AiR-BOOT is scanning partitions 1535 ; (for detailed error message) 1615 ; 0 - no LVM support 1616 ; 1 - LVM support, but no letter 1617 ; 'C'-'Z' - assigned drive letter 1618 1619 TotalHarddiscs db ? ; Total harddrives (by POST) 1620 LBASwitchTable db 128 dup (?) ; Bit 25-18 for CHS/LBA Switching 1621 NewPartitions db ? ; Freshly found partitions 1622 ; Independent of SaveConfiguration 1623 1624 VideoIO_Segment dw ? ; Segment for Video I/O 1625 1626 ExtendedAbsPos dd ? ; Extended Partition Absolute Position 1627 ExtendedAbsPosSet db ? ; If Absolute Position set 1628 1629 CurPartition_Location dw 4 dup (?) ; Where did current partition came from? 1630 CurIO_UseExtension db ? ; 1-Use INT 13h EXTENSIONS 1631 ; (filled out by PreCrap) 1632 CurIO_Scanning db ? ; 1-AiR-BOOT is scanning partitions 1633 ; (for detailed error message) 1536 1634 1537 1635 ; [Linux support removed since v1.02] … … 1651 1749 ;db 1 dup(?) 1652 1750 1653 i13xbuf dw 1 dup (?) ; Size of the buffer; this param *must* be present. Code inserts it. 1751 i13xbuf dw 1 dup (?) ; Size of the buffer; 1752 ; this param *must* be present. 1753 ; Code inserts it. 1654 1754 db 126 dup(?) ; The buffer itself. 1655 i13xbuf_size = $-offset i13xbuf-2 ; Size of buffer (excluding the size word at the start). 1755 i13xbuf_size = $-offset i13xbuf-2 ; Size of buffer 1756 ; (excluding the size word at the start). 1656 1757 1657 1758 eobss:
Note:
See TracChangeset
for help on using the changeset viewer.