COM (filformat)
Från Rilpedia
En COM-fil är en enkel typ av exekverbar fil som används i MS-DOS och dess kloner, samt även 8-bitars CP/M. Namnet på filformatet kommer från filändelsen .com (från engelskans command, kommando), som ej bör förväxlas med toppdomänen .com (från commercial, kommersiell).
Formatet stöds fortfarande på de flesta moderna Windows-baserade operativsystem, men körs då i en MS-DOS-emulator som har tagits bort i 64-bitarsvarianterna av Windows. Många hjälpprogram som t.ex. MS-DOS-versionen av more
använde formatet, liksom tidiga småapplikationer som IBM:s spel Alley Cat.
Format
COM-formatet är kanske det enklaste exekverbara formatet av alla; det innehåller inget metadata, bara programinstruktioner och data, och läses alltid in i adress 0x0100 i något segment för att sedan köras. Ingen relokation är nödvändig.
Enkelheten har dock sitt pris: den maximala storleken för en COM-fil är 65,280 (0xFF00) bytes och programmet måste lagra alla data och instruktioner i ett segment. Detta var inte något problem i tidiga 8-bitars CP/M-maskiner, men är anledningen till varför formatet slutat användas i större grad efter att 16-bitars och 32-bitarsprocessorer introducerats, med sina större segmenterade arbetsminnen.
I Intel 8080-processorn kunde bara 65,536 bytes adresseras. I CP/M var den första sidan av detta minnesintervall, från 0x0000 till 0x00FF, reserverat för systemet, och alla program måste följaktligen läsas in i adressen 0x0100 och högre. COM-filer passar denna modell perfekt. Notera att det fanns ingen möjlighet att köra fler än ett program samtidigt i CP/M: bara COM-filen som lästs in i adress 0x0100.
Även om filformatet är detsamma i CP/M och MS-DOS betyder inte detta att CP/M-program kan köras direkt i MS-DOS eller tvärtom. COM-filer i MS-DOS innehåller x86-instruktioner, medan COM-filer i CP/M innehåller 8080, 8085 eller Z80-instruktioner. Dessutom är COM-filer i MS-DOS beroende av operativtjänster som finns bara i MS-DOS-miljön. Med litet finurlighet går det dock att kostruera COM-filer som både kan köras i CP/M och MS-DOS.
Filer kan ha filändelsen .COM men inte vara i det enkla format som beskrivits. Detta påskins genom ett magiskt nummer i början av filen. Till exempel är COMMAND.COM i DR-DOS 6 egentligen i DOS Executable-format, vilket kan förstås av de första två bytes 0x4D 0x5A (MZ i ASCII), Mark Zbikowski initialer.