TempleOSCDV4.05.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:13 +02:00
1 parent d1856315e0
commit 6fe38d2d9d
118 files changed
+4559 -5069

No files matched your search

+127 -108
View File
@@ -399,6 +399,7 @@ class CPatchTableAbsAddr
#define IET_IMM_U32 9
#define IET_REL_I64 10
#define IET_IMM_I64 11
#define IEF_IMM_NOT_REL 1
//reserved
#define IET_REL32_EXPORT 16
#define IET_IMM32_EXPORT 17
@@ -896,46 +897,47 @@ public class CHashGlblVar:CHashSrcSym
#define DOCT_NEW_LINE 1
#define DOCT_SOFT_NEW_LINE 2
#define DOCT_CURSOR 3
#define DOCT_TAB 4
#define DOCT_CLEAR 5
#define DOCT_PAGE_BREAK 6
#define DOCT_PAGE_LEN 7
#define DOCT_LEFT_MARGIN 8
#define DOCT_RIGHT_MARGIN 9
#define DOCT_HEADER 10
#define DOCT_FOOTER 11
#define DOCT_INDENT 12
#define DOCT_FOREGROUND 13
#define DOCT_BACKGROUND 14
#define DOCT_DFT_FOREGROUND 15
#define DOCT_DFT_BACKGROUND 16
#define DOCT_PMT 17
#define DOCT_WORD_WRAP 18
#define DOCT_UNDERLINE 19
#define DOCT_INVERT 20
#define DOCT_BLINK 21
#define DOCT_SHIFTED_X 22
#define DOCT_SHIFTED_Y 23
#define DOCT_CURSOR_MOVEMENT 24
#define DOCT_ANCHOR 25
#define DOCT_LINK 26
#define DOCT_BUTTON 27
#define DOCT_DATA 28
#define DOCT_CHECK_BOX 29
#define DOCT_LST 30
#define DOCT_MACRO 31
#define DOCT_MENU_VAL 32
#define DOCT_HEX_ED 33
#define DOCT_TREE 34
#define DOCT_SPRITE 35
#define DOCT_INS_BIN 36
#define DOCT_INS_BIN_SIZE 37
#define DOCT_SONG 38
#define DOCT_HIGHLIGHT 39
#define DOCT_HTML_CODE 40
#define DOCT_ERROR 41
#define DOCT_MARKER 4
#define DOCT_TAB 5
#define DOCT_CLEAR 6
#define DOCT_PAGE_BREAK 7
#define DOCT_PAGE_LEN 8
#define DOCT_LEFT_MARGIN 9
#define DOCT_RIGHT_MARGIN 10
#define DOCT_HEADER 11
#define DOCT_FOOTER 12
#define DOCT_INDENT 13
#define DOCT_FOREGROUND 14
#define DOCT_BACKGROUND 15
#define DOCT_DFT_FOREGROUND 16
#define DOCT_DFT_BACKGROUND 17
#define DOCT_PMT 18
#define DOCT_WORD_WRAP 19
#define DOCT_UNDERLINE 20
#define DOCT_INVERT 21
#define DOCT_BLINK 22
#define DOCT_SHIFTED_X 23
#define DOCT_SHIFTED_Y 24
#define DOCT_CURSOR_MOVEMENT 25
#define DOCT_ANCHOR 26
#define DOCT_LINK 27
#define DOCT_BUTTON 28
#define DOCT_DATA 29
#define DOCT_CHECK_BOX 30
#define DOCT_LST 31
#define DOCT_MACRO 32
#define DOCT_MENU_VAL 33
#define DOCT_HEX_ED 34
#define DOCT_TREE 35
#define DOCT_SPRITE 36
#define DOCT_INS_BIN 37
#define DOCT_INS_BIN_SIZE 38
#define DOCT_SONG 39
#define DOCT_HIGHLIGHT 40
#define DOCT_HTML_CODE 41
#define DOCT_ERROR 42
#define DOCT_NUM_TYPES 42
#define DOCT_NUM_TYPES 43
//CDocEntry.type flags upper bits
#define DOCET_BLINK ATTRF_BLINK
@@ -1015,6 +1017,8 @@ public class CHashGlblVar:CHashSrcSym
#define DOCEF_FILTER_SKIP 0x200000000000000
#define DOCEF_NO_CLICK_ON 0x400000000000000
#define DOCEF_DONT_DRAW 0x800000000000000 //only works on sprites
#define DOCEF_DFT_LEN 0x1000000000000000
#define DOCEF_DFT_RAW_TYPE 0x2000000000000000
#define DOCEG_HAS_ALLOC (DOCEF_TAG|DOCEF_AUX_STR|DOCEF_DEFINE|\
DOCEF_HTML_LINK|DOCEF_LEFT_MACRO|DOCEF_RIGHT_MACRO|DOCEF_BIN_PTR_LINK|\
@@ -1099,7 +1103,9 @@ public class CHashGlblVar:CHashSrcSym
#define DOCEf_FILTER_SKIP 57
#define DOCEf_NO_CLICK_ON 58
#define DOCEf_DONT_DRAW 59 //only works on sprites
#define DOCEf_NUM_FLAGS 60
#define DOCEf_DFT_LEN 60
#define DOCEf_DFT_RAW_TYPE 61
#define DOCEf_NUM_FLAGS 62
public class CDocBin
{
@@ -1213,9 +1219,9 @@ public class CDocEntry:CDocEntryBase
class CEdFindText
{
U8 find_text[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,"
U8 find_text[STR_LEN] fmtstr "$$DA-P,"
"A=\"Find :%s\"$$\n",
replace_text[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,"
replace_text[STR_LEN] fmtstr "$$DA-P,"
"A=\"Replace :%s\"$$\n";
Bool replace fmtstr "$$CB,\"Replace\"$$\n",
scan_fwd fmtstr "$$CB,\"Fwd\"$$\n",
@@ -1556,18 +1562,27 @@ public class CAutoCompleteDictGlbls
#define RT_F64 14
#define RT_UF64 15 //Fictitious
#define RT_NUM_IT 16
#define RT_MASK 0x0F
#define RTF_UNSIGNED 1
#define RTG_MASK 0xFF
#define TY_NULL 0x00
#define TY_IMM 0x10
#define TY_REG 0x20
#define TY_DISP 0x30
#define TY_SIB 0x40
#define TY_RIP_DISP32 0x50
//Not implemented. Requires storage for glblvar struct in intermediate code.
#define TY_RIP_DISP32_IMPORT 0x60
#define TY_STK 0x70
#define TY_MASK 0xF0
#define MDf_STK 8
#define MDf_IMM 9
#define MDf_REG 10
#define MDf_DISP 11
#define MDf_SIB 12
#define MDf_RIP_DISP32 13
#define MDF_NULL 0x0000
#define MDF_STK 0x0100
#define MDF_IMM 0x0200
#define MDF_REG 0x0400
#define MDF_DISP 0x0800
#define MDF_SIB 0x1000
#define MDF_RIP_DISP32 0x2000
#define MDG_MASK 0xFF00
#define MDG_REG_DISP_SIB (MDF_REG|MDF_DISP|MDF_SIB)
#define MDG_DISP_SIB_RIP (MDF_DISP|MDF_SIB|MDF_RIP_DISP32)
#define MDG_REG_DISP_SIB_RIP (MDF_REG|MDG_DISP_SIB_RIP)
#define ICF_R_TO_F64 0x000000001
#define ICF_R_TO_INT 0x000000002
@@ -1580,37 +1595,42 @@ public class CAutoCompleteDictGlbls
#define ICF_USE_INT 0x000000100 //highest priority
#define ICF_NO_DEPEND_RESULT 0x000000200
#define ICF_CODE_FINAL 0x000000400
#define ICF_NOT_ADDR 0x000000800
#define ICF_BY_VAL 0x000000800 //By value, not ref.
#define ICF_SHORT_JMP 0x000001000
#define ICF_A1_FIRST 0x000002000
#define ICF_PUSH_RESULT 0x000004000
#define ICF_PASS_TRACE 0x000008000
#define ICF_R_WAS_STK 0x000010000
#define ICF_A1_WAS_STK 0x000020000
#define ICF_A2_WAS_STK 0x000040000
#define ICF_PUSH_CMP 0x000080000 //for 50<i<j<=100 exps
#define ICF_POP_CMP 0x000100000 //for 50<i<j<=100 exps
#define ICF_DEPEND_RESULT 0x000200000
#define ICF_SWAP 0x000400000
#define ICf_DONT_PUSH_FLOAT0 23 // 3bits
#define ICf_DONT_POP_FLOAT0 26 // 3bits
#define ICF_ALTERNATE_TEMPLATE 0x020000000
#define ICF_LOCK 0x040000000
#define ICf_LOCK 30
#define ICF_NO_RIP 0x080000000
#define ICF_DEL_PREVIOUS_INS 0x100000000
#define ICF_PREVIOUS_DELETED 0x200000000
#define ICF_DONT_RESTORE 0x400000000
#define ICG_NO_CVT_MASK 0x7FFFFFF00
#define ICF_PUSH_RESULT 0x000002000
#define ICF_PASS_TRACE 0x000004000
#define ICF_R_WAS_STK 0x000008000
#define ICF_A1_WAS_STK 0x000010000
#define ICF_A2_WAS_STK 0x000020000
#define ICF_PUSH_CMP 0x000040000 //for 50<i<j<=100 exps
#define ICF_POP_CMP 0x000080000 //for 50<i<j<=100 exps
#define ICF_DEPEND_RESULT 0x000100000
#define ICF_SWAP 0x000200000
#define ICf_DONT_PUSH_FLOAT0 22 // 3bits
#define ICf_DONT_POP_FLOAT0 25 // 3bits
#define ICF_ALT_TEMPLATE 0x010000000
#define ICF_LOCK 0x020000000
#define ICf_LOCK 29
#define ICF_NO_RIP 0x040000000
#define ICF_DEL_PREVIOUS_INS 0x080000000
#define ICF_PREVIOUS_DELETED 0x100000000
#define ICF_DONT_RESTORE 0x200000000
#define ICG_NO_CVT_MASK 0x3FFFFFF00
#define IC_BODY_SIZE 0x80
#define ECF_HAS_PUSH_CMP 0x01 //for 50<i<j<=100 exps
U16 class CICType
{
U8 raw_type,mode;
};
class CICArg
{
U8 type,type_pointed_to;
U16 reg; //low is reg, high is index_reg+scale<<6
CICType type;
U8 type_pointed_to,pad;
U16 reg,pad; //low is reg, high is index_reg+scale<<6
I64 disp;
};
@@ -1633,16 +1653,14 @@ class CIntermediateCodeBase
class CIntermediateCode:CIntermediateCodeBase
{
I64 ic_flags,
ic_data;
ic_data,
ic_line;
CHashClass *ic_class,*ic_class2;
U32 ic_line;
CICArg a1,a2,r;
union {
U8 ic_body[IC_BODY_SIZE];
//Tree Links are created in OptPass012. An ADD opcode, for exmaple,
//points back to its two earlier addend instructions, not MAlloced,
//points back to its two earlier addend insts, not MAlloced,
//just pointers to previous CIntermediate codes in the array.
//Tree links get destroyed during Pass789A when they get overwrites
@@ -1720,7 +1738,7 @@ class CCodeMisc
#define SV_I_REG 9
#define SV_STI_LIKE 10 //$LK,"uasm_slash_val",A="FF:::/Compiler/AsmInit.CPP,uasm_slash_val"$ only.
#define SV_NONE 11
class CInstruction
class CInst
{
U8 ins_entry_num, //This entry num in opcode hash entry
opcode_cnt,
@@ -1760,17 +1778,18 @@ POP R8 POP RDI POP RSI POP RBP POP RBX POP RDX POP RCX POP RAX
#define REG_RBP 5
#define REG_RSI 6
#define REG_RDI 7
#define REG_R8 8
#define REG_RIP 16 //Used by compiler, not really it's num
//Be careful: RBPu8, RSPu8, RSIu8, RDIu8 are 20-24
#define REG_NONE 32 //noreg flag sets it to this
#define REG_ALLOC 33 //reg flag sets it to this
#define REG_UNDEF MIN_I8
#define REGG_C_CLOBBERED 0x003F //RAX,RCX,RDX,RBX
#define REGG_SAVED 0x0030 //RBP,RSP
#define REGG_C_TEMP_CLOBBERED 0x0300 //R8,R9
#define REGG_C_LOCAL_VARS 0xCCC0 //RSI,RDI,R10,R11,R14,R15
#define REGG_C_LOCAL_NON_PTR_VARS 0x3000 //R12,R13
#define REGG_CLOBBERED 0x013F //RAX,RCX,RDX,RBX,R8
#define REGG_SAVED 0x0030 //RBP,RSP
#define REGG_STK_TEMP 0x0200 //R9
#define REGG_LOCAL_VARS 0xCCC0 //RSI,RDI,R10,R11,R14,R15
#define REGG_LOCAL_NON_PTR_VARS 0x3000 //R12,R13
#define AOT_BIN_BLK_BITS 16
#define AOT_BIN_BLK_SIZE (1<<AOT_BIN_BLK_BITS)
@@ -1811,7 +1830,7 @@ class CAsmNum2
class CAsmIns
{
CInstruction *tempi;
CInst *tempi;
CAsmNum2 imm,disp;
I64 U8_cnt,last_opcode_U8,
REX,ModrM,SIB;
@@ -1923,11 +1942,12 @@ class CAsmUnresolvedRef
#define ARGT_XMM0 55 // Not implemented
#help_index "Compiler/Internal;Hash/System"
#define OCF_ALIAS 1
public class CHashOpcode:CHash
{
U8 instruction_entry_cnt,
pad[7];
CInstruction ins[1];
U16 inst_entry_cnt,
oc_flags,pad[2];
CInst ins[1];
};
#help_index "Compiler/Intermediate Code"
@@ -2026,7 +2046,7 @@ class CLexFile
class CAOTCtrl
{
I64 ip; //Instruction ptr
I64 ip; //Inst ptr
CAsmArg arg1,arg2;
CAOTBinBlk *bin;
I64 num_bin_U8s,
@@ -2048,7 +2068,7 @@ class CAOTCtrl
#define TK_NORMALSCRIPT 0x003
#define TK_IDENT 0x100
#define TK_STR 0x101
#define TK_INTEGER 0x102
#define TK_INT 0x102
#define TK_CHAR_CONST 0x103
#define TK_F64 0x104
#define TK_PLUS_PLUS 0x105
@@ -2194,10 +2214,9 @@ public class CCmpGlbls
CIntermediateCode ic_nop;
U32 *dual_U16_tokens1,*dual_U16_tokens2,*dual_U16_tokens3,
*binary_ops;
I64 num_stk_temps,num_reg_vars,num_non_ptr_vars,
I64 num_reg_vars,num_non_ptr_vars,
stk_temps_mask,reg_vars_mask,non_ptr_vars_mask;
U8 *to_stk_temps_map_odd,*to_stk_temps_map_even,
*to_reg_vars_map,*non_ptr_vars_map;
U8 *to_reg_vars_map,*non_ptr_vars_map;
I64 size_arg_mask[9],
compiled_lines;
};
@@ -2205,7 +2224,7 @@ public class CCmpGlbls
#help_index "Debugging/Unassemble"
class CUAsmGlbls
{
CInstruction **table_16_32,**table_64;
CInst **table_16_32,**table_64;
I64 table_16_32_entries,
table_64_entries,
ins64_arg_mask,
@@ -2820,7 +2839,7 @@ and identity-mapped! Do I need to repeat?
Ring-0-only and 100% identity-mapped, all the time.
All code is placed in just the lowest 2 Gig, so the CALL REL32
instruction always works. It never changes out of ring-0, remember,
inst always works. It never changes out of ring-0, remember,
so I don't need to waste cycles on use SYSCALL or software interrupts.
Everything just uses CALL REL32.
*/
@@ -3043,15 +3062,15 @@ public class CGridGlbls
Bool snap fmtstr "$$CB,\"Snap Grid\"$$\n",
show fmtstr "$$CB,\"Show Grid\"$$\n";
U8 pad[6];
F64 x fmtstr "$$DA-TRM,RT=F64,A=\"X Spacing:%6.3f\"$$\n",
y fmtstr "$$DA-TRM,RT=F64,A=\"Y Spacing:%6.3f\"$$\n",
z fmtstr "$$DA-TRM,RT=F64,A=\"Z Spacing:%6.3f\"$$\n",
x_offset fmtstr "$$DA-TRM,RT=F64,A=\"X Offset :%6.3f\"$$\n",
y_offset fmtstr "$$DA-TRM,RT=F64,A=\"Y Offset :%6.3f\"$$\n",
z_offset fmtstr "$$DA-TRM,RT=F64,A=\"Z Offset :%6.3f\"$$\n",
x_speed fmtstr "$$DA-TRM,RT=F64,A=\"X Speed :%6.3f\"$$\n",
y_speed fmtstr "$$DA-TRM,RT=F64,A=\"Y Speed :%6.3f\"$$\n",
z_speed fmtstr "$$DA-TRM,RT=F64,A=\"Z Speed :%6.3f\"$$\n";
F64 x fmtstr "$$DA-TRM,A=\"X Spacing:%6.3f\"$$\n",
y fmtstr "$$DA-TRM,A=\"Y Spacing:%6.3f\"$$\n",
z fmtstr "$$DA-TRM,A=\"Z Spacing:%6.3f\"$$\n",
x_offset fmtstr "$$DA-TRM,A=\"X Offset :%6.3f\"$$\n",
y_offset fmtstr "$$DA-TRM,A=\"Y Offset :%6.3f\"$$\n",
z_offset fmtstr "$$DA-TRM,A=\"Z Offset :%6.3f\"$$\n",
x_speed fmtstr "$$DA-TRM,A=\"X Speed :%6.3f\"$$\n",
y_speed fmtstr "$$DA-TRM,A=\"Y Speed :%6.3f\"$$\n",
z_speed fmtstr "$$DA-TRM,A=\"Z Speed :%6.3f\"$$\n";
};
#help_index "Ctrls"
@@ -3578,7 +3597,7 @@ public class CTextGlbls
{
I64 raw_col,raw_flags;
U8 *raw_screen_image;
I64 rows,cols; //Use TEXT_ROWS,TEXT_COLS
I64 rows,cols; //Use TEXT_ROWS,TEXT_COLS
U64 *font,*aux_font;
};