CC:SWITCH/CASE

ASM:added \%
KERNEL:BUGFIX in DevMgr
LIBGUI:New API
This commit is contained in:
burniouf 2022-10-18 07:56:59 +02:00
parent 8e2918de4d
commit dad22dfc30
37 changed files with 2580 additions and 1906 deletions

Binary file not shown.

Binary file not shown.

View File

@ -525,10 +525,10 @@ T.LI .PS "ON"
.HS 00 .HS 00
*-------------------------------------- *--------------------------------------
DIR.EscChars .AS "abefnrtv" DIR.EscChars .AS "abefnrtv"
.HS 5C27223F \'"? .HS 5C27223F25 \'"?%
DIR.EscChars.L .EQ *-DIR.EscChars DIR.EscChars.L .EQ *-DIR.EscChars
DIR.EscCodes .HS 07081B0C0A0D090B DIR.EscCodes .HS 07081B0C0A0D090B
.HS 5C27223F .HS 5C27223F25
*--------------------------------------- *---------------------------------------
SRC.MOD.RESERVED .PS "#/^<>" SRC.MOD.RESERVED .PS "#/^<>"
SRC.EXP.RESERVED .PS "^!|&<=>+-*/" SRC.EXP.RESERVED .PS "^!|&<=>+-*/"

View File

@ -142,7 +142,7 @@ CORE.CompileLine
jsr CORE.GetNCharNB Skip '}' jsr CORE.GetNCharNB Skip '}'
jsr CC.STMT.CPStmt.END jsr STMT.CPStmt.END
bcs .9 bcs .9
bra CORE.CompileLine bra CORE.CompileLine
@ -152,7 +152,7 @@ CORE.CompileLine
jsr CORE.GetNCharNB Skip ';' jsr CORE.GetNCharNB Skip ';'
jsr CC.STMT.Stmt.END jsr STMT.Stmt.END
bcs .9 bcs .9
bra CORE.CompileLine bra CORE.CompileLine
@ -181,7 +181,7 @@ CORE.CompileStmt
.1 >LDYA L.CC.SCSPEC .1 >LDYA L.CC.SCSPEC
jsr CC.LookupID jsr CC.LookupID
bcs .2 bcs .2
jmp (J.CC.SCSPEC,x) jmp (J.CC.SCSPEC,x)
.2 >LDYA L.CC.TYPEQUAL .2 >LDYA L.CC.TYPEQUAL
@ -513,35 +513,40 @@ CC.CheckCharNB cmp #C.SPACE
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
* https://riptutorial.com/c/example/16255/character-literals
* 'c', '\abefnrtv', '\123', '\xFF'
*--------------------------------------
CC.GetNextCharEsc CC.GetNextCharEsc
jsr CC.GetNextChar jsr CC.GetNextChar
bcs .9 bcs .9
cmp #'\' cmp #'\'
bne .8 bne .8
jsr CC.GetNextChar jsr CC.GetNextChar
bcs .8 bcs .8
ldx #CC.EscChars.Cnt-1 ldx #CC.EscChars.Cnt-1
.1 cmp CC.EscChars,x .1 cmp CC.EscChars,x
beq .6 beq .6
dex dex
bpl .1 bpl .1
* TODO : \123, \xFF
sec sec
rts rts
.6 lda CC.EscCodes,x .6 lda CC.EscCodes,x
bit .9 bit .9
clc clc
rts rts
.8 clc .8 clc
clv clv
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CC.GetNextChar inc ZPLineBufPtr CC.GetNextChar inc ZPLineBufPtr
bne CC.GetChar bne CC.GetChar

View File

@ -272,6 +272,35 @@ EXP.BOPS bit #SYM.Q.PPPOINTER
clc clc
rts rts
*-------------------------------------- *--------------------------------------
EXP.GetIntegral jsr CC.GetCharNB
cmp #'''
bne .1
jsr CC.GetNextCharEsc
bcs .9
tay
jsr CC.GetNextChar
bcs .9
cmp #'''
bne .9
jsr CORE.GetNCharNB skip '
lda #0 Y,A = integral
clc
rts
.1 jsr CC.IsDigit10
bcc EXP.IntConst
.9 lda #E.CSYN
* sec
rts
*--------------------------------------
EXP.IntConst >PUSHW ZPLineBufPtr EXP.IntConst >PUSHW ZPLineBufPtr
>PUSHWI ZPLineBufPtr >PUSHWI ZPLineBufPtr
>PUSHBI 10 >PUSHBI 10
@ -283,7 +312,7 @@ EXP.IntConst >PUSHW ZPLineBufPtr
>PULLA >PULLA
inc pStack inc pStack
inc pStack inc pStack Y,A = integral
rts rts
*-------------------------------------- *--------------------------------------
@ -346,9 +375,6 @@ EXP.GetNum cpy #SYM.T.FLOAT
* clc * clc
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
* https://riptutorial.com/c/example/16255/character-literals
* 'c', '\n', '\123', '\xAB'
*--------------------------------------
EXP.GetChar ldy ZPPtr2+1 EXP.GetChar ldy ZPPtr2+1
bne .9 bne .9
@ -373,7 +399,6 @@ EXP.GetChar ldy ZPPtr2+1
jsr CORE.GetNCharNB skip ' jsr CORE.GetNCharNB skip '
clc clc
rts rts

View File

@ -7,7 +7,7 @@ F.Decl stz LocalPtr
bcs .99 bcs .99
ldx #$80 CPStmt.fDef state ldx #$80 CPStmt.fDef state
jsr CC.STMT.CPStmt.NEW jsr STMT.CPStmt.NEW
bcs .99 bcs .99
jsr SYM.NewScope jsr SYM.NewScope
@ -62,10 +62,10 @@ F.Decl stz LocalPtr
bne .7 bne .7
jsr SYM.FreeScope discard local scope jsr SYM.FreeScope discard local scope
lda CStackPtr lda CStackPtr
clc clc
adc #8 adc #CPS
sta CStackPtr discard this CPStmt + T/Q sta CStackPtr discard this CPStmt + T/Q
stz LocalPtr reset for DEBUG Message stz LocalPtr reset for DEBUG Message
@ -129,9 +129,9 @@ F.DeclGetTQ lda (ZPLineBufPtr)
lda (ZPLookupSymPtr),y lda (ZPLookupSymPtr),y
cmp #SYM.SC.TYPEDEF cmp #SYM.SC.TYPEDEF
bne .9 bne .9
jmp TYPE.GetTQInYA2 jmp TYPE.GetTQInYA2
.6 >LDYA L.CC.TYPEQUAL .6 >LDYA L.CC.TYPEQUAL
jsr CC.LookupID jsr CC.LookupID
bcs .9 bcs .9

View File

@ -3,7 +3,7 @@ NEW
*-------------------------------------- *--------------------------------------
* Built in Keywords * Built in Keywords
*-------------------------------------- *--------------------------------------
KW.IF jsr KW.BEGIN00 KW.IF jsr STMT.NewCPS00
bcs .99 bcs .99
jsr CC.GetCharNB jsr CC.GetCharNB
@ -34,7 +34,7 @@ KW.IF jsr KW.BEGIN00
cmp #')' cmp #')'
bne .9 bne .9
jmp KW.STMT jmp STMT.SetCPSType
.9 lda #E.CSYN .9 lda #E.CSYN
sec sec
@ -51,7 +51,7 @@ KW.IF.END jsr CORE.GetCharNBNL
bcc .2 bcc .2
.1 lda #'E' define ELSE Label .1 lda #'E' define ELSE Label
jsr KW.NewLabel jsr STMT.NewLabelA
bcs .99 bcs .99
clv pop context clv pop context
@ -66,16 +66,14 @@ KW.IF.END jsr CORE.GetCharNBNL
bcs .99 bcs .99
lda #'E' define ELSE Label lda #'E' define ELSE Label
jsr KW.NewLabel jsr STMT.NewLabelA
bcs .99 bcs .99
inc CStackPtr pop ; or } lda #KW.ELSE.ID replace IF by ELSE keyword
lda #4 replace IF by ELSE keyword
ldy CStackPtr ldy CStackPtr
sta (ZPCCStack),y sta (ZPCCStack),y
jsr KW.STMT jsr STMT.SetCPSType
bcs .99 bcs .99
bit .99 set V : DONT pop context bit .99 set V : DONT pop context
@ -90,13 +88,13 @@ KW.ELSE lda #E.CSYN illegal
rts rts
*-------------------------------------- *--------------------------------------
KW.ELSE.END lda #'X' define EXIT Label KW.ELSE.END lda #'X' define EXIT Label
jsr KW.NewLabel jsr STMT.NewLabelA
bcs .99 bcs .99
clv pop context clv pop context
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.WHILE jsr KW.BEGIN00 KW.WHILE jsr STMT.NewCPS00
bcs .99 bcs .99
lda #'C' define CONT Label lda #'C' define CONT Label
@ -131,7 +129,7 @@ KW.WHILE jsr KW.BEGIN00
cmp #')' cmp #')'
bne .9 bne .9
jmp KW.STMT jmp STMT.SetCPSType
.9 lda #E.CSYN .9 lda #E.CSYN
sec sec
@ -142,7 +140,7 @@ KW.WHILE.END >LDYA L.PCC.SLEEP
bcs .99 bcs .99
lda #'C' lda #'C'
jsr KW.GetLabel jsr STMT.GetLabelA
bcs .99 bcs .99
lda #$4C lda #$4C
@ -150,21 +148,21 @@ KW.WHILE.END >LDYA L.PCC.SLEEP
bcs .99 bcs .99
lda #'B' define BREAK Label lda #'B' define BREAK Label
jsr KW.NewLabel jsr STMT.NewLabelA
bcs .99 bcs .99
clv pop context clv pop context
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.DO jsr KW.BEGIN00 KW.DO jsr STMT.NewCPS00
bcs .99 bcs .99
lda #'C' define CONT Label lda #'C' define CONT Label
jsr SYM.NewA jsr SYM.NewA
bcs .99 bcs .99
jmp KW.STMT jmp STMT.SetCPSType
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
@ -187,7 +185,7 @@ KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
jsr KW.TestnZero jsr KW.TestnZero
lda #'C' lda #'C'
jsr KW.GetLabel jsr STMT.GetLabelA
bcs .99 bcs .99
lda #$4C emit JMP cont lda #$4C emit JMP cont
@ -195,7 +193,7 @@ KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
bcs .99 bcs .99
lda #'B' define BREAK Label lda #'B' define BREAK Label
jsr KW.NewLabel jsr STMT.NewLabelA
bcs .99 bcs .99
jsr CC.GetCharNB jsr CC.GetCharNB
@ -237,7 +235,7 @@ KW.FOR jsr CC.GetCharNB
cmp #'(' cmp #'('
bne .29 bne .29
jsr KW.BEGIN00 jsr STMT.NewCPS00
bcs .29 bcs .29
jsr CORE.GetNCharNB skip '(' jsr CORE.GetNCharNB skip '('
@ -325,7 +323,7 @@ KW.FOR jsr CC.GetCharNB
jsr SYM.NewA jsr SYM.NewA
bcs .99 bcs .99
jmp KW.STMT jmp STMT.SetCPSType
.9 lda #E.CSYN .9 lda #E.CSYN
sec sec
@ -337,7 +335,7 @@ KW.FOR.END lda #$60
bcs .99 bcs .99
lda #'B' define BREAK Label lda #'B' define BREAK Label
jsr KW.NewLabel jsr STMT.NewLabelA
bcs .99 bcs .99
clv pop context clv pop context
@ -362,21 +360,27 @@ KW.SWITCH jsr CC.GetCharNB
cpy #SYM.T.UCHAR cpy #SYM.T.UCHAR
bcc .97 bcc .97
cpy #SYM.T.FLOAT cpy #SYM.T.ULONG
bcs .97 bcs .97
phy cpy #SYM.T.SINT+1
tya bcs .1
jsr CC.Push push integral type
ply >LDYA L.PCC.8to16 make char an int
jsr CODE.EmitPCC
bcs .99 bcs .99
lda CC.TYPESIZE-1,y .1 >LDYAI 256
>SYSCALL GetMem
bcs .99
txa
jsr CC.Push push CPS.hMEM
jsr CC.Push push SizeOf(type) lda #0
jsr CC.Push push CPS.Ptr
bcs .99 bcs .99
jsr KW.BEGIN jsr STMT.NewCPS
bcs .99 bcs .99
jsr CC.GetCharNB jsr CC.GetCharNB
@ -385,7 +389,15 @@ KW.SWITCH jsr CC.GetCharNB
cmp #')' cmp #')'
bne .98 bne .98
jmp KW.STMT lda #'J'
jsr STMT.LookupLabelA
bcs .99
lda #$4C emit JMP JmpTable
jsr CODE.TOABSYX
bcs .99
jmp STMT.SetCPSType
.97 lda #E.TMISMATCH .97 lda #E.TMISMATCH
sec sec
@ -393,58 +405,169 @@ KW.SWITCH jsr CC.GetCharNB
.98 lda #E.CSYN .98 lda #E.CSYN
sec sec
.99 rts .99
KW.SWITCH.RTS rts
*-------------------------------------- *--------------------------------------
KW.SWITCH.END KW.SWITCH.END lda #'J' define JMP Label
lda #'B' define BREAK Label jsr STMT.NewLabelA
jsr KW.NewLabel bcs KW.SWITCH.RTS
lda CStackPtr
clc
adc #CPS.hMEM
tay
lda (ZPCCStack),y
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda CStackPtr
clc
adc #CPS.Ptr
tay
lda (ZPCCStack),y
sta ZPPtr2+1
stz ZPPtr2
.1 ldy ZPPtr2
cpy ZPPtr2+1
beq .2
lda (ZPPtr1),y
pha
iny
lda (ZPPtr1),y
tax
pla
jsr CODE.LDAXI
bcs .99 bcs .99
>LDYA L.PCC.JmpOnYA
jsr CODE.EmitPCC
bcs .99
ldy ZPPtr2
iny
iny
lda (ZPPtr1),y
tax
iny
lda (ZPPtr1),y
iny
sty ZPPtr2
tay
lda #$4C emit JMP Case ...
jsr CODE.TOABSYX
bcs .99
bra .1
.2 >LDYA L.PCC.Pop16
jsr CODE.EmitPCC
bcs .99
lda #'D'
jsr STMT.LookupLabelA
bcs .3
lda #$4C emit JMP Default
jsr CODE.TOABSYX
bcs .99
.3 lda #'B' define BREAK Label
jsr STMT.NewLabelA
bcs .99
lda CStackPtr
clc
adc #CPS.hMEM
tay
lda (ZPCCStack),y
>SYSCALL FreeMem
clv pop context clv pop context
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.CASE ldy CStackPtr KW.CASE ldy CStackPtr
beq .9 beq .98
iny skip ; or }
lda (ZPCCStack),y lda (ZPCCStack),y
cmp #10 SWITCH ?? cmp #KW.SWITCH.ID SWITCH ??
bne .9 bne .98
tya
clc
adc #CPS.hMEM
tay
lda (ZPCCStack),y
>SYSCALL GetMemPtr
>STYA ZPPtr1
jsr EXP.GetIntegral
bcs .99
>STYA ZPPtr2
lda CStackPtr lda CStackPtr
clc clc
adc #7 adc #CPS.Ptr
tay
lda (ZPCCStack),y
tay tay
lda (ZPCCStack),y type lda ZPPtr2
tay sta (ZPPtr1),y
lda #0 for integral type iny
lda ZPPtr2+1
sta (ZPPtr1),y
iny
jsr EXP.Eval lda ZPCCCode
bcs .99 sta (ZPPtr1),y
iny
lda ZPCCCode+1
sta (ZPPtr1),y
iny
beq .97
phy
lda CStackPtr
clc
adc #CPS.Ptr
tay
pla
sta (ZPCCStack),y
jsr CC.GetCharNB jsr CC.GetCharNB
bcs .9 bcs .98
cmp #':' cmp #':'
bne .9 bne .98
jsr CORE.GetNCharNB skip ':' jsr CORE.GetNCharNB skip ':'
clc clc
rts rts
.9 lda #E.CSYN .97 lda #E.BUF
sec
rts
.98 lda #E.CSYN
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.DEFAULT ldy CStackPtr KW.DEFAULT ldy CStackPtr
beq .9 beq .9
iny skip ; or }
lda (ZPCCStack),y lda (ZPCCStack),y
cmp #10 SWITCH ?? cmp #KW.SWITCH.ID
bne .9 bne .9
jsr CC.GetCharNB jsr CC.GetCharNB
@ -455,8 +578,8 @@ KW.DEFAULT ldy CStackPtr
jsr CORE.GetNCharNB skip ':' jsr CORE.GetNCharNB skip ':'
clc lda #'D' define DEFAULT Label
rts jmp STMT.NewLabelA
.9 lda #E.CSYN .9 lda #E.CSYN
sec sec
@ -464,7 +587,7 @@ KW.DEFAULT ldy CStackPtr
*-------------------------------------- *--------------------------------------
KW.BREAK lda #'B' KW.BREAK lda #'B'
jsr KW.LookupLabel jsr STMT.LookupLabelA
bcs .9 bcs .9
lda #$4C emit JMP break lda #$4C emit JMP break
@ -476,7 +599,7 @@ KW.BREAK lda #'B'
*-------------------------------------- *--------------------------------------
KW.CONTINUE lda #'C' KW.CONTINUE lda #'C'
jsr KW.LookupLabel jsr STMT.LookupLabelA
bcs .9 bcs .9
lda #$4C emit JMP cont lda #$4C emit JMP cont
@ -489,13 +612,12 @@ KW.CONTINUE lda #'C'
KW.RETURN ldy CStackPtr KW.RETURN ldy CStackPtr
beq .9 beq .9
.1 iny skip ; or } .1 lda (ZPCCStack),y CPS.KW
lda (ZPCCStack),y
bmi .7 f() bmi .7 f()
tya tya
clc clc
adc #5 skip CPStmt (6 bytes) adc #CPS skip CPStmt (6 bytes)
tay tay
bcc .1 bcc .1
@ -503,21 +625,18 @@ KW.RETURN ldy CStackPtr
sec sec
.99 rts .99 rts
.7 iny skip bState .7 tya
iny skip Locals clc
adc #CPS.T
iny tay
iny skip CPSID
iny get SYM.T
lda (ZPCCStack),y lda (ZPCCStack),y
pha pha
iny get SYM.Q iny get CPS.Q
lda (ZPCCStack),y lda (ZPCCStack),y
ply ply T
jsr EXP.Eval jsr EXP.Eval
bcs .99 bcs .99
@ -535,135 +654,6 @@ KW.SIZEOF
sec sec
rts rts
*-------------------------------------- *--------------------------------------
KW.BEGIN00 lda #0
jsr CC.Push no T/Q
bcs KW.BEGIN.RTS
jsr CC.Push
bcs KW.BEGIN.RTS
KW.BEGIN jsr SYM.NewCPSID
bcs .99
>LDA.G CC.CPSPFX+3
jsr CC.Push
bcs .99
>LDA.G CC.CPSPFX+2
jsr CC.Push
bcs .99
lda LocalPtr Locals
jsr CC.Push
bcs .99
lda #0 bState
jsr CC.Push
bcs .99
>LDA.G CC.CmdSave
jmp CC.Push
.99
KW.BEGIN.RTS rts
*--------------------------------------
KW.STMT jsr CORE.GetNCharNBNL
bcs .9
cmp #'{'
bne .1
jsr CORE.GetNCharNB skip '{'
bcs .99
lda #'}'
jmp CC.Push
.1 lda #';'
jmp CC.Push
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
KW.NewLabel pha
lda CStackPtr
clc
adc #4
tay
lda (ZPCCStack),y
pha
iny
lda (ZPCCStack),y
ply
>STYA.G CC.CPSPFX+2
pla
jmp SYM.NewA
*--------------------------------------
KW.GetLabel pha
lda CStackPtr
clc
adc #4
tay
lda (ZPCCStack),y
pha
iny
lda (ZPCCStack),y
ply
>STYA.G CC.CPSPFX+2
pla
jmp SYM.LookupA
*--------------------------------------
KW.LookupLabel pha
ldy CStackPtr
sty ArgIndex
.1 ldy ArgIndex
beq .9
iny skip ; or }
lda (ZPCCStack),y
bmi .9 f()
iny
iny
iny
lda (ZPCCStack),y
pha
iny
lda (ZPCCStack),y
iny
iny
iny
sty ArgIndex
ply
>STYA.G CC.CPSPFX+2
pla
pha
jsr SYM.LookupA
bcs .1
pla
.8 rts
.9 pla
lda #E.CSYN
sec
.99 rts
*--------------------------------------
* Input : Value on Stack, Y,A = Type/Qual * Input : Value on Stack, Y,A = Type/Qual
*-------------------------------------- *--------------------------------------
KW.TestZero jsr EXP.GetYASizeOfInAXC KW.TestZero jsr EXP.GetYASizeOfInAXC

View File

