Difference between revisions of "API"

From BeebWiki
Jump to: navigation, search
(Updated 80x86.)
 
m (Tweeked formatting.)
 
(9 intermediate revisions by 2 users not shown)
Line 22: Line 22:
 
===Vectors===
 
===Vectors===
 
*[[FSCV]] Low-level filing system control
 
*[[FSCV]] Low-level filing system control
 +
*[[KEYV]] Keyboard control
  
 
===Miscellaneous Calls===
 
===Miscellaneous Calls===
Line 35: Line 36:
  
 
===MOS API Entry Points on various platforms===
 
===MOS API Entry Points on various platforms===
<pre>
+
<div class="mw-widebody"><pre>
                  | 6502 |  Z80  | 6809 | PDP11 |      80x86        | 32016 |            ARM             |
+
        | std | 6502 |  Z80  | 6809 | PDP11 |     80x86       | 32016 |            ARM           |    RISC-V  |
                  | vector| vector| vector| entry | entry   vector    |        |    entry          vector |
+
        |entry|vector| vector|vector| entry | entry   vector |      |   entry          vector |   entry    |
                  |      |       |      |       |                     |         |                           |
+
         |    |     |      |     |      |                 |       |                         |             |
* IRQV             | &FFFE | &FFEE |      |       |                     |         |                           |
+
IRQV   |    |&FFFE | &FFEE |      |      |                 |       |                         |             |
* RSTV             | &FFFC |      |      |       |                     |         |                           |
+
RSTV   |    |&FFFC |      |      |      |                 |       |                         |             |
* NMIV             | &FFFA |      |      |       |                     |         |                           |
+
NMIV   |    |&FFFA |      |      |      |                 |       |                         |             |
                  |      |       |      |       |                     |         |                           |
+
        |    |      |      |     |      |                 |       |                         |             |
* USERV           | &0200 |      |      |       |                     |         |                           |
+
USERV   |    |&0200 |      |      |      |                 |       |                         |             |
* ERROR           | BRK  |RST &38| SWI  | EMT 15 | INT &4F (0000:013C) |         | SWI &2B "OS_GenerateError" |
+
ERROR   |    | BRK  |RST &38| SWI  |EMT &0F|INT &4F 0000:013C|       |SWI &2B "OS_GenerateError"|ECALL &AC000F|
* BRKV             | &0202 | &FFFA | &FFFA |        |        (0000:05F8) |         |                           |
+
BRKV   |    |&0202 | &FFFA |&FFFA |      |        0000:05F8|       |                         |            |
* IRQ1V           | &0204 |      |      |       |                     |         |                           |
+
IRQ1V   |    |&0204 |      |      |      |                 |       |                         |             |
* IRQ2V           | &0206 | &FFB1 | &FFB1 |       |                     |         |                           |
+
IRQ2V   |    |&0206 | &FFB1 |&FFB1 |       |                 |       |                          |             |
* FAULT           | &00FD | &FF82 | &FF82 |        |        (0000:05F4) |         |                           |
+
FAULT   |    |&00FD | &FF82 |&FF82 |      |        0000:05F4|       |                         |            |
* ESCFLG           | &00FF | &FF80 | &FF80 |        |        (0000:05F0) |        |                           |
+
ESCFLG |    |&00FF | &FF80 |&FF80 |      |        0000:05F0|       |                          |            |
                  |      |       |      |       |                     |         |                           |
+
         |     |     |      |     |      |                 |       |                         |             |
* QUIT            |       |       |       | EMT |                     | SVC &11 | SWI &11 "OS_Exit"         |
+
OSQUIT  |     |     | &FFBA |&FFBA |EMT &00|                 |SVC &11|SWI &11 "OS_Exit"         |ECALL &AC0000|
                  |      |       |      |       |                     |         |                           |
+
        |    |      |      |     |      |                 |       |                         |             |
