Mercurial > hg > Members > kono > nitros9-code
annotate 3rdparty/packages/basic09/syscall.asm @ 1331:0a3500c747de
Fixed ANOTHER bug
author | boisy |
---|---|
date | Sun, 07 Sep 2003 00:53:51 +0000 |
parents | 57f23da9790a |
children | 7ee7d0c31787 |
rev | line source |
---|---|
482 | 1 ******************************************************************** |
2 * SysCall - system call subroutine module | |
3 * | |
4 * $Id$ | |
5 * | |
1326 | 6 * Edt/Rev YYYY/MM/DD Modified by |
7 * Comment | |
482 | 8 * ------------------------------------------------------------------ |
1326 | 9 * 2 ????/??/?? |
10 * From OS-9 Level Two Vr. 2.00.01 Basic09 disk. | |
482 | 11 |
12 nam SysCall | |
13 ttl system call subroutine module | |
14 | |
15 * Disassembled 02/07/06 13:11:18 by Disasm v1.6 (C) 1988 by RML | |
16 | |
17 ifp1 | |
18 use defsfile | |
19 endc | |
20 | |
21 tylg set Sbrtn+Objct | |
22 atrv set ReEnt+rev | |
1326 | 23 rev set $00 |
482 | 24 edition set 2 |
25 | |
26 mod eom,name,tylg,atrv,start,size | |
27 | |
28 u0000 rmb 0 | |
29 size equ . | |
30 | |
31 name fcs /SysCall/ | |
32 fcb edition | |
33 | |
34 start ldd $02,s get number of parameters | |
35 cmpd #$0002 two? | |
36 bne L005C if not, error | |
37 ldd $0A,s get size of second parameter | |
658
0ba32915943b
Fixed problem where E$Param error was being returned for 6309 systems.
boisy
parents:
482
diff
changeset
|
38 * cmpd #R$PC appropriate registers? |
0ba32915943b
Fixed problem where E$Param error was being returned for 6309 systems.
boisy
parents:
482
diff
changeset
|
39 cmpd #$0A appropriate registers? |
482 | 40 bne L005C branch if not |
41 ldd [<$04,s] get address of first parameter | |
42 ldx $06,s get size of first parameter | |
43 leax -$01,x | |
44 beq L0034 | |
45 leax -$01,x | |
46 bne L005C | |
47 tfr b,a | |
48 L0034 ldb #$39 get rts | |
49 pshs b,a put it and os9 func code on stack | |
50 ldd #$103F get SWI2 instruction | |
51 pshs b,a put on stack | |
52 ldu $0C,s get pointer to caller's registers on stack | |
659
0e6a4a6486a0
I've learned now that syscall does NOT change for either 6809 or 6309
boisy
parents:
658
diff
changeset
|
53 ldd 1,u R$D |
0e6a4a6486a0
I've learned now that syscall does NOT change for either 6809 or 6309
boisy
parents:
658
diff
changeset
|
54 ldx 4,u R$X |
0e6a4a6486a0
I've learned now that syscall does NOT change for either 6809 or 6309
boisy
parents:
658
diff
changeset
|
55 ldy 6,u R$Y |
0e6a4a6486a0
I've learned now that syscall does NOT change for either 6809 or 6309
boisy
parents:
658
diff
changeset
|
56 ldu 8,u R$U |
482 | 57 jsr ,s branch to subroutine |
58 pshs u,cc | |
59 ldu $0F,s | |
659
0e6a4a6486a0
I've learned now that syscall does NOT change for either 6809 or 6309
boisy
parents:
658
diff
changeset
|
60 leau 8,u R$U |
482 | 61 pshu y,x,dp,b,a |
62 puls x,a | |
63 sta ,-u | |
64 stx $08,u | |
65 leas $04,s | |
66 clrb | |
67 rts | |
68 | |
69 L005C comb | |
70 ldb #E$ParmEr | |
71 rts | |
72 | |
73 emod | |
74 eom equ * | |
75 end |