Last Updated or created 2023-07-12
Followup on
Today two boot projects.
One using a bios extension, so it chip based.
Second is a floppy disk boot program. (Creating a test situation to get our old Boot floppy demo working. ( That one without using an operatingsystem like ms-dos.
Creating a Secondary Bios ROM
NAME mycode
.model small
ORG 0h
.code
dw 0AA55h ; Magic header your bios is looking for
db 16 ; lenght of this rom in 512 bytes == 8k
jmp short clear ; jmp to program
ORG 20h ; start of program
clear: mov cx,10 ; clear, set keyboard led and print 10 # chars
mov ah,0ah
mov al,31h
int 10h
mov bh,0
mov cx,1
start: mov al, 11000000b
out 80h, al
print: mov cx,10
mov ah,0ah
mov al,"#"
int 10h
loop1: nop ; loop until doomsday
jmp loop1
db -68 ; This makes the checksum 0
; steps to take: edit source, make this byte entry 0
; compile using make.bat in dosbox
; check checksum using my python script
; output was 68 hex 0x44
; edit asm file place -68 to make the checksum 0x00 again
; compile and burn to ROM
ORG 2000h ; create end of rom 0000h-1fffh = 8K
END
make.bat in dosbox
@ECHO OFF MASM /DARCH_TYPE="T" /DCPU_TYPE="V" 1; LINK 1; EXE2COM 1.EXE
Python script here: https://www.henriaanstoot.nl/2023/06/20/bios-hacking/
Write EEprom
minipro -w 1.COM -p AT28C64


Part 2 – Bootsector program !
Allmost the same as above, but booting from a Floppy disk.



Video mode info : https://stanislavs.org/helppc/int_10-0.html
Assembly code
use16 ; 16 bits org 0x7c00 ; start address ( change? ) mov ah,0x0 ; ah 0h - video mode mov al,0x0 ; al 0h - mode 0 - 40x25 chars int 10h ; scree routines mov cx,11h ; 11 chars mov ah,0ah ; ah 0ah - print char mode mov al,'#' ; choose char as # int 10h ; execute times 510 - ($-$$) db 0 ; fill rest 512 bytes sector dw 0xaa55 ; magic bytes