@ -33,19 +33,19 @@ PCC.FH.LIBS .EQ *-PCC.FH.ORG
PCC.FH.INIT >LDYA PCC.FH.ORG+PCC.FH.LIBS PCC.FH.INIT >LDYA PCC.FH.ORG+PCC.FH.LIBS
>STYA ZS.RT.Ptr1 >STYA ZS.RT.Ptr1
ldx #0 ldx #0
.1 lda (ZS.RT.Ptr1) .1 lda (ZS.RT.Ptr1)
beq .8 beq .8
phx phx
>LDYA ZS.RT.Ptr1 >LDYA ZS.RT.Ptr1
>SYSCALL LoadLib >SYSCALL LoadLib
plx plx
bcs .9 bcs .9
sta PCC.PH.hLIBs,x sta PCC.PH.hLIBs,x
phx phx
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
@ -57,32 +57,32 @@ PCC.FH.INIT >LDYA PCC.FH.ORG+PCC.FH.LIBS
inx inx
ldy #0 ldy #0
.2 iny .2 iny
lda (ZS.RT.Ptr1),y lda (ZS.RT.Ptr1),y
bne .2 bne .2
tya tya
sec sec
adc ZS.RT.Ptr1 adc ZS.RT.Ptr1
sta ZS.RT.Ptr1 sta ZS.RT.Ptr1
bcc .1 bcc .1
inc ZS.RT.Ptr1+1 inc ZS.RT.Ptr1+1
bra .1 bra .1
.8 clc .8 clc
.9 rts .9 rts
PCC.FH.QUIT ldx #12 PCC.FH.QUIT ldx #12
.1 lda PCC.PH.hLIBs,x .1 lda PCC.PH.hLIBs,x
beq .2 beq .2
phx phx
>SYSCALL UnloadLib >SYSCALL UnloadLib
plx plx
.2 dex .2 dex
dex dex
dex dex
@ -93,7 +93,7 @@ PCC.FH.QUIT ldx #12
rts rts
PCC.PH.hLIBs .DA #0 PCC.PH.hLIBs .DA #0
PCC.PH.JMPLIBs jmp $FFFF PCC.PH.JMPLIBs jmp $FFFF
.DA #0 .DA #0
jmp $FFFF jmp $FFFF
.DA #0 .DA #0
@ -139,7 +139,7 @@ PCC.FH.RUN lda #0
>PUSHA >PUSHA
>PUSHA int ARGC (hi byte) >PUSHA int ARGC (hi byte)
ldy #S.PS.ARGC ldy #S.PS.ARGC
lda (pPS),y lda (pPS),y
>PUSHA int ARGC (lo byte) >PUSHA int ARGC (lo byte)
@ -214,6 +214,31 @@ PCC.SetRetValue .DA #PCC.SetRetValue.L
PCC.SetRetValue.L .EQ *-PCC.SetRetValue PCC.SetRetValue.L .EQ *-PCC.SetRetValue
*-------------------------------------- *--------------------------------------
PCC.8to16 .DA #PCC.8to16.L
lda (pStack)
pha
lda #0
sta (pStack)
pla
>PUSHA
PCC.8to16.L .EQ *-PCC.8to16
*--------------------------------------
PCC.JmpOnYA .DA #PCC.JmpOnYA.L
cmp (pStack)
bne .2+5 skip JMP abs
txa
ldy #1
cmp (pStack),y
.2 bne .2+5 skip JMP abs
PCC.JmpOnYA.L .EQ *-PCC.JmpOnYA
*--------------------------------------
PCC.Pop16 .DA #PCC.Pop16.L
inc pStack
inc pStack
PCC.Pop16.L .EQ *-PCC.Pop16
*--------------------------------------
PCC.TestZero1 .DA #PCC.TestZero1.L PCC.TestZero1 .DA #PCC.TestZero1.L
>PULLA >PULLA
tay tay
@ -464,14 +489,14 @@ PCC.Inc2 .DA #PCC.Inc2.L
inc inc
sta (ZS.RT.Ptr2) sta (ZS.RT.Ptr2)
bne .1 bne .1
ldy #1 ldy #1
lda (ZS.RT.Ptr2),y lda (ZS.RT.Ptr2),y
inc inc
sta (ZS.RT.Ptr2),y sta (ZS.RT.Ptr2),y
.1 .1
PCC.Inc2.L .EQ *-PCC.Inc2 PCC.Inc2.L .EQ *-PCC.Inc2
*-------------------------------------- *--------------------------------------
PCC.Inc4 .DA #PCC.Inc4.L PCC.Inc4 .DA #PCC.Inc4.L
@ -479,20 +504,20 @@ PCC.Inc4 .DA #PCC.Inc4.L
inc inc
sta (ZS.RT.Ptr2) sta (ZS.RT.Ptr2)
bne .2 bne .2
ldy #1 ldy #1
.1 lda (ZS.RT.Ptr2),y .1 lda (ZS.RT.Ptr2),y
inc inc
sta (ZS.RT.Ptr2),y sta (ZS.RT.Ptr2),y
beq .2 beq .2
iny iny
cpy #4 cpy #4
bne .1 bne .1
.2 .2
PCC.Inc4.L .EQ *-PCC.Inc4 PCC.Inc4.L .EQ *-PCC.Inc4
*-------------------------------------- *--------------------------------------
PCC.Dec1 .DA #PCC.Dec1.L PCC.Dec1 .DA #PCC.Dec1.L
@ -508,14 +533,14 @@ PCC.Dec2 .DA #PCC.Dec2.L
sta (ZS.RT.Ptr2) sta (ZS.RT.Ptr2)
plp plp
bne .1 bne .1
ldy #1 ldy #1
lda (ZS.RT.Ptr2),y lda (ZS.RT.Ptr2),y
dec dec
sta (ZS.RT.Ptr2),y sta (ZS.RT.Ptr2),y
.1 .1
PCC.Dec2.L .EQ *-PCC.Dec2 PCC.Dec2.L .EQ *-PCC.Dec2
*-------------------------------------- *--------------------------------------
PCC.Dec4 .DA #PCC.Dec4.L PCC.Dec4 .DA #PCC.Dec4.L
@ -524,31 +549,31 @@ PCC.Dec4 .DA #PCC.Dec4.L
sbc #0 sbc #0
sta (ZS.RT.Ptr2) sta (ZS.RT.Ptr2)
bcs .2 bcs .2
ldy #1 ldy #1
.1 lda (ZS.RT.Ptr2),y .1 lda (ZS.RT.Ptr2),y
sbc #0 sbc #0
sta (ZS.RT.Ptr2),y sta (ZS.RT.Ptr2),y
bcs .2 bcs .2
iny iny
cpy #4 cpy #4
bne .1 bne .1
.2 .2
PCC.Dec4.L .EQ *-PCC.Dec4 PCC.Dec4.L .EQ *-PCC.Dec4
*-------------------------------------- *--------------------------------------
PCC.BOPS.bMUL .DA #PCC.BOPS.bMUL.L PCC.BOPS.bMUL .DA #PCC.BOPS.bMUL.L
ldx #0 result ldx #0 result
>PULLA >PULLA
tay b2 tay b2
.1 tya .1 tya
beq .8 beq .8
lsr lsr
tay tay
bcc .2 bcc .2
@ -557,7 +582,7 @@ PCC.BOPS.bMUL .DA #PCC.BOPS.bMUL.L
txa txa
adc (pStack) b1 adc (pStack) b1
tax tax
.2 lda (pStack) b1*2 .2 lda (pStack) b1*2
asl asl
sta (pStack) sta (pStack)
@ -565,7 +590,7 @@ PCC.BOPS.bMUL .DA #PCC.BOPS.bMUL.L
.8 txa .8 txa
sta (pStack) sta (pStack)
PCC.BOPS.bMUL.L .EQ *-PCC.BOPS.bMUL PCC.BOPS.bMUL.L .EQ *-PCC.BOPS.bMUL
*-------------------------------------- *--------------------------------------
PCC.BOPS.cMUL PCC.BOPS.cMUL
@ -592,39 +617,39 @@ PCC.BOPS.SUB .DA #PCC.BOPS.SUB.L
sbc (pStack) sbc (pStack)
sta (pStack),y sta (pStack),y
inc pStack inc pStack
PCC.BOPS.SUB.L .EQ *-PCC.BOPS.SUB PCC.BOPS.SUB.L .EQ *-PCC.BOPS.SUB
*-------------------------------------- *--------------------------------------
PCC.BOPS.SHL .DA #PCC.BOPS.SHL.L PCC.BOPS.SHL .DA #PCC.BOPS.SHL.L
>PULLA >PULLA
tax tax
beq .8 beq .8
lda (pStack) lda (pStack)
.1 asl .1 asl
dex dex
bne .1 bne .1
sta (pStack) sta (pStack)
.8 .8
PCC.BOPS.SHL.L .EQ *-PCC.BOPS.SHL PCC.BOPS.SHL.L .EQ *-PCC.BOPS.SHL
*-------------------------------------- *--------------------------------------
PCC.BOPS.SHR .DA #PCC.BOPS.SHR.L PCC.BOPS.SHR .DA #PCC.BOPS.SHR.L
>PULLA >PULLA
tax tax
beq .8 beq .8
lda (pStack) lda (pStack)
.1 lsr .1 lsr
dex dex
bne .1 bne .1
sta (pStack) sta (pStack)
.8 .8
PCC.BOPS.SHR.L .EQ *-PCC.BOPS.SHR PCC.BOPS.SHR.L .EQ *-PCC.BOPS.SHR
*-------------------------------------- *--------------------------------------
PCC.BOPS.L .DA #PCC.BOPS.L.L PCC.BOPS.L .DA #PCC.BOPS.L.L
>PULLA >PULLA
@ -634,7 +659,7 @@ PCC.BOPS.L .DA #PCC.BOPS.L.L
lda #0 lda #0
sta (pStack) sta (pStack)
rts rts
.8 lda #1 .8 lda #1
sta (pStack) sta (pStack)
PCC.BOPS.L.L .EQ *-PCC.BOPS.L PCC.BOPS.L.L .EQ *-PCC.BOPS.L
@ -648,7 +673,7 @@ PCC.BOPS.G .DA #PCC.BOPS.G.L
.1 lda #0 .1 lda #0
sta (pStack) sta (pStack)
rts rts
.8 lda #1 .8 lda #1
sta (pStack) sta (pStack)
PCC.BOPS.G.L .EQ *-PCC.BOPS.G PCC.BOPS.G.L .EQ *-PCC.BOPS.G
@ -662,7 +687,7 @@ PCC.BOPS.LE .DA #PCC.BOPS.LE.L
lda #0 lda #0
sta (pStack) sta (pStack)
rts rts
.8 lda #1 .8 lda #1
sta (pStack) sta (pStack)
PCC.BOPS.LE.L .EQ *-PCC.BOPS.LE PCC.BOPS.LE.L .EQ *-PCC.BOPS.LE
@ -675,7 +700,7 @@ PCC.BOPS.GE .DA #PCC.BOPS.GE.L
lda #0 lda #0
sta (pStack) sta (pStack)
rts rts
.8 lda #1 .8 lda #1
sta (pStack) sta (pStack)
PCC.BOPS.GE.L .EQ *-PCC.BOPS.GE PCC.BOPS.GE.L .EQ *-PCC.BOPS.GE
@ -684,10 +709,10 @@ PCC.BOPS.EQ .DA #PCC.BOPS.EQ.L
>PULLA >PULLA
cmp (pStack) cmp (pStack)
beq .1 beq .1
lda #0 lda #0
clc clc
.1 ror .1 ror
sta (pStack) sta (pStack)
@ -700,7 +725,7 @@ PCC.BOPS.NE .DA #PCC.BOPS.NE.L
PCC.BOPS.NE.L .EQ *-PCC.BOPS.NE PCC.BOPS.NE.L .EQ *-PCC.BOPS.NE
*-------------------------------------- *--------------------------------------
PCC.BOPS.LAND PCC.BOPS.LAND
*-------------------------------------- *--------------------------------------
PCC.BOPS.AND .DA #PCC.BOPS.AND.L PCC.BOPS.AND .DA #PCC.BOPS.AND.L
>PULLA >PULLA
@ -708,7 +733,7 @@ PCC.BOPS.AND .DA #PCC.BOPS.AND.L
sta (pStack) sta (pStack)
PCC.BOPS.AND.L .EQ *-PCC.BOPS.AND PCC.BOPS.AND.L .EQ *-PCC.BOPS.AND
*-------------------------------------- *--------------------------------------
PCC.BOPS.LOR PCC.BOPS.LOR
*-------------------------------------- *--------------------------------------
PCC.BOPS.OR .DA #PCC.BOPS.OR.L PCC.BOPS.OR .DA #PCC.BOPS.OR.L
>PULLA >PULLA

View File

@ -22,7 +22,7 @@ STMT.Get jsr CC.GetCharNB
*-------------------------------------- *--------------------------------------
jsr CORE.GetNCharNB jsr CORE.GetNCharNB
bcs .9 bcs .9
* >DEBUG
ldy #SYM.Q ldy #SYM.Q
lda (ZPLookupSymPtr),y lda (ZPLookupSymPtr),y
pha pha
@ -121,11 +121,25 @@ STMT.SetVar stz ExpState
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
*--------------------------------------
STMT.Stmt.END ldy CStackPtr
beq .8
iny CPS.TERM
lda (ZPCCStack),y
cmp #'}'
beq .8
cmp #';' must be ';' on stack....
bra STMT.POP
.8 clc
rts
*-------------------------------------- *--------------------------------------
* X = KW.ID * X = KW.ID
*-------------------------------------- *--------------------------------------
CC.STMT.CPStmt.NEW STMT.CPStmt.NEW >LDA.G CC.CPSID+1
>LDA.G CC.CPSID+1
jsr CC.Push jsr CC.Push
bcs .99 bcs .99
@ -141,58 +155,50 @@ CC.STMT.CPStmt.NEW
jsr CC.Push jsr CC.Push
bcs .99 bcs .99
txa lda #'}'
jsr CC.Push jsr CC.Push
bcs .99 bcs .99
lda #'}' txa
jmp CC.Push jmp CC.Push
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
CC.STMT.Stmt.END STMT.CPStmt.END ldy CStackPtr
jsr CC.Get beq STMT.POP.9
bcs .8
cmp #'}'
beq .8
cmp #';' must be ';' on stack....
bra CC.STMT.POP
.8 clc
CC.STMT.Stmt.RTS
rts
*--------------------------------------
CC.STMT.CPStmt.END
jsr CC.Get
bcs CC.STMT.Stmt.RTS
cmp #'}' must be '}' on stack....
CC.STMT.POP bne .98
iny iny
lda (ZPCCStack),y lda (ZPCCStack),y
jsr .7 cmp #'}' must be '}' on stack....
STMT.POP bne .9
dey CPS.KW
lda (ZPCCStack),y
jsr STMT.CLOSE
bcs .99 bcs .99
bvs .1 DONT POP reused context (ELSE....) bvs .1 DONT POP reused context (ELSE....)
lda CStackPtr ldy #CPS.LOCAL
* clc lda (ZPCCStack),y
adc #7
sta CStackPtr
jsr CC.Pop Locals
sta LocalPtr sta LocalPtr
lda CStackPtr
* clc
adc #CPS
sta CStackPtr
.1 clc .1 clc
.99 rts
.9
STMT.POP.9 lda #E.STACKERROR
sec
rts rts
*-------------------------------------- *--------------------------------------
.7 tax STMT.CLOSE tax
bmi .8 bmi .8
jmp (J.CC.KW.END,x) jmp (J.CC.KW.END,x)
@ -203,6 +209,188 @@ CC.STMT.POP bne .98
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
STMT.NewCPS00 lda #0
jsr CC.Push no T/Q
bcs STMT.NewCPS.RTS
jsr CC.Push
bcs STMT.NewCPS.RTS
STMT.NewCPS jsr STMT.NewCPSID
bcs .99
lda #'*'
>SYSCALL putchar
>LEA.G CC.CPSPFX+2
>SYSCALL puts
* >DEBUG
>LDA.G CC.CPSPFX+3
jsr CC.Push
bcs .99
>LDA.G CC.CPSPFX+2
jsr CC.Push
bcs .99
lda LocalPtr Locals
jsr CC.Push
bcs .99
lda #0 bState
jsr CC.Push
bcs .99
lda #';' CPS.TERM
jsr CC.Push
bcs .99
>LDA.G CC.CmdSave
jmp CC.Push
.99
STMT.NewCPS.RTS rts
*--------------------------------------
STMT.SetCPSType jsr CORE.GetNCharNBNL
bcs .9
ldx #';'
cmp #'{'
bne .1
jsr CORE.GetNCharNB skip '{'
bcs .99
ldx #'}'
.1 txa
ldy CStackPtr
iny CPS.TERM
sta (ZPCCStack),y
.8 clc
rts
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
STMT.NewLabelA pha
lda CStackPtr
jsr STMT.GetCPSIDA
* lda #'+'
* >SYSCALL putchar
* pla
* pha
* >SYSCALL putchar
* >LEA.G CC.CPSPFX+1
* >SYSCALL puts
* >DEBUG
pla
jmp SYM.NewA
*--------------------------------------
STMT.GetLabelA pha
lda CStackPtr
jsr STMT.GetCPSIDA
* lda #'?'
* >SYSCALL putchar
* pla
* pha
* >SYSCALL putchar
* >LEA.G CC.CPSPFX+1
* >SYSCALL puts
* >DEBUG
pla
jmp SYM.LookupA
*--------------------------------------
STMT.LookupLabelA
pha
ldy CStackPtr
sty ArgIndex
lda ArgIndex
beq .9
.1 jsr STMT.GetCPSIDA
* lda #'!'
* >SYSCALL putchar
* pla
* pha
* >SYSCALL putchar
* >LEA.G CC.CPSPFX+1
* >SYSCALL puts
* >DEBUG
pla
pha
jsr SYM.LookupA
bcc .8
lda ArgIndex
clc
adc #CPS
sta ArgIndex
bne .1
.9 lda #E.NOKEY
plx
* sec
rts
.8 pla
* clc
rts
*--------------------------------------
STMT.GetCPSIDA clc
adc #CPS.CPSID
tay
lda (ZPCCStack),y
pha
iny
lda (ZPCCStack),y
ply
>STYA.G CC.CPSPFX+2
rts
*--------------------------------------
STMT.NewCPSID >LDYA.G CC.CPSID
>STYA.G CC.CPSPFX+2
>LDA.G CC.CPSID+1
inc
cmp #'Z'+1
bne .1
dey CC.CPSID
lda (pData),y
inc
cmp #'Z'+1
beq .9
sta (pData),y
lda #'A'
iny CC.CPSID+1
.1 sta (pData),y
clc
rts
.9 lda #E.OOH
* sec
rts
*--------------------------------------
MAN MAN
SAVE usr/src/bin/cc.s.stmt SAVE usr/src/bin/cc.s.stmt
LOAD usr/src/bin/cc.s LOAD usr/src/bin/cc.s

View File

@ -144,7 +144,7 @@ SYM.SetAddr ldy #SYM.SizeOf
jsr SYM.GetSymSizeOfInAXC jsr SYM.GetSymSizeOfInAXC
jsr SYM.SetSizeOf jsr SYM.SetSizeOf
.1 ldy #SYM.Q .1 ldy #SYM.Q
lda (ZPSymBufPtr),y lda (ZPSymBufPtr),y
and #SYM.Q.FUNC and #SYM.Q.FUNC
@ -388,7 +388,7 @@ SYM.AddWord phy
sta (ZPSymBufPtr),y sta (ZPSymBufPtr),y
dey dey
pla Y pla Y
pha pha
sta (ZPSymBufPtr),y sta (ZPSymBufPtr),y
@ -427,7 +427,7 @@ SYM.AddName jsr CC.GetCharNB
iny iny
dex dex
bne .1 bne .1
tya tya
jsr CC.SkipA jsr CC.SkipA
@ -460,34 +460,6 @@ SYM.AddByte pha
sec sec
rts rts
*-------------------------------------- *--------------------------------------
SYM.NewCPSID >LDYA.G CC.CPSID
>STYA.G CC.CPSPFX+2
>LDA.G CC.CPSID+1
inc
cmp #'Z'+1
bne .1
dey CC.CPSID
lda (pData),y
inc
cmp #'Z'+1
beq .9
sta (pData),y
lda #'A'
iny CC.CPSID+1
.1 sta (pData),y
clc
rts
.9 lda #E.OOH
* sec
rts
*--------------------------------------
SYM.NewA bit bPass2 SYM.NewA bit bPass2
bmi .8 bmi .8

View File

@ -63,6 +63,20 @@ SU.F.BitO .EQ 4
SU.F.BitW .EQ 5 SU.F.BitW .EQ 5
SU.F.Name .EQ 6 SU.F.Name .EQ 6
*-------------------------------------- *--------------------------------------
CPS.hMEM .EQ 7 switch/case
CPS.Ptr .EQ 6
CPS.Q .EQ 7 f
CPS.T .EQ 6
CPS.CPSID .EQ 4
CPS.LOCAL .EQ 3
CPS.STATE .EQ 2
CPS.TERM .EQ 1
CPS.KW .EQ 0
*
CPS .EQ 8
*--------------------------------------
* Zero Page Segment, up to 32 bytes * Zero Page Segment, up to 32 bytes
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
@ -173,9 +187,11 @@ J.CC.POSTOPS .DA EXP.postinc
*-------------------------------------- *--------------------------------------
J.CC.KW .DA KW.IF J.CC.KW .DA KW.IF
.DA KW.WHILE .DA KW.WHILE
KW.ELSE.ID .EQ *-J.CC.KW
.DA KW.ELSE .DA KW.ELSE
.DA KW.DO .DA KW.DO
.DA KW.FOR .DA KW.FOR
KW.SWITCH.ID .EQ *-J.CC.KW
.DA KW.SWITCH .DA KW.SWITCH
.DA KW.CASE .DA KW.CASE
.DA KW.DEFAULT .DA KW.DEFAULT
@ -227,6 +243,9 @@ L.PCC.ENTER .DA PCC.ENTER
L.PCC.LEAVE .DA PCC.LEAVE L.PCC.LEAVE .DA PCC.LEAVE
L.PCC.ADDLOCAL .DA PCC.ADDLOCAL L.PCC.ADDLOCAL .DA PCC.ADDLOCAL
L.PCC.SetRetValue .DA PCC.SetRetValue L.PCC.SetRetValue .DA PCC.SetRetValue
L.PCC.8to16 .DA PCC.8to16
L.PCC.JmpOnYA .DA PCC.JmpOnYA
L.PCC.Pop16 .DA PCC.Pop16
L.PCC.TestZero1 .DA PCC.TestZero1 L.PCC.TestZero1 .DA PCC.TestZero1
L.PCC.TestZero2 .DA PCC.TestZero2 L.PCC.TestZero2 .DA PCC.TestZero2
L.PCC.TestZeroX .DA PCC.TestZeroX L.PCC.TestZeroX .DA PCC.TestZeroX
@ -373,7 +392,7 @@ CS.RUN.CLOOP jsr CORE.CompileFile
cmp #MLI.E.EOF cmp #MLI.E.EOF
bne .9 bne .9
jsr CODE.EmitTail jsr CODE.EmitTail
bcs .9 bcs .9
@ -420,13 +439,13 @@ CS.RUN.ARGS inc ArgIndex
.2 cpx #4 .2 cpx #4
bcc .3 bcc .3
inc ArgIndex inc ArgIndex
lda ArgIndex lda ArgIndex
>SYSCALL ArgV >SYSCALL ArgV
bcs .90 bcs .90
jsr FIO.LoadLIB.o jsr FIO.LoadLIB.o
bcc CS.RUN.ARGS bcc CS.RUN.ARGS
@ -473,11 +492,11 @@ CS.DOEVENT sec
*-------------------------------------- *--------------------------------------
CS.QUIT jsr CODE.Quit CS.QUIT jsr CODE.Quit
jsr CORE.Quit jsr CORE.Quit
.1 >LDA.G LibCount .1 >LDA.G LibCount
beq .6 beq .6
dec dec
sta (pData),y sta (pData),y
clc clc
@ -613,7 +632,7 @@ PrintSummary >PUSHW L.MSG.SUMMARY
>PUSHW ZPCCData >PUSHW ZPCCData
>PUSHBI 6 >PUSHBI 6
>SYSCALL PrintF >SYSCALL PrintF
* >DEBUG
rts rts
*-------------------------------------- *--------------------------------------
.INB usr/src/bin/cc.s.code .INB usr/src/bin/cc.s.code

