diff --git a/source/pmentry.asm b/source/pmentry.asm --- a/source/pmentry.asm +++ b/source/pmentry.asm @@ -292,13 +292,53 @@ setopt [serial_flags], sf_ctrl_c pop ds %endif + testopt [cs:options3], 100_0000h + jnz .stc + +.clc: + testopt [cs:options3], 200_0000h + jnz .clc_retf + +.clc_retf_x: cmp byte [ cs:dpmi32 ], 0 ; always NC - je .retf16_2 - o32 - retf 4 ; retfd 4 -.retf16_2: + je .clc_retf16_2 + clc + retfd 4 +.clc_retf16_2: + clc retf 2 +.clc_retf: + cmp byte [ cs:dpmi32 ], 0 ; always NC + je .clc_retf16 + clc + retfd +.clc_retf16: + clc + retf + +.stc: + testopt [cs:options3], 200_0000h + jnz .stc_retf + +.stc_retf_x: + cmp byte [ cs:dpmi32 ], 0 ; always NC + je .stc_retf16_2 + stc + retfd 4 +.stc_retf16_2: + stc + retf 2 + +.stc_retf: + cmp byte [ cs:dpmi32 ], 0 ; always NC + je .stc_retf16 + stc + retfd +.stc_retf16: + stc + retf + i24pm: mov al, 03h ; fail cmp byte [ cs:dpmi32 ], 0