TempleOSCDV4.13.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:48:03 +02:00
1 parent b84bbff6db
commit 122df6338e
78 files changed
+3570 -2729

No files matched your search

+22 -23
View File
@@ -88,8 +88,8 @@ Bool BootDVDProbeAll(CBlkDev *bd)
}
}
U0 ATARepEntry(I64 base0,I64 base1,I64 unit,I64 irq,U8 *msg,
CATARep **_head,I64 *num_hints)
U0 ATARepEntry(I64 base0,I64 base1,I64 unit,U8 *msg,
CATARep **_head,I64 *num_hints)
{
I64 type;
base0&=-8;
@@ -97,13 +97,13 @@ U0 ATARepEntry(I64 base0,I64 base1,I64 unit,I64 irq,U8 *msg,
CATARep *tmpha;
if (type=ATAProbe(base0,base1,unit)) {
*num_hints+=1;
"\n\n$$PURPLE$$ $$BT+X,\"%d\",LM=\"%d\\n\"$$$$FG$$$$LM,4$$",*num_hints,*num_hints;
"\n$$PURPLE$$ $$BT+X,\"%d\",LM=\"%d\\n\"$$$$FG$$$$LM,4$$",*num_hints,*num_hints;
if (type==BDT_ATA)
"$$RED$$Hard Drive $$LTBLUE$$ATA ";
else
"$$RED$$CD/DVD Drive $$LTBLUE$$ATAPI ";
"%s$$FG$$\nBase0:0x%04X Base1:0x%04X\nIrq:0x%02X Unit:%d$$LM,0$$\n",
msg,base0,base1,irq,unit;
"%s$$FG$$\nBase0:0x%04X Base1:0x%04X Unit:%d$$LM,0$$\n",
msg,base0,base1,unit;
if (_head) {
tmpha=CAlloc(sizeof(CATARep));
tmpha->next=*_head;
@@ -130,7 +130,7 @@ Bool ATARepExitAllApplications()
public I64 ATARep(Bool pmt=TRUE,Bool just_ide=FALSE,CATARep **_head=NULL)
{//Report possible ATA devices by probing. Hard disks and CD/DVDs.
I64 d1,d2,d3,i,j,k,cnt=0,unlock_flags=0,num_hints=0;
I64 d1,d2,i,j,k,cnt=0,unlock_flags=0,num_hints=0;
#assert NUM_BLKDEVS<=64
if (_head) *_head=NULL;
@@ -155,35 +155,34 @@ public I64 ATARep(Bool pmt=TRUE,Bool just_ide=FALSE,CATARep **_head=NULL)
d1=PCIReadU32(j.u8[2],j.u8[1],j.u8[0],0x10);
d2=PCIReadU32(j.u8[2],j.u8[1],j.u8[0],0x14);
d3=PCIReadU8(j.u8[2],j.u8[1],j.u8[0],0x3C);
if (d1&1 && d2&1) {
ATARepEntry(d1,d2,0,d3,"Primary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,d3,"Primary IDE",_head,&num_hints);
ATARepEntry(d1,d2,0,"Primary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,"Primary IDE",_head,&num_hints);
} else {
d1=0x1F0; d2=0x3F6; d3=14;
ATARepEntry(d1,d2,0,d3,"Primary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,d3,"Primary IDE",_head,&num_hints);
d1=0x1F0; d2=0x3F6;
ATARepEntry(d1,d2,0,"Primary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,"Primary IDE",_head,&num_hints);
}
d1=PCIReadU32(j.u8[2],j.u8[1],j.u8[0],0x18);
d2=PCIReadU32(j.u8[2],j.u8[1],j.u8[0],0x1C);
if (d1&1 && d2&1) {
ATARepEntry(d1,d2,0,d3,"Secondary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,d3,"Secondary IDE",_head,&num_hints);
ATARepEntry(d1,d2,0,"Secondary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,"Secondary IDE",_head,&num_hints);
} else {
d1=0x170; d2=0x376; d3=15;
ATARepEntry(d1,d2,0,d3,"Secondary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,d3,"Secondary IDE",_head,&num_hints);
d1=0x170; d2=0x376;
ATARepEntry(d1,d2,0,"Secondary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,"Secondary IDE",_head,&num_hints);
}
}
}
if (!cnt) {
d1=0x1F0; d2=0x3F6; d3=14;
ATARepEntry(d1,d2,0,d3,"Primary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,d3,"Primary IDE",_head,&num_hints);
d1=0x1F0; d2=0x3F6;
ATARepEntry(d1,d2,0,"Primary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,"Primary IDE",_head,&num_hints);
d1=0x170; d2=0x376; d3=15;
ATARepEntry(d1,d2,0,d3,"Secondary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,d3,"Secondary IDE",_head,&num_hints);
d1=0x170; d2=0x376;
ATARepEntry(d1,d2,0,"Secondary IDE",_head,&num_hints);
ATARepEntry(d1,d2,1,"Secondary IDE",_head,&num_hints);
}
'\n\n';
for (i=0;i<NUM_BLKDEVS;i++)
-2
View File
@@ -177,7 +177,6 @@ Bool GetBaseUnit(CBlkDev *bd)
{
I64 ch;
Bool probe;
" TempleOS\n\n\n";
#exe {
if (kernel_cfg->opts[CFG_DONT_PROBE])
StreamPrint("probe=FALSE;");
@@ -221,7 +220,6 @@ U0 BlkDevsInitAll()
blkdev.drvs=CAlloc(sizeof(CDrv)*NUM_DRVS);
for (i=0;i<NUM_DRVS;i++)
blkdev.let_to_drv[i]=&blkdev.drvs[i];
text.raw_col=0;
#exe {
if (kernel_cfg->opts[CFG_AUTO_MOUNT_IDE])
StreamPrint("AutoMountIDE;");
+4 -4
View File
@@ -155,6 +155,9 @@ U0 KernelMain()
//Before this point use $LK,"Snd",A="MN:Snd"$() and $LK,"BusyWait",A="MN:BusyWait"$()
//to debug. After this point, use $LK,"RawPrint",A="MN:RawPrint"$()
LBts(&sys_run_level,RLf_RAW);
"TempleOS V%5.3f\t%D %T\n\n",
sys_os_version,sys_compile_time,sys_compile_time;
TimersInit;
if (BIOSTotalMem<ToI64(0.95*MEM_MIN_MEG*0x100000))
RawPrint(4000,"!!! Requires $TX,"512Meg",D="DD_MEM_MIN_MEG"$ of RAM Memory !!!");
@@ -167,11 +170,8 @@ U0 KernelMain()
LBts(&sys_run_level,RLf_INTERRUPTS);
TimeStampFreqCal;
"Before BlkDevsInitAll\n";
BlkDevsInitAll;
"After BlkDevsInitAll\n";
"ChgDsk(':');\n";
ChgDsk(':');
#exe {StreamPrint("HomeSet(\"%s\");",kernel_cfg->home_dir);}
Gs->idle_task->cur_dv=blkdev.let_to_drv[*blkdev.home_dir-'A'];
+2 -1
View File
@@ -12,7 +12,8 @@ CTask *sys_winmgr_task,*sys_task_being_scrn_updated;
U8 *rev_bits_table, //Table with U8 bits revd
*set_bits_table; //Table with count of set bits in a U8
CDate local_time_offset;
F64 *pow10_I64;
F64 *pow10_I64,
sys_os_version=4.130;
CAutoCompleteDictGlbls acd;
CAutoCompleteGlbls ac;
+40 -21
View File
@@ -71,58 +71,77 @@ I64 CeilI64(I64 num,I64 to)
}
//See $LK,"::/Doc/Credits.DD"$.
#define LIN_CONGRUE_A 6364136223846793005
#define LIN_CONGRUE_C 1442695040888963407
I16 RandI16()
{//Random I16.
Fs->rand_seed=6364136223846793005*Fs->rand_seed+1442695040888963407;
I64 res=Fs->rand_seed;
res=LIN_CONGRUE_A*res^(res&0xFFFFFFFF0000)>>16+LIN_CONGRUE_C;
if (!Bt(&Fs->task_flags,TASKf_NONTIMER_RAND))
Fs->rand_seed^=GetTSC>>4;
return Fs->rand_seed.i16[0];
res^=GetTSC;
Fs->rand_seed=res;
return res.i16[0];
}
U16 RandU16()
{//Random U16.
Fs->rand_seed=6364136223846793005*Fs->rand_seed+1442695040888963407;
I64 res=Fs->rand_seed;
res=LIN_CONGRUE_A*res^(res&0xFFFFFFFF0000)>>16+LIN_CONGRUE_C;
if (!Bt(&Fs->task_flags,TASKf_NONTIMER_RAND))
Fs->rand_seed^=GetTSC>>4;
return Fs->rand_seed.u16[0];
res^=GetTSC;
Fs->rand_seed=res;
return res.u16[0];
}
I32 RandI32()
{//Random I32.
Fs->rand_seed=6364136223846793005*Fs->rand_seed+1442695040888963407;
I64 res=Fs->rand_seed;
res=LIN_CONGRUE_A*res^(res&0xFFFFFFFF0000)>>16+LIN_CONGRUE_C;
if (!Bt(&Fs->task_flags,TASKf_NONTIMER_RAND))
Fs->rand_seed^=GetTSC>>4;
return Fs->rand_seed.i32[0];
res^=GetTSC;
Fs->rand_seed=res;
return res.i32[0];
}
U32 RandU32()
{//Random U32.
Fs->rand_seed=6364136223846793005*Fs->rand_seed+1442695040888963407;
I64 res=Fs->rand_seed;
res=LIN_CONGRUE_A*res^(res&0xFFFFFFFF0000)>>16+LIN_CONGRUE_C;
if (!Bt(&Fs->task_flags,TASKf_NONTIMER_RAND))
Fs->rand_seed^=GetTSC>>4;
return Fs->rand_seed.u32[0];
res^=GetTSC;
Fs->rand_seed=res;
return res.u32[0];
}
I64 RandI64()
{//Random I64.
Fs->rand_seed=6364136223846793005*Fs->rand_seed+1442695040888963407;
I64 res=Fs->rand_seed;
res=LIN_CONGRUE_A*res^(res&0xFFFFFFFF0000)>>16+LIN_CONGRUE_C;
if (!Bt(&Fs->task_flags,TASKf_NONTIMER_RAND))
Fs->rand_seed^=GetTSC>>4;
return Fs->rand_seed;
res^=GetTSC;
Fs->rand_seed=res;
return res;
}
U64 RandU64()
{//Random U64.
Fs->rand_seed=6364136223846793005*Fs->rand_seed+1442695040888963407;
I64 res=Fs->rand_seed;
res=LIN_CONGRUE_A*res^(res&0xFFFFFFFF0000)>>16+LIN_CONGRUE_C;
if (!Bt(&Fs->task_flags,TASKf_NONTIMER_RAND))
Fs->rand_seed^=GetTSC>>4;
return Fs->rand_seed;
res^=GetTSC;
Fs->rand_seed=res;
return res;
}
F64 Rand()
{//Random F64.
I64 res=RandI64&0x3FFFFFFFFFFFFFFF;
return res/ToF64(0x4000000000000000);
I64 res=Fs->rand_seed;
res=LIN_CONGRUE_A*res^(res&0xFFFFFFFF0000)>>16+LIN_CONGRUE_C;
if (!Bt(&Fs->task_flags,TASKf_NONTIMER_RAND))
res^=GetTSC;
Fs->rand_seed=res;
return (res&0x3FFFFFFFFFFFFFFF)/ToF64(0x4000000000000000);
}
I64 Seed(I64 seed=0,CTask *task=NULL)
@@ -133,6 +152,6 @@ I64 Seed(I64 seed=0,CTask *task=NULL)
return task->rand_seed=seed;
} else {
LBtr(&task->task_flags,TASKf_NONTIMER_RAND);
return task->rand_seed=GetTSC>>4;
return task->rand_seed^=GetTSC;
}
}
+4
View File
@@ -30,15 +30,19 @@ SYS_DATA_BP:: DU64 0;
SYS_PROGRESSES::
SYS_PROGRESS1:: DU64 0;
SYS_PROGRESS1_MAX:: DU64 0;
SYS_PROGRESS1_T0:: DU64 0;
SYS_PROGRESS1_DESC:: DU8 PROGRESS_DESC_LEN DUP(0);
SYS_PROGRESS2:: DU64 0;
SYS_PROGRESS2_MAX:: DU64 0;
SYS_PROGRESS2_T0:: DU64 0;
SYS_PROGRESS2_DESC:: DU8 PROGRESS_DESC_LEN DUP(0);
SYS_PROGRESS3:: DU64 0;
SYS_PROGRESS3_MAX:: DU64 0;
SYS_PROGRESS3_T0:: DU64 0;
SYS_PROGRESS3_DESC:: DU8 PROGRESS_DESC_LEN DUP(0);
SYS_PROGRESS4:: DU64 0;
SYS_PROGRESS4_MAX:: DU64 0;
SYS_PROGRESS4_T0:: DU64 0;
SYS_PROGRESS4_DESC:: DU8 PROGRESS_DESC_LEN DUP(0);
#assert $$-SYS_PROGRESSES==sizeof(CProgress)*4
+1236 -1220
View File
File diff suppressed because it is too large. Load diff
+33 -38
View File
@@ -1375,10 +1375,6 @@ public class CDoc //Linked Text File header
updates_cnt;
CEdFindText *find_replace;
U8 *cur_sprite;//Set cur_sprite use (ip.pos.x,ip.pos.y) as input.
//Output is nearest. See $LK,"*_cur_elem_num=",A="FF:::/Adam/Gr/SpriteEd.HC,*_cur_elem_num=doc->"$ and $LK,"::/Demo/Graphics/Pick.HC"$.
I64 nearest_sprite_elem_num;
CEdFileName filename;
I64 file_attr;
I64 (*left_click_link)(CDoc *doc,CDocEntry *doc_e);
@@ -2138,34 +2134,35 @@ class CLexHashTableContext
#define CCF_KEEP_DOT 0x100
#define CCF_KEEP_NUM_SIGN 0x200
#define CCF_KEEP_AT_SIGN 0x400
#define CCf_PASS_TRACE_PRESENT 11
#define CCF_NOT_CONST 0x0000010000
#define CCF_NO_REG_OPT 0x0000020000
#define CCF_IN_QUOTES 0x0000040000
#define CCF_EXE_BLK 0x0000080000
#define CCF_HAS_MISC_DATA 0x0000100000
#define CCF_HAS_RETURN 0x0000200000
#define CCF_ASM_EXPRESSIONS 0x0000400000
#define CCF_UNRESOLVED 0x0000800000
#define CCF_LOCAL 0x0001000000
#define CCF_FUN_EXP 0x0002000000
#define CCf_FUN_EXP 25
#define CCF_POSTINC 0x0004000000
#define CCF_POSTDEC 0x0008000000
#define CCF_PREINC 0x0010000000
#define CCF_PREDEC 0x0020000000
#define CCF_ARRAY 0x0040000000
#define CCF_RAX 0x0080000000
#define CCF_USE_LAST_U16 0x0100000000
#define CCf_USE_LAST_U16 32
#define CCF_LAST_WAS_DOT 0x0200000000
#define CCF_AOT_COMPILE 0x0400000000
#define CCf_AOT_COMPILE 34
#define CCF_NO_ABSS 0x0800000000
#define CCF_PAREN 0x1000000000
#define CCf_PAREN 36
#define CCF_CLASS_IP 0x2000000000
#define CCF_DONT_MAKE_RES 0x4000000000
#define CCF_NO_CHAR_CONST 0x800
#define CCf_PASS_TRACE_PRESENT 12
#define CCF_NOT_CONST 0x0000020000
#define CCF_NO_REG_OPT 0x0000040000
#define CCF_IN_QUOTES 0x0000080000
#define CCF_EXE_BLK 0x0000100000
#define CCF_HAS_MISC_DATA 0x0000200000
#define CCF_HAS_RETURN 0x0000400000
#define CCF_ASM_EXPRESSIONS 0x0000800000
#define CCF_UNRESOLVED 0x0001000000
#define CCF_LOCAL 0x0002000000
#define CCF_FUN_EXP 0x0004000000
#define CCf_FUN_EXP 26
#define CCF_POSTINC 0x0008000000
#define CCF_POSTDEC 0x0010000000
#define CCF_PREINC 0x0020000000
#define CCF_PREDEC 0x0040000000
#define CCF_ARRAY 0x0080000000
#define CCF_RAX 0x0100000000
#define CCF_USE_LAST_U16 0x0200000000
#define CCf_USE_LAST_U16 33
#define CCF_LAST_WAS_DOT 0x0400000000
#define CCF_AOT_COMPILE 0x0800000000
#define CCf_AOT_COMPILE 35
#define CCF_NO_ABSS 0x1000000000
#define CCF_PAREN 0x2000000000
#define CCf_PAREN 37
#define CCF_CLASS_IP 0x4000000000
#define CCF_DONT_MAKE_RES 0x8000000000
public class CCmpCtrl
{
@@ -3295,6 +3292,7 @@ public class CTaskSettings
#define TASKf_PENDING_BREAK 11
#define TASKf_BREAK_TO_SHIFT_ESC 12
#define TASKf_KILL_AFTER_DBG 13
#define TASKf_NONTIMER_RAND 14
//CTask.display_flags
@@ -3700,15 +3698,11 @@ public class CDC
//Set by $LK,"DCSymmetrySet",A="MN:DCSymmetrySet"$() or $LK,"DCSymmetry3Set",A="MN:DCSymmetry3Set"$()
CGrSym sym;
I64 nearest_dist,
cur_sprite_elem_num,
nearest_sprite_elem_num; //num in a CSprite elem lst
I32 cur_x,cur_y,cur_z,pad;
I64 collision_cnt;
//Set by $LK,"DCF_RECORD_EXTENTS",A="MN:DCF_RECORD_EXTENTS"$
I64 min_x,max_x,min_y,max_y; //scrn coordinates
I64 nearest_dist,
min_x,max_x,min_y,max_y; //Set by $LK,"DCF_RECORD_EXTENTS",A="MN:DCF_RECORD_EXTENTS"$ (scrn coordinates)
U32 dc_signature,pad;
CTask *mem_task,*win_task;
@@ -3912,6 +3906,7 @@ public class CDbgGlbls
class CProgress
{
I64 val,max;
F64 t0;
U8 desc[PROGRESS_DESC_LEN];
};
+8 -4
View File
@@ -206,19 +206,23 @@ _extern SYS_CTRL_ALT_FLAGS
public _extern SYS_PROGRESS1 I64 progress1; //Current progress 1.
public _extern SYS_PROGRESS1_DESC
U8 progress1_desc[PROGRESS_DESC_LEN]; //Progress 1 desc.
public _extern SYS_PROGRESS1_MAX I64 progress1_max; //Max progress 1.
public _extern SYS_PROGRESS1_MAX I64 progress1_max; //Progress 1 max.
public _extern SYS_PROGRESS1_T0 F64 progress1_t0; //Progress 1 start time.
public _extern SYS_PROGRESS2 I64 progress2; //Current progress 2.
public _extern SYS_PROGRESS2_DESC
U8 progress2_desc[PROGRESS_DESC_LEN]; //Progress 2 desc.
public _extern SYS_PROGRESS2_MAX I64 progress2_max; //Max progress 2.
public _extern SYS_PROGRESS2_MAX I64 progress2_max; //Progress 2 max.
public _extern SYS_PROGRESS2_T0 F64 progress2_t0; //Progress 2 start time.
public _extern SYS_PROGRESS3 I64 progress3; //Current progress 3.
public _extern SYS_PROGRESS3_DESC
U8 progress3_desc[PROGRESS_DESC_LEN]; //Progress 3 desc.
public _extern SYS_PROGRESS3_MAX I64 progress3_max; //Max progress 3.
public _extern SYS_PROGRESS3_MAX I64 progress3_max; //Progress 3 max.
public _extern SYS_PROGRESS3_T0 F64 progress3_t0; //Progress 3 start time.
public _extern SYS_PROGRESS4 I64 progress4; //Current progress 4.
public _extern SYS_PROGRESS4_DESC
U8 progress4_desc[PROGRESS_DESC_LEN]; //Progress 4 desc.
public _extern SYS_PROGRESS4_MAX I64 progress4_max; //Max progress 4.
public _extern SYS_PROGRESS4_MAX I64 progress4_max; //Progress 4 max.
public _extern SYS_PROGRESS4_T0 F64 progress4_t0; //Progress 4 start time.
public _extern SYS_PROGRESSES
CProgress sys_progresses[NUM_PROGRESS_BARS]; //All progress bars.
+2
View File
@@ -394,6 +394,7 @@ extern U0 (*fp_set_std_palette)();
public extern U8 *Color2Str(U8 *buf,CColorROPU32 c);
public extern CColorROPU16 Str2ColorU16(U8 *st);
public extern CColorROPU32 Str2ColorU32(U8 *st);
#help_index "Hash"
#help_file "::/Doc/Hash"
public _extern _HASH_ADD U0 HashAdd(CHash *tmph,CHashTable *table);
@@ -573,6 +574,7 @@ public extern U0 QSort(U8 *base,I64 num, I64 width,
I64 (*fp_compare)(U8 *e1,U8 *e2));
public extern U0 QSortI64(I64 *base,I64 num,
I64 (*fp_compare)(I64 e1,I64 e2));
public extern F64 sys_os_version;
#help_index "Misc/Progress Bars"
public extern U0 ProgressBarsRst();
+2 -2
View File
@@ -5,7 +5,7 @@ fp_compare() passes by value instead of ref.
For ascending strings: return StrCmp(e1,e2);
For ascending ints : return e1-e2;
Maybe, look at $LK,"::/Demo/MultiCore/RadixSort.HC"$.
Maybe, look at $LK,"::/Demo/MultiCore/MPRadix.HC"$.
*/
I64 i,*left,*right,pivot;
if (num>1) {
@@ -89,7 +89,7 @@ For ascending strings: return StrCmp(*e1,*e2);
For ascending ints : return *e1-*e2;
Don't return e1-e2 if numbers can overflow, return -1,0 or 1.
Maybe, look at $LK,"::/Demo/MultiCore/RadixSort.HC"$.
Maybe, look at $LK,"::/Demo/MultiCore/MPRadix.HC"$.
*/
U8 *tmp;
if (width && num>1) {