Login

Subversion Repositories NedoOS

Rev

Rev 1386 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <oscalls.h>
#include <osfs.h>
#include <intrz80.h>
#include <terminal.c>
        unsigned char trdBuf[8192];
        unsigned char fileName[256];
        struct diskOp readParam;
        unsigned char argLng;
void interface (void)
{
char fnPos;
        fnPos = (41-9-argLng)/2 + 20;
        BOX(20, 5, 41, 1, 47);
    ATRIB(34);
        AT (21,5);
        printf("RDTRD2 Make TRD images from floppy disk");
        BOX(20, 6, 41, 6, 44);
        ATRIB(37);
        AT (fnPos,7);
        printf("filename:");
        printf(fileName);
        AT (23,9);
        printf("[.................................]");
        AT (34,11);
        printf("[ESC - Exit]");
}

void pBar( char procent)
{
float lng;
char cycle;
AT (24,9);
lng = (float)33 / (float)100 * (float)procent;
for (cycle = 0; cycle < lng; cycle++)
{
        putchar(219);
}
}

C_task main (int argc, char *argv[])
{
        unsigned int cycle;
        unsigned long secTmp;
        unsigned int result;
        unsigned char argPos;
        char prgPrc;
        unsigned char key;


        FILE *fp1;
        os_initstdio();
        if (argc < 2)
        {
                argv[1] = "noname.trd\0";
        }
       
        argPos =0;
        fileName[255] = '\0';
       
while (argv[1][argPos] != '\0')
        {
        fileName[argPos] = argv[1][argPos];
        argPos++;
        }      
        argLng = strlen(fileName);
        interface();
        fp1 = OS_CREATEHANDLE(argv[1], 0x80);
    if (((int)fp1) & 0xff)
    {
      printf (argv[1]);
          printf(" creating error\r\n");
          exit(0);
        }
        readParam.drive         = 0;
        readParam.BufAdr        = &trdBuf;
        readParam.sector        = 0;
        readParam.count         = 32;
       
       
       
        for (cycle = 0; cycle < 80; cycle++)
        {
        secTmp = cycle * (unsigned long)8192/256;
        readParam.sector = secTmp;
        result = OS_READSECTORS (&readParam);
        OS_WRITEHANDLE(trdBuf, fp1, 8192);
        prgPrc = cycle * 1.25;
        if (prgPrc % 5 == 0)    pBar(prgPrc);
        key = _low_level_get();
        }
                if (key == 27)
        {
                OS_CLOSEHANDLE(fp1);
                exit(0);
        }
        OS_CLOSEHANDLE(fp1);
        return 0;
}  

/*╨Х╤Б╨╗╨╕ ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╨┐╨░╤А╨░╨╝╨╡╤В╤А╨╛╨▓ ╨╜╨╡╨╛╨┐╤А╨╡╨┤╨╡╨╗╤С╨╜╨╜╨╛ (printf(...) ╨╕ ╤В.╨┐.), ╤В╨╛ ╨▓╤Б╨╡ ╨┐╨░╤А╨░╨╝╨╡╤В╤А╤Л ╨┐╨╡╤А╨╡╨┤╨░╤О╤В╤Б╤П ╤З╨╡╤А╨╡╨╖ ╤Б╤В╨╡╨║. ╨Ш╨╜╨░╤З╨╡ ╨┐╨╡╤А╨▓╤Л╨╣ ╨┐╨░╤А╨░╨╝╨╡╤В╤А ╨┐╨╡╤А╨╡╨┤╨░╤С╤В╤Б╤П ╨▓ E, DE, CDE ╨╕╨╗╨╕ BCDE, ╨▓ ╨╖╨░╨▓╨╕╤Б╨╕╨╝╨╛╤Б╤В╨╕ ╨╛╤В ╤А╨░╨╖╤А╤П╨┤╨╜╨╛╤Б╤В╨╕ ╨╖╨╜╨░╤З╨╡╨╜╨╕╤П. ╨Х╤Б╨╗╨╕ ╨┐╨╡╤А╨▓╤Л╨╣ ╨╕ ╨▓╤В╨╛╤А╨╛╨╣ ╨┐╨░╤А╨░╨╝╨╡╤В╤А╤Л ╨╜╨╡ ╤И╨╕╤А╨╡ 16 ╨▒╨╕╤В ╨║╨░╨╢╨┤╤Л╨╣, ╤В╨╛ ╨▓╤В╨╛╤А╨╛╨╣ ╨┐╨░╤А╨░╨╝╨╡╤В╤А ╨┐╨╡╤А╨╡╨┤╨░╤С╤В╤Б╤П ╨▓ ╤А╨╡╨│╨╕╤Б╤В╤А╨░╤Е B ╨╕╨╗╨╕ BC, ╨╕╨╜╨░╤З╨╡ ╤З╨╡╤А╨╡╨╖ ╤Б╤В╨╡╨║. ╨Т╨╛╨╖╨▓╤А╨░╤Й╨░╨╡╨╝╨╛╨╡ ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╡ ╨╕╨╖ ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ ╨┐╨╡╤А╨╡╨┤╨░╤С╤В╤Б╤П ╨▓ ╤А╨╡╨│╨╕╤Б╤В╤А╨░╤Е A (L ╨┐╤А╨╕ ╨▒╨░╨╜╨║╨╕╨╜╨│╨╡), HL, CHL ╨╕╨╗╨╕ BCHL, ╨▓ ╨╖╨░╨▓╨╕╤Б╨╕╨╝╨╛╤Б╤В╨╕ ╨╛╤В ╤А╨░╨╖╤А╤П╨┤╨╜╨╛╤Б╤В╨╕ ╨╖╨╜╨░╤З╨╡╨╜╨╕╤П.
╨б╨╛╤Е╤А╨░╨╜╤П╤В╤М ╨╜╨░╨┤╨╛ ix ╨╕ iy ╨╛╨▒╤П╨╖╨░╤В╨╡╨╗╤М╨╜╨╛.
DE ╨╕  BC ╤Б╨╛╤Е╤А╨░╨╜╤П╤В╤М ╨╡╤Б╨╗╨╕ ╨╛╨╜╨╕ ╨╜╨╡ ╤О╨╖╨░╤О╤В╤Б╤П ╨▓ ╨║╨░╤З╨╡╤Б╤В╨▓╨╡ ╨┐╨░╤А╨░╨╝╨╡╤В╤А╨╛╨▓
*/