home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Kyūkyoku!! X68000 Emulator
/
X68000Book.dat
/
mac
/
OLS
/
X68000
/
Ko-Window
/
kow142s.lzh
/
wsrv
/
wsrvasm.s
< prev
next >
Wrap
Text File
|
1996-01-13
|
4KB
|
237 lines
* for 030 1993 Ko, Taka2
.text *.data 1991 COR.
_ShellProcessPSP .ds.l 1
_SuperSP .ds.l 1
* èäéΦì₧é▌âGâôâgâè Trap #0 âGâôâgâè
*
* d0 : âvâìâZâXéhéc
* d1 : âtâ@âôâNâVâçâôö╘ìå
* a0 : âpâëâüü[â^âAâhâîâX (î┬Éö,ê°Éö1,ê°Éö2 ... )
.xdef _IntEntry
.xdef _IntEntry030
_IntEntry:
_IntEntry030:
* for 030 read sr 1993 Ko, Taka2
cmp.w #$101,d0
bne SKIPISU
SRRET:
move.w (sp),d0
rte
SKIPISU:
move.w (sp)+,d2
move.l (sp)+,a1
addq.l #2,sp * patch for X680x0
.if X30.eq.0
bra SKIPADD
.xdef _IntEntry000
_IntEntry000:
cmp.w #$101,d0
beq SRRET
move.w (sp)+,d2
move.l (sp)+,a1
.if 0
* for 030 adjust sp 1993 Ko, Taka2
.if X30.eq.0
tst.b $cbc.w * is030 1994 COR.
beq SKIPADD
.endif
addq.l #2,sp * patch for X680x0
.endif
.endif
SKIPADD:
move.w d2,sr
move.l a1,-(sp)
cmp.w #$100,d0
beq _EventWait * éαé╡ô═é⌐é╚é¡é╚é┴é╜éτë║é╠2ìsé╔û▀é╖
* bne SKIP0
* jmp _EventWait
********* ê°Éöé═ÄQÅ╞é╡é─éóé╚é⌐é┴é╜é╠é┼üAé╜é╛é╠âWâââôâvé╔é╡é╜ COR.
* clr.l -(sp)
* jsr _EventWait
* addq.l #4,sp
* rts
SKIP0:
cmp.l _StackTop,sp
bgt SKIP1
cmp.l __PSP,sp
blt SKIP1
pea STACKOVER(pc) * move.l #STACKOVER,-(sp)
move.l _WindowError,a0
jsr (a0)
SKIP1:
move.l a0,-(sp)
move.l d1,-(sp)
move.l d0,-(sp)
bsr _GetRequest
lea.l 12(sp),sp
rts
STACKOVER:
.dc.b 'âXâ^âbâNâIü[âoü[âtâìü[',0
.even
* âNâëâCâAâôâgî─é╤Åoé╡
*
* d0 : Ä└ìsâAâhâîâX
* d1 : âEâCâôâhâEâ|âCâôâ^(wp)
* a0 : âCâxâôâgÅεò±(info)
.text
.xdef __CallClient
__CallClient
move.l 4(sp),a1 * 12
movem.l 8(sp),d0-d1/a0 * 12+4x3=24 +12=36
jmp (a1) * 8 = 44
* move.l 4(sp),a1
* move.l 8(sp),d0
* move.l 12(sp),d1
* move.l 16(sp),a0 * 12x4= 48
* jsr (a1) * 16
* rts * 16 = 80
*
* âCâxâôâgæ╥é┐âïü[âv
*
SP_DOSCALL equ 0
.text
.xdef _EventWaitLoop
_EventWaitLoop
.if SP_DOSCALL
clr.l -(sp)
dc.w $ff20 * SUPER
move.l d0,_SuperSP
move.l d0,-(sp)
dc.w $ff20 * SUPER
move.l __SEND,sp
.else
clr.l a1
moveq.l #$81,d0 * B_SUPER
trap #15
move.l d0,_SuperSP
move.l d0,a1
moveq.l #$81,d0
trap #15
move.l __SEND,sp
.endif
Loop1
bsr _TopLevelExec
bsr _EventWait
bra Loop1
* clr.l -(sp)
* bsr _EventWait
* addq.l #4,sp
* bra Loop1
*
* âgâbâvâîâxâïé╔û▀éΘ
*
* Modified 1995 COR.
*
.text
.xdef _GotoTopLevel
.xdef _OSQuit
.xref _DefaultAbortEntry
.xref _InChildFlag
_GotoTopLevel:
tst.l _InChildFlag
beq WinAbort
move.l _DefaultAbortEntry,-(sp)
rts
WinAbort:
dc.w $ff51 *GETPDB
cmp.l __PSP,d0
beq TopLevel
_OSQuit:
moveq.l #$FD,d0
trap #15
moveq.l #$FF,d0
trap #15
TopLevel
clr.l -(sp)
dc.w $ff20 * SUPER
move.l _SuperSP(pc),sp
move.w #0,SR
move.l __SEND,sp
bsr _EventStackClear
bra Loop1
*
* è╓Éöî─é╤Åoé╡ (îïï╟é▄é╜ GetRequest é⌐éτî─é╤Åoé│éΩéΘ)
*
* old static int CallFunction( flag, func, id, count, arg )
* new static int CallFunction( args(flag), arg, func, id )
*
* 1992 10/6 H.Ogasawara (COR.)
* 1995 12/20 COR.
.xdef _CallFunction
_CallFunction:
link a6,#0
movem.l 8(a6),d2/a0-a2
move.l (a0)+,d0 * args
.if X30
beq no_copy
lea.l (a0,d0.l*4),a0
subq.l #1,d0
arg_copy_loop:
move.l -(a0),-(sp)
dbra d0,arg_copy_loop
no_copy:
.else
add.w d0,d0 * x2
move.w d0,d1
add.w d1,d1 * x4
add.w d1,a0 * +x4
neg.w d0
jmp _PushTblLast(pc,d0.w)
move.l -(a0),-(sp) * MAX args = 12
move.l -(a0),-(sp)
move.l -(a0),-(sp)
move.l -(a0),-(sp)
move.l -(a0),-(sp)
move.l -(a0),-(sp)
move.l -(a0),-(sp)
move.l -(a0),-(sp)
move.l -(a0),-(sp)
move.l -(a0),-(sp)
move.l -(a0),-(sp)
move.l -(a0),-(sp)
_PushTblLast:
.endif
tst.b d2
beq SKIP2
move.l a2,-(sp)
SKIP2:
jsr (a1)
unlk a6
rts
*:vi:se ts=4 sw=4: