add directory study
This commit is contained in:
184
study/hardware/Floppy/floppy/FMT81TRK.CPP
Normal file
184
study/hardware/Floppy/floppy/FMT81TRK.CPP
Normal file
@@ -0,0 +1,184 @@
|
||||
#include <dos.h>
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <malloc.h>
|
||||
#include <errno.h>
|
||||
|
||||
typedef struct _EBPB_
|
||||
{
|
||||
unsigned sectsize;
|
||||
char clustsize;
|
||||
unsigned ressecs;
|
||||
char fatcnt;
|
||||
unsigned rootsize;
|
||||
unsigned totsecs;
|
||||
char media;
|
||||
unsigned fatsize;
|
||||
unsigned seccnt;
|
||||
unsigned headcnt;
|
||||
unsigned hiddensec_low;
|
||||
unsigned hiddensec_hi;
|
||||
unsigned long drvsecs;
|
||||
} EBPB;
|
||||
|
||||
typedef struct _TRK_LY_
|
||||
{
|
||||
unsigned no;
|
||||
unsigned size;
|
||||
} TRK_LY;
|
||||
|
||||
typedef struct _DPB_
|
||||
{
|
||||
char spec;
|
||||
char devtype;
|
||||
unsigned devattr;
|
||||
unsigned numofcyl;
|
||||
char media_type;
|
||||
EBPB bpb;
|
||||
char reserved[6];
|
||||
unsigned trkcnt;
|
||||
TRK_LY trk[100];
|
||||
} DPB;
|
||||
|
||||
typedef struct _DPB_FORMAT_
|
||||
{
|
||||
char spec;
|
||||
unsigned head;
|
||||
unsigned track;
|
||||
} DPB_FORMAT;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
union REGS reg;
|
||||
struct SREGS segreg;
|
||||
DPB far *dbp;
|
||||
DPB_FORMAT far *dbp_f;
|
||||
int sectors, i;
|
||||
|
||||
printf("\n<EFBFBD>ணࠬ<EFBFBD><EFBFBD> 㭨<>⮦<EFBFBD><E2AEA6> ᮤ<>ন<EFBFBD><E0A6A8><EFBFBD>"
|
||||
"\n81-<2D> <20><><EFBFBD><E0AEA6> <20><>᪠ <20>:."
|
||||
"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>த<EFBFBD><E0AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? (Y,N)\n");
|
||||
|
||||
i = getch();
|
||||
if((i != 'y') && (i != 'Y'))
|
||||
return(-1);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC> <20><><EFBFBD>ன<EFBFBD>⢠
|
||||
dbp = (DPB far*)farmalloc(sizeof(DPB));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC> <20><><EFBFBD>ன<EFBFBD>⢠,
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㤥<EFBFBD> <20>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD> <20><><EFBFBD> <20><>ଠ<EFBFBD><E0ACA0><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
||||
dbp_f = (DPB_FORMAT far*)
|
||||
farmalloc(sizeof(DPB_FORMAT));
|
||||
|
||||
if(dbp == NULL || dbp_f == NULL)
|
||||
{
|
||||
printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return(-1);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>砥<EFBFBD> ⥪<>騥 <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20><>᪠ <20>:
|
||||
dbp->spec = 0;
|
||||
reg.x.ax = 0x440d;
|
||||
reg.h.bl = 1;
|
||||
reg.x.cx = 0x0860;
|
||||
reg.x.dx = FP_OFF(dbp);
|
||||
segreg.ds = FP_SEG(dbp);
|
||||
intdosx(®, ®, &segreg);
|
||||
|
||||
if(reg.x.cflag != 0)
|
||||
{
|
||||
printf("\n<EFBFBD>訡<EFBFBD><EFBFBD>: %d", reg.x.ax);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 <20><><EFBFBD><EFBFBD> <20><>ଥ<EFBFBD> <20><><EFBFBD> <20><>ଠ<EFBFBD><E0ACA0><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
||||
dbp->spec = 5;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><> BPB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ ᥪ<><E1A5AA> <20><> <20><><EFBFBD><E0AEA6>
|
||||
sectors = dbp->bpb.seccnt;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⠡<><E2A0A1><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20><>ଠ<EFBFBD> <20><><EFBFBD><E0AEA6>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ ᥪ<><E1A5AA> <20><> <20><><EFBFBD><E0AEA6>
|
||||
dbp->trkcnt = sectors;
|
||||
|
||||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᥪ<><E1A5AA><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E0AEA6> <20> ⠡<><E2A0A1><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> ࠧ<><E0A0A7><EFBFBD>.
|
||||
for(i = 0; i < sectors; i++)
|
||||
{
|
||||
dbp->trk[i].no = i+1;
|
||||
dbp->trk[i].size = 512;
|
||||
}
|
||||
|
||||
// <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>᪠ <20>:
|
||||
reg.x.ax = 0x440d;
|
||||
reg.h.bl = 1;
|
||||
reg.x.cx = 0x0840;
|
||||
reg.x.dx = FP_OFF(dbp);
|
||||
segreg.ds = FP_SEG(dbp);
|
||||
intdosx(®, ®, &segreg);
|
||||
|
||||
if(reg.x.cflag != 0)
|
||||
{
|
||||
printf("\n<EFBFBD>訡<EFBFBD><EFBFBD>: %d", reg.x.ax);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
// <20><>⮢<EFBFBD><E2AEA2> <20><><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC> <20><><EFBFBD>ன<EFBFBD>⢠,
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㤥<EFBFBD> <20>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD> <20><><EFBFBD> <20>맮<EFBFBD><EBA7AE>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>樨 <20><EFBFBD>ન <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ଠ<EFBFBD><E0ACA0><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><E0AEA6>
|
||||
dbp_f->spec = 1;
|
||||
dbp_f->head = 0;
|
||||
dbp_f->track = 81;
|
||||
|
||||
reg.x.ax = 0x440d;
|
||||
reg.h.bl = 1;
|
||||
reg.x.cx = 0x0842;
|
||||
reg.x.dx = FP_OFF(dbp_f);
|
||||
segreg.ds = FP_SEG(dbp_f);
|
||||
intdosx(®, ®, &segreg);
|
||||
|
||||
if(reg.x.cflag != 0)
|
||||
{
|
||||
printf("\n<EFBFBD>訡<EFBFBD><EFBFBD>: %d", reg.x.ax);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
// <20> 㪠<><E3AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ଠ<EFBFBD> <20><><EFBFBD><E0AEA6> <20><><EFBFBD><EFBFBD><EFBFBD>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
// <20><><EFBFBD><EFBFBD> ᯥ樠<E1AFA5><E6A8A0><EFBFBD><EFBFBD><EFBFBD> <20>㭪権 <20>㤥<EFBFBD> ᮤ<>ঠ<EFBFBD><E0A6A0> 0.
|
||||
// <20><EFBFBD><E0AEA2>塞 <20><><EFBFBD>
|
||||
if(dbp_f->spec != 0)
|
||||
{
|
||||
printf("\n<EFBFBD><EFBFBD>ଠ<EFBFBD> <20><><EFBFBD><E0AEA6> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return(-1);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 <20><><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC> <20><><EFBFBD> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>樨 <20><>ଠ<EFBFBD><E0ACA0><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
||||
dbp_f->spec = 0;
|
||||
dbp_f->head = 0;
|
||||
dbp_f->track = 81;
|
||||
|
||||
// <20><>ଠ<EFBFBD><E0ACA0><EFBFBD>㥬 <20><><EFBFBD><E0AEA6> <20> <20><><EFBFBD><EFBFBD> 81, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0
|
||||
reg.x.ax = 0x440d;
|
||||
reg.h.bl = 1;
|
||||
reg.x.cx = 0x0842;
|
||||
reg.x.dx = FP_OFF(dbp_f);
|
||||
segreg.ds = FP_SEG(dbp_f);
|
||||
intdosx(®, ®, &segreg);
|
||||
|
||||
if(reg.x.cflag != 0)
|
||||
{
|
||||
printf("\n<EFBFBD>訡<EFBFBD><EFBFBD>: %d", reg.x.ax);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
// <20><EFBFBD><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
farfree(dbp);
|
||||
farfree(dbp_f);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user