新增lat安装功能

This commit is contained in:
2023-11-11 15:00:12 +08:00
parent 1a786145fb
commit 5f8387e14e
6 changed files with 224 additions and 70 deletions

View File

@@ -2,30 +2,31 @@ mov ax,0xb800
mov es,ax
; 清屏
mov cx,80*25
;clean:
; mov di,cx
; add di,di
; mov byte [es:di],''
; add di,1
; mov byte [es:di],0x0F
; loop clean
clean:
mov di,cx
add di,di
mov byte [es:di],''
add di,1
mov byte [es:di],0x0F
loop clean
; 显示上方白条
; 移除(0,0)的S字符
;mov byte [es:0x00],''
;mov cx,80*2-1
;mov di,0
;headtitle:
; mov di,cx
; mov byte [es:di],0xF0
; ; 写入空字符
; add di,di
; mov byte [es:di],''
; ;inc cx
; ;sub cx,1
; loop headtitle
mov di,0
mov byte [es:0x00],''
mov cx,80*2-1
mov di,0
push cx
headtitle:
mov di,cx
mov byte [es:di],0xF0
; 写入空字符
add di,di
mov byte [es:di],''
;inc cx
;sub cx,1
loop headtitle
xor di,di
pop cx
; 显示下方白条
tailtitle:
mov di,cx
@@ -37,9 +38,9 @@ tailtitle:
add di,80*2*24
mov byte [es:di],''
loop tailtitle
; 在第一行写入文本 Hello World!
; 在第一行写入文本
jmp near showHeadText
headText: db 'Hello World!' ;'Wine Runner Qemu Test'
headText: db 'Wine Runner Webiste:http://gitee.com/gfdgd-xi/deep-wine-runner'
showHeadText:
; 虽然可以简单粗暴的用 movsw但是会出现问题
mov cx,showHeadText-headText
@@ -82,10 +83,9 @@ centerTextScreenSize:
; 第二位是单行偏移量
db 1, -1
centerText:
db 'Hello', 0x0A
db 'It is test text', 0x0A
db 'a', 0x0A
db 'b', 0x0A
db 'Mode: Real Mode Demo', 0x0A
db 'Bit: 16', 0x0A
db 'Virtual Machine: qemu-system-i386'
db 0x03 ; 结束符
showCenterText:
centerTextLong equ showCenterText-centerText
@@ -141,18 +141,19 @@ showCenterText:
showCenterTextEnd:
mov ax,[cs:0x100]
mov dx,[cs:0x102]
mov bx,16
div bx
mov ds,ax
mov es,ax
xor di,di
mov si,1
;mov ax,[cs:0x100]
;mov dx,[cs:0x102]
; mov bx,16
; div bx
; mov ds,ax
; mov es,ax
;xor di,di
;mov si,1
;xor ds,ds
;mov bx,512
xor bx,bx
call read_hard_disk_0
;xor bx,bx
;call read_hard_disk_0
get_data:
mov di,80*2*25-2
@@ -191,23 +192,7 @@ get_data:
call read_time
mov byte [es:di-32],ah
mov byte [es:di-30],al
mov cx,showTipsStr-tipsStr
sub di,30
mov ax,tipsStr
mov ds,ax
; 先跳过文本显示
jmp near showTipsStrEnd
; 显示提示文本
tipsStr: db 'Time:20'
showTipsStr:
mov di,cx
add di,showTipsStr+0x7c0
mov dl,[ds:di]
mov di,80*2*25-36
sub di,cx
mov byte [es:di],dl
loop showTipsStr
showTipsStrEnd:
hlt ; 使用停机指令降低 CPU 使用率
jmp near get_data
@@ -232,18 +217,22 @@ bcd_to_ascii:
add ah,0x30
ret
;poweroff:
; 跳过关机
jmp near end
; 关机
; mov ax,5307H ; 高级电源管理功能,设置电源状态
; mov bx,0001H ; 设备ID1所有设备
; mov cx,0003H ; 状态3表示关机
; int 15h
end:
times 510-($-$$) db 0
db 0x55,0xaa
; 后面部分暂时废弃
read_hard_disk_0: ; 从硬盘读取一个逻辑扇区
; 输入DI:SI=起始逻辑扇区号
; DS:BX=目标缓冲区地址
@@ -298,14 +287,3 @@ read_hard_disk_0: ; 从硬盘读取一个逻辑扇区
pop bx
pop ax
end:
times 510-($-$$) db 0
db 0x55,0xaa
; 数据区
showText_data:
db 'A', 0x0A
db 'B', 0x0A
db 0x03
db 0x55, 0xab