/* NOBOOT.C written by Leor Zolman 3/82 Given a list of C-generated COM files (linked with the standard distribution version of the C.CCC run-time package), this program changes those COM files so that they do not perform a warm-boot after their execution is complete, but instead preserve the CCP (Console Command Processor) that is in memory when execution begins and return to the CCP directly following execution. NOTE: If a command is the object of a pipe operation using DIO, then a warm-boot will always occur after its execution, whether or not NOBOOT has been applied to it. link by: A>clink noboot wildexp (or) A>l2 noboot wildexp */ #include "bdscio.h" main(argc,argv) char **argv; { int fd; int i; char c; char nambuf[30]; char workbuf[0x500]; int loop; if (argc == 1) { puts("Usage: noboot \n"); exit(); } for (loop = 1; loop < argc; loop++) { puts("NOBOOT-ing "); puts(argv[loop]); putchar('\n'); for (i=0; (c = argv[loop][i]) && c != '.'; i++) nambuf[i] = c; nambuf[i] = '\0'; strcat(nambuf,".COM"); if ((fd = open(nambuf,2)) == ERROR) { puts("Can't open: "); puts(nambuf); exit(); } i = read(fd,workbuf+0x100,8); if (i != 8) puts("Couldn't read in at least 8 sectors...\n"); workbuf[0x100] = 0x21; workbuf[0x101] = 0x00; workbuf[0x102] = 0x00; workbuf[0x103] = 0x39; workbuf[0x104] = 0x22; workbuf[0x105] = 0x79; workbuf[0x106] = 0x05; workbuf[0x107] = 0xcd; workbuf[0x108] = 0x34; workbuf[0x109] = 0x01; workbuf[0x10a] = 0xf9; workbuf[0x12f] = 0x2a; workbuf[0x130] = 0x79; workbuf[0x131] = 0x05; workbuf[0x132] = 0xf9; workbuf[0x133] = 0xc9; workbuf[0x134] = 0x2a; workbuf[0x135] = 0x06; workbuf[0x136] = 0x00; workbuf[0x137] = 0x11; workbuf[0x138] = 0xcc; workbuf[0x139] = 0xf7; workbuf[0x13a] = 0x19; workbuf[0x13b] = 0xc9; workbuf[0x13c] = 0x00; workbuf[0x13d] = 0x00; workbuf[0x13e] = 0x00; workbuf[0x443] = 0xc3; workbuf[0x444] = 0x2f; workbuf[0x445] = 0x01; seek(fd,0,0); if (write(fd,workbuf+0x100,8) != 8) { puts("Write error.\n"); exit(); } if (close(fd) == ERROR) { puts("Close error\n"); } } }  .