Jump to content
IGNORED

After Hours BBS Program


9640News

Recommended Posts

3 minutes ago, wolhess said:

I'm use the tipi Telnet program on my TI and the same behavior occure. So I think it has nothing to do with windows.

 

 

That makes me wonder, unless something has changed, what the difference is between my Geneve setup and MyTerm client and the TI-99/4A setup client and AfterHours may be.

 

Beery

Link to comment
Share on other sites

So now I tried the login from my ipad with iterminal ssh.

 

The same things happens. After a logout (pressing G from main menu) or fctn= from sysop or after timeout the BBS

shows the login screen again.

 

I will test this with the files you sent before yesterday, I didn't remember that this happens before today.

Link to comment
Share on other sites

I have tested the program version from Tuesday and it happens the same.

 

After logout with G from the main menu the BBS shows the login screen again.

 

So after a BBS session finished the BBS needs 6 minutes to accept the next caller.

Link to comment
Share on other sites

12 minutes ago, wolhess said:

I have tested the program version from Tuesday and it happens the same.

 

After logout with G from the main menu the BBS shows the login screen again.

 

So after a BBS session finished the BBS needs 6 minutes to accept the next caller.

OK, I will increase the timer setting.

 

Just a FYI, you can press the L key (case does not matter) for local login if you desire.

 

Beery

 

  • Like 1
Link to comment
Share on other sites

6 minutes ago, BeeryMiller said:

Just a FYI, you can press the L key (case does not matter) for local login if you desire

Right now I tried the L key from the waiting sysop screen. No login! 

 

It is working, I have to press a longer time the L key!! Thank you!

Link to comment
Share on other sites

8 minutes ago, BeeryMiller said:

OK, I will increase the timer setting.

 

Just a FYI, you can press the L key (case does not matter) for local login if you desire.

 

Beery

 

With the local login there is no second login loop after logout!

Link to comment
Share on other sites

8 minutes ago, wolhess said:

Right now I tried the L key from the waiting sysop screen. No login! 

 

It is working, I have to press a longer time the L key!! Thank you!

I think that was in some of the TIPI docs I wrote.  There is also a G at that same prompt that exits AfterHours and returns back to the Title Screen.  There is about a 3 to 5 second loop involved right there which is why you have to hold the key sometimes a bit longer waiting for it to pass through that keyscan loop.  That was required to give the CRON job enough time to test the internet connection should it need to restart the TIPI services.

 

Beery

  • Like 1
Link to comment
Share on other sites

I think that was in some of the TIPI docs I wrote.  There is also a G at that same prompt that exits AfterHours and returns back to the Title Screen.  There is about a 3 to 5 second loop involved right there which is why you have to hold the key sometimes a bit longer waiting for it to pass through that keyscan loop.  That was required to give the CRON job enough time to test the internet connection should it need to restart the TIPI services.
 
Beery
You might want to make the screen change sometime. The current waiting screen is very static.. burning in

Sent from my LM-G820 using Tapatalk

Link to comment
Share on other sites

It's not going to assemble with the TI assembler as I used some long label names that the TI assembler will choke on.  Rather, it will need a Geneve with GenASM.  If you have MAME setup to run a Geneve system, then it should be rather easy.

 

If you do, and/or want to setup a system and want to go that route, let me know.  I can get you setup pretty quickly.

 

 

Link to comment
Share on other sites

58 minutes ago, arcadeshopper said:

You might want to make the screen change sometime. The current waiting screen is very static.. burning in

Sent from my LM-G820 using Tapatalk
 

I have my system setup on a very old TI 13" monitor I pulled out of the closet this past weekend with a sidecar TIPI and console. Monitor is generally off.  When I walk into my office, I just take a look at the sidecar TIPI.  If the light is solid, it means it thinks there is a telnet connection and I will turn on my monitor.  If it a periodic blink, about once every 4 to 5 seconds, it means it is just sitting there waiting for a call.  If no light blinking, then the board crashed which is what I was experiencing early on until Matt updated the TIPI services software to be more robust.

 

If someone recalls what can be written to the video register to 'blank' the screen and then what is written to restore, I could possibly just blank the screen after every disconnect and 'unblank' the screen afterwards.  However, that would remove the "Status" display indicating what command the TIPI is doing while waiting for the call.

 

