mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-02-19 08:31:01 +00:00
fixed tests
This commit is contained in:
parent
f2a770182e
commit
1e3a6a2750
902
src/test/ref/bitmap-plot-1.asm
Normal file
902
src/test/ref/bitmap-plot-1.asm
Normal file
@ -0,0 +1,902 @@
|
||||
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
|
||||
// Plots a fullscreen elipsis
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
// Processor port data direction register
|
||||
.label PROCPORT_DDR = 0
|
||||
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
||||
.const PROCPORT_DDR_MEMORY_MASK = 7
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in $A000, $E000 I/O in $D000
|
||||
.const PROCPORT_RAM_IO = $35
|
||||
.label RASTER = $d012
|
||||
.label BGCOL = $d021
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
.const VIC_DEN = $10
|
||||
.const VIC_RSEL = 8
|
||||
.label D018 = $d018
|
||||
// VIC II IRQ Status Register
|
||||
.label IRQ_STATUS = $d019
|
||||
// VIC II IRQ Enable Register
|
||||
.label IRQ_ENABLE = $d01a
|
||||
// Bits for the IRQ Status/Enable Registers
|
||||
.const IRQ_RASTER = 1
|
||||
// CIA#1 Interrupt Status & Control Register
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
.label HARDWARE_IRQ = $fffe
|
||||
// The colors of the C64
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
// PI*2 in u[4.28] format
|
||||
.const PI2_u4f28 = $6487ed51
|
||||
// PI in u[4.28] format
|
||||
.const PI_u4f28 = $3243f6a9
|
||||
// PI/2 in u[4.28] format
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label rem16u = $2b
|
||||
.label frame_cnt = $31
|
||||
bbegin:
|
||||
// Counts frames - updated by the IRQ
|
||||
lda #1
|
||||
sta frame_cnt
|
||||
jsr main
|
||||
rts
|
||||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
||||
.label _9 = $a
|
||||
.label _14 = $a
|
||||
.label _24 = 8
|
||||
.label _25 = 8
|
||||
.label cos_x = 8
|
||||
.label xpos = $a
|
||||
.label x = $32
|
||||
.label sin_y = 8
|
||||
.label ypos = $a
|
||||
.label y = $34
|
||||
.label idx_x = 2
|
||||
.label idx_y = 4
|
||||
.label _26 = 8
|
||||
.label _27 = 8
|
||||
jsr sin16s_gen2
|
||||
jsr bitmap_init
|
||||
jsr bitmap_clear
|
||||
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||
sta D011
|
||||
lda #toD0181_return
|
||||
sta D018
|
||||
jsr init_irq
|
||||
lda #$80
|
||||
sta idx_y
|
||||
lda #0
|
||||
sta idx_y+1
|
||||
sta idx_x
|
||||
sta idx_x+1
|
||||
b2:
|
||||
lda idx_x
|
||||
asl
|
||||
sta _24
|
||||
lda idx_x+1
|
||||
rol
|
||||
sta _24+1
|
||||
clc
|
||||
lda _26
|
||||
adc #<SINUS
|
||||
sta _26
|
||||
lda _26+1
|
||||
adc #>SINUS
|
||||
sta _26+1
|
||||
ldy #0
|
||||
lda (cos_x),y
|
||||
tax
|
||||
iny
|
||||
lda (cos_x),y
|
||||
stx cos_x
|
||||
sta cos_x+1
|
||||
lda #<$a0
|
||||
sta mul16s.a
|
||||
lda #>$a0
|
||||
sta mul16s.a+1
|
||||
jsr mul16s
|
||||
asl _9
|
||||
rol _9+1
|
||||
rol _9+2
|
||||
rol _9+3
|
||||
asl _9
|
||||
rol _9+1
|
||||
rol _9+2
|
||||
rol _9+3
|
||||
asl _9
|
||||
rol _9+1
|
||||
rol _9+2
|
||||
rol _9+3
|
||||
asl _9
|
||||
rol _9+1
|
||||
rol _9+2
|
||||
rol _9+3
|
||||
clc
|
||||
lda #<$a0
|
||||
adc _9+2
|
||||
sta x
|
||||
lda #>$a0
|
||||
adc _9+3
|
||||
sta x+1
|
||||
lda idx_y
|
||||
asl
|
||||
sta _25
|
||||
lda idx_y+1
|
||||
rol
|
||||
sta _25+1
|
||||
clc
|
||||
lda _27
|
||||
adc #<SINUS
|
||||
sta _27
|
||||
lda _27+1
|
||||
adc #>SINUS
|
||||
sta _27+1
|
||||
ldy #0
|
||||
lda (sin_y),y
|
||||
tax
|
||||
iny
|
||||
lda (sin_y),y
|
||||
stx sin_y
|
||||
sta sin_y+1
|
||||
lda #$64
|
||||
sta mul16s.a
|
||||
lda #0
|
||||
sta mul16s.a+1
|
||||
jsr mul16s
|
||||
asl _14
|
||||
rol _14+1
|
||||
rol _14+2
|
||||
rol _14+3
|
||||
asl _14
|
||||
rol _14+1
|
||||
rol _14+2
|
||||
rol _14+3
|
||||
asl _14
|
||||
rol _14+1
|
||||
rol _14+2
|
||||
rol _14+3
|
||||
asl _14
|
||||
rol _14+1
|
||||
rol _14+2
|
||||
rol _14+3
|
||||
clc
|
||||
lda #<$64
|
||||
adc _14+2
|
||||
sta y
|
||||
lda #>$64
|
||||
adc _14+3
|
||||
sta y+1
|
||||
lda y
|
||||
tax
|
||||
jsr bitmap_plot
|
||||
inc idx_x
|
||||
bne !+
|
||||
inc idx_x+1
|
||||
!:
|
||||
lda idx_x+1
|
||||
cmp #>$200
|
||||
bne b3
|
||||
lda idx_x
|
||||
cmp #<$200
|
||||
bne b3
|
||||
lda #0
|
||||
sta idx_x
|
||||
sta idx_x+1
|
||||
b3:
|
||||
inc idx_y
|
||||
bne !+
|
||||
inc idx_y+1
|
||||
!:
|
||||
lda idx_y+1
|
||||
cmp #>$200
|
||||
bne b4
|
||||
lda idx_y
|
||||
cmp #<$200
|
||||
bne b4
|
||||
lda #0
|
||||
sta idx_y
|
||||
sta idx_y+1
|
||||
b4:
|
||||
ldx frame_cnt
|
||||
inc plots_per_frame,x
|
||||
jmp b2
|
||||
}
|
||||
// Plot a single dot in the bitmap
|
||||
// bitmap_plot(word zeropage($32) x, byte register(X) y)
|
||||
bitmap_plot: {
|
||||
.label _1 = $38
|
||||
.label plotter = $36
|
||||
.label x = $32
|
||||
.label _3 = $36
|
||||
lda bitmap_plot_yhi,x
|
||||
sta _3+1
|
||||
lda bitmap_plot_ylo,x
|
||||
sta _3
|
||||
lda x
|
||||
and #<$fff8
|
||||
sta _1
|
||||
lda x+1
|
||||
and #>$fff8
|
||||
sta _1+1
|
||||
lda plotter
|
||||
clc
|
||||
adc _1
|
||||
sta plotter
|
||||
lda plotter+1
|
||||
adc _1+1
|
||||
sta plotter+1
|
||||
lda x
|
||||
tay
|
||||
lda bitmap_plot_bit,y
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
sta (plotter),y
|
||||
rts
|
||||
}
|
||||
// Multiply of two signed words to a signed double word
|
||||
// Fixes offsets introduced by using unsigned multiplication
|
||||
// mul16s(signed word zeropage(6) a, signed word zeropage(8) b)
|
||||
mul16s: {
|
||||
.label _9 = $3a
|
||||
.label _13 = $3c
|
||||
.label _16 = $3a
|
||||
.label _17 = 6
|
||||
.label m = $a
|
||||
.label return = $a
|
||||
.label a = 6
|
||||
.label b = 8
|
||||
lda b
|
||||
sta mul16u.mb
|
||||
lda b+1
|
||||
sta mul16u.mb+1
|
||||
lda #0
|
||||
sta mul16u.mb+2
|
||||
sta mul16u.mb+3
|
||||
lda a
|
||||
sta mul16u.a
|
||||
lda a+1
|
||||
sta mul16u.a+1
|
||||
jsr mul16u
|
||||
lda a+1
|
||||
bpl b1
|
||||
lda m+2
|
||||
sta _9
|
||||
lda m+3
|
||||
sta _9+1
|
||||
lda _16
|
||||
sec
|
||||
sbc b
|
||||
sta _16
|
||||
lda _16+1
|
||||
sbc b+1
|
||||
sta _16+1
|
||||
lda _16
|
||||
sta m+2
|
||||
lda _16+1
|
||||
sta m+3
|
||||
b1:
|
||||
lda b+1
|
||||
bpl b2
|
||||
lda m+2
|
||||
sta _13
|
||||
lda m+3
|
||||
sta _13+1
|
||||
lda _13
|
||||
sec
|
||||
sbc _17
|
||||
sta _17
|
||||
lda _13+1
|
||||
sbc _17+1
|
||||
sta _17+1
|
||||
lda _17
|
||||
sta m+2
|
||||
lda _17+1
|
||||
sta m+3
|
||||
b2:
|
||||
rts
|
||||
}
|
||||
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
|
||||
// mul16u(word zeropage($10) a, word zeropage($e) b)
|
||||
mul16u: {
|
||||
.label mb = $12
|
||||
.label a = $10
|
||||
.label res = $a
|
||||
.label return = $a
|
||||
.label b = $e
|
||||
lda #0
|
||||
sta res
|
||||
sta res+1
|
||||
sta res+2
|
||||
sta res+3
|
||||
b1:
|
||||
lda a
|
||||
bne b2
|
||||
lda a+1
|
||||
bne b2
|
||||
rts
|
||||
b2:
|
||||
lda a
|
||||
and #1
|
||||
cmp #0
|
||||
beq b3
|
||||
lda res
|
||||
clc
|
||||
adc mb
|
||||
sta res
|
||||
lda res+1
|
||||
adc mb+1
|
||||
sta res+1
|
||||
lda res+2
|
||||
adc mb+2
|
||||
sta res+2
|
||||
lda res+3
|
||||
adc mb+3
|
||||
sta res+3
|
||||
b3:
|
||||
lsr a+1
|
||||
ror a
|
||||
asl mb
|
||||
rol mb+1
|
||||
rol mb+2
|
||||
rol mb+3
|
||||
jmp b1
|
||||
}
|
||||
// Setup the IRQ
|
||||
init_irq: {
|
||||
sei
|
||||
// Disable kernal & basic
|
||||
lda #PROCPORT_DDR_MEMORY_MASK
|
||||
sta PROCPORT_DDR
|
||||
lda #PROCPORT_RAM_IO
|
||||
sta PROCPORT
|
||||
// Disable CIA 1 Timer IRQ
|
||||
lda #CIA_INTERRUPT_CLEAR
|
||||
sta CIA1_INTERRUPT
|
||||
// Set raster line to $100
|
||||
lda #$80
|
||||
ora VIC_CONTROL
|
||||
sta VIC_CONTROL
|
||||
lda #0
|
||||
sta RASTER
|
||||
// Enable Raster Interrupt
|
||||
lda #IRQ_RASTER
|
||||
sta IRQ_ENABLE
|
||||
// Set the IRQ routine
|
||||
lda #<irq
|
||||
sta HARDWARE_IRQ
|
||||
lda #>irq
|
||||
sta HARDWARE_IRQ+1
|
||||
cli
|
||||
rts
|
||||
}
|
||||
// Clear all graphics on the bitmap
|
||||
// bgcol - the background color to fill the screen with
|
||||
// fgcol - the foreground color to fill the screen with
|
||||
bitmap_clear: {
|
||||
.const col = WHITE*$10
|
||||
ldx #col
|
||||
lda #<$3e8
|
||||
sta memset.num
|
||||
lda #>$3e8
|
||||
sta memset.num+1
|
||||
lda #<SCREEN
|
||||
sta memset.str
|
||||
lda #>SCREEN
|
||||
sta memset.str+1
|
||||
jsr memset
|
||||
ldx #0
|
||||
lda #<$1f40
|
||||
sta memset.num
|
||||
lda #>$1f40
|
||||
sta memset.num+1
|
||||
lda #<BITMAP
|
||||
sta memset.str
|
||||
lda #>BITMAP
|
||||
sta memset.str+1
|
||||
jsr memset
|
||||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// memset(void* zeropage($16) str, byte register(X) c, word zeropage($18) num)
|
||||
memset: {
|
||||
.label end = $18
|
||||
.label dst = $16
|
||||
.label str = $16
|
||||
.label num = $18
|
||||
lda end
|
||||
clc
|
||||
adc str
|
||||
sta end
|
||||
lda end+1
|
||||
adc str+1
|
||||
sta end+1
|
||||
b1:
|
||||
txa
|
||||
ldy #0
|
||||
sta (dst),y
|
||||
inc dst
|
||||
bne !+
|
||||
inc dst+1
|
||||
!:
|
||||
lda dst+1
|
||||
cmp end+1
|
||||
bne b1
|
||||
lda dst
|
||||
cmp end
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
// Initialize bitmap plotting tables
|
||||
bitmap_init: {
|
||||
.label _7 = $3e
|
||||
.label yoffs = $1a
|
||||
ldx #0
|
||||
lda #$80
|
||||
b1:
|
||||
sta bitmap_plot_bit,x
|
||||
lsr
|
||||
cmp #0
|
||||
bne b2
|
||||
lda #$80
|
||||
b2:
|
||||
inx
|
||||
cpx #0
|
||||
bne b1
|
||||
lda #<BITMAP
|
||||
sta yoffs
|
||||
lda #>BITMAP
|
||||
sta yoffs+1
|
||||
ldx #0
|
||||
b3:
|
||||
lda #7
|
||||
sax _7
|
||||
lda yoffs
|
||||
ora _7
|
||||
sta bitmap_plot_ylo,x
|
||||
lda yoffs+1
|
||||
sta bitmap_plot_yhi,x
|
||||
lda #7
|
||||
cmp _7
|
||||
bne b4
|
||||
clc
|
||||
lda yoffs
|
||||
adc #<$28*8
|
||||
sta yoffs
|
||||
lda yoffs+1
|
||||
adc #>$28*8
|
||||
sta yoffs+1
|
||||
b4:
|
||||
inx
|
||||
cpx #0
|
||||
bne b3
|
||||
rts
|
||||
}
|
||||
// Generate signed word sinus table - with values in the range min-max.
|
||||
// sintab - the table to generate into
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zeropage($20) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label _5 = $a
|
||||
.label _6 = $43
|
||||
.label step = $3f
|
||||
.label sintab = $20
|
||||
.label x = $1c
|
||||
.label i = $22
|
||||
jsr div32u16u
|
||||
lda #0
|
||||
sta i
|
||||
sta i+1
|
||||
lda #<SINUS
|
||||
sta sintab
|
||||
lda #>SINUS
|
||||
sta sintab+1
|
||||
lda #0
|
||||
sta x
|
||||
sta x+1
|
||||
sta x+2
|
||||
sta x+3
|
||||
// u[4.28]
|
||||
b1:
|
||||
lda x
|
||||
sta sin16s.x
|
||||
lda x+1
|
||||
sta sin16s.x+1
|
||||
lda x+2
|
||||
sta sin16s.x+2
|
||||
lda x+3
|
||||
sta sin16s.x+3
|
||||
jsr sin16s
|
||||
lda #<ampl
|
||||
sta mul16s.b
|
||||
lda #>ampl
|
||||
sta mul16s.b+1
|
||||
jsr mul16s
|
||||
lda _5+2
|
||||
sta _6
|
||||
lda _5+3
|
||||
sta _6+1
|
||||
ldy #0
|
||||
lda _6
|
||||
sta (sintab),y
|
||||
iny
|
||||
lda _6+1
|
||||
sta (sintab),y
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc sintab
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
!:
|
||||
lda x
|
||||
clc
|
||||
adc step
|
||||
sta x
|
||||
lda x+1
|
||||
adc step+1
|
||||
sta x+1
|
||||
lda x+2
|
||||
adc step+2
|
||||
sta x+2
|
||||
lda x+3
|
||||
adc step+3
|
||||
sta x+3
|
||||
inc i
|
||||
bne !+
|
||||
inc i+1
|
||||
!:
|
||||
lda i+1
|
||||
cmp #>wavelength
|
||||
bcc b1
|
||||
bne !+
|
||||
lda i
|
||||
cmp #<wavelength
|
||||
bcc b1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
// Calculate signed word sinus sin(x)
|
||||
// x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28
|
||||
// result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff
|
||||
// sin16s(dword zeropage($25) x)
|
||||
sin16s: {
|
||||
.label _4 = $25
|
||||
.label x = $25
|
||||
.label return = 6
|
||||
.label x1 = $45
|
||||
.label x2 = $29
|
||||
.label x3 = $29
|
||||
.label x3_6 = $47
|
||||
.label usinx = 6
|
||||
.label x4 = $29
|
||||
.label x5 = $47
|
||||
.label x5_128 = $47
|
||||
.label sinx = 6
|
||||
.label isUpper = $24
|
||||
lda x+3
|
||||
cmp #>PI_u4f28>>$10
|
||||
bcc b4
|
||||
bne !+
|
||||
lda x+2
|
||||
cmp #<PI_u4f28>>$10
|
||||
bcc b4
|
||||
bne !+
|
||||
lda x+1
|
||||
cmp #>PI_u4f28
|
||||
bcc b4
|
||||
bne !+
|
||||
lda x
|
||||
cmp #<PI_u4f28
|
||||
bcc b4
|
||||
!:
|
||||
lda x
|
||||
sec
|
||||
sbc #<PI_u4f28
|
||||
sta x
|
||||
lda x+1
|
||||
sbc #>PI_u4f28
|
||||
sta x+1
|
||||
lda x+2
|
||||
sbc #<PI_u4f28>>$10
|
||||
sta x+2
|
||||
lda x+3
|
||||
sbc #>PI_u4f28>>$10
|
||||
sta x+3
|
||||
lda #1
|
||||
sta isUpper
|
||||
jmp b1
|
||||
b4:
|
||||
lda #0
|
||||
sta isUpper
|
||||
b1:
|
||||
lda x+3
|
||||
cmp #>PI_HALF_u4f28>>$10
|
||||
bcc b2
|
||||
bne !+
|
||||
lda x+2
|
||||
cmp #<PI_HALF_u4f28>>$10
|
||||
bcc b2
|
||||
bne !+
|
||||
lda x+1
|
||||
cmp #>PI_HALF_u4f28
|
||||
bcc b2
|
||||
bne !+
|
||||
lda x
|
||||
cmp #<PI_HALF_u4f28
|
||||
bcc b2
|
||||
!:
|
||||
lda #<PI_u4f28
|
||||
sec
|
||||
sbc x
|
||||
sta x
|
||||
lda #>PI_u4f28
|
||||
sbc x+1
|
||||
sta x+1
|
||||
lda #<PI_u4f28>>$10
|
||||
sbc x+2
|
||||
sta x+2
|
||||
lda #>PI_u4f28>>$10
|
||||
sbc x+3
|
||||
sta x+3
|
||||
b2:
|
||||
ldy #3
|
||||
!:
|
||||
asl _4
|
||||
rol _4+1
|
||||
rol _4+2
|
||||
rol _4+3
|
||||
dey
|
||||
bne !-
|
||||
lda _4+2
|
||||
sta x1
|
||||
lda _4+3
|
||||
sta x1+1
|
||||
lda x1
|
||||
sta mulu16_sel.v1
|
||||
lda x1+1
|
||||
sta mulu16_sel.v1+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return
|
||||
sta x2
|
||||
lda mulu16_sel.return+1
|
||||
sta x2+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #1
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return
|
||||
sta mulu16_sel.return_1
|
||||
lda mulu16_sel.return+1
|
||||
sta mulu16_sel.return_1+1
|
||||
ldx #1
|
||||
lda #<$10000/6
|
||||
sta mulu16_sel.v2
|
||||
lda #>$10000/6
|
||||
sta mulu16_sel.v2+1
|
||||
jsr mulu16_sel
|
||||
lda x1
|
||||
sec
|
||||
sbc x3_6
|
||||
sta usinx
|
||||
lda x1+1
|
||||
sbc x3_6+1
|
||||
sta usinx+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return
|
||||
sta mulu16_sel.return_10
|
||||
lda mulu16_sel.return+1
|
||||
sta mulu16_sel.return_10+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
lsr x5_128+1
|
||||
ror x5_128
|
||||
lsr x5_128+1
|
||||
ror x5_128
|
||||
lsr x5_128+1
|
||||
ror x5_128
|
||||
lsr x5_128+1
|
||||
ror x5_128
|
||||
lda usinx
|
||||
clc
|
||||
adc x5_128
|
||||
sta usinx
|
||||
lda usinx+1
|
||||
adc x5_128+1
|
||||
sta usinx+1
|
||||
lda isUpper
|
||||
cmp #0
|
||||
beq b3
|
||||
sec
|
||||
lda #0
|
||||
sbc sinx
|
||||
sta sinx
|
||||
lda #0
|
||||
sbc sinx+1
|
||||
sta sinx+1
|
||||
b3:
|
||||
rts
|
||||
}
|
||||
// Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result.
|
||||
// The select parameter indicates how many of the highest bits of the 32-bit result to skip
|
||||
// mulu16_sel(word zeropage($29) v1, word zeropage($e) v2, byte register(X) select)
|
||||
mulu16_sel: {
|
||||
.label _0 = $a
|
||||
.label _1 = $a
|
||||
.label v1 = $29
|
||||
.label v2 = $e
|
||||
.label return = $47
|
||||
.label return_1 = $29
|
||||
.label return_10 = $29
|
||||
lda v1
|
||||
sta mul16u.a
|
||||
lda v1+1
|
||||
sta mul16u.a+1
|
||||
lda mul16u.b
|
||||
sta mul16u.mb
|
||||
lda mul16u.b+1
|
||||
sta mul16u.mb+1
|
||||
lda #0
|
||||
sta mul16u.mb+2
|
||||
sta mul16u.mb+3
|
||||
jsr mul16u
|
||||
cpx #0
|
||||
beq !e+
|
||||
!:
|
||||
asl _1
|
||||
rol _1+1
|
||||
rol _1+2
|
||||
rol _1+3
|
||||
dex
|
||||
bne !-
|
||||
!e:
|
||||
lda _1+2
|
||||
sta return
|
||||
lda _1+3
|
||||
sta return+1
|
||||
rts
|
||||
}
|
||||
// Divide unsigned 32-bit dword dividend with a 16-bit word divisor
|
||||
// The 16-bit word remainder can be found in rem16u after the division
|
||||
div32u16u: {
|
||||
.label quotient_hi = $49
|
||||
.label quotient_lo = $2f
|
||||
.label return = $3f
|
||||
lda #<PI2_u4f28>>$10
|
||||
sta divr16u.dividend
|
||||
lda #>PI2_u4f28>>$10
|
||||
sta divr16u.dividend+1
|
||||
lda #0
|
||||
sta divr16u.rem
|
||||
sta divr16u.rem+1
|
||||
jsr divr16u
|
||||
lda divr16u.return
|
||||
sta quotient_hi
|
||||
lda divr16u.return+1
|
||||
sta quotient_hi+1
|
||||
lda #<PI2_u4f28&$ffff
|
||||
sta divr16u.dividend
|
||||
lda #>PI2_u4f28&$ffff
|
||||
sta divr16u.dividend+1
|
||||
jsr divr16u
|
||||
lda quotient_hi
|
||||
sta return+2
|
||||
lda quotient_hi+1
|
||||
sta return+3
|
||||
lda quotient_lo
|
||||
sta return
|
||||
lda quotient_lo+1
|
||||
sta return+1
|
||||
rts
|
||||
}
|
||||
// Performs division on two 16 bit unsigned words and an initial remainder
|
||||
// Returns the quotient dividend/divisor.
|
||||
// The final remainder will be set into the global variable rem16u
|
||||
// Implemented using simple binary division
|
||||
// divr16u(word zeropage($2d) dividend, word zeropage($2b) rem)
|
||||
divr16u: {
|
||||
.label rem = $2b
|
||||
.label dividend = $2d
|
||||
.label quotient = $2f
|
||||
.label return = $2f
|
||||
ldx #0
|
||||
txa
|
||||
sta quotient
|
||||
sta quotient+1
|
||||
b1:
|
||||
asl rem
|
||||
rol rem+1
|
||||
lda dividend+1
|
||||
and #$80
|
||||
cmp #0
|
||||
beq b2
|
||||
lda #1
|
||||
ora rem
|
||||
sta rem
|
||||
b2:
|
||||
asl dividend
|
||||
rol dividend+1
|
||||
asl quotient
|
||||
rol quotient+1
|
||||
lda rem+1
|
||||
cmp #>sin16s_gen2.wavelength
|
||||
bcc b3
|
||||
bne !+
|
||||
lda rem
|
||||
cmp #<sin16s_gen2.wavelength
|
||||
bcc b3
|
||||
!:
|
||||
inc quotient
|
||||
bne !+
|
||||
inc quotient+1
|
||||
!:
|
||||
lda rem
|
||||
sec
|
||||
sbc #<sin16s_gen2.wavelength
|
||||
sta rem
|
||||
lda rem+1
|
||||
sbc #>sin16s_gen2.wavelength
|
||||
sta rem+1
|
||||
b3:
|
||||
inx
|
||||
cpx #$10
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
// Interrupt Routine counting frames
|
||||
irq: {
|
||||
sta rega+1
|
||||
lda #WHITE
|
||||
sta BGCOL
|
||||
lda #0
|
||||
cmp frame_cnt
|
||||
beq b1
|
||||
inc frame_cnt
|
||||
b1:
|
||||
lda #BLACK
|
||||
sta BGCOL
|
||||
// Acknowledge the IRQ
|
||||
lda #IRQ_RASTER
|
||||
sta IRQ_STATUS
|
||||
rega:
|
||||
lda #00
|
||||
rti
|
||||
}
|
||||
// Tables for the plotter - initialized by calling bitmap_init();
|
||||
bitmap_plot_ylo: .fill $100, 0
|
||||
bitmap_plot_yhi: .fill $100, 0
|
||||
bitmap_plot_bit: .fill $100, 0
|
||||
plots_per_frame: .fill $100, 0
|
||||
.align $100
|
||||
SINUS: .fill 2*$200, 0
|
426
src/test/ref/bitmap-plot-1.cfg
Normal file
426
src/test/ref/bitmap-plot-1.cfg
Normal file
@ -0,0 +1,426 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] (byte) frame_cnt#0 ← (byte) 1
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
[2] phi()
|
||||
[3] call main
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
[4] phi()
|
||||
main: scope:[main] from @2
|
||||
[5] phi()
|
||||
[6] call sin16s_gen2
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main
|
||||
[7] phi()
|
||||
[8] call bitmap_init
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@6
|
||||
[9] phi()
|
||||
[10] call bitmap_clear
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@7
|
||||
[11] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3
|
||||
to:main::toD0181
|
||||
main::toD0181: scope:[main] from main::@8
|
||||
[12] phi()
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::toD0181
|
||||
[13] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
|
||||
[14] call init_irq
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@4 main::@5
|
||||
[15] (word) main::idx_y#3 ← phi( main::@5/(byte) $80 main::@4/(word) main::idx_y#10 )
|
||||
[15] (word) main::idx_x#3 ← phi( main::@5/(byte) 0 main::@4/(word) main::idx_x#10 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[16] (word~) main::$24 ← (word) main::idx_x#3 << (byte) 1
|
||||
[17] (signed word*~) main::$26 ← (const signed word[$200]) SINUS#0 + (word~) main::$24
|
||||
[18] (signed word) main::cos_x#0 ← *((signed word*~) main::$26)
|
||||
[19] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0
|
||||
[20] call mul16s
|
||||
[21] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@2
|
||||
[22] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3
|
||||
[23] (signed dword~) main::$9 ← (signed dword) main::xpos#0 << (signed byte) 4
|
||||
[24] (word~) main::$10 ← > (signed dword~) main::$9
|
||||
[25] (word) main::x#0 ← (byte) $a0 + (word~) main::$10
|
||||
[26] (word~) main::$25 ← (word) main::idx_y#3 << (byte) 1
|
||||
[27] (signed word*~) main::$27 ← (const signed word[$200]) SINUS#0 + (word~) main::$25
|
||||
[28] (signed word) main::sin_y#0 ← *((signed word*~) main::$27)
|
||||
[29] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0
|
||||
[30] call mul16s
|
||||
[31] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@9
|
||||
[32] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4
|
||||
[33] (signed dword~) main::$14 ← (signed dword) main::ypos#0 << (signed byte) 4
|
||||
[34] (word~) main::$15 ← > (signed dword~) main::$14
|
||||
[35] (word) main::y#0 ← (byte) $64 + (word~) main::$15
|
||||
[36] (byte) bitmap_plot::y#0 ← (byte)(word) main::y#0
|
||||
[37] (word) bitmap_plot::x#0 ← (word) main::x#0
|
||||
[38] call bitmap_plot
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
[39] (word) main::idx_x#1 ← ++ (word) main::idx_x#3
|
||||
[40] if((word) main::idx_x#1!=(word) $200) goto main::@12
|
||||
to:main::@3
|
||||
main::@12: scope:[main] from main::@11
|
||||
[41] phi()
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@11 main::@12
|
||||
[42] (word) main::idx_x#10 ← phi( main::@12/(word) main::idx_x#1 main::@11/(byte) 0 )
|
||||
[43] (word) main::idx_y#1 ← ++ (word) main::idx_y#3
|
||||
[44] if((word) main::idx_y#1!=(word) $200) goto main::@13
|
||||
to:main::@4
|
||||
main::@13: scope:[main] from main::@3
|
||||
[45] phi()
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@13 main::@3
|
||||
[46] (word) main::idx_y#10 ← phi( main::@13/(word) main::idx_y#1 main::@3/(byte) 0 )
|
||||
[47] *((const byte[$100]) plots_per_frame#0 + (byte) frame_cnt#0) ← ++ *((const byte[$100]) plots_per_frame#0 + (byte) frame_cnt#0)
|
||||
to:main::@1
|
||||
bitmap_plot: scope:[bitmap_plot] from main::@10
|
||||
[48] (word~) bitmap_plot::$3 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0)
|
||||
[49] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8
|
||||
[50] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1
|
||||
[51] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0
|
||||
[52] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
[53] return
|
||||
to:@return
|
||||
mul16s: scope:[mul16s] from main::@2 main::@9 sin16s_gen2::@3
|
||||
[54] (signed word) mul16s::b#3 ← phi( main::@9/(signed word) mul16s::b#2 main::@2/(signed word) mul16s::b#1 sin16s_gen2::@3/(const signed word) sin16s_gen2::ampl#0 )
|
||||
[54] (signed word) mul16s::a#3 ← phi( main::@9/(signed byte) $64 main::@2/(signed word) $a0 sin16s_gen2::@3/(signed word) mul16s::a#0 )
|
||||
[55] (dword~) mul16u::mb#6 ← (word)(signed word) mul16s::b#3
|
||||
[56] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#3
|
||||
[57] call mul16u
|
||||
[58] (dword) mul16u::return#2 ← (dword) mul16u::res#2
|
||||
to:mul16s::@5
|
||||
mul16s::@5: scope:[mul16s] from mul16s
|
||||
[59] (dword) mul16s::m#0 ← (dword) mul16u::return#2
|
||||
[60] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1
|
||||
to:mul16s::@3
|
||||
mul16s::@3: scope:[mul16s] from mul16s::@5
|
||||
[61] (word~) mul16s::$9 ← > (dword) mul16s::m#0
|
||||
[62] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3
|
||||
[63] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
to:mul16s::@1
|
||||
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@5
|
||||
[64] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 )
|
||||
[65] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2
|
||||
to:mul16s::@4
|
||||
mul16s::@4: scope:[mul16s] from mul16s::@1
|
||||
[66] (word~) mul16s::$13 ← > (dword) mul16s::m#5
|
||||
[67] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3
|
||||
[68] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17
|
||||
to:mul16s::@2
|
||||
mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4
|
||||
[69] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 )
|
||||
[70] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
|
||||
to:mul16s::@return
|
||||
mul16s::@return: scope:[mul16s] from mul16s::@2
|
||||
[71] return
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
||||
[72] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[72] (dword) mul16u::mb#0 ← phi( mul16s/(dword~) mul16u::mb#6 mulu16_sel/(word) mul16u::b#1 )
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@3
|
||||
[73] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
|
||||
[73] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
|
||||
[73] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
|
||||
[74] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[75] return
|
||||
to:@return
|
||||
mul16u::@2: scope:[mul16u] from mul16u::@1
|
||||
[76] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
|
||||
[77] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
|
||||
to:mul16u::@4
|
||||
mul16u::@4: scope:[mul16u] from mul16u::@2
|
||||
[78] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
to:mul16u::@3
|
||||
mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4
|
||||
[79] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
|
||||
[80] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
|
||||
[81] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
|
||||
to:mul16u::@1
|
||||
init_irq: scope:[init_irq] from main::@5
|
||||
asm { sei }
|
||||
[83] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
[84] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
||||
[85] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
|
||||
[86] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte) $80
|
||||
[87] *((const byte*) RASTER#0) ← (byte) 0
|
||||
[88] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
|
||||
[89] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
asm { cli }
|
||||
to:init_irq::@return
|
||||
init_irq::@return: scope:[init_irq] from init_irq
|
||||
[91] return
|
||||
to:@return
|
||||
bitmap_clear: scope:[bitmap_clear] from main::@7
|
||||
[92] phi()
|
||||
[93] call memset
|
||||
to:bitmap_clear::@1
|
||||
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear
|
||||
[94] phi()
|
||||
[95] call memset
|
||||
to:bitmap_clear::@return
|
||||
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1
|
||||
[96] return
|
||||
to:@return
|
||||
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
|
||||
[97] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
|
||||
[97] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
|
||||
[97] (void*) memset::str#2 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 )
|
||||
[98] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2
|
||||
[99] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2
|
||||
to:memset::@1
|
||||
memset::@1: scope:[memset] from memset memset::@1
|
||||
[100] (byte*) memset::dst#2 ← phi( memset/(byte*~) memset::dst#3 memset::@1/(byte*) memset::dst#1 )
|
||||
[101] *((byte*) memset::dst#2) ← (byte) memset::c#3
|
||||
[102] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
||||
[103] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1
|
||||
to:memset::@return
|
||||
memset::@return: scope:[memset] from memset::@1
|
||||
[104] return
|
||||
to:@return
|
||||
bitmap_init: scope:[bitmap_init] from main::@6
|
||||
[105] phi()
|
||||
to:bitmap_init::@1
|
||||
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
|
||||
[106] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
||||
[106] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
||||
[107] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
||||
[108] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
|
||||
[109] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
|
||||
to:bitmap_init::@2
|
||||
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1
|
||||
[110] phi()
|
||||
to:bitmap_init::@2
|
||||
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6
|
||||
[111] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
|
||||
[112] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
|
||||
[113] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
|
||||
to:bitmap_init::@3
|
||||
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
|
||||
[114] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
|
||||
[114] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
|
||||
[115] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
|
||||
[116] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
||||
[117] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
|
||||
[118] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
|
||||
[119] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
||||
[120] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
||||
[121] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
|
||||
to:bitmap_init::@5
|
||||
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3
|
||||
[122] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
|
||||
to:bitmap_init::@4
|
||||
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5
|
||||
[123] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
|
||||
[124] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
|
||||
[125] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
|
||||
to:bitmap_init::@return
|
||||
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
|
||||
[126] return
|
||||
to:@return
|
||||
sin16s_gen2: scope:[sin16s_gen2] from main
|
||||
[127] phi()
|
||||
[128] call div32u16u
|
||||
[129] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
|
||||
to:sin16s_gen2::@2
|
||||
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2
|
||||
[130] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
|
||||
to:sin16s_gen2::@1
|
||||
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@2 sin16s_gen2::@4
|
||||
[131] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 )
|
||||
[131] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[$200]) SINUS#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 )
|
||||
[131] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 )
|
||||
[132] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
|
||||
[133] call sin16s
|
||||
[134] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
|
||||
to:sin16s_gen2::@3
|
||||
sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2::@1
|
||||
[135] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
|
||||
[136] call mul16s
|
||||
[137] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
|
||||
to:sin16s_gen2::@4
|
||||
sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@3
|
||||
[138] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2
|
||||
[139] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5
|
||||
[140] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$6
|
||||
[141] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[142] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
|
||||
[143] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
|
||||
[144] if((word) sin16s_gen2::i#1<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@1
|
||||
to:sin16s_gen2::@return
|
||||
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@4
|
||||
[145] return
|
||||
to:@return
|
||||
sin16s: scope:[sin16s] from sin16s_gen2::@1
|
||||
[146] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
to:sin16s::@4
|
||||
sin16s::@4: scope:[sin16s] from sin16s
|
||||
[147] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
to:sin16s::@1
|
||||
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
||||
[148] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
|
||||
[148] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[149] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
to:sin16s::@5
|
||||
sin16s::@5: scope:[sin16s] from sin16s::@1
|
||||
[150] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
to:sin16s::@2
|
||||
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
||||
[151] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[152] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
|
||||
[153] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
|
||||
[154] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[155] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[156] call mulu16_sel
|
||||
[157] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@7
|
||||
sin16s::@7: scope:[sin16s] from sin16s::@2
|
||||
[158] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[159] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[160] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[161] call mulu16_sel
|
||||
[162] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@8
|
||||
sin16s::@8: scope:[sin16s] from sin16s::@7
|
||||
[163] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[164] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[165] call mulu16_sel
|
||||
[166] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@9
|
||||
sin16s::@9: scope:[sin16s] from sin16s::@8
|
||||
[167] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[168] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[169] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[170] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[171] call mulu16_sel
|
||||
[172] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@10
|
||||
sin16s::@10: scope:[sin16s] from sin16s::@9
|
||||
[173] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[174] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[175] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[176] call mulu16_sel
|
||||
[177] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@11
|
||||
sin16s::@11: scope:[sin16s] from sin16s::@10
|
||||
[178] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[179] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
|
||||
[180] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[181] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
|
||||
to:sin16s::@6
|
||||
sin16s::@6: scope:[sin16s] from sin16s::@11
|
||||
[182] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6
|
||||
[183] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
to:sin16s::@return
|
||||
sin16s::@return: scope:[sin16s] from sin16s::@3
|
||||
[184] return
|
||||
to:@return
|
||||
sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
[185] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
|
||||
[186] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
|
||||
[186] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
|
||||
[186] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
|
||||
[187] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[188] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[189] call mul16u
|
||||
[190] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
to:mulu16_sel::@1
|
||||
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel
|
||||
[191] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[192] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[193] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
to:mulu16_sel::@return
|
||||
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1
|
||||
[194] return
|
||||
to:@return
|
||||
div32u16u: scope:[div32u16u] from sin16s_gen2
|
||||
[195] phi()
|
||||
[196] call divr16u
|
||||
[197] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
to:div32u16u::@1
|
||||
div32u16u::@1: scope:[div32u16u] from div32u16u
|
||||
[198] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[199] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[200] call divr16u
|
||||
[201] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
to:div32u16u::@2
|
||||
div32u16u::@2: scope:[div32u16u] from div32u16u::@1
|
||||
[202] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[203] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
to:div32u16u::@return
|
||||
div32u16u::@return: scope:[div32u16u] from div32u16u::@2
|
||||
[204] return
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div32u16u div32u16u::@1
|
||||
[205] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
|
||||
[205] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[206] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[206] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[206] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[206] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[207] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
|
||||
[208] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[209] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
|
||||
[210] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[211] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[212] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[213] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
|
||||
[214] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
|
||||
[215] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[216] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[217] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[218] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[218] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[219] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[220] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
|
||||
to:divr16u::@6
|
||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||
[221] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||
[222] return
|
||||
to:@return
|
||||
irq: scope:[irq] from
|
||||
[223] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
|
||||
[224] if((byte) 0==(byte) frame_cnt#0) goto irq::@1
|
||||
to:irq::@2
|
||||
irq::@2: scope:[irq] from irq
|
||||
[225] (byte) frame_cnt#1 ← ++ (byte) frame_cnt#0
|
||||
to:irq::@1
|
||||
irq::@1: scope:[irq] from irq irq::@2
|
||||
[226] (byte) frame_cnt#10 ← phi( irq/(byte) frame_cnt#0 irq::@2/(byte) frame_cnt#1 )
|
||||
[227] *((const byte*) BGCOL#0) ← (const byte) BLACK#0
|
||||
[228] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
|
||||
to:irq::@return
|
||||
irq::@return: scope:[irq] from irq::@1
|
||||
[229] return
|
||||
to:@return
|
9975
src/test/ref/bitmap-plot-1.log
Normal file
9975
src/test/ref/bitmap-plot-1.log
Normal file
File diff suppressed because it is too large
Load Diff
453
src/test/ref/bitmap-plot-1.sym
Normal file
453
src/test/ref/bitmap-plot-1.sym
Normal file
@ -0,0 +1,453 @@
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = (byte*) 53281
|
||||
(byte*) BITMAP
|
||||
(const byte*) BITMAP#0 BITMAP = (byte*) 8192
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte) 0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = (byte*) 56333
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte) $7f
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = (byte*) 53265
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = (byte*) 53272
|
||||
(void()**) HARDWARE_IRQ
|
||||
(const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = (void()**) 65534
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = (byte*) 53274
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte) 1
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = (byte*) 53273
|
||||
(dword) PI2_u4f28
|
||||
(const dword) PI2_u4f28#0 PI2_u4f28 = (dword) $6487ed51
|
||||
(dword) PI_HALF_u4f28
|
||||
(const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword) $1921fb54
|
||||
(dword) PI_u4f28
|
||||
(const dword) PI_u4f28#0 PI_u4f28 = (dword) $3243f6a9
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = (byte*) 1
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = (byte*) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte) 7
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte) $35
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = (byte*) 53266
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = (byte*) 1024
|
||||
(signed word[$200]) SINUS
|
||||
(const signed word[$200]) SINUS#0 SINUS = { fill( $200, 0) }
|
||||
(const byte) SIZEOF_SIGNED_WORD SIZEOF_SIGNED_WORD = (byte) 2
|
||||
(byte) VIC_BMM
|
||||
(const byte) VIC_BMM#0 VIC_BMM = (byte) $20
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = (byte*) 53265
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte) $10
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte) 8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte) 1
|
||||
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
|
||||
(label) bitmap_clear::@1
|
||||
(label) bitmap_clear::@return
|
||||
(byte) bitmap_clear::bgcol
|
||||
(byte) bitmap_clear::col
|
||||
(const byte) bitmap_clear::col#0 col = (const byte) WHITE#0*(byte) $10
|
||||
(byte) bitmap_clear::fgcol
|
||||
(byte*) bitmap_gfx
|
||||
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
||||
(byte~) bitmap_init::$4 reg byte a 22.0
|
||||
(byte~) bitmap_init::$5 reg byte a 22.0
|
||||
(byte~) bitmap_init::$6 reg byte a 22.0
|
||||
(byte~) bitmap_init::$7 $7 zp ZP_BYTE:62 5.5
|
||||
(label) bitmap_init::@1
|
||||
(label) bitmap_init::@2
|
||||
(label) bitmap_init::@3
|
||||
(label) bitmap_init::@4
|
||||
(label) bitmap_init::@5
|
||||
(label) bitmap_init::@6
|
||||
(label) bitmap_init::@return
|
||||
(byte) bitmap_init::bits
|
||||
(byte) bitmap_init::bits#1 reg byte a 11.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 16.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
|
||||
(byte*) bitmap_init::gfx
|
||||
(byte*) bitmap_init::screen
|
||||
(byte) bitmap_init::x
|
||||
(byte) bitmap_init::x#1 reg byte x 16.5
|
||||
(byte) bitmap_init::x#2 reg byte x 5.5
|
||||
(byte) bitmap_init::y
|
||||
(byte) bitmap_init::y#1 reg byte x 16.5
|
||||
(byte) bitmap_init::y#2 reg byte x 5.5
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:26 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:26 6.875
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:26 11.0
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$1 $1 zp ZP_WORD:56 4.0
|
||||
(byte~) bitmap_plot::$2 reg byte a 4.0
|
||||
(word~) bitmap_plot::$3 $3 zp ZP_WORD:54 1.0
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:54 3.0
|
||||
(word) bitmap_plot::x
|
||||
(word) bitmap_plot::x#0 x zp ZP_WORD:50 3.75
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#0 reg byte x 7.5
|
||||
(byte[$100]) bitmap_plot_bit
|
||||
(const byte[$100]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( $100, 0) }
|
||||
(byte[$100]) bitmap_plot_yhi
|
||||
(const byte[$100]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( $100, 0) }
|
||||
(byte[$100]) bitmap_plot_ylo
|
||||
(const byte[$100]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( $100, 0) }
|
||||
(byte*) bitmap_screen
|
||||
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
||||
(label) div32u16u::@1
|
||||
(label) div32u16u::@2
|
||||
(label) div32u16u::@return
|
||||
(dword) div32u16u::dividend
|
||||
(word) div32u16u::divisor
|
||||
(dword) div32u16u::quotient
|
||||
(word) div32u16u::quotient_hi
|
||||
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:73 0.8
|
||||
(word) div32u16u::quotient_lo
|
||||
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:47 4.0
|
||||
(dword) div32u16u::return
|
||||
(dword) div32u16u::return#0 return zp ZP_DWORD:63 1.3333333333333333
|
||||
(dword) div32u16u::return#2 return zp ZP_DWORD:63 4.0
|
||||
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
||||
(byte~) divr16u::$1 reg byte a 22.0
|
||||
(byte~) divr16u::$2 reg byte a 22.0
|
||||
(label) divr16u::@1
|
||||
(label) divr16u::@2
|
||||
(label) divr16u::@3
|
||||
(label) divr16u::@4
|
||||
(label) divr16u::@5
|
||||
(label) divr16u::@6
|
||||
(label) divr16u::@return
|
||||
(word) divr16u::dividend
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:45 2.75
|
||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:45 5.0
|
||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:45 2.0
|
||||
(word) divr16u::divisor
|
||||
(byte) divr16u::i
|
||||
(byte) divr16u::i#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:47 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:47 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:47 2.75
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:43 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:43 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:43 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:43 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:43 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:43 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:43 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:43 11.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp ZP_WORD:47 5.285714285714286
|
||||
(word) divr16u::return#2 return zp ZP_WORD:47 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:47 4.0
|
||||
(byte) frame_cnt
|
||||
(byte) frame_cnt#0 frame_cnt zp ZP_BYTE:49 0.6382978723404255
|
||||
(byte) frame_cnt#1 frame_cnt zp ZP_BYTE:49 4.0
|
||||
(byte) frame_cnt#10 frame_cnt zp ZP_BYTE:49 40.0
|
||||
(void()) init_irq()
|
||||
(label) init_irq::@return
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) irq::@1
|
||||
(label) irq::@2
|
||||
(label) irq::@return
|
||||
(void()) main()
|
||||
(word~) main::$10 reg byte alu 22.0
|
||||
(signed dword~) main::$14 $14 zp ZP_DWORD:10 22.0
|
||||
(word~) main::$15 reg byte alu 22.0
|
||||
(word~) main::$24 $24 zp ZP_WORD:8 22.0
|
||||
(word~) main::$25 $25 zp ZP_WORD:8 22.0
|
||||
(signed word*~) main::$26 $26 zp ZP_WORD:8 22.0
|
||||
(signed word*~) main::$27 $27 zp ZP_WORD:8 22.0
|
||||
(signed dword~) main::$9 $9 zp ZP_DWORD:10 22.0
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
(label) main::@12
|
||||
(label) main::@13
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@7
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(signed word) main::cos_x
|
||||
(signed word) main::cos_x#0 cos_x zp ZP_WORD:8 22.0
|
||||
(word) main::idx_x
|
||||
(word) main::idx_x#1 idx_x zp ZP_WORD:2 11.0
|
||||
(word) main::idx_x#10 idx_x zp ZP_WORD:2 3.6666666666666665
|
||||
(word) main::idx_x#3 idx_x zp ZP_WORD:2 1.375
|
||||
(word) main::idx_y
|
||||
(word) main::idx_y#1 idx_y zp ZP_WORD:4 11.0
|
||||
(word) main::idx_y#10 idx_y zp ZP_WORD:4 11.0
|
||||
(word) main::idx_y#3 idx_y zp ZP_WORD:4 1.1785714285714286
|
||||
(signed word) main::sin_y
|
||||
(signed word) main::sin_y#0 sin_y zp ZP_WORD:8 22.0
|
||||
(label) main::toD0181
|
||||
(word~) main::toD0181_$0
|
||||
(number~) main::toD0181_$1
|
||||
(number~) main::toD0181_$2
|
||||
(number~) main::toD0181_$3
|
||||
(word~) main::toD0181_$4
|
||||
(byte~) main::toD0181_$5
|
||||
(number~) main::toD0181_$6
|
||||
(number~) main::toD0181_$7
|
||||
(number~) main::toD0181_$8
|
||||
(byte*) main::toD0181_gfx
|
||||
(byte) main::toD0181_return
|
||||
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN#0&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP#0/(byte) 4&(byte) $f
|
||||
(byte*) main::toD0181_screen
|
||||
(word) main::x
|
||||
(word) main::x#0 x zp ZP_WORD:50 1.8333333333333333
|
||||
(signed dword) main::xpos
|
||||
(signed dword) main::xpos#0 xpos zp ZP_DWORD:10 22.0
|
||||
(word) main::y
|
||||
(word) main::y#0 y zp ZP_WORD:52 11.0
|
||||
(signed dword) main::ypos
|
||||
(signed dword) main::ypos#0 ypos zp ZP_DWORD:10 22.0
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(label) memset::@1
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#3 reg byte x 1.5714285714285714
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 dst zp ZP_WORD:22 16.5
|
||||
(byte*) memset::dst#2 dst zp ZP_WORD:22 17.5
|
||||
(byte*~) memset::dst#3 dst zp ZP_WORD:22 4.0
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 end zp ZP_WORD:24 2.1666666666666665
|
||||
(word) memset::num
|
||||
(word) memset::num#2 num zp ZP_WORD:24 2.0
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#2 str zp ZP_WORD:22
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$13 $13 zp ZP_WORD:60 4.0
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:58 4.0
|
||||
(word~) mul16s::$17 $17 zp ZP_WORD:6 4.0
|
||||
(word~) mul16s::$9 $9 zp ZP_WORD:58 4.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
(label) mul16s::@3
|
||||
(label) mul16s::@4
|
||||
(label) mul16s::@5
|
||||
(label) mul16s::@return
|
||||
(signed word) mul16s::a
|
||||
(signed word) mul16s::a#0 a zp ZP_WORD:6 22.0
|
||||
(signed word) mul16s::a#3 a zp ZP_WORD:6 1.0
|
||||
(signed word) mul16s::b
|
||||
(signed word) mul16s::b#1 b zp ZP_WORD:8 22.0
|
||||
(signed word) mul16s::b#2 b zp ZP_WORD:8 22.0
|
||||
(signed word) mul16s::b#3 b zp ZP_WORD:8 2.1818181818181817
|
||||
(dword) mul16s::m
|
||||
(dword) mul16s::m#0 m zp ZP_DWORD:10 2.0
|
||||
(dword) mul16s::m#1 m zp ZP_DWORD:10 4.0
|
||||
(dword) mul16s::m#2 m zp ZP_DWORD:10 4.0
|
||||
(dword) mul16s::m#4 m zp ZP_DWORD:10 4.0
|
||||
(dword) mul16s::m#5 m zp ZP_DWORD:10 2.5
|
||||
(signed dword) mul16s::return
|
||||
(signed dword) mul16s::return#0 return zp ZP_DWORD:10 7.000000000000001
|
||||
(signed dword) mul16s::return#2 return zp ZP_DWORD:10 22.0
|
||||
(signed dword) mul16s::return#3 return zp ZP_DWORD:10 22.0
|
||||
(signed dword) mul16s::return#4 return zp ZP_DWORD:10 22.0
|
||||
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
||||
(byte~) mul16u::$1 reg byte a 202.0
|
||||
(label) mul16u::@1
|
||||
(label) mul16u::@2
|
||||
(label) mul16u::@3
|
||||
(label) mul16u::@4
|
||||
(label) mul16u::@return
|
||||
(word) mul16u::a
|
||||
(word) mul16u::a#0 a zp ZP_WORD:16 101.0
|
||||
(word) mul16u::a#2 a zp ZP_WORD:16 2.0
|
||||
(word) mul16u::a#3 a zp ZP_WORD:16 67.66666666666666
|
||||
(word) mul16u::a#6 a zp ZP_WORD:16 6.0
|
||||
(word~) mul16u::a#8 a zp ZP_WORD:16 4.0
|
||||
(word) mul16u::b
|
||||
(word) mul16u::b#1 b zp ZP_WORD:14 4.0
|
||||
(dword) mul16u::mb
|
||||
(dword) mul16u::mb#0 mb zp ZP_DWORD:18 6.0
|
||||
(dword) mul16u::mb#1 mb zp ZP_DWORD:18 202.0
|
||||
(dword) mul16u::mb#2 mb zp ZP_DWORD:18 43.57142857142858
|
||||
(dword~) mul16u::mb#6 mb zp ZP_DWORD:18 2.0
|
||||
(dword) mul16u::res
|
||||
(dword) mul16u::res#1 res zp ZP_DWORD:10 202.0
|
||||
(dword) mul16u::res#2 res zp ZP_DWORD:10 43.85714285714286
|
||||
(dword) mul16u::res#6 res zp ZP_DWORD:10 101.0
|
||||
(dword) mul16u::return
|
||||
(dword) mul16u::return#2 return zp ZP_DWORD:10 4.0
|
||||
(dword) mul16u::return#3 return zp ZP_DWORD:10 4.0
|
||||
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
||||
(dword~) mulu16_sel::$0 $0 zp ZP_DWORD:10 4.0
|
||||
(dword~) mulu16_sel::$1 $1 zp ZP_DWORD:10 4.0
|
||||
(label) mulu16_sel::@1
|
||||
(label) mulu16_sel::@return
|
||||
(word) mulu16_sel::return
|
||||
(word) mulu16_sel::return#0 return zp ZP_WORD:71 4.0
|
||||
(word) mulu16_sel::return#1 return#1 zp ZP_WORD:41 4.0
|
||||
(word) mulu16_sel::return#10 return#10 zp ZP_WORD:41 4.0
|
||||
(word) mulu16_sel::return#11 return zp ZP_WORD:71 4.0
|
||||
(word) mulu16_sel::return#12 return zp ZP_WORD:71 1.714285714285714
|
||||
(word) mulu16_sel::return#2 return zp ZP_WORD:71 4.0
|
||||
(byte) mulu16_sel::select
|
||||
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
|
||||
(word) mulu16_sel::v1
|
||||
(word) mulu16_sel::v1#0 v1 zp ZP_WORD:41 2.0
|
||||
(word) mulu16_sel::v1#1 v1 zp ZP_WORD:41 2.0
|
||||
(word) mulu16_sel::v1#2 v1 zp ZP_WORD:41 4.0
|
||||
(word) mulu16_sel::v1#3 v1 zp ZP_WORD:41 2.0
|
||||
(word) mulu16_sel::v1#4 v1 zp ZP_WORD:41 2.0
|
||||
(word) mulu16_sel::v1#5 v1 zp ZP_WORD:41 12.0
|
||||
(word) mulu16_sel::v2
|
||||
(word) mulu16_sel::v2#0 v2 zp ZP_WORD:14 4.0
|
||||
(word) mulu16_sel::v2#1 v2 zp ZP_WORD:14 4.0
|
||||
(word) mulu16_sel::v2#3 v2 zp ZP_WORD:14 4.0
|
||||
(word) mulu16_sel::v2#4 v2 zp ZP_WORD:14 4.0
|
||||
(word) mulu16_sel::v2#5 v2 zp ZP_WORD:14 5.0
|
||||
(byte[$100]) plots_per_frame
|
||||
(const byte[$100]) plots_per_frame#0 plots_per_frame = { fill( $100, 0) }
|
||||
(word) rem16u
|
||||
(word) rem16u#1 rem16u zp ZP_WORD:43 0.8
|
||||
(signed word()) sin16s((dword) sin16s::x)
|
||||
(dword~) sin16s::$4 $4 zp ZP_DWORD:37 4.0
|
||||
(label) sin16s::@1
|
||||
(label) sin16s::@10
|
||||
(label) sin16s::@11
|
||||
(label) sin16s::@12
|
||||
(label) sin16s::@2
|
||||
(label) sin16s::@3
|
||||
(label) sin16s::@4
|
||||
(label) sin16s::@5
|
||||
(label) sin16s::@6
|
||||
(label) sin16s::@7
|
||||
(label) sin16s::@8
|
||||
(label) sin16s::@9
|
||||
(label) sin16s::@return
|
||||
(byte) sin16s::isUpper
|
||||
(byte) sin16s::isUpper#2 isUpper zp ZP_BYTE:36 0.06060606060606061
|
||||
(signed word) sin16s::return
|
||||
(signed word) sin16s::return#0 return zp ZP_WORD:6 22.0
|
||||
(signed word) sin16s::return#1 return zp ZP_WORD:6 5.0
|
||||
(signed word~) sin16s::return#5 return zp ZP_WORD:6 4.0
|
||||
(signed word) sin16s::sinx
|
||||
(signed word) sin16s::sinx#1 sinx zp ZP_WORD:6 4.0
|
||||
(word) sin16s::usinx
|
||||
(word) sin16s::usinx#0 usinx zp ZP_WORD:6 0.3333333333333333
|
||||
(word) sin16s::usinx#1 usinx zp ZP_WORD:6 1.0
|
||||
(dword) sin16s::x
|
||||
(dword) sin16s::x#0 x zp ZP_DWORD:37 8.5
|
||||
(dword) sin16s::x#1 x zp ZP_DWORD:37 4.0
|
||||
(dword) sin16s::x#2 x zp ZP_DWORD:37 4.0
|
||||
(dword) sin16s::x#4 x zp ZP_DWORD:37 5.0
|
||||
(dword) sin16s::x#6 x zp ZP_DWORD:37 6.0
|
||||
(word) sin16s::x1
|
||||
(word) sin16s::x1#0 x1 zp ZP_WORD:69 0.6363636363636365
|
||||
(word) sin16s::x2
|
||||
(word) sin16s::x2#0 x2 zp ZP_WORD:41 4.0
|
||||
(word) sin16s::x3
|
||||
(word) sin16s::x3#0 x3 zp ZP_WORD:41 1.0
|
||||
(word) sin16s::x3_6
|
||||
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:71 4.0
|
||||
(word) sin16s::x4
|
||||
(word) sin16s::x4#0 x4 zp ZP_WORD:41 4.0
|
||||
(word) sin16s::x5
|
||||
(word) sin16s::x5#0 x5 zp ZP_WORD:71 4.0
|
||||
(word) sin16s::x5_128
|
||||
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:71 4.0
|
||||
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
|
||||
(signed dword~) sin16s_gen2::$5 $5 zp ZP_DWORD:10 22.0
|
||||
(word~) sin16s_gen2::$6 $6 zp ZP_WORD:67 11.0
|
||||
(label) sin16s_gen2::@1
|
||||
(label) sin16s_gen2::@2
|
||||
(label) sin16s_gen2::@3
|
||||
(label) sin16s_gen2::@4
|
||||
(label) sin16s_gen2::@return
|
||||
(signed word) sin16s_gen2::ampl
|
||||
(const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0
|
||||
(word) sin16s_gen2::i
|
||||
(word) sin16s_gen2::i#1 i zp ZP_WORD:34 16.5
|
||||
(word) sin16s_gen2::i#2 i zp ZP_WORD:34 1.8333333333333333
|
||||
(signed word) sin16s_gen2::max
|
||||
(const signed word) sin16s_gen2::max#0 max = (signed word) $1001
|
||||
(signed word) sin16s_gen2::min
|
||||
(const signed word) sin16s_gen2::min#0 min = (signed word) -$1001
|
||||
(signed word) sin16s_gen2::offs
|
||||
(signed word*) sin16s_gen2::sintab
|
||||
(signed word*) sin16s_gen2::sintab#0 sintab zp ZP_WORD:32 5.5
|
||||
(signed word*) sin16s_gen2::sintab#2 sintab zp ZP_WORD:32 3.3000000000000003
|
||||
(dword) sin16s_gen2::step
|
||||
(dword) sin16s_gen2::step#0 step zp ZP_DWORD:63 0.8666666666666666
|
||||
(word) sin16s_gen2::wavelength
|
||||
(const word) sin16s_gen2::wavelength#0 wavelength = (word) $200
|
||||
(dword) sin16s_gen2::x
|
||||
(dword) sin16s_gen2::x#1 x zp ZP_DWORD:28 7.333333333333333
|
||||
(dword) sin16s_gen2::x#2 x zp ZP_DWORD:28 3.0
|
||||
|
||||
zp ZP_WORD:2 [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ]
|
||||
zp ZP_WORD:4 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
|
||||
zp ZP_WORD:6 [ mul16s::a#3 mul16s::a#0 mul16s::$17 sin16s::return#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::usinx#0 ]
|
||||
zp ZP_WORD:8 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 main::cos_x#0 main::sin_y#0 main::$24 main::$26 main::$25 main::$27 ]
|
||||
zp ZP_DWORD:10 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#3 main::xpos#0 mul16s::return#4 main::ypos#0 mul16s::return#2 sin16s_gen2::$5 main::$9 main::$14 mulu16_sel::$0 mulu16_sel::$1 ]
|
||||
zp ZP_WORD:14 [ mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ]
|
||||
zp ZP_WORD:16 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ]
|
||||
zp ZP_DWORD:18 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#6 mul16u::mb#1 ]
|
||||
zp ZP_WORD:22 [ memset::str#2 memset::dst#2 memset::dst#3 memset::dst#1 ]
|
||||
zp ZP_WORD:24 [ memset::num#2 memset::end#0 ]
|
||||
reg byte x [ memset::c#3 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp ZP_WORD:26 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp ZP_DWORD:28 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
||||
zp ZP_WORD:32 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
||||
zp ZP_WORD:34 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ]
|
||||
zp ZP_BYTE:36 [ sin16s::isUpper#2 ]
|
||||
zp ZP_DWORD:37 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$4 ]
|
||||
zp ZP_WORD:41 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
||||
reg byte x [ mulu16_sel::select#5 ]
|
||||
zp ZP_WORD:43 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ]
|
||||
zp ZP_WORD:45 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
||||
zp ZP_WORD:47 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ]
|
||||
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
||||
zp ZP_BYTE:49 [ frame_cnt#10 frame_cnt#0 frame_cnt#1 ]
|
||||
reg byte alu [ main::$10 ]
|
||||
zp ZP_WORD:50 [ main::x#0 bitmap_plot::x#0 ]
|
||||
reg byte alu [ main::$15 ]
|
||||
zp ZP_WORD:52 [ main::y#0 ]
|
||||
reg byte x [ bitmap_plot::y#0 ]
|
||||
zp ZP_WORD:54 [ bitmap_plot::$3 bitmap_plot::plotter#1 ]
|
||||
zp ZP_WORD:56 [ bitmap_plot::$1 ]
|
||||
reg byte a [ bitmap_plot::$2 ]
|
||||
zp ZP_WORD:58 [ mul16s::$9 mul16s::$16 ]
|
||||
zp ZP_WORD:60 [ mul16s::$13 ]
|
||||
reg byte a [ mul16u::$1 ]
|
||||
zp ZP_BYTE:62 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp ZP_DWORD:63 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
|
||||
zp ZP_WORD:67 [ sin16s_gen2::$6 ]
|
||||
zp ZP_WORD:69 [ sin16s::x1#0 ]
|
||||
zp ZP_WORD:71 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
|
||||
zp ZP_WORD:73 [ div32u16u::quotient_hi#0 ]
|
||||
reg byte a [ divr16u::$1 ]
|
||||
reg byte a [ divr16u::$2 ]
|
Loading…
x
Reference in New Issue
Block a user