#include main(argc,argv) char *argv[]; int argc; { if(argc!=3) { puts("Aufruf: SYSCOPY [Quelldrive] [Zieldrive]"); exit(); } int dsq,dsz,dsold; switch(*argv[1]) { case 'b':dsq=1; case 'B':dsq=1;break; case 'c':dsq=2; case 'C':dsq=2;break; case 'd':dsq=3; case 'D':dsq=3;break; case 'e':dsq=4; case 'E':dsq=4;break; case 'f':dsq=5; case 'F':dsq=5;break; case 'g':dsq=6; case 'G':dsq=6;break; case 'h':dsq=7; case 'H':dsq=7;break; default: puts("Quellaufwerk falsch ! (B...H)"); exit();break; } switch(*argv[2]) { case 'b':dsz=1; case 'B':dsz=1;break; case 'c':dsz=2; case 'C':dsz=2;break; case 'd':dsz=3; case 'D':dsz=3;break; case 'e':dsz=4; case 'E':dsz=4;break; case 'f':dsz=5; case 'F':dsz=5;break; case 'g':dsz=6; case 'G':dsz=6;break; case 'h':dsz=7; case 'H':dsz=7;break; default: puts("Ziellaufwerk falsch ! (B...H)"); exit();break; } if(dsq==dsz) { puts("Quellaufwerk und Ziellaufwerk muessen verschieden sein !"); exit(); } dsold=calla(5,0,0,0x0019,0); char antwort; antwort='Y'; while((antwort=='Y') || (antwort=='y')) { puts("\f\î KC85/´ - Systemspureî kopiereî << Uwe Felgentreu - software & devices >>\n"); puts(" nur 780K-Disketten\n"); puts("==============================================================================="); int puffer,seldis,spur,fkt,sektor; for(fkt=1;fkt<3;fkt++) { puffer=0x4000; if (fkt==1) puts("\n\î  Leseî voî deň Quelldiskettĺ 2*8° logischĺ Sektoren ( Spur 0/1 )\n\n"); else puts("\n Schreiben auf die Zieldiskette\n\n"); for(spur=0;spur<2;spur++) {switch(fkt) { case 1:seldis=dsq;break; case 2:seldis=dsz;break; } for(sektor=0;sektor<80;sektor++) { puts("#"); floppy(fkt,seldis,spur,sektor,puffer); puffer+=0x80; } } } puts("\n\n\n\n * ready *\n\n"); floppy(1,dsold,0,0,0x4000); puts(" mit gleichen Parametern nochmal ? (Y/N) "); antwort=getchar(); } } /* pysische Arbeit mit dem Floppydisk unter CP/M 1 - read 2 - write */ floppy (fkt,seldis,spur,sektor,puffer) int fkt,seldis,spur,sektor,puffer; char puffer[]; { int ret; ret=-1; register int bios; bios=peek(1)+(peek(2)<<8); call (bios+0x18,0,0,seldis);/* LW auswaehlen */ call (bios+0x1b,0,0,spur);/* Spur einstellen */ call (bios+0x1e,0,0,sektor);/* Sektor einstellen */ call (bios+0x21,0,0,puffer);/* DMA Adresse einstellen */ switch(fkt) { case 1:ret=calla(bios+0x24);break; case 2:ret=calla(bios+0x27);break; default:break; } return(ret); }