home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
300-399
/
ff369.lzh
/
VaxTerm
/
src
/
str.a
< prev
next >
Wrap
Text File
|
1990-08-15
|
3KB
|
159 lines
INCLUDE "exec/types.i"
INCLUDE "graphics/gfx.i"
INCLUDE "graphics/rastport.i"
csect str.o,0,0,1,2
XDEF _stretch
UPPER_SIDE EQU 3
LOWER_SIDE EQU 4
HORIZ_ONLY EQU 6
RASTPORT EQU 48
X_COORD EQU 52
Y_COORD EQU 56
WIDTH EQU 60
HEIGHT EQU 64
MODE EQU 68
INNER_WIDTH EQU 76
INNER_HEIGHT EQU 80
_stretch MOVEM.L D2-D7/A2-A6,-(A7)
MOVEA.L RASTPORT(A7),A0
MOVEA.L rp_BitMap(A0),A0
MOVE.W bm_BytesPerRow(A0),D7
MOVE.L HEIGHT(A7),D6
MOVE.W D6,D2
SUBQ.W #1,D2
MOVE.W D2,D4
CMPI.L #HORIZ_ONLY,MODE(A7)
BNE upper_side
horiz_only MOVE.W D2,D3
SUBQ.W #1,D3
MOVEQ #-2,D0
MOVEQ #-2,D1
BRA counters_set
upper_side MOVE.L HEIGHT(A7),D6
ASR.W #1,D6
CMPI.L #LOWER_SIDE,MODE(A7)
BEQ lower_side
CMPI.L #UPPER_SIDE,MODE(A7)
BNE exit
SUBQ.W #1,D6
MOVEQ #-1,D0
MOVEQ #-2,D1
BRA sides
lower_side MOVEQ #1,D4
MOVEQ #1,D0
MOVEQ #2,D1
sides MOVE.W D6,D2
MOVE.W D2,D3
counters_set MOVE.W D4,D5
SUBQ.W #1,D5
MOVE.L Y_COORD(A7),D6
ADD.W D6,D2
ADD.W D6,D3
ADD.W D6,D4
ADD.W D6,D5
MOVE.L WIDTH(A7),D6
ADD.L X_COORD(A7),D6
SUBQ.L #1,D6
MOVEA.W D6,A6
ASR.L #3,D6
MULS.W D7,D2
ADD.L D6,D2
MULS.W D7,D3
ADD.L D6,D3
MOVE.W A6,D6
ANDI.W #7,D6
MOVEA.W #7,A6
SUBA.W D6,A6
MOVE.W A6,D6
SWAP D6
MOVEA.L D6,A6
MOVE.L WIDTH(A7),D6
ASL.L #1,D6
ADD.L X_COORD(A7),D6
SUBQ.L #1,D6
MOVEA.W D6,A6
ASR.L #3,D6
MULS.W D7,D4
ADD.L D6,D4
MULS.W D7,D5
ADD.L D6,D5
MULS.W D7,D0
MULS.W D7,D1
MOVE.L WIDTH(A7),D6
ASR.L #3,D6
ADD.L D6,D0
ASL.L #1,D6
ADD.L D6,D1
MOVEQ #0,D7
MOVE.B bm_Depth(A0),D7
SUBQ.B #1,D7
ASL.B #2,D7
plane_loop MOVEA.L bm_Planes(A0,D7.W),A1
MOVEA.L A1,A2
ADDA.L D2,A2
MOVEA.L A1,A3
ADDA.L D3,A3
MOVEA.L A1,A4
ADDA.L D4,A4
MOVEA.L A1,A5
ADDA.L D5,A5
MOVEM.L D2-D5,-(A7)
MOVE.L INNER_HEIGHT(A7),D3
ASR.B #1,D3
SUBQ.B #1,D3
line_loop MOVE.L INNER_WIDTH(A7),D2
SUBQ.W #1,D2
MOVE.L A6,D4
ANDI.B #7,D4
MOVEQ #7,D5
SUB.B D4,D5
SWAP D4
pixel_loop BTST.B D4,(A2)
BEQ reset_bit_1
BSET.B D5,(A4)
ADDQ.B #1,D5
BSET.B D5,(A4)
BRA bit_set_1
reset_bit_1 BCLR.B D5,(A4)
ADDQ.B #1,D5
BCLR.B D5,(A4)
bit_set_1 SUBQ.B #1,D5
BTST.B D4,(A3)
BEQ reset_bit_2
BSET.B D5,(A5)
ADDQ.B #1,D5
BSET.B D5,(A5)
BRA bit_set_2
reset_bit_2 BCLR.B D5,(A5)
ADDQ.B #1,D5
BCLR.B D5,(A5)
bit_set_2 ADDQ.B #1,D4
ANDI.B #7,D4
BNE no_next_source
SUBA.L #1,A2
SUBA.L #1,A3
no_next_source ADDQ.B #1,D5
ANDI.B #7,D5
BNE no_next_dest
SUBA.L #1,A4
SUBA.L #1,A5
no_next_dest DBRA D2,pixel_loop
ADDA.L D0,A2
ADDA.L D0,A3
ADDA.L D1,A4
ADDA.L D1,A5
DBRA D3,line_loop
MOVEM.L (A7)+,D2-D5
SUBQ.B #4,D7
BPL plane_loop
exit MOVEM.L (A7)+,D2-D7/A2-A6
RTS
END