mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 16:31:07 +00:00
9a7d20a7e1
FORMAT: new switches & checks SH:BREAK in FOR and WHILE ASM / S-C MASM: new directives, CString support and .HX LC / UC:bugfix DHGR.DRV:bugfix LIBGUI:wip CC:wip
315 lines
5.0 KiB
Plaintext
315 lines
5.0 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
*--------------------------------------
|
||
* A = Object Class
|
||
*--------------------------------------
|
||
OBJ.New pha
|
||
tax
|
||
ldy OBJ.SizeOf,x
|
||
lda #0
|
||
|
||
>SYSCALL GetMem
|
||
bcs .9
|
||
|
||
>STYA ZPObjPtr
|
||
|
||
pla
|
||
sta (ZPObjPtr)
|
||
|
||
tay
|
||
lda OBJ.SizeOf,y
|
||
tay
|
||
dey
|
||
lda #0
|
||
|
||
.1 sta (ZPObjPtr),y
|
||
dey
|
||
bne .1
|
||
|
||
* clc
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
OBJ.Enter lda (ZPObjPtr)
|
||
tax
|
||
jmp (J.OBJ.Enter,x)
|
||
*--------------------------------------
|
||
OBJ.Leave lda (ZPObjPtr)
|
||
tax
|
||
jmp (J.OBJ.Leave,x)
|
||
*--------------------------------------
|
||
OBJ.Paint lda (ZPObjPtr)
|
||
tax
|
||
jmp (J.OBJ.fPaintX,x)
|
||
*--------------------------------------
|
||
* hOBJ, Prop8, Value16
|
||
*--------------------------------------
|
||
OBJ.SetProp ldy #3
|
||
|
||
lda (pStack),y hOBJ
|
||
|
||
>SYSCALL2 GetMemPtr
|
||
>STYA ZPObjPtr
|
||
|
||
ldy #2
|
||
lda (pStack),y
|
||
|
||
tay
|
||
|
||
lda (ZPObjPtr),y
|
||
pha old value
|
||
>PULLA
|
||
sta (ZPObjPtr),y
|
||
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
>PULLA
|
||
sta (ZPObjPtr),y
|
||
|
||
txa
|
||
ply
|
||
|
||
>RET 2
|
||
*--------------------------------------
|
||
* hOBJ, Prop8
|
||
*--------------------------------------
|
||
OBJ.GetProp >PULLA
|
||
pha
|
||
|
||
>PULLA
|
||
>SYSCALL2 GetMemPtr
|
||
>STYA ZPObjPtr
|
||
|
||
ply
|
||
|
||
OBJ.GetPropAtY lda (ZPObjPtr),y
|
||
pha
|
||
iny
|
||
ora (ZPObjPtr),y
|
||
clc
|
||
bne .1
|
||
|
||
sec
|
||
|
||
.1 lda (ZPObjPtr),y
|
||
ply
|
||
|
||
rts
|
||
*--------------------------------------
|
||
OBJ.SetDXDYX1Y1 ldx #3
|
||
ldy #S.OBJ.X1+3
|
||
|
||
.1 lda DX,x
|
||
sta (ZPObjPtr),y
|
||
dey
|
||
dex
|
||
bpl .1
|
||
|
||
rts
|
||
*--------------------------------------
|
||
OBJ.SetX2Y2 >STYA ZPPtr1
|
||
|
||
ldy #S.OBJ.W+1
|
||
lda (ZPPtr1),y
|
||
tax
|
||
dey
|
||
lda (ZPPtr1),y
|
||
bne .1
|
||
|
||
dex
|
||
|
||
.1 dec
|
||
clc
|
||
ldy #S.OBJ.X1
|
||
adc (ZPPtr1),y
|
||
pha
|
||
txa
|
||
iny
|
||
adc (ZPPtr1),y
|
||
ldy #S.OBJ.X2+1
|
||
sta (ZPPtr1),y
|
||
dey
|
||
pla
|
||
sta (ZPPtr1),y
|
||
*--------------------------------------
|
||
ldy #S.OBJ.H+1
|
||
lda (ZPPtr1),y
|
||
tax
|
||
dey
|
||
lda (ZPPtr1),y
|
||
bne .2
|
||
|
||
dex
|
||
|
||
.2 dec
|
||
|
||
clc
|
||
ldy #S.OBJ.Y1
|
||
adc (ZPPtr1),y
|
||
pha
|
||
txa
|
||
iny
|
||
adc (ZPPtr1),y
|
||
ldy #S.OBJ.Y2+1
|
||
sta (ZPPtr1),y
|
||
dey
|
||
pla
|
||
sta (ZPPtr1),y
|
||
|
||
rts
|
||
*--------------------------------------
|
||
OBJ.GetPtr lda (ZPObjPtr),y
|
||
pha
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
beq .1
|
||
|
||
ply
|
||
rts
|
||
|
||
.1 plx
|
||
>LDYA L.BMs,x
|
||
rts
|
||
*--------------------------------------
|
||
OBJ.SetAXAtY sta (ZPObjPtr),y
|
||
iny
|
||
txa
|
||
sta (ZPObjPtr),y
|
||
rts
|
||
*--------------------------------------
|
||
OBJ.PullWordAtY >PULLA
|
||
sta (ZPObjPtr),y
|
||
iny
|
||
|
||
OBJ.PullByteAtY >PULLA
|
||
sta (ZPObjPtr),y
|
||
|
||
rts
|
||
*--------------------------------------
|
||
OBJ.PullHWND >PULLA
|
||
|
||
OBJ.GetHWNDA >SYSCALL2 GetMemPtr
|
||
>STYA ZPWNDPtr
|
||
rts
|
||
*--------------------------------------
|
||
OBJ.DrawBorders >STYA ZPObjPtr
|
||
stx IY
|
||
|
||
ldy #S.OBJ.F
|
||
lda (ZPObjPtr),y
|
||
* and #S.OBJ.F.BORDER
|
||
* bne .1
|
||
|
||
bmi .1
|
||
|
||
clc
|
||
.9 rts
|
||
|
||
.1 jsr CB.GetBuf
|
||
bcs .9
|
||
|
||
jsr CB.BorderLineH
|
||
|
||
ldy #S.OBJ.X1
|
||
|
||
lda (ZPObjPtr),y
|
||
sec
|
||
sbc IY
|
||
sta CB.Cache+S.CB.X1
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
sbc #0
|
||
sta CB.Cache+S.CB.X1+1
|
||
|
||
iny #S.OBJ.Y1
|
||
|
||
lda (ZPObjPtr),y
|
||
sec
|
||
sbc IY
|
||
sta CB.Cache+S.CB.Y1
|
||
sta CB.Cache+S.CB.Y2
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
sbc #0
|
||
sta CB.Cache+S.CB.Y1+1
|
||
sta CB.Cache+S.CB.Y2+1 top X1-1,Y1-1,X2+1,Y1-1
|
||
|
||
iny #S.OBJ.X2
|
||
|
||
lda (ZPObjPtr),y
|
||
clc
|
||
adc IY
|
||
sta CB.Cache+S.CB.X2
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
adc #0
|
||
sta CB.Cache+S.CB.X2+1
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
ldy #S.OBJ.Y2
|
||
lda (ZPObjPtr),y
|
||
clc
|
||
adc IY
|
||
sta CB.Cache+S.CB.Y1
|
||
sta CB.Cache+S.CB.Y2
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
adc #0
|
||
sta CB.Cache+S.CB.Y1+1
|
||
sta CB.Cache+S.CB.Y2+1 bottom X1-1,Y2+1,X2+1,Y2+1
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
lda #S.CB.CMD.VLINE
|
||
sta CB.Cache+S.CB.CMD
|
||
|
||
ldy #S.OBJ.Y1
|
||
lda (ZPObjPtr),y
|
||
sec
|
||
sbc IY
|
||
sta CB.Cache+S.CB.Y1
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
sbc #0
|
||
sta CB.Cache+S.CB.Y1+1
|
||
|
||
lda CB.Cache+S.CB.X1
|
||
sta CB.Cache+S.CB.X2
|
||
lda CB.Cache+S.CB.X1+1
|
||
sta CB.Cache+S.CB.X2+1 left X1-1,Y1-1,X1-1,Y2+1
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
ldy #S.OBJ.X2
|
||
lda (ZPObjPtr),y
|
||
clc
|
||
adc IY
|
||
sta CB.Cache+S.CB.X1
|
||
sta CB.Cache+S.CB.X2
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
adc #0
|
||
sta CB.Cache+S.CB.X1+1
|
||
sta CB.Cache+S.CB.X2+1 right X2+1,Y1-1,X2+1,Y2+1
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
jmp CB.FlushBuf
|
||
*-------------------------------------
|
||
OBJ.GetNext ldy #S.OBJ.pNext
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
stx ZPObjPtr
|
||
sta ZPObjPtr+1
|
||
ora ZPObjPtr
|
||
rts
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/lib/libgui.s.obj
|
||
LOAD usr/src/lib/libgui.s
|
||
ASM
|