/[projet1]/public/pc/tools/osdk/main/makedisk/FloppyBuilder.cpp
Defence Force logotype

Diff of /public/pc/tools/osdk/main/makedisk/FloppyBuilder.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1017 by dbug, Thu Dec 12 20:50:14 2013 UTC revision 1018 by dbug, Sat Dec 14 14:02:00 2013 UTC
# Line 30  void main(int argc, char *argv[]) Line 30  void main(int argc, char *argv[])
30      "\r\n"      "\r\n"
31      "Purpose:\r\n"      "Purpose:\r\n"
32      "  Generating bootable floppies for the Oric computer.\r\n"      "  Generating bootable floppies for the Oric computer.\r\n"
33        "\r\n"
34        "Usage:\r\n"
35        "  {ApplicationName} <description file path>\r\n"
36        "\r\n"
37      );      );
38    
39    // makedisk filetobuild.txt default.dsk ..\build\%OSDKDISK%    // makedisk filetobuild.txt default.dsk ..\build\%OSDKDISK%
# Line 48  void main(int argc, char *argv[]) Line 52  void main(int argc, char *argv[])
52    }    }
53    
54    
55    if (argc!=3)    if (argc!=2)
56    {    {
57      ShowError(nullptr);      ShowError(nullptr);
58    }    }
59    
60    
61    //    //
   // Copy last parameters  
   //  
   char  description_name[_MAX_PATH];  
   
   strcpy(description_name,argv[param]);  
   
   char source_name[_MAX_PATH];  
   param++;  
   strcpy(source_name,argv[param]);  
   
   int start=0;  
   
   //std::string templateFloppyDiskName;  
   std::string targetFloppyDiskName;  
   
   //  
62    // Open the description file    // Open the description file
63    //    //
64      const char* description_name(argv[param]);
65    std::vector<std::string> script;    std::vector<std::string> script;
66    if (!LoadText(description_name,script))    if (!LoadText(description_name,script))
67    {    {
# Line 83  void main(int argc, char *argv[]) Line 72  void main(int argc, char *argv[])
72    // Copy the floppy disk    // Copy the floppy disk
73    //    //
74    Floppy floppy;    Floppy floppy;
   if (!floppy.LoadDisk(source_name))  
   {  
     ShowError("FloppyBuilder: Can't load '%s'\n",source_name);  
   }  
75    
76    std::string outputLayoutFileName;    std::string outputLayoutFileName;
77      std::string targetFloppyDiskName;
78    
79    int lineNumber=0;    int lineNumber=0;
80    for (auto it(script.begin());it!=script.end();++it)    for (auto it(script.begin());it!=script.end();++it)
# Line 118  void main(int argc, char *argv[]) Line 104  void main(int argc, char *argv[])
104    
105      if (!tokens.empty())      if (!tokens.empty())
106      {      {
107          if (tokens[0]=="LoadDiskTemplate")
108          {
109            if (tokens.size()==2)
110            {
111              const std::string& templateFisk(tokens[1]);
112              if (!floppy.LoadDisk(templateFisk.c_str()))
113              {
114                ShowError("Can't load '%s'\n",templateFisk.c_str());
115              }
116    
117            }
118            else
119            {
120              ShowError("Syntax error line (%d), syntax is 'LoadDiskTemplate FilePath' \n",lineNumber);
121            }
122          }
123          else
124          if (tokens[0]=="DefineDisk")
125          {
126            if (tokens.size()==4)
127            {
128              int numberOfSides   =std::atoi(tokens[1].c_str());
129              int numberOfTracks  =std::atoi(tokens[2].c_str());
130              int numberOfSectors =std::atoi(tokens[3].c_str());
131    
132              if ( numberOfSides!=2 )
133              {
134                ShowError("Syntax error line (%d), numberOfSides has to be 2 (so far)\n",lineNumber);
135              }
136    
137              if ( numberOfTracks!=42 )
138              {
139                ShowError("Syntax error line (%d), numberOfTracks has to be 42 (so far)\n",lineNumber);
140              }
141    
142              if ( numberOfSectors!=17 )
143              {
144                ShowError("Syntax error line (%d), numberOfSectors has to be 17 (so far)\n",lineNumber);
145              }
146    
147              if (!floppy.CreateDisk(numberOfSides,numberOfTracks,numberOfSectors))
148              {
149                ShowError("Can't create disk\n");
150              }
151    
152            }
153            else
154            {
155              ShowError("Syntax error line (%d), syntax is 'DefineDisk numberOfSides numberOfTracks numberOfSectors' \n",lineNumber);
156            }
157          }
158          else
159        if (tokens[0]=="OutputLayoutFile")        if (tokens[0]=="OutputLayoutFile")
160        {        {
161          if (tokens.size()==2)          if (tokens.size()==2)
# Line 169  void main(int argc, char *argv[]) Line 207  void main(int argc, char *argv[])
207          if (tokens.size()==2)          if (tokens.size()==2)
208          {          {
209            std::string fileName=tokens[1];            std::string fileName=tokens[1];
210            floppy.WriteSector(fileName.c_str());            if (!floppy.WriteSector(fileName.c_str()))
211              {
212                ShowError("Error line (%d), could not write file '%s' to disk. Make sure you have a valid floppy format declared. \n",lineNumber,fileName.c_str());
213              }
214          }          }
215          else          else
216          {          {
# Line 183  void main(int argc, char *argv[]) Line 224  void main(int argc, char *argv[])
224          {          {
225            std::string fileName=tokens[1];            std::string fileName=tokens[1];
226            int loadAddress=ConvertAdress(tokens[2].c_str());            int loadAddress=ConvertAdress(tokens[2].c_str());
227            int nb_sectors_by_files=floppy.WriteFile(fileName.c_str(),loadAddress);            if (!floppy.WriteFile(fileName.c_str(),loadAddress,false))
228              {
229                ShowError("Error line (%d), could not write file '%s' to disk. Make sure you have a valid floppy format declared. \n",lineNumber,fileName.c_str());
230              }
231          }          }
232          else          else
233          {          {
# Line 191  void main(int argc, char *argv[]) Line 235  void main(int argc, char *argv[])
235          }          }
236        }        }
237        else        else
238          if (tokens[0]=="AddTapFile")
239          {
240            if (tokens.size()==2)
241            {
242              std::string fileName=tokens[1];
243              if (!floppy.WriteFile(fileName.c_str(),-1,true))
244              {
245                ShowError("Error line (%d), could not write file '%s' to disk. Make sure you have a valid floppy format declared. \n",lineNumber,fileName.c_str());
246              }
247            }
248            else
249            {
250              ShowError("Syntax error line (%d), syntax is 'AddTapFile FilePath' \n",lineNumber);
251            }
252          }
253          else
254        if (tokens[0]=="AddDefine")        if (tokens[0]=="AddDefine")
255        {        {
256          if (tokens.size()==3)          if (tokens.size()==3)

Legend:
Removed from v.1017  
changed lines
  Added in v.1018

  ViewVC Help
Powered by ViewVC 1.1.26