Difference between revisions of "OSCLI"

From BeebWiki
Jump to: navigation, search
(Created page with "Category:MOS_API Category:OSCLI OSCLI passes a command to the MOS, ROMs and filing system to execute. ==Specification== {| cellpadding="0" cellspacing="0" border="1"...")
 
(Notes)
 
(6 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
==Specification==
 
==Specification==
 
{| cellpadding="0" cellspacing="0" border="1"
 
{| cellpadding="0" cellspacing="0" border="1"
| 6502 || Z80 || 6809 || PDP11 || 80x86 || 32016 || ARM || RISC-V || align="left" | '''On entry:''' || align="left" | '''On exit:'''
+
| 6502 || Z80 || 6809 || PDP11 || 80x86 || 32016 || ARM || 68000 || RISC-V || align="left" | '''On entry:''' || align="left" | '''On exit:'''
 
|- align="center" valign="top"
 
|- align="center" valign="top"
| A || A || A || R0 || AL || R1 || R0 || A0 || align="left" | || align="left" | undefined, but some return an exit value.
+
| YX || HL || X || R0 || BX || R1 || R0 || D0 || A0 || align="left" | => command string, terminated with CR || align="left" | undefined
|- align="center" valign="top"
 
| YX || HL || X || R1 || BX || R2 || R1 || A1 || align="left" | => command string                 || align="left" | undefined
 
 
|}
 
|}
  
Line 20: Line 18:
 
* Z80 Entry Address: &FFF7, vectors via &FFF8
 
* Z80 Entry Address: &FFF7, vectors via &FFF8
 
* 6809 Entry Address: &FFF7, vectors via &FFF8
 
* 6809 Entry Address: &FFF7, vectors via &FFF8
* 80x86 Entry Address: INT &4c, vectors via 0000:0130
+
* 80x86 Entry Address: INT &4C, vectors via 0000:0130
 
* 32000 Entry Address: SVC &08
 
* 32000 Entry Address: SVC &08
 
* PDP11 Entry Address: EMT 1
 
* PDP11 Entry Address: EMT 1
 
* ARM Entry Address: SWI &06 "OS_CLI", vector &05
 
* ARM Entry Address: SWI &06 "OS_CLI", vector &05
 +
* 68000 Entry Address: MOV #&06,A0:TRAP 12
 
* RISC-V Entry Address: ECALL &AC0001
 
* RISC-V Entry Address: ECALL &AC0001
 +
 +
==Notes==
 +
Some systems allow a command line to be prefixed to modify the action:
 +
* '''<code>|name</code>''' : comment
 +
* '''<code>/name</code>''' : run file, similar to '''<code>*RUN</code>'''
 +
* '''<code>%name</code>''' : bypass aliasing (eg RISC OS)
 +
* '''<code>@name</code>''' : pass command to host system (eg HostFS)
 +
* '''<code>\name</code>''' : only check as filing system command, don't look for file (MDFS, HADFS)
 +
 +
Additionally, systems with a FileSwitch implement:
 +
* '''<code>fscommand:name</code>''' : temporarily select filing system '''<code>fscommand</code>''' while executing '''<code>name</code>'''
 +
* '''<code>-fscommand-name</code>''' : temporarily select filing system '''<code>fscommand</code>''' while executing '''<code>name</code>'''
 +
 +
The two can be combined, so - where supported - you could use:
 +
* '''<code>fscommand:/name</code>''' : temporarily select filing system and run file.
  
 
[[User:Jgharston|Jgharston]] ([[User talk:Jgharston|talk]]) 20:33, 10 September 2023 (CEST)
 
[[User:Jgharston|Jgharston]] ([[User talk:Jgharston|talk]]) 20:33, 10 September 2023 (CEST)
 +
[[User:Jgharston|Jgharston]] ([[User talk:Jgharston|talk]]) 02:51, 29 May 2024 (CEST)

Latest revision as of 01:11, 5 June 2024

OSCLI passes a command to the MOS, ROMs and filing system to execute.

Specification

6502 Z80 6809 PDP11 80x86 32016 ARM 68000 RISC-V On entry: On exit:
YX HL X R0 BX R1 R0 D0 A0 => command string, terminated with CR undefined

Calling from BBC BASIC

  • OSCLI and inline *commands call OSCLI

Entry points

  • BBC BASIC Entry Address: &FFF7
  • 6502 Entry Address: &FFF7, vectors via &0208
  • Z80 Entry Address: &FFF7, vectors via &FFF8
  • 6809 Entry Address: &FFF7, vectors via &FFF8
  • 80x86 Entry Address: INT &4C, vectors via 0000:0130
  • 32000 Entry Address: SVC &08
  • PDP11 Entry Address: EMT 1
  • ARM Entry Address: SWI &06 "OS_CLI", vector &05
  • 68000 Entry Address: MOV #&06,A0:TRAP 12
  • RISC-V Entry Address: ECALL &AC0001

Notes

Some systems allow a command line to be prefixed to modify the action:

  • |name : comment
  • /name : run file, similar to *RUN
  • %name : bypass aliasing (eg RISC OS)
  • @name : pass command to host system (eg HostFS)
  • \name : only check as filing system command, don't look for file (MDFS, HADFS)

Additionally, systems with a FileSwitch implement:

  • fscommand:name : temporarily select filing system fscommand while executing name
  • -fscommand-name : temporarily select filing system fscommand while executing name

The two can be combined, so - where supported - you could use:

  • fscommand:/name : temporarily select filing system and run file.

Jgharston (talk) 20:33, 10 September 2023 (CEST) Jgharston (talk) 02:51, 29 May 2024 (CEST)