home *** CD-ROM | disk | FTP | other *** search
- SECTION Code
-
- INCLUDE "exec/execbase.i"
- INCLUDE "exec/libraries.i"
- INCLUDE "exec/ables.i"
-
- INT_ABLES
-
- ABSEXECBASE EQU 4
-
- XDEF _MoveVects
- XREF _LVOSupervisor
- XREF _OldVects
- XREF _NewVects
-
- _MoveVects:
- MOVEM.L A5/A6,-(SP)
- MOVE.L ABSEXECBASE,A6
- LEA.L MoveVectsTrap(PC),A5
- JSR _LVOSupervisor(A6)
-
- EndMoveVects:
- MOVEM.L (SP)+,A5/A6
- RTS
-
- MoveVectsTrap:
- DISABLE D0 ; Disable interrupts
- MOVEC.L VBR,A0 ; Get VBR register
- MOVE.L A0,_OldVects
- BNE VectsMoved ; Already been moved
- MOVE.L _NewVects,A1
- MOVE.L #$FF,D0 ; Size=$400
- 1$: MOVE.L (A0)+,(A1)+ ; Copy the vectors
- DBF D0,1$
- MOVE.L _NewVects,A1
- MOVEC.L A1,VBR ; Now change the VBR register
- ENABLE D0 ; Enable interrupts
- MOVEQ.L #1,D0 ; Return True
- RTE
-
- VectsMoved:
- ENABLE D0 ; Enable interrupts
- MOVEQ.L #0,D0 ; Return False
- RTE
-
- END
-