Files
x86-bare-metal-examples/bios_scroll.S
2015-09-20 17:09:30 +02:00

73 lines
1.0 KiB
ArmAsm

/*
BIOS has a scroll function!
Very convenient, otherwise that would be hard to implement.
How it works:
Before scroll:
a
b
c
d
We then choose to act on the rectangle with corners
(1, 1) and (2, 2)} given by cx and dx:
a
XX
XX
d
and scroll that rectangle down by one line (al).
The final outcome is:
a
c
NN
d
where `N` are new squares generated by the scroll,
which gets filled with the background color in bh.
*/
#include "common.h"
BEGIN
/* Print staircase. */
CLEAR
PUTC($0x61)
PUTC($0x0A)
PUTC($0x62)
PUTC($0x0A)
PUTC($0x63)
PUTC($0x0A)
PUTC($0x64)
/* Function ID. */
mov $0x06, %ah
/* nr. of lines to scroll */
mov $0x01, %al
/*
BIOS color attributes.
Background is the clear color.
Foreground is set as the new foreground color.
*/
mov $0xA4, %bh
/*
CH,CL: row,column upper left corner (00:00)
TODO what does that mean?
*/
mov $0x0101, %cx
/*
DH,DL: row,column lower right corner (24:79).
TODO what does it mean?
*/
mov $0x0202, %dx
int $0x10
hlt
END