Compare commits
No commits in common. "31242dd7d90a91cf8cfdc2c31fdc3be681395ef3" and "69b29fc77c848aa9404bb3c105266445f267aab3" have entirely different histories.
31242dd7d9
...
69b29fc77c
5 changed files with 120 additions and 192 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -3,10 +3,10 @@
|
||||||
*.o
|
*.o
|
||||||
*.lst
|
*.lst
|
||||||
*.note
|
*.note
|
||||||
host/build/*
|
./build/*
|
||||||
*.lbl
|
*.lbl
|
||||||
*.bin
|
*.bin
|
||||||
*.labels
|
*.labels
|
||||||
editor/c6le
|
editor/c6le
|
||||||
editor/source-program_*.c6l
|
editor/source-program_*.c6l
|
||||||
user-side-compiler/c6lc
|
user-side-compiler/c6lc
|
|
@ -1,75 +1,75 @@
|
||||||
;inverse_factor_value: ;lookup 00000001 --gives--> 10000000 , etc etc. only 1st 1 in binary numbers
|
inverse_factor_value: ;lookup 00000001 --gives--> 10000000 , etc etc. only 1st 1 in binary numbers
|
||||||
;NOP
|
NOP
|
||||||
;.byte %10000000, %01000000; (inverse factor value)
|
.byte %10000000, %01000000; (inverse factor value)
|
||||||
;NOP
|
NOP
|
||||||
;.byte %00100000; (inverse factor value)
|
.byte %00100000; (inverse factor value)
|
||||||
;NOP
|
NOP
|
||||||
;NOP;.byte $0; (log)
|
NOP;.byte $0; (log)
|
||||||
;NOP;.byte $1; (log)
|
NOP;.byte $1; (log)
|
||||||
;.byte %00010000; (inverse factor value)
|
.byte %00010000; (inverse factor value)
|
||||||
;log:
|
log:
|
||||||
;NOP
|
NOP
|
||||||
;.byte $0; (log)
|
.byte $0; (log)
|
||||||
;.byte $1; (log)
|
.byte $1; (log)
|
||||||
;NOP
|
NOP
|
||||||
;.byte $2
|
.byte $2
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;.byte %00001000; (inverse factor value)
|
.byte %00001000; (inverse factor value)
|
||||||
;.byte $3
|
.byte $3
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;;; i put another lookup table where nops normaly are'
|
;; i put another lookup table where nops normaly are'
|
||||||
binary_factor:
|
binary_factor:
|
||||||
.byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001; (binary factor)
|
.byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001; (binary factor)
|
||||||
;; ^(log)
|
;; ^(log)
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;.byte %00000100; (inverse factor value)
|
.byte %00000100; (inverse factor value)
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;.byte $5 ;(log)
|
.byte $5
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;.byte %00000010; (inverse factor value)
|
.byte %00000010; (inverse factor value)
|
||||||
;
|
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;.byte $6; (log)
|
.byte $6
|
||||||
;; i put another lookup table where nops normaly are
|
;; i put another lookup table where nops normaly are
|
||||||
Bitmap = $4000
|
Bitmap = $4000
|
||||||
;;This is used by pixel_draw! look at it for more detail
|
;;This is used by pixel_draw! look at it for more detail
|
||||||
|
@ -124,17 +124,17 @@ big_y_offset:
|
||||||
.hibytes $1CC0 + Bitmap
|
.hibytes $1CC0 + Bitmap
|
||||||
.lobytes $1E00 + Bitmap
|
.lobytes $1E00 + Bitmap
|
||||||
.hibytes $1E00 + Bitmap
|
.hibytes $1E00 + Bitmap
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;.byte %00000001; (inverse factor value)
|
.byte %00000001
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;NOP
|
NOP
|
||||||
;.byte $7; (log)
|
.byte $7
|
||||||
|
|
|
@ -11,4 +11,3 @@
|
||||||
V = $E4 ; 16-bit value (uses E5)
|
V = $E4 ; 16-bit value (uses E5)
|
||||||
D = $E6 ; 16-bit value (uses E7)
|
D = $E6 ; 16-bit value (uses E7)
|
||||||
byte_to_paint = $E8
|
byte_to_paint = $E8
|
||||||
;; E9 in use of pixel_calc
|
|
||||||
|
|
|
@ -1,45 +1,16 @@
|
||||||
;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*-
|
;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*-
|
||||||
|
|
||||||
.proc line; user-procedure :clobbers (A X Y) :clobbers-arguments 4
|
.proc line; user-procedure :clobbers (A X Y) :clobbers-arguments 4
|
||||||
|
;X_pos =< X_end skall alltid gälla
|
||||||
.include "line.inc"
|
.include "line.inc"
|
||||||
|
|
||||||
;; Fix line that is too long
|
|
||||||
LDA Y_pos
|
|
||||||
CMP #$C8 ;;y_max = $C8
|
|
||||||
BCC do_not_fix_y_pos
|
|
||||||
LDA #$C8
|
|
||||||
STA Y_pos
|
|
||||||
do_not_fix_y_pos:
|
|
||||||
LDA Y_end
|
|
||||||
CMP #$C8 ;;y_max = $C8
|
|
||||||
BCC do_not_fix_y_end
|
|
||||||
LDA #$C8
|
|
||||||
STA Y_end
|
|
||||||
do_not_fix_y_end:
|
|
||||||
|
|
||||||
|
|
||||||
;;dx
|
;;dx
|
||||||
SEC
|
SEC
|
||||||
LDA X_end
|
LDA X_end
|
||||||
SBC X_pos
|
SBC X_pos
|
||||||
BCS dx_no_underflow;; X_end >= X_pos
|
STA dx
|
||||||
|
BCC dx_no_underflow;; X_end >= X_pos
|
||||||
EOR #$ff ; Fix bit underflow
|
EOR #$ff ; Fix bit underflow
|
||||||
STA dx
|
|
||||||
;; line_* expect X_pos < X_end and now its not the case.
|
|
||||||
;; Lets move them around
|
|
||||||
LDX X_pos
|
|
||||||
LDY X_end
|
|
||||||
STX X_end
|
|
||||||
STY X_pos
|
|
||||||
LDX Y_pos
|
|
||||||
LDY Y_end
|
|
||||||
STX Y_end
|
|
||||||
STY Y_pos
|
|
||||||
|
|
||||||
|
|
||||||
dx_no_underflow:
|
dx_no_underflow:
|
||||||
STA dx
|
|
||||||
SEC
|
SEC
|
||||||
LDA Y_pos
|
LDA Y_pos
|
||||||
SBC Y_end
|
SBC Y_end
|
||||||
|
|
|
@ -6,16 +6,16 @@
|
||||||
.include "../memory/mem.inc"
|
.include "../memory/mem.inc"
|
||||||
Y_pos_ = $0D
|
Y_pos_ = $0D
|
||||||
X_pos_ = $0E
|
X_pos_ = $0E
|
||||||
Y_end_ = $0F
|
Y_end_ = $10
|
||||||
X_end_ = $0C
|
X_end_ = $11
|
||||||
LDA #$d2
|
LDA #$d2
|
||||||
STA X_pos_
|
STA X_pos_
|
||||||
LDA #$62
|
LDA #$62
|
||||||
STA Y_pos_
|
STA Y_pos_
|
||||||
LDA #$ff
|
LDA #$ff
|
||||||
STA X_end_
|
STA X_end
|
||||||
LDA #$0
|
LDA #$0
|
||||||
STA Y_end_
|
STA Y_end
|
||||||
|
|
||||||
;; Full angle test
|
;; Full angle test
|
||||||
@loop:
|
@loop:
|
||||||
|
@ -23,17 +23,16 @@
|
||||||
STA Y_pos
|
STA Y_pos
|
||||||
LDA X_pos_
|
LDA X_pos_
|
||||||
STA X_pos
|
STA X_pos
|
||||||
LDA X_end_
|
|
||||||
STA X_end
|
|
||||||
LDA Y_end_
|
|
||||||
STA Y_end
|
|
||||||
|
|
||||||
jsr line
|
jsr line
|
||||||
INC Y_end_
|
INC Y_end
|
||||||
LDA Y_end_
|
LDA Y_end
|
||||||
CMP #$ff
|
CMP #$bb
|
||||||
bne @loop
|
bne @loop
|
||||||
|
|
||||||
|
|
||||||
|
hihi:
|
||||||
|
jmp hihi
|
||||||
clear_screen:
|
clear_screen:
|
||||||
;;Lets clear bitmap
|
;;Lets clear bitmap
|
||||||
VIC_bank = $4000
|
VIC_bank = $4000
|
||||||
|
@ -49,23 +48,18 @@ long_line_test_a:
|
||||||
LDA #$60
|
LDA #$60
|
||||||
STA Y_pos_
|
STA Y_pos_
|
||||||
LDA #$ff
|
LDA #$ff
|
||||||
STA X_end_
|
STA X_end
|
||||||
LDA #$0
|
LDA #$0
|
||||||
STA Y_end_
|
STA Y_end
|
||||||
@loop:
|
@loop:
|
||||||
LDA Y_pos_
|
LDA Y_pos_
|
||||||
STA Y_pos
|
STA Y_pos
|
||||||
LDA X_pos_
|
LDA X_pos_
|
||||||
STA X_pos
|
STA X_pos
|
||||||
LDA X_end_
|
|
||||||
STA X_end
|
|
||||||
LDA Y_end_
|
|
||||||
STA Y_end
|
|
||||||
|
|
||||||
jsr line
|
jsr line
|
||||||
INC Y_end_
|
INC Y_end
|
||||||
LDA Y_end_
|
LDA Y_end
|
||||||
CMP #$ff
|
CMP #$bb
|
||||||
BNE @loop
|
BNE @loop
|
||||||
|
|
||||||
clear_screen_:
|
clear_screen_:
|
||||||
|
@ -74,60 +68,24 @@ clear_screen_:
|
||||||
Mov_16 length, length + 1, #<$1f40, #>$1f40
|
Mov_16 length, length + 1, #<$1f40, #>$1f40
|
||||||
LDA #$00
|
LDA #$00
|
||||||
jsr memset
|
jsr memset
|
||||||
|
|
||||||
long_line_test_b:
|
long_line_test_b:
|
||||||
LDA #$00
|
LDA #$00
|
||||||
STA X_pos_
|
STA X_pos_
|
||||||
LDA #$00
|
LDA #$00
|
||||||
STA Y_pos_
|
STA Y_pos_
|
||||||
LDA #$ff
|
LDA #$ff
|
||||||
STA X_end_
|
STA X_end
|
||||||
LDA #$60
|
LDA #$60
|
||||||
STA Y_end_
|
STA Y_end
|
||||||
@loop:
|
@loop:
|
||||||
LDA Y_pos_
|
LDA Y_pos_
|
||||||
STA Y_pos
|
STA Y_pos
|
||||||
LDA X_pos_
|
LDA X_pos_
|
||||||
STA X_pos
|
STA X_pos
|
||||||
LDA X_end_
|
jsr line
|
||||||
STA X_end
|
INC Y_pos_
|
||||||
LDA Y_end_
|
LDA Y_pos_
|
||||||
STA Y_end
|
CMP #$bb
|
||||||
jsr line
|
BNE @loop
|
||||||
INC Y_pos_
|
|
||||||
LDA Y_pos_
|
|
||||||
CMP #$ff
|
|
||||||
BNE @loop
|
|
||||||
|
|
||||||
clear_screen__:
|
|
||||||
;;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 A_start, A_start + 1, #<VIC_bank, #>VIC_bank
|
|
||||||
Mov_16 length, length + 1, #<$1f40, #>$1f40
|
|
||||||
LDA #$00
|
|
||||||
jsr memset
|
|
||||||
|
|
||||||
long_line_test_b_pos_end_swapped:
|
|
||||||
LDA #$00
|
|
||||||
STA X_end_
|
|
||||||
LDA #$00
|
|
||||||
STA Y_end_
|
|
||||||
LDA #$ff
|
|
||||||
STA X_pos_
|
|
||||||
LDA #$60
|
|
||||||
STA Y_pos_
|
|
||||||
@loop:
|
|
||||||
LDA Y_end_
|
|
||||||
STA Y_end
|
|
||||||
LDA X_end_
|
|
||||||
STA X_end
|
|
||||||
LDA X_pos_
|
|
||||||
STA X_pos
|
|
||||||
LDA Y_pos_
|
|
||||||
STA Y_pos
|
|
||||||
jsr line
|
|
||||||
INC Y_end_
|
|
||||||
LDA Y_end_
|
|
||||||
CMP #$ff
|
|
||||||
BNE @loop
|
|
||||||
|
|
||||||
.endscope
|
.endscope
|
||||||
|
|
Loading…
Add table
Reference in a new issue