mirror of
https://github.com/Interlisp/maiko.git
synced 2026-01-14 15:36:34 +00:00
1684 lines
25 KiB
ArmAsm
Executable File
1684 lines
25 KiB
ArmAsm
Executable File
# @(#) bbt68k.s Version 1.1 (4/21/92). copyright Venue & Fuji Xerox #
|
|
########################################################################
|
|
# #
|
|
# b i t b l t 6 8 K #
|
|
# #
|
|
# Hand-optimized bitblt for the MC68020. This was created #
|
|
# by taking Don Charnley's C version & creating an assembler #
|
|
# intermediate file, then hand tuning. #
|
|
# #
|
|
# bitblt68K(srcbase, dstbase, sx, dx, width, height, #
|
|
# srcbpl, dstbpl, backwardflg, src_comp, op, #
|
|
# gray, num_gray, curr_gray_line) #
|
|
# #
|
|
# #
|
|
# #
|
|
# #
|
|
########################################################################
|
|
.data
|
|
.text
|
|
LL0:
|
|
.proc
|
|
LF101 = 128
|
|
LS101 = 15608
|
|
LFF101 = 92
|
|
LSS101 = 0
|
|
LV101 = 92
|
|
|
|
|
| Argument offsets on the stack
|
|
|
|
|
#define srcbase a6@(8)
|
|
#define dstbase a6@(12)
|
|
#define sx a6@(16)
|
|
#define dx a6@(20)
|
|
#define width a6@(24)
|
|
#define height a6@(28)
|
|
#define srcbpl a6@(32)
|
|
#define dstbpl a6@(36)
|
|
#define backwardflg a6@(40)
|
|
#define src_comp a6@(44)
|
|
#define op a6@(48)
|
|
#define gray a6@(52)
|
|
#define num_gray a6@(56)
|
|
#define curr_gray_line a6@(60)
|
|
|
|
|
| Local variable offsets on the stack
|
|
|
|
|
| -4 num_lines_remaining
|
|
| -8 PRECOMPUTED FOR GRAY CASE: (num_gray-1)<<1
|
|
| -12 dstnumL
|
|
| -16 src32lbit
|
|
| -20 srcLshift
|
|
| -24 dst32lbit
|
|
| -28 srcRmask
|
|
| -32 dstold
|
|
| -36 PRECOMPUTED dstbpl << 3
|
|
| -40 mask
|
|
| -44 preloop_mask
|
|
| -48 postloop_mask
|
|
| -52 sdw_mask
|
|
| -56
|
|
| -60 dst32rbit
|
|
| -64 src32rbit
|
|
| -68
|
|
| -72
|
|
| -76
|
|
| -80 bb_fast
|
|
| -84
|
|
| -88
|
|
| -92
|
|
#define num_lines_remaining a6@(-4)
|
|
|#define temp a6@(-8) /* NEVER loaded, only stored into */
|
|
#define gray_line_length a6@(-8)
|
|
#define dstnumL a6@(-12)
|
|
#define src32lbit a6@(-16)
|
|
#define srcLshift a6@(-20)
|
|
#define dst32lbit a6@(-24)
|
|
#define srcRmask a6@(-28)
|
|
#define dstold a6@(-32)
|
|
|#define dstdata a6@(-36) /* no longer used */
|
|
#define dstbpl3 a6@(-36)
|
|
#define mask a6@(-40)
|
|
|#define x32byta a6@(-44) /* no longer used */
|
|
|#define x32nbyt a6@(-48) /* no longer used */
|
|
|#define x32ia a6@(-52) /* no longer used */
|
|
|#define abc a6@(-56) /* no longer used */
|
|
#define dst32rbit a6@(-60)
|
|
#define src32rbit a6@(-64)
|
|
|#define fwd a6@(-68) /* No longer used 10/30/89 JDS */
|
|
|#define OrigSrcAddr a6@(-72)
|
|
|#define OrigDstAddr a6@(-76)
|
|
#define OrigSrcAddr a3
|
|
#define OrigDstAddr a2
|
|
|#define bb_fast a6@(-80)
|
|
|#define preloop_mask a6@(-84)
|
|
|#define postloop_mask a6@(-88)
|
|
|#define sdw_mask a6@(-92)
|
|
#define bb_fast a6@(-80)
|
|
#define preloop_mask a6@(-44)
|
|
#define postloop_mask a6@(-48)
|
|
#define sdw_mask a6@(-52)
|
|
|
|
|
| Register usage remaining from the compiler
|
|
|
|
|
| a5 srcbase [used 7 times in code]
|
|
| a4 dstbase
|
|
| a3 OrigSrcAddr (via #define)
|
|
| a2 OrigDstAddr (via #define)
|
|
| a0 srcaddr
|
|
| a1 dstaddr
|
|
|
|
|
| d7 ShS
|
|
| d6 SavedS
|
|
| d5 NewS
|
|
| d4 srcRshift
|
|
| d3 cnt (Loop counter in very inner loops)
|
|
| d2 dst32lbit, part-time.
|
|
| d1 [working temp]
|
|
| d0 [working temp]
|
|
|
|
|
|
|
.data
|
|
.text
|
|
.globl _bitblt
|
|
_bitblt:
|
|
|#PROLOGUE# 0
|
|
link a6,#-128
|
|
moveml #0x3cfc,sp@
|
|
|#PROLOGUE# 1
|
|
movl srcbase,a5
|
|
movl dstbase,a4
|
|
# num_lines_remaining = h;
|
|
movl height,num_lines_remaining
|
|
# fwd = !backwardflg; /* Removed as redundant */
|
|
# bb_fast = !(31 & (srcbpl | dstbpl));
|
|
movl srcbpl,d0
|
|
orl dstbpl,d0
|
|
moveq #31,d7
|
|
andl d7,d0
|
|
notl d0
|
|
movl d0,bb_fast
|
|
|
|
movl dstbpl,d0
|
|
asrl #3,d0
|
|
movl d0,dstbpl3
|
|
|
|
tstl gray
|
|
jeq L103
|
|
|
|
#########################################################
|
|
# Precompute the texture -backup amount for loop bottom #
|
|
#########################################################
|
|
movl num_gray,d0
|
|
subql #1,d0
|
|
asll #1,d0
|
|
movl d0,gray_line_length
|
|
|
|
tstl dx
|
|
jge L104
|
|
movl a4,d0
|
|
moveq #7,d1
|
|
subl dx,d1
|
|
asrl #3,d1
|
|
subl d1,d0
|
|
jra LY00000
|
|
L104:
|
|
movl a4,d0
|
|
movl dx,d1
|
|
asrl #3,d1
|
|
addl d1,d0
|
|
|
|
|
| d0 = x32byta
|
|
| d1 = x32nbyt
|
|
| a1 = x32ia = dst32addr
|
|
LY00000:
|
|
movl d0,d1
|
|
| movb a6@(-41),d0
|
|
moveq #3,d7
|
|
andl d7,d1
|
|
| movl d0,x32nbyt
|
|
movl d0,a1
|
|
subl d1,a1
|
|
| movl a1,x32ia
|
|
lsll d7,d1
|
|
movb a6@(23),d0 | dx
|
|
moveq #7,d7
|
|
andl d7,d0
|
|
addl d0,d1
|
|
movl d1,dst32lbit
|
|
movl d1,d2 | d2 = dst32lbit starts here
|
|
addl width,d1
|
|
subql #1,d1
|
|
moveq #31,d7
|
|
andl d7,d1
|
|
movl d1,dst32rbit
|
|
movl a1,OrigDstAddr
|
|
| tstl dst32lbit
|
|
tstl d2
|
|
jeq L2000004
|
|
moveq #32,d0
|
|
| subl dst32lbit,d0
|
|
subl d2,d0
|
|
moveq #-1,d1
|
|
asll d0,d1
|
|
notl d1
|
|
jra L2000005
|
|
L2000004:
|
|
moveq #-1,d1
|
|
L2000005:
|
|
movl d1,preloop_mask
|
|
moveq #31,d0
|
|
subl dst32rbit,d0
|
|
moveq #-1,d1
|
|
asll d0,d1
|
|
movl d1,postloop_mask
|
|
movl preloop_mask,d0
|
|
andl d1,d0
|
|
movl d0,sdw_mask
|
|
| movl dst32lbit,d0
|
|
movl d2,d0
|
|
addl width,d0
|
|
asrl #5,d0
|
|
subql #1,d0
|
|
movl d0,dstnumL
|
|
movb a6@(39),d0 |dstbpl
|
|
moveq #31,d7
|
|
andl d7,d0
|
|
notl d0
|
|
movl d0,bb_fast
|
|
movb a6@(19),d0 |sx
|
|
moveq #15,d7
|
|
andl d7,d0
|
|
movl d0,src32lbit
|
|
jra LY00009
|
|
# else if (fwd)
|
|
L103:
|
|
tstl backwardflg
|
|
jne L107
|
|
# {if (dx < 0)
|
|
tstl dx
|
|
jge L108
|
|
# { x32byta = (int)dstbase - ((7 - dx) >> 3); }
|
|
# else { x32byta = (int)dstbase + (dx >> 3); }
|
|
# x32nbyt = x32byta & 3;
|
|
# x32ia = x32byta - x32nbyt;
|
|
# dst32addr = (int *)x32ia;
|
|
movl a4,d0
|
|
moveq #7,d1
|
|
subl dx,d1
|
|
asrl #3,d1
|
|
subl d1,d0
|
|
jra LY00001
|
|
L108:
|
|
movl a4,d0
|
|
movl dx,d1
|
|
asrl #3,d1
|
|
addl d1,d0
|
|
LY00001:
|
|
| movl d0,x32byta
|
|
movl d0,d1
|
|
| movb a6@(-41),d1
|
|
moveq #3,d7
|
|
andl d7,d1
|
|
| movl d1,x32nbyt
|
|
| movl x32byta,a1
|
|
movl d0,a1
|
|
subl d1,a1
|
|
| movl a1,x32ia
|
|
asll d7,d1
|
|
movb a6@(23),d0 | dx
|
|
moveq #7,d7
|
|
andl d7,d0
|
|
addl d0,d1
|
|
movl d1,dst32lbit
|
|
movl d1,d2 | d2 = dst32lbit starting here
|
|
addl width,d1
|
|
subql #1,d1
|
|
moveq #31,d7
|
|
andl d7,d1
|
|
movl d1,dst32rbit
|
|
# OrigDstAddr = dst32addr;
|
|
# preloop_mask = ((dst32lbit) ? (~(0xFFFFFFFF << (32 - dst32lbit))) : 0xFFFFFFFF);
|
|
# postloop_mask = 0xFFFFFFFF << (31 - dst32rbit);
|
|
# sdw_mask = preloop_mask & postloop_mask;
|
|
# dstnumL = ((dst32lbit + w) >> 5) - 1;
|
|
movl a1,OrigDstAddr
|
|
| tstl dst32lbit
|
|
tstl d2
|
|
jeq L2000008
|
|
moveq #32,d0
|
|
| subl dst32lbit,d0
|
|
subl d2, d0
|
|
moveq #-1,d1
|
|
asll d0,d1
|
|
notl d1
|
|
jra L2000009
|
|
L2000008:
|
|
moveq #-1,d1
|
|
L2000009:
|
|
movl d1,preloop_mask
|
|
moveq #31,d0
|
|
subl dst32rbit,d0
|
|
moveq #-1,d1
|
|
asll d0,d1
|
|
movl d1,postloop_mask
|
|
movl preloop_mask,d0
|
|
andl d1,d0
|
|
movl d0,sdw_mask
|
|
| movl dst32lbit,d0
|
|
movl d2,d0
|
|
addl width,d0
|
|
asrl #5,d0
|
|
subql #1,d0
|
|
movl d0,dstnumL
|
|
# if (sx < 0)
|
|
# { x32byta = (int)srcbase - ((7 - sx) >> 3); }
|
|
# else { x32byta = (int)srcbase + (sx >> 3); }
|
|
tstl sx
|
|
jge L110
|
|
movl a5,d0
|
|
moveq #7,d1
|
|
subl sx,d1
|
|
asrl #3,d1
|
|
subl d1,d0
|
|
jra LY00002
|
|
L110:
|
|
movl a5,d0
|
|
movl sx,d1
|
|
asrl #3,d1
|
|
addl d1,d0
|
|
LY00002:
|
|
| movl d0,x32byta
|
|
# x32nbyt = x32byta & 3;
|
|
# x32ia = x32byta - x32nbyt;
|
|
# src32addr = (int *)x32ia;
|
|
| movb a6@(-41),d1
|
|
movl d0,d1
|
|
moveq #3,d7
|
|
andl d7,d1
|
|
| movl d1,x32nbyt
|
|
| movl x32byta,a0
|
|
movl d0,a0
|
|
subl d1,a0
|
|
| movl a1,x32ia
|
|
asll d7,d1
|
|
movb a6@(19),d0 | sx
|
|
moveq #7,d7
|
|
andl d7,d0
|
|
addl d1,d0 | d0 = src32lbit starts here
|
|
movl d0,src32lbit
|
|
movl d0,d1
|
|
addl width,d1
|
|
subql #1,d1
|
|
moveq #31,d7
|
|
andl d7,d1
|
|
movl d1,src32rbit
|
|
| movl dst32lbit,d4
|
|
movl d2,d4
|
|
| subl src32lbit,d4
|
|
subl d0,d4
|
|
andl d7,d4
|
|
| movl src32lbit,d0 | d0 = src32lbit stops here
|
|
| subl dst32lbit,d0
|
|
subl d2,d0
|
|
andl d7,d0
|
|
movl d0,srcLshift
|
|
jeq L2000010
|
|
LY00006: | srcLshift is in d0 every way you get here.
|
|
moveq #-1,d1
|
|
| movw a6@(-18),d1 | srcLshift
|
|
asll d0,d1
|
|
notl d1
|
|
jra L2000051
|
|
L2000010:
|
|
moveq #-1,d1
|
|
jra L2000051
|
|
L107:
|
|
movl dx,d2 | d2 = abc starts here
|
|
addl width,d2
|
|
subql #1,d2
|
|
| movl d2,abc
|
|
jge L113
|
|
movl a4,d0
|
|
moveq #7,d1
|
|
| subl abc,d1
|
|
subl d2,d1
|
|
asrl #3,d1
|
|
subl d1,d0
|
|
jra LY00003
|
|
L113:
|
|
movl a4,d0
|
|
| movl abc,d1
|
|
movl d2,d1
|
|
asrl #3,d1
|
|
addl d1,d0
|
|
LY00003:
|
|
| movl d0,x32byta
|
|
| movb a6@(-41),d1
|
|
movl d0,d1
|
|
moveq #3,d7
|
|
andl d7,d1
|
|
| movl d1,x32nbyt
|
|
| movl x32byta,a1
|
|
movl d0,a1
|
|
subl d1,a1
|
|
| movl a1,x32ia
|
|
asll d7,d1
|
|
| movb a6@(-53),d0 | abc
|
|
movl d2,d0 | d2 = abc ends here
|
|
moveq #7,d7
|
|
andl d7,d0
|
|
addl d0,d1
|
|
movl d1,dst32rbit | d1 = dst32rbit starts here
|
|
movl d1,d2
|
|
subl width,d2 | d2 = dst32lbit starts here
|
|
addql #1,d2
|
|
moveq #31,d7
|
|
andl d7,d2
|
|
movl d2,dst32lbit
|
|
movl a1,OrigDstAddr
|
|
moveq #31,d0
|
|
| subl dst32rbit,d0
|
|
subl d1,d0 | d1 = dst32rbit stops here
|
|
moveq #-1,d1
|
|
asll d0,d1
|
|
movl d1,preloop_mask
|
|
moveq #32,d0
|
|
moveq #-1,d1
|
|
tstl d2
|
|
jeq JDS2
|
|
| subl dst32lbit,d0
|
|
subl d2,d0 | d2 = dst32lbit stops here
|
|
| moveq #-1,d1
|
|
asll d0,d1
|
|
notl d1
|
|
JDS2: movl d1,postloop_mask
|
|
movl preloop_mask,d0
|
|
andl d1,d0
|
|
movl d0,sdw_mask
|
|
movl width,d0
|
|
subl dst32rbit,d0
|
|
subql #1,d0
|
|
tstl d0
|
|
jle L2000012
|
|
movl width,d0
|
|
subl dst32rbit,d0
|
|
subql #1,d0
|
|
asrl #5,d0
|
|
jra L2000013
|
|
L2000012:
|
|
moveq #0,d0
|
|
L2000013:
|
|
movl d0,dstnumL
|
|
movl sx,d2 | d2 = abc starts here
|
|
addl width,d2
|
|
subql #1,d2
|
|
| movl d2,abc
|
|
jge L115
|
|
movl a5,d0
|
|
moveq #7,d1
|
|
| subl abc,d1
|
|
subl d2,d1
|
|
asrl #3,d1
|
|
subl d1,d0
|
|
jra LY00004
|
|
L115:
|
|
movl a5,d0
|
|
| movl abc,d1
|
|
movl d2,d1
|
|
asrl #3,d1
|
|
addl d1,d0
|
|
LY00004:
|
|
| movl d0,x32byta
|
|
| movb a6@(-41),d1
|
|
movl d0,d1
|
|
moveq #3,d7
|
|
andl d7,d1
|
|
| movl d1,x32nbyt
|
|
| movl x32byta,a0
|
|
movl d0,a0
|
|
subl d1,a0
|
|
| movl a0,x32ia
|
|
asll d7,d1
|
|
| movb a6@(-53),d0 |abc
|
|
movl d2,d0 | d2 = abc ends here
|
|
moveq #7,d7
|
|
andl d7,d0
|
|
addl d0,d1
|
|
movl d1,src32rbit
|
|
jra LY00016
|
|
LY00010:
|
|
tstl gray
|
|
jeq L119
|
|
movl src32lbit,d0
|
|
subl dst32lbit,d0
|
|
moveq #15,d7
|
|
andl d7,d0 | d0 = srcLshift
|
|
movl d0,srcLshift
|
|
moveq #0,d7
|
|
movw a5@,d7
|
|
movl d7,d1
|
|
| moveq #16,d1
|
|
| lsll d1,d0
|
|
swap d1
|
|
orl d1,d7
|
|
| movw a6@(-18),d0
|
|
| lsll d0,d7
|
|
| movl d7,d0
|
|
| moveq #16,d1
|
|
| lsrl d1,d0
|
|
| andl #65535,d0
|
|
| orl d0,d7
|
|
roll d0,d7
|
|
tstl src_comp
|
|
jeq L120
|
|
notl d7 | end oof d0 = srcLshift
|
|
L120:
|
|
movl dst32lbit,d0
|
|
addl width,d0
|
|
moveq #32,d5
|
|
cmpl d5,d0
|
|
jle LY00008
|
|
movl preloop_mask,mask
|
|
movl a1@,d5 | d5 = dstdata thru here...
|
|
movl mask,d1 | d1 = dstold thru here
|
|
notl d1
|
|
andl d5,d1
|
|
| movl d1,dstold
|
|
movl op,d0
|
|
| moveq #3,d5
|
|
| cmpl d5,d0
|
|
| jhi L123
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000017:
|
|
.word L125-L2000017
|
|
.word L126-L2000017
|
|
.word L127-L2000017
|
|
.word L128-L2000017
|
|
L125:
|
|
movl d7,d5
|
|
jra L123
|
|
L126:
|
|
andl d7,d5
|
|
jra L123
|
|
L127:
|
|
orl d7,d5
|
|
jra L123
|
|
L128:
|
|
eorl d7,d5
|
|
L123:
|
|
movl mask,d0
|
|
andl d0,d5
|
|
orl d1,d5 | wass dstold
|
|
| orl d0,dstdata
|
|
movl d5,a1@+
|
|
movl op,d0
|
|
movl dstnumL,d3 | from all loop headers below.
|
|
| moveq #3,d5
|
|
| cmpl d5,d0
|
|
| jhi L129
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000019:
|
|
.word L131-L2000019
|
|
.word L135-L2000019
|
|
.word L139-L2000019
|
|
.word L143-L2000019
|
|
L131:
|
|
| movl dstnumL,d3
|
|
L134:
|
|
subql #1,d3
|
|
jmi L129
|
|
movl d7,a1@+
|
|
jra L134
|
|
L135:
|
|
| movl dstnumL,d3
|
|
L138:
|
|
subql #1,d3
|
|
jmi L129
|
|
andl d7,a1@+
|
|
jra L138
|
|
L139:
|
|
| movl dstnumL,d3
|
|
L142:
|
|
subql #1,d3
|
|
jmi L129
|
|
orl d7,a1@+
|
|
jra L142
|
|
|L143:
|
|
| movl dstnumL,d3
|
|
| jra LY00013
|
|
LY00014:
|
|
eorl d7,a1@+
|
|
L143:
|
|
LY00013:
|
|
subql #1,d3
|
|
jpl LY00014
|
|
L129:
|
|
cmpl #31,dst32rbit
|
|
jeq L148
|
|
jra L337
|
|
L119:
|
|
tstl backwardflg
|
|
jne L149
|
|
movw a6@(-18),d1 | srcLshift in d1 down thru L151
|
|
movl src32lbit,d0
|
|
cmpl dst32lbit,d0
|
|
jle L150
|
|
addl width,d0
|
|
moveq #32,d7
|
|
cmpl d7,d0
|
|
jle L150
|
|
movl a0@+,d6
|
|
| movw a6@(-18),d1 | srcLshift
|
|
lsll d1,d6
|
|
movl a0@+,d0
|
|
movl d0,d7
|
|
lsrl d4,d7
|
|
andl srcRmask,d7
|
|
orl d6,d7
|
|
lsll d1,d0
|
|
movl srcRmask,d1
|
|
notl d1
|
|
andl d1,d0
|
|
movl d0,d6
|
|
jra L151
|
|
L150:
|
|
movl src32lbit,d0
|
|
cmpl dst32lbit,d0
|
|
jgt L152
|
|
movl a0@+,d6
|
|
movl d6,d7
|
|
lsrl d4,d7
|
|
andl srcRmask,d7
|
|
| movw a6@(-18),d1 |srcLshift
|
|
lsll d1,d6
|
|
movl srcRmask,d1
|
|
notl d1
|
|
andl d1,d6
|
|
jra L151
|
|
L152:
|
|
movl a0@+,d7
|
|
| movw a6@(-18),d1 | srcLshift
|
|
lsll d1,d7
|
|
L151:
|
|
tstl src_comp
|
|
jeq L154
|
|
notl d7
|
|
L154:
|
|
movl dst32lbit,d0
|
|
addl width,d0
|
|
moveq #32,d5
|
|
cmpl d5,d0
|
|
jle LY00008
|
|
movl preloop_mask,mask
|
|
movl a1@,d5 | d5 = dstdata thru here
|
|
movl mask,d1 | d1 = dstold thru here.
|
|
notl d1
|
|
andl d5,d1
|
|
| movl d1,dstold
|
|
movl op,d0
|
|
| moveq #3,d5
|
|
| cmpl d5,d0
|
|
| jhi L156
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000021:
|
|
.word L158-L2000021
|
|
.word L159-L2000021
|
|
.word L160-L2000021
|
|
.word L161-L2000021
|
|
L158:
|
|
movl d7,d5
|
|
jra L156
|
|
L159:
|
|
andl d7,d5
|
|
jra L156
|
|
L160:
|
|
orl d7,d5
|
|
jra L156
|
|
L161:
|
|
eorl d7,d5
|
|
L156:
|
|
movl mask,d0
|
|
andl d0,d5
|
|
| movl dstold,d1
|
|
orl d1,d5
|
|
movl d5,a1@+
|
|
movl src32lbit,d0
|
|
cmpl dst32lbit,d0
|
|
jne L162
|
|
tstl src_comp
|
|
jeq L184
|
|
movl op,d0
|
|
movl dstnumL,d3 | from loop headers below
|
|
| moveq #3,d7
|
|
| cmpl d7,d0
|
|
| jhi L201
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000023:
|
|
.word L166-L2000023
|
|
.word L170-L2000023
|
|
.word L174-L2000023
|
|
.word L178-L2000023
|
|
L166:
|
|
| movl dstnumL,d3
|
|
L169:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
notl d0
|
|
movl d0,a1@+
|
|
jra L169
|
|
L170:
|
|
| movl dstnumL,d3
|
|
L173:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
notl d0
|
|
andl d0,a1@+
|
|
jra L173
|
|
L174:
|
|
| movl dstnumL,d3
|
|
L177:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
notl d0
|
|
orl d0,a1@+
|
|
jra L177
|
|
L178:
|
|
| movl dstnumL,d3
|
|
L181:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
notl d0
|
|
eorl d0,a1@+
|
|
jra L181
|
|
L185:
|
|
| movl dstnumL,d3
|
|
L188:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,a1@+
|
|
jra L188
|
|
L189:
|
|
| movl dstnumL,d3
|
|
L192:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
andl d0,a1@+
|
|
jra L192
|
|
L193:
|
|
| movl dstnumL,d3
|
|
L196:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
orl d0,a1@+
|
|
jra L196
|
|
L197:
|
|
| movl dstnumL,d3
|
|
L200:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
eorl d0,a1@+
|
|
jra L200
|
|
L184:
|
|
movl op,d0
|
|
movl dstnumL,d3 |from loop headers
|
|
| moveq #3,d7
|
|
| cmpl d7,d0
|
|
| jhi L201
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000025:
|
|
.word L185-L2000025
|
|
.word L189-L2000025
|
|
.word L193-L2000025
|
|
.word L197-L2000025
|
|
jra L201
|
|
L162:
|
|
tstl src_comp
|
|
jeq L223
|
|
movl op,d0
|
|
| moveq #3,d7
|
|
| cmpl d7,d0
|
|
| jhi L201
|
|
movw a6@(-18),d1 | from within the loops below, srcLshift
|
|
movl dstnumL,d3 | from loop headers
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000027:
|
|
.word L205-L2000027
|
|
.word L209-L2000027
|
|
.word L213-L2000027
|
|
.word L217-L2000027
|
|
L205:
|
|
| movl dstnumL,d3
|
|
L208:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
movl d0,d7
|
|
lsrl d4,d7
|
|
orl d6,d7
|
|
notl d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d0
|
|
movl d0,d6
|
|
movl d7,a1@+
|
|
jra L208
|
|
L209:
|
|
| movl dstnumL,d3
|
|
L212:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
movl d0,d7
|
|
lsrl d4,d7
|
|
orl d6,d7
|
|
notl d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d0
|
|
movl d0,d6
|
|
andl d7,a1@+
|
|
jra L212
|
|
L213:
|
|
| movl dstnumL,d3
|
|
L216:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
movl d0,d7
|
|
lsrl d4,d7
|
|
orl d6,d7
|
|
notl d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d0
|
|
movl d0,d6
|
|
orl d7,a1@+
|
|
jra L216
|
|
L217:
|
|
| movl dstnumL,d3
|
|
L220:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
movl d0,d7
|
|
lsrl d4,d7
|
|
orl d6,d7
|
|
notl d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d0
|
|
movl d0,d6
|
|
eorl d7,a1@+
|
|
jra L220
|
|
L224:
|
|
| movl dstnumL,d3
|
|
L227:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
movl d0,d7
|
|
lsrl d4,d7
|
|
orl d6,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d0
|
|
movl d0,d6
|
|
movl d7,a1@+
|
|
jra L227
|
|
L228:
|
|
| movl dstnumL,d3
|
|
L231:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
movl d0,d7
|
|
lsrl d4,d7
|
|
orl d6,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d0
|
|
movl d0,d6
|
|
andl d7,a1@+
|
|
jra L231
|
|
L232:
|
|
| movl dstnumL,d3
|
|
L235:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
movl d0,d7
|
|
lsrl d4,d7
|
|
orl d6,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d0
|
|
movl d0,d6
|
|
orl d7,a1@+
|
|
jra L235
|
|
L236:
|
|
| movl dstnumL,d3
|
|
L239:
|
|
subql #1,d3
|
|
jmi L201
|
|
movl a0@+,d0
|
|
movl d0,d7
|
|
lsrl d4,d7
|
|
orl d6,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d0
|
|
movl d0,d6
|
|
eorl d7,a1@+
|
|
jra L239
|
|
L223:
|
|
movl op,d0
|
|
| moveq #3,d7
|
|
| cmpl d7,d0
|
|
| jhi L201
|
|
movw a6@(-18),d1 | from loops after dispatch, srcLshift
|
|
movl dstnumL,d3 | from loop headers
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000029:
|
|
.word L224-L2000029
|
|
.word L228-L2000029
|
|
.word L232-L2000029
|
|
.word L236-L2000029
|
|
L201:
|
|
cmpl #31,dst32rbit
|
|
jeq L148
|
|
movl src32rbit,d0
|
|
cmpl dst32rbit,d0
|
|
jgt L335
|
|
movl a0@,d0
|
|
lsrl d4,d0
|
|
andl srcRmask,d0
|
|
jra LY00011
|
|
L149:
|
|
movl src32rbit,d0
|
|
cmpl dst32rbit,d0
|
|
jge L244
|
|
movl src32lbit,d0
|
|
addl width,d0
|
|
movl dst32lbit,d1
|
|
addql #1,d1
|
|
cmpl d1,d0
|
|
jle L244
|
|
movl a0@,d6
|
|
lsrl d4,d6
|
|
andl srcRmask,d6
|
|
movl a0@-,d0
|
|
subqw #4,a0
|
|
movl d0,d7
|
|
movw a6@(-18),d1 | srcLshift
|
|
lsll d1,d7
|
|
orl d6,d7
|
|
lsrl d4,d0
|
|
andl srcRmask,d0
|
|
movl d0,d6
|
|
jra L245
|
|
L244:
|
|
movl src32rbit,d0
|
|
cmpl dst32rbit,d0
|
|
jlt L246
|
|
movl a0@,d6
|
|
subqw #4,a0
|
|
movl d6,d7
|
|
movw a6@(-18),d1 | srcLshift
|
|
lsll d1,d7
|
|
lsrl d4,d6
|
|
andl srcRmask,d6
|
|
jra L245
|
|
L246:
|
|
movl a0@,d7
|
|
subqw #4,a0
|
|
lsrl d4,d7
|
|
andl srcRmask,d7
|
|
L245:
|
|
tstl src_comp
|
|
jeq L248
|
|
notl d7
|
|
L248:
|
|
movl dst32lbit,d0
|
|
addl width,d0
|
|
moveq #32,d5
|
|
cmpl d5,d0
|
|
jgt L249
|
|
LY00008:
|
|
movl sdw_mask,mask
|
|
jra L122
|
|
L249:
|
|
movl preloop_mask,mask
|
|
movl a1@,d5 | d5 = dstdata thru here
|
|
movl mask,d1 | d1 = dstold thru here.
|
|
notl d1
|
|
andl d5,d1
|
|
| movl d1,dstold
|
|
movl op,d0
|
|
| moveq #3,d5
|
|
| cmpl d5,d0
|
|
| jhi L250
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000031:
|
|
.word L252-L2000031
|
|
.word L253-L2000031
|
|
.word L254-L2000031
|
|
.word L255-L2000031
|
|
L252:
|
|
movl d7,d5
|
|
jra L250
|
|
L253:
|
|
andl d7,d5
|
|
jra L250
|
|
L254:
|
|
orl d7,d5
|
|
jra L250
|
|
L255:
|
|
eorl d7,d5
|
|
L250:
|
|
| movl mask,d0
|
|
| andl d0,d5
|
|
andl mask,d5
|
|
| movl dstold,d0
|
|
| orl d0,d5
|
|
orl d1,d5 | end of d1/dstold range
|
|
movl d5,a1@
|
|
subqw #4,a1
|
|
movl src32lbit,d0
|
|
cmpl dst32lbit,d0
|
|
jne L256
|
|
tstl src_comp
|
|
jeq L278
|
|
movl op,d0
|
|
movl dstnumL,d3 | from loop headers below
|
|
| moveq #3,d7
|
|
| cmpl d7,d0
|
|
| jhi L295
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000033:
|
|
.word L260-L2000033
|
|
.word L264-L2000033
|
|
.word L268-L2000033
|
|
.word L272-L2000033
|
|
L260:
|
|
| movl dstnumL,d3
|
|
L263:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
notl d0
|
|
movl d0,a1@
|
|
subqw #4,a0
|
|
subqw #4,a1
|
|
jra L263
|
|
L264:
|
|
| movl dstnumL,d3
|
|
L267:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
notl d0
|
|
andl d0,a1@
|
|
subqw #4,a0
|
|
subqw #4,a1
|
|
jra L267
|
|
L268:
|
|
| movl dstnumL,d3
|
|
L271:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
notl d0
|
|
orl d0,a1@
|
|
subqw #4,a0
|
|
subqw #4,a1
|
|
jra L271
|
|
L272:
|
|
| movl dstnumL,d3
|
|
L275:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
notl d0
|
|
eorl d0,a1@
|
|
subqw #4,a0
|
|
subqw #4,a1
|
|
jra L275
|
|
L279:
|
|
| movl dstnumL,d3
|
|
L282:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,a1@
|
|
subqw #4,a0
|
|
subqw #4,a1
|
|
jra L282
|
|
L283:
|
|
| movl dstnumL,d3
|
|
L286:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
andl d0,a1@
|
|
subqw #4,a0
|
|
subqw #4,a1
|
|
jra L286
|
|
L287:
|
|
| movl dstnumL,d3
|
|
L290:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
orl d0,a1@
|
|
subqw #4,a0
|
|
subqw #4,a1
|
|
jra L290
|
|
L291:
|
|
| movl dstnumL,d3
|
|
L294:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
eorl d0,a1@
|
|
subqw #4,a0
|
|
subqw #4,a1
|
|
jra L294
|
|
L278:
|
|
movl op,d0
|
|
movl dstnumL,d3 | from loop headers above
|
|
| moveq #3,d7
|
|
| cmpl d7,d0
|
|
| jhi L295
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000035:
|
|
.word L279-L2000035
|
|
.word L283-L2000035
|
|
.word L287-L2000035
|
|
.word L291-L2000035
|
|
jra L295
|
|
L256:
|
|
tstl src_comp
|
|
jeq L317
|
|
movw a6@(-18),d1 | from loops after dispatch, below, srcLshift
|
|
movl dstnumL,d3 | from loop headers
|
|
movl op,d0
|
|
| moveq #3,d7
|
|
| cmpl d7,d0
|
|
| jhi L295
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000037:
|
|
.word L299-L2000037
|
|
.word L303-L2000037
|
|
.word L307-L2000037
|
|
.word L311-L2000037
|
|
L299:
|
|
| movl dstnumL,d3
|
|
L302:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
subqw #4,a0
|
|
movl d0,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d7
|
|
orl d6,d7
|
|
notl d7
|
|
lsrl d4,d0
|
|
movl d0,d6
|
|
movl d7,a1@
|
|
subqw #4,a1
|
|
jra L302
|
|
L303:
|
|
| movl dstnumL,d3
|
|
L306:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
subqw #4,a0
|
|
movl d0,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d7
|
|
orl d6,d7
|
|
notl d7
|
|
lsrl d4,d0
|
|
movl d0,d6
|
|
andl d7,a1@
|
|
subqw #4,a1
|
|
jra L306
|
|
L307:
|
|
| movl dstnumL,d3
|
|
L310:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
subqw #4,a0
|
|
movl d0,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d7
|
|
orl d6,d7
|
|
notl d7
|
|
lsrl d4,d0
|
|
movl d0,d6
|
|
orl d7,a1@
|
|
subqw #4,a1
|
|
jra L310
|
|
L311:
|
|
| movl dstnumL,d3
|
|
L314:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
subqw #4,a0
|
|
movl d0,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d7
|
|
orl d6,d7
|
|
notl d7
|
|
lsrl d4,d0
|
|
movl d0,d6
|
|
eorl d7,a1@
|
|
subqw #4,a1
|
|
jra L314
|
|
L318:
|
|
| movl dstnumL,d3
|
|
L321:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
subqw #4,a0
|
|
movl d0,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d7
|
|
orl d6,d7
|
|
lsrl d4,d0
|
|
movl d0,d6
|
|
movl d7,a1@
|
|
subqw #4,a1
|
|
jra L321
|
|
L322:
|
|
| movl dstnumL,d3
|
|
L325:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
subqw #4,a0
|
|
movl d0,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d7
|
|
orl d6,d7
|
|
lsrl d4,d0
|
|
movl d0,d6
|
|
andl d7,a1@
|
|
subqw #4,a1
|
|
jra L325
|
|
L326:
|
|
| movl dstnumL,d3
|
|
L329:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
subqw #4,a0
|
|
movl d0,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d7
|
|
orl d6,d7
|
|
lsrl d4,d0
|
|
movl d0,d6
|
|
orl d7,a1@
|
|
subqw #4,a1
|
|
jra L329
|
|
L330:
|
|
| movl dstnumL,d3
|
|
L333:
|
|
subql #1,d3
|
|
jmi L295
|
|
movl a0@,d0
|
|
subqw #4,a0
|
|
movl d0,d7
|
|
| movw a6@(-18),d1
|
|
lsll d1,d7
|
|
orl d6,d7
|
|
lsrl d4,d0
|
|
movl d0,d6
|
|
eorl d7,a1@
|
|
subqw #4,a1
|
|
jra L333
|
|
L317:
|
|
movl op,d0
|
|
movw a6@(-18),d1 | from loops after dispatch (above), srcLshift
|
|
movl dstnumL,d3 | from loop headers
|
|
| moveq #3,d7
|
|
| cmpl d7,d0
|
|
| jhi L295
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000039:
|
|
.word L318-L2000039
|
|
.word L322-L2000039
|
|
.word L326-L2000039
|
|
.word L330-L2000039
|
|
L295:
|
|
tstl dst32lbit
|
|
jeq L148
|
|
movl src32lbit,d0
|
|
cmpl dst32lbit,d0
|
|
jlt L335
|
|
movl a0@,d0
|
|
movw a6@(-18),d1 | srcLshift
|
|
lsll d1,d0
|
|
LY00011:
|
|
orl d6,d0
|
|
movl d0,d7
|
|
jra L336
|
|
L335:
|
|
movl d6,d7
|
|
L336:
|
|
tstl src_comp
|
|
jeq L337
|
|
notl d7
|
|
L337:
|
|
movl postloop_mask,mask
|
|
L122:
|
|
movl a1@,d5 | d5 = dstdata thru here....
|
|
movl mask,d1 | d1 = dstold thru here.
|
|
notl d1
|
|
andl d5,d1
|
|
| movl d1,dstold
|
|
movl op,d0
|
|
| moveq #3,d5
|
|
| cmpl d5,d0
|
|
| jhi L338
|
|
movw pc@(6,d0:l:2),d0
|
|
jmp pc@(2,d0:w)
|
|
L2000041:
|
|
.word L340-L2000041
|
|
.word L341-L2000041
|
|
.word L342-L2000041
|
|
.word L343-L2000041
|
|
L340:
|
|
movl d7,d5
|
|
jra L338
|
|
L341:
|
|
andl d7,d5
|
|
jra L338
|
|
L342:
|
|
orl d7,d5
|
|
jra L338
|
|
L343:
|
|
eorl d7,d5
|
|
L338:
|
|
movl mask,d0
|
|
andl d0,d5
|
|
| movl dstold,d5 | transcription error??, replaced with:
|
|
orl d1, d5
|
|
movl d5,a1@
|
|
L148:
|
|
tstl gray
|
|
jeq L344
|
|
tstl bb_fast
|
|
jeq L345
|
|
| movl dstbpl,d0
|
|
| asrl #3,d0
|
|
| addl d0,OrigDstAddr
|
|
addl dstbpl3,OrigDstAddr
|
|
movl OrigDstAddr,a1
|
|
jra L346
|
|
L345:
|
|
movl OrigDstAddr,a1 | d2 = dst32lbit starts here
|
|
movl dst32lbit,d2
|
|
| movl dstbpl,d0
|
|
| addl d0,dst32lbit
|
|
addl dstbpl,d2
|
|
| movl dst32lbit,d0
|
|
movl d2,d0
|
|
asrl #5,d0
|
|
| movl d0,temp
|
|
asll #2,d0
|
|
| movl d0,temp
|
|
addl d0,a1
|
|
moveq #31,d7
|
|
| andl d7,dst32lbit
|
|
andl d7,d2
|
|
| movl dst32lbit,d0
|
|
movl d2,d0
|
|
addl width,d0
|
|
subql #1,d0
|
|
andl d7,d0
|
|
movl d0,dst32rbit
|
|
movl a1,OrigDstAddr
|
|
| tstl dst32lbit
|
|
tstl d2
|
|
jeq L2000042
|
|
moveq #32,d0
|
|
| subl dst32lbit,d0
|
|
subl d2,d0
|
|
moveq #-1,d1
|
|
lsll d0,d1
|
|
notl d1
|
|
jra L2000043
|
|
L2000042:
|
|
moveq #-1,d1
|
|
L2000043:
|
|
movl d1,preloop_mask
|
|
moveq #31,d0
|
|
subl dst32rbit,d0
|
|
moveq #-1,d1
|
|
asll d0,d1
|
|
movl d1,postloop_mask
|
|
movl preloop_mask,d0
|
|
andl d1,d0
|
|
movl d0,sdw_mask
|
|
| movl dst32lbit,d0
|
|
movl d2,d0
|
|
addl width,d0
|
|
asrl #5,d0
|
|
subql #1,d0
|
|
movl d2,dst32lbit | d2 = dst32lbit ends here
|
|
movl d0,dstnumL
|
|
####################################
|
|
# Bottom of the texture-blt loop #
|
|
#
|
|
L346:
|
|
addql #1,curr_gray_line
|
|
movl curr_gray_line,d0
|
|
cmpl num_gray,d0
|
|
jlt L347
|
|
clrl curr_gray_line
|
|
| movl num_gray,d0
|
|
| subql #1,d0
|
|
| asll #1,d0
|
|
| subl d0,a5
|
|
subl gray_line_length,a5
|
|
jra LY00009
|
|
L347:
|
|
addqw #2,a5
|
|
jra LY00009
|
|
L344:
|
|
tstl backwardflg
|
|
jne L349
|
|
tstl bb_fast
|
|
jeq L350
|
|
| movl dstbpl,d0
|
|
| asrl #3,d0
|
|
| addl d0,OrigDstAddr
|
|
addl dstbpl3,OrigDstAddr
|
|
movl OrigDstAddr,a1
|
|
jra L351
|
|
L350:
|
|
movl OrigDstAddr,a1 | d2 = dst32lbit starts here
|
|
movl dst32lbit,d2
|
|
| movl dstbpl,d0
|
|
addl dstbpl,d2
|
|
| addl d0,dst32lbit
|
|
| movl dst32lbit,d0
|
|
movl d2,d0
|
|
asrl #5,d0
|
|
| movl d0,temp
|
|
asll #2,d0
|
|
| movl d0,temp
|
|
addl d0,a1
|
|
moveq #31,d7
|
|
| andl d7,dst32lbit
|
|
| movl dst32lbit,d0
|
|
andl d7,d2
|
|
movl d2,d0
|
|
addl width,d0
|
|
subql #1,d0
|
|
andl d7,d0
|
|
movl d0,dst32rbit
|
|
movl a1,OrigDstAddr
|
|
| tstl dst32lbit
|
|
tstl d2
|
|
jeq L2000044
|
|
moveq #32,d0
|
|
| subl dst32lbit,d0
|
|
subl d2,d0
|
|
moveq #-1,d1
|
|
asll d0,d1
|
|
notl d1
|
|
jra L2000045
|
|
L2000044:
|
|
moveq #-1,d1
|
|
L2000045:
|
|
movl d1,preloop_mask
|
|
moveq #31,d0
|
|
subl dst32rbit,d0
|
|
moveq #-1,d1
|
|
asll d0,d1
|
|
movl d1,postloop_mask
|
|
movl preloop_mask,d0
|
|
andl d1,d0
|
|
movl d0,sdw_mask
|
|
| movl dst32lbit,d0
|
|
movl d2,d0
|
|
addl width,d0
|
|
asrl #5,d0
|
|
subql #1,d0
|
|
movl d0,dstnumL
|
|
movl d2,dst32lbit | end of d2 = dst32lbit
|
|
L351:
|
|
tstl bb_fast
|
|
jne LY00007
|
|
movl OrigSrcAddr,a0
|
|
movl src32lbit,d2 | d2 = src32lbit starts here
|
|
| movl srcbpl,d0
|
|
| addl d0,src32lbit
|
|
| movl src32lbit,d0
|
|
addl srcbpl,d2
|
|
movl d2,d0
|
|
asrl #5,d0
|
|
| movl d0,temp
|
|
asll #2,d0
|
|
| movl d0,temp
|
|
addl d0,a0
|
|
moveq #31,d7
|
|
| andl d7,src32lbit
|
|
andl d7,d2
|
|
| movl src32lbit,d0
|
|
movl d2,d0
|
|
addl width,d0
|
|
subql #1,d0
|
|
andl d7,d0
|
|
movl d0,src32rbit
|
|
movl a0,OrigSrcAddr
|
|
movl dst32lbit,d4
|
|
| subl src32lbit,d4
|
|
subl d2,d4
|
|
andl d7,d4
|
|
| movl src32lbit,d0
|
|
movl d2,d1
|
|
subl dst32lbit,d1
|
|
andl d7,d1
|
|
movl d1,srcLshift
|
|
jeq L2000046
|
|
moveq #-1,d0
|
|
| movw a6@(-18),d1 | srcLshift
|
|
asll d1,d0
|
|
notl d0
|
|
jra L2000047
|
|
L2000046:
|
|
moveq #-1,d0
|
|
L2000047:
|
|
movl d0,srcRmask
|
|
movl d2,src32lbit | end of d2 = src32lbit
|
|
jra LY00009
|
|
L349:
|
|
tstl bb_fast
|
|
jeq L354
|
|
| movl dstbpl,d0
|
|
| asrl #3,d0
|
|
| addl d0,OrigDstAddr
|
|
addl dstbpl3,OrigDstAddr
|
|
movl OrigDstAddr,a1
|
|
jra L355
|
|
L354:
|
|
movl OrigDstAddr,a1
|
|
movl dstbpl,d0
|
|
addl d0,dst32rbit
|
|
jpl L356
|
|
moveq #31,d0
|
|
subl dst32rbit,d0
|
|
asrl #5,d0
|
|
| movl d0,temp
|
|
asll #2,d0
|
|
| movl d0,temp
|
|
subl d0,a1
|
|
jra L357
|
|
L356:
|
|
movl dst32lbit,d0
|
|
asrl #5,d0
|
|
| movl d0,temp
|
|
asll #2,d0
|
|
| movl d0,temp
|
|
addl d0,a1
|
|
L357:
|
|
moveq #31,d7
|
|
andl d7,dst32rbit
|
|
movl dst32rbit,d0
|
|
subl width,d0
|
|
addql #1,d0
|
|
andl d7,d0
|
|
movl d0,dst32lbit
|
|
movl a1,OrigDstAddr
|
|
moveq #31,d0
|
|
subl dst32rbit,d0
|
|
moveq #-1,d1
|
|
asll d0,d1
|
|
movl d1,preloop_mask
|
|
moveq #-1,d1
|
|
tstl dst32lbit
|
|
jeq JDS1
|
|
moveq #32,d0
|
|
subl dst32lbit,d0
|
|
asll d0,d1
|
|
notl d1
|
|
JDS1: movl d1,postloop_mask
|
|
movl preloop_mask,d0
|
|
andl d1,d0
|
|
movl d0,sdw_mask
|
|
movl width,d0
|
|
subl dst32rbit,d0
|
|
subql #1,d0
|
|
tstl d0
|
|
jle L2000048
|
|
movl width,d0
|
|
subl dst32rbit,d0
|
|
subql #1,d0
|
|
asrl #5,d0
|
|
jra L2000049
|
|
L2000048:
|
|
moveq #0,d0
|
|
L2000049:
|
|
movl d0,dstnumL
|
|
L355:
|
|
tstl bb_fast
|
|
jeq L358
|
|
LY00007:
|
|
movl srcbpl,d0
|
|
asrl #3,d0
|
|
addl d0,OrigSrcAddr
|
|
movl OrigSrcAddr,a0
|
|
jra LY00009
|
|
L358:
|
|
movl OrigSrcAddr,a0
|
|
movl srcbpl,d0
|
|
addl d0,src32rbit
|
|
jpl L360
|
|
moveq #31,d0
|
|
subl src32rbit,d0
|
|
asrl #5,d0
|
|
| movl d0,temp
|
|
asll #2,d0
|
|
| movl d0,temp
|
|
subl d0,a0
|
|
jra L361
|
|
L360:
|
|
movl src32rbit,d0
|
|
asrl #5,d0
|
|
| movl d0,temp
|
|
asll #2,d0
|
|
| movl d0,temp
|
|
addl d0,a0
|
|
L361:
|
|
moveq #31,d7
|
|
andl d7,src32rbit
|
|
LY00016:
|
|
movl src32rbit,d0
|
|
subl width,d0
|
|
addql #1,d0
|
|
moveq #31,d7
|
|
andl d7,d0
|
|
movl d0,src32lbit
|
|
movl dst32lbit,d4
|
|
subl d0,d4
|
|
andl d7,d4
|
|
subl dst32lbit,d0
|
|
andl d7,d0
|
|
movl d0,srcLshift
|
|
jne LY00006
|
|
moveq #0,d1
|
|
L2000051:
|
|
movl d1,srcRmask
|
|
movl a0,OrigSrcAddr
|
|
LY00009:
|
|
movl num_lines_remaining,d0
|
|
subql #1,num_lines_remaining
|
|
tstl d0
|
|
jgt LY00010
|
|
moveq #0,d0
|
|
|#PROLOGUE# 2
|
|
moveml a6@(-128),#0x3cfc
|
|
unlk a6
|
|
|#PROLOGUE# 3
|
|
rts
|