Commit Graph

601 Commits

Author SHA1 Message Date
Oliver Schmidt
e7f0b6759b Added download to disk feature.
Beside the code for the actual feature this change introduces analysis of the URL to extract a potential filename to be used for saving. Doing so was a prerequisite for disk download because the filename extension in the URL is the only hint for distinguishing ProDOS sector order disk images from DOS 3.3 sector order images.

So far only the URL input was potentially repeated. Now the file input is potentially repeated as well. For normal file paths there's deliberately still no check. But when entering a drive specifier ("!Sx,Dx") then it is checked for plausibility - and there's an additional confirmation question to keep the user from overwriting the "wrong" disk.

With now having both the URL and file input potentially repeated it became clear that loading and saving the input history shouldn't be repeated - and if the user quits without having entered a valid input the history deliberately isn't saved at all.
2018-08-06 20:33:32 +02:00
Oliver Schmidt
7ac8c55603 First step towards download to disk.
So far we were reading (much) more bytes from the W5100 than necessary when processing the HTTP header. The byte were memmove'd to the beginning of the buffer.

However, when downloading a DOS 3.3 sector order disk image (*.dsk / *.do) then we need to place every DOS 3.3 sector at a certain point in the buffer to avoid additional memcpy's later. Therefore the HTTP header processing mustn't read (or rather commit) any body bytes from the W5100. So we now just check for the "\r\n\r\n" after each and every byte. This is of course less than optimal but small/simple - and the header isn't supposed to be that large anyway.
2018-08-04 13:10:13 +02:00
Oliver Schmidt
66ac29285b Interpret empty input as intend to exit. 2018-08-03 13:58:46 +02:00
Oliver Schmidt
fc61ee5358 Fixed recent change.
Brought back re-initialization of port hi-byte.
2018-08-03 00:49:56 +02:00
Oliver Schmidt
74eec87860 Improved handling of abbreviated URLs.
- There was already an explicit code path for something like 'wwww.google.com/' but that code path ended up with the protocol type unset and the port set to 0. Now the protocol defaults to HTTP and the port defaults to 80.
- There was no provision for something like http://www.google.com', rather it was just assumed that the slash after the hostname is always found. Now there's a check if the slash is actually found, and if it isn't found then an empty path is explicitly used.
2018-08-03 00:46:17 +02:00
Oliver Schmidt
fe215b4eda Added timezone support.
After quite some thoughts it was considered best to simply have the timezone configured in the source code and rebuild if a change is desired/necessary.
2018-08-02 17:37:54 +02:00
Oliver Schmidt
29793d4814 Added (Apple II specific) wget65 program.
IP65 doesn't support TCP flow control. Therefore it doesn't make sense to write a program receiving a significant amount of data via TCP using IP65. From that perspective it makes sense that IP65's HTTP client doesn't allow to handle incoming data with a callback but requires a buffer being able to hold the whole HTTP body.

However, on the Apple II there's the Uthernet II card with its W5100 Ethernet controller chip. That chip has it's own TCP implementation supporting TCP flow control. Therefore the wget65 program uses the W5100 TCP capabilities for the HTTP client.

