Jump to content
tschak909

New Atari BBS software.

Recommended Posts

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 by Kirkman

Share this post


Link to post
Share on other sites

 

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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


Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 by NML32

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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


>> [_]

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

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) :P

 

-Thom

Share this post


Link to post
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...