// Main TempleOS header #help_index "" extern class CTask; extern class CDoc; extern class CCPU; extern class CHashClass; extern class CHashFun; extern class CExeImportExport; extern class CHeapCtrl; extern class CExeHeapGlbl; extern class CExe; extern class CDC; extern class CSrvCtrl; extern class CIntermediateCode; #define NULL 0 #define TRUE 1 #define FALSE 0 #define ON 1 #define OFF 0 #define MIN_I8 (-0x80) #define MAX_I8 0x7F #define MIN_U8 0 #define MAX_U8 0xFF #define MIN_I16 (-0x8000) #define MAX_I16 0x7FFF #define MIN_U16 0 #define MAX_U16 0xFFFF #define MIN_I32 (-0x80000000) #define MAX_I32 0x7FFFFFFF #define MIN_U32 0 #define MAX_U32 0xFFFFFFFF #define MIN_I64 (-0x8000000000000000) #define MAX_I64 0x7FFFFFFFFFFFFFFF #define MIN_U64 0 #define MAX_U64 0xFFFFFFFFFFFFFFFF #define INVALID_PTR MAX_I64 //(Int to F64 conversion is signed) #define MAX_U64_F64 (0x43F0000000000000(F64)) #define MAX_F64 (0x7FEFFFFFFFFFFFFF(F64)) #define MIN_F64 (0xFFEFFFFFFFFFFFFF(F64)) #define inf (0x7FF0000000000000(F64)) #define ì (0x7FF0000000000000(F64)) #define pi (0x400921FB54442D18(F64)) #define ã (0x400921FB54442D18(F64)) #define exp_1 (0x4005BF0A8B145769(F64)) //The number "e" #define log2_10 (0x400A934F0979A371(F64)) #define log2_e (0x3FF71547652B82FE(F64)) #define log10_2 (0x3FD34413509F79FF(F64)) #define loge_2 (0x3FE62E42FEFA39EF(F64)) #define sqrt2 (0x3FF6A09E667F3BCD(F64)) #define eps (0x3CB0000000000000(F64)) #help_index "Data Types/Simple" /*HolyC union structure is treated as a whole if no member is specified, similar to bit fields. See $LK,"EndianI64",A="MN:EndianI64"$() and $LK,"::/Demo/SubIntAccess.CPP"$. */ U16i union U16 { I8i i8[2]; U8i u8[2]; }; I16i union I16 { I8i i8[2]; U8i u8[2]; }; U32i union U32 { I8i i8[4]; U8i u8[4]; I16 i16[2]; U16 u16[2]; }; I32i union I32 { I8i i8[4]; U8i u8[4]; I16 i16[2]; U16 u16[2]; }; U64i union U64 { I8i i8[8]; U8i u8[8]; I16 i16[4]; U16 u16[4]; I32 i32[2]; U32 u32[2]; }; I64i union I64 { I8i i8[8]; U8i u8[8]; I16 i16[4]; U16 u16[4]; I32 i32[2]; U32 u32[2]; }; #help_index "Math/Complex" public class Complex { F64 x,y; }; #help_index "Data Types/Circular Queue" public class CQue { CQue *next,*last; }; #help_index "Math/Data Types;Graphics/Data Types" public class CD3I32 //Three dimensional pt { I32 x,y,z; }; public class CQueD3I32 { CQueD3I32 *next,*last; CD3I32 p; }; #help_index "Math/Data Types" public class CD2I32 //two dimensional pt { I32 x,y; }; public class CD2I64 //two dimensional pt { I64 x,y; }; public class CD3I64 //three dimensional pt { I64 x,y,z; }; public class CD2 //two dimensional pt { F64 x,y; }; #help_index "Math/Data Types;Math/CD3" public class CD3 //three dimensional pt { F64 x,y,z; }; #help_index "Data Types/Queue Vector" #define QUE_VECT_U8_CNT 512 public class CQueVectU8 { CQueVectU8 *next,*last; I64 total_cnt,node_cnt,min_index; U8 body[QUE_VECT_U8_CNT]; }; #help_index "Data Types/Fifo" public class CFifoU8 { U8 *buf; I64 mask,in_ptr,out_ptr; }; public class CFifoI64 { I64 *buf; I64 mask,in_ptr,out_ptr; }; #help_index "Date/CDate" #define CDATE_YEAR_DAYS 365.24225 #define CDATE_YEAR_DAYS_INT 36524225 #define CDATE_BASE_DAY_OF_WEEK 0 public I64 class CDate { U32 time; I32 date; }; #help_index "Date;Date/CDate" public class CDateStruct { U8 sec10000,sec100,sec,min,hour, day_of_week,day_of_mon,mon; I32 year; }; #help_index "Math/ODE" public class COrder2D3 { F64 x,y,z, DxDt,DyDt,DzDt; }; #define MSF_INACTIVE 1 #define MSF_FIXED 2 public class CMass { CMass *next,*last; COrder2D3 *state,*DstateDt; U0 start_saved_area; U32 flags,num; F64 mass,drag_profile_factor; U0 saved_state; F64 x,y,z, DxDt,DyDt,DzDt; U0 end_saved_area; }; #define SSF_INACTIVE 1 #define SSF_NO_COMPRESSION 2 #define SSF_NO_TENSION 4 public class CSpring { CSpring *next,*last; CMass *end1,*end2; F64 f,displacement; //set for you to check U0 start_saved_area; U32 flags,num, end1_num,end2_num; F64 const,rest_len; U0 end_saved_area; }; //Ordinary Differential Equations #define ODEF_HAS_MASSES 1 #define ODEF_PAUSED 2 #define ODEF_STARTED 4 #define ODE_SIGNATURE_VAL 'ODES' public class CMathODE { CMathODE *next,*last; U32 ode_signature,pad; I64 flags,n,n_internal; CMass *next_mass,*last_mass; CSpring *next_spring,*last_spring; F64 drag_v, //drag proportional to velocity drag_v2, //drag proportional to velocity squared drag_v3, //drag proportional to velocity cubed acceleration_limit, //This clips acceleration base_t, t,t_scale, h,h_min,h_max; //This is not precise, just a ballpark. //TempleOS CMathODE's are for video games //not science. It bails if it takes //too long. F64 min_tolerance,max_tolerance; F64 tolerance_internal, *array_base, *state, *state_internal, *DstateDt, *state_scale, *initial_state, *temp0,*temp1,*temp2,*temp3, *temp4,*temp5,*temp6,*temp7; CTask *mem_task,*win_task; U0 (*derivative)(CMathODE *o,F64 t,F64 *state,F64 *DstateDt); I64 user_data; }; #help_index "Processor" //IDT entry types #define IDTET_TASK 0x05 #define IDTET_IRQ 0x0E #define IDTET_TRAP 0x0F //Same as IRQ but doesnt do CLI. //Interrupts //0x00-0x1F are reserved by Intel #define I_DIVIDE_BY_ZERO 0x00 #define I_SINGLE_STEP 0x01 #define I_NMI 0x02 #define I_BPT 0x03 #define I_PAGE_FAULT 0x0E //0x20-0x2F are used for hardware #define I_TIMER 0x20 //Software Interrupts #define I_MP_CRASH 0x30 #define I_WAKE 0x31 #define I_DBG 0x32 //See $LK,"ST_INT_NAMES",A="MN:ST_INT_NAMES"$ //You might want to start bwd from //0xFF for your own interrupts. #define I_USER 0x40 #define MP_MAX_PROCESSORS 128 #define SYS_START_CR0 0x0031 #define RFLAGf_CARRY 0 #define RFLAGf_PARITY 2 #define RFLAGf_AUX_CARRY 4 #define RFLAGf_ZERO 6 #define RFLAGf_SIGN 7 #define RFLAGf_TRAP 8 //Single Step #define RFLAGf_INT 9 #define RFLAGf_DIR 10 #define RFLAGf_OVERFLOW 11 #define RFLAGf_IOPL0 12 // I/O Privilege Level #define RFLAGf_IOPL1 13 #define RFLAGf_NESTED_TASK 14 #define RFLAGf_RESUME 16 #define RFLAGf_V8086 17 #define RFLAGf_ALIGN_CHECK 18 #define RFLAGf_VINT 19 //Virtual Interrupt #define RFLAGf_VINT_PENDING 20 #define RFLAGf_ID 21 #define SYS_START_RFLAGS 0x0000 #define SYS_NORMAL_RFLAGS (1< (Exit and Save) #define DOCEF_QUIT 0x2000000000 //Send (Abort) #define DOCEF_FROM_START 0x4000000000 #define DOCEF_HAS_BORDER 0x8000000000 #define DOCEF_SOLID_BORDER 0x10000000000 #define DOCEF_BORDER_PLOT 0x20000000000 #define DOCEF_CHECKED_COLLAPSED 0x40000000000 //Checked or Collapsed #define DOCEF_CHECK_COLLAPSABLE 0x80000000000 #define DOCEF_REFRESH_DATA 0x100000000000 #define DOCEF_DATA_IS_PTR 0x200000000000 #define DOCEF_HAS_TERMINATOR 0x400000000000 #define DOCEF_ZERO_BASED 0x800000000000 #define DOCEF_HOLD 0x1000000000000 #define DOCEF_TREE 0x2000000000000 #define DOCEF_LST 0x4000000000000 #define DOCEF_SKIP 0x8000000000000 #define DOCEF_POPUP 0x10000000000000 #define DOCEF_SKIP_IN_FORM 0x20000000000000 #define DOCEF_HARD_SKIP 0x40000000000000 #define DOCEF_FILTER_SKIP 0x80000000000000 #define DOCEF_NO_CLICK_ON 0x100000000000000 #define DOCEF_DONT_DRAW 0x200000000000000 //only works on sprites #define DOCEF_UPDATE_DATA 0x400000000000000 #define DOCEG1_DONT_EDIT (DOCEF_DEFINE|DOCEF_HTML_LINK|\ DOCEF_BIN_PTR_LINK|DOCEF_SCROLLING_X|DOCEF_TAG_CB) //These are identical to Doc flags #define DOCEF_HIGHLIGHT 0x4000000 #define DOCEF_WORD_WRAP 0x8000000 #define DOCEF_BLINK ATTRF_BLINK #define DOCEF_INVERT ATTRF_INVERT #define DOCEF_SELECTED ATTRF_SELECTED #define DOCEF_UNDERLINE ATTRF_UNDERLINE #define DOCEf_HIGHLIGHT 26 #define DOCEf_WORD_WRAP 27 #define DOCEf_BLINK ATTRf_BLINK #define DOCEf_INVERT ATTRf_INVERT #define DOCEf_SELECTED ATTRf_SELECTED #define DOCEf_UNDERLINE ATTRf_UNDERLINE //CDocEntry.de_flags. These first 15 are arg= #define DOCEf_TAG 0 #define DOCEf_AUX_STR 1 #define DOCEf_DEFINE 2 #define DOCEf_HTML_LINK 3 #define DOCEf_LEFT_EXP 4 #define DOCEf_LEFT_MACRO 5 #define DOCEf_RIGHT_EXP 6 #define DOCEf_RIGHT_MACRO 7 #define DOCEf_HAS_BIN 8 #define DOCEf_BIN_PTR_LINK 9 #define DOCEf_RAW_TYPE 10 #define DOCEf_SHIFTED_X 11 #define DOCEf_SHIFTED_Y 12 #define DOCEf_SCROLLING_X 13 #define DOCEf_USER_DATA 14 //CDocEntry.de_flags. These are +/- flags #define DOCEf_LEFT_CB 15 #define DOCEf_LEFT_AUTO 16 #define DOCEf_RIGHT_CB 17 #define DOCEf_RIGHT_AUTO 18 #define DOCEf_TAG_CB 19 #define DOCEf_LEFT_X 20 #define DOCEf_CENTER_X 21 #define DOCEf_RIGHT_X 22 #define DOCEf_TOP_Y 23 #define DOCEf_CENTER_Y 24 #define DOCEf_BOTTOM_Y 25 //HL...UL #define DOCEf_PAGE_REL_Y 32 #define DOCEf_MARGIN_REL_X 33 #define DOCEf_WIN_REL 34 #define DOCEf_LINK 35 #define DOCEf_ESC 36 //Send (Exit and Save) #define DOCEf_QUIT 37 //Send (Abort) #define DOCEf_FROM_START 38 #define DOCEf_HAS_BORDER 39 #define DOCEf_SOLID_BORDER 40 #define DOCEf_BORDER_PLOT 41 #define DOCEf_CHECKED_COLLAPSED 42 //Checked or Collapsed #define DOCEf_CHECK_COLLAPSABLE 43 #define DOCEf_REFRESH_DATA 44 #define DOCEf_DATA_IS_PTR 45 #define DOCEf_HAS_TERMINATOR 46 #define DOCEf_ZERO_BASED 47 #define DOCEf_HOLD 48 #define DOCEf_TREE 49 #define DOCEf_LST 50 #define DOCEf_SKIP 51 #define DOCEf_POPUP 52 #define DOCEf_SKIP_IN_FORM 53 #define DOCEf_HARD_SKIP 54 #define DOCEf_FILTER_SKIP 55 #define DOCEf_NO_CLICK_ON 56 #define DOCEf_DONT_DRAW 57 //only works on sprites #define DOCEf_UPDATE_DATA 58 #define DOCEf_NUM_FLAGS 59 public class CDocBin { CDocBin *next,*last; I32 temp_use_cnt,renum_num; U8 *tag; U0 start; U32 num,flags,size,use_cnt; U0 end; U8 *data; U0 pad;#assert !($$&7) //(compiler lags one token) }; #define DOC_SCROLL_SPEED 8 #define DOCSS_NORMAL 0 #define DOCSS_SINGLE_QUOTE 1 #define DOCSS_DBL_QUOTE 2 #define DOCSS_COMMENT 3 #define DOCSS_CPP_Z_COMMENT 4 #define TERM_ATTR_TEXT WHITE<<4+BLUE #define TERM_ATTR_BORDER WHITE<<4+LTBLUE #define DOC_ATTR_DFT_TEXT WHITE<<4+BLACK #define DOC_COLOR_ALT_TEXT LTGRAY #define DOC_COLOR_LINK RED #define DOC_COLOR_MACRO LTBLUE #define DOC_COLOR_ANCHOR DKGRAY #define DOC_COLOR_TREE PURPLE #define DOC_COLOR_PMT GREEN #define DOC_COLOR_BIN CYAN #define DOC_COLOR_KEYWORD BLUE #define DOC_COLOR_KEYWORD2 LTRED #define DOC_COLOR_COMMENT GREEN #define DOC_COLOR_QUOTE BROWN public class CDocSettings { U32 final_u32_attr; I16 left_margin,right_margin,indent; U16 page_len,header,footer; I8 shifted_x,shifted_y; U8 state,comment_depth,paren_depth,brace_depth, cur_text_attr,dft_text_attr; }; #define DOC_DFT MIN_I32 public class CDocEntryBase { //This is a shortened structure for //cmds like the text cmd which //don't require the full CDocEntry structure. CDocEntryBase *next,*last; U8 *tag; union { U8 type_u8; //this stores the code U32 type; //these store attr flags }; I32 page_line_num; I64 de_flags; I32 x,y; U32 min_col,max_col; CDocSettings settings; I64 user_data; U0 pad;#assert !($$&7) //(compiler lags one token) }; public class CDocEntry:CDocEntryBase { union { I64 attr; I64 cursor_x_offset; I64 (*left_cb)(CDoc *doc,CDocEntry *doc_e); I64 left_exp; }; U8 *left_macro; union { I64 cursor_y_offset; I64 (*right_cb)(CDoc *doc,CDocEntry *doc_e); I64 right_exp; }; U8 *right_macro; U8 *(*tag_cb)(CDoc *doc,CDocEntry *doc_e,CTask *mem_task); U8 *define_str, *aux_str, *bin_ptr_link, *html_link, *my_fmt_data; I64 hex_ed_width; I32 scroll_len, len, bin_num; U8 raw_type,pad[3]; CDocBin *bin_data; U8 *data; U0 pad;#assert !($$&7) //(compiler lags one token) }; //$LK,"DocFormDo",A="MN:DocFormDo"$() $LK,"DocMenuDo",A="MN:DocMenuDo"$() $LK,"DocDo",A="MN:DocDo"$() $LK,"PopUpMenu",A="MN:PopUpMenu"$() #define DOF_MIN_SIZE 0x01 #define DOF_INTERCEPT_TASK_END 0x02 #define DOF_DONT_HOME 0x04 #define DOF_WIN_MAX 0x08 #define DOF_DONT_TEXT_ATTR 0x10 #define DOF_DONT_WINMGR_SYNC 0x20 #define DOF_DONT_SHOW 0x40 //Combines with $LK,"Editor Flags",A="MN:EDF_BAIL"$ class CEdFindText { U8 find_text[136] fmtstr "$$DA-P,135,A=\"Find :%s\"$$\n", replace_text[136] fmtstr "$$DA-P,135,A=\"Replace :%s\"$$\n"; Bool replace fmtstr "$$CB,\"Replace\"$$\n", scan_fwd fmtstr "$$CB,\"Fwd\"$$\n", scan_selected_text fmtstr "$$CB,\"Selection\"$$\n", match_case fmtstr "$$CB,\"Match Case\"$$\n", whole_labels fmtstr "$$CB,\"Whole Labels\"$$\n", local_var fmtstr "$$CB,\"Rename Local Var\"$$\n", pmt,pad; I64 filter_lines fmtstr "$$DA,131,A=\"Filter Lines:%d\"$$\n"; }; class CEdFileName { U8 name[256] fmtstr "$$DA-P,255,A=\"FileName:%s\"$$"; }; //$LK,"Ed",A="MN:Ed"$() #define EDF_BAIL 0x100 #define EDF_COLLAPSE 0x200 #define EDF_UNCOLLAPSE 0x400 //Combines with $LK,"Document Flags",A="MN:DOF_MIN_SIZE"$ #define EDf_BAIL 8 #define EDf_COLLAPSE 9 #define EDf_UNCOLLAPSE 10 // DOC header flags #define DOCF_PLAIN_TEXT 0x1 #define DOCF_PLAIN_TEXT_WITH_TABS 0x2 //has '\t', not DOCT_TAB #define DOCF_NO_CURSOR 0x4 #define DOCF_CARRIAGE_RETURN 0x8 #define DOCF_DBL_DOLLARS 0x10 #define DOCF_COLOR_NAMES 0x20 //Reserved x2 #define DOCF_BORDER_DOC 0x100 #define DOCF_FORM 0x200 #define DOCF_MIN_SIZE 0x400 #define DOCF_HIDE_CURSOR 0x800 //use $LK,"DocCursor",A="MN:DocCursor"$ #define DOCF_NO_SCROLL_BARS 0x1000 //use $LK,"DocScroll",A="MN:DocScroll"$ #define DOCF_ALLOW_UNDO 0x2000 #define DOCF_DONT_SHOW 0x4000 #define DOCF_HAS_SONG 0x8000 #define DOCF_MORE 0x10000 #define DOCF_BWD_MOVEMENT 0x20000 #define DOCF_NULL_GRAB_SCROLL 0x40000 #define DOCF_DONT_SWAP_OUT 0x80000 #define DOCF_DO_FULL_REFRESH 0x100000 #define DOCF_BREAK_UNLOCKED 0x200000 //Reserved x2 #define DOCF_HIGHLIGHT DOCEF_HIGHLIGHT #define DOCF_WORD_WRAP DOCEF_WORD_WRAP #define DOCF_BLINK DOCEF_BLINK #define DOCF_INVERT DOCEF_INVERT #define DOCF_SELECTED DOCEF_SELECTED #define DOCF_UNDERLINE DOCEF_UNDERLINE #define DOCF_OVERSTRIKE 0x100000000 #define DOCF_IN_DOLLAR 0x200000000 #define DOCF_SUPERSCRIPT_MODE 0x400000000 #define DOCF_SUBSCRIPT_MODE 0x800000000 #define DOCF_UNDO_DIRTY 0x1000000000 #define DOCf_PLAIN_TEXT 0 #define DOCf_PLAIN_TEXT_WITH_TABS 1 //has '\t', not DOCT_TAB #define DOCf_NO_CURSOR 2 #define DOCf_CARRIAGE_RETURN 3 #define DOCf_DBL_DOLLARS 4 #define DOCf_COLOR_NAMES 5 //Reserved x2 #define DOCf_BORDER_DOC 8 #define DOCf_FORM 9 #define DOCf_MIN_SIZE 10 #define DOCf_HIDE_CURSOR 11 //use $LK,"DocCursor",A="MN:DocCursor"$ #define DOCf_NO_SCROLL_BARS 12 //use $LK,"DocScroll",A="MN:DocScroll"$ #define DOCf_ALLOW_UNDO 13 #define DOCf_DONT_SHOW 14 #define DOCf_HAS_SONG 15 #define DOCf_MORE 16 #define DOCf_BWD_MOVEMENT 17 #define DOCf_NULL_GRAB_SCROLL 18 #define DOCf_DONT_SWAP_OUT 19 #define DOCf_DO_FULL_REFRESH 20 #define DOCf_BREAK_UNLOCKED 21 //Reserved x2 #define DOCf_HIGHLIGHT DOCEf_HIGHLIGHT #define DOCf_WORD_WRAP DOCEf_WORD_WRAP #define DOCf_BLINK DOCEf_BLINK #define DOCf_INVERT DOCEf_INVERT #define DOCf_SELECTED DOCEf_SELECTED #define DOCf_UNDERLINE DOCEf_UNDERLINE #define DOCf_OVERSTRIKE 32 #define DOCf_IN_DOLLAR 33 #define DOCf_SUPERSCRIPT_MODE 34 #define DOCf_SUBSCRIPT_MODE 35 #define DOCf_UNDO_DIRTY 36 //locked flags #define DOClf_LOCKED 0 class CDocUndo { CDocUndo *next,*last; I64 size,doc_flags,time_stamp; U8 *body; }; //See $LK,"DocMenuDo",A="MN:DocMenuDo"$() #define DOCM_CANCEL (-1) #define DOC_SIGNATURE_VAL 'DocS' #define DOC_RECALC 0 #define DOC_RECALC_FIND_CURSOR 1 #define DOC_RECALC_TO_SCREEN 2 public class CDoc //Linked Text File header {//See $LK,"Doc",A="HI:Doc"$ for documentation. CDocEntryBase root; I64 flags,locked_flags; CDocEntry *cur_entry,*old_cur_entry; I32 cur_data_col,old_cur_data_col, line_start_col,cur_top_line_num, ext_ascii_val,ext_ascii_cnt, //Like , works dollar_buf_size,dollar_buf_ptr; U8 *dollar_buf; //When entering $$ commands, it buffers them until the end $$. CTask *win_task,*mem_task,*owning_task; I32 page_line_num,undo_cnt, x,y,min_x,max_x,min_y,max_y; I64 line,col,best_d, old_win_top,old_win_bottom, old_win_left,old_win_right, cmd_U8; U32 doc_signature,cur_bin_num; I64 max_entries, refresh_cnt; CEdFindText *find_replace; U8 *cur_sprite; I64 cur_sprite_elem_num; CEdFileName filename; I64 file_attr; I64 (*left_click_link)(CDoc *doc,CDocEntry *doc_e); I64 (*right_click_link)(CDoc *doc,CDocEntry *doc_e); //See $LK,"::/Apps/Psalmody/JukeBox.CPP"$ U8 *user_put_data; //Passed to user_put_key() and user_put_s() Bool (*user_put_key)(CDoc *doc,U8 *data,I64 ch,I64 sc); Bool (*user_put_s)(CDoc *doc,U8 *data,U8 *st); CDoc *parent_doc; //(When browsing deeper, opening deeper docs.) U64 desc; //8 characters. See $LK,"DocBorderLstDraw",A="MN:DocBorderLstDraw"$(). CDocBin bin_root; CDocSettings settings_root; CDocUndo undo_root; I64 user_data; U0 pad;#assert !($$&7) //(compiler lags one token) }; #help_index "Windows" /* Fs->win_inhibit mask Some inhibit actions on the task itself. Some inhibit actions if the focus task tries to do something. */ #define WIF_SELF_FOCUS 0x0001 //If active this task cannot have focus //MENU 0x0002 #define WIF_SELF_CTRLS 0x0004 #define WIF_SELF_IP_L 0x0008 //IP_L_D 0x0010 #define WIF_SELF_IP_R 0x0020 //IP_R_D 0x0040 #define WIF_SELF_IP_WHEEL 0x0080 //Does nothing, yet #define WIF_SELF_BORDER 0x0100 #define WIF_SELF_GRAB_SCROLL 0x0200 #define WIF_SELF_DOC 0x0400 #define WIF_SELF_ODE 0x0800 //FOCUS 0x00010000 #define WIF_FOCUS_TASK_MENU 0x00020000 #define WIF_FOCUS_TASK_CTRLS 0x00040000 #define WIF_FOCUS_TASK_IP_L 0x00080000 #define WIF_FOCUS_TASK_IP_L_D 0x00100000 #define WIF_FOCUS_TASK_IP_R 0x00200000 #define WIF_FOCUS_TASK_IP_R_D 0x00400000 #define WIF_FOCUS_TASK_IP_WHEEL 0x00800000 //Does nothing, yet #define WIF_FOCUS_TASK_BORDER 0x01000000 #define WIF_FOCUS_TASK_GRAB_SCROLL 0x02000000 #define WIG_DBL_CLICK (WIF_FOCUS_TASK_IP_L_D|WIF_FOCUS_TASK_IP_R_D) #define WIG_TASK_DFT (WIF_FOCUS_TASK_MENU|WIG_DBL_CLICK|0xFFFF-WIF_SELF_DOC-WIF_SELF_ODE) #define WIG_USER_TASK_DFT 0 #define WIf_SELF_FOCUS 0 #define WIf_SELF_CTRLS 2 #define WIf_SELF_IP_L 3 #define WIf_SELF_IP_R 5 #define WIf_SELF_IP_WHEEL 7 #define WIf_SELF_BORDER 8 #define WIf_SELF_GRAB_SCROLL 9 #define WIf_SELF_DOC 10 #define WIf_SELF_ODE 11 #define WIf_FOCUS_TASK_MENU 17 #define WIf_FOCUS_TASK_CTRLS 18 #define WIf_FOCUS_TASK_IP_L 19 #define WIf_FOCUS_TASK_IP_L_D 20 #define WIf_FOCUS_TASK_IP_R 21 #define WIf_FOCUS_TASK_IP_R_D 22 #define WIf_FOCUS_TASK_IP_WHEEL 23 #define WIf_FOCUS_TASK_BORDER 24 #define WIf_FOCUS_TASK_GRAB_SCROLL 25 class CWinMgrTimingGlbls { I64 last_total_jiffies, last_idle_pt_hits[MP_MAX_PROCESSORS], last_swap_cnter[MP_MAX_PROCESSORS]; F64 last_refresh_time, last_refresh_start_time, last_refresh_end_time, refresh_time, refresh_delta_time; I64 refresh_cnt, refresh_skips; }; public class CWinMgrGlbls { I64 updates; F64 ode_time, last_ode_time, desired_fps, //This is chosen by the winmgr. fps; //You can read but not write this. You have no control. CTask *old_focus_task; CWinMgrTimingGlbls *t; Bool first, //First after start-up complete show_menu, grab_scroll, grab_scroll_closed; }; #help_index "Compiler/Directive" //Compiler Options // Use $LK,"OptOn",A="MN:OptOn"$() $LK,"OptOff",A="MN:OptOff"$() //You might need to do #exe {OptOn();} //Note: The #exe statement is lexed-ahead, so it takes effect earlier than you might expect. #define OPTf_ECHO 0x00 #define OPTf_OPT_TRACE 0x01 #define OPTf_COMPILE_TRACE 0x02 #define OPTf_WARN_UNUSED_VAR 0x10 //Applied to funs, not statements #define OPTf_WARN_PAREN 0x11 //Warn unnecessary parens #define OPTf_WARN_DUP_TYPES 0x12 //Warn dup local var type statements #define OPTf_EXTERNS_TO_IMPORTS 0x20 #define OPTf_KEEP_PRIVATE 0x21 #define OPTf_NO_REG_VAR 0x22 //Applied to funs, not statements #define OPTf_GLBLS_ON_DATA_HEAP 0x23 //Disable 10-byte float consts for ã,log2_10,log10_2,loge_2 #define OPTf_NO_BUILTIN_CONST 0x24 //Applied to funs, not statements #define OPTf_USE_IMM64 0x25 //Not completely implemented #define OPTF_ECHO (1<float conversions) I64 cur_ic_float_op_num,last_ic_float_op_num; CIntermediateCode *last_float_op_ic; Bool last_dont_pushable,last_dont_popable,last_float_op_pos, dont_push_float,pad[4]; CLexCodeCtrl lcc; CPrsStk *ps; CAOTCtrl *a; I64 a_depth; U0 end_of_zeroed_members; CLexFile lfns[LFN_CNT]; CLexFile stk[LFN_STK_CNT]; U0 pad;#assert !($$&7) //(compiler lags one token) }; #help_index "Compiler" public class CCmpGlbls { CHashTable *asm_hash; Bool dont_write_to_dsk; CHashClass *internal_types[RT_NUM_IT]; CIntermediateCode ic_nop; U32 *dual_U16_tokens1,*dual_U16_tokens2,*dual_U16_tokens3, *binary_ops; U8 *arg_cnt,*result_cnt, *ic_bitmap_deref,*ic_bitmap_assign, *ic_bitmap_not_const,*ic_bitmap_cmp, *ic_bitmap_fpop; I64 num_stk_temps,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; I64 compiled_lines,compiled_funs,compiled_bytes; }; #help_index "Debugging/Unassemble" class CUasmGlbls { CInstruction **table; I64 table_entries, ins64_mask, signed_arg_mask, mem_mask; }; #help_index "Devices;PCI" class CPCIDev { CPCIDev *next,*last; U16 vendor,dev_id; U8 bus,dev,fun,pad, sub_code,base_code,pad[6], *vendor_str,*dev_id_str; }; #help_index "Devices;File/System;PCI" public class CATARep { CATARep *next; I64 num,type,base0,base1,unit,irq; }; //See $LK,"::/Doc/Acknowledgements.TXT"$. #define ATA_NOP 0x00 #define ATA_DEV_RST 0x08 #define ATA_PACKET 0xA0 #define ATA_READ_NATIVE_MAX 0xF8 #define ATA_READ_NATIVE_MAX_EXT 0x27 #define ATA_SET_MAX 0xF9 #define ATA_SET_MAX_EXT 0x37 #define ATA_READ_MULTI 0xC4 #define ATA_READ_MULTI_EXT 0x29 #define ATA_WRITE_MULTI 0xC5 #define ATA_WRITE_MULTI_EXT 0x39 #define ATA_ID_DEV 0xEC #define ATAS_ERR 0x01 #define ATAS_DRQ 0x08 #define ATAS_DF 0x20 #define ATAS_DRDY 0x40 #define ATAS_BSY 0x80 #define ATAR0_DATA 0 #define ATAR0_FEAT 1 #define ATAR0_NSECT 2 #define ATAR0_SECT 3 #define ATAR0_LCYL 4 #define ATAR0_HCYL 5 #define ATAR0_SELECT 6 #define ATAR0_STAT 7 #define ATAR0_CMD 7 #define ATAR1_CTRL 2 #help_index "File/FileNames" #define FILEMASK_JIT "*.CPP*;*.HPP*" #define FILEMASK_AOT "*.CPP*;*.HPP*;*.PRJ*" #define FILEMASK_SRC "*.CPP*;*.HPP*;*.AUT*;*.PRJ*" #define FILEMASK_TXT FILEMASK_SRC ";*.TXT*;*.LOG*" #define FILEMASK_GRA "*.GRA*;*.BMP*" #help_index "File/Low Level" #define BLK_SIZE_BITS 9 #define BLK_SIZE (1<drv_let directly in case a drive has been remapped. //Use $LK,"Prt2Drv",A="MN:Prt2Drv"$(). I64 locked_flags; U32 type, //Bit31 is used as a disable, since it will be unknown flags, //Flags not used at the moment pt_signature; U8 drv_let,text_attr,pad[2]; I64 offset, size, file_system_info_sect, map1,map2, root_cluster, data, spc; //sectors per cluster CTask *owning_task; CBlkDev *bdev; CFAT32FileInfoSect *fis; I64 num_buffered_map_blks, cur_map_blk_num; U32 *cur_map_blk; U8 *buffered_map_dirty_bits; CFreeLst *next_free,*last_free; }; #define DSK_CACHE_HASH_SIZE 0x2000 class CCacheBlk { CCacheBlk *next_lru,*last_lru; CCacheBlk *next_hash,*last_hash; CPrt *p; I64 blk; U8 body[BLK_SIZE]; }; #help_index "File/System" public class CDskGlbls { U8 *dft_iso_filename; //See $LK,"dsk.dft_iso_filename",A="FF:::/Kernel/KEnd.CPP,dsk.dft_iso_filename"$ CCacheBlk *cache_base,*cache_ctrl,**cache_hash_table; I64 cache_size,read_cnt,write_cnt; CBlkDev *blkdevs; CPrt *prts,*drv_to_prt[32]; I64 auto_mount_ide_cnt; U8 first_hd_drv_let,first_cd_drv_let, temp_filename[136]; Bool boot_rescue_drv_pmt,cdrom_boot_is_good; }; #help_index "File/Internal" public class CFileAccess { CPrt *old_prt,*p; U8 *old_dir,*mask; }; #help_index "File/CFile" #define FFB_NEXT_BLK MAX_I64 #define FF_WRITE 1 #define FF_NEW_FILE 2 #define FF_BUF_DIRTY 4 #define FF_NEEDS_WRITE 8 #define FF_CONTIGUOUS 16 #define FF_USE_OLD_DATETIME 32 public class CFile { I64 flags; CDirEntry de; CPrt *p; I64 fblk_num,cluster,file_cluster_num,max_blk; U8 *cluster_buf; }; #help_index "Memory/Heap" #define _CFG_HEAP_DBG FALSE #if _CFG_HEAP_DBG class CMemUnusedAllocated { CHeapCtrl *hc; U8 *caller1,*caller2; CMemUnusedAllocated *next; I64 size; }; class CMemUsedAllocated { CHeapCtrl *hc; U8 *caller1,*caller2; CMemUsedAllocated *next,*last; I64 size; U0 start; }; #else class CMemUnusedAllocated { U0 hc; U0 caller1,caller2; CMemUnusedAllocated *next; I64 size; }; class CMemUsedAllocated { CHeapCtrl *hc; U0 caller1,caller2; U0 next,last; I64 size; U0 start; }; #endif #help_index "Memory/Blk Pool" /*TempleOS does not mess with page tables after it identity-maps them during boot -- $LK,"SYS_INIT_MEM",A="MN:SYS_INIT_MEM"$. $LK,"PAGE_SIZE",A="MN:PAGE_SIZE"$ is arbitrary, and is not related to CPU hardware. I need some unit for memory allocation so I invented "$LK,"PAGE_SIZE",A="MN:PAGE_SIZE"$". All virtual addresses are identical to physical, always. There is no high kernel memory because RAM's physical addresses are low. (All motherboards that I know of put RAM in low addresses of 64-bit address space.) It's ring-0-only so all (or none) is kernel, remember. 2 Meg hardware pages are use except the first 2 Meg. 0xA0000-0xBFFFF must be write thru. Hardware pages don't matter except the caching bit. Remember, it is ring-0-only 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, so I don't need to waste cycles on use SYSCALL or software interrupts. Everything just uses CALL REL32. */ #define MBS_USED_SIGNATURE_VAL 'MBUs' #define MBS_UNUSED_SIGNATURE_VAL 'MBUn' class CMemBlk { CMemBlk *next,*last; U32 mb_signature,pages; }; #define MRT_UNUSED 0 #define MRT_RAM 1 #define MRT_DEV 2 class CMemRange { CMemRange *next,*last; U32 type,flags; U8 *base; I64 size; }; #define PAGE_BITS 9 #define PAGE_SIZE (1< #define MSG_KEY_UP 3 //($LK,"ASCII",A="MN:CH_CTRLA"$,$LK,"scan code",A="FI:::/Doc/CharOverview.TXT"$) Press #define MSG_IP_MOVE 4 //(x,y) #define MSG_IP_L_DOWN 5 //(x,y) #define MSG_IP_L_UP 6 //(x,y) #define MSG_IP_L_D_DOWN 7 //(x,y) #define MSG_IP_L_D_UP 8 //(x,y) #define MSG_IP_R_DOWN 9 //(x,y) #define MSG_IP_R_UP 10 //(x,y) #define MSG_IP_R_D_DOWN 11 //(x,y) #define MSG_IP_R_D_UP 12 //(x,y) #define MSG_FOCUS 13 //(flag,0) TRUE gaining focus, FALSE losing. #define MSG_RESIZE 14 //(new columns,new rows). #define MSG_MOVE 15 //(new left,new top). #define MSG_KEY_DOWN_UP -2 //Down & UP #define MSG_IP_L_DOWN_UP -5 //Down & Up #define MSG_IP_L_D_DOWN_UP -7 //Down & Up #define MSG_IP_R_DOWN_UP -9 //Down & Up #define MSG_IP_R_D_DOWN_UP -11 //Down & Up #define MSGF_ALLOW_KEY_DESC 63 #help_index "Task" #define TASK_TITLE_LEN 127 #help_index "Task/Settings" #define TSF_SAME_SONG 1 public class CTaskSettings { CTaskSettings *next; I64 left,right,top,bottom; U0 (*draw_it)(CTask *task,CDC *dc); U0 (*task_end_cb)(); CTask *song_task,*animate_task; I64 scroll_x,scroll_y,scroll_z; CBGR palette4[16]; U32 win_inhibit;; U8 text_attr,title_src, border_attr,border_src, task_title[TASK_TITLE_LEN+1]; Bool border,preempt,cursor,scroll,wordstat,pad[3]; U0 pad;#assert !($$&7) //(compiler lags one token) }; #help_index "Task" //Border ATTR src #define BDS_CONST 0 #define BDS_CUR_PRT 1 #define BDS_ED_FILENAME_PRT 2 //Task title src #define TTS_CONST 0 #define TTS_LOCKED_CONST 1 //This is not strictly enforced #define TTS_TASK_NAME 2 #define TTS_ED_FILENAME 3 #define TTS_CUR_LEX 4 // TASK task flags #define TASKf_KILL_TASK 0 #define TASKf_SUSPENDED 1 #define TASKf_PREEMPT 2 #define TASKf_IDLE 3 #define TASKf_INPUT_FILTER_TASK 4 #define TASKf_FILTER_INPUT 5 #define TASKf_HAS_SONG 6 #define TASKf_NOT_RAW 7 #define TASKf_DISABLE_BPTS 8 #define TASKf_AWAITING_MSG 9 #define TASKf_BREAK_LOCKED 10 #define TASKf_PENDING_BREAK 11 #define TASKf_BREAK_TO_SHIFT_ESC 12 #define TASKf_KILL_AFTER_DBG 13 //locked flags #define TASKLf_TASK_LOCK 0 #define DISPLAYf_SHOW 0 #define DISPLAYf_SILENT 1 #define DISPLAYf_NO_BORDER 2 #define DISPLAYf_WIN_ON_TOP 3 #define DISPLAYf_CHILDREN_NOT_ON_TOP 4 #define TASK_SIGNATURE_VAL 'TskS' #define TASK_IN_QUE_SIGNATURE_VAL 'TskQ' #define TASK_COMBINED_SIGNATURE_VAL (TASK_SIGNATURE_VAL+TASK_IN_QUE_SIGNATURE_VAL<<32) #define TASK_NAME_LEN 31 #define TASK_WALLPAPER_DATA_SIZE 128 class CTaskStk { CTaskStk *next_stk; I64 stk_size,stk_ptr; U0 stk_base; }; public class CTask //The Fs segment reg points to current CTask { CTask *addr; //Self-addressed ptr U32 task_signature,task_in_que_signature; I64 task_flags,locked_flags; U32 display_flags,win_inhibit; I64 wake_jiffy; CHeapCtrl *code_heap,*data_heap; CDoc *put_doc,*display_doc, //When double buffering, these two differ. *border_doc; I64 win_left,win_right,win_top,win_bottom; CPrt *cur_prt; U8 *cur_dir; CTask *parent_task, *next_task,*last_task, *next_input_filter_task,*last_input_filter_task, *next_sibling_task,*last_sibling_task, *next_child_task,*last_child_task; //These are derived from left,top,right,bottom I64 win_width,win_height, pix_left,pix_right,pix_width, //These are in pixs, not characters pix_top,pix_bottom,pix_height, border_pix_left,border_pix_right, border_pix_top,border_pix_bottom, scroll_x,scroll_y,scroll_z; //These must be in this order //for $LK,"TASK_CONTEXT_SAVE",A="FF:::/Kernel/Sched.CPP,TASK_CONTEXT_SAVE"$ and $LK,"_TASK_CONTEXT_RESTORE",A="FF:::/Kernel/Sched.CPP,_TASK_CONTEXT_RESTORE"$ I64 rip,rflags,rsp,rsi,rax,rcx,rdx,rbx,rbp,rdi, r8,r9,r10,r11,r12,r13,r14,r15; CCPU *gs; CFPU *fpu_mmx; I64 time_slice_start, total_time, //Cycles swap_cnter; U0 (*draw_it)(CTask *task,CDC *dc); U8 task_title[TASK_TITLE_LEN+1], task_name[TASK_NAME_LEN+1], wallpaper_data[TASK_WALLPAPER_DATA_SIZE], title_src,border_src, text_attr,border_attr; U16 win_z_num,pad; CTaskStk *stk; CExcept *next_except,*last_except; I64 except_rbp, //throw routine's RBP except_ch; //throw(ch) U8 *except_caller1,*except_caller2; Bool catch_except; U8 answer_type,pad[6]; I64 answer; F64 answer_time; CBpt *bpt_lst; CCtrl *next_ctrl,*last_ctrl; CMenu *cur_menu; CTaskSettings *next_settings; CMathODE *next_ode,*last_ode; F64 last_ode_time; CHashTable *hash_table; CSrvCtrl srv_ctrl; CLex *next_lex,*last_lex; I64 win_old_left,win_old_right,win_old_top,win_old_bottom; U0 (*task_end_cb)(); CTask *song_task,*animate_task; I64 rnd_seed, task_num, fault_num,fault_err_code; CTask *popup_task; CWinScroll horz_scroll,vert_scroll; I64 user_data; U0 pad;#assert !($$&7) //(compiler lags one token) }; class CTSS { U32 res1; I64 rsp0,rsp1,rsp2,res2, ist1,ist2,ist3,ist4,ist5,ist6,ist7,res3; U16 res4,io_map_offset; U8 io_map[0x10000/8]; I64 *st0,*st1,*st2; U16 tr,tr_ring3; }; #define ans (Fs->answer) #define ansf (Fs->answer(F64)) #define _RAX Fs->rax #define _RBX Fs->rbx #define _RCX Fs->rcx #define _RDX Fs->rdx #define _RSI Fs->rsi #define _RDI Fs->rdi #define _RBP Fs->rbp #define _RSP Fs->rsp #define _RIP Fs->rip #define _R8 Fs->r8 #define _R9 Fs->r9 #define _R10 Fs->r10 #define _R11 Fs->r11 #define _R12 Fs->r12 #define _R13 Fs->r13 #define _R14 Fs->r14 #define _R15 Fs->r15 #help_index "MultiCore" #define CPU_WALLPAPER_DATA_SIZE 128 #define CPUf_RAN_A_TASK 0 #define CPUf_SETH_SLEEP 1 public class CCPU //The Gs segment reg points to current CCPU { CCPU *addr; //Self-addressed ptr I64 num,cpu_flags, startup_rip, idle_pt_hits; F64 idle_factor; I64 total_jiffies; CTask *seth_task,*idle_task; I64 tr, //task reg swap_cnter; U0 (*profiler_timer_irq)(CTask *task); CTask *dying_task_lst; CTSS *tss; union { U8 wallpaper_data[CPU_WALLPAPER_DATA_SIZE]; I64 start_stk[16]; } U0 pad;#assert !($$&7) //(compiler lags one token) }; #help_index "Memory/Page Tables" #define MEM_MAPPED_SPACE 0x2000000000 //Arbitrarily set to 128 Gig #define MEM_NUM_PML1 1 //First 2 Meg are 4K resolution #define MEM_NUM_PML2 (MEM_MAPPED_SPACE>>(9+21)) #define MEM_NUM_PML3 1 #define MEM_NUM_PML4 1 #define MEM_PROTECTED_LOW_LIMIT 0x6FFF #define SYS_FIXED_AREA 0x100000 public class CSysFixedArea { U8 pml1[MEM_NUM_PML1*0x1000],pml2[MEM_NUM_PML2*0x1000], pml3[MEM_NUM_PML3*0x1000],pml4[MEM_NUM_PML4*0x1000]; $$=($$+15)&-16; CFPU init_fpu_mmx; CCPU boot_cpu; CTask adam; CBlkPool adam_bp; CHeapCtrl adam_hc; $$=($$+PAGE_SIZE-1)&-PAGE_SIZE; }; #help_index "Char" #define CH_CTRLA 0x01 #define CH_CTRLB 0x02 #define CH_CTRLC 0x03 #define CH_CTRLD 0x04 #define CH_CTRLE 0x05 #define CH_CTRLF 0x06 #define CH_CTRLG 0x07 #define CH_CTRLH 0x08 #define CH_CTRLI 0x09 #define CH_CTRLJ 0x0A #define CH_CTRLK 0x0B #define CH_CTRLL 0x0C #define CH_CTRLM 0x0D #define CH_CTRLN 0x0E #define CH_CTRLO 0x0F #define CH_CTRLP 0x10 #define CH_CTRLQ 0x11 #define CH_CTRLR 0x12 #define CH_CTRLS 0x13 #define CH_CTRLT 0x14 #define CH_CTRLU 0x15 #define CH_CTRLV 0x16 #define CH_CTRLW 0x17 #define CH_CTRLX 0x18 #define CH_CTRLY 0x19 #define CH_CTRLZ 0x1A #define CH_CURSOR 0x05 #define CH_BACKSPACE 0x08 #define CH_FORM_FEED 0x0C #define CH_ESC 0x1B #define CH_SHIFT_ESC 0x1C #define CH_SHIFT_SPACE 0x1F #define CH_SPACE 0x20 #define ST_ERR_ST "$$LTRED$$$$BK,1$$ERROR:$$FG$$$$BK,0$$ " #define ST_WARN_ST "$$RED$$$$BK,1$$WARNING:$$FG$$$$BK,0$$ " //Scan code flags #define SCf_E0_PREFIX 7 #define SCf_KEY_UP 8 #define SCf_SHIFT 9 #define SCf_CTRL 10 #define SCf_ALT 11 #define SCf_CAPS 12 #define SCf_NUM 13 #define SCf_SCROLL 14 #define SCf_NEW_KEY 15 #define SCf_IP_L_DOWN 16 #define SCf_IP_R_DOWN 17 #define SCf_DELETE 18 #define SCf_INS 19 #define SCf_KEY_DESC 31 #define SCF_E0_PREFIX (1< #define GSF_WITH_NEW_LINE 2 #define "Char/Operations" //Flags for StrUtil and MStrUtil #define SUF_REM_CTRL_CHARS 0x001 #define SUF_REM_LEADING 0x002 #define SUF_REM_TRAILING 0x004 #define SUF_REM_SPACES 0x008 #define SUF_SINGLE_SPACE 0x010 #define SUF_TO_UPPER 0x020 #define SUF_TO_LOWER 0x040 #define SUF_S2T 0x080 #define SUF_T2S 0x100 // Only works with MStrUtil #define SUF_SCALE_INDENT 0x200 #define SUF_SAFE_DOLLAR 0x400 //Flags for StrFind #define SFF_IGNORE_CASE 1 #define SFF_WHOLE_LABELS_BEFORE 2 #define SFF_WHOLE_LABELS_AFTER 4 #define SFG_WHOLE_LABELS (SFF_WHOLE_LABELS_BEFORE|SFF_WHOLE_LABELS_AFTER) //Flags for LstMatch #define LMF_IGNORE_CASE 1 #define LMF_EXACT 2 #help_index "Keyboard Devices/System" #define KDF_HAS_DESCS 1 class CKeyDevEntry { CKeyDevEntry *next,*last; I64 priority,flags; Bool (*put_key)(I64 ch,I64 sc); Bool (*put_s)(U8 *st); }; class CKeyDevGlbls { CKeyDevEntry put_key_root; U0 (**fp_ctrl_alt_let_cbs)(I64 sc); I64 ctrl_alt_let_in_irq_flags, **ctrl_alt_let_ret_addr; //addr of ret addr on stack in kbd irq U8 **ctrl_alt_let_descs, desc[128], *handler; }; #help_index "Snd" class CSndData { CSndData *next,*last; F64 freq, //Hz time; }; public class CSndGlbls { F64 freq; CSndData record_root; Bool record; }; #help_index "Debugging/PSect" #define PSECT_CACHE_SIZE 256 class CPSectCache { I64 base,limit; F64 time_stamp; U8 str[1]; //PSECT_CACHE_STR_LEN $$=64; }; #define PSECT_CACHE_STR_LEN (sizeof(CPSectCache)-offset(CPSectCache.str)) #help_index "Debugging" class CMPCrash { CTask *task; I64 cpu_num; U8 *msg; I64 msg_num; }; public class CDbgGlbls { CTask *focus_task; U8 *msg; I64 msg_num; CMPCrash *mp_crash; U8 *fault_handlers_code, *fix_file_line; CPSectCache *psect_cache; I64 psect_cache_index; }; #help_index "Boot" //Boot related #define BOOT_RAM_BASE 0x07C00 #define BOOT_RAM_LIMIT 0x97000 #define BOOT_STK_SIZE BLK_SIZE #define BOOT_CODE_RAM 1 #define BOOT_CODE_HARDDRV 2 #define BOOT_CODE_CDROM 3 // $LK,"Auto",A="MN:Auto"$("") StdIn for call to $LK,"MakeOSPrtBootInstall",A="MN:MakeOSPrtBootInstall"$(). #define STD_DISTRO_CDROM_CFG "Tb1\nScale2Mem(2048,0x40000)\nt3 \n\n\n\n\n" #help_index "Misc/Accts" //Acct Registry sys_msg_flags. $LK,"AcctOneTimePopUp",A="MN:AcctOneTimePopUp"$() #define ARf_FLOODFILL 0 #define ARf_CSPRITE_INS_CLIPBOARD 1 #define ARf_CSPRITE_PICK_GRAPHICALLY 2 #define ARf_PLANAR_SYMMETRY 3 #define ARf_PSALMODY_JUKEBOX 4 #define ARf_MESH_ED 5 #define ARf_CSPRITE_PTS_RECTANGLES 6 #define ARf_MANAGE_SLIDER 7 #help_index "Misc/Progress Bars" #define NUM_PROGRESS_BARS 4 #define PROGRESS_DESC_LEN (64-8-8-1) class CProgress { I64 val,max; U8 desc[PROGRESS_DESC_LEN+1]; }; #help_index ""