View File

@ -52,42 +52,56 @@ CS.INIT
.1 >INC.G Count .1 >INC.G Count
>SYSCALL ArgV >SYSCALL ArgV
bcs .7 bcs .7
>STYA ZPPtr1 >STYA ZPPtr1
lda (ZPPtr1) lda (ZPPtr1)
cmp #'-' cmp #'-'
bne .4 bne .4
ldy #1 ldy #1
lda (ZPPtr1),y lda (ZPPtr1),y
ldx OptionList ldx OptionList
.2 cmp OptionList,x .2 cmp OptionList,x
beq .3 beq .3
dex dex
bne .2 bne .2
.99 >LDYA L.MSG.USAGE .99 >LDYA L.MSG.USAGE
>SYSCALL PrintF >SYSCALL Puts
lda #E.SYN lda #E.SYN
sec sec
rts rts
.3 ldy OptionVars-1,x .3 ldy OptionVars-1,x
lda #$80 lda #$80
sta (pData),y sta (pData),y
bra .1 bra .1
.4 >LDA.G hInputBuf .4 >LDA.G hInputBuf
bne .5 bne .5
jsr CS.INIT.OPENINPUT jsr CS.INIT.OPENINPUT
bcc .1 scan for any other args bcc .1 scan for any other args
rts rts
.5 >LDA.G hOutputFile .5 >LDA.G hOutputFile
bne .99 bne .99
jsr CS.INIT.CREATEOUTPUT jsr CS.INIT.CREATEOUTPUT
bcc .1 scan for any other args bcc .1 scan for any other args
rts rts
.7 >LDA.G hOutputFile .7 >LDA.G hOutputFile
beq .99 beq .99
>LDYAI 8192 max 256x256 pixels >LDYAI 8192 max 256x256 pixels
>SYSCALL GetMem >SYSCALL GetMem
bcs CS.INIT.RTS bcs CS.INIT.RTS
>STYA ZPCharBufPtr >STYA ZPCharBufPtr
txa txa
>STA.G hCharBuf >STA.G hCharBuf
@ -95,28 +109,32 @@ CS.INIT
CS.INIT.RTS rts CS.INIT.RTS rts
*-------------------------------------- *--------------------------------------
CS.INIT.OPENINPUT CS.INIT.OPENINPUT
>PUSHWZ Aux type >PUSHW ZPPtr1
>PUSHBI 0 Type
>PUSHBI O.RDONLY >PUSHBI O.RDONLY
>LDYA ZPPtr1 >PUSHBI 0 Type
>PUSHWZ Aux type
>SYSCALL LoadFile >SYSCALL LoadFile
bcs CS.INIT.RTS bcs CS.INIT.RTS
>PUSHYA >PUSHYA
txa txa
>STA.G hInputBuf >STA.G hInputBuf
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPInputBufPtr >STYA ZPInputBufPtr
>LDYA L.MSG.FILE.OK >LDYA L.MSG.FILE.OK
>SYSCALL PrintF >SYSCALL PutS
ldy #S.FNT.dfVersion ldy #S.FNT.dfVersion
lda (ZPInputBufPtr),y lda (ZPInputBufPtr),y
bne .99 bne .99
iny iny
lda (ZPInputBufPtr),y lda (ZPInputBufPtr),y
cmp #2 cmp #2
beq .1 beq .1
cmp #3 cmp #3
bne .99 bne .99
.1 asl *2 = Entry Len in Tbl .1 asl *2 = Entry Len in Tbl
>STA.G FNT.Version >STA.G FNT.Version
pha pha
@ -141,26 +159,30 @@ CS.INIT.OPENINPUT
>SYSCALL PrintF >SYSCALL PrintF
clc clc
rts rts
.99 >LDYA L.MSG.HEADER.KO .99 >LDYA L.MSG.HEADER.KO
>SYSCALL PrintF >SYSCALL PutS
lda #E.IBIN lda #E.IBIN
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.INIT.CREATEOUTPUT CS.INIT.CREATEOUTPUT
>PUSHWZ Aux type >PUSHW ZPPtr1
>PUSHBI $CC FON Type
>PUSHBI O.WRONLY+O.CREATE >PUSHBI O.WRONLY+O.CREATE
>LDYA ZPPtr1 >PUSHBI $CC FON Type
>PUSHWZ Aux type
>SYSCALL FOpen >SYSCALL FOpen
bcs .9 bcs .9
>STA.G hOutputFile >STA.G hOutputFile
>LDYAI 256 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
>STYA ZPOutPutBufPtr >STYA ZPOutPutBufPtr
txa txa
>STA.G hOutPutBuf >STA.G hOutPutBuf
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN ldy #S.FNT.dfBreakChar CS.RUN ldy #S.FNT.dfBreakChar
@ -185,6 +207,7 @@ CS.RUN ldy #S.FNT.dfBreakChar
>PUSHA >PUSHA
>LDYA L.MSG.RANGE >LDYA L.MSG.RANGE
>SYSCALL PrintF >SYSCALL PrintF
>LDA.G FON.Header+S.FON.Last >LDA.G FON.Header+S.FON.Last
sec sec
>SBC.G FON.Header+S.FON.First >SBC.G FON.Header+S.FON.First
@ -201,6 +224,7 @@ CS.RUN ldy #S.FNT.dfBreakChar
ply ply
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
>STYA ZPOutPutTblPtr >STYA ZPOutPutTblPtr
txa txa
>STA.G hTblBuf >STA.G hTblBuf
@ -221,12 +245,16 @@ CS.RUN ldy #S.FNT.dfBreakChar
>LDA.G hOutputFile >LDA.G hOutputFile
>SYSCALL FSeek >SYSCALL FSeek
bcc .1 bcc .1
.9 rts .9 rts
.1 >LDA.G FNT.Version .1 >LDA.G FNT.Version
ldx #S.FNT.dfCharTable2 ldx #S.FNT.dfCharTable2
cmp #4 cmp #4
beq .2 beq .2
ldx #S.FNT.dfCharTable3 ldx #S.FNT.dfCharTable3
.2 txa .2 txa
clc clc
adc ZPInputBufPtr adc ZPInputBufPtr
@ -234,6 +262,7 @@ CS.RUN ldy #S.FNT.dfBreakChar
lda #0 lda #0
adc ZPInputBufPtr+1 adc ZPInputBufPtr+1
sta ZPInputTblPtr+1 sta ZPInputTblPtr+1
*--------------------------------------
CS.RUN.LOOP >SLEEP CS.RUN.LOOP >SLEEP
>SYSCALL GetChar >SYSCALL GetChar
@ -241,8 +270,10 @@ CS.RUN.LOOP >SLEEP
cmp #$03 Ctrl-C cmp #$03 Ctrl-C
beq .9 Abort.... beq .9 Abort....
cmp #$13 Ctrl-S cmp #$13 Ctrl-S
bne .3 bne .3
>LDA.G bPause >LDA.G bPause
eor #$FF eor #$FF
sta (pData),y sta (pData),y
@ -265,20 +296,26 @@ CS.RUN.LOOP >SLEEP
jsr CS.RUN.DumpChar jsr CS.RUN.DumpChar
jsr CS.RUN.StoreChar jsr CS.RUN.StoreChar
bcs .9 bcs .9
>INC.G CharIndex >INC.G CharIndex
>DEC.G CharCount >DEC.G CharCount
beq .8 beq .8
lda ZPInputTblPtr lda ZPInputTblPtr
clc clc
>ADC.G FNT.Version >ADC.G FNT.Version
sta ZPInputTblPtr sta ZPInputTblPtr
bcc CS.RUN.LOOP bcc CS.RUN.LOOP
inc ZPInputTblPtr+1 inc ZPInputTblPtr+1
bra CS.RUN.LOOP bra CS.RUN.LOOP
.8 jsr CS.RUN.FlushOutPutBuf .8 jsr CS.RUN.FlushOutPutBuf
bcs .9 bcs .9
jsr CS.RUN.WriteBMAndTbl jsr CS.RUN.WriteBMAndTbl
bcs .9 bcs .9
>LDYA L.MSG.DONE >LDYA L.MSG.DONE
>SYSCALL PrintF >SYSCALL PrintF
lda #0 lda #0
@ -300,11 +337,14 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW
pla pla
and #7 and #7
beq .1 beq .1
inx inx
.1 txa .1 txa
>STA.G CharByteW >STA.G CharByteW
>STA.G CharOutByteW >STA.G CharOutByteW
lda #0 0 -> A -> CharByteW lda #0 0 -> A -> CharByteW
.2 pha .2 pha
clc clc
adc ZPCharBufPtr adc ZPCharBufPtr
@ -319,7 +359,9 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW
inc ZPInputBMPtr inc ZPInputBMPtr
bne .4 bne .4
inc ZPInputBMPtr+1 inc ZPInputBMPtr+1
.4 tay .4 tay
lda TWIST,y lda TWIST,y
sta (ZPPTR1) sta (ZPPTR1)
@ -328,7 +370,9 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW
>ADC.G CharByteW >ADC.G CharByteW
sta ZPPTR1 sta ZPPTR1
bcc .5 bcc .5
inc ZPPTR1+1 inc ZPPTR1+1
.5 dex .5 dex
bne .3 bne .3
@ -336,6 +380,7 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW
inc inc
>CMP.G CharByteW >CMP.G CharByteW
bne .2 bne .2
clc clc
rts rts
*-------------------------------------- *--------------------------------------
@ -356,6 +401,7 @@ CS.RUN.DumpChar >LDA.G CharOutByteW
sta ZPPTR1+1 sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH >LDA.G FON.Header+S.FON.PixH
.1 pha .1 pha
lda #'|' lda #'|'
>SYSCALL PutChar >SYSCALL PutChar
@ -363,25 +409,32 @@ CS.RUN.DumpChar >LDA.G CharOutByteW
>STA.G Count >STA.G Count
ldy #0 ldy #0
.2 lda (ZPPTR1),y .2 lda (ZPPTR1),y
phy phy
ldx #8 ldx #8
.4 lsr .4 lsr
pha pha
lda #' ' lda #' '
bcc .5 bcc .5
lda #'O' lda #'O'
.5 phx .5 phx
>SYSCALL PutChar >SYSCALL PutChar
plx plx
>DEC.G Count >DEC.G Count
beq .6 beq .6
pla Get back BYTE pla Get back BYTE
dex dex
bne .4 bne .4
ply ply
iny iny
bra .2 bra .2
.6 pla .6 pla
pla pla
@ -396,16 +449,19 @@ CS.RUN.DumpChar >LDA.G CharOutByteW
>ADC.G CharByteW >ADC.G CharByteW
sta ZPPTR1 sta ZPPTR1
bcc .7 bcc .7
inc ZPPTR1+1 inc ZPPTR1+1
.7 pla .7 pla
dec dec
bne .1 bne .1
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.ShiftLChar CS.RUN.ShiftLChar
>LDA.G bNoShrink >LDA.G bNoShrink
bmi .9 bmi .9
.1 lda ZPCharBufPtr .1 lda ZPCharBufPtr
sta ZPPTR1 sta ZPPTR1
lda ZPCharBufPtr+1 lda ZPCharBufPtr+1
@ -415,6 +471,7 @@ CS.RUN.ShiftLChar
lda #0 lda #0
pha pha
.2 pla .2 pla
ora (ZPPTR1) ora (ZPPTR1)
pha pha
@ -423,13 +480,18 @@ CS.RUN.ShiftLChar
>ADC.G CharByteW >ADC.G CharByteW
sta ZPPTR1 sta ZPPTR1
bcc .3 bcc .3
inc ZPPTR1+1 inc ZPPTR1+1
.3 dex .3 dex
bne .2 bne .2
pla pla
beq .9 No pixel in first COL, must be SPACE or BREAK beq .9 No pixel in first COL, must be SPACE or BREAK
lsr lsr
bcs .9 bcs .9
lda ZPCharBufPtr lda ZPCharBufPtr
sta ZPPTR1 sta ZPPTR1
lda ZPCharBufPtr+1 lda ZPCharBufPtr+1
@ -440,29 +502,37 @@ CS.RUN.ShiftLChar
.4 >LDA.G CharByteW .4 >LDA.G CharByteW
tay tay
clc clc
.5 dey .5 dey
lda (ZPPTR1),y lda (ZPPTR1),y
ror ror
sta (ZPPTR1),y sta (ZPPTR1),y
tya tya
bne .5 bne .5
lda ZPPTR1 lda ZPPTR1
clc clc
>ADC.G CharByteW >ADC.G CharByteW
sta ZPPTR1 sta ZPPTR1
bcc .6 bcc .6
inc ZPPTR1+1 inc ZPPTR1+1
.6 dex .6 dex
bne .4 bne .4
>DEC.G CharOutPixW >DEC.G CharOutPixW
and #7 and #7
bne .1 bne .1
>DEC.G CharOutByteW >DEC.G CharOutByteW
bra .1 bra .1
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.CutRChar >LDA.G bNoShrink CS.RUN.CutRChar >LDA.G bNoShrink
bmi .9 bmi .9
.1 lda ZPCharBufPtr .1 lda ZPCharBufPtr
sta ZPPTR1 sta ZPPTR1
lda ZPCharBufPtr+1 lda ZPCharBufPtr+1
@ -475,6 +545,7 @@ CS.RUN.CutRChar >LDA.G bNoShrink
dey dey
lda #0 lda #0
pha pha
.2 pla .2 pla
ora (ZPPTR1),y ora (ZPPTR1),y
pha pha
@ -484,14 +555,18 @@ CS.RUN.CutRChar >LDA.G bNoShrink
>ADC.G CharByteW >ADC.G CharByteW
sta ZPPTR1 sta ZPPTR1
bcc .3 bcc .3
inc ZPPTR1+1 inc ZPPTR1+1
.3 ply .3 ply
dex dex
bne .2 bne .2
pla pla
bmi .9 Bit 7 is colored....exit bmi .9 Bit 7 is colored....exit
bne .4 bne .4
tya No bits in this COL tya No bits in this COL
beq .9 was COL 0.....SPACE or BREAK beq .9 was COL 0.....SPACE or BREAK
@ -501,6 +576,7 @@ CS.RUN.CutRChar >LDA.G bNoShrink
asl asl
>STA.G CharOutPixW >STA.G CharOutPixW
bra .1 bra .1
.4 pha .4 pha
>LDA.G CharOutByteW >LDA.G CharOutByteW
asl asl
@ -508,9 +584,11 @@ CS.RUN.CutRChar >LDA.G bNoShrink
asl asl
tax tax
pla pla
.5 dex .5 dex
asl asl
bpl .5 bpl .5
txa txa
>STA.G CharOutPixW >STA.G CharOutPixW
pha pha
@ -521,9 +599,12 @@ CS.RUN.CutRChar >LDA.G bNoShrink
pla pla
and #7 and #7
beq .7 beq .7
inx inx
.7 txa .7 txa
>STA.G CharOutByteW >STA.G CharOutByteW
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.StoreChar CS.RUN.StoreChar
@ -537,13 +618,17 @@ CS.RUN.StoreChar
adc #2 adc #2
sta ZPOutPutTblPtr sta ZPOutPutTblPtr
bcc .1 bcc .1
inc ZPOutPutTblPtr+1 inc ZPOutPutTblPtr+1
.1 >LDA.G CharOutPixW .1 >LDA.G CharOutPixW
jsr CS.RUN.WriteByte jsr CS.RUN.WriteByte
bcs .99 bcs .99
>LDA.G CharOutByteW >LDA.G CharOutByteW
jsr CS.RUN.WriteByte jsr CS.RUN.WriteByte
bcs .99 bcs .99
lda ZPCharBufPtr lda ZPCharBufPtr
sta ZPPTR1 sta ZPPTR1
lda ZPCharBufPtr+1 lda ZPCharBufPtr+1
@ -557,23 +642,30 @@ CS.RUN.StoreChar
.3 lda (ZPPTR1),y .3 lda (ZPPTR1),y
jsr CS.RUN.WriteByte jsr CS.RUN.WriteByte
bcs .9 bcs .9
iny iny
dex dex
bne .3 bne .3
pla pla
dec dec
beq .8 beq .8
pha pha
lda ZPPTR1 lda ZPPTR1
clc clc
>ADC.G CharByteW >ADC.G CharByteW
sta ZPPTR1 sta ZPPTR1
bcc .2 bcc .2
inc ZPPTR1+1 inc ZPPTR1+1
bra .2 bra .2
.8 clc .8 clc
rts rts
.9 plx .9 plx
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
CS.RUN.WriteByte CS.RUN.WriteByte
@ -590,6 +682,7 @@ CS.RUN.WriteByte
tay tay
clc clc
bne .8 bne .8
>PUSHWI 256 >PUSHWI 256
>PUSHW ZPOutPutBufPtr >PUSHW ZPOutPutBufPtr
>LDA.G hOutputFile >LDA.G hOutputFile
@ -598,6 +691,7 @@ CS.RUN.WriteByte
.8 inc ZPOutPutCharOfs .8 inc ZPOutPutCharOfs
bne .9 bne .9
inc ZPOutPutCharOfs+1 inc ZPOutPutCharOfs+1
.9 plx .9 plx
@ -625,17 +719,20 @@ CS.RUN.WriteBMAndTbl
iny iny
dex dex
bne .1 bne .1
>LEA.G FileOffset >LEA.G FileOffset
>PUSHYA >PUSHYA
>PUSHBI SYS.FSeek.SET >PUSHBI SYS.FSeek.SET
>LDA.G hOutputFile >LDA.G hOutputFile
>SYSCALL FSeek >SYSCALL FSeek
bcs .9 bcs .9
>PUSHWI S.FON >PUSHWI S.FON
>PUSHEA.G FON.Header >PUSHEA.G FON.Header
>LDA.G hOutputFile >LDA.G hOutputFile
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9
>LDA.G FON.Header+S.FON.Last >LDA.G FON.Header+S.FON.Last
sec sec
>SBC.G FON.Header+S.FON.First >SBC.G FON.Header+S.FON.First
@ -661,21 +758,27 @@ CS.DOEVENT sec
*-------------------------------------- *--------------------------------------
CS.QUIT >LDA.G hOutPutBuf CS.QUIT >LDA.G hOutPutBuf
beq .1 beq .1
>SYSCALL FreeMem >SYSCALL FreeMem
.1 >LDA.G hOutputFile .1 >LDA.G hOutputFile
beq .2 beq .2
>SYSCALL FClose >SYSCALL FClose
.2 >LDA.G hInputBuf .2 >LDA.G hInputBuf
beq .3 beq .3
>SYSCALL FreeMem >SYSCALL FreeMem
.3 >LDA.G hCharBuf .3 >LDA.G hCharBuf
beq .4 beq .4
>SYSCALL FreeMem >SYSCALL FreeMem
.4 >LDA.G hTblBuf .4 >LDA.G hTblBuf
beq .8 beq .8
>SYSCALL FreeMem >SYSCALL FreeMem
.8 clc .8 clc
@ -685,15 +788,18 @@ CS.END
*-------------------------------------- *--------------------------------------
.INB usr/src/shared/x.twist.g .INB usr/src/shared/x.twist.g
*-------------------------------------- *--------------------------------------
OptionList >PSTR "NnVv" OptionList .PS "NnVv"
OptionVars .DA #bNoShrink,#bNoShrink,#bVerbose,#bVerbose OptionVars .DA #bNoShrink,#bNoShrink,#bVerbose,#bVerbose
MSG.USAGE .AZ "Usage : FNT2FON FNT-File \r\n -V : Verbose Mode\r\n -N : No shrink\r\n" *--------------------------------------
MSG.FILE.OK .AZ "FNT File Loaded, %D Bytes Read\r\n" MSG.USAGE .CS "Usage : FNT2FON FNT-File \r\n"
MSG.HEADER.OK .AZ "FNT File Version : %d, Size : %d x %d pixels, Ascent : %d\r\n" .CS " -V : Verbose Mode\r\n"
MSG.HEADER.KO .AZ "Invalid Input File Format\r\n" .CZ -N : No shrink\r\n"
MSG.RANGE .AZ "First/Last Char : %d/%d, Default : %d, Break : %d\r\n" MSG.FILE.OK .CZ "FNT File Loaded, %D Bytes Read\r\n"
MSG.DUMP .AZ "Caracter ID : %d (0x0%2h), Width(P) : %d, Width(B) : %d\r\n" MSG.HEADER.OK .CZ "FNT File Version : %d, Size : %d x %d pixels, Ascent : %d\r\n"
MSG.DONE .AZ "All Done!!!\r\n" MSG.HEADER.KO .CZ "Invalid Input File Format\r\n"
MSG.RANGE .CZ "First/Last Char : %d/%d, Default : %d, Break : %d\r\n"
MSG.DUMP .CZ "Caracter ID : %d (0x0%2h), Width(P) : %d, Width(B) : %d\r\n"
MSG.DONE .CZ "All Done!!!\r\n"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0

