Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # these are the first lines of my BIOS!
- .code16
- .global _start
- .data
- font_data:
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7E, 0x81, 0xA5, 0x81, 0x81, 0xBD
- .byte 0x99, 0x81, 0x81, 0x7E, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7E, 0xFF, 0xDB, 0xFF, 0xFF, 0xC3
- .byte 0xE7, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x6C, 0xFE, 0xFE, 0xFE
- .byte 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7C, 0xFE
- .byte 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0xE7, 0xE7
- .byte 0xE7, 0x99, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x18, 0x3C, 0x7E, 0xFF, 0xFF
- .byte 0x7E, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C
- .byte 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xC3
- .byte 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x42
- .byte 0x42, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x99, 0xBD
- .byte 0xBD, 0x99, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
- .byte 0x00, 0x00, 0x1E, 0x0E, 0x1A, 0x32, 0x78, 0xCC
- .byte 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C
- .byte 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x3F, 0x33, 0x3F, 0x30, 0x30, 0x30
- .byte 0x30, 0x70, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7F, 0x63, 0x7F, 0x63, 0x63, 0x63
- .byte 0x63, 0x67, 0xE7, 0xE6, 0xC0, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x18, 0x18, 0xDB, 0x3C, 0xE7
- .byte 0x3C, 0xDB, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFE, 0xF8
- .byte 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x02, 0x06, 0x0E, 0x1E, 0x3E, 0xFE, 0x3E
- .byte 0x1E, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18
- .byte 0x18, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66
- .byte 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7F, 0xDB, 0xDB, 0xDB, 0x7B, 0x1B
- .byte 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x7C, 0xC6, 0x60, 0x38, 0x6C, 0xC6, 0xC6
- .byte 0x6C, 0x38, 0x0C, 0xC6, 0x7C, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18
- .byte 0x18, 0x7E, 0x3C, 0x18, 0x7E, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0C, 0xFE
- .byte 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xFE
- .byte 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0
- .byte 0xC0, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6C, 0xFE
- .byte 0x6C, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7C
- .byte 0x7C, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x7C, 0x7C
- .byte 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x3C, 0x18, 0x18
- .byte 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x6C, 0x6C, 0xFE, 0x6C, 0x6C
- .byte 0x6C, 0xFE, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00
- .byte 0x18, 0x18, 0x7C, 0xC6, 0xC2, 0xC0, 0x7C, 0x06
- .byte 0x86, 0xC6, 0x7C, 0x18, 0x18, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0xC2, 0xC6, 0x0C, 0x18
- .byte 0x30, 0x60, 0xC6, 0x86, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x76, 0xDC
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x30
- .byte 0x30, 0x30, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x0C
- .byte 0x0C, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3C, 0xFF
- .byte 0x3C, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E
- .byte 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0C, 0x18
- .byte 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xCE, 0xD6, 0xD6
- .byte 0xE6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x0C, 0x18, 0x30
- .byte 0x60, 0xC0, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x06, 0x3C, 0x06
- .byte 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x0C, 0x1C, 0x3C, 0x6C, 0xCC, 0xFE
- .byte 0x0C, 0x0C, 0x0C, 0x1E, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xFE, 0xC0, 0xC0, 0xC0, 0xFC, 0x0E
- .byte 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x38, 0x60, 0xC0, 0xC0, 0xFC, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xFE, 0xC6, 0x06, 0x06, 0x0C, 0x18
- .byte 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x7E, 0x06
- .byte 0x06, 0x06, 0x0C, 0x78, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00
- .byte 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00
- .byte 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x60
- .byte 0x30, 0x18, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00
- .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0C, 0x06
- .byte 0x0C, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0x0C, 0x18, 0x18
- .byte 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xDE, 0xDE
- .byte 0xDE, 0xDC, 0xC0, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE
- .byte 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x66
- .byte 0x66, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xC0
- .byte 0xC0, 0xC2, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xF8, 0x6C, 0x66, 0x66, 0x66, 0x66
- .byte 0x66, 0x66, 0x6C, 0xF8, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xFE, 0x66, 0x62, 0x68, 0x78, 0x68
- .byte 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xFE, 0x66, 0x62, 0x68, 0x78, 0x68
- .byte 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xDE
- .byte 0xC6, 0xC6, 0x66, 0x3A, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C
- .byte 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xE6, 0x66, 0x6C, 0x6C, 0x78, 0x78
- .byte 0x6C, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60
- .byte 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xC6, 0xE6, 0xF6, 0xFE, 0xDE, 0xCE
- .byte 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x60
- .byte 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6
- .byte 0xC6, 0xD6, 0xDE, 0x7C, 0x0C, 0x0E, 0x00, 0x00
- .byte 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x6C
- .byte 0x66, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0x60, 0x38, 0x0C
- .byte 0x06, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x7E, 0x7E, 0x5A, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6
- .byte 0xC6, 0x6C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6
- .byte 0xD6, 0xFE, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xC6, 0xC6, 0x6C, 0x6C, 0x38, 0x38
- .byte 0x6C, 0x6C, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18
- .byte 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xFE, 0xC6, 0x86, 0x0C, 0x18, 0x30
- .byte 0x60, 0xC2, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x3C, 0x30, 0x30, 0x30, 0x30, 0x30
- .byte 0x30, 0x30, 0x30, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38
- .byte 0x1C, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C
- .byte 0x0C, 0x0C, 0x0C, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
- .byte 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x7C
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xE0, 0x60, 0x60, 0x78, 0x6C, 0x66
- .byte 0x66, 0x66, 0x66, 0xDC, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC0
- .byte 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x1C, 0x0C, 0x0C, 0x3C, 0x6C, 0xCC
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xFE
- .byte 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x38, 0x6C, 0x64, 0x60, 0xF0, 0x60
- .byte 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xCC, 0xCC
- .byte 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xCC, 0x78, 0x00
- .byte 0x00, 0x00, 0xE0, 0x60, 0x60, 0x6C, 0x76, 0x66
- .byte 0x66, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x06, 0x06, 0x00, 0x0E, 0x06, 0x06
- .byte 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3C, 0x00
- .byte 0x00, 0x00, 0xE0, 0x60, 0x60, 0x66, 0x6C, 0x78
- .byte 0x78, 0x6C, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFE, 0xD6
- .byte 0xD6, 0xD6, 0xD6, 0xD6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66
- .byte 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66
- .byte 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xCC, 0xCC
- .byte 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0x0C, 0x1E, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x76, 0x62
- .byte 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0x60
- .byte 0x38, 0x0C, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x10, 0x30, 0x30, 0xFC, 0x30, 0x30
- .byte 0x30, 0x30, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66
- .byte 0x66, 0x66, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6
- .byte 0xD6, 0xD6, 0xFE, 0x6C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x6C, 0x38
- .byte 0x38, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x0C, 0xF8, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xCC, 0x18
- .byte 0x30, 0x60, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x0E, 0x18, 0x18, 0x18, 0x70, 0x18
- .byte 0x18, 0x18, 0x18, 0x0E, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0E, 0x18
- .byte 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6
- .byte 0xC6, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xC0
- .byte 0xC2, 0x66, 0x3C, 0x0C, 0x06, 0x7C, 0x00, 0x00
- .byte 0x00, 0x00, 0xCC, 0xCC, 0x00, 0xCC, 0xCC, 0xCC
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x0C, 0x18, 0x30, 0x00, 0x7C, 0xC6, 0xFE
- .byte 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x10, 0x38, 0x6C, 0x00, 0x78, 0x0C, 0x7C
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xCC, 0xCC, 0x00, 0x78, 0x0C, 0x7C
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0C, 0x7C
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x38, 0x6C, 0x38, 0x00, 0x78, 0x0C, 0x7C
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x60, 0x60
- .byte 0x66, 0x3C, 0x0C, 0x06, 0x3C, 0x00, 0x00, 0x00
- .byte 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xFE
- .byte 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xC6, 0xC6, 0x00, 0x7C, 0xC6, 0xFE
- .byte 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x60, 0x30, 0x18, 0x00, 0x7C, 0xC6, 0xFE
- .byte 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x18, 0x3C, 0x66, 0x00, 0x38, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0xC6, 0xC6, 0x10, 0x38, 0x6C, 0xC6, 0xC6
- .byte 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x38, 0x6C, 0x38, 0x00, 0x38, 0x6C, 0xC6, 0xC6
- .byte 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x18, 0x30, 0x60, 0x00, 0xFE, 0x66, 0x60, 0x7C
- .byte 0x60, 0x60, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x76, 0x36
- .byte 0x7E, 0xD8, 0xD8, 0x6E, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x3E, 0x6C, 0xCC, 0xCC, 0xFE, 0xCC
- .byte 0xCC, 0xCC, 0xCC, 0xCE, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xC6, 0xC6, 0x00, 0x7C, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x60, 0x30, 0x18, 0x00, 0x7C, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x30, 0x78, 0xCC, 0x00, 0xCC, 0xCC, 0xCC
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x60, 0x30, 0x18, 0x00, 0xCC, 0xCC, 0xCC
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xC6, 0xC6, 0x00, 0xC6, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x0C, 0x78, 0x00
- .byte 0x00, 0xC6, 0xC6, 0x00, 0x38, 0x6C, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0xC6, 0xC6, 0x00, 0xC6, 0xC6, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x18, 0x18, 0x3C, 0x66, 0x60, 0x60, 0x60
- .byte 0x66, 0x3C, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x38, 0x6C, 0x64, 0x60, 0xF0, 0x60, 0x60
- .byte 0x60, 0x60, 0xE6, 0xFC, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18
- .byte 0x7E, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0xF8, 0xCC, 0xCC, 0xF8, 0xC4, 0xCC, 0xDE
- .byte 0xCC, 0xCC, 0xCC, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x0E, 0x1B, 0x18, 0x18, 0x18, 0x7E, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0xD8, 0x70, 0x00, 0x00
- .byte 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0C, 0x7C
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x0C, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x18, 0x30, 0x60, 0x00, 0x7C, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x18, 0x30, 0x60, 0x00, 0xCC, 0xCC, 0xCC
- .byte 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x76, 0xDC, 0x00, 0xDC, 0x66, 0x66
- .byte 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00
- .byte 0x76, 0xDC, 0x00, 0xC6, 0xE6, 0xF6, 0xFE, 0xDE
- .byte 0xCE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x3C, 0x6C, 0x6C, 0x3E, 0x00, 0x7E, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60
- .byte 0xC0, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xC0
- .byte 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06
- .byte 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0xC0, 0xC0, 0xC2, 0xC6, 0xCC, 0x18, 0x30
- .byte 0x60, 0xCE, 0x93, 0x06, 0x0C, 0x1F, 0x00, 0x00
- .byte 0x00, 0xC0, 0xC0, 0xC2, 0xC6, 0xCC, 0x18, 0x30
- .byte 0x66, 0xCE, 0x9A, 0x3F, 0x06, 0x0F, 0x00, 0x00
- .byte 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18
- .byte 0x3C, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x66, 0xCC
- .byte 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x66, 0x33
- .byte 0x66, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44
- .byte 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44
- .byte 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA
- .byte 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA
- .byte 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77
- .byte 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0xF8
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xF6
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0xF6
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xFE
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFE
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3F
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x30, 0x37
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xFF
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xF7
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xF7
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0xFF
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3F
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x1F
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF
- .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0xFF
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
- .byte 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
- .byte 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
- .byte 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F
- .byte 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDC, 0xD8
- .byte 0xD8, 0xD8, 0xDC, 0x76, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xC6, 0xFC
- .byte 0xC6, 0xC6, 0xFC, 0xC0, 0xC0, 0xC0, 0x00, 0x00
- .byte 0x00, 0x00, 0xFE, 0xC6, 0xC6, 0xC0, 0xC0, 0xC0
- .byte 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x80, 0xFE, 0x6C, 0x6C
- .byte 0x6C, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0xFE, 0xC6, 0x60, 0x30, 0x18
- .byte 0x30, 0x60, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xD8, 0xD8
- .byte 0xD8, 0xD8, 0xD8, 0x70, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66
- .byte 0x66, 0x7C, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x76, 0xDC, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x7E, 0x18, 0x3C, 0x66, 0x66
- .byte 0x66, 0x3C, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0xFE
- .byte 0xC6, 0xC6, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0x6C
- .byte 0x6C, 0x6C, 0x6C, 0xEE, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x1E, 0x30, 0x18, 0x0C, 0x3E, 0x66
- .byte 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xDB, 0xDB
- .byte 0xDB, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x03, 0x06, 0x7E, 0xCF, 0xDB
- .byte 0xF3, 0x7E, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x1C, 0x30, 0x60, 0x60, 0x7C, 0x60
- .byte 0x60, 0x60, 0x30, 0x1C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6
- .byte 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE
- .byte 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18
- .byte 0x18, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C
- .byte 0x18, 0x30, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x0C, 0x18, 0x30, 0x60, 0x30
- .byte 0x18, 0x0C, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x0E, 0x1B, 0x1B, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
- .byte 0xD8, 0xD8, 0xD8, 0x70, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7E
- .byte 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDC, 0x00
- .byte 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18
- .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xEC
- .byte 0x6C, 0x6C, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0xD8, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x70, 0x98, 0x30, 0x60, 0xC8, 0xF8, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0x7C, 0x7C
- .byte 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- palette:
- .byte 0, 0, 0
- .byte 0, 0, 42
- .byte 0, 42, 0
- .byte 0, 42, 42
- .byte 42, 0, 0
- .byte 42, 0, 42
- .byte 42, 21, 0
- .byte 42, 42, 42
- .byte 21, 21, 21
- .byte 21, 21, 63
- .byte 21, 63, 21
- .byte 21, 63, 63
- .byte 63, 21, 21
- .byte 63, 21, 63
- .byte 63, 63, 21
- .byte 63, 63, 63
- .text
- _start:
- # initialize DS/ES
- mov $0xE000, %ax
- mov %ax, %ds
- mov %ax, %es
- # initialize a stack
- mov $0, %ax
- mov %ax, %ss
- mov $0, %sp
- # jmp clearscreen
- # init vga:
- # ----------
- // from vgabios:
- /*
- # switch to color mode and enable CPU access 480 lines
- mov $0x3C2, %dx
- mov $0xC3, %al
- outb %al, %dx
- # more than 64k 3C4/04
- mov $0x3C4, %dx
- mov $0x04, %al
- outb %al, %dx
- inc %dx
- mov $0x02, %al
- outb %al, %dx
- */
- mov $0x3C6, %dx
- mov $0xFF, %al
- out %al, %dx
- # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- # % STEP 1: SET PALETTE %
- # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- jmp cont
- setpal:
- # AX = color
- # bl = red
- # bh = green
- # cl = blue
- push %ax
- # send color
- mov $0x3C8, %dx
- out %al, %dx
- mov $0x3C9, %dx
- mov %bl, %al # red
- out %al, %dx
- mov %bh, %al # green
- out %al, %dx
- mov %cl, %al # blue
- out %al, %dx
- pop %ax
- ret
- cont:
- # set 16 colors palette
- mov $0xE000, %ax
- mov %ax, %ds
- mov $0x1000, %si
- mov $0, %ax # color address
- setcolor:
- mov (%si), %bl
- inc %si
- mov (%si), %bh
- inc %si
- mov (%si), %cl
- inc %si
- call setpal
- inc %ax
- cmp $16, %ax
- jne setcolor
- # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- # % STEP 2: LOAD REGS %
- # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- # =======================================
- # MISC
- # =======================================
- mov $0x3C2, %dx
- mov $0x67, %al
- out %al, %dx
- # =======================================
- # AC
- # =======================================
- # read from 0x3DA resets 0x3C0 to index mode.
- mov $0x3DA, %dx
- in %dx, %al
- # set Palette 0x00 Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x00, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Palette 0x01 Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x01, %al # index
- mov $0x01, %ah # data
- call vga_io
- # set Palette 0x02 Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x02, %al # index
- mov $0x02, %ah # data
- call vga_io
- # set Palette 0x03 Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x03, %al # index
- mov $0x03, %ah # data
- call vga_io
- # set Palette 0x04 Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x04, %al # index
- mov $0x04, %ah # data
- call vga_io
- # set Palette 0x05 Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x05, %al # index
- mov $0x05, %ah # data
- call vga_io
- # set Palette 0x06 Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x06, %al # index
- mov $0x14, %ah # data
- call vga_io
- # set Palette 0x07 Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x07, %al # index
- mov $0x07, %ah # data
- call vga_io
- # set Palette 0x08 Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x08, %al # index
- mov $0x38, %ah # data
- call vga_io
- # set Palette 0x09 Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x09, %al # index
- mov $0x39, %ah # data
- call vga_io
- # set Palette 0x0A Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x0A, %al # index
- mov $0x3A, %ah # data
- call vga_io
- # set Palette 0x0B Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x0B, %al # index
- mov $0x3B, %ah # data
- call vga_io
- # set Palette 0x0C Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x0C, %al # index
- mov $0x3C, %ah # data
- call vga_io
- # set Palette 0x0D Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x0D, %al # index
- mov $0x3D, %ah # data
- call vga_io
- # set Palette 0x0E Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x0E, %al # index
- mov $0x3E, %ah # data
- call vga_io
- # set Palette 0x0F Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x0F, %al # index
- mov $0x3F, %ah # data
- call vga_io
- # set Mode Control Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x10, %al # index
- mov $0x0C, %ah # data
- call vga_io
- # set Overscan Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x11, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Color Plane Enable Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x12, %al # index
- mov $0x0F, %ah # data
- call vga_io
- # set Horizontal Planning Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x13, %al # index
- mov $0x08, %ah # data
- call vga_io
- # set Color Select Register:
- mov $0x3C0, %dx # address port
- mov $0x3C0, %cx # write port
- mov $0x14, %al # index
- mov $0x00, %ah # data
- call vga_io
- # =======================================
- # SEQ
- # =======================================
- # set Reset Register:
- mov $0x3C4, %dx # address port
- mov $0x3C5, %cx # write port
- mov $0x00, %al # index
- mov $0x03, %ah # data
- call vga_io
- # set Clock mode Register:
- mov $0x3C4, %dx # address port
- mov $0x3C5, %cx # write port
- mov $0x01, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Map Mask Register:
- mov $0x3C4, %dx # address port
- mov $0x3C5, %cx # write port
- mov $0x02, %al # index
- mov $0x03, %ah # data
- call vga_io
- # set Character Select Register:
- mov $0x3C4, %dx # address port
- mov $0x3C5, %cx # write port
- mov $0x03, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Memory mode Register:
- mov $0x3C4, %dx # address port
- mov $0x3C5, %cx # write port
- mov $0x04, %al # index
- mov $0x02, %ah # data
- call vga_io
- # =======================================
- # GC
- # =======================================
- # set Set/Reset Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x00, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Enable Set/Reset Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x01, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Color Compare Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x02, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Data Rotate Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x03, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Read Map Select Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x04, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Graphics Mode Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x05, %al # index
- mov $0x10, %ah # data
- call vga_io
- # set Miscellaneous Graphics Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x06, %al # index
- mov $0x0E, %ah # data
- call vga_io
- # set Color Don't Care Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x07, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Bit Mask Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x08, %al # index
- mov $0xFF, %ah # data
- call vga_io
- # =======================================
- # CRTC
- # =======================================
- # clear protection bits:
- # set Horizontal Blank End:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x03, %al # index
- mov $0x82, %ah # data
- call vga_io
- # set Vertical Retrace End:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x11, %al # index
- mov $0x0E, %ah # data
- call vga_io
- # set CRT control regs:
- # set Horizontal Total:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x00, %al # index
- mov $0x5F, %ah # data
- call vga_io
- # set Horizontal Display Enable End:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x01, %al # index
- mov $0x4F, %ah # data
- call vga_io
- # set Horizontal Blank Start:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x02, %al # index
- mov $0x50, %ah # data
- call vga_io
- # set Horizontal Blank End:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x03, %al # index
- mov $0x82, %ah # data
- call vga_io
- # set Horizontal Retrace Start:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x04, %al # index
- mov $0x55, %ah # data
- call vga_io
- # set Horizontal Retrace End:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x05, %al # index
- mov $0x81, %ah # data
- call vga_io
- # set Vertical Total:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x06, %al # index
- mov $0xBF, %ah # data
- call vga_io
- # set Overflow Register:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x07, %al # index
- mov $0x1F, %ah # data
- call vga_io
- # set Preset row scan:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x08, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set Maximum Scan Line:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x09, %al # index
- mov $0x4F, %ah # data
- call vga_io
- # set reg 0x0A:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x0A, %al # index
- mov $0x0D, %ah # data
- call vga_io
- # set reg 0x0B:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x0B, %al # index
- mov $0x0E, %ah # data
- call vga_io
- # set reg 0x0C:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x0C, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set reg 0x0D:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x0D, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set reg 0x0E:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x0E, %al # index
- mov $0x00, %ah # data
- call vga_io
- # set reg 0x0F:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x0F, %al # index
- mov $0x50, %ah # data
- call vga_io
- # set Vertical Retrace Start:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x10, %al # index
- mov $0x9C, %ah # data
- call vga_io
- # set Vertical Retrace End:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x11, %al # index
- mov $0x0E, %ah # data
- call vga_io
- # set Vertical Display Enable End:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x12, %al # index
- mov $0x8F, %ah # data
- call vga_io
- # set Logical Width:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x13, %al # index
- mov $0x28, %ah # data
- call vga_io
- # set Underline Location:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x14, %al # index
- mov $0x1F, %ah # data
- call vga_io
- # set Vertical Blank Start:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x15, %al # index
- mov $0x96, %ah # data
- call vga_io
- # set Vertical Blank End:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x16, %al # index
- mov $0xB9, %ah # data
- call vga_io
- # set CRTC Mode Control:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x17, %al # index
- mov $0xA3, %ah # data
- call vga_io
- # set reg 0x18:
- mov $0x3D4, %dx # address port
- mov $0x3D5, %cx # write port
- mov $0x18, %al # index
- mov $0xFF, %ah # data
- call vga_io
- # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- # % STEP 3: LOAD FONTS %
- # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- # =======================================
- # a. Turn off even/odd adressing
- # =======================================
- // SEQ4 |= 0x04 -- Memory mode Register:
- mov $0x3C4, %dx # address port
- mov $0x3C5, %cx # write port
- mov $0x04, %al # index
- mov $0x02, %ah # data
- or $0x04, %ah
- call vga_io
- // GC5 &= ~0x10 -- Graphics Mode Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x05, %al # index
- mov $0x10, %ah # data
- and $0xEF, %ah
- call vga_io
- // GC6 &= ~0x02 -- Miscellaneous Graphics Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x06, %al # index
- mov $0x0E, %ah # data
- and $0xFD, %ah
- call vga_io
- # =======================================
- # b. Set Plane 2 (P4)
- # =======================================
- // GC4 = 2 -- Read Map Select Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x04, %al # index
- mov $0x02, %ah # data
- call vga_io
- // SEQ2 = 4 -- set Map Mask Register:
- mov $0x3C4, %dx # address port
- mov $0x3C5, %cx # write port
- mov $0x02, %al # index
- mov $0x04, %ah # data
- call vga_io
- # =======================================
- # c. Write font (256 Character)
- # =======================================
- mov $0xE000, %ax
- mov %ax, %ds
- mov $0, %si
- mov $0xB800, %ax
- mov %ax, %es
- mov $0x0, %di
- mov $0, %bx # i counter.
- copy_char:
- mov $0, %cx
- copy_byte:
- mov %ds:(%si), %al
- mov %al, %es:(%di)
- inc %si
- inc %di
- inc %cx
- cmp $0x10, %cx
- jne copy_byte
- add $0x10, %di
- inc %bx
- cmp $0x100, %bx
- jne copy_char
- # =======================================
- # d. Reset Registers
- # =======================================
- // Reset SEQ2 -- set Map Mask Register:
- mov $0x3C4, %dx # address port
- mov $0x3C5, %cx # write port
- mov $0x02, %al # index
- mov $0x03, %ah # data
- call vga_io
- // Reset SEQ4 -- Memory mode Register:
- mov $0x3C4, %dx # address port
- mov $0x3C5, %cx # write port
- mov $0x04, %al # index
- mov $0x02, %ah # data
- call vga_io
- // Reset GC4 -- Read Map Select Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x04, %al # index
- mov $0x00, %ah # data
- call vga_io
- // Reset GC5 -- Graphics Mode Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x05, %al # index
- mov $0x10, %ah # data
- call vga_io
- // Reset GC6 -- Miscellaneous Graphics Register:
- mov $0x3CE, %dx # address port
- mov $0x3CF, %cx # write port
- mov $0x06, %al # index
- mov $0x0E, %ah # data
- call vga_io
- # lock
- mov $0x20, %al
- mov $0x3C0, %dx
- out %al, %dx
- mov $0x3DA, %dx
- in %dx, %al
- #----------------------------------------
- # write to vga memory
- clearscreen:
- mov $0xB800, %ax
- mov %ax, %ds
- mov %ax, %es
- mov $0, %si
- clear_byte_vga:
- movw $0x0200, (%si)
- add $0x2, %si
- cmp $2000, %si
- jne clear_byte_vga
- mov $0, %si
- movb $'I', 0x00
- movb $' ', 0x02
- movb $'a', 0x04
- movb $'m', 0x06
- movb $' ', 0x08
- movb $'B', 0x0A
- movb $'I', 0x0C
- movb $'O', 0x0E
- movb $'S', 0x10
- movb $'!', 0x12
- mov $0x55AA, %cx
- # idle:
- jmp .
- vga_io:
- # al contains the index.
- # ah contains the data.
- # cx contains the read/write port.
- # dx contains the address port.
- # select the register by index
- out %al, %dx
- mov %cx, %dx
- mov %ah, %al
- out %al, %dx
- # return
- ret
- .section .entry,"ax"
- _entry:
- jmp _start
- .string "02/07/2013"
- .org 0x10
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement