Ну да. В основном Ассемблер. Или другие языки низкого уровня. Их не очень много. Отличие языков низкого, от языков высокого уровня в том, что языки низкого уровня работают напрямую с машинными кодами, т.е. могут регулировать прерывания и т.п. К сожалению языки высокого уровня (имеется ввиду сами, без привязки к другим языкам) делать такого не могут. Но обыно используется смешение языков. Например в том же игровом автомате может использоваться ассемблер именно для работы с оборудованием на аппаратном уровне, а вот Высокие языки для создания консоли управления. В общем вариантов очень много.