亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人精品gif动图一区| 国产传媒久久文化传媒| 亚洲欧美偷拍三级| 中文字幕欧美日本乱码一线二线| 欧美大尺度电影在线| 欧美一区二区三区喷汁尤物| 欧美三区在线观看| 欧美精品一卡二卡| 在线91免费看| 精品视频在线免费观看| 91麻豆国产香蕉久久精品| 国产一区二区三区在线观看免费视频 | 国产成人精品三级麻豆| 国产麻豆精品在线观看| 盗摄精品av一区二区三区| 不卡一卡二卡三乱码免费网站| 成人av手机在线观看| 成人黄色免费短视频| 91亚洲永久精品| 欧美日韩一二区| 精品裸体舞一区二区三区| 国产日韩欧美电影| 亚洲男女一区二区三区| 日韩精品乱码av一区二区| 韩日精品视频一区| 成人激情电影免费在线观看| 99久久精品国产一区| 色伊人久久综合中文字幕| 8v天堂国产在线一区二区| 精品三级在线看| 国产精品午夜在线观看| 亚洲一区免费在线观看| 另类小说综合欧美亚洲| 成人国产在线观看| 欧美一区二区私人影院日本| 国产拍揄自揄精品视频麻豆| 一区二区三区**美女毛片| 看片网站欧美日韩| 色综合久久久久| 91精品国产综合久久小美女| 国产欧美一区二区精品性色| 亚洲国产精品一区二区久久恐怖片| 日本欧美加勒比视频| 99综合影院在线| 欧美本精品男人aⅴ天堂| 一区二区三区中文字幕在线观看| 麻豆精品久久精品色综合| 91啦中文在线观看| 久久女同互慰一区二区三区| 亚洲最新视频在线观看| 国产91精品入口| 欧美日韩国产美女| 亚洲品质自拍视频| 国产激情一区二区三区| 欧美日本国产视频| 亚洲视频综合在线| 成人免费看的视频| 亚洲精品一区二区三区99| 亚洲国产色一区| 成av人片一区二区| 国产天堂亚洲国产碰碰| 蜜桃91丨九色丨蝌蚪91桃色| 欧美亚一区二区| 最好看的中文字幕久久| 福利一区在线观看| 精品国产91九色蝌蚪| 日本欧美肥老太交大片| 欧美顶级少妇做爰| 亚洲免费观看高清完整版在线观看熊| 国产不卡视频一区二区三区| www国产亚洲精品久久麻豆| 日韩中文字幕区一区有砖一区| 91国偷自产一区二区三区成为亚洲经典| 久久奇米777| 久久国产夜色精品鲁鲁99| 欧美性一级生活| 一区二区三区蜜桃| 欧美偷拍一区二区| 亚洲一区二区三区国产| 欧美午夜精品一区二区三区 | 欧美性大战久久| 亚洲一二三四区| 欧洲一区在线电影| 亚洲综合视频在线观看| 欧美在线观看禁18| 亚洲第一二三四区| 欧美日韩高清一区二区不卡| 亚洲h动漫在线| 欧美一卡2卡3卡4卡| 美国三级日本三级久久99 | 国产精品国产成人国产三级| 99久久99久久久精品齐齐| 亚洲另类在线视频| 欧美人牲a欧美精品| 另类欧美日韩国产在线| 久久久高清一区二区三区| 成人深夜在线观看| 亚洲一区二区三区在线| 欧美一区二区久久久| 丁香啪啪综合成人亚洲小说| 专区另类欧美日韩| 欧美日韩日本视频| 激情综合色播激情啊| 综合中文字幕亚洲| 欧美日韩国产一二三| 极品销魂美女一区二区三区| 久久久久国产精品免费免费搜索| www.亚洲免费av| 亚洲曰韩产成在线| 精品乱码亚洲一区二区不卡| www.亚洲激情.com| 五月开心婷婷久久| 中文字幕免费在线观看视频一区| 欧美午夜一区二区三区| 国内不卡的二区三区中文字幕 | 激情五月播播久久久精品| 中文字幕一区二区三区蜜月| 欧美日韩久久久| 国产999精品久久久久久绿帽| 亚洲图片欧美综合| 国产三级精品视频| 欧美乱妇20p| 国产成人综合亚洲网站| 午夜不卡av免费| 国产精品亲子乱子伦xxxx裸| 欧美欧美欧美欧美首页| 色综合天天做天天爱| 国产精品中文字幕一区二区三区| 一区二区三区在线视频观看| 久久色.com| 在线电影欧美成精品| 色哟哟日韩精品| 成人一区二区三区在线观看| 日韩激情av在线| 一级中文字幕一区二区| 国产精品美女www爽爽爽| 精品裸体舞一区二区三区| 884aa四虎影成人精品一区| 91成人在线精品| youjizz国产精品| 成人午夜在线免费| 国模套图日韩精品一区二区| 欧美aaaaaa午夜精品| 日韩精品成人一区二区三区| 国产精品精品国产色婷婷| 久久综合久久鬼色| 欧美成人性战久久| 91精品国产综合久久精品app| 欧美在线999| 日本高清不卡视频| 91香蕉视频在线| jlzzjlzz欧美大全| 91视视频在线观看入口直接观看www | 欧美一区二区三区四区五区| 欧美在线一区二区三区| 91年精品国产| 色婷婷久久久亚洲一区二区三区 | 欧美国产精品一区二区| 久久精品夜色噜噜亚洲aⅴ| 精品国产一区二区三区四区四| 在线不卡免费av| 在线不卡的av| 日韩欧美123| 久久综合久久综合九色| 中文字幕乱码亚洲精品一区| 国产精品久久久99| 亚洲欧美日韩国产成人精品影院 | 国产精品一区二区在线播放 | 成人免费看黄yyy456| 91免费国产在线| 欧美亚洲动漫另类| 欧美一级二级三级乱码| 欧美一级黄色录像| 久久人人超碰精品| 亚洲欧洲av在线| 亚洲国产日日夜夜| 麻豆精品久久精品色综合| 国产精品自拍三区| 99久久国产免费看| 欧美性大战久久久| 日韩欧美在线观看一区二区三区| 欧美日韩国产大片| 欧美另类z0zxhd电影| 久久亚洲私人国产精品va媚药| 久久日一线二线三线suv| 成人中文字幕合集| 欧美性一二三区| 日韩视频免费观看高清在线视频| 精品国产一区二区三区忘忧草 | 欧美精品一区二区三区蜜桃视频 | 在线观看国产日韩| 精品久久久久香蕉网| 国产欧美视频一区二区三区| 中文字幕在线播放不卡一区| 日本视频一区二区| 粉嫩av亚洲一区二区图片| 成人97人人超碰人人99| 欧美大肚乱孕交hd孕妇| 国产精品毛片a∨一区二区三区 | 欧美综合在线视频|