101 lines
1.9 KiB
PHP
101 lines
1.9 KiB
PHP
; -----------------------------------------------------------------------
|
|
;
|
|
; Copyright 2010 Gene Cumm
|
|
;
|
|
; Portions from diskstart.inc:
|
|
; Copyright 1994-2009 H. Peter Anvin - All Rights Reserved
|
|
; Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
|
;
|
|
; This program is free software; you can redistribute it and/or modify
|
|
; it under the terms of the GNU General Public License as published by
|
|
; the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
|
; Boston MA 02110-1301, USA; either version 2 of the License, or
|
|
; (at your option) any later version; incorporated herein by reference.
|
|
;
|
|
; -----------------------------------------------------------------------
|
|
|
|
;
|
|
; geodsplib.inc
|
|
;
|
|
; Library file for geodsp*.asm
|
|
;
|
|
|
|
; ES:BX points to the buffer with address
|
|
; DX,CX as they should be for INT13h,AH=02
|
|
; For now assume C<256
|
|
write_chs_lba:
|
|
pushad
|
|
mov si,s_atchs
|
|
call writestr_early
|
|
call write_chs
|
|
mov al,':'
|
|
call writechr
|
|
mov eax,[es:bx]
|
|
call writehex8
|
|
call crlf
|
|
popad
|
|
ret
|
|
|
|
; DX,CX as they should be for INT13h,AH=02
|
|
; For now assume C<256
|
|
write_chs:
|
|
pushad
|
|
mov al,ch
|
|
mov ah,cl
|
|
shr ah,6
|
|
call writehex4
|
|
mov al,','
|
|
call writechr
|
|
mov al,dh
|
|
call writehex2
|
|
mov al,','
|
|
call writechr
|
|
mov al,cl
|
|
and al,3Fh
|
|
call writehex2
|
|
popad
|
|
ret
|
|
|
|
write_edd_lba:
|
|
pushad
|
|
mov si,s_atchs
|
|
call writestr_early
|
|
call writehex8
|
|
mov al,':'
|
|
call writechr
|
|
mov eax,[es:bx]
|
|
call writehex8
|
|
call crlf
|
|
popad
|
|
ret
|
|
|
|
|
|
crlf:
|
|
push si
|
|
mov si,s_crlf
|
|
call writestr_early
|
|
pop si
|
|
ret
|
|
|
|
writechr:
|
|
writechr_early:
|
|
pushad
|
|
mov ah,0Eh ; Write to screen as TTY
|
|
mov bx,0007h ; Attribute
|
|
int 10h
|
|
popad
|
|
ret
|
|
|
|
%include "writehex.inc"
|
|
|
|
s_atchs: db '@'
|
|
s_chs: db 'CHS'
|
|
s_space: db ' ', 0
|
|
s_typespec: db 'D='
|
|
s_type: db 'CHS', 0
|
|
s_end: db 0Dh, 0Ah, 'end'
|
|
s_crlf: db 0Dh, 0Ah, 0
|
|
|
|
; This indicates the general format of the last few bytes in the boot sector
|
|
BS_MAGIC_VER equ 0x1b << 9
|