Beery

Link to comment
Share on other sites

I have my system setup on a very old TI 13" monitor I pulled out of the closet this past weekend with a sidecar TIPI and console. Monitor is generally off.  When I walk into my office, I just take a look at the sidecar TIPI.  If the light is solid, it means it thinks there is a telnet connection and I will turn on my monitor.  If it a periodic blink, about once every 4 to 5 seconds, it means it is just sitting there waiting for a call.  If no light blinking, then the board crashed which is what I was experiencing early on until Matt updated the TIPI services software to be more robust.
 
If someone recalls what can be written to the video register to 'blank' the screen and then what is written to restore, I could possibly just blank the screen after every disconnect and 'unblank' the screen afterwards.  However, that would remove the "Status" display indicating what command the TIPI is doing while waiting for the call.
 
Beery
Doesn't need to blank could change the colors like they did in the original version or move the text at each cycle maybe have it change location

Sent from my LM-G820 using Tapatalk

Link to comment
Share on other sites

1 hour ago, BeeryMiller said:

If you do, and/or want to setup a system and want to go that route, let me know.  I can get you setup pretty quickly.

I will think about it. I tried several times to install mame without success. Only the Gamebase is working, with mess I think.

but anyway I will trie it again.

Link to comment
Share on other sites

48 minutes ago, wolhess said:

I will think about it. I tried several times to install mame without success. Only the Gamebase is working, with mess I think.

but anyway I will trie it again.

What I have done in the past was just copy my entire MAME folder.  Then, it was just a matter of executing the batch file that loaded up the system.  All images, everything with it ready to go.

 

Beery

 

  • Like 1
Link to comment
Share on other sites

Wolfgang,

 

If you go to http://9640news.ddns.net:8080/ you will see the PDF's for the complete GenProg package.

 

Also, I found a thread where I had previously posted a copy of MAME I was using.  It is not the latest MAME version since it was a 2019 post, however, inside is a hard drive image called Bootdisk1.hd

 

You may want to substitute your current hard drive image (rename the files) and look at that image.  It should have a bunch of programs on it.  At the MDOS prompt, you should be able to type ASM and it should find the program in the path and give you a response.

 

Typically, I name the batch file for the assembly process "ASS" for ASSemble.  I've got two batch files.  One is "ASS", and the other is "ASS-EA".  You should be able to use the "ASS-EA" as that is setup to save an ~24K image set of files for the TI-99/4A without using cartridge memory.  If you see your third file is being saved as more than 8100 bytes, then you are getting close to the cutoff boundary.

 

On the ZIP file for the AfterHours BBS, you would only want the files in the Source Code directory to be copied to a DSK image file.  Then, MAME should reference that DSK image file, and then copy those files to a new directory on the hard drive image.  The files in the source code directory already have TIFILES headers on them, so I am not sure how a program like TIDIR will handle copying those to a DSK image.  My only concern here is that they do not get an extra TIFILES header when you copy them to a DSK image.

 

The code that is there has the new user signup issue when it checks for new messages.  That is just a matter of commenting out a couple of lines that I can post a note on how/where to do it.

 

If you are running my hard drive image, you should be able to type MW to get My-Word, the 80 column editor.  Typing GPL, will get you to the TI-99/4A what we call GPL mode of things.

 

There are a number of programs in the E:\MDOS1. directory that should be on the drive.

 

And, if you want, there is no reason you couldn't mount my Bootdisk1.hd image as a second hard drive image, and copy only the files you want from it to your primary image Michael helped you setup.  I am sure my AUTOEXEC file has more involved that the base case setup you are using now.

 

 

 

 

 

 

 

  • Thanks 1
Link to comment
Share on other sites

ok after talking to Matt he says "He shouldn't have close the server socket on every 'connection'... he was doing that as part of diagnosing why he wasn't getting any incoming connections after his PI gave up on network"

 

this is regarding the 'false login' after you disconnect from the BBS it thinks a new connection is there and trys to login.. in the logs i see:

 

accepting...
2020-05-22 10:47:06,142 TiSocket    : INFO     accept conn: <socket._socketobject object at 0x76085960>
2020-05-22 10:47:06,142 TiSocket    : INFO     connection socket given handleId 
 
