1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2025-03-27 18:35:06 +00:00

Fix divmod7 for negative numbers

This commit is contained in:
David Schmenk 2019-12-28 09:47:24 -08:00
parent 322546a0b1
commit 4a4468cc22
3 changed files with 19 additions and 17 deletions

View File

@ -112,17 +112,15 @@ byte = $88, $8F, $FF, $F8, $88
export asm divmod7(x)#2
!SOURCE "vmsrc/plvmzp.inc"
LDA ESTKL+0,X ; X COORDL
LDY ESTKH+0,X ; X COORDH
BPL +
LDA #$00
SEC
SBC ESTKL+0,X
STA ESTKL+0,X
LDA #$00
SBC ESTKH+0,X
TYA ; DEAL WITH NEG X COORD
EOR #$FF
TAY
+ LDA ESTKL+0,X ; X COORDL
CPY #$01
LDA ESTKL+0,X
EOR #$FF
+ CPY #$01
BEQ ++ ; MUST BE >= 140
BCC +
LDY #40 ; > 512 SO CLIP AT MAX
@ -159,20 +157,21 @@ export asm divmod7(x)#2
ASL ESTKH+1,X ; CHECK SIGN OF XCOORD
BCS +
STA ESTKL+0,X ; REMAINDERL
LDA #$00
STA ESTKH+0,X
STY ESTKL+1,X ; QUOTIENTL
STA ESTKH+1,X
LDY #$00
STY ESTKH+0,X
STY ESTKH+1,X
RTS
+ EOR #$07
SBC #$01
STA ESTKL+0,X ; REMAINDERL
LDA #$00
STA ESTKH+0,X
TYA
EOR #$FF
STA ESTKL+1,X ; QUOTIENTL
LDA #$FF
STA ESTKH+1,X
LDY #$00
STY ESTKH+0,X
DEY
STY ESTKH+1,X
RTS
end
asm clipsrc(ofst, y, w, h, srcptr)#0

View File

@ -51,11 +51,11 @@ def testblt(sprtnum)#0
while ^$C000 < 128
for k = 0 to sprtnum
i[k] = i[k] + ii[k]
if i[k] < 0 or i[k] > 279
if i[k] < -5 or i[k] > 284
ii[k] = -ii[k]
fin
j[k] = j[k] + jj[k]
if j[k] < 0 or j[k] > 191
if j[k] < -5 or j[k] > 196
jj[k] = -jj[k]
fin
spritePosIndex(i[k], j[k], k)

View File

@ -1149,6 +1149,9 @@ def cutsel#0
next
memcpy(@txtlinbuf=>[firstsel], @txtlinbuf=>[lastsel + 1], (numlines - lastsel + 1) * 2)
numlines = numlines - numcliplines
for lastsel = numlines to numlines + numcliplines
txtlinbuf=>[lastsel] = @nullstr
next
cursrow = firstsel
if cursrow >= numlines
cursrow = numlines - 1