[ros-diffs] [tkreuzer] 53928: [EXT2] Convert comments to preprocessor format

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Sun Oct 2 15:33:40 UTC 2011


Author: tkreuzer
Date: Sun Oct  2 15:33:39 2011
New Revision: 53928

URL: http://svn.reactos.org/svn/reactos?rev=53928&view=rev
Log:
[EXT2]
Convert comments to preprocessor format

Modified:
    trunk/reactos/boot/freeldr/bootsect/ext2.S

Modified: trunk/reactos/boot/freeldr/bootsect/ext2.S
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/bootsect/ext2.S?rev=53928&r1=53927&r2=53928&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/bootsect/ext2.S [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/bootsect/ext2.S [iso-8859-1] Sun Oct  2 15:33:39 2011
@@ -1,11 +1,11 @@
-; EXT2.ASM
-; EXT2 Boot Sector
-; Copyright (c) 2002, 2003 Brian Palmer
-
-; [bp-0x04] Here we will store the number of sectors per track
-; [bp-0x08] Here we will store the number of heads
-; [bp-0x0c] Here we will store the size of the disk as the BIOS reports in CHS form
-; [bp-0x10] Here we will store the number of LBA sectors read
+// EXT2.ASM
+// EXT2 Boot Sector
+// Copyright (c) 2002, 2003 Brian Palmer
+
+// [bp-0x04] Here we will store the number of sectors per track
+// [bp-0x08] Here we will store the number of heads
+// [bp-0x0c] Here we will store the size of the disk as the BIOS reports in CHS form
+// [bp-0x10] Here we will store the number of LBA sectors read
 
 SECTORS_PER_TRACK		equ	0x04
 NUMBER_OF_HEADS			equ	0x08
@@ -29,20 +29,20 @@
         nop
 
 BootDrive				db 0x80
-;BootPartition			db 0					; Moved to end of boot sector to have a standard format across all boot sectors
-;SectorsPerTrack		db 63					; Moved to [bp-SECTORS_PER_TRACK]
-;NumberOfHeads			dw 16					; Moved to [bp-NUMBER_OF_HEADS]
-;BiosCHSDriveSize		dd (1024 * 1024 * 63)	; Moved to [bp-BIOS_CHS_DRIVE_SIZE]
-;LBASectorsRead			dd 0					; Moved to [bp-LBA_SECTORS_READ]
-
-Ext2VolumeStartSector	dd 263088				; Start sector of the ext2 volume
-Ext2BlockSize			dd 2					; Block size in sectors
-Ext2BlockSizeInBytes	dd 1024					; Block size in bytes
-Ext2PointersPerBlock	dd 256					; Number of block pointers that can be contained in one block
-Ext2GroupDescPerBlock	dd 32					; Number of group descriptors per block
-Ext2FirstDataBlock		dd 1					; First data block (1 for 1024-byte blocks, 0 for bigger sizes)
-Ext2InodesPerGroup		dd 2048					; Number of inodes per group
-Ext2InodesPerBlock		dd 8					; Number of inodes per block
+//BootPartition			db 0					// Moved to end of boot sector to have a standard format across all boot sectors
+//SectorsPerTrack		db 63					// Moved to [bp-SECTORS_PER_TRACK]
+//NumberOfHeads			dw 16					// Moved to [bp-NUMBER_OF_HEADS]
+//BiosCHSDriveSize		dd (1024 * 1024 * 63)	// Moved to [bp-BIOS_CHS_DRIVE_SIZE]
+//LBASectorsRead			dd 0					// Moved to [bp-LBA_SECTORS_READ]
+
+Ext2VolumeStartSector	dd 263088				// Start sector of the ext2 volume
+Ext2BlockSize			dd 2					// Block size in sectors
+Ext2BlockSizeInBytes	dd 1024					// Block size in bytes
+Ext2PointersPerBlock	dd 256					// Number of block pointers that can be contained in one block
+Ext2GroupDescPerBlock	dd 32					// Number of group descriptors per block
+Ext2FirstDataBlock		dd 1					// First data block (1 for 1024-byte blocks, 0 for bigger sizes)
+Ext2InodesPerGroup		dd 2048					// Number of inodes per group
+Ext2InodesPerBlock		dd 8					// Number of inodes per block
 
 Ext2ReadEntireFileLoadSegment:
 	dw	0
@@ -54,83 +54,83 @@
 	dd	0
 
 main:
-        xor ax,ax               ; Setup segment registers
-        mov ds,ax               ; Make DS correct
-        mov es,ax               ; Make ES correct
-        mov ss,ax				; Make SS correct
+        xor ax,ax               // Setup segment registers
+        mov ds,ax               // Make DS correct
+        mov es,ax               // Make ES correct
+        mov ss,ax				// Make SS correct
 		mov bp,7c00h
-        mov sp,7b00h            ; Setup a stack
-
-
-		cmp BYTE [BYTE bp+BootDrive],BYTE 0xff	; If they have specified a boot drive then use it
+        mov sp,7b00h            // Setup a stack
+
+
+		cmp BYTE [BYTE bp+BootDrive],BYTE 0xff	// If they have specified a boot drive then use it
 		jne GetDriveParameters
 
-        mov [BYTE bp+BootDrive],dl				; Save the boot drive
+        mov [BYTE bp+BootDrive],dl				// Save the boot drive
 
 
 GetDriveParameters:
 		mov  ah,08h
-		mov  dl,[BYTE bp+BootDrive]					; Get boot drive in dl
-		int  13h									; Request drive parameters from the bios
-		jnc  CalcDriveSize							; If the call succeeded then calculate the drive size
-
-		; If we get here then the call to the BIOS failed
-		; so just set CHS equal to the maximum addressable
-		; size
+		mov  dl,[BYTE bp+BootDrive]					// Get boot drive in dl
+		int  13h									// Request drive parameters from the bios
+		jnc  CalcDriveSize							// If the call succeeded then calculate the drive size
+
+		// If we get here then the call to the BIOS failed
+		// so just set CHS equal to the maximum addressable
+		// size
 		mov  cx,0ffffh
 		mov  dh,cl
 
 CalcDriveSize:
-		; Now that we have the drive geometry
-		; lets calculate the drive size
-		mov  bl,ch								; Put the low 8-bits of the cylinder count into BL
-		mov  bh,cl								; Put the high 2-bits in BH
-		shr  bh,6								; Shift them into position, now BX contains the cylinder count
-		and  cl,3fh								; Mask off cylinder bits from sector count
-		; CL now contains sectors per track and DH contains head count
-		movzx eax,dh							; Move the heads into EAX
-		movzx ebx,bx							; Move the cylinders into EBX
-		movzx ecx,cl							; Move the sectors per track into ECX
-		inc   eax								; Make it one based because the bios returns it zero based
-		mov   [BYTE bp-NUMBER_OF_HEADS],eax		; Save number of heads
-		mov   [BYTE bp-SECTORS_PER_TRACK],ecx	; Save number of sectors per track
-		inc   ebx								; Make the cylinder count one based also
-		mul   ecx								; Multiply heads with the sectors per track, result in edx:eax
-		mul   ebx								; Multiply the cylinders with (heads * sectors) [stored in edx:eax already]
-
-		; We now have the total number of sectors as reported
-		; by the bios in eax, so store it in our variable
+		// Now that we have the drive geometry
+		// lets calculate the drive size
+		mov  bl,ch								// Put the low 8-bits of the cylinder count into BL
+		mov  bh,cl								// Put the high 2-bits in BH
+		shr  bh,6								// Shift them into position, now BX contains the cylinder count
+		and  cl,3fh								// Mask off cylinder bits from sector count
+		// CL now contains sectors per track and DH contains head count
+		movzx eax,dh							// Move the heads into EAX
+		movzx ebx,bx							// Move the cylinders into EBX
+		movzx ecx,cl							// Move the sectors per track into ECX
+		inc   eax								// Make it one based because the bios returns it zero based
+		mov   [BYTE bp-NUMBER_OF_HEADS],eax		// Save number of heads
+		mov   [BYTE bp-SECTORS_PER_TRACK],ecx	// Save number of sectors per track
+		inc   ebx								// Make the cylinder count one based also
+		mul   ecx								// Multiply heads with the sectors per track, result in edx:eax
+		mul   ebx								// Multiply the cylinders with (heads * sectors) [stored in edx:eax already]
+
+		// We now have the total number of sectors as reported
+		// by the bios in eax, so store it in our variable
 		mov   [BYTE bp-BIOS_CHS_DRIVE_SIZE],eax
 
 
 LoadExtraBootCode:
-		; First we have to load our extra boot code at
-		; sector 1 into memory at [0000:7e00h]
-		;mov  eax,01h
+		// First we have to load our extra boot code at
+		// sector 1 into memory at [0000:7e00h]
+		//mov  eax,01h
 		xor  eax,eax
-		inc  eax								; Read logical sector 1, EAX now = 1
-		mov  cx,1								; Read one sector
-		mov  bx,7e00h							; Read sector to [0000:7e00h]
+		inc  eax								// Read logical sector 1, EAX now = 1
+		mov  cx,1								// Read one sector
+		mov  bx,7e00h							// Read sector to [0000:7e00h]
 		call ReadSectors
 
 		jmp  LoadRootDirectory
 
 
 
-; Reads ext2 group descriptor into [7000:8000]
-; We read it to this arbitrary location so
-; it will not cross a 64k boundary
-; EAX has group descriptor number to read
+// Reads ext2 group descriptor into [7000:8000]
+// We read it to this arbitrary location so
+// it will not cross a 64k boundary
+// EAX has group descriptor number to read
 Ext2ReadGroupDesc:
-		shl   eax,5										; Group = (Group * sizeof(GROUP_DESCRIPTOR) /* 32 */)
+		shl   eax,5										// Group = (Group * sizeof(GROUP_DESCRIPTOR) /* 32 */)
 		xor   edx,edx
-		div   DWORD [BYTE bp+Ext2GroupDescPerBlock]		; Group = (Group / Ext2GroupDescPerBlock)
-		add   eax,DWORD [BYTE bp+Ext2FirstDataBlock]	; Group = Group + Ext2FirstDataBlock + 1
-		inc   eax										; EAX now has the group descriptor block number
-														; EDX now has the group descriptor offset in the block
-
-		; Adjust the read offset so that the
-		; group descriptor is read to 7000:8000
+		div   DWORD [BYTE bp+Ext2GroupDescPerBlock]		// Group = (Group / Ext2GroupDescPerBlock)
+		add   eax,DWORD [BYTE bp+Ext2FirstDataBlock]	// Group = Group + Ext2FirstDataBlock + 1
+		inc   eax										// EAX now has the group descriptor block number
+														// EDX now has the group descriptor offset in the block
+
+		// Adjust the read offset so that the
+		// group descriptor is read to 7000:8000
 		mov   ebx,78000h
 		sub   ebx,edx
 		shr   ebx,4
@@ -138,51 +138,51 @@
 		xor   bx,bx
 
 
-		; Everything is now setup to call Ext2ReadBlock
-		; Instead of using the call instruction we will
-		; just put Ext2ReadBlock right after this routine
-
-; Reads ext2 block into [ES:BX]
-; EAX has logical block number to read
+		// Everything is now setup to call Ext2ReadBlock
+		// Instead of using the call instruction we will
+		// just put Ext2ReadBlock right after this routine
+
+// Reads ext2 block into [ES:BX]
+// EAX has logical block number to read
 Ext2ReadBlock:
 		mov   ecx,DWORD [BYTE bp+Ext2BlockSize]
 		mul   ecx
 		jmp   ReadSectors
 
-; Reads ext2 inode into [6000:8000]
-; We read it to this arbitrary location so
-; it will not cross a 64k boundary
-; EAX has inode number to read
+// Reads ext2 inode into [6000:8000]
+// We read it to this arbitrary location so
+// it will not cross a 64k boundary
+// EAX has inode number to read
 Ext2ReadInode:
-		dec   eax										; Inode = Inode - 1
+		dec   eax										// Inode = Inode - 1
 		xor   edx,edx
-		div   DWORD [BYTE bp+Ext2InodesPerGroup]		; Inode = (Inode / Ext2InodesPerGroup)
-		mov   ebx,eax									; EBX now has the inode group number
+		div   DWORD [BYTE bp+Ext2InodesPerGroup]		// Inode = (Inode / Ext2InodesPerGroup)
+		mov   ebx,eax									// EBX now has the inode group number
 		mov   eax,edx
 		xor   edx,edx
-		div   DWORD [BYTE bp+Ext2InodesPerBlock]		; Inode = (Inode / Ext2InodesPerBlock)
-		shl   edx,7										; FIXME: InodeOffset *= 128 (make the array index a byte offset)
-														; EAX now has the inode offset block number from inode table
-														; EDX now has the inode offset in the block
-
-		; Save the inode values and put the group
-		; descriptor number in EAX and read it in
+		div   DWORD [BYTE bp+Ext2InodesPerBlock]		// Inode = (Inode / Ext2InodesPerBlock)
+		shl   edx,7										// FIXME: InodeOffset *= 128 (make the array index a byte offset)
+														// EAX now has the inode offset block number from inode table
+														// EDX now has the inode offset in the block
+
+		// Save the inode values and put the group
+		// descriptor number in EAX and read it in
 		push  edx
 		push  eax
 		mov   eax,ebx
 		call  Ext2ReadGroupDesc
 
-		; Group descriptor has been read, now
-		; grab the inode table block number from it
+		// Group descriptor has been read, now
+		// grab the inode table block number from it
 		push  WORD 7000h
 		pop   es
 		mov   di,8008h
-		pop   eax										; Restore inode offset block number from stack
-		add   eax,DWORD [es:di]							; Add the inode table start block
-
-		; Adjust the read offset so that the
-		; inode we want is read to 6000:8000
-		pop   edx										; Restore inode offset in the block from stack
+		pop   eax										// Restore inode offset block number from stack
+		add   eax,DWORD [es:di]							// Add the inode table start block
+
+		// Adjust the read offset so that the
+		// inode we want is read to 6000:8000
+		pop   edx										// Restore inode offset in the block from stack
 		mov   ebx,68000h
 		sub   ebx,edx
 		shr   ebx,4
@@ -193,131 +193,131 @@
 		ret
 
 
-; Reads logical sectors into [ES:BX]
-; EAX has logical sector number to read
-; CX has number of sectors to read
+// Reads logical sectors into [ES:BX]
+// EAX has logical sector number to read
+// CX has number of sectors to read
 ReadSectors:
-        add  eax,DWORD [BYTE bp+Ext2VolumeStartSector]	; Add the start of the volume
-		cmp  eax,DWORD [BYTE bp-BIOS_CHS_DRIVE_SIZE]	; Check if they are reading a sector outside CHS range
-		jae  ReadSectorsLBA						; Yes - go to the LBA routine
-												; If at all possible we want to use LBA routines because
-												; They are optimized to read more than 1 sector per read
-
-		pushad									; Save logical sector number & sector count
-
-CheckInt13hExtensions:							; Now check if this computer supports extended reads
-		mov  ah,0x41							; AH = 41h
-		mov  bx,0x55aa							; BX = 55AAh
-		mov  dl,[BYTE bp+BootDrive]				; DL = drive (80h-FFh)
-		int  13h								; IBM/MS INT 13 Extensions - INSTALLATION CHECK
-		jc   ReadSectorsCHS						; CF set on error (extensions not supported)
-		cmp  bx,0xaa55							; BX = AA55h if installed
+        add  eax,DWORD [BYTE bp+Ext2VolumeStartSector]	// Add the start of the volume
+		cmp  eax,DWORD [BYTE bp-BIOS_CHS_DRIVE_SIZE]	// Check if they are reading a sector outside CHS range
+		jae  ReadSectorsLBA						// Yes - go to the LBA routine
+												// If at all possible we want to use LBA routines because
+												// They are optimized to read more than 1 sector per read
+
+		pushad									// Save logical sector number & sector count
+
+CheckInt13hExtensions:							// Now check if this computer supports extended reads
+		mov  ah,0x41							// AH = 41h
+		mov  bx,0x55aa							// BX = 55AAh
+		mov  dl,[BYTE bp+BootDrive]				// DL = drive (80h-FFh)
+		int  13h								// IBM/MS INT 13 Extensions - INSTALLATION CHECK
+		jc   ReadSectorsCHS						// CF set on error (extensions not supported)
+		cmp  bx,0xaa55							// BX = AA55h if installed
 		jne  ReadSectorsCHS
-		test cl,1								; CX = API subset support bitmap
-		jz   ReadSectorsCHS						; Bit 0, extended disk access functions (AH=42h-44h,47h,48h) supported
-
-		popad									; Restore sector count & logical sector number
+		test cl,1								// CX = API subset support bitmap
+		jz   ReadSectorsCHS						// Bit 0, extended disk access functions (AH=42h-44h,47h,48h) supported
+
+		popad									// Restore sector count & logical sector number
 
 ReadSectorsLBA:
-		pushad									; Save logical sector number & sector count
-
-		cmp  cx,byte 64							; Since the LBA calls only support 0x7F sectors at a time we will limit ourselves to 64
-		jbe  ReadSectorsSetupDiskAddressPacket	; If we are reading less than 65 sectors then just do the read
-		mov  cx,64								; Otherwise read only 64 sectors on this loop iteration
+		pushad									// Save logical sector number & sector count
+
+		cmp  cx,byte 64							// Since the LBA calls only support 0x7F sectors at a time we will limit ourselves to 64
+		jbe  ReadSectorsSetupDiskAddressPacket	// If we are reading less than 65 sectors then just do the read
+		mov  cx,64								// Otherwise read only 64 sectors on this loop iteration
 
 ReadSectorsSetupDiskAddressPacket:
 		mov  [BYTE bp-LBA_SECTORS_READ],cx
 		mov  WORD [BYTE bp-LBA_SECTORS_READ+2],0
 		o32 push byte 0
-		push eax								; Put 64-bit logical block address on stack
-		push es									; Put transfer segment on stack
-		push bx									; Put transfer offset on stack
-		push cx									; Set transfer count
-		push byte 0x10							; Set size of packet to 10h
-		mov  si,sp								; Setup disk address packet on stack
-
-
-        mov  dl,[BYTE bp+BootDrive]				; Drive number
-		mov  ah,42h								; Int 13h, AH = 42h - Extended Read
-		int  13h								; Call BIOS
-		jc   PrintDiskError						; If the read failed then abort
-
-		add  sp,byte 0x10						; Remove disk address packet from stack
-
-		popad									; Restore sector count & logical sector number
+		push eax								// Put 64-bit logical block address on stack
+		push es									// Put transfer segment on stack
+		push bx									// Put transfer offset on stack
+		push cx									// Set transfer count
+		push byte 0x10							// Set size of packet to 10h
+		mov  si,sp								// Setup disk address packet on stack
+
+
+        mov  dl,[BYTE bp+BootDrive]				// Drive number
+		mov  ah,42h								// Int 13h, AH = 42h - Extended Read
+		int  13h								// Call BIOS
+		jc   PrintDiskError						// If the read failed then abort
+
+		add  sp,byte 0x10						// Remove disk address packet from stack
+
+		popad									// Restore sector count & logical sector number
 
 		push bx
 		mov  ebx,DWORD [BYTE bp-LBA_SECTORS_READ]
-        add  eax,ebx							; Increment sector to read
+        add  eax,ebx							// Increment sector to read
 		shl  ebx,5
         mov  dx,es
-        add  dx,bx								; Setup read buffer for next sector
+        add  dx,bx								// Setup read buffer for next sector
         mov  es,dx
 		pop  bx
 
 		sub  cx,[BYTE bp-LBA_SECTORS_READ]
-        jnz  ReadSectorsLBA						; Read next sector
+        jnz  ReadSectorsLBA						// Read next sector
 
         ret
 
 
-; Reads logical sectors into [ES:BX]
-; EAX has logical sector number to read
-; CX has number of sectors to read
+// Reads logical sectors into [ES:BX]
+// EAX has logical sector number to read
+// CX has number of sectors to read
 ReadSectorsCHS:
-		popad										; Get logical sector number & sector count off stack
+		popad										// Get logical sector number & sector count off stack
 
 ReadSectorsCHSLoop:
         pushad
         xor   edx,edx
 		mov   ecx,DWORD [BYTE bp-SECTORS_PER_TRACK]
-		div   ecx									; Divide logical by SectorsPerTrack
-        inc   dl									; Sectors numbering starts at 1 not 0
-		mov   cl,dl									; Sector in CL
+		div   ecx									// Divide logical by SectorsPerTrack
+        inc   dl									// Sectors numbering starts at 1 not 0
+		mov   cl,dl									// Sector in CL
 		mov   edx,eax
 		shr   edx,16
-        div   WORD [BYTE bp-NUMBER_OF_HEADS]		; Divide logical by number of heads
-        mov   dh,dl									; Head in DH
-        mov   dl,[BYTE bp+BootDrive]				; Drive number in DL
-        mov   ch,al									; Cylinder in CX
-        ror   ah,2									; Low 8 bits of cylinder in CH, high 2 bits
-                									;  in CL shifted to bits 6 & 7
-        or    cl,ah									; Or with sector number
+        div   WORD [BYTE bp-NUMBER_OF_HEADS]		// Divide logical by number of heads
+        mov   dh,dl									// Head in DH
+        mov   dl,[BYTE bp+BootDrive]				// Drive number in DL
+        mov   ch,al									// Cylinder in CX
+        ror   ah,2									// Low 8 bits of cylinder in CH, high 2 bits
+                									//  in CL shifted to bits 6 & 7
+        or    cl,ah									// Or with sector number
         mov   ax,0201h
-        int   13h    ; DISK - READ SECTORS INTO MEMORY
-                     ; AL = number of sectors to read, CH = track, CL = sector
-                     ; DH = head, DL    = drive, ES:BX -> buffer to fill
-                     ; Return: CF set on error, AH =    status (see AH=01h), AL    = number of sectors read
-
-        jc    PrintDiskError						; If the read failed then abort
+        int   13h    // DISK - READ SECTORS INTO MEMORY
+                     // AL = number of sectors to read, CH = track, CL = sector
+                     // DH = head, DL    = drive, ES:BX -> buffer to fill
+                     // Return: CF set on error, AH =    status (see AH=01h), AL    = number of sectors read
+
+        jc    PrintDiskError						// If the read failed then abort
 
         popad
 
-        inc   eax									; Increment Sector to Read
+        inc   eax									// Increment Sector to Read
 
         mov   dx,es
-        add   dx,byte 20h							; Increment read buffer for next sector
+        add   dx,byte 20h							// Increment read buffer for next sector
         mov   es,dx
 
-        loop  ReadSectorsCHSLoop					; Read next sector
-
-        ret   
-
-
-
-
-; Displays a disk error message
-; And reboots
+        loop  ReadSectorsCHSLoop					// Read next sector
+
+        ret
+
+
+
+
+// Displays a disk error message
+// And reboots
 PrintDiskError:
-        mov  si,msgDiskError			; Bad boot disk message
-        call PutChars					; Display it
+        mov  si,msgDiskError			// Bad boot disk message
+        call PutChars					// Display it
 
 Reboot:
-        mov  si,msgAnyKey				; Press any key message
-        call PutChars					; Display it
-        xor ax,ax       
-        int 16h							; Wait for a keypress
-        int 19h							; Reboot
+        mov  si,msgAnyKey				// Press any key message
+        call PutChars					// Display it
+        xor ax,ax
+        int 16h							// Wait for a keypress
+        int 19h							// Reboot
 
 PutChars:
         lodsb
@@ -340,318 +340,318 @@
 
 
 msgDiskError		db 'Disk error',0
-; Sorry, need the space...
-;msgAnyKey			db 'Press any key to restart',0
+// Sorry, need the space...
+//msgAnyKey			db 'Press any key to restart',0
 msgAnyKey			db 'Press any key',0
 
-        times 509-($-$$) db 0   ; Pad to 509 bytes
+        times 509-($-$$) db 0   // Pad to 509 bytes
 
 BootPartition			db 0
 
-        dw 0aa55h       ; BootSector signature
-        
-
-; End of bootsector
-;
-; Now starts the extra boot code that we will store
-; at sector 1 on a EXT2 volume
+        dw 0aa55h       // BootSector signature
+
+
+// End of bootsector
+//
+// Now starts the extra boot code that we will store
+// at sector 1 on a EXT2 volume
 
 
 
 LoadRootDirectory:
 
-		mov  eax,EXT2_ROOT_INO			; Put the root directory inode number in EAX
-		call Ext2ReadInode				; Read in the inode
-
-		; Point ES:DI to the inode structure at 6000:8000
+		mov  eax,EXT2_ROOT_INO			// Put the root directory inode number in EAX
+		call Ext2ReadInode				// Read in the inode
+
+		// Point ES:DI to the inode structure at 6000:8000
 		push WORD 6000h
 		pop  es
 		mov  di,8000h
 		push di
-		push es							; Save these for later
-
-		; Get root directory size from inode structure
+		push es							// Save these for later
+
+		// Get root directory size from inode structure
 		mov  eax,DWORD [es:di+4]
 		push eax
 
-		; Now that the inode has been read in load
-		; the root directory file data to 0000:8000
+		// Now that the inode has been read in load
+		// the root directory file data to 0000:8000
 		call Ext2ReadEntireFile
 
-		; Since the root directory was loaded to 0000:8000
-		; then add 8000h to the root directory's size
+		// Since the root directory was loaded to 0000:8000
+		// then add 8000h to the root directory's size
 		pop  eax
-		mov  edx,8000h					; Set EDX to the current offset in the root directory
-		add  eax,edx					; Initially add 8000h to the size of the root directory
+		mov  edx,8000h					// Set EDX to the current offset in the root directory
+		add  eax,edx					// Initially add 8000h to the size of the root directory
 
 SearchRootDirectory:
-		push edx						; Save current offset in root directory
-		push eax						; Save the size of the root directory
-
-		; Now we have to convert the current offset
-		; in the root directory to a SEGMENT:OFFSET pair
+		push edx						// Save current offset in root directory
+		push eax						// Save the size of the root directory
+
+		// Now we have to convert the current offset
+		// in the root directory to a SEGMENT:OFFSET pair
 		mov  eax,edx
 		xor  edx,edx
 		mov  ecx,16
-		div  ecx						; Now AX:DX has segment & offset
+		div  ecx						// Now AX:DX has segment & offset
 		mov  es,ax
 		mov  di,dx
-		push di							; Save the start of the directory entry
-		add  di,byte 8					; Add the offset to the filename
+		push di							// Save the start of the directory entry
+		add  di,byte 8					// Add the offset to the filename
 		mov  si,filename
 		mov  cl,11
-		rep  cmpsb						; Compare the file names
+		rep  cmpsb						// Compare the file names
 		pop  di
 		pop  eax
 		pop  edx
 		jz   FoundFile
 
-		; Nope, didn't find it in this entry, keep looking
+		// Nope, didn't find it in this entry, keep looking
 		movzx ecx,WORD [es:di+4]
 		add   edx,ecx
 
-		; Check to see if we have reached the
-		; end of the root directory
+		// Check to see if we have reached the
+		// end of the root directory
 		cmp  edx,eax
 		jb   SearchRootDirectory
 		jmp  PrintFileNotFound
 
 FoundFile:
-		mov  eax,[es:di]				; Get inode number from directory entry
-		call Ext2ReadInode				; Read in the inode
-
-		; Point ES:DI to the inode structure at 6000:8000
-		pop  es
-		pop  di							; These were saved earlier
-
-		mov  cx,[es:di]					; Get the file mode so we can make sure it's a regular file
-		and  ch,EXT2_S_IFMT				; Mask off everything but the file type
-		cmp  ch,EXT2_S_IFREG			; Make sure it's a regular file
+		mov  eax,[es:di]				// Get inode number from directory entry
+		call Ext2ReadInode				// Read in the inode
+
+		// Point ES:DI to the inode structure at 6000:8000
+		pop  es
+		pop  di							// These were saved earlier
+
+		mov  cx,[es:di]					// Get the file mode so we can make sure it's a regular file
+		and  ch,EXT2_S_IFMT				// Mask off everything but the file type
+		cmp  ch,EXT2_S_IFREG			// Make sure it's a regular file
 		je   LoadFreeLoader
 		jmp  PrintRegFileError
 
 LoadFreeLoader:
-        mov  si,msgLoading				; "Loading FreeLoader..." message
-        call PutChars					; Display it
-
-		call Ext2ReadEntireFile			; Read freeldr.sys to 0000:8000
+        mov  si,msgLoading				// "Loading FreeLoader..." message
+        call PutChars					// Display it
+
+		call Ext2ReadEntireFile			// Read freeldr.sys to 0000:8000
 
         mov  dl,[BYTE bp+BootDrive]
 		mov  dh,[BYTE bp+BootPartition]
-		push 0						; push segment (0x0000)
-		mov eax, [0x8000 + 0xA8]	; load the RVA of the EntryPoint into eax
-		add eax, 0x8000				; RVA -> VA
-		push ax						; push offset
-		retf						; Transfer control to FreeLoader
-
-
-
-
-
-; Reads ext2 file data into [0000:8000]
-; This function assumes that the file's
-; inode has been read in to 6000:8000 *and*
-; ES:DI points to 6000:8000
-; This will load all the blocks up to
-; and including the double-indirect pointers.
-; This should be sufficient because it
-; allows for ~64MB which is much bigger
-; than we need for a boot loader.
+		push 0						// push segment (0x0000)
+		mov eax, [0x8000 + 0xA8]	// load the RVA of the EntryPoint into eax
+		add eax, 0x8000				// RVA -> VA
+		push ax						// push offset
+		retf						// Transfer control to FreeLoader
+
+
+
+
+
+// Reads ext2 file data into [0000:8000]
+// This function assumes that the file's
+// inode has been read in to 6000:8000 *and*
+// ES:DI points to 6000:8000
+// This will load all the blocks up to
+// and including the double-indirect pointers.
+// This should be sufficient because it
+// allows for ~64MB which is much bigger
+// than we need for a boot loader.
 Ext2ReadEntireFile:
 
-		; Reset the load segment
+		// Reset the load segment
 		mov  WORD [BYTE bp+Ext2ReadEntireFileLoadSegment],800h
 
-		; Now we must calculate how
-		; many blocks to read in
-		; We will do this by rounding the
-		; file size up to the next block
-		; size and then dividing by the block size
-		mov  eax,DWORD [BYTE bp+Ext2BlockSizeInBytes]		; Get the block size in bytes
+		// Now we must calculate how
+		// many blocks to read in
+		// We will do this by rounding the
+		// file size up to the next block
+		// size and then dividing by the block size
+		mov  eax,DWORD [BYTE bp+Ext2BlockSizeInBytes]		// Get the block size in bytes
 		push eax
-		dec  eax											; Ext2BlockSizeInBytes -= 1
-		add  eax,DWORD [es:di+4]							; Add the file size
+		dec  eax											// Ext2BlockSizeInBytes -= 1
+		add  eax,DWORD [es:di+4]							// Add the file size
 		xor  edx,edx
-		pop  ecx											; Divide by the block size in bytes
-		div  ecx											; EAX now contains the number of blocks to load
+		pop  ecx											// Divide by the block size in bytes
+		div  ecx											// EAX now contains the number of blocks to load
 		push eax
 
-		; Make sure the file size isn't zero
+		// Make sure the file size isn't zero
 		cmp  eax,byte 0
 		jnz  Ext2ReadEntireFile2
 		jmp  PrintFileSizeError
 
 Ext2ReadEntireFile2:
-		; Save the indirect & double indirect pointers
-		mov  edx,DWORD [es:di+0x58]							; Get indirect pointer
-		mov  [BYTE bp+Ext2InodeIndirectPointer],edx			; Save indirect pointer
-		mov  edx,DWORD [es:di+0x5c]							; Get double indirect pointer
-		mov  [BYTE bp+Ext2InodeDoubleIndirectPointer],edx	; Save double indirect pointer
-
-		; Now copy the direct pointers to 7000:0000
-		; so that we can call Ext2ReadDirectBlocks
-		push ds												; Save DS
+		// Save the indirect & double indirect pointers
+		mov  edx,DWORD [es:di+0x58]							// Get indirect pointer
+		mov  [BYTE bp+Ext2InodeIndirectPointer],edx			// Save indirect pointer
+		mov  edx,DWORD [es:di+0x5c]							// Get double indirect pointer
+		mov  [BYTE bp+Ext2InodeDoubleIndirectPointer],edx	// Save double indirect pointer
+
+		// Now copy the direct pointers to 7000:0000
+		// so that we can call Ext2ReadDirectBlocks
+		push ds												// Save DS
 		push es
 		push WORD 7000h
 		pop  es
 		pop  ds
 		mov  si,8028h
-		xor  di,di											; DS:SI = 6000:8028 ES:DI = 7000:0000
-		mov  cx,24											; Moving 24 words of data
+		xor  di,di											// DS:SI = 6000:8028 ES:DI = 7000:0000
+		mov  cx,24											// Moving 24 words of data
 		rep  movsw
-		pop  ds												; Restore DS
-
-		; Now we have all the block pointers in the
-		; right location so read them in
-		pop  eax											; Restore the total number of blocks in this file
-		xor  ecx,ecx										; Set the max count of blocks to read to 12
-		mov  cl,12											; which is the number of direct block pointers in the inode
+		pop  ds												// Restore DS
+
+		// Now we have all the block pointers in the
+		// right location so read them in
+		pop  eax											// Restore the total number of blocks in this file
+		xor  ecx,ecx										// Set the max count of blocks to read to 12
+		mov  cl,12											// which is the number of direct block pointers in the inode
 		call Ext2ReadDirectBlockList
 
-		; Check to see if we actually have
-		; blocks left to read
+		// Check to see if we actually have
+		// blocks left to read
 		cmp  eax,byte 0
 		jz   Ext2ReadEntireFileDone
 
-		; Now we have read all the direct blocks in
-		; the inode. So now we have to read the indirect
-		; block and read all it's direct blocks
-		push eax											; Save the total block count
-		mov  eax,DWORD [BYTE bp+Ext2InodeIndirectPointer]	; Get the indirect block pointer
+		// Now we have read all the direct blocks in
+		// the inode. So now we have to read the indirect
+		// block and read all it's direct blocks
+		push eax											// Save the total block count
+		mov  eax,DWORD [BYTE bp+Ext2InodeIndirectPointer]	// Get the indirect block pointer
 		push WORD 7000h
 		pop  es
-		xor  bx,bx											; Set the load address to 7000:0000
-		call Ext2ReadBlock									; Read the block
-
-		; Now we have all the block pointers from the
-		; indirect block in the right location so read them in
-		pop  eax											; Restore the total block count
-		mov  ecx,DWORD [BYTE bp+Ext2PointersPerBlock]		; Get the number of block pointers that one block contains
+		xor  bx,bx											// Set the load address to 7000:0000
+		call Ext2ReadBlock									// Read the block
+
+		// Now we have all the block pointers from the
+		// indirect block in the right location so read them in
+		pop  eax											// Restore the total block count
+		mov  ecx,DWORD [BYTE bp+Ext2PointersPerBlock]		// Get the number of block pointers that one block contains
 		call Ext2ReadDirectBlockList
 
-		; Check to see if we actually have
-		; blocks left to read
+		// Check to see if we actually have
+		// blocks left to read
 		cmp  eax,byte 0
 		jz   Ext2ReadEntireFileDone
 
-		; Now we have read all the direct blocks from
-		; the inode's indirect block pointer. So now
-		; we have to read the double indirect block
-		; and read all it's indirect blocks
-		; (whew, it's a good thing I don't support triple indirect blocks)
-		mov  [BYTE bp+Ext2BlocksLeftToRead],eax				; Save the total block count
-		mov  eax,DWORD [BYTE bp+Ext2InodeDoubleIndirectPointer]	; Get the double indirect block pointer
+		// Now we have read all the direct blocks from
+		// the inode's indirect block pointer. So now
+		// we have to read the double indirect block
+		// and read all it's indirect blocks
+		// (whew, it's a good thing I don't support triple indirect blocks)
+		mov  [BYTE bp+Ext2BlocksLeftToRead],eax				// Save the total block count
+		mov  eax,DWORD [BYTE bp+Ext2InodeDoubleIndirectPointer]	// Get the double indirect block pointer
 		push WORD 7800h
 		pop  es
-		push es												; Save an extra copy of this value on the stack
-		xor  bx,bx											; Set the load address to 7000:8000
-		call Ext2ReadBlock									; Read the block
-
-		pop  es												; Put 7800h into ES (saved on the stack already)
+		push es												// Save an extra copy of this value on the stack
+		xor  bx,bx											// Set the load address to 7000:8000
+		call Ext2ReadBlock									// Read the block
+
+		pop  es												// Put 7800h into ES (saved on the stack already)
 		xor  di,di
 
 Ext2ReadIndirectBlock:
-		mov  eax,DWORD [es:di]								; Get indirect block pointer
-		add  di,BYTE 4										; Update DI for next array index
+		mov  eax,DWORD [es:di]								// Get indirect block pointer
+		add  di,BYTE 4										// Update DI for next array index
 		push es
 		push di
 
 		push WORD 7000h
 		pop  es
-		xor  bx,bx											; Set the load address to 7000:0000
-		call Ext2ReadBlock									; Read the indirect block
-
-		; Now we have all the block pointers from the
-		; indirect block in the right location so read them in
-		mov  eax,DWORD [BYTE bp+Ext2BlocksLeftToRead]		; Restore the total block count
-		mov  ecx,DWORD [BYTE bp+Ext2PointersPerBlock]		; Get the number of block pointers that one block contains
+		xor  bx,bx											// Set the load address to 7000:0000
+		call Ext2ReadBlock									// Read the indirect block
+
+		// Now we have all the block pointers from the
+		// indirect block in the right location so read them in
+		mov  eax,DWORD [BYTE bp+Ext2BlocksLeftToRead]		// Restore the total block count
+		mov  ecx,DWORD [BYTE bp+Ext2PointersPerBlock]		// Get the number of block pointers that one block contains
 		call Ext2ReadDirectBlockList
-		mov  [BYTE bp+Ext2BlocksLeftToRead],eax				; Save the total block count
+		mov  [BYTE bp+Ext2BlocksLeftToRead],eax				// Save the total block count
 		pop  di
 		pop  es
 
-		; Check to see if we actually have
-		; blocks left to read
+		// Check to see if we actually have
+		// blocks left to read
 		cmp  eax,byte 0
 		jnz  Ext2ReadIndirectBlock
 
 Ext2ReadEntireFileDone:
 		ret
 
-; Reads a maximum number of blocks
-; from an array at 7000:0000
-; and updates the total count
-; ECX contains the max number of blocks to read
-; EAX contains the number of blocks left to read
-; On return:
-;  EAX contians the new number of blocks left to read
+// Reads a maximum number of blocks
+// from an array at 7000:0000
+// and updates the total count
+// ECX contains the max number of blocks to read
+// EAX contains the number of blocks left to read
+// On return:
+//  EAX contians the new number of blocks left to read
 Ext2ReadDirectBlockList:
-		cmp  eax,ecx										; Compare it to the maximum number of blocks to read
-		ja   CallExt2ReadDirectBlocks						; If it will take more blocks then just read all of the blocks
-		mov  cx,ax											; Otherwise adjust the block count accordingly
+		cmp  eax,ecx										// Compare it to the maximum number of blocks to read
+		ja   CallExt2ReadDirectBlocks						// If it will take more blocks then just read all of the blocks
+		mov  cx,ax											// Otherwise adjust the block count accordingly
 
 CallExt2ReadDirectBlocks:
-		sub  eax,ecx										; Subtract the number of blocks being read from the total count
-		push eax											; Save the new total count
+		sub  eax,ecx										// Subtract the number of blocks being read from the total count
+		push eax											// Save the new total count
 		call Ext2ReadDirectBlocks
-		pop  eax											; Restore the total count
+		pop  eax											// Restore the total count
 		ret
 
 
-; Reads a specified number of blocks
-; from an array at 7000:0000
-; CX contains the number of blocks to read
+// Reads a specified number of blocks
+// from an array at 7000:0000
+// CX contains the number of blocks to read
 Ext2ReadDirectBlocks:
 
 		push WORD 7000h
 		pop  es
-		xor  di,di											; Set ES:DI = 7000:0000
+		xor  di,di											// Set ES:DI = 7000:0000
 
 Ext2ReadDirectBlocksLoop:
-		mov  eax,[es:di]									; Get direct block pointer from array
-		add  di,BYTE 4										; Update DI for next array index
-
-		push cx												; Save number of direct blocks left
-		push es												; Save array segment
-		push di												; Save array offset
+		mov  eax,[es:di]									// Get direct block pointer from array
+		add  di,BYTE 4										// Update DI for next array index
+
+		push cx												// Save number of direct blocks left
+		push es												// Save array segment
+		push di												// Save array offset
 		mov  es,[BYTE bp+Ext2ReadEntireFileLoadSegment]
-		xor  bx,bx											; Setup load address for next read
-
-		call Ext2ReadBlock									; Read the block (this updates ES for the next read)
-
-		mov  [BYTE bp+Ext2ReadEntireFileLoadSegment],es		; Save updated ES
-
-		pop  di												; Restore the array offset
-		pop  es												; Restore the array segment
-		pop  cx												; Restore the number of blocks left
+		xor  bx,bx											// Setup load address for next read
+
+		call Ext2ReadBlock									// Read the block (this updates ES for the next read)
+
+		mov  [BYTE bp+Ext2ReadEntireFileLoadSegment],es		// Save updated ES
+
+		pop  di												// Restore the array offset
+		pop  es												// Restore the array segment
+		pop  cx												// Restore the number of blocks left
 
 		loop Ext2ReadDirectBlocksLoop
 
-		; At this point all the direct blocks should
-		; be loaded and ES (Ext2ReadEntireFileLoadSegment)
-		; should be ready for the next read.
+		// At this point all the direct blocks should
+		// be loaded and ES (Ext2ReadEntireFileLoadSegment)
+		// should be ready for the next read.
 		ret
 
 
 
-; Displays a file not found error message
-; And reboots
+// Displays a file not found error message
+// And reboots
 PrintFileNotFound:
-        mov  si,msgFreeLdr      ; FreeLdr not found message
+        mov  si,msgFreeLdr      // FreeLdr not found message
 		jmp short DisplayItAndReboot
 
-; Displays a file size is 0 error
-; And reboots
+// Displays a file size is 0 error
+// And reboots
 PrintFileSizeError:
-        mov  si,msgFileSize     ; Error message
+        mov  si,msgFileSize     // Error message
 		jmp short DisplayItAndReboot
 
-; Displays a file is not a regular file error
-; And reboots
+// Displays a file is not a regular file error
+// And reboots
 PrintRegFileError:
-        mov  si,msgRegFile      ; Error message
+        mov  si,msgRegFile      // Error message
 DisplayItAndReboot:
-        call PutChars           ; Display it
+        call PutChars           // Display it
 		jmp  Reboot
 
 msgFreeLdr   db 'freeldr.sys not found',0
@@ -660,6 +660,6 @@
 filename     db 'freeldr.sys'
 msgLoading   db 'Loading FreeLoader...',0
 
-        times 1022-($-$$) db 0   ; Pad to 1022 bytes
-
-        dw 0aa55h       ; BootSector signature
+        times 1022-($-$$) db 0   // Pad to 1022 bytes
+
+        dw 0aa55h       // BootSector signature




More information about the Ros-diffs mailing list