A2osX/LIB/LIBGUI.S.OBJ.txt
burniouf 9a7d20a7e1 ProDOS 203 / FX:TC mod for year 2022-2026
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
2022-12-07 08:02:29 +01:00

315 lines
5.0 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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