亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dsk.c

?? 這是DOS操作系統啟動的源代碼 里面是匯編語言 包括了部分的驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************/
/*								*/
/*			      dsk.c				*/
/*								*/
/*			Copyright (c) 1995			*/
/*			Pasquale J. Villani			*/
/*			All Rights Reserved			*/
/*								*/
/* This file is part of DOS-C.					*/
/*								*/
/* DOS-C is free software; you can redistribute it and/or	*/
/* modify it under the terms of the GNU General Public License	*/
/* as published by the Free Software Foundation; either version	*/
/* 2, or (at your option) any later version.			*/
/*								*/
/* DOS-C is distributed in the hope that it will be useful, but	*/
/* WITHOUT ANY WARRANTY; without even the implied warranty of	*/
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See	*/
/* the GNU General Public License for more details.		*/
/*								*/
/* You should have received a copy of the GNU General Public	*/
/* License along with DOS-C; see the file COPYING.  If not,	*/
/* write to the Free Software Foundation, 675 Mass Ave,		*/
/* Cambridge, MA 02139, USA.					*/
/****************************************************************/

#include "../../hdr/portab.h"
#include "globals.h"

/* $Logfile:   C:/dos-c/src/kernel/dsk.c_v  $ */
#ifdef VERSION_STRINGS
static BYTE *dskRcsId = "$Header:   C:/dos-c/src/kernel/dsk.c_v   1.6   04 Jan 1998 23:15:16   patv  $";
#endif

/* $Log:   C:/dos-c/src/kernel/dsk.c_v  $
 * 
 *    Rev 1.6   04 Jan 1998 23:15:16   patv
 * Changed Log for strip utility
 * 
 *    Rev 1.5   10 Jan 1997  5:41:48   patv
 * Modified for extended partition support
 *
 *    Rev 1.4   29 May 1996 21:03:32   patv
 * bug fixes for v0.91a
 *
 *    Rev 1.3   19 Feb 1996  3:21:36   patv
 * Added NLS, int2f and config.sys processing
 *
 *    Rev 1.2   01 Sep 1995 17:54:18   patv
 * First GPL release.
 *
 *    Rev 1.1   30 Jul 1995 20:52:00   patv
 * Eliminated version strings in ipl
 *
 *    Rev 1.0   02 Jul 1995  8:32:42   patv
 * Initial revision.
 */
/* $EndLog$ */

#ifdef PROTO
BOOL fl_reset(VOID);
COUNT fl_rd_status(WORD);
COUNT fl_read(WORD, WORD, WORD, WORD, WORD, BYTE FAR *);
COUNT fl_write(WORD, WORD, WORD, WORD, WORD, BYTE FAR *);
BOOL fl_verify(WORD, WORD, WORD, WORD, WORD, BYTE FAR *);
BOOL fl_format(WORD, BYTE FAR *);
#else
BOOL fl_reset();
COUNT fl_rd_status();
COUNT fl_read();
COUNT fl_write();
BOOL fl_verify();
BOOL fl_format();
#endif

#define NDEV		8		/* only one for demo		*/
#define	SEC_SIZE	512		/* size of sector in bytes	*/
#define N_RETRY		5		/* number of retries permitted	*/
#define	NENTRY		25		/* total size of dispatch table	*/

union
{
	BYTE	bytes[2 * SEC_SIZE];
	boot	boot_sector;
} buffer;

static struct media_info
{
	ULONG	mi_size;		/* physical sector count	*/
	UWORD	mi_heads;		/* number of heads (sides)	*/
	UWORD	mi_cyls;		/* number of cyl/drive		*/
	UWORD	mi_sectors;		/* number of sectors/cyl	*/
	ULONG	mi_offset;		/* relative partition offset	*/
        BYTE    mi_drive;               /* BIOS drive number            */
        COUNT   mi_partidx;             /* Index to partition array     */
};

static struct media_info miarray[NDEV]; /* Internal media info structs  */
static bpb bpbarray[NDEV];              /* BIOS parameter blocks        */
static bpb *bpbptrs[NDEV];              /* pointers to bpbs             */

#define N_PART 4                        /* number of partitions per
                                           table partition              */

static WORD head, track, sector, ret;   /* globals for blockio          */
static WORD count;
static COUNT nUnits;                    /* number of returned units     */
static COUNT nPartitions;               /* number of DOS partitions     */

#define PARTOFF	0x1be

