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