GET

 

Action

Reads a byte from the hardware or software UART.

Reads data from a file opened in BINARY mode.

 

Syntax

GET #channel, var

GET #channel, var , [pos] [, length]

 

 

Remarks

GET in combination with the software/hardware UART is provided for compatibility with BASCOM-8051. It reads one byte

 

GET in combination with the AVR-DOS filesystem is very flexible and versatile. It works on files opened in BINARY mode and you can reads all data types.

#channel

A channel number, which identifies an opened file. This can be a hard coded constant or a variable.

Var

The variable or variable array that will be assigned with the data from the file

Pos

This is an optional parameter that may be used to specify the postion where the reading must start from. This must be a long variable.

Length

This is an optional parameter that may be used to specify how many bytes must be read from the file.

 

By default you only need to provide the variable name. When the variable is a byte, 1 byte wil be read. When the variable is a word or integer, 2 bytes will be read. When the variable is a long or single, 4 bytes will be read. When the variable is a string, the number of bytes that will be read is equal to the dimensioned size of the string. DIM S as string * 10 , would read 10 bytes.

Note that when you specify the length for a string, the maximum length is 255. The maximum length for a non-string array is 65535.

 

Example :

GET #1 , var ,,2 ?read 2 bytes, start at current position

GET #1, var , PS ?start at position stored in long PS

GET #1, var , PS, 2 ?start at position stored in long PS and read 2 bytes

 

ASM

 

current position

goto new position first

Byte:

 

_FileGetRange_1

 Input:

  r24: File number

  X: Pointer to variable

  T-Flag cleared

_FileGetRange_1

 Input:

  r24: File number

  X: Pointer to variable

  r16-19 (A): New position (1-based)

  T-Flag Set

Word/Integer:

 

_FileGetRange_2

 Input:

  r24: File number

  X: Pointer to variable

  T-Flag cleared

_FileGetRange_2

 Input:

  r24: File number

  X: Pointer to variable

  r16-19 (A): New position (1-based)

  T-Flag Set

Long/Single:

 

_FileGetRange_4

 Input:

  r24: File number

  X: Pointer to variable

  T-Flag cleared

_FileGetRange_4

 Input:

  r24: File number

  X: Pointer to variable

  r16-19 (A): New position (1-based)

  T-Flag Set

String (<= 255 Bytes) with fixed length

 

_FileGetRange_Bytes

 Input:

  r24: File number

  r20: Count of Bytes

  X: Pointer to variable

  T-Flag cleared

_FileGetRange_Bytes

 Input:

  r24: File number

r20: Count of bytes 

  X: Pointer to variable

  r16-19 (A): New position (1-based)

  T-Flag Set

Array (> 255 Bytes) with fixed length

 

_FileGetRange

 Input:

  r24: File number

  r20/21: Count of Bytes

  X: Pointer to variable

  T-Flag cleared

_FileGetRange

 Input:

  r24: File number

  r20/21: Count of bytes

  X: Pointer to variable

  r16-19 (A): New position (1-based)

  T-Flag Set

 

 Output from all kind of usage:

  r25: Error Code

  C-Flag on Error

  X: requested info

 

Example

'for the binary file demo we need some variables of different types
Dim B As Byte , W As Word , L As Long , Sn As Single , Ltemp As Long
Dim Stxt As String * 10
B = 1 : W = 50000 : L = 12345678 : Sn = 123.45 : Stxt = "test"

'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 Seek(#2) ; " = LOC+1"

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

'now open the file again and write only the single
Open "test.bin" For Binary As #2
L = 1 'specify the file position
B = Seek(#2 , L) ' reset is the same as using SEEK #2,L
Get #2 , B ' get the byte
Get #2 , W ' get the word
Get #2 , L ' get the long
Get #2 , Sn ' get the single
Get #2 , Stxt ' get the string
Close #2