fix: correction de bogue et optimisation du code et suppression de la detection du CPU
This commit is contained in:
parent
d7d8433a22
commit
01496ab3b8
|
@ -26,37 +26,24 @@ Serial_Number dd 0x01020304 ;N
|
||||||
Disk_Name db "COS2000 " ;Nom de volume
|
Disk_Name db "COS2000 " ;Nom de volume
|
||||||
Fat_Type db "FAT12 " ;Type de système de fichiers
|
Fat_Type db "FAT12 " ;Type de système de fichiers
|
||||||
|
|
||||||
;Cpu_Message db "CPU test",0
|
Boot_Message db "Demarrage de COS",0
|
||||||
Boot_Message db "Booting ",0
|
Loading_Message db "Chargement",0
|
||||||
Finding_Message db "System ",0
|
System_File db "LOADER SYS"
|
||||||
Loading_Message db "Loading ",0
|
Is_Ok db " [ OK ]",0x0A,0x0D,0
|
||||||
System_File db "SYSTEM SYS"
|
Is_Failed db " [Erreur]",0x0A,0x0D,"<Appuyer une touche>",0
|
||||||
Is_Ok db "[ OK ]",0x0A,0x0D,0
|
|
||||||
Is_Failed db "[Failed]",0x0A,0x0D,"Press a key",0x0A,0x0D,0
|
|
||||||
The_Dot db '.',0
|
The_Dot db '.',0
|
||||||
|
|
||||||
Boot_Error:
|
Boot_Error:
|
||||||
mov si,Is_Failed
|
mov si,Is_Failed
|
||||||
call ShowString
|
call ShowString
|
||||||
mov ah,0
|
xor ax,ax
|
||||||
int 0x16
|
int 0x16
|
||||||
int 0x19
|
int 0x19
|
||||||
|
|
||||||
Boot_Ok:
|
Boot_Ok:
|
||||||
mov al,[Stage]
|
|
||||||
cmp al,0
|
|
||||||
jz No_Ok
|
|
||||||
mov si,Is_Ok
|
mov si,Is_Ok
|
||||||
call ShowString
|
call ShowString
|
||||||
No_Ok:
|
ret
|
||||||
xor ah,ah
|
|
||||||
mov si,ax
|
|
||||||
add si,Boot_Message ;Cpu_Message
|
|
||||||
call ShowString
|
|
||||||
add byte [Stage],0x09
|
|
||||||
ret
|
|
||||||
|
|
||||||
Stage db 0
|
|
||||||
|
|
||||||
Boot:
|
Boot:
|
||||||
push cs
|
push cs
|
||||||
|
@ -69,21 +56,29 @@ Boot:
|
||||||
mov ss,ax
|
mov ss,ax
|
||||||
mov sp,0xFFFF
|
mov sp,0xFFFF
|
||||||
sti
|
sti
|
||||||
; call Detect_Cpu
|
mov si,Boot_Message
|
||||||
; jc Boot_Error
|
call ShowString
|
||||||
call Boot_Ok
|
|
||||||
xor ax,ax
|
xor ax,ax
|
||||||
int 0x13
|
int 0x13
|
||||||
jc Boot_Error
|
jc Boot_Error
|
||||||
mov cx,[Reserved_Sectors]
|
mov cx,[Reserved_Sectors]
|
||||||
add cx,[Sectors_Hidden]
|
add cx,[Sectors_Hidden]
|
||||||
adc cx,[Sectors_Hidden+2]
|
adc cx,[Sectors_Hidden+2]
|
||||||
mov di,Fat_Buffer
|
mov bx,[Sectors_Per_Fat]
|
||||||
call ReadSector
|
mov di,Fat_Buffer
|
||||||
jc Boot_Error
|
push bx
|
||||||
|
push cx
|
||||||
|
readfat:
|
||||||
|
call ReadSector
|
||||||
|
jc Boot_Error
|
||||||
|
inc cx
|
||||||
|
add di,[Sectors_Size]
|
||||||
|
dec bx
|
||||||
|
jnz readfat
|
||||||
|
pop cx
|
||||||
|
pop bx
|
||||||
xor ax,ax
|
xor ax,ax
|
||||||
mov al,[Fats_Number]
|
mov al,[Fats_Number]
|
||||||
mov bx,[Sectors_Per_Fat]
|
|
||||||
mul bx
|
mul bx
|
||||||
add cx,ax
|
add cx,ax
|
||||||
mov ax,32
|
mov ax,32
|
||||||
|
@ -93,7 +88,9 @@ Boot:
|
||||||
sub ax,2
|
sub ax,2
|
||||||
mov word [Serial_Number],ax
|
mov word [Serial_Number],ax
|
||||||
xor dx,dx
|
xor dx,dx
|
||||||
call Boot_Ok
|
call Boot_Ok
|
||||||
|
mov si,Loading_Message
|
||||||
|
call ShowString
|
||||||
Find_System:
|
Find_System:
|
||||||
mov di,Buffer
|
mov di,Buffer
|
||||||
call ReadSector
|
call ReadSector
|
||||||
|
@ -121,12 +118,11 @@ Next_Root_Entrie:
|
||||||
jmp Find_System
|
jmp Find_System
|
||||||
System_Found:
|
System_Found:
|
||||||
mov cx,[di+26]
|
mov cx,[di+26]
|
||||||
mov ax,0x0071
|
mov ax,0x0070
|
||||||
mov es,ax
|
mov es,ax
|
||||||
push es
|
push es
|
||||||
mov di,0x100
|
mov di,0x100
|
||||||
push di
|
push di
|
||||||
call Boot_Ok
|
|
||||||
mov si,The_Dot
|
mov si,The_Dot
|
||||||
Resume_Loading:
|
Resume_Loading:
|
||||||
cmp cx,0x0FF0
|
cmp cx,0x0FF0
|
||||||
|
@ -232,34 +228,7 @@ End_Show:
|
||||||
popa
|
popa
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;======================DETECTCPU======================
|
|
||||||
;Detecte si le processeur est un 386 au mini
|
|
||||||
;->
|
|
||||||
;<- Flag Carry si erreur
|
|
||||||
;=====================================================
|
|
||||||
;Detect_Cpu:
|
|
||||||
; push ax ; test if 8088/8086 is present (flag bits 12-15 will be set)
|
|
||||||
; xor ah,ah ; ah = 0
|
|
||||||
; push ax ; copy ax into the flags
|
|
||||||
; popf ; with bits 12-15 clear
|
|
||||||
; pushf ; Read flags back into ax
|
|
||||||
; pop ax
|
|
||||||
; and ah,0xF0 ; check if bits 12-15 are set
|
|
||||||
; cmp ah,0xF0
|
|
||||||
; je No_386 ; no 386 detected (8088/8086 present)
|
|
||||||
; ; check for a 286 (bits 12-15 are clear)
|
|
||||||
; mov ah,0xF0 ; set bits 12-15
|
|
||||||
; push ax ; copy ax onto the flags
|
|
||||||
; popf
|
|
||||||
; pushf ; copy the flags into ax
|
|
||||||
; pop ax
|
|
||||||
; and ah,0xF0 ; check if bits 12-15 are clear
|
|
||||||
; jz No_386 ; no 386 detected (80286 present)
|
|
||||||
; clc
|
|
||||||
; ret
|
|
||||||
;No_386:
|
|
||||||
; stc
|
|
||||||
; ret
|
|
||||||
|
|
||||||
times 510-($-$$) db ' '
|
times 510-($-$$) db ' '
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue