Jump to content
IGNORED

AtariLink ][ questions


rickcollette

Recommended Posts

I was able to get my 800XL w/512MB and IDE 2.0+ working with P:R:Connection + WiModem32
  - tested with 850 Express, ICE-T

I went through the configuration of Link ][, ran BEGIN, selected to run the BBS.

 

Now it just prints "AT" on the screen over and over.

In LINK20X.BAS - It looks like it around this line:

 

781 BAUD=DBAUD:TRN=O:GOSUB OPM:ON PEEK(1771) GOTO 782:? #C2;"AT";:INPUT #C2,L$:IF L$<>"0" THEN ? L$:GOTO 781


Anyone with experience in retro fitting these types of things have any ideas of what I can look at here?

As a second ask: Anyone have a good config.sys for sparta x for this setup?

@Pab tagging you in case you have a few free moments.

Link to comment
Share on other sites

Rick - It sounds like, from the AT command repeating the modem is not opening. I have the code for AtariLink and will look at the open/close modem commands set in the call wait routine as it may need an additional string to prep the modem for auto answer, and remove the modem feedback. Example:

 

ATE0 S4=24 S2=255 S7=5 S37=10

 

As well as the appropriate gosub to the CLM and OPM

Link to comment
Share on other sites

Correct but after the ATE0 - not really character that this editor provides.. The CONTROL M Char is the needed after ATE0 and of course you are printing to #2;

 

? #2;"ATE0(atascii ctl-m) S4=24 S2=255 S7=5 S37=10"

 

image.thumb.png.93c13549f779e89650a007e1133af5a9.png

Edited by Amis
Link to comment
Share on other sites

Understood - I updated the lines in the code to:

 

781 BAUD=DBAUD:TRN=O:GOSUB OPM:ON PEEK(1771) GOTO 783
782 ? #C2;"ATE0^M S4=24 S2=255 S7=5 S37=10";:INPUT #C2,L$:IF L$<>"0" THEN ? L$:GOTO 781
783 IF PEEK(1771) AND PEEK(1772)=O THEN GOSUB 2890:GOTO C200*C10
784 IF PEEK(1772) THEN POKE 1775,I:POKE 1772,O:POKE 1771,O


Where ^M = the CONTROL M

Now, instead of repeating AT over and over, it goes to a black screen and the computer is not responsive.
Still digging into it.

Here's why I like it and why I'm really wanting to get this working - it's modular.  the code owner (Pab) is super happy people are using it.  It has a very well documented usage for the TSR.  It has the ability to save state in the ASM TSR, and be recalled from modules/external programs.  This means its extensible, and "doors" and utilities can easily be created for it.

And - it has some deep rooted amis-isms, which is nice nostalgia for me :)

Attached is the current link20x.bas code

spartax-alink.atr

Edited by rickcollette
Link to comment
Share on other sites

Altirra System Overview: 

 

Base system NTSC 130XE (128K)

Additional devices 850 Interface Module, Modem, Printer (P:)

OS firmware Atari XL/XE OS ver.2 [1F9CD270]

Mounted images Disk: Atarilink 2 11102023.atr [14F52F32]
Cartridge: Basic XE (OSS Type B) (BASIC XE 4.1).bin [003D3A36]

Emulated R: Handler

 

 

Link to comment
Share on other sites

IOCB #2 should be opened to the modem most of the time, unless you are doing a local (SysOp) login in which case it is reopened for E:, if I remember correctly.

 

If it's printing AT to the screen, it might be that it's somehow stuck in local login mode and never opened/reopened the modem.

 

It's been so long since I used the Hayes command set, I'm very rusty.

 

ATE0 tells the modem not to echo characters sent to it (full-duplex mode). The S= commands set different flags. It should be one long command string with the CTRL-M at the very end (after the S37=10)

 

Had to go to Wikipedia for this one:

S4=24 S2=255 S7=5 S37=10

This is weird. The S7 should wait 5 seconds for a carrier after connection, which is okay I guess, but the others are gibberish. It's saying the line feed should be CTRL-X (instead of 10), escape character 255 (should be 43 or "+"), and it tries to connect at 14,400bps (S37)!

 

I think you could safely take the rest of the line out, with all the status registers. The important stuff is either set elsewhere or is the default.

 

Link to comment
Share on other sites

I'm also finding stuff I had forgotten about that was under development when my machine gave up the ghost. It looked like the disk I found and started adapting for Altirra BASIC was not my release version, but one where I had stuff in the works that I never finished and forgotten about.

 

For example, on line 780 there is a reference to a file called EXTENDRS that should be loaded and kept handy to be sent after a connection is made. Now I realize what this was. My plan was to let SysOps do multiple file extension definitions instead of the traditional ASCII/ATASCII. For example, you could have added menus in VT-52 or ANSI and made them available to the caller. EXTENDRS was going to list them and ask the caller to pick from the menu which experience they wanted. When I sent this along originally it was causing the machine to look like it was hanging when it made a connection, where in truth it was just waiting for someone to select an extender type from a list that never got sent! It would be easy to add this back in and finish it.

 

Found it. Line 8970 (FCNV+C10) selects the appropriate three character extender from CTRL$ starting at position 17, apparently.

 

Edited by Pab
Added info
Link to comment
Share on other sites

One other thing, IOCB 3 was the printer that was supposed to always be connected for the log. If you don't want any logging you can just take out any of the ?#C3; references, or you can change the reference to "P:" in 32007 to anything else. If you do that, though, you ought to add a CLOSE #C3:OPEN #C3,C8+I,0,"(whatever)" to the routine where it connects a caller, just to make sure the file is closed and written to regularly.

 

Link to comment
Share on other sites

Finding my definition block, here are some of the more commonly used routines, some of which could probably use some fine tuning.

 

