mirror of
https://github.com/KarolS/millfork.git
synced 2024-07-18 02:28:57 +00:00
Fix the zp_reg module
This commit is contained in:
parent
13c23c1bd1
commit
c6d3cefa26
@ -8,14 +8,14 @@
|
|||||||
#if TINY_RW_MEMORY
|
#if TINY_RW_MEMORY
|
||||||
|
|
||||||
noinline asm void init_rw_memory() {
|
noinline asm void init_rw_memory() {
|
||||||
ldx #__rwdata_size.lo // can't be more than $00FC
|
? ldx #__rwdata_size.lo // can't be more than $00FC
|
||||||
beq __init_rw_memory__skip3
|
? beq __init_rw_memory__skip3
|
||||||
+ memory_barrier()
|
+ memory_barrier()
|
||||||
__init_rw_memory__loop3:
|
__init_rw_memory__loop3:
|
||||||
lda lo(__rwdata_init_start - 1),x
|
? lda lo(__rwdata_init_start - 1),x
|
||||||
sta lo(__rwdata_start - 1),x
|
? sta lo(__rwdata_start - 1),x
|
||||||
dex
|
? dex
|
||||||
bne __init_rw_memory__loop3
|
? bne __init_rw_memory__loop3
|
||||||
+ memory_barrier()
|
+ memory_barrier()
|
||||||
__init_rw_memory__skip3:
|
__init_rw_memory__skip3:
|
||||||
rts
|
rts
|
||||||
@ -28,43 +28,43 @@ __init_rw_memory__skip3:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
noinline asm void init_rw_memory() {
|
noinline asm void init_rw_memory() {
|
||||||
lda #__rwdata_size.hi
|
? lda #__rwdata_size.hi
|
||||||
ora #__rwdata_size.lo
|
? ora #__rwdata_size.lo
|
||||||
beq __init_rw_memory__skip3
|
? beq __init_rw_memory__skip3
|
||||||
+ memory_barrier()
|
+ memory_barrier()
|
||||||
|
|
||||||
ldx #__rwdata_size.hi
|
? ldx #__rwdata_size.hi
|
||||||
beq __init_rw_memory__skip1
|
? beq __init_rw_memory__skip1
|
||||||
|
|
||||||
lda #__rwdata_init_start.lo
|
? lda #__rwdata_init_start.lo
|
||||||
sta lo(__reg)
|
? sta __reg
|
||||||
lda #__rwdata_init_start.hi
|
? lda #__rwdata_init_start.hi
|
||||||
sta lo(__reg + 1)
|
? sta __reg+1
|
||||||
lda #__rwdata_start.lo
|
? lda #__rwdata_start.lo
|
||||||
sta lo(__reg + 2)
|
? sta __reg+2
|
||||||
lda #__rwdata_start.hi
|
? lda #__rwdata_start.hi
|
||||||
sta lo(__reg + 3)
|
? sta __reg+3
|
||||||
|
|
||||||
__init_rw_memory__loop1:
|
__init_rw_memory__loop1:
|
||||||
ldy #0
|
? ldy #0
|
||||||
__init_rw_memory__loop2:
|
__init_rw_memory__loop2:
|
||||||
lda (lo(__reg)),y
|
? lda (__reg),y
|
||||||
sta (lo(__reg + 2)),y
|
? sta (__reg+2),y
|
||||||
dey
|
? dey
|
||||||
bne __init_rw_memory__loop2
|
? bne __init_rw_memory__loop2
|
||||||
inc lo(__reg + 1)
|
? inc __reg+1
|
||||||
inc lo(__reg + 3)
|
? inc __reg+3
|
||||||
dex
|
? dex
|
||||||
bne __init_rw_memory__loop1
|
? bne __init_rw_memory__loop1
|
||||||
|
|
||||||
__init_rw_memory__skip1:
|
__init_rw_memory__skip1:
|
||||||
ldx #__rwdata_size.lo
|
? ldx #__rwdata_size.lo
|
||||||
beq __init_rw_memory__skip3
|
? beq __init_rw_memory__skip3
|
||||||
__init_rw_memory__loop3:
|
__init_rw_memory__loop3:
|
||||||
lda __rwdata_init_start + (__rwdata_size & $ff00) - 1,x
|
? lda __rwdata_init_start + (__rwdata_size & $ff00) - 1,x
|
||||||
sta __rwdata_start + (__rwdata_size & $ff00) - 1,x
|
? sta __rwdata_start + (__rwdata_size & $ff00) - 1,x
|
||||||
dex
|
? dex
|
||||||
bne __init_rw_memory__loop3
|
? bne __init_rw_memory__loop3
|
||||||
__init_rw_memory__skip3:
|
__init_rw_memory__skip3:
|
||||||
+ memory_barrier()
|
+ memory_barrier()
|
||||||
rts
|
rts
|
||||||
|
@ -8,11 +8,11 @@ noinline asm byte __mul_u8u8u8() {
|
|||||||
? JMP __mul_u8u8u8_start
|
? JMP __mul_u8u8u8_start
|
||||||
__mul_u8u8u8_add:
|
__mul_u8u8u8_add:
|
||||||
? CLC
|
? CLC
|
||||||
? ADC lo(__reg)
|
? ADC __reg
|
||||||
__mul_u8u8u8_loop:
|
__mul_u8u8u8_loop:
|
||||||
? ASL lo(__reg)
|
? ASL __reg
|
||||||
__mul_u8u8u8_start:
|
__mul_u8u8u8_start:
|
||||||
? LSR lo(__reg+1)
|
? LSR __reg+1
|
||||||
? BCS __mul_u8u8u8_add
|
? BCS __mul_u8u8u8_add
|
||||||
? BNE __mul_u8u8u8_loop
|
? BNE __mul_u8u8u8_loop
|
||||||
? RTS
|
? RTS
|
||||||
@ -25,21 +25,21 @@ noinline asm byte __mod_u8u8u8u8() {
|
|||||||
? LDX #7
|
? LDX #7
|
||||||
? CLC
|
? CLC
|
||||||
__divmod_u8u8u8u8_start:
|
__divmod_u8u8u8u8_start:
|
||||||
? ROL lo(__reg)
|
? ROL __reg
|
||||||
? ROL
|
? ROL
|
||||||
? CMP lo(__reg+1)
|
? CMP __reg+1
|
||||||
? BCC __divmod_u8u8u8u8_skip
|
? BCC __divmod_u8u8u8u8_skip
|
||||||
? SBC lo(__reg+1)
|
? SBC __reg+1
|
||||||
__divmod_u8u8u8u8_skip:
|
__divmod_u8u8u8u8_skip:
|
||||||
? DEX
|
? DEX
|
||||||
? BPL __divmod_u8u8u8u8_start
|
? BPL __divmod_u8u8u8u8_start
|
||||||
? ROL lo(__reg)
|
? ROL __reg
|
||||||
? RTS
|
? RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
asm byte __div_u8u8u8u8() {
|
asm byte __div_u8u8u8u8() {
|
||||||
? JSR __mod_u8u8u8u8
|
? JSR __mod_u8u8u8u8
|
||||||
? LDA lo(__reg)
|
? LDA __reg
|
||||||
? RTS
|
? RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,17 +51,17 @@ noinline asm word __mul_u16u8u16() {
|
|||||||
? JMP __mul_u16u8u16_start
|
? JMP __mul_u16u8u16_start
|
||||||
__mul_u16u8u16_add:
|
__mul_u16u8u16_add:
|
||||||
? CLC
|
? CLC
|
||||||
? ADC lo(__reg)
|
? ADC __reg
|
||||||
? TAY
|
? TAY
|
||||||
? TXA
|
? TXA
|
||||||
? ADC lo(__reg+1)
|
? ADC __reg+1
|
||||||
? TAX
|
? TAX
|
||||||
? TYA
|
? TYA
|
||||||
__mul_u16u8u16_loop:
|
__mul_u16u8u16_loop:
|
||||||
? ASL lo(__reg)
|
? ASL __reg
|
||||||
? ROL lo(__reg+1)
|
? ROL __reg+1
|
||||||
__mul_u16u8u16_start:
|
__mul_u16u8u16_start:
|
||||||
? LSR lo(__reg+2)
|
? LSR __reg+2
|
||||||
? BCS __mul_u16u8u16_add
|
? BCS __mul_u16u8u16_add
|
||||||
? BNE __mul_u16u8u16_loop
|
? BNE __mul_u16u8u16_loop
|
||||||
? RTS
|
? RTS
|
||||||
@ -74,24 +74,24 @@ noinline asm byte __mod_u16u8u16u8() {
|
|||||||
? LDX #15
|
? LDX #15
|
||||||
? CLC
|
? CLC
|
||||||
__divmod_u16u8u16u8_start:
|
__divmod_u16u8u16u8_start:
|
||||||
? ROL lo(__reg)
|
? ROL __reg
|
||||||
? ROL lo(__reg+1)
|
? ROL __reg+1
|
||||||
? ROL
|
? ROL
|
||||||
? CMP lo(__reg+2)
|
? CMP __reg+2
|
||||||
? BCC __divmod_u16u8u16u8_skip
|
? BCC __divmod_u16u8u16u8_skip
|
||||||
? SBC lo(__reg+2)
|
? SBC __reg+2
|
||||||
__divmod_u16u8u16u8_skip:
|
__divmod_u16u8u16u8_skip:
|
||||||
? DEX
|
? DEX
|
||||||
? BPL __divmod_u16u8u16u8_start
|
? BPL __divmod_u16u8u16u8_start
|
||||||
? ROL lo(__reg)
|
? ROL __reg
|
||||||
? ROL lo(__reg+1)
|
? ROL __reg+1
|
||||||
? RTS
|
? RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
asm word __div_u16u8u16u8() {
|
asm word __div_u16u8u16u8() {
|
||||||
? JSR __mod_u16u8u16u8
|
? JSR __mod_u16u8u16u8
|
||||||
? LDA lo(__reg)
|
? LDA __reg
|
||||||
? LDX lo(__reg+1)
|
? LDX __reg+1
|
||||||
? RTS
|
? RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user