███████████████████████████████████████████████████████████████████████████████
█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█
█▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓█
█▓▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▓█
█▓▒░╔══════╦════════════════════════════════════════════════════════════╦═╗░▒▓█
█▓▒░║ BACK ║                                                            ╚═╣░▒▓█
█▓▒░╠══════╝                         Nox                                  ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░╠═══════════════════════════╦═════════════╦═══════════════════════════╣░▒▓█
█▓▒░║                           │ Project URL │                           ║░▒▓█
█▓▒░║                           └─────────────┘                           ║░▒▓█
█▓▒░║                    https://github.com/zosko/nox                     ║░▒▓█
█▓▒░╠══════════════════════════════╦══════╦═══════════════════════════════╣░▒▓█
█▓▒░║                              │ What │                               ║░▒▓█
█▓▒░║                              └──────┘                               ║░▒▓█
█▓▒░║  Simple Floppy bootable thing                                       ║░▒▓█
█▓▒░╠═════════════════════════════╦═════════╦═════════════════════════════╣░▒▓█
█▓▒░║                             │ Install │                             ║░▒▓█
█▓▒░║                             └─────────┘                             ║░▒▓█
█▓▒░║  - brew install dosfstools                                          ║░▒▓█
█▓▒░║  - brew install nasm                                                ║░▒▓█
█▓▒░║  - brew install qemu                                                ║░▒▓█
█▓▒░╠═══════════════════════╦══════════════════════╦══════════════════════╣░▒▓█
█▓▒░║                       │ How to make bootable │                      ║░▒▓█
█▓▒░║                       └──────────────────────┘                      ║░▒▓█
█▓▒░║  - nasm boot.asm -f bin -o boot.img                                 ║░▒▓█
█▓▒░║  - dd if=/dev/zero of=floppy.img bs=512 count=2880                  ║░▒▓█
█▓▒░║  - /usr/local/Cellar/dosfstools/4.2/sbin/mkfs.fat -F 12             ║░▒▓█
█▓▒░║     -n "Nox" floppy.img                                             ║░▒▓█
█▓▒░║  - dd if=boot.img of=floppy.img conv=notrunc                        ║░▒▓█
█▓▒░╠══════════════════════════════╦══════╦═══════════════════════════════╣░▒▓█
█▓▒░║                              │ Test │                               ║░▒▓█
█▓▒░║                              └──────┘                               ║░▒▓█
█▓▒░║  - qemu-system-i386 -fda floppy.img                                 ║░▒▓█
█▓▒░╠══════════════════════════════╦══════╦═══════════════════════════════╣░▒▓█
█▓▒░║                              │ Code │                               ║░▒▓█
█▓▒░║                              └──────┘                               ║░▒▓█
█▓▒░║ bits        16                                                      ║░▒▓█
█▓▒░║ org         0x7c00                                                  ║░▒▓█
█▓▒░║ x_cursor:     db 0                                                  ║░▒▓█
█▓▒░║ y_cursor:     db 0                                                  ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ genesis:                                                            ║░▒▓█
█▓▒░║   mov ax, 0x0003                                                    ║░▒▓█
█▓▒░║   int 0x10                                                          ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   call color_red                                                    ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ loop:                                                               ║░▒▓█
█▓▒░║   call read_key                                                     ║░▒▓█
█▓▒░║   cmp ah, 0x50                                                      ║░▒▓█
█▓▒░║   je move_down                                                      ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   cmp ah, 0x48                                                      ║░▒▓█
█▓▒░║   je move_up                                                        ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   cmp ah, 0x4b                                                      ║░▒▓█
█▓▒░║   je move_left                                                      ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   cmp ah, 0x4d                                                      ║░▒▓█
█▓▒░║   je move_right                                                     ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   cmp al, 0x31                                                      ║░▒▓█
█▓▒░║   je color_red                                                      ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   cmp al, 0x32                                                      ║░▒▓█
█▓▒░║   je color_green                                                    ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   cmp al, 0x33                                                      ║░▒▓█
█▓▒░║   je color_blue                                                     ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   cmp al, 0x20                                                      ║░▒▓█
█▓▒░║   je draw                                                           ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   jmp loop                                                          ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ display_char:                                                       ║░▒▓█
█▓▒░║   mov ah, 0x0e                                                      ║░▒▓█
█▓▒░║   mov bx, 0x000f                                                    ║░▒▓█
█▓▒░║   int 0x10                                                          ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   mov ax, 0x0003                                                    ║░▒▓█
█▓▒░║   int 0x10                                                          ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   jmp loop                                                          ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ read_key:                                                           ║░▒▓█
█▓▒░║   mov ah, 0x00                                                      ║░▒▓█
█▓▒░║   int 0x16                                                          ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ color_red:                                                          ║░▒▓█
█▓▒░║   mov bx, 0x00cc                                                    ║░▒▓█
█▓▒░║   jmp loop                                                          ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ color_green:                                                        ║░▒▓█
█▓▒░║   mov bx, 0x0022                                                    ║░▒▓█
█▓▒░║   jmp loop                                                          ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ color_blue:                                                         ║░▒▓█
█▓▒░║   mov bx, 0x0099                                                    ║░▒▓█
█▓▒░║   jmp loop                                                          ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ draw:                                                               ║░▒▓█
█▓▒░║   mov cx, 0x01                                                      ║░▒▓█
█▓▒░║   mov al, 0x20                                                      ║░▒▓█
█▓▒░║   mov ah, 0x09                                                      ║░▒▓█
█▓▒░║   int 0x10                                                          ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   jmp loop                                                          ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ move_left:                                                          ║░▒▓█
█▓▒░║   mov al, [y_cursor]                                                ║░▒▓█
█▓▒░║   cmp al, 0                                                         ║░▒▓█
█▓▒░║   jnle .continue                                                    ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   call loop                                                         ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   .continue:                                                        ║░▒▓█
█▓▒░║     dec al                                                          ║░▒▓█
█▓▒░║     mov [y_cursor], al                                              ║░▒▓█
█▓▒░║     call move_cursor                                                ║░▒▓█
█▓▒░║     ret                                                             ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ move_right:                                                         ║░▒▓█
█▓▒░║   mov al, [y_cursor]                                                ║░▒▓█
█▓▒░║   cmp al, 79                                                        ║░▒▓█
█▓▒░║   jl .continue                                                      ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   call loop                                                         ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   .continue:                                                        ║░▒▓█
█▓▒░║     inc al                                                          ║░▒▓█
█▓▒░║     mov [y_cursor], al                                              ║░▒▓█
█▓▒░║     call move_cursor                                                ║░▒▓█
█▓▒░║     ret                                                             ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ move_down:                                                          ║░▒▓█
█▓▒░║   mov al, [x_cursor]                                                ║░▒▓█
█▓▒░║   cmp al, 24                                                        ║░▒▓█
█▓▒░║   jl .continue                                                      ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   call loop                                                         ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   .continue:                                                        ║░▒▓█
█▓▒░║     inc al                                                          ║░▒▓█
█▓▒░║     mov [x_cursor], al                                              ║░▒▓█
█▓▒░║     call move_cursor                                                ║░▒▓█
█▓▒░║     ret                                                             ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ move_up:                                                            ║░▒▓█
█▓▒░║   mov al, [x_cursor]                                                ║░▒▓█
█▓▒░║   cmp al, 0                                                         ║░▒▓█
█▓▒░║   jnle .continue                                                    ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   call loop                                                         ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   .continue:                                                        ║░▒▓█
█▓▒░║     dec al                                                          ║░▒▓█
█▓▒░║     mov [x_cursor], al                                              ║░▒▓█
█▓▒░║     call move_cursor                                                ║░▒▓█
█▓▒░║     ret                                                             ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ move_cursor:                                                        ║░▒▓█
█▓▒░║   mov dh, [x_cursor]                                                ║░▒▓█
█▓▒░║   mov dl, [y_cursor]                                                ║░▒▓█
█▓▒░║   mov bh, 0x00                                                      ║░▒▓█
█▓▒░║   mov ah, 0x02                                                      ║░▒▓█
█▓▒░║   int 0x10                                                          ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║   call loop                                                         ║░▒▓█
█▓▒░║   ret                                                               ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ done:                                                               ║░▒▓█
█▓▒░║   jmp $                                                             ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░║ times 510 - ($-$$) db 0                                             ║░▒▓█
█▓▒░║ dw 0xAA55                                                           ║░▒▓█
█▓▒░║                                                                     ║░▒▓█
█▓▒░╚═════════════════════════════════════════════════════════════════════╝░▒▓█
█▓▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▓█
█▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓█
█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█
███████████████████████████████████████████████████████████████████████████████