home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
sinclairqlb
/
ql2qtr.asm
< prev
next >
Wrap
Assembly Source File
|
1988-08-15
|
2KB
|
103 lines
* access to qdos traps (1,2,and 3) for BCPL
*
* Dr.A.J.Finch 27/5/87
* Physics Dept.,
* Lancaster University,
* Lancaster
*
rorg $0
qtrap equ 276 this is the global to be assigned to this routine
* in global vector - alter kermain routine accordingly!
* i.e.
* global $(
* qtrap : ug + 176
* $)
*
first dc.l (endmod-first)/4
cnop 0,4
label
BRA start
DC.B 'QTRAP' THIS HELPS FOR DEBUGGING WITH C1 MONITOR!
CNOP 0,4
start
movem.l d0-d7/a0-a6,-(sp) just to be safe !
*
*set up registers for trap
*
move.l d1,d4 save trap number
lsl.l #2,d2 bcpl address *4 for byte addresses
move.l d2,a5 save address of input regs.
lsl.l #2,d3 bcpl address *4 for byte addresses
move.l d3,a6 save address of output regs.
*
* copy over input register
*
move.l 0(a5),d0
move.l 4(a5),d1
move.l 8(a5),d2
move.l 12(a5),d3
move.l 16(a5),a0
move.l 20(a5),a1
move.l 24(a5),a2
move.l 28(a5),a3
*
* just in case - save register needed to return values
* of output registers
*
move.l a6,-(sp)
cmpi.w #1,d4
beq trap1
cmpi.w #2,d4
beq trap2
cmpi.w #3,d4
beq trap3
bra endtrap
trap1 trap #1
bra endtrap
trap2 trap #2
bra endtrap
trap3 trap #3
*
endtrap
*
* return registers
*
move.l (sp)+,a6 restore address of output vector
*
* and copy over registers
*
move.l d0,0(a6)
move.l d1,4(a6)
move.l d2,8(a6)
move.l d3,12(a6)
move.l a0,16(a6)
move.l a1,20(a6)
move.l a2,24(a6)
move.l a3,28(a6)
*
* restore previously saved registers
*
movem.l (sp)+,d0-d7/a0-a6
*
* and finally return to bcpl
*
jmp (a6)
*
*
* globals
*
cnop 0,4
dc.l 0
dc.l qtrap,(label-first)
dc. qtrap
endmod end