(* BlockOps.def provides a Logitech compatible module for block moves. Copyright (C) 2005-2024 Free Software Foundation, Inc. Contributed by Gaius Mulley . This file is part of GNU Modula-2. GNU Modula-2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . *) DEFINITION MODULE BlockOps ; FROM SYSTEM IMPORT ADDRESS ; (* MoveBlockForward - moves, n, bytes from, src, to, dest. Starts copying from src and keep copying until, n, bytes have been copied. *) PROCEDURE BlockMoveForward (dest, src: ADDRESS; n: CARDINAL) ; (* MoveBlockBackward - moves, n, bytes from, src, to, dest. Starts copying from src+n and keeps copying until, n, bytes have been copied. The last datum to be copied will be the byte at address, src. *) PROCEDURE BlockMoveBackward (dest, src: ADDRESS; n: CARDINAL) ; (* BlockClear - fills, block..block+n-1, with zero's. *) PROCEDURE BlockClear (block: ADDRESS; n: CARDINAL) ; (* BlockSet - fills, n, bytes starting at, block, with a pattern defined at address pattern..pattern+patternSize-1. *) PROCEDURE BlockSet (block: ADDRESS; n: CARDINAL; pattern: ADDRESS; patternSize: CARDINAL) ; (* BlockEqual - returns TRUE if the blocks defined, a..a+n-1, and, b..b+n-1 contain the same bytes. *) PROCEDURE BlockEqual (a, b: ADDRESS; n: CARDINAL) : BOOLEAN ; (* BlockPosition - searches for a pattern as defined by pattern..patternSize-1 in the block, block..block+blockSize-1. It returns the offset from block indicating the first occurence of, pattern. MAX(CARDINAL) is returned if no match is detected. *) PROCEDURE BlockPosition (block: ADDRESS; blockSize: CARDINAL; pattern: ADDRESS; patternSize: CARDINAL) : CARDINAL ; END BlockOps.