1 ;
-------------------------------------------------------------------------
2 ; _divuint.s
- routine for division of
16 bit unsigned int
4 ; Copyright
(C
) 1998, Ullrich von Bassewitz
5 ; Copyright
(C
) 2022, Gabriele Gorla
7 ; This library is free software; you can redistribute it
and/or modify it
8 ; under the terms of the GNU General Public License as published by the
9 ; Free Software Foundation; either version
2, or (at your option
) any
12 ; This library is distributed in the hope that it will
be useful
,
13 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ; MERCHANTABILITY
or FITNESS FOR
A PARTICULAR PURPOSE. See the
15 ; GNU General Public License for more details.
17 ; You should have received
a copy of the GNU General Public License
18 ; along with this library; see the file COPYING. If
not, write to the
19 ; Free Software Foundation
, 51 Franklin Street
, Fifth Floor
, Boston
,
22 ; As
a special exception
, if you link this library with other files
,
23 ; some of which are compiled with SDCC
, to produce an executable
,
24 ; this library does
not by itself cause the resulting executable to
25 ;
be covered by the GNU General Public License. This exception does
26 ;
not however invalidate any other reasons why the executable file
27 ; might
be covered by the GNU General Public License.
28 ;
-------------------------------------------------------------------------
32 ;
--------------------------------------------------------
34 ;
--------------------------------------------------------
35 .globl __divuint_PARM_2
36 .globl __divsint_PARM_2
37 .globl __moduint_PARM_2
38 .globl __modsint_PARM_2
42 ;
--------------------------------------------------------
43 ; overlayable function parameters in zero page
44 ;
--------------------------------------------------------
52 ;
--------------------------------------------------------
54 ;
--------------------------------------------------------
55 .define res "___SDCC_m6502_ret0"
56 .define den "__divuint_PARM_2"
57 .define rem "___SDCC_m6502_ret2"
58 .define s1 "___SDCC_m6502_ret4"
59 .define s2 "___SDCC_m6502_ret5"
61 ;
--------------------------------------------------------
63 ;
--------------------------------------------------------
79 ;
ldx __divuint_PARM_2+
1
106 ; asl
*___SDCC_m6502_ret0+
0
107 ; rol
*___SDCC_m6502_ret0+
1
110 ;
cmp __divuint_PARM_2+
0
113 ; sbc __divuint_PARM_2+
0
114 ; inc
*___SDCC_m6502_ret0+
0
118 ; sta
*___SDCC_m6502_ret2+
0
120 ; lda
*___SDCC_m6502_ret0+
0
121 ;
ldx *___SDCC_m6502_ret0+
1