You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
2.1 KiB
C

// Internet Downloader
#include <redbus.h>
#include <console.h>
#include <internet.h>
#include <stdlib.h>
#include <string.h>
#include <disk.h>
#include "conio.h"
#include "downloader.h"
#define redbus 0x0300
void download_file() {
unsigned int i;
con->cursor_mode = 0;
conprint("Downloading file, please wait warmly.", 0, 6);
rb_map_device(0x05);
memset(internet->url, 0, 50);
strcpy(internet->url, buffer);
internet->command = 1;
while(internet->command == 1);
if(internet->command == 0xFF){
conprint("Error in file download, please try again", 0, 7);
} else {
sectorcount = internet->sector_count;
conprint(strcat(strcat("The file downloaded is of size ", itoa(sectorcount, 0, 10)), " Kilobytes"), 0, 7);
conprint("Transferring data", 0, 8);
for(i = 0; i <= sectorcount; ++i){
rb_map_device(0x05);
internet->sector_num = i;
memcpy(databuf, internet->webbuf, 128);
rb_map_device(0x02);
disk->sector_num = i;
memcpy(disk->sector, databuf, 128);
disk->command = (char)5;
while(disk->command != 0x00 && disk->command != 0xFF);
}
conprint("Data transferred!", 0, 8);
}
}
void main() {
memset(buffer, 0, 50);
memset(ynbuf, 0, 50);
memset(databuf, 0, 50);
internet = (Internet*)redbus;
disk = (Disk*)redbus;
con = (Console*)redbus;
rb_set_window((void*)redbus);
rb_enable();
conclear();
conprint("Internet Disk Retrieval System V1.3", 0, 0);
conprint("Please remove disk now", 0, 1);
conprint("Enter a URL to download from: ", 0, 2);
con->cursor_y = 3;
strcpy(buffer, read_keyboard());
conprint("You are trying to download a file from: ", 0, 3);
conprint(buffer, 0, 4);
con->cursor_x = 23;
con->cursor_y = 5;
conprint("Is this correct? (Y/N)", 0, 5);
memset(ynbuf, 0, 50);
strcpy(ynbuf, read_keyboard());
if(ynbuf[0] == 'Y' || ynbuf[0] == 'y') {
download_file();
} else{
conprint("Download cancelled", 0, 6);
}
}