View File

@ -1,6 +1,6 @@
NEW NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF bin/guitest1 .TF bin/guitest1
@ -8,14 +8,14 @@ NEW
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/mli.i .INB inc/mli.i
.INB inc/gfx.i .INB inc/libgui.i
.INB inc/libgui.i
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
hLogo .BS 2 00xx hLogo .BS 2 00xx
hWND .BS 1 hWND .BS 1
hMBAR .BS 1
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -37,7 +37,6 @@ CS.START cld
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.LIBGUI .DA LIBGUI L.LIBGUI .DA LIBGUI
L.MouseData .DA MouseData
L.LOGOFILE .DA LOGOFILE L.LOGOFILE .DA LOGOFILE
L.WND.TITLE .DA WND.TITLE L.WND.TITLE .DA WND.TITLE
L.WND.MBAR .DA WND.MBAR L.WND.MBAR .DA WND.MBAR
@ -63,15 +62,15 @@ CS.RUN >PUSHW L.LOGOFILE
bcs .9 bcs .9
stx hLogo stx hLogo
jsr WND.Test jsr WND.Test
bcs .9 bcs .9
.1 >SLEEP .1 >SLEEP
bra .1 bra .1
clc clc
.9 rts .9 rts
@ -88,8 +87,8 @@ CS.QUIT.RTS rts
*-------------------------------------- *--------------------------------------
WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.MIN WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.MIN
>PUSHW MouseData+S.MOUSE.X1 >PUSHWI 40
>PUSHW MouseData+S.MOUSE.Y1 >PUSHWI 80
>PUSHWI 360 >PUSHWI 360
>PUSHWI 96 >PUSHWI 96
>LIBCALL hLIBGUI,LIBGUI.WND.New >LIBCALL hLIBGUI,LIBGUI.WND.New
@ -107,17 +106,21 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp >LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
>PUSHB hWND >PUSHB hWND
>PUSHBI S.WND.TITLE >PUSHBI S.WND.pTITLE
>PUSHW L.WND.TITLE >PUSHW L.WND.TITLE
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp >LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
>PUSHB hWND >PUSHB hWND
>PUSHBI S.WND.MBAR
>PUSHW L.WND.MBAR >PUSHW L.WND.MBAR
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp >LIBCALL hLIBGUI,LIBGUI.MBAR.New
sta hMBAR
>PUSHB hWND >PUSHB hWND
>PUSHBI S.WND.STATUS >PUSHB hMBAR
>LIBCALL hLIBGUI,LIBGUI.WND.SetMBar
>PUSHB hWND
>PUSHBI S.WND.pSTATUS
>PUSHW L.WND.STATUS >PUSHW L.WND.STATUS
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp >LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
@ -152,97 +155,119 @@ CS.END
LIBGUI .AZ "libgui" LIBGUI .AZ "libgui"
hLIBGUI .BS 1 hLIBGUI .BS 1
*-------------------------------------- *--------------------------------------
MouseData .BS S.MOUSE
*--------------------------------------
LOGOFILE .AZ "${ROOT}A2osX.logo" LOGOFILE .AZ "${ROOT}A2osX.logo"
WND.TITLE .AZ "Window Title" WND.TITLE .AZ "Window Title"
WND.STATUS .AZ "Window status bar message" WND.STATUS .AZ "Window status bar message"
*-------------------------------------- *--------------------------------------
WND.MBAR .DA #.1-* next WND.MBAR .AZ "File"
.DA #0 status .DA WND.MENU.FILE
.DA 0 X1
.DA 0 XT
.DA 0 X2
.DA 0 MENU
.AZ "File"
.1 .DA #.2-* next
.DA #0 status
.DA 0 X1
.DA 0 XT
.DA 0 X2
.DA 0 MENU
.AZ "Edit" .AZ "Edit"
.DA WND.MENU.EDIT
.2 .DA #.3-* next
.DA #0 status
.DA 0 X1
.DA 0 XT
.DA 0 X2
.DA 0 MENU
.AZ "Options" .AZ "Options"
.DA WND.MENU.OPTIONS
.3 .DA #.4-* next
.DA #0 status
.DA 0 X1
.DA 0 XT
.DA 0 X2
.DA 0 MENU
.AZ "?" .AZ "?"
.DA WND.MENU.HELP
.4 .DA #0 .DA #0
*-------------------------------------- *--------------------------------------
WND.MENU.FILE .DA #02 ID WND.MENU.FILE .DA #S.MITEM.T.ITEM
.DA #S.MITEM.KEYMOD.CTRL .DA #02 ID
.DA #'N' .DA #KEYMOD.CTRL,#'N'
.DA 0 pICON
.AZ "New" .AZ "New"
.DA #04 ID
.DA #S.MITEM.KEYMOD.CTRL .DA #S.MITEM.T.ITEM
.DA #'O' .DA #04 ID
.DA #KEYMOD.CTRL,#'O'
.DA 0 pICON
.AZ "Open..." .AZ "Open..."
.DA #06 ID
.DA #S.MITEM.KEYMOD.CTRL .DA #S.MITEM.T.ITEM
.DA #'S' .DA #06 ID
.DA #KEYMOD.CTRL,#'S'
.DA 0 pICON
.AZ "Save" .AZ "Save"
.DA #08 ID
.DA #S.MITEM.KEYMOD.OA+S.MITEM.KEYMOD.CTRL .DA #S.MITEM.T.ITEM
.DA #'S' .DA #08 ID
.DA #KEYMOD.OA+KEYMOD.CTRL,#'S'
.DA 0 pICON
.AZ "Save As..." .AZ "Save As..."
.DA #10 ID
.DA #S.MITEM.KEYMOD.CTRL .DA #S.MITEM.T.ITEM
.DA #'Q' .DA #10 ID
.DA #KEYMOD.CTRL,#'Q'
.DA 0 pICON
.AZ "Quit" .AZ "Quit"
.DA #0 .DA #0
*-------------------------------------- *--------------------------------------
WND.MENU.EDIT .DA #12 ID WND.MENU.EDIT .DA #S.MITEM.T.ITEM
.DA #S.MITEM.KEYMOD.OA .DA #12 ID
.DA #'X' .DA #KEYMOD.CTRL,#'X'
.DA 0 pICON
.AZ "Cut" .AZ "Cut"
.DA #14 ID
.DA #S.MITEM.KEYMOD.OA .DA #S.MITEM.T.ITEM
.DA #'C' .DA #14 ID
.DA #KEYMOD.CTRL,#'C'
.DA 0 pICON
.AZ "Copy" .AZ "Copy"
.DA #16 ID
.DA #S.MITEM.KEYMOD.OA .DA #S.MITEM.T.ITEM
.DA #'V' .DA #16 ID
.DA #KEYMOD.CTRL,#'V'
.DA 0 pICON
.AZ "Paste" .AZ "Paste"
.DA #0 .DA #0
*-------------------------------------- *--------------------------------------
WND.MENU.OPTIONS .DA #18 ID WND.MENU.OPTIONS
.DA #0 .DA #S.MITEM.T.ITEM
.DA #0 .DA #18 ID
.DA #0,#0
.DA 0 pICON
.AZ "Check Me" .AZ "Check Me"
.DA #S.MITEM.T.SEP
.DA #S.MITEM.T.SUBMENU
.DA WND.MENU.SUB
.DA 0 pICON
.AZ "Sub Menu"
.DA #0 .DA #0
*-------------------------------------- *--------------------------------------
WND.MENU.HELP .DA #20 ID WND.MENU.HELP .DA #S.MITEM.T.ITEM
.DA #0 .DA #20 ID
.DA #0 .DA #0,#0
.DA 0 pICON
.AZ "About..." .AZ "About..."
.DA #0
*--------------------------------------
WND.MENU.SUB .DA #S.MITEM.T.ITEM
.DA #18 ID
.DA #0,#0
.DA 0 pICON
.AZ "Sub 1"
.DA #S.MITEM.T.ITEM
.DA #18 ID
.DA #0,#0
.DA 0 pICON
.AZ "Sub 2"
.DA #S.MITEM.T.ITEM
.DA #18 ID
.DA #0,#0
.DA 0 pICON
.AZ "Sub 3"
.DA #0 .DA #0
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
DS.END .ED DS.END .ED
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -223,10 +223,9 @@ CS.QUIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG0 .DA #C.ESC MSG0 .CZ "\e[?7lhPS pPID PID cPID CPU% Status Flags UID Args"
.AZ "[?7lhPS pPID PID cPID CPU% Status Flags UID Args" MSG1 .CZ "%3d %3d %3d %3d %3d\% %6s %s %3d"
MSG1 .AZ "%3d %3d %3d %3d %3d\% %6s %s %3d" MSG2 .CS " %s"
MSG2 .AS " %s"
MSG3 .DA #0 MSG3 .DA #0
MSG.FLAGS .AS "HS???XEN" MSG.FLAGS .AS "HS???XEN"
MSG.INIT .AZ "Init" MSG.INIT .AZ "Init"

View File

@ -927,6 +927,7 @@ CMD.FOR jsr CORE.StkGetCtx
lda (ZPArgVBufPtr) lda (ZPArgVBufPtr)
cmp #'(' cmp #'('
beq CMD.FOR.FILE beq CMD.FOR.FILE
cmp #'`' cmp #'`'
beq CMD.FOR.EXEC beq CMD.FOR.EXEC
*-------------------------------------- *--------------------------------------

View File

@ -151,10 +151,50 @@ IO.StatYA >PUSHYA
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
* set A = `sh -C ls|grep test`
IO.Exec >PUSHW ZPArgVBufPtr IO.Exec >PUSHW ZPArgVBufPtr
>PUSHBI S.PS.F.CLOSEONX >PUSHBI S.PS.F.CLOSEONX
>SYSCALL ExecL >SYSCALL ExecL
rts rts
* >LDYAI 256
* >SYSCALL GetMem
* bcs .99
* >STYA ZPPtr1
* phx
* >PUSHYA
* >PUSHW L.EXECC
* >PUSHW.G SH
* >PUSHW ZPArgVBufPtr
* >PUSHBI 4
* >SYSCALL sprintf
* bcs .98
* ldy #S.PS.hStdErr
* lda (pPS),y
* >PUSHA
* >PUSHW ZPPtr1
* >SYSCALL fputs
* >DEBUG
* >PUSHW ZPPtr1
* >PUSHBI S.PS.F.CLOSEONX
* >SYSCALL ExecL
*.98 plx
* php
* pha
* txa
* >SYSCALL freemem
* pla
* plp
*.99 rts
*-------------------------------------- *--------------------------------------
IO.PrintBatchErrMsg IO.PrintBatchErrMsg
>LDYA ZPInputBuf >LDYA ZPInputBuf

View File

@ -195,8 +195,9 @@ L.EXP.OP.MATH .DA EXP.OP.MATH
L.EXP.OP.LOGIC .DA EXP.OP.LOGIC L.EXP.OP.LOGIC .DA EXP.OP.LOGIC
L.HOME.PROFILE .DA HOME.PROFILE L.HOME.PROFILE .DA HOME.PROFILE
L.PtrZero .DA PtrZero L.PtrZero .DA PtrZero
L.HOME .DA HOME
L.PS1 .DA PS1 L.PS1 .DA PS1
L.HOME .DA HOME
L.EXECC .DA EXECC
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT clc CS.INIT clc
@ -205,6 +206,10 @@ CS.INIT clc
CS.RUN jsr CL.Init CS.RUN jsr CL.Init
jsr CORE.Init jsr CORE.Init
lda #0
jsr GetArgV
>STYA.G SH
ldy #S.PS.ARGC ldy #S.PS.ARGC
lda (pPS),y lda (pPS),y
beq .2 no arg, continue starting interactive beq .2 no arg, continue starting interactive
@ -227,17 +232,21 @@ CS.RUN jsr CL.Init
jsr ToUpperCase jsr ToUpperCase
cmp #'C' cmp #'C'
bne .1 bne .19
iny iny
lda (ZPPtr1),y lda (ZPPtr1),y
bne .1 bne .19
* lda #0 * lda #0
jsr CMD.SHIFTA Remove $0 = -C jsr CMD.SHIFTA Remove $0 = -C
jsr GetArgV jsr GetArgV
jmp CS.RUN.CMDLINE jmp CS.RUN.CMDLINE
.19 lda #E.CSYN
sec
rts
*-------------------------------------- *--------------------------------------
.1 jsr GetArgV Load SH batch file .1 jsr GetArgV Load SH batch file
>SYSCALL LoadTxtFile >SYSCALL LoadTxtFile
@ -622,6 +631,7 @@ HOME.PROFILE .AS "${HOME}.profile"
PtrZero .HS 00 PtrZero .HS 00
PS1 .AZ "${PS1}" PS1 .AZ "${PS1}"
HOME .AZ "${HOME}" HOME .AZ "${HOME}"
EXECC .AZ "%s -C %s"
*-------------------------------------- *--------------------------------------
EscChars .AS "DABC" EscChars .AS "DABC"
EscChars.Cnt .EQ *-EscChars EscChars.Cnt .EQ *-EscChars
@ -727,6 +737,8 @@ CORE.STACK .BS CORE.STACK.MAX+1 pData (0 = Stack Ptr)
PUSHD.STACK .BS PUSHD.STACK.MAX+1 PUSHD.STACK .BS PUSHD.STACK.MAX+1
CODE.STACK .BS CODE.STACK.MAX*7+1 CODE.STACK .BS CODE.STACK.MAX*7+1
SH .BS 2
hAliases .BS 1 hAliases .BS 1
hFunctions .BS 1 hFunctions .BS 1

View File

@ -1,6 +1,6 @@
NEW NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF drv/dhgr.drv .TF drv/dhgr.drv
@ -95,7 +95,7 @@ Dev.Detect >LDYA L.MSG.DETECT
bmi .3 bmi .3
>LDYA L.MSG.DETECT.80C >LDYA L.MSG.DETECT.80C
.3 >SYSCALL PutS .3 >SYSCALL PutS
>PUSHWI DRV.END >PUSHWI DRV.END
>PUSHWI DRV.CS.END-DRV.CS.START >PUSHWI DRV.CS.END-DRV.CS.START
@ -107,7 +107,7 @@ Dev.Detect >LDYA L.MSG.DETECT
>STYA FD.DEV+S.FD.DEV.DRVPTR >STYA FD.DEV+S.FD.DEV.DRVPTR
jsr DrvReloc jsr DrvReloc
>PUSHW L.FD.DEV >PUSHW L.FD.DEV
>PUSHW L.FD.DEV.NAME >PUSHW L.FD.DEV.NAME
>SYSCALL MKDev >SYSCALL MKDev
@ -122,7 +122,7 @@ Dev.Detect >LDYA L.MSG.DETECT
sta CLRWRITEAUX sta CLRWRITEAUX
jsr ClrScr jsr ClrScr
jsr OSD.install jsr OSD.install
plp plp
@ -162,11 +162,11 @@ DrvReloc lda FD.DEV+S.FD.DEV.DRVPTR
clc clc
adc ZPPtr1 adc ZPPtr1
sta (ZPPtr2),y sta (ZPPtr2),y
lda (ZPPtr3),y lda (ZPPtr3),y
adc ZPPtr1+1 adc ZPPtr1+1
sta (ZPPtr3),y sta (ZPPtr3),y
dey dey
bpl .1 bpl .1
@ -194,11 +194,11 @@ DrvReloc lda FD.DEV+S.FD.DEV.DRVPTR
clc clc
adc ZPPtr1 adc ZPPtr1
sta (ZPPtr2),y sta (ZPPtr2),y
lda (ZPPtr3),y lda (ZPPtr3),y
adc ZPPtr1+1 adc ZPPtr1+1
sta (ZPPtr3),y sta (ZPPtr3),y
dey dey
bpl .2 bpl .2
@ -213,41 +213,41 @@ OSD.install >LDYA L.OSD
lda /X.OSD.LEN lda /X.OSD.LEN
eor #$ff eor #$ff
pha pha
lda #X.OSD.LEN lda #X.OSD.LEN
eor #$ff eor #$ff
tax tax
ldy #0 ldy #0
sta SETWRITEAUX sta SETWRITEAUX
.1 inx .1 inx
bne .2 bne .2
pla pla
inc inc
beq .3 beq .3
pha pha
.2 lda (ZPPtr1),y .2 lda (ZPPtr1),y
sta (ZPPtr2),y sta (ZPPtr2),y
iny iny
bne .1 bne .1
inc ZPPtr1+1 inc ZPPtr1+1
inc ZPPtr2+1 inc ZPPtr2+1
bra .1 bra .1
.3 sta CLRWRITEAUX .3 sta CLRWRITEAUX
rts rts
*-------------------------------------- *--------------------------------------
ClrScr lda #$55 ClrScr lda #$55
ldx #0 ldx #0
sta SETHIRES sta SETHIRES
sta SET80STORE sta SET80STORE
@ -260,7 +260,7 @@ ClrScr lda #$55
jsr .2 jsr .2
eor #$7F eor #$7F
sta CLRPAGE2 sta CLRPAGE2
jsr .2 jsr .2
@ -362,7 +362,7 @@ STATUS >STYA ZPIOCTL
ldy #S.IOCTL.BUFPTR ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y lda (ZPIOCTL),y
sta ZPBasePtr sta ZPBasePtr
iny iny
lda (ZPIOCTL),y lda (ZPIOCTL),y
sta ZPBasePtr+1 sta ZPBasePtr+1
@ -402,14 +402,14 @@ OPEN tax DEV.ID in A
lda #S.DIB.S.OPENED lda #S.DIB.S.OPENED
bit DIB+S.DIB.S bit DIB+S.DIB.S
bne CLOSE.IOE bne CLOSE.IOE
lda A2osX.SCRNDEVS+9 lda A2osX.SCRNDEVS+9
beq .1 beq .1
lda #E.OOH lda #E.OOH
sec sec
rts rts
.1 stx A2osX.SCRNDEVS+9 .1 stx A2osX.SCRNDEVS+9
stx DCB+S.DCB.GFX.DEVID stx DCB+S.DCB.GFX.DEVID
@ -419,7 +419,7 @@ OPEN tax DEV.ID in A
CONTROL lda DCB+S.DCB.GFX.DEVID NON STANDARD CONTROL lda DCB+S.DCB.GFX.DEVID NON STANDARD
cmp A2osX.ASCREEN cmp A2osX.ASCREEN
beq .8 beq .8
sta A2osX.ASCREEN sta A2osX.ASCREEN
ldy #0 ldy #0
@ -446,9 +446,9 @@ CLOSE.IOE lda #MLI.E.IO
CLOSE lda #S.DIB.S.OPENED CLOSE lda #S.DIB.S.OPENED
bit DIB+S.DIB.S bit DIB+S.DIB.S
beq CLOSE.IOE beq CLOSE.IOE
trb DIB+S.DIB.S trb DIB+S.DIB.S
stz A2osX.SCRNDEVS+9 stz A2osX.SCRNDEVS+9
clc clc
@ -458,18 +458,18 @@ WRITE >STYA ZPIOCTL NON STANDARD
lda (ZPIOCTL) Get Cmd lda (ZPIOCTL) Get Cmd
bmi .2 bmi .2
pha pha
lsr lsr
tax tax
ldy CB.CmdLen-1,x ldy CB.CmdLen-1,x
.1 lda (ZPIOCTL),y .1 lda (ZPIOCTL),y
sta CB.Cache,y sta CB.Cache,y
dey dey
bpl .1 bpl .1
plx plx
jmp (J.Cmds-2,x) jmp (J.Cmds-2,x)
@ -533,7 +533,7 @@ YAMultX stx ZPTmpByte
ldy #0 Result LO ldy #0 Result LO
tya Result HI tya Result HI
bra .3 bra .3
.1 pha .1 pha
tya tya
clc clc
@ -541,7 +541,7 @@ YAMultX stx ZPTmpByte
tay tay
pla pla
adc ZPTmpWord+1 adc ZPTmpWord+1
.2 asl ZPTmpWord .2 asl ZPTmpWord
rol ZPTmpWord+1 rol ZPTmpWord+1
@ -634,7 +634,7 @@ DIB .DA #0
.BS 3 .BS 3
.DA #S.DIB.T.GFX .DA #S.DIB.T.GFX
.DA #0 .DA #0
.DA #94,#00 .DA #00,#94
*-------------------------------------- *--------------------------------------
DCB .DA #S.DCB.T.GFX DCB .DA #S.DCB.T.GFX
.BS 1 DEV.ID .BS 1 DEV.ID

View File

