SyncDraw is an ANSI drawing program which supports:

Contact me on Synchronix if you have an questions, or requests.

Download binary for:
OSLast recompiledFile Size
Win32Wed Mar 14 2012 22:04:25494.738K
Linux (Current)Sat Sep 12 2009 05:55:30254.058K
Linux (Old versions)Sat Feb 24 2007 11:22:20238.002K
FreeBSDFri Oct 19 2012 04:33:33126.176K
NetBSDTue Jan 22 2008 03:05:12224.796K
OpenBSDMon Jan 28 2008 05:18:0099.044K
Solaris/SPARCWed Jan 11 2006 03:22:42244.135K
Apple OSXMon Jun 05 2006 19:33:15800.000K
NOTE: *nix binaries aren't statically linked due to Linux hating it.

SyncDraw CVS Commit Log

This is a log of the 20 most recent changes in the SyncDraw CVS repository.
  1. rswindell
    Fri Mar 22 2019 14:29:29 PDT

    Modified Files:
    src/uifc/uifc.h 1.93 1.94 diff

    Log Message:
    Use default calling convention (__cdecl) for DLL funcs in Borland builds.
    
    Fix age-old bug with Borland/C++Builder built executables (Windows):
    to achieve compatibility with  the default __cdecl symbol naming rules of
    Visual C++, we were using __stdcall convention for DLL functions when
    building code with Borland/C++Builder tools and using the default (__cdecl)
    convention when building with Microsoft (Visual C++) tools. Although this
    allowed symbols to be located when linking, the calling convention mismatch
    caused a stack cleanup issue that very rarely manifested itself in a bug
    (e.g. exception of some kind in sbbsctrl.exe, usually). Mismatching
    the calling conventions was unintentional (I thought the default for MSVC
    DLL functions was __stdcall) - but since the calls to MSVC-Built DLL functions
    worked 99% of the time, I didn't realize there was an underlying issue. So I
    now work-around the DLL symbol naming mismatch using a command-line option (-a)
    passed to implib in src/sbbs3/ctrl/makelibs.bat
    
    I had previously worked-around exceptions when calling MSVC DLL functions in
    sbbsctrl.exe by calling the problematic DLL functions from a timer tick handler
    rather than a user control (e.g. button) event handler. Those work-arounds can
    now be removed.
    
    The erroneous "DLLCALL" definition design pattern was replicated (copy/pasted)
    to many other projects' header files in cvs.synchro.net. In the future, we may
    want to just remove all instances of *CALL since they now serve no purpose and
    appear as useless "Kruft" (but do allow us to more-easily globally change DLL
    function calling conventions if/when necessary in the future).
  2. rswindell
    Fri Mar 22 2019 14:28:10 PDT

    Modified Files:
    src/conio/ciolib.h 1.100 1.101 diff

    Log Message:
    Use default calling convention (__cdecl) for DLL funcs in Borland builds.
    
    Fix age-old bug with Borland/C++Builder built executables (Windows):
    to achieve compatibility with  the default __cdecl symbol naming rules of
    Visual C++, we were using __stdcall convention for DLL functions when
    building code with Borland/C++Builder tools and using the default (__cdecl)
    convention when building with Microsoft (Visual C++) tools. Although this
    allowed symbols to be located when linking, the calling convention mismatch
    caused a stack cleanup issue that very rarely manifested itself in a bug
    (e.g. exception of some kind in sbbsctrl.exe, usually). Mismatching
    the calling conventions was unintentional (I thought the default for MSVC
    DLL functions was __stdcall) - but since the calls to MSVC-Built DLL functions
    worked 99% of the time, I didn't realize there was an underlying issue. So I
    now work-around the DLL symbol naming mismatch using a command-line option (-a)
    passed to implib in src/sbbs3/ctrl/makelibs.bat
    
    I had previously worked-around exceptions when calling MSVC DLL functions in
    sbbsctrl.exe by calling the problematic DLL functions from a timer tick handler
    rather than a user control (e.g. button) event handler. Those work-arounds can
    now be removed.
    
    The erroneous "DLLCALL" definition design pattern was replicated (copy/pasted)
    to many other projects' header files in cvs.synchro.net. In the future, we may
    want to just remove all instances of *CALL since they now serve no purpose and
    appear as useless "Kruft" (but do allow us to more-easily globally change DLL
    function calling conventions if/when necessary in the future).
  3. rswindell
    Fri Feb 01 2019 13:59:07 PST

    Modified Files:
    src/uifc/uifcx.c 1.36 1.37 diff

    Log Message:
    Removed strupr() - conflicts with xpdev/genwrap.*
  4. rswindell
    Fri Feb 01 2019 13:52:05 PST

    Modified Files:
    src/uifc/uifcx.c 1.35 1.36 diff

    Log Message:
    Fix Windows build after most recent changes.
  5. rswindell
    Fri Feb 01 2019 02:47:30 PST

    Modified Files:
    src/uifc/uifc32.c 1.235 1.236 diff
    src/uifc/uifcx.c 1.34 1.35 diff

    Log Message:
    Fix very unlikely, but possible, buffer overflows identified by GCC v7.3.0:
    warning: ΓÇÿ%sΓÇÖ directive writing up to 4096 bytes into a region of size 3969
  6. rswindell
    Fri Feb 01 2019 02:29:53 PST

    Modified Files:
    src/conio/ciolib.c 1.172 1.173 diff

    Log Message:
    Fix what appears to be a bug caused by a typo (* instead of &) in
    ciolib_attrfont(), caught by GCC v7.3.0:
    	warning: ΓÇÿ*ΓÇÖ in boolean context, suggest ΓÇÿ&&ΓÇÖ instead
  7. deuce
    Sat Jan 19 2019 01:26:04 PST

    Modified Files:
    src/conio/curs_cio.c 1.41 1.42 diff

    Log Message:
    Attempt to fix Linux weirdness with UIFC jsexec things.
    
    Basically, this just tracks if curses is already suspended or not and if it
    is, does not call noraw() and endwin() again.  This should fix the issue on
    Linux since well-behaved scripts will call uifc.bail() before they exit.
    
    It appears what's happening is that jsexec sets the terminal as raw, then
    ciolib is initialized at which point ncurses saves the current terminal state.
    Before exiting, jsexec sets the terminal back to cooked mode, then exits.
    atexit() ciolib calls curs_suspend() which calls endwin() which restores
    the previously saved terminal state (ie: raw).
  8. rswindell
    Mon Jan 14 2019 19:07:11 PST

    Modified Files:
    src/uifc/filepick.c 1.41 1.42 diff

    Log Message:
    Get rid of this file's local getdirname() in favor of the xpdev/dirwrap.c
    function of the same name. The dirwrap version (now) behaves identically
    when passed a pathname ending in a directory name (ending in a '/') but
    differs when passed a pathname ending in a file name (not ending in a '/').
    That should be okay.
  9. rswindell
    Sun Nov 11 2018 14:28:37 PST

    Modified Files:
    src/syncdraw/load.c 1.6 1.7 diff

    Log Message:
    Attempt to address crash (segfault) reported by ragnarok, maybe
    buffer overflow caused by long-filenames (?) :
    
    Thread 2 "SDL Main" received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 0x7ffff0be5700 (LWP 31102)]
    strlen () at ../sysdeps/x86_64/strlen.S:106
    106../sysdeps/x86_64/strlen.S: No existe el fichero o el directorio.
    (gdb) bt
    #0  strlen () at ../sysdeps/x86_64/strlen.S:106
    #1  0x00007ffff6f10da8 in _IO_vfprintf_internal (s=s@entry=0x7ffff0bc2230,
    format=<optimized out>, format@entry=0x55555558ec5c "%-12s ",
        ap=ap@entry=0x7ffff0bc2378) at vfprintf.c:1637
    #2  0x00007ffff6f31afb in __IO_vsprintf (string=0x7fffec00b0c0 "\310\a",
    format=0x55555558ec5c "%-12s ", args=0x7ffff0bc2378) at iovsprintf.c:42
    #3  0x000055555556a701 in bufprintf (buf=0x7ffff0bc2480 "", attr=31,
    fmat=0x55555558ec5c "%-12s ") at miscfunctions.c:560
    #4  0x000055555555e332 in load () at load.c:796
  10. rswindell
    Sun Oct 21 2018 00:33:56 PDT

    Modified Files:
    src/conio/cterm.c 1.244 1.245 diff

    Log Message:
    Bug-fix for PETSCII modes: disable reverse video upon carriage-return (13).
    Should this also be done for 141 (shift-CR)? I'd love to know where you
    found the document which inspired the comment ("disabled reverse") - but
    the code just wasn't doing it and it was apparent when viewing PETSCII
    art and comparing the behavior with other emulators.
  11. deuce
    Sat Oct 20 2018 21:59:12 PDT

    Modified Files:
    src/conio/cterm.c 1.243 1.244 diff

    Log Message:
    Add missing brace.
  12. deuce
    Sat Oct 20 2018 21:55:45 PDT

    Modified Files:
    src/conio/cterm.c 1.242 1.243 diff

    Log Message:
    Translate C128 colour codes to CGA palette.
    This may mess up colour hacks in other places, but should fix C128 colours
    in the terminal.
  13. deuce
    Sat Oct 20 2018 10:22:07 PDT

    Modified Files:
    src/conio/vidmodes.c 1.28 1.29 diff

    Log Message:
    Commodore 128 used a CGA monitor.  It therefore used CGA colours.
  14. rswindell
    Sat Oct 20 2018 04:15:56 PDT

    Modified Files:
    src/conio/vidmodes.c 1.27 1.28 diff

    Log Message:
    Change the C128 screen modes (C128_40X25 and C128_80x25) to use the C64
    palette. I can only assume this was a typo? I'm also guessing this is the
    same change that Payton Byrd made in his fork of SyncTERM (he erroneously
    called 2.0), which I haven't been able to locate on github (anyone?). This
    change makes SyncTERM (in C128 modes) appear more consistent with CGTerm.
    
    With this change, I now see no difference between the C64_40X25 screen mode
    and the C128_40X25 screen mode. (Deuce?)
    
    I also have questions about the changes in some of the colors between
    40 and 80 columns modes expressed here (but not observed with CGTerm):
    https://www.commodore.ca/manuals/128_system_guide/app-i.htm
    (e.g. 129 is supposedly green in 40 column mode and dark purple in 80 cols).
    see also: 149, 151, and 159 - if this is true, then another palette
    is needed for C128-80 mode but doesn't explain CGTerm's behavior
    (the colors are the same in 40 and 80 column modes).
    
    Also, the C64 palette changed pretty drastically since SyncTERM 1.0 where
    the colors weres dull/muted and are now bright. And the initial attribute is 
    Blue on Grey (not black) - that wasn't the case with v1.0.
  15. rswindell
    Sat Jul 28 2018 18:00:04 PDT

    Modified Files:
    src/uifc/uifc.h 1.92 1.93 diff

    Log Message:
    Increase the maximum number of menu options from 10,000 to 100,000 to
    accommodate configurations of more than 10,000 things (e.g. sub-boards)
    in a single menu (e.g. message group).
    This brings this value over the 16-bit thresholds (0x7ffff and 0xffff)
    where problems could happen if short's/int16's are used to capture the
    return value of uifc.list(), but that's unlikely happening anywhere. Still
    a good idea to make sure if you're using this library/headers.
  16. rswindell
    Mon Jul 23 2018 18:13:01 PDT

    Modified Files:
    src/uifc/uifc.c 1.30 1.31 diff
    src/uifc/uifctest.c 1.7 1.8 diff

    Log Message:
    The great Copyright year update and (mostly) removal of 2018:
    Most of the copyright years in the source code were misleading (the date of
    most recent publish was actually later) and all were unnecessary. I've been
    removing copyright years piecemeal, for a long time, but I decided it was time
    to just perform a bulk search and (mostly) replace. In some cases, I left
    old copyright years on files that either are not used (and soon to be removed)
    or obsolete and unlikely to ever be touched again (e.g. Win9x FOSSIL VXD). Some
    of the runtime binaries still contain copyright years and those were updated to
    2018.
  17. rswindell
    Mon Jul 23 2018 18:10:58 PDT

    Modified Files:
    src/conio/ansi_cio.c 1.83 1.84 diff
    src/conio/ansi_cio.h 1.10 1.11 diff
    src/conio/curs_cio.c 1.40 1.41 diff
    src/conio/curs_cio.h 1.16 1.17 diff
    src/conio/curs_fix.h 1.2 1.3 diff
    src/conio/mouse.c 1.44 1.45 diff
    src/conio/vidmodes.h 1.28 1.29 diff
    src/conio/win32cio.c 1.107 1.108 diff
    src/conio/win32cio.h 1.14 1.15 diff
    src/conio/x_cio.c 1.49 1.50 diff
    src/conio/x_cio.h 1.24 1.25 diff

    Log Message:
    The great Copyright year update and (mostly) removal of 2018:
    Most of the copyright years in the source code were misleading (the date of
    most recent publish was actually later) and all were unnecessary. I've been
    removing copyright years piecemeal, for a long time, but I decided it was time
    to just perform a bulk search and (mostly) replace. In some cases, I left
    old copyright years on files that either are not used (and soon to be removed)
    or obsolete and unlikely to ever be touched again (e.g. Win9x FOSSIL VXD). Some
    of the runtime binaries still contain copyright years and those were updated to
    2018.
  18. deuce
    Tue Apr 17 2018 23:44:48 PDT

    Modified Files:
    src/conio/ciolib.c 1.171 1.172 diff
    src/conio/ciolib.h 1.99 1.100 diff

    Log Message:
    Have save/restorescreen() save and restore the flags and fonts as well.
  19. deuce
    Tue Apr 17 2018 23:33:39 PDT

    Modified Files:
    src/conio/bitmap_con.c 1.136 1.137 diff

    Log Message:
    Handle default fonts when setting vmem.
  20. deuce
    Tue Apr 17 2018 23:33:16 PDT

    Modified Files:
    src/conio/cterm.c 1.241 1.242 diff

    Log Message:
    Copy the current font one into the CTerm altfont array during cterm_init()
    
    This should fix the issue with non-CP437 fonts reported by Kirkman.