false "bad connection":
2020-05-22 10:48:17,251 TiSocket    : INFO     failed to bind socket: 0
Traceback (most recent call last):
  File "/home/tipi/tipi/services/TiSocket.py", line 177, in handleBind
    sock.bind(server)
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 98] Address already in use
2020-05-22 10:48:17,252 TiSocket    : INFO     closing socket
2020-05-22 10:48:17,257 TiSocket    : INFO     bind socket(0) *:9918
2020-05-22 10:48:17,257 TiSocket    : INFO     bind socket(0) *:9918
2020-05-22 10:48:17,258 TiSocket    : INFO     failed to bind socket: 0
Traceback (most recent call last):
  File "/home/tipi/tipi/services/TiSocket.py", line 177, in handleBind
    sock.bind(server)
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 98] Address already in use
2020-05-22 10:48:17,259 TiSocket    : INFO     closing socket
2020-05-22 10:48:21,247 TiSocket    : INFO     handleAccept
2020-05-22 10:48:21,248 TiSocket    : ERROR    no socket bound with id: 0
2020-05-22 10:48:21,256 ClockFile   : INFO     clock mode:corcomp
2020-05-22 10:48:21,276 ClockFile   : INFO     close special? PI.CLOCK
2020-05-22 10:48:21,314 TiSocket    : INFO     No socket open for handleId 255
2020-05-22 10:48:21,317 TiSocket    : INFO     No socket open for handleId 255
Link to comment
Share on other sites

I just checked, my MyTerm TIPI program does a clean exit without the BBS trying to log back in with the existing code.

 

When a user logs out, I do some cleanup and CLOSE the socket.  I then do a short delay loop, write some stuff to the screen, and then drop back to near the beginning of the program at MSAT3.  Is the issue because I initiated a socket CLOSE command to break the  connection?  Should I have used an UNBIND instead?  I'm trying to follow what the log is doing versus the code and what is suggested in the above post.

 

I had to add some LIMI 2 instructions in there as between the interrupt clock and some of the video routines, there was an issue if I didn't have them there.

 

MSAT3
       LI   R1,8
MSAT1  LI   R0,>FFFF

MSAT2  DEC  R0
       JNE  MSAT2
       DEC  R1
       JNE  MSAT1
       CLR  @REBNOW

       BLWP @SERVU       UNBIND THE SERVER

       LI   R1,TIPIUNBIND
       BL   @UPDATESTATUS

       LI   R1,8
MSQT1  LI   R0,>FFFF

MSQT2  DEC  R0
       JNE  MSQT2
       DEC  R1
       JNE  MSQT1
       CLR  @REBNOW     Clear reboot flag

       BLWP @SERVB       BIND SERVER ON INTERFACE AND PORT ADDRESS

       MOV  R0,R0
       JEQ  MSET2C       

       LI   R1,TIPIBIND
       BL   @UPDATESTATUS

****************************************
       LI   R1,TIPICLOCK

       BL   @UPDATESTATUS

MSET3
       BLWP @SERVB      Bind server again

       MOV  R0,R0
       JEQ  MSET3

       LI   R1,TIPIBIND
       BL   @UPDATESTATUS

       LI   R1,5
MSET7A LI   R2,>FFFF
MSET6A DEC  R2
       JNE  MSET6A
       DEC  R1
       JNE  MSET7A

       CLR  @REBNOW
       CLR  @NOWAIT    This clears a flag so the interrupt timer doesn't process a program reset.
       CLR  R0
       LIMI 2            
       BLWP @SERVA
       LIMI 2            
       MOV  R0,R0
       JNE  MSET3A

       LI   R1,TESTKEYS
       BL   @UPDATESTATUS

       CLR  R0
       CLR  R1
       MOVB R1,@KEYVAL
       BLWP @KSCAN

       LIMI 2            4.26.2020

       MOVB @KEYVAL,R1

       CI   R1,'L'*256
       JEQ  MSET4A
       CI   R1,'l'*256
       JEQ  MSET4A

       CI   R1,'G'*256
       JEQ  EXITME
       CI   R1,'g'*256
       JEQ  EXITME

       JMP  MSET3

MSET4A
       LIMI 2
       LI   R1,TESTKEYS
       BL   @UPDATESTATUS

       JMP  MSET4AA

EXITME BLWP @0

