home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 321.lha / VBR / VBR.asm < prev    next >
Assembly Source File  |  1989-12-12  |  816b  |  47 lines

  1.     SECTION    Code
  2.  
  3.     INCLUDE    "exec/execbase.i"
  4.     INCLUDE    "exec/libraries.i"
  5.     INCLUDE    "exec/ables.i"
  6.  
  7.     INT_ABLES
  8.  
  9. ABSEXECBASE    EQU    4
  10.  
  11.     XDEF    _MoveVects
  12.     XREF    _LVOSupervisor
  13.     XREF    _OldVects
  14.     XREF    _NewVects
  15.  
  16. _MoveVects:
  17.     MOVEM.L    A5/A6,-(SP)
  18.     MOVE.L    ABSEXECBASE,A6
  19.     LEA.L    MoveVectsTrap(PC),A5
  20.     JSR    _LVOSupervisor(A6)
  21.  
  22. EndMoveVects:
  23.     MOVEM.L    (SP)+,A5/A6
  24.     RTS
  25.  
  26. MoveVectsTrap:
  27.     DISABLE    D0        ; Disable interrupts
  28.     MOVEC.L    VBR,A0        ; Get VBR register
  29.     MOVE.L    A0,_OldVects
  30.     BNE    VectsMoved    ; Already been moved
  31.     MOVE.L    _NewVects,A1
  32.     MOVE.L    #$FF,D0        ; Size=$400
  33. 1$:    MOVE.L    (A0)+,(A1)+    ; Copy the vectors
  34.     DBF    D0,1$
  35.     MOVE.L    _NewVects,A1
  36.     MOVEC.L    A1,VBR        ; Now change the VBR register
  37.     ENABLE    D0        ; Enable interrupts
  38.     MOVEQ.L    #1,D0        ; Return True
  39.     RTE
  40.  
  41. VectsMoved:
  42.     ENABLE    D0        ; Enable interrupts
  43.     MOVEQ.L    #0,D0        ; Return False
  44.     RTE
  45.     
  46.     END
  47.