add directory study

This commit is contained in:
gohigh
2024-02-19 00:25:23 -05:00
parent b1306b38b1
commit f3774e2f8c
4001 changed files with 2285787 additions and 0 deletions

View 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(&reg, &reg, &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(&reg, &reg, &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(&reg, &reg, &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(&reg, &reg, &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);
}