LTCD_060719.ISO
This commit is contained in:
commit
f86e69648b
156 files changed
+49537
No files matched your search
@@ -0,0 +1,887 @@
|
||||
ALIGN 8,0x90
|
||||
IRQ_VECTORS::
|
||||
DU4 IRQ00,IRQ01,IRQ02,IRQ03;
|
||||
DU4 IRQ04,IRQ05,IRQ06,IRQ07;
|
||||
DU4 IRQ08,IRQ09,IRQ0A,IRQ0B;
|
||||
DU4 IRQ0C,IRQ0D,IRQ0E,IRQ0F;
|
||||
DU4 IRQ10,IRQ11,IRQ12,IRQ13;
|
||||
DU4 IRQ14,IRQ15,IRQ16,IRQ17;
|
||||
DU4 IRQ18,IRQ19,IRQ1A,IRQ1B;
|
||||
DU4 IRQ1C,IRQ1D,IRQ1E,IRQ1F;
|
||||
DU4 IRQ20,IRQ21,IRQ22,IRQ23;
|
||||
DU4 IRQ24,IRQ25,IRQ26,IRQ27;
|
||||
DU4 IRQ28,IRQ29,IRQ2A,IRQ2B;
|
||||
DU4 IRQ2C,IRQ2D,IRQ2E,IRQ2F;
|
||||
DU4 IRQ30,IRQ31,IRQ32,IRQ33;
|
||||
DU4 IRQ34,IRQ35,IRQ36,IRQ37;
|
||||
DU4 IRQ38,IRQ39,IRQ3A,IRQ3B;
|
||||
DU4 IRQ3C,IRQ3D,IRQ3E,IRQ3F;
|
||||
DU4 IRQ40,IRQ41,IRQ42,IRQ43;
|
||||
DU4 IRQ44,IRQ45,IRQ46,IRQ47;
|
||||
DU4 IRQ48,IRQ49,IRQ4A,IRQ4B;
|
||||
DU4 IRQ4C,IRQ4D,IRQ4E,IRQ4F;
|
||||
DU4 IRQ50,IRQ51,IRQ52,IRQ53;
|
||||
DU4 IRQ54,IRQ55,IRQ56,IRQ57;
|
||||
DU4 IRQ58,IRQ59,IRQ5A,IRQ5B;
|
||||
DU4 IRQ5C,IRQ5D,IRQ5E,IRQ5F;
|
||||
|
||||
////***************** INTERRUPT ROUTINES ***************
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ00: PUSHAD
|
||||
MOV EDX,0
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ01: PUSHAD
|
||||
MOV EDX,1
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ02: PUSHAD
|
||||
MOV EDX,2
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ03: PUSHAD
|
||||
MOV EDX,3
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ04: PUSHAD
|
||||
MOV EDX,4
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ05: PUSHAD
|
||||
MOV EDX,5
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ06: PUSHAD
|
||||
MOV EDX,6
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ07: PUSHAD
|
||||
MOV EDX,7
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ08: PUSHAD
|
||||
MOV EDX,8
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ09: PUSHAD
|
||||
MOV EDX,9
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ0A: PUSHAD
|
||||
MOV EDX,0x0A
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ0B: PUSHAD
|
||||
MOV EDX,0x0B
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ0C: PUSHAD
|
||||
MOV EDX,0x0C
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ0D: PUSHAD
|
||||
MOV EDX,0x0D
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ0E: PUSHAD
|
||||
MOV EDX,0x0E
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ0F: PUSHAD
|
||||
MOV EDX,0x0F
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ10: PUSHAD
|
||||
MOV EDX,0x10
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ11: PUSHAD
|
||||
MOV EDX,0x11
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ12: PUSHAD
|
||||
MOV EDX,0x12
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ13: PUSHAD
|
||||
MOV EDX,0x13
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ14: PUSHAD
|
||||
MOV EDX,0x14
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ15: PUSHAD
|
||||
MOV EDX,0x15
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ16: PUSHAD
|
||||
MOV EDX,0x16
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ17: PUSHAD
|
||||
MOV EDX,0x17
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ18: PUSHAD
|
||||
MOV EDX,0x18
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ19: PUSHAD
|
||||
MOV EDX,0x19
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ1A: PUSHAD
|
||||
MOV EDX,0x1A
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ1B: PUSHAD
|
||||
MOV EDX,0x1B
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ1C: PUSHAD
|
||||
MOV EDX,0x1C
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ1D: PUSHAD
|
||||
MOV EDX,0x1D
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ1E: PUSHAD
|
||||
MOV EDX,0x1E
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ1F: PUSHAD
|
||||
MOV EDX,0x1F
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ20: STI
|
||||
CLD
|
||||
PUSHAD
|
||||
MOV EAX,U4 [SYS_EXTERN_TABLE]
|
||||
MOV EAX,U4 EXT_IRQ00*4[EAX]
|
||||
OR EAX,EAX
|
||||
JZ @@2
|
||||
MOV EBP,ESP
|
||||
PUSH 0
|
||||
PUSH U4 SP_EIP[EBP]
|
||||
CALL EAX
|
||||
ADD ESP,8
|
||||
@@2: MOV AL,0x20 //ACKNOWLEDGE INTERRUPT
|
||||
OUT 0x20,AL
|
||||
POPAD
|
||||
BT U4 [SYS_FLAGS],SYSf_PREEMPTIVE
|
||||
JC IRQ_SWAP_IN_NEXT
|
||||
IRET
|
||||
|
||||
IRQ_SWAP_IN_NEXT:
|
||||
CLI
|
||||
CALL SAVE_CONTEXT //PREEMPTIVE
|
||||
|
||||
MOV EBP,ESP
|
||||
MOV EAX,[EBP]
|
||||
MOV U4 FS:[TSS_EIP],EAX
|
||||
MOV EAX,8[EBP]
|
||||
MOV U4 FS:[TSS_EFLAGS],EAX
|
||||
ADD EBP,12
|
||||
MOV U4 FS:[TSS_ESP],EBP
|
||||
|
||||
MOV ESI,U4 FS:[TSS_NEXT_TSS]
|
||||
MOV AX,U2 TSS_FS[ESI]
|
||||
MOV FS,AX
|
||||
JMP U4 SWAP_IN_NEXT_PART2
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ21:: CLD
|
||||
PUSHAD
|
||||
CALL U4 CP_KBD_HANDLER+4
|
||||
MOV AL,0x20 //ACKNOWLEDGE INTERRUPT
|
||||
OUT 0x20,AL
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ22: PUSHAD
|
||||
MOV EDX,0x22
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ23: CLD
|
||||
PUSHAD
|
||||
MOV EAX,U4 [SYS_EXTERN_TABLE]
|
||||
MOV EAX,U4 EXT_IRQ03*4[EAX]
|
||||
OR EAX,EAX
|
||||
JZ @@231
|
||||
CALL EAX
|
||||
@@231: MOV AL,0x20 //ACKNOWLEDGE INTERRUPT
|
||||
OUT 0x20,AL
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ24: CLD
|
||||
PUSHAD
|
||||
MOV EAX,U4 [SYS_EXTERN_TABLE]
|
||||
MOV EAX,U4 EXT_IRQ04*4[EAX]
|
||||
OR EAX,EAX
|
||||
JZ @@241
|
||||
CALL EAX
|
||||
@@241: MOV AL,0x20 //ACKNOWLEDGE INTERRUPT
|
||||
OUT 0x20,AL
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ25: PUSHAD
|
||||
MOV EDX,0x25
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ26: CLD
|
||||
PUSHAD
|
||||
MOV EAX,U4 [SYS_EXTERN_TABLE]
|
||||
MOV EAX,U4 EXT_IRQ06*4[EAX]
|
||||
OR EAX,EAX
|
||||
JZ @@261
|
||||
CALL EAX
|
||||
@@261: MOV AL,0x20 //ACKNOWLEDGE INTERRUPT
|
||||
OUT 0x20,AL
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ27: CLD
|
||||
PUSHAD
|
||||
MOV EAX,U4 [SYS_EXTERN_TABLE]
|
||||
MOV EAX,U4 EXT_IRQ07*4[EAX]
|
||||
OR EAX,EAX
|
||||
JZ @@271
|
||||
CALL EAX
|
||||
@@271: MOV AL,0x20 //ACKNOWLEDGE INTERRUPT
|
||||
OUT 0x20,AL
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ28: PUSHAD
|
||||
MOV EDX,0x28
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ29: PUSHAD
|
||||
MOV EDX,0x29
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ2A: PUSHAD
|
||||
MOV EDX,0x2A
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ2B: PUSHAD
|
||||
MOV EDX,0x2B
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ2C: CLD
|
||||
PUSHAD
|
||||
MOV EAX,U4 [SYS_EXTERN_TABLE]
|
||||
MOV EAX,U4 EXT_IRQ0C*4[EAX]
|
||||
OR EAX,EAX
|
||||
JZ @@2C1
|
||||
CALL EAX
|
||||
@@2C1: MOV AL,0x20
|
||||
OUT 0xA0,AL
|
||||
MOV AL,0x20
|
||||
OUT 0x20,AL
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ2D: PUSHAD
|
||||
MOV EDX,0x2D
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ2E: CLD
|
||||
PUSHAD
|
||||
MOV EAX,U4 [SYS_EXTERN_TABLE]
|
||||
MOV EAX,U4 EXT_IRQ0E*4[EAX]
|
||||
OR EAX,EAX
|
||||
JZ @@2E1
|
||||
CALL EAX
|
||||
@@2E1: MOV AL,0x20
|
||||
OUT 0xA0,AL
|
||||
MOV AL,0x20
|
||||
OUT 0x20,AL
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ2F: CLD
|
||||
PUSHAD
|
||||
MOV EAX,U4 [SYS_EXTERN_TABLE]
|
||||
MOV EAX,U4 EXT_IRQ0F*4[EAX]
|
||||
OR EAX,EAX
|
||||
JZ @@2F1
|
||||
CALL EAX
|
||||
@@2F1: MOV AL,0x20
|
||||
OUT 0xA0,AL
|
||||
MOV AL,0x20
|
||||
OUT 0x20,AL
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
//************************************ SOFTWARE INT'S ******************************
|
||||
TEST_AND_ENABLE_IRQS:
|
||||
PUSH EBP
|
||||
MOV EBP,ESP
|
||||
//16[ebp]=flags
|
||||
//12[ebp]=cs
|
||||
// 8[ebp]=iret
|
||||
// 4[ebp]=ret
|
||||
// 0[ebp]=ebp
|
||||
BT U4 16[EBP],9
|
||||
JNC @@TEI1
|
||||
STI
|
||||
@@TEI1: POP EBP
|
||||
RET
|
||||
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ30: CALL TEST_AND_ENABLE_IRQS
|
||||
PUSHAD
|
||||
PUSH 0
|
||||
PUSH ESI
|
||||
CALL CP_PUT_SYSTEXT+4
|
||||
ADD ESP,8
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ31: CALL TEST_AND_ENABLE_IRQS
|
||||
PUSHAD
|
||||
CALL PUT_I1
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ32: CALL TEST_AND_ENABLE_IRQS
|
||||
PUSHAD
|
||||
MOV ESI,MSG_GETCHAR
|
||||
CALL FIND_EXTERN
|
||||
JNZ @@3210
|
||||
CALL GET_KEY
|
||||
INT I_PUT_I1
|
||||
XOR EDX,EDX
|
||||
JMP @@3220
|
||||
@@3210: PUSH 0
|
||||
PUSH 0
|
||||
CALL ESI
|
||||
ADD ESP,8
|
||||
@@3220: MOV EBP,ESP
|
||||
MOV U4 SP_EAX[EBP],EAX
|
||||
MOV U4 SP_EDX[EBP],EDX
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
|
||||
COUT_JOIN::
|
||||
OR EBX,EBX
|
||||
JZ U4 @@100
|
||||
@@20: MOV EDX,U4 [EBP]
|
||||
MOV EAX,U4 8[EBP]
|
||||
PUSHAD
|
||||
|
||||
CMP EDX,IT_NUM_IT+IT_I1
|
||||
JNE @@25
|
||||
PUSH ESI
|
||||
MOV ESI,EAX
|
||||
CALL PUT_STRING
|
||||
POP ESI
|
||||
JMP @@29
|
||||
@@25: CMP EDX,IT_U8
|
||||
JE @@26
|
||||
CMP EDX,IT_I8
|
||||
JNE @@24
|
||||
@@26: MOV EAX,U4 12[EBP]
|
||||
CALL PUT_HEX
|
||||
MOV EAX,U4 8[EBP]
|
||||
CALL PUT_HEX
|
||||
JMP @@29
|
||||
@@24: CMP EDX,IT_U4
|
||||
JE @@21
|
||||
CMP EDX,IT_I4
|
||||
JNE @@21A
|
||||
@@21: CALL PUT_HEX
|
||||
JMP @@29
|
||||
@@21A: CMP EDX,IT_U2
|
||||
JE @@22
|
||||
CMP EDX,IT_I2
|
||||
JNE @@22A
|
||||
@@22: CALL PUT_HEX_U2
|
||||
JMP @@29
|
||||
@@22A: CMP EDX,IT_U1
|
||||
JNE @@23
|
||||
CALL PUT_HEX_U1
|
||||
JMP @@29
|
||||
@@23: CMP EDX,IT_DOUBLE
|
||||
JNE @@30
|
||||
PUSH U4 12[EBP]
|
||||
PUSH U4 8[EBP]
|
||||
CALL CP_PUT_FLOAT+4
|
||||
ADD ESP,8
|
||||
JMP @@29
|
||||
@@30: CMP EDX,IT_I1
|
||||
JNE @@21
|
||||
CALL PUT_I1
|
||||
|
||||
@@29: POPAD
|
||||
SUB EBP,16
|
||||
DEC EBX
|
||||
JNZ U4 @@20
|
||||
@@100: RET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ33:: CALL TEST_AND_ENABLE_IRQS //COUT
|
||||
PUSH EBP
|
||||
MOV EBP,ESP
|
||||
MOV EBX,EAX //GET PARAM CNT
|
||||
ADD EBX,EBX
|
||||
LEA EBP,16-16[EBP+EBX*8]
|
||||
MOV EBX,EAX //GET PARAM CNT
|
||||
CALL COUT_JOIN
|
||||
POP EBP
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ34: CALL TEST_AND_ENABLE_IRQS
|
||||
PUSHAD
|
||||
SUB ESP,16 //Space for param1 & param2
|
||||
PUSH EDX //mask
|
||||
PUSH EAX //mask
|
||||
MOV EAX,ESP
|
||||
ADD EAX,16
|
||||
PUSH 0
|
||||
PUSH 0
|
||||
PUSH 0 //¶m2
|
||||
PUSH EAX //¶m2
|
||||
SUB EAX,8
|
||||
PUSH 0 //¶m1
|
||||
PUSH EAX //¶m1
|
||||
MOV ESI,MSG_PEEK_MSG
|
||||
CALL FIND_EXTERN
|
||||
CALL ESI
|
||||
ADD ESP,32
|
||||
POP EBX //param1
|
||||
ADD ESP,4
|
||||
POP EDX //param2
|
||||
ADD ESP,4
|
||||
MOV EBP,ESP
|
||||
MOV U4 SP_EAX[EBP],EAX
|
||||
MOV U4 SP_EBX[EBP],EBX
|
||||
MOV U4 SP_EDX[EBP],EDX
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ35: CALL TEST_AND_ENABLE_IRQS
|
||||
PUSHAD
|
||||
SUB ESP,16 //Space for param1 & param2
|
||||
PUSH EDX //mask
|
||||
PUSH EAX //mask
|
||||
MOV EAX,ESP
|
||||
ADD EAX,16
|
||||
PUSH 0
|
||||
PUSH 0
|
||||
PUSH 0 //¶m2
|
||||
PUSH EAX //¶m2
|
||||
SUB EAX,8
|
||||
PUSH 0 //¶m1
|
||||
PUSH EAX //¶m1
|
||||
MOV ESI,MSG_GET_MSG_NO_WAIT
|
||||
CALL FIND_EXTERN
|
||||
CALL ESI
|
||||
ADD ESP,32
|
||||
POP EBX //param1
|
||||
ADD ESP,4
|
||||
POP EDX //param2
|
||||
MOV EBP,ESP
|
||||
ADD ESP,4
|
||||
MOV U4 SP_EAX[EBP],EAX
|
||||
MOV U4 SP_EBX[EBP],EBX
|
||||
MOV U4 SP_EDX[EBP],EDX
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ36:: CALL TEST_AND_ENABLE_IRQS
|
||||
PUSHAD
|
||||
MOV ESI,MSG_FLUSH_MSGS
|
||||
CALL FIND_EXTERN
|
||||
XOR EAX,EAX
|
||||
OR ESI,ESI
|
||||
JZ @@1
|
||||
CALL ESI
|
||||
@@1: MOV EBP,ESP
|
||||
MOV U4 SP_EDX[EBP],EDX
|
||||
MOV U4 SP_EAX[EBP],EAX
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
CP_FLUSH_MSGS::
|
||||
INT I_FLUSH_MSGS
|
||||
RET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ37: CALL TEST_AND_ENABLE_IRQS
|
||||
PUSHAD
|
||||
SUB ESP,16 //Space for param1 & param2
|
||||
PUSH EDX //mask
|
||||
PUSH EAX //mask
|
||||
MOV EAX,ESP
|
||||
ADD EAX,16
|
||||
PUSH 0
|
||||
PUSH 0
|
||||
PUSH 0 //¶m2
|
||||
PUSH EAX //¶m2
|
||||
SUB EAX,8
|
||||
PUSH 0 //¶m1
|
||||
PUSH EAX //¶m1
|
||||
MOV ESI,MSG_GET_MSG
|
||||
CALL FIND_EXTERN
|
||||
CALL ESI
|
||||
ADD ESP,32
|
||||
POP EBX //param1
|
||||
ADD ESP,4
|
||||
POP EDX //param2
|
||||
ADD ESP,4
|
||||
MOV EBP,ESP
|
||||
MOV U4 SP_EAX[EBP],EAX
|
||||
MOV U4 SP_EBX[EBP],EBX
|
||||
MOV U4 SP_EDX[EBP],EDX
|
||||
POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ38:: CALL TEST_AND_ENABLE_IRQS
|
||||
CALL PUT_STRING
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ39:: CALL TEST_AND_ENABLE_IRQS
|
||||
PUSH EBP
|
||||
MOV EBP,ESP
|
||||
MOV EBX,EAX //GET PARAM CNT
|
||||
ADD EBX,EBX
|
||||
LEA EBP,16-16[EBP+EBX*8]
|
||||
MOV EBX,EAX //GET PARAM CNT
|
||||
CALL COUT_JOIN
|
||||
CALL CRLF
|
||||
POP EBP
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90 //I_DEBUG
|
||||
IRQ3A:: CLI
|
||||
CLD
|
||||
PUSHAD
|
||||
CALL SAVE_CONTEXT
|
||||
MOV EAX,U4 [SYS_EXTERN_TABLE]
|
||||
MOV EAX,U4 EXT_DEBUG*4[EAX]
|
||||
OR EAX,EAX
|
||||
JZ @@3A1
|
||||
CALL EAX
|
||||
@@3A1: POPAD
|
||||
IRET
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ3B: PUSHAD
|
||||
MOV EDX,0x3B
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ3C: PUSHAD
|
||||
MOV EDX,0x3C
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ3D: PUSHAD
|
||||
MOV EDX,0x3D
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ3E: PUSHAD
|
||||
MOV EDX,0x3E
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ3F: PUSHAD
|
||||
MOV EDX,0x3F
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ40: PUSHAD
|
||||
MOV EDX,0x40
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ41: PUSHAD
|
||||
MOV EDX,0x41
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ42: PUSHAD
|
||||
MOV EDX,0x42
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ43: PUSHAD
|
||||
MOV EDX,0x43
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ44: PUSHAD
|
||||
MOV EDX,0x44
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ45: PUSHAD
|
||||
MOV EDX,0x45
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ46: PUSHAD
|
||||
MOV EDX,0x46
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ47: PUSHAD
|
||||
MOV EDX,0x47
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ48: PUSHAD
|
||||
MOV EDX,0x48
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ49: PUSHAD
|
||||
MOV EDX,0x49
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ4A: PUSHAD
|
||||
MOV EDX,0x4A
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ4B: PUSHAD
|
||||
MOV EDX,0x4B
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ4C: PUSHAD
|
||||
MOV EDX,0x4C
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ4D: PUSHAD
|
||||
MOV EDX,0x4D
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ4E: PUSHAD
|
||||
MOV EDX,0x4E
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ4F: PUSHAD
|
||||
MOV EDX,0x4F
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ50: PUSHAD
|
||||
MOV EDX,0x50
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ51: PUSHAD
|
||||
MOV EDX,0x51
|
||||
JMP U4 IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ52: PUSHAD
|
||||
MOV EDX,0x52
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ53: PUSHAD
|
||||
MOV EDX,0x53
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ54: PUSHAD
|
||||
MOV EDX,0x54
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ55: PUSHAD
|
||||
MOV EDX,0x55
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ56: PUSHAD
|
||||
MOV EDX,0x56
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ57: PUSHAD
|
||||
MOV EDX,0x57
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ58: PUSHAD
|
||||
MOV EDX,0x58
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ59: PUSHAD
|
||||
MOV EDX,0x59
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ5A: PUSHAD
|
||||
MOV EDX,0x5A
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ5B: PUSHAD
|
||||
MOV EDX,0x5B
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ5C: PUSHAD
|
||||
MOV EDX,0x5C
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ5D: PUSHAD
|
||||
MOV EDX,0x5D
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ5E: PUSHAD
|
||||
MOV EDX,0x5E
|
||||
JMP IRQFAULT
|
||||
|
||||
ALIGN 8,0x90
|
||||
IRQ5F: PUSHAD
|
||||
MOV EDX,0x5F
|
||||
JMP IRQFAULT
|
||||
|
||||
FAULT_DESC: DU1 "FAULT TASK",0;
|
||||
|
||||
CP_FAULT::
|
||||
PUSHAD
|
||||
MOV EBP,ESP
|
||||
MOV EDX,U4 SP_PARAM1[EBP]
|
||||
IRQFAULT::
|
||||
CLD
|
||||
PUSH EDX //Save IRQNUM
|
||||
MOV U4 [SYS_CUR_FOCUS_TASK],0
|
||||
|
||||
MOV EAX,U4 FS:[TSS_DBG]
|
||||
OR EAX,EAX
|
||||
JNZ @@10
|
||||
PUSH 0
|
||||
PUSH U4 DEFAULT_STACK
|
||||
PUSH 0
|
||||
PUSH 0 ///Use parent account
|
||||
PUSH 0
|
||||
PUSH U4 FS:[TSS_ABSOLUTE_ADDRESS]
|
||||
PUSH 0
|
||||
PUSH U4 FAULT_DESC
|
||||
PUSH 0
|
||||
PUSH U4 CP_FAULT_CMD_LINE+4
|
||||
CALL CP_SPAWN_TASK+4
|
||||
ADD ESP,40
|
||||
|
||||
@@10: POP U4 TSS_USER_AUX0[EAX]
|
||||
PUSH 0
|
||||
PUSH EAX
|
||||
MOV EAX,U4 [SYS_EXTERN_TABLE]
|
||||
MOV EAX,U4 EXT_WINDOW_TO_TOP*4[EAX]
|
||||
OR EAX,EAX
|
||||
JZ @@20
|
||||
CALL EAX
|
||||
@@20: ADD ESP,8
|
||||
POPAD
|
||||
BTS U4 FS:[TSS_TASK_FLAGS],TSSf_SUSPENDED
|
||||
JMP U4 IRQ_SWAP_IN_NEXT
|
||||
|
||||
GET_MACHINE_REGS::
|
||||
PUSH EBP
|
||||
MOV EBP,ESP
|
||||
MOV EBX,SF_PARAM1[EBP]
|
||||
|
||||
DU1 0x0F,0x20,0xC0;
|
||||
MOV U4 [EBX],EAX
|
||||
DU1 0x0F,0x20,0xD0;
|
||||
MOV U4 4[EBX],EAX
|
||||
DU1 0x0F,0x20,0xD8;
|
||||
MOV U4 8[EBX],EAX
|
||||
DU1 0x0F,0x20,0xE0;
|
||||
MOV U4 12[EBX],EAX
|
||||
|
||||
DU1 0x0F,0x21,0xC0;
|
||||
MOV U4 16[EBX],EAX
|
||||
DU1 0x0F,0x21,0xC8;
|
||||
MOV U4 20[EBX],EAX
|
||||
DU1 0x0F,0x21,0xD0;
|
||||
MOV U4 24[EBX],EAX
|
||||
DU1 0x0F,0x21,0xD8;
|
||||
MOV U4 28[EBX],EAX
|
||||
DU1 0x0F,0x21,0xF0;
|
||||
MOV U4 32[EBX],EAX
|
||||
DU1 0x0F,0x21,0xF8;
|
||||
MOV U4 36[EBX],EAX
|
||||
|
||||
POP EBP
|
||||
RET
|
||||
| ||||