|
|
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: T X
Length: 3428 (0xd64)
Types: TextFile
Names: »XLBMT_LOGICAL_8_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.
|------------------------------------------------------------------------------
|
| Logical operations for unsigned 8-bit data. TeleGen2 passess unsigned 8-bit
| data as signed 16-bit words.
.data
.text
.proc
|---Usage:
| A := Xlbmt_And_8( A,B : U_Short );
| A := Xlbmt_Or_8 ( A,B : U_Short );
| A := Xlbmt_Xor_8( A,B : U_Short );
| A := Xlbmt_Not_8( A : U_Short );
| A := Xlbmt_Shift_8( A : U_Short; B : Natural );
.globl _Xlbmt_And_8
_Xlbmt_And_8:
movw a6@(10),d0 | Get argument A
andw a6@(8),d0 | AND argument B
rts | Return result
.globl _Xlbmt_Or_8
_Xlbmt_Or_8:
movw a6@(10),d0 | Get argument A
orw a6@(8),d0 | OR argument B
rts | Return result
.globl _Xlbmt_Xor_8
_Xlbmt_Xor_8:
movw a6@(10),d0 | Get argument A
movw a6@(8),d1 | Get argument B
eorw d1,d0 | XOR arguments
rts | Return result
.globl _Xlbmt_Not_8
_Xlbmt_Not_8:
movw a6@(8),d0 | Get argument A
notb d0 | NOT argument A
rts | Return result
|---Note: Abs shift amount > 8 results in 0; this is the required behavior!
.globl _Xlbmt_Shift_8
_Xlbmt_Shift_8:
movw a6@(10),d0 | Get argument A
movw a6@(8),d1 | Get argument B
jlt L40 | Jump for negative shift amount
cmpw #8,d1 | Shift amount more than 8?
jge L41 | Yes, return 0
lslb d1,d0 | Shift to the left for positive
rts | Return result
L40: negw d1 | Make shift amount positive
cmpw #8,d1 | Shift amount more than 8?
jge L41 | Yes, return 0
lsrb d1,d0 | and now shift to the right
rts | Return result
L41: clrl d0 | Return 0
rts
.data