![]()
|
The PDF Version
Using this strategy we can fill
in the 1st screen, set our bank to 1, fill it again, set our bank to 2, fill etc. until it is full. So if
our bank is set to 3, we can start writing at 0xA000 and instead of starting at (0,0) it will actually be
part way down the screen.
void SetBankBIOS(short bank)
{ bank<<=modeinfo.WinGranularity;
__dpmi_regs r;
r.x.ax = 0x4F05;
r.x.bx=0x0000;
r.x.dx =bank;
__dpmi_int(0x10,&r);
} |
void SetBankBIOS(short bank)
{ bank<<=modeinfo.WinGranularity;
union REGS regs;
regs.x.ax=0x4F05;
regs.x.bx=0x0000;
regs.x.dx=bank;
int86(0x10,®s,®s);
}
|
void (Video::*SetBank)(short);
void Video::SetBankAlt(short bank)
{ bank<<=modeinfo.WinGranularity;
asm( "call *%0"
:
:"r" (pm_bank),"b" (0),"d"(bank)
: "%eax","%ebx","%ecx","%edx","%esi","%edi");
} |