Open Modem (OPM): Line 460

Close Modem (CLM): Line 440

Read text file into buffer (RF): 9000

Send text file in buffer (SF): 9500

Get a "Yes" or "No" (YN): 270

"File Convert" - add appropriate extender to filename (FCNV): 8960

 

Link to comment
Share on other sites

2 hours ago, Pab said:

Finding my definition block, here are some of the more commonly used routines, some of which could probably use some fine tuning.

 

Open Modem (OPM): Line 460

Close Modem (CLM): Line 440

Read text file into buffer (RF): 9000

Send text file in buffer (SF): 9500

Get a "Yes" or "No" (YN): 270

"File Convert" - add appropriate extender to filename (FCNV): 8960

 

Man - thank you SOOOOO much for popping in on this. I'll be spending some time tonight working on it.

 

Link to comment
Share on other sites

2 hours ago, Pab said:

IOCB #2 should be opened to the modem most of the time, unless you are doing a local (SysOp) login in which case it is reopened for E:, if I remember correctly.

 

If it's printing AT to the screen, it might be that it's somehow stuck in local login mode and never opened/reopened the modem.

 

It's been so long since I used the Hayes command set, I'm very rusty.

 

ATE0 tells the modem not to echo characters sent to it (full-duplex mode). The S= commands set different flags. It should be one long command string with the CTRL-M at the very end (after the S37=10)

 

Had to go to Wikipedia for this one:

S4=24 S2=255 S7=5 S37=10

This is weird. The S7 should wait 5 seconds for a carrier after connection, which is okay I guess, but the others are gibberish. It's saying the line feed should be CTRL-X (instead of 10), escape character 255 (should be 43 or "+"), and it tries to connect at 14,400bps (S37)!

 

I think you could safely take the rest of the line out, with all the status registers. The important stuff is either set elsewhere or is the default.

 

I tried with AT^M, ATS7=3^M, AT S7=3 S37=10 S4=24^M
It still gets there, and just repeats over and over...

I am going to try with a plain jane / no changes by me version and do the AT command string you posted:

S4=24 S2=255 S7=5 S37=10


annnnd.. we shall see...

 

Link to comment
Share on other sites

Try adding a

?#C2;"+++";:FOR X=I TO 500:NEXT X

(Or a similar method of delaying) before the ATE0

 

This (+++) should grab the modem's attention and enter command mode.

 

Before you run it, power cycle the modem and take out all of the S= statements. I think somehow they got screwed up.

Link to comment
Share on other sites

5 hours ago, Pab said:

Try adding a

?#C2;"+++";:FOR X=I TO 500:NEXT X

(Or a similar method of delaying) before the ATE0

 

This (+++) should grab the modem's attention and enter command mode.

 

Before you run it, power cycle the modem and take out all of the S= statements. I think somehow they got screwed up.

Thank you!  It's great to have you around to answer all the questions!

 

Link to comment
Share on other sites

I tried with a 130XE, IDE 2+, 85-, and a wimodem32 - still doing the same thing...

I think it must be the drivers...

 

Anyone else caare to give it a wirl with hardware? 
I also noticed that a lot of the lines of code exceed the normal max per line...

 

Edited by rickcollette
Link to comment
Share on other sites

The long lines were created through an old Atari BASIC trick to compress the code as much as possible. The lines were typed with abbreviations that are then expanded after being tokenized. 
 

For example…

 

F.X=1 TO 20:IF X/2=ABS(X/2) THEN GOS.200:GOS.500:POS.0,0:?X:G.2000


is 65 characters as far as the editor is concerned, but expands on listing to 84. With a packed line it’s very easy to go over the 120 character limit imposed by the E: device. 

Link to comment
Share on other sites

As for the drivers you might be onto something. AtariLink relies on numeric response codes because scanning for alphanumeric strings would take too much code. 
 

Open a terminal. Type ATZ and hit enter. You should get “OK” back. Then type ATV0 and hit enter. You should get 0 as the response. 
 

If you get “OK” then the person who wrote the driver took the cheap way out by not bothering to include numeric response codes. Which for 99% of software won’t matter. It does in this case. 

Link to comment
Share on other sites

on the 850: I tried with altirra's rhnd850, sparta X rs232
on the prconn: prconn.hnd
also tried on a 512k 800xl, stock 130XE
850 express and BobTerm both work fine with the setup and the modem.
AtariLink does not like it.

the common thing here is my ide 2+ - So now i am wondering if my ide 2+ is an issue.

I'm going to try with a u1m 800xl with the xel-cf3 and see how that goes.

Link to comment
Share on other sites

49 minutes ago, Pab said:

The long lines were created through an old Atari BASIC trick to compress the code as much as possible. The lines were typed with abbreviations that are then expanded after being tokenized. 
 

For example…

 

F.X=1 TO 20:IF X/2=ABS(X/2) THEN GOS.200:GOS.500:POS.0,0:?X:G.2000


is 65 characters as far as the editor is concerned, but expands on listing to 84. With a packed line it’s very easy to go over the 120 character limit imposed by the E: device. 

thats brilliant. all these years and I never knew that was a thing....

 

Link to comment
Share on other sites

1 hour ago, Pab said:

As for the drivers you might be onto something. AtariLink relies on numeric response codes because scanning for alphanumeric strings would take too much code. 
 

Open a terminal. Type ATZ and hit enter. You should get “OK” back. Then type ATV0 and hit enter. You should get 0 as the response. 
 

If you get “OK” then the person who wrote the driver took the cheap way out by not bothering to include numeric response codes. Which for 99% of software won’t matter. It does in this case. 

I ran bobterm, ATZ give "OK", ATV0 gives "0"
so.. testing with a completely different hardware setup...

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...