A multiple platform portable data terminal, for reading or scanning indicia, the portable data terminal supporting a plurality of operating systems to operate a scan driver application program which is configured to communicate with one of the plurality of operating systems, comprising: a processor having an instruction set architecture; an imaging assembly; an illumination assembly; and data storage means configured to store: the plurality of operating systems; a virtual machine application program configured to receive at least one instruction from each operating system, to communicate with the processor according to the instruction set architecture, to switch operating systems access to the processor to that operating system with which the scan driver application program is configured to communicate upon reception of an electrical signal indicating a scan attempt event, and to switch upon receipt of an electrical signal representing a further event the operating systems access to the processor back to the operating system that had control prior to the scan attempt or to any other operating system of the plurality of operating systems, a scan driver application program configured to communicate with the imaging and illumination assemblies to retrieve pixel data, and a decoder application program to decode the retrieved pixel data; wherein the further event comprises a successful decode operation by the decoder application program. a processor having an instruction set architecture; an imaging assembly; an illumination assembly; and data storage means configured to store: the plurality of operating systems; a virtual machine application program configured to receive at least one instruction from each operating system, to communicate with the processor according to the instruction set architecture, to switch operating systems access to the processor to that operating system with which the scan driver application program is configured to communicate upon reception of an electrical signal indicating a scan attempt event, and to switch upon receipt of an electrical signal representing a further event the operating systems access to the processor back to the operating system that had control prior to the scan attempt or to any other operating system of the plurality of operating systems, a scan driver application program configured to communicate with the imaging and illumination assemblies to retrieve pixel data, and a decoder application program to decode the retrieved pixel data; the plurality of operating systems; a virtual machine application program configured to receive at least one instruction from each operating system, to communicate with the processor according to the instruction set architecture, to switch operating systems access to the processor to that operating system with which the scan driver application program is configured to communicate upon reception of an electrical signal indicating a scan attempt event, and to switch upon receipt of an electrical signal representing a further event the operating systems access to the processor back to the operating system that had control prior to the scan attempt or to any other operating system of the plurality of operating systems, a scan driver application program configured to communicate with the imaging and illumination assemblies to retrieve pixel data, and a decoder application program to decode the retrieved pixel data;