|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: M T
Length: 2978 (0xba2)
Types: TextFile
Names: »MOVE_AND_FILL_ASM«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
└─⟦77aa8350c⟧ »DATA«
└─⟦f794ecd1d⟧
└─⟦24d1ddd49⟧
└─⟦this⟧
; The use of this system is subject to the software license terms and
; conditions agreed upon between Rational and the Customer.
;
; Copyright 1988 by Rational.
;
; RESTRICTED RIGHTS LEGEND
;
; Use, duplication, or disclosure by the Government is subject to
; restrictions as set forth in subdivision (b)(3)(ii) of the Rights in
; Technical Data and Computer Software clause at 52.227-7013.
;
;
; Rational
; 3320 Scott Boulevard
; Santa Clara, California 95054-3197
;
; PROPRIETARY AND CONFIDENTIAL INFORMATION OF RATIONAL;
; USE OR COPYING WITHOUT EXPRESS WRITTEN AUTHORIZATION
; IS STRICTLY PROHIBITED. THIS MATERIAL IS PROTECTED AS
; AN UNPUBLISHED WORK UNDER THE U.S. COPYRIGHT ACT OF
; 1976. CREATED 1988. ALL RIGHTS RESERVED.
;
;
.module "MOVE_AND_FILL"
.include "^standard_assembler_include_file"
.include "^common.runtime_definitions"
comp_unit runtime_compunit
.sect predefined_code,code,relocatable,alignment:=2
.gbl.a __move_bytes
.gbl.a __fill_bytes
;
;
; procedure Move_Bytes (From : Address;
; To : Address;
; Length : Natural);
;
subprogram sp_rt,sp.internal,linkage.simple
__move_bytes:
.local
$from'offset equ 4
$to'offset equ 8
$length'offset equ 12
movea.l ($from'offset,sp),a0 ; a0 := from'address
movea.l ($to'offset,sp),a1 ; a1 := to'address
move.l ($length'offset,sp),d0 ; d0 := length
subq.l #1,d0 ; adjust for DBcc
blt.s $done ; check for 0 length
move.l d0,d1 ; d1 := count
swap.w d1 ; d1 := high bits of count
$loop: move.b (a0)+,(a1)+ ; move byte from - to
dbf.w d0,$loop ; do iteration
dbf.w d1,$loop
$done: rtd #12 ; return
;
;
; procedure Fill_Bytes (Target : Address;
; Length : Natural;
; Value : Byte);
;
subprogram sp_rt,sp.internal,linkage.simple
__fill_bytes:
.local
$target'offset equ 4
$length'offset equ 8
$value'offset equ 12
movea.l ($target'offset,sp),a0 ; a0 := target'address
move.l ($value'offset,sp),d1 ; d1 := value
move.l ($length'offset,sp),d0 ; d0 := length
subq.l #1,d0 ; adjust for DBcc
blt.s $done ; check for 0 length
$fill: move.b d1,(a0)+ ; move target (i) := value
dbf.w d0,$fill ; do iteration
clr.w d0
subq.l #1,d0
bge.s $fill
$done: rtd #12
end_subprograms
.end