Following the comments in Note 19, it was decided that there is a need for two routines to assist a user in getting a character to the desired size in his own region.
STCHSZ (XF,YFT)
will call TEXPAN with suitable arguments so that characters will appear to be defined in a grid XF by YF, in the units of the current region.
GVCHSZ (XF,YF)
will set XF,YF to suitable values so that, when they are used as arguments for TEXPAN, characters will appear the same relative size as they are when used in basic 'SD4020' region.
Both routines will make use of file VT to get details of character size. They will therefore give the correct results for the currently selected font, and any other fonts of similar characteristics.
Currently, each library can hold 128 entries. Since a font consists of 64 characters together with the files VT, NL and BS, only one font can be held in a file, wasting the rest of the space.
It was therefore decided that three of the least used characters would be omitted from the font when it is stored, so that two fonts can be kept in one file. These three characters will be available in another library, and can be individually accessed if required.
It has been found in practice that a 'single shot' conditional is required, in contrast to WHILE which leads to repeated commands. The routine
IFS (EXP1,CND,EXP2)
wi11 cause the following command to be obeyed once only if the condition is satisfied.
At the moment, files may only be added to the end of the sequence list. While this is no restriction when the original list is set up, it is restrictive if further items are to be added during sequence execution. The following two routines, corresponding to ADSOLG, ADSQLL, will add the new item after the specified second file, which must, already be present.
INSQLG (file1,advmk,locsp,file2,filno) INSQLL (file1,advmk,locsp,file2,filno)
A useful additional facility would be the automatic indexing of the pointer variable when an array reference using AR is made. The function
AIR('IND1','IND2','IND3')
wi11 behave as AR, but the pointer in IND3 wil1 be incremented.
The current method of dealing with regions does not easily allow the system to give a user a 'free' region on request. Routines such as WIPE, therefore, which require a free region as workspace, will have to be given a working region number as a parameter by the user.
Again, when performing some action such as WIPE, it is necessary to be able to access region parameters at run time. The following display routines load index registers.
RDLIM (X1,Y1,X2, Y2)
reads the current region limits into variables X1,Y1,X2,Y2
RDPLIM (P,XP1,YP1,XP2,YP2)
reads the RGPLIM arguments of the current region into the specified index variables.
RDVISO (XM1,XM0)
reads the current visibility settings
RDBASE (SW)
reads the current SWOUTP setting
RDSHAP (CNV, BSC)
reads the current region shape parameters.