;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ HANDLE_PARTTABLE: MOV AL, 4 MOV EDI, PARTTABLE_HDR INT 20H MOV BX, [GS:600H + 88] MOVZX ECX, BX MOV AL, 5 MOV AH, 1 INT 20H ; PRINT THE AMMOUNT OF DISKDRIVES MOV AL, 4 MOV EDI, CR_LF INT 20H MOV AL, 4 MOV EDI, PARTTABLE_PART_HDR INT 20H DISKLOOP: PUSH ECX ;*** READ THE -MASTER- BOOTSECTOR *** PUSH CX MOV AH, 02H MOV AL, 1 MOV [REAL_EAX], EAX MOV AX, [GS:600H + 82] MOV [REAL_ES], AX ;set the buffer [ML] MOV DWORD [REAL_EBX],0 MOV DX, [GS:600H+88] ; NUMBEROFDRIVES SUB DX, CX ADD DL, 80H ; DRIVE MOV DH, 0 MOV CH, 0 MOV CL, 1 MOV [REAL_ECX], ECX MOV [REAL_EDX], EDX MOV AL, 03H MOV AH, 13H CLI INT 20H STI POP CX MOV AX, [GS:600H + 82] MOVZX ESI, AX SHL ESI, 4 MOV BX, [GS:ESI+ 1FEH] ; MOV AL, 5 ; MOV AH, 2 ; INT 20H ; THE SIGNATURE MOV DH, CL ; SAVE THE CURRENT DISK NR ADD ESI, 1BEH MOV ECX, 4 PARTITIONDUMPLOOP: ; PARTTABLE_PART_HDR DB 'Prt Act Sys Start [Head Sect Cyl] End [Head Sect Cyl]', 0 MOV AL, 4 MOV EDI, HD_TXT INT 20H MOV AL, DL ADD AL, 'a' SUB AL, 80H MOV [HDID], AL MOV AL, '1' ADD AL, 4 SUB AL, CL MOV [PARTID], AL MOV AL, 4 MOV EDI, HDID INT 20H JMP PASTSTRDEF HDID DB 'a' PARTID DB '1' DB 0 PASTSTRDEF: MOV AL, 4 MOV EDI, ONE_SPACE INT 20H MOV AL, 4 MOV EDI, ONE_SPACE INT 20H MOV BL, [GS:ESI] MOV AL, 5 MOV AH, 1 INT 20H ; BOOTABLE FLAG MOV AL, 4 MOV EDI, ONE_SPACE INT 20H MOV AL, 4 MOV EDI, ONE_SPACE INT 20H MOV BL, [GS:ESI+4] MOV AL, 5 MOV AH, 1 INT 20H ; SYSTEM FLAG MOV AL, 4 MOV EDI, ONE_SPACE INT 20H INT 20H INT 20H INT 20H INT 20H INT 20H INT 20H INT 20H INT 20H ; BUNCH OF SPACES MOV BL, [GS:ESI+1] MOV AL, 5 MOV AH, 1 INT 20H ; STARTHEAD MOV AL, 4 MOV EDI, ONE_SPACE INT 20H INT 20H INT 20H MOV BL, [GS:ESI+2] MOV AL, 5 MOV AH, 1 INT 20H ; STARTSECTOR MOV AL, 4 MOV EDI, ONE_SPACE INT 20H INT 20H INT 20H MOV BL, [GS:ESI+3] MOV AL, 5 MOV AH, 1 INT 20H ; STARTCYLINDER MOV AL, 4 MOV EDI, ONE_SPACE INT 20H INT 20H INT 20H INT 20H INT 20H INT 20H INT 20H INT 20H INT 20H INT 20H MOV BL, [GS:ESI+5] MOV AL, 5 MOV AH, 1 INT 20H ; ENDHEAD MOV AL, 4 MOV EDI, ONE_SPACE INT 20H INT 20H INT 20H MOV BL, [GS:ESI+6] MOV AL, 5 MOV AH, 1 INT 20H ; ENDSECTOR MOV AL, 4 MOV EDI, ONE_SPACE INT 20H INT 20H INT 20H MOV BL, [GS:ESI+7] MOV AL, 5 MOV AH, 1 INT 20H ; ENDCYLINDER MOV AL, 4 MOV EDI, ONE_SPACE INT 20H INT 20H INT 20H INT 20H MOV EBX, [GS:ESI+8] MOV AL, 5 MOV AH, 4 INT 20H ; START MOV AL, 4 MOV EDI, ONE_SPACE INT 20H MOV EBX, [GS:ESI+0CH] MOV AL, 5 MOV AH, 4 INT 20H ; SIZE MOV AL, 4 MOV EDI, CR_LF INT 20H ADD ESI, 10H DEC ECX CMP ECX, 1 ; compare with 1, not a 0 [ML] JNE near PARTITIONDUMPLOOP POP ECX DEC ECX CMP ECX, 0 JNE near DISKLOOP MOV AL, 4 MOV EDI, CR_LF INT 20H RET