static struct
{
        BYTE    peDrive;                /* BIOS drive number            */
	BYTE	peBootable;
	BYTE	peBeginHead;
	BYTE	peBeginSector;
	UWORD	peBeginCylinder;
	BYTE	peFileSystem;
	BYTE	peEndHead;
	BYTE	peEndSector;
	UWORD	peEndCylinder;
	LONG	peStartSector;
	LONG	peSectors;
        LONG    peAbsStart;             /* Absolute sector start        */
} dos_partition[NDEV - 2];


#ifdef PROTO
WORD init(rqptr), mediachk(rqptr), bldbpb(rqptr), blockio(rqptr), blk_error(rqptr);
COUNT ltop(WORD *, WORD *, WORD *, COUNT, COUNT, LONG, byteptr);
WORD dskerr(COUNT);
COUNT processtable(COUNT ptDrive, BYTE ptHead, UWORD ptCylinder, BYTE ptSector, LONG ptAccuOff);
#else
WORD init(), mediachk(), bldbpb(), blockio(), blk_error();
WORD dskerr();
COUNT processtable();
#endif

/*									*/
/* the function dispatch table						*/
/*									*/

#ifdef PROTO
static WORD (*dispatch[NENTRY]) (rqptr) =
#else
static WORD (*dispatch[NENTRY]) () =
#endif
{
	init,				/* Initialize			*/
	mediachk,			/* Media Check			*/
	bldbpb,				/* Build BPB			*/
	blk_error,			/* Ioctl In			*/
	blockio,			/* Input (Read)			*/
	blk_error,			/* Non-destructive Read		*/
	blk_error,			/* Input Status			*/
	blk_error,			/* Input Flush			*/
	blockio,			/* Output (Write)		*/
	blockio,			/* Output with verify		*/
	blk_error,			/* Output Status		*/
	blk_error,			/* Output Flush			*/
	blk_error,			/* Ioctl Out			*/
	blk_error,			/* Device Open			*/
	blk_error,			/* Device Close			*/
	blk_error,			/* Removable Media		*/
	blk_error,			/* Output till busy		*/
	blk_error,			/* undefined			*/
	blk_error,			/* undefined			*/
	blk_error,			/* Generic Ioctl		*/
	blk_error,			/* undefined			*/
	blk_error,			/* undefined			*/
	blk_error,			/* undefined			*/
	blk_error,			/* Get Logical Device		*/
	blk_error			/* Set Logical Device		*/
};

#define SIZEOF_PARTENT	16

#define FAT12		0x01
#define	FAT16SMALL	0x04
#define	EXTENDED	0x05
#define	FAT16LARGE	0x06

#define hd(x)	((x) & 0x80)

