tschak909 Posted September 12, 2014 Author Share Posted September 12, 2014 Albert: Yes, Use this: http://syncterm.bbsdev.net/ It is the end-all-be-all for BBS terminal emulators, even does ATASCII and PETSCII emulation. -Thom Quote Link to comment Share on other sites More sharing options...
Kirkman Posted September 13, 2014 Share Posted September 13, 2014 (edited) Albert: Yes, Use this: http://syncterm.bbsdev.net/ It is the end-all-be-all for BBS terminal emulators, even does ATASCII and PETSCII emulation. -Thom I will second that. SyncTerm is awesome. SyncTerm runs on the Mac, with one important caveat: it does NOT have copy-and-paste functionality. This is a longstanding annoyance for Mac users like me, but the software's author doesn't have access to a Mac, and can't add the feature. Apple changed some function call (or something) back around Leopard or Snow Leopard, and SyncTerm hasn't had copy/paste since then. --Josh Edited September 13, 2014 by Kirkman Quote Link to comment Share on other sites More sharing options...
Albert Posted September 13, 2014 Share Posted September 13, 2014 I will second that. SyncTerm is awesome. SyncTerm runs on the Mac, with one important caveat: it does NOT have copy-and-paste functionality. This is a longstanding annoyance for Mac users like me, but the software's author doesn't have access to a Mac, and can't add the feature. Apple changed some function call (or something) back around Leopard or Snow Leopard, and SyncTerm hasn't had copy/paste since then. --Josh Geesh, I should grab the source and fix it. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 13, 2014 Author Share Posted September 13, 2014 Very productive day today, the following message board bits implemented in preliminary form: * next board * previous board * header scan * jump to board (choose specific board) and am currently implementing a basic search. -Thom Quote Link to comment Share on other sites More sharing options...
idavis Posted September 13, 2014 Share Posted September 13, 2014 Thom, Do you want me to contact you before I try using putty again? I don't want to lock up the bbs inadvertently. Or would you rather I just wait till you get that code sorted out? It's not a problem, just don't want to force you to have to start using a decaf. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 13, 2014 Author Share Posted September 13, 2014 nah, it's no big deal, if it's hung, i'll kick it. I say this, because I have no idea when I will be able to solve that problem, even in a preliminary way.. I really am stumbling along writing this thing. -Thom Quote Link to comment Share on other sites More sharing options...
idavis Posted September 13, 2014 Share Posted September 13, 2014 nah, it's no big deal, if it's hung, i'll kick it. I say this, because I have no idea when I will be able to solve that problem, even in a preliminary way.. I really am stumbling along writing this thing. -Thom Well, don't forget the [C]hat with sysop feature! I will give you a heads up before attempting the putty connection again as it isn't a big deal. Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 13, 2014 Author Share Posted September 13, 2014 Gotcha. I seem to have hit that point where I need to launch with X, now, as I woke up to a memory allocation error, in the middle of a session. These are the kinds of things that will take months to debug. -Thom Quote Link to comment Share on other sites More sharing options...
Albert Posted September 13, 2014 Share Posted September 13, 2014 Gotcha. I seem to have hit that point where I need to launch with X, now, as I woke up to a memory allocation error, in the middle of a session. These are the kinds of things that will take months to debug. -Thom I think I was the one logged in when it crashed. Installed Syncterm so I could use ATASCII. So much better. ..Al Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 13, 2014 Author Share Posted September 13, 2014 BF2K+ and I had a discussion as he wanted to be able to look @ and build my code: DEVELOPMENT INSTRUCTIONS (PRELIMINARY): I will paste my reply into the main thread, as this is useful to others. As for a dev environment, you need: * CC65 installed and in path. * gnu make * some editor, doesn't matter what, I use emacs. Ironically as hell, since my emulator is Altirra, I do the dev on a tiny eeePC 1005HA, which I've installed Windows 7 onto. I subsequently installed cygwin, and emacs, and all the dev tools. (at least make). I also installed all the git pieces to retrieve the code. I then modified my PATH, to include CC65's bin directory, and added an environment variable CC65 to point to the CC65 home directory. Once this is done, you can use git to fetch the code: $ git clone https://github.com/tschak909/ataribbs.git I do this off $HOME, which is in C:\cygwin\home from Windows' perspective. you can then make the whole monstrosity by simply cd'ing into ataribbs, and typing $ make If everything is ok, you'll find the binaries inside each folder, named .com. and a bbslib library hanging out in lib/ You can then go into Altirra -> Disks, and mount a folder as a SpartaDOS directory, find the C:\cygwin\home\ataribbs folder (or wherever you put it), and mount that as D2: I have a 512-bps SIDE 2 partition mounted as D1, with an Ultimate1MB installed, and using its PBI driver.. so basically to test, I copy whatever I am testing from D2:>absolute_path>bla.com into D1: and then run it. BBSCONF needs to be run first, then the BBS engine can be run. To set up modem emulation, System->Serial Ports, enable telnet emulation, disable serial port throttling, set DTE to 115200, disable outbound connections, enable inbound connections, set an appropriate port. I suspect potential bugs in bbsconf as some things have changed, if the modem emulation isn't working as expected, then use this cnf, if it works, then I definitely need to fix something i broke. http://96.226.245.101/work/BBS.CNF Watch out for falling rocks. -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 13, 2014 Author Share Posted September 13, 2014 I think I was the one logged in when it crashed. Installed Syncterm so I could use ATASCII. So much better. ..Al Isn't it? Sorry, yes, the message base is an unstable area, as I am trying to add code and squash bugs.. I'm about to pull back so I can squish much needed bugs. -Thom Quote Link to comment Share on other sites More sharing options...
Albert Posted September 13, 2014 Share Posted September 13, 2014 So, I pulled down the Syncterm source and tried to build it. Unfortunately, it looks like there are many compatibility issues with the source and the Xcode 6 libraries I have installed, and I don't have time to try and get a clean version built. I may try building on another Mac (one without Xcode 6) and see if that goes more smoothly. I did track down the code that does the copy/paste, in /src/conio/sdl_con.c: Copy: case SDL_USEREVENT_COPY: #if (defined(__MACH__) && defined(__APPLE__)) && defined(USE_SCRAP_MANAGER) if(!sdl_using_x11) { ScrapRef scrap; sdl.mutexP(sdl_copybuf_mutex); if(sdl_copybuf!=NULL) { if(!ClearCurrentScrap()) { /* purge the current contents of the scrap. */ if(!GetCurrentScrap(&scrap)) { /* obtain a reference to the current scrap. */ PutScrapFlavor(scrap, kScrapFlavorTypeText, /* kScrapFlavorMaskTranslated */ kScrapFlavorMaskNone, strlen(sdl_copybuf), sdl_copybuf); /* write the data to the scrap */ } } } FREE_AND_NULL(sdl_copybuf); sdl.mutexV(sdl_copybuf_mutex); break; } #endif Paste: case SDL_USEREVENT_PASTE: #if (defined(__MACH__) && defined(__APPLE__)) && defined(USE_SCRAP_MANAGER) if(!sdl_using_x11) { ScrapRef scrap; UInt32 fl; Size scraplen; FREE_AND_NULL(sdl_pastebuf); if(!GetCurrentScrap(&scrap)) { /* obtain a reference to the current scrap. */ if(!GetScrapFlavorFlags(scrap, kScrapFlavorTypeText, &fl) /* && (fl & kScrapFlavorMaskTranslated) */) { if(!GetScrapFlavorSize(scrap, kScrapFlavorTypeText, &scraplen)) { sdl_pastebuf=(char *)malloc(scraplen+1); if(sdl_pastebuf!=NULL) { if(GetScrapFlavorData(scrap, kScrapFlavorTypeText, &scraplen, sdl_pastebuf)) { sdl_pastebuf[scraplen]=0; FREE_AND_NULL(sdl_pastebuf); } } } } } sdl.SemPost(sdl_pastebuf_set); sdl.SemWait(sdl_pastebuf_copied); break; } #endif This code is using the Scrap Manager, which was deprecated in 10.5. This was replaced by the Pasteboard. I found a chart in Apple's documentation that shows a mapping between the Scrapboard and Pasteboard functions: https://developer.apple.com/legacy/library/documentation/Carbon/Conceptual/Pasteboard_Prog_Guide/paste_scrap/paste_scrap.html#//apple_ref/doc/uid/TP40001439-CH203-DontLinkElementID_24 It looks like there's a 1:1 mapping of the functions, so it should be pretty straightforward to update the code. Also, the app doesn't respond to Cmd-Q to quit, so it would be nice to fix that as well. ..Al Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 14, 2014 Author Share Posted September 14, 2014 Nice, good catch! That would be great for me as well, as I use the Mac OS X version too. -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 14, 2014 Author Share Posted September 14, 2014 I've implemented XON/XOFF flow control in the latest build, just in case somebody decided to use it. Message reading is somewhat implemented (Right now, always shows first message on message board), i'm debugging and working through stuff... We've now reached the point where BBS will NOT work correctly unless started with X. -Thom Quote Link to comment Share on other sites More sharing options...
NML32 Posted September 14, 2014 Share Posted September 14, 2014 Wonder if anyone could help me figure out why I get errors when trying to compile. This is new to me so I may have missed a step in setting the files or environment up. I'm running Win7 32bit. I installed CC65 for windows, Make-3.81, cygwin, Git Shell. Windiows environment: Varible: CC65_Home Value: C:\Program Files\cc65 Appended to Windows Path: C:\Program Files\cc65\bin;C:\Program Files\GnuWin32\bin;C:\Cygwin\bin; Error I'm getting when I run make: $ make atari - common/config.c additional file specs ignored cc65.exe: Unknown option: --dep-target make[2]: *** [../libwrk/atari/config.o] Error 255 make[1]: *** [atari] Error 2 make: *** [all] Error 2 Thanks Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 14, 2014 Author Share Posted September 14, 2014 That's strange --dep-target is an option that cc65.exe supports. Do you see it in the list when you run cc65 -? -Thom Quote Link to comment Share on other sites More sharing options...
NML32 Posted September 14, 2014 Share Posted September 14, 2014 (edited) That's strange --dep-target is an option that cc65.exe supports. Do you see it in the list when you run cc65 -? -Thom Not in the list. Edit: Going to re-install. Edited September 14, 2014 by NML32 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 14, 2014 Author Share Posted September 14, 2014 I've decided for now, to implement a line based editor. Just enough to get things running. I'll build a full screen editor once the UI functions are more than just ugly ass hacks. This decision was mostly based on the simple fact that for now, I am doing line counting by new lines. This became a problem, because with the MSGTEST harness, I write out whole paragraphs without breaking a line, causing the page counter to basically not fire. I can basically revise the counter to trip on a column wrap, but this would make it hard coded to 40 columns for now, as I need to implement a more intelligent terminal API (and for the record, terminal.c is quite literally 30% of the code in BB65, and roughly 35% of the object code! It's a biggie. To refresh, terminal.c is where all my sending and receiving from the serial port logic sits. So I'm soldiering on... Also, Hi Triads! Just saw you log on. What did you think? -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 14, 2014 Author Share Posted September 14, 2014 A new status video showing the message area, and it's current functionality: -Thom Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted September 14, 2014 Share Posted September 14, 2014 Looking quite splendid. Quote Link to comment Share on other sites More sharing options...
idavis Posted September 14, 2014 Share Posted September 14, 2014 Thom, I think it just locked up. I went through the bulletins and into the menu. Got the User list twice, and when to click G. It's hung up. I will let it sit here for a while and see if it picks back up. This is where it's sitting and won't accept any input. _____ ___|_|___ _____ ___ ___ _ _| | .'| | | | -_| | | ||_|_|_|__,|_|_|_|_|_|_|___|_|_|___| User List [G] Goodbye>> [_] Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 14, 2014 Author Share Posted September 14, 2014 It's waiting for a call. Weird. There are tons of bugs to be sure... -Thom Quote Link to comment Share on other sites More sharing options...
Kirkman Posted September 14, 2014 Share Posted September 14, 2014 This code is using the Scrap Manager, which was deprecated in 10.5. This was replaced by the Pasteboard. I found a chart in Apple's documentation that shows a mapping between the Scrapboard and Pasteboard functions: https://developer.apple.com/legacy/library/documentation/Carbon/Conceptual/Pasteboard_Prog_Guide/paste_scrap/paste_scrap.html#//apple_ref/doc/uid/TP40001439-CH203-DontLinkElementID_24 It looks like there's a 1:1 mapping of the functions, so it should be pretty straightforward to update the code. Also, the app doesn't respond to Cmd-Q to quit, so it would be nice to fix that as well. Sounds awesome. If you get that ironed out, I would be a very, very happy camper. I've been using it without copy/paste for years now. --Josh Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 15, 2014 Author Share Posted September 15, 2014 Working on LEDIT... Brain-dead today.. ugh.. The trick with the line-editor, or any of the editors, for that matter, is to do so, in a way that doesn't require a massive chunk of memory to be allocated. This is what I'm thinking: A temporary file, is created, LEDIT.TMP, which contains data arranged as struct: typedef struct { int lineNo; char line[LEDIT_LINE_SIZE]; // Yes, I know.. I am just trying to get something WORKING, first! } LineEditTempRecord; This gets written into the temp file, meanwhile, in RAM, we have a doubly linked list: typedef struct { int lineno_prev; int lineno_next; } LineEditLinkage; // 4 bytes per record. These are NOT pointers, because I AM NOT KEEPING THEM IN RAM. There is then a pointer to an array of LineEditLinkage pointers. By default, I'll allocate 16 lines (48 bytes), additional entries cause a realloc(); Insertions do a write of the LineEditTempRecord to the file, and add another entry into the linked list. Deletions cause a removal of an entry in LineTempRecord, nothing happens to the temp file. Essentially it means the structure will have to be rebuilt when items are inserted or deleted in mid list. I dunno, could somebody who has actually written a text editor comment here, on something that could rely on using as little RAM as possible, while keeping most of it out on disk? I really am an idiot today... -Thom Quote Link to comment Share on other sites More sharing options...
tschak909 Posted September 15, 2014 Author Share Posted September 15, 2014 In preparation for the line editor i need to write, I amended the input fields to be able to properly deal with left and right arrow keys, so now all input fields can handle left/right (please do not do up/down, I need to do some additional plumbing to filter those cleanly.) https://github.com/tschak909/ataribbs/commit/7ffa466f049d46950e63ac488e78bfd2f2bd0746 (note the hacky state machine for the VT100 parsing) -Thom Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.