@ -1,20 +1,22 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
LIBGUI.SetCursor .EQ 4 LIBGUI.PTR.Set .EQ 4
LIBGUI.SetCursorPos .EQ 6 LIBGUI.PTR.SetPos .EQ 6
LIBGUI.HideCursor .EQ 8 LIBGUI.PTR.Hide .EQ 8
LIBGUI.ShowCursor .EQ 10 LIBGUI.PTR.Show .EQ 10
LIBGUI.UpdateCursor .EQ 12 LIBGUI.PTR.Update .EQ 12
LIBGUI.ReadMouse .EQ 14 LIBGUI.ReadMouse .EQ 14
LIBGUI.DrawLine .EQ 16 LIBGUI.DRAW.Line .EQ 16
LIBGUI.OBJ.SetProp .EQ 18 LIBGUI.OBJ.SetProp .EQ 18
LIBGUI.OBJ.GetProp .EQ 20 LIBGUI.OBJ.GetProp .EQ 20
LIBGUI.WND.New .EQ 22 LIBGUI.WND.New .EQ 22
LIBGUI.WND.Destroy .EQ 24 LIBGUI.WND.Destroy .EQ 24
LIBGUI.WND.Show .EQ 26 LIBGUI.WND.Show .EQ 26
LIBGUI.WND.Paint .EQ 28 LIBGUI.WND.Paint .EQ 28
LIBGUI.MSG.Get .EQ 30 LIBGUI.WND.SetMBar .EQ 30
LIBGUI.MSG.Get .EQ 32
LIBGUI.MBAR.New .EQ 34
*-------------------------------------- *--------------------------------------
C.BLACK .EQ 0 C.BLACK .EQ 0
C16.D.BLUE .EQ 1 C16.D.BLUE .EQ 1
@ -33,15 +35,19 @@ C16.PINK .EQ 13
C16.YELLOW .EQ 14 C16.YELLOW .EQ 14
C.WHITE .EQ 255 C.WHITE .EQ 255
*-------------------------------------- *--------------------------------------
CUR.T.ARROW .EQ 0 PTR.T.ARROW .EQ 0
CUR.T.MOVE .EQ 2 PTR.T.MOVE .EQ 2
CUR.T.RESIZEX .EQ 4 PTR.T.RESIZEX .EQ 4
CUR.T.RESIZEY .EQ 6 PTR.T.RESIZEY .EQ 6
CUR.T.RESIZEXY1 .EQ 8 PTR.T.RESIZEXY1 .EQ 8
CUR.T.RESIZEXY2 .EQ 10 PTR.T.RESIZEXY2 .EQ 10
CUR.T.CROSS .EQ 12 PTR.T.CROSS .EQ 12
CUR.T.TEXT .EQ 14 PTR.T.TEXT .EQ 14
CUR.T.WAIT .EQ 16 PTR.T.WAIT .EQ 16
*--------------------------------------
KEYMOD.CTRL .EQ %10000000
KEYMOD.OA .EQ %01000000
KEYMOD.CA .EQ %00100000
*-------------------------------------- *--------------------------------------
S.MSG.T .EQ 0 S.MSG.T .EQ 0
S.MSG.T.KEY .EQ 0 S.MSG.T.KEY .EQ 0
@ -126,13 +132,16 @@ S.WND.S.ACTIVE .EQ %01000000
* *
S.WND.MinW .EQ S.OBJ S.WND.MinW .EQ S.OBJ
S.WND.MinH .EQ S.OBJ+2 S.WND.MinH .EQ S.OBJ+2
S.WND.TITLE .EQ S.OBJ+4 S.WND.pTITLE .EQ S.OBJ+4
S.WND.MBAR .EQ S.OBJ+6 S.WND.pMBAR .EQ S.OBJ+6
S.WND.STATUS .EQ S.OBJ+8 S.WND.pSTATUS .EQ S.OBJ+8
S.WND.ICON .EQ S.OBJ+10 S.WND.ICON .EQ S.OBJ+10
S.WND.BGCOLOR .EQ S.OBJ+12 S.WND.BGCOLOR .EQ S.OBJ+12
S.WND.BGBM .EQ S.OBJ+14 S.WND.BGBM .EQ S.OBJ+14
S.WND.hCUR .EQ S.OBJ+16 S.WND.hCUR .EQ S.OBJ+16
*
* private
*
S.WND.TitleX1 .EQ S.OBJ+18 S.WND.TitleX1 .EQ S.OBJ+18
S.WND.TitleX2 .EQ S.OBJ+20 S.WND.TitleX2 .EQ S.OBJ+20
S.WND.TBarY2 .EQ S.OBJ+22 S.WND.TBarY2 .EQ S.OBJ+22
@ -151,51 +160,41 @@ S.WND.fPaint .EQ S.OBJ+40
* *
S.WND .EQ S.OBJ+42 S.WND .EQ S.OBJ+42
*-------------------------------------- *--------------------------------------
S.MBAR.MBITEMS .EQ S.OBJ S.MBAR.Selected .EQ S.OBJ
S.MBAR.Selected .EQ S.OBJ+2 S.MBAR.Items .EQ S.OBJ+2
* *
S.MBAR .EQ S.OBJ+4
*-------------------------------------- *--------------------------------------
S.MBITEM.NEXT .EQ 0 S.MBITEM.X1 .EQ 0
S.MBITEM.S .EQ 1 S.MBITEM.XT .EQ 2
S.MBITEM.X1 .EQ 2 S.MBITEM.X2 .EQ 4
S.MBITEM.XT .EQ 4 S.MBITEM.pTEXT .EQ 6
S.MBITEM.X2 .EQ 6 S.MBITEM.pMENU .EQ 8
S.MBITEM.MENU .EQ 8
S.MBITEM.TEXT .EQ 10
*--------------------------------------
S.MENU.MITEMS .EQ S.OBJ
S.MENU.hSAVEBUF .EQ S.OBJ+2
S.MENU.pX1 .EQ S.OBJ+4
S.MENU.pY1 .EQ S.OBJ+6
S.MENU.pX2 .EQ S.OBJ+8
S.MENU.pY2 .EQ S.OBJ+10
S.MENU.Selected .EQ S.OBJ+12
S.MENU.iW .EQ S.OBJ+13
S.MENU.tW .EQ S.OBJ+14
S.MENU.kW .EQ S.OBJ+16
* *
S.MENU .EQ S.OBJ+18 S.MBITEM .EQ 10
*-------------------------------------- *--------------------------------------
S.MITEM.NEXT .EQ 0 S.MENU.hSAVEBUF .EQ S.OBJ+0
S.MITEM.F .EQ 1 S.MENU.iW .EQ S.OBJ+2
S.MITEM.F.SEP .EQ 2 S.MENU.tW .EQ S.OBJ+4
S.MITEM.F.ITEM .EQ 4 S.MENU.kW .EQ S.OBJ+6
S.MITEM.F.SUBMENU .EQ 6 S.MENU.Items .EQ S.OBJ+8
S.MITEM.S .EQ 2 *
S.MITEM.S.CHECKED .EQ %01000000 *--------------------------------------
S.MITEM.S.DISABLED .EQ %10000000 S.MITEM.T .EQ 0
S.MITEM.ID .EQ 3 S.MITEM.T.SEP .EQ 2
S.MITEM.pICON .EQ 4 S.MITEM.T.ITEM .EQ 4
S.MITEM.T.SUBMENU .EQ 6
S.MITEM.S .EQ 1
S.MITEM.S.SELECTED .EQ %10000000
S.MITEM.S.DISABLED .EQ %00000010
S.MITEM.S.CHECKED .EQ %00000001
S.MITEM.pICON .EQ 2
S.MITEM.pTEXT .EQ 4
S.MITEM.pMENU .EQ 6 S.MITEM.pMENU .EQ 6
S.MITEM.KEYMOD .EQ 6 S.MITEM.KEYMOD .EQ 8
S.MITEM.KEYMOD.CA .EQ 2 S.MITEM.KEY .EQ 9
S.MITEM.KEYMOD.OA .EQ 4 S.MITEM.ID .EQ 10
S.MITEM.KEYMOD.CTRL .EQ 8 *
S.MITEM.KEY .EQ 7 S.MITEM .EQ 12
S.MITEM.KEYSTR .EQ 8
S.MITEM.TEXT .EQ 9 CSTR
* ...
*-------------------------------------- *--------------------------------------
BM.ID.APPLE .EQ 2 BM.ID.APPLE .EQ 2
BM.ID.CLOSE .EQ 4 BM.ID.CLOSE .EQ 4

View File

@ -1,411 +1,6 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
CUR.T .BS 1
CUR.bVisible .BS 1
CUR.Pos .BS S.POINT
*--------------------------------------
CUR.HotPoints .DA #0,#0 CUR.T.ARROW
.DA #6,#6 CUR.T.MOVE
.DA #7,#4 CUR.ResizeX
.DA #6,#5 CUR.ResizeY
.DA #5,#5 CUR.ResizeXY1
.DA #5,#5 CUR.ResizeXY2
.DA #5,#5 CUR.Cross
.DA #5,#3 CUR.Text
.DA #5,#6 CUR.Wait1
.DA #5,#6 CUR.Wait2
.DA #5,#6 CUR.Wait3
.DA #5,#6 CUR.Wait4
.DA #8,#7 CUR.Wait5
.DA #8,#7 CUR.Wait6
*--------------------------------------
CUR.SaveBuf .BS 64 16*4
*--------------------------------------
CUR.Arrow .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA CUR.Arrow.MASK-CUR.Arrow
.DA %000.00000000
.DA %000.00000010
.DA %000.00000110
.DA %000.00001110
.DA %000.00011110
.DA %000.00111110
.DA %000.01111110
.DA %000.11111110
.DA %001.11111110
.DA %010.01111110
.DA %000.11110010
.DA %000.11100000
.DA %000.00000000
CUR.Arrow.MASK .DA %111.11111100
.DA %111.11111000
.DA %111.11110000
.DA %111.11100000
.DA %111.11000000
.DA %111.10000000
.DA %111.00000000
.DA %110.00000000
.DA %100.00000000
.DA %000.00000000
.DA %000.00000000
.DA %110.00000000
.DA %110.00001111
*--------------------------------------
CUR.Move .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 11 H
.DA CUR.Move.MASK-CUR.Move
.DA %000.00100000
.DA %000.01010000
.DA %000.10001000
.DA %001.00000100
.DA %010.00000010
.DA %100.00000001
.DA %010.00000010
.DA %001.00000100
.DA %000.10001000
.DA %000.01010000
.DA %000.00100000
CUR.Move.MASK
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
*--------------------------------------
CUR.ResizeX .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 14 W
.DA 7 H
.DA CUR.ResizeX.MASK-CUR.ResizeX
.DA %000000.00000000
.DA %000100.00001000
.DA %001100.00001100
.DA %011111.11111110
.DA %001100.00001100
.DA %000100.00001000
.DA %000000.00000000
CUR.ResizeX.MASK
.DA %111001.11100111
.DA %110001.11100011
.DA %100000.00000001
.DA %000000.00000000
.DA %100000.00000001
.DA %110001.11100011
.DA %111001.11100111
*--------------------------------------
CUR.ResizeY .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 9 W
.DA 11 H
.DA CUR.ResizeY.MASK-CUR.ResizeY
.DA %0.00000000
.DA %0.00010000
.DA %0.01111100
.DA %0.11111110
.DA %0.00010000
.DA %0.00010000
.DA %0.00010000
.DA %0.11111110
.DA %0.01111100
.DA %0.00010000
.DA %0.00000000
CUR.ResizeY.MASK
.DA %1.11101111
.DA %1.11000111
.DA %1.00000001
.DA %0.00000000
.DA %0.00000000
.DA %1.11000111
.DA %1.11000111
.DA %0.00000000
.DA %1.00000001
.DA %1.11000111
.DA %1.11101111
*--------------------------------------
CUR.ResizeXY1 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 11 H
.DA CUR.ResizeXY1.MASK-CUR.ResizeXY1
.DA %000.00000000
.DA %011.11000000
.DA %011.10000000
.DA %011.10000000
.DA %010.01000000
.DA %000.00100000
.DA %000.00010010
.DA %000.00001110
.DA %000.00001110
.DA %000.00011110
.DA %000.00000000
CUR.ResizeXY1.MASK
.DA %000.00001111
.DA %000.00011111
.DA %000.00111111
.DA %000.00111111
.DA %000.00011110
.DA %001.10001100
.DA %011.11000000
.DA %111.11100000
.DA %111.11100000
.DA %111.11000000
.DA %111.10000000
*--------------------------------------
CUR.ResizeXY2 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 11 H
.DA CUR.ResizeXY2.MASK-CUR.ResizeXY2
.DA %000.00000000
.DA %000.00011110
.DA %000.00001110
.DA %000.00001110
.DA %000.00010010
.DA %000.00100000
.DA %010.01000000
.DA %011.10000000
.DA %011.10000000
.DA %011.11000000
.DA %000.00000000
CUR.ResizeXY2.MASK
.DA %111.10000000
.DA %111.11000000
.DA %111.11100000
.DA %111.11100000
.DA %011.11000000
.DA %001.10001100
.DA %000.00011110
.DA %000.00111111
.DA %000.00111111
.DA %000.00011111
.DA %000.00001111
*--------------------------------------
CUR.Cross .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 11 H
.DA CUR.Cross.MASK-CUR.Cross
.DA %000.00100000
.DA %000.01010000
.DA %000.01010000
.DA %000.01010000
.DA %011.11011110
.DA %100.00000001
.DA %011.11011110
.DA %000.01010000
.DA %000.01010000
.DA %000.01010000
.DA %000.00100000
CUR.Cross.MASK
.DA %111.11011111
.DA %111.10001111
.DA %111.10001111
.DA %111.10001111
.DA %100.00000001
.DA %000.00100000
.DA %100.00000001
.DA %111.10001111
.DA %111.10001111
.DA %111.10001111
.DA %111.11011111
*--------------------------------------
CUR.Text .DA #S.BM.F.BBP1
.DA #1 RowBytes
.DA 7 W
.DA 11 H
.DA CUR.Text.MASK-CUR.Text
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
CUR.Text.MASK
.DA #%0011100
.DA #%1101011
.DA #%1110111
.DA #%1110111
.DA #%1110111
.DA #%1110111
.DA #%1110111
.DA #%1110111
.DA #%1110111
.DA #%1101011
.DA #%0011100
*--------------------------------------
CUR.Wait1 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA CUR.Wait4.MASK-CUR.Wait1
.DA %000.00000000
.DA %001.11111100
.DA %001.00000100
.DA %000.10001000
.DA %000.01010000
.DA %000.00100000
.DA %000.00100000
.DA %000.00100000
.DA %000.01110000
.DA %000.11111000
.DA %001.11111100
.DA %001.11111100
.DA %000.00000000
*--------------------------------------
CUR.Wait2 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA CUR.Wait4.MASK-CUR.Wait2
.DA %000.00000000
.DA %001.11111100
.DA %001.11111100
.DA %000.10001000
.DA %000.01010000
.DA %000.00100000
.DA %000.00100000
.DA %000.00100000
.DA %000.01110000
.DA %000.11111000
.DA %001.00000100
.DA %001.11111100
.DA %000.00000000
*--------------------------------------
CUR.Wait3 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA CUR.Wait4.MASK-CUR.Wait3
.DA %000.00000000
.DA %001.11111100
.DA %001.11111100
.DA %000.11111000
.DA %000.01010000
.DA %000.00100000
.DA %000.00100000
.DA %000.00100000
.DA %000.01110000
.DA %000.10001000
.DA %001.00000100
.DA %001.11111100
.DA %000.00000000
*--------------------------------------
CUR.Wait4 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA CUR.Wait4.MASK-CUR.Wait4
.DA %000.00000000
.DA %001.11111100
.DA %001.11111100
.DA %000.11111000
.DA %000.01110000
.DA %000.00100000
.DA %000.00100000
.DA %000.00100000
.DA %000.01010000
.DA %000.10001000
.DA %001.00000100
.DA %001.11111100
.DA %000.00000000
CUR.Wait4.MASK .DA %110.00000011
.DA %100.00000001
.DA %100.00000001
.DA %110.00000011
.DA %111.00000111
.DA %111.10001111
.DA %111.10001111
.DA %111.10001111
.DA %111.00000111
.DA %110.00000011
.DA %100.00000001
.DA %100.00000001
.DA %110.00000011
*--------------------------------------
CUR.Wait5 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 16 W
.DA 14 H
.DA CUR.Wait5.MASK-CUR.Wait5
.DA %00000000.00000000
.DA %00000010.00000000
.DA %00000110.00000000
.DA %00001110.00000000
.DA %00011110.00000000
.DA %00111110.00000000
.DA %00000001.00000000
.DA %00000000.10000000
.DA %00000000.01111100
.DA %00000000.01001000
.DA %00000000.01010000
.DA %00000000.01100000
.DA %00000000.01000000
.DA %00000000.00000000
CUR.Wait5.MASK .DA %11111100.11111111
.DA %11111000.11111111
.DA %11110000.11111111
.DA %11100000.11111111
.DA %11000000.11111111
.DA %10000000.01111111
.DA %10000000.00111111
.DA %11111100.00000001
.DA %11111110.00000001
.DA %11111111.00000011
.DA %11111111.00000111
.DA %11111111.00001111
.DA %11111111.00011111
.DA %11111111.00111111
*--------------------------------------
CUR.Wait6 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 16 W
.DA 14 H
.DA CUR.Wait6.MASK-CUR.Wait6
.DA %00000000.00000000
.DA %00000000.01000000
.DA %00000000.01100000
.DA %00000000.01010000
.DA %00000000.01001000
.DA %00000000.01111100
.DA %00000000.10000000
.DA %00000001.00000000
.DA %00111110.00000000
.DA %00011110.00000000
.DA %00001110.00000000
.DA %00000110.00000000
.DA %00000010.00000000
.DA %00000000.00000000
CUR.Wait6.MASK .DA %11111111.00111111
.DA %11111111.00011111
.DA %11111111.00001111
.DA %11111111.00000111
.DA %11111111.00000011
.DA %11111110.00000001
.DA %11111100.00000001
.DA %10000000.00111111
.DA %10000000.01111111
.DA %11000000.11111111
.DA %11100000.11111111
.DA %11110000.11111111
.DA %11111000.11111111
.DA %11111100.11111111
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/lib/libgui.g.cur SAVE usr/src/lib/libgui.g.cur

413
LIB/LIBGUI.G.PTR.txt Normal file
View File

