void DSKCHG_GETDPB(bool checkFileChanged)
        {
            var driveNumber = z80.Registers.A;

            z80.Registers.CF = 1;

            if (driveNumber != 0)
            {
                z80.Registers.A = 2;
                return;
            }

            CheckForUsbChanges();
            if (!DeviceAvailable)
            {
                z80.Registers.A = 12;
                return;
            }

            z80.Registers.A = 0;

            var diskChanged = false;

            if (checkFileChanged)
            {
                diskChanged = CheckDiskChanged(out byte errorCode);
                if (errorCode != 0)
                {
                    z80.Registers.A  = errorCode;
                    z80.Registers.CF = 1;
                    return;
                }
                z80.Registers.B = (byte)(diskChanged ? -1 : 1);
            }

            if (diskChanged || dpb == null)
            {
                dpb = GenerateDpb(out byte errorCode);
                if (errorCode != 0)
                {
                    z80.Registers.A  = errorCode;
                    z80.Registers.CF = 1;
                    return;
                }
            }

            memory.SetContents(z80.Registers.HL + 1, dpb);

            z80.Registers.CF = 0;
        }