COUNT
processtable (COUNT ptDrive, BYTE ptHead, UWORD ptCylinder,
              BYTE ptSector, LONG ptAccuOff)
{
        struct                          /* Temporary partition table    */
        {
        	BYTE	peBootable;
	        BYTE	peBeginHead;
                BYTE	peBeginSector;
                UWORD   peBeginCylinder;
	        BYTE	peFileSystem;
	        BYTE	peEndHead;
                BYTE	peEndSector;
	        UWORD	peEndCylinder;
	        LONG	peStartSector;
	        LONG	peSectors;
        } temp_part[N_PART];

	REG retry = N_RETRY;
        UBYTE packed_byte, pb1;
        COUNT Part;

        /* Read partition table                         */
	do
	{
		ret = fl_read ((WORD)ptDrive, (WORD)ptHead, (WORD)ptCylinder,
                               (WORD)ptSector, (WORD)1, (byteptr)&buffer);
	} while (ret != 0 && --retry > 0);
	if(ret != 0)
		return FALSE;

        /* Read each partition into temporary array     */
        for (Part = 0; Part < N_PART; Part++)
        {
	        REG BYTE *p =
                    (BYTE *)&buffer.bytes[PARTOFF + (Part * SIZEOF_PARTENT)];

                getbyte((VOID *)p, &temp_part[Part].peBootable);
	        ++p;
	        getbyte((VOID *)p, &temp_part[Part].peBeginHead);
	        ++p;
	        getbyte((VOID *)p, &packed_byte);
	        temp_part[Part].peBeginSector = packed_byte & 0x3f;
	        ++p;
	        getbyte((VOID *)p, &pb1);
	        ++p;
	        temp_part[Part].peBeginCylinder = pb1 + ((UWORD)(0xc0 & packed_byte) << 2);
	        getbyte((VOID *)p, &temp_part[Part].peFileSystem);
	        ++p;
	        getbyte((VOID *)p, &temp_part[Part].peEndHead);
	        ++p;
	        getbyte((VOID *)p, &packed_byte);
	        temp_part[Part].peEndSector = packed_byte & 0x3f;
	        ++p;
	        getbyte((VOID *)p, &pb1);
	        ++p;
	        temp_part[Part].peEndCylinder = pb1 + ((UWORD)(0xc0 & packed_byte) << 2);
	        getlong((VOID *)p, &temp_part[Part].peStartSector);
	        p += sizeof(LONG);
	        getlong((VOID *)p, &temp_part[Part].peSectors);
        };

        /* Walk through the table, add DOS partitions to global
           array and process extended partitions         */
        for (Part = 0; Part < N_PART && nUnits < NDEV; Part++)
        {
                if (temp_part[Part].peFileSystem == FAT12 ||
                    temp_part[Part].peFileSystem == FAT16SMALL ||
                    temp_part[Part].peFileSystem == FAT16LARGE)
                {
                        miarray[nUnits].mi_offset =
                               temp_part[Part].peStartSector + ptAccuOff;
                        miarray[nUnits].mi_drive = ptDrive;
                        miarray[nUnits].mi_partidx = nPartitions;
                        nUnits++;

                        dos_partition[nPartitions].peDrive = ptDrive;
                        dos_partition[nPartitions].peBootable =
                               temp_part[Part].peBootable;
                        dos_partition[nPartitions].peBeginHead =
                               temp_part[Part].peBeginHead;
                        dos_partition[nPartitions].peBeginSector =
                               temp_part[Part].peBeginSector;
                        dos_partition[nPartitions].peBeginCylinder =
                               temp_part[Part].peBeginCylinder;
                        dos_partition[nPartitions].peFileSystem =
                               temp_part[Part].peFileSystem;
                        dos_partition[nPartitions].peEndHead =
                               temp_part[Part].peEndHead;
                        dos_partition[nPartitions].peEndSector =
                               temp_part[Part].peEndSector;
                        dos_partition[nPartitions].peEndCylinder =
                               temp_part[Part].peEndCylinder;
                        dos_partition[nPartitions].peStartSector =
                               temp_part[Part].peStartSector;
                        dos_partition[nPartitions].peSectors =
                               temp_part[Part].peSectors;
                        dos_partition[nPartitions].peAbsStart =
                               temp_part[Part].peStartSector + ptAccuOff;
                        nPartitions++;
                }
                else if (temp_part[Part].peFileSystem == EXTENDED)
                {
                        /* call again to process extended part table */
                        processtable (ptDrive,
                                      temp_part[Part].peBeginHead,
                                      temp_part[Part].peBeginCylinder,
                                      temp_part[Part].peBeginSector,
                                      temp_part[Part].peStartSector + ptAccuOff);
                };
        };
        return TRUE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线一区二区三区四区| 福利电影一区二区| 亚洲免费观看视频| 中文字幕一区二区三区蜜月| 久久天天做天天爱综合色| 欧美一区二区视频在线观看| 欧美美女网站色| 日韩一区二区三区视频在线| 精品国精品国产尤物美女| 精品对白一区国产伦| 久久婷婷成人综合色| 欧美国产精品一区| 国产精品国产自产拍高清av| 一区二区三区美女| 五月天网站亚洲| 精品亚洲欧美一区| 国产suv精品一区二区6| 色婷婷久久99综合精品jk白丝| 91国产成人在线| 欧美一区二区大片| 国产午夜精品久久久久久久 | 99久久精品费精品国产一区二区| 99久久婷婷国产综合精品| 色婷婷av一区二区| 欧美草草影院在线视频| 国产目拍亚洲精品99久久精品| 国产精品久99| 美女视频黄频大全不卡视频在线播放 | 欧美区视频在线观看| 91麻豆精品国产91| 国产日韩影视精品| 亚洲第一久久影院| 国产乱码精品一区二区三区五月婷| 成人手机在线视频| 欧美日韩夫妻久久| 国产精品麻豆99久久久久久| 日本中文字幕不卡| 成人亚洲精品久久久久软件| 欧美精品一卡两卡| 国产精品日韩成人| 久久av资源网| 欧美午夜理伦三级在线观看| 欧美韩日一区二区三区| 午夜av区久久| 91视频在线观看免费| 日韩一区二区三区免费观看| 亚洲毛片av在线| 国产成人精品一区二区三区四区 | 欧美成人a视频| 亚洲精品乱码久久久久久黑人| 精品亚洲成a人在线观看| 欧美中文字幕不卡| 亚洲人成7777| 国产精品一区二区黑丝| 日韩片之四级片| 亚洲高清免费观看| 色激情天天射综合网| 中文字幕一区二区在线观看| 久久99精品国产麻豆婷婷| 精品视频一区三区九区| 一区二区三国产精华液| 91免费版在线| 亚洲欧洲色图综合| 成人毛片在线观看| 欧美激情中文字幕| 国产91在线|亚洲| 国产视频一区在线播放| 久久国产精品色| 欧美一级淫片007| 日本人妖一区二区| 日韩一区二区在线观看视频| 蜜臀av一级做a爰片久久| 欧美精品久久久久久久久老牛影院| 最新成人av在线| 日本久久一区二区三区| 亚洲欧美aⅴ...| 欧美无人高清视频在线观看| 亚洲午夜精品在线| 欧美日韩国产另类一区| 天天做天天摸天天爽国产一区| 欧美日韩国产精品自在自线| 性感美女久久精品| 欧美一级片在线看| 韩国av一区二区| 国产精品日日摸夜夜摸av| 99这里只有久久精品视频| 亚洲欧美电影院| 成人免费观看av| 久久综合色播五月| 精品亚洲免费视频| 久久久综合视频| 欧美中文字幕亚洲一区二区va在线| 国产精品亚洲专一区二区三区| 日本午夜精品视频在线观看| 一区二区三区小说| 国产精品国产成人国产三级| 精品国产伦理网| 日韩一二三区视频| 欧美日韩1234| 在线观看日韩毛片| 99精品热视频| 成人污污视频在线观看| 国产最新精品精品你懂的| 男人的天堂久久精品| 亚洲成人综合在线| 亚洲自拍偷拍图区| 一区二区国产盗摄色噜噜| 中文字幕在线观看一区二区| 国产亚洲欧美日韩日本| 久久久欧美精品sm网站| 精品国产区一区| 久久久精品综合| 亚洲精品在线免费播放| 26uuu成人网一区二区三区| 日韩精品一区二区三区四区 | 免费看日韩a级影片| 午夜免费久久看| 亚洲成av人片在www色猫咪| 亚洲图片一区二区| 丝袜诱惑亚洲看片| 日韩激情视频在线观看| 免费看欧美女人艹b| 激情深爱一区二区| 国产成人久久精品77777最新版本| 国产一区二区美女| 国产99精品在线观看| 成人av动漫网站| 在线亚洲+欧美+日本专区| 欧美在线一区二区三区| 欧美日韩电影一区| 日韩免费看的电影| 国产女人aaa级久久久级| 中文字幕中文在线不卡住| 一区二区三区.www| 日本免费新一区视频| 国产成人av福利| 色综合天天综合狠狠| 欧美片在线播放| 精品国产一区二区三区av性色| 国产欧美综合在线| 一区二区三区免费在线观看| 日韩高清不卡在线| 国产精品一二一区| 欧美在线免费观看亚洲| 欧美一级久久久| 国产精品视频九色porn| 性感美女久久精品| 国产乱妇无码大片在线观看| 91片黄在线观看| 日韩一区二区三区视频在线观看| 日本一区二区三区四区 | 欧美艳星brazzers| 久久这里只有精品首页| 亚洲日本中文字幕区| 日韩有码一区二区三区| 国产999精品久久| 欧美日韩激情一区| 国产视频一区不卡| 午夜国产不卡在线观看视频| 粉嫩欧美一区二区三区高清影视| 精品视频色一区| 国产精品国产三级国产| 久久精品av麻豆的观看方式| 色综合天天性综合| 久久久久国产免费免费| 亚洲va韩国va欧美va| av中文字幕不卡| 欧美精品一区二区在线观看| 亚洲高清不卡在线观看| 成人av网在线| 国产视频一区二区在线| 日韩不卡一区二区三区| 在线日韩一区二区| 中文字幕欧美激情一区| 激情都市一区二区| 欧美一区二区三区免费在线看| 亚洲日本丝袜连裤袜办公室| 国产成人免费视频网站| 欧美一级日韩免费不卡| 亚洲成人动漫av| 欧美在线999| 亚洲美女精品一区| 成人免费精品视频| 日本一区二区三区电影| 国产一区二区三区高清播放| 日韩欧美一级二级三级久久久| 亚洲成年人影院| 欧美日韩一区二区电影| 亚洲一区在线视频| 91极品视觉盛宴| 亚洲综合图片区| 欧洲精品在线观看| 亚洲国产精品一区二区久久恐怖片| 91蝌蚪porny| 亚洲靠逼com| 在线视频欧美区| 偷拍自拍另类欧美| 337p亚洲精品色噜噜狠狠| 奇米精品一区二区三区在线观看 | 国产一区在线观看麻豆|