© MCS Electronics, 1995-2007
Print "File demo"
Print Filelen("josef.img");" length" ' length of file
Print Filetime("josef.img");" time" ' time file was changed
Print Filedate("josef.img");" date" ' file date
FIX
Action
Returns for values greater then zero the next lower value, for values less then zero the next upper value.
Syntax
var = FIX( x )
Remarks
Var |
A single variable that is assigned with the FIX of variable x. |
X |
The single to get the FIX of. |
|
|
See Also
INT , ROUND , SGN
Example
'----------------------------------------------------------------------------------------- |
:round_fix_int.bas |
'name |
'copyright |
: (c) 1995-2005, MCS Electronics |
'purpose |
: demo : ROUND,FIX |
'micro |
:Mega48 |
'suited for demo |
:yes |
: no |
'commercial addon needed |
'----------------------------------------------------------------------------------------- |
|
|
$regfile= "m48def.dat" |
' specify the used micro |
$crystal= 4000000 |
|
' used crystal frequency |
$baud = 19200 |
|
' use baud rate |
$hwstack = 32 |
|
' default use 32 for the hardware stack |
$swstack= 10 |
|
' default use 10 for the SW stack |
$framesize= 40 |
|
' default use 40 for the frame space |
Dim SAs Single,ZAs Single
For S= -10 To 10 Step 0.5
Print S;Spc(3);Round(s);Spc(3);Fix(s);Spc(3);Int(s)
Next
End
FLUSH
Action
Write current buffer of File to Card and updates Directory
© MCS Electronics, 1995-2007
Syntax
FLUSH #bFileNumber
FLUSH
Remarks
BFileNumber Filenumber, which identifies an opened file such as #1 or #ff
This function writes all information of an open file, which is not saved yet to the Disk. Normally the Card is updated, if a file will be closed or changed to another sector.
When no file number is specified, all open files will be flushed.
See also
INITFILESYSTEM , OPEN , CLOSE, PRINT, LINE INPUT, LOC, LOF , EOF , FREEFILE , FILEATTR , SEEK , BSAVE , BLOAD , KILL , DISKFREE , DISKSIZE , GET , PUT , FILEDATE , FILETIME , FILEDATETIME , DIR , FILELEN , WRITE , INPUT
ASM
Calls |
_FileFlush |
_FilesAllFlush |
Input |
r24: filenumber |
|
Output |
r25: Errorcode |
C-Flag: Set on Error |
|
|
|
Partial Example
$include "startup.inc"
'open the file in BINARY mode Open "test.biN" For Binary As #2 Put #2 , B ' write a byte
Put #2 , W ' write a word Put #2 , L ' write a long
Ltemp = Loc(#2) + 1 ' get the position of the next byte Print Ltemp ;" LOC"' store the location of the file pointer Print Lof(#2);" length of file"
Print Fileattr(#2);" file mode"' should be 32 for binary Put #2 , Sn ' write a single
Put #2 , Stxt ' write a string
Flush #2 ' flush to disk
Close #2
FORMAT
Action
Formats a numeric string.
Syntax
target = FORMAT(source, "mask")
page -490-
© MCS Electronics, 1995-2007
Remarks
target |
The string that is assigned with the formatted string. |
source |
The source string that holds the number. |
mask |
The mask for formatting the string. |
|
When spaces are in the mask, leading spaces will be added when the |
|
length of the mask is longer than the source string. |
|
" " '8 spaces when source is "123" it will be " 123". |
|
When a + is in the mask (after the spaces) a leading + will be assigned |
|
when the number does not start with the - sign. |
|
"+" with number "123" will be "+123". |
|
When zero's are provided in the mask, the string will be filled with leading |
|
zero;s. |
|
" +00000" with 123 will be " +00123" |
|
An optional decimal point can be inserted too: |
|
"000.00" will format the number 123 to "001.23" |
|
Combinations can be made but the order must be : spaces, + , 0 an |
|
optional point and zero's. |
|
|
When you do not want to use the overhead of the single or double, you can use the LONG. You can scale the value by a factor 100.
Then use FORMAT to show the value.
For example : Dim L as Long, X as Long , Res as Long L = 1
X = 2
Res = L / X
Now this would result in 0 because an integer or Long does not support floating point. But when you scale L with a factor 100, you get :
L= 100
X = 2
Res = L / X
Now Res will be 50. To show it the proper way we can use FORMAT. Format works with strings so the variables need to be converted to string first.
Dim S1 as string * 16 : s1 = Str(Res)
Print Format(s1,"000.00")
See also
FUSING
Example
'----------------------------------------------------------------------------- |
|
------------ |
: format.bas |
'name |
'copyright |
: (c) 1995-2005, MCS Electronics |
'purpose |
: demo : FORMAT |
'micro |
: Mega48 |
'suited for demo |
: yes |
'commercial addon needed |
: no |
'-----------------------------------------------------------------------------
------------
$regfile = "m48def.dat" ' specify the used
|
© MCS Electronics, 1995-2007 |
micro |
' used crystal |
$crystal = 4000000 |
frequency |
' use baud rate |
$baud = 19200 |
$hwstack = 32 |
' default use 32 |
for the hardware stack |
' default use 10 |
$swstack = 10 |
for the SW stack |
' default use 40 |
$framesize = 40 |
for the frame space |
|
Dim S As String * 10 |
|
Dim I As Integer |
|
S = "12345" |
|
S = Format(s , "+") |
|
Print S |
|
S = "123" |
|
S = Format(s , "00000") |
|
Print S |
|
S = "12345" |
|
S = Format(s , "000.00") |
|
Print S |
|
S = "12345" |
|
S = Format(s , " +000.00") |
|
Print S |
|
End |
|
FOR-NEXT
Action
Execute a block of statements a number of times.
Syntax
FOR var = start TO end [STEP value]
Remarks
var |
The variable counter to use |
start |
The starting value of the variable var |
end |
The ending value of the variable var |
value |
The value var is increased/decreased with each time NEXT is |
|
encountered. |
|
|
For incremental loops, you must use TO.
For decremental loops, you must use a negative step size.
You must end a FOR structure with the NEXT statement.
The use of STEP is optional. By default, a value of 1 is used.
When you know in advance how many times a piece of code must be executed, the FOR..NEXT loop is convenient to use.
page -492-