Subversion Repositories SvarDOS

Compare Revisions

Ignore whitespace Rev 52 → Rev 53

/install/install.c
14,6 → 14,7
 
#include "kitten\kitten.h"
 
#include "cdrom.h"
#include "input.h"
#include "video.h"
 
290,7 → 291,9
}
/* if not formatted, propose to format it right away (try to create a directory) */
sprintf(buff, "%c:\\SVWRTEST.123", cselecteddrive);
if (mkdir(buff) != 0) {
if (mkdir(buff) == 0) {
rmdir(buff);
} else {
char *list[] = { "Proceed with formatting", "Quit to DOS", NULL};
list[0] = kittengets(0, 6, list[0]);
list[1] = kittengets(0, 2, list[1]);
304,8 → 307,6
system(buff);
continue;
}
sprintf(buff, "%c:\\SVWRTEST.123", cselecteddrive);
rmdir(buff);
/* check total disk space */
ds = disksize(selecteddrive);
if (ds < SVAROG_DISK_REQ) {
350,11 → 351,47
}
 
 
static void bootfilesgen(int targetdrv, char *lang) {
/* copy file src into dst, substituting all characters c1 by c2 */
static void fcopysub(char *dst, char *src, char c1, char c2) {
FILE *fdd, *fds;
int buff;
fds = fopen(src, "rb");
if (fds == NULL) return;
fdd = fopen(dst, "wb");
if (fdd == NULL) {
fclose(fds);
return;
}
/* */
for (;;) {
buff = fgetc(fds);
if (buff == EOF) break;
if (buff == c1) buff = c2;
fprintf(fdd, "%c", buff);
}
/* close files and return */
fclose(fdd);
fclose(fds);
}
 
 
static void bootfilesgen(int targetdrv, char *lang, int cdromdrv) {
char buff[128];
int cp, egafile;
FILE *fd;
cp = getnlscp(lang, &egafile);
/*** CONFIG.SYS ***/
sprintf(buff, "%c:\\CONFIG.SYS", targetdrv);
fd = fopen(buff, "wb");
if (fd == NULL) return;
fprintf(fd, "DOS=UMB,HIGH\r\n");
fprintf(fd, "FILES=50\r\n");
fprintf(fd, "DEVICE=%c:\\SYSTEM\\SVAROG.386\\BIN\\HIMEMX.EXE\r\n", targetdrv);
fprintf(fd, "SHELLHIGH=%c:\\SYSTEM\\SVAROG.386\\BIN\\COMMAND.COM /E:512 /P\r\n", targetdrv);
if (egafile > 0) fprintf(fd, "DEVICE=%c:\\SYSTEM\\SVAROG.386\\BIN\\DISPLAY.SYS\r\n", targetdrv);
fprintf(fd, "REM COUNTRY=001,437,%c:\\SYSTEM\\CONF\\COUNTRY.SYS\r\n", targetdrv);
fprintf(fd, "DEVICE=%c:\\SYSTEM\\DRIVERS\\UDVD2\\UDVD2.SYS /D:SVCD0001 /H\r\n", targetdrv);
fclose(fd);
/*** AUTOEXEC.BAT ***/
sprintf(buff, "%c:\\AUTOEXEC.BAT", targetdrv);
fd = fopen(buff, "wb");
364,10 → 401,10
fprintf(fd, "SET DOSDIR=%c:\\SYSTEM\\SVAROG.386\r\n", targetdrv);
fprintf(fd, "SET NLSPATH=%%DOSDIR%%\\NLS\r\n");
fprintf(fd, "SET LANG=%s\r\n", lang);
fprintf(fd, "SET DIRCMD=/OGNE/P\r\n");
fprintf(fd, "SET FDNPKG.CFG=%c:\\SYSTEM\\CFG\\FDNPKG.CFG\r\n");
fprintf(fd, "SET WATTCP.CFG=%c:\\SYSTEM\\CFG\\WATTCP.CFG\r\n");
fprintf(fd, "PATH %%DOSDIR%%\\BIN;%%DOSDIR%%\\LINKS\r\n");
fprintf(fd, "SET DIRCMD=/OGNE/P/4\r\n");
fprintf(fd, "SET FDNPKG.CFG=%c:\\SYSTEM\\CFG\\FDNPKG.CFG\r\n", targetdrv);
fprintf(fd, "SET WATTCP.CFG=%c:\\SYSTEM\\CFG\\WATTCP.CFG\r\n", targetdrv);
fprintf(fd, "PATH %%DOSDIR%%\\BIN;%c:\\SYSTEM\\LINKS\r\n", targetdrv);
fprintf(fd, "PROMPT $P$G\r\n");
fprintf(fd, "ALIAS REBOOT=FDAPM COLDBOOT\r\n");
fprintf(fd, "ALIAS HALT=FDAPM POWEROFF\r\n");
386,24 → 423,22
fprintf(fd, "REM Uncomment the line below for automatic mouse support\r\n");
fprintf(fd, "REM CTMOUSE\r\n");
fprintf(fd, "\r\n");
fprintf(fd, "ECHO.");
fprintf(fd, "ECHO WELCOME TO SVAROG386! TYPE 'HELP' IF YOU NEED HELP.\r\n");
fprintf(fd, "ECHO.\r\n");
fprintf(fd, "ECHO Welcome to Svarog386! Type 'HELP' if your need help.\r\n");
fclose(fd);
/*** CONFIG.SYS ***/
sprintf(buff, "%c:\\CONFIG.SYS", targetdrv);
fd = fopen(buff, "wb");
if (fd == NULL) return;
fprintf(fd, "DOS=UMB,HIGH\r\n");
fprintf(fd, "FILES=50\r\n");
fprintf(fd, "DEVICE=%c:\\SYSTEM\\SVAROG.386\\BIN\\HIMEMX.EXE\r\n", targetdrv);
fprintf(fd, "SHELLHIGH=%c:\\SYSTEM\\SVAROG.386\\BIN\\COMMAND.COM /E:512 /P\r\n", targetdrv);
fprintf(fd, "REM COUNTRY=001,437,%c:\\SYSTEM\\SVAROG.386\r\n", targetdrv);
fprintf(fd, "DEVICE=%c:\\SYSTEM\\DRIVERS\\UDVD2\\UDVD2.SYS /D:SVCD0001 /H\r\n", targetdrv);
fclose(fd);
/*** CREATE DIRECTORY FOR OTHER CONFIGURATION FILES ***/
snprintf(buff, sizeof(buff), "%c:\\SYSTEM\\CFG", targetdrv);
mkdir(buff);
/*** FDNPKG.CFG ***/
snprintf(buff, sizeof(buff), "%c:\\SYSTEM\\CFG\\FDNPKG.CFG", targetdrv);
fcopysub(buff, "A:\\DAT\\FDNPKG.CFG", '$', cdromdrv);
/*** COUNTRY.SYS ***/
/*** PICOTCP ***/
/*** WATTCP ***/
}
 
 
static void installpackages(int targetdrv) {
static void installpackages(int targetdrv, int cdromdrv) {
char *pkglist[] = {
"APPEND",
"ASSIGN",
473,7 → 508,7
snprintf(buff, sizeof(buff), kittengets(4, 0, "Installing package %d/%d: %s"), i+1, pkglistlen, pkglist[i]);
strcat(buff, " ");
video_putstring(10, 2, COLOR_BODY[mono], buff);
sprintf(buff, "FDINST INSTALL X:\\CORE\\%s.ZIP > NUL", pkglist[i]);
sprintf(buff, "FDINST INSTALL %c:\\CORE\\%s.ZIP > NUL", cdromdrv, pkglist[i]);
system(buff);
}
}
518,7 → 553,16
int main(void) {
char lang[4];
int targetdrv;
int cdromdrv;
 
/* find where the cdrom drive is */
cdromdrv = cdrom_findfirst();
if (cdromdrv < 0) {
printf("ERROR: CD-ROM DRIVE NOT FOUND\r\n");
return(1);
}
cdromdrv += 'A'; /* convert the cdrom 'id' (A=0) to an actual drive letter */
 
/* init screen and detect mono status */
mono = video_init();
 
532,11 → 576,10
targetdrv = preparedrive(); /* what drive should we install to? check avail. space */
if (targetdrv < 0) break;
/*askaboutsources();*/ /* IF sources are available, ask if installing with them */
installpackages(targetdrv); /* install packages */
bootfilesgen(targetdrv, lang); /* generate simple boot files */
installpackages(targetdrv, cdromdrv); /* install packages */
bootfilesgen(targetdrv, lang, cdromdrv); /* generate boot files and other configurations */
/*localcfg();*/ /* show local params (currency, etc), and propose to change them (based on localcfg) */
/*netcfg();*/ /* basic networking config */
/* TODO compute a customized FDNPKG file that looks either to local CD or net */
finalreboot(); /* remove the CD and reboot */
break;
}
/install/makefile
9,8 → 9,8
 
all: install.com
 
install.com: install.c input.c video.c
wcl -0 -y -cc -wx -mt -lr -we -d0 -ox install.c input.c video.c kitten\kitten.c
install.com: install.c cdrom.c input.c video.c
wcl -0 -y -cc -wx -mt -lr -we -d0 -ox install.c cdrom.c input.c video.c kitten\kitten.c
upx --8086 -9 install.com
 
clean: .SYMBOLIC