GeneveOS Utility Functions

From Ninerpedia
Revision as of 20:32, 17 July 2016 by Mizapf (talk | contribs) (→‎Utility functions)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Accessing devices (floppy disk, hard disk, serial connector, printer) is possible in GeneveOS via XOP calls.

User-task XOPs

User-task XOPs are available for use in application programs. Here is a typical example:

UTIL   DATA 9
PARSE  DATA >0008
...
       LI   R0,PARSE        opcode
       LI   R2,PABADD+15    target buffer; here: name field of PAB
       LI   R3,>5000        first byte is maximum length of buffer
       MOVB R3,*R2
       CLR  R3              normal mode
       XOP  @UTIL,0
       JEQ  OK

Similar as with the TI-99/4A device service routine concept (DSR), a Peripheral Access Block (PAB) must be set up prior to invoking the XOP.

Utility functions

Opcode 0: Validate time

Checks whether the clock chip contains a valid time setting.

Input Output
R0 0000 -
Status - EQ=1 if time is valid


Opcode 8: Parse filename

Input Output
R0 0008 Delimiter
R1 Pointer to logical name Error code
R2 Pointer to target buffer -
R3 Alias flag -
Status - EQ=1 when successfully parsed