Part 1:
Allocator cells and their system services.
AL$FREE
AL$GRAB
AL$GROW
AL$REPL
AL$SHNK
AL$SIZE
AL$ZERO
Hardware services
BT$NMDN
BT$NMEN
BT$NOF
BT$NON
BT$PPRG
BT$SWOF
Sound services
BZ$ALRM
BZ$BELL
BZ$TONE
Display services
DP$EMIT
DP$PRNT
DP$REST
DP$SAVE
DP$STAT
DP$VIEW
DP$WRDY
Device services
DV$BOOT
DV$CLER
DV$LKUP
DV$LOAD
DV$VECT
Editor services
ED$EDIT
ED$EPOS
ED$VIEW
Error services
ER$LKUP
ER$MESS
File services
FL$BACK
FL$BCAT
FL$BDEL
FL$BOPN
FL$BSAV
FL$CATL
FL$COPY
FL$CRET
FL$DELN
FL$ERAS
FL$FFND
FL$FIND
FL$FREC
FL$NEXT
FL$OPEN
FL$PARS
FL$READ
FL$RECT
FL$RENM
FL$RSET
FL$SETP
FL$SIZE
FL$WRIT
Complex Floating point services
FN$ATAN
FN$COS
FN$EXP
FN$LN
FN$LOG
FN$POWR
FN$RND
FN$SIN
FN$SQRT
FN$TAN
Part 2:
Table interpreter services.
IT$GVAL
IT$RADD
IT$STRT
IT$TADD
Keyboard services.
KB$INIT
KB$TEST
KB$GETK
KB$BREK
KB$FLSH
KB$UGET
KB$STAT
Language services.
LG$RLED
LG$NEWP
LN$STRT
Menu services.
MN$DISP
Floating point arithmetic services.
MT$BTOF
MT$FADD
MT$FBDC
MT$FBEX
MT$FBGN
MT$FBIN
MT$FDIV
MT$FMUL
MT$FNGT
MT$FSUB
Pack services.
PK$PKOF
PK$QADD
PK$RBYT
PK$READ
PK$RWRD
PK$SADD
PK$SAVE
PK$SETP
PK$SKIP
Run services.
RM$RUNP
Top level services.
TL$ADDI
TL$CPYX
TL$DELI
TL$XXMD
TL$RSTR
TL$LSET
Timing services.
TM$DAYV
TM$TGET
TM$UPDT
TM$WAIT
Utility display services.
UT$DDSP
UT$DISP
UT$CDSP
Utility services.
UT$CPYB
UT$ENTR
UT$FILL
UT$ICPB
UT$ISBF
UT$LEAV
UT$SDIV
UT$SMUL
UT$SPLT
UT$UDIV
UT$UMUL
UT$UTOB
UT$XCAT
UT$XTOB
UT$YSNO
LZ Services
Hardware services
BT$TOFF
Display services
DP$CPRN
DP$CSET
DP$MSET
DP$PVEW
DP$UDG
XT$BAR
Editor services
TL$ZZMD
Error services
ER$PRNT
File services
FL$FDEL
FL$GETX
FL$NCAT
FL$VALX
FL$WCAT
FL$WCPY
FL$WDEL
FL$WFND
FL$WPAR
XF$SORT
XT$DIRM
Complex Floating point services
FN$ASIN
FN$ACOS
FN$MAX
FN$MEAN
FN$MIN
FN$STD
FN$SUM
FN$VAR
Keyboard services.
KB$CONK
Language services.
LG$EDIT
LG$ENTR
LN$XSTT
Menu services.
MN$1DSP
MN$TITL
MN$XDSP
Timing services.
TM$DNAM
TM$MNAM
TM$NDYS
TM$TSET
TM$WEEK
Top level services.
AM$ENTR
CA$ENTR
DI$ENTR
NT$ENTR
TI$ENTR
WL$ENTR
XF$ENTR
XT$ENTR
Utility services.
UT$CMPB
UT$SORT
UT$WILD
129 81 | BT$TOFF |
INPUT: | D=Number of seconds to be switched off (must be 2-1800 secs for system clock to function correctly) |
OUTPUT: | None. |
Switch off for D seconds. |
132 84 | DP$CPRN |
INPUT: | A=zero to update only flashing colon, non-zero for whole clock. |
OUTPUT: | None.
UTW_Sx=preserved |
Redefines the clock UDG's. Preserves the screen status. This service is called by the keyboard interrupt routine every half second when the clock is enabled. |
131 83 | DP$CSET |
INPUT: | B=Position of screen clock. Bit 7 set to disable clock. |
OUTPUT: | B=previous clock status. |
Sets the status of the UDG clock. Note that if enabled, the clock is only
displayed once when this service is called. It is updated by only changing
the UDG's on keyboard interrupt, not by printing to the screen. The cursor
position and status is preserved.
Note that the clock uses the UDG's 3 to 7 to display hh:mm. If in 12 hour mode this is followed by UDG 1 which is used for 'a' or 'p'. In 24 hour mode UDG 1 is unchanged and the clock is preceded by UDG 2, which is not redefined and is assumed to show an underline. |
130 82 | DP$MSET |
INPUT: | A=0 for 2-line mode, 1 for 4-line mode. If bit 7 also set then udg clock unaffected, else switched off. |
OUTPUT: | A=Previous display mode
B,X=preserved |
Sets 2 or 4 line display mode. |
163 A3 | DP$PVEW |
INPUT: | X=Address of string to view, 0 for previous string.
A=bit 7 set to disallow changing the scroll direction. B=Length of string to view. UTW_S0=Initial pause before scrolling (in 20th of a sec) |
OUTPUT: | B=Key pressed |
Works exactly like DP$VIEW, except that the string is viewed at the current cursor position, and that anything on the current line to the left of the cursor will not be disturbed. The string is only displayed on the right side of the line. This service is used in CALC for example. See DP$VIEW for full details. |
133 85 | DP$UDG |
INPUT: | A=Bit 7 set for reading udg, clear to define udg. Bit 0 set for five byte pattern (defining only), clear for 8 byte.
B=Udg number (0-7) X=Address of 5/8 byte udg buffer to read from or write to. |
OUTPUT: | X=8 byte pattern read/write: the next byte after the buffer 5 byte pattern write: preserved |
Reads or writes a UDG pattern. Note that reading a UDG in 5 byte format is
not allowed. Interrupts are temporarily disabled by this service.
UDG's consist of an 8x5 pattern of pixels. The 8 byte format is the same as used in the OPL command UDG. Thus the 8 bytes contain the horizontal lines from top to bottom, and the five pixels are contained in the lowest 5 bits. The three highest bits are ignored. The 5 byte format contains vertical lines instead, from left to right. Now all 8 bits are used, with the highest bit denoting the top pixel and the lowest bit the bottom one. |
162 A2 | XT$BAR |
INPUT: | A=Percentage of black bar on left of graph
B=Percentage of grey bar on right of graph |
OUTPUT: | RTT_BF=String of the bar graph (20 chars long) |
Defines the UDG's for displaying a bar graph like in the INFO option in utils. Note that A+B should not be more than 100%. All 8 UDG's are re-defined by this service, but UDG 5 is not used in the resulting string. The UDG's 1, 3 and 6 show the start, middle and end of the black bar. The grey bar similarly uses UDG's 2, 4 and 7. UDG 0 is the underline between the bars. |
155 9B | TL$ZZMD |
INPUT: | A=Flags:
Bit 0 set for multi-line editing, clear for single-line. Bit 1 set for up/down to exit editor in single-line editing. LZ only. Bit 7 clear for MODE to exit editor, set if MODE to be ignored. B=Maximum input length (possibly 0) X=Address of prompt to display (lbc string, e.g. 'FIND' shows 'FIND A:') TLB_CPAK=Initial pack RTT_BUF=String to be edited UTW_S0l=Line on which to display prompt (0-3) |
OUTPUT: |
TLB_CPAK=Chosen pack Carry=set if ON/Clear used to exit. |
Works exactly like TL$XXMD, except that the screen is not cleared beforehand. UTW_S0l contains the line where the prompt is to be displayed (0-3). See TL$XXMD for further details. |
169 A9 | ER$PRNT |
INPUT: | X=message to display as an error (lbc string, no longer than current screen width) |
OUTPUT: | None. |
Displays a string as if it were an error message. |
176 B0 | FL$FDEL |
INPUT: | D=Number of first record to delete
X=Number of records to delete, $FFFF to delete till end. |
OUTPUT: | None. |
Deletes X records starting from record D, of the current record type. |
152 98 | FL$GETX |
INPUT: | A=file type ($81-8F, 0 for '.*', $FF for empty string)
X=Address to store extension at. UTW_S0l=0,1,2 for .OPL/.OPO/.OPT if type is $83. |
OUTPUT: | B=Length of extension |
Converts a file type into an extension. File type 0 will return '.*' and $FF returns an empty string. The exact opposite of FL$VALX. |
157 9D | FL$NCAT |
INPUT: | A=1 on initial call, 0 for subsequent calls (and then only X needs
to be given). If bit 7 set then returns further info about file
sizes found.
B=pack to search (0-3) X=Address to store the filename found. UTW_S0l=Length of string to match filenames, bit 7 set to match file type in UTW_S0h. UTW_S0h=File type to match, ignored if bit 7 of UTW_S0l clear. UTW_S1=Address of string to match filenames UTW_S2=The number of the match to search for. |
OUTPUT: | A=File type found
B=1 or 2 if .OPO/.OPT was given, zero otherwise UTW_S0=Length of data of block file or number of records in file. Only available if requested by setting bit 7 of A. |
Same as FL$WCAT but gets the n'th match. See FL$WCAT for further details. |
153 99 | FL$VALX |
INPUT: | B=Length of extension string
X=Address of extension string |
OUTPUT: | A=File type (0 for '.*', $FF for empty string)
UTW_S0l=0,1,2 for .OPL/.OPO/.OPT if type is $83. |
Converts a file extension to a file type. The exact opposite of FL$GETX. May cause error 236 'bad file name'. |
144 90 | FL$WCAT |
INPUT: | A=1 on initial call, 0 for subsequent calls (and then only
X needs to be given). If bit 7 set then returns further info about file sizes found.
B=pack to search (0-3) X=Address to store the filename found. UTW_S0l=Length of string to match filenames, bit 7 set to match file type in UTW_S0h. UTW_S0h=File type to match, ignored if bit 7 of UTW_S0l clear. UTW_S1=Address of string to match filenames |
OUTPUT: | A=File type found
B=1 or 2 if .OPO/.OPT was given, zero otherwise UTW_S0=Length of data of block file or number of records in file. Only available if requested by setting bit 7 of A. |
Works very much like FL$BCAT and FL$CATL except that the filenames that are
returned must match a given string. The string may contain wildcards '*' and
'+', and may also have an extension. Note that the file extensions '.OPL',
'.OPO' and '.OPT' are considered to be equivalent by this service and that if
no extension is given then extension '.*' is assumed which matches all file
types. Returns error 238 'end of file' is no more matching files were found.
See also FL$NCAT.
The following errors can be generated:
238 end of file (normal exit) 236 bad file name 243 bad device name 245 write pack error 246 no pack |
145 91 | FL$WCPY |
INPUT: | D=address of source filename (lbc string of form 'D:NAME' or 'D:')
X=address of target filename (lbc string of form 'D:NAME' or 'D:') UTW_S0=Address of user routine to call with each file copied, 0 if no routine supplied (the routine will be given address of filename in X, file type in A) |
OUTPUT: | None. |
Wild file copy, works somewhat like FL$COPY. This service copies files (both
block files and ordinary files) with a name matching the first string to a
file/pack given in second string. The files can only be copied from one
device to another, not to the same device. The target name may be different,
but if no target name is given the original filename is kept. The source name
may contain wild cards, and if this is the case then the target name must
consist of no more than the device name only. The source name may also have
an extension, the target name may not.
A user routine can be supplied which is called for each file copied, which
allows you to display the progress of the copy.
The following errors can be generated:
194 battery too low 200 read pack error 232 pak not copyable 233 directory full 234 file not found 236 bad file name 238 end of file 239 pack full 240 unknown pack 241 pack not blank 242 pak changed 243 bad device name 244 read only pack 245 write pack error 246 no pack |
146 92 | FL$WDEL |
INPUT: | X=Wildcard filename to match (lbc string, 'D:NAME.EXT')
UTW_S0=Address of user routine to call with each file deleted, 0 if no routine supplied (the routine will be given address of filename in X, file type in A) |
OUTPUT: | None. |
Wild file delete, works somewhat like FL$DELN and FL$BDEL. This service
deletes all files (block and ordinary files) matching a given string. The
string must include a device name and an extension (though '.*' is allowed).
A user routine can be supplied which is called for each file deleted, which
allows you to display the progress of the deletion.
The following errors can be generated:
194 battery too low 200 read pack error 234 file not found 236 bad file name 240 unknown pack 241 pack not blank 243 bad device name 244 read only pack 245 write pack error 246 no pack |
147 93 | FL$WFND |
INPUT: | D=address of lbc string to search for
X=address to store record found, as lbc string |
OUTPUT: | A=current record type |
Wild find. Works like FL$FIND, except that the wild cards '*' and '+' are allowed. This therefore works exactly like the OPL function FINDW. See FL$FIND for details. |
143 8F | FL$WPAR |
INPUT: | B=Length of filename
X=Address of filename |
OUTPUT: | A=File type ($81-8F), 0 for extension .*, $FF if no extension.
B=Length of body of filename (excl extension) UTW_S0l=0,1,2 for .OPL/.OPO/.OPT extension (and then type is $83) |
Checks whether a wildcard filename is legal. The filename may include wildcards, and an extension. If the filename is not legal, then error 236 'bad filename' is returned. |
174 AE | XF$SORT |
INPUT: | X=Name of file to sort (lbc string, 'A:NAME')
D=Address of user routine, 0 if no routine supplied |
OUTPUT: | None. |
Sorts an ordinary file using the Quick Sort algorithm. The files should be on
pack A:. A use routine can be supplied which is called during the sort,
usually to print information to the screen. When the user routine is called,
the A register contains 1-3 depending on which pass is being performed, and
the X register contains the record number during pass 1 and 3, or the number
of comparisons (divided by 10) on pass 2. The first pass generates a list of
tags for the file records. This is sorted on pass 2 with the Quick Sort
algorithm. Pass 3 then constructs a sorted file from the tag list. If there
is not enough memory to sort the file, then the file will be left unchanged.
The following errors can be generated:
234 File not found 254 out of memory Any other file error in exceptional circumstances. |
156 9C | XT$DIRM |
INPUT: | A=File type ($81-8F, or 0 for all files)
B=Maximum length of filename X=Address prompt (lbc string) UTW_S0h=Line number for prompt (must be 0-1, bottom of screen not allowed) UTW_S0l=Flags for the directory display (0 for no directory): Bit 0 - show the filenames Bit 1 - show the sizes of files on right Bit 2 - show the file types on left Bit 3 - include <*> as first directory entry Bit 4 - show file type after prompt, (e.g. "Dir of All A:") Bit 5 - Disable EXE key (used by DIR) Bit 6 - Disable MODE key (used by SORT). RTT_BUF=Default filename to be offered TLB_CPAK=Default device to be offered |
OUTPUT: | A=file type of chosen file (only if flags were non-zero)
RTT_BUF=Filename chosen TLB_CPAK=Device chosen carry=set if ON/Clear pressed |
Allows the user to get a directory of files. Produces a directory of files with a prompt like EDIT in PROG etc. If EXE is used to select a file, the filename will be printed after the prompt and the lower 2 or 3 lines of the screen will be cleared when the routine exits. |
172 AC | FN$ASIN |
INPUT: | None. |
OUTPUT: | None. |
Replaces the floating point number on the top of the run-time stack with its arcsine. Error 247 'Function argument error' may be returned. |
173 AD | FN$ACOS |
INPUT: | None. |
OUTPUT: | None. |
Replaces the floating point number on the top of the run-time stack with its arccosine. Error 247 'Function argument error' may be returned. |
142 8D | FN$MAX |
INPUT: | None. |
OUTPUT: | None. |
Returns the maximum of a list of floating point numbers. Before this service is called, push the word containing the number of floats in the list and then the address of the list on the run-time stack. This service pushes the result on the run-time stack without removing the two parameters. Error 249 'stack overflow' can be generated. |
138 8A | FN$MEAN |
INPUT: | None. |
OUTPUT: | None. |
Returns the mean of a list of floating point numbers. Before this service is
called, push the word containing the number of floats in the list and then the
address of the list on the run-time stack. This service pushes the result on
the run-time stack without removing the two parameters.
The following errors can be generated:
253 exponent range 249 stack overflow |
141 8D | FN$MIN |
INPUT: | None. |
OUTPUT: | None. |
Returns the minimum of a list of floating point numbers. Before this service is called, push the word containing the number of floats in the list and then the address of the list on the run-time stack. This service pushes the result on the run-time stack without removing the two parameters. Error 249 'stack overflow' can be generated. |
140 8C | FN$STD |
INPUT: | None. |
OUTPUT: | None. |
Returns the standard deviation of a list of floating point numbers. Before
this service is called, push the word containing the number of floats in the
list and then the address of the list on the run-time stack. This service
pushes the result on the run-time stack without removing the two parameters.
The following errors can be generated:
253 exponent range 249 stack overflow |
137 89 | FN$SUM |
INPUT: | None. |
OUTPUT: | None. |
Returns the sum of a list of floating point numbers. Before this service is
called, push the word containing the number of floats in the list and then the
address of the list on the run-time stack. This service pushes the result on
the run-time stack without removing the two parameters.
The following errors can be generated:
253 exponent range 249 stack overflow |
139 8B | FN$VAR |
INPUT: | None. |
OUTPUT: | None. |
Returns the sample variance of a list of floating point numbers. Before this
service is called, push the word containing the number of floats in the list
and then the address of the list on the run-time stack. This service pushes
the result on the run-time stack without removing the two parameters.
The following errors can be generated:
253 exponent range 249 stack overflow |
177 B1 | KB$CONK |
INPUT: | None. |
OUTPUT: | B=Key pressed. |
The cursor is switched on, and then the organiser waits until a key is pressed (just like KB$GETK). Afterwards the cursor is switched off, and the ASCII value of the keypress is returned. |
171 AB | LG$EDIT |
INPUT: | B=language editor function to be carried out. |
OUTPUT: | A=the editor flags. See below.
B=position in the current line X=the current line number |
Calls the language editor routine. It allows the editing of text in an
allocator cell, but does not handle files. Which of the 9 functions to be
carried out is in register B. Note that UDG 0 is assumed to already contain
an icon.
Function 0: Initialise parameters. Register A should contain the block file
type and byte UTW_S0h the low byte of the tag of allocator cell to use.
The cell must exist before calling this service, though it may be zeroed.
|
175 AF | LG$ENTR |
INPUT: | B=language editor function to be carried out. |
Calls the program routine. The function to be carried out depends on
register B.
Function 0: Unused
|
154 9A | LN$XSTT |
INPUT: | A=0 for 2-line translate, 1 for LZ translate.
B=function (0=tran proc, 1=tran calc, 2=locate error in calc, 3=loc err in proc) X=offset in Q-code where error occurred (error-locating only, else ignored. Must be in range) |
OUTPUT: | B=error code if there is one.
X=offset in textcell where error occurred if there is one. Qcode-cell=translated output if translating |
Exactly like LN$STRT, except that A contains 0 when translating for 2-line machines and 1 for 4-line machines. See LN$STRT for details. |
135 87 | MN$1DSP |
INPUT: | X=Address of menu string.
D=Bit mask of keys that exit the menu (bit n set if char n+1 exits). |
OUTPUT: | B=keypress used to exit menu (gives Exe if a letter key was used)
A=non-zero X=Address of menu item in the menu string. UTW_S0=number of the chosen item (0=first item) A=zero X=Associated address of menu item UTW_S0=Address of menu item in the menu string. |
Exactly the same as MN$DISP except that the menu is displayed only on the current cursor line, leaving the other lines undisturbed. This is exactly like the OPL function MENUN(1,..). See MN$DISP for details. The control characters 24 and 25 are useful in preparation to this service, as they display a dotted line (using UDG 2) to separate the top or bottom line from the rest of the screen, and put the cursor in the correct position. |
136 88 | MN$TITL |
INPUT: | X=Address of menu string.
D=Bit mask of keys that exit the menu (bit n set if char n+1 exits). |
OUTPUT: | B=keypress used to exit menu (gives Exe if a letter key was used)
A=non-zero X=Address of menu item in the menu string. UTW_S0=number of the chosen item (0=first item) A=zero X=Associated address of menu item UTW_S0=Address of menu item in the menu string. |
Exactly the same as MN$DISP except that the top line will show an icon (UDG 0) and the clock in the same way as the top level menu. UDG 0 is not affected and is assumed to already contain the icon to be used. See MN$DISP for details. |
134 86 | MN$XDSP |
INPUT: | X=Address of menu string.
D=Bit mask of keys that exit the menu (bit n set if char n+1 exits). |
OUTPUT: | B=keypress used to exit menu (gives Exe if a letter key was used)
A=non-zero X=Address of menu item in the menu string. UTW_S0=number of the chosen item (0=first item) A=zero X=Associated address of menu item UTW_S0=Address of menu item in the menu string. |
Exactly the same as MN$DISP except that the menu is displayed only on the lines below the current cursor position, leaving the other lines undisturbed. If the cursor is already on the bottom line, then menu overwrites that line. This is exactly like the OPL function MENUN(2,..). See MN$DISP for details. |
151 97 | TM$DNAM |
INPUT: | B=Day of week (0-6, 0=Monday) |
OUTPUT: | X=Address of three character string with day name in caps (e.g. 'MON') |
Converts number of the day of the week to a day name. |
170 AA | TM$MNAM |
INPUT: | B=Month of year (0-11) |
OUTPUT: | X=Address of three character string with month name in caps (e.g. 'JAN') |
Converts number of the month of the year to a month name. |
149 95 | TM$NDYS |
INPUT: | X=Address of 3 byte date (Year 0-255, Month 0-11, Day 0-30) |
OUTPUT: | A=preserved
B=High byte of days since 1/1/1900 X=low bytes of days since 1/1/1900 |
Returns the number of days difference between 1/1/1900 and the given date. If the given date is invalid, then the carry flag is set but no error code is in B. The A register is preserved. |
179 B3 | TM$TSET |
INPUT: | X=Address of 6-byte time/date (Y/M/D/H/M/S) |
OUTPUT: | None. |
Sets the system time. This service makes sure that the system time is not being updated at the time of copying. |
150 96 | TM$WEEK |
INPUT: | X=Address of 3 byte date (Year 0-255, Month 0-11, Day 0-30) |
OUTPUT: | A=preserved
B=Week number (0-52) X=preserved |
Returns the week number of the given date. The first monday of the year starts week 0, and the days just before that are the final week of the previous year. If the given date is invalid, then the carry flag is set but no error code is in B. The main applications like the diary convert the weeknumber from 0-52 to 1-53. |
158 9E | AM$ENTR |
INPUT: | B=Alarm function to be carried out (0-6) |
Calls the alarm routine. Which of the 7 functions to be carried out is in
register B.
Function 0: Initialise alarms, as on a cold boot. Clears all alarms and sets AMB_EI thus enabling alarm checking. Function 1: Top level alarm entry. Calls alarm as if the top level menu option was chosen. The screen will be used in 4-line mode, though the display mode is preserved on exit. Function 2: Check for alarms due within 2048 seconds. If any alarm (incl. diary alarms) is due immediately, it will go off. If there is an alarm due, the service exits with D containing the number of seconds before the next alarm (2<=D<2048), and the carry flag set. Otherwise, the carry flag is clear. This function is disabled if AMB_EI ($2335) is clear. Function 3: Checks for alarms due immediately. If any alarm (incl. diary alarms) is due immediately, it will go off. This function is disabled if AMB_EI ($2335) is clear. Function 4: Checks for unacknowledged diary alarms. If any diary alarms have gone off that haven't been acknowledged by pressing ON/CLEAR then the 'Review missed alarms' screen will be shown. Note that DP$SAVE/DP$REST is used to preserve the screen contents. This function is disabled if AMB_EI ($2335) is clear. Function 5: Disable alarms. This function copies AMB_EI to AMB_SEI and clears AMB_EI. This disables functions 2-4. Note that if called again, it will overwrite AMB_SEI, thus losing the previous alarm flag. Function 6: Restores alarm flag. The reverse of function 5. This function copies AMB_SEI back to AMB_EI. |
160 A0 | CA$ENTR |
INPUT: | None |
OUTPUT: | None |
Enters the calculator exactly as if the top level menu option were chosen. Note that it can only be called from OPL if all the system variables that the OPL language uses are preserved. |
167 A7 | DI$ENTR |
INPUT: | B=Diary function to be carried out. |
Calls the diary routine. Which of the 4 functions to be carried out is in
register B. Note that all options redefine the UDG's.
Function 0: Initialise diary, as on a cold boot. Function 1: Calls the diary as if the top level menu option was chosen. Function 2: Search current diary for given string. The string to search for is in RTT_FF ($22C9). If found, the matching diary entry is shown on the bottom two lines after which a key press is expected. EXE continues the search, ON/CLEAR aborts it, and MODE enters the diary at the entry found. On exit, the carry flag is set if the whole diary was searched. If clear, B contains 0 if ON was used to abort the search and 1 if MODE was pressed and the diary exited. Used by the utils-search menu option. Function 3: Calls the diary as if the 'Month' option was chosen in the top level menu. |
159 9F | NT$ENTR |
INPUT: | B=Notepad function to be carried out. |
Calls the notepad routine. Which of the 5 functions to be carried out is in
register B. Note that all functions clear the diary paste buffer (which is
used for the find string), and temporarily set the block file type and the
cell type for notepad editing.
Function 0: Initialise notepad, as on a cold boot. Clears the current notepad cell. Function 1: Top level Notepad entry. Calls Notepad as if the top level menu option was chosen. Function 2: Search. Searches current notepad and non-encrypted notepad files for given string. The string to search for is in RTT_FF ($22C9). If found, the matching file is shown on the bottom two lines after which a key press is expected. EXE continues the search, ON/CLEAR aborts it, and MODE enters the notepad with the file found. On exit, the carry flag is set if the end of the search was reached. If clear, B contains 0 if ON was used to abort the search and 1 if MODE was pressed and the notepad exited. Used by the utils-search menu option. Function 3: Enter named notepad. Calls the notepad as if an inserted notepad name in the top level menu was chosen. UTW_S0 points to the filename. Any error is displayed rather than returned. Function 4: Check if encrypted. Checks whether a notepad file has a password. UTW_S0 points to the filename. On exit, B=0 if not password protected, non-zero otherwise. Register A will contain the notepad flags. |
164 A4 | TI$ENTR |
INPUT: | B=Time function to be carried out. |
Calls the time routine. Which of the 2 functions to be carried out is in
register B.
Function 0: Initialise time, as on a cold boot. Actually, this option doesn't need to do anything! Function 1: Calls the time routine as if the top level menu option was chosen. |
166 A6 | WL$ENTR |
INPUT: | B=World function to be carried out. |
Calls the world routine. Which of the 3 functions to be carried out is in
register B.
Function 0: Initialise world, as on a cold boot. Sets the home and current city. Function 1: Calls world as if the top level menu option was chosen. Function 2: Returns the name of the base city and country. The city is stored at RTT_BF+100 and the country at RTT_BF+120, both as lbc strings. If the current base is set to a country (so no city is set) then the country is put at RTT_BF+100 and RTT_BF+120 is empty. |
168 A8 | XF$ENTR |
INPUT: | B=xfiles function to be carried out. |
Calls the xfiles routine. Which of the 6 functions to be carried out is in
register B.
Function 0: Initialise xfiles, as on a cold boot. This only sets the current file to be MAIN. Function 1: Calls xfiles as if the top level menu option was chosen. Function 2: Searches all ordinary files on all devices for the string given in the buffer RTT_FF ($22C9). The carry is set if the search was completed normally. If the carry is clear then B contains 1 if MODE was pressed after a match was found, or 0 if the search was aborted by an error or by pressing ON/CLEAR. Used by the utils-search menu option. Function 3: Search all packs for a file, and if found it is made the current file in xfiles. The filename is given by the lbc string at UTW_S0. This option is used when a filename in the top-level menu is chosen. Function 4: Calls the top-level FIND function. Function 5: Calls the top-level SAVE function. |
161 A1 | XT$ENTR |
INPUT: | B=Utility function to be carried out. |
Calls the Utils routine. Which of the 12 functions to be carried out is in
register B.
Function 0: Initialise system password notepad, as on a cold boot. Clears the current system password. Function 1: Calls utils as if the top level menu option was chosen. Function 2: Calls SEARCH as if the utils level menu option was chosen. Function 3: Calls INFO as if the utils level menu option was chosen. Function 4: Calls PASSW as if the utils level menu option was chosen. Function 5: Calls LANG as if the utils level menu option was chosen. Register A must contain 0 to disable the ON/CLEAR key, 1 otherwise. In fact A contains the low byte of the key mask used in the menu services. Function 6: Checks the system password if it is active. Used on warm boot. Function 7: Reset the machine. Used by the menu option RESET. Function 8: Format a rampak. Register A contains 1 for pack B:, and 2 for pack C:. Function 9: Calls DIR as if the utils level menu option was chosen. Function 10: Calls COPY as if the utils level menu option was chosen. Function 11: Calls DELETE as if the utils level menu option was chosen. |
178 B2 | UT$CMPB |
INPUT: | A=Length of first string
B=Length of second string X=Address of first string UTW_S0=Address of second string |
OUTPUT: | B=0 if equal, negative if <, positive if >.
X=preserved |
Two ASCII strings are compared, case dependent. Works exactly like UT$ICPB except that it is case dependent. See UT$ICPB for parameters. |
165 A5 | UT$SORT |
INPUT: | D=Number of items to sort
X=User interface routine |
OUTPUT: | None. |
Sort utility. This routine provides the Quick Sort algorithm to sort any
list. The user is expected to supply an interface routine for accessing and
comparing the items. This allows any type of item to be sorted. The user
routine is called with B containing the number of the pass (0,1,2).
During the first pass (B=0), the number of the item is given in X (0 means first item), and the user routine should return an identifying tag, for example the address in memory of that item. During the second pass (B=1), X and UTW_S0 contain the tags of the items to be compared. The user routine should return the condition flags as if the instruction CMP (item X),(item UTW_S0) had been carried out. During the final pass (B=2), X will contain the tag for the each item in sorted order, allowing the user routine to build up a sorted list. Note that the user routine must not use the run-time buffer RTT_BF. This service may return error 254 (out of memory). |
148 94 | UT$WILD |
INPUT: | A=Length of major string
B=Length of minor string X=Address of major string UTW_S0=Address of minor string |
OUTPUT: | B=Offset within major string where minor string is found (0 if at start), length of major string if not found. |
Finds the location of one string inside another, and allows wild cards. Works exactly like UT$ISBF except that the wild characters '*' and '+' are allowed. |