===MOS Calls===    |      |       |      |       |                     |         |                           |
+
MOS Calls     |      |      |     |      |                 |       |                         |             |
* OSCLI     &FFF7 | &0208 | &FFF8 | &FFF8 | EMT | INT &4C (0000:0130) | SVC &08 | SWI &05 "OS_CLI"      &05 |
+
OSCLI   |&FFF7|&0208 | &FFF8 |&FFF8 |EMT &01|INT &4C 0000:0130|SVC &08|SWI &05 "OS_CLI"      &05|ECALL &AC0001|
* OSBYTE     &FFF4 | &020A | &FFF5 | &FFF5 | EMT | INT &4B (0000:012C) | SVC &06 | SWI &06 "OS_Byte"      &06 |
+
OSBYTE |&FFF4|&020A | &FFF5 |&FFF5 |EMT &02|INT &4B 0000:012C|SVC &06|SWI &06 "OS_Byte"      &06|ECALL &AC0002|
* OSWORD     &FFF1 | &020C | &FFF2 | &FFF2 | EMT | INT &4A (0000:0128) | SVC &07 | SWI &07 "OS_Word"      &07 |
+
OSWORD |&FFF1|&020C | &FFF2 |&FFF2 |EMT &03|INT &4A 0000:0128|SVC &07|SWI &07 "OS_Word"      &07|ECALL &AC0003|
                  |      |       |      |       |                     |         |                           |
+
        |    |      |      |     |      |                 |       |                         |             |
===Character I/O===|       |      |      |       |                     |         |                           |
+
Character I/O |     |      |      |      |                 |       |                         |             |
* OSWRCH     &FFEE | &020E | &FFEF | &FFEF | EMT | INT &49 (0000:0124) | SVC &01 | SWI &00 "OS_WriteC"    &03 |
+
OSWRCH |&FFEE|&020E | &FFEF |&FFEF |EMT &04|INT &49 0000:0124|SVC &01|SWI &00 "OS_WriteC"    &03|ECALL &AC0004|
* OSWRCR     &FFEC |      |       |      |       |                     |         |                           |
+
OSWRCR |&FFEC|      |      |     |      |                 |       |                         |             |
* OSNEWL     &FFE7 |       |      |       | EMT | INT &48 (0000:0120) | SVC &04 | SWI &03 "OS_NewLine"       |
+
OSNEWL |&FFE7|     |      |     |EMT &05|INT &48 0000:0120|SVC &04|SWI &03 "OS_NewLine"     |ECALL &AC0005|
* OSASCI     &FFE3 |      |       |      |        | INT &47 (0000:011C) | SVC &03 |                           |
+
OSASCI |&FFE3|      |      |     |      |INT &47 0000:011C|SVC &03|                         |            |
* OSRDCH     &FFE0 | &0210 | &FFE1 | &FFE1 | EMT | INT &46 (0000:0118) | SVC &05 | SWI &04 "OS_ReadC"    &04 |
+
OSRDCH |&FFE0|&0210 | &FFE1 |&FFE1 |EMT &06|INT &46 0000:0118|SVC &05|SWI &04 "OS_ReadC"    &04|ECALL &AC0006|
                  |      |       |      |       |                     |         |                           |
+
        |    |      |      |     |      |                 |       |                         |             |
