Image Map Image Map
Results 1 to 7 of 7

Thread: Looking for standalone X/Y/ZModem for non-PC x86 machine

  1. #1

    Default Looking for standalone X/Y/ZModem for non-PC x86 machine

    All --

    Iím looking for some x86 source code for what Iíll call a standalone version of an X/Y/ZModem (or any combination thereof) for use with a non-IBM/PC x86 machine. Many versions exist on Simtel and other archives but they are executable programs rather than source. The reason for the odd request is that the system that it will be used on is a Seattle Gazelle replica I built based on the one in the VCFE inventory.

    There are a few constraints which are hardware/OS imposed which make it challenging. None of the I/O ports are at PC-compatible addresses, it has no INT-callable system BIOS and the serial chips are different (8250 UAR/T versus 8251 ACIA). The system does run both MS-DOS 1.25 and 2.0 but the standard character I/O devices other than CON: (LPT and AUX) are mapped to parallel ports on one of the boards. COM1 and COM2 devices donít exist. Right now if I want to transfer a program, I use BIN2DBG to create a debug script and then rely on DEBUG to make it into a file. It generally works OK, but there's no error checking or communication retry.

    Ideally it should just take two command line parameters Ė the file name and whether itís a transmit/upload or receive/download transaction. I know that the protocol is fairly simple but I was looking to adapt something rather than starting from scratch. I found an implementation of XMODEM in Microsoft BASIC, but to work it relies on opening the COM1 device as a file.

    If anyone has something usable in their archives, please let me know. Thanks, and Happy New Year to all!


  2. #2
    Join Date
    Feb 2010
    Russia, St.Petersburg


    If your system provides something similar stdin/stdout abstraction
    and have C compiler - try to find original Chuck Forsberg's RZSZ floating around

  3. #3


    Rich, here is RZSZ1291.ZIP which contains the UNIX source. See if that helps.
    ☀☀☀ Visit Take Another Step for both computer and non-computer related discussions. ☀☀☀

    If you're looking for DS/DD or DS/HD 3Ĺ" or 5ľ" floppy disks, PM me. I've got some new, used, and factory over-labeled disks for sale.

    There is a crack in everything. That's how the light gets in. -- Leonard Cohen

  4. #4


    Alecv/Stone --

    Thanks for the links. I downloaded the code and will take a look. This system does not have a C-compiler. I could cross-compile, but I'd need to build an I/O library to match the hardware. What I do have is the original assembler tools (MASM, LINK) and Pascal. I don't know if a C-complier was ever available for the system -- I will look into it though.

    Thanks again!


  5. #5


    There are files for X/Y/Z modem some in Pascal at

    good luck,

  6. #6


    To follow up on this thread, I found something called "oldxmodem" which is the original Modem 3 from Ward Christensen subsequently modified for CP/M-86 and then for PC/DOS. It's a cool terminal/xmodem program. Unfortunately I can't get my modifications to work. Clearly I'm missing something so I was hoping that someone could spot the problem. I only edited the I/O code (changing the status bits and adding the right ACIA initialization) to match what SCP used in their ROM (looks like standard I/O polling). The symptom is that transfers aren't starting and the embedded terminal program won't echo characters.

    The physical ports on my Gazelle work (8251A-based) based on a small loopback program I wrote using DEBUG (wait for char and echo back). Again, this system does not have a PC-compatible BIOS (no INT 14h serial interface) and the AUX device is mapped to a parallel port. So, any programs have to access the hardware directly or only use Int 21h calls.

    I've attached the listings for two programs -- the first is a small terminal program I wrote based on the same code embedded within the xmodem program, also attached. I also included the original unmodified source for comparison purposes. When reading the term listing, the bytes in the left column are off by a row or two -- not sure why. This is the first time I've seen MASM do that. The XMODEM3 listing formatted properly.

    If someone has the time and can take a quick look at this, I'd really appreciate it. Getting this to work would make it much easier to get programs into and out of the system.

    Attached Files Attached Files

  7. #7



    I played around with it again and there is a note in the manual for the board about "settle time" in between I/O operations when running at 8MHz. I made some mods to the TERM program so that it would initialize in a loop which based on the instruction timing, exceeds the minimum settle time. This change resulted in the TERM program working.

    I turned my attention to XMODEM and with the initialization change, things are better but still not working. I can initiate a file transfer, but it reports a timeout error on each packet and only writes about half of the data. I'm using a MacBookPro as the second terminal, running both Serial and CoolTerm.

    So, I pulled an old IBM laptop off the shelf, booted DOS and ran Procomm and it worked! Based on this, I started testing different programs and HyperTerm does not work, but TeraTerm does. As an aside, so does Procomm running in a DOS box under XP. I think I have it covered now.


    Last edited by RichCini; January 29th, 2018 at 04:20 AM.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts