summaryrefslogtreecommitdiff
path: root/reboot.S
diff options
context:
space:
mode:
Diffstat (limited to 'reboot.S')
-rw-r--r--reboot.S54
1 files changed, 54 insertions, 0 deletions
diff --git a/reboot.S b/reboot.S
new file mode 100644
index 0000000..bfab971
--- /dev/null
+++ b/reboot.S
@@ -0,0 +1,54 @@
+/* $Id$ */
+
+ .file "reboot.S"
+ .text
+ .code16
+ .globl start
+start:
+ push %cs /* go */
+ pop %ds
+ mov $0x13, %ax
+ int $0x10
+ push $0xa000
+ pop %es
+ mov $0x60, %dx
+ mov $64000, %cx
+
+ xor %di ,%di /* clear screen */
+ xor %ax, %ax
+ mov $320*200/2, %cx
+ rep
+ stosw
+
+ mov $320*100, %di /* reducing line */
+ mov $320/2, %dx
+clear: xor %ax, %ax /* left black dot */
+ stosb
+ mov %dx, %cx
+ dec %cx
+ mov $0xf0f, %ax
+ rep
+ stosw
+ xor %ax, %ax /* right black dot */
+ stosb
+ sub %dx, %di
+ sub %dx, %di
+ inc %di
+ mov $15000, %cx
+1: loop 1b
+ dec %dx
+ jne clear
+
+ mov $32, %ax /* blinking dot */
+dot: stosb
+ dec %di
+1: loop 1b
+2: loop 2b
+3: loop 3b
+ dec %ax
+ cmp $16, %ax
+ jne dot
+
+ mov $0x3, %ax
+ int $0x10
+ ljmp $0xffff, $0x0 /* reboot */