===Filing System Calls=== |      |      |       |                     |         |                           |
+
Filing System Calls  |      |      |      |                 |       |                         |             |
* OSFILE     &FFDD | &0212 | &FFDE | &FFDE | EMT | INT &45 (0000:0114) | SVC &0A | SWI &08 "OS_File"      &08 |
+
OSFILE |&FFDD|&0212 | &FFDE |&FFDE |EMT &07|INT &45 0000:0114|SVC &0A|SWI &08 "OS_File"      &08|ECALL &AC0007|
* OSARGS     &FFDA | &0214 | &FFDB | &FFDB | EMT | INT &44 (0000:0110) | SVC &0C | SWI &09 "OS_Args"      &09 |
+
OSARGS |&FFDA|&0214 | &FFDB |&FFDB |EMT &08|INT &44 0000:0110|SVC &0C|SWI &09 "OS_Args"      &09|ECALL &AC0008|
* OSBGET     &FFD7 | &0216 | &FFD8 | &FFD8 | EMT | INT &43 (0000:010C) | SVC &0D | SWI &0A "OS_BGet"      &0A |
+
OSBGET |&FFD7|&0216 | &FFD8 |&FFD8 |EMT &09|INT &43 0000:010C|SVC &0D|SWI &0A "OS_BGet"      &0A|ECALL &AC0009|
* OSBPUT     &FFD4 | &0218 | &FFD5 | &FFD5 | EMT 10 | INT &42 (0000:0108) | SVC &0E | SWI &0B "OS_BPut"      &0B |
+
OSBPUT |&FFD4|&0218 | &FFD5 |&FFD5 |EMT &0A|INT &42 0000:0108|SVC &0E|SWI &0B "OS_BPut"      &0B|ECALL &AC000A|
* OSGBPB     &FFD1 | &021A | &FFD2 | &FFD2 | EMT 11 | INT &41 (0000:0104) | SVC &0F | SWI &0C "OS_GBPB"      &0C |
+
OSGBPB |&FFD1|&021A | &FFD2 |&FFD2 |EMT &0B|INT &41 0000:0104|SVC &0F|SWI &0C "OS_GBPB"      &0C|ECALL &AC000B|
* OSFIND     &FFCE | &021C | &FFCF | &FFCF | EMT 12 | INT &40 (0000:0100) | SVC &0B | SWI &0D "OS_Find"      &0D |
+
OSFIND |&FFCE|&021C | &FFCF |&FFCF |EMT &0C|INT &40 0000:0100|SVC &0B|SWI &0D "OS_Find"      &0D|ECALL &AC000C|
* FSCV             | &021E |      |      |       |                     |        | SWI &0F "OS_FSControl" &29 |
+
FSCV   |    |&021E |      |      |      |                 |       |SWI &0F "OS_FSControl" &29|            |
                  |      |       |      |       |                     |         |                           |
+
        |    |      |      |     |      |                 |       |                         |             |
* NVWRCH     &FFCB |      |       |      |       |                     |         |                           |
+
NVWRCH |&FFCB|      |      |     |      |                 |       |                         |             |
* NVRDCH     &FFC8 |      |       |      |       |                     |         |                           |
+
NVRDCH |&FFC8|      |      |     |      |                 |       |                         |             |
* GSREAD     &FFC5 |      |       |      |       |                     |         |                           |
+
GSREAD |&FFC5|      |      |     |      |                 |       |                         |             |
* GSINIT     &FFC2 |      |       |      |       |                     |         |                           |
+
GSINIT |&FFC2|      |      |     |      |                 |       |                         |             |
* OSEVENT   &FFBF | &0220 | &FFFC | &FFFC |       |                     |         |                           |
+
OSEVENT |&FFBF|&0220 | &FFFC |&FFFC |       |                |       |                         |             |
* VDUCHR     &FFBC |      |       |      |       |                     |         |                           |
+
VDUCHR |&FFBC|      |      |     |      |                 |       |                         |             |
* OSRDSC     &FFB9 |      |       |      |       |                     |         |                           |
+
OSRDSC |&FFB9|      |      |     |      |                 |       |                         |             |
* DEFVEC     &FFB6 |      |       |      |       |                     |         |                           |
+
DEFVEC |&FFB6|      |      |     |      |                 |       |                         |             |
* OSWRSC     &FFB3 |      |      |      |       |                     |        |                           |
+
OSWRSC |&FFB3|      |      |      |      |                |      |                         |             |
                  |      |       |      |       |                     |         |                           |
+
         |     |     |      |     |      |                 |       |                         |             |
* UPTV             | &0222 |      |      |       |                     |         |                           |
+
UPTV   |    |&0222 |      |      |      |                 |       |                         |             |
* NETV             | &0224 |      |      |       |                     |         |                           |
+
NETV   |    |&0224 |      |      |      |                 |       |                         |             |
* VDUV             | &0226 |      |      |       |                     |         |                           |
+
VDUV   |    |&0226 |      |      |      |                 |       |                         |             |
* KEYV             | &0228 |      |      |       |                     |         |                           |
+
KEYV   |    |&0228 |      |      |      |                 |       |                         |             |
* INSV             | &022A |      |      |       |                     |         |                           |
+
INSV   |    |&022A |      |      |      |                 |       |                         |             |
* REMV             | &022C |      |      |       |                     |         |                           |
+
REMV   |    |&022C |      |      |      |                 |       |                         |             |
* CNPV             | &022E |      |      |       |                     |         |                           |
+
CNPV   |    |&022E |      |      |      |                 |       |                         |             |
* USR1V           | &0230 |      |      |       |                     |         |                           |
+
USR1V   |    |&0230 |      |      |      |                 |       |                         |             |
* USR2V           | &0232 |      |      |       |                     |         |                           |
+
USR2V   |    |&0232 |      |      |      |                 |       |                         |             |
* USR3V           | &0234 |      |      |       |                     |         |                           |
+
USR3V   |    |&0234 |      |      |      |                 |       |                         |             |
</pre>
+
</pre></div>
  