@ -0,0 +1,413 @@
NEW
AUTO 3,1
*--------------------------------------
PTR.T .BS 1
PTR.bVisible .BS 1
PTR.Pos .BS S.POINT
*--------------------------------------
PTR.HotPoints .DA #0,#0 PTR.T.ARROW
.DA #6,#6 PTR.T.MOVE
.DA #7,#4 PTR.ResizeX
.DA #6,#5 PTR.ResizeY
.DA #5,#5 PTR.ResizeXY1
.DA #5,#5 PTR.ResizeXY2
.DA #5,#5 PTR.Cross
.DA #5,#3 PTR.Text
.DA #5,#6 PTR.Wait1
.DA #5,#6 PTR.Wait2
.DA #5,#6 PTR.Wait3
.DA #5,#6 PTR.Wait4
.DA #8,#7 PTR.Wait5
.DA #8,#7 PTR.Wait6
*--------------------------------------
PTR.SaveBuf .BS 64 16*4
*--------------------------------------
PTR.Arrow .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA PTR.Arrow.MASK-PTR.Arrow
.DA %000.00000000
.DA %000.00000010
.DA %000.00000110
.DA %000.00001110
.DA %000.00011110
.DA %000.00111110
.DA %000.01111110
.DA %000.11111110
.DA %001.11111110
.DA %010.01111110
.DA %000.11110010
.DA %000.11100000
.DA %000.00000000
PTR.Arrow.MASK .DA %111.11111100
.DA %111.11111000
.DA %111.11110000
.DA %111.11100000
.DA %111.11000000
.DA %111.10000000
.DA %111.00000000
.DA %110.00000000
.DA %100.00000000
.DA %000.00000000
.DA %000.00000000
.DA %110.00000000
.DA %110.00001111
*--------------------------------------
PTR.Move .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 11 H
.DA PTR.Move.MASK-PTR.Move
.DA %000.00100000
.DA %000.01010000
.DA %000.10001000
.DA %001.00000100
.DA %010.00000010
.DA %100.00000001
.DA %010.00000010
.DA %001.00000100
.DA %000.10001000
.DA %000.01010000
.DA %000.00100000
PTR.Move.MASK
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
.DA %111.11111111
*--------------------------------------
PTR.ResizeX .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 14 W
.DA 7 H
.DA PTR.ResizeX.MASK-PTR.ResizeX
.DA %000000.00000000
.DA %000100.00001000
.DA %001100.00001100
.DA %011111.11111110
.DA %001100.00001100
.DA %000100.00001000
.DA %000000.00000000
PTR.ResizeX.MASK
.DA %111001.11100111
.DA %110001.11100011
.DA %100000.00000001
.DA %000000.00000000
.DA %100000.00000001
.DA %110001.11100011
.DA %111001.11100111
*--------------------------------------
PTR.ResizeY .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 9 W
.DA 11 H
.DA PTR.ResizeY.MASK-PTR.ResizeY
.DA %0.00000000
.DA %0.00010000
.DA %0.01111100
.DA %0.11111110
.DA %0.00010000
.DA %0.00010000
.DA %0.00010000
.DA %0.11111110
.DA %0.01111100
.DA %0.00010000
.DA %0.00000000
PTR.ResizeY.MASK
.DA %1.11101111
.DA %1.11000111
.DA %1.00000001
.DA %0.00000000
.DA %0.00000000
.DA %1.11000111
.DA %1.11000111
.DA %0.00000000
.DA %1.00000001
.DA %1.11000111
.DA %1.11101111
*--------------------------------------
PTR.ResizeXY1 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 11 H
.DA PTR.ResizeXY1.MASK-PTR.ResizeXY1
.DA %000.00000000
.DA %011.11000000
.DA %011.10000000
.DA %011.10000000
.DA %010.01000000
.DA %000.00100000
.DA %000.00010010
.DA %000.00001110
.DA %000.00001110
.DA %000.00011110
.DA %000.00000000
PTR.ResizeXY1.MASK
.DA %000.00001111
.DA %000.00011111
.DA %000.00111111
.DA %000.00111111
.DA %000.00011110
.DA %001.10001100
.DA %011.11000000
.DA %111.11100000
.DA %111.11100000
.DA %111.11000000
.DA %111.10000000
*--------------------------------------
PTR.ResizeXY2 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 11 H
.DA PTR.ResizeXY2.MASK-PTR.ResizeXY2
.DA %000.00000000
.DA %000.00011110
.DA %000.00001110
.DA %000.00001110
.DA %000.00010010
.DA %000.00100000
.DA %010.01000000
.DA %011.10000000
.DA %011.10000000
.DA %011.11000000
.DA %000.00000000
PTR.ResizeXY2.MASK
.DA %111.10000000
.DA %111.11000000
.DA %111.11100000
.DA %111.11100000
.DA %011.11000000
.DA %001.10001100
.DA %000.00011110
.DA %000.00111111
.DA %000.00111111
.DA %000.00011111
.DA %000.00001111
*--------------------------------------
PTR.Cross .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 11 H
.DA PTR.Cross.MASK-PTR.Cross
.DA %000.00100000
.DA %000.01010000
.DA %000.01010000
.DA %000.01010000
.DA %011.11011110
.DA %100.00000001
.DA %011.11011110
.DA %000.01010000
.DA %000.01010000
.DA %000.01010000
.DA %000.00100000
PTR.Cross.MASK
.DA %111.11011111
.DA %111.10001111
.DA %111.10001111
.DA %111.10001111
.DA %100.00000001
.DA %000.00100000
.DA %100.00000001
.DA %111.10001111
.DA %111.10001111
.DA %111.10001111
.DA %111.11011111
*--------------------------------------
PTR.Text .DA #S.BM.F.BBP1
.DA #1 RowBytes
.DA 7 W
.DA 11 H
.DA PTR.Text.MASK-PTR.Text
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
.DA #%0000000
PTR.Text.MASK
.DA #%0011100
.DA #%1101011
.DA #%1110111
.DA #%1110111
.DA #%1110111
.DA #%1110111
.DA #%1110111
.DA #%1110111
.DA #%1110111
.DA #%1101011
.DA #%0011100
*--------------------------------------
PTR.Wait1 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA PTR.Wait4.MASK-PTR.Wait1
.DA %000.00000000
.DA %001.11111100
.DA %001.00000100
.DA %000.10001000
.DA %000.01010000
.DA %000.00100000
.DA %000.00100000
.DA %000.00100000
.DA %000.01110000
.DA %000.11111000
.DA %001.11111100
.DA %001.11111100
.DA %000.00000000
*--------------------------------------
PTR.Wait2 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA PTR.Wait4.MASK-PTR.Wait2
.DA %000.00000000
.DA %001.11111100
.DA %001.11111100
.DA %000.10001000
.DA %000.01010000
.DA %000.00100000
.DA %000.00100000
.DA %000.00100000
.DA %000.01110000
.DA %000.11111000
.DA %001.00000100
.DA %001.11111100
.DA %000.00000000
*--------------------------------------
PTR.Wait3 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA PTR.Wait4.MASK-PTR.Wait3
.DA %000.00000000
.DA %001.11111100
.DA %001.11111100
.DA %000.11111000
.DA %000.01010000
.DA %000.00100000
.DA %000.00100000
.DA %000.00100000
.DA %000.01110000
.DA %000.10001000
.DA %001.00000100
.DA %001.11111100
.DA %000.00000000
*--------------------------------------
PTR.Wait4 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA PTR.Wait4.MASK-PTR.Wait4
.DA %000.00000000
.DA %001.11111100
.DA %001.11111100
.DA %000.11111000
.DA %000.01110000
.DA %000.00100000
.DA %000.00100000
.DA %000.00100000
.DA %000.01010000
.DA %000.10001000
.DA %001.00000100
.DA %001.11111100
.DA %000.00000000
PTR.Wait4.MASK .DA %110.00000011
.DA %100.00000001
.DA %100.00000001
.DA %110.00000011
.DA %111.00000111
.DA %111.10001111
.DA %111.10001111
.DA %111.10001111
.DA %111.00000111
.DA %110.00000011
.DA %100.00000001
.DA %100.00000001
.DA %110.00000011
*--------------------------------------
PTR.Wait5 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 16 W
.DA 14 H
.DA PTR.Wait5.MASK-PTR.Wait5
.DA %00000000.00000000
.DA %00000010.00000000
.DA %00000110.00000000
.DA %00001110.00000000
.DA %00011110.00000000
.DA %00111110.00000000
.DA %00000001.00000000
.DA %00000000.10000000
.DA %00000000.01111100
.DA %00000000.01001000
.DA %00000000.01010000
.DA %00000000.01100000
.DA %00000000.01000000
.DA %00000000.00000000
PTR.Wait5.MASK .DA %11111100.11111111
.DA %11111000.11111111
.DA %11110000.11111111
.DA %11100000.11111111
.DA %11000000.11111111
.DA %10000000.01111111
.DA %10000000.00111111
.DA %11111100.00000001
.DA %11111110.00000001
.DA %11111111.00000011
.DA %11111111.00000111
.DA %11111111.00001111
.DA %11111111.00011111
.DA %11111111.00111111
*--------------------------------------
PTR.Wait6 .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 16 W
.DA 14 H
.DA PTR.Wait6.MASK-PTR.Wait6
.DA %00000000.00000000
.DA %00000000.01000000
.DA %00000000.01100000
.DA %00000000.01010000
.DA %00000000.01001000
.DA %00000000.01111100
.DA %00000000.10000000
.DA %00000001.00000000
.DA %00111110.00000000
.DA %00011110.00000000
.DA %00001110.00000000
.DA %00000110.00000000
.DA %00000010.00000000
.DA %00000000.00000000
PTR.Wait6.MASK .DA %11111111.00111111
.DA %11111111.00011111
.DA %11111111.00001111
.DA %11111111.00000111
.DA %11111111.00000011
.DA %11111110.00000001
.DA %11111100.00000001
.DA %10000000.00111111
.DA %10000000.01111111
.DA %11000000.11111111
.DA %11100000.11111111
.DA %11110000.11111111
.DA %11111000.11111111
.DA %11111100.11111111
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.g.ptr
LOAD usr/src/lib/libgui.s
ASM

View File

@ -1,155 +1,6 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
UpdateCursor lda CUR.T
cmp #CUR.T.WAIT
bcc SetCursor.RTS
inc
inc
cmp #CUR.T.WAIT+12
bne SetCursor
lda #CUR.T.WAIT
*--------------------------------------
* Set X2,Y2,SrcPtr
*--------------------------------------
SetCursor sta CUR.T
lda CUR.bVisible
bpl .1
jsr HideCursor.I
.1 ldx CUR.T
lda L.Cursors,x
sta CB.PTR+S.CB.SrcPtr
sta ZPPtr1
lda L.Cursors+1,x
sta CB.PTR+S.CB.SrcPtr+1
sta ZPPtr1+1
ldy #S.BM.W
lda (ZPPtr1),y
sta CB.PTR+S.CB.SrcW
clc
adc CB.PTR+S.CB.X1
pha
iny
lda (ZPPtr1),y
sta CB.PTR+S.CB.SrcW+1
adc CB.PTR+S.CB.X1+1
tax
pla
bne .2
dex
.2 dec
sta CB.PTR+S.CB.X2
stx CB.PTR+S.CB.X2+1
iny S.BM.H
lda (ZPPtr1),y
sta CB.PTR+S.CB.SrcH
clc
adc CB.PTR+S.CB.Y1
pha
iny
lda (ZPPtr1),y
sta CB.PTR+S.CB.SrcH+1
adc CB.PTR+S.CB.Y1+1
tax
pla
bne .3
dex
.3 dec
sta CB.PTR+S.CB.Y2
stx CB.PTR+S.CB.Y2+1
lda CUR.bVisible
bmi ShowCursor.I
SetCursor.RTS rts
*--------------------------------------
* Set DestX,DestY
*--------------------------------------
SetCursorPos >PULLW ZPPtr1
lda CUR.bVisible
bpl .1
jsr HideCursor.I
.1 ldy #S.POINT-1
.2 lda (ZPPtr1),y
sta CUR.Pos,y
dey
bpl .2
lda CUR.bVisible
bmi ShowCursor.I
clc
rts
*--------------------------------------
HideCursor lda CUR.bVisible
bpl .9
jsr HideCursor.I
stz CUR.bVisible
.9 clc
rts
*--------------------------------------
ShowCursor lda CUR.bVisible
bmi .9
jsr ShowCursor.I
dec CUR.bVisible
.9 rts
*--------------------------------------
HideCursor.I lda #S.CB.OP.RESTORE
bra DrawCursor.I
*--------------------------------------
ShowCursor.I ldx CUR.T
lda CUR.Pos+S.POINT.X
sec
sbc CUR.HotPoints,x
sta CB.PTR+S.CB.X1
lda CUR.Pos+S.POINT.X+1
sbc #0
sta CB.PTR+S.CB.X1+1
lda CUR.Pos+S.POINT.Y
sec
sbc CUR.HotPoints+1,x
sta CB.PTR+S.CB.Y1
lda CUR.Pos+S.POINT.Y+1
sbc #0
sta CB.PTR+S.CB.Y1+1
lda #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE
DrawCursor.I sta CB.PTR+S.CB.OP
>LDYA L.WND.Screen
jsr OBJ.GetInCache
>LDYA L.CB.PTR
jsr CLIP.YA
bcs .8
jsr GFXWrite.CB
.8 clc
rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/lib/libgui.s.cur SAVE usr/src/lib/libgui.s.cur

View File

@ -3,7 +3,7 @@ NEW
*-------------------------------------- *--------------------------------------
* drawline(short int hWND, short int OP, short int COLOR, int X1, int Y1, int X2, int X2) * drawline(short int hWND, short int OP, short int COLOR, int X1, int Y1, int X2, int X2)
*-------------------------------------- *--------------------------------------
DrawLine jsr DRAW.PullY2X2Y1X1 DRAW.Line jsr DRAW.PullY2X2Y1X1
>PULLB CB.Cache+S.CB.COLOR >PULLB CB.Cache+S.CB.COLOR
>PULLB CB.Cache+S.CB.OP >PULLB CB.Cache+S.CB.OP
@ -53,7 +53,7 @@ DrawLine jsr DRAW.PullY2X2Y1X1
jsr CLIP.CB.Cache jsr CLIP.CB.Cache
bcs .8 bcs .8
jmp GFXWrite.CB jmp CB.GFXWrite
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
.3 >NOT16 DY set DY=-DY .3 >NOT16 DY set DY=-DY
@ -65,21 +65,21 @@ DrawLine jsr DRAW.PullY2X2Y1X1
lda #S.CB.CMD.SETPIXEL lda #S.CB.CMD.SETPIXEL
sta CB.Cache+S.CB.CMD sta CB.Cache+S.CB.CMD
jsr GFXWrite.CB jsr CB.GFXWrite
lda DX lda DX
sec sec
sbc DY sbc DY
tax tax
lda DX+1 lda DX+1
sbc DY+1 sbc DY+1
bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis bmi DRAW.Line.IncY DY is greater than DX, we will increase on Y axis
txa txa
beq DrawLine.IncXY DX=DY, go inc X & Y beq DRAW.Line.IncXY DX=DY, go inc X & Y
jmp DrawLine.IncX DY is lower than DX, we will increase on X axis jmp DRAW.Line.IncX DY is lower than DX, we will increase on X axis
*-------------------------------------- *--------------------------------------
DrawLine.IncXY lda DX DX=DY DRAW.Line.IncXY lda DX DX=DY
eor #$ff eor #$ff
sta Counter sta Counter
lda DX+1 lda DX+1
@ -100,12 +100,12 @@ DrawLine.IncXY lda DX DX=DY
clc clc
adc IY adc IY
sta CB.Cache+S.CB.Y1 sta CB.Cache+S.CB.Y1
jsr GFXWrite.CB jsr CB.GFXWrite
bra .1 bra .1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
DrawLine.IncY lda DY DRAW.Line.IncY lda DY
eor #$ff eor #$ff
sta Counter sta Counter
lda DY+1 lda DY+1
@ -176,12 +176,12 @@ DrawLine.IncY lda DY
clc clc
adc IY adc IY
sta CB.Cache+S.CB.Y1 sta CB.Cache+S.CB.Y1
jsr GFXWrite.CB jsr CB.GFXWrite
bra .1 bra .1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
DrawLine.IncX lda DX DRAW.Line.IncX lda DX
eor #$ff eor #$ff
sta Counter sta Counter
lda DX+1 lda DX+1
@ -253,7 +253,7 @@ DrawLine.IncX lda DX
inc CB.Cache+S.CB.X1+1 inc CB.Cache+S.CB.X1+1
.6 jsr GFXWrite.CB .6 jsr CB.GFXWrite
bra .1 bra .1
.8 rts .8 rts
@ -273,7 +273,7 @@ FillRectangle jsr DRAW.PullY2X2Y1X1
jsr CLIP.CB.Cache jsr CLIP.CB.Cache
bcs .8 bcs .8
jmp GFXWrite.CB jmp CB.GFXWrite
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
@ -294,7 +294,7 @@ DrawBitMap lda #S.CB.CMD.BITBLT
jsr CLIP.CB.Cache jsr CLIP.CB.Cache
bcs .8 bcs .8
jmp GFXWrite.CB jmp CB.GFXWrite
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
@ -333,7 +333,7 @@ DRAW.yaBMAtDXDY >STYA ZPBMPtr Src BM
lda ZPBMPtr+1 lda ZPBMPtr+1
sta CB.Cache+S.CB.SrcPtr+1 sta CB.Cache+S.CB.SrcPtr+1
jmp PutCBCache2CBBuf jmp CB.Cache2CBBuf
*-------------------------------------- *--------------------------------------
* drawtext (short int hWND, short int OP, short int hFONT, int X1, int Y1, char *str) * drawtext (short int hWND, short int OP, short int hFONT, int X1, int Y1, char *str)
*-------------------------------------- *--------------------------------------
@ -352,7 +352,7 @@ DrawText lda #S.CB.CMD.DRAWTEXT2
jsr CLIP.CB.Cache jsr CLIP.CB.Cache
bcs .8 bcs .8
jmp GFXWrite.CB jmp CB.GFXWrite
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
@ -384,7 +384,7 @@ DRAW.YATextAtDXDY
dex dex
bpl .1 bpl .1
jmp PutCBCache2CBBuf jmp CB.Cache2CBBuf
*-------------------------------------- *--------------------------------------
DRAW.PullY2X2Y1X1 DRAW.PullY2X2Y1X1
ldx #7 ldx #7
@ -485,13 +485,16 @@ DRAW.AddP1YtoCBX
sta CB.Cache+1,x sta CB.Cache+1,x
rts rts
*-------------------------------------- *--------------------------------------
DrawCBBufToYA pha DrawCBBufToYA ldx hCBBuf
beq .80
pha
phy phy
bit CUR.bVisible bit PTR.bVisible
bpl .1 bpl .1
jsr HideCursor.I jsr PTR.Hide.I
.1 lda #0 .1 lda #0
sta (ZPCBBufPtr) sta (ZPCBBufPtr)
@ -512,13 +515,13 @@ DrawCBBufToYA pha
lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
sta CB.Cache+S.CB.CMD sta CB.Cache+S.CB.CMD
jsr GFXWrite.CB jsr CB.GFXWrite
bcs .9 bcs .9
jsr CLIP.CB.Cache jsr CLIP.CB.Cache
bcs .3 bcs .3
jsr GFXWrite.CB jsr CB.GFXWrite
.3 lda CB.Cache+S.CB.SrcPtr .3 lda CB.Cache+S.CB.SrcPtr
>SYSCALL2 FreeStkObj >SYSCALL2 FreeStkObj
@ -527,7 +530,7 @@ DrawCBBufToYA pha
.6 jsr CLIP.CB.Cache .6 jsr CLIP.CB.Cache
bcs .7 bcs .7
jsr GFXWrite.CB jsr CB.GFXWrite
.7 lda (ZPCBPtr) Get Cmd .7 lda (ZPCBPtr) Get Cmd
lsr lsr
@ -545,13 +548,12 @@ DrawCBBufToYA pha
stz hCBBuf stz hCBBuf
>SYSCALL2 FreeMem >SYSCALL2 FreeMem
clc bit PTR.bVisible
bpl .80
bit CUR.bVisible jmp PTR.Show.I
bpl .9
jmp ShowCursor.I
.80 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -38,7 +38,7 @@ FON.GetTextSize >STYA CB.CACHE+S.CB.TxtPtr
lda #S.CB.CMD.GETTEXTSIZE+S.CB.CMD.OSD lda #S.CB.CMD.GETTEXTSIZE+S.CB.CMD.OSD
sta CB.CACHE+S.CB.CMD sta CB.CACHE+S.CB.CMD
jmp GFXWrite.CB jmp CB.GFXWrite
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/lib/libgui.s.fon SAVE usr/src/lib/libgui.s.fon

View File

@ -1,84 +1,91 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
* MBAR.New(*S.MBITEM mbitems) * Y,A = MBAR definition
*-------------------------------------- *--------------------------------------
MBAR.New >LDYAI S.MBAR MBAR.New >STYA ZPMENUPtr MBAR definition
>SYSCALL2 getmem >STYA ZPPtr1 for pass #2
bcs .99
lda #S.MBAR.Items+1 Ending\0
sta Counter
stz Counter+1
.10 lda (ZPMENUPtr)
beq .3
ldy #$ff
.1 iny
lda (ZPMENUPtr),y
bne .1
tya
sec text Ending\0
inc
inc skip pMENU
adc ZPMENUPtr
sta ZPMENUPtr
bcc .2
inc ZPMENUPtr+1
.2 tya
sec
adc #S.MBITEM
adc Counter
sta Counter
bcc .10
inc Counter+1
bra .10
.3 >LDYA Counter
>SYSCALL2 GetMem
bcs .9
>STYA ZPObjPtr >STYA ZPObjPtr
phx hMBAR
ldy #S.OBJ-1
lda #S.OBJ.T.MBAR lda #S.OBJ.T.MBAR
sta (ZPObjPtr) S.OBJ.T jsr OBJ.Init
lda #0
ldy #S.MBAR-1
.1 sta (ZPObjPtr),y
dey
bne .1
>PULLA
ldy #S.MBAR.MBITEMS
sta (ZPObjPtr),y
>PULLA
iny
sta (ZPObjPtr),y
lda #S.MBAR.Items
clc clc
.99 rts adc ZPObjPtr
*-------------------------------------- sta ZPObjPtr
MBAR.Init >STYA ZPMENUPtr bcc .4
>STYA ZPPtr1
ldy #S.MBITEM.S
lda (ZPPtr1),y
bmi .80
stz DX inc ZPObjPtr+1
.4 stz DX
stz DX+1 stz DX+1
.1 lda (ZPPtr1) .5 lda (ZPPtr1)
beq .8 beq .8
lda #S.MBITEM.TEXT
clc
adc ZPPtr1
tay
lda ZPPtr1+1
adc #0
ldx hSYSFON
jsr FON.GetTextSize
ldy #S.MBITEM.X1
lda DX >LDYA DX
sta (ZPPtr1),y jsr OBJ.AddWord S.MBITEM.X1
iny
lda DX+1
sta (ZPPtr1),y
iny #S.MBITEM.XT
lda DX lda DX
clc clc
adc PREFS.MBARXMARGIN adc PREFS.MBARXMARGIN
sta DX sta DX
sta (ZPPtr1),y bcc .6
iny
lda DX+1
adc #0
sta DX+1 sta DX+1
sta (ZPPtr1),y
.6 >LDYA DX
jsr OBJ.AddWord S.MBITEM.XT
>LDYA ZPPtr1 pTEXT
ldx hSYSFON
jsr FON.GetTextSize
lda DX lda DX
clc clc
adc CB.CACHE+S.CB.SrcW adc CB.CACHE+S.CB.SrcW
@ -87,36 +94,153 @@ MBAR.Init >STYA ZPMENUPtr
lda DX+1 lda DX+1
adc CB.CACHE+S.CB.SrcW+1 adc CB.CACHE+S.CB.SrcW+1
sta DX+1 sta DX+1
iny #S.MBITEM.X2
lda DX
clc
adc PREFS.MBARXMARGIN
sta DX
sta (ZPPtr1),y
iny
lda DX+1 >LDYA DX
adc #0 jsr OBJ.AddWord S.MBITEM.X2
sta DX+1
sta (ZPPtr1),y >LDYA ZPPtr1 pTEXT
jsr OBJ.AddWord
jsr SkipStrZPtr1 skip "TEXT\0"
ldy #1
lda (ZPPtr1),y
jsr OBJ.AddByte pMENU+1
lda (ZPPtr1) lda (ZPPtr1)
jsr OBJ.AddByte pMENU
lda ZPPtr1
clc clc
adc ZPPtr1 adc #2
sta ZPPtr1 sta ZPPtr1
bcc .1 bcc .5
inc ZPPtr1+1 inc ZPPtr1+1
bra .1 bra .5 stkip pMENU
.8 lda #$80 .8 pla hMBAR
clc
.9 rts
*--------------------------------------
*--------------------------------------
*--------------------------------------
* ZPWNDPtr = parent WND
*--------------------------------------
MBAR.Paint lda #S.CB.CMD.FILLRECT
jsr CB.InitCacheA
lda #S.CB.OP.SET
sta CB.Cache+S.CB.OP
lda #S.CB.M.MONO
sta CB.Cache+S.CB.M
lda PREFS.MBARCOLOR
sta CB.Cache+S.CB.COLOR
ldy #S.OBJ.X1
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X1
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X1+1
ldy #S.OBJ.X2
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X2
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X2+1
ldy #S.WND.MBarY1
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y1
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y1+1
iny #S.WND.MBarY2
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y2
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y2+1
jsr CB.Cache2CBBuf
ldy #S.WND.pMBAR
lda (ZPWNDPtr),y
sta ZPMENUPtr
iny
lda (ZPWNDPtr),y
sta ZPMENUPtr+1
.1 lda (ZPMENUPtr)
beq .8
jsr CB.ClearCache
lda #S.CB.CMD.DRAWTEXT2
sta CB.CACHE+S.CB.CMD
lda #S.CB.OP.SET+S.CB.OP.INVERSE
sta CB.Cache+S.CB.OP
lda #S.CB.M.MONO
sta CB.Cache+S.CB.M
lda hSYSFON
sta CB.CACHE+S.CB.hFont
ldy #S.MBITEM.XT
lda (ZPMENUPtr),y
clc
ldy #S.OBJ.X1
adc (ZPWNDPtr),y
sta CB.CACHE+S.CB.X1
ldy #S.MBITEM.XT+1
lda (ZPMENUPtr),y
ldy #S.OBJ.X1+1
adc (ZPWNDPtr),y
sta CB.CACHE+S.CB.X1+1
ldy #S.WND.MBarY1
lda (ZPWNDPtr),y
clc
adc #1
sta CB.CACHE+S.CB.Y1
iny
lda (ZPWNDPtr),y
adc #0
sta CB.CACHE+S.CB.Y1+1
lda #S.MBITEM.pTEXT
clc
adc ZPMENUPtr
sta CB.CACHE+S.CB.TxtPtr
lda #0
adc ZPMENUPtr+1
sta CB.CACHE+S.CB.TxtPtr+1
jsr CB.Cache2CBBuf
lda (ZPMENUPtr)
clc
adc ZPMENUPtr
sta ZPMENUPtr
bcc .1
inc ZPMENUPtr+1
bra .1
.8 clc
ldy #S.MBITEM.S
sta (ZPMENUPtr),y
.80 clc
rts rts
*-------------------------------------- *--------------------------------------
* ZPWNDPtr parent WND * ZPWNDPtr parent WND