MSET3A
       LI   R1,TIPIACCEPT
       BL   @UPDATESTATUS
 

Link to comment
Share on other sites

I provided some TidBit TI Extended BASIC code... 

 

From the assembly above, I can't tell what happens after the first bind attempt...  my best guess is you are binding when you have already bound... which would mean the log is telling the truth... 

 

Are you sure the false connections aren't people queued up to connect? Several connections can be established, waiting for an accept to unblock them. 

Link to comment
Share on other sites

I provided some TidBit TI Extended BASIC code... 
 
From the assembly above, I can't tell what happens after the first bind attempt...  my best guess is you are binding when you have already bound... which would mean the log is telling the truth... 
 
Are you sure the false connections aren't people queued up to connect? Several connections can be established, waiting for an accept to unblock them. 
At least in my testing it's just me coming in from the BBS dialout so not multi connection

Sent from my LM-G820 using Tapatalk

Link to comment
Share on other sites

it is so repeatable with with Windows Telnet, it would not be multi connection unless there was something unique about Windows.  It doesn't happen from my Geneve when I use MyTerm to connect which is leaving me a bit confused.  I haven't tested Matt's telnet client, but I believe both Greg and Wolfgang report the problem with it. 

 

It has me a bit puzzled.  I extended the delay after the CLOSE connection, but no luck there.  I may look at extending the time between the two BIND's or perhaps jumping over the second  BIND to see what happens before I go into the loop.  

 

Beery

 

Edited by BeeryMiller
Link to comment
Share on other sites

14 minutes ago, BeeryMiller said:

it is so repeatable with with Windows Telnet, it would not be multi connection unless there was something unique about Windows.  It doesn't happen from my Geneve when I use MyTerm to connect which is leaving me a bit confused.  I haven't tested Matt's telnet client, but I believe both Greg and Wolfgang report the problem with it. 

 

It has me a bit puzzled.  I extended the delay after the CLOSE connection, but no luck there.  I may look at extending the time between the two BIND's or perhaps jumping over the second  BIND to see what happens before I go into the loop.  

 

Beery

 

You should not do a second bind unless you know the first one has failed and is closed. Connection hangups from the outside world do not require a new bind... the server socket is capable of handling multiple accepts.

 

Link to comment
Share on other sites

https://github.com/jedimatt42/tipi/wiki/PI.TCP

 

BEGIN:
    ON ERROR BINDERR
    OPEN #1:"PI.TCP=*:8080.BIND"
    PRINT "Bound server port 8080"
POLCON:
    ON ERROR SOCERR
    INPUT #1:HANDLE
    IF HANDLE=255 THEN ACCERR
    IF HANDLE<>0 THEN GETCON
    CALL SOUND(1000,40000,30)
    GOTO POLCON
GETCON:
    OPEN #2:"PI.TCP=*:8080."&STR$(HANDLE)
    PRINT #2:"Hello, I am a TI-99/4A"&CHR$(13)&CHR$(10)
    PRINT #2:"Who are you? "
GETNAME:
    LINPUT #2:LINE$
    IF LINE$="" THEN GETNAME
    PRINT "Login from: "&LINE$
    PRINT #2:"Hello "&LINE$&CHR$(13)&CHR$(10)
    CLOSE #2
    GOTO POLCON
ACCERR:
    PRINT "Accept Error"
SOCERR:
    PRINT "Closing port"
    ON ERROR SOCE2
    CLOSE #1
SOCE2:
    CALL SOUND(1000,40000,30)
    GOTO BEGIN
BINDERR:
    CALL SOUND(3000,40000,30)
    GOTO BEGIN

 

 

You can see in GETNAME, we have a live connection, then we close connection, which is what you should do when the user tells you to hangup, or you detect that they have been idle too long... 

It then goes to POLCON, which polls for a connection... by doing an accept... ( in the basic interface, reading from the server socket performs accept and gives you a incoming client connection...

 

If the accept fails 255, then the server socket is toast, and we jump down to ACCERR ( accept error ) which closes the server socket.. then waits a second, and goes back up to BEGIN

BEGIN binds the server socket and starts the POLCON over again.

 

When I run this, on the PI log side, you'll see that rebinding often fails... but it will then succeed... if it fails, this code goes to BINDERR, which waits 3 seconds before trying to bind again.

 

Link to comment
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...