[[User:Abz|Abz]] 03:05, 9 January 2012 (UTC)
+
[[User:Jgharston|Jgharston]] 16:54, 6 November 2009 (UTC)
 +
<!--
 +
Need a note to say that Z80 BASIC and x86 BASIC implement CALL &FFE0-F7 from BASIC
 +
-->

Latest revision as of 17:50, 10 September 2023

MOS Calls

  • OSCLI Execute *command
  • OSBYTE Various byte-wise functions
  • OSWORD Various functions with control block data

Character I/O

  • OSWRCH Send a character to output stream
  • OSWRCR Send a CR to output stream
  • OSNEWL Send a NewLine to output stream
  • OSASCI Send an ASCII sequence to output stream
  • OSRDCH Wait for a character from input stream

Filing System Calls

  • OSFILE Operate on whole files
  • OSARGS Read and write information on open files and filing systems
  • OSBGET Read a byte from a channel
  • OSBPUT Write a byte to a channel
  • OSGBPB Read or write blocks of data
  • OSFIND Open or close files

Vectors

  • FSCV Low-level filing system control
  • KEYV Keyboard control

Miscellaneous Calls

  • NVWRCH Nonvectored OSWRCH, points to default contents of WRCHV
  • NVRDCH Nonvectored OSRDCH, points to default contents of RDCHV
  • GSREAD General String Reading
  • GSINIT General String Initialisation
  • OSEVEN Generate events
  • VDUCHR Send a character to VDU drivers
  • OSRDSC Read a byte from paged/banked memory
  • DEFVEC Pointer to default vector table
  • OSWRSC Write a byte to screen memory

MOS API Entry Points on various platforms

        | std | 6502 |  Z80  | 6809 | PDP11 |     80x86       | 32016 |            ARM           |    RISC-V   |
        |entry|vector| vector|vector| entry | entry   vector  |       |    entry          vector |    entry    |
        |     |      |       |      |       |                 |       |                          |             |
IRQV    |     |&FFFE | &FFEE |      |       |                 |       |                          |             |
RSTV    |     |&FFFC |       |      |       |                 |       |                          |             |
NMIV    |     |&FFFA |       |      |       |                 |       |                          |             |
        |     |      |       |      |       |                 |       |                          |             |
USERV   |     |&0200 |       |      |       |                 |       |                          |             |
ERROR   |     | BRK  |RST &38| SWI  |EMT &0F|INT &4F 0000:013C|       |SWI &2B "OS_GenerateError"|ECALL &AC000F|
BRKV    |     |&0202 | &FFFA |&FFFA |       |        0000:05F8|       |                          |             |
IRQ1V   |     |&0204 |       |      |       |                 |       |                          |             |
IRQ2V   |     |&0206 | &FFB1 |&FFB1 |       |                 |       |                          |             |
FAULT   |     |&00FD | &FF82 |&FF82 |       |        0000:05F4|       |                          |             |
ESCFLG  |     |&00FF | &FF80 |&FF80 |       |        0000:05F0|       |                          |             |
        |     |      |       |      |       |                 |       |                          |             |
OSQUIT  |     |      | &FFBA |&FFBA |EMT &00|                 |SVC &11|SWI &11 "OS_Exit"         |ECALL &AC0000|
        |     |      |       |      |       |                 |       |                          |             |
MOS Calls     |      |       |      |       |                 |       |                          |             |
OSCLI   |&FFF7|&0208 | &FFF8 |&FFF8 |EMT &01|INT &4C 0000:0130|SVC &08|SWI &05 "OS_CLI"       &05|ECALL &AC0001|
OSBYTE  |&FFF4|&020A | &FFF5 |&FFF5 |EMT &02|INT &4B 0000:012C|SVC &06|SWI &06 "OS_Byte"      &06|ECALL &AC0002|
OSWORD  |&FFF1|&020C | &FFF2 |&FFF2 |EMT &03|INT &4A 0000:0128|SVC &07|SWI &07 "OS_Word"      &07|ECALL &AC0003|
        |     |      |       |      |       |                 |       |                          |             |
