<p>
<tscreen><verb>
- unsigned int __fastcall__ mul20(unsigned char value);
+ unsigned int __fastcall__ _mul20(unsigned char value);
</verb></tscreen>
The 8 bit <tt>value</tt> is multiplied by 20 and returned as 16 bit value.
<p>
<tscreen><verb>
- unsigned int __fastcall__ mul40(unsigned char value);
+ unsigned int __fastcall__ _mul40(unsigned char value);
</verb></tscreen>
The 8 bit <tt>value</tt> is multiplied by 40 and returned as 16 bit value.
/* Multiply an 8 bit unsigned value by 20 and return the 16 bit unsigned result */
-unsigned int __fastcall__ mul20(unsigned char value);
+unsigned int __fastcall__ _mul20(unsigned char value);
/* Multiply an 8 bit unsigned value by 40 and return the 16 bit unsigned result */
-unsigned int __fastcall__ mul40(unsigned char value);
+unsigned int __fastcall__ _mul40(unsigned char value);
mouse \
runtime \
serial \
- specialmath \
tgi \
zlib
.export _cputcxy, _cputc
.export plot, cputdirect, putchar
- .import gotoxy, _mul40
+ .import gotoxy, __mul40
.importzp tmp4,ptr4
.import _revflag,setcursor
sta (OLDADR),y
lda ROWCRS
- jsr _mul40 ; destroys tmp4, carry is cleared
+ jsr __mul40 ; destroys tmp4, carry is cleared
adc SAVMSC ; add start of screen memory
sta ptr4
txa
.export _mouse_txt_callbacks
.importzp tmp4
- .import _mul40
+ .import __mul40
.importzp mouse_txt_char ; screen code of mouse cursor
.include "atari.inc"
lsr a ; convert y position to character line
lsr a
lsr a
- jsr _mul40 ; carry is cleared by _mul40
+ jsr __mul40 ; carry is cleared by _mul40
adc SAVMSC
sta scrptr
txa
.include "atari.inc"
.importzp tmp1,tmp4,ptr1,ptr2
- .import _mul40,_clrscr
+ .import __mul40,_clrscr
.export __scroll
.proc __scroll
sta ptr2+1
lda tmp1
- jsr _mul40
+ jsr __mul40
sta tmp4
lda ptr2
sec
jmp _clrscr
;multiply by 40 (xsize)
-up_ok: jsr _mul40 ; carry is cleared by _mul40
+up_ok: jsr __mul40 ; carry is cleared by __mul40
adc SAVMSC ; add start of screen mem
sta ptr2
txa
; cursor handling, internal function
.include "atari.inc"
- .import cursor,_mul40
+ .import cursor,__mul40
.export setcursor
.proc setcursor
sta (OLDADR),y
lda ROWCRS
- jsr _mul40 ; function leaves with carry clear!
+ jsr __mul40 ; function leaves with carry clear!
adc SAVMSC ; add start of screen memory
sta OLDADR
txa
.export _cputcxy, _cputc
.export plot, cputdirect, putchar
- .import gotoxy, _mul20
+ .import gotoxy, __mul20
.importzp ptr4
.import setcursor
pha ; save char
lda ROWCRS_5200
- jsr _mul20 ; destroys tmp4, carry is cleared
+ jsr __mul20 ; destroys tmp4, carry is cleared
adc SAVMSC ; add start of screen memory
sta ptr4
txa
--- /dev/null
+; mul20.s
+;
+; This file is part of
+; cc65 - a freeware C compiler for 6502 based systems
+;
+; https://github.com/cc65/cc65
+;
+; See "LICENSE" file for legal information.
+;
+;
+; unsigned int __fastcall__ _mul20(unsigned char value);
+;
+; REMARKS: Function is defined to return with carry-flag cleared
+
+
+ .importzp tmp4
+ .export __mul20
+
+.proc __mul20 ; = 30 bytes, 41/46 cycles
+
+ sta tmp4 ; remember value for later addition...
+ ldx #0 ; clear high-byte
+ asl a ; * 2
+ bcc mul4 ; high-byte affected?
+ ldx #2 ; this will be the 1st high-bit soon...
+
+mul4: asl a ; * 4
+ bcc mul5 ; high-byte affected?
+ inx ; => yes, apply to 0 high-bit
+ clc ; prepare addition
+
+mul5: adc tmp4 ; * 5
+ bcc mul10 ; high-byte affected?
+ inx ; yes, correct...
+
+mul10: stx tmp4 ; continue with classic shifting...
+
+ asl a ; * 10
+ rol tmp4
+
+ asl a ; * 20
+ rol tmp4
+
+ ldx tmp4 ; deliver high-byte in X
+ rts
+
+.endproc
--- /dev/null
+; mul40.s
+;
+; This file is part of
+; cc65 - a freeware C compiler for 6502 based systems
+;
+; https://github.com/cc65/cc65
+;
+; See "LICENSE" file for legal information.
+;
+;
+; unsigned int __fastcall__ _mul40(unsigned char value);
+;
+; REMARKS: Function is defined to return with carry-flag cleared
+
+
+ .importzp tmp4
+ .export __mul40
+
+.proc __mul40 ; = 33 bytes, 48/53 cycles
+
+ sta tmp4 ; remember value for later addition...
+ ldx #0 ; clear high-byte
+ asl a ; * 2
+ bcc mul4 ; high-byte affected?
+ ldx #2 ; this will be the 1st high-bit soon...
+
+mul4: asl a ; * 4
+ bcc mul5 ; high-byte affected?
+ inx ; => yes, apply to 0 high-bit
+ clc ; prepare addition
+
+mul5: adc tmp4 ; * 5
+ bcc mul10 ; high-byte affected?
+ inx ; yes, correct...
+
+mul10: stx tmp4 ; continue with classic shifting...
+
+ asl a ; * 10
+ rol tmp4
+
+ asl a ; * 20
+ rol tmp4
+
+ asl a ; * 40
+ rol tmp4
+
+ ldx tmp4 ; deliver high-byte in X
+ rts
+
+.endproc
+++ /dev/null
-; mul20.s
-;
-; This file is part of
-; cc65 - a freeware C compiler for 6502 based systems
-;
-; https://github.com/cc65/cc65
-;
-; See "LICENSE" file for legal information.
-;
-;
-; unsigned int __fastcall__ mul20(unsigned char value);
-;
-; REMARKS: Function is defined to return with carry-flag cleared
-
-
- .importzp tmp4
- .export _mul20
-
-.proc _mul20 ; = 30 bytes, 41/46 cycles
-
- sta tmp4 ; remember value for later addition...
- ldx #0 ; clear high-byte
- asl a ; * 2
- bcc mul4 ; high-byte affected?
- ldx #2 ; this will be the 1st high-bit soon...
-
-mul4: asl a ; * 4
- bcc mul5 ; high-byte affected?
- inx ; => yes, apply to 0 high-bit
- clc ; prepare addition
-
-mul5: adc tmp4 ; * 5
- bcc mul10 ; high-byte affected?
- inx ; yes, correct...
-
-mul10: stx tmp4 ; continue with classic shifting...
-
- asl a ; * 10
- rol tmp4
-
- asl a ; * 20
- rol tmp4
-
- ldx tmp4 ; deliver high-byte in X
- rts
-
-.endproc
+++ /dev/null
-; mul40.s
-;
-; This file is part of
-; cc65 - a freeware C compiler for 6502 based systems
-;
-; https://github.com/cc65/cc65
-;
-; See "LICENSE" file for legal information.
-;
-;
-; unsigned int __fastcall__ mul40(unsigned char value);
-;
-; REMARKS: Function is defined to return with carry-flag cleared
-
-
- .importzp tmp4
- .export _mul40
-
-.proc _mul40 ; = 33 bytes, 48/53 cycles
-
- sta tmp4 ; remember value for later addition...
- ldx #0 ; clear high-byte
- asl a ; * 2
- bcc mul4 ; high-byte affected?
- ldx #2 ; this will be the 1st high-bit soon...
-
-mul4: asl a ; * 4
- bcc mul5 ; high-byte affected?
- inx ; => yes, apply to 0 high-bit
- clc ; prepare addition
-
-mul5: adc tmp4 ; * 5
- bcc mul10 ; high-byte affected?
- inx ; yes, correct...
-
-mul10: stx tmp4 ; continue with classic shifting...
-
- asl a ; * 10
- rol tmp4
-
- asl a ; * 20
- rol tmp4
-
- asl a ; * 40
- rol tmp4
-
- ldx tmp4 ; deliver high-byte in X
- rts
-
-.endproc
--- /dev/null
+#include <specialmath.h>
+#include "unittest.h"
+
+TEST
+{
+ unsigned i;
+
+ for (i=0; i < 256; ++i)
+ {
+ ASSERT_AreEqual(i*20, _mul20(i), "%u", "Invalid 'mul20(%u)' calculation!" COMMA i);
+ }
+
+ for (i=0; i < 256; ++i)
+ {
+ ASSERT_AreEqual(i*40, _mul40(i), "%u", "Invalid 'mul40(%u)' calculation!" COMMA i);
+ }
+}
+ENDTEST
+++ /dev/null
-#include <specialmath.h>
-#include "unittest.h"
-
-TEST
-{
- unsigned i;
-
- for (i=0; i < 256; ++i)
- {
- ASSERT_AreEqual(i*20, mul20(i), "%u", "Invalid 'mul20(%u)' calculation!" COMMA i);
- }
-
- for (i=0; i < 256; ++i)
- {
- ASSERT_AreEqual(i*40, mul40(i), "%u", "Invalid 'mul40(%u)' calculation!" COMMA i);
- }
-}
-ENDTEST