Return to Snippet

Revision: 18523
at October 1, 2009 13:22 by Zufolek


Updated Code
asm

 ;function Abs(n) returns absolute value of n
Abs
 bpl AbsDone
 sta temp1
 lda #0
 sec
 sbc temp1
AbsDone
 rts



 ;function Dist(x1,x2) returns distance from x1 to x2
Dist
 sty temp1
 sec
 sbc temp1
 jsr Abs
 rts


 ;function RndLow(n) returns integer less than n
 ;with lower results more frequent

RndLow
 STA temp1
 LDX #255
.RndLowLoop
 INX
 CPX temp1
 BCC RndLowOk
 LDA #0
 RTS
RndLowOk
 jsr randomize
 STA temp3
 BIT temp3
 BMI .RndLowLoop
 txa
 RTS


 ;function RandRange(low,high) returns a random number
 ;between low and high, this needs to be optimized
RandRange
 STA temp1
 STY temp2
 jsr randomize
 STA temp3
 CMP #0
 BEQ .RandDone
.RandLoop
 jsr randomize
 STA temp3
 CMP temp2
 bcs .RandLoop
 CMP temp1
 bcc .RandLoop
.RandDone
 RTS



 ;subroutine AddScore adds to score the value in variable 's'
 ;assumes variable 't' is a frame counter
 ;call before every drawscreen 
.AddScore
 ldx s
 beq ScoreDone
 lda t
 and #3
 bne ScoreDone
 dex
 bne ScoreCont
 lda #4
 jmp SetScCol
ScoreCont
 lda t
 asl
 asl
 asl
 asl
 clc
 adc #14
SetScCol
 sta scorecolor
 SED
 CLC
 LDA score+2
 ADC #$01
 STA score+2
 LDA score+1
 ADC #$00
 STA score+1
 LDA score
 ADC #$00
 STA score
 CLD
 stx s
ScoreDone
 rts

end

Revision: 18522
at October 1, 2009 12:16 by Zufolek


Initial Code
asm

 ;function Abs(n) returns absolute value of n
Abs
 bpl AbsDone
 sta temp1
 lda #0
 sec
 sbc temp1
AbsDone
 rts



 ;function Dist(x1,x2) returns distance from x1 to x2
Dist
 sty temp1
 sec
 sbc temp1
 jsr Abs
 rts


 ;function RndLow(n) returns integer less than n
 ;with lower results more frequent

RndLow
 STA temp1
 LDX #255
.RndLowLoop
 INX
 CPX temp1
 BCC RndLowOk
 LDA #0
 RTS
RndLowOk
 jsr randomize
 STA temp3
 BIT temp3
 BMI .RndLowLoop
 txa
 RTS


 ;function RandRange(low,high) returns a random number
 ;between low and high, this needs to be optimized
RandRange
 STA temp1
 STY temp2
 jsr randomize
 STA temp3
 CMP #0
 BEQ .RandDone
.RandLoop
 jsr randomize
 STA temp3
 CMP temp2
 bcs .RandLoop
 CMP temp1
 bcc .RandLoop
.RandDone
 RTS



 ;subroutine AddScore adds to score the value in variable 's'
 ;assumes variable 't' is a frame counter
 ;call before every drawscreen 
.AddScore
 lda t
 and #3
 bne ScoreDone
 ldx s
 dex
 bne ScoreCont
 lda #4
 jmp SetScCol
ScoreCont
 lda t
 asl
 asl
 asl
 asl
 clc
 adc #14
SetScCol
 sta scorecolor
 SED
 CLC
 LDA score+2
 ADC #$01
 STA score+2
 LDA score+1
 ADC #$00
 STA score+1
 LDA score
 ADC #$00
 STA score
 CLD
 stx s
ScoreDone
 rts

end

Initial URL


Initial Description
For batari Basic, which is  found at http://bataribasic.com

To use functions in bB, a=ExampleFunction(arg1,arg2)
To use functions in asm, make register a = arg1, y = arg2, and do jsr to function, and it returns value in register a.

Initial Title
Some Stuff for Batari Basic

Initial Tags


Initial Language
Other