Code Monkey home page Code Monkey logo

ultimateii-dos-lib's Introduction

ultimate-lib

cc65 library for accessing the DOS & network functions of the Ultimate 64 and II/+ cartridge

The demo program does not alter any data, but as this is an early release, please use with caution.

Based on ultimate_dos-1.2.docx and command interface.docx https://github.com/markusC64/1541ultimate2/tree/master/doc

Patches and pull requests are welcome

I have created a simple (dos) batch file to create the demo programs. Please have c1541.exe and petcat.exe in your execution path (they both come with the VICE emulator).

The build will automatically create the prg files as well as a D64 disk image consisting of the examples.

Example programs:

  • u-sample.prg is a simple demo of making some dos calls
  • u-shell.prg is a simple command shell
  • u-term64.prg is a simple terminal program using the built in ethernet connection
  • u-chat64.prg is an irc client for the 64
  • geouterm is a basic ASCII terminal for GEOS (for both GEOS 64 and 128)

Some programs also have an 80 column C128 version (u-term and u-chat).

Note: these are really just demo applications. You are encouraged to utilize, improve on, and and build even better apps than I have. Enjoy!

ultimateii-dos-lib's People

Contributors

bvl1999 avatar leifbloomquist avatar maxplap avatar pinacolada64 avatar sblendorio avatar xlar54 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ultimateii-dos-lib's Issues

Incomplete XMODEM implementation Ultimate Term. What about CRC / 1K / Resending bad Blocks etc. ?

