mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 00:14:25 +00:00
Upload
Digital Research
This commit is contained in:
59
CPM OPERATING SYSTEMS/CPM 68K/1.2 SOURCE/6/XSIGNAL.S
Normal file
59
CPM OPERATING SYSTEMS/CPM 68K/1.2 SOURCE/6/XSIGNAL.S
Normal file
@@ -0,0 +1,59 @@
|
||||
******************************************************************************
|
||||
*
|
||||
* Assembly language interface to signal processing in C.
|
||||
*
|
||||
* Majority of work is done by "signal.c". All we do is take the
|
||||
* exception and call the proper C function. Registers, condition
|
||||
* codes, etc. are all preserved. A return from the function causes
|
||||
* resumption of normal processing.
|
||||
*
|
||||
******************************************************************************
|
||||
|
||||
.globl __illinst * Illegal instruction EPA
|
||||
|
||||
.globl __trace * Trace Trap EPA
|
||||
.globl __trap * All trap instructions
|
||||
.globl __buserr * BUSERR, addressing EPA
|
||||
.globl __arith * Arithmetic traps EPA
|
||||
.comm ___signal,64 * -> epa's of C functions
|
||||
|
||||
.bss * Ugh!
|
||||
epa: .ds.l 1 * non-reentrant!!
|
||||
.text
|
||||
__illinst: *
|
||||
move.l ___signal+16,epa * Set up epa
|
||||
add.l #2,2(a7) * Bump PC to next inst
|
||||
bra process * Process exception
|
||||
__trace:
|
||||
move.l ___signal+20,epa * Set up epa
|
||||
bra process * process
|
||||
|
||||
__trap: *
|
||||
move.l ___signal+24,epa * Select epa
|
||||
bra process *
|
||||
|
||||
__buserr: * Here for buserr crap
|
||||
cmpm.l (a7)+,(a7)+ * Prune junk
|
||||
move.l ___signal+40,epa * move in epa
|
||||
bra process * process exception
|
||||
|
||||
__arith: *
|
||||
move.l ___signal+32,epa * move in epa
|
||||
process: * Here to process exception
|
||||
movem.l d0-d7/a0-a6,-(sp) * Save all registers
|
||||
move.l epa,a0 * Load entry point
|
||||
clr.l a6 * Clear out a6
|
||||
jsr (a0) * Call processing routine
|
||||
movem.l (sp)+,d0-d7/a0-a6 * restore registers
|
||||
rtr * Resume processing
|
||||
ar out a6
|
||||
jsr (a0) * Call processing routine
|
||||
movem.l (sp)+,d0-d7/a0-a6 * restore registers
|
||||
rtr * Resume processing
|
||||
ar out a6
|
||||
jsr (a0) * Call processing routine
|
||||
movem.l (sp)+,d0-d7/a0-a6 * restore registers
|
||||
rtr * Resume processing
|
||||
ar out a6
|
||||
jsr (a0) * Call processing routine
|
||||
movem.l (sp)+,d0-d7/a0-a6 * restore registers
|
Reference in New Issue
Block a user