You are on page 1of 3

ScannerAndTechniforFreeportv6 / subFill (SBR4)

Block: subFill
Author:
Created: 08/02/2010 09:53:15 pm
Last Modified: 08/09/2010 03:47:00 pm

Symbol Var Type Data Type Comment


EN IN BOOL
LD0 srcByte IN DWORD
LD4 TotalBytes IN DWORD
LB8 FillWith IN BYTE
IN
IN_OUT
OUT
LD9 Counter TEMP DWORD
LD13 Pointer TEMP DWORD
TEMP

1/3
ScannerAndTechniforFreeportv6 / subFill (SBR4)

This function is used to fill a specified data area(srcByte to srcByte + TotalBytes) with a specified Byte(FillWith).

IN:
SrceByte - Starting Byte of array to fill
TotalBytes - How many Bytes to fill
FillWith - What to fill the area with

Temp:
Counter - Used for loop
Pointer - Pointer incremented in the loop for the area to put the "FillWith" data

Example:
IN:
SrcByte = 100
TotalBytes = 10
Fillwith = 'M'

This function will loop 10 times.


1st pass will move 'M' into VB100
2nd pass will move 'M' into VB101
.
.
10th pass will move 'M' into VB109
Network 1 Initialize #Pointer and #Counter
1. Create #Pointer, pointing at VB0
2. Add #srcByte to #Pointer
3. Zero out counter

AlwaysON MOV_DW
EN ENO

&VB0 IN OUT #Pointer

ADD_DI
EN ENO

#srcByte IN1 OUT #Pointer


#Pointer IN2

MOV_DW
EN ENO

+0 IN OUT #Counter

Symbol Address Comment


AlwaysON SM0.0

2/3
ScannerAndTechniforFreeportv6 / subFill (SBR4)

Network 2
LABEL 99
Jump here until all data has been cleared from previous scanned data

99
LBL

Network 3 CLEAR OUT OLD SCANNED DATA


Move #FillWith into #Pointer
Increment POINTER
Increment COUNTER

Example #Pointer area (assume srcByte = 100)


1st - VB100
2nd - VB101
3rd - VB102
.
.
Nth - VB100 + TotalBytes

AlwaysON MOV_B
EN ENO

#FillWith IN OUT *#Pointer

INC_DW
EN ENO

#Pointer IN OUT #Pointer

INC_DW
EN ENO

#Counter IN OUT #Counter

Symbol Address Comment


AlwaysON SM0.0

Network 4
If COUNTER < TotalBytes then jump to 99

#Counter 99
<D JMP
#TotalBytes

3/3

You might also like