80Bus News 
May–June 1983, Volume 2, Issue 3 



Page 34 of 59 




The workings of NASCOM ROM BASIC Ver 4.7  PAGE 14  

DIM  EF28  DIM routine. Flag “create” variable and join common.  
GETVAR  EF2D 
Look for specified variable. Use FORFLG to:–  
FRE  F0D0  FRE(X) routine. If X is a numeric expression then return the amount of memory between ARREND and the stack. If X is a string expression then do a “Garbage collection” and return the number of unused bytes in the string area.  
POS  F0FE  POS(X) routine. Return the current cursor position (CURPOS).  
DEF  F106 
DEF FN routine. Define a user defined function.  
DQFN  F133  Call an FN function. Save any previous argument name and value on the stack, Evaluate the function an then restore the previous argument name and value.  
TDTEST  F17B  If in direct mode then output “?ID Error” else return.  
CHEKFN  F189  Make sure “FN” follows and flag find FN function definition.  
STR  F19A  STR$ routine. Convert current numeric value to ASCII and create a temporary string for it.  
SAVSTR  F1AA  Save current string in string area.  
MKTMST  F1BF  Make a temporary string.  
PRNUMS  F20F  Print number string at HL.  
PRS  F210  Print string at HL.  
TESTR  F229  Test if enough string space. If insufficient then GRBAGE collect and test again. If still insufficient space then output “?0S Error”.  
GRBAGE  F253 
Do a “Garbage collection” on string area.  
CONCAT  F306  Concatenate two strings (Eg A$+B$).  
GETSTR  F350  Get a string routine.  
LEN  F382  LEN(X$) routine.  
ASC  F391  ASC(X$) routine.  
CHR  F3A2  CHR$(X) routine. 
The workings of NASCOM ROM BASIC Ver 4.7  PAGE 15  

LEFT  F3B2  LEFT$(X$,X) routine.  
RIGHT  F3E2  RIGHT$ (X$,X) routine.  
MID  F3EC 
MID$(X$,P[,L]) routine.  
VAL  F41C  VAL(X$) routine.  
INP  F441  INP(X) routine. Set up port number in work space and call INPSUB skeleton. Return value from port.  
POUT  F44D  OUT P,N routine. Set up port number in work space and call OUTSUB skeleton to output value to the port.  
WAIT  F453  WAIT P,A,X routine. Set up port number in work space. Call INPSUB to get byte, XOR value with X if X is supplied and then AND the value with A. If this value is zero then go back to WAITLP until value is nonzero.  
FNDNUM  F481  Get next number from code string.  
CSAVE  F4C3  CSAVE routine. If CSAVE* jump to array save routine ARRSV1. Evaluate string expression for name and save program.  
CLOAD  F4F9  CLOAD routine. If CLOAD* jump to array load routine ARRLD1. See if CLOAD? and save status. Evaluate string expression for file name (None given – any file will do) and search for that file. When found load it into memory.  
PEEK  F5A3  PEEK(X) routine.  
POKE  F5AA  POKE A,V routine.  
ROUND  F5BB  Round number up by adding 0.5 to it.  
ADDPHL  F5BE  Add floating point number at HL to the current value in FPREG.  
SUBPHL  F5C4  Subtract the current value from the value at HL and leave the result in FPREG.  
PSUB  F5C8  Subtract FPREG from the value on the stack and leave the result in PPREG.  
SUBCDE  F5CA  Subtract FPREG from the value in BCDE and leave the result in FPREG.  
FPADD  F5CD  Add the value in BCDE to the value in FPREG.  
MINCDE  F60D  Subtract value in FPREG from value in BCDE.  
NORMAL  F638  Normalise value in BCDE.  
PLUCDE  F672  Add value in FPREG to value in BCDE.  
COMPL  F67E  Complement value in BCDE. 
NASCOM ROM BASIC source code is available in ASM and LST file format.



Page 34 of 59 