File diff suppressed because it is too large Load Diff

View File

@ -22,19 +22,19 @@ MOU.Init >PUSHW L.DEVNAME.MOUSE
MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1 MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1
sta MouseClamp+3 sta MouseClamp+3
lsr lsr
sta CUR.Pos+S.POINT.X+1 sta PTR.Pos+S.POINT.X+1
lda DCB.GFX+S.DCB.GFX.W lda DCB.GFX+S.DCB.GFX.W
sta MouseClamp+2 sta MouseClamp+2
ror ror
sta CUR.Pos+S.POINT.X sta PTR.Pos+S.POINT.X
lda DCB.GFX+S.DCB.GFX.H+1 lda DCB.GFX+S.DCB.GFX.H+1
sta MouseClamp+7 sta MouseClamp+7
lsr lsr
sta CUR.Pos+S.POINT.Y+1 sta PTR.Pos+S.POINT.Y+1
lda DCB.GFX+S.DCB.GFX.H lda DCB.GFX+S.DCB.GFX.H
sta MouseClamp+6 sta MouseClamp+6
ror ror
sta CUR.Pos+S.POINT.Y sta PTR.Pos+S.POINT.Y
>PUSHB hDevMouse >PUSHB hDevMouse
>PUSHBI IOCTL.CONTROL >PUSHBI IOCTL.CONTROL
@ -42,7 +42,7 @@ MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1
>SYSCALL2 IOCTL >SYSCALL2 IOCTL
bcs .9 bcs .9
>LDYA L.CUR.SaveBuf >LDYA L.PTR.SaveBuf
>STYA CB.PTR+S.CB.DstPtr >STYA CB.PTR+S.CB.DstPtr
* clc * clc
@ -88,11 +88,13 @@ MOU.ReadMouse >PULLW ZPPtr1 pS.XY
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
MOU.CheckOverMenu MOU.CheckOverMenu
.1 ldx MENU.Stack.Top .1 ldx MENU.Stack.Cnt
beq .9 beq .9
lda MENU.Stack-1,x lda MENU.Stack-1,x
.2 phx
>SYSCALL2 GetMemPtr >SYSCALL2 GetMemPtr
>STYA ZPMENUPtr >STYA ZPMENUPtr
pha pha
@ -103,28 +105,32 @@ MOU.CheckOverMenu
pla pla
adc /S.OBJ.X1 adc /S.OBJ.X1
jsr MOU.InRectYA jsr MOU.InRectYA
bcs .2 bcc .3
jsr MENU.Enter plx
clc
dex
bne .2
.9 sec
rts rts
.2 lda ZPMENUPtr .3 plx
clc cpx MENU.Stack.Cnt
adc #S.MENU.pX1 beq .7
tay
lda ZPMENUPtr+1
adc /S.MENU.pX1
jsr MOU.InRectYA * TODO:destroy from TOP to current, then enter current
bcc .8
inx
phx
jsr MENU.Destroy jsr MENU.Destroy
bra .3
bra .1 .7 jmp MENU.Enter
.9 sec .8 clc
.8 rts rts
*-------------------------------------- *--------------------------------------
MOU.CheckOverSysBut MOU.CheckOverSysBut
>LDYA L.RECT.SysBut >LDYA L.RECT.SysBut
@ -208,14 +214,14 @@ MOU.CheckOverWND
.5 lda #CUR.T.ARROW .5 lda #PTR.T.ARROW
jsr SetCursor jsr PTR.Set
clc clc
rts rts
.6 lda #CUR.T.WAIT .6 lda #PTR.T.WAIT
jsr SetCursor jsr PTR.Set
clc clc
rts rts
@ -225,8 +231,8 @@ MOU.CheckOverWND
dex dex
bne .1 bne .1
lda #CUR.T.ARROW lda #PTR.T.ARROW
jsr SetCursor jsr PTR.Set
.9 sec .9 sec
.99 rts .99 rts
@ -247,7 +253,7 @@ MOU.ChkWNDBorders
eor MSG+S.MSG.X1+1 eor MSG+S.MSG.X1+1
bne .1 bne .1
lda #CUR.T.RESIZEX lda #PTR.T.RESIZEX
sta IY sta IY
.1 ldy #S.OBJ.Y1 .1 ldy #S.OBJ.Y1
@ -266,10 +272,10 @@ MOU.ChkWNDBorders
lda IY lda IY
beq .2 beq .2
lda #CUR.T.RESIZEXY1 lda #PTR.T.RESIZEXY1
jmp SetCursor jmp PTR.Set
.2 lda #CUR.T.RESIZEY .2 lda #PTR.T.RESIZEY
sta IY sta IY
.3 ldy #S.OBJ.X2 .3 ldy #S.OBJ.X2
@ -288,10 +294,10 @@ MOU.ChkWNDBorders
lda IY lda IY
beq .4 beq .4
lda #CUR.T.RESIZEXY2 lda #PTR.T.RESIZEXY2
jmp SetCursor jmp PTR.Set
.4 lda #CUR.T.RESIZEX .4 lda #PTR.T.RESIZEX
sta IY sta IY
.5 ldy #S.OBJ.Y2 .5 ldy #S.OBJ.Y2
@ -307,8 +313,8 @@ MOU.ChkWNDBorders
eor MSG+S.MSG.Y2+1 eor MSG+S.MSG.Y2+1
bne .7 bne .7
lda #CUR.T.RESIZEXY1 lda #PTR.T.RESIZEXY1
.6 jmp SetCursor .6 jmp PTR.Set
.7 lda IY .7 lda IY
bne .6 bne .6

View File

@ -35,7 +35,7 @@ MSG.Get stz MSG+S.MSG.T
beq .2 beq .2
>PUSHW L.XY >PUSHW L.XY
jsr SetCursorPos jsr PTR.SetPos
lda XY+S.XY.S lda XY+S.XY.S

View File

@ -1,7 +1,78 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
OBJ.New * A = Object Class
*--------------------------------------
OBJ.New pha
tax
ldy OBJ.SizeOf,x
lda #0
>SYSCALL GetMem
bcs .9
>STYA ZPObjPtr
pla
sta (ZPObjPtr)
phx hObj
tax
ldy OBJ.SizeOf,x
dey
lda #0
.1 sta (ZPObjPtr),y
dey
bne .1
>LDYA ZPObjPtr
* clc
.9 plx
rts
*--------------------------------------
OBJ.Init sta (ZPObjPtr)
lda #0
.1 sta (ZPObjPtr),y
dey
bne .1
rts
*--------------------------------------
OBJ.AddWord pha
tya
jsr OBJ.AddByte
pla
OBJ.AddByte sta (ZPObjPtr)
inc ZPObjPtr
bne .8
inc ZPObjPtr+1
.8 rts
*--------------------------------------
OBJ.PullY1X1.BAD
>PULLA
ldy #S.OBJ.Y1
sta (ZPMENUPtr),y
>PULLA
iny
sta (ZPMENUPtr),y
>PULLA
ldy #S.OBJ.X1
sta (ZPMENUPtr),y
>PULLA
iny
sta (ZPMENUPtr),y
rts
*-------------------------------------- *--------------------------------------
* hOBJ, Prop8, Value16 * hOBJ, Prop8, Value16
*-------------------------------------- *--------------------------------------
@ -52,6 +123,69 @@ OBJ.GetProp >PULLA
rts rts
*-------------------------------------- *--------------------------------------
OBJ.SetX2Y2 >STYA ZPPtr1
ldy #S.OBJ.W
lda (ZPPtr1),y
clc
sbc #0
pha
iny
lda (ZPPtr1),y
sbc #0
tax
pla
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
lda (ZPPtr1),y
clc
sbc #0
pha
iny
lda (ZPPtr1),y
sbc #0
tax
pla
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.GetInCache >STYA .1+1
ldx #S.OBJ-1
.1 lda $ffff,x SELF MODIFIED
sta OBJ.Cache,x
dex
bpl .1
rts
*--------------------------------------
MAN MAN
SAVE usr/src/lib/libgui.s.obj SAVE usr/src/lib/libgui.s.obj
LOAD usr/src/lib/libgui.s LOAD usr/src/lib/libgui.s

161
LIB/LIBGUI.S.PTR.txt Normal file
View File

@ -0,0 +1,161 @@
NEW
AUTO 3,1
*--------------------------------------
PTR.Update lda PTR.T
cmp #PTR.T.WAIT
bcc PTR.Set.RTS
inc
inc
cmp #PTR.T.WAIT+12
bne PTR.Set
lda #PTR.T.WAIT
*--------------------------------------
* Set X2,Y2,SrcPtr
*--------------------------------------
PTR.Set sta PTR.T
lda PTR.bVisible
bpl .1
jsr PTR.Hide.I
.1 ldx PTR.T
lda L.Cursors,x
sta CB.PTR+S.CB.SrcPtr
sta ZPPtr1
lda L.Cursors+1,x
sta CB.PTR+S.CB.SrcPtr+1
sta ZPPtr1+1
ldy #S.BM.W
lda (ZPPtr1),y
sta CB.PTR+S.CB.SrcW
clc
adc CB.PTR+S.CB.X1
pha
iny
lda (ZPPtr1),y
sta CB.PTR+S.CB.SrcW+1
adc CB.PTR+S.CB.X1+1
tax
pla
bne .2
dex
.2 dec
sta CB.PTR+S.CB.X2
stx CB.PTR+S.CB.X2+1
iny S.BM.H
lda (ZPPtr1),y
sta CB.PTR+S.CB.SrcH
clc
adc CB.PTR+S.CB.Y1
pha
iny
lda (ZPPtr1),y
sta CB.PTR+S.CB.SrcH+1
adc CB.PTR+S.CB.Y1+1
tax
pla
bne .3
dex
.3 dec
sta CB.PTR+S.CB.Y2
stx CB.PTR+S.CB.Y2+1
lda PTR.bVisible
bmi PTR.Show.I
PTR.Set.RTS rts
*--------------------------------------
* Set DestX,DestY
*--------------------------------------
PTR.SetPos >PULLW ZPPtr1
lda PTR.bVisible
bpl .1
jsr PTR.Hide.I
.1 ldy #S.POINT-1
.2 lda (ZPPtr1),y
sta PTR.Pos,y
dey
bpl .2
lda PTR.bVisible
bmi PTR.Show.I
clc
rts
*--------------------------------------
PTR.Hide lda PTR.bVisible
bpl .9
jsr PTR.Hide.I
stz PTR.bVisible
.9 clc
rts
*--------------------------------------
PTR.Show lda PTR.bVisible
bmi .9
jsr PTR.Show.I
dec PTR.bVisible
.9 rts
*--------------------------------------
PTR.Hide.I lda #S.CB.OP.RESTORE
bra PTR.Draw.I
*--------------------------------------
PTR.Show.I ldx PTR.T
lda PTR.Pos+S.POINT.X
sec
sbc PTR.HotPoints,x
sta CB.PTR+S.CB.X1
lda PTR.Pos+S.POINT.X+1
sbc #0
sta CB.PTR+S.CB.X1+1
lda PTR.Pos+S.POINT.Y
sec
sbc PTR.HotPoints+1,x
sta CB.PTR+S.CB.Y1
lda PTR.Pos+S.POINT.Y+1
sbc #0
sta CB.PTR+S.CB.Y1+1
lda #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE
PTR.Draw.I sta CB.PTR+S.CB.OP
>LDYA L.WND.Screen
jsr OBJ.GetInCache
>LDYA L.CB.PTR
jsr CLIP.YA
bcs .8
jsr CB.GFXWrite
.8 clc
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.ptr
LOAD usr/src/lib/libgui.s
ASM

View File

@ -4,39 +4,24 @@ NEW
SYSBUT.Enter sec SYSBUT.Enter sec
ror WND.SYSBAR.bSysBut ror WND.SYSBAR.bSysBut
jsr GetCBBuf jsr CB.GetBuf
bcs .99 bcs .9
jsr SYSBAR.ShowSysBut jsr SYSBAR.ShowSysBut
>LDYA L.WND.SysBar >LDYA L.WND.SysBar
jsr DrawCBBufToYA jsr DrawCBBufToYA
>PUSHW L.MENU.Sys
>PUSHW WND.SysBar+S.OBJ.X1 >PUSHW WND.SysBar+S.OBJ.X1
>PUSHW WND.SysBar+S.OBJ.Y1 >PUSHW WND.SysBar+S.OBJ.Y1
>PUSHW L.RECT.SysBut Parent RECT
>PUSHW L.MENU.Sys
jsr MENU.New jsr MENU.New
.99 bcs .9 bcs .9
sta hSysMenu sta hSysMenu
>PUSHA hSysMenu jmp MENU.Draw
>PUSHBI 4
>PUSHBI S.MITEM.pMENU
>PUSHW L.MENU.Sys.Programs
jsr MENU.SetMItemProp
>PUSHB hSysMenu
>PUSHBI 6
>PUSHBI S.MITEM.pMENU
>PUSHW L.MENU.Sys.Settings
jsr MENU.SetMItemProp
lda hSysMenu
jsr MENU.Show
.8 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SYSBUT.Leave bit WND.SYSBAR.bSysBut SYSBUT.Leave bit WND.SYSBAR.bSysBut
@ -44,7 +29,7 @@ SYSBUT.Leave bit WND.SYSBAR.bSysBut
stz WND.SYSBAR.bSysBut stz WND.SYSBAR.bSysBut
jsr GetCBBuf jsr CB.GetBuf
bcs .9 bcs .9
jsr SYSBAR.ShowSysBut jsr SYSBAR.ShowSysBut
@ -56,7 +41,7 @@ SYSBUT.Leave bit WND.SYSBAR.bSysBut
.8 clc .8 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SYSBAR.Show jsr GetCBBuf SYSBAR.Show jsr CB.GetBuf
bcs .9 bcs .9
jsr SYSBAR.ShowSysBut jsr SYSBAR.ShowSysBut
@ -96,7 +81,7 @@ SYSBAR.ShowSysBut
dex dex
bpl .2 bpl .2
jsr PutCBCache2CBBuf jsr CB.Cache2CBBuf
lda RECT.SysBut+S.RECT.X1 lda RECT.SysBut+S.RECT.X1
clc clc
@ -157,7 +142,7 @@ SYSBAR.ShowSysWNDs
dex dex
bpl .1 bpl .1
jmp PutCBCache2CBBuf jmp CB.Cache2CBBuf
*-------------------------------------- *--------------------------------------
SYSBAR.ShowSysClk SYSBAR.ShowSysClk
lda #S.CB.CMD.FILLRECT lda #S.CB.CMD.FILLRECT
@ -179,7 +164,7 @@ SYSBAR.ShowSysClk
dex dex
bpl .1 bpl .1
jmp PutCBCache2CBBuf jmp CB.Cache2CBBuf
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/lib/libgui.s.sysbar SAVE usr/src/lib/libgui.s.sysbar

View File

@ -22,7 +22,7 @@ WND.Init >PUSHW L.DEVNAME.GFX
*-------------------------------------- *--------------------------------------
WND.Setup WND.Setup
* stz WND.Stack.Top * stz WND.Stack.Top
* stz MENU.Stack.Top * stz MENU.Stack.Cnt
>LDYA DCB.GFX+S.DCB.GFX.W >LDYA DCB.GFX+S.DCB.GFX.W
>STYA WND.Screen+S.OBJ.W >STYA WND.Screen+S.OBJ.W
@ -116,13 +116,7 @@ WND.Quit.RTS rts
*-------------------------------------- *--------------------------------------
* F8, X116, Y116, W16, H16 * F8, X116, Y116, W16, H16
*-------------------------------------- *--------------------------------------
WND.New >LDYAI S.WND WND.New ldy WND.Stack.Top
>SYSCALL2 getmem
bcs .9
>STYA ZPWNDPtr
ldy WND.Stack.Top
cpy #WND.MAX cpy #WND.MAX
bcc .10 bcc .10
@ -133,14 +127,10 @@ WND.New >LDYAI S.WND
rts rts
.10 lda #S.OBJ.T.WND .10 lda #S.OBJ.T.WND
sta (ZPWNDPtr) S.OBJ.T jsr OBJ.New
bcs .9
ldy #S.WND-1 >STYA ZPWNDPtr
lda #0
.1 sta (ZPWNDPtr),y
dey
bne .1
ldy #S.WND.fPaint ldy #S.WND.fPaint
lda L.WND.fPaint lda L.WND.fPaint
@ -259,7 +249,7 @@ WND.Show sta WND.hWND
lda #S.WND.S.ACTIVE lda #S.WND.S.ACTIVE
jsr WND.ClrStatus jsr WND.ClrStatus
jsr GetCBBuf jsr CB.GetBuf
bcs WND.Activate.RTS bcs WND.Activate.RTS
jsr WND.PaintTopBar jsr WND.PaintTopBar
@ -274,7 +264,7 @@ WND.Show1 lda WND.hWND
jsr OBJ.SetX2Y2 jsr OBJ.SetX2Y2
WND.Show2 jsr GetCBBuf WND.Show2 jsr CB.GetBuf
bcs WND.Activate.RTS bcs WND.Activate.RTS
lda #S.WND.S.ACTIVE lda #S.WND.S.ACTIVE
@ -303,7 +293,7 @@ WND.Show2 jsr GetCBBuf
lda #1 lda #1
jsr WND.ShowBorders jsr WND.ShowBorders
.1 ldy #S.WND.TITLE+1 .1 ldy #S.WND.pTITLE+1
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
bne .2 bne .2
@ -333,7 +323,7 @@ WND.Show2 jsr GetCBBuf
jsr WND.PaintTopBar jsr WND.PaintTopBar
bcs .9 bcs .9
*-------------------------------------- *--------------------------------------
.3 ldy #S.WND.MBAR+1 .3 ldy #S.WND.pMBAR+1
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
beq .7 beq .7
@ -360,9 +350,9 @@ WND.Show2 jsr GetCBBuf
lda #S.WND.S.HASMBAR lda #S.WND.S.HASMBAR
jsr WND.SetStatus jsr WND.SetStatus
jsr WND.PaintMBar jsr MBAR.Paint
*-------------------------------------- *--------------------------------------
.7 ldy #S.WND.STATUS+1 .7 ldy #S.WND.pSTATUS+1
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
beq .8 beq .8
@ -432,7 +422,7 @@ WND.Paint1 ldy #S.WND.fPaint
WND.fPaint >SYSCALL2 GetMemPtr WND.fPaint >SYSCALL2 GetMemPtr
>STYA ZPWNDPtr >STYA ZPWNDPtr
jsr GetCBBuf jsr CB.GetBuf
bcs WND.Show.RTS bcs WND.Show.RTS
lda #S.CB.CMD.FILLRECT lda #S.CB.CMD.FILLRECT
@ -482,7 +472,7 @@ WND.fPaint >SYSCALL2 GetMemPtr
sbc #0 sbc #0
sta CB.Cache+S.CB.Y2+1 sta CB.Cache+S.CB.Y2+1
jsr PutCBCache2CBBuf jsr CB.Cache2CBBuf
ldy #S.WND.BGBM ldy #S.WND.BGBM
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
@ -512,7 +502,7 @@ WND.fPaint >SYSCALL2 GetMemPtr
lda #S.CB.CMD.BITBLT lda #S.CB.CMD.BITBLT
sta CB.Cache+S.CB.CMD sta CB.Cache+S.CB.CMD
jsr PutCBCache2CBBuf jsr CB.Cache2CBBuf
.8 >LDYA L.WND.Desktop .8 >LDYA L.WND.Desktop
jmp DrawCBBufToYA jmp DrawCBBufToYA
@ -564,7 +554,7 @@ WND.ShowBorders sta IY
adc #0 adc #0
sta CB.Cache+S.CB.X2+1 sta CB.Cache+S.CB.X2+1
jsr PutCBCache2CBBuf jsr CB.Cache2CBBuf
ldy #S.OBJ.Y2 ldy #S.OBJ.Y2
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
@ -578,7 +568,7 @@ WND.ShowBorders sta IY
sta CB.Cache+S.CB.Y1+1 sta CB.Cache+S.CB.Y1+1
sta CB.Cache+S.CB.Y2+1 bottom X1-1,Y2+1,X2+1,Y2+1 sta CB.Cache+S.CB.Y2+1 bottom X1-1,Y2+1,X2+1,Y2+1
jsr PutCBCache2CBBuf jsr CB.Cache2CBBuf
lda #S.CB.CMD.VLINE lda #S.CB.CMD.VLINE
sta CB.Cache+S.CB.CMD sta CB.Cache+S.CB.CMD
@ -598,7 +588,7 @@ WND.ShowBorders sta IY
lda CB.Cache+S.CB.X1+1 lda CB.Cache+S.CB.X1+1
sta CB.Cache+S.CB.X2+1 left X1-1,Y1-1,X1-1,Y2+1 sta CB.Cache+S.CB.X2+1 left X1-1,Y1-1,X1-1,Y2+1
jsr PutCBCache2CBBuf jsr CB.Cache2CBBuf
ldy #S.OBJ.X2 ldy #S.OBJ.X2
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
@ -612,7 +602,7 @@ WND.ShowBorders sta IY
sta CB.Cache+S.CB.X1+1 sta CB.Cache+S.CB.X1+1
sta CB.Cache+S.CB.X2+1 right X2+1,Y1-1,X2+1,Y2+1 sta CB.Cache+S.CB.X2+1 right X2+1,Y1-1,X2+1,Y2+1
jmp PutCBCache2CBBuf jmp CB.Cache2CBBuf
*-------------------------------------- *--------------------------------------
WND.PaintTopBar lda #S.CB.CMD.FILLRECT WND.PaintTopBar lda #S.CB.CMD.FILLRECT
jsr CB.InitCacheA jsr CB.InitCacheA
@ -656,7 +646,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT
sta DY+1 sta DY+1
adc #0 adc #0
sta CB.Cache+S.CB.Y2+1 sta CB.Cache+S.CB.Y2+1
jsr PutCBCache2CBBuf jsr CB.Cache2CBBuf
inc DY inc DY
bne .12 bne .12
@ -737,7 +727,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
WND.PaintTopBarTitle WND.PaintTopBarTitle
ldy #S.WND.TITLE ldy #S.WND.pTITLE
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
pha pha
iny iny
@ -774,7 +764,7 @@ WND.PaintTopBarTitle
adc DX+1 adc DX+1
sta DX+1 sta DX+1
ldy #S.WND.TITLE ldy #S.WND.pTITLE
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
pha pha
iny iny
@ -785,124 +775,6 @@ WND.PaintTopBarTitle
clc clc
jmp DRAW.YATextAtDXDY jmp DRAW.YATextAtDXDY
*-------------------------------------- *--------------------------------------
WND.PaintMBar lda #S.CB.CMD.FILLRECT
jsr CB.InitCacheA
lda #S.CB.OP.SET
sta CB.Cache+S.CB.OP
lda #S.CB.M.MONO
sta CB.Cache+S.CB.M
lda PREFS.MBARCOLOR
sta CB.Cache+S.CB.COLOR
ldy #S.OBJ.X1
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X1
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X1+1
ldy #S.OBJ.X2
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X2
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X2+1
ldy #S.WND.MBarY1
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y1
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y1+1
iny #S.WND.MBarY2
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y2
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y2+1
jsr PutCBCache2CBBuf
ldy #S.WND.MBAR
lda (ZPWNDPtr),y
pha
iny
lda (ZPWNDPtr),y
ply
jsr MBAR.Init
.1 lda (ZPMENUPtr)
beq .8
jsr CB.ClearCache
lda #S.CB.CMD.DRAWTEXT2
sta CB.CACHE+S.CB.CMD
lda #S.CB.OP.SET+S.CB.OP.INVERSE
sta CB.Cache+S.CB.OP
lda #S.CB.M.MONO
sta CB.Cache+S.CB.M
lda hSYSFON
sta CB.CACHE+S.CB.hFont
ldy #S.MBITEM.XT
lda (ZPMENUPtr),y
clc
ldy #S.OBJ.X1
adc (ZPWNDPtr),y
sta CB.CACHE+S.CB.X1
ldy #S.MBITEM.XT+1
lda (ZPMENUPtr),y
ldy #S.OBJ.X1+1
adc (ZPWNDPtr),y
sta CB.CACHE+S.CB.X1+1
ldy #S.WND.MBarY1
lda (ZPWNDPtr),y
clc
adc #1
sta CB.CACHE+S.CB.Y1
iny
lda (ZPWNDPtr),y
adc #0
sta CB.CACHE+S.CB.Y1+1
lda #S.MBITEM.TEXT
clc
adc ZPMENUPtr
sta CB.CACHE+S.CB.TxtPtr
lda #0
adc ZPMENUPtr+1
sta CB.CACHE+S.CB.TxtPtr+1
jsr PutCBCache2CBBuf
lda (ZPMENUPtr)
clc
adc ZPMENUPtr
sta ZPMENUPtr
bcc .1
inc ZPMENUPtr+1
bra .1
.8 clc
rts
*--------------------------------------
WND.PaintSBar lda #S.CB.CMD.HLINE WND.PaintSBar lda #S.CB.CMD.HLINE
jsr CB.InitCacheA jsr CB.InitCacheA
@ -942,7 +814,7 @@ WND.PaintSBar lda #S.CB.CMD.HLINE
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X2+1 sta CB.Cache+S.CB.X2+1
jsr PutCBCache2CBBuf jsr CB.Cache2CBBuf
lda #S.CB.CMD.FILLRECT lda #S.CB.CMD.FILLRECT
sta CB.Cache+S.CB.CMD sta CB.Cache+S.CB.CMD
@ -964,9 +836,9 @@ WND.PaintSBar lda #S.CB.CMD.HLINE
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y2+1 sta CB.Cache+S.CB.Y2+1
jsr PutCBCache2CBBuf jsr CB.Cache2CBBuf
ldy #S.WND.STATUS ldy #S.WND.pSTATUS
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
pha pha
iny iny
@ -977,6 +849,18 @@ WND.PaintSBar lda #S.CB.CMD.HLINE
clc clc
jmp DRAW.YATextAtDXDY jmp DRAW.YATextAtDXDY
*-------------------------------------- *--------------------------------------
WND.SetMBar >PULLW ZPPtr1
>PULLA
>SYSCALL2 GetMemPtr
>STYA ZPWNDPtr
.9 rts
*--------------------------------------
WND.ClrStatus ldy #S.OBJ.S WND.ClrStatus ldy #S.OBJ.S
eor #$ff eor #$ff
and (ZPWNDPtr),y and (ZPWNDPtr),y