Character I/O |      |       |      |       |                 |       |                          |             |
OSWRCH  |&FFEE|&020E | &FFEF |&FFEF |EMT &04|INT &49 0000:0124|SVC &01|SWI &00 "OS_WriteC"    &03|ECALL &AC0004|
OSWRCR  |&FFEC|      |       |      |       |                 |       |                          |             |
OSNEWL  |&FFE7|      |       |      |EMT &05|INT &48 0000:0120|SVC &04|SWI &03 "OS_NewLine"      |ECALL &AC0005|
OSASCI  |&FFE3|      |       |      |       |INT &47 0000:011C|SVC &03|                          |             |
OSRDCH  |&FFE0|&0210 | &FFE1 |&FFE1 |EMT &06|INT &46 0000:0118|SVC &05|SWI &04 "OS_ReadC"     &04|ECALL &AC0006|
        |     |      |       |      |       |                 |       |                          |             |
Filing System Calls  |       |      |       |                 |       |                          |             |
OSFILE  |&FFDD|&0212 | &FFDE |&FFDE |EMT &07|INT &45 0000:0114|SVC &0A|SWI &08 "OS_File"      &08|ECALL &AC0007|
OSARGS  |&FFDA|&0214 | &FFDB |&FFDB |EMT &08|INT &44 0000:0110|SVC &0C|SWI &09 "OS_Args"      &09|ECALL &AC0008|
OSBGET  |&FFD7|&0216 | &FFD8 |&FFD8 |EMT &09|INT &43 0000:010C|SVC &0D|SWI &0A "OS_BGet"      &0A|ECALL &AC0009|
OSBPUT  |&FFD4|&0218 | &FFD5 |&FFD5 |EMT &0A|INT &42 0000:0108|SVC &0E|SWI &0B "OS_BPut"      &0B|ECALL &AC000A|
OSGBPB  |&FFD1|&021A | &FFD2 |&FFD2 |EMT &0B|INT &41 0000:0104|SVC &0F|SWI &0C "OS_GBPB"      &0C|ECALL &AC000B|
OSFIND  |&FFCE|&021C | &FFCF |&FFCF |EMT &0C|INT &40 0000:0100|SVC &0B|SWI &0D "OS_Find"      &0D|ECALL &AC000C|
FSCV    |     |&021E |       |      |       |                 |       |SWI &0F "OS_FSControl" &29|             |
        |     |      |       |      |       |                 |       |                          |             |
NVWRCH  |&FFCB|      |       |      |       |                 |       |                          |             |
NVRDCH  |&FFC8|      |       |      |       |                 |       |                          |             |
GSREAD  |&FFC5|      |       |      |       |                 |       |                          |             |
GSINIT  |&FFC2|      |       |      |       |                 |       |                          |             |
OSEVENT |&FFBF|&0220 | &FFFC |&FFFC |       |                 |       |                          |             |
VDUCHR  |&FFBC|      |       |      |       |                 |       |                          |             |
OSRDSC  |&FFB9|      |       |      |       |                 |       |                          |             |
DEFVEC  |&FFB6|      |       |      |       |                 |       |                          |             |
OSWRSC  |&FFB3|      |       |      |       |                 |       |                          |             |
        |     |      |       |      |       |                 |       |                          |             |
UPTV    |     |&0222 |       |      |       |                 |       |                          |             |
NETV    |     |&0224 |       |      |       |                 |       |                          |             |
VDUV    |     |&0226 |       |      |       |                 |       |                          |             |
KEYV    |     |&0228 |       |      |       |                 |       |                          |             |
INSV    |     |&022A |       |      |       |                 |       |                          |             |
REMV    |     |&022C |       |      |       |                 |       |                          |             |
CNPV    |     |&022E |       |      |       |                 |       |                          |             |
USR1V   |     |&0230 |       |      |       |                 |       |                          |             |
USR2V   |     |&0232 |       |      |       |                 |       |                          |             |
USR3V   |     |&0234 |       |      |       |                 |       |                          |             |

Jgharston 16:54, 6 November 2009 (UTC)