Program EnableCyrix; {Test for CYRIX CPU first} procedure enable_cyrix_cpuid; assembler; asm cli {Get Cyrix reg c3h} mov al,0xc3 out $22,al in al,$23 {Enable config access} mov cl,al mov bl,al and bl,0xf or bl,0x10 {Set Cyrix reg c3h} mov al,0xc3 out 0x22,al mov al,bl out 0x23,al {Get Cyrix reg e8} mov al,0xe8 out 0x22,al in al,0x23 {Set "CPUID" bit} or al,0x80 mov bl,al {Set Cyrix reg e8} mov al,0xe8 out 0x22,al mov al,bl out 0x23,al {Get Cyrix reg fe} mov al,0xfe out 0x22,al in al,0x23 {Is CPU a 6x86(L)?} and al,0xf0 cmp al,0x30 jne @not6x86 {Get Cyrix reg e9} mov al,0xe9 out 0x22,al in al,0x23 {Fix 6x86 SLOP bug} and al,0xfd mov bl,al {Set Cyrix reg e9} mov al,0xe9 out 0x22,al mov al,bl out 0x23,al @not6x86: {Set Cyrix reg c3} mov al,0xc3 out 0x22,al mov al,cl out 0x23,al sti end ['eax','ebx','ecx','edx']; begin writeln('Enabling...'); enable_cyrix_cpuid; writeln('Enabled.'); end.