mengstr / xmodem80

Xmodem for CP/M Z80 for CON:
MIT License
14 stars 5 forks source link

XR crashes at 122 packets #2

Open mengstr opened 7 years ago

billk2112 commented 5 years ago

It always fails for me on 121 packets. It works excellent other than that . I can’t get kerm411 to work reliably and this looked perfect until I tried the larger files.
Using a Tom’s Z80 SNC.

mengstr commented 5 years ago

Oh... I've all but forgotten about this project. It's a strange bug that is triggered by such an odd number as 121/122, but now when I think about it again it strikes me that it might be caused by a stack overflow. Let me see if I can find the cause and fix it.

billk2112 commented 5 years ago

It might be a symptom of a larger problem with my system. I have the same thing happen with Kermit411 and also when I use The utility download.com. No method that I can send data to my SBC works on files above a certain size.

On Apr 15, 2019, at 4:08 AM, SmallRoomLabs notifications@github.com wrote:

Oh... I've all but forgotten about this project. It's a strange bug that is triggered by such an odd number as 121/122, but now when I think about it again it strikes me that it might be caused by a stack overflow. Let me see if I can find the cause and fix it.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

SvenMb commented 4 years ago

Same here, it fails on block 122 ...

Btw. I found XMODEM 2.7 by M. Eberhard in a patched version to use CON for the RC2014, that one works well...

coopzone-dc commented 4 years ago

Hello, I have a similar issue at block 122, using minicom (on linux host) sending to cpm2.2 running on esp8266 (one of your other projects) Minicom says Retry 0, got 0d for sector ACK

coopzone-dc commented 4 years ago

FIXED; you need "pop HL" after the djnz line in GetRestOfPacket; like this:

Note the line that says ADD THIS: GetRestOfPacket: push BC ld A,1 call GetCharTmo pop BC

    pop     HL              ; Save the received char into the...
    ld      (HL),A          ; ...packet buffer and...
    inc     HL              ; ...point to the next location
    push    HL

    djnz    GetRestOfPacket

    pop     HL              ;ADD THIS
    ld      HL,packet+3     ; Calculate checksum from 128 bytes of data
    ld      B,128
    ld      A,0

........ without this pop you get a stack overflow.

Also the error handling and exit routenes are not really right, for example two lines use jp BDOS - i would normally expect that to be a CALL not JP. Having said that these don't stop it working.

I did fix these parts as well, but as i say - they don't stop it working. If i only new how to contact the author or hoe to upload to github - i would!

Coopzone

gd-99 commented 3 years ago

@Coopzone, thanks for the bug fix, solved my problem as well. Scanning the source, I thought it looked like there could be some additional error checking. It is possible to upload a zip file here. Any chance of uploading a zip file of your corrected XR.ASM and XS.ASM sources here?

GD

coopzone-dc commented 3 years ago

Hello, I don't have permissions on this original Github site, but I have cloned this repo and amended the files there. You can find them here: https://github.com/coopzone-dc/xmodem80

gd-99 commented 3 years ago

Thanks, will head over there now...