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 - 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