LTCD_070816.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:45:20 +02:00
1 parent d14bbc24f9
commit 0e9364ff4c
506 files changed
+157705 -41812

No files matched your search

+620
View File
@@ -0,0 +1,620 @@
ALIGN 8,OC_NOP
SYS_ALPHA_BITMAP:: DU4 0x0000000,0x00000000,0x87FFFFFF,0x07FFFFFE;
DU4 0,0,0,0;
SYS_ALPHA_NUMERIC_BITMAP:: DU4 0x0000000,0x03FF0000,0x87FFFFFF,0x07FFFFFE;
DU4 0,0,0,0;
SYS_FILENAME_CHARS_BITMAP:: DU4 0x0000000,0x03FF6001,0x87FFFFFF,0x07FFFFFE;
DU4 0,0,0,0;
SYS_DEC_NUMERIC_BITMAP:: DU4 0x0000000,0x03FF0000,0,0;
DU4 0,0,0,0;
SYS_HEX_NUMERIC_BITMAP:: DU4 0x0000000,0x03FF0000,0x7E,0x7E;
DU4 0,0,0,0;
SYS_PRINTABLE_CHARS_BITMAP::
DU4 0x80002200,0xFFFFFFFF,0xFFFFFFFF,0x7FFFFFFF;
DU4 0,0,0,0;
SYS_SAFE_DOLLAR_CHARS_BITMAP::
DU4 0x80000000,0xFFFFFFEF,0xFFFFFFFF,0x7FFFFFFF;
DU4 0,0,0,0;
SYS_DISPLAYABLE_CHARS_BITMAP::
DU4 0x80000000,0xFFFFFFFF,0xFFFFFFFF,0x7FFFFFFF;
DU4 0x00001FFF,0,0,0;
////**************************PROCEDURE*************************
// IN: RAX=NUMBER TO PRINT
ALIGN 8,OC_NOP
PUT_HEX_U8::
PUSH RCX
MOV RCX,16
CALL FIXED_PUT_HEX
POP RCX
RET
PUT_HEX::
PUT_HEX_U4::
PUSH RCX
MOV RCX,8
CALL FIXED_PUT_HEX
POP RCX
RET
PUT_HEX_U2::
PUSH RCX
MOV RCX,4
CALL FIXED_PUT_HEX
POP RCX
RET
PUT_HEX_U1::
PUSH RCX
MOV RCX,2
CALL FIXED_PUT_HEX
POP RCX
RET
FIXED_PUT_HEX::
PUSH_C_REGS
PUSH RSI
PUSH RDI
SUB RSP,32
MOV RDI,RSP
CALL BINARY_TO_FIXED_HEX
XOR EAX,EAX
STOSB
MOV RSI,RSP
CALL PUT_STR
ADD RSP,32
POP RDI
POP RSI
POP_C_REGS
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
PUT_CHAR::
PUSH_C_REGS
PUSH RAX
CALL CP_PUT_CHAR
ADD RSP,8
POP_C_REGS
RET
ALIGN 8,OC_NOP
PUT_STR::
PUSH_C_REGS
PUSH RSI
CALL CP_PUT_STR
ADD RSP,8
POP_C_REGS
RET
////**************************PROCEDURE*************************
// IN: RAX=BINARY
// [RDI]=@FIELD
// RCX=LENGTH (IF THE HEX_FIELD ENTRY IS USED)
//
// OUT: RAX PRESERVED
// RCX=0
// [RDI] POINTS PAST DESTINATION
ALIGN 8,OC_NOP
BINARY_TO_HEX::
MOV RCX,8
BINARY_TO_FIXED_HEX:
PUSHFD //-****
CLI //because of STD
PUSH RAX //-****
PUSH RDX //-****
ADD RDI,RCX
PUSH RDI //-**** EDI WE WANT TO RETURN
DEC RDI
MOV RDX,RAX
STD
@@1: MOV AL,DL
AND AL,0xF
ADD AL,'0'
CMP AL,'9'
JBE @@2
ADD AL,'A'-'0'-10
@@2: STOSB
SHR RDX,4
LOOP @@1
POP RDI //+****
POP RDX //+****
POP RAX //+****
POPFD //+****
RET
////**************************PROCEDURE*************************
//IN: [RSI] = @FIELD
// RCX = LENGTH
//OUT: RAX = VALUE
// RCX = 0
ALIGN 8,OC_NOP
HEX_TO_BINARY::
PUSH RDX
XOR EDX,EDX
OR RCX,RCX
JZ @@9
@@1: SHL RDX,4
LODSB
SUB AL,0x30
CMP AL,9
JA @@2
SUB AL,7
@@2: MOVZX RAX,AL
ADD RDX,RAX
LOOP @@1
@@9: MOV RAX,RDX
POP RDX
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CRLF::
PUSH RAX
MOV RAX,13
CALL PUT_CHAR
MOV RAX,10
CALL PUT_CHAR
POP RAX
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_STRCAT::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RSI,U8 SF_PARAM1[RBP]
@@2: LODSB
OR AL,AL
JNZ @@2
MOV RDI,RSI
DEC RDI
MOV RSI,U8 SF_PARAM2[RBP]
@@1: LODSB
STOSB
OR AL,AL
JNZ @@1
POP RDI
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_STRCPY::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RSI,U8 SF_PARAM2[RBP]
MOV RDI,U8 SF_PARAM1[RBP]
@@1: LODSB
STOSB
OR AL,AL
JNZ @@1
POP RDI
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_STRCMP::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RSI,U8 SF_PARAM2[RBP]
MOV RDI,U8 SF_PARAM1[RBP]
@@1: LODSB
OR AL,AL
JZ @@100
SCASB
JE @@1
JA @@90
@@80: MOV RAX,1
JMP @@101
@@90: MOV RAX,-1
JMP @@101
@@100: SCASB
JNE @@80
XOR EAX,EAX
@@101: POP RDI
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
TO_UPPER::
CMP AL,'a'
JB @@100
CMP AL,'z'
JA @@100
ADD AL,'A'-'a'
@@100: RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_STRICMP::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RSI,U8 SF_PARAM2[RBP]
MOV RDI,U8 SF_PARAM1[RBP]
@@1: LODSB
OR AL,AL
JZ @@100
CMP AL,'a'
JB @@2
CMP AL,'z'
JA @@2
ADD AL,'A'-'a'
@@2: MOV BL,U1 [RDI]
INC RDI
CMP BL,'a'
JB @@3
CMP BL,'z'
JA @@3
ADD BL,'A'-'a'
@@3: CMP AL,BL
JE @@1
JA @@90
@@80: MOV RAX,1
JMP @@101
@@90: MOV RAX,-1
JMP @@101
@@100: MOV BL,U1 [RDI]
OR BL,BL
JNE @@80
XOR EAX,EAX
@@101: POP RDI
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_STRNCMP::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RCX,U8 SF_PARAM3[RBP]
MOV RSI,U8 SF_PARAM2[RBP]
MOV RDI,U8 SF_PARAM1[RBP]
@@1: OR RCX,RCX
JZ @@102
DEC RCX
LODSB
OR AL,AL
JZ @@100
SCASB
JE @@1
JA @@90
@@80: MOV RAX,1
JMP @@101
@@90: MOV RAX,-1
JMP @@101
@@100: MOV BL,U1 [RDI]
OR BL,BL
JNE @@80
@@102: XOR EAX,EAX
@@101: POP RDI
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_STRNICMP::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RCX,U8 SF_PARAM3[RBP]
MOV RSI,U8 SF_PARAM2[RBP]
MOV RDI,U8 SF_PARAM1[RBP]
@@1: OR RCX,RCX
JZ @@102
DEC RCX
LODSB
OR AL,AL
JZ @@100
CMP AL,'a'
JB @@2
CMP AL,'z'
JA @@2
ADD AL,'A'-'a'
@@2: MOV BL,U1 [RDI]
INC RDI
CMP BL,'a'
JB @@3
CMP BL,'z'
JA @@3
ADD BL,'A'-'a'
@@3: CMP AL,BL
JE @@1
JA @@90
@@80: MOV RAX,1
JMP @@101
@@90: MOV RAX,-1
JMP @@101
@@100: SCASB
JNE @@80
@@102: XOR EAX,EAX
@@101: POP RDI
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_STRSTR::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RSI,U8 SF_PARAM1[RBP]
MOV RDI,U8 SF_PARAM2[RBP]
MOV DL,U1 [RDI]
OR DL,DL
JZ @@90
JMP @@5
@@1: INC RSI
@@5: LODSB
OR AL,AL
JZ @@100
CMP AL,DL
JNE @@5
DEC RSI
MOV RCX,1
@@10: MOV AL,U1 [RDI+RCX]
OR AL,AL
JZ @@90
CMP AL,U1 [RSI+RCX]
JNE @@1
INC RCX
JMP @@10
@@80: DEC RSI
@@90: MOV RAX,RSI
JMP @@101
@@100: XOR EAX,EAX
@@101: POP RDI
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_STRISTR::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RSI,U8 SF_PARAM1[RBP]
MOV RDI,U8 SF_PARAM2[RBP]
MOV AL,U1 [RDI]
CALL TO_UPPER
MOV DL,AL
OR DL,DL
JZ @@90
JMP @@5
@@1: INC RSI
@@5: LODSB
CALL TO_UPPER
OR AL,AL
JZ @@100
CMP AL,DL
JNE @@5
DEC RSI
MOV RCX,1
@@10: MOV AL,U1 [RDI+RCX]
CALL TO_UPPER
OR AL,AL
JZ @@90
MOV BL,U1 [RSI+RCX]
XCHG AL,BL
CALL TO_UPPER
CMP AL,BL
JNE @@1
INC RCX
JMP @@10
@@80: DEC RSI
@@90: MOV RAX,RSI
JMP @@101
@@100: XOR EAX,EAX
@@101: POP RDI
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
// IN: [RSI]
// OUT: RAX
ALIGN 8,OC_NOP
HASH_STR::
PUSH RSI //-****
PUSH RBX //-****
XOR EAX,EAX
XOR EBX,EBX
JMP @@10
@@1: SHL RBX,1
ADC RBX,RAX
@@10: LODSB
OR AL,AL
JNZ @@1
@@100: MOV RAX,RBX
SHR RBX,16
ADC RAX,RBX
POP RBX //+****
POP RSI //+****
RET
////**************************PROCEDURE*************************
// IN: [RSI]=STR
// RBX=TYPE MASK
// [RDI]=TABLE
// OUT: [RSI]=ENTRY OR ZERO NOT FOUND
// ZERO FLAG SET NOT FOUND
ALIGN 8,OC_NOP
FIND_HASH_ENTRY::
PUSH RDX //-****
PUSH RDI //-****
MOV RDX,RSI
CALL HASH_STR
@@4: PUSH RAX //-****
AND RAX,U8 HT_MASK[RDI]
MOV RSI,U8 HT_BODY[RDI+RAX*8]
@@1: OR RSI,RSI
JNZ @@3
MOV RDI,U8 HT_NEXT[RDI]
OR RDI,RDI
JZ @@100
POP RAX
JMP @@4
@@3: TEST U4 HTE_TYPE[RSI],EBX
JZ @@90
PUSH RSI //-****
PUSH RDI //-****
MOV RDI,U8 HTE_STR[RSI]
MOV RSI,RDX
@@2: LODSB
CMP U1 [RDI],AL
JNE @@80
INC RDI
OR AL,AL
JNZ @@2
POP RDI //+****
POP RSI //+****
INC U4 HTE_USE_CNT[RSI]
JMP @@100
@@80: POP RDI //+****
POP RSI //+****
@@90: MOV RSI,U8 HTE_NEXT[RSI]
JMP @@1
@@100: POP RAX //+****
POP RDI //+****
POP RDX //+****
OR RSI,RSI
RET
////**************************PROCEDURE*************************
// IN: [RSI]=STR
// [RDI]=TABLE
// OUT: [RSI]=BUCKET
ALIGN 8,OC_NOP
FIND_HASH_BUCKET::
PUSH RAX
PUSH RDX
CALL HASH_STR
AND RAX,U8 HT_MASK[RDI]
LEA RSI,U8 HT_BODY[RDI+RAX*8]
POP RDX
POP RAX
RET
////**************************PROCEDURE*************************
FIND_EXTERN::
//IN: RSI
//OUT: RSI
PUSH RAX
PUSH RDI
PUSH RBX
XOR EAX,EAX
MOV RAX,FS:TSS_ABSOLUTE_ADDRESS[RAX]
MOV RDI,U8 TSS_HASH_TABLE[RAX]
MOV RBX,HTT_FUNCTION|HTT_SYS_SYMBOL
CALL FIND_HASH_ENTRY
JNZ @@1
XOR ESI,ESI
JMP @@3
@@1: MOV RAX,U8 HTE_USER_DATA0[RSI]
TEST U4 HTE_TYPE[RSI],HTT_FUNCTION
JZ @@2
MOV RAX,U8 C_STATEMENTS[RSI]
@@2: MOV RSI,RAX
@@3: POP RBX
POP RDI
POP RAX
OR RSI,RSI
RET
CP_FIND_EXTERN::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
XOR EAX,EAX
MOV RAX,FS:TSS_ABSOLUTE_ADDRESS[RAX]
MOV RDI,U8 TSS_HASH_TABLE[RAX]
MOV RSI,U8 SF_PARAM1[RBP]
MOV RBX,HTT_FUNCTION|HTT_SYS_SYMBOL
CALL FIND_HASH_ENTRY
JZ @@1
MOV RAX,U8 HTE_USER_DATA0[RSI]
TEST U4 HTE_TYPE[RSI],HTT_FUNCTION
JZ @@2
MOV RAX,U8 C_STATEMENTS[RSI]
JMP @@2
@@1: XOR EAX,EAX
@@2: POP RDI
POP RSI
POP RBP
RET
ALIGN 8,OC_NOP
////**************************PROCEDURE*************************
CP_HASH_STR::
PUSH RBP
MOV RBP,RSP
PUSH RSI
MOV RSI,U8 SF_PARAM1[RBP]
CALL HASH_STR
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_FIND_HASH_ENTRY::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RSI,U8 SF_PARAM1[RBP]
MOV RDI,U8 SF_PARAM2[RBP]
MOV RBX,U8 SF_PARAM3[RBP]
CALL FIND_HASH_ENTRY
MOV RAX,RSI
POP RDI
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_FIND_HASH_BUCKET::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RSI,U8 SF_PARAM1[RBP]
MOV RDI,U8 SF_PARAM2[RBP]
CALL FIND_HASH_BUCKET
MOV RAX,RSI
POP RDI
POP RSI
POP RBP
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_ADD_SYS_HASH_ENTRY::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RSI,U8 SF_PARAM1[RBP]
MOV RSI,U8 HTE_STR[RSI]
MOV RDI,U8 SF_PARAM2[RBP]
CALL FIND_HASH_BUCKET
MOV RDI,U8 SF_PARAM1[RBP]
PUSHFD
CLI
MOV RAX,U8 [RSI]
MOV U8 HTE_NEXT[RDI],RAX
MOV U8 [RSI],RDI
POPFD
POP RDI
POP RSI
POP RBP
RET