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,312 @@
#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#define CYL 0
typedef struct _DPT_
{
unsigned char srt_hut;
unsigned char dma_hlt;
unsigned char motor_w;
unsigned char sec_size;
unsigned char eot;
unsigned char gap_rw;
unsigned char dtl;
unsigned char gap_f;
unsigned char fill_char;
unsigned char hst;
unsigned char mot_start;
} DPT;
DPT far *get_dpt(void);
void fdc_out(unsigned char byte);
int fdc_inp(void);
void int_wait(void);
void dma_init(void far *);
void tdelay(int cnt);
void interrupt IRQ6 (__CPPARGS);
void interrupt (*oldIRQ6) (__CPPARGS);
char buffer[512];
static int IRQ=0;
void main(void)
{
unsigned i;
long l;
char status[7], main_status;
DPT _far *fdpt;
FILE *sect;
printf("\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><20><><EFBFBD><EFBFBD>"
"\n (C)<29><EFBFBD><E0AEAB> <20>., 1995\n");
oldIRQ6 = _dos_getvect (8+6);
_dos_setvect (8+6, IRQ6);
// <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0>
// ᮤ<><EFBFBD><E0A6A8><EFBFBD><><E1A0AC><EFBFBD> <20><><EFBFBD><E0A2AE><><E1A5AA><EFBFBD><EFBFBD> <20><><EFBFBD><E1AAA5>
sect = fopen("!sector.dat","wb+");
// <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E3AAA0><EFBFBD> <20><><><E2A0A1><EFBFBD><EFBFBD>
// <20><><EFBFBD><E0A0AC><20><><EFBFBD><E1AAA5>
fdpt = get_dpt();
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1AAAE><EFBFBD><EFBFBD> <20>:
// <20><><20>⨬ ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
_enable();
outp(0x3F2, 0x1C);
// <20><EFBFBD><EBAFAE><20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E0A0A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tdelay(18);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0><><EFBFBD><E0A6A8><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E1ADAE><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD>
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>祭.\t\t");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %02.2X\n",inp(0x3F4));
// <20><><20><EFBFBD><E2A5AD><EFBFBD><><E1A5AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E5AEA4><EFBFBD> <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E3A6AD> <20><><EFBFBD><E0AEA6>, <20> <20><><20><><EFBFBD><20><><EFBFBD>
// <20><><EFBFBD><E0AEA6> <20> <20><><EFBFBD><EFBFBD>஬ CYL
// <20><EFBFBD><EBA4A0> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD>"
fdc_out(0xf);
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD>" <20><EFBFBD><E0A5A1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AC>஢:
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0AEA6>.
// <20><><><EFBFBD> <20> <20><EFBFBD><E3ABA5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>:,
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AC><EFBFBD><><E0A0A2> 0, <20><><EFBFBD>ன - CYL
fdc_out(0);
fdc_out(CYL);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0><><EFBFBD><E0A6A8><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E1ADAE><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD>
printf("\n<<<<3C><><EFBFBD><EFBFBD><EFBFBD>>>> \t\t");
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %02.2X\n",inp(0x3F4));
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A5AD> <20><><EFBFBD><EFBFBD><EFBFBD>
int_wait();
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E6A8AE><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tdelay(1);
// <20><><EFBFBD> <20><EFBFBD>ન १<><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// "<22><><EFBFBD><EFBFBD><EFBFBD>" <20><EFBFBD><EBA4A0> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// "<22><EFBFBD><E2A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>"
// <20><EFBFBD><EBA2AE><EFBFBD><><EFBFBD><E0A6A8><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ST0 <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0AEA6> <20><><20><EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// "<22><><EFBFBD><EFBFBD><EFBFBD>" PCN
fdc_out(0x8);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>:\t");
printf(" ST0: %02.2X, \t", fdc_inp());
printf("PCN: %02.2X\n", fdc_inp());
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E3A1AE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><EFBFBD><EBA4A0> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// "<22><EFBFBD><E2A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", <20><EFBFBD><EBA2AE><EFBFBD>
// ᮤ<><EFBFBD><E0A6A8><EFBFBD><><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ST3
fdc_out(4);
fdc_out(0);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\t ST3: %02.2X\n",fdc_inp());
// <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1AAAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 500 <20><><EFBFBD><EFBFBD><EFBFBD>/<2F>
outp(0x3F7, 0);
// <20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFACAE>
// <20><><EFBFBD><EFBFBD><20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dma_init((void far *)buffer);
// <20><EFBFBD><EBA4A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><EFBFBD><E2A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
fdc_out(0x66);
fdc_out(0x0); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0
fdc_out(CYL); // 樫<><E6A8AB><EFBFBD><EFBFBD> CYL
fdc_out(0); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0
fdc_out(1); // <20><><EFBFBD><EFBFBD><EFBFBD><><E1A5AA><EFBFBD><EFBFBD> - 1
// <20><><EFBFBD><E0A5A4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><E5ADA8><EFBFBD> <20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD>
// <20><><EFBFBD><E1AAAE><EFBFBD><EFBFBD>, <20><><20><> <20><><><E2A0A1><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AC><20><><EFBFBD><E1AAA5>.
// <20><><EFBFBD><><E2A0AA> <20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD>:
// - ࠧ<><E0A0A7><EFBFBD><><E1A5AA><EFBFBD><EFBFBD>;
// - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD><EFBFBD><><E1A5AA><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E0AEA6>;
// - ࠧ<><E0A0A7><EFBFBD> <20><EFBFBD><E0AEAC><EFBFBD>⪠;
// - <20><><20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20><><EFBFBD>
fdc_out(fdpt->sec_size);
fdc_out(fdpt->eot);
fdc_out(fdpt->gap_rw);
fdc_out(fdpt->dtl);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A5AD> <20><><EFBFBD><EFBFBD><EFBFBD>
int_wait();
// <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0> <20> <20><EFBFBD><EBA2AE><EFBFBD> <20><> <20><><20><><EFBFBD><EFBFBD><EFBFBD><><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>樨 "<22><EFBFBD><E2A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
printf("\n<<<<3C><EFBFBD><E2A5AD><><E1A5AA><EFBFBD><EFBFBD>>>> \n");
printf(" <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (ST0,ST1,ST2,C,H,R,N):\n");
for(i=0; i<7; i++) printf("%02.2X\t", (char) fdc_inp());
printf("\n");
// <20><EFBFBD><EBA2AE><EFBFBD><><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><><E1A5AA><EFBFBD><EFBFBD> <20><>
for(i=0; i<512; i++) fputc(buffer[i],sect);
fclose(sect);
// <20><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
outp(0x3F2, 0xC);
_dos_setvect (8+6, oldIRQ6);
}
// <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD> <20><><EFBFBD><E1AAAE><EFBFBD><EFBFBD>
void fdc_out(unsigned char parm)
{
asm mov dx,3F4h // <20><><EFBFBD><EFBFBD> <20><EFBFBD><E1ADAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
loop_fdc_out:
asm in al,dx
asm test al,80h // <20><EFBFBD><E0AEA2><20><><EFBFBD><E2AEA2><EFBFBD><EFBFBD><EFBFBD>
asm jz loop_fdc_out // <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD>
asm inc dx // <20><EFBFBD><EBA2AE><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
asm mov al, parm // <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD>
asm out dx, al
}
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><E1AAAE><EFBFBD><EFBFBD>
int fdc_inp(void)
{
asm mov dx,3F4h // <20><><EFBFBD><EFBFBD> <20><EFBFBD><E1ADAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
loop_fdc_inp:
asm in al,dx
asm test al,80h // <20><EFBFBD><E0AEA2><20><><EFBFBD><E2AEA2><EFBFBD><EFBFBD><EFBFBD>
asm jz loop_fdc_inp // <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD>
asm inc dx // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0>
asm in al, dx // <20><><E0A5A3><EFBFBD><EFBFBD> AX
return _AL;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD>
void int_wait (void) {
_enable();
while (IRQ==0) {};
IRQ = 0;
}
void interrupt IRQ6 (__CPPARGS) {
IRQ = 1;
outportb (0x20, 0x20);
}
// <20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFACAE> <20><><EFBFBD><EFBFBD><20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void dma_init(void far *buf)
{
unsigned long f_adr;
unsigned sg, of;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 24-ࠧ<><EFBFBD><EFA4AD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
f_adr = ((unsigned long)FP_SEG(buf) << 4)
+ (unsigned long)FP_OFF(buf);
// <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AD><EFBFBD>
// <20> ᬥ饭<E1ACA5><E9A5AD>
sg = (f_adr >> 16) & 0xff;
of = f_adr & 0xffff;
// <20><> <20><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFACAE>
// <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>
_disable();
asm mov al,46h // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E2A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
// <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
asm out 12,al // <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8A3><EFBFBD><EFBFBD>-㪠<><E3AAA0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><><E0A0A1><EFBFBD> <20> 16-ࠧ<>來묨 <20><><EFBFBD><EFBFBD>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>, <20><EFBFBD><EBA2AE><EFBFBD><EFBFBD><EFBFBD> <20> 16-ࠧ<><EFBFBD><EFA4AD>
// <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
asm out 11,al // <20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD> <><E0A5A6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD>
asm mov ax,of // <20><><EFBFBD><EFBFBD><E9A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>
asm out 4,al
asm mov al,ah // <20><><EFBFBD><EFBFBD><E9A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>
asm out 4,al
asm mov ax,sg // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AD><EFBFBD>
asm out 81h,al
asm mov ax,511 // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
asm out 5,al
asm mov al,ah
asm out 5,al
asm mov al,2 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD>
asm out 10,al
// <20><><EFBFBD><EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
// ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>.
_enable();
}
/**
* get_dpt
*
* <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA8> <20><><EFBFBD><EFBFBD><EFBFBD><><E2A0A1><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AC><20><><EFBFBD><E1AAA5>
*
* <20><EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E3AAA0><EFBFBD> <20><><><E2A0A1><EFBFBD><EFBFBD>
* <20><><EFBFBD><E0A0AC><20><><EFBFBD><E1AAA5>
*
**/
DPT far *get_dpt(void)
{
void far * far *ptr;
ptr = (void far * far *)MK_FP(0x0, 0x78);
return(DPT far*)(*ptr);
}
/**
* tdelay
*
* <20><>ନ஢<E0ACA8><E0AEA2><EFBFBD><EFBFBD> <20><EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ⠩<><E2A0A9><EFBFBD><EFBFBD>.
*
* <20> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20>㭪樨 <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD>⥫쭮<E2A5AB><ECADAE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>,
* <20><><EFBFBD><EFBFBD><EFBFBD><E3AFA0><EFBFBD><EFBFBD> <20><><><E2A0A9><EFBFBD><EFBFBD> (⠩<><E2A0A9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20> <20><><EFBFBD><EFBFBD> ᥪ㭤<E1A5AA> <20><EFBFBD>୮ 18 <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD>)
*
**/
void tdelay(int cnt)
{
asm push bx
asm push dx
asm push si
asm mov si, cnt
asm mov ah, 0
asm int 1ah
asm mov bx, dx
asm add bx, si
delay_loop:
asm int 1ah
asm cmp dx, bx
asm jne delay_loop
asm pop si
asm pop dx
asm pop bx
}