VirtualBox

Changeset 78572 in vbox for trunk/src/VBox/Devices/PC


Ignore:
Timestamp:
May 17, 2019 2:27:50 PM (6 years ago)
Author:
vboxsync
Message:

Undoing bad commit.

Location:
trunk/src/VBox/Devices/PC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS/ata.c

    r78571 r78572  
    638638                    fdpt = ebda_seg :> &EbdaData->fdpt1;
    639639
    640 #if 1
     640#if 0
    641641                /* Place the FDPT outside of conventional memory. Needed for
    642642                 * 286 XENIX 2.1.3/2.2.1 because it completely wipes out
  • trunk/src/VBox/Devices/PC/BIOS/disk.c

    r78571 r78572  
    162162            dpt->heads     = bios_dsk->devices[device].pchs.heads;
    163163            dpt->spt       = bios_dsk->devices[device].pchs.spt;
    164 #if 1
    165164            lba = bios_dsk->devices[device].sectors;
    166 #else
    167             // Makes PC DOS 7.1 FDISK32 happy
    168             lba = (uint32_t)dpt->cylinders * dpt->heads * dpt->spt;
    169 #endif
    170165            dpt->sector_count1 = lba;
    171166            dpt->sector_count2 = lba >> 32;
     
    400395        break;
    401396
    402 #ifdef VBOX_WITH_SCSIz
    403     case 0x06: /* identify SCSI devices */
    404         if (VBOX_IS_SCSI_DEVICE(device)|| 1) {
    405             BX_INFO("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES);
    406             BX_INFO("%s: function %02xh detected SCSI drive\n", __func__, GET_AH());
    407             SET_BH(0);
    408             SET_BL(0);
    409             SET_AL(0x80);
    410             goto int13_success;
    411         }
    412         BX_INFO("%s no SCSI drives, returns fail\n", __func__);
    413         goto int13_fail;
    414         break;
    415 #endif
    416397    case 0x08: /* read disk drive parameters */
    417398
    418399        /* Get the logical geometry from internal table. */
    419 #if 0
    420         /* Windows 3.1 FastDisk (wdctrl) insists on this */
    421         nlc   = bios_dsk->devices[device].lchs.cylinders - 1;
    422 #else
    423400        nlc   = bios_dsk->devices[device].lchs.cylinders;
    424 #endif
    425401        nlh   = bios_dsk->devices[device].lchs.heads;
    426402        nlspt = bios_dsk->devices[device].lchs.spt;
  • trunk/src/VBox/Devices/PC/BIOS/makefile

    r78571 r78572  
    4747
    4848vbxbios.rom : vbxbios.bin
    49 !if $(CPU) > 286
    5049        biossums $< $@
    51 !else
    52         cp $< $@
    53 !endif
    5450
    5551vbxbios.bin : $(OBJS) $(__MAKEFILES__)
  • trunk/src/VBox/Devices/PC/DevDMA.cpp

    r78571 r78572  
    9999#define DMA_SAVESTATE_OLD       1   /* The original saved state. */
    100100#define DMA_SAVESTATE_CURRENT   2   /* The new and improved saved state. */
    101 #define DMA_FIXES
    102101
    103102/* State information for a single DMA channel. */
     
    267266            else
    268267                ch->u16BaseAddr  = RT_MAKE_U16(ch->u16BaseAddr, u32);
     268
     269            ch->u16CurCount = 0;
     270            ch->u16CurAddr  = ch->u16BaseAddr;
    269271        }
    270272        else
     
    276278                ch->u16BaseAddr  = RT_MAKE_U16(u32, RT_HIBYTE(ch->u16BaseAddr));
    277279        }
    278         /*
    279          * Update the current count/address.
    280          *
    281          * NB: The current count actually counts from zero up, while the base count
    282          * uses the the 8257 semantics and counts down. The guest never sees the
    283          * current count directly.
    284          */
    285         if (is_count)
    286             ch->u16CurCount = 0;
    287         else
    288             ch->u16CurAddr  = ch->u16BaseAddr;
    289 
    290280        Log2(("dmaWriteAddr: port %#06x, chidx %d, data %#02x\n",
    291281              port, chidx, u32));
     
    322312            val = ch->u16BaseCount - ch->u16CurCount;
    323313        else
    324 #ifdef DMA_FIXES
    325             val = ch->u16CurAddr;
    326 #else
    327314            val = ch->u16CurAddr + ch->u16CurCount * dir;
    328 #endif
    329315
    330316        bptr = dmaReadBytePtr(dc);
     
    615601    DMAChannel  *ch = &dc->ChState[chidx];
    616602    uint32_t    start_cnt, end_cnt;
    617     int         uDelta;
    618603    int         opmode;
    619604
     
    631616    end_cnt = ch->pfnXferHandler(pThis->pDevIns, ch->pvUser, (ctlidx * 4) + chidx,
    632617                                 start_cnt, (ch->u16BaseCount + 1) << dc->is16bit);
    633     uDelta = (end_cnt - start_cnt) >> dc->is16bit;
    634618    ch->u16CurCount = end_cnt >> dc->is16bit;
    635 #ifdef DMA_FIXES    // Necessary, but currently upsets SB16.
    636     int dir = IS_MODE_DEC(ch->u8Mode) ? -1 : 1;
    637     ch->u16CurAddr += uDelta * dir;
    638 #endif
    639619    /* Set the TC (Terminal Count) bit if transfer was completed. */
    640620    if (ch->u16CurCount == ch->u16BaseCount + 1)
     
    644624        case DMODE_SINGLE:
    645625        case DMODE_BLOCK:
    646             dc->u8Status |= RT_BIT(chidx);  /* Set the TC status bit. */
    647             Log3(("TC set for DMA channel %d, auto-init %s\n", (ctlidx * 4) + chidx, IS_MODE_AI(ch->u8Mode) ? "on" : "off"));
    648             if (IS_MODE_AI(ch->u8Mode))
    649             {
    650                 /* Auto-init DMA, resets the current address/count. */
    651 #ifdef DMA_FIXES    // Necessary, but currently upsets SB16.
    652                 ch->u16CurAddr  = ch->u16BaseAddr;
    653                 ch->u16CurCount = 0;
    654 #endif
    655             }
    656             else
    657                 dc->u8Mask |= RT_BIT(chidx);    /* No auto-init, mask channel. */
     626            dc->u8Status |= RT_BIT(chidx);
     627            Log3(("TC set for DMA channel %d\n", (ctlidx * 4) + chidx));
    658628            break;
    659629        default:
     
    685655        {
    686656            mask = 1 << chidx;
    687             /* Run channel if not masked and its DREQ is active. */
    688657            if (!(dc->u8Mask & mask) && (dc->u8Status & (mask << 4)))
    689658                dmaRunChannel(pThis, ctlidx, chidx);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette