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: ┃ T X ┃
Length: 3165 (0xc5d) Types: TextFile Names: »XLBMT_MEM_COPY_68K_UNIX_S«
└─⟦85b835f43⟧ Bits:30000549 8mm tape, Rational 1000, Xlib rev 6.00 └─ ⟦0c20f784e⟧ »DATA« └─⟦1abbe589f⟧ └─⟦059497ac5⟧ └─⟦this⟧
|---For use with TeleGen2 on 68K Unix | |------------------------------------------------------------------------------ |-- Copyright 1990 - 1991 by Rational, Santa Clara, California. |-- |-- All Rights Reserved. |-- |-- Permission to use, copy, modify, and distribute this software and its |-- documentation for any purpose and without fee is hereby granted, |-- provided that the above copyright notice(s) appear in all copies and that |-- both that copyright notice(s) and this permission notice appear in |-- supporting documentation, and that the name of Rational not be used in |-- advertising or publicity pertaining to distribution of the software |-- without specific, written prior permission. |-- |-- Rational disclaims all warranties with regard to this software, including |-- all implied warranties of merchantability and fitness, in no event shall |-- Rational be liable for any special, indirect or consequential damages or |-- any damages whatsoever resulting from loss of use, data or profits, whether |-- in an action of contract, negligence or other tortious action, arising out |-- of or in connection with the use or performance of this software. |------------------------------------------------------------------------------ | | Copy memory, a byte at a time, from one place to another. We watch out for | overlapping to/from spaces and we "do the right thing". .data .text .proc |---Usage: | Xlbmt_Mem_Copy( To : System.Address; | From : System.Address; | Bytes : Long_Integer ); .globl _Xlbmt_Mem_Copy _Xlbmt_Mem_Copy: |---Standard Ada prologue link a6,#-4 moveml #0x00C0,sp@- movl sp,a6@(-4) |---Get the first argument in a0, then get second argument in a1, and then | get the third argument in d0. movl a6@(16),a0 | Get 1st argument movl a6@(12),a1 | Get 2nd argument movl a6@(8),d0 | Get 3rd argument jeq L20 | 0 means nothing to copy |---If our arguments do not overlap then we can just copy starting at the | 'First of the data. We can also copy that way if they overlap thei | right way. cmpl a0,a1 | Compare To and From jge L10 | No overlap (or it's ok) |---We will play safe and copy starting at the end of the data. addl d0,a0 | One past the end of destination addl d0,a1 | One past the end of source L5: movb a1@-,a0@- | Copy one byte subl #1,d0 | Decrement counter jne L5 | Loop until done (0) jmp L20 | Return to caller |---Simple copy loop. L10: movb a1@+,a0@+ | Copy one byte subl #1,d0 | Decrement counter jne L10 | Loop until done (0) |---Standard Ada epilogue L20: moveml sp@+,#0x0300 unlk a6 rts .data