Sie sind auf Seite 1von 37

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,CONRE A * ENTRY STKPPT * CALL STKPPT(#CON BYTE-IO-PTR) - SETS BYTE IO POINTER FOR CALLS TO KPDTST,KPDRE A * * * ENTRY GTCNPT * I = GTCNPT(#CON BYTE-IO-PTR) - GETS BYTE IO POINTER FOR CALLS TO CONTST,CONRE A * ENTRY GTKPPT * I = GTKPPT(#CON BYTE-IO-PTR) - GETS BYTE IO POINTER FOR CALLS TO KPDTST,KPDRE A * * * 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 TST.L BMI.S MOVEA.L MOVEQ.L MOVEQ.L TRAP DC.W MOVEA.L IBCONT MOVE.L RSTREG FNRET IBFUBAR MOVE.L BRA.S * IBREAD EQU XDEF SAVREG MOVEA.L TST.L BMI.S MOVEA.L MOVEQ.L MOVEQ.L TRAP DC.W MOVEA.L MOVE.L RSTREG FNRET * STCNPT EQU MOVEA.L MOVE.L FNRET1 STKPPT EQU XDEF MOVEA.L MOVE.L FNRET1 * GTCNPT EQU XDEF MOVE.L RTS GTKPPT EQU XDEF MOVE.L RTS * CONTST EQU SAVREG TST.L BMI.S MOVEA.L MOVEQ.L TRAP

* 8(A5),A0 (A0) IBFUBAR (A0),A6 #0,D0 #0,D7 #6 10 BTEST 4(A5),A0 D7,(A0) 2 #$8B01,D7 IBCONT * IBREAD,IBTEST 8(A5),A0 (A0) IBFUBAR (A0),A6 #0,D0 #0,D7 #6 8 BREAD 4(A5),A0 D7,(A0) 2 * 4(A7),A0 (A0),CONPTR * STKPPT,STCNPT 4(A7),A0 (A0),KPDPTR * GTCNPT CONPTR,D0 * GTKPPT,GTCNPT KPDPTR,D0 * CONPTR CONFUBAR CONPTR(PC),A6 #0,D7 #6

DC.W MOVEA.L CMP.W BMI.S CONSHF EQU SWAP MOVE.W SWAP CONCONT MOVE.L MOVE.L RSTREG FNRET1 CONFUBAR MOVE.L BRA.S * CONREA EQU XDEF SAVREG TST.L BMI.S MOVEA.L MOVEQ.L TRAP DC.W MOVEA.L CMP.W BMI.S BRA.S * * KPDTST EQU SAVREG TST.L BMI.S MOVEA.L MOVEQ.L TRAP DC.W MOVEA.L MOVE.L KPDRET RSTREG FNRET1 KPDREA EQU XDEF SAVREG TST.L BMI.L MOVEA.L MOVEQ.L TRAP DC.W MOVEA.L MOVE.L BRA.S * * IZAPIT EQU XDEF MOVEA.L MOVE.L

10 BTEST 4(A5),A0 #$8500,D0 CONCONT * D0 LSTCON(PC),D0 D0 D7,(A0) D0,LSTCON #$8B01,D7 CONCONT * CONREA,CONTST CONPTR CONFUBAR CONPTR(PC),A6 #0,D7 #6 8 BREAD 4(A5),A0 #$8500,D0 CONCONT CONSHF * KPDPTR CONFUBAR KPDPTR(PC),A6 #0,D7 #6 10 BTEST 4(A5),A0 D7,(A0) * KPDREA,KPDTST KPDPTR CONFUBAR KPDPTR(PC),A6 #0,D7 #6 8 BREAD 4(A5),A0 D7,(A0) KPDRET * IZAPIT 8(A7),A0 (A0),D0

BRA.S INZAPIT 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 * ZAPIT

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 SUBQ.L BPL.S MOVEQ.L EOROVER EQU MOVEA.L MOVE.L FOR.L DO.S EOR.L ENDF BRA.S * IADDIT EQU XDEF MOVEA.L MOVE.L BRA.S ADDIT EQU XDEF MOVE.L INADDIT EQU AND.L BEQ.S MOVEA.L MOVEA.L MOVE.L ANDI.B SUBQ.L BPL.S MOVEQ.L ADDOVER EQU MOVEA.L MOVE.L FOR.L DO.S ADD.L ENDF ADDNO0DST EQU FNRET * ISUBIT EQU XDEF MOVEA.L MOVE.L BRA.S SUBIT EQU XDEF MOVE.L INSUBIT EQU AND.L BEQ.S MOVEA.L MOVEA.L MOVE.L ANDI.B SUBQ.L BPL.S MOVEQ.L SUBOVER EQU

#$FC,D1 #4,D1 EOROVER #4,D1 * 4(A7),A1 (A1),D2 D0 = #0 TO D1 BY #4 D2,0(A0,D0.L) ORNO0DST * IADDIT 12(A7),A0 (A0),D0 INADDIT * ADDIT 12(A7),D0 * ADRMSK(PC),D0 ADDNO0DST D0,A0 8(A7),A1 (A1),D1 #$FC,D1 #4,D1 ADDOVER #4,D1 * 4(A7),A1 (A1),D2 D0 = #0 TO D1 BY #4 D2,0(A0,D0.L) * 3 * ISUBIT 12(A7),A0 (A0),D0 INSUBIT * SUBIT 12(A7),D0 * ADRMSK(PC),D0 ADDNO0DST D0,A0 8(A7),A1 (A1),D1 #$FC,D1 #4,D1 SUBOVER #4,D1 *

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

MOVEA.L MOVE.L FOR.L DO.S SUB.L ENDF BRA.S

4(A7),A1 (A1),D2 D0 = #0 TO D1 BY #4 D2,0(A0,D0.L)

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 * ILSRIT EQU XDEF MOVEA.L MOVE.L BRA.S LSRIT EQU XDEF MOVE.L INLSRIT EQU AND.L BEQ.S MOVEA.L MOVEA.L MOVE.L SUBQ.L BPL.S MOVEQ.L LSROVER EQU LSL.L FOR.L DO.S LSR.W ENDF LSRNO0DST EQU FNRET * IASLIT EQU XDEF MOVEA.L MOVE.L BRA.S ASLIT EQU XDEF MOVE.L INASLIT EQU AND.L BEQ.S MOVEA.L MOVEA.L MOVE.L SUBQ.L BPL.S MOVEQ.L ASLOVER EQU LSL.L FOR.L DO.S ASL.W ENDF ASLNO0DST EQU FNRET * IASRIT EQU XDEF MOVEA.L MOVE.L BRA.S ASRIT EQU

2 * ILSRIT 8(A7),A0 (A0),D0 INLSRIT * LSRIT 8(A7),D0 * ADRMSK(PC),D0 LSRNO0DST D0,A0 4(A7),A1 (A1),D2 #1,D2 LSROVER #1,D2 * #1,D2 D0 = #0 TO D2 BY #2 0(A0,D0.L) * 2 * IASLIT 8(A7),A0 (A0),D0 INASLIT * ASLIT 8(A7),D0 * ADRMSK(PC),D0 ASLNO0DST D0,A0 4(A7),A1 (A1),D2 #1,D2 ASLOVER #1,D2 * #1,D2 D0 = #0 TO D2 BY #2 0(A0,D0.L) * 2 * IASRIT 8(A7),A0 (A0),D0 INASRIT *

XDEF MOVE.L INASRIT EQU AND.L BEQ.S MOVEA.L MOVEA.L MOVE.L SUBQ.L BPL.S MOVEQ.L ASROVER EQU LSL.L FOR.L DO.S ASR.W ENDF ASRNO0DST EQU FNRET * IROLIT EQU XDEF MOVEA.L MOVE.L BRA.S ROLIT EQU XDEF MOVE.L INROLIT EQU AND.L BEQ.S MOVEA.L MOVEA.L MOVE.L SUBQ.L BPL.S MOVEQ.L ROLOVER EQU LSL.L FOR.L DO.S ROL.W ENDF ROLNO0DST EQU FNRET * IRORIT EQU XDEF MOVEA.L MOVE.L BRA.S RORIT EQU XDEF MOVE.L INRORIT EQU AND.L BEQ.S MOVEA.L MOVEA.L MOVE.L

ASRIT 8(A7),D0 * ADRMSK(PC),D0 ASRNO0DST D0,A0 4(A7),A1 (A1),D2 #1,D2 ASROVER #1,D2 * #1,D2 D0 = #0 TO D2 BY #2 0(A0,D0.L) * 2 * IROLIT 8(A7),A0 (A0),D0 INROLIT * ROLIT 8(A7),D0 * ADRMSK(PC),D0 ROLNO0DST D0,A0 4(A7),A1 (A1),D2 #1,D2 ROLOVER #1,D2 * #1,D2 D0 = #0 TO D2 BY #2 0(A0,D0.L) * 2 * IRORIT 8(A7),A0 (A0),D0 INRORIT * RORIT 8(A7),D0 * ADRMSK(PC),D0 RORNO0DST D0,A0 4(A7),A1 (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 BRA.S PRT2SC EQU MOVEQ.L BRA.S PRT1SC EQU MOVEQ.L BRA.S PRT0SC EQU MOVEQ.L PRT_SC EQU MOVE.L PRT__SC EQU MOVEQ.L TRAP DC.W FNRET1 PRTSCK EQU MOVE.L MOVE.L BRA.S XDEF * GPRTSC EQU MOVEQ.L BRA.S LPRTSC EQU MOVEQ.L BRA.S BPRTSC EQU MOVEQ.L BRA.S RPRTSC EQU MOVEQ.L XDEF K_PRTSC EQU TRAP DC.W RTS * * * IAND EQU XDEF MOVEA.L MOVEA.L MOVE.L AND.L FNRET IOR EQU XDEF MOVEA.L MOVEA.L MOVE.L OR.L FNRET IEOR EQU IXOR EQU XDEF

* #3,D1 PRT_SC * #2,D1 PRT_SC * #1,D1 PRT_SC * #0,D1 * D1,-(A7) * #5,D0 #0 SYSCALL 1 USER * 4(A7),A0 (A0),D1 PRT__SC PRT0SC,PRT1SC,PRT2SC,PRT3SC,PRT_SC,PRT__SC,PRTSCK * #7,D0 K_PRTSC * #8,D0 K_PRTSC * #9,D0 K_PRTSC * #6,D0 RPRTSC,GPRTSC,LPRTSC,BPRTSC * #0 SYSCALL 1 USER

* IAND 4(A7),A1 8(A7),A0 (A0),D0 (A1),D0 2 * IOR 4(A7),A1 8(A7),A0 (A0),D0 (A1),D0 2 * * IEOR,IXOR

A1 loaded with address of second op A0 loaded with address of first op Get the LWORD DOIT AND return A1 loaded with address of second op A0 loaded with address of first op Get the LWORD DOIT OR return

MOVEA.L MOVEA.L MOVE.L MOVE.L EOR.L FNRET * * I2AND2 EQU XDEF MOVEQ.L MOVEA.L MOVEA.L MOVE.W AND.W FNRET I2OR2 EQU XDEF MOVEQ.L MOVEA.L MOVEA.L MOVE.W OR.W FNRET I2EOR2 EQU I2XOR2 EQU XDEF MOVEQ.L MOVEA.L MOVEA.L MOVE.W MOVE.W EOR.W FNRET * * I1AND1 EQU XDEF MOVEQ.L MOVEA.L MOVEA.L MOVE.B AND.B FNRET I1OR1 EQU XDEF MOVEQ.L MOVEA.L MOVEA.L MOVE.B OR.B FNRET I1EOR1 EQU I1XOR1 EQU XDEF MOVEQ.L MOVEA.L MOVEA.L MOVE.B MOVE.B

4(A7),A1 8(A7),A0 (A0),D0 (A1),D1 D1,D0 2 * I2AND2 #0,D0 4(A7),A1 8(A7),A0 (A0),D0 (A1),D0 2 * I2OR2 #0,D0 4(A7),A1 8(A7),A0 (A0),D0 (A1),D0 2 * * I2EOR2,I2XOR2 #0,D0 4(A7),A1 8(A7),A0 (A0),D0 (A1),D1 D1,D0 2 * I1AND1 #0,D0 4(A7),A1 8(A7),A0 (A0),D0 (A1),D0 2 * I1OR1 #0,D0 4(A7),A1 8(A7),A0 (A0),D0 (A1),D0 2 * * I1EOR1,I1XOR1 #0,D0 4(A7),A1 8(A7),A0 (A0),D0 (A1),D1

A1 loaded with address of second op A0 loaded with address of first op Get the LWORD Get the LWORD DOIT EOR return

ZERO out D0 A1 loaded with address of second op A0 loaded with address of first op Get the WORD DOIT AND return ZERO out D0 A1 loaded with address of second op A0 loaded with address of first op Get the WORD DOIT OR return

ZERO out D0 A1 loaded with address of second op A0 loaded with address of first op Get the WORD Get the WORD DOIT EOR return

ZERO out D0 A1 loaded with address of second op A0 loaded with address of first op Get the BYTE DOIT AND return ZERO out D0 A1 loaded with address of second op A0 loaded with address of first op Get the BYTE DOIT OR return

ZERO out D0 A1 loaded with address of second op A0 loaded with address of first op Get the BYTE Get the BYTE

EOR.B FNRET * * SCRTCR EQU XDEF MOVEA.L MOVE.L SAVREG ANDI.B TRAP DC.W RSTREG FNRET1 * ICRTCR EQU XDEF SAVREG TRAP DC.W SWAP MOVE.W SWAP ANDI.W RSTREG RTS * * ZIPPOS EQU ZAPPOS EQU XDEF MOVEA.L MOVE.L TST.L BMI.S CLR.L ZIPPOSOK EQU FNRET1 ZIPNEG EQU ZAPNEG EQU XDEF MOVEA.L MOVE.L TST.L BPL.S CLR.L ZIPNEGOK EQU FNRET1 * * TELEDS EQU XDEF MOVEA.L MOVE.L BRA.S PTELEDS EQU MOVE.L INTELEDS EQU SAVREG EXLT

D1,D0 2 * SCRTCR 4(A7),A0 (A0),D0 #$0B,D0 #0 54

DOIT LEOR return

* ICRTCR #0 55 D0 #0,D0 D0 #$0FF,D0

* * ZIPPOS,ZAPPOS 4(A7),A0 (A0),D0 D0 ZIPPOSOK D0 * * * ZIPNEG,ZAPNEG 4(A7),A0 (A0),D0 D0 ZIPNEGOK D0 *

* TELEDS,PTELEDS 4(A7),A0 A0,D0 INTELEDS * 4(A7),D0 *

DOLED D0 HMBL3 RSTREG FNRET1 * * REGA0 EQU IREGA0 EQU MOVE.L RTS REGA1 EQU IREGA1 EQU MOVE.L RTS REGA2 EQU IREGA2 EQU MOVE.L RTS REGA3 EQU IREGA3 EQU MOVE.L RTS REGA4 EQU IREGA4 EQU MOVE.L RTS REGA5 EQU IREGA5 EQU MOVE.L RTS REGA6 EQU IREGA6 EQU MOVE.L RTS REGA7 EQU IREGA7 EQU MOVE.L RTS XDEF XDEF * REGD1 EQU IREGD1 EQU MOVE.L REGD0 EQU IREGD0 EQU RTS REGD2 EQU IREGD2 EQU MOVE.L RTS REGD3 EQU IREGD3 EQU MOVE.L RTS REGD4 EQU IREGD4 EQU MOVE.L RTS REGD5 EQU * * A0,D0 * * A1,D0 * * A2,D0 * * A3,D0 * * A4,D0 * * A5,D0 * * A6,D0 * * A7,D0 REGA0,REGA1,REGA2,REGA3,REGA4,REGA5,REGA6,REGA7 IREGA0,IREGA1,IREGA2,IREGA3,IREGA4,IREGA5,IREGA6,IREGA7 * * D1,D0 * * * * D2,D0 * * D3,D0 * * D4,D0 *

IREGD5 EQU MOVE.L RTS REGD6 EQU IREGD6 EQU MOVE.L RTS REGD7 EQU IREGD7 EQU MOVE.L RTS XDEF XDEF * * CMPMBI EQU MOVE.L MOVE.L ANDI.B MOVEA.L ANDI.B MOVEA.L MOVE.L MOVE.L BRA.S CMPMWI EQU MOVE.L MOVE.L ANDI.B MOVEA.L ANDI.B MOVEA.L MOVE.L MOVE.L BRA.S CMPMB EQU XDEF MOVE.L MOVE.L CMPMBINT EQU MOVEA.L MOVE.L MOVEA.L MOVEA.L MOVEQ.L CMPI.L BLE.S SUBQ.L MOVEQ.L CMPMBLOP EQU CMPM.B DBNE BEQ.S MOVE.L MOVE.L SUB.L CMPMBRET EQU FNRET * CMPMW EQU

* D5,D0 * * D6,D0 * * D7,D0 REGD0,REGD1,REGD2,REGD3,REGD4,REGD5,REGD6,REGD7 IREGD0,IREGD1,IREGD2,IREGD3,IREGD4,IREGD5,IREGD6,IREGD7 * 12(A7),D0 8(A7),D1 #$FE,D0 D0,A0 #$FE,D1 D1,A1 (A0),D0 (A1),D1 CMPMBINT * 12(A7),D0 8(A7),D1 #$FE,D0 D0,A0 #$FE,D1 D1,A1 (A0),D0 (A1),D1 CMPMWINT * CMPMB,CMPMBI 12(A7),D0 8(A7),D1 * 4(A7),A0 (A0),D2 D0,A0 D1,A1 #-1,D0 #0,D2 CMPMBRET #1,D2 #0,D0 * (A0)+,(A1)+ D2,CMPMBLOP CMPMBRET 8(A7),D1 A1,D0 D1,D0 * 3 *

XDEF MOVE.L MOVE.L CMPMWINT EQU MOVEA.L MOVE.L ANDI.B MOVEA.L ANDI.B MOVEA.L MOVEQ.L MOVEQ.L CMPI.L BLE.S SUBQ.L MOVEQ.L CMPMWLOP EQU CMPM.W DBNE BEQ.S MOVE.L MOVE.L SUB.L LSR.L BRA.S * CMPML EQU XDEF MOVE.L MOVE.L CMPMLINT EQU MOVEA.L MOVE.L ANDI.B MOVEA.L ANDI.B MOVEA.L MOVEQ.L CMPI.L BLE.S SUBQ.L MOVEQ.L CMPMLLOP EQU CMPM.L DBNE BEQ.S MOVE.L MOVE.L SUB.L LSR.L BRA.L CMPMLI EQU MOVE.L MOVE.L ANDI.B MOVEA.L ANDI.B MOVEA.L MOVE.L MOVE.L

CMPMW,CMPMWI 12(A7),D0 8(A7),D1 * 4(A7),A0 (A0),D2 #$FE,D0 D0,A0 #$FE,D1 D1,A1 #0,D0 #-1,D0 #0,D2 CMPMBRET #1,D2 #0,D0 * (A0)+,(A1)+ D2,CMPMWLOP CMPMBRET 8(A7),D1 A1,D0 D1,D0 #1,D0 CMPMBRET * CMPML,CMPMLI 12(A7),D0 8(A7),D1 * 4(A7),A0 (A0),D2 #$FE,D0 D0,A0 #$FE,D1 D1,A1 #-1,D0 #0,D2 CMPMBRET #1,D2 #0,D0 * (A0)+,(A1)+ D2,CMPMLLOP CMPMBRET 8(A7),D1 A1,D0 D1,D0 #2,D0 CMPMBRET * 12(A7),D0 8(A7),D1 #$FE,D0 D0,A0 #$FE,D1 D1,A1 (A0),D0 (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 MOVE.W ANDI.W BRA.S

#0,D0 (A1),D0 #$3FFF,D0 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