#include main(argc,argv) char *argv[]; int argc; { if(argc!=3) { puts("Aufruf: COPY720K [Quelldrive] [Zieldrive]"); exit(); } int dsq,dsz,dsold; switch(*argv[1]) { 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 ! (F/G/H)"); exit();break; } switch(*argv[2]) { 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 ! (F/G/H)"); exit();break; } if(dsq==dsz) { puts("Quellaufwerk und Ziellaufwerk muessen verschieden sein !"); exit(); } dsold=calla(5,0,0,0x0019,0); puts("\f\n <<<< KC85/4 --- Hardcopy von Disketten >>>>"); puts("\n\n===============================================================================\n\n"); char antwort; antwort='Y'; while((antwort=='Y') || (antwort=='y')) { int spur,spur_l,spur_h; for(spur_h=0;spur_h<80;spur_h+=2) { int puffer,seldis,fkt,sektor; int zx; puts(" Spuren -->"); printf("%d",spur_h); puts("/"); printf("%d",spur_h+1); for(fkt=1;fkt<3;fkt++) { puffer=0x4000; if (fkt==1) Š {puts("\n\î  Leseî voî deň Quelldiskettĺ 2*72 log. Sektoren \n\n"); zx=111; } else { zx=43; printf("%c",0x1a); printf("%c",0x1a); printf("%c",0x1a); printf("%c",0x1a); puts(" Schreiben auf die Zieldiskette \n\n"); } for(spur_l=0;spur_l<2;spur_l++) {spur=spur_l+spur_h; switch(fkt) { case 1:seldis=dsq;break; case 2:seldis=dsz;break; } puts(" "); for(sektor=0;sektor<72;sektor++) { printf("%c",zx); floppy(fkt,seldis,spur,sektor,puffer); puffer+=0x80; } puts(" "); } } printf("%c",0x1a); /* Cursor 6 mal hoch */ printf("%c",0x1a); printf("%c",0x1a); printf("%c",0x1a); printf("%c",0x1a); printf("%c",0x1a); } puts("\f\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); }