-
Notifications
You must be signed in to change notification settings - Fork 78
Issuing SmartPort Commands
Thomas Cherryhomes edited this page Dec 26, 2022
·
8 revisions
Once the SmartPort dispatcher is found, commands can be issued. The FujiNet can respond to STATUS, CONTROL, READ, WRITE, OPEN, and CLOSE commands.
int8_t sp_status(uint8_t dest, uint8_t statcode)
{
sp_error = 0;
// build the command list
sp_cmdlist[0] = SP_STATUS_PARAM_COUNT;
sp_cmdlist[1] = dest; // set before calling sp_status();
sp_cmdlist[2] = (uint8_t)((uint16_t)&sp_payload & 0x00FF);
sp_cmdlist[3] = (uint8_t)((uint16_t)&sp_payload >> 8) & 0xFF;
sp_cmdlist[4] = statcode;
sp_cmdlist_low = (uint8_t)((uint16_t)&sp_cmdlist & 0x00FF);
sp_cmdlist_high = (uint8_t)((uint16_t)&sp_cmdlist >> 8) & 0xFF;
// store cmd list
__asm__ volatile ("lda #%b", SP_CMD_STATUS);
__asm__ volatile ("sta %g", spCmd); // store status command #
__asm__ volatile ("lda %v", sp_cmdlist_low);
__asm__ volatile ("sta %g", spCmdListLow); // store status command #
__asm__ volatile ("lda %v", sp_cmdlist_high);
__asm__ volatile ("sta %g", spCmdListHigh); // store status command #
__asm__ volatile ("jsr $C50D"); // to do - find SP entry point using algorithm from firmware reference
spCmd:
__asm__ volatile ("nop");
spCmdListLow:
__asm__ volatile ("nop");
spCmdListHigh:
__asm__ volatile ("nop");
__asm__ volatile ("stx %v", sp_rtn_low);
__asm__ volatile ("sty %v", sp_rtn_high);
__asm__ volatile ("sta %v", sp_err);
sp_count = ((uint16_t)sp_rtn_high << 8) | (uint16_t)sp_rtn_low;
sp_error = sp_err;
return sp_err;
}
```c
### Asm implementation
```asm
jsr DISPATCH
DFB #STATUSCODE
DW CMLIST
BCS ERROR
; Everything ok
CLC
RTS
ERROR ; not okay
RTS
CMLIST: DFB #$04 ; status has length of 4
DFB #DEST ; Destination device #
DW BUFFER ; lo and hi bytes for buffer address
DFB STATUSCODE ; The status codeCopyright 2024 Contributors to the FujiNetWIFI project.
Join us on Discord: https://discord.gg/7MfFTvD
- 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 - SIO Command $DC Open App Key
- CP-M Support
- BBS
- Official Hardware Versions
- Prototype Board Revisions
- FujiNet Development Guidelines
- Atari Programming
- Apple Programming
- C64 Programming
- ADAM Programming
- Testing Plan
- Hacker List
- FujiNet VirtualMachine