Live data from Hacker News

Building a Tetris Clone in X86 Assembly, Pt. Ⅰ: Hello, World

cmcenroe.me

1–10 of 14 posts

Re: Building a Tetris Clone in X86 Assembly, Pt. Ⅰ: Hello, World

#2
there's no comment section there so i'd figure i'd ask here: what is that font that it outputs? is that part of BIOS or something? or part of boot loader or PXE server?

i assumed asm was the lowest level, is there some builtin font by default that can't be changed or something?

Re: Building a Tetris Clone in X86 Assembly, Pt. Ⅰ: Hello, World

#3
post #2

there's no comment section there so i'd figure i'd ask here: what is that font that it outputs? is that part of BIOS or something? or part of boot loader or PXE server? i assumed asm was the lowest level, is there some builtin font by default that can't be changed or something?

I haven't read through the tutorial, but I would assume that the programmer does not specify the fonts being used, but rather outputs bytes to stdout. It's the terminal emulator that's running the program that is responsible for displaying those bytes, so that's where things like font would be set.

Re: Building a Tetris Clone in X86 Assembly, Pt. Ⅰ: Hello, World

#4
post #2

there's no comment section there so i'd figure i'd ask here: what is that font that it outputs? is that part of BIOS or something? or part of boot loader or PXE server? i assumed asm was the lowest level, is there some builtin font by default that can't be changed or something?

It is indeed the default BIOS font. You usually get it when switching to a TTY on Linux, as well.

Re: Building a Tetris Clone in X86 Assembly, Pt. Ⅰ: Hello, World

#5
post #2

there's no comment section there so i'd figure i'd ask here: what is that font that it outputs? is that part of BIOS or something? or part of boot loader or PXE server? i assumed asm was the lowest level, is there some builtin font by default that can't be changed or something?

The default video bios mode is used as-is here, https://en.wikipedia.org/wiki/Video_BIOS

There is no terminal emulator here. This hello world text is written directly to video memory -- and yes, there is a character rom, so placing a string of words in memory OR'd with bits set for video attributes (the #defines there) make it color.

Re: Building a Tetris Clone in X86 Assembly, Pt. Ⅰ: Hello, World

#6
post #5
post #2

there's no comment section there so i'd figure i'd ask here: what is that font that it outputs? is that part of BIOS or something? or part of boot loader or PXE server? i assumed asm was the lowest level, is there some builtin font by default that can't be changed or something?

The default video bios mode is used as-is here, https://en.wikipedia.org/wiki/Video_BIOS There is no terminal emulator here. This hello world text is written directly to video memory -- and yes, there is a character rom, so placing a string of words in memory OR'd with bits set for video attributes (the #defines there) make it color.

Furthermore, see an example of setting the mode explicitly from PC-DOS: https://github.com/johannesl/EditANSi/blob/master/ea.asm#L23 and http://fleder44.net/312/notes/18Graphics/index.html

Re: Building a Tetris Clone in X86 Assembly, Pt. Ⅰ: Hello, World

#8
Tetris seems to be one of those games that people love to size-optimise in Asm; here's a few in the http://www.pouet.net/prod.php?which=33942

http://www.pouet.net/prod.php?which=6951

There was a competition too, based on a standard appearance and behaviour, and the winner is 363 bytes:

https://files.scene.org/view/mags/hugi/compos/hc22fin.zip

Vaguely related; chess game in 487 bytes:

https://news.ycombinator.com/item?id=8954630

Re: Building a Tetris Clone in X86 Assembly, Pt. Ⅰ: Hello, World

#9
post #5
post #2

there's no comment section there so i'd figure i'd ask here: what is that font that it outputs? is that part of BIOS or something? or part of boot loader or PXE server? i assumed asm was the lowest level, is there some builtin font by default that can't be changed or something?

The default video bios mode is used as-is here, https://en.wikipedia.org/wiki/Video_BIOS There is no terminal emulator here. This hello world text is written directly to video memory -- and yes, there is a character rom, so placing a string of words in memory OR'd with bits set for video attributes (the #defines there) make it color.

More detailed article on the text mode:

https://en.wikipedia.org/wiki/VGA-compatible_text_mode

(Many, including me, still consider the original IBM VGA text font to be one of the most well-designed and readable for displaying text.)

Post reply on HN