mirror of
https://frontier.innolan.net/github/AmigaExamples.git
synced 2025-11-23 20:01:40 +00:00
166 lines
2.1 KiB
ArmAsm
166 lines
2.1 KiB
ArmAsm
xdef RenderCounter
|
|
xdef RenderCounterAtY
|
|
xdef ResetCounter
|
|
xdef IncrementCounter
|
|
xdef DecrementCounter
|
|
xdef RenderNumber5
|
|
xdef RenderNumber4
|
|
xdef RenderNumber3
|
|
xdef RenderNumber2
|
|
xdef ToAscii
|
|
|
|
RenderCounter:
|
|
;; d0.w x position
|
|
;; a1.l text
|
|
lea panel,a0
|
|
move.w #20,d1
|
|
jsr DrawText8
|
|
rts
|
|
|
|
RenderCounterAtY:
|
|
;; d0.w x position
|
|
;; d1.w y position
|
|
;; a1.l text
|
|
lea panel,a0
|
|
jsr DrawText8
|
|
rts
|
|
|
|
RenderNumber4:
|
|
;; d0.l number
|
|
;; d1.w x position
|
|
move.l d1,d3
|
|
move.l #4,d2
|
|
bsr ToAscii
|
|
move.l a0,a1
|
|
lea panel,a0
|
|
move.w #20,d1
|
|
move.w d3,d0
|
|
jsr DrawText8
|
|
rts
|
|
|
|
RenderNumber2:
|
|
;; d0.l number
|
|
;; d1.w x position
|
|
move.l d1,d3
|
|
move.l #2,d2
|
|
bsr ToAscii
|
|
move.l a0,a1
|
|
lea panel,a0
|
|
move.w #20,d1
|
|
move.w d3,d0
|
|
jsr DrawText8
|
|
rts
|
|
|
|
RenderNumber3:
|
|
;; d0.l number
|
|
;; d1.w x position
|
|
move.l d1,d3
|
|
move.l #3,d2
|
|
bsr ToAscii
|
|
move.l a0,a1
|
|
lea panel,a0
|
|
move.w #20,d1
|
|
move.w d3,d0
|
|
jsr DrawText8
|
|
rts
|
|
|
|
|
|
test:
|
|
dc.b "HELLO"
|
|
dc.b 0
|
|
|
|
RenderNumber5:
|
|
;; d0.l number
|
|
;; d1.w x position
|
|
move.l d1,d3
|
|
move.l #5,d2
|
|
bsr ToAscii
|
|
move.l a0,a1
|
|
lea panel,a0
|
|
move.w #20,d1
|
|
move.w d3,d0
|
|
jsr DrawText8
|
|
rts
|
|
|
|
ResetCounter:
|
|
move.l #"0000",(a0)
|
|
rts
|
|
|
|
|
|
IncrementCounter:
|
|
move.l a0,a1
|
|
add.l #3,a0
|
|
.loop:
|
|
sub.l d0,d0
|
|
move.b (a0),d0
|
|
addq.b #1,d0
|
|
cmp.b #'9',d0
|
|
ble .done
|
|
move.b #'0',d0
|
|
move.b d0,(a0)
|
|
sub.l #1,a0
|
|
cmp.l a1,a0
|
|
blt .startOfText
|
|
bra .loop
|
|
.done:
|
|
move.b d0,(a0)
|
|
.startOfText:
|
|
rts
|
|
|
|
|
|
DecrementCounter:
|
|
move.l a0,a1
|
|
add.l #3,a0
|
|
.loop:
|
|
sub.l d0,d0
|
|
move.b (a0),d0
|
|
cmp.b #'0',d0
|
|
beq .dontWrap
|
|
subq.b #1,d0
|
|
bra .done
|
|
.dontWrap:
|
|
move.b #'9',d0
|
|
move.b d0,(a0)
|
|
sub.l #1,a0
|
|
cmp.l a1,a0
|
|
blt .startOfText
|
|
bra .loop
|
|
.done:
|
|
move.b d0,(a0)
|
|
.startOfText:
|
|
rts
|
|
|
|
|
|
|
|
ToAscii:
|
|
;; d0.l number
|
|
;; d2.l numb chars
|
|
;; movem.l d0-d2/a1,-(a7)
|
|
lea staticBuffer,a0
|
|
move.l a0,a1
|
|
add.l d2,a0
|
|
move.b #0,(a0)
|
|
moveq #10,d2
|
|
.loop:
|
|
divu.w d2,d0
|
|
swap d0
|
|
addi.b #"0",d0
|
|
move.b d0,-(a0)
|
|
move.b #0,d0
|
|
swap d0
|
|
tst.w d0
|
|
bne.s .loop
|
|
.loop2:
|
|
cmp.l a0,a1
|
|
beq .done
|
|
move.b #'0',-(a0)
|
|
bra .loop2
|
|
.done:
|
|
;; movem.l (a7)+,d0-d2/a1
|
|
rts
|
|
|
|
staticBuffer:
|
|
dc.b "000000000"
|
|
dc.b 0
|
|
|