DataMuseum.dk

Presents historical artifacts from the history of:

Bogika Butler

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Bogika Butler

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦163c1324b⟧ TextFile

    Length: 3712 (0xe80)
    Types: TextFile
    Names: »TRAP.SA«

Derivation

└─⟦909f4eb2b⟧ Bits:30009789/_.ft.Ibm2.50006622.imd Mogens Pelles Zilog 80,000 / EOS projekt
    └─⟦this⟧ »TRAP.SA« 
└─⟦ddcd65152⟧ Bits:30009789/_.ft.Ibm2.50006617.imd Mogens Pelles Zilog 80,000 / EOS projekt
    └─⟦this⟧ »TRAP.SA« 

TextFile

           NOLIST
           INCLUDE     RR.FIOEQU.SA
           INCLUDE     RR.RTEQU.SA
           LIST
           NOFORMAT
 
           TTL         V 0.05   68K EOS PASCAL TRAP
TRAP       IDNT          0,05   68K EOS PASCAL TRAP
 
           SECTION 8
*
*****************************************************************************
*
*
*          FUNCTION:
*                  THE ROUTINE HANDLES INTERNAL INTERRUPTS, BY SETTING CAUSE
*                  AND AUX CAUSE AND CALLING EXCEPT. THE ROUTINE IS CALLED
*                  FROM BOBJ.
*
*          REGISTERS:
*          ON ENTRY:
*
*                  D0   FUNCTION NUMBER = 0
*                  D1   ERROR NUMBER
*                  D3   VECTOR NUMBER
*                  D4   OLD PC
*
*
*          ON EXIT
*                  D0   CAUSE + AUX CAUSE
*
*
*          MODIFIED REGISTERS
*
*                     0 1 2 3 4 5 6 7
*                  A:   *
*                  D: * * *
*
*          EXTERNALS:
*
*                  .PTRAP        DEF
*                  .PEXCEPT      REF
*
*
***************************************************************************
*
           XDEF    .PTRAP
           XREF    .PEXCEPT
 
 
ALLRS      REG      D0-D7/A0-A7        REGISTER MASK OF ALL REGISTERS
 
 
.PTRAP     EQU      *                  ENTRY POINT
         TSTOUT 'TRAP-STACK',(SP),RTERRST(A5)
           MOVEM.L  ALLRS,REGS(A5)     SAVE THE REGISTERS
         MOVE.L    D4,A0
         TSTOUT 'TRAP-CODE',-32(A0),64(A0)
           MOVE.L   #GIVEUP,D0         CAUSE:= GIVEUP
           SWAP     D0
 
           MOVE.W   #INVALPTR,D0       AUX CAUSE:= INVALID POINTER
           CMP.L    #2,D3
           BEQ      .PEXCEPT
 
           MOVE.W   #COMPERR,D0        AUX CAUSE:= COMPILER ERROR
           CMP.L    #3,D3              ADDRESS ERROR TRAP
           BEQ      .PEXCEPT
 
           MOVE.W   #DIVZRO,D0         AUX CAUSE:= ZERO DIVIDE
           CMP.L    #5,D3              DIVIDE FAULT TRAP
           BEQ      .PEXCEPT
 
           MOVE.W   #VALRNG,D0         AUX CAUSE:= VALUE RANGE
           CMP.L    #6,D3              CHECK INSTRUCTION TRAP
           BEQ      .PEXCEPT
 
           MOVE.W   #OVRFLW,D0         AUX CAUSE:= OVERFLOW
           CMP.L    #7,D3              OVERFLOW TRAP
           BEQ      .PEXCEPT
 
           MOVE.W   #VALRNG,D0         AUX CAUSE:= VALUE RANGE
           CMP.L    #45,D3             TRAP 13 HANDLER
           BEQ      .PEXCEPT
 
           CMP.L    #46,D3             TRAP 14 HANDLER
         IF <EQ>    THEN.S
           MOVE.L   D4,A1
           MOVE.W   (A1),D2            GET ERROR TYPE
           EXT.L    D2
           ADD.L    D2,D2
           JMP      TABLE(PC,D2)
TABLE      BRA.S    TRAP140            TYPE 0
           BRA.S    TRAP141            TYPE 1
           BRA.S    TRAP142            TYPE 2
           BRA.S    TRAP140            TYPE 3
           BRA.S    TRAP142            TYPE 4
 
TRAP140    OR.W     #$1000,D1          PASCAL RUNTIME +
           MOVE.W   D1,D0              INLINE RUNTIME ERRORS
           BRA      .PEXCEPT
 
TRAP141    OR.W     #$2000,D1          FLOATING POINT ERROR
           MOVE.W   D1,D0
           BRA      .PEXCEPT
 
TRAP142    MOVE.W   D1,D0              OS ERROR + USER HALT
           BRA      .PEXCEPT
 
         ENDI
 
           MOVE.L   #2,D0              IF UNKNOWN VECTOR NUMBER
           SWAP     D0                 CAUSE := 2
           MOVE.W   D3,D0              AUX CAUSE:= VECTOR NUMBER
           BRA      .PEXCEPT
 
           END
 
 
 
 
 
 
 
«eof»