Sie sind auf Seite 1von 27

BYTES IDNT 1,0

NOPAGE
NOLIST
INCLUDE MACROS.INC
NOFORMAT
LIST
ADDRMASK SET $0FFFFFE
ADRMSK DC.L ADDRMASK
* INCLUDE MACROS2.INC
*
* ENTRY ISTACK Returns current STACK address
* I = ISTACK() - returns user stack pointer (USP)
*
* ENTRY KADDR,ABSADDR Return the ADDRess of a variable
* FORTRAN CALLING SEQUENCE: adrvar(INTEGER*4) = KADDR(variable)
*
* ENTRY DEREF
* I = DEREF(address INT*4)
*
* ENTRY HERE
* RETURNS TO THE CALLER THE LOCATION OF THE CALLER'S CODE - USEFUL
* FOR LOCATING STATEMENTS IN THE LOAD MODULE: I = HERE()
*
* ENTRY IBTEST
* FORTRAN CALLING SEQUENCE: RETVAL [int*1,2,4] = IBTEST(BYT-IO-PTR,ERR-CODE [int*4])
* ENTRY IBREAD
* FORTRAN CALLING SEQUENCE: RETVAL [int*1,2,4] = IBREAD(BYT-IO-PTR,ERR-CODE [int*4])
*
*
* ENTRY STCNPT
* CALL STCNPT(#CON BYTE-IO-PTR) - SETS BYTE IO POINTER FOR CALLS TO CONTST,CONREA
* ENTRY STKPPT
* CALL STKPPT(#CON BYTE-IO-PTR) - SETS BYTE IO POINTER FOR CALLS TO KPDTST,KPDREA
*
*
* ENTRY GTCNPT
* I = GTCNPT(#CON BYTE-IO-PTR) - GETS BYTE IO POINTER FOR CALLS TO CONTST,CONREA
* ENTRY GTKPPT
* I = GTKPPT(#CON BYTE-IO-PTR) - GETS BYTE IO POINTER FOR CALLS TO KPDTST,KPDREA
*
*
* ENTRY CONTST,CONREA
* RETVAL [int*4] = CONxxx(ERROR-VAL [int*4])
* ENTRY KPDTST,KPDREA
* RETVAL [int*4] = KPDxxx(ERROR-VAL [int*4])
*
*
* ENTRY IZAPIT,ZAPIT ZERO a region of memory
* CALL ZAPIT(ARRAY,LEN integer*4) will fill the array with LEN bytes of 0
* CALL IZAPIT(ADDR integer*4,LEN integer*4) will fill memory at the address
* contained in ADDR with LEN bytes of 0
* ENTRY IHITIT,HITIT FILL a region of memory
* CALL HITIT(ARRAY,LEN integer*4,FILLVALUE integer*4)
* ENTRY IANDIT,ANDIT AND a region of memory
* CALL ANDIT(ARRAY,LEN integer*4,ANDVALUE integer*4)
* ENTRY IORIT,ORIT OR a region of memory
* CALL ORIT(ARRAY,LEN integer*4,ORVALUE integer*4)
* ENTRY IEORIT,EORIT EOR a region of memory
* CALL EORIT(ARRAY,LEN integer*4,EORVALUE integer*4)
* ENTRY IADDIT,ADDIT ADD a region of memory
* CALL ADDIT(ARRAY,LEN integer*4,ADDVALUE integer*4)
* ENTRY ISUBIT,SUBIT SUB a region of memory
* CALL SUBIT(ARRAY,LEN integer*4,SUBVALUE integer*4)
* ENTRY ISZBIT,SZBIT SUB a region of memory, 0 FLOOR
* CALL SZBIT(ARRAY,LEN integer*4,SUBVALUE integer*4)
* ENTRY IAND2T,AND2T AND a region of memory
* CALL AND2T(ARRAY,LEN integer*4,ANDVALUE integer*4)
* ENTRY IOR2T,OR2T OR a region of memory
* CALL OR2T(ARRAY,LEN integer*4,ORVALUE integer*4)
* ENTRY IEOR2T,EOR2T EOR a region of memory
* CALL EOR2T(ARRAY,LEN integer*4,EORVALUE integer*4)
* ENTRY IADD2T,ADD2T ADD a region of memory
* CALL ADD2T(ARRAY,LEN integer*4,ADDVALUE integer*4)
* ENTRY ISUB2T,SUB2T SUB a region of memory
* CALL SUB2T(ARRAY,LEN integer*4,SUBVALUE integer*4)
* ENTRY ISZB2T,SZB2T SUB a region of memory, 0 FLOOR
* CALL SZB2T(ARRAY,LEN integer*4,SUBVALUE integer*4)
* ENTRY ISIN2T,SIN2T SUB a region of memory FROM CONST, 0 FLOOR
* CALL SIN2T(ARRAY,LEN integer*4,SUBVALUE integer*4)
* ENTRY IADM2T,ADM2T ADD a region of memory, $FFFF ceiling
* CALL ADM2T(ARRAY,LEN integer*4,ADDVALUE integer*4)
* ENTRY IZRKIT,ZRKIT if masks to non0 AND w/$1FF
* ENTRY IPRFIT,PRFIT PROFILE par/oma data arrary W/ZERO FUNNY FIX
* ENTRY IPRF1T,PRF1T PROFILE par/oma data arrary W/O ZERO FUNNY FIX
* see also PRFIM and PRF1M in MORBYT.ASM
* ENTRY ISUMIT,SUMIT cumulative SUM of profile data
* ENTRY B?GIT,IB?GIT ?=2 or 4, RETURNS BIGGEST, AND INDEX
* IBIG = B4GIT(ARRAY,LASTIND) -- LASIND = IND(BIG) ON RETURN
* ENTRY SM?IT,ISM?IT ?=2 or 4, SMALLEST - else like preceeding
* above two are signed comparisons; LS2IT, L2GIT are two-byte unsigned versions
* The following operate on WORDS and take a LEN count in WORDS, SHIFT IS 1 BIT
* ENTRY LSdIT,ILSdIT d=L or R; LOGICAL SHIFT (WORDS)
* ENTRY ASdIT,IASdIT d=L or R; ARITHMETIC SHIFT (WORDS)
* ENTRY ROdIT,IROdIT d=L or R; ROTATE (WORDS)
*
* ENTRY DDCOPY,DICOPY,IDCOPY,IICOPY -- also ??EXCH which EXCHanges
* CALL xxCOPY(SOURCE,DESTIN,LENGTH) will copy LENGTH bytes from SOURCE to
* DESTINation. LENGTH should be INT*4 and multiple of 4. SOURCE & DESTIN
* can be either the actual objects(D) or pointers to the objects(I).
* ENTRY DDYPOC,DIYPOC,IDYPOC,IIYPOC -- also ??HCXE which exchanges
* CALL xxYPOC(SOURCE,DESTIN,LENGTH) will copy LENGTH bytes from SOURCE to
* DESTINation. LENGTH should be INT*4 and multiple of 4. SOURCE & DESTIN
* can be either the actual objects(D) or pointers to the objects(I).
*---- COPY goes from LOW to HIGH addresses, YPOC goes from HIGH to LOW addresses
* ENTRYs ??EXCH, ??HCXE - EXCHange rather than COPY
* ENTRYs ??C0PY, ??YP0C, ??EXC1, ??H1XE - byte by byte variants of above
*
* XDEF ALLOC,ALLOC_,KGR_NEW,GTHEAP
* XDEF RLSE_,KGR_KILL,RLSE,LSHEAP
* I = ALLOC(HOWMANY integer*4) will allocate HOWMANY bytes from heap and
* return pointer, or will return 0 if allocation fails [ALLOC_, KGR_NEW]
* do the same but can be called from Pascal with longint argument
* CALL RLSE(ADDR integer*4) will release allocated heap [FORTRAN]
* RLSE_ & KGR_KILL do the same as DISPOSE [Pascal]
*
* ENTRY PUSHV PUSHes the Value of a variable
* CALL PUSHV(VAR integer*4) [ also PUSHP - PUSH Pointer = RTSLOC ]
* ENTRY RTSLOC [ aka PUSHP ]
*
* XDEF IJMPTO,DJMPTO
*
* ENTRY PRTSCN, SCRPRT Does a PrtSc (if possible)
*
* IAND, I2AND2, I1AND1 - 4,2,1 BYTE ANDS; similarly: IOR, I2OR2, I1OR1 &
* also IEOR/IXOR, I2EOR2/I2XOR2, I1EOR1/I1XOR1
*
* SCRTCR, ICRTCR - set/return value of CRT Control Register
*
* ENTRY ZIPPOS, ZAPPOS; ZIPNEG, ZAPNEG
* will Zero out POS/NEG number; either REAL*4 or INTEGER*4
*
* ENTRY TELEDS, PTELEDS
* FORTRAN: CALL TELEDS(an I4) - LSBYTE OF I4 is sent to keypad leds/buzzer
* pascal: PROCEDURE TELEDS(VAR NEW_VAL:LONGINT); EXTERNAL;
* pascal: PROCEDURE PTELEDS(NEW_VAL:LONGINT); EXTERNAL;
*
* ENTRY REG?#, IREG?# ? = A or D, # = 0 .. 7
* returns value of register to FORTRAN or PASCAL caller
*
ISTACK EQU *
LEA 4(A7),A1 Get address of stack bottom after return
MOVE.L A1,D0 Move it into D0 for function return
RTS
STSTAK EQU *
XDEF STSTAK,ISTACK
MOVEA.L (A7),A0
MOVEA.L 4(A7),A1
MOVEA.L (A1),A7
JMP (A0)
*
ABSADDR EQU *
KADDR EQU *
KADDR1 EQU *
KADDR2 EQU *
KADDR3 EQU *
KADDR4 EQU *
XDEF ABSADDR,KADDR Return the ADDRess of a variable
XDEF KADDR1,KADDR2,KADDR3,KADDR4
* FORTRAN CALLING SEQUENCE: adrvar(INTEGER*4) = KADDR(variable)
MOVE.L 4(A7),D0 D0 loaded with address of operand
FNRET 1
*
DEREF EQU *
XDEF DEREF
MOVEA.L 4(A7),A0 A0 loaded with address of operand
MOVEA.L (A0),A0 A0 loaded with operand (ADDRESS)
MOVE.L (A0),D0 RETURN the LWORD at that address
FNRET 1
*
CURPC EQU *
HERE EQU *
XDEF CURPC,HERE Return the CURRENT PC VALUE
MOVE.L (A7),D0 D0 loaded with address of operand
RTS
*
IBTEST EQU *
SAVREG
MOVEA.L 8(A5),A0
TST.L (A0)
BMI.S IBFUBAR
MOVEA.L (A0),A6
MOVEQ.L #0,D0
MOVEQ.L #0,D7
TRAP #6
DC.W 10 BTEST
MOVEA.L 4(A5),A0
IBCONT MOVE.L D7,(A0)
RSTREG
FNRET 2
IBFUBAR MOVE.L #$8B01,D7
BRA.S IBCONT
*
IBREAD EQU *
XDEF IBREAD,IBTEST
SAVREG
MOVEA.L 8(A5),A0
TST.L (A0)
BMI.S IBFUBAR
MOVEA.L (A0),A6
MOVEQ.L #0,D0
MOVEQ.L #0,D7
TRAP #6
DC.W 8 BREAD
MOVEA.L 4(A5),A0
MOVE.L D7,(A0)
RSTREG
FNRET 2
*
STCNPT EQU *
MOVEA.L 4(A7),A0
MOVE.L (A0),CONPTR
FNRET1
STKPPT EQU *
XDEF STKPPT,STCNPT
MOVEA.L 4(A7),A0
MOVE.L (A0),KPDPTR
FNRET1
*
GTCNPT EQU *
XDEF GTCNPT
MOVE.L CONPTR,D0
RTS
GTKPPT EQU *
XDEF GTKPPT,GTCNPT
MOVE.L KPDPTR,D0
RTS
*
CONTST EQU *
SAVREG
TST.L CONPTR
BMI.S CONFUBAR
MOVEA.L CONPTR(PC),A6
MOVEQ.L #0,D7
TRAP #6
DC.W 10 BTEST
MOVEA.L 4(A5),A0
CMP.W #$8500,D0
BMI.S CONCONT
CONSHF EQU *
SWAP D0
MOVE.W LSTCON(PC),D0
SWAP D0
CONCONT MOVE.L D7,(A0)
MOVE.L D0,LSTCON
RSTREG
FNRET1
CONFUBAR MOVE.L #$8B01,D7
BRA.S CONCONT
*
CONREA EQU *
XDEF CONREA,CONTST
SAVREG
TST.L CONPTR
BMI.S CONFUBAR
MOVEA.L CONPTR(PC),A6
MOVEQ.L #0,D7
TRAP #6
DC.W 8 BREAD
MOVEA.L 4(A5),A0
CMP.W #$8500,D0
BMI.S CONCONT
BRA.S CONSHF
*
*
KPDTST EQU *
SAVREG
TST.L KPDPTR
BMI.S CONFUBAR
MOVEA.L KPDPTR(PC),A6
MOVEQ.L #0,D7
TRAP #6
DC.W 10 BTEST
MOVEA.L 4(A5),A0
MOVE.L D7,(A0)
KPDRET RSTREG
FNRET1
KPDREA EQU *
XDEF KPDREA,KPDTST
SAVREG
TST.L KPDPTR
BMI.L CONFUBAR
MOVEA.L KPDPTR(PC),A6
MOVEQ.L #0,D7
TRAP #6
DC.W 8 BREAD
MOVEA.L 4(A5),A0
MOVE.L D7,(A0)
BRA.S KPDRET
*
*
IZAPIT EQU *
XDEF IZAPIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INZAPIT
ZAPIT EQU *
XDEF ZAPIT
MOVE.L 8(A7),D0
INZAPIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S ZAPNO0DST
CMPI.L #$0E000,D0
BLE.S ZAPNO0DST
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D1
LSR.L #2,D1
SWAP D1
MOVE.W D1,D2
SWAP D1
ZAPOVER EQU *
CLR.L (A0)+
DBRA D1,ZAPOVER Clear up to 65535 Lwords
DBRA D2,ZAPOVER Repeat for each chunk of 262144 bytes
ZAPNO0DST EQU *
FNRET 2
*
IHITIT EQU *
XDEF IHITIT
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INHITIT
HITIT EQU *
XDEF HITIT
MOVE.L 12(A7),D0
INHITIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S HITNO0DST
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
BPL.S HITOVER
MOVEQ.L #4,D1
HITOVER EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
FOR.L D0 = #0 TO D1 BY #4
DO.S
MOVE.L D2,0(A0,D0.L)
ENDF
HITNO0DST EQU *
FNRET 3
*
IANDIT EQU *
XDEF IANDIT
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INANDIT
ANDIT EQU *
XDEF ANDIT
MOVE.L 12(A7),D0
INANDIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S HITNO0DST
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
BPL.S ANDOVER
MOVEQ.L #4,D1
ANDOVER EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
FOR.L D0 = #0 TO D1 BY #4
DO.S
AND.L D2,0(A0,D0.L)
ENDF
BRA.S HITNO0DST
*
IORIT EQU *
XDEF IORIT
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INORIT
ORIT EQU *
XDEF ORIT
MOVE.L 12(A7),D0
INORIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S ORNO0DST
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
BPL.S OROVER
MOVEQ.L #4,D1
OROVER EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
FOR.L D0 = #0 TO D1 BY #4
DO.S
OR.L D2,0(A0,D0.L)
ENDF
ORNO0DST EQU *
FNRET 3
*
IEORIT EQU *
XDEF IEORIT
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INEORIT
EORIT EQU *
XDEF EORIT
MOVE.L 12(A7),D0
INEORIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S ORNO0DST
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
BPL.S EOROVER
MOVEQ.L #4,D1
EOROVER EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
FOR.L D0 = #0 TO D1 BY #4
DO.S
EOR.L D2,0(A0,D0.L)
ENDF
BRA.S ORNO0DST
*
IADDIT EQU *
XDEF IADDIT
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INADDIT
ADDIT EQU *
XDEF ADDIT
MOVE.L 12(A7),D0
INADDIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S ADDNO0DST
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
BPL.S ADDOVER
MOVEQ.L #4,D1
ADDOVER EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
FOR.L D0 = #0 TO D1 BY #4
DO.S
ADD.L D2,0(A0,D0.L)
ENDF
ADDNO0DST EQU *
FNRET 3
*
ISUBIT EQU *
XDEF ISUBIT
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INSUBIT
SUBIT EQU *
XDEF SUBIT
MOVE.L 12(A7),D0
INSUBIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S ADDNO0DST
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
BPL.S SUBOVER
MOVEQ.L #4,D1
SUBOVER EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
FOR.L D0 = #0 TO D1 BY #4
DO.S
SUB.L D2,0(A0,D0.L)
ENDF
BRA.S ADDNO0DST
*
ISZBIT EQU *
XDEF ISZBIT
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INSZBIT
SZBIT EQU *
XDEF SZBIT
MOVE.L 12(A7),D0
INSZBIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S SZBNO0DST
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
BPL.S SZBOVER
MOVEQ.L #4,D1
SZBOVER EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
ANDI.L #$0FFFF,D2
FOR.L D0 = #0 TO D1 BY #4
DO.S
SUB.L D2,0(A0,D0.L)
BGE.S SZB0VER
MOVE.W #0,0(A0,D0.L)
SZB0VER EQU *
ENDF
SZBNO0DST EQU *
FNRET 3
*
IAND2T EQU *
XDEF IAND2T
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INAND2T
AND2T EQU *
XDEF AND2T
MOVE.L 12(A7),D0
INAND2T EQU *
AND.L ADRMSK(PC),D0
BEQ.S ANDNO02T
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S AND2TOV
MOVEQ.L #4,D1
AND2TOV EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
ANDI.L #$0FFFF,D2
FOR.L D0 = #0 TO D1 BY #2
DO.S
AND.W D2,0(A0,D0.L)
ENDF
ANDNO02T EQU *
FNRET 3
*
IOR2T EQU *
XDEF IOR2T
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INOR2T
OR2T EQU *
XDEF OR2T
MOVE.L 12(A7),D0
INOR2T EQU *
AND.L ADRMSK(PC),D0
BEQ.S ORNO02T
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S OR2TOV
MOVEQ.L #4,D1
OR2TOV EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
ANDI.L #$0FFFF,D2
FOR.L D0 = #0 TO D1 BY #2
DO.S
OR.W D2,0(A0,D0.L)
ENDF
ORNO02T EQU *
FNRET 3
*
IEOR2T EQU *
XDEF IEOR2T
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INEOR2T
EOR2T EQU *
XDEF EOR2T
MOVE.L 12(A7),D0
INEOR2T EQU *
AND.L ADRMSK(PC),D0
BEQ.S EORNO02T
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S EOR2TOV
MOVEQ.L #4,D1
EOR2TOV EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
ANDI.L #$0FFFF,D2
FOR.L D0 = #0 TO D1 BY #2
DO.S
EOR.W D2,0(A0,D0.L)
ENDF
EORNO02T EQU *
FNRET 3
*
IADD2T EQU *
XDEF IADD2T
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INADD2T
ADD2T EQU *
XDEF ADD2T
MOVE.L 12(A7),D0
INADD2T EQU *
AND.L ADRMSK(PC),D0
BEQ.S ADDNO02T
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S ADD2TOV
MOVEQ.L #4,D1
ADD2TOV EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
ANDI.L #$0FFFF,D2
FOR.L D0 = #0 TO D1 BY #2
DO.S
ADD.W D2,0(A0,D0.L)
ENDF
ADDNO02T EQU *
FNRET 3
*
ISUB2T EQU *
XDEF ISUB2T
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INSUB2T
SUB2T EQU *
XDEF SUB2T
MOVE.L 12(A7),D0
INSUB2T EQU *
AND.L ADRMSK(PC),D0
BEQ.S SUBNO02T
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S SUB2TOV
MOVEQ.L #4,D1
SUB2TOV EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
ANDI.L #$0FFFF,D2
FOR.L D0 = #0 TO D1 BY #2
DO.S
SUB.W D2,0(A0,D0.L)
ENDF
SUBNO02T EQU *
FNRET 3
*
ISZB2T EQU *
XDEF ISZB2T
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INSZB2T
SZB2T EQU *
XDEF SZB2T
MOVE.L 12(A7),D0
INSZB2T EQU *
AND.L ADRMSK(PC),D0
BEQ.S SZBNO02T
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S SZB2TOV
MOVEQ.L #4,D1
SZB2TOV EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
ANDI.L #$0FFFF,D2
FOR.L D0 = #0 TO D1 BY #2
DO.S
SUB.W D2,0(A0,D0.L)
BGE.S SZB2T0V
MOVE.W #0,0(A0,D0.L)
SZB2T0V EQU *
ENDF
SZBNO02T EQU *
FNRET 3
*
ISIN2T EQU *
XDEF ISIN2T
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INSIN2T
SIN2T EQU *
XDEF SIN2T
MOVE.L 12(A7),D0
INSIN2T EQU *
AND.L ADRMSK(PC),D0
BEQ.S SINNO02T
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S SIN2TOV
MOVEQ.L #4,D1
SIN2TOV EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
ANDI.L #$0FFFF,D2
MOVE.L D3,-(A7)
FOR.L D0 = #0 TO D1 BY #2
DO.S
MOVE.L D2,D3
SUB.W 0(A0,D0.L),D3
BGE.S SIN2T0V
MOVEQ #0,D3
SIN2T0V EQU *
MOVE.W D3,0(A0,D0.L)
ENDF
MOVE.L (A7)+,D3
SINNO02T EQU *
FNRET 3
*
IADM2T EQU *
XDEF IADM2T
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INADM2T
ADM2T EQU *
XDEF ADM2T
MOVE.L 12(A7),D0
INADM2T EQU *
AND.L ADRMSK(PC),D0
BEQ.S ADMNO02T
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S ADM2TOV
MOVEQ.L #4,D1
ADM2TOV EQU *
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
ANDI.L #$0FFFF,D2
FOR.L D0 = #0 TO D1 BY #2
DO.S
ADD.W D2,0(A0,D0.L)
* CMPI.W #$0FFFF,0(A0,D0.L)
* BLT.S ADM2T0V
BCC.S ADM2T0V
MOVE.W #$0FFFF,0(A0,D0.L)
ADM2T0V EQU *
ENDF
ADMNO02T EQU *
FNRET 3
*
*
IZRKIT EQU *
XDEF IZRKIT
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INZRKIT
ZRKIT EQU *
XDEF ZRKIT
MOVE.L 12(A7),D0
INZRKIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S ZRKNO0DST
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S ZRKOVER
MOVEQ.L #2,D1
ZRKOVER EQU *
MOVE.L D1,ZRKCRD
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
ANDI.L #$0FFFF,D2
FOR.L D0 = #0 TO ZRKCRD BY #2
DO.S
MOVE.W 0(A0,D0.L),D1
AND.W D2,D1
BEQ.S ZRKSKP
ANDI.W #$01FF,0(A0,D0.L)
ZRKSKP EQU *
ENDF
ZRKNO0DST EQU *
FNRET 3
ZRKCRD DS.L 1
*
IPRFIT EQU *
XDEF IPRFIT
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INPRFIT
PRFIT EQU *
XDEF PRFIT
MOVE.L 12(A7),D0
INPRFIT EQU *
AND.L ADRMSK(PC),D0
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S PRFOVER
MOVEQ.L #2,D1
PRFOVER EQU *
MOVE.L 4(A7),D2
ANDI.B #$FE,D2
MOVEA.L D2,A1
FOR.L D2 = #0 TO #32764 BY #4
DO.S
MOVE.L #0,0(A1,D2.L)
ENDF
PUSH.L D3
XOR.L D3,D3
EOR.L D2,D2
FOR.L D0 = #0 TO D1 BY #2
DO.S
MOVE.W 0(A0,D0.L),D2
ADDQ.W #1,D2
ANDI.W #$3FFF,D2
ADD.W D2,D2
ADDQ.W #1,0(A1,D2.W)
ENDF
POP.L D3
FNRET 3
*
IPRF1T EQU *
XDEF IPRF1T
MOVEA.L 12(A7),A0
MOVE.L (A0),D0
BRA.S INPRF1T
PRF1T EQU *
XDEF PRF1T
MOVE.L 12(A7),D0
INPRF1T EQU *
AND.L ADRMSK(PC),D0
MOVEA.L D0,A0
MOVEA.L 8(A7),A1
MOVE.L (A1),D1
ANDI.B #$FE,D1
SUBQ.L #2,D1
BPL.S PRF0VER
MOVEQ.L #2,D1
PRF0VER EQU *
MOVE.L 4(A7),D2
ANDI.B #$FE,D2
MOVEA.L D2,A1
FOR.L D2 = #0 TO #32764 BY #4
DO.S
MOVE.L #0,0(A1,D2.L)
ENDF
PUSH.L D3
XOR.L D3,D3
EOR.L D2,D2
FOR.L D0 = #0 TO D1 BY #2
DO.S
MOVE.W 0(A0,D0.L),D2
* ADDQ.W #1,D2
ANDI.W #$3FFF,D2
ADD.W D2,D2
ADDQ.W #1,0(A1,D2.W)
ENDF
POP.L D3
FNRET 3
*
*
ISUMIT EQU *
XDEF ISUMIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INSUMIT
SUMIT EQU *
XDEF SUMIT
MOVE.L 8(A7),D0
INSUMIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S SUMNO0DST
MOVEA.L D0,A0
MOVE.L 4(A7),D2
ANDI.B #$FE,D2
MOVEA.L D2,A1
CLR.L D1
* PUSH.L A2
FOR.L D0 = #0 TO #32766 BY #2
DO.S
CLR.L D2
MOVE.W 0(A0,D0.L),D2
ADD.L D2,D1
MOVE.L D0,D2
ADD.L D0,D2
MOVE.L D1,0(A1,D2.L)
ENDF
* POP.L A2
SUMNO0DST EQU *
FNRET 2
*
IL2GIT EQU *
XDEF IL2GIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INL2GIT
L2GIT EQU *
XDEF L2GIT
MOVE.L 8(A7),D0
INL2GIT EQU *
AND.L ADRMSK(PC),D0
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S L2GOVER
MOVEQ.L #1,D2
L2GOVER EQU *
LSL.L #1,D2
EOR.L D1,D1
FOR.L D0 = #0 TO D2 BY #2
DO.S
CMP.W 0(A0,D0.L),D1
BCC.S OVERL2G BHS.S OVERL2G
MOVE.W 0(A0,D0.L),D1
MOVE.L D0,(A1)
OVERL2G EQU *
ENDF
MOVE.L (A1),D0
LSR.L #1,D0
ADDQ.L #1,D0
MOVE.L D0,(A1)
MOVE.L D1,D0
FNRET 2
*
IB2GIT EQU *
XDEF IB2GIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INB2GIT
B2GIT EQU *
XDEF B2GIT
MOVE.L 8(A7),D0
INB2GIT EQU *
AND.L ADRMSK(PC),D0
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S B2GOVER
MOVEQ.L #1,D2
B2GOVER EQU *
LSL.L #1,D2
EOR.L D1,D1
FOR.L D0 = #0 TO D2 BY #2
DO.S
CMP.W 0(A0,D0.L),D1
BGE.S OVERB2G
MOVE.W 0(A0,D0.L),D1
MOVE.L D0,(A1)
OVERB2G EQU *
ENDF
MOVE.L (A1),D0
LSR.L #1,D0
ADDQ.L #1,D0
MOVE.L D0,(A1)
MOVE.L D1,D0
FNRET 2
*
IB4GIT EQU *
XDEF IB4GIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INB4GIT
B4GIT EQU *
XDEF B4GIT
MOVE.L 8(A7),D0
INB4GIT EQU *
AND.L ADRMSK(PC),D0
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S B4GOVER
MOVEQ.L #1,D2
B4GOVER EQU *
LSL.L #2,D2
EOR.L D1,D1
FOR.L D0 = #0 TO D2 BY #4
DO.S
CMP.L 0(A0,D0.L),D1
BGE.S OVERB4G
MOVE.L 0(A0,D0.L),D1
MOVE.L D0,(A1)
OVERB4G EQU *
ENDF
MOVE.L (A1),D0
LSR.L #2,D0
ADDQ.L #1,D0
MOVE.L D0,(A1)
MOVE.L D1,D0
FNRET 2
*
ILS2IT EQU *
XDEF ILS2IT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INLS2IT
LS2IT EQU *
XDEF LS2IT
MOVE.L 8(A7),D0
INLS2IT EQU *
AND.L ADRMSK(PC),D0
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S LS2OVER
MOVEQ.L #1,D2
LS2OVER EQU *
LSL.L #1,D2
MOVE.L #$7FFF,D1
FOR.L D0 = #0 TO D2 BY #2
DO.S
CMP.W 0(A0,D0.L),D1
BLS.S OVERLS2
MOVE.W 0(A0,D0.L),D1
MOVE.L D0,(A1)
OVERLS2 EQU *
ENDF
MOVE.L (A1),D0
LSR.L #1,D0
ADDQ.L #1,D0
MOVE.L D0,(A1)
MOVE.L D1,D0
FNRET 2
*
ISM2IT EQU *
XDEF ISM2IT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INSM2IT
SM2IT EQU *
XDEF SM2IT
MOVE.L 8(A7),D0
INSM2IT EQU *
AND.L ADRMSK(PC),D0
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S SM2OVER
MOVEQ.L #1,D2
SM2OVER EQU *
LSL.L #1,D2
MOVE.L #$7FFF,D1
FOR.L D0 = #0 TO D2 BY #2
DO.S
CMP.W 0(A0,D0.L),D1
BLE.S OVERSM2
MOVE.W 0(A0,D0.L),D1
MOVE.L D0,(A1)
OVERSM2 EQU *
ENDF
MOVE.L (A1),D0
LSR.L #1,D0
ADDQ.L #1,D0
MOVE.L D0,(A1)
MOVE.L D1,D0
FNRET 2
*
ISM4IT EQU *
XDEF ISM4IT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INSM4IT
SM4IT EQU *
XDEF SM4IT
MOVE.L 8(A7),D0
INSM4IT EQU *
AND.L ADRMSK(PC),D0
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S SM4OVER
MOVEQ.L #1,D2
SM4OVER EQU *
LSL.L #2,D2
MOVE.L #$7FFFFFFF,D1
FOR.L D0 = #0 TO D2 BY #4
DO.S
CMP.L 0(A0,D0.L),D1
BLE.S OVERSM4
MOVE.L 0(A0,D0.L),D1
MOVE.L D0,(A1)
OVERSM4 EQU *
ENDF
MOVE.L (A1),D0
LSR.L #2,D0
ADDQ.L #1,D0
MOVE.L D0,(A1)
MOVE.L D1,D0
FNRET 2
*
ILSLIT EQU *
XDEF ILSLIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INLSLIT
LSLIT EQU *
XDEF LSLIT
MOVE.L 8(A7),D0
INLSLIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S LSLNO0DST
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S LSLOVER
MOVEQ.L #1,D2
LSLOVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
LSL.W 0(A0,D0.L)
ENDF
LSLNO0DST EQU *
FNRET 2
*
ILSRIT EQU *
XDEF ILSRIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INLSRIT
LSRIT EQU *
XDEF LSRIT
MOVE.L 8(A7),D0
INLSRIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S LSRNO0DST
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S LSROVER
MOVEQ.L #1,D2
LSROVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
LSR.W 0(A0,D0.L)
ENDF
LSRNO0DST EQU *
FNRET 2
*
IASLIT EQU *
XDEF IASLIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INASLIT
ASLIT EQU *
XDEF ASLIT
MOVE.L 8(A7),D0
INASLIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S ASLNO0DST
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ASLOVER
MOVEQ.L #1,D2
ASLOVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
ASL.W 0(A0,D0.L)
ENDF
ASLNO0DST EQU *
FNRET 2
*
IASRIT EQU *
XDEF IASRIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INASRIT
ASRIT EQU *
XDEF ASRIT
MOVE.L 8(A7),D0
INASRIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S ASRNO0DST
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ASROVER
MOVEQ.L #1,D2
ASROVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
ASR.W 0(A0,D0.L)
ENDF
ASRNO0DST EQU *
FNRET 2
*
IROLIT EQU *
XDEF IROLIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INROLIT
ROLIT EQU *
XDEF ROLIT
MOVE.L 8(A7),D0
INROLIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S ROLNO0DST
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ROLOVER
MOVEQ.L #1,D2
ROLOVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
ROL.W 0(A0,D0.L)
ENDF
ROLNO0DST EQU *
FNRET 2
*
IRORIT EQU *
XDEF IRORIT
MOVEA.L 8(A7),A0
MOVE.L (A0),D0
BRA.S INRORIT
RORIT EQU *
XDEF RORIT
MOVE.L 8(A7),D0
INRORIT EQU *
AND.L ADRMSK(PC),D0
BEQ.S RORNO0DST
MOVEA.L D0,A0
MOVEA.L 4(A7),A1
MOVE.L (A1),D2
SUBQ.L #1,D2
BPL.S ROROVER
MOVEQ.L #1,D2
ROROVER EQU *
LSL.L #1,D2
FOR.L D0 = #0 TO D2 BY #2
DO.S
ROR.W 0(A0,D0.L)
ENDF
RORNO0DST EQU *
FNRET 2
*
DDCOPY EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
BRA.S COPYLOOP
DICOPY EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
BRA.S COPYLOOP
IDCOPY EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
BRA.S COPYLOOP
IICOPY EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
XDEF DDCOPY,DICOPY,IDCOPY,IICOPY
COPYLOOP EQU *
MOVE.L A0,D0
AND.L ADRMSK(PC),D0
MOVEA.L 4(A7),A0
MOVE.L (A0),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
MOVEA.L D0,A0
MOVE.L A1,D0
AND.L ADRMSK(PC),D0
BEQ.S COPYNO0DST
MOVEA.L D0,A1
FOR.L D0 = #0 TO D1 BY #4
DO.S
MOVE.L 0(A0,D0.L),0(A1,D0.L)
ENDF
COPYNO0DST EQU *
FNRET 3
*
DDYPOC EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
BRA.S YPOCLOOP
DIYPOC EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
BRA.S YPOCLOOP
IDYPOC EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
BRA.S YPOCLOOP
IIYPOC EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
XDEF DDYPOC,DIYPOC,IDYPOC,IIYPOC
YPOCLOOP EQU *
MOVE.L A0,D0
AND.L ADRMSK(PC),D0
MOVEA.L 4(A7),A0
MOVE.L (A0),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
MOVEA.L D0,A0
MOVE.L A1,D0
AND.L ADRMSK(PC),D0
BEQ.S YPOCNO0DST
MOVEA.L D0,A1
FOR.L D0 = D1 DOWNTO #0 BY #4
DO.S
MOVE.L 0(A0,D0.L),0(A1,D0.L)
ENDF
YPOCNO0DST EQU *
FNRET 3
*
*
DDEXCH EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
BRA.S EXCHLOOP
DIEXCH EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
BRA.S EXCHLOOP
IDEXCH EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
BRA.S EXCHLOOP
IIEXCH EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
XDEF DDEXCH,DIEXCH,IDEXCH,IIEXCH
EXCHLOOP EQU *
MOVE.L A0,D0
AND.L ADRMSK(PC),D0
BEQ.S EXCHNO0DST
MOVEA.L 4(A7),A0
MOVE.L (A0),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
MOVEA.L D0,A0
MOVE.L A1,D0
AND.L ADRMSK(PC),D0
BEQ.S EXCHNO0DST
MOVEA.L D0,A1
FOR.L D0 = #0 TO D1 BY #4
DO.S
MOVE.L 0(A1,D0.L),D2
MOVE.L 0(A0,D0.L),0(A1,D0.L)
MOVE.L D2,0(A0,D0.L)
ENDF
EXCHNO0DST EQU *
FNRET 3
*
DDHCXE EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
BRA.S HCXELOOP
DIHCXE EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
BRA.S HCXELOOP
IDHCXE EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
BRA.S HCXELOOP
IIHCXE EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
XDEF DDHCXE,DIHCXE,IDHCXE,IIHCXE
HCXELOOP EQU *
MOVE.L A0,D0
AND.L ADRMSK(PC),D0
BEQ.S HCXENO0DST
MOVEA.L 4(A7),A0
MOVE.L (A0),D1
ANDI.B #$FC,D1
SUBQ.L #4,D1
MOVEA.L D0,A0
MOVE.L A1,D0
AND.L ADRMSK(PC),D0
BEQ.S HCXENO0DST
MOVEA.L D0,A1
FOR.L D0 = D1 DOWNTO #0 BY #4
DO.S
MOVE.L 0(A1,D0.L),D2
MOVE.L 0(A0,D0.L),0(A1,D0.L)
MOVE.L D2,0(A0,D0.L)
ENDF
HCXENO0DST EQU *
FNRET 3
*
*
DDC0PY EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
BRA.S C0PYLOOP
DIC0PY EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
BRA.S C0PYLOOP
IDC0PY EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
BRA.S C0PYLOOP
IIC0PY EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
XDEF DDC0PY,DIC0PY,IDC0PY,IIC0PY
C0PYLOOP EQU *
MOVE.L A0,D0
MOVEA.L 4(A7),A0
MOVE.L (A0),D1
SUBQ.L #1,D1
MOVEA.L D0,A0
MOVE.L A1,D0
BEQ.S C0PYNO0DST
MOVEA.L D0,A1
FOR.L D0 = #0 TO D1 BY #1
DO.S
MOVE.B 0(A0,D0.L),0(A1,D0.L)
ENDF
C0PYNO0DST EQU *
FNRET 3
*
DDYP0C EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
BRA.S YP0CLOOP
DIYP0C EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
BRA.S YP0CLOOP
IDYP0C EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
BRA.S YP0CLOOP
IIYP0C EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
XDEF DDYP0C,DIYP0C,IDYP0C,IIYP0C
YP0CLOOP EQU *
MOVE.L A0,D0
MOVEA.L 4(A7),A0
MOVE.L (A0),D1
SUBQ.L #1,D1
MOVEA.L D0,A0
MOVE.L A1,D0
BEQ.S YP0CNO0DST
MOVEA.L D0,A1
FOR.L D0 = D1 DOWNTO #0 BY #1
DO.S
MOVE.B 0(A0,D0.L),0(A1,D0.L)
ENDF
YP0CNO0DST EQU *
FNRET 3
*
*
DDEXC1 EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
BRA.S EXC1LOOP
DIEXC1 EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
BRA.S EXC1LOOP
IDEXC1 EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
BRA.S EXC1LOOP
IIEXC1 EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
XDEF DDEXC1,DIEXC1,IDEXC1,IIEXC1
EXC1LOOP EQU *
MOVE.L A0,D0
BEQ.S EXC1NO0DST
MOVEA.L 4(A7),A0
MOVE.L (A0),D1
SUBQ.L #1,D1
MOVEA.L D0,A0
MOVE.L A1,D0
BEQ.S EXC1NO0DST
MOVEA.L D0,A1
FOR.L D0 = #0 TO D1 BY #1
DO.S
MOVE.B 0(A1,D0.L),D2
MOVE.B 0(A0,D0.L),0(A1,D0.L)
MOVE.B D2,0(A0,D0.L)
ENDF
EXC1NO0DST EQU *
FNRET 3
*
DDH1XE EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
BRA.S H1XELOOP
DIH1XE EQU *
MOVEA.L 12(A7),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
BRA.S H1XELOOP
IDH1XE EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
BRA.S H1XELOOP
IIH1XE EQU *
MOVEA.L 12(A7),A0
MOVEA.L (A0),A0
MOVEA.L 8(A7),A1
MOVEA.L (A1),A1
XDEF DDH1XE,DIH1XE,IDH1XE,IIH1XE
H1XELOOP EQU *
MOVE.L A0,D0
BEQ.S H1XENO0DST
MOVEA.L 4(A7),A0
MOVE.L (A0),D1
SUBQ.L #1,D1
MOVEA.L D0,A0
MOVE.L A1,D0
BEQ.S H1XENO0DST
MOVEA.L D0,A1
FOR.L D0 = D1 DOWNTO #0 BY #1
DO.S
MOVE.B 0(A1,D0.L),D2
MOVE.B 0(A0,D0.L),0(A1,D0.L)
MOVE.B D2,0(A0,D0.L)
ENDF
H1XENO0DST EQU *
FNRET 3
*
*
*
ALLOC_ EQU *
KGR_NEW EQU *
MOVE.L 4(A7),D0
BRA.S ALLOC_MAIN
ALLOC EQU *
GTHEAP EQU *
XDEF ALLOC,ALLOC_,KGR_NEW,GTHEAP
MOVEA.L 4(A7),A1
MOVE.L (A1),D0
ALLOC_MAIN EQU *
MOVE.L (A7)+,(A7)
BTST #0,D0
BEQ.S ALLOC_NO_ADD
ADDQ.L #1,D0
ALLOC_NO_ADD MOVE.L $1C(A5),D1
MOVE.L D1,-(A7)
ADD.L D0,D1
MOVE.L D1,D2
ADDI.L #$200,D2
CMP.L A7,D2
BLT.S ALLOC_OK
MOVE.L #0,(A7)
BRA.S ALLOC_RET
ALLOC_OK EQU *
MOVE.L D1,$1C(A5)
ALLOC_RET EQU *
MOVE.L (A7)+,D0
RTS
*
RLSE_ EQU *
KGR_KILL EQU *
MOVE.L 4(A7),D0
BRA.S RLSE_MAIN
RLSE EQU *
LSHEAP EQU *
XDEF RLSE_,KGR_KILL,RLSE,LSHEAP
MOVEA.L 4(A7),A1
MOVE.L (A1),D0
RLSE_MAIN EQU *
AND.L ADRMSK(PC),D0
MOVE.L (A7)+,(A7)
MOVE.L D0,$1C(A5)
RTS
*
*
PUSHV EQU *
XDEF PUSHV
MOVEA.L 4(A7),A0
MOVE.L (A0),4(A7)
RTS
*
*
DJMPTO EQU *
MOVE.L 4(A7),D0 GET the operand
BRA.S PJUMPTOQQ
IJMPTO EQU *
XDEF DJMPTO,IJMPTO
MOVEA.L 4(A7),A0 GET the address of the operand
MOVE.L (A0),D0 Get the OPerand (an address)
PJUMPTOQQ EQU *
ANDI.B #$E,D0 Make sure on word boundary
MOVEA.L D0,A0 GET READY
JMP (A0) GO!
*
XDEF RTSLOC,PUSHP,PUSHP1,PUSHP2,PUSHP3,PUSHP4,PUSHP5
PUSHP EQU *
PUSHP1 EQU *
PUSHP2 EQU *
PUSHP3 EQU *
PUSHP4 EQU *
PUSHP5 EQU *
RTSLOC RTS
*
XDEF IPOPS,IPOPP
IPOPP EQU *
IPOPS EQU *
MOVE.L 4(A7),D0
FNRET1
XDEF IPOPV
IPOPV EQU *
MOVEA.L 4(A7),A0
MOVE.L (A0),D0
FNRET1
*
*
SCRPRT EQU *
PRTSCN EQU *
XDEF SCRPRT,PRTSCN DO a PrtSc (if possible)
GPRTSCR
RTS
*
PRT3SC EQU *
MOVEQ.L #3,D1
BRA.S PRT_SC
PRT2SC EQU *
MOVEQ.L #2,D1
BRA.S PRT_SC
PRT1SC EQU *
MOVEQ.L #1,D1
BRA.S PRT_SC
PRT0SC EQU *
MOVEQ.L #0,D1
PRT_SC EQU *
MOVE.L D1,-(A7)
PRT__SC EQU *
MOVEQ.L #5,D0
TRAP #0 SYSCALL
DC.W 1 USER
FNRET1
PRTSCK EQU *
MOVE.L 4(A7),A0
MOVE.L (A0),D1
BRA.S PRT__SC
XDEF PRT0SC,PRT1SC,PRT2SC,PRT3SC,PRT_SC,PRT__SC,PRTSCK
*
GPRTSC EQU *
MOVEQ.L #7,D0
BRA.S K_PRTSC
LPRTSC EQU *
MOVEQ.L #8,D0
BRA.S K_PRTSC
BPRTSC EQU *
MOVEQ.L #9,D0
BRA.S K_PRTSC
RPRTSC EQU *
MOVEQ.L #6,D0
XDEF RPRTSC,GPRTSC,LPRTSC,BPRTSC
K_PRTSC EQU *
TRAP #0 SYSCALL
DC.W 1 USER
RTS
*
*
*
IAND EQU *
XDEF IAND
MOVEA.L 4(A7),A1 A1 loaded with address of second op
MOVEA.L 8(A7),A0 A0 loaded with address of first op
MOVE.L (A0),D0 Get the LWORD
AND.L (A1),D0 DOIT
FNRET 2 AND return
IOR EQU *
XDEF IOR
MOVEA.L 4(A7),A1 A1 loaded with address of second op
MOVEA.L 8(A7),A0 A0 loaded with address of first op
MOVE.L (A0),D0 Get the LWORD
OR.L (A1),D0 DOIT
FNRET 2 OR return
IEOR EQU *
IXOR EQU *
XDEF IEOR,IXOR
MOVEA.L 4(A7),A1 A1 loaded with address of second op
MOVEA.L 8(A7),A0 A0 loaded with address of first op
MOVE.L (A0),D0 Get the LWORD
MOVE.L (A1),D1 Get the LWORD
EOR.L D1,D0 DOIT
FNRET 2 EOR return
*
*
I2AND2 EQU *
XDEF I2AND2
MOVEQ.L #0,D0 ZERO out D0
MOVEA.L 4(A7),A1 A1 loaded with address of second op
MOVEA.L 8(A7),A0 A0 loaded with address of first op
MOVE.W (A0),D0 Get the WORD
AND.W (A1),D0 DOIT
FNRET 2 AND return
I2OR2 EQU *
XDEF I2OR2
MOVEQ.L #0,D0 ZERO out D0
MOVEA.L 4(A7),A1 A1 loaded with address of second op
MOVEA.L 8(A7),A0 A0 loaded with address of first op
MOVE.W (A0),D0 Get the WORD
OR.W (A1),D0 DOIT
FNRET 2 OR return
I2EOR2 EQU *
I2XOR2 EQU *
XDEF I2EOR2,I2XOR2
MOVEQ.L #0,D0 ZERO out D0
MOVEA.L 4(A7),A1 A1 loaded with address of second op
MOVEA.L 8(A7),A0 A0 loaded with address of first op
MOVE.W (A0),D0 Get the WORD
MOVE.W (A1),D1 Get the WORD
EOR.W D1,D0 DOIT
FNRET 2 EOR return
*
*
I1AND1 EQU *
XDEF I1AND1
MOVEQ.L #0,D0 ZERO out D0
MOVEA.L 4(A7),A1 A1 loaded with address of second op
MOVEA.L 8(A7),A0 A0 loaded with address of first op
MOVE.B (A0),D0 Get the BYTE
AND.B (A1),D0 DOIT
FNRET 2 AND return
I1OR1 EQU *
XDEF I1OR1
MOVEQ.L #0,D0 ZERO out D0
MOVEA.L 4(A7),A1 A1 loaded with address of second op
MOVEA.L 8(A7),A0 A0 loaded with address of first op
MOVE.B (A0),D0 Get the BYTE
OR.B (A1),D0 DOIT
FNRET 2 OR return
I1EOR1 EQU *
I1XOR1 EQU *
XDEF I1EOR1,I1XOR1
MOVEQ.L #0,D0 ZERO out D0
MOVEA.L 4(A7),A1 A1 loaded with address of second op
MOVEA.L 8(A7),A0 A0 loaded with address of first op
MOVE.B (A0),D0 Get the BYTE
MOVE.B (A1),D1 Get the BYTE
EOR.B D1,D0 DOIT
FNRET 2 LEOR return
*
*
SCRTCR EQU *
XDEF SCRTCR
MOVEA.L 4(A7),A0
MOVE.L (A0),D0
SAVREG
ANDI.B #$0B,D0
TRAP #0
DC.W 54
RSTREG
FNRET1
*
ICRTCR EQU *
XDEF ICRTCR
SAVREG
TRAP #0
DC.W 55
SWAP D0
MOVE.W #0,D0
SWAP D0
ANDI.W #$0FF,D0
RSTREG
RTS
*
*
ZIPPOS EQU *
ZAPPOS EQU *
XDEF ZIPPOS,ZAPPOS
MOVEA.L 4(A7),A0
MOVE.L (A0),D0
TST.L D0
BMI.S ZIPPOSOK
CLR.L D0
ZIPPOSOK EQU *
FNRET1
ZIPNEG EQU *
ZAPNEG EQU *
XDEF ZIPNEG,ZAPNEG
MOVEA.L 4(A7),A0
MOVE.L (A0),D0
TST.L D0
BPL.S ZIPNEGOK
CLR.L D0
ZIPNEGOK EQU *
FNRET1
*
*
TELEDS EQU *
XDEF TELEDS,PTELEDS
MOVEA.L 4(A7),A0
MOVE.L A0,D0
BRA.S INTELEDS
PTELEDS EQU *
MOVE.L 4(A7),D0
INTELEDS EQU *
SAVREG
EXLT
DOLED D0
HMBL3
RSTREG
FNRET1
*
*
REGA0 EQU *
IREGA0 EQU *
MOVE.L A0,D0
RTS
REGA1 EQU *
IREGA1 EQU *
MOVE.L A1,D0
RTS
REGA2 EQU *
IREGA2 EQU *
MOVE.L A2,D0
RTS
REGA3 EQU *
IREGA3 EQU *
MOVE.L A3,D0
RTS
REGA4 EQU *
IREGA4 EQU *
MOVE.L A4,D0
RTS
REGA5 EQU *
IREGA5 EQU *
MOVE.L A5,D0
RTS
REGA6 EQU *
IREGA6 EQU *
MOVE.L A6,D0
RTS
REGA7 EQU *
IREGA7 EQU *
MOVE.L A7,D0
RTS
XDEF REGA0,REGA1,REGA2,REGA3,REGA4,REGA5,REGA6,REGA7
XDEF IREGA0,IREGA1,IREGA2,IREGA3,IREGA4,IREGA5,IREGA6,IREGA7
*
REGD1 EQU *
IREGD1 EQU *
MOVE.L D1,D0
REGD0 EQU *
IREGD0 EQU *
RTS
REGD2 EQU *
IREGD2 EQU *
MOVE.L D2,D0
RTS
REGD3 EQU *
IREGD3 EQU *
MOVE.L D3,D0
RTS
REGD4 EQU *
IREGD4 EQU *
MOVE.L D4,D0
RTS
REGD5 EQU *
IREGD5 EQU *
MOVE.L D5,D0
RTS
REGD6 EQU *
IREGD6 EQU *
MOVE.L D6,D0
RTS
REGD7 EQU *
IREGD7 EQU *
MOVE.L D7,D0
RTS
XDEF REGD0,REGD1,REGD2,REGD3,REGD4,REGD5,REGD6,REGD7
XDEF IREGD0,IREGD1,IREGD2,IREGD3,IREGD4,IREGD5,IREGD6,IREGD7
*
*
CMPMBI EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
ANDI.B #$FE,D0
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
MOVE.L (A0),D0
MOVE.L (A1),D1
BRA.S CMPMBINT
CMPMWI EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
ANDI.B #$FE,D0
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
MOVE.L (A0),D0
MOVE.L (A1),D1
BRA.S CMPMWINT
CMPMB EQU *
XDEF CMPMB,CMPMBI
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
CMPMBINT EQU *
MOVEA.L 4(A7),A0
MOVE.L (A0),D2
MOVEA.L D0,A0
MOVEA.L D1,A1
MOVEQ.L #-1,D0
CMPI.L #0,D2
BLE.S CMPMBRET
SUBQ.L #1,D2
MOVEQ.L #0,D0
CMPMBLOP EQU *
CMPM.B (A0)+,(A1)+
DBNE D2,CMPMBLOP
BEQ.S CMPMBRET
MOVE.L 8(A7),D1
MOVE.L A1,D0
SUB.L D1,D0
CMPMBRET EQU *
FNRET 3
*
CMPMW EQU *
XDEF CMPMW,CMPMWI
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
CMPMWINT EQU *
MOVEA.L 4(A7),A0
MOVE.L (A0),D2
ANDI.B #$FE,D0
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
MOVEQ.L #0,D0
MOVEQ.L #-1,D0
CMPI.L #0,D2
BLE.S CMPMBRET
SUBQ.L #1,D2
MOVEQ.L #0,D0
CMPMWLOP EQU *
CMPM.W (A0)+,(A1)+
DBNE D2,CMPMWLOP
BEQ.S CMPMBRET
MOVE.L 8(A7),D1
MOVE.L A1,D0
SUB.L D1,D0
LSR.L #1,D0
BRA.S CMPMBRET
*
CMPML EQU *
XDEF CMPML,CMPMLI
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
CMPMLINT EQU *
MOVEA.L 4(A7),A0
MOVE.L (A0),D2
ANDI.B #$FE,D0
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
MOVEQ.L #-1,D0
CMPI.L #0,D2
BLE.S CMPMBRET
SUBQ.L #1,D2
MOVEQ.L #0,D0
CMPMLLOP EQU *
CMPM.L (A0)+,(A1)+
DBNE D2,CMPMLLOP
BEQ.S CMPMBRET
MOVE.L 8(A7),D1
MOVE.L A1,D0
SUB.L D1,D0
LSR.L #2,D0
BRA.L CMPMBRET
CMPMLI EQU *
MOVE.L 12(A7),D0
MOVE.L 8(A7),D1
ANDI.B #$FE,D0
MOVEA.L D0,A0
ANDI.B #$FE,D1
MOVEA.L D1,A1
MOVE.L (A0),D0
MOVE.L (A1),D1
BRA.S CMPMLINT
*
*
DATTIM EQU *
XDEF DATTIM
SAVREG
TRAP #0
DC.W 23
ANDI.L #$0FFFFFF,D1
MOVEA.L 4(A5),A0
MOVE.L D1,(A0)
MOVE.L D2,4(A0)
RSTREG
FNRET1
*
*
NAB3X3 EQU *
XDEF NAB3X3
PUSH.L D6
MOVE.L #$3FFF,D6
BRA.S MAB3HERE
MAB3X3 EQU *
XDEF MAB3X3
PUSH.L D6
MOVE.L #$0FFFF,D6
MAB3HERE EQU *
SAVREG
MOVEA.L 8(A5),A0
MOVEA.L 12(A5),A1
MOVE.L (A1),D5
SUBQ.L #1,D5
BGE.S MAB3X3OVER
MOVEQ.L #0,D5
MAB3X3OVER EQU *
MOVEA.L 16(A5),A1
MOVEA.L 20(A5),A2
FOR.L D3 = #0 TO D5 BY #1
DO.S
MOVE.L D3,D4
ADD.L D3,D4
MOVE.W 0(A2,D4.L),D0
AND.L D6,D0
CMP.W 0(A0),D0
BGE.S MAB3X3N0
MOVEQ.L #31,D0
BRA.S MAB3X3RET
MAB3X3N0 EQU *
MOVEQ.L #0,D2
FOR.W D2 = #2 TO #16 BY #2
DO.S
CMP.W 0(A0,D2.W),D0
BLT.S MAB3X3GOT
ENDF
MOVEQ.L #131,D0
BRA.S MAB3X3RET
MAB3X3GOT EQU *
MOVE.W 0(A0,D2.W),D1
SUB.W -2(A0,D2.W),D0
SUB.W -2(A0,D2.W),D1
BNE.S MAB3X3DIVOK
MOVEQ.L #1,D1
MAB3X3DIVOK EQU *
MULS CNT3X3-2(PC,D2.W),D0
DIVS D1,D0
BVC.S MAB3X3OKDIV
MOVEQ.L #0,D0
MAB3X3OKDIV EQU *
ADD.W BAS3X3-2(PC,D2.W),D0
MAB3X3RET EQU *
ANDI.L #$000000FF,D0
MOVE.B D0,0(A1,D3.L)
ENDF
RSTREG
POP.L D6
FNRET 4
*
CNT3X3 DC.W 7,10,19,26,26,19,10,7
BAS3X3 DC.W 32,40,50,70,170,150,140,132
*
AB3X3 EQU *
XDEF AB3X3
MOVEA.L 4(A7),A0
MOVEA.L 8(A7),A1
MOVEQ.L #0,D0
MOVE.W (A1),D0
INAB3X3 EQU *
CMP.W 0(A0),D0
BGE.S AB3X3N0
MOVEQ.L #31,D0
AB3X3RET EQU *
ANDI.L #$000000FF,D0
FNRET 2
AB3X3N0 EQU *
MOVEQ.L #0,D2
FOR.W D2 = #2 TO #16 BY #2
DO.S
CMP.W 0(A0,D2.W),D0
BLT.S AB3X3GOT
ENDF
MOVEQ.L #131,D0
BRA.S AB3X3RET
AB3X3GOT EQU *
MOVE.W 0(A0,D2.W),D1
SUB.W -2(A0,D2.W),D0
SUB.W -2(A0,D2.W),D1
BNE.S AB3X3DIVOK
MOVEQ.L #1,D1
AB3X3DIVOK EQU *
MULS CNT3X3-2(PC,D2.W),D0
DIVS D1,D0
BVC.S AB3X3OKDIV
MOVEQ.L #0,D0
AB3X3OKDIV EQU *
ADD.W BAS3X3-2(PC,D2.W),D0
BRA.S AB3X3RET
*
AB3X3N EQU *
XDEF AB3X3N
MOVEA.L 4(A7),A0
MOVEA.L 8(A7),A1
MOVEQ.L #0,D0
MOVE.W (A1),D0
ANDI.W #$3FFF,D0
BRA.S INAB3X3
*
*
SFUNBY EQU *
ENTRY SFUNBY
SAVREG
MOVEA.L 12(A5),A0
MOVE.L (A0),D5
MOVEA.L 8(A5),A6
MOVEA.L 4(A5),A0
PUSH.L A0
TRAP #6
BRA.L SFUNERR
MOVEQ.L #0,D7
SFUNERR EQU *
POP.L A0
MOVE.L D7,(A0)
RSTREG
FNRET 3
*
*
BASE DS.L 1
KPDPTR DC.L -1
LSTCON DC.W 0
LSTSHF DC.W 0
CONPTR DC.L -1
Q1STORAGE
ENDBYTES EQU *
ZZZZZ EQU *
END

Das könnte Ihnen auch gefallen