In addition to the Atari 850 command set for R:, there are a few additional commands that have been added to the R: (0x50-0x53) devices.
$44 - Turn on/off Modem Sniffer
When enabled, both incoming and outgoing MODEM traffic are logged to a file called /modem_sniffer.txt on the SD card.
| Value | Description |
|---|---|
| DDEVIC | $50 |
| DUNIT | $01 (Typically $01 for R1:) |
| DCOMND | $44 'D' |
| DSTATS | $00 (no payload) |
| DBUF | NULL (no buffer, because no payload) |
| DTIMLO | $0F |
| DBYT | $00 (no bytes, because no payload) |
| DAUX1 | $XX (1=on, 0=off) |
| DAUX2 | $00 |
$4C - Listen
Listen for TCP connections on the desired TCP port specified by aux1/aux2 (1-65535), If a port is already bound, it will be closed, and the new port specified will be bound for listening.
| Value | Description |
|---|---|
| DDEVIC | $50 |
| DUNIT | $01 (Typically $01 for R1:) |
| DCOMND | $4C |
| DSTATS | $00 (no payload) |
| DBUF | NULL (no buffer, because no payload) |
| DTIMLO | $0F |
| DBYT | $00 (no bytes, because no payload) |
| DAUX1 | $LL (The low byte of the 16-bit TCP port number) |
| DAUX2 | $HH (The high byte of the 16-bit TCP port number) |
Return
If the port is opened successfully, a COMPLETE will be returned, otherwise an ERROR will result.
$4D - Unlisten
Shut down the listening socket enabled by the above LISTEN command. This will also stop any current client connection.
| Value | Description |
|---|---|
| DDEVIC | $50 |
| DUNIT | $01 (Typically $01 for R1:) |
| DCOMND | $4D |
| DSTATS | $00 (no payload) |
| DBUF | NULL (no buffer, because no payload) |
| DTIMLO | $0F |
| DBYT | $00 (no bytes, because no payload) |
| DAUX1 | $00 |
| DAUX2 | $00 |
Return
This command will always return a COMPLETE.
$4E - Lock Baud Rate
Used after a CONFIGURE command to toggle whether to react to baud rate changes. If DAUX1=1 then any baud rate changes received via the CONFIGURE command are ignored, with a COMPLETE sent. Setting DAUX1=0 will resume normal behavior. This can be used to prevent the Atari from changing baud rate, beneficial for BBS use.
| Value | Description |
|---|---|
| DDEVIC | $50 |
| DUNIT | $01 (Typically $01 for R1:) |
| DCOMND | $4E |
| DSTATS | $00 (no payload) |
| DBUF | NULL (no buffer, because no payload) |
| DTIMLO | $0F |
| DBYT | $00 (no bytes, because no payload) |
| DAUX1 | $TT ($01 = lock baud rate to prevent further changes) |
| DAUX2 | $00 |
Return
This command will always return a COMPLETE.
RLISTEN.COM Example
This piece of C code shows how to set a listening port for the R: device.
/**
* FujiNet Tools for CLI
*
* rlisten - Enable TCP port XXXX for listening
*
* usage:
* rlisten <port#>
*
* Author: Thomas Cherryhomes
* <thom.cherryhomes@gmail.com>
*
* Released under GPL, see COPYING
* for details
*/
#include <atari.h>
#include <string.h>
#include <stdlib.h>
#include "sio.h"
#include "conio.h"
#include "err.h"
unsigned char buf[40];
unsigned short port;
/**
* SIO command to set R: listening port
*/
unsigned char listen_port(unsigned short port)
{
OS.dcb.ddevic=0x50;
OS.dcb.dunit=1;
OS.dcb.dcomnd='L';
OS.dcb.dstats=0x00;
OS.dcb.dbuf=NULL;
OS.dcb.dtimlo=0x01;
OS.dcb.dbyt=0;
OS.dcb.daux=port;
siov();
if (OS.dcb.dstats!=1)
err_sio();
return OS.dcb.dstats;
}
/**
* show options
*/
void opts(char* argv[])
{
print(argv[0]);
print(" <port#>\x9b\x9b");
print("<port#> - TCP Port # (1-65535)\x9b");
}
/**
* main
*/
int main(int argc, char* argv[])
{
unsigned char err=0;
OS.lmargn=2;
if (_is_cmdline_dos())
{
if (argc<2)
{
opts(argv);
return(1);
}
port=atoi(argv[1]);
}
else
{
// DOS 2.0/MYDOS
print("\x9b");
print("LISTEN TO WHICH PORT? ");
get_line(buf,sizeof(buf));
port=atoi(buf);
}
if (port<1)
{
print("INVALID PORT NUMBER.\x9b");
return(1);
}
err=listen_port(port);
if (!_is_cmdline_dos())
{
print("\x9bPRESS \xD2\xC5\xD4\xD5\xD2\xCE TO CONTINUE.\x9b");
get_line(buf,sizeof(buf));
}
return(err);
}
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
- Home
- What is FujiNet?
- The Definition of Done
- Board bring up for FujiNet Platform.IO code
- The Complete Linux CLI Guide
- The Complete macOS CLI Guide
- Development Env for Apps
- FujiNet-Development-Guidelines
- System Quickstarts
- FujiNet Flasher
- Setting up a TNFS Server
- FujiNet Configuration File: fnconfig.ini
- AppKey Registry - AppKey-Registry-Page
- CP-M Support
- BBS
- Official Hardware Versions
- Prototype Board Revisions
- FujiNet Development Guidelines
- The Network Protocol Handbook
- Atari Programming
- Apple Programming
- C64 Programming
- ADAM Programming
- Intellivision Programming
- Testing Plan
- Hacker List
- FujiNet VirtualMachine
Copyright 2026 Contributors to the FujiNetWIFI project.
Join us on Discord: https://discord.gg/7MfFTvD