⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 floppy.h

📁 Jazmyn is a 32-bit, protected mode, multitasking OS which runs on i386 & above CPU`s. Its complete
💻 H
字号:
#ifndef _FLOPPY_H
#define _FLOPPY_H

#include "driver.h"
#include "drvreq.h"

/* IO ports */
#define	FDC_DOR		(0x3f2)	/* Digital Output Register */
#define	FDC_MSR		(0x3f4)	/* Main Status Register (input) */
#define	FDC_DRS		(0x3f4)	/* Data Rate Select Register (output) */
#define	FDC_DATA	(0x3f5)	/* Data Register */
#define	FDC_DIR		(0x3f7)	/* Digital Input Register (input) */
#define	FDC_CCR		(0x3f7)	/* Configuration Control Register (output) */

#define	DG144_HEADS	2	/* heads per drive (1.44M) */
#define	DG144_TRACKS	80	/* number of tracks (1.44M) */
#define	DG144_SPT	18	/* sectors per track (1.44M) */
#define	DG144_GAP3FMT	0x54	/* gap3 while formatting (1.44M) */
#define	DG144_GAP3RW	0x1b	/* gap3 while reading/writing (1.44M) */

#define	NONE			-1
#define	SEEK			0
#define	SEEK_SERVICED		1
#define	RECALIBRATE		2
#define	RECALIBRATE_SERVICED	3
#define	READ			4
#define	READ_SERVICED		5
#define	WRITE			6
#define	WRITE_SERVICED		7

#define	OFF			0
#define ON			1

#define CMD_READ                0x46
#define CMD_WRITE               0x45
#define CMD_SEEK                0x0F
#define CMD_SENSEI              0x08

typedef struct
{
        uint    cyl;
        uint    head;
        uint    sec;
}chs;

class floppy : public disk_driver
{
private:

public:
        int                     last_operation;
        static __queue<fdreq>     fdr_queue;
        int                   st0,st1,st2,cyl,head,sec,secsz;
        static int            motor;
        floppy(char *name,int type);
	~floppy();
        void    sendbyte(byte val);
        byte    getbyte();
        void    get_phys_sec(uint LBA,chs &_chs);
        void    wait(int condition,int sensei);
        int     issue_rw_req();
        void    seek(byte cyl,byte head);
        void    set_drive_param();
        void    service(int opcode,uint start,uint num,void *buf,int *fin);
};

extern "C"  void    motoron();
extern "C"  void    motoroff();


void    send_fst_req();
void    floppy_handler();
int     floppy_main(void *req);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -