Files
TempleOS-Rijn/LT/UTILS/BOOTRAM.CPZ
T
2018-09-08 21:45:17 +02:00

38 lines
991 B
Plaintext

exe {KeepPrivate(ON);}
#include "/LT/OSMain/ADAMK.HPZ"
asm {
#include "/LT/OSMain/OSINC"
exe {KeepPrivate(OFF);}
CP_MY_RUN::
PUSH EBP
MOV EBP,ESP
MOV EBX,BOOT_CODE_RAM
JMP U4 SF_PARAM1[EBP]
}
exe {KeepPrivate(ON);}
exe {Externs2Imports(ON);}
#include "/LT/OSMain/ADAMK2.HPZ"
#include "/LT/OSMain/ADAMK3.HPZ"
exe {Externs2Imports(OFF);}
exe {KeepPrivate(OFF);}
LTextern CP_MY_RUN void MyRun(U1 *s);
public void Boot(I1 *filename)
{
U8 size;
OsMainStruct *hi_image=ReadFile(filename,&size),
*lo_image=sys_boot_base-sizeof(BinFileHeaderStruct);
Cli;
hi_image->boot_base=lo_image+sizeof(BinFileHeaderStruct);
hi_image->header_base=lo_image+hi_image->h.header_offset;
hi_image->boot_code=BOOT_CODE_RAM;
hi_image->sys_memblks=lo_image->sys_memblks;
MemCpy(&hi_image->gdttab,&lo_image->gdttab,sizeof(GdtTabStruct)*MAXGDT);
MemCpy(lo_image,hi_image,size);
MyRun(lo_image+sizeof(BinFileHeaderStruct)+lo_image->os_32start);
}