Sie sind auf Seite 1von 24

ARRAYS IDNT 1,0

NOLIST
INCLUDE MACROS.INC
LIST
ADDRMASK SET $0FFFFFE
ADRMSK DC.L ADDRMASK
* ENTRY POINTS INCLUDE:
* ??SUB2, ??SUB4 - MEMORY TO MEMORY 2/4 BYTE SUBTRACTS
* ??SZB2, ??SZB4 - MEMORY TO MEMORY 2/4 BYTE SUBTRACTS; ZERO ON OVERFLOW
* ??ADD2, ??ADD4 - MEMORY TO MEMORY 2/4 BYTE ADDS
* ??ADZ2, ??ADZ4 - MEMORY TO MEMORY 2/4 BYTE ADDS; ZERO ON OVERFLOW
* ??EOR2, ??EOR4 - MEMORY TO MEMORY 2/4 BYTE EXCLUSIVE OR
* ??MJ2G, ??MJ2L - MEMORY TO MEMORY 2 BYTE MERGE (merge Greater/Less)
* ??MJ4G, ??MJ4L - MEMORY TO MEMORY 4 BYTE MERGE (merge Greater/Less)
* ?? is DD, DI, ID, II - Direct/Indirect reference
* arg list is (DESTIN/RESULT, SOURCE, LENGTH (in units not in bytes))
*
* ??DIVS, ??DIVD - MEMORY TO MEMORY 2 BYTE DIVIDE
* arg list is (QUOT,OTHER OP ARRAY,LEN [in words])
* for ??DIVS the QUOTient is also the DIVISOR, and the OTHER OP is the DIVIDEND
* for ??DIVD the QUOTient is also the DIVIDEND, and the OTHER OP is the DIVISOR
* BOTH 1) Testing for ZERO DIVISOR is done,
* DIVD no operation
* DIVS sets result to 0
* 2) Testing for overflow is done after division, result as in 1)
* MLDV, IMLDV - multiply then divide
* arg list is (SRC/DST, LEN (in words), MULval, DIVval)
*
* LSL1, ILSL1, LSL2, ILSL2, LSL4, ILSL4 - logical shift left
* LSR1, ILSR1, LSR2, ILSR2, LSR4, ILSR4 - logical shift right
* ASL1, IASL1, ASL2, IASL2, ASL4, IASL4 - arith. shift left
* ASR1, IASR1, ASR2, IASR2, ASR4, IASR4 - arith. shift right
* ROL1, IROL1, ROL2, IROL2, ROL4, IROL4 - rotate left
* ROR1, IROR1, ROR2, IROR2, ROR4, IROR4 - rotate right
* within/by: byte=1, word=2, lword=4
* arg list is (SOURCE/DESTIN, LEN(in units, not in bytes), NUMBER OF BITS)
*
* FILL1, IFILL1, FILL2, IFILL2, FILL4, IFILL4
* arg list is (SRC/DST, LEN(in units not bytes), START VALUE, INCR)
* will fill a region of memory with ascending or descending sequence of values
* FILL is done by byte/1, word/2 or lword/4; SRC/DST is specified as actual
* array for FILL, indirectly for IFILL
*
* NINVR, ININVR - mul INVeRse, DST=$4000*X/SRC, $4000 if OVFL, 0 if 0
* NINV, ININV - mul INVerse, DST=$4000*X/SRC, $4000 if OVFL or if 0
* X = 2**N, where N is the number of bits
* arg list is (SOURCE/DESTIN, LEN(in units, not in bytes), NUMBER OF BITS)
* MINVR, IMINVR - Mult INVeRse - DST=$4000/SRC, $4000 if OVFL, 0 if 0
* MINV, IMINV - Mult INVerse - DST=$4000/SRC, $4000 if OVFL or if 0
* arg list is (SOURCE/DESTIN, LEN(in units, not in bytes))
*
* ??TBL2, ??TBL1 -- ?? = DD,DI,ID,II (Direct/Indirect); 2=WORD, 1=BYTE
* arg list is (SOURCE/DESTIN, TranslationTable, LEN (in units not bytes))
* uses value of SRC as offset into TABLE to look up DST value, which replaces
* SRC -- TBL1 is byte by byte (table = 256 bytes), TBL2 is word by word,
* (table = 65536 words), LEN is number to be translated
*
* ??DOVS, ??DOVD, ??D0VD - MEMORY TO MEMORY 2 BYTE DIVIDE
* arg list is (QUOT,OTHER OP ARRAY,LEN [in words])
* for ??DOVS the QUOTient is also the DIVISOR, and the OTHER OP is the DIVIDEND
* for ??DOVD the QUOTient is also the DIVIDEND, and the OTHER OP is the DIVISOR
* BOTH 1) Testing for ZERO DIVISOR is done,
* a) DOVS sets result to 0
* b) DOVD sets result to 0 if divisor EXACTLY = 0
* DOVD tests for divisor <= dividend
* DOVD replaces result with $3FFF
* 2) Testing for overflow is done after division, result set to $3FFF
* 3) DIVIDEND is MASKED by $3FFF before anything else
* 4) DIVIDEND is also MULTIPLIED by 16384 ($4000) before division
* D0VD is "experimental" version of DOVD
*
* ??M2L - MEMORY TO MEMORY 2 BYTE MULTIPLY
* undoes DOVD (above)
*
* ??MULU - MEMORY TO MEMORY 2 BYTE MULTIPLY
* arg list is (Source1/DESTIN, Source2, LEN [in words])
* source 1 is masked by $3FFF before, if overflow, or if MS2B's of top word
* of result set, then replace with $3FFF; else return MSW of long result
*
IISUB2 EQU *
XDEF IISUB2,DDSUB2,DISUB2,IDSUB2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INSUB2
IDSUB2 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INSUB2
DISUB2 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INSUB2
DDSUB2 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INSUB2 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S SUB2NO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A1,D0.L),D1
SUB.W D1,0(A0,D0.L)
ENDF
SUB2NO0DST EQU *
FNRET 3
IISZB2 EQU *
XDEF IISZB2,DDSZB2,DISZB2,IDSZB2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INSZB2
IDSZB2 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INSZB2
DISZB2 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INSZB2
DDSZB2 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INSZB2 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S SZB2NO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A1,D0.L),D1
SUB.W D1,0(A0,D0.L)
BGT.S SZB2OVER
MOVE.W #0,0(A0,D0.L)
SZB2OVER EQU *
ENDF
SZB2NO0DST EQU *
FNRET 3
*
IIADD2 EQU *
XDEF IIADD2,DDADD2,DIADD2,IDADD2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INADD2
IDADD2 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INADD2
DIADD2 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INADD2
DDADD2 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INADD2 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S ADD2NO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A1,D0.L),D1
ADD.W D1,0(A0,D0.L)
ENDF
ADD2NO0DST EQU *
FNRET 3
IIADZ2 EQU *
XDEF IIADZ2,DDADZ2,DIADZ2,IDADZ2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INADZ2
IDADZ2 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INADZ2
DIADZ2 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INADZ2
DDADZ2 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INADZ2 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S ADZ2NO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A1,D0.L),D1
ADD.W D1,0(A0,D0.L)
BCC.S ADZ2OVER
MOVE.W #0,0(A0,D0.L)
ADZ2OVER EQU *
ENDF
ADZ2NO0DST EQU *
FNRET 3
*
IISUB4 EQU *
XDEF IISUB4,DDSUB4,DISUB4,IDSUB4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INSUB4
IDSUB4 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INSUB4
DISUB4 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INSUB4
DDSUB4 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INSUB4 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #2,D2
AND.L ADRMSK(PC),D0
BEQ.S SUB4NO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A1,D0.L),D1
SUB.L D1,0(A0,D0.L)
ENDF
SUB4NO0DST EQU *
FNRET 3
IISZB4 EQU *
XDEF IISZB4,DDSZB4,DISZB4,IDSZB4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INSZB4
IDSZB4 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INSZB4
DISZB4 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INSZB4
DDSZB4 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INSZB4 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #2,D2
AND.L ADRMSK(PC),D0
BEQ.S SZB4NO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A1,D0.L),D1
SUB.L D1,0(A0,D0.L)
BGT.S SZB4OVER
MOVE.L #0,0(A0,D0.L)
SZB4OVER EQU *
ENDF
SZB4NO0DST EQU *
FNRET 3
*
IIADD4 EQU *
XDEF IIADD4,DDADD4,DIADD4,IDADD4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INADD4
IDADD4 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INADD4
DIADD4 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INADD4
DDADD4 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INADD4 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #2,D2
AND.L ADRMSK(PC),D0
BEQ.S ADD4NO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A1,D0.L),D1
ADD.L D1,0(A0,D0.L)
ENDF
ADD4NO0DST EQU *
FNRET 3
IIADZ4 EQU *
XDEF IIADZ4,DDADZ4,DIADZ4,IDADZ4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INADZ4
IDADZ4 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INADZ4
DIADZ4 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INADZ4
DDADZ4 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INADZ4 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #2,D2
AND.L ADRMSK(PC),D0
BEQ.S ADZ4NO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A1,D0.L),D1
ADD.L D1,0(A0,D0.L)
BCC.S ADZ4OVER
MOVE.L #0,0(A0,D0.L)
ADZ4OVER EQU *
ENDF
ADZ4NO0DST EQU *
FNRET 3
*
IIEOR4 EQU *
XDEF IIEOR4,DDEOR4,DIEOR4,IDEOR4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INEOR4
IDEOR4 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INEOR4
DIEOR4 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INEOR4
DDEOR4 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INEOR4 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #2,D2
AND.L ADRMSK(PC),D0
BEQ.S EOR4NO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A1,D0.L),D1
EOR.L D1,0(A0,D0.L)
ENDF
EOR4NO0DST EQU *
FNRET 3
IIEOR2 EQU *
XDEF IIEOR2,DDEOR2,DIEOR2,IDEOR2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INEOR2
IDEOR2 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INEOR2
DIEOR2 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INEOR2
DDEOR2 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INEOR2 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S EOR2NO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A1,D0.L),D1
EOR.W D1,0(A0,D0.L)
ENDF
EOR2NO0DST EQU *
FNRET 3
*
IIMJ2G EQU *
XDEF IIMJ2G,DDMJ2G,DIMJ2G,IDMJ2G
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INMJ2G
IDMJ2G EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INMJ2G
DIMJ2G EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INMJ2G
DDMJ2G EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INMJ2G EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S MJ2GNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A1,D0.L),D1
CMP.W 0(A0,D0.L),D1
BLE.S MJ2GOVER
MOVE.W D1,0(A0,D0.L)
MJ2GOVER EQU *
ENDF
MJ2GNO0DST EQU *
FNRET 3
IIMJ2L EQU *
XDEF IIMJ2L,DDMJ2L,DIMJ2L,IDMJ2L
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INMJ2L
IDMJ2L EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INMJ2L
DIMJ2L EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INMJ2L
DDMJ2L EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INMJ2L EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S MJ2LNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A1,D0.L),D1
CMP.W 0(A0,D0.L),D1
BGE.S MJ2LOVER
MOVE.W D1,0(A0,D0.L)
MJ2LOVER EQU *
ENDF
MJ2LNO0DST EQU *
FNRET 3
IIMJ4G EQU *
XDEF IIMJ4G,DDMJ4G,DIMJ4G,IDMJ4G
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INMJ4G
IDMJ4G EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INMJ4G
DIMJ4G EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INMJ4G
DDMJ4G EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INMJ4G EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #2,D2
AND.L ADRMSK(PC),D0
BEQ.S MJ4GNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.L 0(A1,D0.L),D1
CMP.L 0(A0,D0.L),D1
BLE.S MJ4GOVER
MOVE.L D1,0(A0,D0.L)
MJ4GOVER EQU *
ENDF
MJ4GNO0DST EQU *
FNRET 3
IIMJ4L EQU *
XDEF IIMJ4L,DDMJ4L,DIMJ4L,IDMJ4L
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INMJ4L
IDMJ4L EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INMJ4L
DIMJ4L EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INMJ4L
DDMJ4L EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INMJ4L EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #2,D2
AND.L ADRMSK(PC),D0
BEQ.S MJ4LNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.L 0(A1,D0.L),D1
CMP.L 0(A0,D0.L),D1
BGE.S MJ4LOVER
MOVE.L D1,0(A0,D0.L)
MJ4LOVER EQU *
ENDF
MJ4LNO0DST EQU *
FNRET 3
*
IIDIVS EQU *
XDEF IIDIVS,DDDIVS,DIDIVS,IDDIVS
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INDIVS
IDDIVS EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INDIVS
DIDIVS EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INDIVS
DDDIVS EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INDIVS EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S DIVSNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
PUSH.L D4
MOVEQ.L #0,D4
FOR.L D0 = #0 TO D2 BY #2
DO.S
CMP.W 0(A0,D0.L),D4
BGE.S DIVSNOK
MOVE.L D4,D1
MOVE.W 0(A1,D0.L),D1
DIVU 0(A0,D0.L),D1
BVS.S DIVSNOK
MOVE.W D1,0(A0,D0.L)
DIVSNOK EQU *
ENDF
POP.L D4
DIVSNO0DST EQU *
FNRET 3
IIDIVD EQU *
XDEF IIDIVD,DDDIVD,DIDIVD,IDDIVD
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INDIVD
IDDIVD EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INDIVD
DIDIVD EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INDIVD
DDDIVD EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INDIVD EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S DIVDNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
PUSH.L D4
MOVEQ.L #0,D4
FOR.L D0 = #0 TO D2 BY #2
DO.S
CMP.W 0(A1,D0.L),D4
BGE.S DIVDHNDL0
MOVE.L D4,D1
MOVE.W 0(A0,D0.L),D1
DIVU 0(A1,D0.L),D1
BVC.S DIVDNOV
DIVDHNDL0 EQU *
MOVE.W D4,D1
DIVDNOV EQU *
MOVE.W D1,0(A0,D0.L)
ENDF
POP.L D4
DIVDNO0DST EQU *
FNRET 3
*
IMLDV EQU *
XDEF IMLDV
MOVEA.L 16(A7),A0
MOVE.L (A0),D0
BRA.S INMLDV
MLDV EQU *
XDEF MLDV
MOVE.L 16(A7),D0
INMLDV EQU *
AND.L ADRMSK(PC),D0
BEQ.S MLDVNO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D3
MOVEA.L 16(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S MLDVOVER
MOVEQ.L #1,D2
MLDVOVER EQU *
LSL.L #1,D2
PUSH.L D4
MOVEA.L 12(A7),A1
MOVE.L (A1),D4
PUSH.L D5
MOVE.L #$0FFFF,D5
AND.L D5,D3
AND.L D5,D4
BEQ.S MLDVEXIT
MOVE.L #$3FFF,D5
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
AND.L D5,D1
BEQ.S MLDVOK
MULU D3,D1
DIVU D4,D1
MLDVOK EQU *
MOVE.W D1,0(A0,D0.L)
ENDF
MLDVEXIT EQU *
POP.L D5
POP.L D4
POP.L D3
MLDVNO0DST EQU *
FNRET 4
*
ILSL1 EQU *
XDEF ILSL1
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INLSL1
LSL1 EQU *
XDEF LSL1
MOVE.L 12(A7),D0
INLSL1 EQU *
ANDI.L #$0FFFFFF,D0
BEQ.S LSL1NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S LSL1OVER
MOVEQ.L #1,D2
LSL1OVER EQU *
FOR.L D0 = #0 TO D2 BY #1
DO.S
MOVE.B 0(A0,D0.L),D1
LSL.B D3,D1
MOVE.B D1,0(A0,D0.L)
ENDF
POP.L D3
LSL1NO0DST EQU *
FNRET 3
ILSL2 EQU *
XDEF ILSL2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INLSL2
LSL2 EQU *
XDEF LSL2
MOVE.L 12(A7),D0
INLSL2 EQU *
AND.L ADRMSK(PC),D0
BEQ.S LSL2NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S LSL2OVER
MOVEQ.L #1,D2
LSL2OVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
LSL.W D3,D1
MOVE.W D1,0(A0,D0.L)
ENDF
POP.L D3
LSL2NO0DST EQU *
FNRET 3
ILSL4 EQU *
XDEF ILSL4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INLSL4
LSL4 EQU *
XDEF LSL4
MOVE.L 12(A7),D0
INLSL4 EQU *
AND.L ADRMSK(PC),D0
BEQ.S LSL4NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S LSL4OVER
MOVEQ.L #1,D2
LSL4OVER EQU *
LSL.L #2,D2
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A0,D0.L),D1
LSL.L D3,D1
MOVE.L D1,0(A0,D0.L)
ENDF
POP.L D3
LSL4NO0DST EQU *
FNRET 3
*
ILSR1 EQU *
XDEF ILSR1
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INLSR1
LSR1 EQU *
XDEF LSR1
MOVE.L 12(A7),D0
INLSR1 EQU *
ANDI.L #$0FFFFFF,D0
BEQ.S LSR1NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S LSR1OVER
MOVEQ.L #1,D2
LSR1OVER EQU *
FOR.L D0 = #0 TO D2 BY #1
DO.S
MOVE.B 0(A0,D0.L),D1
LSR.B D3,D1
MOVE.B D1,0(A0,D0.L)
ENDF
POP.L D3
LSR1NO0DST EQU *
FNRET 3
ILSR2 EQU *
XDEF ILSR2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INLSR2
LSR2 EQU *
XDEF LSR2
MOVE.L 12(A7),D0
INLSR2 EQU *
AND.L ADRMSK(PC),D0
BEQ.S LSR2NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S LSR2OVER
MOVEQ.L #1,D2
LSR2OVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
LSR.W D3,D1
MOVE.W D1,0(A0,D0.L)
ENDF
POP.L D3
LSR2NO0DST EQU *
FNRET 3
ILSR4 EQU *
XDEF ILSR4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INLSR4
LSR4 EQU *
XDEF LSR4
MOVE.L 12(A7),D0
INLSR4 EQU *
AND.L ADRMSK(PC),D0
BEQ.S LSR4NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S LSR4OVER
MOVEQ.L #1,D2
LSR4OVER EQU *
LSL.L #2,D2
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A0,D0.L),D1
LSR.L D3,D1
MOVE.L D1,0(A0,D0.L)
ENDF
POP.L D3
LSR4NO0DST EQU *
FNRET 3
*
IASL1 EQU *
XDEF IASL1
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INASL1
ASL1 EQU *
XDEF ASL1
MOVE.L 12(A7),D0
INASL1 EQU *
ANDI.L #$0FFFFFF,D0
BEQ.S ASL1NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ASL1OVER
MOVEQ.L #1,D2
ASL1OVER EQU *
FOR.L D0 = #0 TO D2 BY #1
DO.S
MOVE.B 0(A0,D0.L),D1
ASL.B D3,D1
MOVE.B D1,0(A0,D0.L)
ENDF
POP.L D3
ASL1NO0DST EQU *
FNRET 3
IASL2 EQU *
XDEF IASL2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INASL2
ASL2 EQU *
XDEF ASL2
MOVE.L 12(A7),D0
INASL2 EQU *
AND.L ADRMSK(PC),D0
BEQ.S ASL2NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ASL2OVER
MOVEQ.L #1,D2
ASL2OVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
ASL.W D3,D1
MOVE.W D1,0(A0,D0.L)
ENDF
POP.L D3
ASL2NO0DST EQU *
FNRET 3
IASL4 EQU *
XDEF IASL4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INASL4
ASL4 EQU *
XDEF ASL4
MOVE.L 12(A7),D0
INASL4 EQU *
AND.L ADRMSK(PC),D0
BEQ.S ASL4NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ASL4OVER
MOVEQ.L #1,D2
ASL4OVER EQU *
LSL.L #2,D2
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A0,D0.L),D1
ASL.L D3,D1
MOVE.L D1,0(A0,D0.L)
ENDF
POP.L D3
ASL4NO0DST EQU *
FNRET 3
*
IASR1 EQU *
XDEF IASR1
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INASR1
ASR1 EQU *
XDEF ASR1
MOVE.L 12(A7),D0
INASR1 EQU *
ANDI.L #$0FFFFFF,D0
BEQ.S ASR1NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ASR1OVER
MOVEQ.L #1,D2
ASR1OVER EQU *
FOR.L D0 = #0 TO D2 BY #1
DO.S
MOVE.B 0(A0,D0.L),D1
ASR.B D3,D1
MOVE.B D1,0(A0,D0.L)
ENDF
POP.L D3
ASR1NO0DST EQU *
FNRET 3
IASR2 EQU *
XDEF IASR2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INASR2
ASR2 EQU *
XDEF ASR2
MOVE.L 12(A7),D0
INASR2 EQU *
AND.L ADRMSK(PC),D0
BEQ.S ASR2NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ASR2OVER
MOVEQ.L #1,D2
ASR2OVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
ASR.W D3,D1
MOVE.W D1,0(A0,D0.L)
ENDF
POP.L D3
ASR2NO0DST EQU *
FNRET 3
IASR4 EQU *
XDEF IASR4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INASR4
ASR4 EQU *
XDEF ASR4
MOVE.L 12(A7),D0
INASR4 EQU *
AND.L ADRMSK(PC),D0
BEQ.S ASR4NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ASR4OVER
MOVEQ.L #1,D2
ASR4OVER EQU *
LSL.L #2,D2
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A0,D0.L),D1
ASR.L D3,D1
MOVE.L D1,0(A0,D0.L)
ENDF
POP.L D3
ASR4NO0DST EQU *
FNRET 3
*
IROL1 EQU *
XDEF IROL1
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INROL1
ROL1 EQU *
XDEF ROL1
MOVE.L 12(A7),D0
INROL1 EQU *
ANDI.L #$0FFFFFF,D0
BEQ.S ROL1NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ROL1OVER
MOVEQ.L #1,D2
ROL1OVER EQU *
FOR.L D0 = #0 TO D2 BY #1
DO.S
MOVE.B 0(A0,D0.L),D1
ROL.B D3,D1
MOVE.B D1,0(A0,D0.L)
ENDF
POP.L D3
ROL1NO0DST EQU *
FNRET 3
IROL2 EQU *
XDEF IROL2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INROL2
ROL2 EQU *
XDEF ROL2
MOVE.L 12(A7),D0
INROL2 EQU *
AND.L ADRMSK(PC),D0
BEQ.S ROL2NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ROL2OVER
MOVEQ.L #1,D2
ROL2OVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
ROL.W D3,D1
MOVE.W D1,0(A0,D0.L)
ENDF
POP.L D3
ROL2NO0DST EQU *
FNRET 3
IROL4 EQU *
XDEF IROL4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INROL4
ROL4 EQU *
XDEF ROL4
MOVE.L 12(A7),D0
INROL4 EQU *
AND.L ADRMSK(PC),D0
BEQ.S ROL4NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ROL4OVER
MOVEQ.L #1,D2
ROL4OVER EQU *
LSL.L #2,D2
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A0,D0.L),D1
ROL.L D3,D1
MOVE.L D1,0(A0,D0.L)
ENDF
POP.L D3
ROL4NO0DST EQU *
FNRET 3
*
IROR1 EQU *
XDEF IROR1
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INROR1
ROR1 EQU *
XDEF ROR1
MOVE.L 12(A7),D0
INROR1 EQU *
ANDI.L #$0FFFFFF,D0
BEQ.S ROR1NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ROR1OVER
MOVEQ.L #1,D2
ROR1OVER EQU *
FOR.L D0 = #0 TO D2 BY #1
DO.S
MOVE.B 0(A0,D0.L),D1
ROR.B D3,D1
MOVE.B D1,0(A0,D0.L)
ENDF
POP.L D3
ROR1NO0DST EQU *
FNRET 3
IROR2 EQU *
XDEF IROR2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INROR2
ROR2 EQU *
XDEF ROR2
MOVE.L 12(A7),D0
INROR2 EQU *
AND.L ADRMSK(PC),D0
BEQ.S ROR2NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ROR2OVER
MOVEQ.L #1,D2
ROR2OVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
ROR.W D3,D1
MOVE.W D1,0(A0,D0.L)
ENDF
POP.L D3
ROR2NO0DST EQU *
FNRET 3
IROR4 EQU *
XDEF IROR4
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INROR4
ROR4 EQU *
XDEF ROR4
MOVE.L 12(A7),D0
INROR4 EQU *
AND.L ADRMSK(PC),D0
BEQ.S ROR4NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ROR4OVER
MOVEQ.L #1,D2
ROR4OVER EQU *
LSL.L #2,D2
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L 0(A0,D0.L),D1
ROR.L D3,D1
MOVE.L D1,0(A0,D0.L)
ENDF
POP.L D3
ROR4NO0DST EQU *
FNRET 3
*
*
IMINVR EQU *
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INMINVR
MINVR EQU *
XDEF MINVR,IMINVR
MOVE.L 8(A7),D0
INMINVR EQU *
AND.L ADRMSK(PC),D0
BEQ.S MINVRNO0DST
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S MINVROVER
MOVEQ.L #1,D2
MINVROVER EQU *
PUSH.L D4
PUSH.L D5
MOVE.L #$3FFF,D4
MOVE.L #$4000,D5
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
AND.W D4,0(A0,D0.L)
BEQ.S MINVRNOP
MOVE.L D5,D1
DIVU 0(A0,D0.L),D1
BVC.S MINVROK
MOVE.W D5,D1
MINVROK EQU *
MOVE.W D1,0(A0,D0.L)
MINVRNOP EQU *
ENDF
POP.L D5
POP.L D4
MINVRNO0DST EQU *
FNRET 2
IMINV EQU *
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INMINV
MINV EQU *
XDEF MINV,IMINV
MOVE.L 8(A7),D0
INMINV EQU *
AND.L ADRMSK(PC),D0
BEQ.S MINVNO0DST
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S MINVOVER
MOVEQ.L #1,D2
MINVOVER EQU *
PUSH.L D4
PUSH.L D5
MOVE.L #$3FFF,D4
MOVE.L #$4000,D5
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
AND.W D4,0(A0,D0.L)
BEQ.S MINVZAP
MOVE.L D5,D1
DIVU 0(A0,D0.L),D1
BVC.S MINVOK
MINVZAP EQU *
MOVE.W D5,D1
MINVOK EQU *
MOVE.W D1,0(A0,D0.L)
ENDF
POP.L D5
POP.L D4
MINVNO0DST EQU *
FNRET 2
*
IFILL1 EQU *
XDEF IFILL1
MOVEA.L 16(A7),A0
MOVE.L (A0),D0
BRA.S INFILL1
FILL1 EQU *
XDEF FILL1
MOVE.L 16(A7),D0
INFILL1 EQU *
ANDI.L #$0FFFFFF,D0
BEQ.S FILL1NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D3
MOVEA.L 16(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S FILL1OVER
MOVEQ.L #1,D2
FILL1OVER EQU *
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
FOR.L D0 = #0 TO D2 BY #1
DO.S
MOVE.B D3,0(A0,D0.L)
ADD.B D1,D3
ENDF
POP.L D3
FILL1NO0DST EQU *
FNRET 3
IFILL2 EQU *
XDEF IFILL2
MOVEA.L 16(A7),A0
MOVE.L (A0),D0
BRA.S INFILL2
FILL2 EQU *
XDEF FILL2
MOVE.L 16(A7),D0
INFILL2 EQU *
AND.L ADRMSK(PC),D0
BEQ.S FILL2NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D3
MOVEA.L 16(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S FILL2OVER
MOVEQ.L #1,D2
FILL2OVER EQU *
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W D3,0(A0,D0.L)
ADD.W D1,D3
ENDF
POP.L D3
FILL2NO0DST EQU *
FNRET 3
IFILL4 EQU *
XDEF IFILL4
MOVEA.L 16(A7),A0
MOVE.L (A0),D0
BRA.S INFILL4
FILL4 EQU *
XDEF FILL4
MOVE.L 16(A7),D0
INFILL4 EQU *
AND.L ADRMSK(PC),D0
BEQ.S FILL4NO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D3
MOVEA.L 16(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S FILL4OVER
MOVEQ.L #1,D2
FILL4OVER EQU *
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
LSL.L #2,D2
FOR.L D0 = #0 TO D2 BY #4
DO.S
MOVE.L D3,0(A0,D0.L)
ADD.L D1,D3
ENDF
POP.L D3
FILL4NO0DST EQU *
FNRET 3
*
ININVR EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INNINVR
NINVR EQU *
XDEF NINVR,ININVR
MOVE.L 12(A7),D0
INNINVR EQU *
AND.L ADRMSK(PC),D0
BEQ.S NINVRNO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S NINVROVER
MOVEQ.L #1,D2
NINVROVER EQU *
PUSH.L D4
PUSH.L D5
MOVE.L #$3FFF,D4
MOVE.L #$4000,D5
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
AND.W D4,0(A0,D0.L)
BEQ.S NINVRNOP
MOVE.L D5,D1
LSL.L D3,D1
DIVU 0(A0,D0.L),D1
BVC.S NINVROK
MOVE.W D5,D1
NINVROK EQU *
MOVE.W D1,0(A0,D0.L)
NINVRNOP EQU *
ENDF
POP.L D5
POP.L D4
POP.L D3
NINVRNO0DST EQU *
FNRET 3
ININV EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INNINV
NINV EQU *
XDEF NINV,ININV
MOVE.L 12(A7),D0
INNINV EQU *
AND.L ADRMSK(PC),D0
BEQ.S NINVNO0DST
MOVEA.L D0,A0
PUSH.L D3
MOVEA.L 8(A7),A1
MOVE.L (A1),D3
MOVEA.L 12(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S NINVOVER
MOVEQ.L #1,D2
NINVOVER EQU *
PUSH.L D4
PUSH.L D5
MOVE.L #$3FFF,D4
MOVE.L #$4000,D5
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
AND.W D4,0(A0,D0.L)
BEQ.S NINVZAP
MOVE.L D5,D1
LSL.L D3,D1
DIVU 0(A0,D0.L),D1
BVC.S NINVOK
NINVZAP EQU *
MOVE.W D5,D1
NINVOK EQU *
MOVE.W D1,0(A0,D0.L)
ENDF
POP.L D5
POP.L D4
POP.L D3
NINVNO0DST EQU *
FNRET 3
*
IITBL2 EQU *
XDEF IITBL2,DDTBL2,DITBL2,IDTBL2
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INTBL2
IDTBL2 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INTBL2
DITBL2 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INTBL2
DDTBL2 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INTBL2 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S TBL2NO0DST
MOVEA.L D0,A0
AND.L ADRMSK(PC),D1
MOVEA.L D1,A1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVEQ.L #0,D1
MOVE.W 0(A0,D0.L),D1
ADD.L D1,D1
MOVE.W 0(A1,D1.L),D1
MOVE.W D1,0(A0,D0.L)
ENDF
TBL2NO0DST EQU *
FNRET 3
*
IITBL1 EQU *
XDEF IITBL1,DDTBL1,DITBL1,IDTBL1
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INTBL1
IDTBL1 EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INTBL1
DITBL1 EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INTBL1
DDTBL1 EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INTBL1 EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
ANDI.L #$0FFFFFF,D0
BEQ.S TBL1NO0DST
MOVEA.L D0,A0
ANDI.L #$0FFFFFF,D1
MOVEA.L D1,A1
EOR.L D1,D1
FOR.L D0 = #0 TO D2 BY #1
DO.S
MOVE.B 0(A0,D0.L),D1
MOVE.B 0(A1,D1.W),D1
MOVE.B D1,0(A0,D0.L)
ENDF
TBL1NO0DST EQU *
FNRET 3
*
IIDOVS EQU *
XDEF IIDOVS,DDDOVS,DIDOVS,IDDOVS
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INDOVS
IDDOVS EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INDOVS
DIDOVS EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INDOVS
DDDOVS EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INDOVS EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S DOVSNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
PUSH.L D3
PUSH.L D4
MOVE.L #$3FFF,D3
MOVEQ.L #0,D4
MOVE.L D4,D1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A1,D0.L),D1
AND.W D3,D1
BEQ.S DOVSNOV
CMP.W 0(A0,D0.L),D4
BGE.S DOVSNOK
SWAP D1
LSR.L #2,D1
DIVU 0(A0,D0.L),D1
BVC.S DOVSNOV
CMP.W D1,D3
BLE.S DOVSNOV
DOVSNOK EQU *
MOVE.W D3,D1
DOVSNOV EQU *
MOVE.W D1,0(A0,D0.L)
MOVE.L D4,D1
ENDF
POP.L D4
POP.L D3
DOVSNO0DST EQU *
FNRET 3
*
IIDOVD EQU *
XDEF IIDOVD,DDDOVD,DIDOVD,IDDOVD
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INDOVD
IDDOVD EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INDOVD
DIDOVD EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INDOVD
DDDOVD EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INDOVD EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S DOVDNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
PUSH.L D3
PUSH.L D4
MOVE.L #$3FFF,D3
MOVEQ.L #0,D4
MOVE.L D4,D1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
AND.W D3,D1
BEQ.S DOVDNOV
CMPI.W #0,0(A1,D0.L)
BEQ.S DOVDBLNKPXL
CMP.W 0(A1,D0.L),D1
BGE.S DOVDHNDL0
SWAP D1
LSR.L #2,D1
DIVU 0(A1,D0.L),D1
BVC.S DOVDNOV
CMP.W D1,D3
BLE.S DOVDNOV
DOVDHNDL0 EQU *
MOVE.W D3,D1
BRA.S DOVDNOV
DOVDBLNKPXL EQU *
MOVE.W #0,D1
DOVDNOV EQU *
MOVE.W D1,0(A0,D0.L)
MOVE.L D4,D1
ENDF
POP.L D4
POP.L D3
DOVDNO0DST EQU *
FNRET 3
*
IID0VD EQU *
XDEF IID0VD,DDD0VD,DID0VD,IDD0VD
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S IND0VD
IDD0VD EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S IND0VD
DID0VD EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S IND0VD
DDD0VD EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
IND0VD EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S D0VDNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
PUSH.L D3
PUSH.L D4
MOVE.L #$3FFF,D3
MOVEQ.L #0,D4
MOVE.L D4,D1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
AND.W D3,D1
BEQ.S D0VDNOV
CMPI.W #0,0(A1,D0.L)
BEQ.S D0VDBLNKPXL
CMP.W 0(A1,D0.L),D1
BGE.S BGD0VDHNDL
SWAP D1
LSR.L #2,D1
DIVU 0(A1,D0.L),D1
BVC.S D0VDNOV
CMP.W D1,D3
BLE.S D0VDNOV
BGD0VDHNDL EQU *
MOVE.W D3,D1
BRA.S D0VDNOV
D0VDBLNKPXL EQU *
MOVE.W #0,D1
D0VDNOV EQU *
MOVE.W D1,0(A0,D0.L)
MOVE.L D4,D1
ENDF
POP.L D4
POP.L D3
D0VDNO0DST EQU *
FNRET 3
*
IIM2L EQU *
XDEF IIM2L,DDM2L,DIM2L,IDM2L
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INM2L
IDM2L EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INM2L
DIM2L EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INM2L
DDM2L EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INM2L EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S M2LNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
PUSH.L D3
PUSH.L D4
MOVE.L #$3FFF,D3
MOVEQ.L #0,D4
MOVE.L D4,D1
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
AND.W D3,D1
BEQ.S M2LNOV
MULU 0(A1,D0.L),D1
LSL.L #2,D1
SWAP D1
CMP.W D1,D3
BLE.S M2LNOV
MOVE.W D3,D1
M2LNOV EQU *
MOVE.W D1,0(A0,D0.L)
MOVE.L D4,D1
ENDF
POP.L D4
POP.L D3
M2LNO0DST EQU *
FNRET 3
*
*
IIMULU EQU *
XDEF IIMULU,DDMULU,DIMULU,IDMULU
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INMULU
IDMULU EQU *
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
MOVE.L 8(A7),D1
BRA.S INMULU
DIMULU EQU *
MOVE.L 12(A7),D0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
BRA.S INMULU
DDMULU EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
INMULU EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
LSL.L #1,D2
AND.L ADRMSK(PC),D0
BEQ.S MULUNO0DST
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
PUSH.L D3
PUSH.L D4
MOVE.L #$3FFF,D3
MOVE.L #$FFFF0000,D4
FOR.L D0 = #0 TO D2 BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
AND.W D3,D1
MULU 0(A1,D0.L),D1
BVS.S MULUOVFL
MOVE.W D1,0(A0,D0.L)
AND.L D4,D1
BEQ.S MULUDONE
MULUOVFL EQU *
MOVE.W D3,0(A0,D0.L)
MULUDONE EQU *
ENDF
POP.L D4
POP.L D3
MULUNO0DST EQU *
FNRET 3
END

Das könnte Ihnen auch gefallen