Compare commits
6 commits
69b29fc77c
...
31242dd7d9
Author | SHA1 | Date | |
---|---|---|---|
31242dd7d9 | |||
![]() |
97a7a131a2 | ||
![]() |
2715c7aab2 | ||
![]() |
cd0a91b34e | ||
![]() |
f7d4a4e83f | ||
![]() |
25e65d8197 |
5 changed files with 192 additions and 120 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue