Changeset 4f508e6 in buchla-68k for iolib/rtraps.s
- Timestamp:
- 07/01/2017 02:34:46 PM (7 years ago)
- Branches:
- master
- Children:
- 08e1da1
- Parents:
- f40a309
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
iolib/rtraps.s
rf40a309 r4f508e6 1 *------------------------------------------------------------------------------2 *rtraps.s -- define ROMP debug trap3 *Version 7 -- 1988-01-12 -- Copyright 1987, 1988 by D.N. Lynx Crowe4 *------------------------------------------------------------------------------1 | ------------------------------------------------------------------------------ 2 | rtraps.s -- define ROMP debug trap 3 | Version 7 -- 1988-01-12 -- Copyright 1987, 1988 by D.N. Lynx Crowe 4 | ------------------------------------------------------------------------------ 5 5 .text 6 * 6 7 7 .xdef _trap15 8 * 8 9 9 .xref _rompbp 10 * 10 11 11 .xref tr1sav,tr13sav,tr14sav 12 12 .xref tr1rmp,tr13rmp,tr14rmp 13 * 14 BUCHLA .equ 1 *IPL value: 0 = NASA , 1 = Buchla15 * 13 14 BUCHLA = 1 | IPL value: 0 = NASA , 1 = Buchla 15 16 16 .ifeq BUCHLA 17 IPLEVEL .equ $0400 *NASA IPL = 4 (enable 5 and above)17 IPLEVEL = 0x0400 | NASA IPL = 4 (enable 5 and above) 18 18 .endc 19 * 19 20 20 .ifne BUCHLA 21 IPLEVEL .equ $0200 *Buchla IPL = 2 (enable 3 and above)21 IPLEVEL = 0x0200 | Buchla IPL = 2 (enable 3 and above) 22 22 .endc 23 * 24 IPL7 .equ $0700 *IPL 725 * 26 *_trap15 -- ROMP debug trap (used to implement breakpoints)27 *------- ------------------------------------------------28 _trap15: ori.w #IPL7,sr *Disable interrupts29 move.w #0,-(a7) *Keep stack long aligned30 movem.l d0-d7/a0-a7,-(a7) *Save regs on stack31 move.l tr1sav,tr1rmp *Save trap save areas32 move.l tr13sav,tr13rmp *...33 move.l tr14sav,tr14rmp *...34 move.w sr,d0 *Get status register35 andi.w # $F8FF,d0 *Enable serial I/O interrupts36 ori.w #IPLEVEL,d0 *...37 move.w d0,sr *...38 jsr _rompbp *Pass control to ROMP39 * 40 ori.w #IPL7,sr *Disable interrupts41 move.l tr14rmp,tr14sav *Restore trap save areas42 move.l tr13rmp,tr13sav *...43 move.l tr1rmp,tr1sav *...44 movem.l (a7)+,d0-d7/a0-a7 *Restore regs45 addq.l #2,a7 *Discard alignment filler word46 rte *Back to what we interrupted47 * 23 24 IPL7 = 0x0700 | IPL 7 25 26 | _trap15 -- ROMP debug trap (used to implement breakpoints) 27 | ------- ------------------------------------------------ 28 _trap15: ori.w #IPL7,sr | Disable interrupts 29 move.w #0,-(a7) | Keep stack long aligned 30 movem.l d0-d7/a0-a7,-(a7) | Save regs on stack 31 move.l tr1sav,tr1rmp | Save trap save areas 32 move.l tr13sav,tr13rmp | ... 33 move.l tr14sav,tr14rmp | ... 34 move.w sr,d0 | Get status register 35 andi.w #0xF8FF,d0 | Enable serial I/O interrupts 36 ori.w #IPLEVEL,d0 | ... 37 move.w d0,sr | ... 38 jsr _rompbp | Pass control to ROMP 39 40 ori.w #IPL7,sr | Disable interrupts 41 move.l tr14rmp,tr14sav | Restore trap save areas 42 move.l tr13rmp,tr13sav | ... 43 move.l tr1rmp,tr1sav | ... 44 movem.l (a7)+,d0-d7/a0-a7 | Restore regs 45 addq.l #2,a7 | Discard alignment filler word 46 rte | Back to what we interrupted 47 48 48 .end
Note:
See TracChangeset
for help on using the changeset viewer.