Hi ! I just had a look on ultimateterm.c because I wondered why XMODEM Downloads from a BBS didn't work as expected.
So I took a quick look on the code and found out why it didn't work.
Besides missing code for xmodem Uploads, there are things missing like, resending of bad blocks, check if connection got lost, CRC Checksum (1 Byte checksum shouldn't be uses since 3 decades....) and maybe 1K Buffer / Blocksize, and chopping the padding CPMEOF when the last Block got sent (what if File ends with $1a Byte ?).

To be honest I'm not a C Coder, but I inserted some Comments and lines of code, so you may get an Idea of what I want to say...
As a reference I took MagerValps xmodem.c from his CGTerm and put portions of it into your code (as demo) + a few lines of C from me.
Would be great if you could update your Term.
Feature requrest: ... and add Upload too ? Maybe ?
PS: Maybe I can help with Punter. I run my own Version (6510) with up to 48MHz U64 Turbo on Raveolution.... (via Modem Emu Layer ofcourse).
ultimateterm2.zip

U-Term: Make clear the role of F1 (exit BBS) and F3 (ASCII/PETSCII) key functions

It seems that people turn on and off the C64 and re-load U-Term from disk every time they want to change BBS:
https://www.facebook.com/1943034422597090/videos/602093900263708

...but they can just presss F1! We have to find a way to communicate it clearly. For example, some instructions on main screen are now obsolete, and we can use that part of screen more efficiently (e.g. "ensure that Command Line interface is enabled", just because now there is a UCI detection when program starts, then it gives user instructions on how to turn it on)

UltimateTerm - DOS commands

With the introduction of protocol / download support, I think we need to implement some basic DOS command support as well. Viewing a directory, rename, delete, copy file (to same disk). Just the basic options for now. Also switching active drives for downloads.

Sample program not working with U2+ Updated to Latest Firmware

Hi there!

I have a C64G and U2+ which has been updated to the latest firmware (3.10a). My IP settings use DHCP, and I have an IP showing up in the main menu.

But when I give the u_sample.prg program a try, unfortunately everything comes up blank... No IP detected (everything 0.0.0.0), and blank results for all tests.

Is there any particular setting on the U2+ that needs to be setup for the program to work??

VT100/ANSI

Would be very useful support for VT100/ANSI terminal.
I think it's the big missing of ultimateII. Why should I give up my UltimateII+ to free Cartridge slot for a RRNET or use the userport with wimodem?

UltimateTerm - Set the duration of timeout of a BBS connection

If I wait for a certain number of seconds without making any action while I am connected to a BBS, the connection suddenly is broken. Given a BBS where the timeout is a known value (e.g. retroacademy bbs has 1 hour of servers-side timeout), this "client-side" timeout comes up before the known value.

What is the way to change this type of (client-side) timeout of the connection?

ultimate_lib - Mishandling of _ in URL when send over network with uii_tcpsocketwrite_ascii

When using uii_tcpsocketwrite_ascii all _ are replaced by .

Example Code:

int port = 80;
unsigned char socketnr = 0;
char *cmd = "GET /roller/0?go=to_pos&roller_pos=40 HTTP/1.0\n\n";
char *host = "192.168.1.1";
socketnr = uii_tcpconnect(host, port);
uii_tcpsocketwrite_ascii(socketnr, cmd);
uii_tcpclose(socketnr);

Result in tcpdump is:
GET /roller/0?go=to.pos&roller.pos=40 HTTP/1.0

Loader: Simple menu of applications

Dont want to leave out the IRC apps, so it would be nice for the loader to present a menu of either UltimateTerm or UltimateChat IRC. Folks may not realize its there. A cool looking header in Petscii characters of something would be nice too.

UltimateChat - Screen blanking

Not uncommon to remain in a chat room for hours on end. Add option to blank screen after certain time period (protect from screen burn in). Recover if named, and possible chime or bell.

ultimate_lib - use of malloc without free

Issue: Some functions using malloc but do not free heap before return:

uii_write_file
uii_tcpsocketwrite_convert_parameter
uii_tcpconnect

Effect: heap overflow when using these functions frequently - crash of program

2400 bps limit

Im working with Gideon to see what can be done to move beyond 2400 bps. Leaving this ticket as a placeholder. Looking at his code, there really shouldnt be a limit. Will see what he says.

UltimateTerm - Change bug reports location

Instead of showing users "Send bug reports to: scotthuttergmail.com", provide them the link to this repo. They can create issues in the issue list instead so that contributors can see it

Suggestion of improvements from users

User "Bela Erdos" suggests that:
https://www.facebook.com/groups/commodoresixtyfour/permalink/10155726173572172/?comment_id=10155729582457172

Hey there, I sent an email too, but not sure which one will reach you quicker so I just post it here too.
ok 1.61 works fine,
Some idea for feature update:
1 - let's name the BBS connection and browse by that name instead of the full link.
2 - make a alphabetical sort option, right now as I filling up the list gets harder to find the one I'm looking for
3 - let's have a field for the named connection as Memo, so folks can add note to that bbs
4 - integrated password manager. Let's create a separate file where user can save his login credentials and after entering a master password can see it on top of the screen when they try to login. Obviously it is super important to make user aware of DO NOT SHARE YOUR PSSW file... :D for obvious reason, but would help to make the program better
If anything else comes up, I'll let you know
B3L4 / Hokuto Force

Detect of remote disconnection

Maybe I found the way and it's incredibly simple. After reading data with uii_tcpsocketread, the length of the data read is:

len_buff = uii_data[0] | (uii_data[1]<<8)

if len_buff is >0, then data is present. Otherwise there are TWO other options:

  • len_buff == -1 it means "no data is read, and connection is still alive"
  • len_buff == 0 it means "loss of connection".

I tested it and implemented in the following lines in UltimateTerm.c:
https://github.com/xlar54/ultimateii-dos-lib/blob/download_with_punter_protocol/src/ultimateterm.c#L556

if (datacount == 0) { // datacount == 0 means "disconnected"
    break;
} else if (datacount > 0) {
    cursor_off();
    if (asciimode) putstring_ascii(uii_data+2); else uii_data_print();
    cursor_on();
} // datacount == -1 means "wait state"

Can you make some test and verify that it is correct also for your attempts?

UDP and GET_TIME

I'm trying to write a NTP interrogation tool. To achieve that I added the UDP support to this library.
I also noticed in network_target.h there is no discrimination on TCP vs UDP methods towards sockets, except for creating them.
I added: uii_udpconnect, uii_get_time and refactored method names to mirror network_target.h in my fork.

I hope I have been helpful

U-SHELL doesn't work..

I just tried U-SHELL (I have a u2+ on 3.10A fw).
Nothing works, not even the "id" command.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.