diff --git a/wip-hugo/macros/16aritmatic.s b/wip-hugo/macros/16aritmatic.s index 6447477..8ef0a96 100755 --- a/wip-hugo/macros/16aritmatic.s +++ b/wip-hugo/macros/16aritmatic.s @@ -1,6 +1,6 @@ .macro Add_16 a_low, a_hi, b_low, b_hi ; a = a + b - CLC + CLC LDA b_low ADC a_low STA a_low @@ -9,13 +9,24 @@ STA a_hi .endmacro +.macro Sub_16 a_low, a_hi, b_low, b_hi ; a = a - b + SEC + LDA a_low + SBC b_low + STA a_low + LDA a_hi + SBC b_hi + STA a_hi +.endmacro + + .macro mult_16 low_, hi_ ; [low, hi] = [low, hi]*2 CLC ROL low_ ROL hi_ .endmacro -; + ;.proc Sub_abs_8 ;return, primary, secondary ; LDA primary ; SEC @@ -35,7 +46,7 @@ ; STA hi ; ;pow: ; DEY ; count = count -1 -; BEQ y_pow_end; +; BEQ y_pow_end; ; CLC ; LDA in ; ADC low @@ -45,4 +56,4 @@ ; STA hi ; ;jmp pow ; y_pow_end: -;.endproc \ No newline at end of file +;.endproc diff --git a/wip-hugo/routines/memory/line_down.s b/wip-hugo/routines/memory/line_down.s index 7ae0e35..6ced07d 100644 --- a/wip-hugo/routines/memory/line_down.s +++ b/wip-hugo/routines/memory/line_down.s @@ -1,6 +1,5 @@ ;;drawing line from 2 cordinates .proc line -testing: ;;# (X_pos, Y_pos) # ;;# * # ;;# * # @@ -14,63 +13,76 @@ testing: Y_end = $05 X_pos = $FC Y_pos = $FB - dy = $06 - dx = $07 - D = $08 + dy_2 = $0607 + dx = $08 + D = $0a0b ;;Set values LDA #$00 STA $FD ; for pixel_draw - ;;example values ~~~~~ SHOULD BE PRECOMPILED + ;example values ~~~~~ SHOULD BE PRECOMPILED LDA #$00 STA X_pos STA Y_pos - LDA #$50 + LDA #$f0 STA X_end - STA dx - LDA #$40 + LDA #$80 STA Y_end - STA dy - LDA #($40 + $40 - $50 ) - STA D ; = 2*dy - dx - ;; ~~~~~~~ + ;;~~~~~~~~~~ + + ;;2*dy = 2*(Y_end -Y_pos) + LDA Y_end + SEC + SBC Y_pos + STA >dy_2 + LDA #$00 + STA dy_2, dy_2 + STA >D + LDA D, D, dx_2, >D ==0, then: case_2 + LDA 0 then: case_1 + CMP #$00 + BEQ case_2 case_1: INC Y_pos - - ;;D = D_before -2*dx - LDA dx - ROL A - TAX - LDA D - STX D ; D = -2*dx, A = D_before - SEC - SBC D ; A = D_before -2*dx - STA D; - jmp last + ;; D = D - 2*dx + Sub_16 >D, dx_2, D, dy_2,