/* Disciple Disk backup tool By Stefano Bodrato, (c) 2014 zcc +zx -lndos -create-app -o discdump discdump.c */
#include <stdio.h> #include <stdlib.h> #include <spectrum.h> //#include <zxinterface1.h>
int t,s; int k;
void rdsec(int trk, int sec) { #asm pop bc pop hl pop de ld d,l ld a,1 ld ix,60000 push bc rst 8 defb 68 ret #endasm }
void wrsec(int trk, int sec) { #asm pop bc pop hl pop de ld d,l ld a,1 ld ix,60000 push bc rst 8 defb 69 ret #endasm }
int main() { printf ("%cPress 'b' to backup\n",12); printf ("Press 'r' to restore\n"); k=getk(); while ((k!='b')&&(k!='r')) k=getk(); if (k=='b') { for (t=0;t<=79;t++) for (s=1;s<=10;s++) { rdsec(t,s); fputc_cons('.'); tape_save_block(60000, 512, 2); rdsec(t+128,s); fputc_cons('.'); tape_save_block(60000, 512, 2); } } else { printf ("Ready to overwrite disk ?\n"); while (getk()!='y') {} for (t=0;t<=79;t++) for (s=1;s<=10;s++) { tape_load_block(60000, 512, 2); fputc_cons('.'); wrsec(t,s); tape_load_block(60000, 512, 2); fputc_cons('.'); wrsec(t+128,s); } }
printf ("\n\nDisk backup complete !\n");
}