Nightly update (ISO SHA-1 8444f23)
This commit is contained in:
1 parent
aa53888517
commit
7980ccfc60
23 files changed
+1803
-1700
No files matched your search
Binary file not shown.
@@ -18,8 +18,8 @@ U0 LoadDocDefines()
|
||||
//$LK,"DD_BOOT_HIGH_LOC_DVD",A="FF:::/Adam/Opt/Boot/BootDVD.HC,DD_BOOT_HIGH_LOC_DVD"$
|
||||
|
||||
$TR-C,"LineRep"$
|
||||
$ID,4$DefinePrint("DD_TEMPLEOS_LOC","120,690");
|
||||
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","82,062");
|
||||
$ID,4$DefinePrint("DD_TEMPLEOS_LOC","120,785");
|
||||
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","82,151");
|
||||
$ID,-4$
|
||||
DefinePrint("DD_MP_VECT","%08X",MP_VECT_ADDR);
|
||||
DefinePrint("DD_MP_VECT_END","%08X",
|
||||
|
||||
+93
-15
@@ -29,18 +29,13 @@ U0 ODERstPtrs(CMathODE *ode)
|
||||
|
||||
public CMathODE *ODENew(I64 n,F64 max_tolerance=1e-6,I64 flags=0)
|
||||
{//Make differential equation ctrl struct. See $LK,"flags",A="MN:ODEF_HAS_MASSES"$.
|
||||
|
||||
//The tolerance is not precise.
|
||||
//You can min_tolerance and it will
|
||||
//dynamically adjust tolerance to utilize
|
||||
//the CPU.
|
||||
|
||||
I64 s=n*sizeof(F64);
|
||||
CMathODE *ode=MAlloc(sizeof(CMathODE));
|
||||
|
||||
ode->t=0;
|
||||
CMathODE *ode=CAlloc(sizeof(CMathODE));
|
||||
ode->t_scale=1.0;
|
||||
ode->base_t=0;
|
||||
ode->flags=flags;
|
||||
ode->n_internal=ode->n=n;
|
||||
ode->h=1e-6;
|
||||
@@ -48,22 +43,38 @@ public CMathODE *ODENew(I64 n,F64 max_tolerance=1e-6,I64 flags=0)
|
||||
ode->h_max=1e32;
|
||||
ode->max_tolerance=ode->min_tolerance=ode->tolerance_internal=max_tolerance;
|
||||
ode->win_task=ode->mem_task=Fs;
|
||||
ode->derivative=NULL;
|
||||
QueInit(&ode->next_mass);
|
||||
QueInit(&ode->next_spring);
|
||||
ode->acceleration_limit=ode->drag_v=ode->drag_v2=ode->drag_v3=0;
|
||||
|
||||
ode->state=CAlloc(s);
|
||||
ode->array_base=MAlloc(12*s);
|
||||
ODERstPtrs(ode);
|
||||
return ode;
|
||||
}
|
||||
|
||||
|
||||
public Bool ODEPause(CMathODE *ode,Bool val=ON)
|
||||
{//Pause ODE.
|
||||
Bool res;
|
||||
if (!ode) return OFF;
|
||||
res=LBEqu(&ode->flags,ODEf_PAUSED,val);
|
||||
if (val)
|
||||
while (Bt(&ode->flags,ODEf_BUSY))
|
||||
Yield;
|
||||
return res;
|
||||
}
|
||||
|
||||
public U0 ODEDel(CMathODE *ode)
|
||||
{//Free ODE node, but not masses or springs.
|
||||
I64 i;
|
||||
if (!ode) return;
|
||||
ODEPause(ode);
|
||||
Free(ode->state);
|
||||
Free(ode->array_base);
|
||||
if (ode->slave_tasks) {
|
||||
for (i=0;i<mp_cnt;i++)
|
||||
Kill(ode->slave_tasks[i]);
|
||||
Free(ode->slave_tasks);
|
||||
}
|
||||
Free(ode);
|
||||
}
|
||||
|
||||
@@ -319,6 +330,53 @@ U0 ODEApplyAccelerationLimit(CMathODE *ode)
|
||||
}
|
||||
}
|
||||
|
||||
U0 ODEMPTask(CMathODE *ode)
|
||||
{
|
||||
while (TRUE) {
|
||||
while (!Bt(&ode->mp_not_done_flags,Gs->num))
|
||||
Yield;
|
||||
if (ode->mp_derive)
|
||||
(*ode->mp_derive)(ode,ode->mp_t,
|
||||
Gs->num,ode->mp_state,ode->mp_DstateDt);
|
||||
LBtr(&ode->mp_not_done_flags,Gs->num);
|
||||
}
|
||||
}
|
||||
|
||||
U0 ODEMPWake(CMathODE *ode)
|
||||
{
|
||||
I64 i;
|
||||
if (!ode->slave_tasks) {
|
||||
ode->slave_tasks=CAlloc(mp_cnt*sizeof(CTask *));
|
||||
for (i=0;i<mp_cnt;i++)
|
||||
ode->slave_tasks[i]=Spawn(&ODEMPTask,ode,"ODE Slave",i);
|
||||
}
|
||||
for (i=0;i<mp_cnt;i++) {
|
||||
Suspend(ode->slave_tasks[i],FALSE);
|
||||
MPInt(I_WAKE,i);
|
||||
}
|
||||
}
|
||||
|
||||
U0 ODEMPSleep(CMathODE *ode)
|
||||
{
|
||||
I64 i;
|
||||
if (ode->slave_tasks) {
|
||||
while (ode->mp_not_done_flags)
|
||||
Yield;
|
||||
for (i=0;i<mp_cnt;i++)
|
||||
Suspend(ode->slave_tasks[i]);
|
||||
}
|
||||
}
|
||||
|
||||
U0 ODECallMPDerivative(CMathODE *ode,F64 t,F64 *state,F64 *DstateDt)
|
||||
{
|
||||
ode->mp_t=t;
|
||||
ode->mp_state=state;
|
||||
ode->mp_DstateDt=DstateDt;
|
||||
ode->mp_not_done_flags=1<<mp_cnt-1;
|
||||
do Yield;
|
||||
while (ode->mp_not_done_flags);
|
||||
}
|
||||
|
||||
U0 ODECallDerivative(CMathODE *ode,F64 t,F64 *state,F64 *DstateDt)
|
||||
{
|
||||
CMass *tmpm;
|
||||
@@ -334,7 +392,10 @@ U0 ODECallDerivative(CMathODE *ode,F64 t,F64 *state,F64 *DstateDt)
|
||||
}
|
||||
ODECalcSprings(ode);
|
||||
ODECalcDrag(ode);
|
||||
(*ode->derivative)(ode,t,state,DstateDt);
|
||||
if (ode->mp_derive)
|
||||
ODECallMPDerivative(ode,t,state,DstateDt);
|
||||
if (ode->derive)
|
||||
(*ode->derive)(ode,t,state,DstateDt);
|
||||
tmpm=ode->next_mass;
|
||||
while (tmpm!=&ode->next_mass) {
|
||||
if (!(tmpm->flags&MSF_INACTIVE)) {
|
||||
@@ -347,8 +408,12 @@ U0 ODECallDerivative(CMathODE *ode,F64 t,F64 *state,F64 *DstateDt)
|
||||
tmpm=tmpm->next;
|
||||
}
|
||||
ODEApplyAccelerationLimit(ode);
|
||||
} else
|
||||
(*ode->derivative)(ode,t,state,DstateDt);
|
||||
} else {
|
||||
if (ode->mp_derive)
|
||||
ODECallMPDerivative(ode,t,state,DstateDt);
|
||||
if (ode->derive)
|
||||
(*ode->derive)(ode,t,state,DstateDt);
|
||||
}
|
||||
}
|
||||
|
||||
U0 ODEOneStep(CMathODE *ode)
|
||||
@@ -499,7 +564,7 @@ U0 ODERK5OneStep(CMathODE *ode)
|
||||
F64 ode_alloced_factor=0.75;
|
||||
|
||||
U0 ODEsUpdate(CTask *task)
|
||||
{/* This routine is called by the $LK,"window mgr",A="FF:::/Adam/Gr/GrScrn.HC,ODEsUpdate"$ on a continuous
|
||||
{/* This routine is called by the $LK,"window mgr",A="FF:::/Adam/Gr/GrScrn.HC,ODEsUpdate"$on a continuous
|
||||
basis to allow real-time simulation. It is intended
|
||||
to provide ress good enough for games. It uses a runge-kutta
|
||||
integrator which is a better algorithm than doing it with Euler.
|
||||
@@ -537,7 +602,14 @@ it has a timeout.
|
||||
t_desired=ode->t_scale*d+t_initial;
|
||||
if (ode->flags&ODEF_PAUSED)
|
||||
ode->base_t+=t_desired-ode->t; //Slip
|
||||
else if (ode->derivative) {
|
||||
else {
|
||||
ode->flags|=ODEF_BUSY;
|
||||
if (ode->flags&ODEF_PAUSED)
|
||||
ode->base_t+=t_desired-ode->t; //Slip
|
||||
else {
|
||||
if (ode->derive || ode->mp_derive) {
|
||||
if (ode->mp_derive)
|
||||
ODEMPWake(ode);
|
||||
ODEState2Internal(ode);
|
||||
MemCpy(ode->initial_state,ode->state_internal,
|
||||
ode->n_internal*sizeof(F64));
|
||||
@@ -572,6 +644,12 @@ ode_done:
|
||||
|
||||
//Convenience call to set vals
|
||||
ODECallDerivative(ode,ode->t,ode->state_internal,ode->DstateDt);
|
||||
|
||||
if (ode->mp_derive)
|
||||
ODEMPSleep(ode);
|
||||
}
|
||||
}
|
||||
ode->flags&=~ODEF_BUSY;
|
||||
}
|
||||
ode->base_t+=(1.0-ode->t_scale)*d;
|
||||
ode=ode->next;
|
||||
@@ -592,7 +670,7 @@ ode_done:
|
||||
|
||||
ode=task->next_ode;
|
||||
while (ode!=&task->next_ode) {
|
||||
if (!(ode->flags&ODEF_PAUSED) && ode->derivative) {
|
||||
if (!(ode->flags&ODEF_PAUSED) && ode->derive) {
|
||||
if (ode->min_tolerance!=ode->max_tolerance) {
|
||||
if (d>0)
|
||||
ode->tolerance_internal*=10.0`d;
|
||||
|
||||
@@ -215,9 +215,9 @@ U0 AnimateTask(SpanAnimateStruct *a)
|
||||
a->saved_ode=SpanSave(ode);
|
||||
}
|
||||
a->start_wall_t=tS;
|
||||
ode->flags&=~ODEF_PAUSED;
|
||||
ODEPause(ode,OFF);
|
||||
} else {
|
||||
ode->flags|=ODEF_PAUSED;
|
||||
ODEPause(ode);
|
||||
a->elapsed_t+=tS-a->start_wall_t;
|
||||
}
|
||||
old_run=run_bttn.state;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
CMathODE *SpanNew()
|
||||
{
|
||||
CMathODE *ode=ODENew(0,1e-4,ODEF_HAS_MASSES|ODEF_PAUSED);
|
||||
ode->derivative=&MyDerivative;
|
||||
ode->derive=&MyDerivative;
|
||||
ode->drag_v2=0.002;
|
||||
ode->drag_v3=0.00001;
|
||||
ode->acceleration_limit=5e3;
|
||||
|
||||
@@ -300,7 +300,7 @@ U0 Init()
|
||||
next_action_key='1';
|
||||
zoom=1.0;
|
||||
ode=ODENew(0,1e-4,ODEF_HAS_MASSES);
|
||||
ode->derivative=&MyDerivative;
|
||||
ode->derive=&MyDerivative;
|
||||
ode->acceleration_limit=5e3;
|
||||
ode->drag_v2=0.000002;
|
||||
ode->drag_v3=0.0000001;
|
||||
@@ -323,7 +323,7 @@ U0 PlayShip()
|
||||
I64 arg1,arg2;
|
||||
F64 last_noise=0;
|
||||
Bool okay;
|
||||
ode->flags&=~ODEF_PAUSED;
|
||||
ODEPause(ode,OFF);
|
||||
MenuPush(
|
||||
"File {"
|
||||
" Abort(,CH_SHIFT_ESC);"
|
||||
@@ -417,7 +417,7 @@ U0 EditShip()
|
||||
MyMass *tmpm1=NULL,*tmpm2=NULL;
|
||||
CCtrl *bt_edit_mode=CtrlBttnNew(0,5*FONT_HEIGHT+4,80,,EMD_MODES_NUM,
|
||||
Define("ST_EDIT_MODES"),edit_mode_colors,&edit_mode_bttn);
|
||||
ode->flags|=ODEF_PAUSED;
|
||||
ODEPause(ode);
|
||||
MenuPush(
|
||||
"File {"
|
||||
" Abort(,CH_SHIFT_ESC);"
|
||||
@@ -534,7 +534,7 @@ U0 EditShip()
|
||||
CenterMasses;
|
||||
break;
|
||||
case 'd':
|
||||
ode->flags&=~ODEF_PAUSED;
|
||||
ODEPause(ode,OFF);
|
||||
ode->drag_v2=0.002;
|
||||
ode->drag_v3=0.0001;
|
||||
break;
|
||||
@@ -572,7 +572,7 @@ U0 EditShip()
|
||||
case MSG_KEY_UP:
|
||||
switch (arg1) {
|
||||
case 'd':
|
||||
ode->flags|=ODEF_PAUSED;
|
||||
ODEPause(ode);
|
||||
ode->drag_v2=0.000002;
|
||||
ode->drag_v3=0.0000001;
|
||||
break;
|
||||
|
||||
@@ -1317,7 +1317,7 @@ U0 InitLevel()
|
||||
PlaceShip(ST_ENEMY1);
|
||||
PlaceShip(ST_ENEMY2);
|
||||
show_level_msg=TRUE;
|
||||
ode->flags|=ODEF_PAUSED;
|
||||
ODEPause(ode);
|
||||
}
|
||||
|
||||
U0 Init()
|
||||
@@ -1386,7 +1386,7 @@ U0 XCaliber()
|
||||
Fs->draw_it=&DrawIt;
|
||||
do {
|
||||
ode=ODENew(0,0.01,ODEF_HAS_MASSES);
|
||||
ode->derivative=&MyDerivative;
|
||||
ode->derive=&MyDerivative;
|
||||
ode->min_tolerance=1e-9;
|
||||
ode->drag_v3=0.00001;
|
||||
Init;
|
||||
@@ -1492,7 +1492,7 @@ U0 XCaliber()
|
||||
ch=GetKey(&sc);
|
||||
if (ch=='\n')
|
||||
ch=0;
|
||||
ode->flags&=~ODEF_PAUSED;
|
||||
ODEPause(ode,OFF);
|
||||
show_level_msg=FALSE;
|
||||
} else if (game_over) {
|
||||
ch=ScanChar;
|
||||
|
||||
Binary file not shown.
@@ -65,13 +65,13 @@ public extern I64 PrsKeyWord(CCmpCtrl *cc);
|
||||
#help_index "Compiler;Cmd Line (Typically)"
|
||||
extern I64 Cmp(U8 *filename,
|
||||
U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0);
|
||||
|
||||
#help_index "Debugging/Unassemble"
|
||||
public extern U8 *U(U8 *rip,I64 cnt=20,I64 seg_size=64);
|
||||
public extern U0 Ui(U8 *buf,U8 **_rip,I64 seg_size=64,
|
||||
I64 *_jmp_dst=NULL,Bool just_ins=FALSE);
|
||||
public extern I64 Un(U8 *rip,I64 cnt=0x80,I64 seg_size=64);
|
||||
extern CUAsmGlbls uasm;
|
||||
|
||||
#help_index "Hash/System"
|
||||
public extern I64 HashEntrySize(CHashSrcSym *tmph);
|
||||
public extern I64 HashEntrySize2(CHashSrcSym *tmph);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
$MA,"Cd ",LM="Cd;Dir;\n"$$MA,"DrvC ",LM="Drv('C');\n"$$MA,"DrvD ",LM="Drv('D');\n"$$MA,"/ ",LM="Cd(\"/\");Dir;\n"$$MA,"TOS ",LM="Cd(\"/Home/TOS\");Dir;\n"$$MA,"Home ",LM="Cd(\"/Home\");Dir;\n"$$MA,"ChgDskT ",LM="DskChg('T');\n"$$MA,"MergeD ",LM="S2T(\"C:/*\",\"+r+S\");Merge(\"C:/*;!*/LineRep*\",\"D:/*;!*/LineRep*\",\"+r+d\");\n"$$MA,"MergeT ",LM="S2T(\"C:/*\",\"+r+S\");Merge(\"C:/*;!*/LineRep*\",\"T:/*;!*/LineRep*\",\"+r+d\");\n"$$MA,"D:/Wb ",LM="Cd(\"D:/Wb\");Dir;\n"$
|
||||
$MA,"MakeC ",LM="TOSBootHDIns('C');\n"$$MA+PU,"BootC ",LM="BootRAM(\"C:/Kernel.BIN.C\");"$$MA,"Regen ",LM="TOSRegen;\n"$$MA,"PreRegen",LM="TOSPreRegen;\n"$$MA,"MakeD ",LM="TOSBootHDIns('D');\n"$$MA+PU,"BootD ",LM="BootRAM(\"D:/Kernel.BIN.C\");"$$MA,"CopyDrv ",LM="TOSPmtAndCopyDrv;\n"$$MA,"Private ",LM="Cd(\"/Home/Private\");Dir;\n"$$MA-X+PU,"Budget ",LM="#include \"::/Apps/Budget/Load\";Budget(\"~/Private/Budget\");"$
|
||||
$MA,"MakeC ",LM="TOSBootHDIns('C');\n"$$MA+PU,"BootC ",LM="BootRAM(\"C:/Kernel.BIN.C\");"$$MA,"Regen ",LM="TOSRegen;\n"$$MA,"PreRegen",LM="TOSPreRegen;\n"$$MA,"MakeD ",LM="TOSBootHDIns('D');\n"$$MA+PU,"BootD ",LM="BootRAM(\"D:/Kernel.BIN.C\");"$$MA,"CopyDrv ",LM="TOSPmtAndCopyDrv;\n"$$MA,"Private ",LM="Cd(\"/Home/Private\");Dir;\n"$
|
||||
$MA,"Kernel ",LM="Cd(\"/Kernel\");Dir;\n"$$MA,"Compiler",LM="Cd(\"/Compiler\");Dir;\n"$$MA,"BlkDev ",LM="Cd(\"/Kernel/BlkDev\");Dir;\n"$$MA,"Mem ",LM="Cd(\"/Kernel/Mem\");Dir;\n"$$MA,"Serial ",LM="Cd(\"/Kernel/SerialDev\");Dir;\n"$$MA,"Bin ",LM="Cd(\"/Home/Sup1/Sup1Bin\");Dir;\n"$$MA,"HDAudio ",LM="Cd(\"/Home/Sup1/Sup1HDAudio\");Dir;\n"$$MA,"Examples",LM="Cd(\"/Home/Sup1/Sup1HDAudio/Examples\");Dir;\n"$$MA,"Dist ",LM="Cd(\"/Home/Sup1/Sup1Distro\");Dir;\n"$
|
||||
$MA,"Adam ",LM="Cd(\"/Adam\");Dir;\n"$$MA,"AutoComp",LM="Cd(\"/Adam/AutoComplete\");Dir;\n"$$MA,"Ctrls ",LM="Cd(\"/Adam/Ctrls\");Dir;\n"$$MA,"ABlkDev ",LM="Cd(\"/Adam/ABlkDev\");Dir;\n"$$MA,"DolDoc ",LM="Cd(\"/Adam/DolDoc\");Dir;\n"$$MA,"Gr ",LM="Cd(\"/Adam/Gr\");Dir;\n"$$MA,"God ",LM="Cd(\"/Adam/God\");Dir;\n"$$MA,"Snd ",LM="Cd(\"/Adam/Snd\");Dir;\n"$$MA,"Boot ",LM="Cd(\"/Adam/Opt/Boot\");Dir;\n"$$MA,"Utils ",LM="Cd(\"/Adam/Opt/Utils\");Dir;\n"$
|
||||
$LK+X,"ChgLog ",A="FI:::/Doc/ChgLog.DD"$$MA,"Blog ",LM="Blog;\n"$$MA,"EdGod ",LM="Ed(\"D:/Home/God.DD\");\n"$$MA,"EdNotes ",LM="Ed(\"::/Home/Private/TOSNotes.DD\");\n"$$MA,"BlogDir ",LM="Cd(\"/Home/Web/TAD/BlogDir\");Dir;\n"$$MA,"Partial ",LM="FreshenBlog;\n"$$MA,"CodeWalk",LM="CodeWalkThru;\n"$$MA,"TOSTheme",LM="TOSTheme;\n"$$MA,"Videos ",LM="Cd(\"/Home/Sup1/Sup1Videos\");Dir;\n"$
|
||||
@@ -97,7 +97,7 @@ $SP+PU,"ToTheFront",LM="#include \"::/Apps/ToTheFront/Run\"",BI=15$ $SP+PU," Spa
|
||||
$SP+PU,"JukeBox",LM="#include \"::/Apps/Psalmody/Load\";JukeBox(\"::/Apps/Psalmody/Examples\");",BI=24$ $SP+PU,"Psalmody",LM="#include \"::/Apps/Psalmody/Run\";",BI=25$ $SP+PU,"Budget",LM="#include \"::/Apps/Budget/Run\"",BI=26$ $SP+PU,"Logic",LM="#include \"::/Apps/Logic/Run\"",BI=27$ $SP+PU,"Vocab",LM="#include \"::/Apps/Vocabulary/Run\"",BI=28$
|
||||
|
||||
|
||||
$MA,"TestSuit",LM="#include \"::/Misc/OSTestSuite\";\n"$$MA,"TakeTour",LM="Cd(\"::/Misc/Tour\");;InFile(\"Tour\");\n"$$MA+PU,"PsalSup1",LM="#include \"::/Apps/Psalmody/Load\";Psalmody(\"~/Sup1/Sup1Hymns\");"$$MA-X+PU,"SymAlpha",LM="DocMax;Who;View;"$$MA-X+PU,"SymNum ",LM="DocMax;Who(\"+m\");View;"$
|
||||
$MA,"TestSuit",LM="#include \"::/Misc/OSTestSuite\";\n"$$MA,"TakeTour",LM="Cd(\"::/Misc/Tour\");;InFile(\"Tour\");\n"$$MA+PU,"PsalSup1",LM="#include \"::/Apps/Psalmody/Load\";Psalmody(\"~/Sup1/Sup1Hymns\");"$$MA-X+PU,"Budget ",LM="#include \"::/Apps/Budget/Load\";Budget(\"~/Private/Budget\");"$$MA-X+PU,"SymAlpha",LM="DocMax;Who;View;"$$MA-X+PU,"SymNum ",LM="DocMax;Who(\"+m\");View;"$
|
||||
| ||||