make memset work more like c:s implementation.
This commit is contained in:
parent
cc46c68290
commit
87fd6a1b9d
8 changed files with 37 additions and 42 deletions
|
@ -59,15 +59,14 @@
|
||||||
STA Screen_RAM_settings
|
STA Screen_RAM_settings
|
||||||
|
|
||||||
;; Paint the bitmap black. More bitmap: https://www.c64-wiki.com/wiki/53272, https://www.c64-wiki.com/wiki/Screen_RAM#Moving_of_screen_RAM
|
;; Paint the bitmap black. More bitmap: https://www.c64-wiki.com/wiki/53272, https://www.c64-wiki.com/wiki/Screen_RAM#Moving_of_screen_RAM
|
||||||
Mov_16 B_start, B_start + 1, #<VIC_bank, #>VIC_bank
|
Mov_16 A_start, A_start + 1, #<VIC_bank, #>VIC_bank
|
||||||
Mov_16 B_end, B_end + 1, #<$5f3f, #>$5f3f
|
Mov_16 length, length + 1, #<$1f3f, #>$1f3f
|
||||||
LDA #$00
|
LDA #$00
|
||||||
jsr memset
|
jsr memset
|
||||||
|
|
||||||
|
|
||||||
;; Sets the screen color to black and white
|
;; Sets the screen color to black and white
|
||||||
Mov_16 B_start, B_start + 1, #<Screen_RAM, #>Screen_RAM
|
Mov_16 A_start, A_start + 1, #<Screen_RAM, #>Screen_RAM
|
||||||
Mov_16 B_end, B_end + 1, #<Screen_RAM_end, #>Screen_RAM_end
|
Mov_16 length, length + 1, #<$03E8, #>$03E8
|
||||||
LDA #%11110000
|
LDA #%11110000
|
||||||
jsr memset
|
jsr memset
|
||||||
|
|
||||||
|
|
|
@ -50,10 +50,9 @@ end:
|
||||||
;;Long lines
|
;;Long lines
|
||||||
;;Lets clear bitmap
|
;;Lets clear bitmap
|
||||||
VIC_bank = $4000
|
VIC_bank = $4000
|
||||||
VIC_bank_end = VIC_bank + $3FFF
|
|
||||||
;;Paint the bitmap black. More bitmap: https://www.c64-wiki.com/wiki/53272, https://www.c64-wiki.com/wiki/Screen_RAM#Moving_of_screen_RAM
|
;;Paint the bitmap black. More bitmap: https://www.c64-wiki.com/wiki/53272, https://www.c64-wiki.com/wiki/Screen_RAM#Moving_of_screen_RAM
|
||||||
Mov_16 B_start, B_start + 1, #<VIC_bank, #>VIC_bank
|
Mov_16 A_start, A_start + 1, #<VIC_bank, #>VIC_bank
|
||||||
Mov_16 B_end, B_end + 1, #<$5f3f, #>$5f3f
|
Mov_16 length, length + 1, #<$1f40, #>$1f40
|
||||||
LDA #$00
|
LDA #$00
|
||||||
jsr memset
|
jsr memset
|
||||||
|
|
||||||
|
@ -78,5 +77,4 @@ end:
|
||||||
BEQ end_
|
BEQ end_
|
||||||
jmp @loop
|
jmp @loop
|
||||||
end_:
|
end_:
|
||||||
jmp exit
|
|
||||||
.endscope
|
.endscope
|
||||||
|
|
|
@ -3,5 +3,4 @@
|
||||||
;; public args
|
;; public args
|
||||||
A_start = $D0 ; 16-bit value (uses D1)
|
A_start = $D0 ; 16-bit value (uses D1)
|
||||||
B_start = $D2 ; 16-bit value (uses D3)
|
B_start = $D2 ; 16-bit value (uses D3)
|
||||||
length = $D4 ; 16-bit value (uses D5)
|
length = $D4 ; 16-bit value (uses D5), this is the number of bytes
|
||||||
B_end = length + 0
|
|
||||||
|
|
|
@ -16,13 +16,6 @@ change_length:
|
||||||
DEC length +1
|
DEC length +1
|
||||||
BPL loop
|
BPL loop
|
||||||
JMP loop_end
|
JMP loop_end
|
||||||
|
|
||||||
;;;;check if length hi byte is 0. if it is end this
|
|
||||||
;;LDA length + 1
|
|
||||||
;;BEQ loop_end
|
|
||||||
|
|
||||||
;;DEC length +1
|
|
||||||
;;JMP loop
|
|
||||||
y_overflow:
|
y_overflow:
|
||||||
LDY #$00
|
LDY #$00
|
||||||
INC B_start + 1
|
INC B_start + 1
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*-
|
;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*-
|
||||||
;; test for memcpy
|
;; test for memcpy
|
||||||
;; Writes text to half the screen
|
;; Writes text to the screen
|
||||||
.scope memcpy_test
|
.scope memcpy_test
|
||||||
.include "mem.inc"
|
.include "mem.inc"
|
||||||
VIC_bank = $4000
|
VIC_bank = $4000
|
||||||
|
|
|
@ -4,28 +4,24 @@
|
||||||
;; Modifies A, X and B_start
|
;; Modifies A, X and B_start
|
||||||
.proc memset
|
.proc memset
|
||||||
.include "mem.inc"
|
.include "mem.inc"
|
||||||
;;put what to recursive write in Y.
|
LDY #$00
|
||||||
LDX #$0
|
|
||||||
TAY
|
|
||||||
loop:
|
loop:
|
||||||
;;write to byte
|
STA (A_start), Y
|
||||||
TYA
|
INY
|
||||||
STA (B_start ,X)
|
BEQ y_overflow
|
||||||
|
change_length:
|
||||||
|
DEC length
|
||||||
|
BNE loop
|
||||||
|
|
||||||
Add_16 B_start, B_start +1, #$01, #$00
|
DEC length +1
|
||||||
|
BPL loop
|
||||||
|
JMP loop_end
|
||||||
|
y_overflow:
|
||||||
|
LDY #$00
|
||||||
|
INC B_start + 1
|
||||||
|
INC A_start + 1
|
||||||
|
|
||||||
LDA B_start
|
jmp change_length
|
||||||
CMP B_end
|
loop_end:
|
||||||
BEQ test
|
RTS
|
||||||
jmp loop
|
|
||||||
test:
|
|
||||||
LDA B_start +1
|
|
||||||
CMP B_end +1
|
|
||||||
BEQ end
|
|
||||||
jmp loop
|
|
||||||
end:
|
|
||||||
;;Dont forget to rewrite last byte
|
|
||||||
TYA
|
|
||||||
STA (B_start, X)
|
|
||||||
RTS
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|
9
wip-hugo/routines/memory/memset_test.s
Normal file
9
wip-hugo/routines/memory/memset_test.s
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
.scope memset_test
|
||||||
|
.include "mem.inc"
|
||||||
|
VIC_bank = $4000
|
||||||
|
len = $1f40
|
||||||
|
Mov_16 A_start, A_start + 1, #<VIC_bank, #>VIC_bank
|
||||||
|
Mov_16 length, length + 1, #<len, #>len
|
||||||
|
LDA #%01010101
|
||||||
|
JSR memset
|
||||||
|
.endscope
|
|
@ -8,10 +8,11 @@
|
||||||
.include "STARTUP.s"
|
.include "STARTUP.s"
|
||||||
;.include "dubbel_buffer/raster_irqs.s"
|
;.include "dubbel_buffer/raster_irqs.s"
|
||||||
|
|
||||||
;.include "routines/line/line_test.s"
|
.include "routines/line/line_test.s"
|
||||||
;.include "routines/text/char_draw_test.s"
|
;.include "routines/text/char_draw_test.s"
|
||||||
;.include "routines/pixel/pixel_test.s"
|
;.include "routines/pixel/pixel_test.s"
|
||||||
.include "routines/memory/memcpy_test.s"
|
;.include "routines/memory/memcpy_test.s"
|
||||||
|
.include "routines/memory/memset_test.s"
|
||||||
;.include "routines/triangle/triangle_test.s"
|
;.include "routines/triangle/triangle_test.s"
|
||||||
exit:
|
exit:
|
||||||
JMP exit
|
JMP exit
|
||||||
|
|
Loading…
Add table
Reference in a new issue