+void turboXT(byte bakapee)\r
+{\r
+ //byte bakapee = 12;\r
+ __asm {\r
+ push ax\r
+ push bx\r
+ push cx\r
+ in al, 61h ; Read equipment flags\r
+ xor al, bakapee ; toggle speed\r
+ out 61h, al ; Write new flags back\r
+\r
+ mov bx, 0F89h ; low pitch blip\r
+ and al, 4 ; Is turbo mode set?\r
+ jz @@do_beep\r
+ mov bx, 52Eh ; high pitch blip\r
+\r
+@@do_beep:\r
+ mov al, 10110110b ; Timer IC 8253 square waves\r
+ out 43h, al ; channel 2, speaker\r
+ mov ax, bx\r
+ out 42h, al ; send low order\r
+ mov al, ah ; load high order\r
+ out 42h, al ; send high order\r
+ in al, 61h ; Read IC 8255 machine status\r
+ push ax\r
+ or al, 00000011b\r
+ out 61h, al ; Turn speaker on\r
+ mov cx, 2000h\r
+@@delay:\r
+ loop @@delay\r
+ pop ax\r
+ out 61h, al ; Turn speaker off\r
+ pop cx\r
+ pop bx\r
+ pop ax\r
+ }\r
+}\r
+\r