But even with the W5100 TCP implementation in place IP65 still plays a role for the wget65 program as it desires DHCP and requires (usually) DNS. Both are not supported by the W5100 capabilities.
2018-08-01 19:39:06 +02:00
Oliver Schmidt
dcbe2e002b Enable register variables.
Nowadays register variables are out-of-style. So if they appear in some source code they can be assumed to be explicitly meant for cc65, so don't ignore them.
2018-08-01 19:27:08 +02:00
Oliver Schmidt
cfaa0d7c0d Added generic CL65FLAGS and made use of it.
- Maybe not all Apple II C programs want to use the special I/O buffer setup.
- All Make-target-specific variables should go at the top of the Makefile as they are user settings.
2018-08-01 19:24:12 +02:00
Oliver Schmidt
26648fba7f Allow C programs to override the IP driver library used. 2018-08-01 19:17:53 +02:00
Oliver Schmidt
76843a7737 Allow C programs to consist of multiple source files. 2018-08-01 19:14:52 +02:00
Oliver Schmidt
95f97d807d Renamed object files generated from asm files.
Make sure that 'make' doesn't mix up object files generated from asm files and object files generated from C files.
2018-08-01 19:11:47 +02:00
Oliver Schmidt
ab63d8dcf9 Added library for Apple II C programs supporting only the Uthernet II.
The W5100 can be accessed pretty well from C without any library. A C program doing so is of course incompatible with the Uthernet and the LANceGS. So the program needs to make sure that that there' an Uthernet II. It can do so by comparing 'eth_driver_name' with "Uthernet II". However, when space it tight it doesn't seem reasonable to link all Ethernet drivers in the first place.
2018-08-01 19:00:40 +02:00
Oliver Schmidt
4ef85827db Replaced version file with hard coded identifier.
Have the HTTP client work in just the same way the HTTP server does.
2018-08-01 19:00:39 +02:00
Oliver Schmidt
6eb4aef0e8 Enhanced C interface to user input control. 2018-08-01 19:00:39 +02:00
Oliver Schmidt
0bd53f3af7 Added C interface to Ethernet driver configuration. 2018-08-01 19:00:39 +02:00
Oliver Schmidt
b9d6a92534 Minor beautification. 2018-08-01 19:00:38 +02:00
Oliver Schmidt
5f9fe0ad1e Just some minor code style adjustment. 2018-07-23 22:13:32 +02:00
Oliver Schmidt
ee0e11b41f Reduced Apple II binary file sizes.
The Apple II file I/O needs a $400 byte page-aligned buffer for every open file. The default implementation takes those buffers from the heap. However, if a program doesn't use the heap for anything else it is more efficient to place those buffers below the program at $800 by linking iobuf-0800.o and thus avoiding to link any heap code at all. If a program never opens more than one file at a time it can have its start address at $800 + 1 x $400 = $C00.
2018-07-23 14:55:56 +02:00
Oliver Schmidt
29c802c835 Adjusted parameter type to match header file. 2018-07-22 19:35:43 +02:00
Oliver Schmidt
c47a89ce1a Split url.s into url.s and download.s.
url_parse() doesn't require TCP so it makes sense to allow a program using url_parse() to link successfully without TCP support.
2018-07-22 19:22:57 +02:00
Oliver Schmidt
fbdc712e06 Added LOADER.SYSTEM for the Apple II C programs.
It may be useful to be able to run the C programs right from the selector (without loading BASIC.SYSTEM first). Or maybe run them on boot by placing the LOADER.SYSTEM as first file in the root directory.
2018-07-22 16:08:21 +02:00
Oliver Schmidt
8e7454580f Have Date65 set the ProDOS date on the Apple II.
If there's RTC active then the user can at least have the current date set. However, if the machine runs for several days the user needs to re-run Date65.
2018-07-22 15:26:39 +02:00
Oliver Schmidt
6d1306b60c Minimal phrasing change. 2018-07-21 19:56:25 +02:00
Oliver Schmidt
b6afd84d5e Added Wiki links. 2018-07-21 19:40:28 +02:00
Oliver Schmidt
6ba4a5bae0 Minimal style consistency improvements. 2018-07-21 18:46:25 +02:00
Oliver Schmidt
69e72e1114 Minimal comment fix. 2018-07-21 18:37:42 +02:00
Oliver Schmidt
d036abdc0b Fixed links. 2018-07-21 17:37:22 +02:00
Oliver Schmidt
272cf8424c Improved LANceGS link. 2018-07-21 17:33:55 +02:00
Oliver Schmidt
38ca26e3c7 Initial README 2018-07-21 17:23:31 +02:00
Oliver Schmidt
30e44d99b7 We rather want the GitHub commit list. 2018-07-20 20:00:37 +02:00
Oliver Schmidt
71af95ccef Added top level Makefile to create target specific .zip files. 2018-07-20 19:57:56 +02:00
Oliver Schmidt
3ff1771d4b Added files necessary to build disk images. 2018-07-20 19:12:51 +02:00
Oliver Schmidt
32d5b1e004 Added hack to make HFS65 build on Atari.
The resulting program is defunct!
2018-07-20 18:28:02 +02:00
Oliver Schmidt
3fb437f7cb Added C interface to URL functions. 2018-07-20 18:12:51 +02:00
Oliver Schmidt
c1ddcbc5af Added C interface to TFTP functions. 2018-07-20 14:51:20 +02:00
Oliver Schmidt
3a490bcb9e Minor style fix. 2018-07-20 13:59:06 +02:00
Oliver Schmidt
25ebdca045 Use standard types. 2018-07-19 15:35:03 +02:00
Oliver Schmidt
59d86f7638 Reduced the advertised TCP window size to the MSS. 2018-06-10 14:47:42 +02:00
Oliver Schmidt
9a21f96863 Adjusted to cc65 2.17 which generates AppleSingle files. 2018-03-08 16:12:23 +01:00
Oliver Schmidt
0f6cbffe83 Removed the (defunct) include file dependencies. 2018-02-23 16:59:31 +01:00
Oliver Schmidt
989c35e168 Just append the 65-suffix to all cc65/IP65 apps. 2018-02-23 16:52:45 +01:00
Oliver Schmidt
d4f7569278 Removed last KPR_* constants. 2018-02-23 16:41:33 +01:00
Oliver Schmidt
c89a2ae1ba Adjusted include file extension to ca65 practice. 2018-02-23 16:36:05 +01:00
Oliver Schmidt
b84527c8a3 Removed last KIPPER leftover. 2018-02-23 16:33:21 +01:00
Oliver Schmidt
3c88dec698 Removed unused stuff. 2018-02-23 15:53:03 +01:00
Oliver Schmidt
e3077a46a5 Normalized language. 2018-02-22 22:40:52 +01:00
Oliver Schmidt
7090fb5bdd Allow C programs to set the Apple II slot number. 2018-02-22 22:33:47 +01:00
Oliver Schmidt
a07e889d7b Added HttpFileServer65.
HttpFileServer65 is inspired by "HFS ~ Http File Server" (http://www.rejetto.com/hfs/). It features an intuitive mapping of local disks and directories to HTTP paths. This allows to not only navigate to some file but to directly enter some file URL. This is especially usefull for downloads via wget, curl or alike.

However, in contrast to HFS it doesn't allow file uploads, only file downloads. On targets with complete DIO support it additionally allows disk image downloads.

Note: The Atari build currently fails as there's so far no getdevicedir() in the Atari C library.
2018-02-20 00:18:48 +01:00
Oliver Schmidt
5a1c3fda7e Added timer test to Makefile. 2018-02-06 13:06:05 +01:00