View File

@ -121,20 +121,22 @@ CS.START cld
*-------------------------------------- *--------------------------------------
.1 .DA LIB.LOAD .1 .DA LIB.LOAD
.DA LIB.UNLOAD .DA LIB.UNLOAD
.DA SetCursor .DA PTR.Set
.DA SetCursorPos .DA PTR.SetPos
.DA HideCursor .DA PTR.Hide
.DA ShowCursor .DA PTR.Show
.DA UpdateCursor .DA PTR.Update
.DA MOU.ReadMouse .DA MOU.ReadMouse
.DA DrawLine .DA DRAW.Line
.DA OBJ.SetProp .DA OBJ.SetProp
.DA OBJ.GetProp .DA OBJ.GetProp
.DA WND.New .DA WND.New
.DA WND.Destroy .DA WND.Destroy
.DA WND.Show .DA WND.Show
.DA WND.Paint .DA WND.Paint
.DA WND.SetMBar
.DA MSG.Get .DA MSG.Get
.DA MBAR.New
*-------------------------------------- *--------------------------------------
L.WND.fPaint .DA WND.fPaint L.WND.fPaint .DA WND.fPaint
*-------------------------------------- *--------------------------------------
@ -161,6 +163,7 @@ L.RECT.SysClk .DA RECT.SysClk
L.MENU.Sys .DA MENU.Sys L.MENU.Sys .DA MENU.Sys
L.MENU.Sys.Programs .DA MENU.Sys.Programs L.MENU.Sys.Programs .DA MENU.Sys.Programs
L.MENU.Sys.Settings .DA MENU.Sys.Settings L.MENU.Sys.Settings .DA MENU.Sys.Settings
L.TEXTBUF .DA TEXTBUF
*-------------------------------------- *--------------------------------------
L.BMs .EQ *-2 L.BMs .EQ *-2
L.BM.Apple .DA BM.Apple L.BM.Apple .DA BM.Apple
@ -172,21 +175,22 @@ L.BM.Right .DA BM.Right
L.BM.Up .DA BM.Up L.BM.Up .DA BM.Up
L.BM.Down .DA BM.Down L.BM.Down .DA BM.Down
*-------------------------------------- *--------------------------------------
L.CUR.SaveBuf .DA CUR.SaveBuf L.PTR.SaveBuf .DA PTR.SaveBuf
L.Cursors .DA CUR.Arrow L.Cursors .DA PTR.Arrow
.DA CUR.Move .DA PTR.Move
.DA CUR.ResizeX .DA PTR.ResizeX
.DA CUR.ResizeY .DA PTR.ResizeY
.DA CUR.ResizeXY1 .DA PTR.ResizeXY1
.DA CUR.ResizeXY2 .DA PTR.ResizeXY2
.DA CUR.Cross .DA PTR.Cross
.DA CUR.Text .DA PTR.Text
.DA CUR.Wait1 .DA PTR.Wait1
.DA CUR.Wait2 .DA PTR.Wait2
.DA CUR.Wait3 .DA PTR.Wait3
.DA CUR.Wait4 .DA PTR.Wait4
.DA CUR.Wait5 .DA PTR.Wait5
.DA CUR.Wait6 .DA PTR.Wait6
*--------------------------------------
J.Clip .DA CLIP.Point SETPIXEL J.Clip .DA CLIP.Point SETPIXEL
.DA CLIP.Point GETPIXEL .DA CLIP.Point GETPIXEL
.DA CLIP.HLine HLINE .DA CLIP.HLine HLINE
@ -219,9 +223,9 @@ LIB.LOAD lda LibCount
.1 jsr WND.Setup .1 jsr WND.Setup
lda #CUR.T.ARROW lda #PTR.T.ARROW
jsr SetCursor jsr PTR.Set
jsr ShowCursor jsr PTR.Show
inc LibCount inc LibCount
@ -257,7 +261,7 @@ CB.GetInCache >STYA .1+1
rts rts
*-------------------------------------- *--------------------------------------
GetCBBuf clc CB.GetBuf clc
ldx hCBBuf ldx hCBBuf
bne .9 bne .9
@ -272,7 +276,7 @@ GetCBBuf clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
PutCBCache2CBBuf CB.Cache2CBBuf
lda CB.Cache lda CB.Cache
lsr lsr
tax tax
@ -293,74 +297,36 @@ PutCBCache2CBBuf
rts rts
*-------------------------------------- *--------------------------------------
GFXWrite.CB >PUSHB WND.Screen+S.OBJ.hPARENT CB.GFXWrite >PUSHB WND.Screen+S.OBJ.hPARENT
>PUSHBI IOCTL.WRITE >PUSHBI IOCTL.WRITE
>PUSHW L.CB.Cache >PUSHW L.CB.Cache
>SYSCALL2 IOCTL >SYSCALL2 IOCTL
rts rts
*-------------------------------------- *--------------------------------------
OBJ.GetInCache >STYA .1+1 SkipAPtr1 clc
adc ZPPtr1
ldx #S.OBJ-1 sta ZPPtr1
bcc .8
.1 lda $ffff,x SELF MODIFIED
sta OBJ.Cache,x inc ZPPtr1+1
dex
bpl .1 .8 rts
rts
*-------------------------------------- *--------------------------------------
OBJ.SetX2Y2 >STYA ZPPtr1 SkipStrZPtr1 ldy #$ff
ldy #S.OBJ.W .1 iny
lda (ZPPtr1),y lda (ZPPtr1),y
clc bne .1
sbc #0
pha tya
iny sec \0
lda (ZPPtr1),y adc ZPPtr1
sbc #0 sta ZPPtr1
tax bcc .8
pla inc ZPPtr1+1
clc
ldy #S.OBJ.X1 .8 rts
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
lda (ZPPtr1),y
clc
sbc #0
pha
iny
lda (ZPPtr1),y
sbc #0
tax
pla
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
*-------------------------------------- *--------------------------------------
.INB usr/src/lib/libgui.s.bm .INB usr/src/lib/libgui.s.bm
.INB usr/src/lib/libgui.s.but .INB usr/src/lib/libgui.s.but
@ -374,6 +340,7 @@ OBJ.SetX2Y2 >STYA ZPPtr1
.INB usr/src/lib/libgui.s.msg .INB usr/src/lib/libgui.s.msg
.INB usr/src/lib/libgui.s.obj .INB usr/src/lib/libgui.s.obj
.INB usr/src/lib/libgui.s.pat .INB usr/src/lib/libgui.s.pat
.INB usr/src/lib/libgui.s.ptr
.INB usr/src/lib/libgui.s.sysbar .INB usr/src/lib/libgui.s.sysbar
.INB usr/src/lib/libgui.s.text .INB usr/src/lib/libgui.s.text
.INB usr/src/lib/libgui.s.wnd .INB usr/src/lib/libgui.s.wnd
@ -383,6 +350,7 @@ CS.END
.INB usr/src/lib/libgui.g.bm .INB usr/src/lib/libgui.g.bm
.INB usr/src/lib/libgui.g.cur .INB usr/src/lib/libgui.g.cur
.INB usr/src/lib/libgui.g.fon .INB usr/src/lib/libgui.g.fon
.INB usr/src/lib/libgui.g.ptr
*-------------------------------------- *--------------------------------------
DEVNAME.GFX .AZ "/dev/gfx" DEVNAME.GFX .AZ "/dev/gfx"
DEVNAME.MOUSE .AZ "/dev/mou1" DEVNAME.MOUSE .AZ "/dev/mou1"
@ -393,6 +361,8 @@ SYSX7B .AZ "${ROOT}sbin/sysx7b"
LibCount .BS 1 LibCount .BS 1
hDevMouse .BS 1 hDevMouse .BS 1
*-------------------------------------- *--------------------------------------
OBJ.SizeOf .DA S.WND
*--------------------------------------
CB.CmdLen .DA #S.CB.Y1+1 SETPIXEL CB.CmdLen .DA #S.CB.Y1+1 SETPIXEL
.DA #S.CB.Y1+1 GETPIXEL .DA #S.CB.Y1+1 GETPIXEL
.DA #S.CB.Y2+1 HLINE .DA #S.CB.Y2+1 HLINE
@ -428,7 +398,7 @@ CB.PTR .DA #S.CB.CMD.BITBLT
CB.Cache .BS S.CB CB.Cache .BS S.CB
OBJ.Cache .BS S.OBJ OBJ.Cache .BS S.OBJ
*-------------------------------------- *--------------------------------------
MENU.Stack.Top .BS 1 MENU.Stack.Cnt .BS 1
MENU.Stack .BS MENU.MAX MENU.Stack .BS MENU.MAX
*-------------------------------------- *--------------------------------------
WND.hWND .BS 1 WND.hWND .BS 1
@ -455,110 +425,79 @@ RECT.SysWNDs .BS S.RECT
RECT.SysClk .BS S.RECT RECT.SysClk .BS S.RECT
*-------------------------------------- *--------------------------------------
hSysMenu .BS 1 hSysMenu .BS 1
MENU.Sys *--------------------------------------
.1 .DA #.2-* next MENU.Sys .DA #S.MITEM.T.ITEM
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #2 ID .DA #2 ID
.DA #KEYMOD.CTRL+KEYMOD.OA+KEYMOD.CA,#'A'
.DA BM.ID.APPLE pICON .DA BM.ID.APPLE pICON
.DA #S.MITEM.KEYMOD.CTRL+S.MITEM.KEYMOD.OA+S.MITEM.KEYMOD.CA
.DA #'A'
.DA #.11-.1
.AZ "About..." .AZ "About..."
.11 .AS "Ctrl-"
.DA #1,#'-',#2,#'-',#'A',#0
.2 .DA #.3-* next .DA #S.MITEM.T.SEP
.DA #S.MITEM.F.SEP
.3 .DA #.4-* next .DA #S.MITEM.T.SUBMENU
.DA #S.MITEM.F.SUBMENU F .DA MENU.Sys.Programs
.DA #0 S
.DA #4 ID
.DA 0 pICON .DA 0 pICON
.DA 0 pMENU
.DA #0 KEYSTR
.AZ "Programs" .AZ "Programs"
.4 .DA #.5-* next .DA #S.MITEM.T.SUBMENU
.DA #S.MITEM.F.SUBMENU F .DA MENU.Sys.Settings
.DA #0 S
.DA #6 ID
.DA 0 pICON .DA 0 pICON
.DA 0 pMENU
.DA #0 KEYSTR
.AZ "Settings" .AZ "Settings"
.5 .DA #.6-* next .DA #S.MITEM.T.SEP
.DA #S.MITEM.F.SEP
.6 .DA #.7-* next .DA #S.MITEM.T.ITEM
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #8 ID .DA #8 ID
.DA #0,#0
.DA 0 pICON .DA 0 pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "Search..." .AZ "Search..."
.7 .DA #.8-* next .DA #S.MITEM.T.ITEM
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #10 ID .DA #10 ID
.DA #KEYMOD.CTRL+KEYMOD.OA,#'R'
.DA 0 pICON .DA 0 pICON
.DA #S.MITEM.KEYMOD.CTRL+S.MITEM.KEYMOD.OA
.DA #'R'
.DA #.77-.7
.AZ "Run..." .AZ "Run..."
.77 .AZ "Ctrl-R"
.8 .DA #0 .DA #0
*-------------------------------------- *--------------------------------------
MENU.Sys.Programs MENU.Sys.Programs
.1 .DA #.2-* next .DA #S.MITEM.T.ITEM
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #42 ID .DA #42 ID
.DA #0,#0
.DA BM.ID.APPLE pICON .DA BM.ID.APPLE pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "Test ASM" .AZ "Test ASM"
.2 .DA #.3-* next .DA #S.MITEM.t.ITEM
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #44 ID .DA #44 ID
.DA #0,#0
.DA BM.ID.APPLE pICON .DA BM.ID.APPLE pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "Test C" .AZ "Test C"
.3 .DA #0 .DA #0
*-------------------------------------- *--------------------------------------
MENU.Sys.Settings MENU.Sys.Settings
.1 .DA #.2-* next .DA #S.MITEM.T.ITEM
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #62 ID .DA #62 ID
.DA #0,#0
.DA 0 pICON .DA 0 pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "Colors..." .AZ "Colors..."
.2 .DA #.3-* next .DA #S.MITEM.T.ITEM
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #64 ID .DA #64 ID
.DA #0,#0
.DA 0 pICON .DA 0 pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "SubItem2..." .AZ "SubItem2..."
.3 .DA #0 .DA #0
*--------------------------------------
KEYMOD.S.CTRL .EQ 0
KEYMOD.S .AZ "Ctrl-"
KEYMOD.S.OA .EQ *-KEYMOD.S
.DA #01,#'-',#0
KEYMOD.S.CA .EQ *-KEYMOD.S
.DA #02,#'-',#0
*--------------------------------------
TEXTBUF .BS 16 for composing HotKey strings
*-------------------------------------- *--------------------------------------
PREFS.BESTVIEWEDX .DA #$FC PREFS.BESTVIEWEDX .DA #$FC
PREFS.bSYSBARTOP .DA #0 PREFS.bSYSBARTOP .DA #0

View File

@ -154,6 +154,7 @@ include/stdio.h
include/stdlib.h include/stdlib.h
include/string.h include/string.h
include/unistd.h include/unistd.h
include/libgui.h
include/libblkdev.h include/libblkdev.h
include/libtui.h include/libtui.h
include/sys/types.h include/sys/types.h

View File

@ -56,9 +56,9 @@ CS.INIT >LDYA L.LIBGUI
CS.INIT.RTS rts CS.INIT.RTS rts
*-------------------------------------- *--------------------------------------
CS.RUN >SLEEP CS.RUN >SLEEP
>PUSHW L.MSG >PUSHW L.MSG
>LIBCALL hLIBGUI,LIBGUI.GetMsg >LIBCALL hLIBGUI,LIBGUI.MSG.Get
bcs CS.RUN bcs CS.RUN
.1 lda MSG+S.MSG.T .1 lda MSG+S.MSG.T
@ -87,7 +87,7 @@ CS.RUN >SLEEP
CS.DOEVENT lda (pEvent) CS.DOEVENT lda (pEvent)
bpl .9 bpl .9
>LIBCALL hLIBGUI,LIBGUI.UpdateCursor >LIBCALL hLIBGUI,LIBGUI.PTR.Update
.9 sec .9 sec
rts rts

View File

@ -114,10 +114,10 @@ DIR1.PS jsr GNNB
.9 jmp ERBA2 .9 jmp ERBA2
*-------------------------------------- *--------------------------------------
DIR1.EscChars .AS "abefnrtv" DIR1.EscChars .AS "abefnrtv"
.HS 5C27223F \'"? .HS 5C27223F25 \'"?%
DIR1.EscChars.L .EQ *-DIR1.EscChars DIR1.EscChars.L .EQ *-DIR1.EscChars
DIR1.EscCodes .HS 07081B0C0A0D090B DIR1.EscCodes .HS 07081B0C0A0D090B
.HS 5C27223F .HS 5C27223F25
*-------------------------------------- *--------------------------------------
DIR1.CZ jsr DIR1.CS DIR1.CZ jsr DIR1.CS
jmp EMIT.ZERO jmp EMIT.ZERO

View File

@ -75,11 +75,10 @@ K.GetDev.9 rts
* `>SYSCALL MkFD` * `>SYSCALL MkFD`
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
K.MkFD
clc * clc
rts * rts
*/-------------------------------------- */--------------------------------------
* # MKDev * # MKDev
* Create a hDEV * Create a hDEV
@ -202,8 +201,8 @@ K.IOCTL ldy #3 hFD
jmp (pDrv) jmp (pDrv)
*-------------------------------------- *--------------------------------------
DEV.OPEN ldx #IOCTL.OPEN DEV.OPEN ldx #IOCTL.OPEN
* lda IO.hFD lda IO.hFD
jsr DEV.pDrvJmp jsr DEV.pDrvJmp.1
bcs .9 bcs .9
lda IO.hFD lda IO.hFD
@ -237,7 +236,7 @@ DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S
DEV.CLOSE ldx #IOCTL.CLOSE DEV.CLOSE ldx #IOCTL.CLOSE
*-------------------------------------- *--------------------------------------
DEV.pDrvJmp >LDYAI K.S.IOCTL DEV.pDrvJmp >LDYAI K.S.IOCTL
jmp (pDrv) DEV.pDrvJmp.1 jmp (pDrv)
*-------------------------------------- *--------------------------------------
DEV.GetPFD sta IO.hFD DEV.GetPFD sta IO.hFD
@ -307,6 +306,7 @@ DEV.GetFD ldx #1
* sec * sec
rts rts
K.MkFD
DEV.GetFD.8 clc DEV.GetFD.8 clc
rts rts
*-------------------------------------- *--------------------------------------