Merge branch 'main' into integration

This commit is contained in:
John Lorentzson 2025-07-25 13:07:30 +02:00
commit 31242dd7d9
5 changed files with 192 additions and 120 deletions

4
.gitignore vendored
View file

@ -3,10 +3,10 @@
*.o
*.lst
*.note
./build/*
host/build/*
*.lbl
*.bin
*.labels
editor/c6le
editor/source-program_*.c6l
user-side-compiler/c6lc
user-side-compiler/c6lc

View file

@ -1,75 +1,75 @@
inverse_factor_value: ;lookup 00000001 --gives--> 10000000 , etc etc. only 1st 1 in binary numbers
NOP
.byte %10000000, %01000000; (inverse factor value)
NOP
.byte %00100000; (inverse factor value)
NOP
NOP;.byte $0; (log)
NOP;.byte $1; (log)
.byte %00010000; (inverse factor value)
log:
NOP
.byte $0; (log)
.byte $1; (log)
NOP
.byte $2
NOP
NOP
.byte %00001000; (inverse factor value)
.byte $3
NOP
NOP
;; i put another lookup table where nops normaly are'
;inverse_factor_value: ;lookup 00000001 --gives--> 10000000 , etc etc. only 1st 1 in binary numbers
;NOP
;.byte %10000000, %01000000; (inverse factor value)
;NOP
;.byte %00100000; (inverse factor value)
;NOP
;NOP;.byte $0; (log)
;NOP;.byte $1; (log)
;.byte %00010000; (inverse factor value)
;log:
;NOP
;.byte $0; (log)
;.byte $1; (log)
;NOP
;.byte $2
;NOP
;NOP
;.byte %00001000; (inverse factor value)
;.byte $3
;NOP
;NOP
;;; i put another lookup table where nops normaly are'
binary_factor:
.byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001; (binary factor)
;; ^(log)
NOP
NOP
NOP
NOP
.byte %00000100; (inverse factor value)
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
.byte $5
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)
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
.byte $6
;NOP
;NOP
;NOP
;NOP
;.byte %00000100; (inverse factor value)
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;.byte $5 ;(log)
;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)
;
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;.byte $6; (log)
;; i put another lookup table where nops normaly are
Bitmap = $4000
;;This is used by pixel_draw! look at it for more detail
@ -124,17 +124,17 @@ big_y_offset:
.hibytes $1CC0 + Bitmap
.lobytes $1E00 + Bitmap
.hibytes $1E00 + Bitmap
NOP
NOP
NOP
NOP
.byte %00000001
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
.byte $7
;NOP
;NOP
;NOP
;NOP
;.byte %00000001; (inverse factor value)
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;NOP
;.byte $7; (log)

View file

@ -11,3 +11,4 @@
V = $E4 ; 16-bit value (uses E5)
D = $E6 ; 16-bit value (uses E7)
byte_to_paint = $E8
;; E9 in use of pixel_calc

View file

@ -1,16 +1,45 @@
;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*-
.proc line; user-procedure :clobbers (A X Y) :clobbers-arguments 4
;X_pos =< X_end skall alltid gälla
.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
SEC
LDA X_end
SBC X_pos
STA dx
BCC dx_no_underflow;; X_end >= X_pos
BCS dx_no_underflow;; X_end >= X_pos
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:
STA dx
SEC
LDA Y_pos
SBC Y_end

View file

@ -6,16 +6,16 @@
.include "../memory/mem.inc"
Y_pos_ = $0D
X_pos_ = $0E
Y_end_ = $10
X_end_ = $11
Y_end_ = $0F
X_end_ = $0C
LDA #$d2
STA X_pos_
LDA #$62
STA Y_pos_
LDA #$ff
STA X_end
STA X_end_
LDA #$0
STA Y_end
STA Y_end_
;; Full angle test
@loop:
@ -23,16 +23,17 @@
STA Y_pos
LDA X_pos_
STA X_pos
LDA X_end_
STA X_end
LDA Y_end_
STA Y_end
jsr line
INC Y_end
LDA Y_end
CMP #$bb
INC Y_end_
LDA Y_end_
CMP #$ff
bne @loop
hihi:
jmp hihi
clear_screen:
;;Lets clear bitmap
VIC_bank = $4000
@ -48,18 +49,23 @@ long_line_test_a:
LDA #$60
STA Y_pos_
LDA #$ff
STA X_end
STA X_end_
LDA #$0
STA Y_end
STA Y_end_
@loop:
LDA Y_pos_
STA Y_pos
LDA X_pos_
STA X_pos
LDA X_end_
STA X_end
LDA Y_end_
STA Y_end
jsr line
INC Y_end
LDA Y_end
CMP #$bb
INC Y_end_
LDA Y_end_
CMP #$ff
BNE @loop
clear_screen_:
@ -68,24 +74,60 @@ clear_screen_:
Mov_16 length, length + 1, #<$1f40, #>$1f40
LDA #$00
jsr memset
long_line_test_b:
LDA #$00
STA X_pos_
LDA #$00
STA Y_pos_
LDA #$ff
STA X_end
LDA #$60
STA Y_end
LDA #$00
STA X_pos_
LDA #$00
STA Y_pos_
LDA #$ff
STA X_end_
LDA #$60
STA Y_end_
@loop:
LDA Y_pos_
STA Y_pos
LDA X_pos_
STA X_pos
jsr line
INC Y_pos_
LDA Y_pos_
CMP #$bb
BNE @loop
LDA Y_pos_
STA Y_pos
LDA X_pos_
STA X_pos
LDA X_end_
STA X_end
LDA Y_end_
STA Y_end
jsr line
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