[SeaBIOS] [PATCH 2/2] vgabios: implement read char in graphics mode
Rudolf Marek
r.marek at assembler.cz
Fri Jan 2 13:48:58 CET 2015
Hi,
If you want to go even more retro. Check ROM BASIC I extracted from old 286. I
programmed a ROM loader to it, so SeaBIOS can load it from misc/
http://assembler.cz/rombasic.rom
This is a complete ROM already. I have even an MP3 with cassette recored of IBM
diag tools, which I converted to ROM + implemented a cassette BIOS patch.
This can be loaded from fake "rom" which emulates the cassette in the ROM basic.
If anyone is interrested I can send to anyone.
Thanks
Rudolf
-------------- next part --------------
section .text
org 0x0
rom_start:
db 0x55, 0xaa, 0x41
init:
jmp near go_init
nop
times 17-4+$-init db 0x0
dw 0 ; we have no PCI ;)
dw pnp_header
db "(C) Rudolf Marek 2009, under GPL v2.0 "
db "IBM BASIC option ROM loader. Catenate with original 32KB basic from 0xf6000 "
db "to create 32KB+512B image. Fix its checksums using build_rom.c!",0
pnp_header:
db "$PnP"
db 0x1 ;struc rev
len db (end_table - pnp_header) / 16
dw 0 ; offset to next
db 0 ; padd
checksum2: db 0 ; checksum2
devid dd 0
manuf dw ibm
prod dw ibm_basic
type db 0x80
db 0x0
db 0x0
flg db 0x14 ;rom only required if selected as boot device, indicate we can do IPL
bcv dw 0x0
dv dw 0x0
bev dw go_bev
res2 dw 0x0
res dw 0x0
end_table:
go_init:
and ax,0xcf
or ax,0x20 ;see PnP spec 1.0A on pg 21
retf
go_bev:
cli
xor ax,ax
mov ss,ax
mov sp,0xfffe ;setup temporary stack
mov ax, cs
add ax, 32 ;jump 32 bytes forward where the rom starts (512 bytes forward right after this loader
push ax
xor ax,ax
push ax
retf ;jump to original entrypoint with IP=0
ibm db "IBM",0
ibm_basic db "ROM BASIC",0
times 512-$+rom_start db 0xff
More information about the SeaBIOS
mailing list